﻿/****** Object:  StoredProcedure [dbo].[AccountDeptUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[AccountDeptUpdate]
(
	@GLNumber AS NVARCHAR(30),
	@DeptNumber AS INT,
	@AmtChange AS MONEY,
	@AmtChange1 AS MONEY,
	@AmtChange2 AS MONEY,
	@AmtChangeF AS MONEY,
	@AmtChange1F AS MONEY,
	@AmtChange2F AS MONEY
)
AS
BEGIN
	UPDATE tblAccountsDept SET decBalance = decBalance + @AmtChange, decLYEndBalance = decLYEndBalance + @AmtChange1, decOpenBalance = decOpenBalance + @AmtChange2, decBalanceF = decBalance + @AmtChangeF, decLYEndBalanceF = decLYEndBalanceF + @AmtChange1F, decOpenBalanceF = decOpenBalanceF + @AmtChange2F, bitUsedLY = 1 WHERE intGLNumber = @GLNumber AND intDept = @DeptNumber
	
END
GO
/****** Object:  StoredProcedure [dbo].[AccountsDeptLYUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[AccountsDeptLYUpdate]
(
	@GLNumber AS NVARCHAR(30),
	@DeptNumber AS INT,
	@AmtChange AS MONEY,
	@AmtChangeF AS MONEY
	
)
AS
BEGIN
	UPDATE tblAccountsDeptLY SET decBalance = decBalance + @AmtChange, decBalanceF = decBalanceF + @AmtChangeF, bitUsed = 1 WHERE intGLNumber = @GLNumber AND intDept = @DeptNumber
	
	SELECT @@ROWCOUNT 
END
GO
/****** Object:  StoredProcedure [dbo].[AccountsLYUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[AccountsLYUpdate]
(
	@GLNumber AS NVARCHAR(30),
	@AmtChange AS MONEY,
	@AmtChangeF AS MONEY
	
)
AS
BEGIN
	UPDATE tblAccountsLY SET decBalance = decBalance + @AmtChange, decBalanceF = decBalanceF + @AmtChangeF, bitUsed = 1 WHERE intGLNumber = @GLNumber
	
	SELECT @@ROWCOUNT 
END
GO
/****** Object:  StoredProcedure [dbo].[AccountsSelect]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AccountsSelect]
    (
      @intGLNumber NVARCHAR(30)
    )
AS
BEGIN
    SET NOCOUNT ON;
    SELECT  [intGLNumber] AS GLNumber ,
            [strDesc] AS Description ,
            [intAccType] AS AccType ,
            [intGroupCode] AS GroupCode ,
            [intAccClass] AS AccClass ,
            [bitInactive] AS AccClass ,
            [decOpenBalance] AS OpenBalance ,
            [decBalance] AS Balance ,
            [decLYOpenBalance] AS LYOpenBalance ,
            [decLYEndBalance] AS LYEndBalance ,
            [bitBank] AS Bank ,
            [bitRecon] AS Recon ,
            [bitInventory] AS Inventory ,
            [bitBudget] AS Budget ,
            [bitUsed] AS Used ,
            [bitUsedLY] AS UsedLY ,
            [bitLinkREarnings] AS LinkREarnings ,
            [bitLinkCEarnings] AS LinkCEarnings ,
            [bitLinkAP] AS LinkAP ,
            [bitLinkPurDisc] AS LinkPurDisc ,
            [bitLinkAR] AS LinkAR ,
            [bitLinkSalesDisc] AS LinkSalesDisc ,
            [bitLinkAssCosts] AS LinkAssCosts ,
            [bitLinkAdjWriteOff] AS LinkAdjWriteOff ,
            [bitIsLinkedAccount] AS IsLinkedAccount ,
            [bitDefBank] AS DefBank ,
            [bitLinkDeposit] AS LinkDeposit ,
            [bitLinkPrePay] AS LinkPrePay ,
            [strField1] AS Field1 ,
            [strField2] AS Field2 ,
            [strField3] AS Field3 ,
            [strField4] AS Field4 ,
            [strField5] AS Field5 ,
            [strField6] AS Field6 ,
            [bitLinkExc] AS LinkExc ,
            [bitAllowCenters] AS AllowCenters ,
            [intCheqNumber] AS CheqNumber ,
            [strCurrency] AS Currency ,
            [decOpenBalanceF] AS OpenBalanceF ,
            [decBalanceF] AS BalanceF ,
            [decLYOpenBalanceF] AS LYOpenBalanceF ,
            [decLYEndBalanceF] AS LYEndBalanceF ,
            [bitLinkGRV] AS LinkGRV ,
            [bitLinkAddCost] AS LinkAddCost ,
            [bitLinkDelAdvice] AS LinkDelAdvice ,
            [bitLinkWIP] AS LinkWIP ,
            [bitLinkManStandardCost] AS LinkManStandardCost
    FROM    [tblAccounts]
    WHERE   [intGLNumber] = @intGLNumber;
	END
GO
/****** Object:  StoredProcedure [dbo].[AccountUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[AccountUpdate]
(
	@GLNumber AS NVARCHAR(30),
	@AmtChange AS MONEY,
	@AmtChange2 AS MONEY,
	@AmtChange1 AS MONEY,
	@AmtChangeF AS MONEY,
	@AmtChange2F AS MONEY,
	@AmtChange1F AS MONEY
)
AS
BEGIN

UPDATE tblAccounts SET decBalance = decBalance + @AmtChange, 
		decLYEndBalance = decLYEndBalance + @AmtChange1, 
		decOpenBalance = decOpenBalance + @AmtChange2, 
		decBalanceF = decBalance + @AmtChangeF,
		decLYEndBalanceF = decLYEndBalanceF + @AmtChange1F, 
		decOpenBalanceF = decOpenBalanceF + @AmtChange2F,
		bitUsedLY = 1 WHERE intGLNumber = @GLNumber

--UPDATE tblAccounts SET decBalance = decBalance + @AmtChange,   decBalanceF = decBalance + @AmtChangeF, bitUsed = 1 WHERE intGLNumber = @GLNumber


SELECT @@ROWCOUNT
END
GO
/****** Object:  StoredProcedure [dbo].[AccountUpdateCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetLinkAccountsDynamicLabels] ***********/

/*********** Start [AccountUpdateCY] ***********/
CREATE PROCEDURE [dbo].[AccountUpdateCY]
(
	@GLNumber AS NVARCHAR(30),
	@AmtChange AS MONEY,
	@AmtChangeF AS MONEY
)
AS
BEGIN

UPDATE 
	tblAccounts 
SET 
	decBalance = decBalance + @AmtChange, 
	decBalanceF = decBalanceF + @AmtChangeF, 
	bitUsed = 1 
WHERE intGLNumber = @GLNumber
SELECT @@ROWCOUNT
END

GO
/****** Object:  StoredProcedure [dbo].[ActivityGroupInsertWithTableType]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetUserListActivityGroupAccessList] (CRM)**********/

/********* Start [ActivityGroupInsertWithTableType] (CRM)**********/

Create PROCEDURE [dbo].[ActivityGroupInsertWithTableType]
    (
      @activityGroupInsertTableType AS ActivityGroupInsertTableType READONLY
    )
AS
    BEGIN
        INSERT INTO tblCRMAcitvityGroupUsers(ActivityGroupName,UserName) select * from @activityGroupInsertTableType
    END
GO
/****** Object:  StoredProcedure [dbo].[AddCurrency]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddCurrency] (  
 @Currency NVARCHAR(3)  
 ,@CurrName NVARCHAR(50)  
 ,@CurrSymbol NVARCHAR(5)  
 ,@TrailingSymb BIT  
 ,@ThousSymb NVARCHAR(1)  
 ,@DecSymb NVARCHAR(1)  
 ,@Decimals TINYINT  
 ,@CentsName NVARCHAR(50)  
 ,@Home BIT  
 ,@UpdateMon BIT  
 ,@UpdateTue BIT  
 ,@UpdateWed BIT  
 ,@UpdateThu BIT  
 ,@UpdateFri BIT  
 ,@UpdateSat BIT  
 ,@UpdateSun BIT  
 ,@UpdateTime TIME(7)  
 ,@ErrorRetry BIT
 ,@Attempts INTEGER
 ,@TimeInterval TIME(7)
 )  
AS  
BEGIN  
 INSERT INTO tblCurrency (  
  strCurrency  
  ,strCurrName  
  ,strCurrSymbol  
  ,bitTrailingSymb  
  ,strThousSymb  
  ,strDecSymb  
  ,intDecimals  
  ,strCentsName  
  ,bitHome  
  ,bitUpdateMon  
  ,bitUpdateTue  
  ,bitUpdateWed  
  ,bitUpdateThu  
  ,bitUpdateFri  
  ,bitUpdateSat  
  ,bitUpdateSun  
  ,dteUpdateTime
  ,bitErrorRetry
  ,intAttempts
  ,dteInterval
  )  
 VALUES (  
  @Currency  
  ,@CurrName  
  ,@CurrSymbol  
  ,@TrailingSymb  
  ,@ThousSymb  
  ,@DecSymb  
  ,@Decimals  
  ,@CentsName  
  ,@Home  
  ,@UpdateMon  
  ,@UpdateTue  
  ,@UpdateWed  
  ,@UpdateThu  
  ,@UpdateFri  
  ,@UpdateSat  
  ,@UpdateSun  
  ,@UpdateTime
  ,@ErrorRetry
  ,@Attempts
  ,@TimeInterval
  )  
END
GO
/****** Object:  StoredProcedure [dbo].[AddCustomerTradingTimes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/******************* End  [CustomerTradingTimesSearch]********************/

/******************* Start  [AddCustomerTradingTimes]   ********************/


CREATE PROCEDURE [dbo].[AddCustomerTradingTimes]
( 
	-- Add the parameters for the stored procedure here   
	@CustomerTradingTimesTable CustomerTradingTimesTableType READONLY
)
AS  
BEGIN   
-- SET NOCOUNT ON added to prevent extra result sets from   -- interfering with SELECT statements.   
SET NOCOUNT ON;        
-- Insert statements for procedure here   
	 
			INSERT INTO [dbo].[tblCustomerTradingTimes]         
				([strCustName] ,[strDay] ,[dteFromTime] ,[dteToTime],[strEnqType],[bitEnabled] )      
			SELECT
				[CustName],
				[Day],
				[FromTime],
				[ToTime],
				[EnqType],
				[IsEnabled]
				FROM 
			@CustomerTradingTimesTable;    
END
GO
/****** Object:  StoredProcedure [dbo].[AddDebtMessages]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------------'
CREATE PROCEDURE [dbo].[AddDebtMessages]
@strCellNumber NVARCHAR(100),
@strMessage NVARCHAR(4000),
@strSentBy NVARCHAR(100),
@dteEntered SMALLDATETIME,
@dteSent SMALLDATETIME,
@strServerID NVARCHAR(max),
@bitProcessed bit,
@bitReply bit
AS
BEGIN
	INSERT 
	INTO tblSMSMessages 
	(
		strCellNumber,
		strMessage,
		strSentBy,
		dteEntered,
		dteSent,
		strServerID,
		bitProcessed,
		bitReply
	)
	VALUES 
	(
		@strCellNumber,
		@strMessage,
		@strSentBy,
		@dteEntered,
		@dteSent,
		@strServerID,
		@bitProcessed,
		@bitReply
	)
END
GO
/****** Object:  StoredProcedure [dbo].[AddItemDescription]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddItemDescription]    Script Date: 06-09-2019 10:35:55 ******/
CREATE PROCEDURE [dbo].[AddItemDescription]
(
@Description nvarchar(250)
,@DescriptionOrder INT
,@DescriptionOLD nvarchar(250)=NULL

)
AS
BEGIN
IF(@DescriptionOLD is not null)
BEGIN
	
	UPDATE tblInvDescription SET strDescription=@Description, intOrder=@DescriptionOrder
	WHERE strDescription=@DescriptionOLD

END
ELSE
BEGIN

	INSERT into tblInvDescription(strDescription,intOrder) 
	VALUES (@Description,@DescriptionOrder)

END
END
GO

/****** Object:  StoredProcedure [dbo].[AddItemDescriptionData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddItemDescriptionData]    Script Date: 2020-05-26 ******/
CREATE Procedure [dbo].[AddItemDescriptionData]
@Description as InvDescriptionTableType ReadOnly
AS
Begin
	insert into tblInvDescriptionAutoComplete (strDescription,strValue)
	Select v.strDescription,v.strValue from @Description v
End
GO

/****** Object:  StoredProcedure [dbo].[AddPurchaseOrderDocDt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddPurchaseOrderDocDt]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[AddPurchaseOrderDocDt]
	@OrdDocDtData OrderDocPDTTableType READONLY
AS
BEGIN
	SET NOCOUNT ON;
	INSERT INTO tblOrderDocPDT 
	SELECT * FROM @OrdDocDtData   
END
GO
/****** Object:  StoredProcedure [dbo].[AddQuotesDocument]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddQuotesDocument]    
  (    
   @OrderDocID AS NVARCHAR(50)      
  ,@SystemDate AS DateTime    
  ,@JournalDate AS DateTime    
  ,@Required AS DateTime    
  ,@UserName AS VARCHAR(20)      
  ,@SoldTo AS VARCHAR(500)      
  ,@ShipTo AS VARCHAR(500)    
  ,@Reference AS VARCHAR(50)      
  ,@DiscountPercentage AS MONEY      
  ,@SubTotal AS MONEY    
  ,@DiscountAmount AS MONEY    
  ,@VAT AS MONEY    
  ,@Total AS MONEY    
  ,@DeliveryCost AS MONEY    
  ,@Notes AS NVARCHAR(MAX)     
  ,@IsPrinted AS BIT    
  ,@IsEmailed AS BIT    
  ,@IsCleared AS BIT    
  ,@SalesName AS NVARCHAR(50)    
  ,@AdditionalInfo AS NVARCHAR(50)    
  ,@Currency AS NVARCHAR(3)    
  ,@IsForeign AS BIT    
  ,@SubTotalF AS MONEY    
  ,@DiscAmtF AS MONEY    
  ,@VATF AS MONEY    
  ,@TotalF AS MONEY    
  ,@DeliveryCostF AS MONEY    
  ,@ExchangeRate AS DECIMAL     
  ,@Term AS NVARCHAR(50)    
  ,@Dept AS INT    
  ,@Field1 AS NVARCHAR(100)    
  ,@Field2 AS NVARCHAR(100)    
  ,@Field3 AS NVARCHAR(100)    
  ,@Field4 AS NVARCHAR(100)    
  ,@Field5 AS NVARCHAR(100)    
  ,@Field6 AS NVARCHAR(100)    
  ,@Field7 AS NVARCHAR(100)    
  ,@Field8 AS NVARCHAR(100)    
  ,@Field9 AS NVARCHAR(100)    
  ,@Field10 AS NVARCHAR(100)    
  ,@Field11 AS NVARCHAR(100)    
  ,@Field12 AS NVARCHAR(100)    
  ,@SubFormatted AS NVARCHAR(50)    
  ,@DiscountFormatted AS NVARCHAR(50)    
  ,@VATFormatted AS NVARCHAR(50)    
  ,@TotalFormatted AS NVARCHAR(50)    
  ,@DeliveryCostFormatted AS NVARCHAR(50)    
  ,@TotalCost AS MONEY    
  ,@TotalMarkup AS MONEY    
  ,@CustName AS VARCHAR(50)      
  ,@StatusTypeCode AS NVARCHAR(20)    
  ,@IsDeclined AS BIT    
  ,@IsApproved AS BIT    
  ,@ApprovedBy AS NVARCHAR(20)    
  ,@ApprovedDate AS DateTime     
  ,@TotalWeight AS MONEY    
  ,@TotalVolWeight AS MONEY    
  ,@SOReasonCode AS NVARCHAR(20)    
  ,@DelMethodCode AS NVARCHAR(50)          
  ,@RevisionNumber AS INT     
  ,@StoreNumber AS NVARCHAR(50)    
  ,@EDI AS NVARCHAR(50)  
  ,@DocumentSignature VARBINARY(max) = null    
  )    
AS    
BEGIN     
 INSERT INTO [dbo].[tblOrderDocQ]    
 (    
      [strOrdDocID]    
      ,[dteSystemDate]    
      ,[dteJournalDate]    
      ,[dteRequired]    
      ,[strUserName]    
      ,[strSoldTo]    
      ,[strShipTo]    
      ,[strReference]    
      ,[decSubTotal]    
      ,[decVAT]    
      ,[decTotal]    
      ,[strNotes]    
      ,[bitPrinted]    
      ,[bitEmailed]    
      ,[bitCleared]    
      ,[strSalesName]    
      ,[strAddInfo]    
      ,[strCurrency]    
      ,[bitIsForeign]    
      ,[decSubTotalF]    
      ,[decVATF]    
      ,[decTotalF]    
      ,[decExchange]    
      ,[strTerm]    
      ,[intDept]    
      ,[strField1]    
      ,[strField2]    
      ,[strField3]    
      ,[strField4]    
      ,[strField5]    
      ,[strField6]    
      ,[strField7]    
      ,[strField8]    
      ,[strField9]    
      ,[strField10]    
      ,[strField11]    
      ,[strField12]    
      ,[strSubFormated]    
      ,[strVATFormatted]    
      ,[strTotFormatted]    
      ,[decTotalCost]    
      ,[decTotalMarkup]    
      ,[strCustName]    
      ,[decDiscPerc]    
      ,[decDiscAmt]    
      ,[decDiscAmtF]    
      ,[strDiscFormatted]    
      ,[strStatusTypeCode]    
      ,[bitDeclined]    
      ,[bitApproved]    
      ,[strApprovedBy]    
      ,[dteApprovedDate]    
      ,[decTotalWeight]    
      ,[decTotalVolWeight]    
      ,[strSOReasonCode]    
      ,[decDeliveryCost]    
      ,[decDeliveryCostF]    
      ,[strDeliveryCostFormatted]    
      ,[strDelMethodCode]    
      ,[intRevisionNumber]    
      ,[strStoreNumber]    
      ,[strEDI]   
	  ,[dteRowUpdated]
      ,[varDocumentSignature]   
 )    
 VALUES    
  (    
    @OrderDocID    
   ,@SystemDate    
   ,@JournalDate    
   ,@Required    
   ,@UserName    
   ,@SoldTo    
   ,@ShipTo    
   ,@Reference    
   ,@SubTotal    
   ,@VAT    
   ,@Total    
   ,@Notes    
   ,@IsPrinted    
   ,@IsEmailed    
   ,@IsCleared    
   ,@SalesName    
   ,@AdditionalInfo    
   ,@Currency    
   ,@IsForeign    
   ,@SubTotalF    
   ,@VATF    
   ,@TotalF    
   ,@ExchangeRate    
   ,@Term    
   ,@Dept    
   ,@Field1    
   ,@Field2    
   ,@Field3    
   ,@Field4    
   ,@Field5    
   ,@Field6    
   ,@Field7    
   ,@Field8    
   ,@Field9    
   ,@Field10    
   ,@Field11    
   ,@Field12    
   ,@SubFormatted    
   ,@VATFormatted    
   ,@TotalFormatted    
   ,@TotalCost    
   ,@TotalMarkup    
   ,@CustName    
   ,@DiscountPercentage    
   ,@DiscountAmount    
   ,@DiscAmtF    
   ,@DiscountFormatted    
   ,@StatusTypeCode    
   ,@IsDeclined    
   ,@IsApproved    
   ,@ApprovedBy    
   ,@ApprovedDate    
   ,@TotalWeight    
   ,@TotalVolWeight    
   ,@SOReasonCode    
   ,@DeliveryCost    
   ,@DeliveryCostF    
   ,@DeliveryCostFormatted    
   ,@DelMethodCode    
   ,@RevisionNumber    
   ,@StoreNumber    
   ,@EDI  
   ,GETDATE()
   ,@DocumentSignature    
 )    
END 
GO
/****** Object:  StoredProcedure [dbo].[AddSMSOptions]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[AddSMSOptions]
(
	@SMSUser AS NVARCHAR(50),
	@SMSPwd AS NVARCHAR(2000),
	@DisableSMS AS bit,
	@ReceiveID AS bigint,
	@Provider AS NVARCHAR(50),
	@Sender AS NVARCHAR(50),
	@CountryTelCode AS NVARCHAR(50)
)
AS
BEGIN
	
		INSERT into tblSMSControl (strSMSUser ,strSMSPwd, bitDisableSMS, lngReceiveID, strProvider, strSender ,strCountryTelCode) VALUES (@SMSUser, @SMSPwd, @DisableSMS, @ReceiveID, @Provider, @Sender ,@CountryTelCode)
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdateNotificationData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdateNotificationData]    Script Date: 2020-05-16 ******/
CREATE PROCEDURE [dbo].[AddUpdateNotificationData]  
@NotificationID int = null,
@SenderName nvarchar(50),  
@ApproverName nvarchar(50),  
@NotificationType int ,  
@NotificationData nvarchar(max),  
@ApprovalStatus int,  
@CreatedDateTime Datetime = null,  
@UpdatedDateTime Datetime = null,  
@IsAdjusting bit  
AS  
BEGIN  
IF(@IsAdjusting = 0)  
   INSERT INTO tblNotificationData (NotificationID,strSenderName,strApproverName,intNotificationType,strNotificationData,intApprovalStatus,dteCreatedDateTime)  
   VALUES (@NotificationID,@SenderName,@ApproverName,@NotificationType,@NotificationData,@ApprovalStatus,@CreatedDateTime )   
ELSE  
  UPDATE tblNotificationData   
  SET intApprovalStatus=@ApprovalStatus,  
  dteUpdatedDateTime= @UpdatedDateTime,
  strNotificationData = @NotificationData  
  WHERE NotificationID=@NotificationID      
END  
GO
/****** Object:  StoredProcedure [dbo].[AddUpdateOrderDocument]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdateOrderDocument] (
	@OrderDocID AS NVARCHAR(50)
	,@DocType AS TINYINT
   ,@SystemDate AS DateTime
		,@JournalDate AS DateTime
		,@Required AS DateTime
	,@UserName AS VARCHAR(20)
	,@CustName AS VARCHAR(50)
	,@SoldTo AS VARCHAR(500)
	,@ShipTo AS VARCHAR(500)
	,@Reference AS VARCHAR(50)
	,@DiscountPercentage AS MONEY
	,@SubTotal AS MONEY
	,@DiscountAmount AS MONEY
	,@VAT AS MONEY
	,@Total AS MONEY
	,@DeliveryCost AS MONEY
	,@Notes AS NVARCHAR(MAX)
	,@IsPrinted AS BIT
	,@IsEmailed AS BIT
	,@IsCleared AS BIT
	,@SalesName AS NVARCHAR(50)
	,@AdditionalInfo AS NVARCHAR(50)
	,@Currency AS NVARCHAR(3)
	,@IsForeign AS BIT
	,@SubTotalF AS MONEY
	,@DiscAmtF AS MONEY
	,@VATF AS MONEY
	,@TotalF AS MONEY
	,@DeliveryCostF AS MONEY
	,@ExchangeRate AS MONEY
	,@Term AS NVARCHAR(50)
	,@Dept AS INT
	,@Field1 AS NVARCHAR(100)
	,@Field2 AS NVARCHAR(100)
	,@Field3 AS NVARCHAR(100)
	,@Field4 AS NVARCHAR(100)
	,@Field5 AS NVARCHAR(100)
	,@Field6 AS NVARCHAR(100)
	,@Field7 AS NVARCHAR(100)
	,@Field8 AS NVARCHAR(100)
	,@Field9 AS NVARCHAR(100)
	,@Field10 AS NVARCHAR(100)
	,@Field11 AS NVARCHAR(100)
	,@Field12 AS NVARCHAR(100)
	,@SubFormatted AS NVARCHAR(50)
	,@DiscountFormatted AS NVARCHAR(50)
	,@VATFormatted AS NVARCHAR(50)
	,@TotalFormatted AS NVARCHAR(50)
	,@DeliveryCostFormatted AS NVARCHAR(50)
	,@Field13 AS DATETIME
	,@Field14 AS DATETIME
	,@OrdFQDocID AS NVARCHAR(50)
	,@StatusTypeCode AS NVARCHAR(20)
	,@IsBookmark AS BIT
	,@CNReasonCode AS NVARCHAR(20)
	,@IsRepair AS BIT
	,@DelMethodCode AS NVARCHAR(50)
	,@TotalWeight AS MONEY
	,@TotalVolWeight AS MONEY
	,@SOReasonCode AS NVARCHAR(20)
	,@IsShipmentsAuditTrail AS BIT
	,@RevisionNumber AS INT
	,@IsLayby AS BIT
	,@IsAdjusting AS BIT
	,@StoreNumber AS NVARCHAR(50)
	,@EDI AS NVARCHAR(50)
	,@CustomerSignature AS IMAGE = NULL
	,@IsFromWorkshop AS BIT = NULL
	,@DocumentSignature VARBINARY(max) = null
	,@SessionID AS UNIQUEIDENTIFIER = NULL
	)

AS
BEGIN
	IF (@IsAdjusting = 0)
		INSERT INTO tblOrderDoc (
			[strOrdDocID]
			,[intDocType]
			,[dteSystemDate]
			,[dteJournalDate]
			,[dteRequired]
			,[strUserName]
			,[strCustName]
			,[strSoldTo]
			,[strShipTo]
			,[strReference]
			,[decSubTotal]
			,[decVAT]
			,[decTotal]
			,[strNotes]
			,[bitPrinted]
			,[bitEmailed]
			,[bitCleared]
			,[strSalesName]
			,[strAddInfo]
			,[strCurrency]
			,[bitIsForeign]
			,[decSubTotalF]
			,[decVATF]
			,[decTotalF]
			,[decExchange]
			,[strTerm]
			,[intDept]
			,[strField1]
			,[strField2]
			,[strField3]
			,[strField4]
			,[strField5]
			,[strField6]
			,[strField7]
			,[strField8]
			,[strField9]
			,[strField10]
			,[strField11]
			,[strField12]
			,[strSubFormated]
			,[strVATFormatted]
			,[strTotFormatted]
			,[dteField13]
			,[dteField14]
			,[decDiscPerc]
			,[decDiscAmt]
			,[decDiscAmtF]
			,[strDiscFormatted]
			,[strOrdFQDocID]
			,[strStatusTypeCode]
			,[bitBookmark]
			,[strCNReasonCode]
			,[bitIsRepair]
			,[strDelMethodCode]
			,[decTotalWeight]
			,[decTotalVolWeight]
			,[strSOReasonCode]
			,[decDeliveryCost]
			,[decDeliveryCostF]
			,[strDeliveryCostFormatted]
			,[bitShipmentsAuditTrail]
			,[intRevisionNumber]
			,[bitIsLayby]
			,[strStoreNumber]
			,[strEDI]
			,[CustomerSignature]
			,[bitIsFromWorkshop]
			,[varDocumentSignature]
			,uidSessionID
			)
		VALUES (
			@OrderDocID
			,@DocType
			,@SystemDate
			,@JournalDate
			,@Required
			,@UserName
			,@CustName
			,@SoldTo
			,@ShipTo
			,@Reference
			,@SubTotal
			,@VAT
			,@Total
			,@Notes
			,@IsPrinted
			,@IsEmailed
			,@IsCleared
			,CASE 
				WHEN rtrim(isnull(@SalesName, '')) = ''
					THEN NULL
				ELSE @SalesName
				END --,@SalesName
			,@AdditionalInfo
			,@Currency
			,@IsForeign
			,@SubTotalF
			,@VATF
			,@TotalF
			,@ExchangeRate
			,@Term
			,@Dept
			,@Field1
			,@Field2
			,@Field3
			,@Field4
			,@Field5
			,@Field6
			,@Field7
			,@Field8
			,@Field9
			,@Field10
			,@Field11
			,@Field12
			,@SubFormatted
			,@VATFormatted
			,@TotalFormatted
			,@Field13
			,@Field14
			,@DiscountPercentage
			,@DiscountAmount
			,@DiscAmtF
			,@DiscountFormatted
			,@OrdFQDocID
			,@StatusTypeCode
			,@IsBookmark
			,@CNReasonCode
			,@IsRepair
			,(
				CASE 
					WHEN rtrim(isnull(@DelMethodCode, '')) = ''
						THEN NULL
					ELSE @DelMethodCode
					END
				) --,@DelMethodCode
			,@TotalWeight
			,@TotalVolWeight
			,@SOReasonCode
			,@DeliveryCost
			,@DeliveryCostF
			,@DeliveryCostFormatted
			,@IsShipmentsAuditTrail
			,@RevisionNumber
			,@IsLayby
			,@StoreNumber
			,@EDI
			,NULL
			,ISNULL(@IsFromWorkshop, 0)
			,@DocumentSignature
			,@SessionID
			)
	ELSE
		UPDATE tblOrderDoc
		SET strCustName = @CustName
			,dteSystemDate = @SystemDate
			,dteJournalDate = @JournalDate
			,dteRequired = @Required
			,strUserName = @UserName
			,strSoldTo = @SoldTo
			,strShipTo = @ShipTo
			,strReference = @Reference
			,decSubTotal = @SubTotal
			,decVAT = @VAT
			,decTotal = @Total
			,strNotes = @Notes
			,strSalesName = CASE 
				WHEN rtrim(isnull(@SalesName, '')) = ''
					THEN NULL
				ELSE @SalesName
				END --@SalesName
			,strAddInfo = @AdditionalInfo
			,strCurrency = @Currency
			,bitIsForeign = @IsForeign
			,decSubTotalF = @SubTotalF
			,decVATF = @VATF
			,decTotalF = @TotalF
			,decExchange = @ExchangeRate
			,strTerm = @Term
			,intDept = @Dept
			,strField1 = @Field1
			,strField2 = @Field2
			,strField3 = @Field3
			,strField4 = @Field4
			,strField5 = @Field5
			,strField6 = @Field6
			,strField7 = @Field7
			,strField8 = @Field8
			,strField9 = @Field9
			,strField10 = @Field10
			,strField11 = @Field11
			,strField12 = @Field12
			,strSubFormated = @SubFormatted
			,strVATFormatted = @VATFormatted
			,strTotFormatted = @TotalFormatted
			,dteField13 = @Field13
			,dteField14 = @Field14
			,decDiscPerc = @DiscountPercentage
			,decDiscAmt = @DiscountAmount
			,decDiscAmtF = @DiscAmtF
			,strDiscFormatted = @DiscountFormatted
			,strStatusTypeCode = @StatusTypeCode
			,bitBookmark = @IsBookmark
			,strCNReasonCode = @CNReasonCode
			,strDelMethodCode = (
				CASE 
					WHEN rtrim(isnull(@DelMethodCode, '')) = ''
						THEN NULL
					ELSE @DelMethodCode
					END
				) --@DelMethodCode
			,decTotalWeight = @TotalWeight
			,decTotalVolWeight = @TotalVolWeight
			,strSOReasonCode = @SOReasonCode
			,decDeliveryCost = @DeliveryCost
			,decDeliveryCostF = @DeliveryCostF
			,strDeliveryCostFormatted = @DeliveryCostFormatted
			,intRevisionNumber = @RevisionNumber
			,strStoreNumber = @StoreNumber
			,strEDI = @EDI
			,bitIsFromWorkshop = ISNULL(@IsFromWorkshop, 0)
			,varDocumentSignature = @DocumentSignature
			,uidSessionID = @SessionID
		WHERE strOrdDocID = @OrderDocID
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatePurchaseOrderDoc]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatePurchaseOrderDoc]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[AddUpdatePurchaseOrderDoc]
	@OrdPDocID Varchar(50)
	,@SystemDate AS DateTime
	,@JournalDate AS DateTime
	,@Required AS DateTime
	,@UserName AS VARCHAR(20)
	,@VendName AS VARCHAR(50)
	,@ShipTo AS VARCHAR(500)	
	,@SubTotal AS MONEY
	,@VAT AS MONEY
	,@Total AS MONEY
	,@Notes AS NVARCHAR(MAX)
	,@IsPrinted AS BIT 
	,@IsEmailed AS BIT
	,@IsCleared AS BIT
	,@DocType AS TINYINT
	,@BoughtFrom AS VARCHAR(500)
	,@Currency AS NVARCHAR(3)
	,@IsForeign AS BIT
	,@SubTotalF AS MONEY
	,@VATF AS MONEY
		,@TotalF AS MONEY
		,@ExchangeRate AS MONEY 
		,@Term AS NVARCHAR(50)
		,@Dept AS INT = NULL
		,@Field1 AS NVARCHAR(100)
		,@Field2 AS NVARCHAR(100)
		,@Field3 AS NVARCHAR(100)
		,@Field4 AS NVARCHAR(100)
		,@Field5 AS NVARCHAR(100)
		,@Field6 AS NVARCHAR(100)
		,@Field7 AS NVARCHAR(100)
		,@Field8 AS NVARCHAR(100)
		,@Field9 AS NVARCHAR(100)
		,@Field10 AS NVARCHAR(100)
		,@Field11 AS NVARCHAR(100)
		,@Field12 AS NVARCHAR(100)
		,@SubFormatted AS NVARCHAR(50)
		,@VATFormatted AS NVARCHAR(50)
		,@TotalFormatted AS NVARCHAR(50)
		,@DiscountPercentage AS MONEY
		,@DiscAmt AS MONEY		
		,@DiscAmtF AS MONEY	
		,@DiscountFormatted AS NVARCHAR(50)
		,@OrdFQDocID AS NVARCHAR(50) = NULL
		,@FQConvert bit
		,@SOCopy bit
		,@SOCopyMulti bit
		,@StatusTypeCode AS NVARCHAR(20) = NULL
		,@Bookmark bit
		,@AddInfo AS NVARCHAR(50)
		,@Reference AS VARCHAR(50)
		,@OrdRFQDocID AS VARCHAR(50) = NULL
		,@RFQConvert bit
		,@NetItemWeight AS Money
		,@NetVolumetricWeight AS Money
		,@RevisionNumber AS INT = NULL
		,@BuyerName AS VARCHAR(50) = NULL
		,@IsAdjusting AS BIT = 0
AS
BEGIN
	SET NOCOUNT ON;
	IF(@IsAdjusting = 0)
    INSERT INTO tblOrderDocP 
	([strOrdPDocID]
      ,[dteSystemDate]
      ,[dteJournalDate]
      ,[dteRequired]
      ,[strUserName]
      ,[strVendName]
      ,[strShipTo]
      ,[decSubTotal]
      ,[decVAT]
      ,[decTotal]
      ,[strNotes]
      ,[bitPrinted]
      ,[bitEmailed]
      ,[bitCleared]
      ,[intDocType]
      ,[strBoughtFrom]
      ,[strCurrency]
      ,[bitIsForeign]
      ,[decSubTotalF]
      ,[decVATF]
      ,[decTotalF]
      ,[decExchange]
      ,[strTerm]
      ,[intDept]
      ,[strField1]
      ,[strField2]
      ,[strField3]
      ,[strField4]
      ,[strField5]
      ,[strField6]
      ,[strField7]
      ,[strField8]
      ,[strField9]
      ,[strField10]
      ,[strField11]
      ,[strField12]
      ,[strSubFormated]
      ,[strVATFormatted]
      ,[strTotFormatted]
      ,[decDiscPerc]
      ,[decDiscAmt]
      ,[decDiscAmtF]
      ,[strDiscFormatted]
      ,[strOrdFQDocID]
      ,[bitFQConvert]
      ,[bitSOCopy]
      ,[bitSOCopyMulti]
      ,[strStatusTypeCode]
      ,[bitBookmark]
      ,[strAddInfo]
      ,[strReference]
      ,[strOrdRFQDocID]
      ,[bitRFQConvert]
      ,[decNetItemWeight]
      ,[decNetVolumetricWeight]
      ,[intRevisionNumber]
      ,[strBuyerName])
	VALUES (@OrdPDocID
	,@SystemDate
	,@JournalDate
	,@Required
	,@UserName
	,@VendName
	,@ShipTo
	,@SubTotal
	,@VAT
	,@Total
	,@Notes
	,@IsPrinted
	,@IsEmailed
	,@IsCleared
	,@DocType
	,@BoughtFrom
	,@Currency
	,@IsForeign
	,@SubTotalF
	,@VATF
	,@TotalF
	,@ExchangeRate
	,@Term
		,@Dept
		,@Field1
		,@Field2
		,@Field3
		,@Field4
		,@Field5
		,@Field6
		,@Field7
		,@Field8
		,@Field9
		,@Field10
		,@Field11
		,@Field12
		,@SubFormatted
		,@VATFormatted
		,@TotalFormatted
		,@DiscountPercentage
		,@DiscAmt
		,@DiscAmtF
		,@DiscountFormatted
		,@OrdFQDocID
		,@FQConvert
		,@SOCopy
		,@SOCopyMulti
		,@StatusTypeCode
		,@Bookmark
		,@AddInfo
		,@Reference
		,@OrdRFQDocID
		,@RFQConvert
		,@NetItemWeight
		,@NetVolumetricWeight
		,@RevisionNumber
		,@BuyerName)
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblAccounts]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[AddUpdatetblAccounts]
    @tblData AS AccountsTableType READONLY
AS
BEGIN

BEGIN
	UPDATE  [tblAccounts] SET
	intGLNumber = table2.intGLNumber, 
	strDesc = table2.strDesc, 
	intAccType = table2.intAccType,
	 intGroupCode = table2.intGroupCode,
	  intAccClass = table2.intAccClass, 
	  bitInactive = table2.bitInactive, 
	  decOpenBalance = table2.decOpenBalance, 
	 -- decBalance = table2.decBalance, 
	  decLYOpenBalance = table2.decLYOpenBalance, 
	  decLYEndBalance = table2.decLYEndBalance, 
	  bitBank = table2.bitBank,
	   bitRecon = table2.bitRecon,
	    bitInventory = table2.bitInventory,
		 bitBudget = table2.bitBudget,
		  bitUsed = table2.bitUsed, 
		  bitUsedLY = table2.bitUsedLY, 
		  bitLinkREarnings = table2.bitLinkREarnings,
		   bitLinkCEarnings = table2.bitLinkCEarnings, 
		   bitLinkAP = table2.bitLinkAP, 
		   bitLinkPurDisc = table2.bitLinkPurDisc, 
		   bitLinkAR = table2.bitLinkAR, 
		   bitLinkSalesDisc = table2.bitLinkSalesDisc, 
		   bitLinkAssCosts = table2.bitLinkAssCosts, 
		   bitLinkAdjWriteOff = table2.bitLinkAdjWriteOff, 
		   bitIsLinkedAccount = table2.bitIsLinkedAccount, 
		   bitDefBank = table2.bitDefBank,
		    bitLinkDeposit = table2.bitLinkDeposit,
			 bitLinkPrePay = table2.bitLinkPrePay, 
			 strField1 = table2.strField1, 
			 strField2 = table2.strField2, 
			 strField3 = table2.strField3, 
			 strField4 = table2.strField4, 
			 strField5 = table2.strField5, 
			 strField6 = table2.strField6, 
			 bitLinkExc = table2.bitLinkExc,
			  bitAllowCenters = table2.bitAllowCenters,
			   intCheqNumber = table2.intCheqNumber,
			    strCurrency = table2.strCurrency, 
				decOpenBalanceF = table2.decOpenBalanceF,
				 decBalanceF = table2.decBalanceF,
				  decLYOpenBalanceF = table2.decLYOpenBalanceF, 
				  decLYEndBalanceF = table2.decLYEndBalanceF,
				   bitLinkGRV = table2.bitLinkGRV,
				    bitLinkAddCost = table2.bitLinkAddCost, 
					bitLinkDelAdvice = table2.bitLinkDelAdvice, 
					bitLinkWIP = table2.bitLinkWIP, 
					bitLinkManStandardCost = table2.bitLinkManStandardCost,
				   bitLinkWorkshopWIP = table2.bitLinkWorkshopWIP
	FROM tblAccounts as table1
	INNER JOIN @tblData as table2
	ON table1.intGLNumber=table2.intGLNumber
END

BEGIN
   INSERT INTO  [tblAccounts] 
	   (
	   intGLNumber, strDesc, intAccType, intGroupCode, intAccClass, bitInactive, decOpenBalance, decBalance, decLYOpenBalance, decLYEndBalance, bitBank, bitRecon, bitInventory, bitBudget, bitUsed, bitUsedLY, bitLinkREarnings, bitLinkCEarnings, bitLinkAP, bitLinkPurDisc, bitLinkAR, bitLinkSalesDisc, bitLinkAssCosts, bitLinkAdjWriteOff, bitIsLinkedAccount, bitDefBank, bitLinkDeposit, bitLinkPrePay, strField1, strField2, strField3, strField4, strField5, strField6, bitLinkExc, bitAllowCenters, intCheqNumber, strCurrency, decOpenBalanceF, decBalanceF, decLYOpenBalanceF, decLYEndBalanceF, bitLinkGRV, bitLinkAddCost, bitLinkDelAdvice, bitLinkWIP, bitLinkManStandardCost, bitLinkWorkshopWIP, bitLinkARCustMast, bitLinkDepositCustMast, bitLinkAPVendMast, bitLinkPrepayVendMast
	   ) 
	   SELECT  
	 intGLNumber,  strDesc, intAccType, intGroupCode, intAccClass, bitInactive, decOpenBalance, decBalance, decLYOpenBalance, decLYEndBalance, bitBank, bitRecon, bitInventory, bitBudget, bitUsed, bitUsedLY, bitLinkREarnings, bitLinkCEarnings, bitLinkAP, bitLinkPurDisc, bitLinkAR, bitLinkSalesDisc, bitLinkAssCosts, bitLinkAdjWriteOff, bitIsLinkedAccount, bitDefBank, bitLinkDeposit, bitLinkPrePay, strField1, strField2, strField3, strField4, strField5, strField6, bitLinkExc, bitAllowCenters, intCheqNumber, strCurrency, decOpenBalanceF, decBalanceF, decLYOpenBalanceF, decLYEndBalanceF, bitLinkGRV, bitLinkAddCost, bitLinkDelAdvice, bitLinkWIP, bitLinkManStandardCost, bitLinkWorkshopWIP, bitLinkARCustMast, bitLinkDepositCustMast, bitLinkAPVendMast, bitLinkPrepayVendMast
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblAccounts WHERE intGLNumber= t.intGLNumber )
END

END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblAccountSets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO




/****** Object:  StoredProcedure [dbo].[AddUpdatetblAccountSets]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblAccountSets]
    @tblData AS AccountSetsTableType READONLY
AS
BEGIN

BEGIN
	UPDATE  [tblAccountSets] SET
	strAcctSet = table2.strAcctSet,
strDesc = table2.strDesc,
blnService = table2.blnService,
blnInactive = table2.blnInactive,
intGLAsset = table2.intGLAsset,
intGLRevenue = table2.intGLRevenue,
intGLExpCOGS = table2.intGLExpCOGS,
intGLVariance = table2.intGLVariance,
blnBuyout = table2.blnBuyout
	FROM tblAccountSets as table1
	INNER JOIN @tblData as table2
	ON table1.strAcctSet=table2.strAcctSet
END

BEGIN
   INSERT INTO  [tblAccountSets] 
	   (
	   strAcctSet,
		strDesc,
		blnService,
		blnInactive,
		intGLAsset,
		intGLRevenue,
		intGLExpCOGS,
		intGLVariance,
		blnBuyout
	   ) 
	   SELECT  
	    strAcctSet,
	    strDesc,
		blnService,
		blnInactive,
		intGLAsset,
		intGLRevenue,
		intGLExpCOGS,
		intGLVariance,
		blnBuyout
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblAccountSets WHERE strAcctSet= t.strAcctSet )
END

END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblBankRecAccts]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdatetblBankRecAccts]
    @tblData AS BankRecAcctsTableType READONLY
AS
BEGIN

BEGIN
	UPDATE  tblBankRecAccts SET
	 [intGLNumber] = table2.[intGLNumber],
	  [intInterestRev] = table2.[intInterestRev],
	   [intInterestExp] = table2.[intInterestExp]
	FROM tblBankRecAccts as table1
	INNER JOIN @tblData as table2
	ON table1.[intGLNumber] = table2.[intGLNumber]
END

BEGIN
   INSERT INTO  tblBankRecAccts 
	   (
	     [intGLNumber], [intInterestRev], [intInterestExp]
	   ) 
	   SELECT  
	   [intGLNumber], [intInterestRev], [intInterestExp]
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblBankRecAccts WHERE [intGLNumber]= t.[intGLNumber] )
END

END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblCompany]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	/****** Object:  StoredProcedure [dbo].[AddUpdatetblCompany]    Script Date: 19-10-2018 13:35:07 ******/
	Create PROCEDURE [dbo].[AddUpdatetblCompany]
	    @tblData AS CompanyTableType READONLY
		AS
		BEGIN
			BEGIN
					Insert into tblCompany
					(
					strName	 ,
		strStreet1			 ,
		strStreet2			 ,
		strCity				 ,
		strProvince			 ,
		strPostal			 ,
		strCountry			 ,
		strPhone1			 ,
		strPhone2			 ,
		strFax				 ,
		strEmail			 ,
		strCK				 ,
		strVAT				 ,
		dteLYStarted		 ,
		dteLYEnded			 ,
		dteYearStarts		 ,
		dteYearEnds			 ,
		dteEarliestTran		 ,
		dtePeriodClose		 ,
		strCountryCode		 ,
		imgLogo				 ,
		strCoSerial			 ,
		strCloudUsername	 ,
		strCloudPassword	 
					)
						SELECT 
		strName	 ,
		strStreet1			 ,
		strStreet2			 ,
		strCity				 ,
		strProvince			 ,
		strPostal			 ,
		strCountry			 ,
		strPhone1			 ,
		strPhone2			 ,
		strFax				 ,
		strEmail			 ,
		strCK				 ,
		strVAT				 ,
		dteLYStarted		 ,
		dteLYEnded			 ,
		dteYearStarts		 ,
		dteYearEnds			 ,
		dteEarliestTran		 ,
		dtePeriodClose		 ,
		strCountryCode		 ,
		imgLogo				 ,
		strCoSerial			 ,
		strCloudUsername	 ,
		strCloudPassword
						 FROM @tblData  as t 
			  WHERE  NOT EXISTS (SELECT 1 FROM tblCompany WHERE strName=t.strName)
			END
	
	BEGIN
	   UPDATE [dbo].tblCompany SET
         strName	= table2.strName ,
         strStreet1	= table2.strStreet1		 ,
         strStreet2	= table2.strStreet2		 ,
         strCity		= table2.strCity		 ,
         strProvince	= table2.strProvince		 ,
         strPostal	= table2.strPostal		 ,
         strCountry	= table2.strCountry		 ,
         strPhone1	= table2.strPhone1		 ,
         strPhone2	= table2.strPhone2		 ,
         strFax		= table2.strFax		 ,
         strEmail		= table2.strEmail	 ,
         strVAT		= table2.strVAT		 ,
         dteLYStarted		= table2.dteLYStarted ,
         dteLYEnded	= table2.dteLYEnded		 ,
         dteYearStarts	= table2.dteYearStarts	 ,
         dteYearEnds		= table2.dteYearEnds	 ,
         dteEarliestTran	= table2.dteEarliestTran	 ,
         dtePeriodClose	= table2.dtePeriodClose	 ,
         strCountryCode	= table2.strCountryCode	 ,
         imgLogo		= table2.imgLogo		 ,
         strCoSerial	= table2.strCoSerial		 ,
         strCloudUsername	= table2.strCloudUsername ,
         strCloudPassword = table2.strCloudPassword
	    FROM tblCompany as table1
		INNER JOIN @tblData as table2
		ON (table1.strName=table2.strName)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblCoOpts]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[AddUpdatetblCoOpts] @tblData    
AS    
CoOptsTableType READONLY AS    
BEGIN    
 UPDATE tblCoOpts    
 SET bitReadReceipt = table2.bitReadReceipt    
  ,bitHighPriority = table2.bitHighPriority    
  ,bitSendDirect = table2.bitSendDirect    
  ,intRecPeriod1 = table2.intRecPeriod1    
  ,intRecPeriod2 = table2.intRecPeriod2    
  ,intRecPeriod3 = table2.intRecPeriod3    
  ,intPayPeriod1 = table2.intPayPeriod1    
  ,intPayPeriod2 = table2.intPayPeriod2    
  ,intPayPeriod3 = table2.intPayPeriod3    
  ,strAutoINV = table2.strAutoINV    
  ,strAutoSO = table2.strAutoSO    
  ,strAutoQU = table2.strAutoQU    
  ,strAutoPI = table2.strAutoPI    
  ,strAutoPO = table2.strAutoPO    
  ,intReqPay = table2.intReqPay    
  ,intReqRec = table2.intReqRec    
  ,bitTransFuture = table2.bitTransFuture    
  ,bitSessionFuture = table2.bitSessionFuture    
  ,bitSMSAuto = table2.bitSMSAuto    
  ,butAutoSMSQu = table2.butAutoSMSQu    
  ,strAutoSMSQu = table2.strAutoSMSQu    
  ,bitAutoSMSSO = table2.bitAutoSMSSO    
  ,strAutoSMSSO = table2.strAutoSMSSO    
  ,bitAutoSMSInv = table2.bitAutoSMSInv    
  ,strAutoSMSInv = table2.strAutoSMSInv    
  ,bitInvRec = table2.bitInvRec    
  ,bitInvPay = table2.bitInvPay    
  ,intCashStatus = table2.intCashStatus    
  ,bitNegInv = table2.bitNegInv    
  ,intRefChk = table2.intRefChk    
  ,intRefReq = table2.intRefReq    
  ,bitSortInvDesc = table2.bitSortInvDesc    
  ,strAutoRQ = table2.strAutoRQ    
  ,bitUseCredit = table2.bitUseCredit    
  ,decCreditAmt = table2.decCreditAmt    
  ,bitSendOutlook = table2.bitSendOutlook    
  ,strEmailFrom = table2.strEmailFrom    
  ,strSMTP = table2.strSMTP    
  ,bitSMTPAuth = table2.bitSMTPAuth    
  ,strSMTPUser = table2.strSMTPUser    
  ,strSMTPPwd = table2.strSMTPPwd    
  ,bitPCJournal = table2.bitPCJournal    
  ,bitPCInvAdj = table2.bitPCInvAdj    
  ,bitPCSales = table2.bitPCSales    
  ,bitPCPurch = table2.bitPCPurch    
  ,bitJELinked = table2.bitJELinked    
  ,bitInvSessOnly = table2.bitInvSessOnly    
  ,decRecIntRate = table2.decRecIntRate    
  ,bitBlockDesc = table2.bitBlockDesc    
  ,bitBlockUnit = table2.bitBlockUnit    
  ,bitQSUseMarkup = table2.bitQSUseMarkup    
  ,decQSPct = table2.decQSPct    
  ,bitBlockDescP = table2.bitBlockDescP    
  ,bitBlockUnitP = table2.bitBlockUnitP    
  ,intGLMode = table2.intGLMode    
  ,intSpellMode = table2.intSpellMode    
  ,intProcessDocs = table2.intProcessDocs    
  ,bitCreditRequestActive = table2.bitCreditRequestActive    
  ,intProcessDocsP = table2.intProcessDocsP    
  ,bitAutoApplyCreditNotes = table2.bitAutoApplyCreditNotes    
  ,bitUDFinCat = table2.bitUDFinCat    
  ,intCNReasonReq = table2.intCNReasonReq    
  ,bitVendStockCodes = table2.bitVendStockCodes    
  ,intSalesPersonReq = table2.intSalesPersonReq    
  ,bitItemNumConvActive = table2.bitItemNumConvActive    
  ,intPDepartmentReq = table2.intPDepartmentReq    
  ,intRDepartmentReq = table2.intRDepartmentReq    
  ,bitARSplitPmtOnCOD = table2.bitARSplitPmtOnCOD    
  ,intAPPartDeliveries = table2.intAPPartDeliveries    
  ,intAPOverReceiving = table2.intAPOverReceiving    
  ,bitBlockOrigInvReprint = table2.bitBlockOrigInvReprint    
  ,bitGRVBlindReceive = table2.bitGRVBlindReceive    
  ,intAPRefChk = table2.intAPRefChk    
  ,intAPRefReq = table2.intAPRefReq    
  ,bitARAutoPrintInv = table2.bitARAutoPrintInv    
  ,intAPAuthReq = table2.intAPAuthReq    
  ,intARAuthReq = table2.intARAuthReq    
  ,intPOSAuthReq = table2.intPOSAuthReq    
  ,bitDSValidateDailySales = table2.bitDSValidateDailySales    
  ,bitARClearDocs = table2.bitARClearDocs    
  ,bitAPClearDocs = table2.bitAPClearDocs    
  ,bitAPAutoPrintInv = table2.bitAPAutoPrintInv    
  ,bitWHAutoPrintInv = table2.bitWHAutoPrintInv    
  ,bitDSAutoPrintInv = table2.bitDSAutoPrintInv    
  ,bitStockTakeMethod = table2.bitStockTakeMethod    
  ,intARCreateReturn = table2.intARCreateReturn    
  ,intAPCreateReturn = table2.intAPCreateReturn    
  ,bitARAllowProcessTotal = table2.bitARAllowProcessTotal    
  ,bitAPAllowProcessTotal = table2.bitAPAllowProcessTotal    
  ,bitPCRecPayJnl = table2.bitPCRecPayJnl    
  ,bitProjSales = table2.bitProjSales    
  ,bitProjFHQuotes = table2.bitProjFHQuotes    
  ,bitProjPurch = table2.bitProjPurch    
  ,bitProjGRV = table2.bitProjGRV    
  ,bitProjAllowPostInactive = table2.bitProjAllowPostInactive    
  ,intDefUpdateBank = table2.intDefUpdateBank    
  ,bitProjRecPayJnl = table2.bitProjRecPayJnl    
  ,bitAPPmtRequiresApprovals = table2.bitAPPmtRequiresApprovals    
  ,bitCurrencyHasDecimal = table2.bitCurrencyHasDecimal    
  ,intBlockOnOverdueINV = table2.intBlockOnOverdueINV    
  ,bitFHQRequireApproval = table2.bitFHQRequireApproval    
  ,intRecCodeConvention = table2.intRecCodeConvention    
  ,intRecCodeConSeg1CharCount = table2.intRecCodeConSeg1CharCount    
  ,strRecCodeConSeg1CharType = table2.strRecCodeConSeg1CharType    
  ,intRecCodeConSeg2CharCount = table2.intRecCodeConSeg2CharCount    
  ,strRecCodeConSeg2CharType = table2.strRecCodeConSeg2CharType    
  ,intPayCodeConvention = table2.intPayCodeConvention    
  ,intPayCodeConSeg1CharCount = table2.intPayCodeConSeg1CharCount    
  ,strPayCodeConSeg1CharType = table2.strPayCodeConSeg1CharType    
  ,intPayCodeConSeg2CharCount = table2.intPayCodeConSeg2CharCount    
  ,strPayCodeConSeg2CharType = table2.strPayCodeConSeg2CharType    
  ,strFHQPricelist = table2.strFHQPricelist    
  ,bitWithholdingTaxAR = table2.bitWithholdingTaxAR    
  ,bitWithholdingTaxAP = table2.bitWithholdingTaxAP    
  ,bitInvImgOnSI = table2.bitInvImgOnSI    
  ,bitInvImgOnSO = table2.bitInvImgOnSO    
  ,bitInvImgOnSQ = table2.bitInvImgOnSQ    
  ,bitInvImgOnSFHQ = table2.bitInvImgOnSFHQ    
  ,bitInvAdjustWHTransferCost = table2.bitInvAdjustWHTransferCost    
  ,bitProjJournal = table2.bitProjJournal    
  ,bitInvImgOnCR = table2.bitInvImgOnCR    
  ,intReportTimeout = table2.intReportTimeout    
  ,intReportTimeoutVPN = table2.intReportTimeoutVPN    
  ,bitAutoInvokeGRV = table2.bitAutoInvokeGRV    
  ,bitPCAllocPerc = table2.bitPCAllocPerc    
  ,bitARIncludeOpenOrdersInCreditLimit = table2.bitARIncludeOpenOrdersInCreditLimit    
  ,bitARSalesPersonLevel = table2.bitARSalesPersonLevel    
  ,bitInvImgOnPI = table2.bitInvImgOnPI    
  ,bitInvImgOnPO = table2.bitInvImgOnPO    
  ,bitInvImgOnPQ = table2.bitInvImgOnPQ    
  ,bitDisableAirtime = table2.bitDisableAirtime    
  ,intAirProvider = table2.intAirProvider    
  ,strAirURL = table2.strAirURL    
  ,strAirAccNo = table2.strAirAccNo    
  ,strAirUsername = table2.strAirUsername    
  ,strAirPassword = table2.strAirPassword    
  ,strAirKey = table2.strAirKey    
  ,bitInvLotsOverUnder = table2.bitInvLotsOverUnder    
  ,bitSMTPRequireSSL = table2.bitSMTPRequireSSL    
  ,intSMTPPort = table2.intSMTPPort    
  ,bitInvExtDescOnSI = table2.bitInvExtDescOnSI    
  ,bitInvExtDescOnSO = table2.bitInvExtDescOnSO    
  ,bitInvExtDescOnSQ = table2.bitInvExtDescOnSQ    
  ,bitInvExtDescOnSFHQ = table2.bitInvExtDescOnSFHQ    
  ,bitInvExtDescOnCR = table2.bitInvExtDescOnCR    
  ,bitInvExtDescOnPI = table2.bitInvExtDescOnPI    
  ,bitInvExtDescOnPO = table2.bitInvExtDescOnPO    
  ,bitInvExtDescOnPQ = table2.bitInvExtDescOnPQ    
  ,bitARDefSP = table2.bitARDefSP    
  ,bitARDefDept = table2.bitARDefDept    
  ,bitAPDefDept = table2.bitAPDefDept    
  ,bitAirAllowDocumentCrediting = table2.bitAirAllowDocumentCrediting    
  ,bitCentersPOS = table2.bitCentersPOS    
  ,bitPOSEnableCenters = table2.bitPOSEnableCenters    
  ,bitPOSEnableUDF = table2.bitPOSEnableUDF    
  ,bitPOSEnableUpsell = table2.bitPOSEnableUpsell    
  ,bitARCompoundedInt = table2.bitARCompoundedInt    
  ,intGPCalcInvLevel = table2.intGPCalcInvLevel    
  ,intGPCalcLPP = table2.intGPCalcLPP    
  ,intOverCreditLimit = table2.intOverCreditLimit    
  ,intBlockOnOverdueORD = table2.intBlockOnOverdueORD    
  ,bitBlockOnOverdueORDConvert = table2.bitBlockOnOverdueORDConvert    
  ,bitOverCreditLimitConvert = table2.bitOverCreditLimitConvert    
  ,decCreditBlockSILimit = table2.decCreditBlockSILimit    
  ,decCreditBlockSOLimit = table2.decCreditBlockSOLimit    
  ,bitWHAutoAssignPT = table2.bitWHAutoAssignPT    
  ,bitProjDelAdvice = table2.bitProjDelAdvice    
  ,bitARDelAdvSO = table2.bitARDelAdvSO    
  ,bitAutoInvokeDA = table2.bitAutoInvokeDA    
  ,bitARShowPricesDAProcess = table2.bitARShowPricesDAProcess    
  ,bitARShowPricesDAPrint = table2.bitARShowPricesDAPrint    
  ,blnARRequestVAT = table2.blnARRequestVAT    
  ,decARMinValueForVAT = table2.decARMinValueForVAT    
  ,bitNegInvMovingAvg = table2.bitNegInvMovingAvg    
  ,bitAddSignature = table2.bitAddSignature    
  ,bitNonIntegrated = table2.bitNonIntegrated    
  ,bitNonIntegratedChanged = table2.bitNonIntegratedChanged    
  ,intDecimalQuantity = table2.intDecimalQuantity    
  ,bitManScaleRead = table2.bitManScaleRead    
  ,strManScaleFolder = table2.strManScaleFolder    
  ,bitManOverUnder = table2.bitManOverUnder    
  ,intManAuthReq = table2.intManAuthReq    
  ,bitAPToMDaP = table2.bitAPToMDaP    
  ,bitWHAutoPrintPT = table2.bitWHAutoPrintPT    
  ,bitWHAutoIssuePT = table2.bitWHAutoIssuePT    
  ,intGLRPJDepartmentReq = table2.intGLRPJDepartmentReq    
  ,bitPCInvIssReq = table2.bitPCInvIssReq    
  ,bitProjInvAdj = table2.bitProjInvAdj    
  ,bitProjInvIssReq = table2.bitProjInvIssReq    
  ,bitProjInvIntReq = table2.bitProjInvIntReq    
  ,blnPOApprovalsEnable = table2.blnPOApprovalsEnable    
  ,blnPOApprovalsDocLimitEnable = table2.blnPOApprovalsDocLimitEnable    
  ,blnPOApprovalsVenLimitEnable = table2.blnPOApprovalsVenLimitEnable    
  ,decPODefaultDocLimit = table2.decPODefaultDocLimit    
  ,decPODefaultVenLimit = table2.decPODefaultVenLimit    
  ,bitInvExtDescOnBRQ = table2.bitInvExtDescOnBRQ    
  ,bitInvImgOnBRQ = table2.bitInvImgOnBRQ    
  ,bitWHRecSerialLotNum = table2.bitWHRecSerialLotNum    
  ,bitManStandardCost = table2.bitManStandardCost    
  ,bitPurchCostVar = table2.bitPurchCostVar    
  ,bitWarnPurchOver = table2.bitWarnPurchOver    
  ,decWarnPurchOverPerc = table2.decWarnPurchOverPerc    
  ,intSOUnavailable = table2.intSOUnavailable    
  ,decDimensionFactor = table2.decDimensionFactor    
  ,bitActivateProcessingDocument = table2.bitActivateProcessingDocument    
  ,intDepreciationCalculationMethod = table2.intDepreciationCalculationMethod    
  ,strDimUnitOfMeasure = table2.strDimUnitOfMeasure    
  ,strGLAccountSegment = table2.strGLAccountSegment    
  ,intBlockOverCreditLimitINV = table2.intBlockOverCreditLimitINV    
  ,decBlockOverCreditLimitINV = table2.decBlockOverCreditLimitINV    
  ,decBlockOverCreditLimitSO = table2.decBlockOverCreditLimitSO    
  ,bitProjInvRepack = table2.bitProjInvRepack    
  ,blnPROApprovalsPO = table2.blnPROApprovalsPO    
  ,blnPROApprovalsPR = table2.blnPROApprovalsPR    
  ,bitCustStockCodes = table2.bitCustStockCodes    
  ,decSSPPercentage = table2.decSSPPercentage    
  ,intSSPMargMark = table2.intSSPMargMark    
  ,intSSPUpdate = table2.intSSPUpdate    
  ,intSSPRound = table2.intSSPRound    
  ,bitARReceiptsOnSalesOrder = table2.bitARReceiptsOnSalesOrder    
  ,bitARDropShipments = table2.bitARDropShipments    
  ,intAccrualProcess = table2.intAccrualProcess    
  ,bitCenterBM = table2.bitCenterBM    
  ,bitProjBM = table2.bitProjBM    
  ,bitManPromtekRead = table2.bitManPromtekRead    
  ,strManPromtekLoc = table2.strManPromtekLoc    
  ,bitAllowBin = table2.bitAllowBin    
  ,strCompCode = table2.strCompCode    
  ,strPalladiumFTPPath = table2.strPalladiumFTPPath    
  ,strPalladiumFTPUserID = table2.strPalladiumFTPUserID    
  ,strPalladiumFTPPassword = table2.strPalladiumFTPPassword    
  ,strPromtekFTPPath = table2.strPromtekFTPPath    
  ,strPromtekFTPUserID = table2.strPromtekFTPUserID    
  ,strPromtekFTPPassword = table2.strPromtekFTPPassword    
  ,intCBDefaultItem = table2.intCBDefaultItem    
  ,intPOSOfflinePeriod = table2.intPOSOfflinePeriod    
  ,bitAllowPOSOfflinePeriod = table2.bitAllowPOSOfflinePeriod    
  ,bitARLaybySO = table2.bitARLaybySO    
  ,strARLaybyPricelist = table2.strARLaybyPricelist    
  ,bitLaybyPriceList = table2.bitLaybyPriceList    
  ,strAutoLB = table2.strAutoLB    
  ,bitPOSAllowDeposits = table2.bitPOSAllowDeposits    
  ,bitEnablePOSSyncInterval =  table2.bitEnablePOSSyncInterval    
  ,intPOSSyncInterval  = table2.intPOSSyncInterval    
  ,bitRequireApprovalCustomerCreation  = table2.bitRequireApprovalCustomerCreation  
  ,bitESDEanbled = table2.bitESDEanbled  
  ,strESDCountry  = table2.strESDCountry
  ,bitBlockOrigReceiptReprint = table2.bitBlockOrigReceiptReprint
  ,bitPOSBlockOrigReceiptReprint = table2.bitPOSBlockOrigReceiptReprint
 FROM @tblData AS table2    
END  
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblCoOptsN]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblCoOptsN]    Script Date: 21-08-2018 10:13:15 ******/
CREATE  PROCEDURE [dbo].[AddUpdatetblCoOptsN]
     @tblData AS CoOptsNTableType READONLY
AS
BEGIN
UPDATE [dbo].[tblCoOptsN]
   SET [strStateProv] = table2.strStateProv
      ,[strPostal] = table2.strPostal
      ,[strBusinessNo] = table2.strBusinessNo
      ,[strCheque] = table2.strCheque
      ,[strCustomers] = table2.strCustomers
      ,[strVendors] = table2.strVendors
      ,[strRecord] = table2.strRecord
      ,[strOpen] = table2.strOpen
      ,[strVendInv] = table2.strVendInv
      ,[strVoucher] = table2.strVoucher
      ,[strDepreciationMethod1] = table2.strDepreciationMethod1
      ,[strDepreciationMethod2] = table2.strDepreciationMethod2
      ,[strDepreciationMethod3] = table2.strDepreciationMethod3
      ,[strDepreciationMethod4] = table2.strDepreciationMethod4
      ,[strDepreciationMethod5] = table2.strDepreciationMethod5
      ,[bitStateProvMandatory] = table2.bitStateProvMandatory
      ,[bitPostalMandatory] = table2.bitPostalMandatory
      ,[bitBusinessNoMandatory] = table2.bitBusinessNoMandatory
      ,[strContact] = table2.strContact
      ,[strContact2] = table2.strContact2
      ,[strBuyoutCostEdit] = table2.strBuyoutCostEdit
      ,[strUnitCost] = table2.strUnitCost
      ,[strAssetLocationLabel1] = table2.strAssetLocationLabel1
      ,[strAssetLocationLabel2] = table2.strAssetLocationLabel2
      ,[strAssetLocationLabel3] = table2.strAssetLocationLabel3
      ,[strRptProfitAfterTaxLabel] = table2.strRptProfitAfterTaxLabel
      ,[strRptProfitBeforeTaxLabel] = table2.strRptProfitBeforeTaxLabel
      ,[strRptGrossProfitLabel] = table2.strRptGrossProfitLabel
      ,[strRptOperatingProfitLabel] = table2.strRptOperatingProfitLabel
  FROM @tblData  as table2 
  
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblCountries]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblCountries]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblCountries] 
       @tblData AS CountriesTableType READONLY
AS
BEGIN

	BEGIN
   INSERT INTO  [tblCountries] 
	   (
	      strCountryCode,
			    strCountryName,
				strTelCode,
			    strDisplayName
	   ) 
	   SELECT  
	     	strCountryCode,
			    strCountryName,
				strTelCode,
			    strDisplayName
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblCountries WHERE strCountryCode=t.strCountryCode)
END

	BEGIN
	   UPDATE  [tblCountries] SET
		            strCountryCode = table2.strCountryCode,
					strCountryName =table2.strCountryName,
					strTelCode = table2.strTelCode,
					strDisplayName = table2.strDisplayName
					FROM tblCountries as table1
	INNER JOIN @tblData as table2
	 ON (table1.strCountryCode =table2.strCountryCode)
	END


END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblCreditNoteReasons]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblCreditNoteReasons]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblCreditNoteReasons]
      @tblData AS CreditNoteReasonsTableType READONLY

AS
BEGIN
	SET IDENTITY_INSERT tblCreditNoteReasons ON

	BEGIN
	   UPDATE  [tblCreditNoteReasons] SET
					strCNReasonCode = table2.strCNReasonCode,
					strCNReasonDesc =table2.strCNReasonDesc,
					bitInactive = table2.bitInactive 
	FROM tblCreditNoteReasons as table1
	INNER JOIN @tblData as table2
	ON (table1.strCNReasonCode=table2.strCNReasonCode)
	END


	BEGIN

	   INSERT INTO  [tblCreditNoteReasons] 
	   (
	        lngID, 
			strCNReasonCode,
			strCNReasonDesc,
			bitInactive   
	   ) 
	   SELECT
			lngID, 
			strCNReasonCode,
			strCNReasonDesc,
			bitInactive   
	   	  FROM @tblData  as t 
		  WHERE  NOT EXISTS (SELECT 1 FROM tblCreditNoteReasons WHERE strCNReasonCode=t.strCNReasonCode )

	END
	
	SET IDENTITY_INSERT tblCreditNoteReasons OFF
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblCurrency]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblCurrency]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblCurrency]
	    @tblData AS CurrencyTableType READONLY

AS
BEGIN
	BEGIN
	   INSERT INTO  [tblCurrency] 
	   (
	        strCurrency,
			strCurrName,
			strCurrSymbol,
			bitTrailingSymb,
			strThousSymb,
			strDecSymb,
			intDecimals,
			strCentsName,
			bitHome,
			bitUpdateMon,
			bitUpdateTue,
			bitUpdateWed,
			bitUpdateThu,
			bitUpdateFri,
			bitUpdateSat,
			bitUpdateSun,
			dteUpdateTime   
	   ) 
	   select
			 strCurrency,
			strCurrName,
			strCurrSymbol,
			bitTrailingSymb,
			strThousSymb,
			strDecSymb,
			intDecimals,
			strCentsName,
			bitHome,
			bitUpdateMon,
			bitUpdateTue,
			bitUpdateWed,
			bitUpdateThu,
			bitUpdateFri,
			bitUpdateSat,
			bitUpdateSun,
			dteUpdateTime   
				  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblCurrency WHERE strCurrency=t.strCurrency )
	END

	BEGIN
	   UPDATE  [tblCurrency] SET
	        strCurrency= table2.strCurrency,
			strCurrName = table2.strCurrName,
			strCurrSymbol = table2.strCurrSymbol,
			bitTrailingSymb = table2.bitTrailingSymb,
			strThousSymb = table2.strThousSymb,
			strDecSymb = table2.strDecSymb,
			intDecimals = table2.intDecimals,
			strCentsName = table2.strCentsName,
			bitHome = table2.bitHome,
			bitUpdateMon = table2.bitUpdateMon,
			bitUpdateTue = table2.bitUpdateTue,
			bitUpdateWed = table2.bitUpdateWed,
			bitUpdateThu = table2.bitUpdateThu,
			bitUpdateFri = table2.bitUpdateFri,
			bitUpdateSat = table2.bitUpdateSat,
			bitUpdateSun =  table2.bitUpdateSun,
			dteUpdateTime =  table2.dteUpdateTime 
			FROM tblCurrency as table1
	INNER JOIN @tblData as table2
	ON (table1.strCurrency=table2.strCurrency)
	END
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblCustomerCat]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblCustomerCat]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblCustomerCat]
	    @tblData AS CustomerCatTableType READONLY

AS
BEGIN
	BEGIN
			Insert into tblCustomerCat (strCustCategory,strDesc,bitInactive,bitIsHP,decISDefDep,decISDefIns,decISDefFinChrge,strInstallSaleFC,strInstallSaleTaxCode,decArrPenalty)
				SELECT strCustCategory,strDesc,bitInactive,bitIsHP,decISDefDep,decISDefIns,decISDefFinChrge,strInstallSaleFC,strInstallSaleTaxCode,decArrPenalty
				 FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblCustomerCat WHERE strCustCategory=t.strCustCategory)
	END
	
	BEGIN
	   UPDATE [dbo].tblCustomerCat SET strCustCategory=table2.strCustCategory,strDesc=table2.strDesc,bitInactive=table2.bitInactive,bitIsHP=table2.bitIsHP,decISDefDep=table2.decISDefDep,decISDefIns=table2.decISDefIns,decISDefFinChrge=table2.decISDefFinChrge,strInstallSaleFC=table2.strInstallSaleFC,strInstallSaleTaxCode=table2.strInstallSaleTaxCode,decArrPenalty=table2.decArrPenalty 
	    FROM tblCustomerCat as table1
	INNER JOIN @tblData as table2
	ON (table1.strCustCategory=table2.strCustCategory)
	END
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblCustomers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblCustomers]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblCustomers]
@tblData AS CustomersTableType READONLY
AS
BEGIN
	BEGIN
		INSERT INTO tblCustomers (
			strCustName
			,strStreet1
			,strStreet2
			,strCity
			,strProvince
			,strPostal
			,strPhone
			,strCellPhone
			,strFax
			,strEmail
			,strVAT
			,strCK
			,decBalDue
			,decYTDPurch
			,decOpenOrders
			,intDelMethod
			,bitCreditCtrl
			,decCreditLimit
			,bitCreditHold
			,bitInactive
			,dteUpdated
			,strContact
			,strField1
			,strField2
			,strField3
			,strField4
			,strField5
			,strField6
			,strTaxCode
			,dteSince
			,strNotes
			,strPricelist
			,[uID]
			,decIntRate
			,strCustDesc
			,strCountry
			,strTerm
			,intDept
			,strCurrency
			,decBalDueF
			,decYTDPurchF
			,decOpenOrdersF
			,strField7
			,strField8
			,strField9
			,strField10
			,strField11
			,strField12
			,strEmailInv
			,strEmailStat
			,strCustCategory
			,strCountryCode
			,strTenderType
			,decTradeDiscPerc
			,decCreditLimitOverride
			,dteCreditLimitExpiryDate
			,intPartialBackorders
			,bitWithholdTax
			,strWithholdTaxCode
			,strINVFormDocName
			,strORDFormDocName
			,bitMatrixType
			,strMatrixType
			,strParentCust
			,strValueBased
			,bitInvWorkflowNew
			,bitInvWorkflowDA
			,bitInvWorkflowSO
			,strWebsite
			,strRSTTerminalSync
			,strContact2
			,strSuburb
			,strEmailOso
			,intNAPrintMethod
			,strDelMethodCode
			,imgPicture
			,strCustomerType
			,strCustTPIN
			,strTransactionType
			)
		SELECT strCustName
			,strStreet1
			,strStreet2
			,strCity
			,strProvince
			,strPostal
			,strPhone
			,strCellPhone
			,strFax
			,strEmail
			,strVAT
			,strCK
			,decBalDue
			,decYTDPurch
			,decOpenOrders
			,intDelMethod
			,bitCreditCtrl
			,decCreditLimit
			,bitCreditHold
			,bitInactive
			,dteUpdated
			,strContact
			,strField1
			,strField2
			,strField3
			,strField4
			,strField5
			,strField6
			,strTaxCode
			,dteSince
			,strNotes
			,strPricelist
			,[uID]
			,decIntRate
			,strCustDesc
			,strCountry
			,strTerm
			,intDept
			,strCurrency
			,decBalDueF
			,decYTDPurchF
			,decOpenOrdersF
			,strField7
			,strField8
			,strField9
			,strField10
			,strField11
			,strField12
			,strEmailInv
			,strEmailStat
			,strCustCategory
			,strCountryCode
			,strTenderType
			,decTradeDiscPerc
			,decCreditLimitOverride
			,dteCreditLimitExpiryDate
			,intPartialBackorders
			,bitWithholdTax
			,strWithholdTaxCode
			,strINVFormDocName
			,strORDFormDocName
			,bitMatrixType
			,strMatrixType
			,strParentCust
			,strValueBased
			,bitInvWorkflowNew
			,bitInvWorkflowDA
			,bitInvWorkflowSO
			,strWebsite
			,strRSTTerminalSync
			,strContact2
			,strSuburb
			,strEmailOso
			,intNAPrintMethod
			,strDelMethodCode
			,imgPicture
			,strCustomerType
			,strCustTPIN
			,strTransactionType
		FROM @tblData AS t
		WHERE NOT EXISTS (
				SELECT 1
				FROM tblCustomers
				WHERE strCustName = t.strCustName
				)
	END

	BEGIN
		UPDATE [dbo].tblCustomers
		SET strCustName = table2.strCustName
			,strStreet1 = table2.strStreet1
			,strStreet2 = table2.strStreet2
			,strCity = table2.strCity
			,strProvince = table2.strProvince
			,strPostal = table2.strPostal
			,strPhone = table2.strPhone
			,strCellPhone = table2.strCellPhone
			,strFax = table2.strFax
			,strEmail = table2.strEmail
			,strVAT = table2.strVAT
			,strCK = table2.strCK
			,decBalDue = table2.decBalDue
			,decYTDPurch = table2.decYTDPurch
			,decOpenOrders = table2.decOpenOrders
			,intDelMethod = table2.intDelMethod
			,bitCreditCtrl = table2.bitCreditCtrl
			,decCreditLimit = table2.decCreditLimit
			,bitCreditHold = table2.bitCreditHold
			,bitInactive = table2.bitInactive
			,dteUpdated = table2.dteUpdated
			,strContact = table2.strContact
			,strField1 = table2.strField1
			,strField2 = table2.strField2
			,strField3 = table2.strField3
			,strField4 = table2.strField4
			,strField5 = table2.strField5
			,strField6 = table2.strField6
			,strTaxCode = table2.strTaxCode
			,dteSince = table2.dteSince
			,strNotes = table2.strNotes
			,strPricelist = table2.strPricelist
			,[uID] = table2.uID
			,decIntRate = table2.decIntRate
			,strCustDesc = table2.strCustDesc
			,strCountry = table2.strCountry
			,strTerm = table2.strTerm
			,intDept = table2.intDept
			,strCurrency = table2.strCurrency
			,decBalDueF = table2.decBalDueF
			,decYTDPurchF = table2.decYTDPurchF
			,decOpenOrdersF = table2.decOpenOrdersF
			,strField7 = table2.strField7
			,strField8 = table2.strField8
			,strField9 = table2.strField9
			,strField10 = table2.strField10
			,strField11 = table2.strField11
			,strField12 = table2.strField12
			,strEmailInv = table2.strEmailInv
			,strEmailStat = table2.strEmailStat
			,strCustCategory = table2.strCustCategory
			,strCountryCode = table2.strCountryCode
			,strTenderType = table2.strTenderType
			,decTradeDiscPerc = table2.decTradeDiscPerc
			,decCreditLimitOverride = table2.decCreditLimitOverride
			,dteCreditLimitExpiryDate = table2.dteCreditLimitExpiryDate
			,intPartialBackorders = table2.intPartialBackorders
			,bitWithholdTax = table2.bitWithholdTax
			,strWithholdTaxCode = table2.strWithholdTaxCode
			,strINVFormDocName = table2.strINVFormDocName
			,strORDFormDocName = table2.strORDFormDocName
			,bitMatrixType = table2.bitMatrixType
			,strMatrixType = table2.strMatrixType
			,strParentCust = table2.strParentCust
			,strValueBased = table2.strValueBased
			,bitInvWorkflowNew = table2.bitInvWorkflowNew
			,bitInvWorkflowDA = table2.bitInvWorkflowDA
			,bitInvWorkflowSO = table2.bitInvWorkflowSO
			,strWebsite = table2.strWebsite
			,strRSTTerminalSync = table2.strRSTTerminalSync
			,strContact2 = table2.strContact2
			,strSuburb = table2.strSuburb
			,strEmailOso = table2.strEmailOso
			,intNAPrintMethod = table2.intNAPrintMethod
			,strDelMethodCode = table2.strDelMethodCode
			,imgPicture = table2.imgPicture
			,strCustomerType = table2.strCustomerType
			,strCustTPIN = table2.strCustTPIN
			,strTransactionType = table2.strTransactionType
		FROM tblCustomers AS table1
		INNER JOIN @tblData AS table2 ON (table1.strCustName = table2.strCustName)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblDeliveryMethods]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblDeliveryMethods]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblDeliveryMethods]
      @tblData AS DeliveryMethodsTableType READONLY
AS
BEGIN
	BEGIN
	   INSERT INTO  [tblDeliveryMethods] 
	   (
	        strDelMethodCode,
			strDelMethodDesc,
			strAddInfo,
			strField1,
			strField2,
			strField3,
			strField4,
			strField5,
			strField6,
			bitInactive,
			bitEnableEnviron,
			strCourierOpt,
			bitInvoiceAsWaybill,
			strCourierSenderAccNo,
			strCourierSenderContactPerson,
			strCourierSenderCompany,
			strCourierSenderAdd1,
			strCourierSenderAdd4,
			strCourierSenderAdd5,
			strCourierSenderWebsite,
			strCourierSenderWorkTel,
			strCourierServiceType,
			strCourierStoreCode,
			bitSalesInvoice,
			bitSalesOrder,
			bitMethod,
			strCourierPrefix,
			bitDisplay
	   ) SELECT
		    strDelMethodCode,
			strDelMethodDesc,
			strAddInfo,
			strField1,
			strField2,
			strField3,
			strField4,
			strField5,
			strField6,
			bitInactive,
			bitEnableEnviron,
			strCourierOpt,
			bitInvoiceAsWaybill,
			strCourierSenderAccNo,
			strCourierSenderContactPerson,
			strCourierSenderCompany,
			strCourierSenderAdd1,
			strCourierSenderAdd4,
			strCourierSenderAdd5,
			strCourierSenderWebsite,
			strCourierSenderWorkTel,
			strCourierServiceType,
			strCourierStoreCode,
			bitSalesInvoice,
			bitSalesOrder,
			bitMethod,
			strCourierPrefix,
			bitDisplay
	   FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblDeliveryMethods WHERE strDelMethodCode=t.strDelMethodCode)
	END
	
	BEGIN
	   UPDATE  [tblDeliveryMethods] SET
			strDelMethodCode =   table2.strDelMethodCode,
			strDelMethodDesc = table2.strDelMethodDesc,
			strAddInfo =	 table2.strAddInfo,
			strField1=	 table2.strField1,
			strField2	=	 table2.strField2,
			strField3	=  table2.strField3,
			strField4 =	 table2.strField4,
			strField5 =	 table2.strField5,
			strField6 =	  table2.strField6,
			bitInactive =	 table2.bitInactive,
			bitEnableEnviron =  table2.bitEnableEnviron,
			strCourierOpt =	 table2.strCourierOpt,
			bitInvoiceAsWaybill =	 table2.bitInvoiceAsWaybill,
			strCourierSenderAccNo =	 table2.strCourierSenderAccNo,
			strCourierSenderContactPerson =	 table2.strCourierSenderContactPerson,
			strCourierSenderCompany =	 table2.strCourierSenderCompany,
			strCourierSenderAdd1 =	 table2.strCourierSenderAdd1,
			strCourierSenderAdd4 =	 table2.strCourierSenderAdd4,
			strCourierSenderAdd5 =	 table2.strCourierSenderAdd5,
			strCourierSenderWebsite =	 table2.strCourierSenderWebsite,
			strCourierSenderWorkTel =	 table2.strCourierSenderWorkTel,
			strCourierServiceType =	 table2.strCourierServiceType,
			strCourierStoreCode =	 table2.strCourierStoreCode,
			bitSalesInvoice =	 table2.bitSalesInvoice,
			bitSalesOrder =	 table2.bitSalesOrder,
			bitMethod =	 table2.bitMethod,
			strCourierPrefix =	 table2.strCourierPrefix,
			bitDisplay =	 table2.bitDisplay
	FROM tblDeliveryMethods as table1
	INNER JOIN @tblData as table2
	ON (table1.strDelMethodCode=table2.strDelMethodCode)
	END
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblDepartments]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblDepartments]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblDepartments]
       @tblData AS DepartmentsTableType READONLY

AS
BEGIN
	BEGIN
	   INSERT INTO  [tblDepartments] 
	   (
	           intDept,
			   strDesc, 
			bitInactive 
	   )SELECT
		         intDept,
			   strDesc, 
			bitInactive  
			 FROM @tblData  as t   
			  WHERE  NOT EXISTS (SELECT 1 FROM tblDepartments WHERE intDept=t.intDept )
	END
	
	BEGIN
	   UPDATE  [tblDepartments] SET
			    intDept = table2.intDept,
			   strDesc = table2.strDesc, 
			bitInactive = table2.bitInactive
	  FROM tblDepartments as table1
	INNER JOIN @tblData as table2
		ON (table1.intDept=table2.intDept)
	END
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblDimensionProfiles]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdatetblDimensionProfiles] (
	@strDimProCode NVARCHAR(40) = NULL
	,@strDescription NVARCHAR(200) = NULL
	,@bitAutoInvoke BIT = NULL
	,@intRoundingDecimals INT = NULL
	,@bitInactive BIT = NULL
	)
AS
BEGIN
	IF (
			SELECT count(*) AS Counted
			FROM [tblDimensionProfiles]
			) <> 0
	BEGIN
		UPDATE [tblDimensionProfiles]
		SET [strDimProCode] = @strDimProCode
			,[strDescription] = @strDescription
			,[bitAutoInvoke] = @bitAutoInvoke
			,[intRoundingDecimals] = @intRoundingDecimals
			,[bitInactive] = @bitInactive
	END
	ELSE
	BEGIN
		INSERT INTO [tblDimensionProfiles] (
			[strDimProCode]
			,[strDescription]
			,[bitAutoInvoke]
			,[intRoundingDecimals]
			,[bitInactive]
			)
		VALUES (
			@strDimProCode
			,@strDescription
			,@bitAutoInvoke
			,@intRoundingDecimals
			,@bitInactive
			)

		SELECT SCOPE_IDENTITY()
	END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblDimensionProfilesNew]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblDimensionProfilesNew]    Script Date: 2020-05-26 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblDimensionProfilesNew]
    @tblData AS DimensionProfilesTableType READONLY
AS
BEGIN

BEGIN
	UPDATE  [dbo].[tblDimensionProfiles] SET
            [strDimProCode] = table2.[strDimProCode]
           ,[strDescription] =table2.[strDescription]
           ,[bitAutoInvoke] =table2.[bitAutoInvoke]
           ,[intRoundingDecimals] = table2.[intRoundingDecimals]
           ,[bitInactive] = table2.[bitInactive]
	FROM tblDimensionProfiles as table1
	INNER JOIN @tblData as table2
	ON (table1.strDimProCode=table2.strDimProCode)
END

BEGIN
   INSERT INTO  [dbo].[tblDimensionProfiles]
	   (
	     		   [strDimProCode]
           ,[strDescription]
           ,[bitAutoInvoke]
           ,[intRoundingDecimals]
           ,[bitInactive]
	   ) 
	   SELECT  
	        [strDimProCode]
           ,[strDescription]
           ,[bitAutoInvoke]
           ,[intRoundingDecimals]
           ,[bitInactive]
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblDimensionProfiles WHERE strDimProCode=t.strDimProCode)
END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblDimProLines]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdatetblDimProLines] (
	@intLineNo INT = NULL
	,@strDimProCode NVARCHAR(40) = NULL
	,@strLineDesc NVARCHAR(200) = NULL
	,@decDefaultValue MONEY = NULL
	,@bitReadOnly BIT = NULL
	,@bitVisible BIT = NULL
	)
AS
BEGIN
	IF (
			SELECT count(*) AS Counted
			FROM [tblDimProLines]
			) <> 0
	BEGIN
		UPDATE [tblDimProLines]
		SET [intLineNo] = @intLineNo
			,[strDimProCode] = @strDimProCode
			,[strLineDesc] = @strLineDesc
			,[decDefaultValue] = @decDefaultValue
			,[bitReadOnly] = @bitReadOnly
			,[bitVisible] = @bitVisible
	END
	ELSE
	BEGIN
		INSERT INTO [tblDimProLines] (
			[intLineNo]
			,[strDimProCode]
			,[strLineDesc]
			,[decDefaultValue]
			,[bitReadOnly]
			,[bitVisible]
			)
		VALUES (
			@intLineNo
			,@strDimProCode
			,@strLineDesc
			,@decDefaultValue
			,@bitReadOnly
			,@bitVisible
			)

		SELECT SCOPE_IDENTITY()
	END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblDimProLinesNew]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblDimProLinesNew]    Script Date: 2020-05-26 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblDimProLinesNew]
    @tblData AS DimProLinesTableType READONLY
AS
BEGIN

BEGIN
	UPDATE  [dbo].[tblDimProLines] SET
            [intLineNo] = table2.intLineNo
           ,[strDimProCode] = table2.strDimProCode
           ,[strLineDesc] = table2.strLineDesc
           ,[decDefaultValue] = table2.decDefaultValue
           ,[bitReadOnly] = table2.bitReadOnly
           ,[bitVisible] = table2.bitVisible
	FROM tblDimProLines as table1
	INNER JOIN @tblData as table2
	ON (table1.intLineNo=table2.intLineNo and table1.strDimProCode = table2.strDimProCode)
END

BEGIN
   INSERT INTO  [dbo].[tblDimProLines]
	   (
	      [intLineNo]
           ,[strDimProCode]
           ,[strLineDesc]
           ,[decDefaultValue]
           ,[bitReadOnly]
           ,[bitVisible]
	   ) 
	   SELECT  
	     	[intLineNo]
           ,[strDimProCode]
           ,[strLineDesc]
           ,[decDefaultValue]
           ,[bitReadOnly]
           ,[bitVisible] 
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblDimProLines WHERE intLineNo=t.intLineNo and strDimProCode = t.strDimProCode)
END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblDiscountMatrix]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblDiscountMatrix]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblDiscountMatrix]
	    @tblData AS DiscountMatrixTableType READONLY
 
AS
BEGIN
   TRUNCATE TABLE tblDiscountMatrix

   	INSERT INTO tblDiscountMatrix (strCustCategory,strInvCategory,decDiscount)
	SELECT strCustCategory,strInvCategory,decDiscount 	  FROM @tblData  as t 

END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInv]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[AddUpdatetblInv] 
(@strPartNumber nvarchar(50) = NULL ,
@strDesc nvarchar(500) = NULL ,
@intType tinyint = NULL ,
@strCategory nvarchar(20) = NULL ,
@intExpAcct nvarchar(30) = NULL ,
@decCostOnPO money = NULL ,
@bitUseLPPOnPO bit = NULL ,
@intReorderQty int = NULL ,
@strBuyUnit nvarchar(15) = NULL ,
@strStockUnit nvarchar(15) = NULL ,
@decBuyToStock smallmoney = NULL ,
@bitAllowPriceChg bit = NULL ,
@dteDateLastSale smalldatetime = NULL ,
@dteLastPurchase smalldatetime = NULL ,
@decLastPPUnit money = NULL ,
@dteLastUpdated smalldatetime = NULL ,
@bitUseBOM bit = NULL ,
@intBOMQty int = NULL ,
@strAddInfo nvarchar(200) = NULL ,
@bitInactive bit = NULL ,
@decSumAvail money = NULL ,
@decSumAlloc money = NULL ,
@decSumOnHand money = NULL ,
@decSumValue money = NULL ,
@decSumOnOrder money = NULL ,
@decSumOpenQty money = NULL ,
@decSumOpenValue money = NULL ,
@decSumValYearStart money = NULL ,
@decSumQtyYearStart money = NULL ,
@decSumAmtSoldYTD money = NULL ,
@decSumAmtSoldLY money = NULL ,
@decSumQtySoldYTD money = NULL ,
@decSumQtySoldLY money = NULL ,
@decSumCOGSYTD money = NULL ,
@decSumCOGSLY money = NULL ,
@intSumNumTransYTD bigint = NULL ,
@intSumNumTransLY bigint = NULL ,
@bitAutoBuild bit = NULL ,
@strField1 nvarchar(100) = NULL ,
@strField2 nvarchar(100) = NULL ,
@strField3 nvarchar(100) = NULL ,
@strField4 nvarchar(100) = NULL ,
@strField5 nvarchar(100) = NULL ,
@strField6 nvarchar(100) = NULL ,
@strBarCode nvarchar(300) = NULL ,
@decStandardCost money = NULL ,
@bitItemNumConvUsed bit = NULL ,
@strSellUnit nvarchar(15) = NULL ,
@strSellStockUnit nvarchar(15) = NULL ,
@decSellFromStock smallmoney = NULL ,
@strItemSegment1 nvarchar(50) = NULL ,
@strItemSegment2 nvarchar(50) = NULL ,
@strItemSegment3 nvarchar(50) = NULL ,
@strItemSegment4 nvarchar(50) = NULL ,
@strInvNumConv nvarchar(50) = NULL ,
@bitInvSerialType bit = NULL ,
@strInvSerialType nvarchar(20) = NULL ,
@decRepairCharge money = NULL ,
@strBarCode2 nvarchar(300) = NULL ,
@bitVoucherEnabled bit = NULL ,
@strVoucherCode nvarchar(50) = NULL ,
@decDefSaleQty money = NULL ,
@strExtendedDesc nvarchar(max) = NULL ,
@bitInvExtDescOnSI bit = NULL ,
@bitInvExtDescOnSO bit = NULL ,
@bitInvExtDescOnSQ bit = NULL ,
@bitInvExtDescOnSFHQ bit = NULL ,
@bitInvExtDescOnCR bit = NULL ,
@bitInvExtDescOnPI bit = NULL ,
@bitInvExtDescOnPO bit = NULL ,
@bitInvExtDescOnPQ bit = NULL ,
@bitWebstoreItem bit = NULL ,
@bitInvExtDescOnBRQ bit = NULL ,
@decSumManuf money = NULL )
 As Begin
If (Select count(*) as Counted  from [tblInv]) <> 0
Begin
 Update [tblInv] set 
[strPartNumber] = @strPartNumber,
[strDesc] = @strDesc,
[intType] = @intType,
[strCategory] = @strCategory,
[intExpAcct] = @intExpAcct,
[decCostOnPO] = @decCostOnPO,
[bitUseLPPOnPO] = @bitUseLPPOnPO,
[intReorderQty] = @intReorderQty,
[strBuyUnit] = @strBuyUnit,
[strStockUnit] = @strStockUnit,
[decBuyToStock] = @decBuyToStock,
[bitAllowPriceChg] = @bitAllowPriceChg,
[dteDateLastSale] = @dteDateLastSale,
[dteLastPurchase] = @dteLastPurchase,
[decLastPPUnit] = @decLastPPUnit,
[dteLastUpdated] = @dteLastUpdated,
[bitUseBOM] = @bitUseBOM,
[intBOMQty] = @intBOMQty,
[strAddInfo] = @strAddInfo,
[bitInactive] = @bitInactive,
[decSumAvail] = @decSumAvail,
[decSumAlloc] = @decSumAlloc,
[decSumOnHand] = @decSumOnHand,
[decSumValue] = @decSumValue,
[decSumOnOrder] = @decSumOnOrder,
[decSumOpenQty] = @decSumOpenQty,
[decSumOpenValue] = @decSumOpenValue,
[decSumValYearStart] = @decSumValYearStart,
[decSumQtyYearStart] = @decSumQtyYearStart,
[decSumAmtSoldYTD] = @decSumAmtSoldYTD,
[decSumAmtSoldLY] = @decSumAmtSoldLY,
[decSumQtySoldYTD] = @decSumQtySoldYTD,
[decSumQtySoldLY] = @decSumQtySoldLY,
[decSumCOGSYTD] = @decSumCOGSYTD,
[decSumCOGSLY] = @decSumCOGSLY,
[intSumNumTransYTD] = @intSumNumTransYTD,
[intSumNumTransLY] = @intSumNumTransLY,
[bitAutoBuild] = @bitAutoBuild,
[strField1] = @strField1,
[strField2] = @strField2,
[strField3] = @strField3,
[strField4] = @strField4,
[strField5] = @strField5,
[strField6] = @strField6,
[strBarCode] = @strBarCode,
[decStandardCost] = @decStandardCost,
[bitItemNumConvUsed] = @bitItemNumConvUsed,
[strSellUnit] = @strSellUnit,
[strSellStockUnit] = @strSellStockUnit,
[decSellFromStock] = @decSellFromStock,
[strItemSegment1] = @strItemSegment1,
[strItemSegment2] = @strItemSegment2,
[strItemSegment3] = @strItemSegment3,
[strItemSegment4] = @strItemSegment4,
[strInvNumConv] = @strInvNumConv,
[bitInvSerialType] = @bitInvSerialType,
[strInvSerialType] = @strInvSerialType,
[decRepairCharge] = @decRepairCharge,
[strBarCode2] = @strBarCode2,
[bitVoucherEnabled] = @bitVoucherEnabled,
[strVoucherCode] = @strVoucherCode,
[decDefSaleQty] = @decDefSaleQty,
[strExtendedDesc] = @strExtendedDesc,
[bitInvExtDescOnSI] = @bitInvExtDescOnSI,
[bitInvExtDescOnSO] = @bitInvExtDescOnSO,
[bitInvExtDescOnSQ] = @bitInvExtDescOnSQ,
[bitInvExtDescOnSFHQ] = @bitInvExtDescOnSFHQ,
[bitInvExtDescOnCR] = @bitInvExtDescOnCR,
[bitInvExtDescOnPI] = @bitInvExtDescOnPI,
[bitInvExtDescOnPO] = @bitInvExtDescOnPO,
[bitInvExtDescOnPQ] = @bitInvExtDescOnPQ,
[bitWebstoreItem] = @bitWebstoreItem,
[bitInvExtDescOnBRQ] = @bitInvExtDescOnBRQ,
[decSumManuf] = @decSumAlloc
End
Else
Begin
 Insert Into [tblInv] (
[strPartNumber],
[strDesc],
[intType],
[strCategory],
[intExpAcct],
[decCostOnPO],
[bitUseLPPOnPO],
[intReorderQty],
[strBuyUnit],
[strStockUnit],
[decBuyToStock],
[bitAllowPriceChg],
[dteDateLastSale],
[dteLastPurchase],
[decLastPPUnit],
[dteLastUpdated],
[bitUseBOM],
[intBOMQty],
[strAddInfo],
[bitInactive],
[decSumAvail],
[decSumAlloc],
[decSumOnHand],
[decSumValue],
[decSumOnOrder],
[decSumOpenQty],
[decSumOpenValue],
[decSumValYearStart],
[decSumQtyYearStart],
[decSumAmtSoldYTD],
[decSumAmtSoldLY],
[decSumQtySoldYTD],
[decSumQtySoldLY],
[decSumCOGSYTD],
[decSumCOGSLY],
[intSumNumTransYTD],
[intSumNumTransLY],
[bitAutoBuild],
[strField1],
[strField2],
[strField3],
[strField4],
[strField5],
[strField6],
[strBarCode],
[decStandardCost],
[bitItemNumConvUsed],
[strSellUnit],
[strSellStockUnit],
[decSellFromStock],
[strItemSegment1],
[strItemSegment2],
[strItemSegment3],
[strItemSegment4],
[strInvNumConv],
[bitInvSerialType],
[strInvSerialType],
[decRepairCharge],
[strBarCode2],
[bitVoucherEnabled],
[strVoucherCode],
[decDefSaleQty],
[strExtendedDesc],
[bitInvExtDescOnSI],
[bitInvExtDescOnSO],
[bitInvExtDescOnSQ],
[bitInvExtDescOnSFHQ],
[bitInvExtDescOnCR],
[bitInvExtDescOnPI],
[bitInvExtDescOnPO],
[bitInvExtDescOnPQ],
[bitWebstoreItem],
[bitInvExtDescOnBRQ],
[decSumManuf]) Values (
@strPartNumber,
@strDesc,
@intType,
@strCategory,
@intExpAcct,
@decCostOnPO,
@bitUseLPPOnPO,
@intReorderQty,
@strBuyUnit,
@strStockUnit,
@decBuyToStock,
@bitAllowPriceChg,
@dteDateLastSale,
@dteLastPurchase,
@decLastPPUnit,
@dteLastUpdated,
@bitUseBOM,
@intBOMQty,
@strAddInfo,
@bitInactive,
@decSumAvail,
@decSumAlloc,
@decSumOnHand,
@decSumValue,
@decSumOnOrder,
@decSumOpenQty,
@decSumOpenValue,
@decSumValYearStart,
@decSumQtyYearStart,
@decSumAmtSoldYTD,
@decSumAmtSoldLY,
@decSumQtySoldYTD,
@decSumQtySoldLY,
@decSumCOGSYTD,
@decSumCOGSLY,
@intSumNumTransYTD,
@intSumNumTransLY,
@bitAutoBuild,
@strField1,
@strField2,
@strField3,
@strField4,
@strField5,
@strField6,
@strBarCode,
@decStandardCost,
@bitItemNumConvUsed,
@strSellUnit,
@strSellStockUnit,
@decSellFromStock,
@strItemSegment1,
@strItemSegment2,
@strItemSegment3,
@strItemSegment4,
@strInvNumConv,
@bitInvSerialType,
@strInvSerialType,
@decRepairCharge,
@strBarCode2,
@bitVoucherEnabled,
@strVoucherCode,
@decDefSaleQty,
@strExtendedDesc,
@bitInvExtDescOnSI,
@bitInvExtDescOnSO,
@bitInvExtDescOnSQ,
@bitInvExtDescOnSFHQ,
@bitInvExtDescOnCR,
@bitInvExtDescOnPI,
@bitInvExtDescOnPO,
@bitInvExtDescOnPQ,
@bitWebstoreItem,
@bitInvExtDescOnBRQ,
@decSumAlloc)
select SCOPE_IDENTITY()
End
End
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvBOM]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvBOM]    Script Date: 2019-10-23 15:20:12 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblInvBOM]
    @tblData AS InvBOMTableType READONLY
AS
BEGIN
		Delete from tblInvBOM where strPartNumber in (select strPartNumber from @tblData)

BEGIN
	UPDATE  tblInvBOM SET
	strPartNumber = table2.strPartNumber,
	strPartItemNumber =  table2.strPartItemNumber,
	intQtyToUse = table2.intQtyToUse,
	strLocName =  table2.strLocName
	FROM tblInvBOM as table1
	INNER JOIN @tblData as table2
	ON (table1.strPartNumber=table2.strPartNumber and table1.strPartItemNumber = table2.strPartItemNumber and table1.strLocName = table2.strLocName)
END

BEGIN
   INSERT INTO  [tblInvBOM] 
	   (
	      	strPartNumber,
			strPartItemNumber,
			intQtyToUse,
			strLocName
	   ) 
	   SELECT  
	     	strPartNumber,
			strPartItemNumber,
			intQtyToUse,
			strLocName
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblInvBOM 
	  WHERE strPartNumber=t.strPartNumber and strPartItemNumber = t.strPartItemNumber and strLocName = t.strLocName)
END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvCat]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[AddUpdatetblInvCat] 
(@strCategory nvarchar(20) = NULL ,
@strDesc nvarchar(100) = NULL ,
@bitInactive bit = NULL ,
@decMinMarginPerc decimal = NULL ,
@bitUseMinMarginPerc bit = NULL ,
@intAlertOnMinMarginPerc int = NULL )
 As Begin
If (Select count(*) as Counted  from [tblInvCat]) <> 0
Begin
 Update [tblInvCat] set 
[strCategory] = @strCategory,
[strDesc] = @strDesc,
[bitInactive] = @bitInactive,
[decMinMarginPerc] = @decMinMarginPerc,
[bitUseMinMarginPerc] = @bitUseMinMarginPerc,
[intAlertOnMinMarginPerc] = @intAlertOnMinMarginPerc

End
Else
Begin
 Insert Into [tblInvCat] (
[strCategory],
[strDesc],
[bitInactive],
[decMinMarginPerc],
[bitUseMinMarginPerc],
[intAlertOnMinMarginPerc]) Values (
@strCategory,
@strDesc,
@bitInactive,
@decMinMarginPerc,
@bitUseMinMarginPerc,
@intAlertOnMinMarginPerc)
select SCOPE_IDENTITY()
End
End
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvCatNew]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvCatNew]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblInvCatNew]
	    @tblData AS InvCatTableType READONLY

AS
BEGIN
	BEGIN
	  Insert into tblInvCat (strCategory,strDesc,bitInactive,decMinMarginPerc,bitUseMinMarginPerc,intAlertOnMinMarginPerc,strAcctSetInv,strAcctSetSvc,strAcctSetBO,bitDefault)
	  SELECT
	 strCategory,strDesc,bitInactive,decMinMarginPerc,bitUseMinMarginPerc,intAlertOnMinMarginPerc,strAcctSetInv,strAcctSetSvc,strAcctSetBO,0
	 FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblInvCat WHERE strCategory=t.strCategory)
	END

	BEGIN
	UPDATE [dbo].tblInvCat SET strCategory=table2.strCategory,strDesc=table2.strDesc,bitInactive=table2.bitInactive,decMinMarginPerc=table2.decMinMarginPerc,bitUseMinMarginPerc=table2.bitUseMinMarginPerc,intAlertOnMinMarginPerc=table2.intAlertOnMinMarginPerc,strAcctSetInv=table2.strAcctSetInv,strAcctSetSvc=table2.strAcctSetSvc,strAcctSetBO=table2.strAcctSetBO 
	 FROM tblInvCat as table1
	INNER JOIN @tblData as table2
	ON (table1.strCategory=table2.strCategory)
	END
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvCatSec]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvCatSec]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblInvCatSec]
    @tblData AS InvCatSecTableType READONLY
 
AS
BEGIN
	TRUNCATE TABLE tblInvCatSec
	INSERT INTO tblInvCatSec (strCategory,strUserName)
	SELECT strCategory,strUserName
		 FROM @tblData  as t 
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvEx]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvEx]    Script Date: 2019-10-23 15:20:12 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblInvEx]
    @tblData AS InvExTableType READONLY
AS
BEGIN

BEGIN
	UPDATE  [tblInvEx] SET
	strPartNumber = table2.strPartNumber,
	strTaxName =  table2.strTaxName
	FROM tblInvEx as table1
	INNER JOIN @tblData as table2
	ON (table1.strPartNumber=table2.strPartNumber and table1.strTaxName = table2.strTaxName)
END

BEGIN
   INSERT INTO  [tblInvEx] 
	   (
	      	strPartNumber,
			strTaxName
	   ) 
	   SELECT  
	     	strPartNumber,
			strTaxName
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblInvEx 
	  WHERE strPartNumber=t.strPartNumber and strTaxName = t.strTaxName)
END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvExt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvExt]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblInvExt]
    @tblData AS InvExtTableType READONLY
AS
BEGIN

BEGIN
	UPDATE  [tblInvExt] SET
	strPartNumber=table2.strPartNumber,
	strLocName=table2.strLocName,
	decAvail=table2.decAvail,
	decAlloc=table2.decAlloc,
	decOnHand=table2.decOnHand,
	decValue=table2.decValue,
	decOnOrder=table2.decOnOrder,
	decOpenQty=table2.decOpenQty,
	decOpenValue=table2.decOpenValue,
	intReorderPoint=table2.intReorderPoint,
	strAcctSet=table2.strAcctSet,
	strBinLoc=table2.strBinLoc,
	decMaxLevel=table2.decMaxLevel,
	decMinimumLevel=table2.decMinimumLevel,
	bitInactive=table2.bitInactive,
	bitDefault=table2.bitDefault 
	FROM tblInvExt as table1
	INNER JOIN @tblData as table2
	ON (table1.strPartNumber=table2.strPartNumber and table1.strLocName = table2.strLocName)
END

BEGIN
   INSERT INTO  [tblInvExt] 
	   (
	      strPartNumber,strLocName,decAvail,decAlloc,decOnHand,decValue,decOnOrder,decOpenQty,decOpenValue,intReorderPoint,strAcctSet,strBinLoc,decMaxLevel,decMinimumLevel,bitInactive,bitDefault
	   ) 
	   SELECT  
	     	strPartNumber,strLocName,decAvail,decAlloc,decOnHand,decValue,decOnOrder,decOpenQty,decOpenValue,intReorderPoint,strAcctSet,strBinLoc,decMaxLevel,decMinimumLevel,bitInactive,bitDefault
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblInvExt WHERE strPartNumber=t.strPartNumber and strLocName = t.strLocName)
END
End
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvExtBin]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvExtBin]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblInvExtBin]
    @tblData AS InvExtBinTableType READONLY
AS
BEGIN

BEGIN
	UPDATE  [tblInvExtBin] SET
	strPartNumber = table2.strPartNumber,
	strLocName =  table2.strLocName,
	lngBinID =  table2.lngBinID,
	decAvail =  table2.decAvail,
	decAlloc =  table2.decAlloc,
	decOnHand =  table2.decOnHand,
	decMaximumQty =  table2.decMaximumQty,
	bitAllowed =  table2.bitAllowed,
	bitDefault =  table2.bitDefault
	FROM tblInvExtBin as table1
	INNER JOIN @tblData as table2
	ON (table1.strPartNumber=table2.strPartNumber and table1.strLocName = table2.strLocName and table1.lngBinID = table2.lngBinID)
END

BEGIN
   INSERT INTO  [tblInvExtBin] 
	   (
	      	strPartNumber,
			strLocName,
			lngBinID,
			decAvail,
			decAlloc,
			decOnHand,
			decMaximumQty,
			bitAllowed,
			bitDefault
	   ) 
	   SELECT  
	     	strPartNumber,
			strLocName,
			lngBinID,
			decAvail,
			decAlloc,
			decOnHand,
			decMaximumQty,
			bitAllowed,
			bitDefault 
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblInvExtBin WHERE strPartNumber=t.strPartNumber and strLocName = t.strLocName and lngBinID = t.lngBinID)
END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvGroupSubCat]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdatetblInvGroupSubCat]
	@tblData AS InvGroupSubCatTableType READONLY
AS
BEGIN
	BEGIN
	  Insert into tblInvGroupSubCat ([strCategory], [strDesc], [strParentSubCategory], [strParentCategory])
	  SELECT
	[strCategory], [strDesc], [strParentSubCategory], [strParentCategory]
	 FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblInvGroupSubCat WHERE strCategory=t.strCategory and  strParentCategory=t.strParentCategory and  strParentSubCategory=t.strParentSubCategory)
	END

	BEGIN
	UPDATE [dbo].tblInvGroupSubCat SET [strCategory]=table2.[strCategory], [strDesc]=table2.[strDesc], [strParentSubCategory]=table2.[strParentSubCategory], [strParentCategory]=table2.[strParentCategory]
	 FROM tblInvGroupSubCat as table1
	INNER JOIN @tblData as table2
	ON (table1.strCategory=table2.strCategory and table1.strParentCategory=table2.strParentCategory and  table1.strParentSubCategory = table2.strParentSubCategory)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvImg]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdatetblInvImg]
      @tblData AS InvImgTableType READONLY

AS
BEGIN
	SET IDENTITY_INSERT tblInvImg ON

	BEGIN
	   UPDATE  tblInvImg SET
					 [strPartNumber] = table2.[strPartNumber], 
					 [imgData] = table2.[imgData], 
					 [bitDefaultImage] = table2.[bitDefaultImage]
	FROM tblInvImg as table1
	INNER JOIN @tblData as table2
	ON (table1.[Image_ID]=table2.[Image_ID])
	END


	BEGIN

	   INSERT INTO  [tblInvImg] 
	   (
	   [Image_ID], [strPartNumber], [imgData], [bitDefaultImage]
	   ) 
	   SELECT
		  [Image_ID], [strPartNumber], [imgData], [bitDefaultImage]   
	   	  FROM @tblData  as t 
		  WHERE  NOT EXISTS (SELECT 1 FROM tblInvImg WHERE [Image_ID]=t.[Image_ID] )

	END
	
	SET IDENTITY_INSERT tblInvImg OFF
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvLoc]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvLoc]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblInvLoc]
	    @tblData AS InvLocTableType READONLY
AS
BEGIN
	BEGIN
	   INSERT INTO  [tblInvLoc] 
	   (
	    		strLocName ,
	strDesc,
	bitDefault,
	intType,
	bitCustSale,
	bitCustReturn,
	bitVendReceive,
	bitVendReturn
	   ) 
	   SELECT
		strLocName ,
	strDesc,
	bitDefault,
	intType,
	bitCustSale,
	bitCustReturn,
	bitVendReceive,
	bitVendReturn
	 FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblInvLoc WHERE strLocName=t.strLocName)
	END

	BEGIN
	   UPDATE  [tblInvLoc] SET
	 strLocName = table2.strLocName,
	strDesc = table2.strDesc,
	bitDefault = table2.bitDefault,
	intType = table2.intType,
	bitCustSale = table2.bitCustSale,
	bitCustReturn = table2.bitCustReturn,
	bitVendReceive = table2.bitVendReceive,
	bitVendReturn = table2.bitVendReturn
	  FROM tblInvLoc as table1
	INNER JOIN @tblData as table2
	ON (table1.strLocName=table2.strLocName)
	END
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvLocBin]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvLocBin]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblInvLocBin]   
    @tblData AS InvLocBinTableType READONLY

AS  
BEGIN   
   SET IDENTITY_INSERT tblInvLocBin ON

		BEGIN     
		 
			INSERT INTO [dbo].[tblInvLocBin]         
				(lngId,strLocName ,strBinCode,strDescription,decCapacity,strCapacityUnit)   
				SELECT
				lngId,strLocName ,strBinCode,strDescription,decCapacity,strCapacityUnit   
			FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblInvLocBin WHERE lngId=t.lngId) 
		END   
		   
		BEGIN     
			UPDATE [dbo].[tblInvLocBin]       
				SET 
					strLocName =  table2.strLocName,       
					strBinCode =  table2.strBinCode,      
					strDescription =  table2.strDescription,       
					decCapacity =  table2.decCapacity,      
					strCapacityUnit =  table2.strCapacityUnit     
		FROM tblInvLocBin as table1
	INNER JOIN @tblData as table2
	ON (table1.lngId=table2.lngId) 
		END  

		   SET IDENTITY_INSERT tblInvLocBin OFF
	END 


GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvLotExt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvLotExt]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblInvLotExt]
    @tblData AS POSInvLotExtTableType READONLY

AS
BEGIN
	BEGIN
    Insert into tblInvLotExt (strPartNumber,strLotNumber,strLocName,decQty,bitExpiryDate,dteExpiryDate,dteUpdatedDate,lngBinID)
	SELECT strPartNumber,strLotNumber,strLocName,decQty,bitExpiryDate,dteExpiryDate,dteUpdatedDate,lngBinID
	 FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblInvLotExt WHERE strPartNumber=t.strPartNumber and strLotNumber = t.strLotNumber and strLocName = t.strLocName and lngBinID = t.lngBinID)
	END
	
	BEGIN
	   UPDATE [dbo].tblInvLotExt SET strPartNumber=table2.strPartNumber,strLotNumber=table2.strLotNumber,strLocName=table2.strLocName,decQty=table2.decQty,bitExpiryDate=table2.bitExpiryDate,dteExpiryDate=table2.dteExpiryDate,dteUpdatedDate=table2.dteUpdatedDate,lngBinID=table2.lngBinID 
	   FROM tblInvLotExt as table1
	INNER JOIN @tblData as table2
		ON (table1.strPartNumber=table2.strPartNumber and table1.strLotNumber = table2.strLotNumber and table1.strLocName = table2.strLocName and table1.lngBinID = table2.lngBinID)

	END
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvNew]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvNew]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblInvNew]
      @tblData AS InvTableType READONLY

AS
BEGIN
	BEGIN
	  Insert into tblInv (strPartNumber,strDesc,intType,strCategory,intExpAcct,decCostOnPO,bitUseLPPOnPO,intReorderQty,strBuyUnit,strStockUnit,decBuyToStock,bitAllowPriceChg,dteDateLastSale,dteLastPurchase,decLastPPUnit,dteLastUpdated,bitUseBOM,intBOMQty,strAddInfo,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumOpenQty,decSumOpenValue,decSumValYearStart,decSumQtyYearStart,decSumAmtSoldYTD,decSumAmtSoldLY,decSumQtySoldYTD,decSumQtySoldLY,decSumCOGSYTD,decSumCOGSLY,intSumNumTransYTD,intSumNumTransLY,bitAutoBuild,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,decStandardCost,bitItemNumConvUsed,strSellUnit,strSellStockUnit,decSellFromStock,strItemSegment1,strItemSegment2,strItemSegment3,strItemSegment4,strInvNumConv,bitInvSerialType,strInvSerialType,decRepairCharge,strBarCode2,bitVoucherEnabled,strVoucherCode,decDefSaleQty,strExtendedDesc,bitInvExtDescOnSI,bitInvExtDescOnSO,bitInvExtDescOnSQ,bitInvExtDescOnSFHQ,bitInvExtDescOnCR,bitInvExtDescOnPI,bitInvExtDescOnPO,bitInvExtDescOnPQ,bitWebstoreItem,strDimProCode,strRSTTerminalSync,intDecimalQuantity,strBOMNotes,bitInvExtDescOnBRQ,decMass,decVolumetricWeight,strUnitOfMeasure,decW,decH,decD,decCube,decFactor,decMaxLevel,decOrderLeadTime,decSafetyFactorPer,decDaysSalesinStock,decMinimumOrderQuantity,decNewDailySales,decOldMinLevel,decMinimumLevel,decOldMaxLevel,decEconomicOrderQty,bitPallet,bitInclInvForecast,bitDimProSales,bitDimProPurchases,strInvWCCode,decLastManCost,bitAutoBuildSameLoc,strFileName,bitExclCommission,strPOSDesc,strSubCategory,strSubCategoryGroup,bitSumComp,bitAllowAdjustKitCompOnDoc,strHSCode, strHSDesc,strURACode, strKenyaItemCode, strKenyaItemCodeCounter,strKenyaItemClassificationName, decDensity, bitIsSuperseded, strSupersededBy, strSupersededDescription, dtesupersessiondate, bitPendingApproval, bitDefaultUOM,strCommodityCode,strZambiaItemCode,strZMBItemCodeCounter,strZambiaItemClassificationName, intZambiaItemType, strZambiaInvCountryOriginCode)
	  SELECT
	strPartNumber,strDesc,intType,strCategory,intExpAcct,decCostOnPO,bitUseLPPOnPO,intReorderQty,strBuyUnit,strStockUnit,decBuyToStock,bitAllowPriceChg,dteDateLastSale,dteLastPurchase,decLastPPUnit,dteLastUpdated,bitUseBOM,intBOMQty,strAddInfo,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumOpenQty,decSumOpenValue,decSumValYearStart,decSumQtyYearStart,decSumAmtSoldYTD,decSumAmtSoldLY,decSumQtySoldYTD,decSumQtySoldLY,decSumCOGSYTD,decSumCOGSLY,intSumNumTransYTD,intSumNumTransLY,bitAutoBuild,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,decStandardCost,bitItemNumConvUsed,strSellUnit,strSellStockUnit,decSellFromStock,strItemSegment1,strItemSegment2,strItemSegment3,strItemSegment4,strInvNumConv,bitInvSerialType,strInvSerialType,decRepairCharge,strBarCode2,bitVoucherEnabled,strVoucherCode,decDefSaleQty,strExtendedDesc,bitInvExtDescOnSI,bitInvExtDescOnSO,bitInvExtDescOnSQ,bitInvExtDescOnSFHQ,bitInvExtDescOnCR,bitInvExtDescOnPI,bitInvExtDescOnPO,bitInvExtDescOnPQ,bitWebstoreItem,strDimProCode,strRSTTerminalSync,intDecimalQuantity,strBOMNotes,bitInvExtDescOnBRQ,decMass,decVolumetricWeight,strUnitOfMeasure,decW,decH,decD,decCube,decFactor,decMaxLevel,decOrderLeadTime,decSafetyFactorPer,decDaysSalesinStock,decMinimumOrderQuantity,decNewDailySales,decOldMinLevel,decMinimumLevel,decOldMaxLevel,decEconomicOrderQty,bitPallet,bitInclInvForecast,bitDimProSales,bitDimProPurchases,strInvWCCode,decLastManCost,bitAutoBuildSameLoc,strFileName,bitExclCommission,strPOSDesc,strSubCategory,strSubCategoryGroup,bitSumComp,bitAllowAdjustKitCompOnDoc,strHSCode, strHSDesc,strURACode, strKenyaItemCode, strKenyaItemCodeCounter,strKenyaItemClassificationName, decDensity, bitIsSuperseded, strSupersededBy, strSupersededDescription, dtesupersessiondate, bitPendingApproval, bitDefaultUOM,strCommodityCode,strZambiaItemCode,strZMBItemCodeCounter,strZambiaItemClassificationName, intZambiaItemType, strZambiaInvCountryOriginCode
	 FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblInv WHERE strPartNumber=t.strPartNumber)
	END
	
	BEGIN
	 UPDATE [dbo].tblInv SET strPartNumber=table2.strPartNumber,strDesc=table2.strDesc,intType=table2.intType,strCategory=table2.strCategory,intExpAcct=table2.intExpAcct,decCostOnPO=table2.decCostOnPO,bitUseLPPOnPO=table2.bitUseLPPOnPO,intReorderQty=table2.intReorderQty,strBuyUnit=table2.strBuyUnit,strStockUnit=table2.strStockUnit,decBuyToStock=table2.decBuyToStock,bitAllowPriceChg=table2.bitAllowPriceChg,dteDateLastSale=table2.dteDateLastSale,dteLastPurchase=table2.dteLastPurchase,decLastPPUnit=table2.decLastPPUnit,dteLastUpdated=table2.dteLastUpdated,bitUseBOM=table2.bitUseBOM,intBOMQty=table2.intBOMQty,strAddInfo=table2.strAddInfo,bitInactive=table2.bitInactive,decSumAvail=table2.decSumAvail,decSumAlloc=table2.decSumAlloc,decSumOnHand=table2.decSumOnHand,decSumValue=table2.decSumValue,decSumOnOrder=table2.decSumOnOrder,decSumOpenQty=table2.decSumOpenQty,decSumOpenValue=table2.decSumOpenValue,decSumValYearStart=table2.decSumValYearStart,decSumQtyYearStart=table2.decSumQtyYearStart,decSumAmtSoldYTD=table2.decSumAmtSoldYTD,decSumAmtSoldLY=table2.decSumAmtSoldLY,decSumQtySoldYTD=table2.decSumQtySoldYTD,decSumQtySoldLY=table2.decSumQtySoldLY,decSumCOGSYTD=table2.decSumCOGSYTD,decSumCOGSLY=table2.decSumCOGSLY,intSumNumTransYTD=table2.intSumNumTransYTD,intSumNumTransLY=table2.intSumNumTransLY,bitAutoBuild=table2.bitAutoBuild,strField1=table2.strField1,strField2=table2.strField2,strField3=table2.strField3,strField4=table2.strField4,strField5=table2.strField5,strField6=table2.strField6,strBarCode=table2.strBarCode,decStandardCost=table2.decStandardCost,bitItemNumConvUsed=table2.bitItemNumConvUsed,strSellUnit=table2.strSellUnit,strSellStockUnit=table2.strSellStockUnit,decSellFromStock=table2.decSellFromStock,strItemSegment1=table2.strItemSegment1,strItemSegment2=table2.strItemSegment2,strItemSegment3=table2.strItemSegment3,strItemSegment4=table2.strItemSegment4,strInvNumConv=table2.strInvNumConv,bitInvSerialType=table2.bitInvSerialType,strInvSerialType=table2.strInvSerialType,decRepairCharge=table2.decRepairCharge,strBarCode2=table2.strBarCode2,bitVoucherEnabled=table2.bitVoucherEnabled,strVoucherCode=table2.strVoucherCode,decDefSaleQty=table2.decDefSaleQty,strExtendedDesc=table2.strExtendedDesc,bitInvExtDescOnSI=table2.bitInvExtDescOnSI,bitInvExtDescOnSO=table2.bitInvExtDescOnSO,bitInvExtDescOnSQ=table2.bitInvExtDescOnSQ,bitInvExtDescOnSFHQ=table2.bitInvExtDescOnSFHQ,bitInvExtDescOnCR=table2.bitInvExtDescOnCR,bitInvExtDescOnPI=table2.bitInvExtDescOnPI,bitInvExtDescOnPO=table2.bitInvExtDescOnPO,bitInvExtDescOnPQ=table2.bitInvExtDescOnPQ,bitWebstoreItem=table2.bitWebstoreItem,strDimProCode=table2.strDimProCode,strRSTTerminalSync=table2.strRSTTerminalSync,intDecimalQuantity=table2.intDecimalQuantity,strBOMNotes=table2.strBOMNotes,bitInvExtDescOnBRQ=table2.bitInvExtDescOnBRQ,decMass=table2.decMass,decVolumetricWeight=table2.decVolumetricWeight,strUnitOfMeasure=table2.strUnitOfMeasure,decW=table2.decW,decH=table2.decH,decD=table2.decD,decCube=table2.decCube,decFactor=table2.decFactor,decMaxLevel=table2.decMaxLevel,decOrderLeadTime=table2.decOrderLeadTime,decSafetyFactorPer=table2.decSafetyFactorPer,decDaysSalesinStock=table2.decDaysSalesinStock,decMinimumOrderQuantity=table2.decMinimumOrderQuantity,decNewDailySales=table2.decNewDailySales,decOldMinLevel=table2.decOldMinLevel,decMinimumLevel=table2.decMinimumLevel,decOldMaxLevel=table2.decOldMaxLevel,decEconomicOrderQty=table2.decEconomicOrderQty,bitPallet=table2.bitPallet,bitInclInvForecast=table2.bitInclInvForecast,bitDimProSales=table2.bitDimProSales,bitDimProPurchases=table2.bitDimProPurchases,strInvWCCode=table2.strInvWCCode,decLastManCost=table2.decLastManCost,bitAutoBuildSameLoc=table2.bitAutoBuildSameLoc,strFileName=table2.strFileName,bitExclCommission = table2.bitExclCommission,strPOSDesc = table2.strPOSDesc,strSubCategory=table2.strSubCategory,strSubCategoryGroup=table2.strSubCategoryGroup,bitSumComp=table2.bitSumComp,bitAllowAdjustKitCompOnDoc=table2.bitAllowAdjustKitCompOnDoc ,strHSCode=table2.strHSCode, strHSDesc=table2.strHSDesc ,decDensity=table2.decDensity, bitIsSuperseded=table2.bitIsSuperseded, strSupersededBy=table2.strSupersededBy, strSupersededDescription =table2.strSupersededDescription, dtesupersessiondate =table2.dtesupersessiondate, bitPendingApproval =table2.bitPendingApproval, bitDefaultUOM=table2.bitDefaultUOM
	 , strURACode=table2.strURACode
	 , strKenyaItemCode=table2.strKenyaItemCode
	 , strKenyaItemCodeCounter=table2.strKenyaItemCodeCounter
	 , strKenyaItemClassificationName=table2.strKenyaItemClassificationName
	 , strCommodityCode=table2.strCommodityCode
	 , strZambiaItemCode=table2.strZambiaItemCode
	 , strZMBItemCodeCounter=table2.strZMBItemCodeCounter
	 , strZambiaItemClassificationName=table2.strZambiaItemClassificationName
	 , intZambiaItemType=table2.intZambiaItemType
	 , strZambiaInvCountryOriginCode=table2.strZambiaInvCountryOriginCode
	FROM tblInv as table1
	INNER JOIN @tblData as table2
	ON (table1.strPartNumber=table2.strPartNumber)
		END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvNumConv]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvNumConv]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblInvNumConv] @tblData
AS
InvNumConvTableType READONLY AS

BEGIN
	BEGIN
		INSERT INTO [tblInvNumConv] (
			strInvNumConv
			,strDesc
			,intType
			,bitAllowHyphens
			,bitSeg1Enabled
			,bitSeg1Checked
			,strSeg1Name
			,intSeg1Attribute
			,intSeg1Places
			,bitSeg2Enabled
			,bitSeg2Checked
			,strSeg2Name
			,intSeg2Attribute
			,intSeg2Places
			,bitSeg3Enabled
			,bitSeg3Checked
			,strSeg3Name
			,intSeg3Attribute
			,intSeg3Places
			,bitSeg4Enabled
			,bitSeg4Checked
			,strSeg4Name
			,intSeg4Attribute
			,intSeg4Places
			,bitInactive
			,bitDefault
			,intNumberType
			,intSeg4Type
			,strSeg4StartAt
			,intSeg1Type
			,strSeg1StartAt
			,intSeg2Type
			,strSeg2StartAt
			,intSeg3Type
			,strSeg3StartAt
			)
		SELECT strInvNumConv
			,strDesc
			,intType
			,bitAllowHyphens
			,bitSeg1Enabled
			,bitSeg1Checked
			,strSeg1Name
			,intSeg1Attribute
			,intSeg1Places
			,bitSeg2Enabled
			,bitSeg2Checked
			,strSeg2Name
			,intSeg2Attribute
			,intSeg2Places
			,bitSeg3Enabled
			,bitSeg3Checked
			,strSeg3Name
			,intSeg3Attribute
			,intSeg3Places
			,bitSeg4Enabled
			,bitSeg4Checked
			,strSeg4Name
			,intSeg4Attribute
			,intSeg4Places
			,bitInactive
			,bitDefault
			,intNumberType
			,intSeg4Type
			,strSeg4StartAt
			,intSeg1Type
			,strSeg1StartAt
			,intSeg2Type
			,strSeg2StartAt
			,intSeg3Type
			,strSeg3StartAt
		FROM @tblData AS t
		WHERE NOT EXISTS (
				SELECT 1
				FROM tblInvNumConv
				WHERE strInvNumConv = t.strInvNumConv
				)
	END

	BEGIN
		UPDATE [tblInvNumConv]
		SET strInvNumConv = table2.strInvNumConv
			,strDesc = table2.strDesc
			,intType = table2.intType
			,bitAllowHyphens = table2.bitAllowHyphens
			,bitSeg1Enabled = table2.bitSeg1Enabled
			,bitSeg1Checked = table2.bitSeg1Checked
			,strSeg1Name = table2.strSeg1Name
			,intSeg1Attribute = table2.intSeg1Attribute
			,intSeg1Places = table2.intSeg1Places
			,bitSeg2Enabled = table2.bitSeg2Enabled
			,bitSeg2Checked = table2.bitSeg2Checked
			,strSeg2Name = table2.strSeg2Name
			,intSeg2Attribute = table2.intSeg2Attribute
			,intSeg2Places = table2.intSeg2Places
			,bitSeg3Enabled = table2.bitSeg3Enabled
			,bitSeg3Checked = table2.bitSeg3Checked
			,strSeg3Name = table2.strSeg3Name
			,intSeg3Attribute = table2.intSeg3Attribute
			,intSeg3Places = table2.intSeg3Places
			,bitSeg4Enabled = table2.bitSeg4Enabled
			,bitSeg4Checked = table2.bitSeg4Checked
			,strSeg4Name = table2.strSeg4Name
			,intSeg4Attribute = table2.intSeg4Attribute
			,intSeg4Places = table2.intSeg4Places
			,bitInactive = table2.bitInactive
			,bitDefault = table2.bitDefault
			,intNumberType = table2.intNumberType
			,intSeg4Type = table2.intSeg4Type
			,strSeg4StartAt = table2.strSeg4StartAt
			,intSeg1Type = table2.intSeg1Type
			,strSeg1StartAt = table2.strSeg1StartAt
			,intSeg2Type = table2.intSeg2Type
			,strSeg2StartAt = table2.strSeg2StartAt
			,intSeg3Type = table2.intSeg3Type
			,strSeg3StartAt = table2.strSeg3StartAt
		FROM tblInvNumConv AS table1
		INNER JOIN @tblData AS table2 ON (table1.strInvNumConv = table2.strInvNumConv)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvPrice]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[AddUpdatetblInvPrice]
    @tblData AS InvPriceTableType READONLY
AS
BEGIN

BEGIN
	UPDATE  tblInvPrice SET
	uidPriceBasedID=table2.uidPriceBasedID,
	strPartNumber=table2.strPartNumber,
	strPricelist=table2.strPricelist,
	decSelling=table2.decSelling,
	decEstLocalCost=table2.decEstLocalCost,
	decEstImportCost=table2.decEstImportCost,
	bitPromotionalPricing=table2.bitPromotionalPricing,
	dtePromotionalStartDate=table2.dtePromotionalStartDate,
	dtePromotionalEndDate=table2.dtePromotionalEndDate,
	decPromotionalPrice=table2.decPromotionalPrice,
	bitCashPricing = table2.bitCashPricing,
	decCashPrice = table2.decCashPrice,
	strUnit = table2.strUnit,
	bitStockUnit =  table2.bitStockUnit
	FROM tblInvPrice as table1
	INNER JOIN @tblData as table2
	ON (table1.uidPriceBasedID=table2.uidPriceBasedID and table1.strPartNumber = table2.strPartNumber and table1.strPricelist = table2.strPricelist and table1.strUnit = table2.strUnit)
END

BEGIN
   INSERT INTO  tblInvPrice 
	   (
	      uidPriceBasedID,strPartNumber,strPricelist,decSelling,decEstLocalCost,decEstImportCost,bitPromotionalPricing,dtePromotionalStartDate,dtePromotionalEndDate,decPromotionalPrice,bitCashPricing,decCashPrice,strUnit,bitStockUnit
	   ) 
	   SELECT  
	     	uidPriceBasedID,strPartNumber,strPricelist,decSelling,decEstLocalCost,decEstImportCost,bitPromotionalPricing,dtePromotionalStartDate,dtePromotionalEndDate,decPromotionalPrice,bitCashPricing,decCashPrice,strUnit,bitStockUnit
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblInvPrice WHERE uidPriceBasedID=t.uidPriceBasedID and strPartNumber = t.strPartNumber and strPricelist = t.strPricelist and strUnit = t.strUnit)
END

End
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvSerialExt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvSerialExt]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblInvSerialExt]
    @tblData AS POSInvSerialExtTableType READONLY

AS
BEGIN

	BEGIN
    Insert into tblInvSerialExt (strPartNumber,strSerialNumber,strLocName,decQty,intStatus,strDocID,dteUpdatedDate,bitDimensionExist,strDimension,lngBinID)
	SELECT
	strPartNumber,strSerialNumber,strLocName,decQty,intStatus,strDocID,dteUpdatedDate,bitDimensionExist,strDimension,lngBinID
		  FROM @tblData  as t 
	WHERE  NOT EXISTS (SELECT 1 FROM tblInvSerialExt WHERE strPartNumber=t.strPartNumber and strSerialNumber = t.strSerialNumber and strLocName = t.strLocName)
	END

	BEGIN
	    UPDATE [dbo].tblInvSerialExt SET strPartNumber=table2.strPartNumber,strSerialNumber=table2.strSerialNumber,strLocName=table2.strLocName,decQty=table2.decQty,intStatus=table2.intStatus,strDocID=table2.strDocID,dteUpdatedDate=table2.dteUpdatedDate,bitDimensionExist=table2.bitDimensionExist,strDimension=table2.strDimension,lngBinID=table2.lngBinID 
	  FROM tblInvSerialExt as table1
	INNER JOIN @tblData as table2
	ON (table1.strPartNumber=table2.strPartNumber and table1.strSerialNumber = table2.strSerialNumber and table1.strLocName = table2.strLocName)

	END
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvSerialTypes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdatetblInvSerialTypes]
	    @tblData AS InvSerialTypesTableType READONLY

AS
BEGIN
	BEGIN
		Insert into tblInvSerialTypes (strInvSerialType,strDesc,bitMethod,intMin,intMax,intFormat,bitPrintInv,bitInactive,intType,bitTrackExpiryDate,intExpiryDateAuthGRV,intExpiryDateAuthPI,intExpiryDateAuthDN,intExpiryDateAuthSI,intExpiryDateAuthCN,intExpiryDateAuthAD,intExpiryDateAuthAS,intExpiryDateAuthTR,bitBCBreakdown,strBCFlag,bitBC1Enabled,strBC1Type,intBC1StartPos,intBC1EndPos,bitBC2Enabled,strBC2Type,intBC2StartPos,intBC2EndPos,bitBC3Enabled,strBC3Type,intBC3StartPos,intBC3EndPos,bitBC4Enabled,strBC4Type,intBC4StartPos,intBC4EndPos,bitBC5Enabled,strBC5Type,intBC5StartPos,intBC5EndPos,intExpiryDateAuthDA,bitDimensionExist,strDimProCode,bitDPSingleSN,bitBCFormat,dteRowUpdated,bitAutoCreateLotNumber,intLotNumberStartsFrom,intDaysExpire )
	    SELECT strInvSerialType,strDesc,bitMethod,intMin,intMax,intFormat,bitPrintInv,bitInactive,intType,bitTrackExpiryDate,intExpiryDateAuthGRV,intExpiryDateAuthPI,intExpiryDateAuthDN,intExpiryDateAuthSI,intExpiryDateAuthCN,intExpiryDateAuthAD,intExpiryDateAuthAS,intExpiryDateAuthTR,bitBCBreakdown,strBCFlag,bitBC1Enabled,strBC1Type,intBC1StartPos,intBC1EndPos,bitBC2Enabled,strBC2Type,intBC2StartPos,intBC2EndPos,bitBC3Enabled,strBC3Type,intBC3StartPos,intBC3EndPos,bitBC4Enabled,strBC4Type,intBC4StartPos,intBC4EndPos,bitBC5Enabled,strBC5Type,intBC5StartPos,intBC5EndPos,intExpiryDateAuthDA,bitDimensionExist,strDimProCode,bitDPSingleSN,bitBCFormat,dteRowUpdated,bitAutoCreateLotNumber,intLotNumberStartsFrom,intDaysExpire
		FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblInvSerialTypes WHERE strInvSerialType=t.strInvSerialType)
	END
	
	BEGIN
	    UPDATE [dbo].tblInvSerialTypes SET strInvSerialType=table2.strInvSerialType,strDesc=table2.strDesc,bitMethod=table2.bitMethod,intMin=table2.intMin,intMax=table2.intMax,intFormat=table2.intFormat,bitPrintInv=table2.bitPrintInv,bitInactive=table2.bitInactive,intType=table2.intType,bitTrackExpiryDate=table2.bitTrackExpiryDate,intExpiryDateAuthGRV=table2.intExpiryDateAuthGRV,intExpiryDateAuthPI=table2.intExpiryDateAuthPI,intExpiryDateAuthDN=table2.intExpiryDateAuthDN,intExpiryDateAuthSI=table2.intExpiryDateAuthSI,intExpiryDateAuthCN=table2.intExpiryDateAuthCN,intExpiryDateAuthAD=table2.intExpiryDateAuthAD,intExpiryDateAuthAS=table2.intExpiryDateAuthAS,intExpiryDateAuthTR=table2.intExpiryDateAuthTR,bitBCBreakdown=table2.bitBCBreakdown,strBCFlag=table2.strBCFlag,bitBC1Enabled=table2.bitBC1Enabled,strBC1Type=table2.strBC1Type,intBC1StartPos=table2.intBC1StartPos,intBC1EndPos=table2.intBC1EndPos,bitBC2Enabled=table2.bitBC2Enabled,strBC2Type=table2.strBC2Type,intBC2StartPos=table2.intBC2StartPos,intBC2EndPos=table2.intBC2EndPos,bitBC3Enabled=table2.bitBC3Enabled,strBC3Type=table2.strBC3Type,intBC3StartPos=table2.intBC3StartPos,intBC3EndPos=table2.intBC3EndPos,bitBC4Enabled=table2.bitBC4Enabled,strBC4Type=table2.strBC4Type,intBC4StartPos=table2.intBC4StartPos,intBC4EndPos=table2.intBC4EndPos,bitBC5Enabled=table2.bitBC5Enabled,strBC5Type=table2.strBC5Type,intBC5StartPos=table2.intBC5StartPos,intBC5EndPos=table2.intBC5EndPos,intExpiryDateAuthDA=table2.intExpiryDateAuthDA,bitDimensionExist=table2.bitDimensionExist,strDimProCode=table2.strDimProCode,bitDPSingleSN=table2.bitDPSingleSN,bitBCFormat=table2.bitBCFormat,dteRowUpdated=table2.dteRowUpdated,bitAutoCreateLotNumber=table2.bitAutoCreateLotNumber,intLotNumberStartsFrom =table2.intLotNumberStartsFrom,intDaysExpire=table2.intDaysExpire
FROM tblInvSerialTypes as table1
	INNER JOIN @tblData as table2
	ON (table1.strInvSerialType=table2.strInvSerialType)
		END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvSubCat]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdatetblInvSubCat]
	@tblData AS InvSubCatTableType READONLY
AS
BEGIN
	BEGIN
	  Insert into tblInvSubCat ([strCategory], [strDesc], [strParentCategory])
	  SELECT
	[strCategory], [strDesc], [strParentCategory]
	 FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblInvSubCat WHERE strCategory=t.strCategory and  strParentCategory=t.strParentCategory)
	END

	BEGIN
	UPDATE [dbo].tblInvSubCat SET [strCategory]=table2.[strCategory], [strDesc]=table2.[strDesc], [strParentCategory]=table2.[strParentCategory]
	 FROM tblInvSubCat as table1
	INNER JOIN @tblData as table2
	ON (table1.strCategory=table2.strCategory and table1.strParentCategory=table2.strParentCategory)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvUpsell]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdatetblInvUpsell]
	    @tblData AS [InvUpsellTableType] READONLY
AS
BEGIN
	BEGIN
	   INSERT INTO  [tblInvUpsell] 
	   (
	    		      [strPartNumber]
      ,[strPartItemNumber]
      ,[intQtyToUse]
      ,[bitSalesInvoice]
      ,[bitSalesOrder]
      ,[bitSalesQuote]
      ,[bitFreehandQuote]
      ,[bitUseProportionateQty]
      ,[bitPOS]
	   ) 
	   SELECT
		      [strPartNumber]
      ,[strPartItemNumber]
      ,[intQtyToUse]
      ,[bitSalesInvoice]
      ,[bitSalesOrder]
      ,[bitSalesQuote]
      ,[bitFreehandQuote]
      ,[bitUseProportionateQty]
      ,[bitPOS]
	 FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM [tblInvUpsell] WHERE strPartNumber=t.strPartNumber and strPartItemNumber=t.strPartItemNumber )
	END

	BEGIN
	   UPDATE  [tblInvUpsell] SET
       [strPartNumber] = table2.[strPartNumber]
      ,[strPartItemNumber] = table2.[strPartItemNumber]
      ,[intQtyToUse] = table2.[intQtyToUse]
      ,[bitSalesInvoice] = table2.[bitSalesInvoice]
      ,[bitSalesOrder] = table2.[bitSalesOrder]
      ,[bitSalesQuote] = table2.[bitSalesQuote]
      ,[bitFreehandQuote] = table2.[bitFreehandQuote]
      ,[bitUseProportionateQty] = table2.[bitUseProportionateQty]
      ,[bitPOS] = table2.[bitPOS]
	  FROM [tblInvUpsell] as table1
	INNER JOIN @tblData as table2
	ON (table1.strPartNumber=table2.strPartNumber and table1.strPartItemNumber = table2.strPartItemNumber)
	END
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvVend]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[AddUpdatetblInvVend] 
(@strPartNumber nvarchar(50) = NULL ,
@strVendName nvarchar(50) = NULL ,
@lngID bigint = NULL ,
@strItemCode nvarchar(50) = NULL ,
@strItemDesc nvarchar(500) = NULL ,
@intWarrantyDays int = NULL ,
@decPrice money = NULL ,
@bitPreferred bit = NULL ,
@decDiscPerc money = NULL ,
@decLocalPrice money = NULL ,
@decLandedCostFactor money = NULL )
 As Begin
If (Select [lngID] from [tblInvVend]
 Where [lngID] =  @lngID) <> 0
Begin
 Update [tblInvVend] set 
[strPartNumber] = @strPartNumber,
[strVendName] = @strVendName,
[strItemCode] = @strItemCode,
[strItemDesc] = @strItemDesc,
[intWarrantyDays] = @intWarrantyDays,
[decPrice] = @decPrice,
[bitPreferred] = @bitPreferred,
[decDiscPerc] = @decDiscPerc,
[decLocalPrice] = @decLocalPrice,
[decLandedCostFactor] = @decLandedCostFactor
 Where [lngID] =  @lngID
select @lngID

End
Else
Begin
 Insert Into [tblInvVend] (
[strPartNumber],
[strVendName],
[strItemCode],
[strItemDesc],
[intWarrantyDays],
[decPrice],
[bitPreferred],
[decDiscPerc],
[decLocalPrice],
[decLandedCostFactor]) Values (
@strPartNumber,
@strVendName,
@strItemCode,
@strItemDesc,
@intWarrantyDays,
@decPrice,
@bitPreferred,
@decDiscPerc,
@decLocalPrice,
@decLandedCostFactor)
select SCOPE_IDENTITY()
End
End
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvWorkCentre]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvWorkCentre]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblInvWorkCentre] @tblData
AS
InvWorkCentreTableType READONLY AS

BEGIN
	BEGIN
		INSERT INTO [tblInvWorkCentre] (
			strInvWCCode
			,strDesc
			,bitInactive
			)
		SELECT strInvWCCode
			,strDesc
			,bitInactive
		FROM @tblData AS t
		WHERE NOT EXISTS (
				SELECT 1
				FROM tblInvWorkCentre
				WHERE strInvWCCode = t.strInvWCCode
				)
	END

	BEGIN
		UPDATE [tblInvWorkCentre]
		SET strDesc = table2.strDesc
			,bitInactive = table2.bitInactive
		FROM tblInvWorkCentre AS table1
		INNER JOIN @tblData AS table2 ON (table1.strInvWCCode = table2.strInvWCCode)
	END
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblOptFields]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblOptFields]    Script Date: 24-06-2020 22:59:00 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblOptFields]
    @tblData AS OptFieldsTableType READONLY
AS
BEGIN
    Truncate Table [dbo].[tblOptFields]
   
   INSERT INTO [dbo].[tblOptFields]
           ([strGL1]
           ,[strGL2]
           ,[strGL3]
           ,[strGL4]
           ,[strGL5]
           ,[strGL6]
           ,[strPay1]
           ,[strPay2]
           ,[strPay3]
           ,[strPay4]
           ,[strPay5]
           ,[strPay6]
           ,[strRec1]
           ,[strRec2]
           ,[strRec3]
           ,[strRec4]
           ,[strRec5]
           ,[strRec6]
           ,[strInv1]
           ,[strInv2]
           ,[strInv3]
           ,[strInv4]
           ,[strInv5]
           ,[strInv6]
           ,[strPayDoc1]
           ,[strPayDoc2]
           ,[strPayDoc3]
           ,[strPayDoc4]
           ,[strPayDoc5]
           ,[strPayDoc6]
           ,[strPayDoc7]
           ,[strPayDoc8]
           ,[strPayDoc9]
           ,[strPayDoc10]
           ,[strPayDoc11]
           ,[strPayDoc12]
           ,[strRecDoc1]
           ,[strRecDoc2]
           ,[strRecDoc3]
           ,[strRecDoc4]
           ,[strRecDoc5]
           ,[strRecDoc6]
           ,[strRecDoc7]
           ,[strRecDoc8]
           ,[strRecDoc9]
           ,[strRecDoc10]
           ,[strRecDoc11]
           ,[strRecDoc12]
           ,[strPay7]
           ,[strPay8]
           ,[strPay9]
           ,[strPay10]
           ,[strPay11]
           ,[strPay12]
           ,[strRec7]
           ,[strRec8]
           ,[strRec9]
           ,[strRec10]
           ,[strRec11]
           ,[strRec12]
           ,[strPayLine1]
           ,[strPayLine2]
           ,[strPayLine3]
           ,[strPayLine4]
           ,[strPayLine5]
           ,[strPayLine6]
           ,[strPayLine7]
           ,[strPayLine8]
           ,[strPayLine9]
           ,[strPayLine10]
           ,[strPayLine11]
           ,[strPayLine12]
           ,[strRecLine1]
           ,[strRecLine2]
           ,[strRecLine3]
           ,[strRecLine4]
           ,[strRecLine5]
           ,[strRecLine6]
           ,[strRecLine7]
           ,[strRecLine8]
           ,[strRecLine9]
           ,[strRecLine10]
           ,[strRecLine11]
           ,[strRecLine12]
           ,[strProj1]
           ,[strProj2]
           ,[strProj3]
           ,[strProj4]
           ,[strProj5]
           ,[strProj6]
           ,[strProj7]
           ,[strProj8]
           ,[strProj9]
           ,[strProj10]
           ,[strProj11]
           ,[strProj12]
           ,[strRecDoc13]
           ,[strRecDoc14]
           ,[strDelRoute1]
           ,[strDelRoute2]
           ,[strDelRoute3]
           ,[strDelRoute4]
           ,[strDelRoute5]
           ,[strDelRoute6]
           ,[strDelVehicle1]
           ,[strDelVehicle2]
           ,[strDelVehicle3]
           ,[strDelVehicle4]
           ,[strDelVehicle5]
           ,[strDelVehicle6]
           ,[strDelDriver1]
           ,[strDelDriver2]
           ,[strDelDriver3]
           ,[strDelDriver4]
           ,[strDelDriver5]
           ,[strDelDriver6]
           ,[bitGL1]
           ,[bitGL2]
           ,[bitGL3]
           ,[bitGL4]
           ,[bitGL5]
           ,[bitGL6]
           ,[bitPay1]
           ,[bitPay2]
           ,[bitPay3]
           ,[bitPay4]
           ,[bitPay5]
           ,[bitPay6]
           ,[bitRec1]
           ,[bitRec2]
           ,[bitRec3]
           ,[bitRec4]
           ,[bitRec5]
           ,[bitRec6]
           ,[bitInv1]
           ,[bitInv2]
           ,[bitInv3]
           ,[bitInv4]
           ,[bitInv5]
           ,[bitInv6]
           ,[bitPayDoc1]
           ,[bitPayDoc2]
           ,[bitPayDoc3]
           ,[bitPayDoc4]
           ,[bitPayDoc5]
           ,[bitPayDoc6]
           ,[bitPayDoc7]
           ,[bitPayDoc8]
           ,[bitPayDoc9]
           ,[bitPayDoc10]
           ,[bitPayDoc11]
           ,[bitPayDoc12]
           ,[bitRecDoc1]
           ,[bitRecDoc2]
           ,[bitRecDoc3]
           ,[bitRecDoc4]
           ,[bitRecDoc5]
           ,[bitRecDoc6]
           ,[bitRecDoc7]
           ,[bitRecDoc8]
           ,[bitRecDoc9]
           ,[bitRecDoc10]
           ,[bitRecDoc11]
           ,[bitRecDoc12]
           ,[bitPay7]
           ,[bitPay8]
           ,[bitPay9]
           ,[bitPay10]
           ,[bitPay11]
           ,[bitPay12]
           ,[bitRec7]
           ,[bitRec8]
           ,[bitRec9]
           ,[bitRec10]
           ,[bitRec11]
           ,[bitRec12]
           ,[bitPayLine1]
           ,[bitPayLine2]
           ,[bitPayLine3]
           ,[bitPayLine4]
           ,[bitPayLine5]
           ,[bitPayLine6]
           ,[bitPayLine7]
           ,[bitPayLine8]
           ,[bitPayLine9]
           ,[bitPayLine10]
           ,[bitPayLine11]
           ,[bitPayLine12]
           ,[bitRecLine1]
           ,[bitRecLine2]
           ,[bitRecLine3]
           ,[bitRecLine4]
           ,[bitRecLine5]
           ,[bitRecLine6]
           ,[bitRecLine7]
           ,[bitRecLine8]
           ,[bitRecLine9]
           ,[bitRecLine10]
           ,[bitRecLine11]
           ,[bitRecLine12]
           ,[bitProj1]
           ,[bitProj2]
           ,[bitProj3]
           ,[bitProj4]
           ,[bitProj5]
           ,[bitProj6]
           ,[bitProj7]
           ,[bitProj8]
           ,[bitProj9]
           ,[bitProj10]
           ,[bitProj11]
           ,[bitProj12]
           ,[bitRecDoc13]
           ,[bitRecDoc14]
           ,[bitDelRoute1]
           ,[bitDelRoute2]
           ,[bitDelRoute3]
           ,[bitDelRoute4]
           ,[bitDelRoute5]
           ,[bitDelRoute6]
           ,[bitDelVehicle1]
           ,[bitDelVehicle2]
           ,[bitDelVehicle3]
           ,[bitDelVehicle4]
           ,[bitDelVehicle5]
           ,[bitDelVehicle6]
           ,[bitDelDriver1]
           ,[bitDelDriver2]
           ,[bitDelDriver3]
           ,[bitDelDriver4]
           ,[bitDelDriver5]
           ,[bitDelDriver6]
           ,[strFA1]
           ,[strFA2]
           ,[strFA3]
           ,[strFA4]
           ,[strFA5]
           ,[strFA6]
           ,[strFA7]
           ,[strFA8]
           ,[strFA9]
           ,[strFA10]
           ,[strFA11]
           ,[strFA12]
           ,[bitFA1]
           ,[bitFA2]
           ,[bitFA3]
           ,[bitFA4]
           ,[bitFA5]
           ,[bitFA6]
           ,[bitFA7]
           ,[bitFA8]
           ,[bitFA9]
           ,[bitFA10]
           ,[bitFA11]
           ,[bitFA12]
           ,[strDelMethod1]
           ,[strDelMethod2]
           ,[strDelMethod3]
           ,[strDelMethod4]
           ,[strDelMethod5]
           ,[strDelMethod6]
           ,[bitDelMethod1]
           ,[bitDelMethod2]
           ,[bitDelMethod3]
           ,[bitDelMethod4]
           ,[bitDelMethod5]
           ,[bitDelMethod6]
           ,[strRec13]
           ,[strRec14]
           ,[strRec15]
           ,[strRec16]
           ,[bitRec13]
           ,[bitRec14]
           ,[bitRec15]
           ,[bitRec16]
           ,[strRec17]
           ,[strRec18]
           ,[bitRec17]
           ,[bitRec18]) 
	   SELECT  
	   [strGL1]
           ,[strGL2]
           ,[strGL3]
           ,[strGL4]
           ,[strGL5]
           ,[strGL6]
           ,[strPay1]
           ,[strPay2]
           ,[strPay3]
           ,[strPay4]
           ,[strPay5]
           ,[strPay6]
           ,[strRec1]
           ,[strRec2]
           ,[strRec3]
           ,[strRec4]
           ,[strRec5]
           ,[strRec6]
           ,[strInv1]
           ,[strInv2]
           ,[strInv3]
           ,[strInv4]
           ,[strInv5]
           ,[strInv6]
           ,[strPayDoc1]
           ,[strPayDoc2]
           ,[strPayDoc3]
           ,[strPayDoc4]
           ,[strPayDoc5]
           ,[strPayDoc6]
           ,[strPayDoc7]
           ,[strPayDoc8]
           ,[strPayDoc9]
           ,[strPayDoc10]
           ,[strPayDoc11]
           ,[strPayDoc12]
           ,[strRecDoc1]
           ,[strRecDoc2]
           ,[strRecDoc3]
           ,[strRecDoc4]
           ,[strRecDoc5]
           ,[strRecDoc6]
           ,[strRecDoc7]
           ,[strRecDoc8]
           ,[strRecDoc9]
           ,[strRecDoc10]
           ,[strRecDoc11]
           ,[strRecDoc12]
           ,[strPay7]
           ,[strPay8]
           ,[strPay9]
           ,[strPay10]
           ,[strPay11]
           ,[strPay12]
           ,[strRec7]
           ,[strRec8]
           ,[strRec9]
           ,[strRec10]
           ,[strRec11]
           ,[strRec12]
           ,[strPayLine1]
           ,[strPayLine2]
           ,[strPayLine3]
           ,[strPayLine4]
           ,[strPayLine5]
           ,[strPayLine6]
           ,[strPayLine7]
           ,[strPayLine8]
           ,[strPayLine9]
           ,[strPayLine10]
           ,[strPayLine11]
           ,[strPayLine12]
           ,[strRecLine1]
           ,[strRecLine2]
           ,[strRecLine3]
           ,[strRecLine4]
           ,[strRecLine5]
           ,[strRecLine6]
           ,[strRecLine7]
           ,[strRecLine8]
           ,[strRecLine9]
           ,[strRecLine10]
           ,[strRecLine11]
           ,[strRecLine12]
           ,[strProj1]
           ,[strProj2]
           ,[strProj3]
           ,[strProj4]
           ,[strProj5]
           ,[strProj6]
           ,[strProj7]
           ,[strProj8]
           ,[strProj9]
           ,[strProj10]
           ,[strProj11]
           ,[strProj12]
           ,[strRecDoc13]
           ,[strRecDoc14]
           ,[strDelRoute1]
           ,[strDelRoute2]
           ,[strDelRoute3]
           ,[strDelRoute4]
           ,[strDelRoute5]
           ,[strDelRoute6]
           ,[strDelVehicle1]
           ,[strDelVehicle2]
           ,[strDelVehicle3]
           ,[strDelVehicle4]
           ,[strDelVehicle5]
           ,[strDelVehicle6]
           ,[strDelDriver1]
           ,[strDelDriver2]
           ,[strDelDriver3]
           ,[strDelDriver4]
           ,[strDelDriver5]
           ,[strDelDriver6]
           ,[bitGL1]
           ,[bitGL2]
           ,[bitGL3]
           ,[bitGL4]
           ,[bitGL5]
           ,[bitGL6]
           ,[bitPay1]
           ,[bitPay2]
           ,[bitPay3]
           ,[bitPay4]
           ,[bitPay5]
           ,[bitPay6]
           ,[bitRec1]
           ,[bitRec2]
           ,[bitRec3]
           ,[bitRec4]
           ,[bitRec5]
           ,[bitRec6]
           ,[bitInv1]
           ,[bitInv2]
           ,[bitInv3]
           ,[bitInv4]
           ,[bitInv5]
           ,[bitInv6]
           ,[bitPayDoc1]
           ,[bitPayDoc2]
           ,[bitPayDoc3]
           ,[bitPayDoc4]
           ,[bitPayDoc5]
           ,[bitPayDoc6]
           ,[bitPayDoc7]
           ,[bitPayDoc8]
           ,[bitPayDoc9]
           ,[bitPayDoc10]
           ,[bitPayDoc11]
           ,[bitPayDoc12]
           ,[bitRecDoc1]
           ,[bitRecDoc2]
           ,[bitRecDoc3]
           ,[bitRecDoc4]
           ,[bitRecDoc5]
           ,[bitRecDoc6]
           ,[bitRecDoc7]
           ,[bitRecDoc8]
           ,[bitRecDoc9]
           ,[bitRecDoc10]
           ,[bitRecDoc11]
           ,[bitRecDoc12]
           ,[bitPay7]
           ,[bitPay8]
           ,[bitPay9]
           ,[bitPay10]
           ,[bitPay11]
           ,[bitPay12]
           ,[bitRec7]
           ,[bitRec8]
           ,[bitRec9]
           ,[bitRec10]
           ,[bitRec11]
           ,[bitRec12]
           ,[bitPayLine1]
           ,[bitPayLine2]
           ,[bitPayLine3]
           ,[bitPayLine4]
           ,[bitPayLine5]
           ,[bitPayLine6]
           ,[bitPayLine7]
           ,[bitPayLine8]
           ,[bitPayLine9]
           ,[bitPayLine10]
           ,[bitPayLine11]
           ,[bitPayLine12]
           ,[bitRecLine1]
           ,[bitRecLine2]
           ,[bitRecLine3]
           ,[bitRecLine4]
           ,[bitRecLine5]
           ,[bitRecLine6]
           ,[bitRecLine7]
           ,[bitRecLine8]
           ,[bitRecLine9]
           ,[bitRecLine10]
           ,[bitRecLine11]
           ,[bitRecLine12]
           ,[bitProj1]
           ,[bitProj2]
           ,[bitProj3]
           ,[bitProj4]
           ,[bitProj5]
           ,[bitProj6]
           ,[bitProj7]
           ,[bitProj8]
           ,[bitProj9]
           ,[bitProj10]
           ,[bitProj11]
           ,[bitProj12]
           ,[bitRecDoc13]
           ,[bitRecDoc14]
           ,[bitDelRoute1]
           ,[bitDelRoute2]
           ,[bitDelRoute3]
           ,[bitDelRoute4]
           ,[bitDelRoute5]
           ,[bitDelRoute6]
           ,[bitDelVehicle1]
           ,[bitDelVehicle2]
           ,[bitDelVehicle3]
           ,[bitDelVehicle4]
           ,[bitDelVehicle5]
           ,[bitDelVehicle6]
           ,[bitDelDriver1]
           ,[bitDelDriver2]
           ,[bitDelDriver3]
           ,[bitDelDriver4]
           ,[bitDelDriver5]
           ,[bitDelDriver6]
           ,[strFA1]
           ,[strFA2]
           ,[strFA3]
           ,[strFA4]
           ,[strFA5]
           ,[strFA6]
           ,[strFA7]
           ,[strFA8]
           ,[strFA9]
           ,[strFA10]
           ,[strFA11]
           ,[strFA12]
           ,[bitFA1]
           ,[bitFA2]
           ,[bitFA3]
           ,[bitFA4]
           ,[bitFA5]
           ,[bitFA6]
           ,[bitFA7]
           ,[bitFA8]
           ,[bitFA9]
           ,[bitFA10]
           ,[bitFA11]
           ,[bitFA12]
           ,[strDelMethod1]
           ,[strDelMethod2]
           ,[strDelMethod3]
           ,[strDelMethod4]
           ,[strDelMethod5]
           ,[strDelMethod6]
           ,[bitDelMethod1]
           ,[bitDelMethod2]
           ,[bitDelMethod3]
           ,[bitDelMethod4]
           ,[bitDelMethod5]
           ,[bitDelMethod6]
           ,[strRec13]
           ,[strRec14]
           ,[strRec15]
           ,[strRec16]
           ,[bitRec13]
           ,[bitRec14]
           ,[bitRec15]
           ,[bitRec16]
           ,[strRec17]
           ,[strRec18]
           ,[bitRec17]
           ,[bitRec18]
	  FROM @tblData  as t 
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblOrderDocQ]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


/****** Object:  StoredProcedure [dbo].[AddUpdatetblOrderDocQ]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblOrderDocQ]
    @tblData AS OrderDocQTableType READONLY

AS
BEGIN
	BEGIN
      Insert into tblOrderDocQ (strOrdDocID,dteSystemDate,dteJournalDate,dteRequired,strUserName,strSoldTo,strShipTo,strReference,decSubTotal,decVAT,decTotal,strNotes,bitPrinted,bitEmailed,bitCleared,strSalesName,strAddInfo,strCurrency,bitIsForeign,decSubTotalF,decVATF,decTotalF,decExchange,strTerm,intDept,strField1,strField2,strField3,strField4,strField5,strField6,strField7,strField8,strField9,strField10,strField11,strField12,strSubFormated,strVATFormatted,strTotFormatted,decTotalCost,decTotalMarkup,strCustName,decDiscPerc,decDiscAmt,decDiscAmtF,strDiscFormatted,strStatusTypeCode,bitDeclined,bitApproved,strApprovedBy,dteApprovedDate,decTotalWeight,decTotalVolWeight,strSOReasonCode,decDeliveryCost,decDeliveryCostF,strDeliveryCostFormatted,strDelMethodCode,intRevisionNumber,strStoreNumber,strEDI)
	SELECT 
	strOrdDocID,dteSystemDate,dteJournalDate,dteRequired,strUserName,strSoldTo,strShipTo,strReference,decSubTotal,decVAT,decTotal,strNotes,bitPrinted,bitEmailed,bitCleared,strSalesName,strAddInfo,strCurrency,bitIsForeign,decSubTotalF,decVATF,decTotalF,decExchange,strTerm,intDept,strField1,strField2,strField3,strField4,strField5,strField6,strField7,strField8,strField9,strField10,strField11,strField12,strSubFormated,strVATFormatted,strTotFormatted,decTotalCost,decTotalMarkup,strCustName,decDiscPerc,decDiscAmt,decDiscAmtF,strDiscFormatted,strStatusTypeCode,bitDeclined,bitApproved,strApprovedBy,dteApprovedDate,decTotalWeight,decTotalVolWeight,strSOReasonCode,decDeliveryCost,decDeliveryCostF,strDeliveryCostFormatted,strDelMethodCode,intRevisionNumber,strStoreNumber,strEDI
	 FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblOrderDocQ WHERE strOrdDocID=t.strOrdDocID)
	END
	
	BEGIN
	 UPDATE [dbo].tblOrderDocQ SET strOrdDocID=table2.strOrdDocID,dteSystemDate=table2.dteSystemDate,dteJournalDate=table2.dteJournalDate,dteRequired=table2.dteRequired,strUserName=table2.strUserName,strSoldTo=table2.strSoldTo,strShipTo=table2.strShipTo,strReference=table2.strReference,decSubTotal=table2.decSubTotal,decVAT=table2.decVAT,decTotal=table2.decTotal,strNotes=table2.strNotes,bitPrinted=table2.bitPrinted,bitEmailed=table2.bitEmailed,bitCleared=table2.bitCleared,strSalesName=table2.strSalesName,strAddInfo=table2.strAddInfo,strCurrency=table2.strCurrency,bitIsForeign=table2.bitIsForeign,decSubTotalF=table2.decSubTotalF,decVATF=table2.decVATF,decTotalF=table2.decTotalF,decExchange=table2.decExchange,strTerm=table2.strTerm,intDept=table2.intDept,strField1=table2.strField1,strField2=table2.strField2,strField3=table2.strField3,strField4=table2.strField4,strField5=table2.strField5,strField6=table2.strField6,strField7=table2.strField7,strField8=table2.strField8,strField9=table2.strField9,strField10=table2.strField10,strField11=table2.strField11,strField12=table2.strField12,strSubFormated=table2.strSubFormated,strVATFormatted=table2.strVATFormatted,strTotFormatted=table2.strTotFormatted,decTotalCost=table2.decTotalCost,decTotalMarkup=table2.decTotalMarkup,strCustName=table2.strCustName,decDiscPerc=table2.decDiscPerc,decDiscAmt=table2.decDiscAmt,decDiscAmtF=table2.decDiscAmtF,strDiscFormatted=table2.strDiscFormatted,strStatusTypeCode=table2.strStatusTypeCode,bitDeclined=table2.bitDeclined,bitApproved=table2.bitApproved,strApprovedBy=table2.strApprovedBy,dteApprovedDate=table2.dteApprovedDate,decTotalWeight=table2.decTotalWeight,decTotalVolWeight=table2.decTotalVolWeight,strSOReasonCode=table2.strSOReasonCode,decDeliveryCost=table2.decDeliveryCost,decDeliveryCostF=table2.decDeliveryCostF,strDeliveryCostFormatted=table2.strDeliveryCostFormatted,strDelMethodCode=table2.strDelMethodCode,intRevisionNumber=table2.intRevisionNumber,strStoreNumber=table2.strStoreNumber,strEDI=table2.strEDI 
FROM tblOrderDocQ as table1
	INNER JOIN @tblData as table2
	ON (table1.strOrdDocID=table2.strOrdDocID)
		END
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblPOSDr]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdatetblPOSDr] @tblData
AS
POSDrTableType READONLY AS

BEGIN
	BEGIN
		UPDATE tblPOSDr
		SET strDrawerName = table2.strDrawerName
			,intCashCheq = table2.intCashCheq
			,intCreditCard = table2.intCreditCard
			,intCoupGift = table2.intCoupGift
			,intOverShort = table2.intOverShort
			,intPettyCash = table2.intPettyCash
			,intDept = table2.intDept
			,uidCenterID = table2.uidCenterID
			,intAccReceipt = table2.intAccReceipt
			,strCustName = table2.strCustName
			,strLocName = table2.strLocName
			,strPEDID = table2.strPEDID
			,intOfflineTerminalId = table2.intOfflineTerminalId
			,strDrawerGroup = table2.strDrawerGroup
		FROM tblPOSDr AS table1
		INNER JOIN @tblData AS table2 ON table1.strDrawerName = table2.strDrawerName
	END

	BEGIN
		INSERT INTO tblPOSDr (
			strDrawerName
			,intCashCheq
			,intCreditCard
			,intCoupGift
			,intOverShort
			,intPettyCash
			,intDept
			,uidCenterID
			,intAccReceipt
			,strCustName
			,strLocName
			,strPEDID
			,intOfflineTerminalId
			,strDrawerGroup
			)
		SELECT strDrawerName
			,intCashCheq
			,intCreditCard
			,intCoupGift
			,intOverShort
			,intPettyCash
			,intDept
			,uidCenterID
			,intAccReceipt
			,strCustName
			,strLocName
			,strPEDID
			,intOfflineTerminalId
			,strDrawerGroup
		FROM @tblData AS t
		WHERE NOT EXISTS (
				SELECT 1
				FROM tblPOSDr
				WHERE strDrawerName = t.strDrawerName
				)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblPOSDrs]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdatetblPOSDrs]
	    @tblData AS POSDrsTableType READONLY
AS
BEGIN
	BEGIN
       Insert into tblPOSDrs ([strDrawerName], [uidSessionID], [intStatus], [strAssignedUser], [dteSessionDate], [strCreateUser], [dteCreated], [dteCashedOut], [strClosedUser], [dteClosed], [strTerminal], [decOpenVal], [decCashBal], [decCkBal], [decCCBal], [decGiftCouBal], [decAccountBal], [decTotalDrops], [decTotalSales], [decCurrentVal], [decCloseVal], [decOvSht], [decActCloseVal], [strOvShtReason],[intOfflineTerminalId],[intProfileMenuId],strCashTender,dteRowUpdated,bitAllowChangeUsers,intShortcutbarId)
	   SELECT [strDrawerName], [uidSessionID], [intStatus], [strAssignedUser], [dteSessionDate], [strCreateUser], [dteCreated], [dteCashedOut], [strClosedUser], [dteClosed], [strTerminal], [decOpenVal], [decCashBal], [decCkBal], [decCCBal], [decGiftCouBal], [decAccountBal], [decTotalDrops], [decTotalSales], [decCurrentVal], [decCloseVal], [decOvSht], [decActCloseVal], [strOvShtReason],[intOfflineTerminalId],[intProfileMenuId],strCashTender,GETDATE(),bitAllowChangeUsers,intShortcutbarId
	    FROM @tblData  as t
	   WHERE  NOT EXISTS (SELECT 1 FROM tblPOSDrs WHERE [uidSessionID]=t.[uidSessionID]) 
	END

	BEGIN
	   UPDATE [dbo].tblPOSDrs SET [strDrawerName] = table2.[strDrawerName], [uidSessionID] = table2.[uidSessionID], [intStatus] = table2.[intStatus], [strAssignedUser] = table2.[strAssignedUser], [dteSessionDate] = table2.[dteSessionDate], [strCreateUser] = table2.[strCreateUser], [dteCreated] = table2.[dteCreated], [dteCashedOut] = table2.[dteCashedOut], [strClosedUser] = table2.[strClosedUser], [dteClosed] = table2.[dteClosed], [strTerminal] = table2.[strTerminal], [decOpenVal] = table2.[decOpenVal], [decCashBal] = table2.[decCashBal], [decCkBal] = table2.[decCkBal], [decCCBal] = table2.[decCCBal], [decGiftCouBal] = table2.[decGiftCouBal], [decAccountBal] = table2.[decAccountBal], [decTotalDrops] = table2.[decTotalDrops], [decTotalSales]  = table2.[decTotalSales], [decCurrentVal]  = table2.[decCurrentVal], [decCloseVal] = table2.[decCloseVal], [decOvSht] = table2.[decOvSht], [decActCloseVal] = table2.[decActCloseVal], [strOvShtReason] = table2.[strOvShtReason],[intOfflineTerminalId] = table2.[intOfflineTerminalId],[intProfileMenuId] = table2.[intProfileMenuId],strCashTender=table2.strCashTender,bitAllowChangeUsers = table2.bitAllowChangeUsers
	  ,intShortcutbarId = table2.intShortcutbarId
	  FROM tblPOSDrs as table1
		INNER JOIN @tblData as table2
		ON (table1.[uidSessionID]=table2.[uidSessionID])
	END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblPOSDrsSplitPmt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblPOSDrsSplitPmt]    Script Date: 09-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblPOSDrsSplitPmt]
      @tblData AS POSDrsSplitPmtTableType READONLY

AS
BEGIN
	   INSERT INTO  tblPOSDrsSplitPmt
	   (
	        uidSessionID, 
			strPaymentTypeName,
			intGLNumber,
			decTotal,
		    bitIsForeign,
			decExchange,
			decTotalF ,
			strCurrency    
	   ) 
	   SELECT
		   uidSessionID, 
			strPaymentTypeName,
			intGLNumber,
			decTotal ,
			bitIsForeign,
			decExchange,
			decTotalF  ,
			strCurrency    
	   	  FROM @tblData  as t 
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblPOSDrTenderTypes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdatetblPOSDrTenderTypes]
      @tblData AS POSDrTenderTypesTableType READONLY

AS
BEGIN
       TRUNCATE TABLE tblPOSDrTenderTypes

	   INSERT INTO  tblPOSDrTenderTypes
	   (
	     [strDrawerName], [strTenderTypeName], [bitUsed]
	   ) 
	   SELECT
		 [strDrawerName], [strTenderTypeName], [bitUsed]
	   	FROM @tblData  as t 
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblPOSOpts]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdatetblPOSOpts]
      @tblData AS POSOptsTableType READONLY

AS
BEGIN
	  	UPDATE [dbo].[tblPOSOpts]
      SET [bitDisablePOS] = table2.bitDisablePOS
      ,[bitAllowDisc] = table2.bitAllowDisc
      ,[bitAllowAcctSales] = table2.bitAllowAcctSales
      ,[bitAllowReturns] = table2.bitAllowReturns
      ,[bitAllowVoids] = table2.bitAllowVoids
      ,[intPOSPrcOpts] = table2.intPOSPrcOpts
      ,[bitCashMode] = table2.bitCashMode
      ,[strCustName] = table2.strCustName
      ,[bitDropWarn] = table2.bitDropWarn
      ,[decDropWarn] = table2.decDropWarn
      ,[bitDropReq] = table2.bitDropReq
      ,[decDropReq] = table2.decDropReq
      ,[bitAllowCheque] = table2.bitAllowCheque
      ,[bitAllowCC] = table2.bitAllowCC
      ,[bitAllowGC] = table2.bitAllowGC
      ,[bitAutoPrint] = table2.bitAutoPrint
      ,[bitEmbeddedEnabled] = table2.bitEmbeddedEnabled
      ,[strEmbFlag] = table2.strEmbFlag
      ,[intEmbBarSt] = table2.intEmbBarSt
      ,[intEmbBarEnd] = table2.intEmbBarEnd
      ,[intEmbType] = table2.intEmbType
      ,[intEmbQtySt] = table2.intEmbQtySt
      ,[intEmbQtyEnd] = table2.intEmbQtyEnd
      ,[intEmbQtyDec] = table2.intEmbQtyDec
      ,[intEmbPriceSt] = table2.intEmbPriceSt
      ,[intEmbPriceEnd] = table2.intEmbPriceEnd
      ,[intEmbPriceDec] = table2.intEmbPriceDec
      ,[bitDCRounding] = table2.bitDCRounding
      ,[decDCRounding] = table2.decDCRounding
      ,[intRefReq] = table2.intRefReq
      ,[intProcessingMode] = table2.intProcessingMode
      ,[intCNReasonReq] = table2.intCNReasonReq
      ,[bitReturnsRequireInvoice] = table2.bitReturnsRequireInvoice
      ,[bitTouchscreenPOS] = table2.bitTouchscreenPOS
      ,[bitPOSAIBC] = table2.bitPOSAIBC
      ,[strPosPricelist] = table2.strPosPricelist
      ,[bitUsePosPricelist] = table2.bitUsePosPricelist
      ,[bitActivateERPIntegration] = table2.bitActivateERPIntegration
      ,[bitERPAR] = table2.bitERPAR
      ,[bitERPPOS] = table2.bitERPPOS
      ,[strERPSystem] = table2.strERPSystem
      ,[strERPURL] = table2.strERPURL
      ,[strERPUser] = table2.strERPUser
      ,[strERPPassword] = table2.strERPPassword
      ,[dteLastUpdatedSynchTime] = table2.dteLastUpdatedSynchTime
      ,[intNumberOfHoursFromLastSynch] = table2.intNumberOfHoursFromLastSynch
	        ,[bitAllowPayouts] = table2.[bitAllowPayouts]
	  FROM  @tblData  as table2
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblPOSSyncStatus]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdatetblPOSSyncStatus] 
   	@strStatus varchar(50),
	@dteLastSyncDate datetime,
	@strErrorMessage varchar(max) = NULL,
	@strTableName varchar(100) = ''
AS
BEGIN
	IF NOT EXISTS (SELECT 1 FROM tblPOSSyncStatus where strTableName = @strTableName)
	BEGIN
	   INSERT INTO tblPOSSyncStatus(strStatus,dteLastSyncDate,strErrorMessage,strTableName) values(@strStatus,@dteLastSyncDate,@strErrorMessage,@strTableName)
	END
	ELSE
	BEGIN
	   UPDATE tblPOSSyncStatus SET strStatus=@strStatus,dteLastSyncDate=@dteLastSyncDate,strErrorMessage =@strErrorMessage where strTableName = @strTableName 
	END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblPriceData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblPriceData]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblPriceData]
	    @tblData AS PriceDataTableType READONLY
AS
BEGIN
	BEGIN
	  Insert into tblPriceData (strPricelist,strDesc,bitInactive,bitPriceIncl,strTaxCode)
	  SELECT strPricelist,strDesc,bitInactive,bitPriceIncl,strTaxCode
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblPriceData WHERE strPricelist=t.strPricelist)
	END

	BEGIN
	   UPDATE [dbo].tblPriceData SET strPricelist=table2.strPricelist,strDesc=table2.strDesc,bitInactive=table2.bitInactive,bitPriceIncl=table2.bitPriceIncl,strTaxCode=table2.strTaxCode 
	   FROM tblPriceData as table1
	INNER JOIN @tblData as table2
	ON (table1.strPricelist=table2.strPricelist)
	END
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblPricelists]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblPricelists]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblPricelists]
	    @tblData AS PricelistsTableType READONLY

AS
BEGIN
	BEGIN
		Insert into tblPricelists (uidPriceBasedID,strPricelist,intPriceListType,decPercentage,intRoundPrices,bitUpdateSellingPrice,bitOnlySellingPriceIncrease,bitShowZeroSellingPrice)
		SELECT uidPriceBasedID,strPricelist,intPriceListType,decPercentage,intRoundPrices,bitUpdateSellingPrice,bitOnlySellingPriceIncrease,bitShowZeroSellingPrice
		 FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblPricelists WHERE uidPriceBasedID=t.uidPriceBasedID)
	END

	BEGIN
	   UPDATE [dbo].tblPricelists SET uidPriceBasedID=table2.uidPriceBasedID,strPricelist=table2.strPricelist,intPriceListType=table2.intPriceListType,decPercentage=table2.decPercentage,intRoundPrices=table2.intRoundPrices,bitUpdateSellingPrice=table2.bitUpdateSellingPrice,bitOnlySellingPriceIncrease=table2.bitOnlySellingPriceIncrease,bitShowZeroSellingPrice=table2.bitShowZeroSellingPrice 
	FROM tblPricelists as table1
	INNER JOIN @tblData as table2
	ON (table1.uidPriceBasedID=table2.uidPriceBasedID)
		END
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblPriceListsByDate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblPriceListsByDate]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblPriceListsByDate]
	    @tblData AS PriceListsByDateTableType READONLY
 
AS
BEGIN
	BEGIN
	   INSERT INTO tblPriceListsByDate (uidPriceBasedID,strPricelist,dteStartDate,dteFinishDate,bitInactive)
	   SELECT uidPriceBasedID,strPricelist,dteStartDate,dteFinishDate,bitInactive
	    FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblPriceListsByDate WHERE uidPriceBasedID=t.uidPriceBasedID)
	END
	
	BEGIN
	   UPDATE [dbo].tblPriceListsByDate SET
	    uidPriceBasedID= table2.uidPriceBasedID,strPricelist= table2.strPricelist,dteStartDate= table2.dteStartDate,dteFinishDate=table2.dteFinishDate ,bitInactive= table2.bitInactive 
	  FROM tblPriceListsByDate as table1
	INNER JOIN @tblData as table2
	ON (table1.uidPriceBasedID=table2.uidPriceBasedID)
	END
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblPricelistsCat]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblPricelistsCat]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblPricelistsCat]
    @tblData AS PricelistsCatTableType READONLY
  
AS
BEGIN
    BEGIN
	 	INSERT INTO tblPricelistsCat (uidPriceBasedID,strPricelist,strCategory,decMarkup)
	    SELECT uidPriceBasedID,strPricelist,strCategory,decMarkup
		  FROM @tblData  as t 
	     WHERE  NOT EXISTS (SELECT 1 FROM tblPricelistsCat WHERE uidPriceBasedID=t.uidPriceBasedID and strPricelist=t.strPricelist and strCategory=t.strCategory)
	END

	BEGIN
	   UPDATE [dbo].tblPricelistsCat SET uidPriceBasedID=table2.uidPriceBasedID,strPricelist=table2.strPricelist,strCategory=table2.strCategory,decMarkup=table2.decMarkup
	   FROM tblPricelistsCat as table1
	   INNER JOIN @tblData as table2
	   ON ( table1.uidPriceBasedID=table2.uidPriceBasedID and table1.strPricelist=table2.strPricelist and table1.strCategory=table2.strCategory)
	END
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblPricelistsCatBuyout]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdatetblPricelistsCatBuyout]
    @tblData AS PricelistsCatBuyoutTableType READONLY
AS
BEGIN
 delete from tblPricelistsCatBuyout where uidPriceBasedID  not in (select uidPriceBasedID from  @tblData)
BEGIN
   UPDATE [dbo].[tblPricelistsCatBuyout]
   SET [uidPriceBasedID] = table2.uidPriceBasedID,
      [strPricelist] = table2.strPricelist,
      [strCategory] = table2.strCategory,
      [decBuyoutMarkup] = table2.decBuyoutMarkup
 FROM tblPricelistsCatBuyout as table1
 INNER JOIN @tblData as table2
 ON (table1.uidPriceBasedID=table2.uidPriceBasedID)
END

BEGIN
  INSERT INTO [dbo].[tblPricelistsCatBuyout]
           ([uidPriceBasedID]
           ,[strPricelist]
           ,[strCategory]
           ,[decBuyoutMarkup])
    SELECT  
       [uidPriceBasedID]
           ,[strPricelist]
           ,[strCategory]
           ,[decBuyoutMarkup]
   FROM @tblData  as t 
   WHERE  NOT EXISTS (SELECT 1 FROM tblPricelistsCatBuyout WHERE uidPriceBasedID=t.uidPriceBasedID)
END
End
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblProfile]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

 /****** Object:  StoredProcedure [dbo].[AddUpdatetblProfile]    Script Date: 27-08-2018 10:12:35 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblProfile]          
(          
 @ProfileId int  ,          
 @ScreenName nvarchar(50),          
 @ScreenDescription nvarchar(50),          
 @ScreenGridRow int,          
 @ScreenGridCol int,
 @FontSize int ,
    @IsShortcutsbar bit = 0  ,
	@FontColor nvarchar(50),
	@FontFamily nvarchar(200)
)          
AS          
    SET NOCOUNT ON          
    DECLARE @NewIdent Int
	      
    IF Not Exists(SELECT 1 FROM tblProfileMenu WHERE ProfileID = @ProfileID)          
    BEGIN          
        INSERT INTO tblProfileMenu          
        (          
           ScreenDescription,          
           ScreenName,          
		ScreenGridCol,          
           ScreenGridRow,                   
		Createddate  ,
		IsDefault,
		 FontSize,
		 IsShortcutsbar,
		 FontColor,
		 FontFamily
        )          
        VALUES          
        (          
            @ScreenDescription,          
            @ScreenName,          
            @ScreenGridCol,          
            @ScreenGridRow,         
            GETDATE()  ,
			0,
			@FontSize,
			@IsShortcutsbar,
			@FontColor,
			@FontFamily
        )          
      SET @NewIdent = SCOPE_IDENTITY()                
    END          
    ELSE          
    BEGIN          
     UPDATE tblProfileMenu SET           
     [ScreenName] = ISNULL(@ScreenName, [ScreenName]),        
     [ScreenDescription] = ISNULL(@ScreenDescription, [ScreenDescription]),        
     [ScreenGridCol] = ISNULL(@ScreenGridCol, [ScreenGridCol]),        
     [ScreenGridRow] = ISNULL(@ScreenGridRow, [ScreenGridRow]),        
     [CreatedDate] = GETDATE()  ,      
     FontSize = @FontSize   ,  
	        IsShortcutsbar = @IsShortcutsbar,
			FontColor = @FontColor,
			FontFamily = @FontFamily
	        
        WHERE          
            ProfileID = @ProfileID    
			
	    SET @NewIdent = @ProfileID  		       
    END 

	SELECT @NewIdent 
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblProfileMenu]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdatetblProfileMenu]
    @tblData AS ProfileMenuTableType READONLY
AS
BEGIN
delete from tblProfileMenu where ProfileID  not in (select ProfileID from  @tblData)
SET IDENTITY_INSERT tblProfileMenu ON
BEGIN
	UPDATE  tblProfileMenu SET
	ScreenName=table2.ScreenName, 
	ScreenDescription=table2.ScreenDescription,	
	ScreenGridRow=table2.ScreenGridRow,
	ScreenGridCol=table2.ScreenGridCol, 
	CreatedDate=table2.CreatedDate, 
	IsDefault=table2.IsDefault,
	FontSize=table2.FontSize,
	IsShortcutsbar = table2.IsShortcutsbar,
	FontColor=table2.FontColor,
	FontFamily=table2.FontFamily
	FROM tblProfileMenu as table1
	INNER JOIN @tblData as table2
	ON table1.ProfileID=table2.ProfileID
END

BEGIN
   INSERT INTO  [tblProfileMenu] 
	   (
	   ProfileID,
	  [ScreenName], 
	  [ScreenDescription],
	  [ScreenGridRow],
	  [ScreenGridCol], 
	  [CreatedDate], 
	  [IsDefault],
	  FontSize,
	  IsShortcutsbar,
	  FontColor,
	  FontFamily
	   ) 
	   SELECT  
	   ProfileID,
	[ScreenName], 
	[ScreenDescription],
	 [ScreenGridRow],
	  [ScreenGridCol], 
	  [CreatedDate], 
	  [IsDefault],
	  FontSize,
	  IsShortcutsbar,
	  FontColor,
	  FontFamily
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblProfileMenu WHERE ProfileID= t.ProfileID )
END
SET IDENTITY_INSERT tblProfileMenu OFF
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblProfileMenuItem]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblProfileMenuItem]    Script Date: 10-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblProfileMenuItem]          
(          
 @ProfileId int,   
 @ButtonType bit,
    @ItemID nvarchar(50),     
 @ItemShape nvarchar(50),           
 @ItemBackground nvarchar(50),           
 @ItemRow int,          
 @ItemCol int,   
 @ItemRowSpan int,
 @ItemColSpan int,  
 @IsImageVisible bit,    
 @LinkProfileID int     
)          
AS          
    SET NOCOUNT ON          
          
    BEGIN          
  INSERT INTO tblProfileMenuItems          
        (          
   ProfileID ,          
   ItemID,        
   Shape,           
   Background,           
   Itemrow,           
   ItemColumn , 
   ItemRowSpan,           
   ItemColumnSpan ,          
   IsImageVisible ,          
   ButtonType,           
   LinkProfileID,    
   CreatedDate          
        )          
        VALUES          
        (          
   @ProfileID ,          
   @ItemID,        
   @ItemShape,           
   @ItemBackground,           
   @Itemrow,           
   @ItemCol ,  
    @ItemRowSpan ,
 @ItemColSpan,          
   @IsImageVisible ,          
   @ButtonType,          
   @LinkProfileID,      
   GETDATE()          
        )          
    END          
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblProfileMenuItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdatetblProfileMenuItems]
    @tblData AS ProfileMenuItemsTableType READONLY
AS
BEGIN
delete from tblProfileMenuItems where ProfileItemID  not in (select ProfileItemID from  @tblData)
SET IDENTITY_INSERT tblProfileMenuItems ON
BEGIN
	UPDATE  tblProfileMenuItems SET
 [ProfileID]=table2.[ProfileID], 
 [ItemID]=table2.[ItemID],
  [Shape]=table2.[Shape],
   [Background]=table2.[Background], 
   [ItemRow]=table2.[ItemRow],
    [ItemColumn]=table2.[ItemColumn],
	 [IsImageVisible]=table2.[IsImageVisible],
	  [ButtonType]=table2.[ButtonType],
	   [LinkProfileID]=table2.[LinkProfileID],
	    [CreatedDate]=table2.[CreatedDate],
		 [ItemRowSpan]=table2.[ItemRowSpan],
		  [ItemColumnSpan]=table2.[ItemColumnSpan]
	FROM tblProfileMenuItems as table1
	INNER JOIN @tblData as table2
	ON table1.ProfileItemID=table2.ProfileItemID
END

BEGIN
   INSERT INTO  [tblProfileMenuItems] 
	(
		ProfileItemID,[ProfileID], [ItemID], [Shape], [Background], [ItemRow], [ItemColumn], [IsImageVisible], [ButtonType], [LinkProfileID], [CreatedDate], [ItemRowSpan], [ItemColumnSpan]
	) 
	   SELECT  
	ProfileItemID,[ProfileID], [ItemID], [Shape], [Background], [ItemRow], [ItemColumn], [IsImageVisible], [ButtonType], [LinkProfileID], [CreatedDate], [ItemRowSpan], [ItemColumnSpan]
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblProfileMenuItems WHERE ProfileItemID= t.ProfileItemID )
END
SET IDENTITY_INSERT tblProfileMenuItems OFF
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblSalesOrderEDIs]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblSalesOrderEDIs]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblSalesOrderEDIs]
	    @tblData AS SalesOrderEDIsTableType READONLY

AS
BEGIN
	BEGIN
		INSERT INTO tblSalesOrderEDIs (strEDI,strEDIDescription,strGLN,strEDISwitch,strFTPAddress,strFTPUser,strFTPPassword,bitInactive)
		SELECT strEDI,strEDIDescription,strGLN,strEDISwitch,strFTPAddress,strFTPUser,strFTPPassword,bitInactive
		 FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblSalesOrderEDIs WHERE strEDI=t.strEDI)
	END
	
	BEGIN
	   UPDATE tblSalesOrderEDIs SET strEDI=table2.strEDI,strEDIDescription=table2.strEDIDescription,strGLN=table2.strGLN,strEDISwitch=table2.strEDISwitch,strFTPAddress=table2.strFTPAddress,strFTPUser=table2.strFTPUser,strFTPPassword=table2.strFTPPassword,bitInactive=table2.bitInactive 
	   FROM tblSalesOrderEDIs as table1
	INNER JOIN @tblData as table2
	ON (table1.strEDI=table2.strEDI)
	END
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblSalesOrderReasons]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblSalesOrderReasons]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblSalesOrderReasons]
       @tblData AS SalesOrderReasonsTableType READONLY
AS
BEGIN
SET IDENTITY_INSERT tblSalesOrderReasons ON

	BEGIN
	    
        Insert into tblSalesOrderReasons (lngID,strSOReasonCode,strSOReasonDesc,bitInactive)
		SELECT lngID,strSOReasonCode,strSOReasonDesc,bitInactive
		  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblSalesOrderReasons WHERE strSOReasonCode=t.strSOReasonCode)
	END

	BEGIN
		  UPDATE [dbo].tblSalesOrderReasons SET strSOReasonCode=table2.strSOReasonCode,strSOReasonDesc=table2.strSOReasonDesc,bitInactive=table2.bitInactive 
	FROM tblSalesOrderReasons as table1
	INNER JOIN @tblData as table2
	ON (table1.strSOReasonCode=table2.strSOReasonCode)
	END
	SET IDENTITY_INSERT tblSalesOrderReasons OFF
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblSalesPersons]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblSalesPersons]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblSalesPersons]
	    @tblData AS SalesPersonsTableType READONLY
AS
BEGIN
	BEGIN
	   Insert into tblSalesPersons (strSalesName,strStreet1,strStreet2,strCity,strProvince,strPostal,strPhone,strCellPhone,strFax,strEmail,decYTDSales,bitInactive,dteUpdated,dteSince,strNotes,[uID],strCountry,strCountryCode,strFacebook,strLinkedIn,strSkype,imgPicture,bitIsWorkshopTechnician)
	   SELECT strSalesName,strStreet1,strStreet2,strCity,strProvince,strPostal,strPhone,strCellPhone,strFax,strEmail,decYTDSales,bitInactive,dteUpdated,dteSince,strNotes,[uID],strCountry,strCountryCode,strFacebook,strLinkedIn,strSkype,imgPicture,bitIsWorkshopTechnician
	    FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblSalesPersons WHERE strSalesName=t.strSalesName)
	END
	BEGIN
	UPDATE [dbo].tblSalesPersons SET strSalesName=table2.strSalesName,strStreet1=table2.strStreet1,strStreet2=table2.strStreet2,strCity=table2.strCity,strProvince=table2.strProvince,strPostal=table2.strPostal,strPhone=table2.strPhone,strCellPhone=table2.strCellPhone,strFax=table2.strFax,strEmail=table2.strEmail,decYTDSales=table2.decYTDSales,bitInactive=table2.bitInactive,dteUpdated=table2.dteUpdated,dteSince=table2.dteSince,strNotes=table2.strNotes,[uID]=table2.uID,strCountry=table2.strCountry,strCountryCode=table2.strCountryCode,strFacebook=table2.strFacebook,strLinkedIn=table2.strLinkedIn,strSkype=table2.strSkype,imgPicture=table2.imgPicture,bitIsWorkshopTechnician = table2.bitIsWorkshopTechnician
	 FROM tblSalesPersons as table1
	INNER JOIN @tblData as table2
	ON (table1.strSalesName=table2.strSalesName)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblSerialNumberTracking]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblSerialNumberTracking]    Script Date: 2020-05-26 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblSerialNumberTracking]
    @tblData AS SerialNumberTrackingTableTypeNew READONLY
AS
BEGIN
 SET IDENTITY_INSERT tblSerialNumberTracking ON
BEGIN
	UPDATE  [dbo].[tblSerialNumberTracking] SET
		    strPartNumber = table2.strPartNumber
		   , strSerialNumber = table2.strSerialNumber
		   , strUserName = table2.strUserName
		   , dteUpdatedDate = table2.dteUpdatedDate
		   , intType = table2.intType
		   , strDocID = table2.strDocID
		   , intLineNo = table2.intLineNo
		   , decQty = table2.decQty
		   , strLocation = table2.strLocation
		   , intStatus = table2.intStatus
		   , bitExpiryDate = table2.bitExpiryDate
		   , dteExpiryDate = table2.dteExpiryDate
		   , lngBinID	 = table2.lngBinID 
	FROM tblSerialNumberTracking as table1
	INNER JOIN @tblData as table2
	ON (table1.intLineNo=table2.lngID)
END

BEGIN
   INSERT INTO  [dbo].[tblSerialNumberTracking]
	   (
	    lngID, strPartNumber, strSerialNumber, strUserName, dteUpdatedDate, intType, strDocID, intLineNo, decQty, strLocation, intStatus, bitExpiryDate, dteExpiryDate, lngBinID	 
	   ) 
	   SELECT  
	     lngID, strPartNumber, strSerialNumber, strUserName, dteUpdatedDate, intType, strDocID, intLineNo, decQty, strLocation, intStatus, bitExpiryDate, dteExpiryDate, lngBinID	 
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblSerialNumberTracking WHERE lngID=t.lngID)
END
SET IDENTITY_INSERT tblSerialNumberTracking OFF
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblStatusTypes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblStatusTypes]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblStatusTypes]
       @tblData AS StatusTypesTableType READONLY

AS
BEGIN
SET IDENTITY_INSERT tblStatusTypes ON

	BEGIN
     
       Insert into tblStatusTypes (lngID,strStatusTypeCode,strStatusTypeDesc,bitInactive)
	   SELECT lngID,strStatusTypeCode,strStatusTypeDesc,bitInactive
 FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblStatusTypes WHERE strStatusTypeCode=t.strStatusTypeCode)
	END

	BEGIN
		UPDATE [dbo].tblStatusTypes SET strStatusTypeCode= table2.strStatusTypeCode,strStatusTypeDesc= table2.strStatusTypeDesc,bitInactive= table2.bitInactive 
	   FROM tblStatusTypes as table1
	INNER JOIN @tblData as table2
	ON (table1.strStatusTypeCode=table2.strStatusTypeCode)
	END
	SET IDENTITY_INSERT tblStatusTypes OFF
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblTaxCodeExt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[AddUpdatetblTaxCodeExt]
    @tblData AS TaxCodeExtTableType READONLY
AS
BEGIN

BEGIN
	UPDATE  tblTaxCodeExt SET
      [strTaxCode] = table2.[strTaxCode],
	   [strTaxName] = table2.[strTaxName],
	    [intStatus] = table2.[intStatus],
		 [decRate] = table2.[decRate],
		  [bitIncluded] = table2.[bitIncluded],
		   [bitRefundable]  = table2.[bitRefundable]
	FROM tblTaxCodeExt as table1
	INNER JOIN @tblData as table2
	ON table1.[strTaxCode] = table2.[strTaxCode]
END

BEGIN
   INSERT INTO  tblTaxCodeExt 
	   (
	      [strTaxCode], [strTaxName], [intStatus], [decRate], [bitIncluded], [bitRefundable]
	   ) 
	   SELECT  
	  [strTaxCode], [strTaxName], [intStatus], [decRate], [bitIncluded], [bitRefundable]
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblTaxCodeExt WHERE [strTaxCode]= t.[strTaxCode] )
END

END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblTaxCodes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblTaxCodes]    Script Date: 21-08-2018 10:13:15 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblTaxCodes] 
	    @tblData AS TaxCodesTableType READONLY

AS
BEGIN
	BEGIN
		Insert into tblTaxCodes (strTaxCode,strDescription,intAllowedJournals,bitDefVendors,bitDefCustomers,bitDefCBPayments,bitDefCBReceipts)
		select strTaxCode,strDescription,intAllowedJournals,bitDefVendors,bitDefCustomers,bitDefCBPayments,bitDefCBReceipts
		 FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblTaxCodes WHERE strTaxCode=t.strTaxCode)
	END

	BEGIN
		UPDATE [dbo].tblTaxCodes SET strTaxCode=table2.strTaxCode,strDescription=table2.strDescription,intAllowedJournals=table2.intAllowedJournals,bitDefVendors=table2.bitDefVendors,bitDefCustomers=table2.bitDefCustomers,bitDefCBPayments=table2.bitDefCBPayments,bitDefCBReceipts=table2.bitDefCBReceipts 
	   FROM tblTaxCodes as table1
	INNER JOIN @tblData as table2
	ON (table1.strTaxCode=table2.strTaxCode)
	END
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblTaxDef]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[AddUpdatetblTaxDef]
    @tblData AS TaxDefTableType READONLY
AS
BEGIN

BEGIN
	UPDATE  tblTaxDef SET
      [strTaxName] = table2.strTaxName,
	   [intPurchAcct] = table2.intPurchAcct,
	    [intSalesAcct] = table2.intSalesAcct
	FROM tblTaxDef as table1
	INNER JOIN @tblData as table2
	ON table1.[strTaxName] = table2.[strTaxName]
END

BEGIN
   INSERT INTO  tblTaxDef 
	   (
	      [strTaxName], [intPurchAcct], [intSalesAcct]
	   ) 
	   SELECT  
	 [strTaxName], [intPurchAcct], [intSalesAcct]
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblTaxDef WHERE [strTaxName]= t.[strTaxName] )
END

END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblTenderTypes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblTenderTypes]    Script Date: 21-08-2018 10:13:15 ******/  
CREATE PROCEDURE [dbo].[AddUpdatetblTenderTypes]   
     @tblData AS TenderTypesTableType READONLY  
AS  
BEGIN  
 BEGIN  
      INSERT INTO tblTenderTypes 
	  (
		strName
		,strDescription
		,intGLNumber
		,bitInActive
		,bitAccount
		,intDisplayOrder
		,bitCashbookIntegration
		,strIPAddress
		,intPortNum
		,bitSalesInvoice
		,bitLayBy
		,bitPOS
		,bitCash
		,bitEFTIntegration
		,strMerchantId
		,strTradeRootServer
		,intEFTPort
		,strPEDId
		,bitOpenCashDrawer
		,bitMGAIntegration
		,strMGAServerUrl
		,strMGAUsername
		,strMGAPassword
		,bitFEFTIntegration
		,strFEFTMerchantId
		,strServerUrl
		,intFEFTTransaction
		,bitFEFTPrintMerchantCopy
		,bitFEFTMobileNumberRequired
	)  
   SELECT  
		strName
		,strDescription
		,intGLNumber
		,bitInActive
		,bitAccount
		,intDisplayOrder
		,bitCashbookIntegration
		,strIPAddress
		,intPortNum
		,bitSalesInvoice
		,bitLayBy
		,bitPOS
		,bitCash
		,bitEFTIntegration
		,strMerchantId
		,strTradeRootServer
		,intEFTPort
		,strPEDId
		,bitOpenCashDrawer
		,bitMGAIntegration
		,strMGAServerUrl
		,strMGAUsername
		,strMGAPassword
		,bitFEFTIntegration
		,strFEFTMerchantId
		,strServerUrl
		,intFEFTTransaction
		,bitFEFTPrintMerchantCopy  
		,bitFEFTMobileNumberRequired
      FROM @tblData  as t   
   WHERE  NOT EXISTS (SELECT 1 FROM tblTenderTypes WHERE strName=t.strName)  
 END  
   
 BEGIN  
   UPDATE tblTenderTypes SET 
		strName=table2.strName
		,strDescription=table2.strDescription
		,intGLNumber=table2.intGLNumber
		,bitInActive=table2.bitInActive
		,bitAccount=table2.bitAccount
		,intDisplayOrder=table2.intDisplayOrder
		,bitCashbookIntegration=table2.bitCashbookIntegration
		,strIPAddress=table2.strIPAddress
		,intPortNum=table2.intPortNum
		,bitSalesInvoice=table2.bitSalesInvoice
		,bitLayBy=table2.bitLayBy
		,bitPOS=table2.bitPOS
		,bitCash=table2.bitCash
		,bitEFTIntegration=table2.bitEFTIntegration
		,strMerchantId=table2.strMerchantId
		,strTradeRootServer=table2.strTradeRootServer
		,intEFTPort=table2.intEFTPort
		,strPEDId=table2.strPEDId
		,bitOpenCashDrawer=table2.bitOpenCashDrawer
		,bitMGAIntegration=table2.bitMGAIntegration
		,strMGAServerUrl=table2.strMGAServerUrl
		,strMGAUsername=table2.strMGAUsername
		,strMGAPassword=table2.strMGAPassword
		,bitFEFTIntegration=table2.bitFEFTIntegration
		,strFEFTMerchantId=table2.strFEFTMerchantId
		,strServerUrl=table2.strServerUrl
		,intFEFTTransaction=table2.intFEFTTransaction
		,bitFEFTPrintMerchantCopy=table2.bitFEFTPrintMerchantCopy   
		,bitFEFTMobileNumberRequired = table2.bitFEFTMobileNumberRequired 
   FROM tblTenderTypes as table1  
 INNER JOIN @tblData as table2  
 ON (table1.strName=table2.strName)  
 END  
END  
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblTerminalSetup]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


/****** Object:  StoredProcedure [dbo].[AddUpdateTerminalSetup]    Script Date: 21-08-2018 10:13:16 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblTerminalSetup]  
(  
	@intTerminalId int = 0,
    @strTerminalCode nvarchar(50) = Null,  
    @strDescription nvarchar(100) = Null,  
    @strServerName nvarchar(max) = Null,  
    @strUserName nvarchar(max) = Null  ,
    @strPassword nvarchar(max) = Null
)  
AS  
IF Exists(SELECT 1 FROM tblTerminalSetup WHERE intTerminalId = @intTerminalId)
    BEGIN  
               UPDATE [tblTerminalSetup] SET   
               [strPassword] = ISNULL(@strPassword, [strPassword]),  
               [strTerminalCode] = ISNULL(@strTerminalCode, [strTerminalCode]),  
               [strDescription] = ISNULL(@strDescription, [strDescription])  ,
			   [strServerName] = ISNULL(@strServerName, [strServerName]),  
               [strUserName] = ISNULL(@strUserName, [strUserName]),
			   [dteCreatedDate] = getdate()
        WHERE  
            [intTerminalId] = @intTerminalId  
  
         SELECT CAST(scope_identity() AS int)
    END  
    ELSE  
    BEGIN  
		INSERT INTO [tblTerminalSetup]  
		values
        (  
		@strTerminalCode ,  
		@strDescription ,  
		@strServerName ,  
		@strUserName   ,
        @strPassword ,  
		getdate()
        )  
       SELECT CAST(scope_identity() AS int)
    END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblTerms]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblTerms]    Script Date: 21-08-2018 10:13:16 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblTerms] 
	    @tblData AS TermsTableType READONLY

AS
BEGIN
	BEGIN
	   INSERT INTO tblTerms (strTerm,intAllowedIn,intNetDue,intNetCalcBy,decSettleDisc,intSettleDays,intSettleCalcBy,intStatCalculated,bitCOD,bitDefCustomers,bitDefVendors,intTermType,intCalCalcBy,intISMonths,bitIsHP)
	   SELECT
strTerm,intAllowedIn,intNetDue,intNetCalcBy,decSettleDisc,intSettleDays,intSettleCalcBy,intStatCalculated,bitCOD,bitDefCustomers,bitDefVendors,intTermType,intCalCalcBy,intISMonths,bitIsHP
	    FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblTerms WHERE strTerm=t.strTerm)
	END
	
	BEGIN
		UPDATE tblTerms SET strTerm=table2.strTerm,intAllowedIn=table2.intAllowedIn,intNetDue=table2.intNetDue,intNetCalcBy=table2.intNetCalcBy,decSettleDisc=table2.decSettleDisc,intSettleDays=table2.intSettleDays,intSettleCalcBy=table2.intSettleCalcBy,intStatCalculated=table2.intStatCalculated,bitCOD=table2.bitCOD,bitDefCustomers=table2.bitDefCustomers,bitDefVendors=table2.bitDefVendors,intTermType=table2.intTermType,intCalCalcBy=table2.intCalCalcBy,intISMonths=table2.intISMonths,bitIsHP=table2.bitIsHP 
FROM tblTerms as table1
	INNER JOIN @tblData as table2
	ON (table1.strTerm=table2.strTerm)
		END
END

GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblTradeDiscMatrix]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblTradeDiscMatrix]    Script Date: 21-08-2018 10:13:16 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblTradeDiscMatrix] 
    @tblData AS TradeDiscMatrixTableType READONLY
AS
BEGIN
	BEGIN
		Insert into tblTradeDiscMatrix (strMatrixType,strDesc,bitInactive,bitApplyDisc)
		SELECT strMatrixType,strDesc,bitInactive,bitApplyDisc
		 FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblTradeDiscMatrix WHERE strMatrixType=t.strMatrixType)
	END

	BEGIN
		UPDATE [dbo].tblTradeDiscMatrix SET strMatrixType=table2.strMatrixType,strDesc=table2.strDesc,bitInactive=table2.bitInactive,bitApplyDisc=table2.bitApplyDisc
	    FROM tblTradeDiscMatrix as table1
	INNER JOIN @tblData as table2
	ON (table1.strMatrixType=table2.strMatrixType)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblTradeDiscMatrixTypes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblTradeDiscMatrixTypes]    Script Date: 06-01-2020 08:25:00 AM ******/
CREATE PROCEDURE [dbo].[AddUpdatetblTradeDiscMatrixTypes] @tblData
AS
TradeDiscMatrixTypesTableType READONLY AS

BEGIN
	BEGIN
		INSERT INTO tblTradeDiscMatrixTypes (
			uidMatrixID
			,strMatrixType
			,dteStartDate
			,dteFinishDate
			,bitInactive
			)
		SELECT uidMatrixID
			,strMatrixType
			,dteStartDate
			,dteFinishDate
			,bitInactive
		FROM @tblData AS t
		WHERE NOT EXISTS (
				SELECT 1
				FROM tblTradeDiscMatrixTypes
				WHERE uidMatrixID = t.uidMatrixID
				)
	END

	BEGIN
		UPDATE [dbo].tblTradeDiscMatrixTypes
		SET uidMatrixID = table2.uidMatrixID
			,strMatrixType = table2.strMatrixType
			,dteStartDate = table2.dteStartDate
			,dteFinishDate = table2.dteFinishDate
			,bitInactive = table2.bitInactive
		FROM tblTradeDiscMatrixTypes AS table1
		INNER JOIN @tblData AS table2 ON (table1.uidMatrixID = table2.uidMatrixID)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblTradeDiscMatrixTypesDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblTradeDiscMatrixTypesDT]    Script Date: 06-01-2020 08:25:00 AM ******/
CREATE PROCEDURE [dbo].[AddUpdatetblTradeDiscMatrixTypesDT] @tblData
AS
TradeDiscMatrixTypesDTTableType READONLY AS

BEGIN
	BEGIN
		INSERT INTO tblTradeDiscMatrixTypesDT (
			uidMatrixID
			,intType
			,intLineNo
			,decValueFrom
			,decValueTo
			,decDiscPerc
			,strPartNumber
			,dteRowUpdated
			)
		SELECT uidMatrixID
			,intType
			,intLineNo
			,decValueFrom
			,decValueTo
			,decDiscPerc
			,strPartNumber
			,GETDATE()
		FROM @tblData AS t
		WHERE NOT EXISTS (
				SELECT 1
				FROM tblTradeDiscMatrixTypesDT
				WHERE uidMatrixID = t.uidMatrixID
					AND intType = t.intType
					AND intLineNo = t.intLineNo
				)
	END

	BEGIN
		UPDATE [dbo].tblTradeDiscMatrixTypesDT
		SET uidMatrixID = table2.uidMatrixID
			,intType = table2.intType
			,intLineNo = table2.intLineNo
			,decValueFrom = table2.decValueFrom
			,decValueTo = table2.decValueTo
			,decDiscPerc = table2.decDiscPerc
			,strPartNumber = table2.strPartNumber
		FROM tblTradeDiscMatrixTypesDT AS table1
		INNER JOIN @tblData AS table2 ON (
				table1.uidMatrixID = table2.uidMatrixID
				AND table1.intType = table2.intType
				AND table1.intLineNo = table2.intLineNo
				)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblUsers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdatetblUsers]
 @tblData AS UsersTableType READONLY
AS
BEGIN
	BEGIN
    Insert into tblUsers (strUserName,strName,strCellNumber,strEmail,strPassword,blnIsAdmin,blnIsLockedOut,blnMustChange,blnCompany,blnCoFileHandle,blnGL,blnPayables,blnPayPayments,blnReceivables,blnRecReceipts,blnInventory,blnInvAdjust,blnInvCount,blnSMS,blnBusMgr,blnPOS,blnProjects,dteLastLogin,blnCashBook,blnReminders,blnMarketing,blnCollection,blnPOSCash,blnCoAdmin,blnMainSum,blnAcctSets,blnJournal,blnBankTrans,blnBankRecon,blnAPPurch,blnAPTax,blnARCredit,blnARSales,blnARBatch,blnInvPricelists,blnInvLoc,blnInvCats,blnInvAssbly,blnInvTrans,blnSMSCredits,blnPOSDrop,blnBulkSMS,blnGLExpense,blnDeposits,blnInvPDT,blnARPersons,blnAPBatch,blnAPBrowser,blnARBrowser,blnTemplates,blnAREmail,blnWHRec,blnWHPick,blnWHBatch,[uID],blnFiles,strLocName,blnCycle,blnInterest,blnAPOrders,blnAPReq,blnAROrders,blnARQuotes,blnARQuSys,blnWHStPick,blnInvBrowser,blnWHShp,blnWHPrPack,blnWHCont,blnWHMani,blnWHShBrow,blnJobCost,blnDept,blnSubLedger,blnCLetters,blnTop20,blnTransTab,blnRecPayJournal,blnARCats,blnInvDiscMatrix,blnARBlockDesc,blnARBlockUnit,blnARBlockDiscount,blnAPBlockDesc,blnAPBlockUnit,blnAPBlockDiscount,blnWHDelDriver,blnWHDelVehicle,blnWHDelRoute,blnARCreditRequests,blnBITab,blnBICubeAdd,blnBICubeEdit,blnBICubeDelete,blnBIViewAdd,blnBIViewEdit,blnBIViewDelete,blnARSendPricelists,blnInvNumConv,blnInvSerialTypes,blnAPCats,blnARPrintPreview,blnARCNChangesAllowed,blnARPriceChangeAllowed,blnAPDNChangesAllowed,blnARInvoiceAdjAllowed,blnARAllowCreditNotesAndRequestItems,blnAPPaymentApprovals,blnInvForecasting,blnInvBarcode,blnInvItemCostUpdater,blnInvItemRenaming,blnAPECOMSettings,blnAPShowStatsOnDocs,blnARShowStatsOnDocs,blnGLOpenItemAlloc,blnGLLR,blnGLLRFin,blnGLLRFinBalSheetStd,blnGLLRFinBalSheetComp,blnGLLRFinIncomeStd,blnGLLRFinIncomeComp,blnGLLRFinIncomeMulti,blnGLLRFinIncomeGP,blnGLLRFinIncomeMini,blnGLLRFinTrialBal,blnGLLRFinPerMovement,blnGLLRFinMultiCompany,blnGLLRTran,blnGLLRTranLedger,blnGLLRTranEntryType,blnGLLRTranTax,blnGLLRTranDocTran,blnGLLRBudgets,blnGLLRBudgetsAmounts,blnGLLRBudgetsCompIncome,blnGLLRBudgetsCompIncomeF,blnGLLRBudgetsCompBalSheet,blnGLLRDept,blnGLLRDeptBalSheetStd,blnGLLRDeptIncomeStd,blnGLLRDeptIncomeComp,blnGLLRDeptTrialBal,blnGLLRDeptLedger,blnGLLRDeptBudgetAmounts,blnGLLRDeptCompIncome,blnGLLRLists,blnGLLRListsAccounts,blnGLLRListsAccountSets,blnGLLRListsJournalCodes,blnGLCR,blnGLCRFin,blnGLCRFinIncome,blnGLCRFinIncomeMulti,blnGLCRTran,blnGLCRTranAlloc,blnGLCRTranAllocMissing,blnGLCRBudget,blnGLCRBudgetCompBudget,blnGLCRLists,blnGLCRListsProfitCenters,blnAPPR,blnAPPRFin,blnAPPRFinVendorAged,blnAPPRTran,blnAPPRTranVendorPurchases,blnAPPRTranPendingPurchaseOrders,blnAPPRTranPendingPurchaseReq,blnAPPRTranVendorTran,blnAPPRLists,blnAPPRListsVendors,blnAPPRListsContacts,blnARRR,blnARRRFin,blnARRRFinCustAged,blnARRRFinCallSheet,blnARRRFinCustStatements,blnARRRFinSalesStatements,blnARRRFinInvoiceGP,blnARRRFinCustProfiability,blnARRRFinCustSalesTargets,blnARRRFinCustSalesTrends,blnARRRFinSPPerf,blnARRRFinSPTargets,blnARRRTran,blnARRRTranCustSales,blnARRRTranSPSales,blnARRRTranSPMissing,blnARRRTranInvoiceDocs,blnARRRTranCashUp,blnARRRTranPendingSalesOrders,blnARRRTranClosedSalesOrders,blnARRRTranCredits,blnARRRTranCustTran,blnARRRTranOpenQuotes,blnARRRLists,blnARRRListsPricelist,blnARRRListsCustomers,blnARRRListsSalesPersons,blnARRRListsContactsList,blnIR,blnIRFin,blnIRFinInvAged,blnIRFinInvValuation,blnIRFinLocSum,blnIRFinInvLoc,blnIRFinQuantity,blnIRFinQuantityLoc,blnIRFinInvSalesTargets,blnIRTran,blnIRTranInvSales,blnIRTranInvTran,blnIRTranInvLedger,blnIRTranInvLedgerLoc,blnIRTranNegInvCorrections,blnIRTranPricelistChangeLog,blnIRTranSegInvMovement,blnIRTranSegInvSales,blnIRTranSerializedItemTracking,blnIRLists,blnIRListsPricing,blnIRListsInventory,blnIRListsStockCountSheets,blnIRListsAdjustments,blnWR,blnWROrders,blnWROrdersPendingPurchaseOrders,blnWROrdersPendingSalesOrders,blnPOSR,blnPOSRFin,blnPOSRFinDrawerClosing,blnPOSRFinCashierVariance,blnPOSRLists,blnPOSRListsCashDrawers,blnBR,blnBRProj,blnBRProjTender,blnBRProjAlloc,blnBRProjMissingAllow,blnBRProjSalesMatrix,blnBRProjPurchMatrix,blnBRProjCombinedMatrix,blnBRProjActvsBudget,blnBRAdmin,blnBRAdminHistory,blnSMSRLog,blnGLJournalReports,blnGLTransactionReports,blnAPPaymentsReports,blnAPTransactionsReports,blnARReceiptsReports,blnARTransactionsReports,blnISalesReports,blnITransactionsReports,blnSMSR,blnFHQCanApprove,blnFHQCreatePurchaseOrder,blnARViewMarginPercentage,blnAPPendingPayApprovals,blnGLLRTranCashBook,blnAPPRTranVendAccrual,blnIRListsItemWhereUsed,blnIRTranBillOfMaterials,blnAPBulkRFQ,blnInvProdSchedule,blnIRListsProductionSchedule,blnAPPRTranBulkRFQ,blnRecReceiptsReversal,blnARRRTranSalesSummary,blnDashMain,blnDashAR,blnARChangeCustOnSO,blnARChangeCustOnSQ,blnAPOrdersRemove,blnAPReqRemove,blnAROrdersRemove,blnARQuotesRemove,blnARCreditRequestsRemove,blnAPBlockTax,blnARBlockTax,blnAPBulkRFQRemove,blnARQuSysRemove,blnWHStPickRemove,blnWHRecRemove,blnWHShpRemove,blnWHContRemove,blnARMatrixType,blnARMatrixTypeEdit,blnARMatrixTypeRemove,blnIRTranInvEfficiency,blnInvLotNumExpiryDates,blnARRRTranMatrixTypeChangeLog,blnInvBulkLabelPrinting,bitInvVoucher,blnInvShowItemCost,bitInvWebstoreSync,strSalesName,intARDept,intAPDept,bitARVoucerReprint,blnARChangeDocInfo,blnAPChangeDocInfo,blnFADepreciateAsset,blnFAAssets,blnFAAssetTypes,blnFADepreciationMethods,blnFACostTypes,blnFADisposalMethods,blnFAR,blnFARSummary,blnFARAssetListing,blnFARDisposals,blnFARDepreciationListing,blnFARAssetPurchases,blnFARAssetEfficiency,blnInvDimensions,blnInvValueBasedPrice,blnInvValueBasedPriceEdit,blnInvValueBasedPriceRemove,blnFARTran,blnFARLists,blnARSOAdjAllowed,blnARSQAdjAllowed,blnARFHQAdjAllowed,blnARCNAdjAllowed,blnARCRAdjAllowed,blnARCreditNotes,blnARChangeDept,blnAPInvoiceAdjAllowed,blnAPPOAdjAllowed,blnAPPRAdjAllowed,blnARChangeCenter,bitPOSEnableEditDiscount,blnPOSOrders,blnPOSQuotes,blnPOSConvertOrders,blnPOSConvertQuotes,blnPOSAuthPayByAccount,blnPOSAuthoriseRefunds,blnARCreditBlockSI,blnARCreditBlockSO,blnARDeliveryAdvice,blnARDeliveryAdviceRemove,blnInvCanChangeSellingPrice,blnARSalesPersonChangeApproval,blnIRFinInvCostAnalysis,blnMFWorkOrders,blnMFJobs,blnMFJobAdjustApproval,blnMFProductionSchedule,blnMFPostWIP,blnMFBillOfMaterial,blnMFBOMAdjustApproval,blnMFWorkCentres,blnMFLabour,blnMFMachinery,blnMFTransferJobs,blnMFR,blnMFRTran,blnMFRWorkInProgress,blnMFRProdVariance,blnMFRManVariance,blnMFRLists,blnMFRBillOfMaterial,blnMFRResource,blnMFRItemWhereUsed,blnMFRSerialLotOutOfSeq,blnMFRMRP,blnInvWorkOrder,blnInvIntReq,blnInvIssReq,blnARRRTranCustAccrual,blnARRRFinOrderStatement,blnIRListsInvIntReq,blnMFCloseJobs,blnFAAssetsDisposal,blnFAAssetsLocations,blnFARAssetRegister,blnDashAP,blnDashInventory,blnDashWarehouse,blnAPSetupPOApprovers,blnApprovePurchaseOrders,blnMFRWCTransfer,blnInvCatMarginApproval,blnMobSa,blnMobSaOrdProcess,blnMobSaGeoTrack,blnMobPhDash,blnMobPhDashBankBal,blnMobPhDashSalesItemComp,blnMobPhDashSalesCustCat,blnMobPhDashOutCustCat,blnMobPhDashCustVendBal,blnMobPhDashInvQty,blnMobPhDashSalesPerf,blnMobPhPOApproval,blnMobPhDashTimesheet,blnBRProjClaimStatement,blnARRRTranCancelSalesDocs,blnAREditDeliveryMethod,blnInvIsRepackaging,blnIRRepackaging,blnContractBilling,blnContractBillingType,blnProcessContractBilling,blnARRRecurringInvoice,blnARRContractExpiry,blnARRContractReconciliation,blnAPReOrders,blnARShipmentsAuditTrail,blnWHDelMethod,blnDashBusiness,blnIRTranLotNumMovement,blnBankManager,blnAPPRTranInvoiceDocs,blnMFRJobStatus,blnARSalesOrderEDI,blnInvWorkCentres,blnAPGRVAdjustmentApproval,blnAPReturnSelection,blnAPReturnAdjustmentApproval,blnARDAAdjustmentApproval,blnMFReverseJobs,blnMFReverseJobEditQty,blnIRFinInvBin,blnAPPriceChangeAllowed,blnPOSTerminalSetup,blnPOSProfileMenu,blnPOSTerminalSetupList,blnARConfirmDeliveryAllowed,blnPOSPayouts,blnPOSLayby,blnPOSConvertLayby,blnPOSAuthoriseReturn,blnPOSCreateCustomer,blnPOSSync,blnPOSReinstallStoredProcedures,blnPOSRePrintLastInvoice,blnPOSOpenCashDrawer,blnESDSetupRegistration,blnPOSOpenPreviousReceipts,blnPOSReversePreviousReceipts,blnPOSReprintInvoiceFromHistory, dteLastPasswordChanged, blnARLBAdjAllowed, strDefaultLanguage, strDefaultCompanyLocation)
	SELECT
	strUserName,strName,strCellNumber,strEmail,strPassword,blnIsAdmin,blnIsLockedOut,0,blnCompany,blnCoFileHandle,blnGL,blnPayables,blnPayPayments,blnReceivables,blnRecReceipts,blnInventory,blnInvAdjust,blnInvCount,blnSMS,blnBusMgr,blnPOS,blnProjects,dteLastLogin,blnCashBook,blnReminders,blnMarketing,blnCollection,blnPOSCash,blnCoAdmin,blnMainSum,blnAcctSets,blnJournal,blnBankTrans,blnBankRecon,blnAPPurch,blnAPTax,blnARCredit,blnARSales,blnARBatch,blnInvPricelists,blnInvLoc,blnInvCats,blnInvAssbly,blnInvTrans,blnSMSCredits,blnPOSDrop,blnBulkSMS,blnGLExpense,blnDeposits,blnInvPDT,blnARPersons,blnAPBatch,blnAPBrowser,blnARBrowser,blnTemplates,blnAREmail,blnWHRec,blnWHPick,blnWHBatch,[uID],blnFiles,strLocName,blnCycle,blnInterest,blnAPOrders,blnAPReq,blnAROrders,blnARQuotes,blnARQuSys,blnWHStPick,blnInvBrowser,blnWHShp,blnWHPrPack,blnWHCont,blnWHMani,blnWHShBrow,blnJobCost,blnDept,blnSubLedger,blnCLetters,blnTop20,blnTransTab,blnRecPayJournal,blnARCats,blnInvDiscMatrix,blnARBlockDesc,blnARBlockUnit,blnARBlockDiscount,blnAPBlockDesc,blnAPBlockUnit,blnAPBlockDiscount,blnWHDelDriver,blnWHDelVehicle,blnWHDelRoute,blnARCreditRequests,blnBITab,blnBICubeAdd,blnBICubeEdit,blnBICubeDelete,blnBIViewAdd,blnBIViewEdit,blnBIViewDelete,blnARSendPricelists,blnInvNumConv,blnInvSerialTypes,blnAPCats,blnARPrintPreview,blnARCNChangesAllowed,blnARPriceChangeAllowed,blnAPDNChangesAllowed,blnARInvoiceAdjAllowed,blnARAllowCreditNotesAndRequestItems,blnAPPaymentApprovals,blnInvForecasting,blnInvBarcode,blnInvItemCostUpdater,blnInvItemRenaming,blnAPECOMSettings,blnAPShowStatsOnDocs,blnARShowStatsOnDocs,blnGLOpenItemAlloc,blnGLLR,blnGLLRFin,blnGLLRFinBalSheetStd,blnGLLRFinBalSheetComp,blnGLLRFinIncomeStd,blnGLLRFinIncomeComp,blnGLLRFinIncomeMulti,blnGLLRFinIncomeGP,blnGLLRFinIncomeMini,blnGLLRFinTrialBal,blnGLLRFinPerMovement,blnGLLRFinMultiCompany,blnGLLRTran,blnGLLRTranLedger,blnGLLRTranEntryType,blnGLLRTranTax,blnGLLRTranDocTran,blnGLLRBudgets,blnGLLRBudgetsAmounts,blnGLLRBudgetsCompIncome,blnGLLRBudgetsCompIncomeF,blnGLLRBudgetsCompBalSheet,blnGLLRDept,blnGLLRDeptBalSheetStd,blnGLLRDeptIncomeStd,blnGLLRDeptIncomeComp,blnGLLRDeptTrialBal,blnGLLRDeptLedger,blnGLLRDeptBudgetAmounts,blnGLLRDeptCompIncome,blnGLLRLists,blnGLLRListsAccounts,blnGLLRListsAccountSets,blnGLLRListsJournalCodes,blnGLCR,blnGLCRFin,blnGLCRFinIncome,blnGLCRFinIncomeMulti,blnGLCRTran,blnGLCRTranAlloc,blnGLCRTranAllocMissing,blnGLCRBudget,blnGLCRBudgetCompBudget,blnGLCRLists,blnGLCRListsProfitCenters,blnAPPR,blnAPPRFin,blnAPPRFinVendorAged,blnAPPRTran,blnAPPRTranVendorPurchases,blnAPPRTranPendingPurchaseOrders,blnAPPRTranPendingPurchaseReq,blnAPPRTranVendorTran,blnAPPRLists,blnAPPRListsVendors,blnAPPRListsContacts,blnARRR,blnARRRFin,blnARRRFinCustAged,blnARRRFinCallSheet,blnARRRFinCustStatements,blnARRRFinSalesStatements,blnARRRFinInvoiceGP,blnARRRFinCustProfiability,blnARRRFinCustSalesTargets,blnARRRFinCustSalesTrends,blnARRRFinSPPerf,blnARRRFinSPTargets,blnARRRTran,blnARRRTranCustSales,blnARRRTranSPSales,blnARRRTranSPMissing,blnARRRTranInvoiceDocs,blnARRRTranCashUp,blnARRRTranPendingSalesOrders,blnARRRTranClosedSalesOrders,blnARRRTranCredits,blnARRRTranCustTran,blnARRRTranOpenQuotes,blnARRRLists,blnARRRListsPricelist,blnARRRListsCustomers,blnARRRListsSalesPersons,blnARRRListsContactsList,blnIR,blnIRFin,blnIRFinInvAged,blnIRFinInvValuation,blnIRFinLocSum,blnIRFinInvLoc,blnIRFinQuantity,blnIRFinQuantityLoc,blnIRFinInvSalesTargets,blnIRTran,blnIRTranInvSales,blnIRTranInvTran,blnIRTranInvLedger,blnIRTranInvLedgerLoc,blnIRTranNegInvCorrections,blnIRTranPricelistChangeLog,blnIRTranSegInvMovement,blnIRTranSegInvSales,blnIRTranSerializedItemTracking,blnIRLists,blnIRListsPricing,blnIRListsInventory,blnIRListsStockCountSheets,blnIRListsAdjustments,blnWR,blnWROrders,blnWROrdersPendingPurchaseOrders,blnWROrdersPendingSalesOrders,blnPOSR,blnPOSRFin,blnPOSRFinDrawerClosing,blnPOSRFinCashierVariance,blnPOSRLists,blnPOSRListsCashDrawers,blnBR,blnBRProj,blnBRProjTender,blnBRProjAlloc,blnBRProjMissingAllow,blnBRProjSalesMatrix,blnBRProjPurchMatrix,blnBRProjCombinedMatrix,blnBRProjActvsBudget,blnBRAdmin,blnBRAdminHistory,blnSMSRLog,blnGLJournalReports,blnGLTransactionReports,blnAPPaymentsReports,blnAPTransactionsReports,blnARReceiptsReports,blnARTransactionsReports,blnISalesReports,blnITransactionsReports,blnSMSR,blnFHQCanApprove,blnFHQCreatePurchaseOrder,blnARViewMarginPercentage,blnAPPendingPayApprovals,blnGLLRTranCashBook,blnAPPRTranVendAccrual,blnIRListsItemWhereUsed,blnIRTranBillOfMaterials,blnAPBulkRFQ,blnInvProdSchedule,blnIRListsProductionSchedule,blnAPPRTranBulkRFQ,blnRecReceiptsReversal,blnARRRTranSalesSummary,blnDashMain,blnDashAR,blnARChangeCustOnSO,blnARChangeCustOnSQ,blnAPOrdersRemove,blnAPReqRemove,blnAROrdersRemove,blnARQuotesRemove,blnARCreditRequestsRemove,blnAPBlockTax,blnARBlockTax,blnAPBulkRFQRemove,blnARQuSysRemove,blnWHStPickRemove,blnWHRecRemove,blnWHShpRemove,blnWHContRemove,blnARMatrixType,blnARMatrixTypeEdit,blnARMatrixTypeRemove,blnIRTranInvEfficiency,blnInvLotNumExpiryDates,blnARRRTranMatrixTypeChangeLog,blnInvBulkLabelPrinting,bitInvVoucher,blnInvShowItemCost,bitInvWebstoreSync,strSalesName,intARDept,intAPDept,bitARVoucerReprint,blnARChangeDocInfo,blnAPChangeDocInfo,blnFADepreciateAsset,blnFAAssets,blnFAAssetTypes,blnFADepreciationMethods,blnFACostTypes,blnFADisposalMethods,blnFAR,blnFARSummary,blnFARAssetListing,blnFARDisposals,blnFARDepreciationListing,blnFARAssetPurchases,blnFARAssetEfficiency,blnInvDimensions,blnInvValueBasedPrice,blnInvValueBasedPriceEdit,blnInvValueBasedPriceRemove,blnFARTran,blnFARLists,blnARSOAdjAllowed,blnARSQAdjAllowed,blnARFHQAdjAllowed,blnARCNAdjAllowed,blnARCRAdjAllowed,blnARCreditNotes,blnARChangeDept,blnAPInvoiceAdjAllowed,blnAPPOAdjAllowed,blnAPPRAdjAllowed,blnARChangeCenter,bitPOSEnableEditDiscount,blnPOSOrders,blnPOSQuotes,blnPOSConvertOrders,blnPOSConvertQuotes,blnPOSAuthPayByAccount,blnPOSAuthoriseRefunds,blnARCreditBlockSI,blnARCreditBlockSO,blnARDeliveryAdvice,blnARDeliveryAdviceRemove,blnInvCanChangeSellingPrice,blnARSalesPersonChangeApproval,blnIRFinInvCostAnalysis,blnMFWorkOrders,blnMFJobs,blnMFJobAdjustApproval,blnMFProductionSchedule,blnMFPostWIP,blnMFBillOfMaterial,blnMFBOMAdjustApproval,blnMFWorkCentres,blnMFLabour,blnMFMachinery,blnMFTransferJobs,blnMFR,blnMFRTran,blnMFRWorkInProgress,blnMFRProdVariance,blnMFRManVariance,blnMFRLists,blnMFRBillOfMaterial,blnMFRResource,blnMFRItemWhereUsed,blnMFRSerialLotOutOfSeq,blnMFRMRP,blnInvWorkOrder,blnInvIntReq,blnInvIssReq,blnARRRTranCustAccrual,blnARRRFinOrderStatement,blnIRListsInvIntReq,blnMFCloseJobs,blnFAAssetsDisposal,blnFAAssetsLocations,blnFARAssetRegister,blnDashAP,blnDashInventory,blnDashWarehouse,blnAPSetupPOApprovers,blnApprovePurchaseOrders,blnMFRWCTransfer,blnInvCatMarginApproval,blnMobSa,blnMobSaOrdProcess,blnMobSaGeoTrack,blnMobPhDash,blnMobPhDashBankBal,blnMobPhDashSalesItemComp,blnMobPhDashSalesCustCat,blnMobPhDashOutCustCat,blnMobPhDashCustVendBal,blnMobPhDashInvQty,blnMobPhDashSalesPerf,blnMobPhPOApproval,blnMobPhDashTimesheet,blnBRProjClaimStatement,blnARRRTranCancelSalesDocs,blnAREditDeliveryMethod,blnInvIsRepackaging,blnIRRepackaging,blnContractBilling,blnContractBillingType,blnProcessContractBilling,blnARRRecurringInvoice,blnARRContractExpiry,blnARRContractReconciliation,blnAPReOrders,blnARShipmentsAuditTrail,blnWHDelMethod,blnDashBusiness,blnIRTranLotNumMovement,blnBankManager,blnAPPRTranInvoiceDocs,blnMFRJobStatus,blnARSalesOrderEDI,blnInvWorkCentres,blnAPGRVAdjustmentApproval,blnAPReturnSelection,blnAPReturnAdjustmentApproval,blnARDAAdjustmentApproval,blnMFReverseJobs,blnMFReverseJobEditQty,blnIRFinInvBin,blnAPPriceChangeAllowed,blnPOSTerminalSetup,blnPOSProfileMenu,blnPOSTerminalSetupList,blnARConfirmDeliveryAllowed,blnPOSPayouts,blnPOSLayby,blnPOSConvertLayby,blnPOSAuthoriseReturn,blnPOSCreateCustomer,blnPOSSync,blnPOSReinstallStoredProcedures,blnPOSRePrintLastInvoice,blnPOSOpenCashDrawer,blnESDSetupRegistration,blnPOSOpenPreviousReceipts,blnPOSReversePreviousReceipts, blnPOSReprintInvoiceFromHistory, dteLastPasswordChanged, blnARLBAdjAllowed, strDefaultLanguage,strDefaultCompanyLocation
	 FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblUsers WHERE strUserName=t.strUserName)
	END

	BEGIN
	   UPDATE [dbo].tblUsers SET strUserName=table2.strUserName,strName=table2.strName,strCellNumber=table2.strCellNumber,strEmail=table2.strEmail,strPassword=table2.strPassword,blnIsAdmin=table2.blnIsAdmin,blnIsLockedOut=table2.blnIsLockedOut,blnCompany=table2.blnCompany,blnCoFileHandle=table2.blnCoFileHandle,blnGL=table2.blnGL,blnPayables=table2.blnPayables,blnPayPayments=table2.blnPayPayments,blnReceivables=table2.blnReceivables,blnRecReceipts=table2.blnRecReceipts,blnInventory=table2.blnInventory,blnInvAdjust=table2.blnInvAdjust,blnInvCount=table2.blnInvCount,blnSMS=table2.blnSMS,blnBusMgr=table2.blnBusMgr,blnPOS=table2.blnPOS,blnProjects=table2.blnProjects,dteLastLogin=table2.dteLastLogin,blnCashBook=table2.blnCashBook,blnReminders=table2.blnReminders,blnMarketing=table2.blnMarketing,blnCollection=table2.blnCollection,blnPOSCash=table2.blnPOSCash,blnCoAdmin=table2.blnCoAdmin,blnMainSum=table2.blnMainSum,blnAcctSets=table2.blnAcctSets,blnJournal=table2.blnJournal,blnBankTrans=table2.blnBankTrans,blnBankRecon=table2.blnBankRecon,blnAPPurch=table2.blnAPPurch,blnAPTax=table2.blnAPTax,blnARCredit=table2.blnARCredit,blnARSales=table2.blnARSales,blnARBatch=table2.blnARBatch,blnInvPricelists=table2.blnInvPricelists,blnInvLoc=table2.blnInvLoc,blnInvCats=table2.blnInvCats,blnInvAssbly=table2.blnInvAssbly,blnInvTrans=table2.blnInvTrans,blnSMSCredits=table2.blnSMSCredits,blnPOSDrop=table2.blnPOSDrop,blnBulkSMS=table2.blnBulkSMS,blnGLExpense=table2.blnGLExpense,blnDeposits=table2.blnDeposits,blnInvPDT=table2.blnInvPDT,blnARPersons=table2.blnARPersons,blnAPBatch=table2.blnAPBatch,blnAPBrowser=table2.blnAPBrowser,blnARBrowser=table2.blnARBrowser,blnTemplates=table2.blnTemplates,blnAREmail=table2.blnAREmail,blnWHRec=table2.blnWHRec,blnWHPick=table2.blnWHPick,blnWHBatch=table2.blnWHBatch,[uID]=table2.uID,blnFiles=table2.blnFiles,strLocName=table2.strLocName,blnCycle=table2.blnCycle,blnInterest=table2.blnInterest,blnAPOrders=table2.blnAPOrders,blnAPReq=table2.blnAPReq,blnAROrders=table2.blnAROrders,blnARQuotes=table2.blnARQuotes,blnARQuSys=table2.blnARQuSys,blnWHStPick=table2.blnWHStPick,blnInvBrowser=table2.blnInvBrowser,blnWHShp=table2.blnWHShp,blnWHPrPack=table2.blnWHPrPack,blnWHCont=table2.blnWHCont,blnWHMani=table2.blnWHMani,blnWHShBrow=table2.blnWHShBrow,blnJobCost=table2.blnJobCost,blnDept=table2.blnDept,blnSubLedger=table2.blnSubLedger,blnCLetters=table2.blnCLetters,blnTop20=table2.blnTop20,blnTransTab=table2.blnTransTab,blnRecPayJournal=table2.blnRecPayJournal,blnARCats=table2.blnARCats,blnInvDiscMatrix=table2.blnInvDiscMatrix,blnARBlockDesc=table2.blnARBlockDesc,blnARBlockUnit=table2.blnARBlockUnit,blnARBlockDiscount=table2.blnARBlockDiscount,blnAPBlockDesc=table2.blnAPBlockDesc,blnAPBlockUnit=table2.blnAPBlockUnit,blnAPBlockDiscount=table2.blnAPBlockDiscount,blnWHDelDriver=table2.blnWHDelDriver,blnWHDelVehicle=table2.blnWHDelVehicle,blnWHDelRoute=table2.blnWHDelRoute,blnARCreditRequests=table2.blnARCreditRequests,blnBITab=table2.blnBITab,blnBICubeAdd=table2.blnBICubeAdd,blnBICubeEdit=table2.blnBICubeEdit,blnBICubeDelete=table2.blnBICubeDelete,blnBIViewAdd=table2.blnBIViewAdd,blnBIViewEdit=table2.blnBIViewEdit,blnBIViewDelete=table2.blnBIViewDelete,blnARSendPricelists=table2.blnARSendPricelists,blnInvNumConv=table2.blnInvNumConv,blnInvSerialTypes=table2.blnInvSerialTypes,blnAPCats=table2.blnAPCats,blnARPrintPreview=table2.blnARPrintPreview,blnARCNChangesAllowed=table2.blnARCNChangesAllowed,blnARPriceChangeAllowed=table2.blnARPriceChangeAllowed,blnAPDNChangesAllowed=table2.blnAPDNChangesAllowed,blnARInvoiceAdjAllowed=table2.blnARInvoiceAdjAllowed,blnARAllowCreditNotesAndRequestItems=table2.blnARAllowCreditNotesAndRequestItems,blnAPPaymentApprovals=table2.blnAPPaymentApprovals,blnInvForecasting=table2.blnInvForecasting,blnInvBarcode=table2.blnInvBarcode,blnInvItemCostUpdater=table2.blnInvItemCostUpdater,blnInvItemRenaming=table2.blnInvItemRenaming,blnAPECOMSettings=table2.blnAPECOMSettings,blnAPShowStatsOnDocs=table2.blnAPShowStatsOnDocs,blnARShowStatsOnDocs=table2.blnARShowStatsOnDocs,blnGLOpenItemAlloc=table2.blnGLOpenItemAlloc,blnGLLR=table2.blnGLLR,blnGLLRFin=table2.blnGLLRFin,blnGLLRFinBalSheetStd=table2.blnGLLRFinBalSheetStd,blnGLLRFinBalSheetComp=table2.blnGLLRFinBalSheetComp,blnGLLRFinIncomeStd=table2.blnGLLRFinIncomeStd,blnGLLRFinIncomeComp=table2.blnGLLRFinIncomeComp,blnGLLRFinIncomeMulti=table2.blnGLLRFinIncomeMulti,blnGLLRFinIncomeGP=table2.blnGLLRFinIncomeGP,blnGLLRFinIncomeMini=table2.blnGLLRFinIncomeMini,blnGLLRFinTrialBal=table2.blnGLLRFinTrialBal,blnGLLRFinPerMovement=table2.blnGLLRFinPerMovement,blnGLLRFinMultiCompany=table2.blnGLLRFinMultiCompany,blnGLLRTran=table2.blnGLLRTran,blnGLLRTranLedger=table2.blnGLLRTranLedger,blnGLLRTranEntryType=table2.blnGLLRTranEntryType,blnGLLRTranTax=table2.blnGLLRTranTax,blnGLLRTranDocTran=table2.blnGLLRTranDocTran,blnGLLRBudgets=table2.blnGLLRBudgets,blnGLLRBudgetsAmounts=table2.blnGLLRBudgetsAmounts,blnGLLRBudgetsCompIncome=table2.blnGLLRBudgetsCompIncome,blnGLLRBudgetsCompIncomeF=table2.blnGLLRBudgetsCompIncomeF,blnGLLRBudgetsCompBalSheet=table2.blnGLLRBudgetsCompBalSheet,blnGLLRDept=table2.blnGLLRDept,blnGLLRDeptBalSheetStd=table2.blnGLLRDeptBalSheetStd,blnGLLRDeptIncomeStd=table2.blnGLLRDeptIncomeStd,blnGLLRDeptIncomeComp=table2.blnGLLRDeptIncomeComp,blnGLLRDeptTrialBal=table2.blnGLLRDeptTrialBal,blnGLLRDeptLedger=table2.blnGLLRDeptLedger,blnGLLRDeptBudgetAmounts=table2.blnGLLRDeptBudgetAmounts,blnGLLRDeptCompIncome=table2.blnGLLRDeptCompIncome,blnGLLRLists=table2.blnGLLRLists,blnGLLRListsAccounts=table2.blnGLLRListsAccounts,blnGLLRListsAccountSets=table2.blnGLLRListsAccountSets,blnGLLRListsJournalCodes=table2.blnGLLRListsJournalCodes,blnGLCR=table2.blnGLCR,blnGLCRFin=table2.blnGLCRFin,blnGLCRFinIncome=table2.blnGLCRFinIncome,blnGLCRFinIncomeMulti=table2.blnGLCRFinIncomeMulti,blnGLCRTran=table2.blnGLCRTran,blnGLCRTranAlloc=table2.blnGLCRTranAlloc,blnGLCRTranAllocMissing=table2.blnGLCRTranAllocMissing,blnGLCRBudget=table2.blnGLCRBudget,blnGLCRBudgetCompBudget=table2.blnGLCRBudgetCompBudget,blnGLCRLists=table2.blnGLCRLists,blnGLCRListsProfitCenters=table2.blnGLCRListsProfitCenters,blnAPPR=table2.blnAPPR,blnAPPRFin=table2.blnAPPRFin,blnAPPRFinVendorAged=table2.blnAPPRFinVendorAged,blnAPPRTran=table2.blnAPPRTran,blnAPPRTranVendorPurchases=table2.blnAPPRTranVendorPurchases,blnAPPRTranPendingPurchaseOrders=table2.blnAPPRTranPendingPurchaseOrders,blnAPPRTranPendingPurchaseReq=table2.blnAPPRTranPendingPurchaseReq,blnAPPRTranVendorTran=table2.blnAPPRTranVendorTran,blnAPPRLists=table2.blnAPPRLists,blnAPPRListsVendors=table2.blnAPPRListsVendors,blnAPPRListsContacts=table2.blnAPPRListsContacts,blnARRR=table2.blnARRR,blnARRRFin=table2.blnARRRFin,blnARRRFinCustAged=table2.blnARRRFinCustAged,blnARRRFinCallSheet=table2.blnARRRFinCallSheet,blnARRRFinCustStatements=table2.blnARRRFinCustStatements,blnARRRFinSalesStatements=table2.blnARRRFinSalesStatements,blnARRRFinInvoiceGP=table2.blnARRRFinInvoiceGP,blnARRRFinCustProfiability=table2.blnARRRFinCustProfiability,blnARRRFinCustSalesTargets=table2.blnARRRFinCustSalesTargets,blnARRRFinCustSalesTrends=table2.blnARRRFinCustSalesTrends,blnARRRFinSPPerf=table2.blnARRRFinSPPerf,blnARRRFinSPTargets=table2.blnARRRFinSPTargets,blnARRRTran=table2.blnARRRTran,blnARRRTranCustSales=table2.blnARRRTranCustSales,blnARRRTranSPSales=table2.blnARRRTranSPSales,blnARRRTranSPMissing=table2.blnARRRTranSPMissing,blnARRRTranInvoiceDocs=table2.blnARRRTranInvoiceDocs,blnARRRTranCashUp=table2.blnARRRTranCashUp,blnARRRTranPendingSalesOrders=table2.blnARRRTranPendingSalesOrders,blnARRRTranClosedSalesOrders=table2.blnARRRTranClosedSalesOrders,blnARRRTranCredits=table2.blnARRRTranCredits,blnARRRTranCustTran=table2.blnARRRTranCustTran,blnARRRTranOpenQuotes=table2.blnARRRTranOpenQuotes,blnARRRLists=table2.blnARRRLists,blnARRRListsPricelist=table2.blnARRRListsPricelist,blnARRRListsCustomers=table2.blnARRRListsCustomers,blnARRRListsSalesPersons=table2.blnARRRListsSalesPersons,blnARRRListsContactsList=table2.blnARRRListsContactsList,blnIR=table2.blnIR,blnIRFin=table2.blnIRFin,blnIRFinInvAged=table2.blnIRFinInvAged,blnIRFinInvValuation=table2.blnIRFinInvValuation,blnIRFinLocSum=table2.blnIRFinLocSum,blnIRFinInvLoc=table2.blnIRFinInvLoc,blnIRFinQuantity=table2.blnIRFinQuantity,blnIRFinQuantityLoc=table2.blnIRFinQuantityLoc,blnIRFinInvSalesTargets=table2.blnIRFinInvSalesTargets,blnIRTran=table2.blnIRTran,blnIRTranInvSales=table2.blnIRTranInvSales,blnIRTranInvTran=table2.blnIRTranInvTran,blnIRTranInvLedger=table2.blnIRTranInvLedger,blnIRTranInvLedgerLoc=table2.blnIRTranInvLedgerLoc,blnIRTranNegInvCorrections=table2.blnIRTranNegInvCorrections,blnIRTranPricelistChangeLog=table2.blnIRTranPricelistChangeLog,blnIRTranSegInvMovement=table2.blnIRTranSegInvMovement,blnIRTranSegInvSales=table2.blnIRTranSegInvSales,blnIRTranSerializedItemTracking=table2.blnIRTranSerializedItemTracking,blnIRLists=table2.blnIRLists,blnIRListsPricing=table2.blnIRListsPricing,blnIRListsInventory=table2.blnIRListsInventory,blnIRListsStockCountSheets=table2.blnIRListsStockCountSheets,blnIRListsAdjustments=table2.blnIRListsAdjustments,blnWR=table2.blnWR,blnWROrders=table2.blnWROrders,blnWROrdersPendingPurchaseOrders=table2.blnWROrdersPendingPurchaseOrders,blnWROrdersPendingSalesOrders=table2.blnWROrdersPendingSalesOrders,blnPOSR=table2.blnPOSR,blnPOSRFin=table2.blnPOSRFin,blnPOSRFinDrawerClosing=table2.blnPOSRFinDrawerClosing,blnPOSRFinCashierVariance=table2.blnPOSRFinCashierVariance,blnPOSRLists=table2.blnPOSRLists,blnPOSRListsCashDrawers=table2.blnPOSRListsCashDrawers,blnBR=table2.blnBR,blnBRProj=table2.blnBRProj,blnBRProjTender=table2.blnBRProjTender,blnBRProjAlloc=table2.blnBRProjAlloc,blnBRProjMissingAllow=table2.blnBRProjMissingAllow,blnBRProjSalesMatrix=table2.blnBRProjSalesMatrix,blnBRProjPurchMatrix=table2.blnBRProjPurchMatrix,blnBRProjCombinedMatrix=table2.blnBRProjCombinedMatrix,blnBRProjActvsBudget=table2.blnBRProjActvsBudget,blnBRAdmin=table2.blnBRAdmin,blnBRAdminHistory=table2.blnBRAdminHistory,blnSMSRLog=table2.blnSMSRLog,blnGLJournalReports=table2.blnGLJournalReports,blnGLTransactionReports=table2.blnGLTransactionReports,blnAPPaymentsReports=table2.blnAPPaymentsReports,blnAPTransactionsReports=table2.blnAPTransactionsReports,blnARReceiptsReports=table2.blnARReceiptsReports,blnARTransactionsReports=table2.blnARTransactionsReports,blnISalesReports=table2.blnISalesReports,blnITransactionsReports=table2.blnITransactionsReports,blnSMSR=table2.blnSMSR,blnFHQCanApprove=table2.blnFHQCanApprove,blnFHQCreatePurchaseOrder=table2.blnFHQCreatePurchaseOrder,blnARViewMarginPercentage=table2.blnARViewMarginPercentage,blnAPPendingPayApprovals=table2.blnAPPendingPayApprovals,blnGLLRTranCashBook=table2.blnGLLRTranCashBook,blnAPPRTranVendAccrual=table2.blnAPPRTranVendAccrual,blnIRListsItemWhereUsed=table2.blnIRListsItemWhereUsed,blnIRTranBillOfMaterials=table2.blnIRTranBillOfMaterials,blnAPBulkRFQ=table2.blnAPBulkRFQ,blnInvProdSchedule=table2.blnInvProdSchedule,blnIRListsProductionSchedule=table2.blnIRListsProductionSchedule,blnAPPRTranBulkRFQ=table2.blnAPPRTranBulkRFQ,blnRecReceiptsReversal=table2.blnRecReceiptsReversal,blnARRRTranSalesSummary=table2.blnARRRTranSalesSummary,blnDashMain=table2.blnDashMain,blnDashAR=table2.blnDashAR,blnARChangeCustOnSO=table2.blnARChangeCustOnSO,blnARChangeCustOnSQ=table2.blnARChangeCustOnSQ,blnAPOrdersRemove=table2.blnAPOrdersRemove,blnAPReqRemove=table2.blnAPReqRemove,blnAROrdersRemove=table2.blnAROrdersRemove,blnARQuotesRemove=table2.blnARQuotesRemove,blnARCreditRequestsRemove=table2.blnARCreditRequestsRemove,blnAPBlockTax=table2.blnAPBlockTax,blnARBlockTax=table2.blnARBlockTax,blnAPBulkRFQRemove=table2.blnAPBulkRFQRemove,blnARQuSysRemove=table2.blnARQuSysRemove,blnWHStPickRemove=table2.blnWHStPickRemove,blnWHRecRemove=table2.blnWHRecRemove,blnWHShpRemove=table2.blnWHShpRemove,blnWHContRemove=table2.blnWHContRemove,blnARMatrixType=table2.blnARMatrixType,blnARMatrixTypeEdit=table2.blnARMatrixTypeEdit,blnARMatrixTypeRemove=table2.blnARMatrixTypeRemove,blnIRTranInvEfficiency=table2.blnIRTranInvEfficiency,blnInvLotNumExpiryDates=table2.blnInvLotNumExpiryDates,blnARRRTranMatrixTypeChangeLog=table2.blnARRRTranMatrixTypeChangeLog,blnInvBulkLabelPrinting=table2.blnInvBulkLabelPrinting,bitInvVoucher=table2.bitInvVoucher,blnInvShowItemCost=table2.blnInvShowItemCost,bitInvWebstoreSync=table2.bitInvWebstoreSync,strSalesName=table2.strSalesName,intARDept=table2.intARDept,intAPDept=table2.intAPDept,bitARVoucerReprint=table2.bitARVoucerReprint,blnARChangeDocInfo=table2.blnARChangeDocInfo,blnAPChangeDocInfo=table2.blnAPChangeDocInfo,blnFADepreciateAsset=table2.blnFADepreciateAsset,blnFAAssets=table2.blnFAAssets,blnFAAssetTypes=table2.blnFAAssetTypes,blnFADepreciationMethods=table2.blnFADepreciationMethods,blnFACostTypes=table2.blnFACostTypes,blnFADisposalMethods=table2.blnFADisposalMethods,blnFAR=table2.blnFAR,blnFARSummary=table2.blnFARSummary,blnFARAssetListing=table2.blnFARAssetListing,blnFARDisposals=table2.blnFARDisposals,blnFARDepreciationListing=table2.blnFARDepreciationListing,blnFARAssetPurchases=table2.blnFARAssetPurchases,blnFARAssetEfficiency=table2.blnFARAssetEfficiency,blnInvDimensions=table2.blnInvDimensions,blnInvValueBasedPrice=table2.blnInvValueBasedPrice,blnInvValueBasedPriceEdit=table2.blnInvValueBasedPriceEdit,blnInvValueBasedPriceRemove=table2.blnInvValueBasedPriceRemove,blnFARTran=table2.blnFARTran,blnFARLists=table2.blnFARLists,blnARSOAdjAllowed=table2.blnARSOAdjAllowed,blnARSQAdjAllowed=table2.blnARSQAdjAllowed,blnARFHQAdjAllowed=table2.blnARFHQAdjAllowed,blnARCNAdjAllowed=table2.blnARCNAdjAllowed,blnARCRAdjAllowed=table2.blnARCRAdjAllowed,blnARCreditNotes=table2.blnARCreditNotes,blnARChangeDept=table2.blnARChangeDept,blnAPInvoiceAdjAllowed=table2.blnAPInvoiceAdjAllowed,blnAPPOAdjAllowed=table2.blnAPPOAdjAllowed,blnAPPRAdjAllowed=table2.blnAPPRAdjAllowed,blnARChangeCenter=table2.blnARChangeCenter,bitPOSEnableEditDiscount=table2.bitPOSEnableEditDiscount,blnPOSOrders=table2.blnPOSOrders,blnPOSQuotes=table2.blnPOSQuotes,blnPOSConvertOrders=table2.blnPOSConvertOrders,blnPOSConvertQuotes=table2.blnPOSConvertQuotes,blnPOSAuthPayByAccount=table2.blnPOSAuthPayByAccount,blnPOSAuthoriseRefunds=table2.blnPOSAuthoriseRefunds,blnARCreditBlockSI=table2.blnARCreditBlockSI,blnARCreditBlockSO=table2.blnARCreditBlockSO,blnARDeliveryAdvice=table2.blnARDeliveryAdvice,blnARDeliveryAdviceRemove=table2.blnARDeliveryAdviceRemove,blnInvCanChangeSellingPrice=table2.blnInvCanChangeSellingPrice,blnARSalesPersonChangeApproval=table2.blnARSalesPersonChangeApproval,blnIRFinInvCostAnalysis=table2.blnIRFinInvCostAnalysis,blnMFWorkOrders=table2.blnMFWorkOrders,blnMFJobs=table2.blnMFJobs,blnMFJobAdjustApproval=table2.blnMFJobAdjustApproval,blnMFProductionSchedule=table2.blnMFProductionSchedule,blnMFPostWIP=table2.blnMFPostWIP,blnMFBillOfMaterial=table2.blnMFBillOfMaterial,blnMFBOMAdjustApproval=table2.blnMFBOMAdjustApproval,blnMFWorkCentres=table2.blnMFWorkCentres,blnMFLabour=table2.blnMFLabour,blnMFMachinery=table2.blnMFMachinery,blnMFTransferJobs=table2.blnMFTransferJobs,blnMFR=table2.blnMFR,blnMFRTran=table2.blnMFRTran,blnMFRWorkInProgress=table2.blnMFRWorkInProgress,blnMFRProdVariance=table2.blnMFRProdVariance,blnMFRManVariance=table2.blnMFRManVariance,blnMFRLists=table2.blnMFRLists,blnMFRBillOfMaterial=table2.blnMFRBillOfMaterial,blnMFRResource=table2.blnMFRResource,blnMFRItemWhereUsed=table2.blnMFRItemWhereUsed,blnMFRSerialLotOutOfSeq=table2.blnMFRSerialLotOutOfSeq,blnMFRMRP=table2.blnMFRMRP,blnInvWorkOrder=table2.blnInvWorkOrder,blnInvIntReq=table2.blnInvIntReq,blnInvIssReq=table2.blnInvIssReq,blnARRRTranCustAccrual=table2.blnARRRTranCustAccrual,blnARRRFinOrderStatement=table2.blnARRRFinOrderStatement,blnIRListsInvIntReq=table2.blnIRListsInvIntReq,blnMFCloseJobs=table2.blnMFCloseJobs,blnFAAssetsDisposal=table2.blnFAAssetsDisposal,blnFAAssetsLocations=table2.blnFAAssetsLocations,blnFARAssetRegister=table2.blnFARAssetRegister,blnDashAP=table2.blnDashAP,blnDashInventory=table2.blnDashInventory,blnDashWarehouse=table2.blnDashWarehouse,blnAPSetupPOApprovers=table2.blnAPSetupPOApprovers,blnApprovePurchaseOrders=table2.blnApprovePurchaseOrders,blnMFRWCTransfer=table2.blnMFRWCTransfer,blnInvCatMarginApproval=table2.blnInvCatMarginApproval,blnMobSa=table2.blnMobSa,blnMobSaOrdProcess=table2.blnMobSaOrdProcess,blnMobSaGeoTrack=table2.blnMobSaGeoTrack,blnMobPhDash=table2.blnMobPhDash,blnMobPhDashBankBal=table2.blnMobPhDashBankBal,blnMobPhDashSalesItemComp=table2.blnMobPhDashSalesItemComp,blnMobPhDashSalesCustCat=table2.blnMobPhDashSalesCustCat,blnMobPhDashOutCustCat=table2.blnMobPhDashOutCustCat,blnMobPhDashCustVendBal=table2.blnMobPhDashCustVendBal,blnMobPhDashInvQty=table2.blnMobPhDashInvQty,blnMobPhDashSalesPerf=table2.blnMobPhDashSalesPerf,blnMobPhPOApproval=table2.blnMobPhPOApproval,blnMobPhDashTimesheet=table2.blnMobPhDashTimesheet,blnBRProjClaimStatement=table2.blnBRProjClaimStatement,blnARRRTranCancelSalesDocs=table2.blnARRRTranCancelSalesDocs,blnAREditDeliveryMethod=table2.blnAREditDeliveryMethod,blnInvIsRepackaging=table2.blnInvIsRepackaging,blnIRRepackaging=table2.blnIRRepackaging,blnContractBilling=table2.blnContractBilling,blnContractBillingType=table2.blnContractBillingType,blnProcessContractBilling=table2.blnProcessContractBilling,blnARRRecurringInvoice=table2.blnARRRecurringInvoice,blnARRContractExpiry=table2.blnARRContractExpiry,blnARRContractReconciliation=table2.blnARRContractReconciliation,blnAPReOrders=table2.blnAPReOrders,blnARShipmentsAuditTrail=table2.blnARShipmentsAuditTrail,blnWHDelMethod=table2.blnWHDelMethod,blnDashBusiness=table2.blnDashBusiness,blnIRTranLotNumMovement=table2.blnIRTranLotNumMovement,blnBankManager=table2.blnBankManager,blnAPPRTranInvoiceDocs=table2.blnAPPRTranInvoiceDocs,blnMFRJobStatus=table2.blnMFRJobStatus,blnARSalesOrderEDI=table2.blnARSalesOrderEDI,blnInvWorkCentres=table2.blnInvWorkCentres,blnAPGRVAdjustmentApproval=table2.blnAPGRVAdjustmentApproval,blnAPReturnSelection=table2.blnAPReturnSelection,blnAPReturnAdjustmentApproval=table2.blnAPReturnAdjustmentApproval,blnARDAAdjustmentApproval=table2.blnARDAAdjustmentApproval,blnMFReverseJobs=table2.blnMFReverseJobs,blnMFReverseJobEditQty=table2.blnMFReverseJobEditQty,blnIRFinInvBin=table2.blnIRFinInvBin,blnAPPriceChangeAllowed=table2.blnAPPriceChangeAllowed,blnPOSTerminalSetup=table2.blnPOSTerminalSetup,blnPOSProfileMenu=table2.blnPOSProfileMenu,blnPOSTerminalSetupList=table2.blnPOSTerminalSetupList,blnARConfirmDeliveryAllowed=table2.blnARConfirmDeliveryAllowed,blnPOSPayouts=table2.blnPOSPayouts,blnPOSLayby=table2.blnPOSLayby,blnPOSConvertLayby=table2.blnPOSConvertLayby,blnPOSAuthoriseReturn=table2.blnPOSAuthoriseReturn,blnPOSCreateCustomer=table2.blnPOSCreateCustomer,blnPOSSync=table2.blnPOSSync,blnPOSReinstallStoredProcedures = table2.blnPOSReinstallStoredProcedures,blnPOSRePrintLastInvoice= table2.blnPOSRePrintLastInvoice,blnPOSOpenCashDrawer= table2.blnPOSOpenCashDrawer,blnESDSetupRegistration= table2.blnESDSetupRegistration,blnPOSReversePreviousReceipts = table2.blnPOSReversePreviousReceipts,blnPOSReprintInvoiceFromHistory = table2.blnPOSReprintInvoiceFromHistory, dteLastPasswordChanged = table2.dteLastPasswordChanged, blnARLBAdjAllowed = table2.blnARLBAdjAllowed, strDefaultLanguage = table2.strDefaultLanguage, strDefaultCompanyLocation = table2.strDefaultCompanyLocation 
		FROM tblUsers as table1
		INNER JOIN @tblData as table2
		ON (table1.strUserName=table2.strUserName)
		END
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblUsersDocs]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[AddUpdatetblUsersDocs]
	    @tblData AS UsersDocsTableType READONLY

AS
BEGIN
	BEGIN
    Insert into tblUsersDocs ([strUserName], [strInvNumber], [strSONumber], [strQuoteNumber], [strPINumber], [strPONumber], [strRCNumber], [strDPNumber], [strJENumber], [strCNNumber], [strDNNumber], [strRQNumber], [strQuSysNumber], [strGRVNumber], [strTKNumber], [strSHNumber], [strMSNumber], [strCRNumber], [strRFQNumber], [strPSNumber], [strDANumber], [strWONumber], [strJBNumber], [strWPNumber], [strIWONumber], [strPYNumber], [strCBNumber], [strPRONumber], [strBMNumber])
	SELECT
	[strUserName], [strInvNumber], [strSONumber], [strQuoteNumber], [strPINumber], [strPONumber], [strRCNumber], [strDPNumber], [strJENumber], [strCNNumber], [strDNNumber], [strRQNumber], [strQuSysNumber], [strGRVNumber], [strTKNumber], [strSHNumber], [strMSNumber], [strCRNumber], [strRFQNumber], [strPSNumber], [strDANumber], [strWONumber], [strJBNumber], [strWPNumber], [strIWONumber], [strPYNumber], [strCBNumber], [strPRONumber], [strBMNumber]
	 FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblUsersDocs WHERE strUserName=t.strUserName)
	END

	BEGIN
	   UPDATE [dbo].tblUsersDocs SET [strUserName]=table2.strUserName, [strInvNumber]=table2.[strInvNumber], [strSONumber]=table2.[strSONumber], [strQuoteNumber]=table2.[strQuoteNumber], [strPINumber]=table2.[strPINumber], [strPONumber]=table2.[strPONumber], [strRCNumber]=table2.[strRCNumber], [strDPNumber]=table2.[strDPNumber], [strJENumber]=table2.[strJENumber], [strCNNumber]=table2.[strCNNumber], [strDNNumber]=table2.[strDNNumber], [strRQNumber]=table2.[strRQNumber], [strQuSysNumber]=table2.[strQuSysNumber], [strGRVNumber]=table2.[strGRVNumber], [strTKNumber]=table2.[strTKNumber], [strSHNumber]=table2.[strSHNumber], [strMSNumber]=table2.[strMSNumber], [strCRNumber]=table2.[strCRNumber], [strRFQNumber]=table2.[strRFQNumber], [strPSNumber]=table2.[strPSNumber], [strDANumber]=table2.[strDANumber], [strWONumber]=table2.[strWONumber], [strJBNumber]=table2.[strJBNumber], [strWPNumber]=table2.[strWPNumber], [strIWONumber]=table2.[strIWONumber], [strPYNumber]=table2.[strPYNumber], [strCBNumber]=table2.[strCBNumber], [strPRONumber]=table2.[strPRONumber], [strBMNumber]=table2.[strBMNumber]
		FROM tblUsersDocs as table1
		INNER JOIN @tblData as table2
		ON (table1.strUserName=table2.strUserName)
		END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblValueBased]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblValueBased]    Script Date: 21-08-2018 10:13:16 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblValueBased]
    @tblData AS ValueBasedTableType READONLY
AS
BEGIN
	BEGIN
      Insert into tblValueBased (strValueBased,strDesc,bitInactive,bitApplyItem,bitApplyTax)
	  SELECT strValueBased,strDesc,bitInactive,bitApplyItem,bitApplyTax
	    FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblValueBased WHERE strValueBased=t.strValueBased )
	END
	
	BEGIN
       UPDATE tblValueBased SET strValueBased=table2.strValueBased,strDesc=table2.strDesc,bitInactive=table2.bitInactive,bitApplyItem=table2.bitApplyItem,bitApplyTax=table2.bitApplyTax 
	  FROM tblValueBased as table1
	INNER JOIN @tblData as table2
	ON (table1.strValueBased=table2.strValueBased)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[AddUpdatetblVoucherCodes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblVoucherCodes]    Script Date: 21-08-2018 10:13:16 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblVoucherCodes]
	    @tblData AS VoucherCodesTableType READONLY
AS
BEGIN 
	BEGIN
		Insert into tblVoucherCodes (strVoucherCode,strDescription,strWindow,strValue,decRetailValue,strVendorName)
		SELECT strVoucherCode,strDescription,strWindow,strValue,decRetailValue,strVendorName
		 FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblVoucherCodes WHERE strVoucherCode=t.strVoucherCode)

	END
	BEGIN
		UPDATE [dbo].tblVoucherCodes SET strVoucherCode=table2.strVoucherCode,strDescription=table2.strDescription,strWindow=table2.strWindow,strValue=table2.strValue,decRetailValue=table2.decRetailValue,strVendorName=table2.strVendorName 
	   FROM tblVoucherCodes as table1
	INNER JOIN @tblData as table2
	ON (table1.strVoucherCode=table2.strVoucherCode) 
	END
END

GO
/****** Object:  StoredProcedure [dbo].[AdjustSalesPerson]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetPODManagementReportData]***********/

/****** Start: StoredProcedure [dbo].[AdjustSalesPerson]   ******/

----------------------------------------------
CREATE PROCEDURE [dbo].[AdjustSalesPerson]
(
	@DocNumber nvarchar(50)	,
	@IsLineLevel bit = false
)
As
BEGIN
if(@IsLineLevel = 1)
begin
DECLARE @Cursor CURSOR;
DECLARE @SalesName nvarchar(50)
DECLARE @LineTotExc nvarchar(50);
BEGIN
    SET @Cursor = CURSOR FOR 

	select strSalesName, ISNULL(SUM(decLineTotInc + decLineTaxAmt),0) as decLineTotExc from tblInvoiceDocDT where strInvDocID = @DocNumber group by strSalesName
        
    OPEN @Cursor 
    FETCH NEXT FROM @Cursor 
    INTO @SalesName, @LineTotExc

    WHILE @@FETCH_STATUS = 0
    BEGIN
      Update tblSalesPersons set decYTDSales = decYTDSales - @LineTotExc where strSalesName = @SalesName
	  
      FETCH NEXT FROM @Cursor 
      INTO @SalesName, @LineTotExc
    END; 

    CLOSE @Cursor ;
    DEALLOCATE @Cursor;
END;
END
else
begin
DECLARE @DocTot nvarchar(50);
DECLARE @Salesperson nvarchar(50)

	select @DocTot = ISNULL(decTotal,0)  from tblInvoiceDoc where strInvDocID = @DocNumber
	select @Salesperson = strSalesName  from tblInvoiceDoc where strInvDocID = @DocNumber
	Update tblSalesPersons set decYTDSales = decYTDSales - @DocTot where strSalesName = @Salesperson
end
End
GO
/****** Object:  StoredProcedure [dbo].[ArchiveData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ArchiveData]
(
	@ArchiveDate Date,
	@IsCustomer BIT,
	@IsVendor BIT,
	@IsInventory BIT
)
AS
BEGIN

	DECLARE @Count AS INT = 0

	IF @IsCustomer =1
	BEGIN
		UPDATE tblCustomers SET bitInactive = 1 WHERE strCustName NOT IN (SELECT strCustName FROM tblInvoiceDoc WHERE dteJournalDate >= @ArchiveDate)
		SET @Count += @@ROWCOUNT
	END

	IF @IsVendor =1
	BEGIN
		UPDATE tblVendors SET bitInactive = 1 WHERE strVendName NOT IN (SELECT strVendName FROM tblInvoiceDocP WHERE dteJournalDate >= @ArchiveDate)
		SET @Count += @@ROWCOUNT
	END

	IF @IsInventory =1
	BEGIN
		UPDATE tblInv SET bitInactive = 1 WHERE dteDateLastSale <= @ArchiveDate AND intType <> 5 AND decSumOnHand = 0
		SET @Count += @@ROWCOUNT
	END

	SELECT @Count
END
GO

/****** Object:  StoredProcedure [dbo].[AssetTypesSave]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AssetTypesSave]
    (
      @strCode NVARCHAR(20) = NULL ,
      @strDescription NVARCHAR(100) = NULL ,
      @intDepAccNo NVARCHAR(30) = NULL ,
      @intExpAccNo NVARCHAR(30) = NULL ,
      @intAssetAccNo NVARCHAR(30) = NULL ,
      @intRepairAccNo NVARCHAR(30) = NULL ,
      @strDepreciationCode1 NVARCHAR(20) = NULL ,
      @blnUpdateGLCode1 BIT = NULL ,
      @strDepreciationCode2 NVARCHAR(20) = NULL ,
      @blnUpdateGLCode2 BIT = NULL ,
      @strDepreciationCode3 NVARCHAR(20) = NULL ,
      @blnUpdateGLCode3 BIT = NULL ,
      @strDepreciationCode4 NVARCHAR(20) = NULL ,
      @blnUpdateGLCode4 BIT = NULL ,
      @strDepreciationCode5 NVARCHAR(20) = NULL ,
      @blnUpdateGLCode5 BIT = NULL ,
      @bitInactive BIT = NULL ,
      @blnNBVDisplay1 BIT = NULL ,
      @blnNBVDisplay2 BIT = NULL ,
      @blnNBVDisplay3 BIT = NULL ,
      @blnNBVDisplay4 BIT = NULL ,
      @blnNBVDisplay5 BIT = NULL ,
      @strProfitLossOnSaleAccNo NVARCHAR(30) = NULL
    )
AS
    SET NOCOUNT ON;
    IF ( ( SELECT   COUNT(*)
           FROM     tblAssetTypes
           WHERE    strCode = @strCode
         ) = 0 )
        BEGIN
            INSERT  INTO [tblAssetTypes]
                    ( [strCode] ,
                      [strDescription] ,
                      [intDepAccNo] ,
                      [intExpAccNo] ,
                      [intAssetAccNo] ,
                      [intRepairAccNo] ,
                      [strDepreciationCode1] ,
                      [blnUpdateGLCode1] ,
                      [strDepreciationCode2] ,
                      [blnUpdateGLCode2] ,
                      [strDepreciationCode3] ,
                      [blnUpdateGLCode3] ,
                      [strDepreciationCode4] ,
                      [blnUpdateGLCode4] ,
                      [strDepreciationCode5] ,
                      [blnUpdateGLCode5] ,
                      [bitInactive] ,
                      [blnNBVDisplay1] ,
                      [blnNBVDisplay2] ,
                      [blnNBVDisplay3] ,
                      [blnNBVDisplay4] ,
                      [blnNBVDisplay5] ,
                      [strProfitLossOnSaleAccNo]
                    )
            VALUES  ( @strCode ,
                      @strDescription ,
                      @intDepAccNo ,
                      @intExpAccNo ,
                      @intAssetAccNo ,
                      @intRepairAccNo ,
                      @strDepreciationCode1 ,
                      @blnUpdateGLCode1 ,
                      @strDepreciationCode2 ,
                      @blnUpdateGLCode2 ,
                      @strDepreciationCode3 ,
                      @blnUpdateGLCode3 ,
                      @strDepreciationCode4 ,
                      @blnUpdateGLCode4 ,
                      @strDepreciationCode5 ,
                      @blnUpdateGLCode5 ,
                      @bitInactive ,
                      @blnNBVDisplay1 ,
                      @blnNBVDisplay2 ,
                      @blnNBVDisplay3 ,
                      @blnNBVDisplay4 ,
                      @blnNBVDisplay5 ,
                      @strProfitLossOnSaleAccNo
                    );
            SELECT  @strCode;
        END;
    ELSE
        BEGIN
            UPDATE  [tblAssetTypes]
            SET     [strDescription] = ISNULL(@strDescription,
                                              [strDescription]) ,
                    [intDepAccNo] = ISNULL(@intDepAccNo, [intDepAccNo]) ,
                    [intExpAccNo] = ISNULL(@intExpAccNo, [intExpAccNo]) ,
                    [intAssetAccNo] = ISNULL(@intAssetAccNo, [intAssetAccNo]) ,
                    [intRepairAccNo] = ISNULL(@intRepairAccNo,
                                              [intRepairAccNo]) ,
                    [strDepreciationCode1] = @strDepreciationCode1 ,
                    [blnUpdateGLCode1] = ISNULL(@blnUpdateGLCode1,
                                                [blnUpdateGLCode1]) ,
                    [strDepreciationCode2] = @strDepreciationCode2 ,
                    [blnUpdateGLCode2] = ISNULL(@blnUpdateGLCode2,
                                                [blnUpdateGLCode2]) ,
                    [strDepreciationCode3] = @strDepreciationCode3 ,
                    [blnUpdateGLCode3] = ISNULL(@blnUpdateGLCode3,
                                                [blnUpdateGLCode3]) ,
                    [strDepreciationCode4] = @strDepreciationCode4 ,
                    [blnUpdateGLCode4] = ISNULL(@blnUpdateGLCode4,
                                                [blnUpdateGLCode4]) ,
                    [strDepreciationCode5] = @strDepreciationCode5 ,
                    [blnUpdateGLCode5] = ISNULL(@blnUpdateGLCode5,
                                                [blnUpdateGLCode5]) ,
                    [bitInactive] = ISNULL(@bitInactive, [bitInactive]) ,
                    [blnNBVDisplay1] = ISNULL(@blnNBVDisplay1,
                                              [blnNBVDisplay1]) ,
                    [blnNBVDisplay2] = ISNULL(@blnNBVDisplay2,
                                              [blnNBVDisplay2]) ,
                    [blnNBVDisplay3] = ISNULL(@blnNBVDisplay3,
                                              [blnNBVDisplay3]) ,
                    [blnNBVDisplay4] = ISNULL(@blnNBVDisplay4,
                                              [blnNBVDisplay4]) ,
                    [blnNBVDisplay5] = ISNULL(@blnNBVDisplay5,
                                              [blnNBVDisplay5]) ,
                    [strProfitLossOnSaleAccNo] = ISNULL(@strProfitLossOnSaleAccNo,
                                                        [strProfitLossOnSaleAccNo])
            WHERE   [strCode] = @strCode;
            SELECT  @strCode;
        END;
    RETURN 1;
GO
/****** Object:  StoredProcedure [dbo].[AssetTypesSelect]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AssetTypesSelect] ( @strCode NVARCHAR(20) )
AS
    SET NOCOUNT ON;
    SELECT  [strCode] AS Code ,
            [strDescription] AS Description ,
            [intDepAccNo] AS DepAccNo ,
            [intExpAccNo] AS ExpAccNo ,
            [intAssetAccNo] AS AssetAccNo ,
            [intRepairAccNo] AS RepairAccNo ,
            [strProfitLossOnSaleAccNo] AS ProfitLossOnSaleAccNo ,
            [strDepreciationCode1] AS DepreciationCode1 ,
            [blnUpdateGLCode1] AS UpdateGLCode1 ,
            [strDepreciationCode2] AS DepreciationCode2 ,
            [blnUpdateGLCode2] AS UpdateGLCode2 ,
            [strDepreciationCode3] AS DepreciationCode3 ,
            [blnUpdateGLCode3] AS UpdateGLCode3 ,
            [strDepreciationCode4] AS DepreciationCode4 ,
            [blnUpdateGLCode4] AS UpdateGLCode4 ,
            [strDepreciationCode5] AS DepreciationCode5 ,
            [blnUpdateGLCode5] AS UpdateGLCode5 ,
            [bitInactive] AS Inactive ,
            [blnNBVDisplay1] AS NBVDisplay1 ,
            [blnNBVDisplay2] AS NBVDisplay2 ,
            [blnNBVDisplay3] AS NBVDisplay3 ,
            [blnNBVDisplay4] AS NBVDisplay4 ,
            [blnNBVDisplay5] AS NBVDisplay5
    FROM    [tblAssetTypes]
    WHERE   [strCode] = @strCode;
GO
/****** Object:  StoredProcedure [dbo].[AssetUpdateWithTableType]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AssetUpdateWithTableType]
    (
      @assetUpdateTabletType AS AssetUpdateTableType READONLY
    )
AS
    BEGIN
        UPDATE  tblAssets
        SET     dteLastDeprecationDate = r.lastDeprecationDate
        FROM    @assetUpdateTabletType r
        WHERE   tblAssets.strAssetCode = r.assetCode 
END
GO
/****** Object:  StoredProcedure [dbo].[AuthorizationReasonInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[AuthorizationReasonInsert]

@strAuthReasonCode NVARCHAR(20),
@strAuthReasonDesc NVARCHAR(100),
@bitInactive BIT

AS
BEGIN	
	Insert into tblAuthorizeReasons(strAuthReasonCode, strAuthReasonDesc, bitInactive) VALUES (@strAuthReasonCode, @strAuthReasonDesc, 

@bitInactive)
END
GO
/****** Object:  StoredProcedure [dbo].[AuthorizationReasonUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AuthorizationReasonUpdate]
	@strAuthReasonCode nvarchar(20),
	@strAuthReasonDesc nvarchar(100),
	@bitInactive bit,
	@lngID bigint
AS
BEGIN
	
UPDATE [tblAuthorizeReasons]
   SET [strAuthReasonCode] = @strAuthReasonCode
      ,[strAuthReasonDesc] = @strAuthReasonDesc
      ,[bitInactive] = @bitInactive
 WHERE lngID = @lngID
END
GO
/****** Object:  StoredProcedure [dbo].[AuthorizeTrackingInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [DeleteCenterEntAndGetJournalEnt] ***********/

CREATE PROCEDURE [dbo].[AuthorizeTrackingInsert]
(
	@tblAuthorizeTrackingTableType AS AuthorizeTrackingTableType READONLY
)
AS
BEGIN
	INSERT INTO tblAuthorizeTracking 
	(
		dteSystemDate,
		strDocID,
		intDocType,
		bitAdjust,
		strAuthUserName,
		strUserName,
		intChangeType,
		strAuthReasonCode,
		strPartNumber,
		decOverdueValue,
		decTranValue,
		strCustomerName
	)
	SELECT
		SystemDate,
		DocID,
		DocType,
		IsAdjust,
		AuthUserName,
		UserName,
		ChangeType,
		AuthReasonCode,
		PartNumber,
		OverdueValue,
		TranValue,
		 CustomerName
	FROM @tblAuthorizeTrackingTableType
END
GO
/****** Object:  StoredProcedure [dbo].[BankRecTransInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[BankRecTransInsert]
(
	@LAcct AS NVARCHAR(30),
	@Module AS TINYINT,
	@TransType AS TINYINT,
	@Comment AS NVARCHAR(200),
	@JourDate AS SMALLDATETIME,
	@Debits AS MONEY,
	@Credits AS MONEY,
	@JourID AS BIGINT,
	@Source AS NVARCHAR(100),
	@EffAmount AS MONEY,
	@intLineNum AS INT
)
AS
BEGIN
	INSERT INTO tblBankRecTrans (intGLNumber,bitCleared,bitSavedAsCleared,intModule,intTransType,strComment,dteJourDate,decDebits,decCredits,lngJourID,strSource,decEffectiveAmount,lngBRSumIDPostedTo,bitUserSaved,intLineNum) 
	VALUES (@LAcct,0,0 ,@Module ,@TransType ,@Comment ,@JourDate ,@Debits ,@Credits ,@JourID ,@Source ,@EffAmount,0,0 ,@intLineNum)
END
GO
/****** Object:  StoredProcedure [dbo].[BulkInsertForCustTransDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [CustTransDTInsert] ***********/

/*********** Start [BulkInsertForCustTransDT] ***********/
CREATE PROCEDURE [dbo].[BulkInsertForCustTransDT] (
	@CustomerTransactionData AS CustomerTransactionTableType READONLY
	,@CustomerTransactionDTData AS CustomerTransactionDTTableType READONLY
	)
AS
BEGIN
	IF (SELECT COUNT(*) FROM @CustomerTransactionDTData) > 0
	BEGIN
		INSERT INTO [dbo].[tblCustTransDT] (
			[dteJournalDate]
			,[lngCustTrID]
			,[lngCustPayID]
			,[decAmount]
			,[intTransType]
			,[decAmtOwingAtTime]
			,[bitReversed]
			,[dteIntDate]
			,[decAmountF]
			,[decAmtOwingAtTimeF]
			,[bitIsForeign]
			)
		SELECT JournalDate
			,CustTrID
			,CustPayID
			,Amount
			,TransType
			,AmtOwingAtTime
			,IsReversed
			,IntDate
			,AmountF
			,AmtOwingAtTimeF
			,IsForeign
		FROM @CustomerTransactionDTData
	END

	IF (SELECT COUNT(*) FROM @CustomerTransactionData) > 0
	BEGIN
		UPDATE tct
		SET tct.decDiscAvail = tct.decDiscAvail - ctd.DiscAvail
			,tct.decDiscAvailF = tct.decDiscAvailF - ctd.DiscAvailF
		FROM tblCustTrans tct
		INNER JOIN @CustomerTransactionData ctd ON tct.lngCustTrID = ctd.CustTrID
	END
END
GO
/****** Object:  StoredProcedure [dbo].[BulletinDelete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[BulletinDelete]    Script Date: 2020-03-27 ******/
CREATE Procedure [dbo].[BulletinDelete]
@BulletinID bigint
As
BEGIN

Delete from tblCompanyBulletins where BulletinId=@BulletinID

END
GO
/****** Object:  StoredProcedure [dbo].[BulletinDeleteUser]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[BulletinDeleteUser]    Script Date: 2020-03-27 ******/
CREATE Procedure [dbo].[BulletinDeleteUser]
@BulletinId bigint
AS
Begin
	
	delete from tblCompanyBulletinsUsers where BulletinId = @BulletinId
	
end
GO
/****** Object:  StoredProcedure [dbo].[BulletinGetCRMGroupUserList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[BulletinGetCRMGroupUserList]    Script Date: 2020-04-03 ******/
CREATE PROCEDURE [dbo].[BulletinGetCRMGroupUserList]
@GroupName nvarchar(Max)=''
AS
BEGIN
	Declare @Count as int =ISNULL((Select Count(*) from tblCRMAcitvityGroupUsers where ActivityGroupName=@GroupName),0)
	if(@Count>0)
	BEGIN
		Select 
		tblUsers.strUserName as UserName
		,tblUsers.blnIsAdmin as IsAdmin 
		from 
		tblCRMAcitvityGroupUsers inner join tblUsers 
		on tblCRMAcitvityGroupUsers.UserName = tblUsers.strUserName 
		where ActivityGroupName=@GroupName
	END
	ELSE
	BEGIN
		Select 
		tblUsers.strUserName as UserName
		,tblUsers.blnIsAdmin as IsAdmin 
		from
		tblUsers
	END
END
GO
/****** Object:  StoredProcedure [dbo].[BulletinGetNotificationByUser]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[BulletinGetNotificationByUser]    Script Date: 2020-03-27 ******/
CREATE PROCEDURE [dbo].[BulletinGetNotificationByUser] 
	@UserName NVARCHAR(Max) = ''
AS
BEGIN
	SELECT *
	FROM (
		SELECT tblCompanyBulletins.BulletinId
			,tblCompanyBulletins.BulletinDate
			,tblCompanyBulletins.OwnerName
			,tblCompanyBulletins.BulletinNote
			,tblCompanyBulletins.CreatedDate
			,tblCompanyBulletins.CreatedUser
			,tblCompanyBulletins.UpdatedDate
			,tblCompanyBulletins.UpdatedUser
			,tblCompanyBulletins.IsInactive
			,tblCompanyBulletins.CRMGroup
			,ISNULL(tblCompanyBulletinsNotifications.IsRead, 0) AS IsRead
			,Isnull(tblCompanyBulletinsNotifications.ReadDate,GETDATE()-1)  as ReadDate
		FROM tblCompanyBulletins
		INNER JOIN tblCompanyBulletinsUsers ON tblCompanyBulletins.BulletinId = tblCompanyBulletinsUsers.BulletinId
		LEFT JOIN tblCompanyBulletinsNotifications ON tblCompanyBulletinsUsers.BulletinId = tblCompanyBulletinsNotifications.BulletinId
			AND tblCompanyBulletinsUsers.UserName = tblCompanyBulletinsNotifications.UserName
			--AND tblCompanyBulletinsNotifications.IsRead = 1
		WHERE tblCompanyBulletinsUsers.UserName = @UserName
			AND cast(tblCompanyBulletins.BulletinDate AS DATE) <= (Cast(Getdate() AS DATE)) AND tblCompanyBulletins.IsInactive=0
		) AS temptable
	WHERE IsRead = 0 and Cast(ReadDate as Date)<>(Cast(GetDate() as Date))
	ORDER BY cast(temptable.BulletinDate AS DATE)
END
GO
/****** Object:  StoredProcedure [dbo].[BulletinGetNotificationListByUser]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[BulletinGetNotificationListByUser]    Script Date: 2020-04-03 ******/
CREATE Procedure [dbo].[BulletinGetNotificationListByUser]
@UserName nvarchar(20)=''
AS
BEGIN
Select 
tblCompanyBulletins.BulletinId,
tblCompanyBulletins.BulletinDate,
tblCompanyBulletins.OwnerName,
tblCompanyBulletins.BulletinNote,
tblCompanyBulletins.CreatedDate,
tblCompanyBulletins.CreatedUser,
tblCompanyBulletins.UpdatedDate,
tblCompanyBulletins.UpdatedUser,
tblCompanyBulletins.IsInactive,
tblCompanyBulletins.CRMGroup,
tblCompanyBulletinsNotifications.UserName as LogUserName,
tblCompanyBulletinsNotifications.ReadDate as LogDate,
tblCompanyBulletinsNotifications.IsRead
 from tblCompanyBulletins inner join tblCompanyBulletinsNotifications
On tblCompanyBulletins.BulletinId=tblCompanyBulletinsNotifications.BulletinId
and tblCompanyBulletinsNotifications.UserName=@UserName 
Where tblCompanyBulletins.IsInactive=0
Order by tblCompanyBulletinsNotifications.ReadDate
END
GO
/****** Object:  StoredProcedure [dbo].[BulletinGetUserList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[BulletinGetUserList]    Script Date: 2020-03-27 ******/
CREATE Procedure [dbo].[BulletinGetUserList]
AS
BEGIN
Select strUserName AS UserName,blnIsAdmin as IsAdmin from tblUsers Where blnIsLockedOut=0
END
GO
/****** Object:  StoredProcedure [dbo].[BulletinGetUserListById]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[BulletinGetUserListById]    Script Date: 2020-03-27 ******/
CREATE Procedure [dbo].[BulletinGetUserListById]
@BulletinID bigint
AS
Begin
Select UserName from tblCompanyBulletinsUsers where BulletinId=@BulletinID
End
GO
/****** Object:  StoredProcedure [dbo].[BulletinInsertUser]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[BulletinInsertUser]    Script Date: 2020-03-27 ******/
CREATE Procedure [dbo].[BulletinInsertUser]
@BulletinId bigint,
@UserName nvarchar(20),
@LogUser  nvarchar(20),
@LogType  nvarchar(20)
AS
Begin
	
	insert into tblCompanyBulletinsUsers (BulletinId,UserName) Values (@BulletinId,@UserName)  
	
	insert into tblCompanyBulletinsUsersTracking (BulletinId,UserName,LogDate,LogUser,LogType) Values (@BulletinId,@UserName,GETDATE(),@LogUser,@LogType)  
end
GO
/****** Object:  StoredProcedure [dbo].[BulletinSave]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[BulletinSave]    Script Date: 2020-03-27 ******/
CREATE Procedure [dbo].[BulletinSave]
@BulletinDate datetime,
@OwnerName nvarchar(20),
@BulletinNote nvarchar(MAX),
@CreatedDate datetime,
@CreatedUser nvarchar(20),
@UpdatedDate datetime,
@UpdatedUser  nvarchar(20),
@IsInactive bit,
@CRMGroup nvarchar(MAX)
AS
Begin
	
	Insert into tblCompanyBulletins (BulletinDate,OwnerName,BulletinNote,CreatedDate,CreatedUser,UpdatedDate,UpdatedUser,IsInactive,CRMGroup)
	output inserted.BulletinId Values (@BulletinDate,@OwnerName,@BulletinNote,@CreatedDate,@CreatedUser,@UpdatedDate,@UpdatedUser,@IsInactive,@CRMGroup)

end
GO
/****** Object:  StoredProcedure [dbo].[Bulletintracking]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[Bulletintracking]    Script Date: 2020-03-27 ******/
CREATE Procedure [dbo].[Bulletintracking]
@BulletinId bigint,
@LogUser nvarchar(20),
@LogType nvarchar(20)	
AS
BEGIN

	Insert into tblCompanyBulletinsTracking(BulletinId,BulletinDate,OwnerName,BulletinNote,CreatedDate,CreatedUser,UpdatedDate,UpdatedUser,LogDate,LogUserName,LogType,CRMGroup,IsInactive)
	Select BulletinId,BulletinDate,OwnerName,BulletinNote,CreatedDate,CreatedUser,UpdatedDate,UpdatedUser,GETDATE(),@LogUser,@LogType,CRMGroup,IsInactive from tblCompanyBulletins Where BulletinId=@BulletinId

END
GO
/****** Object:  StoredProcedure [dbo].[BulletinUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[BulletinUpdate]    Script Date: 2020-03-27 ******/
CREATE Procedure [dbo].[BulletinUpdate]
@BulletinId bigint,
@BulletinDate datetime,
@OwnerName nvarchar(20),
@BulletinNote nvarchar(MAX),
@UpdatedDate datetime,
@UpdatedUser  nvarchar(20),
@IsInactive bit,
@CRMGroup nvarchar(MAX)
AS
Begin
	
	Update tblCompanyBulletins set  
	BulletinDate=@BulletinDate,
	OwnerName=@OwnerName,
	BulletinNote=@BulletinNote,
	UpdatedDate=@UpdatedDate,
	UpdatedUser=@UpdatedUser,
	IsInactive=@IsInactive,
	CRMGroup=@CRMGroup
	Where BulletinId=@BulletinId
	
end
GO
/****** Object:  StoredProcedure [dbo].[BulletinUpdateNotificationDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[BulletinUpdateNotificationDetails]    Script Date: 2020-03-27 ******/
CREATE PROCEDURE [dbo].[BulletinUpdateNotificationDetails]
@BulletinId bigint,
@UserName nvarchar(40),
@ReadDate datetime,
@IsRead bit
AS
BEGIN
	declare @Count as int =	Isnull((Select Count(*) from tblCompanyBulletinsNotifications where tblCompanyBulletinsNotifications.BulletinId=@BulletinId 
	and tblCompanyBulletinsNotifications.UserName= @UserName),0)
	
	if(@Count>0)
	BEGIN
		Update tblCompanyBulletinsNotifications 
		set 
		ReadDate=@ReadDate,
		IsRead=@IsRead 
		Where BulletinId =@BulletinId and UserName=@UserName

	END
	ELSE
	BEGIN
		Insert into tblCompanyBulletinsNotifications(BulletinId,UserName,ReadDate,IsRead)
		Values(@BulletinId,@UserName,@ReadDate,@IsRead)

	END

	declare @PendingCount int =ISNULL((Select Count(*) from(Select tblCompanyBulletinsUsers.UserName,ISNULL(tblCompanyBulletinsNotifications.IsRead,0) AS IsRead  from tblCompanyBulletinsUsers left Join tblCompanyBulletinsNotifications
	On tblCompanyBulletinsUsers.BulletinId=tblCompanyBulletinsNotifications.BulletinId
	and tblCompanyBulletinsUsers.UserName=tblCompanyBulletinsNotifications.UserName Where tblCompanyBulletinsUsers.BulletinId=@BulletinId)as temptable1 where IsRead=0),0)
	if(@PendingCount=0)
	BEGIN
		Update tblCompanyBulletins set IsInactive=1 where tblCompanyBulletins.BulletinId=@BulletinId
		
		insert into tblCompanyBulletinsTracking 
		Select BulletinId,BulletinDate,OwnerName,BulletinNote,CreatedDate,CreatedUser,UpdatedDate,UpdatedUser,GETDATE(),@UserName,'Completed',CRMGroup,IsInactive from tblCompanyBulletins where  tblCompanyBulletins.BulletinId=@BulletinId
	END

	Insert into tblCompanyBulletinsNotificationsTracking(BulletinId,UserName,ReadDate,IsRead,LogDate,LogType) 
	Select BulletinId,UserName,ReadDate,IsRead,GETDATE(),CASE WHEN @Count>0 then 'Update' else 'Insert' end from tblCompanyBulletinsNotifications where BulletinId=@BulletinId and UserName=@UserName
END
GO
/****** Object:  StoredProcedure [dbo].[CategoryInsertWithTableType]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[CategoryInsertWithTableType]
    (
      @categoryInsertTableType AS CategoryInsertTableType READONLY
    )
AS
    BEGIN
        INSERT INTO tblCustomerCatSec(strCustCategory,strUserName) select * from @categoryInsertTableType
    END
GO
/****** Object:  StoredProcedure [dbo].[CentersEntInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCenterLinesForJournal] ***********/

/*********** Start [CentersEntInsert] ***********/
CREATE PROCEDURE [dbo].[CentersEntInsert]
(
	@CentersData CentersEntTableType READONLY,
	@IsUseLastYear BIT	
)
AS
BEGIN

	IF(@IsUseLastYear = 0)
	BEGIN 
		INSERT INTO tblCenterEnt (uidCenterID,lngJourID,intLineNum,decAmount,decDebits,decCredits,strComment) 
		SELECT CenterID, JourID, LineNumber, Amount, Debits, Credits, Comment FROM @CentersData
	END
	ELSE
	BEGIN
		INSERT INTO tblCenterEntLY (uidCenterID,lngJourID,intLineNum,decAmount,decDebits,decCredits,strComment) 
		SELECT CenterID, JourID, LineNumber, Amount, Debits, Credits, Comment FROM @CentersData
	END
END
GO
/****** Object:  StoredProcedure [dbo].[CentersRecord]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCentersAllocatedTransaction] ***********/

/*********** Start [CentersRecord] ***********/
CREATE PROCEDURE [dbo].[CentersRecord]
(
	@CentersData CentersEntTableType READONLY,
	@IsUseLastYear BIT,	
	@IsAdjusting BIT
)
AS
BEGIN

	DECLARE @JournalID AS BIGINT
	SELECT TOP 1 @JournalID = JourID FROM @CentersData

	IF(@IsUseLastYear = 0)
	BEGIN 
		IF(@IsAdjusting = 1)
		BEGIN
			DELETE FROM tblCenterEnt WHERE lngJourID = @JournalID
		END

		INSERT INTO tblCenterEnt (uidCenterID,lngJourID,intLineNum,decAmount,decDebits,decCredits,strComment) 
		SELECT CenterID, JourID, LineNumber, Amount, Debits, Credits, Comment FROM @CentersData
	END
	ELSE
	BEGIN
		IF(@IsAdjusting = 1)
		BEGIN
			DELETE FROM tblCenterEntLY WHERE lngJourID = @JournalID
		END

		INSERT INTO tblCenterEntLY (uidCenterID,lngJourID,intLineNum,decAmount,decDebits,decCredits,strComment) 
		SELECT CenterID, JourID, LineNumber, Amount, Debits, Credits, Comment FROM @CentersData
	END
END

GO
/****** Object:  StoredProcedure [dbo].[ChangeServerPassword]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ChangeServerPassword]
(
	@strUserName varchar(250),
	@strPassword varchar(250)
)
AS

declare @SQL as varchar(max)

SET @SQL = 'ALTER LOGIN ' + @strUserName + ' WITH PASSWORD = ''' + @strPassword + ''''

Exec(@SQL)
GO
/****** Object:  StoredProcedure [dbo].[CheckBinForDelete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetTotalBinQtyByLocation] ***********/

/*********** Start [CheckBinForDelete] ***********/
CREATE PROCEDURE [dbo].[CheckBinForDelete]
(
	-- Add the parameters for the stored procedure here
	@BinId BIGINT
)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result SETs FROM
	-- INTerfering with SELECT statements.
	SET NOCOUNT ON;

	-- Insert statements for procedure here
	DECLARE @BinCOUNT INT 

	SET @BinCOUNT =  (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblInvIssReqDocDTBin WHERE lngBinId = @BinId)

	IF @BinCOUNT = 0
		BEGIN
			SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblPickTicketsDTBin WHERE lngBinId = @BinId)
		END

	IF @BinCOUNT = 0
		BEGIN
			SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblInvRepackDocDTBin WHERE lngBinId = @BinId)
		END

	IF @BinCOUNT = 0
		BEGIN
			SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblInvAsmDocDTBin WHERE lngBinId = @BinId)
		END

	IF @BinCOUNT = 0
		BEGIN
			SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblManWIPCompInvBin WHERE lngBinId = @BinId)
		END

	IF @BinCOUNT = 0
		BEGIN
			SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblInvAdjDocDT WHERE lngBinId = @BinId)
		END

	IF @BinCOUNT = 0
		BEGIN
			SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(*) FROM  tblInvoiceDocPDTBin WHERE lngBinId = @BinId)
		END

	IF @BinCOUNT = 0
		BEGIN
			SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblOrderDocPGDTBin WHERE lngBinId = @BinId)
		END

	IF @BinCOUNT = 0
		BEGIN
			SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(*) FROM  tblInvTrfDocDT WHERE lngFromBinId = @BinId OR lngToBinId = @BinId)
		END

	IF @BinCOUNT = 0
		BEGIN
			SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblOrderDocDADTBin WHERE lngBinId = @BinId)
		END

	IF @BinCOUNT = 0
		BEGIN
			SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblInvoiceDocDTBin WHERE lngBinId = @BinId)
		END

	IF @BinCOUNT = 0
		BEGIN
			SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblInvTrackingDTBin WHERE lngBinId = @BinId)
		END

	IF @BinCOUNT = 0
		BEGIN
			SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblInvLotExt WHERE lngBinId = @BinId)
		END

	IF @BinCOUNT = 0
		BEGIN
			SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblSerialNumberTracking WHERE lngBinId = @BinId)
		END
	
	SELECT @BinCOUNT

END
GO
/****** Object:  StoredProcedure [dbo].[CheckDocumentIsAvailable]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[CheckDocumentIsAvailable]    Script Date: 2019-08-07 16:37:12 ******/
CREATE PROCEDURE [dbo].[CheckDocumentIsAvailable] 
@DocNumber AS NVARCHAR(50), 
@IsInvoice AS BIT 
AS 
BEGIN 
    IF( @IsInvoice = 1) 
    BEGIN 
        SELECT CASE 
                    WHEN EXISTS(SELECT 1 
                                FROM   tblinvoicedoc 
                                WHERE  strinvdocid = @DocNumber) THEN CAST(1 AS BIT)  
                    ELSE CAST(0 AS BIT) 
                END 
    END 
    ELSE 
    BEGIN 
        SELECT CASE 
                    WHEN EXISTS(SELECT 1 
                                FROM   tblorderdoc 
                                WHERE  strorddocid = @DocNumber) THEN CAST(1 AS BIT)   
                    ELSE CAST(0 AS BIT) 
                END 
    END 
END
GO
/****** Object:  StoredProcedure [dbo].[CheckDocumentReceiptIsAvailable]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[CheckDocumentReceiptIsAvailable]    Script Date: 2019-06-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[CheckDocumentReceiptIsAvailable]
 (
 @DocumentNo NVARCHAR(100)
)
AS
BEGIN
IF EXISTS (SELECT * from tblCustPay where lngCustPayID in (select lngCustPayID from tblCustTransDT where lngCustTrID in (select lngCustTrID from tblCustTrans where strOrdDocID = @DocumentNo))) 
BEGIN
   SELECT CAST(1 as bit)
END
ELSE
BEGIN
    SELECT CAST(0 as bit)
END
END
GO
/****** Object:  StoredProcedure [dbo].[CheckForCenterAllocationAmount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[CheckForCenterAllocationAmount]
(
	@JournalEntry DECIMAL,
	@IsLastYear BIT
)
AS
BEGIN
	
	if(@IsLastYear = 0)
		SELECT COUNT(intLineNum) FROM tblJournalEnt WHERE (lngJourID = @JournalEntry) AND (intGLNumber IN (SELECT intGLNumber FROM tblAccounts WHERE bitAllowCenters = 1 AND intAccType <> 3))
	ELSE
		SELECT COUNT(intLineNum) FROM tblJournalEntLY WHERE (lngJourID = @JournalEntry) AND (intGLNumber IN (SELECT intGLNumber FROM tblAccountsLY WHERE bitAllowCenters = 1 AND intAccType <> 3))

END
GO
/****** Object:  StoredProcedure [dbo].[CheckForSOOpen]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[CheckForSOOpen] 
(
@DocNumber AS NVARCHAR(50)
)
AS
BEGIN
	SELECT DOC.bitCleared AS Cleared
		,ISNULL((
				SELECT COUNT(Z.strOrdDocID)
				FROM (
					SELECT tblOrderDocDT.strOrdDocID
						,tblOrderDocDT.strPartNumber
						,tblOrderDocDT.strLocation
						,SUM(tblOrderDocDT.decQty) AS decQty
						,SUM(tblOrderDocDT.decQtyRemaining) AS decQtyRemaining
						,ISNULL((
								SELECT SUM(DTL.decQty)
								FROM tblOrderDocDA HDR
								INNER JOIN tblOrderDocDADT DTL ON HDR.strOrdDADocID = DTL.strOrdDADocID
								WHERE HDR.bitFromSO = 1
									AND HDR.strOrdDocID = tblOrderDocDT.strOrdDocID
									AND DTL.strPartNumber = tblOrderDocDT.strPartNumber
									AND DTL.strLocation = tblOrderDocDT.strLocation
								), 0) AS decQty_DA
						,SUM(tblOrderDocDT.decStockQty) AS decStockQty
						,SUM(tblOrderDocDT.decStockQtyRemain) AS decStockQtyRemain
						,ISNULL((
								SELECT SUM(DTL.decStockQty)
								FROM tblOrderDocDA HDR
								INNER JOIN tblOrderDocDADT DTL ON HDR.strOrdDADocID = DTL.strOrdDADocID
								WHERE HDR.bitFromSO = 1
									AND HDR.strOrdDocID = tblOrderDocDT.strOrdDocID
									AND DTL.strPartNumber = tblOrderDocDT.strPartNumber
									AND DTL.strLocation = tblOrderDocDT.strLocation
								), 0) AS decStockQty_DA
					FROM tblOrderDocDT
					WHERE tblOrderDocDT.strOrdDocID = DOC.strOrdDocID
					GROUP BY tblOrderDocDT.strOrdDocID
						,tblOrderDocDT.strPartNumber
						,tblOrderDocDT.strLocation
					) Z
				WHERE (
						Z.decQtyRemaining <> (Z.decQty - Z.decQty_DA)
						OR Z.decStockQtyRemain <> (Z.decStockQty - Z.decStockQty_DA)
						)
				), 0) AS OrderDocIDCount
	FROM tblOrderDoc DOC
	WHERE DOC.strOrdDocID = @DocNumber
END
GO

/****** Object:  StoredProcedure [dbo].[CheckIsActivityinUse]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/************************END [GetCRMUserFieldList]***********************************/

/************************START [CheckIsActivityinUse]***********************************/

CREATE Procedure [dbo].[CheckIsActivityinUse]
@ActivityName nvarchar(500),
@ActivityGroupName nvarchar(200)
AS
BEGIN
	Select Cast(Count(*) as nvarchar(Max)) as ActivityCount from tblCRMActivities inner join tblCRMActivityStatus on tblCRMActivities.ActivityStatus=tblCRMActivityStatus.StatusType
	Where StatusGroup<>3 and tblCRMActivities.ActivityName=@ActivityName and tblCRMActivities.ActivityGroupName=@ActivityGroupName
END
GO
/****** Object:  StoredProcedure [dbo].[CheckIssuedQtyStatusForProcessJob]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** END [ShipmentAuditTrailReport] ***********/

/*********** Start  [CheckIssuedQtyStatusForProcessJob] ***********/

CREATE PROCEDURE [dbo].[CheckIssuedQtyStatusForProcessJob] 
( 
	@DocNumber VARCHAR(50)
)
AS
BEGIN
	SELECT 
		tblWSWIP.JBDocID,
		SUM(PostQty) as PostQty,
		SUM(ReturnQty) as ReturnQty
	FROM tblWSWIP 
	INNER JOIN tblWSWIPCompDT on tblWSWIP.WIPDocID = tblWSWIPCompDT.WIPDocID
	WHERE 
		JBDocID = @DocNumber
	GROUP BY
		tblWSWIP.JBDocID
END
GO
/****** Object:  StoredProcedure [dbo].[CheckItemDescriptionIsInUse]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[CheckItemDescriptionIsInUse]    Script Date: 06-09-2019 10:36:27 ******/
CREATE PROCEDURE [dbo].[CheckItemDescriptionIsInUse]
@strDescription as nvarchar(250)
AS
BEGIN
select Count(*) AS [Count] from tblInvDescriptionList where strDescription=@strDescription
END
GO
/****** Object:  StoredProcedure [dbo].[CheckPOAlreadyCleared]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[CheckPOAlreadyCleared]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[CheckPOAlreadyCleared]
	@docId Varchar(20)
AS
BEGIN
	SET NOCOUNT ON;
	Select bitCleared From tblOrderDocP Where strOrdPDocID = @docId
END
GO
/****** Object:  StoredProcedure [dbo].[CheckPOQtyAfterGRV]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-----------------------------------------------------------------
Create Procedure [dbo].[CheckPOQtyAfterGRV]
(
@DocNumber nvarchar(100)
)
as
Begin
SELECT 
bitCleared as IsCleared, 
ISNULL((SELECT COUNT(Z.strOrdPDocID) FROM (SELECT tblOrderDocPDT.strOrdPDocID FROM tblOrderDocPDT INNER JOIN tblOrderDocPG ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPG.strOrdPDocID LEFT JOIN tblOrderDocPGDT ON tblOrderDocPG.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID AND tblOrderDocPDT.strPartNumber = tblOrderDocPGDT.strPartNumber AND tblOrderDocPDT.strLocation = tblOrderDocPGDT.strLocation WHERE tblOrderDocPG.bitFromPO = 1 AND tblOrderDocPDT.strOrdPDocID = tblOrderDocP.strOrdPDocID GROUP BY tblOrderDocPDT.strOrdPDocID, tblOrderDocPDT.strPartNumber, tblOrderDocPDT.strLocation, tblOrderDocPDT.decBuyQty, tblOrderDocPDT.decStockQty, tblOrderDocPDT.decBuyQtyRemain, tblOrderDocPDT.decStockQtyRemain HAVING (tblOrderDocPDT.decBuyQtyRemain <> (tblOrderDocPDT.decBuyQty - ISNULL(SUM(tblOrderDocPGDT.decBuyQty),0)) OR tblOrderDocPDT.decStockQtyRemain <> (tblOrderDocPDT.decStockQty - ISNULL(SUM(tblOrderDocPGDT.decStockQty),0)))) Z),0) as POQtyDifference
FROM tblOrderDocP WHERE strOrdPDocID = @DocNumber
End
GO
/****** Object:  StoredProcedure [dbo].[ClearPORequisition]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[ClearPORequisition]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[ClearPORequisition]
	@OrdPDocID Varchar(50)
AS
BEGIN
	SET NOCOUNT ON;

    UPDATE tblOrderDocP SET bitCleared = 1 WHERE strOrdPDocID = @OrdPDocID
END
GO
/****** Object:  StoredProcedure [dbo].[CompanyDetailsExists]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-----------------------------------------------------------------
CREATE PROCEDURE [dbo].[CompanyDetailsExists]
AS
BEGIN
	DECLARE @ColumnExists bit

	 IF (SELECT COUNT(sysobjects.id) FROM sysobjects, syscolumns WHERE sysobjects.id = syscolumns.id AND sysobjects.name = N'tblCompany' AND syscolumns.name = N'strCoSerial') > 0
		 BEGIN
			SET @ColumnExists=1
		 END
	 ELSE
		BEGIN
			SET @ColumnExists=0
		END

	SELECT @ColumnExists	
END
GO
/****** Object:  StoredProcedure [dbo].[CompanyInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[CompanyInsert]
	@Name AS NVARCHAR(50),
	@Street1 AS NVARCHAR(100),
	@Street2 AS NVARCHAR(100),
	@City AS NVARCHAR(50),
	@Province AS NVARCHAR(50),
	@Postal AS NVARCHAR(20),
	@Country AS NVARCHAR(50),
	@Phone1 AS NVARCHAR(50),
	@Phone2 AS NVARCHAR(50),
	@Fax AS NVARCHAR(50),
	@Email AS NVARCHAR(50),
	@CK AS NVARCHAR(50),
	@VAT AS NVARCHAR(50),
	@LYStarted AS SMALLDATETIME,
	@LYEnded AS SMALLDATETIME,
	@YearStart AS SMALLDATETIME,
	@YearEnd AS SMALLDATETIME,
	@EarliestTran AS SMALLDATETIME,
	@PeriodClose AS SMALLDATETIME,
	@CountryCode AS NVARCHAR(10) = NULL,
	@Logo AS IMAGE = NULL,
	@CoSerial AS VARCHAR(50),
	@CloudUserName AS VARCHAR(50),
	@CloudPassword AS VARCHAR(50),
	@Facebook AS NVARCHAR(200),
	@LinkedIn AS NVARCHAR(200),
	@YodleeUserName	AS NVARCHAR(200)
AS
BEGIN
	INSERT INTO tblCompany
		 ([strName]
           ,[strStreet1]
           ,[strStreet2]
           ,[strCity]
           ,[strProvince]
           ,[strPostal]
           ,[strCountry]
           ,[strPhone1]
           ,[strPhone2]
           ,[strFax]
           ,[strEmail]
           ,[strCK]
           ,[strVAT]
           ,[dteLYStarted]
           ,[dteLYEnded]
           ,[dteYearStarts]
           ,[dteYearEnds]
           ,[dteEarliestTran]
           ,[dtePeriodClose]
           ,[strCountryCode]
           ,[imgLogo]
           ,[strCoSerial]
           ,[strCloudUsername]
           ,[strCloudPassword]
		   ,[strFacebook]
		   ,[strLinkedIn]
		   ,[strYodleeUser]
         )
	VALUES (@Name, @Street1, @Street2, @City, @Province, @Postal, @Country, @Phone1, @Phone2, @Fax, @Email, @CK, @VAT, @LYStarted, @LYEnded, @YearStart, @YearEnd, @EarliestTran, @PeriodClose, @CountryCode, @Logo, @CoSerial, @CloudUserName, @CloudPassword,@Facebook,@LinkedIn,@YodleeUserName)
END
GO
/****** Object:  StoredProcedure [dbo].[CompanyLocationAdd]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[CompanyLocationAdd]
			@strLocName nvarchar(50)
           ,@strStreet1 nvarchar(100)
           ,@strStreet2 nvarchar(100)
           ,@strCity nvarchar(50)
           ,@strProvince nvarchar(50)
           ,@strPostal nvarchar(20)
           ,@strCountry nvarchar(50)
           ,@strCountryCode nvarchar(10)
AS
BEGIN
	INSERT INTO [dbo].[tblCompanyLoc]
           ([strLocName]
           ,[strStreet1]
           ,[strStreet2]
           ,[strCity]
           ,[strProvince]
           ,[strPostal]
           ,[strCountry]
           ,[strCountryCode])
     VALUES
           (@strLocName
			   ,@strStreet1
			   ,@strStreet2
			   ,@strCity 
			   ,@strProvince
			   ,@strPostal 
			   ,@strCountry
			   ,@strCountryCode)
End
GO
/****** Object:  StoredProcedure [dbo].[CompanyLocationUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[CompanyLocationUpdate]
			@strLocName nvarchar(50)
           ,@strStreet1 nvarchar(100)
           ,@strStreet2 nvarchar(100)
           ,@strCity nvarchar(50)
           ,@strProvince nvarchar(50)
           ,@strPostal nvarchar(20)
           ,@strCountry nvarchar(50)
           ,@strCountryCode nvarchar(10)
		   ,@strOldLocationName nvarchar(50)
AS
BEGIN
	UPDATE [dbo].[tblCompanyLoc]
   SET 
	   [strLocName] = @strLocName
	  ,[strStreet1] = @strStreet1
      ,[strStreet2] = @strStreet2
      ,[strCity] = @strCity
      ,[strProvince] = @strProvince
      ,[strPostal] = @strPostal
      ,[strCountry] = @strCountry
      ,[strCountryCode] = @strCountryCode
 WHERE [strLocName] = @strOldLocationName

End
GO
/****** Object:  StoredProcedure [dbo].[ContainerProcessDetailLines]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------------------
CREATE PROCEDURE [dbo].[ContainerProcessDetailLines]
(	
	@ContainerList AS ContainersTableType READONLY
)
AS 
BEGIN

	INSERT INTO tblContainersDT (strCntDocID, strShpDocID, decTotalValue, decVolW, decVolH, decVolD, decCuVol, decWeight, intSeqNo)
	SELECT * FROM @ContainerList

END
GO
/****** Object:  StoredProcedure [dbo].[ContainerProcessHeaders]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------'
CREATE PROCEDURE [dbo].[ContainerProcessHeaders]
(
	@IsAdjusting BIT,
	@CntDocID NVARCHAR(50),
	@SystemDate AS SMALLDATETIME,
	@JournalDate AS SMALLDATETIME,
	@Required AS SMALLDATETIME,
	@UserName AS NVARCHAR(20),
	@CustName AS NVARCHAR(50),
	@SoldTo AS NVARCHAR(500),
	@ShipTo AS NVARCHAR(500),
	@Reference AS NVARCHAR(50),
	@Notes AS NVARCHAR(MAX),
	@TrackingNo AS NVARCHAR(500),
	@WayBillNo AS NVARCHAR(500),
	@TotalValue AS DECIMAL(19,4),
	@Width AS DECIMAL(19,4),
	@Height AS DECIMAL(19,4),
	@Deep AS DECIMAL(19,4),
	@Cube AS DECIMAL(19,4),
	@Weight AS DECIMAL(19,4),
	@Type AS NVARCHAR(50),
	@CustMultiple AS BIT,
	@DelRouteCode AS NVARCHAR(50),
	@DelVehicleCode AS NVARCHAR(50),
	@DelDriverCode AS NVARCHAR(50)	
)
AS 
BEGIN

	IF(@IsAdjusting = 0)
		INSERT INTO tblContainers (strCntDocID, dteSystemDate, dteJournalDate, dteRequired, strUserName, strCustName, strSoldTo, strShipTo, strReference, strType, bitHistoryTrans, strNotes, strTrackingNo, strWayBillNo, bitPrinted, bitEmailed, decTotalValue, decVolW, decVolH, decVolD, decCuVol, decWeight, bitCustMultiple, strDelRouteCode, strDelVehicleCode, strDelDriverCode) 
		VALUES (@CntDocID, @SystemDate, @JournalDate, @Required, @UserName, @CustName, @SoldTo, @ShipTo, @Reference, @Type, 0, @Notes, @TrackingNo, @WayBillNo, 0, 0, @TotalValue, @Width, @Height, @Deep, @Cube, @Weight, @CustMultiple, @DelRouteCode, @DelVehicleCode, @DelDriverCode)

	ELSE
		UPDATE tblContainers SET dteSystemDate = @SystemDate, dteJournalDate = @JournalDate, dteRequired = @Required, strUserName = @UserName, strCustName = @CustName, strSoldTo = @SoldTo, strShipTo = @ShipTo, strReference = @Reference, strType = @Type, bitHistoryTrans = 0, strNotes = @Notes, strTrackingNo = @TrackingNo, strWayBillNo = @WayBillNo, bitPrinted = 0, bitEmailed = 0, decTotalValue = @TotalValue, decVolW = @Width, decVolH = @Height, decVolD = @Deep, decCuVol = @Cube, decWeight = @Weight, bitCustMultiple = @CustMultiple, strDelRouteCode = @DelRouteCode, strDelVehicleCode = @DelVehicleCode, strDelDriverCode = @DelDriverCode WHERE strCntDocID = @CntDocID

END
GO
/****** Object:  StoredProcedure [dbo].[ContainersInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------

CREATE PROCEDURE [dbo].[ContainersInsert]
(
	@ContainerList AS ContainerPickerTableType READONLY,
	@SystemDate AS DATETIME,
	@SessionDate AS DATETIME,
	@UserName AS NVARCHAR(40),
	@CustomerName AS NVARCHAR(100)
)
AS
BEGIN

	INSERT INTO tblContainers (strCntDocID, dteSystemDate, dteJournalDate, dteRequired, strUserName, strCustName, strSoldTo, strShipTo, strReference, strType, bitHistoryTrans, strNotes, strTrackingNo, strWayBillNo, bitPrinted, bitEmailed, decTotalValue, decVolW, decVolH, decVolD, decCuVol, decWeight)
	SELECT CntDocID, @SystemDate, @SessionDate, @SessionDate, @UserName, @CustomerName, 'History / Cleared Trans', 'History / Cleared Trans', 'History / Cleared Trans', 'History / Cleared Trans', 1, 'History / Cleared Trans', 'History / Cleared Trans', 'History / Cleared Trans', 1, 1, 0, 0, 0, 0, 0, 0 FROM @ContainerList


	INSERT INTO tblContainersDT (strCntDocID, strShpDocID, decTotalValue, decVolW, decVolH, decVolD, decCuVol, decWeight)
	SELECT CntDocID, ShpDocID, 0, 0, 0, 0, 0, 0 FROM @ContainerList
END
GO
/****** Object:  StoredProcedure [dbo].[ContractBillDataDelete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [ShipmentProcessDetailLines] ***********/

/*********** Start [ContractBillDataDelete] ***********/
CREATE PROCEDURE [dbo].[ContractBillDataDelete]
 @DocNumber AS NVARCHAR(50)
AS
BEGIN
	DELETE FROM tblContractBillDT WHERE strContDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[ContractBillDTInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InvoiceDocSplitPmtInsert] ***********/

/*********** Start [ContractBillDTInsert] ***********/
CREATE PROCEDURE [dbo].[ContractBillDTInsert]
 @ContractBillDTData ContractBillDTTableType READONLY
AS
BEGIN
	
	DELETE FROM [dbo].[tblContractBillDT] 
	WHERE strContDocID +'-'+CONVERT(NVARCHAR(20),intLineNo)  IN (SELECT  [ContDocID]+'-'+CONVERT(NVARCHAR(20),[LineNo])  FROM  @ContractBillDTData) 

	INSERT INTO [dbo].[tblContractBillDT]
	SELECT * FROM @ContractBillDTData
END
GO
/****** Object:  StoredProcedure [dbo].[ContractBillingInvoiceSearch]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [ContractBillTypesInsert] ***********/

/*********** Start [ContractBillingInvoiceSearch] ***********/
CREATE PROCEDURE [dbo].[ContractBillingInvoiceSearch]

	(@ConDocID nvarchar(50)=NULL ,
	@OrdDocID nvarchar(50)=NULL  ,
	@ContBillType nvarchar(50)=NULL)
AS
BEGIN
	  SELECT 
            [strContDocID] AS ContDocID ,
			[dteSystemDate] AS SystemDate ,
			[dteJournalDate] AS JournalDate,
			[strUserName] AS UserName ,
			[strCustName] AS CustName ,
			[strContractTo] AS ContractTo ,
			[strReference] AS Reference ,
			[decSubTotal] AS SubTotal,
			[decTotal] AS Total ,
			[decVAT] AS VAT,
			[strNotes] AS Notes,
			[strOrdDocID] AS OrdDocID,
			[bitPrinted] AS IsPrinted, 
			[bitEmailed] AS IsEmailed ,
			[strSalesName] AS SalesName ,
			[strAddInfo] AS AddInfo,
			[strCurrency] AS Currency,
			[strTerm] AS Term,
			[strField1] AS  Field1 ,
			[strField2] AS  Field2 ,
			[strField3] AS  Field3 ,
			[strField4] AS  Field4 ,
			[strField5] AS  Field5 ,
			[strField6] AS  Field6 ,
			[strField7] AS  Field7 ,
			[strField8] AS  Field8 ,
			[strField9] AS  Field9 ,
			[strField10] AS Field10 ,
			[strField11] AS Field11 ,
			[strField12] AS Field12 ,
			[dtpField13] AS Field13,
			[dtpField14] AS Field14,
			[strSubFormated] AS  SubFormated ,
			[strTotFormatted] AS TotFormatted,
			[strVATFormatted] AS VATFormatted,
			[decDiscPerc] AS DiscPerc,
			[decDiscAmt] AS DiscAmt,
			[decDiscAmtF] AS DiscAmtF,
			[strDiscFormatted] AS DiscFormatted ,
			[strPaidBy] AS PaidBy,
			[strDelMethodCode] AS DelMethodCode,
			[strContBillType] AS ContBillType ,
			[blnAllowAnnualIncrease] AS IsAllowAnnualIncrease,
			[intContractPriceIncrease] AS ContractPriceIncrease,
			[dtpIncreaseStartDate] AS IncreaseStartDate,
			[bitInactive] AS IsInactive,
			[strShipTo] AS ShipTo,
			[bitIsForeign] AS IsForeign,
			[dtpLastProcessDate] AS LastProcessDate,
			[intTotalProcessCount] AS TotalProcessCount,
			[decSubTotalF] AS SubTotalF,
			[decVATF] AS VATF,
			[decTotalF] AS TotalF,
			[decExchange] AS Exchange
    FROM 
        [tblContractBill]
	WHERE
		(([strContDocID] = @ConDocID) OR (@ConDocID Is Null)) AND 
		(([strOrdDocID] = @OrdDocID) OR (@OrdDocID Is Null)) AND
		(([strContBillType] = @ContBillType) OR (@ContBillType Is Null))
END
GO
/****** Object:  StoredProcedure [dbo].[ContractBillInvoice_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/************* End [UpdateOpenOrdersAndPickTicketsForDA] **************/

/*********** Start [ContractBillInvoice_Save] ***********/
CREATE PROCEDURE  [dbo].[ContractBillInvoice_Save] 
(
	@strContDocID nvarchar(50)=NULL,
	@dteSystemDate date=NULL,
	@dteJournalDate date=NULL,
	@strUserName nvarchar(20)=NULL,
	@strCustName nvarchar(50)=NULL,
	@strContractTo nvarchar(500)=NULL,
	@strReference nvarchar(50)=NULL,
	@decSubTotal money=NULL,
	@decTotal money=NULL,
	@decVAT money=NULL,
	@strNotes  nvarchar(MAX)=NULL,
	@strOrdDocID nvarchar(50)=NULL,
	@bitPrinted bit=Null,
	@bitEmailed bit=Null,
	@strSalesName nvarchar(50)=Null,
	@strAddInfo nvarchar(50)=NULL,
	@strCurrency nvarchar(3)=NULL,
	@strTerm nvarchar(50)=NULL,
	@strField1 nvarchar(100)=NULL,
	@strField2 nvarchar(100)=NULL,
	@strField3 nvarchar(100)=NULL,
	@strField4 nvarchar(100)=NULL,
	@strField5 nvarchar(100)=NULL,
	@strField6 nvarchar(100)=NULL,
	@strField7 nvarchar(100)=NULL,
	@strField8 nvarchar(100)=NULL,
	@strField9 nvarchar(100)=NULL,
	@strField10 nvarchar(100)=NULL,
	@strField11 nvarchar(100)=NULL,
	@strField12 nvarchar(100)=NULL,
	@dtpField13 date=NULL,
	@dtpField14 date=NULL,
	@strSubFormated nvarchar(50)=NULL,
	@strTotFormatted nvarchar(50)=NULL,
	@strVATFormatted nvarchar(50)=Null,
	@decDiscPerc money=NULL,
	@decDiscAmt money=NULL,
	@decDiscAmtF money=NULL,
	@strDiscFormatted nvarchar(50)=NULL,
	@strPaidBy nvarchar(20)=NULL,
	@strDelMethodCode nvarchar(50)=NULL,
	@strContBillType nvarchar(50)=NULL,
	@blnAllowAnnualIncrease bit=NULL,
	@intContractPriceIncrease int=NULL,
	@dtpIncreaseStartDate date=NULL,
	@bitInactive bit=NULL,
	@strShipTo varchar(200)=NULL,
	@intRevisionNumber int=NULL,
	@bitIsForeign bit=Null,
	@dtpLastProcessDate datetime = NULL,
	@intTotalProcessCount int = NULL,
	@decSubTotalF money=NULL,
	@decVATF money=NULL,
	@decTotalF money=NULL,
	@decExchange decimal(20,6)=NULL,
	@strDepartment nvarchar(50)=NULL,
	@TotalWeight money, 
	@TotalVolWeight money,
	@DeliveryCost money,
	@DeliveryCostForeign money,
	@DeliveryCostFormatted nvarchar(50)
)
 As  
 BEGIN TRY
 declare @CBnumber bigint = 0

	IF ((SELECT COUNT(*) FROM tblContractBill WHERE strContDocID = @strContDocID) = 0)
    BEGIN
        INSERT INTO [tblContractBill]
        (
			strContDocID,
			dteSystemDate,
			dteJournalDate,
			strUserName,
			strCustName,
			strContractTo,
			strReference,
			decSubTotal,
			decTotal,
			decVAT,
			strNotes,
			strOrdDocID,
			bitPrinted,
			bitEmailed,
			strSalesName,
			strAddInfo,
			strCurrency,
			strTerm,
			strField1,
			strField2,
			strField3,
			strField4,
			strField5,
			strField6,
			strField7,
			strField8,
			strField9,
			strField10,
			strField11,
			strField12,
			dtpField13,
			dtpField14,
			strSubFormated,
			strTotFormatted,
			strVATFormatted,
			decDiscPerc,
			decDiscAmt,
			decDiscAmtF,
			strDiscFormatted,
			strPaidBy,
			strDelMethodCode,
			strContBillType,
			blnAllowAnnualIncrease,
			intContractPriceIncrease,
			dtpIncreaseStartDate,
			bitInactive,
			strShipTo,
			intRevisionNumber,
			bitIsForeign,
			dtpLastProcessDate,
			intTotalProcessCount,
			decSubTotalF,
			decVATF,
			decTotalF,
			decExchange,
			strDepartment,
			decTotalWeight,
            decTotalVolWeight,
            decDeliveryCost,
            decDeliveryCostF,
            strDeliveryCostFormatted
			 
        )
        VALUES
        (
			@strContDocID,
			@dteSystemDate ,
			@dteJournalDate ,
			@strUserName,
			@strCustName,
			@strContractTo ,
			@strReference ,
			@decSubTotal,
			@decTotal ,
			@decVAT,
			@strNotes  ,
			@strOrdDocID,
			@bitPrinted,
			@bitEmailed ,
			@strSalesName ,
			@strAddInfo ,
			@strCurrency,
			@strTerm ,
			@strField1 ,
			@strField2 ,
			@strField3 ,
			@strField4,
			@strField5 ,
			@strField6 ,
			@strField7 ,
			@strField8,
			@strField9 ,
			@strField10 ,
			@strField11 ,
			@strField12 ,
			@dtpField13 ,
			@dtpField14 ,
			@strSubFormated ,
			@strTotFormatted ,
			@strVatFormatted,
			@decDiscPerc ,
			@decDiscAmt,
			@decDiscAmtF ,
			@strDiscFormatted,
			@strPaidBy ,
			@strDelMethodCode,
			@strContBillType,
			@blnAllowAnnualIncrease,
			@intContractPriceIncrease ,
			@dtpIncreaseStartDate ,
			@bitInactive ,
			@strShipTo,
			@intRevisionNumber,
			@bitIsForeign,
			@dtpLastProcessDate,
			@intTotalProcessCount,
			@decSubTotalF,
			@decVATF,
			@decTotalF,
			@decExchange,
			@strDepartment,
			@TotalWeight,
			@TotalVolWeight,
			@DeliveryCost,
			@DeliveryCostForeign,
			@DeliveryCostFormatted 
        )
    
        SELECT @strContDocID

FROM tblContractBill
SELECT @CBnumber = MAX(CAST(SUBSTRING(strContDocID, 4, LEN(strContDocID)) AS BIGINT)) FROM tblContractBill

		exec UpdateLastIDs @CBnumber
    END  
	ELSE
	BEGIN
		UPDATE [tblContractBill] SET 
		   [strContDocID]= ISNULL(@strContDocID, [strContDocID]),
		   [dteSystemDate]= ISNULL(@dteSystemDate, [dteSystemDate]),  
		   [dteJournalDate]= ISNULL(@dteJournalDate, [dteJournalDate]),  
		   [strUserName]= ISNULL(@strUserName, [strUserName]),  
		   [strCustName]= ISNULL(@strCustName, [strCustName]),  
		   [strContractTo]= ISNULL(@strContractTo, [strContractTo]),    
		   [strReference]= ISNULL(@strReference, [strReference]),  
		   [decSubTotal]= ISNULL(@decSubTotal, [decSubTotal]),  
		   [decTotal]= ISNULL(@decTotal, [decTotal]),  
		   [decVAT]= ISNULL(@decVAT, [decVAT]),  
		   [strNotes]= ISNULL(@strNotes, [strNotes]),  
		   [strOrdDocID]= ISNULL(@strOrdDocID, [strOrdDocID]),  
		   [bitPrinted]= ISNULL(@bitPrinted, [bitPrinted]),  
		   [bitEmailed]= ISNULL(@bitEmailed, [bitEmailed]),  
		   [strSalesName]= ISNULL(@strSalesName, [strSalesName]),  
		   [strAddInfo]= ISNULL(@strAddInfo, [strAddInfo]),  
		   [strCurrency]= ISNULL(@strCurrency, [strCurrency]),  
		   [strTerm]= ISNULL(@strTerm, [strTerm]),  
		   [strField1]= ISNULL(@strField1, [strField1]),  
		   [strField2]= ISNULL(@strField2, [strField2]),  
		   [strField3]= ISNULL(@strField3, [strField3]),  
		   [strField4]= ISNULL(@strField4, [strField4]),  
		   [strField5]= ISNULL(@strField5, [strField5]),  
		   [strField6]= ISNULL(@strField6, [strField6]),  
		   [strField7]= ISNULL(@strField7, [strField7]),  
		   [strField8]= ISNULL(@strField8, [strField8]),  
		   [strField9]= ISNULL(@strField9, [strField9]),  
		   [strField10]= ISNULL(@strField10, [strField10]),  
		   [strField11]= ISNULL(@strField11, [strField11]),  
		   [strField12]= ISNULL(@strField12, [strField12]),  
		   [dtpField13]= ISNULL(@dtpField13, [dtpField13]),  
		   [dtpField14]= ISNULL(@dtpField14, [dtpField14]),  
		   [strSubFormated]= ISNULL(@strSubFormated, [strSubFormated]),  
		   [strTotFormatted]= ISNULL(@strTotFormatted, [strTotFormatted]),  
		   [strVATFormatted]= ISNULL(@strVATFormatted, [strVATFormatted]),
		   [decDiscPerc]= ISNULL(@decDiscPerc, [decDiscPerc]),  
		   [decDiscAmt]= ISNULL(@decDiscAmt, [decDiscAmt]),  
		   [decDiscAmtF]= ISNULL(@decDiscAmtF, [decDiscAmtF]),  
		   [strDiscFormatted]= ISNULL(@strDiscFormatted, [strDiscFormatted]),  
		   [strPaidBy]= ISNULL(@strPaidBy, [strPaidBy]),  
		   [strDelMethodCode]= ISNULL(@strDelMethodCode, [strDelMethodCode]),  
		   [strContBillType]= ISNULL(@strContBillType, [strContBillType]),  
		   [blnAllowAnnualIncrease]= ISNULL(@blnAllowAnnualIncrease, [blnAllowAnnualIncrease]),  
		   [intContractPriceIncrease]= ISNULL(@intContractPriceIncrease, [intContractPriceIncrease]),  
		   [dtpIncreaseStartDate]= ISNULL(@dtpIncreaseStartDate, [dtpIncreaseStartDate]), 
		   [bitInactive]= ISNULL(@bitInactive, [bitInactive]),  
		   [strShipTo]= ISNULL(@strShipTo, [strShipTo]),
		   [intRevisionNumber] = ISNULL(@intRevisionNumber, [intRevisionNumber]),   
		   [bitIsForeign]= ISNULL(@bitIsForeign, [bitIsForeign]),
		   [dtpLastProcessDate]= ISNULL(@dtpLastProcessDate,[dtpLastProcessDate]),
		   [intTotalProcessCount]= ISNULL(@intTotalProcessCount,[intTotalProcessCount]),
		   [decSubTotalF]= ISNULL(@decSubTotalF,[decSubTotalF]),
		   [decVATF]= ISNULL(@decVATF,[decVATF]),
		   [decTotalF]= ISNULL(@decTotalF,[decTotalF]),
		   [decExchange] = ISNULL(@decExchange,[decExchange]),    
		   [strDepartment] =ISNULL(@strDepartment,[strDepartment]),
		   [decTotalWeight]=ISNULL(@TotalWeight,[decTotalWeight]),
		   [decTotalVolWeight]=ISNULL(@TotalVolWeight,[decTotalVolWeight]),
		   [decDeliveryCost]=ISNULL(@DeliveryCost,[decDeliveryCost]),
		   [decDeliveryCostF]=ISNULL(@DeliveryCostForeign,[decDeliveryCostF]),
		   [strDeliveryCostFormatted]=ISNULL(@DeliveryCostFormatted,[strDeliveryCostFormatted])
		           
        WHERE
            [strContDocID] = @strContDocID
        SELECT @strContDocID
	END 
	RETURN 1
	END TRY
BEGIN CATCH
 PRINT 'Error: ' + ERROR_MESSAGE();
END CATCH
GO

/****** Object:  StoredProcedure [dbo].[ContractBillInvoicesRevision]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------------------'
CREATE PROCEDURE [dbo].[ContractBillInvoicesRevision]

    @DocNumber nvarchar(250)
	,@LineNo int

AS

BEGIN



		DECLARE @lngRevID AS bigint

		DECLARE @ReferenceNumber AS INT		

		

		SELECT @lngRevID = (ISNULL(MAX(lngEntID),0) + 1) FROM tblInvoiceDocREV

		SELECT @ReferenceNumber = (ISNULL(MAX(intRevisionNumber),0) + 1) FROM tblInvoiceDocREV WHERE strInvDocID = @DocNumber



		ALTER TABLE tblInvoiceDocREV NOCHECK CONSTRAINT FK_tblInvoiceDocREV_tblDeliveryMethods

INSERT INTO [tblInvoiceDocREV] (

	[lngEntID]

	,[strInvDocID]

	,[lngInvTrackID]

	,[lngJourID]

	,[dteSystemDate]

	,[dteJournalDate]

	,[dteRequired]

	,[strUserName]

	,[strCustName]

	,[strSoldTo]

	,[strShipTo]

	,[strReference]

	,[decSubTotal]

	,[decVAT]

	,[decTotal]

	,[bitFromSO]

	,[strOrdDocID]

	,[bitHistoryTrans]

	,[strNotes]

	,[bitPrinted]

	,[bitEmailed]

	,[intPaidBy]

	,[intAccount]

	,[strSalesName]

	,[strAddInfo]

	,[bitReserved]

	,[strCurrency]

	,[bitIsForeign]

	,[decSubTotalF]

	,[decVATF]

	,[decTotalF]

	,[decExchange]

	,[strTerm]

	,[intDept]

	,[strField1]

	,[strField2]

	,[strField3]

	,[strField4]

	,[strField5]

	,[strField6]

	,[strField7]

	,[strField8]

	,[strField9]

	,[strField10]

	,[strField11]

	,[strField12]

	,[strSubFormated]

	,[strVATFormatted]

	,[strTotFormatted]

	,[dteField13]

	,[dteField14]

	,[decDiscPerc]

	,[decDiscAmt]

	,[decDiscAmtF]

	,[strDiscFormatted]

	,[strOrdFQDocID]

	,[strStatusTypeCode]

	,[strCNReasonCode]

	,[bitBookmark]

	,[dteSystemDateTime]

	,[strPaidBy]

	,[intSentDoc]

	,[strVAT]

	,[strDelMethodCode]

	,[decTotalWeight]

	,[decTotalVolWeight]

	,[decDeliveryCost]

	,[decDeliveryCostF]

	,[strDeliveryCostFormatted]

	,[intRevisionNumber]

	,[dteRevisionDate]

	,[strUserCreated]

	,[bitIsRepair]

	,[strVendName]

	,[strBoughtFrom]

	,[bitFQConvert]

	,[bitSOCopy]

	,[bitSOCopyMulti]

	,[strVendInvNo]

	,[bitFromPO]

	,[decNetItemWeight]

	,[decNetVolumetricWeight]

	,[strSourceMOP]

	,[bitCleared]

	,[strOrdRFQDocID]

	,[bitRFQConvert]

	,[strOrdPDocID]

	,[intModule]

	,[strSOReasonCode]

	,[strDelNoteNo]

	,[strContractTo]

	,[strContBillType]

	,[blnAllowAnnualIncrease]

	,[intContractPriceIncrease]

	,[dtpIncreaseStartDate]

	,[bitInactive]

	) (

	SELECT @lngRevID

		,strContDocID

		,NULL

		,NULL

		,dteSystemDate

		,dteJournalDate

		,NULL

		,strUserName

		,strCustName

		,NULL

		,NULL

		,strReference

		,decSubTotal

		,decVAT

		,decTotal

		,NULL

		,strOrdDocID

		,NULL

		,strNotes

		,bitPrinted

		,bitEmailed

		,NULL

		,NULL

		,strSalesName

		,strAddInfo

		,NULL

		,strCurrency

		,NULL

		,NULL

		,NULL

		,NULL

		,NULL

		,strTerm

		,NULL

		,strField1

		,strField2

		,strField3

		,strField4

		,strField5

		,strField6

		,strField7

		,strField8

		,strField9

		,strField10

		,strField11

		,strField12

		,strSubFormated

		,strVATFormatted

		,strTotFormatted

		,dtpField13

		,dtpField14

		,decDiscPerc

		,decDiscAmt

		,decDiscAmtF

		,strDiscFormatted

		,NULL

		,NULL

		,NULL

		,NULL

		,GETDATE()

		,strPaidBy

		,NULL

		,NULL

		,ISNULL(strDelMethodCode,'')

		,NULL

		,NULL

		,NULL

		,NULL

		,NULL

		,intRevisionNumber

		,GETDATE()

		,NULL

		,NULL

		,NULL

		,NULL

		,NULL

		,NULL

		,NULL

		,NULL

		,NULL

		,NULL

		,NULL

		,NULL

		,NULL

		,NULL

		,NULL

		,NULL

		,12

		,NULL

		,NULL

		,strContractTo

		,strContBillType

		,blnAllowAnnualIncrease

		,intContractPriceIncrease

		,dtpIncreaseStartDate

		,bitInactive 

	FROM tblContractBill 

	WHERE strContDocID = @DocNumber

	)

	ALTER TABLE tblInvoiceDocREV CHECK CONSTRAINT FK_tblInvoiceDocREV_tblDeliveryMethods	



	INSERT INTO [tblInvoiceDocREVDT] (

	[lngEntID]

	,[strInvDocID]

	,[intLineNo]

	,[strPartNumber]

	,[strLocation]

	,[strPartDesc]

	,[decQty]

	,[strUnit]

	,[intType]

	,[decPriceEaExc]

	,[decLineTotExc]

	,[decLineTaxAmt]

	,[decPriceEaInc]

	,[decLineTotInc]

	,[strTaxCode]

	,[imgTaxObj]

	,[strCurrency]

	,[bitIsForeign]

	,[decPriceEaExcF]

	,[decLineTotExcF]

	,[decLineTaxAmtF]

	,[decEaIncTaxF]

	,[decTotIncTaxF]

	,[strInvField1]

	,[strInvField2]

	,[strInvField3]

	,[strInvField4]

	,[strInvField5]

	,[strInvField6]

	,[strLineField1]

	,[strLineField2]

	,[strLineField3]

	,[strLineField4]

	,[strLineField5]

	,[strLineField6]

	,[strLineField7]

	,[strLineField8]

	,[strLineField9]

	,[strLineField10]

	,[strLineField11]

	,[strLineField12]

	,[decLineDiscPerc]

	,[decLineDiscAmt]

	,[decLineDiscAmtF]

	,[bitDiscountTax]

	,[decStockQty]

	,[strStockUnit]

	,[decStandardCost]

	,[decLastPPUnit]

	,[strSalesName]

	,[decCOGS]

	,[decSOQty]

	,[decSOQtyRemain]

	,[strPartExtendedDesc]

	,[decItemWeight]

	,[decVolumetricWeight]

	,[bitContainerItem]

	,[bitDelCost]

	,[decBuyQty]

	,[decBuyQtyRemain]

	,[strBuyUnit]

	,[decEaIncTax]

	,[decTotIncTax]

	,[strOrdSODocID]

	,[decStockQtyRemain]

	,[decBuyoutCost]

	,[decQtyRemaining]

	,[intStatus]

	,[uidTransactionFieldID]

	,[strContBillType]

	,[blnAllowAnnualIncrease]

	,[intContractPriceIncrease]

	,[dtpIncreaseStartDate]

	,[dtpSetUpDate]

	,[dtpActivationDate]

	,[dtpTerminationDate]

	,[dtpExpirationDate]

	,[dtpBillingSchduleStart]

	,[strBillingFrequncy]

	,[dtpLastBillDate]

	,[dtpNextBillDate]

	,[dtpNextInvoiceDate])

	 (SELECT CAST(@lngRevID AS VARCHAR(20))

	,strContDocID

	,intLineNo

	,strPartNumber

	,strLocation

	,strPartDesc

	,decQty

	,strUnit

	,intType

	,0--decPrice

	,0--decLineTot

	,decLineTaxAmt

	,''

	,''

	,strTaxCode

	,NULL

	,strCurrency

	,bitIsForeign

	,''

	,''

	,''

	,''

	,''

	,''

	,''

	,''

	,''

	,''

	,''

	,''

	,''

	,''

	,''

	,''

	,''

	,''

	,''

	,''

	,''

	,''

	,''

	,decLineDiscPerc

	,decLineDiscAmt

	,decLineDiscAmtF

	,bitDiscountTax

	,decStockQty

	,strStockUnit

	,NULL

	,NULL

	,strSalesName

	,NULL

	,NULL

	,NULL

	,NULL

	,''

	,''

	,NULL

	,''

	,NULL

	,NULL

	,NULL

	,NULL

	,NULL

	,NULL

	,NULL

	,NULL

	,NULL

	,CAST(@ReferenceNumber AS VARCHAR(20))

	,uidTransactionFieldID

	,strContBillType

	,blnAllowAnnualIncrease

	,intContractPriceIncrease

	,dtpIncreaseStartDate

	,dtpSetUpDate

	,dtpActivationDate

	,dtpTerminationDate

	,dtpExpirationDate

	,dtpBillingSchduleStart

	,strBillingFrequncy

	,dtpLastBillDate

	,dtpNextBillDate

	,dtpNextInvoiceDate FROM tblContractBillDT WHERE strContDocID = @DocNumber and intlineno = @LineNo

	)

	

END

GO
/****** Object:  StoredProcedure [dbo].[ContractBillTypesInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCustomerCenters] ***********/

/*********** Start [ContractBillTypesInsert] ***********/
CREATE PROCEDURE [dbo].[ContractBillTypesInsert]
	(	
	@ContBillType nvarchar(50)=NULL,
	@ContBillTypeDesc nvarchar(250)=NULL,
	@Inactive bit=NULL,
	@ChargeonFreq int=NULL,
	@ChargeonFreqType int=NULL,
	@ChargeonDay int=NULL,
	@SystemDate datetime=NULL,
	@ActivateFrom datetime=NULL,
	@TerminateOn datetime=NULL,
	@ChargeImmediate bit=NULL,
	@LimitOccourance bit=NULL,
	@LimitOccouranceTimes int=NULL )
AS
 IF ((SELECT COUNT(*) FROM tblContractBillTypes WHERE strContBillType = @ContBillType) = 0)
BEGIN
INSERT INTO [tblContractBillTypes]
        (
            [strContBillType],
            [strContBillTypeDesc],            
            [bitInactive],
			[intChargeonFreq],
			[intChargeonFreqType],
			[intChargeonDay],
			[dteSystemDate],
			[dteActivateFrom],
			[dteTerminateOn],
			[bitChargeImmediate],
			[bitLimitOccourance],
			[intLimitOccouranceTimes]
        )
        VALUES
        (
            @ContBillType,
            @ContBillTypeDesc,            
            @Inactive,
			@ChargeonFreq,
			@ChargeonFreqType,
			@ChargeonDay,
			@SystemDate,
			@ActivateFrom,
			@TerminateOn,
			@ChargeImmediate,
			@LimitOccourance,
			@LimitOccouranceTimes
        )
		--SELECT @ContBillType
		END
		 ELSE
    BEGIN
        UPDATE [tblContractBillTypes] SET 
		   [strContBillType]= ISNULL(@ContBillType, [strContBillType]),
            [strContBillTypeDesc]= ISNULL(@ContBillTypeDesc, [strContBillTypeDesc]),            
            [bitInactive]= ISNULL(@Inactive, [bitInactive]),
			[intChargeonFreq]= ISNULL(@ChargeonFreq, [intChargeonFreq]),
			[intChargeonFreqType]= ISNULL(@ChargeonFreqType, [intChargeonFreqType]),
			[intChargeonDay]= ISNULL(@ChargeonDay, [intChargeonDay]),
			[dteSystemDate]= ISNULL(@SystemDate, [dteSystemDate]),
			[dteActivateFrom]= ISNULL(@ActivateFrom, [dteActivateFrom]),
			[dteTerminateOn]= ISNULL(@TerminateOn, [dteTerminateOn]),
			[bitChargeImmediate]= ISNULL(@ChargeImmediate, [bitChargeImmediate]),
			[bitLimitOccourance]= ISNULL(@LimitOccourance, [bitLimitOccourance]),
			[intLimitOccouranceTimes]= ISNULL(@LimitOccouranceTimes, [intLimitOccouranceTimes])
            
        WHERE
            [strContBillType] = @ContBillType
			--SELECT @ContBillTypeDesc
			--RETURN 1
END
GO
/****** Object:  StoredProcedure [dbo].[ContractDocumentDelete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [ContractBillInvoice_Save] ***********/

/*********** Start [ContractDocumentDelete] ***********/
CREATE PROCEDURE [dbo].[ContractDocumentDelete]
(
	@ContractID NVARCHAR(50)
)
AS
BEGIN
	DELETE FROM tblContractBillDT WHERE strContDocID = @ContractID	
	DELETE FROM tblContractBill WHERE strContDocID = @ContractID	
END
GO
/****** Object:  StoredProcedure [dbo].[CopyTradeDiscountMatrix]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [SelectJournalDateForCustCategories] ***********/

CREATE PROCEDURE [dbo].[CopyTradeDiscountMatrix] 
	@strMatrixType NVARCHAR(max) = ''
AS
BEGIN
	DECLARE @intCount INT;

	SET @intCount = (
			SELECT COUNT(strMatrixType)
			FROM tblTradeDiscMatrix
			WHERE strMatrixType LIKE '<<COPY%'
			);

	DECLARE @strMatrixTypeCopy NVARCHAR(30);

	IF @intCount = 0
	BEGIN
		SET @strMatrixTypeCopy = '<<COPY>>'
	END
	ELSE
	BEGIN
		SET @intCount = @intCount + 1
		SET @strMatrixTypeCopy = '<<COPY' + CAST((@intCount) AS VARCHAR) + '>>'
	END

	INSERT INTO tblTradeDiscMatrix
	VALUES (
		@strMatrixTypeCopy
		,''
		,0
		,0
		,GETDATE()
		)

	DECLARE @tblTradeDiscMatrixTypes AS TABLE (
		uidMatrixID UNIQUEIDENTIFIER
		,uidMatrixID_Old UNIQUEIDENTIFIER
		,strMatrixType NVARCHAR(20)
		,strMatrixType_Old NVARCHAR(20)
		,dteStartDate SMALLDATETIME
		,dteFinishDate SMALLDATETIME
		,bitInactive BIT
		)

	INSERT INTO @tblTradeDiscMatrixTypes (
		uidMatrixID
		,uidMatrixID_Old
		,strMatrixType
		,strMatrixType_Old
		,dteStartDate
		,dteFinishDate
		,bitInactive
		)
	SELECT NEWID()
		,uidMatrixID
		,@strMatrixTypeCopy
		,strMatrixType
		,dteStartDate
		,dteFinishDate
		,bitInactive
	FROM tblTradeDiscMatrixTypes
	WHERE strMatrixType = @strMatrixType

	INSERT INTO tblTradeDiscMatrixTypes (
		uidMatrixID
		,strMatrixType
		,dteStartDate
		,dteFinishDate
		,bitInactive
		)
	SELECT uidMatrixID
		,strMatrixType
		,dteStartDate
		,dteFinishDate
		,bitInactive
	FROM @tblTradeDiscMatrixTypes

	--select * from @tblTradeDiscMatrixTypes
	INSERT INTO tblTradeDiscMatrixTypesDT (
		uidMatrixID
		,intType
		,intLineNo
		,decValueFrom
		,decValueTo
		,decDiscPerc
		,strPartNumber
		,dteRowUpdated
		)
	SELECT (
			SELECT TOP 1 uidMatrixID
			FROM @tblTradeDiscMatrixTypes
			WHERE strMatrixType_Old = @strMatrixType
				AND strMatrixType_old = @strMatrixType
				AND uidMatrixID_Old = tblTradeDiscMatrixTypesDT.uidMatrixID
			)
		,intType
		,intLineNo
		,decValueFrom
		,decValueTo
		,decDiscPerc
		,strPartNumber
		,GETDATE()
	FROM tblTradeDiscMatrixTypesDT
	WHERE uidMatrixID IN (
			SELECT uidMatrixID
			FROM tblTradeDiscMatrixTypes
			WHERE strMatrixType = @strMatrixType
			)

	--SELECT (SELECT TOP 1
	--         uidMatrixID
	--       FROM tblTradeDiscMatrixTypes
	--       WHERE strMatrixType = @strMatrixTypeCopy
	--       AND dteStartDate = (SELECT TOP 1
	--         dteStartDate
	--       FROM tblTradeDiscMatrixTypes
	--       WHERE strMatrixType = @strMatrixType
	--       AND uidMatrixID = tblTradeDiscMatrixTypesDT.uidMatrixID)
	--       AND dteFinishDate = (SELECT TOP 1
	--         dteFinishDate
	--       FROM tblTradeDiscMatrixTypes
	--       WHERE strMatrixType = @strMatrixType
	--       AND uidMatrixID = tblTradeDiscMatrixTypesDT.uidMatrixID)),
	--       intType,
	--       intLineNo,
	--       decValueFrom,
	--       decValueTo,
	--       decDiscPerc,
	--       strPartNumber
	--FROM tblTradeDiscMatrixTypesDT
	--WHERE uidMatrixID IN (SELECT
	--  uidMatrixID
	--FROM tblTradeDiscMatrixTypes
	--WHERE strMatrixType = @strMatrixType)
	SELECT strMatrixType AS MatrixType
		,strDesc AS [Description]
		,bitInactive AS Inactive
		,bitApplyDisc AS ApplyDisc
	FROM tblTradeDiscMatrix
	WHERE strMatrixType = @strMatrixTypeCopy
END
GO
/****** Object:  StoredProcedure [dbo].[CountriesUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------
CREATE PROCEDURE [dbo].[CountriesUpdate]
(	
	@CountryCode nvarchar(10),
	@CountryName nvarchar(100),
	@TelCode nvarchar(10),
	@DisplayName nvarchar(100)
)
AS
UPDATE tc 
SET tc.strDisplayName = @DisplayName
FROM 
tblCountries tc 
where tc.strCountryCode = @CountryCode
GO
/****** Object:  StoredProcedure [dbo].[CreditNoteReasonInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[CreditNoteReasonInsert]

@strCNReasonCode NVARCHAR(20),
@strCNReasonDesc NVARCHAR(100),
@bitInactive BIT

AS
BEGIN	
	Insert into tblCreditNoteReasons(strCNReasonCode, strCNReasonDEsc, bitInactive, dteRowUpdated) VALUES (@strCNReasonCode, @strCNReasonDesc, @bitInactive, GETDATE())
END
GO
/****** Object:  StoredProcedure [dbo].[CreditNoteReasonUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[CreditNoteReasonUpdate]
	@strCNReasonCode nvarchar(20),
	@strCNReasonDesc nvarchar(100),
	@bitInactive bit,
	@lngID bigint
AS
BEGIN
	
UPDATE [tblCreditNoteReasons]
   SET [strCNReasonCode] = @strCNReasonCode
      ,[strCNReasonDesc] = @strCNReasonDesc
      ,[bitInactive] = @bitInactive
 WHERE lngID = @lngID
END
GO
/****** Object:  StoredProcedure [dbo].[CRMLoadActivity]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/******************* End  [AddCustomerTradingTimes]  ********************/

/********* Start [CRMLoadActivity] (CRM)**********/
CREATE PROCEDURE [dbo].[CRMLoadActivity] (
	@IsCheckedSearch BIT
	,@SearchText NVARCHAR(max)
	,@IsInactive BIT
	)
AS
BEGIN
	IF (@IsCheckedSearch = 1)
	BEGIN
		IF (@SearchText <> '')
		BEGIN
			IF (@IsInactive = 1)
			BEGIN
				SELECT ActivityName AS [ActivityName]
					,ActivityDescription AS [Description]
					,ActivityGroupName AS [ActivityGroupName]
				FROM tblCRMPreActivityList
				WHERE (
						ActivityName LIKE @SearchText
						OR ActivityDescription LIKE @SearchText
						)
				ORDER BY ActivityName
			END
			ELSE
			BEGIN
				SELECT ActivityName AS [ActivityName]
					,ActivityDescription AS [Description]
					,ActivityGroupName AS [ActivityGroupName]
				FROM tblCRMPreActivityList
				WHERE IsInactive = 0
					AND (
						ActivityName LIKE @SearchText
						OR ActivityDescription LIKE @SearchText
						)
				ORDER BY ActivityName
			END
		END
	END
	ELSE
	BEGIN
		IF (@IsInactive = 1)
		BEGIN
			SELECT ActivityName AS [ActivityName]
				,ActivityDescription AS [Description]
				,ActivityGroupName AS [ActivityGroupName]
			FROM tblCRMPreActivityList
			ORDER BY ActivityName
		END
		ELSE
		BEGIN
			SELECT ActivityName AS [ActivityName]
				,ActivityDescription AS [Description]
				,ActivityGroupName AS [ActivityGroupName]
			FROM tblCRMPreActivityList
			WHERE IsInactive = 0
			ORDER BY ActivityName
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[CRMLoadActivityActionStatus]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/********* Start [CRMLoadActivityActionStatus] (CRM)**********/

CREATE PROCEDURE [dbo].[CRMLoadActivityActionStatus]
AS
BEGIN
	SELECT StatusType AS [StatusType]
		,StatusDescription AS [StatusDescription]
		,StatusGroup as [StatusGroup]
	FROM tblCRMActivityActionsStatus
	ORDER BY StatusType
END
GO
/****** Object:  StoredProcedure [dbo].[CRMLoadActivityGroup]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [CRMLoadActivity] (CRM)**********/

/********* Start [CRMLoadActivityGroup] (CRM)**********/
CREATE PROCEDURE [dbo].[CRMLoadActivityGroup] (
	 @IsCheckedSearch BIT
	,@SearchText NVARCHAR(max)
	,@IsInactive BIT
	)
AS
BEGIN
	IF (@IsCheckedSearch = 1)
	BEGIN
		IF (@SearchText <> '')
		BEGIN
			IF (@IsInactive = 1)
			BEGIN
				SELECT ActivityGroupName AS [ActivityGroupName]
					,ActivityGroupDescription AS [Description]
				FROM tblCRMActivityGroup
				WHERE (
						ActivityGroupName LIKE @SearchText
						OR ActivityGroupDescription LIKE @SearchText
						)
				ORDER BY ActivityGroupName
			END
			ELSE
			BEGIN
				SELECT ActivityGroupName AS [ActivityGroupName]
					,ActivityGroupDescription AS [Description]
				FROM tblCRMActivityGroup
				WHERE IsInactive = 0
					AND (
						ActivityGroupName LIKE @SearchText
						OR ActivityGroupDescription LIKE @SearchText
						)
				ORDER BY ActivityGroupName
			END
		END
	END
	ELSE
	BEGIN
		IF (@IsInactive = 1)
		BEGIN
			SELECT ActivityGroupName AS [ActivityGroupName]
					,ActivityGroupDescription AS [Description]
				FROM tblCRMActivityGroup
			ORDER BY ActivityGroupName
		END
		ELSE
		BEGIN
			SELECT ActivityGroupName AS [ActivityGroupName]
					,ActivityGroupDescription AS [Description]
				FROM tblCRMActivityGroup
			WHERE IsInactive = 0
			ORDER BY ActivityGroupName
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[CRMLoadActivityStatus]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [CRMLoadInventoryEntity] (CRM)**********/

/********* Start [CRMLoadActivityStatus] (CRM)**********/

CREATE PROCEDURE [dbo].[CRMLoadActivityStatus]
AS
BEGIN
	SELECT StatusType AS [StatusType]
		,StatusDescription AS [StatusDescription]
		,StatusGroup as [StatusGroup]
	FROM tblCRMActivityStatus
	ORDER BY StatusType
END
GO
/****** Object:  StoredProcedure [dbo].[CRMLoadAgent]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [CRMLoadActivityGroup] (CRM)**********/

/********* Start [CRMLoadAgent] (CRM)**********/

CREATE PROCEDURE [dbo].[CRMLoadAgent] (
	 @IsCheckedSearch BIT
	,@SearchText NVARCHAR(max)
	,@IsInactive BIT
	)
AS
BEGIN
	IF (@IsCheckedSearch = 1)
	BEGIN
		IF (@SearchText <> '')
		BEGIN
			IF (@IsInactive = 1)
			BEGIN
				SELECT strUserName AS [UserName]
					,strName AS [Name]
				FROM tblUsers
				WHERE (
						strUserName LIKE @SearchText
						OR strName LIKE @SearchText
						)
				ORDER BY strUserName
			END
			ELSE
			BEGIN
				SELECT strUserName AS [UserName]
					,strName AS [Name]
				FROM tblUsers
				WHERE
					  (
						strUserName LIKE @SearchText
						OR strName LIKE @SearchText
						)
				ORDER BY strUserName
			END
		END
	END
	ELSE
	BEGIN
		IF (@IsInactive = 1)
		BEGIN
			SELECT strUserName AS [UserName]
					,strName AS [Name]
				FROM tblUsers
			ORDER BY strUserName
		END
		ELSE
		BEGIN
		SELECT strUserName AS [UserName]
					,strName AS [Name]
				FROM tblUsers
			ORDER BY strUserName
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[CRMLoadCustomer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [CRMLoadVendor] (CRM)**********/

/********* Start [CRMLoadCustomer] (CRM)**********/

CREATE PROCEDURE [dbo].[CRMLoadCustomer]
AS
BEGIN
	SELECT strCustName AS [CustomerName]
		,strCustDesc AS [Description]
	FROM tblCustomers
	ORDER BY strCustName
END
GO
/****** Object:  StoredProcedure [dbo].[CRMLoadInventoryEntity]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [CRMLoadProject] (CRM)**********/

/********* Start [CRMLoadInventoryEntity] (CRM)**********/

CREATE PROCEDURE [dbo].[CRMLoadInventoryEntity]
AS
BEGIN
	SELECT strPartNumber AS [PartNumber]
		,strDesc AS [Description]
	FROM tblInv
	ORDER BY strPartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[CRMLoadProject]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [CRMLoadCustomer] (CRM)**********/

/********* Start [CRMLoadProject] (CRM)**********/

CREATE PROCEDURE [dbo].[CRMLoadProject]
AS
BEGIN
	SELECT strProjNumber AS [ProjectNumber]
		,strProjName AS [ProjectName]
	FROM tblProjects
	ORDER BY strProjNumber
END
GO
/****** Object:  StoredProcedure [dbo].[CRMLoadVendor]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [CRMLoadAgent] (CRM)**********/

/********* Start [CRMLoadVendor] (CRM)**********/

CREATE PROCEDURE [dbo].[CRMLoadVendor]
AS
BEGIN
	SELECT strVendName AS [VendorName]
		,strVendDesc AS [Description]
	FROM tblVendors
	ORDER BY strVendName
END
GO
/****** Object:  StoredProcedure [dbo].[CROrderDeliveryCostData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*************End [dbo].[SPCreditRequest] *************/

/*************Start [dbo].[CROrderDeliveryCostData] *************/

CREATE PROCEDURE [dbo].[CROrderDeliveryCostData] 
	 @SQDocNumber AS VARCHAR(250) = NULL
	,@IsCustStockCodes BIT -- = 1 -- Remove this later default value
AS
BEGIN
	IF (@IsCustStockCodes = 1)
	BEGIN		
		SELECT tblOrderDocDT.*
	,tblOrderDocDTPrj.strProjNumber
	,tblProjects.strProjName
	,ISNULL(tblInv.decSumAvail, 0) AS decSumAvail
	,ISNULL(tblInv.strBinLoc, '') AS strBinLoc
	,tblInv.strBarCode
	,tblInv.strBarCode2
	,(
		SELECT bitInvImgOnCR
		FROM tblCoOpts
		) AS bitShowImage
	,tblInvImg.imgData AS imgImage
	,tblOrderDocDT.strPartExtendedDesc AS strExtendedDesc
	,tblInv.bitInvExtDescOnCR AS bitShowExtendedDesc
	,ISNULL(tblInvCustomer.strItemCode, '') AS strItemCode
	,ISNULL(tblInvCustomer.strItemDesc, '') AS strItemDesc
	FROM fnBaseTblOrderDocDT() tblOrderDocDT
	INNER JOIN tblOrderDoc ON tblOrderDocDT.strOrdDocID = tblOrderDoc.strOrdDocID
	LEFT JOIN fnTblInvForLocJoin() tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
		AND tblOrderDocDT.strLocation = tblInv.strLocName
	LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
		AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
	LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
	LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
		AND tblInvImg.bitDefaultImage = 1
	LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
		AND tblOrderDoc.strCustName = tblInvCustomer.strCustName
	WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
		AND tblOrderDocDT.bitDiscountTax = 0
		AND tblOrderDocDT.bitDelCost = 1
	ORDER BY tblOrderDocDT.intLineNo
	END
	ELSE
	BEGIN
		SELECT tblOrderDocDT.*
	,tblOrderDocDTPrj.strProjNumber
	,tblProjects.strProjName
	,ISNULL(tblInv.decSumAvail, 0) AS decSumAvail
	,ISNULL(tblInv.strBinLoc, '') AS strBinLoc
	,tblInv.strBarCode
	,tblInv.strBarCode2
	,(
		SELECT bitInvImgOnCR
		FROM tblCoOpts
		) AS bitShowImage
	,tblInvImg.imgData AS imgImage
	,tblOrderDocDT.strPartExtendedDesc AS strExtendedDesc
	,tblInv.bitInvExtDescOnCR AS bitShowExtendedDesc
	,'' AS strItemCode
	,'' AS strItemDesc
	FROM fnBaseTblOrderDocDT() tblOrderDocDT
	LEFT JOIN fnTblInvForLocJoin() tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
		AND tblOrderDocDT.strLocation = tblInv.strLocName
	LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
		AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
	LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
	LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
		AND tblInvImg.bitDefaultImage = 1
	WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
		AND tblOrderDocDT.bitDiscountTax = 0
		AND tblOrderDocDT.bitDelCost = 1
	ORDER BY tblOrderDocDT.intLineNo
		END
	END
GO
/****** Object:  StoredProcedure [dbo].[CustomerContactsGet]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetTrendsData] ***********/

/*********** Start [CustomerContactsGet] ***********/
CREATE PROCEDURE [dbo].[CustomerContactsGet]
AS
BEGIN
	SELECT [strName] AS Name,[strCustName] AS CustomerName, ISNULL([strJobTitle],'') AS JobTitleName, [strEmail] AS Email, [strTel] AS Telephone, [strFax] AS Fax, [strCell] AS CellPhone, [strStreet1] AS Street1, [strStreet2] AS Street2, [strCity] AS City, [strProvince] AS Province, [strPostal] AS Postal, [strNotes] AS Notes, [strFacebook] AS Facebook, [strLinkedIn] AS LinkedIn, [strSkype] AS Skype
	FROM [tblCustomerContacts] LEFT OUTER JOIN [tblJobTitles] ON [tblCustomerContacts].[intJobTitle] = [tblJobTitles].[lngID] 
	ORDER BY [strCustName], [strName]
END
GO
/****** Object:  StoredProcedure [dbo].[CustomerDataInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

--------------------------------------------------------------------
CREATE PROCEDURE [dbo].[CustomerDataInsert]  
 (  
    @DocNumber AS NVARCHAR(50),  
 @CustID AS NVARCHAR(50),  
 @SystemDate AS SMALLDATETIME,  
 @JournalDate AS SMALLDATETIME,  
 @UserName AS NVARCHAR(20),  
 @InvDocID AS NVARCHAR(50),  
 @InvDepNumber AS NVARCHAR(50),  
 @TransType AS TINYINT,  
 @InvAmount AS MONEY,  
 @InvAmountF AS MONEY,  
 @Currency AS NVARCHAR(3),  
 @IsForeign AS BIT,  
 @Exchange AS DECIMAL(20,6),  
 @IsDocReRated AS BIT,  
 @ReRated AS DATETIME,  
 @ReRateCumltveValue AS MONEY,  
 @IsSettled AS BIT,  
 @DiscAvail AS MONEY,  
 @DiscAvailF AS MONEY,  
 @DiscExpires AS DATETIME,  
 @DueDate AS DATETIME,  
 @JEDocID AS  NVARCHAR(50),  
 @CustPayID AS BIGINT,  
 @Amount AS MONEY,  
 @AmtOwingAtTime AS MONEY,  
 @AmountF AS MONEY,  
 @AmtOwingAtTimeF AS MONEY,   
 @IsReversed AS BIT,  
 @PayAmount AS DECIMAL  
 )  
AS  
BEGIN  
 DECLARE @CustTrans AS BIGINT = (SELECT ISNULL(lngCustTrID, 0) AS strOrdDocID FROM tblCustTrans WHERE strOrdDocID = @DocNumber)  
 IF((@CustTrans=0 OR @CustTrans is NULL) AND @PayAmount<>0)  
   BEGIN  
   SET @CustTrans = (SELECT ISNULL(MAX(lngCustTrID),0) + 1 FROM tblCustTrans)  
   INSERT INTO tblCustTrans  
   (  
      [lngCustTrID]  
           ,[strCustName]  
           ,[dteSystemDate]  
           ,[dteJournalDate]  
           ,[strUserName]  
           ,[strInvDocID]  
           ,[strInvDepNumber]  
           ,[strSoNumber]  
           ,[intTransType]  
           ,[decInvAmount]  
           ,[decInvAmountF]  
           ,[strCurrency]  
           ,[bitIsForeign]  
           ,[decExchange]  
           ,[bitDocReRated]  
           ,[dteReRated]  
           ,[decReRateCumltveValue]  
           ,[bitSettled]  
           ,[decDiscAvail]  
           ,[decDiscAvailF]  
           ,[dteDiscExpires]  
           ,[dteDueDate]  
           ,[strJEDocID]  
           ,[strOrdDocID])       
     VALUES (  
    @CustTrans  
   ,@CustID  
   ,@SystemDate  
   ,@JournalDate  
   ,@UserName  
   ,@InvDocID     
   ,@InvDepNumber  
   ,@DocNumber  
   ,@TransType  
   ,@InvAmount  
   ,@InvAmountF  
   ,@Currency  
   ,@IsForeign  
   ,@Exchange  
   ,@IsDocReRated  
   ,@ReRated  
   ,@ReRateCumltveValue  
   ,@IsSettled  
   ,@DiscAvail  
   ,@DiscAvailF  
   ,@DiscExpires  
   ,@DueDate  
   ,@JEDocID  
   ,@DocNumber  
   )  
  
   INSERT INTO tblCustTransDT (  
   dteJournalDate  
   ,lngCustTrID  
   ,lngCustPayID  
   ,decAmount  
   ,intTransType  
   ,decAmtOwingAtTime  
   ,bitReversed  
   ,dteIntDate  
   ,decAmountF  
   ,decAmtOwingAtTimeF  
   ,bitIsForeign  
   )  
   VALUES (  
    @JournalDate  
   ,@CustTrans  
   ,@CustPayID  
   ,@Amount  
   ,@TransType  
   ,@AmtOwingAtTime  
   ,@IsReversed  
   ,NULL  
   ,@AmountF  
   ,@AmtOwingAtTimeF  
   ,@IsForeign)  
  
  END  
  select @CustTrans  
END  
GO
/****** Object:  StoredProcedure [dbo].[CustomerFromDocumentNoSearch]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [UpdateCustTranTableForApplyToCreditNote] ***********/
/*********** Start [CustomerFromDocumentNoSearch] ***********/
CREATE PROCEDURE [dbo].[CustomerFromDocumentNoSearch]
    (
      @strDocNumber NVARCHAR(MAX) = NULL
	)
AS
    BEGIN
        SELECT  strCustName AS CustomerName,
                strDocumentNo AS DocumentNo,
                strCustDesc AS Description,
                strCity AS City,
                strPhone AS Phone,
                strField1 AS Field1,
                strField2 AS Field2,
                strField3 AS Field3,
                strField4 AS Field4,
                strField5 AS Field5,
                strField6 AS Field6
        FROM    ( SELECT    tblInvoiceDoc.strCustName ,
                            strInvDocID AS strDocumentNo ,
                            tblCustomers.strCustDesc ,
                            tblCustomers.strCity ,
                            tblCustomers.strPhone ,
                            tblCustomers.strField1 ,
                            tblCustomers.strField2 ,
                            tblCustomers.strField3 ,
                            tblCustomers.strField4 ,
                            tblCustomers.strField5 ,
                            tblCustomers.strField6
                  FROM      tblInvoiceDoc
                            INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
                  WHERE     strInvDocID LIKE 'IN-' + '%'
                            AND strInvDocID LIKE '%' + @strDocNumber + '%'
                  UNION
                  SELECT    tblOrderDoc.strCustName ,
                            strOrdDocID AS strDocumentNo ,
                            tblCustomers.strCustDesc ,
                            tblCustomers.strCity ,
                            tblCustomers.strPhone ,
                            tblCustomers.strField1 ,
                            tblCustomers.strField2 ,
                            tblCustomers.strField3 ,
                            tblCustomers.strField4 ,
                            tblCustomers.strField5 ,
                            tblCustomers.strField6
                  FROM      tblOrderDoc
                            INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
                  WHERE     intDocType = 1
                            AND strOrdDocID LIKE 'SO-' + '%'
                            AND strOrdDocID LIKE '%' + @strDocNumber + '%'
                  UNION
                  SELECT    tblOrderDoc.strCustName ,
                            strOrdDocID AS strDocumentNo ,
                            tblCustomers.strCustDesc ,
                            tblCustomers.strCity ,
                            tblCustomers.strPhone ,
                            tblCustomers.strField1 ,
                            tblCustomers.strField2 ,
                            tblCustomers.strField3 ,
                            tblCustomers.strField4 ,
                            tblCustomers.strField5 ,
                            tblCustomers.strField6
                  FROM      tblOrderDoc
                            INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
                  WHERE     intDocType = 2
                            AND strOrdDocID LIKE 'QU-' + '%'
                            AND strOrdDocID LIKE '%' + @strDocNumber + '%'
                  UNION
                  SELECT    tblOrderDoc.strCustName ,
                            strOrdDocID AS strDocumentNo ,
                            tblCustomers.strCustDesc ,
                            tblCustomers.strCity ,
                            tblCustomers.strPhone ,
                            tblCustomers.strField1 ,
                            tblCustomers.strField2 ,
                            tblCustomers.strField3 ,
                            tblCustomers.strField4 ,
                            tblCustomers.strField5 ,
                            tblCustomers.strField6
                  FROM      tblOrderDoc
                            INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
                  WHERE     intDocType = 1
                            AND strOrdDocID LIKE 'CR-' + '%'
                            AND strOrdDocID LIKE '%' + @strDocNumber + '%'
                  UNION
                  SELECT    tblInvoiceDoc.strCustName ,
                            strInvDocID AS strDocumentNo ,
                            tblCustomers.strCustDesc ,
                            tblCustomers.strCity ,
                            tblCustomers.strPhone ,
                            tblCustomers.strField1 ,
                            tblCustomers.strField2 ,
                            tblCustomers.strField3 ,
                            tblCustomers.strField4 ,
                            tblCustomers.strField5 ,
                            tblCustomers.strField6
                  FROM      tblInvoiceDoc
                            INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
                  WHERE     strInvDocID LIKE 'CN-' + '%'
                            AND strInvDocID LIKE '%' + @strDocNumber + '%'
                ) AS Main
        ORDER BY strCustName;
    END;
GO
/****** Object:  StoredProcedure [dbo].[CustomerItemsGet]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [InvLotExtStockPickUpdateOld] **********/

/********* Start [CustomerItemsGet] (Control panel) **********/

CREATE PROCEDURE [dbo].[CustomerItemsGet] (@CustomerName AS NVARCHAR(50))
AS
BEGIN
	IF ((@CustomerName IS NOT NULL) AND (LEN(@CustomerName) > 0))
	BEGIN
		SELECT lngID As 'ID'
			,strPartNumber As 'PartNumber'
			,strCustName As 'CustomerName'
			,strItemCode As 'ItemCode'
			,strItemDesc As 'ItemDesc'
		FROM tblInvCustomer
		WHERE strCustName = @CustomerName
		ORDER BY strPartNumber
			,strCustName
	END
	ELSE
	BEGIN
		SELECT lngID As 'ID'
			,strPartNumber As 'PartNumber'
			,strCustName As 'CustomerName'
			,strItemCode As 'ItemCode'
			,strItemDesc As 'ItemDesc'
		FROM tblInvCustomer
		ORDER BY strPartNumber
			,strCustName
	END
END
GO
/****** Object:  StoredProcedure [dbo].[CustomersGet]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[CustomersGet]    
AS  
BEGIN    
 SELECT tblCustomers.strCustName AS CustomerNumber    
,strCustDesc AS CustomerName
		,strContact AS Contact
		,strStreet1 AS Street1
		,strStreet2 AS Street2
		,strCity AS City
		,strProvince AS Province
		,strPostal AS Postal
		,strCountry AS Country
		,ISNULL(strCountryCode, '') AS CountryCode
		,strPhone AS Phone
		,strCellPhone AS CellPhone
		,strFax AS Fax
		,strEmail AS Email
		,strEmailInv AS EmailInv
		,strEmailStat AS EmailStat
		,strVAT AS VAT
		,strCK AS CK
		,strField1 AS Field1
		,strField2 AS Field2
		,strField3 AS Field3
		,strField4 AS Field4
		,strField5 AS Field5
		,strField6 AS Field6
		,strField7 AS Field7
		,strField8 AS Field8
		,strField9 AS Field9
		,strField10 AS Field10
		,strField11 AS Field11
		,strField12 AS Field12
		,strField13 AS Field13
		,strField14 AS Field14
		,strField15 AS Field15
		,strField16 AS Field16
		,strField17 AS Field17
		,strField18 AS Field18
		,strNotes AS Notes
		,strTerm AS Term
		,bitCreditCtrl AS IsCreditCtrl
		,decCreditLimit AS CreditLimit
		,bitCreditHold AS IsCreditHold
		,strPricelist AS Pricelist
		,decIntRate AS IntRate
		,intDept AS Department
		,strCurrency AS Currency
		,ISNULL(strCustCategory, '') AS Category
		,strTenderType AS TenderType
		,decTradeDiscPerc AS TradeDiscPerc
		,decCreditLimitOverride AS CreditLimitOverride
		,dteCreditLimitExpiryDate AS CreditLimitExpiryDate
		,intPartialBackorders AS PartialBackorders
		,ISNULL(strINVFormDocName, '') AS INVFormDocName
		,ISNULL(strORDFormDocName, '') AS ORDFormDocName
		,bitMatrixType AS IsMatrixType
		,strMatrixType AS MatrixType
		,tblCustomers.bitInactive AS IsInactive
		,ISNULL(strValueBased, '') AS ContractPricing
		,ISNULL(strSalesName, '') AS SalesName
		,ISNULL((
				strLvl1 + (
					CASE 
						WHEN strLvl2 IS NOT NULL
							THEN '\' + strLvl2
						ELSE ''
						END
					) + (
					CASE 
						WHEN strLvl3 IS NOT NULL
							THEN '\' + strLvl3
						ELSE ''
						END
					) + (
					CASE 
						WHEN strLvl4 IS NOT NULL
							THEN '\' + strLvl4
						ELSE ''
						END
					) + (
					CASE 
						WHEN strLvl5 IS NOT NULL
							THEN '\' + strLvl5
						ELSE ''
						END
					)
				), '') AS Center
		,bitInvWorkflowNew AS IsInvWorkflowNew
		,bitInvWorkflowDA AS IsInvWorkflowDA
		,bitInvWorkflowSO AS IsInvWorkflowSO
		,strWebsite AS Website
		,strRSTTerminalSync AS RSTTerminalSync
		,strTaxCode AS TaxCode
		,strEmailOso AS EmailOso
		,intNAPrintMethod AS NAPrintMethod
		,tblCustomers.strDelMethodCode AS DelMethodCode
		,(
			CASE 
				WHEN tblCustomers.intGLNumberAR IS NULL
					THEN (
							SELECT intGLNumber
							FROM tblAccounts
							WHERE bitLinkAR = 1
							)
				ELSE tblCustomers.intGLNumberAR
				END
			) AS ARAccount
		,(
			CASE 
				WHEN tblCustomers.intGLNumberDeposit IS NULL
					THEN (
							SELECT intGLNumber
							FROM tblAccounts
							WHERE bitLinkDeposit = 1
							)
				ELSE tblCustomers.intGLNumberDeposit
				END
			) AS DepositAccount
		,strContact2 AS Contact2
		,intDelMethod AS DistributionMethod
		,strCustomerType AS CustomerType
		,strSuburb AS Suburb
		,strFacebook AS FaceBook
		,strLinkedIn AS LinkedIn
		,strParentCust AS ParentCust
		,strDocPassword AS DocPassword
		,streComPassword AS eComPassword
		,blnIsSynctwebstore AS IsSynctwebstore
		,strWebstoreEmail AS WebstoreEmail
		,ISNULL(strCustTPIN, '') AS CustTPIN
		,strTransactionType AS TransactionType
		,strKenyaCustPin AS KenyaCustPin
 FROM tblCustomers     
 LEFT JOIN tblCustomerSales ON tblCustomerSales.strCustName = tblCustomers.strCustName     
 LEFT JOIN tblCustomerCenter ON tblCustomerCenter.strCustName = tblCustomers.strCustName     
 LEFT JOIN tblCenters ON tblCenters.uidCenterID = tblCustomerCenter.uidCenterID     
 ORDER BY tblCustomers.strCustName    
END
GO
/****** Object:  StoredProcedure [dbo].[CustomersSave]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[CustomersSave] (
	@strCustName NVARCHAR(50) = ''
	,@strStreet1 NVARCHAR(100) = ''
	,@strStreet2 NVARCHAR(100) = ''
	,@strCity NVARCHAR(50) = ''
	,@strProvince NVARCHAR(50) = ''
	,@strPostal NVARCHAR(20) = ''
	,@strPhone NVARCHAR(50) = ''
	,@strCellPhone NVARCHAR(50) = ''
	,@strFax NVARCHAR(50) = ''
	,@strEmail NVARCHAR(250) = ''
	,@strVAT NVARCHAR(50) = ''
	,@strCK NVARCHAR(50) = ''
	,@decBalDue MONEY = 0
	,@decYTDPurch MONEY = 0
	,@decOpenOrders MONEY = 0
	,@intDelMethod INT = 0
	,@bitCreditCtrl BIT = 0
	,@decCreditLimit MONEY = 0
	,@bitCreditHold BIT = 0
	,@bitInactive BIT = 0
	,@strContact NVARCHAR(100) = ''
	,@strField1 NVARCHAR(100) = ''
	,@strField2 NVARCHAR(100) = ''
	,@strField3 NVARCHAR(100) = ''
	,@strField4 NVARCHAR(100) = ''
	,@strField5 NVARCHAR(100) = ''
	,@strField6 NVARCHAR(100) = ''
	,@strTaxCode NVARCHAR(2) = NULL
	,@dteSince DATETIME = NULL
	,@strNotes NVARCHAR(MAX) = ''
	,@strPricelist NVARCHAR(20) = ''
	--@uID UNIQUEIDENTIFIER ,						  
	,@decIntRate MONEY = 0
	,@strCustDesc VARCHAR(200) = ''
	,@strCountry NVARCHAR(50) = ''
	,@strTerm NVARCHAR(50) = ''
	,@intDept INT = NULL
	,@strCurrency NVARCHAR(3) = ''
	,@decBalDueF MONEY = 0
	,@decYTDPurchF MONEY = 0
	,@decOpenOrdersF MONEY = 0
	,@strField7 NVARCHAR(100) = ''
	,@strField8 NVARCHAR(100) = ''
	,@strField9 NVARCHAR(100) = ''
	,@strField10 NVARCHAR(100) = ''
	,@strField11 NVARCHAR(100) = ''
	,@strField12 NVARCHAR(100) = ''
	,@strEmailInv NVARCHAR(250) = ''
	,@strEmailStat NVARCHAR(250) = ''
	,@strCustCategory NVARCHAR(20) = NULL
	,@strCountryCode NVARCHAR(10) = NULL
	,@strTenderType NVARCHAR(20) = ''
	,@decTradeDiscPerc MONEY = 0
	,@decCreditLimitOverride DECIMAL(18, 2) = 0
	,@dteCreditLimitExpiryDate DATETIME = NULL
	,@intPartialBackorders INT = 0
	,@bitWithholdTax BIT = 0
	,@strWithholdTaxCode NVARCHAR(2) = NULL
	,@strINVFormDocName NVARCHAR(50) = NULL
	,@strORDFormDocName NVARCHAR(50) = NULL
	,@bitMatrixType BIT = 0
	,@strMatrixType NVARCHAR(20) = ''
	,@strParentCust NVARCHAR(50) = ''
	,@strValueBased NVARCHAR(20) = NULL
	,@bitInvWorkflowNew BIT = 0
	,@bitInvWorkflowDA BIT = 0
	,@bitInvWorkflowSO BIT = 0
	,@strWebsite NVARCHAR(200) = ''
	,@strRSTTerminalSync NVARCHAR(MAX) = ''
	,@strContact2 NVARCHAR(50) = NULL
	,@strSuburb NVARCHAR(50) = NULL
	,@strEmailOso NVARCHAR(250) = ''
	,@intNAPrintMethod INT = 0
	,@strDelMethodCode NVARCHAR(50) = NULL
	,@strCustType NVARCHAR(50) = NULL
	,@strMultipleCustName NVARCHAR(MAX) = ''
	,@strOldCust NVARCHAR(50)
	,@PL_HistoryOn BIT = 0
	,@PL_HomeCurrencyCode NVARCHAR(3) = ''
	,@CurrentYrStarts SMALLDATETIME
	,@strSalesName NVARCHAR(100)
	,@uidCenterID UNIQUEIDENTIFIER = NULL
	,@strOldName NVARCHAR(50) = ''
	,@strProfitCenters NVARCHAR(MAX) = ''
	,@bitExclCommission BIT = 0
	,@tblCustomerEx CommonTableType READONLY
	,@tblCustomerExWT CommonTableType READONLY
	,@tblCustomerLoc CommonTableType READONLY
	,@tblCustomersT CommonTableType READONLY
	,@tblCustomerF CommonTableType READONLY
	,@tblInvoiceDoc InvoiceDocType READONLY
	,@tblCustTrans CustomerTransactionTableType READONLY
	,@tblCustTransDT CustomerTransactionDTTableType READONLY
	,@tblInvCustomer CommonTableType READONLY
	,@strField13 BIT = 0
	,@strField14 BIT = 0
	,@strField15 BIT = 0
	,@strField16 BIT = 0
	,@strField17 BIT = 0
	,@strField18 BIT = 0
	,@strFaceBook NVARCHAR(100) = ''
	,@strLinkedIn NVARCHAR(100) = ''
	,@strGLNumberAR NVARCHAR(100) = ''
	,@strGLNumberDeposit NVARCHAR(100) = ''
	,@imgPicture IMAGE = NULL
	,@blnIsSynctwebstore BIT
	,@strWebstoreEmail NVARCHAR(250)
	,@strDocPassword NVARCHAR(max)
	,@TPIN NVARCHAR(10) = ''
	,@TransactionType NVARCHAR(10)
	,@KenyaCustPin NVARCHAR(10) = ''
	)
AS
BEGIN

	IF NOT EXISTS (
			SELECT 1
			FROM tblcustomercat
			WHERE strcustcategory = 'DEFAULT'
			)
		-- used for Magento customers 
	BEGIN
		INSERT INTO tblcustomercat (
			strcustcategory
			,strdesc
			,bitinactive
			,bitishp
			,decisdefdep
			,decisdefins
			,decisdeffinchrge
			)
		VALUES (
			'DEFAULT'
			,'DEFAULT'
			,0
			,0
			,0
			,0
			,0
			)
	END

	IF EXISTS (
			SELECT TOP 1 1
			FROM [dbo].[tblcustomers]
			WHERE [strcustname] = @strOldName
			)
	BEGIN
		UPDATE [dbo].[tblcustomers]
		SET strcustname = CONVERT(NVARCHAR(100), Isnull(@strCustName, ''))
			,strstreet1 = (CONVERT(NVARCHAR(100), Isnull(@strStreet1, '')))
			,strstreet2 = (CONVERT(NVARCHAR(100), Isnull(@strStreet2, '')))
			,strcity = (CONVERT(NVARCHAR(50), Isnull(@strCity, '')))
			,strprovince = (CONVERT(NVARCHAR(50), Isnull(@strProvince, '')))
			,strpostal = (CONVERT(NVARCHAR(20), Isnull(@strPostal, '')))
			,strphone = (CONVERT(NVARCHAR(50), Isnull(@strPhone, '')))
			,strcellphone = (CONVERT(NVARCHAR(50), Isnull(@strCellPhone, '')))
			,strfax = (CONVERT(NVARCHAR(50), Isnull(@strFax, '')))
			,stremail = CONVERT(NVARCHAR(250), Isnull(@strEmail, ''))
			,strvat = CONVERT(NVARCHAR(50), Isnull(@strVAT, ''))
			,strck = CONVERT(NVARCHAR(50), Isnull(@strCK, ''))
			,decbaldue = CONVERT(MONEY, Isnull(@decBalDue, 0))
			,decytdpurch = CONVERT(MONEY, Isnull(@decYTDPurch, 0))
			,decopenorders = CONVERT(MONEY, Isnull(@decOpenOrders, 0))
			,intdelmethod = CONVERT(INT, Isnull(@intDelMethod, 0))
			,bitcreditctrl = CONVERT(BIT, Isnull(@bitCreditCtrl, 0))
			,deccreditlimit = CONVERT(MONEY, Isnull(@decCreditLimit, 0))
			,bitcredithold = CONVERT(BIT, Isnull(@bitCreditHold, 0))
			,bitinactive = CONVERT(BIT, Isnull(@bitInactive, 0))
			,dteupdated = Getdate()
			,strcontact = CONVERT(NVARCHAR(100), Isnull(@strContact, ''))
			,strfield1 = CONVERT(NVARCHAR(100), Isnull(@strField1, ''))
			,strfield2 = CONVERT(NVARCHAR(100), Isnull(@strField2, ''))
			,strfield3 = CONVERT(NVARCHAR(100), Isnull(@strField3, ''))
			,strfield4 = CONVERT(NVARCHAR(100), Isnull(@strField4, ''))
			,strfield5 = CONVERT(NVARCHAR(100), Isnull(@strField5, ''))
			,strfield6 = CONVERT(NVARCHAR(100), Isnull(@strField6, ''))
			,strtaxcode = CONVERT(NVARCHAR(2), Isnull(@strTaxCode, ''))
			,dtesince = CONVERT(DATETIME, Isnull(@dteSince, Getdate()), 103)
			,strnotes = CONVERT(NVARCHAR(max), Isnull(@strNotes, ''))
			,strpricelist = CONVERT(NVARCHAR(20), Isnull(@strPricelist, ''))
			,
			--[uID] = CONVERT(UNIQUEIDENTIFIER, @uID), 
			decintrate = CONVERT(MONEY, Isnull(@decIntRate, 0))
			,strcustdesc = CONVERT(VARCHAR(200), Isnull(@strCustDesc, ''))
			,strcountry = CONVERT(NVARCHAR(50), Isnull(@strCountry, ''))
			,strterm = CONVERT(NVARCHAR(50), Isnull(@strTerm, ''))
			,intdept = @intDept
			,strcurrency = CONVERT(NVARCHAR(3), Isnull(@strCurrency, ''))
			,decbalduef = CONVERT(MONEY, Isnull(@decBalDueF, 0))
			,decytdpurchf = CONVERT(MONEY, Isnull(@decYTDPurchF, 0))
			,decopenordersf = CONVERT(MONEY, Isnull(@decOpenOrdersF, 0))
			,strfield7 = CONVERT(NVARCHAR(100), Isnull(@strField7, ''))
			,strfield8 = CONVERT(NVARCHAR(100), Isnull(@strField8, ''))
			,strfield9 = CONVERT(NVARCHAR(100), Isnull(@strField9, ''))
			,strfield10 = CONVERT(NVARCHAR(100), Isnull(@strField10, ''))
			,strfield11 = CONVERT(NVARCHAR(100), Isnull(@strField11, ''))
			,strfield12 = CONVERT(NVARCHAR(100), Isnull(@strField12, ''))
			,stremailinv = CONVERT(NVARCHAR(250), Isnull(@strEmailInv, ''))
			,stremailstat = CONVERT(NVARCHAR(250), Isnull(@strEmailStat, ''))
			,strcustcategory = CASE Isnull(@strCustCategory, '')
				WHEN ''
					THEN NULL
				ELSE CONVERT(NVARCHAR(20), Isnull(@strCustCategory, ''))
				END
			,strcountrycode = @strCountryCode
			,strtendertype = @strTenderType
			,dectradediscperc = CONVERT(MONEY, Isnull(@decTradeDiscPerc, 0))
			,deccreditlimitoverride = CONVERT(DECIMAL(18, 2), Isnull(@decCreditLimitOverride, 0))
			,dtecreditlimitexpirydate = CONVERT(DATETIME, Isnull(@dteCreditLimitExpiryDate, Getdate()), 103)
			,intpartialbackorders = CONVERT(INT, Isnull(@intPartialBackorders, 0))
			,bitwithholdtax = CONVERT(BIT, Isnull(@bitWithholdTax, 0))
			,strwithholdtaxcode = @strWithholdTaxCode
			,strinvformdocname = CONVERT(NVARCHAR(50), Isnull(@strINVFormDocName, NULL))
			,strordformdocname = CONVERT(NVARCHAR(50), Isnull(@strORDFormDocName, NULL))
			,bitmatrixtype = CONVERT(BIT, Isnull(@bitMatrixType, 0))
			,strmatrixtype = CONVERT(NVARCHAR(20), Isnull(@strMatrixType, ''))
			,strparentcust = CONVERT(NVARCHAR(50), Isnull(@strParentCust, ''))
			,strvaluebased = @strValueBased
			,bitinvworkflownew = CONVERT(BIT, Isnull(@bitInvWorkflowNew, 0))
			,bitinvworkflowda = CONVERT(BIT, Isnull(@bitInvWorkflowDA, 0))
			,bitinvworkflowso = CONVERT(BIT, Isnull(@bitInvWorkflowSO, 0))
			,strwebsite = CONVERT(NVARCHAR(200), Isnull(@strWebsite, ''))
			,strrstterminalsync = CONVERT(NVARCHAR(max), Isnull(@strRSTTerminalSync, ''))
			,strcontact2 = CONVERT(NVARCHAR(50), Isnull(@strContact2, ''))
			,strsuburb = CONVERT(NVARCHAR(50), Isnull(@strSuburb, ''))
			,stremailoso = CONVERT(NVARCHAR(250), Isnull(@strEmailOso, ''))
			,intnaprintmethod = CONVERT(INT, Isnull(@intNAPrintMethod, 0))
			,strdelmethodcode = @strDelMethodCode
			,strCustomerType = @strCustType
			,bitexclcommission = @bitExclCommission
			,strfield13 = CONVERT(BIT, Isnull(@strField13, 0))
			,strfield14 = CONVERT(BIT, Isnull(@strField14, 0))
			,strfield15 = CONVERT(BIT, Isnull(@strField15, 0))
			,strfield16 = CONVERT(BIT, Isnull(@strField16, 0))
			,strfield17 = CONVERT(BIT, Isnull(@strField17, 0))
			,strfield18 = CONVERT(BIT, Isnull(@strField18, 0))
			,strfacebook = CONVERT(NVARCHAR(100), Isnull(@strFaceBook, ''))
			,strlinkedin = CONVERT(NVARCHAR(100), Isnull(@strLinkedIn, ''))
			,intGLNumberAR = CONVERT(NVARCHAR(100), Isnull(@strGLNumberAR, ''))
			,intGLNumberDeposit = CONVERT(NVARCHAR(100), Isnull(@strGLNumberDeposit, ''))
			,imgPicture = CONVERT(IMAGE, ISNULL(@imgPicture, NULL))
			,blnIsSynctwebstore = @blnIsSynctwebstore
			,strWebstoreEmail = @strWebstoreEmail
			,strDocPassword = @strDocPassword
			,strCustTPIN = @TPIN
			,strTransactionType = @TransactionType
			,strKenyaCustPin = @KenyaCustPin
		WHERE [strcustname] = @strOldName;

		UPDATE tblcustomers
		SET strparentcust = N''
		WHERE strparentcust = @strOldName;
	END;
	ELSE
	BEGIN
		INSERT INTO [dbo].[tblcustomers] (
			[strcustname]
			,[strstreet1]
			,[strstreet2]
			,[strcity]
			,[strprovince]
			,[strpostal]
			,[strphone]
			,[strcellphone]
			,[strfax]
			,[stremail]
			,[strvat]
			,[strck]
			,[decbaldue]
			,[decytdpurch]
			,[decopenorders]
			,[intdelmethod]
			,[bitcreditctrl]
			,[deccreditlimit]
			,[bitcredithold]
			,[bitinactive]
			,[dteupdated]
			,[strcontact]
			,[strfield1]
			,[strfield2]
			,[strfield3]
			,[strfield4]
			,[strfield5]
			,[strfield6]
			,[strtaxcode]
			,[dtesince]
			,[strnotes]
			,[strpricelist]
			,[uid]
			,[decintrate]
			,[strcustdesc]
			,[strcountry]
			,[strterm]
			,[intdept]
			,[strcurrency]
			,[decbalduef]
			,[decytdpurchf]
			,[decopenordersf]
			,[strfield7]
			,[strfield8]
			,[strfield9]
			,[strfield10]
			,[strfield11]
			,[strfield12]
			,[stremailinv]
			,[stremailstat]
			,[strcustcategory]
			,[strcountrycode]
			,[strtendertype]
			,[dectradediscperc]
			,[deccreditlimitoverride]
			,[dtecreditlimitexpirydate]
			,[intpartialbackorders]
			,[bitwithholdtax]
			,[strwithholdtaxcode]
			,[strinvformdocname]
			,[strordformdocname]
			,[bitmatrixtype]
			,[strmatrixtype]
			,[strparentcust]
			,[strvaluebased]
			,[bitinvworkflownew]
			,[bitinvworkflowda]
			,[bitinvworkflowso]
			,[strwebsite]
			,[strrstterminalsync]
			,[strcontact2]
			,[strsuburb]
			,[stremailoso]
			,[intnaprintmethod]
			,[strdelmethodcode]
			,[strCustomerType]
			,[strfield13]
			,[strfield14]
			,[strfield15]
			,[strfield16]
			,[strfacebook]
			,[strlinkedin]
			,[strfield17]
			,[strfield18]
			,[bitexclcommission]
			,[strecompassword]
			,[dterowupdated]
			,[intGLNumberAR]
			,[intGLNumberDeposit]
			,imgPicture
			,blnIsSynctwebstore
			,strWebstoreEmail
			,strDocPassword
			,strCustTPIN
			,strTransactionType
			,strKenyaCustPin
			)
		VALUES (
			@strCustName
			,(CONVERT(NVARCHAR(100), Isnull(@strStreet1, '')))
			,(CONVERT(NVARCHAR(100), Isnull(@strStreet2, '')))
			,(CONVERT(NVARCHAR(50), Isnull(@strCity, '')))
			,(CONVERT(NVARCHAR(50), Isnull(@strProvince, '')))
			,(CONVERT(NVARCHAR(20), Isnull(@strPostal, '')))
			,(CONVERT(NVARCHAR(50), Isnull(@strPhone, '')))
			,(CONVERT(NVARCHAR(50), Isnull(@strCellPhone, '')))
			,(CONVERT(NVARCHAR(50), Isnull(@strFax, '')))
			,CONVERT(NVARCHAR(250), Isnull(@strEmail, ''))
			,CONVERT(NVARCHAR(50), Isnull(@strVAT, ''))
			,CONVERT(NVARCHAR(50), Isnull(@strCK, ''))
			,CONVERT(MONEY, Isnull(@decBalDue, 0))
			,CONVERT(MONEY, Isnull(@decYTDPurch, 0))
			,CONVERT(MONEY, Isnull(@decOpenOrders, 0))
			,CONVERT(INT, Isnull(@intDelMethod, 0))
			,CONVERT(BIT, Isnull(@bitCreditCtrl, 0))
			,CONVERT(MONEY, Isnull(@decCreditLimit, 0))
			,CONVERT(BIT, Isnull(@bitCreditHold, 0))
			,CONVERT(BIT, Isnull(@bitInactive, 0))
			,Getdate()
			,CONVERT(NVARCHAR(100), Isnull(@strContact, ''))
			,CONVERT(NVARCHAR(100), Isnull(@strField1, ''))
			,CONVERT(NVARCHAR(100), Isnull(@strField2, ''))
			,CONVERT(NVARCHAR(100), Isnull(@strField3, ''))
			,CONVERT(NVARCHAR(100), Isnull(@strField4, ''))
			,CONVERT(NVARCHAR(100), Isnull(@strField5, ''))
			,CONVERT(NVARCHAR(100), Isnull(@strField6, ''))
			,CONVERT(NVARCHAR(2), Isnull(@strTaxCode, ''))
			,CONVERT(DATETIME, Isnull(@dteSince, Getdate()), 103)
			,CONVERT(NVARCHAR(max), Isnull(@strNotes, ''))
			,CONVERT(NVARCHAR(20), Isnull(@strPricelist, ''))
			,Newid()
			,CONVERT(MONEY, Isnull(@decIntRate, 0))
			,CONVERT(VARCHAR(200), Isnull(@strCustDesc, ''))
			,CONVERT(NVARCHAR(50), Isnull(@strCountry, ''))
			,CONVERT(NVARCHAR(50), Isnull(@strTerm, ''))
			,@intDept
			,CONVERT(NVARCHAR(3), Isnull(@strCurrency, ''))
			,CONVERT(MONEY, Isnull(@decBalDueF, 0))
			,CONVERT(MONEY, Isnull(@decYTDPurchF, 0))
			,CONVERT(MONEY, Isnull(@decOpenOrdersF, 0))
			,CONVERT(NVARCHAR(100), Isnull(@strField7, ''))
			,CONVERT(NVARCHAR(100), Isnull(@strField8, ''))
			,CONVERT(NVARCHAR(100), Isnull(@strField9, ''))
			,CONVERT(NVARCHAR(100), Isnull(@strField10, ''))
			,CONVERT(NVARCHAR(100), Isnull(@strField11, ''))
			,CONVERT(NVARCHAR(100), Isnull(@strField12, ''))
			,CONVERT(NVARCHAR(250), Isnull(@strEmailInv, ''))
			,CONVERT(NVARCHAR(250), Isnull(@strEmailStat, ''))
			,CASE Isnull(@strCustCategory, '')
				WHEN ''
					THEN NULL
				ELSE CONVERT(NVARCHAR(20), Isnull(@strCustCategory, ''))
				END
			,@strCountryCode
			,@strTenderType
			,--'On Account',--@strTenderType, 
			CONVERT(MONEY, Isnull(@decTradeDiscPerc, 0))
			,CONVERT(DECIMAL(18, 2), Isnull(@decCreditLimitOverride, 0))
			,CONVERT(DATETIME, Isnull(@dteCreditLimitExpiryDate, Getdate()), 103)
			,CONVERT(INT, Isnull(@intPartialBackorders, 0))
			,CONVERT(BIT, Isnull(@bitWithholdTax, 0))
			,@strWithholdTaxCode
			,@strINVFormDocName
			,@strORDFormDocName
			,CONVERT(BIT, Isnull(@bitMatrixType, 0))
			,CONVERT(NVARCHAR(20), Isnull(@strMatrixType, ''))
			,CONVERT(NVARCHAR(50), '')
			,@strValueBased
			,CONVERT(BIT, Isnull(@bitInvWorkflowNew, 0))
			,CONVERT(BIT, Isnull(@bitInvWorkflowDA, 0))
			,CONVERT(BIT, Isnull(@bitInvWorkflowSO, 0))
			,CONVERT(NVARCHAR(200), Isnull(@strWebsite, ''))
			,CONVERT(NVARCHAR(max), Isnull(@strRSTTerminalSync, ''))
			,CONVERT(NVARCHAR(50), Isnull(@strContact2, ''))
			,CONVERT(NVARCHAR(50), Isnull(@strSuburb, ''))
			,CONVERT(NVARCHAR(250), Isnull(@strEmailOso, ''))
			,CONVERT(INT, Isnull(@intNAPrintMethod, 0))
			,@strDelMethodCode
			,@strCustType
			,CONVERT(BIT, Isnull(@strField13, 0))
			,CONVERT(BIT, Isnull(@strField14, 0))
			,CONVERT(BIT, Isnull(@strField15, 0))
			,CONVERT(BIT, Isnull(@strField16, 0))
			,CONVERT(NVARCHAR(100), Isnull(@strFaceBook, ''))
			,CONVERT(NVARCHAR(100), Isnull(@strLinkedIn, ''))
			,CONVERT(BIT, Isnull(@strField17, 0))
			,CONVERT(BIT, Isnull(@strField18, 0))
			,CONVERT(BIT, Isnull(@bitExclCommission, 0))
			,CONVERT(NVARCHAR(100), Isnull('', ''))
			,Getdate()
			,CONVERT(NVARCHAR(100), Isnull(@strGLNumberAR, ''))
			,CONVERT(NVARCHAR(100), Isnull(@strGLNumberDeposit, ''))
			,@imgPicture
			,@blnIsSynctwebstore
			,@strWebstoreEmail
			,@strDocPassword
			,CONVERT(NVARCHAR(10), Isnull(@TPIN, ''))
			,@TransactionType
			,CONVERT(NVARCHAR(10), Isnull(@KenyaCustPin, ''))
			)
	END;

	UPDATE tblBankManagerMappings
	SET strCustName = @strCustName
	WHERE strCustName = @strOldName

	UPDATE tblcustomers
	SET strparentcust = @strCustName
	WHERE strcustname IN (
			SELECT *
			FROM Fnsplitstringastable(@strMultipleCustName, ',')
			);

	DELETE
	FROM tblcustomerex
	WHERE strcustname = @strCustName;

	IF (
			SELECT Count(*)
			FROM @tblCustomerEx
			) > 0
	BEGIN
		INSERT INTO tblcustomerex (
			strcustname
			,strtaxname
			)
		SELECT CONVERT(NVARCHAR(100), Isnull(@strCustName, ''))
			,CONVERT(NVARCHAR(20), Isnull(col02, ''))
		FROM @tblCustomerEx;
	END

	DELETE
	FROM tblcustomerexwt
	WHERE strcustname = @strCustName;

	IF (
			SELECT Count(*)
			FROM @tblCustomerExWT
			) > 0
	BEGIN
		INSERT INTO tblcustomerexwt (
			strcustname
			,strtaxname
			)
		SELECT CONVERT(NVARCHAR(100), Isnull(@strCustName, ''))
			,CONVERT(NVARCHAR(20), Isnull(col02, ''))
		FROM @tblCustomerExWT;
	END

	DELETE
	FROM tblcustomersales
	WHERE strcustname = @strCustName;

	IF @strSalesName IS NOT NULL
		AND Len(@strSalesName) > 0
	BEGIN
		INSERT INTO tblcustomersales (
			strCustName
			,strSalesName
			)
		VALUES (
			@strCustName
			,@strSalesName
			);
	END;

	IF @strProfitCenters IS NOT NULL
		AND Len(@strProfitCenters) > 0
	BEGIN
		INSERT INTO tblcustomercenter
		VALUES (
			@strCustName
			,@uidCenterID
			);
	END;

	--Shipping Locations 
	DELETE
	FROM [tblcustomerloc]
	WHERE strcustname = @strCustName;

	IF (
			SELECT Count(*)
			FROM @tblCustomerLoc
			) > 0
	BEGIN
		INSERT INTO [dbo].[tblcustomerloc] (
			strcustname
			,strlocname
			,strstreet1
			,strstreet2
			,strcity
			,strprovince
			,strpostal
			,strcountry
			,strdelroutecode
			,strcountrycode
			,strsalesname
			,strdelmethodcode
			,decdistance
			,strnumber
			,geoCoord
			)
		SELECT CONVERT(NVARCHAR(100), Isnull(col01, ''))
			,CONVERT(NVARCHAR(100), Isnull(col02, ''))
			,CONVERT(NVARCHAR(200), Isnull(col03, ''))
			,CONVERT(NVARCHAR(200), Isnull(col04, ''))
			,CONVERT(NVARCHAR(100), Isnull(col05, ''))
			,CONVERT(NVARCHAR(100), Isnull(col06, ''))
			,CONVERT(NVARCHAR(40), Isnull(col07, ''))
			,CONVERT(NVARCHAR(100), Isnull(col08, ''))
			,col09
			,--CONVERT(NVARCHAR(100), ISNULL(COL09,'')), 
			(
				SELECT TOP 1 strcountrycode
				FROM tblcountries
				WHERE strdisplayname = col10
				)
			,col11
			,--CONVERT(NVARCHAR(100), COL11) , 
			col12
			,CONVERT(MONEY, Isnull(col13, 0))
			,col14
			,--CONVERT(NVARCHAR(100), COL14) 
			NULL
		FROM @tblCustomerLoc;
	END

	--Make Target Entry and delete on update 
	DELETE
	FROM [tblcustomerst]
	WHERE strcustname = @strCustName;

	IF (
			SELECT Count(*)
			FROM @tblCustomersT
			) > 0
	BEGIN
		INSERT INTO [dbo].[tblcustomerst] (
			strcustname
			,decperiod1
			,decperiod2
			,decperiod3
			,decperiod4
			,decperiod5
			,decperiod6
			,decperiod7
			,decperiod8
			,decperiod9
			,decperiod10
			,decperiod11
			,decperiod12
			)
		SELECT CONVERT(NVARCHAR(200), Isnull(col01, ''))
			,CONVERT(MONEY, Isnull(col02, 0))
			,CONVERT(MONEY, Isnull(col03, 0))
			,CONVERT(MONEY, Isnull(col04, 0))
			,CONVERT(MONEY, Isnull(col05, 0))
			,CONVERT(MONEY, Isnull(col06, 0))
			,CONVERT(MONEY, Isnull(col07, 0))
			,CONVERT(MONEY, Isnull(col08, 0))
			,CONVERT(MONEY, Isnull(col09, 0))
			,CONVERT(MONEY, Isnull(col10, 0))
			,CONVERT(MONEY, Isnull(col11, 0))
			,CONVERT(MONEY, Isnull(col12, 0))
			,CONVERT(MONEY, Isnull(col13, 0))
		FROM @tblCustomersT;
	END

	UPDATE tblcustomercontacts
	SET strcustname = @strCustName
	WHERE strcustname = @strOldCust;

	DELETE
	FROM [tblcustomerf]
	WHERE strcustname = @strCustName;

	IF (
			SELECT Count(*)
			FROM @tblCustomerF
			) > 0
	BEGIN
		INSERT INTO [dbo].[tblcustomerf] (
			strcustname
			,strfilename
			,dtemodified
			,strtype
			,intsize
			,strusername
			,bitenc
			,imgfile
			)
		SELECT CONVERT(NVARCHAR(200), Isnull(col01, ''))
			,CONVERT(NVARCHAR(800), Isnull(col02, ''))
			,CONVERT(DATETIME, Isnull(col03, Getdate()))
			,CONVERT(NVARCHAR(1000), Isnull(col04, ''))
			,CONVERT(BIGINT, Isnull(col05, 0))
			,CONVERT(NVARCHAR(40), Isnull(col06, ''))
			,CONVERT(BIT, Isnull(col07, 0))
			,CONVERT(IMAGE, image1)
		FROM @tblCustomerF;
	END

	IF Len(Rtrim(Isnull(@strSalesName, ''))) > 0
	BEGIN
		DECLARE @strPaymentType AS NVARCHAR(200) = '';

		SELECT @strPaymentType = strname
		FROM tbltendertypes
		WHERE bitaccount = 1;

		IF @PL_HistoryOn = 1
		BEGIN
			DECLARE @lastCustTransId AS BIGINT = (
					SELECT Max(lngcusttrid)
					FROM tblcusttrans
					);

			--Find Terms for this invoice 
			IF (
					SELECT Count(*)
					FROM @tblCustTrans
					) > 0
			BEGIN
				INSERT INTO [dbo].[tblcusttrans] (
					lngcusttrid
					,strcustname
					,dtesystemdate
					,dtejournaldate
					,strusername
					,strinvdocid
					,strinvdepnumber
					,strsonumber
					,inttranstype
					,decinvamount
					,decinvamountf
					,strcurrency
					,bitisforeign
					,decexchange
					,bitdocrerated
					,dtererated
					,decreratecumltvevalue
					,bitsettled
					,decdiscavail
					,decdiscavailf
					,dtediscexpires
					,dteduedate
					,strjedocid
					,strorddocid
					)
				SELECT Row_number() OVER (
						ORDER BY custname
						) + CONVERT(BIGINT, Isnull(@lastCustTransId, 0))
					,CONVERT(NVARCHAR(100), Isnull(@strCustName, ''))
					,CONVERT(SMALLDATETIME, Isnull(systemdate, Getdate()))
					,CONVERT(SMALLDATETIME, Isnull(journaldate, Getdate()))
					,CONVERT(NVARCHAR(40), Isnull(username, ''))
					,invdocid
					,CONVERT(NVARCHAR(100), Isnull(invdepnumber, ''))
					,CONVERT(NVARCHAR(100), Isnull(sonumber, ''))
					,CONVERT(INT, Isnull(transtype, 0))
					,CONVERT(MONEY, Isnull(invamount, 0))
					,CONVERT(MONEY, Isnull(invamountf, 0))
					,CONVERT(NVARCHAR(6), Isnull(currency, ''))
					,CONVERT(BIT, Isnull(isforeign, 0))
					,CONVERT(MONEY, Isnull(exchange, 0))
					,CONVERT(BIT, Isnull(isdocrerated, 0))
					,rerated
					,CONVERT(MONEY, Isnull(reratecumltvevalue, 0))
					,CONVERT(BIT, Isnull(bitsettled, 0))
					,CONVERT(MONEY, Isnull(discavail, 0))
					,CONVERT(MONEY, Isnull(discavailf, 0))
					,CONVERT(DATETIME, Isnull(discexpires, Getdate()))
					,CONVERT(DATETIME, Isnull(duedate, Getdate()))
					,jedocid
					,orddocid
				FROM @tblCustTrans;
			END

			IF (
					SELECT Count(*)
					FROM @tblCustTransDT
					) > 0
			BEGIN
				INSERT INTO [dbo].[tblcusttransdt] (
					dtejournaldate
					,lngcusttrid
					,lngcustpayid
					,decamount
					,inttranstype
					,decamtowingattime
					,bitreversed
					,dteintdate
					,decamountf
					,decamtowingattimef
					,bitisforeign
					)
				SELECT [journaldate]
					,Row_number() OVER (
						ORDER BY [custtrid]
						) + @lastCustTransId
					,[custpayid]
					,CONVERT(MONEY, Isnull(amount, 0))
					,CONVERT(SMALLINT, Isnull(transtype, 0))
					,CONVERT(MONEY, Isnull(amtowingattime, 0))
					,CONVERT(BIT, Isnull(isreversed, 0))
					,intdate
					,
					--CONVERT(SMALLDATETIME, ISNULL(IntDate,GETDATE())) , 
					CONVERT(MONEY, Isnull(amountf, 0))
					,CONVERT(MONEY, Isnull(amtowingattimef, 0))
					,CONVERT(BIT, Isnull(isforeign, 0))
				FROM @tblCustTransDT;
			END
		END
	END

	--Update Customer YTD purch and balance due amounts 
	UPDATE tblcustomers
	SET decbaldue = (
			SELECT Isnull(Sum(tblcusttransdt.decamount), 0)
			FROM tblcusttrans
			INNER JOIN tblcusttransdt ON tblcusttrans.lngcusttrid = tblcusttransdt.lngcusttrid
			WHERE tblcusttrans.strcustname = @strCustName
				AND tblcusttransdt.bitreversed = 0
				AND (
					tblcusttrans.strorddocid IS NULL
					OR (
						tblcusttrans.strinvdocid IS NOT NULL
						AND tblcusttrans.strorddocid IS NOT NULL
						)
					)
			)
		,decytdpurch = (
			SELECT Isnull(Sum(dectotal), 0)
			FROM tblinvoicedoc
			WHERE strcustname = @strCustName
				AND bithistorytrans = 0
				AND dtejournaldate >= @CurrentYrStarts
			)
		,decbalduef = (
			SELECT Isnull(Sum(tblcusttransdt.decamountf), 0)
			FROM tblcusttrans
			INNER JOIN tblcusttransdt ON tblcusttrans.lngcusttrid = tblcusttransdt.lngcusttrid
			WHERE tblcusttrans.strcustname = @strCustName
				AND tblcusttransdt.bitreversed = 0
				AND (
					tblcusttrans.strorddocid IS NULL
					OR (
						tblcusttrans.strinvdocid IS NOT NULL
						AND tblcusttrans.strorddocid IS NOT NULL
						)
					)
			)
		,decytdpurchf = (
			SELECT Isnull(Sum(dectotalf), 0)
			FROM tblinvoicedoc
			WHERE strcustname = @strCustName
				AND bithistorytrans = 0
				AND dtejournaldate >= @CurrentYrStarts
			)
		,dteupdated = Getdate()
	WHERE strcustname = @strCustName;

	DECLARE @tblInvCustomer_Temp AS TABLE (
		id INT IDENTITY(1, 1)
		,strpartnumber NVARCHAR(100)
		,strcustname NVARCHAR(100)
		,lngid BIGINT
		,stritemcode NVARCHAR(100)
		,stritemdesc NVARCHAR(1000)
		);

	IF (
			SELECT Count(*)
			FROM @tblInvCustomer
			) > 0
	BEGIN
		INSERT INTO @tblInvCustomer_Temp (
			strpartnumber
			,strcustname
			,lngid
			,stritemcode
			,stritemdesc
			)
		SELECT CONVERT(NVARCHAR(100), col01)
			,CONVERT(NVARCHAR(100), col02)
			,CONVERT(BIGINT, col03)
			,CONVERT(NVARCHAR(100), col04)
			,CONVERT(NVARCHAR(1000), col05)
		FROM @tblInvCustomer;

		DECLARE @intMinID AS INT = (
				SELECT Min(id)
				FROM @tblInvCustomer_Temp
				);
		DECLARE @intMaxID AS INT = (
				SELECT Max(id)
				FROM @tblInvCustomer_Temp
				);
		DECLARE @strPartNumber AS NVARCHAR(100);
		DECLARE @lngID AS BIGINT;
		DECLARE @strItemCode AS NVARCHAR(100);
		DECLARE @strItemDesc AS NVARCHAR(1000);

		WHILE 1 = 1
		BEGIN
			SELECT @strPartNumber = strpartnumber
				,@lngID = lngid
				,@strItemCode = stritemcode
				,@strItemDesc = stritemdesc
			FROM @tblInvCustomer_Temp
			WHERE id = @intMinID;

			IF NOT EXISTS (
					SELECT TOP 1 1
					FROM tblinvcustomer
					WHERE lngid = @lngID
					)
			BEGIN
				INSERT INTO tblinvcustomer (
					strpartnumber
					,strcustname
					,
					--lngID , 
					stritemcode
					,stritemdesc
					)
				SELECT CONVERT(NVARCHAR(100), Isnull(@strPartNumber, ''))
					,CONVERT(NVARCHAR(100), Isnull(@strCustName, ''))
					,
					-- @lngID , 
					@strItemCode
					,@strItemDesc;
			END;
			ELSE
			BEGIN
				UPDATE tblinvcustomer
				SET strpartnumber = @strPartNumber
					,strcustname = @strCustName
					,stritemcode = @strItemCode
					,stritemdesc = @strItemDesc
				WHERE lngid = @lngID;
			END;

			UPDATE tblinv
			SET dtelastupdated = Getdate()
			WHERE strpartnumber = @strPartNumber

			IF @intMinID = @intMaxID
				BREAK

			SET @intMinID += 1
		END
	END
END
GO

/****** Object:  StoredProcedure [dbo].[CustomersSaveHistory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetSNInStockForSerialImportExport] ***********/

CREATE PROCEDURE [dbo].[CustomersSaveHistory]
    (
      @tblInvoiceDoc InvoiceDocType READONLY 
    )
AS
    BEGIN
		
    
				IF (SELECT COUNT(*) FROM @tblInvoiceDoc) > 0
				BEGIN
                        INSERT  INTO tblInvoiceDoc
                                ( strInvDocID ,
                                  lngInvTrackID ,
                                  lngJourID ,
                                  dteSystemDate ,
                                  dteJournalDate ,
                                  dteRequired ,
                                  strUserName ,
                                  strCustName ,
                                  strSoldTo ,
                                  strShipTo ,
                                  strReference ,
                                  decSubTotal ,
                                  decVAT ,
                                  decTotal ,
                                  bitFromSO ,
                                  strOrdDocID ,
                                  bitHistoryTrans ,
                                  strNotes ,
                                  bitPrinted ,
                                  bitEmailed ,
                                  intPaidBy ,
                                  intAccount ,
                                  strSalesName ,
                                  strAddInfo ,
                                  bitReserved ,
                                  strCurrency ,
                                  bitIsForeign ,
                                  decSubTotalF ,
                                  decVATF ,
                                  decTotalF ,
                                  decExchange ,
                                  strTerm ,
                                  intDept ,
                                  strField1 ,
                                  strField2 ,
                                  strField3 ,
                                  strField4 ,
                                  strField5 ,
                                  strField6 ,
                                  strField7 ,
                                  strField8 ,
                                  strField9 ,
                                  strField10 ,
                                  strField11 ,
                                  strField12 ,
                                  strSubFormated ,
                                  strVATFormatted ,
                                  strTotFormatted ,
                                  dteField13 ,
                                  dteField14 ,
                                  decDiscPerc ,
                                  decDiscAmt ,
                                  decDiscAmtF ,
                                  strDiscFormatted ,
                                  strOrdFQDocID ,
                                  strStatusTypeCode ,
                                  strCNReasonCode ,
                                  bitBookmark ,
                                  dteSystemDateTime ,
                                  strPaidBy ,
                                  intSentDoc ,
                                  strVAT ,
                                  strDelMethodCode ,
                                  decTotalWeight ,
                                  decTotalVolWeight ,
                                  decDeliveryCost ,
                                  decDeliveryCostF ,
                                  strDeliveryCostFormatted ,
                                  bitShipmentsAuditTrail ,
                                  intRevisionNumber ,
                                  strStoreNumber ,
                                  strEDI , 
								  bitIsFromWorkshop
	                            )
                                SELECT  CONVERT(NVARCHAR(100), ISNULL(strInvDocID,'')) ,
                                        lngInvTrackID ,
                                        lngJourID ,
                                        CONVERT(SMALLDATETIME, ISNULL(dteSystemDate,GETDATE())) ,
                                        CONVERT(SMALLDATETIME, ISNULL(dteJournalDate,GETDATE())) ,
                                        CONVERT(SMALLDATETIME, ISNULL(dteRequired,GETDATE())) ,
                                        CONVERT(NVARCHAR(40), ISNULL(strUserName,'')) ,
                                        strCustName ,
                                        CONVERT(NVARCHAR(1000), ISNULL(strSoldTo,'')) ,
                                        CONVERT(NVARCHAR(1000), ISNULL(strShipTo,'')) ,
                                        CONVERT(NVARCHAR(100), ISNULL(strReference,'')) ,
                                        CONVERT(MONEY, ISNULL(decSubTotal,0)) ,
                                        CONVERT(MONEY, ISNULL(decVAT,0)) ,
                                        CONVERT(MONEY, ISNULL(decTotal,0)) ,
                                        CONVERT(BIT, ISNULL(bitFromSO,0)) ,
                                        strOrdDocID ,
                                        CONVERT(BIT, ISNULL(bitHistoryTrans,0)) ,
                                        CONVERT(NVARCHAR(MAX), ISNULL(strNotes,'')) ,
                                        CONVERT(BIT, ISNULL(bitPrinted,0)) ,
                                        CONVERT(BIT, ISNULL(bitEmailed,0)) ,
                                        CONVERT(INT, ISNULL(intPaidBy,0)) ,
                                        intAccount ,
                                        strSalesName ,
                                        CONVERT(NVARCHAR(100), ISNULL(strAddInfo,'')) ,
                                        CONVERT(BIT, ISNULL(bitReserved,0)) ,
                                        CONVERT(NVARCHAR(6), ISNULL(strCurrency,'')) ,
                                        CONVERT(BIT, ISNULL(bitIsForeign,0)) ,
                                        CONVERT(MONEY, ISNULL(decSubTotalF,0)) ,
                                        CONVERT(MONEY, ISNULL(decVATF,0)) ,
                                        CONVERT(MONEY, ISNULL(decTotalF,0)) ,
                                        CONVERT(MONEY, ISNULL(decExchange,0)) ,
                                        CONVERT(NVARCHAR(100), ISNULL(strTerm,'')) ,
                                        intDept ,
                                        CONVERT(NVARCHAR(200), ISNULL(strField1,'')) ,
                                        CONVERT(NVARCHAR(200), ISNULL(strField2,'')) ,
                                        CONVERT(NVARCHAR(200), ISNULL(strField3,'')) ,
                                        CONVERT(NVARCHAR(200), ISNULL(strField4,'')) ,
                                        CONVERT(NVARCHAR(200), ISNULL(strField5,'')) ,
                                        CONVERT(NVARCHAR(200), ISNULL(strField6,'')) ,
                                        CONVERT(NVARCHAR(200), ISNULL(strField7,'')) ,
                                        CONVERT(NVARCHAR(200), ISNULL(strField8,'')) ,
                                        CONVERT(NVARCHAR(200), ISNULL(strField9,'')) ,
                                        CONVERT(NVARCHAR(200), ISNULL(strField10,'')) ,
                                        CONVERT(NVARCHAR(200), ISNULL(strField11,'')) ,
                                        CONVERT(NVARCHAR(200), ISNULL(strField12,'')) ,
                                        CONVERT(NVARCHAR(100), ISNULL(strSubFormated,'')) ,
                                        CONVERT(NVARCHAR(100), ISNULL(strVATFormatted,'')) ,
                                        CONVERT(NVARCHAR(100), ISNULL(strTotFormatted,'')) ,
                                        CONVERT(MONEY, ISNULL(dteField13,0)) ,
                                        CONVERT(MONEY, ISNULL(dteField14,0)) ,
                                        CONVERT(MONEY, ISNULL(decDiscPerc,0)) ,
                                        CONVERT(MONEY, ISNULL(decDiscAmt,0)) ,
                                        CONVERT(MONEY, ISNULL(decDiscAmtF,0)) ,
                                        CONVERT(NVARCHAR(100), ISNULL(strDiscFormatted,'')) ,
                                        strOrdFQDocID ,
                                        strStatusTypeCode ,
                                        strCNReasonCode ,
                                        CONVERT(BIT, ISNULL(bitBookmark,0)) ,
                                        CONVERT(DATETIME, ISNULL(dteSystemDateTime,GETDATE())) ,
                                        CONVERT(NVARCHAR(40), ISNULL(strPaidBy,'')) ,
                                        CONVERT(INT, ISNULL(intSentDoc,0)),
                                        CONVERT(NVARCHAR(100), ISNULL(strVAT,'')),
                                        strDelMethodCode ,
                                        CONVERT(MONEY, ISNULL(decTotalWeight,0)) ,
                                        CONVERT(MONEY, ISNULL(decTotalVolWeight,0)) ,
                                        CONVERT(MONEY, ISNULL(decDeliveryCost,0)) ,
                                        CONVERT(MONEY, ISNULL(decDeliveryCostF,0)) ,
                                        strDeliveryCostFormatted, --CONVERT(NVARCHAR(100), ISNULL(strDeliveryCostFormatted,'')) ,
                                        CONVERT(BIT, ISNULL(bitShipmentsAuditTrail,0)) ,
                                        intRevisionNumber ,
                                        strStoreNumber ,
                                        strEDI ,
										bitIsFromWorkshop
                                FROM    @tblInvoiceDoc;
								END                 
END
GO
/****** Object:  StoredProcedure [dbo].[CustomersSearch]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [CustomersSearch]***********/

---------------------------------

CREATE PROCEDURE [dbo].[CustomersSearch] (
     @UserName nvarchar(20) = NULL
    ,@IsBPToolsMode bit = NULL
	,@CustName NVARCHAR(50) = NULL
	,@Street1 NVARCHAR(100) = NULL
	,@Street2 NVARCHAR(100) = NULL
	,@City NVARCHAR(50) = NULL
	,@Province NVARCHAR(50) = NULL
	,@Postal NVARCHAR(20) = NULL
	,@Phone NVARCHAR(50) = NULL
	,@CellPhone NVARCHAR(50) = NULL
	,@Fax NVARCHAR(50) = NULL
	,@Email NVARCHAR(250) = NULL
	,@VAT NVARCHAR(50) = NULL
	,@CK NVARCHAR(50) = NULL
	,@BalDue MONEY = NULL
	,@YTDPurch MONEY = NULL
	,@OpenOrders MONEY = NULL
	,@DelMethod INT = NULL
	,@CreditCtrl BIT = NULL
	,@CreditLimit MONEY = NULL
	,@CreditHold BIT = NULL
	,@Inactive BIT = NULL
	,@Updated SMALLDATETIME = NULL
	,@Contact NVARCHAR(100) = NULL
	,@Field1 NVARCHAR(100) = NULL
	,@Field2 NVARCHAR(100) = NULL
	,@Field3 NVARCHAR(100) = NULL
	,@Field4 NVARCHAR(100) = NULL
	,@Field5 NVARCHAR(100) = NULL
	,@Field6 NVARCHAR(100) = NULL
	,@TaxCode NVARCHAR(2) = NULL
	,@Since DATETIME = NULL
	,@Notes NVARCHAR(max) = NULL
	,@Pricelist NVARCHAR(20) = NULL
	,@ID UNIQUEIDENTIFIER = NULL
	,@IntRate MONEY = NULL
	,@CustDesc VARCHAR(200) = NULL
	,@Country NVARCHAR(50) = NULL
	,@Term NVARCHAR(50) = NULL
	,@Dept INT = NULL
	,@Currency NVARCHAR(3) = NULL
	,@BalDueF MONEY = NULL
	,@YTDPurchF MONEY = NULL
	,@OpenOrdersF MONEY = NULL
	,@Field7 NVARCHAR(100) = NULL
	,@Field8 NVARCHAR(100) = NULL
	,@Field9 NVARCHAR(100) = NULL
	,@Field10 NVARCHAR(100) = NULL
	,@Field11 NVARCHAR(100) = NULL
	,@Field12 NVARCHAR(100) = NULL
	,@EmailInv NVARCHAR(250) = NULL
	,@EmailStat NVARCHAR(250) = NULL
	,@CustCategory NVARCHAR(20) = NULL
	,@CountryCode NVARCHAR(10) = NULL
	,@TenderType NVARCHAR(20) = NULL
	,@TradeDiscPerc MONEY = NULL
	,@CreditLimitOverride MONEY = NULL
	,@CreditLimitExpiryDate DATETIME = NULL
	,@PartialBackorders INT = NULL
	,@WithholdTax BIT = NULL
	,@WithholdTaxCode NVARCHAR(2) = NULL
	,@INVFormDocName NVARCHAR(50) = NULL
	,@ORDFormDocName NVARCHAR(50) = NULL
	,@IsMatrixType BIT = NULL
	,@MatrixType NVARCHAR(20) = NULL
	,@ParentCust NVARCHAR(50) = NULL
	,@ValueBased NVARCHAR(20) = NULL
	,@InvWorkflowNew BIT = NULL
	,@InvWorkflowDA BIT = NULL
	,@InvWorkflowSO BIT = NULL
	,@Website NVARCHAR(200) = NULL
	,@RSTTerminalSync NVARCHAR(max) = NULL
	,@Contact2 NVARCHAR(50) = NULL
	,@Suburb NVARCHAR(50) = NULL
	,@EmailOso NVARCHAR(250) = NULL
	,@NAPrintMethod INT = NULL
	,@DelMethodCode NVARCHAR(50) = NULL
	)
AS
SET NOCOUNT ON

IF @IsBPToolsMode = 1
BEGIN 
SELECT [strCustName] AS CustomerName
	,[strStreet1] AS Street1
	,[strStreet2] AS Street2
	,[strCity] AS City
	,[strProvince] AS Province
	,[strPostal] AS Postal
	,[strPhone] AS Phone
	,[strCellPhone] AS CellPhone
	,[strFax] AS Fax
	,[strEmail] AS Email
	,[strVAT] AS VAT
	,[strCK] AS CK
	,[decBalDue] AS BalDue
	,[decYTDPurch] AS YTDPurch
	,[decOpenOrders] AS OpenOrders
	,[intDelMethod] AS DelMethod
	,[bitCreditCtrl] AS IsCreditCtrl
	,[decCreditLimit] AS CreditLimit
	,[bitCreditHold] AS IsCreditHold
	,[bitInactive] AS IsInactive
	,[dteUpdated] AS Updated
	,[strContact] AS Contact
	,[strField1] AS Field1
	,[strField2] AS Field2
	,[strField3] AS Field3
	,[strField4] AS Field4
	,[strField5] AS Field5
	,[strField6] AS Field6
	,[strTaxCode] AS TaxCode
	,[dteSince] AS Since
	,[strNotes] AS Notes
	,[strPricelist] AS Pricelist
	,[uID] AS ID
	,[decIntRate] AS IntRate
	,[strCustDesc] AS [Description]
	,[strCountry] AS Country
	,[strTerm] AS Term
	,[intDept] AS Department
	,[strCurrency] AS Currency
	,[decBalDueF] AS BalDueF
	,[decYTDPurchF] AS YTDPurchF
	,[decOpenOrdersF] AS OpenOrdersF
	,[strField7] AS Field7
	,[strField8] AS Field8
	,[strField9] AS Field9
	,[strField10] AS Field10
	,[strField11] AS Field11
	,[strField12] AS Field12
	,[strEmailInv] AS EmailInv
	,[strEmailStat] AS EmailStat
	,[strCustCategory] AS Category
	,[strCountryCode] AS CountryCode
	,[strTenderType] AS TenderType
	,[decTradeDiscPerc] AS TradeDiscPerc
	,[decCreditLimitOverride] AS CreditLimitOverride
	,[dteCreditLimitExpiryDate] AS CreditLimitExpiryDate
	,[intPartialBackorders] AS PartialBackorders
	,[bitWithholdTax] AS IsWithholdTax
	,[strWithholdTaxCode] AS WithholdTaxCode
	,[strINVFormDocName] AS INVFormDocName
	,[strORDFormDocName] AS ORDFormDocName
	,[bitMatrixType] AS IsMatrixType
	,[strMatrixType] AS MatrixType
	,[strParentCust] AS ParentCust
	,[strValueBased] AS ValueBased
	,[bitInvWorkflowNew] AS IsInvWorkflowNew
	,[bitInvWorkflowDA] AS IsInvWorkflowDA
	,[bitInvWorkflowSO] AS IsInvWorkflowSO
	,[strWebsite] AS Website
	,[strRSTTerminalSync] AS RSTTerminalSync
	,[strContact2] AS Contact2
	,[strSuburb] AS Suburb
	,[strEmailOso] AS EmailOso
	,[intNAPrintMethod] AS NAPrintMethod
	,[strDelMethodCode] AS DelMethodCode
FROM [tblCustomers]
WHERE (
		([strCustName] = @CustName)
		OR (@CustName IS NULL)
		)
	AND (
		([strStreet1] = @Street1)
		OR (@Street1 IS NULL)
		)
	AND (
		([strStreet2] = @Street2)
		OR (@Street2 IS NULL)
		)
	AND (
		([strCity] = @City)
		OR (@City IS NULL)
		)
	AND (
		([strProvince] = @Province)
		OR (@Province IS NULL)
		)
	AND (
		([strPostal] = @Postal)
		OR (@Postal IS NULL)
		)
	AND (
		([strPhone] = @Phone)
		OR (@Phone IS NULL)
		)
	AND (
		([strCellPhone] = @CellPhone)
		OR (@CellPhone IS NULL)
		)
	AND (
		([strFax] = @Fax)
		OR (@Fax IS NULL)
		)
	AND (
		([strEmail] = @Email)
		OR (@Email IS NULL)
		)
	AND (
		([strVAT] = @VAT)
		OR (@VAT IS NULL)
		)
	AND (
		([strCK] = @CK)
		OR (@CK IS NULL)
		)
	AND (
		([decBalDue] = @BalDue)
		OR (@BalDue IS NULL)
		)
	AND (
		([decYTDPurch] = @YTDPurch)
		OR (@YTDPurch IS NULL)
		)
	AND (
		([decOpenOrders] = @OpenOrders)
		OR (@OpenOrders IS NULL)
		)
	AND (
		([intDelMethod] = @DelMethod)
		OR (@DelMethod IS NULL)
		)
	AND (
		([bitCreditCtrl] = @CreditCtrl)
		OR (@CreditCtrl IS NULL)
		)
	AND (
		([decCreditLimit] = @CreditLimit)
		OR (@CreditLimit IS NULL)
		)
	AND (
		([bitCreditHold] = @CreditHold)
		OR (@CreditHold IS NULL)
		)
	AND (
		([bitInactive] = @Inactive)
		OR (@Inactive IS NULL)
		)
	AND (
		([dteUpdated] = @Updated)
		OR (@Updated IS NULL)
		)
	AND (
		([strContact] = @Contact)
		OR (@Contact IS NULL)
		)
	AND (
		([strField1] = @Field1)
		OR (@Field1 IS NULL)
		)
	AND (
		([strField2] = @Field2)
		OR (@Field2 IS NULL)
		)
	AND (
		([strField3] = @Field3)
		OR (@Field3 IS NULL)
		)
	AND (
		([strField4] = @Field4)
		OR (@Field4 IS NULL)
		)
	AND (
		([strField5] = @Field5)
		OR (@Field5 IS NULL)
		)
	AND (
		([strField6] = @Field6)
		OR (@Field6 IS NULL)
		)
	AND (
		([strTaxCode] = @TaxCode)
		OR (@TaxCode IS NULL)
		)
	AND (
		([dteSince] = @Since)
		OR (@Since IS NULL)
		)
	AND (
		([strNotes] = @Notes)
		OR (@Notes IS NULL)
		)
	AND (
		([strPricelist] = @Pricelist)
		OR (@Pricelist IS NULL)
		)
	AND (
		([uID] = @ID)
		OR (@ID IS NULL)
		)
	AND (
		([decIntRate] = @IntRate)
		OR (@IntRate IS NULL)
		)
	AND (
		([strCustDesc] = @CustDesc)
		OR (@CustDesc IS NULL)
		)
	AND (
		([strCountry] = @Country)
		OR (@Country IS NULL)
		)
	AND (
		([strTerm] = @Term)
		OR (@Term IS NULL)
		)
	AND (
		([intDept] = @Dept)
		OR (@Dept IS NULL)
		)
	AND (
		([strCurrency] = @Currency)
		OR (@Currency IS NULL)
		)
	AND (
		([decBalDueF] = @BalDueF)
		OR (@BalDueF IS NULL)
		)
	AND (
		([decYTDPurchF] = @YTDPurchF)
		OR (@YTDPurchF IS NULL)
		)
	AND (
		([decOpenOrdersF] = @OpenOrdersF)
		OR (@OpenOrdersF IS NULL)
		)
	AND (
		([strField7] = @Field7)
		OR (@Field7 IS NULL)
		)
	AND (
		([strField8] = @Field8)
		OR (@Field8 IS NULL)
		)
	AND (
		([strField9] = @Field9)
		OR (@Field9 IS NULL)
		)
	AND (
		([strField10] = @Field10)
		OR (@Field10 IS NULL)
		)
	AND (
		([strField11] = @Field11)
		OR (@Field11 IS NULL)
		)
	AND (
		([strField12] = @Field12)
		OR (@Field12 IS NULL)
		)
	AND (
		([strEmailInv] = @EmailInv)
		OR (@EmailInv IS NULL)
		)
	AND (
		([strEmailStat] = @EmailStat)
		OR (@EmailStat IS NULL)
		)
	AND (
		([strCustCategory] = @CustCategory)
		OR (@CustCategory IS NULL)
		)
	AND (
		([strCountryCode] = @CountryCode)
		OR (@CountryCode IS NULL)
		)
	AND (
		([strTenderType] = @TenderType)
		OR (@TenderType IS NULL)
		)
	AND (
		([decTradeDiscPerc] = @TradeDiscPerc)
		OR (@TradeDiscPerc IS NULL)
		)
	AND (
		([decCreditLimitOverride] = @CreditLimitOverride)
		OR (@CreditLimitOverride IS NULL)
		)
	AND (
		([dteCreditLimitExpiryDate] = @CreditLimitExpiryDate)
		OR (@CreditLimitExpiryDate IS NULL)
		)
	AND (
		([intPartialBackorders] = @PartialBackorders)
		OR (@PartialBackorders IS NULL)
		)
	AND (
		([bitWithholdTax] = @WithholdTax)
		OR (@WithholdTax IS NULL)
		)
	AND (
		([strWithholdTaxCode] = @WithholdTaxCode)
		OR (@WithholdTaxCode IS NULL)
		)
	AND (
		([strINVFormDocName] = @INVFormDocName)
		OR (@INVFormDocName IS NULL)
		)
	AND (
		([strORDFormDocName] = @ORDFormDocName)
		OR (@ORDFormDocName IS NULL)
		)
	AND (
		([bitMatrixType] = @MatrixType)
		OR (@IsMatrixType IS NULL)
		)
	AND (
		([strMatrixType] = @MatrixType)
		OR (@MatrixType IS NULL)
		)
	AND (
		([strParentCust] = @ParentCust)
		OR (@ParentCust IS NULL)
		)
	AND (
		([strValueBased] = @ValueBased)
		OR (@ValueBased IS NULL)
		)
	AND (
		([bitInvWorkflowNew] = @InvWorkflowNew)
		OR (@InvWorkflowNew IS NULL)
		)
	AND (
		([bitInvWorkflowDA] = @InvWorkflowDA)
		OR (@InvWorkflowDA IS NULL)
		)
	AND (
		([bitInvWorkflowSO] = @InvWorkflowSO)
		OR (@InvWorkflowSO IS NULL)
		)
	AND (
		([strWebsite] = @Website)
		OR (@Website IS NULL)
		)
	AND (
		([strRSTTerminalSync] = @RSTTerminalSync)
		OR (@RSTTerminalSync IS NULL)
		)
	AND (
		([strContact2] = @Contact2)
		OR (@Contact2 IS NULL)
		)
	AND (
		([strSuburb] = @Suburb)
		OR (@Suburb IS NULL)
		)
	AND (
		([strEmailOso] = @EmailOso)
		OR (@EmailOso IS NULL)
		)
	AND (
		([intNAPrintMethod] = @NAPrintMethod)
		OR (@NAPrintMethod IS NULL)
		)
	AND (
		([strDelMethodCode] = @DelMethodCode)
		OR (@DelMethodCode IS NULL)
		)
END
ELSE
BEGIN
SELECT [strCustName] AS CustomerName
	,[strStreet1] AS Street1
	,[strStreet2] AS Street2
	,[strCity] AS City
	,[strProvince] AS Province
	,[strPostal] AS Postal
	,[strPhone] AS Phone
	,[strCellPhone] AS CellPhone
	,[strFax] AS Fax
	,[strEmail] AS Email
	,[strVAT] AS VAT
	,[strCK] AS CK
	,[decBalDue] AS BalDue
	,[decYTDPurch] AS YTDPurch
	,[decOpenOrders] AS OpenOrders
	,[intDelMethod] AS DelMethod
	,[bitCreditCtrl] AS IsCreditCtrl
	,[decCreditLimit] AS CreditLimit
	,[bitCreditHold] AS IsCreditHold
	,[bitInactive] AS IsInactive
	,[dteUpdated] AS Updated
	,[strContact] AS Contact
	,[strField1] AS Field1
	,[strField2] AS Field2
	,[strField3] AS Field3
	,[strField4] AS Field4
	,[strField5] AS Field5
	,[strField6] AS Field6
	,[strTaxCode] AS TaxCode
	,[dteSince] AS Since
	,[strNotes] AS Notes
	,[strPricelist] AS Pricelist
	,[uID] AS ID
	,[decIntRate] AS IntRate
	,[strCustDesc] AS [Description]
	,[strCountry] AS Country
	,[strTerm] AS Term
	,[intDept] AS Department
	,[strCurrency] AS Currency
	,[decBalDueF] AS BalDueF
	,[decYTDPurchF] AS YTDPurchF
	,[decOpenOrdersF] AS OpenOrdersF
	,[strField7] AS Field7
	,[strField8] AS Field8
	,[strField9] AS Field9
	,[strField10] AS Field10
	,[strField11] AS Field11
	,[strField12] AS Field12
	,[strEmailInv] AS EmailInv
	,[strEmailStat] AS EmailStat
	,[strCustCategory] AS Category
	,[strCountryCode] AS CountryCode
	,[strTenderType] AS TenderType
	,[decTradeDiscPerc] AS TradeDiscPerc
	,[decCreditLimitOverride] AS CreditLimitOverride
	,[dteCreditLimitExpiryDate] AS CreditLimitExpiryDate
	,[intPartialBackorders] AS PartialBackorders
	,[bitWithholdTax] AS IsWithholdTax
	,[strWithholdTaxCode] AS WithholdTaxCode
	,[strINVFormDocName] AS INVFormDocName
	,[strORDFormDocName] AS ORDFormDocName
	,[bitMatrixType] AS IsMatrixType
	,[strMatrixType] AS MatrixType
	,[strParentCust] AS ParentCust
	,[strValueBased] AS ValueBased
	,[bitInvWorkflowNew] AS IsInvWorkflowNew
	,[bitInvWorkflowDA] AS IsInvWorkflowDA
	,[bitInvWorkflowSO] AS IsInvWorkflowSO
	,[strWebsite] AS Website
	,[strRSTTerminalSync] AS RSTTerminalSync
	,[strContact2] AS Contact2
	,[strSuburb] AS Suburb
	,[strEmailOso] AS EmailOso
	,[intNAPrintMethod] AS NAPrintMethod
	,[strDelMethodCode] AS DelMethodCode
FROM [tblCustomers]
WHERE (
		([strCustName] = @CustName)
		OR (@CustName IS NULL)
		)
	AND (
		([strStreet1] = @Street1)
		OR (@Street1 IS NULL)
		)
	AND (
		([strStreet2] = @Street2)
		OR (@Street2 IS NULL)
		)
	AND (
		([strCity] = @City)
		OR (@City IS NULL)
		)
	AND (
		([strProvince] = @Province)
		OR (@Province IS NULL)
		)
	AND (
		([strPostal] = @Postal)
		OR (@Postal IS NULL)
		)
	AND (
		([strPhone] = @Phone)
		OR (@Phone IS NULL)
		)
	AND (
		([strCellPhone] = @CellPhone)
		OR (@CellPhone IS NULL)
		)
	AND (
		([strFax] = @Fax)
		OR (@Fax IS NULL)
		)
	AND (
		([strEmail] = @Email)
		OR (@Email IS NULL)
		)
	AND (
		([strVAT] = @VAT)
		OR (@VAT IS NULL)
		)
	AND (
		([strCK] = @CK)
		OR (@CK IS NULL)
		)
	AND (
		([decBalDue] = @BalDue)
		OR (@BalDue IS NULL)
		)
	AND (
		([decYTDPurch] = @YTDPurch)
		OR (@YTDPurch IS NULL)
		)
	AND (
		([decOpenOrders] = @OpenOrders)
		OR (@OpenOrders IS NULL)
		)
	AND (
		([intDelMethod] = @DelMethod)
		OR (@DelMethod IS NULL)
		)
	AND (
		([bitCreditCtrl] = @CreditCtrl)
		OR (@CreditCtrl IS NULL)
		)
	AND (
		([decCreditLimit] = @CreditLimit)
		OR (@CreditLimit IS NULL)
		)
	AND (
		([bitCreditHold] = @CreditHold)
		OR (@CreditHold IS NULL)
		)
	AND (
		([bitInactive] = @Inactive)
		OR (@Inactive IS NULL)
		)
	AND (
		([dteUpdated] = @Updated)
		OR (@Updated IS NULL)
		)
	AND (
		([strContact] = @Contact)
		OR (@Contact IS NULL)
		)
	AND (
		([strField1] = @Field1)
		OR (@Field1 IS NULL)
		)
	AND (
		([strField2] = @Field2)
		OR (@Field2 IS NULL)
		)
	AND (
		([strField3] = @Field3)
		OR (@Field3 IS NULL)
		)
	AND (
		([strField4] = @Field4)
		OR (@Field4 IS NULL)
		)
	AND (
		([strField5] = @Field5)
		OR (@Field5 IS NULL)
		)
	AND (
		([strField6] = @Field6)
		OR (@Field6 IS NULL)
		)
	AND (
		([strTaxCode] = @TaxCode)
		OR (@TaxCode IS NULL)
		)
	AND (
		([dteSince] = @Since)
		OR (@Since IS NULL)
		)
	AND (
		([strNotes] = @Notes)
		OR (@Notes IS NULL)
		)
	AND (
		([strPricelist] = @Pricelist)
		OR (@Pricelist IS NULL)
		)
	AND (
		([uID] = @ID)
		OR (@ID IS NULL)
		)
	AND (
		([decIntRate] = @IntRate)
		OR (@IntRate IS NULL)
		)
	AND (
		([strCustDesc] = @CustDesc)
		OR (@CustDesc IS NULL)
		)
	AND (
		([strCountry] = @Country)
		OR (@Country IS NULL)
		)
	AND (
		([strTerm] = @Term)
		OR (@Term IS NULL)
		)
	AND (
		([intDept] = @Dept)
		OR (@Dept IS NULL)
		)
	AND (
		([strCurrency] = @Currency)
		OR (@Currency IS NULL)
		)
	AND (
		([decBalDueF] = @BalDueF)
		OR (@BalDueF IS NULL)
		)
	AND (
		([decYTDPurchF] = @YTDPurchF)
		OR (@YTDPurchF IS NULL)
		)
	AND (
		([decOpenOrdersF] = @OpenOrdersF)
		OR (@OpenOrdersF IS NULL)
		)
	AND (
		([strField7] = @Field7)
		OR (@Field7 IS NULL)
		)
	AND (
		([strField8] = @Field8)
		OR (@Field8 IS NULL)
		)
	AND (
		([strField9] = @Field9)
		OR (@Field9 IS NULL)
		)
	AND (
		([strField10] = @Field10)
		OR (@Field10 IS NULL)
		)
	AND (
		([strField11] = @Field11)
		OR (@Field11 IS NULL)
		)
	AND (
		([strField12] = @Field12)
		OR (@Field12 IS NULL)
		)
	AND (
		([strEmailInv] = @EmailInv)
		OR (@EmailInv IS NULL)
		)
	AND (
		([strEmailStat] = @EmailStat)
		OR (@EmailStat IS NULL)
		)
	AND (
		([strCustCategory] = @CustCategory)
		OR (@CustCategory IS NULL)
		)
	AND (
		([strCountryCode] = @CountryCode)
		OR (@CountryCode IS NULL)
		)
	AND (
		([strTenderType] = @TenderType)
		OR (@TenderType IS NULL)
		)
	AND (
		([decTradeDiscPerc] = @TradeDiscPerc)
		OR (@TradeDiscPerc IS NULL)
		)
	AND (
		([decCreditLimitOverride] = @CreditLimitOverride)
		OR (@CreditLimitOverride IS NULL)
		)
	AND (
		([dteCreditLimitExpiryDate] = @CreditLimitExpiryDate)
		OR (@CreditLimitExpiryDate IS NULL)
		)
	AND (
		([intPartialBackorders] = @PartialBackorders)
		OR (@PartialBackorders IS NULL)
		)
	AND (
		([bitWithholdTax] = @WithholdTax)
		OR (@WithholdTax IS NULL)
		)
	AND (
		([strWithholdTaxCode] = @WithholdTaxCode)
		OR (@WithholdTaxCode IS NULL)
		)
	AND (
		([strINVFormDocName] = @INVFormDocName)
		OR (@INVFormDocName IS NULL)
		)
	AND (
		([strORDFormDocName] = @ORDFormDocName)
		OR (@ORDFormDocName IS NULL)
		)
	AND (
		([bitMatrixType] = @MatrixType)
		OR (@IsMatrixType IS NULL)
		)
	AND (
		([strMatrixType] = @MatrixType)
		OR (@MatrixType IS NULL)
		)
	AND (
		([strParentCust] = @ParentCust)
		OR (@ParentCust IS NULL)
		)
	AND (
		([strValueBased] = @ValueBased)
		OR (@ValueBased IS NULL)
		)
	AND (
		([bitInvWorkflowNew] = @InvWorkflowNew)
		OR (@InvWorkflowNew IS NULL)
		)
	AND (
		([bitInvWorkflowDA] = @InvWorkflowDA)
		OR (@InvWorkflowDA IS NULL)
		)
	AND (
		([bitInvWorkflowSO] = @InvWorkflowSO)
		OR (@InvWorkflowSO IS NULL)
		)
	AND (
		([strWebsite] = @Website)
		OR (@Website IS NULL)
		)
	AND (
		([strRSTTerminalSync] = @RSTTerminalSync)
		OR (@RSTTerminalSync IS NULL)
		)
	AND (
		([strContact2] = @Contact2)
		OR (@Contact2 IS NULL)
		)
	AND (
		([strSuburb] = @Suburb)
		OR (@Suburb IS NULL)
		)
	AND (
		([strEmailOso] = @EmailOso)
		OR (@EmailOso IS NULL)
		)
	AND (
		([intNAPrintMethod] = @NAPrintMethod)
		OR (@NAPrintMethod IS NULL)
		)
	AND (
		([strDelMethodCode] = @DelMethodCode)
		OR (@DelMethodCode IS NULL)
		)
		AND (strCustCategory IN (SELECT tblCustomerCat.strCustCategory 
									 FROM tblCustomerCat 
									 LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory 
									 WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) 
												   FROM tblCustomerCatSec 
												   WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 
											OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) 
														FROM tblCustomerCatSec 
														WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 
												AND tblCustomerCatSec.strUserName = @UserName)))
END
GO
/****** Object:  StoredProcedure [dbo].[CustomerTradingTimesSearch]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/******************* End  [DeleteCustomerTradingTimes]*******************/

/******************* Start  [CustomerTradingTimesSearch] ********************/

CREATE PROCEDURE [dbo].[CustomerTradingTimesSearch]
	-- Add the parameters for the stored procedure here
	@CustName NVARCHAR(50)
	,@EnqType NVARCHAR(50)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	-- Insert statements for procedure here
	SELECT lngCustEnqId AS CustEnqId,
	strCustName AS CustName,
	strDay AS [Day],
	dteFromTime AS FromTime
	,dteToTime AS ToTime
	,strEnqType AS EnqType
	,bitEnabled AS IsEnabled
	FROM tblCustomerTradingTimes
	WHERE strCustName = @CustName
		AND strEnqType = @EnqType
		AND bitEnabled = 1
END
GO
/****** Object:  StoredProcedure [dbo].[CustomerTransactionInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetPenaltySum] ***********/

/*********** Start [CustomerTransactionInsert] ***********/
CREATE PROCEDURE [dbo].[CustomerTransactionInsert] (
	@CustomerTransactionData AS CustomerTransactionTableType READONLY
	,@CustomerTransactionDTData AS CustomerTransactionDTTableType READONLY
	)
AS
BEGIN
	IF (SELECT COUNT(*) FROM @CustomerTransactionData) > 0
	BEGIN
		INSERT INTO [dbo].[tblCustTrans] (
			[lngCustTrID]
			,[strCustName]
			,[dteSystemDate]
			,[dteJournalDate]
			,[strUserName]
			,[strInvDocID]
			,[strInvDepNumber]
			,[strSoNumber]
			,[intTransType]
			,[decInvAmount]
			,[decInvAmountF]
			,[strCurrency]
			,[bitIsForeign]
			,[decExchange]
			,[bitDocReRated]
			,[dteReRated]
			,[decReRateCumltveValue]
			,[bitSettled]
			,[decDiscAvail]
			,[decDiscAvailF]
			,[dteDiscExpires]
			,[dteDueDate]
			,[strJEDocID]
			,[strOrdDocID]
			)
		SELECT CustTrID
			,CustName
			,SystemDate
			,JournalDate
			,UserName
			,InvDocID
			,InvDepNumber
			,SoNumber
			,TransType
			,InvAmount
			,InvAmountF
			,Currency
			,IsForeign
			,Exchange
			,IsDocReRated
			,ReRated
			,ReRateCumltveValue
			,bitSettled
			,DiscAvail
			,DiscAvailF
			,DiscExpires
			,DueDate
			,JEDocID
			,OrdDocID
		FROM @CustomerTransactionData
	END

	IF (SELECT COUNT(*) FROM @CustomerTransactionDTData) > 0
	BEGIN
		INSERT INTO [dbo].[tblCustTransDT] (
			[dteJournalDate]
			,[lngCustTrID]
			,[lngCustPayID]
			,[decAmount]
			,[intTransType]
			,[decAmtOwingAtTime]
			,[bitReversed]
			,[dteIntDate]
			,[decAmountF]
			,[decAmtOwingAtTimeF]
			,[bitIsForeign]
			)
		SELECT JournalDate
			,CustTrID
			,CustPayID
			,Amount
			,TransType
			,AmtOwingAtTime
			,IsReversed
			,IntDate
			,AmountF
			,AmtOwingAtTimeF
			,IsForeign
		FROM @CustomerTransactionDTData
	END
END
GO
/****** Object:  StoredProcedure [dbo].[CustomerTransDelete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
---------------------------------------------------------------------
CREATE PROCEDURE [dbo].[CustomerTransDelete]
(
 @DocNumber NVARCHAR(50)
)
AS
BEGIN
	DELETE FROM tblCustTrans WHERE strOrdDocID  = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[CustomerTransDTInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End[CustomerTransInsert] ***********/

/*********** Start[CustomerTransDTInsert] ***********/
CREATE PROCEDURE [dbo].[CustomerTransDTInsert]
@JournalDate AS SMALLDATETIME,
@CustTrID AS BIGINT,
@CustPayID AS BIGINT,
@Amount AS MONEY,
@AmtOwingAtTime AS MONEY,
@AmountF AS MONEY,
@AmtOwingAtTimeF AS MONEY,
@IsForeign AS BIT,
@TransType AS TINYINT,
@IsReversed AS BIT
AS
BEGIN
	INSERT INTO tblCustTransDT (
	dteJournalDate
	,lngCustTrID
	,lngCustPayID
	,decAmount
	,intTransType
	,decAmtOwingAtTime
	,bitReversed
	,dteIntDate
	,decAmountF
	,decAmtOwingAtTimeF
	,bitIsForeign
	)
VALUES (
	@JournalDate
	,@CustTrID
	,@CustPayID
	,@Amount
	,@TransType
	,@AmtOwingAtTime
	,@IsReversed
	,NULL
	,@AmountF
	,@AmtOwingAtTimeF
	,@IsForeign
	)
END
GO
/****** Object:  StoredProcedure [dbo].[CustomerTransDTUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********************Start[CustomerTransDTUpdate]*****************************************/

CREATE PROCEDURE [dbo].[CustomerTransDTUpdate] @JournalDate DATETIME
	,@decInvAmount DECIMAL
	,@SQdecInvAmountF DECIMAL
	,@CustTrID BIGINT
	,@intTransType INT
AS
BEGIN
	UPDATE tblCustTransDT
	SET dteJournalDate = @JournalDate
		,decAmount = @decInvAmount
		,decAmtOwingAtTime = @decInvAmount
		,decAmountF = @SQdecInvAmountF
		,decAmtOwingAtTimeF = @SQdecInvAmountF
	WHERE lngCustTrID = @CustTrID
		AND intTransType = @intTransType
		AND lngCustPayID IS NULL
END
GO

/****** Object:  StoredProcedure [dbo].[CustomerTransInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [SMSMessageInsert] ***********/

/*********** Start [CustomerTransInsert] ***********/
CREATE PROCEDURE [dbo].[CustomerTransInsert]
	@CustTrID AS BIGINT,
	@CustID AS NVARCHAR(50),
	@SystemDate AS SMALLDATETIME,
	@JournalDate AS SMALLDATETIME,
	@UserName AS NVARCHAR(20),
	@InvDocID AS NVARCHAR(50),
	@InvDepartment AS NVARCHAR(50),
	@SoNumber AS NVARCHAR(50),
	@TransType AS TINYINT,
	@InvAmount AS MONEY,
	@InvAmountF AS MONEY,
	@Currency AS NVARCHAR(3),
	@IsForeign AS BIT,
	@Exchange AS DECIMAL,
	@IsDocReRated AS BIT,
	@ReRated AS DATETIME,
	@ReRateCumltveValue AS MONEY,
	@IsSettled AS BIT,
	@DiscAvail AS MONEY,
	@DiscAvailF AS MONEY,
	@DiscExpires AS DATETIME,
	@DueDate AS DATETIME,
	@JEDocID AS NVARCHAR(50),
	@OrdDocID AS NVARCHAR(50)
AS
BEGIN
	INSERT INTO tblCustTrans
			([lngCustTrID]
           ,[strCustName]
           ,[dteSystemDate]
           ,[dteJournalDate]
           ,[strUserName]
           ,[strInvDocID]
           ,[strInvDepNumber]
           ,[strSoNumber]
           ,[intTransType]
           ,[decInvAmount]
           ,[decInvAmountF]
           ,[strCurrency]
           ,[bitIsForeign]
           ,[decExchange]
           ,[bitDocReRated]
           ,[dteReRated]
           ,[decReRateCumltveValue]
           ,[bitSettled]
           ,[decDiscAvail]
           ,[decDiscAvailF]
           ,[dteDiscExpires]
           ,[dteDueDate]
           ,[strJEDocID]
           ,[strOrdDocID])
	VALUES (
			 @CustTrID
			,@CustID
			,@SystemDate
			,@JournalDate
			,@UserName
			,@InvDocID
			,@InvDepartment
			,@SoNumber
			,@TransType
			,@InvAmount
			,@InvAmountF
			,@Currency
			,@IsForeign
			,@Exchange
			,@IsDocReRated
			,@ReRated
			,@ReRateCumltveValue
			,@IsSettled
			,@DiscAvail
			,@DiscAvailF
			,@DiscExpires
			,@DueDate
			,@JEDocID
			,@OrdDocID
			)
END
GO
/****** Object:  StoredProcedure [dbo].[CustPayInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [CustomerTransactionInsert] ***********/

/*********** Start [CustPayInsert] ***********/
CREATE PROCEDURE [dbo].[CustPayInsert] (
	@CustPayID BIGINT
	,@SystemDate SMALLDATETIME
	,@DocumentDate SMALLDATETIME
	,@CurrentUser NVARCHAR(20)
	,@jourID BIGINT
	,@CustNumber NVARCHAR(50)
	,@SourceDoc NVARCHAR(100)
	,@Account NVARCHAR(30)
	,@Amount MONEY
	,@Reversed BIT
	,@Reversal BIT
	,@Comment NVARCHAR(200)
	,@PayBy INT
	,@Deposit MONEY
	,@Dept INT
	,@Currency NVARCHAR(3)
	,@IsForeign BIT
	,@Exchange DECIMAL(18, 6)
	,@AmountF MONEY
	,@DepositF MONEY
	,@FromInvPaymt BIT
	,@ForeignBank BIT
	,@BankExchange DECIMAL(18, 6)
	,@BankCurrency NVARCHAR(3)
	,@BankAmount MONEY
	,@BankAmountF MONEY
	,@WHTaxCode NVARCHAR(2)
	,@WHPer MONEY
	,@WHAmt MONEY
	,@WHAmtF MONEY
	,@PaidBy NVARCHAR(20)
	,@IsPrinted BIT
	)
AS
BEGIN
	INSERT INTO [dbo].[tblCustPay] (
		[lngCustPayID]
		,[dteSystemDate]
		,[dteJournalDate]
		,[strUserName]
		,[lngJourID]
		,[strCustName]
		,[strSource]
		,[intBankAcct]
		,[decAmount]
		,[bitReversed]
		,[bitReversal]
		,[strComment]
		,[intPayBy]
		,[decDeposit]
		,[intDept]
		,[strCurrency]
		,[bitIsForeign]
		,[decExchange]
		,[decAmountF]
		,[decDepositF]
		,[bitFromInvPaymt]
		,[blnForeignBank]
		,[decBankExchange]
		,[strBankCurrency]
		,[decBankAmount]
		,[decBankAmountF]
		,[strWHTaxCode]
		,[decWHPerc]
		,[decWHAmt]
		,[decWHAmtF]
		,[strPaidBy]
		,[bitPrinted]
		)
	VALUES (
		@CustPayID
		,@SystemDate
		,@DocumentDate
		,@CurrentUser
		,@jourID
		,@CustNumber
		,@SourceDoc
		,@Account
		,@Amount
		,@Reversed
		,@Reversal
		,@Comment
		,@PayBy
		,@Deposit
		,@Dept
		,@Currency
		,@IsForeign
		,@Exchange
		,@AmountF
		,@DepositF
		,@FromInvPaymt
		,@ForeignBank
		,@BankExchange
		,@BankCurrency
		,@BankAmount
		,@BankAmountF
		,@WHTaxCode
		,@WHPer
		,@WHAmt
		,@WHAmtF
		,@PaidBy
		,@IsPrinted
		)

	UPDATE tblJournal
	SET strSource = @SourceDoc
	WHERE lngJourID = @jourID
END
GO
/****** Object:  StoredProcedure [dbo].[CustRptInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[CustRptInsert]

@strName NVARCHAR(35),
@strDesc NVARCHAR(50),
@intModule TINYINT,
@strPath NVARCHAR(500)
AS
BEGIN
     if @intModule = 10
	 begin
	 SET @intModule = 14 
	 END
	Insert into tblCustRpt (strName, strDesc, intModule, strPath) VALUES (@strName, @strDesc, @intModule, @strPath)
END
GO
/****** Object:  StoredProcedure [dbo].[CustRptUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[CustRptUpdate]
	@strName nvarchar(70),
	@strDesc nvarchar(100),
	@intModule int,
	@strPath nvarchar(1000),
	@strOldName nvarchar(70)
AS
BEGIN
	
UPDATE [tblCustRpt]
   SET [strName] = @strName
      ,[strDesc] = @strDesc
      ,[intModule] = @intModule
	  ,[strPath] = @strPath
 WHERE strName = @strOldName
END
GO
/****** Object:  StoredProcedure [dbo].[CustTransDTInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [CustPayInsert] ***********/

/*********** Start [CustTransDTInsert] ***********/
CREATE PROCEDURE [dbo].[CustTransDTInsert] (
	@CustTrID BIGINT
	,@CustID NVARCHAR(50)
	,@SystemDate SMALLDATETIME
	,@JournalDate SMALLDATETIME
	,@UserName NVARCHAR(20)
	,@InvDocID NVARCHAR(50)
	,@InvDepNumber NVARCHAR(50)
	,@SoNumber NVARCHAR(50)
	,@TransType TINYINT
	,@InvAmount MONEY
	,@InvAmountF MONEY
	,@Currency NVARCHAR(3)
	,@IsForeign BIT
	,@Exchange DECIMAL(18, 6)
	,@AmtOwingAtTime MONEY
	,@AmountF MONEY
	,@AmtOwingAtTimeF MONEY
	,@DocReRated BIT
	,@ReRated DATETIME
	,@ReRateCumltveValue MONEY
	,@Settled BIT
	,@DiscAvail MONEY
	,@DiscAvailF MONEY
	,@DiscExpires DATETIME
	,@DueDate DATETIME
	,@JEDocID NVARCHAR(50)
	,@OrdDocID NVARCHAR(50)
	,@CustPayID BIGINT
	,@TransTypeDT TINYINT
	,@Reversed BIT
	)
AS
BEGIN
	INSERT INTO [dbo].[tblCustTrans] (
		[lngCustTrID]
		,[strCustName]
		,[dteSystemDate]
		,[dteJournalDate]
		,[strUserName]
		,[strInvDocID]
		,[strInvDepNumber]
		,[strSoNumber]
		,[intTransType]
		,[decInvAmount]
		,[decInvAmountF]
		,[strCurrency]
		,[bitIsForeign]
		,[decExchange]
		,[bitDocReRated]
		,[dteReRated]
		,[decReRateCumltveValue]
		,[bitSettled]
		,[decDiscAvail]
		,[decDiscAvailF]
		,[dteDiscExpires]
		,[dteDueDate]
		,[strJEDocID]
		,[strOrdDocID]
		)
	VALUES (
		@CustTrID
		,@CustID
		,@SystemDate
		,@JournalDate
		,@UserName
		,@InvDocID
		,@InvDepNumber
		,@SoNumber
		,@TransType
		,@InvAmount
		,@InvAmountF
		,@Currency
		,@IsForeign
		,@Exchange
		,@DocReRated
		,@ReRated
		,@ReRateCumltveValue
		,@Settled
		,@DiscAvail
		,@DiscAvailF
		,@DiscExpires
		,@DueDate
		,@JEDocID
		,@OrdDocID
		)

	INSERT INTO [dbo].[tblCustTransDT] (
		[dteJournalDate]
		,[lngCustTrID]
		,[lngCustPayID]
		,[decAmount]
		,[intTransType]
		,[decAmtOwingAtTime]
		,[bitReversed]
		,[dteIntDate]
		,[decAmountF]
		,[decAmtOwingAtTimeF]
		,[bitIsForeign]
		)
	VALUES (
		@JournalDate
		,@CustTrID
		,@CustPayID
		,@InvAmount
		,@TransTypeDT
		,@AmtOwingAtTime
		,@Reversed
		,NULL
		,@AmountF
		,@AmtOwingAtTimeF
		,@IsForeign
		)
END
GO
/****** Object:  StoredProcedure [dbo].[CustTransDTJournalDateUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[CustTransDTJournalDateUpdate]    Script Date: 04-02-2020 06:39:00 AM ******/
CREATE PROCEDURE [dbo].[CustTransDTJournalDateUpdate]
(
	@InvDocID VARCHAR(50),
	@JournalDate datetime
)
AS
BEGIN
	UPDATE tblCustTransDT SET dteJournalDate=@JournalDate WHERE lngCustTrID = (SELECT lngCustTrID FROM tblCustTrans WHERE strInvDocID = @InvDocID)
END
GO
/****** Object:  StoredProcedure [dbo].[CustTransDTUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InvoiceDocParcelsDimensionsInsert] ***********/

/*********** Start [CustTransDTUpdate] ***********/
CREATE PROCEDURE [dbo].[CustTransDTUpdate]
(
	@CustomerTransData CustomerTransactionDTTableType READONLY
)
AS
BEGIN
	UPDATE tblCustTransDT
	SET decAmount = c.Amount
		,decAmtOwingAtTime = c.AmtOwingAtTime
		,decAmountF = c.AmountF
		,decAmtOwingAtTimeF = c.AmtOwingAtTimeF
	FROM @CustomerTransData c
	WHERE lngID = c.ID
END
GO
/****** Object:  StoredProcedure [dbo].[CustTransDTUpdateAdjustingSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[CustTransDTUpdateAdjustingSales]    Script Date: 07-11-2019 10:38:47 ******/
CREATE PROCEDURE [dbo].[CustTransDTUpdateAdjustingSales] (
	@CustTrID BIGINT
	,@TransType INT
	,@JournalDate DATETIME
	,@Amount MONEY
	,@AmtOwingAtTime MONEY
	,@AmountF MONEY
	,@AmtOwingAtTimeF MONEY
	)
AS
BEGIN
	UPDATE tblCustTransDT
	SET dteJournalDate = @JournalDate
		,decAmount = @Amount
		,decAmtOwingAtTime = @AmtOwingAtTime
		,decAmountF = @AmountF
		,decAmtOwingAtTimeF = @AmtOwingAtTimeF
	WHERE lngCustTrID = @CustTrID
		AND intTransType = @TransType
		AND lngCustPayID IS NULL
END
GO
/****** Object:  StoredProcedure [dbo].[CustTransDTUpdatePOS]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[CustTransDTUpdatePOS]
(  
 @CustomerTransData CustomerTransactionDTPOSTableType READONLY  
)  
AS  
BEGIN  
 UPDATE tblCustTransDT  
 SET decAmount = c.Amount  
  ,decAmtOwingAtTime = c.AmtOwingAtTime  
  ,decAmountF = c.AmountF  
  ,decAmtOwingAtTimeF = c.AmtOwingAtTimeF  
 FROM @CustomerTransData c  
 WHERE lngID = c.ID  
END  
GO
/****** Object:  StoredProcedure [dbo].[CustTransUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCustomerTransactionData] ***********/

CREATE PROCEDURE [dbo].[CustTransUpdate]
(
	@OrdDocID VARCHAR(50),
	@InvDocID VARCHAR(50),
	@InvDepNumber VARCHAR(50),
	@SoNumber VARCHAR(50),
	@InvAmount MONEY,
	@InvAmountF MONEY,
	@IsNeedToSettle BIT,
	@IsSettled BIT,
	@JournalDate datetime = null
)
AS
BEGIN
	UPDATE tblCustTrans
	SET strInvDocID = @InvDocID
		,strInvDepNumber = @InvDepNumber
		,strSoNumber = @SoNumber
		,decInvAmount = @InvAmount
		,decInvAmountF = @InvAmountF
		,bitSettled = @IsNeedToSettle
		,dteJournalDate = Isnull(@JournalDate,dteJournalDate)
	WHERE strOrdDocID = @OrdDocID
END
GO
/****** Object:  StoredProcedure [dbo].[CustTransUpdateAdjustingSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[CustTransUpdateAdjustingSales]    Script Date: 07-11-2019 10:38:47 ******/
CREATE PROCEDURE [dbo].[CustTransUpdateAdjustingSales] (
	@CustTrID BIGINT
	,@UserName VARCHAR(50)
	,@InvAmount MONEY
	,@InvAmountF MONEY
	,@JournalDate DATETIME
	,@Exchange MONEY
	,@CustName nvarchar(Max)
	)
AS
BEGIN
	UPDATE tblCustTrans
	SET dteJournalDate = @JournalDate
		,strUserName = @UserName
		,decInvAmount = @InvAmount
		,decInvAmountF = @InvAmountF
		,decExchange = @Exchange
		,strCustName = @CustName
	WHERE lngCustTrID = @CustTrID
END
GO
/****** Object:  StoredProcedure [dbo].[CustTransUpdateSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********************End [SaveDocumentData]*****************************************/

/*********************Start [CustTransUpdateSales]*****************************************/

CREATE PROCEDURE [dbo].[CustTransUpdateSales]
(
	@OrdDocID VARCHAR(50),
	@InvDocID VARCHAR(50),
	@InvDepNumber VARCHAR(50),
	--@SoNumber VARCHAR(50),
	@InvAmount MONEY,
	@InvAmountF MONEY,
	@IsNeedToSettle BIT,
	@IsSettled BIT,
	@JournalDate DATETIME='',
	@DueDate DATETIME='',
	@IsInvoiceConvert Bit
)
AS
BEGIN
	UPDATE tblCustTrans
	SET strInvDocID = @InvDocID
		,strInvDepNumber = @InvDepNumber
		--,strSoNumber = @SoNumber
		,decInvAmount = @InvAmount
		,decInvAmountF = @InvAmountF
		,bitSettled = CASE WHEN (@IsNeedToSettle = 1) THEN @IsSettled ELSE bitSettled END		
		,dteJournalDate = CASE WHEN (@IsInvoiceConvert = 0) THEN @JournalDate END
		,dteDueDate = CASE WHEN (@IsInvoiceConvert = 0) THEN @DueDate END
	WHERE strOrdDocID = @OrdDocID AND ISNULL(strInvDocID, '') = ''
END
GO
/****** Object:  StoredProcedure [dbo].[dashBusinessPerformance]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/***********************End [GetJobTemplatesFromServiceableItem]********************************************/

/*****************Start [dashBusinessPerformance]*****************************/

CREATE Procedure [dbo].[dashBusinessPerformance]
	@BusinessFilter as Nvarchar(30)=Null,
	@BusinessDateFilter as Nvarchar(30)=Null,
	@BusinessStartDate AS datetime = NULL,
	@BusinessEndDate AS datetime = NULL,
	@intCostOfGoodsSold as int=35,
	@intIncomeTaxExpense as int=43,
	@intInterestExpense as int=42
AS
BEGIN

	 
	 if(@BusinessFilter='Daily' and @BusinessDateFilter='Actual')
	 begin
	
			;With table1 as	(
		
					SELECT 'Profit' as Names, DATEPART(yyyy, tblJournal.dteJournalDate) as Year
								,DATEPART(m, tblJournal.dteJournalDate) AS Month
								,ISNULL(SUM(tblJournalEnt.decCredits), 0) - ISNULL(SUM(tblJournalEnt.decDebits), 0) AS Profit
								,cast(tblJournal.dteJournalDate as Date) AS DATE
								,6 as ord
							FROM tblJournal
							INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
							WHERE tblJournalEnt.intGLNumber IN (
									SELECT intGLNumber
									FROM tblAccounts
									WHERE (
											(intAccType = 4)
											OR (intAccType = 5)
											)
									)
								AND tblJournal.dteJournalDate BETWEEN @BusinessStartDate
									AND @BusinessEndDate
							GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
								,DATEPART(m, tblJournal.dteJournalDate)
								,tblJournal.dteJournalDate
	
					Union All

					SELECT 'Revenue'as Names,DATEPART(yyyy, tblJournal.dteJournalDate) AS Year
								,DATEPART(m, tblJournal.dteJournalDate) AS Month
								,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Revenue
								,cast(tblJournal.dteJournalDate as Date) AS DATE
								,1 as ord
							FROM tblJournal
							INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
							WHERE tblJournalEnt.intGLNumber IN (
									SELECT intGLNumber
									FROM tblAccounts
									WHERE (intAccType = 4)
									)
										AND tblJournal.dteJournalDate BETWEEN @BusinessStartDate
									AND @BusinessEndDate
							GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
								,DATEPART(m, tblJournal.dteJournalDate)
								,tblJournal.dteJournalDate
								
					union All

						SELECT 'Cost Of Sales' as Names, DATEPART(yyyy, tblJournal.dteJournalDate)
									,DATEPART(m, tblJournal.dteJournalDate) AS Month
									,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
									,cast(tblJournal.dteJournalDate as Date) AS DATE
									,2 as ord
								FROM tblJournal
								INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
								WHERE tblJournalEnt.intGLNumber IN (
										SELECT intGLNumber
										FROM tblAccounts
										WHERE (intAccType = 5)
											AND (intAccClass = @intCostOfGoodsSold)
										)
										AND tblJournal.dteJournalDate BETWEEN @BusinessStartDate
									AND @BusinessEndDate
								GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
									,DATEPART(m, tblJournal.dteJournalDate)
									,tblJournal.dteJournalDate
					Union All

								SELECT 'Expenses' as Names,DATEPART(yyyy, tblJournal.dteJournalDate)
										,DATEPART(m, tblJournal.dteJournalDate) AS Month
										,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
										,cast(tblJournal.dteJournalDate as Date) AS DATE
										,3 as ord
									FROM tblJournal
									INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
									WHERE tblJournalEnt.intGLNumber IN (
											SELECT intGLNumber
											FROM tblAccounts
											WHERE (intAccType = 5)
												AND (intAccClass <> @intCostOfGoodsSold)
												AND (intAccClass <> @intIncomeTaxExpense)
											)
											AND tblJournal.dteJournalDate BETWEEN @BusinessStartDate
									AND @BusinessEndDate
									GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
										,DATEPART(m, tblJournal.dteJournalDate)
										,tblJournal.dteJournalDate
						Union All
						
							SELECT 'Tax' as Names, DATEPART(yyyy, tblJournal.dteJournalDate)
								,DATEPART(m, tblJournal.dteJournalDate) AS Month
								,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
								,cast(tblJournal.dteJournalDate as Date) AS DATE
								,5 as ord
							FROM tblJournal
							INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
							WHERE tblJournalEnt.intGLNumber IN (
									SELECT intGLNumber
									FROM tblAccounts
									WHERE (intAccType = 5)
										AND (intAccClass = @intIncomeTaxExpense)
									)
									AND tblJournal.dteJournalDate BETWEEN @BusinessStartDate
									AND @BusinessEndDate
							GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
								,DATEPART(m, tblJournal.dteJournalDate)
								,tblJournal.dteJournalDate
								
						Union All
						
						
							SELECT 'Interest' as Names, DATEPART(yyyy, tblJournal.dteJournalDate)
									,DATEPART(m, tblJournal.dteJournalDate) AS Month
									,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
									,cast(tblJournal.dteJournalDate as Date) AS DATE
									,4 as ord
								FROM tblJournal
								INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
								WHERE tblJournalEnt.intGLNumber IN (
										SELECT intGLNumber
										FROM tblAccounts
										WHERE (intAccType = 5)
											AND (intAccClass = @intInterestExpense)
										)
										AND tblJournal.dteJournalDate BETWEEN @BusinessStartDate
									AND @BusinessEndDate
								GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
									,DATEPART(m, tblJournal.dteJournalDate)	
									,tblJournal.dteJournalDate
					
								)
							
								
					Select Names as [Names],Year as [Year],Month as [Month],Profit as [Profit],Date as [Date],ord from table1 order by ord,Year,Month,Date
												
	 end
	 else if (@BusinessFilter='Daily' and @BusinessDateFilter='Cumulative')
	 begin

	 	    ;With table1 as	(
		
					SELECT 'Profit' as Names, DATEPART(yyyy, tblJournal.dteJournalDate) as Year
								,DATEPART(m, tblJournal.dteJournalDate) AS Month
								,ISNULL(SUM(tblJournalEnt.decCredits), 0) - ISNULL(SUM(tblJournalEnt.decDebits), 0) AS Profit
								,cast(tblJournal.dteJournalDate as Date) AS DATE
								,6 as ord
							FROM tblJournal
							INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
							WHERE tblJournalEnt.intGLNumber IN (
									SELECT intGLNumber
									FROM tblAccounts
									WHERE (
											(intAccType = 4)
											OR (intAccType = 5)
											)
									)
								AND tblJournal.dteJournalDate BETWEEN @BusinessStartDate
									AND @BusinessEndDate
							GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
								,DATEPART(m, tblJournal.dteJournalDate)
								,tblJournal.dteJournalDate
	
					Union All

					SELECT 'Revenue'as Names,DATEPART(yyyy, tblJournal.dteJournalDate) AS Year
								,DATEPART(m, tblJournal.dteJournalDate) AS Month
								,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Revenue
								,cast(tblJournal.dteJournalDate as Date) AS DATE
								,1 as ord
							FROM tblJournal
							INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
							WHERE tblJournalEnt.intGLNumber IN (
									SELECT intGLNumber
									FROM tblAccounts
									WHERE (intAccType = 4)
									)
										AND tblJournal.dteJournalDate BETWEEN @BusinessStartDate
									AND @BusinessEndDate
							GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
								,DATEPART(m, tblJournal.dteJournalDate)
								,tblJournal.dteJournalDate
								
					union All

						SELECT 'Cost Of Sales' as Names, DATEPART(yyyy, tblJournal.dteJournalDate)
									,DATEPART(m, tblJournal.dteJournalDate) AS Month
									,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
									,cast(tblJournal.dteJournalDate as Date) AS DATE
									,2 as ord
								FROM tblJournal
								INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
								WHERE tblJournalEnt.intGLNumber IN (
										SELECT intGLNumber
										FROM tblAccounts
										WHERE (intAccType = 5)
											AND (intAccClass = @intCostOfGoodsSold)
										)
										AND tblJournal.dteJournalDate BETWEEN @BusinessStartDate
									AND @BusinessEndDate
								GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
									,DATEPART(m, tblJournal.dteJournalDate)
									,tblJournal.dteJournalDate
					Union All

								SELECT 'Expenses' as Names,DATEPART(yyyy, tblJournal.dteJournalDate)
										,DATEPART(m, tblJournal.dteJournalDate) AS Month
										,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
										,cast(tblJournal.dteJournalDate as Date) AS DATE
										,3 as ord
									FROM tblJournal
									INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
									WHERE tblJournalEnt.intGLNumber IN (
											SELECT intGLNumber
											FROM tblAccounts
											WHERE (intAccType = 5)
												AND (intAccClass <> @intCostOfGoodsSold)
												AND (intAccClass <> @intIncomeTaxExpense)
											)
											AND tblJournal.dteJournalDate BETWEEN @BusinessStartDate
									AND @BusinessEndDate
									GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
										,DATEPART(m, tblJournal.dteJournalDate)
										,tblJournal.dteJournalDate
						Union All
						
							SELECT 'Tax' as Names, DATEPART(yyyy, tblJournal.dteJournalDate)
								,DATEPART(m, tblJournal.dteJournalDate) AS Month
								,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
								,cast(tblJournal.dteJournalDate as Date) AS DATE
								,5 as ord
							FROM tblJournal
							INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
							WHERE tblJournalEnt.intGLNumber IN (
									SELECT intGLNumber
									FROM tblAccounts
									WHERE (intAccType = 5)
										AND (intAccClass = @intIncomeTaxExpense)
									)
									AND tblJournal.dteJournalDate BETWEEN @BusinessStartDate
									AND @BusinessEndDate
							GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
								,DATEPART(m, tblJournal.dteJournalDate)
								,tblJournal.dteJournalDate
								
						Union All
						
						
							SELECT 'Interest' as Names, DATEPART(yyyy, tblJournal.dteJournalDate)
									,DATEPART(m, tblJournal.dteJournalDate) AS Month
									,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
									,cast(tblJournal.dteJournalDate as Date) AS DATE
									,4 as ord
								FROM tblJournal
								INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
								WHERE tblJournalEnt.intGLNumber IN (
										SELECT intGLNumber
										FROM tblAccounts
										WHERE (intAccType = 5)
											AND (intAccClass = @intInterestExpense)
										)
										AND tblJournal.dteJournalDate BETWEEN @BusinessStartDate
									AND @BusinessEndDate
								GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
									,DATEPART(m, tblJournal.dteJournalDate)	
									,tblJournal.dteJournalDate	
								)
								
								Select 
									   t1.Names,
									   t1.DATE as Date,
									   t1.Month,
									   t1.Profit as Sum,
									   t1.Year,
									   sum(t2.Profit) as Profit,
									   t1.ord
									   from table1 t1 inner join table1 t2 on t1.DATE>=t2.DATE
																			and t1.Names=t2.Names 
								group by 
									  t1.DATE,
									   t1.Month,
									   t1.Names,
									   t1.Profit,
									   t1.Year,
									   t1.ord
								order by t1.ord,t1.DATE

	 end
	 else if(@BusinessFilter='Monthly' and @BusinessDateFilter='Actual')
	 begin
			;With table1 as	(
		
		SELECT 'Profit' as Names, DATEPART(yyyy, tblJournal.dteJournalDate) as Year
						,DATEPART(m, tblJournal.dteJournalDate) AS Month
						,ISNULL(SUM(tblJournalEnt.decCredits), 0) - ISNULL(SUM(tblJournalEnt.decDebits), 0) AS Profit
						,cast(DATEFROMPARTS(DATEPART(yyyy, tblJournal.dteJournalDate),DATEPART(m, tblJournal.dteJournalDate),1)as Date) as Date
						,6 as ord
					FROM tblJournal
					INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
					WHERE tblJournalEnt.intGLNumber IN (
							SELECT intGLNumber
							FROM tblAccounts
							WHERE (
									(intAccType = 4)
									OR (intAccType = 5)
									)
							)
					GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate)
	
		Union All

		SELECT 'Revenue'as Names,DATEPART(yyyy, tblJournal.dteJournalDate) AS Year
					,DATEPART(m, tblJournal.dteJournalDate) AS Month
					,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Revenue
					,cast(DATEFROMPARTS(DATEPART(yyyy, tblJournal.dteJournalDate),DATEPART(m, tblJournal.dteJournalDate),1)as Date) as Date
					,1 as ord
				FROM tblJournal
				INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
				WHERE tblJournalEnt.intGLNumber IN (
						SELECT intGLNumber
						FROM tblAccounts
						WHERE (intAccType = 4)
						)
				GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
					
		union All

			SELECT 'Cost Of Sales' as Names, DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate) AS Month
						,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
						,cast(DATEFROMPARTS(DATEPART(yyyy, tblJournal.dteJournalDate),DATEPART(m, tblJournal.dteJournalDate),1)as Date) as Date
						,2 as ord
					FROM tblJournal
					INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
					WHERE tblJournalEnt.intGLNumber IN (
							SELECT intGLNumber
							FROM tblAccounts
							WHERE (intAccType = 5)
								AND (intAccClass = @intCostOfGoodsSold)
							)
					GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate)
		Union All

					SELECT 'Expenses' as Names,DATEPART(yyyy, tblJournal.dteJournalDate)
							,DATEPART(m, tblJournal.dteJournalDate) AS Month
							,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
							,cast(DATEFROMPARTS(DATEPART(yyyy, tblJournal.dteJournalDate),DATEPART(m, tblJournal.dteJournalDate),1)as Date) as Date
							,3 as ord
						FROM tblJournal
						INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
						WHERE tblJournalEnt.intGLNumber IN (
								SELECT intGLNumber
								FROM tblAccounts
								WHERE (intAccType = 5)
									AND (intAccClass <> @intCostOfGoodsSold)
									AND (intAccClass <> @intIncomeTaxExpense)
								)
						GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
							,DATEPART(m, tblJournal.dteJournalDate)
			Union All
			
				SELECT 'Tax' as Names, DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate) AS Month
					,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
					,cast(DATEFROMPARTS(DATEPART(yyyy, tblJournal.dteJournalDate),DATEPART(m, tblJournal.dteJournalDate),1)as Date) as Date
					,5 as ord
				FROM tblJournal
				INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
				WHERE tblJournalEnt.intGLNumber IN (
						SELECT intGLNumber
						FROM tblAccounts
						WHERE (intAccType = 5)
							AND (intAccClass = @intIncomeTaxExpense)
						)
				GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
					
			Union All
			
			
				SELECT 'Interest' as Names, DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate) AS Month
						,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
						,cast(DATEFROMPARTS(DATEPART(yyyy, tblJournal.dteJournalDate),DATEPART(m, tblJournal.dteJournalDate),1)as Date) as Date
						,4 as ord
					FROM tblJournal
					INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
					WHERE tblJournalEnt.intGLNumber IN (
							SELECT intGLNumber
							FROM tblAccounts
							WHERE (intAccType = 5)
								AND (intAccClass = @intInterestExpense)
							)
					GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate)	
			
					) 
					Select Names as [Names],Year as [Year],Month as [Month],Profit as [Profit],Date as [Date],  ord from table1 order by ord,Year,Month,Date
	 end
	 else if(@BusinessFilter='Monthly' and @BusinessDateFilter='Cumulative')
	 begin
			;With table1 as	(
		
		SELECT 'Profit' as Names, DATEPART(yyyy, tblJournal.dteJournalDate) as Year
						,DATEPART(m, tblJournal.dteJournalDate) AS Month
						,ISNULL(SUM(tblJournalEnt.decCredits), 0) - ISNULL(SUM(tblJournalEnt.decDebits), 0) AS Profit
						,cast(DATEFROMPARTS(DATEPART(yyyy, tblJournal.dteJournalDate),DATEPART(m, tblJournal.dteJournalDate),1)as Date) as Date
						,6 as ord
					FROM tblJournal
					INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
					WHERE tblJournalEnt.intGLNumber IN (
							SELECT intGLNumber
							FROM tblAccounts
							WHERE (
									(intAccType = 4)
									OR (intAccType = 5)
									)
							)
					GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate)
	
		Union All

		SELECT 'Revenue'as Names,DATEPART(yyyy, tblJournal.dteJournalDate) AS Year
					,DATEPART(m, tblJournal.dteJournalDate) AS Month
					,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Revenue
					,cast(DATEFROMPARTS(DATEPART(yyyy, tblJournal.dteJournalDate),DATEPART(m, tblJournal.dteJournalDate),1)as Date) as Date
					,1 as ord
				FROM tblJournal
				INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
				WHERE tblJournalEnt.intGLNumber IN (
						SELECT intGLNumber
						FROM tblAccounts
						WHERE (intAccType = 4)
						)
				GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
					
		union All

			SELECT 'Cost Of Sales' as Names, DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate) AS Month
						,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
						,cast(DATEFROMPARTS(DATEPART(yyyy, tblJournal.dteJournalDate),DATEPART(m, tblJournal.dteJournalDate),1)as Date) as Date
						,2 as ord
					FROM tblJournal
					INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
					WHERE tblJournalEnt.intGLNumber IN (
							SELECT intGLNumber
							FROM tblAccounts
							WHERE (intAccType = 5)
								AND (intAccClass = @intCostOfGoodsSold)
							)
					GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate)
		Union All

					SELECT 'Expenses' as Names,DATEPART(yyyy, tblJournal.dteJournalDate)
							,DATEPART(m, tblJournal.dteJournalDate) AS Month
							,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
							,cast(DATEFROMPARTS(DATEPART(yyyy, tblJournal.dteJournalDate),DATEPART(m, tblJournal.dteJournalDate),1)as Date) as Date
							,3 as ord
						FROM tblJournal
						INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
						WHERE tblJournalEnt.intGLNumber IN (
								SELECT intGLNumber
								FROM tblAccounts
								WHERE (intAccType = 5)
									AND (intAccClass <> @intCostOfGoodsSold)
									AND (intAccClass <> @intIncomeTaxExpense)
								)
						GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
							,DATEPART(m, tblJournal.dteJournalDate)
			Union All
			
				SELECT 'Tax' as Names, DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate) AS Month
					,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
					,cast(DATEFROMPARTS(DATEPART(yyyy, tblJournal.dteJournalDate),DATEPART(m, tblJournal.dteJournalDate),1)as Date) as Date
					,5 as ord
				FROM tblJournal
				INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
				WHERE tblJournalEnt.intGLNumber IN (
						SELECT intGLNumber
						FROM tblAccounts
						WHERE (intAccType = 5)
							AND (intAccClass = @intIncomeTaxExpense)
						)
				GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
					
			Union All
			
			
				SELECT 'Interest' as Names, DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate) AS Month
						,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
						,cast(DATEFROMPARTS(DATEPART(yyyy, tblJournal.dteJournalDate),DATEPART(m, tblJournal.dteJournalDate),1)as Date) as Date
						,4 as ord
					FROM tblJournal
					INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
					WHERE tblJournalEnt.intGLNumber IN (
							SELECT intGLNumber
							FROM tblAccounts
							WHERE (intAccType = 5)
								AND (intAccClass = @intInterestExpense)
							)
					GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate)	
			
					) 
					--Select Names as [Names],Year as [Year],Month as [Month],Profit as [Profit],Date as [Date] from table1 order by Names,Year,Month,Date
					Select 
									   t1.Names,
									   t1.DATE as Date,
									   t1.Month,
									   t1.Profit as Sum,
									   t1.Year,
									   sum(t2.Profit) as Profit,
									   t1.ord
									   from table1 t1 inner join table1 t2 on t1.DATE>=t2.DATE
																			and t1.Names=t2.Names 
								group by 
									  t1.DATE,
									   t1.Month,
									   t1.Names,
									   t1.Profit,
									   t1.Year,
									   t1.ord
								order by t1.ord,t1.DATE
	 end

END
GO
/****** Object:  StoredProcedure [dbo].[dashCustomView]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashBusinessPerformance]*****************************/

/*****************Start [dashCustomView]*****************************/

Create Procedure [dbo].[dashCustomView]
AS
begin
Select
tblOrderDoc.strOrdDocID, 
tblOrderDoc.strUserName,
tblOrderDoc.strCustName,
tblOrderDoc.dteRequired,
tblOrderDoc.dteJournalDate,
tblOrderDoc.decSubTotal,
tblOrderDoc.decVAT,
tblOrderDoc.decTotal from tblOrderDoc
where tblOrderDoc.intDocType=1 AND tblOrderDoc.bitCleared=0
end
GO
/****** Object:  StoredProcedure [dbo].[dashDeleteDashboard]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashCustomView]*****************************/

/*****************Start [dashDeleteDashboard]*****************************/

Create Procedure [dbo].[dashDeleteDashboard]
@strViewName nvarchar(400)=null
As
begin
	delete from tblDashboards where strViewName=@strViewName
end
GO
/****** Object:  StoredProcedure [dbo].[dashGetActiveProjectsDataSub]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashDeleteDashboard]*****************************/

/*****************Start [dashGetActiveProjectsDataSub]*****************************/

CREATE PROCEDURE [dbo].[dashGetActiveProjectsDataSub]
	@SQProjNum AS nvarchar(50) = NULL,
	@SQPayType AS INT = NULL,
	@SQRecType AS INT = NULL
AS
BEGIN
	SET NOCOUNT ON;

	
;with data1 as(
SELECT Z.SeqNo
						,Z.strProjNumber
						,Z.strPartNumber
						,Z.strPartDesc
						,ISNULL(SUM(Z.decQty), 0)as Qty
						,ISNULL(SUM(Z.decLineTotExc), 0)as Value
					FROM (
						SELECT 1 AS SeqNo,tblOrderDocDTPrj.strProjNumber
							,tblOrderDocDT.strPartNumber
							,tblOrderDocDT.strPartDesc
							,ISNULL(SUM(tblOrderDocDT.decQty), 0) AS decQty
							,ISNULL(SUM(tblOrderDocDT.decLineTotExc), 0) AS decLineTotExc
						FROM tblOrderDoc
						INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
						INNER JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
							AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
						WHERE --(tblOrderDocDTPrj.strProjNumber = @SQProjNum)	AND
						 (tblOrderDoc.intDocType = 2)
						GROUP BY strPartNumber
							,strPartDesc,tblOrderDocDTPrj.strProjNumber
	
						UNION ALL
	
						SELECT 1 AS SeqNo,
							tblOrderDocQDTPrj.strProjNumber
							,tblOrderDocQDT.strPartNumber
							,tblOrderDocQDT.strPartDesc
							,ISNULL(SUM(tblOrderDocQDT.decQty), 0) AS decQty
							,ISNULL(SUM(tblOrderDocQDT.decLineTotExc), 0) AS decLineTotExc
						FROM tblOrderDocQ
						INNER JOIN tblOrderDocQDT ON tblOrderDocQ.strOrdDocID = tblOrderDocQDT.strOrdDocID
						INNER JOIN tblOrderDocQDTPrj ON tblOrderDocQDT.strOrdDocID = tblOrderDocQDTPrj.strOrdDocID
							AND tblOrderDocQDT.intLineNo = tblOrderDocQDTPrj.intLineNo
						--WHERE (tblOrderDocQDTPrj.strProjNumber = @SQProjNum)
						GROUP BY strPartNumber
							,strPartDesc,tblOrderDocQDTPrj.strProjNumber
						) Z
					GROUP BY Z.SeqNo
						,Z.strPartNumber
						,Z.strPartDesc
						,Z.strProjNumber
					UNION ALL

					SELECT 2 AS SeqNo,
							tblInvoiceDocDTPrj.strProjNumber
						,tblInvoiceDocDT.strPartNumber
						,tblInvoiceDocDT.strPartDesc
						,ISNULL(SUM(tblInvoiceDocDT.decQty), 0) AS decQty
						,ISNULL(SUM(tblInvoiceDocDT.decLineTotExc), 0) AS decLineTotExc
					FROM tblInvoiceDoc
					INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
					INNER JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
						AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
					--WHERE (tblInvoiceDocDTPrj.strProjNumber = @SQProjNum)
					GROUP BY strPartNumber
						,strPartDesc,tblInvoiceDocDTPrj.strProjNumber

					UNION ALL

					SELECT 3 AS SeqNo,
					    tblOrderDocPDTPrj.strProjNumber
						,tblOrderDocPDT.strPartNumber
						,tblOrderDocPDT.strPartDesc
						,ISNULL(SUM(tblOrderDocPDT.decStockQty), 0) AS decQty
						,ISNULL(SUM(tblOrderDocPDT.decLineTotExc), 0) AS decLineTotExc
					FROM tblOrderDocP
					INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
					INNER JOIN tblOrderDocPDTPrj ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTPrj.strOrdPDocID
						AND tblOrderDocPDT.intLineNo = tblOrderDocPDTPrj.intLineNo
					WHERE -- (tblOrderDocPDTPrj.strProjNumber = @SQProjNum) AND 
				(tblOrderDocP.intDocType = 2)
					GROUP BY strPartNumber
						,strPartDesc,tblOrderDocPDTPrj.strProjNumber

					UNION ALL

					SELECT 4 AS SeqNo,
						tblInvoiceDocPDTPrj.strProjNumber
						,tblInvoiceDocPDT.strPartNumber
						,tblInvoiceDocPDT.strPartDesc
						,ISNULL(SUM(tblInvoiceDocPDT.decStockQty), 0) AS decQty
						,ISNULL(SUM(tblInvoiceDocPDT.decLineTotExc), 0) AS decLineTotExc
					FROM tblInvoiceDocP
					INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
					INNER JOIN tblInvoiceDocPDTPrj ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocPDTPrj.strInvPDocID
						AND tblInvoiceDocPDT.intLineNo = tblInvoiceDocPDTPrj.intLineNo
				---	WHERE (tblInvoiceDocPDTPrj.strProjNumber = @SQProjNum)
					GROUP BY strPartNumber
						,strPartDesc,tblInvoiceDocPDTPrj.strProjNumber

					UNION ALL

					SELECT 5 AS SeqNo,tblJournalEntryDocCBDTPrj.strProjNumber
						,CONVERT(NVARCHAR(20), tblJournalEntryDocCBDT.intGLNumber) AS strPartNumber
						,tblJournalEntryDocCBDT.strDesc
						,ISNULL(COUNT(tblJournalEntryDocCBDT.intGLNumber), 0) AS decQty
						,ISNULL(SUM(tblJournalEntryDocCBDT.decLineTotExc), 0) AS decLineTotExc
					FROM tblJournalEntryDocCB
					INNER JOIN tblJournalEntryDocCBDT ON tblJournalEntryDocCB.strJEDocID = tblJournalEntryDocCBDT.strJEDocID
					INNER JOIN tblJournalEntryDocCBDTPrj ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCBDTPrj.strJEDocID
						AND tblJournalEntryDocCBDT.intType = tblJournalEntryDocCBDTPrj.intType
						AND tblJournalEntryDocCBDT.intGLNumber = tblJournalEntryDocCBDTPrj.intGLNumber
						AND tblJournalEntryDocCBDT.intLineNo = tblJournalEntryDocCBDTPrj.intLineNo
					WHERE -- (tblJournalEntryDocCBDTPrj.strProjNumber = @SQProjNum)
						--AND 
						(tblJournalEntryDocCBDT.intType = @SQPayType)
					GROUP BY tblJournalEntryDocCBDT.intGLNumber
						,tblJournalEntryDocCBDT.strDesc,tblJournalEntryDocCBDTPrj.strProjNumber

					UNION ALL

					SELECT 6 AS SeqNo,
						tblJournalEntryDocCBDTPrj.strProjNumber
						,CONVERT(NVARCHAR(20), tblJournalEntryDocCBDT.intGLNumber) AS strPartNumber
						,tblJournalEntryDocCBDT.strDesc
						,ISNULL(COUNT(tblJournalEntryDocCBDT.intGLNumber), 0) AS decQty
						,(ISNULL(SUM(tblJournalEntryDocCBDT.decLineTotExc), 0) * - 1) AS decLineTotExc
					FROM tblJournalEntryDocCB
					INNER JOIN tblJournalEntryDocCBDT ON tblJournalEntryDocCB.strJEDocID = tblJournalEntryDocCBDT.strJEDocID
					INNER JOIN tblJournalEntryDocCBDTPrj ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCBDTPrj.strJEDocID
						AND tblJournalEntryDocCBDT.intType = tblJournalEntryDocCBDTPrj.intType
						AND tblJournalEntryDocCBDT.intGLNumber = tblJournalEntryDocCBDTPrj.intGLNumber
						AND tblJournalEntryDocCBDT.intLineNo = tblJournalEntryDocCBDTPrj.intLineNo
				WHERE --(tblJournalEntryDocCBDTPrj.strProjNumber = @SQProjNum)
				--		AND 
				(tblJournalEntryDocCBDT.intType = @SQRecType)
					GROUP BY tblJournalEntryDocCBDT.intGLNumber
						,tblJournalEntryDocCBDT.strDesc,tblJournalEntryDocCBDTPrj.strProjNumber

					UNION ALL

					SELECT 7 AS SeqNo,
						tblJournalEntryDocDTPrj.strProjNumber
						,CONVERT(NVARCHAR(20), tblJournalEntryDocDT.intGLNumber) AS strPartNumber
						,tblJournalEntryDocDT.strDesc
						,ISNULL(COUNT(tblJournalEntryDocDT.intGLNumber), 0) AS decQty
						,ISNULL(SUM(tblJournalEntryDocDT.decDebits), 0) AS decLineTotExc
					FROM tblJournalEntryDoc
					INNER JOIN tblJournalEntryDocDT ON tblJournalEntryDoc.strJEDocID = tblJournalEntryDocDT.strJEDocID
					INNER JOIN tblJournalEntryDocDTPrj ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDocDTPrj.strJEDocID
						AND tblJournalEntryDocDT.intGLNumber = tblJournalEntryDocDTPrj.intGLNumber
						AND tblJournalEntryDocDT.intLineNo = tblJournalEntryDocDTPrj.intLineNo
				--	WHERE (tblJournalEntryDocDTPrj.strProjNumber = @SQProjNum)
					GROUP BY tblJournalEntryDocDT.intGLNumber
						,tblJournalEntryDocDT.strDesc,tblJournalEntryDocDTPrj.strProjNumber

					UNION ALL

					SELECT 8 AS SeqNo,
						 tblJournalEntryDocDTPrj.strProjNumber
						,CONVERT(NVARCHAR(20), tblJournalEntryDocDT.intGLNumber) AS strPartNumber
						,tblJournalEntryDocDT.strDesc
						,ISNULL(COUNT(tblJournalEntryDocDT.intGLNumber), 0) AS decQty
						,(ISNULL(SUM(tblJournalEntryDocDT.decCredits), 0) * - 1) AS decLineTotExc
					FROM tblJournalEntryDoc
					INNER JOIN tblJournalEntryDocDT ON tblJournalEntryDoc.strJEDocID = tblJournalEntryDocDT.strJEDocID
					INNER JOIN tblJournalEntryDocDTPrj ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDocDTPrj.strJEDocID
						AND tblJournalEntryDocDT.intGLNumber = tblJournalEntryDocDTPrj.intGLNumber
						AND tblJournalEntryDocDT.intLineNo = tblJournalEntryDocDTPrj.intLineNo
				--	WHERE (tblJournalEntryDocDTPrj.strProjNumber = @SQProjNum)
					GROUP BY tblJournalEntryDocDT.intGLNumber
						,tblJournalEntryDocDT.strDesc, tblJournalEntryDocDTPrj.strProjNumber
						)
						Select t1.strProjNumber,t1.strPartNumber,t1.strPartDesc,
						isnull((Select sum(t2.Qty) from data1 t2 where t2.SeqNo=1 and t2.strPartNumber=t1.strPartNumber and t2.strProjNumber=t1.strProjNumber),0) as 'Change Orders Qty',
						isnull((Select sum(t2.Value) from data1 t2 where t2.SeqNo=1 and t2.strPartNumber=t1.strPartNumber and t2.strProjNumber=t1.strProjNumber),0) as 'Change Orders Value',
						isnull((Select sum(t2.Qty) from data1 t2 where t2.SeqNo=3 and t2.strPartNumber=t1.strPartNumber and t2.strProjNumber=t1.strProjNumber),0) as 'Budgeted Qty',
						isnull((Select sum(t2.Value) from data1 t2 where t2.SeqNo=3 and t2.strPartNumber=t1.strPartNumber and t2.strProjNumber=t1.strProjNumber),0) as 'Budgeted Value',
						isnull((Select sum(t2.Qty) from data1 t2 where t2.SeqNo=2 and t2.strPartNumber=t1.strPartNumber and t2.strProjNumber=t1.strProjNumber),0) as 'Claimed Qty',
						isnull((Select sum(t2.Value) from data1 t2 where t2.SeqNo=2 and t2.strPartNumber=t1.strPartNumber and t2.strProjNumber=t1.strProjNumber),0) as 'Claimed Value',
						isnull((Select sum(t2.Qty) from data1 t2 where t2.SeqNo in(4,5,6,7,8)  and t2.strPartNumber=t1.strPartNumber and t2.strProjNumber=t1.strProjNumber),0) as 'Costed Qty',
						isnull((Select sum(t2.Value) from data1 t2 where t2.SeqNo in(4,5,6,7,8)  and t2.strPartNumber=t1.strPartNumber and t2.strProjNumber=t1.strProjNumber),0) as 'Costed Value',
						isnull((
						 isnull((Select sum(t2.Value) from data1 t2 where t2.SeqNo=1 and t2.strPartNumber=t1.strPartNumber and t2.strProjNumber=t1.strProjNumber),0)
						-isnull((Select sum(t2.Value) from data1 t2 where t2.SeqNo=3 and t2.strPartNumber=t1.strPartNumber and t2.strProjNumber=t1.strProjNumber),0)
						),0) as 'Profitability Estimated',
						isnull((
						 isnull((Select sum(t2.Value) from data1 t2 where t2.SeqNo=2 and t2.strPartNumber=t1.strPartNumber and t2.strProjNumber=t1.strProjNumber),0)
						-isnull((Select sum(t2.Value) from data1 t2 where t2.SeqNo in(4,5,6,7,8)  and t2.strPartNumber=t1.strPartNumber and t2.strProjNumber=t1.strProjNumber),0)
						),0) as 'Profitability Actual'
						 from data1 t1 
						group by t1.strProjNumber,t1.strPartNumber,t1.strPartDesc order by t1.strPartNumber
						End
GO
/****** Object:  StoredProcedure [dbo].[dashGetAPOpenOrdersData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetActiveProjectsDataSub]*****************************/

/*****************Start [dashGetAPOpenOrdersData]*****************************/

CREATE PROCEDURE [dbo].[dashGetAPOpenOrdersData]
	@PORequiredStartDate AS datetime = NULL,
	@PORequiredEndDate AS datetime = NULL,
	@PurVendorName AS nvarchar(Max)='<ALL>',
	@PurVendorCate AS nvarchar(Max)='<ALL>'
AS
BEGIN
	SET NOCOUNT ON;
		SELECT tblVendors.strVendName AS VendorNumber, 
		tblVendors.strVendDesc AS VendorName , 
		tblVendors.strVendCategory as VendorCategory , 
		tblOrderDocP.strOrdPDocID AS OrderID , 
		tblOrderDocP.dteJournalDate AS JournalDate , 
		tblOrderDocP.dteRequired AS RequiredDate , 
		tblOrderDocPDT.strPartNumber AS ItemNo , 
		tblOrderDocPDT.strPartDesc AS ItemDesc , 
		tblOrderDocPDT.decBuyQty AS BuyQty , 
		tblOrderDocPDT.strBuyUnit AS BuyUnit ,
		tblOrderDocPDT.decBuyQtyRemain AS QtyRemaining , 
		tblOrderDocP.decTotal AS Total, 
		tblOrderDocPDT.decEaIncTax AS BuyValue , 
		tblOrderDocPDT.decLineTotExc AS LineValue , 
		CASE tblOrderDocPDT.decBuyQty WHEN tblOrderDocPDT.decBuyQtyRemain THEN (tblOrderDocPDT.decLineTotExc) ELSE ((tblOrderDocPDT.decLineTotExc) / tblOrderDocPDT.decBuyQty) * tblOrderDocPDT.decBuyQtyRemain END AS ValueRemaining , 
		tblOrderDocP.intDocType 
		FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID 
		INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName 
		WHERE (tblOrderDocP.intDocType = 1) AND (tblOrderDocP.bitCleared = 0) 
		AND tblOrderDocP.dteRequired BETWEEN @PORequiredStartDate AND @PORequiredEndDate 
		 AND  tblVendors.strVendName IN (CASE WHEN @PurVendorName='<<ALL>>' THEN  tblVendors.strVendName ELSE @PurVendorName END)
		 AND  tblVendors.strVendCategory IN (CASE WHEN @PurVendorCate='<<ALL>>' THEN  tblVendors.strVendCategory ELSE @PurVendorCate END)
		
		ORDER BY tblOrderDocP.dteRequired
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetAPOpenOrdersData1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetAPOpenOrdersData]*****************************/

/*****************Start [dashGetAPOpenOrdersData1]*****************************/

CREATE PROCEDURE [dbo].[dashGetAPOpenOrdersData1]
(
@strDateFilter VARCHAR(100)=NULL,
@dateFromDate DateTime=NULL,
@dateToDate DateTime=NULL,
@strDateFilterCriteria VARCHAR(100)=NULL
)
AS
BEGIN
	SET NOCOUNT ON;

		SELECT tblVendors.strVendName AS VendorNumber, 
		tblVendors.strVendDesc AS VendorName , 
		tblVendors.strVendCategory as VendorCategory , 
		tblOrderDocP.strOrdPDocID AS OrderID , 
		tblOrderDocP.dteJournalDate AS JournalDate , 
		tblOrderDocP.dteRequired AS RequiredDate , 
		tblOrderDocPDT.strPartNumber AS ItemNo , 
		tblOrderDocPDT.strPartDesc AS ItemDesc , 
		tblOrderDocPDT.decBuyQty AS BuyQty , 
		tblOrderDocPDT.strBuyUnit AS BuyUnit ,
		 tblOrderDocPDT.decBuyQtyRemain AS QtyRemaining , 
		 tblOrderDocP.decTotal AS Total, 
		 tblOrderDocPDT.decEaIncTax AS BuyValue , 
		 tblOrderDocPDT.decLineTotExc AS LineValue , 
		 CASE tblOrderDocPDT.decBuyQty WHEN tblOrderDocPDT.decBuyQtyRemain THEN (tblOrderDocPDT.decLineTotExc) ELSE ((tblOrderDocPDT.decLineTotExc) / tblOrderDocPDT.decBuyQty) * tblOrderDocPDT.decBuyQtyRemain END AS ValueRemaining , 
		 tblOrderDocP.intDocType 
		 FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID 
		 INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName 
		 WHERE (tblOrderDocP.intDocType = 1) AND (tblOrderDocP.bitCleared = 0) and
		 case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL 
		 when @strDateFilter='JournalDate' and @strDateFilterCriteria !='All' then  cast(tblOrderDocP.dteJournalDate as date) 
	     when @strDateFilter='RequiredDate' and @strDateFilterCriteria !='All' then cast(tblOrderDocP.dteRequired as date)
         else @dateFromDate end 
		 between
		 cast(@dateFromDate as date) and 
		 cast( @dateToDate as date)
		 ORDER BY tblOrderDocP.dteRequired
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetAPOpenQuotesData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetAPOpenOrdersData1]*****************************/

/*****************Start [dashGetAPOpenQuotesData]*****************************/


CREATE PROCEDURE [dbo].[dashGetAPOpenQuotesData]
	@POQuotesStartDate AS datetime = NULL,
	@POQuotesEndDate AS datetime = NULL,
	@PurVendorName AS nvarchar(Max)='<ALL>',
	@PurVendorCate AS nvarchar(Max)='<ALL>'
AS
BEGIN
	SET NOCOUNT ON;

		SELECT tblVendors.strVendName AS VendorNumber, 
		tblVendors.strVendDesc AS VendorName , 
		tblVendors.strVendCategory as VendorCategory , 
		tblOrderDocP.strOrdPDocID AS DocID , 
		tblOrderDocP.dteJournalDate AS JournalDate , 
		tblOrderDocP.dteRequired AS RequiredDate , 
		tblOrderDocPDT.strPartNumber AS ItemName , 
		tblOrderDocPDT.strPartDesc AS ItemDesc ,
		tblOrderDocP.decTotal AS Total , 
		tblOrderDocPDT.decBuyQty AS BuyQty, 
		tblOrderDocPDT.decEaIncTax AS BuyValue,
		tblOrderDocPDT.strBuyUnit AS BuyUnit , 
		tblOrderDocPDT.decBuyQtyRemain AS QtyRemaining, 
		tblOrderDocPDT.decLineTotExc AS LineValue, 
		CASE tblOrderDocPDT.decBuyQty WHEN tblOrderDocPDT.decBuyQtyRemain THEN (tblOrderDocPDT.decLineTotExc) ELSE ((tblOrderDocPDT.decLineTotExc) / tblOrderDocPDT.decBuyQty) * tblOrderDocPDT.decBuyQtyRemain END AS ValueRemaining , 
		tblOrderDocP.intDocType 
		FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID 
		INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
		WHERE  
		(tblOrderDocP.intDocType = 2) AND (tblOrderDocP.bitCleared = 0) 
		AND tblOrderDocP.dteRequired BETWEEN @POQuotesStartDate AND @POQuotesEndDate
		AND  tblVendors.strVendName IN (CASE WHEN @PurVendorName='<<ALL>>' THEN  tblVendors.strVendName ELSE @PurVendorName END)
		AND  tblVendors.strVendCategory IN (CASE WHEN @PurVendorCate='<<ALL>>' THEN  tblVendors.strVendCategory ELSE @PurVendorCate END)
		ORDER BY tblOrderDocP.dteRequired
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetAPOpenQuotesData1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetAPOpenQuotesData]*****************************/

/*****************Start [dashGetAPOpenQuotesData1]*****************************/

CREATE PROCEDURE [dbo].[dashGetAPOpenQuotesData1]
(
@strDateFilter VARCHAR(100)=NULL,
@dateFromDate DateTime=NULL,
@dateToDate DateTime=NULL,
@strDateFilterCriteria VARCHAR(100)=NULL
)
AS
BEGIN
	SET NOCOUNT ON;

		SELECT tblVendors.strVendName AS VendorNumber, 
		tblVendors.strVendDesc AS VendorName , 
		tblVendors.strVendCategory as VendorCategory , 
		tblOrderDocP.strOrdPDocID AS DocID , 
		tblOrderDocP.dteJournalDate AS JournalDate , 
		tblOrderDocP.dteRequired AS RequiredDate , 
		tblOrderDocPDT.strPartNumber AS ItemName , 
		tblOrderDocPDT.strPartDesc AS ItemDesc ,
		tblOrderDocP.decTotal AS Total , 
		tblOrderDocPDT.decBuyQty AS BuyQty, 
		tblOrderDocPDT.decEaIncTax AS BuyValue,
		tblOrderDocPDT.strBuyUnit AS BuyUnit , 
		tblOrderDocPDT.decBuyQtyRemain AS QtyRemaining, 
		tblOrderDocPDT.decLineTotExc AS LineValue, 
		CASE tblOrderDocPDT.decBuyQty WHEN tblOrderDocPDT.decBuyQtyRemain THEN (tblOrderDocPDT.decLineTotExc) ELSE ((tblOrderDocPDT.decLineTotExc) / tblOrderDocPDT.decBuyQty) * tblOrderDocPDT.decBuyQtyRemain END AS ValueRemaining , 
		tblOrderDocP.intDocType 
		FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID 
		INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
		WHERE  
		(tblOrderDocP.intDocType = 2) AND (tblOrderDocP.bitCleared = 0) and
		 case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL 
		 when @strDateFilter='JournalDate' and @strDateFilterCriteria !='All' then  cast(tblOrderDocP.dteJournalDate as date) 
	     when @strDateFilter='RequiredDate' and @strDateFilterCriteria !='All' then cast(tblOrderDocP.dteRequired as date)
         else @dateFromDate end 
		 between
		 cast(@dateFromDate as date) and 
		 cast( @dateToDate as date)
		
		
		
		ORDER BY tblOrderDocP.dteRequired
	
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetAROpenOrdersData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetAPOpenQuotesData1]*****************************/

/*****************Start [dashGetAROpenOrdersData]*****************************/


CREATE PROCEDURE [dbo].[dashGetAROpenOrdersData]
	@SORequiredStartDate AS datetime = NULL,
	@SORequiredEndDate AS datetime = NULL,
	@SQCustName AS nvarchar(Max)='<<ALL>>',
	@SQCustCategory AS nvarchar(Max)='<<ALL>>'
AS
BEGIN
	SET NOCOUNT ON;

		SELECT tblCustomers.strCustName AS CustomerNumber,
		 tblCustomers.strCustDesc AS CustomerName,
		 tblCustomers.strCustCategory as CustomerCategory, 
		 tblOrderDoc.strOrdDocID AS OrderID , 
		 tblOrderDoc.dteJournalDate AS JournalDate, 
		 tblOrderDoc.dteRequired AS RequiredDate, 
		 tblOrderDocDT.strPartNumber AS ItemNo, 
		 tblOrderDocDT.strPartDesc AS ItemDesc, 
		 tblOrderDocDT.decQty AS Qty, 
		 tblOrderDocDT.decQtyRemaining AS OpenQty,
		 tblOrderDoc.decSubTotal AS Total,
		 tblOrderDoc.decVAT AS VAT,
		 tblOrderDoc.decDiscAmt AS DiscAmount,
	     CASE tblOrderDocDT.decQty WHEN tblOrderDocDT.decQtyRemaining THEN tblOrderDocDT.decLineTotExc ELSE (tblOrderDocDT.decLineTotExc / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining END AS OpenValue, 
		 tblInv.decSumOnHand AS OnHand 
		 FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID 
		 INNER JOIN tblInv ON tblInv.strPartNumber = tblOrderDocDT.strPartNumber 
		 INNER JOIN tblCustomers ON tblCustomers.strCustName = tblOrderDoc.strCustName 
		 WHERE (tblOrderDoc.intDocType = 1) AND (tblOrderDoc.bitCleared = 0) 
		 AND tblOrderDoc.dteRequired BETWEEN @SORequiredStartDate AND @SORequiredEndDate 
		 AND  tblCustomers.strCustName IN (CASE WHEN @SQCustName='<<ALL>>' THEN tblCustomers.strCustName ELSE @SQCustName END)
		 AND  tblCustomers.strCustCategory IN (CASE WHEN @SQCustCategory='<<ALL>>' THEN tblCustomers.strCustCategory ELSE @SQCustCategory END)
		 ORDER BY tblOrderDoc.dteRequired

	
END

GO
/****** Object:  StoredProcedure [dbo].[dashGetAROpenQuotesData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetAROpenOrdersData]*****************************/

/*****************Start [dashGetAROpenQuotesData]*****************************/

CREATE PROCEDURE [dbo].[dashGetAROpenQuotesData]

	@SOQuotesStartDate AS datetime = NULL,
	@SOQuotesEndDate AS datetime = NULL,
	@SQCustName AS nvarchar(Max)='<<ALL>>',
	@SQCustCategory AS nvarchar(Max)='<<ALL>>'
AS
BEGIN
	SET NOCOUNT ON;


		SELECT tblCustomers.strCustName AS CustomerNumber, 
		tblCustomers.strCustDesc AS CustomerName, 
		tblCustomers.strCustCategory AS CustomerCategory, 
		strOrdDocID AS DocNo, 
		strReference AS Reference, 
		dteJournalDate AS TransDate, 
		dteRequired AS RequiredDate, 
		tblOrderDoc.strCurrency AS Currency, 
		decSubTotal AS Total_Excl, 
		decVAT AS VAT, 
		decTotal AS Total 
		FROM tblOrderDoc INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName 
		WHERE intDocType = 2 AND bitCleared = 0 
		AND tblOrderDoc.dteRequired BETWEEN @SOQuotesStartDate AND @SOQuotesEndDate 
		AND  tblCustomers.strCustName IN (CASE WHEN @SQCustName='<<ALL>>' THEN tblCustomers.strCustName ELSE @SQCustName END)
		AND  tblCustomers.strCustCategory IN (CASE WHEN @SQCustCategory='<<ALL>>' THEN tblCustomers.strCustCategory ELSE @SQCustCategory END)
		
		UNION ALL 

		SELECT tblCustomers.strCustName AS CustomerNumber, 
		tblCustomers.strCustDesc AS CustomerName, 
		tblCustomers.strCustCategory AS CustomerCategory, 
		strOrdDocID AS DocNo, 
		strReference AS Reference, 
		dteJournalDate AS TransDate, 
		dteRequired AS RequiredDate, 
		tblOrderDocQ.strCurrency AS Currency, 
		decSubTotal AS Total_Excl, 
		decVAT AS VAT, 
		decTotal  AS Total 
		FROM tblOrderDocQ INNER JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName 
		WHERE bitCleared = 0 
		AND tblOrderDocQ.dteRequired BETWEEN @SOQuotesStartDate AND @SOQuotesEndDate 
		AND  tblCustomers.strCustName IN (CASE WHEN @SQCustName='<<ALL>>' THEN tblCustomers.strCustName ELSE @SQCustName END)
		AND  tblCustomers.strCustCategory IN (CASE WHEN @SQCustCategory='<<ALL>>' THEN tblCustomers.strCustCategory ELSE @SQCustCategory END)
		ORDER BY dteJournalDate
	
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetBankBalancesDataByBoth]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetAROpenQuotesData]*****************************/

/*****************Start [dashGetBankBalancesDataByBoth]*****************************/

Create PROCEDURE [dbo].[dashGetBankBalancesDataByBoth]
	@IsBankBalanceSupress AS bit = NULL,
	@Option AS nvarchar(20)='Both'
AS
BEGIN
	SET NOCOUNT ON;
	
	if @Option='Both'
	begin
		IF @IsBankBalanceSupress = 1 
			BEGIN
				SELECT strDesc AS AccountName
									,decBalance AS Balance
									,intAccClass
									,CASE 
										WHEN intAccClass = 1
											THEN 'CASH'
										WHEN intAccClass = 2
											THEN 'BANK'
										END AS AccountClass
								FROM tblAccounts
								WHERE intAccClass IN (
										1
										,2
										)
										AND decBalance != 0 
			END
		ELSE
			BEGIN
				SELECT strDesc AS AccountName
									,decBalance AS Balance
									,intAccClass
									,CASE 
										WHEN intAccClass = 1
											THEN 'CASH'
										WHEN intAccClass = 2
											THEN 'BANK'
										END AS AccountClass
								FROM tblAccounts
								WHERE intAccClass IN (
										1
										,2
										)
			END
	End	
	else if @Option in ('Cash','Bank')
	begin
		IF @IsBankBalanceSupress = 1 
		BEGIN
			SELECT strDesc AS AccountName
										,decBalance AS Balance
										,intAccClass
										,CASE 
											WHEN intAccClass = 1
												THEN 'CASH'
											WHEN intAccClass = 2
												THEN 'BANK'
											END AS AccountClass
									FROM tblAccounts
									WHERE intAccClass = Case when @Option='Cash' Then 1 
														When @Option='Bank' then 2 end AND decBalance != 0 
		END
		ELSE IF @IsBankBalanceSupress = 0 
		BEGIN
			SELECT strDesc AS AccountName
										,decBalance AS Balance
										,intAccClass
										,CASE 
											WHEN intAccClass = 1
												THEN 'CASH'
											WHEN intAccClass = 2
												THEN 'BANK'
											END AS AccountClass
									FROM tblAccounts
									WHERE intAccClass = Case when @Option='Cash' Then 1 
														When @Option='Bank' then 2 end
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetClosedPickTicketsData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetBankBalancesDataByBoth]*****************************/

/*****************Start [dashGetClosedPickTicketsData]*****************************/

CREATE PROCEDURE [dbo].[dashGetClosedPickTicketsData]
	@WHCPTJournalStartDate AS datetime = NULL,
	@WHCPTJournalEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;
	SELECT strOrdDocID ,
	dteJournalDate ,
	dteRequired ,
	strUserName ,
	strCustName ,
	strReference ,
		  CASE WHEN (SELECT COUNT(Z.strLocation) FROM (SELECT strLocation FROM tblOrderDocDT WHERE (strOrdDocID = tblOrderDoc.strOrdDocID) GROUP BY strLocation) Z) > 1 THEN '<MULTIPLE>' ELSE ISNULL((SELECT strLocation FROM tblOrderDocDT WHERE (strOrdDocID = tblOrderDoc.strOrdDocID) GROUP BY strLocation),'') END AS Location,
		   ISNULL((SELECT CAST(intDept AS NVarchar(4)) + ' ' + strDesc FROM tblDepartments WHERE (intDept = tblOrderDoc.intDept)),'') AS Department,
		   (SELECT COUNT(strOrdDocID) FROM tblOrderDocDT WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)) AS TotalItems,
		    (SELECT COUNT(strOrdDocID) FROM tblOrderDocDT WHERE (strOrdDocID = tblOrderDoc.strOrdDocID) AND (decQtyRemaining > 0)) AS ItemsRemain, 'Picked' AS PickStatus,
			 CASE WHEN '%%' = '%%' THEN 1 ELSE ISNULL((SELECT COUNT(strLocation) FROM tblOrderDocDT WHERE (strOrdDocID = tblOrderDoc.strOrdDocID) AND (strLocation = '%%') GROUP BY strLocation),0) END
			 FROM tblOrderDoc 
			 WHERE (intDocType = 1) AND (bitCleared = 0) 
			 AND (strOrdDocID IN (SELECT strOrdDocID FROM tblPickTickets WHERE bitCleared = 1 AND bitPicked = 1)) 
			 AND dteJournalDate BETWEEN @WHCPTJournalStartDate AND @WHCPTJournalEndDate ORDER BY strOrdDocID DESC

END
GO
/****** Object:  StoredProcedure [dbo].[dashGetCRMInProgressReport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


/********* End [dashGetCRMReport] (CRM)**********/
/********* Start [dashGetCRMInProgressReport] (CRM)**********/

Create Procedure [dbo].[dashGetCRMInProgressReport]
@UserName as nvarchar(Max),
@IsAdmin as bit
AS
Begin
if(@IsAdmin=1)
Begin
SELECT 
     tblCRMActivities.ActivityID AS ActivityID
	,tblCRMActivities.ActivityName AS ActivityName
	,tblCRMActivities.ActivityDescription AS ActivityDescription
	,tblCRMActivities.ActivityGroupName AS ActivityGroupName
	,tblCRMActivities.ActivityStatus AS ActivityStatus
	,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate
	,tblCRMActivities.CustomerNumber AS CustomerNumber
	,tblCRMActivities.VendorNumber AS VendorNumber
	,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber
	,tblCRMActivities.ProjectNumber AS ProjectNumber
	,tblCRMActivities.CustomerContactNo AS CustomerContactNo
    ,tblCRMActivities.VendorContactNo AS VendorContactNo
	,tblCRMActivities.TransactionType AS TransactionType
	,tblCRMActivities.TransactionNumber AS TransactionNumber
	,tblCRMActivities.CreatedUser AS CreatedUser
	,tblCRMActivities.UpdatedUser AS UpdatedUser
	,tblCRMActivities.CreatedDate AS CreatedDate
	,tblCRMActivities.UpdatedDate AS UpdatedDate
	,tblCRMActivities.IsInactive AS IsInactive
	,tblCRMActivities.IsSalesGroup AS IsSalesGroup
	,tblCRMActivities.SalesPipelineText AS SalesPipelineText
	,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage
	,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser
	,tblCRMActivityActions.ActivityActionID AS ActivityActionID
	,tblCRMActivityActions.ActionDescription AS ActionDescription
	,tblCRMActivityActions.DueDate AS DueDate
	,tblCRMActivityActions.AssignTo AS AssignTo
	,tblCRMActivityActions.ActionStatus AS ActionStatus
	,tblCRMActivityActions.CreatedDate AS ActionCreatedDate
	,tblCRMActivityActions.UpdateDate AS ActionUpdateDate
	,tblCRMActivityActions.CreatedUser AS ActionCreatedUser
	,tblCRMActivityActions.UpdatedUser AS ActionUpdatedUser
	,tblCRMActivityActions.IsInactive AS ActionIsInactive
	,tblCRMActivityActions.ActionType AS  ActionType
	,tblCRMActivityActions.IsNotifyOnSalesDocuments AS IsNotifyOnSalesDocuments
	,tblCRMActivityActions.IsActionReopened as IsActionReopened
	,tblCRMActivityActions.ActionReopenedUserName AS ActionReopenedUserName
	,tblCRMActivityActions.EmailId as EmailId
FROM tblCRMActivities
INNER JOIN tblCRMActivityActions ON tblCRMActivities.ActivityID = tblCRMActivityActions.ActivityID
INNER JOIN tblCRMActivityActionsStatus ON tblCRMActivityActions.ActionStatus = tblCRMActivityActionsStatus.StatusType
Where tblCRMActivityActionsStatus.StatusGroup<>3
End
else
begin
SELECT 
     tblCRMActivities.ActivityID AS ActivityID
	,tblCRMActivities.ActivityName AS ActivityName
	,tblCRMActivities.ActivityDescription AS ActivityDescription
	,tblCRMActivities.ActivityGroupName AS ActivityGroupName
	,tblCRMActivities.ActivityStatus AS ActivityStatus
	,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate
	,tblCRMActivities.CustomerNumber AS CustomerNumber
	,tblCRMActivities.VendorNumber AS VendorNumber
	,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber
	,tblCRMActivities.ProjectNumber AS ProjectNumber
	,tblCRMActivities.CustomerContactNo AS CustomerContactNo
    ,tblCRMActivities.VendorContactNo AS VendorContactNo
	,tblCRMActivities.TransactionType AS TransactionType
	,tblCRMActivities.TransactionNumber AS TransactionNumber
	,tblCRMActivities.CreatedUser AS CreatedUser
	,tblCRMActivities.UpdatedUser AS UpdatedUser
	,tblCRMActivities.CreatedDate AS CreatedDate
	,tblCRMActivities.UpdatedDate AS UpdatedDate
	,tblCRMActivities.IsInactive AS IsInactive
	,tblCRMActivities.IsSalesGroup AS IsSalesGroup
	,tblCRMActivities.SalesPipelineText AS SalesPipelineText
	,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage
	,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser
	,tblCRMActivityActions.ActivityActionID AS ActivityActionID
	,tblCRMActivityActions.ActionDescription AS ActionDescription
	,tblCRMActivityActions.DueDate AS DueDate
	,tblCRMActivityActions.AssignTo AS AssignTo
	,tblCRMActivityActions.ActionStatus AS ActionStatus
	,tblCRMActivityActions.CreatedDate AS ActionCreatedDate
	,tblCRMActivityActions.UpdateDate AS ActionUpdateDate
	,tblCRMActivityActions.CreatedUser AS ActionCreatedUser
	,tblCRMActivityActions.UpdatedUser AS ActionUpdatedUser
	,tblCRMActivityActions.IsInactive AS ActionIsInactive
	,tblCRMActivityActions.ActionType AS  ActionType
	,tblCRMActivityActions.IsNotifyOnSalesDocuments AS IsNotifyOnSalesDocuments
	,tblCRMActivityActions.IsActionReopened as IsActionReopened
	,tblCRMActivityActions.ActionReopenedUserName AS ActionReopenedUserName
	,tblCRMActivityActions.EmailId as EmailId
FROM tblCRMActivities
INNER JOIN tblCRMActivityActions ON 
tblCRMActivities.ActivityID = tblCRMActivityActions.ActivityID
INNER JOIN tblCRMActivityActionsStatus ON tblCRMActivityActions.ActionStatus = tblCRMActivityActionsStatus.StatusType
Where tblCRMActivityActionsStatus.StatusGroup<>3
and ( tblCRMActivities.ActivityCreatedUser=@UserName or 
tblCRMActivityActions.AssignTo=@UserName
or tblCRMActivityActions.CreatedUser=@UserName)
End
End
GO
/****** Object:  StoredProcedure [dbo].[dashGetCRMReport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/********* End [GetContactDetails] (CRM)**********/

/********* Start [dashGetCRMReport] (CRM)**********/


CREATE Procedure [dbo].[dashGetCRMReport]
@StartDate as Datetime,
@EndDate as Datetime,
@UserName as nvarchar(Max),
@IsAdmin as bit
AS
Begin

if(@IsAdmin=1)
begin
SELECT 
     tblCRMActivities.ActivityID AS ActivityID
	,tblCRMActivities.ActivityName AS ActivityName
	,tblCRMActivities.ActivityDescription AS ActivityDescription
	,tblCRMActivities.ActivityGroupName AS ActivityGroupName
	,tblCRMActivities.ActivityStatus AS ActivityStatus
	,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate
	,tblCRMActivities.CustomerNumber AS CustomerNumber
	,tblCRMActivities.VendorNumber AS VendorNumber
	,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber
	,tblCRMActivities.ProjectNumber AS ProjectNumber
	,tblCRMActivities.CustomerContactNo AS CustomerContactNo
    ,tblCRMActivities.VendorContactNo AS VendorContactNo
	,tblCRMActivities.TransactionType AS TransactionType
	,tblCRMActivities.TransactionNumber AS TransactionNumber
	,tblCRMActivities.CreatedUser AS CreatedUser
	,tblCRMActivities.UpdatedUser AS UpdatedUser
	,tblCRMActivities.CreatedDate AS CreatedDate
	,tblCRMActivities.UpdatedDate AS UpdatedDate
	,tblCRMActivities.IsInactive AS IsInactive
	,tblCRMActivities.IsSalesGroup AS IsSalesGroup
	,tblCRMActivities.SalesPipelineText AS SalesPipelineText
	,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage
	,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser
	,tblCRMActivityActions.ActivityActionID AS ActivityActionID
	,tblCRMActivityActions.ActionDescription AS ActionDescription
	,tblCRMActivityActions.DueDate AS DueDate
	,tblCRMActivityActions.AssignTo AS AssignTo
	,tblCRMActivityActions.ActionStatus AS ActionStatus
	,tblCRMActivityActions.CreatedDate AS ActionCreatedDate
	,tblCRMActivityActions.UpdateDate AS ActionUpdateDate
	,tblCRMActivityActions.CreatedUser AS ActionCreatedUser
	,tblCRMActivityActions.UpdatedUser AS ActionUpdatedUser
	,tblCRMActivityActions.IsInactive AS ActionIsInactive
	,tblCRMActivityActions.ActionType AS  ActionType
	,tblCRMActivityActions.IsNotifyOnSalesDocuments AS IsNotifyOnSalesDocuments
	,tblCRMActivityActions.IsActionReopened as IsActionReopened
	,tblCRMActivityActions.ActionReopenedUserName AS ActionReopenedUserName
	,tblCRMActivityActions.EmailId as EmailId
	,tblCRMActivityActionsStatus.StatusGroup as StatusGroup
FROM tblCRMActivities
INNER JOIN tblCRMActivityActions ON 
tblCRMActivities.ActivityID = tblCRMActivityActions.ActivityID
and cast(tblCRMActivityActions.DueDate as Date) between cast(@StartDate as date) and cast(@EndDate as Date)
INNER JOIN tblCRMActivityActionsStatus ON tblCRMActivityActions.ActionStatus = tblCRMActivityActionsStatus.StatusType
end
else
begin
SELECT 
     tblCRMActivities.ActivityID AS ActivityID
	,tblCRMActivities.ActivityName AS ActivityName
	,tblCRMActivities.ActivityDescription AS ActivityDescription
	,tblCRMActivities.ActivityGroupName AS ActivityGroupName
	,tblCRMActivities.ActivityStatus AS ActivityStatus
	,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate
	,tblCRMActivities.CustomerNumber AS CustomerNumber
	,tblCRMActivities.VendorNumber AS VendorNumber
	,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber
	,tblCRMActivities.ProjectNumber AS ProjectNumber
	,tblCRMActivities.CustomerContactNo AS CustomerContactNo
    ,tblCRMActivities.VendorContactNo AS VendorContactNo
	,tblCRMActivities.TransactionType AS TransactionType
	,tblCRMActivities.TransactionNumber AS TransactionNumber
	,tblCRMActivities.CreatedUser AS CreatedUser
	,tblCRMActivities.UpdatedUser AS UpdatedUser
	,tblCRMActivities.CreatedDate AS CreatedDate
	,tblCRMActivities.UpdatedDate AS UpdatedDate
	,tblCRMActivities.IsInactive AS IsInactive
	,tblCRMActivities.IsSalesGroup AS IsSalesGroup
	,tblCRMActivities.SalesPipelineText AS SalesPipelineText
	,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage
	,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser
	,tblCRMActivityActions.ActivityActionID AS ActivityActionID
	,tblCRMActivityActions.ActionDescription AS ActionDescription
	,tblCRMActivityActions.DueDate AS DueDate
	,tblCRMActivityActions.AssignTo AS AssignTo
	,tblCRMActivityActions.ActionStatus AS ActionStatus
	,tblCRMActivityActions.CreatedDate AS ActionCreatedDate
	,tblCRMActivityActions.UpdateDate AS ActionUpdateDate
	,tblCRMActivityActions.CreatedUser AS ActionCreatedUser
	,tblCRMActivityActions.UpdatedUser AS ActionUpdatedUser
	,tblCRMActivityActions.IsInactive AS ActionIsInactive
	,tblCRMActivityActions.ActionType AS  ActionType
	,tblCRMActivityActions.IsNotifyOnSalesDocuments AS IsNotifyOnSalesDocuments
	,tblCRMActivityActions.IsActionReopened as IsActionReopened
	,tblCRMActivityActions.ActionReopenedUserName AS ActionReopenedUserName
	,tblCRMActivityActions.EmailId as EmailId
	,tblCRMActivityActionsStatus.StatusGroup as StatusGroup
FROM tblCRMActivities
INNER JOIN tblCRMActivityActions ON 
tblCRMActivities.ActivityID = tblCRMActivityActions.ActivityID
INNER JOIN tblCRMActivityActionsStatus ON tblCRMActivityActions.ActionStatus = tblCRMActivityActionsStatus.StatusType
Where (tblCRMActivities.ActivityCreatedUser=@UserName or 
tblCRMActivityActions.AssignTo=@UserName
or tblCRMActivityActions.CreatedUser=@UserName)
and cast(tblCRMActivityActions.DueDate as Date) between cast(@StartDate as date) and cast(@EndDate as Date)
end
End
GO
/****** Object:  StoredProcedure [dbo].[dashGetCustomerCategory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetClosedPickTicketsData]*****************************/


/*****************Start [dashGetCustomerCategory]*****************************/

Create Procedure [dbo].[dashGetCustomerCategory]
AS
Begin
Select CustomerCategory from (Select tblCustomerCat.strCustCategory as CustomerCategory from tblCustomerCat where tblCustomerCat.bitInactive=0
Union All
Select 'ALL')AS TT Order by CustomerCategory asc
End
GO
/****** Object:  StoredProcedure [dbo].[dashGetCustomerCategoryList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/******************* End [NonDisposedAssetsDepreciationHistory_Search]********************/

/*****************Start [dashGetCustomerCategoryList]*****************************/

CREATE Procedure [dbo].[dashGetCustomerCategoryList]
As
Begin
Select strCustCategory as  CustomerCategory ,strDesc as  CustomerDesc from tblCustomerCat
End
GO
/****** Object:  StoredProcedure [dbo].[dashGetCustomerCatList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[dashGetCustomerCatList]    Script Date: 18-03-2020 12:23:00 AM ******/
CREATE Procedure [dbo].[dashGetCustomerCatList]
As
Begin
Select strCustCategory as CustCategory,strDesc as  Description from tblCustomerCat
End
GO
/****** Object:  StoredProcedure [dbo].[dashGetCustomerData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetCustomerCategory]*****************************/

/*****************Start [dashGetCustomerData]*****************************/

CREATE PROCEDURE [dbo].[dashGetCustomerData]
	@SQUserName AS nvarchar(20) = NULL,
	@BPToolsMode AS BIT = NULL,
	@SQCustName AS nvarchar(Max)='<<ALL>>',
	@SQCustCategory AS nvarchar(Max)='<<ALL>>'

AS
BEGIN
	SET NOCOUNT ON;
			IF @BPToolsMode = 0
				BEGIN
					SELECT [strCustName] AS CustomerNumber
									,[strCustDesc] AS CustomerName
									,[strCustCategory] AS Category
									,[decYTDPurch] AS Purchases
									,[strContact] AS Contact
									,[strPhone] AS TelephoneNumber
								FROM [dbo].[tblCustomers] 
							WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName =  @SQUserName ))
							AND  tblCustomers.strCustName IN (CASE WHEN @SQCustName='<<ALL>>' THEN tblCustomers.strCustName ELSE @SQCustName END)
							AND  tblCustomers.strCustCategory IN (CASE WHEN @SQCustCategory='<<ALL>>' THEN tblCustomers.strCustCategory ELSE @SQCustCategory END)
		
						ORDER BY strCustName 
				END
			ELSE
				BEGIN
					SELECT [strCustName] AS CustomerNumber
								,[strCustDesc] AS CustomerName
								,[strCustCategory] AS Category
								,[decYTDPurch] AS Purchases
								,[strContact] AS Contact
								,[strPhone] AS TelephoneNumber
							FROM [dbo].[tblCustomers] 
							WHERE 	  tblCustomers.strCustName IN (CASE WHEN @SQCustName='<<ALL>>' THEN tblCustomers.strCustName ELSE @SQCustName END)
							AND  tblCustomers.strCustCategory IN (CASE WHEN @SQCustCategory='<<ALL>>' THEN tblCustomers.strCustCategory ELSE @SQCustCategory END)
						ORDER BY strCustName  
				END
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetCustomerDetailsList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[dashGetCustomerDetailsList]    Script Date: 18-03-2020 12:23:00 AM ******/
CREATE Procedure [dbo].[dashGetCustomerDetailsList]
@CustCategory nvarchar(Max)='<<ALL>>'
As
Begin
Select strCustName as CustomerName,strCustDesc as  Description from tblCustomers 
where strCustCategory in (case when @CustCategory='<<ALL>>' then strCustCategory ELSE @CustCategory END)  order by strCustName
End
GO
/****** Object:  StoredProcedure [dbo].[dashGetCustomerList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetCustomerCategoryList]*****************************/

/*****************Start [dashGetCustomerList]*****************************/

CREATE Procedure [dbo].[dashGetCustomerList]
AS
Begin
Select strCustDesc as CustomerName,strCustName as CustomerNumber,strCustCategory as CustomerCategory
from tblCustomers order by CustomerName,CustomerNumber,CustomerCategory
End
GO
/****** Object:  StoredProcedure [dbo].[dashGetDashboardViewByViewName]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[dashGetDashboardViewByViewName]    Script Date: 23-03-2020 12:23:00 AM ******/
CREATE Procedure [dbo].[dashGetDashboardViewByViewName]
(
@strViewName nvarchar(400)=null
)
AS
Begin
	Select top 1 tblDashboards.strViewName as [ViewName],
	tblDashboards.strDesc as [Description],
	tblDashboards.bitCustomCube as IsCustomCube,
	tblDashboards.strViewDefinition as ViewDefinition,
	tblDashboards.bitisAvailable as IsAvailable from tblDashboards where  tblDashboards.strViewName=@strViewName
End
GO
/****** Object:  StoredProcedure [dbo].[dashGetDashboardViewList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetCustomerData]*****************************/

/*****************Start [dashGetDashboardViewList]*****************************/

CREATE Procedure [dbo].[dashGetDashboardViewList]
(
@strUserName nvarchar(50)=null,
@isAdmin bit=null
)
AS
begin
	Select tblDashboards.strViewName as [ViewName],
	tblDashboards.strDesc as [Description],
	tblDashboards.bitCustomCube as IsCustomCube,
	--tblDashboards.strViewDefinition as ViewDefinition,
	'' as ViewDefinition,
	tblDashboards.bitisAvailable as IsAvailable from tblDashboards where bitisAvailable=1 
end
GO
/****** Object:  StoredProcedure [dbo].[dashGetDueBalancesDataDocumentDate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetDashboardViewList]*****************************/

/*****************Start [dashGetDueBalancesDataDocumentDate]*****************************/

CREATE PROCEDURE [dbo].[dashGetDueBalancesDataDocumentDate]
	@DateFieldName as nvarchar(20) = NULL,
	@StartDate AS datetime = NULL,
	@SQUserName AS nvarchar(20) = NULL
AS
BEGIN
	SET NOCOUNT ON;
	if(@DateFieldName='Document Date')
	begin
			SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName
									,tblCustomers.strCustDesc AS CustDesc
									,tblCustomers.strTerm AS Term
									,MASTERTABLE.dteDueDate AS DueDate
									,SUM(tblCustTransDT.decAmount) AS Amount
									,MASTERTABLE.dteJournalDate AS JournalDate
									,ISNULL(tblCustomers.strCustCategory, '') AS CustCate
									,DATEPART(m, MASTERTABLE.dteJournalDate) AS Month
									,DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS Year
									,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) AS [Month-Year]
									,(MASTERTABLE.dteJournalDate) as AccessDate
								FROM tblCustTrans AS MASTERTABLE
								INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))
								INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
								WHERE tblCustomers.strCustCategory IN (
										SELECT tblCustomerCat.strCustCategory
										FROM tblCustomerCat
										LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
										WHERE ISNULL((
													SELECT COUNT(tblCustomerCatSec.strCustCategory)
													FROM tblCustomerCatSec
													WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
													), 0) = 0
											OR (
												ISNULL((
														SELECT COUNT(tblCustomerCatSec.strCustCategory)
														FROM tblCustomerCatSec
														WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
														), 0) > 0
												AND tblCustomerCatSec.strUserName = @SQUserName   
												)
										)
									AND tblCustTransDT.bitReversed = 0
									AND tblCustTransDT.dteJournalDate <= @StartDate  
									AND tblCustTransDT.lngCustTrID NOT IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <=  @StartDate    
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										)
									GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc ,tblCustomers.strTerm , MASTERTABLE.dteDueDate , MASTERTABLE.dteJournalDate , tblCustomers.strCustCategory, DATEPART(m, MASTERTABLE.dteJournalDate), DATEPART(yyyy, MASTERTABLE.dteJournalDate), CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) ORDER BY tblCustomers.strTerm , LTRIM(RTRIM(MASTERTABLE.strCustName)) 
	end
	else if (@DateFieldName='Due Date')
	begin
	SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName
										,tblCustomers.strCustDesc AS CustDesc
										,tblCustomers.strTerm AS Term
										,MASTERTABLE.dteDueDate AS DueDate
										,SUM(tblCustTransDT.decAmount) AS Amount
										,MASTERTABLE.dteJournalDate AS JournalDate
										,ISNULL(tblCustomers.strCustCategory, '') AS CustCate
										,DATEPART(m, MASTERTABLE.dteDueDate) AS Month
										,DATEPART(yyyy, MASTERTABLE.dteDueDate) AS Year
										,CAST(DATEPART(m, MASTERTABLE.dteDueDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteDueDate) AS NVARCHAR) AS [Month-Year]
										,(MASTERTABLE.dteDueDate) as AccessDate
									FROM tblCustTrans AS MASTERTABLE
									INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))
									INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
									WHERE tblCustomers.strCustCategory IN (
											SELECT tblCustomerCat.strCustCategory
											FROM tblCustomerCat
											LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
											WHERE ISNULL((
														SELECT COUNT(tblCustomerCatSec.strCustCategory)
														FROM tblCustomerCatSec
														WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
														), 0) = 0
												OR (
													ISNULL((
															SELECT COUNT(tblCustomerCatSec.strCustCategory)
															FROM tblCustomerCatSec
															WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
															), 0) > 0
													AND tblCustomerCatSec.strUserName =  @SQUserName
													)
											)
										AND tblCustTransDT.bitReversed = 0
										AND tblCustTransDT.dteJournalDate <= @StartDate   
										AND tblCustTransDT.lngCustTrID NOT IN (
											SELECT tblCustTransDT.lngCustTrID
											FROM tblCustTrans
											INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
											WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
												AND tblCustTransDT.bitReversed = 0
												AND tblCustTransDT.dteJournalDate <=  @StartDate   
											GROUP BY tblCustTransDT.lngCustTrID
											HAVING SUM(tblCustTransDT.decAmount) = 0
												AND SUM(tblCustTransDT.decAmountF) = 0
											) 
										GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc ,tblCustomers.strTerm , MASTERTABLE.dteDueDate , MASTERTABLE.dteJournalDate , tblCustomers.strCustCategory, DATEPART(m, MASTERTABLE.dteDueDate), DATEPART(yyyy, MASTERTABLE.dteDueDate), CAST(DATEPART(m, MASTERTABLE.dteDueDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteDueDate) AS NVARCHAR) ORDER BY tblCustomers.strTerm , LTRIM(RTRIM(MASTERTABLE.strCustName)) 
	end
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetItemQuantityData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetDueBalancesDataDocumentDate]*****************************/

/*****************Start [dashGetItemQuantityData]*****************************/

CREATE PROCEDURE [dbo].[dashGetItemQuantityData]
	@SQWarehouse AS nvarchar(10) = NULL
AS
BEGIN
	SET NOCOUNT ON;
		SELECT tblInv.strPartNumber AS ItemNo, 
		tblInv.strDesc AS ItemDesc, 
		tblInvExt.strLocName AS Warehouse, 
		tblInvExt.decOnHand AS OnHand, 
		tblInvExt.intReorderPoint AS ReOrder, 
		tblInvExt.decOnOrder AS PurchaseOrder, 
		tblInvExt.decAlloc AS SalesOrder, 
		((tblInvExt.decOnHand + tblInvExt.decOnOrder) - (tblInvExt.intReorderPoint + tblInvExt.decAlloc)) * -1 AS ToOrder, 
		'' AS strVendName, '', '' AS OrderbyCol,
		 tblInvExt.strLocName as WarehouseLocation
		FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber 
		WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.intReorderPoint + tblInvExt.decOnOrder + tblInvExt.decAlloc) <> 0) 
		AND ( tblInvExt.strLocName =case when @SQWarehouse='All' then tblInvExt.strLocName else @SQWarehouse end) AND tblInv.bitInactive = 0 ORDER BY ToOrder desc
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetItemSalesReportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetItemQuantityData]*****************************/

/*****************Start [dashGetItemSalesReportData]*****************************/

Create PROCEDURE [dbo].[dashGetItemSalesReportData]
	@SQWarehouse AS nvarchar(10) = NULL,
	@SQStart AS datetime = NULL, 
	@SQEnd AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	

						SELECT tblInvTrackingDT.strPartNumber AS ItemNumber
								,tblInv.strDesc AS ItemDescription
								,COUNT(tblInvTrackingDT.strPartNumber) AS No_Trans
								,SUM(tblInvTrackingDT.decQty) * - 1 AS Sale_Qty
								,SUM(tblInvTrackingDT.decValue) * - 1 AS Value
								,SUM(tblInvTrackingDT.decRevenue) AS Revenue
								,SUM(tblInvTrackingDT.decCOGS) AS COGS
								,SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS PROFIT
								,'' AS OrderByCol
								,strCategory
							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
							INNER JOIN (
								SELECT DISTINCT tblJournal.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEnt
								INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
								WHERE tblJournal.dteJournalDate BETWEEN  @SQStart 
										AND  @SQEnd  
	
								UNION ALL
	
								SELECT DISTINCT tblJournalLY.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEntLY
								INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
								WHERE tblJournalLY.dteJournalDate BETWEEN @SQStart  
										AND  @SQEnd   
	
								UNION ALL
	
								SELECT DISTINCT tblJournalHist.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEntHist
								INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID
								WHERE tblJournalHist.dteJournalDate BETWEEN  @SQStart 
										AND  @SQEnd  
								) Z ON tblInvTracking.lngJourID = Z.lngJourID
								AND tblInvTracking.strSource = Z.strSource
							WHERE tblInvTracking.intModule = 2
								AND tblInv.intType = 1
								AND tblInv.bitInactive = 0
								AND tblInvTracking.dteJournalDate BETWEEN  @SQStart 
										AND  @SQEnd 
						 AND tblInvTrackingDT.strLocName =case when @SQWarehouse ='All' then tblInvTrackingDT.strLocName else @SQWarehouse end
						 GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, strCategory ORDER BY OrderByCol,tblInvTrackingDT.strPartNumber  
			
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetOpenOrdersDataNewAP]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetItemSalesReportData]*****************************/

/*****************Start [dashGetOpenOrdersDataNewAP]*****************************/

CREATE PROCEDURE [dbo].[dashGetOpenOrdersDataNewAP]
	@PORequiredStartDate AS datetime = NULL,
	@PORequiredEndDate AS datetime = NULL,
	@POOrdersCleared AS bit= NULL
AS
BEGIN
	SET NOCOUNT ON;
		SELECT tblVendors.strVendName AS VendorNumber, 
		tblVendors.strVendDesc AS VendorName , 
		tblVendors.strVendCategory as VendorCategory , 
		tblOrderDocP.strOrdPDocID AS OrderID , 
		tblOrderDocP.dteJournalDate AS JournalDate , 
		tblOrderDocP.dteRequired AS RequiredDate , 
		tblOrderDocPDT.strPartNumber AS ItemNo , 
		tblOrderDocPDT.strPartDesc AS ItemDesc , 
		tblOrderDocPDT.decBuyQty AS BuyQty , 
		tblOrderDocPDT.strBuyUnit AS BuyUnit ,
		tblOrderDocPDT.decBuyQtyRemain AS QtyRemaining , 
		tblOrderDocP.decTotal AS Total, 
		tblOrderDocPDT.decEaIncTax AS BuyValue , 
		tblOrderDocPDT.decLineTotExc AS LineValue ,
		tblOrderDocP.strUserName as UserName, 
		CASE tblOrderDocPDT.decBuyQty WHEN tblOrderDocPDT.decBuyQtyRemain THEN (tblOrderDocPDT.decLineTotExc) ELSE ((tblOrderDocPDT.decLineTotExc) / tblOrderDocPDT.decBuyQty) * tblOrderDocPDT.decBuyQtyRemain END AS ValueRemaining , 
		tblOrderDocP.intDocType 
		FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID 
		INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName 
		WHERE (tblOrderDocP.intDocType = 1) AND (tblOrderDocP.bitCleared = @POOrdersCleared) 
		AND tblOrderDocP.dteRequired BETWEEN @PORequiredStartDate AND @PORequiredEndDate 
		ORDER BY tblOrderDocP.dteRequired
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetOpenPickTicketsData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetOpenOrdersDataNewAP]*****************************/

/*****************Start [dashGetOpenPickTicketsData]*****************************/

Create PROCEDURE [dbo].[dashGetOpenPickTicketsData]
	@WHJournalStartDate AS datetime = NULL,
	@WHJournalEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT strOrdDocID
					,dteJournalDate
					,dteRequired
					,strUserName
					,strCustName
					,strReference
					,CASE 
						WHEN (
								SELECT COUNT(Z.strLocation)
								FROM (
									SELECT strLocation
									FROM tblOrderDocDT
									WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
									GROUP BY strLocation
									) Z
								) > 1
							THEN '<MULTIPLE>'
						ELSE ISNULL((
									SELECT strLocation
									FROM tblOrderDocDT
									WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
									GROUP BY strLocation
									), '')
						END AS Location
					,ISNULL((
							SELECT CAST(intDept AS NVARCHAR(4)) + ' ' + strDesc
							FROM tblDepartments
							WHERE (intDept = tblOrderDoc.intDept)
							), '') AS Department
					,(
						SELECT COUNT(strOrdDocID)
						FROM tblOrderDocDT
						WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
						) AS TotalItems
					,(
						SELECT COUNT(strOrdDocID)
						FROM tblOrderDocDT
						WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
							AND (decQtyRemaining > 0)
						) AS ItemsRemain
					,'Picked' AS PickStatus
					,CASE 
						WHEN '%%' = '%%'
							THEN 1
						ELSE ISNULL((
									SELECT COUNT(strLocation)
									FROM tblOrderDocDT
									WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
										AND (strLocation = '%%')
									GROUP BY strLocation
									), 0)
						END
				FROM tblOrderDoc
				WHERE (intDocType = 1)
					AND (bitCleared = 0)
					AND (
						strOrdDocID IN (
							SELECT strOrdDocID
							FROM tblPickTickets
							WHERE bitCleared = 0
								AND bitPicked = 1
							)
						)
					AND dteJournalDate BETWEEN @WHJournalStartDate
						AND @WHJournalEndDate
				ORDER BY strOrdDocID DESC
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetOpenQuotesDataNewAP]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetOpenPickTicketsData]*****************************/

/*****************Start [dashGetOpenQuotesDataNewAP]*****************************/

CREATE PROCEDURE [dbo].[dashGetOpenQuotesDataNewAP]
	@POQuotesStartDate AS datetime = NULL,
	@POQuotesEndDate AS datetime = NULL,
	@POQuotesCleared AS bit= NULL

AS
BEGIN
	SET NOCOUNT ON;

		SELECT tblVendors.strVendName AS VendorNumber, 
		tblVendors.strVendDesc AS VendorName , 
		tblVendors.strVendCategory as VendorCategory , 
		tblOrderDocP.strOrdPDocID AS DocID , 
		tblOrderDocP.dteJournalDate AS JournalDate , 
		tblOrderDocP.dteRequired AS RequiredDate , 
		tblOrderDocPDT.strPartNumber AS ItemName , 
		tblOrderDocPDT.strPartDesc AS ItemDesc ,
		tblOrderDocP.decTotal AS Total , 
		tblOrderDocPDT.decBuyQty AS BuyQty, 
		tblOrderDocPDT.decEaIncTax AS BuyValue,
		tblOrderDocPDT.strBuyUnit AS BuyUnit , 
		tblOrderDocPDT.decBuyQtyRemain AS QtyRemaining, 
		tblOrderDocPDT.decLineTotExc AS LineValue,
		
		CASE tblOrderDocPDT.decBuyQty WHEN tblOrderDocPDT.decBuyQtyRemain THEN (tblOrderDocPDT.decLineTotExc) ELSE ((tblOrderDocPDT.decLineTotExc) / tblOrderDocPDT.decBuyQty) * tblOrderDocPDT.decBuyQtyRemain END AS ValueRemaining , 
		tblOrderDocP.intDocType 
		FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID 
		INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
		WHERE  
		(tblOrderDocP.intDocType = 2) AND (tblOrderDocP.bitCleared = @POQuotesCleared) 
		AND tblOrderDocP.dteRequired BETWEEN @POQuotesStartDate AND @POQuotesEndDate
		ORDER BY tblOrderDocP.dteRequired
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetPayableData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetOpenQuotesDataNewAP]*****************************/

/*****************Start [dashGetPayableData]*****************************/

CREATE PROCEDURE [dbo].[dashGetPayableData]
	@VendCategory AS nvarchar(20) = NULL,
    @FromDate AS DATETIME = NULL,
	@ToDate AS datetime = NULL,
	@SQUserName AS nvarchar(20) = NULL
AS
BEGIN
	SET NOCOUNT ON;
		BEGIN
		Declare @tempDate as Datetime
		Declare @tempMonth as int =0
		Declare @tempYear as int=0
		Declare @temploop as int =0
		Declare @temploopTotalCount as int=0



		Set @tempDate=@ToDate
		Set @tempMonth=MONTH(@tempDate)
		Set @tempYear=YEAR(@tempDate)


CREATE TABLE #TempDisplayValue
(
	Sum  Money,
	JournalDate Datetime,
	VendCate  VARCHAR (50),
	[Month-Year]  VARCHAR (50),
	Amount  Money,
)	
CREATE TABLE #TempTotalCount
(
	[New-Month-Year]  VARCHAR (50),
	Year  int,
	Month  int
)	
CREATE TABLE #TempTotalCountUSED
(
	[New-Month-Year]  VARCHAR (50),
	Year  int,
	Month  int
)	

	
;with table1 as(SELECT MASTERTABLE.strVendName AS VendName
							,tblVendors.strVendDesc AS VendDesc
							,tblVendors.strTerm AS Term
							,MASTERTABLE.dteDueDate AS DueDate
							,SUM(tblVendTransDT.decAmount) AS Amount
							,MASTERTABLE.dteJournalDate AS JournalDate
							,ISNULL(tblVendors.strVendCategory, '') AS VendCate
							,DATEPART(m, MASTERTABLE.dteJournalDate) AS Month
							,DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS Year
							,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) AS [Month-Year]
						FROM tblVendTrans AS MASTERTABLE
						INNER JOIN tblVendors ON MASTERTABLE.strVendName = tblVendors.strVendName
						INNER JOIN tblVendTransDT ON MASTERTABLE.lngVendTrID = tblVendTransDT.lngVendTrID
						WHERE tblVendors.strVendCategory IN (
								SELECT tblVendorCat.strVendCategory
								FROM tblVendorCat
								LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
								WHERE ISNULL((
											SELECT COUNT(tblVendorCatSec.strVendCategory)
											FROM tblVendorCatSec
											WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblVendorCatSec.strVendCategory)
												FROM tblVendorCatSec
												WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
												), 0) > 0
										AND tblVendorCatSec.strUserName = @SQUserName
										)
								)
							AND tblVendTransDT.bitReversed = 0
							AND tblVendTransDT.dteJournalDate between @FromDate and @tempDate
							AND tblVendTransDT.lngVendTrID NOT IN (
								SELECT tblVendTransDT.lngVendTrID
								FROM tblVendTrans
								INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
								WHERE tblVendTrans.strVendName = MASTERTABLE.strVendName
									AND tblVendTransDT.bitReversed = 0
									AND tblVendTransDT.dteJournalDate between @FromDate and @tempDate
								GROUP BY tblVendTransDT.lngVendTrID
								HAVING SUM(tblVendTransDT.decAmount) = 0
									AND SUM(tblVendTransDT.decAmountF) = 0
								)
							AND tblVendors.strVendCategory =case when @VendCategory='All' Then tblVendors.strVendCategory else @VendCategory end
							GROUP BY MASTERTABLE.strVendName, tblVendors.strVendDesc, tblVendors.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblVendors.strVendCategory, DATEPART(m, MASTERTABLE.dteJournalDate), DATEPART(yyyy, MASTERTABLE.dteJournalDate), CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR)
							)
							
							
							Insert into #TempTotalCount select distinct table1.[Month-Year],table1.Year,table1.Month from table1 where table1.Year<=@tempYear
							set @temploopTotalCount = (Select Count(*) from #TempTotalCount)
							While @temploop < @temploopTotalCount
							BEGIN
								Select top 1  @tempMonth=#TempTotalCount.MONTH ,@tempYear=#TempTotalCount.Year from #TempTotalCount where #TempTotalCount.[New-Month-Year] not in (Select #TempTotalCountUSED.[New-Month-Year] from #TempTotalCountUSED)
								Set @tempDate=Cast((Cast(@tempYear as varchar(10))+'-'+Cast(@tempMonth as varchar(10))+'-1') as date)
							    set @tempDate=Datefromparts(year(@tempDate), month(@tempDate),DAY(DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,-1,@tempDate),0))))
									
									Insert into #TempDisplayValue
									Select Sum(zz.Amount) as Sum,@tempDate,zz.VendCate,(Cast(@tempMonth as varchar(10))+'-'+Cast(@tempYear as varchar(10))) As [Month-Year],Sum(zz.Amount) as Amount from 									
									(
									SELECT MASTERTABLE.strVendName AS VendName
							,tblVendors.strVendDesc AS VendDesc
							,tblVendors.strTerm AS Term
							,MASTERTABLE.dteDueDate AS DueDate
							,SUM(tblVendTransDT.decAmount) AS Amount
							,MASTERTABLE.dteJournalDate AS JournalDate
							,ISNULL(tblVendors.strVendCategory, '') AS VendCate
							,DATEPART(m, MASTERTABLE.dteJournalDate) AS Month
							,DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS Year
							,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) AS [Month-Year]
						FROM tblVendTrans AS MASTERTABLE
						INNER JOIN tblVendors ON MASTERTABLE.strVendName = tblVendors.strVendName
						INNER JOIN tblVendTransDT ON MASTERTABLE.lngVendTrID = tblVendTransDT.lngVendTrID
						WHERE tblVendors.strVendCategory IN (
								SELECT tblVendorCat.strVendCategory
								FROM tblVendorCat
								LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
								WHERE ISNULL((
											SELECT COUNT(tblVendorCatSec.strVendCategory)
											FROM tblVendorCatSec
											WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblVendorCatSec.strVendCategory)
												FROM tblVendorCatSec
												WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
												), 0) > 0
										AND tblVendorCatSec.strUserName = @SQUserName
										)
								)
							AND tblVendTransDT.bitReversed = 0
							AND tblVendTransDT.dteJournalDate between @FromDate and @tempDate
							AND tblVendTransDT.lngVendTrID NOT IN (
								SELECT tblVendTransDT.lngVendTrID
								FROM tblVendTrans
								INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
								WHERE tblVendTrans.strVendName = MASTERTABLE.strVendName
									AND tblVendTransDT.bitReversed = 0
									AND tblVendTransDT.dteJournalDate between @FromDate and @tempDate
								GROUP BY tblVendTransDT.lngVendTrID
								HAVING SUM(tblVendTransDT.decAmount) = 0
									AND SUM(tblVendTransDT.decAmountF) = 0
								)
							AND tblVendors.strVendCategory =case when @VendCategory='All' Then tblVendors.strVendCategory else @VendCategory end
							GROUP BY MASTERTABLE.strVendName, tblVendors.strVendDesc, tblVendors.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblVendors.strVendCategory, DATEPART(m, MASTERTABLE.dteJournalDate), DATEPART(yyyy, MASTERTABLE.dteJournalDate), CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR)
							) as ZZ  group by VendCate
							--,zz.JournalDate
								SET @temploop = @temploop+1
								insert into #TempTotalCountUSED Values((Cast(@tempMonth as varchar(10))+'-'+Cast(@tempYear as varchar(10))),@tempYear,@tempMonth)
								
							 END
			
			select * from #TempDisplayValue order by JournalDate asc

			DROP table #TempDisplayValue
			DROP table #TempTotalCount
			DROP table #TempTotalCountUSED

							
	END
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetPurchaseComparisonData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetPayableData]*****************************/

/*****************Start [dashGetPurchaseComparisonData]*****************************/

CREATE procedure [dbo].[dashGetPurchaseComparisonData]
	@StartDate AS datetime = NULL,
	@EndDate AS datetime = NULL,
	@SinceStartDate AS datetime = NULL,
	@SinceEndDate AS datetime = NULL
As
Begin
		SELECT tblInvCat.strCategory AS ItemCategory
			,ISNULL(NewVend.NetPurchasesValue, 0) AS NewVendor
			,ISNULL(OldVend.NetPurchasesValue, 0) AS OldVendor
		FROM tblInvCat
		LEFT JOIN (
			SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory
				,SUM(tblInvoiceDocPDT.decLineTotExc) AS NetPurchasesValue
			FROM tblInvoiceDocP
			INNER JOIN tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
			INNER JOIN tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber
			INNER JOIN tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = tblTaxCodeExt.strTaxCode
			INNER JOIN tblVendors ON dbo.tblInvoiceDocP.strVendName = tblVendors.strVendName
			WHERE tblInvoiceDocP.dteJournalDate BETWEEN @StartDate 
					AND @EndDate 
				AND tblVendors.dteSince BETWEEN @SinceStartDate
					AND Cast(GETDATE() as date) 
		
			GROUP BY tblInv.strCategory ) AS NewVend ON tblInvCat.strCategory = NewVend.ItemCategory LEFT JOIN ( SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory , SUM(tblInvoiceDocPDT.decLineTotExc) AS NetPurchasesValue FROM tblInvoiceDocP INNER JOIN tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID INNER JOIN tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber INNER JOIN tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = tblTaxCodeExt.strTaxCode INNER JOIN tblVendors ON dbo.tblInvoiceDocP.strVendName = tblVendors.strVendName 
			WHERE tblInvoiceDocP.dteJournalDate BETWEEN  @StartDate  AND  @EndDate  AND tblVendors.dteSince <  @SinceStartDate
			GROUP BY tblInv.strCategory ) AS OldVend ON tblInvCat.strCategory = OldVend.ItemCategory ORDER BY ItemCategory 
End
GO
/****** Object:  StoredProcedure [dbo].[dashGetPurchaseMixDataCurrentMonth]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetPurchaseComparisonData]*****************************/

/*****************Start [dashGetPurchaseMixDataCurrentMonth]*****************************/

create PROCEDURE [dbo].[dashGetPurchaseMixDataCurrentMonth]
	@PurJournalStartDate AS datetime = NULL,
	@PurJournalEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

			SELECT ISNULL(tblInv.strCategory,'') AS ItemCategory, 
			SUM(tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, 
			DATEPART(m, tblInvoiceDocP.dteJournalDate) AS MonthPart, 
			DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart 
			FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID 
			INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber 
			INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode 
			INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName 
			WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate 
			AND tblInv.strCategory Is Not Null 
			GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), 
			tblInv.strCategory 
			ORDER BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate) 
	
		
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetPurchaseMixDataCurrentWeekOrCustom]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetPurchaseMixDataCurrentMonth]*****************************/

/*****************Start [dashGetPurchaseMixDataCurrentWeekOrCustom]*****************************/

CREATE PROCEDURE [dbo].[dashGetPurchaseMixDataCurrentWeekOrCustom]
	@PurJournalStartDate AS datetime = NULL,
	@PurJournalEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

			;with table1 as 
			(
			SELECT ISNULL(tblInv.strCategory,'') AS ItemCategory, 
			SUM(tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, 
			DATEPART(m, tblInvoiceDocP.dteJournalDate) AS MonthPart, 
			DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart, 
			 tblInvoiceDocP.dteJournalDate as  TransactionDate 
			FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID 
			INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber 
			INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode 
			INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName 
			WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate 
			AND tblInv.strCategory Is Not Null 
			GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), 
			DATEPART(m, tblInvoiceDocP.dteJournalDate), 
			tblInv.strCategory ,tblInvoiceDocP.dteJournalDate
			)
			
			select t1.ItemCategory,
				  t1.LineTotExcl as LineTotExclTotal ,
				   t1.MonthPart,
				   t1.YearPart,
				   t1.TransactionDate, 
				   sum(t2.LineTotExcl) as LineTotExcl from table1  t1
				   inner join table1 t2 on t1.TransactionDate>=t2.TransactionDate and  t1.ItemCategory=t2.ItemCategory
				   group by  t1.ItemCategory,
				   t1.LineTotExcl,
				   t1.MonthPart,
				   t1.YearPart,
				   t1.TransactionDate
				   order by t1.TransactionDate

END
GO
/****** Object:  StoredProcedure [dbo].[dashGetPurchasesData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetPurchaseMixDataCurrentWeekOrCustom]*****************************/

/*****************Start [dashGetPurchasesData]*****************************/

CREATE PROCEDURE [dbo].[dashGetPurchasesData]
	@PurJournalStartDate AS datetime = NULL,
	@PurJournalEndDate AS datetime = NULL,
	@PurVendorName AS nvarchar(Max)='<ALL>',
	@PurVendorCate AS nvarchar(Max)='<ALL>'
AS
BEGIN
	SET NOCOUNT ON;

		 SELECT dbo.tblVendors.strVendName AS VendorNumber,
		 dbo.tblVendors.strVendDesc AS VendorName,
		 dbo.tblVendors.strVendCategory AS VendorCategory, 
		 dbo.tblInvoiceDocP.strInvPDocID AS Document#, 
		 dbo.tblInvoiceDocPDT.decBuyQty AS OriginalInvoiceQty, 
		 dbo.tblInvoiceDocP.decSubTotal AS OriginalInvoiceValue, 
		 dbo.tblInvoiceDocP.dteSystemDate AS SystemDate,
		 ISNULL(dbo.tblInvoiceDocP.strStatusTypeCode, N'') AS StatusTypeCode, 
		 dbo.tblInvoiceDocP.dteJournalDate AS TransactionDate,  
		 dbo.tblInvoiceDocP.dteRequired AS OrderRequiredDate, 
		Sum( dbo.tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, 
		Sum( dbo.tblInvoiceDocPDT.decLineTaxAmt) AS LineTotTax, 
		Sum( dbo.tblInvoiceDocPDT.decEaIncTax) AS Price, 
		Sum( dbo.tblInvoiceDocPDT.decLineTotExc + dbo.tblInvoiceDocPDT.decLineTaxAmt) AS LineTotIncl, 
		 dbo.tblInvoiceDocP.strCurrency AS CurrencyCode, 
		 dbo.tblInvoiceDocP.decSubTotalF AS OriginalInvoiceValueFC, 
		Sum( dbo.tblInvoiceDocPDT.decLineTotExcF) AS LineTotExclFC, 
		 dbo.tblInvoiceDocP.strAddInfo AS AdditionalInfo 
		 FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID
		 INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber 
		 INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName 
		 WHERE 
		 tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate
		 AND  tblVendors.strVendName IN (CASE WHEN @PurVendorName='<<ALL>>' THEN  tblVendors.strVendName ELSE @PurVendorName END)
		 AND  tblVendors.strVendCategory IN (CASE WHEN @PurVendorCate='<<ALL>>' THEN  tblVendors.strVendCategory ELSE @PurVendorCate END)
		
		 GROUP BY
		  dbo.tblVendors.strVendName ,
		 dbo.tblVendors.strVendDesc ,
		 dbo.tblVendors.strVendCategory , 
		  dbo.tblInvoiceDocP.strInvPDocID  , 
		 dbo.tblInvoiceDocPDT.decBuyQty  , 
		 dbo.tblInvoiceDocP.decSubTotal  , 
		 dbo.tblInvoiceDocP.dteSystemDate  ,
		 ISNULL(dbo.tblInvoiceDocP.strStatusTypeCode, N'') , 
		 dbo.tblInvoiceDocP.dteJournalDate   ,
		  dbo.tblInvoiceDocP.dteRequired,
		  dbo.tblInvoiceDocP.strCurrency,
		  dbo.tblInvoiceDocP.decSubTotalF,
		   dbo.tblInvoiceDocP.strAddInfo 
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetPurchasesMixData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetPurchasesData]*****************************/

/*****************Start [dashGetPurchasesMixData]*****************************/

CREATE PROCEDURE [dbo].[dashGetPurchasesMixData]
	@PurJournalStartDate AS datetime = NULL,
	@PurJournalEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

			SELECT dbo.tblVendors.strVendName AS VendorName, 
			DATEPART(m,tblInvoiceDocP.dteJournalDate) AS MonthPart, 
			DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart, 
			dbo.tblVendors.strVendCategory AS VendorCategory, 
			dbo.tblInvoiceDocPDT.strPartNumber AS ItemCode, 
			dbo.tblInvoiceDocPDT.strPartDesc AS ItemDescription_Line, 
			dbo.tblInvoiceDocPDT.strBuyUnit AS ItemUnit, 
			dbo.tblInv.strCategory AS ItemCategory, 
			dbo.tblInv.strDesc AS ItemDescription_Masterfile, 
			dbo.tblInvoiceDocP.strInvPDocID AS Document#, 
			dbo.tblInvoiceDocPDT.decBuyQty AS OriginalInvoiceQty, 
			dbo.tblTaxCodeExt.strTaxCode AS TaxCode, 
			dbo.tblInvoiceDocP.decSubTotal AS OriginalInvoiceValue, 
			dbo.tblInvoiceDocPDT.strLocation AS Location, 
			dbo.tblInvoiceDocP.dteSystemDate AS SystemDate, 
			ISNULL(dbo.tblInvoiceDocP.strStatusTypeCode, N'') AS StatusTypeCode, 
			dbo.tblInvoiceDocP.dteJournalDate AS TransactionDate, 
			dbo.tblInv.decSumOnHand AS OnHandQty, 
			dbo.tblInv.decLastPPUnit AS LastUnitCost, 
			dbo.tblInvoiceDocP.dteRequired AS OrderRequiredDate, 
			DATENAME(YEAR, dbo.tblInvoiceDocP.dteJournalDate) AS Year, 
			RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDocP.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, dbo.tblInvoiceDocP.dteJournalDate) AS Month, 
			REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate) AS Day, 
			DATENAME(WEEK, dbo.tblInvoiceDocP.dteJournalDate) AS Week,
			DATENAME(QUARTER, dbo.tblInvoiceDocP.dteJournalDate) AS Quarter, 
			DATEDIFF(DAY, GETDATE(), dbo.tblInvoiceDocP.dteRequired) AS DaysToRequiredDate, 
			ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, 
			ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, 
			ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, 
			ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, 
			ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, 
			ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, 
			dbo.tblInvoiceDocPDT.decLineTotExc AS LineTotExcl, 
			dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotTax, 
			dbo.tblInvoiceDocPDT.decLineTotExc + dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotIncl, 
			dbo.tblInvoiceDocP.strCurrency AS CurrencyCode,
			dbo.tblInvoiceDocP.decExchange AS ExchangeRate, 
			dbo.tblInvoiceDocP.decSubTotalF AS OriginalInvoiceValueFC, 
			dbo.tblInvoiceDocPDT.decLineTotExcF AS LineTotExclFC, 
			CASE tblInvoiceDocPDT.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, 
			dbo.tblInvoiceDocP.strAddInfo AS AdditionalInfo 
			FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID 
			INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber 
			INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode 
			INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName 
			WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetReceivableData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetPurchasesMixData]*****************************/

/*****************Start [dashGetReceivableData]*****************************/

CREATE PROCEDURE [dbo].[dashGetReceivableData] 
	 @CustCategory AS NVARCHAR(20) = NULL
	,@FromDate AS DATETIME = NULL
	,@ToDate AS DATETIME = NULL
	,@SQUserName AS NVARCHAR(20) = NULL
AS
BEGIN
	SET NOCOUNT ON;

	BEGIN
		DECLARE @tempDate AS DATETIME
		DECLARE @tempMonth AS INT = 0
		DECLARE @tempYear AS INT = 0
		DECLARE @temploop AS INT = 0
		DECLARE @temploopTotalCount AS INT = 0

		SET @tempDate = @ToDate
		SET @tempMonth = MONTH(@tempDate)
		SET @tempYear = YEAR(@tempDate)

		CREATE TABLE #TempDisplayValue (
			Sum MONEY
			,JournalDate DATETIME
			,CustCate VARCHAR(50)
			,[Month-Year] VARCHAR(50)
			,Amount MONEY
			,
			)

		CREATE TABLE #TempTotalCount (
			[New-Month-Year] VARCHAR(50)
			,Year INT
			,Month INT
			)

		CREATE TABLE #TempTotalCountUSED (
			[New-Month-Year] VARCHAR(50)
			,Year INT
			,Month INT
			);

		WITH table1
		AS (
			SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName
				,tblCustomers.strCustDesc AS CustDesc
				,tblCustomers.strTerm AS Term
				,MASTERTABLE.dteDueDate AS DueDate
				,SUM(tblCustTransDT.decAmount) AS Amount
				,MASTERTABLE.dteJournalDate AS JournalDate
				,ISNULL(tblCustomers.strCustCategory, '') AS CustCate
				,DATEPART(m, MASTERTABLE.dteJournalDate) AS Month
				,DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS Year
				,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) AS [Month-Year]
			FROM tblCustTrans AS MASTERTABLE
			INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))
			INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
			WHERE tblCustomers.strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @SQUserName
							)
					)
				AND tblCustTransDT.bitReversed = 0
				AND tblCustTransDT.dteJournalDate between @FromDate and @tempDate
				AND tblCustTransDT.lngCustTrID NOT IN (
					SELECT tblCustTransDT.lngCustTrID
					FROM tblCustTrans
					INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
					WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
						AND tblCustTransDT.bitReversed = 0
						AND tblCustTransDT.dteJournalDate between @FromDate and @tempDate
					GROUP BY tblCustTransDT.lngCustTrID
					HAVING SUM(tblCustTransDT.decAmount) = 0
						AND SUM(tblCustTransDT.decAmountF) = 0
					)
				AND tblCustomers.strCustCategory = CASE 
					WHEN @CustCategory = 'All'
						THEN tblCustomers.strCustCategory
					ELSE @CustCategory
					END
			GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName))
				,tblCustomers.strCustDesc
				,tblCustomers.strTerm
				,MASTERTABLE.dteDueDate
				,MASTERTABLE.dteJournalDate
				,tblCustomers.strCustCategory
				,DATEPART(m, MASTERTABLE.dteJournalDate)
				,DATEPART(yyyy, MASTERTABLE.dteJournalDate)
				,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR)
			)
		INSERT INTO #TempTotalCount
		SELECT DISTINCT table1.[Month-Year]
			,table1.Year
			,table1.Month
		FROM table1
		WHERE table1.Year <= @tempYear

		SET @temploopTotalCount = (
				SELECT Count(*)
				FROM #TempTotalCount
				)

		WHILE @temploop < @temploopTotalCount
		BEGIN
			SELECT TOP 1 @tempMonth = #TempTotalCount.MONTH
				,@tempYear = #TempTotalCount.Year
			FROM #TempTotalCount
			WHERE #TempTotalCount.[New-Month-Year] NOT IN (
					SELECT #TempTotalCountUSED.[New-Month-Year]
					FROM #TempTotalCountUSED
					)

			SET @tempDate = Cast((Cast(@tempYear AS VARCHAR(10)) + '-' + Cast(@tempMonth AS VARCHAR(10)) + '-1') AS DATE)
			SET @tempDate = Datefromparts(year(@tempDate), month(@tempDate), DAY(DATEADD(DD, - 1, DATEADD(MM, DATEDIFF(MM, - 1, @tempDate), 0))))

			INSERT INTO #TempDisplayValue
			SELECT Sum(zz.Amount) AS Sum
				,@tempDate
				,zz.CustCate
				,(Cast(@tempMonth AS VARCHAR(10)) + '-' + Cast(@tempYear AS VARCHAR(10))) AS [Month-Year]
				,Sum(zz.Amount) AS Amount
			FROM (
				SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName
					,tblCustomers.strCustDesc AS CustDesc
					,tblCustomers.strTerm AS Term
					,MASTERTABLE.dteDueDate AS DueDate
					,SUM(tblCustTransDT.decAmount) AS Amount
					,MASTERTABLE.dteJournalDate AS JournalDate
					,ISNULL(tblCustomers.strCustCategory, '') AS CustCate
					,DATEPART(m, MASTERTABLE.dteJournalDate) AS Month
					,DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS Year
					,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) AS [Month-Year]
				FROM tblCustTrans AS MASTERTABLE
				INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))
				INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
				WHERE tblCustomers.strCustCategory IN (
						SELECT tblCustomerCat.strCustCategory
						FROM tblCustomerCat
						LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
						WHERE ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) > 0
								AND tblCustomerCatSec.strUserName = @SQUserName
								)
						)
					AND tblCustTransDT.bitReversed = 0
					AND tblCustTransDT.dteJournalDate  between @FromDate and @tempDate
					AND tblCustTransDT.lngCustTrID NOT IN (
						SELECT tblCustTransDT.lngCustTrID
						FROM tblCustTrans
						INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
						WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
							AND tblCustTransDT.bitReversed = 0
							AND tblCustTransDT.dteJournalDate  between @FromDate and @tempDate
						GROUP BY tblCustTransDT.lngCustTrID
						HAVING SUM(tblCustTransDT.decAmount) = 0
							AND SUM(tblCustTransDT.decAmountF) = 0
						)
					AND tblCustomers.strCustCategory = CASE 
						WHEN @CustCategory = 'All'
							THEN tblCustomers.strCustCategory
						ELSE @CustCategory
						END
				GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName))
					,tblCustomers.strCustDesc
					,tblCustomers.strTerm
					,MASTERTABLE.dteDueDate
					,MASTERTABLE.dteJournalDate
					,tblCustomers.strCustCategory
					,DATEPART(m, MASTERTABLE.dteJournalDate)
					,DATEPART(yyyy, MASTERTABLE.dteJournalDate)
					,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR)
				) AS ZZ
			GROUP BY CustCate

			SET @temploop = @temploop + 1

			INSERT INTO #TempTotalCountUSED
			VALUES (
				(Cast(@tempMonth AS VARCHAR(10)) + '-' + Cast(@tempYear AS VARCHAR(10)))
				,@tempYear
				,@tempMonth
				)
		END

		SELECT *
		FROM #TempDisplayValue
		ORDER BY JournalDate ASC

		DROP TABLE #TempDisplayValue

		DROP TABLE #TempTotalCount

		DROP TABLE #TempTotalCountUSED
	END
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetSalesComparisonData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetReceivableData]*****************************/

/*****************Start [dashGetSalesComparisonData]*****************************/

CREATE PROCEDURE [dbo].[dashGetSalesComparisonData]
	@StartDate AS datetime = NULL,
	@EndDate AS datetime = NULL,
	@SinceStartDate AS datetime = NULL,
	@SinceEndDate AS datetime = NULL,
	@SQCustName AS nvarchar(Max)='<<ALL>>',
	@SQCustCategory AS nvarchar(Max)='<<ALL>>'
AS
BEGIN
	SET NOCOUNT ON;
		SELECT tblInvCat.strCategory AS ItemCategory
		,ISNULL(NewCust.NetSalesValue, 0) AS NewCustomer
		,ISNULL(OldCust.NetSalesValue, 0) AS OldCustomer
	FROM tblInvCat
	LEFT JOIN (
		SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory
			,SUM(tblInvoiceDocDT.decLineTotExc) AS NetSalesValue
		FROM tblInvoiceDocDT
		INNER JOIN tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
		INNER JOIN tblInv ON dbo.tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
		INNER JOIN tblCustomers ON dbo.tblInvoiceDoc.strCustName = tblCustomers.strCustName
		WHERE (tblInvoiceDocDT.bitDiscountTax = 0)
			AND tblInvoiceDoc.dteJournalDate BETWEEN  @StartDate
				AND @EndDate
			AND tblCustomers.dteSince BETWEEN @SinceStartDate
				AND Cast(GETDATE() as date)
			AND tblCustomers.strCustName IN (
				CASE 
					WHEN @SQCustName = '<<ALL>>'
						THEN tblCustomers.strCustName
					ELSE @SQCustName
					END
				)
			AND tblCustomers.strCustCategory IN (
				CASE 
					WHEN @SQCustCategory = '<<ALL>>'
						THEN tblCustomers.strCustCategory
					ELSE @SQCustCategory
					END
				)
		GROUP BY tblInv.strCategory
		) AS NewCust ON tblInvCat.strCategory = NewCust.ItemCategory
	LEFT JOIN (
		SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory
			,SUM(tblInvoiceDocDT.decLineTotExc) AS NetSalesValue
		FROM tblInvoiceDocDT
		INNER JOIN tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
		INNER JOIN tblInv ON dbo.tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
		INNER JOIN tblCustomers ON dbo.tblInvoiceDoc.strCustName = tblCustomers.strCustName
		WHERE (tblInvoiceDocDT.bitDiscountTax = 0)
			AND tblInvoiceDoc.dteJournalDate BETWEEN @StartDate
				AND @EndDate
			AND tblCustomers.dteSince < @SinceStartDate
			AND tblCustomers.strCustName IN (
				CASE 
					WHEN @SQCustName = '<<ALL>>'
						THEN tblCustomers.strCustName
					ELSE @SQCustName
					END
				)
			AND tblCustomers.strCustCategory IN (
				CASE 
					WHEN @SQCustCategory = '<<ALL>>'
						THEN tblCustomers.strCustCategory
					ELSE @SQCustCategory
					END
				)
		GROUP BY tblInv.strCategory
		) AS OldCust ON tblInvCat.strCategory = OldCust.ItemCategory
	ORDER BY ItemCategory
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetSalesData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetSalesComparisonData]*****************************/

/*****************Start [dashGetSalesData]*****************************/

CREATE PROCEDURE [dbo].[dashGetSalesData]
	@SalesJournalStartDate AS datetime = NULL,
	@SalesJournalEndDate AS datetime = NULL,
	@SQCustName AS nvarchar(Max)='<<ALL>>',
	@SQCustCategory AS nvarchar(Max)='<<ALL>>',
	@SQSalesPersons AS nvarchar(Max)='<<ALL>>'
AS
BEGIN
	SET NOCOUNT ON;

		SELECT dbo.tblInvoiceDoc.strInvDocID AS Document#,
		 dbo.tblInvoiceDoc.dteJournalDate AS TransactionDate, 
		 dbo.tblInvoiceDoc.dteRequired AS RequiredDate, 
		 dbo.tblInvoiceDoc.strCustName AS CustomerNumber, 
		 dbo.tblCustomers.strCustDesc AS CustomerName, 
		 dbo.tblCustomers.strCustCategory AS CustomerCategory, 
		 Sum(dbo.tblInvoiceDocDT.decQty) AS Qty, 
		 Sum(dbo.tblInvoiceDocDT.decLineTotExc) AS Revenue, 
		 Sum(dbo.tblInvoiceDocDT.decCOGS) AS Cost, 
		 Sum(dbo.tblInvoiceDocDT.decLineTotExc - dbo.tblInvoiceDocDT.decCOGS) AS Profit, 
		 CAST(AVG(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN  (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2)) AS nVarchar(25)) + '%' AS GPMargin, 		
		 dbo.tblInvoiceDoc.strCurrency AS CurrencyCode,
		  dbo.tblInvoiceDoc.strSalesName AS SalesPersons
		 FROM  dbo.tblInvoiceDocDT INNER JOIN dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID 
		 INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber 
		 INNER JOIN dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName 
		 
		 WHERE (dbo.tblInvoiceDocDT.bitDiscountTax = 0)
		 AND tblInvoiceDoc.dteJournalDate BETWEEN @SalesJournalStartDate AND @SalesJournalEndDate 
		 AND  tblCustomers.strCustName IN (CASE WHEN @SQCustName='<<ALL>>' THEN tblCustomers.strCustName ELSE @SQCustName END)
		AND  tblCustomers.strCustCategory IN (CASE WHEN @SQCustCategory='<<ALL>>' THEN tblCustomers.strCustCategory ELSE @SQCustCategory END)
		AND  dbo.tblInvoiceDoc.strSalesName IN (CASE WHEN @SQSalesPersons='<<ALL>>' THEN dbo.tblInvoiceDoc.strSalesName ELSE @SQSalesPersons END)
		 GROUP BY
		  dbo.tblInvoiceDoc.strInvDocID,
		   dbo.tblInvoiceDoc.dteJournalDate,
		   dbo.tblInvoiceDoc.dteRequired,
		   dbo.tblInvoiceDoc.strCustName, 
		 dbo.tblCustomers.strCustDesc, 
		 dbo.tblCustomers.strCustCategory, 
		 dbo.tblInvoiceDoc.strCurrency,
		  dbo.tblInvoiceDoc.strSalesName 
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetSalesMixData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetSalesData]*****************************/

/*****************Start [dashGetSalesMixData]*****************************/

CREATE PROCEDURE [dbo].[dashGetSalesMixData]
	@SalesJournalStartDate AS datetime = NULL,
	@SalesJournalEndDate AS datetime = NULL,
	@SQCustName AS nvarchar(Max)='<<ALL>>',
	@SQCustCategory AS nvarchar(Max)='<<ALL>>',
	@SQSalesPersons AS nvarchar(Max)='<<ALL>>'
AS
BEGIN
	SET NOCOUNT ON;

	SELECT 	dbo.tblInvoiceDoc.strCustName AS CustomerNumber, 
	dbo.tblCustomers.strCustDesc AS CustomerName, 
	dbo.tblCustomers.strCustCategory AS CustomerCategory, 
	dbo.tblInvoiceDoc.strInvDocID AS Document#, 
	dbo.tblInvoiceDoc.dteJournalDate AS TransactionDate, 
	dbo.tblInvoiceDoc.dteRequired AS RequiredDate, 
	Sum(dbo.tblInvoiceDocDT.decQty) AS Qty, 
	Sum(dbo.tblInvoiceDocDT.decLineTotExc) AS Revenue, 
	Sum(dbo.tblInvoiceDocDT.decCOGS) AS Cost, 
	Sum(dbo.tblInvoiceDocDT.decLineTotExc - dbo.tblInvoiceDocDT.decCOGS) AS Profit,
	dbo.tblInvoiceDoc.strSalesName AS SalesPersons 
	FROM  dbo.tblInvoiceDocDT INNER JOIN dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID 
	INNER JOIN dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName 
	WHERE (dbo.tblInvoiceDocDT.bitDiscountTax = 0) 
	AND tblInvoiceDoc.dteJournalDate BETWEEN @SalesJournalStartDate AND @SalesJournalEndDate 
	AND  tblCustomers.strCustName IN (CASE WHEN @SQCustName='<<ALL>>' THEN tblCustomers.strCustName ELSE @SQCustName END)
	AND  tblCustomers.strCustCategory IN (CASE WHEN @SQCustCategory='<<ALL>>' THEN tblCustomers.strCustCategory ELSE @SQCustCategory END)
	AND  dbo.tblInvoiceDoc.strSalesName IN (CASE WHEN @SQSalesPersons='<<ALL>>' THEN dbo.tblInvoiceDoc.strSalesName ELSE @SQSalesPersons END)
	GROUP BY
	dbo.tblInvoiceDoc.strInvDocID, 
	dbo.tblInvoiceDoc.dteJournalDate, 
	dbo.tblInvoiceDoc.dteRequired, 
	dbo.tblInvoiceDoc.strCustName,
	dbo.tblCustomers.strCustDesc, 
	dbo.tblCustomers.strCustCategory,
	dbo.tblInvoiceDoc.strSalesName 
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetSalesPerson]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetSalesMixData]*****************************/

CREATE PROCEDURE [dbo].[dashGetSalesPerson]
AS
begin
Select tblSalesPersons.strSalesName as SalesPersons,tblSalesPersons.strSalesName as SalesName from tblSalesPersons where bitInactive=0 and bitIsWorkshopTechnician=0
union all
select NULL ,Null 
end
GO
/****** Object:  StoredProcedure [dbo].[dashGetTopCustomersDataByAsAt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*****************Start [dashGetTopCustomersDataByAsAt]*****************************/

Create PROCEDURE [dbo].[dashGetTopCustomersDataByAsAt] (
	@ViewTop int = 5,
	@AsAt datetime = NULL, 
	@SQCurrentYrStarts datetime = NULL
	)
AS
Begin
	SELECT TOP (@ViewTop) tblCustomers.strCustName
						,strCustDesc
						,ISNULL(SUM(tblInvoiceDoc.decTotal), 0) AS Sales
	FROM tblInvoiceDoc
	INNER JOIN tblCustomers ON tblCustomers.strCustName = tblInvoiceDoc.strCustName
	WHERE tblCustomers.bitInactive = 0
						AND tblInvoiceDoc.dteJournalDate <= @AsAt
						AND tblInvoiceDoc.bitHistoryTrans = 0
						AND tblInvoiceDoc.dteJournalDate >= @SQCurrentYrStarts
	GROUP BY tblCustomers.strCustName
						,tblCustomers.strCustDesc
	HAVING ISNULL(SUM(tblInvoiceDoc.decTotal), 0) > 0
	ORDER BY Sales DESC
						,tblCustomers.strCustName
End
GO
/****** Object:  StoredProcedure [dbo].[dashGetTopInventoryDataAsAt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetTopCustomersDataByAsAt]*****************************/

/*****************Start [dashGetTopInventoryDataAsAt]*****************************/

Create PROCEDURE [dbo].[dashGetTopInventoryDataAsAt] (
	@ViewTop int = 5,
	@AsAt datetime = NULL,
	@DisplayBy nvarchar(20)='Qty'
	)
AS
		if(@DisplayBy='Qty')
		begin
		SELECT TOP (@ViewTop) MasterTable.strPartNumber
					,MasterTable.strDesc
					,MasterTable.decSumOpenQty + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (tblInvTracking.dteJournalDate <= @AsAt)
							AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						) AS Sales
					,MasterTable.decSumOpenValue + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (tblInvTracking.dteJournalDate <= @AsAt)
							AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						) AS Value
				FROM tblInv AS MasterTable
				WHERE (intType = 1)
					AND (
						MasterTable.decSumOpenQty + (
							SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							WHERE (tblInvTracking.dteJournalDate <= @AsAt)
								AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							) + MasterTable.decSumOpenValue + (
							SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							WHERE (tblInvTracking.dteJournalDate <= @AsAt)
								AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							) <> 0
						)
					AND MasterTable.bitInactive = 0
				ORDER BY Sales DESC
					,strPartNumber

			End
			Else if(@DisplayBy='Value')
			begin
			SELECT TOP (@ViewTop) MasterTable.strPartNumber
							,MasterTable.strDesc
							,MasterTable.decSumOpenQty + (
								SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
								FROM tblInvTrackingDT
								INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
								WHERE (tblInvTracking.dteJournalDate <= @AsAt)
									AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
								) AS OnHand
							,MasterTable.decSumOpenValue + (
								SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
								FROM tblInvTrackingDT
								INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
								WHERE (tblInvTracking.dteJournalDate <= @AsAt)
									AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
								) AS Sales
						FROM tblInv AS MasterTable
						WHERE (intType = 1)
							AND (
								MasterTable.decSumOpenQty + (
									SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
									FROM tblInvTrackingDT
									INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
									WHERE (tblInvTracking.dteJournalDate <= @AsAt)
										AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
									) + MasterTable.decSumOpenValue + (
									SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
									FROM tblInvTrackingDT
									INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
									WHERE (tblInvTracking.dteJournalDate <= @AsAt)
										AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
									) <> 0
								)
							AND MasterTable.bitInactive = 0
						ORDER BY Sales DESC
							,strPartNumber
			end
GO
/****** Object:  StoredProcedure [dbo].[dashGetTopSalesItemByMarginData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetTopInventoryDataAsAt]*****************************/

/*****************Start [dashGetTopSalesItemByMarginData]*****************************/

Create PROCEDURE [dbo].[dashGetTopSalesItemByMarginData]
	@ViewTop AS INT = NULL,
	@SQLocation AS nvarchar(10) = NULL,
	@SQStart AS datetime = NULL,
	@SQEnd AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	if(@SQLocation='ALL')
	begin

		SELECT TOP (@ViewTop) tblInvTrackingDT.strPartNumber, tblInv.strDesc, 
		COUNT(tblInvTrackingDT.strPartNumber) AS No_Transaction, 
		SUM(tblInvTrackingDT.decQty) * - 1 AS Qty,
		 SUM(tblInvTrackingDT.decRevenue) AS Revenue, 
		 SUM(tblInvTrackingDT.decCOGS) AS COGS, 
		 SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS PROFIT,
		  '' AS OrderByCol, 
		  ROUND(CASE WHEN SUM(tblInvTrackingDT.decRevenue) = 0 THEN 0 ELSE (1 - (SUM(tblInvTrackingDT.decCOGS) / SUM(tblInvTrackingDT.decRevenue))) * 100 END, 1) AS Margin
		   FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
		   INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
		    INNER JOIN (SELECT DISTINCT tblJournal.lngJourID , intDept, dteJournalDate, strSource 
			FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
			WHERE tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd 
			UNION ALL 
			SELECT DISTINCT tblJournalLY.lngJourID , intDept , dteJournalDate, strSource 
			FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
			WHERE tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd 
			UNION ALL 
			SELECT DISTINCT tblJournalHist.lngJourID , intDept, dteJournalDate, strSource 
			FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID 
			WHERE tblJournalHist.dteJournalDate BETWEEN @SQStart AND @SQEnd ) Z ON tblInvTracking.lngJourID = Z.lngJourID AND tblInvTracking.strSource = Z.strSource 
			AND intType IN (1,4) AND (tblInvTracking.intModule = 2) 
			AND tblInv.bitInactive = 0 
			--AND tblInvTrackingDT.strLocName =case when @SQLocation='ALL' then tblInvTrackingDT.strLocName else @SQLocation end
			AND tblInvTracking.dteJournalDate BETWEEN @SQStart AND @SQEnd 
			GROUP BY tblInvTrackingDT.strPartNumber , tblInv.strDesc, strCategory ORDER BY PROFIT DESC, OrderByCol, tblInvTrackingDT.strPartNumber

	End
	else
	begin
		SELECT TOP (@ViewTop) tblInvTrackingDT.strPartNumber, tblInv.strDesc, 
		COUNT(tblInvTrackingDT.strPartNumber) AS No_Transaction, 
		SUM(tblInvTrackingDT.decQty) * - 1 AS Qty,
		 SUM(tblInvTrackingDT.decRevenue) AS Revenue, 
		 SUM(tblInvTrackingDT.decCOGS) AS COGS, 
		 SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS PROFIT,
		  '' AS OrderByCol, 
		  ROUND(CASE WHEN SUM(tblInvTrackingDT.decRevenue) = 0 THEN 0 ELSE (1 - (SUM(tblInvTrackingDT.decCOGS) / SUM(tblInvTrackingDT.decRevenue))) * 100 END, 1) AS Margin
		   FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
		   INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
		    INNER JOIN (SELECT DISTINCT tblJournal.lngJourID , intDept, dteJournalDate, strSource 
			FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
			WHERE tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd 
			UNION ALL 
			SELECT DISTINCT tblJournalLY.lngJourID , intDept , dteJournalDate, strSource 
			FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
			WHERE tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd 
			UNION ALL 
			SELECT DISTINCT tblJournalHist.lngJourID , intDept, dteJournalDate, strSource 
			FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID 
			WHERE tblJournalHist.dteJournalDate BETWEEN @SQStart AND @SQEnd ) Z ON tblInvTracking.lngJourID = Z.lngJourID AND tblInvTracking.strSource = Z.strSource 
			AND intType IN (1,4) AND (tblInvTracking.intModule = 2) 
			AND tblInv.bitInactive = 0 AND tblInvTrackingDT.strLocName =@SQLocation
			AND tblInvTracking.dteJournalDate BETWEEN @SQStart AND @SQEnd 
			GROUP BY tblInvTrackingDT.strPartNumber , tblInv.strDesc, strCategory ORDER BY PROFIT DESC, OrderByCol, tblInvTrackingDT.strPartNumber
	end

END
GO
/****** Object:  StoredProcedure [dbo].[dashGetTopSalesItemByQtyData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetTopSalesItemByMarginData]*****************************/

/*****************Start [dashGetTopSalesItemByQtyData]*****************************/

CREATE PROCEDURE [dbo].[dashGetTopSalesItemByQtyData]
	@ViewTop AS INT = NULL,
	@SQLocation AS nvarchar(10) = NULL,
	@StartDate AS datetime = NULL,
	@EndDate AS datetime = NULL

AS
BEGIN
	SET NOCOUNT ON;
	if(@SQLocation='ALL')
	begin
		SELECT top (@ViewTop) TRACK.strPartNumber,
		 tblInv.strDesc,
		 TRACK.decQty
		 FROM
		 (
		 SELECT strPartNumber, SUM(decQty * -1) AS decQty 
		 FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
		 WHERE 
		 strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType IN (1,4) AND bitInactive = 0)
		 
		 -- AND (strLocName = case when @SQLocation='ALL' then strLocName else @SQLocation end )
		  AND tblInvTracking.intModule = 2 
		  AND tblInvTracking.dteJournalDate between @StartDate and @EndDate
		  GROUP BY strPartNumber
		  ) 
		  TRACK INNER JOIN tblInv ON TRACK.strPartNumber = tblInv.strPartNumber 
		  WHERE TRACK.decQty > 0 
		  ORDER BY TRACK.decQty DESC, TRACK.strPartNumber
	End
	else
	begin
		  SELECT top (@ViewTop) TRACK.strPartNumber,
		 tblInv.strDesc,
		 TRACK.decQty
		 FROM
		 (
		 SELECT strPartNumber, SUM(decQty * -1) AS decQty 
		 FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
		 WHERE 
		 strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType IN (1,4) AND bitInactive = 0)
		  AND strLocName = @SQLocation
		  AND tblInvTracking.intModule = 2 
		  AND tblInvTracking.dteJournalDate between @StartDate and @EndDate
		  GROUP BY strPartNumber
		  ) 
		  TRACK INNER JOIN tblInv ON TRACK.strPartNumber = tblInv.strPartNumber 
		  WHERE TRACK.decQty > 0 
		  ORDER BY TRACK.decQty DESC, TRACK.strPartNumber
	End
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetTopSalesItemByValueData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetTopSalesItemByQtyData]*****************************/

/*****************Start [dashGetTopSalesItemByValueData]*****************************/

Create PROCEDURE [dbo].[dashGetTopSalesItemByValueData]
	@ViewTop AS INT = NULL,
	@SQLocation AS nvarchar(10) = NULL,
	@SQStart AS datetime = NULL,
	@SQEnd AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;
	BEGIN
		if(@SQLocation='ALL')
		begin
			SELECT TOP (@ViewTop) tblInvTrackingDT.strPartNumber, 
			tblInv.strDesc, 
			COUNT(tblInvTrackingDT.strPartNumber) AS No_Transaction, 
			SUM(tblInvTrackingDT.decQty) * - 1 AS Qty, 
			SUM(tblInvTrackingDT.decRevenue) AS Revenue, 
			SUM(tblInvTrackingDT.decCOGS) AS COGS, 
			SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS PROFIT, 
			'' AS OrderByCol, 
			ROUND(CASE WHEN SUM(tblInvTrackingDT.decRevenue) = 0 THEN 0 ELSE (1 - (SUM(tblInvTrackingDT.decCOGS) / SUM(tblInvTrackingDT.decRevenue))) * 100 END, 1) AS Margin 
			FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
			INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber 
			INNER JOIN 
			(SELECT DISTINCT tblJournal.lngJourID , intDept, dteJournalDate, strSource FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
			WHERE tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd 
			UNION ALL
			SELECT DISTINCT tblJournalLY.lngJourID , intDept , dteJournalDate, strSource 
			FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
			WHERE tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd 
			UNION ALL 
			SELECT DISTINCT tblJournalHist.lngJourID , intDept, dteJournalDate, strSource 
			FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID 
			WHERE tblJournalHist.dteJournalDate BETWEEN @SQStart AND @SQEnd ) Z ON tblInvTracking.lngJourID = Z.lngJourID AND tblInvTracking.strSource = Z.strSource AND intType IN (1,4) AND (tblInvTracking.intModule = 2) AND tblInv.bitInactive = 0 
			--AND tblInvTrackingDT.strLocName = case when @SQLocation='All' Then tblInvTrackingDT.strLocName else @SQLocation end  
			AND tblInvTracking.dteJournalDate BETWEEN @SQStart AND @SQEnd GROUP BY tblInvTrackingDT.strPartNumber , tblInv.strDesc, strCategory ORDER BY PROFIT DESC, OrderByCol, tblInvTrackingDT.strPartNumber
		End
		else
		begin
			SELECT TOP (@ViewTop) tblInvTrackingDT.strPartNumber, 
			tblInv.strDesc, 
			COUNT(tblInvTrackingDT.strPartNumber) AS No_Transaction, 
			SUM(tblInvTrackingDT.decQty) * - 1 AS Qty, 
			SUM(tblInvTrackingDT.decRevenue) AS Revenue, 
			SUM(tblInvTrackingDT.decCOGS) AS COGS, 
			SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS PROFIT, 
			'' AS OrderByCol, 
			ROUND(CASE WHEN SUM(tblInvTrackingDT.decRevenue) = 0 THEN 0 ELSE (1 - (SUM(tblInvTrackingDT.decCOGS) / SUM(tblInvTrackingDT.decRevenue))) * 100 END, 1) AS Margin 
			FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
			INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber 
			INNER JOIN 
			(SELECT DISTINCT tblJournal.lngJourID , intDept, dteJournalDate, strSource FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
			WHERE tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd 
			UNION ALL
			SELECT DISTINCT tblJournalLY.lngJourID , intDept , dteJournalDate, strSource 
			FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
			WHERE tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd 
			UNION ALL 
			SELECT DISTINCT tblJournalHist.lngJourID , intDept, dteJournalDate, strSource 
			FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID 
			WHERE tblJournalHist.dteJournalDate BETWEEN @SQStart AND @SQEnd ) Z ON tblInvTracking.lngJourID = Z.lngJourID AND tblInvTracking.strSource = Z.strSource AND intType IN (1,4) AND (tblInvTracking.intModule = 2) AND tblInv.bitInactive = 0 
			AND tblInvTrackingDT.strLocName =  @SQLocation  
			AND tblInvTracking.dteJournalDate BETWEEN @SQStart AND @SQEnd GROUP BY tblInvTrackingDT.strPartNumber , tblInv.strDesc, strCategory ORDER BY PROFIT DESC, OrderByCol, tblInvTrackingDT.strPartNumber
		end
	END
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetTopVendorsDataByAsAt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetTopSalesItemByValueData]*****************************/

/*****************Start [dashGetTopVendorsDataByAsAt]*****************************/

Create PROCEDURE [dbo].[dashGetTopVendorsDataByAsAt] (
	@ViewTop int = 5,
	@AsAt datetime = NULL, 
	@SQCurrentYrStarts datetime = NULL
	)
AS
	SELECT TOP (@ViewTop) tblVendors.strVendName
						,strVendDesc
						,ISNULL(SUM(tblInvoiceDocP.decTotal), 0) AS Purchases
	FROM tblInvoiceDocP
	INNER JOIN tblVendors ON tblVendors.strVendName = tblInvoiceDocP.strVendName
	WHERE tblVendors.bitInactive = 0
			AND tblInvoiceDocP.dteJournalDate <= @AsAt
			AND tblInvoiceDocP.bitHistoryTrans = 0
			AND tblInvoiceDocP.dteJournalDate >= @SQCurrentYrStarts
	GROUP BY tblVendors.strVendName
						,tblVendors.strVendDesc
	HAVING ISNULL(SUM(tblInvoiceDocP.decTotal), 0) > 0
	ORDER BY Purchases DESC,tblVendors.strVendName

GO
/****** Object:  StoredProcedure [dbo].[dashGetUserPerformanceData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetTopVendorsDataByAsAt]*****************************/

/*****************Start [dashGetUserPerformanceData]*****************************/

Create PROCEDURE [dbo].[dashGetUserPerformanceData]
	@StartDate AS datetime = NULL,
	@EndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT tblUsers.strUserName AS UserName
						,ISNULL(SalesQuotes.SalesQuotesQty, 0) AS SalesQuotesQty
						,ISNULL(SalesQuotes.SalesQuotesValue, 0) AS SalesQuotesValue
						,ISNULL(SalesOrders.SalesOrdersQty, 0) AS SalesOrdersQty
						,ISNULL(SalesOrders.SalesOrdersValue, 0) AS SalesOrdersValue
						,ISNULL(CreditRequests.CreditRequestQty, 0) AS CreditRequestQty
						,ISNULL(CreditRequests.CreditRequestValue, 0) AS CreditRequestValue
						,ISNULL(SalesInvoices.SalesInvoicesQty, 0) AS SalesInvoicesQty
						,ISNULL(SalesInvoices.SalesInvoicesValue, 0) AS SalesInvoicesValue
						,ISNULL(CreditNote.CreditNoteQty, 0) AS CreditNoteQty
						,ISNULL(CreditNote.CreditNoteValue, 0) AS CreditNoteValue
						,ISNULL(PurchaseQuotes.PurchaseQuoteQty, 0) AS PurchaseQuoteQty
						,ISNULL(PurchaseQuotes.PurchaseQuoteValue, 0) AS PurchaseQuoteValue
						,ISNULL(PurchaseOrder.PurchaseOrderQty, 0) AS PurchaseOrderQty
						,ISNULL(PurchaseOrder.PurchaseOrderValue, 0) AS PurchaseOrderValue
						,ISNULL(PurchaseInvoice.PurchaseInvoiceQty, 0) AS PurchaseInvoiceQty
						,ISNULL(PurchaseInvoice.PurchaseInvoiceValue, 0) AS PurchaseInvoiceValue
						,ISNULL(DebitNotes.DebitNotesQty, 0) AS DebitNoteQty
						,ISNULL(DebitNotes.DebitNotesValue, 0) AS DebitNoteValue
					FROM tblUsers
					LEFT JOIN (
						SELECT SUM(Z.SalesQuotesQty) AS SalesQuotesQty,
								SUM(Z.SalesQuotesValue) AS SalesQuotesValue,
								Z.strUserName 
						FROM (SELECT SUM(tblOrderDocDT.decQty) AS SalesQuotesQty
									,SUM(tblOrderDocDT.decLineTotExc) AS SalesQuotesValue
									,tblOrderDoc.strUserName
								FROM tblOrderDoc
								INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
								INNER JOIN tblCurrency ON tblCustomers.strCurrency = tblCurrency.strCurrency
								INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
									AND tblCurrency.strCurrency = tblOrderDocDT.strCurrency
								INNER JOIN tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
								INNER JOIN tblTaxCodeExt ON tblTaxCodeExt.strTaxCode = tblOrderDocDT.strTaxCode
								WHERE intDocType = 2
									AND tblOrderDoc.dteSystemDate BETWEEN @StartDate
										AND @EndDate
								GROUP BY tblOrderDoc.strUserName
	
								UNION ALL
	
								SELECT SUM(tblOrderDocQDT.decQty) AS SalesQuotesQty
									,SUM(tblOrderDocQDT.decLineTotExc) AS SalesQuotesValue
									,tblOrderDocQ.strUserName
								FROM tblOrderDocQ
								LEFT JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName
								INNER JOIN tblCurrency ON tblOrderDocQ.strCurrency = tblCurrency.strCurrency
								INNER JOIN tblOrderDocQDT ON tblOrderDocQ.strOrdDocID = tblOrderDocQDT.strOrdDocID
									AND tblCurrency.strCurrency = tblOrderDocQDT.strCurrency
								LEFT JOIN tblInv ON tblOrderDocQDT.strPartNumber = tblInv.strPartNumber
								INNER JOIN tblTaxCodeExt ON tblTaxCodeExt.strTaxCode = tblOrderDocQDT.strTaxCode
								WHERE tblOrderDocQ.dteSystemDate BETWEEN @StartDate
										AND @EndDate
								GROUP BY tblOrderDocQ.strUserName) Z
						GROUP BY Z.strUserName) AS SalesQuotes ON tblUsers.strUserName = SalesQuotes.strUserName
					LEFT JOIN (
						SELECT SUM(tblOrderDocDT.decQty) AS SalesOrdersQty
							,SUM(tblOrderDocDT.decLineTotExc) AS SalesOrdersValue
							,tblOrderDoc.strUserName
						FROM tblOrderDoc
						INNER JOIN dbo.tblOrderDocDT ON dbo.tblOrderDoc.strOrdDocID = dbo.tblOrderDocDT.strOrdDocID
						INNER JOIN dbo.tblInv ON dbo.tblOrderDocDT.strPartNumber = dbo.tblInv.strPartNumber
						INNER JOIN dbo.tblTaxCodeExt ON dbo.tblOrderDocDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode
						INNER JOIN dbo.tblCustomers ON dbo.tblOrderDoc.strCustName = dbo.tblCustomers.strCustName
						WHERE (tblOrderDoc.intDocType = 1)
							AND tblOrderDoc.dteSystemDate BETWEEN @StartDate
								AND @EndDate
							AND tblOrderDoc.strOrdDocID NOT LIKE 'CR%'
						GROUP BY tblOrderDoc.strUserName
						) AS SalesOrders ON tblUsers.strUserName = SalesOrders.strUserName
					LEFT JOIN (
						SELECT SUM(tblOrderDocDT.decQty) AS CreditRequestQty
							,SUM(tblOrderDocDT.decLineTotExc) AS CreditRequestValue
							,tblOrderDoc.strUserName
						FROM tblOrderDoc
						INNER JOIN dbo.tblOrderDocDT ON dbo.tblOrderDoc.strOrdDocID = dbo.tblOrderDocDT.strOrdDocID
						INNER JOIN dbo.tblInv ON dbo.tblOrderDocDT.strPartNumber = dbo.tblInv.strPartNumber
						INNER JOIN dbo.tblTaxCodeExt ON dbo.tblOrderDocDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode
						INNER JOIN dbo.tblCustomers ON dbo.tblOrderDoc.strCustName = dbo.tblCustomers.strCustName
						WHERE (tblOrderDoc.intDocType = 1)
							AND tblOrderDoc.dteSystemDate BETWEEN @StartDate
								AND @EndDate
							AND tblOrderDoc.strOrdDocID LIKE 'CR%'
						GROUP BY tblOrderDoc.strUserName
						) AS CreditRequests ON tblUsers.strUserName = CreditRequests.strUserName
					LEFT JOIN (
						SELECT SUM(dbo.tblInvoiceDocDT.decQty) AS SalesInvoicesQty
							,SUM(dbo.tblInvoiceDocDT.decLineTotExc) AS SalesInvoicesValue
							,dbo.tblInvoiceDoc.strUserName
						FROM dbo.tblInvoiceDocDT
						INNER JOIN dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID
						INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber
						INNER JOIN dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName
						WHERE (dbo.tblInvoiceDocDT.bitDiscountTax = 0)
							AND tblInvoiceDoc.dteSystemDate BETWEEN @StartDate
								AND @EndDate
							AND tblInvoiceDoc.strInvDocID NOT LIKE 'CN%'
						GROUP BY dbo.tblInvoiceDoc.strUserName
						) AS SalesInvoices ON tblUsers.strUserName = SalesInvoices.strUserName
					LEFT JOIN (
						SELECT SUM(dbo.tblInvoiceDocDT.decQty) AS CreditNoteQty
							,SUM(dbo.tblInvoiceDocDT.decLineTotExc) AS CreditNoteValue
							,dbo.tblInvoiceDoc.strUserName
						FROM dbo.tblInvoiceDocDT
						INNER JOIN dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID
						INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber
						INNER JOIN dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName
						WHERE (dbo.tblInvoiceDocDT.bitDiscountTax = 0)
							AND tblInvoiceDoc.dteSystemDate BETWEEN @StartDate
								AND @EndDate
							AND tblInvoiceDoc.strInvDocID LIKE 'CN%'
						GROUP BY dbo.tblInvoiceDoc.strUserName
						) AS CreditNote ON tblUsers.strUserName = CreditNote.strUserName
					LEFT JOIN (
						SELECT SUM(tblOrderDocPDT.decBuyQty) AS PurchaseQuoteQty
							,SUM(tblOrderDocPDT.decLineTotExc) AS PurchaseQuoteValue
							,tblOrderDocP.strUserName
						FROM tblOrderDocP
						INNER JOIN dbo.tblVendors ON dbo.tblOrderDocP.strVendName = dbo.tblVendors.strVendName
						INNER JOIN dbo.tblCurrency ON dbo.tblVendors.strCurrency = dbo.tblCurrency.strCurrency
						INNER JOIN dbo.tblOrderDocPDT ON dbo.tblOrderDocP.strOrdPDocID = dbo.tblOrderDocPDT.strOrdPDocID
							AND dbo.tblCurrency.strCurrency = dbo.tblOrderDocPDT.strCurrency
						INNER JOIN dbo.tblInv ON dbo.tblOrderDocPDT.strPartNumber = dbo.tblInv.strPartNumber
						INNER JOIN dbo.tblTaxCodeExt ON dbo.tblTaxCodeExt.strTaxCode = dbo.tblOrderDocPDT.strTaxCode
						WHERE (tblOrderDocP.intDocType = 2)
							AND tblOrderDocP.dteSystemDate BETWEEN @StartDate
								AND @EndDate
						GROUP BY tblOrderDocP.strUserName
						) AS PurchaseQuotes ON tblUsers.strUserName = PurchaseQuotes.strUserName
					LEFT JOIN (
						SELECT SUM(tblOrderDocPDT.decBuyQty) AS PurchaseOrderQty
							,SUM(tblOrderDocPDT.decLineTotExc) AS PurchaseOrderValue
							,tblOrderDocP.strUserName
						FROM tblOrderDocP
						INNER JOIN dbo.tblOrderDocPDT ON dbo.tblOrderDocP.strOrdPDocID = dbo.tblOrderDocPDT.strOrdPDocID
						INNER JOIN dbo.tblInv ON dbo.tblOrderDocPDT.strPartNumber = dbo.tblInv.strPartNumber
						INNER JOIN dbo.tblTaxCodeExt ON dbo.tblOrderDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode
						INNER JOIN dbo.tblVendors ON dbo.tblOrderDocP.strVendName = dbo.tblVendors.strVendName
						LEFT JOIN dbo.tblOrderDoc ON dbo.tblOrderDocPDT.strOrdSODocID = dbo.tblOrderDoc.strOrdDocID
						LEFT JOIN dbo.tblCustomers ON dbo.tblCustomers.strCustName = dbo.tblOrderDoc.strCustName
						WHERE (tblOrderDocP.intDocType = 1)
							AND tblOrderDocP.dteSystemDate BETWEEN @StartDate
								AND @EndDate
						GROUP BY tblOrderDocP.strUserName
						) AS PurchaseOrder ON tblUsers.strUserName = PurchaseOrder.strUserName
					LEFT JOIN (
						SELECT SUM(dbo.tblInvoiceDocPDT.decBuyQty) AS PurchaseInvoiceQty
							,SUM(dbo.tblInvoiceDocPDT.decLineTotExc) AS PurchaseInvoiceValue
							,tblInvoiceDocP.strUserName
						FROM dbo.tblInvoiceDocP
						INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID
						INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber
						INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode
						INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName
						WHERE tblInvoiceDocP.dteSystemDate BETWEEN @StartDate
								AND @EndDate
							AND tblInvoiceDocP.strInvPDocID NOT LIKE 'DN%'
						GROUP BY tblInvoiceDocP.strUserName
						) AS PurchaseInvoice ON tblUsers.strUserName = PurchaseInvoice.strUserName
					LEFT JOIN (
						SELECT SUM(dbo.tblInvoiceDocPDT.decBuyQty) AS DebitNotesQty
							,SUM(dbo.tblInvoiceDocPDT.decLineTotExc) AS DebitNotesValue
							,tblInvoiceDocP.strUserName
						FROM dbo.tblInvoiceDocP
						INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID
						INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber
						INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode
						INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName
						WHERE tblInvoiceDocP.dteSystemDate BETWEEN @StartDate
								AND @EndDate
							AND tblInvoiceDocP.strInvPDocID LIKE 'DN%'
						GROUP BY tblInvoiceDocP.strUserName
						) AS DebitNotes ON tblUsers.strUserName = DebitNotes.strUserName
					ORDER BY tblUsers.strUserName
END
GO
/****** Object:  StoredProcedure [dbo].[dashGetVendorCategory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetUserPerformanceData]*****************************/

/*****************Start [dashGetVendorCategory]*****************************/

Create Procedure [dbo].[dashGetVendorCategory]
AS
Begin
Select VendorCategory from (Select tblVendorCat.strVendCategory as VendorCategory from tblVendorCat Where tblVendorCat.bitInactive=0
Union All
Select 'ALL')AS TT Order by VendorCategory asc
End
GO
/****** Object:  StoredProcedure [dbo].[dashGetVendorCategoryList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetVendorList]*****************************/

/*****************Start [dashGetVendorCategoryList]*****************************/

Create Procedure  [dbo].[dashGetVendorCategoryList]
As
Begin
Select strVendCategory as VendorCategory,strDesc as VendorDesc,bitInactive as Active from tblVendorCat where bitInactive=0
End
GO
/****** Object:  StoredProcedure [dbo].[dashGetVendorDetailsList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[dashGetVendorDetailsList]    Script Date: 23-03-2020 12:23:00 AM ******/
CREATE Procedure [dbo].[dashGetVendorDetailsList]
As
Begin
select strVendName as VendorName,strVendDesc as Description ,strVendCategory as VendCategory from tblVendors
where bitInactive=0
End
GO
/****** Object:  StoredProcedure [dbo].[dashGetVendorList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetCustomerList]*****************************/

/*****************Start [dashGetVendorList]*****************************/

Create Procedure [dbo].[dashGetVendorList]
As
Begin
select strVendName as VendorNumber,strVendDesc as VendorName,strVendCategory as VendorCategory from tblVendors
where bitInactive=0
End
GO
/****** Object:  StoredProcedure [dbo].[dashGetWarehouseLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetVendorCategory]*****************************/

/*****************Start [dashGetWarehouseLocation]*****************************/

Create Procedure [dbo].[dashGetWarehouseLocation]
As
begin

select strLocName as Warehouse from (Select strLocName from tblInvLoc
union all
select 'ALL') as TT order by strLocName

end
GO
/****** Object:  StoredProcedure [dbo].[dashInsertDashboard]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetWarehouseLocation]*****************************/

/*****************Start [dashInsertDashboard]*****************************/

CREATE PROCEDURE [dbo].[dashInsertDashboard] (
	 @strViewName nvarchar(800)
	,@strDesc nvarchar(800)
	,@bitCustomCube bit
	,@strViewDefinition nvarchar(Max)
	)
AS
BEGIN
	INSERT INTO tblDashboards(strViewName,strDesc,bitCustomCube,strViewDefinition,bitisAvailable) VALUES (@strViewName,@strDesc,@bitCustomCube,@strViewDefinition,1)
END
GO
/****** Object:  StoredProcedure [dbo].[dashInsertDashboardTracking]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashInsertDashboard]*****************************/

/*****************Start [dashInsertDashboardTracking]*****************************/

Create Procedure [dbo].[dashInsertDashboardTracking]
@strViewName nvarchar(400)=null,
@dteSystemDate datetime=null,
@strUserName nvarchar(20)=null,
@intType int=null
As
begin
	insert into tblDashboardTracking(strViewName,dteSystemDate,strUserName,intType)
	values (@strViewName,@dteSystemDate,@strUserName,@intType)
end

GO
/****** Object:  StoredProcedure [dbo].[dashUpdateDashboard]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashInsertDashboardTracking]*****************************/

/*****************Start [dashUpdateDashboard]*****************************/

Create PROCEDURE [dbo].[dashUpdateDashboard] (
	 @strViewName nvarchar(800)
	,@strViewDefinition nvarchar(Max)
	)
AS
BEGIN
	Update tblDashboards set strViewDefinition=@strViewDefinition where strViewName=@strViewName
END
GO
/****** Object:  StoredProcedure [dbo].[DefaultTaxCode]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[DefaultTaxCode]    Script Date: 10-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[DefaultTaxCode]

AS
BEGIN
	SELECT strTaxCode FROM tblTaxCodes WHERE bitDefCustomers = 1
END
GO

/****** Object:  StoredProcedure [dbo].[DeleteAccountsSec]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DeleteAccountsSec]
(
	@strUserName varchar(250)
)
AS
DELETE FROM tblAccountsSec WHERE strUserName = @strUserName
GO
/****** Object:  StoredProcedure [dbo].[DeleteActionType]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetActionTypeListByName] (CRM)**********/


/********* Start [DeleteActionType] (CRM)**********/

Create Procedure [dbo].[DeleteActionType]
@ActionType nvarchar(900)
,@CreatedUser nvarchar(400)
As
begin
Delete from tblCRMActionType where ActionType=@ActionType
end
GO
/****** Object:  StoredProcedure [dbo].[DeleteActivity]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetActivityListByName] (CRM)**********/


/********* Start [DeleteActivity] (CRM)**********/

CREATE Procedure [dbo].[DeleteActivity]
@ActivityName nvarchar(900)
,@CreatedUser nvarchar(400)
As
begin
Delete from tblCRMPreActivityList where ActivityName=@ActivityName
end
GO
/****** Object:  StoredProcedure [dbo].[DeleteActivityActionsStatus]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetActivityActionsStatusListByName] (CRM)**********/


/********* Start [DeleteActivityActionsStatus] (CRM)**********/

Create Procedure [dbo].[DeleteActivityActionsStatus]
@StatusType	nvarchar(400),
@CreatedUser	nvarchar(400)
As
Begin
Delete from tblCRMActivityActionsStatus Where StatusType=@StatusType
End
GO
/****** Object:  StoredProcedure [dbo].[DeleteActivityGroup]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetActivityGroupListByName] (CRM)**********/


/********* Start [DeleteActivityGroup] (CRM)**********/

CREATE PROCEDURE [dbo].[DeleteActivityGroup] 
@ActivityGroupName	nvarchar(400),
@CreatedUser	nvarchar(400)
AS
BEGIN
	Delete from tblCRMActivityGroup Where ActivityGroupName=@ActivityGroupName
END
GO
/****** Object:  StoredProcedure [dbo].[DeleteActivityGroupUsers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [DeleteActivityGroup] (CRM)**********/


/********* Start [DeleteActivityGroupUsers] (CRM)**********/

CREATE procedure [dbo].[DeleteActivityGroupUsers]
(
@ActivityGroupName as nvarchar(400)
)
as
begin
	delete from  tblCRMAcitvityGroupUsers where ActivityGroupName=@ActivityGroupName
end
GO
/****** Object:  StoredProcedure [dbo].[DeleteActivityStatus]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetActivityStatusListByName] (CRM)**********/


/********* Start [DeleteActivityStatus] (CRM)**********/

CREATE Procedure [dbo].[DeleteActivityStatus]
@StatusType	nvarchar(400),
@CreatedUser	nvarchar(400)
As
Begin
Delete from tblCRMActivityStatus Where StatusType=@StatusType
End
GO
/****** Object:  StoredProcedure [dbo].[DeleteAllPastelData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [GetAllTermsforPicker]*****************************/

/*****************Start [DeleteAllPastelData]*****************************/
CREATE PROCEDURE [dbo].[DeleteAllPastelData]  
AS  
BEGIN  
  
TRUNCATE TABLE tblUtilityAccounts  
TRUNCATE TABLE tblUtilityAccountSets  
TRUNCATE TABLE tblUtilityAccountSetsUnassigned  
TRUNCATE TABLE tblUtilityCurrency  
TRUNCATE TABLE tblUtilityCustomerCat  
TRUNCATE TABLE tblUtilityCustomerLoc  
TRUNCATE TABLE tblUtilityCustomers  
TRUNCATE TABLE tblUtilityInv  
TRUNCATE TABLE tblUtilityInvCat  
TRUNCATE TABLE tblUtilityInvLoc  
TRUNCATE TABLE tblUtilityPervCurrencyFile  
TRUNCATE TABLE tblUtilityPervCustomerCategories  
TRUNCATE TABLE tblUtilityPervCustomerMaster  
TRUNCATE TABLE tblUtilityPervDeliveryAddresses  
TRUNCATE TABLE tblUtilityPervFinancialCategories  
TRUNCATE TABLE tblUtilityPervHistoryHeader  
TRUNCATE TABLE tblUtilityPervHistoryLines  
TRUNCATE TABLE tblUtilityPervInventory  
TRUNCATE TABLE tblUtilityPervInventoryCategory  
TRUNCATE TABLE tblUtilityPervInventoryGroups  
TRUNCATE TABLE tblUtilityPervLedgerMaster  
TRUNCATE TABLE tblUtilityPervLedgerParameters  
TRUNCATE TABLE tblUtilityPervLedgerTransactions  
TRUNCATE TABLE tblUtilityPervMultiStore  
TRUNCATE TABLE tblUtilityPervMultiStoreTrn  
TRUNCATE TABLE tblUtilityPervOpenItem  
TRUNCATE TABLE tblUtilityPervSalesmanMaster  
TRUNCATE TABLE tblUtilityPervSupplierCategories  
TRUNCATE TABLE tblUtilityPervSupplierMaster  
TRUNCATE TABLE tblUtilityPervTaxDescription  
TRUNCATE TABLE tblUtilityPervTaxParameters  
TRUNCATE TABLE tblUtilitySalesPersons  
TRUNCATE TABLE tblUtilitySetupConnection  
TRUNCATE TABLE tblUtilityTaxCodeExt  
TRUNCATE TABLE tblUtilityTaxCodesMap  
TRUNCATE TABLE tblUtilityTaxDef  
TRUNCATE TABLE tblUtilityTerms  
TRUNCATE TABLE tblUtilityVendorCat  
TRUNCATE TABLE tblUtilityVendors  
TRUNCATE TABLE tblUtilityProjects
TRUNCATE TABLE tblUtilityPervCostCodes  
TRUNCATE TABLE tblUtilityPervCashBookCurrency  

  
END  
GO
/****** Object:  StoredProcedure [dbo].[DeleteApprovalsDocLimit]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


/*********** End [InsertUpdateApproversVendEmpLimits]***********/

/*********** Start [DeleteApprovalsDocLimit]***********/

---------------------------------
CREATE  PROCEDURE [dbo].[DeleteApprovalsDocLimit] (
	@Username AS NVARCHAR(50)
	,@ApproverType AS INT
	,@GroupId INT
	)
AS
BEGIN
	IF (@GroupId <> 0)
	BEGIN
		DELETE
		FROM tblApprovalsDocLimit
		WHERE intApproverType = @ApproverType
			AND intApproverGroupId = @GroupId
	END
	ELSE
	BEGIN
		DELETE
		FROM tblApprovalsDocLimit
		WHERE intApproverType = @ApproverType
			AND strUserName = @Username
	END

	IF (@GroupId <> 0)
	BEGIN
		DELETE
		FROM tblPQApprovalsGroup
		WHERE ID = @GroupId
	END
END
GO

/****** Object:  StoredProcedure [dbo].[DeleteApproversVendEmpLimits]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [DeleteApprovalsDocLimit]***********/

/*********** Start [DeleteApproversVendEmpLimits]***********/

---------------------------------
CREATE PROCEDURE [dbo].[DeleteApproversVendEmpLimits] @VendorEmpName AS NVARCHAR(100)
	,@ApproverType AS INT
AS
BEGIN
	DELETE
	FROM tblApproversVendEmpLimits
	WHERE strVendorEmpName = @VendorEmpName
		AND intApproverType = @ApproverType
END
GO
/****** Object:  StoredProcedure [dbo].[DeleteAssetImages]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[DeleteAssetImages]
    (
      @strAssetCode nvarchar(20)
    )
AS
BEGIN
    SET NOCOUNT ON
    DELETE  FROM [dbo].[tblAssetImg]
    WHERE [strAssetCode] = @strAssetCode
	END
GO
/****** Object:  StoredProcedure [dbo].[DeleteBankReconData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DeleteBankReconData]
(
	@dteClearOnBefore datetime
)
AS
DELETE FROM tblBankRecSum WHERE bitPosted = 1 AND dteDatePosted <= @dteClearOnBefore
DELETE FROM tblBankRecTrans WHERE lngBRSumIDPostedTo <> 0 AND lngBRSumIDPostedTo NOT IN (SELECT lngBRSumID FROM tblBankRecSum)
GO
/****** Object:  StoredProcedure [dbo].[DeleteBICubeView]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************** End [spbiSalesVSPurchases] ****************/

/************************** Start [DeleteBICubeView] ****************/


Create Procedure [dbo].[DeleteBICubeView]
(
@cubeName nvarchar(Max)=null,
@userName nvarchar(Max)=null
)
As
begin
	Delete from tblCubes where strCubeName=@cubeName
end
GO
/****** Object:  StoredProcedure [dbo].[DeleteBinBag]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****************End [GetBagSize]*****************************/

CREATE PROCEDURE [dbo].[DeleteBinBag]
(
    @Id int
)
AS
BEGIN
    DELETE FROM tblOptBagSize WHERE lngID =  @Id
END
GO
/****** Object:  StoredProcedure [dbo].[DeleteCenterEntAndGetJournalEnt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateOpenOrdersAndPickTickets] ***********/

/*********** Start [DeleteCenterEntAndGetJournalEnt] ***********/
CREATE PROCEDURE [dbo].[DeleteCenterEntAndGetJournalEnt]
(    
    @IsUserLastYear bit,
    @JourID bigint  
)
AS
BEGIN
     IF @IsUserLastYear = 1
	 BEGIN
		DELETE FROM tblCenterEntLY WHERE lngJourID = @JourID

		SELECT a.intLineNum AS LineNum,
		       a.intGLNumber AS GLNumber,
		       b.strDesc AS [Description],
		       b.intAccType AS AccountType,
		       a.decAmount AS Amount
		FROM tblJournalEntLY AS a
		INNER JOIN tblAccountsLY AS b ON a.intGLNumber = b.intGLNumber
		WHERE (a.lngJourID = @JourID)
		  AND (a.intGLNumber IN
		         (SELECT intGLNumber
		          FROM tblAccountsLY
		          WHERE bitAllowCenters = 1
		            AND intAccType <> 3))
	 END
	 ELSE
	 BEGIN
		DELETE FROM tblCenterEnt WHERE lngJourID = @JourID

		SELECT a.intLineNum AS LineNum,
		       a.intGLNumber AS GLNumber,
		       b.strDesc AS [Description],
		       b.intAccType AS AccountType,
		       a.decAmount AS Amount
		FROM tblJournalEnt AS a
		INNER JOIN tblAccounts AS b ON a.intGLNumber = b.intGLNumber
		WHERE (a.lngJourID = @JourID)
		  AND (a.intGLNumber IN
		         (SELECT intGLNumber
		          FROM tblAccounts
		          WHERE bitAllowCenters = 1
		            AND intAccType <> 3))
	 END
END
GO
/****** Object:  StoredProcedure [dbo].[DeleteCRMActionsDocuments]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/********* Start [DeleteCRMActionsDocuments] (CRM)**********/

Create PROCEDURE [dbo].[DeleteCRMActionsDocuments]
(    
 @ActivityActionID	bigint
)
AS
BEGIN
     Delete From tblCRMActivitiesActionFile where tblCRMActivitiesActionFile.ActivityActionID=@ActivityActionID
END
GO
/****** Object:  StoredProcedure [dbo].[DeleteCRMActivitiesActions]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [UpdateCRMActivities] (CRM)**********/


/********* Start [DeleteCRMActivitiesActions] (CRM)**********/

Create Procedure [dbo].[DeleteCRMActivitiesActions]
@ActivityID	bigint
AS
begin
delete from tblCRMActivityActions where ActivityID=@ActivityID
End
GO
/****** Object:  StoredProcedure [dbo].[DeleteCRMActivitiesUserFields]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************END [UpdateCRMActivitiesUserFields]**********************************/

/************************START [DeleteCRMActivitiesUserFields]***********************************/

CREATE PROCEDURE [dbo].[DeleteCRMActivitiesUserFields] 
	 @FieldId	bigint
	,@ActivityID	bigint
AS
BEGIN
	Delete from tblCRMUserActivityFields 
	Where FieldId =@FieldId and ActivityID=@ActivityID
END
GO
/****** Object:  StoredProcedure [dbo].[DeleteCRMActivityAction]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/********* End [UpdateCRMActivitiesActionsStatus] (CRM)**********/

/********* Start [DeleteCRMActivityAction] (CRM)**********/

CREATE  PROCEDURE [dbo].[DeleteCRMActivityAction] 
@ActivityActionID BIGINT,
@ActivityID BIGINT
AS
BEGIN
	DELETE
	FROM tblCRMActivitiesActionFile
	WHERE ActivityActionID = @ActivityActionID

	DELETE
	FROM tblCRMActivityActions
	WHERE ActivityActionID = @ActivityActionID
END
GO
/****** Object:  StoredProcedure [dbo].[DeleteCRMActivityDocuments]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [InsertCRMActivities] (CRM)**********/



/********* Start [DeleteCRMActivityDocuments] (CRM)**********/

Create PROCEDURE [dbo].[DeleteCRMActivityDocuments]
(    
 @ActivityID	bigint
)
AS
BEGIN
     Delete From tblCRMActivitiesFile where tblCRMActivitiesFile.ActivityID=@ActivityID
END
GO
/****** Object:  StoredProcedure [dbo].[DeleteCRMActivityGroupUserFields]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE Procedure [dbo].[DeleteCRMActivityGroupUserFields]
@ActivityGroupName nvarchar(Max)
,@FieldId bigint
As
Begin
         Delete from tblCRMActivityGroupUserFields Where ActivityGroupName=@ActivityGroupName and FieldId=@FieldId
End
GO
/****** Object:  StoredProcedure [dbo].[DeleteCRMActivtiy]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [DeleteCRMActivtiy] ***********/


CREATE PROCEDURE [dbo].[DeleteCRMActivtiy] @ActivityID BIGINT
AS
BEGIN
	DELETE
	FROM tblCRMActivitiesFile
	WHERE ActivityID = @ActivityID

	DELETE
	FROM tblCRMActivitiesActionFile
	WHERE ActivityActionID IN (
			SELECT tblCRMActivityActions.ActivityActionID
			FROM tblCRMActivityActions
			WHERE ActivityID = @ActivityID
			)

	DELETE
	FROM tblCRMActivityActions
	WHERE ActivityID = @ActivityID

	DELETE
	FROM tblCRMActivities
	WHERE ActivityID = @ActivityID
END
GO
/****** Object:  StoredProcedure [dbo].[DeleteCRMUserFields]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************END [InsertCRMActivitiesUserFields]***********************************/

/************************START [DeleteCRMUserFields]***********************************/

CREATE PROCEDURE [dbo].[DeleteCRMUserFields] 
	 @ActivityID	bigint
AS
BEGIN
	Delete from tblCRMUserActivityFields 
	Where ActivityID=@ActivityID
END
GO
/****** Object:  StoredProcedure [dbo].[DeleteCustomerTradingTimes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/******************* End [FindCustomerTradingTimes]   ********************/

/******************* Start  [DeleteCustomerTradingTimes] ********************/

CREATE PROCEDURE [dbo].[DeleteCustomerTradingTimes]
	-- Add the parameters for the stored procedure here
	@CustName NVARCHAR(50)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	-- Insert statements for procedure here
	DELETE
	FROM tblCustomerTradingTimes
	WHERE strCustName = @CustName
END
GO
/****** Object:  StoredProcedure [dbo].[DeleteCustWithoutSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DeleteCustWithoutSales]
AS

BEGIN TRANSACTION            
	BEGIN TRY

DELETE FROM tblCustomers WHERE strCustName IN (SELECT strCustName FROM tblCustomers WHERE (strCustName NOT IN ( SELECT strCustName FROM tblInvoiceDoc WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblOrderDocDA WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblOrderDoc WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblOrderDocQ WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblCustTrans WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblManJob WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblPOSOpts WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblBankManagerMappings WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblProjects WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblCustPay WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblActivities WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblBankManagerImports WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblContainers WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblCustomerCenter WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblCustomerEx WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblCustomerExWT WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblCustomerF WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblCustomerLoc WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblCustomerSales WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblCustomerTradingTimes WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblCustomersT WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblEvents WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblIntBillTracking WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblInvCustomer WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblPickTickets WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblReminders WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblReOrderDoc WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblSalesOrderEDICustomers WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblSalesRE WHERE strCustName IS NOT NULL UNION SELECT strCustName FROM tblShipments WHERE strCustName IS NOT NULL )))

IF @@TRANCOUNT > 0
		    COMMIT TRANSACTION
END TRY
BEGIN CATCH
	IF @@TRANCOUNT > 0
	    ROLLBACK TRANSACTION
	
	DECLARE @ErrMsg          NVARCHAR(4000),
	        @ErrSeverity     INT
	
	SELECT @ErrMsg = ERROR_MESSAGE(),
	       @ErrSeverity = ERROR_SEVERITY()
	
	RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
GO
/****** Object:  StoredProcedure [dbo].[DeleteDocumentSalesModule]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DeleteDocumentSalesModule]
(
	@dteClearOnBefore datetime
)
AS

BEGIN TRANSACTION            
	BEGIN TRY

DELETE FROM tblOrderDoc WHERE intDocType = 2 AND dteJournalDate <= @dteClearOnBefore

DELETE FROM tblOrderDoc WHERE intDocType = 1 AND (bitCleared = 1) AND (dteJournalDate <= @dteClearOnBefore) 
AND (strOrdDocID NOT IN (SELECT strOrdDocID FROM tblInvoiceDoc WHERE strOrdDocID IS NOT NULL UNION SELECT strOrdDocID FROM tblOrderDocPGDT WHERE strOrdDocID IS NOT NULL))

IF @@TRANCOUNT > 0
		    COMMIT TRANSACTION
END TRY
BEGIN CATCH
	IF @@TRANCOUNT > 0
	    ROLLBACK TRANSACTION
	
	DECLARE @ErrMsg          NVARCHAR(4000),
	        @ErrSeverity     INT
	
	SELECT @ErrMsg = ERROR_MESSAGE(),
	       @ErrSeverity = ERROR_SEVERITY()
	
	RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
GO
/****** Object:  StoredProcedure [dbo].[DeleteInventoryTrackingData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DeleteInventoryTrackingData]
(
	@dteClearOnBefore datetime
)
AS

BEGIN TRANSACTION            
	BEGIN TRY

CREATE TABLE #tblInventoryData
(
	ID int NOT NULL IDENTITY (1,1) PRIMARY KEY,
	PartNumber varchar(100),
	Location varchar(20),
	QtyNetChange MONEY,
	ValueNetChange MONEY
)

Insert into #tblInventoryData
SELECT tblInvTrackingDT.strPartNumber, tblInvTrackingDT.strLocName, SUM(tblInvTrackingDT.decQtyIn) - SUM(tblInvTrackingDT.decQtyOut), 
SUM(tblInvTrackingDT.decValueIn) - SUM(tblInvTrackingDT.decValueOut) 
FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
WHERE (tblInvTracking.dteJournalDate <= @dteClearOnBefore) AND (tblInvTrackingDT.bitService = 0) 
GROUP BY tblInvTrackingDT.strPartNumber, tblInvTrackingDT.strLocName 
ORDER BY tblInvTrackingDT.strPartNumber, tblInvTrackingDT.strLocName

declare @PartNumber varchar(100),
@Location varchar(20),
@QtyNetChange MONEY,
@ValueNetChange MONEY,
@id int

WHILE((Select Count(1) from #tblInventoryData) > 0)
BEGIN
	Select TOP 1 @id = ID,@PartNumber = PartNumber,@Location = Location,@QtyNetChange = QtyNetChange,@ValueNetChange = ValueNetChange from #tblInventoryData

	UPDATE tblInvExt SET decOpenQty = decOpenQty + @QtyNetChange, decOpenValue = decOpenValue + @ValueNetChange WHERE strPartNumber = @PartNumber AND strLocName = @Location

	UPDATE tblInv SET decSumOpenQty = decSumOpenQty + @QtyNetChange, decSumOpenValue = decSumOpenValue + @ValueNetChange WHERE strPartNumber = @PartNumber

	DELETE from #tblInventoryData where ID = @id
END

DELETE FROM tblInvTracking WHERE dteJournalDate <= @dteClearOnBefore

IF @@TRANCOUNT > 0
		    COMMIT TRANSACTION
END TRY
BEGIN CATCH
	IF @@TRANCOUNT > 0
	    ROLLBACK TRANSACTION
	
	DECLARE @ErrMsg          NVARCHAR(4000),
	        @ErrSeverity     INT
	
	SELECT @ErrMsg = ERROR_MESSAGE(),
	       @ErrSeverity = ERROR_SEVERITY()
	
	RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
GO
/****** Object:  StoredProcedure [dbo].[DeleteInvItemsWithoutSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DeleteInvItemsWithoutSales]
AS
BEGIN TRANSACTION

BEGIN TRY
	DELETE
	FROM tblInv
	WHERE (decSumAvail = 0)
		AND (decSumAlloc = 0)
		AND (decSumOnHand = 0)
		AND (decSumValue = 0)
		AND (decSumOnOrder = 0)
		AND (
			strPartNumber NOT IN (
				SELECT DISTINCT Z.strPartNumber
				FROM (
					SELECT DISTINCT tblInvBOM.strPartItemNumber AS strPartNumber
					FROM tblInv
					INNER JOIN tblInvBOM ON tblInv.strPartNumber = tblInvBOM.strPartItemNumber
					WHERE (tblInv.decSumAvail = 0)
						AND (tblInv.decSumAlloc = 0)
						AND (tblInv.decSumOnHand = 0)
						AND (tblInv.decSumValue = 0)
						AND (tblInv.decSumOnOrder = 0)
					
					UNION ALL
					
					SELECT DISTINCT tblOrderDocPDT.strPartNumber
					FROM tblInv
					INNER JOIN tblOrderDocPDT ON tblInv.strPartNumber = tblOrderDocPDT.strPartNumber
					WHERE (tblInv.decSumAvail = 0)
						AND (tblInv.decSumAlloc = 0)
						AND (tblInv.decSumOnHand = 0)
						AND (tblInv.decSumValue = 0)
						AND (tblInv.decSumOnOrder = 0)
					
					UNION ALL
					
					SELECT DISTINCT tblInvoiceDocPDT.strPartNumber
					FROM tblInv
					INNER JOIN tblInvoiceDocPDT ON tblInv.strPartNumber = tblInvoiceDocPDT.strPartNumber
					WHERE (tblInv.decSumAvail = 0)
						AND (tblInv.decSumAlloc = 0)
						AND (tblInv.decSumOnHand = 0)
						AND (tblInv.decSumValue = 0)
						AND (tblInv.decSumOnOrder = 0)
					
					UNION ALL
					
					SELECT DISTINCT tblOrderDocDT.strPartNumber
					FROM tblInv
					INNER JOIN tblOrderDocDT ON tblInv.strPartNumber = tblOrderDocDT.strPartNumber
					WHERE (tblInv.decSumAvail = 0)
						AND (tblInv.decSumAlloc = 0)
						AND (tblInv.decSumOnHand = 0)
						AND (tblInv.decSumValue = 0)
						AND (tblInv.decSumOnOrder = 0)
					
					UNION ALL
					
					SELECT DISTINCT tblInvoiceDocDT.strPartNumber
					FROM tblInv
					INNER JOIN tblInvoiceDocDT ON tblInv.strPartNumber = tblInvoiceDocDT.strPartNumber
					WHERE (tblInv.decSumAvail = 0)
						AND (tblInv.decSumAlloc = 0)
						AND (tblInv.decSumOnHand = 0)
						AND (tblInv.decSumValue = 0)
						AND (tblInv.decSumOnOrder = 0)
					
					UNION ALL
					
					SELECT DISTINCT tblInvTrackingDT.strPartNumber
					FROM tblInv
					INNER JOIN tblInvTrackingDT ON tblInv.strPartNumber = tblInvTrackingDT.strPartNumber
					WHERE (tblInv.decSumAvail = 0)
						AND (tblInv.decSumAlloc = 0)
						AND (tblInv.decSumOnHand = 0)
						AND (tblInv.decSumValue = 0)
						AND (tblInv.decSumOnOrder = 0)
					
					UNION ALL
					
					SELECT DISTINCT tblManBOM.strPartNumber
					FROM tblInv
					INNER JOIN tblManBOM ON tblInv.strPartNumber = tblManBOM.strPartNumber
					WHERE (tblInv.decSumAvail = 0)
						AND (tblInv.decSumAlloc = 0)
						AND (tblInv.decSumOnHand = 0)
						AND (tblInv.decSumValue = 0)
						AND (tblInv.decSumOnOrder = 0)
					
					UNION ALL
					
					SELECT DISTINCT tblManJobByProd.strPartNumber
					FROM tblInv
					INNER JOIN tblManJobByProd ON tblInv.strPartNumber = tblManJobByProd.strPartNumber
					WHERE (tblInv.decSumAvail = 0)
						AND (tblInv.decSumAlloc = 0)
						AND (tblInv.decSumOnHand = 0)
						AND (tblInv.decSumValue = 0)
						AND (tblInv.decSumOnOrder = 0)
					
					UNION ALL
					
					SELECT DISTINCT tblInvIntReqDocDT.strPartNumber
					FROM tblInv
					INNER JOIN tblInvIntReqDocDT ON tblInv.strPartNumber = tblInvIntReqDocDT.strPartNumber
					WHERE (tblInv.decSumAvail = 0)
						AND (tblInv.decSumAlloc = 0)
						AND (tblInv.decSumOnHand = 0)
						AND (tblInv.decSumValue = 0)
						AND (tblInv.decSumOnOrder = 0)
					
					UNION ALL
					
					SELECT DISTINCT tblInvPriceTracking.strPartNumber
					FROM tblInv
					INNER JOIN tblInvPriceTracking ON tblInv.strPartNumber = tblInvPriceTracking.strPartNumber
					WHERE (tblInv.decSumAvail = 0)
						AND (tblInv.decSumAlloc = 0)
						AND (tblInv.decSumOnHand = 0)
						AND (tblInv.decSumValue = 0)
						AND (tblInv.decSumOnOrder = 0)
					
					UNION ALL
					
					SELECT DISTINCT tblOrderDocPGDT.strPartNumber
					FROM tblInv
					INNER JOIN tblOrderDocPGDT ON tblInv.strPartNumber = tblOrderDocPGDT.strPartNumber
					WHERE (tblInv.decSumAvail = 0)
						AND (tblInv.decSumAlloc = 0)
						AND (tblInv.decSumOnHand = 0)
						AND (tblInv.decSumValue = 0)
						AND (tblInv.decSumOnOrder = 0)
					) Z
				)
			)

	IF @@TRANCOUNT > 0
		COMMIT TRANSACTION
END TRY

BEGIN CATCH
	IF @@TRANCOUNT > 0
		ROLLBACK TRANSACTION

	DECLARE @ErrMsg NVARCHAR(4000)
		,@ErrSeverity INT

	SELECT @ErrMsg = ERROR_MESSAGE()
		,@ErrSeverity = ERROR_SEVERITY()

	RAISERROR (
			@ErrMsg
			,@ErrSeverity
			,1
			)
END CATCH
GO

/****** Object:  StoredProcedure [dbo].[DeleteItemDescription]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[DeleteItemDescription]    Script Date: 06-09-2019 10:37:49 ******/
CREATE PROCEDURE [dbo].[DeleteItemDescription]
@strDescription as nvarchar(250)
AS
BEGIN
Delete from tblInvDescription where tblInvDescription.strDescription= @strDescription
END
GO
/****** Object:  StoredProcedure [dbo].[DeleteItemDescriptionAutoCompleteData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[DeleteItemDescriptionAutoCompleteData]    Script Date: 2020-05-26 ******/
CREATE Procedure [dbo].[DeleteItemDescriptionAutoCompleteData] 
@Description as nvarchar(max)
As
Begin
	delete from tblInvDescriptionAutoComplete where strDescription=@Description
end
GO
/****** Object:  StoredProcedure [dbo].[DeleteJobTemplate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[SaveJobTemplate] ***********/

/*********** Start [dbo].[DeleteJobTemplate] ***********/

CREATE PROCEDURE [dbo].[DeleteJobTemplate] 
(
		@JobTemplateCode NVARCHAR(50)
		--@JobTemplateCode BIGINT
)
AS
BEGIN
	DELETE FROM
		tblWSJobTemplateDT
	WHERE 
		JobTemplateID = (select JobTemplateID from tblWSJobTemplate where UPPER(JobTemplateCode) = UPPER(@JobTemplateCode))

	DELETE FROM
		tblWSJobTemplate 
	WHERE 
		UPPER(JobTemplateCode) = UPPER(@JobTemplateCode);
END 
GO
/****** Object:  StoredProcedure [dbo].[DeleteProfile]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[DeleteProfile]    Script Date: 27-08-2018 10:12:35 ******/

CREATE PROCEDURE [dbo].[DeleteProfile]  
 @profileId int  
AS  
BEGIN  
 SET NOCOUNT ON;  
 If NOT EXISTS (SELECT TOP 1 ProfileID FROM tblProfileMenuItems where LinkProfileID = @profileId) 
 DELETE FROM tblProfileMenuItems WHERE ProfileID = @profileId  
 DELETE FROM tblProfileMenu WHERE ProfileID = @profileId  
END
GO
/****** Object:  StoredProcedure [dbo].[DeleteProfileItemByProfileId]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[DeleteProfileItemByProfileId]    Script Date: 10-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[DeleteProfileItemByProfileId]
  @ProfileId int
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

   BEGIN
	DELETE FROM tblProfileMenuItems where ProfileID =  @ProfileId 
	END
END
GO
/****** Object:  StoredProcedure [dbo].[DeletePurchaseAndPayment]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DeletePurchaseAndPayment]
(
	@dteClearOnBefore datetime
)
AS

BEGIN TRANSACTION            
	BEGIN TRY

DELETE FROM tblVendTrans WHERE lngVendTrID IN (SELECT tblVendTrans.lngVendTrID FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID 
WHERE tblVendTrans.dteJournalDate <= @dteClearOnBefore AND tblVendTransDT.bitReversed = 0 GROUP BY tblVendTrans.lngVendTrID HAVING SUM(tblVendTransDT.decAmount) = 0)

DELETE FROM tblVendPay WHERE lngVendPayID NOT IN (SELECT lngVendPayID FROM tblVendTransDT WHERE lngVendPayID IS NOT NULL)

DELETE FROM tblInvoiceDocP WHERE strInvPDocID IN (SELECT strInvPDocID FROM tblInvoiceDocP WHERE dteJournalDate <= @dteClearOnBefore 
AND strInvPDocID NOT IN (SELECT strInvPDocID FROM tblVendTrans WHERE strInvPDocID IS NOT NULL))

IF @@TRANCOUNT > 0
		    COMMIT TRANSACTION
END TRY
BEGIN CATCH
	IF @@TRANCOUNT > 0
	    ROLLBACK TRANSACTION
	
	DECLARE @ErrMsg          NVARCHAR(4000),
	        @ErrSeverity     INT
	
	SELECT @ErrMsg = ERROR_MESSAGE(),
	       @ErrSeverity = ERROR_SEVERITY()
	
	RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
GO
/****** Object:  StoredProcedure [dbo].[DeletePurchaseModuleDocument]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DeletePurchaseModuleDocument]
(
	@dteClearOnBefore datetime
)
AS

BEGIN TRANSACTION            
	BEGIN TRY

DELETE FROM tblOrderDocP WHERE (dteJournalDate <= @dteClearOnBefore) AND (bitCleared = 1) 
AND (strOrdPDocID NOT IN (SELECT strOrdPDocID FROM tblInvoiceDocP WHERE strOrdPDocID IS NOT NULL))

IF @@TRANCOUNT > 0
		    COMMIT TRANSACTION
END TRY
BEGIN CATCH
	IF @@TRANCOUNT > 0
	    ROLLBACK TRANSACTION
	
	DECLARE @ErrMsg          NVARCHAR(4000),
	        @ErrSeverity     INT
	
	SELECT @ErrMsg = ERROR_MESSAGE(),
	       @ErrSeverity = ERROR_SEVERITY()
	
	RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
GO
/****** Object:  StoredProcedure [dbo].[DeleteREEntry]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[DeleteREEntry]
(
	@REName nvarchar(50)
)
AS
BEGIN
	DELETE FROM 
		tblSalesRE 
	WHERE 
		strREName = @REName
END
GO
/****** Object:  StoredProcedure [dbo].[DeleteSalesInvoiceAndReceipts]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DeleteSalesInvoiceAndReceipts]
(
	@dteClearOnBefore datetime
)
AS

BEGIN TRANSACTION            
	BEGIN TRY

DELETE FROM tblCustTrans WHERE lngCustTrID IN (SELECT tblCustTrans.lngCustTrID FROM tblCustTrans 
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
WHERE tblCustTrans.dteJournalDate <= @dteClearOnBefore AND tblCustTransDT.bitReversed = 0 
GROUP BY tblCustTrans.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0)

DELETE FROM tblCustPay WHERE lngCustPayID NOT IN (SELECT lngCustPayID FROM tblCustTransDT WHERE lngCustPayID IS NOT NULL)

DELETE FROM tblInvoiceDoc WHERE strInvDocID IN (SELECT strInvDocID FROM tblInvoiceDoc 
WHERE dteJournalDate <= @dteClearOnBefore AND strInvDocID NOT IN (SELECT strInvDocID FROM tblCustTrans WHERE strInvDocID IS NOT NULL))

DELETE FROM tblInvoiceDocREV WHERE strInvDocID IN (SELECT strInvDocID FROM tblInvoiceDocREV 
WHERE dteJournalDate <= @dteClearOnBefore AND strInvDocID NOT IN (SELECT strInvDocID FROM tblCustTrans WHERE strInvDocID IS NOT NULL))

IF @@TRANCOUNT > 0
		    COMMIT TRANSACTION
END TRY
BEGIN CATCH
	IF @@TRANCOUNT > 0
	    ROLLBACK TRANSACTION
	
	DECLARE @ErrMsg          NVARCHAR(4000),
	        @ErrSeverity     INT
	
	SELECT @ErrMsg = ERROR_MESSAGE(),
	       @ErrSeverity = ERROR_SEVERITY()
	
	RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
GO
/****** Object:  StoredProcedure [dbo].[DeleteSalesPersonFile]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[DeleteSalesPersonFile]
(
    @strSalesName nvarchar(100)
)

AS
    SET NOCOUNT ON
    DELETE FROM tblSalesPersonF WHERE strSalesName = @strSalesName
GO
/****** Object:  StoredProcedure [dbo].[DeleteServiceableItem]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[DeleteServiceableItem]
(
	@ServiceableItemCode nvarchar(50)
)
AS
BEGIN

	DELETE FROM tblDocuments WHERE strDocumentNumber = @ServiceableItemCode
	
	DELETE from tblWSServiceableItemOptFieldDetails where ServiceableItemCode = @ServiceableItemCode

	DELETE FROM tblWSServiceableItem where ServiceableItemCode = @ServiceableItemCode
END
GO
/****** Object:  StoredProcedure [dbo].[DeleteServiceableItemTypes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start create stored procedure Workshop  ***********/
/*********** START [dbo].[DeleteServiceableItemTypes] ***********/
CREATE PROCEDURE [dbo].[DeleteServiceableItemTypes]
(
	@ServiceableItemTypeCode nvarchar(50)
)
AS
BEGIN
	BEGIN TRY
		BEGIN TRAN
			DELETE FROM tblWSServiceableItemOptFieldDetails 
			where FieldId in (select FieldId from tblWSServiceableItemTypeOptFields WHERE ServiceableItemTypeId In (SELECT ServiceableItemTypeId FROM tblWSServiceableItemType WHERE ServiceableItemTypeCode = @ServiceableItemTypeCode))

			DELETE FROM tblWSServiceableItemTypeOptFields WHERE ServiceableItemTypeId In (SELECT ServiceableItemTypeId FROM tblWSServiceableItemType WHERE ServiceableItemTypeCode = @ServiceableItemTypeCode)

			DELETE FROM tblWSServiceableItemType WHERE ServiceableItemTypeCode = @ServiceableItemTypeCode
		COMMIT TRAN
	END TRY
	BEGIN CATCH
		Insert into tblSPLOG VALUES(ERROR_MESSAGE())
		ROLLBACK TRAN
	END CATCH

END
GO
/****** Object:  StoredProcedure [dbo].[DeleteTask]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateTaskStatus] ***********/

/*********** Start [DeleteTask] ***********/
CREATE PROCEDURE [dbo].[DeleteTask]
	@TaskId bigint
AS
BEGIN
	DELETE FROM tblToDo WHERE lngId = @TaskId
END

GO
/****** Object:  StoredProcedure [dbo].[DeletetblDimensionProfiles]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[DeletetblDimensionProfiles]
AS
DELETE
FROM [tblDimensionProfiles]
GO
/****** Object:  StoredProcedure [dbo].[DeletetblDimProLines]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[DeletetblDimProLines]
AS
DELETE
FROM [tblDimProLines]
GO
/****** Object:  StoredProcedure [dbo].[DeletetblGLSegmentSetup]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DeletetblGLSegmentSetup]
(
    @intSegmentId bigint
)
AS
    SET NOCOUNT ON

    DELETE FROM [tblGLSegmentSetup] WHERE [intSegmentId] = @intSegmentId
GO
/****** Object:  StoredProcedure [dbo].[DeletetblInv]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[DeletetblInv] 
 As Delete from [tblInv]
GO
/****** Object:  StoredProcedure [dbo].[DeletetblInvCat]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[DeletetblInvCat] 
 As Delete from [tblInvCat]
GO
/****** Object:  StoredProcedure [dbo].[DeletetblInvVend]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[DeletetblInvVend] 
(@lngID bigint)
 As Delete from [tblInvVend]
 Where [lngID] =  @lngID
GO
/****** Object:  StoredProcedure [dbo].[DeleteTerminalSetup]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


/****** Object:  StoredProcedure [dbo].[DeleteTerminalSetup]    Script Date: 21-08-2018 10:13:16 ******/
CREATE PROCEDURE [dbo].[DeleteTerminalSetup]  
(  
    @intTerminalId int	  
)  
AS  
    SET NOCOUNT ON  
  
    DELETE FROM [tblTerminalSetup] WHERE [intTerminalId] = @intTerminalId
GO
/****** Object:  StoredProcedure [dbo].[DeliveryAdviceOptDocLineUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetContractBillDetails] ***********/

/*********** Start [DeliveryAdviceOptDocLineUpdate] ***********/
CREATE PROCEDURE [dbo].[DeliveryAdviceOptDocLineUpdate]
(
    @tblOrderDocDADT AS CommonTableType READONLY
)
AS
BEGIN
	UPDATE
		tblOrderDocDADT
	SET
		strLineField1 = CONVERT(NVARCHAR(50), ISNULL(tt.COL02, '')), 
		strLineField2 = CONVERT(NVARCHAR(50), ISNULL(tt.COL03, '')), 
		strLineField3 = CONVERT(NVARCHAR(50), ISNULL(tt.COL04, '')), 
		strLineField4 = CONVERT(NVARCHAR(50), ISNULL(tt.COL05, '')), 
		strLineField5 = CONVERT(NVARCHAR(50), ISNULL(tt.COL06, '')), 
		strLineField6 = CONVERT(NVARCHAR(50), ISNULL(tt.COL07, '')), 
		strLineField7 = CONVERT(NVARCHAR(50), ISNULL(tt.COL08, '')), 
		strLineField8 = CONVERT(NVARCHAR(50), ISNULL(tt.COL09, '')), 
		strLineField9 = CONVERT(NVARCHAR(50), ISNULL(tt.COL10, '')), 
		strLineField10 =CONVERT(NVARCHAR(50), ISNULL( tt.COL11, '')), 
		strLineField11 =CONVERT(NVARCHAR(50), ISNULL( tt.COL12,'')), 
		strLineField12 =CONVERT(NVARCHAR(50), ISNULL( tt.COL13, ''))
	FROM 
		 @tblOrderDocDADT tt
	WHERE 
	  	 tblOrderDocDADT.strOrdDADocID =  CONVERT(NVARCHAR(50), ISNULL(tt.COL15, ''))
		 AND
		 tblOrderDocDADT.[intLineNo] = CONVERT(INT, ISNULL(tt.COL16,0))	
END

GO
/****** Object:  StoredProcedure [dbo].[DeliveryDriversDetailsAndFilesUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

--------------------------------------------------------
CREATE PROCEDURE [dbo].[DeliveryDriversDetailsAndFilesUpdate]
(
	@tblDataDriverFiles AS DeliveryDriversFTableType READONLY,

	@OldDeliveryCode nvarchar(100),
	@DelDriverCode AS nvarchar(100),
	@DelDriverDesc AS nvarchar(200),
	@AddInfo AS nvarchar(400),
	@Field1 AS nvarchar(200),
	@Field2 AS nvarchar(200),
	@Field3 AS nvarchar(200),
	@Field4 AS nvarchar(200),
	@Field5 AS nvarchar(200),
	@Field6 AS nvarchar(200),
	@Inactive AS bit
)
AS
BEGIN
	DELETE FROM tblDeliveryDriversF WHERE strDelDriverCode = @OldDeliveryCode;

	UPDATE tblDeliveryDrivers
	SET strDelDriverCode = @DelDriverCode,
		strDelDriverDesc = @DelDriverDesc,
		strAddInfo = @AddInfo, 
		strField1 = @Field1, 
		strField2 = @Field2, 
		strField3 = @Field3, 
		strField4 = @Field4,
		strField5 = @Field5, 
		strField6 = @Field6, 
		bitInactive = @Inactive
	WHERE
		strDelDriverCode = @OldDeliveryCode

	INSERT INTO tblDeliveryDriversF 
	(	
		strDelDriverCode ,
		strFileName ,
		dteModified ,
		strType ,
		intSize ,
		strUserName ,
		bitEnc ,
		imgFile
	)
	SELECT DelDriverCode,[FileName],DateModified,[Type],Size,UserName,[IsEncrypted],ImageFile FROM @tblDataDriverFiles
END
GO
/****** Object:  StoredProcedure [dbo].[DeliveryDriversFilesInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

------------------------------------------
CREATE PROCEDURE [dbo].[DeliveryDriversFilesInsert]
(
	@strDelDriverCode nvarchar(100),
	@strFileName nvarchar(800),
	@dteModified datetime,
	@strType nvarchar(1000),
	@intSize bigint,
	@strUserName nvarchar(40),
	@bitEnc bit,
	@imgFile image
)
AS
BEGIN
	INSERT INTO 
		tblDeliveryDriversF 
	VALUES	           
	(
		@strDelDriverCode,
		@strFileName,
		@dteModified,
		@strType,
		@intSize,
		@strUserName,
		@bitEnc,
		@imgFile
	)
END
GO
/****** Object:  StoredProcedure [dbo].[DeliveryDriversInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------------
CREATE PROCEDURE [dbo].[DeliveryDriversInsert]
(
	@SQstrDelCode nvarchar(100),
	@SQstrDelDesc nvarchar(200),
	@SQstrAddInfo nvarchar(400),
	@SQstrField1 nvarchar(200),
	@SQstrField2 nvarchar(200),
	@SQstrField3 nvarchar(200),
	@SQstrField4 nvarchar(200),
	@SQstrField5 nvarchar(200),
	@SQstrField6 nvarchar(200),
	@SQInactive bit
)
AS
BEGIN
	INSERT INTO 
		tblDeliveryDrivers 
	VALUES	           
	(
		@SQstrDelCode,
		@SQstrDelDesc,
		@SQstrAddInfo,
		@SQstrField1,
		@SQstrField2,
		@SQstrField3,
		@SQstrField4,
		@SQstrField5,
		@SQstrField6,
		@SQInactive
	)
END
GO
/****** Object:  StoredProcedure [dbo].[DeliveryMethodsDetailsAndFilesUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------------------------






CREATE PROCEDURE [dbo].[DeliveryMethodsDetailsAndFilesUpdate] (
	@tblDataMethodFiles AS DeliveryMethodsFTableType READONLY
	,@tblDataRateService AS DeliveryMethodsRateServicesTableType READONLY
	,@tblDataRateBilling AS DeliveryMethodsRateBillingTableType READONLY
	,@OldMethodCode NVARCHAR(100)
	,@DelMethodCode AS NVARCHAR(100)
	,@DelMethodDesc AS NVARCHAR(200)
	,@AddInfo AS NVARCHAR(400)
	,@Field1 AS NVARCHAR(200)
	,@Field2 AS NVARCHAR(200)
	,@Field3 AS NVARCHAR(200)
	,@Field4 AS NVARCHAR(200)
	,@Field5 AS NVARCHAR(200)
	,@Field6 AS NVARCHAR(200)
	,@Inactive AS BIT
	,@IsEnableEnviron BIT
	,@CourierOption NVARCHAR(200)
	,@IsInvoiceAsWaybill BIT
	,@CourierSenderAccNo NVARCHAR(40)
	,@CourierSenderContactPerson NVARCHAR(40)
	,@CourierSenderCompany NVARCHAR(60)
	,@CourierSenderAdd1 NVARCHAR(60)
	,@CourierSenderAdd4 NVARCHAR(60)
	,@CourierSenderAdd5 NVARCHAR(12)
	,@CourierSenderWebsite NVARCHAR(30)
	,@CourierSenderWorkTel NVARCHAR(30)
	,@CourierServiceType NVARCHAR(30)
	,@CourierStoreCode NVARCHAR(100)
	,@IsShipmentFromInvoice BIT
	,@IsSalesInvoice BIT
	,@IsSalesOrder BIT
	,@IsMethod BIT
	,@CourierPrefix NVARCHAR(4)
	,@IsDisplay BIT
	)
AS
BEGIN
	DELETE
	FROM tblDeliveryMethodsF
	WHERE strDelMethodCode = @OldMethodCode;

	DELETE tblDeliveryMethodRateBilling
	FROM tblDeliveryMethodRateBilling
	INNER JOIN tblDeliveryMethodRatesServices ON tblDeliveryMethodRatesServices.intDelMethodRateService = tblDeliveryMethodRateBilling.intDelMethodRateService
	WHERE tblDeliveryMethodRatesServices.strDelMethodCode = @OldMethodCode;

	DELETE
	FROM tblDeliveryMethodRatesServices
	WHERE strDelMethodCode = @OldMethodCode;

	UPDATE tblDeliveryMethods
	SET strDelMethodCode = @DelMethodCode
		,strDelMethodDesc = @DelMethodDesc
		,strAddInfo = @AddInfo
		,strField1 = @Field1
		,strField2 = @Field2
		,strField3 = @Field3
		,strField4 = @Field4
		,strField5 = @Field5
		,strField6 = @Field6
		,bitInactive = @Inactive
		,bitEnableEnviron = @IsEnableEnviron
		,strCourierOpt = @CourierOption
		,bitInvoiceAsWaybill = @IsInvoiceAsWaybill
		,strCourierSenderAccNo = @CourierSenderAccNo
		,strCourierSenderContactPerson = @CourierSenderContactPerson
		,strCourierSenderCompany = @CourierSenderCompany
		,strCourierSenderAdd1 = @CourierSenderAdd1
		,strCourierSenderAdd4 = @CourierSenderAdd4
		,strCourierSenderAdd5 = @CourierSenderAdd5
		,strCourierSenderWebsite = @CourierSenderWebsite
		,strCourierSenderWorkTel = @CourierSenderWorkTel
		,strCourierServiceType = @CourierServiceType
		,strCourierStoreCode = @CourierStoreCode
		,bitSalesInvoice = @IsSalesInvoice
		,bitSalesOrder = @IsSalesOrder
		,bitMethod = @IsMethod
		,strCourierPrefix = @CourierPrefix
		,bitDisplay = @IsDisplay
	WHERE strDelMethodCode = @OldMethodCode

	INSERT INTO tblDeliveryMethodsF (
		strDelMethodCode
		,strFileName
		,dteModified
		,strType
		,intSize
		,strUserName
		,bitEnc
		,imgFile
		)
	SELECT DelMethodCode
		,[FileName]
		,DateModified
		,[Type]
		,Size
		,UserName
		,[Encryption]
		,ImageFile
	FROM @tblDataMethodFiles

	DECLARE @TempRateServicesTableType AS DeliveryMethodsRateServicesTableType
	DECLARE @OldRateServiceCode AS INT = NULL
	DECLARE @NewRateServiceCode AS INT = NULL
	DECLARE @RateServiceCount AS INT = NULL
	DECLARE @RateBillingCount AS INT = NULL
	DECLARE @loop INT

	SET @loop = 0

	DECLARE @loopBilling INT

	SET @loopBilling = 0

	DECLARE @PartNumber AS NVARCHAR(100) = NULL
	DECLARE @BillingMethod AS INT = NULL
	DECLARE @TaxCode AS NVARCHAR(4) = NULL
	DECLARE @MinCharge AS MONEY = NULL
	DECLARE @DeliveryRateType AS INT = NULL
	DECLARE @DelMethodRateService AS INT = NULL
	DECLARE @From AS DECIMAL = NULL
	DECLARE @To AS DECIMAL = NULL
	DECLARE @Amount AS DECIMAL = NULL

	INSERT INTO @TempRateServicesTableType
	SELECT *
	FROM @tblDataRateService

	SELECT @loop = min(DelMethodRateService)
	FROM @TempRateServicesTableType;

	--SELECT @RateServiceCount =COUNT(1) FROM @tblDataRateService;
	WHILE (@loop IS NOT NULL)
	BEGIN
		SELECT @OldRateServiceCode = DelMethodRateService
			,@DelMethodCode = DelMethodCode
			,@PartNumber = PartNumber
			,@BillingMethod = BillingMethod
			,@TaxCode = TaxCode
			,@MinCharge = MinCharge
			,@DeliveryRateType = DeliveryRateType
		FROM @tblDataRateService
		WHERE DelMethodRateService = @loop

		INSERT INTO tblDeliveryMethodRatesServices (
			strDelMethodCode
			,strPartNumber
			,intBillingMethod
			,strTaxCode
			,decMinCharge
			,intDeliveryRateType
			)
		VALUES (
			@DelMethodCode
			,@PartNumber
			,@BillingMethod
			,@TaxCode
			,@MinCharge
			,@DeliveryRateType
			)

		SELECT @NewRateServiceCode = intDelMethodRateService
		FROM tblDeliveryMethodRatesServices
		WHERE intDelMethodRateService = IDENT_CURRENT('tblDeliveryMethodRatesServices');

		IF (
				(
					SELECT COUNT(*)
					FROM @tblDataRateBilling t
					--WHERE DeliveryMethodRateBilling IN (@OldRateServiceCode)
					) <> 0
				)
		BEGIN
			INSERT INTO tblDeliveryMethodRateBilling (
				intDelMethodRateService
				,decFrom
				,decTo
				,decAmount
				)
			SELECT @NewRateServiceCode
				,[From]
				,[To]
				,Amount
			FROM @tblDataRateBilling t
			WHERE DelMethodRateService IN (@OldRateServiceCode)
		END
		ELSE
		BEGIN
			INSERT INTO tblDeliveryMethodRateBilling (
				intDelMethodRateService
				,decFrom
				,decTo
				,decAmount
				)
			VALUES (
				@NewRateServiceCode
				,0
				,0
				,CASE 
					WHEN @BillingMethod = 1
						THEN @MinCharge
					ELSE 0
					END
				)
		END

		DELETE
		FROM @TempRateServicesTableType
		WHERE DelMethodRateService = @loop;

		SET @loop = (
				SELECT min(DelMethodRateService)
				FROM @TempRateServicesTableType
				)
			--SET @loop = @loop + 1   
	END
END
GO
/****** Object:  StoredProcedure [dbo].[DeliveryMethodsFilesInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------------------------'
CREATE  PROCEDURE [dbo].[DeliveryMethodsFilesInsert]
(
	@tblData AS DeliveryMethodsFTableType READONLY
)
AS
BEGIN
	--select * from tblDeliveryMethodsF
	DELETE FROM tblDeliveryMethodsF WHERE strDelMethodCode in (SELECT DelMethodCode FROM @tblData)
	INSERT INTO tblDeliveryMethodsF 
	(	
		strDelMethodCode ,
		strFileName ,
		dteModified ,
		strType ,
		intSize ,
		strUserName ,
		bitEnc ,
		imgFile
	)
	SELECT DelMethodCode,[FileName],DateModified,[Type],Size,UserName,[Encryption],ImageFile FROM @tblData t
END
GO
/****** Object:  StoredProcedure [dbo].[DeliveryMethodsInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------------
CREATE PROCEDURE [dbo].[DeliveryMethodsInsert] (
	@DeliveryCode NVARCHAR(100)
	,@DeliveryDescription NVARCHAR(200)
	,@AddInfo NVARCHAR(400)
	,@Field1 NVARCHAR(200)
	,@Field2 NVARCHAR(200)
	,@Field3 NVARCHAR(200)
	,@Field4 NVARCHAR(200)
	,@Field5 NVARCHAR(200)
	,@Field6 NVARCHAR(200)
	,@IsInactive BIT
	,@IsEnableEnviron BIT
	,@CourierOption NVARCHAR(200)
	,@IsInvoiceAsWaybill BIT
	,@CourierSenderAccNo NVARCHAR(40)
	,@CourierSenderContactPerson NVARCHAR(40)
	,@CourierSenderCompany NVARCHAR(60)
	,@CourierSenderAdd1 NVARCHAR(60)
	,@CourierSenderAdd4 NVARCHAR(60)
	,@CourierSenderAdd5 NVARCHAR(12)
	,@CourierSenderWebsite NVARCHAR(30)
	,@CourierSenderWorkTel NVARCHAR(30)
	,@CourierServiceType NVARCHAR(30)
	,@CourierStoreCode NVARCHAR(100)
	,@IsShipmentFromInvoice BIT
	,@IsSalesInvoice BIT
	,@IsSalesOrder BIT
	,@IsMethod BIT
	,@CourierPrefix NVARCHAR(4)
	,@IsDisplay BIT
	)
AS
BEGIN
	INSERT INTO tblDeliveryMethods
	VALUES (
		@DeliveryCode
		,@DeliveryDescription
		,@AddInfo
		,@Field1
		,@Field2
		,@Field3
		,@Field4
		,@Field5
		,@Field6
		,@IsInactive
		,@IsEnableEnviron
		,@CourierOption
		,@IsInvoiceAsWaybill
		,@CourierSenderAccNo
		,@CourierSenderContactPerson
		,@CourierSenderCompany
		,@CourierSenderAdd1
		,@CourierSenderAdd4
		,@CourierSenderAdd5
		,@CourierSenderWebsite
		,@CourierSenderWorkTel
		,@CourierServiceType
		,@CourierStoreCode
		,@IsSalesInvoice
		,@IsSalesOrder
		,@IsMethod
		,@CourierPrefix
		,@IsDisplay
		,GETDATE()
		)
END
GO
/****** Object:  StoredProcedure [dbo].[DeliveryMethodsRateServiceAndBillingInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------------
CREATE PROCEDURE [dbo].[DeliveryMethodsRateServiceAndBillingInsert] (
	@tblDataRateService AS DeliveryMethodsRateServicesTableType READONLY
	,@tblDataRateBilling AS DeliveryMethodsRateBillingTableType READONLY
	)
AS
BEGIN
	--select * from tblDeliveryMethodRatesServices
	DECLARE @tblDataRateServiceInserted AS DeliveryMethodsRateServicesTableType
	DECLARE @OldRateServiceCode AS INT = NULL
	DECLARE @NewRateServiceCode AS INT = NULL
	DECLARE @RateServiceCount AS INT = NULL
	DECLARE @RateBillingCount AS INT = NULL
	DECLARE @loop INT

	SET @loop = 0

	DECLARE @loopBilling INT

	SET @loopBilling = 0

	DECLARE @DelMethodCode AS NVARCHAR(100) = NULL
	DECLARE @PartNumber AS NVARCHAR(100) = NULL
	DECLARE @BillingMethod AS INT = NULL
	DECLARE @TaxCode AS NVARCHAR(4) = NULL
	DECLARE @MinCharge AS MONEY = NULL
	DECLARE @DeliveryRateType AS INT = NULL
	DECLARE @DelMethodRateService AS INT = NULL
	DECLARE @From AS DECIMAL = NULL
	DECLARE @To AS DECIMAL = NULL
	DECLARE @Amount AS DECIMAL = NULL

	SELECT @RateServiceCount = COUNT(1)
	FROM @tblDataRateService;

	WHILE (@loop < @RateServiceCount)
	BEGIN
		SELECT @OldRateServiceCode = DelMethodRateService
			,@DelMethodCode = DelMethodCode
			,@PartNumber = PartNumber
			,@BillingMethod = BillingMethod
			,@TaxCode = TaxCode
			,@MinCharge = MinCharge
			,@DeliveryRateType = DeliveryRateType
		FROM @tblDataRateService
		WHERE DelMethodRateService = @loop

		INSERT INTO tblDeliveryMethodRatesServices (
			strDelMethodCode
			,strPartNumber
			,intBillingMethod
			,strTaxCode
			,decMinCharge
			,intDeliveryRateType
			)
		OUTPUT inserted.intDelMethodRateService
			,inserted.strDelMethodCode
			,inserted.strPartNumber
			,inserted.intBillingMethod
			,inserted.strTaxCode
			,inserted.decMinCharge
			,inserted.intDeliveryRateType
		INTO @tblDataRateServiceInserted
		VALUES (
			@DelMethodCode
			,@PartNumber
			,@BillingMethod
			,@TaxCode
			,@MinCharge
			,@DeliveryRateType
			)

		SELECT @NewRateServiceCode = intDelMethodRateService
		FROM tblDeliveryMethodRatesServices
		WHERE intDelMethodRateService = IDENT_CURRENT('tblDeliveryMethodRatesServices');

		IF (
				(
					SELECT COUNT(*)
					FROM @tblDataRateBilling t
					--WHERE DeliveryMethodRateBilling IN (@OldRateServiceCode)
					) <> 0
				)
		BEGIN
			INSERT INTO tblDeliveryMethodRateBilling (
				intDelMethodRateService
				,decFrom
				,decTo
				,decAmount
				)
			SELECT @NewRateServiceCode
				,[From]
				,[To]
				,Amount
			FROM @tblDataRateBilling t
			WHERE t.DelMethodRateService IN (@OldRateServiceCode)
		END
		ELSE
		BEGIN
			INSERT INTO tblDeliveryMethodRateBilling (
				intDelMethodRateService
				,decFrom
				,decTo
				,decAmount
				)
			VALUES (
				@NewRateServiceCode
				,0
				,0
				,CASE 
					WHEN @BillingMethod = 1
						THEN @MinCharge
					ELSE 0
					END
				)
		END

		SET @loop = @loop + 1
	END
END
GO
/****** Object:  StoredProcedure [dbo].[DeliveryRoutesDetailsAndFilesUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------------'
CREATE PROCEDURE [dbo].[DeliveryRoutesDetailsAndFilesUpdate]
(
	@tblDataRouteFiles AS DeliveryRoutesFTableType READONLY,

	@OldRouteCode nvarchar(100),
	@DelRouteCode AS nvarchar(100),
	@DelRouteDesc AS nvarchar(200),
	@AddInfo AS nvarchar(400),
	@Field1 AS nvarchar(200),
	@Field2 AS nvarchar(200),
	@Field3 AS nvarchar(200),
	@Field4 AS nvarchar(200),
	@Field5 AS nvarchar(200),
	@Field6 AS nvarchar(200),
	@Inactive AS bit
)
AS
BEGIN
	DELETE FROM tblDeliveryRoutesF WHERE strDelRouteCode = @OldRouteCode;
	
	UPDATE tblDeliveryRoutes
	SET strDelRouteCode = @DelRouteCode,
		strDelRouteDesc = @DelRouteDesc,
		strAddInfo = @AddInfo, 
		strField1 = @Field1, 
		strField2 = @Field2, 
		strField3 = @Field3, 
		strField4 = @Field4,
		strField5 = @Field5, 
		strField6 = @Field6, 
		bitInactive = @Inactive
	WHERE
		strDelRouteCode = @OldRouteCode

	INSERT INTO tblDeliveryRoutesF 
	(	
		strDelRouteCode ,
		strFileName ,
		dteModified ,
		strType ,
		intSize ,
		strUserName ,
		bitEnc ,
		imgFile
	)
	SELECT DelRouteCode,[FileName],DateModified,[Type],Size,UserName,[IsEncrypted],ImageFile FROM @tblDataRouteFiles
END
GO
/****** Object:  StoredProcedure [dbo].[DeliveryRoutesFilesInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------------------
CREATE PROCEDURE [dbo].[DeliveryRoutesFilesInsert]
(
	@strDelVehicleCode nvarchar(100),
	@strFileName nvarchar(800),
	@dteModified datetime,
	@strType nvarchar(1000),
	@intSize bigint,
	@strUserName nvarchar(40),
	@bitEnc bit,
	@imgFile image
)
AS
BEGIN
	INSERT INTO 
		tblDeliveryRoutesF 
	VALUES	           
	(
		@strDelVehicleCode,
		@strFileName,
		@dteModified,
		@strType,
		@intSize,
		@strUserName,
		@bitEnc,
		@imgFile
	)
END
GO
/****** Object:  StoredProcedure [dbo].[DeliveryRoutesInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------------
CREATE PROCEDURE [dbo].[DeliveryRoutesInsert]
(
	@SQstrDelCode nvarchar(100),
	@SQstrDelDesc nvarchar(200),
	@SQstrAddInfo nvarchar(400),
	@SQstrField1 nvarchar(200),
	@SQstrField2 nvarchar(200),
	@SQstrField3 nvarchar(200),
	@SQstrField4 nvarchar(200),
	@SQstrField5 nvarchar(200),
	@SQstrField6 nvarchar(200),
	@SQInactive bit
)
AS
BEGIN
	INSERT INTO 
		tblDeliveryRoutes 
	VALUES	           
	(
		@SQstrDelCode,
		@SQstrDelDesc,
		@SQstrAddInfo,
		@SQstrField1,
		@SQstrField2,
		@SQstrField3,
		@SQstrField4,
		@SQstrField5,
		@SQstrField6,
		@SQInactive
	)
END
GO
/****** Object:  StoredProcedure [dbo].[DeliveryVehiclesDetailsAndFilesUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------------
CREATE PROCEDURE [dbo].[DeliveryVehiclesDetailsAndFilesUpdate]
(
	@tblDataVehicleFiles AS DeliveryVehiclesFTableType READONLY,

	@OldVehicleCode nvarchar(100),
	@DelVehicleCode AS nvarchar(100),
	@DelVehicleDesc AS nvarchar(200),
	@AddInfo AS nvarchar(400),
	@Field1 AS nvarchar(200),
	@Field2 AS nvarchar(200),
	@Field3 AS nvarchar(200),
	@Field4 AS nvarchar(200),
	@Field5 AS nvarchar(200),
	@Field6 AS nvarchar(200),
	@Inactive AS bit
)
AS
BEGIN
	DELETE FROM tblDeliveryVehiclesF WHERE strDelVehicleCode = @OldVehicleCode;

	UPDATE tblDeliveryVehicles
	SET strDelVehicleCode = @DelVehicleCode,
		strDelVehicleDesc = @DelVehicleDesc,
		strAddInfo = @AddInfo, 
		strField1 = @Field1, 
		strField2 = @Field2, 
		strField3 = @Field3, 
		strField4 = @Field4,
		strField5 = @Field5, 
		strField6 = @Field6, 
		bitInactive = @Inactive
	WHERE
		strDelVehicleCode = @OldVehicleCode

	INSERT INTO tblDeliveryVehiclesF 
	(	
		strDelVehicleCode ,
		strFileName ,
		dteModified ,
		strType ,
		intSize ,
		strUserName ,
		bitEnc ,
		imgFile
	)
	SELECT DelVehicleCode,[FileName],DateModified,[Type],Size,UserName,[IsEncrypted],ImageFile FROM @tblDataVehicleFiles
END
GO
/****** Object:  StoredProcedure [dbo].[DeliveryVehiclesFilesInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------
CREATE PROCEDURE [dbo].[DeliveryVehiclesFilesInsert]
(
	@strDelVehicleCode nvarchar(100),
	@strFileName nvarchar(800),
	@dteModified datetime,
	@strType nvarchar(1000),
	@intSize bigint,
	@strUserName nvarchar(40),
	@bitEnc bit,
	@imgFile image
)
AS
BEGIN
	INSERT INTO 
		tblDeliveryVehiclesF 
	VALUES	           
	(
		@strDelVehicleCode,
		@strFileName,
		@dteModified,
		@strType,
		@intSize,
		@strUserName,
		@bitEnc,
		@imgFile
	)
END
GO
/****** Object:  StoredProcedure [dbo].[DeliveryVehiclesInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------
CREATE PROCEDURE [dbo].[DeliveryVehiclesInsert]
(
	@SQstrDelCode nvarchar(100),
	@SQstrDelDesc nvarchar(200),
	@SQstrAddInfo nvarchar(400),
	@SQstrField1 nvarchar(200),
	@SQstrField2 nvarchar(200),
	@SQstrField3 nvarchar(200),
	@SQstrField4 nvarchar(200),
	@SQstrField5 nvarchar(200),
	@SQstrField6 nvarchar(200),
	@SQInactive bit
)
AS
BEGIN
	INSERT INTO 
		tblDeliveryVehicles 
	VALUES	           
	(
		@SQstrDelCode,
		@SQstrDelDesc,
		@SQstrAddInfo,
		@SQstrField1,
		@SQstrField2,
		@SQstrField3,
		@SQstrField4,
		@SQstrField5,
		@SQstrField6,
		@SQInactive
	)
END
GO
/****** Object:  StoredProcedure [dbo].[DepreciationHistoryInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[DepreciationHistoryInsert]
    (
      @dteEditedDateTime DATETIME ,
      @strUserName NVARCHAR(40) ,
      @strAssetCode NVARCHAR(80) ,
      @dteDepreciationDate DATETIME ,
      @decOtherValue1_OldValue MONEY ,
      @decOtherValue1_NewValue MONEY ,
      @decOtherValue2_OldValue MONEY ,
      @decOtherValue2_NewValue MONEY ,
      @decOtherValue3_OldValue MONEY ,
      @decOtherValue3_NewValue MONEY ,
      @decOtherValue4_OldValue MONEY ,
      @decOtherValue4_NewValue MONEY ,
      @decOtherValue5_OldValue MONEY ,
      @decOtherValue5_NewValue MONEY ,
      @intType INT
    )
AS
    BEGIN
        INSERT  INTO dbo.tblDepreciationHistoryTracking
                ( dteEditedDateTime ,
                  strUserName ,
                  strAssetCode ,
                  dteDepreciationDate ,
                  decOtherValue1_OldValue ,
                  decOtherValue1_NewValue ,
                  decOtherValue2_OldValue ,
                  decOtherValue2_NewValue ,
                  decOtherValue3_OldValue ,
                  decOtherValue3_NewValue ,
                  decOtherValue4_OldValue ,
                  decOtherValue4_NewValue ,
                  decOtherValue5_OldValue ,
                  decOtherValue5_NewValue ,
                  intType
	            )
        VALUES  ( @dteEditedDateTime , -- dteEditedDateTime - datetime
                  @strUserName , -- strUserName - nvarchar(20)
                  @strAssetCode , -- strAssetCode - nvarchar(40)
                  @dteDepreciationDate , -- dteDepreciationDate - datetime
                  @decOtherValue1_OldValue , -- decOtherValue1_OldValue - money
                  @decOtherValue1_NewValue , -- decOtherValue1_NewValue - money
                  @decOtherValue2_OldValue , -- decOtherValue2_OldValue - money
                  @decOtherValue2_NewValue , -- decOtherValue2_NewValue - money
                  @decOtherValue3_OldValue , -- decOtherValue3_OldValue - money
                  @decOtherValue3_NewValue , -- decOtherValue3_NewValue - money
                  @decOtherValue4_OldValue , -- decOtherValue4_OldValue - money
                  @decOtherValue4_NewValue , -- decOtherValue4_NewValue - money
                  @decOtherValue5_OldValue , -- decOtherValue5_OldValue - money
                  @decOtherValue5_NewValue , -- decOtherValue5_NewValue - money
                  @intType -- intType - int
	            )
    END
GO
/****** Object:  StoredProcedure [dbo].[DisposalReasonSearch]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[DisposalReasonSearch]
    (
      @lngID BIGINT = NULL ,
      @strCode NVARCHAR(20) = NULL ,
      @strDescription NVARCHAR(100) = NULL ,
      @bitInactive BIT = NULL
    )
AS
BEGIN
    SET NOCOUNT ON;
    SELECT  [lngID] AS ID ,
            [strCode] AS Code ,
            [strDescription] AS Description ,
            [bitInactive] AS Inactive
    FROM    [tblDisposalMethods]
    WHERE   ( ( [lngID] = @lngID )
              OR ( @lngID IS NULL )
            )
            AND ( ( [strCode] = @strCode )
                  OR ( @strCode IS NULL )
                )
            AND ( ( [strDescription] = @strDescription )
                  OR ( @strDescription IS NULL )
                )
            AND ( ( [bitInactive] = @bitInactive )
                  OR ( @bitInactive IS NULL )
                );
END
GO
/****** Object:  StoredProcedure [dbo].[DocumentDelete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[DocumentDelete]
(
	@DocumentNumber NVARCHAR(50)
)
AS
BEGIN
	DELETE FROM tblDocuments WHERE strDocumentNumber = @DocumentNumber
END
GO
/****** Object:  StoredProcedure [dbo].[Documentinsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[Documentinsert]
	(
	@DocumentNumber VARCHAR(50)
	,@FileName NVARCHAR(200)
	,@Extension VARCHAR(10)
	,@File VARBINARY(max)
	,@Type VARCHAR(50)
	,@Modified DATETIME
	,@Size BIGINT
	,@ItemLine BIT
	,@LineNo INT
	,@Posted BIT
	,@Latitude float = 0
	,@Longitude float = 0
	,@IsSignature BIT = 0
	,@SignatureName varchar(100) = NULL
	)
AS
BEGIN
	DECLARE @g GEOGRAPHY;
	DECLARE @point NVARCHAR(50) = ''

	IF @Latitude = 0 AND @Longitude = 0
    BEGIN
        SET @g = NULL
    END
	ELSE
	BEGIN
		SET @point = (SELECT 'POINT(' + CONVERT(VARCHAR(10), @Longitude) + '  ' + CONVERT(VARCHAR(10), @Latitude) + ')')
		SET @g = GEOGRAPHY::STGeomFromText(@point, 4326);    
    END		

	INSERT INTO [tbldocuments] (
		[strdocumentnumber]
		,[strfilename]
		,[strdescription]
		,[strextension]
		,[varfile]
		,[dtemodified]
		,[strtype]
		,[intsize]
		,[strusername]
		,[bitenc]
		,[intattachon]
		,[bititemline]
		,[intlineno]
		,[bitposted]
		,[geoCoord]
		,[bitIsSignature]
		,[strSignatureName]
		)
	VALUES (
		@DocumentNumber
		,@FileName
		,NULL
		,@Extension
		,@File
		,@Modified
		,@Type
		,@Size
		,NULL
		,0
		,NULL
		,@ItemLine
		,@LineNo
		,@Posted
		,@g
		,@IsSignature
		,@SignatureName 
		)
END
GO

/****** Object:  StoredProcedure [dbo].[DocumentSearch]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


/*********** Start [DocumentSearch] ***********/
CREATE PROCEDURE [dbo].[DocumentSearch](  
@DocumentID bigint = Null,  
@DocumentNumber varchar(50) = Null,  
@FileName nvarchar(200) = Null,  
@Description nvarchar(200) = Null,  
@Extension varchar(10) = Null,  
@File varbinary(MAX) = Null,  
@Modified datetime = Null,  
@Type nvarchar(100) = Null,  
@Size bigint = Null,   
@UserName nvarchar(20) = Null,  
@IsEnc bit = Null,  
@AttachOn int = Null, 
@LineNo int = NULL,  
@IsItemLine bit = NULL,  
@IsPosted bit = NULL  
)  
AS  
BEGIN
SELECT   
[lngDocumentID] as DocumentID,  
[strDocumentNumber] as DocumentNumber,  
[strFileName] as [FileName],  
[strDescription] as [Description],  
[strExtension] as Extension,  
[varFile] as [File],  
[dteModified] as Modified,  
[strType] as [Type],  
[intSize] as Size,  
[strUserName] as UserName,  
[bitEnc] as Enc,  
[intAttachOn] as AttachOn,  
[bitItemLine] as ItemLine,  
[intLineNo] as [LineNo],  
[bitPosted] as Posted  
FROM   
[tblDocuments]  
WHERE  
(([lngDocumentID] = @DocumentID) OR (@DocumentID Is Null)) AND   
(([strDocumentNumber] IN (SELECT  value FROM [dbo].[fnSplitStringAsTable](@DocumentNumber, ','))) OR (@DocumentNumber Is Null)) AND   
(([strFileName] = @FileName) OR (@FileName Is Null)) AND   
(([strDescription] = @Description) OR (@Description Is Null)) AND   
(([strExtension] = @Extension) OR (@Extension Is Null)) AND   
--        (([varFile] = @varFile) OR (@varFile Is Null)) AND   
(([dteModified] = @Modified) OR (@Modified Is Null)) AND   
(([strType] = @Type) OR (@Type Is Null)) AND   
(([intSize] = @Size) OR (@Size Is Null)) AND   
(([strUserName] = @UserName) OR (@UserName Is Null)) AND   
(([bitEnc] = @IsEnc) OR (@IsEnc Is Null)) AND   
(([intAttachOn] = @AttachOn) OR (@AttachOn Is Null)) AND  
(([intLineNo] = @LineNo) OR (@LineNo Is Null)) AND  
(([bitItemLine] IN (0,ISNULL(@IsItemLine,0)))) AND  
(([bitPosted] IN (0,ISNULL(@IsPosted,1))))  
END
GO
/****** Object:  StoredProcedure [dbo].[DocumentSearchAndDelete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetmSysVariables] ***********/

/*********** Start [aaa] ***********/
/*********** End [aaa] ***********/

/*********** Start [aaa] ***********/
/*********** End [aaa] ***********/

/*********** Start [aaa] ***********/
/*********** End [aaa] ***********/

/*********** Start [aaa] ***********/
/*********** End [aaa] ***********/


/*********** End create stored procedure AllFixes ***********/




/*********** Start [DocumentSearchAndDelete] ***********/
CREATE PROCEDURE [dbo].[DocumentSearchAndDelete] (@TempGuid NVARCHAR(max) ,@Type NVARCHAR(max) =null)
AS
BEGIN
	DELETE
	FROM [tblDocuments]
	WHERE [lngDocumentID] IN (
			SELECT [lngDocumentID]
			FROM [tblDocuments]
			WHERE strDocumentNumber = @TempGuid	 and strType = @Type 
			)
END
GO
/****** Object:  StoredProcedure [dbo].[DocumentsSearch]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********************End [UpdatePrintedFlag]*****************************************/

/*********************Start [DocumentsSearch]*****************************************/

CREATE PROCEDURE [dbo].[DocumentsSearch] (@DocumentNumber VARCHAR(50) = NULL,@Type  nvarchar(100) = Null)
AS
SET NOCOUNT ON
BEGIN
SELECT [lngDocumentID] AS DocumentID
	,[strDocumentNumber] AS DocumentNumber
	,[strFileName] AS [FileName]
	,[strDescription] AS [Description]
	,[strExtension] AS Extension
	,[varFile] AS [File]
	,[dteModified] AS Modified
	,[strType] AS [Type]
	,[intSize] AS Size
	,[strUserName] AS UserName
	,[bitEnc] AS IsEnc
	,[intAttachOn] AS AttachOn
FROM [tblDocuments]
WHERE ((strDocumentNumber = @DocumentNumber)
	OR (strDocumentNumber IS NULL))  AND (([strType] = @Type) OR (@Type Is Null))  
END
GO
/****** Object:  StoredProcedure [dbo].[EditUserDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[EditUserDetails] (  
 @UserName AS NVARCHAR(20)      
 ,@Name AS NVARCHAR(50)      
 ,@CellNumber AS NVARCHAR(50)      
 ,@Email AS NVARCHAR(100)      
 ,@Password AS NVARCHAR(2000)      
 ,@IsAdmin AS BIT      
 ,@IsLockedOut AS BIT      
 ,@MustChange AS BIT      
 ,@Company AS BIT      
 ,@CoFileHandle AS BIT      
 ,@GL AS BIT      
 ,@Payables AS BIT      
 ,@PayPayments AS BIT      
 ,@Receivables AS BIT      
 ,@RecReceipts AS BIT      
 ,@Inventory AS BIT      
 ,@InvAdjust AS BIT      
 ,@InvCount AS BIT      
 ,@SMS AS BIT      
 ,@BusMgr AS BIT      
 ,@POS AS BIT      
 ,@Projects AS BIT      
 ,@LastLogin AS DATETIME      
 ,@CashBook AS BIT      
 ,@Reminders AS BIT      
 ,@Marketing AS BIT      
 ,@Collection AS BIT      
 ,@POSCash AS BIT      
 ,@CoAdmin AS BIT      
 ,@MainSum AS BIT      
 ,@AcctSets AS BIT      
 ,@Journal AS BIT      
 ,@BankTrans AS BIT      
 ,@BankRecon AS BIT      
 ,@APPurch AS BIT      
 ,@APTax AS BIT      
 ,@ARCredit AS BIT      
 ,@ARSales AS BIT      
 ,@ARBatch AS BIT      
 ,@InvPricelists AS BIT      
 ,@InvLoc AS BIT      
 ,@InvCats AS BIT      
 ,@InvAssbly AS BIT      
 ,@InvTrans AS BIT      
 ,@SMSCredits AS BIT      
 ,@POSDrop AS BIT      
 ,@POSTerminalSetup AS BIT      
 ,@POSTerminalSetupList AS BIT      
 ,@POSProfileMenu AS BIT      
 ,@BulkSMS AS BIT      
 ,@GLExpense AS BIT      
 ,@Deposits AS BIT      
 ,@InvPDT AS BIT      
 ,@ARPersons AS BIT      
 ,@APBatch AS BIT      
 ,@APBrowser AS BIT      
 ,@ARBrowser AS BIT      
 ,@Templates AS BIT      
 ,@AREmail AS BIT      
 ,@WHRec AS BIT      
 ,@WHPick AS BIT      
 ,@WHBatch AS BIT      
 ,@Files AS BIT      
 ,@LocName AS NVARCHAR(10)      
 ,@Cycle AS BIT      
 ,@Interest AS BIT      
 ,@APOrders AS BIT      
 ,@APReq AS BIT      
 ,@AROrders AS BIT      
 ,@ARQuotes AS BIT      
 ,@ARQuSys AS BIT      
 ,@WHStPick AS BIT      
 ,@InvBrowser AS BIT      
 ,@WHShp AS BIT      
 ,@WHPrPack AS BIT      
 ,@WHCont AS BIT      
 ,@WHMani AS BIT      
 ,@WHShBrow AS BIT      
 ,@JobCost AS BIT      
 ,@Dept AS BIT      
 ,@SubLedger AS BIT      
 ,@CLetters AS BIT      
 ,@Top20 AS BIT      
 ,@TransTab AS BIT      
 ,@RecPayJournal AS BIT      
 ,@ARCats AS BIT      
 ,@InvDiscMatrix AS BIT      
 ,@ARBlockDesc AS BIT      
 ,@ARBlockUnit AS BIT      
 ,@ARBlockDiscount AS BIT      
 ,@APBlockDesc AS BIT      
 ,@APBlockUnit AS BIT      
 ,@APBlockDiscount AS BIT      
 ,@WHDelDriver AS BIT      
 ,@WHDelVehicle AS BIT      
 ,@WHDelRoute AS BIT      
 ,@ARCreditRequests AS BIT      
 ,@BITab AS BIT      
 ,@BICubeAdd AS BIT      
 ,@BICubeEdit AS BIT      
 ,@BICubeDelete AS BIT      
 ,@BIViewAdd AS BIT      
 ,@BIViewEdit AS BIT      
 ,@BIViewDelete AS BIT      
 ,@ARSendPricelists AS BIT      
 ,@InvNumConv AS BIT      
 ,@InvSerialTypes AS BIT      
 ,@APCats AS BIT      
 ,@ARPrintPreview AS BIT      
 ,@ARCNChangesAllowed AS BIT      
 ,@ARPriceChangeAllowed AS BIT      
 ,@APDNChangesAllowed AS BIT      
 ,@ARInvoiceAdjAllowed AS BIT      
 ,@ARAllowCreditNotesAndRequestItems AS BIT      
 ,@APPaymentApprovals AS BIT      
 ,@InvForecasting AS BIT      
 ,@InvBarcode AS BIT      
 ,@InvItemCostUpdater AS BIT      
 ,@InvItemRenaming AS BIT      
 ,@APECOMSettings AS BIT      
 ,@APShowStatsOnDocs AS BIT      
 ,@ARShowStatsOnDocs AS BIT      
 ,@GLOpenItemAlloc AS BIT      
 ,@GLLR AS BIT      
 ,@GLLRFin AS BIT      
 ,@GLLRFinBalSheetStd AS BIT      
 ,@GLLRFinBalSheetComp AS BIT      
 ,@GLLRFinIncomeStd AS BIT      
 ,@GLLRFinIncomeComp AS BIT      
 ,@GLLRFinIncomeMulti AS BIT      
 ,@GLLRFinIncomeGP AS BIT      
 ,@GLLRFinIncomeMini AS BIT      
 ,@GLLRFinTrialBal AS BIT      
 ,@GLLRFinPerMovement AS BIT      
 ,@GLLRFinMultiCompany AS BIT      
 ,@GLLRTran AS BIT      
 ,@GLLRTranLedger AS BIT      
 ,@GLLRTranEntryType AS BIT      
 ,@GLLRTranTax AS BIT      
 ,@GLLRTranDocTran AS BIT      
 ,@GLLRBudgets AS BIT      
 ,@GLLRBudgetsAmounts AS BIT      
 ,@GLLRBudgetsCompIncome AS BIT      
 ,@GLLRBudgetsCompIncomeF AS BIT      
 ,@GLLRBudgetsCompBalSheet AS BIT      
 ,@GLLRDept AS BIT      
 ,@GLLRDeptBalSheetStd AS BIT      
 ,@GLLRDeptIncomeStd AS BIT      
 ,@GLLRDeptIncomeComp AS BIT      
 ,@GLLRDeptTrialBal AS BIT      
 ,@GLLRDeptLedger AS BIT      
 ,@GLLRDeptBudgetAmounts AS BIT      
 ,@GLLRDeptCompIncome AS BIT      
 ,@GLLRLists AS BIT      
 ,@GLLRListsAccounts AS BIT      
 ,@GLLRListsAccountSets AS BIT      
 ,@GLLRListsJournalCodes AS BIT      
 ,@GLCR AS BIT      
 ,@GLCRFin AS BIT      
 ,@GLCRFinIncome AS BIT      
 ,@GLCRFinIncomeMulti AS BIT      
 ,@GLCRTran AS BIT      
 ,@GLCRTranAlloc AS BIT      
 ,@GLCRTranAllocMissing AS BIT      
 ,@GLCRBudget AS BIT      
 ,@GLCRBudgetCompBudget AS BIT      
 ,@GLCRLists AS BIT      
 ,@GLCRListsProfitCenters AS BIT      
 ,@APPR AS BIT      
 ,@APPRFin AS BIT      
 ,@APPRFinVendorAged AS BIT      
 ,@APPRTran AS BIT      
 ,@APPRTranVendorPurchases AS BIT      
 ,@APPRTranPendingPurchaseOrders AS BIT      
 ,@APPRTranPendingPurchaseReq AS BIT      
 ,@APPRTranVendorTran AS BIT   
 ,@APETIMSPurchasesTrans AS BIT
 ,@APPRLists AS BIT      
 ,@APPRListsVendors AS BIT      
 ,@APPRListsContacts AS BIT      
 ,@ARRR AS BIT      
 ,@ARRRFin AS BIT      
 ,@ARRRFinCustAged AS BIT      
 ,@ARRRFinCallSheet AS BIT      
 ,@ARRRFinCustStatements AS BIT      
 ,@ARRRFinSalesStatements AS BIT      
 ,@ARRRFinInvoiceGP AS BIT      
 ,@ARRRFinCustProfiability AS BIT      
 ,@ARRRFinCustSalesTargets AS BIT      
 ,@ARRRFinCustSalesTrends AS BIT      
 ,@ARRRFinSPPerf AS BIT      
 ,@ARRRFinSPTargets AS BIT      
 ,@ARRRTran AS BIT      
 ,@ARRRTranCustSales AS BIT      
 ,@ARRRTranSPSales AS BIT      
 ,@ARRRTranSPMissing AS BIT      
 ,@ARRRTranInvoiceDocs AS BIT      
 ,@ARRRTranCashUp AS BIT      
 ,@ARRRTranPendingSalesOrders AS BIT      
 ,@ARRRTranClosedSalesOrders AS BIT      
 ,@ARRRTranCredits AS BIT      
 ,@ARRRTranCustTran AS BIT      
 ,@ARRRTranOpenQuotes AS BIT      
 ,@ARRRLists AS BIT      
 ,@ARRRListsPricelist AS BIT      
 ,@ARRRListsCustomers AS BIT      
 ,@ARRRListsSalesPersons AS BIT      
 ,@ARRRListsContactsList AS BIT      
 ,@IR AS BIT      
 ,@IRFin AS BIT      
 ,@IRFinInvAged AS BIT      
 ,@IRFinInvValuation AS BIT      
 ,@IRFinLocSum AS BIT      
 ,@IRFinInvLoc AS BIT      
 ,@IRFinQuantity AS BIT      
 ,@IRFinQuantityLoc AS BIT      
 ,@IRFinInvSalesTargets AS BIT      
 ,@IRTran AS BIT      
 ,@IRTranInvSales AS BIT      
 ,@IRTranInvTran AS BIT      
 ,@IRTranInvLedger AS BIT      
 ,@IRTranInvLedgerLoc AS BIT      
 ,@IRTranNegInvCorrections AS BIT      
 ,@IRTranPricelistChangeLog AS BIT      
 ,@IRTranSegInvMovement AS BIT      
 ,@IRTranSegInvSales AS BIT      
 ,@IRTranSerializedItemTracking AS BIT      
 ,@IRTranLotNumMovement AS BIT      
 ,@IRLists AS BIT      
 ,@IRListsPricing AS BIT      
 ,@IRListsInventory AS BIT      
 ,@IRListsStockCountSheets AS BIT      
 ,@IRListsAdjustments AS BIT      
 ,@WR AS BIT      
 ,@WROrders AS BIT      
 ,@WROrdersPendingPurchaseOrders AS BIT      
 ,@WROrdersPendingSalesOrders AS BIT      
 ,@POSR AS BIT      
 ,@POSRFin AS BIT      
 ,@POSRFinDrawerClosing AS BIT      
 ,@POSRFinCashierVariance AS BIT      
 ,@POSRLists AS BIT      
 ,@POSRListsCashDrawers AS BIT      
 ,@BR AS BIT      
 ,@BRProj AS BIT      
 ,@BRProjTender AS BIT      
 ,@BRProjAlloc AS BIT      
 ,@BRProjMissingAllow AS BIT      
 ,@BRProjSalesMatrix AS BIT      
 ,@BRProjPurchMatrix AS BIT      
 ,@BRProjCombinedMatrix AS BIT      
 ,@BRProjActvsBudget AS BIT      
 ,@BRAdmin AS BIT      
 ,@BRAdminHistory AS BIT      
 ,@SMSRLog AS BIT      
 ,@GLJournalReports AS BIT      
 ,@GLTransactionReports AS BIT      
 ,@APPaymentsReports AS BIT      
 ,@APTransactionsReports AS BIT      
 ,@ARReceiptsReports AS BIT      
 ,@ARTransactionsReports AS BIT      
 ,@ISalesReports AS BIT      
 ,@ITransactionsReports AS BIT      
 ,@SMSR AS BIT      
 ,@FHQCanApprove AS BIT      
 ,@FHQCreatePurchaseOrder AS BIT      
 ,@ARViewMarginPercentage AS BIT      
 ,@APPendingPayApprovals AS BIT      
 ,@GLLRTranCashBook AS BIT      
 ,@APPRTranVendAccrual AS BIT      
 ,@IRListsItemWhereUsed AS BIT      
 ,@IRTranBillOfMaterials AS BIT      
 ,@APBulkRFQ AS BIT      
 ,@InvProdSchedule AS BIT      
 ,@InvWorkCentres AS BIT      
 ,@IRListsProductionSchedule AS BIT      
 ,@APPRTranBulkRFQ AS BIT      
 ,@RecReceiptsReversal AS BIT      
 ,@ARRRTranSalesSummary AS BIT      
 ,@DashMain AS BIT      
 ,@DashBusiness AS BIT      
 ,@DashAR AS BIT      
 ,@ARChangeCustOnSO AS BIT      
 ,@ARChangeCustOnSQ AS BIT      
 ,@APOrdersRemove AS BIT      
 ,@APReqRemove AS BIT      
 ,@AROrdersRemove AS BIT      
 ,@ARQuotesRemove AS BIT      
 ,@ARCreditRequestsRemove AS BIT      
 ,@APBlockTax AS BIT      
 ,@ARBlockTax AS BIT      
 ,@APBulkRFQRemove AS BIT      
 ,@ARQuSysRemove AS BIT       
 ,@WHStPickRemove AS BIT      
 ,@WHRecRemove AS BIT      
 ,@WHShpRemove AS BIT      
 ,@WHContRemove AS BIT      
 ,@ARMatrixType AS BIT      
 ,@ARMatrixTypeEdit AS BIT      
 ,@ARMatrixTypeRemove AS BIT      
 ,@IRTranInvEfficiency AS BIT      
 ,@InvLotNumExpiryDates AS BIT      
 ,@ARRRTranMatrixTypeChangeLog AS BIT      
 ,@InvBulkLabelPrinting AS BIT      
 ,@InvVoucher AS BIT      
 ,@InvShowItemCost AS BIT      
 ,@InvWebstoreSync AS BIT      
 ,@SalesName AS NVARCHAR(50)      
 ,@ARDept AS INT      
 ,@APDept AS INT      
 ,@ARVoucerReprint AS BIT      
 ,@ARChangeDocInfo AS BIT      
 ,@APChangeDocInfo AS BIT      
 ,@FADepreciateAsset AS BIT      
 ,@FAAssets AS BIT      
 ,@FAAssetTypes AS BIT      
 ,@FADepreciationMethods AS BIT      
 ,@FACostTypes AS BIT      
 ,@FADisposalMethods AS BIT      
 ,@FAR AS BIT      
 ,@FARSummary AS BIT      
 ,@FARAssetListing AS BIT      
 ,@FARDisposals AS BIT      
 ,@FARDepreciationListing AS BIT      
 ,@FARAssetPurchases AS BIT      
 ,@FARAssetEfficiency AS BIT      
 --,@FARAssetClass AS BIT          
 ,@InvDimensions AS BIT      
 ,@InvValueBasedPrice AS BIT      
 ,@InvValueBasedPriceEdit AS BIT      
 ,@InvValueBasedPriceRemove AS BIT      
 ,@FARTran AS BIT      
 ,@FARLists AS BIT      
 ,@ARSOAdjAllowed AS BIT      
 ,@ARSQAdjAllowed AS BIT      
 ,@ARFHQAdjAllowed AS BIT      
 ,@ARCNAdjAllowed AS BIT      
 ,@ARCRAdjAllowed AS BIT      
 ,@ARCreditNotes AS BIT      
 ,@ARChangeDept AS BIT      
 ,@APInvoiceAdjAllowed AS BIT      
 ,@APPOAdjAllowed AS BIT      
 ,@APPRAdjAllowed AS BIT      
 ,@ARChangeCenter AS BIT      
 ,@POSEnableEditDiscount AS BIT      
 ,@POSOrders AS BIT      
 ,@POSQuotes AS BIT      
 ,@POSConvertOrders AS BIT      
 ,@POSConvertQuotes AS BIT      
 ,@POSAuthPayByAccount AS BIT      
 ,@POSAuthoriseRefunds AS BIT      
 ,@ARCreditBlockSI AS BIT      
 ,@ARCreditBlockSO AS BIT      
 ,@ARDeliveryAdvice AS BIT      
 ,@ARDeliveryAdviceRemove AS BIT      
 ,@InvCanChangeSellingPrice AS BIT      
 ,@ARSalesPersonChangeApproval AS BIT      
 ,@IRFinInvCostAnalysis AS BIT      
 ,@MFWorkOrders AS BIT      
 ,@MFJobs AS BIT      
 ,@MFJobAdjustApproval AS BIT      
 ,@MFProductionSchedule AS BIT      
 ,@MFPostWIP AS BIT      
 ,@MFBillOfMaterial AS BIT      
 ,@MFBOMAdjustApproval AS BIT      
 ,@MFWorkCentres AS BIT      
 ,@MFLabour AS BIT      
 ,@MFMachinery AS BIT      
 ,@MFTransferJobs AS BIT      
 ,@MFR AS BIT      
 ,@MFRTran AS BIT      
 ,@MFRWorkInProgress AS BIT      
 --,@MFRVariance AS BIT          
 --,@MFREfficiency AS BIT          
 ,@MFRLists AS BIT      
 ,@MFRBillOfMaterial AS BIT      
 ,@MFRResource AS BIT      
 ,@MFRItemWhereUsed AS BIT      
 ,@MFRSerialLotOutOfSeq AS BIT      
 ,@MFRMRP AS BIT      
 --,@MFRResEfficiency AS BIT          
 ,@InvWorkOrder AS BIT      
 ,@InvIntReq AS BIT      
 ,@InvIssReq AS BIT      
 ,@ARRRTranCustAccrual AS BIT      
 ,@ARRRFinOrderStatement AS BIT      
 ,@IRListsInvIntReq AS BIT      
 ,@MFCloseJobs AS BIT      
 ,@FAAssetsDisposal AS BIT      
 ,@FAAssetsLocations AS BIT      
 ,@FARAssetRegister AS BIT      
 ,@DashAP AS BIT      
 ,@DashInventory AS BIT      
 ,@DashWarehouse AS BIT      
 ,@APSetupPOApprovers AS BIT      
 ,@ApprovePurchaseOrders AS BIT      
 ,@MFRWCTransfer AS BIT      
 ,@InvCatMarginApproval AS BIT      
 ,@MobSa AS BIT      
 ,@MobSaOrdProcess AS BIT      
 ,@MobSaGeoTrack AS BIT      
 ,@MobPhDash AS BIT      
 ,@MobPhDashBankBal AS BIT      
 ,@MobPhDashSalesItemComp AS BIT      
 ,@MobPhDashSalesCustCat AS BIT      
 ,@MobPhDashOutCustCat AS BIT      
 ,@MobPhDashCustVendBal AS BIT      
 ,@MobPhDashInvQty AS BIT      
 ,@MobPhDashSalesPerf AS BIT      
 ,@MobPhPOApproval AS BIT      
 ,@MobPhDashTimesheet AS BIT      
 ,@BRProjClaimStatement AS BIT      
 ,@ARRRTranCancelSalesDocs AS BIT      
 ,@AREditDeliveryMethod AS BIT      
 ,@InvIsRepackaging AS BIT      
 ,@IRRepackaging AS BIT      
 ,@ContractBilling AS BIT      
 ,@ContractBillingType AS BIT      
 ,@ProcessContractBilling AS BIT      
 ,@ARRRecurringInvoice AS BIT      
 ,@ARRContractExpiry AS BIT      
 ,@ARRContractReconciliation AS BIT      
 ,@APReOrders AS BIT      
 ,@ARShipmentsAuditTrail AS BIT      
 ,@WHDelMethod AS BIT      
 ,@BankManager AS BIT      
 ,@APPRTranInvoiceDocs AS BIT      
 ,@MFRJobStatus AS BIT      
 ,@ARSalesOrderEDI AS BIT      
 ,@WHRecAdjust AS BIT      
 ,@APReturn AS BIT      
 ,@RetAprAdjust AS BIT      
 ,@ARDeliveryAdviceAdjustApproval AS BIT      
 ,@IRFinInvBin AS BIT      
 ,@MFRProdVariance AS BIT      
 ,@MFRManVariance AS BIT      
 ,@APPriceChangeAllowed AS BIT      
 ,@DashManage AS BIT      
 ,@MergeAcct AS BIT      
 ,@WSWorkshop AS BIT      
 ,@WSBrowser AS BIT      
 ,@WSInvoice AS BIT      
 ,@WSInvoiceAdjAllowed AS BIT      
 ,@WSPrintPreview AS BIT      
 ,@WSProcessJob AS BIT      
 ,@WSProcessJobRemove AS BIT      
 ,@WSProcessJobAdjAllowed AS BIT      
 ,@WSQuote AS BIT      
 ,@WSQuoteRemove AS BIT      
 ,@WSQuoteAdjAllowed AS BIT      
 ,@WSCreditNote AS BIT      
 ,@WSCNChangesAllowed AS BIT      
 ,@WSCNAdjAllowed AS BIT      
 ,@WSCreditRequest AS BIT      
 ,@WSCreditRequestsRemove AS BIT      
 ,@WSCRAdjAllowed AS BIT      
 ,@WSAllowCreditNotesAndRequestItems AS BIT      
 ,@WSReceipts AS BIT      
 ,@WSReceiptsReversal AS BIT      
 ,@WSServiceableItem AS BIT      
 ,@WSServiceableItemType AS BIT      
 ,@WSJobTemplate AS BIT      
 ,@WSSetupTechnician AS BIT      
 ,@WSSchedule AS BIT      
 ,@WSInventoryIssue AS BIT      
 ,@workshop0 AS BIT      
 ,@WSTran AS BIT      
 ,@WSWorkInProgress AS BIT      
 ,@WSJobProfitability AS BIT      
 ,@WSResourceUsage AS BIT      
 ,@WSJobCostVariance AS BIT      
 ,@WSLists AS BIT      
 ,@WSJobTemplateList AS BIT      
 ,@WSProcDocuments AS BIT      
 ,@WSViewMarginPercentage AS BIT      
 ,@WSCreditBlockIJB AS BIT      
 ,@WSCreditBlockPJB AS BIT      
 ,@ARConfirmDeliveryAllowed AS BIT      
 ,@GLContracts AS BIT      
 ,@GLLRContracts AS BIT      
 ,@GLLRContractsMonthly AS BIT      
 ,@GLLRContractsIncomeStatement AS BIT      
 ,@POSPayouts AS BIT      
 ,@ARLayby AS BIT      
 ,@ARChangeCustOnLB AS BIT      
 ,@ARLaybyRemove AS BIT      
 ,@ARLBAdjAllowed AS BIT      
 ,@ARCreditBlockLB AS BIT      
 ,@POSLayby AS BIT      
 ,@POSConvertLayby AS BIT      
 ,@APVenRecon AS BIT      
 ,@APVenReconWorksheet AS BIT      
 ,@APBuyers AS BIT      
 ,@APVenReconTypes AS BIT      
 ,@BRProjResources AS BIT      
 ,@BRProjFinInfo AS BIT      
 ,@BRProjChecklist AS BIT      
 ,@BRProjCashFlow AS BIT      
 ,@ARPODManagement AS BIT      
 ,@InvEmployee AS BIT      
 ,@ApproveInventoryRequistion AS BIT      
 ,@APSetupIRApprovers AS BIT      
 ,@POSAuthoriseReturn AS BIT      
 --,@SwitchCompanies As Bit          
 ,@IBTBranchTransferOrder AS BIT      
 ,@IBTBranchTransfer AS BIT      
 ,@IBTBranchTransferReceipt AS BIT      
 ,@IBTGoodsInTransitReport AS BIT      
 ,@ARSoftBOMConfiguration AS BIT      
 ,@POSFormsSetup AS BIT      
 ,@BinTransfer AS BIT      
 ,@IRFinInvPurchaseTargets AS BIT      
 ,@APPRBudOnPRApproval AS BIT      
 ,@APBudgetAnalysis AS BIT      
 ,@APZRAPurchasesTrans AS BIT  
 ,@GLZRAVatTrans AS BIT
 ,@POSCreateCustomer AS BIT      
 ,@POSSync AS BIT      
 ,@MFBOMBlockDesc AS BIT      
 ,@TrackUser AS BIT      
 ,@MobPerformanceDashboard AS BIT      
 ,@OverBudgetReq AS BIT      
 ,@NonBudgetReq AS BIT      
 ,@MaterialProfile AS BIT      
 ,@POSReinstallStoredProcedures AS BIT      
 ,@POSRePrintLastInvoice AS BIT      
 ,@CRMTaskListing AS BIT      
 ,@CRMOverdueTask AS BIT      
 ,@CRMStatusGroups AS BIT      
 ,@CRMProductivity AS BIT      
 ,@DashCRM AS BIT      
,@POSOpenCashDrawer AS BIT      
 ,@ESDSetupRegistration AS BIT      
 ,@WSChangeCenter AS BIT      
 ,@MobileUserLoginHistory AS BIT      
 ,@POSReprintInvoiceFromHistory AS BIT      
 ,@POSOpenPreviousReceipts AS BIT      
 ,@POSReversePreviousReceipts AS BIT      
 ,@UserRegDetails AS BIT      
 ,@IsMobileUser AS BIT      
 ,@IsMonitorSalespersonsTracking AS BIT      
 ,@IsMobileSalesOrder AS BIT      
 ,@IsMobileSalesQuote AS BIT      
 ,@IsMobileFreehandQuote AS BIT      
 ,@IsMobileCRMActivities AS BIT      
 ,@IsMobileCapturePOD AS BIT      
 ,@IsMobileCustomers AS BIT      
 ,@IsMobileExpenseClaims AS BIT      
 ,@IsMobileDeliveryAdvice AS BIT      
 ,@IsMobileEnuiriesByItem AS BIT      
 ,@IsMobileEnuiriesByLocation AS BIT      
 ,@IsMobileWarehouseTransfer AS BIT      
 ,@IsMobileBinTransfer AS BIT      
 ,@IsMobileGoodsReceiving AS BIT      
 ,@IsMobileStockCount AS BIT      
 ,@IsMobilePutAway AS BIT      
 ,@IsMobileStockPick AS BIT      
 ,@IsMobileJobWorkCentreTransfer AS BIT      
 ,@IsMobileInventoryIssue AS BIT      
 ,@VendorName AS NVARCHAR(50)      
 ,@IsMobileWSCreateQuotation AS BIT      
 ,@IsMobileWSProcessJob AS BIT      
 ,@IsMobileWSSchedule AS BIT      
 ,@IsMobileWSInventoryIssue AS BIT      
 ,@IsMobileProcuPurchaseRequisitions AS BIT      
 ,@IsMobileProcuPurchaseOrder AS BIT      
 ,@IsMobileWSServiceableItem AS BIT      
 ,@WSServiceHistory AS BIT      
 ,@MFReverseJobs AS BIT      
 ,@MFReverseJobEditQty AS BIT      
 ,@WRShipmentReport AS BIT      
 ,@IsMobileSalesInvoice AS BIT      
 ,@IsMobileCreditNoteApproval AS BIT      
 ,@IsEditComponentCost AS BIT      
 ,@IsMobileFinance AS BIT      
 ,@IsDispensingCashOnCashGuard AS BIT      
 ,@MFBOMItemCostsOnReport AS BIT     
 ,@IsGLApprovalAdjusment AS BIT     
 ,@POSDrawerGroups AS BIT    
 ,@CRMMyActivities  AS BIT  
 ,@CRMMyActions AS BIT  
 ,@CRMUnassignedActivities AS BIT  
 ,@CRMNotifications AS BIT  
 ,@CRMAllActivities AS BIT  
 ,@CRMAllActions AS BIT  
 ,@CRMReports AS BIT  
 ,@CRMDashboard AS BIT  
 ,@InvInventoryActive AS BIT    
 ,@InvIncompatibleItems AS BIT    
 ,@APRebateSetup As Bit    
 ,@APProcessRebate As Bit    
 ,@APRebateReport As Bit    
 ,@ARRRFinSPCOMM AS BIT    
 ,@DefaultLanguage as nvarchar(10)    
 ,@DefaultCompanyLocation as nvarchar(50)    
 )      
AS      
BEGIN      
 UPDATE tblUsers      
 SET strName = @Name      
  ,strCellNumber = @CellNumber      
  ,strEmail = @Email      
  ,strPassword = @Password      
  ,blnIsAdmin = @IsAdmin      
  ,blnIsLockedOut = @IsLockedOut      
  ,blnMustChange = @MustChange      
  ,blnCompany = @Company      
  ,blnCoFileHandle = @CoFileHandle      
  ,blnGL = @GL      
  ,blnPayables = @Payables      
  ,blnPayPayments = @PayPayments      
  ,blnReceivables = @Receivables      
  ,blnRecReceipts = @RecReceipts      
  ,blnInventory = @Inventory      
  ,blnInvAdjust = @InvAdjust      
  ,blnInvCount = @InvCount      
  ,blnSMS = @SMS      
  ,blnBusMgr = @BusMgr      
  ,blnPOS = @POS      
  ,blnProjects = @Projects      
  ,blnCashBook = @CashBook      
  ,blnReminders = @Reminders      
  ,blnMarketing = @Marketing      
  ,blnCollection = @Collection      
  ,blnPOSCash = @POSCash      
  ,blnCoAdmin = @CoAdmin      
  ,blnMainSum = @MainSum      
  ,blnAcctSets = @AcctSets      
  ,blnJournal = @Journal      
  ,blnBankTrans = @BankTrans      
  ,blnBankRecon = @BankRecon      
  ,blnAPPurch = @APPurch      
  ,blnAPTax = @APTax      
  ,blnARCredit = @ARCredit      
  ,blnARSales = @ARSales      
  ,blnARBatch = @ARBatch      
  ,blnInvPricelists = @InvPricelists      
  ,blnInvLoc = @InvLoc      
  ,blnInvCats = @InvCats      
  ,blnInvAssbly = @InvAssbly      
  ,blnInvTrans = @InvTrans      
  ,blnSMSCredits = @SMSCredits      
  ,blnPOSDrop = @POSDrop      
  ,blnPOSTerminalSetup = @POSTerminalSetup      
  ,blnPOSTerminalSetupList = @POSTerminalSetupList      
  ,blnPOSProfileMenu = @POSProfileMenu      
  ,blnBulkSMS = @BulkSMS      
  ,blnGLExpense = @GLExpense      
  ,blnDeposits = @Deposits      
  ,blnInvPDT = @InvPDT      
  ,blnARPersons = @ARPersons      
  ,blnAPBatch = @APBatch      
  ,blnAPBrowser = @APBrowser      
  ,blnARBrowser = @ARBrowser      
  ,blnTemplates = @Templates      
  ,blnAREmail = @AREmail      
  ,blnWHRec = @WHRec      
  ,blnWHPick = @WHPick      
  ,blnWHBatch = @WHBatch      
  ,blnFiles = @Files      
  ,strLocName = @LocName      
  ,blnCycle = @Cycle      
  ,blnInterest = @Interest      
  ,blnAPOrders = @APOrders      
  ,blnAPReq = @APReq      
  ,blnAROrders = @AROrders      
  ,blnARQuotes = @ARQuotes      
  ,blnARQuSys = @ARQuSys      
  ,blnWHStPick = @WHStPick      
  ,blnInvBrowser = @InvBrowser      
  ,blnWHShp = @WHShp      
  ,blnWHPrPack = @WHPrPack      
  ,blnWHCont = @WHCont      
  ,blnWHMani = @WHMani      
  ,blnWHShBrow = @WHShBrow      
  ,blnJobCost = @JobCost      
  ,blnDept = @Dept      
  ,blnSubLedger = @SubLedger      
  ,blnCLetters = @CLetters      
  ,blnTop20 = @Top20      
  ,blnTransTab = @TransTab      
  ,blnRecPayJournal = @RecPayJournal      
  ,blnARCats = @ARCats      
  ,blnInvDiscMatrix = @InvDiscMatrix      
  ,blnARBlockDesc = @ARBlockDesc      
  ,blnARBlockUnit = @ARBlockUnit      
  ,blnARBlockDiscount = @ARBlockDiscount      
  ,blnAPBlockDesc = @APBlockDesc      
  ,blnAPBlockUnit = @APBlockUnit      
  ,blnAPBlockDiscount = @APBlockDiscount      
  ,blnWHDelDriver = @WHDelDriver      
  ,blnWHDelVehicle = @WHDelVehicle      
  ,blnWHDelRoute = @WHDelRoute      
  ,blnARCreditRequests = @ARCreditRequests      
  ,blnBITab = @BITab      
  ,blnBICubeAdd = @BICubeAdd      
  ,blnBICubeEdit = @BICubeEdit      
  ,blnBICubeDelete = @BICubeDelete      
  ,blnBIViewAdd = @BIViewAdd      
  ,blnBIViewEdit = @BIViewEdit      
  ,blnBIViewDelete = @BIViewDelete      
  ,blnARSendPricelists = @ARSendPricelists      
  ,blnInvNumConv = @InvNumConv      
  ,blnInvSerialTypes = @InvSerialTypes      
  ,blnAPCats = @APCats      
  ,blnARPrintPreview = @ARPrintPreview      
  ,blnARCNChangesAllowed = @ARCNChangesAllowed      
  ,blnARPriceChangeAllowed = @ARPriceChangeAllowed      
  ,blnAPDNChangesAllowed = @APDNChangesAllowed      
  ,blnARInvoiceAdjAllowed = @ARInvoiceAdjAllowed      
  ,blnARAllowCreditNotesAndRequestItems = @ARAllowCreditNotesAndRequestItems      
  ,blnAPPaymentApprovals = @APPaymentApprovals      
  ,blnInvForecasting = @InvForecasting      
  ,blnInvBarcode = @InvBarcode      
  ,blnInvItemCostUpdater = @InvItemCostUpdater      
  ,blnInvItemRenaming = @InvItemRenaming      
  ,blnAPECOMSettings = @APECOMSettings      
  ,blnAPShowStatsOnDocs = @APShowStatsOnDocs      
  ,blnARShowStatsOnDocs = @ARShowStatsOnDocs      
  ,blnGLOpenItemAlloc = @GLOpenItemAlloc      
  ,blnGLLR = @GLLR      
  ,blnGLLRFin = @GLLRFin      
  ,blnGLLRFinBalSheetStd = @GLLRFinBalSheetStd      
  ,blnGLLRFinBalSheetComp = @GLLRFinBalSheetComp      
  ,blnGLLRFinIncomeStd = @GLLRFinIncomeStd      
  ,blnGLLRFinIncomeComp = @GLLRFinIncomeComp      
  ,blnGLLRFinIncomeMulti = @GLLRFinIncomeMulti      
  ,blnGLLRFinIncomeGP = @GLLRFinIncomeGP      
  ,blnGLLRFinIncomeMini = @GLLRFinIncomeMini      
  ,blnGLLRFinTrialBal = @GLLRFinTrialBal      
  ,blnGLLRFinPerMovement = @GLLRFinPerMovement      
  ,blnGLLRFinMultiCompany = @GLLRFinMultiCompany      
  ,blnGLLRTran = @GLLRTran      
  ,blnGLLRTranLedger = @GLLRTranLedger      
  ,blnGLLRTranEntryType = @GLLRTranEntryType      
  ,blnGLLRTranTax = @GLLRTranTax      
  ,blnGLLRTranDocTran = @GLLRTranDocTran      
  ,blnGLLRBudgets = @GLLRBudgets      
  ,blnGLLRBudgetsAmounts = @GLLRBudgetsAmounts      
  ,blnGLLRBudgetsCompIncome = @GLLRBudgetsCompIncome      
  ,blnGLLRBudgetsCompIncomeF = @GLLRBudgetsCompIncomeF      
  ,blnGLLRBudgetsCompBalSheet = @GLLRBudgetsCompBalSheet      
  ,blnGLLRDept = @GLLRDept      
  ,blnGLLRDeptBalSheetStd = @GLLRDeptBalSheetStd      
  ,blnGLLRDeptIncomeStd = @GLLRDeptIncomeStd      
  ,blnGLLRDeptIncomeComp = @GLLRDeptIncomeComp      
  ,blnGLLRDeptTrialBal = @GLLRDeptTrialBal      
  ,blnGLLRDeptLedger = @GLLRDeptLedger      
  ,blnGLLRDeptBudgetAmounts = @GLLRDeptBudgetAmounts      
  ,blnGLLRDeptCompIncome = @GLLRDeptCompIncome      
 ,blnGLLRLists = @GLLRLists      
  ,blnGLLRListsAccounts = @GLLRListsAccounts      
  ,blnGLLRListsAccountSets = @GLLRListsAccountSets      
  ,blnGLLRListsJournalCodes = @GLLRListsJournalCodes      
  ,blnGLCR = @GLCR      
  ,blnGLCRFin = @GLCRFin      
  ,blnGLCRFinIncome = @GLCRFinIncome      
  ,blnGLCRFinIncomeMulti = @GLCRFinIncomeMulti      
  ,blnGLCRTran = @GLCRTran      
  ,blnGLCRTranAlloc = @GLCRTranAlloc      
  ,blnGLCRTranAllocMissing = @GLCRTranAllocMissing      
  ,blnGLCRBudget = @GLCRBudget      
  ,blnGLCRBudgetCompBudget = @GLCRBudgetCompBudget      
  ,blnGLCRLists = @GLCRLists      
  ,blnGLCRListsProfitCenters = @GLCRListsProfitCenters      
  ,blnAPPR = @APPR      
  ,blnAPPRFin = @APPRFin      
  ,blnAPPRFinVendorAged = @APPRFinVendorAged      
  ,blnAPPRTran = @APPRTran      
  ,blnAPPRTranVendorPurchases = @APPRTranVendorPurchases      
  ,blnAPPRTranPendingPurchaseOrders = @APPRTranPendingPurchaseOrders      
  ,blnAPPRTranPendingPurchaseReq = @APPRTranPendingPurchaseReq      
  ,blnAPPRTranVendorTran = @APPRTranVendorTran      
  ,blnAPETIMSPurchasesTrans = @APETIMSPurchasesTrans
  ,blnAPPRLists = @APPRLists      
  ,blnAPPRListsVendors = @APPRListsVendors      
  ,blnAPPRListsContacts = @APPRListsContacts      
  ,blnARRR = @ARRR      
  ,blnARRRFin = @ARRRFin      
  ,blnARRRFinCustAged = @ARRRFinCustAged      
  ,blnARRRFinCallSheet = @ARRRFinCallSheet      
  ,blnARRRFinCustStatements = @ARRRFinCustStatements      
  ,blnARRRFinSalesStatements = @ARRRFinSalesStatements      
  ,blnARRRFinInvoiceGP = @ARRRFinInvoiceGP      
  ,blnARRRFinCustProfiability = @ARRRFinCustProfiability      
  ,blnARRRFinCustSalesTargets = @ARRRFinCustSalesTargets      
  ,blnARRRFinCustSalesTrends = @ARRRFinCustSalesTrends      
  ,blnARRRFinSPPerf = @ARRRFinSPPerf      
  ,blnARRRFinSPTargets = @ARRRFinSPTargets      
  ,blnARRRTran = @ARRRTran      
  ,blnARRRTranCustSales = @ARRRTranCustSales      
  ,blnARRRTranSPSales = @ARRRTranSPSales      
  ,blnARRRTranSPMissing = @ARRRTranSPMissing      
  ,blnARRRTranInvoiceDocs = @ARRRTranInvoiceDocs      
  ,blnARRRTranCashUp = @ARRRTranCashUp      
  ,blnARRRTranPendingSalesOrders = @ARRRTranPendingSalesOrders      
  ,blnARRRTranClosedSalesOrders = @ARRRTranClosedSalesOrders      
  ,blnARRRTranCredits = @ARRRTranCredits      
  ,blnARRRTranCustTran = @ARRRTranCustTran      
  ,blnARRRTranOpenQuotes = @ARRRTranOpenQuotes      
  ,blnARRRLists = @ARRRLists      
  ,blnARRRListsPricelist = @ARRRListsPricelist      
  ,blnARRRListsCustomers = @ARRRListsCustomers      
  ,blnARRRListsSalesPersons = @ARRRListsSalesPersons      
  ,blnARRRListsContactsList = @ARRRListsContactsList      
  ,blnIR = @IR      
  ,blnIRFin = @IRFin      
  ,blnIRFinInvAged = @IRFinInvAged      
  ,blnIRFinInvValuation = @IRFinInvValuation      
  ,blnIRFinLocSum = @IRFinLocSum      
  ,blnIRFinInvLoc = @IRFinInvLoc      
  ,blnIRFinQuantity = @IRFinQuantity      
  ,blnIRFinQuantityLoc = @IRFinQuantityLoc      
  ,blnIRFinInvSalesTargets = @IRFinInvSalesTargets      
  ,blnIRTran = @IRTran      
  ,blnIRTranInvSales = @IRTranInvSales      
  ,blnIRTranInvTran = @IRTranInvTran      
  ,blnIRTranInvLedger = @IRTranInvLedger      
  ,blnIRTranInvLedgerLoc = @IRTranInvLedgerLoc      
  ,blnIRTranNegInvCorrections = @IRTranNegInvCorrections      
  ,blnIRTranPricelistChangeLog = @IRTranPricelistChangeLog      
  ,blnIRTranSegInvMovement = @IRTranSegInvMovement      
  ,blnIRTranSegInvSales = @IRTranSegInvSales      
  ,blnIRTranSerializedItemTracking = @IRTranSerializedItemTracking      
  ,blnIRTranLotNumMovement = @IRTranLotNumMovement      
  ,blnIRLists = @IRLists      
  ,blnIRListsPricing = @IRListsPricing      
  ,blnIRListsInventory = @IRListsInventory      
  ,blnIRListsStockCountSheets = @IRListsStockCountSheets      
  ,blnIRListsAdjustments = @IRListsAdjustments      
  ,blnWR = @WR      
  ,blnWROrders = @WROrders      
  ,blnWROrdersPendingPurchaseOrders = @WROrdersPendingPurchaseOrders      
  ,blnWROrdersPendingSalesOrders = @WROrdersPendingSalesOrders      
  ,blnPOSR = @POSR      
  ,blnPOSRFin = @POSRFin      
  ,blnPOSRFinDrawerClosing = @POSRFinDrawerClosing      
  ,blnPOSRFinCashierVariance = @POSRFinCashierVariance      
  ,blnPOSRLists = @POSRLists      
  ,blnPOSRListsCashDrawers = @POSRListsCashDrawers      
  ,blnBR = @BR      
  ,blnBRProj = @BRProj      
  ,blnBRProjTender = @BRProjTender      
  ,blnBRProjAlloc = @BRProjAlloc      
  ,blnBRProjMissingAllow = @BRProjMissingAllow      
  ,blnBRProjSalesMatrix = @BRProjSalesMatrix      
  ,blnBRProjPurchMatrix = @BRProjPurchMatrix      
  ,blnBRProjCombinedMatrix = @BRProjCombinedMatrix      
  ,blnBRProjActvsBudget = @BRProjActvsBudget      
  ,blnBRAdmin = @BRAdmin      
  ,blnBRAdminHistory = @BRAdminHistory      
  ,blnSMSRLog = @SMSRLog      
  ,blnGLJournalReports = @GLJournalReports      
  ,blnGLTransactionReports = @GLTransactionReports      
  ,blnAPPaymentsReports = @APPaymentsReports      
  ,blnAPTransactionsReports = @APTransactionsReports      
  ,blnARReceiptsReports = @ARReceiptsReports      
  ,blnARTransactionsReports = @ARTransactionsReports      
  ,blnISalesReports = @ISalesReports      
  ,blnITransactionsReports = @ITransactionsReports      
  ,blnSMSR = @SMSR      
  ,blnFHQCanApprove = @FHQCanApprove      
  ,blnFHQCreatePurchaseOrder = @FHQCreatePurchaseOrder      
  ,blnARViewMarginPercentage = @ARViewMarginPercentage      
  ,blnAPPendingPayApprovals = @APPendingPayApprovals      
  ,blnGLLRTranCashBook = @GLLRTranCashBook      
  ,blnAPPRTranVendAccrual = @APPRTranVendAccrual      
  ,blnIRListsItemWhereUsed = @IRListsItemWhereUsed      
  ,blnIRTranBillOfMaterials = @IRTranBillOfMaterials      
  ,blnAPBulkRFQ = @APBulkRFQ      
  ,blnInvProdSchedule = @InvProdSchedule      
  ,blnInvWorkCentres = @InvWorkCentres      
  ,blnIRListsProductionSchedule = @IRListsProductionSchedule      
  ,blnAPPRTranBulkRFQ = @APPRTranBulkRFQ      
  ,blnRecReceiptsReversal = @RecReceiptsReversal      
  ,blnARRRTranSalesSummary = @ARRRTranSalesSummary      
  ,blnDashMain = @DashMain      
  ,blnDashAR = @DashAR      
 ,blnARChangeCustOnSO = @ARChangeCustOnSO      
  ,blnARChangeCustOnSQ = @ARChangeCustOnSQ      
  ,blnAPOrdersRemove = @APOrdersRemove      
  ,blnAPReqRemove = @APReqRemove      
  ,blnAROrdersRemove = @AROrdersRemove      
  ,blnARQuotesRemove = @ARQuotesRemove      
  ,blnARCreditRequestsRemove = @ARCreditRequestsRemove      
  ,blnAPBlockTax = @APBlockTax      
  ,blnARBlockTax = @ARBlockTax      
  ,blnAPBulkRFQRemove = @APBulkRFQRemove      
  ,blnARQuSysRemove = @ARQuSysRemove      
  ,blnWHStPickRemove = @WHStPickRemove      
  ,blnWHRecRemove = @WHRecRemove      
  ,blnWHShpRemove = @WHShpRemove      
  ,blnWHContRemove = @WHContRemove      
  ,blnARMatrixType = @ARMatrixType      
  ,blnARMatrixTypeEdit = @ARMatrixTypeEdit      
  ,blnARMatrixTypeRemove = @ARMatrixTypeRemove      
  ,blnIRTranInvEfficiency = @IRTranInvEfficiency      
  ,blnInvLotNumExpiryDates = @InvLotNumExpiryDates      
  ,blnARRRTranMatrixTypeChangeLog = @ARRRTranMatrixTypeChangeLog      
  ,blnInvBulkLabelPrinting = @InvBulkLabelPrinting      
  ,bitInvVoucher = @InvVoucher      
  ,blnInvShowItemCost = @InvShowItemCost      
  ,bitInvWebstoreSync = @InvWebstoreSync      
  ,strSalesName = @SalesName      
  ,intARDept = @ARDept      
  ,intAPDept = @APDept      
  ,bitARVoucerReprint = @ARVoucerReprint      
  ,blnARChangeDocInfo = @ARChangeDocInfo      
  ,blnAPChangeDocInfo = @APChangeDocInfo      
  ,blnFADepreciateAsset = @FADepreciateAsset      
  ,blnFAAssets = @FAAssets      
  ,blnFAAssetTypes = @FAAssetTypes      
  ,blnFADepreciationMethods = @FADepreciationMethods      
  ,blnFACostTypes = @FACostTypes      
  ,blnFADisposalMethods = @FADisposalMethods      
  ,blnFAR = @FAR      
  ,blnFARSummary = @FARSummary      
  ,blnFARAssetListing = @FARAssetListing      
  ,blnFARDisposals = @FARDisposals      
  ,blnFARDepreciationListing = @FARDepreciationListing      
  ,blnFARAssetPurchases = @FARAssetPurchases      
  ,blnFARAssetEfficiency = @FARAssetEfficiency      
  --,blnFARAssetClass = @FARAssetClass          
  ,blnInvDimensions = @InvDimensions      
  ,blnInvValueBasedPrice = @InvValueBasedPrice      
  ,blnInvValueBasedPriceEdit = @InvValueBasedPriceEdit      
  ,blnInvValueBasedPriceRemove = @InvValueBasedPriceRemove      
  ,blnFARTran = @FARTran      
  ,blnFARLists = @FARLists      
  ,blnARSOAdjAllowed = @ARSOAdjAllowed      
  ,blnARSQAdjAllowed = @ARSQAdjAllowed      
  ,blnARFHQAdjAllowed = @ARFHQAdjAllowed      
  ,blnARCNAdjAllowed = @ARCNAdjAllowed      
  ,blnARCRAdjAllowed = @ARCRAdjAllowed      
  ,blnARCreditNotes = @ARCreditNotes      
  ,blnARChangeDept = @ARChangeDept      
  ,blnAPInvoiceAdjAllowed = @APInvoiceAdjAllowed      
  ,blnAPPOAdjAllowed = @APPOAdjAllowed      
  ,blnAPPRAdjAllowed = @APPRAdjAllowed      
  ,blnARChangeCenter = @ARChangeCenter      
  ,bitPOSEnableEditDiscount = @POSEnableEditDiscount      
  ,blnPOSOrders = @POSOrders      
  ,blnPOSQuotes = @POSQuotes      
  ,blnPOSConvertOrders = @POSConvertOrders      
  ,blnPOSConvertQuotes = @POSConvertQuotes      
  ,blnPOSAuthPayByAccount = @POSAuthPayByAccount      
  ,blnPOSAuthoriseRefunds = @POSAuthoriseRefunds      
  ,blnARCreditBlockSI = @ARCreditBlockSI      
  ,blnARCreditBlockSO = @ARCreditBlockSO      
  ,blnARDeliveryAdvice = @ARDeliveryAdvice      
  ,blnARDeliveryAdviceRemove = @ARDeliveryAdviceRemove      
  ,blnInvCanChangeSellingPrice = @InvCanChangeSellingPrice      
  ,blnARSalesPersonChangeApproval = @ARSalesPersonChangeApproval      
  ,blnIRFinInvCostAnalysis = @IRFinInvCostAnalysis      
  ,blnMFWorkOrders = @MFWorkOrders      
  ,blnMFJobs = @MFJobs      
  ,blnMFJobAdjustApproval = @MFJobAdjustApproval      
  ,blnMFProductionSchedule = @MFProductionSchedule      
  ,blnMFPostWIP = @MFPostWIP      
  ,blnMFBillOfMaterial = @MFBillOfMaterial      
  ,blnMFBOMAdjustApproval = @MFBOMAdjustApproval      
  ,blnMFWorkCentres = @MFWorkCentres      
  ,blnMFLabour = @MFLabour      
  ,blnMFMachinery = @MFMachinery      
  ,blnMFTransferJobs = @MFTransferJobs      
  ,blnMFR = @MFR      
  ,blnMFRTran = @MFRTran      
  ,blnMFRWorkInProgress = @MFRWorkInProgress      
  --,blnMFRVariance = @MFRVariance          
  --,blnMFREfficiency = @MFREfficiency          
  ,blnMFRLists = @MFRLists      
 ,blnMFRBillOfMaterial = @MFRBillOfMaterial      
  ,blnMFRResource = @MFRResource      
  ,blnMFRItemWhereUsed = @MFRItemWhereUsed      
  ,blnMFRSerialLotOutOfSeq = @MFRSerialLotOutOfSeq      
  ,blnMFRMRP = @MFRMRP      
  --,blnMFRResEfficiency = @MFRResEfficiency          
  ,blnInvWorkOrder = @InvWorkOrder      
  ,blnInvIntReq = @InvIntReq      
  ,blnInvIssReq = @InvIssReq      
  ,blnARRRTranCustAccrual = @ARRRTranCustAccrual      
  ,blnARRRFinOrderStatement = @ARRRFinOrderStatement      
  ,blnIRListsInvIntReq = @IRListsInvIntReq      
  ,blnMFCloseJobs = @MFCloseJobs      
  ,blnFAAssetsDisposal = @FAAssetsDisposal      
  ,blnFAAssetsLocations = @FAAssetsLocations      
  ,blnFARAssetRegister = @FARAssetRegister      
  ,blnDashAP = @DashAP      
  ,blnDashInventory = @DashInventory      
  ,blnDashWarehouse = @DashWarehouse      
  ,blnAPSetupPOApprovers = @APSetupPOApprovers      
  ,blnApprovePurchaseOrders = @ApprovePurchaseOrders      
  ,blnMFRWCTransfer = @MFRWCTransfer      
  ,blnInvCatMarginApproval = @InvCatMarginApproval      
  ,blnMobSa = @MobSa      
  ,blnMobSaOrdProcess = @MobSaOrdProcess      
  ,blnMobSaGeoTrack = @MobSaGeoTrack      
  ,blnMobPhDash = @MobPhDash      
  ,blnMobPhDashBankBal = @MobPhDashBankBal      
  ,blnMobPhDashSalesItemComp = @MobPhDashSalesItemComp      
  ,blnMobPhDashSalesCustCat = @MobPhDashSalesCustCat      
  ,blnMobPhDashOutCustCat = @MobPhDashOutCustCat      
  ,blnMobPhDashCustVendBal = @MobPhDashCustVendBal      
  ,blnMobPhDashInvQty = @MobPhDashInvQty      
  ,blnMobPhDashSalesPerf = @MobPhDashSalesPerf      
  ,blnMobPhPOApproval = @MobPhPOApproval      
  ,blnMobPhDashTimesheet = @MobPhDashTimesheet      
  ,blnBRProjClaimStatement = @BRProjClaimStatement      
  ,blnARRRTranCancelSalesDocs = @ARRRTranCancelSalesDocs      
  ,blnAREditDeliveryMethod = @AREditDeliveryMethod      
 ,blnInvIsRepackaging = @InvIsRepackaging      
  ,blnIRRepackaging = @IRRepackaging      
  ,blnContractBilling = @ContractBilling      
  ,blnContractBillingType = @ContractBillingType      
  ,blnProcessContractBilling = @ProcessContractBilling      
  ,blnARRRecurringInvoice = @ARRRecurringInvoice      
  ,blnARRContractExpiry = @ARRContractExpiry      
  ,blnARRContractReconciliation = @ARRContractReconciliation      
  ,blnAPReOrders = @APReOrders      
  ,blnARShipmentsAuditTrail = @ARShipmentsAuditTrail      
  ,blnWHDelMethod = @WHDelMethod      
  ,blnDashBusiness = @DashBusiness      
  ,blnBankManager = @BankManager      
  ,blnAPPRTranInvoiceDocs = @APPRTranInvoiceDocs      
  ,blnMFRJobStatus = @MFRJobStatus      
  ,blnARSalesOrderEDI = @ARSalesOrderEDI      
  ,blnAPGRVAdjustmentApproval = @WHRecAdjust      
  ,blnAPReturnSelection = @APReturn      
  ,blnAPReturnAdjustmentApproval = @RetAprAdjust      
  ,blnARDAAdjustmentApproval = @ARDeliveryAdviceAdjustApproval      
  ,blnIRFinInvBin = @IRfinInvBin      
  ,blnMFRProdVariance = @MFRProdVariance      
  ,blnMFRManVariance = @MFRManVariance      
  ,blnAPPriceChangeAllowed = @APPriceChangeAllowed      
  ,blnDashManage = @DashManage      
  ,blnGLMergeAccounts = @MergeAcct      
  ,blnWSWorkshop = @WSWorkshop      
  ,blnWSBrowser = @WSBrowser      
  ,blnWSInvoice = @WSInvoice      
  ,blnWSInvoiceAdjAllowed = @WSInvoiceAdjAllowed      
  ,blnWSPrintPreview = @WSPrintPreview      
  ,blnWSProcessJob = @WSProcessJob      
  ,blnWSProcessJobRemove = @WSProcessJobRemove      
  ,blnWSProcessJobAdjAllowed = @WSProcessJobAdjAllowed      
  ,blnWSQuote = @WSQuote      
  ,blnWSQuoteRemove = @WSQuoteRemove      
  ,blnWSQuoteAdjAllowed = @WSQuoteAdjAllowed      
  ,blnWSCreditNote = @WSCreditNote      
  ,blnWSCNChangesAllowed = @WSCNChangesAllowed      
  ,blnWSCNAdjAllowed = @WSCNAdjAllowed      
  ,blnWSCreditRequest = @WSCreditRequest      
  ,blnWSCreditRequestsRemove = @WSCreditRequestsRemove      
  ,blnWSCRAdjAllowed = @WSCRAdjAllowed      
  ,blnWSAllowCreditNotesAndRequestItems = @WSAllowCreditNotesAndRequestItems      
  ,blnWSReceipts = @WSReceipts      
  ,blnWSReceiptsReversal = @WSReceiptsReversal      
  ,blnWSServiceableItem = @WSServiceableItem      
  ,blnWSServiceableItemType = @WSServiceableItemType      
  ,blnWSJobTemplate = @WSJobTemplate      
  ,blnWSSetupTechnician = @WSSetupTechnician      
  ,blnWSSchedule = @WSSchedule      
  ,blnWSInventoryIssue = @WSInventoryIssue      
  ,blnworkshop0 = @workshop0      
  ,blnWSTran = @WSTran      
  ,blnWSWorkInProgress = @WSWorkInProgress      
  ,blnWSJobProfitability = @WSJobProfitability      
  ,blnWSResourceUsage = @WSResourceUsage      
  ,blnWSJobCostVariance = @WSJobCostVariance      
  ,blnWSLists = @WSLists      
  ,blnWSJobTemplateList = @WSJobTemplateList      
  ,blnWSProcDocuments = @WSProcDocuments      
  ,blnWSViewMarginPercentage = @WSViewMarginPercentage      
  ,blnWSCreditBlockIJB = @WSCreditBlockIJB      
  ,blnWSCreditBlockPJB = @WSCreditBlockPJB      
  ,blnARConfirmDeliveryAllowed = @ARConfirmDeliveryAllowed      
  ,blnGLContracts = @GLContracts      
  ,blnGLLRContracts = @GLLRContracts      
  ,blnGLLRContractsMonthly = @GLLRContractsMonthly      
  ,blnGLLRContractsIncomeStatement = @GLLRContractsIncomeStatement      
  ,blnPOSPayouts = @POSPayouts      
  ,blnARLayby = @ARLayby      
  ,blnARChangeCustOnLB = @ARChangeCustOnLB      
  ,blnARLaybyRemove = @ARLaybyRemove      
  ,blnARLBAdjAllowed = @ARLBAdjAllowed      
  ,blnARCreditBlockLB = @ARCreditBlockLB      
  ,blnPOSLayby = @POSLayby      
  ,blnPOSConvertLayby = @POSConvertLayby      
  ,blnAPVenRecon = @APVenRecon      
  ,blnAPVenReconWorksheet = @APVenReconWorksheet      
  ,blnAPBuyers = @APBuyers      
  ,blnAPVenReconTypes = @APVenReconTypes      
  ,blnBRProjResources = @BRProjResources      
  ,blnBRProjFinInfo = @BRProjFinInfo      
  ,blnBRProjChecklist = @BRProjChecklist      
  ,blnBRProjCashFlow = @BRProjCashFlow      
  ,blnARPODManagement = @ARPODManagement      
  ,blnInvEmployee = @InvEmployee      
  ,blnApproveInventoryRequistion = @ApproveInventoryRequistion      
  ,blnAPSetupIRApprovers = @APSetupIRApprovers      
  ,blnPOSAuthoriseReturn = @POSAuthoriseReturn      
  --,blnSwitchCmp = @SwitchCompanies           
  ,blnIBTBranchTransOrder = @IBTBranchTransferOrder      
  ,blnIBTBranchTrans = @IBTBranchTransfer      
  ,blnIBTBranchTransReceipt = @IBTBranchTransferReceipt      
  ,blnIBTGoodInTransitRpt = @IBTGoodsInTransitReport      
  ,blnARSoftBOMConfiguration = @ARSoftBOMConfiguration      
  ,blnPOSFormsSetup = @POSFormsSetup      
  ,blnBinTransfer = @BinTransfer      
  ,blnIRFinInvPurchaseTargets = @IRFinInvPurchaseTargets      
  ,blnAPPRBudOnPRApproval = @APPRBudOnPRApproval      
  ,blnAPBudgetAnalysis = @APBudgetAnalysis      
  ,blnAPZRAPurchasesTrans = @APZRAPurchasesTrans  
  ,blnGLZRAVatTrans = @GLZRAVatTrans
  ,blnPOSCreateCustomer = @POSCreateCustomer      
  ,blnPOSSync = @POSSync      
  ,blnMFBlockDesc = @MFBOMBlockDesc      
  ,blnTrackUser = @TrackUser      
  ,blnMobPerformanceDashboard = @MobPerformanceDashboard      
  ,blnOverBudgetReq = @OverBudgetReq      
  ,blnNonBudgetReq = @NonBudgetReq      
  ,blnMaterialProfile = @MaterialProfile      
  ,blnPOSReinstallStoredProcedures = @POSReinstallStoredProcedures      
  ,blnPOSRePrintLastInvoice = @POSRePrintLastInvoice      
  ,blnCRMTaskListing = @CRMTaskListing      
  ,blnCRMOverdueTask = @CRMOverdueTask      
  ,blnCRMStatusGroups = @CRMStatusGroups      
  ,blnCRMProductivity = @CRMProductivity      
  ,blnDashCRM = @DashCRM      
  ,blnPOSOpenCashDrawer = @POSOpenCashDrawer      
  ,blnESDSetupRegistration = @ESDSetupRegistration      
  ,blnWSChangeCenter = @WSChangeCenter      
  ,bitMobileUserLoginHistory = @MobileUserLoginHistory      
  ,blnPOSReprintInvoiceFromHistory = @POSReprintInvoiceFromHistory      
  ,blnPOSOpenPreviousReceipts = @POSOpenPreviousReceipts      
  ,blnPOSReversePreviousReceipts = @POSReversePreviousReceipts      
  ,blnUserRegDetails = @UserRegDetails      
  ,blnIsMobileUser = @IsMobileUser      
  ,blnIsMonitorSalespersonsTracking = @IsMonitorSalespersonsTracking      
  ,blnIsMobileSalesOrder = @IsMobileSalesOrder      
  ,blnIsMobileSalesQuote = @IsMobileSalesQuote      
  ,blnIsMobileFreehandQuote = @IsMobileFreehandQuote      
  ,blnIsMobileCRMActivities = @IsMobileCRMActivities      
  ,blnIsMobileCapturePOD = @IsMobileCapturePOD      
  ,blnIsMobileCustomers = @IsMobileCustomers      
  ,blnIsMobileExpenseClaims = @IsMobileExpenseClaims      
  ,blnIsMobileDeliveryAdvice = @IsMobileDeliveryAdvice      
  ,blnIsMobileEnuiriesByItem = @IsMobileEnuiriesByItem      
  ,blnIsMobileEnuiriesByLocation = @IsMobileEnuiriesByLocation      
  ,blnIsMobileWarehouseTransfer = @IsMobileWarehouseTransfer      
  ,blnIsMobileBinTransfer = @IsMobileBinTransfer      
  ,blnIsMobileGoodsReceiving = @IsMobileGoodsReceiving      
  ,blnIsMobileStockCount = @IsMobileStockCount      
  ,blnIsMobilePutAway = @IsMobilePutAway      
  ,blnIsMobileStockPick = @IsMobileStockPick      
  ,blnIsMobileJobWorkCentreTransfer = @IsMobileJobWorkCentreTransfer      
  ,blnIsMobileInventoryIssue = @IsMobileInventoryIssue      
  ,strVendName = @VendorName      
  ,blnIsMobileWSCreateQuotation = @IsMobileWSCreateQuotation      
  ,blnIsMobileWSProcessJob = @IsMobileWSProcessJob      
  ,blnIsMobileWSSchedule = @IsMobileWSSchedule      
  ,blnIsMobileWSInventoryIssue = @IsMobileWSInventoryIssue      
  ,blnIsMobileProcuPurchaseRequisitions = @IsMobileProcuPurchaseRequisitions      
  ,blnIsMobileProcuPurchaseOrder = @IsMobileProcuPurchaseOrder      
  ,blnIsMobileWSServiceableItem = @IsMobileWSServiceableItem      
  ,blnWSServiceHistory = @WSServiceHistory      
  ,blnMFReverseJobs = @MFReverseJobs      
  ,blnMFReverseJobEditQty = @MFReverseJobEditQty      
  ,blnWRShipment = @WRShipmentReport      
  ,blnIsMobileSalesInvoice = @IsMobileSalesInvoice       
  ,blnIsMobileCreditNoteApproval = @IsMobileCreditNoteApproval       
  ,bitIsEditComponentCost = @IsEditComponentCost      
  ,blnIsMobileFinance = @IsMobileFinance      
  ,blnIsDispensingCashOnCashGuard = @IsDispensingCashOnCashGuard      
  ,blnMFBOMItemCostsOnReport = @MFBOMItemCostsOnReport      
  ,blnGLApprovalAdjusment = @IsGLApprovalAdjusment    
  ,blnPOSDrawerGroups = @POSDrawerGroups    
  ,blnCRMMyActivities = @CRMMyActivities  
  ,blnCRMMyActions = @CRMMyActions  
  ,blnCRMUnassignedActivities = @CRMUnassignedActivities  
  ,blnCRMNotifications = @CRMNotifications  
  ,blnCRMAllActivities = @CRMAllActivities  
  ,blnCRMAllActions = @CRMAllActions  
  ,blnCRMReports = @CRMReports  
  ,blnCRMDashboard = @CRMDashboard  
  ,blnInvInventoryActive = @InvInventoryActive    
  ,blnInvIncompatibleItems = @InvIncompatibleItems    
  ,blnAPRebateSetup = @APRebateSetup    
  ,blnAPProcessRebate = @APProcessRebate    
  ,blnAPRebateReport = @APRebateReport    
  ,blnARRRFinSPCOMM = @ARRRFinSPCOMM    
  ,strDefaultLanguage = @DefaultLanguage    
  ,strDefaultCompanyLocation = @DefaultCompanyLocation    
 WHERE strUserName = @UserName      
END      
GO
/****** Object:  StoredProcedure [dbo].[ExchangeRatesUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ExchangeRatesUpdate]
(
	@Currency NVARCHAR(3),
	@oldExcDate DATETIME,
	@ExcDate DATETIME,
	@Rate DECIMAL(20,6),
	@MinRate DECIMAL(20,6),
	@MaxRate DECIMAL(20,6)
)
AS
BEGIN
	UPDATE tblCurrencyExc SET dteDate = @ExcDate, decRate = @Rate, decMinRate = @MinRate, decMaxRate = @MaxRate WHERE (strCurrency = @Currency AND dteDate = @oldExcDate)
END
GO
/****** Object:  StoredProcedure [dbo].[ExcludeCustomerFromCommission]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InsertInvoiceDocREVAndREVDTDA] ***********/
/*********** Start [ExcludeCustomerFromCommission] ***********/
CREATE PROCEDURE [dbo].[ExcludeCustomerFromCommission]
    @CustomerName NVARCHAR(100) ,
    @IsExclCommission BIT
AS
    BEGIN
        UPDATE tblCustomers SET bitExclCommission = @IsExclCommission WHERE strCustName = @CustomerName;
    END;
GO
/****** Object:  StoredProcedure [dbo].[ExcludeJournalFromCommission]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [ExcludeCustomerFromCommission] ***********/
/*********** Start [ExcludeJournalFromCommission] ***********/
CREATE PROCEDURE [dbo].[ExcludeJournalFromCommission]
    @PartNumber NVARCHAR(100) ,
    @IsExclCommission BIT
AS
    BEGIN
        UPDATE tblInv SET bitExclCommission = @IsExclCommission WHERE strPartNumber = @PartNumber;
    END;
GO
/****** Object:  StoredProcedure [dbo].[Extendofflineposperiodhours]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[Extendofflineposperiodhours] @hours INT 
AS 
  BEGIN 
      DECLARE @date DATETIME 
      DECLARE @diffHours INT 

      SELECT TOP 1 @date = result.lowestdate 
      FROM   (SELECT Min(syncdate) AS LowestDate 
              FROM   tblofflineinvoicedt 
              WHERE  issync = 0 
              UNION 
              SELECT Min(syncdate) AS LowestDate 
              FROM   tblofflineorderandquotedt 
              WHERE  issync = 0) AS result 
      ORDER  BY lowestdate 

      --PRINT @date  
      SELECT @diffHours = Datediff(hh, @date, Getdate()) 

      --PRINT @diffHours  
      IF @diffHours > @hours 
        UPDATE tblcoopts 
        SET    intposofflineperiod = ( @diffHours + @hours + intposofflineperiod 
                                     ) 
      ELSE 
        UPDATE tblcoopts 
        SET    intposofflineperiod = ( @hours + intposofflineperiod ) 
  END
GO
/****** Object:  StoredProcedure [dbo].[FetchCustomerDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[FetchCustomerDetails]
    (
      @CustNameInDB VARCHAR(100) = NULL
    )
AS
    BEGIN
        SET NOCOUNT ON;
        SELECT  tblCustomers.decBalDue AS BalDue ,
                tblCustomers.decBalDueF AS BalDueF ,
                tblCustomers.strCurrency AS Currency ,
                tblCurrency.strCurrSymbol AS CurrencySymbol
        FROM    tblCustomers
                INNER JOIN tblCurrency ON tblCustomers.strCurrency = tblCurrency.strCurrency
        WHERE   tblCustomers.strCustName = @CustNameInDB;
    END
GO
/****** Object:  StoredProcedure [dbo].[FetchInvLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************* Start [FetchInvLocation] ***********************/
CREATE PROCEDURE [dbo].[FetchInvLocation]
(
	@PartNumber AS NVARCHAR(50),
	@InvLocation AS NVARCHAR(10)
)
AS
BEGIN
	SELECT ISNULL(CASE 
			WHEN INV.intType = 5
				THEN @InvLocation
			ELSE CASE 
					WHEN ISNULL((
								SELECT COUNT(strUserName)
								FROM tblUsers
								), 0) = 0
						THEN ISNULL((
									SELECT EXT.strLocName
									FROM tblInvExt EXT
									WHERE EXT.strPartNumber = INV.strPartNumber
										AND EXT.bitDefault = 1
									), '')
					ELSE CASE 
							WHEN ISNULL(IE.bitInactive, 0) = 1
								THEN ISNULL((
											SELECT EXT.strLocName
											FROM tblInvExt EXT
											WHERE EXT.strPartNumber = INV.strPartNumber
												AND EXT.bitDefault = 1
											), '')
							ELSE IE.strLocName
							END
					END
			END, '')
FROM tblInv INV
LEFT JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber
	AND IE.strLocName = @InvLocation
WHERE (
		INV.strPartNumber = @PartNumber
		OR INV.strBarCode = @PartNumber
		OR INV.strBarCode2 = @PartNumber
		)
	AND (INV.bitInactive = 0)
END
GO
/****** Object:  StoredProcedure [dbo].[FetchInvLocationSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[FetchInvLocationSales]
(
 @PartNumber NVARCHAR(100) = ''
,@InvLocation NVARCHAR(200)  = ''
,@IsSubmit Bit = 0
)
AS
BEGIN
If(@IsSubmit = 0)
begin
SELECT ISNULL(CASE 
			WHEN INV.intType = 5
				THEN @InvLocation
			ELSE CASE 
					WHEN ISNULL((
								SELECT COUNT(strUserName)
								FROM tblUsers (NOLOCK)
								), 0) = 0
						THEN ISNULL((
									SELECT EXT.strLocName
									FROM tblInvExt (NOLOCK) EXT
									WHERE EXT.strPartNumber = INV.strPartNumber
										AND EXT.bitDefault = 1
									), '')
					ELSE CASE 
						WHEN ISNULL(IE.bitInactive, 0) = 1
							THEN ISNULL((
									SELECT EXT.strLocName
									FROM tblInvExt (NOLOCK) EXT
									WHERE EXT.strPartNumber = INV.strPartNumber
										AND EXT.bitDefault = 1
									), '')
					ELSE IE.strLocName
					 END
					END
			END, '')
FROM tblInv INV (NOLOCK)
LEFT JOIN tblInvExt (NOLOCK) IE ON INV.strPartNumber = IE.strPartNumber
	AND IE.strLocName = @InvLocation
WHERE (
		INV.strPartNumber = @PartNumber
		OR INV.strBarCode = @PartNumber
		OR INV.strBarCode2 = @PartNumber
		)
	AND (INV.bitInactive = 0)
END
else
begin
SELECT ISNULL(CASE 
			WHEN INV.intType = 5
				THEN ISNULL((
							SELECT strLocName
							FROM tblInvLoc
							WHERE bitDefault = 1
							), '')
			ELSE CASE 
					WHEN ISNULL((
								SELECT COUNT(strUserName)
								FROM tblUsers(NOLOCK)
								), 0) = 0
						THEN ISNULL((
									SELECT EXT.strLocName
									FROM tblInvExt(NOLOCK) EXT
									WHERE EXT.strPartNumber = INV.strPartNumber
										AND EXT.bitDefault = 1
									), '')
					ELSE ISNULL((
								SELECT strLocName
								FROM tblInvLoc
								WHERE bitDefault = 1
								), '')
					END
			END, '')
FROM tblInv(NOLOCK) INV
WHERE (
		INV.strPartNumber = @PartNumber
		OR INV.strBarCode = @PartNumber
		OR INV.strBarCode2 = @PartNumber
		)
	AND (INV.bitInactive = 0)
	END
	END
GO

/****** Object:  StoredProcedure [dbo].[FetchInvoiceDocDTDataLineWise]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/**********End [GetOpenGRVCount]**********************/

/*********** Start [FetchInvoiceDocDTDataLineWise] ***********/

CREATE PROCEDURE [dbo].[FetchInvoiceDocDTDataLineWise] (
	@InvoiceId NVARCHAR(50)
	,@LineNo INT
	,@IsShipmentsFromSO BIT = 0
	)
AS
BEGIN
	IF (@IsShipmentsFromSO = 0)
	BEGIN
		SELECT strInvDocID AS InvDocID
			,intLineNo AS [LineNo]
			,strPartNumber AS PartNumber
			,strLocation AS [Location]
			,strPartDesc AS PartDesc
			,decQty AS Qty
			,strUnit AS Unit
			,intType AS [Type]
			,decPriceEaExc AS PriceEaExc
			,decLineTotExc AS LineTotExc
			,decLineTaxAmt AS LineTaxAmt
			,decPriceEaInc AS PriceEaInc
			,decLineTotInc AS LineTotInc
			,strTaxCode AS TaxCode
			,imgTaxObj AS TaxObj
			,strCurrency AS Currency
			,bitIsForeign AS IsForeign
			,decPriceEaExcF AS PriceEaExcF
			,decLineTotExcF AS LineTotExcF
			,decLineTaxAmtF AS LineTaxAmtF
			,decEaIncTaxF AS EaIncTaxF
			,decTotIncTaxF AS TotIncTaxF
			,strInvField1 AS InvField1
			,strInvField2 AS InvField2
			,strInvField3 AS InvField3
			,strInvField4 AS InvField4
			,strInvField5 AS InvField5
			,strInvField6 AS InvField6
			,strLineField1 AS LineField1
			,strLineField2 AS LineField2
			,strLineField3 AS LineField3
			,strLineField4 AS LineField4
			,strLineField5 AS LineField5
			,strLineField6 AS LineField6
			,strLineField7 AS LineField7
			,strLineField8 AS LineField8
			,strLineField9 AS LineField9
			,strLineField10 AS LineField10
			,strLineField11 AS LineField11
			,strLineField12 AS LineField12
			,decLineDiscPerc AS LineDiscPerc
			,decLineDiscAmt AS LineDiscAmt
			,decLineDiscAmtF AS LineDiscAmtF
			,bitDiscountTax AS DiscountTax
			,decStockQty AS StockQty
			,strStockUnit AS StockUnit
			,decStandardCost AS StandardCost
			,decLastPPUnit AS LastPPUnit
			,strSalesName AS SalesName
			,decCOGS AS COGS
			,decSOQty AS SOQty
			,decSOQtyRemain AS SOQtyRemain
			,strPartExtendedDesc AS PartExtendedDesc
			,decItemWeight AS ItemWeight
			,decVolumetricWeight AS VolumetricWeight
			,bitContainerItem AS ContainerItem
			,bitDelCost AS DelCost
			,intBillingMethod AS BillingMethod
			,uidTransactionFieldID AS TransactionFieldID
			,uidContainerItem AS ContainerItem
		FROM tblInvoiceDocDT
		WHERE strInvDocID = @InvoiceId
			AND intLineNo = @LineNo
	END
	ELSE
	BEGIN
		SELECT strOrdDocID AS InvDocID
			,intLineNo AS [LineNo]
			,strPartNumber AS PartNumber
			,strLocation AS [Location]
			,strPartDesc AS PartDesc
			,decQty AS Qty
			,strUnit AS Unit
			,intType AS [Type]
			,decPriceEaExc AS PriceEaExc
			,decLineTotExc AS LineTotExc
			,decLineTaxAmt AS LineTaxAmt
			,decPriceEaInc AS PriceEaInc
			,decLineTotInc AS LineTotInc
			,strTaxCode AS TaxCode
			,imgTaxObj AS TaxObj
			,strCurrency AS Currency
			,bitIsForeign AS IsForeign
			,decPriceEaExcF AS PriceEaExcF
			,decLineTotExcF AS LineTotExcF
			,decLineTaxAmtF AS LineTaxAmtF
			,decEaIncTaxF AS EaIncTaxF
			,decTotIncTaxF AS TotIncTaxF
			,strInvField1 AS InvField1
			,strInvField2 AS InvField2
			,strInvField3 AS InvField3
			,strInvField4 AS InvField4
			,strInvField5 AS InvField5
			,strInvField6 AS InvField6
			,strLineField1 AS LineField1
			,strLineField2 AS LineField2
			,strLineField3 AS LineField3
			,strLineField4 AS LineField4
			,strLineField5 AS LineField5
			,strLineField6 AS LineField6
			,strLineField7 AS LineField7
			,strLineField8 AS LineField8
			,strLineField9 AS LineField9
			,strLineField10 AS LineField10
			,strLineField11 AS LineField11
			,strLineField12 AS LineField12
			,decLineDiscPerc AS LineDiscPerc
			,decLineDiscAmt AS LineDiscAmt
			,decLineDiscAmtF AS LineDiscAmtF
			,bitDiscountTax AS DiscountTax
			,decStockQty AS StockQty
			,strStockUnit AS StockUnit
			--,decStandardCost AS StandardCost
			--,decLastPPUnit AS LastPPUnit
			,strSalesName AS SalesName
			--,decCOGS AS COGS
			--,decSOQty AS SOQty
			--,decSOQtyRemain AS SOQtyRemain
			,strPartExtendedDesc AS PartExtendedDesc
			,decItemWeight AS ItemWeight
			,decVolumetricWeight AS VolumetricWeight
			,bitContainerItem AS ContainerItem
			,bitDelCost AS DelCost
			,intBillingMethod AS BillingMethod
			,uidTransactionFieldID AS TransactionFieldID
			,uidContainerItem AS ContainerItem
		FROM tblOrderDocDT
		WHERE strOrdDocID = @InvoiceId
			AND intLineNo = @LineNo
	END
END
GO
/****** Object:  StoredProcedure [dbo].[FetchLocationChange]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-----------------------Start [FetchLocationChange]-----------------------
CREATE PROCEDURE [dbo].[FetchLocationChange]
(	
	@Part AS NVARCHAR(50),
	@BarCode AS NVARCHAR(300),
	@GPCalcInvLevel AS INT,
	@GPCalcLPP AS INT,
	@LocName AS NVARCHAR(50)
)
AS
BEGIN
	SELECT ISNULL(tblInv.decStandardCost, 0) AS StandardCost
	,CASE 
		WHEN tblInv.intType = 4
			THEN tblInv.decStandardCost
		ELSE CASE @GPCalcLPP
				WHEN 0
					THEN tblInv.decLastPPUnit
				WHEN 1
					THEN tblInv.decStandardCost
				WHEN 2
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt (NOLOCK) EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt (NOLOCK) EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = @LocName
															), 0)
													THEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt (NOLOCK) EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
												ELSE CASE 
														WHEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt (NOLOCK) EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0) = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt (NOLOCK) EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0)
														END
												END
										END
							WHEN 1
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
												ELSE CASE 
														WHEN CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
														END
												END
										END
							ELSE tblInv.decLastPPUnit
							END
				WHEN 3
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt (NOLOCK) EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0) = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt (NOLOCK) EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0)
										END
							WHEN 1
								THEN CASE 
										WHEN CASE tblInv.decSumOnHand
												WHEN 0
													THEN 0
												ELSE tblInv.decSumValue / tblInv.decSumOnHand
												END = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
										END
							ELSE tblInv.decLastPPUnit
							END
				ELSE tblInv.decLastPPUnit
				END
		END AS GPCalc
	,tblInv.bitAutoBuild AS AutoBuild
	,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT SUM(INV.decLastPPUnit)
					FROM tblInvBOM (NOLOCK) BOM
					INNER JOIN tblInv (NOLOCK) INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildLRC 
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT SUM(INV.decStandardCost)
					FROM tblInvBOM (NOLOCK) BOM
					INNER JOIN tblInv (NOLOCK) INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildSC
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE EXT.decOnHand
									WHEN 0
										THEN 0
									ELSE EXT.decValue / EXT.decOnHand
									END), 0)
					FROM tblInvBOM (NOLOCK) BOM
					INNER JOIN tblInv (NOLOCK) INV ON BOM.strPartItemNumber = INV.strPartNumber
					INNER JOIN tblInvExt (NOLOCK) EXT ON INV.strPartNumber = EXT.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
						AND EXT.strLocName = @LocName
					), 0)
		END AS AutoBuildMALocDef
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE EXT.decOnHand
									WHEN 0
										THEN 0
									ELSE EXT.decValue / EXT.decOnHand
									END), 0)
					FROM tblInvBOM (NOLOCK) BOM
					INNER JOIN tblInv (NOLOCK) INV ON BOM.strPartItemNumber = INV.strPartNumber
					INNER JOIN tblInvExt (NOLOCK) EXT ON INV.strPartNumber = EXT.strPartNumber
						AND BOM.strLocName = EXT.strLocName
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildMALocation
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE INV.decSumOnHand
									WHEN 0
										THEN 0
									ELSE INV.decSumValue / INV.decSumOnHand
									END), 0)
					FROM tblInvBOM (NOLOCK) BOM
					INNER JOIN tblInv (NOLOCK) INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildMAMain
FROM tblInv (NOLOCK)
WHERE (
		tblInv.strPartNumber = @Part
		OR tblInv.strBarCode = @BarCode
		OR tblInv.strBarCode2 = @BarCode
		)
	AND (tblInv.bitInactive = 0)
END
GO

/****** Object:  StoredProcedure [dbo].[FillCustomerData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[FillCustomerData] 
	@HPCheck as bit,
	@AsAt as datetime
AS
BEGIN
	SELECT MASTERTABLE.strCustName As Number
	,tblCustomers.strCustDesc AS CustName
	,CASE SUM(tblCustTransDT.decAmountF)
		WHEN 0
			THEN SUM(tblCustTransDT.decAmount)
		ELSE SUM(tblCustTransDT.decAmountF)
		END Amount
	,MAX(tblCustTransDT.dteIntDate) AS IntDate
FROM tblCustTrans AS MASTERTABLE
INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName
	AND tblCustomers.strTerm IN (
		SELECT strTerm
		FROM tblTerms
		WHERE bitIsHP = @HPCheck
		)
WHERE tblCustTransDT.bitReversed = 0
	AND CONVERT(date,tblCustTransDT.dteJournalDate) <= CONVERT(date,@AsAt)
GROUP BY MASTERTABLE.strCustName
	,tblCustomers.strCustDesc
ORDER BY MASTERTABLE.strCustName
END
GO
/****** Object:  StoredProcedure [dbo].[FindCustomerTradingTimes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/******************* End [GetCustomerValueBasedData] ********************/

/******************* Start  [FindCustomerTradingTimes]   ********************/

CREATE PROCEDURE [dbo].[FindCustomerTradingTimes]
	-- Add the parameters for the stored procedure here
	@CustName NVARCHAR(50)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	-- Insert statements for procedure here
	SELECT lngCustEnqId AS CustEnqId
		,strCustName AS CustName
		,strDay AS [Day]
		,dteFromTime AS FromTime
		,dteToTime AS ToTime
		,strEnqType AS EnqType
		,bitEnabled AS IsEnabled
	FROM tblCustomerTradingTimes
	WHERE strCustName = @CustName
END
GO
/****** Object:  StoredProcedure [dbo].[FormDocsSetAdd]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE  [dbo].[FormDocsSetAdd] 
(@IsGlobalDoc bit,
@MachineName nvarchar(100),
@Name nvarchar(50),
@Type int,
@Form nvarchar(500),
@Printer nvarchar(500),
@IsDocDefault bit
)
 As 
 BEGIN
 INSERT INTO tblFormsDocs (bitGlobal, strMachine, strName, intType, strForm, strPrinter, bitDocDefault) VALUES (@IsGlobalDoc, @MachineName, @Name, @Type, @Form, @Printer, @IsDocDefault)
 END 
GO
/****** Object:  StoredProcedure [dbo].[FormDocsSetDelete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE  [dbo].[FormDocsSetDelete] 
(@IsGlobalSet bit,
@IsDeleteDirtySet bit,
@MachineName nvarchar(100),
@IsLabelDocs bit = 0)
 As 
 BEGIN
 
 BEGIN TRAN

	BEGIN TRY
		If @IsDeleteDirtySet = 1	
		Begin
		If @IsLabelDocs = 1
		begin
		DELETE FROM tblLabelFormsDocs WHERE lngID IN (SELECT lngID FROM tblLabelFormsDocs WHERE bitGlobal = 0 AND strName NOT IN (SELECT strName FROM tblLabelFormsDocs WHERE bitGlobal = 1))
		end
		else
		begin
		DELETE FROM tblFormsDocs WHERE lngID IN (SELECT lngID FROM tblFormsDocs WHERE bitGlobal = 0 AND strName NOT IN (SELECT strName FROM tblFormsDocs WHERE bitGlobal = 1))
		end			
		END
		Else
		Begin	
			If @IsGlobalSet = 1
			Begin
				DELETE FROM tblFormsDocs WHERE bitGlobal = @IsGlobalSet
			End
			Else				
			Begin
				DELETE FROM tblFormsDocs WHERE bitGlobal = @IsGlobalSet and strMachine = @MachineName
			End

			If @IsLabelDocs = 1
		begin
		if(@IsGlobalSet = 1)
		begin
		DELETE FROM tblLabelFormsDocs WHERE bitGlobal = @IsGlobalSet
		end
		else
		begin
		DELETE FROM tblLabelFormsDocs WHERE bitGlobal = @IsGlobalSet AND strMachine = @MachineName
		end
		end
		END
		COMMIT TRAN
	END TRY

	BEGIN CATCH
		ROLLBACK TRAN
		THROW
	END CATCH
 END
GO
/****** Object:  StoredProcedure [dbo].[FormSetsDeletetAllLocalSet]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE  [dbo].[FormSetsDeletetAllLocalSet] 
 As 
 BEGIN 
 BEGIN TRAN
	BEGIN TRY
		 DELETE FROM tblForms WHERE bitGlobal = 0
		 DELETE FROM tblFormsP
		 DELETE FROM tblFormsDocs WHERE bitGlobal = 0
		 COMMIT TRAN
	END TRY
	BEGIN CATCH
		ROLLBACK TRAN
		THROW
	END CATCH
 END
 
GO
/****** Object:  StoredProcedure [dbo].[FormSetsDeletetAllSet]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------------------------
Create PROCEDURE  [dbo].[FormSetsDeletetAllSet] 
As 
BEGIN
 BEGIN TRAN
	BEGIN TRY
		 DELETE FROM tblForms
		 DELETE FROM tblFormsP
		 DELETE FROM tblFormsDocs

		 UPDATE tblCustomers SET strINVFormDocName = NULL, strORDFormDocName = NULL WHERE ISNULL(strINVFormDocName,'') <> '' OR ISNULL(strORDFormDocName,'') <> ''

		 COMMIT TRAN

	END TRY
	BEGIN CATCH
		ROLLBACK TRAN
		THROW
	END CATCH
 END
GO
/****** Object:  StoredProcedure [dbo].[FormSetsDeletetCurrentLocalSet]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE  [dbo].[FormSetsDeletetCurrentLocalSet] 
(@MachineName NVARCHAR(100))
 As 
 BEGIN 
 BEGIN TRAN
	BEGIN TRY
		 DELETE FROM tblForms WHERE bitGlobal = 0 AND strMachine = @MachineName
		 DELETE FROM tblFormsP WHERE strMachine = @MachineName
		 DELETE FROM tblFormsDocs WHERE bitGlobal = 0 AND strMachine = @MachineName
		 COMMIT TRAN
	END TRY
	BEGIN CATCH
		ROLLBACK TRAN
		THROW
	END CATCH
 END
 
GO
/****** Object:  StoredProcedure [dbo].[FormSetsUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[FormSetsUpdate]
(
@IsGlobalSet bit,
@MachineName NVARCHAR(100),
@PO NVARCHAR(500),
@PI NVARCHAR(500),
@Qu  NVARCHAR(500),
@SO NVARCHAR(500),
@IN NVARCHAR(500),
@DN NVARCHAR(500),
@ST NVARCHAR(500),
@RC NVARCHAR(500),
@RM NVARCHAR(500),
@RMsgSI NVARCHAR(2000),
@PMsgPI NVARCHAR(2000),
@Copy NVARCHAR(500),
@Dup NVARCHAR(500),
@Carbon NVARCHAR(500),
@Other NVARCHAR(500),
@POS NVARCHAR(500),
@RQ NVARCHAR(500),
@STBBF NVARCHAR(500),
@Qs NVARCHAR(500),
@STSLS  NVARCHAR(500),
@GR NVARCHAR(500),
@LBL NVARCHAR(500),
@TK NVARCHAR(500),
@SP NVARCHAR(500),
@SH NVARCHAR(500),
@MS NVARCHAR(500),
@SHLBL NVARCHAR(500),
@MSLBL NVARCHAR(500),
@ColFrm1 NVARCHAR(500),
@ColFrm2 NVARCHAR(500),
@ColFrm3 NVARCHAR(500),
@Qs2 NVARCHAR(500),
@Qs3 NVARCHAR(500),
@Qs4 NVARCHAR(500),
@Qs5 NVARCHAR(500),
@CR NVARCHAR(500),
@InvPL NVARCHAR(500),
@RMApproved NVARCHAR(500),
@RMsgSO NVARCHAR(2000),
@RMsgSQ NVARCHAR(2000),
@RMsgFQ NVARCHAR(2000),
@RMsgCN NVARCHAR(2000),
@RMsgCR NVARCHAR(2000),
@RMsgRC NVARCHAR(2000),
@RMsgCL NVARCHAR(2000),
@RMsgPL NVARCHAR(2000),
@RMsgST NVARCHAR(2000),
@PMsgPO NVARCHAR(2000),
@PMsgPQ NVARCHAR(2000),
@PMsgDN NVARCHAR(2000),
@PMsgPY NVARCHAR(2000),
@PMsgPYA NVARCHAR(2000),
@WHMsgGRV NVARCHAR(2000),
@WHMsgSP NVARCHAR(2000),
@WHMsgPS NVARCHAR(2000),
@WHMsgMF NVARCHAR(2000),
@WHMsgBL NVARCHAR(2000),
@IsShowTotalsOnDocTK bit,
@IsShowTotalsOnDocSP bit,
@RFQ  NVARCHAR(500),
@InvADJ NVARCHAR(500),
@InvTRF NVARCHAR(500),
@Voucher NVARCHAR(500),
@DA NVARCHAR(500),
@RMsgDA NVARCHAR(2000),
@RecMsgOverdueInvoices NVARCHAR(2000),
@ManJob NVARCHAR(500),
@ManWIP NVARCHAR(500),
@InvWO NVARCHAR(500),
@InvIntReq NVARCHAR(500),
@InvIssReq NVARCHAR(500),
@HP NVARCHAR(500),
@OSOS  NVARCHAR(500),
@RecMsgOSOS NVARCHAR(2000),
@HPCS NVARCHAR(500),
@PrinterPO NVARCHAR(500),
@PrinterPI NVARCHAR(500),
@PrinterQu NVARCHAR(500),
@PrinterSO NVARCHAR(500),
@PrinterIN NVARCHAR(500),
@PrinterDN NVARCHAR(500),
@PrinterST NVARCHAR(500),
@PrinterRC NVARCHAR(500),
@PrinterRM NVARCHAR(500),
@PrinterCopy NVARCHAR(500),
@PrinterDup NVARCHAR(500),
@PrinterCarbon NVARCHAR(500),
@PrinterOther NVARCHAR(500),
@PrinterPOS NVARCHAR(500),
@PrinterRQ NVARCHAR(500),
@PrinterSTBBF NVARCHAR(500),
@PrinterQs NVARCHAR(500),
@PrinterSTSLS NVARCHAR(500),
@PrinterGR NVARCHAR(500),
@PrinterLBL NVARCHAR(500),
@PrinterTK NVARCHAR(500),
@PrinterSP NVARCHAR(500),
@PrinterSH NVARCHAR(500),
@PrinterMS NVARCHAR(500),
@PrinterSHLBL NVARCHAR(500),
@PrinterMSLBL NVARCHAR(500),
@PrinterColFrm1 NVARCHAR(500),
@PrinterColFrm2 NVARCHAR(500),
@PrinterColFrm3 NVARCHAR(500),
@PrinterQs2 NVARCHAR(500),
@PrinterQs3 NVARCHAR(500),
@PrinterQs4 NVARCHAR(500),
@PrinterQs5 NVARCHAR(500),
@PrinterCR NVARCHAR(500),
@PrinterInvPL NVARCHAR(500),
@PrinterRMApproved NVARCHAR(500),
@PrinterRFQ NVARCHAR(500),
@PrinterInvADJ NVARCHAR(500),
@PrinterInvTRF NVARCHAR(500),
@PrinterVoucher NVARCHAR(500),
@PrinterDA NVARCHAR(500),
@PrinterManJob NVARCHAR(500),
@PrinterManWIP NVARCHAR(500),
@PrinterInvWO NVARCHAR(500),
@PrinterInvIntReq NVARCHAR(500),
@PrinterInvIssReq NVARCHAR(500),
@PrinterHP NVARCHAR(500),
@PrinterSTORD NVARCHAR(500),
@PrinterHPCS NVARCHAR(500),

@WSIJB NVARCHAR(500),
@WSPJB NVARCHAR(500),
@WSQU NVARCHAR(500),
@WSWIP NVARCHAR(500),
@WSSI NVARCHAR(500),
@PrinterWSIJB NVARCHAR(500),
@PrinterWSPJB NVARCHAR(500),
@PrinterWSQU NVARCHAR(500),
@PrinterWSWIP NVARCHAR(500),
@PrinterWSSI NVARCHAR(500),
@POSSO NVARCHAR(500),
@POSSQ NVARCHAR(500),
@POSLB NVARCHAR(500),

@PrinterPOSSO NVARCHAR(500),
@PrinterPOSSQ NVARCHAR(500),
@PrinterPOSLB NVARCHAR(500),

@InvBTO NVARCHAR(500),
@InvBT NVARCHAR(500),
@InvBRC NVARCHAR(500),
@PrinterInvBTO NVARCHAR(500),
@PrinterInvBT NVARCHAR(500),
@PrinterInvBRC NVARCHAR(500),
@POSVP NVARCHAR(500),
@PrinterPOSVP  NVARCHAR(500),
@POSRC NVARCHAR(500),
@PrinterPOSRC  NVARCHAR(500),
@POSDE NVARCHAR(500),
@PrinterPOSDE  NVARCHAR(500),
@POSCD NVARCHAR(500),
@PrinterPOSCD  NVARCHAR(500),
@POSMR NVARCHAR(500),
@PrinterPOSMR  NVARCHAR(500),
@POSRCCopy NVARCHAR(500),
@PrinterPOSRCCopy  NVARCHAR(500)
)
AS
BEGIN
BEGIN Tran
BEGIN TRY	
	IF (@IsGlobalSet = 1)
		BEGIN
			DELETE FROM tblForms WHERE bitGlobal = 1

			INSERT INTO tblForms
			(
				 strPO
				,strPI
				,strQu
				,strSO
				,strIN
				,strDN
				,strST
				,strRC
				,strRM
				,strRecMsgSI
				,strPayMsgPI
				,strCopy
				,strDup
				,strCarbon
				,strOther
				,strPOS
				,strRQ
				,bitGlobal
				,strMachine
				,strSTBBF
				,strQs
				,strSTSLS
				,strGR
				,strLBL
				,strTK
				,strSP
				,strSH
				,strMS
				,strSHLBL
				,strMSLBL
				,strColFrm1
				,strColFrm2
				,strColFrm3
				,strQs2
				,strQs3
				,strQs4
				,strQs5
				,strCR
				,strInvPL
				,strRMApproved
				,strRecMsgSO
				,strRecMsgSQ
				,strRecMsgFQ
				,strRecMsgCN
				,strRecMsgCR
				,strRecMsgRC
				,strRecMsgCL
				,strRecMsgPL
				,strRecMsgST
				,strPayMsgPO
				,strPayMsgPQ
				,strPayMsgDN
				,strPayMsgPY
				,strPayMsgPYA
				,strWHMsgGRV
				,strWHMsgSP
				,strWHMsgPS
				,strWHMsgMF
				,strWHMsgBL
				,bitShowTotalsOnDocTK
				,bitShowTotalsOnDocSP
				,strRFQ
				,strInvADJ
				,strInvTRF
				,strVoucher
				,strDA
				,strRecMsgDA
				,strRecMsgOverDueInvoices
				,strManJob
				,strManWIP
				,strInvWO
				,strInvIntReq
				,strInvIssReq
				,strHP
				,strOSOS
				,strRecMsgOSOS
				,strHPCS
				,strWSIJB
				,strWSPJB
				,strWSQU
				,strWSWIP
				,strWSSI
				,strPOSSO
				,strPOSSQ
				,strPOSLB				
				,strInvBTO
				,strInvBT
				,strInvBTR
				,strPOSVP
				,strPOSRC
				,strPOSDE
			    ,strPOSCD
				,strPOSMR
				,strPOSRCCopy
			)
			VALUES
		    (
				@PO
				,@PI
				,@Qu
				,@SO
				,@IN
				,@DN
				,@ST
				,@RC
				,@RM
				,@RMsgSI
				,@PMsgPI
				,@Copy
				,@Dup
				,@Carbon
				,@Other
				,@POS
				,@RQ
				,1
				,NULL
				,@STBBF
				,@Qs
				,@STSLS
				,@GR
				,@LBL
				,@TK
				,@SP
				,@SH
				,@MS
				,@SHLBL
				,@MSLBL
				,@ColFrm1
				,@ColFrm2
				,@ColFrm3
				,@Qs2
				,@Qs3
				,@Qs4
				,@Qs5
				,@CR
				,@InvPL
				,@RMApproved
				,@RMsgSO
				,@RMsgSQ
				,@RMsgFQ
				,@RMsgCN
				,@RMsgCR
				,@RMsgRC
				,@RMsgCL
				,@RMsgPL
				,@RMsgST
				,@PMsgPO
				,@PMsgPQ
				,@PMsgDN
				,@PMsgPY
				,@PMsgPYA
				,@WHMsgGRV
				,@WHMsgSP
				,@WHMsgPS
				,@WHMsgMF
				,@WHMsgBL
				,@IsShowTotalsOnDocTK
				,@IsShowTotalsOnDocSP
				,@RFQ
				,@InvADJ
				,@InvTRF
				,@Voucher
				,@DA
				,@RMsgDA
				,@RecMsgOverdueInvoices
				,@ManJob
				,@ManWIP
				,@InvWO
				,@InvIntReq
				,@InvIssReq
				,@HP
				,@OSOS
				,@RecMsgOSOS
				,@HPCS
				,@WSIJB
				,@WSPJB
				,@WSQU 
				,@WSWIP
				,@WSSI 
				,@POSSO
				,@POSSQ
				,@POSLB
				,@InvBTO
				,@InvBT
				,@InvBRC
				,@POSVP
				,@POSRC
				,@POSDE
				,@POSCD
				,@POSMR
				,@POSRCCopy
				)
		END
		ELSE
		BEGIN
			DELETE FROM tblForms WHERE bitGlobal = 0 AND strMachine = @MachineName

			INSERT INTO tblForms
			(
				 strPO
				,strPI
				,strQu
				,strSO
				,strIN
				,strDN
				,strST
				,strRC
				,strRM
				,strRecMsgSI
				,strPayMsgPI
				,strCopy
				,strDup
				,strCarbon
				,strOther
				,strPOS
				,strRQ
				,bitGlobal
				,strMachine
				,strSTBBF
				,strQs
				,strSTSLS
				,strGR
				,strLBL
				,strTK
				,strSP
				,strSH
				,strMS
				,strSHLBL
				,strMSLBL
				,strColFrm1
				,strColFrm2
				,strColFrm3
				,strQs2
				,strQs3
				,strQs4
				,strQs5
				,strCR
				,strInvPL
				,strRMApproved
				,strRecMsgSO
				,strRecMsgSQ
				,strRecMsgFQ
				,strRecMsgCN
				,strRecMsgCR
				,strRecMsgRC
				,strRecMsgCL
				,strRecMsgPL
				,strRecMsgST
				,strPayMsgPO
				,strPayMsgPQ
				,strPayMsgDN
				,strPayMsgPY
				,strPayMsgPYA
				,strWHMsgGRV
				,strWHMsgSP
				,strWHMsgPS
				,strWHMsgMF
				,strWHMsgBL
				,bitShowTotalsOnDocTK
				,bitShowTotalsOnDocSP
				,strRFQ
				,strInvADJ
				,strInvTRF
				,strVoucher
				,strDA
				,strRecMsgDA
				,strRecMsgOverDueInvoices
				,strManJob
				,strManWIP
				,strInvWO
				,strInvIntReq
				,strInvIssReq
				,strHP
				,strOSOS
				,strRecMsgOSOS
				,strHPCS
				,strWSIJB
				,strWSPJB
				,strWSQU
				,strWSWIP
				,strWSSI
				,strPOSSO
				,strPOSSQ
				,strPOSLB				
				,strInvBTO
				,strInvBT
				,strInvBTR
				,strPOSVP
				,strPOSRC
				,strPOSDE
				,strPOSCD
				,strPOSMR
				,strPOSRCCopy
			)
			VALUES 
			(
				 @PO
				,@PI
				,@Qu
				,@SO
				,@IN
				,@DN
				,@ST
				,@RC
				,@RM
				,@RMsgSI
				,@PMsgPI
				,@Copy
				,@Dup
				,@Carbon
				,@Other
				,@POS
				,@RQ
				,0
				,@MachineName
				,@STBBF
				,@Qs
				,@STSLS
				,@GR
				,@LBL
				,@TK
				,@SP
				,@SH
				,@MS
				,@SHLBL
				,@MSLBL
				,@ColFrm1
				,@ColFrm2
				,@ColFrm3
				,@Qs2
				,@Qs3
				,@Qs4
				,@Qs5
				,@CR
				,@InvPL
				,@RMApproved
				,@RMsgSO
				,@RMsgSQ
				,@RMsgFQ
				,@RMsgCN
				,@RMsgCR
				,@RMsgRC
				,@RMsgCL
				,@RMsgPL
				,@RMsgST
				,@PMsgPO
				,@PMsgPQ
				,@PMsgDN
				,@PMsgPY
				,@PMsgPYA
				,@WHMsgGRV
				,@WHMsgSP
				,@WHMsgPS
				,@WHMsgMF
				,@WHMsgBL
				,@IsShowTotalsOnDocTK
				,@IsShowTotalsOnDocSP
				,@RFQ
				,@InvADJ
				,@InvTRF
				,@Voucher
				,@DA
				,@RMsgDA
				,@RecMsgOverdueInvoices
				,@ManJob
				,@ManWIP
				,@InvWO
				,@InvIntReq
				,@InvIssReq
				,@HP
				,@OSOS
				,@RecMsgOSOS
				,@HPCS
				,@WSIJB
				,@WSPJB
				,@WSQU 
				,@WSWIP
				,@WSSI
				,@POSSO
				,@POSSQ
				,@POSLB 
				,@InvBTO
				,@InvBT
				,@InvBRC
				,@POSVP
				,@POSRC
				,@POSDE
				,@POSCD
				,@POSMR
				,@POSRCCopy
			)

			DELETE FROM tblFormsP WHERE strMachine = @MachineName

			INSERT INTO tblFormsP
			(
				 strPO
				,strPI
				,strQu
				,strSO
				,strIN
				,strDN
				,strST
				,strRC
				,strRM
				,strCopy
				,strDup
				,strCarbon
				,strOther
				,strPOS
				,strRQ
				,strMachine
				,strSTBBF
				,strQs
				,strSTSLS
				,strGR
				,strLBL
				,strTK
				,strSP
				,strSH
				,strMS
				,strSHLBL
				,strMSLBL
				,strColFrm1
				,strColFrm2
				,strColFrm3
				,strQs2
				,strQs3
				,strQs4
				,strQs5
				,strCR
				,strInvPL
				,strRMApproved
				,strRFQ
				,strInvADJ
				,strInvTRF
				,strVoucher
				,strDA
				,strManJob
				,strManWIP
				,strInvWO
				,strInvIntReq
				,strInvIssReq
				,strHP
				,strOSOS
				,strHPCS
				,strWSIJB
				,strWSPJB
				,strWSQU
				,strWSWIP
				,strWSSI
				,strPOSSO
				,strPOSSQ
				,strPOSLB				
				,strInvBTO
				,strInvBT
				,strInvBTR
				,strPOSVP
				,strPOSRC
				,strPOSDE
				,strPOSCD
				,strPOSMR
				,strPOSRCCopy

			)
			VALUES 
			(
				 @PrinterPO
				,@PrinterPI
				,@PrinterQu
				,@PrinterSO
				,@PrinterIN
				,@PrinterDN
				,@PrinterST
				,@PrinterRC
				,@PrinterRM
				,@PrinterCopy
				,@PrinterDup
				,@PrinterCarbon
				,@PrinterOther
				,@PrinterPOS
				,@PrinterRQ
				,@MachineName
				,@PrinterSTBBF
				,@PrinterQs
				,@PrinterSTSLS
				,@PrinterGR
				,@PrinterLBL
				,@PrinterTK
				,@PrinterSP
				,@PrinterSH
				,@PrinterMS
				,@PrinterSHLBL
				,@PrinterMSLBL
				,@PrinterColFrm1
				,@PrinterColFrm2
				,@PrinterColFrm3
				,@PrinterQs2
				,@PrinterQs3
				,@PrinterQs4
				,@PrinterQs5
				,@PrinterCR
				,@PrinterInvPL
				,@PrinterRMApproved
				,@PrinterRFQ
				,@PrinterInvADJ
				,@PrinterInvTRF
				,@PrinterVoucher
				,@PrinterDA
				,@PrinterManJob
				,@PrinterManWIP
				,@PrinterInvWO
				,@PrinterInvIntReq
				,@PrinterInvIssReq
				,@PrinterHP
				,@PrinterSTORD
				,@PrinterHPCS
				,@PrinterWSIJB
				,@PrinterWSPJB
				,@PrinterWSQU 
				,@PrinterWSWIP
				,@PrinterWSSI 
				,@PrinterPOSSO
				,@PrinterPOSSQ
				,@PrinterPOSLB
				,@PrinterInvBTO
				,@PrinterInvBT
				,@PrinterInvBRC
				,@PrinterPOSVP
				,@PrinterPOSRC
				,@PrinterPOSDE
				,@PrinterPOSCD
				,@PrinterPOSMR
				,@PrinterPOSRCCopy
			)
		END
	COMMIT TRAN
END TRY

BEGIN CATCH
	ROLLBACK TRAN
	THROW
END CATCH
END
GO
/****** Object:  StoredProcedure [dbo].[FormsPTBLGet]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE  [dbo].[FormsPTBLGet] 

(

@CurrentUser nvarchar(255)

)

 As 

 BEGIN 

	Select DISTINCT t1.[Location],t1.[Description],ISNULL(t2.bitUseDefault, 1) as UseDefault, 

    ISNULL(t2.strMachine, '') as PrinterName From 

	(SELECT tblInvLoc.strLocName As [Location], tblInvLoc.strDesc As [Description], ISNULL((SELECT COUNT(tblInvLocSec.strLocName) 

	FROM tblInvLocSec WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName),0) As [Secured], ISNULL(tblInvLocSec.strUserName,'') As [User] 

	FROM tblInvLoc LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName AND tblInvLocSec.strUserName = NULL 

	WHERE tblInvLoc.intType = 0) As t1 

	left join (select * from tblFormsPTBL WHERE strUser = @CurrentUser) As t2 On t1.[Location] = t2.strLocation ORDER BY t1.[Location]



 END

GO
/****** Object:  StoredProcedure [dbo].[GenerateInventoryXML]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GenerateInventoryXML]    Script Date: 03/29/2018 7:31:45 PM ******/
CREATE PROCEDURE [dbo].[GenerateInventoryXML]
(
 @PartNumber nvarchar(max) 
,@TransType	nvarchar(100) 
)
AS
BEGIN
select 
 'NEZA001PL01T'  as [Site]
,@TransType as TransactionType
,ISNULL(tblInv.strDesc,'') as ItemDescription
,ISNULL(strPartNumber,'')  as ItemCode
,''  as ItemGroup
,'' as ConditioningType
,'' as Species
,'' as SubSpecies
,ISNULL(tblInv.strField1,'') as ItemType
,'' as ItemGenCode
,'' as Presentation
,CASE When tblInv.strField1 like 'FP' Then ISNULL(tblInv.strField3,'') ELSE '' END as BBD
,CASE WHEN UPPER(LTRIM(RTRIM(ISNULL(tblInv.strField2,'')))) = 'NO' OR UPPER(LTRIM(RTRIM(ISNULL(tblInv.strField2,'')))) = '0' THEN '0' ELSE CASE WHEN UPPER(LTRIM(RTRIM(ISNULL(tblInv.strField2,'')))) = 'YES' OR UPPER(LTRIM(RTRIM(ISNULL(tblInv.strField2,'')))) = '1' THEN '1' ELSE '0' END END as Medicine
,CONVERT(DECIMAL(20, 4), isnull(decVolumetricWeight, 0))  as SpecificWeight
,'' as PaletteWeight
,'' as PaletteWeightUOM
,'' as ConditioningWeight
,'' as ConditioningWeightUOM
,'' as SpeciesDescription
,'' as SubspeciesDescription
,'' as MaskCode
,'' as LabelMask
,'' as StockMasterErpMes
FROM  tblInv 
INNER JOIN tblInvCat on tblInv.strCategory = tblInvCat.strCategory 
WHERE strPartNumber = (case when @PartNumber = 'ALL' THEN strPartNumber ELSE @PartNumber END)
FOR XML PATH ('Item'), Root('Items'), ELEMENTS
END
GO
/****** Object:  StoredProcedure [dbo].[GenerateXml_OX]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GenerateXml_OX]
(
 @WONumber nvarchar(max) 
,@TransType	nvarchar(100) 
)
AS
BEGIN
select 
  'NEZA001PL01T'  as [Site]
,@TransType as TransactionType
,isnull(tblManJob.strJBDocID, '') as WONumber
,'' as DocEntryNumber
,ISNULL(tblManJobByProd.strPartNumber, '') as FormulaCode
,ISNULL(convert(varchar(10), tblManJobByProd.dteRevDate, 112), '') as FormulaVersionNumber
,ISNULL(tblManJobByProd.strPartNumber, '') as ItemCode
,ISNULL(tblInv.strDesc, '') as ItemDescription
,ISNULL(tblManJobByProd.[decManQty], '') as OrderedQuantity
,ISNULL(tblInv.strStockUnit, '')  as OrderedQuantityUOM
,ISNULL(convert(varchar(10), tblManJob.dteRequired, 112), '') as WorkOrderDate
,'' as Destination
,'' as WorkOrderLink
,'' as BatchNumber
,tblManJob.strCustName AS Customer
,tblManJob.strReference AS Reference
,(select 
		 ISNULL(tblManJobCompInv.intLineNo, '') as ComponentLineNumber
		,ISNULL(tblManJobCompInv.strpartnumber, '') as ComponentItemCode
		,ISNULL(tblManJobCompInv.decManQty, 0) as ComponentQuantity
		,ISNULL(INV.strStockUnit , '')as ComponentQuantityUOM 
		,ISNULL(tblManJobCompInv.strWCCode, '') as ComponentWorkCenterCode 
from tblManJobCompInv 
	inner join tblInv INV on tblManJobCompInv.strPartNumber = INV.strPartNumber
	where tblManJobCompInv.strJBDocID = tblManJob.strJBDocID FOR XML PATH('Component'), TYPE) 
,(SELECT
	 row_number() over(order by lngid) as   OperationNumber
	,ISNULL(tblManJobOp.strWCCode, '') as OperationWorkCenterCode
	,ISNULL((select sum(decManVariableHours) * 3600 from tblManJobCompLab where tblManJobCompLab.strJBDocID = tblManJob.strJBDocID and tblManJobOp.strWCCode = tblManJobCompLab.strWCCode),'') as RealizationTime
	,''	as PreparationTime
	,''	as RealisationPersonNumber
	,''	as PreparationPersonNumber
FROM tblManJobOp
	INNER JOIN tblManWorkCentre ON tblManJobOp.strWCCode = tblManWorkCentre.strWCCode
WHERE tblManJobOp.strJBDocID = tblManJob.strJBDocID FOR XML PATH('Operation'), TYPE) 
,'' as "Label/MaskCode"
,'' as "Label/MaskLabel"
,'' as "Label/BrandCode"
,'' as "Label/EAN13ProductCode"
,'' as "Label/ShortProductDescription"
,'' as "Label/LongProductDescription"
,'' as "Label/LabelItemCode"
,'' as "Label/Picto1"
,'' as "Label/Picto2"
,'' as "Label/LanguageCode"
,'' as "Label/LabelSections/LabelSectionType"
,'' as "Label/LabelSections/Label"
,'' as "Label/LabelSections/Order"
,'' as "Label/LabelSections/LabelSectionLines/LabelLineNumber"
,'' as "Label/LabelSections/LabelSectionLines/LabelLineDescription"
,'' as "Label/LabelSections/LabelSectionLines/LabelLineValue"
,'' as "Label/LabelSections/LabelSectionLines/LabelLineUnit"

FROM  tblManJob  
INNER JOIN [dbo].[tblManJobByProd] on [dbo].[tblManJobByProd].strJBDocID = tblManJob.strJBDocID AND  [dbo].[tblManJobByProd].strPartNumber  = (SELECT TOP 1 strPartNumber from [dbo].[tblManJobByProd] A WHERE A.strJBDocID = tblManJob.strJBDocID)    
INNER JOIN tblInv on [dbo].[tblManJobByProd].strPartNumber =  tblInv.strPartNumber
WHERE tblManJob.strJBDocID = (case when @WONumber = 'ALL' THEN tblManJob.strJBDocID ELSE @WONumber END) 
FOR XML PATH ('ProductionOrder'), Root('ProductionOrders'), ELEMENTS
END
GO
/****** Object:  StoredProcedure [dbo].[GenerateXml_RX]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GenerateXml_RX]    Script Date: 03/29/2018 7:31:45 PM ******/
CREATE PROCEDURE [dbo].[GenerateXml_RX]
(
 @TrfDocID nvarchar(max) 
,@TransType	nvarchar(100)
,@IsFromLocation bit 
)
AS
BEGIN

select 
 'NEZA001PL01T' as [Site]
,@TransType as TransactionType
,'Transfer' as OrderCategory
,isnull(tblInvTrfDoc.strTrfDocID, '') as OrderNumber
,ISNULL(convert(varchar(10), dteJournalDate, 112), '') as MovementDate
,replace(ISNULL(convert(varchar(10), dteJournalDate, 108), ''),':', '') as MovementHour
,(select 
		 tblInvTrfDocDT.strPartNumber  as ItemCode
		,(select ISNULL(tblInv.strField1,'') from tblInv where strPartNumber = tblInvTrfDocDT.strPartNumber) as ItemType
		,(select 
			 case when isnull(strSerialNumber, '') = '' then '' else isnull(strSerialNumber, '') end as LotNumber 
			,'0' as LotStatus
			,case when isnull(strSerialNumber, '') = '' then isnull(DT.decQty, 0) else isnull(tblInvTrfDocDTSerial.decQty, 0) end as DeliveredQuantity
			,ISNULL(DT.strStockUnit,'') AS DeliveredQuantityUOM
			,case when isnull(strSerialNumber, '') = '' then '' else ( case when isnull(dteExpiryDate, '') = '' then isnull(convert(varchar(10), getdate() +365 , 112), '') else isnull(convert(varchar(10), dteExpiryDate, 112), '') end) end as ExpiryDate
			,ISNULL(dbo.fnEmbeddedBarcode(ISNULL(DT.strPartNumber,''), ISNULL(tblInvTrfDocDTSerial.strSerialNumber,''), ISNULL(tblInvTrfDocDTSerial.decQty,0), ISNULL(tblInvTrfDocDTSerial.strUnit,''), ISNULL(tblInvTrfDocDTSerial.dteExpiryDate,GETDATE())),'') as LabelGencod
			from tblInvTrfDocDT DT LEFT JOIN tblInvTrfDocDTSerial ON DT.intLineNo = tblInvTrfDocDTSerial.intLineNo  AND DT.strTrfDocID = tblInvTrfDocDTSerial.strTrfDocID  
			WHERE DT.strTrfDocID = tblInvTrfDocDT.strTrfDocID and tblInvTrfDocDT.intLineNo = DT.intLineNo
			 FOR XML PATH('Lot'), TYPE)
from tblInvTrfDocDT 	
	where tblInvTrfDoc.strTrfDocID = tblInvTrfDocDT.strTrfDocID
	AND tblInvTrfDocDT.lngToBinID IN (SELECT BIN.lngID FROM tblInvLocBin BIN CROSS JOIN tblCoOpts CO WHERE BIN.strLocName = CO.strManPromtekLoc AND BIN.strBinCode = CO.strManPromtekBinLoc) FOR XML PATH('Line'), TYPE) 
FROM  tblInvTrfDoc
WHERE tblInvTrfDoc.strTrfDocID = (case when @TrfDocID = 'ALL' THEN tblInvTrfDoc.strTrfDocID ELSE @TrfDocID END) 
FOR XML PATH ('Receipt'), Root('Receipts'), ELEMENTS
END
GO
/****** Object:  StoredProcedure [dbo].[GenerateXML_ST]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GenerateXML_ST]    Script Date: 03/29/2018 7:31:45 PM ******/
CREATE PROCEDURE [dbo].[GenerateXML_ST]
(
 @AdjDocId nvarchar(max) 
,@TransType	nvarchar(100) = 'C'
)
AS
BEGIN
select 
 'NEZA001PL01T' as [Site]
,isnull(CONVERT(VARCHAR(10), tblInvAdjDoc.dtesystemdate, 112), '') as ImageDate
,replace(ISNULL(convert(varchar(10), dtesystemdate, 108), ''),':', '') AS ImageHour
,(select 
		 isnull(tblInvAdjDocDT.strPartNumber, '')  as ItemCode
		,isnull(tblInvAdjDocDTSerial.strSerialNumber, '') as LotNumber
		,0 as LotStatus
		,(SELECT TOP 1 strManPromtekLoc from tblCoopts) as Location 
		,isnull(tblInvAdjDocDTSerial.decQty, 0)	as Quantity
		,isnull(tblInvAdjDocDTSerial.strUnit, '')	as QuantityUOM
		,''	as UnitWeight
		,''	as UnitWeightUOM
		,isnull(convert(varchar(10), tblInvAdjDocDTSerial.dteExpiryDate, 112), '') 	as ExpiryDate
		,'' as  LabelGencod
from tblInvAdjDocDTSerial 
	inner join	tblInvAdjDocDT  on tblInvAdjDocDTSerial.intLineNo = tblInvAdjDocDT.intLineNo
				and tblInvAdjDocDTSerial.strAdjDocID =  tblInvAdjDocDT.strAdjDocID	 
	where tblInvAdjDocDT.strAdjDocID =  tblInvAdjDoc.strAdjDocID FOR XML PATH('Lot'), TYPE) 
FROM  tblInvAdjDoc 
WHERE strAdjDocID = (case when @AdjDocId = 'ALL' THEN strAdjDocID ELSE @AdjDocId END)
FOR XML PATH ('Inventorie'), Root('Inventories'), ELEMENTS
END
GO
/****** Object:  StoredProcedure [dbo].[GetAccountDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAccountDetails]
AS
BEGIN
	SELECT strName as Name
		  --,bitAccount as IsAccount
	FROM tblTenderTypes
	WHERE bitInActive = 0
		AND bitAccount = 0
		AND strName <> 'Split Payment'
		AND Isnull(bitCashGuardIntegration, 0) = 0
	ORDER BY intDisplayOrder
		,strName
END

GO
/****** Object:  StoredProcedure [dbo].[GetAccountNamingConvensionData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [DocumentSearchAndDelete] ***********/

/*********** Start [GetAccountNamingConvensionData] ***********/
CREATE PROCEDURE [dbo].[GetAccountNamingConvensionData]
AS
BEGIN
	SELECT tblAccountType.strAcctType AS AccountType
		,strCustomLabel AS CustomLabel
		,tblAccountType.intAcctTypeID
		,tblAccountClass.intAcctClassID
		,strDefaultLabel AS DefalutLabel
	FROM tblAccountClass
	INNER JOIN tblAccountType ON tblAccountClass.intAcctTypeID = tblAccountType.intAcctTypeID
END	
GO
/****** Object:  StoredProcedure [dbo].[GetAccountSetInvExtData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInventoryForInvEntry] ***********/

CREATE PROCEDURE [dbo].[GetAccountSetInvExtData]
  @PartNumber NVARCHAR(100)  
 ,@LocName NVARCHAR(50)  
AS
BEGIN
	SELECT tblInvExt.decOnHand AS OnHandQty
		,tblInvExt.decValue AS OnHandValue
		,tblAccountSets.intGLAsset AS AssetAccount
		,tblAccountSets.intGLRevenue AS RevenueAccount
		,tblAccountSets.intGLExpCOGS AS ExpenseAccount
		,tblAccountSets.intGLVariance AS VarianceAccount
		,tblInv.decLastPPUnit AS LPPPerStockUnit
		,tblInv.decBuyToStock AS BuyUnitCost
		,tblInv.strPartNumber AS PartNumber
		,tblInvExt.strLocName AS Location
	FROM tblAccountSets
	INNER JOIN fnTblInvForLocJoin() tblInv ON tblAccountSets.strAcctSet = tblInv.strAcctSet
	INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocName	
	WHERE (@PartNumber ='' or tblInv.strPartNumber = @PartNumber)  
	AND (@LocName='' or tblInv.strLocName = @LocName)
END
GO
/****** Object:  StoredProcedure [dbo].[GetAccountSummary]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAccountSummary]
AS
BEGIN
	SELECT tblAccountSets.intGLAsset AS GLAsset, tblAccounts.strDesc AS Description, SUM(DISTINCT ISNULL(tblAccounts.decBalance,0)) AS AccBal, SUM(ISNULL(tblInvExt.decValue,0)) AS InvBal, (SUM(DISTINCT ISNULL(tblAccounts.decBalance,0)) - SUM(ISNULL(tblInvExt.decValue,0))) AS Variance
	FROM dbo.fntblinvforlocjoin() tblInv LEFT JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocName INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet 
	LEFT OUTER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
	WHERE (tblAccountSets.blnService = 0) AND (tblInv.intType = 1) 
	GROUP BY tblAccountSets.intGLAsset, tblAccounts.strDesc 
	ORDER BY tblAccountSets.intGLAsset
	
END
GO
/****** Object:  StoredProcedure [dbo].[GetAccountWithJournalVariance]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAccountWithJournalVariance]
AS
BEGIN
	SELECT intGLNumber AS GLNumber
		,strDesc AS [Desc]
		,decOpenBalance AS OpenBalance
		,decBalance AS Balance
		,ROUND((
				SELECT SUM(decAmount)
				FROM tblJournalEnt
				WHERE intGLNumber = tblAccounts.intGLNumber
				), 2) AS Entries
		,decBalance - (
			(
				SELECT SUM(decAmount)
				FROM tblJournalEnt
				WHERE intGLNumber = tblAccounts.intGLNumber
				) + decOpenBalance
			) AS Variance
	FROM tblAccounts
	WHERE decBalance <> ROUND((
				SELECT SUM(decAmount)
				FROM tblJournalEnt
				WHERE intGLNumber = tblAccounts.intGLNumber
				), 2) + decOpenBalance
END
GO
/****** Object:  StoredProcedure [dbo].[GetAccountWithLYBal]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAccountWithLYBal]
AS
BEGIN
	SELECT acc.intGLNumber AS GLNumber
		,acc.strDesc AS [Desc]
		,acc.decLYEndBalance AS LYEndBalance
		,ISNULL(accLY.decBalance, 0) AS LYBalance
		,acc.decLYEndBalance - ISNULL(accLY.decBalance, 0) AS Variance
	FROM tblAccounts acc
	LEFT OUTER JOIN tblAccountsLY accLY ON acc.intGLNumber = accLY.intGLNumber
	WHERE acc.decLYEndBalance <> ISNULL(accLY.decBalance, 0)
		AND acc.intAccType < 4
END
GO
/****** Object:  StoredProcedure [dbo].[GetActionTypeList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [UpdateActionType] (CRM)**********/


/********* Start [GetActionTypeList] (CRM)**********/

Create Procedure [dbo].[GetActionTypeList]
As
begin
Select 
ActionType AS ActionType
,ActionDescription AS ActionDescription
,CreatedUser AS CreatedUser
,UpdatedUser AS UpdatedUser
,CreatedDate AS CreatedDate
,UpdatedDate AS UpdatedDate
,IsInactive AS IsInactive
,IsEmailAction AS IsEmailAction
 from tblCRMActionType
end
GO
/****** Object:  StoredProcedure [dbo].[GetActionTypeListByName]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetActionTypeList] (CRM)**********/


/********* Start [GetActionTypeListByName] (CRM)**********/


Create Procedure [dbo].[GetActionTypeListByName]
@ActionType nvarchar(900)
,@CreatedUser nvarchar(400)
As
begin
Select 
ActionType AS ActionType
,ActionDescription AS ActionDescription
,CreatedUser AS CreatedUser
,UpdatedUser AS UpdatedUser
,CreatedDate AS CreatedDate
,UpdatedDate AS UpdatedDate
,IsInactive AS IsInactive
,IsEmailAction AS IsEmailAction
 from tblCRMActionType where ActionType=@ActionType
end
GO
/****** Object:  StoredProcedure [dbo].[GetActivityActionDocuments]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetActivityDocuments] (CRM)**********/


/********* Start [GetActivityActionDocuments] (CRM)**********/

Create Procedure [dbo].[GetActivityActionDocuments]
@ActivityActionID as bigint
As
begin
	Select [FileName] as [FileName],FileSource as [File] from tblCRMActivitiesActionFile where ActivityActionID=@ActivityActionID
End
GO
/****** Object:  StoredProcedure [dbo].[GetActivityActionsByID]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetUserListCalendar] (CRM)**********/

CREATE Procedure [dbo].[GetActivityActionsByID]
@ActivityActionID bigint      
As      
begin      
 Select       
 a.ActivityActionID as ActivityActionID      
,a.ActivityID as ActivityID      
,a.ActionDescription as ActionDescription      
,a.DueDate as DueDate      
,a.AssignTo as AssignTo      
,a.ActionStatus as ActionStatus      
,a.CreatedDate as CreatedDate      
,a.UpdateDate as UpdateDate      
,a.CreatedUser as CreatedUser      
,a.UpdatedUser as UpdatedUser      
,a.IsInactive as IsInactive      
,a.ActionType as ActionType      
,b.ActivityName as ActivityName      
,b.ActivityGroupName as ActivityGroupName      
,b.CustomerNumber as CustomerNumber      
,b.VendorNumber as VendorNumber      
,b.InventoryItemNumber as  InventoryItemNumber           
,b.ProjectNumber as ProjectNumber      
,a.EmailId as EmailId      
,a.IsActionReopened as IsActionReopened      
,a.ActionReopenedUserName as ActionReopenedUserName      
,a.IsNotifyOnSalesDocuments as IsNotifyOnSalesDocuments       
,c.strEmail as ActionEmailID      
,d.strEmail as ActivityEmailID      
,b.ActivityCreatedUser as ActivityCreatedUser      
,a.SignText as SignText      
,a.AssignTo as AssignToold    
,IsNull(a.IsCalendar,0) as IsCalendar
,IsNull(a.StartTime,'12:00:00 AM') as StartTime      
,IsNull(a.EndTime,'12:00:00 AM') as EndTime      
from tblCRMActivityActions a (NOLOCK)       
inner join tblCRMActivities b (NOLOCK) on a.ActivityID=b.ActivityID       
 left join tblUsers c (NOLOCK) on a.CreatedUser=c.strUserName      
 left join tblUsers d (NOLOCK) on b.ActivityCreatedUser =d.strUserName      
where a.ActivityActionID=@ActivityActionID order by a.DueDate       
end
GO
/****** Object:  StoredProcedure [dbo].[GetActivityActionsList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/********* Start [GetActivityActionsList] (CRM)**********/

CREATE Procedure [dbo].[GetActivityActionsList]

As
begin
	Select 
 a.ActivityActionID as ActivityActionID
,a.ActivityID as ActivityID
,a.ActionDescription as ActionDescription
,a.DueDate as DueDate
,a.AssignTo as AssignTo
,a.ActionStatus as ActionStatus
,a.CreatedDate as CreatedDate
,a.UpdateDate as UpdateDate
,a.CreatedUser as CreatedUser
,a.UpdatedUser as UpdatedUser
,a.IsInactive as IsInactive
,a.ActionType as ActionType
,b.ActivityName as ActivityName
,b.ActivityGroupName as ActivityGroupName
,b.CustomerNumber as CustomerNumber
,b.VendorNumber as VendorNumber
,b.InventoryItemNumber as  InventoryItemNumber     
,b.ProjectNumber as ProjectNumber 
,a.EmailId as EmailId   
,a.IsActionReopened as IsActionReopened
,a.ActionReopenedUserName as ActionReopenedUserName
,a.IsNotifyOnSalesDocuments as IsNotifyOnSalesDocuments 
,c.strEmail as ActionEmailID
,d.strEmail as ActivityEmailID
,b.ActivityCreatedUser as ActivityCreatedUser
,a.SignText as SignText
,a.AssignTo as AssignToold
,IsNull(a.IsCalendar,0) as IsCalendar
,IsNull(a.StartTime,'12:00:00 AM') as StartTime      
,IsNull(a.EndTime,'12:00:00 AM') as EndTime 
from tblCRMActivityActions a inner join tblCRMActivities b on a.ActivityID=b.ActivityID 
	 left join tblUsers c on a.CreatedUser=c.strUserName
	 left join tblUsers d on b.ActivityCreatedUser =d.strUserName
	 order by a.ActivityID,a.DueDate	
end
GO
/****** Object:  StoredProcedure [dbo].[GetActivityActionsListByID]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetActivityActionsListByID] @ActivityID BIGINT   
AS   
  BEGIN   
      SELECT a.activityactionid         AS ActivityActionID,   
             a.activityid               AS ActivityID,   
             a.actiondescription        AS ActionDescription,   
             a.duedate                  AS DueDate,   
             a.assignto                 AS AssignTo,   
             a.actionstatus             AS ActionStatus,   
             a.createddate              AS CreatedDate,   
             a.updatedate               AS UpdateDate,   
             a.createduser              AS CreatedUser,   
             a.updateduser              AS UpdatedUser,   
             a.isinactive               AS IsInactive,   
             a.actiontype               AS ActionType,   
             b.activityname             AS ActivityName,   
             b.activitygroupname        AS ActivityGroupName,   
             b.customernumber           AS CustomerNumber,   
             b.vendornumber             AS VendorNumber,   
             b.inventoryitemnumber      AS InventoryItemNumber,   
             b.projectnumber            AS ProjectNumber,   
             a.emailid                  AS EmailId,   
             a.isactionreopened         AS IsActionReopened,   
             a.actionreopenedusername   AS ActionReopenedUserName,   
             a.isnotifyonsalesdocuments AS IsNotifyOnSalesDocuments,   
             c.stremail                 AS ActionEmailID,   
             d.stremail                 AS ActivityEmailID,   
             b.activitycreateduser      AS ActivityCreatedUser,   
             a.signtext                 AS SignText,   
             a.assignto                 AS AssignToold,   
             CAST(ROW_NUMBER() over(order by a.activityid) AS INT) LineNumber,
			 IsNull(a.IsCalendar,0)      AS IsCalendar,
			 IsNull(a.StartTime,'12:00:00 AM')    AS StartTime,
			 IsNull(a.EndTime,'12:00:00 AM') 	  AS EndTime
      FROM   tblcrmactivityactions a   
             INNER JOIN tblcrmactivities b   
                     ON a.activityid = b.activityid   
             LEFT JOIN tblusers c   
                    ON a.createduser = c.strusername   
             LEFT JOIN tblusers d   
                    ON b.activitycreateduser = d.strusername   
      WHERE  a.activityid = @ActivityID   
      ORDER  BY a.duedate   
END 
GO
/****** Object:  StoredProcedure [dbo].[GetActivityActionsListFilter]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetActivityActionsListFilter] (
	 @CustomerNumber NVARCHAR(Max)
	,@VendorNumber NVARCHAR(Max)
	,@InventoryItemNumber NVARCHAR(Max)
	,@ProjectNumber NVARCHAR(Max)
	,@ActivityGroupName NVARCHAR(Max)
	,@ActionStatus NVARCHAR(Max)
	,@UserName NVARCHAR(Max) = '<<ALL>>'
	,@TaskStatus NVARCHAR(Max) = '<<ALL>>'
	,@TransactionNumber NVARCHAR(Max) = '<<ALL>>'
	)
AS
BEGIN
	IF (@TaskStatus = 'ALL')
	BEGIN
		SELECT tblCRMActivityActions.ActivityActionID AS ActivityActionID
			,tblCRMActivityActions.ActivityID AS ActivityID
			,tblCRMActivityActions.ActionDescription AS ActionDescription
			,tblCRMActivityActions.DueDate AS DueDate
			,tblCRMActivityActions.AssignTo AS AssignTo
			,tblCRMActivityActions.ActionStatus AS ActionStatus
			,tblCRMActivityActions.CreatedDate AS CreatedDate
			,tblCRMActivityActions.UpdateDate AS UpdateDate
			,tblCRMActivityActions.CreatedUser AS CreatedUser
			,tblCRMActivityActions.UpdatedUser AS UpdatedUser
			,tblCRMActivityActions.IsInactive AS IsInactive
			,tblCRMActivityActions.ActionType AS ActionType
			,tblCRMActivityActions.SignText AS SignText
			,ISNULL(tblCRMActivityActions.IsCalendar,0) AS IsCalendar
			,ISNULL(tblCRMActivityActions.StartTime,'12:00:00 AM') AS StartTime
			,ISNULL(tblCRMActivityActions.EndTime,'12:00:00 AM') AS EndTime
			,tblCRMActivities.ActivityName AS ActivityName
			,tblCRMActivities.ActivityGroupName AS ActivityGroupName
			,tblCRMActivities.CustomerNumber AS CustomerNumber
			,tblCRMActivities.VendorNumber AS VendorNumber
			,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber
			,tblCRMActivities.ProjectNumber AS ProjectNumber
			,tblCRMActivityActions.EmailId AS EmailId
			,tblCRMActivityActions.IsActionReopened as IsActionReopened
			,tblCRMActivityActions.ActionReopenedUserName as ActionReopenedUserName
			,tblCRMActivityActions.IsNotifyOnSalesDocuments as IsNotifyOnSalesDocuments 
			,c.strEmail as ActionEmailID
			,d.strEmail as ActivityEmailID
			,tblCRMActivities.ActivityCreatedUser as ActivityCreatedUser
			,tblCRMActivityActions.AssignTo as AssignToold
			,tblCustomers.strCustDesc AS CustomerDescription
			,tblCRMActivities.CustomerProspect AS CustomerProspect
			,tblCRMActivities.ProsCompanyName AS ProsCompanyName
			,tblCRMActivities.ProsName AS ProsName
		FROM tblCRMActivityActions
		INNER JOIN tblCRMActivities ON tblCRMActivityActions.ActivityID = tblCRMActivities.ActivityID
		left join tblUsers c on tblCRMActivityActions.CreatedUser=c.strUserName
		left join tblUsers d on tblCRMActivities.ActivityCreatedUser =d.strUserName
		LEFT JOIN tblCustomers ON tblCRMActivities.CustomerNumber = tblCustomers.strCustName
		WHERE (
				ISNULL(tblCRMActivities.CustomerNumber, '') = CASE 
					WHEN ISNULL(@CustomerNumber, '') <> ''
						AND @CustomerNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.CustomerNumber, '')
					ELSE @CustomerNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.VendorNumber, '') = CASE 
					WHEN ISNULL(@VendorNumber, '') <> ''
						AND @VendorNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.VendorNumber, '')
					ELSE @VendorNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.InventoryItemNumber, '') = CASE 
					WHEN ISNULL(@InventoryItemNumber, '') <> ''
						AND @InventoryItemNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.InventoryItemNumber, '')
					ELSE @InventoryItemNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.ProjectNumber, '') = CASE 
					WHEN ISNULL(@ProjectNumber, '') <> ''
						AND @ProjectNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.ProjectNumber, '')
					ELSE @ProjectNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.ActivityGroupName, '') = CASE 
					WHEN ISNULL(@ActivityGroupName, '') <> ''
						AND @ActivityGroupName = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.ActivityGroupName, '')
					ELSE @ActivityGroupName
					END
				)
			AND (
				ISNULL(tblCRMActivityActions.ActionStatus, '') = CASE 
					WHEN ISNULL(@ActionStatus, '') <> ''
						AND @ActionStatus = '<<ALL>>'
						THEN ISNULL(tblCRMActivityActions.ActionStatus, '')
					ELSE @ActionStatus
					END
				)
			AND (
				ISNULL(tblCRMActivityActions.AssignTo, '') = CASE 
					WHEN ISNULL(@UserName, '') <> ''
						AND @UserName = '<<ALL>>'
						THEN ISNULL(tblCRMActivityActions.AssignTo, '')
					ELSE @UserName
					END
				)
			--Or (tblCRMActivities.TransactionNumber = @TransactionNumber )
		ORDER BY tblCRMActivityActions.ActivityID
			,tblCRMActivityActions.DueDate
	END
	ELSE IF (@TaskStatus = 'Overdue')
	BEGIN
		SELECT tblCRMActivityActions.ActivityActionID AS ActivityActionID
			,tblCRMActivityActions.ActivityID AS ActivityID
			,tblCRMActivityActions.ActionDescription AS ActionDescription
			,tblCRMActivityActions.DueDate AS DueDate
			,tblCRMActivityActions.AssignTo AS AssignTo
			,tblCRMActivityActions.ActionStatus AS ActionStatus
			,tblCRMActivityActions.CreatedDate AS CreatedDate
			,tblCRMActivityActions.UpdateDate AS UpdateDate
			,tblCRMActivityActions.CreatedUser AS CreatedUser
			,tblCRMActivityActions.UpdatedUser AS UpdatedUser
			,tblCRMActivityActions.IsInactive AS IsInactive
			,tblCRMActivityActions.SignText AS SignText
			,ISNULL(tblCRMActivityActions.IsCalendar,0) AS IsCalendar
			,ISNULL(tblCRMActivityActions.StartTime,'12:00:00 AM') AS StartTime
			,ISNULL(tblCRMActivityActions.EndTime,'12:00:00 AM') AS EndTime
			,tblCRMActivityActions.ActionType AS ActionType
			,tblCRMActivities.ActivityName AS ActivityName
			,tblCRMActivities.ActivityGroupName AS ActivityGroupName
			,tblCRMActivities.CustomerNumber AS CustomerNumber
			,tblCRMActivities.VendorNumber AS VendorNumber
			,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber
			,tblCRMActivities.ProjectNumber AS ProjectNumber
			,tblCRMActivityActions.EmailId AS EmailId
			,tblCRMActivityActions.IsActionReopened as IsActionReopened
			,tblCRMActivityActions.ActionReopenedUserName as ActionReopenedUserName
			,tblCRMActivityActions.IsNotifyOnSalesDocuments as IsNotifyOnSalesDocuments 
			,c.strEmail as ActionEmailID
			,d.strEmail as ActivityEmailID
			,tblCRMActivities.ActivityCreatedUser as ActivityCreatedUser
			,tblCRMActivityActions.AssignTo as AssignToold
			,tblCustomers.strCustDesc AS CustomerDescription
			,tblCRMActivities.CustomerProspect AS CustomerProspect
			,tblCRMActivities.ProsCompanyName AS ProsCompanyName
			,tblCRMActivities.ProsName AS ProsName
		FROM tblCRMActivityActions
		INNER JOIN tblCRMActivities ON tblCRMActivityActions.ActivityID = tblCRMActivities.ActivityID
		left join tblUsers c on tblCRMActivityActions.CreatedUser=c.strUserName
		left join tblUsers d on tblCRMActivities.ActivityCreatedUser =d.strUserName
		LEFT JOIN tblCustomers ON tblCRMActivities.CustomerNumber = tblCustomers.strCustName
		WHERE (
				ISNULL(tblCRMActivities.CustomerNumber, '') = CASE 
					WHEN ISNULL(@CustomerNumber, '') <> ''
						AND @CustomerNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.CustomerNumber, '')
					ELSE @CustomerNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.VendorNumber, '') = CASE 
					WHEN ISNULL(@VendorNumber, '') <> ''
						AND @VendorNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.VendorNumber, '')
					ELSE @VendorNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.InventoryItemNumber, '') = CASE 
					WHEN ISNULL(@InventoryItemNumber, '') <> ''
						AND @InventoryItemNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.InventoryItemNumber, '')
					ELSE @InventoryItemNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.ProjectNumber, '') = CASE 
					WHEN ISNULL(@ProjectNumber, '') <> ''
						AND @ProjectNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.ProjectNumber, '')
					ELSE @ProjectNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.ActivityGroupName, '') = CASE 
					WHEN ISNULL(@ActivityGroupName, '') <> ''
						AND @ActivityGroupName = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.ActivityGroupName, '')
					ELSE @ActivityGroupName
					END
				)
			AND (
				ISNULL(tblCRMActivityActions.ActionStatus, '') = CASE 
					WHEN ISNULL(@ActionStatus, '') <> ''
						AND @ActionStatus = '<<ALL>>'
						THEN ISNULL(tblCRMActivityActions.ActionStatus, '')
					ELSE @ActionStatus
					END
				)
			AND (
				ISNULL(tblCRMActivityActions.AssignTo, '') = CASE 
					WHEN ISNULL(@UserName, '') <> ''
						AND @UserName = '<<ALL>>'
						THEN ISNULL(tblCRMActivityActions.AssignTo, '')
					ELSE @UserName
					END
				)
			AND (
				tblCRMActivityActions.ActivityActionID IN (
					SELECT t1.ActivityActionID
					FROM tblCRMActivityActions t1 Inner join tblCRMActivityActionsStatus 
					on t1.ActionStatus= tblCRMActivityActionsStatus.StatusType
					WHERE (cast(t1.DueDate AS DATE) <  cast(GETDATE() AS DATE))
						AND (tblCRMActivityActionsStatus.StatusGroup <> 3)
					)
				)
			--Or (tblCRMActivities.TransactionNumber = @TransactionNumber )
		ORDER BY tblCRMActivityActions.ActivityID
			,tblCRMActivityActions.DueDate
	END
	ELSE IF (@TaskStatus = 'DueToday')
	BEGIN
		SELECT tblCRMActivityActions.ActivityActionID AS ActivityActionID
			,tblCRMActivityActions.ActivityID AS ActivityID
			,tblCRMActivityActions.ActionDescription AS ActionDescription
			,tblCRMActivityActions.DueDate AS DueDate
			,tblCRMActivityActions.AssignTo AS AssignTo
			,tblCRMActivityActions.ActionStatus AS ActionStatus
			,tblCRMActivityActions.CreatedDate AS CreatedDate
			,tblCRMActivityActions.UpdateDate AS UpdateDate
			,tblCRMActivityActions.CreatedUser AS CreatedUser
			,tblCRMActivityActions.UpdatedUser AS UpdatedUser
			,tblCRMActivityActions.IsInactive AS IsInactive
			,tblCRMActivityActions.ActionType AS ActionType
			,tblCRMActivityActions.SignText AS SignText
			,ISNULL(tblCRMActivityActions.IsCalendar,0) AS IsCalendar
			,ISNULL(tblCRMActivityActions.StartTime,'12:00:00 AM') AS StartTime
			,ISNULL(tblCRMActivityActions.EndTime,'12:00:00 AM') AS EndTime
			,tblCRMActivities.ActivityName AS ActivityName
			,tblCRMActivities.ActivityGroupName AS ActivityGroupName
			,tblCRMActivities.CustomerNumber AS CustomerNumber
			,tblCRMActivities.VendorNumber AS VendorNumber
			,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber
			,tblCRMActivities.ProjectNumber AS ProjectNumber
			,tblCRMActivityActions.EmailId AS EmailId
			,tblCRMActivityActions.IsActionReopened as IsActionReopened
			,tblCRMActivityActions.ActionReopenedUserName as ActionReopenedUserName
			,tblCRMActivityActions.IsNotifyOnSalesDocuments as IsNotifyOnSalesDocuments 
			,c.strEmail as ActionEmailID
			,d.strEmail as ActivityEmailID
			,tblCRMActivities.ActivityCreatedUser as ActivityCreatedUser
			,tblCRMActivityActions.AssignTo as AssignToold
			,tblCustomers.strCustDesc AS CustomerDescription
			,tblCRMActivities.CustomerProspect AS CustomerProspect
			,tblCRMActivities.ProsCompanyName AS ProsCompanyName
			,tblCRMActivities.ProsName AS ProsName
		FROM tblCRMActivityActions
		INNER JOIN tblCRMActivities ON tblCRMActivityActions.ActivityID = tblCRMActivities.ActivityID
		left join tblUsers c on tblCRMActivityActions.CreatedUser=c.strUserName
		left join tblUsers d on tblCRMActivities.ActivityCreatedUser =d.strUserName
		LEFT JOIN tblCustomers ON tblCRMActivities.CustomerNumber = tblCustomers.strCustName
		WHERE (
				ISNULL(tblCRMActivities.CustomerNumber, '') = CASE 
					WHEN ISNULL(@CustomerNumber, '') <> ''
						AND @CustomerNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.CustomerNumber, '')
					ELSE @CustomerNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.VendorNumber, '') = CASE 
					WHEN ISNULL(@VendorNumber, '') <> ''
						AND @VendorNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.VendorNumber, '')
					ELSE @VendorNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.InventoryItemNumber, '') = CASE 
					WHEN ISNULL(@InventoryItemNumber, '') <> ''
						AND @InventoryItemNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.InventoryItemNumber, '')
					ELSE @InventoryItemNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.ProjectNumber, '') = CASE 
					WHEN ISNULL(@ProjectNumber, '') <> ''
						AND @ProjectNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.ProjectNumber, '')
					ELSE @ProjectNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.ActivityGroupName, '') = CASE 
					WHEN ISNULL(@ActivityGroupName, '') <> ''
						AND @ActivityGroupName = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.ActivityGroupName, '')
					ELSE @ActivityGroupName
					END
				)
			AND (
				ISNULL(tblCRMActivityActions.ActionStatus, '') = CASE 
					WHEN ISNULL(@ActionStatus, '') <> ''
						AND @ActionStatus = '<<ALL>>'
						THEN ISNULL(tblCRMActivityActions.ActionStatus, '')
					ELSE @ActionStatus
					END
				)
			AND (
				ISNULL(tblCRMActivityActions.AssignTo, '') = CASE 
					WHEN ISNULL(@UserName, '') <> ''
						AND @UserName = '<<ALL>>'
						THEN ISNULL(tblCRMActivityActions.AssignTo, '')
					ELSE @UserName
					END
				)
			AND (
				tblCRMActivityActions.ActivityActionID IN (
					SELECT t1.ActivityActionID
					FROM tblCRMActivityActions t1 Inner join tblCRMActivityActionsStatus 
					on t1.ActionStatus= tblCRMActivityActionsStatus.StatusType
					WHERE (cast(t1.DueDate AS DATE) = cast(GETDATE() AS DATE))
						AND (tblCRMActivityActionsStatus.StatusGroup <> 3)
					)
				)
			--Or (tblCRMActivities.TransactionNumber = @TransactionNumber )
		ORDER BY tblCRMActivityActions.ActivityID
			,tblCRMActivityActions.DueDate
	END
	ELSE IF (@TaskStatus = 'Open')
	BEGIN
		SELECT tblCRMActivityActions.ActivityActionID AS ActivityActionID
			,tblCRMActivityActions.ActivityID AS ActivityID
			,tblCRMActivityActions.ActionDescription AS ActionDescription
			,tblCRMActivityActions.DueDate AS DueDate
			,tblCRMActivityActions.AssignTo AS AssignTo
			,tblCRMActivityActions.ActionStatus AS ActionStatus
			,tblCRMActivityActions.CreatedDate AS CreatedDate
			,tblCRMActivityActions.UpdateDate AS UpdateDate
			,tblCRMActivityActions.CreatedUser AS CreatedUser
			,tblCRMActivityActions.UpdatedUser AS UpdatedUser
			,tblCRMActivityActions.IsInactive AS IsInactive
			,tblCRMActivityActions.ActionType AS ActionType
			,tblCRMActivityActions.SignText AS SignText
			,ISNULL(tblCRMActivityActions.IsCalendar,0) AS IsCalendar
			,ISNULL(tblCRMActivityActions.StartTime,'12:00:00 AM') AS StartTime
			,ISNULL(tblCRMActivityActions.EndTime,'12:00:00 AM') AS EndTime
			,tblCRMActivities.ActivityName AS ActivityName
			,tblCRMActivities.ActivityGroupName AS ActivityGroupName
			,tblCRMActivities.CustomerNumber AS CustomerNumber
			,tblCRMActivities.VendorNumber AS VendorNumber
			,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber
			,tblCRMActivities.ProjectNumber AS ProjectNumber
			,tblCRMActivityActions.EmailId AS EmailId
			,tblCRMActivityActions.IsActionReopened as IsActionReopened
			,tblCRMActivityActions.ActionReopenedUserName as ActionReopenedUserName
			,tblCRMActivityActions.IsNotifyOnSalesDocuments as IsNotifyOnSalesDocuments 
			,c.strEmail as ActionEmailID
			,d.strEmail as ActivityEmailID
			,tblCRMActivities.ActivityCreatedUser as ActivityCreatedUser
			,tblCRMActivityActions.AssignTo as AssignToold
			,tblCustomers.strCustDesc AS CustomerDescription
			,tblCRMActivities.CustomerProspect AS CustomerProspect
			,tblCRMActivities.ProsCompanyName AS ProsCompanyName
			,tblCRMActivities.ProsName AS ProsName
		FROM tblCRMActivityActions
		INNER JOIN tblCRMActivities ON tblCRMActivityActions.ActivityID = tblCRMActivities.ActivityID
		left join tblUsers c on tblCRMActivityActions.CreatedUser=c.strUserName
		left join tblUsers d on tblCRMActivities.ActivityCreatedUser =d.strUserName
		LEFT JOIN tblCustomers ON tblCRMActivities.CustomerNumber = tblCustomers.strCustName
		WHERE (
				ISNULL(tblCRMActivities.CustomerNumber, '') = CASE 
					WHEN ISNULL(@CustomerNumber, '') <> ''
						AND @CustomerNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.CustomerNumber, '')
					ELSE @CustomerNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.VendorNumber, '') = CASE 
					WHEN ISNULL(@VendorNumber, '') <> ''
						AND @VendorNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.VendorNumber, '')
					ELSE @VendorNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.InventoryItemNumber, '') = CASE 
					WHEN ISNULL(@InventoryItemNumber, '') <> ''
						AND @InventoryItemNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.InventoryItemNumber, '')
					ELSE @InventoryItemNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.ProjectNumber, '') = CASE 
					WHEN ISNULL(@ProjectNumber, '') <> ''
						AND @ProjectNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.ProjectNumber, '')
					ELSE @ProjectNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.ActivityGroupName, '') = CASE 
					WHEN ISNULL(@ActivityGroupName, '') <> ''
						AND @ActivityGroupName = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.ActivityGroupName, '')
					ELSE @ActivityGroupName
					END
				)
			AND (
				ISNULL(tblCRMActivityActions.ActionStatus, '') = CASE 
					WHEN ISNULL(@ActionStatus, '') <> ''
						AND @ActionStatus = '<<ALL>>'
						THEN ISNULL(tblCRMActivityActions.ActionStatus, '')
					ELSE @ActionStatus
					END
				)
			AND (
				ISNULL(tblCRMActivityActions.AssignTo, '') = CASE 
					WHEN ISNULL(@UserName, '') <> ''
						AND @UserName = '<<ALL>>'
						THEN ISNULL(tblCRMActivityActions.AssignTo, '')
					ELSE @UserName
					END
				)
			AND (
				tblCRMActivityActions.ActivityActionID IN (
					SELECT t1.ActivityActionID
					FROM tblCRMActivityActions t1 Inner join tblCRMActivityActionsStatus 
					on t1.ActionStatus= tblCRMActivityActionsStatus.StatusType
					WHERE (cast(t1.DueDate AS DATE) >= cast(GETDATE() AS DATE)) And (
							tblCRMActivityActionsStatus.StatusGroup = 1
							OR tblCRMActivityActionsStatus.StatusGroup =2
							)
					)
				)
			--Or (tblCRMActivities.TransactionNumber = @TransactionNumber )
		ORDER BY tblCRMActivityActions.ActivityID
			,tblCRMActivityActions.DueDate
	END
	ELSE IF (@TaskStatus = 'InProgress')
	BEGIN
		SELECT tblCRMActivityActions.ActivityActionID AS ActivityActionID
			,tblCRMActivityActions.ActivityID AS ActivityID
			,tblCRMActivityActions.ActionDescription AS ActionDescription
			,tblCRMActivityActions.DueDate AS DueDate
			,tblCRMActivityActions.AssignTo AS AssignTo
			,tblCRMActivityActions.ActionStatus AS ActionStatus
			,tblCRMActivityActions.CreatedDate AS CreatedDate
			,tblCRMActivityActions.UpdateDate AS UpdateDate
			,tblCRMActivityActions.CreatedUser AS CreatedUser
			,tblCRMActivityActions.UpdatedUser AS UpdatedUser
			,tblCRMActivityActions.IsInactive AS IsInactive
			,tblCRMActivityActions.ActionType AS ActionType
			,tblCRMActivityActions.SignText AS SignText
			,ISNULL(tblCRMActivityActions.IsCalendar,0) AS IsCalendar
			,ISNULL(tblCRMActivityActions.StartTime,'12:00:00 AM') AS StartTime
			,ISNULL(tblCRMActivityActions.EndTime,'12:00:00 AM') AS EndTime
			,tblCRMActivities.ActivityName AS ActivityName
			,tblCRMActivities.ActivityGroupName AS ActivityGroupName
			,tblCRMActivities.CustomerNumber AS CustomerNumber
			,tblCRMActivities.VendorNumber AS VendorNumber
			,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber
			,tblCRMActivities.ProjectNumber AS ProjectNumber
			,tblCRMActivityActions.EmailId AS EmailId
			,tblCRMActivityActions.IsActionReopened as IsActionReopened
			,tblCRMActivityActions.ActionReopenedUserName as ActionReopenedUserName
			,tblCRMActivityActions.IsNotifyOnSalesDocuments as IsNotifyOnSalesDocuments 
			,c.strEmail as ActionEmailID
			,d.strEmail as ActivityEmailID
			,tblCRMActivities.ActivityCreatedUser as ActivityCreatedUser
			,tblCRMActivityActions.AssignTo as AssignToold
			,tblCustomers.strCustDesc AS CustomerDescription
			,tblCRMActivities.CustomerProspect AS CustomerProspect
			,tblCRMActivities.ProsCompanyName AS ProsCompanyName
			,tblCRMActivities.ProsName AS ProsName
		FROM tblCRMActivityActions
		INNER JOIN tblCRMActivities ON tblCRMActivityActions.ActivityID = tblCRMActivities.ActivityID
		left join tblUsers c on tblCRMActivityActions.CreatedUser=c.strUserName
		left join tblUsers d on tblCRMActivities.ActivityCreatedUser =d.strUserName
		LEFT JOIN tblCustomers ON tblCRMActivities.CustomerNumber = tblCustomers.strCustName
		WHERE (
				ISNULL(tblCRMActivities.CustomerNumber, '') = CASE 
					WHEN ISNULL(@CustomerNumber, '') <> ''
						AND @CustomerNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.CustomerNumber, '')
					ELSE @CustomerNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.VendorNumber, '') = CASE 
					WHEN ISNULL(@VendorNumber, '') <> ''
						AND @VendorNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.VendorNumber, '')
					ELSE @VendorNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.InventoryItemNumber, '') = CASE 
					WHEN ISNULL(@InventoryItemNumber, '') <> ''
						AND @InventoryItemNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.InventoryItemNumber, '')
					ELSE @InventoryItemNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.ProjectNumber, '') = CASE 
					WHEN ISNULL(@ProjectNumber, '') <> ''
						AND @ProjectNumber = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.ProjectNumber, '')
					ELSE @ProjectNumber
					END
				)
			AND (
				ISNULL(tblCRMActivities.ActivityGroupName, '') = CASE 
					WHEN ISNULL(@ActivityGroupName, '') <> ''
						AND @ActivityGroupName = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.ActivityGroupName, '')
					ELSE @ActivityGroupName
					END
				)
			AND (
				ISNULL(tblCRMActivityActions.ActionStatus, '') = CASE 
					WHEN ISNULL(@ActionStatus, '') <> ''
						AND @ActionStatus = '<<ALL>>'
						THEN ISNULL(tblCRMActivityActions.ActionStatus, '')
					ELSE @ActionStatus
					END
				)
			AND (
				ISNULL(tblCRMActivityActions.AssignTo, '') = CASE 
					WHEN ISNULL(@UserName, '') <> ''
						AND @UserName = '<<ALL>>'
						THEN ISNULL(tblCRMActivityActions.AssignTo, '')
					ELSE @UserName
					END
				)
			AND (
				tblCRMActivityActions.ActivityActionID IN (
					SELECT t1.ActivityActionID
					FROM tblCRMActivityActions t1  Inner join tblCRMActivityActionsStatus 
					on t1.ActionStatus= tblCRMActivityActionsStatus.StatusType
					WHERE tblCRMActivityActionsStatus.StatusGroup = 2 And 
					(cast(t1.DueDate AS DATE) >= cast(GETDATE() AS DATE))
					)
				)
			--Or (tblCRMActivities.TransactionNumber = @TransactionNumber )
		ORDER BY tblCRMActivityActions.ActivityID
			,tblCRMActivityActions.DueDate
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetActivityActionsStatusList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [UpdateActivityActionsStatus] (CRM)**********/


/********* Start [GetActivityActionsStatusList] (CRM)**********/

Create Procedure [dbo].[GetActivityActionsStatusList]
As
Begin
	Select 
StatusType AS StatusType
,StatusDescription AS StatusDescription
,IsInactive AS IsInactive
,CreatedUser AS CreatedUser
,UpdatedUser AS UpdatedUser
,CreatedDate AS CreatedDate
,UpdatedDate AS UpdatedDate 
,IsPredefined  AS IsPredefined 
,StatusGroup AS StatusGroup  
from tblCRMActivityActionsStatus
End
GO
/****** Object:  StoredProcedure [dbo].[GetActivityActionsStatusListByName]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetActivityActionsStatusList] (CRM)**********/


/********* Start [GetActivityActionsStatusListByName] (CRM)**********/

CREATE Procedure [dbo].[GetActivityActionsStatusListByName]
@StatusType	nvarchar(400),
@CreatedUser	nvarchar(400)
As
Begin
	Select 
StatusType AS StatusType
,StatusDescription AS StatusDescription
,IsInactive AS IsInactive
,CreatedUser AS CreatedUser
,UpdatedUser AS UpdatedUser
,CreatedDate AS CreatedDate
,UpdatedDate AS UpdatedDate 
,IsPredefined  AS IsPredefined 
,StatusGroup AS StatusGroup  
from tblCRMActivityActionsStatus where StatusType=@StatusType
End
GO
/****** Object:  StoredProcedure [dbo].[GetActivityCustomerContactList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [DeleteActivityStatus] (CRM)**********/

/********* Start [GetActivityCustomerContactList] (CRM)**********/

CREATE Procedure [dbo].[GetActivityCustomerContactList]
@strCustName nvarchar(Max)
As
Begin

Select (strPhone +' (Phone)') AS Contacts from tblCustomers where Ltrim(Rtrim(strPhone)) <>'' and Ltrim(Rtrim(strPhone)) is not null and strCustName=@strCustName
Union ALL
Select (strCellPhone +' (CellPhone)') AS Contacts  from tblCustomers where Ltrim(Rtrim(strCellPhone)) <>'' and Ltrim(Rtrim(strCellPhone)) is not null and strCustName=@strCustName
Union ALL
Select (strFax +' (Fax)') AS Contacts  from tblCustomers where Ltrim(Rtrim(strFax)) <>'' and Ltrim(Rtrim(strFax)) is not null and strCustName=@strCustName

End
GO
/****** Object:  StoredProcedure [dbo].[GetActivityDocuments]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetActivityListByIDCRM] (CRM)**********/



/********* Start [GetActivityDocuments] (CRM)**********/

CREATE Procedure [dbo].[GetActivityDocuments]
@ActivityID as bigint
As
begin
	Select [FileName] as [FileName],FileSource as [File] from tblCRMActivitiesFile where [ActivityID]=@ActivityID
End
GO
/****** Object:  StoredProcedure [dbo].[GetActivityGroupbyUser]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


/********* Start [GetActivityGroupbyUser] (CRM)**********/

CREATE PROCEDURE [dbo].[GetActivityGroupbyUser] (
	@IsAdmin BIT
	,@UserName NVARCHAR(Max)
	)
AS
BEGIN
	IF (@IsAdmin = 1)
	BEGIN
		SELECT ActivityGroupName AS ActivityGroupName
			,ActivityGroupDescription AS ActivityGroupDescription
			,IsInactive AS IsInactive
			,CreatedUser AS CreatedUser
			,UpdatedUser AS UpdatedUser
			,CreatedDate AS CreatedDate
			,UpdatedDate AS UpdatedDate
			,IsSalesGroup AS IsSalesGroup
		FROM tblCRMActivityGroup
	END
	ELSE
	BEGIN
		SELECT ActivityGroupName AS ActivityGroupName
			,ActivityGroupDescription AS ActivityGroupDescription
			,IsInactive AS IsInactive
			,CreatedUser AS CreatedUser
			,UpdatedUser AS UpdatedUser
			,CreatedDate AS CreatedDate
			,UpdatedDate AS UpdatedDate
			,IsSalesGroup AS IsSalesGroup
		FROM tblCRMActivityGroup
		WHERE ActivityGroupName IN (
				SELECT DISTINCT (ActivityGroupName)
				FROM tblCRMAcitvityGroupUsers
				WHERE UserName = @UserName
				)
		
		UNION ALL
		
		SELECT ActivityGroupName AS ActivityGroupName
			,ActivityGroupDescription AS ActivityGroupDescription
			,IsInactive AS IsInactive
			,CreatedUser AS CreatedUser
			,UpdatedUser AS UpdatedUser
			,CreatedDate AS CreatedDate
			,UpdatedDate AS UpdatedDate
			,IsSalesGroup AS IsSalesGroup
		FROM tblCRMActivityGroup
		WHERE ActivityGroupName NOT IN (
				SELECT DISTINCT (ActivityGroupName)
				FROM tblCRMAcitvityGroupUsers
				)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetActivityGroupList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/********* End [UpdateActivityGroupName] (CRM)**********/

/********* Start [GetActivityGroupList] (CRM)**********/

CREATE PROCEDURE [dbo].[GetActivityGroupList]
AS
BEGIN
Select 
 ActivityGroupName As ActivityGroupName
,ActivityGroupDescription As ActivityGroupDescription
,IsInactive As IsInactive
,CreatedUser As CreatedUser
,UpdatedUser As UpdatedUser
,CreatedDate As CreatedDate
,UpdatedDate As UpdatedDate
,IsSalesGroup as IsSalesGroup
from tblCRMActivityGroup 
END
GO
/****** Object:  StoredProcedure [dbo].[GetActivityGroupListByName]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetActivityGroupList] (CRM)**********/


/********* Start [GetActivityGroupListByName] (CRM)**********/

CREATE PROCEDURE [dbo].[GetActivityGroupListByName] 
@ActivityGroupName	nvarchar(400),
@CreatedUser	nvarchar(400)
AS
BEGIN
Select 
 ActivityGroupName As ActivityGroupName
,ActivityGroupDescription As ActivityGroupDescription
,IsInactive As IsInactive
,CreatedUser As CreatedUser
,UpdatedUser As UpdatedUser
,CreatedDate As CreatedDate
,UpdatedDate As UpdatedDate
,IsSalesGroup as IsSalesGroup 
from tblCRMActivityGroup Where ActivityGroupName=@ActivityGroupName
END
GO
/****** Object:  StoredProcedure [dbo].[GetActivityList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [UpdateActivity] (CRM)**********/


/********* Start [GetActivityList] (CRM)**********/

CREATE Procedure [dbo].[GetActivityList]
As
begin
Select 
ActivityName AS ActivityName
,ActivityDescription AS ActivityDescription
,ActivityGroupName AS ActivityGroupName
,SalesPipelinePercentage as SalesPipelinePercentage
,CreatedUser AS CreatedUser
,UpdatedUser AS UpdatedUser
,CreatedDate AS CreatedDate
,UpdatedDate AS UpdatedDate
,IsInactive AS IsInactive
 from tblCRMPreActivityList
end
GO
/****** Object:  StoredProcedure [dbo].[GetActivityListByGroupName]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetActivityGroupbyUser] (CRM)**********/

/********* Start [GetActivityListByGroupName] (CRM)**********/
CREATE PROCEDURE [dbo].[GetActivityListByGroupName] 
@ActivityGroupName NVARCHAR(900)
AS                      
BEGIN
	SELECT ActivityName AS ActivityName
		,ActivityDescription AS ActivityDescription
		,ActivityGroupName AS ActivityGroupName
		,SalesPipelinePercentage as SalesPipelinePercentage
		,CreatedUser AS CreatedUser
		,UpdatedUser AS UpdatedUser
		,CreatedDate AS CreatedDate
		,UpdatedDate AS UpdatedDate
		,IsInactive AS IsInactive
	FROM tblCRMPreActivityList
	WHERE ActivityGroupName = @ActivityGroupName
END
GO
/****** Object:  StoredProcedure [dbo].[GetActivityListByIDCRM]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetMyActivityListCRM] (CRM)**********/



/********* Start [GetActivityListByIDCRM] (CRM)**********/

CREATE Procedure [dbo].[GetActivityListByIDCRM]
@ActivityID bigint,
@ActivityCreatedUser nvarchar(Max)
AS
Begin

Select 
 ActivityID as ActivityID
,ActivityName as ActivityName
,ActivityDescription as ActivityDescription
,ActivityGroupName as ActivityGroupName
,ActivityStatus as ActivityStatus
,ActivityCreatedDate as ActivityCreatedDate
,CustomerNumber as CustomerNumber
,VendorNumber as VendorNumber
,InventoryItemNumber as InventoryItemNumber
,ProjectNumber as ProjectNumber
,CustomerContactNo as CustomerContactNo
,VendorContactNo as VendorContactNo
,TransactionType as TransactionType
,TransactionNumber as TransactionNumber
,CreatedUser as CreatedUser
,UpdatedUser as UpdatedUser
,CreatedDate as CreatedDate
,UpdatedDate as UpdatedDate
,IsInactive as IsInactive
,IsSalesGroup as IsSalesGroup
,SalesPipelineText as SalesPipelineText
,SalesPipelinePercentage as SalesPipelinePercentage
,ActivityCreatedUser as ActivityCreatedUser
from tblCRMActivities where ActivityID=@ActivityID

End
GO
/****** Object:  StoredProcedure [dbo].[GetActivityListByName]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetActivityList] (CRM)**********/


/********* Start [GetActivityListByName] (CRM)**********/

CREATE Procedure [dbo].[GetActivityListByName]
@ActivityName nvarchar(900)
,@CreatedUser nvarchar(400)
As
begin
Select 
ActivityName AS ActivityName
,ActivityDescription AS ActivityDescription
,ActivityGroupName AS ActivityGroupName
,SalesPipelinePercentage as SalesPipelinePercentage
,CreatedUser AS CreatedUser
,UpdatedUser AS UpdatedUser
,CreatedDate AS CreatedDate
,UpdatedDate AS UpdatedDate
,IsInactive AS IsInactive
 from tblCRMPreActivityList where ActivityName=@ActivityName
end
GO
/****** Object:  StoredProcedure [dbo].[GetActivityListbyUser]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Start  StoredProcedure [dbo].[GetActivityListbyUser] ******/
CREATE Procedure [dbo].[GetActivityListbyUser]
 (
	@IsAdmin BIT
	,@UserName NVARCHAR(Max)
 )
As
begin
	IF (@IsAdmin = 1)
	BEGIN
		Select 
		ActivityName AS ActivityName
		,ActivityDescription AS ActivityDescription
		,ActivityGroupName AS ActivityGroupName
		,SalesPipelinePercentage as SalesPipelinePercentage
		,CreatedUser AS CreatedUser
		,UpdatedUser AS UpdatedUser
		,CreatedDate AS CreatedDate
		,UpdatedDate AS UpdatedDate
		,IsInactive AS IsInactive
		from tblCRMPreActivityList
	END
	ELSE
	BEGIN
		Select 
		ActivityName AS ActivityName
		,ActivityDescription AS ActivityDescription
		,ActivityGroupName AS ActivityGroupName
		,SalesPipelinePercentage as SalesPipelinePercentage
		,CreatedUser AS CreatedUser
		,UpdatedUser AS UpdatedUser
		,CreatedDate AS CreatedDate
		,UpdatedDate AS UpdatedDate
		,IsInactive AS IsInactive
		from tblCRMPreActivityList
		WHERE ActivityGroupName IN (
				SELECT DISTINCT (ActivityGroupName)
				FROM tblCRMAcitvityGroupUsers
				WHERE UserName = @UserName
				)
		
		UNION ALL
		
		Select 
		ActivityName AS ActivityName
		,ActivityDescription AS ActivityDescription
		,ActivityGroupName AS ActivityGroupName
		,SalesPipelinePercentage as SalesPipelinePercentage
		,CreatedUser AS CreatedUser
		,UpdatedUser AS UpdatedUser
		,CreatedDate AS CreatedDate
		,UpdatedDate AS UpdatedDate
		,IsInactive AS IsInactive
		from tblCRMPreActivityList
		WHERE ActivityGroupName NOT IN (
				SELECT DISTINCT (ActivityGroupName)
				FROM tblCRMAcitvityGroupUsers
				)
	END
end
GO
/****** Object:  StoredProcedure [dbo].[GetActivityListCRM]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetMyActivityActionsList] (CRM)**********/


/********* Start [GetActivityListCRM] (CRM)**********/

CREATE Procedure [dbo].[GetActivityListCRM]
@ActivityCreatedUser nvarchar(Max)
AS
Begin

Select 
 tblCRMActivities.ActivityID as ActivityID
,tblCRMActivities.ActivityName as ActivityName
,tblCRMActivities.ActivityDescription as ActivityDescription
,tblCRMActivities.ActivityGroupName as ActivityGroupName
,tblCRMActivities.ActivityStatus as ActivityStatus
,tblCRMActivities.ActivityCreatedDate as ActivityCreatedDate
,tblCRMActivities.CustomerNumber as CustomerNumber
,tblCustomers.strCustDesc as CustomerDescription
,tblCRMActivities.VendorNumber as VendorNumber
,tblVendors.strVendDesc as VendorDescription
,tblCRMActivities.InventoryItemNumber as InventoryItemNumber
,tblInv.strDesc as InventoryItemDescription
,tblCRMActivities.ProjectNumber as ProjectNumber
,tblProjects.strProjName as ProjectDescription
,tblCRMActivities.CustomerContactNo as CustomerContactNo
,tblCRMActivities.VendorContactNo as VendorContactNo
,tblCRMActivities.TransactionType as TransactionType
,tblCRMActivities.TransactionNumber as TransactionNumber
,tblCRMActivities.CreatedUser as CreatedUser
,tblCRMActivities.UpdatedUser as UpdatedUser
,tblCRMActivities.CreatedDate as CreatedDate
,tblCRMActivities.UpdatedDate as UpdatedDate
,tblCRMActivities.IsInactive as IsInactive
,tblCRMActivities.IsSalesGroup as IsSalesGroup
,tblCRMActivities.SalesPipelineText as SalesPipelineText
,tblCRMActivities.SalesPipelinePercentage as SalesPipelinePercentage
,tblCRMActivities.ActivityCreatedUser as ActivityCreatedUser
from tblCRMActivities left join tblCustomers on tblCRMActivities.CustomerNumber=tblCustomers.strCustName
left join tblVendors on tblCRMActivities.VendorNumber=tblVendors.strVendName
left join tblInv on tblCRMActivities.InventoryItemNumber=tblInv.strPartNumber
left join tblProjects on tblCRMActivities.ProjectNumber=tblProjects.strProjNumber

End
GO
/****** Object:  StoredProcedure [dbo].[GetActivitySalesGroupbyUser]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************END [DeleteCRMActivitiesUserFields]**********************************/

/************************START [GetActivitySalesGroupbyUser]***********************************/

CREATE PROCEDURE [dbo].[GetActivitySalesGroupbyUser] (
	 @IsAdmin BIT
	,@UserName NVARCHAR(Max)
	)
AS
BEGIN
	IF (@IsAdmin = 1)
	BEGIN
		SELECT ActivityGroupName AS ActivityGroupName
			,ActivityGroupDescription AS ActivityGroupDescription
			,IsInactive AS IsInactive
			,CreatedUser AS CreatedUser
			,UpdatedUser AS UpdatedUser
			,CreatedDate AS CreatedDate
			,UpdatedDate AS UpdatedDate
			,IsSalesGroup AS IsSalesGroup
		FROM tblCRMActivityGroup Where IsSalesGroup=1
	END
	ELSE
	BEGIN
		SELECT ActivityGroupName AS ActivityGroupName
			,ActivityGroupDescription AS ActivityGroupDescription
			,IsInactive AS IsInactive
			,CreatedUser AS CreatedUser
			,UpdatedUser AS UpdatedUser
			,CreatedDate AS CreatedDate
			,UpdatedDate AS UpdatedDate
			,IsSalesGroup AS IsSalesGroup
		FROM tblCRMActivityGroup
		WHERE ActivityGroupName IN (
				SELECT DISTINCT (ActivityGroupName)
				FROM tblCRMAcitvityGroupUsers
				WHERE UserName = @UserName
				) and IsSalesGroup=1
		
		UNION ALL
		
		SELECT ActivityGroupName AS ActivityGroupName
			,ActivityGroupDescription AS ActivityGroupDescription
			,IsInactive AS IsInactive
			,CreatedUser AS CreatedUser
			,UpdatedUser AS UpdatedUser
			,CreatedDate AS CreatedDate
			,UpdatedDate AS UpdatedDate
			,IsSalesGroup AS IsSalesGroup
		FROM tblCRMActivityGroup
		WHERE ActivityGroupName NOT IN (
				SELECT DISTINCT (ActivityGroupName)
				FROM tblCRMAcitvityGroupUsers
				) and IsSalesGroup=1
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetActivityStatusList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* Emd [UpdateActivityStatus] (CRM)**********/


/********* Start [GetActivityStatusList] (CRM)**********/

CREATE Procedure [dbo].[GetActivityStatusList]
As
Begin
	Select 
StatusType AS StatusType
,StatusDescription AS StatusDescription
,IsInactive AS IsInactive
,CreatedUser AS CreatedUser
,UpdatedUser AS UpdatedUser
,CreatedDate AS CreatedDate
,UpdatedDate AS UpdatedDate
,IsPredefined  AS IsPredefined
,StatusGroup AS StatusGroup  
from tblCRMActivityStatus
End
GO
/****** Object:  StoredProcedure [dbo].[GetActivityStatusListByName]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetActivityStatusList] (CRM)**********/


/********* Start [GetActivityStatusListByName] (CRM)**********/

CREATE Procedure [dbo].[GetActivityStatusListByName]
@StatusType	nvarchar(400),
@CreatedUser	nvarchar(400)
As
Begin
	Select 
StatusType AS StatusType
,StatusDescription AS StatusDescription
,IsInactive AS IsInactive
,CreatedUser AS CreatedUser
,UpdatedUser AS UpdatedUser
,CreatedDate AS CreatedDate
,UpdatedDate AS UpdatedDate 
,IsPredefined  AS IsPredefined 
,StatusGroup AS StatusGroup  
from tblCRMActivityStatus where StatusType=@StatusType
End
GO
/****** Object:  StoredProcedure [dbo].[GetActivityUserFieldListByID]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************END [DeleteCRMActivityGroupUserFields]***********************************/

/************************START [GetActivityUserFieldListByID]***********************************/

CREATE PROCEDURE [dbo].[GetActivityUserFieldListByID] 
	 @ActivityGroupName NVARCHAR(Max)
	,@IsEdit BIT = 0
	,@ActivityId bigint=0
AS
BEGIN
	DECLARE @oldFieldCount AS INT = 0

	IF (@IsEdit = 0)
	BEGIN
		SELECT FieldId
			,FieldType
			,FieldName
			,Description
			,IsMandatory
			,DisplayOrder
			,ItemList
			,CreatedDate
			,UpdatedDate
			,CreatedBy
			,UpdatedBy
			,cast(0 AS BIT) AS IsCustomField
		FROM [tblCRMActivityGroupUserFields]
		WHERE ActivityGroupName = @ActivityGroupName
	END
	ELSE
	BEGIN
		SET @oldFieldCount = (
				SELECT Count(*)
				FROM [tblCRMUserActivityFields]
				WHERE ActivityID = @ActivityId
					AND ActivityGroupName = @ActivityGroupName
				)

		IF (@oldFieldCount >= 1)
		BEGIN
			SELECT FieldId
				,ActivityID
				,FieldType
				,FieldName
				,Description
				,IsMandatory
				,DisplayOrder
				,ItemList
				,CreatedDate
				,UpdatedDate
				,CreatedBy
				,UpdatedBy
				,Value
				,IsCustomField
			FROM [tblCRMUserActivityFields]
			WHERE ActivityID = @ActivityID
				AND ActivityGroupName = @ActivityGroupName
		END
		ELSE
		BEGIN
			SELECT FieldId
				,FieldType
				,FieldName
				,Description
				,IsMandatory
				,DisplayOrder
				,ItemList
				,CreatedDate
				,UpdatedDate
				,CreatedBy
				,UpdatedBy
				,cast(0 AS BIT) AS IsCustomField
			FROM [tblCRMActivityGroupUserFields]
			WHERE ActivityGroupName = @ActivityGroupName
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetActivityVendorContactList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetActivityCustomerContactList] (CRM)**********/


/********* Start [GetActivityVendorContactList] (CRM)**********/

Create Procedure [dbo].[GetActivityVendorContactList]
@strVendName nvarchar(Max)
As
Begin

Select (strPhone +' (Phone)') AS Contacts from tblVendors where Ltrim(Rtrim(strPhone)) <>'' and Ltrim(Rtrim(strPhone)) is not null and strVendName=@strVendName
Union ALL
Select (strCellPhone +' (CellPhone)') AS Contacts  from tblVendors where Ltrim(Rtrim(strCellPhone)) <>'' and Ltrim(Rtrim(strCellPhone)) is not null and strVendName=@strVendName
Union ALL
Select (strFax +' (Fax)') AS Contacts  from tblVendors where Ltrim(Rtrim(strFax)) <>'' and Ltrim(Rtrim(strFax)) is not null and strVendName=@strVendName

End
GO
/****** Object:  StoredProcedure [dbo].[GetAdvancePaymentTenderTypesForLayBy]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	Create PROCEDURE [dbo].[GetAdvancePaymentTenderTypesForLayBy]
(
 @LaybyOrder NVARCHAR(100)
)
AS
BEGIN
SELECT strPaidBy as Name,intBankAcct as GLNumber,decAmount as MethodAmount FROM tblCustPay WHERE lngCustPayID in (select lngCustPayID from tblCustTransDT where lngCustTrID in (select lngCustTrID from tblCustTrans where strOrdDocID = @LaybyOrder))
END
GO
/****** Object:  StoredProcedure [dbo].[GetAdvancePaymentValue]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

Create PROCEDURE [dbo].[GetAdvancePaymentValue]
(  
 @LaybyOrder NVARCHAR(100)  
)  
AS  
BEGIN  
SELECT ISNULL(SUM(DTL.decAmount), 0) AS AdvancePayment 
FROM tblCustTrans HDR 
INNER JOIN tblCustTransDT DTL ON HDR.lngCustTrID = DTL.lngCustTrID 
INNER JOIN tblCustPay PAY ON DTL.lngCustPayID = PAY.lngCustPayID 
WHERE (HDR.strOrdDocID = @LaybyOrder)
END  
GO
/****** Object:  StoredProcedure [dbo].[GetAdvanceSearchData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetAdvanceSearchData]
    (              
      @ModuleType INT = NULL ,              
      @PurchaseType INT = NULL ,              
      @SalesType INT = NULL ,              
      @SelectedIndexDocumentShort INT = NULL ,              
      @FieldName NVARCHAR(MAX) = NULL ,              
      @SearchText NVARCHAR(MAX) = NULL ,              
      @StartDate DATETIME = NULL,              
      @EndDate DATETIME = NULL,              
      @PageIndex int = 1,              
      @PageSize int = 0,            
      @PutAwayCompleted BIT = NULL,    
      @UserName NVARCHAR(20) = NULL,
      @FromDAModule BIT = NULL,
	  @CustName NVARCHAR(100) = NULL,
	  @PickedCustName NVARCHAR(100) = NULL,	
	  @SortType INT = NULL,
	  @SelectedQuote INT = NULL,
	  @IsBookmark BIT = NULL,
	  @IsCriteriaWorkflow BIT = NULL,
	  @IsARCreateReturnIcon BIT = NULL,
	  @Location NVARCHAR(20) = NULL,
	  @Department INT = NULL,
	  @DeliveryRouteID NVARCHAR(100) = NULL,
	  @isWorkShop BIT = NULL,
	  @SystemDate DATETIME = NULL --Mobile Parameter
	  ,@IsBPToolsMode AS BIT = 0
    )              
AS              
BEGIN              
 SET NOCOUNT ON;              
               
 DECLARE @TotalRows INT = 0              
    DECLARE @TotalPages INT = 0              
    DECLARE @Sql nvarchar(MAX)              
    DECLARE @QuerySelect nvarchar(MAX)              
    DECLARE @QueryFrom nvarchar(MAX)              
    DECLARE @Where nvarchar(MAX)              
    IF ISNULL(@StartDate,'') = ''              
     SELECT @StartDate = 'January 1, 1753'              
    IF ISNULL(@EndDate,'') = ''              
     SELECT @EndDate = 'December 12, 9999'              
    IF ISNULL(@SelectedIndexDocumentShort,0) = 0              
	BEGIN              
		SET @SelectedIndexDocumentShort = 0              
	END              
	DECLARE @StartRowIndex INT,@EndRowIndex INT;              
	DECLARE @TotalRecords NVARCHAR(MAX)  
	DECLARE @SysStartDate DATETIME = NULL --For Mobile
	DECLARE @SysEndDate DATETIME = NULL --For Mobile
	IF ISNULL(@SystemDate,'') != ''
	BEGIN	
		SELECT @SysStartDate = dateadd(day,datediff(day,1,GETDATE()),0)
		SELECT @SysEndDate = dateadd(day,datediff(day,0,GETDATE()),0)	
	END
                  
 IF @ModuleType = 1 --Sales              
        BEGIN              
   IF @SalesType = 3  --Sales Invoices            
      BEGIN   
	  
     SET @QuerySelect = 'SELECT tblInvoiceDoc.strCustName AS CustomerName, tblCustomers.strCustDesc AS CustomerDescription, tblInvoiceDoc.dteJournalDate AS JournalDate, tblInvoiceDoc.strInvDocID AS InvDocID, tblInvoiceDoc.strReference AS Reference,              
     CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS Total, 
	 tblInvoiceDoc.strField1 AS Field1, tblInvoiceDoc.strField2 AS Field2, tblInvoiceDoc.strField3 AS Field3, tblInvoiceDoc.strField4 AS Field4, tblInvoiceDoc.strField5 AS Field5, tblInvoiceDoc.strField6 AS Field6,              
     tblInvoiceDoc.strField7 AS Field7, tblInvoiceDoc.strField8 AS Field8, tblInvoiceDoc.strField9 AS Field9, tblInvoiceDoc.strField10 AS Field10, tblInvoiceDoc.strField11 AS Field11, tblInvoiceDoc.strField12 AS Field12,               
     tblInvoiceDoc.strCurrency AS Currency,
	 ROW_NUMBER() OVER(ORDER BY tblInvoiceDoc.dteJournalDate DESC) AS RowNumber '   
	 SET @QueryFrom = ' FROM tblInvoiceDoc LEFT JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName '
	 SET @Where = ' WHERE 1 = 1              
     AND (ISNULL(@SearchText,'''') = '''' 	 
     OR (tblCustomers.strCustName LIKE ''%''+ @SearchText +''%'' AND (@FieldName=''strCustName'' OR ISNULL(@FieldName,'''') = ''''))         
	 OR (tblCustomers.strCustDesc LIKE ''%''+ @SearchText +''%'' AND (@FieldName=''strCustDesc'' OR ISNULL(@FieldName,'''') = ''''))         
	 OR (tblInvoiceDoc.strInvDocID LIKE ''%''+ @SearchText +''%'' AND (@FieldName=''strInvDocID'' OR ISNULL(@FieldName,'''') = ''''))        
     OR (tblInvoiceDoc.strReference LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strReference'')              
     OR (tblInvoiceDoc.strField1 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField1'')              
     OR (tblInvoiceDoc.strField2 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField2'')              
     OR (tblInvoiceDoc.strField3 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField3'')              
     OR (tblInvoiceDoc.strField4 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField4'')              
     OR (tblInvoiceDoc.strField5 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField5'')              
     OR (tblInvoiceDoc.strField6 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField6'')              
     OR (tblInvoiceDoc.strField7 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField7'')              
     OR (tblInvoiceDoc.strField8 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField8'')              
     OR (tblInvoiceDoc.strField9 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField9'')              
     OR (tblInvoiceDoc.strField10 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField10'')              
     OR (tblInvoiceDoc.strField11 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField11'')              
     OR (tblInvoiceDoc.strField12 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField12'')              
        ) AND tblInvoiceDoc.dteJournalDate BETWEEN @StartDate AND @EndDate '  
	
	IF(@UserName is not NULL)              
     BEGIN               
      SET @Where = @Where + ' AND tblInvoiceDoc.strUserName = '''+@UserName+''''      
     END
	IF @SystemDate is not null
	BEGIN		
		SET @Where = @Where + ' AND tblInvoiceDoc.dteSystemDate BETWEEN @SysStartDate AND @SysEndDate'      
	END
    SET @Sql = ';WITH CTE AS('+@QuerySelect+' '+ @QueryFrom +' '+@Where+')'    
    
    IF(@PageSize = 0)    
     BEGIN    
      SET @Sql = @Sql + ' SELECT * FROM CTE;'    
     END    
    ELSE    
     BEGIN    
        
     SET @StartRowIndex = ((@PageIndex - 1) * @PageSize) + 1;    
     SET @EndRowIndex = @StartRowIndex + @PageSize - 1;    
        
     SET @TotalRecords = 'SELECT @tempCount = COUNT (1) '+' '+@QueryFrom + ' '+@Where    
     
    
     exec sp_executesql @TotalRecords,     
        N'@ModuleType INT, @PurchaseType INT,@SalesType INT,@SelectedIndexDocumentShort INT,@FieldName NVARCHAR(MAX),@SearchText NVARCHAR(MAX),@StartDate DATETIME,@EndDate DATETIME,@SysStartDate DATETIME,@SysEndDate DATETIME, @tempCount int out',     
        @ModuleType=@ModuleType,@PurchaseType=@PurchaseType,@SalesType=@SalesType,@SelectedIndexDocumentShort=@SelectedIndexDocumentShort,@FieldName=@FieldName,@SearchText=@SearchText    
        ,@StartDate=@StartDate,@EndDate=@EndDate,@SysStartDate=@SysStartDate,@SysEndDate=@SysEndDate,@tempCount=@TotalRows OUTPUT    
    
     SELECT @TotalPages = CEILING(@TotalRows / @PageSize)    
     
     IF @TotalRows > @TotalPages * @PageSize    
      SET @TotalPages = @TotalPages + 1    
      SET @Sql = @Sql + ' SELECT *,'+ CAST(@TotalRows AS VARCHAR) + ' AS TotalRows,'+CAST(@TotalPages AS VARCHAR)+' AS TotalPages FROM CTE WHERE RowNumber BETWEEN ' + cast(@StartRowIndex AS VARCHAR) + ' AND ' + cast(@EndRowIndex AS VARCHAR) + ' ;'    
     END    
          print @Sql
     exec sp_executesql @Sql,     
       N'@ModuleType INT, @PurchaseType INT,@SalesType INT,@SelectedIndexDocumentShort INT,@FieldName NVARCHAR(MAX),@SearchText NVARCHAR(MAX),@StartDate DATETIME,@EndDate DATETIME,@SysStartDate DATETIME,@SysEndDate DATETIME',     
       @ModuleType=@ModuleType,@PurchaseType=@PurchaseType,@SalesType=@SalesType,@SelectedIndexDocumentShort=@SelectedIndexDocumentShort,@FieldName=@FieldName,@SearchText=@SearchText    
       ,@StartDate=@StartDate,@EndDate=@EndDate,@SysStartDate=@SysStartDate,@SysEndDate=@SysEndDate          
   END             
   IF @SalesType = 1  --Sales Quotes          
     BEGIN    
    SET @QuerySelect = 'SELECT tblOrderDoc.strCustName AS CustomerName, tblCustomers.strCustDesc AS CustomerDescription, tblOrderDoc.dteJournalDate AS JournalDate, tblOrderDoc.strOrdDocID AS OrdDocID, tblOrderDoc.strReference AS Reference,    
    CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END AS Total, tblOrderDoc.strField1 AS Field1, tblOrderDoc.strField2 AS Field2, tblOrderDoc.strField3 AS Field3,    
    tblOrderDoc.strField4 AS Field4, tblOrderDoc.strField5 AS Field5, tblOrderDoc.strField6 AS Field6, tblOrderDoc.strField7 AS Field7, tblOrderDoc.strField8 AS Field8, tblOrderDoc.strField9 AS Field9, tblOrderDoc.strField10 AS Field10,    
    tblOrderDoc.strField11 AS Field11, tblOrderDoc.strField12 AS Field12, tblOrderDoc.strCurrency AS Currency,    
    ROW_NUMBER() OVER(ORDER BY tblOrderDoc.dteJournalDate DESC) AS RowNumber,    
    tblOrderDoc.strUserName AS UserName '    
    SET @QueryFrom = ' FROM tblOrderDoc LEFT JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName '    
    SET @Where = ' WHERE tblOrderDoc.intDocType = ( CASE WHEN @SalesType = 2 THEN 1 ELSE 2 END)    
    AND tblOrderDoc.bitCleared = ( CASE when @SelectedIndexDocumentShort = 0 then 0 else tblOrderDoc.bitCleared end)    
    AND (ISNULL(@SearchText,'''') = '''' OR ((tblOrderDoc.strCustName LIKE ''%''+ @SearchText +''%'' AND (@FieldName=''strCustName'' OR ISNULL(@FieldName,'''') = '''')) 
     OR (tblCustomers.strCustDesc LIKE ''%''+ @SearchText +''%''      AND (@FieldName=''strCustName'' OR ISNULL(@FieldName,'''') = '''')))              
     OR (tblOrderDoc.strOrdDocID LIKE ''%''+ @SearchText +''%'' AND (@FieldName=''strOrdDocID'' OR ISNULL(@FieldName,'''') = ''''))              
     OR (tblOrderDoc.strReference LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strReference'')    
     OR (tblOrderDoc.strField1 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField1'')    
     OR (tblOrderDoc.strField2 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField2'')    
     OR (tblOrderDoc.strField3 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField3'')    
     OR (tblOrderDoc.strField4 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField4'')    
     OR (tblOrderDoc.strField5 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField5'')    
     OR (tblOrderDoc.strField6 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField6'')    
     OR (tblOrderDoc.strField7 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField7'')    
     OR (tblOrderDoc.strField8 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField8'')    
     OR (tblOrderDoc.strField9 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField9'')    
     OR (tblOrderDoc.strField10 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField10'')    
     OR (tblOrderDoc.strField11 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField11'')    
     OR (tblOrderDoc.strField12 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField12'')    
        ) AND tblOrderDoc.dteJournalDate BETWEEN @StartDate AND @EndDate'    
            
    IF(@UserName is not NULL)              
     BEGIN               
      SET @Where = @Where + ' AND tblOrderDoc.strUserName = '''+@UserName+''''      
     END
	IF @SystemDate is not null
	BEGIN		
		SET @Where = @Where + ' AND tblOrderDoc.dteSystemDate BETWEEN @SysStartDate AND @SysEndDate'      
	END
    SET @Sql = ';WITH CTE AS('+@QuerySelect+' '+ @QueryFrom +' '+@Where+')'    
    
    IF(@PageSize = 0)    
     BEGIN    
      SET @Sql = @Sql + ' SELECT * FROM CTE;'    
     END    
    ELSE    
     BEGIN    
        
     SET @StartRowIndex = ((@PageIndex - 1) * @PageSize) + 1;    
     SET @EndRowIndex = @StartRowIndex + @PageSize - 1;    
        
     SET @TotalRecords = 'SELECT @tempCount = COUNT (1) '+' '+@QueryFrom + ' '+@Where    
     
    
     exec sp_executesql @TotalRecords,     
        N'@ModuleType INT, @PurchaseType INT,@SalesType INT,@SelectedIndexDocumentShort INT,@FieldName NVARCHAR(MAX),@SearchText NVARCHAR(MAX),@StartDate DATETIME,@EndDate DATETIME,@SysStartDate DATETIME,@SysEndDate DATETIME, @tempCount int out',     
        @ModuleType=@ModuleType,@PurchaseType=@PurchaseType,@SalesType=@SalesType,@SelectedIndexDocumentShort=@SelectedIndexDocumentShort,@FieldName=@FieldName,@SearchText=@SearchText    
        ,@StartDate=@StartDate,@EndDate=@EndDate,@SysStartDate=@SysStartDate,@SysEndDate=@SysEndDate,@tempCount=@TotalRows OUTPUT    
    
     SELECT @TotalPages = CEILING(@TotalRows / @PageSize)    
     
     IF @TotalRows > @TotalPages * @PageSize    
      SET @TotalPages = @TotalPages + 1    
      SET @Sql = @Sql + ' SELECT *,'+ CAST(@TotalRows AS VARCHAR) + ' AS TotalRows,'+CAST(@TotalPages AS VARCHAR)+' AS TotalPages FROM CTE WHERE RowNumber BETWEEN ' + cast(@StartRowIndex AS VARCHAR) + ' AND ' + cast(@EndRowIndex AS VARCHAR) + ' ;'    
     END    

     exec sp_executesql @Sql,     
       N'@ModuleType INT, @PurchaseType INT,@SalesType INT,@SelectedIndexDocumentShort INT,@FieldName NVARCHAR(MAX),@SearchText NVARCHAR(MAX),@StartDate DATETIME,@EndDate DATETIME,@SysStartDate DATETIME,@SysEndDate DATETIME',     
       @ModuleType=@ModuleType,@PurchaseType=@PurchaseType,@SalesType=@SalesType,@SelectedIndexDocumentShort=@SelectedIndexDocumentShort,@FieldName=@FieldName,@SearchText=@SearchText    
       ,@StartDate=@StartDate,@EndDate=@EndDate,@SysStartDate=@SysStartDate,@SysEndDate=@SysEndDate    
      END             
          
   IF @SalesType = 2  --Sales Orders             
      BEGIN                           
              
    SET @QuerySelect = 'SELECT tblOrderDoc.strCustName AS CustomerName, tblCustomers.strCustDesc AS CustomerDescription, tblOrderDoc.dteJournalDate AS JournalDate, tblOrderDoc.strOrdDocID AS OrdDocID, tblOrderDoc.strReference AS Reference,              
    CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END AS Total, tblOrderDoc.strField1 AS Field1, tblOrderDoc.strField2 AS Field2, tblOrderDoc.strField3 AS Field3,              
    tblOrderDoc.strField4 AS Field4, tblOrderDoc.strField5 AS Field5, tblOrderDoc.strField6 AS Field6, tblOrderDoc.strField7 AS Field7, tblOrderDoc.strField8 AS Field8, tblOrderDoc.strField9 AS Field9, tblOrderDoc.strField10 AS Field10,              
    tblOrderDoc.strField11 AS Field11, tblOrderDoc.strField12 AS Field12, tblOrderDoc.strCurrency AS Currency,ROW_NUMBER() OVER(ORDER BY tblOrderDoc.dteJournalDate DESC) AS RowNumber,tblOrderDoc.strUserName AS UserName'              
    SET @QueryFrom = 'FROM tblOrderDoc LEFT JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName'                               
    SET @Where = 'WHERE tblOrderDoc.intDocType = ( CASE WHEN @SalesType = 2 THEN 1 ELSE 2 END)              
    AND tblOrderDoc.bitCleared = ( CASE when @SelectedIndexDocumentShort = 0 then 0 else tblOrderDoc.bitCleared end)              
    AND (ISNULL(@SearchText,'''') = '''' OR ((tblOrderDoc.strCustName LIKE ''%''+ @SearchText +''%'' AND (@FieldName=''strCustName'' OR ISNULL(@FieldName,'''') = '''')) OR (tblCustomers.strCustDesc LIKE ''%''+ @SearchText +''%''     
 AND (@FieldName=''strCustName'' OR ISNULL(@FieldName,'''') = '''')))              
     OR (tblOrderDoc.strOrdDocID LIKE ''%''+ @SearchText +''%'' AND (@FieldName=''strOrdDocID'' OR ISNULL(@FieldName,'''') = ''''))              
     OR (tblOrderDoc.strReference LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strReference'')              
     OR (tblOrderDoc.strField1 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField1'')              
     OR (tblOrderDoc.strField2 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField2'')              
     OR (tblOrderDoc.strField3 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField3'')              
     OR (tblOrderDoc.strField4 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField4'')              
     OR (tblOrderDoc.strField5 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField5'')              
     OR (tblOrderDoc.strField6 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField6'')              
     OR (tblOrderDoc.strField7 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField7'')              
     OR (tblOrderDoc.strField8 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField8'')              
     OR (tblOrderDoc.strField9 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField9'')              
     OR (tblOrderDoc.strField10 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField10'')              
     OR (tblOrderDoc.strField11 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField11'')              
     OR (tblOrderDoc.strField12 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField12'')              
     ) AND tblOrderDoc.dteJournalDate BETWEEN @StartDate AND @EndDate'    
	IF(@UserName is not NULL and @FromDAModule = 0)              
    BEGIN               
		SET @Where = @Where + ' AND tblOrderDoc.strUserName = '''+@UserName+''''      
    END    
    IF @SystemDate is not null
	BEGIN		
		SET @Where = @Where + ' AND tblOrderDoc.dteSystemDate BETWEEN @SysStartDate AND @SysEndDate'      
	END                
    SET @Sql = ';WITH CTE AS('+@QuerySelect+' '+@QueryFrom +' '+@Where+')'              
              
    IF(@PageSize = 0)              
     BEGIN              
      SET @Sql = @Sql + ' SELECT * FROM CTE;'              
     END              
    ELSE              
     BEGIN              
                  
     SET @StartRowIndex = ((@PageIndex - 1) * @PageSize) + 1;              
     SET @EndRowIndex = @StartRowIndex + @PageSize - 1;              
                  
     SET @TotalRecords = 'SELECT @tempCount = COUNT (1) '+' '+@QueryFrom + ' '+@Where              
               
              
     exec sp_executesql @TotalRecords,               
        N'@ModuleType INT, @PurchaseType INT,@SalesType INT,@SelectedIndexDocumentShort INT,@FieldName NVARCHAR(MAX),@SearchText NVARCHAR(MAX),@StartDate DATETIME,@EndDate DATETIME,@SysStartDate DATETIME,@SysEndDate DATETIME, @tempCount int out',               
        @ModuleType=@ModuleType,@PurchaseType=@PurchaseType,@SalesType=@SalesType,@SelectedIndexDocumentShort=@SelectedIndexDocumentShort,@FieldName=@FieldName,@SearchText=@SearchText              
        ,@StartDate=@StartDate,@EndDate=@EndDate,@SysStartDate=@SysStartDate,@SysEndDate=@SysEndDate,@tempCount=@TotalRows OUTPUT              
              
     SELECT @TotalPages = CEILING(@TotalRows / @PageSize)              
               
     IF @TotalRows > @TotalPages * @PageSize              
      SET @TotalPages = @TotalPages + 1              
      SET @Sql = @Sql + ' SELECT *,'+ CAST(@TotalRows AS VARCHAR) + ' AS TotalRows,'+CAST(@TotalPages AS VARCHAR)+' AS TotalPages FROM CTE WHERE RowNumber BETWEEN ' + cast(@StartRowIndex AS VARCHAR) + ' AND ' + cast(@EndRowIndex AS VARCHAR) + ' ;'               
     END              
     --print @sql    
     exec sp_executesql @Sql,               
       N'@ModuleType INT, @PurchaseType INT,@SalesType INT,@SelectedIndexDocumentShort INT,@FieldName NVARCHAR(MAX),@SearchText NVARCHAR(MAX),@StartDate DATETIME,@EndDate DATETIME,@SysStartDate DATETIME,@SysEndDate DATETIME',               
       @ModuleType=@ModuleType,@PurchaseType=@PurchaseType,@SalesType=@SalesType,@SelectedIndexDocumentShort=@SelectedIndexDocumentShort,@FieldName=@FieldName,@SearchText=@SearchText              
       ,@StartDate=@StartDate,@EndDate=@EndDate,@SysStartDate=@SysStartDate,@SysEndDate=@SysEndDate              
    END              
   IF @SalesType = 5  --Free-hand Quotes            
      BEGIN              
		SET @QuerySelect = 'SELECT tblOrderDocQ.strSoldTo AS SoldTo, tblOrderDocQ.strShipTo AS ShipTo,tblOrderDocQ.strCustName AS CustomerName, tblOrderDocQ.strSoldTo AS CustomerDescription, tblOrderDocQ.dteJournalDate AS JournalDate, tblOrderDocQ.strOrdDocID AS OrdDocID, tblOrderDocQ.strReference AS Reference,              
		CASE tblOrderDocQ.bitIsForeign WHEN 0 THEN tblOrderDocQ.decTotal ELSE tblOrderDocQ.decTotalF END AS Total, tblOrderDocQ.strField1 AS Field1, tblOrderDocQ.strField2 AS Field2, tblOrderDocQ.strField3 AS Field3,              
		tblOrderDocQ.strField4 AS Field4, tblOrderDocQ.strField5 AS Field5, tblOrderDocQ.strField6 AS Field6, tblOrderDocQ.strField7 AS Field7, tblOrderDocQ.strField8 AS Field8, tblOrderDocQ.strField9 AS Field9, tblOrderDocQ.strField10 AS Field10,           
        tblOrderDocQ.strField11 AS Field11, tblOrderDocQ.strField12 AS Field12, tblOrderDocQ.strCurrency AS Currency,
		ROW_NUMBER() OVER(ORDER BY tblOrderDocQ.dteJournalDate DESC) AS RowNumber,tblOrderDocQ.strUserName AS UserName'
		SET @QueryFrom = 'FROM tblOrderDocQ LEFT JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName '            
		SET @Where = 'WHERE 1=1               
        AND tblOrderDocQ.bitCleared = ( CASE when @SelectedIndexDocumentShort = 0 then 0 else tblOrderDocQ.bitCleared end)              
        AND (ISNULL(@SearchText,'''') = '''' 
	    OR ((tblOrderDocQ.strSoldTo LIKE ''%''+ @SearchText +''%'' AND (@FieldName=''strSoldTo'' OR ISNULL(@FieldName,'''') = '''' )) 
	    OR (tblOrderDocQ.strShipTo LIKE ''%''+ @SearchText +''%'' AND (@FieldName=''strShipTo'' OR ISNULL(@FieldName,'''') = '''' )))              
        OR (tblOrderDocQ.strOrdDocID LIKE ''%''+ @SearchText +''%'' AND (@FieldName=''strOrdDocID'' OR ISNULL(@FieldName,'''') = ''''))              
        OR (tblOrderDocQ.strReference LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strReference'')              
        OR (tblOrderDocQ.strField1 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField1'')              
        OR (tblOrderDocQ.strField2 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField2'')              
        OR (tblOrderDocQ.strField3 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField3'')              
        OR (tblOrderDocQ.strField4 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField4'')              
        OR (tblOrderDocQ.strField5 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField5'')              
        OR (tblOrderDocQ.strField6 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField6'')              
        OR (tblOrderDocQ.strField7 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField7'')              
        OR (tblOrderDocQ.strField8 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField8'')              
        OR (tblOrderDocQ.strField9 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField9'')              
        OR (tblOrderDocQ.strField10 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField10'')              
        OR (tblOrderDocQ.strField11 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField11'')              
        OR (tblOrderDocQ.strField12 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField12''))
	    AND tblOrderDocQ.dteJournalDate BETWEEN @StartDate AND @EndDate'

		IF(@UserName is not NULL and @FromDAModule = 0)              
    BEGIN               
		SET @Where = @Where + ' AND tblOrderDocQ.strUserName = '''+@UserName+''''      
    END    
    IF @SystemDate is not null
	BEGIN		
		SET @Where = @Where + ' AND tblOrderDocQ.dteSystemDate BETWEEN @SysStartDate AND @SysEndDate'      
	END                
    SET @Sql = ';WITH CTE AS('+@QuerySelect+' '+@QueryFrom +' '+@Where+')'              
              
    IF(@PageSize = 0)              
     BEGIN              
      SET @Sql = @Sql + ' SELECT * FROM CTE;'              
     END              
    ELSE              
     BEGIN              
                  
     SET @StartRowIndex = ((@PageIndex - 1) * @PageSize) + 1;              
     SET @EndRowIndex = @StartRowIndex + @PageSize - 1;              
                  
     SET @TotalRecords = 'SELECT @tempCount = COUNT (1) '+' '+@QueryFrom + ' '+@Where              
               
              
     exec sp_executesql @TotalRecords,               
        N'@ModuleType INT, @PurchaseType INT,@SalesType INT,@SelectedIndexDocumentShort INT,@FieldName NVARCHAR(MAX),@SearchText NVARCHAR(MAX),@StartDate DATETIME,@EndDate DATETIME,@SysStartDate DATETIME,@SysEndDate DATETIME, @tempCount int out',               
        @ModuleType=@ModuleType,@PurchaseType=@PurchaseType,@SalesType=@SalesType,@SelectedIndexDocumentShort=@SelectedIndexDocumentShort,@FieldName=@FieldName,@SearchText=@SearchText              
        ,@StartDate=@StartDate,@EndDate=@EndDate,@SysStartDate=@SysStartDate,@SysEndDate=@SysEndDate,@tempCount=@TotalRows OUTPUT              
              
     SELECT @TotalPages = CEILING(@TotalRows / @PageSize)              
               
     IF @TotalRows > @TotalPages * @PageSize              
      SET @TotalPages = @TotalPages + 1              
      SET @Sql = @Sql + ' SELECT *,'+ CAST(@TotalRows AS VARCHAR) + ' AS TotalRows,'+CAST(@TotalPages AS VARCHAR)+' AS TotalPages FROM CTE WHERE RowNumber BETWEEN ' + cast(@StartRowIndex AS VARCHAR) + ' AND ' + cast(@EndRowIndex AS VARCHAR) + ' ;'               
     END              
     --print @sql    
     exec sp_executesql @Sql,               
       N'@ModuleType INT, @PurchaseType INT,@SalesType INT,@SelectedIndexDocumentShort INT,@FieldName NVARCHAR(MAX),@SearchText NVARCHAR(MAX),@StartDate DATETIME,@EndDate DATETIME,@SysStartDate DATETIME,@SysEndDate DATETIME',               
       @ModuleType=@ModuleType,@PurchaseType=@PurchaseType,@SalesType=@SalesType,@SelectedIndexDocumentShort=@SelectedIndexDocumentShort,@FieldName=@FieldName,@SearchText=@SearchText              
       ,@StartDate=@StartDate,@EndDate=@EndDate,@SysStartDate=@SysStartDate,@SysEndDate=@SysEndDate  
      END              
  if(@SalesType = 0) -- Contract Billing Invoice
  BEGIN
  SELECT tblContractBill.strCustName as CustomerName
			,tblCustomers.strCustDesc as CustomerDescription
			,tblContractBill.dteJournalDate as JournalDate
			,tblContractBill.strContDocID as OrdPDocID
			,tblContractBill.strReference as Reference
			,tblContractBill.decTotal as Total
			,tblContractBill.bitIsForeign as IsForeign
			,tblContractBill.strCurrency as Currency
			,(
				CASE tblContractBill.bitIsForeign
					WHEN 1
						THEN Cast(tblContractBill.decTotalF as nvarchar(MAX))
					ELSE Cast(tblContractBill.decTotal as nvarchar(MAX))
					END
				) AS Amount
		FROM tblContractBill
		INNER JOIN tblCustomers ON tblContractBill.strCustName = tblCustomers.strCustName
		WHERE (
				@IsARCreateReturnIcon = 0
				OR tblContractBill.strContDocID NOT LIKE 'CN%'
				)
			AND (
				CONVERT(DATE, tblContractBill.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				LEN(@CustName) = 0
				OR tblContractBill.strCustName = @CustName
				)
			AND (
				LEN(@PickedCustName) = 0
				OR tblCustomers.strCustName = @PickedCustName
				)
			AND (
				tblContractBill.strCustName LIKE +'%'+@SearchText +'%'
				OR tblCustomers.strCustDesc LIKE '%'+ @SearchText + '%'
				OR tblContractBill.dteJournalDate LIKE '%'+ @SearchText+'%'
				OR tblContractBill.strContDocID LIKE '%'+ @SearchText +'%'
				OR tblContractBill.strReference LIKE '%'+ @SearchText+'%'
				OR CASE 
					WHEN tblContractBill.bitIsForeign = 1
						THEN tblContractBill.decTotalF
					ELSE tblContractBill.decTotal
					END LIKE '%'+@SearchText+'%'
				OR tblContractBill.strCurrency LIKE '%'+@SearchText+'%'
				)
			AND (
				@IsBPToolsMode = 1
				OR strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
  END
  END   
 ELSE              
 BEGIN              
  --PurchaseInvoice = 0              
        --PurchaseOrder = 1              
        --Requisition = 2              
        --PurchaseReturns = 3              
   IF @PurchaseType = 2              
   BEGIN              
    SELECT tblInvoiceDocP.strVendName AS VendorName, tblVendors.strVendDesc AS VendorDescription, tblInvoiceDocP.dteJournalDate AS JournalDate, tblInvoiceDocP.strInvPDocID AS InvPDocID, tblInvoiceDocP.strReference AS Reference,              
    CASE tblInvoiceDocP.bitIsForeign WHEN 0 THEN tblInvoiceDocP.decTotal ELSE tblInvoiceDocP.decTotalF END AS Total, tblInvoiceDocP.strField1 AS Field1, tblInvoiceDocP.strField2 AS Field2,              
    tblInvoiceDocP.strField3 AS Field3, tblInvoiceDocP.strField4 AS Field4, tblInvoiceDocP.strField5 AS Field5, tblInvoiceDocP.strField6 AS Field6, tblInvoiceDocP.strField7 AS Field7, tblInvoiceDocP.strField8 AS Field8,              
    tblInvoiceDocP.strField9 AS Field9, tblInvoiceDocP.strField10 AS Field10, tblInvoiceDocP.strField11 AS Field11, tblInvoiceDocP.strField12 AS Field12, tblInvoiceDocP.strCurrency AS Currency FROM tblInvoiceDocP LEFT JOIN tblVendors               
    ON tblInvoiceDocP.strVendName = tblVendors.strVendName WHERE 1 = 1              
    AND ( ((tblInvoiceDocP.strVendName LIKE '%'+ @SearchText +'%' AND @FieldName='strVendName') OR (tblVendors.strVendDesc LIKE '%'+ @SearchText +'%' AND @FieldName='strVendName'))              
     OR (tblInvoiceDocP.strInvPDocID LIKE '%'+ @SearchText +'%' AND @FieldName='strInvPDocID')              
     OR (tblInvoiceDocP.strReference LIKE '%'+ @SearchText +'%' AND @FieldName='strReference')              
    OR (tblInvoiceDocP.strField1 LIKE '%'+ @SearchText +'%' AND @FieldName='strField1')              
     OR (tblInvoiceDocP.strField2 LIKE '%'+ @SearchText +'%' AND @FieldName='strField2')              
     OR (tblInvoiceDocP.strField3 LIKE '%'+ @SearchText +'%' AND @FieldName='strField3')              
     OR (tblInvoiceDocP.strField4 LIKE '%'+ @SearchText +'%' AND @FieldName='strField4')              
     OR (tblInvoiceDocP.strField5 LIKE '%'+ @SearchText +'%' AND @FieldName='strField5')              
     OR (tblInvoiceDocP.strField6 LIKE '%'+ @SearchText +'%' AND @FieldName='strField6')              
     OR (tblInvoiceDocP.strField7 LIKE '%'+ @SearchText +'%' AND @FieldName='strField7')              
     OR (tblInvoiceDocP.strField8 LIKE '%'+ @SearchText +'%' AND @FieldName='strField8')              
     OR (tblInvoiceDocP.strField9 LIKE '%'+ @SearchText +'%' AND @FieldName='strField9')              
     OR (tblInvoiceDocP.strField10 LIKE '%'+ @SearchText +'%' AND @FieldName='strField10')              
     OR (tblInvoiceDocP.strField11 LIKE '%'+ @SearchText +'%' AND @FieldName='strField11')              
     OR (tblInvoiceDocP.strField12 LIKE '%'+ @SearchText +'%' AND @FieldName='strField12')              
        ) AND tblInvoiceDocP.dteJournalDate BETWEEN @StartDate AND @EndDate              
   END               
   IF @PurchaseType = 1 OR @PurchaseType = 4  --1-PurchaseOrder              
   BEGIN              
    SET @QuerySelect = 'SELECT tblOrderDocP.strVendName AS VendorName, tblVendors.strVendDesc AS VendorDescription, tblOrderDocP.dteJournalDate AS JournalDate, tblOrderDocP.strOrdPDocID AS OrdPDocID, tblOrderDocP.strReference AS Reference,              
    CASE tblOrderDocP.bitIsForeign WHEN 0 THEN tblOrderDocP.decTotal ELSE tblOrderDocP.decTotalF END AS Total, tblOrderDocP.strField1 AS Field1, tblOrderDocP.strField2 AS Field2, tblOrderDocP.strField3 AS Field3,              
    tblOrderDocP.strField4 AS Field4, tblOrderDocP.strField5 AS Field5, tblOrderDocP.strField6 AS Field6, tblOrderDocP.strField7 AS Field7, tblOrderDocP.strField8 AS Field8, tblOrderDocP.strField9 AS Field9, tblOrderDocP.strField10 AS Field10,            
  
    tblOrderDocP.strField11 AS Field11, tblOrderDocP.strField12 AS Field12, tblOrderDocP.strCurrency AS Currency,ROW_NUMBER() OVER(ORDER BY tblOrderDocP.strOrdPDocID desc) AS RowNumber'              
    SET @QueryFrom = 'FROM tblOrderDocP LEFT JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName'                                                                 
    SET @Where = 'WHERE tblOrderDocP.intDocType = ( CASE WHEN @PurchaseType = 1 THEN 1 ELSE 2 END)              
    AND tblOrderDocP.bitCleared = ( CASE when @SelectedIndexDocumentShort = 0 then 0 else tblOrderDocP.bitCleared end)                
    AND (ISNULL(@SearchText,'''') = '''' OR ((tblOrderDocP.strVendName LIKE ''%''+ @SearchText +''%'' AND (@FieldName=''strVendName'' OR ISNULL(@FieldName,'''') = '''')) OR (tblVendors.strVendDesc LIKE ''%''+ @SearchText +''%'' AND     
     (@FieldName=''strVendName'' OR ISNULL(@FieldName,'''') = '''')))              
     OR (tblOrderDocP.strOrdPDocID LIKE ''%''+ @SearchText +''%'' AND (@FieldName=''strOrdPDocID'' OR ISNULL(@FieldName,'''') = ''''))              
     OR (tblOrderDocP.strReference LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strReference'')           
     OR (tblOrderDocP.strField1 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField1'')              
     OR (tblOrderDocP.strField2 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField2'')              
     OR (tblOrderDocP.strField3 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField3'')              
     OR (tblOrderDocP.strField4 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField4'')              
  OR (tblOrderDocP.strField5 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField5'')              
     OR (tblOrderDocP.strField6 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField6'')              
     OR (tblOrderDocP.strField7 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField7'')              
     OR (tblOrderDocP.strField8 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField8'')              
     OR (tblOrderDocP.strField9 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField9'')              
     OR (tblOrderDocP.strField10 LIKE''%''+ @SearchText +''%'' AND @FieldName=''strField10'')              
     OR (tblOrderDocP.strField11 LIKE''%''+ @SearchText +''%'' AND @FieldName=''strField11'')              
     OR (tblOrderDocP.strField12 LIKE''%''+ @SearchText +''%'' AND @FieldName=''strField12'')              
        ) AND tblOrderDocP.dteJournalDate BETWEEN @StartDate AND @EndDate'              
   SET @Sql = ';WITH CTE AS('+@QuerySelect+' '+@QueryFrom +' '+@Where+')'              
              
IF(@PageSize = 0)              
    BEGIN              
     SET @Sql = @Sql + ' SELECT * FROM CTE;'              
    END              
   ELSE              
    BEGIN                  
                  
    SET @StartRowIndex = ((@PageIndex - 1) * @PageSize) + 1;              
    SET @EndRowIndex = @StartRowIndex + @PageSize - 1;              
                  
    SET @TotalRecords = 'SELECT @tempCount = COUNT (1) '+' '+@QueryFrom + ' '+@Where              
               
              
    exec sp_executesql @TotalRecords,               
       N'@ModuleType INT, @PurchaseType INT,@SalesType INT,@SelectedIndexDocumentShort INT,@FieldName NVARCHAR(MAX),@SearchText NVARCHAR(MAX),@StartDate DATETIME,@EndDate DATETIME, @tempCount int out',               
       @ModuleType=@ModuleType,@PurchaseType=@PurchaseType,@SalesType=@SalesType,@SelectedIndexDocumentShort=@SelectedIndexDocumentShort,@FieldName=@FieldName,@SearchText=@SearchText              
       ,@StartDate=@StartDate,@EndDate=@EndDate,@tempCount=@TotalRows OUTPUT              
              
    SET @TotalPages = CEILING(@TotalRows / @PageSize)              
               
    IF @TotalRows > @TotalPages * @PageSize              
     SET @TotalPages = @TotalPages + 1              
     SET @Sql = @Sql + ' SELECT *,'+ CAST(@TotalRows AS VARCHAR) + ' AS TotalRows,'+CAST(@TotalPages AS VARCHAR)+' AS TotalPages FROM CTE WHERE RowNumber BETWEEN ' + cast(@StartRowIndex AS VARCHAR) + ' AND ' + cast(@EndRowIndex AS VARCHAR) + ' ;'        
   
   
      
        
    END              
              
    exec sp_executesql @Sql,               
      N'@ModuleType INT, @PurchaseType INT,@SalesType INT,@SelectedIndexDocumentShort INT,@FieldName NVARCHAR(MAX),@SearchText NVARCHAR(MAX),@StartDate DATETIME,@EndDate DATETIME',               
      @ModuleType=@ModuleType,@PurchaseType=@PurchaseType,@SalesType=@SalesType,@SelectedIndexDocumentShort=@SelectedIndexDocumentShort,@FieldName=@FieldName,@SearchText=@SearchText              
      ,@StartDate=@StartDate,@EndDate=@EndDate              
                  
   END              
   IF @PurchaseType = 5  -- GRV            
   BEGIN            
 SET @QuerySelect = 'SELECT tblOrderDocPG.strVendName AS VendorName,             
  tblVendors.strVendDesc AS VendorDescription,             
  tblOrderDocPG.dteJournalDate AS JournalDate,             
  tblOrderDocPG.strOrdPGDocID AS OrdPGDocID,             
  tblOrderDocPG.strReference AS Reference,              
  CASE tblOrderDocPG.bitIsForeign WHEN 0 THEN tblOrderDocPG.decTotal ELSE tblOrderDocPG.decTotalF END AS Total,             
  tblOrderDocPG.strField1 AS Field1,             
  tblOrderDocPG.strField2 AS Field2,             
  tblOrderDocPG.strField3 AS Field3,              
  tblOrderDocPG.strField4 AS Field4,        
  tblOrderDocPG.strField5 AS Field5,             
  tblOrderDocPG.strField6 AS Field6,             
  tblOrderDocPG.strField7 AS Field7,             
  tblOrderDocPG.strField8 AS Field8,             
  tblOrderDocPG.strField9 AS Field9,             
  tblOrderDocPG.strField10 AS Field10,              
  tblOrderDocPG.strField11 AS Field11,             
  tblOrderDocPG.strField12 AS Field12,             
  tblOrderDocPG.strCurrency AS Currency,            
  ISNULL(tblOrderDocPG.bitPutAwayCompleted,0) AS PutAwayCompleted,              
  ROW_NUMBER() OVER(ORDER BY tblOrderDocPG.strOrdPGDocID desc) AS RowNumber'              
 SET @QueryFrom = 'FROM tblOrderDocPG LEFT JOIN tblVendors ON tblOrderDocPG.strVendName = tblVendors.strVendName'                                                                 
 SET @Where = 'WHERE tblOrderDocPG.bitCleared = ( CASE when @SelectedIndexDocumentShort = 0 then 0 else tblOrderDocPG.bitCleared end)                
  AND (ISNULL(@SearchText,'''') = '''' OR ((tblOrderDocPG.strVendName LIKE ''%''+ @SearchText +''%'' AND (@FieldName=''strVendName'' OR ISNULL(@FieldName,'''') = ''''))             
  OR (tblVendors.strVendDesc LIKE ''%''+ @SearchText +''%'' AND (@FieldName=''strVendName'' OR ISNULL(@FieldName,'''') = '''')))              
  OR (tblOrderDocPG.strOrdPGDocID LIKE ''%''+ @SearchText +''%'' AND (@FieldName=''strOrdPDocID'' OR ISNULL(@FieldName,'''') = ''''))              
  OR (tblOrderDocPG.strReference LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strReference'')              
  OR (tblOrderDocPG.strField1 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField1'')              
  OR (tblOrderDocPG.strField2 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField2'')              
  OR (tblOrderDocPG.strField3 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField3'')              
  OR (tblOrderDocPG.strField4 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField4'')              
  OR (tblOrderDocPG.strField5 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField5'')              
  OR (tblOrderDocPG.strField6 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField6'')              
  OR (tblOrderDocPG.strField7 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField7'')              
  OR (tblOrderDocPG.strField8 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField8'')              
  OR (tblOrderDocPG.strField9 LIKE ''%''+ @SearchText +''%'' AND @FieldName=''strField9'')              
  OR (tblOrderDocPG.strField10 LIKE''%''+ @SearchText +''%'' AND @FieldName=''strField10'')              
  OR (tblOrderDocPG.strField11 LIKE''%''+ @SearchText +''%'' AND @FieldName=''strField11'')              
  OR (tblOrderDocPG.strField12 LIKE''%''+ @SearchText +''%'' AND @FieldName=''strField12'')              
        ) AND tblOrderDocPG.dteJournalDate BETWEEN @StartDate AND @EndDate'              
            
 IF @PutAwayCompleted IS NOT NULL            
 BEGIN            
  SET @Where = @Where + ' AND ISNULL(tblOrderDocPG.bitPutAwayCompleted,0) = ' + CAST(@PutAwayCompleted AS VARCHAR)     
  SET @Where = @Where + ' AND 1 = ( SELECT COUNT(*) FROM ( SELECT COUNT(*) AS cnt FROM tblOrderDocPGDT DT INNER JOIN  tblOrderDocPGDTBin DTBin ON DT.strOrdPGDocID = DTBin.strOrdPGDocID       
       WHERE tblOrderDocPG.strOrdPGDocID = DT.strOrdPGDocID Group by strLoCation, lngBinID ) AS cnt ) '           
 END            
         
 SET @Sql = ';WITH CTE AS('+@QuerySelect+' '+@QueryFrom +' '+@Where+')'            
            
 IF(@PageSize = 0)              
    BEGIN              
  SET @Sql = @Sql + ' SELECT * FROM CTE;'              
    END              
 ELSE              
    BEGIN            
  SET @StartRowIndex = ((@PageIndex - 1) * @PageSize) + 1;              
  SET @EndRowIndex = @StartRowIndex + @PageSize - 1;              
                
  SET @TotalRecords = 'SELECT @tempCount = COUNT (1) '+' '+@QueryFrom + ' '+@Where              
               
              
  exec sp_executesql @TotalRecords,               
   N'@ModuleType INT, @PurchaseType INT,@SalesType INT,@SelectedIndexDocumentShort INT,@FieldName NVARCHAR(MAX),@SearchText NVARCHAR(MAX),@StartDate DATETIME,@EndDate DATETIME, @tempCount int out',               
   @ModuleType=@ModuleType,@PurchaseType=@PurchaseType,@SalesType=@SalesType,@SelectedIndexDocumentShort=@SelectedIndexDocumentShort,@FieldName=@FieldName,@SearchText=@SearchText              
   ,@StartDate=@StartDate,@EndDate=@EndDate,@tempCount=@TotalRows OUTPUT              
              
  SET @TotalPages = CEILING(@TotalRows / @PageSize)              
  
  IF @TotalRows > @TotalPages * @PageSize              
   SET @TotalPages = @TotalPages + 1              
  SET @Sql = @Sql + ' SELECT *,'+ CAST(@TotalRows AS VARCHAR) + ' AS TotalRows,'+CAST(@TotalPages AS VARCHAR)+' AS TotalPages FROM CTE WHERE RowNumber BETWEEN ' + cast(@StartRowIndex AS VARCHAR) + ' AND ' + cast(@EndRowIndex AS VARCHAR) + ' ;'            
  
     
    END              
 exec sp_executesql @Sql,               
  N'@ModuleType INT, @PurchaseType INT,@SalesType INT,@SelectedIndexDocumentShort INT,@FieldName NVARCHAR(MAX),@SearchText NVARCHAR(MAX),@StartDate DATETIME,@EndDate DATETIME',               
  @ModuleType=@ModuleType,@PurchaseType=@PurchaseType,@SalesType=@SalesType,@SelectedIndexDocumentShort=@SelectedIndexDocumentShort,@FieldName=@FieldName,@SearchText=@SearchText              
  ,@StartDate=@StartDate,@EndDate=@EndDate              
            
         END              
 END              
END
GO
/****** Object:  StoredProcedure [dbo].[GetAgeAnalysisData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetAgeAnalysisData] ***********/
CREATE PROCEDURE [dbo].[GetAgeAnalysisData]
(
	@IsParameterAvailable BIT,
	@CustomerNumber NVARCHAR(50),
	@TransType INT,
	@CurrentYearEnds DATETIME,
	@IncludePaidInDate DATETIME
)
AS
BEGIN
	-- Create temporary tables 
	CREATE TABLE #Temp_CustTrID_1 (
		lngCustTrID BIGINT NOT NULL
	)

	CREATE TABLE #Temp_CustTrID_2 (
		lngCustTrID BIGINT NOT NULL
	)

	INSERT INTO #Temp_CustTrID_1
	SELECT T2.lngCustTrID
	FROM tblCustTrans T1
	INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID
	WHERE T2.bitReversed = 0
	AND T2.dteJournalDate <= @IncludePaidInDate
	GROUP BY T2.lngCustTrID
	HAVING SUM(T2.decAmount) = 0 AND SUM(T2.decAmountF) = 0

	INSERT INTO #Temp_CustTrID_2
	SELECT T2.lngCustTrID
	FROM tblCustTrans T1
	INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID
	WHERE T2.bitReversed = 0
	AND T2.dteJournalDate <= @IncludePaidInDate
	AND T1.strOrdDocID IS NOT NULL
	AND T1.strInvDocID IS NULL
	AND T2.lngCustPayID IS NOT NULL
	GROUP BY T2.lngCustTrID
	HAVING SUM(T2.decAmount) = 0 AND SUM(T2.decAmountF) = 0

	IF @IsParameterAvailable = 1
	BEGIN

		SELECT ISNULL(T1.strInvDepNumber, '') AS InvDepNumber,
			   CASE ISNULL(T3.strSource, '')
					WHEN '' THEN CASE 
									WHEN T1.intTransType = @TransType THEN ISNULL(T1.strJEDocID, '')
									ELSE ISNULL(T1.strInvDocID, '')
								END
					ELSE T3.strSource
				END AS SalesOrder,
			   CONVERT(DATE, T2.dteJournalDate) AS JournalDate,
			   CONVERT(TINYINT, T1.intTransType) AS TransType,
			   CONVERT(TINYINT, T2.intTransType) AS TransTypeDT,
			   T2.decAmount AS InvAmount,
			   T2.decAmountF AS InvAmountF,
			   CONVERT(DATE, T1.dteDueDate) AS DueDate,
			   ISNULL(INV.strSalesName, '') AS SalesName,
			   ISNULL(CAST(INV.intDept AS NVARCHAR), '') AS Department
		FROM tblCustTrans T1
		INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID
		LEFT JOIN tblCustPay T3 ON T2.lngCustPayID = T3.lngCustPayID
		LEFT JOIN tblInvoiceDoc INV ON T1.strInvDocID = INV.strInvDocID
		WHERE T1.strCustName = @CustomerNumber
		AND T2.bitReversed = 0
		AND (T1.strOrdDocID IS NULL OR (T1.strInvDocID IS NOT NULL AND T1.strOrdDocID IS NOT NULL))
		AND T2.dteJournalDate <= @CurrentYearEnds
		AND T2.lngCustTrID NOT IN (SELECT lngCustTrID FROM #Temp_CustTrID_1)
		
		UNION
	
		SELECT ISNULL(T1.strInvDepNumber, '') AS InvDepNumber,
			   CASE ISNULL(T3.strSource, '')
					WHEN '' THEN CASE 
									WHEN T1.intTransType = @TransType THEN ISNULL(T1.strJEDocID, '')
									ELSE ISNULL(T1.strOrdDocID, '')
								END
					ELSE T3.strSource
				END AS SalesOrder,
			   CONVERT(DATE, T2.dteJournalDate) AS JournalDate,
			   CONVERT(TINYINT, T1.intTransType) AS TransType,
			   CONVERT(TINYINT, T2.intTransType) AS TransTypeDT,
			   T2.decAmount AS InvAmount,
			   T2.decAmountF AS InvAmountF,
			   CONVERT(DATE, T1.dteDueDate) AS DueDate,
			   ISNULL(INV.strSalesName, '') AS SalesName,
			   ISNULL(CAST(INV.intDept AS NVARCHAR), '') AS Department
		FROM tblCustTrans T1
		INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID
		LEFT JOIN tblCustPay T3 ON T2.lngCustPayID = T3.lngCustPayID
		LEFT JOIN tblInvoiceDoc INV ON T1.strInvDocID = INV.strInvDocID
		WHERE T1.strCustName = @CustomerNumber
		AND T2.bitReversed = 0
		AND T1.strOrdDocID IS NOT NULL
		AND T1.strInvDocID IS NULL
		AND T2.dteJournalDate <= @CurrentYearEnds
		AND T2.lngCustTrID NOT IN (SELECT lngCustTrID FROM #Temp_CustTrID_2)
		
		UNION

		SELECT '' AS InvDepNumber,
			   strOrdDocID AS SalesOrder,
			   CONVERT(DATE, dteJournalDate) AS JournalDate,
			   CONVERT(TINYINT, 1) AS TransType,
			   CONVERT(TINYINT, 1) AS TransTypeDT,
			   decTotal AS InvAmount,
			   decTotalF AS InvAmountF,
			   CONVERT(DATE, dteRequired) AS DueDate,
			   ISNULL(strSalesName, '') AS SalesName,
			   ISNULL(CAST(intDept AS NVARCHAR), '') AS Department
		FROM tblOrderDoc
		WHERE intDocType = 1
		AND bitCleared = 0
		AND tblOrderDoc.strCustName = @CustomerNumber
		AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)
		AND tblOrderDoc.dteJournalDate <= @CurrentYearEnds
		ORDER BY JournalDate, SalesOrder
	END
	ELSE
	BEGIN

		SELECT ISNULL(T1.strInvDepNumber, '') AS InvDepNumber,
			   CASE ISNULL(T3.strSource, '')
					WHEN '' THEN CASE 
									WHEN T1.intTransType = @TransType THEN ISNULL(T1.strJEDocID, '')
									ELSE ISNULL(T1.strInvDocID, '')
								END
					ELSE T3.strSource
				END AS SalesOrder,
			   CONVERT(DATE, T2.dteJournalDate) AS JournalDate,
			   CONVERT(TINYINT, T1.intTransType) AS TransType,
			   CONVERT(TINYINT, T2.intTransType) AS TransTypeDT,
			   T2.decAmount AS InvAmount,
			   T2.decAmountF AS InvAmountF,
			   CONVERT(DATE, T1.dteDueDate) AS DueDate
		FROM tblCustTrans T1
		INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID
		LEFT JOIN tblCustPay T3 ON T2.lngCustPayID = T3.lngCustPayID
		WHERE T1.strCustName = @CustomerNumber
		AND T2.bitReversed = 0
		AND (T1.strOrdDocID IS NULL OR (T1.strInvDocID IS NOT NULL AND T1.strOrdDocID IS NOT NULL))
		AND T2.dteJournalDate <= @CurrentYearEnds
		AND T2.lngCustTrID NOT IN (SELECT lngCustTrID FROM #Temp_CustTrID_1)
		
		UNION
		
		SELECT ISNULL(T1.strInvDepNumber, '') AS InvDepNumber,
			   CASE ISNULL(T3.strSource, '')
					WHEN '' THEN CASE 
									WHEN T1.intTransType = @TransType THEN ISNULL(T1.strJEDocID, '')
									ELSE ISNULL(T1.strOrdDocID, '')
								END
					ELSE T3.strSource
					END AS SalesOrder,
			   CONVERT(DATE, T2.dteJournalDate) AS JournalDate,
			   CONVERT(TINYINT, T1.intTransType) AS TransType,
			   CONVERT(TINYINT, T2.intTransType) AS TransTypeDT,
			   T2.decAmount AS InvAmount,
			   T2.decAmountF AS InvAmountF,
			   CONVERT(DATE, T1.dteDueDate) AS DueDate
		FROM tblCustTrans T1
		INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID
		LEFT JOIN tblCustPay T3 ON T2.lngCustPayID = T3.lngCustPayID
		WHERE T1.strCustName = @CustomerNumber
		AND T2.bitReversed = 0
		AND T1.strOrdDocID IS NOT NULL
		AND T1.strInvDocID IS NULL
		AND T2.lngCustPayID IS NOT NULL
		AND T2.dteJournalDate <= @CurrentYearEnds
		AND T2.lngCustTrID NOT IN (SELECT lngCustTrID FROM #Temp_CustTrID_2)
		ORDER BY JournalDate, SalesOrder
	END

	-- Drop temporary tables
	DROP TABLE #Temp_CustTrID_1
	DROP TABLE #Temp_CustTrID_2
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllAccountsAllCurrencyCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAllAccountsAllCurrencyCY]  
(  
@bitGLAccountAccess bit,  
@strUserName nvarchar(40)  
)  
AS  
BEGIN  
if @bitGLAccountAccess = 1  
BEGIN  
  
 SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
  
 ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName   
  
 FROM tblAccounts  (NOLOCK)  
  
 LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  
 WHERE (tblAccounts.bitInactive = 0)   
  
 AND (tblAccounts.intAccClass <> 28)   
  
 AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)  
  
 ORDER BY intAccType, intGLNumber  
  
END  
  
ELSE  
  
BEGIN  
  
 SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
  
 ISNULL(tblInv.strPartNumber, '') JournalCode, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0) AccountSecCount,   
  
 ISNULL(tblAccountsSec.strUserName,'') UserName  
  
 FROM tblAccounts  (NOLOCK)  
  
 LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  
 LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  
 WHERE (tblAccounts.bitInactive = 0)   
  
 AND (tblAccounts.intAccClass <> 28)   
  
 AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)  
  
 ORDER BY intAccType, tblAccounts.intGLNumber  
  
END  
  
RETURN  
  
END  
GO

/****** Object:  StoredProcedure [dbo].[GetAllAccountsAllCurrencyLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAllAccountsAllCurrencyLY](  
@bitGLAccountAccess bit,  
@strUserName nvarchar(40)  
)  
AS  
BEGIN  
if @bitGLAccountAccess = 1  
BEGIN  
 SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
 ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName   
 FROM tblAccountsLY  (NOLOCK)  
 LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
 WHERE (tblAccountsLY.bitInactive = 0)   
 AND (tblAccountsLY.intAccClass <> 28)   
 AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)  
 ORDER BY intAccType, intGLNumber  
END  
ELSE  
BEGIN  
  
 SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
 ISNULL(tblInv.strPartNumber, '') JournalCode, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) AccountSecCount,   
 ISNULL(tblAccountsSec.strUserName,'') UserName  
 FROM tblAccountsLY (NOLOCK)   
 LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
 LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
 WHERE (tblAccountsLY.bitInactive = 0)   
 AND (tblAccountsLY.intAccClass <> 28)   
 AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)  
 ORDER BY intAccType, tblAccountsLY.intGLNumber  
END  
  
RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetAllAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------
CREATE PROCEDURE [dbo].[GetAllAccountsCY]
AS
BEGIN
SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.strDesc 'Desc', ISNULL(tblAcctBudgets.decPeriod1,0) Period1, ISNULL(tblAcctBudgets.decPeriod2,0) Period2, 
ISNULL(tblAcctBudgets.decPeriod3,0) Period3, ISNULL(tblAcctBudgets.decPeriod4,0) Period4, ISNULL(tblAcctBudgets.decPeriod5,0) Period5, 
ISNULL(tblAcctBudgets.decPeriod6,0) Period6, ISNULL(tblAcctBudgets.decPeriod7,0) Period7, ISNULL(tblAcctBudgets.decPeriod8,0) Period8, 
ISNULL(tblAcctBudgets.decPeriod9,0) Period9, ISNULL(tblAcctBudgets.decPeriod10,0) Period10, ISNULL(tblAcctBudgets.decPeriod11,0) Period11, 
ISNULL(tblAcctBudgets.decPeriod12,0) Period12 
FROM tblAccounts 
LEFT OUTER JOIN tblAcctBudgets ON tblAccounts.intGLNumber = tblAcctBudgets.intGLNumber 
WHERE ((tblAccounts.intAccType = 4) OR (tblAccounts.intAccType = 5)) 
AND ((tblAccounts.intGroupCode = 1) OR (tblAccounts.intGroupCode = 2)) 
AND (tblAccounts.bitInactive = 0) 
ORDER BY tblAccounts.intGLNumber

RETURN
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllAccountsForAccountPickerCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAllAccountsForAccountPickerCY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 ,@isForeignCurrencyRevaluation BIT  
 ,@isGridAccount BIT  
 ,@GridAccountList VARCHAR(MAX)  
 ,@RevaluationDate DATETIME  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (tblAccounts.bitInactive = 0)  
    AND (tblAccounts.intAccClass <> 28)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (tblAccounts.bitInactive = 0)  
    AND (tblAccounts.intAccClass <> 28)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   IF @isForeignCurrencyRevaluation = 1  
   BEGIN  
    IF @isGridAccount = 0  
    BEGIN  
     SELECT DISTINCT tblAccounts.intGLNumber GLNumber  
      ,tblAccounts.intAccType AccountType  
      ,tblAccounts.strDesc 'Description'  
      ,tblAccounts.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccounts.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccounts(NOLOCK)  
     --INNER JOIN tblJournalEntryDocDT ON tblAccounts.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     --INNER JOIN tblJournalEntryDoc ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblAccounts.strCurrency  
     LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
     WHERE (tblAccounts.bitInactive = 0)  
      AND (tblAccounts.intAccClass <> 28)  
      AND (  
       tblAccounts.intGroupCode = 1  
       OR tblAccounts.intGroupCode = 2  
       )  
      AND (tblAccounts.strCurrency <> @strCurrency)  
      AND decBalance <> 0  
     --AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
     ORDER BY intAccType, tblAccounts.intGLNumber  
    END  
    ELSE  
    BEGIN  
     SELECT DISTINCT tblAccounts.intGLNumber GLNumber  
      ,tblAccounts.intAccType AccountType  
      ,tblAccounts.strDesc 'Description'  
      ,tblAccounts.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccounts.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccounts(NOLOCK)  
     INNER JOIN tblJournalEntryDocDT(NOLOCK) ON tblAccounts.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     INNER JOIN tblJournalEntryDoc(NOLOCK) ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblAccounts.strCurrency  
     LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
     WHERE (tblAccounts.bitInactive = 0)  
      AND (tblAccounts.intAccClass <> 28)  
      AND (  
       tblAccounts.intGroupCode = 1  
       OR tblAccounts.intGroupCode = 2  
       )  
      AND (tblAccounts.strCurrency <> @strCurrency)  
      AND (  
       decBalance <> 0  
       OR decBalanceF <> 0  
       )  
      AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
      AND tblAccounts.intGLNumber NOT IN (  
       SELECT value  
       FROM dbo.fnSplitStringAsTable(@GridAccountList, ',')  
       )  
     ORDER BY intAccType, tblAccounts.intGLNumber  
    END  
   END  
   ELSE  
   BEGIN  
    SELECT tblAccounts.intGLNumber GLNumber  
     ,tblAccounts.intAccType AccountType  
     ,tblAccounts.strDesc 'Description'  
     ,tblAccounts.intAccClass AccountClass  
     ,ISNULL(tblInv.strPartNumber, '') JournalCode  
     ,0 AccountSecCount  
     ,'' UserName  
    FROM tblAccounts(NOLOCK)  
    LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
    WHERE (tblAccounts.bitInactive = 0)  
     AND (tblAccounts.intAccClass <> 28)  
     AND (  
      tblAccounts.intGroupCode = 1  
      OR tblAccounts.intGroupCode = 2  
      )  
     AND (  
      strCurrency = @strCurrency  
      OR strCurrency = @strHomeCurrency  
      )  
    ORDER BY intAccType, intGLNumber  
   END  
  END  
  ELSE IF @isForeignCurrencyRevaluation = 1  
  BEGIN  
   SELECT DISTINCT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
    ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccounts.decBalanceF AS VARCHAR(22))  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblAccounts.strCurrency  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (tblAccounts.bitInactive = 0)  
    AND (tblAccounts.intAccClass <> 28)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (tblAccounts.bitInactive = 0)  
    AND (tblAccounts.intAccClass <> 28)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 RETURN  
END  
GO

/****** Object:  StoredProcedure [dbo].[GetAllAccountsForAccountPickerLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAllAccountsForAccountPickerLY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 ,@isForeignCurrencyRevaluation BIT  
 ,@isGridAccount BIT  
 ,@GridAccountList VARCHAR(MAX)  
 ,@RevaluationDate DATETIME  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY (NOLOCK)  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE (tblAccountsLY.bitInactive = 0)  
    AND (tblAccountsLY.intAccClass <> 28)  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec (NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY (NOLOCK)  
   LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE (tblAccountsLY.bitInactive = 0)  
    AND (tblAccountsLY.intAccClass <> 28)  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN   
   IF @isForeignCurrencyRevaluation = 1  
   BEGIN  
    IF @isGridAccount = 0  
    BEGIN  
     SELECT DISTINCT tblAccountsLY.intGLNumber GLNumber  
      ,tblAccountsLY.intAccType AccountType  
      ,tblAccountsLY.strDesc 'Description'  
      ,tblAccountsLY.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccountsLY.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccountsLY (NOLOCK)  
     --INNER JOIN tblJournalEntryDocDT ON tblAccountsLY.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     --INNER JOIN tblJournalEntryDoc ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency] (NOLOCK) ON tblCurrency.strCurrency = tblAccountsLY.strCurrency  
     LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
     WHERE (tblAccountsLY.bitInactive = 0)  
      AND (tblAccountsLY.intAccClass <> 28)  
      AND (  
       tblAccountsLY.intGroupCode = 1  
       OR tblAccountsLY.intGroupCode = 2  
       )  
      AND (tblAccountsLY.strCurrency <> @strCurrency)  
      AND (decBalance <> 0 OR decBalanceF <> 0)  
      --AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
     ORDER BY intAccType, tblAccountsLY.intGLNumber  
    END  
    ELSE  
    BEGIN  
     SELECT DISTINCT tblAccountsLY.intGLNumber GLNumber  
      ,tblAccountsLY.intAccType AccountType  
      ,tblAccountsLY.strDesc 'Description'  
      ,tblAccountsLY.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccountsLY.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccountsLY (NOLOCK)  
     INNER JOIN tblJournalEntryDocDT (NOLOCK) ON tblAccountsLY.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     INNER JOIN tblJournalEntryDoc (NOLOCK) ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency] (NOLOCK) ON tblCurrency.strCurrency = tblAccountsLY.strCurrency  
     LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
     WHERE (tblAccountsLY.bitInactive = 0)  
      AND (tblAccountsLY.intAccClass <> 28)  
      AND (  
       tblAccountsLY.intGroupCode = 1  
       OR tblAccountsLY.intGroupCode = 2  
       )  
      AND (tblAccountsLY.strCurrency <> @strCurrency)  
      AND decBalance <> 0  
      AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
      AND tblAccountsLY.intGLNumber NOT IN (  
       SELECT value  
       FROM dbo.fnSplitStringAsTable(@GridAccountList, ',')  
       )  
     ORDER BY intAccType, tblAccountsLY.intGLNumber  
    END  
   END  
   ELSE  
   BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY (NOLOCK)  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE (tblAccountsLY.bitInactive = 0)  
    AND (tblAccountsLY.intAccClass <> 28)  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
   END  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec (NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY (NOLOCK)  
   LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE (tblAccountsLY.bitInactive = 0)  
    AND (tblAccountsLY.intAccClass <> 28)  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
 RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetAllAccountsLegend]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
---------------------------------------------------------------------------------------

CREATE PROCEDURE [dbo].[GetAllAccountsLegend]
AS
BEGIN
	SELECT 
		tblAccountsLegend.intAccType AS 'AccType', 
		tblAccountsLegend.intGLNumberFrom AS 'GLNumberFrom', 
		tblAccountsLegend.intGLNumberTo AS 'GLNumberTo', 
		tblAccountType.strAcctType AS 'AccTypeDesc'
	FROM tblAccountType 
	INNER JOIN tblAccountsLegend 
	ON tblAccountType.intAcctTypeID = tblAccountsLegend.intAccType
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------
CREATE PROCEDURE [dbo].[GetAllAccountsLY]
AS
BEGIN
SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.strDesc 'Desc', ISNULL(tblAcctBudgetsLY.decPeriod1,0) Period1, ISNULL(tblAcctBudgetsLY.decPeriod2,0) Period2, 
ISNULL(tblAcctBudgetsLY.decPeriod3,0) Period3, ISNULL(tblAcctBudgetsLY.decPeriod4,0) Period4, ISNULL(tblAcctBudgetsLY.decPeriod5,0) Period5, 
ISNULL(tblAcctBudgetsLY.decPeriod6,0) Period6, ISNULL(tblAcctBudgetsLY.decPeriod7,0) Period7, ISNULL(tblAcctBudgetsLY.decPeriod8,0) Period8, 
ISNULL(tblAcctBudgetsLY.decPeriod9,0) Period9, ISNULL(tblAcctBudgetsLY.decPeriod10,0) Period10, ISNULL(tblAcctBudgetsLY.decPeriod11,0) Period11, 
ISNULL(tblAcctBudgetsLY.decPeriod12,0) Period12 
FROM tblAccountsLY 
LEFT OUTER JOIN tblAcctBudgetsLY ON tblAccountsLY.intGLNumber = tblAcctBudgetsLY.intGLNumber 
WHERE ((tblAccountsLY.intAccType = 4) OR (tblAccountsLY.intAccType = 5)) 
AND ((tblAccountsLY.intGroupCode = 1) OR (tblAccountsLY.intGroupCode = 2)) 
AND (tblAccountsLY.bitInactive = 0) 
ORDER BY tblAccountsLY.intGLNumber

RETURN
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllAcctsNoBankAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAllAcctsNoBankAccountsCY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (tblAccounts.bitInactive = 0)  
    AND (tblAccounts.intAccClass <> 28)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (tblAccounts.bitBank <> 1)  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (tblAccounts.bitInactive = 0)  
    AND (tblAccounts.intAccClass <> 28)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (tblAccounts.bitBank <> 1)  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (tblAccounts.bitInactive = 0)  
    AND (tblAccounts.intAccClass <> 28)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (tblAccounts.bitBank <> 1)  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (tblAccounts.bitInactive = 0)  
    AND (tblAccounts.intAccClass <> 28)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (tblAccounts.bitBank <> 1)  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
  
 RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetAllAcctsNoBankAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAllAcctsNoBankAccountsLY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE (tblAccountsLY.bitInactive = 0)  
    AND (tblAccountsLY.intAccClass <> 28)  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (tblAccountsLY.bitBank <> 1)  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE (tblAccountsLY.bitInactive = 0)  
    AND (tblAccountsLY.intAccClass <> 28)  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (tblAccountsLY.bitBank <> 1)  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE (tblAccountsLY.bitInactive = 0)  
    AND (tblAccountsLY.intAccClass <> 28)  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (tblAccountsLY.bitBank <> 1)  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE (tblAccountsLY.bitInactive = 0)  
    AND (tblAccountsLY.intAccClass <> 28)  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (tblAccountsLY.bitBank <> 1)  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
  
 RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetAllApproversforGridBind]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetDefNotification]***********/

/*********** Start [GetAllApproversforGridBind]***********/

---------------------------------
CREATE PROCEDURE [dbo].[GetAllApproversforGridBind]
AS
BEGIN
	SET NOCOUNT ON;

	SELECT POD.ID AS ID
		,U.strName AS [Name]
		,POD.strUserName AS UserName
		,POD.DocLimitIncl AS DocLimitIncl
		,POD.PreferredNotification AS PreferredNotification
		,POD.intApproverType AS	ApproverType
	FROM tblApprovalsDocLimit(NOLOCK) POD
	INNER JOIN tblUsers(NOLOCK) U ON U.strUserName = POD.strUserName
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllApproversUsers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

---------------------------------
CREATE PROCEDURE [dbo].[GetAllApproversUsers] @ApproverType AS INT
AS
BEGIN
	SET NOCOUNT ON;

	IF (@ApproverType = 0)
	BEGIN
		SELECT tblUsers.strUserName AS 'UserName'
			,strName AS 'Name'
			,strCellNumber AS 'CellNumber'
			,strEmail AS 'Email'
			,strPassword AS 'Password'
			,blnIsAdmin AS 'IsAdmin'
			,blnIsLockedOut AS 'IsLockedOut'
			,blnMustChange AS 'MustChange'
			,blnCompany AS 'Company'
			,blnCoFileHandle AS 'CoFileHandle'
			,blnGL AS 'GL'
			,blnPayables AS 'Payables'
			,blnPayPayments AS 'PayPayments'
			,blnReceivables AS 'Receivables'
			,blnRecReceipts AS 'RecReceipts'
			,blnInventory AS 'Inventory'
			,blnInvAdjust AS 'InvAdjust'
			,blnInvCount AS 'InvCount'
			,blnSMS AS 'SMS'
			,blnBusMgr AS 'BusMgr'
			,blnPOS AS 'POS'
			,blnProjects AS 'Projects'
			,dteLastLogin AS 'LastLogin'
			,blnCashBook AS 'CashBook'
			,blnReminders AS 'Reminders'
			,blnMarketing AS 'Marketing'
			,blnCollection AS 'Collection'
			,blnPOSCash AS 'POSCash'
			,blnCoAdmin AS 'CoAdmin'
			,blnMainSum AS 'MainSum'
			,blnAcctSets AS 'AcctSets'
			,blnJournal AS 'Journal'
			,blnBankTrans AS 'BankTrans'
			,blnBankRecon AS 'BankRecon'
			,blnAPPurch AS 'APPurch'
			,blnAPTax AS 'APTax'
			,blnARCredit AS 'ARCredit'
			,blnARSales AS 'ARSales'
			,blnARBatch AS 'ARBatch'
			,blnInvPricelists AS 'InvPricelists'
			,blnInvLoc AS 'InvLoc'
			,blnInvCats AS 'InvCats'
			,blnInvAssbly AS 'InvAssbly'
			,blnInvTrans AS 'InvTrans'
			,blnSMSCredits AS 'SMSCredits'
			,blnPOSDrop AS 'POSDrop'
			,blnPOSTerminalSetup AS 'POSTerminalSetup'
			,blnPOSTerminalSetupList AS 'POSTerminalSetupList'
			,blnPOSProfileMenu AS 'POSProfileMenu'
			,blnBulkSMS AS 'BulkSMS'
			,blnGLExpense AS 'GLExpense'
			,blnDeposits AS 'Deposits'
			,blnInvPDT AS 'InvPDT'
			,blnARPersons AS 'ARPersons'
			,blnAPBatch AS 'APBatch'
			,blnAPBrowser AS 'APBrowser'
			,blnARBrowser AS 'ARBrowser'
			,blnTemplates AS 'Templates'
			,blnAREmail AS 'AREmail'
			,blnWHRec AS 'WHRec'
			,blnWHPick AS 'WHPick'
			,blnWHBatch AS 'WHBatch'
			,uID AS 'uid'
			,blnFiles AS 'Files'
			,strLocName AS 'LocName'
			,blnCycle AS 'Cycle'
			,blnInterest AS 'Interest'
			,blnAPOrders AS 'APOrders'
			,blnAPReq AS 'APReq'
			,blnAROrders AS 'AROrders'
			,blnARQuotes AS 'ARQuotes'
			,blnARQuSys AS 'ARQuSys'
			,blnWHStPick AS 'WHStPick'
			,blnInvBrowser AS 'InvBrowser'
			,blnWHShp AS 'WHShp'
			,blnWHPrPack AS 'WHPrPack'
			,blnWHCont AS 'WHCont'
			,blnWHMani AS 'WHMani'
			,blnWHShBrow AS 'WHShBrow'
			,blnJobCost AS 'JobCost'
			,blnDept AS 'Dept'
			,blnSubLedger AS 'SubLedger'
			,blnCLetters AS 'CLetters'
			,blnTop20 AS 'Top20'
			,blnTransTab AS 'TransTab'
			,blnRecPayJournal AS 'RecPayJournal'
			,blnARCats AS 'ARCats'
			,blnInvDiscMatrix AS 'InvDiscMatrix'
			,blnARBlockDesc AS 'ARBlockDesc'
			,blnARBlockUnit AS 'ARBlockUnit'
			,blnARBlockDiscount AS 'ARBlockDiscount'
			,blnAPBlockDesc AS 'APBlockDesc'
			,blnAPBlockUnit AS 'APBlockUnit'
			,blnAPBlockDiscount AS 'APBlockDiscount'
			,blnWHDelDriver AS 'WHDelDriver'
			,blnWHDelVehicle AS 'WHDelVehicle'
			,blnWHDelRoute AS 'WHDelRoute'
			,blnARCreditRequests AS 'ARCreditRequests'
			,blnBITab AS 'BITab'
			,blnBICubeAdd AS 'BICubeAdd'
			,blnBICubeEdit AS 'BICubeEdit'
			,blnBICubeDelete AS 'BICubeDelete'
			,blnBIViewAdd AS 'BIViewAdd'
			,blnBIViewEdit AS 'BIViewEdit'
			,blnBIViewDelete AS 'BIViewDelete'
			,blnARSendPricelists AS 'ARSendPricelists'
			,blnInvNumConv AS 'InvNumConv'
			,blnInvSerialTypes AS 'InvSerialTypes'
			,blnAPCats AS 'APCats'
			,blnARPrintPreview AS 'ARPrintPreview'
			,blnARCNChangesAllowed AS 'ARCNChangesAllowed'
			,blnARPriceChangeAllowed AS 'ARPriceChangeAllowed'
			,blnAPDNChangesAllowed AS 'APDNChangesAllowed'
			,blnARInvoiceAdjAllowed AS 'ARInvoiceAdjAllowed'
			,blnARAllowCreditNotesAndRequestItems AS 'ARAllowCreditNotesAndRequestItems'
			,blnAPPaymentApprovals AS 'APPaymentApprovals'
			,blnInvForecasting AS 'InvForecasting'
			,blnInvBarcode AS 'InvBarcode'
			,blnInvItemCostUpdater AS 'InvItemCostUpdater'
			,blnInvItemRenaming AS 'InvItemRenaming'
			,blnAPECOMSettings AS 'APECOMSettings'
			,blnAPShowStatsOnDocs AS 'APShowStatsOnDocs'
			,blnARShowStatsOnDocs AS 'ARShowStatsOnDocs'
			,blnGLOpenItemAlloc AS 'GLOpenItemAlloc'
			,blnGLLR AS 'GLLR'
			,blnGLLRFin AS 'GLLRFin'
			,blnGLLRFinBalSheetStd AS 'GLLRFinBalSheetStd'
			,blnGLLRFinBalSheetComp AS 'GLLRFinBalSheetComp'
			,blnGLLRFinIncomeStd AS 'GLLRFinIncomeStd'
			,blnGLLRFinIncomeComp AS 'GLLRFinIncomeComp'
			,blnGLLRFinIncomeMulti AS 'GLLRFinIncomeMulti'
			,blnGLLRFinIncomeGP AS 'GLLRFinIncomeGP'
			,blnGLLRFinIncomeMini AS 'GLLRFinIncomeMini'
			,blnGLLRFinTrialBal AS 'GLLRFinTrialBal'
			,blnGLLRFinPerMovement AS 'GLLRFinPerMovement'
			,blnGLLRFinMultiCompany AS 'GLLRFinMultiCompany'
			,blnGLLRTran AS 'GLLRTran'
			,blnGLLRTranLedger AS 'GLLRTranLedger'
			,blnGLLRTranEntryType AS 'GLLRTranEntryType'
			,blnGLLRTranTax AS 'GLLRTranTax'
			,blnGLLRTranDocTran AS 'GLLRTranDocTran'
			,blnGLLRBudgets AS 'GLLRBudgets'
			,blnGLLRBudgetsAmounts AS 'GLLRBudgetsAmounts'
			,blnGLLRBudgetsCompIncome AS 'GLLRBudgetsCompIncome'
			,blnGLLRBudgetsCompIncomeF AS 'GLLRBudgetsCompIncomeF'
			,blnGLLRBudgetsCompBalSheet AS 'GLLRBudgetsCompBalSheet'
			,blnGLLRDept AS 'GLLRDept'
			,blnGLLRDeptBalSheetStd AS 'GLLRDeptBalSheetStd'
			,blnGLLRDeptIncomeStd AS 'GLLRDeptIncomeStd'
			,blnGLLRDeptIncomeComp AS 'GLLRDeptIncomeComp'
			,blnGLLRDeptTrialBal AS 'GLLRDeptTrialBal'
			,blnGLLRDeptLedger AS 'GLLRDeptLedger'
			,blnGLLRDeptBudgetAmounts AS 'GLLRDeptBudgetAmounts'
			,blnGLLRDeptCompIncome AS 'GLLRDeptCompIncome'
			,blnGLLRLists AS 'GLLRLists'
			,blnGLLRListsAccounts AS 'GLLRListsAccounts'
			,blnGLLRListsAccountSets AS 'GLLRListsAccountSets'
			,blnGLLRListsJournalCodes AS 'GLLRListsJournalCodes'
			,blnGLCR AS 'GLCR'
			,blnGLCRFin AS 'GLCRFin'
			,blnGLCRFinIncome AS 'GLCRFinIncome'
			,blnGLCRFinIncomeMulti AS 'GLCRFinIncomeMulti'
			,blnGLCRTran AS 'GLCRTran'
			,blnGLCRTranAlloc AS 'GLCRTranAlloc'
			,blnGLCRTranAllocMissing AS 'GLCRTranAllocMissing'
			,blnGLCRBudget AS 'GLCRBudget'
			,blnGLCRBudgetCompBudget AS 'GLCRBudgetCompBudget'
			,blnGLCRLists AS 'GLCRLists'
			,blnGLCRListsProfitCenters AS 'GLCRListsProfitCenters'
			,blnAPPR AS 'APPR'
			,blnAPPRFin AS 'APPRFin'
			,blnAPPRFinVendorAged AS 'APPRFinVendorAged'
			,blnAPPRTran AS 'APPRTran'
			,blnAPPRTranVendorPurchases AS 'APPRTranVendorPurchases'
			,blnAPPRTranPendingPurchaseOrders AS 'APPRTranPendingPurchaseOrders'
			,blnAPPRTranPendingPurchaseReq AS 'APPRTranPendingPurchaseReq'
			,blnAPPRTranVendorTran AS 'APPRTranVendorTran'
			,blnAPPRLists AS 'APPRLists'
			,blnAPPRListsVendors AS 'APPRListsVendors'
			,blnAPPRListsContacts AS 'APPRListsContacts'
			,blnARRR AS 'ARRR'
			,blnARRRFin AS 'ARRRFin'
			,blnARRRFinCustAged AS 'ARRRFinCustAged'
			,blnARRRFinCallSheet AS 'ARRRFinCallSheet'
			,blnARRRFinCustStatements AS 'ARRRFinCustStatements'
			,blnARRRFinSalesStatements AS 'ARRRFinSalesStatements'
			,blnARRRFinInvoiceGP AS 'ARRRFinInvoiceGP'
			,blnARRRFinCustProfiability AS 'ARRRFinCustProfiability'
			,blnARRRFinCustSalesTargets AS 'ARRRFinCustSalesTargets'
			,blnARRRFinCustSalesTrends AS 'ARRRFinCustSalesTrends'
			,blnARRRFinSPPerf AS 'ARRRFinSPPerf'
			,blnARRRFinSPTargets AS 'ARRRFinSPTargets'
			,blnARRRTran AS 'ARRRTran'
			,blnARRRTranCustSales AS 'ARRRTranCustSales'
			,blnARRRTranSPSales AS 'ARRRTranSPSales'
			,blnARRRTranSPMissing AS 'ARRRTranSPMissing'
			,blnARRRTranInvoiceDocs AS 'ARRRTranInvoiceDocs'
			,blnARRRTranCashUp AS 'ARRRTranCashUp'
			,blnARRRTranPendingSalesOrders AS 'ARRRTranPendingSalesOrders'
			,blnARRRTranClosedSalesOrders AS 'ARRRTranClosedSalesOrders'
			,blnARRRTranCredits AS 'ARRRTranCredits'
			,blnARRRTranCustTran AS 'ARRRTranCustTran'
			,blnARRRTranOpenQuotes AS 'ARRRTranOpenQuotes'
			,blnARRRLists AS 'ARRRLists'
			,blnARRRListsPricelist AS 'ARRRListsPricelist'
			,blnARRRListsCustomers AS 'ARRRListsCustomers'
			,blnARRRListsSalesPersons AS 'ARRRListsSalesPersons'
			,blnARRRListsContactsList AS 'ARRRListsContactsList'
			,blnIR AS 'IR'
			,blnIRFin AS 'IRFin'
			,blnIRFinInvAged AS 'IRFinInvAged'
			,blnIRFinInvValuation AS 'IRFinInvValuation'
			,blnIRFinLocSum AS 'IRFinLocSum'
			,blnIRFinInvLoc AS 'IRFinInvLoc'
			,blnIRFinInvBin AS 'IRFinInvBin'
			,blnIRFinQuantity AS 'IRFinQuantity'
			,blnIRFinQuantityLoc AS 'IRFinQuantityLoc'
			,blnIRFinInvSalesTargets AS 'IRFinInvSalesTargets'
			,blnIRTran AS 'IRTran'
			,blnIRTranInvSales AS 'IRTranInvSales'
			,blnIRTranInvTran AS 'IRTranInvTran'
			,blnIRTranInvLedger AS 'IRTranInvLedger'
			,blnIRTranInvLedgerLoc AS 'IRTranInvLedgerLoc'
			,blnIRTranNegInvCorrections AS 'IRTranNegInvCorrections'
			,blnIRTranPricelistChangeLog AS 'IRTranPricelistChangeLog'
			,blnIRTranSegInvMovement AS 'IRTranSegInvMovement'
			,blnIRTranSegInvSales AS 'IRTranSegInvSales'
			,blnIRTranSerializedItemTracking AS 'IRTranSerializedItemTracking'
			,blnIRLists AS 'IRLists'
			,blnIRListsPricing AS 'IRListsPricing'
			,blnIRListsInventory AS 'IRListsInventory'
			,blnIRListsStockCountSheets AS 'IRListsStockCountSheets'
			,blnIRListsAdjustments AS 'IRListsAdjustments'
			,blnWR AS 'WR'
			,blnWROrders AS 'WROrders'
			,blnWROrdersPendingPurchaseOrders AS 'WROrdersPendingPurchaseOrders'
			,blnWROrdersPendingSalesOrders AS 'WROrdersPendingSalesOrders'
			,blnPOSR AS 'POSR'
			,blnPOSRFin AS 'POSRFin'
			,blnPOSRFinDrawerClosing AS 'POSRFinDrawerClosing'
			,blnPOSRFinCashierVariance AS 'POSRFinCashierVariance'
			,blnPOSRLists AS 'POSRLists'
			,blnPOSRListsCashDrawers AS 'POSRListsCashDrawers'
			,blnBR AS 'BR'
			,blnBRProj AS 'BRProj'
			,blnBRProjTender AS 'BRProjTender'
			,blnBRProjAlloc AS 'BRProjAlloc'
			,blnBRProjMissingAllow AS 'BRProjMissingAllow'
			,blnBRProjSalesMatrix AS 'BRProjSalesMatrix'
			,blnBRProjPurchMatrix AS 'BRProjPurchMatrix'
			,blnBRProjCombinedMatrix AS 'BRProjCombinedMatrix'
			,blnBRProjActvsBudget AS 'BRProjActvsBudget'
			,blnBRAdmin AS 'BRAdmin'
			,blnBRAdminHistory AS 'BRAdminHistory'
			,blnSMSRLog AS 'SMSRLog'
			,blnGLJournalReports AS 'GLJournalReports'
			,blnGLTransactionReports AS 'GLTransactionReports'
			,blnAPPaymentsReports AS 'APPaymentsReports'
			,blnAPTransactionsReports AS 'APTransactionsReports'
			,blnARReceiptsReports AS 'ARReceiptsReports'
			,blnARTransactionsReports AS 'ARTransactionsReports'
			,blnISalesReports AS 'ISalesReports'
			,blnITransactionsReports AS 'ITransactionsReports'
			,blnSMSR AS 'SMSR'
			,blnFHQCanApprove AS 'FHQCanApprove'
			,blnFHQCreatePurchaseOrder AS 'FHQCreatePurchaseOrder'
			,blnARViewMarginPercentage AS 'ARViewMarginPercentage'
			,blnAPPendingPayApprovals AS 'APPendingPayApprovals'
			,blnGLLRTranCashBook AS 'GLLRTranCashBook'
			,blnAPPRTranVendAccrual AS 'APPRTranVendAccrual'
			,blnIRListsItemWhereUsed AS 'IRListsItemWhereUsed'
			,blnIRTranBillOfMaterials AS 'IRTranBillOfMaterials'
			,blnAPBulkRFQ AS 'APBulkRFQ'
			,blnInvProdSchedule AS 'InvProdSchedule'
			,blnInvWorkCentres AS 'InvWorkCentres'
			,blnIRListsProductionSchedule AS 'IRListsProductionSchedule'
			,blnAPPRTranBulkRFQ AS 'APPRTranBulkRFQ'
			,blnRecReceiptsReversal AS 'RecReceiptsReversal'
			,blnARRRTranSalesSummary AS 'ARRRTranSalesSummary'
			,blnDashMain AS 'DashMain'
			,blnDashBusiness AS 'DashBusiness'
			,blnDashAR AS 'DashAR'
			,blnARChangeCustOnSO AS 'ARChangeCustOnSO'
			,blnARChangeCustOnSQ AS 'ARChangeCustOnSQ'
			,blnAPOrdersRemove AS 'APOrdersRemove'
			,blnAPReqRemove AS 'APReqRemove'
			,blnAROrdersRemove AS 'AROrdersRemove'
			,blnARQuotesRemove AS 'ARQuotesRemove'
			,blnARCreditRequestsRemove AS 'ARCreditRequestsRemove'
			,blnAPBlockTax AS 'APBlockTax'
			,blnARBlockTax AS 'ARBlockTax'
			,blnAPBulkRFQRemove AS 'APBulkRFQRemove'
			,blnARQuSysRemove AS 'ARQuSysRemove'
			,blnWHStPickRemove AS 'WHStPickRemove'
			,blnWHRecRemove AS 'WHRecRemove'
			,blnWHShpRemove AS 'WHShpRemove'
			,blnWHContRemove AS 'WHContRemove'
			,blnARMatrixType AS 'ARMatrixType'
			,blnARMatrixTypeEdit AS 'ARMatrixTypeEdit'
			,blnARMatrixTypeRemove AS 'ARMatrixTypeRemove'
			,blnIRTranInvEfficiency AS 'IRTranInvEfficiency'
			,blnInvLotNumExpiryDates AS 'InvLotNumExpiryDates'
			,blnARRRTranMatrixTypeChangeLog AS 'ARRRTranMatrixTypeChangeLog'
			,blnInvBulkLabelPrinting AS 'InvBulkLabelPrinting'
			,bitInvVoucher AS 'InvVoucher'
			,blnInvShowItemCost AS 'InvShowItemCost'
			,bitInvWebstoreSync AS 'InvWebstoreSync'
			,strSalesName AS 'SalesName'
			,IsNull(intARDept, 0) AS 'ARDept'
			,IsNUll(intAPDept, 0) AS 'APDept'
			,bitARVoucerReprint AS 'ARVoucerReprint'
			,blnARChangeDocInfo AS 'ARChangeDocInfo'
			,blnAPChangeDocInfo AS 'APChangeDocInfo'
			,blnFADepreciateAsset AS 'FADepreciateAsset'
			,blnFAAssets AS 'FAAssets'
			,blnFAAssetTypes AS 'FAAssetTypes'
			,blnFADepreciationMethods AS 'FADepreciationMethods'
			,blnFACostTypes AS 'FACostTypes'
			,blnFADisposalMethods AS 'FADisposalMethods'
			,blnFAR AS 'FAR'
			,blnFARSummary AS 'FARSummary'
			,blnFARAssetListing AS 'FARAssetListing'
			,blnFARDisposals AS 'FARDisposals'
			,blnFARDepreciationListing AS 'FARDepreciationListing'
			,blnFARAssetPurchases AS 'FARAssetPurchases'
			,blnFARAssetEfficiency AS 'FARAssetEfficiency'
			,
			--0 As 'FARAssetClass',
			blnInvDimensions AS 'InvDimensions'
			,blnInvValueBasedPrice AS 'InvValueBasedPrice'
			,blnInvValueBasedPriceEdit AS 'InvValueBasedPriceEdit'
			,blnInvValueBasedPriceRemove AS 'InvValueBasedPriceRemove'
			,blnFARTran AS 'FARTran'
			,blnFARLists AS 'FARLists'
			,blnARSOAdjAllowed AS 'ARSOAdjAllowed'
			,blnARSQAdjAllowed AS 'ARSQAdjAllowed'
			,blnARFHQAdjAllowed AS 'ARFHQAdjAllowed'
			,blnARCNAdjAllowed AS 'ARCNAdjAllowed'
			,blnARCRAdjAllowed AS 'ARCRAdjAllowed'
			,blnARCreditNotes AS 'ARCreditNotes'
			,blnARChangeDept AS 'ARChangeDept'
			,blnAPInvoiceAdjAllowed AS 'APInvoiceAdjAllowed'
			,blnAPPOAdjAllowed AS 'APPOAdjAllowed'
			,blnAPPRAdjAllowed AS 'APPRAdjAllowed'
			,blnARChangeCenter AS 'ARChangeCenter'
			,bitPOSEnableEditDiscount AS 'POSEnableEditDiscount'
			,blnPOSOrders AS 'POSOrders'
			,blnPOSQuotes AS 'POSQuotes'
			,blnPOSConvertOrders AS 'POSConvertOrders'
			,blnPOSConvertQuotes AS 'POSConvertQuotes'
			,blnPOSAuthPayByAccount AS 'POSAuthPayByAccount'
			,blnPOSAuthoriseRefunds AS 'POSAuthoriseRefunds'
			,blnARCreditBlockSI AS 'ARCreditBlockSI'
			,blnARCreditBlockSO AS 'ARCreditBlockSO'
			,blnARDeliveryAdvice AS 'ARDeliveryAdvice'
			,blnARDeliveryAdviceRemove AS 'ARDeliveryAdviceRemove'
			,blnInvCanChangeSellingPrice AS 'InvCanChangeSellingPrice'
			,blnARSalesPersonChangeApproval AS 'ARSalesPersonChangeApproval'
			,blnIRFinInvCostAnalysis AS 'IRFinInvCostAnalysis'
			,blnMFWorkOrders AS 'MFWorkOrders'
			,blnMFJobs AS 'MFJobs'
			,blnMFJobAdjustApproval AS 'MFJobAdjustApproval'
			,blnMFProductionSchedule AS 'MFProductionSchedule'
			,blnMFPostWIP AS 'MFPostWIP'
			,blnMFBillOfMaterial AS 'MFBillOfMaterial'
			,blnMFBOMAdjustApproval AS 'MFBOMAdjustApproval'
			,blnMFWorkCentres AS 'MFWorkCentres'
			,blnMFLabour AS 'MFLabour'
			,blnMFMachinery AS 'MFMachinery'
			,blnMFTransferJobs AS 'MFTransferJobs'
			,blnMFR AS 'MFR'
			,blnMFRTran AS 'MFRTran'
			,blnMFRWorkInProgress AS 'MFRWorkInProgress'
			,blnMFRLists AS 'MFRLists'
			,blnMFRBillOfMaterial AS 'MFRBillOfMaterial'
			,blnMFRResource AS 'MFRResource'
			,blnMFRItemWhereUsed AS 'MFRItemWhereUsed'
			,blnMFRSerialLotOutOfSeq AS 'MFRSerialLotOutOfSeq'
			,blnMFRMRP AS 'MFRMRP'
			,blnInvWorkOrder AS 'InvWorkOrder'
			,blnInvIntReq AS 'InvIntReq'
			,blnInvIssReq AS 'InvIssReq'
			,blnARRRTranCustAccrual AS 'ARRRTranCustAccrual'
			,blnARRRFinOrderStatement AS 'ARRRFinOrderStatement'
			,blnIRListsInvIntReq AS 'IRListsInvIntReq'
			,blnMFCloseJobs AS 'MFCloseJobs'
			,blnFAAssetsDisposal AS 'FAAssetsDisposal'
			,blnFAAssetsLocations AS 'FAAssetsLocations'
			,blnFARAssetRegister AS 'FARAssetRegister'
			,blnDashAP AS 'DashAP'
			,blnDashInventory AS 'DashInventory'
			,blnDashWarehouse AS 'DashWarehouse'
			,blnAPSetupPOApprovers AS 'APSetupPOApprovers'
			,blnApprovePurchaseOrders AS 'ApprovePurchaseOrders'
			,blnMFRWCTransfer AS 'MFRWCTransfer'
			,blnInvCatMarginApproval AS 'InvCatMarginApproval'
			,blnMobSa AS 'MobSa'
			,blnMobSaOrdProcess AS 'MobSaOrdProcess'
			,blnMobSaGeoTrack AS 'MobSaGeoTrack'
			,blnMobPhDash AS 'MobPhDash'
			,blnMobPhDashBankBal AS 'MobPhDashBankBal'
			,blnMobPhDashSalesItemComp AS 'MobPhDashSalesItemComp'
			,blnMobPhDashSalesCustCat AS 'MobPhDashSalesCustCat'
			,blnMobPhDashOutCustCat AS 'MobPhDashOutCustCat'
			,blnMobPhDashCustVendBal AS 'MobPhDashCustVendBal'
			,blnMobPhDashInvQty AS 'MobPhDashInvQty'
			,blnMobPhDashSalesPerf AS 'MobPhDashSalesPerf'
			,blnMobPhPOApproval AS 'MobPhPOApproval'
			,blnMobPhDashTimesheet AS 'MobPhDashTimesheet'
			,blnBRProjClaimStatement AS 'BRProjClaimStatement'
			,blnARRRTranCancelSalesDocs AS 'ARRRTranCancelSalesDocs'
			,blnAREditDeliveryMethod AS 'AREditDeliveryMethod'
			,blnInvIsRepackaging AS 'InvIsRepackaging'
			,blnIRRepackaging AS 'IRRepackaging'
			,blnContractBilling AS 'ContractBilling'
			,blnContractBillingType AS 'ContractBillingType'
			,blnProcessContractBilling AS 'ProcessContractBilling'
			,blnARRRecurringInvoice AS 'ARRRecurringInvoice'
			,blnARRContractExpiry AS 'ARRContractExpiry'
			,blnARRContractReconciliation AS 'ARRContractReconciliation'
			,blnAPReOrders AS 'APReOrders'
			,blnARShipmentsAuditTrail AS 'ARShipmentsAuditTrail'
			,blnARSalesOrderEDI AS 'ARSalesOrderEDI'
			,blnAPGRVAdjustmentApproval AS 'WHRecAdjust'
			,blnAPReturnSelection AS 'APReturn'
			,blnAPReturnAdjustmentApproval AS 'RetAprAdjust'
			,blnARDAAdjustmentApproval AS 'ARDeliveryAdviceAdjustApproval'
			,blnWHDelMethod AS WHDelMethod
			,blnIRTranLotNumMovement AS 'IRTranLotNumberMovement'
			,blnBankManager AS 'BankManager'
			,blnAPPRTranInvoiceDocs AS 'APPRTranInvoiceDocs'
			,blnMFRJobStatus AS 'MFRJobStatus'
			,blnMFRProdVariance AS 'MFRProdVariance'
			,blnMFRManVariance AS 'MFRManVariance'
			,blnAPPriceChangeAllowed AS 'APPriceChangeAllowed'
			,blnDashManage AS 'DashManage'
			,blnGLMergeAccounts AS 'MergeAcct'
			,blnWSWorkshop AS 'WSWorkshop'
			,blnWSBrowser AS 'WSBrowser'
			,blnWSInvoice AS 'WSInvoice'
			,blnWSInvoiceAdjAllowed AS 'WSInvoiceAdjAllowed'
			,blnWSPrintPreview AS 'WSPrintPreview'
			,blnWSProcessJob AS 'WSProcessJob'
			,blnWSProcessJobRemove AS 'WSProcessJobRemove'
			,blnWSProcessJobAdjAllowed AS 'WSProcessJobAdjAllowed'
			,blnWSQuote AS 'WSQuote'
			,blnWSQuoteRemove AS 'WSQuoteRemove'
			,blnWSQuoteAdjAllowed AS 'WSQuoteAdjAllowed'
			,blnWSCreditNote AS 'WSCreditNote'
			,blnWSCNChangesAllowed AS 'WSCNChangesAllowed'
			,blnWSCNAdjAllowed AS 'WSCNAdjAllowed'
			,blnWSCreditRequest AS 'WSCreditRequest'
			,blnWSCreditRequestsRemove AS 'WSCreditRequestsRemove'
			,blnWSCRAdjAllowed AS 'WSCRAdjAllowed'
			,blnWSAllowCreditNotesAndRequestItems AS 'WSAllowCreditNotesAndRequestItems'
			,blnWSReceipts AS 'WSReceipts'
			,blnWSReceiptsReversal AS 'WSReceiptsReversal'
			,blnWSServiceableItem AS 'WSServiceableItem'
			,blnWSServiceableItemType AS 'WSServiceableItemType'
			,blnWSJobTemplate AS 'WSJobTemplate'
			,blnWSSetupTechnician AS 'WSSetupTechnician'
			,blnWSSchedule AS 'WSSchedule'
			,blnWSInventoryIssue AS 'WSInventoryIssue'
			,blnworkshop0 AS 'workshop0'
			,blnWSTran AS 'WSTran'
			,blnWSWorkInProgress AS 'WSWorkInProgress'
			,blnWSJobProfitability AS 'WSJobProfitability'
			,blnWSResourceUsage AS 'WSResourceUsage'
			,blnWSJobCostVariance AS 'WSJobCostVariance'
			,blnWSLists AS 'WSLists'
			,blnWSJobTemplateList AS 'WSJobTemplateList'
			,blnWSProcDocuments AS 'WSProcDocuments'
			,blnWSViewMarginPercentage AS 'WSViewMarginPercentage'
			,blnWSCreditBlockIJB AS 'WSCreditBlockIJB'
			,blnWSCreditBlockPJB AS 'WSCreditBlockPJB'
			,blnARConfirmDeliveryAllowed AS 'ARConfirmDeliveryAllowed'
			,blnGLContracts AS 'GLContracts'
			,blnGLLRContracts AS 'GLLRContracts'
			,blnGLLRContractsMonthly AS 'GLLRContractsMonthly'
			,blnGLLRContractsIncomeStatement AS 'GLLRContractsIncomeStatement'
			,blnPOSPayouts AS 'POSPayouts'
			,blnARLayby AS 'ARLayby'
			,blnARChangeCustOnLB AS 'ARChangeCustOnLB'
			,blnARLaybyRemove AS 'ARLaybyRemove'
			,blnARLBAdjAllowed AS 'ARLBAdjAllowed'
			,blnARCreditBlockLB AS 'ARCreditBlockLB'
			,blnPOSLayby AS 'POSLayby'
			,blnPOSConvertLayby AS 'POSConvertLayby'
			,blnAPVenRecon AS 'APVenRecon'
			,blnAPVenReconWorksheet AS 'APVenReconWorksheet'
			,blnAPBuyers AS 'APBuyers'
			,blnAPVenReconTypes AS 'APVenReconTypes'
			,blnBRProjResources AS 'BRProjResources'
			,blnBRProjFinInfo AS 'BRProjFinInfo'
			,blnBRProjChecklist AS 'BRProjChecklist'
			,blnBRProjCashFlow AS 'BRProjCashFlow'
			,blnARPODManagement AS 'ARPODManagement'
			,blnInvEmployee AS 'InvEmployee'
			,blnApproveInventoryRequistion AS 'ApproveInventoryRequistion'
			,blnAPSetupIRApprovers AS 'APSetupIRApprovers'
			,blnPOSAuthoriseReturn AS 'POSAuthoriseReturn'
		FROM tblUsers(NOLOCK)
		WHERE blnAPSetupPOApprovers = 1
			AND (
				strUserName NOT IN (
					SELECT strUserName
					FROM tblApprovalsDocLimit(NOLOCK)
					WHERE intApproverType = 0
					)
				)
			AND (blnApprovePurchaseOrders = 1)
	END
	ELSE IF (@ApproverType = 1)
	BEGIN
		SELECT tblUsers.strUserName AS 'UserName'
			,strName AS 'Name'
			,strCellNumber AS 'CellNumber'
			,strEmail AS 'Email'
			,strPassword AS 'Password'
			,blnIsAdmin AS 'IsAdmin'
			,blnIsLockedOut AS 'IsLockedOut'
			,blnMustChange AS 'MustChange'
			,blnCompany AS 'Company'
			,blnCoFileHandle AS 'CoFileHandle'
			,blnGL AS 'GL'
			,blnPayables AS 'Payables'
			,blnPayPayments AS 'PayPayments'
			,blnReceivables AS 'Receivables'
			,blnRecReceipts AS 'RecReceipts'
			,blnInventory AS 'Inventory'
			,blnInvAdjust AS 'InvAdjust'
			,blnInvCount AS 'InvCount'
			,blnSMS AS 'SMS'
			,blnBusMgr AS 'BusMgr'
			,blnPOS AS 'POS'
			,blnProjects AS 'Projects'
			,dteLastLogin AS 'LastLogin'
			,blnCashBook AS 'CashBook'
			,blnReminders AS 'Reminders'
			,blnMarketing AS 'Marketing'
			,blnCollection AS 'Collection'
			,blnPOSCash AS 'POSCash'
			,blnCoAdmin AS 'CoAdmin'
			,blnMainSum AS 'MainSum'
			,blnAcctSets AS 'AcctSets'
			,blnJournal AS 'Journal'
			,blnBankTrans AS 'BankTrans'
			,blnBankRecon AS 'BankRecon'
			,blnAPPurch AS 'APPurch'
			,blnAPTax AS 'APTax'
			,blnARCredit AS 'ARCredit'
			,blnARSales AS 'ARSales'
			,blnARBatch AS 'ARBatch'
			,blnInvPricelists AS 'InvPricelists'
			,blnInvLoc AS 'InvLoc'
			,blnInvCats AS 'InvCats'
			,blnInvAssbly AS 'InvAssbly'
			,blnInvTrans AS 'InvTrans'
			,blnSMSCredits AS 'SMSCredits'
			,blnPOSDrop AS 'POSDrop'
			,blnPOSTerminalSetup AS 'POSTerminalSetup'
			,blnPOSTerminalSetupList AS 'POSTerminalSetupList'
			,blnPOSProfileMenu AS 'POSProfileMenu'
			,blnBulkSMS AS 'BulkSMS'
			,blnGLExpense AS 'GLExpense'
			,blnDeposits AS 'Deposits'
			,blnInvPDT AS 'InvPDT'
			,blnARPersons AS 'ARPersons'
			,blnAPBatch AS 'APBatch'
			,blnAPBrowser AS 'APBrowser'
			,blnARBrowser AS 'ARBrowser'
			,blnTemplates AS 'Templates'
			,blnAREmail AS 'AREmail'
			,blnWHRec AS 'WHRec'
			,blnWHPick AS 'WHPick'
			,blnWHBatch AS 'WHBatch'
			,uID AS 'uid'
			,blnFiles AS 'Files'
			,strLocName AS 'LocName'
			,blnCycle AS 'Cycle'
			,blnInterest AS 'Interest'
			,blnAPOrders AS 'APOrders'
			,blnAPReq AS 'APReq'
			,blnAROrders AS 'AROrders'
			,blnARQuotes AS 'ARQuotes'
			,blnARQuSys AS 'ARQuSys'
			,blnWHStPick AS 'WHStPick'
			,blnInvBrowser AS 'InvBrowser'
			,blnWHShp AS 'WHShp'
			,blnWHPrPack AS 'WHPrPack'
			,blnWHCont AS 'WHCont'
			,blnWHMani AS 'WHMani'
			,blnWHShBrow AS 'WHShBrow'
			,blnJobCost AS 'JobCost'
			,blnDept AS 'Dept'
			,blnSubLedger AS 'SubLedger'
			,blnCLetters AS 'CLetters'
			,blnTop20 AS 'Top20'
			,blnTransTab AS 'TransTab'
			,blnRecPayJournal AS 'RecPayJournal'
			,blnARCats AS 'ARCats'
			,blnInvDiscMatrix AS 'InvDiscMatrix'
			,blnARBlockDesc AS 'ARBlockDesc'
			,blnARBlockUnit AS 'ARBlockUnit'
			,blnARBlockDiscount AS 'ARBlockDiscount'
			,blnAPBlockDesc AS 'APBlockDesc'
			,blnAPBlockUnit AS 'APBlockUnit'
			,blnAPBlockDiscount AS 'APBlockDiscount'
			,blnWHDelDriver AS 'WHDelDriver'
			,blnWHDelVehicle AS 'WHDelVehicle'
			,blnWHDelRoute AS 'WHDelRoute'
			,blnARCreditRequests AS 'ARCreditRequests'
			,blnBITab AS 'BITab'
			,blnBICubeAdd AS 'BICubeAdd'
			,blnBICubeEdit AS 'BICubeEdit'
			,blnBICubeDelete AS 'BICubeDelete'
			,blnBIViewAdd AS 'BIViewAdd'
			,blnBIViewEdit AS 'BIViewEdit'
			,blnBIViewDelete AS 'BIViewDelete'
			,blnARSendPricelists AS 'ARSendPricelists'
			,blnInvNumConv AS 'InvNumConv'
			,blnInvSerialTypes AS 'InvSerialTypes'
			,blnAPCats AS 'APCats'
			,blnARPrintPreview AS 'ARPrintPreview'
			,blnARCNChangesAllowed AS 'ARCNChangesAllowed'
			,blnARPriceChangeAllowed AS 'ARPriceChangeAllowed'
			,blnAPDNChangesAllowed AS 'APDNChangesAllowed'
			,blnARInvoiceAdjAllowed AS 'ARInvoiceAdjAllowed'
			,blnARAllowCreditNotesAndRequestItems AS 'ARAllowCreditNotesAndRequestItems'
			,blnAPPaymentApprovals AS 'APPaymentApprovals'
			,blnInvForecasting AS 'InvForecasting'
			,blnInvBarcode AS 'InvBarcode'
			,blnInvItemCostUpdater AS 'InvItemCostUpdater'
			,blnInvItemRenaming AS 'InvItemRenaming'
			,blnAPECOMSettings AS 'APECOMSettings'
			,blnAPShowStatsOnDocs AS 'APShowStatsOnDocs'
			,blnARShowStatsOnDocs AS 'ARShowStatsOnDocs'
			,blnGLOpenItemAlloc AS 'GLOpenItemAlloc'
			,blnGLLR AS 'GLLR'
			,blnGLLRFin AS 'GLLRFin'
			,blnGLLRFinBalSheetStd AS 'GLLRFinBalSheetStd'
			,blnGLLRFinBalSheetComp AS 'GLLRFinBalSheetComp'
			,blnGLLRFinIncomeStd AS 'GLLRFinIncomeStd'
			,blnGLLRFinIncomeComp AS 'GLLRFinIncomeComp'
			,blnGLLRFinIncomeMulti AS 'GLLRFinIncomeMulti'
			,blnGLLRFinIncomeGP AS 'GLLRFinIncomeGP'
			,blnGLLRFinIncomeMini AS 'GLLRFinIncomeMini'
			,blnGLLRFinTrialBal AS 'GLLRFinTrialBal'
			,blnGLLRFinPerMovement AS 'GLLRFinPerMovement'
			,blnGLLRFinMultiCompany AS 'GLLRFinMultiCompany'
			,blnGLLRTran AS 'GLLRTran'
			,blnGLLRTranLedger AS 'GLLRTranLedger'
			,blnGLLRTranEntryType AS 'GLLRTranEntryType'
			,blnGLLRTranTax AS 'GLLRTranTax'
			,blnGLLRTranDocTran AS 'GLLRTranDocTran'
			,blnGLLRBudgets AS 'GLLRBudgets'
			,blnGLLRBudgetsAmounts AS 'GLLRBudgetsAmounts'
			,blnGLLRBudgetsCompIncome AS 'GLLRBudgetsCompIncome'
			,blnGLLRBudgetsCompIncomeF AS 'GLLRBudgetsCompIncomeF'
			,blnGLLRBudgetsCompBalSheet AS 'GLLRBudgetsCompBalSheet'
			,blnGLLRDept AS 'GLLRDept'
			,blnGLLRDeptBalSheetStd AS 'GLLRDeptBalSheetStd'
			,blnGLLRDeptIncomeStd AS 'GLLRDeptIncomeStd'
			,blnGLLRDeptIncomeComp AS 'GLLRDeptIncomeComp'
			,blnGLLRDeptTrialBal AS 'GLLRDeptTrialBal'
			,blnGLLRDeptLedger AS 'GLLRDeptLedger'
			,blnGLLRDeptBudgetAmounts AS 'GLLRDeptBudgetAmounts'
			,blnGLLRDeptCompIncome AS 'GLLRDeptCompIncome'
			,blnGLLRLists AS 'GLLRLists'
			,blnGLLRListsAccounts AS 'GLLRListsAccounts'
			,blnGLLRListsAccountSets AS 'GLLRListsAccountSets'
			,blnGLLRListsJournalCodes AS 'GLLRListsJournalCodes'
			,blnGLCR AS 'GLCR'
			,blnGLCRFin AS 'GLCRFin'
			,blnGLCRFinIncome AS 'GLCRFinIncome'
			,blnGLCRFinIncomeMulti AS 'GLCRFinIncomeMulti'
			,blnGLCRTran AS 'GLCRTran'
			,blnGLCRTranAlloc AS 'GLCRTranAlloc'
			,blnGLCRTranAllocMissing AS 'GLCRTranAllocMissing'
			,blnGLCRBudget AS 'GLCRBudget'
			,blnGLCRBudgetCompBudget AS 'GLCRBudgetCompBudget'
			,blnGLCRLists AS 'GLCRLists'
			,blnGLCRListsProfitCenters AS 'GLCRListsProfitCenters'
			,blnAPPR AS 'APPR'
			,blnAPPRFin AS 'APPRFin'
			,blnAPPRFinVendorAged AS 'APPRFinVendorAged'
			,blnAPPRTran AS 'APPRTran'
			,blnAPPRTranVendorPurchases AS 'APPRTranVendorPurchases'
			,blnAPPRTranPendingPurchaseOrders AS 'APPRTranPendingPurchaseOrders'
			,blnAPPRTranPendingPurchaseReq AS 'APPRTranPendingPurchaseReq'
			,blnAPPRTranVendorTran AS 'APPRTranVendorTran'
			,blnAPPRLists AS 'APPRLists'
			,blnAPPRListsVendors AS 'APPRListsVendors'
			,blnAPPRListsContacts AS 'APPRListsContacts'
			,blnARRR AS 'ARRR'
			,blnARRRFin AS 'ARRRFin'
			,blnARRRFinCustAged AS 'ARRRFinCustAged'
			,blnARRRFinCallSheet AS 'ARRRFinCallSheet'
			,blnARRRFinCustStatements AS 'ARRRFinCustStatements'
			,blnARRRFinSalesStatements AS 'ARRRFinSalesStatements'
			,blnARRRFinInvoiceGP AS 'ARRRFinInvoiceGP'
			,blnARRRFinCustProfiability AS 'ARRRFinCustProfiability'
			,blnARRRFinCustSalesTargets AS 'ARRRFinCustSalesTargets'
			,blnARRRFinCustSalesTrends AS 'ARRRFinCustSalesTrends'
			,blnARRRFinSPPerf AS 'ARRRFinSPPerf'
			,blnARRRFinSPTargets AS 'ARRRFinSPTargets'
			,blnARRRTran AS 'ARRRTran'
			,blnARRRTranCustSales AS 'ARRRTranCustSales'
			,blnARRRTranSPSales AS 'ARRRTranSPSales'
			,blnARRRTranSPMissing AS 'ARRRTranSPMissing'
			,blnARRRTranInvoiceDocs AS 'ARRRTranInvoiceDocs'
			,blnARRRTranCashUp AS 'ARRRTranCashUp'
			,blnARRRTranPendingSalesOrders AS 'ARRRTranPendingSalesOrders'
			,blnARRRTranClosedSalesOrders AS 'ARRRTranClosedSalesOrders'
			,blnARRRTranCredits AS 'ARRRTranCredits'
			,blnARRRTranCustTran AS 'ARRRTranCustTran'
			,blnARRRTranOpenQuotes AS 'ARRRTranOpenQuotes'
			,blnARRRLists AS 'ARRRLists'
			,blnARRRListsPricelist AS 'ARRRListsPricelist'
			,blnARRRListsCustomers AS 'ARRRListsCustomers'
			,blnARRRListsSalesPersons AS 'ARRRListsSalesPersons'
			,blnARRRListsContactsList AS 'ARRRListsContactsList'
			,blnIR AS 'IR'
			,blnIRFin AS 'IRFin'
			,blnIRFinInvAged AS 'IRFinInvAged'
			,blnIRFinInvValuation AS 'IRFinInvValuation'
			,blnIRFinLocSum AS 'IRFinLocSum'
			,blnIRFinInvLoc AS 'IRFinInvLoc'
			,blnIRFinInvBin AS 'IRFinInvBin'
			,blnIRFinQuantity AS 'IRFinQuantity'
			,blnIRFinQuantityLoc AS 'IRFinQuantityLoc'
			,blnIRFinInvSalesTargets AS 'IRFinInvSalesTargets'
			,blnIRTran AS 'IRTran'
			,blnIRTranInvSales AS 'IRTranInvSales'
			,blnIRTranInvTran AS 'IRTranInvTran'
			,blnIRTranInvLedger AS 'IRTranInvLedger'
			,blnIRTranInvLedgerLoc AS 'IRTranInvLedgerLoc'
			,blnIRTranNegInvCorrections AS 'IRTranNegInvCorrections'
			,blnIRTranPricelistChangeLog AS 'IRTranPricelistChangeLog'
			,blnIRTranSegInvMovement AS 'IRTranSegInvMovement'
			,blnIRTranSegInvSales AS 'IRTranSegInvSales'
			,blnIRTranSerializedItemTracking AS 'IRTranSerializedItemTracking'
			,blnIRLists AS 'IRLists'
			,blnIRListsPricing AS 'IRListsPricing'
			,blnIRListsInventory AS 'IRListsInventory'
			,blnIRListsStockCountSheets AS 'IRListsStockCountSheets'
			,blnIRListsAdjustments AS 'IRListsAdjustments'
			,blnWR AS 'WR'
			,blnWROrders AS 'WROrders'
			,blnWROrdersPendingPurchaseOrders AS 'WROrdersPendingPurchaseOrders'
			,blnWROrdersPendingSalesOrders AS 'WROrdersPendingSalesOrders'
			,blnPOSR AS 'POSR'
			,blnPOSRFin AS 'POSRFin'
			,blnPOSRFinDrawerClosing AS 'POSRFinDrawerClosing'
			,blnPOSRFinCashierVariance AS 'POSRFinCashierVariance'
			,blnPOSRLists AS 'POSRLists'
			,blnPOSRListsCashDrawers AS 'POSRListsCashDrawers'
			,blnBR AS 'BR'
			,blnBRProj AS 'BRProj'
			,blnBRProjTender AS 'BRProjTender'
			,blnBRProjAlloc AS 'BRProjAlloc'
			,blnBRProjMissingAllow AS 'BRProjMissingAllow'
			,blnBRProjSalesMatrix AS 'BRProjSalesMatrix'
			,blnBRProjPurchMatrix AS 'BRProjPurchMatrix'
			,blnBRProjCombinedMatrix AS 'BRProjCombinedMatrix'
			,blnBRProjActvsBudget AS 'BRProjActvsBudget'
			,blnBRAdmin AS 'BRAdmin'
			,blnBRAdminHistory AS 'BRAdminHistory'
			,blnSMSRLog AS 'SMSRLog'
			,blnGLJournalReports AS 'GLJournalReports'
			,blnGLTransactionReports AS 'GLTransactionReports'
			,blnAPPaymentsReports AS 'APPaymentsReports'
			,blnAPTransactionsReports AS 'APTransactionsReports'
			,blnARReceiptsReports AS 'ARReceiptsReports'
			,blnARTransactionsReports AS 'ARTransactionsReports'
			,blnISalesReports AS 'ISalesReports'
			,blnITransactionsReports AS 'ITransactionsReports'
			,blnSMSR AS 'SMSR'
			,blnFHQCanApprove AS 'FHQCanApprove'
			,blnFHQCreatePurchaseOrder AS 'FHQCreatePurchaseOrder'
			,blnARViewMarginPercentage AS 'ARViewMarginPercentage'
			,blnAPPendingPayApprovals AS 'APPendingPayApprovals'
			,blnGLLRTranCashBook AS 'GLLRTranCashBook'
			,blnAPPRTranVendAccrual AS 'APPRTranVendAccrual'
			,blnIRListsItemWhereUsed AS 'IRListsItemWhereUsed'
			,blnIRTranBillOfMaterials AS 'IRTranBillOfMaterials'
			,blnAPBulkRFQ AS 'APBulkRFQ'
			,blnInvProdSchedule AS 'InvProdSchedule'
			,blnInvWorkCentres AS 'InvWorkCentres'
			,blnIRListsProductionSchedule AS 'IRListsProductionSchedule'
			,blnAPPRTranBulkRFQ AS 'APPRTranBulkRFQ'
			,blnRecReceiptsReversal AS 'RecReceiptsReversal'
			,blnARRRTranSalesSummary AS 'ARRRTranSalesSummary'
			,blnDashMain AS 'DashMain'
			,blnDashBusiness AS 'DashBusiness'
			,blnDashAR AS 'DashAR'
			,blnARChangeCustOnSO AS 'ARChangeCustOnSO'
			,blnARChangeCustOnSQ AS 'ARChangeCustOnSQ'
			,blnAPOrdersRemove AS 'APOrdersRemove'
			,blnAPReqRemove AS 'APReqRemove'
			,blnAROrdersRemove AS 'AROrdersRemove'
			,blnARQuotesRemove AS 'ARQuotesRemove'
			,blnARCreditRequestsRemove AS 'ARCreditRequestsRemove'
			,blnAPBlockTax AS 'APBlockTax'
			,blnARBlockTax AS 'ARBlockTax'
			,blnAPBulkRFQRemove AS 'APBulkRFQRemove'
			,blnARQuSysRemove AS 'ARQuSysRemove'
			,blnWHStPickRemove AS 'WHStPickRemove'
			,blnWHRecRemove AS 'WHRecRemove'
			,blnWHShpRemove AS 'WHShpRemove'
			,blnWHContRemove AS 'WHContRemove'
			,blnARMatrixType AS 'ARMatrixType'
			,blnARMatrixTypeEdit AS 'ARMatrixTypeEdit'
			,blnARMatrixTypeRemove AS 'ARMatrixTypeRemove'
			,blnIRTranInvEfficiency AS 'IRTranInvEfficiency'
			,blnInvLotNumExpiryDates AS 'InvLotNumExpiryDates'
			,blnARRRTranMatrixTypeChangeLog AS 'ARRRTranMatrixTypeChangeLog'
			,blnInvBulkLabelPrinting AS 'InvBulkLabelPrinting'
			,bitInvVoucher AS 'InvVoucher'
			,blnInvShowItemCost AS 'InvShowItemCost'
			,bitInvWebstoreSync AS 'InvWebstoreSync'
			,strSalesName AS 'SalesName'
			,IsNull(intARDept, 0) AS 'ARDept'
			,IsNUll(intAPDept, 0) AS 'APDept'
			,bitARVoucerReprint AS 'ARVoucerReprint'
			,blnARChangeDocInfo AS 'ARChangeDocInfo'
			,blnAPChangeDocInfo AS 'APChangeDocInfo'
			,blnFADepreciateAsset AS 'FADepreciateAsset'
			,blnFAAssets AS 'FAAssets'
			,blnFAAssetTypes AS 'FAAssetTypes'
			,blnFADepreciationMethods AS 'FADepreciationMethods'
			,blnFACostTypes AS 'FACostTypes'
			,blnFADisposalMethods AS 'FADisposalMethods'
			,blnFAR AS 'FAR'
			,blnFARSummary AS 'FARSummary'
			,blnFARAssetListing AS 'FARAssetListing'
			,blnFARDisposals AS 'FARDisposals'
			,blnFARDepreciationListing AS 'FARDepreciationListing'
			,blnFARAssetPurchases AS 'FARAssetPurchases'
			,blnFARAssetEfficiency AS 'FARAssetEfficiency'
			,
			--0 As 'FARAssetClass',
			blnInvDimensions AS 'InvDimensions'
			,blnInvValueBasedPrice AS 'InvValueBasedPrice'
			,blnInvValueBasedPriceEdit AS 'InvValueBasedPriceEdit'
			,blnInvValueBasedPriceRemove AS 'InvValueBasedPriceRemove'
			,blnFARTran AS 'FARTran'
			,blnFARLists AS 'FARLists'
			,blnARSOAdjAllowed AS 'ARSOAdjAllowed'
			,blnARSQAdjAllowed AS 'ARSQAdjAllowed'
			,blnARFHQAdjAllowed AS 'ARFHQAdjAllowed'
			,blnARCNAdjAllowed AS 'ARCNAdjAllowed'
			,blnARCRAdjAllowed AS 'ARCRAdjAllowed'
			,blnARCreditNotes AS 'ARCreditNotes'
			,blnARChangeDept AS 'ARChangeDept'
			,blnAPInvoiceAdjAllowed AS 'APInvoiceAdjAllowed'
			,blnAPPOAdjAllowed AS 'APPOAdjAllowed'
			,blnAPPRAdjAllowed AS 'APPRAdjAllowed'
			,blnARChangeCenter AS 'ARChangeCenter'
			,bitPOSEnableEditDiscount AS 'POSEnableEditDiscount'
			,blnPOSOrders AS 'POSOrders'
			,blnPOSQuotes AS 'POSQuotes'
			,blnPOSConvertOrders AS 'POSConvertOrders'
			,blnPOSConvertQuotes AS 'POSConvertQuotes'
			,blnPOSAuthPayByAccount AS 'POSAuthPayByAccount'
			,blnPOSAuthoriseRefunds AS 'POSAuthoriseRefunds'
			,blnARCreditBlockSI AS 'ARCreditBlockSI'
			,blnARCreditBlockSO AS 'ARCreditBlockSO'
			,blnARDeliveryAdvice AS 'ARDeliveryAdvice'
			,blnARDeliveryAdviceRemove AS 'ARDeliveryAdviceRemove'
			,blnInvCanChangeSellingPrice AS 'InvCanChangeSellingPrice'
			,blnARSalesPersonChangeApproval AS 'ARSalesPersonChangeApproval'
			,blnIRFinInvCostAnalysis AS 'IRFinInvCostAnalysis'
			,blnMFWorkOrders AS 'MFWorkOrders'
			,blnMFJobs AS 'MFJobs'
			,blnMFJobAdjustApproval AS 'MFJobAdjustApproval'
			,blnMFProductionSchedule AS 'MFProductionSchedule'
			,blnMFPostWIP AS 'MFPostWIP'
			,blnMFBillOfMaterial AS 'MFBillOfMaterial'
			,blnMFBOMAdjustApproval AS 'MFBOMAdjustApproval'
			,blnMFWorkCentres AS 'MFWorkCentres'
			,blnMFLabour AS 'MFLabour'
			,blnMFMachinery AS 'MFMachinery'
			,blnMFTransferJobs AS 'MFTransferJobs'
			,blnMFR AS 'MFR'
			,blnMFRTran AS 'MFRTran'
			,blnMFRWorkInProgress AS 'MFRWorkInProgress'
			,blnMFRLists AS 'MFRLists'
			,blnMFRBillOfMaterial AS 'MFRBillOfMaterial'
			,blnMFRResource AS 'MFRResource'
			,blnMFRItemWhereUsed AS 'MFRItemWhereUsed'
			,blnMFRSerialLotOutOfSeq AS 'MFRSerialLotOutOfSeq'
			,blnMFRMRP AS 'MFRMRP'
			,blnInvWorkOrder AS 'InvWorkOrder'
			,blnInvIntReq AS 'InvIntReq'
			,blnInvIssReq AS 'InvIssReq'
			,blnARRRTranCustAccrual AS 'ARRRTranCustAccrual'
			,blnARRRFinOrderStatement AS 'ARRRFinOrderStatement'
			,blnIRListsInvIntReq AS 'IRListsInvIntReq'
			,blnMFCloseJobs AS 'MFCloseJobs'
			,blnFAAssetsDisposal AS 'FAAssetsDisposal'
			,blnFAAssetsLocations AS 'FAAssetsLocations'
			,blnFARAssetRegister AS 'FARAssetRegister'
			,blnDashAP AS 'DashAP'
			,blnDashInventory AS 'DashInventory'
			,blnDashWarehouse AS 'DashWarehouse'
			,blnAPSetupPOApprovers AS 'APSetupPOApprovers'
			,blnApprovePurchaseOrders AS 'ApprovePurchaseOrders'
			,blnMFRWCTransfer AS 'MFRWCTransfer'
			,blnInvCatMarginApproval AS 'InvCatMarginApproval'
			,blnMobSa AS 'MobSa'
			,blnMobSaOrdProcess AS 'MobSaOrdProcess'
			,blnMobSaGeoTrack AS 'MobSaGeoTrack'
			,blnMobPhDash AS 'MobPhDash'
			,blnMobPhDashBankBal AS 'MobPhDashBankBal'
			,blnMobPhDashSalesItemComp AS 'MobPhDashSalesItemComp'
			,blnMobPhDashSalesCustCat AS 'MobPhDashSalesCustCat'
			,blnMobPhDashOutCustCat AS 'MobPhDashOutCustCat'
			,blnMobPhDashCustVendBal AS 'MobPhDashCustVendBal'
			,blnMobPhDashInvQty AS 'MobPhDashInvQty'
			,blnMobPhDashSalesPerf AS 'MobPhDashSalesPerf'
			,blnMobPhPOApproval AS 'MobPhPOApproval'
			,blnMobPhDashTimesheet AS 'MobPhDashTimesheet'
			,blnBRProjClaimStatement AS 'BRProjClaimStatement'
			,blnARRRTranCancelSalesDocs AS 'ARRRTranCancelSalesDocs'
			,blnAREditDeliveryMethod AS 'AREditDeliveryMethod'
			,blnInvIsRepackaging AS 'InvIsRepackaging'
			,blnIRRepackaging AS 'IRRepackaging'
			,blnContractBilling AS 'ContractBilling'
			,blnContractBillingType AS 'ContractBillingType'
			,blnProcessContractBilling AS 'ProcessContractBilling'
			,blnARRRecurringInvoice AS 'ARRRecurringInvoice'
			,blnARRContractExpiry AS 'ARRContractExpiry'
			,blnARRContractReconciliation AS 'ARRContractReconciliation'
			,blnAPReOrders AS 'APReOrders'
			,blnARShipmentsAuditTrail AS 'ARShipmentsAuditTrail'
			,blnARSalesOrderEDI AS 'ARSalesOrderEDI'
			,blnAPGRVAdjustmentApproval AS 'WHRecAdjust'
			,blnAPReturnSelection AS 'APReturn'
			,blnAPReturnAdjustmentApproval AS 'RetAprAdjust'
			,blnARDAAdjustmentApproval AS 'ARDeliveryAdviceAdjustApproval'
			,blnWHDelMethod AS WHDelMethod
			,blnIRTranLotNumMovement AS 'IRTranLotNumberMovement'
			,blnBankManager AS 'BankManager'
			,blnAPPRTranInvoiceDocs AS 'APPRTranInvoiceDocs'
			,blnMFRJobStatus AS 'MFRJobStatus'
			,blnMFRProdVariance AS 'MFRProdVariance'
			,blnMFRManVariance AS 'MFRManVariance'
			,blnAPPriceChangeAllowed AS 'APPriceChangeAllowed'
			,blnDashManage AS 'DashManage'
			,blnGLMergeAccounts AS 'MergeAcct'
			,blnWSWorkshop AS 'WSWorkshop'
			,blnWSBrowser AS 'WSBrowser'
			,blnWSInvoice AS 'WSInvoice'
			,blnWSInvoiceAdjAllowed AS 'WSInvoiceAdjAllowed'
			,blnWSPrintPreview AS 'WSPrintPreview'
			,blnWSProcessJob AS 'WSProcessJob'
			,blnWSProcessJobRemove AS 'WSProcessJobRemove'
			,blnWSProcessJobAdjAllowed AS 'WSProcessJobAdjAllowed'
			,blnWSQuote AS 'WSQuote'
			,blnWSQuoteRemove AS 'WSQuoteRemove'
			,blnWSQuoteAdjAllowed AS 'WSQuoteAdjAllowed'
			,blnWSCreditNote AS 'WSCreditNote'
			,blnWSCNChangesAllowed AS 'WSCNChangesAllowed'
			,blnWSCNAdjAllowed AS 'WSCNAdjAllowed'
			,blnWSCreditRequest AS 'WSCreditRequest'
			,blnWSCreditRequestsRemove AS 'WSCreditRequestsRemove'
			,blnWSCRAdjAllowed AS 'WSCRAdjAllowed'
			,blnWSAllowCreditNotesAndRequestItems AS 'WSAllowCreditNotesAndRequestItems'
			,blnWSReceipts AS 'WSReceipts'
			,blnWSReceiptsReversal AS 'WSReceiptsReversal'
			,blnWSServiceableItem AS 'WSServiceableItem'
			,blnWSServiceableItemType AS 'WSServiceableItemType'
			,blnWSJobTemplate AS 'WSJobTemplate'
			,blnWSSetupTechnician AS 'WSSetupTechnician'
			,blnWSSchedule AS 'WSSchedule'
			,blnWSInventoryIssue AS 'WSInventoryIssue'
			,blnworkshop0 AS 'workshop0'
			,blnWSTran AS 'WSTran'
			,blnWSWorkInProgress AS 'WSWorkInProgress'
			,blnWSJobProfitability AS 'WSJobProfitability'
			,blnWSResourceUsage AS 'WSResourceUsage'
			,blnWSJobCostVariance AS 'WSJobCostVariance'
			,blnWSLists AS 'WSLists'
			,blnWSJobTemplateList AS 'WSJobTemplateList'
			,blnWSProcDocuments AS 'WSProcDocuments'
			,blnWSViewMarginPercentage AS 'WSViewMarginPercentage'
			,blnWSCreditBlockIJB AS 'WSCreditBlockIJB'
			,blnWSCreditBlockPJB AS 'WSCreditBlockPJB'
			,blnARConfirmDeliveryAllowed AS 'ARConfirmDeliveryAllowed'
			,blnGLContracts AS 'GLContracts'
			,blnGLLRContracts AS 'GLLRContracts'
			,blnGLLRContractsMonthly AS 'GLLRContractsMonthly'
			,blnGLLRContractsIncomeStatement AS 'GLLRContractsIncomeStatement'
			,blnPOSPayouts AS 'POSPayouts'
			,blnARLayby AS 'ARLayby'
			,blnARChangeCustOnLB AS 'ARChangeCustOnLB'
			,blnARLaybyRemove AS 'ARLaybyRemove'
			,blnARLBAdjAllowed AS 'ARLBAdjAllowed'
			,blnARCreditBlockLB AS 'ARCreditBlockLB'
			,blnPOSLayby AS 'POSLayby'
			,blnPOSConvertLayby AS 'POSConvertLayby'
			,blnAPVenRecon AS 'APVenRecon'
			,blnAPVenReconWorksheet AS 'APVenReconWorksheet'
			,blnAPBuyers AS 'APBuyers'
			,blnAPVenReconTypes AS 'APVenReconTypes'
			,blnBRProjResources AS 'BRProjResources'
			,blnBRProjFinInfo AS 'BRProjFinInfo'
			,blnBRProjChecklist AS 'BRProjChecklist'
			,blnBRProjCashFlow AS 'BRProjCashFlow'
			,blnARPODManagement AS 'ARPODManagement'
			,blnInvEmployee AS 'InvEmployee'
			,blnApproveInventoryRequistion AS 'ApproveInventoryRequistion'
			,blnAPSetupIRApprovers AS 'APSetupIRApprovers'
			,blnPOSAuthoriseReturn AS 'POSAuthoriseReturn'
		FROM tblUsers(NOLOCK)
		WHERE blnApproveInventoryRequistion = 1
			AND strUserName NOT IN (
				SELECT strUserName
				FROM tblApprovalsDocLimit(NOLOCK)
				WHERE intApproverType = 1
				)
	END

	ELSE IF (@ApproverType = 2)
	BEGIN
		SELECT tblUsers.strUserName AS 'UserName'
			,strName AS 'Name'
			,strCellNumber AS 'CellNumber'
			,strEmail AS 'Email'
			,strPassword AS 'Password'
			,blnIsAdmin AS 'IsAdmin'
			,blnIsLockedOut AS 'IsLockedOut'
			,blnMustChange AS 'MustChange'
			,blnCompany AS 'Company'
			,blnCoFileHandle AS 'CoFileHandle'
			,blnGL AS 'GL'
			,blnPayables AS 'Payables'
			,blnPayPayments AS 'PayPayments'
			,blnReceivables AS 'Receivables'
			,blnRecReceipts AS 'RecReceipts'
			,blnInventory AS 'Inventory'
			,blnInvAdjust AS 'InvAdjust'
			,blnInvCount AS 'InvCount'
			,blnSMS AS 'SMS'
			,blnBusMgr AS 'BusMgr'
			,blnPOS AS 'POS'
			,blnProjects AS 'Projects'
			,dteLastLogin AS 'LastLogin'
			,blnCashBook AS 'CashBook'
			,blnReminders AS 'Reminders'
			,blnMarketing AS 'Marketing'
			,blnCollection AS 'Collection'
			,blnPOSCash AS 'POSCash'
			,blnCoAdmin AS 'CoAdmin'
			,blnMainSum AS 'MainSum'
			,blnAcctSets AS 'AcctSets'
			,blnJournal AS 'Journal'
			,blnBankTrans AS 'BankTrans'
			,blnBankRecon AS 'BankRecon'
			,blnAPPurch AS 'APPurch'
			,blnAPTax AS 'APTax'
			,blnARCredit AS 'ARCredit'
			,blnARSales AS 'ARSales'
			,blnARBatch AS 'ARBatch'
			,blnInvPricelists AS 'InvPricelists'
			,blnInvLoc AS 'InvLoc'
			,blnInvCats AS 'InvCats'
			,blnInvAssbly AS 'InvAssbly'
			,blnInvTrans AS 'InvTrans'
			,blnSMSCredits AS 'SMSCredits'
			,blnPOSDrop AS 'POSDrop'
			,blnPOSTerminalSetup AS 'POSTerminalSetup'
			,blnPOSTerminalSetupList AS 'POSTerminalSetupList'
			,blnPOSProfileMenu AS 'POSProfileMenu'
			,blnBulkSMS AS 'BulkSMS'
			,blnGLExpense AS 'GLExpense'
			,blnDeposits AS 'Deposits'
			,blnInvPDT AS 'InvPDT'
			,blnARPersons AS 'ARPersons'
			,blnAPBatch AS 'APBatch'
			,blnAPBrowser AS 'APBrowser'
			,blnARBrowser AS 'ARBrowser'
			,blnTemplates AS 'Templates'
			,blnAREmail AS 'AREmail'
			,blnWHRec AS 'WHRec'
			,blnWHPick AS 'WHPick'
			,blnWHBatch AS 'WHBatch'
			,uID AS 'uid'
			,blnFiles AS 'Files'
			,strLocName AS 'LocName'
			,blnCycle AS 'Cycle'
			,blnInterest AS 'Interest'
			,blnAPOrders AS 'APOrders'
			,blnAPReq AS 'APReq'
			,blnAROrders AS 'AROrders'
			,blnARQuotes AS 'ARQuotes'
			,blnARQuSys AS 'ARQuSys'
			,blnWHStPick AS 'WHStPick'
			,blnInvBrowser AS 'InvBrowser'
			,blnWHShp AS 'WHShp'
			,blnWHPrPack AS 'WHPrPack'
			,blnWHCont AS 'WHCont'
			,blnWHMani AS 'WHMani'
			,blnWHShBrow AS 'WHShBrow'
			,blnJobCost AS 'JobCost'
			,blnDept AS 'Dept'
			,blnSubLedger AS 'SubLedger'
			,blnCLetters AS 'CLetters'
			,blnTop20 AS 'Top20'
			,blnTransTab AS 'TransTab'
			,blnRecPayJournal AS 'RecPayJournal'
			,blnARCats AS 'ARCats'
			,blnInvDiscMatrix AS 'InvDiscMatrix'
			,blnARBlockDesc AS 'ARBlockDesc'
			,blnARBlockUnit AS 'ARBlockUnit'
			,blnARBlockDiscount AS 'ARBlockDiscount'
			,blnAPBlockDesc AS 'APBlockDesc'
			,blnAPBlockUnit AS 'APBlockUnit'
			,blnAPBlockDiscount AS 'APBlockDiscount'
			,blnWHDelDriver AS 'WHDelDriver'
			,blnWHDelVehicle AS 'WHDelVehicle'
			,blnWHDelRoute AS 'WHDelRoute'
			,blnARCreditRequests AS 'ARCreditRequests'
			,blnBITab AS 'BITab'
			,blnBICubeAdd AS 'BICubeAdd'
			,blnBICubeEdit AS 'BICubeEdit'
			,blnBICubeDelete AS 'BICubeDelete'
			,blnBIViewAdd AS 'BIViewAdd'
			,blnBIViewEdit AS 'BIViewEdit'
			,blnBIViewDelete AS 'BIViewDelete'
			,blnARSendPricelists AS 'ARSendPricelists'
			,blnInvNumConv AS 'InvNumConv'
			,blnInvSerialTypes AS 'InvSerialTypes'
			,blnAPCats AS 'APCats'
			,blnARPrintPreview AS 'ARPrintPreview'
			,blnARCNChangesAllowed AS 'ARCNChangesAllowed'
			,blnARPriceChangeAllowed AS 'ARPriceChangeAllowed'
			,blnAPDNChangesAllowed AS 'APDNChangesAllowed'
			,blnARInvoiceAdjAllowed AS 'ARInvoiceAdjAllowed'
			,blnARAllowCreditNotesAndRequestItems AS 'ARAllowCreditNotesAndRequestItems'
			,blnAPPaymentApprovals AS 'APPaymentApprovals'
			,blnInvForecasting AS 'InvForecasting'
			,blnInvBarcode AS 'InvBarcode'
			,blnInvItemCostUpdater AS 'InvItemCostUpdater'
			,blnInvItemRenaming AS 'InvItemRenaming'
			,blnAPECOMSettings AS 'APECOMSettings'
			,blnAPShowStatsOnDocs AS 'APShowStatsOnDocs'
			,blnARShowStatsOnDocs AS 'ARShowStatsOnDocs'
			,blnGLOpenItemAlloc AS 'GLOpenItemAlloc'
			,blnGLLR AS 'GLLR'
			,blnGLLRFin AS 'GLLRFin'
			,blnGLLRFinBalSheetStd AS 'GLLRFinBalSheetStd'
			,blnGLLRFinBalSheetComp AS 'GLLRFinBalSheetComp'
			,blnGLLRFinIncomeStd AS 'GLLRFinIncomeStd'
			,blnGLLRFinIncomeComp AS 'GLLRFinIncomeComp'
			,blnGLLRFinIncomeMulti AS 'GLLRFinIncomeMulti'
			,blnGLLRFinIncomeGP AS 'GLLRFinIncomeGP'
			,blnGLLRFinIncomeMini AS 'GLLRFinIncomeMini'
			,blnGLLRFinTrialBal AS 'GLLRFinTrialBal'
			,blnGLLRFinPerMovement AS 'GLLRFinPerMovement'
			,blnGLLRFinMultiCompany AS 'GLLRFinMultiCompany'
			,blnGLLRTran AS 'GLLRTran'
			,blnGLLRTranLedger AS 'GLLRTranLedger'
			,blnGLLRTranEntryType AS 'GLLRTranEntryType'
			,blnGLLRTranTax AS 'GLLRTranTax'
			,blnGLLRTranDocTran AS 'GLLRTranDocTran'
			,blnGLLRBudgets AS 'GLLRBudgets'
			,blnGLLRBudgetsAmounts AS 'GLLRBudgetsAmounts'
			,blnGLLRBudgetsCompIncome AS 'GLLRBudgetsCompIncome'
			,blnGLLRBudgetsCompIncomeF AS 'GLLRBudgetsCompIncomeF'
			,blnGLLRBudgetsCompBalSheet AS 'GLLRBudgetsCompBalSheet'
			,blnGLLRDept AS 'GLLRDept'
			,blnGLLRDeptBalSheetStd AS 'GLLRDeptBalSheetStd'
			,blnGLLRDeptIncomeStd AS 'GLLRDeptIncomeStd'
			,blnGLLRDeptIncomeComp AS 'GLLRDeptIncomeComp'
			,blnGLLRDeptTrialBal AS 'GLLRDeptTrialBal'
			,blnGLLRDeptLedger AS 'GLLRDeptLedger'
			,blnGLLRDeptBudgetAmounts AS 'GLLRDeptBudgetAmounts'
			,blnGLLRDeptCompIncome AS 'GLLRDeptCompIncome'
			,blnGLLRLists AS 'GLLRLists'
			,blnGLLRListsAccounts AS 'GLLRListsAccounts'
			,blnGLLRListsAccountSets AS 'GLLRListsAccountSets'
			,blnGLLRListsJournalCodes AS 'GLLRListsJournalCodes'
			,blnGLCR AS 'GLCR'
			,blnGLCRFin AS 'GLCRFin'
			,blnGLCRFinIncome AS 'GLCRFinIncome'
			,blnGLCRFinIncomeMulti AS 'GLCRFinIncomeMulti'
			,blnGLCRTran AS 'GLCRTran'
			,blnGLCRTranAlloc AS 'GLCRTranAlloc'
			,blnGLCRTranAllocMissing AS 'GLCRTranAllocMissing'
			,blnGLCRBudget AS 'GLCRBudget'
			,blnGLCRBudgetCompBudget AS 'GLCRBudgetCompBudget'
			,blnGLCRLists AS 'GLCRLists'
			,blnGLCRListsProfitCenters AS 'GLCRListsProfitCenters'
			,blnAPPR AS 'APPR'
			,blnAPPRFin AS 'APPRFin'
			,blnAPPRFinVendorAged AS 'APPRFinVendorAged'
			,blnAPPRTran AS 'APPRTran'
			,blnAPPRTranVendorPurchases AS 'APPRTranVendorPurchases'
			,blnAPPRTranPendingPurchaseOrders AS 'APPRTranPendingPurchaseOrders'
			,blnAPPRTranPendingPurchaseReq AS 'APPRTranPendingPurchaseReq'
			,blnAPPRTranVendorTran AS 'APPRTranVendorTran'
			,blnAPPRLists AS 'APPRLists'
			,blnAPPRListsVendors AS 'APPRListsVendors'
			,blnAPPRListsContacts AS 'APPRListsContacts'
			,blnARRR AS 'ARRR'
			,blnARRRFin AS 'ARRRFin'
			,blnARRRFinCustAged AS 'ARRRFinCustAged'
			,blnARRRFinCallSheet AS 'ARRRFinCallSheet'
			,blnARRRFinCustStatements AS 'ARRRFinCustStatements'
			,blnARRRFinSalesStatements AS 'ARRRFinSalesStatements'
			,blnARRRFinInvoiceGP AS 'ARRRFinInvoiceGP'
			,blnARRRFinCustProfiability AS 'ARRRFinCustProfiability'
			,blnARRRFinCustSalesTargets AS 'ARRRFinCustSalesTargets'
			,blnARRRFinCustSalesTrends AS 'ARRRFinCustSalesTrends'
			,blnARRRFinSPPerf AS 'ARRRFinSPPerf'
			,blnARRRFinSPTargets AS 'ARRRFinSPTargets'
			,blnARRRTran AS 'ARRRTran'
			,blnARRRTranCustSales AS 'ARRRTranCustSales'
			,blnARRRTranSPSales AS 'ARRRTranSPSales'
			,blnARRRTranSPMissing AS 'ARRRTranSPMissing'
			,blnARRRTranInvoiceDocs AS 'ARRRTranInvoiceDocs'
			,blnARRRTranCashUp AS 'ARRRTranCashUp'
			,blnARRRTranPendingSalesOrders AS 'ARRRTranPendingSalesOrders'
			,blnARRRTranClosedSalesOrders AS 'ARRRTranClosedSalesOrders'
			,blnARRRTranCredits AS 'ARRRTranCredits'
			,blnARRRTranCustTran AS 'ARRRTranCustTran'
			,blnARRRTranOpenQuotes AS 'ARRRTranOpenQuotes'
			,blnARRRLists AS 'ARRRLists'
			,blnARRRListsPricelist AS 'ARRRListsPricelist'
			,blnARRRListsCustomers AS 'ARRRListsCustomers'
			,blnARRRListsSalesPersons AS 'ARRRListsSalesPersons'
			,blnARRRListsContactsList AS 'ARRRListsContactsList'
			,blnIR AS 'IR'
			,blnIRFin AS 'IRFin'
			,blnIRFinInvAged AS 'IRFinInvAged'
			,blnIRFinInvValuation AS 'IRFinInvValuation'
			,blnIRFinLocSum AS 'IRFinLocSum'
			,blnIRFinInvLoc AS 'IRFinInvLoc'
			,blnIRFinInvBin AS 'IRFinInvBin'
			,blnIRFinQuantity AS 'IRFinQuantity'
			,blnIRFinQuantityLoc AS 'IRFinQuantityLoc'
			,blnIRFinInvSalesTargets AS 'IRFinInvSalesTargets'
			,blnIRTran AS 'IRTran'
			,blnIRTranInvSales AS 'IRTranInvSales'
			,blnIRTranInvTran AS 'IRTranInvTran'
			,blnIRTranInvLedger AS 'IRTranInvLedger'
			,blnIRTranInvLedgerLoc AS 'IRTranInvLedgerLoc'
			,blnIRTranNegInvCorrections AS 'IRTranNegInvCorrections'
			,blnIRTranPricelistChangeLog AS 'IRTranPricelistChangeLog'
			,blnIRTranSegInvMovement AS 'IRTranSegInvMovement'
			,blnIRTranSegInvSales AS 'IRTranSegInvSales'
			,blnIRTranSerializedItemTracking AS 'IRTranSerializedItemTracking'
			,blnIRLists AS 'IRLists'
			,blnIRListsPricing AS 'IRListsPricing'
			,blnIRListsInventory AS 'IRListsInventory'
			,blnIRListsStockCountSheets AS 'IRListsStockCountSheets'
			,blnIRListsAdjustments AS 'IRListsAdjustments'
			,blnWR AS 'WR'
			,blnWROrders AS 'WROrders'
			,blnWROrdersPendingPurchaseOrders AS 'WROrdersPendingPurchaseOrders'
			,blnWROrdersPendingSalesOrders AS 'WROrdersPendingSalesOrders'
			,blnPOSR AS 'POSR'
			,blnPOSRFin AS 'POSRFin'
			,blnPOSRFinDrawerClosing AS 'POSRFinDrawerClosing'
			,blnPOSRFinCashierVariance AS 'POSRFinCashierVariance'
			,blnPOSRLists AS 'POSRLists'
			,blnPOSRListsCashDrawers AS 'POSRListsCashDrawers'
			,blnBR AS 'BR'
			,blnBRProj AS 'BRProj'
			,blnBRProjTender AS 'BRProjTender'
			,blnBRProjAlloc AS 'BRProjAlloc'
			,blnBRProjMissingAllow AS 'BRProjMissingAllow'
			,blnBRProjSalesMatrix AS 'BRProjSalesMatrix'
			,blnBRProjPurchMatrix AS 'BRProjPurchMatrix'
			,blnBRProjCombinedMatrix AS 'BRProjCombinedMatrix'
			,blnBRProjActvsBudget AS 'BRProjActvsBudget'
			,blnBRAdmin AS 'BRAdmin'
			,blnBRAdminHistory AS 'BRAdminHistory'
			,blnSMSRLog AS 'SMSRLog'
			,blnGLJournalReports AS 'GLJournalReports'
			,blnGLTransactionReports AS 'GLTransactionReports'
			,blnAPPaymentsReports AS 'APPaymentsReports'
			,blnAPTransactionsReports AS 'APTransactionsReports'
			,blnARReceiptsReports AS 'ARReceiptsReports'
			,blnARTransactionsReports AS 'ARTransactionsReports'
			,blnISalesReports AS 'ISalesReports'
			,blnITransactionsReports AS 'ITransactionsReports'
			,blnSMSR AS 'SMSR'
			,blnFHQCanApprove AS 'FHQCanApprove'
			,blnFHQCreatePurchaseOrder AS 'FHQCreatePurchaseOrder'
			,blnARViewMarginPercentage AS 'ARViewMarginPercentage'
			,blnAPPendingPayApprovals AS 'APPendingPayApprovals'
			,blnGLLRTranCashBook AS 'GLLRTranCashBook'
			,blnAPPRTranVendAccrual AS 'APPRTranVendAccrual'
			,blnIRListsItemWhereUsed AS 'IRListsItemWhereUsed'
			,blnIRTranBillOfMaterials AS 'IRTranBillOfMaterials'
			,blnAPBulkRFQ AS 'APBulkRFQ'
			,blnInvProdSchedule AS 'InvProdSchedule'
			,blnInvWorkCentres AS 'InvWorkCentres'
			,blnIRListsProductionSchedule AS 'IRListsProductionSchedule'
			,blnAPPRTranBulkRFQ AS 'APPRTranBulkRFQ'
			,blnRecReceiptsReversal AS 'RecReceiptsReversal'
			,blnARRRTranSalesSummary AS 'ARRRTranSalesSummary'
			,blnDashMain AS 'DashMain'
			,blnDashBusiness AS 'DashBusiness'
			,blnDashAR AS 'DashAR'
			,blnARChangeCustOnSO AS 'ARChangeCustOnSO'
			,blnARChangeCustOnSQ AS 'ARChangeCustOnSQ'
			,blnAPOrdersRemove AS 'APOrdersRemove'
			,blnAPReqRemove AS 'APReqRemove'
			,blnAROrdersRemove AS 'AROrdersRemove'
			,blnARQuotesRemove AS 'ARQuotesRemove'
			,blnARCreditRequestsRemove AS 'ARCreditRequestsRemove'
			,blnAPBlockTax AS 'APBlockTax'
			,blnARBlockTax AS 'ARBlockTax'
			,blnAPBulkRFQRemove AS 'APBulkRFQRemove'
			,blnARQuSysRemove AS 'ARQuSysRemove'
			,blnWHStPickRemove AS 'WHStPickRemove'
			,blnWHRecRemove AS 'WHRecRemove'
			,blnWHShpRemove AS 'WHShpRemove'
			,blnWHContRemove AS 'WHContRemove'
			,blnARMatrixType AS 'ARMatrixType'
			,blnARMatrixTypeEdit AS 'ARMatrixTypeEdit'
			,blnARMatrixTypeRemove AS 'ARMatrixTypeRemove'
			,blnIRTranInvEfficiency AS 'IRTranInvEfficiency'
			,blnInvLotNumExpiryDates AS 'InvLotNumExpiryDates'
			,blnARRRTranMatrixTypeChangeLog AS 'ARRRTranMatrixTypeChangeLog'
			,blnInvBulkLabelPrinting AS 'InvBulkLabelPrinting'
			,bitInvVoucher AS 'InvVoucher'
			,blnInvShowItemCost AS 'InvShowItemCost'
			,bitInvWebstoreSync AS 'InvWebstoreSync'
			,strSalesName AS 'SalesName'
			,IsNull(intARDept, 0) AS 'ARDept'
			,IsNUll(intAPDept, 0) AS 'APDept'
			,bitARVoucerReprint AS 'ARVoucerReprint'
			,blnARChangeDocInfo AS 'ARChangeDocInfo'
			,blnAPChangeDocInfo AS 'APChangeDocInfo'
			,blnFADepreciateAsset AS 'FADepreciateAsset'
			,blnFAAssets AS 'FAAssets'
			,blnFAAssetTypes AS 'FAAssetTypes'
			,blnFADepreciationMethods AS 'FADepreciationMethods'
			,blnFACostTypes AS 'FACostTypes'
			,blnFADisposalMethods AS 'FADisposalMethods'
			,blnFAR AS 'FAR'
			,blnFARSummary AS 'FARSummary'
			,blnFARAssetListing AS 'FARAssetListing'
			,blnFARDisposals AS 'FARDisposals'
			,blnFARDepreciationListing AS 'FARDepreciationListing'
			,blnFARAssetPurchases AS 'FARAssetPurchases'
			,blnFARAssetEfficiency AS 'FARAssetEfficiency'
			,
			--0 As 'FARAssetClass',
			blnInvDimensions AS 'InvDimensions'
			,blnInvValueBasedPrice AS 'InvValueBasedPrice'
			,blnInvValueBasedPriceEdit AS 'InvValueBasedPriceEdit'
			,blnInvValueBasedPriceRemove AS 'InvValueBasedPriceRemove'
			,blnFARTran AS 'FARTran'
			,blnFARLists AS 'FARLists'
			,blnARSOAdjAllowed AS 'ARSOAdjAllowed'
			,blnARSQAdjAllowed AS 'ARSQAdjAllowed'
			,blnARFHQAdjAllowed AS 'ARFHQAdjAllowed'
			,blnARCNAdjAllowed AS 'ARCNAdjAllowed'
			,blnARCRAdjAllowed AS 'ARCRAdjAllowed'
			,blnARCreditNotes AS 'ARCreditNotes'
			,blnARChangeDept AS 'ARChangeDept'
			,blnAPInvoiceAdjAllowed AS 'APInvoiceAdjAllowed'
			,blnAPPOAdjAllowed AS 'APPOAdjAllowed'
			,blnAPPRAdjAllowed AS 'APPRAdjAllowed'
			,blnARChangeCenter AS 'ARChangeCenter'
			,bitPOSEnableEditDiscount AS 'POSEnableEditDiscount'
			,blnPOSOrders AS 'POSOrders'
			,blnPOSQuotes AS 'POSQuotes'
			,blnPOSConvertOrders AS 'POSConvertOrders'
			,blnPOSConvertQuotes AS 'POSConvertQuotes'
			,blnPOSAuthPayByAccount AS 'POSAuthPayByAccount'
			,blnPOSAuthoriseRefunds AS 'POSAuthoriseRefunds'
			,blnARCreditBlockSI AS 'ARCreditBlockSI'
			,blnARCreditBlockSO AS 'ARCreditBlockSO'
			,blnARDeliveryAdvice AS 'ARDeliveryAdvice'
			,blnARDeliveryAdviceRemove AS 'ARDeliveryAdviceRemove'
			,blnInvCanChangeSellingPrice AS 'InvCanChangeSellingPrice'
			,blnARSalesPersonChangeApproval AS 'ARSalesPersonChangeApproval'
			,blnIRFinInvCostAnalysis AS 'IRFinInvCostAnalysis'
			,blnMFWorkOrders AS 'MFWorkOrders'
			,blnMFJobs AS 'MFJobs'
			,blnMFJobAdjustApproval AS 'MFJobAdjustApproval'
			,blnMFProductionSchedule AS 'MFProductionSchedule'
			,blnMFPostWIP AS 'MFPostWIP'
			,blnMFBillOfMaterial AS 'MFBillOfMaterial'
			,blnMFBOMAdjustApproval AS 'MFBOMAdjustApproval'
			,blnMFWorkCentres AS 'MFWorkCentres'
			,blnMFLabour AS 'MFLabour'
			,blnMFMachinery AS 'MFMachinery'
			,blnMFTransferJobs AS 'MFTransferJobs'
			,blnMFR AS 'MFR'
			,blnMFRTran AS 'MFRTran'
			,blnMFRWorkInProgress AS 'MFRWorkInProgress'
			,blnMFRLists AS 'MFRLists'
			,blnMFRBillOfMaterial AS 'MFRBillOfMaterial'
			,blnMFRResource AS 'MFRResource'
			,blnMFRItemWhereUsed AS 'MFRItemWhereUsed'
			,blnMFRSerialLotOutOfSeq AS 'MFRSerialLotOutOfSeq'
			,blnMFRMRP AS 'MFRMRP'
			,blnInvWorkOrder AS 'InvWorkOrder'
			,blnInvIntReq AS 'InvIntReq'
			,blnInvIssReq AS 'InvIssReq'
			,blnARRRTranCustAccrual AS 'ARRRTranCustAccrual'
			,blnARRRFinOrderStatement AS 'ARRRFinOrderStatement'
			,blnIRListsInvIntReq AS 'IRListsInvIntReq'
			,blnMFCloseJobs AS 'MFCloseJobs'
			,blnFAAssetsDisposal AS 'FAAssetsDisposal'
			,blnFAAssetsLocations AS 'FAAssetsLocations'
			,blnFARAssetRegister AS 'FARAssetRegister'
			,blnDashAP AS 'DashAP'
			,blnDashInventory AS 'DashInventory'
			,blnDashWarehouse AS 'DashWarehouse'
			,blnAPSetupPOApprovers AS 'APSetupPOApprovers'
			,blnApprovePurchaseOrders AS 'ApprovePurchaseOrders'
			,blnMFRWCTransfer AS 'MFRWCTransfer'
			,blnInvCatMarginApproval AS 'InvCatMarginApproval'
			,blnMobSa AS 'MobSa'
			,blnMobSaOrdProcess AS 'MobSaOrdProcess'
			,blnMobSaGeoTrack AS 'MobSaGeoTrack'
			,blnMobPhDash AS 'MobPhDash'
			,blnMobPhDashBankBal AS 'MobPhDashBankBal'
			,blnMobPhDashSalesItemComp AS 'MobPhDashSalesItemComp'
			,blnMobPhDashSalesCustCat AS 'MobPhDashSalesCustCat'
			,blnMobPhDashOutCustCat AS 'MobPhDashOutCustCat'
			,blnMobPhDashCustVendBal AS 'MobPhDashCustVendBal'
			,blnMobPhDashInvQty AS 'MobPhDashInvQty'
			,blnMobPhDashSalesPerf AS 'MobPhDashSalesPerf'
			,blnMobPhPOApproval AS 'MobPhPOApproval'
			,blnMobPhDashTimesheet AS 'MobPhDashTimesheet'
			,blnBRProjClaimStatement AS 'BRProjClaimStatement'
			,blnARRRTranCancelSalesDocs AS 'ARRRTranCancelSalesDocs'
			,blnAREditDeliveryMethod AS 'AREditDeliveryMethod'
			,blnInvIsRepackaging AS 'InvIsRepackaging'
			,blnIRRepackaging AS 'IRRepackaging'
			,blnContractBilling AS 'ContractBilling'
			,blnContractBillingType AS 'ContractBillingType'
			,blnProcessContractBilling AS 'ProcessContractBilling'
			,blnARRRecurringInvoice AS 'ARRRecurringInvoice'
			,blnARRContractExpiry AS 'ARRContractExpiry'
			,blnARRContractReconciliation AS 'ARRContractReconciliation'
			,blnAPReOrders AS 'APReOrders'
			,blnARShipmentsAuditTrail AS 'ARShipmentsAuditTrail'
			,blnARSalesOrderEDI AS 'ARSalesOrderEDI'
			,blnAPGRVAdjustmentApproval AS 'WHRecAdjust'
			,blnAPReturnSelection AS 'APReturn'
			,blnAPReturnAdjustmentApproval AS 'RetAprAdjust'
			,blnARDAAdjustmentApproval AS 'ARDeliveryAdviceAdjustApproval'
			,blnWHDelMethod AS WHDelMethod
			,blnIRTranLotNumMovement AS 'IRTranLotNumberMovement'
			,blnBankManager AS 'BankManager'
			,blnAPPRTranInvoiceDocs AS 'APPRTranInvoiceDocs'
			,blnMFRJobStatus AS 'MFRJobStatus'
			,blnMFRProdVariance AS 'MFRProdVariance'
			,blnMFRManVariance AS 'MFRManVariance'
			,blnAPPriceChangeAllowed AS 'APPriceChangeAllowed'
			,blnDashManage AS 'DashManage'
			,blnGLMergeAccounts AS 'MergeAcct'
			,blnWSWorkshop AS 'WSWorkshop'
			,blnWSBrowser AS 'WSBrowser'
			,blnWSInvoice AS 'WSInvoice'
			,blnWSInvoiceAdjAllowed AS 'WSInvoiceAdjAllowed'
			,blnWSPrintPreview AS 'WSPrintPreview'
			,blnWSProcessJob AS 'WSProcessJob'
			,blnWSProcessJobRemove AS 'WSProcessJobRemove'
			,blnWSProcessJobAdjAllowed AS 'WSProcessJobAdjAllowed'
			,blnWSQuote AS 'WSQuote'
			,blnWSQuoteRemove AS 'WSQuoteRemove'
			,blnWSQuoteAdjAllowed AS 'WSQuoteAdjAllowed'
			,blnWSCreditNote AS 'WSCreditNote'
			,blnWSCNChangesAllowed AS 'WSCNChangesAllowed'
			,blnWSCNAdjAllowed AS 'WSCNAdjAllowed'
			,blnWSCreditRequest AS 'WSCreditRequest'
			,blnWSCreditRequestsRemove AS 'WSCreditRequestsRemove'
			,blnWSCRAdjAllowed AS 'WSCRAdjAllowed'
			,blnWSAllowCreditNotesAndRequestItems AS 'WSAllowCreditNotesAndRequestItems'
			,blnWSReceipts AS 'WSReceipts'
			,blnWSReceiptsReversal AS 'WSReceiptsReversal'
			,blnWSServiceableItem AS 'WSServiceableItem'
			,blnWSServiceableItemType AS 'WSServiceableItemType'
			,blnWSJobTemplate AS 'WSJobTemplate'
			,blnWSSetupTechnician AS 'WSSetupTechnician'
			,blnWSSchedule AS 'WSSchedule'
			,blnWSInventoryIssue AS 'WSInventoryIssue'
			,blnworkshop0 AS 'workshop0'
			,blnWSTran AS 'WSTran'
			,blnWSWorkInProgress AS 'WSWorkInProgress'
			,blnWSJobProfitability AS 'WSJobProfitability'
			,blnWSResourceUsage AS 'WSResourceUsage'
			,blnWSJobCostVariance AS 'WSJobCostVariance'
			,blnWSLists AS 'WSLists'
			,blnWSJobTemplateList AS 'WSJobTemplateList'
			,blnWSProcDocuments AS 'WSProcDocuments'
			,blnWSViewMarginPercentage AS 'WSViewMarginPercentage'
			,blnWSCreditBlockIJB AS 'WSCreditBlockIJB'
			,blnWSCreditBlockPJB AS 'WSCreditBlockPJB'
			,blnARConfirmDeliveryAllowed AS 'ARConfirmDeliveryAllowed'
			,blnGLContracts AS 'GLContracts'
			,blnGLLRContracts AS 'GLLRContracts'
			,blnGLLRContractsMonthly AS 'GLLRContractsMonthly'
			,blnGLLRContractsIncomeStatement AS 'GLLRContractsIncomeStatement'
			,blnPOSPayouts AS 'POSPayouts'
			,blnARLayby AS 'ARLayby'
			,blnARChangeCustOnLB AS 'ARChangeCustOnLB'
			,blnARLaybyRemove AS 'ARLaybyRemove'
			,blnARLBAdjAllowed AS 'ARLBAdjAllowed'
			,blnARCreditBlockLB AS 'ARCreditBlockLB'
			,blnPOSLayby AS 'POSLayby'
			,blnPOSConvertLayby AS 'POSConvertLayby'
			,blnAPVenRecon AS 'APVenRecon'
			,blnAPVenReconWorksheet AS 'APVenReconWorksheet'
			,blnAPBuyers AS 'APBuyers'
			,blnAPVenReconTypes AS 'APVenReconTypes'
			,blnBRProjResources AS 'BRProjResources'
			,blnBRProjFinInfo AS 'BRProjFinInfo'
			,blnBRProjChecklist AS 'BRProjChecklist'
			,blnBRProjCashFlow AS 'BRProjCashFlow'
			,blnARPODManagement AS 'ARPODManagement'
			,blnInvEmployee AS 'InvEmployee'
			,blnApproveInventoryRequistion AS 'ApproveInventoryRequistion'
			,blnAPSetupIRApprovers AS 'APSetupIRApprovers'
			,blnPOSAuthoriseReturn AS 'POSAuthoriseReturn'
		FROM tblUsers(NOLOCK)
		WHERE blnApproveInventoryRequistion = 1
			AND strUserName NOT IN (
				SELECT strUserName
				FROM tblApprovalsDocLimit(NOLOCK)
				WHERE intApproverType = 2
				)
	END
	ELSE IF (@ApproverType = 3)
	BEGIN
		SELECT tblUsers.strUserName AS 'UserName'
			,strName AS 'Name'
			,strCellNumber AS 'CellNumber'
			,strEmail AS 'Email'
			,strPassword AS 'Password'
			,blnIsAdmin AS 'IsAdmin'
			,blnIsLockedOut AS 'IsLockedOut'
			,blnMustChange AS 'MustChange'
			,blnCompany AS 'Company'
			,blnCoFileHandle AS 'CoFileHandle'
			,blnGL AS 'GL'
			,blnPayables AS 'Payables'
			,blnPayPayments AS 'PayPayments'
			,blnReceivables AS 'Receivables'
			,blnRecReceipts AS 'RecReceipts'
			,blnInventory AS 'Inventory'
			,blnInvAdjust AS 'InvAdjust'
			,blnInvCount AS 'InvCount'
			,blnSMS AS 'SMS'
			,blnBusMgr AS 'BusMgr'
			,blnPOS AS 'POS'
			,blnProjects AS 'Projects'
			,dteLastLogin AS 'LastLogin'
			,blnCashBook AS 'CashBook'
			,blnReminders AS 'Reminders'
			,blnMarketing AS 'Marketing'
			,blnCollection AS 'Collection'
			,blnPOSCash AS 'POSCash'
			,blnCoAdmin AS 'CoAdmin'
			,blnMainSum AS 'MainSum'
			,blnAcctSets AS 'AcctSets'
			,blnJournal AS 'Journal'
			,blnBankTrans AS 'BankTrans'
			,blnBankRecon AS 'BankRecon'
			,blnAPPurch AS 'APPurch'
			,blnAPTax AS 'APTax'
			,blnARCredit AS 'ARCredit'
			,blnARSales AS 'ARSales'
			,blnARBatch AS 'ARBatch'
			,blnInvPricelists AS 'InvPricelists'
			,blnInvLoc AS 'InvLoc'
			,blnInvCats AS 'InvCats'
			,blnInvAssbly AS 'InvAssbly'
			,blnInvTrans AS 'InvTrans'
			,blnSMSCredits AS 'SMSCredits'
			,blnPOSDrop AS 'POSDrop'
			,blnPOSTerminalSetup AS 'POSTerminalSetup'
			,blnPOSTerminalSetupList AS 'POSTerminalSetupList'
			,blnPOSProfileMenu AS 'POSProfileMenu'
			,blnBulkSMS AS 'BulkSMS'
			,blnGLExpense AS 'GLExpense'
			,blnDeposits AS 'Deposits'
			,blnInvPDT AS 'InvPDT'
			,blnARPersons AS 'ARPersons'
			,blnAPBatch AS 'APBatch'
			,blnAPBrowser AS 'APBrowser'
			,blnARBrowser AS 'ARBrowser'
			,blnTemplates AS 'Templates'
			,blnAREmail AS 'AREmail'
			,blnWHRec AS 'WHRec'
			,blnWHPick AS 'WHPick'
			,blnWHBatch AS 'WHBatch'
			,uID AS 'uid'
			,blnFiles AS 'Files'
			,strLocName AS 'LocName'
			,blnCycle AS 'Cycle'
			,blnInterest AS 'Interest'
			,blnAPOrders AS 'APOrders'
			,blnAPReq AS 'APReq'
			,blnAROrders AS 'AROrders'
			,blnARQuotes AS 'ARQuotes'
			,blnARQuSys AS 'ARQuSys'
			,blnWHStPick AS 'WHStPick'
			,blnInvBrowser AS 'InvBrowser'
			,blnWHShp AS 'WHShp'
			,blnWHPrPack AS 'WHPrPack'
			,blnWHCont AS 'WHCont'
			,blnWHMani AS 'WHMani'
			,blnWHShBrow AS 'WHShBrow'
			,blnJobCost AS 'JobCost'
			,blnDept AS 'Dept'
			,blnSubLedger AS 'SubLedger'
			,blnCLetters AS 'CLetters'
			,blnTop20 AS 'Top20'
			,blnTransTab AS 'TransTab'
			,blnRecPayJournal AS 'RecPayJournal'
			,blnARCats AS 'ARCats'
			,blnInvDiscMatrix AS 'InvDiscMatrix'
			,blnARBlockDesc AS 'ARBlockDesc'
			,blnARBlockUnit AS 'ARBlockUnit'
			,blnARBlockDiscount AS 'ARBlockDiscount'
			,blnAPBlockDesc AS 'APBlockDesc'
			,blnAPBlockUnit AS 'APBlockUnit'
			,blnAPBlockDiscount AS 'APBlockDiscount'
			,blnWHDelDriver AS 'WHDelDriver'
			,blnWHDelVehicle AS 'WHDelVehicle'
			,blnWHDelRoute AS 'WHDelRoute'
			,blnARCreditRequests AS 'ARCreditRequests'
			,blnBITab AS 'BITab'
			,blnBICubeAdd AS 'BICubeAdd'
			,blnBICubeEdit AS 'BICubeEdit'
			,blnBICubeDelete AS 'BICubeDelete'
			,blnBIViewAdd AS 'BIViewAdd'
			,blnBIViewEdit AS 'BIViewEdit'
			,blnBIViewDelete AS 'BIViewDelete'
			,blnARSendPricelists AS 'ARSendPricelists'
			,blnInvNumConv AS 'InvNumConv'
			,blnInvSerialTypes AS 'InvSerialTypes'
			,blnAPCats AS 'APCats'
			,blnARPrintPreview AS 'ARPrintPreview'
			,blnARCNChangesAllowed AS 'ARCNChangesAllowed'
			,blnARPriceChangeAllowed AS 'ARPriceChangeAllowed'
			,blnAPDNChangesAllowed AS 'APDNChangesAllowed'
			,blnARInvoiceAdjAllowed AS 'ARInvoiceAdjAllowed'
			,blnARAllowCreditNotesAndRequestItems AS 'ARAllowCreditNotesAndRequestItems'
			,blnAPPaymentApprovals AS 'APPaymentApprovals'
			,blnInvForecasting AS 'InvForecasting'
			,blnInvBarcode AS 'InvBarcode'
			,blnInvItemCostUpdater AS 'InvItemCostUpdater'
			,blnInvItemRenaming AS 'InvItemRenaming'
			,blnAPECOMSettings AS 'APECOMSettings'
			,blnAPShowStatsOnDocs AS 'APShowStatsOnDocs'
			,blnARShowStatsOnDocs AS 'ARShowStatsOnDocs'
			,blnGLOpenItemAlloc AS 'GLOpenItemAlloc'
			,blnGLLR AS 'GLLR'
			,blnGLLRFin AS 'GLLRFin'
			,blnGLLRFinBalSheetStd AS 'GLLRFinBalSheetStd'
			,blnGLLRFinBalSheetComp AS 'GLLRFinBalSheetComp'
			,blnGLLRFinIncomeStd AS 'GLLRFinIncomeStd'
			,blnGLLRFinIncomeComp AS 'GLLRFinIncomeComp'
			,blnGLLRFinIncomeMulti AS 'GLLRFinIncomeMulti'
			,blnGLLRFinIncomeGP AS 'GLLRFinIncomeGP'
			,blnGLLRFinIncomeMini AS 'GLLRFinIncomeMini'
			,blnGLLRFinTrialBal AS 'GLLRFinTrialBal'
			,blnGLLRFinPerMovement AS 'GLLRFinPerMovement'
			,blnGLLRFinMultiCompany AS 'GLLRFinMultiCompany'
			,blnGLLRTran AS 'GLLRTran'
			,blnGLLRTranLedger AS 'GLLRTranLedger'
			,blnGLLRTranEntryType AS 'GLLRTranEntryType'
			,blnGLLRTranTax AS 'GLLRTranTax'
			,blnGLLRTranDocTran AS 'GLLRTranDocTran'
			,blnGLLRBudgets AS 'GLLRBudgets'
			,blnGLLRBudgetsAmounts AS 'GLLRBudgetsAmounts'
			,blnGLLRBudgetsCompIncome AS 'GLLRBudgetsCompIncome'
			,blnGLLRBudgetsCompIncomeF AS 'GLLRBudgetsCompIncomeF'
			,blnGLLRBudgetsCompBalSheet AS 'GLLRBudgetsCompBalSheet'
			,blnGLLRDept AS 'GLLRDept'
			,blnGLLRDeptBalSheetStd AS 'GLLRDeptBalSheetStd'
			,blnGLLRDeptIncomeStd AS 'GLLRDeptIncomeStd'
			,blnGLLRDeptIncomeComp AS 'GLLRDeptIncomeComp'
			,blnGLLRDeptTrialBal AS 'GLLRDeptTrialBal'
			,blnGLLRDeptLedger AS 'GLLRDeptLedger'
			,blnGLLRDeptBudgetAmounts AS 'GLLRDeptBudgetAmounts'
			,blnGLLRDeptCompIncome AS 'GLLRDeptCompIncome'
			,blnGLLRLists AS 'GLLRLists'
			,blnGLLRListsAccounts AS 'GLLRListsAccounts'
			,blnGLLRListsAccountSets AS 'GLLRListsAccountSets'
			,blnGLLRListsJournalCodes AS 'GLLRListsJournalCodes'
			,blnGLCR AS 'GLCR'
			,blnGLCRFin AS 'GLCRFin'
			,blnGLCRFinIncome AS 'GLCRFinIncome'
			,blnGLCRFinIncomeMulti AS 'GLCRFinIncomeMulti'
			,blnGLCRTran AS 'GLCRTran'
			,blnGLCRTranAlloc AS 'GLCRTranAlloc'
			,blnGLCRTranAllocMissing AS 'GLCRTranAllocMissing'
			,blnGLCRBudget AS 'GLCRBudget'
			,blnGLCRBudgetCompBudget AS 'GLCRBudgetCompBudget'
			,blnGLCRLists AS 'GLCRLists'
			,blnGLCRListsProfitCenters AS 'GLCRListsProfitCenters'
			,blnAPPR AS 'APPR'
			,blnAPPRFin AS 'APPRFin'
			,blnAPPRFinVendorAged AS 'APPRFinVendorAged'
			,blnAPPRTran AS 'APPRTran'
			,blnAPPRTranVendorPurchases AS 'APPRTranVendorPurchases'
			,blnAPPRTranPendingPurchaseOrders AS 'APPRTranPendingPurchaseOrders'
			,blnAPPRTranPendingPurchaseReq AS 'APPRTranPendingPurchaseReq'
			,blnAPPRTranVendorTran AS 'APPRTranVendorTran'
			,blnAPPRLists AS 'APPRLists'
			,blnAPPRListsVendors AS 'APPRListsVendors'
			,blnAPPRListsContacts AS 'APPRListsContacts'
			,blnARRR AS 'ARRR'
			,blnARRRFin AS 'ARRRFin'
			,blnARRRFinCustAged AS 'ARRRFinCustAged'
			,blnARRRFinCallSheet AS 'ARRRFinCallSheet'
			,blnARRRFinCustStatements AS 'ARRRFinCustStatements'
			,blnARRRFinSalesStatements AS 'ARRRFinSalesStatements'
			,blnARRRFinInvoiceGP AS 'ARRRFinInvoiceGP'
			,blnARRRFinCustProfiability AS 'ARRRFinCustProfiability'
			,blnARRRFinCustSalesTargets AS 'ARRRFinCustSalesTargets'
			,blnARRRFinCustSalesTrends AS 'ARRRFinCustSalesTrends'
			,blnARRRFinSPPerf AS 'ARRRFinSPPerf'
			,blnARRRFinSPTargets AS 'ARRRFinSPTargets'
			,blnARRRTran AS 'ARRRTran'
			,blnARRRTranCustSales AS 'ARRRTranCustSales'
			,blnARRRTranSPSales AS 'ARRRTranSPSales'
			,blnARRRTranSPMissing AS 'ARRRTranSPMissing'
			,blnARRRTranInvoiceDocs AS 'ARRRTranInvoiceDocs'
			,blnARRRTranCashUp AS 'ARRRTranCashUp'
			,blnARRRTranPendingSalesOrders AS 'ARRRTranPendingSalesOrders'
			,blnARRRTranClosedSalesOrders AS 'ARRRTranClosedSalesOrders'
			,blnARRRTranCredits AS 'ARRRTranCredits'
			,blnARRRTranCustTran AS 'ARRRTranCustTran'
			,blnARRRTranOpenQuotes AS 'ARRRTranOpenQuotes'
			,blnARRRLists AS 'ARRRLists'
			,blnARRRListsPricelist AS 'ARRRListsPricelist'
			,blnARRRListsCustomers AS 'ARRRListsCustomers'
			,blnARRRListsSalesPersons AS 'ARRRListsSalesPersons'
			,blnARRRListsContactsList AS 'ARRRListsContactsList'
			,blnIR AS 'IR'
			,blnIRFin AS 'IRFin'
			,blnIRFinInvAged AS 'IRFinInvAged'
			,blnIRFinInvValuation AS 'IRFinInvValuation'
			,blnIRFinLocSum AS 'IRFinLocSum'
			,blnIRFinInvLoc AS 'IRFinInvLoc'
			,blnIRFinInvBin AS 'IRFinInvBin'
			,blnIRFinQuantity AS 'IRFinQuantity'
			,blnIRFinQuantityLoc AS 'IRFinQuantityLoc'
			,blnIRFinInvSalesTargets AS 'IRFinInvSalesTargets'
			,blnIRTran AS 'IRTran'
			,blnIRTranInvSales AS 'IRTranInvSales'
			,blnIRTranInvTran AS 'IRTranInvTran'
			,blnIRTranInvLedger AS 'IRTranInvLedger'
			,blnIRTranInvLedgerLoc AS 'IRTranInvLedgerLoc'
			,blnIRTranNegInvCorrections AS 'IRTranNegInvCorrections'
			,blnIRTranPricelistChangeLog AS 'IRTranPricelistChangeLog'
			,blnIRTranSegInvMovement AS 'IRTranSegInvMovement'
			,blnIRTranSegInvSales AS 'IRTranSegInvSales'
			,blnIRTranSerializedItemTracking AS 'IRTranSerializedItemTracking'
			,blnIRLists AS 'IRLists'
			,blnIRListsPricing AS 'IRListsPricing'
			,blnIRListsInventory AS 'IRListsInventory'
			,blnIRListsStockCountSheets AS 'IRListsStockCountSheets'
			,blnIRListsAdjustments AS 'IRListsAdjustments'
			,blnWR AS 'WR'
			,blnWROrders AS 'WROrders'
			,blnWROrdersPendingPurchaseOrders AS 'WROrdersPendingPurchaseOrders'
			,blnWROrdersPendingSalesOrders AS 'WROrdersPendingSalesOrders'
			,blnPOSR AS 'POSR'
			,blnPOSRFin AS 'POSRFin'
			,blnPOSRFinDrawerClosing AS 'POSRFinDrawerClosing'
			,blnPOSRFinCashierVariance AS 'POSRFinCashierVariance'
			,blnPOSRLists AS 'POSRLists'
			,blnPOSRListsCashDrawers AS 'POSRListsCashDrawers'
			,blnBR AS 'BR'
			,blnBRProj AS 'BRProj'
			,blnBRProjTender AS 'BRProjTender'
			,blnBRProjAlloc AS 'BRProjAlloc'
			,blnBRProjMissingAllow AS 'BRProjMissingAllow'
			,blnBRProjSalesMatrix AS 'BRProjSalesMatrix'
			,blnBRProjPurchMatrix AS 'BRProjPurchMatrix'
			,blnBRProjCombinedMatrix AS 'BRProjCombinedMatrix'
			,blnBRProjActvsBudget AS 'BRProjActvsBudget'
			,blnBRAdmin AS 'BRAdmin'
			,blnBRAdminHistory AS 'BRAdminHistory'
			,blnSMSRLog AS 'SMSRLog'
			,blnGLJournalReports AS 'GLJournalReports'
			,blnGLTransactionReports AS 'GLTransactionReports'
			,blnAPPaymentsReports AS 'APPaymentsReports'
			,blnAPTransactionsReports AS 'APTransactionsReports'
			,blnARReceiptsReports AS 'ARReceiptsReports'
			,blnARTransactionsReports AS 'ARTransactionsReports'
			,blnISalesReports AS 'ISalesReports'
			,blnITransactionsReports AS 'ITransactionsReports'
			,blnSMSR AS 'SMSR'
			,blnFHQCanApprove AS 'FHQCanApprove'
			,blnFHQCreatePurchaseOrder AS 'FHQCreatePurchaseOrder'
			,blnARViewMarginPercentage AS 'ARViewMarginPercentage'
			,blnAPPendingPayApprovals AS 'APPendingPayApprovals'
			,blnGLLRTranCashBook AS 'GLLRTranCashBook'
			,blnAPPRTranVendAccrual AS 'APPRTranVendAccrual'
			,blnIRListsItemWhereUsed AS 'IRListsItemWhereUsed'
			,blnIRTranBillOfMaterials AS 'IRTranBillOfMaterials'
			,blnAPBulkRFQ AS 'APBulkRFQ'
			,blnInvProdSchedule AS 'InvProdSchedule'
			,blnInvWorkCentres AS 'InvWorkCentres'
			,blnIRListsProductionSchedule AS 'IRListsProductionSchedule'
			,blnAPPRTranBulkRFQ AS 'APPRTranBulkRFQ'
			,blnRecReceiptsReversal AS 'RecReceiptsReversal'
			,blnARRRTranSalesSummary AS 'ARRRTranSalesSummary'
			,blnDashMain AS 'DashMain'
			,blnDashBusiness AS 'DashBusiness'
			,blnDashAR AS 'DashAR'
			,blnARChangeCustOnSO AS 'ARChangeCustOnSO'
			,blnARChangeCustOnSQ AS 'ARChangeCustOnSQ'
			,blnAPOrdersRemove AS 'APOrdersRemove'
			,blnAPReqRemove AS 'APReqRemove'
			,blnAROrdersRemove AS 'AROrdersRemove'
			,blnARQuotesRemove AS 'ARQuotesRemove'
			,blnARCreditRequestsRemove AS 'ARCreditRequestsRemove'
			,blnAPBlockTax AS 'APBlockTax'
			,blnARBlockTax AS 'ARBlockTax'
			,blnAPBulkRFQRemove AS 'APBulkRFQRemove'
			,blnARQuSysRemove AS 'ARQuSysRemove'
			,blnWHStPickRemove AS 'WHStPickRemove'
			,blnWHRecRemove AS 'WHRecRemove'
			,blnWHShpRemove AS 'WHShpRemove'
			,blnWHContRemove AS 'WHContRemove'
			,blnARMatrixType AS 'ARMatrixType'
			,blnARMatrixTypeEdit AS 'ARMatrixTypeEdit'
			,blnARMatrixTypeRemove AS 'ARMatrixTypeRemove'
			,blnIRTranInvEfficiency AS 'IRTranInvEfficiency'
			,blnInvLotNumExpiryDates AS 'InvLotNumExpiryDates'
			,blnARRRTranMatrixTypeChangeLog AS 'ARRRTranMatrixTypeChangeLog'
			,blnInvBulkLabelPrinting AS 'InvBulkLabelPrinting'
			,bitInvVoucher AS 'InvVoucher'
			,blnInvShowItemCost AS 'InvShowItemCost'
			,bitInvWebstoreSync AS 'InvWebstoreSync'
			,strSalesName AS 'SalesName'
			,IsNull(intARDept, 0) AS 'ARDept'
			,IsNUll(intAPDept, 0) AS 'APDept'
			,bitARVoucerReprint AS 'ARVoucerReprint'
			,blnARChangeDocInfo AS 'ARChangeDocInfo'
			,blnAPChangeDocInfo AS 'APChangeDocInfo'
			,blnFADepreciateAsset AS 'FADepreciateAsset'
			,blnFAAssets AS 'FAAssets'
			,blnFAAssetTypes AS 'FAAssetTypes'
			,blnFADepreciationMethods AS 'FADepreciationMethods'
			,blnFACostTypes AS 'FACostTypes'
			,blnFADisposalMethods AS 'FADisposalMethods'
			,blnFAR AS 'FAR'
			,blnFARSummary AS 'FARSummary'
			,blnFARAssetListing AS 'FARAssetListing'
			,blnFARDisposals AS 'FARDisposals'
			,blnFARDepreciationListing AS 'FARDepreciationListing'
			,blnFARAssetPurchases AS 'FARAssetPurchases'
			,blnFARAssetEfficiency AS 'FARAssetEfficiency'
			,
			--0 As 'FARAssetClass',
			blnInvDimensions AS 'InvDimensions'
			,blnInvValueBasedPrice AS 'InvValueBasedPrice'
			,blnInvValueBasedPriceEdit AS 'InvValueBasedPriceEdit'
			,blnInvValueBasedPriceRemove AS 'InvValueBasedPriceRemove'
			,blnFARTran AS 'FARTran'
			,blnFARLists AS 'FARLists'
			,blnARSOAdjAllowed AS 'ARSOAdjAllowed'
			,blnARSQAdjAllowed AS 'ARSQAdjAllowed'
			,blnARFHQAdjAllowed AS 'ARFHQAdjAllowed'
			,blnARCNAdjAllowed AS 'ARCNAdjAllowed'
			,blnARCRAdjAllowed AS 'ARCRAdjAllowed'
			,blnARCreditNotes AS 'ARCreditNotes'
			,blnARChangeDept AS 'ARChangeDept'
			,blnAPInvoiceAdjAllowed AS 'APInvoiceAdjAllowed'
			,blnAPPOAdjAllowed AS 'APPOAdjAllowed'
			,blnAPPRAdjAllowed AS 'APPRAdjAllowed'
			,blnARChangeCenter AS 'ARChangeCenter'
			,bitPOSEnableEditDiscount AS 'POSEnableEditDiscount'
			,blnPOSOrders AS 'POSOrders'
			,blnPOSQuotes AS 'POSQuotes'
			,blnPOSConvertOrders AS 'POSConvertOrders'
			,blnPOSConvertQuotes AS 'POSConvertQuotes'
			,blnPOSAuthPayByAccount AS 'POSAuthPayByAccount'
			,blnPOSAuthoriseRefunds AS 'POSAuthoriseRefunds'
			,blnARCreditBlockSI AS 'ARCreditBlockSI'
			,blnARCreditBlockSO AS 'ARCreditBlockSO'
			,blnARDeliveryAdvice AS 'ARDeliveryAdvice'
			,blnARDeliveryAdviceRemove AS 'ARDeliveryAdviceRemove'
			,blnInvCanChangeSellingPrice AS 'InvCanChangeSellingPrice'
			,blnARSalesPersonChangeApproval AS 'ARSalesPersonChangeApproval'
			,blnIRFinInvCostAnalysis AS 'IRFinInvCostAnalysis'
			,blnMFWorkOrders AS 'MFWorkOrders'
			,blnMFJobs AS 'MFJobs'
			,blnMFJobAdjustApproval AS 'MFJobAdjustApproval'
			,blnMFProductionSchedule AS 'MFProductionSchedule'
			,blnMFPostWIP AS 'MFPostWIP'
			,blnMFBillOfMaterial AS 'MFBillOfMaterial'
			,blnMFBOMAdjustApproval AS 'MFBOMAdjustApproval'
			,blnMFWorkCentres AS 'MFWorkCentres'
			,blnMFLabour AS 'MFLabour'
			,blnMFMachinery AS 'MFMachinery'
			,blnMFTransferJobs AS 'MFTransferJobs'
			,blnMFR AS 'MFR'
			,blnMFRTran AS 'MFRTran'
			,blnMFRWorkInProgress AS 'MFRWorkInProgress'
			,blnMFRLists AS 'MFRLists'
			,blnMFRBillOfMaterial AS 'MFRBillOfMaterial'
			,blnMFRResource AS 'MFRResource'
			,blnMFRItemWhereUsed AS 'MFRItemWhereUsed'
			,blnMFRSerialLotOutOfSeq AS 'MFRSerialLotOutOfSeq'
			,blnMFRMRP AS 'MFRMRP'
			,blnInvWorkOrder AS 'InvWorkOrder'
			,blnInvIntReq AS 'InvIntReq'
			,blnInvIssReq AS 'InvIssReq'
			,blnARRRTranCustAccrual AS 'ARRRTranCustAccrual'
			,blnARRRFinOrderStatement AS 'ARRRFinOrderStatement'
			,blnIRListsInvIntReq AS 'IRListsInvIntReq'
			,blnMFCloseJobs AS 'MFCloseJobs'
			,blnFAAssetsDisposal AS 'FAAssetsDisposal'
			,blnFAAssetsLocations AS 'FAAssetsLocations'
			,blnFARAssetRegister AS 'FARAssetRegister'
			,blnDashAP AS 'DashAP'
			,blnDashInventory AS 'DashInventory'
			,blnDashWarehouse AS 'DashWarehouse'
			,blnAPSetupPOApprovers AS 'APSetupPOApprovers'
			,blnApprovePurchaseOrders AS 'ApprovePurchaseOrders'
			,blnMFRWCTransfer AS 'MFRWCTransfer'
			,blnInvCatMarginApproval AS 'InvCatMarginApproval'
			,blnMobSa AS 'MobSa'
			,blnMobSaOrdProcess AS 'MobSaOrdProcess'
			,blnMobSaGeoTrack AS 'MobSaGeoTrack'
			,blnMobPhDash AS 'MobPhDash'
			,blnMobPhDashBankBal AS 'MobPhDashBankBal'
			,blnMobPhDashSalesItemComp AS 'MobPhDashSalesItemComp'
			,blnMobPhDashSalesCustCat AS 'MobPhDashSalesCustCat'
			,blnMobPhDashOutCustCat AS 'MobPhDashOutCustCat'
			,blnMobPhDashCustVendBal AS 'MobPhDashCustVendBal'
			,blnMobPhDashInvQty AS 'MobPhDashInvQty'
			,blnMobPhDashSalesPerf AS 'MobPhDashSalesPerf'
			,blnMobPhPOApproval AS 'MobPhPOApproval'
			,blnMobPhDashTimesheet AS 'MobPhDashTimesheet'
			,blnBRProjClaimStatement AS 'BRProjClaimStatement'
			,blnARRRTranCancelSalesDocs AS 'ARRRTranCancelSalesDocs'
			,blnAREditDeliveryMethod AS 'AREditDeliveryMethod'
			,blnInvIsRepackaging AS 'InvIsRepackaging'
			,blnIRRepackaging AS 'IRRepackaging'
			,blnContractBilling AS 'ContractBilling'
			,blnContractBillingType AS 'ContractBillingType'
			,blnProcessContractBilling AS 'ProcessContractBilling'
			,blnARRRecurringInvoice AS 'ARRRecurringInvoice'
			,blnARRContractExpiry AS 'ARRContractExpiry'
			,blnARRContractReconciliation AS 'ARRContractReconciliation'
			,blnAPReOrders AS 'APReOrders'
			,blnARShipmentsAuditTrail AS 'ARShipmentsAuditTrail'
			,blnARSalesOrderEDI AS 'ARSalesOrderEDI'
			,blnAPGRVAdjustmentApproval AS 'WHRecAdjust'
			,blnAPReturnSelection AS 'APReturn'
			,blnAPReturnAdjustmentApproval AS 'RetAprAdjust'
			,blnARDAAdjustmentApproval AS 'ARDeliveryAdviceAdjustApproval'
			,blnWHDelMethod AS WHDelMethod
			,blnIRTranLotNumMovement AS 'IRTranLotNumberMovement'
			,blnBankManager AS 'BankManager'
			,blnAPPRTranInvoiceDocs AS 'APPRTranInvoiceDocs'
			,blnMFRJobStatus AS 'MFRJobStatus'
			,blnMFRProdVariance AS 'MFRProdVariance'
			,blnMFRManVariance AS 'MFRManVariance'
			,blnAPPriceChangeAllowed AS 'APPriceChangeAllowed'
			,blnDashManage AS 'DashManage'
			,blnGLMergeAccounts AS 'MergeAcct'
			,blnWSWorkshop AS 'WSWorkshop'
			,blnWSBrowser AS 'WSBrowser'
			,blnWSInvoice AS 'WSInvoice'
			,blnWSInvoiceAdjAllowed AS 'WSInvoiceAdjAllowed'
			,blnWSPrintPreview AS 'WSPrintPreview'
			,blnWSProcessJob AS 'WSProcessJob'
			,blnWSProcessJobRemove AS 'WSProcessJobRemove'
			,blnWSProcessJobAdjAllowed AS 'WSProcessJobAdjAllowed'
			,blnWSQuote AS 'WSQuote'
			,blnWSQuoteRemove AS 'WSQuoteRemove'
			,blnWSQuoteAdjAllowed AS 'WSQuoteAdjAllowed'
			,blnWSCreditNote AS 'WSCreditNote'
			,blnWSCNChangesAllowed AS 'WSCNChangesAllowed'
			,blnWSCNAdjAllowed AS 'WSCNAdjAllowed'
			,blnWSCreditRequest AS 'WSCreditRequest'
			,blnWSCreditRequestsRemove AS 'WSCreditRequestsRemove'
			,blnWSCRAdjAllowed AS 'WSCRAdjAllowed'
			,blnWSAllowCreditNotesAndRequestItems AS 'WSAllowCreditNotesAndRequestItems'
			,blnWSReceipts AS 'WSReceipts'
			,blnWSReceiptsReversal AS 'WSReceiptsReversal'
			,blnWSServiceableItem AS 'WSServiceableItem'
			,blnWSServiceableItemType AS 'WSServiceableItemType'
			,blnWSJobTemplate AS 'WSJobTemplate'
			,blnWSSetupTechnician AS 'WSSetupTechnician'
			,blnWSSchedule AS 'WSSchedule'
			,blnWSInventoryIssue AS 'WSInventoryIssue'
			,blnworkshop0 AS 'workshop0'
			,blnWSTran AS 'WSTran'
			,blnWSWorkInProgress AS 'WSWorkInProgress'
			,blnWSJobProfitability AS 'WSJobProfitability'
			,blnWSResourceUsage AS 'WSResourceUsage'
			,blnWSJobCostVariance AS 'WSJobCostVariance'
			,blnWSLists AS 'WSLists'
			,blnWSJobTemplateList AS 'WSJobTemplateList'
			,blnWSProcDocuments AS 'WSProcDocuments'
			,blnWSViewMarginPercentage AS 'WSViewMarginPercentage'
			,blnWSCreditBlockIJB AS 'WSCreditBlockIJB'
			,blnWSCreditBlockPJB AS 'WSCreditBlockPJB'
			,blnARConfirmDeliveryAllowed AS 'ARConfirmDeliveryAllowed'
			,blnGLContracts AS 'GLContracts'
			,blnGLLRContracts AS 'GLLRContracts'
			,blnGLLRContractsMonthly AS 'GLLRContractsMonthly'
			,blnGLLRContractsIncomeStatement AS 'GLLRContractsIncomeStatement'
			,blnPOSPayouts AS 'POSPayouts'
			,blnARLayby AS 'ARLayby'
			,blnARChangeCustOnLB AS 'ARChangeCustOnLB'
			,blnARLaybyRemove AS 'ARLaybyRemove'
			,blnARLBAdjAllowed AS 'ARLBAdjAllowed'
			,blnARCreditBlockLB AS 'ARCreditBlockLB'
			,blnPOSLayby AS 'POSLayby'
			,blnPOSConvertLayby AS 'POSConvertLayby'
			,blnAPVenRecon AS 'APVenRecon'
			,blnAPVenReconWorksheet AS 'APVenReconWorksheet'
			,blnAPBuyers AS 'APBuyers'
			,blnAPVenReconTypes AS 'APVenReconTypes'
			,blnBRProjResources AS 'BRProjResources'
			,blnBRProjFinInfo AS 'BRProjFinInfo'
			,blnBRProjChecklist AS 'BRProjChecklist'
			,blnBRProjCashFlow AS 'BRProjCashFlow'
			,blnARPODManagement AS 'ARPODManagement'
			,blnInvEmployee AS 'InvEmployee'
			,blnApproveInventoryRequistion AS 'ApproveInventoryRequistion'
			,blnAPSetupIRApprovers AS 'APSetupIRApprovers'
			,blnPOSAuthoriseReturn AS 'POSAuthoriseReturn'
		FROM tblUsers(NOLOCK)
		WHERE blnApproveInventoryRequistion = 1
			AND strUserName NOT IN (
				SELECT strUserName
				FROM tblApprovalsDocLimit(NOLOCK)
				WHERE intApproverType = 3
				)
	END

END
GO
/****** Object:  StoredProcedure [dbo].[GetAllAssets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetAllAssets]
AS
    BEGIN
        SET NOCOUNT ON;
        IF OBJECT_ID('tempdb..#Temp') IS NOT NULL
            BEGIN
                DROP TABLE #Temp;
            END;
        BEGIN
            SELECT  IDENTITY( INT, 1,1 ) AS PK ,
                    strAssetCode AS AssetCode ,
                    strAssetDesc AS AssetDesc ,
                    strAssetTypeCode AS AssetTypeCode ,
                    uidCenterID AS CenterID ,
                    strProjNumber AS ProjNumber ,
                    decQuantity AS Quantity ,
                    dteDepreciateFrom AS DepreciateFrom ,
                    strSerialNumber AS SerialNumber ,
                    strTagNumber AS TagNumber ,
                    dteDisposalDate AS DisposalDate ,
                    strDisposalCode AS DisposalCode ,
                    decDisposalAmount AS DisposalAmount ,
                    strVendNumber AS VendNumber ,
                    dtePurchaseDate AS PurchaseDate ,
                    strFinanceMethod AS FinanceMethod ,
                    decIntRate AS IntRate ,
                    intPeriod AS Period ,
                    strAccNumber AS AccNumber ,
                    strCapexOrder AS CapexOrder ,
                    decPurchasePrice AS PurchasePrice ,
                    decResidualValue AS ResidualValue ,
                    decInsuredValue AS InsuredValue ,
                    decSalvageValue AS SalvageValue ,
                    decReplacementValue AS ReplacementValue ,
                    decDepreciableValue AS DepreciableValue ,
                    dteLastDeprecationDate AS LastDeprecationDate ,
                    decRemainingValue AS RemainingValue ,
                    strField1 AS Field1 ,
                    strField2 AS Field2 ,
                    strField3 AS Field3 ,
                    strField4 AS Field4 ,
                    strField5 AS Field5 ,
                    strField6 AS Field6 ,
                    strField7 AS Field7 ,
                    strField8 AS Field8 ,
                    strField9 AS Field9 ,
                    strField10 AS Field10 ,
                    strField11 AS Field11 ,
                    strField12 AS Field12 ,
                    strNotes AS Notes ,
                    bitInactive AS Inactive ,
                    bitIsSubAsset AS IsSubAsset ,
                    lngJourID AS JourID ,
                    decRevaluationValue AS RevaluationValue ,
                    bitIsRevaluationValueActive AS IsRevaluationValueActive ,
                    decProfitOrLossOnSale AS ProfitOrLossOnSale ,
                    decOpeningAccumulatedDepreciation1 AS OpeningAccumulatedDepreciation1 ,
                    decOpeningAccumulatedDepreciation2 AS OpeningAccumulatedDepreciation2 ,
                    decOpeningAccumulatedDepreciation3 AS OpeningAccumulatedDepreciation3 ,
                    decOpeningAccumulatedDepreciation4 AS OpeningAccumulatedDepreciation4 ,
                    decOpeningAccumulatedDepreciation5 AS OpeningAccumulatedDepreciation5 ,
                    strBarCode AS BarCode ,
                    strVendorInvoiceNumber AS VendorInvoiceNumber ,
                    strDepreciationCode1 AS DepreciationCode1 ,
                    strDepreciationCode2 AS DepreciationCode2 ,
                    strDepreciationCode3 AS DepreciationCode3 ,
                    strDepreciationCode4 AS DepreciationCode4 ,
                    strDepreciationCode5 AS DepreciationCode5
            INTO    #Temp
            FROM    tblAssets;
        END;
        ALTER TABLE #Temp ADD CenterName VARCHAR(MAX);
        ALTER TABLE #Temp ADD AssetType VARCHAR(MAX);
        DECLARE @maxPK INT;
        SELECT  @maxPK = MAX(PK)
        FROM    #Temp;
        DECLARE @pk INT;
        SET @pk = 1;
        WHILE @pk <= @maxPK
            BEGIN
                DECLARE @centerName VARCHAR(MAX);

                DECLARE @assetType VARCHAR(MAX);

                SELECT  @centerName = strLvl1 ,
                        @centerName += CASE WHEN strLvl2 IS NOT NULL
                                            THEN '\' + strLvl2
                                            ELSE ''
                                       END ,
                        @centerName += CASE WHEN strLvl3 IS NOT NULL
                                            THEN '\' + strLvl3
                                            ELSE ''
                                       END ,
                        @centerName += CASE WHEN strLvl4 IS NOT NULL
                                            THEN '\' + strLvl4
                                            ELSE ''
                                       END ,
                        @centerName += CASE WHEN strLvl5 IS NOT NULL
                                            THEN '\' + strLvl5
                                            ELSE ''
                                       END
                FROM    tblCenters
                WHERE   uidCenterID = ( SELECT  CenterID
                                        FROM    #Temp
                                        WHERE   PK = @pk
                                      );
                UPDATE  #Temp
                SET     CenterName = @centerName
                WHERE   PK = @pk;
                SET @assetType = ( SELECT   tat.strDescription
                                   FROM     tblAssetTypes tat
                                   WHERE    tat.strCode = ( SELECT
                                                              AssetTypeCode
                                                            FROM
                                                              #Temp
                                                            WHERE
                                                              PK = @pk
                                                          )
                                 );
                UPDATE  #Temp
                SET     AssetType = @assetType
                WHERE   PK = @pk;
                SELECT  @pk = @pk + 1;
            END;
        BEGIN
            SELECT  *
            FROM    #Temp;

        END;
    END;
GO
/****** Object:  StoredProcedure [dbo].[GetAllAuthorizeReasons]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetAllAuthorizeReasons]    Script Date: 04-02-2020 06:39:00 AM ******/
CREATE PROCEDURE [dbo].[GetAllAuthorizeReasons]
AS 
BEGIN

 SELECT lngID AS ID,
 strAuthReasonCode AS AuthReasonCode,
 strAuthReasonDesc AS AuthReasonDesc
 from tblAuthorizeReasons

END
GO
/****** Object:  StoredProcedure [dbo].[GetAllBagSize]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetAllBagSize]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetAllBagSize]
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    IF (Select bitManPromtekRead from tblCoOpts) = 1
	BEGIN
	    SELECT lngId as Id,strBagSize as BagSize FROM tblOptBagSize
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllCRMNotificationFieldLists]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************END [CheckIsActivityinUse]***********************************/

/************************** START [GetAllCRMNotificationFieldLists] ****************/

CREATE Procedure [dbo].[GetAllCRMNotificationFieldLists]
As
Begin

Select tblCRMNotification.bitActivateCRMNotification AS IsActivateCRMNotification
	   ,isnull(tblCRMNotification.strActivityNotification,'') AS ActivityNotification
	   ,isnull(tblCRMNotification.strActionNotification,'') AS ActionNotification
	   ,isnull(tblCRMNotification.strActionAssignedNotification,'') AS ActionAssignedNotification
	   ,isnull(tblCRMNotification.strEmailActionNotification,'') AS EmailActionNotification
 from tblCRMNotification

End
GO
/****** Object:  StoredProcedure [dbo].[GetAllCurrencies]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetAllCurrencies]  
AS  
SELECT strCurrency AS CurrencyCode  
 ,strCurrName AS CurrencyName  
 ,strCurrSymbol AS CurrencySymbol  
 ,bitTrailingSymb AS IsTrailing  
 ,strThousSymb AS ThousandSymbol  
 ,strDecSymb AS DecimalSymbol  
 ,intDecimals AS DecimalPlaces  
 ,strCentsName AS CentsName  
 ,bitHome AS IsHomeCurrency  
 ,bitUpdateMon AS IsUpdateMon  
 ,bitUpdateTue AS IsUpdateTue  
 ,bitUpdateWed AS IsUpdateWed  
 ,bitUpdateThu AS IsUpdateThu  
 ,bitUpdateFri AS IsUpdateFri  
 ,bitUpdateSat AS IsUpdateSat  
 ,bitUpdateSun AS IsUpdateSun  
 ,dteUpdateTime AS UpdateTime
 ,bitErrorRetry AS IsErrorRetry
 ,intAttempts AS Attempts
 ,dteInterval AS [Interval]
 ,strCurrName AS DisplayCurrency
FROM tblCurrency AS currency  
ORDER BY strCurrency
GO
/****** Object:  StoredProcedure [dbo].[GetAllCustomerInfo]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetBinExtData] ***********/

/*********** Start [GetAllCustomerInfo] ***********/
CREATE PROCEDURE [dbo].[GetAllCustomerInfo]
AS
BEGIN
	SELECT strCustName AS CustomerName
		,strCustDesc AS CustomerDesc
		,strCustDesc AS [Description]
		,strStreet1 AS Street1
		,strStreet2 AS Street2
		,strSuburb AS Suburb
		,strCity As City
		,strProvince AS Province
		,strPostal AS Postal
		,strCountry AS Country  
		,dbo.fnStripNonNumerics(strPhone) AS Phone
		,strContact AS Contact
	FROM tblCustomers
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllCustomerTargets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------
CREATE PROCEDURE [dbo].[GetAllCustomerTargets]
AS
BEGIN
SELECT tblCustomers.strCustName CustName, tblCustomers.strCustDesc CustDesc, ISNULL(tblCustomersT.decPeriod1,0) Period1, ISNULL(tblCustomersT.decPeriod2,0) Period2, 
ISNULL(tblCustomersT.decPeriod3,0) Period3, ISNULL(tblCustomersT.decPeriod4,0) Period4, ISNULL(tblCustomersT.decPeriod5,0) Period5, ISNULL(tblCustomersT.decPeriod6,0) Period6, 
ISNULL(tblCustomersT.decPeriod7,0) Period7, ISNULL(tblCustomersT.decPeriod8,0) Period8, ISNULL(tblCustomersT.decPeriod9,0) Period9, ISNULL(tblCustomersT.decPeriod10,0) Period10, 
ISNULL(tblCustomersT.decPeriod11,0) Period11, ISNULL(tblCustomersT.decPeriod12,0) Period12
FROM tblCustomers 
LEFT OUTER JOIN tblCustomersT ON tblCustomers.strCustName = tblCustomersT.strCustName 
WHERE tblCustomers.bitInactive = 0 
ORDER BY tblCustomers.strCustName

RETURN
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllDatabases]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-----------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetAllDatabases]
AS
BEGIN
	SET NOCOUNT ON
    SELECT 
        sys.databases.name As DatabaseName,
        user_access AS UserAccess
    FROM 
		sys.databases WHERE is_in_standby = 0 AND sys.databases.state = 0 AND is_read_only = 0
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllDebtCollections]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------'
CREATE PROCEDURE [dbo].[GetAllDebtCollections]
(
	@dtpAsAt AS SMALLDATETIME
)
AS
BEGIN
	SELECT 
		tblCustomers.strCustName AS CustomerName,
		tblCustomers.strCustDesc AS CustomerDescription,
		tblCustomers.strCellPhone As CellPhone,
		MASTERTABLE.dteDueDate AS DueDate,
		MASTERTABLE.bitIsForeign AS IsForeign,
		tblCustTransDT.decAmount AS Amount,
		tblCustTransDT.decAmountF AS AmountF
	FROM tblCustTrans AS MASTERTABLE 
	INNER JOIN tblCustTransDT 
		ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID 
	INNER JOIN tblCustomers 
		ON MASTERTABLE.strCustName = tblCustomers.strCustName
	WHERE 
		(tblCustomers.decBalDue <> 0 OR tblCustomers.decBalDueF <> 0) AND
		tblCustTransDT.bitReversed = 0 AND 
		tblCustTransDT.dteJournalDate <= @dtpAsAt AND 
		tblCustTransDT.lngCustTrID NOT IN 
										(SELECT 
												tblCustTransDT.lngCustTrID 
										 FROM tblCustTrans 
										 INNER JOIN tblCustTransDT 
													ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
										  WHERE 
											tblCustTrans.strCustName = MASTERTABLE.strCustName AND 
											tblCustTransDT.bitReversed = 0 AND 
											tblCustTransDT.dteJournalDate <= @dtpAsAt
										  GROUP BY tblCustTransDT.lngCustTrID 
										  HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0
										 )
ORDER BY tblCustomers.strCustName,MASTERTABLE.dteDueDate
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllDepartmentsBudgets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------
CREATE PROCEDURE [dbo].[GetAllDepartmentsBudgets]
AS
BEGIN
SELECT tblAccountsDept.strAcctDept AcctDept, tblAccounts.strDesc 'Desc', ISNULL(tblAccountsDeptB.decPeriod1,0) Period1, ISNULL(tblAccountsDeptB.decPeriod2,0) Period2, 
ISNULL(tblAccountsDeptB.decPeriod3,0) Period3, ISNULL(tblAccountsDeptB.decPeriod4,0) Period4, ISNULL(tblAccountsDeptB.decPeriod5,0) Period5, 
ISNULL(tblAccountsDeptB.decPeriod6,0) Period6, ISNULL(tblAccountsDeptB.decPeriod7,0) Period7, ISNULL(tblAccountsDeptB.decPeriod8,0) Period8, 
ISNULL(tblAccountsDeptB.decPeriod9,0) Period9, ISNULL(tblAccountsDeptB.decPeriod10,0) Period10, ISNULL(tblAccountsDeptB.decPeriod11,0) Period11, 
ISNULL(tblAccountsDeptB.decPeriod12,0) Period12 
FROM tblAccounts 
INNER JOIN tblAccountsDept ON tblAccounts.intGLNumber = tblAccountsDept.intGLNumber 
LEFT OUTER JOIN tblAccountsDeptB ON tblAccountsDept.intGLNumber = tblAccountsDeptB.intGLNumber AND tblAccountsDept.intDept = tblAccountsDeptB.intDept 
WHERE (tblAccounts.intAccType = 4 OR tblAccounts.intAccType = 5) 
AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2) 
AND (tblAccounts.bitInactive = 0)

RETURN
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllDepartmentsBudgetsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------
CREATE PROCEDURE [dbo].[GetAllDepartmentsBudgetsLY]
AS
BEGIN
SELECT tblAccountsDeptLY.strAcctDept AcctDept, tblAccountsLY.strDesc 'Desc', ISNULL(tblAccountsDeptBLY.decPeriod1,0) Period1, ISNULL(tblAccountsDeptBLY.decPeriod2,0) Period2, 
ISNULL(tblAccountsDeptBLY.decPeriod3,0) Period3, ISNULL(tblAccountsDeptBLY.decPeriod4,0) Period4, ISNULL(tblAccountsDeptBLY.decPeriod5,0) Period5, 
ISNULL(tblAccountsDeptBLY.decPeriod6,0) Period6, ISNULL(tblAccountsDeptBLY.decPeriod7,0) Period7, ISNULL(tblAccountsDeptBLY.decPeriod8,0) Period8, 
ISNULL(tblAccountsDeptBLY.decPeriod9,0) Period9, ISNULL(tblAccountsDeptBLY.decPeriod10,0) Period10, ISNULL(tblAccountsDeptBLY.decPeriod11,0) Period11, 
ISNULL(tblAccountsDeptBLY.decPeriod12,0) Period12 
FROM tblAccountsLY 
INNER JOIN tblAccountsDeptLY ON tblAccountsLY.intGLNumber = tblAccountsDeptLY.intGLNumber 
LEFT OUTER JOIN tblAccountsDeptBLY ON tblAccountsDeptLY.intGLNumber = tblAccountsDeptBLY.intGLNumber AND tblAccountsDeptLY.intDept = tblAccountsDeptBLY.intDept 
WHERE (tblAccountsLY.intAccType = 4 OR tblAccountsLY.intAccType = 5) 
AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2) 
AND (tblAccountsLY.bitInactive = 0)

RETURN
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllDocsForApproval]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO





---------------------------------
CREATE PROCEDURE [dbo].[GetAllDocsForApproval](@UserName NVARCHAR(50), @ApprovePurchaseOrders BIT = 1, @ApproveInvRequisitions BIT = 0) AS

BEGIN
	IF @UserName = 'all'
	BEGIN
		SELECT DISTINCT 'Purchase Requisition' AS [Type]
			,tblOrderDocP.[strOrdPDocID] AS DocumentID
			,tblOrderDocP.[strOrdPDocID] AS OrdPDocID
			,[dteSystemDate] AS [Date]
			,[dteJournalDate] AS JournalDate
			,[strUserName] AS UserName
			,[strVendName] AS Number
			,[strVendName] AS VendName
			,[strBoughtFrom] AS Name
			,[strBoughtFrom] AS BoughtFrom
			,CAST(strTotFormatted AS VARCHAR(50)) AS DocumentTotal
			,CAST(strTotFormatted AS VARCHAR(50)) AS decTotal
		FROM tblOrderDocP(NOLOCK)
		Left Join tblOrdersDocP_POApprovals on tblOrderDocP.strOrdPDocID = tblOrdersDocP_POApprovals.strOrdPDocID 
         Inner join tblPQApprovalsGroup on tblPQApprovalsGroup.ID=  tblOrdersDocP_POApprovals.intGroupId 
		WHERE bitCleared = 0
			AND intDocType = 2
			AND @ApprovePurchaseOrders = 'True'
		
		UNION
		
		SELECT DISTINCT 'Inventory Requisition' AS [Type]
			,strInvIntReqDocID AS DocumentID
			,strInvIntReqDocID AS OrdPDocID
			,dteSystemDate AS [Date]
			,dteJournalDate AS JournalDate
			,strUserName AS UserName
			,ISNULL(tblInvIntReqDoc.strEmpNumber, '') AS Number
			,ISNULL(tblInvIntReqDoc.strEmpNumber, '') AS VendName
			,ISNULL(strEmpName, '') AS Name
			,ISNULL(strEmpName, '') AS BoughtFrom
			,CAST(dectotal AS VARCHAR(50)) AS DocumentTotal
			,CAST(dectotal AS VARCHAR(50)) AS decTotal
		FROM tblInvIntReqDoc(NOLOCK)
		LEFT JOIN tblEmployees(NOLOCK) ON tblEmployees.strEmpNumber = tblInvIntReqDoc.strEmpNumber
		WHERE bitCleared = 0
			AND @ApproveInvRequisitions = 'True'
	END
	ELSE
	BEGIN
		SELECT DISTINCT 'Purchase Requisition' AS [Type]
			,ODP.[strOrdPDocID] AS DocumentID
			,ODP.[strOrdPDocID] AS OrdPDocID
			,ODP.dteSystemDate AS [Date]
			,ODP.dteJournalDate AS JournalDate
			,ODP.strUserName AS UserName
			,ODP.strVendName AS Number
			,ODP.strVendName AS VendName
			,ODP.strBoughtFrom AS Name
			,ODP.strBoughtFrom AS BoughtFrom
			,CAST(ODP.strTotFormatted AS VARCHAR(50)) AS DocumentTotal
			,CAST(ODP.strTotFormatted AS VARCHAR(50)) AS decTotal
		FROM tblOrderDocP ODP
		INNER JOIN tblOrdersDocP_POApprovals POA ON ODP.strOrdPDocID = POA.strOrdPDocID
		INNER JOIn tblPQApprovalsGroup(NOLOCK) g on poa.intGroupId = g.ID 
INNER JOIn tblApprovalsDocLimit(NOLOCK) dl on g.ID = dl.intApproverGroupId 
INNER JOIN tblPQApprovalsUserTracking(NOLOCK) ut on poa.strOrdPDocID = ut.strOrdPDocID and g.ID=ut.intGroupId and dl.strUserName = ut.strUserName 
		WHERE ODP.bitCleared = 0
			AND ODP.intDocType = 2
			AND ut.strUserName = @UserName AND @ApprovePurchaseOrders = 'True'
            AND ut.intApprovalStatus = 0 AND dl.priorityLevel =(Select MIN(priorityLevel) from tblApprovalsDocLimit(NOLOCK) l 
			inner join tblPQApprovalsUserTracking(NOLOCK) t on l.strUserName = t.strUserName and l.intApproverGroupId = t.intGroupId and poa.strOrdPDocID = t.strOrdPDocID where t.intApprovalStatus = 0)
			

		UNION
		
		SELECT DISTINCT 'Inventory Requisition' AS [Type]
			,ODP.strInvIntReqDocID AS DocumentID
			,ODP.strInvIntReqDocID AS OrdPDocID
			,ODP.dteSystemDate AS [Date]
			,ODP.dteSystemDate AS JournalDate
			,ODP.strUserName AS UserName
			,ISNULL(ODP.strEmpNumber, '') AS Number
			,ISNULL(ODP.strEmpNumber, '') AS VendName
			,ISNULL(tblEmployees.strEmpName, '') AS Name
			,ISNULL(tblEmployees.strEmpName, '') AS BoughtFrom
			,CAST(ODP.decTotal AS VARCHAR(50)) AS DocumentTotal
			,CAST(ODP.decTotal AS VARCHAR(50)) AS decTotal
		FROM tblInvIntReqDoc(NOLOCK) ODP
		INNER JOIN tblInvIntReqDoc_IRApprovals POA ON ODP.strInvIntReqDocID = POA.strInvIntReqDocID
		LEFT JOIN tblEmployees ON tblEmployees.strEmpNumber = ODP.strEmpNumber
		WHERE ODP.bitCleared = 0
			AND POA.strSelectedApproverUserName = @UserName
			AND @ApproveInvRequisitions = 'True'
	END
END
GO


/****** Object:  StoredProcedure [dbo].[GetAllEmployees]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetAllEmployees]
AS
BEGIN
	SELECT strEmpNumber AS VendorEmpName
		,('' + strEmpNumber + ' | ' + strEmpName) AS VendDesc
	FROM tblEmployees(NOLOCK)
	WHERE bitinactive = 0
		AND strEmpNumber NOT IN (
			SELECT strVendorEmpName
			FROM tblApproversVendEmpLimits
			WHERE intApproverType = 1
			)
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllEmployeesView]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetAllEmployeesView]***********/

---------------------------------
CREATE PROCEDURE [dbo].[GetAllEmployeesView]
AS
BEGIN
	SELECT vmon.strVendorEmpName AS VendorEmpName
		,vmon.strEmpName AS VendDesc
		,vmon.MonthlyDeptLimitIncl AS MonthlyDeptLimitIncl
		,convert(VARCHAR, convert(MONEY, vmon.MonthlyDeptLimitIncl), 1) AS MonthlyDeptLimitInclString
	FROM vw_IR_Employee_Monthly VMON
	INNER JOIN tblEmployees(NOLOCK) E ON VMON.strVendorEmpName = E.strEmpNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllFormNumbers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAllFormNumbers]
AS
BEGIN
	SELECT ISNULL(MAX(lngSONumber), 0) + 1 SONumber
		,ISNULL(MAX(lngQuoteNumber), 0) + 1 QuoteNumber
		,ISNULL(MAX(lngInvNumber), 0) + 1 InvNumber
		,ISNULL(MAX(lngPONumber), 0) + 1 PONumber
		,ISNULL(MAX(lngPINumber), 0) + 1 PINumber
		,ISNULL(MAX(lngRCNumber), 0) + 1 RCNumber
		,ISNULL(MAX(lngDPNumber), 0) + 1 DPNumber
		,ISNULL(MAX(lngJENumber), 0) + 1 JENumber
		,ISNULL(MAX(lngCNNumber), 0) + 1 CNNumber
		,ISNULL(MAX(lngDNNumber), 0) + 1 DNNumber
		,ISNULL(MAX(lngRQNumber), 0) + 1 RQNumber
		,ISNULL(MAX(lngQuSysNumber), 0) + 1 QuSysNumber
		,ISNULL(MAX(lngGVNumber), 0) + 1 GVNumber
		,ISNULL(MAX(lngTKNumber), 0) + 1 TKNumber
		,ISNULL(MAX(lngSHNumber), 0) + 1 SHNumber
		,ISNULL(MAX(lngMSNumber), 0) + 1 MSNumber
		,ISNULL(MAX(lngCRNumber), 0) + 1 CRNumber
		,ISNULL(MAX(lngRFQNumber), 0) + 1 RFQNumber
		,ISNULL(MAX(lngPSNumber), 0) + 1 PSNumber
		,ISNULL(MAX(lngDANumber), 0) + 1 DANumber
		,ISNULL(MAX(lngWONumber), 0) + 1 WONumber
		,ISNULL(MAX(lngJBNumber), 0) + 1 JBNumber
		,ISNULL(MAX(lngWPNumber), 0) + 1 WPNumber
		,ISNULL(MAX(lngIWONumber), 0) + 1 IWONumber
		,ISNULL(MAX(lngPYNumber), 0) + 1 PYNumber
		,ISNULL(MAX(lngCBNumber), 0) + 1 CBNumber
		,ISNULL(MAX(lngPRONumber), 0) + 1 PRONumber
		,ISNULL(MAX(lngBMNumber), 0) + 1 BMNumber
		,ISNULL(MAX(lngBMINumber), 0) + 1 BMINumber
		,ISNULL(MAX(lngXMLATNumber), 0) + 1 XMLATNumber
		,ISNULL(MAX(lngXMLRXNumber), 0) + 1 XMLRXNumber
		,ISNULL(MAX(lngXMLOXNumber), 0) + 1 XMLOXNumber
		,ISNULL(MAX(lngSINumber), 0) + 1 SINumber
		,ISNULL(MAX(lngPJBNumber), 0) + 1 PJBNumber
		,ISNULL(MAX(lngWQNumber), 0) + 1 WQNumber
		,ISNULL(MAX(lngIRNumber), 0) + 1 IRNumber
		,ISNULL(MAX(lngIJBNumber), 0) + 1 IJBNumber
		,ISNULL(MAX(lngLBNumber), 0) + 1 LBNumber
		,ISNULL(MAX(lngGLANumber), 0) + 1 GLANumber
	FROM tblLastIDs
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllGLEntryAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAllGLEntryAccountsCY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 ,@isForeignCurrencyRevaluation BIT  
 ,@isGridAccount BIT  
 ,@GridAccountList VARCHAR(MAX)  
 ,@RevaluationDate DATETIME = NULL  
 )  
AS  
BEGIN  
  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  
  IF @bitGLAccountAccess = 1  
  BEGIN  
  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts (NOLOCK)  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.bitLinkCEarnings = 0  
    AND tblAccounts.bitLinkAR = 0  
    AND tblAccounts.bitLinkAP = 0  
    AND tblAccounts.bitLinkDeposit = 0  
    AND tblAccounts.bitLinkPrePay = 0  
    AND tblAccounts.bitInactive = 0  
    AND tblAccounts.intGLNumber NOT IN (  
     SELECT intGLAsset  
     FROM tblAccountSets  
     )  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
   ORDER BY intAccType, intGLNumber  
  
  END  
  ELSE  
  BEGIN  
  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec (NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts (NOLOCK)  
   LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.bitLinkCEarnings = 0  
    AND tblAccounts.bitLinkAR = 0  
    AND tblAccounts.bitLinkAP = 0  
    AND tblAccounts.bitLinkDeposit = 0  
    AND tblAccounts.bitLinkPrePay = 0  
    AND tblAccounts.bitInactive = 0  
    AND tblAccounts.intGLNumber NOT IN (  
     SELECT intGLAsset  
     FROM tblAccountSets  
     )  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND tblAccounts.bitLinkAPVendMast = 0  
    AND tblAccounts.bitLinkPrepayVendMast = 0  
    AND tblAccounts.bitLinkARCustMast = 0  
    AND tblAccounts.bitLinkDepositCustMast = 0  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  
  END  
  
 END  
 ELSE  
 BEGIN  
  
  IF @bitGLAccountAccess = 1  
  BEGIN  
  
   IF @isForeignCurrencyRevaluation = 1  
   BEGIN  
  
    IF @isGridAccount = 0  
    BEGIN  
  
     SELECT DISTINCT tblAccounts.intGLNumber GLNumber  
      ,tblAccounts.intAccType AccountType  
      ,tblAccounts.strDesc 'Description'  
      ,tblAccounts.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccounts.decBalanceF AS VARCHAR(22)) RevaluationBalance  
     FROM tblAccounts (NOLOCK)  
     --LEFT JOIN tblJournalEntryDocDT ON tblAccounts.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     --LEFT JOIN tblJournalEntryDoc ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency] (NOLOCK) ON tblCurrency.strCurrency = tblAccounts.strCurrency  
     LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
     WHERE tblAccounts.bitLinkCEarnings = 0  
      AND tblAccounts.bitLinkAR = 0  
      AND tblAccounts.bitLinkAP = 0  
      AND tblAccounts.bitLinkDeposit = 0  
      AND tblAccounts.bitLinkPrePay = 0  
      AND tblAccounts.bitInactive = 0  
      AND tblAccounts.intGLNumber NOT IN (  
       SELECT intGLAsset  
       FROM tblAccountSets (NOLOCK)  
       )  
      AND tblAccounts.bitInactive = 0  
      AND (  
       tblAccounts.intGroupCode = 1  
       OR tblAccounts.intGroupCode = 2  
       )  
      AND (tblAccounts.strCurrency <> @strCurrency)  
      AND (decBalance <> 0 OR decBalanceF <> 0)  
      AND tblAccounts.bitLinkAPVendMast = 0  
      AND tblAccounts.bitLinkPrepayVendMast = 0  
      AND tblAccounts.bitLinkARCustMast = 0  
      AND tblAccounts.bitLinkDepositCustMast = 0  
      --AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
     ORDER BY intAccType, tblAccounts.intGLNumber  
  
    END  
    ELSE  
    BEGIN  
  
     SELECT DISTINCT tblAccounts.intGLNumber GLNumber  
      ,tblAccounts.intAccType AccountType  
      ,tblAccounts.strDesc 'Description'  
      ,tblAccounts.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName   
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccounts.decBalanceF AS VARCHAR(22)) RevaluationBalance  
     FROM tblAccounts (NOLOCK)  
     --LEFT JOIN tblJournalEntryDocDT ON tblAccounts.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     --LEFT JOIN tblJournalEntryDoc ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency] (NOLOCK) ON tblCurrency.strCurrency = tblAccounts.strCurrency  
     LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
     WHERE tblAccounts.bitLinkCEarnings = 0  
      AND tblAccounts.bitLinkAR = 0  
      AND tblAccounts.bitLinkAP = 0  
      AND tblAccounts.bitLinkDeposit = 0  
      AND tblAccounts.bitLinkPrePay = 0  
      AND tblAccounts.bitInactive = 0  
      AND tblAccounts.intGLNumber NOT IN (  
       SELECT intGLAsset  
       FROM tblAccountSets (NOLOCK)  
       )  
      AND tblAccounts.bitInactive = 0  
      AND (  
       tblAccounts.intGroupCode = 1  
       OR tblAccounts.intGroupCode = 2  
       )  
      AND (tblAccounts.strCurrency <> @strCurrency)  
      AND (decBalance <> 0 OR decBalanceF <> 0)  
      --AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
      AND tblAccounts.intGLNumber NOT IN (  
       SELECT value  
       FROM dbo.fnSplitStringAsTable(@GridAccountList, ',')  
       )  
      AND tblAccounts.bitLinkAPVendMast = 0  
      AND tblAccounts.bitLinkPrepayVendMast = 0  
      AND tblAccounts.bitLinkARCustMast = 0  
      AND tblAccounts.bitLinkDepositCustMast = 0  
     ORDER BY intAccType, tblAccounts.intGLNumber  
  
    END  
  
   END  
   ELSE  
   BEGIN  
  
    SELECT tblAccounts.intGLNumber GLNumber  
     ,tblAccounts.intAccType AccountType  
     ,tblAccounts.strDesc 'Description'  
     ,tblAccounts.intAccClass AccountClass  
     ,ISNULL(tblInv.strPartNumber, '') JournalCode  
     ,0 AccountSecCount  
     ,'' UserName  
    FROM tblAccounts (NOLOCK)  
    LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
    WHERE tblAccounts.bitLinkCEarnings = 0  
     AND tblAccounts.bitLinkAR = 0  
     AND tblAccounts.bitLinkAP = 0  
     AND tblAccounts.bitLinkDeposit = 0  
     AND tblAccounts.bitLinkPrePay = 0  
     AND tblAccounts.bitInactive = 0  
     AND tblAccounts.intGLNumber NOT IN (  
      SELECT intGLAsset  
      FROM tblAccountSets (NOLOCK)  
      )  
     AND tblAccounts.bitInactive = 0  
     AND (  
      tblAccounts.intGroupCode = 1  
      OR tblAccounts.intGroupCode = 2  
      )  
     AND (  
      strCurrency = @strCurrency  
      OR strCurrency = @strHomeCurrency  
      )  
     AND tblAccounts.bitLinkAPVendMast = 0  
     AND tblAccounts.bitLinkPrepayVendMast = 0  
     AND tblAccounts.bitLinkARCustMast = 0  
     AND tblAccounts.bitLinkDepositCustMast = 0  
    ORDER BY intAccType, intGLNumber  
  
   END  
  
  END  
  ELSE  
  IF @isForeignCurrencyRevaluation = 1  
  BEGIN  
  SELECT DISTINCT tblAccounts.intGLNumber GLNumber  
 ,tblAccounts.intAccType AccountType  
 ,tblAccounts.strDesc 'Description'  
 ,tblAccounts.intAccClass AccountClass  
 ,ISNULL(tblInv.strPartNumber, '') JournalCode  
 ,ISNULL((  
   SELECT COUNT(tblAccountsSec.intGLNumber)  
   FROM tblAccountsSec(NOLOCK)  
   WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
   ), 0) AccountSecCount  
 ,ISNULL(tblAccountsSec.strUserName, '') UserName  
 ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccounts.decBalanceF AS VARCHAR(22)) RevaluationBalance  
FROM tblAccounts(NOLOCK)  
LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
 AND tblAccountsSec.strUserName = @strUserName  
INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblAccounts.strCurrency  
LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
WHERE tblAccounts.bitLinkCEarnings = 0  
 AND tblAccounts.bitLinkAR = 0  
 AND tblAccounts.bitLinkAP = 0  
 AND tblAccounts.bitLinkDeposit = 0  
 AND tblAccounts.bitLinkPrePay = 0  
 AND tblAccounts.bitInactive = 0  
 AND tblAccounts.intGLNumber NOT IN (  
  SELECT intGLAsset  
  FROM tblAccountSets(NOLOCK)  
  WHERE (  
    blnService = 0  
    AND blnBuyout = 0  
    )  
  )  
 AND tblAccounts.bitInactive = 0  
 AND (  
  tblAccounts.intGroupCode = 1  
  OR tblAccounts.intGroupCode = 2  
  )  
 AND tblAccounts.bitLinkAPVendMast = 0  
 AND tblAccounts.bitLinkPrepayVendMast = 0  
 AND tblAccounts.bitLinkARCustMast = 0  
 AND tblAccounts.bitLinkDepositCustMast = 0  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec (NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts (NOLOCK)  
   LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.bitLinkCEarnings = 0  
    AND tblAccounts.bitLinkAR = 0  
    AND tblAccounts.bitLinkAP = 0  
    AND tblAccounts.bitLinkDeposit = 0  
    AND tblAccounts.bitLinkPrePay = 0  
    AND tblAccounts.bitInactive = 0  
    AND tblAccounts.intGLNumber NOT IN (  
     SELECT intGLAsset  
     FROM tblAccountSets (NOLOCK)  
     )  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
    AND tblAccounts.bitLinkAPVendMast = 0  
    AND tblAccounts.bitLinkPrepayVendMast = 0  
    AND tblAccounts.bitLinkARCustMast = 0  
    AND tblAccounts.bitLinkDepositCustMast = 0  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  
  END  
  
 END  
  
 RETURN  
  
END  
GO

/****** Object:  StoredProcedure [dbo].[GetAllGLEntryAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAllGLEntryAccountsLY] (
	@bitGLAccountAccess BIT
	,@bitShowAllCurrency BIT
	,@strUserName NVARCHAR(40)
	,@strCurrency NVARCHAR(6)
	,@strHomeCurrency NVARCHAR(6)
	,@isForeignCurrencyRevaluation BIT
	,@isGridAccount BIT
	,@GridAccountList VARCHAR(MAX)
	,@RevaluationDate DATETIME = NULL
	)
AS
BEGIN
	IF @bitShowAllCurrency = 1
	BEGIN
		IF @bitGLAccountAccess = 1
		BEGIN
			SELECT tblAccountsLY.intGLNumber GLNumber
				,tblAccountsLY.intAccType AccountType
				,tblAccountsLY.strDesc 'Description'
				,tblAccountsLY.intAccClass AccountClass
				,ISNULL(tblInv.strPartNumber, '') JournalCode
				,0 AccountSecCount
				,'' UserName
			FROM tblAccountsLY(NOLOCK)
			LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber
			WHERE tblAccountsLY.bitLinkCEarnings = 0
				AND tblAccountsLY.bitLinkAR = 0
				AND tblAccountsLY.bitLinkAP = 0
				AND tblAccountsLY.bitLinkDeposit = 0
				AND tblAccountsLY.bitLinkPrePay = 0
				AND tblAccountsLY.bitInactive = 0
				AND tblAccountsLY.intGLNumber NOT IN (
					SELECT intGLAsset
					FROM tblAccountsets(NOLOCK)
					)
				AND tblAccountsLY.bitInactive = 0
				AND (
					tblAccountsLY.intGroupCode = 1
					OR tblAccountsLY.intGroupCode = 2
					)
				AND tblAccountsLY.bitLinkAPVendMast = 0
				AND tblAccountsLY.bitLinkPrepayVendMast = 0
				AND tblAccountsLY.bitLinkARCustMast = 0
				AND tblAccountsLY.bitLinkDepositCustMast = 0
			ORDER BY intAccType
				,intGLNumber
		END
		ELSE
		BEGIN
			SELECT tblAccountsLY.intGLNumber GLNumber
				,tblAccountsLY.intAccType AccountType
				,tblAccountsLY.strDesc 'Description'
				,tblAccountsLY.intAccClass AccountClass
				,ISNULL(tblInv.strPartNumber, '') JournalCode
				,ISNULL((
						SELECT COUNT(tblAccountsSec.intGLNumber)
						FROM tblAccountsSec(NOLOCK)
						WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber
						), 0) AccountSecCount
				,ISNULL(tblAccountsSec.strUserName, '') UserName
			FROM tblAccountsLY(NOLOCK)
			LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber
				AND tblAccountsSec.strUserName = @strUserName
			LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber
			WHERE tblAccountsLY.bitLinkCEarnings = 0
				AND tblAccountsLY.bitLinkAR = 0
				AND tblAccountsLY.bitLinkAP = 0
				AND tblAccountsLY.bitLinkDeposit = 0
				AND tblAccountsLY.bitLinkPrePay = 0
				AND tblAccountsLY.bitInactive = 0
				AND tblAccountsLY.intGLNumber NOT IN (
					SELECT intGLAsset
					FROM tblAccountsets(NOLOCK)
					)
				AND tblAccountsLY.bitInactive = 0
				AND (
					tblAccountsLY.intGroupCode = 1
					OR tblAccountsLY.intGroupCode = 2
					)
				AND tblAccountsLY.bitLinkAPVendMast = 0
				AND tblAccountsLY.bitLinkPrepayVendMast = 0
				AND tblAccountsLY.bitLinkARCustMast = 0
				AND tblAccountsLY.bitLinkDepositCustMast = 0
			ORDER BY intAccType
				,tblAccountsLY.intGLNumber
		END
	END
	ELSE
	BEGIN
		IF @bitGLAccountAccess = 1
		BEGIN
			IF @isForeignCurrencyRevaluation = 1
			BEGIN
				IF @isGridAccount = 0
				BEGIN
					SELECT DISTINCT tblAccountsLY.intGLNumber GLNumber
						,tblAccountsLY.intAccType AccountType
						,tblAccountsLY.strDesc 'Description'
						,tblAccountsLY.intAccClass AccountClass
						,ISNULL(tblInv.strPartNumber, '') JournalCode
						,0 AccountSecCount
						,'' UserName
						,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccountsLY.decBalanceF AS VARCHAR(22)) RevaluationBalance
						,tblAccountsLY.decBalanceF AS Balance
					FROM tblAccountsLY(NOLOCK)
					--INNER JOIN tblJournalEntryDocDT ON tblAccountsLY.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
					--INNER JOIN tblJournalEntryDoc ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
					INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblAccountsLY.strCurrency
					LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber
					WHERE tblAccountsLY.bitLinkCEarnings = 0
						AND tblAccountsLY.bitLinkAR = 0
						AND tblAccountsLY.bitLinkAP = 0
						AND tblAccountsLY.bitLinkDeposit = 0
						AND tblAccountsLY.bitLinkPrePay = 0
						AND tblAccountsLY.bitInactive = 0
						AND tblAccountsLY.intGLNumber NOT IN (
							SELECT intGLAsset
							FROM tblAccountsets(NOLOCK)
							)
						AND tblAccountsLY.bitInactive = 0
						AND (
							tblAccountsLY.intGroupCode = 1
							OR tblAccountsLY.intGroupCode = 2
							)
						AND (tblAccountsLY.strCurrency <> @strCurrency)
						AND decBalance <> 0
						AND tblAccountsLY.bitLinkAPVendMast = 0
						AND tblAccountsLY.bitLinkPrepayVendMast = 0
						AND tblAccountsLY.bitLinkARCustMast = 0
						AND tblAccountsLY.bitLinkDepositCustMast = 0
					--AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
					ORDER BY intAccType
						,tblAccountsLY.intGLNumber
				END
				ELSE
				BEGIN
					SELECT DISTINCT tblAccountsLY.intGLNumber GLNumber
						,tblAccountsLY.intAccType AccountType
						,tblAccountsLY.strDesc 'Description'
						,tblAccountsLY.intAccClass AccountClass
						,ISNULL(tblInv.strPartNumber, '') JournalCode
						,0 AccountSecCount
						,'' UserName
						,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccountsLY.decBalanceF AS VARCHAR(22)) RevaluationBalance
						,tblAccountsLY.decBalanceF AS Balance
					FROM tblAccountsLY(NOLOCK)
					--LEFT JOIN tblJournalEntryDocDT ON tblAccountsLY.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
					--LEFT JOIN tblJournalEntryDoc ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
					INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblAccountsLY.strCurrency
					LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber
					WHERE tblAccountsLY.bitLinkCEarnings = 0
						AND tblAccountsLY.bitLinkAR = 0
						AND tblAccountsLY.bitLinkAP = 0
						AND tblAccountsLY.bitLinkDeposit = 0
						AND tblAccountsLY.bitLinkPrePay = 0
						AND tblAccountsLY.bitInactive = 0
						AND tblAccountsLY.intGLNumber NOT IN (
							SELECT intGLAsset
							FROM tblAccountsets(NOLOCK)
							)
						AND tblAccountsLY.bitInactive = 0
						AND (
							tblAccountsLY.intGroupCode = 1
							OR tblAccountsLY.intGroupCode = 2
							)
						AND (tblAccountsLY.strCurrency <> @strCurrency)
						AND (
							decBalance <> 0
							OR decBalanceF <> 0
							)
						--AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
						AND tblAccountsLY.intGLNumber NOT IN (
							SELECT value
							FROM dbo.fnSplitStringAsTable(@GridAccountList, ',')
							)
						AND tblAccountsLY.bitLinkAPVendMast = 0
						AND tblAccountsLY.bitLinkPrepayVendMast = 0
						AND tblAccountsLY.bitLinkARCustMast = 0
						AND tblAccountsLY.bitLinkDepositCustMast = 0
					ORDER BY intAccType
						,tblAccountsLY.intGLNumber
				END
			END
			ELSE
			BEGIN
				SELECT tblAccountsLY.intGLNumber GLNumber
					,tblAccountsLY.intAccType AccountType
					,tblAccountsLY.strDesc 'Description'
					,tblAccountsLY.intAccClass AccountClass
					,ISNULL(tblInv.strPartNumber, '') JournalCode
					,0 AccountSecCount
					,'' UserName
				FROM tblAccountsLY(NOLOCK)
				LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber
				WHERE tblAccountsLY.bitLinkCEarnings = 0
					AND tblAccountsLY.bitLinkAR = 0
					AND tblAccountsLY.bitLinkAP = 0
					AND tblAccountsLY.bitLinkDeposit = 0
					AND tblAccountsLY.bitLinkPrePay = 0
					AND tblAccountsLY.bitInactive = 0
					AND tblAccountsLY.intGLNumber NOT IN (
						SELECT intGLAsset
						FROM tblAccountsets(NOLOCK)
						)
					AND tblAccountsLY.bitInactive = 0
					AND (
						tblAccountsLY.intGroupCode = 1
						OR tblAccountsLY.intGroupCode = 2
						)
					AND (
						strCurrency = @strCurrency
						OR strCurrency = @strHomeCurrency
						)
					AND tblAccountsLY.bitLinkAPVendMast = 0
					AND tblAccountsLY.bitLinkPrepayVendMast = 0
					AND tblAccountsLY.bitLinkARCustMast = 0
					AND tblAccountsLY.bitLinkDepositCustMast = 0
				ORDER BY intAccType
					,intGLNumber
			END
		END
		ELSE
		BEGIN
			SELECT tblAccountsLY.intGLNumber GLNumber
				,tblAccountsLY.intAccType AccountType
				,tblAccountsLY.strDesc 'Description'
				,tblAccountsLY.intAccClass AccountClass
				,ISNULL(tblInv.strPartNumber, '') JournalCode
				,ISNULL((
						SELECT COUNT(tblAccountsSec.intGLNumber)
						FROM tblAccountsSec(NOLOCK)
						WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber
						), 0) AccountSecCount
				,ISNULL(tblAccountsSec.strUserName, '') UserName
			FROM tblAccountsLY(NOLOCK)
			LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber
				AND tblAccountsSec.strUserName = @strUserName
			LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber
			WHERE tblAccountsLY.bitLinkCEarnings = 0
				AND tblAccountsLY.bitLinkAR = 0
				AND tblAccountsLY.bitLinkAP = 0
				AND tblAccountsLY.bitLinkDeposit = 0
				AND tblAccountsLY.bitLinkPrePay = 0
				AND tblAccountsLY.bitInactive = 0
				AND tblAccountsLY.intGLNumber NOT IN (
					SELECT intGLAsset
					FROM tblAccountsets(NOLOCK)
					)
				AND tblAccountsLY.bitInactive = 0
				AND (
					tblAccountsLY.intGroupCode = 1
					OR tblAccountsLY.intGroupCode = 2
					)
				AND (
					strCurrency = @strCurrency
					OR strCurrency = @strHomeCurrency
					)
				AND tblAccountsLY.bitLinkAPVendMast = 0
				AND tblAccountsLY.bitLinkPrepayVendMast = 0
				AND tblAccountsLY.bitLinkARCustMast = 0
				AND tblAccountsLY.bitLinkDepositCustMast = 0
			ORDER BY intAccType
				,tblAccountsLY.intGLNumber
		END
	END

	RETURN
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllGLEntryNoBankAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAllGLEntryNoBankAccountsCY]  
(  
 @bitGLAccountAccess bit,  
 @bitShowAllCurrency bit,  
 @strUserName nvarchar(40),  
 @strCurrency nvarchar(6),  
 @strHomeCurrency nvarchar(6)  
)  
AS  
  
BEGIN  
  
if @bitShowAllCurrency = 1  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  FROM tblAccounts  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkCEarnings = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInactive = 0   
  AND tblAccounts.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets)   
  AND tblAccounts.bitInactive = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.bitBank <> 1)  
  AND tblAccounts.bitLinkAPVendMast = 0 AND tblAccounts.bitLinkPrepayVendMast = 0 AND tblAccounts.bitLinkARCustMast = 0 AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName   
  FROM tblAccounts  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkCEarnings = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInactive = 0   
  AND tblAccounts.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets)   
  AND tblAccounts.bitInactive = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.bitBank <> 1)  
  AND tblAccounts.bitLinkAPVendMast = 0 AND tblAccounts.bitLinkPrepayVendMast = 0 AND tblAccounts.bitLinkARCustMast = 0 AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccounts.intGLNumber  
  
 END  
  
END  
ELSE  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  FROM tblAccounts  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkCEarnings = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInactive = 0   
  AND tblAccounts.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets)   
  AND tblAccounts.bitInactive = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.bitBank <> 1)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccounts.bitLinkAPVendMast = 0 AND tblAccounts.bitLinkPrepayVendMast = 0 AND tblAccounts.bitLinkARCustMast = 0 AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName   
  FROM tblAccounts  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkCEarnings = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInactive = 0   
  AND tblAccounts.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets)   
  AND tblAccounts.bitInactive = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.bitBank <> 1)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccounts.bitLinkAPVendMast = 0 AND tblAccounts.bitLinkPrepayVendMast = 0 AND tblAccounts.bitLinkARCustMast = 0 AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccounts.intGLNumber  
  
 END  
  
END  
  
RETURN  
  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetAllGLEntryNoBankAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAllGLEntryNoBankAccountsLY]  
(  
 @bitGLAccountAccess bit,  
 @bitShowAllCurrency bit,  
 @strUserName nvarchar(40),  
 @strCurrency nvarchar(6),  
 @strHomeCurrency nvarchar(6)  
)  
AS  
  
BEGIN  
  
if @bitShowAllCurrency = 1  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  FROM tblAccountsLY  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkCEarnings = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInactive = 0   
  AND tblAccountsLY.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountsets (NOLOCK))   
  AND tblAccountsLY.bitInactive = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.bitBank <> 1)  
  AND tblAccountsLY.bitLinkAPVendMast = 0   AND tblAccountsLY.bitLinkPrepayVendMast = 0   AND tblAccountsLY.bitLinkARCustMast = 0   AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName   
  FROM tblAccountsLY  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkCEarnings = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInactive = 0   
  AND tblAccountsLY.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountsets (NOLOCK))   
  AND tblAccountsLY.bitInactive = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.bitBank <> 1)  
  AND tblAccountsLY.bitLinkAPVendMast = 0   AND tblAccountsLY.bitLinkPrepayVendMast = 0   AND tblAccountsLY.bitLinkARCustMast = 0   AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccountsLY.intGLNumber  
  
 END  
  
END  
ELSE  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  FROM tblAccountsLY  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkCEarnings = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInactive = 0   
  AND tblAccountsLY.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountsets (NOLOCK))   
  AND tblAccountsLY.bitInactive = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.bitBank <> 1)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccountsLY.bitLinkAPVendMast = 0   AND tblAccountsLY.bitLinkPrepayVendMast = 0   AND tblAccountsLY.bitLinkARCustMast = 0   AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName   
  FROM tblAccountsLY (NOLOCK)   
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkCEarnings = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInactive = 0   
  AND tblAccountsLY.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountsets (NOLOCK))   
  AND tblAccountsLY.bitInactive = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.bitBank <> 1)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccountsLY.bitLinkAPVendMast = 0   AND tblAccountsLY.bitLinkPrepayVendMast = 0   AND tblAccountsLY.bitLinkARCustMast = 0   AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccountsLY.intGLNumber  
  
 END  
  
END  
  
RETURN  
  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetAllImageDataByPartNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetAllImageDataByPartNumber]
	@partNumber as varchar(50)
AS
BEGIN	
	SELECT Image_ID AS ImageID
	,strPartNumber AS PartNumber
	,imgData AS ImageData
	,CAST(isnull(bitDefaultImage,0) as bit) as IsDefaultImage
	From tblInvImg Where strPartNumber = @partNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllInventoryTargets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------------
CREATE PROCEDURE [dbo].[GetAllInventoryTargets]
AS
BEGIN
SELECT tblInv.strPartNumber PartNumber, tblInv.strDesc 'Desc', ISNULL(tblInvT.decPeriod1,0) Period1, ISNULL(tblInvT.decPeriod2,0) Period2, ISNULL(tblInvT.decPeriod3,0) Period3, 
ISNULL(tblInvT.decPeriod4,0) Period4, ISNULL(tblInvT.decPeriod5,0) Period5, ISNULL(tblInvT.decPeriod6,0) Period6, ISNULL(tblInvT.decPeriod7,0) Period7, 
ISNULL(tblInvT.decPeriod8,0) Period8, ISNULL(tblInvT.decPeriod9,0) Period9, ISNULL(tblInvT.decPeriod10,0) Period10, ISNULL(tblInvT.decPeriod11,0) Period11, 
ISNULL(tblInvT.decPeriod12,0) Period12 
FROM tblInv 
LEFT OUTER JOIN tblInvT ON tblInv.strPartNumber = tblInvT.strPartNumber 
WHERE (tblInv.bitInactive = 0) AND (tblInv.intType <> 5) AND (tblInv.bitOtherCmp = 0)

RETURN
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllInvExt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetAllInvExt]    
 @InActiveFlag int  = 0,    
 @MinimumUpdatedDate DateTime = null,
 @PageNumber int,
 @PageSize int
AS    
BEGIN    
 SET NOCOUNT ON;    
 WITH Paged AS
(
 -- @InActiveFlag = 0 means active, 1 means In active ,2 means all    
 SELECT tblInvExt.[strPartNumber] AS PartNumber    
      ,[strLocName] AS LocName    
      ,[decAvail] AS Avail    
      ,[decAlloc] AS Alloc    
      ,[decOnHand] AS OnHand    
      ,[decValue] AS Value    
      ,[decOnOrder] AS OnOrder    
      ,[decOpenQty] AS OpenQty    
      ,[decOpenValue] AS OpenValue    
      ,[intReorderPoint] AS ReorderPoint    
      ,[strAcctSet] AS AcctSet    
      ,[strBinLoc] AS BinLoc    
      ,tblInvExt.[decMaxLevel] AS MaxLevel    
      ,tblInvExt.[decMinimumLevel] AS MinimumLevel    
      ,tblInvExt.[bitInactive] AS Inactive    
      ,[bitDefault] AS IsDefault  
	  , ROW_NUMBER() OVER(ORDER BY tblInvExt.[strPartNumber]) AS RowNumber
 FROM tblInvExt LEFT JOIN tblInv ON tblInv.strPartNumber = tblInvExt.strPartNumber     
 WHERE (@MinimumUpdatedDate IS NULL OR dteLastUpdated > @MinimumUpdatedDate) and    
		tblInvExt.bitInactive = CASE @InActiveFlag     
             WHEN 0 THEN 0    
             WHEN 1 THEN 1    
             WHEN 2 THEN tblInvExt.bitInactive    
            END    
	)
	SELECT * FROM Paged
	WHERE RowNumber BETWEEN (@PageNumber - 1) * @PageSize + 1 AND @PageNumber * @PageSize
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllInvItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE   PROCEDURE [dbo].[GetAllInvItems]
	@MinimumUpdatedDate DateTime = null,
	@PageNumber int,
	@PageSize int
AS
BEGIN
	SET NOCOUNT ON;	
	
	WITH Paged AS
(
	SELECT  tblInv.strPartNumber AS PartNumber, strDesc AS Description, intType AS Type, strCategory AS Category, strBuyUnit AS BuyUnit, 
		strStockUnit AS StockUnit,strBarCode AS BarCode,strBarCode2 AS BarCode2,bitInactive AS IsInactive,tblInvImg.Image_ID AS ImageId, 
		bitInvSerialType AS IsInvSerialType,
		ROW_NUMBER() OVER(ORDER BY tblInv.strPartNumber) AS RowNumber     
	FROM tblInv	LEFT OUTER JOIN tblInvImg ON tblInv.strPartNumber = tblInvImg.strPartNumber 
	WHERE intType <> 5 AND (dbo.tblInv.bitInactive = 0) AND (@MinimumUpdatedDate IS NULL OR dteLastUpdated > @MinimumUpdatedDate)
		AND (tblInvImg.bitDefaultImage IS NULL OR tblInvImg.bitDefaultImage = 1)
 )
 SELECT 
  *
FROM 
    Paged
WHERE 
    RowNumber BETWEEN (@PageNumber - 1) * @PageSize + 1 AND @PageNumber * @PageSize
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllInvJournalCodes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetPaymentList] ***********/


/*********** Start [GetAllInvJournalCodes] ***********/
CREATE PROCEDURE [dbo].[GetAllInvJournalCodes] (
	@InActive BIT = 0
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@Search AS NVARCHAR(Max) = ''
	)
AS
BEGIN
	DECLARE @skip INT
 
	SET @skip = @PageSize * (@PageNumber - 1)
 
	IF(@InActive = 0)
	BEGIN
		SELECT tblInv.strPartNumber AS PartNumber
			,tblInv.strDesc AS [Description]
			,CONCAT (
				tblAccounts.intGLNumber
				,' '
				,tblAccounts.strDesc
				) AS Account
			,tblInv.bitInactive AS IsInactive
			,tblInv.bitExclCommission AS IsExclCommission
		FROM tblInv
		INNER JOIN tblAccounts ON tblInv.intExpAcct = tblAccounts.intGLNumber
		WHERE (
				tblInv.intType = 5
				AND tblInv.bitInactive = @InActive
				)
			AND (
				ISNULL(strPartNumber, '') LIKE '%' + ISNULL(@search, strPartNumber) + '%'
				OR ISNULL(tblInv.strDesc, '') LIKE '%' + ISNULL(@search, tblInv.strDesc) + '%'
				OR ISNULL(tblAccounts.intGLNumber, '') LIKE '%' + ISNULL(@search, tblAccounts.intGLNumber) + '%'
				OR ISNULL(tblAccounts.strDesc, '') LIKE '%' + ISNULL(@search, tblAccounts.strDesc) + '%'
				)
		ORDER BY strPartNumber OFFSET(@Skip) ROWS
 
		FETCH NEXT (@PageSize) ROWS ONLY
	END
	ELSE
	BEGIN
		SELECT tblInv.strPartNumber AS PartNumber
			,tblInv.strDesc AS [Description]
			,CONCAT (
				tblAccounts.intGLNumber
				,' '
				,tblAccounts.strDesc
				) AS Account
			,tblInv.bitInactive AS IsInactive
			,tblInv.bitExclCommission AS IsExclCommission
		FROM tblInv
		INNER JOIN tblAccounts ON tblInv.intExpAcct = tblAccounts.intGLNumber
		WHERE (
				tblInv.intType = 5
				)
			AND (
				ISNULL(strPartNumber, '') LIKE '%' + ISNULL(@search, strPartNumber) + '%'
				OR ISNULL(tblInv.strDesc, '') LIKE '%' + ISNULL(@search, tblInv.strDesc) + '%'
				OR ISNULL(tblAccounts.intGLNumber, '') LIKE '%' + ISNULL(@search, tblAccounts.intGLNumber) + '%'
				OR ISNULL(tblAccounts.strDesc, '') LIKE '%' + ISNULL(@search, tblAccounts.strDesc) + '%'
				)
		ORDER BY strPartNumber OFFSET(@Skip) ROWS
 
		FETCH NEXT (@PageSize) ROWS ONLY
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetAllIRDocsForApproval]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetAllIRDocsForApproval]***********/

---------------------------------
CREATE PROCEDURE [dbo].[GetAllIRDocsForApproval] (@UserName NVARCHAR(50))
AS
BEGIN
	IF @UserName = 'all'
	BEGIN
		SELECT DISTINCT strInvIntReqDocID AS DocumentID
			,dteSystemDate AS [Date]
			,strUserName AS UserName
			,ISNULL(tblInvIntReqDoc.strEmpNumber, '') AS Number
			,ISNULL(strEmpName, '') AS Name
			,dectotal AS DocumentTotal
		FROM tblInvIntReqDoc(NOLOCK)
		LEFT JOIN tblEmployees(NOLOCK) ON tblEmployees.strEmpNumber = tblInvIntReqDoc.strEmpNumber
		WHERE bitCleared = 0
	END
	ELSE
	BEGIN
		SELECT DISTINCT ODP.strInvIntReqDocID AS DocumentID
			,ODP.dteSystemDate AS [Date]
			,ODP.strUserName AS UserName
			,ISNULL(ODP.strEmpNumber, '') AS Number
			,ISNULL(tblEmployees.strEmpName, '') AS Name
			,ODP.decTotal AS DocumentTotal
		FROM tblInvIntReqDoc(NOLOCK) ODP
		INNER JOIN tblInvIntReqDoc_IRApprovals(NOLOCK) POA ON ODP.strInvIntReqDocID = POA.strInvIntReqDocID
		LEFT JOIN tblEmployees(NOLOCK) ON tblEmployees.strEmpNumber = ODP.strEmpNumber
		WHERE ODP.bitCleared = 0
			AND POA.strSelectedApproverUserName = @UserName
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetAllNoLinkedAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAllNoLinkedAccountsCY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.bitIsLinkedAccount = 0  
    AND tblAccounts.intGLNumber NOT IN (  
     SELECT intGLAsset  
     FROM tblAccountSets  
     )  
    AND tblAccounts.bitInactive = 0  
    AND (  
     intGroupCode = 1  
     OR intGroupCode = 2  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.bitIsLinkedAccount = 0  
    AND tblAccounts.intGLNumber NOT IN (  
     SELECT intGLAsset  
     FROM tblAccountSets  
     )  
    AND tblAccounts.bitInactive = 0  
    AND (  
     intGroupCode = 1  
     OR intGroupCode = 2  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.bitIsLinkedAccount = 0  
    AND tblAccounts.intGLNumber NOT IN (  
     SELECT intGLAsset  
     FROM tblAccountSets  
     )  
    AND tblAccounts.bitInactive = 0  
    AND (  
     intGroupCode = 1  
     OR intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.bitIsLinkedAccount = 0  
    AND tblAccounts.intGLNumber NOT IN (  
     SELECT intGLAsset  
     FROM tblAccountSets  
     )  
    AND tblAccounts.bitInactive = 0  
    AND (  
     intGroupCode = 1  
     OR intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
  
 RETURN  
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllNoLinkedAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAllNoLinkedAccountsLY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.bitIsLinkedAccount = 0  
    AND tblAccountsLY.intGLNumber NOT IN (  
     SELECT intGLAsset  
     FROM tblAccountsets  
     )  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     intGroupCode = 1  
     OR intGroupCode = 2  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.bitIsLinkedAccount = 0  
    AND tblAccountsLY.intGLNumber NOT IN (  
     SELECT intGLAsset  
     FROM tblAccountsets  
     )  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     intGroupCode = 1  
     OR intGroupCode = 2  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.bitIsLinkedAccount = 0  
    AND tblAccountsLY.intGLNumber NOT IN (  
     SELECT intGLAsset  
     FROM tblAccountsets  
     )  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     intGroupCode = 1  
     OR intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.bitIsLinkedAccount = 0  
    AND tblAccountsLY.intGLNumber NOT IN (  
     SELECT intGLAsset  
     FROM tblAccountsets  
     )  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     intGroupCode = 1  
     OR intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
  
 RETURN  
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllReminders]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAllReminders]
AS
BEGIN
	SELECT 
		tblReminders.strCustName AS CustName,
		tblCustomers.strCustDesc AS CustDesc, 
		tblReminders.intFreq AS Freq, 
		tblReminders.dteNextSend AS NextSend, 
		tblReminders.strMessage AS Message, 
		tblReminders.lngID AS ID 
	FROM tblReminders 
	INNER JOIN tblCustomers
		 ON tblReminders.strCustName = tblCustomers.strCustName
	ORDER BY tblReminders.strCustName, tblReminders.dteNextSend
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllSalesPersonsTargets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------
CREATE PROCEDURE [dbo].[GetAllSalesPersonsTargets]
AS
BEGIN
SELECT tblSalesPersons.strSalesName SalesName, 'Sales Person' SalesPersonDesc, ISNULL(tblSalesPersonsT.decPeriod1,0) Period1, ISNULL(tblSalesPersonsT.decPeriod2,0) Period2, 
ISNULL(tblSalesPersonsT.decPeriod3,0) Period3, ISNULL(tblSalesPersonsT.decPeriod4,0) Period4, ISNULL(tblSalesPersonsT.decPeriod5,0) Period5, 
ISNULL(tblSalesPersonsT.decPeriod6,0) Period6, ISNULL(tblSalesPersonsT.decPeriod7,0) Period7, ISNULL(tblSalesPersonsT.decPeriod8,0) Period8, 
ISNULL(tblSalesPersonsT.decPeriod9,0) Period9, ISNULL(tblSalesPersonsT.decPeriod10,0) Period10, ISNULL(tblSalesPersonsT.decPeriod11,0) Period11, 
ISNULL(tblSalesPersonsT.decPeriod12,0) Period12 
FROM tblSalesPersons 
LEFT OUTER JOIN tblSalesPersonsT ON tblSalesPersons.strSalesName = tblSalesPersonsT.strSalesName 
WHERE tblSalesPersons.bitInactive = 0 AND tblSalesPersons.bitIsWorkshopTechnician = 0 
ORDER BY tblSalesPersons.strSalesName

RETURN
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllSalesREBulk]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateInventoryServiceSales] ***********/

/*********** End [GetAllSalesREBulk] ***********/
CREATE PROCEDURE [dbo].[GetAllSalesREBulk] @IsBPToolsMode BIT
	,@UserName AS NVARCHAR(100)
AS
BEGIN
	SELECT tblSalesRE.strREName AS RecurringName
		,tblSalesRE.dteLastProcDate AS LastProcDate
		,tblSalesRE.strCustName AS CustomerName
		,tblSalesRE.strPaidBy AS PaidBy
		,tblCustomers.intDelMethod AS DelMethod
	FROM tblCustomers
	INNER JOIN tblSalesRE ON tblCustomers.strCustName = tblSalesRE.strCustName
	WHERE (
			@IsBPToolsMode = 1
			OR tblCustomers.strCustCategory IN (
				SELECT tblCustomerCat.strCustCategory
				FROM tblCustomerCat
				LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
				WHERE ISNULL((
							SELECT COUNT(tblCustomerCatSec.strCustCategory)
							FROM tblCustomerCatSec
							WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
							), 0) = 0
					OR (
						ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) > 0
						AND tblCustomerCatSec.strUserName = @UserName
						)
				)
			)
	ORDER BY tblSalesRE.strREName
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllTaxDef]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAllTaxDef]
AS
BEGIN
	;WITH temp AS (SELECT td.*, acc.strDesc AS purchAcc FROM tblTaxDef td Join tblAccounts acc ON td.intPurchAcct = acc.intGLNumber)
	SELECT t.strTaxName AS TaxName, t.intPurchAcct AS PurchaseAccountNo, t.purchAcc AS PurchaseAccountName, t.intSalesAcct AS SalesAccountNo, a.strDesc AS SalesAccountName FROM temp t join tblAccounts a ON t.intSalesAcct = a.intGLNumber 
END
GO
/****** Object:  StoredProcedure [dbo].[GetAlltblDimensionProfiles]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetAlltblDimensionProfiles]
AS
SELECT [tblDimensionProfiles].[strDimProCode]
	,[tblDimensionProfiles].[strDescription]
	,[tblDimensionProfiles].[bitAutoInvoke]
	,[tblDimensionProfiles].[intRoundingDecimals]
	,[tblDimensionProfiles].[bitInactive]
FROM [tblDimensionProfiles]
GO
/****** Object:  StoredProcedure [dbo].[GetAlltblDimProLines]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetAlltblDimProLines]
AS
SELECT [tblDimProLines].[intLineNo]
	,[tblDimProLines].[strDimProCode]
	,[tblDimProLines].[strLineDesc]
	,[tblDimProLines].[decDefaultValue]
	,[tblDimProLines].[bitReadOnly]
	,[tblDimProLines].[bitVisible]
	,[tblDimensionProfiles].[strDimProCode]
	,[tblDimensionProfiles].[strDescription]
	,[tblDimensionProfiles].[bitAutoInvoke]
	,[tblDimensionProfiles].[intRoundingDecimals]
	,[tblDimensionProfiles].[bitInactive]
FROM [tblDimProLines] 
LEFT OUTER JOIN [tblDimensionProfiles] ON [tblDimProLines].strDimProCode = [tblDimensionProfiles].strDimProCode
GO
/****** Object:  StoredProcedure [dbo].[GetAlltblInv]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetAlltblInv]     
(    
@strLocName VARCHAR(20)=NULL    
)    
 AS     
 BEGIN    
 SET NOCOUNT ON;    
 Select [tblInv].[strPartNumber],    
[tblInv].[strDesc],    
[tblInv].[intType],    
[tblInv].[strCategory],    
[tblInvExt].[strAcctSet],    
[tblInv].[intExpAcct],    
[tblInv].[decCostOnPO],    
[tblInv].[bitUseLPPOnPO],    
[tblInv].[intReorderQty],    
[tblInv].[strBuyUnit],    
[tblInv].[strStockUnit],    
[tblInv].[decBuyToStock],    
[tblInv].[bitAllowPriceChg],    
[tblInv].[dteDateLastSale],    
[tblInv].[dteLastPurchase],    
[tblInv].[decLastPPUnit],    
[tblInv].[dteLastUpdated],    
[tblInv].[bitUseBOM],    
[tblInv].[intBOMQty],    
[tblInv].[strAddInfo],    
[tblInv].[bitInactive],    
[tblInv].[decSumAvail]    
,CASE WHEN LTRIM(RTRIM(@strLocName))!='<<All Locations>>'     
   THEN Isnull((SELECT SUM(decAvail)      
      FROM tblInvExt     
      INNER JOIN tblInvLoc     
      ON tblInvLoc.strLocName= tblInvExt.strLocName    
      WHERE tblInvExt.strPartNumber = [tblInv].[strPartNumber]     
      AND tblInvLoc.strDesc=Ltrim(rtrim(@strLocName))),0)     
   ELSE Isnull((SELECT SUM(decAvail)      
      FROM tblInvExt     
      INNER JOIN tblInvLoc     
      ON tblInvLoc.strLocName= tblInvExt.strLocName    
      WHERE tblInvExt.strPartNumber = [tblInv].[strPartNumber]),0)     
 END decSumAvail    
 ,CASE WHEN LTRIM(RTRIM(@strLocName))!='<<All Locations>>'     
   THEN Isnull((SELECT SUM(decAlloc)      
      FROM tblInvExt     
      INNER JOIN tblInvLoc     
      ON tblInvLoc.strLocName= tblInvExt.strLocName    
      WHERE tblInvExt.strPartNumber = [tblInv].[strPartNumber]     
      AND tblInvLoc.strDesc=Ltrim(rtrim(@strLocName))),0)     
   ELSE Isnull((SELECT SUM(decAlloc)      
      FROM tblInvExt     
      INNER JOIN tblInvLoc     
      ON tblInvLoc.strLocName= tblInvExt.strLocName    
      WHERE tblInvExt.strPartNumber = [tblInv].[strPartNumber]),0)     
 END  decSumAlloc    
 ,CASE WHEN LTRIM(RTRIM(@strLocName))!='<<All Locations>>'     
   THEN Isnull((SELECT SUM(decOnHand)      
      FROM tblInvExt     
      INNER JOIN tblInvLoc     
      ON tblInvLoc.strLocName= tblInvExt.strLocName    
      WHERE tblInvExt.strPartNumber = [tblInv].[strPartNumber]     
      AND tblInvLoc.strDesc=Ltrim(rtrim(@strLocName))),0)     
   ELSE Isnull((SELECT SUM(decOnHand)      
      FROM tblInvExt     
      INNER JOIN tblInvLoc     
      ON tblInvLoc.strLocName= tblInvExt.strLocName    
      WHERE tblInvExt.strPartNumber = [tblInv].[strPartNumber]),0)     
 END  decSumOnHand    
 ,CASE WHEN LTRIM(RTRIM(@strLocName))!='<<All Locations>>'     
   THEN Isnull((SELECT SUM(decValue)      
      FROM tblInvExt     
      INNER JOIN tblInvLoc     
      ON tblInvLoc.strLocName= tblInvExt.strLocName    
      WHERE tblInvExt.strPartNumber = [tblInv].[strPartNumber]     
      AND tblInvLoc.strDesc=Ltrim(rtrim(@strLocName))),0)     
   ELSE Isnull((SELECT SUM(decValue)      
      FROM tblInvExt     
      INNER JOIN tblInvLoc     
      ON tblInvLoc.strLocName= tblInvExt.strLocName    
      WHERE tblInvExt.strPartNumber = [tblInv].[strPartNumber]),0)     
 END   decSumValue     
 ,CASE WHEN LTRIM(RTRIM(@strLocName))!='<<All Locations>>'     
   THEN Isnull((SELECT SUM(decOnOrder)      
      FROM tblInvExt     
      INNER JOIN tblInvLoc     
      ON tblInvLoc.strLocName= tblInvExt.strLocName    
      WHERE tblInvExt.strPartNumber = [tblInv].[strPartNumber]     
      AND tblInvLoc.strDesc=Ltrim(rtrim(@strLocName))),0)     
   ELSE Isnull((SELECT SUM(decOnOrder)      
      FROM tblInvExt     
      INNER JOIN tblInvLoc     
      ON tblInvLoc.strLocName= tblInvExt.strLocName    
      WHERE tblInvExt.strPartNumber = [tblInv].[strPartNumber]),0)     
 END  decSumOnOrder     
 ,CASE WHEN LTRIM(RTRIM(@strLocName))!='<<All Locations>>'     
   THEN Isnull((SELECT SUM(decOpenQty)      
      FROM tblInvExt     
      INNER JOIN tblInvLoc     
      ON tblInvLoc.strLocName= tblInvExt.strLocName    
      WHERE tblInvExt.strPartNumber = [tblInv].[strPartNumber]     
      AND tblInvLoc.strDesc=Ltrim(rtrim(@strLocName))),0)     
   ELSE Isnull((SELECT SUM(decOpenQty)      
      FROM tblInvExt     
      INNER JOIN tblInvLoc     
      ON tblInvLoc.strLocName= tblInvExt.strLocName    
      WHERE tblInvExt.strPartNumber = [tblInv].[strPartNumber]),0)     
 END decSumOpenQty    
 ,CASE WHEN LTRIM(RTRIM(@strLocName))!='<<All Locations>>'     
   THEN Isnull((SELECT SUM(decOpenValue)      
      FROM tblInvExt     
      INNER JOIN tblInvLoc     
      ON tblInvLoc.strLocName= tblInvExt.strLocName    
      WHERE tblInvExt.strPartNumber = [tblInv].[strPartNumber]     
      AND tblInvLoc.strDesc=Ltrim(rtrim(@strLocName))),0)     
   ELSE Isnull((SELECT SUM(decOpenValue)      
      FROM tblInvExt     
      INNER JOIN tblInvLoc     
      ON tblInvLoc.strLocName= tblInvExt.strLocName    
      WHERE tblInvExt.strPartNumber = [tblInv].[strPartNumber]),0)     
 END decSumOpenValue,    
 [tblInv].[decSumValYearStart],    
 [tblInv].[decSumQtyYearStart],    
 [tblInv].[decSumAmtSoldYTD],    
 [tblInv].[decSumAmtSoldLY],    
 [tblInv].[decSumQtySoldYTD],    
 [tblInv].[decSumQtySoldLY],    
 [tblInv].[decSumCOGSYTD],    
 [tblInv].[decSumCOGSLY],    
 [tblInv].[intSumNumTransYTD],    
 [tblInv].[intSumNumTransLY],    
 [tblInv].[bitAutoBuild],    
 [tblInv].[strField1],    
 [tblInv].[strField2],    
 [tblInv].[strField3],    
 [tblInv].[strField4],    
 [tblInv].[strField5],    
 [tblInv].[strField6],    
 [tblInv].[strBarCode],    
 [tblInv].[decStandardCost],    
 [tblInvExt].[strBinLoc],    
 [tblInv].[bitItemNumConvUsed],    
 [tblInv].[strSellUnit],    
 [tblInv].[strSellStockUnit],    
 [tblInv].[decSellFromStock],    
 [tblInv].[strItemSegment1],    
 [tblInv].[strItemSegment2],    
 [tblInv].[strItemSegment3],    
 [tblInv].[strItemSegment4],    
 [tblInv].[strInvNumConv],    
 [tblInv].[bitInvSerialType],    
 [tblInv].[strInvSerialType],    
 [tblInv].[decRepairCharge],    
 [tblInv].[strBarCode2],    
 [tblInv].[bitVoucherEnabled],    
 [tblInv].[strVoucherCode],    
 [tblInv].[decDefSaleQty],    
 [tblInv].[strExtendedDesc],    
 [tblInv].[bitInvExtDescOnSI],    
 [tblInv].[bitInvExtDescOnSO],    
 [tblInv].[bitInvExtDescOnSQ],    
 [tblInv].[bitInvExtDescOnSFHQ],    
 [tblInv].[bitInvExtDescOnCR],    
 [tblInv].[bitInvExtDescOnPI],    
 [tblInv].[bitInvExtDescOnPO],    
 [tblInv].[bitInvExtDescOnPQ],    
 [tblInv].[bitInvExtDescOnBRQ],    
 [tblInv].[bitWebstoreItem],    
 [tblAccountSets].[strAcctSet],    
 [tblAccountSets].[strDesc],    
 [tblAccountSets].[blnService],    
 [tblAccountSets].[blnInactive],    
 [tblAccountSets].[intGLAsset],    
 [tblAccountSets].[intGLRevenue],    
 [tblAccountSets].[intGLExpCOGS],    
 [tblAccountSets].[intGLVariance],    
 [tblInvCat].[strCategory],    
 [tblInvCat].[strDesc],    
 [tblInvCat].[bitInactive],    
 [tblInvCat].[decMinMarginPerc],    
 [tblInvCat].[bitUseMinMarginPerc],    
 [tblInvCat].[intAlertOnMinMarginPerc],    
 [tblInvNumConv].[strInvNumConv],    
 [tblInvNumConv].[strDesc],    
 [tblInvNumConv].[intType],    
 [tblInvNumConv].[bitAllowHyphens],    
 [tblInvNumConv].[bitSeg1Enabled],    
 [tblInvNumConv].[bitSeg1Checked],    
 [tblInvNumConv].[strSeg1Name],    
 [tblInvNumConv].[intSeg1Attribute],    
 [tblInvNumConv].[intSeg1Places],    
 [tblInvNumConv].[bitSeg2Enabled],    
 [tblInvNumConv].[bitSeg2Checked],    
 [tblInvNumConv].[strSeg2Name],    
 [tblInvNumConv].[intSeg2Attribute],    
 [tblInvNumConv].[intSeg2Places],    
 [tblInvNumConv].[bitSeg3Enabled],    
 [tblInvNumConv].[bitSeg3Checked],    
 [tblInvNumConv].[strSeg3Name],    
 [tblInvNumConv].[intSeg3Attribute],    
 [tblInvNumConv].[intSeg3Places],    
 [tblInvNumConv].[bitSeg4Enabled],    
 [tblInvNumConv].[bitSeg4Checked],    
 [tblInvNumConv].[strSeg4Name],    
 [tblInvNumConv].[intSeg4Attribute],    
 [tblInvNumConv].[intSeg4Places],    
 [tblInvNumConv].[bitInactive],    
 [tblInvNumConv].[bitDefault],    
 [tblInvSerialTypes].[strInvSerialType],    
 [tblInvSerialTypes].[strDesc],    
 [tblInvSerialTypes].[bitMethod],    
 [tblInvSerialTypes].[intMin],    
 [tblInvSerialTypes].[intMax],    
 [tblInvSerialTypes].[intFormat],    
 [tblInvSerialTypes].[bitPrintInv],    
 [tblInvSerialTypes].[bitInactive],    
 [tblInvSerialTypes].[intType],    
 [tblInvSerialTypes].[bitTrackExpiryDate],    
 [tblInvSerialTypes].[intExpiryDateAuthGRV],    
 [tblInvSerialTypes].[intExpiryDateAuthPI],    
 [tblInvSerialTypes].[intExpiryDateAuthDN],    
 [tblInvSerialTypes].[intExpiryDateAuthSI],    
 [tblInvSerialTypes].[intExpiryDateAuthCN],    
 [tblInvSerialTypes].[intExpiryDateAuthAD],    
 [tblInvSerialTypes].[intExpiryDateAuthAS],    
 [tblInvSerialTypes].[intExpiryDateAuthTR],    
 [tblInvSerialTypes].[bitBCBreakdown],    
 [tblInvSerialTypes].[strBCFlag],    
 [tblInvSerialTypes].[bitBC1Enabled],    
 [tblInvSerialTypes].[strBC1Type],    
 [tblInvSerialTypes].[intBC1StartPos],    
 [tblInvSerialTypes].[intBC1EndPos],    
 [tblInvSerialTypes].[bitBC2Enabled],    
 [tblInvSerialTypes].[strBC2Type],    
 [tblInvSerialTypes].[intBC2StartPos],    
 [tblInvSerialTypes].[intBC2EndPos],    
 [tblInvSerialTypes].[bitBC3Enabled],    
 [tblInvSerialTypes].[strBC3Type],    
 [tblInvSerialTypes].[intBC3StartPos],    
 [tblInvSerialTypes].[intBC3EndPos],    
 [tblInvSerialTypes].[bitBC4Enabled],    
 [tblInvSerialTypes].[strBC4Type],    
 [tblInvSerialTypes].[intBC4StartPos],    
 [tblInvSerialTypes].[intBC4EndPos],    
 [tblInvSerialTypes].[bitBC5Enabled],    
 [tblInvSerialTypes].[strBC5Type],    
 [tblInvSerialTypes].[intBC5StartPos],    
 [tblInvSerialTypes].[intBC5EndPos],    
 [tblVoucherCodes].[strVoucherCode],    
 [tblVoucherCodes].[strDescription],    
 [tblVoucherCodes].[strWindow],    
 [tblVoucherCodes].[strValue],    
 [tblVoucherCodes].[decRetailValue],    
 [tblVoucherCodes].[strVendorName],    
 [tblinv].[intDecimalQuantity],    
 CASE WHEN LTRIM(RTRIM(@strLocName))!='<<All Locations>>'     
   THEN Isnull((SELECT SUM(decManuf)      
      FROM tblInvExt     
      INNER JOIN tblInvLoc     
      ON tblInvLoc.strLocName= tblInvExt.strLocName    
      WHERE tblInvExt.strPartNumber = [tblInv].[strPartNumber]     
      AND tblInvLoc.strDesc=Ltrim(rtrim(@strLocName))),0)     
   ELSE Isnull((SELECT SUM(decManuf)      
      FROM tblInvExt     
      INNER JOIN tblInvLoc     
      ON tblInvLoc.strLocName= tblInvExt.strLocName    
      WHERE tblInvExt.strPartNumber = [tblInv].[strPartNumber]),0)     
 END  decSumManuf,  
 decMovingAvgCost = CASE decOnHand WHEN 0 THEN 0 ELSE (decSumValue/decOnHand) END
from [tblInv]       
LEFT OUTER JOIN [tblInvExt]     
ON [tblInv].strPartNumber = [tblInvExt].strPartNumber     
LEFT OUTER JOIN [tblAccountSets]     
ON [tblInvExt].strAcctSet = [tblAccountSets].strAcctSet     
LEFT OUTER JOIN [tblInvCat]     
ON [tblInv].strCategory = [tblInvCat].strCategory     
LEFT OUTER JOIN [tblInvNumConv]     
ON [tblInv].strInvNumConv = [tblInvNumConv].strInvNumConv     
LEFT OUTER JOIN [tblInvSerialTypes]     
ON [tblInv].strInvSerialType = [tblInvSerialTypes].strInvSerialType     
LEFT OUTER JOIN [tblVoucherCodes]     
ON [tblInv].strVoucherCode = [tblVoucherCodes].strVoucherCode    
End
GO
/****** Object:  StoredProcedure [dbo].[GetAlltblInvCat]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[GetAlltblInvCat] 
 As Select [tblInvCat].[strCategory],
[tblInvCat].[strDesc],
[tblInvCat].[bitInactive],
[tblInvCat].[decMinMarginPerc],
[tblInvCat].[bitUseMinMarginPerc],
[tblInvCat].[intAlertOnMinMarginPerc] from [tblInvCat]
GO
/****** Object:  StoredProcedure [dbo].[GetAlltblInvCust]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAlltblInvCust] 
AS
Select [tblInvCustomer].[strPartNumber],
[tblInvCustomer].[strCustName],
[tblInvCustomer].[lngID],
[tblInvCustomer].[strItemCode],
[tblInvCustomer].[strItemDesc],
[tblInv].[strPartNumber],
[tblInv].[strDesc],
[tblInv].[intType],
[tblInv].[strCategory],
'' AS [strAcctSet],
[tblInv].[intExpAcct],
[tblInv].[decCostOnPO],
[tblInv].[bitUseLPPOnPO],
[tblInv].[intReorderQty],
[tblInv].[strBuyUnit],
[tblInv].[strStockUnit],
[tblInv].[decBuyToStock],
[tblInv].[bitAllowPriceChg],
[tblInv].[dteDateLastSale],
[tblInv].[dteLastPurchase],
[tblInv].[decLastPPUnit],
[tblInv].[dteLastUpdated],
[tblInv].[bitUseBOM],
[tblInv].[intBOMQty],
[tblInv].[strAddInfo],
[tblInv].[bitInactive],
[tblInv].[decSumAvail],
[tblInv].[decSumAlloc],
[tblInv].[decSumOnHand],
[tblInv].[decSumValue],
[tblInv].[decSumOnOrder],
[tblInv].[decSumOpenQty],
[tblInv].[decSumOpenValue],
[tblInv].[decSumValYearStart],
[tblInv].[decSumQtyYearStart],
[tblInv].[decSumAmtSoldYTD],
[tblInv].[decSumAmtSoldLY],
[tblInv].[decSumQtySoldYTD],
[tblInv].[decSumQtySoldLY],
[tblInv].[decSumCOGSYTD],
[tblInv].[decSumCOGSLY],
[tblInv].[intSumNumTransYTD],
[tblInv].[intSumNumTransLY],
[tblInv].[bitAutoBuild],
[tblInv].[strField1],
[tblInv].[strField2],
[tblInv].[strField3],
[tblInv].[strField4],
[tblInv].[strField5],
[tblInv].[strField6],
[tblInv].[strBarCode],
[tblInv].[decStandardCost],
'' AS [strBinLoc],
[tblInv].[bitItemNumConvUsed],
[tblInv].[strSellUnit],
[tblInv].[strSellStockUnit],
[tblInv].[decSellFromStock],
[tblInv].[strItemSegment1],
[tblInv].[strItemSegment2],
[tblInv].[strItemSegment3],
[tblInv].[strItemSegment4],
[tblInv].[strInvNumConv],
[tblInv].[bitInvSerialType],
[tblInv].[strInvSerialType],
[tblInv].[decRepairCharge],
[tblInv].[strBarCode2],
[tblInv].[bitVoucherEnabled],
[tblInv].[strVoucherCode],
[tblInv].[decDefSaleQty],
[tblInv].[strExtendedDesc],
[tblInv].[bitInvExtDescOnSI],
[tblInv].[bitInvExtDescOnSO],
[tblInv].[bitInvExtDescOnSQ],
[tblInv].[bitInvExtDescOnSFHQ],
[tblInv].[bitInvExtDescOnCR],
[tblInv].[bitInvExtDescOnPI],
[tblInv].[bitInvExtDescOnPO],
[tblInv].[bitInvExtDescOnPQ],
[tblInv].[bitInvExtDescOnBRQ],
[tblInv].[bitWebstoreItem],
[tblCustomers].[strCustName],
[tblCustomers].[strStreet1],
[tblCustomers].[strStreet2],
[tblCustomers].[strCity],
[tblCustomers].[strProvince],
[tblCustomers].[strPostal],
[tblCustomers].[strPhone],
[tblCustomers].[strCellPhone],
[tblCustomers].[strFax],
[tblCustomers].[strEmail],
[tblCustomers].[strVAT],
[tblCustomers].[strCK],
[tblCustomers].[decBalDue],
[tblCustomers].[decYTDPurch],
[tblCustomers].[decOpenOrders],
[tblCustomers].[intDelMethod],
[tblCustomers].[bitInactive],
[tblCustomers].[dteUpdated],
[tblCustomers].[strContact],
[tblCustomers].[strField1],
[tblCustomers].[strField2],
[tblCustomers].[strField3],
[tblCustomers].[strField4],
[tblCustomers].[strField5],
[tblCustomers].[strField6],
[tblCustomers].[strTaxCode],
[tblCustomers].[dteSince],
[tblCustomers].[strNotes],
[tblCustomers].[uID],
[tblCustomers].[strCustDesc],
[tblCustomers].[strCountry],
[tblCustomers].[strTerm],
[tblCustomers].[intDept],
[tblCustomers].[strCurrency],
[tblCustomers].[decBalDueF],
[tblCustomers].[decYTDPurchF],
[tblCustomers].[decOpenOrdersF],
[tblCustomers].[strField7],
[tblCustomers].[strField8],
[tblCustomers].[strField9],
[tblCustomers].[strField10],
[tblCustomers].[strField11],
[tblCustomers].[strField12],
[tblCustomers].[strCustCategory],
[tblCustomers].[strCountryCode],
[tblCustomers].[strTenderType],
[tblCustomers].[decTradeDiscPerc],
[tblCustomers].[bitWithholdTax],
[tblCustomers].[strWithholdTaxCode], 
[tblInv].[decSumManuf]
from [tblInvCustomer]   left outer join
[tblInv] ON [tblInvCustomer].strPartNumber = [tblInv].strPartNumber left outer join
[tblCustomers] ON [tblInvCustomer].strCustName = [tblCustomers].strCustName

GO
/****** Object:  StoredProcedure [dbo].[GetAlltblInvVend]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[GetAlltblInvVend]   
 As Select DISTINCT [tblInvVend].[strPartNumber],  
 [tblInvVend].[strVendName],  
-- [tblInvVend].[lngID],  
 [tblInvVend].[strItemCode],  
 [tblInvVend].[strItemDesc],  
 [tblInvVend].[intWarrantyDays],  
 [tblInvVend].[decPrice],  
-- [tblInvVend].[bitPreferred],  
 [tblInvVend].[decDiscPerc],  
 [tblInvVend].[decLocalPrice],  
 [tblInvVend].[decLandedCostFactor],  
 [tblInv].[strPartNumber],  
 [tblInv].[strDesc],  
 [tblInv].[intType],  
 [tblInv].[strCategory],  
 '' AS [strAcctSet],  
 [tblInv].[intExpAcct],  
 [tblInv].[decCostOnPO],  
 [tblInv].[bitUseLPPOnPO],  
 [tblInv].[intReorderQty],  
 ISNULL(tblInvVend.strUnit,[tblInv].[strBuyUnit]) strBuyUnit, 
 [tblInv].[strStockUnit],  
 ISNULL(CASE strConversionType WHEN 'Multiply' THEN decConversionFactor ELSE 1/decConversionFactor END,tblInv.decBuyToStock) AS decBuyToStock,   
 [tblInv].[bitAllowPriceChg],  
 [tblInv].[dteDateLastSale],  
 [tblInv].[dteLastPurchase],  
 [tblInv].[decLastPPUnit],  
 [tblInv].[dteLastUpdated],  
 [tblInv].[bitUseBOM],  
 [tblInv].[intBOMQty],  
 [tblInv].[strAddInfo],  
 [tblInv].[bitInactive],  
 [tblInv].[decSumAvail],  
 [tblInv].[decSumAlloc],  
 [tblInv].[decSumOnHand],  
 [tblInv].[decSumValue],  
 [tblInv].[decSumOnOrder],  
 [tblInv].[decSumOpenQty],  
 [tblInv].[decSumOpenValue],  
 [tblInv].[decSumValYearStart],  
 [tblInv].[decSumQtyYearStart],  
 [tblInv].[decSumAmtSoldYTD],  
 [tblInv].[decSumAmtSoldLY],  
 [tblInv].[decSumQtySoldYTD],  
 [tblInv].[decSumQtySoldLY],  
 [tblInv].[decSumCOGSYTD],  
 [tblInv].[decSumCOGSLY],  
 [tblInv].[intSumNumTransYTD],  
 [tblInv].[intSumNumTransLY],  
 [tblInv].[bitAutoBuild],  
 [tblInv].[strField1],  
 [tblInv].[strField2],  
 [tblInv].[strField3],  
 [tblInv].[strField4],  
 [tblInv].[strField5],  
 [tblInv].[strField6],  
 [tblInv].[strBarCode],  
 [tblInv].[decStandardCost],  
 '' AS [strBinLoc],  
 [tblInv].[bitItemNumConvUsed],  
 [tblInv].[strSellUnit],  
 [tblInv].[strSellStockUnit],  
 [tblInv].[decSellFromStock],  
 [tblInv].[strItemSegment1],  
 [tblInv].[strItemSegment2],  
 [tblInv].[strItemSegment3],  
 [tblInv].[strItemSegment4],  
 [tblInv].[strInvNumConv],  
 [tblInv].[bitInvSerialType],  
 [tblInv].[strInvSerialType],  
 [tblInv].[decRepairCharge],  
 [tblInv].[strBarCode2],  
 [tblInv].[bitVoucherEnabled],  
 [tblInv].[strVoucherCode],  
 [tblInv].[decDefSaleQty],  
 [tblInv].[strExtendedDesc],  
 [tblInv].[bitInvExtDescOnSI],  
 [tblInv].[bitInvExtDescOnSO],  
 [tblInv].[bitInvExtDescOnSQ],  
 [tblInv].[bitInvExtDescOnSFHQ],  
 [tblInv].[bitInvExtDescOnCR],  
 [tblInv].[bitInvExtDescOnPI],  
 [tblInv].[bitInvExtDescOnPO],  
 [tblInv].[bitInvExtDescOnPQ],  
 [tblInv].[bitInvExtDescOnBRQ],  
 [tblInv].[bitWebstoreItem],  
 [tblVendors].[strVendName],  
 [tblVendors].[strStreet1],  
 [tblVendors].[strStreet2],  
 [tblVendors].[strCity],  
 [tblVendors].[strProvince],  
 [tblVendors].[strPostal],  
 [tblVendors].[strPhone],  
 [tblVendors].[strCellPhone],  
 [tblVendors].[strFax],  
 [tblVendors].[strEmail],  
 [tblVendors].[strVAT],  
 [tblVendors].[strCK],  
 [tblVendors].[decBalDue],  
 [tblVendors].[decYTDPurch],  
 [tblVendors].[decOpenOrders],  
 [tblVendors].[intDelMethod],  
 [tblVendors].[bitInventoryVendor],  
 [tblVendors].[bitExpenseVendor],  
 [tblVendors].[intExpAcct],  
 [tblVendors].[bitInactive],  
 [tblVendors].[dteLastUpdated],  
 [tblVendors].[strContact],  
 [tblVendors].[strField1],  
 [tblVendors].[strField2],  
 [tblVendors].[strField3],  
 [tblVendors].[strField4],  
 [tblVendors].[strField5],  
 [tblVendors].[strField6],  
 [tblVendors].[strTaxCode],  
 [tblVendors].[dteSince],  
 [tblVendors].[strNotes],  
 [tblVendors].[uID],  
 [tblVendors].[strVendDesc],  
 [tblVendors].[strCountry],  
 [tblVendors].[strTerm],  
 [tblVendors].[intDept],  
 [tblVendors].[strCurrency],  
 [tblVendors].[decBalDueF],  
 [tblVendors].[decYTDPurchF],  
 [tblVendors].[decOpenOrdersF],  
 [tblVendors].[strField7],  
 [tblVendors].[strField8],  
 [tblVendors].[strField9],  
 [tblVendors].[strField10],  
 [tblVendors].[strField11],  
 [tblVendors].[strField12],  
 [tblVendors].[strVendCategory],  
 [tblVendors].[strCountryCode],  
 [tblVendors].[strTenderType],  
 [tblVendors].[decTradeDiscPerc],  
 [tblVendors].[bitWithholdTax],  
 [tblVendors].[strWithholdTaxCode],  
 [tblInv].[decSumManuf]  
from [tblInvVend]  
Left JOIN tblInvUOMs ON tblInvVend.strPartNumber = tblInvUOMs.strPartNumber AND tblInvVend.strUnit = tblInvUOMs.strFromUnit  
left outer join [tblInv] ON [tblInvVend].strPartNumber = [tblInv].strPartNumber   
left outer join [tblVendors] ON [tblInvVend].strVendName = [tblVendors].strVendName  
GO
/****** Object:  StoredProcedure [dbo].[GetAllTermsforPicker]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*****************Start [GetAllTermsforPicker]*****************************/

CREATE Procedure [dbo].[GetAllTermsforPicker]
as
BEGIN
	SELECT strTerm as Term, 
	(CASE intAllowedIn WHEN 0 THEN 'Receivables' WHEN 1 THEN 'Payables' ELSE 'Receivables / Payables' END) as AllowedIn FROM tblTerms 
	ORDER BY strTerm
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllVendors]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[GetAllVendors]
AS
BEGIN
	SELECT strVendName	 As VendorEmpName
		,('' + strvendname + ' | ' + strvenddesc) AS VendDesc
	FROM tblVendors(NOLOCK)
	WHERE bitinactive = 0
		AND strVendname NOT IN (
			SELECT strVendorEmpName
			FROM tblApproversVendEmpLimits
			WHERE intApproverType = 0
			)
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllVendorsView]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetAllVendorsView]
AS
BEGIN
	SELECT vmon.strVendorEmpName AS VendorEmpName
		,vmon.strVendDesc AS VendDesc
		,vmon.MonthlyDeptLimitIncl AS MonthlyDeptLimitIncl
		,c.strCurrSymbol + ' ' + convert(VARCHAR, convert(MONEY, vmon.MonthlyDeptLimitIncl), 1) AS MonthlyDeptLimitInclString
	FROM vw_PO_Vendor_Monthly VMON
	INNER JOIN tblVendors(NOLOCK) V ON VMON.strVendorEmpName = V.strVendName
	INNER JOIN tblCurrency(NOLOCK) C ON v.strCurrency = c.strCurrency
END
GO
/****** Object:  StoredProcedure [dbo].[GetAllVouchers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[UpdateForecastingInformation] ***********/

/*********** Start [dbo].[GetAllVouchers] ***********/
CREATE PROCEDURE [dbo].[GetAllVouchers]
    (
      @tblForecastingInfo CommonTableType READONLY		
    )
AS
    BEGIN
        SELECT  strVoucherCode AS VoucherCode ,
                strDescription AS VoucherDescription
        FROM    tblVoucherCodes
        WHERE   strVoucherCode NOT IN ( SELECT  strVoucherCode
                                        FROM    tblInv
                                        WHERE   bitVoucherEnabled = 1 )
        ORDER BY strVoucherCode
    END

GO
/****** Object:  StoredProcedure [dbo].[GetAmountForHPContract]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetAgeAnalysisData] ***********/

/*********** Start [GetAmountForHPContract] ***********/
CREATE PROCEDURE [dbo].[GetAmountForHPContract] (
	@CustomerNumber NVARCHAR(50)
	,@InvDocID NVARCHAR(50)
	,@PeriodEndDate DATETIME
	)
AS
BEGIN
	DECLARE @CustomerTransactionId AS NVARCHAR(50)

	SELECT @CustomerTransactionId = lngCustTrID
	FROM tblcusttrans
	WHERE strCustName = @CustomerNumber
		AND strInvDocID = @InvDocID

	DECLARE @Payments1 AS DECIMAL

	SET @Payments1 = (
			SELECT Sum(CASE 
						WHEN decAmount IS NULL
							THEN 0
						ELSE CASE 
								WHEN decAmount < 0
									THEN - decAmount
								ELSE 0
								END
						END) AS Payments
			FROM tblcusttransDT
			WHERE lngCustTrID IN (
					SELECT lngCustTrID
					FROM tblcusttrans
					WHERE strCustName = @CustomerNumber
						AND lngCustTrID = @CustomerTransactionId
						AND dteJournalDate <= @PeriodEndDate
					)
			)

	SELECT SUM(t2.decAmount) AS PenaltyArrears
		,@Payments1 AS Payments
	FROM tblcusttrans t1
	INNER JOIN tblcusttransdt t2 ON t1.lngCustTrID = t2.lngCustTrID
	WHERE t1.bitSettled = 0
		AND t1.strInvDepNumber LIKE ('%OVERDUE INTEREST (%')
		AND t1.strCustName = @CustomerNumber
		AND t2.dteJournalDate <= @PeriodEndDate
	GROUP BY t1.lngCustTrID
END
GO
/****** Object:  StoredProcedure [dbo].[GetAssetAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetAssetAccountsCY](  
@bitGLAccountAccess bit,  
@bitShowAllCurrency bit,  
@strUserName nvarchar(40),  
@strCurrency nvarchar(6),  
@strHomeCurrency nvarchar(6)  
)  
AS  
BEGIN  
if @bitShowAllCurrency = 1  
BEGIN  
 if @bitGLAccountAccess = 1  
 BEGIN  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
  ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName   
  FROM tblAccounts (NOLOCK)    
  LEFT OUTER JOIN tblInv (NOLOCK)  ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.intAccType = 1   
  AND tblAccounts.bitInactive = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)  
  ORDER BY intAccType, intGLNumber  
 END  
 ELSE  
 BEGIN  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass, ISNULL(tblInv.strPartNumber, '') JournalCode,   
  ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK)  WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0) AccountSecCount,   
  ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccounts  (NOLOCK)   
  LEFT JOIN tblAccountsSec (NOLOCK)  ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK)  ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.intAccType = 1   
  AND tblAccounts.bitInactive = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)  
  ORDER BY intAccType, tblAccounts.intGLNumber  
 END  
END  
ELSE  
BEGIN  
 if @bitGLAccountAccess = 1  
 BEGIN  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
  ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName   
  FROM tblAccounts (NOLOCK)    
  LEFT OUTER JOIN tblInv (NOLOCK)  ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.intAccType = 1   
  AND tblAccounts.bitInactive = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  ORDER BY intAccType, intGLNumber  
 END  
 ELSE  
 BEGIN  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass, ISNULL(tblInv.strPartNumber, '') JournalCode,   
  ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK)  WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0) AccountSecCount,   
  ISNULL(tblAccountsSec.strUserName,'') UserName   
  FROM tblAccounts  (NOLOCK)   
  LEFT JOIN tblAccountsSec (NOLOCK)  ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK)  ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.intAccType = 1   
  AND tblAccounts.bitInactive = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  ORDER BY intAccType, tblAccounts.intGLNumber  
 END  
END  
  
RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetAssetAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------------
CREATE PROCEDURE [dbo].[GetAssetAccountsLY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 1  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 1  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 1  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 1  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
  
 RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetAssetFile]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetAssetFile]
    (
      @strAssetCode NVARCHAR(20) ,
      @strFileName NVARCHAR(400)
    )
AS
BEGIN
    SET NOCOUNT ON;
    SELECT  [strAssetCode] AS AssetCode ,
            [strFileName] AS FileName ,
            [dteModified] AS Modified ,
            [strType] AS Type ,
            [intSize] AS Size ,
            [strUserName] AS UserName ,
            [bitEnc] AS Enc ,
            [imgFile] AS Files
    FROM    [tblAssetF]
    WHERE   [strAssetCode] = @strAssetCode
            AND [strFileName] = @strFileName;
END
GO
/****** Object:  StoredProcedure [dbo].[GetAssetFiles]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetAssetFiles]
    (
      @strAssetCode NVARCHAR(20) = NULL ,
      @strFileName NVARCHAR(400) = NULL ,
      @dteModified DATETIME = NULL ,
      @strType NVARCHAR(500) = NULL ,
      @intSize BIGINT = NULL ,
      @strUserName NVARCHAR(20) = NULL ,
      @bitEnc BIT = NULL
    )
AS
BEGIN
    SET NOCOUNT ON;
    SELECT  [strAssetCode] AS AssetCode ,
            [strFileName] AS FileName ,
            [dteModified] AS Modified ,
            [strType] AS Type ,
            [intSize] AS Size ,
            [strUserName] AS UserName ,
            [bitEnc] AS Enc ,
            [imgFile] AS Files
    FROM    [tblAssetF]
    WHERE   ( ( [strAssetCode] = @strAssetCode )
              OR ( @strAssetCode IS NULL )
            )
            AND ( ( [strFileName] = @strFileName )
                  OR ( @strFileName IS NULL )
                )
            AND ( ( [dteModified] = @dteModified )
                  OR ( @dteModified IS NULL )
                )
            AND ( ( [strType] = @strType )
                  OR ( @strType IS NULL )
                )
            AND ( ( [intSize] = @intSize )
                  OR ( @intSize IS NULL )
                )
            AND ( ( [strUserName] = @strUserName )
                  OR ( @strUserName IS NULL )
                )
            AND ( ( [bitEnc] = @bitEnc )
                  OR ( @bitEnc IS NULL )
                );
END
GO
/****** Object:  StoredProcedure [dbo].[GetAssetImages]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetAssetImages]
    (
      @strAssetCode varchar(100)
    )
AS
    BEGIN
        SELECT  *
        FROM    tblAssetImg
        WHERE   strAssetCode = @strAssetCode
        ORDER BY bitDefaultImage DESC
    END;
GO
/****** Object:  StoredProcedure [dbo].[GetAssetLiabilityNoBankAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetAssetLiabilityNoBankAccountsCY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.bitInventory = 0  
    AND (  
     tblAccounts.intAccType = 1  
     OR tblAccounts.intAccType = 2  
     )  
    AND (tblAccounts.bitInactive = 0)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (tblAccounts.intAccClass <> 2)  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.bitInventory = 0  
    AND (  
     tblAccounts.intAccType = 1  
     OR tblAccounts.intAccType = 2  
     )  
    AND (tblAccounts.bitInactive = 0)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (tblAccounts.intAccClass <> 2)  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.bitInventory = 0  
    AND (  
     tblAccounts.intAccType = 1  
     OR tblAccounts.intAccType = 2  
     )  
    AND (tblAccounts.bitInactive = 0)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (tblAccounts.intAccClass <> 2)  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.bitInventory = 0  
    AND (  
     tblAccounts.intAccType = 1  
     OR tblAccounts.intAccType = 2  
     )  
    AND (tblAccounts.bitInactive = 0)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (tblAccounts.intAccClass <> 2)  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
  
 RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetAssetLiabilityNoBankAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetAssetLiabilityNoBankAccountsLY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.bitInventory = 0  
    AND (  
     tblAccountsLY.intAccType = 1  
     OR tblAccountsLY.intAccType = 2  
     )  
    AND (tblAccountsLY.bitInactive = 0)  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (tblAccountsLY.intAccClass <> 2)  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.bitInventory = 0  
    AND (  
     tblAccountsLY.intAccType = 1  
     OR tblAccountsLY.intAccType = 2  
     )  
    AND (tblAccountsLY.bitInactive = 0)  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (tblAccountsLY.intAccClass <> 2)  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.bitInventory = 0  
    AND (  
     tblAccountsLY.intAccType = 1  
     OR tblAccountsLY.intAccType = 2  
     )  
    AND (tblAccountsLY.bitInactive = 0)  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (tblAccountsLY.intAccClass <> 2)  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.bitInventory = 0  
    AND (  
     tblAccountsLY.intAccType = 1  
     OR tblAccountsLY.intAccType = 2  
     )  
    AND (tblAccountsLY.bitInactive = 0)  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (tblAccountsLY.intAccClass <> 2)  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
  
 RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetAssetLocationBuildings]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetAssetLocationBuildings]
AS
BEGIN
    SET NOCOUNT ON;
    SET NOCOUNT ON;
    SELECT  [lngID] AS ID ,
            [strBuildingName] AS BuildingName ,
            [strFloor] AS Floor ,
            [strRoom] AS Room
    FROM    [tblAssetLocationBuilding]
	END
GO
/****** Object:  StoredProcedure [dbo].[GetAssetLocations]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetAssetLocations]
    (
      @lngID bigint = NULL ,
      @strAssetCode nvarchar(20) = NULL ,
      @dteTransferDate datetime = NULL ,
      @strBuilding nvarchar(100) = NULL ,
      @strFloor nvarchar(50) = NULL ,
      @strRoom nvarchar(50) = NULL ,
      @intDept int = NULL ,
      @strCustodian nvarchar(100) = NULL ,
      @strContactNo nvarchar(50) = NULL ,
      @strEmail nvarchar(100) = NULL ,
      @lngBuildingID bigint = NULL
    )
AS
BEGIN
    SET NOCOUNT ON
    SELECT  [lngID] AS ID ,
            [strAssetCode] AS AssetCode ,
            [dteTransferDate] AS TransferDate ,
            [strBuilding] AS Building ,
            [strFloor] AS Floors ,
            [strRoom] AS Room ,
            [intDept] AS Dept ,
            [strCustodian] AS Custodian ,
            [strContactNo] AS ContactNo ,
            [strEmail] AS Email ,
            [lngBuildingID] AS BuildingID
    FROM    [tblAssetLocation]
    WHERE   ( ( [lngID] = @lngID )
              OR ( @lngID IS NULL )
            )
            AND ( ( [strAssetCode] = @strAssetCode )
                  OR ( @strAssetCode IS NULL )
                )
            AND ( ( [dteTransferDate] = @dteTransferDate )
                  OR ( @dteTransferDate IS NULL )
                )
            AND ( ( [strBuilding] = @strBuilding )
                  OR ( @strBuilding IS NULL )
                )
            AND ( ( [strFloor] = @strFloor )
                  OR ( @strFloor IS NULL )
                )
            AND ( ( [strRoom] = @strRoom )
                  OR ( @strRoom IS NULL )
                )
            AND ( ( [intDept] = @intDept )
                  OR ( @intDept IS NULL )
                )
            AND ( ( [strCustodian] = @strCustodian )
                  OR ( @strCustodian IS NULL )
                )
            AND ( ( [strContactNo] = @strContactNo )
                  OR ( @strContactNo IS NULL )
                )
            AND ( ( [strEmail] = @strEmail )
                  OR ( @strEmail IS NULL )
                )
            AND ( ( [lngBuildingID] = @lngBuildingID )
                  OR ( @lngBuildingID IS NULL )
                );
				END
GO
/****** Object:  StoredProcedure [dbo].[GetAssetRepairData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetAssetRepairData]
    (
      @lngID BIGINT = NULL ,
      @strAssetCode NVARCHAR(20) = NULL ,
      @dteRepairDate DATE = NULL ,
      @strCostCode NVARCHAR(20) = NULL ,
      @strVendNumber NVARCHAR(50) = NULL ,
      @strInvPDocID NVARCHAR(50) = NULL ,
      @decCost MONEY = NULL ,
      @strAddInfo NVARCHAR(200) = NULL ,
      @strPartNumber NVARCHAR(50) = NULL
    )
AS
BEGIN
    SET NOCOUNT ON;
    SELECT  [lngID] AS ID ,
            [strAssetCode] AS AssetCode ,
            [dteRepairDate] AS RepairDate ,
            [strCostCode] AS CostCode ,
            [strVendNumber] AS VendNumber ,
            [strInvPDocID] AS InvPDocID ,
            [decCost] AS Cost ,
            [strAddInfo] AS AddInfo ,
            [strPartNumber] AS PartNumber
    FROM    [tblAssetRepairs] AS AssetRepairs
    WHERE   ( ( [lngID] = @lngID )
              OR ( @lngID IS NULL )
            )
            AND ( ( [strAssetCode] = @strAssetCode )
                  OR ( @strAssetCode IS NULL )
                )
            AND ( ( [dteRepairDate] = @dteRepairDate )
                  OR ( @dteRepairDate IS NULL )
                )
            AND ( ( [strCostCode] = @strCostCode )
                  OR ( @strCostCode IS NULL )
                )
            AND ( ( [strVendNumber] = @strVendNumber )
                  OR ( @strVendNumber IS NULL )
                )
            AND ( ( [strInvPDocID] = @strInvPDocID )
                  OR ( @strInvPDocID IS NULL )
                )
            AND ( ( [decCost] = @decCost )
                  OR ( @decCost IS NULL )
                )
            AND ( ( [strAddInfo] = @strAddInfo )
                  OR ( @strAddInfo IS NULL )
                )
            AND ( ( [strPartNumber] = @strPartNumber )
                  OR ( @strPartNumber IS NULL )
                );
				END
GO
/****** Object:  StoredProcedure [dbo].[GetAssetTypes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetAssetTypes]
    (
      @strCode nvarchar(20) = NULL ,
      @strDescription nvarchar(100) = NULL ,
      @intDepAccNo nvarchar(30) = NULL ,
      @intExpAccNo nvarchar(30) = NULL ,
      @intAssetAccNo nvarchar(30) = NULL ,
      @intRepairAccNo nvarchar(30) = NULL ,
      @strProfitLossOnSaleAccNo nvarchar(30) = NULL ,
      @strDepreciationCode1 nvarchar(20) = NULL ,
      @blnUpdateGLCode1 bit = NULL ,
      @strDepreciationCode2 nvarchar(20) = NULL ,
      @blnUpdateGLCode2 bit = NULL ,
      @strDepreciationCode3 nvarchar(20) = NULL ,
      @blnUpdateGLCode3 bit = NULL ,
      @strDepreciationCode4 nvarchar(20) = NULL ,
      @blnUpdateGLCode4 bit = NULL ,
      @strDepreciationCode5 nvarchar(20) = NULL ,
      @blnUpdateGLCode5 bit = NULL ,
      @bitInactive bit = NULL ,
      @blnNBVDisplay1 bit = NULL ,
      @blnNBVDisplay2 bit = NULL ,
      @blnNBVDisplay3 bit = NULL ,
      @blnNBVDisplay4 bit = NULL ,
      @blnNBVDisplay5 bit = NULL
    )
AS
BEGIN
    SET NOCOUNT ON
    SELECT  [strCode] AS Code ,
            [strDescription] AS [Description] ,
            [intDepAccNo] AS DepAccNo ,
            [intExpAccNo] AS ExpAccNo ,
            [intAssetAccNo] AS AssetAccNo ,
            [intRepairAccNo] AS RepairAccNo ,
            [strProfitLossOnSaleAccNo] AS ProfitLossOnSaleAccNo ,
            [strDepreciationCode1] AS DepreciationCode1 ,
            [blnUpdateGLCode1] AS UpdateGLCode1 ,
            [strDepreciationCode2] AS DepreciationCode2 ,
            [blnUpdateGLCode2] AS UpdateGLCode2 ,
            [strDepreciationCode3] AS DepreciationCode3 ,
            [blnUpdateGLCode3] AS UpdateGLCode3 ,
            [strDepreciationCode4] AS DepreciationCode4 ,
            [blnUpdateGLCode4] AS UpdateGLCode4 ,
            [strDepreciationCode5] AS DepreciationCode5 ,
            [blnUpdateGLCode5] AS UpdateGLCode5 ,
            [bitInactive] AS Inactive ,
            [blnNBVDisplay1] AS NBVDisplay1 ,
            [blnNBVDisplay2] AS NBVDisplay2 ,
            [blnNBVDisplay3] AS NBVDisplay3 ,
            [blnNBVDisplay4] AS NBVDisplay4 ,
            [blnNBVDisplay5] AS NBVDisplay5 ,
            ( SELECT TOP 1
                        ISNULL(tblAccounts.[strDesc], '')
              FROM      tblAccounts
              WHERE     intGLNumber = [intDepAccNo]
            ) AS DepreciationAccount ,
            ( SELECT TOP 1
                        ISNULL(tblAccounts.[strDesc], '')
              FROM      tblAccounts
              WHERE     intGLNumber = [intExpAccNo]
            ) AS ExpenseAccount
    FROM    [tblAssetTypes]
    WHERE   ( ( [strCode] = @strCode )
              OR ( @strCode IS NULL )
            )
            AND ( ( [strDescription] = @strDescription )
                  OR ( @strDescription IS NULL )
                )
            AND ( ( [intDepAccNo] = @intDepAccNo )
                  OR ( @intDepAccNo IS NULL )
                )
            AND ( ( [intExpAccNo] = @intExpAccNo )
                  OR ( @intExpAccNo IS NULL )
                )
            AND ( ( [intAssetAccNo] = @intAssetAccNo )
                  OR ( @intAssetAccNo IS NULL )
                )
            AND ( ( [intRepairAccNo] = @intRepairAccNo )
                  OR ( @intRepairAccNo IS NULL )
                )
            AND ( ( [strProfitLossOnSaleAccNo] = @strProfitLossOnSaleAccNo )
                  OR ( @strProfitLossOnSaleAccNo IS NULL )
                )
            AND ( ( [strDepreciationCode1] = @strDepreciationCode1 )
                  OR ( @strDepreciationCode1 IS NULL )
                )
            AND ( ( [blnUpdateGLCode1] = @blnUpdateGLCode1 )
                  OR ( @blnUpdateGLCode1 IS NULL )
                )
            AND ( ( [strDepreciationCode2] = @strDepreciationCode2 )
                  OR ( @strDepreciationCode2 IS NULL )
                )
            AND ( ( [blnUpdateGLCode2] = @blnUpdateGLCode2 )
                  OR ( @blnUpdateGLCode2 IS NULL )
                )
            AND ( ( [strDepreciationCode3] = @strDepreciationCode3 )
                  OR ( @strDepreciationCode3 IS NULL )
                )
            AND ( ( [blnUpdateGLCode3] = @blnUpdateGLCode3 )
                  OR ( @blnUpdateGLCode3 IS NULL )
                )
            AND ( ( [strDepreciationCode4] = @strDepreciationCode4 )
                  OR ( @strDepreciationCode4 IS NULL )
                )
            AND ( ( [blnUpdateGLCode4] = @blnUpdateGLCode4 )
                  OR ( @blnUpdateGLCode4 IS NULL )
                )
            AND ( ( [strDepreciationCode5] = @strDepreciationCode5 )
                  OR ( @strDepreciationCode5 IS NULL )
                )
            AND ( ( [blnUpdateGLCode5] = @blnUpdateGLCode5 )
                  OR ( @blnUpdateGLCode5 IS NULL )
                )
            AND ( ( [bitInactive] = @bitInactive )
                  OR ( @bitInactive IS NULL )
                )
            AND ( ( [blnNBVDisplay1] = @blnNBVDisplay1 )
                  OR ( @blnNBVDisplay1 IS NULL )
                )
            AND ( ( [blnNBVDisplay2] = @blnNBVDisplay2 )
                  OR ( @blnNBVDisplay2 IS NULL )
                )
            AND ( ( [blnNBVDisplay3] = @blnNBVDisplay3 )
                  OR ( @blnNBVDisplay3 IS NULL )
                )
            AND ( ( [blnNBVDisplay4] = @blnNBVDisplay4 )
                  OR ( @blnNBVDisplay4 IS NULL )
                )
            AND ( ( [blnNBVDisplay5] = @blnNBVDisplay5 )
                  OR ( @blnNBVDisplay5 IS NULL )
                )
				END
GO
/****** Object:  StoredProcedure [dbo].[GetAssetUsageData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetAssetUsageData]
    (
      @lngID BIGINT = NULL ,
      @strAssetCode NVARCHAR(20) = NULL ,
      @intYear INT = NULL ,
      @intMonth INT = NULL ,
      @strUnit NVARCHAR(5) = NULL ,
      @decFrom MONEY = NULL ,
      @decTo MONEY = NULL ,
      @decTotal MONEY = NULL
    )
AS
BEGIN
    SET NOCOUNT ON;
    SELECT  [lngID] AS ID ,
            [strAssetCode] AS AssetCode ,
            [intYear] AS Years ,
            [intMonth] AS Months ,
            [strUnit] AS Unit ,
            [decFrom] AS FromField ,
            [decTo] AS ToField ,
            [decTotal] AS Total
    FROM    [tblAssetUsage]
    WHERE   ( ( [lngID] = @lngID )
              OR ( @lngID IS NULL )
            )
            AND ( ( [strAssetCode] = @strAssetCode )
                  OR ( @strAssetCode IS NULL )
                )
            AND ( ( [intYear] = @intYear )
                  OR ( @intYear IS NULL )
                )
            AND ( ( [intMonth] = @intMonth )
                  OR ( @intMonth IS NULL )
                )
            AND ( ( [strUnit] = @strUnit )
                  OR ( @strUnit IS NULL )
                )
            AND ( ( [decFrom] = @decFrom )
                  OR ( @decFrom IS NULL )
                )
            AND ( ( [decTo] = @decTo )
                  OR ( @decTo IS NULL )
                )
            AND ( ( [decTotal] = @decTotal )
                  OR ( @decTotal IS NULL )
                );
				END
GO
/****** Object:  StoredProcedure [dbo].[GetAuthorizationUsersList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetAuthorizationUsersList]    Script Date: 04-02-2020 06:39:00 AM ******/
CREATE PROCEDURE [dbo].[GetAuthorizationUsersList]
AS
BEGIN
	SELECT strUserName AS 'UserName'
		,strName AS 'Name'
		,strCellNumber AS 'CellNumber'
		,strEmail AS 'Email'
		,strPassword AS 'Password'
		,blnIsAdmin AS 'IsAdmin'
	FROM tblUsers
END
GO
/****** Object:  StoredProcedure [dbo].[GetBagSize]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****************start [GetBagSize]*****************************/

CREATE PROCEDURE [dbo].[GetBagSize]
AS
BEGIN
	SELECT [lngID] AS ID
		,[strBagSize] AS BagSize
	FROM [dbo].[tblOptBagSize]
END
GO
/****** Object:  StoredProcedure [dbo].[GetBankAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetBankAccountsCY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 ,@isForeignCurrencyRevaluation BIT  
 ,@isGridAccount BIT  
 ,@GridAccountList VARCHAR(MAX)  
 ,@RevaluationDate DATETIME = NULL  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts (NOLOCK)  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.bitBank = 1  
    AND tblAccounts.bitInactive = 0  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec (NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts (NOLOCK)  
   LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.bitBank = 1  
    AND tblAccounts.bitInactive = 0  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   IF @isForeignCurrencyRevaluation = 1  
   BEGIN  
    IF @isGridAccount = 0  
    BEGIN  
     SELECT DISTINCT tblAccounts.intGLNumber GLNumber  
      ,tblAccounts.intAccType AccountType  
      ,tblAccounts.strDesc 'Description'  
      ,tblAccounts.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccounts.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccounts (NOLOCK)  
     --INNER JOIN tblJournalEntryDocDT ON tblAccounts.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     --INNER JOIN tblJournalEntryDoc ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency] (NOLOCK) ON tblCurrency.strCurrency = tblAccounts.strCurrency  
     LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
     WHERE tblAccounts.bitBank = 1  
      AND tblAccounts.bitInactive = 0  
      AND (tblAccounts.strCurrency <> @strCurrency)  
      AND (decBalance <> 0 OR decBalanceF <> 0)  
      --AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
     ORDER BY intAccType, tblAccounts.intGLNumber  
    END  
    ELSE  
    BEGIN  
     SELECT DISTINCT tblAccounts.intGLNumber GLNumber  
      ,tblAccounts.intAccType AccountType  
      ,tblAccounts.strDesc 'Description'  
      ,tblAccounts.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccounts.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccounts (NOLOCK)  
     --INNER JOIN tblJournalEntryDocDT ON tblAccounts.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     --INNER JOIN tblJournalEntryDoc ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency] (NOLOCK) ON tblCurrency.strCurrency = tblAccounts.strCurrency  
     LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
     WHERE tblAccounts.bitBank = 1  
      AND tblAccounts.bitInactive = 0  
      AND (tblAccounts.strCurrency <> @strCurrency)  
      AND (decBalance <> 0 OR decBalanceF <> 0)  
      --AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
      AND tblAccounts.intGLNumber NOT IN (  
       SELECT value  
       FROM dbo.fnSplitStringAsTable(@GridAccountList, ',')  
       )  
     ORDER BY intAccType, tblAccounts.intGLNumber  
    END  
   END  
   ELSE  
   BEGIN  
    SELECT tblAccounts.intGLNumber GLNumber  
     ,tblAccounts.intAccType AccountType  
     ,tblAccounts.strDesc 'Description'  
     ,tblAccounts.intAccClass AccountClass  
     ,ISNULL(tblInv.strPartNumber, '') JournalCode  
     ,0 AccountSecCount  
     ,'' UserName  
    FROM tblAccounts (NOLOCK)  
    LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
    WHERE tblAccounts.bitBank = 1  
     AND tblAccounts.bitInactive = 0  
     AND (  
      strCurrency = @strCurrency  
      OR strCurrency = @strHomeCurrency  
      )  
    ORDER BY intAccType, intGLNumber  
   END  
  END  
  ELSE  
  IF @isForeignCurrencyRevaluation = 1  
  BEGIN  
  SELECT DISTINCT tblAccounts.intGLNumber GLNumber  
 ,tblAccounts.intAccType AccountType  
 ,tblAccounts.strDesc 'Description'  
 ,tblAccounts.intAccClass AccountClass  
 ,ISNULL(tblInv.strPartNumber, '') JournalCode  
 ,ISNULL((  
   SELECT COUNT(tblAccountsSec.intGLNumber)  
   FROM tblAccountsSec(NOLOCK)  
   WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
   ), 0) AccountSecCount  
 ,ISNULL(tblAccountsSec.strUserName, '') UserName  
 ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccounts.decBalanceF AS VARCHAR(22))  
FROM tblAccounts(NOLOCK)  
LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
 AND tblAccountsSec.strUserName = @strUserName  
INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblAccounts.strCurrency  
LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
WHERE tblAccounts.bitBank = 1  
 AND tblAccounts.bitInactive = 0  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec (NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts (NOLOCK)  
   LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.bitBank = 1  
    AND tblAccounts.bitInactive = 0  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 RETURN  
END  
GO

/****** Object:  StoredProcedure [dbo].[GetBankAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetBankAccountsLY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 ,@isForeignCurrencyRevaluation BIT  
 ,@isGridAccount BIT  
 ,@GridAccountList VARCHAR(MAX)  
 ,@RevaluationDate DATETIME = NULL  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY (NOLOCK)  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.bitBank = 1  
    AND tblAccountsLY.bitInactive = 0  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec (NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY (NOLOCK)  
   LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.bitBank = 1  
    AND tblAccountsLY.bitInactive = 0  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   IF @isForeignCurrencyRevaluation = 1  
   BEGIN  
    IF @isGridAccount = 0  
    BEGIN  
     SELECT DISTINCT tblAccountsLY.intGLNumber GLNumber  
      ,tblAccountsLY.intAccType AccountType  
      ,tblAccountsLY.strDesc 'Description'  
      ,tblAccountsLY.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccountsLY.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccountsLY (NOLOCK)  
     --INNER JOIN tblJournalEntryDocDT ON tblAccountsLY.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     --INNER JOIN tblJournalEntryDoc ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency] (NOLOCK) ON tblCurrency.strCurrency = tblAccountsLY.strCurrency  
     LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
     WHERE tblAccountsLY.bitBank = 1  
      AND tblAccountsLY.bitInactive = 0  
      AND (tblAccountsLY.strCurrency <> @strCurrency)  
      AND (decBalance <> 0 OR decBalanceF <> 0)  
      --AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
     ORDER BY intAccType, tblAccountsLY.intGLNumber  
    END  
    ELSE  
    BEGIN  
     SELECT DISTINCT tblAccountsLY.intGLNumber GLNumber  
      ,tblAccountsLY.intAccType AccountType  
      ,tblAccountsLY.strDesc 'Description'  
      ,tblAccountsLY.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccountsLY.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccountsLY (NOLOCK)  
     --INNER JOIN tblJournalEntryDocDT ON tblAccountsLY.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     --INNER JOIN tblJournalEntryDoc ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency] (NOLOCK) ON tblCurrency.strCurrency = tblAccountsLY.strCurrency  
     LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
     WHERE tblAccountsLY.bitBank = 1  
      AND tblAccountsLY.bitInactive = 0  
      AND (tblAccountsLY.strCurrency <> @strCurrency)  
      AND (decBalance <> 0 OR decBalanceF <> 0)  
      --AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
      AND tblAccountsLY.intGLNumber NOT IN (  
       SELECT value  
       FROM dbo.fnSplitStringAsTable(@GridAccountList, ',')  
       )  
     ORDER BY intAccType, tblAccountsLY.intGLNumber  
    END  
   END  
   ELSE  
   BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY (NOLOCK)  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.bitBank = 1  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
   END  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec (NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY (NOLOCK)  
   LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.bitBank = 1  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
 RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetBankTransferAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetBankTransferAccountsCY]  
(  
 @bitGLAccountAccess bit,  
 @bitShowAllCurrency bit,  
 @strUserName nvarchar(40),  
 @strCurrency nvarchar(6),  
 @strHomeCurrency nvarchar(6)  
)  
AS  
  
BEGIN  
  
if @bitShowAllCurrency = 1  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  FROM tblAccounts  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInventory = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.intAccClass = 1 OR tblAccounts.intAccClass = 2 OR tblAccounts.intAccClass = 11 OR tblAccounts.intAccClass = 12)   
  AND (tblAccounts.bitInactive = 0)  
  AND tblAccounts.bitLinkAPVendMast = 0 AND tblAccounts.bitLinkPrepayVendMast = 0 AND tblAccounts.bitLinkARCustMast = 0 AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccounts  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInventory = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.intAccClass = 1 OR tblAccounts.intAccClass = 2 OR tblAccounts.intAccClass = 11 OR tblAccounts.intAccClass = 12)   
  AND (tblAccounts.bitInactive = 0)  
  AND tblAccounts.bitLinkAPVendMast = 0 AND tblAccounts.bitLinkPrepayVendMast = 0 AND tblAccounts.bitLinkARCustMast = 0 AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccounts.intGLNumber  
  
 END  
  
END  
ELSE  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  FROM tblAccounts  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInventory = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.intAccClass = 1 OR tblAccounts.intAccClass = 2 OR tblAccounts.intAccClass = 11 OR tblAccounts.intAccClass = 12)   
  AND (tblAccounts.bitInactive = 0)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccounts.bitLinkAPVendMast = 0 AND tblAccounts.bitLinkPrepayVendMast = 0 AND tblAccounts.bitLinkARCustMast = 0 AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccounts  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInventory = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.intAccClass = 1 OR tblAccounts.intAccClass = 2 OR tblAccounts.intAccClass = 11 OR tblAccounts.intAccClass = 12)   
  AND (tblAccounts.bitInactive = 0)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccounts.bitLinkAPVendMast = 0 AND tblAccounts.bitLinkPrepayVendMast = 0 AND tblAccounts.bitLinkARCustMast = 0 AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccounts.intGLNumber  
  
 END  
  
END  
  
RETURN  
  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetBankTransferAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetBankTransferAccountsLY]  
(  
@bitGLAccountAccess bit,  
@bitShowAllCurrency bit,  
@strUserName nvarchar(40),  
@strCurrency nvarchar(6),  
@strHomeCurrency nvarchar(6)  
)  
AS  
  
BEGIN  
  
if @bitShowAllCurrency = 1  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  FROM tblAccountsLY  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInventory = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccClass = 1 OR tblAccountsLY.intAccClass = 2 OR tblAccountsLY.intAccClass = 11 OR tblAccountsLY.intAccClass = 12)   
  AND (tblAccountsLY.bitInactive = 0)  
  AND tblAccountsLY.bitLinkAPVendMast = 0   AND tblAccountsLY.bitLinkPrepayVendMast = 0   AND tblAccountsLY.bitLinkARCustMast = 0   AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccountsLY  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInventory = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccClass = 1 OR tblAccountsLY.intAccClass = 2 OR tblAccountsLY.intAccClass = 11 OR tblAccountsLY.intAccClass = 12)   
  AND (tblAccountsLY.bitInactive = 0)  
  AND tblAccountsLY.bitLinkAPVendMast = 0   AND tblAccountsLY.bitLinkPrepayVendMast = 0   AND tblAccountsLY.bitLinkARCustMast = 0   AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccountsLY.intGLNumber  
  
 END  
  
END  
ELSE  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  FROM tblAccountsLY  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInventory = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccClass = 1 OR tblAccountsLY.intAccClass = 2 OR tblAccountsLY.intAccClass = 11 OR tblAccountsLY.intAccClass = 12)   
  AND (tblAccountsLY.bitInactive = 0)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccountsLY.bitLinkAPVendMast = 0   AND tblAccountsLY.bitLinkPrepayVendMast = 0   AND tblAccountsLY.bitLinkARCustMast = 0   AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccountsLY  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInventory = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccClass = 1 OR tblAccountsLY.intAccClass = 2 OR tblAccountsLY.intAccClass = 11 OR tblAccountsLY.intAccClass = 12)   
  AND (tblAccountsLY.bitInactive = 0)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccountsLY.bitLinkAPVendMast = 0   AND tblAccountsLY.bitLinkPrepayVendMast = 0   AND tblAccountsLY.bitLinkARCustMast = 0   AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccountsLY.intGLNumber  
  
 END  
  
END  
  
RETURN  
  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetBIForDashboard]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************** End [UpdateBICube] ****************/

/************************** Start [GetBIForDashboard] ****************/


Create PROCEDURE [dbo].[GetBIForDashboard]
(
	@strUserName nvarchar(40) = null
)
AS
BEGIN

if @strUserName is null or @strUserName = ''
	begin
		SELECT ROW_NUMBER() OVER (ORDER BY bitCustomView, strViewName) as SrNo, T1.strViewName As ViewName, T1.strSQLViewName AS SQLViewName, T1.strDesc AS ViewDesc, T1.bitCustomView AS CustomView FROM tblCubeViews T1 ORDER BY bitCustomView, strViewName
	end
else
	begin
		SELECT ROW_NUMBER() OVER (ORDER BY bitCustomView, strViewName) as SrNo, T1.strViewName As ViewName, T1.strSQLViewName AS SQLViewName, T1.strDesc AS ViewDesc, T1.bitCustomView AS CustomView, isnull(T2.blnIsAvailable, 0) As IsAvailable 
		FROM tblCubeViews T1 
		left outer join 
		tblUsersCubes T2 on T1.strViewName = T2.strCubeName and T2.strUserName = @strUserName ORDER BY bitCustomView, strViewName
	end
END
GO
/****** Object:  StoredProcedure [dbo].[GetBinCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetLocationBins] ***********/

/*********** Start [GetBinCount] ***********/
CREATE PROCEDURE [dbo].[GetBinCount]
@Result As int = 0 OUTPUT
AS
BEGIN
	SELECT  top 1 @Result = COUNT(lngBinId)  
	FROM 
		tblInvExtBin  
	inner join tblInv on tblInvExtBin.strPartNumber  = tblInv.strPartNumber 
    where 
		intType = 1 
	GROUP BY 
		tblInvExtBin.strLocName, 
		tblInvExtBin.strPartNumber 
	HAVING 
		COUNT(lngBinId) > 1

	SELECT @Result
END
GO
/****** Object:  StoredProcedure [dbo].[GetBinExtData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetBinCount] ***********/

/*********** Start [GetBinExtData] ***********/
CREATE PROCEDURE [dbo].[GetBinExtData]
	@LocName nvarchar(10) = NULL,
	@BinCode nvarchar(50) = NULL,	
	@PartNumber nvarchar(50) = NULL,
	@SearchText nvarchar(100) = NULL,
	@IsDefault bit = NULL,
	@IsAllowed bit= NULL
AS
BEGIN
	SET NOCOUNT ON;
	
	IF @IsAllowed = 1
	BEGIN		
		SELECT	
		 tblInvExtBin.[strPartNumber] AS PartNumber
		,tblInvExtBin.[strLocName] AS LocName
		,[lngBinID] AS Id
		,[decAvail] AS Avail
		,[decAlloc] AS Alloc
		,[decOnHand] AS OnHand
		,[decMaximumQty] AS MaximumQty
		,[bitAllowed] AS IsAllowed
		,[bitDefault] AS IsDefault
	    ,strDescription AS [Description]
		,tblInvLocBin.strBinCode AS BinCode,
		IsAllowEditing=CAST((CASE WHEN (select count(*) from tblInvTrackingDTBin where lngBinID =tblInvLocBin.lngId)>0 Then 0 Else 1 End) As Bit),intItemType=tblInv.intType
		FROM tblInvExtBin 
		INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId AND tblInvLocBin.strLocName=tblInvExtBin.strLocName
		INNER JOIN tblInv ON tblInv.strPartNumber=tblInvExtBin.strPartNumber
		WHERE 
		((tblInvExtBin.strLocName = @LocName) OR (@LocName IS NULL)) AND
		((tblInvLocBin.strBinCode = @BinCode) OR (@BinCode IS NULL)) AND
		((tblInvExtBin.strPartNumber = @PartNumber) OR (@PartNumber IS NULL)) AND
		--((bitAllowed IN(1,@SQbitAllowed)) OR (@SQbitAllowed IS NULL)) AND
		--((bitDefault = @SQbitDefault) OR (@SQbitDefault IS NULL)) AND
		((tblInvExtBin.strLocName LIKE '%' +  @SearchText + '%' OR tblInvLocBin.strBinCode LIKE '%' +  @SearchText + '%' OR tblInvExtBin.strPartNumber LIKE '%' +  @SearchText + '%') 
		OR (@SearchText IS NULL))
	END
	ELSE
	BEGIN
		SELECT ISNULL(tblInvExtBin.strPartNumber,@PartNumber) AS PartNumber,
			   ISNULL(tblInvExtBin.strLocName,tblInvLocBin.strLocName) AS LocName,
			   ISNULL(tblInvExtBin.lngBinId,tblInvLocBin.lngId) AS Id,
			   ISNULL(decAvail,0) AS Avail,
			   ISNULL(decAlloc,0) AS Alloc,
			   ISNULL(decOnHand,0) OnHand,
			   ISNULL(decMaximumQty,0) MaximumQty,
			   ISNULL(bitAllowed,0) IsAllowed,
			   ISNULL(bitDefault,0) IsDefault,
			   strDescription AS [Description],
			    tblInvLocBin.strBinCode AS BinCode,
			    IsAllowEditing=
			   CAST(IsNull((CASE WHEN (select count(*) from tblInvExtBin where strPartNumber = @PartNumber)>0 Then (CASE WHEN (select count(*) from tblInvTrackingDTBin where lngBinID =tblInvLocBin.lngId)>0 Then 0 Else 1 End) Else 1 End),1) As Bit),			   
			   ItemType=ISNULL(tblInv.intType,1)
		FROM tblInvLocBin
		LEFT JOIN tblInvExtBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId AND tblInvLocBin.strLocName=tblInvExtBin.strLocName AND tblInvExtBin.strPartNumber=@PartNumber
		LEFT JOIN tblInv ON tblInv.strPartNumber=ISNULL(tblInvExtBin.strPartNumber,@PartNumber)
		WHERE ((tblInvLocBin.strLocName = @LocName) OR (@LocName IS NULL)) AND
		((tblInvLocBin.strBinCode = @BinCode) OR (@BinCode IS NULL)) AND
		((tblInvLocBin.strLocName LIKE '%' +  @SearchText + '%' OR tblInvLocBin.strBinCode LIKE '%' +  @SearchText + '%') OR (@SearchText IS NULL))
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetBinIdStringForPartNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/***********************End [RptOrigInvNewDT]********************************************/

/***********************Start [GetBinIdStringForPartNumber]********************************************/


CREATE PROCEDURE [dbo].[GetBinIdStringForPartNumber] (
	@PartNumber nvarchar(50),
	@Location nvarchar(50)
	)
AS
BEGIN
	DECLARE @listStr VARCHAR(MAX)
	SELECT @listStr = COALESCE(@listStr+', ' ,'') + CONVERT(nvarchar(max), lngBinID) FROM tblInvExtBin where strPartNumber = @PartNumber and strLocName = @Location
	SELECT @listStr
END
GO
/****** Object:  StoredProcedure [dbo].[GetBinLocationData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetSumOfAllPeriodIB] ***********/

/*********** Start [GetBinLocationData] ***********/
Create PROCEDURE [dbo].[GetBinLocationData]
(
	@PartNumber AS VARCHAR(50),
	@LocationName AS VARCHAR(10),
	@BinCode AS VARCHAR(50),
	@BinIds AS VARCHAR(50)
)
AS
BEGIN
	SELECT IBE.lngBinId AS BinId
	,ILB.strBinCode AS BinCode
	,ILB.strDescription AS [Description]
	,IBE.strLocName AS LocName
	,IBE.strPartNumber AS PartNumber 
	,decMaximumQty AS MaximumQty
	,decAvail AS Avail
	,decOnHand AS OnHand
	,CAST(0 as decimal) AS IssueQty
FROM tblInvExtBin IBE
INNER JOIN tblInvLocBin ILB ON ILB.strLocName = IBE.strLocName
	AND ILB.lngId = IBE.lngBinId
WHERE IBE.strLocName = @LocationName
	AND IBE.strPartNumber = @PartNumber
	AND ILB.strBinCode = @BinCode
	AND ILB.lngID IN (SELECT Cast(Value AS BIGINT) FROM dbo.fnSplitStringAsTable(@BinIds, ',')) 
ORDER BY IBE.lngBinId
	,IBE.strLocName
END
GO
/****** Object:  StoredProcedure [dbo].[GetBinsByLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetBinsByLocation]  
 @SQstrLocationName nvarchar(10) = NULL  
AS  
BEGIN  
 SET NOCOUNT ON;  
   
Select  
      [strLocName]  
      ,[strBinCode]  
      ,[strDescription]
	  ,[lngID] AS lngBinId  
   FROM tblInvLocBin WHERE strLocName = @SQstrLocationName  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetBITreeView]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetBITreeView]
(
	@strUserName nvarchar(40)
)
AS
BEGIN
	SET NOCOUNT ON;
	CREATE TABLE #ViewsLevel0
	(
		ID int NOT NULL IDENTITY(1,1) PRIMARY KEY,
		strViewName nvarchar(200),
		strDesc nvarchar(200),	
		bitCustomView bit,
		bitIsAvailable bit,
	)	
	CREATE TABLE #FinalData
	(
		RowId int NOT NULL IDENTITY(1,1) PRIMARY KEY,
		Title nvarchar(200),
		[Description] nvarchar(200),
		Id varchar(max),
		ParentId varchar(max),
		[Level] int,
		CustomCube bit,
		IsChecked bit
	)
	
	Insert into #ViewsLevel0
	SELECT tblCubeViews.strViewName, tblCubeViews.strDesc, tblCubeViews.bitCustomView, ISNULL(tblUsersCubes.blnIsAvailable, 0) [blnIsAvailable] 
	FROM tblCubeViews LEFT JOIN tblUsersCubes ON tblUsersCubes.strCubeName = tblCubeViews.strViewName AND tblUsersCubes.strUserName = @strUserName 
	ORDER BY tblCubeViews.strViewName
	
	Declare @id int,@strViewName nvarchar(200)
	
	While ((Select Count(1) from #ViewsLevel0) > 0)
	BEGIN
		
		Select TOP 1 @id = ID,@strViewName = strViewName from #ViewsLevel0
	
		-- Add 0th level record in Final Data
		INSERT INTO #FinalData
		Select strViewName,strDesc,strViewName + '_1','',1,bitCustomView,bitIsAvailable from #ViewsLevel0 where ID = @id
	
		
	
		INSERT INTO #FinalData
		SELECT tblCubes.strCubeName,'',tblCubes.strCubeName + '_2',@strViewName + '_1',2
		, tblCubes.bitCustomCube, ISNULL(tblUsersCubeViews.blnIsAvailable, 0) 
		FROM tblCubes LEFT JOIN tblUsersCubeViews ON tblUsersCubeViews.strCubeName = tblCubes.strCubeName AND tblUsersCubeViews.strUserName = @strUserName 
		WHERE tblCubes.strViewName = @strViewName ORDER BY tblCubes.strViewName
	
		DELETE FROM #ViewsLevel0 where ID = @id
	
	END
	
	Select * from #FinalData
	
	DROP TABLE #ViewsLevel0
	DROP TABLE #FinalData
END

GO
/****** Object:  StoredProcedure [dbo].[GetBOMGPCalc]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetBOMGPCalc]    Script Date: 07-11-2019 10:38:47 ******/
CREATE PROCEDURE [dbo].[GetBOMGPCalc] (
  @PartNumber AS NVARCHAR(50)
, @BarCode 	AS NVARCHAR(600)
,@LocName AS NVARCHAR(50) 
,@GPCalcLPP AS int
)
AS
BEGIN
	SELECT CASE 
		WHEN tblInv.intType = 4
			THEN tblInv.decStandardCost
		ELSE CASE @GPCalcLPP
				WHEN 0
					THEN tblInv.decLastPPUnit
				WHEN 1
					THEN tblInv.decStandardCost
				WHEN 2
					THEN CASE 0
							WHEN 0
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = @LocName
															), 0)
													THEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
												ELSE CASE 
														WHEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0) = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0)
														END
												END
										END
							WHEN 1
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
												ELSE CASE 
														WHEN CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
														END
												END
										END
							ELSE tblInv.decLastPPUnit
							END
				WHEN 3
					THEN CASE 0
							WHEN 0
								THEN CASE 
										WHEN ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0) = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0)
										END
							WHEN 1
								THEN CASE 
										WHEN CASE tblInv.decSumOnHand
												WHEN 0
													THEN 0
												ELSE tblInv.decSumValue / tblInv.decSumOnHand
												END = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
										END
							ELSE tblInv.decLastPPUnit
							END
				ELSE tblInv.decLastPPUnit
				END
		END AS [GLCalc]
FROM tblInv
WHERE (
		tblInv.strPartNumber = @PartNumber
		OR tblInv.strBarCode = @BarCode
		OR tblInv.strBarCode2 = @BarCode
		)
	AND (tblInv.bitInactive = 0)
	AND tblInv.bitOtherCmp = 0
END
GO
/****** Object:  StoredProcedure [dbo].[GetBulletinList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetBulletinList]    Script Date: 2020-03-27 ******/
CREATE PROCEDURE [dbo].[GetBulletinList]
@IsInactive as bit=0,
@IsAdmin as bit=0,
@OwnerName as nvarchar(Max)=''
AS
BEGIN

Select 
tblCompanyBulletins.BulletinId,
tblCompanyBulletins.BulletinDate,
tblCompanyBulletins.OwnerName,
tblCompanyBulletins.BulletinNote,
tblCompanyBulletins.CreatedDate,
tblCompanyBulletins.CreatedUser,
tblCompanyBulletins.UpdatedDate,
tblCompanyBulletins.UpdatedUser,
tblCompanyBulletins.IsInactive,
tblCompanyBulletins.CRMGroup
 from tblCompanyBulletins where IsInactive in (0,@IsInactive) and OwnerName = case when @IsAdmin=0 then  @OwnerName else OwnerName end
END
GO
/****** Object:  StoredProcedure [dbo].[GetBulletinReadUnreadUserList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetBulletinReadUnreadUserList]    Script Date: 2020-03-27 16:18:04 ******/
CREATE PROCEDURE [dbo].[GetBulletinReadUnreadUserList] 
	 @bulletinId AS BIGINT
AS
BEGIN

		SELECT tblCompanyBulletinsUsers.BulletinId
			,tblCompanyBulletinsNotifications.ReadDate
			,tblCompanyBulletinsUsers.UserName
			,tblCompanyBulletinsNotifications.IsRead
			,tblCompanyBulletinsNotifications.IsRead
		FROM tblCompanyBulletinsUsers
		INNER JOIN tblCompanyBulletinsNotifications 
			ON tblCompanyBulletinsUsers.BulletinId = tblCompanyBulletinsNotifications.BulletinId
			AND tblCompanyBulletinsUsers.UserName = tblCompanyBulletinsNotifications.UserName
		WHERE tblCompanyBulletinsUsers.BulletinId = @bulletinId And tblCompanyBulletinsNotifications.IsRead=1
	Union All
		SELECT tblCompanyBulletinsUsers.BulletinId
			,IsNull(tblCompanyBulletinsNotifications.ReadDate,Getdate()) as ReadDate
			,tblCompanyBulletinsUsers.UserName
			,Cast(0 as bit) as IsRead
			,tblCompanyBulletinsNotifications.IsRead
		FROM tblCompanyBulletinsUsers
		LEFT JOIN tblCompanyBulletinsNotifications 
			ON tblCompanyBulletinsUsers.BulletinId = tblCompanyBulletinsNotifications.BulletinId
			AND tblCompanyBulletinsUsers.UserName = tblCompanyBulletinsNotifications.UserName And tblCompanyBulletinsNotifications.IsRead=0
		WHERE tblCompanyBulletinsUsers.BulletinId = @bulletinId  and tblCompanyBulletinsUsers.UserName not in (Select d.UserName from tblCompanyBulletinsNotifications d where d.IsRead=1 and d.BulletinId = @bulletinId) 
END
GO
/****** Object:  StoredProcedure [dbo].[GetBuyOutPricebyDocDate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** END [InsertSerialNumberTracking] WH R3 Bug Fix ***********/

/*********** Start [GetBuyOutPricebyDocDate]  ***********/
CREATE PROCEDURE [dbo].[GetBuyOutPricebyDocDate]
(	@PartNumber AS NVARCHAR(50),
	@PriceList AS NVARCHAR(20)
)
AS
BEGIN
SELECT tblPriceListsByDate.uidPriceBasedID AS PriceBasedId
	,tblPriceListsByDate.strPricelist AS PriceList
	,tblPriceListsByDate.dteStartDate  AS StartDate
	,tblPriceListsByDate.dteFinishDate AS EndDate
	,ISNULL((
			SELECT decBuyoutMarkup
			FROM tblPricelistsCatBuyout
			WHERE strPricelist = tblPriceListsByDate.strPricelist
				AND strCategory = tblInv.strCategory
				AND tblPriceListsByDate.uidPriceBasedID = uidPriceBasedID
			), 0) AS BuyoutMarkup
FROM tblPriceListsByDate
INNER JOIN tblInvPrice ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
INNER JOIN tblInv ON tblInvPrice.strPartNumber = tblInv.strPartNumber
WHERE tblInvPrice.strPartNumber = @PartNumber
	AND tblInvPrice.strPricelist = @PriceList
ORDER BY tblPriceListsByDate.dteStartDate
END
GO
/****** Object:  StoredProcedure [dbo].[GetCashTenderTypeForPayouts]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

Create PROCEDURE [dbo].[GetCashTenderTypeForPayouts]
AS
BEGIN
	SELECT strName as Name, bitAccount as IsAccount,intGLNumber as GLNumber  FROM tblTenderTypes WHERE bitInActive = 0 AND bitAccount = 0 AND strName = 'Cash'
END
GO
/****** Object:  StoredProcedure [dbo].[GetCashTenderTypesByDrawer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetCashTenderTypesByDrawer]    Script Date: 16/08/2019 13:50:55 ******/
CREATE Procedure [dbo].[GetCashTenderTypesByDrawer]
@sessionId uniqueidentifier
AS
SELECT  tblTenderTypes.strName as Name, tblTenderTypes.strDescription as Description, tblTenderTypes.intGLNumber as GLNumber,
		tblTenderTypes.bitInActive as InActive, tblTenderTypes.bitAccount as IsAccount, tblTenderTypes.intDisplayOrder, tblTenderTypes.bitCashbookIntegration as IsCashbookIntegration, 
		tblTenderTypes.strIPAddress as IPAddress, tblTenderTypes.intPortNum, tblTenderTypes.bitSalesInvoice, tblTenderTypes.bitLayBy as IsLayBy, tblTenderTypes.bitPOS as IsPOS,
		tblTenderTypes.bitCash as IsCash, tblPOSDrTenderTypes.strDrawerName 
FROM tblTenderTypes 
INNER JOIN tblPOSDrTenderTypes ON tblTenderTypes.strName = tblPOSDrTenderTypes.strTenderTypeName 
INNER JOIN tblPOSDrs ON tblPOSDrTenderTypes.strDrawerName = tblPOSDrs.strDrawerName
where tblPOSDrs.uidSessionID=@sessionId and tblPOSDrTenderTypes.bitUsed=1
GO
/****** Object:  StoredProcedure [dbo].[GetCategoryHierarchy]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetCategoryHierarchy]    Script Date: 07-11-2019 10:38:47 ******/
CREATE PROCEDURE [dbo].[GetCategoryHierarchy] 
AS
BEGIN
SELECT CAT.STRCATEGORY AS CATEGORY,SUBCAT.STRCATEGORY AS SUBCATEGORY, SUBCATGRP.STRCATEGORY AS SUBCATEGORYGROUP 
 FROM TBLINVCAT CAT LEFT JOIN TBLINVSUBCAT SUBCAT ON CAT.STRCATEGORY = SUBCAT.STRPARENTCATEGORY LEFT JOIN TBLINVGROUPSUBCAT SUBCATGRP ON SUBCATGRP.STRPARENTSUBCATEGORY = SUBCAT.STRCATEGORY ORDER BY CAT.STRCATEGORY
END
GO
/****** Object:  StoredProcedure [dbo].[GetCenterLinesForJournal]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [CheckForCenterAllocationAmount] ***********/

/*********** Start [GetCenterLinesForJournal] ***********/
CREATE PROCEDURE [dbo].[GetCenterLinesForJournal]
(
	@JournalID VARCHAR(50),	
	@IsCurrentYearAdjust BIT
)
AS
BEGIN
	IF(@IsCurrentYearAdjust = 0)
	BEGIN
		SELECT a.intLineNum AS JournalLineNo
			,a.intGLNumber AS AcctNumber
			,b.strDesc AS AcctDescription
			,b.intAccType AS AccountType
			,a.decAmount AS Amount
	FROM tblJournalEnt AS a
	INNER JOIN tblAccounts AS b ON a.intGLNumber = b.intGLNumber
	WHERE (a.lngJourID = @JournalID)
		AND (
			a.intGLNumber IN (
				SELECT intGLNumber
				FROM tblAccounts
				WHERE bitAllowCenters = 1
					AND intAccType <> 3
				)
			)
	END
	ELSE
	BEGIN
		SELECT a.intLineNum AS JournalLineNo
			,a.intGLNumber AS AcctNumber
			,b.strDesc AS AcctDescription
			,b.intAccType AS AccountType
			,a.decAmount AS Amount
		FROM tblJournalEntLY AS a
		INNER JOIN tblAccountsLY AS b ON a.intGLNumber = b.intGLNumber
		WHERE (a.lngJourID = @JournalID)
			AND (
				a.intGLNumber IN (
					SELECT intGLNumber
					FROM tblAccountsLY
					WHERE bitAllowCenters = 1
						AND intAccType <> 3
					)
				)
	END

END
GO
/****** Object:  StoredProcedure [dbo].[GetCenterPickerData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetCenterPickerData] (
	@useLastYear BIT
	,@gLNumber NVARCHAR(50)
	,@Search NVARCHAR(Max) = NULL
	)
AS
BEGIN
	SET NOCOUNT ON;

	IF (@Search IS NULL)
	BEGIN
		IF @useLastYear = 1
		BEGIN
			IF @gLNumber = ''
			BEGIN
				SELECT strLvl1 AS Lvl1
					,strLvl2 AS Lvl2
					,strLvl3 AS Lvl3
					,strLvl4 AS Lvl4
					,strLvl5 AS Lvl5
					,uidCenterID AS CenterID
					,Cast(1 AS BIT) AS TreeForeColor
				FROM tblCentersLY
				WHERE (bitInactive = 0)
					AND strLvl1 IN (
						SELECT strLvl1
						FROM tblCentersLY
						WHERE (strLvl2 IS NULL)
							AND (bitInactive = 0)
						)
				ORDER BY strLvl1
					,strLvl2
					,strLvl3
					,strLvl4
					,strLvl5
			END
			ELSE
			BEGIN
				SELECT strLvl1 AS Lvl1
					,strLvl2 AS Lvl2
					,strLvl3 AS Lvl3
					,strLvl4 AS Lvl4
					,strLvl5 AS Lvl5
					,tblCentersLY.uidCenterID AS CenterID
					,(
						CASE 
							WHEN tblCenterAcctsLY.lngId IS NULL
								THEN Cast(0 AS BIT)
							ELSE Cast(1 AS BIT)
							END
						) AS TreeForeColor
				FROM tblCentersLY
				LEFT JOIN tblCenterAcctsLY ON tblCenterAcctsLY.uidCenterID = tblCentersLY.uidCenterID
					AND intGLNumber = @gLNumber
				WHERE (bitInactive = 0)
					AND strLvl1 IN (
						SELECT strLvl1
						FROM tblCentersLY
						WHERE (strLvl2 IS NULL)
							AND (bitInactive = 0)
						)
				ORDER BY strLvl1
					,strLvl2
					,strLvl3
					,strLvl4
					,strLvl5
			END
		END;
		ELSE
		BEGIN
			IF @gLNumber = ''
			BEGIN
				SELECT strLvl1 AS Lvl1
					,strLvl2 AS Lvl2
					,strLvl3 AS Lvl3
					,strLvl4 AS Lvl4
					,strLvl5 AS Lvl5
					,uidCenterID AS CenterID
					,Cast(1 AS BIT) AS TreeForeColor
				FROM tblCenters
				WHERE (bitInactive = 0)
					AND strLvl1 IN (
						SELECT strLvl1
						FROM tblCenters
						WHERE (strLvl2 IS NULL)
							AND (bitInactive = 0)
						)
				ORDER BY strLvl1
					,strLvl2
					,strLvl3
					,strLvl4
					,strLvl5
			END
			ELSE
			BEGIN
				SELECT strLvl1 AS Lvl1
					,strLvl2 AS Lvl2
					,strLvl3 AS Lvl3
					,strLvl4 AS Lvl4
					,strLvl5 AS Lvl5
					,tblCenters.uidCenterID AS CenterID
					,(
						CASE 
							WHEN tblCenterAccts.lngId IS NULL
								THEN Cast(0 AS BIT)
							ELSE Cast(1 AS BIT)
							END
						) AS TreeForeColor
				FROM tblCenters
				LEFT JOIN tblCenterAccts ON tblCenterAccts.uidCenterID = tblCenters.uidCenterID
					AND intGLNumber = @gLNumber
				WHERE (bitInactive = 0)
					AND strLvl1 IN (
						SELECT strLvl1
						FROM tblCenters
						WHERE (strLvl2 IS NULL)
							AND (bitInactive = 0)
						)
				ORDER BY strLvl1
					,strLvl2
					,strLvl3
					,strLvl4
					,strLvl5
			END
		END
	END
	ELSE
	BEGIN
		CREATE TABLE #TempCenter (
			[strLvl1] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
			,[strLvl2] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
			,[strLvl3] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
			,[strLvl4] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
			,[strLvl5] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
			,[uidCenterID] [uniqueidentifier] ROWGUIDCOL NULL
			)

		CREATE TABLE #TempCenterMain (
			[Lvl1] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
			,[Lvl2] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
			,[Lvl3] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
			,[Lvl4] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
			,[Lvl5] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
			,[uidCenterID] [uniqueidentifier] ROWGUIDCOL NULL
			)

		DECLARE @strLvl1 [nvarchar] (200)
		DECLARE @strLvl2 [nvarchar] (200)
		DECLARE @strLvl3 [nvarchar] (200)
		DECLARE @strLvl4 [nvarchar] (200)
		DECLARE @strLvl5 [nvarchar] (200)
		DECLARE @uidCenterID UNIQUEIDENTIFIER

		IF (@useLastYear = 0)
		BEGIN
			INSERT INTO #TempCenter
			SELECT strLvl1
				,strLvl2
				,strLvl3
				,strLvl4
				,strLvl5
				,uidCenterID
			FROM tblCenters
			WHERE (
					strLvl1 LIKE '%' + @Search + '%'
					OR strLvl2 LIKE '%' + @Search + '%'
					OR strLvl3 LIKE '%' + @Search + '%'
					OR strLvl4 LIKE '%' + @Search + '%'
					OR strLvl5 LIKE '%' + @Search + '%'
					)
				AND (bitInactive = 0)

			INSERT INTO #TempCenterMain
			SELECT strLvl1
				,strLvl2
				,strLvl3
				,strLvl4
				,strLvl5
				,uidCenterID
			FROM #TempCenter

			WHILE (
					(
						SELECT Count(*)
						FROM #TempCenter
						) > 0
					)
			BEGIN
				SELECT TOP 1 @uidCenterID = uidCenterID
					,@strLvl1 = strLvl1
					,@strLvl2 = strLvl2
					,@strLvl3 = strLvl3
					,@strLvl4 = strLvl4
					,@strLvl5 = strLvl5
				FROM #TempCenter

				IF (@strLvl5 IS NOT NULL)
				BEGIN
					INSERT INTO #TempCenterMain
					SELECT strLvl1
						,strLvl2
						,strLvl3
						,strLvl4
						,strLvl5
						,uidCenterID
					FROM tblCenters
					WHERE strLvl1 = @strLvl1
						AND strLvl2 = @strLvl2
						AND strLvl3 = @strLvl3
						AND strLvl4 = @strLvl4
						AND strLvl5 = @strLvl5
						AND uidCenterID NOT IN (
							SELECT #TempCenterMain.uidCenterID
							FROM #TempCenterMain
							)
						AND (bitInactive = 0)
				END

				IF (@strLvl4 IS NOT NULL)
				BEGIN
					INSERT INTO #TempCenterMain
					SELECT strLvl1
						,strLvl2
						,strLvl3
						,strLvl4
						,strLvl5
						,uidCenterID
					FROM tblCenters
					WHERE strLvl1 = @strLvl1
						AND strLvl2 = @strLvl2
						AND strLvl3 = @strLvl3
						AND strLvl4 = @strLvl4
						AND strLvl5 IS NULL
						AND uidCenterID NOT IN (
							SELECT #TempCenterMain.uidCenterID
							FROM #TempCenterMain
							)
						AND (bitInactive = 0)
				END

				IF (@strLvl3 IS NOT NULL)
				BEGIN
					INSERT INTO #TempCenterMain
					SELECT strLvl1
						,strLvl2
						,strLvl3
						,strLvl4
						,strLvl5
						,uidCenterID
					FROM tblCenters
					WHERE strLvl1 = @strLvl1
						AND strLvl2 = @strLvl2
						AND strLvl3 = @strLvl3
						AND strLvl4 IS NULL
						AND strLvl5 IS NULL
						AND uidCenterID NOT IN (
							SELECT #TempCenterMain.uidCenterID
							FROM #TempCenterMain
							)
						AND (bitInactive = 0)
				END

				IF (@strLvl2 IS NOT NULL)
				BEGIN
					INSERT INTO #TempCenterMain
					SELECT strLvl1
						,strLvl2
						,strLvl3
						,strLvl4
						,strLvl5
						,uidCenterID
					FROM tblCenters
					WHERE strLvl1 = @strLvl1
						AND strLvl2 = @strLvl2
						AND strLvl3 IS NULL
						AND strLvl4 IS NULL
						AND strLvl5 IS NULL
						AND uidCenterID NOT IN (
							SELECT #TempCenterMain.uidCenterID
							FROM #TempCenterMain
							)
						AND (bitInactive = 0)
				END

				IF (@strLvl1 IS NOT NULL)
				BEGIN
					INSERT INTO #TempCenterMain
					SELECT strLvl1
						,strLvl2
						,strLvl3
						,strLvl4
						,strLvl5
						,uidCenterID
					FROM tblCenters
					WHERE strLvl1 = @strLvl1
						AND strLvl2 IS NULL
						AND strLvl3 IS NULL
						AND strLvl4 IS NULL
						AND strLvl5 IS NULL
						AND uidCenterID NOT IN (
							SELECT #TempCenterMain.uidCenterID
							FROM #TempCenterMain
							)
						AND (bitInactive = 0)
				END

				DELETE
				FROM #TempCenter
				WHERE uidCenterID = @uidCenterID
			END
		END
		ELSE
		BEGIN
			INSERT INTO #TempCenter
			SELECT strLvl1
				,strLvl2
				,strLvl3
				,strLvl4
				,strLvl5
				,uidCenterID
			FROM tblCentersLY
			WHERE (
					strLvl1 LIKE '%' + @Search + '%'
					OR strLvl2 LIKE '%' + @Search + '%'
					OR strLvl3 LIKE '%' + @Search + '%'
					OR strLvl4 LIKE '%' + @Search + '%'
					OR strLvl5 LIKE '%' + @Search + '%'
					)
				AND (bitInactive = 0)

			INSERT INTO #TempCenterMain
			SELECT strLvl1
				,strLvl2
				,strLvl3
				,strLvl4
				,strLvl5
				,uidCenterID
			FROM #TempCenter

			WHILE (
					(
						SELECT Count(*)
						FROM #TempCenter
						) > 0
					)
			BEGIN
				SELECT TOP 1 @uidCenterID = uidCenterID
					,@strLvl1 = strLvl1
					,@strLvl2 = strLvl2
					,@strLvl3 = strLvl3
					,@strLvl4 = strLvl4
					,@strLvl5 = strLvl5
				FROM #TempCenter

				IF (@strLvl5 IS NOT NULL)
				BEGIN
					INSERT INTO #TempCenterMain
					SELECT strLvl1
						,strLvl2
						,strLvl3
						,strLvl4
						,strLvl5
						,uidCenterID
					FROM tblCentersLY
					WHERE strLvl1 = @strLvl1
						AND strLvl2 = @strLvl2
						AND strLvl3 = @strLvl3
						AND strLvl4 = @strLvl4
						AND strLvl5 = @strLvl5
						AND uidCenterID NOT IN (
							SELECT #TempCenterMain.uidCenterID
							FROM #TempCenterMain
							)
						AND (bitInactive = 0)
				END

				IF (@strLvl4 IS NOT NULL)
				BEGIN
					INSERT INTO #TempCenterMain
					SELECT strLvl1
						,strLvl2
						,strLvl3
						,strLvl4
						,strLvl5
						,uidCenterID
					FROM tblCentersLY
					WHERE strLvl1 = @strLvl1
						AND strLvl2 = @strLvl2
						AND strLvl3 = @strLvl3
						AND strLvl4 = @strLvl4
						AND strLvl5 IS NULL
						AND uidCenterID NOT IN (
							SELECT #TempCenterMain.uidCenterID
							FROM #TempCenterMain
							)
						AND (bitInactive = 0)
				END

				IF (@strLvl3 IS NOT NULL)
				BEGIN
					INSERT INTO #TempCenterMain
					SELECT strLvl1
						,strLvl2
						,strLvl3
						,strLvl4
						,strLvl5
						,uidCenterID
					FROM tblCentersLY
					WHERE strLvl1 = @strLvl1
						AND strLvl2 = @strLvl2
						AND strLvl3 = @strLvl3
						AND strLvl4 IS NULL
						AND strLvl5 IS NULL
						AND uidCenterID NOT IN (
							SELECT #TempCenterMain.uidCenterID
							FROM #TempCenterMain
							)
						AND (bitInactive = 0)
				END

				IF (@strLvl2 IS NOT NULL)
				BEGIN
					INSERT INTO #TempCenterMain
					SELECT strLvl1
						,strLvl2
						,strLvl3
						,strLvl4
						,strLvl5
						,uidCenterID
					FROM tblCentersLY
					WHERE strLvl1 = @strLvl1
						AND strLvl2 = @strLvl2
						AND strLvl3 IS NULL
						AND strLvl4 IS NULL
						AND strLvl5 IS NULL
						AND uidCenterID NOT IN (
							SELECT #TempCenterMain.uidCenterID
							FROM #TempCenterMain
							)
						AND (bitInactive = 0)
				END

				IF (@strLvl1 IS NOT NULL)
				BEGIN
					INSERT INTO #TempCenterMain
					SELECT strLvl1
						,strLvl2
						,strLvl3
						,strLvl4
						,strLvl5
						,uidCenterID
					FROM tblCentersLY
					WHERE strLvl1 = @strLvl1
						AND strLvl2 IS NULL
						AND strLvl3 IS NULL
						AND strLvl4 IS NULL
						AND strLvl5 IS NULL
						AND uidCenterID NOT IN (
							SELECT #TempCenterMain.uidCenterID
							FROM #TempCenterMain
							)
						AND (bitInactive = 0)
				END

				DELETE
				FROM #TempCenter
				WHERE uidCenterID = @uidCenterID
			END
		END

		IF (@useLastYear = 0)
		BEGIN
			IF (@gLNumber = '')
			BEGIN
				SELECT Lvl1
					,Lvl2
					,Lvl3
					,Lvl4
					,Lvl5
					,uidCenterID AS CenterID
					,Cast(1 AS BIT) AS TreeForeColor
				FROM #TempCenterMain
				WHERE Lvl1 IN (
						SELECT strLvl1
						FROM tblCenters
						WHERE (strLvl2 IS NULL)
							AND (bitInactive = 0)
						)
				ORDER BY Lvl1
					,Lvl2
					,Lvl3
					,Lvl4
					,Lvl5
			END
			ELSE
			BEGIN
				SELECT Lvl1
					,Lvl2
					,Lvl3
					,Lvl4
					,Lvl5
					,#TempCenterMain.uidCenterID AS CenterID
					,TreeForeColor = CASE 
						WHEN tblCenterAccts.lngId IS NULL
							THEN Cast(0 AS BIT)
						ELSE Cast(1 AS BIT)
						END
				FROM #TempCenterMain
				LEFT JOIN tblCenterAccts ON tblCenterAccts.uidCenterID = #TempCenterMain.uidCenterID
					AND intGLNumber = @gLNumber
				WHERE Lvl1 IN (
						SELECT strLvl1
						FROM tblCenters
						WHERE (strLvl2 IS NULL)
							AND (bitInactive = 0)
						)
				ORDER BY Lvl1
					,Lvl2
					,Lvl3
					,Lvl4
					,Lvl5
			END
		END
		ELSE
		BEGIN
			IF (@gLNumber = '')
			BEGIN
				SELECT Lvl1
					,Lvl2
					,Lvl3
					,Lvl4
					,Lvl5
					,uidCenterID AS CenterID
					,Cast(1 AS BIT) AS TreeForeColor
				FROM #TempCenterMain
				WHERE Lvl1 IN (
						SELECT strLvl1
						FROM tblCentersLY
						WHERE (strLvl2 IS NULL)
							AND (bitInactive = 0)
						)
				ORDER BY Lvl1
					,Lvl2
					,Lvl3
					,Lvl4
					,Lvl5
			END
			ELSE
			BEGIN
				SELECT Lvl1
					,Lvl2
					,Lvl3
					,Lvl4
					,Lvl5
					,#TempCenterMain.uidCenterID AS CenterID
					,TreeForeColor = CASE 
						WHEN tblCenterAcctsLY.lngId IS NULL
							THEN Cast(0 AS BIT)
						ELSE Cast(1 AS BIT)
						END
				FROM #TempCenterMain
				LEFT JOIN tblCenterAcctsLY ON tblCenterAcctsLY.uidCenterID = #TempCenterMain.uidCenterID
					AND intGLNumber = @gLNumber
				WHERE Lvl1 IN (
						SELECT strLvl1
						FROM tblCentersLY
						WHERE (strLvl2 IS NULL)
							AND (bitInactive = 0)
						)
				ORDER BY Lvl1
					,Lvl2
					,Lvl3
					,Lvl4
					,Lvl5
			END
		END

		DROP TABLE #TempCenter

		DROP TABLE #TempCenterMain
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetCentersAllocatedTransaction]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCentersJournalData] ***********/

/*********** Start [GetCentersAllocatedTransaction] ***********/
CREATE PROCEDURE [dbo].[GetCentersAllocatedTransaction] (
	@JournalEntry BIGINT
	,@IsLastYear BIT
	)
AS
BEGIN
	IF (@IsLastYear = 0)
	BEGIN
		SELECT tblCenterEnt.intLineNum AS LineNumber
			,tblCenters.strLvl1 AS Level1
			,tblCenters.strLvl2 AS Level2
			,tblCenters.strLvl3 AS Level3
			,tblCenters.strLvl4 AS Level4
			,tblCenters.strLvl5 AS Level5
			,SUM(tblCenterEnt.decAmount) AS Amount
			,tblCenterEnt.uidCenterID AS CenterID
		FROM tblCenterEnt
		INNER JOIN tblCenters ON tblCenterEnt.uidCenterID = tblCenters.uidCenterID
		WHERE (tblCenterEnt.lngJourID = @JournalEntry)
		GROUP BY tblCenterEnt.uidCenterID
			,tblCenterEnt.intLineNum
			,tblCenters.strLvl1
			,tblCenters.strLvl2
			,tblCenters.strLvl3
			,tblCenters.strLvl4
			,tblCenters.strLvl5
	END
	ELSE
	BEGIN
		SELECT tblCenterEntLY.intLineNum AS LineNumber
			,tblCentersLY.strLvl1 AS Level1
			,tblCentersLY.strLvl2 AS Level2
			,tblCentersLY.strLvl3 AS Level3
			,tblCentersLY.strLvl4 AS Level4
			,tblCentersLY.strLvl5 AS Level5
			,SUM(tblCenterEntLY.decAmount) AS Amount
			,tblCenterEntLY.uidCenterID AS CenterID
		FROM tblCenterEntLY
		INNER JOIN tblCentersLY ON tblCenterEntLY.uidCenterID = tblCentersLY.uidCenterID
		WHERE (tblCenterEntLY.lngJourID = @JournalEntry)
		GROUP BY tblCenterEntLY.uidCenterID
			,tblCenterEntLY.intLineNum
			,tblCentersLY.strLvl1
			,tblCentersLY.strLvl2
			,tblCentersLY.strLvl3
			,tblCentersLY.strLvl4
			,tblCentersLY.strLvl5
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetCentersJournalData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [CentersEntInsert] ***********/

/*********** Start [GetCentersJournalData] ***********/
CREATE PROCEDURE [dbo].[GetCentersJournalData]
(
	@JournalEntry BIGINT,
	@IsLastYear BIT	
)
AS
BEGIN

	IF(@IsLastYear = 0)
	BEGIN 
		SELECT a.intLineNum AS JournalLineNo
				,a.intGLNumber AS AcctNumber
				,b.strDesc AS AcctDescription
				,b.intAccType AS AccountType
				,a.decAmount AS Amount
			FROM tblJournalEnt AS a
			INNER JOIN tblAccounts AS b ON a.intGLNumber = b.intGLNumber
			WHERE (a.lngJourID = @JournalEntry)
				AND (
					a.intGLNumber IN (
						SELECT intGLNumber
						FROM tblAccounts
						WHERE bitAllowCenters = 1
							AND intAccType <> 3
						)
					)
	END
	ELSE
	BEGIN
		SELECT a.intLineNum AS JournalLineNo
				,a.intGLNumber AS AcctNumber
				,b.strDesc AS AcctDescription
				,b.intAccType AS AccountType
				,a.decAmount AS Amount
			FROM tblJournalEntLY AS a
			INNER JOIN tblAccountsLY AS b ON a.intGLNumber = b.intGLNumber
			WHERE (a.lngJourID = @JournalEntry)
				AND (
					a.intGLNumber IN (
						SELECT intGLNumber
						FROM tblAccountsLY
						WHERE bitAllowCenters = 1
							AND intAccType <> 3
						)
					)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetChangeLotItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetChangeLotItems]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetChangeLotItems]
	@SQPartNumber NVARCHAR(50),
	@SQLotNumber NVARCHAR(50),
	@SQLocName NVARCHAR(50),
	@BinId BIGINT
AS
BEGIN
	SET NOCOUNT ON;

    SELECT decQty FROM tblInvLotExt(NOLOCK) WHERE strPartNumber = @SQPartNumber AND strLotNumber = @SQLotNumber AND strLocName = @SQLocName AND lngBinID = @BinId
END
GO
/****** Object:  StoredProcedure [dbo].[GetCheckIntegrityBinLocations]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCheckIntegrityBinLocationsItems] ***********/

/*********** Start [GetCheckIntegrityBinLocations] ***********/
CREATE PROCEDURE [dbo].[GetCheckIntegrityBinLocations]

@Location AS NVARCHAR(50)

AS
BEGIN
	SELECT 
		tblInvExtBin.strLocName AS 'LocName',
		lngBinID AS 'BinId',
		tblInvLocBin.strBinCode AS 'BinCode',
		ISNULL(SUM(decOnHand), 0) AS 'OnHand'
	FROM tblInvExtBin
		INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
		INNER JOIN tblInv ON tblInv.strPartNumber = tblInvExtBin.strPartNumber
	--WHERE intType = 1
	WHERE intType = 1 AND tblInvExtBin.strLocName = @Location
	GROUP BY tblInvExtBin.strLocName,
		lngBinID,
		tblInvLocBin.strBinCode
	ORDER BY tblInvExtBin.strLocName,
		tblInvLocBin.strBinCode
END
GO
/****** Object:  StoredProcedure [dbo].[GetCheckIntegrityBinLocationsItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCheckIntegrityLocations] ***********/

/*********** Start [GetCheckIntegrityBinLocationsItems] ***********/
CREATE PROCEDURE [dbo].[GetCheckIntegrityBinLocationsItems]
@BinId AS bigint
AS
BEGIN
	SELECT 
		tblInvExtBin.strLocName AS 'LocName',
		lngBinID AS 'BinId',
		tblInvLocBin.strBinCode AS 'BinCode',
		tblInvExtBin.strPartNumber AS 'PartNumber',
		tblInv.strDesc AS 'Description',
		SUM(decOnHand) AS 'OnHand'
	FROM tblInvExtBin
		INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
		INNER JOIN tblInv ON tblInv.strPartNumber = tblInvExtBin.strPartNumber
	--WHERE intType = 1
	WHERE intType = 1 AND lngBinID = @BinId
	GROUP BY tblInvExtBin.strLocName,
		lngBinID,
		tblInvExtBin.strPartNumber,
		tblInvLocBin.strBinCode,
		tblInv.strDesc
	ORDER BY tblInvExtBin.strLocName,
		tblInvLocBin.strBinCode,
		tblInvExtBin.strPartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetCheckIntegrityLocations]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetCheckIntegrityLocations] ***********/
CREATE PROCEDURE [dbo].[GetCheckIntegrityLocations]
AS
BEGIN

IF OBJECT_ID('tempdb..#TempInvExt') IS NOT NULL
    DROP TABLE #TempInvExt

	SELECT 
IDENTITY(int,1,1) ParentId,
strLocName AS 'LocName',
	ISNULL(SUM(decOnHand), 0) AS 'OnHand'
into #TempInvExt FROM tblInvExt
		INNER JOIN tblInv ON tblInv.strPartNumber = tblInvExt.strPartNumber
	WHERE intType = 1
	GROUP BY strLocName

SELECT * from #TempInvExt


	--SELECT 
	--	strLocName AS 'LocName',
	--	ISNULL(SUM(decOnHand), 0) AS 'OnHand'
	--FROM tblInvExt
	--	INNER JOIN tblInv ON tblInv.strPartNumber = tblInvExt.strPartNumber
	--WHERE intType = 1
	--GROUP BY strLocName
END
GO
/****** Object:  StoredProcedure [dbo].[GetClientInfo]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [SelectSalesPerson] ***********/


/*********** Start [GetClientInfo] ***********/
CREATE PROCEDURE [dbo].[GetClientInfo]
(
	@CustomerNumber AS NVARCHAR(50),
	@IsForeign AS BIT
)
AS
BEGIN
	
	-- Optional Fields
	DECLARE @Field1 NVARCHAR(40)
			,@Field2 NVARCHAR(40)
			,@Field3 NVARCHAR(40)
			,@Field4 NVARCHAR(40)
			,@Field5 NVARCHAR(40)
			,@Field6 NVARCHAR(40)
			,@Field7 NVARCHAR(40)
			,@Field8 NVARCHAR(40)
			,@Field9 NVARCHAR(40)
			,@Field10 NVARCHAR(40)
			,@Field11 NVARCHAR(40)
			,@Field12 NVARCHAR(40)
			-- 20190208 branch
			,@Field13 NVARCHAR(40)
			,@Field14 NVARCHAR(40)
			,@Field15 NVARCHAR(40)
			,@Field16 NVARCHAR(40)
			,@Field17 NVARCHAR(40)
			,@Field18 NVARCHAR(40)
			-- 20190208 branch
	SELECT 
		 @Field1 = CASE WHEN strRec1 <> '' THEN strRec1 ELSE 'Field 1' END,
		@Field2 = CASE WHEN strRec2 <> '' THEN strRec2 ELSE 'Field 2' END,
		@Field3 = CASE WHEN strRec3 <> '' THEN strRec3 ELSE 'Field 3' END,
		@Field4 = CASE WHEN strRec4 <> '' THEN strRec4 ELSE 'Field 4' END,
		@Field5 = CASE WHEN strRec5 <> '' THEN strRec5 ELSE 'Field 5' END,
		@Field6 = CASE WHEN strRec6 <> '' THEN strRec6 ELSE 'Field 6' END,
		@Field7 = CASE WHEN strRec7 <> '' THEN strRec7 ELSE 'Field 7' END,
		@Field8 = CASE WHEN strRec8 <> '' THEN strRec8 ELSE 'Field 8' END,
		@Field9 = CASE WHEN strRec9 <> '' THEN strRec9 ELSE 'Field 9' END,
		@Field10 = CASE WHEN strRec10 <> '' THEN strRec10 ELSE 'Field 10' END,
		@Field11 = CASE WHEN strRec11 <> '' THEN strRec11 ELSE 'Field 11' END,
		@Field12 = CASE WHEN strRec12 <> '' THEN strRec12 ELSE 'Field 12' END,
		-- 20190208 branch
		@Field13 = CASE WHEN strRec13 <> '' THEN strRec13 ELSE 'Field 13' END,
		@Field14 = CASE WHEN strRec14 <> '' THEN strRec14 ELSE 'Field 14' END,
		@Field15 = CASE WHEN strRec15 <> '' THEN strRec15 ELSE 'Field 15' END,
		@Field16 = CASE WHEN strRec16 <> '' THEN strRec16 ELSE 'Field 16' END,
		@Field17 = CASE WHEN strRec17 <> '' THEN strRec17 ELSE 'Field 17' END,
		@Field18 = CASE WHEN strRec18 <> '' THEN strRec18 ELSE 'Field 18' END
		-- 20190208 branch
	FROM tblOptFields;

	--SELECT @Field1,
	--@Field2,@Field3,@Field4,@Field5,@Field6,@Field7,@Field8,@Field9,@Field10,@Field11,@Field12;

	-------------------------------------------------

	PRINT @IsForeign;

	SELECT 
		CAST(strNotes AS NVARCHAR(MAX)) AS 'Notes',
		CAST(T1.strCustName AS NVARCHAR(MAX)) AS  'Customer Number',  
		CAST(T1.strCustDesc as NVARCHAR(MAX)) AS 'Customer Name',
		CAST(strContact as NVARCHAR(MAX)) AS 'Contact Person',
		'Address' =  
		CAST(CASE WHEN strStreet1 IS NULL OR strStreet1 = '' THEN '' ELSE strStreet1 END +
		CASE WHEN strStreet2 IS NULL OR strStreet2 = '' THEN '' ELSE CASE WHEN strStreet1 <> '' THEN ', ' ELSE '' END + strStreet2 END +
		CASE WHEN strCity IS NULL OR strCity = '' THEN '' ELSE CASE WHEN coalesce(strStreet1,strStreet2) is not null THEN ', ' ELSE '' END + strCity END +
		CASE WHEN strProvince IS NULL OR strProvince = '' THEN '' ELSE CASE WHEN coalesce(strStreet1,strStreet2,strCity) is not null THEN ', ' ELSE '' END + strProvince  END +
		CASE WHEN strPostal IS NULL OR strPostal = '' THEN '' ELSE CASE WHEN coalesce(strStreet1,strStreet2,strCity,strProvince) is not null THEN ', ' ELSE '' END + strPostal  END +
		CASE WHEN strCountry IS NULL OR strCountry = '' THEN '' ELSE CASE WHEN coalesce(strStreet1,strStreet2,strCity,strProvince,strPostal) is not null THEN ', ' ELSE '' END + strCountry  END AS NVARCHAR(MAX)) ,
		CAST(strPhone as NVARCHAR(MAX)) AS 'Phone Number',
		CAST(strCellPhone as NVARCHAR(MAX)) AS 'Mobile Number',
		CAST(strFax as NVARCHAR(MAX)) AS 'Fax Number',
		CAST(strEmail as NVARCHAR(MAX)) AS 'Main E-Mail Address',
		CAST(strEmailInv as NVARCHAR(MAX)) AS 'Invoice E-Mail Address',
		CAST(strEmailStat as NVARCHAR(MAX)) AS 'Statement E-Mail Address', 
		CAST(strEmailOso as NVARCHAR(MAX)) AS 'Order / Quote E-Mail Address',
		CAST(strCK as NVARCHAR(MAX)) AS 'Company Registration No.',
		CAST(strVAT as NVARCHAR(MAX)) AS 'Tax Number',
		CAST(ISNULL(T3.strDescription,'') as NVARCHAR(MAX)) AS 'Tax',
		CAST(ISNULL(t4.strSalesName, '') AS NVARCHAR(MAX)) AS 'Sales Person',
		CAST(strTerm AS NVARCHAR(MAX)) AS 'Terms',
		CAST(CASE 
			WHEN CAST(intDelMethod as INT) = 0 THEN CAST('Print' AS NVARCHAR(MAX)) 
			WHEN CAST(intDelMethod as INT) = 1 THEN CAST('E-Mail' AS NVARCHAR(MAX))  
			WHEN CAST(intDelMethod as INT) = 2 THEN CAST('Print & E-Mail' AS NVARCHAR(MAX))  
		END AS NVARCHAR(MAX)) AS 'Distribution Method',
		CAST(strCurrName AS NVARCHAR(MAX)) AS 'Currency',
		CAST(strPricelist AS NVARCHAR(MAX)) AS 'Pricelist',
		CAST(strCustCategory AS NVARCHAR(MAX)) AS 'Category',
		CAST(ISNULL(CONVERT(NVARCHAR(MAX),T1.intDept) + ' ' + CONVERT(NVARCHAR(MAX),T5.strDesc),'') AS NVARCHAR(MAX))  AS 'Department',
		CAST(ISNULL((SELECT TOP 1 CT.strLvl1 + CASE WHEN LEN(CT.strLvl2) > 0 THEN '\' + CT.strLvl2 ELSE '' END + CASE WHEN LEN(CT.strLvl3) > 0 THEN '\' + CT.strLvl3 ELSE '' END + CASE WHEN LEN(CT.strLvl4) > 0 THEN '\' + CT.strLvl4 ELSE '' END + CASE 
								WHEN LEN(CT.strLvl5) > 0 THEN	'\' + CT.strLvl5 ELSE '' END FROM tblCustomerCenter CC INNER JOIN tblCenters CT ON CC.uidCenterID = CT.uidCenterID WHERE CC.strCustName = T1.strCustName),'') AS NVARCHAR(MAX)) AS 'Profit Center',
		CAST(ISNULL(strValueBased,'') as NVARCHAR(MAX)) AS 'Contract Pricing',
		CAST(ISNULL(strTenderType,'') as NVARCHAR(MAX)) AS 'Default Tender Type',
		CASE WHEN @IsForeign = 0 THEN  CAST(T2.strCurrSymbol + ' ' + CAST(decBalDue AS NVARCHAR(MAX)) AS NVARCHAR(MAX)) ELSE CAST(T2.strCurrSymbol + ' ' + CAST(decBalDueF AS NVARCHAR(MAX)) AS NVARCHAR(MAX)) END AS 'Balance Due',
		CASE WHEN @IsForeign = 0 THEN  CAST(T2.strCurrSymbol + ' '+ CAST(decYTDPurch AS NVARCHAR(MAX)) AS NVARCHAR(MAX)) ELSE CAST(T2.strCurrSymbol + ' ' + CAST(decYTDPurchF AS NVARCHAR(MAX)) AS NVARCHAR(MAX)) END AS 'Year-To-Date Sales',
		CASE WHEN @IsForeign = 0 THEN  CAST(T2.strCurrSymbol + ' '+ CAST(decOpenOrders AS NVARCHAR(MAX)) AS NVARCHAR(MAX)) ELSE CAST(T2.strCurrSymbol +' '+ CAST(decOpenOrdersF AS NVARCHAR(MAX)) AS NVARCHAR(MAX)) END AS 'Open Orders',
		CAST(CAST(decIntRate AS NVARCHAR(MAX)) + '%' as NVARCHAR(MAX)) AS 'Interest Rate',
		CAST(strCurrSymbol +' '+ CAST(decCreditLimit AS NVARCHAR(MAX)) AS NVARCHAR(MAX))AS 'Credit Limit',
		CAST(CASE WHEN (T1.bitInactive = 1) THEN 
			CAST('Inactive' AS NVARCHAR(MAX)) ELSE 
			CAST('Active' AS NVARCHAR(MAX)) END AS NVARCHAR(MAX)) AS 'Status',
		CAST(ISNULL(strField1,'') AS NVARCHAR(MAX)) AS 'Field 1',
		CAST(ISNULL(strField2,'') AS NVARCHAR(MAX)) AS 'Field 2',
		CAST(ISNULL(strField3,'') AS NVARCHAR(MAX)) AS 'Field 3',
		CAST(ISNULL(strField4,'') AS NVARCHAR(MAX)) AS 'Field 4',
		CAST(ISNULL(strField5,'') AS NVARCHAR(MAX)) AS 'Field 5',
		CAST(ISNULL(strField6,'') AS NVARCHAR(MAX)) AS 'Field 6',
		CAST(ISNULL(strField7,'') AS NVARCHAR(MAX)) AS 'Field 7',
		CAST(ISNULL(strField8,'') AS NVARCHAR(MAX)) AS 'Field 8',
		CAST(ISNULL(strField9,'') AS NVARCHAR(MAX)) AS 'Field 9',
		CAST(ISNULL(strField10,'') AS NVARCHAR(MAX)) AS 'Field 10',
		CAST(ISNULL(strField11,'') AS NVARCHAR(MAX)) AS 'Field 11',
		CAST(ISNULL(strField12,'') AS NVARCHAR(MAX)) AS 'Field 12',

		--CAST(ISNULL(strField13,'') AS NVARCHAR(MAX)) AS 'Field 13',
		--CAST(ISNULL(strField14,'') AS NVARCHAR(MAX)) AS 'Field 14',
		--CAST(ISNULL(strField15,'') AS NVARCHAR(MAX)) AS 'Field 15',
		--CAST(ISNULL(strField16,'') AS NVARCHAR(MAX)) AS 'Field 16',
		--CAST(ISNULL(strField17,'') AS NVARCHAR(MAX)) AS 'Field 17',
		--CAST(ISNULL(strField18,'') AS NVARCHAR(MAX)) AS 'Field 18'

		CAST(CASE WHEN strField13 IS NULL OR strField13 = 0 THEN CAST('No' AS NVARCHAR(MAX)) ELSE CAST('Yes' AS NVARCHAR(MAX)) END AS NVARCHAR(MAX)) AS 'Field 13',
		CAST(CASE WHEN strField14 IS NULL OR strField14 = 0 THEN CAST('No' AS NVARCHAR(MAX)) ELSE CAST('Yes' AS NVARCHAR(MAX)) END AS NVARCHAR(MAX)) AS 'Field 14',
		CAST(CASE WHEN strField15 IS NULL OR strField15 = 0 THEN CAST('No' AS NVARCHAR(MAX)) ELSE CAST('Yes' AS NVARCHAR(MAX)) END AS NVARCHAR(MAX)) AS 'Field 15',
		CAST(CASE WHEN strField16 IS NULL OR strField16 = 0 THEN CAST('No' AS NVARCHAR(MAX)) ELSE CAST('Yes' AS NVARCHAR(MAX)) END AS NVARCHAR(MAX)) AS 'Field 16',
		CAST(CASE WHEN strField17 IS NULL OR strField17 = 0 THEN CAST('No' AS NVARCHAR(MAX)) ELSE CAST('Yes' AS NVARCHAR(MAX)) END AS NVARCHAR(MAX)) AS 'Field 17',
		CAST(CASE WHEN strField18 IS NULL OR strField18 = 0 THEN CAST('No' AS NVARCHAR(MAX)) ELSE CAST('Yes' AS NVARCHAR(MAX)) END AS NVARCHAR(MAX)) AS 'Field 18'

		--	CAST(CASE WHEN (T1.bitInactive = 1) THEN CAST('Inactive' AS NVARCHAR(MAX)) ELSE CAST('Active' AS NVARCHAR(MAX)) END AS NVARCHAR(MAX)) AS 'Status',


	INTO #tmpCustomers 
	FROM tblCustomers T1
	LEFT JOIN tblCurrency T2 ON T1.strCurrency =	T2.strCurrency 
			LEFT JOIN tblTaxCodes T3 ON T1.strTaxCode = T3.strTaxCode 
			LEFT OUTER JOIN tblCustomerSales T4 ON T4.strCustName = T1.strCustName 
			LEFT JOIN tblDepartments T5 ON T1.intDept = T5.intDept 
	WHERE T1.strCustName = @CustomerNumber

	--select * from #tmpCustomers

	SELECT *
	INTO #tmpCustomersUnpivot
	FROM #tmpCustomers
	UNPIVOT
	(
	  Information
	  FOR Customer IN(
	  [Notes],[Customer Number],[Customer Name],[Contact Person],[Address],[Phone Number],[Mobile Number],[Fax Number],[Main E-Mail Address],[Invoice E-Mail Address],[Statement E-Mail Address],[Order / Quote E-Mail Address],[Company Registration No.],[Tax Number],[Tax],[Sales Person],[Terms],[Distribution Method],[Currency],[Pricelist],[Category],[Department],[Profit Center],[Contract Pricing],[Default Tender Type],[Balance Due],[Year-To-Date Sales],[Open Orders],[Interest Rate],[Credit Limit],[Status],[Field 1],[Field 2],[Field 3],[Field 4],[Field 5],[Field 6],[Field 7],[Field 8],[Field 9],[Field 10],[Field 11],[Field 12],[Field 13],[Field 14],[Field 15],[Field 16],[Field 17],[Field 18])
	) AS u  

	DECLARE @strTypeCustomer AS NVARCHAR(50) = (SELECT TOP 1 strCustomers FROM tblCoOptsN )

	UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = CASE @strTypeCustomer WHEN '' THEN Customer ELSE REPLACE(Customer, 'Customer', @strTypeCustomer) END 
	WHERE 
		Customer IN ('Customer Number','Customer Name')
	
	--Dynamic Field Set For Header
	UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = @Field1 
	WHERE 
		Customer = 'Field 1';

	UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = @Field2 
	WHERE 
		Customer = 'Field 2';

	UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = @Field3 
	WHERE 
		Customer = 'Field 3';

	UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = @Field4 
	WHERE 
		Customer = 'Field 4';

	UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = @Field5 
	WHERE 
		Customer = 'Field 5';

	UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = @Field6
	WHERE 
		Customer = 'Field 6';

	UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = @Field7 
	WHERE 
		Customer = 'Field 7';

	UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = @Field8
	WHERE 
		Customer = 'Field 8';

	UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = @Field9 
	WHERE 
		Customer = 'Field 9';

	UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = @Field10 
	WHERE 
		Customer = 'Field 10';

	UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = @Field11 
	WHERE 
		Customer = 'Field 11';

	UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = @Field12 
	WHERE 
		Customer = 'Field 12';


		UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = @Field13
	WHERE 
		Customer = 'Field 13';

		UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = @Field14
	WHERE 
		Customer = 'Field 14';

		UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = @Field15
	WHERE 
		Customer = 'Field 15';

		UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = @Field16
	WHERE 
		Customer = 'Field 16';

		UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = @Field17
	WHERE 
		Customer = 'Field 17';

		UPDATE 
		#tmpCustomersUnpivot 
	SET 
		Customer = @Field18
	WHERE 
		Customer = 'Field 18';

	SELECT Customer,Information FROM #tmpCustomersUnpivot
END
GO
/****** Object:  StoredProcedure [dbo].[GetCOG]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetDataFromInvInvExt] ***********/

/*********** Start [GetCOG] ***********/
CREATE PROCEDURE [dbo].[GetCOG]
    (
      @partNumber nvarchar(100) ,
      @locName nvarchar(20)
    )
AS
	BEGIN
	SELECT CASE 
			WHEN IE.decOnHand = 0
				OR IE.decValue = 0
				THEN 0
			ELSE IE.decValue / IE.decOnHand
			END
	FROM tblInvExt IE
	WHERE IE.strPartNumber = @partNumber
		AND IE.strLocName = @locName 
END
GO

/****** Object:  StoredProcedure [dbo].[GetCollectionLettersList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetAllCustomerInfo] ***********/

/*********** Start [GetCollectionLettersList] ***********/
CREATE PROCEDURE [dbo].[GetCollectionLettersList]
(
@AsAt datetime = NULL
)
AS
BEGIN 

	CREATE TABLE #TempCL (
	[strCustName] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[strCustDesc] [nvarchar] (200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[decTotalDue] [money] NOT NULL,
	[decCurrent] [money] NOT NULL,
	[decPeriod2] [money] NOT NULL,
	[decPeriod3] [money] NOT NULL,
	[decPeriod4] [money] NOT NULL,
	[decPeriod5] [money] NOT NULL)

	DECLARE @SQPeriod1 int,
			@SQPeriod2 int,
			@SQPeriod3 int

	SELECT	@SQPeriod1 = intRecPeriod1, 
			@SQPeriod2 = intRecPeriod2, 
			@SQPeriod3 = intRecPeriod3 
	FROM tblCoOpts

	INSERT INTO #TempCL
	SELECT	CUST.strCustName,
			CUST.strCustDesc,
			CASE DTL.bitIsForeign WHEN 0 THEN SUM(DTL.decAmount) ELSE SUM(DTL.decAmountF) END AS decTotalDue,
			ISNULL(SUM(CASE WHEN DATEDIFF(DAY, HDR.dteDueDate, @AsAt) <= 0 THEN CASE DTL.bitIsForeign WHEN 0 THEN DTL.decAmount ELSE DTL.decAmountF END ELSE 0 END), 0) AS decCurrent,
			ISNULL(SUM(CASE WHEN DATEDIFF(DAY, HDR.dteDueDate, @AsAt) > 0 AND DATEDIFF(DAY, HDR.dteDueDate, @AsAt) <= @SQPeriod1 THEN CASE DTL.bitIsForeign WHEN 0 THEN DTL.decAmount ELSE DTL.decAmountF END ELSE 0 END), 0) AS decPeriod2,
			ISNULL(SUM(CASE WHEN DATEDIFF(DAY, HDR.dteDueDate, @AsAt) > @SQPeriod1 AND DATEDIFF(DAY, HDR.dteDueDate, @AsAt) <= @SQPeriod2 THEN CASE DTL.bitIsForeign WHEN 0 THEN DTL.decAmount ELSE DTL.decAmountF END ELSE 0 END), 0) AS decPeriod3,
			ISNULL(SUM(CASE WHEN DATEDIFF(DAY, HDR.dteDueDate, @AsAt) > @SQPeriod2 AND DATEDIFF(DAY, HDR.dteDueDate, @AsAt) <= @SQPeriod3 THEN CASE DTL.bitIsForeign WHEN 0 THEN DTL.decAmount ELSE DTL.decAmountF END ELSE 0 END), 0) AS decPeriod4,
			ISNULL(SUM(CASE WHEN DATEDIFF(DAY, HDR.dteDueDate, @AsAt) > @SQPeriod3 THEN CASE DTL.bitIsForeign WHEN 0 THEN DTL.decAmount ELSE DTL.decAmountF END ELSE 0 END), 0) AS decPeriod5
	FROM tblCustTrans HDR 
	INNER JOIN tblCustTransDT DTL ON HDR.lngCustTrID = DTL.lngCustTrID 
	INNER JOIN tblCustomers CUST ON HDR.strCustName = CUST.strCustName 
	WHERE (CUST.decBalDue > 0 OR CUST.decBalDueF > 0)
	AND (DTL.bitReversed = 0)
	AND (DTL.dteJournalDate <= @AsAt)
	GROUP BY CUST.strCustName,
			 CUST.strCustDesc,
			 HDR.dteDueDate, 
			 DTL.bitIsForeign

	SELECT	strCustName AS CustName,
			strCustDesc AS CustDesc,
			SUM(ISNULL(decTotalDue,0)) AS TotalDue,
			SUM(ISNULL(decCurrent,0)) AS [Current],
			SUM(ISNULL(decPeriod2,0)) AS Period2,
			SUM(ISNULL(decPeriod3,0)) AS Period3,
			SUM(ISNULL(decPeriod4,0)) AS Period4,
			SUM(ISNULL(decPeriod5,0)) AS Period5
	FROM #TempCL
	GROUP BY strCustName,
			 strCustDesc
	HAVING SUM(ISNULL(decTotalDue,0)) > 0
	ORDER BY strCustName,
			 strCustDesc

	DROP TABLE #TempCL
END
GO
/****** Object:  StoredProcedure [dbo].[GetCombinedPriceList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[GetCombinedPriceList] (@dteStartDate datetime, @dteEndDate datetime)

--SET @dteEndDate = '12/31/2016'
--SET @dteStartDate ='03/01/2014' ''PL_InvSortDescription
as Begin 

SELECT inv.strPartNumber as PartNumber,
       inv.strDesc as 'Desc',
       plist.strPricelist as Pricelist,
       plist.uidPriceBasedID as PriceBasedID,
       InvPrice.decSelling as Selling,
	   (InvPrice.decSelling/inv.decSellFromStock)  as SellFromStock

FROM tblInv AS inv,
     tblPriceListsByDate AS plist,
     tblInvPrice AS InvPrice
WHERE (plist.bitInactive = 0)
  AND (plist.dteStartDate = @dteStartDate
       AND plist.dteFinishDate = @dteEndDate)
  AND ((inv.intType <> 5)
       AND (inv.bitInactive = 0))
  AND ( InvPrice.strPartNumber = inv.strPartNumber
       AND InvPrice.strPricelist = plist.strPricelist
       AND InvPrice.uidPriceBasedID = plist.uidPriceBasedID )
  AND (inv.bitOtherCmp = 0)
ORDER BY inv.strPartNumber


end

GO
/****** Object:  StoredProcedure [dbo].[GetCompanyData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [ReportInvoiceDoc] ***********/

/*********Start [GetCompanyData]****************/
CREATE PROCEDURE [dbo].[GetCompanyData]
AS
BEGIN
	SELECT [strName] AS Name
      ,[strStreet1] AS Street1
      ,[strStreet2] AS Street2
      ,[strCity] AS City
      ,[strProvince] AS Province
      ,[strPostal] AS Postal
      ,[strCountry] AS Country
      ,[strPhone1] AS Phone1
      ,[strPhone2] AS Phone2
      ,[strFax] AS Fax
      ,[strEmail] AS Email
      ,[strCK] AS CK
      ,[strVAT] AS VAT
      ,[dteLYStarted] AS LYStarted
      ,[dteLYEnded] AS LYEnded
      ,[dteYearStarts] AS YearStarts
      ,[dteYearEnds] AS YearEnds
      ,[dteEarliestTran] AS EarliestTran
      ,[dtePeriodClose] AS PeriodClose
      ,[strCountryCode] AS CountryCode
      ,[imgLogo] AS [Logo] 
      ,[strCoSerial] AS CoSerial
      ,[strCloudUsername] AS CloudUserName
      ,[strCloudPassword] AS CloudPassword
  FROM [dbo].[tblCompany]
END
GO
/****** Object:  StoredProcedure [dbo].[GetCompanyUsers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetCompanyUsers] 
AS
BEGIN
DECLARE @TmpTable TABLE
	(
		SPID NVARCHAR(MAX),
		ecid NVARCHAR(MAX),
		[Status] NVARCHAR(MAX),	
		LoginName NVARCHAR(MAX),
		MachineName NVARCHAR(MAX),
		blk NVARCHAR(MAX),
		DBName NVARCHAR(MAX),			
		CmdStatus NVARCHAR(MAX),
		request_id NVARCHAR(MAX)
	)	

INSERT INTO @TmpTable EXECUTE sp_who
SELECT SPID, [Status], LoginName, MachineName, DBName, CmdStatus FROM @TMpTable

END
GO
/****** Object:  StoredProcedure [dbo].[GetContactDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [UpdateCRMActionCustomerNote] (CRM)**********/

/********* Start [GetContactDetails] (CRM)**********/

CREATE Procedure [dbo].[GetContactDetails]
AS
Begin
Select tblVendorContacts.strName As [Name]
	,tblVendorContacts.strEmail as EmailId
	,('Vendor ('+tblVendors.strVendDesc+'_'+tblVendors.strVendName+')') as ContactFrom  
	from tblVendorContacts inner join tblVendors on tblVendorContacts.strVendName=tblVendors.strVendName
Union All
Select tblCustomerContacts.strName As [Name]
	,tblCustomerContacts.strEmail As EmailId
	,('Customer ('+tblCustomers.strCustDesc+'_'+tblCustomers.strCustName+')') as ContactFrom   
	from tblCustomerContacts inner join tblCustomers on tblCustomerContacts.strCustName=tblCustomers.strCustName
End
GO
/****** Object:  StoredProcedure [dbo].[GetContainerDataReport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [ImportPastelVendors]*****************************/

/****** Start [GetContainerDataReport] ******/

CREATE PROCEDURE [dbo].[GetContainerDataReport]
(
	@DocNumber AS NVARCHAR(200)
)
AS
BEGIN
	 
SELECT [strCntDocID]
      ,[dteSystemDate]
      ,[dteJournalDate]
      ,[dteRequired]
      ,[strUserName]
      ,[strCustName]
      ,[strSoldTo]
      ,[strShipTo]
      ,[strReference]
      ,[strType]
      ,[bitHistoryTrans]
      ,[strNotes]
      ,[strTrackingNo]
      ,[strWayBillNo]
      ,[bitPrinted]
      ,[bitEmailed]
      ,[decTotalValue]
      ,[decVolW]
      ,[decVolH]
      ,[decVolD]
      ,[decCuVol]
      ,[decWeight]
      ,[bitCustMultiple]
      ,[strDelRouteCode]
      ,[strDelVehicleCode]
      ,[strDelDriverCode]
  FROM [dbo].[tblContainers]
   WHERE strCntDocID = @DocNumber   
END
GO
/****** Object:  StoredProcedure [dbo].[GetContainerMultiCustomer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------------------'
CREATE PROCEDURE [dbo].[GetContainerMultiCustomer]
(
	@ShpDocID AS VARCHAR(100)
)
AS
BEGIN
	SELECT DISTINCT tblShipmentsDT.strCustName AS CustomerNumber
		,tblCustomers.strCustDesc AS CustomerName
		,tblShipmentsDT.strSoldTo AS SoldTO
		,tblShipmentsDT.strShipTo AS ShipTo
		,tblShipmentsDT.strNotes AS Notes
	FROM tblShipmentsDT
	INNER JOIN tblCustomers ON tblShipmentsDT.strCustName = tblCustomers.strCustName
	WHERE tblShipmentsDT.strShpDocID = @ShpDocID
	ORDER BY tblShipmentsDT.strCustName
END
GO
/****** Object:  StoredProcedure [dbo].[GetContainerPickerData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetContainerPickerData] (
	@ID NVARCHAR(100)
	,@IsCustomer BIT
	,@IsAdjusting BIT = 0
	,@AdjustingDocnumber NVARCHAR(100) = NULL
	,@IsBPToolsMode BIT
	,@UserName AS NVARCHAR(100)
	)
AS
BEGIN
	IF (@IsAdjusting = 0)
	BEGIN
		IF (@IsCustomer = 1)
		BEGIN
			SELECT strShpDocID AS ShpDocID
				,decTotalValue AS TotalValue
				,decVolW AS Width
				,decVolH AS Height
				,decVolD AS Depth
				,decCuVol AS CubeVolume
				,decWeight AS [Weight]
				,dteRequired AS [Required]
				,tblShipments.strCustName AS CustomerName
				,strSoldTo AS SoldTo
				,strShipTo AS ShipTo
				,strReference AS Reference
				,tblShipments.strNotes AS Notes
				,bitCustMultiple AS IsCustMultiple
				,tblDeliveryRoutes.strDelRouteCode AS DeliveryRouteCode
				,tblDeliveryRoutes.strDelRouteDesc AS DeliveryRouteDesc
				,tblDeliveryVehicles.strDelVehicleCode AS DeliveryVehicleCode
				,tblDeliveryVehicles.strDelVehicleDesc AS DeliveryVehicleDesc
				,tblDeliveryDrivers.strDelDriverCode AS DeliveryDriverCode
				,tblDeliveryDrivers.strDelDriverDesc AS DeliveryDriverDesc
			FROM tblShipments
			LEFT JOIN tblDeliveryRoutes ON tblShipments.strDelRouteCode = tblDeliveryRoutes.strDelRouteCode
			LEFT JOIN tblDeliveryVehicles ON tblShipments.strDelVehicleCode = tblDeliveryVehicles.strDelVehicleCode
			LEFT JOIN tblDeliveryDrivers ON tblShipments.strDelDriverCode = tblDeliveryDrivers.strDelDriverCode
			INNER JOIN tblCustomers ON tblShipments.strCustName = tblCustomers.strCustName
			WHERE (bitHistoryTrans = 0)
				AND (tblShipments.strCustName = @ID)
				AND (
					strShpDocID NOT IN (
						SELECT strShpDocID
						FROM tblContainersDT
						)
					)
				AND (
					@IsBPToolsMode = 1
					OR tblCustomers.strCustCategory IN (
						SELECT tblCustomerCat.strCustCategory
						FROM tblCustomerCat
						LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
						WHERE ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) > 0
								AND tblCustomerCatSec.strUserName = @UserName
								)
						)
					)
			ORDER BY strShpDocID
		END
		ELSE
		BEGIN
			SELECT strShpDocID AS ShpDocID
				,decTotalValue AS TotalValue
				,decVolW AS Width
				,decVolH AS Height
				,decVolD AS Depth
				,decCuVol AS CubeVolume
				,decWeight AS [Weight]
				,dteRequired AS [Required]
				,tblShipments.strCustName AS CustomerName
				,strSoldTo AS SoldTo
				,strShipTo AS ShipTo
				,strReference AS Reference
				,tblShipments.strNotes AS Notes
				,bitCustMultiple AS IsCustMultiple
				,tblDeliveryRoutes.strDelRouteCode AS DeliveryRouteCode
				,tblDeliveryRoutes.strDelRouteDesc AS DeliveryRouteDesc
				,tblDeliveryVehicles.strDelVehicleCode AS DeliveryVehicleCode
				,tblDeliveryVehicles.strDelVehicleDesc AS DeliveryVehicleDesc
				,tblDeliveryDrivers.strDelDriverCode AS DeliveryDriverCode
				,tblDeliveryDrivers.strDelDriverDesc AS DeliveryDriverDesc
			FROM tblShipments
			LEFT JOIN tblDeliveryRoutes ON tblShipments.strDelRouteCode = tblDeliveryRoutes.strDelRouteCode
			LEFT JOIN tblDeliveryVehicles ON tblShipments.strDelVehicleCode = tblDeliveryVehicles.strDelVehicleCode
			LEFT JOIN tblDeliveryDrivers ON tblShipments.strDelDriverCode = tblDeliveryDrivers.strDelDriverCode
			INNER JOIN tblCustomers ON tblShipments.strCustName = tblCustomers.strCustName
			WHERE (bitHistoryTrans = 0)
				AND (tblShipments.strDelRouteCode = @ID)
				AND (
					strShpDocID NOT IN (
						SELECT strShpDocID
						FROM tblContainersDT
						)
					)
				AND (
					@IsBPToolsMode = 1
					OR tblCustomers.strCustCategory IN (
						SELECT tblCustomerCat.strCustCategory
						FROM tblCustomerCat
						LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
						WHERE ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) > 0
								AND tblCustomerCatSec.strUserName = @UserName
								)
						)
					)
			ORDER BY strShpDocID
		END
	END
	ELSE
	BEGIN
		IF (@IsCustomer = 1)
		BEGIN
			SELECT strShpDocID AS ShpDocID
				,decTotalValue AS TotalValue
				,decVolW AS Width
				,decVolH AS Height
				,decVolD AS Depth
				,decCuVol AS CubeVolume
				,decWeight AS [Weight]
				,dteRequired AS [Required]
				,tblShipments.strCustName AS CustomerName
				,strSoldTo AS SoldTo
				,strShipTo AS ShipTo
				,strReference AS Reference
				,tblShipments.strNotes AS Notes
				,bitCustMultiple AS IsCustMultiple
				,tblDeliveryRoutes.strDelRouteCode AS DeliveryRouteCode
				,tblDeliveryRoutes.strDelRouteDesc AS DeliveryRouteDesc
				,tblDeliveryVehicles.strDelVehicleCode AS DeliveryVehicleCode
				,tblDeliveryVehicles.strDelVehicleDesc AS DeliveryVehicleDesc
				,tblDeliveryDrivers.strDelDriverCode AS DeliveryDriverCode
				,tblDeliveryDrivers.strDelDriverDesc AS DeliveryDriverDesc
			FROM tblShipments
			LEFT JOIN tblDeliveryRoutes ON tblShipments.strDelRouteCode = tblDeliveryRoutes.strDelRouteCode
			LEFT JOIN tblDeliveryVehicles ON tblShipments.strDelVehicleCode = tblDeliveryVehicles.strDelVehicleCode
			LEFT JOIN tblDeliveryDrivers ON tblShipments.strDelDriverCode = tblDeliveryDrivers.strDelDriverCode
			INNER JOIN tblCustomers ON tblShipments.strCustName = tblCustomers.strCustName
			WHERE (bitHistoryTrans = 0)
				AND (tblShipments.strCustName = @ID)
				AND (
					(
						strShpDocID NOT IN (
							SELECT strShpDocID
							FROM tblContainersDT
							)
						)
					OR (
						strShpDocID IN (
							SELECT strShpDocID
							FROM tblContainersDT
							WHERE strCntDocID = @AdjustingDocnumber
							)
						)
					)
				AND (
					@IsBPToolsMode = 1
					OR tblCustomers.strCustCategory IN (
						SELECT tblCustomerCat.strCustCategory
						FROM tblCustomerCat
						LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
						WHERE ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) > 0
								AND tblCustomerCatSec.strUserName = @UserName
								)
						)
					)
			ORDER BY strShpDocID
		END
		ELSE
		BEGIN
			SELECT strShpDocID AS ShpDocID
				,decTotalValue AS TotalValue
				,decVolW AS Width
				,decVolH AS Height
				,decVolD AS Depth
				,decCuVol AS CubeVolume
				,decWeight AS [Weight]
				,dteRequired AS [Required]
				,tblShipments.strCustName AS CustomerName
				,strSoldTo AS SoldTo
				,strShipTo AS ShipTo
				,strReference AS Reference
				,tblShipments.strNotes AS Notes
				,bitCustMultiple AS IsCustMultiple
				,tblDeliveryRoutes.strDelRouteCode AS DeliveryRouteCode
				,tblDeliveryRoutes.strDelRouteDesc AS DeliveryRouteDesc
				,tblDeliveryVehicles.strDelVehicleCode AS DeliveryVehicleCode
				,tblDeliveryVehicles.strDelVehicleDesc AS DeliveryVehicleDesc
				,tblDeliveryDrivers.strDelDriverCode AS DeliveryDriverCode
				,tblDeliveryDrivers.strDelDriverDesc AS DeliveryDriverDesc
			FROM tblShipments
			LEFT JOIN tblDeliveryRoutes ON tblShipments.strDelRouteCode = tblDeliveryRoutes.strDelRouteCode
			LEFT JOIN tblDeliveryVehicles ON tblShipments.strDelVehicleCode = tblDeliveryVehicles.strDelVehicleCode
			LEFT JOIN tblDeliveryDrivers ON tblShipments.strDelDriverCode = tblDeliveryDrivers.strDelDriverCode
			INNER JOIN tblCustomers ON tblShipments.strCustName = tblCustomers.strCustName
			WHERE (bitHistoryTrans = 0)
				AND (tblShipments.strDelRouteCode = @ID)
				AND (
					(
						strShpDocID NOT IN (
							SELECT strShpDocID
							FROM tblContainersDT
							)
						)
					OR (
						strShpDocID IN (
							SELECT strShpDocID
							FROM tblContainersDT
							WHERE strCntDocID = @AdjustingDocnumber
							)
						)
					)
				AND (
					@IsBPToolsMode = 1
					OR tblCustomers.strCustCategory IN (
						SELECT tblCustomerCat.strCustCategory
						FROM tblCustomerCat
						LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
						WHERE ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) > 0
								AND tblCustomerCatSec.strUserName = @UserName
								)
						)
					)
			ORDER BY strShpDocID
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetContractBillData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvUpsellItems] ***********/

/*********** Start [GetContractBillData] ***********/
CREATE PROCEDURE [dbo].[GetContractBillData]
 @DocNumber varchar(100),
 @IsContract AS BIT
AS BEGIN 
SELECT strContDocID AS ContDocID,
       dteSystemDate AS SystemDate,
       dteJournalDate AS JournalDate,
       strUserName AS UserName,
       strCustName AS CustName,
       strContractTo AS ContractTo,
       strReference AS Reference,
       decSubTotal AS SubTotal,
       decTotal AS Total,
       strNotes AS Notes,
       strOrdDocID AS OrderDocumentID,
       bitPrinted AS Printed,
       bitEmailed AS Emailed,
       strSalesName AS SalesName,
       strAddInfo AS AddInfo,
       strCurrency AS Currency,
       strTerm AS Term,
       strField1 AS Field1,
       strField2 AS Field2,
       strField3 AS Field3,
       strField4 AS Field4,
       strField5 AS Field5,
       strField6 AS Field6,
       strField7 AS Field7,
       strField8 AS Field8,
       strField9 AS Field9,
       strField10 AS Field10,
       strField11 AS Field11,
       strField12 AS Field12,
       dtpField13 AS Field13,
       dtpField14 AS Field14,
       strSubFormated AS SubFormated,
       strTotFormatted AS TotFormatted,
       strVATFormatted AS VATFormatted,
       decDiscPerc AS DiscPerc,
       decDiscAmt AS DiscAmt,
       decDiscAmtF AS DiscAmtF,
       strDiscFormatted AS DiscFormatted,
       strPaidBy AS PaidBy,
       strDelMethodCode AS DelMethodCode,
       strContBillType AS ContBillType,
       blnAllowAnnualIncrease AS AllowAnnualIncrease,
       intContractPriceIncrease AS ContractPriceIncrease,
       dtpIncreaseStartDate AS IncreaseStartDate,
       bitInactive AS Inactive,
       strShipTo AS ShipTo,
       decVAT AS VAT,
       bitIsForeign AS IsForeign,
       dtpLastProcessDate AS LastProcessDate,
       intTotalProcessCount AS TotalProcessCount,
       intRevisionNumber AS RevisionNumber,
       decSubTotalF AS SubF,
       decVATF AS VATF,
       decTotalF AS TotalF,
       decExchange AS Exchange,
	   decTotalWeight AS TotalWeight,
	   decTotalVolWeight AS TotalVolWeight,
	   decDeliveryCost AS DeliveryCost,
	   decDeliveryCostF AS DeliveryCostForeign,
	   strDeliveryCostFormatted AS DeliveryCostFormatted,
	   strDepartment AS Department
FROM tblContractBill
WHERE (@IsContract=1 Or strContDocID = @DocNumber)  
END
GO
/****** Object:  StoredProcedure [dbo].[GetContractBillDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateContractBillDTData] ***********/

/*********** Start [GetContractBillDetails] ***********/
CREATE PROCEDURE [dbo].[GetContractBillDetails]
@ContDocID AS NVARCHAR(50)
AS 
BEGIN
SELECT tblContractBillTypes.lngID AS ID
	,tblContractBillTypes.strContBillType AS ContBillType
	,tblContractBillTypes.strContBillTypeDesc AS ContBillTypeDesc
	,tblContractBillTypes.intChargeonFreq AS ChargeonFreq
	,tblContractBillTypes.intChargeonFreqType AS ChargeonFreqType
	,tblContractBillTypes.intChargeonDay AS ChargeonDay
	,tblContractBillTypes.bitChargeImmediate AS IsChargeImmediate
	,tblContractBillTypes.bitLimitOccourance AS IsLimitOccurrence
	,tblContractBillTypes.intLimitOccouranceTimes AS LimitOccurrenceTimes
	,tblContractBillTypes.dteSystemDate AS SystemDate
	,tblContractBillTypes.bitInactive AS IsInactive
FROM tblContractBillDT
INNER JOIN tblContractBillTypes ON tblContractBillDT.strContBillType = tblContractBillTypes.strContBillType
WHERE strContDocID = @ContDocID
END
GO
/****** Object:  StoredProcedure [dbo].[GetContractBillDTData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetContractBillData] ***********/

/*********** Start [GetContractBillDTData] ***********/
CREATE PROCEDURE [dbo].[GetContractBillDTData]
(
 @DocNumber varchar(100), 
 @GPCalcInvLevel AS INT,
 @GPCalcLPP AS INT,
 @LocName AS NVARCHAR(10)
)
AS BEGIN

SELECT strContDocID AS ContDocID,
       tblContractBillDT.intLineNo AS [LineNo],
       tblContractBillDT.strPartNumber AS PartNumber,
       strLocation AS Location,
       strPartDesc AS PartDesc,
       decQty AS Qty,
       strUnit AS Unit,
       tblContractBillDT.intType AS [Type],
       decPriceEaExc AS Price,
       decLineTotExc AS LineTot,
       decLineTaxAmt AS LineTaxAmt,
       strSalesName AS SalesName,
       strTaxCode AS TaxCode,
       strCurrency AS Currency,
       bitIsForeign AS IsForeign,
       decLineDiscPerc AS LineDiscPerc,
       decLineDiscAmt AS LineDiscAmt,
       decLineDiscAmtF AS LineDiscAmtF,
       bitDiscountTax AS DiscountTax,
       strContBillType AS ContBillType,
       blnAllowAnnualIncrease AS AllowAnnualIncrease,
       intContractPriceIncrease AS ContractPriceIncrease,
       dtpIncreaseStartDate AS IncreaseStartDate,
       dtpSetUpDate AS SetUpDate,
       dtpActivationDate AS ActivationDate,
       dtpTerminationDate AS TerminationDate,
       dtpExpirationDate AS ExpirationDate,
       dtpBillingSchduleStart AS BillingSchduleStart,
       strBillingFrequncy AS BillingFrequncy,
       dtpLastBillDate AS LastBillDate,
       dtpNextBillDate AS NextBillDate,
       decStockQty AS StockQty,
       tblContractBillDT.strStockUnit AS StockUnit,
       dtpNextInvoiceDate AS NextInvoiceDate,
       uidTransactionFieldID,
       decPriceEaInc AS PriceEaInc,
       decLineTotInc AS LineTotInc,
       imgTaxObj As TaxObj,
       decPriceEaExcF,
       decLineTotExcF,
       decLineTaxAmtF AS LineTaxAmtF,
       decEaIncTaxF as EaIncTaxf,
       decTotIncTaxF as TotIncTaxf,
	   decCost as BuyoutCost, 
	   tblInv.decMass AS ItemWeight, 
	   tblInv.decVolumetricWeight AS VolumetricWeight, 
	   tblInv.strUnitOfMeasure AS UnitOfMeasure,
	   ISNULL(tblInvoiceDocDTPrj.strProjNumber, '') AS ProjNumber
	   ,tblInv.bitInvSerialType AS IsInvSerialType
	   ,CASE 
		WHEN tblInv.intType = 4
			THEN tblInv.decStandardCost
		ELSE CASE @GPCalcLPP
				WHEN 0
					THEN tblInv.decLastPPUnit
				WHEN 1
					THEN tblInv.decStandardCost
				WHEN 2
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblContractBillDT.strLocation
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblContractBillDT.strLocation
															), 0)
													THEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = tblContractBillDT.strLocation
																), 0)
												ELSE CASE 
														WHEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblContractBillDT.strLocation
																	), 0) = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblContractBillDT.strLocation
																	), 0)
														END
												END
										END
							WHEN 1
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
												ELSE CASE 
														WHEN CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
														END
												END
										END
							ELSE tblInv.decLastPPUnit
							END
				WHEN 3
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblContractBillDT.strLocation
													), 0) = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblContractBillDT.strLocation
													), 0)
										END
							WHEN 1
								THEN CASE 
										WHEN CASE tblInv.decSumOnHand
												WHEN 0
													THEN 0
												ELSE tblInv.decSumValue / tblInv.decSumOnHand
												END = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
										END
							ELSE tblInv.decLastPPUnit
							END
				ELSE tblInv.decLastPPUnit
				END
		END AS GPCalc	
		,tblInv.strUnitOfMeasure AS UnitOfMeasure
		,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist
		,tblInv.bitAutoBuild AS IsAutoBuild 
		,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT SUM(INV.decLastPPUnit)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						WHERE BOM.strPartNumber = tblInv.strPartNumber
						), 0)
			END AS AutoBuildLRC
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT SUM(INV.decStandardCost)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						WHERE BOM.strPartNumber = tblInv.strPartNumber
						), 0)
			END AS AutoBuildSC
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT ISNULL(SUM(CASE EXT.decOnHand
										WHEN 0
											THEN 0
										ELSE EXT.decValue / EXT.decOnHand
										END), 0)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
						WHERE BOM.strPartNumber = tblInv.strPartNumber
							AND EXT.strLocName = @LocName
						), 0)
			END AS AutoBuildMALocDef
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT ISNULL(SUM(CASE EXT.decOnHand
										WHEN 0
											THEN 0
										ELSE EXT.decValue / EXT.decOnHand
										END), 0)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
							AND BOM.strLocName = EXT.strLocName
						WHERE BOM.strPartNumber = tblInv.strPartNumber
						), 0)
			END AS AutoBuildMALocation
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT ISNULL(SUM(CASE INV.decSumOnHand
										WHEN 0
											THEN 0
										ELSE INV.decSumValue / INV.decSumOnHand
										END), 0)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						WHERE BOM.strPartNumber = tblInv.strPartNumber
						), 0)
			END AS AutoBuildMAMain
FROM tblContractBillDT
INNER JOIN tblInv ON tblContractBillDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblInvoiceDocDTPrj ON tblContractBillDT.strContDocID = tblInvoiceDocDTPrj.strInvDocID
	AND tblContractBillDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblContractBillDT.strContDocID = @DocNumber
ORDER BY tblContractBillDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetContractBillDTDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/************End [InvSerialExtUpdate]*******************/

/***********Start [GetContractBillDTDetails]********************/
CREATE PROCEDURE [dbo].[GetContractBillDTDetails]
 (
	@DocNumber varchar(100)	
 )
AS BEGIN 
SELECT strContDocID AS ContDocID
	,intLineNo AS [LineNo]
	,tblContractBillDT.strPartNumber AS PartNumber
	,strLocation AS Location
	,strPartDesc AS PartDesc
	,decQty AS Qty
	,strUnit AS Unit
	,tblContractBillDT.intType AS [Type]
	,CASE 
		WHEN bitIsForeign = 1
			THEN tblcontractBillDt.decEaIncTaxF
		ELSE tblContractBillDT.decPriceEaInc
		END AS Price
	,CASE 
		WHEN bitIsForeign = 1
			THEN tblContractBillDT.decTotIncTaxF
		ELSE tblContractBillDT.decLineTotInc
		END AS LineTot
	,CASE 
		WHEN bitIsForeign = 1
			THEN tblContractBillDT.decLineTaxAmtF
		ELSE tblContractBillDT.decLineTaxAmt
		END AS LineTaxAmt
	,strSalesName AS SalesName
	,strTaxCode AS TaxCode
	,strCurrency AS Currency
	,bitIsForeign AS IsForeign
	,decLineDiscPerc AS LineDiscPerc
	,CASE 
		WHEN bitIsForeign = 1
			THEN tblContractBillDT.decLineDiscAmtF
		ELSE tblContractBillDT.decLineDiscAmt
		END AS LineDiscAmt
	,bitDiscountTax AS DiscountTax
	,strContBillType AS ContBillType
	,blnAllowAnnualIncrease AS AllowAnnualIncrease
	,intContractPriceIncrease AS ContractPriceIncrease
	,dtpIncreaseStartDate AS IncreaseStartDate
	,dtpSetUpDate AS SetUpDate
	,dtpActivationDate AS ActivationDate
	,dtpTerminationDate AS TerminationDate
	,dtpExpirationDate AS ExpirationDate
	,dtpBillingSchduleStart AS BillingSchduleStart
	,strBillingFrequncy AS BillingFrequncy
	,dtpLastBillDate AS LastBillDate
	,dtpNextBillDate AS NextBillDate
	,tblInv.bitInvExtDescOnSI AS IsShowExtendedDesc
FROM tblContractBillDT
INNER JOIN tblInv ON tblContractBillDT.strPartNumber = tblInv.strPartNumber
WHERE tblContractBillDT.strContDocID = @DocNumber
ORDER BY tblContractBillDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetContractBillEnquiriesSelect]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetAmountForHPContract] ***********/

/*********** Start [GetContractBillEnquiriesSelect] ***********/
CREATE PROCEDURE [dbo].[GetContractBillEnquiriesSelect]
(
	@CustomerNumber nvarchar(50)
)
AS
BEGIN
	SELECT TCB.strContDocID AS ContDocID,
       TCB.strContBillType AS ContBillType,
       TCBDT.strPartNumber AS PartNumber,
       TCBDT.strPartDesc AS PartDesc,
       TCBDT.strLocation AS Location,
       TCB.decSubTotal AS SubTotal,
       TCBDT.dtpActivationDate AS ActivationDate,
       TCBDT.strBillingFrequncy AS BillingFrequncy,
       TCBDT.dtpIncreaseStartDate AS IncreaseStartDate,
       TCBDT.intContractPriceIncrease AS ContractPriceIncrease,
       TCBDT.dtpNextBillDate AS NextBillDate,
       TCBDT.dtpLastBillDate AS LastBillDate,
       CASE
           WHEN (TCB.bitInactive = 1) THEN 'Inactive'
           ELSE 'Active'
       END AS [Status],
       TCB.strNotes AS Notes
	FROM tblContractBill TCB
	INNER JOIN tblContractBillDT TCBDT ON TCB.strContDocID=TCBDT.strContDocID
	LEFT JOIN tblCustomers TC ON TC.strCustName=TCB.strCustName
	WHERE TC.strCustName=@CustomerNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetContractBillingDTData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [ContractBillDataDelete] ***********/

/*********** Start [GetContractBillingDTData] ***********/
CREATE PROCEDURE [dbo].[GetContractBillingDTData]
@ContractDocID AS NVARCHAR(50),
@GPCalcInvLevel AS TINYINT,
@GPCalcLPP AS TINYINT,
@DefaultInvLocation AS NVARCHAR(10)
AS
BEGIN
SELECT 
	   tblContractBillDT.strContDocID AS ContDocID,
       intLineNo AS [LineNo],
       tblContractBillDT.strPartNumber AS PartNumber,
       strLocation AS [Location],
       strPartDesc AS PartDesc,
       decQty AS Qty,
       strUnit AS Unit,
       tblContractBillDT.intType AS [Type],
       decPriceEaExc AS Price,
       decLineTotExc AS LineTot,
       decLineTaxAmt AS LineTaxAmt,
       tblContractBillDT.strSalesName AS SalesName,
       strTaxCode AS TaxCode,
       tblContractBillDT.strCurrency AS Currency,
       tblContractBillDT.bitIsForeign AS IsForeign,
       decLineDiscPerc AS LineDiscPerc,
       decLineDiscAmt AS LineDiscAmt,
       decLineDiscAmtF AS LineDiscAmtF,
       bitDiscountTax AS DiscountTax,
       tblContractBillDT.strContBillType AS ContBillType,
       tblContractBillDT.blnAllowAnnualIncrease AS AllowAnnualIncrease,
       tblContractBillDT.intContractPriceIncrease AS ContractPriceIncrease,
       tblContractBillDT.dtpIncreaseStartDate AS IncreaseStartDate,
       dtpSetUpDate AS SetUpDate,
       dtpActivationDate AS ActivationDate,
       dtpTerminationDate AS TerminationDate,
       dtpExpirationDate AS ExpirationDate,
       dtpBillingSchduleStart AS BillingSchduleStart,
       strBillingFrequncy AS BillingFrequncy,
       dtpLastBillDate AS LastBillDate,
       dtpNextBillDate AS NextBillDate,
       decStockQty AS StockQty,
       tblContractBillDT.strStockUnit AS StockUnit,
       dtpNextInvoiceDate AS NextInvoiceDate,
       uidTransactionFieldID AS TransactionFieldID,
       decPriceEaInc AS PriceEaInc,
       decLineTotInc AS LineTotInc,
       imgTaxObj AS TaxObj,
       decPriceEaExcF AS PriceEaExcF,
       decLineTotExcF AS LineTotExcF,
       decLineTaxAmtF AS LineTaxAmtF,
       decEaIncTaxF AS EaIncTaxf,
       decTotIncTaxF AS TotIncTaxf,
	   bitDelCost AS IsDelCost,
	   intBillingMethod AS BillingMethod,
	   decBuyoutCost AS BuyoutCost,
	   tblContractBillDT.decMass AS ItemWeight,
	   tblContractBillDT.decVolumetricWeight AS VolumetricWeight,
	   decCost AS Cost
	   ,tblInv.strDimProCode AS DimProCode
	   ,tblContractBill.strField1 AS Field1 
	   ,tblContractBill.strField2 AS Field2 
	   ,tblContractBill.strField3 AS Field3 
	   ,tblContractBill.strField4 AS Field4 
	   ,tblContractBill.strField5 AS Field5 
	   ,tblContractBill.strField6 AS Field6 
	   ,tblContractBill.strField7 AS Field7 
	   ,tblContractBill.strField8 AS Field8 
	   ,tblContractBill.strField9 AS Field9 
	   ,tblContractBill.strField10 AS Field10
	   ,tblContractBill.strField11 AS Field11
	   ,tblContractBill.strField12 AS Field12
	   ,tblInv.bitInvSerialType AS IsInvSerialType
	   ,(
		SELECT tce.bitIncluded
		FROM tbltaxcodes tc
		INNER JOIN tblTaxCodeExt tce ON tc.strTaxCode = tce.strTaxCode
		WHERE tc.strTaxCode = tblContractBillDT.strTaxCode
		) AS IsTaxIncluded			
		,CASE 
		WHEN tblInv.intType = 4
			THEN tblInv.decStandardCost
		ELSE CASE @GPCalcLPP
				WHEN 0
					THEN tblInv.decLastPPUnit
				WHEN 1
					THEN tblInv.decStandardCost
				WHEN 2
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblContractBillDT.strLocation
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblContractBillDT.strLocation
															), 0)
													THEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = tblContractBillDT.strLocation
																), 0)
												ELSE CASE 
														WHEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblContractBillDT.strLocation
																	), 0) = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblContractBillDT.strLocation
																	), 0)
														END
												END
										END
							WHEN 1
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
												ELSE CASE 
														WHEN CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
														END
												END
										END
							ELSE tblInv.decLastPPUnit
							END
				WHEN 3
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblContractBillDT.strLocation
													), 0) = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblContractBillDT.strLocation
													), 0)
										END
							WHEN 1
								THEN CASE 
										WHEN CASE tblInv.decSumOnHand
												WHEN 0
													THEN 0
												ELSE tblInv.decSumValue / tblInv.decSumOnHand
												END = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
										END
							ELSE tblInv.decLastPPUnit
							END
				ELSE tblInv.decLastPPUnit
				END
		END AS GPCalc
		,tblInv.strDimProCode AS DimProCode
		,tblInv.strUnitOfMeasure AS UnitOfMeasure
		,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist
		,tblInv.bitAutoBuild AS IsAutoBuild
		,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT SUM(INV.decLastPPUnit)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						WHERE BOM.strPartNumber = tblInv.strPartNumber
						), 0)
			END AS AutoBuildLRC
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT SUM(INV.decStandardCost)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						WHERE BOM.strPartNumber = tblInv.strPartNumber
						), 0)
			END AS AutoBuildSC
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT ISNULL(SUM(CASE EXT.decOnHand
										WHEN 0
											THEN 0
										ELSE EXT.decValue / EXT.decOnHand
										END), 0)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
						WHERE BOM.strPartNumber = tblInv.strPartNumber
							AND EXT.strLocName = @DefaultInvLocation
						), 0)
			END AS AutoBuildMALocDef
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT ISNULL(SUM(CASE EXT.decOnHand
										WHEN 0
											THEN 0
										ELSE EXT.decValue / EXT.decOnHand
										END), 0)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
							AND BOM.strLocName = EXT.strLocName
						WHERE BOM.strPartNumber = tblInv.strPartNumber
						), 0)
			END AS AutoBuildMALocation
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT ISNULL(SUM(CASE INV.decSumOnHand	
										WHEN 0
											THEN 0
										ELSE INV.decSumValue / INV.decSumOnHand
										END), 0)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						WHERE BOM.strPartNumber = tblInv.strPartNumber
						), 0)
			END AS AutoBuildMAMain
FROM tblContractBillDT
INNER JOIN tblInv ON tblContractBillDT.strPartNumber = tblInv.strPartNumber
INNER JOIN tblContractBill ON tblContractBillDT.strContDocID = tblContractBill.strContDocID
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblContractBill.strContDocID = @ContractDocID
ORDER BY tblContractBillDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetContractBillInvoice]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetContractBillTypes] ***********/


/*********** Start [GetContractBillInvoice] ***********/
CREATE PROCEDURE  [dbo].[GetContractBillInvoice] 
(@ContDocID nvarchar(50)=NULL,
	@OrdDocID nvarchar(50)=NULL,
	@ContBillType nvarchar(50)=NULL)
 As SELECT 
            [strContDocID] AS ContDocID,
			[dteSystemDate] AS SystemDate,
			[dteJournalDate] AS JournalDate,
			[strUserName] AS UserName,
			[strCustName] AS CustName,
			[strContractTo] AS ContractTo,
			[strReference] AS Reference,
			[decSubTotal] AS SubTotal,
			[decTotal] AS Total,
			[decVAT] AS VAT, 
			[strNotes] AS Notes,
			[strOrdDocID] AS OrdDocID,
			[bitPrinted] AS IsPrinted,
			[bitEmailed] AS IsEmailed,
			[strSalesName] AS SalesName,
			[strAddInfo] AS AddInfo,
			[strCurrency] AS Currency,
			[strTerm] AS Term,
			[strField1] AS Field1,
			[strField2] AS Field2,
			[strField3] AS Field3,
			[strField4] AS Field4,
			[strField5] AS Field5,
			[strField6] AS Field6,
			[strField7] AS Field7,
			[strField8] AS Field8,
			[strField9] AS Field9,
			[strField10] AS Field10,
			[strField11] AS Field11,
			[strField12] AS Field12,
			[dtpField13] AS Field13,
			[dtpField14] AS Field14,
			[strSubFormated] AS SubFormated,
			[strTotFormatted] AS TotFormatted,
			[strVATFormatted] AS VATFormatted,
			[decDiscPerc] AS DiscPerc,
			[decDiscAmt] AS DiscAmt,
			[decDiscAmtF] AS DiscAmtF,
			[strDiscFormatted] AS DiscFormatted, 
			[strPaidBy] AS PaidBy,
			[strDelMethodCode] AS DelMethodCode,
			[strContBillType] AS ContBillType,
			[blnAllowAnnualIncrease] AS IsAllowAnnualIncrease,
			[intContractPriceIncrease] AS ContractPriceIncrease,
			[dtpIncreaseStartDate] AS IncreaseStartDate,
			[bitInactive] AS IsInactive,
			[strShipTo] AS ShipTo,
			[bitIsForeign] AS IsForeign,
			[dtpLastProcessDate] AS LastProcessDate,
			[intTotalProcessCount] AS TotalProcessCount,
			[decSubTotalF] AS SubTotalF,
			[decVATF] AS VATF,
			[decTotalF] AS TotalF,
			[decExchange] AS Exchange
    FROM 
        [tblContractBill]
	WHERE
		(([strContDocID] = @ContDocID) OR (@ContDocID Is Null)) AND 
		(([strOrdDocID] = @OrdDocID) OR (@OrdDocID Is Null)) AND
		(([strContBillType] = @ContBillType) OR (@ContBillType Is Null))
GO
/****** Object:  StoredProcedure [dbo].[GetContractBillTypes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetContractData] ***********/

/*********** Start [GetContractBillTypes] ***********/
CREATE PROCEDURE  [dbo].[GetContractBillTypes] 
(@ContBillType nvarchar(50)=NULL )
 As Select  [lngID] AS ID,
			[strContBillType] AS ContBillType,
            [strContBillTypeDesc] AS ContBillTypeDesc,            
            [bitInactive] AS IsInactive,
			[intChargeonFreq] AS ChargeonFreq,
			[intChargeonFreqType] AS ChargeonFreqType,
			[intChargeonDay] AS ChargeonDay,
			[dteSystemDate] AS SystemDateNew,
			[dteActivateFrom] AS ActivateFrom,
			[dteTerminateOn] AS TerminateOn,
			[bitChargeImmediate] AS IsChargeImmediate,
			[bitLimitOccourance] AS IsLimitOccurrence,
			[intLimitOccouranceTimes] AS LimitOccurrenceTimes
	FROM
	        [tblContractBillTypes]
	WHERE
			[strContBillType]=@ContBillType
GO
/****** Object:  StoredProcedure [dbo].[GetContractCustomerTransactionCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [ContractDocumentDelete] ***********/

/*********** Start [GetContractCustomerTransactionCount] ***********/
CREATE PROCEDURE [dbo].[GetContractCustomerTransactionCount]
(
	@ContDocID nvarchar(50)
)
AS

BEGIN
		SELECT ISNULL(intTotalProcessCount,0) FROM dbo.tblContractBill WHERE strContDocID= @ContDocID
END
GO
/****** Object:  StoredProcedure [dbo].[GetContractData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InsertInvoicePDocREVForCustInvHist] ***********/

/*********** Start [GetContractData] ***********/
CREATE PROCEDURE [dbo].[GetContractData] (
	@StartDate AS DATETIME
	,@EndDate AS DATETIME
	,@ContractType AS NVARCHAR(50)
	,@IsLargeText AS BIT
	,@SearchText AS NVARCHAR(50)
	)
AS
BEGIN
	IF (@IsLargeText = 0)
	BEGIN
		SELECT tblContractBill.strCustName AS CustName
			,tblContractBill.dteJournalDate AS JournalDate
			,tblContractBill.dtpLastProcessDate AS LastProcessedDate
			,tblContractBillDT.dtpNextInvoiceDate AS NextInvoiceDate
			,(
				SELECT strCustDesc
				FROM tblCustomers
				WHERE strCustName = tblContractBill.strCustName
				) AS CustDesc
			,tblContractBill.strPaidBy AS PaidBy
			,tblCustomers.intDelMethod AS DelMethod
			,tblContractBill.strContDocID AS ContDocID
			,ISNULL((
					SELECT CASE tblContractBill.bitIsForeign
							WHEN 0
								THEN tblContractBill.decTotal
							ELSE tblContractBill.decTotalF
							END
					), 0) AS Total
			,tblContractBillDT.strBillingFrequncy AS BillingFrequency
			,tblContractBill.strReference AS Reference
		FROM tblContractBill
		INNER JOIN tblCustomers ON tblContractBill.strCustName = tblCustomers.strCustName
		INNER JOIN tblContractBillDT ON tblContractBill.strContDocID = tblContractBillDT.strContDocID
		WHERE (
				tblContractBillDT.dtpNextInvoiceDate BETWEEN CONVERT(DATETIME, @StartDate, 103)
					AND CONVERT(DATETIME, @EndDate, 103)
				)
			AND tblContractBill.bitInactive = 0
			AND (tblContractBill.strContBillType = @ContractType  or @ContractType = '')
		GROUP BY tblContractBill.strCustName
			,tblContractBill.dtpLastProcessDate
			,tblContractBillDT.dtpNextInvoiceDate
			,tblContractBill.dteJournalDate
			,tblContractBill.dtpLastProcessDate
			,tblContractBill.strCustName
			,tblContractBill.strPaidBy
			,tblCustomers.intDelMethod
			,tblContractBill.strContDocID
			,tblContractBill.decTotal
			,tblContractBill.decTotalF
			,tblContractBill.bitIsForeign
			,tblContractBillDT.strBillingFrequncy
			,tblContractBill.strReference
		ORDER BY tblContractBill.strCustName
	END
	ELSE
	BEGIN
		SELECT *
		FROM (
			SELECT tblContractBill.strCustName AS CustName
				,tblContractBill.dteJournalDate AS JournalDate
				,tblContractBill.dtpLastProcessDate AS LastProcessedDate
				,tblContractBillDT.dtpNextInvoiceDate AS NextInvoiceDate
				,(
					SELECT strCustDesc
					FROM tblCustomers
					WHERE strCustName = tblContractBill.strCustName
					) AS CustDesc
				,tblContractBill.strPaidBy AS PaidBy
				,tblCustomers.intDelMethod AS DelMethod
				,tblContractBill.strContDocID AS ContDocID
				,ISNULL((
						SELECT CASE tblContractBill.bitIsForeign
								WHEN 0
									THEN tblContractBill.decTotal
								ELSE tblContractBill.decTotalF
								END
						), 0) AS Total
				,tblContractBillDT.strBillingFrequncy AS BillingFrequency
				,tblContractBill.strReference AS Reference
			FROM tblContractBill
			INNER JOIN tblCustomers ON tblContractBill.strCustName = tblCustomers.strCustName
			INNER JOIN tblContractBillDT ON tblContractBill.strContDocID = tblContractBillDT.strContDocID
			WHERE (
					tblContractBillDT.dtpNextInvoiceDate BETWEEN CONVERT(DATETIME, @StartDate, 103)
						AND CONVERT(DATETIME, @EndDate, 103)
					)
				AND tblContractBill.bitInactive = 0
				AND (tblContractBill.strContBillType = @ContractType  or @ContractType = '')
			GROUP BY tblContractBill.strCustName
				,tblContractBill.dtpLastProcessDate
				,tblContractBillDT.dtpNextInvoiceDate
				,tblContractBill.dteJournalDate
				,tblContractBill.dtpLastProcessDate
				,tblContractBill.strCustName
				,tblContractBill.strPaidBy
				,tblCustomers.intDelMethod
				,tblContractBill.strContDocID
				,tblContractBill.decTotal
				,tblContractBill.decTotalF
				,tblContractBill.bitIsForeign
				,tblContractBillDT.strBillingFrequncy
				,tblContractBill.strReference
			) AS tmp
		WHERE (
				tmp.ContDocID LIKE ('%' + @SearchText + '%')
				OR tmp.CustName LIKE ('%' + @SearchText + '%')
				OR CustName LIKE ('%' + @SearchText + '%')
				OR CustDesc LIKE ('%' + @SearchText + '%')
				)
		ORDER BY tmp.CustName
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetContractInvoiceSplitPmt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End  [UpdateInvExtSerialForReturnWS] *****************************/

/*****************Start  [GetContractInvoiceSplitPmt] *****************************/
CREATE PROCEDURE [dbo].[GetContractInvoiceSplitPmt]
@DocNumber AS NVARCHAR(50)
AS
BEGIN
 SELECT [strContDocID] AS InvoiceDocID
      ,[strPaymentTypeName] AS PaymentTypeName
      ,[intGLNumber] AS GLNumber
      ,[decTotal] AS Total
      ,[strReference] AS Reference
  FROM [dbo].[tblContractInvoiceDocSplitPmt] WHERE strContDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetContractPrice]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [DeleteSalesPersonFile] ***********/

/*********** Start [GetContractPrice] ***********/
CREATE PROCEDURE [dbo].[GetContractPrice] @ValueBased AS VARCHAR(20)
	,@TransactionDate AS DATETIME
	,@TypePricing AS TINYINT
	,@TypeInclusion AS TINYINT
AS
BEGIN
	SELECT Z.decValueFrom AS ValueFrom
		,Z.decValueTo AS ValueTo
		,Z.decSpecialValue AS SpecialValue
		,Z.bitApplyItem AS ApplyItem
		,Z.bitApplyTax AS ApplyTax
		,strPartNumber AS PartNumber
	FROM tblValueBasedPricingDT
	INNER JOIN (
		SELECT tblValueBasedPricingDT.uidValueBasedID
			,tblValueBasedPricingDT.strCategory
			,tblValueBasedPricingDT.decValueFrom
			,tblValueBasedPricingDT.decValueTo
			,tblValueBasedPricingDT.decSpecialValue
			,tblValueBased.bitApplyItem
			,tblValueBased.bitApplyTax
		FROM tblValueBased
		INNER JOIN tblValueBasedPricing ON tblValueBased.strValueBased = tblValueBasedPricing.strValueBased
		INNER JOIN tblValueBasedPricingDT ON tblValueBasedPricing.uidValueBasedID = tblValueBasedPricingDT.uidValueBasedID
		WHERE tblValueBasedPricing.bitInactive = 0
			AND tblValueBased.strValueBased = @ValueBased
			AND tblValueBasedPricingDT.intType = @TypePricing
			AND (
				@TransactionDate BETWEEN tblValueBasedPricing.dteStartDate
					AND tblValueBasedPricing.dteFinishDate
				)
		) Z ON tblValueBasedPricingDT.uidValueBasedID = Z.uidValueBasedID
		AND tblValueBasedPricingDT.strCategory = Z.strCategory
	WHERE tblValueBasedPricingDT.intType = @TypeInclusion
	ORDER BY strPartNumber
		,Z.strCategory
		,Z.decValueFrom
END
GO
/****** Object:  StoredProcedure [dbo].[GetCostCenter]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetCostCenter]
    (
      @SQCenterID UNIQUEIDENTIFIER = NULL
    )
AS
    BEGIN
        SET NOCOUNT ON;
        DECLARE @centerName VARCHAR(MAX);
        SELECT  @centerName = strLvl1 ,
                @centerName += CASE WHEN strLvl2 IS NOT NULL
                                    THEN strLvl2 + '\'
                                    ELSE ''
                               END ,
                @centerName += CASE WHEN strLvl3 IS NOT NULL
                                    THEN strLvl3 + '\'
                                    ELSE ''
                               END ,
                @centerName += CASE WHEN strLvl4 IS NOT NULL
                                    THEN strLvl4 + '\'
                                    ELSE ''
                               END ,
                @centerName += CASE WHEN strLvl5 IS NOT NULL
                                    THEN strLvl5 + '\'
                                    ELSE ''
                               END
        FROM    tblCenters
        WHERE   uidCenterID = @SQCenterID;
        SELECT  @centerName AS CenterName;
    END;
GO
/****** Object:  StoredProcedure [dbo].[GetCountInvLocImport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

---------------------------------------------------------------
CREATE PROCEDURE  [dbo].[GetCountInvLocImport]
(
@PartNumber NVARCHAR(MAX) = ''
)
AS
BEGIN
	DECLARE @tblPart AS TABLE
	(
	 ID INT IDENTITY(1, 1) 
	,PART	NVARCHAR(100) 
	);
	INSERT INTO @tblPart
	SELECT VALUE AS PART FROM dbo.fnSplitStringAsTable(@PartNumber, ',')

	-- Get the number of rows in the looping table
	DECLARE @RowCount INT
	SET @RowCount = (SELECT COUNT(ID) FROM @tblPart) 

	-- Declare an iterator
	DECLARE @ITR INT
	-- Initialize the iterator
	SET @ITR = 1


	-- Loop through the rows of a table @tblPart
	WHILE (@ITR <= @RowCount)
	BEGIN
		-- Declare variables to hold the data which we get after looping each record 
		DECLARE @LocCnt BIGINT, @ActiveCnt BIGINT, @DefaultCnt BIGINT, @partnum NVARCHAR(50),@IsDefault BIT, @Result NVARCHAR(500) = ''

		SELECT @partnum = PART FROM @tblPart WHERE ID = @ITR

		-- Get the data from table and set to variables
		-- Location Count
		SELECT @LocCnt = COUNT(strLocName) FROM tblInvExt WHERE (strPartNumber = @partnum)
		
		-- Active Count	
		SELECT @ActiveCnt = COUNT(bitInactive) FROM tblInvExt WHERE (strPartNumber = @partnum) AND (bitInactive = 1)

		-- Default Count
		SELECT @DefaultCnt = COUNT(bitDefault) FROM tblInvExt WHERE (strPartNumber = @partnum) AND (bitDefault = 1)
		
		IF @LocCnt = @ActiveCnt
		BEGIN
			SET @Result = '(" ' + @partNum + ' "): All the Locations have been set to Inactive and is therefore rejected.'
			BREAK
		END

		IF @DefaultCnt = 0
		BEGIN
			SET @Result = '(" ' + @partNum + ' "): No Default Location has been selected and is therefore rejected.'
			BREAK
		END
		ELSE IF @DefaultCnt > 1
		BEGIN
			SET @Result = '(" ' + @partNum + ' "): Multiple Default Locations have been activated and is therefore rejected.'
			BREAK
		END

		-- Check Default Location isn't Inactive
		SELECT @IsDefault = ISNULL(bitInactive,0) FROM tblInvExt WHERE (strPartNumber = @partNum) AND (bitDefault = 1)

		IF @IsDefault = 1
		BEGIN
			SET @Result = '(" ' + @partNum + ' "): The Default Location has been activated on an Inactive Location and is therefore rejected.'
			BREAK
		END
		-- Increment the iterator
		SET @ITR = @ITR + 1
	END
	SELECT @Result; 
END
GO
/****** Object:  StoredProcedure [dbo].[GetCreditNoteReasonsPos]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetCreditNoteReasonsPos]    Script Date: 10-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[GetCreditNoteReasonsPos]
AS
BEGIN

SELECT strCNReasonCode FROM tblCreditNoteReasons WHERE bitInactive = 0 ORDER BY strCNReasonCode

END
GO
/****** Object:  StoredProcedure [dbo].[GetCRMActionCustomerNote]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** END [GetTradeDiscountMatrixData]***********/

/********* Start [GetCRMActionCustomerNote] (CRM)**********/

CREATE PROCEDURE [dbo].[GetCRMActionCustomerNote] @UserName NVARCHAR(Max)
	,@CustomerNumber NVARCHAR(Max)
AS
BEGIN
	SELECT tblCRMActivityActions.ActivityActionID AS ActivityActionID
		,tblCRMActivityActions.ActivityID AS ActivityID
		,tblCRMActivityActions.ActionDescription AS ActionDescription
		,tblCRMActivityActions.DueDate AS DueDate
		,tblCRMActivityActions.AssignTo AS AssignTo
		,tblCRMActivityActions.ActionStatus AS ActionStatus
		,tblCRMActivityActions.CreatedDate AS CreatedDate
		,tblCRMActivityActions.UpdateDate AS UpdateDate
		,tblCRMActivityActions.CreatedUser AS CreatedUser
		,tblCRMActivityActions.UpdatedUser AS UpdatedUser
		,tblCRMActivityActions.IsInactive AS IsInactive
		,tblCRMActivityActions.ActionType AS ActionType
		,tblCRMActivities.ActivityName AS ActivityName
		,tblCRMActivities.ActivityGroupName AS ActivityGroupName
		,tblCRMActivities.CustomerNumber AS CustomerNumber
		,tblCRMActivities.VendorNumber AS VendorNumber
		,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber
		,tblCRMActivities.ProjectNumber AS ProjectNumber
		,tblCRMActivityActions.EmailId AS EmailId
		,tblCRMActivityActions.IsActionReopened AS IsActionReopened
		,tblCRMActivityActions.ActionReopenedUserName AS ActionReopenedUserName
		,tblCRMActivityActions.IsNotifyOnSalesDocuments AS IsNotifyOnSalesDocuments
		,c.strEmail AS ActionEmailID
		,d.strEmail AS ActivityEmailID
		,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser
	FROM tblCRMActivityActions
	INNER JOIN tblCRMActivities ON tblCRMActivityActions.ActivityID = tblCRMActivities.ActivityID
	LEFT JOIN tblUsers c ON tblCRMActivityActions.CreatedUser = c.strUserName
	LEFT JOIN tblUsers d ON tblCRMActivities.ActivityCreatedUser = d.strUserName
	INNER JOIN tblCRMActivityActionsStatus ON tblCRMActivityActions.ActionStatus = tblCRMActivityActionsStatus.StatusType

	WHERE tblCRMActivityActions.IsNotifyOnSalesDocuments = 1
		AND tblCRMActivityActionsStatus.StatusGroup <>3
		AND tblCRMActivities.CustomerNumber = @CustomerNumber
		AND tblCRMActivityActions.ActivityActionID NOT IN (
			SELECT tblCRMActionsCustomerNoteLog.ActivityActionId
			FROM tblCRMActionsCustomerNoteLog
			WHERE Cast(tblCRMActionsCustomerNoteLog.NotePoupDate AS DATE) = cast(GetDate() AS DATE)
				AND tblCRMActionsCustomerNoteLog.UserName = @UserName
				AND tblCRMActionsCustomerNoteLog.CustomerName = @CustomerNumber
			)
END
GO
/****** Object:  StoredProcedure [dbo].[GetCRMActivityActionsList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetCRMActivityActionsList]                
@UserName nvarchar(50)                
As                
BEGIN                
 Select                 
 a.ActivityActionID as ActivityActionID                
,a.ActivityID as ActivityID                
,a.ActionDescription as ActionDescription                
,a.DueDate as DueDate                
,a.AssignTo as AssignTo                
,a.ActionStatus as ActionStatus                
,a.CreatedDate as CreatedDate                
,a.UpdateDate as UpdateDate                
,a.CreatedUser as CreatedUser                
,a.UpdatedUser as UpdatedUser                
,a.IsInactive as IsInactive                
,a.ActionType as ActionType                
,b.ActivityName as ActivityName                
,b.ActivityGroupName as ActivityGroupName                
,b.CustomerNumber as CustomerNumber                
,b.VendorNumber as VendorNumber                
,b.InventoryItemNumber as  InventoryItemNumber                     
,b.ProjectNumber as ProjectNumber                 
,a.EmailId as EmailId                   
,a.IsActionReopened as IsActionReopened                
,a.ActionReopenedUserName as ActionReopenedUserName                
,a.IsNotifyOnSalesDocuments as IsNotifyOnSalesDocuments                 
,b.ActivityCreatedUser as ActivityCreatedUser                
,a.SignText as SignText                
,a.AssignTo as AssignToold    
,IsNull(a.IsCalendar,0) as IsCalendar    
,IsNull(a.StartTime,'12:00:00 AM') as StartTime    
,IsNull(a.EndTime,'12:00:00 AM') as EndTime                
from tblCRMActivityActions a               
  inner join tblCRMActivities b on a.ActivityID=b.ActivityID                 
  where a.AssignTo = @UserName and (a.ActionStatus = 'NEW' or a.ActionStatus = 'IN PROGRESS')        
  order by a.DueDate Desc            
END 
GO
/****** Object:  StoredProcedure [dbo].[GetCRMActivityByID]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetCRMActivityByID]    Script Date: 06-01-2020 08:25:00 AM ******/
CREATE PROCEDURE [dbo].[GetCRMActivityByID] @ActivityID BIGINT   
AS   
  BEGIN   
      SELECT b.activityname        AS ActivityName,   
             b.activitydescription AS ActivityDescription,  
             b.activitygroupname   AS ActivityGroupName,   
             b.activitystatus      AS ActivityStatus,   
             b.activitycreateduser AS ActivityCreatedUser ,  
		     b.CustomerNumber      AS CustomerNumber,  
		     b.CustomerProspect    AS CustomerProspect ,  
		     b.ProsCompanyName     AS ProsCompanyName,  
		     b.ProsContactNo       AS ProsContactNo,  
		     b.ProsEmailId         AS ProsEmailId,  
		     b.ProsAddress         AS ProsAddress,  
		     b.CustPhoneNo         AS CustPhoneNo,  
		     b.CustEmailId         AS CustEmailId,  
		     b.CustAddress         AS CustAddress  
      FROM   tblcrmactivities b   
             LEFT JOIN tblusers u   
                    ON b.activitycreateduser = u.strusername   
      WHERE  b.activityid = @ActivityID   
END 
GO
/****** Object:  StoredProcedure [dbo].[GetCRMActivityFilter]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetCRMActivityFilter] (        
 @CustomerNumber NVARCHAR(Max)        
 ,@VendorNumber NVARCHAR(Max)        
 ,@InventoryItemNumber NVARCHAR(Max)        
 ,@ProjectNumber NVARCHAR(Max)        
 ,@ActivityGroupName NVARCHAR(Max)        
 ,@ActivityStatus NVARCHAR(Max)        
 ,@ActivityPriority NVARCHAR(Max) = '<<ALL>>'      
 ,@UserName NVARCHAR(Max) = '<<ALL>>'        
 ,@TaskStatus NVARCHAR(Max) = '<<ALL>>'        
 ,@TransactionNumber NVARCHAR(Max) = '<<ALL>>'        
 )        
AS        
BEGIN        
 IF (@TaskStatus = 'ALL')        
 BEGIN        
  SELECT tblCRMActivities.ActivityID AS ActivityID        
   ,tblCRMActivities.ActivityName AS ActivityName        
   ,tblCRMActivities.ActivityDescription AS ActivityDescription        
   ,tblCRMActivities.ActivityGroupName AS ActivityGroupName        
   ,tblCRMActivities.ActivityStatus AS ActivityStatus       
   ,tblCRMActivities.ActivityPriority AS ActivityPriority      
   ,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate      
   ,tblCRMActivities.CustomerNumber AS CustomerNumber      
   ,tblCRMActivities.ActivityDueDate AS ActivityDueDate      
   ,tblCRMActivities.IsNotifyOwnerofActions AS IsNotifyOwnerofActions     
   ,tblCRMActivities.IsNotifyGroupofActivity  AS IsNotifyGroupofActivity
   ,tblCustomers.strCustDesc AS CustomerDescription        
   ,tblCRMActivities.VendorNumber AS VendorNumber        
   ,tblVendors.strVendDesc AS VendorDescription        
   ,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber        
   ,tblInv.strDesc AS InventoryItemDescription        
   ,tblCRMActivities.ProjectNumber AS ProjectNumber        
   ,tblProjects.strProjName AS ProjectDescription        
   ,tblCRMActivities.CustomerContactNo AS CustomerContactNo        
   ,tblCRMActivities.VendorContactNo AS VendorContactNo        
   ,tblCRMActivities.TransactionType AS TransactionType        
   ,tblCRMActivities.TransactionNumber AS TransactionNumber        
   ,tblCRMActivities.CreatedUser AS CreatedUser        
   ,tblCRMActivities.UpdatedUser AS UpdatedUser        
   ,tblCRMActivities.CreatedDate AS CreatedDate        
   ,tblCRMActivities.UpdatedDate AS UpdatedDate        
   ,tblCRMActivities.IsInactive AS IsInactive        
   ,tblCRMActivities.IsSalesGroup AS IsSalesGroup        
   ,tblCRMActivities.SalesPipelineText AS SalesPipelineText        
   ,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage        
   ,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser        
   ,tblCRMActivities.ValueText AS ValueText        
   ,tblCRMActivities.CustomerProspect AS CustomerProspect        
   ,tblCRMActivities.ProsCompanyName AS ProsCompanyName        
   ,tblCRMActivities.ProsContactNo AS ProsContactNo        
   ,tblCRMActivities.ProsEmailId AS ProsEmailId        
   ,tblCRMActivities.ProsAddress AS ProsAddress        
   ,tblCRMActivities.CustPhoneNo AS CustPhoneNo        
   ,tblCRMActivities.CustMobileNo AS CustMobileNo        
   ,tblCRMActivities.CustEmailId AS CustEmailId        
   ,tblCRMActivities.CustAddress AS CustAddress        
   ,tblCRMActivities.ProsName AS ProsName        
   ,CASE WHEN tblCRMActivities.CustomerProspect = '1' THEN 'Prospect' ELSE tblCRMActivities.CustomerNumber END AS CustomerProspectCheck       
   ,(select Count(*) from tblCRMAcitvityGroupUsers where tblCRMAcitvityGroupUsers.ActivityGroupName = tblCRMActivities.ActivityGroupName) as AssignedUserCount    
   ,(select count(*) from tblCRMActivityActions where tblCRMActivityActions.ActivityID = tblCRMActivities.ActivityID) as UnAssignedUserCount       
   --,ISNULL(tblCRMActivityNotifications.IsRead,0) as IsNotificationRead        
  FROM tblCRMActivities        
  LEFT JOIN tblCustomers ON tblCRMActivities.CustomerNumber = tblCustomers.strCustName        
  LEFT JOIN tblVendors ON tblCRMActivities.VendorNumber = tblVendors.strVendName        
  LEFT JOIN tblInv ON tblCRMActivities.InventoryItemNumber = tblInv.strPartNumber        
  LEFT JOIN tblProjects ON tblCRMActivities.ProjectNumber = tblProjects.strProjNumber        
  --LEFT JOIN tblCRMActivityNotifications on tblCRMActivityNotifications.ActivityID = tblCRMActivities.ActivityID      
  WHERE (        
    tblCRMActivities.CustomerNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@CustomerNumber, ',')        
     )        
    OR ISNULL(@CustomerNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.VendorNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@VendorNumber, ',')        
     )        
    OR ISNULL(@VendorNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.InventoryItemNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@InventoryItemNumber, ',')        
     )        
    OR ISNULL(@InventoryItemNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.ProjectNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ProjectNumber, ',')        
     )        
    OR ISNULL(@ProjectNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.ActivityGroupName IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ActivityGroupName, ',')        
     )        
    OR ISNULL(@ActivityGroupName, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.ActivityStatus IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ActivityStatus, ',')        
     )        
    OR ISNULL(@ActivityStatus, '<<ALL>>') = '<<ALL>>'        
    )        
  AND (        
    tblCRMActivities.ActivityPriority IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ActivityPriority, ',')        
     )        
    OR ISNULL(@ActivityPriority, '<<ALL>>') = '<<ALL>>'        
    )       
   AND (        
    tblCRMActivities.CreatedUser IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@UserName, ',')        
     )        
    OR ISNULL(@UserName, '<<ALL>>') = '<<ALL>>'        
    )        
   --Or (tblCRMActivities.TransactionNumber = @TransactionNumber )        
 END        
 ELSE IF (@TaskStatus = 'Overdue')        
 BEGIN        
  SELECT tblCRMActivities.ActivityID AS ActivityID        
   ,tblCRMActivities.ActivityName AS ActivityName        
   ,tblCRMActivities.ActivityDescription AS ActivityDescription        
   ,tblCRMActivities.ActivityGroupName AS ActivityGroupName        
   ,tblCRMActivities.ActivityStatus AS ActivityStatus        
   ,tblCRMActivities.ActivityPriority AS ActivityPriority      
   ,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate       
   ,tblCRMActivities.ActivityDueDate AS ActivityDueDate       
   ,tblCRMActivities.IsNotifyOwnerofActions AS IsNotifyOwnerofActions  
    ,tblCRMActivities.IsNotifyGroupofActivity  AS IsNotifyGroupofActivity    
   ,tblCRMActivities.CustomerNumber AS CustomerNumber        
   ,tblCustomers.strCustDesc AS CustomerDescription        
   ,tblCRMActivities.VendorNumber AS VendorNumber        
   ,tblVendors.strVendDesc AS VendorDescription        
   ,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber        
   ,tblInv.strDesc AS InventoryItemDescription        
   ,tblCRMActivities.ProjectNumber AS ProjectNumber        
   ,tblProjects.strProjName AS ProjectDescription        
   ,tblCRMActivities.CustomerContactNo AS CustomerContactNo        
   ,tblCRMActivities.VendorContactNo AS VendorContactNo        
   ,tblCRMActivities.TransactionType AS TransactionType        
   ,tblCRMActivities.TransactionNumber AS TransactionNumber        
   ,tblCRMActivities.CreatedUser AS CreatedUser        
   ,tblCRMActivities.UpdatedUser AS UpdatedUser        
   ,tblCRMActivities.CreatedDate AS CreatedDate        
   ,tblCRMActivities.UpdatedDate AS UpdatedDate        
   ,tblCRMActivities.IsInactive AS IsInactive        
   ,tblCRMActivities.IsSalesGroup AS IsSalesGroup        
   ,tblCRMActivities.SalesPipelineText AS SalesPipelineText        
   ,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage        
   ,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser        
   ,tblCRMActivities.ValueText AS ValueText        
   ,tblCRMActivities.CustomerProspect AS CustomerProspect        
   ,tblCRMActivities.ProsCompanyName AS ProsCompanyName        
   ,tblCRMActivities.ProsContactNo AS ProsContactNo        
   ,tblCRMActivities.ProsEmailId AS ProsEmailId        
   ,tblCRMActivities.ProsAddress AS ProsAddress        
   ,tblCRMActivities.CustPhoneNo AS CustPhoneNo        
   ,tblCRMActivities.CustMobileNo AS CustMobileNo        
   ,tblCRMActivities.CustEmailId AS CustEmailId        
   ,tblCRMActivities.CustAddress AS CustAddress        
   ,tblCRMActivities.ProsName AS ProsName       
   ,(select Count(*) from tblCRMAcitvityGroupUsers where tblCRMAcitvityGroupUsers.ActivityGroupName = tblCRMActivities.ActivityGroupName) as AssignedUserCount    
   ,(select count(*) from tblCRMActivityActions where tblCRMActivityActions.ActivityID = tblCRMActivities.ActivityID) as UnAssignedUserCount      
  --,ISNULL(tblCRMActivityNotifications.IsRead,0) as IsNotificationRead         
  FROM tblCRMActivities        
  LEFT JOIN tblCustomers ON tblCRMActivities.CustomerNumber = tblCustomers.strCustName        
  LEFT JOIN tblVendors ON tblCRMActivities.VendorNumber = tblVendors.strVendName        
  LEFT JOIN tblInv ON tblCRMActivities.InventoryItemNumber = tblInv.strPartNumber        
  LEFT JOIN tblProjects ON tblCRMActivities.ProjectNumber = tblProjects.strProjNumber      
  --LEFT JOIN tblCRMActivityNotifications on tblCRMActivityNotifications.ActivityID = tblCRMActivities.ActivityID        
  WHERE (        
    tblCRMActivities.CustomerNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@CustomerNumber, ',')        
     )        
    OR ISNULL(@CustomerNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.VendorNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@VendorNumber, ',')        
     )        
    OR ISNULL(@VendorNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.InventoryItemNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@InventoryItemNumber, ',')        
     )        
    OR ISNULL(@InventoryItemNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.ProjectNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ProjectNumber, ',')        
     )        
    OR ISNULL(@ProjectNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.ActivityGroupName IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ActivityGroupName, ',')        
     )        
    OR ISNULL(@ActivityGroupName, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.ActivityStatus IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ActivityStatus, ',')        
     )        
    OR ISNULL(@ActivityStatus, '<<ALL>>') = '<<ALL>>'        
    )      
  AND (        
    tblCRMActivities.ActivityPriority IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ActivityPriority, ',')        
     )        
    OR ISNULL(@ActivityPriority, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.CreatedUser IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@UserName, ',')        
     )        
    OR ISNULL(@UserName, '<<ALL>>') = '<<ALL>>'        
    )   
 AND     cast(tblCRMActivities.ActivityDueDate AS DATE) < cast(GETDATE() AS DATE)        
   --AND (        
   -- tblCRMActivities.ActivityID IN (        
   --  SELECT DISTINCT t1.ActivityID        
   --  FROM tblCRMActivityActions t1 Inner join tblCRMActivityActionsStatus         
   --  on t1.ActionStatus= tblCRMActivityActionsStatus.StatusType        
   --  WHERE  (tblCRMActivityActionsStatus.StatusGroup <> 3)        
   --   AND cast(t1.DueDate AS DATE) < cast(GETDATE() AS DATE)        
   --  )        
   -- )        
   --Or (tblCRMActivities.TransactionNumber = @TransactionNumber )        
 END        
 ELSE IF (@TaskStatus = 'DueToday')        
 BEGIN        
  SELECT tblCRMActivities.ActivityID AS ActivityID        
   ,tblCRMActivities.ActivityName AS ActivityName        
   ,tblCRMActivities.ActivityDescription AS ActivityDescription        
   ,tblCRMActivities.ActivityGroupName AS ActivityGroupName        
   ,tblCRMActivities.ActivityStatus AS ActivityStatus        
   ,tblCRMActivities.ActivityPriority AS ActivityPriority      
   ,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate      
   ,tblCRMActivities.ActivityDueDate AS ActivityDueDate        
   ,tblCRMActivities.IsNotifyOwnerofActions AS IsNotifyOwnerofActions 
    ,tblCRMActivities.IsNotifyGroupofActivity  AS IsNotifyGroupofActivity     
   ,tblCRMActivities.CustomerNumber AS CustomerNumber        
   ,tblCustomers.strCustDesc AS CustomerDescription        
   ,tblCRMActivities.VendorNumber AS VendorNumber        
   ,tblVendors.strVendDesc AS VendorDescription        
   ,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber        
   ,tblInv.strDesc AS InventoryItemDescription        
   ,tblCRMActivities.ProjectNumber AS ProjectNumber        
   ,tblProjects.strProjName AS ProjectDescription        
   ,tblCRMActivities.CustomerContactNo AS CustomerContactNo        
   ,tblCRMActivities.VendorContactNo AS VendorContactNo        
   ,tblCRMActivities.TransactionType AS TransactionType        
   ,tblCRMActivities.TransactionNumber AS TransactionNumber        
   ,tblCRMActivities.CreatedUser AS CreatedUser        
   ,tblCRMActivities.UpdatedUser AS UpdatedUser        
   ,tblCRMActivities.CreatedDate AS CreatedDate        
   ,tblCRMActivities.UpdatedDate AS UpdatedDate        
   ,tblCRMActivities.IsInactive AS IsInactive        
   ,tblCRMActivities.IsSalesGroup AS IsSalesGroup        
   ,tblCRMActivities.SalesPipelineText AS SalesPipelineText        
   ,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage        
   ,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser        
   ,tblCRMActivities.ValueText AS ValueText        
   ,tblCRMActivities.CustomerProspect AS CustomerProspect        
   ,tblCRMActivities.ProsCompanyName AS ProsCompanyName        
   ,tblCRMActivities.ProsContactNo AS ProsContactNo        
   ,tblCRMActivities.ProsEmailId AS ProsEmailId        
   ,tblCRMActivities.ProsAddress AS ProsAddress        
   ,tblCRMActivities.CustPhoneNo AS CustPhoneNo        
   ,tblCRMActivities.CustMobileNo AS CustMobileNo        
   ,tblCRMActivities.CustEmailId AS CustEmailId        
   ,tblCRMActivities.CustAddress AS CustAddress        
   ,tblCRMActivities.ProsName AS ProsName        
   ,(select Count(*) from tblCRMAcitvityGroupUsers where tblCRMAcitvityGroupUsers.ActivityGroupName = tblCRMActivities.ActivityGroupName) as AssignedUserCount      
   ,(select count(*) from tblCRMActivityActions where tblCRMActivityActions.ActivityID = tblCRMActivities.ActivityID) as UnAssignedUserCount    
   --,ISNULL(tblCRMActivityNotifications.IsRead,0) as IsNotificationRead       
  FROM tblCRMActivities        
  LEFT JOIN tblCustomers ON tblCRMActivities.CustomerNumber = tblCustomers.strCustName        
  LEFT JOIN tblVendors ON tblCRMActivities.VendorNumber = tblVendors.strVendName        
  LEFT JOIN tblInv ON tblCRMActivities.InventoryItemNumber = tblInv.strPartNumber        
  LEFT JOIN tblProjects ON tblCRMActivities.ProjectNumber = tblProjects.strProjNumber        
  --LEFT JOIN tblCRMActivityNotifications on tblCRMActivityNotifications.ActivityID = tblCRMActivities.ActivityID      
  WHERE (        
    tblCRMActivities.CustomerNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@CustomerNumber, ',')        
     )        
    OR ISNULL(@CustomerNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.VendorNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@VendorNumber, ',')        
     )        
    OR ISNULL(@VendorNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.InventoryItemNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@InventoryItemNumber, ',')        
     )        
    OR ISNULL(@InventoryItemNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.ProjectNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ProjectNumber, ',')        
     )        
    OR ISNULL(@ProjectNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.ActivityGroupName IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ActivityGroupName, ',')        
     )        
    OR ISNULL(@ActivityGroupName, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.ActivityStatus IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ActivityStatus, ',')        
     )        
    OR ISNULL(@ActivityStatus, '<<ALL>>') = '<<ALL>>'        
    )      
  AND (        
    tblCRMActivities.ActivityPriority IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ActivityPriority, ',')        
     )        
    OR ISNULL(@ActivityPriority, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.CreatedUser IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@UserName, ',')        
     )        
    OR ISNULL(@UserName, '<<ALL>>') = '<<ALL>>'        
    )    
  AND cast(tblCRMActivities.ActivityDueDate AS DATE) = cast(GETDATE() AS DATE)         
   --AND (        
   -- tblCRMActivities.ActivityID IN (        
   --  SELECT DISTINCT t1.ActivityID        
   --  FROM tblCRMActivityActions t1 Inner join tblCRMActivityActionsStatus         
   --  on t1.ActionStatus= tblCRMActivityActionsStatus.StatusType        
   --  WHERE  (tblCRMActivityActionsStatus.StatusGroup <> 3)        
   --   AND cast(t1.DueDate AS DATE) = cast(GETDATE() AS DATE)        
   --  )        
   -- )        
  --Or (tblCRMActivities.TransactionNumber = @TransactionNumber )        
 END        
 ELSE IF (@TaskStatus = 'Open')        
 BEGIN        
  SELECT tblCRMActivities.ActivityID AS ActivityID        
   ,tblCRMActivities.ActivityName AS ActivityName        
   ,tblCRMActivities.ActivityDescription AS ActivityDescription        
   ,tblCRMActivities.ActivityGroupName AS ActivityGroupName        
   ,tblCRMActivities.ActivityStatus AS ActivityStatus        
   ,tblCRMActivities.ActivityPriority AS ActivityPriority      
   ,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate        
   ,tblCRMActivities.ActivityDueDate AS ActivityDueDate      
   ,tblCRMActivities.IsNotifyOwnerofActions AS IsNotifyOwnerofActions   
    ,tblCRMActivities.IsNotifyGroupofActivity  AS IsNotifyGroupofActivity   
   ,tblCRMActivities.CustomerNumber AS CustomerNumber        
   ,tblCustomers.strCustDesc AS CustomerDescription        
   ,tblCRMActivities.VendorNumber AS VendorNumber        
   ,tblVendors.strVendDesc AS VendorDescription        
   ,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber        
   ,tblInv.strDesc AS InventoryItemDescription        
   ,tblCRMActivities.ProjectNumber AS ProjectNumber        
   ,tblProjects.strProjName AS ProjectDescription        
   ,tblCRMActivities.CustomerContactNo AS CustomerContactNo        
   ,tblCRMActivities.VendorContactNo AS VendorContactNo        
   ,tblCRMActivities.TransactionType AS TransactionType        
   ,tblCRMActivities.TransactionNumber AS TransactionNumber        
   ,tblCRMActivities.CreatedUser AS CreatedUser        
   ,tblCRMActivities.UpdatedUser AS UpdatedUser        
   ,tblCRMActivities.CreatedDate AS CreatedDate        
   ,tblCRMActivities.UpdatedDate AS UpdatedDate        
   ,tblCRMActivities.IsInactive AS IsInactive        
   ,tblCRMActivities.IsSalesGroup AS IsSalesGroup        
   ,tblCRMActivities.SalesPipelineText AS SalesPipelineText        
   ,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage        
   ,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser        
   ,tblCRMActivities.ValueText AS ValueText        
   ,tblCRMActivities.CustomerProspect AS CustomerProspect        
   ,tblCRMActivities.ProsCompanyName AS ProsCompanyName        
   ,tblCRMActivities.ProsContactNo AS ProsContactNo        
   ,tblCRMActivities.ProsEmailId AS ProsEmailId        
   ,tblCRMActivities.ProsAddress AS ProsAddress        
   ,tblCRMActivities.CustPhoneNo AS CustPhoneNo        
   ,tblCRMActivities.CustMobileNo AS CustMobileNo        
   ,tblCRMActivities.CustEmailId AS CustEmailId        
   ,tblCRMActivities.CustAddress AS CustAddress        
   ,tblCRMActivities.ProsName AS ProsName        
   ,(select Count(*) from tblCRMAcitvityGroupUsers where tblCRMAcitvityGroupUsers.ActivityGroupName = tblCRMActivities.ActivityGroupName) as AssignedUserCount    
   ,(select count(*) from tblCRMActivityActions where tblCRMActivityActions.ActivityID = tblCRMActivities.ActivityID) as UnAssignedUserCount      
   --,ISNULL(tblCRMActivityNotifications.IsRead,0) as IsNotificationRead       
  FROM tblCRMActivities        
  LEFT JOIN tblCustomers ON tblCRMActivities.CustomerNumber = tblCustomers.strCustName        
  LEFT JOIN tblVendors ON tblCRMActivities.VendorNumber = tblVendors.strVendName        
  LEFT JOIN tblInv ON tblCRMActivities.InventoryItemNumber = tblInv.strPartNumber        
  LEFT JOIN tblProjects ON tblCRMActivities.ProjectNumber = tblProjects.strProjNumber        
  --LEFT JOIN tblCRMActivityNotifications on tblCRMActivityNotifications.ActivityID = tblCRMActivities.ActivityID      
  WHERE (        
    tblCRMActivities.CustomerNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@CustomerNumber, ',')        
     )        
    OR ISNULL(@CustomerNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.VendorNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@VendorNumber, ',')        
     )        
    OR ISNULL(@VendorNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.InventoryItemNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@InventoryItemNumber, ',')        
     )        
    OR ISNULL(@InventoryItemNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.ProjectNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ProjectNumber, ',')        
     )        
    OR ISNULL(@ProjectNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.ActivityGroupName IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ActivityGroupName, ',')        
     )        
    OR ISNULL(@ActivityGroupName, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.ActivityStatus IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ActivityStatus, ',')        
     )        
    OR ISNULL(@ActivityStatus, '<<ALL>>') = '<<ALL>>'        
    )      
  AND (        
    tblCRMActivities.ActivityPriority IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ActivityPriority, ',')        
     )        
    OR ISNULL(@ActivityPriority, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.CreatedUser IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@UserName, ',')        
     )        
    OR ISNULL(@UserName, '<<ALL>>') = '<<ALL>>'        
    )       
 AND cast(tblCRMActivities.ActivityDueDate AS DATE) >= cast(GETDATE() AS DATE)    
 AND tblCRMActivities.ActivityStatus in ('NEW','IN PROGRESS')    
   --AND (        
   -- tblCRMActivities.ActivityID IN (        
   -- SELECT DISTINCT t1.ActivityID        
   --  FROM tblCRMActivityActions t1 Inner join tblCRMActivityActionsStatus         
   --  on t1.ActionStatus= tblCRMActivityActionsStatus.StatusType        
   --  WHERE  (tblCRMActivityActionsStatus.StatusGroup in (1,2))        
   --   AND cast(t1.DueDate AS DATE) >= cast(GETDATE() AS DATE)        
   --  )        
   -- )        
   --Or (tblCRMActivities.TransactionNumber = @TransactionNumber )        
   END        
 ELSE IF (@TaskStatus = 'InProgress')        
 BEGIN        
  SELECT tblCRMActivities.ActivityID AS ActivityID        
   ,tblCRMActivities.ActivityName AS ActivityName        
   ,tblCRMActivities.ActivityDescription AS ActivityDescription        
   ,tblCRMActivities.ActivityGroupName AS ActivityGroupName        
   ,tblCRMActivities.ActivityStatus AS ActivityStatus        
   ,tblCRMActivities.ActivityPriority AS ActivityPriority      
   ,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate        
   ,tblCRMActivities.ActivityDueDate AS ActivityDueDate      
   ,tblCRMActivities.IsNotifyOwnerofActions AS IsNotifyOwnerofActions  
    ,tblCRMActivities.IsNotifyGroupofActivity  AS IsNotifyGroupofActivity    
   ,tblCRMActivities.CustomerNumber AS CustomerNumber        
   ,tblCustomers.strCustDesc AS CustomerDescription        
   ,tblCRMActivities.VendorNumber AS VendorNumber        
   ,tblVendors.strVendDesc AS VendorDescription        
   ,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber        
   ,tblInv.strDesc AS InventoryItemDescription        
   ,tblCRMActivities.ProjectNumber AS ProjectNumber        
   ,tblProjects.strProjName AS ProjectDescription        
   ,tblCRMActivities.CustomerContactNo AS CustomerContactNo        
   ,tblCRMActivities.VendorContactNo AS VendorContactNo        
   ,tblCRMActivities.TransactionType AS TransactionType        
   ,tblCRMActivities.TransactionNumber AS TransactionNumber        
   ,tblCRMActivities.CreatedUser AS CreatedUser        
   ,tblCRMActivities.UpdatedUser AS UpdatedUser        
   ,tblCRMActivities.CreatedDate AS CreatedDate        
   ,tblCRMActivities.UpdatedDate AS UpdatedDate        
   ,tblCRMActivities.IsInactive AS IsInactive        
   ,tblCRMActivities.IsSalesGroup AS IsSalesGroup        
   ,tblCRMActivities.SalesPipelineText AS SalesPipelineText        
   ,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage        
   ,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser        
   ,tblCRMActivities.ValueText AS ValueText        
   ,tblCRMActivities.CustomerProspect AS CustomerProspect        
   ,tblCRMActivities.ProsCompanyName AS ProsCompanyName        
   ,tblCRMActivities.ProsContactNo AS ProsContactNo        
   ,tblCRMActivities.ProsEmailId AS ProsEmailId        
   ,tblCRMActivities.ProsAddress AS ProsAddress        
   ,tblCRMActivities.CustPhoneNo AS CustPhoneNo        
   ,tblCRMActivities.CustMobileNo AS CustMobileNo        
   ,tblCRMActivities.CustEmailId AS CustEmailId        
   ,tblCRMActivities.CustAddress AS CustAddress        
   ,tblCRMActivities.ProsName AS ProsName        
   ,(select Count(*) from tblCRMAcitvityGroupUsers where tblCRMAcitvityGroupUsers.ActivityGroupName = tblCRMActivities.ActivityGroupName) as AssignedUserCount      
   ,(select count(*) from tblCRMActivityActions where tblCRMActivityActions.ActivityID = tblCRMActivities.ActivityID) as UnAssignedUserCount    
   --,ISNULL(tblCRMActivityNotifications.IsRead,0) as IsNotificationRead       
  FROM tblCRMActivities        
  LEFT JOIN tblCustomers ON tblCRMActivities.CustomerNumber = tblCustomers.strCustName        
  LEFT JOIN tblVendors ON tblCRMActivities.VendorNumber = tblVendors.strVendName        
  LEFT JOIN tblInv ON tblCRMActivities.InventoryItemNumber = tblInv.strPartNumber        
  LEFT JOIN tblProjects ON tblCRMActivities.ProjectNumber = tblProjects.strProjNumber      
  --LEFT JOIN tblCRMActivityNotifications on tblCRMActivityNotifications.ActivityID = tblCRMActivities.ActivityID        
  WHERE (        
    tblCRMActivities.CustomerNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@CustomerNumber, ',')        
     )        
    OR ISNULL(@CustomerNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.VendorNumber IN (        
     SELECT [VALUE]        
 FROM dbo.fnSplitStringAsTable(@VendorNumber, ',')        
     )        
    OR ISNULL(@VendorNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.InventoryItemNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@InventoryItemNumber, ',')        
     )        
    OR ISNULL(@InventoryItemNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.ProjectNumber IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ProjectNumber, ',')        
     )        
    OR ISNULL(@ProjectNumber, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.ActivityGroupName IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ActivityGroupName, ',')        
     )        
    OR ISNULL(@ActivityGroupName, '<<ALL>>') = '<<ALL>>'        
    )        
   AND (        
    tblCRMActivities.ActivityStatus IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ActivityStatus, ',')        
     )        
    OR ISNULL(@ActivityStatus, '<<ALL>>') = '<<ALL>>'        
    )        
 AND (        
    tblCRMActivities.ActivityPriority IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@ActivityPriority, ',')        
     )        
    OR ISNULL(@ActivityPriority, '<<ALL>>') = '<<ALL>>'        
    )      
   AND (        
    tblCRMActivities.CreatedUser IN (        
     SELECT [VALUE]        
     FROM dbo.fnSplitStringAsTable(@UserName, ',')        
     )        
    OR ISNULL(@UserName, '<<ALL>>') = '<<ALL>>'        
    )     
 AND  (tblCRMActivities.ActivityStatus = 'IN PROGRESS')        
      AND cast(tblCRMActivities.ActivityDueDate AS DATE) >= cast(GETDATE() AS DATE)         
   --AND (        
   -- tblCRMActivities.ActivityID IN (        
   --     SELECT DISTINCT t1.ActivityID        
   --  FROM tblCRMActivityActions t1 Inner join tblCRMActivityActionsStatus         
   --  on t1.ActionStatus= tblCRMActivityActionsStatus.StatusType        
   --  WHERE  (tblCRMActivityActionsStatus.StatusGroup in (2))        
   --   AND cast(t1.DueDate AS DATE) >= cast(GETDATE() AS DATE)        
   --  )        
   -- )        
   --Or (tblCRMActivities.TransactionNumber = @TransactionNumber )        
 END        
END       
GO
/****** Object:  StoredProcedure [dbo].[GetCRMActivityGroupUserFields]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************END [InsertCRMActivityGroupUserFields]***********************************/

/************************START [GetCRMActivityGroupUserFields]***********************************/

CREATE Procedure [dbo].[GetCRMActivityGroupUserFields]
@ActivityGroupName nvarchar(Max)
As
Begin
          Select  FieldId
                 ,ActivityGroupName 
                 ,FieldType 
                 ,FieldName 
                 ,Description 
                 ,IsMandatory 
                 ,DisplayOrder
                 ,ItemList 
                 ,cast((case when FieldType =3 then 1 else 0 end)as bit) as IsEnabledItemList 
				 from tblCRMActivityGroupUserFields 
				 Where ActivityGroupName=@ActivityGroupName 
				 order by DisplayOrder
End
GO
/****** Object:  StoredProcedure [dbo].[GetCRMCalendarDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetActivityActionDocuments] (CRM)**********/

CREATE PROCEDURE [dbo].[GetCRMCalendarDetails]
 @UserName AS NVARCHAR(400)        
 ,@IsAdmin AS BIT        
AS        
BEGIN        
 IF (@IsAdmin = 1)        
 BEGIN        
  SELECT tblCRMActivities.ActivityID        
   ,tblCRMActivities.ActivityName        
   ,tblCRMActivities.ActivityDescription        
   ,tblCRMActivities.ActivityGroupName        
   ,tblCRMActivities.ActivityStatus        
   ,tblCRMActivities.ActivityCreatedDate        
   ,tblCRMActivities.CustomerNumber        
   ,tblCRMActivities.VendorNumber        
   ,tblCRMActivities.InventoryItemNumber        
   ,tblCRMActivities.ProjectNumber        
   ,tblCRMActivities.CustomerContactNo        
   ,tblCRMActivities.VendorContactNo        
   ,tblCRMActivities.TransactionType        
   ,tblCRMActivities.TransactionNumber        
   ,tblCRMActivities.CreatedUser        
   ,tblCRMActivities.IsSalesGroup        
   ,tblCRMActivities.SalesPipelineText        
   ,tblCRMActivities.SalesPipelinePercentage        
   ,tblCRMActivities.ActivityCreatedUser        
   ,tblCRMActivityActions.ActivityActionID        
   ,tblCRMActivityActions.ActionDescription        
   ,tblCRMActivityActions.DueDate        
   ,tblCRMActivityActions.AssignTo        
   ,tblCRMActivityActions.ActionStatus        
   ,tblCRMActivityActions.CreatedDate AS ActionCeatedDate        
   ,tblCRMActivityActions.CreatedUser AS ActionCreatedUser        
   ,tblCRMActivityActions.ActionType       
   ,tblCRMActivityActions.ActionDescription AS Subject               
   ,tblCRMActivityActions.ActionDescription AS Description        
   ,cast(0 AS BIT) AS AllDay        
   ,tblCRMActivities.ActivityGroupName AS Location        
   ,tblCRMActivityActions.AssignTo AS ResourceId    
   ,CONVERT(DATETIME, CONVERT(CHAR(8), tblCRMActivityActions.DueDate, 112) + ' ' + CONVERT(CHAR(8),ISNULL(tblCRMActivityActions.StartTime,'12:00:00 AM'), 108)) AS StartTime   
   ,CONVERT(DATETIME, CONVERT(CHAR(8), tblCRMActivityActions.DueDate, 112) + ' ' + CONVERT(CHAR(8),ISNULL(tblCRMActivityActions.EndTime,'12:00:00 AM'), 108)) AS EndTime            
   ,tblCRMActivityActions.EmailId as EmailId        
   ,tblCRMActivityActions.IsActionReopened as IsActionReopened        
   ,tblCRMActivityActions.ActionReopenedUserName as ActionReopenedUserName        
   ,tblCRMActivityActions.IsNotifyOnSalesDocuments as IsNotifyOnSalesDocuments         
   ,c.strEmail as ActionEmailID        
   ,d.strEmail as ActivityEmailID        
   ,tblCRMActivityActionsStatus.StatusGroup        
   ,tblCRMActivityActions.AssignTo as AssignToold           
   ,10 as Label --Lable BGcolor        
  FROM tblCRMActivities (NOLOCK)        
  INNER JOIN tblCRMActivityActions (NOLOCK) ON tblCRMActivities.ActivityID = tblCRMActivityActions.ActivityID        
  INNER JOIN tblCRMActivityActionsStatus (NOLOCK) on tblCRMActivityActions.ActionStatus=tblCRMActivityActionsStatus.StatusType        
  left join tblUsers c (NOLOCK) on tblCRMActivityActions.CreatedUser=c.strUserName        
  left join tblUsers d (NOLOCK) on tblCRMActivities.ActivityCreatedUser =d.strUserName        
  WHERE tblCRMActivities.IsInactive = 0        
   AND tblCRMActivityActions.IsInactive = 0        
   --and tblCRMActivities.ActivityStatus<>'COMPLETED'         
   AND tblCRMActivityActionsStatus.StatusGroup <> 3     
   AND tblCRMActivityActions.IsCalendar = 1       
 END        
 ELSE        
 BEGIN        
  SELECT tblCRMActivities.ActivityID        
   ,tblCRMActivities.ActivityName        
   ,tblCRMActivities.ActivityDescription        
   ,tblCRMActivities.ActivityGroupName        
   ,tblCRMActivities.ActivityStatus        
   ,tblCRMActivities.ActivityCreatedDate        
   ,tblCRMActivities.CustomerNumber        
   ,tblCRMActivities.VendorNumber        
   ,tblCRMActivities.InventoryItemNumber        
   ,tblCRMActivities.ProjectNumber        
   ,tblCRMActivities.CustomerContactNo        
   ,tblCRMActivities.VendorContactNo        
   ,tblCRMActivities.TransactionType        
   ,tblCRMActivities.TransactionNumber        
   ,tblCRMActivities.CreatedUser        
   ,tblCRMActivities.IsSalesGroup        
   ,tblCRMActivities.SalesPipelineText        
   ,tblCRMActivities.SalesPipelinePercentage        
   ,tblCRMActivities.ActivityCreatedUser        
   ,tblCRMActivityActions.ActivityActionID        
   ,tblCRMActivityActions.ActionDescription        
   ,tblCRMActivityActions.DueDate        
   ,tblCRMActivityActions.AssignTo        
   ,tblCRMActivityActions.ActionStatus        
   ,tblCRMActivityActions.CreatedDate AS ActionCeatedDate        
   ,tblCRMActivityActions.CreatedUser AS ActionCreatedUser        
   ,tblCRMActivityActions.ActionType        
   ,tblCRMActivityActions.ActionDescription AS Subject             
   ,tblCRMActivityActions.ActionDescription AS Description        
   ,cast(0 AS BIT) AS AllDay        
   ,tblCRMActivities.ActivityGroupName AS Location        
   ,tblCRMActivityActions.AssignTo AS ResourceId        
   ,CONVERT(DATETIME, CONVERT(CHAR(8), tblCRMActivityActions.DueDate, 112) + ' ' + CONVERT(CHAR(8),ISNULL(tblCRMActivityActions.StartTime,'12:00:00 AM'), 108)) AS StartTime   
   ,CONVERT(DATETIME, CONVERT(CHAR(8), tblCRMActivityActions.DueDate, 112) + ' ' + CONVERT(CHAR(8),ISNULL(tblCRMActivityActions.EndTime,'12:00:00 AM'), 108)) AS EndTime                  
   ,tblCRMActivityActions.EmailId as EmailId        
   ,tblCRMActivityActions.IsActionReopened as IsActionReopened        
   ,tblCRMActivityActions.ActionReopenedUserName as ActionReopenedUserName        
   ,tblCRMActivityActions.IsNotifyOnSalesDocuments as IsNotifyOnSalesDocuments         
   ,c.strEmail as ActionEmailID        
   ,d.strEmail as ActivityEmailID        
   ,tblCRMActivityActionsStatus.StatusGroup        
   ,tblCRMActivityActions.AssignTo as AssignToold        
   ,10 as Label --Lable BGcolor        
  FROM tblCRMActivities (NOLOCK)        
  INNER JOIN tblCRMActivityActions (NOLOCK) ON tblCRMActivities.ActivityID = tblCRMActivityActions.ActivityID        
  INNER JOIN tblCRMActivityActionsStatus (NOLOCK) on tblCRMActivityActions.ActionStatus=tblCRMActivityActionsStatus.StatusType        
  left join tblUsers c (NOLOCK) on tblCRMActivityActions.CreatedUser=c.strUserName        
  left join tblUsers d (NOLOCK) on tblCRMActivities.ActivityCreatedUser =d.strUserName        
  WHERE tblCRMActivities.IsInactive = 0        
   AND tblCRMActivityActions.IsInactive = 0        
   AND tblCRMActivityActions.AssignTo = @UserName        
   AND tblCRMActivityActionsStatus.StatusGroup <> 3     
   AND tblCRMActivityActions.IsCalendar = 1          
 END        
END
GO
/****** Object:  StoredProcedure [dbo].[GetCRMCustomerDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/********* End [GetUserEmailID] (CRM)**********/

/********* Start [GetCRMCustomerDetails] (CRM)**********/

CREATE PROCEDURE [dbo].[GetCRMCustomerDetails] 
@CustomerNumber NVARCHAR(Max)
AS
BEGIN
	SELECT Count(*)
	FROM tblCRMActivities
	WHERE CustomerNumber = @CustomerNumber
		AND ActivityStatus <> 'COMPLETED'
END
GO
/****** Object:  StoredProcedure [dbo].[GetCRMCustomerDocDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************END [InsertCRMActivitiesActionsTracking]***********************************/

/************************START [GetCRMCustomerDocDetails]***********************************/

CREATE PROCEDURE [dbo].[GetCRMCustomerDocDetails] 
@CustomerNumber NVARCHAR(Max)
,@TransactionNumber NVARCHAR(Max)
AS
BEGIN
	SELECT Count(*)
	FROM tblCRMActivities inner join tblCRMActivityStatus on tblCRMActivities.ActivityStatus=tblCRMActivityStatus.StatusType
	WHERE CustomerNumber =  case when isnull(@CustomerNumber,'')='' then '-' else @CustomerNumber end
	or 
	TransactionNumber=@TransactionNumber
		AND tblCRMActivityStatus.StatusGroup<> 3
END
GO
/****** Object:  StoredProcedure [dbo].[GetCRMOverDueTaskListingRpt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetCRMOverDueTaskListingRpt] 
     @CustomerNumber NVARCHAR(Max)
	,@VendorNumber NVARCHAR(Max)
	,@InventoryItemNumber NVARCHAR(Max)
	,@ProjectNumber NVARCHAR(Max)
	,@ActivityGroupName NVARCHAR(Max)
	,@ActivityName NVARCHAR(Max)
	,@AssignTo NVARCHAR(Max)
	,@CurrentDate DATETIME
AS
BEGIN
	SELECT 
     tblCRMActivities.ActivityID AS ActivityID
	,tblCRMActivities.ActivityName AS ActivityName
	,tblCRMActivities.ActivityGroupName AS ActivityGroupName
	,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate
	,tblCRMActivities.CustomerNumber AS CustomerNumber
	,tblCRMActivities.VendorNumber AS VendorNumber
	,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber
	,tblCRMActivities.ProjectNumber AS ProjectNumber
	,tblCRMActivities.CreatedUser AS CreatedUser
	,tblCRMActivities.UpdatedUser AS UpdatedUser
	,tblCRMActivities.CreatedDate AS CreatedDate
	,tblCRMActivities.UpdatedDate AS UpdatedDate
	,tblCRMActivities.IsInactive AS IsInactive
	,tblCRMActivities.IsSalesGroup AS IsSalesGroup
	,tblCRMActivities.SalesPipelineText AS SalesPipelineText
	,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage
	,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser
	,tblCRMActivityActions.ActivityActionID AS ActivityActionID
	,tblCRMActivityActions.ActionDescription AS ActionDescription
	,tblCRMActivityActions.DueDate AS DueDate
	,tblCRMActivityActions.AssignTo AS AssignTo
	,tblCRMActivityActions.ActionStatus AS ActionStatus
	,tblCRMActivityActions.CreatedDate AS ActionCreatedDate
	,tblCRMActivityActions.UpdateDate AS ActionUpdateDate
	,tblCRMActivityActions.CreatedUser AS ActionCreatedUser
	,tblCRMActivityActions.UpdatedUser AS ActionUpdatedUser
	,tblCRMActivityActions.IsInactive AS ActionIsInactive
	,tblCRMActivityActions.ActionType AS  ActionType
	,(Case When tblCRMActivities.CustomerProspect=0 Then 'Customer'
		When tblCRMActivities.CustomerProspect=1  Then 'Prospect' Else Cast(tblCRMActivities.CustomerProspect AS nvarchar(Max)) END) AS strCustomerProspect
	,tblCRMActivities.CustomerProspect as CustomerProspect
	,tblCRMActivities.ProsCompanyName AS ProsCompanyName
	,tblCustomers.strCustDesc AS CustomerName
	,tblCRMActivities.ProsName as ProsName
	FROM tblCRMActivities
	INNER JOIN tblCRMActivityActions ON tblCRMActivities.ActivityID = tblCRMActivityActions.ActivityID
	INNER JOIN tblCRMActivityActionsStatus ON tblCRMActivityActions.ActionStatus = tblCRMActivityActionsStatus.StatusType
	LEFT JOIN  tblCustomers ON  tblCRMActivities.CustomerNumber=tblCustomers.strCustName
	WHERE tblCRMActivities.IsInactive = 0
		AND tblCRMActivityActions.IsInactive = 0
		and (ISNULL(tblCRMActivities.CustomerNumber,'') = case when ISNULL(@CustomerNumber,'')<>'' and  @CustomerNumber='<<ALL>>' Then ISNULL(tblCRMActivities.CustomerNumber,'')  else @CustomerNumber  end)
		and (ISNULL(tblCRMActivities.VendorNumber,'') = case when ISNULL(@VendorNumber,'')<>'' and  @VendorNumber='<<ALL>>' Then  ISNULL(tblCRMActivities.VendorNumber,'') else @VendorNumber  end)
		and (ISNULL(tblCRMActivities.InventoryItemNumber,'') = case when ISNULL(@InventoryItemNumber,'')<>'' and  @InventoryItemNumber='<<ALL>>' Then  ISNULL(tblCRMActivities.InventoryItemNumber,'') else @InventoryItemNumber end)
		and (ISNULL(tblCRMActivities.ProjectNumber,'') = case when ISNULL(@ProjectNumber,'')<>'' and  @ProjectNumber='<<ALL>>'Then ISNULL(tblCRMActivities.ProjectNumber,'') else @ProjectNumber end)
		AND (
			tblCRMActivities.ActivityGroupName IN (
				(
					SELECT [VALUE]
					FROM fnSplitStringAsTable(@ActivityGroupName, ',')
					)
				)
			OR ISNULL(@ActivityGroupName, '') = ''
			)
		AND (
			tblCRMActivities.ActivityName IN (
				(
					SELECT [VALUE]
					FROM fnSplitStringAsTable(@ActivityName, ',')
					)
				)
			OR ISNULL(@ActivityName, '') = ''
			)
		AND (
			tblCRMActivityActions.AssignTo IN (
				(
					SELECT [VALUE]
					FROM fnSplitStringAsTable(@AssignTo, ',')
					)
				)
			OR ISNULL(@AssignTo, '') = ''
			)
		AND (CONVERT(DATE, tblCRMActivityActions.DueDate) <= CONVERT(DATE, @CurrentDate))
		AND (tblCRMActivityActionsStatus.StatusGroup <> 3)
		Order By tblCRMActivityActions.DueDate 
END
GO
/****** Object:  StoredProcedure [dbo].[GetCRMProductivityTaskRpt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/***************** End [GetCRMTaskListingRpt] (CRM)*******************/

/***************** Start [GetCRMProductivityTaskRpt] (CRM)*******************/

CREATE PROCEDURE [dbo].[GetCRMProductivityTaskRpt] 
     @CustomerNumber NVARCHAR(Max)
    ,@VendorNumber NVARCHAR(Max)
    ,@InventoryItemNumber NVARCHAR(Max)
	,@ProjectNumber NVARCHAR(Max)
	,@ActivityGroupName NVARCHAR(Max)
	,@ActivityName NVARCHAR(Max)
	,@AssignTo NVARCHAR(Max)
	,@ActivityStatus NVARCHAR(Max)
	,@StartDue DATETIME
	,@EndDue DATETIME
	,@SearchByDueCreated int
AS
BEGIN
		SELECT
		     tblCRMActivities.ActivityID AS ActivityID
			,tblCRMActivities.ActivityName AS ActivityName
			,tblCRMActivities.ActivityDescription AS ActivityDescription
			,tblCRMActivities.ActivityGroupName AS ActivityGroupName
			,tblCRMActivities.ActivityStatus AS ActivityStatus
			
			,tblCRMActivities.CustomerNumber AS CustomerNumber
		    ,tblCRMActivities.VendorNumber AS VendorNumber
		    ,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber
		    ,tblCRMActivities.ProjectNumber AS ProjectNumber
			,tblCRMActivities.CustomerContactNo AS CustomerContactNo
			,tblCRMActivities.VendorContactNo AS VendorContactNo
			,tblCRMActivities.TransactionType AS TransactionType
			,tblCRMActivities.TransactionNumber AS TransactionNumber
			,tblCRMActivities.CreatedUser AS CreatedUser
			,tblCRMActivities.UpdatedUser AS UpdatedUser
			,tblCRMActivities.CreatedDate AS CreatedDate
			,tblCRMActivities.UpdatedDate AS UpdatedDate
			,tblCRMActivities.IsInactive AS IsInactive
			,tblCRMActivities.IsSalesGroup AS IsSalesGroup
			,tblCRMActivities.SalesPipelineText AS SalesPipelineText
			,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage
			,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser
			,tblCRMActivityActions.ActivityActionID AS ActivityActionID
			,tblCRMActivityActions.ActionDescription AS ActionDescription
			,tblCRMActivityActions.UpdatedUser AS ActionUpdatedUser
			,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate
			,isnull(tblCRMActivityActions.UpdateDate,tblCRMActivityActions.CreatedDate) AS ActionUpdateDate
			,tblCRMActivityActions.DueDate AS DueDate
			,DATEDIFF(day,Convert(Date,tblCRMActivities.ActivityCreatedDate), Convert(Date,isnull(tblCRMActivityActions.UpdateDate,tblCRMActivityActions.CreatedDate)))+1 AS DayDiffrence
			,tblCRMActivityActions.AssignTo AS AssignTo
			,tblCRMActivityActions.ActionStatus AS ActionStatus
			,tblCRMActivityActions.CreatedDate AS ActionCreatedDate
			
			,tblCRMActivityActions.CreatedUser AS ActionCreatedUser
			,tblCRMActivityActions.IsInactive AS ActionIsInactive
			,tblCRMActivityActions.ActionType AS ActionType
			,case when (DATEDIFF(day,Convert(Date,tblCRMActivities.ActivityCreatedDate), Convert(Date,isnull(tblCRMActivityActions.UpdateDate,tblCRMActivityActions.CreatedDate)))+1)=1 Then 'Green'
					when (DATEDIFF(day,Convert(Date,tblCRMActivities.ActivityCreatedDate), Convert(Date,isnull(tblCRMActivityActions.UpdateDate,tblCRMActivityActions.CreatedDate)))+1) in (2,3) Then 'Blue'
					when (DATEDIFF(day,Convert(Date,tblCRMActivities.ActivityCreatedDate), Convert(Date,isnull(tblCRMActivityActions.UpdateDate,tblCRMActivityActions.CreatedDate)))+1) > 3 Then 'Red'
					else 'Transperent' End as DayColor
            ,(Case When tblCRMActivities.CustomerProspect=0 Then 'Customer'
				   When tblCRMActivities.CustomerProspect=1  Then 'Prospect' Else Cast(tblCRMActivities.CustomerProspect AS nvarchar(Max)) END) AS strCustomerProspect
			,tblCRMActivities.CustomerProspect as CustomerProspect
			,tblCRMActivities.ProsCompanyName AS ProsCompanyName
			,tblCustomers.strCustDesc AS CustomerName
			,tblCRMActivities.ProsName AS ProsName
		FROM tblCRMActivities
		INNER JOIN tblCRMActivityActions ON tblCRMActivities.ActivityID = tblCRMActivityActions.ActivityID
		INNER JOIN tblCRMActivityActionsStatus ON tblCRMActivityActions.ActionStatus = tblCRMActivityActionsStatus.StatusType
		LEFT JOIN  tblCustomers ON  tblCRMActivities.CustomerNumber=tblCustomers.strCustName
		WHERE tblCRMActivities.IsInactive = 0
			AND tblCRMActivityActions.IsInactive = 0                                                   
			and (ISNULL(tblCRMActivities.CustomerNumber,'') = case when ISNULL(@CustomerNumber,'')<>'' and  @CustomerNumber='<<ALL>>' Then ISNULL(tblCRMActivities.CustomerNumber,'')  else @CustomerNumber  end)
			and (ISNULL(tblCRMActivities.VendorNumber,'') = case when ISNULL(@VendorNumber,'')<>'' and  @VendorNumber='<<ALL>>' Then  ISNULL(tblCRMActivities.VendorNumber,'') else @VendorNumber  end)
			and (ISNULL(tblCRMActivities.InventoryItemNumber,'') = case when ISNULL(@InventoryItemNumber,'')<>'' and  @InventoryItemNumber='<<ALL>>' Then  ISNULL(tblCRMActivities.InventoryItemNumber,'') else @InventoryItemNumber end)
			and (ISNULL(tblCRMActivities.ProjectNumber,'') = case when ISNULL(@ProjectNumber,'')<>'' and  @ProjectNumber='<<ALL>>'Then ISNULL(tblCRMActivities.ProjectNumber,'') else @ProjectNumber end)
			AND (
				tblCRMActivities.ActivityGroupName IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@ActivityGroupName, ',')
						)
					)
				OR ISNULL(@ActivityGroupName, '') = ''
				)
			AND (
				tblCRMActivities.ActivityName IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@ActivityName, ',')
						)
					)
				OR ISNULL(@ActivityName, '') = ''
				)
			AND (
				tblCRMActivityActions.AssignTo IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@AssignTo, ',')
						)
					)
				OR ISNULL(@AssignTo, '') = ''
				)
			AND (
				tblCRMActivityActionsStatus.StatusGroup=3
				)
			AND (
				Case When @SearchByDueCreated=1 Then CONVERT(DATE, tblCRMActivityActions.DueDate) ELSE CONVERT(DATE, tblCRMActivities.CreatedDate) END  BETWEEN CONVERT(DATE, @StartDue)
					AND CONVERT(DATE, @EndDue)
				)
		ORDER BY tblCRMActivityActions.AssignTo
			,tblCRMActivities.ActivityGroupName
			,tblCRMActivities.ActivityID
END
GO
/****** Object:  StoredProcedure [dbo].[GetCRMStatusGroupTaskRpt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetCRMStatusGroupTaskRpt] 
	 @StatusGroupType NVARCHAR(Max)
	,@StatusGroupNumber NVARCHAR(Max)
	,@ActivityGroupName NVARCHAR(Max)
	,@ActivityName NVARCHAR(Max)
	,@AssignTo NVARCHAR(Max)
	,@ActivityStatus NVARCHAR(Max)
	,@StartDue DATETIME
	,@EndDue DATETIME
	,@SearchByDueCreated int
AS
BEGIN
	IF (@StatusGroupType = 'AR')
	BEGIN
		SELECT 'Customer Number' AS Header,'Customer Name' AS HeaderName
			,tblCRMActivities.ActivityID AS ActivityID
			,tblCRMActivities.ActivityName AS ActivityName
			,tblCRMActivities.ActivityDescription AS ActivityDescription
			,tblCRMActivities.ActivityGroupName AS ActivityGroupName
			,tblCRMActivities.ActivityStatus AS ActivityStatus
			,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate
			,tblCRMActivities.CustomerNumber AS StatusGroup
			,tblCRMActivities.CustomerContactNo AS CustomerContactNo
			,tblCRMActivities.VendorContactNo AS VendorContactNo
			,tblCRMActivities.TransactionType AS TransactionType
			,tblCRMActivities.TransactionNumber AS TransactionNumber
			,tblCRMActivities.CreatedUser AS CreatedUser
			,tblCRMActivities.UpdatedUser AS UpdatedUser
			,tblCRMActivities.CreatedDate AS CreatedDate
			,tblCRMActivities.UpdatedDate AS UpdatedDate
			,tblCRMActivities.IsInactive AS IsInactive
			,tblCRMActivities.IsSalesGroup AS IsSalesGroup
			,tblCRMActivities.SalesPipelineText AS SalesPipelineText
			,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage
			,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser
			,tblCRMActivityActions.ActivityActionID AS ActivityActionID
			,tblCRMActivityActions.ActionDescription AS ActionDescription
			,tblCRMActivityActions.DueDate AS DueDate
			,tblCRMActivityActions.AssignTo AS AssignTo
			,tblCRMActivityActions.ActionStatus AS ActionStatus
			,tblCRMActivityActions.CreatedDate AS ActionCreatedDate
			,tblCRMActivityActions.UpdateDate AS ActionUpdateDate
			,tblCRMActivityActions.CreatedUser AS ActionCreatedUser
			,tblCRMActivityActions.UpdatedUser AS ActionUpdatedUser
			,tblCRMActivityActions.IsInactive AS ActionIsInactive
			,tblCRMActivityActions.ActionType AS ActionType
			,DATEDIFF(day, tblCRMActivities.ActivityCreatedDate, tblCRMActivityActions.DueDate) AS Diffs
			,tblCustomers.strCustDesc AS StatusGroupName
			,tblCRMActivities.ProsCompanyName AS ProsCompanyName
		FROM tblCRMActivities
		INNER JOIN tblCRMActivityActions ON tblCRMActivities.ActivityID = tblCRMActivityActions.ActivityID
		LEFT JOIN  tblCustomers ON  tblCRMActivities.CustomerNumber=tblCustomers.strCustName
		WHERE tblCRMActivities.IsInactive = 0
			AND tblCRMActivities.TransactionType NOT IN ('Invoice Job','Process Job','Workshop Quotation','Workshop Credit Request','Workshop Credit Note')
			AND tblCRMActivityActions.IsInactive = 0
			AND (ISNULL(tblCRMActivities.CustomerNumber,'') = case when ISNULL(@StatusGroupNumber,'')<>'' and  @StatusGroupNumber='<<ALL>>' Then ISNULL(tblCRMActivities.CustomerNumber,'')  else @StatusGroupNumber  end)
			AND (
				tblCRMActivities.ActivityGroupName IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@ActivityGroupName, ',')
						)
					)
				OR ISNULL(@ActivityGroupName, '') = ''
				)
			AND (
				tblCRMActivities.ActivityName IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@ActivityName, ',')
						)
					)
				OR ISNULL(@ActivityName, '') = ''
				)
			AND (
				tblCRMActivityActions.AssignTo IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@AssignTo, ',')
						)
					)
				OR ISNULL(@AssignTo, '') = ''
				)
			AND (
				ISNULL(tblCRMActivities.ActivityStatus, '') = CASE 
					WHEN ISNULL(@ActivityStatus, '') <> ''
						AND @ActivityStatus = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.ActivityStatus, '')
					ELSE ISNULL(@ActivityStatus, '')
					END
				)
			AND (
				Case When @SearchByDueCreated=1 Then CONVERT(DATE, tblCRMActivityActions.DueDate) ELSE CONVERT(DATE, tblCRMActivities.CreatedDate) END  BETWEEN CONVERT(DATE, @StartDue)
					AND CONVERT(DATE, @EndDue)
				)
		ORDER BY tblCRMActivityActions.AssignTo
			,tblCRMActivities.ActivityGroupName
			,tblCRMActivities.ActivityID
	END
	ELSE IF (@StatusGroupType = 'AP')
	BEGIN
		SELECT 'Supplier Number' AS Header,'Supplier Name' AS HeaderName
			,tblCRMActivities.ActivityID AS ActivityID
			,tblCRMActivities.ActivityName AS ActivityName
			,tblCRMActivities.ActivityDescription AS ActivityDescription
			,tblCRMActivities.ActivityGroupName AS ActivityGroupName
			,tblCRMActivities.ActivityStatus AS ActivityStatus
			,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate
			,tblCRMActivities.VendorNumber AS StatusGroup
			,tblCRMActivities.CustomerContactNo AS CustomerContactNo
			,tblCRMActivities.VendorContactNo AS VendorContactNo
			,tblCRMActivities.TransactionType AS TransactionType
			,tblCRMActivities.TransactionNumber AS TransactionNumber
			,tblCRMActivities.CreatedUser AS CreatedUser
			,tblCRMActivities.UpdatedUser AS UpdatedUser
			,tblCRMActivities.CreatedDate AS CreatedDate
			,tblCRMActivities.UpdatedDate AS UpdatedDate
			,tblCRMActivities.IsInactive AS IsInactive
			,tblCRMActivities.IsSalesGroup AS IsSalesGroup
			,tblCRMActivities.SalesPipelineText AS SalesPipelineText
			,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage
			,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser
			,tblCRMActivityActions.ActivityActionID AS ActivityActionID
			,tblCRMActivityActions.ActionDescription AS ActionDescription
			,tblCRMActivityActions.DueDate AS DueDate
			,tblCRMActivityActions.AssignTo AS AssignTo
			,tblCRMActivityActions.ActionStatus AS ActionStatus
			,tblCRMActivityActions.CreatedDate AS ActionCreatedDate
			,tblCRMActivityActions.UpdateDate AS ActionUpdateDate
			,tblCRMActivityActions.CreatedUser AS ActionCreatedUser
			,tblCRMActivityActions.UpdatedUser AS ActionUpdatedUser
			,tblCRMActivityActions.IsInactive AS ActionIsInactive
			,tblCRMActivityActions.ActionType AS ActionType
			,DATEDIFF(day, tblCRMActivities.ActivityCreatedDate, tblCRMActivityActions.DueDate) AS Diffs
			,tblVendors.strVendDesc AS StatusGroupName
			,tblCRMActivities.ProsCompanyName AS ProsCompanyName
		FROM tblCRMActivities
		INNER JOIN tblCRMActivityActions ON tblCRMActivities.ActivityID = tblCRMActivityActions.ActivityID
		LEFT JOIN  tblVendors ON  tblCRMActivities.VendorNumber=tblVendors.strVendName
		WHERE tblCRMActivities.IsInactive = 0
			AND tblCRMActivityActions.IsInactive = 0
			AND (ISNULL(tblCRMActivities.VendorNumber,'') = case when ISNULL(@StatusGroupNumber,'')<>'' and  @StatusGroupNumber='<<ALL>>' Then ISNULL(tblCRMActivities.VendorNumber,'')  else @StatusGroupNumber  end)
			AND (
				tblCRMActivities.ActivityGroupName IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@ActivityGroupName, ',')
						)
					)
				OR ISNULL(@ActivityGroupName, '') = ''
				)
			AND (
				tblCRMActivities.ActivityName IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@ActivityName, ',')
						)
					)
				OR ISNULL(@ActivityName, '') = ''
				)
			AND (
				tblCRMActivityActions.AssignTo IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@AssignTo, ',')
						)
					)
				OR ISNULL(@AssignTo, '') = ''
				)
			AND (
				ISNULL(tblCRMActivities.ActivityStatus, '') = CASE 
					WHEN ISNULL(@ActivityStatus, '') <> ''
						AND @ActivityStatus = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.ActivityStatus, '')
					ELSE ISNULL(@ActivityStatus, '')
					END
				)
			AND (
				Case When @SearchByDueCreated=1 Then CONVERT(DATE, tblCRMActivityActions.DueDate) ELSE CONVERT(DATE, tblCRMActivities.CreatedDate) END  BETWEEN CONVERT(DATE, @StartDue)
					AND CONVERT(DATE, @EndDue)
				)
		ORDER BY tblCRMActivityActions.AssignTo
			,tblCRMActivities.ActivityGroupName
			,tblCRMActivities.ActivityID
	END
	ELSE IF (@StatusGroupType = 'STK')
	BEGIN
		SELECT 'Item Number' AS Header,'Item Name' AS HeaderName 
			,tblCRMActivities.ActivityID AS ActivityID
			,tblCRMActivities.ActivityName AS ActivityName
			,tblCRMActivities.ActivityDescription AS ActivityDescription
			,tblCRMActivities.ActivityGroupName AS ActivityGroupName
			,tblCRMActivities.ActivityStatus AS ActivityStatus
			,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate
			,tblCRMActivities.InventoryItemNumber AS StatusGroup
			,tblCRMActivities.CustomerContactNo AS CustomerContactNo
			,tblCRMActivities.VendorContactNo AS VendorContactNo
			,tblCRMActivities.TransactionType AS TransactionType
			,tblCRMActivities.TransactionNumber AS TransactionNumber
			,tblCRMActivities.CreatedUser AS CreatedUser
			,tblCRMActivities.UpdatedUser AS UpdatedUser
			,tblCRMActivities.CreatedDate AS CreatedDate
			,tblCRMActivities.UpdatedDate AS UpdatedDate
			,tblCRMActivities.IsInactive AS IsInactive
			,tblCRMActivities.IsSalesGroup AS IsSalesGroup
			,tblCRMActivities.SalesPipelineText AS SalesPipelineText
			,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage
			,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser
			,tblCRMActivityActions.ActivityActionID AS ActivityActionID
			,tblCRMActivityActions.ActionDescription AS ActionDescription
			,tblCRMActivityActions.DueDate AS DueDate
			,tblCRMActivityActions.AssignTo AS AssignTo
			,tblCRMActivityActions.ActionStatus AS ActionStatus
			,tblCRMActivityActions.CreatedDate AS ActionCreatedDate
			,tblCRMActivityActions.UpdateDate AS ActionUpdateDate
			,tblCRMActivityActions.CreatedUser AS ActionCreatedUser
			,tblCRMActivityActions.UpdatedUser AS ActionUpdatedUser
			,tblCRMActivityActions.IsInactive AS ActionIsInactive
			,tblCRMActivityActions.ActionType AS ActionType
			,DATEDIFF(day, tblCRMActivities.ActivityCreatedDate, tblCRMActivityActions.DueDate) AS Diffs
			,tblInv.strDesc AS StatusGroupName
			,tblCRMActivities.ProsCompanyName AS ProsCompanyName
		FROM tblCRMActivities
		INNER JOIN tblCRMActivityActions ON tblCRMActivities.ActivityID = tblCRMActivityActions.ActivityID
		LEFT JOIN  tblInv ON  tblCRMActivities.InventoryItemNumber=tblInv.strPartNumber
		WHERE tblCRMActivities.IsInactive = 0
			AND tblCRMActivityActions.IsInactive = 0
			AND (ISNULL(tblCRMActivities.InventoryItemNumber,'') = case when ISNULL(@StatusGroupNumber,'')<>'' and  @StatusGroupNumber='<<ALL>>' Then ISNULL(tblCRMActivities.InventoryItemNumber,'')  else @StatusGroupNumber  end)
			AND (
				tblCRMActivities.ActivityGroupName IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@ActivityGroupName, ',')
						)
					)
				OR ISNULL(@ActivityGroupName, '') = ''
				)
			AND (
				tblCRMActivities.ActivityName IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@ActivityName, ',')
						)
					)
				OR ISNULL(@ActivityName, '') = ''
				)
			AND (
				tblCRMActivityActions.AssignTo IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@AssignTo, ',')
						)
					)
				OR ISNULL(@AssignTo, '') = ''
				)
			AND (
				ISNULL(tblCRMActivities.ActivityStatus, '') = CASE 
					WHEN ISNULL(@ActivityStatus, '') <> ''
						AND @ActivityStatus = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.ActivityStatus, '')
					ELSE ISNULL(@ActivityStatus, '')
					END
				)
			AND (
				Case When @SearchByDueCreated=1 Then CONVERT(DATE, tblCRMActivityActions.DueDate) ELSE CONVERT(DATE, tblCRMActivities.CreatedDate) END  BETWEEN CONVERT(DATE, @StartDue)
					AND CONVERT(DATE, @EndDue)
				)
		ORDER BY tblCRMActivityActions.AssignTo
			,tblCRMActivities.ActivityGroupName
			,tblCRMActivities.ActivityID
	END
	ELSE IF (@StatusGroupType = 'PRJ')
	BEGIN
		SELECT 'Projects Number' AS Header,'Projects Name' AS HeaderName
			,tblCRMActivities.ActivityID AS ActivityID
			,tblCRMActivities.ActivityName AS ActivityName
			,tblCRMActivities.ActivityDescription AS ActivityDescription
			,tblCRMActivities.ActivityGroupName AS ActivityGroupName
			,tblCRMActivities.ActivityStatus AS ActivityStatus
			,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate
			,tblCRMActivities.ProjectNumber AS StatusGroup
			,tblCRMActivities.CustomerContactNo AS CustomerContactNo
			,tblCRMActivities.VendorContactNo AS VendorContactNo
			,tblCRMActivities.TransactionType AS TransactionType
			,tblCRMActivities.TransactionNumber AS TransactionNumber
			,tblCRMActivities.CreatedUser AS CreatedUser
			,tblCRMActivities.UpdatedUser AS UpdatedUser
			,tblCRMActivities.CreatedDate AS CreatedDate
			,tblCRMActivities.UpdatedDate AS UpdatedDate
			,tblCRMActivities.IsInactive AS IsInactive
			,tblCRMActivities.IsSalesGroup AS IsSalesGroup
			,tblCRMActivities.SalesPipelineText AS SalesPipelineText
			,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage
			,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser
			,tblCRMActivityActions.ActivityActionID AS ActivityActionID
			,tblCRMActivityActions.ActionDescription AS ActionDescription
			,tblCRMActivityActions.DueDate AS DueDate
			,tblCRMActivityActions.AssignTo AS AssignTo
			,tblCRMActivityActions.ActionStatus AS ActionStatus
			,tblCRMActivityActions.CreatedDate AS ActionCreatedDate
			,tblCRMActivityActions.UpdateDate AS ActionUpdateDate
			,tblCRMActivityActions.CreatedUser AS ActionCreatedUser
			,tblCRMActivityActions.UpdatedUser AS ActionUpdatedUser
			,tblCRMActivityActions.IsInactive AS ActionIsInactive
			,tblCRMActivityActions.ActionType AS ActionType
			,DATEDIFF(day, tblCRMActivities.ActivityCreatedDate, tblCRMActivityActions.DueDate) AS Diffs
			,tblProjects.strProjName AS StatusGroupName
			,tblCRMActivities.ProsCompanyName AS ProsCompanyName
		FROM tblCRMActivities
		INNER JOIN tblCRMActivityActions ON tblCRMActivities.ActivityID = tblCRMActivityActions.ActivityID
		LEFT JOIN  tblProjects ON  tblCRMActivities.ProjectNumber=tblProjects.strProjNumber
		WHERE tblCRMActivities.IsInactive = 0
			AND tblCRMActivityActions.IsInactive = 0
			AND (ISNULL(tblCRMActivities.ProjectNumber,'') = case when ISNULL(@StatusGroupNumber,'')<>'' and  @StatusGroupNumber='<<ALL>>' Then ISNULL(tblCRMActivities.ProjectNumber,'')  else @StatusGroupNumber  end)
			AND (
				tblCRMActivities.ActivityGroupName IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@ActivityGroupName, ',')
						)
					)
				OR ISNULL(@ActivityGroupName, '') = ''
				)
			AND (
				tblCRMActivities.ActivityName IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@ActivityName, ',')
						)
					)
				OR ISNULL(@ActivityName, '') = ''
				)
			AND (
				tblCRMActivityActions.AssignTo IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@AssignTo, ',')
						)
					)
				OR ISNULL(@AssignTo, '') = ''
				)
			AND (
				ISNULL(tblCRMActivities.ActivityStatus, '') = CASE 
					WHEN ISNULL(@ActivityStatus, '') <> ''
						AND @ActivityStatus = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.ActivityStatus, '')
					ELSE ISNULL(@ActivityStatus, '')
					END
				)
			AND (
				Case When @SearchByDueCreated=1 Then CONVERT(DATE, tblCRMActivityActions.DueDate) ELSE CONVERT(DATE, tblCRMActivities.CreatedDate) END  BETWEEN CONVERT(DATE, @StartDue)
					AND CONVERT(DATE, @EndDue)
				)
		ORDER BY tblCRMActivityActions.AssignTo
			,tblCRMActivities.ActivityGroupName
			,tblCRMActivities.ActivityID
	END
	ELSE IF (@StatusGroupType = 'Workshop')
	BEGIN
		SELECT 'Customer Number' AS Header,'Customer Name' AS HeaderName
			,tblCRMActivities.ActivityID AS ActivityID
			,tblCRMActivities.ActivityName AS ActivityName
			,tblCRMActivities.ActivityDescription AS ActivityDescription
			,tblCRMActivities.ActivityGroupName AS ActivityGroupName
			,tblCRMActivities.ActivityStatus AS ActivityStatus
			,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate
			,tblCRMActivities.CustomerNumber AS StatusGroup
			,tblCRMActivities.CustomerContactNo AS CustomerContactNo
			,tblCRMActivities.VendorContactNo AS VendorContactNo
			,tblCRMActivities.TransactionType AS TransactionType
			,tblCRMActivities.TransactionNumber AS TransactionNumber
			,tblCRMActivities.CreatedUser AS CreatedUser
			,tblCRMActivities.UpdatedUser AS UpdatedUser
			,tblCRMActivities.CreatedDate AS CreatedDate
			,tblCRMActivities.UpdatedDate AS UpdatedDate
			,tblCRMActivities.IsInactive AS IsInactive
			,tblCRMActivities.IsSalesGroup AS IsSalesGroup
			,tblCRMActivities.SalesPipelineText AS SalesPipelineText
			,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage
			,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser
			,tblCRMActivityActions.ActivityActionID AS ActivityActionID
			,tblCRMActivityActions.ActionDescription AS ActionDescription
			,tblCRMActivityActions.DueDate AS DueDate
			,tblCRMActivityActions.AssignTo AS AssignTo
			,tblCRMActivityActions.ActionStatus AS ActionStatus
			,tblCRMActivityActions.CreatedDate AS ActionCreatedDate
			,tblCRMActivityActions.UpdateDate AS ActionUpdateDate
			,tblCRMActivityActions.CreatedUser AS ActionCreatedUser
			,tblCRMActivityActions.UpdatedUser AS ActionUpdatedUser
			,tblCRMActivityActions.IsInactive AS ActionIsInactive
			,tblCRMActivityActions.ActionType AS ActionType
			,DATEDIFF(day, tblCRMActivities.ActivityCreatedDate, tblCRMActivityActions.DueDate) AS Diffs
			,tblCustomers.strCustDesc AS StatusGroupName
			,tblCRMActivities.ProsCompanyName AS ProsCompanyName
		FROM tblCRMActivities
		INNER JOIN tblCRMActivityActions ON tblCRMActivities.ActivityID = tblCRMActivityActions.ActivityID
		LEFT JOIN  tblCustomers ON  tblCRMActivities.CustomerNumber=tblCustomers.strCustName
		WHERE tblCRMActivities.IsInactive = 0
			AND tblCRMActivities.TransactionType IN ('Invoice Job','Process Job','Workshop Quotation','Workshop Credit Request','Workshop Credit Note')
			AND tblCRMActivityActions.IsInactive = 0
			AND (ISNULL(tblCRMActivities.CustomerNumber,'') = case when ISNULL(@StatusGroupNumber,'')<>'' and  @StatusGroupNumber='<<ALL>>' Then ISNULL(tblCRMActivities.CustomerNumber,'')  else @StatusGroupNumber  end)
			AND (
				tblCRMActivities.ActivityGroupName IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@ActivityGroupName, ',')
						)
					)
				OR ISNULL(@ActivityGroupName, '') = ''
				)
			AND (
				tblCRMActivities.ActivityName IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@ActivityName, ',')
						)
					)
				OR ISNULL(@ActivityName, '') = ''
				)
			AND (
				tblCRMActivityActions.AssignTo IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@AssignTo, ',')
						)
					)
				OR ISNULL(@AssignTo, '') = ''
				)
			AND (
				ISNULL(tblCRMActivities.ActivityStatus, '') = CASE 
					WHEN ISNULL(@ActivityStatus, '') <> ''
						AND @ActivityStatus = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.ActivityStatus, '')
					ELSE ISNULL(@ActivityStatus, '')
					END
				)
			AND (
				Case When @SearchByDueCreated=1 Then CONVERT(DATE, tblCRMActivityActions.DueDate) ELSE CONVERT(DATE, tblCRMActivities.CreatedDate) END  BETWEEN CONVERT(DATE, @StartDue)
					AND CONVERT(DATE, @EndDue)
				)
		ORDER BY tblCRMActivityActions.AssignTo
			,tblCRMActivities.ActivityGroupName
			,tblCRMActivities.ActivityID

	END
	else
	Begin
	SELECT 'Customer Number' AS Header,'Customer Name' AS HeaderName
			,tblCRMActivities.ActivityID AS ActivityID
			,tblCRMActivities.ActivityName AS ActivityName
			,tblCRMActivities.ActivityDescription AS ActivityDescription
			,tblCRMActivities.ActivityGroupName AS ActivityGroupName
			,tblCRMActivities.ActivityStatus AS ActivityStatus
			,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate
			,tblCRMActivities.CustomerNumber AS StatusGroup
			,tblCRMActivities.CustomerContactNo AS CustomerContactNo
			,tblCRMActivities.VendorContactNo AS VendorContactNo
			,tblCRMActivities.TransactionType AS TransactionType
			,tblCRMActivities.TransactionNumber AS TransactionNumber
			,tblCRMActivities.CreatedUser AS CreatedUser
			,tblCRMActivities.UpdatedUser AS UpdatedUser
			,tblCRMActivities.CreatedDate AS CreatedDate
			,tblCRMActivities.UpdatedDate AS UpdatedDate
			,tblCRMActivities.IsInactive AS IsInactive
			,tblCRMActivities.IsSalesGroup AS IsSalesGroup
			,tblCRMActivities.SalesPipelineText AS SalesPipelineText
			,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage
			,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser
			,tblCRMActivityActions.ActivityActionID AS ActivityActionID
			,tblCRMActivityActions.ActionDescription AS ActionDescription
			,tblCRMActivityActions.DueDate AS DueDate
			,tblCRMActivityActions.AssignTo AS AssignTo
			,tblCRMActivityActions.ActionStatus AS ActionStatus
			,tblCRMActivityActions.CreatedDate AS ActionCreatedDate
			,tblCRMActivityActions.UpdateDate AS ActionUpdateDate
			,tblCRMActivityActions.CreatedUser AS ActionCreatedUser
			,tblCRMActivityActions.UpdatedUser AS ActionUpdatedUser
			,tblCRMActivityActions.IsInactive AS ActionIsInactive
			,tblCRMActivityActions.ActionType AS ActionType
			,DATEDIFF(day, tblCRMActivities.ActivityCreatedDate, tblCRMActivityActions.DueDate) AS Diffs
			,tblCustomers.strCustDesc AS StatusGroupName
			,tblCRMActivities.ProsCompanyName AS ProsCompanyName
		FROM tblCRMActivities
		INNER JOIN tblCRMActivityActions ON tblCRMActivities.ActivityID = tblCRMActivityActions.ActivityID
		LEFT JOIN  tblCustomers ON  tblCRMActivities.CustomerNumber=tblCustomers.strCustName
		WHERE tblCRMActivities.IsInactive = 0
			AND tblCRMActivityActions.IsInactive = 0
			AND (ISNULL(tblCRMActivities.CustomerNumber,'') = case when ISNULL(@StatusGroupNumber,'')<>'' and  @StatusGroupNumber='<<ALL>>' Then ISNULL(tblCRMActivities.CustomerNumber,'')  else @StatusGroupNumber  end)
			AND (
				tblCRMActivities.ActivityGroupName IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@ActivityGroupName, ',')
						)
					)
				OR ISNULL(@ActivityGroupName, '') = ''
				)
			AND (
				tblCRMActivities.ActivityName IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@ActivityName, ',')
						)
					)
				OR ISNULL(@ActivityName, '') = ''
				)
			AND (
				tblCRMActivityActions.AssignTo IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@AssignTo, ',')
						)
					)
				OR ISNULL(@AssignTo, '') = ''
				)
			AND (
				ISNULL(tblCRMActivities.ActivityStatus, '') = CASE 
					WHEN ISNULL(@ActivityStatus, '') <> ''
						AND @ActivityStatus = '<<ALL>>'
						THEN ISNULL(tblCRMActivities.ActivityStatus, '')
					ELSE ISNULL(@ActivityStatus, '')
					END
				)
			AND (
				Case When @SearchByDueCreated=1 Then CONVERT(DATE, tblCRMActivityActions.DueDate) ELSE CONVERT(DATE, tblCRMActivities.CreatedDate) END  BETWEEN CONVERT(DATE, @StartDue)
					AND CONVERT(DATE, @EndDue)
				)
		ORDER BY tblCRMActivityActions.AssignTo
			,tblCRMActivities.ActivityGroupName
			,tblCRMActivities.ActivityID
	end
END
GO
/****** Object:  StoredProcedure [dbo].[GetCRMTaskListingRpt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/********* End [DeleteCRMActivityAction] (CRM)**********/

/***************** Start [GetCRMTaskListingRpt] (CRM)*******************/


CREATE Procedure [dbo].[GetCRMTaskListingRpt]
  @CustomerNumber nvarchar(Max)
 ,@VendorNumber nvarchar(Max)
 ,@InventoryItemNumber nvarchar(Max)
 ,@ProjectNumber nvarchar(Max)	
 ,@ActivityGroupName nvarchar(Max)
 ,@ActivityName nvarchar(Max)
 ,@ActivityStatus  nvarchar(Max)
 ,@AssignTo  nvarchar(Max)
 ,@StartDue datetime
 ,@EndDue datetime
 ,@SearchByDueCreated int
 AS
BEGIN
			SELECT 
			     tblCRMActivities.ActivityID AS ActivityID
				,tblCRMActivities.ActivityName AS ActivityName
				,tblCRMActivities.ActivityDescription AS ActivityDescription
				,tblCRMActivities.ActivityGroupName AS ActivityGroupName
				,tblCRMActivities.ActivityStatus AS ActivityStatus
				,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate
				,tblCRMActivities.CustomerNumber AS CustomerNumber
				,tblCRMActivities.VendorNumber AS VendorNumber
				,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber
				,tblCRMActivities.ProjectNumber AS ProjectNumber
				--,tblCRMActivities.CustomerContactNo AS CustomerContactNo
				--,tblCRMActivities.VendorContactNo AS VendorContactNo
				,tblCRMActivities.TransactionType AS TransactionType
				,tblCRMActivities.TransactionNumber AS TransactionNumber
				,tblCRMActivities.CreatedUser AS CreatedUser
				,tblCRMActivities.UpdatedUser AS UpdatedUser
				,tblCRMActivities.CreatedDate AS CreatedDate
				,tblCRMActivities.UpdatedDate AS UpdatedDate
				,tblCRMActivities.IsInactive AS IsInactive
				,tblCRMActivities.IsSalesGroup AS IsSalesGroup
				,tblCRMActivities.SalesPipelineText AS SalesPipelineText
				,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage
				,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser
				,tblCRMActivityActions.ActivityActionID AS ActivityActionID
				,tblCRMActivityActions.ActionDescription AS ActionDescription
				,tblCRMActivityActions.DueDate AS DueDate
				,tblCRMActivityActions.AssignTo AS AssignTo
				,tblCRMActivityActions.ActionStatus AS ActionStatus
				,tblCRMActivityActions.CreatedDate AS ActionCreatedDate
				,tblCRMActivityActions.UpdateDate AS ActionUpdateDate
				,tblCRMActivityActions.CreatedUser AS ActionCreatedUser
				,tblCRMActivityActions.UpdatedUser AS ActionUpdatedUser
				,tblCRMActivityActions.IsInactive AS ActionIsInactive
				,tblCRMActivityActions.ActionType AS  ActionType
				,tblCustomers.strCustDesc AS CustomerName
				,tblCRMActivities.ValueText AS ValueText
				,tblCRMActivities.ProsCompanyName AS ProsCompanyName
				,tblCRMActivities.ProsAddress AS ProsAddress
				,tblCRMActivities.ProsContactNo AS ProsContactNo
				,tblCRMActivities.ProsEmailId AS ProsEmailId
				,tblCRMActivities.CustPhoneNo AS CustPhoneNo
				,tblCRMActivities.CustMobileNo AS CustMobileNo
				,tblCRMActivities.CustEmailId AS CustEmailId
				,tblCRMActivities.CustAddress AS CustAddress
				,tblCRMActivities.CustomerProspect  AS CustomerProspect
				,tblCRMActivities.ProsName AS ProsName
			FROM tblCRMActivities
			INNER JOIN tblCRMActivityActions ON 
			tblCRMActivities.ActivityID = tblCRMActivityActions.ActivityID
			Left Join tblCustomers ON  tblCRMActivities.CustomerNumber=tblCustomers.strCustName
			Where tblCRMActivities.IsInactive=0
			and tblCRMActivityActions.IsInactive=0
			and (ISNULL(tblCRMActivities.CustomerNumber,'') = case when ISNULL(@CustomerNumber,'')<>'' and  @CustomerNumber='<<ALL>>' Then ISNULL(tblCRMActivities.CustomerNumber,'')  else @CustomerNumber  end)
			and (ISNULL(tblCRMActivities.VendorNumber,'') = case when ISNULL(@VendorNumber,'')<>'' and  @VendorNumber='<<ALL>>' Then  ISNULL(tblCRMActivities.VendorNumber,'') else @VendorNumber  end)
			and (ISNULL(tblCRMActivities.InventoryItemNumber,'') = case when ISNULL(@InventoryItemNumber,'')<>'' and  @InventoryItemNumber='<<ALL>>' Then  ISNULL(tblCRMActivities.InventoryItemNumber,'') else @InventoryItemNumber end)
			and (ISNULL(tblCRMActivities.ProjectNumber,'') = case when ISNULL(@ProjectNumber,'')<>'' and  @ProjectNumber='<<ALL>>'Then ISNULL(tblCRMActivities.ProjectNumber,'') else @ProjectNumber end)
			and (tblCRMActivities.ActivityGroupName in ((SELECT [VALUE] FROM fnSplitStringAsTable(@ActivityGroupName, ','))) OR ISNULL(@ActivityGroupName,'')='')
			and (tblCRMActivities.ActivityName in ((SELECT [VALUE] FROM fnSplitStringAsTable(@ActivityName, ','))) OR ISNULL(@ActivityName,'')='')
			and (ISNULL(tblCRMActivities.ActivityStatus,'') = case when ISNULL(@ActivityStatus,'')<>'' and  @ActivityStatus='<<ALL>>' Then ISNULL(tblCRMActivities.ActivityStatus,'') else ISNULL(@ActivityStatus,'') end)
			and (tblCRMActivityActions.AssignTo in ((SELECT [VALUE] FROM fnSplitStringAsTable(@AssignTo, ','))) OR ISNULL(@AssignTo,'')='')
			and ((CASE WHEN @SearchByDueCreated=1 then 
				Cast(tblCRMActivityActions.DueDate as date) ELSE Cast(tblCRMActivityActions.CreatedDate as date) END)  between Cast(@StartDue as date) and Cast(@EndDue as date))
End
GO
/****** Object:  StoredProcedure [dbo].[GetCRMUserFieldList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************END [UpdateCRMDocumentDetails]***********************************/

/************************Start [GetCRMUserFieldList]***********************************/

Create Procedure [dbo].[GetCRMUserFieldList]
AS
BEGIN
	SELECT Id,FieldType,IsInactive FROM tblCRMFieldTypeMaster order by ID
END
GO
/****** Object:  StoredProcedure [dbo].[GetCurrencyDataFromCustomer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetCurrencyDataFromCustomer] @CustName AS VARCHAR(100)
AS
BEGIN
	SELECT strCurrency AS Currency
		,bitWithholdTax AS IsWithholdTax
		,strWithholdTaxCode AS WithholdTaxCode
		,intNAPrintMethod AS NAPrintMethod
		,bitIsHP AS IsHP
	FROM tblCustomers
	INNER JOIN tblTerms ON tblCustomers.strTerm = tblTerms.strTerm
	WHERE strCustName = @CustName
END
GO
/****** Object:  StoredProcedure [dbo].[GetCurrencyList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetCurrencyList]
AS
SELECT DISTINCT Z.CurrencyCode 'PPCurrency', tblUtilityPervCurrencyFile.CurrDesc 'CurrName' FROM (SELECT DISTINCT CurrencyCode FROM tblUtilityPervCustomerMaster UNION ALL SELECT DISTINCT CurrencyCode FROM tblUtilityPervSupplierMaster UNION ALL SELECT DISTINCT CurrencyCode FROM tblUtilityPervHistoryHeader) Z INNER JOIN tblUtilityPervCurrencyFile ON Z.CurrencyCode = tblUtilityPervCurrencyFile.CurrCode ORDER BY Z.CurrencyCode
GO
/****** Object:  StoredProcedure [dbo].[GetCurrencySymbolVend]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [DeleteApproversVendEmpLimits]***********/

/*********** Start [GetCurrencySymbolVend]***********/

---------------------------------
CREATE PROCEDURE [dbo].[GetCurrencySymbolVend] @VendorName AS NVARCHAR(100)
AS
BEGIN
	SELECT c.strCurrSymbol AS CurrencySymbol
	FROM tblVendors V
	INNER JOIN tblCurrency C ON c.strCurrency = v.strCurrency
	WHERE strVendName = @VendorName
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerAdvanceSearchData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
CREATE PROCEDURE [dbo].[GetCustomerAdvanceSearchData] (
	@FieldName NVARCHAR(MAX) = NULL
	,@SearchText NVARCHAR(MAX) = NULL	
	,@PageIndex int = 1
	,@PageSize int = 0
	,@UserName NVARCHAR(MAX) = NULL
	)
AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @Sql nvarchar(MAX)
	DECLARE @Where nvarchar(MAX)
	DECLARE @Query nvarchar(MAX)
	DECLARE @TotalRows INT
	DECLARE @TotalPages INT
	DECLARE @StartRowIndex INT
	,@EndRowIndex INT;
	DECLARE @EmailFieldName Varchar(5)

	
	SET @TotalRows = 0
	SET @TotalPages = 0
	IF ISNULL(@FieldName,'') = ''
	BEGIN
		SET @FieldName = 'NoNameContact'
		SET @EmailFieldName = 'Email'
	END
	SET @Query = 'SELECT ROW_NUMBER() OVER(ORDER BY strCustName) AS RowNumber
		,strCustName AS CustomerName
		,strCustDesc AS CustomerDescription
		,strEmail As CustomerEmail
		,strContact AS Contact
		,strStreet1 AS Street1
		,strStreet2 AS Street2
		,strCity AS City
		,strProvince AS Province
		,strPostal AS Postal
		,strPhone AS Phone
		,strCellPhone AS CellPhone
		,strFax AS Fax
		,strField1 AS Field1
		,strField2 AS Field2
		,strField3 AS Field3
		,strField4 AS Field4
		,strField5 AS Field5
		,strField6 AS Field6
		,strField7 AS Field7
		,strField8 AS Field8
		,strField9 AS Field9
		,strField10 AS Field10
		,strField11 AS Field11
		,strField12 AS Field12
		,strField13 AS Field13
		,strField14 AS Field14
		,strField15 AS Field15
		,strField16 AS Field16
		,strField17 AS Field17
		,strField18 AS Field18

	FROM tblCustomers';
	SET @Where = 'bitInactive = 0
		AND tblCustomers.strCustCategory IN 
		(
			SELECT tblCustomerCat.strCustCategory
				FROM tblCustomerCat
				LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
				WHERE ISNULL((
							SELECT COUNT(tblCustomerCatSec.strCustCategory)
							FROM tblCustomerCatSec
							WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
							), 0) = 0
					OR (
						ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) > 0
						AND tblCustomerCatSec.strUserName = @UserName
						)
		)
		AND (
			(
				@SearchText IS NULL OR @SearchText = '''' OR (tblCustomers.strCustName LIKE ''%''+@SearchText+''%''	AND @FieldName = ''NoNameContact'')
				OR (tblCustomers.strContact LIKE ''%''+@SearchText+''%''   AND @FieldName = ''NoNameContact'')
				OR (tblCustomers.strCustDesc LIKE ''%''+@SearchText+''%'' AND @FieldName = ''NoNameContact''
					)
				)
				OR (@SearchText IS NULL OR @SearchText = '''' OR (tblCustomers.strEmail LIKE ''%''+@SearchText+''%''   AND @FieldName = @EmailFieldName))
			OR (
				(
					tblCustomers.strStreet1 LIKE ''%''+@SearchText+''%''
					AND @FieldName = ''AllAddress''
					)
				OR (
					tblCustomers.strStreet2 LIKE ''%''+@SearchText+''%''
					AND @FieldName = ''AllAddress''
					)
				OR (
					tblCustomers.strCity LIKE ''%''+@SearchText+''%''
					AND @FieldName = ''AllAddress''
					)
				OR (
					tblCustomers.strProvince LIKE ''%''+@SearchText+''%''
					AND @FieldName = ''AllAddress''
					)
				OR (
					tblCustomers.strPostal LIKE ''%''+@SearchText+''%''
					AND @FieldName = ''AllAddress''
					)
				)
			OR (
				(
					tblCustomers.strPhone LIKE ''%''+@SearchText+''%''
					AND @FieldName = ''AllPhone''
					)
				OR (
					tblCustomers.strCellPhone LIKE ''%''+@SearchText+''%''
					AND @FieldName = ''AllPhone''
					)
				OR (
					tblCustomers.strFax LIKE ''%''+@SearchText+''%''
					AND @FieldName = ''AllPhone''
					)
				)
			OR (
				tblCustomers.strField1 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField1''
				)
			OR (
				tblCustomers.strField2 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField2''
				)
			OR (
				tblCustomers.strField3 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField3''
				)
			OR (
				tblCustomers.strField4 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField4''
				)
			OR (
				tblCustomers.strField5 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField5''
				)
			OR (
				tblCustomers.strField6 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField6''
				)
			OR (
				tblCustomers.strField7 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField7''
				)
			OR (
				tblCustomers.strField8 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField8''
				)
			OR (
				tblCustomers.strField9 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField9''
				)
			OR (
				tblCustomers.strField10 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField10''
				)
			OR (
				tblCustomers.strField11 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField11''
				)
			OR (
				tblCustomers.strField12 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField12''
				)
			OR (
				tblCustomers.strField13 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField13''
				)
			OR (
				tblCustomers.strField14 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField14''
				)
			OR (
				tblCustomers.strField15 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField15''
				)
			OR (
				tblCustomers.strField16 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField16''
				)
			OR (
				tblCustomers.strField17 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField17''
				)
			OR (
				tblCustomers.strField18 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField18''
				)
			OR (
				tblCustomers.strField12 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField12''
				)
			)'


	SET @Sql = ';WITH CTE AS('+@Query+' WHERE '+@Where+')'
	IF(@PageSize = 0)
	BEGIN
		SET @Sql = @Sql + ' SELECT * FROM CTE;'
	END
	ELSE
	BEGIN
		SELECT @StartRowIndex = ((@PageIndex - 1) * @PageSize) + 1;
		SELECT @EndRowIndex = @StartRowIndex + @PageSize - 1;

		
		DECLARE @TotalRecords NVARCHAR(MAX) = 'SELECT @temp = COUNT(1) FROM tblCustomers WHERE ' + @Where + ''
	
		EXEC sp_executesql @TotalRecords, 
							N'@SearchText NVARCHAR(MAX), @FieldName NVARCHAR(MAX),@EmailFieldName NVARCHAR(5), @UserName NVARCHAR(MAX), @temp int out'
							,@SearchText=@SearchText,@FieldName=@FieldName,@EmailFieldName=@EmailFieldName,@UserName=@UserName,@temp=@TotalRows OUTPUT
	
		SELECT @TotalPages = CEILING(@TotalRows / @PageSize)

		IF @TotalRows > @TotalPages * @PageSize
			SET @TotalPages = @TotalPages + 1

		SET @Sql = @Sql + ' SELECT *,'+ CAST(@TotalRows AS VARCHAR) + ' AS TotalRows,'+CAST(@TotalPages AS VARCHAR)+' AS TotalPages FROM CTE WHERE RowNumber BETWEEN ' + cast(@StartRowIndex AS VARCHAR) + ' AND ' + cast(@EndRowIndex AS VARCHAR) + ' ;'
	END
	
	  exec sp_executesql @Sql, 
                        N'@SearchText NVARCHAR(MAX), @FieldName NVARCHAR(MAX),@EmailFieldName NVARCHAR(5),@UserName NVARCHAR(MAX)', 
                        @SearchText=@SearchText,@FieldName=@FieldName,@EmailFieldName=@EmailFieldName,@UserName=@UserName
END;
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerAdvanceSearchDataWebStore]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetCustomerAdvanceSearchDataWebStore] (
	@FieldName NVARCHAR(MAX) = NULL
	,@SearchText NVARCHAR(MAX) = NULL
	,@LastUpdated DATETIME = NULL
	,@PageIndex int = 1
	,@PageSize int = 0		
	)
AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @Sql nvarchar(MAX)
	DECLARE @Where nvarchar(MAX)
	DECLARE @Query nvarchar(MAX)
	DECLARE @TotalRows INT
	DECLARE @TotalPages INT
	DECLARE @StartRowIndex INT
	,@EndRowIndex INT;
	DECLARE @EmailFieldName Varchar(5)

		
	SET @TotalRows = 0
	SET @TotalPages = 0
	IF ISNULL(@FieldName,'') = ''
	BEGIN
		SET @FieldName = 'NoNameContact'
		SET @EmailFieldName = 'Email'
	END
	SET @Query = 'SELECT ROW_NUMBER() OVER(ORDER BY tblCustomers.strCustName) AS RowNumber
		,tblCustomers.strCustName AS CustomerName
		,tblCustomers.strCustDesc AS CustomerDescription
		,tblCustomers.strEmail As CustomerEmail
		,tblCustomers.strContact AS Contact
		,tblCustomers.strStreet1 AS Street1
		,tblCustomers.strStreet2 AS Street2
		,tblCustomers.strCity AS City
		,tblCustomers.strProvince AS Province
		,tblCustomers.strPostal AS Postal
		,tblCustomers.strPhone AS Phone
		,tblCustomers.strCellPhone AS CellPhone
		,tblCustomers.strFax AS Fax
		,tblCustomers.strField1 AS Field1
		,tblCustomers.strField2 AS Field2
		,tblCustomers.strField3 AS Field3
		,tblCustomers.strField4 AS Field4
		,tblCustomers.strField5 AS Field5
		,tblCustomers.strField6 AS Field6
		,tblCustomers.strField7 AS Field7
		,tblCustomers.strField8 AS Field8
		,tblCustomers.strField9 AS Field9
		,tblCustomers.strField10 AS Field10
		,tblCustomers.strField11 AS Field11
		,tblCustomers.strField12 AS Field12
		,tblCustomers.strPricelist AS Pricelist
		,tblCustomers.decCreditLimit AS CreditLimit
		,tblCustomers.dteCreditLimitExpiryDate AS CreditLimitExpiryDate
		,tblCustomers.strCustCategory AS CustCategory
		,tblCustomers.strCountry AS Country
		,tblCustomers.strCountryCode AS CountryCode
		,tblCustomers.strTerm AS Term
		,tblCustomers.intDept AS Department
		,tbldepartments.strDesc AS DepartmentDesc
		,tblCustomers.strCurrency AS Currency
		,tblCustomers.strNotes AS Notes
		,tblCustomers.strTaxCode AS TaxCode
		,tblCustomerSales.strSalesName AS SalesName
		,tblCustomers.blnIsSynctwebstore AS IsSynctwebstore
		,tblCustomers.strWebstoreEmail AS WebstoreEmail
		,tblCustomers.strValueBased AS ValueBased
	FROM tblCustomers LEFT JOIN tblCustomerSales ON tblCustomers.strCustName = tblCustomerSales.strCustName
		LEFT JOIN tbldepartments ON tbldepartments.intDept = tblCustomers.intDept';
	SET @Where = 'tblCustomers.bitInactive = 0
		AND (ISNULL(@LastUpdated,'''')='''' OR tblCustomers.dteUpdated >= @LastUpdated)
		AND (
			(@SearchText IS NULL OR @SearchText = '''' 
				OR (tblCustomers.strCustName LIKE ''%''+@SearchText+''%'' AND @FieldName = ''NoNameContact'')
				OR (tblCustomers.strContact LIKE ''%''+@SearchText+''%''   AND @FieldName = ''NoNameContact'')
				OR (tblCustomers.strCustDesc LIKE ''%''+@SearchText+''%'' AND @FieldName = ''NoNameContact'')
				OR (tblCustomers.strEmail LIKE ''%''+@SearchText+''%'' AND @EmailFieldName = ''Email'')
			)					
			OR (tblCustomers.strStreet1 LIKE ''%''+@SearchText+''%'' AND @FieldName = ''AllAddress'')
			OR (tblCustomers.strStreet2 LIKE ''%''+@SearchText+''%'' AND @FieldName = ''AllAddress'')
			OR (tblCustomers.strCity LIKE ''%''+@SearchText+''%'' AND @FieldName = ''AllAddress'')
			OR (tblCustomers.strProvince LIKE ''%''+@SearchText+''%'' AND @FieldName = ''AllAddress'')
			OR (tblCustomers.strPostal LIKE ''%''+@SearchText+''%'' AND @FieldName = ''AllAddress'')				
			OR (tblCustomers.strPhone LIKE ''%''+@SearchText+''%'' AND @FieldName = ''AllPhone'')
			OR (tblCustomers.strCellPhone LIKE ''%''+@SearchText+''%'' AND @FieldName = ''AllPhone'')
			OR (tblCustomers.strFax LIKE ''%''+@SearchText+''%'' AND @FieldName = ''AllPhone'')				
			OR (tblCustomers.strField1 LIKE ''%''+@SearchText+''%'' AND @FieldName = ''strField1'')
			OR (tblCustomers.strField2 LIKE ''%''+@SearchText+''%'' AND @FieldName = ''strField2'')
			OR (tblCustomers.strField3 LIKE ''%''+@SearchText+''%'' AND @FieldName = ''strField3'')
			OR (tblCustomers.strField4 LIKE ''%''+@SearchText+''%'' AND @FieldName = ''strField4'')
			OR (tblCustomers.strField5 LIKE ''%''+@SearchText+''%'' AND @FieldName = ''strField5'')
			OR (tblCustomers.strField6 LIKE ''%''+@SearchText+''%'' AND @FieldName = ''strField6'')
			OR (tblCustomers.strField7 LIKE ''%''+@SearchText+''%'' AND @FieldName = ''strField7'')
			OR (tblCustomers.strField8 LIKE ''%''+@SearchText+''%'' AND @FieldName = ''strField8'')
			OR (tblCustomers.strField9 LIKE ''%''+@SearchText+''%'' AND @FieldName = ''strField9'')
			OR (tblCustomers.strField10 LIKE ''%''+@SearchText+''%'' AND @FieldName = ''strField10'')
			OR (tblCustomers.strField11 LIKE ''%''+@SearchText+''%'' AND @FieldName = ''strField11'')
			OR (tblCustomers.strField12 LIKE ''%''+@SearchText+''%'' AND @FieldName = ''strField12'')
			OR (tblCustomers.strWebstoreEmail LIKE ''%''+@SearchText+''%'')			
			)'
			
	SET @Sql = ';WITH CTE AS('+@Query+' WHERE '+@Where+')'
	print @Sql
	IF(@PageSize = 0)
	BEGIN
		SET @Sql = @Sql + ' SELECT * FROM CTE;'
	END
	ELSE
	BEGIN
		SELECT @StartRowIndex = ((@PageIndex - 1) * @PageSize) + 1;
		SELECT @EndRowIndex = @StartRowIndex + @PageSize - 1;

			
		DECLARE @TotalRecords NVARCHAR(MAX) = 'SELECT @temp = COUNT(1) FROM tblCustomers WHERE ' + @Where + ''
		
		EXEC sp_executesql @TotalRecords, 
							N'@SearchText NVARCHAR(MAX), @FieldName NVARCHAR(MAX),@EmailFieldName NVARCHAR(5),@LastUpdated DATETIME,@temp int out'
							,@SearchText=@SearchText,@FieldName=@FieldName,@EmailFieldName=@EmailFieldName,@LastUpdated=@LastUpdated,@temp=@TotalRows OUTPUT
		
		SELECT @TotalPages = CEILING(@TotalRows / @PageSize)

		IF @TotalRows > @TotalPages * @PageSize
			SET @TotalPages = @TotalPages + 1

		SET @Sql = @Sql + ' SELECT *,'+ CAST(@TotalRows AS VARCHAR) + ' AS TotalRows,'+CAST(@TotalPages AS VARCHAR)+' AS TotalPages FROM CTE WHERE RowNumber BETWEEN ' + cast(@StartRowIndex AS VARCHAR) + ' AND ' + cast(@EndRowIndex AS VARCHAR) + ' ;'
	END
		
		exec sp_executesql @Sql, 
						N'@SearchText NVARCHAR(MAX), @FieldName NVARCHAR(MAX),@EmailFieldName NVARCHAR(5),@LastUpdated DATETIME', 
						@SearchText=@SearchText,@FieldName=@FieldName,@EmailFieldName=@EmailFieldName,@LastUpdated=@LastUpdated
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerCat]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetCustomerCat] (@CatName NVARCHAR(40))
AS
BEGIN
	SELECT strCustCategory AS CustCategory
		,strDesc AS [Description]
		,bitInactive AS Inactive
		,bitIsHP AS IsHP
		,decISDefDep AS ISDefDep
		,decISDefIns AS ISDefIns
		,decISDefFinChrge AS ISDefFinChrge
		,strInstallSaleFC AS InstallSaleFC
		,strInstallSaleTaxCode AS InstallSaleTaxCode
		,decArrPenalty AS ArrPenalty
	FROM tblCustomerCat
	WHERE strCustCategory = @CatName
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerCenters]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetCustomerCenters]
    (
      @CustomerName VARCHAR(100) = NULL
    )
AS
    BEGIN
        SET NOCOUNT ON;
		SELECT CUST.uidCenterID AS CenterID, CENT.strLvl1 AS Level1, CENT.strLvl2 AS Level2, CENT.strLvl3 AS Level3, CENT.strLvl4 AS Level4, CENT.strLvl5 AS Level5
		FROM tblCustomerCenter CUST INNER JOIN tblCenters CENT 
		ON CUST.uidCenterID = CENT.uidCenterID 
		WHERE CUST.strCustName = @CustomerName;
    END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerCollectionLettersData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetCustomerCollectionLettersData] ***********/

CREATE PROCEDURE [dbo].[GetCustomerCollectionLettersData] 
	@Customer as varchar(20),
	@AsAt as datetime,
	@AsAt2 as datetime
AS
BEGIN
	SELECT Convert(date, MASTERTABLE.dteDueDate) AS JournalDate
	,CASE MASTERTABLE.bitIsForeign
		WHEN 0
			THEN SUM(tblCustTransDT.decAmount)
		ELSE SUM(tblCustTransDT.decAmountF)
		END AS InvAmount
FROM tblCustTrans AS MASTERTABLE
INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
WHERE MASTERTABLE.strCustName = @Customer
	AND tblCustTransDT.bitReversed = 0
	AND Convert(Date,tblCustTransDT.dteJournalDate )<= @AsAt
	AND tblCustTransDT.lngCustTrID NOT IN (
		SELECT tblCustTransDT.lngCustTrID
		FROM tblCustTrans
		INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
		WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName
			AND tblCustTransDT.bitReversed = 0
			AND COnvert(Date,tblCustTransDT.dteJournalDate) <= @AsAt2
		GROUP BY tblCustTransDT.lngCustTrID
		HAVING SUM(tblCustTransDT.decAmount) = 0
			AND SUM(tblCustTransDT.decAmountF) = 0
		)
GROUP BY MASTERTABLE.dteDueDate
	,MASTERTABLE.bitIsForeign
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerContacts]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetCustomerContacts]
    (
      @CustomerNumber AS NVARCHAR(50)
    )
AS
    BEGIN	
        SELECT  c.lngID AS ID ,
                c.strName AS Name ,
				c.strCustName AS CustomerName,
                j.strJobTitle AS JobTitleName ,
                j.lngID AS JobTitle ,
                c.strEmail AS Email ,
                c.strTel AS Telephone ,
                c.strFax AS Fax ,
                c.strCell AS CellPhone ,
                'Address' = CASE WHEN c.strStreet1 IS NULL
                                      OR c.strStreet1 = '' THEN ''
                                 ELSE c.strStreet1
                            END + CASE WHEN c.strStreet2 IS NULL
                                            OR c.strStreet2 = '' THEN ''
                                       ELSE CASE WHEN c.strStreet1 <> ''
                                                 THEN ', '
                                                 ELSE ''
                                            END + c.strStreet2
                                  END + CASE WHEN c.strCity IS NULL
                                                  OR c.strCity = '' THEN ''
                                             ELSE CASE WHEN COALESCE(c.strStreet1,
                                                              c.strStreet2) IS NOT NULL
                                                       THEN ', '
                                                       ELSE ''
                                                  END + c.strCity
                                        END
                + CASE WHEN c.strProvince IS NULL
                            OR c.strProvince = '' THEN ''
                       ELSE CASE WHEN COALESCE(c.strStreet1, c.strStreet2,
                                               c.strCity) IS NOT NULL
                                 THEN ', '
                                 ELSE ''
                            END + c.strProvince
                  END + CASE WHEN c.strPostal IS NULL
                                  OR c.strPostal = '' THEN ''
                             ELSE CASE WHEN COALESCE(c.strStreet1,
                                                     c.strStreet2, c.strCity,
                                                     c.strProvince) IS NOT NULL
                                       THEN ', '
                                       ELSE ''
                                  END + c.strPostal
                        END ,
                c.strFacebook AS Facebook ,
                c.strLinkedIn AS LinkedIn ,
                c.strSkype AS Skype ,
                c.strNotes AS Notes,
				c.imgPicture AS Picture,
				c.strStreet1 AS	Street1,
				c.strStreet2 AS	Street2,
				c.strCity As City,
				c.strPostal AS Postal,
				c.strProvince as Province
        FROM    tblCustomerContacts AS c
                INNER JOIN tblJobTitles AS j ON j.lngID = c.intJobTitle
        WHERE   c.strCustName = @CustomerNumber
    END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********End [GetContractBillDTDetails]*********************/

/**********Start [GetCustomerData]***********************/
CREATE PROCEDURE [dbo].[GetCustomerData]
@CustomerName AS NVARCHAR(50)
AS
BEGIN
	SELECT [strCustName] AS CustomerName
      ,[strStreet1] AS Street1
      ,[strStreet2] AS Street2
      ,[strCity] AS City
      ,[strProvince] AS Province
      ,[strPostal] AS Postal
      ,[strPhone] AS Phone
      ,[strCellPhone] AS CellPhone
      ,[strFax] AS Fax
      ,[strEmail] AS Email
      ,[strVAT] AS VAT
      ,[strCK] AS CK
      ,[decBalDue] AS BalDue
      ,[decYTDPurch] AS YTDPurch
      ,[decOpenOrders] AS OpenOrders
      ,[intDelMethod] AS DelMethod
      ,[bitCreditCtrl] AS IsCreditCtrl
      ,[decCreditLimit] AS CreditLimit
      ,[bitCreditHold] AS IsCreditHold
      ,[bitInactive] AS IsInactive
      ,[dteUpdated] AS Updated
      ,[strContact] AS Contact
      ,[strField1] AS Field1
      ,[strField2] AS Field2
      ,[strField3] AS Field3
      ,[strField4] AS Field4
      ,[strField5] AS Field5
      ,[strField6] AS Field6
      ,[strTaxCode] AS TaxCode
      ,[dteSince] AS Since
      ,[strNotes] AS Notes
      ,[strPricelist] AS Pricelist
      ,[uID] AS ID
      ,[decIntRate] AS IntRate
      ,[strCustDesc] AS [Description]
      ,[strCountry] AS Country
      ,[strTerm] AS Term
      ,[intDept] AS Department
      ,[strCurrency] AS Currency
      ,[decBalDueF] AS BalDueF
      ,[decYTDPurchF] AS YTDPurchF
      ,[decOpenOrdersF] AS OpenOrdersF
      ,[strField7] AS Field7
      ,[strField8] AS Field8
      ,[strField9] AS Field9
      ,[strField10] AS Field10
      ,[strField11] AS Field11
      ,[strField12] AS Field12
      ,[strEmailInv] AS EmailInv
      ,[strEmailStat] AS EmailStat
      ,[strCustCategory] AS Category
      ,[strCountryCode] AS CountryCode
      ,[strTenderType] AS TenderType
      ,[decTradeDiscPerc] AS TradeDiscPerc
      ,[decCreditLimitOverride] AS CreditLimitOverride
      ,[dteCreditLimitExpiryDate] AS CreditLimitExpiryDate
      ,[intPartialBackorders] AS PartialBackorders
      ,[bitWithholdTax] AS IsWithholdTax
      ,[strWithholdTaxCode] AS WithholdTaxCode
      ,[strINVFormDocName] AS INVFormDocName
      ,[strORDFormDocName] AS ORDFormDocName
      ,[bitMatrixType] AS IsMatrixType
      ,[strMatrixType] AS MatrixType
      ,[strParentCust] AS ParentCust
      ,[strValueBased] AS ValueBased
      ,[bitInvWorkflowNew] AS IsInvWorkflowNew
      ,[bitInvWorkflowDA] AS IsInvWorkflowDA
      ,[bitInvWorkflowSO] AS IsInvWorkflowSO
      ,[strWebsite] AS Website
      ,[strRSTTerminalSync] AS RSTTerminalSync
      ,[strContact2] AS Contact2
      ,[strSuburb] AS Suburb
      ,[strEmailOso] AS EmailOso
      ,[intNAPrintMethod] AS NAPrintMethod
      ,[strDelMethodCode] AS DelMethodCode
      ,[bitExclCommission] AS IsExclCommission
  FROM [dbo].[tblCustomers] WHERE strCustName = @CustomerName
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerDeliveryLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetCustomerDeliveryLocation]
(
	@CustID AS VARCHAR(50),
	@LocationName AS VARCHAR(50)
)
AS
BEGIN
	SELECT tblCustomerLoc.strLocName AS LocationName, tblCustomerLoc.strStreet1 AS Street1, tblCustomerLoc.strStreet2 AS Street2, tblCustomerLoc.strCity AS City, tblCustomerLoc.strProvince AS Province, tblCustomerLoc.strPostal AS Postal,tblCustomerLoc.strCountry AS Country, tblCustomerLoc.strSalesName AS SalesName, ISNULL(tblCustomerLoc.strDelMethodCode, tblCustomers.strDelMethodCode) AS DelMethodCode FROM tblCustomerLoc INNER JOIN tblCustomers ON tblCustomerLoc.strCustName = tblCustomers.strCustName WHERE tblCustomerLoc.strCustName = @CustID AND strLocName = @LocationName	
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerDeliveryMethodsWorkshop]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/******************* End [RptOrigInvNewSales] ********************/

/*********** start Create/Drop [GetCustomerDeliveryMethodsWorkshop] ***********/

CREATE PROCEDURE [dbo].[GetCustomerDeliveryMethodsWorkshop]
AS
BEGIN
	select 
		tblDeliveryMethods.strDelMethodCode 
	from 
		tblDeliveryMethods
	INNER JOIN 
		tblDeliveryMethodRatesServices ON tblDeliveryMethods.strDelMethodCode = tblDeliveryMethodRatesServices.strDelMethodCode
	where 
		tblDeliveryMethods.bitInactive = 0 AND tblDeliveryMethodRatesServices.intBillingMethod <> 6   -- will omit Distance to Client method in Workshop module
	Order by 
		tblDeliveryMethods.strDelMethodCode
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerDetailsbyNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************END [InsertCRMActivitiesTracking]***********************************/

/************************START [GetCustomerDetailsbyNumber]***********************************/

CREATE Procedure [dbo].[GetCustomerDetailsbyNumber]
@CustomerName  NVARCHAR(MAX)
AS
Begin
Select 	
		CAST(strCustName AS NVARCHAR(MAX)) AS  'CustomerName',  
		CAST(strCustDesc as NVARCHAR(MAX)) AS 'Description',
		CAST(strContact as NVARCHAR(MAX)) AS 'Contact',
		'Street1' =  
		CAST(CASE WHEN strStreet1 IS NULL OR strStreet1 = '' THEN '' ELSE strStreet1 END +
		CASE WHEN strStreet2 IS NULL OR strStreet2 = '' THEN '' ELSE CASE WHEN strStreet1 <> '' THEN ', ' ELSE '' END + strStreet2 END +
		CASE WHEN strCity IS NULL OR strCity = '' THEN '' ELSE CASE WHEN coalesce(strStreet1,strStreet2) is not null THEN ', ' ELSE '' END + strCity END +
		CASE WHEN strProvince IS NULL OR strProvince = '' THEN '' ELSE CASE WHEN coalesce(strStreet1,strStreet2,strCity) is not null THEN ', ' ELSE '' END + strProvince  END +
		CASE WHEN strPostal IS NULL OR strPostal = '' THEN '' ELSE CASE WHEN coalesce(strStreet1,strStreet2,strCity,strProvince) is not null THEN ', ' ELSE '' END + strPostal  END +
		CASE WHEN strCountry IS NULL OR strCountry = '' THEN '' ELSE CASE WHEN coalesce(strStreet1,strStreet2,strCity,strProvince,strPostal) is not null THEN ', ' ELSE '' END + strCountry  END AS NVARCHAR(MAX)) ,
		CAST(strPhone as NVARCHAR(MAX)) AS 'Phone',
		CAST(strCellPhone as NVARCHAR(MAX)) AS 'CellPhone',
		CAST(strFax as NVARCHAR(MAX)) AS 'Fax',
		CAST(strEmail as NVARCHAR(MAX)) AS 'Email',
		CAST(strEmailInv as NVARCHAR(MAX)) AS 'EmailInv',
		CAST(strEmailStat as NVARCHAR(MAX)) AS 'EmailStat',  
		CAST(strEmailOso as NVARCHAR(MAX)) AS 'EmailOso' from tblCustomers Where strCustName = @CustomerName
End
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerInfo]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/******************* End [GetDeliveryMethodRateBillingContract] ********************/

/******************* Start [GetCustomerInfo] ********************/

CREATE PROCEDURE [dbo].[GetCustomerInfo]
(
	@IsCheckedInActive bit,
	@SearchText NVARCHAR(MAX),
	@strPricelist NVARCHAR(MAX)
)
AS
BEGIN
	Declare @Query as NVARCHAR(max)  
	Declare @IsParamExist as Bit
	SET @Query = 'SELECT strCustName AS CustomerName, strCustDesc AS Description, strEmail AS Email, strCustCategory AS Category, tblCust.strPricelist AS Pricelist, prList.dteFinishDate As ExcelPricelistEndDate FROM dbo.tblCustomers As tblCust INNER JOIN dbo.tblPriceListsByDate As prList On tblCust.strPricelist = prList.strPricelist ' 
	IF (@IsCheckedInActive = 0)
	BEGIN
		SET	@Query += 'WHERE (tblCust.bitInactive = 0)'
		SET @IsParamExist = 1;
	END

	IF @SearchText  <> '' AND Len(@SearchText) >0 
	BEGIN 
		IF @IsParamExist = 1
		SET	@Query += 'AND '
		ELSE
		begin
			SET	@Query += 'WHERE '
			SET @IsParamExist = 1;
		end

		SET @Query +='(strCustName LIKE ''%'+ @SearchText+ '%''  OR strCustDesc LIKE ''%'+ @SearchText+ '%'' )'
	END
	
	If @strPricelist <> '' and Len(@strPricelist) > 0
	BEGIN 
		IF @IsParamExist = 1
		SET	@Query += 'AND '
		ELSE
		SET	@Query += 'WHERE '

		SET @Query +='(tblCust.strPricelist LIKE ''%'+ @strPricelist + '%'' )'
	END
	SET @Query +=''	
	EXEC sp_Executesql @Query
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerInfoForEmail]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/******************* End [SPInvoice] ********************/

/******************* Start [GetCustomerInfoForEmail] ********************/
CREATE PROCEDURE [dbo].[GetCustomerInfoForEmail] (
	@Number AS NVARCHAR(100)
	,@IsMultiCustomer AS BIT
	)
AS
BEGIN
	IF (@IsMultiCustomer = 0)
	BEGIN
		SELECT strCustName AS CustomerName
			,strStreet1 AS Street1
			,strStreet2 AS Street2
			,strCity AS City
			,strProvince AS Province
			,strPostal AS Postal
			,strPhone AS Phone
			,strCellPhone AS CellPhone
			,strFax AS Fax
			,strEmail AS Email
		FROM tblCustomers
		WHERE strCustName = @Number
	END
	ELSE
	BEGIN
		SELECT strCustName AS CustomerName
			,strStreet1 AS Street1
			,strStreet2 AS Street2
			,strCity AS City
			,strProvince AS Province
			,strPostal AS Postal
			,strPhone AS Phone
			,strCellPhone AS CellPhone
			,strFax AS Fax
			,strEmail AS Email
		FROM tblCustomers
		WHERE strCustName IN (
				SELECT DISTINCT strCustName
				FROM tblShipmentsDT
				WHERE strShpDocID = @Number
				)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetContractBillEnquiriesSelect] ***********/

/*********** Start [GetCustomerItems] ***********/
CREATE PROCEDURE [dbo].[GetCustomerItems]
(
	@CustomerNumber AS NVARCHAR(50)
)
AS
BEGIN
	SELECT 
		tblInvCustomer.strPartNumber as PartNumber, 
		tblInv.strDesc as [Desc], 
		strItemCode as ItemCode, 
		strItemDesc as ItemDesc, 
		lngID as ID
	FROM tblInvCustomer 
	INNER JOIN tblInv ON tblInvCustomer.strPartNumber = tblInv.strPartNumber 
	WHERE 
		strCustName = @CustomerNumber 
	ORDER BY tblInvCustomer.strPartNumber
END	
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerLocations]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetClientInfo] ***********/

/*********** Start [GetCustomerContacts] ***********/
--CREATE PROCEDURE [dbo].[GetCustomerContacts]
--(
--	@CustomerNumber AS NVARCHAR(50)
--)
--AS
--BEGIN	
--	SELECT c.strName AS Name ,
--	       j.strJobTitle AS JobTitleName,
--	       c.strEmail as Email,
--	       c.strTel as Telephone,
--	       c.strFax as Fax,
--	       c.strCell as CellPhone,
--	      'Address' =  
--		CASE WHEN c.strStreet1 IS NULL OR c.strStreet1 = '' THEN '' ELSE c.strStreet1 END +
--		CASE WHEN c.strStreet2 IS NULL OR c.strStreet2 = '' THEN '' ELSE CASE WHEN c.strStreet1 <> '' THEN ', ' ELSE '' END + c.strStreet2 END +
--		CASE WHEN c.strCity IS NULL OR c.strCity = '' THEN '' ELSE CASE WHEN coalesce(c.strStreet1,c.strStreet2) is not null THEN ', ' ELSE '' END + c.strCity END +
--		CASE WHEN c.strProvince IS NULL OR c.strProvince = '' THEN '' ELSE CASE WHEN coalesce(c.strStreet1,c.strStreet2,c.strCity) is not null THEN ', ' ELSE '' END + c.strProvince  END +
--		CASE WHEN c.strPostal IS NULL OR c.strPostal = '' THEN '' ELSE CASE WHEN coalesce(c.strStreet1,c.strStreet2,c.strCity,c.strProvince) is not null THEN ', ' ELSE '' END + c.strPostal  END,
--	       c.strFacebook As Facebook,
--	       c.strLinkedIn as LinkedIn,
--	       c.strSkype as Skype,
--	       c.strNotes as Notes
--	FROM tblCustomerContacts AS c
--	INNER JOIN tblJobTitles AS j ON j.lngID = c.intJobTitle
--	WHERE c.strCustName = @CustomerNumber
--END
--Go
/*********** End [GetCustomerContacts] ***********/

/*********** Start [GetCustomerLocations] ***********/
CREATE PROCEDURE [dbo].[GetCustomerLocations]
(
	@CustomerNumber AS NVARCHAR(50)
)
AS
BEGIN	
	SELECT 
	   T1.strCustName as CustomerName,
	   T1.strLocName as LocationName,
	   'Address' =  
	CASE WHEN T1.strStreet1 IS NULL OR T1.strStreet1 = '' THEN '' ELSE T1.strStreet1 END +
	CASE WHEN T1.strStreet2 IS NULL OR T1.strStreet2 = '' THEN '' ELSE CASE WHEN T1.strStreet1 <> '' THEN ', ' ELSE '' END + T1.strStreet2 END +
	CASE WHEN T1.strCity IS NULL OR T1.strCity = '' THEN '' ELSE CASE WHEN coalesce(T1.strStreet1,T1.strStreet2) is not null THEN ', ' ELSE '' END + T1.strCity END +
	CASE WHEN T1.strProvince IS NULL OR T1.strProvince = '' THEN '' ELSE CASE WHEN coalesce(T1.strStreet1,T1.strStreet2,T1.strCity) is not null THEN ', ' ELSE '' END + T1.strProvince  END +
	CASE WHEN T1.strPostal IS NULL OR T1.strPostal = '' THEN '' ELSE CASE WHEN coalesce(T1.strStreet1,T1.strStreet2,T1.strCity,T1.strProvince) is not null THEN ', ' ELSE '' END + T1.strPostal  END +
	CASE WHEN T1.strCountry IS NULL OR T1.strCountry = '' THEN '' ELSE CASE WHEN coalesce(T1.strStreet1,T1.strStreet2,T1.strCity,T1.strProvince,T1.strPostal) is not null THEN ', ' ELSE '' END + T1.strCountry  END ,
	   T1.strDelRouteCode as DelRouteCode,
	   T1.strCountryCode as CountryCode,
	   T1.strSalesName as SalesName,
	   T1.strDelMethodCode as DelMethodCode,
	   T1.decDistance as Distance,
       T2.strCustDesc as CustomerDescription
	FROM tblCustomerLoc T1
	INNER JOIN tblCustomers T2 ON T1.strCustName = T2.strCustName
	WHERE T1.strCustName = @CustomerNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerManJobs]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetCustomerItems] ***********/

/*********** Start [GetCustomerManJobs] ***********/
CREATE PROCEDURE [dbo].[GetCustomerManJobs]
(
	@CustomerNumber AS NVARCHAR(50),
	@JobOpen AS int,
	@JobWIP AS int
 )
AS
BEGIN
	SELECT dteJournalDate as JournalDate,
       tblManJob.strJBDocID as JBDocID,
       strReference as Reference,
       strPartNumber as PartNumber,
       strDesc as [Desc],
       strWCCode as WorkCentreCode,
       decManQty AS Qty,
       CASE 
			WHEN intType = 1 THEN 'Closed'
			WHEN intType = 2 THEN 'Partially Closed' 
			WHEN intType = 3 THEN 'Work In Progress' 
			WHEN intType = 0 THEN 'Open' 
	   END as TypeDesc
	FROM tblManJob
	INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID
	WHERE strCustName = @CustomerNumber
	  AND (intType = @JobOpen
	       OR intType = @JobWIP)
	ORDER BY dteJournalDate,
	         tblManJob.strJBDocID
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerNameSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetCustomerNameSales] ***********/
CREATE PROCEDURE [dbo].[GetCustomerNameSales]
(
	@CustomerName AS VARCHAR(50)
)
AS
BEGIN
	SELECT COUNT(tblOrderDocDA.strCustName) FROM tblOrderDocDA INNER JOIN tblCustomers ON tblOrderDocDA.strCustName = tblCustomers.strCustName 
	WHERE (tblOrderDocDA.bitCleared = 0) AND (tblCustomers.strCustName = @CustomerName)
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetCustomerNumber] ***********/
CREATE PROCEDURE [dbo].[GetCustomerNumber]
	@CustomerName AS VARCHAR(50)
AS
BEGIN
		SELECT COUNT(tblOrderDocDA.strCustName) FROM tblOrderDocDA INNER JOIN tblCustomers ON tblOrderDocDA.strCustName = tblCustomers.strCustName 
	WHERE (tblOrderDocDA.bitCleared = 0) AND (tblCustomers.strCustName = @CustomerName)
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerOrderInvData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/******************* Start [GetCustomerOrderInvData] ********************/

Create PROCEDURE [dbo].[GetCustomerOrderInvData]
(
	@CustName AS NVARCHAR(20),
	@ExpiryDate AS datetime
)
AS
BEGIN
	SELECT ti.strPartNumber AS PartNumber
	,ti.strDesc AS [Desc]
	,tip.decSelling AS Selling
	,ti.strCategory AS Category
	,(
		SELECT decDiscount
		FROM tblDiscountMatrix AS tdm
		WHERE (strInvCategory = ti.strCategory)
			AND (strCustCategory = tc.strCustCategory)
		) AS Discount
	,tc.strPricelist AS PriceList
	,tplbd.dteStartDate AS StartDate
	,tplbd.dteFinishDate AS FinishDate
	FROM tblInv AS ti
	INNER JOIN tblInvPrice AS tip ON ti.strPartNumber = tip.strPartNumber
	INNER JOIN tblCustomers AS tc ON tc.strPricelist = tip.strPricelist
	INNER JOIN tblPriceListsByDate tplbd ON tplbd.strPricelist = tip.strPricelist
		AND tplbd.uidPriceBasedID = tip.uidPriceBasedID
	WHERE (
			tc.strCustName = @CustName
			--AND tplbd.dteFinishDate <= cast(@ExpiryDate as Date)
			AND  @ExpiryDate between tplbd.dteStartDate AND tplbd.dteFinishDate
			)
	ORDER BY ti.strPartNumber
		,tplbd.dteStartDate
		,tplbd.dteFinishDate
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerProfitability]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCustomerLocations] ***********/

/*********** Start [GetCustomerProfitability] ***********/
CREATE PROCEDURE [dbo].[GetCustomerProfitability]
(
	@CustomerNumber AS NVARCHAR(50)
)
AS
BEGIN
	SELECT TOP (100) PERCENT CAST(dbo.tblInvoiceDoc.strCustName AS CHAR) AS CustomerCode,
	  (SELECT strCustDesc AS Customer_Code
	   FROM dbo.tblCustomers
	   WHERE (strCustName = dbo.tblInvoiceDoc.strCustName)) AS CustomerName,
	                         CAST(SUM(dbo.tblInvTrackingDT.decRevenue) AS NUMERIC(16, 2)) AS Revenue,
	                         CAST(SUM(dbo.tblInvTrackingDT.decCOGS) AS NUMERIC(16, 2)) AS Cost,
	                         CAST(SUM(dbo.tblInvTrackingDT.decRevenue) AS NUMERIC(16, 2)) - CAST(SUM	(dbo.tblInvTrackingDT.decCOGS) AS NUMERIC(16, 2)) AS GrossProfit,
	                         DATENAME(YEAR, dbo.tblInvTracking.dteJournalDate) AS Year,
	                         DATENAME(MONTH, dbo.tblInvTracking.dteJournalDate) AS Month,
	                         CASE
	                             WHEN (SUM(dbo.tblInvTrackingDT .decRevenue) <> 0) THEN CAST((SUM   (dbo.tblInvTrackingDT.decRevenue) - SUM (dbo.tblInvTrackingDT.deccogs)) / SUM(dbo.tblInvTrackingDT.decRevenue) AS  NUMERIC(16, 2)) * 100
	                             ELSE 0
	                         END AS GrossProfitPercent,
	                         CAST(DATENAME(YEAR, dbo. tblInvTracking.dteJournalDate) + '/' + DATENAME(MONTH,	dbo.tblInvTracking.dteJournalDate) + '/01' AS smalldatetime) AS Date
	FROM dbo.tblInvoiceDoc
	INNER JOIN dbo.tblInvTracking ON dbo.tblInvoiceDoc.lngInvTrackID = dbo.tblInvTracking.lngInvTrackID
	INNER JOIN dbo.tblInvTrackingDT ON dbo.tblInvTracking.lngInvTrackID = dbo.tblInvTrackingDT.lngInvTrackID
	INNER JOIN dbo.tblCustomers AS tblCustomers_1 ON dbo.tblInvoiceDoc.strCustName = tblCustomers_1.strCustName
	AND tblCustomers_1.strCustName = @CustomerNumber
	GROUP BY dbo.tblInvoiceDoc.strCustName,
	         tblCustomers_1.decBalDue,
	         tblCustomers_1.decCreditLimit,
	         tblCustomers_1.decYTDPurch,
	         DATENAME(YEAR, dbo.tblInvTracking.dteJournalDate),
	         DATENAME(MONTH, dbo.tblInvTracking.dteJournalDate),
	         CAST(DATENAME(YEAR, dbo.tblInvTracking.dteJournalDate) + '/' + DATENAME(MONTH, dbo.	tblInvTracking.dteJournalDate) + '/01' AS smalldatetime)
	ORDER BY date	
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerRecord]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetCustomerRecord] ***********/
CREATE PROCEDURE [dbo].[GetCustomerRecord] (@CycName VARCHAR(50))
AS
BEGIN
	SELECT strCustName AS 'CustName'
		,(
			SELECT strCustDesc
			FROM tblCustomers
			WHERE strCustName = MASTERTABLE.strCustName
			) AS 'CustDesc'
		,(
			SELECT bitInactive
			FROM tblCustomers
			WHERE strCustName = MASTERTABLE.strCustName
			) AS 'IsActive'
	FROM tblCyclesC AS MASTERTABLE
	WHERE strCycName = @CycName
	ORDER BY strCustName
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetCustomers]
(
	@custID nvarchar(40)
)
AS
BEGIN
	SELECT strCustName AS CustomerName, 
		   strCustDesc AS Description, 
		   strStreet1 AS Street1, 
		   strStreet2 AS Street2, 
		   strSuburb AS Suburb, 
		   strCity AS City, 
		   strProvince AS Province, 
		   strPostal AS Postal, 
		   strCountry AS Country, 
		   strPhone AS Phone
	FROM   tblcustomers 
	WHERE  strCustName = @custID 
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomersData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetCustomersData] (
	@IsActive BIT = NULL
	, @IsInvoice BIT = NULL
	, @HomeCurrencyCode VARCHAR(20) = NULL
	, @Currency VARCHAR(20) = NULL
	, @CheckNationalAcc INT = NULL
	, @Option INT = 1
	, -- For 1 = ALL, 2 = Orders, 3 = Balances
	@UserName VARCHAR(50) = NULL
	, @Consolidated INT = 1
	, @PageSize INT = 25
	, @IsForeignCurrencyRevaluation BIT = NULL
	, @RevaluationDate DATETIME = NULL
	, @GridAccount NVARCHAR(MAX) = NULL
	, @SearchText NVARCHAR(max) = NULL
	, @IsExactMatch BIT = 0
	, @PageNum INT = 1
	)
AS
BEGIN
	DECLARE @Offset INT

	SET @Offset = @PageSize * (@PageNum - 1)

	CREATE TABLE #Temp (
		strCustName NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS
		, strCustDesc NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		, strCity NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS
		, strPhone NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS
		, strField1 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		, strField2 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		, strField3 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		, strField4 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		, strField5 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		, strField6 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		, strCurrency NVARCHAR(6) COLLATE SQL_Latin1_General_CP1_CI_AS
		, strCurrSymbol NVARCHAR(10) COLLATE SQL_Latin1_General_CP1_CI_AS
		, decBalDue money
		, decBalDueF money
		, bitInactive BIT
		, decBalDueValid VARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS
		)

	CREATE TABLE #Temp2 (
		strCustName NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS
		, decAmount VARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS
		, decAmountF VARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS
		,
		)

	PRINT @IsActive
	PRINT @IsInvoice
	PRINT @HomeCurrencyCode
	PRINT @Currency
	PRINT @CheckNationalAcc
	PRINT @Option
	PRINT @UserName

	IF (@IsExactMatch = 0)
	BEGIN
		IF @IsForeignCurrencyRevaluation = 1
		BEGIN
			INSERT INTO #Temp
			SELECT strCustName
				, strCustDesc
				, strCity
				, strPhone
				, strField1
				, strField2
				, strField3
				, strField4
				, strField5
				, strField6
				, tblCustomers.strCurrency
				, tblCurrency.strCurrSymbol
				--, (tblCurrency.strCurrSymbol + ' 0.00') AS decBalDue
				, decBalDue = 0.00
				, decBalDueF = 0.00
				, bitInactive
				, decBalDueValid = 0.00
			FROM tblCustomers(NOLOCK)
			INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblCustomers.strCurrency
			WHERE (
					@IsActive IS NULL
					OR @IsActive = 1
					OR (
						@IsActive = 0
						AND bitInactive = 0
						)
					) -- Checked for Active and In Active customers
				AND (
					@IsInvoice IS NULL
					OR @IsInvoice = 0
					OR (
						@IsInvoice = 1
						AND bitInvWorkflowNew = 1
						)
					) -- Checked for invoice
				AND (
					@Option IS NULL
					OR @Option = 1
					OR (
						@Option = 2
						AND decOpenOrders <> 0
						)
					OR (
						@Option = 3
						AND decBalDue <> 0
						)
					) -- For 1 = ALL, 2 = Orders, 3 = Balances
				AND (
					@Currency IS NULL
					OR (tblCustomers.strCurrency = @Currency)
					) -- Checked for selected currency
				AND (
					@CheckNationalAcc = 0
					OR (
						strCustName NOT IN (
							SELECT CUST1.strCustName
							FROM tblCustomers(NOLOCK) CUST1
							WHERE strParentCust IN (
									SELECT CUST2.strCustName
									FROM tblCustomers(NOLOCK) CUST2
									WHERE CUST2.intNAPrintMethod = @CheckNationalAcc
									)
							)
						)
					)
				AND (
					@UserName IS NULL
					OR (
						strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat(NOLOCK)
							LEFT JOIN tblCustomerCatSec(NOLOCK) ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec(NOLOCK)
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec(NOLOCK)
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
					)
			ORDER BY strCustName

			INSERT INTO #Temp2 (
				strCustName
				, decAmount
				, decAmountF
				) (
				SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName
				, SUM(tblCustTransDT.decAmount) AS decAmount
				, SUM(tblCustTransDT.decAmountF) AS decAmountF FROM tblCustTrans(NOLOCK) AS MASTERTABLE INNER JOIN tblCustomers(NOLOCK) ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT(NOLOCK) ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE (tblCustTransDT.bitReversed = 0)
				AND (
					MASTERTABLE.strOrdDocID IS NULL
					OR (
						MASTERTABLE.strInvDocID IS NOT NULL
						AND MASTERTABLE.strOrdDocID IS NOT NULL
						)
					)
				AND (tblCustTransDT.dteJournalDate <= @RevaluationDate)
				AND (
					tblCustTransDT.lngCustTrID NOT IN (
						SELECT tblCustTransDT.lngCustTrID
						FROM tblCustTrans(NOLOCK)
						INNER JOIN tblCustTransDT(NOLOCK) ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
						WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
							AND tblCustTransDT.bitReversed = 0
							AND tblCustTransDT.dteJournalDate <= @RevaluationDate
							AND (
								tblCustTrans.strOrdDocID IS NULL
								OR (
									tblCustTrans.strInvDocID IS NOT NULL
									AND tblCustTrans.strOrdDocID IS NOT NULL
									)
								)
						GROUP BY tblCustTransDT.lngCustTrID
						HAVING SUM(tblCustTransDT.decAmount) = 0
							AND SUM(tblCustTransDT.decAmountF) = 0
						)
					) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName))
				, tblCustomers.strCustDesc
				, tblCustomers.strTerm
				, tblCustomers.strCurrency
				, tblCustTransDT.bitIsForeign
			
			UNION
				
				SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName
				, SUM(tblCustTransDT.decAmount) AS decAmount
				, SUM(tblCustTransDT.decAmountF) AS decAmountF FROM tblCustTrans(NOLOCK) AS MASTERTABLE INNER JOIN tblCustomers(NOLOCK) ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT(NOLOCK) ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE (tblCustTransDT.bitReversed = 0)
				AND (MASTERTABLE.strOrdDocID IS NOT NULL)
				AND (MASTERTABLE.strInvDocID IS NULL)
				AND (tblCustTransDT.lngCustPayID IS NOT NULL)
				AND (tblCustTransDT.dteJournalDate <= @RevaluationDate)
				AND (
					tblCustTransDT.lngCustTrID NOT IN (
						SELECT tblCustTransDT.lngCustTrID
						FROM tblCustTrans(NOLOCK)
						INNER JOIN tblCustTransDT(NOLOCK) ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
						WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
							AND tblCustTransDT.bitReversed = 0
							AND tblCustTransDT.dteJournalDate <= @RevaluationDate
							AND (
								tblCustTrans.strOrdDocID IS NULL
								OR (
									tblCustTrans.strInvDocID IS NOT NULL
									AND tblCustTrans.strOrdDocID IS NOT NULL
									)
								)
						GROUP BY tblCustTransDT.lngCustTrID
						HAVING SUM(tblCustTransDT.decAmount) = 0
							AND SUM(tblCustTransDT.decAmountF) = 0
						)
					) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName))
				, tblCustomers.strCustDesc
				, tblCustomers.strTerm
				, tblCustomers.strCurrency
				, tblCustTransDT.bitIsForeign
				, tblCustTransDT.decAmount
				, tblCustTransDT.decAmountF
				)

			UPDATE #Temp
			SET decBalDue = #Temp2.decAmountF
				, decBalDueF = #Temp2.decAmountF
				, decBalDueValid = #Temp2.decAmount
			FROM #Temp2
			WHERE #Temp2.strCustName = #Temp.strCustName

			IF (ISNULL(@SearchText, '') = '')
			BEGIN
					;

				WITH CustomerResult1
				AS (
					SELECT ROW_NUMBER() OVER (
							ORDER BY strCustName ASC
							) AS RowNum
						, strCustName
						, strCustDesc
						, strCity
						, strPhone
						, strField1
						, strField2
						, strField3
						, strField4
						, strField5
						, strField6
						, strCurrency
						, strCurrSymbol
						, decBalDue
						, decBalDueF
						, bitInactive
					FROM #Temp(NOLOCK)
					WHERE (strCurrency <> @HomeCurrencyCode)
						AND (
							CAST(decBalDueValid AS DECIMAL(18, 4)) <> 0.00
							OR CAST(decBalDueF AS DECIMAL(18, 4)) <> 0.00
							)
						AND (
							strCustName NOT IN (
								SELECT Value
								FROM [fnSplitStringAsTable]((@GridAccount), (','))
								)
							)
					)
				SELECT
					--strCustName, strCustDesc, strCity, strPhone, strField1, strField2, strField3, strField4, strField5, strField6, strCurrency, strCurrSymbol, decBalDue, decBalDueF, bitInactive
					strCustName AS CustName
					, strCustDesc AS CustDesc
					, strCity AS City
					, strPhone AS Phone
					, strField1 AS Field1
					, strField2 AS Field2
					, strField3 AS Field3
					, strField4 AS Field4
					, strField5 AS Field5
					, strField6 AS Field6
					, strCurrency AS Currency
					, strCurrSymbol AS CurrSymbol
					, decBalDue AS ConditionalBalDue
					, decBalDueF AS BalDuef
					, bitInactive AS IsInactive
					, (
						SELECT Count(A.strCustName)
						FROM CustomerResult1 A
						) AS Total
				FROM CustomerResult1
				WHERE RowNum >= (@Offset + 1)
					AND RowNum <= (@Offset + @PageSize)
				ORDER BY RowNum
			END
			ELSE
			BEGIN
					;

				WITH CustomerResult1
				AS (
					SELECT ROW_NUMBER() OVER (
							ORDER BY strCustName ASC
							) AS RowNum
						, strCustName
						, strCustDesc
						, strCity
						, strPhone
						, strField1
						, strField2
						, strField3
						, strField4
						, strField5
						, strField6
						, strCurrency
						, strCurrSymbol
						, decBalDue
						, decBalDueF
						, bitInactive
					FROM #Temp(NOLOCK)
					WHERE (strCurrency <> @HomeCurrencyCode)
						AND (
							CAST(decBalDueValid AS DECIMAL(18, 4)) <> 0.00
							OR CAST(decBalDueF AS DECIMAL(18, 4)) <> 0.00
							)
						AND (
							strCustName NOT IN (
								SELECT Value
								FROM [fnSplitStringAsTable]((@GridAccount), (','))
								)
							)
						AND (
							strCustName LIKE '%' + @SearchText + '%'
							OR strCustDesc LIKE '%' + @SearchText + '%'
							OR strCity LIKE '%' + @SearchText + '%'
							OR strPhone LIKE '%' + @SearchText + '%'
							OR strCurrency LIKE '%' + @SearchText + '%'
							)
					)
				SELECT
					--strCustName, strCustDesc, strCity, strPhone, strField1, strField2, strField3, strField4, strField5, strField6, strCurrency, strCurrSymbol, decBalDue, decBalDueF, bitInactive 
					strCustName AS CustName
					, strCustDesc AS CustDesc
					, strCity AS City
					, strPhone AS Phone
					, strField1 AS Field1
					, strField2 AS Field2
					, strField3 AS Field3
					, strField4 AS Field4
					, strField5 AS Field5
					, strField6 AS Field6
					, strCurrency AS Currency
					, strCurrSymbol AS CurrSymbol
					, decBalDue AS ConditionalBalDue
					, decBalDueF AS BalDuef
					, bitInactive AS IsInactive
					, (
						SELECT Count(A.strCustName)
						FROM CustomerResult1 A
						) AS Total
				FROM CustomerResult1
				WHERE RowNum >= (@Offset + 1)
					AND RowNum <= (@Offset + @PageSize)
				ORDER BY RowNum
			END
		END
		ELSE
		BEGIN
			IF (ISNULL(@SearchText, '') = '')
			BEGIN
					;

				WITH CustomerResult1
				AS (
					SELECT ROW_NUMBER() OVER (
							ORDER BY strCustName ASC
							) AS RowNum
						, strCustName
						, strCustDesc
						, strCity
						, strPhone
						, strField1
						, strField2
						, strField3
						, strField4
						, strField5
						, strField6
						, tblCustomers.strCurrency
						, tblCurrency.strCurrSymbol
						, decBalDue 
						, decBalDueF
						, bitInactive
					FROM tblCustomers(NOLOCK)
					INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblCustomers.strCurrency
					WHERE (
							@IsActive IS NULL
							OR @IsActive = 1
							OR (
								@IsActive = 0
								AND bitInactive = 0
								)
							) -- Checked for Active and In Active customers
						AND (
							@IsInvoice IS NULL
							OR @IsInvoice = 0
							OR (
								@IsInvoice = 1
								AND bitInvWorkflowNew = 1
								)
							) -- Checked for invoice
						AND (
							@Option IS NULL
							OR @Option = 1
							OR (
								@Option = 2
								AND decOpenOrders <> 0
								)
							OR (
								@Option = 3
								AND decBalDue <> 0
								)
							) -- For 1 = ALL, 2 = Orders, 3 = Balances
						AND (
							@Currency IS NULL
							OR (tblCustomers.strCurrency = @Currency)
							) -- Checked for selected currency
						AND (
							@CheckNationalAcc = 0
							OR (
								strCustName NOT IN (
									SELECT CUST1.strCustName
									FROM tblCustomers(NOLOCK) CUST1
									WHERE strParentCust IN (
											SELECT CUST2.strCustName
											FROM tblCustomers(NOLOCK) CUST2
											WHERE CUST2.intNAPrintMethod = @CheckNationalAcc
											)
									)
								)
							)
						AND (
							@UserName IS NULL
							OR (
								strCustCategory IN (
									SELECT tblCustomerCat.strCustCategory
									FROM tblCustomerCat(NOLOCK)
									LEFT JOIN tblCustomerCatSec(NOLOCK) ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
									WHERE ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec(NOLOCK)
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblCustomerCatSec.strCustCategory)
													FROM tblCustomerCatSec(NOLOCK)
													WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
													), 0) > 0
											AND tblCustomerCatSec.strUserName = @UserName
											)
									)
								)
							)
					)
				SELECT
					--strCustName,strCustDesc,strCity,strPhone,strField1,strField2,strField3,strField4,strField5,strField6,strCurrency,strCurrSymbol,decBalDue,decBalDueF,bitInactive
					strCustName AS CustName
					, strCustDesc AS CustDesc
					, strCity AS City
					, strPhone AS Phone
					, strField1 AS Field1
					, strField2 AS Field2
					, strField3 AS Field3
					, strField4 AS Field4
					, strField5 AS Field5
					, strField6 AS Field6
					, strCurrency AS Currency
					, strCurrSymbol AS CurrSymbol
					, decBalDue AS ConditionalBalDue
					, decBalDueF AS BalDuef
					, bitInactive AS IsInactive
					, (
						SELECT Count(A.strCustName)
						FROM CustomerResult1 A
						) AS Total
				FROM CustomerResult1
				WHERE RowNum >= (@Offset + 1)
					AND RowNum <= (@Offset + @PageSize)
				ORDER BY RowNum
			END
			ELSE
			BEGIN
					;

				WITH CustomerResult1
				AS (
					SELECT ROW_NUMBER() OVER (
							ORDER BY strCustName ASC
							) AS RowNum
						, strCustName
						, strCustDesc
						, strCity
						, strPhone
						, strField1
						, strField2
						, strField3
						, strField4
						, strField5
						, strField6
						, tblCustomers.strCurrency
						, tblCurrency.strCurrSymbol
						, decBalDue
						, decBalDueF
						, bitInactive
					FROM tblCustomers(NOLOCK)
					INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblCustomers.strCurrency
					WHERE (
							@IsActive IS NULL
							OR @IsActive = 1
							OR (
								@IsActive = 0
								AND bitInactive = 0
								)
							) -- Checked for Active and In Active customers
						AND (
							@IsInvoice IS NULL
							OR @IsInvoice = 0
							OR (
								@IsInvoice = 1
								AND bitInvWorkflowNew = 1
								)
							) -- Checked for invoice
						AND (
							@Option IS NULL
							OR @Option = 1
							OR (
								@Option = 2
								AND decOpenOrders <> 0
								)
							OR (
								@Option = 3
								AND decBalDue <> 0
								)
							) -- For 1 = ALL, 2 = Orders, 3 = Balances
						AND (
							@Currency IS NULL
							OR (tblCustomers.strCurrency = @Currency)
							) -- Checked for selected currency
						AND (
							@CheckNationalAcc = 0
							OR (
								strCustName NOT IN (
									SELECT CUST1.strCustName
									FROM tblCustomers(NOLOCK) CUST1
									WHERE strParentCust IN (
											SELECT CUST2.strCustName
											FROM tblCustomers(NOLOCK) CUST2
											WHERE CUST2.intNAPrintMethod = @CheckNationalAcc
											)
									)
								)
							)
						AND (
							@UserName IS NULL
							OR (
								strCustCategory IN (
									SELECT tblCustomerCat.strCustCategory
									FROM tblCustomerCat(NOLOCK)
									LEFT JOIN tblCustomerCatSec(NOLOCK) ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
									WHERE ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec(NOLOCK)
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblCustomerCatSec.strCustCategory)
													FROM tblCustomerCatSec(NOLOCK)
													WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
													), 0) > 0
											AND tblCustomerCatSec.strUserName = @UserName
											)
									)
								)
							)
						AND (
							strCustName LIKE '%' + @SearchText + '%'
							OR strCustDesc LIKE '%' + @SearchText + '%'
							OR strCity LIKE '%' + @SearchText + '%'
							OR strPhone LIKE '%' + @SearchText + '%'
							OR tblCustomers.strCurrency LIKE '%' + @SearchText + '%'
							)
					)
				SELECT
					--strCustName,strCustDesc,strCity,strPhone,strField1,strField2,strField3,strField4,strField5,strField6,strCurrency,strCurrSymbol,decBalDue,decBalDueF,bitInactive
					strCustName AS CustName
					, strCustDesc AS CustDesc
					, strCity AS City
					, strPhone AS Phone
					, strField1 AS Field1
					, strField2 AS Field2
					, strField3 AS Field3
					, strField4 AS Field4
					, strField5 AS Field5
					, strField6 AS Field6
					, strCurrency AS Currency
					, strCurrSymbol AS CurrSymbol
					, decBalDue AS ConditionalBalDue
					, decBalDueF AS BalDuef
					, bitInactive AS IsInactive
					, (
						SELECT Count(A.strCustName)
						FROM CustomerResult1 A
						) AS Total
				FROM CustomerResult1
				WHERE RowNum >= (@Offset + 1)
					AND RowNum <= (@Offset + @PageSize)
				ORDER BY RowNum
			END
		END
	END
	ELSE
	BEGIN
		IF @IsForeignCurrencyRevaluation = 1
		BEGIN
			INSERT INTO #Temp
			SELECT strCustName
				, strCustDesc
				, strCity
				, strPhone
				, strField1
				, strField2
				, strField3
				, strField4
				, strField5
				, strField6
				, tblCustomers.strCurrency
				, tblCurrency.strCurrSymbol
				, decBalDue = 0.00
				, decBalDueF = 0.00
				, bitInactive
				, decBalDueValid = 0.00
			FROM tblCustomers(NOLOCK)
			INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblCustomers.strCurrency
			WHERE (
					@IsActive IS NULL
					OR @IsActive = 1
					OR (
						@IsActive = 0
						AND bitInactive = 0
						)
					) -- Checked for Active and In Active customers
				AND (
					@IsInvoice IS NULL
					OR @IsInvoice = 0
					OR (
						@IsInvoice = 1
						AND bitInvWorkflowNew = 1
						)
					) -- Checked for invoice
				AND (
					@Option IS NULL
					OR @Option = 1
					OR (
						@Option = 2
						AND decOpenOrders <> 0
						)
					OR (
						@Option = 3
						AND decBalDue <> 0
						)
					) -- For 1 = ALL, 2 = Orders, 3 = Balances
				AND (
					@Currency IS NULL
					OR (tblCustomers.strCurrency = @Currency)
					) -- Checked for selected currency
				AND (
					@CheckNationalAcc = 0
					OR (
						strCustName NOT IN (
							SELECT CUST1.strCustName
							FROM tblCustomers(NOLOCK) CUST1
							WHERE strParentCust IN (
									SELECT CUST2.strCustName
									FROM tblCustomers(NOLOCK) CUST2
									WHERE CUST2.intNAPrintMethod = @CheckNationalAcc
									)
							)
						)
					)
				AND (
					@UserName IS NULL
					OR (
						strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat(NOLOCK)
							LEFT JOIN tblCustomerCatSec(NOLOCK) ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec(NOLOCK)
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec(NOLOCK)
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
					)
			ORDER BY strCustName

			INSERT INTO #Temp2 (
				strCustName
				, decAmount
				, decAmountF
				) (
				SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName
				, SUM(tblCustTransDT.decAmount) AS decAmount
				, SUM(tblCustTransDT.decAmountF) AS decAmountF FROM tblCustTrans(NOLOCK) AS MASTERTABLE INNER JOIN tblCustomers(NOLOCK) ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT(NOLOCK) ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE (tblCustTransDT.bitReversed = 0)
				AND (
					MASTERTABLE.strOrdDocID IS NULL
					OR (
						MASTERTABLE.strInvDocID IS NOT NULL
						AND MASTERTABLE.strOrdDocID IS NOT NULL
						)
					)
				AND (tblCustTransDT.dteJournalDate <= @RevaluationDate)
				AND (
					tblCustTransDT.lngCustTrID NOT IN (
						SELECT tblCustTransDT.lngCustTrID
						FROM tblCustTrans(NOLOCK)
						INNER JOIN tblCustTransDT(NOLOCK) ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
						WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
							AND tblCustTransDT.bitReversed = 0
							AND tblCustTransDT.dteJournalDate <= @RevaluationDate
							AND (
								tblCustTrans.strOrdDocID IS NULL
								OR (
									tblCustTrans.strInvDocID IS NOT NULL
									AND tblCustTrans.strOrdDocID IS NOT NULL
									)
								)
						GROUP BY tblCustTransDT.lngCustTrID
						HAVING SUM(tblCustTransDT.decAmount) = 0
							AND SUM(tblCustTransDT.decAmountF) = 0
						)
					) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName))
				, tblCustomers.strCustDesc
				, tblCustomers.strTerm
				, tblCustomers.strCurrency
				, tblCustTransDT.bitIsForeign
			
			UNION
				
				SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName
				, SUM(tblCustTransDT.decAmount) AS decAmount
				, SUM(tblCustTransDT.decAmountF) AS decAmountF FROM tblCustTrans(NOLOCK) AS MASTERTABLE INNER JOIN tblCustomers(NOLOCK) ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT(NOLOCK) ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE (tblCustTransDT.bitReversed = 0)
				AND (MASTERTABLE.strOrdDocID IS NOT NULL)
				AND (MASTERTABLE.strInvDocID IS NULL)
				AND (tblCustTransDT.lngCustPayID IS NOT NULL)
				AND (tblCustTransDT.dteJournalDate <= @RevaluationDate)
				AND (
					tblCustTransDT.lngCustTrID NOT IN (
						SELECT tblCustTransDT.lngCustTrID
						FROM tblCustTrans(NOLOCK)
						INNER JOIN tblCustTransDT(NOLOCK) ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
						WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
							AND tblCustTransDT.bitReversed = 0
							AND tblCustTransDT.dteJournalDate <= @RevaluationDate
							AND (
								tblCustTrans.strOrdDocID IS NULL
								OR (
									tblCustTrans.strInvDocID IS NOT NULL
									AND tblCustTrans.strOrdDocID IS NOT NULL
									)
								)
						GROUP BY tblCustTransDT.lngCustTrID
						HAVING SUM(tblCustTransDT.decAmount) = 0
							AND SUM(tblCustTransDT.decAmountF) = 0
						)
					) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName))
				, tblCustomers.strCustDesc
				, tblCustomers.strTerm
				, tblCustomers.strCurrency
				, tblCustTransDT.bitIsForeign
				, tblCustTransDT.decAmount
				, tblCustTransDT.decAmountF
				)

			UPDATE #Temp
			SET decBalDue = #Temp2.decAmountF
				, decBalDueF = #Temp2.decAmountF
				, decBalDueValid = #Temp2.decAmount
			FROM #Temp2
			WHERE #Temp2.strCustName = #Temp.strCustName

			IF (ISNULL(@SearchText, '') = '')
			BEGIN
					;

				WITH CustomerResult1
				AS (
					SELECT ROW_NUMBER() OVER (
							ORDER BY strCustName ASC
							) AS RowNum
						, strCustName
						, strCustDesc
						, strCity
						, strPhone
						, strField1
						, strField2
						, strField3
						, strField4
						, strField5
						, strField6
						, strCurrency
						, strCurrSymbol
						, decBalDue
						, decBalDueF
						, bitInactive
					FROM #Temp(NOLOCK)
					WHERE (strCurrency <> @HomeCurrencyCode)
						AND (
							CAST(decBalDueValid AS DECIMAL(18, 4)) <> 0.00
							OR CAST(decBalDueF AS DECIMAL(18, 4)) <> 0.00
							)
						AND (
							strCustName NOT IN (
								SELECT Value
								FROM [fnSplitStringAsTable]((@GridAccount), (','))
								)
							)
					)
				SELECT
					--strCustName, strCustDesc, strCity, strPhone, strField1, strField2, strField3, strField4, strField5, strField6, strCurrency, strCurrSymbol, decBalDue, decBalDueF, bitInactive
					strCustName AS CustName
					, strCustDesc AS CustDesc
					, strCity AS City
					, strPhone AS Phone
					, strField1 AS Field1
					, strField2 AS Field2
					, strField3 AS Field3
					, strField4 AS Field4
					, strField5 AS Field5
					, strField6 AS Field6
					, strCurrency AS Currency
					, strCurrSymbol AS CurrSymbol
					, decBalDue AS ConditionalBalDue
					, decBalDueF AS BalDuef
					, bitInactive AS IsInactive
					, (
						SELECT Count(A.strCustName)
						FROM CustomerResult1 A
						) AS Total
				FROM CustomerResult1
				WHERE RowNum >= (@Offset + 1)
					AND RowNum <= (@Offset + @PageSize)
				ORDER BY RowNum
			END
			ELSE
			BEGIN
					;

				WITH CustomerResult1
				AS (
					SELECT ROW_NUMBER() OVER (
							ORDER BY strCustName ASC
							) AS RowNum
						, strCustName
						, strCustDesc
						, strCity
						, strPhone
						, strField1
						, strField2
						, strField3
						, strField4
						, strField5
						, strField6
						, strCurrency
						, strCurrSymbol
						, decBalDue
						, decBalDueF
						, bitInactive
					FROM #Temp(NOLOCK)
					WHERE (strCurrency <> @HomeCurrencyCode)
						AND (
							CAST(decBalDueValid AS DECIMAL(18, 4)) <> 0.00
							OR CAST(decBalDueF AS DECIMAL(18, 4)) <> 0.00
							)
						AND (
							strCustName NOT IN (
								SELECT Value
								FROM [fnSplitStringAsTable]((@GridAccount), (','))
								)
							)
						AND ((strCustName = @SearchText))
					)
				SELECT
					--strCustName, strCustDesc, strCity, strPhone, strField1, strField2, strField3, strField4, strField5, strField6, strCurrency, strCurrSymbol, decBalDue, decBalDueF, bitInactive 
					strCustName AS CustName
					, strCustDesc AS CustDesc
					, strCity AS City
					, strPhone AS Phone
					, strField1 AS Field1
					, strField2 AS Field2
					, strField3 AS Field3
					, strField4 AS Field4
					, strField5 AS Field5
					, strField6 AS Field6
					, strCurrency AS Currency
					, strCurrSymbol AS CurrSymbol
					, decBalDue AS ConditionalBalDue
					, decBalDueF AS BalDuef
					, bitInactive AS IsInactive
					, (
						SELECT Count(A.strCustName)
						FROM CustomerResult1 A
						) AS Total
				FROM CustomerResult1
				WHERE RowNum >= (@Offset + 1)
					AND RowNum <= (@Offset + @PageSize)
				ORDER BY RowNum
			END
		END
		ELSE
		BEGIN
			IF (ISNULL(@SearchText, '') = '')
			BEGIN
					;

				WITH CustomerResult1
				AS (
					SELECT ROW_NUMBER() OVER (
							ORDER BY strCustName ASC
							) AS RowNum
						, strCustName
						, strCustDesc
						, strCity
						, strPhone
						, strField1
						, strField2
						, strField3
						, strField4
						, strField5
						, strField6
						, tblCustomers.strCurrency
						, tblCurrency.strCurrSymbol
						, decBalDue
						, decBalDueF
						, bitInactive
					FROM tblCustomers(NOLOCK)
					INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblCustomers.strCurrency
					WHERE (
							@IsActive IS NULL
							OR @IsActive = 1
							OR (
								@IsActive = 0
								AND bitInactive = 0
								)
							) -- Checked for Active and In Active customers
						AND (
							@IsInvoice IS NULL
							OR @IsInvoice = 0
							OR (
								@IsInvoice = 1
								AND bitInvWorkflowNew = 1
								)
							) -- Checked for invoice
						AND (
							@Option IS NULL
							OR @Option = 1
							OR (
								@Option = 2
								AND decOpenOrders <> 0
								)
							OR (
								@Option = 3
								AND decBalDue <> 0
								)
							) -- For 1 = ALL, 2 = Orders, 3 = Balances
						AND (
							@Currency IS NULL
							OR (tblCustomers.strCurrency = @Currency)
							) -- Checked for selected currency
						AND (
							@CheckNationalAcc = 0
							OR (
								strCustName NOT IN (
									SELECT CUST1.strCustName
									FROM tblCustomers(NOLOCK) CUST1
									WHERE strParentCust IN (
											SELECT CUST2.strCustName
											FROM tblCustomers(NOLOCK) CUST2
											WHERE CUST2.intNAPrintMethod = @CheckNationalAcc
											)
									)
								)
							)
						AND (
							@UserName IS NULL
							OR (
								strCustCategory IN (
									SELECT tblCustomerCat.strCustCategory
									FROM tblCustomerCat(NOLOCK)
									LEFT JOIN tblCustomerCatSec(NOLOCK) ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
									WHERE ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec(NOLOCK)
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblCustomerCatSec.strCustCategory)
													FROM tblCustomerCatSec(NOLOCK)
													WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
													), 0) > 0
											AND tblCustomerCatSec.strUserName = @UserName
											)
									)
								)
							)
					)
				SELECT
					--strCustName,strCustDesc,strCity,strPhone,strField1,strField2,strField3,strField4,strField5,strField6,strCurrency,strCurrSymbol,decBalDue,decBalDueF,bitInactive
					strCustName AS CustName
					, strCustDesc AS CustDesc
					, strCity AS City
					, strPhone AS Phone
					, strField1 AS Field1
					, strField2 AS Field2
					, strField3 AS Field3
					, strField4 AS Field4
					, strField5 AS Field5
					, strField6 AS Field6
					, strCurrency AS Currency
					, strCurrSymbol AS CurrSymbol
					, decBalDue AS ConditionalBalDue
					, decBalDueF AS BalDuef
					, bitInactive AS IsInactive
					, (
						SELECT Count(A.strCustName)
						FROM CustomerResult1 A
						) AS Total
				FROM CustomerResult1
				WHERE RowNum >= (@Offset + 1)
					AND RowNum <= (@Offset + @PageSize)
				ORDER BY RowNum
			END
			ELSE
			BEGIN
					;

				WITH CustomerResult1
				AS (
					SELECT ROW_NUMBER() OVER (
							ORDER BY strCustName ASC
							) AS RowNum
						, strCustName
						, strCustDesc
						, strCity
						, strPhone
						, strField1
						, strField2
						, strField3
						, strField4
						, strField5
						, strField6
						, tblCustomers.strCurrency
						, tblCurrency.strCurrSymbol
						, decBalDue
						, decBalDueF
						, bitInactive
					FROM tblCustomers(NOLOCK)
					INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblCustomers.strCurrency
					WHERE (
							@IsActive IS NULL
							OR @IsActive = 1
							OR (
								@IsActive = 0
								AND bitInactive = 0
								)
							) -- Checked for Active and In Active customers
						AND (
							@IsInvoice IS NULL
							OR @IsInvoice = 0
							OR (
								@IsInvoice = 1
								AND bitInvWorkflowNew = 1
								)
							) -- Checked for invoice
						AND (
							@Option IS NULL
							OR @Option = 1
							OR (
								@Option = 2
								AND decOpenOrders <> 0
								)
							OR (
								@Option = 3
								AND decBalDue <> 0
								)
							) -- For 1 = ALL, 2 = Orders, 3 = Balances
						AND (
							@Currency IS NULL
							OR (tblCustomers.strCurrency = @Currency)
							) -- Checked for selected currency
						AND (
							@CheckNationalAcc = 0
							OR (
								strCustName NOT IN (
									SELECT CUST1.strCustName
									FROM tblCustomers(NOLOCK) CUST1
									WHERE strParentCust IN (
											SELECT CUST2.strCustName
											FROM tblCustomers(NOLOCK) CUST2
											WHERE CUST2.intNAPrintMethod = @CheckNationalAcc
											)
									)
								)
							)
						AND (
							@UserName IS NULL
							OR (
								strCustCategory IN (
									SELECT tblCustomerCat.strCustCategory
									FROM tblCustomerCat(NOLOCK)
									LEFT JOIN tblCustomerCatSec(NOLOCK) ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
									WHERE ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec(NOLOCK)
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblCustomerCatSec.strCustCategory)
													FROM tblCustomerCatSec(NOLOCK)
													WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
													), 0) > 0
											AND tblCustomerCatSec.strUserName = @UserName
											)
									)
								)
							)
						AND ((strCustName = @SearchText))
					)
				SELECT
					--strCustName,strCustDesc,strCity,strPhone,strField1,strField2,strField3,strField4,strField5,strField6,strCurrency,strCurrSymbol,decBalDue,decBalDueF,bitInactive
					strCustName AS CustName
					, strCustDesc AS CustDesc
					, strCity AS City
					, strPhone AS Phone
					, strField1 AS Field1
					, strField2 AS Field2
					, strField3 AS Field3
					, strField4 AS Field4
					, strField5 AS Field5
					, strField6 AS Field6
					, strCurrency AS Currency
					, strCurrSymbol AS CurrSymbol
					, decBalDue AS ConditionalBalDue
					, decBalDueF AS BalDuef
					, bitInactive AS IsInactive
					, (
						SELECT Count(A.strCustName)
						FROM CustomerResult1 A
						) AS Total
				FROM CustomerResult1
				WHERE RowNum >= (@Offset + 1)
					AND RowNum <= (@Offset + @PageSize)
				ORDER BY RowNum
			END
		END
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetCustomersDataOI]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetCustomersDataOI]
(
	@strCustName nvarchar(50)	
)
AS
SELECT strCurrency 'Currency', strTerm 'Term', ISNULL((SELECT bitCOD FROM tblTerms WHERE tblTerms.strTerm = tblCustomers.strTerm),0) AS COD FROM tblCustomers WHERE strCustName = @strCustName
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerSettingsPosSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetCustomerSettingsPosSales]   
(  
@CustomerName AS NVARCHAR(50)  
)  
AS  
BEGIN  
 SELECT strTerm AS Term  
  ,intDept AS Department  
  ,strCurrency AS Currency  
  ,strVAT AS VAT  
  ,bitCreditCtrl AS IsCreditCtrl  
  ,decCreditLimit AS CreditLimit  
  ,bitCreditHold AS IsCreditHold  
  ,intDelMethod AS DelMethod  
  ,strCellPhone AS CellPhone  
  ,strTaxCode AS TaxCode  
  ,strPricelist AS Pricelist  
  ,decBalDue AS BalDue  
  ,decOpenOrders AS OpenOrders  
  ,decBalDueF AS BalDueF  
  ,decOpenOrdersF AS OpenOrdersF  
  ,decTradeDiscPerc AS TradeDiscPerc  
  ,decCreditLimitOverride AS CreditLimitOverride  
  ,dteCreditLimitExpiryDate AS CreditLimitExpiryDate  
  ,intPartialBackorders AS PartialBackorders  
  ,strINVFormDocName AS INVFormDocName  
  ,strORDFormDocName AS ORDFormDocName  
  ,bitMatrixType AS IsMatrixType  
  ,strMatrixType AS MatrixType  
  ,strValueBased AS ValueBased  
  ,bitInvWorkflowDA AS IsInvWorkflowDA  
  ,strCustDesc AS CustomerDesc  
  ,strStreet1 AS Street1  
  ,strStreet2 AS Street2  
  ,strCity AS City  
  ,strProvince AS Province  
  ,strPostal AS Postal  
  ,strTenderType AS TenderType  
  ,imgPicture As Picture 
  ,strCustomerType as CustomerType 
  ,strCustTPIN as CustTPIN
  ,strTransactionType as TransactionType
  ,strKenyaCustPin AS KenyaCustPin
 FROM tblCustomers  
 WHERE strCustName = @CustomerName  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerSettingsSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetCustomerSettingsSales] (@CustomerName AS NVARCHAR(50))  
AS  
BEGIN  
 SELECT strCustDesc AS CustomerDesc  
  ,strPostal AS Postal  
  ,strStreet1 AS Street1  
  ,strStreet2 AS Street2  
  ,strProvince AS Province  
  ,strCity AS City  
  ,strTerm AS Term  
  ,intDept AS Department  
  ,strCurrency AS Currency  
  ,strVAT AS VAT  
  ,bitCreditCtrl AS IsCreditCtrl  
  ,decCreditLimit AS CreditLimit  
  ,bitCreditHold AS IsCreditHold  
  ,intDelMethod AS DelMethod  
  ,strCellPhone AS CellPhone  
  ,strTaxCode AS TaxCode  
  ,strPricelist AS Pricelist  
  ,decBalDue AS BalDue  
  ,decOpenOrders AS OpenOrders  
  ,decBalDueF AS BalDueF  
  ,decOpenOrdersF AS OpenOrdersF  
  ,decTradeDiscPerc AS TradeDiscPerc  
  ,decCreditLimitOverride AS CreditLimitOverride  
  ,dteCreditLimitExpiryDate AS CreditLimitExpiryDate  
  ,strDocPassword AS DocPassword  
  ,ISNULL(strCustTPIN, '') AS CustTPIN  
  ,(  
   ISNULL((  
     SELECT CASE IsForeign  
       WHEN 0  
        THEN SUM(Total)  
       ELSE SUM(TotalF)  
       END  
     FROM tblWSProcessDoc  
     WHERE DocType = 1  
      AND Cleared = 0  
      AND CustomerCode = @CustomerName  
      AND Currency = (  
       SELECT strCurrency  
       FROM tblCustomers  
       WHERE strCustName = @CustomerName  
       )  
     GROUP BY IsForeign  
     ), 0) + ISNULL((  
     SELECT CASE bitIsForeign  
       WHEN 0  
        THEN SUM(decTotal)  
       ELSE SUM(decTotalF)  
       END  
     FROM tblOrderDoc  
     WHERE intDocType = 2  
      AND bitCleared = 0  
      AND strCustName = @CustomerName  
      AND strCurrency = (  
       SELECT strCurrency  
       FROM tblCustomers  
       WHERE strCustName = @CustomerName  
       )  
     GROUP BY bitIsForeign  
     ), 0) + ISNULL((  
     SELECT CASE bitIsForeign  
       WHEN 0  
        THEN SUM(decTotal)  
       ELSE SUM(decTotalF)  
       END  
     FROM tblOrderDocQ  
     WHERE bitCleared = 0  
      AND strCustName = @CustomerName  
      AND strCurrency = (  
       SELECT strCurrency  
       FROM tblCustomers  
       WHERE strCustName = @CustomerName  
       )  
     GROUP BY bitIsForeign  
     ), 0)  
   ) AS OpenQuotes  
  ,intPartialBackorders AS PartialBackorders  
  ,strINVFormDocName AS INVFormDocName  
  ,strORDFormDocName AS ORDFormDocName  
  ,bitMatrixType AS IsMatrixType  
  ,strMatrixType AS MatrixType  
  ,strValueBased AS ValueBased  
  ,bitInvWorkflowDA AS IsInvWorkflowDA  
  ,tblCustomerSales.strSalesName AS SalesName  
  ,strTenderType AS TenderType  
  ,strCustomerType AS CustomerType  
  ,strTransactionType AS TransactionType 
  ,ISNULL(strKenyaCustPin, '') AS KenyaCustPin   
 FROM tblCustomers(NOLOCK)  
 LEFT JOIN tblCustomerSales(NOLOCK) ON tblCustomers.strCustName = tblCustomerSales.strCustName  
 WHERE tblCustomers.strCustName = @CustomerName  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetCustomersGridData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetCustomersGridData] (
	@InActive BIT = NULL
	,@BPToolsMode BIT = NULL
	,@UserName VARCHAR(50) = NULL
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@Search AS NVARCHAR(Max) = ''
	,@sortIndex as int = 0
	)
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @skip INT
	SET @skip = @PageSize * (@PageNumber - 1)

	IF (@InActive = 0)
	BEGIN
		IF (@BPToolsMode = 0)
		BEGIN
			SELECT strCustName AS CustomerName
				,strCustDesc AS CustomerDesc
				,decOpenOrders AS OpenOrders
				,decBalDue AS BalDue
				,decYTDPurch AS YTDPurch
				,bitInactive AS IsInactive
				,strCurrency AS Currency
				,decOpenOrdersF AS OpenOrdersF
				,decBalDueF AS BalDueF
				,decYTDPurchF AS YTDPurchF
				,bitExclCommission AS IsExclCommission
				,imgPicture AS Picture
			FROM tblCustomers
			WHERE bitInactive = 0
				AND strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND (
								tblCustomerCatSec.strUserName = CASE 
									WHEN isnull(@UserName, '') = ''
										THEN tblCustomerCatSec.strUserName
									ELSE @UserName
									END
								)
							)
					)
				AND (
					ISNULL(strCustName, '') LIKE '%' + ISNULL(@search,strCustName) + '%'
					OR ISNULL(strCustDesc, '') LIKE '%' + ISNULL(@search,strCustName) + '%'
					)
			ORDER BY 
				case when @sortIndex = 1 then strCustDesc 
		 			else  strCustName end
							  OFFSET(@Skip) ROWS
			FETCH NEXT (@PageSize) ROWS ONLY
		END;
		ELSE
		BEGIN
			SELECT strCustName AS CustomerName
				,strCustDesc AS CustomerDesc
				,decOpenOrders AS OpenOrders
				,decBalDue AS BalDue
				,decYTDPurch AS YTDPurch
				,bitInactive AS IsInactive
				,strCurrency AS Currency
				,decOpenOrdersF AS OpenOrdersF
				,decBalDueF AS BalDueF
				,decYTDPurchF AS YTDPurchF
				,bitExclCommission AS IsExclCommission
				,imgPicture AS Picture
			FROM tblCustomers
			WHERE bitInactive = 0
				AND (
					ISNULL(strCustName, '') LIKE '%' + ISNULL(@search,strCustName) + '%'
					OR ISNULL(strCustDesc, '') LIKE '%' + ISNULL(@search,strCustName) + '%'
					)
			ORDER BY case when @sortIndex = 1 then strCustDesc 
		 			else  strCustName end
					 OFFSET(@Skip) ROWS
			FETCH NEXT (@PageSize) ROWS ONLY
		END;
	END;
	ELSE
	BEGIN
		IF (@BPToolsMode = 0)
		BEGIN
			SELECT strCustName AS CustomerName
				,strCustDesc AS CustomerDesc
				,decOpenOrders AS OpenOrders
				,decBalDue AS BalDue
				,decYTDPurch AS YTDPurch
				,bitInactive AS IsInactive
				,strCurrency AS Currency
				,decOpenOrdersF AS OpenOrdersF
				,decBalDueF AS BalDueF
				,decYTDPurchF AS YTDPurchF
				,bitExclCommission AS IsExclCommission
				,imgPicture AS Picture
			FROM tblCustomers
			WHERE strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND (
								tblCustomerCatSec.strUserName = CASE 
									WHEN isnull(@UserName, '') = ''
										THEN tblCustomerCatSec.strUserName
									ELSE @UserName
									END
								)
							)
					)
				AND (
					ISNULL(strCustName, '') LIKE '%' + ISNULL(@search,strCustName) + '%'
					OR ISNULL(strCustDesc, '') LIKE '%' + ISNULL(@search,strCustName) + '%'
					)
			ORDER BY case when @sortIndex = 1 then strCustDesc 
		 			else  strCustName end
					 OFFSET(@Skip) ROWS

			FETCH NEXT (@PageSize) ROWS ONLY
		END;
		ELSE
		BEGIN
			SELECT strCustName AS CustomerName
				,strCustDesc AS CustomerDesc
				,decOpenOrders AS OpenOrders
				,decBalDue AS BalDue
				,decYTDPurch AS YTDPurch
				,bitInactive AS IsInactive
				,strCurrency AS Currency
				,decOpenOrdersF AS OpenOrdersF
				,decBalDueF AS BalDueF
				,decYTDPurchF AS YTDPurchF
				,bitExclCommission AS IsExclCommission
				,imgPicture AS Picture
			FROM tblCustomers
				where (
					ISNULL(strCustName, '') LIKE '%' + ISNULL(@search,strCustName) + '%'
					OR ISNULL(strCustDesc, '') LIKE '%' + ISNULL(@search,strCustName) + '%'
					) 
			ORDER BY case when @sortIndex = 1 then strCustDesc 
		 			else  strCustName end
			OFFSET(@Skip) ROWS
			FETCH NEXT (@PageSize) ROWS ONLY
		END;
	END;
END;
GO
/****** Object:  StoredProcedure [dbo].[GetCustomersImportItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [UpdatetblCoOptsbitAllowBin] (Control panel) **********/


/********* Start [GetCustomersImportItems] (Customer) **********/

CREATE PROCEDURE [dbo].[GetCustomersImportItems] (@CustomerName AS NVARCHAR(50))
AS
BEGIN
	SELECT tblInvCustomer.strPartNumber As PartNumber
		,tblInv.strDesc As [Desc]
		,strItemCode As ItemCode
		,strItemDesc As ItemDesc
		,lngID As ID
	FROM tblInvCustomer
	INNER JOIN tblInv ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
	WHERE strCustName = @CustomerName
	ORDER BY tblInvCustomer.strPartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomersList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------
CREATE PROCEDURE [dbo].[GetCustomersList]
AS
BEGIN
	SELECT 
		strCustName AS CustName, 
		strCustDesc AS CustDesc, 
		strCity AS City,  
		strPhone AS Phone, 
		strField1 AS Field1, 
		strField2 AS Field2, 
		strField3 AS Field3,
		strField4 AS Field4,  
		strField5 AS Field5, 
		strField6 AS Field6, 
		tblCustomers.strCurrency AS Currency,
		tblCurrency.strCurrSymbol AS CurrSymbol, 
		(tblCurrency.strCurrSymbol  + ' ' + CAST(case when tblCurrency.strCurrency  = 'ZAR' then decbaldue else decbalduef end AS varchar(22)) ) as BalDue,
		decBalDueF AS BalDuef, 
		bitInactive AS IsInactive 
	FROM tblCustomers  
	inner join [dbo].[tblCurrency] 
		on tblCurrency.strCurrency =   tblCustomers.strCurrency
    WHERE bitInactive = 0
		 AND strCustCategory IN 
					(SELECT 
							tblCustomerCat.strCustCategory 
					 FROM tblCustomerCat 
					 LEFT JOIN tblCustomerCatSec
							 ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					 WHERE ISNULL(
								  (SELECT COUNT(tblCustomerCatSec.strCustCategory) 
								   FROM tblCustomerCatSec 
								   WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 
									OR (ISNULL(
												(SELECT COUNT(tblCustomerCatSec.strCustCategory) 
												 FROM tblCustomerCatSec 
												 WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 
														AND tblCustomerCatSec.strUserName = 'Test1'
												)
					) 
	ORDER BY strCustName
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomersListByCustName]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetPickTicketDTData] ***********/

/************Start [GetCustomersListByCustName]***********/

CREATE PROCEDURE [dbo].[GetCustomersListByCustName]
(
	@CustID AS NVARCHAR(50)
)
AS
BEGIN
	SELECT tblCustomers.strCustDesc AS 'Description',
		tblCustomers.strStreet1 AS 'Street1',
		tblCustomers.strStreet2 AS 'Street2',
		tblCustomers.strCity AS 'City',
		tblCustomers.strProvince AS 'Province',
		tblCustomers.strPostal AS 'Postal',
		tblCustomers.strCountry AS 'Country',
		tblCurrency.bitHome AS 'Home'
	FROM tblCustomers
	INNER JOIN tblCurrency ON tblCustomers.strCurrency = tblCurrency.strCurrency
	WHERE tblCustomers.strCustName = @CustID
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomersSalesOrderEDI]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetSalesOrdersOrderUTrans] ***********/

/*********** Start [GetCustomersSalesOrderEDI] ***********/
CREATE PROCEDURE [dbo].[GetCustomersSalesOrderEDI] 
@EDI VARCHAR(50)
AS
BEGIN
SELECT edi.strCustName AS 'Code',
	   cust.strCustDesc AS 'Description',
	   edi.strGLN AS 'GLN' 
FROM tblSalesOrderEDICustomers edi,tblCustomers cust
WHERE (edi.strEDI = @EDI) AND (cust.strCustName = edi.strCustName);
END 
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerTargets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetCustomerManJobs] ***********/

/*********** Start [GetCustomerTargets] ***********/
CREATE PROCEDURE [dbo].[GetCustomerTargets]
(
	@CustomerNumber AS NVARCHAR(50)
)
AS
BEGIN	
	SELECT 
		decPeriod1 As 'March',
		decPeriod2 As 'April',
		decPeriod3 As 'May',
		decPeriod4 As 'June',
		decPeriod5 As 'July',
		decPeriod6 As 'August',
		decPeriod7 As 'September',
		decPeriod8 As 'October',
		decPeriod9 As 'November',
		decPeriod10 As 'December',
		decPeriod11 As 'January',
		decPeriod12 As 'February'
	INTO #tempCustomersT
	FROM tblCustomersT T1 
	WHERE T1.strCustName = @CustomerNumber

	SELECT * 
	FROM #tempCustomersT
	UNPIVOT
	(
		Target
		FOR Month IN([March],[April],[May],[June],[July],[August],[September],[October],[November],[December],[January],[February])
	) as u
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerTaxCode]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/******************* End [GetCustomerInfo] ********************/
/******************* Start [GetCustomerTaxCode] ********************/

CREATE PROCEDURE [dbo].[GetCustomerTaxCode]
@TaxCode AS NVARCHAR(2)
AS

BEGIN
	SELECT tblTaxCodeExt.strTaxCode AS TaxCode
		,SUM(tblTaxCodeExt.decRate) AS Rate
		,tblTaxCodeExt.bitIncluded AS IsIncluded
	FROM tblTaxCodeExt
	INNER JOIN tblTaxCodes ON tblTaxCodeExt.strTaxCode = tblTaxCodes.strTaxCode
	WHERE tblTaxCodeExt.strTaxCode = @TaxCode
	GROUP BY tblTaxCodeExt.strTaxCode
			,tblTaxCodeExt.bitIncluded
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerTaxCodeData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/******************* End [GetCustomerOrderInvData] ********************/

/******************* Start [GetCustomerTaxCodeData] ********************/

Create PROCEDURE [dbo].[GetCustomerTaxCodeData]
(
	@CustName AS NVARCHAR(20),
	@ExpiryDate AS datetime
)
AS
BEGIN
SELECT
	 ti.strPartNumber AS PartNumber
	,ti.strDesc AS [Desc]
	,tip.decSelling AS Selling
	,ti.strCategory AS Category
	,(
		SELECT decDiscount
		FROM tblDiscountMatrix AS tdm
		WHERE (strInvCategory = ti.strCategory)
			AND (strCustCategory = tc.strCustCategory)
		) AS Discount
	,tc.strPricelist AS PriceList
	,tplbd.dteStartDate AS StartDate
	,tplbd.dteFinishDate AS FinishDate
	,ISNULL(tblTaxCodeExt.strTaxName, '') AS TaxName
	,ISNULL(tblTaxCodeExt.strTaxCode, '') AS TaxCode
	,ISNULL(tblTaxCodeExt.decRate, '') AS Rate
	,ISNULL(tblTaxCodeExt.bitIncluded, '') AS IsIncluded
FROM tblTaxCodeExt
INNER JOIN tblInvEx AS tie ON tblTaxCodeExt.strTaxName = tie.strTaxName
RIGHT JOIN tblInv AS ti
INNER JOIN tblInvPrice AS tip ON ti.strPartNumber = tip.strPartNumber
INNER JOIN tblCustomers AS tc ON tc.strPricelist = tip.strPricelist
INNER JOIN tblPriceListsByDate AS tplbd ON tplbd.strPricelist = tip.strPricelist
	AND tplbd.uidPriceBasedID = tip.uidPriceBasedID ON tie.strPartNumber = ti.strPartNumber WHERE (
		tc.strCustName = @CustName
		--AND tplbd.dteFinishDate <=cast( @ExpiryDate as date)
		 AND @ExpiryDate between tplbd.dteStartDate AND tplbd.dteFinishDate
		)
ORDER BY ti.strPartNumber
	,tplbd.dteStartDate
	,tplbd.dteFinishDate
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerTransactionCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [CentersRecord] ***********/

/*********** Start [GetCustomerTransactionCount] ***********/
CREATE PROCEDURE [dbo].[GetCustomerTransactionCount]
(
	@OrdDocID nvarchar(50)
)
AS
BEGIN
	SELECT 
		COUNT(*) 
	FROM 
		tblCustTrans 
	INNER JOIN 
		tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
	LEFT JOIN 
		tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID 
	WHERE 
		(tblCustTrans.strOrdDocID IS NOT NULL) AND 
		(tblCustTrans.strInvDocID IS NULL) AND 
		tblCustTransDT.lngCustPayID IS NOT NULL AND 
		strOrdDocID = @OrdDocID
		
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerTransactionData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [PaymentPlanInsertNew] ***********/


---------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetCustomerTransactionData]
(
	@OrdDocID VARCHAR(50)
)
AS
BEGIN
	SELECT lngID AS ID
		,lngCustTrID AS CustTrID
		,lngCustPayID AS CustPayID
		,intTransType AS TransType
		,decAmount AS Amount
		,decAmtOwingAtTime AS AmtOwingAtTime
		,decAmountF AS AmountF
		,decAmtOwingAtTimeF AS AmtOwingAtTimeF
		,bitIsForeign As IsForeign
	FROM tblCustTransDT
	WHERE lngCustTrID IN (
			SELECT lngCustTrID
			FROM tblCustTrans
			WHERE strOrdDocID = @OrdDocID
			)
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerTransactionId]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCheckIntegrityBinLocations] ***********/

/*********** Start [GetCustomerTransactionId] ***********/
CREATE PROCEDURE [dbo].[GetCustomerTransactionId] 
(
	@CustName NVARCHAR(100),
	@InvoiceNr NVARCHAR(100)
)
AS
BEGIN
	SELECT 
		lngCustTrID AS 'CustTrID'
	FROM 
		tblcusttrans 
	WHERE 
		strCustName = @CustName 
		AND strInvDocID = @InvoiceNr
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerTransactions]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetCustomerTransactions]  
(  
 @CustomerNumber AS NVARCHAR(50),  
 @TransType AS int,  
 @IsChkOpenSalesOrder AS BIT,  
 @IsChkZeroReceipt AS BIT,  
 @FromDate As DATETIME,  
 @ToDate AS DATETIME  

 )  
AS  
BEGIN   
 If @IsChkOpenSalesOrder = 0  
 BEGIN   
  SELECT   
   T1.strInvDepNumber AS InvDepNumber,   
  CASE   
   WHEN T1.intTransType = @TransType THEN ISNULL(T1.strJEDocID, '')   
   ELSE   
    CASE   
     WHEN ISNULL(T1.strInvDocID, '') = '' THEN ISNULL(T1.strOrdDocID, '')   
     ELSE ISNULL(T1.strInvDocID, '')   
    END   
  END AS InvDocID,   
  T2.dteJournalDate AS JournalDate,   
  CONVERT(TINYINT,T1.intTransType) AS TransType,   
  CONVERT(TINYINT,T2.intTransType) as TransTypeDT,   
  T2.decAmount as InvAmount,   
  T2.decAmountF as InvAmountF,   
  T1.dteDueDate as DueDate,   
  T2.lngCustPayID as CustPayID,   
  T1.dteSystemDate as SystemDate  
  FROM tblCustTrans T1   
  INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID  
  WHERE   
   T1.strCustName = @CustomerNumber AND   
   T2.bitReversed = 0 AND   
   ISNULL(T2.lngCustPayID,0) = 0 AND   
   CONVERT(date,T1.dteJournalDate) BETWEEN CONVERT(date,@FromDate) AND CONVERT(date,@ToDate)  
   AND (T1.strOrdDocID IS NULL OR (T1.strInvDocID IS NOT NULL AND T1.strOrdDocID IS NOT NULL) OR (T1.strOrdDocID IS NOT NULL AND T2.lngCustPayID IS NOT NULL))
  UNION ALL  
  SELECT   
   ISNULL(T3.strComment, '') AS strInvDepNumber,   
   ISNULL(T3.strSource, '') AS invoice,   
   T3.dteJournalDate AS DTTransDate,   
   CONVERT(TINYINT,1) AS TransType,   
   CONVERT(TINYINT,2)AS intTransType,   
   SUM(ISNULL(T4.decAmount,0)) AS decAmount,   
   SUM(ISNULL(T4.decAmountF,0)) AS decAmountF,   
   T3.dteJournalDate AS dteDueDate,   
   T3.lngCustPayID, T3.dteSystemDate  
  FROM tblCustPay T3   
  INNER JOIN tblCustTransDT T4 ON T3.lngCustPayID = T4.lngCustPayID   
  INNER JOIN tblCustTrans T5 ON T4.lngCustTrID = T5.lngCustTrID  
  WHERE   
   (T5.strCustName = @CustomerNumber) AND
   T3.bitReversed = 0 AND   
   CONVERT(date,T3.dteJournalDate) BETWEEN CONVERT(date,@FromDate) AND CONVERT(date,@ToDate) AND   
   (T4.bitReversed = 0)   
  GROUP BY ISNULL(T3.strSource, ''), T3.dteJournalDate, T3.dteSystemDate, T3.lngCustPayID, ISNULL(T3.strComment, '')  
  HAVING @IsChkZeroReceipt = 1 OR (SUM(ISNULL(T4.decAmount, 0)) <> 0 OR SUM(ISNULL(T4.decAmountF, 0)) <> 0)  
  ORDER BY JournalDate desc, InvDocID  
 END  
 ELSE   
 BEGIN  
  SELECT   
   T1.strInvDepNumber AS InvDepNumber,   
  CASE   
   WHEN T1.intTransType = @TransType THEN ISNULL(T1.strJEDocID, '')   
   ELSE   
    CASE   
     WHEN ISNULL(T1.strOrdDocID, '') = '' THEN ISNULL(T1.strInvDocID, '')   
     ELSE ISNULL(T1.strOrdDocID, '')   
    END   
  END AS InvDocID,   
  T2.dteJournalDate AS JournalDate,   
  CONVERT(TINYINT,T1.intTransType) AS TransType,   
  CONVERT(TINYINT,T2.intTransType) as TransTypeDT,   
  T2.decAmount as InvAmount,   
  T2.decAmountF as InvAmountF,   
  T1.dteDueDate as DueDate,   
  T2.lngCustPayID as CustPayID,   
  T1.dteSystemDate as SystemDate  
  FROM tblCustTrans T1   
  INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID  
  WHERE   
   T1.strCustName = @CustomerNumber AND   
   T2.bitReversed = 0 AND   
   ISNULL(T2.lngCustPayID,0) = 0 AND   
   CONVERT(date,T1.dteJournalDate) BETWEEN CONVERT(date,@FromDate) AND CONVERT(date,@ToDate)  
  
  UNION ALL  
  SELECT   
   ISNULL(T3.strComment, '') AS InvDepNumber,   
   ISNULL(T3.strSource, '') AS InvDocID,   
   T3.dteJournalDate AS JournalDate,   
   CONVERT(TINYINT,1) AS TransType,   
   CONVERT(TINYINT,2) AS TransTypeDT,   
   SUM(ISNULL(T4.decAmount,0)) AS InvAmount,   
   SUM(ISNULL(T4.decAmountF,0)) AS InvAmountF,   
   T3.dteJournalDate AS DueDate,   
   T3.lngCustPayID as CustPayID,   
   T3.dteSystemDate as SystemDate  
  FROM tblCustPay T3   
  INNER JOIN tblCustTransDT T4 ON T3.lngCustPayID = T4.lngCustPayID   
  INNER JOIN tblCustTrans T5 ON T4.lngCustTrID = T5.lngCustTrID  
  WHERE   
   (T3.strCustName = @CustomerNumber OR T5.strCustName = @CustomerNumber) AND T3.bitReversed = 0 AND   
   CONVERT(date,T3.dteJournalDate) BETWEEN CONVERT(date,@FromDate) AND CONVERT(date,@ToDate) AND   
   (T4.bitReversed = 0)   
  GROUP BY ISNULL(T3.strSource, ''), T3.dteJournalDate, T3.dteSystemDate, T3.lngCustPayID, ISNULL(T3.strComment, '')  
  HAVING @IsChkZeroReceipt = 1 OR SUM(ISNULL(T4.decAmount, 0)) <> 0 OR SUM(ISNULL(T4.decAmountF, 0)) <> 0  
  
  UNION ALL  
  SELECT ISNULL(T6.strReference, '') AS InvDepNumber,  
         ISNULL(T6.strOrdDocID, '') AS InvDocID,  
         T6.dteJournalDate AS JournalDate,  
         CONVERT(TINYINT,1) AS TransType,  
         CONVERT(TINYINT,1) AS TransTypeDT,  
         ISNULL(T6.decTotal,0) AS InvAmount,  
         ISNULL(T6.decTotalF,0) AS InvAmountF,  
         T6.dteJournalDate AS DueDate,  
         NULL AS CustPayID,  
         T6.dteSystemDate as SystemDate  
  FROM tblOrderDoc T6  
  WHERE (T6.intDocType = 1)  
    AND (T6.bitCleared = 0)  
    AND (T6.strCustName = @CustomerNumber)  
    AND (CONVERT(date,T6.dteJournalDate) BETWEEN CONVERT(date,@FromDate) AND CONVERT(date,@ToDate))  
    AND (T6.strOrdDocID NOT IN  
           (SELECT strOrdDocID  
            FROM tblCustTrans  
            WHERE strOrdDocID IS NOT NULL))  
  ORDER BY JournalDate desc, InvDocID  
 END  
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerTransactionsOpenBal]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetCustomerTransactionsOpenBal]  
(  
 @CustomerNumber AS NVARCHAR(50),  
 @TransType AS int,  
 @FromDate As DATETIME,
 @IsChkOpenSalesOrder AS BIT  
 )  
AS  
BEGIN
	IF @IsChkOpenSalesOrder = 0 
		BEGIN
			SELECT CASE ISNULL(T3.strSource,'')  
					WHEN '' THEN T1.strInvDepNumber  
					ELSE T3.strSource  
				END AS InvDepNumber,  
				CASE ISNULL(T3.strSource,'')  
					WHEN '' THEN CASE  
									 WHEN T1.intTransType = @TransType THEN ISNULL(T1.strJEDocID, '')  
									 ELSE ISNULL(T1.strInvDocID, '')  
								 END  
					ELSE T3.strSource  
				END AS InvDocID,  
				T2.dteJournalDate AS JournalDate,  
				T1.intTransType AS TransType,  
				T2.intTransType as TransTypeDT,  
				T2.decAmount as InvAmount,  
				T2.decAmountF as InvAmountF,  
				T1.dteDueDate as DueDate  
				 FROM tblCustTrans T1  
				 INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID  
				 LEFT JOIN tblCustPay T3 ON T2.lngCustPayID = T3.lngCustPayID  
				 WHERE T1.strCustName = @CustomerNumber  
				   AND T2.bitReversed = 0  
				   AND CONVERT(date,T2.dteJournalDate) < CONVERT(date,@FromDate)  
				   AND (T1.strOrdDocID Is Null Or (T1.strInvDocID Is Not Null And T1.strOrdDocID Is Not Null) Or (T1.strOrdDocID Is Not Null And T2.lngCustPayID Is Not Null))
				 ORDER BY JournalDate desc,InvDocID  
	 END
	ELSE
		BEGIN
			SELECT CASE ISNULL(T3.strSource,'')  
					WHEN '' THEN T1.strInvDepNumber  
					ELSE T3.strSource  
				END AS InvDepNumber,  
				CASE ISNULL(T3.strSource,'')  
					WHEN '' THEN CASE  
									 WHEN T1.intTransType = @TransType THEN ISNULL(T1.strJEDocID, '')  
									 ELSE ISNULL(T1.strInvDocID, '')  
								 END  
					ELSE T3.strSource  
				END AS InvDocID,  
				T2.dteJournalDate AS JournalDate,  
				T1.intTransType AS TransType,  
				T2.intTransType as TransTypeDT,  
				T2.decAmount as InvAmount,  
				T2.decAmountF as InvAmountF,  
				T1.dteDueDate as DueDate  
				 FROM tblCustTrans T1  
				 INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID  
				 LEFT JOIN tblCustPay T3 ON T2.lngCustPayID = T3.lngCustPayID  
				 WHERE T1.strCustName = @CustomerNumber  
				   AND T2.bitReversed = 0  
				   AND CONVERT(date,T2.dteJournalDate) < CONVERT(date,@FromDate)  
				 ORDER BY JournalDate desc,InvDocID  
		END   
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustomerValueBasedData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/******************* End [GetCustomerTaxCodeData] ********************/

/******************* Start [GetCustomerValueBasedData] ********************/
CREATE PROCEDURE [dbo].[GetCustomerValueBasedData]
(
	@CustName AS NVARCHAR(20),
	@ValueBased AS nvarchar(Max)
)
AS
BEGIN
	SELECT tblValueBased.strValueBased AS ValueBased
	,tblValueBased.bitApplyTax AS IsApplyTax
	,tblValueBasedPricingDT.uidValueBasedID AS ValueBasedID
	,CASE tblValueBasedPricingDT.intType 
		WHEN 0
			THEN 'PRICING'
		WHEN 1
			THEN 'INCLUSIONS'
		WHEN 2
			THEN 'EXCLUSIONS'
		ELSE 'UNKNOWN'
		END AS [Type]
	,tblValueBasedPricingDT.strCategory AS Category
	,tblValueBasedPricing.dteStartDate AS StartDate
	,tblValueBasedPricing.dteFinishDate AS FinishDate	
	,tblValueBasedPricingDT.decValueFrom AS ValueFrom
	,tblValueBasedPricingDT.decValueTo AS ValueTo
	,tblValueBasedPricingDT.decSpecialValue AS SpecialValue
	,tblValueBasedPricingDT.strPartNumber AS PartNumber
	FROM tblCustomers
	INNER JOIN tblValueBased ON tblCustomers.strValueBased = tblValueBased.strValueBased
	INNER JOIN tblValueBasedPricing ON tblValueBased.strValueBased = tblValueBasedPricing.strValueBased
	INNER JOIN tblValueBasedPricingDT ON tblValueBasedPricing.uidValueBasedID = tblValueBasedPricingDT.uidValueBasedID
	WHERE tblValueBasedPricing.bitInactive <> 1
		AND tblCustomers.strCustName = @CustName
		AND tblValueBased.strValueBased =@ValueBased
	END
GO
/****** Object:  StoredProcedure [dbo].[GetCustPayData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetCustPayData] 
	@PayID as bigint
AS
BEGIN
	SELECT 
	 [lngCustPayID]                 as CustPayID        --0
	,[dteSystemDate]				as SystemDate		--1
	,[dteJournalDate]				as JournalDate		--2
	,[strUserName]					as UserName			--3
	,[lngJourID]					as JourID			--4
	,[strCustName]					as CustName			--5
	,[strSource]					as [Source]			--6
	,[intBankAcct]					as BankAcct			--7
	,[decAmount]					as Amount			--8
	,[bitReversed]					as Reversed			--9
	,[bitReversal]					as Reversal			--10
	,[strComment]					as Comment			--11
	,[strPaidBy]					as PayByStr			--12
	,[decDeposit]					as Deposit			--13
	,[intDept]						as Dept				--14
	,[strCurrency]					as Currency			--15
	,[bitIsForeign]					as IsForeign		--16
	,[decExchange]					as Exchange			--17
	,[decAmountF]					as AmountF			--18
	,[decDepositF]					as DepositF			--19
	,[bitFromInvPaymt]				as FromInvPaymt		--20
	,[blnForeignBank]				as ForeignBank		--21
	,[decBankExchange]				as BankExchange		--22
	,[strBankCurrency]				as BankCurrency		--23
	,[decBankAmount]				as BankAmount		--24
	,[decBankAmountF]				as BankAmountF		--25
	,strWHTaxCode					as WHTaxCode
	,decWHPerc						as WHPerc
	,decWHAmt						as WHAmt
	,decWHAmtF						as WHAmtF
	,blnForeignBank as IsForeignBank
	,bitPrinted						as IsPrinted
FROM tblCustPay						   
WHERE [lngCustPayID] = @PayID		   
END									   
GO
/****** Object:  StoredProcedure [dbo].[GetCustTrans]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[GetCustTrans]
AS
Begin
SELECT Cast((ISNULL(MAX(lngCustTrID),0) + 1) as int) FROM tblCustTrans
End
GO
/****** Object:  StoredProcedure [dbo].[GetCustTransData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetCustTransData] @PayID AS BIGINT
	,@TransType AS INT
AS
BEGIN
	SELECT tblCustTrans.strInvDepNumber AS Reference --0      
		,CASE 
			WHEN tblCustTrans.intTransType = @TransType
				THEN ISNULL(tblCustTrans.strJEDocID, '')
			ELSE ISNULL(tblCustTrans.strInvDocID, '')
			END AS DocumentNumber --1      
		,tblCustTrans.dteJournalDate AS JournalDate --2      
		,tblCustTrans.strSoNumber AS OrderNumber --3      
		,tblCustTrans.bitIsForeign AS IsForeign --4      
		,tblCustTrans.decInvAmount AS InvAmount --5      
		,tblCustTrans.decInvAmountF AS InvAmountF --6      
		,tblCustTransDT.decAmtOwingAtTime AS DueAmountExcl --7      
		,tblCustTransDT.decAmtOwingAtTimeF AS DueAmountIncl --8      
		,SUM(CASE tblCustTransDT.intTransType
				WHEN 3
					THEN tblCustTransDT.decAmount
				ELSE 0
				END) AS Amount --9      
		,SUM(CASE tblCustTransDT.intTransType
				WHEN 3
					THEN tblCustTransDT.decAmountF
				ELSE 0
				END) AS AmountF --10      
		,SUM(CASE tblCustTransDT.intTransType
				WHEN 2
					THEN tblCustTransDT.decAmount
				ELSE 0
				END) AS Amount2 --Amount --11      
		,SUM(CASE tblCustTransDT.intTransType
				WHEN 2
					THEN tblCustTransDT.decAmountF
				ELSE 0
				END) AS AmountF2 --as DiscTaken--12      
		,tblCustTrans.lngCustTrID AS LngID --13      
		,tblCustTrans.intTransType AS TransactionType --14      
		,ISNULL(tblInvoiceDoc.decVAT, 0) AS VAT --15      
		,ISNULL(tblInvoiceDoc.decVATF, 0) AS VATF --16      
		,tblCustTrans.strCustName AS CustName --17      
	FROM tblCustTrans
	INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
	LEFT JOIN tblInvoiceDoc ON tblCustTrans.strInvDocID = tblInvoiceDoc.strInvDocID
	WHERE (tblCustTransDT.lngCustPayID = @PayID)
		AND (
			tblCustTrans.strOrdDocID IS NULL
			OR (
				tblCustTrans.strInvDocID IS NOT NULL
				AND tblCustTrans.strOrdDocID IS NOT NULL
				)
			)
		AND (
			tblCustTransDT.lngCustTrID NOT IN (
				SELECT lngCustTrID
				FROM tblCustTransDT
				WHERE lngCustPayID = @PayID
					AND intTransType = 1
				)
			)
	GROUP BY tblCustTrans.strCustName
		,tblCustTrans.strInvDepNumber
		,CASE 
			WHEN tblCustTrans.intTransType = @TransType
				THEN ISNULL(tblCustTrans.strJEDocID, '')
			ELSE ISNULL(tblCustTrans.strInvDocID, '')
			END
		,tblCustTrans.dteJournalDate
		,tblCustTrans.strSoNumber
		,tblCustTrans.bitIsForeign
		,tblCustTrans.decInvAmount
		,tblCustTrans.decInvAmountF
		,tblCustTransDT.decAmtOwingAtTime
		,tblCustTransDT.decAmtOwingAtTimeF
		,tblCustTrans.lngCustTrID
		,tblCustTrans.intTransType
		,tblInvoiceDoc.decVAT
		,tblInvoiceDoc.decVATF
	
	UNION
	
	SELECT tblCustTrans.strInvDepNumber AS Reference --01      
		,CASE 
			WHEN tblCustTrans.intTransType = @TransType
				THEN ISNULL(tblCustTrans.strJEDocID, '')
			ELSE ISNULL(tblCustTrans.strOrdDocID, '')
			END AS DocumentNumber --1      
		,tblCustTrans.dteJournalDate AS JournalDate --2      
		,tblCustTrans.strSoNumber AS OrderNumber --3      
		,tblCustTrans.bitIsForeign AS IsForeign --4      
		,tblCustTrans.decInvAmount AS InvAmount --5      
		,tblCustTrans.decInvAmountF AS InvAmountF --6      
		,tblCustTransDT.decAmtOwingAtTime AS DueAmountExcl --7      
		,tblCustTransDT.decAmtOwingAtTimeF AS DueAmountIncl --8      
		,SUM(CASE tblCustTransDT.intTransType
				WHEN 3
					THEN tblCustTransDT.decAmount
				ELSE 0
				END) AS Amount --9      
		,SUM(CASE tblCustTransDT.intTransType
				WHEN 3
					THEN tblCustTransDT.decAmountF
				ELSE 0
				END) AS AmountF --10      
		,SUM(CASE tblCustTransDT.intTransType
				WHEN 2
					THEN tblCustTransDT.decAmount
				ELSE 0
				END) AS Amount2 --Amount --Amount2 --11      
		,SUM(CASE tblCustTransDT.intTransType
				WHEN 2
					THEN tblCustTransDT.decAmountF
				ELSE 0
				END) AS AmountF2 --  as DiscTake --12      
		,tblCustTrans.lngCustTrID AS LngID --13      
		,tblCustTrans.intTransType AS TransactionType --14      
		,ISNULL(tblOrderDoc.decVAT, 0) AS VAT --15      
		,ISNULL(tblOrderDoc.decVATF, 0) AS VATF --16      
		,tblCustTrans.strCustName AS CustName --17      
	FROM tblCustTrans
	INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
	LEFT JOIN tblOrderDoc ON tblCustTrans.strInvDocID = tblOrderDoc.strOrdDocID
	WHERE (tblCustTransDT.lngCustPayID = @PayID)
		AND (tblCustTrans.strOrdDocID IS NOT NULL)
		AND (tblCustTrans.strInvDocID IS NULL)
		AND (
			tblCustTransDT.lngCustTrID NOT IN (
				SELECT lngCustTrID
				FROM tblCustTransDT
				WHERE lngCustPayID = @PayID
					AND intTransType = 1
				)
			)
	GROUP BY tblCustTrans.strCustName
		,tblCustTrans.strInvDepNumber
		,CASE 
			WHEN tblCustTrans.intTransType = @TransType
				THEN ISNULL(tblCustTrans.strJEDocID, '')
			ELSE ISNULL(tblCustTrans.strOrdDocID, '')
			END
		,tblCustTrans.dteJournalDate
		,tblCustTrans.strSoNumber
		,tblCustTrans.bitIsForeign
		,tblCustTrans.decInvAmount
		,tblCustTrans.decInvAmountF
		,tblCustTransDT.decAmtOwingAtTime
		,tblCustTransDT.decAmtOwingAtTimeF
		,tblCustTrans.lngCustTrID
		,tblCustTrans.intTransType
		,tblOrderDoc.decVAT
		,tblOrderDoc.decVATF
	ORDER BY tblCustTrans.strCustName
		,tblCustTrans.intTransType
		,tblCustTrans.strInvDepNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustTransID]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetPartNumbersInvContainers] ***********/

/*********** Start [GetCustTransID] ***********/
CREATE PROCEDURE [dbo].[GetCustTransID] (
	@CustNumber NVARCHAR(50)
	,@InvDocID NVARCHAR(50)
	)
AS
BEGIN
	SELECT lngCustTrID
	FROM tblcusttrans
	WHERE strCustName = @CustNumber
		AND strInvDocID = @InvDocID
END
GO
/****** Object:  StoredProcedure [dbo].[GetCustTransTotalRecAmount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetCustTransTotalRecAmount]    Script Date: 07-11-2019 10:38:47 ******/
CREATE PROCEDURE [dbo].[GetCustTransTotalRecAmount] (@DocID VARCHAR(200))
AS
BEGIN
	SELECT ISNULL(SUM(CASE 
					WHEN tblCustTransDT.bitIsForeign = 1
						THEN tblCustTransDT.decAmountF * - 1
					ELSE tblCustTransDT.decAmount * - 1
					END), 0)
	FROM tblCustTrans
	INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
	INNER JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
	WHERE (tblCustTrans.strOrdDocID = @DocID)
		AND (tblCustPay.bitReversed = 0)
		AND (tblCustTransDT.bitReversed = 0)
END
GO
/****** Object:  StoredProcedure [dbo].[GetDatabaseVersion]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetDatabaseVersion]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetDatabaseVersion]
  @dbName sysname
AS
BEGIN
    DECLARE @exec nvarchar(max) = QUOTENAME(@dbName) + N'.sys.sp_executesql',
        @sql  nvarchar(max) = N'SELECT intVersion FROM tblVersion;';

    EXEC @exec @sql;
END
GO
/****** Object:  StoredProcedure [dbo].[GetDataFromInvInvExt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetDataFromInvInvExt] ***********/
CREATE PROCEDURE [dbo].[GetDataFromInvInvExt]
    (
      @partNumber nvarchar(100) ,
      @locName nvarchar(20)
    )
AS
    BEGIN

        SELECT  tblInvExt.decOnHand AS OnHand,
                tblInvExt.decValue AS Value ,
                tblInv.decLastPPUnit AS LastPPUnit ,
                tblInv.decBuyToStock AS BuyToStock
        FROM    tblInv
                INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
        WHERE   ( tblInv.strPartNumber = @partNumber )
                AND ( tblInvExt.strLocName = @locName )

    END

GO
/****** Object:  StoredProcedure [dbo].[GetDataTransfersData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetDataTransfersData]
(
	@strCustName varchar(100)
)
AS
BEGIN

declare @strDataSourceName varchar(50),@intIndiCnt int = 0,@intTotalCnt int = 0, @bitEvo int,
@strTransfer01 varchar(100),@strTransfer02 varchar(100),@strTransfer03 varchar(100),
@strTransfer04 varchar(100),@strTransfer05 varchar(100),@strTransfer06 varchar(100),
@strTransfer07 varchar(100),@strTransfer08 varchar(100),@strTransfer09 varchar(100),
@strTransfer10 varchar(100),@strTransfer11 varchar(100),@strTransfer12 varchar(100),
@strTransfer13 varchar(100),@strTransfer14 varchar(100),@strTransfer15 varchar(100),
@strTransfer16 varchar(100),@strTransfer17 varchar(100),@strTransfer18 varchar(100),
@strTransfer19 varchar(100),@strTransfer20 varchar(100),@strTransfer21 varchar(100),
@strTransfer22 varchar(100),@strTransfer23 varchar(100)

SELECT @bitEvo = bitEvo FROM tblUtilitySetupConnection

Select @intIndiCnt = COUNT(ISNULL(FinancialCategory,0)) FROM tblUtilityPervLedgerMaster
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer01 = '01 - Ledger Master (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(FinCode,0)) FROM tblUtilityPervFinancialCategories
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer02 = '02 - Financial Categories (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(ID,'')) FROM tblUtilityPervTaxParameters
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer03 = '03 - Tax Parameters (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(TaxDesc01,'')) FROM tblUtilityPervTaxDescription
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer04 = '04 - Tax Description (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(Category,0)) FROM tblUtilityPervCustomerMaster
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer05 = '05 - ' + @strCustName + ' Master (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(CCCode,0)) FROM tblUtilityPervCustomerCategories
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer06 = '06 - ' + @strCustName + ' Categories (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(CustomerCode,'')) FROM tblUtilityPervDeliveryAddresses
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer07 = '07 - Delivery Addresses (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(Code,'')) FROM tblUtilityPervSalesmanMaster
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer08 = '08 - Salesman Master (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(Category,0)) FROM tblUtilityPervSupplierMaster
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer09 = '09 - Supplier Master (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(SCCode,0)) FROM tblUtilityPervSupplierCategories
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer10 = '10 - Supplier Categories (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(Category,'')) FROM tblUtilityPervInventory
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer11 = '11 - Inventory (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(ICCode,'')) FROM tblUtilityPervInventoryCategory
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer12 = '12 - Inventory Category (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(InvGroup,'')) FROM tblUtilityPervInventoryGroups
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer13 = '13 - Inventory Groups (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(StoreCode,'')) FROM tblUtilityPervMultiStore
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer14 = '14 - Multi Store (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(CurrCode,0)) FROM tblUtilityPervCurrencyFile
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer15 = '15 - Currency File (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(LastProfitLossAmt,0)) FROM tblUtilityPervLedgerParameters
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer16 = '16 - Ledger Parameters (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(StoreCode,'')) FROM tblUtilityPervMultiStoreTrn
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer17 = '17 - Multi Store Transactions (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(AccNumber,'')) FROM tblUtilityPervCashBookCurrency
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer18 = '18 - Cash Book Currency (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(JobCode,'')) FROM tblUtilityPervCostCodes
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer19 = '19 - Projects (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(DocumentType,0)) FROM tblUtilityPervHistoryHeader
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer20 = '20 - History Header (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(UserId,0)) FROM tblUtilityPervHistoryLines
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer21 = '21 - History Lines (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(GDC,'')) FROM tblUtilityPervLedgerTransactions
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer22 = '22 - Ledger Transactions (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

Select @intIndiCnt = COUNT(ISNULL(DC,'')) FROM tblUtilityPervOpenItem
SET @intTotalCnt = @intTotalCnt + @intIndiCnt
SET @strTransfer23 = '23 - Open Item (' + Convert(VARCHAR(max),@intIndiCnt) + ')'

IF(@bitEvo = 1)
SELECT @strDataSourceName = strCompany FROM tblUtilitySetupConnection

ELSE
SELECT @strDataSourceName = strName FROM tblUtilitySetupConnection

Select @strDataSourceName 'DataSourceName',@intTotalCnt 'TotalLineCount',
@strTransfer01 'Transfer01',@strTransfer02 'Transfer02',@strTransfer03 'Transfer03',
@strTransfer04 'Transfer04',@strTransfer05 'Transfer05',@strTransfer06 'Transfer06',
@strTransfer07 'Transfer07',@strTransfer08 'Transfer08',@strTransfer09 'Transfer09',
@strTransfer10 'Transfer10',@strTransfer11 'Transfer11',@strTransfer12 'Transfer12',
@strTransfer13 'Transfer13',@strTransfer14 'Transfer14',@strTransfer15 'Transfer15',
@strTransfer16 'Transfer16',@strTransfer17 'Transfer17',@strTransfer18 'Transfer18',
@strTransfer19 'Transfer19',@strTransfer20 'Transfer20',@strTransfer21 'Transfer21',
@strTransfer22 'Transfer22',@strTransfer23 'Transfer23'

END
GO

/****** Object:  StoredProcedure [dbo].[GetDefaultInvImages]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetDefaultInvImages]    Script Date: 2020-04-22 ******/
CREATE PROCEDURE [dbo].[GetDefaultInvImages]
	@SyncDate AS DATETIME = NULL
AS
BEGIN
	DECLARE @SQL NVARCHAR(Max)
	SET @SQL = 'Select strPartNumber PartNumber,imgData From tblInvImg WHERE bitDefaultImage=1'

	IF (@SyncDate IS NOT NULL)
	BEGIN
		SET @SQL = @SQL + ' And dteRowUpdated >= ''' + convert(VARCHAR, @SyncDate, 20) + ''''
	END

	EXECUTE SP_EXECUTESQL @SQL
END
GO
/****** Object:  StoredProcedure [dbo].[GetDefaultLocationName]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetWSWIPCompInvSerial] ***********/

/*********** Start [GetDefaultLocationName] ***********/
CREATE PROCEDURE [dbo].[GetDefaultLocationName]
as
	select top 1 strLocName From tblInvLoc where bitDefault=1
GO
/****** Object:  StoredProcedure [dbo].[GetDefaultLocationsForUser]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetDefaultLocationsForUser]

(

@strUserName NVARCHAR(20)

)

AS

SET NOCOUNT ON;

SELECT tblInvLoc.strLocName LocName, tblInvLoc.bitDefault 'Default', 

ISNULL((SELECT COUNT(tblInvLocSec.strLocName) FROM tblInvLocSec WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName),0) InvLocCount, 

ISNULL(tblInvLocSec.strUserName,'') UserName

FROM tblInvLoc LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName AND tblInvLocSec.strUserName = @strUserName 

WHERE tblInvLoc.intType = 0 ORDER BY tblInvLoc.strLocName

GO
/****** Object:  StoredProcedure [dbo].[GetDefaultNotesOptionsPos]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[GetDefaultNotesOptionsPos]    Script Date: 10-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[GetDefaultNotesOptionsPos]
AS
BEGIN
SELECT strAutoINV as AutoINV,strAutoSO as AutoSO,strAutoLB as AutoLB,strAutoQU as AutoQU, bitAutoSMSInv as IsAutoSMSInv, strAutoSMSInv  as AutoSMSInv FROM tblCoOpts
END
GO
/****** Object:  StoredProcedure [dbo].[GetDefaultSalesPersonAndDepartmentPos]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetDefaultSalesPersonAndDepartmentPos]    Script Date: 10-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[GetDefaultSalesPersonAndDepartmentPos]	
AS
BEGIN
	SELECT bitARDefSP as ARDefSP, bitPOSEnableUDF as POSEnableUDF, bitPOSEnableUpsell as POSEnableUpsell, blnARRequestVAT as ARRequestVAT,
	 decARMinValueForVAT as ARMinValueForVAT, bitARReceiptsOnSalesOrder as ARReceiptsOnSalesOrder FROM tblCoOpts
END
GO
/****** Object:  StoredProcedure [dbo].[GetDefaultValuesDimProLines]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetDimProLinesData] ***********/

/*********** Start [GetDefaultValuesDimProLines] ***********/
CREATE PROCEDURE [dbo].[GetDefaultValuesDimProLines]
(
	@DimProCode nvarchar(40)
)
AS
BEGIN
	SELECT
		decDefaultValue AS DefaultValue
	FROM 
		tblDimProLines 
	WHERE 
		strDimProCode = @DimProCode 
	ORDER BY 
		intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetDefNotification]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** End:  StoredProcedure [dbo].[UpdateSalesPersonForLine] ******/
/*********** Start [GetDefNotification]***********/

---------------------------------
CREATE PROCEDURE [dbo].[GetDefNotification]
AS
BEGIN
	SET NOCOUNT ON;

	SELECT NotificationSMS AS NotificationSMS
		,NotificationEMAIL AS NotificationEMAIL
		,intApproverType AS ApproverType
		,intNotificationType AS NotificationType
	FROM tblApprovalsNotifications(NOLOCK)
END
GO
/****** Object:  StoredProcedure [dbo].[GetDeliveryMethodRateBilling]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetDeliveryMethodRateBilling]
(
	@DeliveryMethodCode AS NVARCHAR(50)
)
AS
BEGIN
	SELECT tblDeliveryMethodRateBilling.intDeliveryMethodRateBilling AS DeliveryMethodRateBilling
		,tblDeliveryMethodRatesServices.strPartNumber AS PartNumber
		,dbo.tblInv.strDesc AS [Description]
		,tblDeliveryMethodRateBilling.intDelMethodRateService AS DelMethodRateService 
		,tblDeliveryMethodRateBilling.decFrom AS [From]
		,tblDeliveryMethodRateBilling.decTo AS [To]
		,tblDeliveryMethodRateBilling.decAmount AS Amount 
		,tblDeliveryMethodRatesServices.strDelMethodCode AS DelMethodCode
		,tblDeliveryMethodRatesServices.intBillingMethod AS BillingMethods
		,tblDeliveryMethodRatesServices.strTaxCode AS TaxCode
		,tblDeliveryMethodRatesServices.decMinCharge AS MinCharge
		,tblDeliveryMethodRatesServices.intDeliveryRateType AS DeliveryRateType
		,tblTaxCodeExt.decRate AS Rate
		,tblTaxCodeExt.bitIncluded AS IsIncluded
		,tblInv.strSellUnit AS SellUnit
		,tblInv.strStockUnit AS StockUnit
	FROM tblDeliveryMethodRateBilling
	INNER JOIN tblDeliveryMethodRatesServices ON tblDeliveryMethodRateBilling.intDelMethodRateService = tblDeliveryMethodRatesServices.intDelMethodRateService
	INNER JOIN tblTaxCodeExt ON tblDeliveryMethodRatesServices.strTaxCode = tblTaxCodeExt.strTaxCode
	INNER JOIN tblInv ON tblDeliveryMethodRatesServices.strPartNumber = tblInv.strPartNumber
	WHERE (tblDeliveryMethodRatesServices.strDelMethodCode = @DeliveryMethodCode)
	ORDER BY tblDeliveryMethodRatesServices.strPartNumber, tblDeliveryMethodRatesServices.intBillingMethod
END
GO
/****** Object:  StoredProcedure [dbo].[GetDeliveryMethodRateBillingContract]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
CREATE PROCEDURE [dbo].[GetDeliveryMethodRateBillingContract]
(
	@DeliveryMethodCode AS NVARCHAR(50)
)
AS
BEGIN
	SELECT tblDeliveryMethodRateBilling.intDeliveryMethodRateBilling AS DeliveryMethodRateBilling
		,tblDeliveryMethodRatesServices.strPartNumber AS PartNumber	
		,tblDeliveryMethodRateBilling.intDelMethodRateService AS DelMethodRateService 
		,tblDeliveryMethodRateBilling.decFrom AS [From]
		,tblDeliveryMethodRateBilling.decTo AS [To]
		,tblDeliveryMethodRateBilling.decAmount AS Amount 
		,tblDeliveryMethodRatesServices.strDelMethodCode AS DelMethodCode
		,tblDeliveryMethodRatesServices.intBillingMethod AS BillingMethods
		,tblDeliveryMethodRatesServices.strTaxCode AS TaxCode
		,tblDeliveryMethodRatesServices.decMinCharge AS MinCharge
		,tblDeliveryMethodRatesServices.intDeliveryRateType AS DeliveryRateType
		,tblTaxCodeExt.decRate AS Rate	
	    ,tblTaxCodeExt.bitIncluded AS IsIncluded
	FROM tblDeliveryMethodRateBilling
INNER JOIN tblDeliveryMethodRatesServices ON tblDeliveryMethodRateBilling.intDelMethodRateService = tblDeliveryMethodRatesServices.intDelMethodRateService
INNER JOIN tblTaxCodeExt ON tblDeliveryMethodRatesServices.strTaxCode = tblTaxCodeExt.strTaxCode
WHERE (tblDeliveryMethodRatesServices.strDelMethodCode = @DeliveryMethodCode)
ORDER BY tblDeliveryMethodRatesServices.strPartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetDeliveryMethodRateBillingFreehand]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-----------------------------------------GetDeliveryMethodRateBillingFreehand----------------------------------------------------------------

CREATE PROCEDURE [dbo].[GetDeliveryMethodRateBillingFreehand]
(
	@DeliveryMethodCode AS NVARCHAR(50)
)
AS
BEGIN
	SELECT tblDeliveryMethodRateBilling.intDeliveryMethodRateBilling AS DeliveryMethodRateBilling
		,tblDeliveryMethodRatesServices.strPartNumber AS PartNumber
		,dbo.tblInv.strDesc AS [Description]
		,tblDeliveryMethodRateBilling.intDelMethodRateService AS DelMethodRateService 
		,tblDeliveryMethodRateBilling.decFrom AS [From]
		,tblDeliveryMethodRateBilling.decTo AS [To]
		,tblDeliveryMethodRateBilling.decAmount AS Amount 
		,tblDeliveryMethodRatesServices.strDelMethodCode AS DelMethodCode
		,tblDeliveryMethodRatesServices.intBillingMethod AS BillingMethods
		,tblDeliveryMethodRatesServices.strTaxCode AS TaxCode
		,tblDeliveryMethodRatesServices.decMinCharge AS MinCharge
		,tblDeliveryMethodRatesServices.intDeliveryRateType AS DeliveryRateType
	FROM tblDeliveryMethodRateBilling
	INNER JOIN tblDeliveryMethodRatesServices ON tblDeliveryMethodRateBilling.intDelMethodRateService = tblDeliveryMethodRatesServices.intDelMethodRateService
	INNER JOIN tblInv ON tblDeliveryMethodRatesServices.strPartNumber = tblInv.strPartNumber
	WHERE (tblDeliveryMethodRatesServices.strDelMethodCode = @DeliveryMethodCode)
	ORDER BY tblDeliveryMethodRatesServices.strPartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetDeliveryMethodRateBillingWithTax]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetMarginPercentage] ***********/

/*********** Start [GetDeliveryMethodRateBillingWithTax] ***********/
CREATE PROCEDURE [dbo].[GetDeliveryMethodRateBillingWithTax]
(
	@DeliveryMethodCode AS NVARCHAR(50)
)
AS
BEGIN
	SELECT tblDeliveryMethodRateBilling.intDeliveryMethodRateBilling AS DeliveryMethodRateBilling
		,tblDeliveryMethodRatesServices.strPartNumber AS PartNumber
		,tblDeliveryMethodRateBilling.intDelMethodRateService AS DelMethodRateService 
		,tblDeliveryMethodRateBilling.decFrom AS [From]
		,tblDeliveryMethodRateBilling.decTo AS [To]
		,tblDeliveryMethodRateBilling.decAmount AS Amount 
		,tblDeliveryMethodRatesServices.strDelMethodCode AS DelMethodCode
		,tblDeliveryMethodRatesServices.intBillingMethod AS BillingMethods
		,tblDeliveryMethodRatesServices.strTaxCode AS TaxCode
		,tblDeliveryMethodRatesServices.decMinCharge AS MinCharge
		,tblDeliveryMethodRatesServices.intDeliveryRateType AS DeliveryRateType
		,tblTaxCodeExt.decRate AS Rate
		,tblTaxCodeExt.bitIncluded AS IsIncluded
	FROM tblDeliveryMethodRateBilling
	INNER JOIN tblDeliveryMethodRatesServices ON tblDeliveryMethodRateBilling.intDelMethodRateService = tblDeliveryMethodRatesServices.intDelMethodRateService
	INNER JOIN tblTaxCodeExt ON tblDeliveryMethodRatesServices.strTaxCode = tblTaxCodeExt.strTaxCode
	WHERE (tblDeliveryMethodRatesServices.strDelMethodCode = @DeliveryMethodCode)
	ORDER BY tblDeliveryMethodRatesServices.strPartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetDeliveryMethodsRateServicesAndBillingData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


----------------------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetDeliveryMethodsRateServicesAndBillingData]
(
	@DelMethodCode As nvarchar(100)
)
AS
BEGIN
	SELECT 
		tblInv.strDesc AS [Description],
		tblInv.strBarCode AS BarCode,
		tblInv.strBarCode2 AS BarCode2,
		CASE WHEN tblDeliveryMethodRateBilling.intDeliveryMethodRateBilling Is NULL THEN 0 ELSE tblDeliveryMethodRateBilling.intDeliveryMethodRateBilling END AS DeliveryMethodRateBilling,
		tblDeliveryMethodRatesServices.strPartNumber AS PartNumber,
		tblDeliveryMethodRatesServices.intDelMethodRateService AS DelMethodRateService,
		CASE WHEN tblDeliveryMethodRateBilling.decFrom Is NULL THEN 0 ELSE tblDeliveryMethodRateBilling.decFrom END AS [From],
		CASE WHEN tblDeliveryMethodRateBilling.decTo Is NULL THEN 0 ELSE tblDeliveryMethodRateBilling.decTo END AS [To],
		CASE WHEN tblDeliveryMethodRateBilling.decAmount Is NULL THEN 0 ELSE tblDeliveryMethodRateBilling.decAmount END AS Amount,
		tblDeliveryMethodRatesServices.strDelMethodCode AS DelMethodCode, 
		tblDeliveryMethodRatesServices.intBillingMethod AS BillingMethods, 
		tblDeliveryMethodRatesServices.strTaxCode AS TaxCode, 
		tblDeliveryMethodRatesServices.decMinCharge AS MinCharge, 
		tblDeliveryMethodRatesServices.intDeliveryRateType AS DeliveryRateType
	FROM tblDeliveryMethodRateBilling 
	RIGHT JOIN tblDeliveryMethodRatesServices ON tblDeliveryMethodRateBilling.intDelMethodRateService = tblDeliveryMethodRatesServices.intDelMethodRateService 
	INNER JOIN tblInv 
	ON (tblInv.strPartNumber =tblDeliveryMethodRatesServices.strPartNumber 
		OR tblInv.strBarCode =tblDeliveryMethodRatesServices.strPartNumber 
		OR tblInv.strBarCode2 =tblDeliveryMethodRatesServices.strPartNumber) 
	WHERE
		tblDeliveryMethodRatesServices.strDelMethodCode = @DelMethodCode AND 
		tblInv.intType = 4 AND 
		tblInv.bitInactive = 0
END
GO
/****** Object:  StoredProcedure [dbo].[GetDepartmentFromAccount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetContractPrice] ***********/

/*********** Start [GetDepartmentFromAccount] ***********/
CREATE PROCEDURE [dbo].[GetDepartmentFromAccount]
(
@intGLNumber nvarchar(60)
)
AS
BEGIN

SELECT Convert(varchar(60),intDept) Department, strDesc 'Description'
FROM tblDepartments  (NOLOCK)
WHERE (bitInactive = 0) 
AND (intDept IN (SELECT intDept FROM tblAccountsDept WHERE intGLNumber = @intGLNumber)) 
ORDER BY intDept

RETURN
END
GO
/****** Object:  StoredProcedure [dbo].[GetDepartments]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetDepartments]
AS
    SET NOCOUNT ON;
    SET NOCOUNT ON;
    SELECT  CAST([intDept] AS NVARCHAR(20)) + ' ' + [strDesc] AS DeptDescription ,
            [intDept] AS Dept ,
            [strDesc] AS Description ,
            [bitInactive] AS Inactive
    FROM    [tblDepartments]
GO
/****** Object:  StoredProcedure [dbo].[GetDepreciatableAssets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetDepreciatableAssets]
AS
    BEGIN
        SELECT  tblAssetTypes.strCode AS Code ,
                tblAssetTypes.intDepAccNo AS DepAccNo ,
                ACC.strDesc AS [AccumulatedAccDesc] ,
                tblAssetTypes.intExpAccNo AS ExpAccNo ,
                DEP.strDesc AS [DepreciationDesc] ,
                ISNULL(tblAssets.dteDepreciateFrom,
                       tblAssets.dteLastDeprecationDate) AS [DepreciateFrom] ,
                ISNULL(tblAssets.decRemainingValue,
                       tblAssets.decDepreciableValue) AS [DepreciableValue] ,
                tblAssets.strDepreciationCode1 AS DepreciationCode1 ,
                tblAssetTypes.blnUpdateGLCode1 AS UpdateGLCode1 ,
                tblAssets.strDepreciationCode2 AS DepreciationCode2 ,
                tblAssetTypes.blnUpdateGLCode2 AS UpdateGLCode2 ,
                tblAssets.strDepreciationCode3 AS DepreciationCode3 ,
                tblAssetTypes.blnUpdateGLCode3 AS UpdateGLCode3 ,
                tblAssets.strDepreciationCode4 AS DepreciationCode4 ,
                tblAssetTypes.blnUpdateGLCode4 AS UpdateGLCode4 ,
                tblAssets.strDepreciationCode5 AS DepreciationCode5 ,
                tblAssetTypes.blnUpdateGLCode5 AS UpdateGLCode5 ,
                tblAssets.strAssetCode AS AssetCode
        FROM    tblAssets
                INNER JOIN tblAssetTypes ON tblAssets.strAssetTypeCode = tblAssetTypes.strCode
                INNER JOIN tblAccounts ACC ON tblAssetTypes.intDepAccNo = ACC.intGLNumber
                INNER JOIN tblAccounts DEP ON tblAssetTypes.intExpAccNo = DEP.intGLNumber
        WHERE   ISNULL(tblAssets.strDisposalCode, '') = '' AND tblAssets.bitInactive = 0
    END
GO
/****** Object:  StoredProcedure [dbo].[GetDepreciationMethods]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetDepreciationMethods]
    (
      @strCode NVARCHAR(20) = NULL ,
      @strDescription NVARCHAR(100) = NULL ,
      @intCalculationMethod INT = 0 ,
      @decPercentage MONEY = 0 ,
      @intYears Decimal(18,4) = 0 ,
      @decIniPercentage MONEY = 0 ,
      @bitInactive BIT = 0
    )
AS
BEGIN
    SET NOCOUNT ON;
    SELECT  [strCode] AS Code ,
            [strDescription] AS Description ,
            [intCalculationMethod] AS CalculationMethod ,
            [decPercentage] AS Percentage ,
            [intYears] AS Years ,
            [decIniPercentage] AS InitialPercentage ,
            [bitInactive] AS Inactive
    FROM    [tblDepreciationMethods]
    WHERE   ( ( [strCode] = @strCode )
              OR ( @strCode IS NULL )
            )
            AND ( ( [strDescription] = @strDescription )
                  OR ( @strDescription IS NULL )
                )
            AND ( ( [intCalculationMethod] = @intCalculationMethod )
                  OR ( @intCalculationMethod = 0 )
                )
            AND ( ( [decPercentage] = @decPercentage )
                  OR ( @decPercentage = 0 )
                )
            AND ( ( [intYears] = @intYears )
                  OR ( @intYears = 0 )
                )
            AND ( ( [decIniPercentage] = @decIniPercentage )
                  OR ( @decIniPercentage = 0 )
                )
            AND ( ( [bitInactive] = @bitInactive ) );
END
GO
/****** Object:  StoredProcedure [dbo].[GetDepreciationMethodYearData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetDepreciationMethodYearData]
    (
      @strCode NVARCHAR(20) = NULL ,
      @intYearNumber INT = NULL ,
      @decPercentage DECIMAL = NULL
    )
AS
BEGIN
    SET NOCOUNT ON;
    SELECT  [strCode] AS Code ,
            [intYearNumber] AS YearNumber ,
            [decPercentage] AS Percentage
    FROM    [tblDepreciationMethodYears]
    WHERE   ( ( [strCode] = @strCode )
              OR ( @strCode IS NULL )
            )
            AND ( ( [intYearNumber] = @intYearNumber )
                  OR ( @intYearNumber IS NULL )
                )
            AND ( ( [decPercentage] = @decPercentage )
                  OR ( @decPercentage IS NULL )
                );
				END
GO
/****** Object:  StoredProcedure [dbo].[GetDimensionList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetPickTicketsDTData] ***********/

/*********** Start [GetDimensionList] ***********/
CREATE PROCEDURE [dbo].[GetDimensionList] 
	@DocNumber AS NVARCHAR(100)
	--@DocLineNumber AS INT
AS
BEGIN
	SELECT intDimLineNo AS DimLineNo
	,intDimColNo AS DimColNo
	,decValue AS Value
	,strDimColHeading AS DimColHeading
	,bitVisible AS IsVisible
	,bitAllowEditing AS IsAllowEditing
FROM tblInvoiceDocDimensions
WHERE strInvDocID = @DocNumber
	--AND intDocLineNo = @DocLineNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetDimensionProfileByDocNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-----------------------------------------------------------------
CREATE Procedure [dbo].[GetDimensionProfileByDocNumber]
(
@DocNumber nvarchar(100)
)
AS
BEGIN
SET NOCOUNT ON;
	BEGIN	
		SELECT 
		strInvPDocID as DocNumber,
		intDocLineNo as DocLineNo,
		intDimLineNo as DimLineNo, 
		intDimColNo as DimColNo, 
		decValue as Value, 
		strDimColHeading as DimColHeading, 
		bitVisible as Visible, 
		bitAllowEditing as AllowEditing 
		FROM tblInvoiceDocPDimensions 
		WHERE strInvPDocID = @DocNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetDimProLinesData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetSalesDimensionsProfilesData] ***********/

/*********** Start [GetDimProLinesData] ***********/
CREATE PROCEDURE [dbo].[GetDimProLinesData]
(
	@DimProCode nvarchar(40)
)
AS
BEGIN
	SELECT 
		intLineNo AS [LineNo], 
		strDimProCode AS DimProCode, 
		strLineDesc AS LineDesc, 
		decDefaultValue AS DefaultValue, 
		bitReadOnly	AS IsReadOnly, 
		bitVisible AS IsVisible 
	FROM 
		tblDimProLines 
	WHERE 
		strDimProCode = @DimProCode 
	ORDER BY 
		intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetDimProLinesForLoadDimensions]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetDimProLinesForLoadDimensions] ***********/
CREATE PROCEDURE [dbo].[GetDimProLinesForLoadDimensions]
(
 @SQstrDimProCode nvarchar(40)
)
AS
BEGIN
 SELECT COUNT(intLineNo) AS NoOfLines
 FROM tblDimProLines  (NOLOCK)
 WHERE strDimProCode = @SQstrDimProCode AND bitVisible = 1
END
GO
/****** Object:  StoredProcedure [dbo].[GetDiscountMatrix]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetDiscountMatrix]
(	@CustomerName AS NVARCHAR(50),
	@PartNumber AS NVARCHAR(50)
)
AS
BEGIN
	SELECT decDiscount FROM tblDiscountMatrix INNER JOIN tblCustomers ON tblDiscountMatrix.strCustCategory = tblCustomers.strCustCategory INNER JOIN tblInv ON tblDiscountMatrix.strInvCategory = tblInv.strCategory WHERE tblCustomers.strCustName = @CustomerName AND tblInv.strPartNumber = @PartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetDocumentsEmailDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetDocumentsEmailDetails]    Script Date: 04-02-2020 06:39:00 AM ******/
CREATE PROCEDURE [dbo].[GetDocumentsEmailDetails] 
@DocNumber VARCHAR(50),
@DocumentType AS TINYINT  
AS
BEGIN
    IF @DocumentType =  0  
		  SELECT  bitEmailed as IsEmailed, 
				  strInvDocID as DocNumber,
				  strEmail  as EmailId ,
				  decTotal  as GrandTotal,
				  strCustName as Customer 
			FROM tblInvoiceDoc where  strInvDocID =  @DocNumber and bitEmailed = 1
	 ELSE  
	   SELECT  bitEmailed as IsEmailed, 
		  strOrdDocID as DocNumber,
		  strEmail  as EmailId ,
		  decTotal  as GrandTotal,
		  strCustName as Customer 
	  FROM tblOrderDoc where  strOrdDocID =  @DocNumber  and bitEmailed = 1

END
GO
/****** Object:  StoredProcedure [dbo].[GetDrawerDeptReciptByDrawerName]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[GetDrawerDeptReciptByDrawerName]    Script Date: 10-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[GetDrawerDeptReciptByDrawerName]
@SQDrName as nvarchar(500)
AS
BEGIN
SELECT intDept as Dept, intAccReceipt as AccReceipt ,strCustName as CustomerName,strLocName as LocName FROM tblPOSDr WHERE (strDrawerName = @SQDrName)
END
GO
/****** Object:  StoredProcedure [dbo].[GetDrawerInfoByDrawerNamePos]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetDrawerInfoByDrawerNamePos]
@SQstrDrawerName as Varchar(500)

AS
BEGIN

SELECT uidCenterID as CenterID from tblPOSDr WHERE strDrawerName = @SQstrDrawerName

END
GO
/****** Object:  StoredProcedure [dbo].[GetDuplicateStatusMove]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetDuplicateStatusMove]
AS
BEGIN
	SELECT Z.strPartNumber AS PartNumber, Z.strSerialNumber AS SerialNumber, CASE WHEN Z.intStatus = 1 THEN 'IN' ELSE 'OUT' END AS OriginalStatus, CASE WHEN Z.intStatusNext = 1 THEN 'IN' ELSE 'OUT' END AS NextStatus FROM (SELECT lngID, tblSerialNumberTracking.strPartNumber, strSerialNumber, intStatus, ISNULL((SELECT SNT2.intStatus FROM tblSerialNumberTracking SNT2 WHERE SNT2.lngID = (SELECT MIN(SNT.lngID) FROM tblSerialNumberTracking SNT WHERE SNT.strPartNumber = tblSerialNumberTracking.strPartNumber AND SNT.strSerialNumber = tblSerialNumberTracking.strSerialNumber AND SNT.lngID > tblSerialNumberTracking.lngID)), 0) AS intStatusNext FROM tblSerialNumberTracking INNER JOIN tblInv ON tblSerialNumberTracking.strPartNumber = tblInv.strPartNumber	INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType WHERE tblInvSerialTypes.intType = 0) Z WHERE Z.intStatus = Z.intStatusNext ORDER BY Z.strPartNumber, Z.strSerialNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetEquityAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetEquityAccountsCY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.intAccType = 3  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.intAccType = 3  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.intAccType = 3  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.intAccType = 3  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
  
 RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetEquityAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------
CREATE PROCEDURE [dbo].[GetEquityAccountsLY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 3  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 3  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 3  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 3  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
  
 RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetExchangeRateSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


/*********** Start [GetExchangeRateSales] ***********/
CREATE PROCEDURE [dbo].[GetExchangeRateSales]( 
@Currency AS VARCHAR(3),  
@DocumentDate AS DATETIME  
)  
AS  
BEGIN  
SELECT decRate FROM tblCurrencyExc WHERE strCurrency = @Currency AND dteDate = (SELECT MAX(dteDate) FROM tblCurrencyExc WHERE strCurrency = @Currency AND CONVERT(date,dteDate) <= CONVERT(date,@DocumentDate))  
END  
GO

/****** Object:  StoredProcedure [dbo].[GetExpenseAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetExpenseAccountsCY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 ,@isForeignCurrencyRevaluation BIT  
 ,@isGridAccount BIT  
 ,@GridAccountList VARCHAR(MAX)  
 ,@RevaluationDate DATETIME = null  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts (NOLOCK)   
   LEFT JOIN tblInv (NOLOCK)  ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.intAccType = 5  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec (NOLOCK)   
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts (NOLOCK)   
   LEFT JOIN tblAccountsSec (NOLOCK)  ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv (NOLOCK)  ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.intAccType = 5  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   IF @isForeignCurrencyRevaluation = 1  
   BEGIN  
    IF @isGridAccount = 0  
    BEGIN  
     SELECT DISTINCT tblAccounts.intGLNumber GLNumber  
      ,tblAccounts.intAccType AccountType  
      ,tblAccounts.strDesc 'Description'  
      ,tblAccounts.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccounts.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccounts (NOLOCK)   
     --INNER JOIN tblJournalEntryDocDT ON tblAccounts.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     --INNER JOIN tblJournalEntryDoc ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency] (NOLOCK)  ON tblCurrency.strCurrency = tblAccounts.strCurrency  
     LEFT JOIN tblInv (NOLOCK)  ON tblInv.intExpAcct = tblAccounts.intGLNumber  
     WHERE tblAccounts.intAccType = 5  
      AND tblAccounts.bitInactive = 0  
      AND (  
       tblAccounts.intGroupCode = 1  
       OR tblAccounts.intGroupCode = 2  
       )  
      AND (tblAccounts.strCurrency <> @strCurrency)  
      AND (decBalance <> 0 OR decBalanceF <> 0)  
      --AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
     ORDER BY intAccType, tblAccounts.intGLNumber  
    END  
    ELSE  
    BEGIN  
     SELECT DISTINCT tblAccounts.intGLNumber GLNumber  
      ,tblAccounts.intAccType AccountType  
      ,tblAccounts.strDesc 'Description'  
      ,tblAccounts.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccounts.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccounts (NOLOCK)   
     INNER JOIN tblJournalEntryDocDT (NOLOCK)  ON tblAccounts.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     INNER JOIN tblJournalEntryDoc (NOLOCK)  ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency] (NOLOCK)  ON tblCurrency.strCurrency = tblAccounts.strCurrency  
     LEFT JOIN tblInv (NOLOCK)  ON tblInv.intExpAcct = tblAccounts.intGLNumber  
     WHERE tblAccounts.intAccType = 5  
      AND tblAccounts.bitInactive = 0  
      AND (  
       tblAccounts.intGroupCode = 1  
       OR tblAccounts.intGroupCode = 2  
       )  
      AND (tblAccounts.strCurrency <> @strCurrency)  
      AND decBalance <> 0  
      AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
      AND tblAccounts.intGLNumber NOT IN (  
       SELECT value  
       FROM dbo.fnSplitStringAsTable(@GridAccountList, ',')  
       )  
     ORDER BY intAccType, tblAccounts.intGLNumber  
    END  
   END  
   ELSE  
   BEGIN  
    SELECT tblAccounts.intGLNumber GLNumber  
     ,tblAccounts.intAccType AccountType  
     ,tblAccounts.strDesc 'Description'  
     ,tblAccounts.intAccClass AccountClass  
     ,ISNULL(tblInv.strPartNumber, '') JournalCode  
     ,0 AccountSecCount  
     ,'' UserName  
    FROM tblAccounts (NOLOCK)   
    LEFT JOIN tblInv (NOLOCK)  ON tblInv.intExpAcct = tblAccounts.intGLNumber  
    WHERE tblAccounts.intAccType = 5  
     AND tblAccounts.bitInactive = 0  
     AND (  
      tblAccounts.intGroupCode = 1  
      OR tblAccounts.intGroupCode = 2  
      )  
     AND (  
      strCurrency = @strCurrency  
      OR strCurrency = @strHomeCurrency  
      )  
    ORDER BY intAccType, intGLNumber  
   END  
  END  
  ELSE  
  IF @isForeignCurrencyRevaluation = 1  
  BEGIN  
  SELECT DISTINCT tblAccounts.intGLNumber GLNumber  
 ,tblAccounts.intAccType AccountType  
 ,tblAccounts.strDesc 'Description'  
 ,tblAccounts.intAccClass AccountClass  
 ,ISNULL(tblInv.strPartNumber, '') JournalCode  
 ,ISNULL((  
   SELECT COUNT(tblAccountsSec.intGLNumber)  
   FROM tblAccountsSec(NOLOCK)  
   WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
   ), 0) AccountSecCount  
 ,ISNULL(tblAccountsSec.strUserName, '') UserName  
 ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccounts.decBalanceF AS VARCHAR(22))  
FROM tblAccounts(NOLOCK)  
LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
 AND tblAccountsSec.strUserName = @strUserName  
INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblAccounts.strCurrency  
LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
WHERE tblAccounts.intAccType = 5  
 AND tblAccounts.bitInactive = 0  
 AND (  
  tblAccounts.intGroupCode = 1  
  OR tblAccounts.intGroupCode = 2  
  )  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec (NOLOCK)   
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts (NOLOCK)   
   LEFT JOIN tblAccountsSec (NOLOCK)  ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv (NOLOCK)  ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.intAccType = 5  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 RETURN  
END  
GO

/****** Object:  StoredProcedure [dbo].[GetExpenseAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------------
CREATE PROCEDURE [dbo].[GetExpenseAccountsLY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 ,@isForeignCurrencyRevaluation BIT  
 ,@isGridAccount BIT  
 ,@GridAccountList VARCHAR(MAX)  
 ,@RevaluationDate DATETIME  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY (NOLOCK)  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 5  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec (NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY (NOLOCK)  
   LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 5  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
  IF @isForeignCurrencyRevaluation = 1  
   BEGIN  
    IF @isGridAccount = 0  
    BEGIN  
     SELECT DISTINCT tblAccountsLY.intGLNumber GLNumber  
      ,tblAccountsLY.intAccType AccountType  
      ,tblAccountsLY.strDesc 'Description'  
      ,tblAccountsLY.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccountsLY.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccountsLY (NOLOCK)  
     --INNER JOIN tblJournalEntryDocDT ON tblAccountsLY.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     --INNER JOIN tblJournalEntryDoc ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency] (NOLOCK) ON tblCurrency.strCurrency = tblAccountsLY.strCurrency  
     LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
     WHERE tblAccountsLY.intAccType = 5  
      AND tblAccountsLY.bitInactive = 0  
      AND (  
       tblAccountsLY.intGroupCode = 1  
       OR tblAccountsLY.intGroupCode = 2  
       )  
      AND (tblAccountsLY.strCurrency <> @strCurrency)  
      AND (decBalance <> 0 OR decBalanceF <> 0)  
      --AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
     ORDER BY intAccType, tblAccountsLY.intGLNumber  
    END  
    ELSE  
    BEGIN  
     SELECT DISTINCT tblAccountsLY.intGLNumber GLNumber  
      ,tblAccountsLY.intAccType AccountType  
      ,tblAccountsLY.strDesc 'Description'  
      ,tblAccountsLY.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccountsLY.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccountsLY (NOLOCK)  
     INNER JOIN tblJournalEntryDocDT (NOLOCK) ON tblAccountsLY.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     INNER JOIN tblJournalEntryDoc (NOLOCK) ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency] (NOLOCK) ON tblCurrency.strCurrency = tblAccountsLY.strCurrency  
     LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
     WHERE tblAccountsLY.intAccType = 5  
      AND tblAccountsLY.bitInactive = 0  
      AND (  
       tblAccountsLY.intGroupCode = 1  
       OR tblAccountsLY.intGroupCode = 2  
       )  
      AND (tblAccountsLY.strCurrency <> @strCurrency)  
      AND decBalance <> 0  
      AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
      AND tblAccountsLY.intGLNumber NOT IN (  
       SELECT value  
       FROM dbo.fnSplitStringAsTable(@GridAccountList, ',')  
       )  
     ORDER BY intAccType, tblAccountsLY.intGLNumber  
    END  
   END  
   ELSE  
   BEGIN  
    SELECT tblAccountsLY.intGLNumber GLNumber  
     ,tblAccountsLY.intAccType AccountType  
     ,tblAccountsLY.strDesc 'Description'  
     ,tblAccountsLY.intAccClass AccountClass  
     ,ISNULL(tblInv.strPartNumber, '') JournalCode  
     ,0 AccountSecCount  
     ,'' UserName  
    FROM tblAccountsLY (NOLOCK)  
    LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
    WHERE tblAccountsLY.intAccType = 5  
     AND tblAccountsLY.bitInactive = 0  
     AND (  
      tblAccountsLY.intGroupCode = 1  
      OR tblAccountsLY.intGroupCode = 2  
      )  
     AND (  
      strCurrency = @strCurrency  
      OR strCurrency = @strHomeCurrency  
      )  
    ORDER BY intAccType, intGLNumber  
   END  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec (NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY (NOLOCK)  
   LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 5  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
  
 RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetExpenseTypes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetExpenseTypes]
    (
      @lngID BIGINT = NULL ,
      @strCode NVARCHAR(20) = NULL ,
      @strDescription NVARCHAR(100) = NULL ,
      @strUOM NVARCHAR(10) = NULL ,
      @bitInactive BIT = NULL
    )
AS
BEGIN
    SET NOCOUNT ON;
    SELECT  [lngID] AS ID ,
            [strCode] AS Code ,
            [strDescription] AS Description ,
            [strUOM] AS UnitOfMeasure ,
            [bitInactive] AS Isactive
    FROM    [tblCostTypes]
    WHERE   ( ( [lngID] = @lngID )
              OR ( @lngID IS NULL )
            )
            AND ( ( [strCode] = @strCode )
                  OR ( @strCode IS NULL )
                )
            AND ( ( [strDescription] = @strDescription )
                  OR ( @strDescription IS NULL )
                )
            AND ( ( [strUOM] = @strUOM )
                  OR ( @strUOM IS NULL )
                )
            AND ( ( [bitInactive] = @bitInactive )
                  OR ( @bitInactive IS NULL )
                );
				END
GO
/****** Object:  StoredProcedure [dbo].[GetFileData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

Create PROCEDURE [dbo].[GetFileData]
@PartNumber AS NVARCHAR(50),
@SalesDocument AS INT,
@SalesInvoice AS INT
AS
BEGIN
	SELECT strFileName AS [FileName], imgFile AS [File] FROM tblInvF WHERE strPartNumber = @PartNumber And bitEnc = 0 And intAttachOn In (@SalesDocument, @SalesInvoice)
END
GO
/****** Object:  StoredProcedure [dbo].[GetFilesSalesOrdersEDI]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCustomersSalesOrderEDI] ***********/

/*********** Start [GetFilesSalesOrdersEDI] ***********/
CREATE PROCEDURE [dbo].[GetFilesSalesOrdersEDI] 
@EDI VARCHAR(50)
AS
BEGIN
SELECT 
	strEDI AS 'VendName',
	strFileName AS 'FileName',
	dteModified AS 'Modified',
	strType AS 'Type',
	intSize AS 'Size',
	strUserName AS 'UserName',
	bitEnc AS 'Enc',
	imgFile AS 'File',
	intFileType AS 'FileType',
	intStatus AS 'Status'
FROM tblSalesOrderEDIF 
WHERE strEDI = @EDI;	
END 
GO
/****** Object:  StoredProcedure [dbo].[GetFinancialYearCheckData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[GetFinancialYearCheckData]
AS
BEGIN
	DECLARE @bitevo BIT

	SELECT @bitevo = bitEvo 
	FROM tblUtilityPervLedgerParameters

	IF (@bitevo = 0)
	BEGIN
		SELECT dteYearStarts 'YearStarts'
			,dteYearEnds 'YearEnds'
			,PerStartThis01 'PerStartThis01'
			,PerEndThis12 'PerEndThis12'
			,cast((
					CASE 
						WHEN PerStartThis01 BETWEEN dteYearStarts
								AND dteYearEnds
							THEN 1
						ELSE 0
						END
					) AS BIT) 'IsDateInBetween'
		FROM tblCompany
		CROSS JOIN tblUtilityPervLedgerParameters
	END
	ELSE
	BEGIN
		SELECT TOP 1 Z.YearStart AS EvoYearStarts
			,Z.YearEnd AS EvoYearEnds
			,C.dteYearStarts AS YearStarts
			,C.dteYearEnds AS YearEnds
			,CAST(CASE WHEN Z.YearStart = dteYearStarts AND Z.YearEnd = dteYearEnds THEN 1 ELSE 0 END AS BIT) AS IsDateInBetween
		FROM (
			SELECT YearStart01 AS YearStart
				,YearEnd01 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart02 AS YearStart
				,YearEnd02 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart03 AS YearStart
				,YearEnd03 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart04 AS YearStart
				,YearEnd04 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart05 AS YearStart
				,YearEnd05 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart06 AS YearStart
				,YearEnd06 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart07 AS YearStart
				,YearEnd07 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart08 AS YearStart
				,YearEnd08 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart09 AS YearStart
				,YearEnd09 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart10 AS YearStart
				,YearEnd10 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart11 AS YearStart
				,YearEnd11 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart12 AS YearStart
				,YearEnd12 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart13 AS YearStart
				,YearEnd13 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart14 AS YearStart
				,YearEnd14 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart15 AS YearStart
				,YearEnd15 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart16 AS YearStart
				,YearEnd16 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart17 AS YearStart
				,YearEnd17 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart18 AS YearStart
				,YearEnd18 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart19 AS YearStart
				,YearEnd19 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			
			UNION ALL
			
			SELECT YearStart20 AS YearStart
				,YearEnd20 AS YearEnd
			FROM tblUtilityPervLedgerParameters
			) Z
		CROSS JOIN tblCompany C
		ORDER BY Z.YearStart DESC
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetFinishEnteringHistoryData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetFinishEnteringHistoryData]  
AS  
BEGIN  
 CREATE TABLE #HistoryData (  
  fieldName VARCHAR(100)  
  ,fieldValue MONEY   
  )  
  
 DECLARE @fieldName VARCHAR(100)  
  ,@fieldValue MONEY
  
 ---- TotalDebits    
 SET @fieldName = 'TotalDebits'  
  
 SELECT @fieldValue = FORMAT(ISNULL(SUM(decBalance), 0), '#,##0.00')  
 FROM tblAccounts  
 WHERE intAccType = 1  
  OR intAccType = 5  
  
 INSERT INTO #HistoryData  
 VALUES (  
  @fieldName  
  ,@fieldValue  
  )  
  
 ---- TotalCredits    
 SET @fieldName = 'TotalCredits'  
  
 SELECT @fieldValue = FORMAT(ISNULL(SUM(decBalance), 0), '#,##0.00')  
 FROM tblAccounts  
 WHERE intAccType = 2  
  OR intAccType = 4  
  OR (  
   intAccType = 3  
   AND bitLinkCEarnings = 0  
   )  
  
 INSERT INTO #HistoryData  
 VALUES (  
  @fieldName  
  ,@fieldValue  
  )  
  
 ---- ARBal    
 SET @fieldName = 'ARBal'  
  
 --SELECT @fieldValue = FORMAT(ISNULL(decBalance, 0), '#,##0.00')  
 --FROM tblAccounts  
 --WHERE bitLinkAR = 1  
 SELECT @fieldValue = FORMAT(ISNULL(decBalance, 0), '#,##0.00')  
 FROM (  
  SELECT decBalance  
   ,intGLNumber  
   ,'' AS strInvDocID  
  FROM tblAccounts  
  WHERE bitLinkAR = 1  
    
  UNION  
    
  SELECT decBalance  
   ,intGLNumber  
   ,''  
  FROM tblCustomers  
  INNER JOIN tblAccounts ON tblCustomers.intGLNumberAR = tblAccounts.intGLNumber  
  WHERE tblAccounts.bitLinkAR = 1  
  ) AS Z  
  
 INSERT INTO #HistoryData  
 VALUES (  
  @fieldName  
  ,@fieldValue  
  )  
  
 ---- DepositBalance    
 SET @fieldName = 'DepositBalance'  
  
 DECLARE @decDepositBalance MONEY  
  ,@blnSeparateDepositAccount BIT = 0  
  ,@intAccType INT  
  
 --SELECT @decDepositBalance = decBalance  
 -- ,@intAccType = intAccType  
 -- ,@blnSeparateDepositAccount = ~ bitLinkAR  
 --FROM tblAccounts  
 --WHERE bitLinkDeposit = 1  
 SELECT @decDepositBalance = SUM(ISNULL(decBalance, 0))  
  ,@intAccType = intAccType  
  ,@blnSeparateDepositAccount = MIN(CAST(bitLinkAR AS INT))  
 FROM (  
  SELECT decBalance  
   ,intAccType  
   ,bitLinkAR  
   ,intGLNumber  
  FROM tblAccounts  
  WHERE bitLinkDeposit = 1  
    
  UNION  
    
  SELECT decBalance  
   ,intAccType  
   ,0 AS bitLinkAR  
   ,intGLNumber  
  FROM tblCustomers  
  INNER JOIN tblAccounts ON tblCustomers.intGLNumberDeposit = tblAccounts.intGLNumber  
  WHERE tblAccounts.bitLinkDeposit = 1  
   AND tblCustomers.intGLNumberDeposit <> (  
    SELECT intGLNumber  
    FROM tblAccounts  
    WHERE bitLinkDeposit = 1  
    )  
  ) AS Z  
 GROUP BY intAccType  
  ,bitLinkAR  
 
 SET @blnSeparateDepositAccount = ~ @blnSeparateDepositAccount  
    
 IF (  
   (  
    SELECT Count(1)  
    FROM tblAccounts  
    WHERE bitLinkDeposit = 1  
    ) > 0  
   )  
 BEGIN  
  IF (@blnSeparateDepositAccount = 1)  
  BEGIN  
   IF (@intAccType = 1)  
   BEGIN  
    ---Asset    
    SET @fieldValue = FORMAT(@decDepositBalance * - 1, '#,##0.00')  
   END  
   ELSE  
   BEGIN  
    ---Liability    
    SET @fieldValue = FORMAT(@decDepositBalance, '#,##0.00')  
   END  
  END  
  ELSE  
  BEGIN  
   SET @fieldValue = -1 
  END  
 END  
 ELSE  
 BEGIN  
  SET @fieldValue = -1 
 END  
  
 IF @fieldValue = -1  
 BEGIN  
  SELECT @decDepositBalance = ISNULL(SUM(decBalance), 0)  
  FROM (  
   SELECT DISTINCT intGLNumberDeposit  
   FROM tblCustomers  
   WHERE intGLNumberDeposit IS NOT NULL  
    AND intGLNumberDeposit <> (  
     SELECT intGLNumber  
     FROM tblAccounts  
     WHERE bitLinkDeposit = 1  
     )  
   ) Y  
  INNER JOIN tblAccounts ON Y.intGLNumberDeposit = tblAccounts.intGLNumber  
  
  IF @decDepositBalance <> 0  
  BEGIN  
   SET @fieldValue = FORMAT(@decDepositBalance, '#,##0.00')  
  END 
 END  
  set @fieldValue = ISNULL(@fieldValue,'')
 INSERT INTO #HistoryData  
 VALUES (  
  @fieldName  
  ,@fieldValue  
  )  
  
 ---- APBal    
 SET @fieldName = 'APBal'  
  SET @fieldValue = '0.00'
 SELECT @fieldValue = FORMAT(ISNULL(decBalance, 0), '#,##0.00')  
 FROM (  
  SELECT decBalance  
   ,intGLNumber  
   ,'' AS strInvPDocID  
  FROM tblAccounts  
  WHERE bitLinkAP = 1  
    
  UNION  
    
  SELECT decBalance  
   ,intGLNumber  
   ,''  
  FROM tblVendors  
  INNER JOIN tblAccounts ON tblVendors.intGLNumberAP = tblAccounts.intGLNumber  
  WHERE tblAccounts.bitLinkAP = 1  
  ) AS Z  
 
 INSERT INTO #HistoryData  
 VALUES (  
  @fieldName  
  ,@fieldValue  
  )  
  
 ---- PrePayBalance    
 SET @fieldName = 'PrePayBalance'  
  
 DECLARE @decPrePayBalance MONEY  
  ,@blnSeparatePrePayAccount BIT = 0  
  ,@intPreAccType INT  
  
 --SELECT @decPrePayBalance = decBalance  
 -- ,@intPreAccType = intAccType  
 -- ,@blnSeparatePrePayAccount = ~ bitLinkAR  
 --FROM tblAccounts  
 --WHERE bitLinkDeposit = 1  
 SELECT @decPrePayBalance = SUM(ISNULL(decBalance, 0))  
  ,@intPreAccType = intAccType  
  ,@blnSeparatePrePayAccount = MIN(CAST(bitLinkAP AS INT))  
 FROM (  
  SELECT decBalance  
   ,intAccType  
   ,bitLinkAP  
   ,intGLNumber  
  FROM tblAccounts  
  WHERE bitLinkPrePay = 1  
    
  UNION  
    
  SELECT decBalance  
   ,intAccType  
   ,0 AS bitLinkAP  
   ,intGLNumber  
  FROM tblVendors  
  INNER JOIN tblAccounts ON tblVendors.intGLNumberPrePay = tblAccounts.intGLNumber  
  WHERE tblAccounts.bitLinkPrePay = 1  
   AND tblVendors.intGLNumberPrePay <> (  
    SELECT intGLNumber  
    FROM tblAccounts  
    WHERE bitLinkPrePay = 1  
    )  
  ) AS Z  
 GROUP BY intAccType  
  ,bitLinkAP  
  
 SET @blnSeparatePrePayAccount = ~ @blnSeparatePrePayAccount  
  
 IF (  
   (  
    SELECT Count(1)  
    FROM tblAccounts  
    WHERE bitLinkDeposit = 1  
    ) > 0  
   )  
 BEGIN  
  IF (@blnSeparatePrePayAccount = 1)  
  BEGIN  
   IF (@intPreAccType = 1)  
   BEGIN  
    ---Asset    
    SET @fieldValue = FORMAT(@decPrePayBalance, '#,##0.00')  
   END  
   ELSE  
   BEGIN  
    ---Liability    
    SET @fieldValue = FORMAT(@decPrePayBalance * - 1, '#,##0.00')  
   END  
  END  
  ELSE  
  BEGIN  
   SET @fieldValue = -1  
  END  
 END  
 ELSE  
 BEGIN  
  SET @fieldValue = -1
 END  
  
 IF @fieldValue = -1 
 BEGIN  
  SELECT @decPrePayBalance = ISNULL(SUM(decBalance), 0)  
  FROM (  
   SELECT DISTINCT intGLNumberPrePay  
   FROM tblVendors  
   WHERE intGLNumberPrePay IS NOT NULL  
    AND intGLNumberPrePay <> (  
     SELECT intGLNumber  
     FROM tblAccounts  
     WHERE bitLinkPrePay = 1  
     )  
   ) Y  
  INNER JOIN tblAccounts ON Y.intGLNumberPrePay = tblAccounts.intGLNumber  
  
  IF @decPrePayBalance <> 0  
  BEGIN  
   SET @fieldValue = FORMAT(@decPrePayBalance, '#,##0.00')  
  END  
 END  
  
 INSERT INTO #HistoryData  
 VALUES (  
  @fieldName  
  ,@fieldValue  
  )  
  
 ---- InvBal & ActInventoryBal    
 CREATE TABLE #InvItem (  
  AcctBal MONEY  
  ,InvBal MONEY  
  )  
  
 INSERT INTO #InvItem  
 SELECT SUM(DISTINCT ISNULL(tblAccounts.decBalance, 0)) AS AcctBal  
  ,SUM(ISNULL(tblInvExt.decValue, 0)) AS InvBal  
 FROM dbo.fntblinvforlocjoin() tblInv  
 LEFT JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber  
  AND tblInv.strLocName = tblInvExt.strLocName  
 INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet  
 LEFT JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber  
 WHERE (tblAccountSets.blnService = 0)  
  AND (tblInv.intType = 1)  
 GROUP BY tblAccountSets.intGLAsset  
  ,tblAccounts.strDesc  
 ORDER BY tblAccountSets.intGLAsset  
  
 SET @fieldName = 'InvBal'  
  
 SELECT @fieldValue = FORMAT(SUM(AcctBal), '#,##0.00')  
 FROM #InvItem  
  
 IF (  
   (  
    SELECT Count(1)  
    FROM #InvItem  
    ) = 0  
   )  
 BEGIN  
  SET @fieldValue = FORMAT(0, '#,##0.00')  
 END  
  
 INSERT INTO #HistoryData  
 VALUES (  
  @fieldName  
  ,@fieldValue  
  )  
  
 SET @fieldName = 'ActInventoryBal'  
  
 SELECT @fieldValue = FORMAT(SUM(InvBal), '#,##0.00')  
 FROM #InvItem  
  
 IF (  
   (  
    SELECT Count(1)  
    FROM #InvItem  
    ) = 0  
   )  
 BEGIN  
  SET @fieldValue = FORMAT(0, '#,##0.00')  
 END  
  
 INSERT INTO #HistoryData  
 VALUES (  
  @fieldName  
  ,@fieldValue  
  )  
  
 DROP TABLE #InvItem  
  
 ----Deposits (depending on separate accounts or not)    
 IF (@blnSeparateDepositAccount = 0)  
 BEGIN  
  SET @fieldName = 'OpenRecInv'  
  
  SELECT @fieldValue = FORMAT(ISNULL(SUM(ISNULL(Z.decAmount, 0)), 0), '#,##0.00')  
  FROM (  
   SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) AS decAmount  
   FROM tblCustTrans  
   INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID  
   WHERE (tblCustTransDT.bitReversed = 0)  
    AND (  
     tblCustTrans.strOrdDocID IS NULL  
     OR (  
      tblCustTrans.strInvDocID IS NOT NULL  
      AND tblCustTrans.strOrdDocID IS NOT NULL  
      )  
     )  
     
   UNION ALL  
     
   SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) AS decAmount  
   FROM tblCustTrans  
   INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID  
   WHERE (tblCustTransDT.bitReversed = 0)  
    AND (tblCustTrans.strOrdDocID IS NOT NULL)  
    AND (tblCustTrans.strInvDocID IS NULL)  
    AND (tblCustTransDT.lngCustPayID IS NOT NULL)  
   ) Z  
  
  INSERT INTO #HistoryData  
  VALUES (  
   @fieldName  
   ,@fieldValue  
   )  
  
  SET @fieldName = 'SalesDeposits'  
  SET @fieldValue = -1 
  
  INSERT INTO #HistoryData  
  VALUES (  
   @fieldName  
   ,@fieldValue  
   )  
 END  
 ELSE  
 BEGIN  
  SET @fieldName = 'OpenRecInv'  
  
  SELECT @fieldValue = FORMAT(ISNULL(SUM(Z.decAmount), 0), '#,##0.00')  
  FROM (  
   SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) AS decAmount  
   FROM tblCustTrans  
   INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID  
   WHERE (tblCustTransDT.bitReversed = 0)  
    AND (tblCustTrans.intTransType <> 2)  
    AND (  
     tblCustTrans.strOrdDocID IS NULL  
     OR (  
      tblCustTrans.strInvDocID IS NOT NULL  
      AND tblCustTrans.strOrdDocID IS NOT NULL  
      )  
     )  
     
   UNION ALL  
     
   SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) AS decAmount  
   FROM tblCustTrans  
   INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID  
   WHERE (tblCustTransDT.bitReversed = 0)  
    AND (tblCustTrans.intTransType <> 2)  
    AND (tblCustTrans.strOrdDocID IS NOT NULL)  
    AND (tblCustTrans.strInvDocID IS NULL)  
    AND (tblCustTransDT.lngCustPayID IS NOT NULL)  
   ) Z  
  
  INSERT INTO #HistoryData  
  VALUES (  
   @fieldName  
   ,@fieldValue  
   )  
  
  SET @fieldName = 'SalesDeposits'  
  SET @fieldValue = -1
 
  --SELECT @fieldValue = FORMAT(ISNULL(SUM(Z.decAmount), 0) * - 1, '#,##0.00') 
  SELECT @fieldValue = FORMAT(ISNULL(SUM(Z.decAmount), 0), '#,##0.00')  
  FROM (  
   SELECT ISNULL(SUM(tblCustTransDT.decAmount),0) * -1 AS decAmount FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE (tblCustTransDT.bitReversed = 0) AND (tblCustTrans.intTransType = 2) AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) UNION ALL SELECT ISNULL(SUM(tblCustTransDT.decAmount),0) * -1 AS decAmount FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE (tblCustTransDT.bitReversed = 0) AND (tblCustTrans.intTransType = 2) AND (tblCustTrans.strOrdDocID IS NOT NULL) AND (tblCustTrans.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL)) Z  
  
  INSERT INTO #HistoryData  
  VALUES (  
   @fieldName  
   ,@fieldValue  
   )  
 END  
  
 ----Prepayments (depending on separate accounts or not)    
 IF (@blnSeparatePrePayAccount = 0)  
 BEGIN  
  SET @fieldName = 'OpenPayInv'  
  
  SELECT @fieldValue = FORMAT(ISNULL(SUM(tblVendTransDT.decAmount), 0), '#,##0.00')  
  FROM tblVendTransDT  
  WHERE (tblVendTransDT.bitReversed = 0)  
  
  INSERT INTO #HistoryData  
  VALUES (  
   @fieldName  
   ,@fieldValue  
   )  
  
  SET @fieldName = 'PurchasePrepayments'  
  SET @fieldValue = -1 
  
  INSERT INTO #HistoryData  
  VALUES (  
   @fieldName  
   ,@fieldValue  
   )  
 END  
 ELSE  
 BEGIN  
  SET @fieldName = 'OpenPayInv'  
  
  SELECT @fieldValue = FORMAT(ISNULL(SUM(tblVendTransDT.decAmount), 0), '#,##0.00')  
  FROM tblVendTransDT  
  INNER JOIN tblVendTrans ON tblVendTransDT.lngVendTrID = tblVendTrans.lngVendTrID  
  WHERE (tblVendTransDT.bitReversed = 0)  
   AND (tblVendTrans.intTransType <> 2)  
  
  INSERT INTO #HistoryData  
  VALUES (  
   @fieldName  
   ,@fieldValue  
   )  
  
  SET @fieldName = 'PurchasePrepayments'  
  SET @fieldValue = '0.00'
  SELECT @fieldValue = FORMAT(ISNULL(SUM(tblVendTransDT.decAmount), 0) * - 1, '#,##0.00')  
  FROM tblVendTransDT  
  INNER JOIN tblVendTrans ON tblVendTransDT.lngVendTrID = tblVendTrans.lngVendTrID  
  WHERE (tblVendTransDT.bitReversed = 0)  
   AND (tblVendTrans.intTransType = 2)  
  
  INSERT INTO #HistoryData  
  VALUES (  
   @fieldName  
   ,@fieldValue  
   )  
 END  
  
 INSERT INTO #HistoryData  
 VALUES (  
  'SeparateDepositAccount'  
  ,@blnSeparateDepositAccount  
  )  
  
 INSERT INTO #HistoryData  
 VALUES (  
  'SeparatePrePayAccount'  
  ,@blnSeparatePrePayAccount  
  )  
  
 SELECT TotalDebits  
  ,TotalCredits  
  ,ARBal  
  ,DepositBalance  
  ,APBal  
  ,PrePayBalance  
  ,InvBal  
  ,ActInventoryBal  
  ,OpenRecInv  
  ,SalesDeposits  
  ,OpenPayInv  
  ,PurchasePrepayments  
  ,SeparateDepositAccount  
  ,SeparatePrePayAccount  
 FROM (  
  SELECT fieldName  
   ,fieldValue  
  FROM #HistoryData  
  ) d  
 pivot(max(fieldValue) FOR fieldName IN (  
    TotalDebits  
    ,TotalCredits  
    ,ARBal  
    ,DepositBalance  
    ,APBal  
    ,PrePayBalance  
    ,InvBal  
    ,ActInventoryBal  
    ,OpenRecInv  
    ,SalesDeposits  
    ,OpenPayInv  
    ,PurchasePrepayments  
    ,SeparateDepositAccount  
    ,SeparatePrePayAccount  
    )) piv;  
  
 DROP TABLE #HistoryData  
END  
GO

/****** Object:  StoredProcedure [dbo].[GetFirstDepreciationDate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-------------------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetFirstDepreciationDate]
    (
      @AssetCode NVARCHAR(20)
    )
AS
    BEGIN
        SELECT  CONVERT(NVARCHAR(50),MIN(tblDepreciationHistory.dteDepreciationDate)) AS dteFirstDepreciationDate
        FROM    tblDepreciationHistory
        WHERE   tblDepreciationHistory.strAssetCode = @AssetCode
        HAVING  COUNT(*) >= 1
    END
GO
/****** Object:  StoredProcedure [dbo].[GetFirstYearDate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetFirstYearDate]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetFirstYearDate]
	 (
	 @dteLY DATETIME
	,@dteCurrent DATETIME
	 )
AS
BEGIN
	DECLARE @intHistCount INT = (
			SELECT COUNT(intFiscalYr)
			FROM tblAcctHist (NOLOCK)
			)
	DECLARE @intLYCount INT = (
			SELECT COUNT(*)
			FROM tblAccountsLY (NOLOCK)
			)

	IF (@intHistCount > 0)
	BEGIN
		SELECT Min(tbltempA.dteYearStart)
		FROM tblAcctHist tbltempA (NOLOCK)
		WHERE tbltempA.intFiscalYr = (
				SELECT Min(tbltempB.intFiscalYr)
				FROM tblAcctHist tbltempB (NOLOCK)
				)
	END
	ELSE IF (@intLYCount > 0)
	BEGIN
		SELECT @dteLY
	END
	ELSE
	BEGIN
		SELECT @dteCurrent
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetForeignCurrencyRevaluationDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetForeignCurrencyRevaluationDetails] 
(	@SQinvToFind as nvarchar(500),
	@SQAccount as nvarchar(500),
	@SQRevauationDate as dateTime,
	@SQHomeCurrency As nvarchar(3),
	@SQFinancialYearCurrent As bit
)

AS
BEGIN
IF @SQinvToFind = 'AR'
BEGIN

  IF EXISTS (SELECT * FROM tblCustTrans WHERE strCustName = @SQAccount)
  BEGIN
    SELECT
      'AR' AS strModule,
      tblCustomers.strCustName AS strAccountNumber,
      strCustDesc AS strAccountDescription,
      '' AS dteJournalDate,
      '' AS strInvDocID,
      '' AS strInvDepNumber,
      CAST(SUM(tblCustTransDT.decAmount) AS varchar(22)) AS LocalAmount,
      tblCustTrans.bitIsForeign,
      SUM(tblCustTransDT.decAmountF) AS ForeignAmount,
      tblCustomers.strCurrency AS strCurrencyCode,
      1.000000 AS REO,
		CASE WHEN SUM(tblCustTransDT.decAmount) = 0 OR SUM(tblCustTransDT.decAmountF) = 0 THEN 0 ELSE (SUM(tblCustTransDT.decAmount) / SUM(tblCustTransDT.decAmountF)) END
	  AS CurrentROE,
      0 AS RevaluationAmount
    FROM tblCustomers
    INNER JOIN [dbo].[tblCurrency]
      ON tblCurrency.strCurrency = tblCustomers.strCurrency
    INNER JOIN [dbo].[tblCustTrans]
      ON tblCustTrans.strCustName = tblCustomers.strCustName
    INNER JOIN [dbo].[tblCustTransDT]
      ON tblCustTransDT.lngCustTrID = tblCustTrans.lngCustTrID
    WHERE tblCustTrans.dteJournalDate <= @SQRevauationDate
	AND (tblCustTrans.strCurrency <> @SQHomeCurrency OR tblCustTrans.bitIsForeign = 1)
    AND tblCustomers.strCustName = @SQAccount
    GROUP BY tblCustomers.strCustName,
             strCustDesc,
             strCity,
             strPhone,
             strField1,
             strField2,
             strField3,
             strField4,
             strField5,
             strField6,
             tblCustomers.strCurrency,
             [tblCurrency].strCurrSymbol,
             bitInactive,
             tblCustomers.strCurrency,
             tblCustTrans.bitIsForeign
    HAVING SUM(tblCustTransDT.decAmountF) <> 0
    OR SUM(tblCustTransDT.decAmount) <> 0
  END
  ELSE
  BEGIN
    SELECT
      'AR' AS strModule,
      strCustName AS strAccountNumber,
      strCustDesc AS strAccountDescription,
      '' AS strInvDocID,
      decBalDue AS LocalAmount,
      0 AS bitIsForeign,
      decBalDueF AS ForeignAmount,
      strCurrency AS strCurrencyCode,
      1.000000 AS REO,
      1.000000 AS CurrentROE,
      0 AS RevaluationAmount
    FROM tblCustomers
    WHERE strCustName = @SQAccount
  END
END
ELSE
IF @SQinvToFind = 'AP'
BEGIN
  IF EXISTS (SELECT * FROM tblVendTrans WHERE strVendName = @SQAccount)
  BEGIN
    SELECT
      'AP' AS strModule,
      LTRIM(RTRIM(MASTERTABLE.strVendName)) AS strAccountNumber,
      tblVendors.strVendDesc AS strAccountDescription,
      '' AS dteJournalDate,
      '' AS strInvPDocID,
      '' AS strInvDepNumber,
      SUM(tblVendTransDT.decAmount) AS LocalAmount,
      tblVendTransDT.bitIsForeign,
      SUM(tblVendTransDT.decAmountF) AS ForeignAmount,
      tblVendors.strCurrency AS strCurrencyCode,
      1.000000 AS REO,
		CASE WHEN SUM(tblVendTransDT.decAmount) = 0 OR SUM(tblVendTransDT.decAmountF) = 0 THEN 0 ELSE (SUM(tblVendTransDT.decAmount) / SUM(tblVendTransDT.decAmountF)) END
	   AS CurrentROE,
      0 AS RevaluationAmount
    FROM tblVendTrans AS MASTERTABLE
    INNER JOIN tblVendors
      ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(tblVendors.strVendName))
    INNER JOIN tblVendTransDT
      ON MASTERTABLE.lngVendTrID = tblVendTransDT.lngVendTrID
    WHERE (LTRIM(RTRIM(MASTERTABLE.strVendName)) = @SQAccount)
	AND (MASTERTABLE.strCurrency <> @SQHomeCurrency OR MASTERTABLE.bitIsForeign = 1)
    AND (tblVendTransDT.bitReversed = 0)
    AND (tblVendTransDT.dteJournalDate <= @SQRevauationDate)
    AND (tblVendTransDT.lngVendTrID NOT IN (SELECT
      tblVendTransDT.lngVendTrID
    FROM tblVendTrans
    INNER JOIN tblVendTransDT
      ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
    WHERE LTRIM(RTRIM(tblVendTrans.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName))
    AND tblVendTransDT.bitReversed = 0
    AND tblVendTransDT.dteJournalDate <= @SQRevauationDate
    GROUP BY tblVendTransDT.lngVendTrID
    HAVING SUM(tblVendTransDT.decAmount) = 0
    AND SUM(tblVendTransDT.decAmountF) = 0)
    )
    GROUP BY LTRIM(RTRIM(MASTERTABLE.strVendName)),
             tblVendors.strVendDesc,
             tblVendors.strTerm,
             tblVendors.strCurrency,
             tblVendTransDT.bitIsForeign
    HAVING SUM(tblVendTransDT.decAmountF) <> 0
    OR SUM(tblVendTransDT.decAmount) <> 0
    ORDER BY tblVendors.strCurrency, tblVendors.strTerm, LTRIM(RTRIM(MASTERTABLE.strVendName))
  END
  ELSE
  BEGIN
    SELECT
      'AP' AS strModule,
      strVendName AS strAccountNumber,
      strVendDesc AS strAccountDescription,
      '',
      '' AS strInvDocID,
      '',
      decBalDue AS LocalAmount,
      0 AS bitIsForeign,
      decBalDueF AS ForeignAmount,
      strCurrency AS strCurrencyCode,
      1.000000 AS REO,
      1.000000 AS CurrentROE,
      0 AS RevaluationAmount
    FROM tblVendors
    WHERE strVendName = @SQAccount
  END
END

ELSE IF @SQinvToFind = 'GL'
BEGIN
	DECLARE @Dept AS NVARCHAR(500) = ''
	IF CHARINDEX('/', @SQAccount)>0 
	BEGIN
	
		SELECT @Dept = Value FROM (
		SELECT ROW_NUMBER() over (order by Value asc) as 'rowNum', Value FROM [fnSplitStringAsTable]((@SQAccount),('/')))T where T.rowNum = 1

		SELECT @SQAccount = Value FROM (
		SELECT ROW_NUMBER() over (order by Value asc) as 'rowNum', Value FROM [fnSplitStringAsTable]((@SQAccount),('/')))T where T.rowNum = 2
	END

	PRINT @Dept
	PRINT @SQAccount

  IF @SQFinancialYearCurrent = 1 
  BEGIN
	IF @Dept <> ''
	BEGIN

		SELECT
      tblAccounts.intGLNumber,
      tblAccounts.strDesc,
      '' AS strSource,
      '' AS dteJournalDate,
     (SUM(ISNULL(tblJournalEnt.decAmount,0))  + tblAccounts.decOpenBalance) AS LocalAmount,
      (SUM(ISNULL(tblJournalEnt.decAmountF,0)) + tblAccounts.decOpenBalanceF) AS ForeignAmount,
      1.000000 AS REO,
		 CASE WHEN (SUM(ISNULL(tblJournalEnt.decAmount,0))  + tblAccounts.decOpenBalance) = 0 OR (SUM(ISNULL(tblJournalEnt.decAmountF,0)) + tblAccounts.decOpenBalanceF) = 0 THEN 0 ELSE ((SUM(ISNULL(tblJournalEnt.decAmount,0))  + tblAccounts.decOpenBalance) / (SUM(ISNULL(tblJournalEnt.decAmountF,0)) + tblAccounts.decOpenBalanceF)) END AS CurrentROE,
      tblAccounts.strCurrency AS strCurrencyCode,
      0 AS RevaluationAmount
    FROM tblAccounts
    LEFT JOIN tblJournalEnt
      ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber
	  AND tblJournalEnt.intDept = CONVERT(INT, @Dept)
    LEFT JOIN tblJournal
      ON tblJournalEnt.lngJourID = tblJournal.lngJourID
    WHERE (tblJournal.dteJournalDate <= @SQRevauationDate)
	--AND (tblJournalEnt.strCurrency <> @SQHomeCurrency OR tblJournalEnt.bitForeignAcct = 1)
    AND tblAccounts.intGLNumber = @SQAccount
    GROUP BY tblAccounts.intGLNumber,
             tblAccounts.strDesc,
             tblAccounts.strCurrency,
			 tblAccounts.decOpenBalance,
			 tblAccounts.decOpenBalanceF
    HAVING (SUM(ISNULL(tblJournalEnt.decAmountF,0)) + tblAccounts.decOpenBalanceF) <> 0.00
    OR (SUM(ISNULL(tblJournalEnt.decAmount,0))  + tblAccounts.decOpenBalance) <> 0.00

	END 
	ELSE
	BEGIN
		SELECT
      tblAccounts.intGLNumber,
      tblAccounts.strDesc,
      '' AS strSource,
      '' AS dteJournalDate,
     (SUM(ISNULL(tblJournalEnt.decAmount,0))  + tblAccounts.decOpenBalance) AS LocalAmount,
      (SUM(ISNULL(tblJournalEnt.decAmountF,0)) + tblAccounts.decOpenBalanceF) AS ForeignAmount,
      1.000000 AS REO,
		 CASE WHEN (SUM(ISNULL(tblJournalEnt.decAmount,0))  + tblAccounts.decOpenBalance) = 0 OR (SUM(ISNULL(tblJournalEnt.decAmountF,0)) + tblAccounts.decOpenBalanceF) = 0 THEN 0 ELSE ((SUM(ISNULL(tblJournalEnt.decAmount,0))  + tblAccounts.decOpenBalance) / (SUM(ISNULL(tblJournalEnt.decAmountF,0)) + tblAccounts.decOpenBalanceF)) END AS CurrentROE,
      tblAccounts.strCurrency AS strCurrencyCode,
      0 AS RevaluationAmount
    FROM tblAccounts
    LEFT JOIN tblJournalEnt
      ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber
    LEFT JOIN tblJournal
      ON tblJournalEnt.lngJourID = tblJournal.lngJourID
    WHERE (tblJournal.dteJournalDate <= @SQRevauationDate)
	--AND (tblJournalEnt.strCurrency <> @SQHomeCurrency OR tblJournalEnt.bitForeignAcct = 1)
    AND tblAccounts.intGLNumber = @SQAccount
  GROUP BY tblAccounts.intGLNumber,
             tblAccounts.strDesc,
             tblAccounts.strCurrency,
			 tblAccounts.decOpenBalance,
			 tblAccounts.decOpenBalanceF
    HAVING (SUM(ISNULL(tblJournalEnt.decAmountF,0)) + tblAccounts.decOpenBalanceF) <> 0.00
    OR (SUM(ISNULL(tblJournalEnt.decAmount,0))  + tblAccounts.decOpenBalance) <> 0.00
	END
  END
  ELSE
  BEGIN
  IF @Dept <> ''
	BEGIN
		SELECT
      tblAccountsLY.intGLNumber,
      tblAccountsLY.strDesc,
      '' AS strSource,
      '' AS dteJournalDate,
     (SUM(ISNULL(tblJournalEntLY.decAmount,0))  + tblAccountsLY.decOpenBalance) AS LocalAmount,
      (SUM(ISNULL(tblJournalEntLY.decAmountF,0)) + tblAccountsLY.decOpenBalanceF) AS ForeignAmount,
      1.000000 AS REO,
		 CASE WHEN (SUM(ISNULL(tblJournalEntLY.decAmount,0))  + tblAccountsLY.decOpenBalance) = 0 OR (SUM(ISNULL(tblJournalEntLY.decAmountF,0)) + tblAccountsLY.decOpenBalanceF) = 0 THEN 0 ELSE ((SUM(ISNULL(tblJournalEntLY.decAmount,0))  + tblAccountsLY.decOpenBalance) / (SUM(ISNULL(tblJournalEntLY.decAmountF,0)) + tblAccountsLY.decOpenBalanceF)) END AS CurrentROE,
      tblAccountsLY.strCurrency AS strCurrencyCode,
      0 AS RevaluationAmount
    FROM tblAccountsLY
    LEFT JOIN tblJournalEntLY
      ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber
	  AND tblJournalEntLY.intDept = CONVERT(INT, @Dept)
    LEFT JOIN tblJournalLY
      ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
    WHERE (tblJournalLY.dteJournalDate <= @SQRevauationDate)
	--AND (tblJournalEntLY.strCurrency <> @SQHomeCurrency OR tblJournalEntLY.bitForeignAcct = 1)
    AND tblAccountsLY.intGLNumber = @SQAccount
    GROUP BY tblAccountsLY.intGLNumber,
             tblAccountsLY.strDesc,
             tblAccountsLY.strCurrency,
			 tblAccountsLY.decOpenBalance,
			 tblAccountsLY.decOpenBalanceF
    HAVING (SUM(ISNULL(tblJournalEntLY.decAmountF,0)) + tblAccountsLY.decOpenBalanceF) <> 0.00
    OR (SUM(ISNULL(tblJournalEntLY.decAmount,0))  + tblAccountsLY.decOpenBalance) <> 0.00
	END 
	ELSE
	BEGIN
		SELECT
      tblAccountsLY.intGLNumber,
      tblAccountsLY.strDesc,
      '' AS strSource,
      '' AS dteJournalDate,
     (SUM(ISNULL(tblJournalEntLY.decAmount,0))  + tblAccountsLY.decOpenBalance) AS LocalAmount,
      (SUM(ISNULL(tblJournalEntLY.decAmountF,0)) + tblAccountsLY.decOpenBalanceF) AS ForeignAmount,
      1.000000 AS REO,
		 CASE WHEN (SUM(ISNULL(tblJournalEntLY.decAmount,0))  + tblAccountsLY.decOpenBalance) = 0 OR (SUM(ISNULL(tblJournalEntLY.decAmountF,0)) + tblAccountsLY.decOpenBalanceF) = 0 THEN 0 ELSE ((SUM(ISNULL(tblJournalEntLY.decAmount,0))  + tblAccountsLY.decOpenBalance) / (SUM(ISNULL(tblJournalEntLY.decAmountF,0)) + tblAccountsLY.decOpenBalanceF)) END AS CurrentROE,
      tblAccountsLY.strCurrency AS strCurrencyCode,
      0 AS RevaluationAmount
    FROM tblAccountsLY
    LEFT JOIN tblJournalEntLY
      ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber
    LEFT JOIN tblJournalLY
      ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
    WHERE (tblJournalLY.dteJournalDate <= @SQRevauationDate)
	--AND (tblJournalEntLY.strCurrency <> @SQHomeCurrency OR tblJournalEntLY.bitForeignAcct = 1)
    AND tblAccountsLY.intGLNumber = @SQAccount
    GROUP BY tblAccountsLY.intGLNumber,
             tblAccountsLY.strDesc,
             tblAccountsLY.strCurrency,
			 tblAccountsLY.decOpenBalance,
			 tblAccountsLY.decOpenBalanceF
    HAVING (SUM(ISNULL(tblJournalEntLY.decAmountF,0)) + tblAccountsLY.decOpenBalanceF) <> 0.00
    OR (SUM(ISNULL(tblJournalEntLY.decAmount,0))  + tblAccountsLY.decOpenBalance) <> 0.00
	END 
  END
END
END
GO
/****** Object:  StoredProcedure [dbo].[GetFreehandGridData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetFreehandInventoryData] ***********/

/*********** Start [GetFreehandGridData] ***********/
CREATE PROCEDURE [dbo].[GetFreehandGridData]
(
 @PartNumber AS NVARCHAR(50),
 @SelectedCurrency NVARCHAR(3)
)
AS
BEGIN
	SELECT TOP (1) 
	strPartDesc AS PartDesc
	,strUnit AS Unit
	,decCost AS Cost
	,decMarkUp AS MarkUp
	,decPriceEaInc AS PriceEaInc
	,decEaIncTaxF AS EaIncTaxF
	,strInvField1 AS InvField1 
	,strInvField2 AS InvField2
	,strInvField3 AS InvField3
	,strInvField4 AS InvField4
	,strInvField5 AS InvField5
	,strInvField6 AS InvField6
	,ISNULL((
			SELECT strVendName
			FROM tblInvVend
			WHERE strPartNumber = @PartNumber
				AND bitPreferred = 1
			), '') AS VendName
	,strLocation AS [Location]
FROM tblOrderDocQDT
WHERE strPartNumber = @PartNumber
	AND strCurrency = @SelectedCurrency
ORDER BY strOrdDocID DESC
END
GO
/****** Object:  StoredProcedure [dbo].[GetFreehandInventoryData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [UpdateOrderDocQ] ***********/

/*********** Start [GetFreehandInventoryData] ***********/
CREATE PROCEDURE [dbo].[GetFreehandInventoryData]
(
	@PartNumber AS NVARCHAR(50),
	@BarCode AS NVARCHAR(300),
	@PriceList AS VARCHAR(20),
	@DocDate AS DATETIME
)
AS
BEGIN
	SELECT tblInv.strDesc AS [Desc]
	,tblInv.strStockUnit AS StockUnit
	,case 
	when
	Isnull( 
           CONVERT(VARCHAR(50), tblinvprice.dtepromotionalstartdate, 103), 
                '' 
                ) != '' and
				Isnull( 
           CONVERT(VARCHAR(50), tblinvprice.dtepromotionalenddate, 103), 
                '' 
                ) != '' and
	 (@DocDate between tblinvprice.dtepromotionalstartdate and 
	tblinvprice.dtepromotionalenddate) and Isnull(tblinvprice.bitpromotionalpricing, 0)=1
       then tblinvprice.decpromotionalprice else
	  Isnull( tblInvPrice.decSelling,0) end AS Selling 
	,tblInv.strPartNumber AS PartNumber
	,CASE bitUseLPPOnPO
		WHEN 0
			THEN decCostOnPO / decBuyToStock
		ELSE decLastPPUnit / decBuyToStock
		END AS Price
	,tblInv.strField1 AS Field1
	,tblInv.strField2 AS Field2
	,tblInv.strField3 AS Field3
	,tblInv.strField4 AS Field4
	,tblInv.strField5 AS Field5
	,tblInv.strField6 AS Field6
	,ISNULL((
			SELECT strVendName
			FROM tblInvVend
			WHERE strPartNumber = @PartNumber
				AND bitPreferred = 1
			), '') AS VendorName
	,ISNULL((SELECT CASE WHEN decDiscPerc = 0 THEN decPrice ELSE decPrice - ROUND(decPrice * (decDiscPerc / 100), 2) END
			FROM tblInvVend
			WHERE strPartNumber = @PartNumber
				AND bitPreferred = 1
			), 0) AS VendorPrice
	,tblInv.bitInactive AS IsInactive
	,tblInv.decDefSaleQty AS DefaultSaleQty
	,ISNULL(tblInv.strExtendedDesc, '') AS ExtendedDesc
	,tblInv.strUnitOfMeasure AS UnitOfMeasure
	,tblInv.decMass AS Mass
	,tblInv.decVolumetricWeight AS VolumetricWeight
	--,ISNULL((
	--		SELECT COUNT(tblInvUpsell.strPartItemNumber)
	--		FROM tblInvUpsell
	--		WHERE tblInvUpsell.strPartNumber = tblInv.strPartNumber
	--		), 0) AS IsUpsellItem
			,CAST((
			SELECT COUNT(tblInvUpsell.strPartItemNumber)
			FROM tblInvUpsell
			WHERE tblInvUpsell.strPartNumber = tblInv.strPartNumber
			) AS BIT) AS IsUpsellItem

			, ISNULL((SELECT strCurrency FROM tblInvVend INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName
			 WHERE strPartNumber = @PartNumber AND bitPreferred = 1),0) AS VendCurrency
		   ,tblInv.intType As [Type] -- Added branch 20190307 changes
		   ,tblInv.strSellUnit AS SellUnit
FROM tblInv
INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
INNER JOIN tblPriceListsByDate ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
WHERE (
		tblInv.strPartNumber = @PartNumber
		OR tblInv.strBarCode = @BarCode
		OR tblInv.strBarCode2 = @BarCode
		)
	AND (tblInv.intType <> 5)
	AND (tblInv.bitOtherCmp = 0 )
	AND (tblInvPrice.strPricelist = @PriceList)
	AND (
		CONVERT(DATE,@DocDate) BETWEEN CONVERT(DATE,tblPriceListsByDate.dteStartDate)
			AND CONVERT(DATE,tblPriceListsByDate.dteFinishDate)
		)
		AND (tblInvPrice.bitStockUnit = 1)
END
GO
/****** Object:  StoredProcedure [dbo].[GetGLBalance]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-------------------
CREATE PROCEDURE [dbo].[GetGLBalance]
AS
BEGIN
    
   SELECT ((
           (SELECT SUM(decBalance)
            FROM tblAccounts
            WHERE intAccType = 1) -
           (SELECT SUM(decBalance)
            FROM tblAccounts
            WHERE intAccType = 2)) -
          (SELECT SUM(decBalance)
           FROM tblAccounts
           WHERE intAccType = 3)) + ((
                                        (SELECT SUM(decBalance)
                                         FROM tblAccounts
                                         WHERE intAccType = 4) -
                                        (SELECT SUM(decBalance)
                                         FROM tblAccounts
                                         WHERE intAccType = 5)) -
                                       (SELECT decBalance
                                        FROM tblAccounts
                                        WHERE bitLinkCEarnings = 1))
END
GO
/****** Object:  StoredProcedure [dbo].[GetGLNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCustTransData] ***********/
/*********** Start [GetGLNumber] ***********/
CREATE PROCEDURE [dbo].[GetGLNumber] @Name AS VARCHAR(100)
AS
BEGIN
	SELECT tblTenderTypes.intGLNumber AS GLNumber
		,tblAccounts.strDesc AS [Description]
	FROM tblTenderTypes
	INNER JOIN tblAccounts ON tblTenderTypes.intGLNumber = tblAccounts.intGLNumber
	WHERE tblTenderTypes.bitInActive = 0
		AND bitAccount = 0
		AND strName <> 'Split Payment'
		AND strName = @Name
END
GO
/****** Object:  StoredProcedure [dbo].[GetGLNumberCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetLastReceivedCost] ***********/

/*********** Start [GetGLNumberCount] ***********/
CREATE PROCEDURE [dbo].[GetGLNumberCount]
(
	@JourID As bigint
)
AS
BEGIN
  SELECT intGLNumber AS GLNumber
  FROM tblJournalEnt
  WHERE (lngJourID = @JourID)
  AND (intGLNumber NOT IN
         (SELECT intGLAsset
          FROM tblAccountSets))
  AND (intGLNumber NOT IN
         (SELECT intGLRevenue
          FROM tblAccountSets))
  AND (intGLNumber NOT IN
         (SELECT intGLExpCOGS
          FROM tblAccountSets))
  AND (intGLNumber NOT IN
         (SELECT intGLVariance
          FROM tblAccountSets))
  AND (intGLNumber NOT IN
         (SELECT tblAccounts.intGLNumber
          FROM tblInv
          INNER JOIN tblAccounts ON tblInv.intExpAcct = tblAccounts.intGLNumber
          WHERE tblInv.intType = 5))
END
GO
/****** Object:  StoredProcedure [dbo].[GetGLNumberCountForLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetGLNumberCount] ***********/

/*********** Start [GetGLNumberCountForLY] ***********/
CREATE PROCEDURE [dbo].[GetGLNumberCountForLY] (
	@JourID AS BIGINT
	,@IsYearAdj INT
	,@YearID UNIQUEIDENTIFIER = NULL
	)
AS
BEGIN
	IF (@IsYearAdj = 1)
	BEGIN
		SELECT intGLNumber AS GLNumber
		FROM tblJournalEntLY
		WHERE (lngJourID = @JourID)
			AND (
				intGLNumber NOT IN (
					SELECT intGLAsset
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLRevenue
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLExpCOGS
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLVariance
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT tblAccounts.intGLNumber
					FROM tblInv
					INNER JOIN tblAccounts ON tblInv.intExpAcct = tblAccounts.intGLNumber
					WHERE tblInv.intType = 5
					)
				)
	END
	ELSE
	BEGIN
		SELECT intGLNumber AS GLNumber
		FROM tblJournalEntHist
		WHERE (uidYearID = @YearID)
			AND (lngJourID = @JourID)
			AND (
				intGLNumber NOT IN (
					SELECT intGLAsset
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLRevenue
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLExpCOGS
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLVariance
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT tblAccounts.intGLNumber
					FROM tblInv
					INNER JOIN tblAccounts ON tblInv.intExpAcct = tblAccounts.intGLNumber
					WHERE tblInv.intType = 5
					)
				)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetGridInventoryMaster]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** END [dbo].[SaveIncludedCustomers] ***********/

/*********** Start [dbo].[GetGridInventoryMaster] ***********/

CREATE PROCEDURE [dbo].[GetGridInventoryMaster] (
	@DealerToolsMode BIT = 1
	,@UserName NVARCHAR(20) = NULL
	)
AS
BEGIN
	SET NOCOUNT ON;

	IF @DealerToolsMode = 0
	BEGIN
		SELECT intType AS [Type]
			,strPartNumber AS PartNumber
			,strDesc AS [Description]
			,decSumAvail AS SumAvail
			,decSumAlloc AS SumAlloc
			,decSumOnHand AS SumOnHand
			,decSumOnOrder AS SumOnOrder
			,decSumValue AS SumValue
			,bitInactive AS IsInactive
			,bitPendingApproval AS IsPendingApproval
			,bitInclInvForecast AS InclInvForecast
			,strCategory AS Category
			,strSubCategory As SubCategory
			,strSubCategoryGroup As SubCategoryGroup
			,decSumManuf AS Manufacture
		FROM dbo.tblInv
		WHERE intType <> 5
			AND strCategory IN (
				SELECT tblInvCat.strCategory
				FROM tblInvCat
				LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
				WHERE ISNULL((
							SELECT COUNT(tblInvCatSec.strCategory)
							FROM tblInvCatSec
							WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
							), 0) = 0
					OR (
						ISNULL((
								SELECT COUNT(tblInvCatSec.strCategory)
								FROM tblInvCatSec
								WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
								), 0) > 0
						AND tblInvCatSec.strUserName = @UserName 
						)
				);
	END;
	ELSE
	BEGIN
		SELECT intType AS [Type]
			,strPartNumber AS PartNumber
			,strDesc AS [Description]
			,decSumAvail AS SumAvail
			,decSumAlloc AS SumAlloc
			,decSumOnHand AS SumOnHand
			,decSumOnOrder AS SumOnOrder
			,decSumValue AS SumValue
			,bitInactive AS IsInactive
			,bitPendingApproval AS IsPendingApproval
			,bitInclInvForecast AS InclInvForecast
			,strCategory AS Category
		FROM dbo.tblInv
		WHERE intType <> 5;
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetGRVDocDTSerialDataByDocNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetGRVDocDTSerialDataByDocNumber]            
(            
@DocNumber nvarchar(100)            
)            
AS            
BEGIN            
SET NOCOUNT ON;            
 BEGIN             
   SELECT             
  tblOrderDocPGDTSerial.strOrdPGDocID as GRVOrderDocID,            
  tblOrderDocPGDTSerial.intLineNo as LineNumber,            
  tblOrderDocPGDTSerial.intSerialLotType as SerialLotType,            
  tblOrderDocPGDTSerial.strSerialNumber as SerialNumber,            
  tblOrderDocPGDTSerial.strUnit as Unit,             
  tblOrderDocPGDTSerial.decQty as Qty,            
  tblOrderDocPGDTSerial.bitExpiryDate as IsExpiry,            
  tblOrderDocPGDTSerial.dteExpiryDate as ExpiryDate,              
  tblOrderDocPGDTSerial.lngID as ID,            
  ISNULL(tblOrderDocPGDTSerial.decPutAwayQty,0) as PutAwayQty,            
  CASE             
   WHEN intSerialLotType = 0             
   THEN ISNULL((SELECT CAST(tblInvSerialExt.intStatus AS CHAR(1)) + tblInvSerialExt.strDocID       
  FROM tblInvSerialExt       
  WHERE tblInvSerialExt.strPartNumber = tblOrderDocPGDT.strPartNumber AND tblInvSerialExt.strSerialNumber = tblOrderDocPGDTSerial.strSerialNumber          
 ),'')             
   ELSE ''            
   END as SerialPartString  ,          
    CAST(ISNULL((SELECT TYP.intType FROM tblOrderDocPGDT DTL INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType       
 WHERE DTL.strOrdPGDocID = tblOrderDocPGDTSerial.strOrdPGDocID           
 AND DTL.intLineNo = tblOrderDocPGDTSerial.intLineNo),0)  AS INT)    as SerialType        
             
  FROM tblOrderDocPGDT             
  INNER JOIN tblOrderDocPGDTSerial ON tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPGDTSerial.strOrdPGDocID AND tblOrderDocPGDT.intLineNo = tblOrderDocPGDTSerial.intLineNo             
  WHERE tblOrderDocPGDT.strOrdPGDocID = @DocNumber          
  ORDER BY lngID            
 END            
END 
GO
/****** Object:  StoredProcedure [dbo].[GetGRVOrderDocByDocNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetGRVOrderDocByDocNumber]        
(        
@DocNumber nvarchar(100)        
)        
AS        
BEGIN        
SET NOCOUNT ON;        
 BEGIN         
 SELECT         
   tblOrderDocPG.strOrdPGDocID as GRVOrderDocID,        
   tblOrderDocPG.strOrdPDocID as PurchaseOrderDocID,        
   tblOrderDocPG.strVendName as VendorName,        
   tblOrderDocPG.strBoughtFrom as BoughtFrom,        
   tblOrderDocPG.strOrdFQDocID as OrderFQDocID,           
   --tblOrderDocPG.strOrdRFQDocID as OrderRFQDocID,           
   tblOrderDocPG.dteJournalDate as JournalDate,        
   tblOrderDocPG.dteRequired as RequiredDate,        
   tblOrderDocPG.dteSystemDate as SystemDate,        
   tblOrderDocPG.strReference as Reference,        
   tblOrderDocPG.decDiscAmt as DiscountAmount,        
   tblOrderDocPG.decDiscAmtF as DiscountAmountF,        
   tblOrderDocPG.strDiscFormatted as DiscountFormatted,        
   tblOrderDocPG.decDiscPerc as DiscountPercentage,        
   tblOrderDocPG.decExchange as ExchangeValue,        
   tblOrderDocPG.decSubTotal as SubTotal,        
   tblOrderDocPG.decSubTotalF as SubTotalF,        
   tblOrderDocPG.strSubFormated as SubTotalFormatted,        
   tblOrderDocPG.decVAT as VAT,        
   tblOrderDocPG.decVATF as VATF,        
   tblOrderDocPG.strVATFormatted as VATFormatted,        
   tblOrderDocPG.decTotal as Total,        
   tblOrderDocPG.decTotalF as TotalF,        
   tblOrderDocPG.strTotFormatted as TotalFormatted,        
   tblOrderDocPG.decTotalWeight as NetItemWeight,        
   tblOrderDocPG.decTotalVolWeight as NetVolumetricWeight,        
    IsNull(tblOrderDocPG.intDept,0) as [Department],        
   --tblOrderDocPG.intDocType as DocType,        
   tblOrderDocPG.intRevisionNumber as RevisionNumber,        
   tblOrderDocPG.strAddInfo as AdditionalInfo,        
   tblOrderDocPG.strCurrency as Currency,        
   tblOrderDocPG.strField1 as Field1 ,        
   tblOrderDocPG.strField2 as Field2,        
   tblOrderDocPG.strField3 as Field3,        
   tblOrderDocPG.strField4 as Field4,        
   tblOrderDocPG.strField5 as Field5,        
   tblOrderDocPG.strField6 as Field6,        
   tblOrderDocPG.strField7 as Field7,        
   tblOrderDocPG.strField8 as Field8,        
   tblOrderDocPG.strField9 as Field9,        
   tblOrderDocPG.strField10 as Field10,        
   tblOrderDocPG.strField11 as Field11,        
   tblOrderDocPG.strField12 as Field12,         
   tblOrderDocPG.strNotes as Notes,        
   tblOrderDocPG.strShipTo as ShipTo,        
   tblOrderDocPG.strStatusTypeCode as StatusTypeCode,        
   tblOrderDocPG.strTerm as Term,        
   tblOrderDocPG.strUserName as UserName,           
   tblOrderDocPG.bitBookmark as IsBookmark,         
   tblOrderDocPG.bitCleared as IsCleared,        
   tblOrderDocPG.bitEmailed as IsEmailed,        
   tblOrderDocPG.bitFQConvert as IsFQConvert,        
   tblOrderDocPG.bitIsForeign as IsForeign,        
   tblOrderDocPG.bitPrinted as IsPrinted,        
   --tblOrderDocPG.bitRFQConvert as IsRFQConvert,        
   tblOrderDocPG.bitSOCopy as IsSOCopy,        
   tblOrderDocPG.bitSOCopyMulti as IsSOCopyMulti,        
   ISNULL(tblCustomers.strCustName,'') AS CustName,    
   ISNULL(tblOrderDocPG.bitPutAwayCompleted, 0) as PutAwayCompleted    
   FROM tblOrderDocPG         
   LEFT JOIN tblOrderDocQ        
   ON tblOrderDocPG.strOrdFQDocID = tblOrderDocQ.strOrdDocID         
   LEFT JOIN tblCustomers         
   ON tblOrderDocQ.strCustName = tblCustomers.strCustName         
   WHERE tblOrderDocPG.strOrdPGDocID = @DocNumber         
 END        
END   
GO
/****** Object:  StoredProcedure [dbo].[GetGRVOrderDocDTByDocNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetGRVOrderDocDTByDocNumber]          
(          
@DocNumber nvarchar(100)          
)          
AS          
BEGIN          
SET NOCOUNT ON;          
 BEGIN           
  SELECT              
  tblOrderDocPGDT.strOrdPGDocID as GRVOrderDocID,                                                 
  tblOrderDocPGDT.intLineNo as LineNumber,             
  tblOrderDocPGDT.strPartNumber as PartNumber,                                                
  tblOrderDocPGDT.strLocation as Location,           
  tblOrderDocPGDT.strPartDesc as PartDescription,         
  tblOrderDocPGDT.decBuyQty as BuyQty,                      
  tblOrderDocPGDT.decBuyQtyRemain as BuyQtyRemain,                 
  tblOrderDocPGDT.strBuyUnit as BuyUnit,                
  tblOrderDocPGDT.decStockQty as StockQty,                     
  tblOrderDocPGDT.decStockQtyRemain as StockQtyRemain,               
  tblOrderDocPGDT.strStockUnit as StockUnit,              
  tblOrderDocPGDT.intType as [Type],            
  tblOrderDocPGDT.decPriceEaExc as PriceEaExc,                   
  tblOrderDocPGDT.decLineTotExc as LineTotalExc,                   
  tblOrderDocPGDT.decLineTaxAmt as LineTaxAmount,                   
  tblOrderDocPGDT.strTaxCode as TaxCode,           
  tblOrderDocPGDT.decEaIncTax as EaIncTax,                     
  tblOrderDocPGDT.decTotIncTax as TotalIncTax,                    
  tblOrderDocPGDT.imgTaxObj as TaxObj,           
  tblOrderDocPGDT.strCurrency as Currency,           
  tblOrderDocPGDT.bitIsForeign as IsForeign,           
  tblOrderDocPGDT.decPriceEaExcF as PriceEaExcF,                  
  tblOrderDocPGDT.decLineTotExcF as LineTotalExcF,          
  tblOrderDocPGDT.decLineTaxAmtF as LineTaxAmountF,                  
  tblOrderDocPGDT.decEaIncTaxF as EaIncTaxF,                    
  tblOrderDocPGDT.decTotIncTaxF as TotalIncTaxF,                   
  tblOrderDocPGDT.strInvField1 as InvField1,                                                                                                   
  tblOrderDocPGDT.strInvField2 as InvField2,                                                                                                   
  tblOrderDocPGDT.strInvField3 as InvField3,                                                                                                      
  tblOrderDocPGDT.strInvField4 as InvField4,                                                                                                  
  tblOrderDocPGDT.strInvField5 as InvField5,                                                                                                   
  tblOrderDocPGDT.strInvField6 as InvField6,                                                                                                   
  tblOrderDocPGDT.strLineField1 as LineField1,                                                
  tblOrderDocPGDT.strLineField2 as LineField2,                                                
  tblOrderDocPGDT.strLineField3 as LineField3,                                                
  tblOrderDocPGDT.strLineField4 as LineField4,                                                
  tblOrderDocPGDT.strLineField5 as LineField5,                                                
  tblOrderDocPGDT.strLineField6 as LineField6,                                                
  tblOrderDocPGDT.strLineField7 as LineField7,                                                
  tblOrderDocPGDT.strLineField8 as LineField8,                                                
  tblOrderDocPGDT.strLineField9 as LineField9,                                                
  tblOrderDocPGDT.strLineField10 as LineField10,                                               
  tblOrderDocPGDT.strLineField11 as LineField11,                                               
  tblOrderDocPGDT.strLineField12 as LineField12,                                               
  tblOrderDocPGDT.decLineDiscPerc as LineDiscountPercentage,                 
  tblOrderDocPGDT.decLineDiscAmt as DiscountAmount,                  
  tblOrderDocPGDT.decLineDiscAmtF as DiscountAmountF,                 
  tblOrderDocPGDT.bitDiscountTax as IsDiscountTax,           
  tblOrderDocPGDT.strOrdSODocID as OrderSODocID,                                                
  tblOrderDocPGDT.strPartExtendedDesc as PartExtendedDesc,           
  tblOrderDocPGDT.decItemWeight as ItemWeight,                   
  tblOrderDocPGDT.decVolumetricWeight as VolumetricWeight,             
  tblOrderDocPGDT.uidTransactionFieldID as TransactionFieldID,       
  ISNULL(tblOrderDocPGDT.decPutAwayQty, 0) as PutAwayQty,       
  ISNULL(tblOrderDocPGDTPrj.strProjNumber,'') AS ProjNumber,           
  ISNULL(tblOrderDoc.strCustName,'') AS CustName,           
  tblInv.bitInvSerialType as IsSerialType,           
  ISNULL(tblInvSerialTypes.bitMethod,0) AS IsMethod,           
  ISNULL(tblInv.strUnitOfMeasure,'') AS UnitOfMeasure,           
  tblInv.strDimProCode as DimProCode,           
  ISNULL(tblInvSerialTypes.bitDimensionExist,0) AS IsDimensionExist,          
  tblInv.strBarCode AS BarCode,          
  tblInv.strBarCode2 AS BarCode2,      
  ISNULL(STUFF((SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX))     
    FROM tblInvLocBin     
    WHERE tblInvLocBin.lngId IN     
    (SELECT lngBinId FROM tblOrderDocPGDTBin WHERE tblOrderDocPGDTBin.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID AND tblOrderDocPGDTBin.intLineNo = tblOrderDocPGDT.intLineNo)    
     FOR XML PATH('')),1,1,''),'') AS BinCode,    
  ISNULL(STUFF((SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(MAX)) FROM tblInvLocBin WHERE tblInvLocBin.lngId IN     
    (SELECT lngBinId FROM tblOrderDocPGDTBin WHERE tblOrderDocPGDTBin.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID AND tblOrderDocPGDTBin.intLineNo = tblOrderDocPGDT.intLineNo)    
     FOR XML PATH('')),1,1,''),'') AS BinId         
  FROM tblOrderDocPGDT           
  INNER JOIN tblInv ON tblOrderDocPGDT.strPartNumber = tblInv.strPartNumber           
  LEFT JOIN tblOrderDocPGDTPrj ON tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPGDTPrj.strOrdPGDocID AND tblOrderDocPGDT.intLineNo = tblOrderDocPGDTPrj.intLineNo           
  LEFT JOIN tblOrderDoc ON tblOrderDocPGDT.strOrdSODocID = tblOrderDoc.strOrdDocID           
  LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType           
  WHERE tblOrderDocPGDT.strOrdPGDocID = @DocNumber AND tblOrderDocPGDT.decStockQtyRemain <> 0 AND tblOrderDocPGDT.bitDiscountTax = 0           
  ORDER BY tblOrderDocPGDT.intLineNo        
 END          
END   
GO
/****** Object:  StoredProcedure [dbo].[GetHistoryLinesList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetHistoryLinesList]
AS
SELECT Z.ItemCode FROM (SELECT DISTINCT ItemCode FROM tblUtilityPervHistoryLines WHERE SearchType = 6) Z LEFT JOIN tblInv 
ON Z.ItemCode = tblInv.strPartNumber WHERE ISNULL(tblInv.strPartNumber,'') = '' ORDER BY Z.ItemCode
GO
/****** Object:  StoredProcedure [dbo].[GetHistoryOfServiceableItem]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetHistoryOfServiceableItem]  
(  
 @ServiceableItemCode NVARCHAR(50)  
)  
AS  
BEGIN  
 select   
  tblWSInvoiceDoc.strInvDocID AS JobNumber,  
  tblWSInvoiceDoc.ServiceableItemCode AS ServiceavleItemCode,  
  tblInvoiceDoc.dteJournalDate As InvoicedDate,  
  tblWSInvoiceDoc.OwnerCode AS [Owner],  
  tblWSInvoiceDoc.CustomerCode AS Customer,  
  --tblInvoiceDoc.strNotes As Remark,  
  tblInvoiceDoc.decTotal As Amount  
 from tblWSInvoiceDoc  
 Inner Join tblInvoiceDoc on tblInvoiceDoc.strInvDocID = tblWSInvoiceDoc.strInvDocID  
 where tblWSInvoiceDoc.ServiceableItemCode = @ServiceableItemCode  

 UNION ALL

  select   
  tblWSProcessDoc.ProcessDocID AS JobNumber,  
  tblWSProcessDoc.ServiceableItemCode AS ServiceavleItemCode,  
  tblWSProcessDoc.DocumentDate As InvoicedDate,  
  tblWSProcessDoc.OwnerCode AS [Owner],  
  tblWSProcessDoc.CustomerCode AS Customer,  
  --tblInvoiceDoc.strNotes As Remark,  
  tblWSProcessDoc.Total As Amount  
 from tblWSProcessDoc 
 where tblWSProcessDoc.ServiceableItemCode = @ServiceableItemCode  


END
GO
/****** Object:  StoredProcedure [dbo].[GetINRecurring]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetINRecurring]

AS

BEGIN

	SELECT tblSalesRE.strREName AS RecurringName, ISNULL(tblSalesRE.dteLastProcDate,'1900-01-01 00:00:00') AS LastProcDate, tblSalesRE.strCustName AS CustomerNumber, (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblSalesRE.strCustName) as CustomerName, tblSalesRE.strSoldTo AS SoldTo, tblSalesRE.strShipTo AS ShipTo, tblSalesRE.strReference AS Reference, tblSalesRE.decSubTotal AS SubTotal, tblSalesRE.decVAT AS VAT, tblSalesRE.decTotal AS Total, tblSalesRE.decDiscPerc AS DiscountPerc, tblSalesRE.decDiscAmt AS DiscountAmount, tblSalesRE.strAddInfo AS AdditionalInfo, tblSalesRE.strPaidBy AS PaidBy, ISNULL(tblSalesRE.intAccount, 0) AS AccountNumber, tblSalesRE.strNotes AS Notes, tblSalesREDT.intLineNo AS LineNumber, tblSalesREDT.strPartNumber AS InventoryNumber, tblSalesREDT.strPartDesc AS InventoryDesc, tblSalesREDT.strLocation AS Location, tblSalesREDT.decQty AS Quantity, tblSalesREDT.strUnit AS Unit, tblSalesREDT.decPriceEaInc AS PriceEaInc, tblSalesREDT.strTaxCode AS TaxCode, tblSalesREDT.decLineTaxAmt As LineTaxAmt, tblSalesREDT.decLineTotInc As LineTotInc, tblSalesREDT.decLineDiscPerc AS LineDiscPerc, tblSalesREDT.decLineDiscAmt AS LineDiscAmt, tblSalesREDT.strInvField1 AS InventoryField1, tblSalesREDT.strInvField2 AS InventoryField2, tblSalesREDT.strInvField3 AS InventoryField3, tblSalesREDT.strInvField4 AS InventoryField4, tblSalesREDT.strInvField5 AS InventoryField5, tblSalesREDT.strInvField6 AS InventoryField6, tblSalesREDT.strLineField1 AS LineField1, tblSalesREDT.strLineField2 AS LineField2, tblSalesREDT.strLineField3 AS LineField3, tblSalesREDT.strLineField4 AS LineField4, tblSalesREDT.strLineField5 AS LineField5, tblSalesREDT.strLineField6 AS LineField6, tblSalesREDT.strLineField7 AS LineField7, tblSalesREDT.strLineField8 AS LineField8, tblSalesREDT.strLineField9 AS LineField9, tblSalesREDT.strLineField10 AS LineField10, tblSalesREDT.strLineField11 AS LineField11, tblSalesREDT.strLineField12 AS LineField12, ISNULL(tblSalesREDT.strSalesName, '') AS SalesName FROM tblSalesRE INNER JOIN tblSalesREDT ON tblSalesRE.strREName = tblSalesREDT.strREName ORDER BY tblSalesRE.strREName
END

GO
/****** Object:  StoredProcedure [dbo].[GetIntBillTrackingData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetIntBillTrackingData]	 
	@CustName as nvarchar(50)
AS
BEGIN
	SELECT lngIntBillTrackID AS IntBillTrackID
	,dteIntRunDate		 AS IntRunDate
	,strUserName		 AS UserName
	,decIntSubTotal		 AS IntSubTotal
	,decIntVAT			 AS IntVAT
	,decIntTotal		 AS IntTotal
FROM tblIntBillTracking	 
WHERE strCustName = @CustName
ORDER BY dteIntRunDate DESC
	,lngIntBillTrackID DESC
END
GO
/****** Object:  StoredProcedure [dbo].[GetInterestBillingCustomerTransactions]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInterestBillingCustomerTransactions] 
(
	@IsCheckedHP BIT,
	@IsPLCompoundedInterest BIT,
	@AsAt SMALLDATETIME,
	@AsAt2 SMALLDATETIME,
	@CustName NVARCHAR(100),
	@DocNum NVARCHAR(100) = NULL,
	@IsHPInterestItem BIT --To determine HPInterestItem
)
AS
BEGIN
	IF @IsCheckedHP = 0 
		BEGIN
			SELECT tblCustTransDT.lngID AS 'ID',
				tblCustTransDT.dteJournalDate AS 'JournalDate',
				MASTERTABLE.dteDueDate AS 'DueDate',
				CASE 
					WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) > 0
						AND YEAR(ISNULL(tblCustTransDT.dteIntDate, '')) = 1900
						THEN CASE 
								WHEN ISNULL((
											SELECT DTL.dteIntDate
											FROM tblCustTransDT DTL
											WHERE DTL.lngCustTrID = tblCustTransDT.lngCustTrID
												AND ISNULL(DTL.lngCustPayID, 0) = 0
											), '') = 1900
									THEN tblCustTransDT.dteIntDate
								ELSE (
										SELECT DTL.dteIntDate
										FROM tblCustTransDT DTL
										WHERE DTL.lngCustTrID = tblCustTransDT.lngCustTrID
											AND ISNULL(DTL.lngCustPayID, 0) = 0
										)
								END
					ELSE tblCustTransDT.dteIntDate
					END AS 'InterestDate',
				CASE MASTERTABLE.bitIsForeign
					WHEN 0
						THEN tblCustTransDT.decAmount
					ELSE tblCustTransDT.decAmountF
					END AS 'Amount',
				ISNULL(MASTERTABLE.strInvDocID, '') AS 'DocNumber'
			FROM tblCustTrans AS MASTERTABLE
			INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
			WHERE MASTERTABLE.strCustName = @CustName
				AND tblCustTransDT.bitReversed = 0
				AND tblCustTransDT.dteJournalDate <= @AsAt
				AND (@IsPLCompoundedInterest = 1 OR MASTERTABLE.strInvDepNumber NOT LIKE '%INTEREST (%') -- @IsPLCompoundedInterest = false(0) then check for other condition
				AND tblCustTransDT.lngCustTrID NOT IN (
					SELECT tblCustTransDT.lngCustTrID
					FROM tblCustTrans
					INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
					WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName
						AND tblCustTransDT.bitReversed = 0
						AND tblCustTransDT.dteJournalDate <= @AsAt2
					GROUP BY tblCustTransDT.lngCustTrID
					HAVING SUM(tblCustTransDT.decAmount) = 0
						AND SUM(tblCustTransDT.decAmountF) = 0
					)
			ORDER BY MASTERTABLE.dteJournalDate
		END
	ELSE
		BEGIN
			IF @IsHPInterestItem = 1 --HPInterestItem
				BEGIN
					SELECT tblCustTransDT.lngID AS 'ID',
						tblCustTransDT.dteJournalDate AS 'JournalDate',
						MASTERTABLE.dteDueDate AS 'DueDate',
						CASE 
							WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) > 0
								AND YEAR(ISNULL(tblCustTransDT.dteIntDate, '')) = 1900
								THEN CASE 
										WHEN ISNULL((
													SELECT DTL.dteIntDate
													FROM tblCustTransDT DTL
													WHERE DTL.lngCustTrID = tblCustTransDT.lngCustTrID
														AND ISNULL(DTL.lngCustPayID, 0) = 0
													), '') = 1900
											THEN tblCustTransDT.dteIntDate
										ELSE (
												SELECT DTL.dteIntDate
												FROM tblCustTransDT DTL
												WHERE DTL.lngCustTrID = tblCustTransDT.lngCustTrID
													AND ISNULL(DTL.lngCustPayID, 0) = 0
												)
										END
							ELSE tblCustTransDT.dteIntDate
							END AS 'InterestDate',
						CASE MASTERTABLE.bitIsForeign
							WHEN 0
								THEN tblCustTransDT.decAmount
							ELSE tblCustTransDT.decAmountF
							END AS 'Amount',
						ISNULL(MASTERTABLE.strInvDocID, '') AS 'DocNumber'
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					WHERE MASTERTABLE.strCustName = @CustName
						AND tblCustTransDT.bitReversed = 0
						AND tblCustTransDT.dteJournalDate <= @AsAt
						AND (@IsPLCompoundedInterest = 1 OR MASTERTABLE.strInvDepNumber NOT LIKE '%OVERDUE INTEREST (%') -- @IsPLCompoundedInterest = false(0) then check for other condition
						AND tblCustTransDT.lngCustTrID NOT IN (
							SELECT tblCustTransDT.lngCustTrID
							FROM tblCustTrans
							INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
							WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName
								AND tblCustTransDT.bitReversed = 0
								AND tblCustTransDT.dteJournalDate <= @AsAt2
							GROUP BY tblCustTransDT.lngCustTrID
							HAVING SUM(tblCustTransDT.decAmount) = 0
								AND SUM(tblCustTransDT.decAmountF) = 0
							)
						AND tblCustTransDT.lngCustTrID IN (
							SELECT DISTINCT lngCustTrID
							FROM tblCustTrans
							WHERE strInvDocID = @DocNum
							)
					ORDER BY MASTERTABLE.dteJournalDate
				END
			ELSE
				BEGIN
					SELECT tblCustTransDT.lngID AS 'ID',
						tblCustTransDT.dteJournalDate AS 'JournalDate',
						MASTERTABLE.dteDueDate AS 'DueDate',
						tblCustTransDT.dteIntDate AS 'InterestDate',
						CASE MASTERTABLE.bitIsForeign
							WHEN 0
								THEN tblCustTransDT.decAmount
							ELSE tblCustTransDT.decAmountF
							END AS 'Amount',
						ISNULL(MASTERTABLE.strInvDocID, '') AS 'DocNumber'
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					WHERE MASTERTABLE.strCustName = @CustName
						AND tblCustTransDT.bitReversed = 0
						AND tblCustTransDT.dteJournalDate <= @AsAt
						AND (@IsPLCompoundedInterest = 1 OR MASTERTABLE.strInvDepNumber NOT LIKE '%OVERDUE INTEREST (%') -- @IsPLCompoundedInterest = false(0) then check for other condition
						AND tblCustTransDT.lngCustTrID NOT IN (
							SELECT tblCustTransDT.lngCustTrID
							FROM tblCustTrans
							INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
							WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName
								AND tblCustTransDT.bitReversed = 0
								AND tblCustTransDT.dteJournalDate <= @AsAt2
							GROUP BY tblCustTransDT.lngCustTrID
							HAVING SUM(tblCustTransDT.decAmount) = 0
								AND SUM(tblCustTransDT.decAmountF) = 0
							)
						AND tblCustTransDT.lngCustTrID NOT IN (
							SELECT DISTINCT lngCustTrID
							FROM tblCustTrans
							WHERE strInvDocID = @DocNum
							)
					ORDER BY MASTERTABLE.dteJournalDate
				END
		END
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvByCriteria]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetInvByCriteria] ***********/
CREATE PROCEDURE [dbo].[GetInvByCriteria] (
	@InvType VARCHAR(50) = NULL
	,@UserName VARCHAR(50) = NULL
	,@Pricelist VARCHAR(20) = NULL
	,@LocationName VARCHAR(500) = NULL
	,@Date DATETIME = NULL
	,@FilterType INT = 0
	,@PageSize INT = 25
	,@PageIndex INT = 1
	,@SearchText VARCHAR(200) = ''
	,@isSearchTextPartNumber BIT = 0
	)
AS
BEGIN

	DECLARE @TotalRows INT
	DECLARE @TotalPages INT
	DECLARE @StartRowIndex INT
		,@EndRowIndex INT;
	DECLARE @Sql NVARCHAR(MAX)
	DECLARE @TotalRecords NVARCHAR(MAX) = ''

	DECLARE @Offset INT

	SET @Offset = @PageSize * (@PageIndex - 1)

	IF ISNULL(@SearchText, '') = ''
	BEGIN
		SET @SearchText = ''
	END

	IF ISNULL(@InvType, '') = ''
	BEGIN
		SET @InvType = ''
	END

	DECLARE @IsSortByDesc AS BIT = (
			SELECT TOP 1 bitSortInvDesc
			FROM tblCoOpts (NOLOCK)
			)
	DECLARE @uidPriceBasedID AS UNIQUEIDENTIFIER

	SET @uidPriceBasedID = NULL

	IF ISNULL(@Pricelist, '') <> ''
		AND ISNULL(@Date, '') <> ''
	BEGIN
		SELECT TOP 1 @uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
		FROM tblPriceListsByDate (NOLOCK)
		INNER JOIN dbo.tblInvPrice (NOLOCK) ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
		WHERE @Date BETWEEN dbo.tblPriceListsByDate.dteStartDate
				AND dbo.tblPriceListsByDate.dteFinishDate
			AND tblPriceListsByDate.strPricelist = @Pricelist
	END

	IF (@IsSortByDesc = 1)
	BEGIN
		IF ISNULL(@LocationName, '') = ''
		BEGIN
				;

			WITH Data_Inv
			AS (
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.decSumAvail AS SumAvail
					,dbo.tblInv.decSumAlloc AS SumAlloc
					,dbo.tblInv.decSumManuf AS SumManuf
					,CASE 
						WHEN dbo.tblInv.decSumOnHand = 0
							THEN 0
						ELSE (
								CASE 
									WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
										THEN dbo.tblInv.decSumOnHand
									ELSE CASE dbo.tblInvUOMs.strConversionType
											WHEN 'Multiply'
												THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor
											ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor
											END
									END
								)
						END AS SumOnHand
					,dbo.tblInv.decSumValue AS SumValue
					,dbo.tblInv.decSumOnOrder AS SumOnOrder
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,@Pricelist AS Pricelist
					,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
					,CAST(ISNULL(CASE 
								WHEN dbo.tblInv.bitInvSerialType = 1
									THEN (
											SELECT bitTrackExpiryDate
											FROM dbo.tblInvSerialTypes(NOLOCK)
											WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
											)
								ELSE 0
								END, 0) AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInvPrice.strUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
				FROM dbo.tblInv(NOLOCK)
				INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
					AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data <> 5
							)
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND tblInvPrice.strPricelist = @Pricelist
					AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
					AND (
						(
							dbo.tblInvUOMs.strUseFor = 'Sales'
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)
					--AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%')
				
				UNION ALL
				
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.decSumAvail AS SumAvail
					,dbo.tblInv.decSumAlloc AS SumAlloc
					,dbo.tblInv.decSumManuf AS SumManuf
					,dbo.tblInv.decSumOnHand AS SumOnHand
					,dbo.tblInv.decSumValue AS SumValue
					,dbo.tblInv.decSumOnOrder AS SumOnOrder
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsTrackExpiryDate
					,dbo.tblInv.strBarCode2 AS BarCode2
					,@Pricelist AS Pricelist
					,CAST(0 AS DECIMAL(18, 2)) AS Selling
					,CAST(0 AS BIT) AS bitTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInv.strStockUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
				FROM dbo.tblInv(NOLOCK)
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							ISNULL((
									SELECT data
									FROM dbo.split(@InvType, ',')
									WHERE data = 5
									), 0)
							)
						)
					AND (dbo.tblInv.bitInactive = 0)
					--AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%')
				)
				,Data_Final
			AS (
				SELECT ROW_NUMBER() OVER (
						ORDER BY [Description]
						) AS RowNumber
					,Data_Inv.*
					,CASE 
						WHEN @FilterType = 0
							THEN NULL
						WHEN @FilterType = 1
							THEN dbo.tblInvVend.strVendName
						WHEN @FilterType = 2
							THEN dbo.tblInvCustomer.strCustName
						END AS CustVendID
					,tblInvImg.ImgData
					,TotalRows = (
						SELECT Count(*)
						FROM Data_Inv
						)
				FROM Data_Inv
				INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Inv.PartNumber
				LEFT OUTER JOIN dbo.tblInvVend(NOLOCK) ON Data_Inv.PartNumber = tblInvVend.strPartNumber AND tblInvVend.bitPreferred = 1 
				LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Inv.PartNumber = tblInvCustomer.strPartNumber
				LEFT OUTER JOIN tblInvImg(NOLOCK) ON Data_Inv.PartNumber = tblInvImg.strPartNumber AND tblInvImg.bitDefaultImage = 1				
				)
			SELECT *
				,(
					CASE 
						WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
							THEN (CEILING(TotalRows / @PageSize) + 1)
						ELSE CEILING(TotalRows / @PageSize)
						END
					) AS TotalPages
			FROM Data_Final
			WHERE RowNumber >= (@Offset + 1)
				AND RowNumber <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
			BEGIN
				SET @LocationName = (
						SELECT TOP 1 strLocName
						FROM tblInvLoc (NOLOCK)
						WHERE dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@LocationName))
							OR dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName))
						)
			END;

			WITH Data_Inv
			AS (
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,@Pricelist AS Pricelist
					,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
					,CAST(ISNULL(CASE 
								WHEN dbo.tblInv.bitInvSerialType = 1
									THEN (
											SELECT bitTrackExpiryDate
											FROM dbo.tblInvSerialTypes(NOLOCK)
											WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
											)
								ELSE 0
								END, 0) AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInvPrice.strUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
					,dbo.tblInvUOMs.strPartNumber
					,dbo.tblInvUOMs.strConversionType
					,dbo.tblInvUOMs.decConversionFactor
				FROM dbo.tblInv(NOLOCK)
				INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
					AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data <> 5
							)
						OR @InvType = NULL
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND tblInvPrice.strPricelist = @Pricelist
					AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
					AND (
						(
							dbo.tblInvUOMs.strUseFor = 'Sales'
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)
					--AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%')
				)
				,Data_Final
			AS (
				SELECT Data_Inv.PartNumber
					,Data_Inv.[Description]
					,Data_Inv.[Type]
					,Data_Inv.Category
					,Data_Inv.SubCategory
					,Data_Inv.SubCategoryGroup
					,Data_Inv.IsUseBOM
					,Data_Inv.IsInactive
					,Data_Inv.Field1
					,Data_Inv.Field2
					,Data_Inv.Field3
					,Data_Inv.Field4
					,Data_Inv.Field5
					,Data_Inv.Field6
					,Data_Inv.BarCode
					,Data_Inv.IsInvSerialType
					,Data_Inv.BarCode2
					,Data_Inv.Pricelist
					,Data_Inv.Selling
					,Data_Inv.IsTrackExpiryDate
					,Data_Inv.LastPPUnit
					,Data_Inv.DecimalQuantity
					,Data_Inv.StockUnit
					,Data_Inv.BuyToStock
					,Data_Inv.ExtendedDesc
					,dbo.tblInvExt.decAvail AS SumAvail
					,dbo.tblInvExt.decAlloc AS SumAlloc
					,dbo.tblInvExt.decManuf AS SumManuf
					,CASE 
						WHEN dbo.tblInvExt.decOnHand = 0
							THEN 0
						ELSE (
								CASE 
									WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
										THEN dbo.tblInvExt.decOnHand
									ELSE CASE strConversionType
											WHEN 'Multiply'
												THEN dbo.tblInvExt.decOnHand / decConversionFactor
											ELSE dbo.tblInvExt.decOnHand * decConversionFactor
											END
									END
								)
						END AS SumOnHand
					,dbo.tblInvExt.decValue AS SumValue
					,dbo.tblInvExt.decOnOrder AS SumOnOrder
				FROM Data_Inv
				INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_Inv.PartNumber = dbo.tblInvExt.strPartNumber
				WHERE (
						dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
						AND dbo.tblInvExt.bitInActive = 0
						)
				
				UNION ALL
				
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,@Pricelist AS Pricelist
					,CAST(0 AS DECIMAL(18, 2)) AS Selling
					,CAST(0 AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblinv.strStockUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
					,dbo.tblInv.decSumAvail AS SumAvail
					,dbo.tblInv.decSumAlloc AS SumAlloc
					,dbo.tblInv.decSumManuf AS SumManuf
					,dbo.tblInv.decSumOnHand AS SumOnHand
					,dbo.tblInv.decSumValue AS SumValue
					,dbo.tblInv.decSumOnOrder AS SumOnOrder
				FROM dbo.tblInv(NOLOCK)
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							ISNULL((
									SELECT data
									FROM dbo.split(@InvType, ',')
									WHERE data = 5
									), 0)
							)
						)
					AND (dbo.tblInv.bitInactive = 0)
					--AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%')
				)
				,Data_Final1
			AS (
				SELECT *
				FROM (
					SELECT ROW_NUMBER() OVER (
							ORDER BY Data_Final.[Description]
							) AS RowNumber
						,Data_Final.*
						,TotalRows = (
							SELECT Count(*)
							FROM Data_Final
							)
						,CASE 
							WHEN @FilterType = 0
								THEN NULL
							WHEN @FilterType = 1
								THEN dbo.tblInvVend.strVendName
							WHEN @FilterType = 2
								THEN dbo.tblInvCustomer.strCustName
							END AS CustVendID
						,tblInvImg.ImgData
					FROM Data_Final
					INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Final.PartNumber
					LEFT OUTER JOIN dbo.tblInvVend(NOLOCK) ON Data_Final.PartNumber = tblInvVend.strPartNumber AND tblInvVend.bitPreferred = 1
					LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Final.PartNumber = tblInvCustomer.strPartNumber
					LEFT OUTER JOIN tblInvImg(NOLOCK) ON Data_Final.PartNumber = tblInvImg.strPartNumber AND tblInvImg.bitDefaultImage = 1
					) AS TEMP
				)
			SELECT Data_Final1.*
				,(
					CASE 
						WHEN @TotalRows > (CEILING(Data_Final1.TotalRows / @PageSize) * @PageSize)
							THEN (CEILING(Data_Final1.TotalRows / @PageSize) + 1)
						ELSE CEILING(Data_Final1.TotalRows / @PageSize)
						END
					) AS TotalPages
			FROM Data_Final1		
			WHERE RowNumber >= (@Offset + 1)
				AND RowNumber <= (@Offset + @PageSize)
			ORDER BY RowNumber
		END
	END
	ELSE
	BEGIN
		IF ISNULL(@LocationName, '') = ''
		BEGIN
				;

			WITH Data_Inv
			AS (
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.decSumAvail AS SumAvail
					,dbo.tblInv.decSumAlloc AS SumAlloc
					,dbo.tblInv.decSumManuf AS SumManuf
					,CASE 
						WHEN dbo.tblInv.decSumOnHand = 0
							THEN 0
						ELSE (
								CASE 
									WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
										THEN dbo.tblInv.decSumOnHand
									ELSE CASE dbo.tblInvUOMs.strConversionType
											WHEN 'Multiply'
												THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor
											ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor
											END
									END
								)
						END AS SumOnHand
					,dbo.tblInv.decSumValue AS SumValue
					,dbo.tblInv.decSumOnOrder AS SumOnOrder
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,@Pricelist AS Pricelist
					,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
					,CAST(ISNULL(CASE 
								WHEN dbo.tblInv.bitInvSerialType = 1
									THEN (
											SELECT bitTrackExpiryDate
											FROM dbo.tblInvSerialTypes(NOLOCK)
											WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
											)
								ELSE 0
								END, 0) AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInvPrice.strUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
				FROM dbo.tblInv(NOLOCK)
				INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
					AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data <> 5
							)
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND tblInvPrice.strPricelist = @Pricelist
					AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
					AND (
						(
							dbo.tblInvUOMs.strUseFor = 'Sales'
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)
					--AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%')
				
				UNION ALL
				
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.decSumAvail AS SumAvail
					,dbo.tblInv.decSumAlloc AS SumAlloc
					,dbo.tblInv.decSumManuf AS SumManuf
					,dbo.tblInv.decSumOnHand AS SumOnHand
					,dbo.tblInv.decSumValue AS SumValue
					,dbo.tblInv.decSumOnOrder AS SumOnOrder
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsTrackExpiryDate
					,dbo.tblInv.strBarCode2 AS BarCode2
					,@Pricelist AS Pricelist
					,CAST(0 AS DECIMAL(18, 2)) AS Selling
					,CAST(0 AS BIT) AS bitTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInv.strStockUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
				FROM dbo.tblInv(NOLOCK)
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							ISNULL((
									SELECT data
									FROM dbo.split(@InvType, ',')
									WHERE data = 5
									), 0)
							)
						)
					AND (dbo.tblInv.bitInactive = 0)
					--AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%')
				)
				,Data_Final
			AS (
				SELECT ROW_NUMBER() OVER (
						ORDER BY Data_Inv.PartNumber
						) AS RowNumber
					,Data_Inv.*
					,CASE 
						WHEN @FilterType = 0
							THEN NULL
						WHEN @FilterType = 1
							THEN dbo.tblInvVend.strVendName
						WHEN @FilterType = 2
							THEN dbo.tblInvCustomer.strCustName
						END AS CustVendID
					,tblInvImg.ImgData
					,TotalRows = (
						SELECT Count(*)
						FROM Data_Inv
						)
				FROM Data_Inv
				INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Inv.PartNumber
				LEFT OUTER JOIN dbo.tblInvVend(NOLOCK) ON Data_Inv.PartNumber = tblInvVend.strPartNumber AND tblInvVend.bitPreferred = 1
				LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Inv.PartNumber = tblInvCustomer.strPartNumber
				LEFT OUTER JOIN tblInvImg(NOLOCK) ON Data_Inv.PartNumber = tblInvImg.strPartNumber AND tblInvImg.bitDefaultImage = 1				
				)
			SELECT *
				,(
					CASE 
						WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
							THEN (CEILING(TotalRows / @PageSize) + 1)
						ELSE CEILING(TotalRows / @PageSize)
						END
					) AS TotalPages
			FROM Data_Final
			WHERE RowNumber >= (@Offset + 1)
				AND RowNumber <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
			BEGIN
				SET @LocationName = (
						SELECT TOP 1 strLocName
						FROM tblInvLoc (NOLOCK)
						WHERE dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@LocationName))
							OR dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName))
						)
			END;

			WITH Data_Inv
			AS (
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,@Pricelist AS Pricelist
					,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
					,CAST(ISNULL(CASE 
								WHEN dbo.tblInv.bitInvSerialType = 1
									THEN (
											SELECT bitTrackExpiryDate
											FROM dbo.tblInvSerialTypes(NOLOCK)
											WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
											)
								ELSE 0
								END, 0) AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInvPrice.strUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
					,dbo.tblInvUOMs.strPartNumber
					,dbo.tblInvUOMs.strConversionType
					,dbo.tblInvUOMs.decConversionFactor
				FROM dbo.tblInv(NOLOCK)
				INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
					AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data <> 5
							)
						OR @InvType = NULL
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND tblInvPrice.strPricelist = @Pricelist
					AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
					AND (
						(
							dbo.tblInvUOMs.strUseFor = 'Sales'
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)
					--AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%')
				)
				,Data_Final
			AS (
				SELECT Data_Inv.PartNumber
					,Data_Inv.[Description]
					,Data_Inv.[Type]
					,Data_Inv.Category
					,Data_Inv.SubCategory
					,Data_Inv.SubCategoryGroup
					,Data_Inv.IsUseBOM
					,Data_Inv.IsInactive
					,Data_Inv.Field1
					,Data_Inv.Field2
					,Data_Inv.Field3
					,Data_Inv.Field4
					,Data_Inv.Field5
					,Data_Inv.Field6
					,Data_Inv.BarCode
					,Data_Inv.IsInvSerialType
					,Data_Inv.BarCode2
					,Data_Inv.Pricelist
					,Data_Inv.Selling
					,Data_Inv.IsTrackExpiryDate
					,Data_Inv.LastPPUnit
					,Data_Inv.DecimalQuantity
					,Data_Inv.StockUnit
					,Data_Inv.BuyToStock
					,Data_Inv.ExtendedDesc
					,dbo.tblInvExt.decAvail AS SumAvail
					,dbo.tblInvExt.decAlloc AS SumAlloc
					,dbo.tblInvExt.decManuf AS SumManuf
					,CASE 
						WHEN dbo.tblInvExt.decOnHand = 0
							THEN 0
						ELSE (
								CASE 
									WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
										THEN dbo.tblInvExt.decOnHand
									ELSE CASE strConversionType
											WHEN 'Multiply'
												THEN dbo.tblInvExt.decOnHand / decConversionFactor
											ELSE dbo.tblInvExt.decOnHand * decConversionFactor
											END
									END
								)
						END AS SumOnHand
					,dbo.tblInvExt.decValue AS SumValue
					,dbo.tblInvExt.decOnOrder AS SumOnOrder
				FROM Data_Inv
				INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_Inv.PartNumber = dbo.tblInvExt.strPartNumber
				WHERE (
						dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
						AND dbo.tblInvExt.bitInActive = 0
						)
				
				UNION ALL
				
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,@Pricelist AS Pricelist
					,CAST(0 AS DECIMAL(18, 2)) AS Selling
					,CAST(0 AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblinv.strStockUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
					,dbo.tblInv.decSumAvail AS SumAvail
					,dbo.tblInv.decSumAlloc AS SumAlloc
					,dbo.tblInv.decSumManuf AS SumManuf
					,dbo.tblInv.decSumOnHand AS SumOnHand
					,dbo.tblInv.decSumValue AS SumValue
					,dbo.tblInv.decSumOnOrder AS SumOnOrder
				FROM dbo.tblInv(NOLOCK)
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							ISNULL((
									SELECT data
									FROM dbo.split(@InvType, ',')
									WHERE data = 5
									), 0)
							)
						)
					AND (dbo.tblInv.bitInactive = 0)
					--AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%')
				)
				,Data_Final1
			AS (
				SELECT *
				FROM (
					SELECT ROW_NUMBER() OVER (
							ORDER BY Data_Final.PartNumber
							) AS RowNumber
						,Data_Final.*
						,TotalRows = (
							SELECT Count(*)
							FROM Data_Final
							)
						,CASE 
							WHEN @FilterType = 0
								THEN NULL
							WHEN @FilterType = 1
								THEN dbo.tblInvVend.strVendName
							WHEN @FilterType = 2
								THEN dbo.tblInvCustomer.strCustName
							END AS CustVendID
						,tblInvImg.ImgData
					FROM Data_Final
					INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Final.PartNumber
					LEFT OUTER JOIN dbo.tblInvVend(NOLOCK) ON Data_Final.PartNumber = tblInvVend.strPartNumber AND tblInvVend.bitPreferred = 1
					LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Final.PartNumber = tblInvCustomer.strPartNumber
					LEFT OUTER JOIN tblInvImg(NOLOCK) ON Data_Final.PartNumber = tblInvImg.strPartNumber AND tblInvImg.bitDefaultImage = 1
					) AS TEMP
				)
			SELECT Data_Final1.*
				,(
					CASE 
						WHEN @TotalRows > (CEILING(Data_Final1.TotalRows / @PageSize) * @PageSize)
							THEN (CEILING(Data_Final1.TotalRows / @PageSize) + 1)
						ELSE CEILING(Data_Final1.TotalRows / @PageSize)
						END
					) AS TotalPages
			FROM Data_Final1		
			WHERE RowNumber >= (@Offset + 1)
				AND RowNumber <= (@Offset + @PageSize)
			ORDER BY RowNumber
		END
	END
END
GO


/****** Object:  StoredProcedure [dbo].[GetInvByUserByPriceListCriteria]    Script Date: 26/06/2020 08:45:58 ******/


CREATE PROCEDURE [dbo].[GetInvByUserByPriceListCriteria] (
	@InvType VARCHAR(50) = NULL
	,@UserName VARCHAR(50) = NULL
	,@Pricelist VARCHAR(20) = NULL
	,@LocationName VARCHAR(500) = NULL
	,@Date DATETIME = NULL
	,@FilterType INT = 0
	,@PageSize INT = 25
	,@PageIndex INT = 1
	,@SearchText VARCHAR(200) = ''
	,@isSearchTextPartNumber BIT = 0
	,@isStockUnit BIT = 0
	,@category NVARCHAR(250) = ''
	,@subCategory NVARCHAR(250) = ''
	,@subCategoryGroup NVARCHAR(250) = ''
	,@isBOMOnly BIT = 0
	,@isSNLotTrack BIT = 0
	,@TransactionType INT = 3 ---Sales-1,Purchases-2,Other-3,Both-4
	,@VendName NVARCHAR(max) = ''
	)
AS
BEGIN
	DECLARE @TotalRows INT
	DECLARE @TotalPages INT
	DECLARE @StartRowIndex INT
		,@EndRowIndex INT;
	DECLARE @Sql NVARCHAR(MAX)
	DECLARE @TotalRecords NVARCHAR(MAX) = ''
	DECLARE @Offset INT

	SET @Offset = @PageSize * (@PageIndex - 1)

	IF ISNULL(@SearchText, '') = ''
	BEGIN
		SET @SearchText = ''
	END

	IF ISNULL(@category, '') = ''
	BEGIN
		SET @category = ''
	END

	IF ISNULL(@subCategory, '') = ''
	BEGIN
		SET @subCategory = ''
	END

	IF ISNULL(@subCategoryGroup, '') = ''
	BEGIN
		SET @subCategoryGroup = ''
	END

	IF ISNULL(@InvType, '') = ''
	BEGIN
		SET @InvType = ''
	END

	DECLARE @IsSortByDesc AS BIT = (
			SELECT TOP 1 bitSortInvDesc
			FROM tblCoOpts(NOLOCK)
			)
	DECLARE @uidPriceBasedID AS UNIQUEIDENTIFIER

	SET @uidPriceBasedID = NULL

	IF ISNULL(@Pricelist, '') <> ''
		AND ISNULL(@Date, '') <> ''
	BEGIN
		SELECT TOP 1 @uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
		FROM tblPriceListsByDate(NOLOCK)
		INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
		WHERE @Date BETWEEN dbo.tblPriceListsByDate.dteStartDate
				AND dbo.tblPriceListsByDate.dteFinishDate
			AND tblPriceListsByDate.strPricelist = @Pricelist
	END

	CREATE TABLE #TempCustVendEmp (
		[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[strCustVendEmp] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[BudgetQty] [money] NULL
		,[BudgetFrequency] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		)

	IF (@FilterType = 1) --  Vendor
	BEGIN
		INSERT INTO #TempCustVendEmp
		SELECT v.strPartNumber
			,v.strVendName
			,0.00 AS BudgetQty
			,'No Budget' AS BudgetFrequency
		FROM dbo.tblInvVend v(NOLOCK)
		INNER JOIN tblInvVendPriceListsByDate pld(NOLOCK) ON v.uidPriceBasedID = pld.uidPriceBasedID
			AND v.strVendName = pld.strVendName
		INNER JOIN tblVendors ven(NOLOCK) ON pld.strVendName = ven.strVendName
		WHERE (
				@VendName <> ''
				AND v.strVendName = @VendName
				)
			OR (
				@VendName = ''
				AND v.bitPreferred = 1
				)
	END
	ELSE IF (@FilterType = 2) --  Customer
	BEGIN
		INSERT INTO #TempCustVendEmp
		SELECT strPartNumber
			,strCustName
			,BudgetQty = 0.00
			,BudgetFrequency = 'No Budget'
		FROM dbo.tblInvCustomer(NOLOCK)
		WHERE strCustName = @VendName
	END
	ELSE IF (@FilterType = 3) --  EMPLOYEE
	BEGIN
		INSERT INTO #TempCustVendEmp
		SELECT strPartNumber
			,strEmpNumber
			,BudgetQty = CAST((
					CASE 
						WHEN @VendName <> ''
							THEN decBudgetQty
						ELSE 0.00
						END
					) AS DECIMAL)
			,[BudgetFrequency] = (
				CASE 
					WHEN @VendName <> ''
						THEN (
								CASE intBudgetFrequency
									WHEN 0
										THEN 'Yearly'
									WHEN 1
										THEN 'Half Yearly'
									WHEN 2
										THEN 'Quarterly'
									WHEN 3
										THEN 'Monthly'
									WHEN 4
										THEN 'Weekly'
									WHEN 5
										THEN 'No Budget'
									END
								)
					ELSE 'No Budget'
					END
				)
		FROM dbo.tblEmpItemBudgetDT(NOLOCK)
		WHERE strEmpNumber = @VendName
	END

	IF (@TransactionType = 2) --- Purchases
		IF (@IsSortByDesc = 1)
		BEGIN
			IF ISNULL(@LocationName, '') = ''
			BEGIN
					;

				WITH Data_Inv
				AS (
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInv.decSumOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
											THEN dbo.tblInv.decSumOnHand
										ELSE CASE dbo.tblInvUOMs.strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor
												ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInv.decSumValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
											THEN dbo.tblInv.decSumValue
										ELSE CASE dbo.tblInvUOMs.strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor
												ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist
						--,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvPrice.strUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
					FROM dbo.tblInv(NOLOCK)
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
						AND dbo.tblInvUOMS.bitInactive = 0
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist
						--AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (
							@isBOMOnly
							,1
							)
						AND dbo.tblInvPrice.bitStockUnit IN (
							1
							,@IsStockUnit
							)
						AND (
							(
								dbo.tblInvUOMs.strUseFor = 'Purchases'
								OR dbo.tblInvUOMs.strUseFor = 'Both'
								)
							OR dbo.tblInvPrice.bitStockUnit = 1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							)
						--AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					
					UNION ALL
					
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInv.decSumOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
											THEN dbo.tblInv.decSumOnHand
										ELSE CASE dbo.tblInvUOMs.strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor
												ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInv.decSumValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
											THEN dbo.tblInv.decSumValue
										ELSE CASE dbo.tblInvUOMs.strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor
												ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvUOMs.strFromUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
					FROM dbo.tblInv(NOLOCK)
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMS.bitInactive = 0
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (
							@isBOMOnly
							,1
							)
						AND ((dbo.tblInvUOMs.strUseFor = 'Purchases'))
						AND dbo.tblInvPrice.bitStockUnit = 1
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					
					UNION ALL
					
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,dbo.tblInv.decSumOnHand AS SumOnHand
						,dbo.tblInv.decSumValue AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsTrackExpiryDate
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,CAST(0 AS DECIMAL(18, 2)) AS Selling
						,CAST(0 AS BIT) AS bitTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInv.strStockUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								ISNULL((
										SELECT data
										FROM dbo.split(@InvType, ',')
										WHERE data = 5
										), 0)
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (
							@isBOMOnly
							,1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							@Category = ''
							OR dbo.tblInv.strCategory = @Category
							)
						AND (
							@SubCategory = ''
							OR dbo.tblInv.strSubCategory = @SubCategory
							)
						AND (
							@SubCategoryGroup = ''
							OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup
							)
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final
				AS (
					SELECT *
					FROM (
						SELECT Data_Inv.*
							,#TempCustVendEmp.strCustVendEmp AS CustVendID
							,TotalRows = (
								SELECT Count(*)
								FROM Data_Inv
								)
							,ISNULL([dbo].[fnGetInvSellingPrice](Data_Inv.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
						FROM Data_Inv
						INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Inv.PartNumber
						LEFT JOIN #TempCustVendEmp(NOLOCK) ON #TempCustVendEmp.strPartNumber = Data_Inv.PartNumber						
						LEFT OUTER JOIN tblInvImg ON Data_Inv.PartNumber = tblInvImg.strPartNumber
							AND tblInvImg.bitDefaultImage = 1
						) AS TEMP
					WHERE ISNULL(TEMP.CustVendID, '') = (
							CASE 
								WHEN @FilterType IN (
										1
										,2
										,3
										)
									THEN CASE 
											WHEN @VendName <> ''
												THEN @VendName
											ELSE ISNULL(TEMP.CustVendID, '')
											END
								ELSE ISNULL(TEMP.CustVendID, '')
								END
							)
					)
					,Data_Final1
				AS (
					SELECT *
						,(
							CASE 
								WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
									THEN (CEILING(TotalRows / @PageSize) + 1)
								ELSE CEILING(TotalRows / @PageSize)
								END
							) AS TotalPages
					FROM (
						SELECT ROW_NUMBER() OVER (
								ORDER BY Data_Final.PartNumber
								) AS RowNumber
							,Data_Final.*
						FROM Data_Final
						) AS Temp2
					)
				SELECT Data_Final1.*
				FROM Data_Final1
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
			END
			ELSE
			BEGIN
				BEGIN
					SET @LocationName = (
							SELECT TOP 1 strLocName
							FROM tblInvLoc
							WHERE dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@LocationName))
								OR dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName))
							)
				END;

				WITH Data_Inv
				AS (
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist
						--,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvPrice.strUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInvUOMs.strPartNumber
						,dbo.tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.decConversionFactor
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
						AND dbo.tblInvUOMS.bitInactive = 0
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							OR @InvType = NULL
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist
						--AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND dbo.tblInvPrice.bitStockUnit IN (
							1
							,@IsStockUnit
							)
						AND (
							(
								dbo.tblInvUOMs.strUseFor = 'Purchases'
								OR dbo.tblInvUOMs.strUseFor = 'Both'
								)
							OR dbo.tblInvPrice.bitStockUnit = 1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							)
						--AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_INV1
				AS (
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvUOMs.strFromUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInvUOMs.strPartNumber
						,dbo.tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.decConversionFactor
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMS.bitInactive = 0
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							OR @InvType = NULL
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND ((dbo.tblInvUOMs.strUseFor = 'Purchases'))
						AND dbo.tblInvPrice.bitStockUnit = 1
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final
				AS (
					SELECT DISTINCT Data_Inv.PartNumber
						,Data_Inv.[Description]
						,Data_Inv.[Type]
						,Data_Inv.Category
						,Data_Inv.SubCategory
						,Data_Inv.SubCategoryGroup
						,Data_Inv.IsUseBOM
						,Data_Inv.IsInactive
						,Data_Inv.Field1
						,Data_Inv.Field2
						,Data_Inv.Field3
						,Data_Inv.Field4
						,Data_Inv.Field5
						,Data_Inv.Field6
						,Data_Inv.BarCode
						,Data_Inv.IsInvSerialType
						,Data_Inv.BarCode2
						,Data_Inv.Pricelist --,Data_Inv.Selling
						,Data_Inv.IsTrackExpiryDate
						,Data_Inv.LastPPUnit
						,Data_Inv.DecimalQuantity
						,Data_Inv.StockUnit
						,Data_Inv.BuyToStock
						,Data_Inv.ExtendedDesc
						,dbo.tblInvExt.decAvail AS SumAvail
						,dbo.tblInvExt.decAlloc AS SumAlloc
						,dbo.tblInvExt.decManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInvExt.decOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decOnHand
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decOnHand / decConversionFactor
												ELSE dbo.tblInvExt.decOnHand * decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInvExt.decValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decValue
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decValue / decConversionFactor
												ELSE dbo.tblInvExt.decValue * decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInvExt.decOnOrder AS SumOnOrder
						,MovingAvgCost = CASE tblInvExt.decOnHand
							WHEN 0
								THEN 0
							ELSE (tblInvExt.decValue / tblInvExt.decOnHand)
							END
					FROM Data_Inv
					INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_Inv.PartNumber = dbo.tblInvExt.strPartNumber
					WHERE (
							dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
							AND dbo.tblInvExt.bitInActive = 0
							)
					
					UNION ALL
					
					SELECT DISTINCT Data_INV1.PartNumber
						,Data_INV1.[Description]
						,Data_INV1.[Type]
						,Data_INV1.Category
						,Data_INV1.SubCategory
						,Data_INV1.SubCategoryGroup
						,Data_INV1.IsUseBOM
						,Data_INV1.IsInactive
						,Data_INV1.Field1
						,Data_INV1.Field2
						,Data_INV1.Field3
						,Data_INV1.Field4
						,Data_INV1.Field5
						,Data_INV1.Field6
						,Data_INV1.BarCode
						,Data_INV1.IsInvSerialType
						,Data_INV1.BarCode2
						,Data_INV1.Pricelist --,Data_INV1.Selling
						,Data_INV1.IsTrackExpiryDate
						,Data_INV1.LastPPUnit
						,Data_INV1.DecimalQuantity
						,Data_INV1.StockUnit
						,Data_INV1.BuyToStock
						,Data_INV1.ExtendedDesc
						,dbo.tblInvExt.decAvail AS SumAvail
						,dbo.tblInvExt.decAlloc AS SumAlloc
						,dbo.tblInvExt.decManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInvExt.decOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_INV1.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decOnHand
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decOnHand / decConversionFactor
												ELSE dbo.tblInvExt.decOnHand * decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInvExt.decValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_INV1.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decValue
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decValue / decConversionFactor
												ELSE dbo.tblInvExt.decValue * decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInvExt.decOnOrder AS SumOnOrder
						,MovingAvgCost = CASE tblInvExt.decOnHand
							WHEN 0
								THEN 0
							ELSE (tblInvExt.decValue / tblInvExt.decOnHand)
							END
					FROM Data_INV1
					INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_INV1.PartNumber = dbo.tblInvExt.strPartNumber
					WHERE (
							dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
							AND dbo.tblInvExt.bitInActive = 0
							)
					
					UNION ALL
					
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,CAST(0 AS DECIMAL(18, 2)) AS Selling
						,CAST(0 AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblinv.strStockUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,dbo.tblInv.decSumOnHand AS SumOnHand
						,dbo.tblInv.decSumValue AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								ISNULL((
										SELECT data
										FROM dbo.split(@InvType, ',')
										WHERE data = 5
										), 0)
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final1
				AS (
					SELECT *
					FROM (
						SELECT Data_Final.*
							,TotalRows = (
								SELECT Count(*)
								FROM Data_Final
								)							
							,#TempCustVendEmp.strCustVendEmp AS CustVendID
							,ISNULL([dbo].[fnGetInvSellingPrice](Data_Final.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
						FROM Data_Final
						INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Final.PartNumber
						LEFT JOIN #TempCustVendEmp(NOLOCK) ON #TempCustVendEmp.strPartNumber = Data_Final.PartNumber						
						LEFT OUTER JOIN tblInvImg ON Data_Final.PartNumber = tblInvImg.strPartNumber
							AND tblInvImg.bitDefaultImage = 1
						) AS TEMP
					WHERE ISNULL(TEMP.CustVendID, '') = (
							CASE 
								WHEN @FilterType IN (
										1
										,2
										,3
										)
									THEN CASE 
											WHEN @VendName <> ''
												THEN @VendName
											ELSE ISNULL(TEMP.CustVendID, '')
											END
								ELSE ISNULL(TEMP.CustVendID, '')
								END
							)
					)
					,Data_Final3
				AS (
					SELECT *
						,(
							CASE 
								WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
									THEN (CEILING(TotalRows / @PageSize) + 1)
								ELSE CEILING(TotalRows / @PageSize)
								END
							) AS TotalPages
					FROM (
						SELECT ROW_NUMBER() OVER (
								ORDER BY Data_Final1.PartNumber
								) AS RowNumber
							,Data_Final1.*
						FROM Data_Final1
						) AS Temp2
					)
				SELECT Data_Final3.*
				FROM Data_Final3
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
				ORDER BY RowNumber
			END
		END
		ELSE
		BEGIN
			IF ISNULL(@LocationName, '') = ''
			BEGIN
					;

				WITH Data_Inv
				AS (
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInv.decSumOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
											THEN dbo.tblInv.decSumOnHand
										ELSE CASE dbo.tblInvUOMs.strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor
												ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInv.decSumValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
											THEN dbo.tblInv.decSumValue
										ELSE CASE dbo.tblInvUOMs.strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor
												ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvPrice.strUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
					FROM dbo.tblInv(NOLOCK)
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
						AND dbo.tblInvUOMS.bitInactive = 0
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (
							@isBOMOnly
							,1
							)
						AND dbo.tblInvPrice.bitStockUnit IN (
							1
							,@IsStockUnit
							)
						AND (
							(
								dbo.tblInvUOMs.strUseFor = 'Purchases'
								OR dbo.tblInvUOMs.strUseFor = 'Both'
								)
							OR dbo.tblInvPrice.bitStockUnit = 1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					
					UNION ALL
					
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,dbo.tblInv.decSumOnHand AS SumOnHand
						,dbo.tblInv.decSumValue AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsTrackExpiryDate
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,CAST(0 AS DECIMAL(18, 2)) AS Selling
						,CAST(0 AS BIT) AS bitTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInv.strStockUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								ISNULL((
										SELECT data
										FROM dbo.split(@InvType, ',')
										WHERE data = 5
										), 0)
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (
							@isBOMOnly
							,1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							@Category = ''
							OR dbo.tblInv.strCategory = @Category
							)
						AND (
							@SubCategory = ''
							OR dbo.tblInv.strSubCategory = @SubCategory
							)
						AND (
							@SubCategoryGroup = ''
							OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup
							)
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final
				AS (
					SELECT *
					FROM (
						SELECT Data_Inv.*						
							,#TempCustVendEmp.strCustVendEmp AS CustVendID
							,TotalRows = (
								SELECT Count(*)
								FROM Data_Inv
								)
							,ISNULL([dbo].[fnGetInvSellingPrice](Data_Inv.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
						FROM Data_Inv
						INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Inv.PartNumber						
						LEFT JOIN #TempCustVendEmp(NOLOCK) ON #TempCustVendEmp.strPartNumber = Data_Inv.PartNumber						
						LEFT OUTER JOIN tblInvImg ON Data_Inv.PartNumber = tblInvImg.strPartNumber
							AND tblInvImg.bitDefaultImage = 1
						) AS TEMP
					WHERE ISNULL(TEMP.CustVendID, '') = (
							CASE 
								WHEN @FilterType IN (
										1
										,2
										,3
										)
									THEN CASE 
											WHEN @VendName <> ''
												THEN @VendName
											ELSE ISNULL(TEMP.CustVendID, '')
											END
								ELSE ISNULL(TEMP.CustVendID, '')
								END
							)
					)
					,Data_Final1
				AS (
					SELECT *
						,(
							CASE 
								WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
									THEN (CEILING(TotalRows / @PageSize) + 1)
								ELSE CEILING(TotalRows / @PageSize)
								END
							) AS TotalPages
					FROM (
						SELECT ROW_NUMBER() OVER (
								ORDER BY Data_Final.PartNumber
								) AS RowNumber
							,Data_Final.*
						FROM Data_Final
						) AS Temp2
					)
				SELECT Data_Final1.*
				FROM Data_Final1
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
			END
			ELSE
			BEGIN
				BEGIN
					SET @LocationName = (
							SELECT TOP 1 strLocName
							FROM tblInvLoc
							WHERE dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@LocationName))
								OR dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName))
							)
				END;

				WITH Data_Inv
				AS (
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvPrice.strUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInvUOMs.strPartNumber
						,dbo.tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.decConversionFactor
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
						AND dbo.tblInvUOMS.bitInactive = 0
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							OR @InvType = NULL
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND dbo.tblInvPrice.bitStockUnit IN (
							1
							,@IsStockUnit
							)
						AND (
							(
								dbo.tblInvUOMs.strUseFor = 'Purchases'
								OR dbo.tblInvUOMs.strUseFor = 'Both'
								)
							OR dbo.tblInvPrice.bitStockUnit = 1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_INV1
				AS (
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvUOMs.strFromUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInvUOMs.strPartNumber
						,dbo.tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.decConversionFactor
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMS.bitInactive = 0
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							OR @InvType = NULL
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND ((dbo.tblInvUOMs.strUseFor = 'Purchases'))
						AND dbo.tblInvPrice.bitStockUnit = 1
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final
				AS (
					SELECT DISTINCT Data_Inv.PartNumber
						,Data_Inv.[Description]
						,Data_Inv.[Type]
						,Data_Inv.Category
						,Data_Inv.SubCategory
						,Data_Inv.SubCategoryGroup
						,Data_Inv.IsUseBOM
						,Data_Inv.IsInactive
						,Data_Inv.Field1
						,Data_Inv.Field2
						,Data_Inv.Field3
						,Data_Inv.Field4
						,Data_Inv.Field5
						,Data_Inv.Field6
						,Data_Inv.BarCode
						,Data_Inv.IsInvSerialType
						,Data_Inv.BarCode2
						,Data_Inv.Pricelist --,Data_Inv.Selling
						,Data_Inv.IsTrackExpiryDate
						,Data_Inv.LastPPUnit
						,Data_Inv.DecimalQuantity
						,Data_Inv.StockUnit
						,Data_Inv.BuyToStock
						,Data_Inv.ExtendedDesc
						,dbo.tblInvExt.decAvail AS SumAvail
						,dbo.tblInvExt.decAlloc AS SumAlloc
						,dbo.tblInvExt.decManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInvExt.decOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decOnHand
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decOnHand / decConversionFactor
												ELSE dbo.tblInvExt.decOnHand * decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInvExt.decValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decValue
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decValue / decConversionFactor
												ELSE dbo.tblInvExt.decValue * decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInvExt.decOnOrder AS SumOnOrder
						,MovingAvgCost = CASE tblInvExt.decOnHand
							WHEN 0
								THEN 0
							ELSE (tblInvExt.decValue / tblInvExt.decOnHand)
							END
					FROM Data_Inv
					INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_Inv.PartNumber = dbo.tblInvExt.strPartNumber
					WHERE (
							dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
							AND dbo.tblInvExt.bitInActive = 0
							)
					
					UNION ALL
					
					SELECT DISTINCT Data_INV1.PartNumber
						,Data_INV1.[Description]
						,Data_INV1.[Type]
						,Data_INV1.Category
						,Data_INV1.SubCategory
						,Data_INV1.SubCategoryGroup
						,Data_INV1.IsUseBOM
						,Data_INV1.IsInactive
						,Data_INV1.Field1
						,Data_INV1.Field2
						,Data_INV1.Field3
						,Data_INV1.Field4
						,Data_INV1.Field5
						,Data_INV1.Field6
						,Data_INV1.BarCode
						,Data_INV1.IsInvSerialType
						,Data_INV1.BarCode2
						,Data_INV1.Pricelist --,Data_INV1.Selling
						,Data_INV1.IsTrackExpiryDate
						,Data_INV1.LastPPUnit
						,Data_INV1.DecimalQuantity
						,Data_INV1.StockUnit
						,Data_INV1.BuyToStock
						,Data_INV1.ExtendedDesc
						,dbo.tblInvExt.decAvail AS SumAvail
						,dbo.tblInvExt.decAlloc AS SumAlloc
						,dbo.tblInvExt.decManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInvExt.decOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_INV1.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decOnHand
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decOnHand / decConversionFactor
												ELSE dbo.tblInvExt.decOnHand * decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInvExt.decValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_INV1.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decValue
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decValue / decConversionFactor
												ELSE dbo.tblInvExt.decValue * decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInvExt.decOnOrder AS SumOnOrder
						,MovingAvgCost = CASE tblInvExt.decOnHand
							WHEN 0
								THEN 0
							ELSE (tblInvExt.decValue / tblInvExt.decOnHand)
							END
					FROM Data_INV1
					INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_INV1.PartNumber = dbo.tblInvExt.strPartNumber
					WHERE (
							dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
							AND dbo.tblInvExt.bitInActive = 0
							)
					
					UNION ALL
					
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,CAST(0 AS DECIMAL(18, 2)) AS Selling
						,CAST(0 AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblinv.strStockUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,dbo.tblInv.decSumOnHand AS SumOnHand
						,dbo.tblInv.decSumValue AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								ISNULL((
										SELECT data
										FROM dbo.split(@InvType, ',')
										WHERE data = 5
										), 0)
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) -- AND (
						--  dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						--  OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						--  )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final1
				AS (
					SELECT *
					FROM (
						SELECT Data_Final.*
							,TotalRows = (
								SELECT Count(*)
								FROM Data_Final
								)							
							,#TempCustVendEmp.strCustVendEmp AS CustVendID
							,ISNULL([dbo].[fnGetInvSellingPrice](Data_Final.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
						FROM Data_Final
						INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Final.PartNumber						
						LEFT JOIN #TempCustVendEmp(NOLOCK) ON #TempCustVendEmp.strPartNumber = Data_Final.PartNumber						
						LEFT OUTER JOIN tblInvImg ON Data_Final.PartNumber = tblInvImg.strPartNumber
							AND tblInvImg.bitDefaultImage = 1
						) AS TEMP
					WHERE ISNULL(TEMP.CustVendID, '') = (
							CASE 
								WHEN @FilterType IN (
										1
										,2
										,3
										)
									THEN CASE 
											WHEN @VendName <> ''
												THEN @VendName
											ELSE ISNULL(TEMP.CustVendID, '')
											END
								ELSE ISNULL(TEMP.CustVendID, '')
								END
							)
					)
					,Data_Final3
				AS (
					SELECT *
						,(
							CASE 
								WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
									THEN (CEILING(TotalRows / @PageSize) + 1)
								ELSE CEILING(TotalRows / @PageSize)
								END
							) AS TotalPages
					FROM (
						SELECT ROW_NUMBER() OVER (
								ORDER BY Data_Final1.PartNumber
								) AS RowNumber
							,Data_Final1.*
						FROM Data_Final1
						) AS Temp2
					)
				SELECT Data_Final3.*
				FROM Data_Final3
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
				ORDER BY RowNumber
			END
		END

	IF (@TransactionType = 1) --Sales
		IF (@IsSortByDesc = 1)
		BEGIN
			IF ISNULL(@LocationName, '') = ''
			BEGIN
					;

				WITH Data_Inv
				AS (
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInv.decSumOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
											THEN dbo.tblInv.decSumOnHand
										ELSE CASE dbo.tblInvUOMs.strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor
												ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInv.decSumValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
											THEN dbo.tblInv.decSumValue
										ELSE CASE dbo.tblInvUOMs.strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor
												ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvPrice.strUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
					FROM dbo.tblInv(NOLOCK)
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
						AND dbo.tblInvUOMS.bitInactive = 0
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (
							@isBOMOnly
							,1
							)
						AND dbo.tblInvPrice.bitStockUnit IN (
							1
							,@IsStockUnit
							)
						AND (
							(
								dbo.tblInvUOMs.strUseFor = 'Sales'
								OR dbo.tblInvUOMs.strUseFor = 'Both'
								)
							OR dbo.tblInvPrice.bitStockUnit = 1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --	AND (
						--		dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						--		OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						--		)
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					
					UNION ALL
					
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,dbo.tblInv.decSumOnHand AS SumOnHand
						,dbo.tblInv.decSumValue AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsTrackExpiryDate
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,CAST(0 AS DECIMAL(18, 2)) AS Selling
						,CAST(0 AS BIT) AS bitTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInv.strStockUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								ISNULL((
										SELECT data
										FROM dbo.split(@InvType, ',')
										WHERE data = 5
										), 0)
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (
							@isBOMOnly
							,1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) -- AND (
						--  dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						--  OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						--  )
						AND (
							@Category = ''
							OR dbo.tblInv.strCategory = @Category
							)
						AND (
							@SubCategory = ''
							OR dbo.tblInv.strSubCategory = @SubCategory
							)
						AND (
							@SubCategoryGroup = ''
							OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup
							)
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final
				AS (
					SELECT *
					FROM (
						SELECT Data_Inv.*							
							,#TempCustVendEmp.strCustVendEmp AS CustVendID
							,TotalRows = (
								SELECT Count(*)
								FROM Data_Inv
								)
							,ISNULL([dbo].[fnGetInvSellingPrice](Data_Inv.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
						FROM Data_Inv
						INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Inv.PartNumber						
						LEFT JOIN #TempCustVendEmp(NOLOCK) ON #TempCustVendEmp.strPartNumber = Data_Inv.PartNumber						
						LEFT OUTER JOIN tblInvImg ON Data_Inv.PartNumber = tblInvImg.strPartNumber
							AND tblInvImg.bitDefaultImage = 1
						) AS TEMP
					WHERE ISNULL(TEMP.CustVendID, '') = (
							CASE 
								WHEN @FilterType IN (
										1
										,2
										,3
										)
									THEN CASE 
											WHEN @VendName <> ''
												THEN @VendName
											ELSE ISNULL(TEMP.CustVendID, '')
											END
								ELSE ISNULL(TEMP.CustVendID, '')
								END
							)
					)
					,Data_Final1
				AS (
					SELECT *
						,(
							CASE 
								WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
									THEN (CEILING(TotalRows / @PageSize) + 1)
								ELSE CEILING(TotalRows / @PageSize)
								END
							) AS TotalPages
					FROM (
						SELECT ROW_NUMBER() OVER (
								ORDER BY Data_Final.PartNumber
								) AS RowNumber
							,Data_Final.*
						FROM Data_Final
						) AS Temp2
					)
				SELECT Data_Final1.*
				FROM Data_Final1
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
			END
			ELSE
			BEGIN
				BEGIN
					SET @LocationName = (
							SELECT TOP 1 strLocName
							FROM tblInvLoc
							WHERE dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@LocationName))
								OR dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName))
							)
				END;

				WITH Data_Inv
				AS (
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvPrice.strUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInvUOMs.strPartNumber
						,dbo.tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.decConversionFactor
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
						AND dbo.tblInvUOMS.bitInactive = 0
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							OR @InvType = NULL
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND dbo.tblInvPrice.bitStockUnit IN (
							1
							,@IsStockUnit
							)
						AND (
							(
								dbo.tblInvUOMs.strUseFor = 'Sales'
								OR dbo.tblInvUOMs.strUseFor = 'Both'
								)
							OR dbo.tblInvPrice.bitStockUnit = 1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) -- AND (
						--  dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						--  OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						--  )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_INV1
				AS (
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvUOMs.strFromUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInvUOMs.strPartNumber
						,dbo.tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.decConversionFactor
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMS.bitInactive = 0
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							OR @InvType = NULL
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND ((dbo.tblInvUOMs.strUseFor = 'Sales'))
						AND dbo.tblInvPrice.bitStockUnit = 1
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) -- AND (
						--  dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						--  OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						--  )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final
				AS (
					SELECT DISTINCT Data_Inv.PartNumber
						,Data_Inv.[Description]
						,Data_Inv.[Type]
						,Data_Inv.Category
						,Data_Inv.SubCategory
						,Data_Inv.SubCategoryGroup
						,Data_Inv.IsUseBOM
						,Data_Inv.IsInactive
						,Data_Inv.Field1
						,Data_Inv.Field2
						,Data_Inv.Field3
						,Data_Inv.Field4
						,Data_Inv.Field5
						,Data_Inv.Field6
						,Data_Inv.BarCode
						,Data_Inv.IsInvSerialType
						,Data_Inv.BarCode2
						,Data_Inv.Pricelist --,Data_Inv.Selling
						,Data_Inv.IsTrackExpiryDate
						,Data_Inv.LastPPUnit
						,Data_Inv.DecimalQuantity
						,Data_Inv.StockUnit
						,Data_Inv.BuyToStock
						,Data_Inv.ExtendedDesc
						,dbo.tblInvExt.decAvail AS SumAvail
						,dbo.tblInvExt.decAlloc AS SumAlloc
						,dbo.tblInvExt.decManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInvExt.decOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decOnHand
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decOnHand / decConversionFactor
												ELSE dbo.tblInvExt.decOnHand * decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInvExt.decValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decValue
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decValue / decConversionFactor
												ELSE dbo.tblInvExt.decValue * decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInvExt.decOnOrder AS SumOnOrder
						,MovingAvgCost = CASE tblInvExt.decOnHand
							WHEN 0
								THEN 0
							ELSE (tblInvExt.decValue / tblInvExt.decOnHand)
							END
					FROM Data_Inv
					INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_Inv.PartNumber = dbo.tblInvExt.strPartNumber
					WHERE (
							dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
							AND dbo.tblInvExt.bitInActive = 0
							)
					
					UNION ALL
					
					SELECT DISTINCT Data_INV1.PartNumber
						,Data_INV1.[Description]
						,Data_INV1.[Type]
						,Data_INV1.Category
						,Data_INV1.SubCategory
						,Data_INV1.SubCategoryGroup
						,Data_INV1.IsUseBOM
						,Data_INV1.IsInactive
						,Data_INV1.Field1
						,Data_INV1.Field2
						,Data_INV1.Field3
						,Data_INV1.Field4
						,Data_INV1.Field5
						,Data_INV1.Field6
						,Data_INV1.BarCode
						,Data_INV1.IsInvSerialType
						,Data_INV1.BarCode2
						,Data_INV1.Pricelist --,Data_INV1.Selling
						,Data_INV1.IsTrackExpiryDate
						,Data_INV1.LastPPUnit
						,Data_INV1.DecimalQuantity
						,Data_INV1.StockUnit
						,Data_INV1.BuyToStock
						,Data_INV1.ExtendedDesc
						,dbo.tblInvExt.decAvail AS SumAvail
						,dbo.tblInvExt.decAlloc AS SumAlloc
						,dbo.tblInvExt.decManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInvExt.decOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_INV1.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decOnHand
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decOnHand / decConversionFactor
												ELSE dbo.tblInvExt.decOnHand * decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInvExt.decValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_INV1.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decValue
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decValue / decConversionFactor
												ELSE dbo.tblInvExt.decValue * decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInvExt.decOnOrder AS SumOnOrder
						,MovingAvgCost = CASE tblInvExt.decOnHand
							WHEN 0
								THEN 0
							ELSE (tblInvExt.decValue / tblInvExt.decOnHand)
							END
					FROM Data_INV1
					INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_INV1.PartNumber = dbo.tblInvExt.strPartNumber
					WHERE (
							dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
							AND dbo.tblInvExt.bitInActive = 0
							)
					
					UNION ALL
					
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,CAST(0 AS DECIMAL(18, 2)) AS Selling
						,CAST(0 AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblinv.strStockUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,dbo.tblInv.decSumOnHand AS SumOnHand
						,dbo.tblInv.decSumValue AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								ISNULL((
										SELECT data
										FROM dbo.split(@InvType, ',')
										WHERE data = 5
										), 0)
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) -- AND (
						--  dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						--  OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						--  )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final1
				AS (
					SELECT *
					FROM (
						SELECT Data_Final.*
							,TotalRows = (
								SELECT Count(*)
								FROM Data_Final
								)							
							,#TempCustVendEmp.strCustVendEmp AS CustVendID
							,ISNULL([dbo].[fnGetInvSellingPrice](Data_Final.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
						FROM Data_Final
						INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Final.PartNumber
						LEFT JOIN #TempCustVendEmp(NOLOCK) ON #TempCustVendEmp.strPartNumber = Data_Final.PartNumber						
						LEFT OUTER JOIN tblInvImg ON Data_Final.PartNumber = tblInvImg.strPartNumber
							AND tblInvImg.bitDefaultImage = 1
						) AS TEMP
					WHERE ISNULL(TEMP.CustVendID, '') = (
							CASE 
								WHEN @FilterType IN (
										1
										,2
										,3
										)
									THEN CASE 
											WHEN @VendName <> ''
												THEN @VendName
											ELSE ISNULL(TEMP.CustVendID, '')
											END
								ELSE ISNULL(TEMP.CustVendID, '')
								END
							)
					)
					,Data_Final3
				AS (
					SELECT *
						,(
							CASE 
								WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
									THEN (CEILING(TotalRows / @PageSize) + 1)
								ELSE CEILING(TotalRows / @PageSize)
								END
							) AS TotalPages
					FROM (
						SELECT ROW_NUMBER() OVER (
								ORDER BY Data_Final1.PartNumber
								) AS RowNumber
							,Data_Final1.*
						FROM Data_Final1
						) AS Temp2
					)
				SELECT Data_Final3.*
				FROM Data_Final3
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
				ORDER BY RowNumber
			END
		END
		ELSE
		BEGIN
			IF ISNULL(@LocationName, '') = ''
			BEGIN
					;

				WITH Data_Inv
				AS (
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInv.decSumOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
											THEN dbo.tblInv.decSumOnHand
										ELSE CASE dbo.tblInvUOMs.strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor
												ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInv.decSumValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
											THEN dbo.tblInv.decSumValue
										ELSE CASE dbo.tblInvUOMs.strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor
												ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,tblInvPrice.strPricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvPrice.strUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
					FROM dbo.tblInv(NOLOCK)
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
						AND dbo.tblInvUOMS.bitInactive = 0
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (
							@isBOMOnly
							,1
							)
						AND dbo.tblInvPrice.bitStockUnit IN (
							1
							,@IsStockUnit
							)
						AND (
							(
								dbo.tblInvUOMs.strUseFor = 'Sales'
								OR dbo.tblInvUOMs.strUseFor = 'Both'
								)
							OR dbo.tblInvPrice.bitStockUnit = 1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					
					UNION ALL
					
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,dbo.tblInv.decSumOnHand AS SumOnHand
						,dbo.tblInv.decSumValue AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsTrackExpiryDate
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,CAST(0 AS DECIMAL(18, 2)) AS Selling
						,CAST(0 AS BIT) AS bitTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInv.strStockUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								ISNULL((
										SELECT data
										FROM dbo.split(@InvType, ',')
										WHERE data = 5
										), 0)
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (
							@isBOMOnly
							,1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							@Category = ''
							OR dbo.tblInv.strCategory = @Category
							)
						AND (
							@SubCategory = ''
							OR dbo.tblInv.strSubCategory = @SubCategory
							)
						AND (
							@SubCategoryGroup = ''
							OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup
							)
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final
				AS (
					SELECT *
					FROM (
						SELECT Data_Inv.*
							,#TempCustVendEmp.strCustVendEmp AS CustVendID							
							,TotalRows = (
								SELECT Count(*)
								FROM Data_Inv
								)
							,ISNULL([dbo].[fnGetInvSellingPrice](Data_Inv.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
						FROM Data_Inv
						INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Inv.PartNumber
						LEFT JOIN #TempCustVendEmp(NOLOCK) ON #TempCustVendEmp.strPartNumber = Data_Inv.PartNumber						
						LEFT OUTER JOIN tblInvImg ON Data_Inv.PartNumber = tblInvImg.strPartNumber
							AND tblInvImg.bitDefaultImage = 1
						) AS TEMP
					WHERE ISNULL(TEMP.CustVendID, '') = (
							CASE 
								WHEN @FilterType IN (
										1
										,2
										,3
										)
									THEN CASE 
											WHEN @VendName <> ''
												THEN @VendName
											ELSE ISNULL(TEMP.CustVendID, '')
											END
								ELSE ISNULL(TEMP.CustVendID, '')
								END
							)
					)
					,Data_Final1
				AS (
					SELECT *
						,(
							CASE 
								WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
									THEN (CEILING(TotalRows / @PageSize) + 1)
								ELSE CEILING(TotalRows / @PageSize)
								END
							) AS TotalPages
					FROM (
						SELECT ROW_NUMBER() OVER (
								ORDER BY Data_Final.PartNumber
								) AS RowNumber
							,Data_Final.*
						FROM Data_Final
						) AS Temp2
					)
				SELECT Data_Final1.*
				FROM Data_Final1
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
			END
			ELSE
			BEGIN
				BEGIN
					SET @LocationName = (
							SELECT TOP 1 strLocName
							FROM tblInvLoc
							WHERE dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@LocationName))
								OR dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName))
							)
				END;

				WITH Data_Inv
				AS (
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvPrice.strUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInvUOMs.strPartNumber
						,dbo.tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.decConversionFactor
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
						AND dbo.tblInvUOMS.bitInactive = 0
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							OR @InvType = NULL
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								) -- Existing case when uidPriceBasedID is not null
							OR (@uidPriceBasedID IS NULL)
							)
						AND dbo.tblInvPrice.bitStockUnit IN (
							1
							,@IsStockUnit
							)
						AND (
							(
								dbo.tblInvUOMs.strUseFor = 'Sales'
								OR dbo.tblInvUOMs.strUseFor = 'Both'
								)
							OR dbo.tblInvPrice.bitStockUnit = 1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_INV1
				AS (
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvUOMs.strFromUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInvUOMs.strPartNumber
						,dbo.tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.decConversionFactor
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMS.bitInactive = 0
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							OR @InvType = NULL
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND ((dbo.tblInvUOMs.strUseFor = 'Sales'))
						AND dbo.tblInvPrice.bitStockUnit = 1
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final
				AS (
					SELECT DISTINCT Data_Inv.PartNumber
						,Data_Inv.[Description]
						,Data_Inv.[Type]
						,Data_Inv.Category
						,Data_Inv.SubCategory
						,Data_Inv.SubCategoryGroup
						,Data_Inv.IsUseBOM
						,Data_Inv.IsInactive
						,Data_Inv.Field1
						,Data_Inv.Field2
						,Data_Inv.Field3
						,Data_Inv.Field4
						,Data_Inv.Field5
						,Data_Inv.Field6
						,Data_Inv.BarCode
						,Data_Inv.IsInvSerialType
						,Data_Inv.BarCode2
						,Data_Inv.Pricelist --,Data_Inv.Selling
						,Data_Inv.IsTrackExpiryDate
						,Data_Inv.LastPPUnit
						,Data_Inv.DecimalQuantity
						,Data_Inv.StockUnit
						,Data_Inv.BuyToStock
						,Data_Inv.ExtendedDesc
						,dbo.tblInvExt.decAvail AS SumAvail
						,dbo.tblInvExt.decAlloc AS SumAlloc
						,dbo.tblInvExt.decManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInvExt.decOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decOnHand
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decOnHand / decConversionFactor
												ELSE dbo.tblInvExt.decOnHand * decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInvExt.decValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decValue
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decValue / decConversionFactor
												ELSE dbo.tblInvExt.decValue * decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInvExt.decOnOrder AS SumOnOrder
						,MovingAvgCost = CASE tblInvExt.decOnHand
							WHEN 0
								THEN 0
							ELSE (tblInvExt.decValue / tblInvExt.decOnHand)
							END
					FROM Data_Inv
					INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_Inv.PartNumber = dbo.tblInvExt.strPartNumber
					WHERE (
							dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
							AND dbo.tblInvExt.bitInActive = 0
							)
					
					UNION ALL
					
					SELECT DISTINCT Data_INV1.PartNumber
						,Data_INV1.[Description]
						,Data_INV1.[Type]
						,Data_INV1.Category
						,Data_INV1.SubCategory
						,Data_INV1.SubCategoryGroup
						,Data_INV1.IsUseBOM
						,Data_INV1.IsInactive
						,Data_INV1.Field1
						,Data_INV1.Field2
						,Data_INV1.Field3
						,Data_INV1.Field4
						,Data_INV1.Field5
						,Data_INV1.Field6
						,Data_INV1.BarCode
						,Data_INV1.IsInvSerialType
						,Data_INV1.BarCode2
						,Data_INV1.Pricelist --,Data_INV1.Selling
						,Data_INV1.IsTrackExpiryDate
						,Data_INV1.LastPPUnit
						,Data_INV1.DecimalQuantity
						,Data_INV1.StockUnit
						,Data_INV1.BuyToStock
						,Data_INV1.ExtendedDesc
						,dbo.tblInvExt.decAvail AS SumAvail
						,dbo.tblInvExt.decAlloc AS SumAlloc
						,dbo.tblInvExt.decManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInvExt.decOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_INV1.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decOnHand
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decOnHand / decConversionFactor
												ELSE dbo.tblInvExt.decOnHand * decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInvExt.decValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_INV1.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decValue
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decValue / decConversionFactor
												ELSE dbo.tblInvExt.decValue * decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInvExt.decOnOrder AS SumOnOrder
						,MovingAvgCost = CASE tblInvExt.decOnHand
							WHEN 0
								THEN 0
							ELSE (tblInvExt.decValue / tblInvExt.decOnHand)
							END
					FROM Data_INV1
					INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_INV1.PartNumber = dbo.tblInvExt.strPartNumber
					WHERE (
							dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
							AND dbo.tblInvExt.bitInActive = 0
							)
					
					UNION ALL
					
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,CAST(0 AS DECIMAL(18, 2)) AS Selling
						,CAST(0 AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblinv.strStockUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,dbo.tblInv.decSumOnHand AS SumOnHand
						,dbo.tblInv.decSumValue AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								ISNULL((
										SELECT data
										FROM dbo.split(@InvType, ',')
										WHERE data = 5
										), 0)
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						--  OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						--  )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final1
				AS (
					SELECT *
					FROM (
						SELECT Data_Final.*
							,TotalRows = (
								SELECT Count(*)
								FROM Data_Final
								)
							,#TempCustVendEmp.strCustVendEmp AS CustVendID
							,ISNULL([dbo].[fnGetInvSellingPrice](Data_Final.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
						FROM Data_Final
						INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Final.PartNumber
						LEFT JOIN #TempCustVendEmp(NOLOCK) ON #TempCustVendEmp.strPartNumber = Data_Final.PartNumber						
						LEFT OUTER JOIN tblInvImg ON Data_Final.PartNumber = tblInvImg.strPartNumber
							AND tblInvImg.bitDefaultImage = 1
						) AS TEMP
					WHERE ISNULL(TEMP.CustVendID, '') = (
							CASE 
								WHEN @FilterType IN (
										1
										,2
										,3
										)
									THEN CASE 
											WHEN @VendName <> ''
												THEN @VendName
											ELSE ISNULL(TEMP.CustVendID, '')
											END
								ELSE ISNULL(TEMP.CustVendID, '')
								END
							)
					)
					,Data_Final3
				AS (
					SELECT *
						,(
							CASE 
								WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
									THEN (CEILING(TotalRows / @PageSize) + 1)
								ELSE CEILING(TotalRows / @PageSize)
								END
							) AS TotalPages
					FROM (
						SELECT ROW_NUMBER() OVER (
								ORDER BY Data_Final1.PartNumber
								) AS RowNumber
							,Data_Final1.*
						FROM Data_Final1
						) AS Temp2
					)
				SELECT Data_Final3.*
				FROM Data_Final3
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
				ORDER BY RowNumber
			END
		END

	IF (@TransactionType = 3) -- Other //Old Query
	BEGIN
		IF (@IsSortByDesc = 1)
		BEGIN
			IF ISNULL(@LocationName, '') = ''
			BEGIN
					;

				WITH Data_Inv
				AS (
					SELECT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInv.decSumOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
											THEN dbo.tblInv.decSumOnHand
										ELSE CASE dbo.tblInvUOMs.strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor
												ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInv.decSumValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
											THEN dbo.tblInv.decSumValue
										ELSE CASE dbo.tblInvUOMs.strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor
												ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvPrice.strUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,tblInv.strUnitOfMeasure AS UnitOfMeasure
					FROM dbo.tblInv(NOLOCK)
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
						AND dbo.tblInvUOMS.bitInactive = 0
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (
							@isBOMOnly
							,1
							)
						AND dbo.tblInvPrice.bitStockUnit = 1
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					
					UNION ALL
					
					SELECT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,dbo.tblInv.decSumOnHand AS SumOnHand
						,dbo.tblInv.decSumValue AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsTrackExpiryDate
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,CAST(0 AS DECIMAL(18, 2)) AS Selling
						,CAST(0 AS BIT) AS bitTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInv.strStockUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,tblInv.strUnitOfMeasure AS UnitOfMeasure
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								ISNULL((
										SELECT data
										FROM dbo.split(@InvType, ',')
										WHERE data = 5
										), 0)
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (
							@isBOMOnly
							,1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							@Category = ''
							OR dbo.tblInv.strCategory = @Category
							)
						AND (
							@SubCategory = ''
							OR dbo.tblInv.strSubCategory = @SubCategory
							)
						AND (
							@SubCategoryGroup = ''
							OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup
							)
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final
				AS (
					SELECT *
					FROM (
						SELECT Data_Inv.*							
							,#TempCustVendEmp.strCustVendEmp AS CustVendID
							,TotalRows = (
								SELECT Count(*)
								FROM Data_Inv
								)
							,ISNULL([dbo].[fnGetInvSellingPrice](Data_Inv.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
						FROM Data_Inv
						INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Inv.PartNumber
						LEFT JOIN #TempCustVendEmp(NOLOCK) ON #TempCustVendEmp.strPartNumber = Data_Inv.PartNumber						
						LEFT OUTER JOIN tblInvImg ON Data_Inv.PartNumber = tblInvImg.strPartNumber
							AND tblInvImg.bitDefaultImage = 1
						) AS TEMP
					WHERE ISNULL(TEMP.CustVendID, '') = (
							CASE 
								WHEN @FilterType IN (
										1
										,2
										,3
										)
									THEN CASE 
											WHEN @VendName <> ''
												THEN @VendName
											ELSE ISNULL(TEMP.CustVendID, '')
											END
								ELSE ISNULL(TEMP.CustVendID, '')
								END
							)
					)
					,Data_Final1
				AS (
					SELECT *
						,(
							CASE 
								WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
									THEN (CEILING(TotalRows / @PageSize) + 1)
								ELSE CEILING(TotalRows / @PageSize)
								END
							) AS TotalPages
					FROM (
						SELECT ROW_NUMBER() OVER (
								ORDER BY Data_Final.PartNumber
								) AS RowNumber
							,Data_Final.*
						FROM Data_Final
						) AS Temp2
					)
				SELECT Data_Final1.*
				FROM Data_Final1
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
			END
			ELSE
			BEGIN
				BEGIN
					SET @LocationName = (
							SELECT TOP 1 strLocName
							FROM tblInvLoc
							WHERE dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@LocationName))
								OR dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName))
							)
				END;

				WITH Data_Inv
				AS (
					SELECT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvPrice.strUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInvUOMs.strPartNumber
						,dbo.tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.decConversionFactor
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,tblInv.strUnitOfMeasure AS UnitOfMeasure
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
						AND dbo.tblInvUOMS.bitInactive = 0
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							OR @InvType = NULL
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND dbo.tblInvPrice.bitStockUnit = 1
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) -- AND (
						--  dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						--  OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						--  )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final
				AS (
					SELECT Data_Inv.PartNumber
						,Data_Inv.[Description]
						,Data_Inv.[Type]
						,Data_Inv.Category
						,Data_Inv.SubCategory
						,Data_Inv.SubCategoryGroup
						,Data_Inv.IsUseBOM
						,Data_Inv.IsInactive
						,Data_Inv.Field1
						,Data_Inv.Field2
						,Data_Inv.Field3
						,Data_Inv.Field4
						,Data_Inv.Field5
						,Data_Inv.Field6
						,Data_Inv.BarCode
						,Data_Inv.IsInvSerialType
						,Data_Inv.BarCode2
						,Data_Inv.Pricelist --,Data_Inv.Selling
						,Data_Inv.IsTrackExpiryDate
						,Data_Inv.LastPPUnit
						,Data_Inv.DecimalQuantity
						,Data_Inv.StockUnit
						,Data_Inv.BuyToStock
						,Data_Inv.ExtendedDesc
						,dbo.tblInvExt.decAvail AS SumAvail
						,dbo.tblInvExt.decAlloc AS SumAlloc
						,dbo.tblInvExt.decManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInvExt.decOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decOnHand
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decOnHand / decConversionFactor
												ELSE dbo.tblInvExt.decOnHand * decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInvExt.decValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decValue
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decValue / decConversionFactor
												ELSE dbo.tblInvExt.decValue * decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInvExt.decOnOrder AS SumOnOrder
						,MovingAvgCost = CASE tblInvExt.decOnHand
							WHEN 0
								THEN 0
							ELSE (tblInvExt.decValue / tblInvExt.decOnHand)
							END
						,Data_Inv.UnitOfMeasure AS UnitOfMeasure
					FROM Data_Inv
					INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_Inv.PartNumber = dbo.tblInvExt.strPartNumber
					WHERE (
							dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
							AND dbo.tblInvExt.bitInActive = 0
							)
					
					UNION ALL
					
					SELECT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,CAST(0 AS DECIMAL(18, 2)) AS Selling
						,CAST(0 AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblinv.strStockUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,dbo.tblInv.decSumOnHand AS SumOnHand
						,dbo.tblInv.decSumValue AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strUnitOfMeasure AS UnitOfMeasure
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								ISNULL((
										SELECT data
										FROM dbo.split(@InvType, ',')
										WHERE data = 5
										), 0)
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) -- AND (
						--  dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						--  OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						--  )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final1
				AS (
					SELECT *
					FROM (
						SELECT Data_Final.*
							,TotalRows = (
								SELECT Count(*)
								FROM Data_Final
								)							
							,#TempCustVendEmp.strCustVendEmp AS CustVendID
							,ISNULL([dbo].[fnGetInvSellingPrice](Data_Final.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
						FROM Data_Final
						INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Final.PartNumber						
						LEFT JOIN #TempCustVendEmp(NOLOCK) ON #TempCustVendEmp.strPartNumber = Data_Final.PartNumber						
						LEFT OUTER JOIN tblInvImg ON Data_Final.PartNumber = tblInvImg.strPartNumber
							AND tblInvImg.bitDefaultImage = 1
						) AS TEMP
					WHERE ISNULL(TEMP.CustVendID, '') = (
							CASE 
								WHEN @FilterType IN (
										1
										,2
										,3
										)
									THEN CASE 
											WHEN @VendName <> ''
												THEN @VendName
											ELSE ISNULL(TEMP.CustVendID, '')
											END
								ELSE ISNULL(TEMP.CustVendID, '')
								END
							)
					)
					,Data_Final3
				AS (
					SELECT *
						,(
							CASE 
								WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
									THEN (CEILING(TotalRows / @PageSize) + 1)
								ELSE CEILING(TotalRows / @PageSize)
								END
							) AS TotalPages
					FROM (
						SELECT ROW_NUMBER() OVER (
								ORDER BY Data_Final1.PartNumber
								) AS RowNumber
							,Data_Final1.*
						FROM Data_Final1
						) AS Temp2
					)
				SELECT Data_Final3.*
				FROM Data_Final3
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
				ORDER BY RowNumber
			END
		END
		ELSE
		BEGIN
			IF ISNULL(@LocationName, '') = ''
			BEGIN
					;

				WITH Data_Inv
				AS (
					SELECT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInv.decSumOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
											THEN dbo.tblInv.decSumOnHand
										ELSE CASE dbo.tblInvUOMs.strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor
												ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInv.decSumValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
											THEN dbo.tblInv.decSumValue
										ELSE CASE dbo.tblInvUOMs.strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor
												ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvPrice.strUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,tblInv.strUnitOfMeasure AS UnitOfMeasure
					FROM dbo.tblInv(NOLOCK)
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
						AND dbo.tblInvUOMS.bitInactive = 0
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (
							@isBOMOnly
							,1
							)
						AND dbo.tblInvPrice.bitStockUnit = 1
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) -- AND (
						--  dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						--  OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						--  )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					
					UNION ALL
					
					SELECT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,dbo.tblInv.decSumOnHand AS SumOnHand
						,dbo.tblInv.decSumValue AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsTrackExpiryDate
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,CAST(0 AS DECIMAL(18, 2)) AS Selling
						,CAST(0 AS BIT) AS bitTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInv.strStockUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,tblInv.strUnitOfMeasure AS UnitOfMeasure
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								ISNULL((
										SELECT data
										FROM dbo.split(@InvType, ',')
										WHERE data = 5
										), 0)
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (
							@isBOMOnly
							,1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) -- AND (
						--  dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						--  OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						--  )
						AND (
							@Category = ''
							OR dbo.tblInv.strCategory = @Category
							)
						AND (
							@SubCategory = ''
							OR dbo.tblInv.strSubCategory = @SubCategory
							)
						AND (
							@SubCategoryGroup = ''
							OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup
							)
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final
				AS (
					SELECT *
					FROM (
						SELECT Data_Inv.*							
							,#TempCustVendEmp.strCustVendEmp AS CustVendID
							,TotalRows = (
								SELECT Count(*)
								FROM Data_Inv
								)
							,ISNULL([dbo].[fnGetInvSellingPrice](Data_Inv.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
						FROM Data_Inv
						INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Inv.PartNumber						
						LEFT JOIN #TempCustVendEmp(NOLOCK) ON #TempCustVendEmp.strPartNumber = Data_Inv.PartNumber						
						LEFT OUTER JOIN tblInvImg ON Data_Inv.PartNumber = tblInvImg.strPartNumber
							AND tblInvImg.bitDefaultImage = 1
						) AS TEMP
					WHERE ISNULL(TEMP.CustVendID, '') = (
							CASE 
								WHEN @FilterType IN (
										1
										,2
										,3
										)
									THEN CASE 
											WHEN @VendName <> ''
												THEN @VendName
											ELSE ISNULL(TEMP.CustVendID, '')
											END
								ELSE ISNULL(TEMP.CustVendID, '')
								END
							)
					)
					,Data_Final1
				AS (
					SELECT *
						,(
							CASE 
								WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
									THEN (CEILING(TotalRows / @PageSize) + 1)
								ELSE CEILING(TotalRows / @PageSize)
								END
							) AS TotalPages
					FROM (
						SELECT ROW_NUMBER() OVER (
								ORDER BY Data_Final.PartNumber
								) AS RowNumber
							,Data_Final.*
						FROM Data_Final
						) AS Temp2
					)
				SELECT Data_Final1.*
				FROM Data_Final1
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
			END
			ELSE
			BEGIN
				BEGIN
					SET @LocationName = (
							SELECT TOP 1 strLocName
							FROM tblInvLoc
							WHERE dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@LocationName))
								OR dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName))
							)
				END;

				WITH Data_Inv
				AS (
					SELECT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvPrice.strUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInvUOMs.strPartNumber
						,dbo.tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.decConversionFactor
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strUnitOfMeasure AS UnitOfMeasure
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
						AND dbo.tblInvUOMS.bitInactive = 0
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							OR @InvType = NULL
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (
							@isBOMOnly
							,1
							)
						AND dbo.tblInvPrice.bitStockUnit = 1
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final
				AS (
					SELECT Data_Inv.PartNumber
						,Data_Inv.[Description]
						,Data_Inv.[Type]
						,Data_Inv.Category
						,Data_Inv.SubCategory
						,Data_Inv.SubCategoryGroup
						,Data_Inv.IsUseBOM
						,Data_Inv.IsInactive
						,Data_Inv.Field1
						,Data_Inv.Field2
						,Data_Inv.Field3
						,Data_Inv.Field4
						,Data_Inv.Field5
						,Data_Inv.Field6
						,Data_Inv.BarCode
						,Data_Inv.IsInvSerialType
						,Data_Inv.BarCode2
						,Data_Inv.Pricelist --,Data_Inv.Selling
						,Data_Inv.IsTrackExpiryDate
						,Data_Inv.LastPPUnit
						,Data_Inv.DecimalQuantity
						,Data_Inv.StockUnit
						,Data_Inv.BuyToStock
						,Data_Inv.ExtendedDesc
						,dbo.tblInvExt.decAvail AS SumAvail
						,dbo.tblInvExt.decAlloc AS SumAlloc
						,dbo.tblInvExt.decManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInvExt.decOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decOnHand
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decOnHand / decConversionFactor
												ELSE dbo.tblInvExt.decOnHand * decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInvExt.decValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decValue
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decValue / decConversionFactor
												ELSE dbo.tblInvExt.decValue * decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInvExt.decOnOrder AS SumOnOrder
						,MovingAvgCost = CASE tblInvExt.decOnHand
							WHEN 0
								THEN 0
							ELSE (tblInvExt.decValue / tblInvExt.decOnHand)
							END
						,Data_Inv.UnitOfMeasure AS UnitOfMeasure
					FROM Data_Inv
					INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_Inv.PartNumber = dbo.tblInvExt.strPartNumber
					WHERE (
							dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
							AND dbo.tblInvExt.bitInActive = 0
							)
					
					UNION ALL
					
					SELECT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,CAST(0 AS DECIMAL(18, 2)) AS Selling
						,CAST(0 AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblinv.strStockUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,dbo.tblInv.decSumOnHand AS SumOnHand
						,dbo.tblInv.decSumValue AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strUnitOfMeasure AS UnitOfMeasure
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								ISNULL((
										SELECT data
										FROM dbo.split(@InvType, ',')
										WHERE data = 5
										), 0)
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) -- AND (
						--  dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						--  OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						--  )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final1
				AS (
					SELECT *
					FROM (
						SELECT Data_Final.*
							,TotalRows = (
								SELECT Count(*)
								FROM Data_Final
								)							
							,#TempCustVendEmp.strCustVendEmp AS CustVendID
							,ISNULL([dbo].[fnGetInvSellingPrice](Data_Final.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
						FROM Data_Final
						INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Final.PartNumber
						LEFT JOIN #TempCustVendEmp(NOLOCK) ON #TempCustVendEmp.strPartNumber = Data_Final.PartNumber						
						LEFT OUTER JOIN tblInvImg ON Data_Final.PartNumber = tblInvImg.strPartNumber
							AND tblInvImg.bitDefaultImage = 1
						) AS TEMP
					WHERE ISNULL(TEMP.CustVendID, '') = (
							CASE 
								WHEN @FilterType IN (
										1
										,2
										,3
										)
									THEN CASE 
											WHEN @VendName <> ''
												THEN @VendName
											ELSE ISNULL(TEMP.CustVendID, '')
											END
								ELSE ISNULL(TEMP.CustVendID, '')
								END
							)
					)
					,Data_Final3
				AS (
					SELECT *
						,(
							CASE 
								WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
									THEN (CEILING(TotalRows / @PageSize) + 1)
								ELSE CEILING(TotalRows / @PageSize)
								END
							) AS TotalPages
					FROM (
						SELECT ROW_NUMBER() OVER (
								ORDER BY Data_Final1.PartNumber
								) AS RowNumber
							,Data_Final1.*
						FROM Data_Final1
						) AS Temp2
					)
				SELECT Data_Final3.*
				FROM Data_Final3
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
				ORDER BY RowNumber
			END
		END
	END

	IF (@TransactionType = 4)
	BEGIN
		IF (@IsSortByDesc = 1)
		BEGIN
			IF ISNULL(@LocationName, '') = ''
			BEGIN
					;

				WITH Data_Inv
				AS (
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInv.decSumOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
											THEN dbo.tblInv.decSumOnHand
										ELSE CASE dbo.tblInvUOMs.strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor
												ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInv.decSumValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
											THEN dbo.tblInv.decSumValue
										ELSE CASE dbo.tblInvUOMs.strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor
												ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvPrice.strUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
					FROM dbo.tblInv(NOLOCK)
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
						AND dbo.tblInvUOMS.bitInactive = 0
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (
							@isBOMOnly
							,1
							)
						AND dbo.tblInvPrice.bitStockUnit IN (
							1
							,@IsStockUnit
							)
						AND (
							(
								dbo.tblInvUOMs.strUseFor = 'Sales'
								OR dbo.tblInvUOMs.strUseFor = 'Both'
								OR dbo.tblInvUOMs.strUseFor = 'Purchases'
								)
							OR dbo.tblInvPrice.bitStockUnit = 1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) -- AND (
						--  dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						--  OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						--  )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					
					UNION ALL
					
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,dbo.tblInv.decSumOnHand AS SumOnHand
						,dbo.tblInv.decSumValue AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsTrackExpiryDate
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,CAST(0 AS DECIMAL(18, 2)) AS Selling
						,CAST(0 AS BIT) AS bitTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInv.strStockUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								ISNULL((
										SELECT data
										FROM dbo.split(@InvType, ',')
										WHERE data = 5
										), 0)
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (
							@isBOMOnly
							,1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							@Category = ''
							OR dbo.tblInv.strCategory = @Category
							)
						AND (
							@SubCategory = ''
							OR dbo.tblInv.strSubCategory = @SubCategory
							)
						AND (
							@SubCategoryGroup = ''
							OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup
							)
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final
				AS (
					SELECT *
					FROM (
						SELECT Data_Inv.*							
							,#TempCustVendEmp.strCustVendEmp AS CustVendID
							,TotalRows = (
								SELECT Count(*)
								FROM Data_Inv
								)
							,ISNULL([dbo].[fnGetInvSellingPrice](Data_Inv.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
						FROM Data_Inv
						INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Inv.PartNumber
						LEFT JOIN #TempCustVendEmp(NOLOCK) ON #TempCustVendEmp.strPartNumber = Data_Inv.PartNumber						
						LEFT OUTER JOIN tblInvImg ON Data_Inv.PartNumber = tblInvImg.strPartNumber
							AND tblInvImg.bitDefaultImage = 1
						) AS TEMP
					WHERE ISNULL(TEMP.CustVendID, '') = (
							CASE 
								WHEN @FilterType IN (
										1
										,2
										,3
										)
									THEN CASE 
											WHEN @VendName <> ''
												THEN @VendName
											ELSE ISNULL(TEMP.CustVendID, '')
											END
								ELSE ISNULL(TEMP.CustVendID, '')
								END
							)
					)
					,Data_Final1
				AS (
					SELECT *
						,(
							CASE 
								WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
									THEN (CEILING(TotalRows / @PageSize) + 1)
								ELSE CEILING(TotalRows / @PageSize)
								END
							) AS TotalPages
					FROM (
						SELECT ROW_NUMBER() OVER (
								ORDER BY Data_Final.PartNumber
								) AS RowNumber
							,Data_Final.*
						FROM Data_Final
						) AS Temp2
					)
				SELECT Data_Final1.*
				FROM Data_Final1
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
			END
			ELSE
			BEGIN
				BEGIN
					SET @LocationName = (
							SELECT TOP 1 strLocName
							FROM tblInvLoc
							WHERE dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@LocationName))
								OR dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName))
							)
				END;

				WITH Data_Inv
				AS (
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvPrice.strUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInvUOMs.strPartNumber
						,dbo.tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.decConversionFactor
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
						AND dbo.tblInvUOMS.bitInactive = 0
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							OR @InvType = NULL
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND dbo.tblInvPrice.bitStockUnit IN (
							1
							,@IsStockUnit
							)
						AND (
							(
								dbo.tblInvUOMs.strUseFor = 'Sales'
								OR dbo.tblInvUOMs.strUseFor = 'Both'
								OR dbo.tblInvUOMs.strUseFor = 'Purchases'
								)
							OR dbo.tblInvPrice.bitStockUnit = 1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_INV1
				AS (
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvUOMs.strFromUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInvUOMs.strPartNumber
						,dbo.tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.decConversionFactor
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMS.bitInactive = 0
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							OR @InvType = NULL
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND (
							dbo.tblInvUOMs.strUseFor = 'Purchases'
							OR dbo.tblInvUOMs.strUseFor = 'Sales'
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						AND dbo.tblInvPrice.bitStockUnit IN (
							1
							,@IsStockUnit
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final
				AS (
					SELECT DISTINCT Data_Inv.PartNumber
						,Data_Inv.[Description]
						,Data_Inv.[Type]
						,Data_Inv.Category
						,Data_Inv.SubCategory
						,Data_Inv.SubCategoryGroup
						,Data_Inv.IsUseBOM
						,Data_Inv.IsInactive
						,Data_Inv.Field1
						,Data_Inv.Field2
						,Data_Inv.Field3
						,Data_Inv.Field4
						,Data_Inv.Field5
						,Data_Inv.Field6
						,Data_Inv.BarCode
						,Data_Inv.IsInvSerialType
						,Data_Inv.BarCode2
						,Data_Inv.Pricelist --,Data_Inv.Selling
						,Data_Inv.IsTrackExpiryDate
						,Data_Inv.LastPPUnit
						,Data_Inv.DecimalQuantity
						,Data_Inv.StockUnit
						,Data_Inv.BuyToStock
						,Data_Inv.ExtendedDesc
						,dbo.tblInvExt.decAvail AS SumAvail
						,dbo.tblInvExt.decAlloc AS SumAlloc
						,dbo.tblInvExt.decManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInvExt.decOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decOnHand
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decOnHand / decConversionFactor
												ELSE dbo.tblInvExt.decOnHand * decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInvExt.decValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decValue
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decValue / decConversionFactor
												ELSE dbo.tblInvExt.decValue * decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInvExt.decOnOrder AS SumOnOrder
						,MovingAvgCost = CASE tblInvExt.decOnHand
							WHEN 0
								THEN 0
							ELSE (tblInvExt.decValue / tblInvExt.decOnHand)
							END
					FROM Data_Inv
					INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_Inv.PartNumber = dbo.tblInvExt.strPartNumber
					WHERE (
							dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
							AND dbo.tblInvExt.bitInActive = 0
							)
					
					UNION ALL
					
					SELECT DISTINCT Data_INV1.PartNumber
						,Data_INV1.[Description]
						,Data_INV1.[Type]
						,Data_INV1.Category
						,Data_INV1.SubCategory
						,Data_INV1.SubCategoryGroup
						,Data_INV1.IsUseBOM
						,Data_INV1.IsInactive
						,Data_INV1.Field1
						,Data_INV1.Field2
						,Data_INV1.Field3
						,Data_INV1.Field4
						,Data_INV1.Field5
						,Data_INV1.Field6
						,Data_INV1.BarCode
						,Data_INV1.IsInvSerialType
						,Data_INV1.BarCode2
						,Data_INV1.Pricelist --,Data_INV1.Selling
						,Data_INV1.IsTrackExpiryDate
						,Data_INV1.LastPPUnit
						,Data_INV1.DecimalQuantity
						,Data_INV1.StockUnit
						,Data_INV1.BuyToStock
						,Data_INV1.ExtendedDesc
						,dbo.tblInvExt.decAvail AS SumAvail
						,dbo.tblInvExt.decAlloc AS SumAlloc
						,dbo.tblInvExt.decManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInvExt.decOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_INV1.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decOnHand
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decOnHand / decConversionFactor
												ELSE dbo.tblInvExt.decOnHand * decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInvExt.decValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_Inv1.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decValue
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decValue / decConversionFactor
												ELSE dbo.tblInvExt.decValue * decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInvExt.decOnOrder AS SumOnOrder
						,MovingAvgCost = CASE tblInvExt.decOnHand
							WHEN 0
								THEN 0
							ELSE (tblInvExt.decValue / tblInvExt.decOnHand)
							END
					FROM Data_INV1
					INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_INV1.PartNumber = dbo.tblInvExt.strPartNumber
					WHERE (
							dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
							AND dbo.tblInvExt.bitInActive = 0
							)
					
					UNION ALL
					
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,CAST(0 AS DECIMAL(18, 2)) AS Selling
						,CAST(0 AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblinv.strStockUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,dbo.tblInv.decSumOnHand AS SumOnHand
						,dbo.tblInv.decSumValue AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								ISNULL((
										SELECT data
										FROM dbo.split(@InvType, ',')
										WHERE data = 5
										), 0)
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) -- AND (
						--  dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						--  OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						--  )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final1
				AS (
					SELECT *
					FROM (
						SELECT DISTINCT Data_Final.*
							,TotalRows = (
								SELECT Count(*)
								FROM Data_Final
								)							
							,#TempCustVendEmp.strCustVendEmp AS CustVendID
							,ISNULL([dbo].[fnGetInvSellingPrice](Data_Final.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
						FROM Data_Final
						INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Final.PartNumber
						LEFT JOIN #TempCustVendEmp(NOLOCK) ON #TempCustVendEmp.strPartNumber = Data_Final.PartNumber						
						LEFT OUTER JOIN tblInvImg ON Data_Final.PartNumber = tblInvImg.strPartNumber
							AND tblInvImg.bitDefaultImage = 1
						) AS TEMP
					)
					,Data_Final3
				AS (
					SELECT *
						,(
							CASE 
								WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
									THEN (CEILING(TotalRows / @PageSize) + 1)
								ELSE CEILING(TotalRows / @PageSize)
								END
							) AS TotalPages
					FROM (
						SELECT ROW_NUMBER() OVER (
								ORDER BY Data_Final1.PartNumber
								) AS RowNumber
							,Data_Final1.*
						FROM Data_Final1
						) AS Temp2
					)
				SELECT Data_Final3.*
				FROM Data_Final3
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
				ORDER BY RowNumber
			END
		END
		ELSE
		BEGIN
			IF ISNULL(@LocationName, '') = ''
			BEGIN
					;

				WITH Data_Inv
				AS (
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInv.decSumOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
											THEN dbo.tblInv.decSumOnHand
										ELSE CASE dbo.tblInvUOMs.strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor
												ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInv.decSumValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
											THEN dbo.tblInv.decSumValue
										ELSE CASE dbo.tblInvUOMs.strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor
												ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvPrice.strUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
					FROM dbo.tblInv(NOLOCK)
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
						AND dbo.tblInvUOMS.bitInactive = 0
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (
							@isBOMOnly
							,1
							)
						AND dbo.tblInvPrice.bitStockUnit IN (
							1
							,@IsStockUnit
							)
						AND (
							(
								dbo.tblInvUOMs.strUseFor = 'Purchases'
								OR dbo.tblInvUOMs.strUseFor = 'Both'
								OR dbo.tblInvUOMs.strUseFor = 'Sales'
								)
							OR dbo.tblInvPrice.bitStockUnit = 1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					
					UNION ALL
					
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,dbo.tblInv.decSumOnHand AS SumOnHand
						,dbo.tblInv.decSumValue AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsTrackExpiryDate
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,CAST(0 AS DECIMAL(18, 2)) AS Selling
						,CAST(0 AS BIT) AS bitTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInv.strStockUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								ISNULL((
										SELECT data
										FROM dbo.split(@InvType, ',')
										WHERE data = 5
										), 0)
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (
							@isBOMOnly
							,1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							@Category = ''
							OR dbo.tblInv.strCategory = @Category
							)
						AND (
							@SubCategory = ''
							OR dbo.tblInv.strSubCategory = @SubCategory
							)
						AND (
							@SubCategoryGroup = ''
							OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup
							)
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final
				AS (
					SELECT *
					FROM (
						SELECT Data_Inv.*							
							,#TempCustVendEmp.strCustVendEmp AS CustVendID
							,TotalRows = (
								SELECT Count(*)
								FROM Data_Inv
								)
							,ISNULL([dbo].[fnGetInvSellingPrice](Data_Inv.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
						FROM Data_Inv
						INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Inv.PartNumber
						LEFT JOIN #TempCustVendEmp(NOLOCK) ON #TempCustVendEmp.strPartNumber = Data_Inv.PartNumber						
						LEFT OUTER JOIN tblInvImg ON Data_Inv.PartNumber = tblInvImg.strPartNumber
							AND tblInvImg.bitDefaultImage = 1
						) AS TEMP
					WHERE ISNULL(TEMP.CustVendID, '') = (
							CASE 
								WHEN @FilterType IN (
										1
										,2
										,3
										)
									THEN CASE 
											WHEN @VendName <> ''
												THEN @VendName
											ELSE ISNULL(TEMP.CustVendID, '')
											END
								ELSE ISNULL(TEMP.CustVendID, '')
								END
							)
					)
					,Data_Final1
				AS (
					SELECT *
						,(
							CASE 
								WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
									THEN (CEILING(TotalRows / @PageSize) + 1)
								ELSE CEILING(TotalRows / @PageSize)
								END
							) AS TotalPages
					FROM (
						SELECT ROW_NUMBER() OVER (
								ORDER BY Data_Final.PartNumber
								) AS RowNumber
							,Data_Final.*
						FROM Data_Final
						) AS Temp2
					)
				SELECT Data_Final1.*
				FROM Data_Final1
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
			END
			ELSE
			BEGIN
				BEGIN
					SET @LocationName = (
							SELECT TOP 1 strLocName
							FROM tblInvLoc
							WHERE dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@LocationName))
								OR dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName))
							)
				END;

				WITH Data_Inv
				AS (
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvPrice.strUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInvUOMs.strPartNumber
						,dbo.tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.decConversionFactor
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
						AND dbo.tblInvUOMS.bitInactive = 0
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							OR @InvType = NULL
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND dbo.tblInvPrice.bitStockUnit IN (
							1
							,@IsStockUnit
							)
						AND (
							(
								dbo.tblInvUOMs.strUseFor = 'Purchases'
								OR dbo.tblInvUOMs.strUseFor = 'Both'
								OR dbo.tblInvUOMs.strUseFor = 'Sales'
								)
							OR dbo.tblInvPrice.bitStockUnit = 1
							)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) -- AND (
						--  dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						--  OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						--  )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_INV1
				AS (
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
						,CAST(ISNULL(CASE 
									WHEN dbo.tblInv.bitInvSerialType = 1
										THEN tblInvSerialTypes.bitTrackExpiryDate
									ELSE NULL
									END, 0) AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblInvUOMs.strFromUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInvUOMs.strPartNumber
						,dbo.tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.decConversionFactor
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
						AND dbo.tblInvUOMS.bitInactive = 0
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								SELECT data
								FROM dbo.split(@InvType, ',')
								WHERE data <> 5
								)
							OR @InvType = NULL
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND tblInvPrice.strPricelist = @Pricelist --AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						AND (
							(
								@uidPriceBasedID IS NOT NULL
								AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
								)
							OR (@uidPriceBasedID IS NULL)
							)
						AND (
							dbo.tblInvUOMs.strUseFor = 'Purchases'
							OR dbo.tblInvUOMs.strUseFor = 'Sales'
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						AND dbo.tblInvPrice.bitStockUnit = 1
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) -- AND (
						--  dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						--  OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						--  )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final
				AS (
					SELECT DISTINCT Data_Inv.PartNumber
						,Data_Inv.[Description]
						,Data_Inv.[Type]
						,Data_Inv.Category
						,Data_Inv.SubCategory
						,Data_Inv.SubCategoryGroup
						,Data_Inv.IsUseBOM
						,Data_Inv.IsInactive
						,Data_Inv.Field1
						,Data_Inv.Field2
						,Data_Inv.Field3
						,Data_Inv.Field4
						,Data_Inv.Field5
						,Data_Inv.Field6
						,Data_Inv.BarCode
						,Data_Inv.IsInvSerialType
						,Data_Inv.BarCode2
						,Data_Inv.Pricelist --,Data_Inv.Selling
						,Data_Inv.IsTrackExpiryDate
						,Data_Inv.LastPPUnit
						,Data_Inv.DecimalQuantity
						,Data_Inv.StockUnit
						,Data_Inv.BuyToStock
						,Data_Inv.ExtendedDesc
						,dbo.tblInvExt.decAvail AS SumAvail
						,dbo.tblInvExt.decAlloc AS SumAlloc
						,dbo.tblInvExt.decManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInvExt.decOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decOnHand
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decOnHand / decConversionFactor
												ELSE dbo.tblInvExt.decOnHand * decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInvExt.decValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decValue
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decValue / decConversionFactor
												ELSE dbo.tblInvExt.decValue * decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInvExt.decOnOrder AS SumOnOrder
						,MovingAvgCost = CASE tblInvExt.decOnHand
							WHEN 0
								THEN 0
							ELSE (tblInvExt.decValue / tblInvExt.decOnHand)
							END
					FROM Data_Inv
					INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_Inv.PartNumber = dbo.tblInvExt.strPartNumber
					WHERE (
							dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
							AND dbo.tblInvExt.bitInActive = 0
							)
					
					UNION ALL
					
					SELECT DISTINCT Data_INV1.PartNumber
						,Data_INV1.[Description]
						,Data_INV1.[Type]
						,Data_INV1.Category
						,Data_INV1.SubCategory
						,Data_INV1.SubCategoryGroup
						,Data_INV1.IsUseBOM
						,Data_INV1.IsInactive
						,Data_INV1.Field1
						,Data_INV1.Field2
						,Data_INV1.Field3
						,Data_INV1.Field4
						,Data_INV1.Field5
						,Data_INV1.Field6
						,Data_INV1.BarCode
						,Data_INV1.IsInvSerialType
						,Data_INV1.BarCode2
						,Data_INV1.Pricelist --,Data_INV1.Selling
						,Data_INV1.IsTrackExpiryDate
						,Data_INV1.LastPPUnit
						,Data_INV1.DecimalQuantity
						,Data_INV1.StockUnit
						,Data_INV1.BuyToStock
						,Data_INV1.ExtendedDesc
						,dbo.tblInvExt.decAvail AS SumAvail
						,dbo.tblInvExt.decAlloc AS SumAlloc
						,dbo.tblInvExt.decManuf AS SumManuf
						,CASE 
							WHEN dbo.tblInvExt.decOnHand = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_INV1.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decOnHand
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decOnHand / decConversionFactor
												ELSE dbo.tblInvExt.decOnHand * decConversionFactor
												END
										END
									)
							END AS SumOnHand
						,CASE 
							WHEN dbo.tblInvExt.decValue = 0
								THEN 0
							ELSE (
									CASE 
										WHEN ISNULL(Data_INV1.strPartNumber, '''') = ''''
											THEN dbo.tblInvExt.decValue
										ELSE CASE strConversionType
												WHEN 'Multiply'
													THEN dbo.tblInvExt.decValue / decConversionFactor
												ELSE dbo.tblInvExt.decValue * decConversionFactor
												END
										END
									)
							END AS SumValue
						,dbo.tblInvExt.decOnOrder AS SumOnOrder
						,MovingAvgCost = CASE tblInvExt.decOnHand
							WHEN 0
								THEN 0
							ELSE (tblInvExt.decValue / tblInvExt.decOnHand)
							END
					FROM Data_INV1
					INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_INV1.PartNumber = dbo.tblInvExt.strPartNumber
					WHERE (
							dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
							AND dbo.tblInvExt.bitInActive = 0
							)
					
					UNION ALL
					
					SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
						,dbo.tblInv.strDesc AS [Description]
						,dbo.tblInv.intType AS [Type]
						,dbo.tblInv.strCategory AS Category
						,dbo.tblInv.strSubCategory AS SubCategory
						,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
						,dbo.tblInv.bitUseBOM AS IsUseBOM
						,dbo.tblInv.bitInactive AS IsInactive
						,dbo.tblInv.strField1 AS Field1
						,dbo.tblInv.strField2 AS Field2
						,dbo.tblInv.strField3 AS Field3
						,dbo.tblInv.strField4 AS Field4
						,dbo.tblInv.strField5 AS Field5
						,dbo.tblInv.strField6 AS Field6
						,dbo.tblInv.strBarCode AS BarCode
						,dbo.tblInv.bitInvSerialType AS IsInvSerialType
						,dbo.tblInv.strBarCode2 AS BarCode2
						,@Pricelist AS Pricelist --,CAST(0 AS DECIMAL(18, 2)) AS Selling
						,CAST(0 AS BIT) AS IsTrackExpiryDate
						,dbo.tblInv.decLastPPUnit AS LastPPUnit
						,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
						,dbo.tblinv.strStockUnit AS StockUnit
						,dbo.tblInv.decBuyToStock AS BuyToStock
						,tblInv.strExtendedDesc AS ExtendedDesc
						,dbo.tblInv.decSumAvail AS SumAvail
						,dbo.tblInv.decSumAlloc AS SumAlloc
						,dbo.tblInv.decSumManuf AS SumManuf
						,dbo.tblInv.decSumOnHand AS SumOnHand
						,dbo.tblInv.decSumValue AS SumValue
						,dbo.tblInv.decSumOnOrder AS SumOnOrder
						,MovingAvgCost = CASE decSumOnHand
							WHEN 0
								THEN 0
							ELSE (decSumValue / decSumOnHand)
							END
					FROM dbo.tblInv(NOLOCK)
					LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
					WHERE (
							ISNULL(@InvType, '') = ''
							OR dbo.tblInv.intType IN (
								ISNULL((
										SELECT data
										FROM dbo.split(@InvType, ',')
										WHERE data = 5
										), 0)
								)
							)
						AND (dbo.tblInv.bitInactive = 0)
						AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '') = ''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							) --AND (
						-- dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%'
						-- OR dbo.tblInv.strDesc LIKE '%' + @SearchText + '%'
						-- )
						AND (
							ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (
								@isSNLotTrack
								,1
								)
							)
						AND (
							ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (
								@isSNLotTrack
								,1
								)
							)
					)
					,Data_Final1
				AS (
					SELECT *
					FROM (
						SELECT DISTINCT Data_Final.*
							,TotalRows = (
								SELECT Count(*)
								FROM Data_Final
								)							
							,#TempCustVendEmp.strCustVendEmp AS CustVendID
							,ISNULL([dbo].[fnGetInvSellingPrice](Data_Final.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
						FROM Data_Final
						INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Final.PartNumber
						LEFT JOIN #TempCustVendEmp(NOLOCK) ON #TempCustVendEmp.strPartNumber = Data_Final.PartNumber						
						LEFT OUTER JOIN tblInvImg ON Data_Final.PartNumber = tblInvImg.strPartNumber
							AND tblInvImg.bitDefaultImage = 1
						) AS TEMP
					WHERE ISNULL(TEMP.CustVendID, '') = (
							CASE 
								WHEN @FilterType IN (
										1
										,2
										,3
										)
									THEN CASE 
											WHEN @VendName <> ''
												THEN @VendName
											ELSE ISNULL(TEMP.CustVendID, '')
											END
								ELSE ISNULL(TEMP.CustVendID, '')
								END
							)
					)
					,Data_Final3
				AS (
					SELECT *
						,(
							CASE 
								WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
									THEN (CEILING(TotalRows / @PageSize) + 1)
								ELSE CEILING(TotalRows / @PageSize)
								END
							) AS TotalPages
					FROM (
						SELECT ROW_NUMBER() OVER (
								ORDER BY Data_Final1.PartNumber
								) AS RowNumber
							,Data_Final1.*
						FROM Data_Final1
						) AS Temp2
					)
				SELECT Data_Final3.*
				FROM Data_Final3
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
				ORDER BY RowNumber
			END
		END
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvByUserByPriceListCriteriaForPOS]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInvByUserByPriceListCriteriaForPOS] (
	@InvType VARCHAR(50) = NULL
	,@UserName VARCHAR(50) = NULL
	,@Pricelist VARCHAR(20) = NULL
	,@LocationName VARCHAR(500) = NULL
	,@Date DATETIME = NULL
	,@FilterType INT = 0
	,@PageSize INT = 1
	,@PageIndex INT = 1
	,@SearchText VARCHAR(200) = NULL
	,@isSearchTextPartNumber BIT = 0
	,@Category VARCHAR(250) = ''
	,@SubCategory VARCHAR(250) = ''
	,@SubCategoryGroup VARCHAR(250) = ''
	,@GetPartNumberOnly BIT = 0
	)
AS
BEGIN
	--IF LTRIM(RTRIM(@LocationName))<>'<<All Locations>>' 
	--BEGIN
	-- SET @LocationName=(select Top 1 strLocName from tblInvLoc (NOLOCK) Where strDesc=@LocationName)
	--END
	----- Word Count Logic
	DECLARE @Count INT = 0;

	SET @SearchText = LTRIM(RTRIM(@SearchText)) -- Remove white space

	--- Use Pagination
	DECLARE @Offset INT

	SET @Offset = @PageSize * (@PageIndex - 1)

	DECLARE @IsSortByDesc AS BIT = (
			SELECT TOP 1 bitSortInvDesc
			FROM tblCoOpts(NOLOCK)
			)
	DECLARE @uidPriceBasedID AS UNIQUEIDENTIFIER

	SET @uidPriceBasedID = NULL

	IF ISNULL(@PriceList, '') <> ''
		AND ISNULL(@Date, '') <> ''
	BEGIN
		SELECT TOP 1 @uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
		FROM tblPriceListsByDate(NOLOCK)
		INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
		WHERE @Date BETWEEN dbo.tblPriceListsByDate.dteStartDate
				AND dbo.tblPriceListsByDate.dteFinishDate
			AND tblPriceListsByDate.strPricelist = @PriceList

		IF (@uidPriceBasedID IS NULL)
		BEGIN
			SET @uidPriceBasedID = NEWID()
		END
	END

	IF (@IsSortByDesc = 1)
	BEGIN
		IF @SearchText <> '' -- used for searching
		BEGIN
				;

			WITH Data_Inv
			AS (
				SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitInactive AS IsInactive
					,tblInvUOMs.strConversionType AS ConversionType
					,tblInvUOMs.decConversionFactor AS ConversionFactor					
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,CASE 
						WHEN dbo.tblInvPrice.bitStockUnit = 1
							THEN dbo.tblInv.strBarCode
						ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '''')
						END AS BarCode
					,CASE 
						WHEN dbo.tblInvPrice.bitStockUnit = 1
							THEN dbo.tblInv.strBarCode2
						ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '''')
						END AS BarCode2
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,@Pricelist AS Pricelist
					,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInvPrice.strUnit AS StockUnit
					,[TotalRows] = 50000
				FROM dbo.tblInv(NOLOCK)
				INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
					AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (dbo.tblInv.bitInactive = 0)
					AND (
						(
							dbo.tblInvUOMs.strUseFor = 'Sales'
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)
					AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '''') = ''''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
					AND (
						@Category = ''
						OR dbo.tblInv.strCategory = @Category
						)
					AND (
						@SubCategory = ''
						OR dbo.tblInv.strSubCategory = @SubCategory
						)
					AND (
						@SubCategoryGroup = ''
						OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup
						)
					AND (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data <> 5
							)
						OR @InvType = NULL
						)
					AND (
						CAST(@isSearchTextPartNumber AS VARCHAR) = 0
						OR dbo.tblInv.strPartNumber = @SearchText
						)
				)
				,Data_Final
			AS (
				SELECT Data_Inv.*
				 ,CASE 
						WHEN tblInvExt.decOnHand = 0
							THEN 0
						ELSE (
								CASE 
									WHEN ISNULL(ConversionType, '''') = ''''
										THEN tblInvExt.decOnHand
									ELSE CASE ConversionType
											WHEN 'Multiply'
												THEN tblInvExt.decOnHand / ConversionFactor
											ELSE tblInvExt.decOnHand * ConversionFactor
											END
									END
								)
						END AS SumOnHand
					,ROW_NUMBER() OVER (
						ORDER BY CT.MatchPct ASC
						) AS RN
				FROM Data_Inv
				INNER JOIN tblInvExt(NOLOCK) ON Data_Inv.PartNumber = tblInvExt.strPartNumber
				INNER JOIN [fnInvSearch](@SearchText, 0) AS CT ON CT.strPartNumber = Data_Inv.PartNumber
				WHERE (
						dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
						AND dbo.tblInvExt.bitInActive = 0
						)
				)
			SELECT *
			FROM (
				SELECT ROW_NUMBER() OVER (
						ORDER BY Data_Final.[Description]
						) RowNum
					,Data_Final.*
					,ISNULL([dbo].[fnGetInvSellingPrice](Data_Final.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
				FROM Data_Final
				) AS TEMP
			WHERE (
					@GetPartNumberOnly = 0
					AND (
						RowNum >= (@Offset + 1)
						AND RowNum <= (@Offset + @PageSize)
						)
					)
				OR (@GetPartNumberOnly = 1)
		END
		ELSE
		BEGIN
				;

			WITH Data_Inv
			AS (
				SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitInactive AS IsInactive
					,tblInvUOMs.strConversionType AS ConversionType
					,tblInvUOMs.decConversionFactor AS ConversionFactor					
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,CASE 
						WHEN dbo.tblInvPrice.bitStockUnit = 1
							THEN dbo.tblInv.strBarCode
						ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '''')
						END AS BarCode
					,CASE 
						WHEN dbo.tblInvPrice.bitStockUnit = 1
							THEN dbo.tblInv.strBarCode2
						ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '''')
						END AS BarCode2
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,@Pricelist AS Pricelist
					,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInvPrice.strUnit AS StockUnit
					,50000 AS [TotalRows]
				FROM dbo.tblInv(NOLOCK)
				INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
					AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (dbo.tblInv.bitInactive = 0)
					AND (
						(
							dbo.tblInvUOMs.strUseFor = 'Sales'
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)
					AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '''') = ''''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
					AND (
						@Category = ''
						OR dbo.tblInv.strCategory = @Category
						)
					AND (
						@SubCategory = ''
						OR dbo.tblInv.strSubCategory = @SubCategory
						)
					AND (
						@SubCategoryGroup = ''
						OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup
						)
					AND (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data <> 5
							)
						OR @InvType = NULL
						)
					AND (
						CAST(@isSearchTextPartNumber AS VARCHAR) = 0
						OR dbo.tblInv.strPartNumber = @SearchText
						)
				)
				,Data_Final
			AS (
				SELECT Data_Inv.*
				 ,CASE 
						WHEN tblInvExt.decOnHand = 0
							THEN 0
						ELSE (
								CASE 
									WHEN ISNULL(ConversionType, '''') = ''''
										THEN tblInvExt.decOnHand
									ELSE CASE ConversionType
											WHEN 'Multiply'
												THEN tblInvExt.decOnHand / ConversionFactor
											ELSE tblInvExt.decOnHand * ConversionFactor
											END
									END
								)
						END AS SumOnHand
				FROM Data_Inv
				INNER JOIN tblInvExt(NOLOCK) ON Data_Inv.PartNumber = tblInvExt.strPartNumber
				WHERE (
						dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
						AND dbo.tblInvExt.bitInActive = 0
						)
				)
			SELECT *
			FROM (
				SELECT ROW_NUMBER() OVER (
						ORDER BY Data_Final.[Description]
						) RowNum
					,*
					,ISNULL([dbo].[fnGetInvSellingPrice](Data_Final.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
				FROM Data_Final
				) AS TEMP
			WHERE (
					@GetPartNumberOnly = 0
					AND (
						RowNum >= (@Offset + 1)
						AND RowNum <= (@Offset + @PageSize)
						)
					)
				OR (@GetPartNumberOnly = 1)
		END
	END
	ELSE
	BEGIN
		IF @SearchText <> '' -- used for searching
		BEGIN
				;

			WITH Data_Inv
			AS (
				SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitInactive AS IsInactive
					,tblInvUOMs.strConversionType AS ConversionType
					,tblInvUOMs.decConversionFactor AS ConversionFactor					
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,CASE 
						WHEN dbo.tblInvPrice.bitStockUnit = 1
							THEN dbo.tblInv.strBarCode
						ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '''')
						END AS BarCode
					,CASE 
						WHEN dbo.tblInvPrice.bitStockUnit = 1
							THEN dbo.tblInv.strBarCode2
						ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '''')
						END AS BarCode2
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,@Pricelist AS Pricelist
					,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInvPrice.strUnit AS StockUnit
					,[TotalRows] = 50000
				FROM dbo.tblInv(NOLOCK)
				INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
					AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (dbo.tblInv.bitInactive = 0)
					AND (
						(
							dbo.tblInvUOMs.strUseFor = 'Sales'
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)
					AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '''') = ''''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
					AND (
						@Category = ''
						OR dbo.tblInv.strCategory = @Category
						)
					AND (
						@SubCategory = ''
						OR dbo.tblInv.strSubCategory = @SubCategory
						)
					AND (
						@SubCategoryGroup = ''
						OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup
						)
					AND (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data <> 5
							)
						OR @InvType = NULL
						)
					AND (
						CAST(@isSearchTextPartNumber AS VARCHAR) = 0
						OR dbo.tblInv.strPartNumber = @SearchText
						)
				)
				,Data_Final
			AS (
				SELECT Data_Inv.*
				 ,CASE 
						WHEN tblInvExt.decOnHand = 0
							THEN 0
						ELSE (
								CASE 
									WHEN ISNULL(ConversionType, '''') = ''''
										THEN tblInvExt.decOnHand
									ELSE CASE ConversionType
											WHEN 'Multiply'
												THEN tblInvExt.decOnHand / ConversionFactor
											ELSE tblInvExt.decOnHand * ConversionFactor
											END
									END
								)
						END AS SumOnHand
					,ROW_NUMBER() OVER (
						ORDER BY CT.MatchPct ASC
						) AS RN
				FROM Data_Inv
				INNER JOIN tblInvExt(NOLOCK) ON Data_Inv.PartNumber = tblInvExt.strPartNumber
				INNER JOIN [fnInvSearch](@SearchText, 0) AS CT ON CT.strPartNumber = Data_Inv.PartNumber
				WHERE (
						dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
						AND dbo.tblInvExt.bitInActive = 0
						)
				)
			SELECT *
			FROM (
				SELECT ROW_NUMBER() OVER (
						ORDER BY Data_Final.PartNumber
						) RowNum
					,Data_Final.*
					,ISNULL([dbo].[fnGetInvSellingPrice](Data_Final.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
				FROM Data_Final
				) AS TEMP
			WHERE (
					@GetPartNumberOnly = 0
					AND (
						RowNum >= (@Offset + 1)
						AND RowNum <= (@Offset + @PageSize)
						)
					)
				OR (@GetPartNumberOnly = 1)
		END
		ELSE
		BEGIN
				;

			WITH Data_Inv
			AS (
				SELECT DISTINCT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitInactive AS IsInactive
					,tblInvUOMs.strConversionType AS ConversionType
					,tblInvUOMs.decConversionFactor AS ConversionFactor					
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,CASE 
						WHEN dbo.tblInvPrice.bitStockUnit = 1
							THEN dbo.tblInv.strBarCode
						ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '''')
						END AS BarCode
					,CASE 
						WHEN dbo.tblInvPrice.bitStockUnit = 1
							THEN dbo.tblInv.strBarCode2
						ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '''')
						END AS BarCode2
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,@Pricelist AS Pricelist
					,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInvPrice.strUnit AS StockUnit
					,50000 AS [TotalRows]
				FROM dbo.tblInv(NOLOCK)
				INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
					AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (dbo.tblInv.bitInactive = 0)
					AND (
						(
							dbo.tblInvUOMs.strUseFor = 'Sales'
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)
					AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '''') = ''''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
					AND (
						@Category = ''
						OR dbo.tblInv.strCategory = @Category
						)
					AND (
						@SubCategory = ''
						OR dbo.tblInv.strSubCategory = @SubCategory
						)
					AND (
						@SubCategoryGroup = ''
						OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup
						)
					AND (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data <> 5
							)
						OR @InvType = NULL
						)
					AND (
						CAST(@isSearchTextPartNumber AS VARCHAR) = 0
						OR dbo.tblInv.strPartNumber = @SearchText
						)
				)
				,Data_Final
			AS (
				SELECT Data_Inv.*
				 ,CASE 
						WHEN tblInvExt.decOnHand = 0
							THEN 0
						ELSE (
								CASE 
									WHEN ISNULL(ConversionType, '''') = ''''
										THEN tblInvExt.decOnHand
									ELSE CASE ConversionType
											WHEN 'Multiply'
												THEN tblInvExt.decOnHand / ConversionFactor
											ELSE tblInvExt.decOnHand * ConversionFactor
											END
									END
								)
						END AS SumOnHand
				FROM Data_Inv
				INNER JOIN tblInvExt(NOLOCK) ON Data_Inv.PartNumber = tblInvExt.strPartNumber
				WHERE (
						dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
						AND dbo.tblInvExt.bitInActive = 0
						)
				)
			SELECT *
			FROM (
				SELECT ROW_NUMBER() OVER (
						ORDER BY Data_Final.PartNumber
						) RowNum
					,*
					,ISNULL([dbo].[fnGetInvSellingPrice](Data_Final.PartNumber, @Pricelist, @Date, @uidPriceBasedID), 0) Selling
				FROM Data_Final
				) AS TEMP
			WHERE (
					@GetPartNumberOnly = 0
					AND (
						RowNum >= (@Offset + 1)
						AND RowNum <= (@Offset + @PageSize)
						)
					)
				OR (@GetPartNumberOnly = 1)
		END
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvByUserCriteria]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInvByUserCriteria] (
	@InvType VARCHAR(50) = NULL
	,@UserName NVARCHAR(50) = NULL
	,@LocationName VARCHAR(500) = NULL
	,@FilterType INTEGER = 0
	,@PageSize INT = 1
	,@PageIndex INT = 1
	,@SearchText VARCHAR(200) = ''
	,@isSearchTextPartNumber BIT = 0
	)
AS
BEGIN
	DECLARE @TotalRows INT
	DECLARE @TotalPages INT
	DECLARE @StartRowIndex INT
		,@EndRowIndex INT;
	DECLARE @Sql NVARCHAR(MAX)
	DECLARE @TotalRecords NVARCHAR(MAX) = ''
	DECLARE @Offset INT

	SET @Offset = @PageSize * (@PageIndex - 1)

	IF ISNULL(@SearchText, '') = ''
	BEGIN
		SET @SearchText = ''
	END

	IF ISNULL(@InvType, '') = ''
	BEGIN
		SET @InvType = ''
	END

	DECLARE @IsSortByDesc AS BIT = (
			SELECT TOP 1 bitSortInvDesc
			FROM tblCoOpts(NOLOCK)
			)
	DECLARE @uidPriceBasedID AS UNIQUEIDENTIFIER

	SET @uidPriceBasedID = NULL

	IF (@IsSortByDesc = 1)
	BEGIN
		IF ISNULL(@LocationName, '') = ''
		BEGIN
				;

			WITH Data_Inv
			AS (
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.decSumAvail AS SumAvail
					,dbo.tblInv.decSumAlloc AS SumAlloc
					,dbo.tblInv.decSumManuf AS SumManuf
					,CASE 
						WHEN dbo.tblInv.decSumOnHand = 0
							THEN 0
						ELSE (
								CASE 
									WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
										THEN dbo.tblInv.decSumOnHand
									ELSE CASE dbo.tblInvUOMs.strConversionType
											WHEN 'Multiply'
												THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor
											ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor
											END
									END
								)
						END AS SumOnHand
					,dbo.tblInv.decSumValue AS SumValue
					,dbo.tblInv.decSumOnOrder AS SumOnOrder
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,NULL AS Pricelist
					,CONVERT(DECIMAL(18, 2), 0) AS Selling
					,CAST(ISNULL(CASE 
								WHEN dbo.tblInv.bitInvSerialType = 1
									THEN (
											SELECT bitTrackExpiryDate
											FROM dbo.tblInvSerialTypes(NOLOCK)
											WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
											)
								ELSE 0
								END, 0) AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
					,InvPrice.strUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
				FROM dbo.tblInv(NOLOCK)
				INNER JOIN (
					SELECT DISTINCT dbo.tblInvPrice.strPartNumber
						,dbo.tblInvPrice.strUnit
						,bitStockUnit
					FROM dbo.tblInvPrice(NOLOCK)
					) AS InvPrice ON InvPrice.strPartNumber = dbo.tblInv.strPartNumber
				LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = InvPrice.strUnit
					AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data <> 5
							)
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND (
						(
							dbo.tblInvUOMs.strUseFor = 'Sales'
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR InvPrice.bitStockUnit = 1
						)
					AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '') = ''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
					--AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%' or dbo.tblInv.strDesc  Like  '%'+@SearchText+'%')
				
				UNION ALL
				
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.decSumAvail AS SumAvail
					,dbo.tblInv.decSumAlloc AS SumAlloc
					,dbo.tblInv.decSumManuf AS SumManuf
					,dbo.tblInv.decSumOnHand AS SumOnHand
					,dbo.tblInv.decSumValue AS SumValue
					,dbo.tblInv.decSumOnOrder AS SumOnOrder
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsTrackExpiryDate
					,dbo.tblInv.strBarCode2 AS BarCode2
					,NULL AS Pricelist
					,CONVERT(DECIMAL(18, 2), 0) AS Selling
					,CAST(0 AS BIT) AS bitTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInv.strStockUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
				FROM dbo.tblInv(NOLOCK)
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							ISNULL((
									SELECT data
									FROM dbo.split(@InvType, ',')
									WHERE data = 5
									), 0)
							)
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '') = ''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
					--AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%' or dbo.tblInv.strDesc  Like  '%'+@SearchText+'%')
				)
				,Data_Final
			AS (
				SELECT ROW_NUMBER() OVER (
						ORDER BY Data_Inv.[Description]
						) AS RowNumber
					,Data_Inv.*
					,CASE 
						WHEN @FilterType = 0
							THEN NULL
						WHEN @FilterType = 1
							THEN dbo.tblInvVend.strVendName
						WHEN @FilterType = 2
							THEN dbo.tblInvCustomer.strCustName
						END AS CustVendID
					,tblInvImg.ImgData
					,TotalRows = (
						SELECT Count(*)
						FROM Data_Inv
						)
				FROM Data_Inv
				INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Inv.PartNumber
				LEFT OUTER JOIN dbo.tblInvVend(NOLOCK) ON Data_Inv.PartNumber = tblInvVend.strPartNumber
				LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Inv.PartNumber = tblInvCustomer.strPartNumber
				LEFT OUTER JOIN tblInvImg (NOLOCK) ON Data_Inv.PartNumber = tblInvImg.strPartNumber
				)
			SELECT *
				,(
					CASE 
						WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
							THEN (CEILING(TotalRows / @PageSize) + 1)
						ELSE CEILING(TotalRows / @PageSize)
						END
					) AS TotalPages
			FROM Data_Final
			WHERE RowNumber >= (@Offset + 1)
				AND RowNumber <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
			BEGIN
				SET @LocationName = (
						SELECT TOP 1 strLocName
						FROM tblInvLoc (NOLOCK)
						WHERE dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@LocationName))
							OR dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName))
						)
			END;

			WITH Data_Inv
			AS (
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,NULL AS Pricelist
					,CONVERT(DECIMAL(18, 2), 0) AS Selling
					,CAST(ISNULL(CASE 
								WHEN dbo.tblInv.bitInvSerialType = 1
									THEN (
											SELECT bitTrackExpiryDate
											FROM dbo.tblInvSerialTypes(NOLOCK)
											WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
											)
								ELSE 0
								END, 0) AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
					,InvPrice.strUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
					,dbo.tblInvUOMs.strPartNumber
					,dbo.tblInvUOMs.strConversionType
					,dbo.tblInvUOMs.decConversionFactor
				FROM dbo.tblInv(NOLOCK)
				INNER JOIN (
					SELECT DISTINCT dbo.tblInvPrice.strPartNumber
						,dbo.tblInvPrice.strUnit
						,bitStockUnit
					FROM dbo.tblInvPrice(NOLOCK)
					) AS InvPrice ON InvPrice.strPartNumber = dbo.tblInv.strPartNumber
				LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = InvPrice.strUnit
					AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data <> 5
							)
						OR @InvType = NULL
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND (
						(
							dbo.tblInvUOMs.strUseFor = 'Sales'
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR InvPrice.bitStockUnit = 1
						)
					AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '') = ''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
					--AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%' or dbo.tblInv.strDesc  Like  '%'+@SearchText+'%')
				)
				,Data_Final
			AS (
				SELECT Data_Inv.PartNumber
					,Data_Inv.[Description]
					,Data_Inv.[Type]
					,Data_Inv.Category
					,Data_Inv.SubCategory
					,Data_Inv.SubCategoryGroup
					,Data_Inv.IsUseBOM
					,Data_Inv.IsInactive
					,Data_Inv.Field1
					,Data_Inv.Field2
					,Data_Inv.Field3
					,Data_Inv.Field4
					,Data_Inv.Field5
					,Data_Inv.Field6
					,Data_Inv.BarCode
					,Data_Inv.IsInvSerialType
					,Data_Inv.BarCode2
					,Data_Inv.Pricelist
					,Data_Inv.Selling
					,Data_Inv.IsTrackExpiryDate
					,Data_Inv.LastPPUnit
					,Data_Inv.DecimalQuantity
					,Data_Inv.StockUnit
					,Data_Inv.BuyToStock
					,Data_Inv.ExtendedDesc
					,dbo.tblInvExt.decAvail AS SumAvail
					,dbo.tblInvExt.decAlloc AS SumAlloc
					,dbo.tblInvExt.decManuf AS SumManuf
					,CASE 
						WHEN dbo.tblInvExt.decOnHand = 0
							THEN 0
						ELSE (
								CASE 
									WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
										THEN dbo.tblInvExt.decOnHand
									ELSE CASE strConversionType
											WHEN 'Multiply'
												THEN dbo.tblInvExt.decOnHand / decConversionFactor
											ELSE dbo.tblInvExt.decOnHand * decConversionFactor
											END
									END
								)
						END AS SumOnHand
					,dbo.tblInvExt.decValue AS SumValue
					,dbo.tblInvExt.decOnOrder AS SumOnOrder
				FROM Data_Inv
				INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_Inv.PartNumber = dbo.tblInvExt.strPartNumber
				WHERE (
						dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
						AND dbo.tblInvExt.bitInActive = 0
						)
				
				UNION ALL
				
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,NULL AS Pricelist
					,CONVERT(DECIMAL(18, 2), 0) AS Selling
					,CAST(0 AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblinv.strStockUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
					,dbo.tblInv.decSumAvail AS SumAvail
					,dbo.tblInv.decSumAlloc AS SumAlloc
					,dbo.tblInv.decSumManuf AS SumManuf
					,dbo.tblInv.decSumOnHand AS SumOnHand
					,dbo.tblInv.decSumValue AS SumValue
					,dbo.tblInv.decSumOnOrder AS SumOnOrder
				FROM dbo.tblInv(NOLOCK)
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							ISNULL((
									SELECT data
									FROM dbo.split(@InvType, ',')
									WHERE data = 5
									), 0)
							)
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '') = ''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
					--AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%' or dbo.tblInv.strDesc  Like  '%'+@SearchText+'%')
				)
				,Data_Final1
			AS (
				SELECT *
				FROM (
					SELECT ROW_NUMBER() OVER (
							ORDER BY Data_Final.[Description]
							) AS RowNumber
						,Data_Final.*
						,TotalRows = (
							SELECT Count(*)
							FROM Data_Final
							)
						,CASE 
							WHEN @FilterType = 0
								THEN NULL
							WHEN @FilterType = 1
								THEN dbo.tblInvVend.strVendName
							WHEN @FilterType = 2
								THEN dbo.tblInvCustomer.strCustName
							END AS CustVendID
						,tblInvImg.ImgData
					FROM Data_Final
					INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Final.PartNumber
					LEFT OUTER JOIN dbo.tblInvVend(NOLOCK) ON Data_Final.PartNumber = tblInvVend.strPartNumber
					LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Final.PartNumber = tblInvCustomer.strPartNumber
					LEFT OUTER JOIN tblInvImg (NOLOCK) ON Data_Final.PartNumber = tblInvImg.strPartNumber
					) AS TEMP
				)
			SELECT Data_Final1.*
				,(
					CASE 
						WHEN @TotalRows > (CEILING(Data_Final1.TotalRows / @PageSize) * @PageSize)
							THEN (CEILING(Data_Final1.TotalRows / @PageSize) + 1)
						ELSE CEILING(Data_Final1.TotalRows / @PageSize)
						END
					) AS TotalPages
			FROM Data_Final1
			WHERE RowNumber >= (@Offset + 1)
				AND RowNumber <= (@Offset + @PageSize)
			ORDER BY RowNumber
		END
	END
	ELSE
	BEGIN
		IF ISNULL(@LocationName, '') = ''
		BEGIN
				;

			WITH Data_Inv
			AS (
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.decSumAvail AS SumAvail
					,dbo.tblInv.decSumAlloc AS SumAlloc
					,dbo.tblInv.decSumManuf AS SumManuf
					,CASE 
						WHEN dbo.tblInv.decSumOnHand = 0
							THEN 0
						ELSE (
								CASE 
									WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '''') = ''''
										THEN dbo.tblInv.decSumOnHand
									ELSE CASE dbo.tblInvUOMs.strConversionType
											WHEN 'Multiply'
												THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor
											ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor
											END
									END
								)
						END AS SumOnHand
					,dbo.tblInv.decSumValue AS SumValue
					,dbo.tblInv.decSumOnOrder AS SumOnOrder
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,NULL AS Pricelist
					,CONVERT(DECIMAL(18, 2), 0) AS Selling
					,CAST(ISNULL(CASE 
								WHEN dbo.tblInv.bitInvSerialType = 1
									THEN (
											SELECT bitTrackExpiryDate
											FROM dbo.tblInvSerialTypes(NOLOCK)
											WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
											)
								ELSE 0
								END, 0) AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
					,InvPrice.strUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
				FROM dbo.tblInv(NOLOCK)
				INNER JOIN (
					SELECT DISTINCT dbo.tblInvPrice.strPartNumber
						,dbo.tblInvPrice.strUnit
						,bitStockUnit
					FROM dbo.tblInvPrice(NOLOCK)
					) AS InvPrice ON InvPrice.strPartNumber = dbo.tblInv.strPartNumber
				LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = InvPrice.strUnit
					AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data <> 5
							)
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND (
						(
							dbo.tblInvUOMs.strUseFor = 'Sales'
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR InvPrice.bitStockUnit = 1
						)
					AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '') = ''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
					--AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%' or dbo.tblInv.strDesc  Like  '%'+@SearchText+'%')
				
				UNION ALL
				
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.decSumAvail AS SumAvail
					,dbo.tblInv.decSumAlloc AS SumAlloc
					,dbo.tblInv.decSumManuf AS SumManuf
					,dbo.tblInv.decSumOnHand AS SumOnHand
					,dbo.tblInv.decSumValue AS SumValue
					,dbo.tblInv.decSumOnOrder AS SumOnOrder
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsTrackExpiryDate
					,dbo.tblInv.strBarCode2 AS BarCode2
					,NULL AS Pricelist
					,CONVERT(DECIMAL(18, 2), 0) AS Selling
					,CAST(0 AS BIT) AS bitTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInv.strStockUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
				FROM dbo.tblInv(NOLOCK)
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							ISNULL((
									SELECT data
									FROM dbo.split(@InvType, ',')
									WHERE data = 5
									), 0)
							)
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '') = ''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
					--AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%' or dbo.tblInv.strDesc  Like  '%'+@SearchText+'%')
				)
				,Data_Final
			AS (
				SELECT ROW_NUMBER() OVER (
						ORDER BY Data_Inv.PartNumber
						) AS RowNumber
					,Data_Inv.*
					,CASE 
						WHEN @FilterType = 0
							THEN NULL
						WHEN @FilterType = 1
							THEN dbo.tblInvVend.strVendName
						WHEN @FilterType = 2
							THEN dbo.tblInvCustomer.strCustName
						END AS CustVendID
					,tblInvImg.ImgData
					,TotalRows = (
						SELECT Count(*)
						FROM Data_Inv
						)
				FROM Data_Inv
				INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Inv.PartNumber
				LEFT OUTER JOIN dbo.tblInvVend(NOLOCK) ON Data_Inv.PartNumber = tblInvVend.strPartNumber
				LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Inv.PartNumber = tblInvCustomer.strPartNumber
				LEFT OUTER JOIN tblInvImg (NOLOCK) ON Data_Inv.PartNumber = tblInvImg.strPartNumber
				)
			SELECT *
				,(
					CASE 
						WHEN @TotalRows > (CEILING(TotalRows / @PageSize) * @PageSize)
							THEN (CEILING(TotalRows / @PageSize) + 1)
						ELSE CEILING(TotalRows / @PageSize)
						END
					) AS TotalPages
			FROM Data_Final
			WHERE RowNumber >= (@Offset + 1)
				AND RowNumber <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
			BEGIN
				SET @LocationName = (
						SELECT TOP 1 strLocName
						FROM tblInvLoc (NOLOCK)
						WHERE dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@LocationName))
							OR dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName))
						)
			END;

			WITH Data_Inv
			AS (
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,NULL AS Pricelist
					,CONVERT(DECIMAL(18, 2), 0) AS Selling
					,CAST(ISNULL(CASE 
								WHEN dbo.tblInv.bitInvSerialType = 1
									THEN (
											SELECT bitTrackExpiryDate
											FROM dbo.tblInvSerialTypes(NOLOCK)
											WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
											)
								ELSE 0
								END, 0) AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
					,InvPrice.strUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
					,dbo.tblInvUOMs.strPartNumber
					,dbo.tblInvUOMs.strConversionType
					,dbo.tblInvUOMs.decConversionFactor
				FROM dbo.tblInv(NOLOCK)
				INNER JOIN (
					SELECT DISTINCT dbo.tblInvPrice.strPartNumber
						,dbo.tblInvPrice.strUnit
						,bitStockUnit
					FROM dbo.tblInvPrice(NOLOCK)
					) AS InvPrice ON InvPrice.strPartNumber = dbo.tblInv.strPartNumber
				LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = InvPrice.strUnit
					AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data <> 5
							)
						OR @InvType = NULL
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND (
						(
							dbo.tblInvUOMs.strUseFor = 'Sales'
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR InvPrice.bitStockUnit = 1
						)
					AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '') = ''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
					--AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%' or dbo.tblInv.strDesc  Like  '%'+@SearchText+'%')
				)
				,Data_Final
			AS (
				SELECT Data_Inv.PartNumber
					,Data_Inv.[Description]
					,Data_Inv.[Type]
					,Data_Inv.Category
					,Data_Inv.SubCategory
					,Data_Inv.SubCategoryGroup
					,Data_Inv.IsUseBOM
					,Data_Inv.IsInactive
					,Data_Inv.Field1
					,Data_Inv.Field2
					,Data_Inv.Field3
					,Data_Inv.Field4
					,Data_Inv.Field5
					,Data_Inv.Field6
					,Data_Inv.BarCode
					,Data_Inv.IsInvSerialType
					,Data_Inv.BarCode2
					,Data_Inv.Pricelist
					,Data_Inv.Selling
					,Data_Inv.IsTrackExpiryDate
					,Data_Inv.LastPPUnit
					,Data_Inv.DecimalQuantity
					,Data_Inv.StockUnit
					,Data_Inv.BuyToStock
					,Data_Inv.ExtendedDesc
					,dbo.tblInvExt.decAvail AS SumAvail
					,dbo.tblInvExt.decAlloc AS SumAlloc
					,dbo.tblInvExt.decManuf AS SumManuf
					,CASE 
						WHEN dbo.tblInvExt.decOnHand = 0
							THEN 0
						ELSE (
								CASE 
									WHEN ISNULL(Data_Inv.strPartNumber, '''') = ''''
										THEN dbo.tblInvExt.decOnHand
									ELSE CASE strConversionType
											WHEN 'Multiply'
												THEN dbo.tblInvExt.decOnHand / decConversionFactor
											ELSE dbo.tblInvExt.decOnHand * decConversionFactor
											END
									END
								)
						END AS SumOnHand
					,dbo.tblInvExt.decValue AS SumValue
					,dbo.tblInvExt.decOnOrder AS SumOnOrder
				FROM Data_Inv
				INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_Inv.PartNumber = dbo.tblInvExt.strPartNumber
				WHERE (
						dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
						AND dbo.tblInvExt.bitInActive = 0
						)
				
				UNION ALL
				
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,NULL AS Pricelist
					,CONVERT(DECIMAL(18, 2), 0) AS Selling
					,CAST(0 AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblinv.strStockUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
					,dbo.tblInv.decSumAvail AS SumAvail
					,dbo.tblInv.decSumAlloc AS SumAlloc
					,dbo.tblInv.decSumManuf AS SumManuf
					,dbo.tblInv.decSumOnHand AS SumOnHand
					,dbo.tblInv.decSumValue AS SumValue
					,dbo.tblInv.decSumOnOrder AS SumOnOrder
				FROM dbo.tblInv(NOLOCK)
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							ISNULL((
									SELECT data
									FROM dbo.split(@InvType, ',')
									WHERE data = 5
									), 0)
							)
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '') = ''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
					--AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%' or dbo.tblInv.strDesc  Like  '%'+@SearchText+'%')
				)
				,Data_Final1
			AS (
				SELECT *
				FROM (
					SELECT ROW_NUMBER() OVER (
							ORDER BY Data_Final.PartNumber
							) AS RowNumber
						,Data_Final.*
						,TotalRows = (
							SELECT Count(*)
							FROM Data_Final
							)
						,CASE 
							WHEN @FilterType = 0
								THEN NULL
							WHEN @FilterType = 1
								THEN dbo.tblInvVend.strVendName
							WHEN @FilterType = 2
								THEN dbo.tblInvCustomer.strCustName
							END AS CustVendID
						,tblInvImg.ImgData
					FROM Data_Final
					INNER JOIN [fnInvSearch](@SearchText, @isSearchTextPartNumber) AS CT ON CT.strPartNumber = Data_Final.PartNumber
					LEFT OUTER JOIN dbo.tblInvVend(NOLOCK) ON Data_Final.PartNumber = tblInvVend.strPartNumber
					LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Final.PartNumber = tblInvCustomer.strPartNumber
					LEFT OUTER JOIN tblInvImg (NOLOCK) ON Data_Final.PartNumber = tblInvImg.strPartNumber
					) AS TEMP
				)
			SELECT Data_Final1.*
				,(
					CASE 
						WHEN @TotalRows > (CEILING(Data_Final1.TotalRows / @PageSize) * @PageSize)
							THEN (CEILING(Data_Final1.TotalRows / @PageSize) + 1)
						ELSE CEILING(Data_Final1.TotalRows / @PageSize)
						END
					) AS TotalPages
			FROM Data_Final1
			WHERE RowNumber >= (@Offset + 1)
				AND RowNumber <= (@Offset + @PageSize)
			ORDER BY RowNumber
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvCatSecCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------
CREATE PROCEDURE [dbo].[GetInvCatSecCount]
(
	@PartNumber AS VARCHAR(100),
	@UserName AS VARCHAR(40)
)
AS
BEGIN
	SELECT COUNT(strPartNumber)
	FROM tblInv
	WHERE strPartNumber = @PartNumber
		AND strCategory IN (
			SELECT tblInvCat.strCategory
			FROM tblInvCat
			LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
			WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0
				OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = @UserName)
			)
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvContainersData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetDeliveryMethodRateBillingWithTax] ***********/

/*********** Start [GetInvContainersData] ***********/
CREATE PROCEDURE [dbo].[GetInvContainersData]
(	
	@PartNumber AS NVARCHAR(50),
	@Location AS NVARCHAR (10)
)
AS
BEGIN
SELECT tblInvContainers.strPartNumber AS PartNumber
	,tblInvContainers.strPartItemNumber AS ItemNumber
	,tblInv.strDesc AS [Description] 
	,tblInvContainers.decQuantity AS Quantity
	,@Location AS LocationName
	,ISNULL((
			SELECT strDesc
			FROM tblInvLoc
			WHERE strLocName = @Location
			), '') AS LocationDesc
	,tblInvContainers.bitRoundUp AS IsRoundUp	
	,tblInv.intDecimalQuantity AS DecimalQuantity
FROM tblInvContainers
INNER JOIN tblInv ON tblInvContainers.strPartItemNumber = tblInv.strPartNumber
WHERE tblInvContainers.strPartNumber = @PartNumber	
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvCustomerData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/******************* End [GetCustomerTaxCode] ********************/

/******************* Start [GetInvCustomerData] ********************/

CREATE PROCEDURE [dbo].[GetInvCustomerData]
@Custname AS NVARCHAR(50)
AS
BEGIN
SELECT *,(Selling - (Selling * Discount / 100)) AS InvPrice
FROM (
	SELECT ti.strPartNumber AS PartNumber
		,ti.strDesc AS [Desc]
		,tip.decSelling AS Selling
		,ti.strCategory AS Category
		,tc.strCustDesc AS CustDesc 
		,tc.strPricelist AS PriceList
		,Discount = (
			SELECT tdm.decDiscount
			FROM tblDiscountMatrix tdm
			WHERE tdm.strInvCategory = ti.strCategory
				AND tdm.strCustCategory = tc.strCustCategory
			) 
	FROM tblInv ti
	INNER JOIN tblInvPrice tip ON ti.strPartNumber = tip.strPartNumber
	INNER JOIN tblCustomers tc ON tc.strPricelist = tip.strPricelist
	WHERE ti.intType = 1
		AND ti.bitInactive = 0
		AND tc.strCustName = @Custname
	) AS TEMP
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvCustomerList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvVendorList] ***********/

/*********** Start [GetInvCustomerList] ***********/
CREATE PROCEDURE [dbo].[GetInvCustomerList]
AS
BEGIN
	SELECT DISTINCT strCustName AS CustomerName, (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblInvCustomer.strCustName) AS Description FROM tblInvCustomer ORDER BY strCustName
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetOpenOrders] ***********/

/*********** Start [GetInvData] ***********/
CREATE PROCEDURE [dbo].[GetInvData]
(
	@PartNumberList NVARCHAR(MAX)
)
AS
BEGIN
	SELECT strPartNumber AS PartNumber,
       decStandardCost AS StandardCost,
       decLastPPUnit AS LastPPUnit,
	   bitPallet AS IsPallet,
	   intType AS [Type],
	   decSellFromStock AS SellFromStock,
	   bitAutoBuild AS AutoBuild,
       decRepairCharge AS RepairCharge
	FROM tblInv
	WHERE strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@PartNumberList,','))
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvDocIDList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetCustomerTransactionsOpenBal] ***********/

/*********** Start [GetInvDocIDList] ***********/
CREATE PROCEDURE [dbo].[GetInvDocIDList]
(
	@CustomerNumber NVARCHAR(50)
)
AS
BEGIN	
	SELECT 
		strInvDocID 
	FROM 
		tblPaymentPlan 
	WHERE 
		strInvDocID IN (select strInvDocID from tblcusttrans WHERE strCustName = @CustomerNumber AND bitSettled = 0)
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInventory] (
	@SelectedFormat AS INT
	,@SelectedInvType AS INT
	,@SelectedStatus AS INT
	,@StartCategory AS NVARCHAR(40)
	,@EndCategory AS NVARCHAR(40)
	,@IsInvSortDescription AS BIT
	)
AS
BEGIN
	DECLARE @QueryCommand AS NVARCHAR(MAX)
	DECLARE @ParameterDefinition AS NVARCHAR(MAX)

	IF @SelectedFormat = 1
	BEGIN
		IF @SelectedInvType = 0
		BEGIN
			SET @QueryCommand = 
				'SELECT tblInv.strPartNumber AS PartNumber, strBarCode AS BarCode, strBarCode2 AS BarCode2, strDesc AS [Desc], strCategory AS Category, ISNULL(strSubCategory,'''') AS SubCategory , ISNULL(strSubCategoryGroup,'''') AS SubCategoryGroup, strBuyUnit AS BuyUnit, strStockUnit AS StockUnit, decBuyToStock AS BuyToStock, strSellUnit AS SellUnit, decSellFromStock AS SellFromStock, strAddInfo AS AddInfo, strField1 AS Field1, strField2 AS Field2, strField3 AS Field3, strField4 AS Field4, strField5 AS Field5, strField6 AS Field6, decRepairCharge AS RepairCharge, bitInvSerialType AS IsSerialType, ISNULL(strInvSerialType,'''') AS SerialType, decDefSaleQty AS DefaultSaleQty, strExtendedDesc AS ExtendedDesc, bitInactive AS IsInactive, bitWebstoreItem AS IsWebstoreItem, strDimProCode AS DimProCode, bitItemNumConvUsed AS IsItemNumConvUsed, strItemSegment1 AS ItemSegment1, strItemSegment2 AS ItemSegment2, strItemSegment3 AS ItemSegment3, strItemSegment4 AS ItemSegment4, strInvNumConv AS InvNumConv, '''' AS VoucherCode, strRSTTerminalSync AS RSTTerminalSync, bitUseLPPOnPO AS UseLPPOnPO, decCostOnPO AS CostOnPO, decStandardCost AS StandardCost, strBOMNotes AS BOMNotes, decW AS Width, decH As Height, decD AS Depth, decCube AS Cube, decMass As Mass, decVolumetricWeight AS VolumetricWeight, strUnitOfMeasure AS UnitOfMeasure, decFactor AS Factor, bitInclInvForecast AS IsInclInvForecast, bitDimProSales As IsDimProSales, bitDimProPurchases As IsDimProPurchases,ISNULL(strInvWCCode,'''') AS InvWCCode, decSafetyFactorPer AS SafetyFactorPer, decOrderLeadTime AS OrderLeadTime, decDaysSalesinStock AS DaysSalesinStock, decEconomicOrderQty AS EconomicOrderQty, decMinimumOrderQuantity AS MinimumOrderQuantity, strPOSDesc AS POSDesc, bitExclCommission AS IsExclCommission,strURACode AS URACode, strKenyaItemCode AS KenyaItemCode, strKenyaItemClassificationName AS KenyaItemClassification, strZambiaItemClassificationName AS ZambiaItemClass,tblInvItemTax.strZambiaItemTaxCode  As TaxCode, strZambiaInvCountryOriginCode AS ZambiaCountryCode,ISNULL(intzambiaItemType, 0) AS intzambiaItemType FROM tblInv LEFT JOIN tblInvItemTax on tblInv.strPartNumber = tblInvItemTax.strPartNumber  WHERE intType = 1 AND bitItemNumConvUsed = 1 AND bitOtherCmp = 0 AND strCategory >= @StartCategory AND strCategory <= @EndCategory'
		END
		ELSE IF @SelectedInvType = 1
		BEGIN
			SET @QueryCommand = 
				'SELECT tblInv.strPartNumber AS PartNumber, strBarCode AS BarCode, strBarCode2 AS BarCode2, strDesc AS [Desc], strCategory AS Category,ISNULL(strSubCategory,'''') AS SubCategory , ISNULL(strSubCategoryGroup,'''') AS SubCategoryGroup, strBuyUnit AS BuyUnit, strStockUnit AS StockUnit, decBuyToStock AS BuyToStock, strSellUnit AS SellUnit, decSellFromStock AS SellFromStock, strAddInfo AS AddInfo, strField1 AS Field1, strField2 AS Field2, strField3 AS Field3, strField4 AS Field4, strField5 AS Field5, strField6 AS Field6, decRepairCharge AS RepairCharge, decDefSaleQty AS DefaultSaleQty, strExtendedDesc AS ExtendedDesc, bitInactive AS IsInactive, bitItemNumConvUsed AS IsItemNumConvUsed, strItemSegment1 AS ItemSegment1, strItemSegment2 AS ItemSegment2, strItemSegment3 AS ItemSegment3, strItemSegment4 AS ItemSegment4, strInvNumConv AS InvNumConv, ISNULL(strVoucherCode, '''') AS VoucherCode, strRSTTerminalSync AS RSTTerminalSync, bitUseLPPOnPO AS UseLPPOnPO, decCostOnPO AS CostOnPO, decStandardCost AS StandardCost, decW AS Width, decH As Height, decD AS Depth, decCube AS Cube, decMass As Mass, decVolumetricWeight AS VolumetricWeight, strUnitOfMeasure AS UnitOfMeasure, decFactor AS Factor, strPOSDesc AS POSDesc, bitExclCommission AS IsExclCommission,strURACode AS URACode, strKenyaItemCode AS KenyaItemCode, strKenyaItemClassificationName AS KenyaItemClassification, strZambiaItemClassificationName AS ZambiaItemClass,tblInvItemTax.strZambiaItemTaxCode As TaxCode, strZambiaInvCountryOriginCode AS ZambiaCountryCode, ISNULL(intzambiaItemType, 0) AS intzambiaItemType  FROM tblInv LEFT JOIN tblInvItemTax on tblInv.strPartNumber = tblInvItemTax.strPartNumber WHERE intType = 4 AND bitItemNumConvUsed = 1 AND bitOtherCmp = 0'
		END
		ELSE IF @SelectedInvType = 2
		BEGIN
			SET @QueryCommand = 
				'SELECT tblInv.strPartNumber AS PartNumber, strBarCode AS BarCode, strBarCode2 AS BarCode2, strDesc AS [Desc], strCategory AS Category,ISNULL(strSubCategory,'''') AS SubCategory ,ISNULL(strSubCategoryGroup,'''') AS SubCategoryGroup,  strBuyUnit AS BuyUnit, strStockUnit AS StockUnit, decBuyToStock AS BuyToStock, strSellUnit AS SellUnit, decSellFromStock AS SellFromStock, strAddInfo AS AddInfo, strField1 AS Field1, strField2 AS Field2, strField3 AS Field3, strField4 AS Field4, strField5 AS Field5, strField6 AS Field6, decRepairCharge AS RepairCharge, decDefSaleQty AS DefaultSaleQty, strExtendedDesc AS ExtendedDesc, bitInactive AS IsInactive, bitWebstoreItem AS IsWebstoreItem, strDimProCode AS DimProCode, bitItemNumConvUsed AS IsItemNumConvUsed, strItemSegment1 AS ItemSegment1, strItemSegment2 AS ItemSegment2, strItemSegment3 AS ItemSegment3, strItemSegment4 AS ItemSegment4, strInvNumConv AS InvNumConv, strRSTTerminalSync AS RSTTerminalSync, bitUseLPPOnPO AS UseLPPOnPO, decCostOnPO AS CostOnPO, decStandardCost AS StandardCost, decW AS Width, decH As Height, decD AS Depth, decCube AS Cube, decMass As Mass, decVolumetricWeight AS VolumetricWeight, strUnitOfMeasure AS UnitOfMeasure, decFactor AS Factor, strPOSDesc AS POSDesc, bitExclCommission AS IsExclCommission,strURACode AS URACode, strKenyaItemCode AS KenyaItemCode, strKenyaItemClassificationName AS KenyaItemClassification, strZambiaItemClassificationName AS ZambiaItemClass,tblInvItemTax.strZambiaItemTaxCode As TaxCode, strZambiaInvCountryOriginCode AS ZambiaCountryCode, ISNULL(intzambiaItemType, 0)  AS intzambiaItemType FROM tblInv LEFT JOIN tblInvItemTax on tblInv.strPartNumber = tblInvItemTax.strPartNumber WHERE intType = 11 AND bitItemNumConvUsed = 1 AND bitOtherCmp = 0'
		END
	END
	ELSE IF @SelectedFormat = 0
	BEGIN
		IF @SelectedInvType = 0
		BEGIN
			SET @QueryCommand = 
				'SELECT tblInv.strPartNumber AS PartNumber, strBarCode AS BarCode, strBarCode2 AS BarCode2, strDesc AS [Desc], strCategory AS Category,ISNULL(strSubCategory,'''') AS SubCategory , ISNULL(strSubCategoryGroup,'''') AS SubCategoryGroup, strBuyUnit AS BuyUnit, strStockUnit AS StockUnit, decBuyToStock AS BuyToStock, strSellUnit AS SellUnit, decSellFromStock AS SellFromStock, strAddInfo AS AddInfo, strField1 AS Field1, strField2 AS Field2, strField3 AS Field3, strField4 AS Field4, strField5 AS Field5, strField6 AS Field6, decRepairCharge AS RepairCharge, bitInvSerialType AS IsSerialType, ISNULL(strInvSerialType,'''') AS SerialType, decDefSaleQty AS DefaultSaleQty, strExtendedDesc AS ExtendedDesc, bitInactive AS IsInactive, bitWebstoreItem AS IsWebstoreItem, strDimProCode AS DimProCode, strRSTTerminalSync AS RSTTerminalSync, bitUseLPPOnPO AS UseLPPOnPO, decCostOnPO AS CostOnPO, decStandardCost AS StandardCost, strBOMNotes AS BOMNotes, decW AS Width, decH As Height, decD AS Depth, decCube AS Cube, decMass As Mass, decVolumetricWeight AS VolumetricWeight, strUnitOfMeasure AS UnitOfMeasure, decFactor AS Factor, bitInclInvForecast AS IsInclInvForecast,bitDimProSales As IsDimProSales, bitDimProPurchases As IsDimProPurchases,ISNULL(strInvWCCode,'''') AS InvWCCode, decSafetyFactorPer AS SafetyFactorPer, decOrderLeadTime AS OrderLeadTime, decDaysSalesinStock AS DaysSalesinStock, decEconomicOrderQty AS EconomicOrderQty, decMinimumOrderQuantity AS MinimumOrderQuantity, strPOSDesc AS POSDesc, bitExclCommission AS IsExclCommission, strKenyaItemCode AS KenyaItemCode, strKenyaItemClassificationName AS KenyaItemClassification, strZambiaItemClassificationName AS ZambiaItemClass,tblInvItemTax.strZambiaItemTaxCode As TaxCode, strZambiaInvCountryOriginCode AS ZambiaCountryCode, ISNULL(intzambiaItemType, 0) AS intzambiaItemType  FROM tblInv LEFT JOIN tblInvItemTax on tblInv.strPartNumber = tblInvItemTax.strPartNumber WHERE intType = 1 AND bitItemNumConvUsed = 0 AND bitOtherCmp = 0 AND strCategory >= @StartCategory AND strCategory <= @EndCategory'
		END
		ELSE IF @SelectedInvType = 1
		BEGIN
			SET @QueryCommand = 
				'SELECT tblInv.strPartNumber AS PartNumber, strBarCode AS BarCode, strBarCode2 AS BarCode2, strDesc AS [Desc], strCategory AS Category,ISNULL(strSubCategory,'''') AS SubCategory ,ISNULL(strSubCategoryGroup,'''') AS SubCategoryGroup,  strBuyUnit AS BuyUnit, strStockUnit AS StockUnit, strSellUnit AS SellUnit, strAddInfo AS AddInfo, strField1 AS Field1, strField2 AS Field2, strField3 AS Field3, strField4 AS Field4, strField5 AS Field5, strField6 AS Field6, decRepairCharge AS RepairCharge, decDefSaleQty AS DefaultSaleQty, strExtendedDesc AS ExtendedDesc, bitInactive AS IsInactive, ISNULL(strVoucherCode, '''') AS VoucherCode, strRSTTerminalSync AS RSTTerminalSync, bitUseLPPOnPO AS UseLPPOnPO, decCostOnPO AS CostOnPO, decStandardCost AS StandardCost, decW AS Width, decH As Height, decD AS Depth, decCube AS Cube, decMass As Mass, decVolumetricWeight AS VolumetricWeight, strUnitOfMeasure AS UnitOfMeasure, decFactor AS Factor, strPOSDesc AS POSDesc, bitExclCommission AS IsExclCommission, strKenyaItemCode AS KenyaItemCode, strKenyaItemClassificationName AS KenyaItemClassification, strZambiaItemClassificationName AS ZambiaItemClass,tblInvItemTax.strZambiaItemTaxCode  As TaxCode, strZambiaInvCountryOriginCode AS ZambiaCountryCode, ISNULL(intzambiaItemType, 0) AS intzambiaItemType  FROM tblInv LEFT JOIN tblInvItemTax on tblInv.strPartNumber = tblInvItemTax.strPartNumber WHERE intType = 4 AND bitItemNumConvUsed = 0 AND bitOtherCmp = 0'
		END
		ELSE IF @SelectedInvType = 2
		BEGIN
			SET @QueryCommand = 
				'SELECT tblInv.strPartNumber AS PartNumber, strBarCode AS BarCode, strBarCode2 AS BarCode2, strDesc AS [Desc], strCategory AS Category, ISNULL(strSubCategory,'''') AS SubCategory ,ISNULL(strSubCategoryGroup,'''') AS SubCategoryGroup, strBuyUnit AS BuyUnit, strStockUnit AS StockUnit, decBuyToStock AS BuyToStock, strSellUnit AS SellUnit, decSellFromStock AS SellFromStock, strAddInfo AS AddInfo, strField1 AS Field1, strField2 AS Field2, strField3 AS Field3, strField4 AS Field4, strField5 AS Field5, strField6 AS Field6, decRepairCharge AS RepairCharge, decDefSaleQty AS DefaultSaleQty, strExtendedDesc AS ExtendedDesc, bitInactive AS IsInactive, bitWebstoreItem AS IsWebstoreItem, strDimProCode AS DimProCode, strRSTTerminalSync AS RSTTerminalSync, bitUseLPPOnPO AS UseLPPOnPO, decCostOnPO AS CostOnPO, decStandardCost AS StandardCost, decW AS Width, decH As Height, decD AS Depth, decCube AS Cube, decMass As Mass, decVolumetricWeight AS VolumetricWeight, strUnitOfMeasure AS UnitOfMeasure, decFactor AS Factor, strPOSDesc AS POSDesc, bitExclCommission AS IsExclCommission, strKenyaItemCode AS KenyaItemCode, strKenyaItemClassificationName AS KenyaItemClassification, strZambiaItemClassificationName AS ZambiaItemClass,tblInvItemTax.strZambiaItemTaxCode  As TaxCode, strZambiaInvCountryOriginCode AS ZambiaCountryCode, ISNULL(intzambiaItemType, 0) AS intzambiaItemType FROM tblInv LEFT JOIN tblInvItemTax on tblInv.strPartNumber = tblInvItemTax.strPartNumber WHERE intType = 11 AND bitItemNumConvUsed = 0 AND bitOtherCmp = 0'
		END
	END

	IF @SelectedStatus <> 0
	BEGIN
		IF @SelectedStatus = 1
		BEGIN
			SET @QueryCommand += ' AND bitInactive = 0'
		END
		ELSE
		BEGIN
			SET @QueryCommand += ' AND bitInactive = 1'
		END
	END

	IF @IsInvSortDescription = 0
	BEGIN
		SET @QueryCommand += ' ORDER BY tblInv.strPartNumber'
	END
	ELSE
	BEGIN
		SET @QueryCommand += ' ORDER BY strDesc'
	END

	SET @ParameterDefinition = ' @StartCategory NVARCHAR(40),
								@EndCategory NVARCHAR(40)'

	EXECUTE sp_executesql @QueryCommand
		,@ParameterDefinition
		,@StartCategory
		,@EndCategory
END
GO

/****** Object:  StoredProcedure [dbo].[GetInventoryAssetsAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetInventoryAssetsAccountsCY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.intAccType = 1  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND tblAccounts.intAccClass = 5  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.intAccType = 1  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND tblAccounts.intAccClass = 5  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.intAccType = 1  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND tblAccounts.intAccClass = 5  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.intAccType = 1  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND tblAccounts.intAccClass = 5  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
  
 RETURN  
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryAssetsAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetInventoryAssetsAccountsLY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 1  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND tblAccountsLY.intAccClass = 5  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 1  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND tblAccountsLY.intAccClass = 5  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 1  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND tblAccountsLY.intAccClass = 5  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 1  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND tblAccountsLY.intAccClass = 5  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
  
 RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryBOM]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/***********End [UpdateContractPrint]****************/

/***********Start [GetInventoryBOM]***************************/
CREATE PROCEDURE [dbo].[GetInventoryBOM]
@DocNumber AS NVARCHAR(50)
AS
BEGIN
	SELECT tblInvBOM.strPartNumber AS PartNumber 
	,tblContractBillDT.intLineNo AS [LineNo]
	,tblInvBOM.strPartItemNumber AS PartItemNumber
	,tblInvBOM.intQtyToUse AS QtyToUse
	,tblInvBOM.strLocName AS LocName
FROM tblInvBOM
INNER JOIN tblContractBillDT ON tblInvBOM.strPartNumber = tblContractBillDT.strPartNumber
INNER JOIN tblInv ON tblContractBillDT.strPartNumber = tblInv.strPartNumber
WHERE tblContractBillDT.strContDocID = @DocNumber
	AND tblInv.bitAutoBuild = 1
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryCategory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetInventorySearchData] ***********/

/*********** Start [GetInventoryCategory] ***********/
CREATE PROCEDURE [dbo].[GetInventoryCategory]
(
	@UserName NVARCHAR(40),
	@IsBPToolsMode BIT
)
AS
BEGIN
	SELECT strCategory 
	FROM tblInvCat 
	WHERE bitInactive = 0 AND (@IsBPToolsMode = 1 OR strCategory IN 
		(	SELECT tblInvCat.strCategory 
			FROM tblInvCat
			LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory 
			WHERE ISNULL(
						 (SELECT COUNT(tblInvCatSec.strCategory) 
						  FROM tblInvCatSec 
						  WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL(
																									(SELECT COUNT(tblInvCatSec.strCategory) 
																									 FROM tblInvCatSec
																									 WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 
																										    AND tblInvCatSec.strUserName = strUserName)
		))
	 ORDER BY strCategory
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryClearHistoryData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetInventoryClearHistoryData]
AS
SELECT tblAccountSets.intGLAsset GLAsset, tblAccounts.strDesc 'Desc', FORMAT(SUM(DISTINCT tblAccounts.decBalance),'#,##0.00') AS AcctBal, FORMAT(SUM(tblInvExt.decValue),'#,##0.00') AS InvBal ,
case when SUM(DISTINCT tblAccounts.decBalance) - SUM(tblInvExt.decValue) = 0 then 'Balanced' else FORMAT(SUM(DISTINCT tblAccounts.decBalance) - SUM(tblInvExt.decValue),'#,##0.00') end as 'Variance'
FROM dbo.fnTblInvForLocJoin() tblInv LEFT JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocName 
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
LEFT JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblAccountSets.blnService = 0) AND (tblInv.intType = 1)
GROUP BY tblAccountSets.intGLAsset, tblAccounts.strDesc
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryCustomer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInventoryVendor] ***********/

/*********** Start [GetInventoryCustomer] ***********/
CREATE PROCEDURE [dbo].[GetInventoryCustomer]
AS
BEGIN
	SELECT tblInvCustomer.strPartNumber AS PartNumber
		,tblInvCustomer.strCustName AS CustVendName
	FROM tblInvCustomer
	LEFT JOIN tblInv ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblCustomers ON tblInvCustomer.strCustName = tblCustomers.strCustName
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInventoryData] (
	@Part AS NVARCHAR(50)
	,@BarCode AS NVARCHAR(300)
	,@PriceList AS VARCHAR(20)
	,@GPCalcInvLevel AS INT
	,@GPCalcLPP AS INT
	,@LocName AS NVARCHAR(50)
	,@UserName AS NVARCHAR(20)
	,@IsBPToolsMode AS BIT
	,@TransactionType AS NVARCHAR(20)
	,@Date AS DATETIME
	,@Unit AS NVARCHAR(50)
	)
AS
BEGIN
	--SELECT tblInv.strDesc AS [Desc], tblInv.strStockUnit AS StockUnit, tblInv.intType AS [Type], tblInv.bitAllowPriceChg AS AllowPriceChg, ISNULL(tblInvPrice.decSelling,0) AS Selling, tblInv.strPartNumber AS PartNumber,tblInv.strField1 AS Field1,tblInv.strField2 AS Field2,tblInv.strField3 AS Field3,tblInv.strField4 AS Field4,tblInv.strField5 AS Field5,tblInv.strField6 AS Field6,tblInv.decSumAvail AS SumAvail,ISNULL(tblPricelists.bitShowZeroSellingPrice, 0) AS ShowZeroSellingPrice, tblInv.strSellUnit AS SellUnit, tblInv.strSellStockUnit AS SellStockUnit, tblInv.decSellFromStock AS SellFromStock, tblInv.bitInvSerialType AS IsSerialType, 

	--CASE WHEN tblInv.intType = 4 THEN tblInv.decStandardCost ELSE CASE @GPCalcLPP WHEN 0 THEN tblInv.decLastPPUnit WHEN 1 THEN tblInv.decStandardCost WHEN 2 THEN CASE @GPCalcInvLevel WHEN 0 THEN CASE WHEN tblInv.decLastPPUnit > ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @LocName),0) THEN tblInv.decLastPPUnit ELSE CASE WHEN tblInv.decLastPPUnit < ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @LocName),0) THEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @LocName),0) ELSE CASE WHEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @LocName),0) = 0 THEN tblInv.decLastPPUnit ELSE ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @LocName),0) END END END WHEN 1 THEN CASE WHEN tblInv.decLastPPUnit > ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END),0) THEN tblInv.decLastPPUnit ELSE CASE WHEN tblInv.decLastPPUnit < ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END),0) THEN ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END),0) ELSE CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0 THEN tblInv.decLastPPUnit ELSE ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END),0) END END END ELSE tblInv.decLastPPUnit END WHEN 3 THEN CASE @GPCalcInvLevel WHEN 0 THEN CASE WHEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @LocName),0) = 0 THEN tblInv.decLastPPUnit ELSE ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @LocName),0) END WHEN 1 THEN CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0 THEN tblInv.decLastPPUnit ELSE ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END),0) END ELSE tblInv.decLastPPUnit END ELSE tblInv.decLastPPUnit END END AS GPCalc, tblInv.decDefSaleQty AS DefaultSaleQty, tblInv.bitVoucherEnabled AS IsVoucherEnabled, ISNULL(tblInv.strVoucherCode, '') AS VoucherCode, tblInv.strDimProCode AS DimProCode, tblInv.strExtendedDesc AS ExtendedDesc, tblInv.strUnitOfMeasure AS UnitOfMeasure, tblInv.decMass AS Mass, tblInv.decVolumetricWeight AS VolumetricWeight, 
	--CAST((SELECT COUNT(tblInvUpsell.strPartItemNumber) FROM tblInvUpsell WHERE tblInvUpsell.strPartNumber = tblInv.strPartNumber) AS BIT) AS IsUpsellItem,
	--ISNULL(tblInvSerialTypes.bitDimensionExist,0) AS IsSerialDimension  FROM tblInv LEFT OUTER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber LEFT OUTER JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType WHERE (tblInv.strPartNumber = @Part OR tblInv.strBarCode = @BarCode OR tblInv.strBarCode2 = @BarCode) AND (tblInvPrice.strPricelist = @PriceList OR tblInvPrice.strPricelist IS NULL) AND tblInv.bitInactive = 0
	IF (@Unit IS NULL)
	BEGIN
		SELECT tblInv.strDesc AS [Desc]
			,tblInv.strStockUnit AS StockUnit
			,tblInv.intType AS [Type]
			,tblInv.bitAllowPriceChg AS AllowPriceChg
			,ISNULL(tblInvPrice.decSelling, 0) AS Selling
			,tblInv.strPartNumber AS PartNumber
			,tblInv.strField1 AS Field1
			,tblInv.strField2 AS Field2
			,tblInv.strField3 AS Field3
			,tblInv.strField4 AS Field4
			,tblInv.strField5 AS Field5
			,tblInv.strField6 AS Field6
			,tblInv.decSumAvail AS SumAvail
			,ISNULL(tblPricelists.bitShowZeroSellingPrice, 0) AS ShowZeroSellingPrice
			,ISNULL(tblInvPrice.strUnit, tblInv.strSellUnit) AS SellUnit
			,tblInv.strSellStockUnit AS SellStockUnit
			,ISNULL(CASE strConversionType
					WHEN 'Multiply'
						THEN decConversionFactor
					ELSE 1 / decConversionFactor
					END, decSellFromStock) AS SellFromStock
			,tblInv.bitInvSerialType AS IsSerialType
			,CASE 
				WHEN tblInv.intType = 4
					THEN tblInv.decStandardCost
				ELSE CASE @GPCalcLPP
						WHEN 0
							THEN tblInv.decLastPPUnit
						WHEN 1
							THEN tblInv.decStandardCost
						WHEN 2
							THEN CASE @GPCalcInvLevel
									WHEN 0
										THEN CASE 
												WHEN tblInv.decLastPPUnit > ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = @LocName
															), 0)
													THEN tblInv.decLastPPUnit
												ELSE CASE 
														WHEN tblInv.decLastPPUnit < ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0)
															THEN ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt EXT
																		WHERE EXT.strPartNumber = tblInv.strPartNumber
																			AND EXT.strLocName = @LocName
																		), 0)
														ELSE CASE 
																WHEN ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = @LocName
																			), 0) = 0
																	THEN tblInv.decLastPPUnit
																ELSE ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = @LocName
																			), 0)
																END
														END
												END
									WHEN 1
										THEN CASE 
												WHEN tblInv.decLastPPUnit > ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN tblInv.decLastPPUnit
												ELSE CASE 
														WHEN tblInv.decLastPPUnit < ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
															THEN ISNULL((
																		CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END
																		), 0)
														ELSE CASE 
																WHEN CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END = 0
																	THEN tblInv.decLastPPUnit
																ELSE ISNULL((
																			CASE tblInv.decSumOnHand
																				WHEN 0
																					THEN 0
																				ELSE tblInv.decSumValue / tblInv.decSumOnHand
																				END
																			), 0)
																END
														END
												END
									ELSE tblInv.decLastPPUnit
									END
						WHEN 3
							THEN CASE @GPCalcInvLevel
									WHEN 0
										THEN CASE 
												WHEN ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = @LocName
															), 0) = 0
													THEN tblInv.decLastPPUnit
												ELSE ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = @LocName
															), 0)
												END
									WHEN 1
										THEN CASE 
												WHEN CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END = 0
													THEN tblInv.decLastPPUnit
												ELSE ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
												END
									ELSE tblInv.decLastPPUnit
									END
						ELSE tblInv.decLastPPUnit
						END
				END AS GPCalc
			,tblInv.decDefSaleQty AS DefaultSaleQty
			,tblInv.bitVoucherEnabled AS IsVoucherEnabled
			,ISNULL(tblInv.strVoucherCode, '') AS VoucherCode
			,tblInv.strDimProCode AS DimProCode
			,tblInv.strExtendedDesc AS ExtendedDesc
			,tblInv.strUnitOfMeasure AS UnitOfMeasure
			,tblInv.decMass AS Mass
			,tblInv.decVolumetricWeight AS VolumetricWeight
			,CAST((
					SELECT COUNT(tblInvUpsell.strPartItemNumber)
					FROM tblInvUpsell
					WHERE tblInvUpsell.strPartNumber = tblInv.strPartNumber
					) AS BIT) AS IsUpsellItem
			,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimension
			,tblInv.bitAutoBuild AS AutoBuild
			,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT SUM(INV.decLastPPUnit)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							WHERE BOM.strPartNumber = tblInv.strPartNumber
							), 0)
				END AS AutoBuildLRC
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT SUM(INV.decStandardCost)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							WHERE BOM.strPartNumber = tblInv.strPartNumber
							), 0)
				END AS AutoBuildSC
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT ISNULL(SUM(CASE EXT.decOnHand
											WHEN 0
												THEN 0
											ELSE EXT.decValue / EXT.decOnHand
											END), 0)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
							WHERE BOM.strPartNumber = tblInv.strPartNumber
								AND EXT.strLocName = @LocName
							), 0)
				END AS AutoBuildMALocDef
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT ISNULL(SUM(CASE EXT.decOnHand
											WHEN 0
												THEN 0
											ELSE EXT.decValue / EXT.decOnHand
											END), 0)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
								AND BOM.strLocName = EXT.strLocName
							WHERE BOM.strPartNumber = tblInv.strPartNumber
							), 0)
				END AS AutoBuildMALocation
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT ISNULL(SUM(CASE INV.decSumOnHand
											WHEN 0
												THEN 0
											ELSE INV.decSumValue / INV.decSumOnHand
											END), 0)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							WHERE BOM.strPartNumber = tblInv.strPartNumber
							), 0)
				END AS AutoBuildMAMain
			,strHSCode AS HSCode
			,strHSDesc AS HSDesc
			,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
		FROM tblInv
		LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
		LEFT JOIN tblPriceListsByDate ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
		LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber
			AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
			AND tblInvUOMs.bitInactive = 0
			AND (
				tblInvUOMs.strUseFor = @TransactionType
				OR tblInvUOMs.strUseFor = 'Both'
				)
		LEFT JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist
		LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
		WHERE (
				tblInv.strPartNumber = @Part
				OR tblInv.strBarCode = @BarCode
				OR tblInv.strBarCode2 = @BarCode
				OR tblInvUOMs.strBarCode = @BarCode
				OR tblInvUOMs.strBarCode2 = @BarCode
				)
			AND (
				tblInvPrice.strPricelist = @PriceList
				OR tblInvPrice.strPricelist IS NULL
				)
			AND (tblInv.bitInactive = 0)
			AND (
				(
					@Date BETWEEN tblPriceListsByDate.dteStartDate
						AND tblPriceListsByDate.dteFinishDate
					)
				OR tblInv.intType = 5
				)
			AND (
				(
					CASE 
						WHEN tblInv.strBarCode = @BarCode
							OR tblInv.strBarCode2 = @BarCode
							THEN tblInvPrice.bitStockUnit
						ELSE CASE 
								WHEN tblInv.strPartNumber = @Part
									THEN CASE 
											WHEN tblInvPrice.bitStockUnit = 1
												THEN tblInv.bitDefaultUOM
											ELSE 0
											END
								ELSE 1
								END
						END = 1
					OR CASE 
						WHEN tblInv.strBarCode = @BarCode
							OR tblInv.strBarCode2 = @BarCode
							THEN tblInvPrice.bitStockUnit
						ELSE ISNULL(tblInvUOMs.bitDefaultUOM, 0)
						END = 1
					)
				OR tblInv.intType = 5
				)
			AND (
				@IsBPToolsMode = 1
				OR tblInv.strCategory IN (
					SELECT tblInvCat.strCategory
					FROM tblInvCat
					LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
					WHERE ISNULL((
								SELECT COUNT(tblInvCatSec.strCategory)
								FROM tblInvCatSec
								WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblInvCatSec.strCategory)
									FROM tblInvCatSec
									WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
									), 0) > 0
							AND tblInvCatSec.strUserName = @UserName
							)
					)
				OR tblInv.intType = 5
				)
		ORDER BY tblInvPrice.bitStockUnit DESC
	END
	ELSE
	BEGIN
		SELECT tblInv.strDesc AS [Desc]
			,tblInv.strStockUnit AS StockUnit
			,tblInv.intType AS [Type]
			,tblInv.bitAllowPriceChg AS AllowPriceChg
			,ISNULL(tblInvPrice.decSelling, 0) AS Selling
			,tblInv.strPartNumber AS PartNumber
			,tblInv.strField1 AS Field1
			,tblInv.strField2 AS Field2
			,tblInv.strField3 AS Field3
			,tblInv.strField4 AS Field4
			,tblInv.strField5 AS Field5
			,tblInv.strField6 AS Field6
			,tblInv.decSumAvail AS SumAvail
			,ISNULL(tblPricelists.bitShowZeroSellingPrice, 0) AS ShowZeroSellingPrice
			,ISNULL(tblInvPrice.strUnit, tblInv.strSellUnit) AS SellUnit
			,tblInv.strSellStockUnit AS SellStockUnit
			,ISNULL(CASE strConversionType
					WHEN 'Multiply'
						THEN decConversionFactor
					ELSE 1 / decConversionFactor
					END, decSellFromStock) AS SellFromStock
			,tblInv.bitInvSerialType AS IsSerialType
			,CASE 
				WHEN tblInv.intType = 4
					THEN tblInv.decStandardCost
				ELSE CASE @GPCalcLPP
						WHEN 0
							THEN tblInv.decLastPPUnit
						WHEN 1
							THEN tblInv.decStandardCost
						WHEN 2
							THEN CASE @GPCalcInvLevel
									WHEN 0
										THEN CASE 
												WHEN tblInv.decLastPPUnit > ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = @LocName
															), 0)
													THEN tblInv.decLastPPUnit
												ELSE CASE 
														WHEN tblInv.decLastPPUnit < ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0)
															THEN ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt EXT
																		WHERE EXT.strPartNumber = tblInv.strPartNumber
																			AND EXT.strLocName = @LocName
																		), 0)
														ELSE CASE 
																WHEN ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = @LocName
																			), 0) = 0
																	THEN tblInv.decLastPPUnit
																ELSE ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = @LocName
																			), 0)
																END
														END
												END
									WHEN 1
										THEN CASE 
												WHEN tblInv.decLastPPUnit > ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN tblInv.decLastPPUnit
												ELSE CASE 
														WHEN tblInv.decLastPPUnit < ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
															THEN ISNULL((
																		CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END
																		), 0)
														ELSE CASE 
																WHEN CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END = 0
																	THEN tblInv.decLastPPUnit
																ELSE ISNULL((
																			CASE tblInv.decSumOnHand
																				WHEN 0
																					THEN 0
																				ELSE tblInv.decSumValue / tblInv.decSumOnHand
																				END
																			), 0)
																END
														END
												END
									ELSE tblInv.decLastPPUnit
									END
						WHEN 3
							THEN CASE @GPCalcInvLevel
									WHEN 0
										THEN CASE 
												WHEN ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = @LocName
															), 0) = 0
													THEN tblInv.decLastPPUnit
												ELSE ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = @LocName
															), 0)
												END
									WHEN 1
										THEN CASE 
												WHEN CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END = 0
													THEN tblInv.decLastPPUnit
												ELSE ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
												END
									ELSE tblInv.decLastPPUnit
									END
						ELSE tblInv.decLastPPUnit
						END
				END AS GPCalc
			,tblInv.decDefSaleQty AS DefaultSaleQty
			,tblInv.bitVoucherEnabled AS IsVoucherEnabled
			,ISNULL(tblInv.strVoucherCode, '') AS VoucherCode
			,tblInv.strDimProCode AS DimProCode
			,tblInv.strExtendedDesc AS ExtendedDesc
			,tblInv.strUnitOfMeasure AS UnitOfMeasure
			,tblInv.decMass AS Mass
			,tblInv.decVolumetricWeight AS VolumetricWeight
			,CAST((
					SELECT COUNT(tblInvUpsell.strPartItemNumber)
					FROM tblInvUpsell
					WHERE tblInvUpsell.strPartNumber = tblInv.strPartNumber
					) AS BIT) AS IsUpsellItem
			,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimension
			,tblInv.bitAutoBuild AS AutoBuild
			,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT SUM(INV.decLastPPUnit)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							WHERE BOM.strPartNumber = tblInv.strPartNumber
							), 0)
				END AS AutoBuildLRC
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT SUM(INV.decStandardCost)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							WHERE BOM.strPartNumber = tblInv.strPartNumber
							), 0)
				END AS AutoBuildSC
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT ISNULL(SUM(CASE EXT.decOnHand
											WHEN 0
												THEN 0
											ELSE EXT.decValue / EXT.decOnHand
											END), 0)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
							WHERE BOM.strPartNumber = tblInv.strPartNumber
								AND EXT.strLocName = @LocName
							), 0)
				END AS AutoBuildMALocDef
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT ISNULL(SUM(CASE EXT.decOnHand
											WHEN 0
												THEN 0
											ELSE EXT.decValue / EXT.decOnHand
											END), 0)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
								AND BOM.strLocName = EXT.strLocName
							WHERE BOM.strPartNumber = tblInv.strPartNumber
							), 0)
				END AS AutoBuildMALocation
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT ISNULL(SUM(CASE INV.decSumOnHand
											WHEN 0
												THEN 0
											ELSE INV.decSumValue / INV.decSumOnHand
											END), 0)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							WHERE BOM.strPartNumber = tblInv.strPartNumber
							), 0)
				END AS AutoBuildMAMain
			,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
		FROM tblInv
		LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
		LEFT JOIN tblPriceListsByDate ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
		LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber
			AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
			AND tblInvUOMs.bitInactive = 0
			AND (
				tblInvUOMs.strUseFor = @TransactionType
				OR tblInvUOMs.strUseFor = 'Both'
				)
		LEFT JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist
		LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
		WHERE (
				tblInv.strPartNumber = @Part
				OR tblInv.strBarCode = @BarCode
				OR tblInv.strBarCode2 = @BarCode
				OR tblInvUOMs.strBarCode = @BarCode
				OR tblInvUOMs.strBarCode2 = @BarCode
				)
			AND (
				tblInvPrice.strPricelist = @PriceList
				OR tblInvPrice.strPricelist IS NULL
				)
			AND (tblInv.bitInactive = 0)
			AND (
				@Date BETWEEN tblPriceListsByDate.dteStartDate
					AND tblPriceListsByDate.dteFinishDate
				)
			AND (strUnit = @Unit)
			AND (
				@IsBPToolsMode = 1
				OR tblInv.strCategory IN (
					SELECT tblInvCat.strCategory
					FROM tblInvCat
					LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
					WHERE ISNULL((
								SELECT COUNT(tblInvCatSec.strCategory)
								FROM tblInvCatSec
								WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblInvCatSec.strCategory)
									FROM tblInvCatSec
									WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
									), 0) > 0
							AND tblInvCatSec.strUserName = @UserName
							)
					)
				OR tblInv.intType = 5
				)
		ORDER BY tblInvPrice.bitStockUnit DESC
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryDataContract]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetInventoryDataContract]  
( @Part AS NVARCHAR(50),  
 @BarCode AS NVARCHAR(300),  
 @PriceList AS VARCHAR(20),  
 @GPCalcInvLevel AS INT,  
 @GPCalcLPP AS INT,  
 @LocName AS NVARCHAR(50),  
 @UserName AS NVARCHAR(20),  
 @IsBPToolsMode AS BIT,  
 @Date as datetime,  
 @Unit as nvarchar(50),
 @TransactionType as nvarchar(50)  
)  
AS  
BEGIN  
if (@Unit Is Null)   
Begin  
 SELECT tblInv.strDesc AS [Desc]  
 ,tblInv.strStockUnit AS StockUnit  
 ,tblInv.intType AS [Type]  
 ,tblInv.bitAllowPriceChg AS AllowPriceChg  
 ,ISNULL(tblInvPrice.decSelling, 0) AS Selling  
 ,tblInv.strPartNumber AS PartNumber  
 ,tblInv.strField1 AS Field1  
 ,tblInv.strField2 AS Field2  
 ,tblInv.strField3 AS Field3  
 ,tblInv.strField4 AS Field4  
 ,tblInv.strField5 AS Field5  
 ,tblInv.strField6 AS Field6  
 ,tblInv.decSumAvail AS SumAvail  
 ,ISNULL(tblPricelists.bitShowZeroSellingPrice, 0) AS ShowZeroSellingPrice  
 ,ISNULL(tblInvPrice.strUnit, tblInv.strSellUnit) AS SellUnit  
 ,tblInv.strSellStockUnit AS SellStockUnit  
 ,ISNULL(CASE strConversionType  
   WHEN 'Multiply'  
    THEN decConversionFactor  
   ELSE 1 / decConversionFactor  
   END, decSellFromStock) AS SellFromStock  
 ,tblInv.bitInvSerialType AS IsSerialType  
 ,CASE   
  WHEN tblInv.intType = 4  
   THEN tblInv.decStandardCost  
  ELSE CASE @GPCalcLPP  
    WHEN 0  
     THEN tblInv.decLastPPUnit  
    WHEN 1  
     THEN tblInv.decStandardCost  
    WHEN 2  
     THEN CASE @GPCalcInvLevel  
       WHEN 0  
        THEN CASE   
          WHEN tblInv.decLastPPUnit > ISNULL((  
             SELECT CASE EXT.decOnHand  
               WHEN 0  
                THEN 0  
               ELSE EXT.decValue / EXT.decOnHand  
               END  
             FROM tblInvExt EXT  
             WHERE EXT.strPartNumber = tblInv.strPartNumber  
              AND EXT.strLocName = @LocName  
             ), 0)  
           THEN tblInv.decLastPPUnit  
          ELSE CASE   
            WHEN tblInv.decLastPPUnit < ISNULL((  
               SELECT CASE EXT.decOnHand  
                 WHEN 0  
                  THEN 0  
                 ELSE EXT.decValue / EXT.decOnHand  
                 END  
               FROM tblInvExt EXT  
               WHERE EXT.strPartNumber = tblInv.strPartNumber  
                AND EXT.strLocName = @LocName  
               ), 0)  
             THEN ISNULL((  
                SELECT CASE EXT.decOnHand  
                  WHEN 0  
                   THEN 0  
                  ELSE EXT.decValue / EXT.decOnHand  
                  END  
                FROM tblInvExt EXT  
                WHERE EXT.strPartNumber = tblInv.strPartNumber  
                 AND EXT.strLocName = @LocName  
                ), 0)  
            ELSE CASE   
              WHEN ISNULL((  
                 SELECT CASE EXT.decOnHand  
                   WHEN 0  
                    THEN 0  
                   ELSE EXT.decValue / EXT.decOnHand  
                   END  
                 FROM tblInvExt EXT  
                 WHERE EXT.strPartNumber = tblInv.strPartNumber  
                  AND EXT.strLocName = @LocName  
                 ), 0) = 0  
               THEN tblInv.decLastPPUnit  
              ELSE ISNULL((  
                 SELECT CASE EXT.decOnHand  
                   WHEN 0  
                    THEN 0  
                   ELSE EXT.decValue / EXT.decOnHand  
                   END  
                 FROM tblInvExt EXT  
                 WHERE EXT.strPartNumber = tblInv.strPartNumber  
                  AND EXT.strLocName = @LocName  
                 ), 0)  
              END  
            END  
          END  
       WHEN 1  
        THEN CASE   
          WHEN tblInv.decLastPPUnit > ISNULL((  
             CASE tblInv.decSumOnHand  
              WHEN 0  
               THEN 0  
              ELSE tblInv.decSumValue / tblInv.decSumOnHand  
              END  
             ), 0)  
           THEN tblInv.decLastPPUnit  
          ELSE CASE   
            WHEN tblInv.decLastPPUnit < ISNULL((  
               CASE tblInv.decSumOnHand  
                WHEN 0  
                 THEN 0  
                ELSE tblInv.decSumValue / tblInv.decSumOnHand  
                END  
               ), 0)  
             THEN ISNULL((  
                CASE tblInv.decSumOnHand  
                 WHEN 0  
                  THEN 0  
                 ELSE tblInv.decSumValue / tblInv.decSumOnHand  
                 END  
                ), 0)  
            ELSE CASE   
              WHEN CASE tblInv.decSumOnHand  
                WHEN 0  
                 THEN 0  
                ELSE tblInv.decSumValue / tblInv.decSumOnHand  
                END = 0  
               THEN tblInv.decLastPPUnit  
              ELSE ISNULL((  
                 CASE tblInv.decSumOnHand  
                  WHEN 0  
                   THEN 0  
                  ELSE tblInv.decSumValue / tblInv.decSumOnHand  
                  END  
                 ), 0)  
              END  
            END  
          END  
       ELSE tblInv.decLastPPUnit  
       END  
    WHEN 3  
     THEN CASE @GPCalcInvLevel  
       WHEN 0  
        THEN CASE   
          WHEN ISNULL((  
             SELECT CASE EXT.decOnHand  
               WHEN 0  
                THEN 0  
               ELSE EXT.decValue / EXT.decOnHand  
               END  
             FROM tblInvExt EXT  
             WHERE EXT.strPartNumber = tblInv.strPartNumber  
              AND EXT.strLocName = @LocName  
             ), 0) = 0  
           THEN tblInv.decLastPPUnit  
          ELSE ISNULL((  
             SELECT CASE EXT.decOnHand  
               WHEN 0  
                THEN 0  
               ELSE EXT.decValue / EXT.decOnHand  
               END  
             FROM tblInvExt EXT  
             WHERE EXT.strPartNumber = tblInv.strPartNumber  
              AND EXT.strLocName = @LocName  
             ), 0)  
          END  
       WHEN 1  
        THEN CASE   
          WHEN CASE tblInv.decSumOnHand  
            WHEN 0  
             THEN 0  
            ELSE tblInv.decSumValue / tblInv.decSumOnHand  
            END = 0  
           THEN tblInv.decLastPPUnit  
          ELSE ISNULL((  
             CASE tblInv.decSumOnHand  
              WHEN 0  
               THEN 0  
              ELSE tblInv.decSumValue / tblInv.decSumOnHand  
              END  
             ), 0)  
          END  
       ELSE tblInv.decLastPPUnit  
       END  
    ELSE tblInv.decLastPPUnit  
    END  
  END AS GPCalc  
 ,tblInv.decDefSaleQty AS DefaultSaleQty  
 ,tblInv.bitVoucherEnabled AS IsVoucherEnabled  
 ,ISNULL(tblInv.strVoucherCode, '') AS VoucherCode  
 ,tblInv.strDimProCode AS DimProCode  
 ,tblInv.strExtendedDesc AS ExtendedDesc  
 ,tblInv.strUnitOfMeasure AS UnitOfMeasure  
 ,tblInv.decMass AS Mass  
 ,tblInv.decVolumetricWeight AS VolumetricWeight  
 ,CAST((  
   SELECT COUNT(tblInvUpsell.strPartItemNumber)  
   FROM tblInvUpsell  
   WHERE tblInvUpsell.strPartNumber = tblInv.strPartNumber  
   ) AS BIT) AS IsUpsellItem  
 ,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimension  
 ,tblInv.bitAutoBuild AS AutoBuild  
 ,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc  
 ,CASE   
  WHEN tblInv.bitAutoBuild = 0  
   THEN 0  
  ELSE ISNULL((  
     SELECT SUM(INV.decLastPPUnit)  
     FROM tblInvBOM BOM  
     INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber  
     WHERE BOM.strPartNumber = tblInv.strPartNumber  
     ), 0)  
  END AS AutoBuildLRC  
 ,CASE   
  WHEN tblInv.bitAutoBuild = 0  
   THEN 0  
  ELSE ISNULL((  
     SELECT SUM(INV.decStandardCost)  
     FROM tblInvBOM BOM  
     INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber  
     WHERE BOM.strPartNumber = tblInv.strPartNumber  
     ), 0)  
  END AS AutoBuildSC  
 ,CASE   
  WHEN tblInv.bitAutoBuild = 0  
   THEN 0  
  ELSE ISNULL((  
     SELECT ISNULL(SUM(CASE EXT.decOnHand  
         WHEN 0  
          THEN 0  
         ELSE EXT.decValue / EXT.decOnHand  
         END), 0)  
     FROM tblInvBOM BOM  
     INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber  
     INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber  
     WHERE BOM.strPartNumber = tblInv.strPartNumber  
      AND EXT.strLocName = 'DEFAULT'  
     ), 0)  
  END AS AutoBuildMALocDef  
 ,CASE   
  WHEN tblInv.bitAutoBuild = 0  
   THEN 0  
  ELSE ISNULL((  
     SELECT ISNULL(SUM(CASE EXT.decOnHand  
         WHEN 0  
          THEN 0  
         ELSE EXT.decValue / EXT.decOnHand  
         END), 0)  
     FROM tblInvBOM BOM  
     INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber  
     INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber  
      AND BOM.strLocName = EXT.strLocName  
     WHERE BOM.strPartNumber = tblInv.strPartNumber  
     ), 0)  
  END AS AutoBuildMALocation  
 ,CASE   
  WHEN tblInv.bitAutoBuild = 0  
   THEN 0  
  ELSE ISNULL((  
     SELECT ISNULL(SUM(CASE INV.decSumOnHand  
         WHEN 0  
          THEN 0  
         ELSE INV.decSumValue / INV.decSumOnHand  
         END), 0)  
     FROM tblInvBOM BOM  
     INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber  
     WHERE BOM.strPartNumber = tblInv.strPartNumber  
     ), 0)  
  END AS AutoBuildMAMain  
FROM tblInv  
LEFT OUTER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber  
LEFT JOIN tblPriceListsByDate ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID  
LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber  
 AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit  
 AND tblInvUOMs.bitInactive = 0  
 AND (  
  tblInvUOMs.strUseFor = @TransactionType  
  OR tblInvUOMs.strUseFor = 'Both'  
  )  
LEFT OUTER JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist  
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType  
WHERE (  
  tblInv.strPartNumber = @Part  
  OR tblInv.strBarCode = @BarCode  
  OR tblInv.strBarCode2 = @BarCode  
  OR tblInvUOMs.strBarCode = @BarCode  
  OR tblInvUOMs.strBarCode2 = @BarCode  
  )  
 AND (  
  tblInvPrice.strPricelist = @PriceList  
  OR tblInvPrice.strPricelist IS NULL  
  )  
 AND tblInv.bitInactive = 0  
 AND tblInv.bitOtherCmp = 0  
 AND (  
  @Date BETWEEN tblPriceListsByDate.dteStartDate  
   AND tblPriceListsByDate.dteFinishDate  
  )  
 AND (  
    
   CASE   
    WHEN tblInv.strBarCode = @BarCode  
     OR tblInv.strBarCode2 = @BarCode  
     THEN tblInvPrice.bitStockUnit  
    ELSE CASE   
      WHEN tblInv.strPartNumber = @Part  
       THEN CASE   
         WHEN tblInvPrice.bitStockUnit = 1  
          THEN tblInv.bitDefaultUOM  
         ELSE 0  
         END  
      ELSE 1  
      END  
    END = 1  
   OR CASE   
    WHEN tblInv.strBarCode = @BarCode  
     OR tblInv.strBarCode2 = @BarCode  
     THEN tblInvPrice.bitStockUnit  
    ELSE ISNULL(tblInvUOMs.bitDefaultUOM, 0)  
    END = 1  
     
  )  
 AND (  
  @IsBPToolsMode = 1  
  OR tblInv.strCategory IN (  
   SELECT tblInvCat.strCategory  
   FROM tblInvCat  
   LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory  
   WHERE ISNULL((  
      SELECT COUNT(tblInvCatSec.strCategory)  
      FROM tblInvCatSec  
      WHERE tblInvCatSec.strCategory = tblInvCat.strCategory  
      ), 0) = 0  
    OR (  
     ISNULL((  
       SELECT COUNT(tblInvCatSec.strCategory)  
       FROM tblInvCatSec  
       WHERE tblInvCatSec.strCategory = tblInvCat.strCategory  
       ), 0) > 0  
     AND tblInvCatSec.strUserName = @UserName  
     )  
   )  
  OR tblInv.intType = 5  
  )  
End  
Else  
Begin  
 SELECT tblInv.strDesc AS [Desc]  
 ,tblInv.strStockUnit AS StockUnit  
 ,tblInv.intType AS [Type]  
 ,tblInv.bitAllowPriceChg AS AllowPriceChg  
 ,ISNULL(tblInvPrice.decSelling, 0) AS Selling  
 ,tblInv.strPartNumber AS PartNumber  
 ,tblInv.strField1 AS Field1  
 ,tblInv.strField2 AS Field2  
 ,tblInv.strField3 AS Field3  
 ,tblInv.strField4 AS Field4  
 ,tblInv.strField5 AS Field5  
 ,tblInv.strField6 AS Field6  
 ,tblInv.decSumAvail AS SumAvail  
 ,ISNULL(tblPricelists.bitShowZeroSellingPrice, 0) AS ShowZeroSellingPrice  
 ,ISNULL(tblInvPrice.strUnit, tblInv.strSellUnit) AS SellUnit  
 ,tblInv.strSellStockUnit AS SellStockUnit  
 ,ISNULL(CASE strConversionType  
   WHEN 'Multiply'  
    THEN decConversionFactor  
   ELSE 1 / decConversionFactor  
   END, decSellFromStock) AS SellFromStock  
 ,tblInv.bitInvSerialType AS IsSerialType  
 ,CASE   
  WHEN tblInv.intType = 4  
   THEN tblInv.decStandardCost  
  ELSE CASE @GPCalcLPP  
    WHEN 0  
     THEN tblInv.decLastPPUnit  
    WHEN 1  
     THEN tblInv.decStandardCost  
    WHEN 2  
     THEN CASE @GPCalcInvLevel  
       WHEN 0  
        THEN CASE   
          WHEN tblInv.decLastPPUnit > ISNULL((  
             SELECT CASE EXT.decOnHand  
               WHEN 0  
                THEN 0  
               ELSE EXT.decValue / EXT.decOnHand  
               END  
             FROM tblInvExt EXT  
             WHERE EXT.strPartNumber = tblInv.strPartNumber  
              AND EXT.strLocName = @LocName  
             ), 0)  
           THEN tblInv.decLastPPUnit  
          ELSE CASE   
            WHEN tblInv.decLastPPUnit < ISNULL((  
               SELECT CASE EXT.decOnHand  
                 WHEN 0  
                  THEN 0  
                 ELSE EXT.decValue / EXT.decOnHand  
                 END  
               FROM tblInvExt EXT  
               WHERE EXT.strPartNumber = tblInv.strPartNumber  
                AND EXT.strLocName = @LocName  
               ), 0)  
             THEN ISNULL((  
                SELECT CASE EXT.decOnHand  
                  WHEN 0  
                   THEN 0  
                  ELSE EXT.decValue / EXT.decOnHand  
                  END  
                FROM tblInvExt EXT  
                WHERE EXT.strPartNumber = tblInv.strPartNumber  
                 AND EXT.strLocName = @LocName  
                ), 0)  
            ELSE CASE   
              WHEN ISNULL((  
                 SELECT CASE EXT.decOnHand  
                   WHEN 0  
                    THEN 0  
                   ELSE EXT.decValue / EXT.decOnHand  
                   END  
                 FROM tblInvExt EXT  
                 WHERE EXT.strPartNumber = tblInv.strPartNumber  
                  AND EXT.strLocName = @LocName  
                 ), 0) = 0  
               THEN tblInv.decLastPPUnit  
              ELSE ISNULL((  
                 SELECT CASE EXT.decOnHand  
                   WHEN 0  
                    THEN 0  
                   ELSE EXT.decValue / EXT.decOnHand  
                   END  
                 FROM tblInvExt EXT  
                 WHERE EXT.strPartNumber = tblInv.strPartNumber  
                  AND EXT.strLocName = @LocName  
                 ), 0)  
              END  
            END  
          END  
       WHEN 1  
        THEN CASE   
          WHEN tblInv.decLastPPUnit > ISNULL((  
             CASE tblInv.decSumOnHand  
              WHEN 0  
               THEN 0  
              ELSE tblInv.decSumValue / tblInv.decSumOnHand  
              END  
             ), 0)  
           THEN tblInv.decLastPPUnit  
          ELSE CASE   
            WHEN tblInv.decLastPPUnit < ISNULL((  
               CASE tblInv.decSumOnHand  
                WHEN 0  
                 THEN 0  
                ELSE tblInv.decSumValue / tblInv.decSumOnHand  
                END  
               ), 0)  
             THEN ISNULL((  
                CASE tblInv.decSumOnHand  
                 WHEN 0  
                  THEN 0  
                 ELSE tblInv.decSumValue / tblInv.decSumOnHand  
                 END  
                ), 0)  
            ELSE CASE   
              WHEN CASE tblInv.decSumOnHand  
                WHEN 0  
                 THEN 0  
                ELSE tblInv.decSumValue / tblInv.decSumOnHand  
                END = 0  
               THEN tblInv.decLastPPUnit  
              ELSE ISNULL((  
                 CASE tblInv.decSumOnHand  
                  WHEN 0  
                   THEN 0  
                  ELSE tblInv.decSumValue / tblInv.decSumOnHand  
                  END  
                 ), 0)  
              END  
            END  
          END  
       ELSE tblInv.decLastPPUnit  
       END  
    WHEN 3  
     THEN CASE @GPCalcInvLevel  
       WHEN 0  
        THEN CASE   
          WHEN ISNULL((  
             SELECT CASE EXT.decOnHand  
               WHEN 0  
                THEN 0  
               ELSE EXT.decValue / EXT.decOnHand  
               END  
             FROM tblInvExt EXT  
             WHERE EXT.strPartNumber = tblInv.strPartNumber  
              AND EXT.strLocName = @LocName  
             ), 0) = 0  
           THEN tblInv.decLastPPUnit  
          ELSE ISNULL((  
             SELECT CASE EXT.decOnHand  
               WHEN 0  
                THEN 0  
               ELSE EXT.decValue / EXT.decOnHand  
               END  
             FROM tblInvExt EXT  
             WHERE EXT.strPartNumber = tblInv.strPartNumber  
              AND EXT.strLocName = @LocName  
             ), 0)  
          END  
       WHEN 1  
        THEN CASE   
          WHEN CASE tblInv.decSumOnHand  
            WHEN 0  
             THEN 0  
            ELSE tblInv.decSumValue / tblInv.decSumOnHand  
            END = 0  
           THEN tblInv.decLastPPUnit  
          ELSE ISNULL((  
             CASE tblInv.decSumOnHand  
              WHEN 0  
               THEN 0  
              ELSE tblInv.decSumValue / tblInv.decSumOnHand  
              END  
             ), 0)  
          END  
       ELSE tblInv.decLastPPUnit  
       END  
    ELSE tblInv.decLastPPUnit  
    END  
  END AS GPCalc  
 ,tblInv.decDefSaleQty AS DefaultSaleQty  
 ,tblInv.bitVoucherEnabled AS IsVoucherEnabled  
 ,ISNULL(tblInv.strVoucherCode, '') AS VoucherCode  
 ,tblInv.strDimProCode AS DimProCode  
 ,tblInv.strExtendedDesc AS ExtendedDesc  
 ,tblInv.strUnitOfMeasure AS UnitOfMeasure  
 ,tblInv.decMass AS Mass  
 ,tblInv.decVolumetricWeight AS VolumetricWeight  
 ,CAST((  
   SELECT COUNT(tblInvUpsell.strPartItemNumber)  
   FROM tblInvUpsell  
   WHERE tblInvUpsell.strPartNumber = tblInv.strPartNumber  
   ) AS BIT) AS IsUpsellItem  
 ,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimension  
 ,tblInv.bitAutoBuild AS AutoBuild  
 ,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc  
 ,CASE   
  WHEN tblInv.bitAutoBuild = 0  
   THEN 0  
  ELSE ISNULL((  
     SELECT SUM(INV.decLastPPUnit)  
     FROM tblInvBOM BOM  
     INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber  
     WHERE BOM.strPartNumber = tblInv.strPartNumber  
     ), 0)  
  END AS AutoBuildLRC  
 ,CASE   
  WHEN tblInv.bitAutoBuild = 0  
   THEN 0  
  ELSE ISNULL((  
     SELECT SUM(INV.decStandardCost)  
     FROM tblInvBOM BOM  
     INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber  
     WHERE BOM.strPartNumber = tblInv.strPartNumber  
     ), 0)  
  END AS AutoBuildSC  
 ,CASE   
  WHEN tblInv.bitAutoBuild = 0  
   THEN 0  
  ELSE ISNULL((  
     SELECT ISNULL(SUM(CASE EXT.decOnHand  
         WHEN 0  
          THEN 0  
         ELSE EXT.decValue / EXT.decOnHand  
         END), 0)  
     FROM tblInvBOM BOM  
     INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber  
     INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber  
     WHERE BOM.strPartNumber = tblInv.strPartNumber  
      AND EXT.strLocName = 'DEFAULT'  
     ), 0)  
  END AS AutoBuildMALocDef  
 ,CASE   
  WHEN tblInv.bitAutoBuild = 0  
   THEN 0  
  ELSE ISNULL((  
     SELECT ISNULL(SUM(CASE EXT.decOnHand  
         WHEN 0  
          THEN 0  
         ELSE EXT.decValue / EXT.decOnHand  
         END), 0)  
     FROM tblInvBOM BOM  
     INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber  
     INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber  
      AND BOM.strLocName = EXT.strLocName  
     WHERE BOM.strPartNumber = tblInv.strPartNumber  
     ), 0)  
  END AS AutoBuildMALocation  
 ,CASE   
  WHEN tblInv.bitAutoBuild = 0  
   THEN 0  
  ELSE ISNULL((  
     SELECT ISNULL(SUM(CASE INV.decSumOnHand  
         WHEN 0  
          THEN 0  
         ELSE INV.decSumValue / INV.decSumOnHand  
         END), 0)  
     FROM tblInvBOM BOM  
     INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber  
     WHERE BOM.strPartNumber = tblInv.strPartNumber  
     ), 0)  
  END AS AutoBuildMAMain  
FROM tblInv  
LEFT OUTER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber  
LEFT JOIN tblPriceListsByDate ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID  
LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber  
 AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit  
 AND tblInvUOMs.bitInactive = 0  
 AND (  
  tblInvUOMs.strUseFor = @TransactionType  
  OR tblInvUOMs.strUseFor = 'Both'  
  )  
LEFT OUTER JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist  
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType  
WHERE (  
  tblInv.strPartNumber = @Part  
  OR tblInv.strBarCode = @BarCode  
  OR tblInv.strBarCode2 = @BarCode  
  OR tblInvUOMs.strBarCode = @BarCode  
  OR tblInvUOMs.strBarCode2 = @BarCode  
  )  
 AND (  
  tblInvPrice.strPricelist = @PriceList  
  OR tblInvPrice.strPricelist IS NULL  
  )  
 AND tblInv.bitInactive = 0  
 AND tblInv.bitOtherCmp = 0  
 AND (  
  @Date BETWEEN tblPriceListsByDate.dteStartDate  
   AND tblPriceListsByDate.dteFinishDate  
  )  
 AND (  
  strUnit = @Unit  
  )  
 AND (  
  @IsBPToolsMode = 1  
  OR tblInv.strCategory IN (  
   SELECT tblInvCat.strCategory  
   FROM tblInvCat  
   LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory  
   WHERE ISNULL((  
      SELECT COUNT(tblInvCatSec.strCategory)  
      FROM tblInvCatSec  
      WHERE tblInvCatSec.strCategory = tblInvCat.strCategory  
      ), 0) = 0  
    OR (  
     ISNULL((  
       SELECT COUNT(tblInvCatSec.strCategory)  
       FROM tblInvCatSec  
       WHERE tblInvCatSec.strCategory = tblInvCat.strCategory  
       ), 0) > 0  
     AND tblInvCatSec.strUserName = @UserName  
     )  
   )  
  OR tblInv.intType = 5  
  )  
end  
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryDataForBOM]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetInventoryDataForBOM]    Script Date: 07-11-2019 10:38:47 ******/
CREATE PROCEDURE [dbo].[GetInventoryDataForBOM] (
	@PartNumber AS NVARCHAR(50)
)
AS
BEGIN
	SELECT tblInv.strDesc AS [Desc]
		,tblInv.strPartNumber AS [PartNumber]
		,tblInv.intType AS [Type]
		,tblInvExt.strLocName AS [Location]
		,lngBinID AS [BinId]
		,strBinCode	AS [BinCode]
		,bitInvSerialType AS [IsSerialType]
		,strUnitOfMeasure AS [UnitOfMeasure]
	FROM tblInv
	INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
		AND tblInvExt.bitDefault = 1
	INNER JOIN tblInvExtBin ON tblInv.strPartNumber = tblInvExtBin.strPartNumber
		AND tblInvExt.strLocName = tblInvExtBin.strLocName
		AND tblInvExtBin.bitDefault = 1
	INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
	WHERE (
			tblInv.strPartNumber = @PartNumber
			OR tblInv.strBarCode = @PartNumber
			OR tblInv.strBarCode2 = @PartNumber
			)
		AND (tblInv.intType <> 5)
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryForInvEntry]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetInventoryForInvEntry] ***********/
CREATE PROCEDURE [dbo].[GetInventoryForInvEntry]
(
	@PartNumber VARCHAR(50),
	@LocationName VARCHAR(20)
)
AS
BEGIN

	SELECT intType AS [Type]
		,bitAutoBuild AS [AutoBuild]
		,ISNULL(intGLRevenue, 0) AS [RevenueAccount]
	FROM fnTblInvForLocJoin() tblInv
	LEFT JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
		AND tblInv.strLocName = tblInvExt.strLocName
	LEFT JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
	WHERE tblInv.strPartNumber = @PartNumber
		AND (tblInv.strLocName = @LocationName OR tblInv.strLocName IS NULL)
END

GO
/****** Object:  StoredProcedure [dbo].[GetInventoryItemsWebStore]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInventoryItemsWebStore]
(    
	 @InvType VARCHAR(50) = NULL
	 ,@UserName VARCHAR(50) = NULL
	 ,@Pricelist VARCHAR(20) = NULL
	 ,@LocationName VARCHAR(500)= NULL
	 ,@Date DATETIME = NULL
	 ,@FilterType INTEGER = 0	
	 ,@IsWebStoreItem BIT = 0	 
	 ,@LastUpdated DATETIME = NULL
	 ,@PageSize INT = 1
	 ,@PageIndex INT = 1
	 ,@SearchText VARCHAR(200) = ''	 	
	 )
	AS
BEGIN 
	 DECLARE @str1 AS NVARCHAR(40)
	 DECLARE @str2 AS NVARCHAR(40)
	 DECLARE @str3 AS NVARCHAR(40)
	 DECLARE @str4 AS NVARCHAR(40)
	 DECLARE @str5 AS NVARCHAR(40)
	 DECLARE @str6 AS NVARCHAR(40)
	 set @IsWebStoreItem =1
	 DECLARE @TotalRows INT
	 DECLARE @TotalPages INT
	 DECLARE @StartRowIndex INT
	  ,@EndRowIndex INT;
	 DECLARE @Sql nVARCHAR(MAX)
	 DECLARE @TotalRecords NVARCHAR(MAX) = ''
	 IF ISNULL(@SearchText,'') = ''
	 BEGIN
	  SET @SearchText = ''
	 END

	 IF ISNULL(@InvType,'') = ''
	 BEGIN
	  SET @InvType = ''
	 END

	 DECLARE @strToCompareCat AS NVARCHAR(40)='Store Main'
	 DECLARE @strToCompareSubCat AS NVARCHAR(40)='Store Sub'
	 SELECT TOP 1 @str1=strInv1 ,@str2=strInv2 ,@str3=strInv3 ,@str4=strInv4 ,@str5=strInv5 ,@str6=strInv6 FROM dbo.tblOptFields

	 declare @IsUseFieldAsCategory as bit=0

	 if @str1 =@strToCompareCat 
	 begin
	  set @IsUseFieldAsCategory =1
	 end

	 DECLARE @SQLString NVARCHAR(500);  
	 DECLARE @ParmDefinition NVARCHAR(500);  
	 DECLARE @max_title bit = 1;  
   	 
	 SET @SQLString = N'SELECT Top 1 @max_titleOUT = bitSyncInventoryImages FROM [dbo].[tblCoOpts]';  
	 SET @ParmDefinition = N'@max_titleOUT bit OUTPUT';  
	 
	 IF COL_LENGTH('[dbo].[tblCoOpts]', 'bitSyncInventoryImages') IS NOT NULL
	 BEGIN
	 	EXECUTE sp_executesql @SQLString, @ParmDefinition, @max_titleOUT=@max_title OUTPUT;
	 END
	 
	 SELECT distinct dbo.tblInv.strPartNumber AS PartNumber
	   ,dbo.tblInv.strDesc AS [Description]
	   ,dbo.tblInv.intType AS [Type]
	   ,replace(dbo.tblInv.strCategory,'/','-') as Category
	   ,replace(dbo.tblInv.strSubCategory,'/','-') as SubCategory
	   ,case @IsUseFieldAsCategory when 1 then '' else replace(dbo.tblInv.strSubCategoryGroup,'/','-')  end as SubCategoryGroup
	   ,dbo.tblInv.bitUseBOM AS IsUseBOM
	   ,dbo.tblInv.bitInactive AS IsInactive
	   ,dbo.tblInv.decSumAvail AS SumAvail
	   ,dbo.tblInv.decSumAlloc AS SumAlloc
	   ,dbo.tblInv.decSumOnHand AS SumOnHand
	   ,dbo.tblInv.decSumValue AS SumValue
	   ,dbo.tblInv.decSumOnOrder AS SumOnOrder
	   ,dbo.tblInv.strField1 AS Field1
	   ,dbo.tblInv.strField2 AS Field2
	   ,dbo.tblInv.strField3 AS Field3
	   ,dbo.tblInv.strField4 AS Field4
	   ,dbo.tblInv.strField5 AS Field5
	   ,dbo.tblInv.strField6 AS Field6
	   ,dbo.tblInv.strBarCode AS BarCode
	   ,dbo.tblInv.bitInvSerialType AS IsInvSerialType
	   ,dbo.tblInv.strBarCode2 AS BarCode2
	   ,null AS Pricelist
	   ,0.0 AS Selling
	   ,CAST(ISNULL(CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE 0 END, 0) AS BIT) AS IsTrackExpiryDate
	   ,dbo.tblInv.decLastPPUnit AS LastPPUnit   
	   ,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
	 --  ,CASE WHEN @FilterType = 0 THEN NULL WHEN @FilterType = 1 THEN dbo.tblInvVend.strVendName WHEN @FilterType = 2 THEN dbo.tblInvCustomer.strCustName END AS CustVendID
	   ,'' as CustVendID
	   ,null as ImgData
	   ,dbo.tblInv.strStockUnit as StockUnit
	   ,dbo.tblInv.decBuyToStock AS BuyToStock
	   ,tblInv.strExtendedDesc AS ExtendedDesc
	   ,tblInv.bitWebstoreItem AS IsWebstoreItem
	   ,(CASE WHEN @str1!=@strToCompareCat THEN 
			CASE WHEN @str2!=@strToCompareCat THEN 
				CASE WHEN @str3!=@strToCompareCat THEN 
					CASE WHEN @str4!=@strToCompareCat THEN
						CASE WHEN @str5!=@strToCompareCat THEN
							CASE WHEN @str6!=@strToCompareCat THEN
								dbo.tblInvCat.strDesc
							ELSE (CASE WHEN ISNULL(dbo.tblInv.strField6,'')='' THEN dbo.tblInvCat.strDesc ELSE dbo.tblInv.strField6 END) END
						ELSE (CASE WHEN ISNULL(dbo.tblInv.strField5,'')='' THEN dbo.tblInvCat.strDesc ELSE dbo.tblInv.strField5 END) END
					ELSE (CASE WHEN ISNULL(dbo.tblInv.strField4,'')='' THEN dbo.tblInvCat.strDesc ELSE dbo.tblInv.strField4 END) END
				ELSE (CASE WHEN ISNULL(dbo.tblInv.strField3,'')='' THEN dbo.tblInvCat.strDesc ELSE dbo.tblInv.strField3 END) END
			ELSE (CASE WHEN ISNULL(dbo.tblInv.strField2,'')='' THEN dbo.tblInvCat.strDesc ELSE dbo.tblInv.strField2 END) END
		ELSE (CASE WHEN ISNULL(dbo.tblInv.strField1,'')='' THEN dbo.tblInvCat.strDesc ELSE dbo.tblInv.strField1 END) END) AS CategoryDesc
	   ,tblInv.strUnitOfMeasure AS UnitOfMeasure
	   ,tblInv.strSellUnit AS SellUnit
	   ,tblInv.strSellStockUnit AS SellStockUnit
	   ,tblInv.decSellFromStock AS SellFromStock
	   ,tblInv.decDefSaleQty AS DefSaleQty
	   ,TotalRows = 0
	   ,TotalPages = 0
	   ,@IsUseFieldAsCategory as IsUseFieldAsCategory
	   ,tblInv.decMass as Mass
	   ,tblInv.decH as Height
	   ,tblInv.decD as Depth
	   ,tblInv.decW as Width
	   ,tblInv.strPOSDesc as POSDesc
	   ,tblInv.strAddInfo as AddInfo
	   ,@max_title as SyncInventoryImages
	   ,ISNULL(tblInvItemTax.bitOverrideTax, 0) as IsOverrideTax
	   ,ISNULL(tblInvItemTax.strOverridingTaxCode, '') as OverridingTaxCode
	   ,ISNULL(tblInvSubCat.strDesc, '') as SubCategoryDesc
	   ,ISNULL(tblInvGroupSubCat.strDesc, '') as SubCategoryGroupDesc
	  INTO #TempWebstoreCTE
	  FROM dbo.tblInv (NOLOCK)	 
	  INNER JOIN dbo.tblInvCat (NOLOCK) ON tblInvCat.strCategory = tblinv.strCategory
	  INNER JOIN dbo.tblInvItemTax (NOLOCK) ON tblInvItemTax.strPartNumber = tblInv.strPartNumber
	  LEFT JOIN dbo.tblInvSubCat (NOLOCK) ON tblInvSubCat.strParentCategory = tblInv.strSubCategory
	  LEFT JOIN dbo.tblInvGroupSubCat (NOLOCK) ON tblInvGroupSubCat.strParentSubCategory = tblInv.strSubCategoryGroup
	  WHERE dbo.tblInv.intType in (1 ,4)  AND (dbo.tblInv.bitInactive = 0)   AND (dbo.tblInv.bitWebstoreItem =1)	 
	  AND (@IsUseFieldAsCategory=0 or (@IsUseFieldAsCategory=1 and isnull(dbo.tblInv.strField1,'')<>'')  )
	  AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
			  FROM dbo.tblInvCat (NOLOCK)
			  LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
			  WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
				 FROM dbo.tblInvCatSec (NOLOCK)
				 WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
			  OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
				 FROM dbo.tblInvCatSec (NOLOCK)
				 WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
			   AND (ISNULL(@UserName,'')='' OR dbo.tblInvCatSec.strUserName = @UserName)))) 
	   OR dbo.tblInv.strCategory IS NULL)
	  AND (ISNULL(@LastUpdated,'')='' OR dbo.tblInv.dteLastUpdated >= @LastUpdated)
	  AND (ISNULL(@SearchText,'')='' OR dbo.tblInv.strPartNumber = @SearchText)   
	  ORDER BY PartNumber
	  
	  SELECT @TotalRows = count(*), @TotalPages = case (Count(*) % @PageSize) when 0 then  (Count(*) /@PageSize)  else  (Count(*) /@PageSize) + 1 end FROM #TempWebstoreCTE 
	  UPDATE #TempWebstoreCTE SET TotalRows = @TotalRows, TotalPages = @TotalPages;
	  
	  SELECT * FROM #TempWebstoreCTE ORDER BY PartNumber
	  OFFSET @PageSize * (@PageIndex - 1) ROWS
      FETCH NEXT @PageSize ROWS ONLY OPTION (RECOMPILE);
	  
	  DROP TABLE #TempWebstoreCTE;	  
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetInventoryList]
AS
BEGIN
	SELECT DISTINCT strPartNumber AS PartNumber
		,strDesc AS [Desc]
		,CAST(intType AS INT) AS [Type]
		,strAcctSet AS AcctSet
		,strCategory AS Category
		,strBarCode AS BarCode
		,strBuyUnit AS BuyUnit
		,strStockUnit AS StockUnit
		,bitInactive AS Inactive
		,strField1 AS Field1
		,strField2 AS Field2
		,strField3 AS Field3
		,strField4 AS Field4
		,strField5 AS Field5
		,strField6 AS Field6
	FROM dbo.fnTblInvLocationsAll() tblInv
	WHERE intType <> 5
	ORDER BY strPartNumber
		,[Type]
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInventoryLocation]
(
	@SelectedLocation AS NVARCHAR(20),
	@SelectedInvType AS INT,
	@SelectedStatus AS INT,
	@IsInvSortDescription AS BIT
)
AS
BEGIN
	DECLARE @QueryCommand AS NVARCHAR(MAX)		
	DECLARE @ParameterDefinition AS NVARCHAR(MAX) 	
	SET @QueryCommand = 'SELECT tblInv.strPartNumber AS PartNumber, tblInv.strDesc AS Description, tblInvExt.strLocName AS LocationName, tblInvExt.strAcctSet AS AccountSet, tblInvExt.strBinLoc AS BinLocation, tblInvExt.bitInactive AS InActive, tblInvExt.bitDefault AS DefaultLoc FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber'
		
	IF @SelectedInvType = 0
	BEGIN
		SET @QueryCommand += ' WHERE tblInv.intType = 1'
	END
	ELSE IF @SelectedInvType = 1
	BEGIN
		SET @QueryCommand += ' WHERE tblInv.intType = 4'
	END
	ELSE IF @SelectedInvType = 2
	BEGIN
		SET @QueryCommand += ' WHERE tblInv.intType = 11'
	END

	IF(CHARINDEX('All Locations', @SelectedLocation) <= 0)
	BEGIN
		SET @QueryCommand += 'AND tblInvExt.strLocName = @SelectedLocation'
	END
				
	IF @SelectedStatus <> 0
	BEGIN
		IF @SelectedStatus = 1
		BEGIN
			SET @QueryCommand +=' AND tblInv.bitInactive = 0'
		END
		ELSE
		BEGIN
			SET @QueryCommand +=' AND tblInv.bitInactive = 1'
		END
	END

	IF @IsInvSortDescription = 0
	BEGIN
		SET @QueryCommand +=' ORDER BY tblInv.strPartNumber, tblInvExt.strLocName'
	END
	ELSE
	BEGIN
		SET @QueryCommand +=' ORDER BY tblInv.strDesc, tblInvExt.strLocName'
	END
	Set @ParameterDefinition =' @SelectedLocation NVARCHAR(20)'								
	EXECUTE sp_executesql @QueryCommand, @ParameterDefinition, @SelectedLocation
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryLocationDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[GetGridInventoryMaster] ***********/

/*********** Start [dbo].[GetInventoryLocationDetails] ***********/
CREATE PROCEDURE [dbo].[GetInventoryLocationDetails]  
(   
 @PartNumber NVARCHAR(50),
 @LocationName VARCHAR(500)= NULL
)  
AS  
BEGIN  
 SELECT  tblInvLoc.strLocName AS LocationName,  
        tblInvLoc.strDesc AS [Description],  
        tblInvExt.decAvail AS Avail,  
        tblInvExt.decAlloc  AS Alloc,  
        tblInvExt.decOnHand AS OnHand,  
        tblInvExt.decOnOrder AS OnOrder,  
        tblInvExt.decValue AS Value,  
        tblInvLoc.intType AS [Type],  
        tblInvExt.strAcctSet AS AcctSet,  
        tblInvExt.strBinLoc AS BinLoc,
		tblInvExt.decManuf AS Manufacture,
		tblInvExt.bitDefault AS IsDefault
FROM    tblInvExt  
        INNER JOIN tblInvLoc ON tblInvExt.strLocName = tblInvLoc.strLocName  
WHERE   ( tblInvExt.strPartNumber = @PartNumber AND (ISNULL(@LocationName,'''')='''' OR dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName))) );  
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryLocationList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetInventoryLocationList]
    @UserName AS NVARCHAR(20)
AS
BEGIN
    SELECT  '<<All Locations>>' strDesc
    UNION
    SELECT  strDesc
    FROM    tblInvLoc (NOLOCK)
    WHERE   ( ( strLocName IN (
                SELECT  tblInvLoc.strLocName
                FROM    tblInvLoc (NOLOCK)
                        LEFT JOIN tblInvLocSec (NOLOCK) ON tblInvLoc.strLocName = tblInvLocSec.strLocName
                WHERE   ISNULL(( SELECT COUNT(tblInvLocSec.strLocName)
                                 FROM   tblInvLocSec (NOLOCK)
                                 WHERE  tblInvLocSec.strLocName = tblInvLoc.strLocName
                               ), 0) = 0
                        OR ( ISNULL(( SELECT    COUNT(tblInvLocSec.strLocName)
                                      FROM      tblInvLocSec (NOLOCK)
                                      WHERE     tblInvLocSec.strLocName = tblInvLoc.strLocName
                                    ), 0) > 0
                             AND tblInvLocSec.strUserName = @UserName
                           ) ) )
              OR strLocName IS NULL
            );
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryLocationsList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/***********Start [GetInventoryLocationsList]********************/

CREATE PROCEDURE [dbo].[GetInventoryLocationsList] (
	@LocationCriteria AS NVARCHAR(50)
	,@DocNumber AS NVARCHAR(50)
	)
AS
BEGIN
	SELECT tblInv.[strPartNumber] AS PartNumber
		,[strDesc] AS [Description]
		,[intType] AS [Type]
		,[strCategory] AS Category
		,CASE 
			WHEN strAcctSet IS NULL
				THEN ''
			ELSE strAcctSet
			END AS AcctSet
		,[intExpAcct] AS ExpAcct
		,[decCostOnPO] AS CostOnPO
		,[bitUseLPPOnPO] AS UseLPPOnPO
		,[intReorderQty] AS ReorderQty
		,[strBuyUnit] AS BuyUnit
		,[strStockUnit] AS StockUnit
		,[decBuyToStock] AS BuyToStock
		,[bitAllowPriceChg] AS AllowPriceChg
		,[dteDateLastSale] AS DateLastSale
		,[dteLastPurchase] AS LastPurchase
		,[decLastPPUnit] AS LastPPUnit
		,[dteLastUpdated] AS LastUpdated
		,[bitUseBOM] AS UseBOM
		,[intBOMQty] AS BOMQty
		,[strAddInfo] AS AddInfo
		,tblInv.[bitInactive] AS IsInactive
		,[decSumAvail] AS SumAvail
		,[decSumAlloc] AS SumAlloc
		,[decSumOnHand] AS SumOnHand
		,[decSumValue] AS SumValue
		,[decSumOnOrder] AS SumOnOrder
		,[decSumOpenQty] AS SumOpenQty
		,[decSumOpenValue] AS SumOpenValue
		,[decSumValYearStart] AS SumValYearStart
		,[decSumQtyYearStart] AS SumQtyYearStart
		,[decSumAmtSoldYTD] AS SumAmtSoldYTD
		,[decSumAmtSoldLY] AS SumAmtSoldLY
		,[decSumQtySoldYTD] AS SumQtySoldYTD
		,[decSumQtySoldLY] AS SumQtySoldLY
		,[decSumCOGSYTD] AS SumCOGSYTD
		,[decSumCOGSLY] AS SumCOGSLY
		,[intSumNumTransYTD] AS SumNumTransYTD
		,[intSumNumTransLY] AS SumNumTransLY
		,[bitAutoBuild] AS AutoBuild
		,[strField1] AS Field1
		,[strField2] AS Field2
		,[strField3] AS Field3
		,[strField4] AS Field4
		,[strField5] AS Field5
		,[strField6] AS Field6
		,[strBarCode] AS BarCode
		,[decStandardCost] AS StandardCost
		,[bitItemNumConvUsed] AS IsItemNumConvUsed
		,[strSellUnit] AS SellUnit
		,[strSellStockUnit] AS SellStockUnit
		,[decSellFromStock] AS SellFromStock
		,[strItemSegment1] AS ItemSegment1
		,[strItemSegment2] AS ItemSegment2
		,[strItemSegment3] AS ItemSegment3
		,[strItemSegment4] AS ItemSegment4
		,[strInvNumConv] AS InvNumConv
		,[bitInvSerialType] AS IsSerialType
		,[strInvSerialType] AS SerialType
		,[decRepairCharge] AS RepairCharge
		,[strBarCode2] AS BarCode2
		,[bitVoucherEnabled] AS IsVoucherEnabled
		,[strVoucherCode] AS VoucherCode
		,[decDefSaleQty] AS DefaultSaleQty
		,[strExtendedDesc] AS ExtendedDesc
		,[bitInvExtDescOnSI] AS IsInvExtDescOnSI
		,[bitInvExtDescOnSO] AS IsInvExtDescOnSO
		,[bitInvExtDescOnSQ] AS IsInvExtDescOnSQ
		,[bitInvExtDescOnSFHQ] AS IsInvExtDescOnSFHQ
		,[bitInvExtDescOnCR] AS IsInvExtDescOnCR
		,[bitInvExtDescOnPI] AS IsInvExtDescOnPI
		,[bitInvExtDescOnPO] AS IsInvExtDescOnPO
		,[bitInvExtDescOnPQ] AS IsInvExtDescOnPQ
		,[bitWebstoreItem] AS IsWebstoreItem
		,[strDimProCode] AS DimProCode
		,[strRSTTerminalSync] AS RSTTerminalSync
		,[intDecimalQuantity] AS DecimalQuantity
		,[strBOMNotes] AS BOMNotes
		,[bitInvExtDescOnBRQ] AS InvExtDescOnBRQ
		,[decMass] AS Mass
		,[decVolumetricWeight] AS VolumetricWeight
		,[strUnitOfMeasure] AS UnitOfMeasure
		,[decW] AS Width
		,[decH] AS Height
		,[decD] AS Depth
		,[decCube] AS [Cube]
		,[decFactor] AS Factor
		,tblInv.decMaxLevel AS MaxLevel
		,[decOrderLeadTime] AS OrderLeadTime
		,[decSafetyFactorPer] AS SafetyFactorPer
		,[decDaysSalesinStock] AS DaysSalesinStock
		,[decMinimumOrderQuantity] AS MinimumOrderQuantity
		,[decNewDailySales] AS NewDailySales
		,[decOldMinLevel] AS OldMinLevel
		,tblInv.[decMinimumLevel] AS MinimumLevel
		,[decOldMaxLevel] AS OldMaxLevel
		,[decEconomicOrderQty] AS EconomicOrderQty
		,[bitPallet] AS IsPallet
		,[bitInclInvForecast] AS IsInclInvForecast
		,[bitDimProSales] AS IsDimProSales
		,[bitDimProPurchases] AS IsDimProPurchases
		,[strInvWCCode] AS InvWCCode
		,[decLastManCost]
		,[bitAutoBuildSameLoc] AS IsAutoBuildSameLoc
		,[bitExclCommission] AS IsExclCommission
	FROM dbo.fnTblInvLocations(@LocationCriteria) tblInv
	WHERE strPartNumber IN (
			SELECT DISTINCT strPartNumber
			FROM tblContractBillDT
			WHERE strContDocID = @DocNumber
			)
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryLotExtData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInventoryLotExtData]  
(  
 @PartNumber AS NVARCHAR(100),  
 @Location AS NVARCHAR(100),
 @BinID AS BIGINT 
)  
AS  
BEGIN  
	SELECT 
	strLotNumber AS LotNumber
	, decQty AS Quantity
	, bitExpiryDate AS IsExpiryDate
	, dteExpiryDate AS ExpiryDate
	FROM tblInvLotExt 
	WHERE 
	strPartNumber = @PartNumber 
	AND strLocName = @Location 
	AND lngBinID = @BinID 
	AND decQty > 0 
	ORDER BY CASE WHEN bitExpiryDate = 1 THEN dteExpiryDate ELSE dteUpdatedDate END
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryLotExtForLotNumberAllow]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [SerialNumberAllow] ***********/

/*********** Start [GetInventoryLotExtForLotNumberAllow] ***********/
CREATE PROCEDURE [dbo].[GetInventoryLotExtForLotNumberAllow]
(
	@PartNumber AS NVARCHAR(50),
	@LotNumber AS NVARCHAR(50)
)
AS
BEGIN
	SELECT strPartNumber FROM tblInvLotExt WHERE strPartNumber = @PartNumber AND strLotNumber LIKE @LotNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryPPUnit]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[GetSerialLotTypesForPartNumber] ***********/

/*********** Start [dbo].[GetInventoryPPUnit] ***********/
CREATE PROCEDURE [dbo].[GetInventoryPPUnit]
(
	@PartNumber nvarchar(30),
	@BarCode nvarchar(30),
	@Location nvarchar(10)
)
AS
BEGIN
	SELECT tblInv.decLastPPUnit as LastPPUnit,
		   tblInv.decBuyToStock as BuyToStock,
		   tblInvExt.decValue as Value,
		   tblInvExt.decOnHand as OnHand
	FROM tblInv
	INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
	AND tblInvExt.strLocName = @Location
	WHERE (
			tblInv.strPartNumber = @PartNumber
	       OR tblInv.strBarCode = @BarCode
	       OR tblInv.strBarCode2 = @BarCode)
	  AND tblInv.intType = 1
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryRequisionList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetDefaultLocationName] ***********/

/***********Start [GetInventoryRequisionList]*********************/
CREATE PROCEDURE [dbo].[GetInventoryRequisionList]
(
	@ProcessJob NVARCHAR(50)
)
AS
BEGIN
	--SELECT
	--	tblWSWIP.JBDocID
	--	,tblWSWIPCompInvBin.ID
	--	,tblWSWIPCompInvBin.WIPDocID as DocId
	--	,tblWSWIPCompInvBin.[LineNo]
	--	,tblWSWIPCompInvBin.BinID
	--	,tblWSWIPCompInvBin.Qty
	--	,ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblWSWIPCompInvBin.BinId),'') AS 'BinCode'
	--	,tblWSWIPCompDT.[Type]
	--FROM
	--tblWSWIPCompInvBin
	--INNER JOIN tblWSWIP ON tblWSWIP.WIPDocID = tblWSWIPCompInvBin.WIPDocID
	--INNER JOIN tblWSWIPCompDT ON tblWSWIPCompDT.WIPDocID = tblWSWIPCompInvBin.WIPDocID
	--WHERE 
	--	tblWSWIP.JBDocID = @ProcessJob

	SELECT
		tblWSWIP.JBDocID
		,tblWSWIPCompInvBin.[LineNo]
		,tblWSWIPCompInvBin.BinID
		,SUM(CASE tblWSWIPCompDT.[Type] When 0 Then tblWSWIPCompInvBin.Qty ELSE (tblWSWIPCompInvBin.Qty * -1) END) as Qty
		,ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblWSWIPCompInvBin.BinId),'') AS 'BinCode'
	FROM
	tblWSWIPCompInvBin
	INNER JOIN tblWSWIP ON tblWSWIP.WIPDocID = tblWSWIPCompInvBin.WIPDocID
	INNER JOIN tblWSWIPCompDT ON tblWSWIPCompDT.WIPDocID = tblWSWIPCompInvBin.WIPDocID
	WHERE 
		tblWSWIP.JBDocID = @ProcessJob
	GROUP BY tblWSWIP.JBDocID,tblWSWIPCompInvBin.[LineNo],tblWSWIPCompInvBin.BinID
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventorySearchData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------------------
/*********** Start [GetInventorySearchData] ***********/
CREATE PROCEDURE [dbo].[GetInventorySearchData]
(
	@ShowInactive BIT,
	@IsInStock BIT,
	@IsNoStock BIT,
	@IsAllItems BIT,
	@IsService BIT,
	@Category VARCHAR(20),
	@IsSearchNumber BIT,
	@IsSearchDesc BIT,
	@IsSearchBarcode BIT,
	@SearchValue VARCHAR(500),
	@IsField1 BIT,
	@IsField2 BIT,
	@IsField3 BIT,
	@IsField4 BIT,
	@IsField5 BIT,
	@IsField6 BIT
)

AS
BEGIN
	
	SET @SearchValue = CONCAT('%',@SearchValue,'%')

	SELECT strPartNumber AS PartNumber
		,strDesc AS [Desc]
		,strBarCode AS BarCode
		,strBarCode2 AS BarCode2
		,strField1 AS Field1
		,strField2 AS Field2
		,strField3 AS Field3
		,strField4 AS Field4
		,strField5 AS Field5
		,strField6 AS Field6
	FROM tblInv
	WHERE (@ShowInactive = 1 OR bitInactive = 0) 
		AND (@IsInStock = 0 OR (intType = 1 AND decSumAvail > 0))
		AND (@IsNoStock = 0 OR (intType = 1 AND decSumAvail <= 0))
		AND (@IsAllItems = 0 or INTtYPE = 1)
		AND (@IsService = 0 or INTtYPE = 4)
		AND (@Category IS NULL OR strCategory = @Category)
		AND (@IsSearchNumber = 0 OR strPartNumber LIKE @SearchValue)
		AND (@IsSearchDesc = 0 OR strDesc LIKE @SearchValue)
		AND (@IsSearchBarcode = 0 OR strBarcode LIKE @SearchValue OR strBarcode2 LIKE @SearchValue)
		AND (@IsField1 = 0 OR strField1 LIKE @SearchValue)
		AND (@IsField2 = 0 OR strField2 LIKE @SearchValue)
		AND (@IsField3 = 0 OR strField3 LIKE @SearchValue)
		AND (@IsField4 = 0 OR strField4 LIKE @SearchValue)
		AND (@IsField5 = 0 OR strField5 LIKE @SearchValue)
		AND (@IsField6 = 0 OR strField6 LIKE @SearchValue)
		
	ORDER BY 
		CASE WHEN (@IsSearchNumber = 1 OR @IsSearchBarcode = 1) THEN strPartNumber
			WHEN @IsSearchDesc = 1 THEN strDesc
			WHEN @IsField1 = 1 THEN strField1
			WHEN @IsField2 = 1 THEN strField2
			WHEN @IsField3 = 1 THEN strField3
			WHEN @IsField4 = 1 THEN strField4
			WHEN @IsField5 = 1 THEN strField5
			WHEN @IsField6 = 1 THEN strField6
		END
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventorySerialExtData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetInventorySerialExtData]  
(  
 @PartNumber AS NVARCHAR(100),  
 @Location AS NVARCHAR(100),
 @BinID AS BIGINT
)  
AS  
BEGIN  
	SELECT 
	strSerialNumber AS SerialNumber
	, decQty AS Quantity
	, CAST(0 AS BIT) AS IsExpiryDate
	, dteUpdatedDate  AS UpdatedDate
	FROM tblInvSerialExt 
	WHERE 
	strPartNumber = @PartNumber 
	AND strLocName = @Location 
	AND lngBinID = @BinID 
	AND decQty > 0 
	ORDER BY ISNULL(dteUpdatedDate, GETDATE()), strSerialNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventorySerialLotExtData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInventorySerialLotExtData] (
	@InventoryType AS INT
	,@IsExpiryDate AS BIT
	,@PartNumber AS NVARCHAR(50)
	,@Location AS NVARCHAR(50)
	,@SearchText AS NVARCHAR(MAX)
	,@IsManReversal BIT
	,@TransactionType INT
	,@IsPickTicket BIT
	,@IsSalesOrder BIT
	,@IsDimensions BIT
	,@ManRevJobNumber NVARCHAR(50)
	,@Type AS INT = 0
	,@IsWIPReturn AS BIT = 0
	,@BinIds AS NVARCHAR(50) = NULL
	,@PkTkDocID AS NVARCHAR(100) = ''
	,@DAAccrualType AS INT = 0
	,@DADocID AS NVARCHAR(100) = ''
	,@IsSalesInvoice AS INT = 0
	,@IsAdjusting AS INT = 0
	,@IsConvertingDA AS INT = 0
	)
AS
BEGIN
	IF @InventoryType = 1 -- if Lot Control
	BEGIN
		IF (
				@IsManReversal = 1
				AND @TransactionType = 11
				)
		BEGIN
			SELECT Z.strSerialNumber AS SerialLotNumber
				,SUM(Z.decQty) AS Quantity
				,Z.bitExpiryDate AS IsExpiryDate
				,'' AS Dimensions
				,Z.dteExpiryDate AS ExpiryDate
				,EXT.lngBinId AS BinID
				,strBinCode AS Bin
			FROM (
				SELECT SRL.strJBDocID
					,SRL.strPartNumber
					,SRL.strSerialNumber
					,SRL.decQty
					,SRL.strUnit
					,SRL.bitExpiryDate
					,SRL.dteExpiryDate
					,SRL.intSerialLotType
					,INV.strInvSerialType
				FROM tblManJobByProdSerial SRL
				INNER JOIN tblInv INV ON SRL.strPartNumber = INV.strPartNumber
				WHERE SRL.strJBDocID = @ManRevJobNumber
					AND SRL.strPartNumber = @PartNumber
				
				UNION ALL
				
				SELECT REV.strJBDocID
					,SRL.strPartNumber
					,SRL.strSerialNumber
					,SRL.decQty * - 1 AS decQty
					,SRL.strUnit
					,SRL.bitExpiryDate
					,SRL.dteExpiryDate
					,SRL.intSerialLotType
					,INV.strInvSerialType
				FROM tblManJobReversed REV
				INNER JOIN tblManJobByProdSerial SRL ON REV.strJBDocIDRev = SRL.strJBDocID
				INNER JOIN tblInv INV ON SRL.strPartNumber = INV.strPartNumber
				WHERE REV.strJBDocID = @ManRevJobNumber
					AND SRL.strPartNumber = @PartNumber
				) Z
			LEFT JOIN tblInvLotExt EXT ON Z.strPartNumber = EXT.strPartNumber
				AND Z.strSerialNumber = EXT.strLotNumber
			LEFT JOIN tblInvLocBin ON EXT.lngBinId = tblInvLocBin.lngId
			GROUP BY Z.strSerialNumber
				,Z.bitExpiryDate
				,Z.dteExpiryDate
				,Z.dteExpiryDate
				,EXT.lngBinID
				,tblInvLocBin.strBinCode
			HAVING SUM(Z.decQty) > 0
			ORDER BY Z.strSerialNumber
		END
		ELSE IF (
				@IsManReversal = 1
				AND @TransactionType = 12
				)
		BEGIN
			SELECT Z.strSerialNumber AS SerialLotNumber
				,SUM(Z.decQty) AS Quantity
				,Z.bitExpiryDate AS IsExpiryDate
				,Z.dteExpiryDate AS ExpiryDate
				,EXT.lngBinId AS BinID
				,strBinCode AS Bin
			FROM (
				SELECT WIP.strJBDocID
					,COMP.strPartNumber
					,SRL.strSerialNumber
					,SRL.decQty
					,SRL.strUnit
					,SRL.bitExpiryDate
					,SRL.dteExpiryDate
					,SRL.intSerialLotType
					,INV.strInvSerialType
				FROM tblManWIP WIP
				INNER JOIN tblManWIPCompInv COMP ON WIP.strWIPDocID = COMP.strWIPDocID
				INNER JOIN tblManWIPCompInvSerial SRL ON COMP.strWIPDocID = SRL.strWIPDocID
					AND COMP.intLineNo = SRL.intLineNo
				INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber
				WHERE WIP.strJBDocID = @ManRevJobNumber
					AND COMP.strPartNumber = @PartNumber
					AND (
						SRL.lngBinId IN (
							SELECT Cast(Value AS BIGINT)
							FROM dbo.fnSplitStringAsTable(@BinIds, ',')
							)
						)
				
				UNION ALL
				
				SELECT REV.strJBDocID
					,COMP.strPartNumber
					,SRL.strSerialNumber
					,SRL.decQty * - 1 AS decQty
					,SRL.strUnit
					,SRL.bitExpiryDate
					,SRL.dteExpiryDate
					,SRL.intSerialLotType
					,INV.strInvSerialType
				FROM tblManJobReversed REV
				INNER JOIN tblManJobCompInv COMP ON REV.strJBDocIDRev = COMP.strJBDocID
				INNER JOIN tblManJobCompInvSerial SRL ON COMP.strJBDocID = SRL.strJBDocID
					AND COMP.intLineNo = SRL.intLineNo
				INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber
				WHERE REV.strJBDocID = @ManRevJobNumber
					AND COMP.strPartNumber = @PartNumber
				) Z
			LEFT JOIN tblInvLotExt EXT ON Z.strPartNumber = EXT.strPartNumber
				AND Z.strSerialNumber = EXT.strLotNumber
			LEFT JOIN tblInvLocBin ON EXT.lngBinId = tblInvLocBin.lngId
			WHERE (
					EXT.lngBinId IN (
						SELECT Cast(Value AS BIGINT)
						FROM dbo.fnSplitStringAsTable(@BinIds, ',')
						)
					)
			GROUP BY Z.strSerialNumber
				,Z.strUnit
				,Z.bitExpiryDate
				,Z.dteExpiryDate
				,Z.dteExpiryDate
				,EXT.lngBinId
				,strBinCode
			HAVING SUM(Z.decQty) > 0
			ORDER BY Z.strSerialNumber
		END
		ELSE IF (
				@TransactionType = 12
				AND @IsWIPReturn = 1
				)
		BEGIN
			SELECT Z.strSerialNumber AS SerialLotNumber
				,SUM(Z.decQty) AS Quantity
				,Z.bitExpiryDate AS IsExpiryDate
				,Z.dteExpiryDate AS ExpiryDate
				,EXT.lngBinId AS BinID
				,tblInvLocBin.strBinCode AS Bin
			FROM (
				SELECT WIP.strJBDocID
					,COMP.strPartNumber
					,SRL.strSerialNumber
					,CASE 
						WHEN COMP.intType = @Type
							THEN SRL.decQty * - 1
						ELSE SRL.decQty
						END AS decQty
					,SRL.strUnit
					,SRL.bitExpiryDate
					,SRL.dteExpiryDate
					,SRL.intSerialLotType
					,INV.strInvSerialType
				FROM tblManWIP WIP
				INNER JOIN tblManWIPCompInv COMP ON WIP.strWIPDocID = COMP.strWIPDocID
				INNER JOIN tblManWIPCompInvSerial SRL ON COMP.strWIPDocID = SRL.strWIPDocID
					AND COMP.intLineNo = SRL.intLineNo
				INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber
				WHERE WIP.strJBDocID = @ManRevJobNumber
					AND COMP.strPartNumber = @PartNumber
				) Z
			LEFT JOIN tblInvLotExt EXT ON Z.strPartNumber = EXT.strPartNumber
				AND Z.strSerialNumber = EXT.strLotNumber
			LEFT JOIN tblInvLocBin ON EXT.lngBinId = tblInvLocBin.lngId
			GROUP BY Z.strSerialNumber
				,Z.bitExpiryDate
				,Z.dteExpiryDate
				,EXT.lngBinID
				,tblInvLocBin.strBinCode
			HAVING SUM(Z.decQty) > 0
			ORDER BY Z.strSerialNumber
		END
				--For Workshop
		ELSE IF (
				@TransactionType = 16
				AND @IsWIPReturn = 1
				)
		BEGIN
			SELECT Z.SerialNumber AS SerialLotNumber
				,SUM(Z.decQty) AS Quantity
				,Z.IsExpiryDate AS IsExpiryDate
				,Z.ExpiryDate AS ExpiryDate
				,EXT.lngBinId AS BinID
				,tblInvLocBin.strBinCode AS Bin
			FROM (
				SELECT WIP.JBDocID
					,COMP.PartNumber
					,SRL.SerialNumber
					,CASE 
						WHEN COMP.[Type] = @Type
							THEN SRL.Qty * - 1
						ELSE SRL.Qty
						END AS decQty
					,SRL.Unit
					,SRL.IsExpiryDate
					,SRL.ExpiryDate
					,SRL.SerialLotType
					,INV.strInvSerialType
				FROM tblWSWIP WIP
				INNER JOIN tblWSWIPCompDT COMP ON WIP.WIPDocID = COMP.WIPDocID
				INNER JOIN tblWSWIPCompSerial SRL ON COMP.WIPDocID = SRL.WIPDocID
					AND COMP.[LineNo] = SRL.[LineNo]
				INNER JOIN tblInv INV ON COMP.PartNumber = INV.strPartNumber
				WHERE WIP.JBDocID = @ManRevJobNumber
					AND COMP.PartNumber = @PartNumber
				) Z
			LEFT JOIN tblInvLotExt EXT ON Z.PartNumber = EXT.strPartNumber
				AND Z.SerialNumber = EXT.strLotNumber
			LEFT JOIN tblInvLocBin ON EXT.lngBinId = tblInvLocBin.lngId
			GROUP BY Z.SerialNumber
				,Z.IsExpiryDate
				,Z.ExpiryDate
				,EXT.lngBinID
				,tblInvLocBin.strBinCode
			HAVING SUM(Z.decQty) > 0
				AND (
					EXT.lngBinId IN (
						SELECT Cast(Value AS BIGINT)
						FROM dbo.fnSplitStringAsTable(@BinIds, ',')
						)
					)
			ORDER BY Z.SerialNumber
		END
		ELSE IF (
				@DAAccrualType = 0
				AND IsNull(@DADocID, '') != ''
				)
		BEGIN
			SELECT Z.strSerialNumber AS SerialLotNumber
				,(SUM(Z.decQty) - SUM(InvQty)) AS Quantity
				,Z.bitExpiryDate AS IsExpiryDate
				,Z.dteExpiryDate AS ExpiryDate
				,EXT.lngBinId AS BinID
				,strBinCode AS Bin
			FROM (
				SELECT docDA.strOrdDADocID
					,DTL.strPartNumber
					,SRL.strSerialNumber
					,SRL.decQty
					,Isnull(invSRL.decQty, 0) AS InvQty
					,SRL.strUnit
					,SRL.bitExpiryDate
					,SRL.dteExpiryDate
					,SRL.intSerialLotType
					,INV.strInvSerialType
				FROM tblOrderDocDA docDA
				INNER JOIN tblOrderDocDADT DTL ON docDA.strOrdDADocID = DTL.strOrdDADocID
				INNER JOIN tblOrderDocDADTSerial SRL ON DTL.strOrdDADocID = SRL.strOrdDADocID
					AND DTL.intLineNo = SRL.intLineNo
				INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber
				LEFT JOIN tblinvoiceDocDT invDT ON invDT.strOrdDADocID = DTL.strOrdDADocID
					AND invDT.intDALineNo = DTL.intLineNo
				LEFT JOIN tblInvoiceDocDTSerial invSRL ON invSRL.strInvDocID = invDT.strInvDocID
					AND invSRL.intLineNo = invDT.intLineNo
					AND invSRL.strSerialNumber = SRL.strSerialNumber
				WHERE docDA.strOrdDADocID = @DADocID
					AND DTL.strPartNumber = @PartNumber
				) Z
			LEFT JOIN tblInvLotExt EXT ON Z.strPartNumber = EXT.strPartNumber
				AND Z.strSerialNumber = EXT.strLotNumber
			LEFT JOIN tblInvLocBin ON EXT.lngBinId = tblInvLocBin.lngId
			GROUP BY Z.strSerialNumber
				,Z.strUnit
				,Z.bitExpiryDate
				,Z.dteExpiryDate
				,EXT.lngBinId
				,strBinCode
			HAVING SUM(Z.decQty) > 0
			ORDER BY Z.strSerialNumber
		END
		ELSE
		BEGIN
			IF @IsPickTicket = 1
			BEGIN
				IF @IsExpiryDate = 1
				BEGIN
					SELECT ILE.strLotNumber AS SerialLotNumber
						,
						--( ILE.decQty - ISNULL(Z.decQtyPicked, 0) ) AS decQty ,
						ILE.decQty - ISNULL(Z.decQtyPicked, 0) AS Quantity
						,ILE.bitExpiryDate AS IsExpiryDate
						,ILE.dteExpiryDate AS ExpiryDate
						,ILE.lngBinId AS BinID
						,strBinCode AS Bin
					FROM tblInvLotExt ILE
					LEFT JOIN (
						SELECT SRL.strSerialNumber
							,SUM(DTL.decQtyPicked) AS decQtyPicked
						FROM tblPickTickets HDR
						INNER JOIN tblPickTicketsDT DTL ON HDR.strPkTkDocID = DTL.strPkTkDocID
						INNER JOIN tblPickTicketsDTSerial SRL ON DTL.strPkTkDocID = SRL.strPkTkDocID
							AND DTL.intLineNo = SRL.intLineNo
						WHERE (HDR.bitCleared = 0)
							AND (HDR.bitStockTransferred = 0)
							AND (DTL.strPartNumber = @PartNumber)
							AND (DTL.strLocation = @Location)
							AND HDR.strPkTkDocID = @PkTkDocID
						GROUP BY SRL.strSerialNumber
						) Z ON ILE.strLotNumber = Z.strSerialNumber
					LEFT JOIN tblInvLocBin ON ILE.lngBinId = tblInvLocBin.lngId
					WHERE (ILE.strPartNumber = @PartNumber)
						AND (ILE.strLocName = @Location)
						AND ((ILE.decQty - ISNULL(Z.decQtyPicked, 0)) > 0)
						AND (
							ILE.lngBinId IN (
								SELECT Cast(Value AS BIGINT)
								FROM dbo.fnSplitStringAsTable(@BinIds, ',')
								)
							)
						AND (
							(
								@SearchText IS NULL
								OR @SearchText = ''
								)
							OR (ILE.strLotNumber LIKE @SearchText)
							)
					ORDER BY ILE.dteExpiryDate
						,ILE.strLotNumber
						-- AND ( ILE.strLotNumber LIKE @SearchText ) ORDER BY ILE.dteExpiryDate, ILE.strLotNumber
				END
				ELSE
				BEGIN
					SELECT ILE.strLotNumber AS SerialLotNumber
						,(ILE.decQty - ISNULL(Z.decQtyPicked, 0)) AS Quantity
						,ILE.bitExpiryDate AS IsExpiryDate
						,ILE.dteExpiryDate AS ExpiryDate
						,ILE.lngBinId AS BinID
						,strBinCode AS Bin
					FROM tblInvLotExt ILE
					LEFT JOIN (
						SELECT SRL.strSerialNumber
							,SUM(DTL.decQtyPicked) AS decQtyPicked
						FROM tblPickTickets HDR
						INNER JOIN tblPickTicketsDT DTL ON HDR.strPkTkDocID = DTL.strPkTkDocID
						INNER JOIN tblPickTicketsDTSerial SRL ON DTL.strPkTkDocID = SRL.strPkTkDocID
							AND DTL.intLineNo = SRL.intLineNo
						WHERE (HDR.bitCleared = 0)
							AND (HDR.bitStockTransferred = 0)
							AND (DTL.strPartNumber = @PartNumber)
							AND (DTL.strLocation = @Location)
							AND HDR.strPkTkDocID = @PkTkDocID
						GROUP BY SRL.strSerialNumber
						) Z ON ILE.strLotNumber = Z.strSerialNumber
					LEFT JOIN tblInvLocBin ON ILE.lngBinId = tblInvLocBin.lngId
					WHERE (ILE.strPartNumber = @PartNumber)
						AND (ILE.strLocName = @Location)
						AND ((ILE.decQty - ISNULL(Z.decQtyPicked, 0)) > 0)
						AND (
							(
								@SearchText IS NULL
								OR @SearchText = ''
								)
							OR (ILE.strLotNumber LIKE @SearchText)
							)
						AND (
							ILE.lngBinId IN (
								SELECT Cast(Value AS BIGINT)
								FROM dbo.fnSplitStringAsTable(@BinIds, ',')
								)
							)
					ORDER BY ILE.dteUpdatedDate
						,ILE.strLotNumber
				END
			END
			ELSE IF (
					@IsSalesOrder = 1
					AND @IsDimensions = 1
					)
			BEGIN
				IF @IsExpiryDate = 1
				BEGIN
					SELECT ILE.strLotNumber AS SerialLotNumber
						,(ILE.decQty - ISNULL(Z.decQtyAllocated, 0)) AS Quantity
						,ILE.bitExpiryDate AS IsExpiryDate
						,ILE.dteExpiryDate AS ExpiryDate
						,ILE.lngBinId AS BinID
						,strBinCode AS Bin
					FROM tblInvLotExt ILE
					LEFT JOIN (
						SELECT SRL.strSerialNumber
							,SUM(DTL.decQtyRemaining) AS decQtyAllocated
						FROM tblOrderDoc HDR
						INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
						INNER JOIN tblOrderDocDTSerial SRL ON DTL.strOrdDocID = SRL.strOrdDocID
							AND DTL.intLineNo = SRL.intLineNo
						WHERE (HDR.bitCleared = 0)
							AND (DTL.strPartNumber = @PartNumber)
							AND (DTL.strLocation = @Location)
						GROUP BY SRL.strSerialNumber
						) Z ON ILE.strLotNumber = Z.strSerialNumber
					LEFT JOIN tblInvLocBin ON ILE.lngBinId = tblInvLocBin.lngId
					WHERE (ILE.strPartNumber = @PartNumber)
						AND (ILE.strLocName = @Location)
						AND ((ILE.decQty - ISNULL(Z.decQtyAllocated, 0)) > 0)
						AND (
							(
								@SearchText IS NULL
								OR @SearchText = ''
								)
							OR (ILE.strLotNumber LIKE @SearchText)
							)
					--AND ( ILE.strLotNumber LIKE @SearchText) 
					ORDER BY ILE.dteExpiryDate
						,ILE.strLotNumber
				END
				ELSE
				BEGIN
					SELECT ILE.strLotNumber AS SerialLotNumber
						,(ILE.decQty - ISNULL(Z.decQtyAllocated, 0)) AS Quantity
						,ILE.bitExpiryDate AS IsExpiryDate
						,ILE.dteExpiryDate AS ExpiryDate
						,ILE.lngBinId AS BinID
						,strBinCode AS Bin
					FROM tblInvLotExt ILE
					LEFT JOIN (
						SELECT SRL.strSerialNumber
							,SUM(DTL.decQtyRemaining) AS decQtyAllocated
						FROM tblOrderDoc HDR
						INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
						INNER JOIN tblOrderDocDTSerial SRL ON DTL.strOrdDocID = SRL.strOrdDocID
							AND DTL.intLineNo = SRL.intLineNo
						WHERE (HDR.bitCleared = 0)
							AND (DTL.strPartNumber = @PartNumber)
							AND (DTL.strLocation = @Location)
						GROUP BY SRL.strSerialNumber
						) Z ON ILE.strLotNumber = Z.strSerialNumber
					LEFT JOIN tblInvLocBin ON ILE.lngBinId = tblInvLocBin.lngId
					WHERE (ILE.strPartNumber = @PartNumber)
						AND (ILE.strLocName = @Location)
						AND ((ILE.decQty - ISNULL(Z.decQtyAllocated, 0)) > 0)
						--AND ( ILE.strLotNumber LIKE @SearchText)
						AND (
							(
								@SearchText IS NULL
								OR @SearchText = ''
								)
							OR (ILE.strLotNumber LIKE @SearchText)
							)
					ORDER BY ILE.dteUpdatedDate
						,ILE.strLotNumber
				END
			END
			ELSE IF (
					@IsSalesInvoice = 1
					AND @IsAdjusting = 1
					)
			BEGIN
				IF @IsExpiryDate = 1
				BEGIN
					SELECT ILE.strLotNumber AS SerialLotNumber
						,ILE.decQty + ISNULL(Z.decQtyPicked, 0) AS Quantity
						,ILE.bitExpiryDate AS IsExpiryDate
						,ILE.dteExpiryDate AS ExpiryDate
						,ILE.lngBinId AS BinID
						,strBinCode AS Bin
					FROM tblInvLotExt ILE
					LEFT JOIN (
						SELECT SRL.strSerialNumber
							,sum(SRL.decQty) AS decQtyPicked
						FROM tblInvoiceDoc HDR
						INNER JOIN tblInvoiceDocDT DTL ON HDR.strInvDocID = DTL.strInvDocID
						INNER JOIN tblInvoiceDocDTSerial SRL ON DTL.strInvDocID = SRL.strInvDocID
							AND DTL.intLineNo = SRL.intLineNo
						WHERE (DTL.strPartNumber = @PartNumber)
							AND (DTL.strLocation = @Location)
							AND HDR.strInvDocID = @PkTkDocID
						GROUP BY SRL.strSerialNumber
						) Z ON ILE.strLotNumber = Z.strSerialNumber
					LEFT JOIN tblInvLocBin ON ILE.lngBinId = tblInvLocBin.lngId
					WHERE (ILE.strPartNumber = @PartNumber)
						AND (ILE.strLocName = @Location)
						AND ((ILE.decQty + ISNULL(Z.decQtyPicked, 0)) > 0)
						AND (
							ILE.lngBinId IN (
								SELECT Cast(Value AS BIGINT)
								FROM dbo.fnSplitStringAsTable(@BinIds, ',')
								)
							)
						AND (
							(
								@SearchText IS NULL
								OR @SearchText = ''
								)
							OR (ILE.strLotNumber LIKE @SearchText)
							)
					ORDER BY ILE.dteExpiryDate
						,ILE.strLotNumber
				END
				ELSE
				BEGIN
					SELECT ILE.strLotNumber AS SerialLotNumber
						,ILE.decQty + ISNULL(Z.decQtyPicked, 0) AS Quantity
						,ILE.bitExpiryDate AS IsExpiryDate
						,ILE.dteExpiryDate AS ExpiryDate
						,ILE.lngBinId AS BinID
						,strBinCode AS Bin
					FROM tblInvLotExt ILE
					LEFT JOIN (
						SELECT SRL.strSerialNumber
							,sum(SRL.decQty) AS decQtyPicked
						FROM tblInvoiceDoc HDR
						INNER JOIN tblInvoiceDocDT DTL ON HDR.strInvDocID = DTL.strInvDocID
						INNER JOIN tblInvoiceDocDTSerial SRL ON DTL.strInvDocID = SRL.strInvDocID
							AND DTL.intLineNo = SRL.intLineNo
						WHERE (DTL.strPartNumber = @PartNumber)
							AND (DTL.strLocation = @Location)
							AND HDR.strInvDocID = @PkTkDocID
						GROUP BY SRL.strSerialNumber
						) Z ON ILE.strLotNumber = Z.strSerialNumber
					LEFT JOIN tblInvLocBin ON ILE.lngBinId = tblInvLocBin.lngId
					WHERE (ILE.strPartNumber = @PartNumber)
						AND (ILE.strLocName = @Location)
						AND ((ILE.decQty + ISNULL(Z.decQtyPicked, 0)) > 0)
						AND (
							ILE.lngBinId IN (
								SELECT Cast(Value AS BIGINT)
								FROM dbo.fnSplitStringAsTable(@BinIds, ',')
								)
							)
						AND (
							(
								@SearchText IS NULL
								OR @SearchText = ''
								)
							OR (ILE.strLotNumber LIKE @SearchText)
							)
					ORDER BY ILE.dteUpdatedDate
						,ILE.strLotNumber
				END
			END
			ELSE
			BEGIN
				IF @IsExpiryDate = 1
				BEGIN
					SELECT ILE.strLotNumber AS SerialLotNumber
						,ILE.decQty AS Quantity
						,ILE.bitExpiryDate AS IsExpiryDate
						,ILE.dteExpiryDate AS ExpiryDate
						,ILE.lngBinId AS BinID
						,strBinCode AS Bin
					FROM tblInvLotExt ILE
					LEFT JOIN tblInvLocBin ON ILE.lngBinId = tblInvLocBin.lngId
					WHERE (
							strPartNumber = @PartNumber
							AND ILE.strLocName = @Location
							AND --AND decQty > 0 
							--strLotNumber LIKE @SearchText				
							(
								ILE.lngBinId IN (
									SELECT Cast(Value AS BIGINT)
									FROM dbo.fnSplitStringAsTable(@BinIds, ',')
									)
								)
							AND (ILE.decQty > 0)
							AND (
								(
									@SearchText IS NULL
									OR @SearchText = ''
									)
								OR (ILE.strLotNumber LIKE @SearchText)
								)
							)
					ORDER BY dteExpiryDate
						,strLotNumber
				END
				ELSE
				BEGIN
					SELECT strLotNumber AS SerialLotNumber
						,decQty AS Quantity
						,bitExpiryDate AS IsExpiryDate
						,dteExpiryDate AS ExpiryDate
						,ILE.lngBinId AS BinID
						,tblInvLocBin.strBinCode AS Bin
					FROM tblInvLotExt ILE
					LEFT JOIN tblInvLocBin ON ILE.lngBinId = tblInvLocBin.lngId
					WHERE strPartNumber = @PartNumber
						AND ILE.strLocName = @Location
						AND decQty > 0
						AND
						--strLotNumber LIKE @SearchText
						(
							ILE.lngBinId IN (
								SELECT Cast(Value AS BIGINT)
								FROM dbo.fnSplitStringAsTable(@BinIds, ',')
								)
							)
						AND (ILE.decQty > 0)
						AND (
							(
								@SearchText IS NULL
								OR @SearchText = ''
								)
							OR (ILE.strLotNumber LIKE @SearchText)
							)
					ORDER BY dteUpdatedDate
						,strLotNumber
				END
			END
		END
	END
	ELSE
	BEGIN
		IF (
				@IsManReversal = 1
				AND @TransactionType = 11
				)
		BEGIN
			SELECT Z.strSerialNumber AS SerialLotNumber
				,SUM(Z.decQty) AS Quantity
				,Z.bitExpiryDate AS IsExpiryDate
				,Z.dteExpiryDate AS ExpiryDate
				,ISNULL(EXT.strDimension, '') AS Dimensions
				,EXT.lngBinId AS BinID
				,tblInvLocBin.strBinCode AS Bin
			FROM (
				SELECT SRL.strJBDocID
					,SRL.strPartNumber
					,SRL.strSerialNumber
					,SRL.decQty
					,SRL.strUnit
					,SRL.bitExpiryDate
					,SRL.dteExpiryDate
					,SRL.intSerialLotType
					,INV.strInvSerialType
				FROM tblManJobByProdSerial SRL
				INNER JOIN tblInv INV ON SRL.strPartNumber = INV.strPartNumber
				WHERE SRL.strJBDocID = @ManRevJobNumber
					AND SRL.strPartNumber = @PartNumber
				
				UNION ALL
				
				SELECT REV.strJBDocID
					,SRL.strPartNumber
					,SRL.strSerialNumber
					,SRL.decQty * - 1 AS decQty
					,SRL.strUnit
					,SRL.bitExpiryDate
					,SRL.dteExpiryDate
					,SRL.intSerialLotType
					,INV.strInvSerialType
				FROM tblManJobReversed REV
				INNER JOIN tblManJobByProdSerial SRL ON REV.strJBDocIDRev = SRL.strJBDocID
				INNER JOIN tblInv INV ON SRL.strPartNumber = INV.strPartNumber
				WHERE REV.strJBDocID = @ManRevJobNumber
					AND SRL.strPartNumber = @PartNumber
				) Z
			LEFT JOIN tblInvSerialExt EXT ON Z.strPartNumber = EXT.strPartNumber
				AND Z.strSerialNumber = EXT.strSerialNumber
			LEFT JOIN tblInvLocBin ON EXT.lngBinId = tblInvLocBin.lngId
			GROUP BY Z.strSerialNumber
				,Z.bitExpiryDate
				,Z.dteExpiryDate
				,EXT.strDimension
				,EXT.lngBinID
				,tblInvLocBin.strBinCode
			HAVING SUM(Z.decQty) > 0
			ORDER BY Z.strSerialNumber
		END
		ELSE IF (
				@IsManReversal = 1
				AND @TransactionType = 12
				)
		BEGIN
			SELECT Z.strSerialNumber AS SerialLotNumber
				,SUM(Z.decQty) AS Quantity
				,Z.bitExpiryDate AS IsExpiryDate
				,Z.dteExpiryDate AS ExpiryDate
				,ISNULL(EXT.strDimension, '') AS Dimensions
				,EXT.lngBinId AS BinID
				,tblInvLocBin.strBinCode AS Bin
			FROM (
				SELECT WIP.strJBDocID
					,COMP.strPartNumber
					,SRL.strSerialNumber
					,SRL.decQty
					,SRL.strUnit
					,SRL.bitExpiryDate
					,SRL.dteExpiryDate
					,SRL.intSerialLotType
					,INV.strInvSerialType
				FROM tblManWIP WIP
				INNER JOIN tblManWIPCompInv COMP ON WIP.strWIPDocID = COMP.strWIPDocID
				INNER JOIN tblManWIPCompInvSerial SRL ON COMP.strWIPDocID = SRL.strWIPDocID
					AND COMP.intLineNo = SRL.intLineNo
				INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber
				WHERE WIP.strJBDocID = @ManRevJobNumber
					AND COMP.strPartNumber = @PartNumber
				
				UNION ALL
				
				SELECT REV.strJBDocID
					,COMP.strPartNumber
					,SRL.strSerialNumber
					,SRL.decQty * - 1 AS decQty
					,SRL.strUnit
					,SRL.bitExpiryDate
					,SRL.dteExpiryDate
					,SRL.intSerialLotType
					,INV.strInvSerialType
				FROM tblManJobReversed REV
				INNER JOIN tblManJobCompInv COMP ON REV.strJBDocIDRev = COMP.strJBDocID
				INNER JOIN tblManJobCompInvSerial SRL ON COMP.strJBDocID = SRL.strJBDocID
					AND COMP.intLineNo = SRL.intLineNo
				INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber
				WHERE REV.strJBDocID = @ManRevJobNumber
					AND COMP.strPartNumber = @PartNumber
				) Z
			LEFT JOIN tblInvSerialExt EXT ON Z.strPartNumber = EXT.strPartNumber
				AND Z.strSerialNumber = EXT.strSerialNumber
			LEFT JOIN tblInvLocBin ON EXT.lngBinId = tblInvLocBin.lngId
			GROUP BY Z.strSerialNumber
				,Z.strUnit
				,Z.bitExpiryDate
				,Z.dteExpiryDate
				,EXT.strDimension
				,EXT.lngBinId
				,tblInvLocBin.strBinCode
			HAVING SUM(Z.decQty) > 0
			ORDER BY Z.strSerialNumber
		END
		ELSE IF (
				@TransactionType = 12
				AND @IsWIPReturn = 1
				)
		BEGIN
			SELECT Z.strSerialNumber AS SerialLotNumber
				,SUM(Z.decQty) AS Quantity
				,Z.bitExpiryDate AS IsExpiryDate
				,Z.dteExpiryDate AS ExpiryDate
				,ISNULL(EXT.strDimension, '') AS Dimensions
				,EXT.lngBinId AS BinID
				,tblInvLocBin.strBinCode AS Bin
			FROM (
				SELECT WIP.strJBDocID
					,COMP.strPartNumber
					,SRL.strSerialNumber
					,CASE 
						WHEN COMP.intType = @Type
							THEN SRL.decQty * - 1
						ELSE SRL.decQty
						END AS decQty
					,SRL.strUnit
					,SRL.bitExpiryDate
					,SRL.dteExpiryDate
					,SRL.intSerialLotType
					,INV.strInvSerialType
				FROM tblManWIP WIP
				INNER JOIN tblManWIPCompInv COMP ON WIP.strWIPDocID = COMP.strWIPDocID
				INNER JOIN tblManWIPCompInvSerial SRL ON COMP.strWIPDocID = SRL.strWIPDocID
					AND COMP.intLineNo = SRL.intLineNo
				INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber
				WHERE WIP.strJBDocID = @ManRevJobNumber
					AND COMP.strPartNumber = @PartNumber
				) Z
			LEFT JOIN tblInvSerialExt EXT ON Z.strPartNumber = EXT.strPartNumber
				AND Z.strSerialNumber = EXT.strSerialNumber
			LEFT JOIN tblInvLocBin ON EXT.lngBinId = tblInvLocBin.lngId
			GROUP BY Z.strSerialNumber
				,Z.bitExpiryDate
				,Z.dteExpiryDate
				,EXT.strDimension
				,EXT.lngBinID
				,tblInvLocBin.strBinCode
			HAVING SUM(Z.decQty) > 0
			ORDER BY Z.strSerialNumber
		END
		ELSE IF (@IsPickTicket = 1)
		BEGIN
			SELECT ISE.strSerialNumber AS SerialLotNumber
				,(ISE.decQty - ISNULL(Z.decQtyPicked, 0)) AS Quantity
				,CAST(0 AS BIT) AS IsExpiryDate
				,ISE.dteUpdatedDate AS ExpiryDate
				,strDimension AS Dimensions
				,ISE.lngBinId AS BinID
				,strBinCode AS Bin
			FROM tblInvSerialExt ISE
			LEFT JOIN (
				SELECT SRL.strSerialNumber
					,SUM(DTL.decQtyPicked) AS decQtyPicked
				FROM tblPickTickets HDR
				INNER JOIN tblPickTicketsDT DTL ON HDR.strPkTkDocID = DTL.strPkTkDocID
				INNER JOIN tblPickTicketsDTSerial SRL ON DTL.strPkTkDocID = SRL.strPkTkDocID
					AND DTL.intLineNo = SRL.intLineNo
				WHERE (HDR.bitCleared = 0)
					AND (HDR.bitStockTransferred = 0)
					AND (DTL.strPartNumber = @PartNumber)
					AND (DTL.strLocation = @Location)
					AND HDR.strPkTkDocID = @PkTkDocID
				GROUP BY SRL.strSerialNumber
				) Z ON ISE.strSerialNumber = Z.strSerialNumber
			LEFT JOIN tblInvLocBin ON ISE.lngBinId = tblInvLocBin.lngId
			WHERE (ISE.strPartNumber = @PartNumber)
				AND (ISE.strLocName = @Location)
				AND ((ISE.decQty - ISNULL(Z.decQtyPicked, 0)) > 0)
				AND (
					ISE.lngBinId IN (
						SELECT Cast(Value AS BIGINT)
						FROM dbo.fnSplitStringAsTable(@BinIds, ',')
						)
					)
				--AND ( ISE.strSerialNumber LIKE @SearchText )
				AND (
					(
						@SearchText IS NULL
						OR @SearchText = ''
						)
					OR (ISE.strSerialNumber LIKE @SearchText)
					)
			ORDER BY ISNULL(ISE.dteUpdatedDate, GETDATE())
				,ISE.strSerialNumber
		END
		ELSE IF (
				@IsSalesOrder = 1
				AND @IsDimensions = 1
				)
		BEGIN
			SELECT ISE.strSerialNumber AS SerialLotNumber
				,(ISE.decQty - ISNULL(Z.decQtyAllocated, 0)) AS Quantity
				,CAST(0 AS BIT) AS IsExpiryDate
				,ISE.dteUpdatedDate AS ExpiryDate
				,strDimension AS Dimensions
				,ISE.lngBinId AS BinID
				,strBinCode AS Bin
			FROM tblInvSerialExt ISE
			LEFT JOIN (
				SELECT SRL.strSerialNumber
					,SUM(DTL.decQtyRemaining) AS decQtyAllocated
				FROM tblOrderDoc HDR
				INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
				INNER JOIN tblOrderDocDTSerial SRL ON DTL.strOrdDocID = SRL.strOrdDocID
					AND DTL.intLineNo = SRL.intLineNo
				WHERE (HDR.bitCleared = 0)
					AND (DTL.strPartNumber = @PartNumber)
					AND (DTL.strLocation = @Location)
				GROUP BY SRL.strSerialNumber
				) Z ON ISE.strSerialNumber = Z.strSerialNumber
			LEFT JOIN tblInvLocBin ON ISE.lngBinId = tblInvLocBin.lngId
			WHERE (ISE.strPartNumber = @PartNumber)
				AND (ISE.strLocName = @Location)
				AND ((ISE.decQty - ISNULL(Z.decQtyAllocated, 0)) > 0)
				AND (
					(
						@SearchText IS NULL
						OR @SearchText = ''
						)
					OR (ISE.strSerialNumber LIKE @SearchText)
					)
			-- AND ( ISE.strSerialNumber LIKE @SearchText )
			ORDER BY ISNULL(ISE.dteUpdatedDate, GETDATE())
				,ISE.strSerialNumber
		END
				--For Workshop
		ELSE IF (
				@TransactionType = 16
				AND @IsWIPReturn = 1
				)
		BEGIN
			SELECT Z.SerialNumber AS SerialLotNumber
				,SUM(Z.decQty) AS Quantity
				,Z.IsExpiryDate AS IsExpiryDate
				,Z.ExpiryDate AS ExpiryDate
				,ISNULL(EXT.strDimension, '') AS Dimensions
				,EXT.lngBinId AS BinID
				,tblInvLocBin.strBinCode AS Bin
			FROM (
				SELECT WIP.JBDocID
					,COMP.PartNumber
					,SRL.SerialNumber
					,CASE 
						WHEN COMP.[Type] = @Type
							THEN SRL.Qty * - 1
						ELSE SRL.Qty
						END AS decQty
					,SRL.Unit
					,SRL.IsExpiryDate
					,SRL.ExpiryDate
					,SRL.SerialLotType
					,INV.strInvSerialType
				FROM tblWSWIP WIP
				INNER JOIN tblWSWIPCompDT COMP ON WIP.WIPDocID = COMP.WIPDocID
				INNER JOIN tblWSWIPCompSerial SRL ON COMP.WIPDocID = SRL.WIPDocID
					AND COMP.[LineNo] = SRL.[LineNo]
				INNER JOIN tblInv INV ON COMP.PartNumber = INV.strPartNumber
				WHERE WIP.JBDocID = @ManRevJobNumber
					AND COMP.PartNumber = @PartNumber
				) Z
			LEFT JOIN tblInvSerialExt EXT ON Z.PartNumber = EXT.strPartNumber
				AND Z.SerialNumber = EXT.strSerialNumber
			LEFT JOIN tblInvLocBin ON EXT.lngBinId = tblInvLocBin.lngId
			GROUP BY Z.SerialNumber
				,Z.IsExpiryDate
				,Z.ExpiryDate
				,EXT.strDimension
				,EXT.lngBinID
				,tblInvLocBin.strBinCode
			HAVING SUM(Z.decQty) > 0
			ORDER BY Z.SerialNumber
		END
		ELSE IF (
				@DAAccrualType = 0
				AND IsNull(@DADocID, '') != ''
				)
		BEGIN
			IF (@IsConvertingDA = 0)
			BEGIN
				SELECT Z.strSerialNumber AS SerialLotNumber
					,SUM(Z.decQty) AS Quantity
					,Z.bitExpiryDate AS IsExpiryDate
					,Z.dteExpiryDate AS ExpiryDate
					,ISNULL(EXT.strDimension, '') AS Dimensions
					,EXT.lngBinId AS BinID
					,tblInvLocBin.strBinCode AS Bin
				FROM (
					SELECT docDA.strOrdDADocID
						,DocDADT.strPartNumber
						,SRL.strSerialNumber
						,SRL.decQty
						,SRL.strUnit
						,SRL.bitExpiryDate
						,SRL.dteExpiryDate
						,SRL.intSerialLotType
						,INV.strInvSerialType
					FROM tblOrderDocDA docDA
					INNER JOIN tblOrderDocDADT DocDADT ON docDA.strOrdDADocID = DocDADT.strOrdDADocID
					INNER JOIN tblOrderDocDADTSerial SRL ON DocDADT.strOrdDADocID = SRL.strOrdDADocID
						AND DocDADT.intLineNo = SRL.intLineNo
					INNER JOIN tblInv INV ON DocDADT.strPartNumber = INV.strPartNumber
					WHERE docDA.strOrdDADocID = @DADocID
						AND DocDADT.strPartNumber = @PartNumber
						AND (
							SRL.lngBinId IN (
								SELECT Cast(Value AS BIGINT)
								FROM dbo.fnSplitStringAsTable(@BinIds, ',')
								)
							)
						AND SRL.strSerialNumber IN (
							SELECT tblInvoiceDocDTSerial.strSerialNumber
							FROM tblInvoiceDocDTSerial
							INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTSerial.strInvDocID = tblInvoiceDocDT.strInvDocID
							WHERE tblInvoiceDocDT.strOrdDADocID = @DADocID
								AND tblInvoiceDocDT.strInvDocID = @PkTkDocID
							)
					) Z
				LEFT JOIN tblInvSerialExt EXT ON Z.strPartNumber = EXT.strPartNumber
					AND Z.strSerialNumber = EXT.strSerialNumber
				LEFT JOIN tblInvLocBin ON EXT.lngBinId = tblInvLocBin.lngId
				WHERE (
						EXT.lngBinId IN (
							SELECT Cast(Value AS BIGINT)
							FROM dbo.fnSplitStringAsTable(@BinIds, ',')
							)
						)
				GROUP BY Z.strSerialNumber
					,Z.strUnit
					,Z.bitExpiryDate
					,Z.dteExpiryDate
					,EXT.strDimension
					,EXT.lngBinId
					,tblInvLocBin.strBinCode
				HAVING SUM(Z.decQty) > 0
				ORDER BY Z.strSerialNumber
			END
			ELSE
			BEGIN
				SELECT Z.strSerialNumber AS SerialLotNumber
					,SUM(Z.decQty) AS Quantity
					,Z.bitExpiryDate AS IsExpiryDate
					,Z.dteExpiryDate AS ExpiryDate
					,ISNULL(EXT.strDimension, '') AS Dimensions
					,EXT.lngBinId AS BinID
					,tblInvLocBin.strBinCode AS Bin
				FROM (
					SELECT docDA.strOrdDADocID
						,DocDADT.strPartNumber
						,SRL.strSerialNumber
						,SRL.decQty
						,SRL.strUnit
						,SRL.bitExpiryDate
						,SRL.dteExpiryDate
						,SRL.intSerialLotType
						,INV.strInvSerialType
					FROM tblOrderDocDA docDA
					INNER JOIN tblOrderDocDADT DocDADT ON docDA.strOrdDADocID = DocDADT.strOrdDADocID
					INNER JOIN tblOrderDocDADTSerial SRL ON DocDADT.strOrdDADocID = SRL.strOrdDADocID
						AND DocDADT.intLineNo = SRL.intLineNo
					INNER JOIN tblInv INV ON DocDADT.strPartNumber = INV.strPartNumber
					WHERE docDA.strOrdDADocID = @DADocID
						AND DocDADT.strPartNumber = @PartNumber
						AND (
							SRL.lngBinId IN (
								SELECT Cast(Value AS BIGINT)
								FROM dbo.fnSplitStringAsTable(@BinIds, ',')
								)
							)
						AND SRL.strSerialNumber NOT IN (
							SELECT tblInvoiceDocDTSerial.strSerialNumber
							FROM tblInvoiceDocDTSerial
							INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTSerial.strInvDocID = tblInvoiceDocDT.strInvDocID
							WHERE tblInvoiceDocDT.strOrdDADocID = @DADocID
							)
					) Z
				LEFT JOIN tblInvSerialExt EXT ON Z.strPartNumber = EXT.strPartNumber
					AND Z.strSerialNumber = EXT.strSerialNumber
				LEFT JOIN tblInvLocBin ON EXT.lngBinId = tblInvLocBin.lngId
				WHERE (
						EXT.lngBinId IN (
							SELECT Cast(Value AS BIGINT)
							FROM dbo.fnSplitStringAsTable(@BinIds, ',')
							)
						)
				GROUP BY Z.strSerialNumber
					,Z.strUnit
					,Z.bitExpiryDate
					,Z.dteExpiryDate
					,EXT.strDimension
					,EXT.lngBinId
					,tblInvLocBin.strBinCode
				HAVING SUM(Z.decQty) > 0
				ORDER BY Z.strSerialNumber
			END
		END
		ELSE
		BEGIN
			SELECT strSerialNumber AS SerialLotNumber
				,decQty AS Quantity
				,CAST(0 AS BIT) AS IsExpiryDate
				,dteUpdatedDate AS ExpiryDate
				,strDimension AS Dimensions
				,ISE.lngBinId AS BinID
				,strBinCode AS Bin
			FROM tblInvSerialExt ISE
			LEFT JOIN tblInvLocBin ON ISE.lngBinId = tblInvLocBin.lngId
			WHERE (
					strPartNumber = @PartNumber
					AND ISE.strLocName = @Location
					AND decQty > 0
					AND
					-- strSerialNumber LIKE @SearchText
					(
						ISE.lngBinId IN (
							SELECT Cast(Value AS BIGINT)
							FROM dbo.fnSplitStringAsTable(@BinIds, ',')
							)
						)
					AND (ISE.decQty > 0)
					AND (
						(
							@SearchText IS NULL
							OR @SearchText = ''
							)
						OR (ISE.strSerialNumber LIKE @SearchText)
						)
					)
			ORDER BY ISNULL(dteUpdatedDate, GETDATE())
				,strSerialNumber
		END
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetInventorySerialTypeData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetInventorySerialTypeData] ***********/
CREATE PROCEDURE [dbo].[GetInventorySerialTypeData] 
(
	@PickTicketDocId NVARCHAR(50)
)
AS
BEGIN
	SELECT tblInv.bitInvSerialType AS 'IsInventorySerialType',
		ISNULL(tblInvSerialTypes.bitMethod, 0) AS 'IsMethod',
		ISNULL(tblInvSerialTypes.intMin, 0) AS 'Minimum',
		ISNULL(tblInvSerialTypes.intMax, 0) AS 'Maximum',
		ISNULL(tblInvSerialTypes.intFormat, 0) AS 'Format',
		ISNULL(tblInvSerialTypes.intType, 0) AS 'Type',
		ISNULL(tblInvSerialTypes.bitTrackExpiryDate, 0) AS 'IsTrackExpiryDate',
		tblInv.strBuyUnit AS 'BuyUnit',
		ISNULL(tblInvSerialTypes.intExpiryDateAuthAD, 0) AS 'ExpiryDateAuthAD',
		ISNULL(tblInvSerialTypes.strInvSerialType, '') AS 'InventorySerialType',
		ISNULL(tblInvSerialTypes.strDimProCode, '') AS 'DimProCode'
	FROM tblInv
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblInv.strPartNumber = @PickTicketDocId
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventorySerialTypesCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------'
CREATE PROCEDURE [dbo].[GetInventorySerialTypesCount]
AS
BEGIN
	SELECT COUNT(strInvSerialType) AS InventorySerialTypesCount FROM tblInvSerialTypes
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventorySubCategory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/**************Start [GetInventorySubCategory]********************/

CREATE PROCEDURE [dbo].[GetInventorySubCategory]
(
	@Category NVARCHAR(40)
)
AS
BEGIN
	SELECT 
		strCategory 
	FROM 
		tblInvSubCat 
	WHERE 
		strParentCategory = @Category 
	ORDER BY strCategory
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventorySubCategoryGroup]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInventorySubCategoryGroup]
(
	@ParentCategory NVARCHAR(40),
	@ParentSubCategory NVARCHAR(40)
)
AS
BEGIN
	SELECT strCategory FROM tblInvGroupSubCat WHERE strParentCategory = @ParentCategory And strParentSubCategory = @ParentSubCategory ORDER BY strCategory
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryTransferDocByDocNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetInventoryTransferDocByDocNumber]    Script Date: 2019-09-03 15:20:12 ******/

CREATE PROCEDURE [dbo].[GetInventoryTransferDocByDocNumber] (@SQDocNumber NVARCHAR(100))
AS
BEGIN
	SET NOCOUNT ON;

	BEGIN
		SELECT strTrfDocID AS TransferDocID
			,lngJourID AS JournalID
			,dteJournalDate AS JournalDate
			,strFromLoc AS FromLocation
			,strToLoc AS ToLocation
			,strComment AS Comment
			,decTotal AS Total
			,intDept AS Department
			,ISNULL(dteRequiredDate, (
					SELECT GETDATE()
					)) AS RequiredDate
			,ISNULL(intAccount, '') AS Account
		FROM tblInvTrfDoc
		WHERE strTrfDocID = @SQDocNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryTransferDocDTByDocNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetInventoryTransferDocDTByDocNumber]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetInventoryTransferDocDTByDocNumber]
(
	@SQDocNumber nvarchar(100)
)
AS
BEGIN
SET NOCOUNT ON;
	BEGIN
		SELECT 
			  tblInvTrfDocDT.strPartNumber AS PartNumber, 
			  tblInv.strDesc AS [Description], 
			  tblInvTrfDocDT.decQty AS Qty, 
			  tblInvTrfDocDT.decUnitCost AS UnitCost, 
			  tblInvTrfDocDT.decAmount AS Amount, 
			  tblInv.bitInvSerialType AS IsSerialType, 
			  ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod, 
			  lngFromBinId AS FromBinId, 
			  lngToBinId AS ToBinId, 
			  FBin.strBinCode AS FromBin,
			  FBin.strBinCode AS FromBinCode,
			  TBin.strBinCode AS ToBin,
			  TBin.strBinCode AS ToBinCode,
			  FBin.decAvail AS BinAvailQty, 
			  TBin.decMaximumQty AS BinMaxQty, 
			  tblInvTrfDocDT.strStockUnit AS StockUnit, 
			  tblInvTrfDocDT.intLineNo AS LineNumber
		FROM 
			  tblInvTrfDocDT 
			  INNER JOIN tblInvTrfDoc ON tblInvTrfDocDT.strTrfDocID = tblInvTrfDoc.strTrfDocID 
			  INNER JOIN tblInv ON tblInvTrfDocDT.strPartNumber = tblInv.strPartNumber 
			  INNER JOIN (
				Select 
				  lngId, 
				  strBinCode, 
				  decAvail, 
				  decMaximumQty, 
				  strPartNumber 
				from 
				  tblInvLocBin as a 
				  INNER JOIN tblInvExtBin as b on a.lngId = b.lngBinId
			  ) as FBin ON FBin.lngId = lngFromBinId 
			  AND FBin.strPartNumber = tblInvTrfDocDT.strPartNumber 
			  INNER JOIN (
				Select 
				  lngId, 
				  strBinCode, 
				  decAvail, 
				  decMaximumQty, 
				  strPartNumber 
				from 
				  tblInvLocBin as a 
				  INNER JOIN tblInvExtBin as b on a.lngId = b.lngBinId
			  ) as TBin ON TBin.lngId = lngToBinId 
			  And TBin.strPartNumber = tblInvTrfDocDT.strPartNumber 
			  LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
		WHERE 
			 tblInvTrfDocDT.strTrfDocID = @SQDocNumber
		ORDER BY 
			 tblInvTrfDocDT.intLineNo
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryType]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateInvExtBin] ***********/

/*********** Start [GetInventoryType] ***********/
CREATE PROCEDURE [dbo].[GetInventoryType] 
( 
	@PartNumber VARCHAR(50),
	@LocationName VARCHAR(50) 
)
AS
BEGIN
		SELECT 
			intType as [Type],
			bitAutoBuild as AutoBuild
		FROM fnTblInvForLocJoin() tblInv
		LEFT JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
			AND tblInv.strLocName = tblInvExt.strLocName
		LEFT JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
		WHERE tblInv.strPartNumber = @PartNumber
			AND (
				tblInv.strLocName = @LocationName
				OR tblInv.strLocName IS NULL
				)
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryUpsellsData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [RecordProjectAllocationData] ***********/



/*********** Start [GetInventoryUpsellsData] ***********/
CREATE PROCEDURE [dbo].[GetInventoryUpsellsData] (
	@PartNumbers VARCHAR(MAX)
	,@CustomerName VARCHAR(50)
	,@DocDate DATE
	)
AS
BEGIN

	CREATE TABLE #Temp (
		id INT
		,[Value] NVARCHAR(50) collate SQL_Latin1_General_CP1_CI_AS
		)

	CREATE TABLE #Temp1 (
		strPartNumber NVARCHAR(50)
		,strPartItemNumber NVARCHAR(50)
		,strDesc NVARCHAR(100)
		,intQtyToUse SMALLMONEY
		,decSelling MONEY
		,bitUseProportionateQty BIT
		)

	DECLARE @LoopCounter INT = 1

	INSERT INTO #Temp (
		id
		,Value
		) (
		SELECT ROW_NUMBER() OVER (
			ORDER BY [Value] ASC
			) AS Row#
		,[Value] FROM [dbo].[fnSplitStringAsTable](@PartNumbers, '~')
		)

	WHILE (
			@LoopCounter <= (
				SELECT COUNT(value)
				FROM #Temp
				)
			)
	BEGIN
		INSERT INTO #Temp1 (
			strPartNumber
			,strPartItemNumber
			,strDesc
			,intQtyToUse
			,decSelling
			,bitUseProportionateQty
			) (
			SELECT tblInvUpsell.strPartNumber AS PartNumber
			,tblInvUpsell.strPartItemNumber AS PartItemNumber
			,tblInv.strDesc AS UpsellDescription
			,tblInvUpSell.intQtyToUse AS QtyToUse
			,tblInvPrice.decSelling AS Selling
			,tblInvUpsell.bitUseProportionateQty AS IsUseProportionateQty FROM tblInvUpsell LEFT JOIN tblInv ON tblInvUpsell.strPartItemNumber = tblInv.strPartNumber LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber LEFT OUTER JOIN tblPriceListsByDate ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
			AND tblInvPrice.strPricelist = tblPriceListsByDate.strPricelist WHERE (
				tblInvPrice.strPricelist IN (
					SELECT strPriceList
					FROM tblCustomers
					WHERE strCustName = @CustomerName
					)
				)
			AND (
				CAST(@DocDate AS DATE) BETWEEN tblPriceListsByDate.dteStartDate
					AND tblPriceListsByDate.dteFinishDate
				)
			AND (
				tblInvUpsell.strPartNumber = (
					SELECT [Value]
					FROM #temp
					WHERE id = @LoopCounter
					)
				)
			)
		ORDER BY strPartItemNumber

		SET @LoopCounter = @LoopCounter + 1
	END

	SELECT strPartNumber AS PartNumber
		,strPartItemNumber AS PartItemNumber
		,strDesc AS UpsellDescription
		,intQtyToUse AS QtyToUse
		,decSelling AS Selling
		,bitUseProportionateQty AS IsUseProportionateQty
	FROM #Temp1

	IF (OBJECT_ID('tempdb..#temp') IS NOT NULL)
	BEGIN
		DROP TABLE #Temp
	END

	IF (OBJECT_ID('tempdb..#temp1') IS NOT NULL)
	BEGIN
		DROP TABLE #Temp1
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryVendor]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInventoryVendor]
AS
BEGIN
	SELECT tblInvVend.strPartNumber AS PartNumber
		,tblInvVend.strVendName AS CustVendName
	FROM tblInvVend
	LEFT JOIN tblInv ON tblInvVend.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvEntriesContra]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetReversalEntryDA] ***********/

/*********** Start [GetInvEntriesContra] ***********/
CREATE PROCEDURE [dbo].[GetInvEntriesContra]
(
	@OrdDADocID nvarchar(100)
)
AS
BEGIN
	SELECT tblOrderDocDADT.strPartNumber AS PartNumber,
       tblOrderDocDADT.strLocation AS Location,
       tblOrderDocDADT.decStockQty As StockQty,
       tblOrderDocDADT.intLineNo As [LineNo],
       tblOrderDocDADT.decCOGS AS COGS
	FROM tblOrderDocDA
	INNER JOIN tblOrderDocDADT ON tblOrderDocDA.strOrdDADocID = tblOrderDocDADT.strOrdDADocID
	WHERE (tblOrderDocDA.strOrdDADocID = @OrdDADocID)
	ORDER BY tblOrderDocDADT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvEntriesFromOrderDocDADT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateClearedForDeliveryAdvice] ***********/

/*********** Start [GetInvEntriesFromOrderDocDADT] ***********/
CREATE PROCEDURE [dbo].[GetInvEntriesFromOrderDocDADT]
(
	@IsMultipleDA AS bit,
	@ExistingDANumber AS nvarchar(100)
)
AS
BEGIN
	IF @IsMultipleDA = 0
	BEGIN
		SELECT tblOrderDocDADT.strPartNumber AS PartNumber,
		   tblOrderDocDADT.strLocation AS Location,
		   tblOrderDocDADT.decStockQty AS StockQty,
		   tblOrderDocDADT.decPriceEaExc AS PriceEaExc,
		   tblOrderDocDADT.decLineTotExc AS LineTotExc,
		   tblOrderDocDADT.intType AS [Type]
		FROM tblOrderDocDA
		INNER JOIN tblOrderDocDADT ON tblOrderDocDA.strOrdDADocID = tblOrderDocDADT.strOrdDADocID
		WHERE (tblOrderDocDA.strOrdDADocID = @ExistingDANumber)
		ORDER BY tblOrderDocDADT.intLineNo
	END
	ELSE
	BEGIN
		SELECT tblOrderDocDADT.strPartNumber AS PartNumber,
			tblOrderDocDADT.strLocation AS Location,
			tblOrderDocDADT.decStockQty AS StockQty,
			tblOrderDocDADT.decPriceEaExc AS PriceEaExc,
			tblOrderDocDADT.decLineTotExc AS LineTotExc,
			tblOrderDocDADT.intType AS [Type]
		FROM tblOrderDocDA
		INNER JOIN tblOrderDocDADT ON tblOrderDocDA.strOrdDADocID = tblOrderDocDADT.strOrdDADocID
		WHERE (tblOrderDocDA.strOrdDADocID IN ('' + @ExistingDANumber + ''))
		ORDER BY tblOrderDocDADT.strOrdDADocID,
		    tblOrderDocDADT.intLineNo
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvExtBinData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInventoryType] ***********/

/*********** Start [GetInvExtBinData] ***********/
CREATE PROCEDURE [dbo].[GetInvExtBinData] 
( 
	@PartNumber NVARCHAR(50),
	@Location NVARCHAR(80), 
	@BinId NVARCHAR(50)
)
AS
BEGIN
		SELECT 
			ISNULL(tblInvExtBin.decOnHand, 0) as OnHand
		FROM tblInvExtBin
		WHERE 
			(tblInvExtBin.strPartNumber = @PartNumber)
			AND (tblInvExtBin.strLocName = @Location)
			AND (tblInvExtBin.lngBinID = @BinId)
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvImageById]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetInvImageById]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetInvImageById]
	@ImageID DateTime = null
AS
BEGIN
	SET NOCOUNT ON;
	Select Image_ID AS ImageID,strPartNumber AS PartNumber,imgData AS ImageData,CAST(bitDefaultImage AS BIT) AS IsDefaultImage FROM tblInvImg Where image_id = @ImageID
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvInformation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInvInformation] (
	@PartNumber NVARCHAR(50)
	,@PriceList NVARCHAR(20)
	,@BarCode NVARCHAR(100)
	,@DocDate DATETIME
	,@Unit NVARCHAR(50)
	)
AS
BEGIN
	SELECT tblInvPrice.decSelling AS Selling
		,tblInv.decSumAvail AS SumAvailable
		,ISNULL(tblPricelists.bitShowZeroSellingPrice, 0) AS ShowZeroSellingPrice
		,ISNULL(tblInvPrice.bitPromotionalPricing, 0) AS IsPromotionalPrice
		,ISNULL(tblInvPrice.decPromotionalPrice, 0) AS PromotionalPrice
		,(
			CASE 
				WHEN ISNULL(CONVERT(VARCHAR(50), tblInvPrice.dtePromotionalStartDate, 103), '') != ''
					THEN tblInvPrice.dtePromotionalStartDate
				ELSE CONVERT(VARCHAR(50), tblInvPrice.dtePromotionalStartDate, 103)
				END
			) AS PromotionalStartDate
		,(
			CASE 
				WHEN ISNULL(CONVERT(VARCHAR(50), tblInvPrice.dtePromotionalEndDate, 103), '') != ''
					THEN tblInvPrice.dtePromotionalEndDate
				ELSE CONVERT(VARCHAR(50), tblInvPrice.dtePromotionalEndDate, 103)
				END
			) AS PromotionalEndDate
	FROM tblInv
	LEFT OUTER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
	LEFT OUTER JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist
	LEFT OUTER JOIN tblPriceListsByDate ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
	WHERE (
			tblInv.strPartNumber = @PartNumber
			OR tblInv.strBarCode = @BarCode
			OR tblInv.strBarCode2 = @BarCode
			)
		AND (
			tblInvPrice.strPricelist = @PriceList
			OR tblInvPrice.strPricelist IS NULL
			)
		AND tblInv.bitInactive = 0
		AND (tblInvPrice.strUnit = @Unit)
		AND tblInv.bitOtherCmp = 0 
		AND CAST(@DocDate AS DATE) >= CASt(tblPriceListsByDate.dteStartDate AS DATE)
		AND CAST(@DocDate AS DATE) <= CASt(tblPriceListsByDate.dteFinishDate AS DATE)
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvJournalCodeBuilderData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetJournalCodeData] ***********/

/*********** Start [GetInvJournalCodeBuilderData] ***********/
CREATE PROCEDURE [dbo].[GetInvJournalCodeBuilderData]
AS
BEGIN
	SELECT intGLNumber AS GLNumber, strDesc AS [Description]
	FROM tblAccounts
	WHERE intGLNumber IN (
			SELECT intGLNumber
			FROM tblAccounts
			WHERE (
					bitIsLinkedAccount = 0
					OR bitLinkSalesDisc = 1
					OR bitLinkPurDisc = 1
					OR bitLinkAssCosts = 1
					OR bitLinkAdjWriteOff = 1
					OR bitLinkExc = 1
					OR bitDefBank = 1
					)
				AND (
					intGLNumber NOT IN (
						SELECT intGLAsset
						FROM tblAccountSets  
						WHERE blnService = 0 AND blnBuyout = 0
						)
					AND (
						intGLNumber NOT IN (
							SELECT intPurchAcct
							FROM tblTaxDef
							)
						)
					AND (
						intGLNumber NOT IN (
							SELECT intSalesAcct
							FROM tblTaxDef
							)
						)
					AND (bitInactive = 0)
					AND (
						intGroupCode = 1
						OR intGroupCode = 2
						)
					)
			)
		AND intGLNumber NOT IN (
			SELECT intExpAcct
			FROM tblInv
			)
	ORDER BY intGLNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvLocationBinInformation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetInvLocationBinInformation]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetInvLocationBinInformation] 
( 
	@SQPartNumber VARCHAR(50)
)
AS
    BEGIN
        SELECT tblInvExtBin.strLocName, tblInvLocBin.strBinCode, tblInvExtBin.decAvail, tblInvExtBin.decMaximumQty 
		FROM tblInvExtBin INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId WHERE strPartNumber = @SQPartNumber
	END
GO
/****** Object:  StoredProcedure [dbo].[GetInvLocationDataForNonExistingItem]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetInvLocationDataForNonExistingItem]    Script Date: 07-11-2019 10:38:47 ******/
CREATE PROCEDURE [dbo].[GetInvLocationDataForNonExistingItem]
AS  
BEGIN
	select strLocName AS Location,strDesc AS Description,bitDefault as IsDefaultLocation from tblInvLoc where intType=0  
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvLocationInformation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInvLocationInformation] 
( 
	@SQPartNumber VARCHAR(50),
	@SQJobOpen int,
	@SQJobWIP int,
	@SQUserName VARCHAR(50)
)
AS
    BEGIN
        SELECT tblInvExt.strLocName, tblInvLoc.intType, tblInvExt.strAcctSet, tblInvExt.strBinLoc, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decOnOrder, tblInvExt.decValue, 
			tblInvLoc.strDesc, ISNULL((SELECT COUNT(tblInvLocSec.strLocName) FROM tblInvLocSec WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName), 0) AS [intAccess], 
			ISNULL(tblInvLocSec.strUserName, '') AS [strUserName], 
			ISNULL((SELECT SUM(tblManJobByProd.decManQty) FROM tblManJobByProd LEFT JOIN tblManJob ON  tblManJobByProd.strJBDocID =  tblManJob.strJBDocID  
					WHERE tblManJobByProd.strPartNumber = tblInvExt.strPartNumber AND tblManJobByProd.strLocation = tblInvExt.strLocName 
					AND (tblManJob.intType = @SQJobOpen OR tblManJob.intType = @SQJobWIP)),0) AS decManufacture, 
			tblInvExt.bitInactive, tblInvExt.bitDefault,
			tblInv.strCategory AS Category,
			tblInv.strSubCategory AS SubCategory,
			tblinv.strSubCategoryGroup AS SubCategoryGroup
		FROM tblInv 
			INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber 
			INNER JOIN tblInvLoc ON tblInvExt.strLocName = tblInvLoc.strLocName
			LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName AND tblInvLocSec.strUserName = @SQUserName 
		WHERE tblInvExt.strPartNumber = @SQPartNumber
	END
GO
/****** Object:  StoredProcedure [dbo].[GetInvLocationPickerData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInvLocationPickerData]
(	@IsServiceExpense AS BIT,
	@PartNumber AS VARCHAR(50),
	@IsWarehousesOnly AS BIT,
	@UserName AS VARCHAR(50),
	@AllowInactive AS BIT = NULL
)
AS
BEGIN
	IF(@IsServiceExpense = 1)
		SELECT tblInvLoc.strLocName AS Location
			,tblInvLoc.intType AS LocationType
			,ISNULL((
					SELECT COUNT(tblInvLocSec.strLocName)
					FROM tblInvLocSec (NOLOCK)
					WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName
					), 0) AS LocationCount
			,ISNULL(tblInvLocSec.strUserName, '') AS Username
			,tblInvLoc.bitDefault AS IsDefaultLocation
		FROM tblInvLoc (NOLOCK)
		LEFT JOIN tblInvLocSec (NOLOCK) ON tblInvLoc.strLocName = tblInvLocSec.strLocName
			AND tblInvLocSec.strUserName = @UserName
		WHERE (
				@IsWarehousesOnly = 0
				AND tblInvLoc.intType = 0
				)
		ORDER BY tblInvLoc.strLocName
	ELSE
		SELECT tblInvExt.strLocName AS Location
			,tblInvExt.decAvail AS Available
			,tblInvExt.decOnHand AS OnHand
			,tblInvLoc.intType AS LocationType
			,ISNULL((
					SELECT COUNT(tblInvLocSec.strLocName)
					FROM tblInvLocSec (NOLOCK)
					WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName
					), 0) AS LocationCount
			,ISNULL(tblInvLocSec.strUserName, '') AS Username
			,tblInvExt.decAlloc AS SalesOrder
			,tblInvExt.decOnOrder AS Purchase
			,tblInvExt.decManuf AS Manuf
			,(
				SELECT SUM(QTY)
				FROM (
					SELECT (ISNULL(SUM(DT.decQtyRemaining), 0) * - 1) AS QTY
					FROM tblInvTrfOrdDoc (NOLOCK) DOC
					INNER JOIN tblInvTrfOrdDocDT (NOLOCK) DT ON DOC.strInvTrfOrdDocID = DT.strInvTrfOrdDocID
					WHERE DOC.bitCleared = 0
						AND DOC.strLocName = tblInvLoc.strLocName
						AND DT.strPartNumber = @PartNumber
					
					UNION ALL
					
					SELECT ISNULL(SUM(DT.decQtyRemaining), 0) AS QTY
					FROM tblInvTrfOrdDoc (NOLOCK) DOC
					INNER JOIN tblInvTrfOrdDocDT (NOLOCK) DT ON DOC.strInvTrfOrdDocID = DT.strInvTrfOrdDocID
					WHERE DOC.bitCleared = 0
						AND DOC.strToLocName = tblInvLoc.strLocName
						AND DT.strPartNumber = @PartNumber
					) AS Result1
				) AS TransferOrder
			,(
				SELECT SUM(QTY)
				FROM (
					SELECT (ISNULL(SUM(DT.decQty), 0) * - 1) AS QTY
					FROM tblInvTrfDoc (NOLOCK) DOC
					INNER JOIN tblInvTrfDocDT (NOLOCK) DT ON DOC.strTrfDocID = DT.strTrfDocID
					WHERE bitWarehouseTrf = 1
						AND bitCleared = 0
						AND strFromLoc = tblInvLoc.strLocName
						AND DT.strPartNumber = @PartNumber
					
					UNION ALL
					
					SELECT ISNULL(SUM(DT.decQty), 0) AS QTY
					FROM tblInvTrfDoc (NOLOCK) DOC
					INNER JOIN tblInvTrfDocDT (NOLOCK) DT ON DOC.strTrfDocID = DT.strTrfDocID
					WHERE bitWarehouseTrf = 1
						AND bitCleared = 0
						AND strToLoc = tblInvLoc.strLocName
						AND DT.strPartNumber = @PartNumber
					) AS Result2
				) AS GoodsInTransit
			,tblInvLoc.bitDefault AS IsDefaultLocation
		FROM tblInvExt (NOLOCK)
		INNER JOIN tblInvLoc (NOLOCK) ON tblInvExt.strLocName = tblInvLoc.strLocName
		LEFT JOIN tblInvLocSec (NOLOCK) ON tblInvLoc.strLocName = tblInvLocSec.strLocName
		AND tblInvLocSec.strUserName = @UserName
		WHERE tblInvExt.strPartNumber = @PartNumber
			AND (
				@IsWarehousesOnly = 0
				AND tblInvLoc.intType = 0
				)
			AND (tblInvExt.bitInactive = 0)
		ORDER BY tblInvExt.strLocName
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvLocBinCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetSerialNumerData] ***********/

/*********** Start [GetInvLocBinCount] ***********/
CREATE PROCEDURE [dbo].[GetInvLocBinCount]
(
	@LocName AS NVARCHAR(10),
	@BinCode AS NVARCHAR(50)
)
AS
BEGIN	
	SELECT COUNT(strBinCode)
	FROM tblInvLocBin
	WHERE strLocName = @LocName
		AND strBinCode = @BinCode
END

GO
/****** Object:  StoredProcedure [dbo].[GetInvLocBinId]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvLocBinCount] ***********/

/*********** Start [GetInvLocBinId] ***********/
CREATE PROCEDURE [dbo].[GetInvLocBinId]
(
	@LocName AS NVARCHAR(10),
	@BinCode AS NVARCHAR(50)
)
AS
BEGIN	
	SELECT lngId AS 'Id' FROM tblInvLocBin WHERE strLocName = @LocName AND strBinCode=@BinCode
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvLocBinSecData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/******************* End [LabelDocsSetAdd] ********************/

/******************* Start [GetInvLocBinSecData] ********************/


-----------------------------------------------------

CREATE PROCEDURE [dbo].[GetInvLocBinSecData]
AS
BEGIN
 SELECT [strLocName] AS LocationName
    ,[strUserName] AS UserName
	,[strBinCode] AS BinCode 
   FROM [dbo].[tblInvLocBinSec]
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvLocSecData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetSalesOrderAsLayByCount] ***********/


/*********** Start [GetInvLocSecData] ***********/
CREATE PROCEDURE [dbo].[GetInvLocSecData]
AS
BEGIN
 SELECT [strLocName] AS LocationName
    ,[strUserName] AS UserName
   FROM [dbo].[tblInvLocSec]
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvLotExt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetInvLotExt]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetInvLotExt] (@PartNumber NVARCHAR(50))
AS
BEGIN
	SELECT strLocName AS LocationName
		,strLotNumber AS LotNumber
		,SUM(decQty) AS Quantity
		,'' AS Dimension
	FROM tblInvLotExt
	WHERE (strPartNumber = @PartNumber)
	GROUP BY strLotNumber
		,strLocName
	HAVING SUM(decQty) > 0
	
	UNION ALL
	
	SELECT strLocName AS LocationName
		,strSerialNumber AS LotNumber
		,decQty AS Quantity
		,strDimension AS Dimension
	FROM tblInvSerialExt
	WHERE (strPartNumber = @PartNumber)
		AND (decQty > 0)
	ORDER BY strLocName
		,LotNumber
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvoiceDocData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetInvoiceDocData]
(
	@StartDate AS DATETIME,
	@EndDate AS DATETIME,
	@FilterDateFieldName AS NVARCHAR(50)
)
AS
BEGIN
 
 	DECLARE @QueryCommand AS NVARCHAR(MAX)		
	DECLARE @ParameterDefinition AS NVARCHAR(MAX) 	

	SET @QueryCommand = 'SELECT tblInvoiceDoc.strInvDocID AS InvDocID, tblInvoiceDoc.lngJourID AS JourID, tblInvoiceDoc.dteSystemDate AS SystemDate, tblInvoiceDoc.dteJournalDate AS JournalDate, tblInvoiceDoc.dteRequired AS Required, tblInvoiceDoc.strUserName AS UserName, tblInvoiceDoc.strCustName AS Account, (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblInvoiceDoc.strCustName) AS CustName, tblInvoiceDoc.strSoldTo AS SoldTo, tblInvoiceDoc.strShipTo AS ShipTo, tblInvoiceDoc.strReference AS Reference, tblInvoiceDoc.decSubTotal AS SubTotal, tblInvoiceDoc.decVAT AS VAT, tblInvoiceDoc.decTotal AS Total, tblInvoiceDoc.strSalesName AS SalesName, tblInvoiceDoc.strAddInfo AS AddInfo, tblInvoiceDoc.strCurrency AS Currency, tblInvoiceDoc.bitIsForeign AS IsForeign, tblInvoiceDoc.decSubTotalF AS SubTotalF, tblInvoiceDoc.decVATF AS VATF, tblInvoiceDoc.decTotalF AS TotalF, tblInvoiceDoc.decExchange AS Exchange, tblInvoiceDoc.decDiscPerc AS DiscPerc, tblInvoiceDoc.decDiscAmt AS DiscAmt, tblInvoiceDoc.decDiscAmtF AS DiscAmtF, tblInvoiceDoc.strTerm AS Term, tblInvoiceDoc.intDept AS Dept, tblInvoiceDoc.strField1 AS Field1, tblInvoiceDoc.strField2 AS Field2, tblInvoiceDoc.strField3 AS Field3, tblInvoiceDoc.strField4 AS Field4, tblInvoiceDoc.strField5 AS Field5, tblInvoiceDoc.strField6 AS Field6, tblInvoiceDoc.strField7 AS Field7, tblInvoiceDoc.strField8 AS Field8, tblInvoiceDoc.strField9 AS Field9, tblInvoiceDoc.strField10 AS Field10, tblInvoiceDoc.strField11 AS Field11, tblInvoiceDoc.strField12 AS Field12, tblInvoiceDoc.dteField13 AS Field13, tblInvoiceDoc.dteField14 AS Field14, tblInvoiceDoc.decTotalWeight AS TotalWeight, tblInvoiceDoc.decTotalVolWeight AS TotalVolWeight, tblInvoiceDocDT.intLineNo AS LineNumber, tblInvoiceDocDT.strPartNumber AS PartNumber, tblInvoiceDocDT.strLocation AS Location, tblInvoiceDocDT.strPartDesc AS PartDescription, tblInvoiceDocDT.decQty AS Qty, tblInvoiceDocDT.strUnit AS Unit, tblInvoiceDocDT.decPriceEaExc AS PriceEaExc, tblInvoiceDocDT.decLineTotExc AS LineTotExc, tblInvoiceDocDT.decLineTaxAmt AS LineTaxAmt, tblInvoiceDocDT.decPriceEaInc AS PriceEaInc, tblInvoiceDocDT.decLineTotInc AS LineTotInc, ISNULL((SELECT decCOGS FROM tblInvTrackingDT WHERE lngID = (SELECT MAX(lngID) FROM tblInvTrackingDT WHERE lngInvTrackID = tblInvoiceDoc.lngInvTrackID AND intLineNo = tblInvoiceDocDT.intLineNo)),0) AS TotalCost, tblInvoiceDocDT.strTaxCode AS TaxCode, tblInvoiceDocDT.decPriceEaExcF AS PriceEaExcF, tblInvoiceDocDT.decLineTotExcF AS LineTotExcF, tblInvoiceDocDT.decLineTaxAmtF AS LineTaxAmtF, tblInvoiceDocDT.decEaIncTaxF AS EaIncTaxF, tblInvoiceDocDT.decTotIncTaxF AS TotIncTaxF, tblInvoiceDocDT.bitDiscountTax AS IsDiscountTax, tblInvoiceDocDT.decLineDiscPerc AS LineDiscPerc, tblInvoiceDocDT.decLineDiscAmt AS LineDiscAmt, tblInvoiceDocDT.decLineDiscAmtF AS LineDiscAmtF, tblInvoiceDocDT.strInvField1 AS InventoryField1, tblInvoiceDocDT.strInvField2 AS InventoryField2, tblInvoiceDocDT.strInvField3 AS InventoryField3, tblInvoiceDocDT.strInvField4 AS InventoryField4, tblInvoiceDocDT.strInvField5 AS InventoryField5, tblInvoiceDocDT.strInvField6 AS InventoryField6, tblInvoiceDocDT.strLineField1 AS LineField1, tblInvoiceDocDT.strLineField2 As LineField2, tblInvoiceDocDT.strLineField3 As LineField3, tblInvoiceDocDT.strLineField4 As LineField4, tblInvoiceDocDT.strLineField5 As LineField5, tblInvoiceDocDT.strLineField6 As LineField6, tblInvoiceDocDT.strLineField7 As LineField7, tblInvoiceDocDT.strLineField8 As LineField8, tblInvoiceDocDT.strLineField9 As LineField9, tblInvoiceDocDT.strLineField10 As LineField10, tblInvoiceDocDT.strLineField11 As LineField11, tblInvoiceDocDT.strLineField12 As LineField12, tblInvoiceDocDT.strPartExtendedDesc AS PartExtendedDesc, tblInvoiceDocDT.decItemWeight AS ItemWeight, tblInvoiceDocDT.decVolumetricWeight AS VolumetricWeight FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID'

	SET @QueryCommand = CONCAT(@QueryCommand, ' WHERE (tblInvoiceDoc.bitHistoryTrans = 0) AND (tblInvoiceDoc.bitReserved = 0) AND (', @FilterDateFieldName, ' BETWEEN @StartDate AND @EndDate) ORDER BY tblInvoiceDoc.strInvDocID')
		
	Set @ParameterDefinition =' @StartDate AS DATETIME,	@EndDate AS DATETIME'
								
	EXECUTE sp_executesql @QueryCommand, @ParameterDefinition, @StartDate, @EndDate

END
GO
/****** Object:  StoredProcedure [dbo].[GetInvoiceDocDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInvoiceDocDT] (
	@DocNumber AS NVARCHAR(50)
	,@GPCalcInvLevel AS INT
	,@GPCalcLPP AS INT
	,@IsInvoiceCredit AS BIT
	,@DefaultInvLocation AS NVARCHAR(5)
	)
AS
BEGIN
	DECLARE @IsWorkshop AS BIT

	SET @IsWorkshop = 0

	IF EXISTS (
			SELECT 1
			FROM tblWSInvoiceDoc
			WHERE strInvDocID = @DocNumber
			)
	BEGIN
		SET @IsWorkshop = 1
	END

	IF (@IsWorkshop = 0)
	BEGIN
		SELECT tblInvoiceDocDT.[strInvDocID] AS InvDocID
			,tblInvoiceDocDT.[intLineNo] AS [LineNo]
			,tblInvoiceDocDT.[strPartNumber] AS PartNumber
			,[strLocation] AS Location
			,[strPartDesc] AS PartDesc
			,[decQty] AS Qty
			,[strUnit] AS Unit
			,tblInvoiceDocDT.[intType] AS [Type]
			,[decPriceEaExc] AS PriceEaExc
			,[decLineTotExc] AS LineTotExc
			,[decLineTaxAmt] AS LineTaxAmt
			,[decPriceEaInc] AS PriceEaInc
			,[decLineTotInc] AS LineTotInc
			,[strTaxCode] AS TaxCode
			,[imgTaxObj] AS TaxObj
			,[strCurrency] AS Currency
			,[bitIsForeign] AS IsForeign
			,[decPriceEaExcF] AS PriceEaExcF
			,[decLineTotExcF] AS LineTotExcF
			,[decLineTaxAmtF] AS LineTaxAmtF
			,[decEaIncTaxF] AS EaIncTaxF
			,[decTotIncTaxF] AS TotIncTaxF
			,[strInvField1] AS InvField1
			,[strInvField2] AS InvField2
			,[strInvField3] AS InvField3
			,[strInvField4] AS InvField4
			,[strInvField5] AS InvField5
			,[strInvField6] AS InvField6
			,[strLineField1] AS LineField1
			,[strLineField2] AS LineField2
			,[strLineField3] AS LineField3
			,[strLineField4] AS LineField4
			,[strLineField5] AS LineField5
			,[strLineField6] AS LineField6
			,[strLineField7] AS LineField7
			,[strLineField8] AS LineField8
			,[strLineField9] AS LineField9
			,[strLineField10] AS LineField10
			,[strLineField11] AS LineField11
			,[strLineField12] AS LineField12
			,[decLineDiscPerc] AS LineDiscPerc
			,[decLineDiscAmt] AS LineDiscAmt
			,[decLineDiscAmtF] AS LineDiscAmtF
			,[bitDiscountTax] AS DiscountTax
			,[decStockQty] AS StockQty
			,tblInvoiceDocDT.[strStockUnit] AS StockUnit
			,tblInvoiceDocDT.[decStandardCost] AS StandardCost
			,tblInvoiceDocDT.[decLastPPUnit] AS LastPPUnit
			,[strSalesName] AS SalesName
			,[decCOGS] AS COGS
			,[decSOQty] AS SOQty
			,[decSOQtyRemain] AS SOQtyRemain
			,[strPartExtendedDesc] AS PartExtendedDesc
			,[decItemWeight] AS ItemWeight
			,tblInvoiceDocDT.[decVolumetricWeight] AS VolumetricWeight
			,[bitContainerItem] AS ContainerItem
			,[bitDelCost] AS DelCost
			,[intBillingMethod] AS BillingMethod
			,[uidTransactionFieldID] AS TransactionFieldGUID
			,[uidContainerItem] AS ContainerItemGUID
			,ISNULL(tblInvoiceDocDTPrj.strProjNumber, '') AS ProjNumber
			,tblInv.bitInvSerialType AS IsInvSerialType
			,CASE 
				WHEN tblInv.intType = 4
					THEN tblInv.decStandardCost
				ELSE CASE @GPCalcLPP
						WHEN 0
							THEN tblInv.decLastPPUnit
						WHEN 1
							THEN tblInv.decStandardCost
						WHEN 2
							THEN CASE @GPCalcInvLevel
									WHEN 0
										THEN CASE 
												WHEN tblInv.decLastPPUnit > ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblInvoiceDocDT.strLocation
															), 0)
													THEN tblInv.decLastPPUnit
												ELSE CASE 
														WHEN tblInv.decLastPPUnit < ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblInvoiceDocDT.strLocation
																	), 0)
															THEN ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt EXT
																		WHERE EXT.strPartNumber = tblInv.strPartNumber
																			AND EXT.strLocName = tblInvoiceDocDT.strLocation
																		), 0)
														ELSE CASE 
																WHEN ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = tblInvoiceDocDT.strLocation
																			), 0) = 0
																	THEN tblInv.decLastPPUnit
																ELSE ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = tblInvoiceDocDT.strLocation
																			), 0)
																END
														END
												END
									WHEN 1
										THEN CASE 
												WHEN tblInv.decLastPPUnit > ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN tblInv.decLastPPUnit
												ELSE CASE 
														WHEN tblInv.decLastPPUnit < ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
															THEN ISNULL((
																		CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END
																		), 0)
														ELSE CASE 
																WHEN CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END = 0
																	THEN tblInv.decLastPPUnit
																ELSE ISNULL((
																			CASE tblInv.decSumOnHand
																				WHEN 0
																					THEN 0
																				ELSE tblInv.decSumValue / tblInv.decSumOnHand
																				END
																			), 0)
																END
														END
												END
									ELSE tblInv.decLastPPUnit
									END
						WHEN 3
							THEN CASE @GPCalcInvLevel
									WHEN 0
										THEN CASE 
												WHEN ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblInvoiceDocDT.strLocation
															), 0) = 0
													THEN tblInv.decLastPPUnit
												ELSE ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblInvoiceDocDT.strLocation
															), 0)
												END
									WHEN 1
										THEN CASE 
												WHEN CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END = 0
													THEN tblInv.decLastPPUnit
												ELSE ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
												END
									ELSE tblInv.decLastPPUnit
									END
						ELSE tblInv.decLastPPUnit
						END
				END AS GPCalc
			,tblInv.strDimProCode AS DimProCode
			,tblInv.strUnitOfMeasure AS UnitOfMeasure
			,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist
			,tblInv.bitAutoBuild AS IsAutoBuild
			,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT SUM(INV.decLastPPUnit)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							WHERE BOM.strPartNumber = tblInv.strPartNumber
							), 0)
				END AS AutoBuildLRC
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT SUM(INV.decStandardCost)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							WHERE BOM.strPartNumber = tblInv.strPartNumber
							), 0)
				END AS AutoBuildSC
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT ISNULL(SUM(CASE EXT.decOnHand
											WHEN 0
												THEN 0
											ELSE EXT.decValue / EXT.decOnHand
											END), 0)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
							WHERE BOM.strPartNumber = tblInv.strPartNumber
								AND EXT.strLocName = @DefaultInvLocation
							), 0)
				END AS AutoBuildMALocDef
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT ISNULL(SUM(CASE EXT.decOnHand
											WHEN 0
												THEN 0
											ELSE EXT.decValue / EXT.decOnHand
											END), 0)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
								AND BOM.strLocName = EXT.strLocName
							WHERE BOM.strPartNumber = tblInv.strPartNumber
							), 0)
				END AS AutoBuildMALocation
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT ISNULL(SUM(CASE INV.decSumOnHand
											WHEN 0
												THEN 0
											ELSE INV.decSumValue / INV.decSumOnHand
											END), 0)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							WHERE BOM.strPartNumber = tblInv.strPartNumber
							), 0)
				END AS AutoBuildMAMain
			,ISNULL(STUFF((
						SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(max))
						FROM tblInvLocBin
						WHERE tblInvLocBin.lngId IN (
								SELECT lngBinId
								FROM tblInvoiceDocDTBin
								WHERE tblInvoiceDocDTBin.strInvDocID = tblInvoiceDocDT.strInvDocID
									AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTBin.intLineNo
								)
						FOR XML PATH('')
						), 1, 1, ''), '') AS BinCode
			,ISNULL(STUFF((
						SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(max))
						FROM tblInvLocBin
						WHERE tblInvLocBin.lngId IN (
								SELECT lngBinId
								FROM tblInvoiceDocDTBin
								WHERE tblInvoiceDocDTBin.strInvDocID = tblInvoiceDocDT.strInvDocID
									AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTBin.intLineNo
								)
						FOR XML PATH('')
						), 1, 1, ''), '') AS BinID
			,ISNULL(STUFF((
						SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(max))
						FROM tblInvLocBin
						WHERE tblInvLocBin.lngId IN (
								SELECT lngBinId
								FROM tblInvoiceDocDTBin
								WHERE tblInvoiceDocDTBin.strInvDocID = tblInvoiceDocDT.strInvDocID
									AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTBin.intLineNo
								)
						FOR XML PATH('')
						), 1, 1, ''), '') AS BinId
			,strOrdDADocID AS OrdDADocID
			,intDALineNo AS DALineNo
			,bitFromGRV AS IsFromGRV
			,strGRVDocNum AS GRVDocNum
			,intGRVLineNo AS GRVLineNo
			,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
			,strOrigDocID AS OrigDocID
			,blnIsCashPrice AS IsCashPrice
			,(
				CASE 
					WHEN tblInvoiceDocDT.strOrigDocID LIKE 'CR%'
						THEN (
								SELECT strOrigDocID
								FROM tblOrderDocDT
								WHERE strOrdDocID = tblInvoiceDocDT.strOrigDocID
									AND strPartNumber = tblInvoiceDocDT.strPartNumber
									AND intLineNo = tblInvoiceDocDT.intLineNo
								)
					ELSE tblInvoiceDocDT.strOrigDocID
					END
				) AS InvDocIDToCheckIsFroInvoice
		FROM tblInvoiceDocDT
		INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
			AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
		LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
		WHERE tblInvoiceDocDT.strInvDocID = @DocNumber  AND (@IsInvoiceCredit = 0 OR (@IsInvoiceCredit = 1 and tblInvoiceDocDT.bitDelCost = 1))
		ORDER BY tblInvoiceDocDT.intLineNo
	END
	ELSE
	BEGIN
		SELECT tblInvoiceDocDT.[strInvDocID] AS InvDocID
			,tblInvoiceDocDT.[intLineNo] AS [LineNo]
			,tblInvoiceDocDT.[strPartNumber] AS PartNumber
			,[strLocation] AS Location
			,[strPartDesc] AS PartDesc
			,[decUsedQty] AS Qty 
			,[strUnit] AS Unit
			,tblInvoiceDocDT.[intType] AS [Type]
			,[decPriceEaExc] AS PriceEaExc
			,[decLineTotExc] AS LineTotExc
			,[decLineTaxAmt] AS LineTaxAmt
			,[decPriceEaInc] AS PriceEaInc
			,[decLineTotInc] AS LineTotInc
			,[strTaxCode] AS TaxCode
			,[imgTaxObj] AS TaxObj
			,[strCurrency] AS Currency
			,[bitIsForeign] AS IsForeign
			,[decPriceEaExcF] AS PriceEaExcF
			,[decLineTotExcF] AS LineTotExcF
			,[decLineTaxAmtF] AS LineTaxAmtF
			,[decEaIncTaxF] AS EaIncTaxF
			,[decTotIncTaxF] AS TotIncTaxF
			,[strInvField1] AS InvField1
			,[strInvField2] AS InvField2
			,[strInvField3] AS InvField3
			,[strInvField4] AS InvField4
			,[strInvField5] AS InvField5
			,[strInvField6] AS InvField6
			,[strLineField1] AS LineField1
			,[strLineField2] AS LineField2
			,[strLineField3] AS LineField3
			,[strLineField4] AS LineField4
			,[strLineField5] AS LineField5
			,[strLineField6] AS LineField6
			,[strLineField7] AS LineField7
			,[strLineField8] AS LineField8
			,[strLineField9] AS LineField9
			,[strLineField10] AS LineField10
			,[strLineField11] AS LineField11
			,[strLineField12] AS LineField12
			,[decLineDiscPerc] AS LineDiscPerc
			,[decLineDiscAmt] AS LineDiscAmt
			,[decLineDiscAmtF] AS LineDiscAmtF
			,[bitDiscountTax] AS DiscountTax
			,[decStockQty] AS StockQty
			,tblInvoiceDocDT.[strStockUnit] AS StockUnit
			,tblInvoiceDocDT.[decStandardCost] AS StandardCost
			,tblInvoiceDocDT.[decLastPPUnit] AS LastPPUnit
			,[strSalesName] AS SalesName
			,[decCOGS] AS COGS
			,[decSOQty] AS SOQty
			,[decSOQtyRemain] AS SOQtyRemain
			,[strPartExtendedDesc] AS PartExtendedDesc
			,[decItemWeight] AS ItemWeight
			,tblInvoiceDocDT.[decVolumetricWeight] AS VolumetricWeight
			,[bitContainerItem] AS ContainerItem
			,[bitDelCost] AS DelCost
			,[intBillingMethod] AS BillingMethod
			,[uidTransactionFieldID] AS TransactionFieldGUID
			,[uidContainerItem] AS ContainerItemGUID
			,ISNULL(tblInvoiceDocDTPrj.strProjNumber, '') AS ProjNumber
			,tblInv.bitInvSerialType AS IsInvSerialType
			,CASE 
				WHEN tblInv.intType = 4
					THEN tblInv.decStandardCost
				ELSE CASE @GPCalcLPP
						WHEN 0
							THEN tblInv.decLastPPUnit
						WHEN 1
							THEN tblInv.decStandardCost
						WHEN 2
							THEN CASE @GPCalcInvLevel
									WHEN 0
										THEN CASE 
												WHEN tblInv.decLastPPUnit > ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblInvoiceDocDT.strLocation
															), 0)
													THEN tblInv.decLastPPUnit
												ELSE CASE 
														WHEN tblInv.decLastPPUnit < ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblInvoiceDocDT.strLocation
																	), 0)
															THEN ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt EXT
																		WHERE EXT.strPartNumber = tblInv.strPartNumber
																			AND EXT.strLocName = tblInvoiceDocDT.strLocation
																		), 0)
														ELSE CASE 
																WHEN ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = tblInvoiceDocDT.strLocation
																			), 0) = 0
																	THEN tblInv.decLastPPUnit
																ELSE ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = tblInvoiceDocDT.strLocation
																			), 0)
																END
														END
												END
									WHEN 1
										THEN CASE 
												WHEN tblInv.decLastPPUnit > ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN tblInv.decLastPPUnit
												ELSE CASE 
														WHEN tblInv.decLastPPUnit < ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
															THEN ISNULL((
																		CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END
																		), 0)
														ELSE CASE 
																WHEN CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END = 0
																	THEN tblInv.decLastPPUnit
																ELSE ISNULL((
																			CASE tblInv.decSumOnHand
																				WHEN 0
																					THEN 0
																				ELSE tblInv.decSumValue / tblInv.decSumOnHand
																				END
																			), 0)
																END
														END
												END
									ELSE tblInv.decLastPPUnit
									END
						WHEN 3
							THEN CASE @GPCalcInvLevel
									WHEN 0
										THEN CASE 
												WHEN ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblInvoiceDocDT.strLocation
															), 0) = 0
													THEN tblInv.decLastPPUnit
												ELSE ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblInvoiceDocDT.strLocation
															), 0)
												END
									WHEN 1
										THEN CASE 
												WHEN CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END = 0
													THEN tblInv.decLastPPUnit
												ELSE ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
												END
									ELSE tblInv.decLastPPUnit
									END
						ELSE tblInv.decLastPPUnit
						END
				END AS GPCalc
			,tblInv.strDimProCode AS DimProCode
			,tblInv.strUnitOfMeasure AS UnitOfMeasure
			,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist
			,tblInv.bitAutoBuild AS IsAutoBuild
			,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT SUM(INV.decLastPPUnit)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							WHERE BOM.strPartNumber = tblInv.strPartNumber
							), 0)
				END AS AutoBuildLRC
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT SUM(INV.decStandardCost)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							WHERE BOM.strPartNumber = tblInv.strPartNumber
							), 0)
				END AS AutoBuildSC
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT ISNULL(SUM(CASE EXT.decOnHand
											WHEN 0
												THEN 0
											ELSE EXT.decValue / EXT.decOnHand
											END), 0)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
							WHERE BOM.strPartNumber = tblInv.strPartNumber
								AND EXT.strLocName = @DefaultInvLocation
							), 0)
				END AS AutoBuildMALocDef
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT ISNULL(SUM(CASE EXT.decOnHand
											WHEN 0
												THEN 0
											ELSE EXT.decValue / EXT.decOnHand
											END), 0)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
								AND BOM.strLocName = EXT.strLocName
							WHERE BOM.strPartNumber = tblInv.strPartNumber
							), 0)
				END AS AutoBuildMALocation
			,CASE 
				WHEN tblInv.bitAutoBuild = 0
					THEN 0
				ELSE ISNULL((
							SELECT ISNULL(SUM(CASE INV.decSumOnHand
											WHEN 0
												THEN 0
											ELSE INV.decSumValue / INV.decSumOnHand
											END), 0)
							FROM tblInvBOM BOM
							INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
							WHERE BOM.strPartNumber = tblInv.strPartNumber
							), 0)
				END AS AutoBuildMAMain
			,ISNULL(STUFF((
						SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(max))
						FROM tblInvLocBin
						WHERE tblInvLocBin.lngId IN (
								SELECT tblWSWIPCompInvBin.BinID
								FROM tblWSInvoiceDoc
								INNER JOIN tblWSWIP ON tblWSWIP.JBDocID = tblWSInvoiceDoc.ProcessDocID
								INNER JOIN [tblWSWIPCompInvBin] ON [tblWSWIPCompInvBin].WIPDocID = tblWSWIP.WIPDocID
								WHERE tblWSInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
									AND tblWSWIPCompInvBin.[LineNo] = tblInvoiceDocDT.intLineNo
								)
						--SELECT lngBinId
						--FROM tblInvoiceDocDTBin
						--WHERE tblInvoiceDocDTBin.strInvDocID = tblInvoiceDocDT.strInvDocID
						--	AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTBin.intLineNo
						FOR XML PATH('')
						), 1, 1, ''), '') AS BinCode
			,ISNULL(STUFF((
						SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(max))
						FROM tblInvLocBin
						WHERE tblInvLocBin.lngId IN (
								SELECT tblWSWIPCompInvBin.BinID
								FROM tblWSInvoiceDoc
								INNER JOIN tblWSWIP ON tblWSWIP.JBDocID = tblWSInvoiceDoc.ProcessDocID
								INNER JOIN [tblWSWIPCompInvBin] ON [tblWSWIPCompInvBin].WIPDocID = tblWSWIP.WIPDocID
								WHERE tblWSInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
									AND tblWSWIPCompInvBin.[LineNo] = tblInvoiceDocDT.intLineNo
								)
						--SELECT lngBinId
						--FROM tblInvoiceDocDTBin
						--WHERE tblInvoiceDocDTBin.strInvDocID = tblInvoiceDocDT.strInvDocID
						--	AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTBin.intLineNo
						FOR XML PATH('')
						), 1, 1, ''), '') AS BinID
			,strOrdDADocID AS OrdDADocID
			,intDALineNo AS DALineNo
			,bitFromGRV AS IsFromGRV
			,strGRVDocNum AS GRVDocNum
			,intGRVLineNo AS GRVLineNo
			,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
			,strOrigDocID AS OrigDocID
			,blnIsCashPrice AS IsCashPrice
			,(
				CASE 
					WHEN tblInvoiceDocDT.strOrigDocID LIKE 'CR%'
						THEN (
								SELECT strOrigDocID
								FROM tblOrderDocDT
								WHERE strOrdDocID = tblInvoiceDocDT.strOrigDocID
									AND strPartNumber = tblInvoiceDocDT.strPartNumber
									AND intLineNo = tblInvoiceDocDT.intLineNo
								)
					ELSE tblInvoiceDocDT.strOrigDocID
					END
				) AS InvDocIDToCheckIsFroInvoice
		FROM tblInvoiceDocDT
		INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
			AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
		LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
		WHERE tblInvoiceDocDT.strInvDocID = @DocNumber  AND (@IsInvoiceCredit = 0 OR (@IsInvoiceCredit = 1 and tblInvoiceDocDT.bitDelCost = 1))
		ORDER BY tblInvoiceDocDT.intLineNo
	END
END
GO



/*********** Start [GetInvoiceDocDTData] ***********/
CREATE PROCEDURE [dbo].[GetInvoiceDocDTData]
(
	@DocumentId VARCHAR(50)
)
AS
BEGIN
SELECT tblInvoiceDocDT.strPartNumber AS PartNumber
	,tblInvoiceDocDT.strLocation AS [Location]
	,tblInvoiceDocDT.decStockQty AS Qty
	,tblInvoiceDocDT.decUsedQty AS UsedQty
	,tblInvoiceDocDT.intLineNo [LineNo]
	,tblInvoiceDocDT.decLineTotExc AS LineValue
	,tblInvoiceDocDT.bitDiscountTax AS IsDiscountTax
	,tblInvoiceDocDT.decStandardCost AS StandardCost
	,tblInvoiceDocDT.decLastPPUnit AS LastPPUnit
	,CASE 
		WHEN tblInvoiceDocDT.decLastPPUnit = 0
			AND (
				ISNULL((
						SELECT CASE 
								WHEN Z.decCOGS < 0
									THEN Z.decCOGS * - 1
								ELSE Z.decCOGS
								END
						FROM (
							SELECT CASE 
									WHEN decCOGS <> 0
										THEN decCOGS / decQty
									ELSE decCOGS
									END AS decCOGS
							FROM tblInvTrackingDT
							WHERE lngID IN (
									SELECT MAX(tblInvTrackingDT.lngID)
									FROM tblInvTrackingDT
									WHERE tblInvTrackingDT.strPartNumber = tblInvoiceDocDT.strPartNumber
										AND tblInvTrackingDT.strLocName = tblInvoiceDocDT.strLocation
									)
							) Z
						), 0)
				) <> 0
			THEN ISNULL((
						SELECT CASE 
								WHEN Z.decCOGS < 0
									THEN Z.decCOGS * - 1
								ELSE Z.decCOGS
								END
						FROM (
							SELECT CASE 
									WHEN decCOGS <> 0
										THEN decCOGS / decQty
									ELSE decCOGS
									END AS decCOGS
							FROM tblInvTrackingDT
							WHERE lngID IN (
									SELECT MAX(tblInvTrackingDT.lngID)
									FROM tblInvTrackingDT
									WHERE tblInvTrackingDT.strPartNumber = tblInvoiceDocDT.strPartNumber
										AND tblInvTrackingDT.strLocName = tblInvoiceDocDT.strLocation
									)
							) Z
						), 0)
		ELSE tblInvoiceDocDT.decLastPPUnit
		END AS LastReceivedCost
	,CONVERT(BIT, CASE 
			WHEN tblInvoiceDocDT.decLastPPUnit = 0
				AND (
					ISNULL((
							SELECT CASE 
									WHEN Z.decCOGS < 0
										THEN Z.decCOGS * - 1
									ELSE Z.decCOGS
									END
							FROM (
								SELECT CASE 
										WHEN decCOGS <> 0
											THEN decCOGS / decQty
										ELSE decCOGS
										END AS decCOGS
								FROM tblInvTrackingDT
								WHERE lngID IN (
										SELECT MAX(tblInvTrackingDT.lngID)
										FROM tblInvTrackingDT
										WHERE tblInvTrackingDT.strPartNumber = tblInvoiceDocDT.strPartNumber
											AND tblInvTrackingDT.strLocName = tblInvoiceDocDT.strLocation
										)
								) Z
							), 0)
					) <> 0
				THEN 1
			ELSE 0
			END) AS IsZeroStockValue
FROM tblInvoiceDoc
INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
WHERE (tblInvoiceDoc.strInvDocID = @DocumentId)
ORDER BY tblInvoiceDocDT.intLineNo
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvoiceDocDTDataForRequisition]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateProcessDocData] ***********/

/*********** Start [GetInvoiceDocDTDataForRequisition] ***********/
CREATE PROCEDURE [dbo].[GetInvoiceDocDTDataForRequisition]
(
	@DocNumber nvarchar(30)
)
AS
BEGIN
	select tblInvoiceDocDT.intLineNo AS [LineNo],
       tblInvoiceDocDT.strPartNumber AS PartNumber,
       tblInv.strDesc as PartDesc,
	   Convert(int, tblInv.intType) as ItemType,
       tblInvoiceDocDT.strLocation AS Location,
       tblInvoiceDocDT.decUsedQty AS QuotedQty,
       ISNULL(SUM(tblWSWIPCompDT.PostQty),0) - ISNULL(SUM(tblWSWIPCompDT.ReturnQty),0) AS PostedQty,
	   PostQty = 0.0,
	   ReturnQty = 0.0,
       tblInvoiceDocDT.decLineTotExc as Amount, --TODO:Check
       ISNULL(SUM(tblWSWIPCompDT.PostAmount),0) AS PostedAmount,
	   PostAmount = 0.0,
       tblInv.bitInvSerialType as IsSerailType,
       tblInv.strStockUnit As Unit,
       --tblManJobCompInv.strBOMNumber,
       ISNULL(tblInvSerialTypes.bitMethod,0) as IsMethod,
       ISNULL(tblInvSerialTypes.bitDimensionExist,0) as IsDimensionExist
	from tblInvoiceDocDT 
	INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	LEFT JOIN tblWSWIP ON tblInvoiceDocDT.strInvDocID = tblWSWIP.JBDocID
	LEFT JOIN tblWSWIPCompDT ON tblWSWIP.WIPDocID = tblWSWIPCompDT.WIPDocID AND tblInvoiceDocDT.intLineNo = tblWSWIPCompDT.[LineNo]
	where strInvDocID = @DocNumber
	GROUP BY tblInvoiceDocDT.intLineNo,
	         tblInvoiceDocDT.strPartNumber,
	         tblInv.strDesc,
	         tblInvoiceDocDT.strLocation,
	         tblInvoiceDocDT.decUsedQty,
	         tblInvoiceDocDT.decLineTotExc, --TODO:check
	         tblInv.bitInvSerialType,
	         tblInv.strStockUnit,
			 tblInv.intType,
	         --tblWSProcessDocDT.strBOMNumber,
	         tblInvSerialTypes.bitMethod,
	         tblInvSerialTypes.bitDimensionExist
	Order by tblInvoiceDocDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvoiceDocDTSerialData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetInvoiceDocDTSerialData] ***********/
CREATE PROCEDURE [dbo].[GetInvoiceDocDTSerialData]
	@DocNumber  AS NVARCHAR(50),
	@LineNumber AS INT
AS
BEGIN
	SELECT tblInvoiceDocDTSerial.[strInvDocID] AS InvDocID,
	  tblInvoiceDocDTSerial.[intLineNo] AS [LineNo],
      tblInvoiceDocDTSerial.[strSerialNumber] AS SerialNumber,
      tblInvoiceDocDTSerial.[decQty] AS Qty,
      tblInvoiceDocDTSerial.[strUnit] AS Unit,
      tblInvoiceDocDTSerial.[lngID] AS ID,
      tblInvoiceDocDTSerial.[bitExpiryDate] AS IsExpiryDate ,
      tblInvoiceDocDTSerial.[dteExpiryDate] AS ExpiryDate,
      tblInvoiceDocDTSerial.[intSerialLotType] AS SerialLotType,
	  tblInvoiceDocDTSerial.[lngBinID] AS BinIDLong
	,CONVERT(NVARCHAR(52), CASE 
		WHEN tblInvoiceDocDTSerial.intSerialLotType = 0
			THEN ISNULL(CAST(tblInvSerialExt.intStatus AS CHAR(1)) + tblInvSerialExt.strDocID, '')
		ELSE ''
		END) AS [Status]
	,CONVERT(bit,CASE  
		WHEN tblInvoiceDocDTSerial.intSerialLotType = 0
			THEN ISNULL(tblInvSerialExt.bitDimensionExist, 0)
		ELSE 0
		END) AS IsDimensionExist
	,CONVERT(NVARCHAR(MAX),CASE  
		WHEN tblInvoiceDocDTSerial.intSerialLotType = 0
			THEN ISNULL(tblInvSerialExt.strDimension, '')
		ELSE ''
		END) AS Dimension
	,ISNULL((
			SELECT strBinCode
			FROM tblInvLocBin
			WHERE lngID = tblInvoiceDocDTSerial.lngBinId
			), '') AS BinCode
	FROM tblInvoiceDocDT
	INNER JOIN tblInvoiceDocDTSerial ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTSerial.strInvDocID
		AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTSerial.intLineNo
	LEFT JOIN tblInvSerialExt ON tblInvoiceDocDT.strPartNumber = tblInvSerialExt.strPartNumber
		AND tblInvoiceDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
	WHERE tblInvoiceDocDT.strInvDocID = @DocNumber
		AND tblInvoiceDocDT.intLineNo = @LineNumber
	ORDER BY lngID
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvoiceDocDTSerialDataByPartNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetInvoiceDocDTSerialDataByPartNumber]    Script Date: 2020-05-26 ******/
CREATE PROCEDURE [dbo].[GetInvoiceDocDTSerialDataByPartNumber]
	@DocNumber  AS NVARCHAR(50),
	@PartNumber AS NVARCHAR(50)
AS
BEGIN
	SELECT tblInvoiceDocDTSerial.[strInvDocID] AS InvDocID,
	  tblInvoiceDocDTSerial.[intLineNo] AS [LineNo],
      tblInvoiceDocDTSerial.[strSerialNumber] AS SerialNumber,
      tblInvoiceDocDTSerial.[decQty] AS Qty,
      tblInvoiceDocDTSerial.[strUnit] AS Unit,
      tblInvoiceDocDTSerial.[lngID] AS ID,
      tblInvoiceDocDTSerial.[bitExpiryDate] AS IsExpiryDate ,
      tblInvoiceDocDTSerial.[dteExpiryDate] AS ExpiryDate,
      tblInvoiceDocDTSerial.[intSerialLotType] AS SerialLotType,
	  tblInvoiceDocDTSerial.[lngBinID] AS BinIDLong
	,CONVERT(NVARCHAR(52), CASE 
		WHEN tblInvoiceDocDTSerial.intSerialLotType = 0
			THEN ISNULL(CAST(tblInvSerialExt.intStatus AS CHAR(1)) + tblInvSerialExt.strDocID, '')
		ELSE ''
		END) AS [Status]
	,CONVERT(bit,CASE  
		WHEN tblInvoiceDocDTSerial.intSerialLotType = 0
			THEN ISNULL(tblInvSerialExt.bitDimensionExist, 0)
		ELSE 0
		END) AS IsDimensionExist
	,CONVERT(NVARCHAR(MAX),CASE  
		WHEN tblInvoiceDocDTSerial.intSerialLotType = 0
			THEN ISNULL(tblInvSerialExt.strDimension, '')
		ELSE ''
		END) AS Dimension
	,ISNULL((
			SELECT strBinCode
			FROM tblInvLocBin
			WHERE lngID = tblInvoiceDocDTSerial.lngBinId
			), '') AS BinCode
	FROM tblInvoiceDocDT
	INNER JOIN tblInvoiceDocDTSerial ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTSerial.strInvDocID
		AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTSerial.intLineNo
	LEFT JOIN tblInvSerialExt ON tblInvoiceDocDT.strPartNumber = tblInvSerialExt.strPartNumber
		AND tblInvoiceDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
	WHERE tblInvoiceDocDT.strInvDocID = @DocNumber
		AND tblInvoiceDocDT.strPartNumber = @PartNumber
	ORDER BY lngID
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvoiceDocOptionalData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetInvoiceDocOptionalData]
(
	@DocumentID NVARCHAR(100),
	@LineNo INT,
	@IsShipmentsFromSO BIT = 0
)
AS
BEGIN
	IF (@IsShipmentsFromSO = 0)
	BEGIN
		SELECT tblInvoiceDoc.strReference AS Reference
			,tblInvoiceDoc.strField1 AS Field1
			,tblInvoiceDoc.strField2 AS Field2
			,tblInvoiceDoc.strField3 AS Field3
			,tblInvoiceDoc.strField4 AS Field4
			,tblInvoiceDoc.strField5 AS Field5
			,tblInvoiceDoc.strField6 AS Field6
			,tblInvoiceDoc.strField7 AS Field7
			,tblInvoiceDoc.strField8 AS Field8
			,tblInvoiceDoc.strField9 AS Field9
			,tblInvoiceDoc.strField10 AS Field10
			,tblInvoiceDoc.strField11 AS Field11
			,tblInvoiceDoc.strField12 AS Field12
			,tblInvoiceDoc.dteField13 AS Field13
			,tblInvoiceDoc.dteField14 AS Field14
			,tblInvoiceDocDT.strInvField1 AS InvField1
			,tblInvoiceDocDT.strInvField2 AS InvField2
			,tblInvoiceDocDT.strInvField3 AS InvField3
			,tblInvoiceDocDT.strInvField4 AS InvField4
			,tblInvoiceDocDT.strInvField5 AS InvField5
			,tblInvoiceDocDT.strInvField6 AS InvField6
			,tblInvoiceDocDT.strLineField1 AS LineField1
			,tblInvoiceDocDT.strLineField2 AS LineField2
			,tblInvoiceDocDT.strLineField3 AS LineField3
			,tblInvoiceDocDT.strLineField4 AS LineField4
			,tblInvoiceDocDT.strLineField5 AS LineField5
			,tblInvoiceDocDT.strLineField6 AS LineField6
			,tblInvoiceDocDT.strLineField7 AS LineField7
			,tblInvoiceDocDT.strLineField8 AS LineField8
			,tblInvoiceDocDT.strLineField9 AS LineField9
			,tblInvoiceDocDT.strLineField10 AS LineField10
			,tblInvoiceDocDT.strLineField11 AS LineField11
			,tblInvoiceDocDT.strLineField12 AS LineField12
		FROM tblInvoiceDoc
		INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
		WHERE tblInvoiceDocDT.strInvDocID = @DocumentID
			AND tblInvoiceDocDT.intLineNo = @LineNo
	END
	ELSE
	BEGIN
		SELECT tblOrderDoc.strReference AS Reference
			,tblOrderDoc.strField1 AS Field1
			,tblOrderDoc.strField2 AS Field2
			,tblOrderDoc.strField3 AS Field3
			,tblOrderDoc.strField4 AS Field4
			,tblOrderDoc.strField5 AS Field5
			,tblOrderDoc.strField6 AS Field6
			,tblOrderDoc.strField7 AS Field7
			,tblOrderDoc.strField8 AS Field8
			,tblOrderDoc.strField9 AS Field9
			,tblOrderDoc.strField10 AS Field10
			,tblOrderDoc.strField11 AS Field11
			,tblOrderDoc.strField12 AS Field12
			,tblOrderDoc.dteField13 AS Field13
			,tblOrderDoc.dteField14 AS Field14
			,tblOrderDocDT.strInvField1 AS InvField1
			,tblOrderDocDT.strInvField2 AS InvField2
			,tblOrderDocDT.strInvField3 AS InvField3
			,tblOrderDocDT.strInvField4 AS InvField4
			,tblOrderDocDT.strInvField5 AS InvField5
			,tblOrderDocDT.strInvField6 AS InvField6
			,tblOrderDocDT.strLineField1 AS LineField1
			,tblOrderDocDT.strLineField2 AS LineField2
			,tblOrderDocDT.strLineField3 AS LineField3
			,tblOrderDocDT.strLineField4 AS LineField4
			,tblOrderDocDT.strLineField5 AS LineField5
			,tblOrderDocDT.strLineField6 AS LineField6
			,tblOrderDocDT.strLineField7 AS LineField7
			,tblOrderDocDT.strLineField8 AS LineField8
			,tblOrderDocDT.strLineField9 AS LineField9
			,tblOrderDocDT.strLineField10 AS LineField10
			,tblOrderDocDT.strLineField11 AS LineField11
			,tblOrderDocDT.strLineField12 AS LineField12
		FROM tblOrderDoc
		INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
		WHERE tblOrderDocDT.strOrdDocID = @DocumentID
			AND tblOrderDocDT.intLineNo = @LineNo
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvoiceDocPCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetInvoiceDocPCount]
(
	@strVendName nvarchar(50),
	@strVendInvNo nvarchar(50)
)
AS
SELECT COUNT(strInvPDocID) FROM tblInvoiceDocP WHERE strVendName = @strVendName AND SUBSTRING(strVendInvNo, 1, LEN(@strVendInvNo)) = @strVendInvNo
GO
/****** Object:  StoredProcedure [dbo].[GetInvoiceDocREV]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-------------------------------------------------------------------------

------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvoiceDocREV] (
	@DocNumber NVARCHAR(50)
	,@Module INT
	,@RevisionNumber INT
	)
AS
BEGIN
	IF (@Module >= 0)
	BEGIN
		SELECT tblInvoiceDocREV.strOrdDocID AS OrdDocID
			,tblInvoiceDocREV.bitIsForeign AS IsForeign
			,tblInvoiceDocREV.dteJournalDate AS JournalDate
			,tblInvoiceDocREV.dteRequired AS [Required]
			,tblInvoiceDocREV.strCustName AS CustName
			,tblInvoiceDocREV.strSoldTo AS SoldTo
			,tblInvoiceDocREV.strShipTo AS ShipTo
			,tblInvoiceDocREV.strReference AS Reference
			,tblInvoiceDocREV.decSubTotal AS SubTotal
			,tblInvoiceDocREV.decVAT AS VAT
			,tblInvoiceDocREV.decTotal AS Total
			,tblInvoiceDocREV.decSubTotalF AS SubTotalF
			,tblInvoiceDocREV.decVATF AS VATF
			,tblInvoiceDocREV.decTotalF AS TotalF
			,tblInvoiceDocREV.strNotes AS Notes
			,tblInvoiceDocREV.strSalesName AS SalesName
			,tblInvoiceDocREV.strAddInfo AS AddInfo
			,tblInvoiceDocREV.decExchange AS Exchange
			,tblInvoiceDocREV.strTerm AS Term
			,tblInvoiceDocREV.intDept AS Dept
			,tblInvoiceDocREV.strField1 AS Field1
			,tblInvoiceDocREV.strField2 AS Field2
			,tblInvoiceDocREV.strField3 AS Field3
			,tblInvoiceDocREV.strField4 AS Field4
			,tblInvoiceDocREV.strField5 AS Field5
			,tblInvoiceDocREV.strField6 AS Field6
			,tblInvoiceDocREV.strField7 AS Field7
			,tblInvoiceDocREV.strField8 AS Field8
			,tblInvoiceDocREV.strField9 AS Field9
			,tblInvoiceDocREV.strField10 AS Field10
			,tblInvoiceDocREV.strField11 AS Field11
			,tblInvoiceDocREV.strField12 AS Field12
			,tblInvoiceDocREV.dteField13 AS Field13
			,tblInvoiceDocREV.dteField14 AS Field14
			,tblInvoiceDocREV.decDiscPerc AS DiscPerc
			,tblInvoiceDocREV.decDiscAmt AS DiscAmt
			,tblInvoiceDocREV.decDiscAmtF AS DiscAmtF
			,tblInvoiceDocREV.strOrdFQDocID AS OrdFQDocID
			,tblInvoiceDocREV.strStatusTypeCode AS StatusTypeCode
			,tblInvoiceDocREV.bitBookmark AS IsBookmark
			,tblInvoiceDocREV.strDelMethodCode AS DelMethodCode
			,tblInvoiceDocREV.decTotalWeight AS TotalWeight
			,tblInvoiceDocREV.decTotalVolWeight AS TotalVolWeight
			,tblInvoiceDocREV.decDeliveryCost AS DeliveryCost
			,tblInvoiceDocREV.decDeliveryCostF AS DeliveryCostF
		FROM tblInvoiceDocREV
		WHERE strInvDocID = @DocNumber
			AND intModule = @Module
			AND intRevisionNumber = @RevisionNumber
	END
	ELSE
	BEGIN
		SELECT tblInvoiceDocREV.strOrdDocID AS OrdDocID
			,tblInvoiceDocREV.bitIsForeign AS IsForeign
			,tblInvoiceDocREV.dteJournalDate AS JournalDate
			,tblInvoiceDocREV.dteRequired AS [Required]
			,tblInvoiceDocREV.strCustName AS CustName
			,tblInvoiceDocREV.strSoldTo AS SoldTo
			,tblInvoiceDocREV.strShipTo AS ShipTo
			,tblInvoiceDocREV.strReference AS Reference
			,tblInvoiceDocREV.decSubTotal AS SubTotal
			,tblInvoiceDocREV.decVAT AS VAT
			,tblInvoiceDocREV.decTotal AS Total
			,tblInvoiceDocREV.decSubTotalF AS SubTotalF
			,tblInvoiceDocREV.decVATF AS VATF
			,tblInvoiceDocREV.decTotalF AS TotalF
			,tblInvoiceDocREV.strNotes AS Notes
			,tblInvoiceDocREV.strSalesName AS SalesName
			,tblInvoiceDocREV.strAddInfo AS AddInfo
			,tblInvoiceDocREV.decExchange AS Exchange
			,tblInvoiceDocREV.strTerm AS Term
			,tblInvoiceDocREV.intDept AS Dept
			,tblInvoiceDocREV.strField1 AS Field1
			,tblInvoiceDocREV.strField2 AS Field2
			,tblInvoiceDocREV.strField3 AS Field3
			,tblInvoiceDocREV.strField4 AS Field4
			,tblInvoiceDocREV.strField5 AS Field5
			,tblInvoiceDocREV.strField6 AS Field6
			,tblInvoiceDocREV.strField7 AS Field7
			,tblInvoiceDocREV.strField8 AS Field8
			,tblInvoiceDocREV.strField9 AS Field9
			,tblInvoiceDocREV.strField10 AS Field10
			,tblInvoiceDocREV.strField11 AS Field11
			,tblInvoiceDocREV.strField12 AS Field12
			,tblInvoiceDocREV.dteField13 AS Field13
			,tblInvoiceDocREV.dteField14 AS Field14
			,tblInvoiceDocREV.decDiscPerc AS DiscPerc
			,tblInvoiceDocREV.decDiscAmt AS DiscAmt
			,tblInvoiceDocREV.decDiscAmtF AS DiscAmtF
			,tblInvoiceDocREV.strOrdFQDocID AS OrdFQDocID
			,tblInvoiceDocREV.strStatusTypeCode AS StatusTypeCode
			,tblInvoiceDocREV.bitBookmark AS IsBookmark
			,tblInvoiceDocREV.strDelMethodCode AS DelMethodCode
			,tblInvoiceDocREV.decTotalWeight AS TotalWeight
			,tblInvoiceDocREV.decTotalVolWeight AS TotalVolWeight
			,tblInvoiceDocREV.decDeliveryCost AS DeliveryCost
			,tblInvoiceDocREV.decDeliveryCostF AS DeliveryCostF
		FROM tblInvoiceDocREV
		WHERE strInvDocID = @DocNumber
			AND intRevisionNumber = @RevisionNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvoiceDocREVDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvoiceDocREVDT]
    (
      @DocNumber NVARCHAR(50) ,
      @Module INT ,
      @RevisionNumber INT
    )
AS
    BEGIN
    SELECT  tblInvoiceDocREVDT.strPartNumber AS PartNumber,
			tblInvoiceDocREVDT.strLocation AS Location,
			tblInvoiceDocREVDT.strPartDesc AS PartDesc,
			tblInvoiceDocREVDT.decQty AS Qty,
			tblInvoiceDocREVDT.strUnit AS Unit,
			tblInvoiceDocREVDT.decPriceEaInc AS PriceEaInc,
			tblInvoiceDocREVDT.decLineDiscPerc AS LineDiscPerc,
			tblInvoiceDocREVDT.strTaxCode AS TaxCode,
			tblInvoiceDocREVDT.decLineTaxAmt AS LineTaxAmt,
			tblInvoiceDocREVDT.decLineTotInc AS LineTotInc,
			tblInvoiceDocREVDT.intType AS [Type],
			tblInvoiceDocREVDT.imgTaxObj AS ImageTaxObj,
			tblInvoiceDocREVDT.decLastPPUnit AS LastPPUnit,
            ISNULL(tblOrderDocDADTPrj.strProjNumber, '') AS ProjNumber,
            tblInv.bitInvSerialType AS IsInvSerialType,
            tblInv.strUnitOfMeasure AS UnitOfMeasure
    FROM    tblInvoiceDocREVDT
            INNER JOIN tblInv ON tblInvoiceDocREVDT.strPartNumber = tblInv.strPartNumber
            LEFT JOIN tblOrderDocDADTPrj ON tblInvoiceDocREVDT.strInvDocID = tblOrderDocDADTPrj.strOrdDADocID
                                            AND tblInvoiceDocREVDT.intLineNo = tblOrderDocDADTPrj.intLineNo
            INNER JOIN tblInvoiceDocREV ON tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID
    WHERE   tblInvoiceDocREVDT.strInvDocID = @DocNumber
            AND tblInvoiceDocREV.intRevisionNumber = @RevisionNumber
            AND tblInvoiceDocREV.intModule = @Module
    ORDER BY tblInvoiceDocREVDT.intLineNo
    END
GO
/****** Object:  StoredProcedure [dbo].[GetInvoiceDocREVDTSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvoiceDocREVDTSales]
    (
      @DocNumber NVARCHAR(50) ,
      @Module INT ,
      @RevisionNumber INT
    )
AS
    BEGIN
SELECT  
	 ISNULL(tblInvoiceDocREVDT.intLineNo				,0)			AS	LineNumber
	,ISNULL(tblInvoiceDocREVDT.strInvField1				,'')		AS	Inv1
	,ISNULL(tblInvoiceDocREVDT.strInvField2				,'')		AS	Inv2
	,ISNULL(tblInvoiceDocREVDT.strInvField3				,'')		AS	Inv3
	,ISNULL(tblInvoiceDocREVDT.strInvField4				,'')		AS	Inv4
	,ISNULL(tblInvoiceDocREVDT.strInvField5				,'')		AS	Inv5
	,ISNULL(tblInvoiceDocREVDT.strInvField6				,'')		AS	Inv6
	,ISNULL(tblInvoiceDocREVDT.strLineField1			,'')		AS	Line1
	,ISNULL(tblInvoiceDocREVDT.strLineField2			,'')		AS	Line2
	,ISNULL(tblInvoiceDocREVDT.strLineField3			,'')		AS	Line3
	,ISNULL(tblInvoiceDocREVDT.strLineField4			,'')		AS	Line4
	,ISNULL(tblInvoiceDocREVDT.strLineField5			,'')		AS	Line5
	,ISNULL(tblInvoiceDocREVDT.strLineField6			,'')		AS	Line6
	,ISNULL(tblInvoiceDocREVDT.strLineField7			,'')		AS	Line7
	,ISNULL(tblInvoiceDocREVDT.strLineField8			,'')		AS	Line8
	,ISNULL(tblInvoiceDocREVDT.strLineField9			,'')		AS	Line9
	,ISNULL(tblInvoiceDocREVDT.strLineField10			,'')		AS	Line10
	,ISNULL(tblInvoiceDocREVDT.strLineField11			,'')		AS	Line11
	,ISNULL(tblInvoiceDocREVDT.strLineField12			,'')		AS	Line12
	,ISNULL(tblInvoiceDocREVDT.decLineDiscPerc			,0)			AS	DiscountPercentage
	,ISNULL(tblInvoiceDocREVDT.decLineDiscAmt			,0)			AS	Discount
	,ISNULL(tblInvoiceDocREVDT.bitDiscountTax			,0)			AS	IsDiscountTAX
	,ISNULL(tblInvoiceDocREVDT.decStockQty				,0)			AS	StockQty
	,ISNULL(tblInvoiceDocREVDT.strStockUnit				,'')		as	StockUnit
	,ISNULL(tblInvoiceDocREVDT.strSalesName				,'')		as	SalesPerson
	,ISNULL(tblInvoiceDocREVDT.decSOQty					,0)			as	SOQty
	,ISNULL(tblInvoiceDocREVDT.decSOQtyRemain			,0)			AS	SOQtyRemain
	,ISNULL(tblInvoiceDocREVDT.strPartExtendedDesc		,'')		AS	Extended
	,ISNULL(tblInvoiceDocREVDT.decItemWeight			,0)			as	ItemWeight
	,ISNULL(tblInvoiceDocREVDT.decVolumetricWeight		,0)			as	VolumetricWeight
	,ISNULL(tblInvoiceDocREVDT.bitContainerItem			,0)			as	IsContainerItem
	,ISNULL(tblInvoiceDocREVDT.bitDelCost				,0)			as	IsCostDel
	,ISNULL(tblInvoiceDocREVDT.strOrdSODocID			,'')		as	SODocNum
	,ISNULL(tblInvoiceDocREVDT.decQtyRemaining			,0)			as	OrigQtyRemain
	,tblInvoiceDocREVDT.uidTransactionFieldID						as	TransactionFieldGUID
	,''																AS ProjNumber
	,ISNULL(tblInv.bitInvSerialType						,0)			AS IsInvSerialType		
	,ISNULL(tblInv.strUnitOfMeasure						,'')		AS UnitOfMeasure
	,tblInvoiceDocREVDT.strPartNumber								AS	Number
	,tblInvoiceDocREVDT.strLocation									AS	Location
	,tblInvoiceDocREVDT.strPartDesc									AS	[Description]
	,ISNULL(tblInvoiceDocREVDT.decQty					,0)			AS	Qty
	,tblInvoiceDocREVDT.strUnit										AS	Unit
	,ISNULL(tblInvoiceDocREVDT.decPriceEaInc			,0)			AS	Price
	,tblInvoiceDocREVDT.decLineDiscPerc								AS	DiscountPercentage
	,tblInvoiceDocREVDT.strTaxCode									AS	TaxCode
	,tblInvoiceDocREVDT.decLineTaxAmt								AS	Tax
	,ISNULL(tblInvoiceDocREVDT.decLineTotInc	        ,0)			AS	Amount
	,tblInvoiceDocREVDT.intType										AS	[Type]
	,tblInvoiceDocREVDT.imgTaxObj									AS	TaxObject
	,tblInvoiceDocREVDT.imgTaxObj									AS	TaxObjectByte
	,ISNULL(tblInvoiceDocREVDT.decLastPPUnit		    ,0)			AS	Cost
	,CASE 
		WHEN tblInv.intType = 4
			THEN tblInv.decStandardCost
		ELSE CASE 0
				WHEN 0
					THEN tblInv.decLastPPUnit
				WHEN 1
					THEN tblInv.decStandardCost
				WHEN 2
					THEN CASE 0
							WHEN 0
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblInvoiceDocREVDT.strLocation
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblInvoiceDocREVDT.strLocation
															), 0)
													THEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = tblInvoiceDocREVDT.strLocation
																), 0)
												ELSE CASE 
														WHEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblInvoiceDocREVDT.strLocation
																	), 0) = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblInvoiceDocREVDT.strLocation
																	), 0)
														END
												END
										END
							WHEN 1
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
												ELSE CASE 
														WHEN CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
														END
												END
										END
							ELSE tblInv.decLastPPUnit
							END
				WHEN 3
					THEN CASE 0
							WHEN 0
								THEN CASE 
										WHEN ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblInvoiceDocREVDT.strLocation
													), 0) = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblInvoiceDocREVDT.strLocation
													), 0)
										END
							WHEN 1
								THEN CASE 
										WHEN CASE tblInv.decSumOnHand
												WHEN 0
													THEN 0
												ELSE tblInv.decSumValue / tblInv.decSumOnHand
												END = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
										END
							ELSE tblInv.decLastPPUnit
							END
				ELSE tblInv.decLastPPUnit
				END
		END AS CostPriceTotal--GPCalc

   FROM tblInvoiceDocREVDT
INNER JOIN tblInv ON tblInvoiceDocREVDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblInvoiceDocDTPrj ON tblInvoiceDocREVDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
	AND tblInvoiceDocREVDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
WHERE tblInvoiceDocREVDT.strInvDocID = @DocNumber
	AND tblInvoiceDocREVDT.strPartNumber != '4240-0000'
	AND tblInvoiceDocREVDT.lngEntID = (
		SELECT lngEntID
		FROM tblInvoiceDocREV
		WHERE strInvDocID = @DocNumber
			AND intRevisionNumber = @RevisionNumber
		)
ORDER BY tblInvoiceDocREVDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvoiceDocREVForUserEnter]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInvoiceDocREVForUserEnter]
    (
      @DocNumber AS VARCHAR(50) ,
      @RevisionNumber INT
    )
AS
    BEGIN
        SELECT  dteSystemDate AS SystemDate,
                strUserName AS UserName
        FROM    tblInvoiceDocREV
        WHERE   strInvDocID = @DocNumber
                AND intRevisionNumber = @RevisionNumber
    END
GO
/****** Object:  StoredProcedure [dbo].[GetInvoiceDocREVSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetTaxCodeData] ***********/
--------------------------------------------
CREATE PROCEDURE [dbo].[GetInvoiceDocREVSales] (
	@DocNumber NVARCHAR(50)
	,@Module INT
	,@RevisionNumber INT
	)
AS
BEGIN
	SELECT strOrdDocID AS OrdDocID
		,bitIsForeign AS IsForeign
		,dteJournalDate AS JournalDate
		,dteRequired AS [Required]
		,strCustName AS CustName
		,strSoldTo AS SoldTo
		,strShipTo AS ShipTo
		,strReference AS Reference
		,decSubTotal AS SubTotal
		,decVAT AS VAT
		,decTotal AS Total
		,decSubTotalF AS SubTotalF
		,decVATF AS VATF
		,decTotalF AS TotalF
		,strNotes AS Notes
		,strSalesName AS SalesName
		,strAddInfo AS AddInfo
		,decExchange AS Exchange
		,strTerm AS Term
		,intDept AS Dept
		,strField1 AS Field1
		,strField2 AS Field2
		,strField3 AS Field3
		,strField4 AS Field4
		,strField5 AS Field5
		,strField6 AS Field6
		,strField7 AS Field7
		,strField8 AS Field8
		,strField9 AS Field9
		,strField10 AS Field10
		,strField11 AS Field11
		,strField12 AS Field12
		,ISNULL(dteField13, GETDATE()) AS Field13
		,ISNULL(dteField14, GETDATE()) AS Field14
		,decDiscPerc AS DiscPerc
		,decDiscAmt AS DiscAmt
		,decDiscAmtF AS DiscAmtF
		,strOrdFQDocID AS OrdFQDocID
		,strStatusTypeCode AS StatusTypeCode
		,bitBookmark AS IsBookmark
		,strDelMethodCode AS DelMethodCode
		,ISNULL(decTotalWeight, 0) AS TotalWeight
		,ISNULL(decTotalVolWeight, 0) AS TotalVolWeight
		,decDeliveryCost AS DeliveryCost
		,decDeliveryCostF AS DeliveryCostF
		,lngEntID AS EntID
		,strInvDocID AS InvDocID
		,lngInvTrackID AS InvTrackID
		,lngJourID AS JourID
		,dteSystemDate AS SystemDate
		,strUserName AS UserName
		,bitFromSO AS FromSO
		,bitHistoryTrans AS HistoryTrans
		,bitPrinted AS Printed
		,bitEmailed AS Emailed
		,intPaidBy AS PaidBy
		,intAccount AS Account
		,bitReserved AS Reserved
		,strCurrency AS Currency
		,strSubFormated AS SubFormated
		,strVATFormatted AS VATFormatted
		,strTotFormatted AS TotFormatted
		,strCNReasonCode AS CNReasonCode
		,strDiscFormatted AS DiscFormatted
		,dteSystemDateTime AS SystemDateTime
		,strPaidBy AS PaidBy
		,strVAT AS VATNo
		,intSentDoc AS SentDoc
		,strDeliveryCostFormatted AS DeliveryCostFormatted
		,intRevisionNumber AS RevisionNumber
		,dteRevisionDate AS RevisionDate
		,strUserCreated AS UserCreated
		,bitIsRepair AS IsRepair
		,strVendName AS VendName
		,strBoughtFrom AS BoughtFrom
		,bitFQConvert AS FQConvert
		,bitSOCopy AS SOCopy
		,bitSOCopyMulti AS SOCopyMulti
		,strVendInvNo AS VendInvNo
		,bitFromPO AS FromPO
		,decNetItemWeight AS NetItemWeight
		,decNetVolumetricWeight AS NetVolumetricWeight
		,strSourceMOP AS SourceMOP
		,bitCleared AS Cleared
		,strOrdRFQDocID AS OrdRFQDocID
		,bitRFQConvert AS RFQConvert
		,strOrdPDocID AS OrdPDocID
		,intModule AS Module
		,strSOReasonCode AS SOReasonCode
		,strDelNoteNo AS DelNoteNo
		,strContractTo AS ContractTo
		,strContBillType AS ContBillType
		,blnAllowAnnualIncrease AS AllowAnnualIncrease
		,dtpIncreaseStartDate AS IncreaseStartDate
		,intContractPriceIncrease AS ContractPriceIncrease
		,bitInactive AS Inactive
		,strStoreNumber AS StoreNumber
		,strEDI AS EDI
	FROM tblInvoiceDocREV
	WHERE strInvDocID = CASE 
			WHEN ISNULL(@DocNumber, '') = ''
				THEN strInvDocID
			ELSE @DocNumber
			END
		AND intModule = (
			CASE 
				WHEN @Module = 0
					THEN intmodule
				ELSE @Module
				END
			)
		AND intRevisionNumber = @RevisionNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvoiceDocSplitPmt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInvoiceDocSplitPmt]
(
	@DocumentNo NVARCHAR(50)
)
AS
BEGIN
	SELECT 
		strInvDocID AS InvoiceDocID, 			
		strPaymentTypeName AS PaymentTypeName,
		intGLNumber AS GLNumber,			
		decTotal AS	Total,		
		strReference AS Reference,
		Isnull(bitIsForeign,0) AS IsForeign,
		Isnull(decExchange,1) AS Exchange ,
		Isnull(decTotalF,0) AS TotalF
	FROM
		tblInvoiceDocSplitPmt 
	WHERE 
		strInvDocID = @DocumentNo
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvoiceDoctDtForCreditNote]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvoiceDocDTSerialData] ***********/

/*********** Start [GetInvoiceDoctDtForCreditNote] ***********/
CREATE PROCEDURE [dbo].[GetInvoiceDoctDtForCreditNote]
(
	@SQstrCNDocID nvarchar(50),
	@SQstrCustName nvarchar(50)
)
AS
BEGIN
	SELECT 
		tblInvoiceDocDT.strPartNumber as PartNumber,
		SUM(tblInvoiceDocDT.decLineTotExc + tblInvoiceDocDT.decLineTaxAmt) AS Amount,
		SUM(tblInvoiceDocDT.decLineTotExcF + tblInvoiceDocDT.decLineTaxAmtF) AS AmountF,
		tblInvoiceDocDT.bitIsForeign AS IsForeign 
	FROM tblInvoiceDoc 
			INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID 
	WHERE		tblInvoiceDoc.strInvDocID = @SQstrCNDocID 
			AND tblInvoiceDoc.strCustName = @SQstrCustName 
	GROUP BY tblInvoiceDocDT.strPartNumber,tblInvoiceDocDT.bitIsForeign
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvoiceLocations]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInvoiceLocations]
    (
      @SQUserName NVARCHAR(20) = NULL 
    )
AS
    SET NOCOUNT ON;
    SELECT  tblInvLoc.strLocName AS LocName ,
            ISNULL(( SELECT COUNT(tblInvLocSec.strLocName)
                     FROM   tblInvLocSec
                     WHERE  tblInvLocSec.strLocName = tblInvLoc.strLocName
                   ), 0) AS LocationCount ,
            ISNULL(tblInvLocSec.strUserName, '') AS UserName
    FROM    tblInvLoc
            LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName
                                      AND tblInvLocSec.strUserName = @SQUserName
    WHERE   tblInvLoc.intType = 0
    ORDER BY tblInvLoc.strLocName;
GO
/****** Object:  StoredProcedure [dbo].[GetInvoiceOrderDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [SearchCustomerForPricelistsSend] ***********/

/*********** Start [GetInvoiceOrderDetails] ***********/
CREATE PROCEDURE [dbo].[GetInvoiceOrderDetails]
(
	@SelectedDocType TINYINT,
	@SelectedStatus TINYINT,
	@StartDate SMALLDATETIME,
	@EndDate SMALLDATETIME,
	@CustomerName NVARCHAR(50)
)
AS
BEGIN
	DECLARE @query AS NVARCHAR(MAX)
	DECLARE @ParameterDefinition AS NVARCHAR(MAX) 

	IF @SelectedDocType >= 0
	BEGIN
		IF @SelectedDocType = 0
			SET @query = 'SELECT strInvDocID AS InvDocID, dteJournalDate AS JournalDate, dteRequired AS Required, strUserName AS UserName, strCustName AS CustName, strReference AS Reference, decTotal AS Total FROM tblInvoiceDoc WHERE (bitHistoryTrans = 0) AND (dteJournalDate BETWEEN @StartDate AND @EndDate)'	
		ELSE IF @SelectedDocType = 1
			SET @query = 'SELECT strOrdDocID AS InvDocID, dteJournalDate AS JournalDate, dteRequired AS Required, strUserName AS UserName, strCustName AS CustName, strReference AS Reference, decTotal AS Total FROM tblOrderDoc WHERE (bitCleared = 0) AND (dteJournalDate BETWEEN @StartDate AND @EndDate) AND intDocType = 1'
		ELSE IF @SelectedDocType = 2
			SET @query = 'SELECT strOrdDocID AS InvDocID, dteJournalDate AS JournalDate, dteRequired AS Required, strUserName AS UserName, strCustName AS CustName, strReference AS Reference, decTotal AS Total FROM tblOrderDoc WHERE (bitCleared = 0) AND (dteJournalDate BETWEEN @StartDate AND @EndDate) AND intDocType = 2'
		ELSE IF @SelectedDocType = 3
		SET @query = 'SELECT strOrdDocID As InvDocID, dteJournalDate  AS JournalDate, dteRequired AS Required, strUserName AS UserName, ISNULL(strCustName,'''') AS CustName,strReference AS Reference, decTotal AS Total FROM tblOrderDocQ WHERE (bitCleared = 0) AND (dteJournalDate BETWEEN @StartDate AND @EndDate)'
			--SET @query = 'SELECT strOrdDocID, dteJournalDate, dteRequired, strUserName, ISNULL(strCustName,''), strReference, decTotal FROM tblOrderDocQ WHERE (bitCleared = 0) AND (dteJournalDate BETWEEN @SQStart AND @SQEnd)'
			
	END
	IF @SelectedStatus = 0
	BEGIN
		SET @query += ' AND (bitPrinted = 0)'
	END

	IF @CustomerName <> '' AND LEN(@CustomerName) > 0
	BEGIN
		SET @query += ' AND (strCustName = '''+@CustomerName+''')'
	END
	
	Set @ParameterDefinition =' @StartDate SMALLDATETIME, @EndDate AS SMALLDATETIME'			
	EXEC sp_Executesql @Query,@ParameterDefinition,@StartDate,@EndDate
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvoiceOrderDetailsForEmail]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvoiceOrderDetails] ***********/

/*********** Start [GetInvoiceOrderDetailsForEmail] ***********/
CREATE PROCEDURE [dbo].[GetInvoiceOrderDetailsForEmail]
(
	@SelectedDocType TINYINT,
	@SelectedStatus TINYINT,
	@StartDate SMALLDATETIME,
	@EndDate SMALLDATETIME,
	@CustomerName NVARCHAR(50)
)
AS
BEGIN
	DECLARE @query AS NVARCHAR(MAX)
	DECLARE @ParameterDefinition AS NVARCHAR(MAX) 

	IF @SelectedDocType >= 0
	BEGIN
		IF @SelectedDocType = 0
			SET @query = 'SELECT strInvDocID AS InvDocID, dteJournalDate AS JournalDate, dteRequired AS Required, strUserName AS UserName, strCustName AS CustName, strReference AS Reference, decTotal AS Total FROM tblInvoiceDoc WHERE (bitHistoryTrans = 0) AND (CONVERT(date,dteJournalDate) BETWEEN CONVERT(date,@StartDate) AND CONVERT(date,@EndDate))'	
		ELSE IF @SelectedDocType = 1
			SET @query = 'SELECT strOrdDocID AS InvDocID, dteJournalDate AS JournalDate, dteRequired AS Required, strUserName AS UserName, strCustName AS CustName, strReference AS Reference, decTotal AS Total FROM tblOrderDoc WHERE (bitCleared = 0) AND (CONVERT(date,dteJournalDate) BETWEEN CONVERT(date,@StartDate) AND CONVERT(date,@EndDate)) AND intDocType = 1'
		ELSE IF @SelectedDocType = 2
			SET @query = 'SELECT strOrdDocID AS InvDocID, dteJournalDate AS JournalDate, dteRequired AS Required, strUserName AS UserName, strCustName AS CustName, strReference AS Reference, decTotal AS Total FROM tblOrderDoc WHERE (bitCleared = 0) AND (CONVERT(date,dteJournalDate) BETWEEN CONVERT(date,@StartDate) AND CONVERT(date,@EndDate)) AND intDocType = 2'
			
	END
	IF @SelectedStatus = 0
	BEGIN
		SET @query += ' AND (bitEmailed = 0)'
	END

	IF @CustomerName <> '' AND LEN(@CustomerName) > 0
	BEGIN
		SET @query += ' AND (strCustName = '''+@CustomerName+''')'
	END
	
	Set @ParameterDefinition =' @StartDate SMALLDATETIME, @EndDate AS SMALLDATETIME'			
	EXEC sp_Executesql @Query,@ParameterDefinition,@StartDate,@EndDate
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvoiceOrderDocParcels]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [OrderInvoiceDocUpdate] ***********/

/*********** Start [GetInvoiceOrderDocParcels] ***********/
CREATE PROCEDURE [dbo].[GetInvoiceOrderDocParcels]
@DocNumber AS NVARCHAR(50),
@IsInvoice AS BIT	
AS
BEGIN
IF(@IsInvoice =1)
	(SELECT [strInvDocID] AS InvDocID
      ,[strWaybillNo] AS WaybillNo
      ,[strServiceType] AS ServiceType
      ,[decNoOfParcel] AS NoOfParcel
      ,[decMass] AS Mass
      ,[decHeight] AS Height
      ,[decLength] AS [Length]
      ,[decWidth] AS Width
	   FROM tblInvoiceDocParcels where strInvDocID=@DocNumber)
ELSE
	(SELECT [strOrdDocID] AS OrdDocID 
      ,[strWaybillNo] AS WaybillNo
      ,[strServiceType] AS ServiceType
      ,[decNoOfParcel] AS NoOfParcel
      ,[decMass] AS Mass
      ,[decHeight] AS Height
      ,[decLength] AS [Length]
      ,[decWidth] AS Width
  FROM tblOrderDocParcels where strOrdDocID=@DocNumber)
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvOnHand]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetInvOnHand]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetInvOnHand]
	@SQNumber Varchar(100),
	@SQLocation Varchar(20),
	@SQlngBinId bigInt
AS
BEGIN
	
	SET NOCOUNT ON;
	SELECT ISNULL(tblInvExtBin.decOnHand,0) FROM tblInvExtBin WHERE (tblInvExtBin.strPartNumber = @SQNumber) AND (tblInvExtBin.strLocName = @SQLocation) AND (tblInvExtBin.lngBinID = @SQlngBinId)
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvPriceData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetInvPriceData] (  
 @PartNumber VARCHAR(100)  
 ,@Pricelist VARCHAR(100)  
 ,@IsCustomerPricelist BIT  
 ,@SessionDate DATETIME  
 )  
AS  
BEGIN  
 IF (@IsCustomerPricelist = 1)  
  SELECT tblInvPrice.strPricelist AS Pricelist  
   ,tblInvPrice.decSelling AS Selling  
   ,CONVERT(DATE,tblPriceListsByDate.dteStartDate) AS StartDate  
   ,CONVERT(DATE,tblPriceListsByDate.dteFinishDate) AS EndDate  
   ,tblInvPrice.strUnit AS Unit  
   ,tblInvPrice.bitPromotionalPricing As IsPromotionalPrice 
   ,tblInvPrice.decPromotionalPrice  AS PromotionalPrice  
   ,CONVERT(DATE,tblInvPrice.dtePromotionalStartDate) AS PromotionalStartDate  
   ,CONVERT(DATE,tblInvPrice.dtePromotionalEndDate) AS PromotionalEndDate 
  FROM tblInvPrice  
  INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist  
   AND tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID  
  LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber  
   AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit  
   AND tblInvUOMs.bitInactive = 0  
  WHERE tblInvPrice.strPricelist = @Pricelist  
   AND tblInvPrice.strPartNumber = @PartNumber  
   AND (  
    @SessionDate BETWEEN tblPriceListsByDate.dteStartDate  
     AND tblPriceListsByDate.dteFinishDate  
    )  
   AND (  
    (  
     tblInvUOMs.strUseFor = 'Sales'  
     OR tblInvUOMs.strUseFor = 'Both'  
     )  
    OR tblInvPrice.bitStockUnit = 1  
    )  
  ORDER BY tblInvPrice.strPricelist  
   ,dteStartDate  
 ELSE  
  SELECT tblInvPrice.strPricelist AS Pricelist  
   ,tblInvPrice.decSelling AS Selling  
   ,CONVERT(DATE,tblPriceListsByDate.dteStartDate) AS StartDate  
   ,CONVERT(DATE,tblPriceListsByDate.dteFinishDate) AS EndDate  
   ,tblInvPrice.strUnit AS Unit 
    ,tblInvPrice.bitPromotionalPricing As IsPromotionalPricing 
   ,tblInvPrice.decPromotionalPrice  AS PromotionalPrice  
   ,CONVERT(DATE,tblInvPrice.dtePromotionalStartDate) AS PromotionalStartDate  
   ,CONVERT(DATE,tblInvPrice.dtePromotionalEndDate) AS PromotionalEndDate  
  FROM tblInvPrice  
  INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist  
   AND tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID  
  LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber  
   AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit  
   AND tblInvUOMs.bitInactive = 0  
  WHERE tblInvPrice.strPartNumber = @PartNumber  
   AND (  
    @SessionDate BETWEEN tblPriceListsByDate.dteStartDate  
     AND tblPriceListsByDate.dteFinishDate  
    )  
   AND (  
    (  
     tblInvUOMs.strUseFor = 'Sales'  
     OR tblInvUOMs.strUseFor = 'Both'  
     )  
    OR tblInvPrice.bitStockUnit = 1  
    )  
  ORDER BY tblInvPrice.strPricelist  
   ,dteStartDate  
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvSerialExt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetInvSerialExt]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetInvSerialExt]
	@strPartNumber nvarchar(100),
	@strSerialNumber nvarchar(200) ,
	@strLocName nvarchar(20)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	SET NOCOUNT ON;

	SELECT 
	   [strPartNumber] AS PartNumber
      ,[strSerialNumber] AS SerialNumber
      ,[strLocName] AS LocationName
      ,[decQty] AS Quantity
      ,[intStatus] AS [Status]
      ,[strDocID] AS DocID
      ,[dteUpdatedDate] AS UpdatedDate
      ,[bitDimensionExist] AS IsDimensionExist
      ,[strDimension] AS Dimension
      ,[lngBinID] AS BinID
	   FROM tblInvSerialExt WHERE decQty > 0 AND strPartNumber = @strPartNumber AND strSerialNumber = @strSerialNumber AND strLocName = @strLocName
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvSerialType]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInvSerialType]
(
	@PartNumber AS NVARCHAR(100)
)
AS
BEGIN
	SELECT ISNULL(tblInvSerialTypes.intType,0) FROM tblInv (NOLOCK) INNER JOIN tblInvSerialTypes (NOLOCK) ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType WHERE tblInv.strPartNumber = @PartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvSerialTypeData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInvSerialTypeData] (
	@PartNumber AS NVARCHAR(100)
	,@Quantity AS MONEY
	,@IsDimension AS BIT
	)
AS
BEGIN
	SELECT tblInv.bitInvSerialType AS IsInvSerialType
		,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
		,ISNULL(tblInvSerialTypes.intMin, 0) AS [Min]
		,ISNULL(tblInvSerialTypes.intMax, 0) AS [Max]
		,ISNULL(tblInvSerialTypes.intFormat, 0) AS [Format]
		,ISNULL(tblInvSerialTypes.intType, 0) AS [Type]
		,ISNULL(tblInvSerialTypes.intExpiryDateAuthDA, 0) AS ExpiryDateAuthDA
		,ISNULL(tblInvSerialTypes.bitTrackExpiryDate, 0) AS IsTrackExpiryDate
		,
		--ADDED
		ISNULL(tblInvSerialTypes.bitTrackExpiryDate, 0) AS IsExpiryDate
		,CASE 
			WHEN (@Quantity < 0)
				THEN ISNULL(tblInvSerialTypes.intExpiryDateAuthCN, 0)
			ELSE ISNULL(tblInvSerialTypes.intExpiryDateAuthSI, 0)
			END AS ExpiryDateAuth
		,ISNULL(tblInvSerialTypes.strInvSerialType, '') AS InvSerialType
		,CASE 
			WHEN (@IsDimension = 1)
				THEN ISNULL(tblInvSerialTypes.strDimProCode, '')
			ELSE ''
			END AS DimProCode
		,CAST((
				CASE 
					WHEN (@IsDimension = 1)
						THEN ISNULL(tblInvSerialTypes.bitDPSingleSN, 0)
					ELSE 0
					END
				) AS BIT) AS IsDPSingleSN
		,ISNULL(tblInvSerialTypes.bitAutoCreateLotNumber, 0) AS IsAutoCreateLotNumber
		,ISNULL(tblInvSerialTypes.intLotNumberStartsFrom, 0) AS LotNumberStartsFrom
		,ISNULL(tblInvSerialTypes.intDaysExpire, 0) AS DaysExpire
		,ISNULL(tblInvSerialTypes.intNextLotNumber, 0) AS NextLotNumber
	FROM tblInv
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblInv.strPartNumber = @PartNumber
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvStockData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------'
CREATE PROCEDURE [dbo].[GetInvStockData]
(
	@PartNumber AS VARCHAR(100),
	@UserName AS VARCHAR(40)
)
AS
BEGIN
	SELECT tblInvLoc.strLocName AS LocName
		,tblInvLoc.strDesc AS LocDesc
		,tblInvExt.decAvail AS Avail
		,tblInvExt.decAlloc AS Alloc
		,tblInvExt.decManuf As Manuf
		,tblInvExt.decOnHand AS OnHand
		,tblInvExt.decOnOrder As OnOrder
		,tblInvExt.decValue AS Value
		,tblInvLoc.intType AS LocType
		,ISNULL((SELECT COUNT(tblInvLocSec.strLocName) FROM tblInvLocSec WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName), 0) AS LocSecCount
		,ISNULL(tblInvLocSec.strUserName, '') AS UserName
		,(
		SELECT SUM(QTY)
		FROM (
			SELECT (ISNULL(SUM(DT.decQtyRemaining), 0) * -1) AS QTY
			FROM tblInvTrfOrdDoc DOC
			INNER JOIN tblInvTrfOrdDocDT DT ON DOC.strInvTrfOrdDocID = DT.strInvTrfOrdDocID
			WHERE DOC.bitCleared = 0
				AND DOC.strLocName = tblInvLoc.strLocName
				AND DT.strPartNumber = @PartNumber
			
			UNION ALL
			
			SELECT ISNULL(SUM(DT.decQtyRemaining), 0) AS QTY
			FROM tblInvTrfOrdDoc DOC
			INNER JOIN tblInvTrfOrdDocDT DT ON DOC.strInvTrfOrdDocID = DT.strInvTrfOrdDocID
			WHERE DOC.bitCleared = 0
				AND DOC.strToLocName = tblInvLoc.strLocName
				AND DT.strPartNumber = @PartNumber
			) AS Result1
		) AS [TransferOrder]
	,(
		SELECT SUM(QTY)
		FROM (
			SELECT (ISNULL(SUM(DT.decQty), 0) *-1) AS QTY
			FROM tblInvTrfDoc DOC
			INNER JOIN tblInvTrfDocDT DT ON DOC.strTrfDocID = DT.strTrfDocID
			WHERE bitWarehouseTrf = 1
				AND bitCleared = 0
				AND strFromLoc = tblInvLoc.strLocName
				AND DT.strPartNumber = @PartNumber
			
			UNION ALL
			
			SELECT ISNULL(SUM(DT.decQty), 0) AS QTY
			FROM tblInvTrfDoc DOC
			INNER JOIN tblInvTrfDocDT DT ON DOC.strTrfDocID = DT.strTrfDocID
			WHERE bitWarehouseTrf = 1
				AND bitCleared = 0
				AND strToLoc = tblInvLoc.strLocName
				AND DT.strPartNumber = @PartNumber
			) AS Result2
		) AS [GoodsInTransit]
	FROM tblInvExt
	INNER JOIN tblInvLoc ON tblInvExt.strLocName = tblInvLoc.strLocName
	LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName AND tblInvLocSec.strUserName = @UserName
	WHERE (tblInvExt.strPartNumber = @PartNumber) AND (tblInvExt.bitInactive = 0)
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvTrackingBinDataSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInvTrackingBinDataSales]
@DocNumber AS NVARCHAR(50)
AS
BEGIN	
SELECT tblInvTrackingDT.strPartNumber AS PartNumber
	,tblInvTrackingDT.strLocName AS LocName
	,tblInvTrackingDTBin.decQty AS Qty
	,tblInvTrackingDT.intLineNo AS [LineNo]
	,tblInvTrackingDTBin.lngBinId AS BinId
FROM tblInvTrackingDTBin
INNER JOIN tblInvTrackingDT ON tblInvTrackingDTBin.lngInvTrackId = tblInvTrackingDT.lngInvTrackID
	AND tblInvTrackingDTBin.intLineNo = tblInvTrackingDT.intLineNo AND tblInvTrackingDTBin.intMainLineNo = tblInvTrackingDT.intMainLineNo
INNER JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
INNER JOIN tblInvoiceDoc ON tblInvoiceDoc.lngInvTrackID = tblInvTracking.lngInvTrackID
WHERE tblInvoiceDoc.strInvDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvTrackingDataCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetInvTrackingDataCount]
AS
BEGIN
	SELECT Count(tblInvExt.strPartNumber) FROM tblInvExt LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber LEFT JOIN tblInvTrackingDT ON tblInvExt.strPartNumber = tblInvTrackingDT.strPartNumber AND tblInvExt.strLocName = tblInvTrackingDT.strLocName WHERE tblInv.intType <> 4 AND tblInv.intType <> 11 AND tblInvTrackingDT.bitService = 0 GROUP BY tblInvExt.strPartNumber, tblInvExt.strLocName, tblInvExt.decValue, tblInvExt.decOnHand, tblInvExt.decOpenQty, tblInvExt.decOpenValue HAVING ((tblInvExt.decValue - tblInvExt.decOpenValue) <> ISNULL(SUM(tblInvTrackingDT.decValue),0)) OR ((tblInvExt.decOnHand - tblInvExt.decOpenQty) <> ISNULL(SUM(tblInvTrackingDT.decQty),0))
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvTrackingDTBinData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetOrderDocDADTBin] ***********/

/*********** Start [GetInvTrackingDTBinData] ***********/
CREATE PROCEDURE [dbo].[GetInvTrackingDTBinData]
@DocNumber AS NVARCHAR(50)
AS
BEGIN	
SELECT tblInvTrackingDT.strPartNumber AS PartNumber
	,tblInvTrackingDT.strLocName AS LocName
	,tblInvTrackingDTBin.decQty AS Qty
	,tblInvTrackingDT.intLineNo AS [LineNo]
	,tblInvTrackingDTBin.lngBinId AS BinId
FROM tblInvTrackingDTBin
--INNER JOIN tblInvTrackingDT ON tblInvTrackingDTBin.lngInvTrackId = tblInvTrackingDT.lngInvTrackID
--	AND tblInvTrackingDTBin.intLineNo = tblInvTrackingDT.intLineNo
--INNER JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
--	AND SIGN(tblInvTrackingDTBin.decQty) = SIGN(tblInvTrackingDT.decQty)
--INNER JOIN tblPickTickets ON tblPickTickets.lngInvTrackID = tblInvTracking.lngInvTrackID
--WHERE tblPickTickets.strPkTkDocID = @DocNumber
INNER JOIN tblInvTrackingDT ON tblInvTrackingDTBin.lngInvTrackId = tblInvTrackingDT.lngInvTrackID AND tblInvTrackingDTBin.intLineNo = tblInvTrackingDT.intLineNo AND tblInvTrackingDTBin.intMainLineNo = tblInvTrackingDT.intMainLineNo
INNER JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID 
INNER JOIN tblOrderDocDA ON tblOrderDocDA.lngInvTrackID = tblInvTracking.lngInvTrackID
WHERE tblOrderDocDA.strOrdDADocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvTrackingDTBinDataConvert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetInvTrackingDTBinDataConvert] ***********/
CREATE PROCEDURE [dbo].[GetInvTrackingDTBinDataConvert]
@DocNumber AS NVARCHAR(50)
AS
BEGIN
SELECT tblInvTrackingDT.strPartNumber AS PartNumber
	,tblInvTrackingDT.strLocName AS LocName
	,tblInvTrackingDTBin.decQty AS Qty
	,tblInvTrackingDT.intLineNo AS [LineNo]
	,tblInvTrackingDTBin.lngBinId AS BinId
FROM tblInvTrackingDTBin
INNER JOIN tblInvTrackingDT ON tblInvTrackingDTBin.lngInvTrackId = tblInvTrackingDT.lngInvTrackID
	AND tblInvTrackingDTBin.intLineNo = tblInvTrackingDT.intLineNo
	AND  tblInvTrackingDTBin.intMainLineNo = tblInvTrackingDT.intMainLineNo  
INNER JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
INNER JOIN tblOrderDocDA ON tblOrderDocDA.lngInvTrackID = tblInvTracking.lngInvTrackID
WHERE tblOrderDocDA.strOrdDADocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvTypeByItemAndLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetInvTypeByItemAndLocation]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetInvTypeByItemAndLocation]
	-- Add the parameters for the stored procedure here
	@PartNumber nvarchar(50),
	@LocationName nvarchar(50)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT intType FROM fnTblInvForLocJoin() tblInv LEFT JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocName LEFT JOIN tblAccountSets ON  tblInvExt.strAcctSet = tblAccountSets.strAcctSet 
	WHERE tblInv.strPartNumber = @PartNumber AND (tblInv.strLocName = @LocationName OR tblInv.strLocName IS NULL)
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvTypeForBOM]    Script Date: 07-11-2019 10:38:47 ******/
CREATE PROCEDURE [dbo].[GetInvTypeForBOM] (
	@PartNumber AS NVARCHAR(100)
	,@Location AS NVARCHAR(100)
	)
AS
BEGIN
	SELECT intType AS [Type]
		,bitAutoBuild AS [AutoBuild]
		,bitAutoBuildSameLoc AS [IsAutoBuildSameLoc]
		,bitAllowAdjustKitCompOnDoc AS [IsAllowAdjustKitCompOnDoc]
	FROM fnTblInvForLocJoin() tblInv
	WHERE (
			tblInv.strPartNumber = @PartNumber
			OR tblInv.strBarCode = @PartNumber
			OR tblInv.strBarCode2 = @PartNumber
			)
		AND (
			tblInv.strLocName = @Location
			OR tblInv.strLocName IS NULL
			)
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvUpsellData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetPartItemNumber] ***********/

/*********** Start [GetInvUpsellData] ***********/
CREATE PROCEDURE [dbo].[GetInvUpsellData]
(
	@PartNumbers VARCHAR(MAX),
	@IsInvoiceCredit AS BIT,
	@IsSalesOrder AS BIT,
	@IsSaleQuote AS BIT,
	@QuantityUpsell AS MONEY,
	@IsSalesLayby AS BIT=0
)
AS
BEGIN	
	SELECT tblInvUpsell.strPartItemNumber AS PartNumber
	,tblInv.strDesc AS PartDescription
	,tblInvUpSell.intQtyToUse AS QtyToUse
	,tblInvUpSell.bitUseProportionateQty AS IsUseProportionateQty,
	CASE WHEN (tblInvUpSell.bitUseProportionateQty = 1)
    THEN tblInvUpSell.intQtyToUse * @QuantityUpsell	
	ELSE tblInvUpSell.intQtyToUse END
 FROM tblInvUpsell
LEFT JOIN tblInv ON tblInvUpsell.strPartItemNumber = tblInv.strPartNumber
WHERE tblInvUpSell.strPartNumber = @PartNumbers
	AND (
		@IsInvoiceCredit = 0
		OR bitSalesInvoice = 1
		)
	AND (
		@IsSalesOrder = 0
		OR bitSalesOrder = 1
		)
	AND (
		@IsSaleQuote = 0
		OR bitSalesQuote = 1
		)
	AND (
		@IsSalesLayby = 0
		OR bitSalesLayby = 1
		)
ORDER BY tblInvUpsell.strPartItemNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvUpsellItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetMinimumJournalDate] ***********/

/*********** Start [GetInvUpsellItems] ***********/
CREATE PROCEDURE [dbo].[GetInvUpsellItems]
(
	@PartNumbers AS VARCHAR(MAX),
	@CustomerName AS NVARCHAR(50)
)
AS
BEGIN	
SELECT tblInvUpsell.strPartItemNumber AS PartNumber
	,tblInv.strDesc AS PartDescription
	,tblInvUpSell.intQtyToUse AS QtyToUse
	,tblInvPrice.decSelling AS Selling
	,tblInvUpSell.bitUseProportionateQty AS IsUseProportionateQty
FROM tblInvUpsell
LEFT JOIN tblInv ON tblInvUpsell.strPartItemNumber = tblInv.strPartNumber
LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
WHERE tblInvUpSell.strPartNumber = @PartNumbers
	AND (
		tblInvPrice.strPricelist IN (
			SELECT strPriceList
			FROM tblCustomers
			WHERE strCustName = @CustomerName
			)
		)
	AND bitSalesInvoice = 1
ORDER BY tblInvUpsell.strPartItemNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvUpsellItemsForPOS]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetInvUpsellItemsForPOS]
(
	@PartNumbers AS VARCHAR(MAX),
	@CustomerName AS NVARCHAR(50)
)
AS
BEGIN	
	SELECT tblInvUpsell.strPartItemNumber AS PartNumber, 
        tblInv.strDesc AS PartDescription,
        tblInvUpSell.intQtyToUse AS QtyToUse,
        tblInvUpSell.bitUseProportionateQty AS IsUseProportionateQty
	 FROM tblInvUpsell LEFT OUTER JOIN tblInv ON tblInvUpsell.strPartItemNumber = tblInv.strPartNumber 
	 WHERE tblInvUpSell.strPartNumber = @PartNumbers and  bitPOS = 1 
	 ORDER BY tblInvUpsell.strPartItemNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvUpsellList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetOrderDocQDTData] ***********/

/*********** Start [GetInvUpsellList] ***********/
CREATE PROCEDURE [dbo].[GetInvUpsellList]
(
	@PartNumbers VARCHAR(50)	
)
AS
BEGIN
	SELECT tblInvUpsell.strPartItemNumber AS PartNumber
	,tblInv.strDesc AS PartDescription
	,tblInvUpSell.intQtyToUse AS QtyToUse 
	,tblInvUpSell.bitUseProportionateQty AS IsUseProportionateQty	
FROM tblInvUpsell
LEFT JOIN tblInv ON tblInvUpsell.strPartItemNumber = tblInv.strPartNumber
WHERE tblInvUpSell.strPartNumber = @PartNumbers
	AND bitFreehandQuote = 1
ORDER BY tblInvUpsell.strPartItemNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvValues]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [dbo].[GetInvValues] ***********/
CREATE PROCEDURE [dbo].[GetInvValues]
AS
BEGIN
	SELECT tblInv.decLastPPUnit as LastPPUnit,
	       tblInv.decBuyToStock as BuyToStock ,
	       tblInvExt.decValue As Value,
	       tblInvExt.decOnHand AS OnHand,
		   tblInv.strBarCode as BarCode,
		   tblInv.strBarCode2 as BarCode2,
		   tblInv.strPartNumber as PartNumber,
		   tblInvExt.strLocName as Location
	FROM tblInv
	INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
	--AND tblInvExt.strLocName = @Location
	--WHERE (tblInv.strPartNumber = @PartNumber
	--       OR tblInv.strBarCode = @BarCode
	--       OR tblInv.strBarCode2 = @BarCode)
	  WHERE tblInv.intType = 1
END

GO
/****** Object:  StoredProcedure [dbo].[GetInvValuesFromType]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetInvValuesFromType] ***********/
CREATE PROCEDURE [dbo].[GetInvValuesFromType]
(
	@Type int
)
AS
BEGIN
	SELECT tblInv.decLastPPUnit as LastPPUnit,
	       tblInv.decBuyToStock as BuyToStock ,
	       tblInvExt.decValue As Value,
	       tblInvExt.decOnHand AS OnHand,
		   tblInv.strBarCode as BarCode,
		   tblInv.strBarCode2 as BarCode2,
		   tblInv.strPartNumber as PartNumber,
		   tblInvExt.strLocName as Location
	FROM tblInv
	INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
	--AND tblInvExt.strLocName = @Location
	--WHERE (tblInv.strPartNumber = @PartNumber
	--       OR tblInv.strBarCode = @BarCode
	--       OR tblInv.strBarCode2 = @BarCode)
	  WHERE tblInv.intType = @Type
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvVendorList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInventoryCategory] ***********/

/*********** Start [GetInvVendorList] ***********/
CREATE PROCEDURE [dbo].[GetInvVendorList]
AS
BEGIN
	SELECT DISTINCT strVendName AS VendorName, (SELECT strVendDesc FROM tblVendors WHERE strVendName = tblInvVend.strVendName) AS Description FROM tblInvVend ORDER BY strVendName
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvVendors]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetInvVendors]
(
  @SQPart VARCHAR(50),
  @SQUnit VARCHAR(200)
)
AS
BEGIN

	SELECT tblVendors.strVendName, tblVendors.strVendDesc, strItemCode, strItemDesc, intWarrantyDays, decPrice, decLocalPrice, decDiscPerc,
	 decLandedCostFactor AS 'LandedCostfactor', bitPreferred  AS Preferred, lngID
	, cast(tblInvVendPriceListsByDate.uidPriceBasedID as NVARCHAR(500)) as uidPriceBasedID,dteStartDate,dteFinishDate
	 ,strUnit as Unit 
	 FROM tblInvVend INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName 
	 Inner join tblInvVendPriceListsByDate on tblInvVend.strVendName=tblInvVendPriceListsByDate.strVendName and tblInvVend.uidPriceBasedID=tblInvVendPriceListsByDate.uidPriceBasedID
	  WHERE strPartNumber = @SQPart and strUnit = @SQUnit 
	  ORDER BY tblInvVend.strVendName

END
GO

/****** Object:  StoredProcedure [dbo].[GetISCatSetting]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetOverDueAmountSales] ***********/

/*********** Start [GetISCatSetting] ***********/
CREATE PROCEDURE [dbo].[GetISCatSetting]
(
	@CustomerName VARCHAR(50)
)
AS
BEGIN
	SELECT strInstallSaleFC as InstallSaleFC, strInstallSaleTaxCode as InstallSaleTaxCode, decISDefDep ISDefDep, decISDefIns ISDefIns, decISDefFinChrge ISDefFinChrge, decArrPenalty ArrPenalty,strCustCategory CustCategory  FROM tblcustomercat " & "WHERE strCustCategory = (SELECT strCustCategory FROM tblcustomers " & "WHERE strCustname  = @CustomerName)
END
GO
/****** Object:  StoredProcedure [dbo].[GetIssuedTickets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------
CREATE PROCEDURE  [dbo].[GetIssuedTickets]

(

	@DocumentIds VARCHAR(MAX),

	@Location VARCHAR(100)

)

AS

BEGIN



	SELECT t1.strOrdDocID AS DocumentNumber

		,t2.strPkTkDocID AS PickTicketID

		,t1.dteJournalDate AS JournalDate

		,t1.dteRequired AS [Required]

		,t1.strUserName AS UserName

		,t1.strCustName AS CustomerName

		,t1.strReference AS Reference

		,t2.strLocation AS Location

		,t2.decQty AS Quantity

		,t2.decQtyPicked AS QuantityPicked

		,t2.decQty - t2.decQtyPicked AS QuantityRemain

		,CAST(IIF ( t2.decQty <> t2.decQtyPicked, 1, 0 ) AS BIT) AS IsPicked



		--,CASE WHEN t2.decQty <> t2.decQtyPicked Then 1 Else 0 End AS IsPicked

	FROM tblPickTickets t1 

	LEFT JOIN tblPickTicketsDT t2 ON t1.strPkTkDocID = t2.strPkTkDocID 

	--WHERE (t1.strOrdDocID IN (SELECT * FROM fnSplitStringAsTable(@DocumentIds, ',')) AND (t2.strLocation LIKE @Location))

	where (t1.strOrdDocID IN (SELECT * FROM fnSplitStringAsTable(@DocumentIds, ',')) AND (t2.strLocation LIKE @Location) AND t2.strPartNumber in (
                     select strPartNumber from tblOrderDocDT Where strOrdDocID In (select strOrdDocID from tblOrderDoc Where strOrdDocID in (SELECT * FROM fnSplitStringAsTable(@DocumentIds, ',')))))

END

GO
/****** Object:  StoredProcedure [dbo].[GetItemBOMSelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetItemBOMSelectAll]    Script Date: 07-11-2019 10:38:47 ******/
CREATE PROCEDURE [dbo].[GetItemBOMSelectAll] @PartNumber NVARCHAR(50) = NULL
	,@LocName NVARCHAR(50) = NULL
	,@DocId NVARCHAR(100) = NULL
	,@DocType NVARCHAR(50) = NULL
	,@LineNo INT = NULL
	,@GPCalcLPP AS INT = 0
	,@GPCalcInvLevel AS INT = 0
	,@Pricelist AS NVARCHAR(50) = NULL
	,@DocDate AS DATETIME
AS
BEGIN
	IF @DocId IS NULL
	BEGIN
		SELECT tblInvBOM.strPartNumber AS [PartNumber]
			,tblInv1.strDesc AS [Desc]
			,'' AS [DocId]
			,tblInvExtBin.lngBinId AS [BinIdLong]
			,0 AS [LineNo]
			,intQtyToUse AS [Qty]
			,strPartItemNumber AS [PartItemNumber]
			,tblInv2.strDesc AS [ItemPartNumberDesc]
			,strBinCode AS [BinCode]
			,0 AS [MainLineNo]
			,tblInvSerialTypes.bitDimensionExist AS [IsDimension]
			,tblInv2.strStockUnit AS [Unit]
			,tblInv2.decSellFromStock AS [SellFromStock]
			,tblInv2.intType AS [Type]
			,tblInv2.bitInvSerialType AS [IsInventorySerial]
			,(
				CASE 
					WHEN (tblInv1.bitAutoBuildSameLoc) = 1
						THEN @LocName
					ELSE tblInvBOM.strLocName
					END
				) AS [LocName]
			,(tblInv1.bitAutoBuildSameLoc) AS [IsAutoBuildSameLoc]
			,ISNULL(tblInvBOM.intQtyToUse, 1) AS [BOMQty]
			,tblInv2.strUnitOfMeasure AS [UOM]
			,CASE 
				WHEN tblInv2.intType = 4
					THEN tblInv2.decStandardCost
				ELSE CASE @GPCalcLPP
						WHEN 0
							THEN tblInv2.decLastPPUnit
						WHEN 1
							THEN tblInv2.decStandardCost
						WHEN 2
							THEN CASE @GPCalcInvLevel
									WHEN 0
										THEN CASE 
												WHEN tblInv2.decLastPPUnit > ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt(NOLOCK) EXT
															WHERE EXT.strPartNumber = tblInv2.strPartNumber
																AND EXT.strLocName = @LocName
															), 0)
													THEN tblInv2.decLastPPUnit
												ELSE CASE 
														WHEN tblInv2.decLastPPUnit < ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt(NOLOCK) EXT
																	WHERE EXT.strPartNumber = tblInv2.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0)
															THEN ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt(NOLOCK) EXT
																		WHERE EXT.strPartNumber = tblInv2.strPartNumber
																			AND EXT.strLocName = @LocName
																		), 0)
														ELSE CASE 
																WHEN ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt(NOLOCK) EXT
																			WHERE EXT.strPartNumber = tblInv2.strPartNumber
																				AND EXT.strLocName = @LocName
																			), 0) = 0
																	THEN tblInv2.decLastPPUnit
																ELSE ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt(NOLOCK) EXT
																			WHERE EXT.strPartNumber = tblInv2.strPartNumber
																				AND EXT.strLocName = @LocName
																			), 0)
																END
														END
												END
									WHEN 1
										THEN CASE 
												WHEN tblInv2.decLastPPUnit > ISNULL((
															CASE tblInv2.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv2.decSumValue / tblInv2.decSumOnHand
																END
															), 0)
													THEN tblInv2.decLastPPUnit
												ELSE CASE 
														WHEN tblInv2.decLastPPUnit < ISNULL((
																	CASE tblInv2.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv2.decSumValue / tblInv2.decSumOnHand
																		END
																	), 0)
															THEN ISNULL((
																		CASE tblInv2.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv2.decSumValue / tblInv2.decSumOnHand
																			END
																		), 0)
														ELSE CASE 
																WHEN CASE tblInv2.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv2.decSumValue / tblInv2.decSumOnHand
																		END = 0
																	THEN tblInv2.decLastPPUnit
																ELSE ISNULL((
																			CASE tblInv2.decSumOnHand
																				WHEN 0
																					THEN 0
																				ELSE tblInv2.decSumValue / tblInv2.decSumOnHand
																				END
																			), 0)
																END
														END
												END
									ELSE tblInv2.decLastPPUnit
									END
						WHEN 3
							THEN CASE @GPCalcInvLevel
									WHEN 0
										THEN CASE 
												WHEN ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt(NOLOCK) EXT
															WHERE EXT.strPartNumber = tblInv2.strPartNumber
																AND EXT.strLocName = @LocName
															), 0) = 0
													THEN tblInv2.decLastPPUnit
												ELSE ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt(NOLOCK) EXT
															WHERE EXT.strPartNumber = tblInv2.strPartNumber
																AND EXT.strLocName = @LocName
															), 0)
												END
									WHEN 1
										THEN CASE 
												WHEN CASE tblInv2.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv2.decSumValue / tblInv2.decSumOnHand
														END = 0
													THEN tblInv2.decLastPPUnit
												ELSE ISNULL((
															CASE tblInv2.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv2.decSumValue / tblInv2.decSumOnHand
																END
															), 0)
												END
									ELSE tblInv2.decLastPPUnit
									END
						ELSE tblInv2.decLastPPUnit
						END
				END AS GLCalc
			,ISNULL(PRICE.decSelling, 0) AS [Selling]
			,tblinv1.intType AS 'Type'
		--strLocName=tblInvExtBin.strLocName              
		FROM [dbo].[tblInvBOM](NOLOCK)
		INNER JOIN tblInv(NOLOCK) tblInv1 ON tblInv1.strPartNumber = [tblInvBOM].strPartNumber
		INNER JOIN tblInv(NOLOCK) tblInv2 ON tblInv2.strPartNumber = strPartItemNumber
		INNER JOIN tblInvExtBin(NOLOCK) ON tblInv2.strPartNumber = tblInvExtBin.strPartNumber
			AND tblInvExtBin.strLocName = CASE 
				WHEN (tblInv1.bitAutoBuildSameLoc) = 1
					THEN @LocName
				ELSE tblInvBOM.strLocName
				END
			AND tblInvExtBin.bitDefault = 1
		INNER JOIN tblInvLocBin(NOLOCK) ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
		--LEFT JOIN tblInvPrice ON tblInv2.strPartNumber = tblInvPrice.strPartNumber
		--	AND (
		--		tblInvPrice.strPricelist = @Pricelist
		--		OR tblInvPrice.strPricelist IS NULL
		--		)
		--LEFT JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist
		LEFT OUTER JOIN (
			SELECT tblInvPrice.strPartNumber
				,tblInvPrice.decSelling
			FROM tblInvPrice(NOLOCK)
			INNER JOIN tblPriceListsByDate(NOLOCK) ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
			WHERE (
					tblInvPrice.strPricelist = @Pricelist
					OR tblInvPrice.strPricelist IS NULL
					)
				AND (
					@DocDate BETWEEN tblPriceListsByDate.dteStartDate
						AND tblPriceListsByDate.dteFinishDate
					)
			) PRICE ON tblInv2.strPartNumber = PRICE.strPartNumber
		LEFT JOIN tblInvSerialTypes(NOLOCK) ON tblInv2.strInvSerialType = tblInvSerialTypes.strInvSerialType
		WHERE tblInvBOM.strPartNumber = @PartNumber
	END
	ELSE
	BEGIN
		IF @DocType = 'SI'
			OR @DocType = 'CN'
		BEGIN
			SELECT tblInvoiceDocDT.strPartNumber AS [PartNumber]
				,tblInvoiceDocDT.strPartDesc AS [Desc]
				,tblInvoiceDocDT.strInvDocID AS [DocId]
				,lngBinId AS [BinIdLong]
				,tblInvoiceDocDTBOM.intLineNo AS [LineNo]
				,tblInvoiceDocDTBOM.decQty AS [Qty]
				,tblInvoiceDocDTBOM.strPartItemNumber AS [PartItemNumber]
				,strBinCode AS [BinCode]
				,tblInv.strDesc AS [ItemPartNumberDesc]
				,intMainLineNo AS [MainLineNo]
				,tblInvLocBin.strLocName AS [LocName]
				,cast(0 AS BIT) AS [IsAutoBuildSameLoc]
				,ISNULL([tblInvoiceDocDTBOM].decBOMQty, tblInvBOM.intQtyToUse) AS [BOMQty]
				,tblInv.strUnitOfMeasure AS [UOM]
				,tblInvSerialTypes.bitDimensionExist AS [IsDimension]
				,tblInv.strStockUnit AS [Unit]
				,tblInv.decSellFromStock AS [SellFromStock]
				,tblInv.intType AS [Type] 
				,tblInv.bitInvSerialType AS [IsInventorySerial]
				,CASE 
					WHEN tblInv.intType = 4
						THEN tblInv.decStandardCost
					ELSE CASE @GPCalcLPP
							WHEN 0
								THEN tblInv.decLastPPUnit
							WHEN 1
								THEN tblInv.decStandardCost
							WHEN 2
								THEN CASE @GPCalcInvLevel
										WHEN 0
											THEN CASE 
													WHEN tblInv.decLastPPUnit > ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt(NOLOCK) EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
														THEN tblInv.decLastPPUnit
													ELSE CASE 
															WHEN tblInv.decLastPPUnit < ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt(NOLOCK) EXT
																		WHERE EXT.strPartNumber = tblInv.strPartNumber
																			AND EXT.strLocName = @LocName
																		), 0)
																THEN ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt(NOLOCK) EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = @LocName
																			), 0)
															ELSE CASE 
																	WHEN ISNULL((
																				SELECT CASE EXT.decOnHand
																						WHEN 0
																							THEN 0
																						ELSE EXT.decValue / EXT.decOnHand
																						END
																				FROM tblInvExt(NOLOCK) EXT
																				WHERE EXT.strPartNumber = tblInv.strPartNumber
																					AND EXT.strLocName = @LocName
																				), 0) = 0
																		THEN tblInv.decLastPPUnit
																	ELSE ISNULL((
																				SELECT CASE EXT.decOnHand
																						WHEN 0
																							THEN 0
																						ELSE EXT.decValue / EXT.decOnHand
																						END
																				FROM tblInvExt(NOLOCK) EXT
																				WHERE EXT.strPartNumber = tblInv.strPartNumber
																					AND EXT.strLocName = @LocName
																				), 0)
																	END
															END
													END
										WHEN 1
											THEN CASE 
													WHEN tblInv.decLastPPUnit > ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
														THEN tblInv.decLastPPUnit
													ELSE CASE 
															WHEN tblInv.decLastPPUnit < ISNULL((
																		CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END
																		), 0)
																THEN ISNULL((
																			CASE tblInv.decSumOnHand
																				WHEN 0
																					THEN 0
																				ELSE tblInv.decSumValue / tblInv.decSumOnHand
																				END
																			), 0)
															ELSE CASE 
																	WHEN CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END = 0
																		THEN tblInv.decLastPPUnit
																	ELSE ISNULL((
																				CASE tblInv.decSumOnHand
																					WHEN 0
																						THEN 0
																					ELSE tblInv.decSumValue / tblInv.decSumOnHand
																					END
																				), 0)
																	END
															END
													END
										ELSE tblInv.decLastPPUnit
										END
							WHEN 3
								THEN CASE @GPCalcInvLevel
										WHEN 0
											THEN CASE 
													WHEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt(NOLOCK) EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0) = 0
														THEN tblInv.decLastPPUnit
													ELSE ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt(NOLOCK) EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
													END
										WHEN 1
											THEN CASE 
													WHEN CASE tblInv.decSumOnHand
															WHEN 0
																THEN 0
															ELSE tblInv.decSumValue / tblInv.decSumOnHand
															END = 0
														THEN tblInv.decLastPPUnit
													ELSE ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
													END
										ELSE tblInv.decLastPPUnit
										END
							ELSE tblInv.decLastPPUnit
							END
					END AS GLCalc
				,ISNULL([tblInvoiceDocDTBOM].decGLCalc, ISNULL(PRICE.decSelling, 0)) AS [Selling]
				,tblinv.intType AS 'Type'
			FROM [dbo].[tblInvoiceDocDTBOM](NOLOCK)
			INNER JOIN tblInvoiceDocDT(NOLOCK) ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTBOM.strInvDocID
				AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTBOM.intMainLineNo
			INNER JOIN tblInv(NOLOCK) ON tblInv.strPartNumber = tblInvoiceDocDTBOM.strPartItemNumber
			INNER JOIN tblInv(NOLOCK) tblInv2 ON tblInv2.strPartNumber = tblInvoiceDocDT.strPartNumber
			LEFT JOIN tblInvBOM(NOLOCK) ON tblInvBOM.strPartNumber = tblInv2.strPartNumber
				AND tblInvBOM.strPartItemNumber = [tblInvoiceDocDTBOM].strPartItemNumber
				AND [tblInvoiceDocDTBOM].decBOMQty IS NULL
			INNER JOIN tblInvLocBin(NOLOCK) ON tblInvoiceDocDTBOM.lngBinId = tblInvLocBin.lngID
			LEFT OUTER JOIN (
				SELECT tblInvPrice.strPartNumber
					,tblInvPrice.decSelling
				FROM tblInvPrice(NOLOCK)
				INNER JOIN tblPriceListsByDate(NOLOCK) ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
				WHERE (
						tblInvPrice.strPricelist = @Pricelist
						OR tblInvPrice.strPricelist IS NULL
						)
					AND (
						@DocDate BETWEEN tblPriceListsByDate.dteStartDate
							AND tblPriceListsByDate.dteFinishDate
						)
				) PRICE ON tblInv.strPartNumber = PRICE.strPartNumber
			LEFT JOIN tblInvSerialTypes(NOLOCK) ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
			WHERE tblInvoiceDocDTBOM.strInvDocID = @DocId
		END
		ELSE IF @DocType = 'SO'
			OR @DocType = 'QU'
		BEGIN
			SELECT tblOrderDocDT.strPartNumber AS [PartNumber]
				,tblOrderDocDT.strPartDesc AS [Desc]
				,tblOrderDocDT.strOrdDocID AS [DocId]
				,lngBinId AS [BinIdLong]
				,tblOrderDocDTBOM.intLineNo AS [LineNo]
				,tblOrderDocDTBOM.decQty AS [Qty]
				,tblOrderDocDTBOM.strPartItemNumber AS [PartItemNumber]
				,strBinCode AS [BinCode]
				,tblInv.strDesc AS [ItemPartNumberDesc]
				,intMainLineNo AS [MainLineNo]
				,tblOrderDocDTBOM.strLocName AS [LocName]
				,cast(0 AS BIT) AS [IsAutoBuildSameLoc]
				,ISNULL([tblOrderDocDTBOM].decBOMQty, tblInvBOM.intQtyToUse) AS [BOMQty]
				,tblInv.strUnitOfMeasure AS [UOM]
				,tblInvSerialTypes.bitDimensionExist AS [IsDimension]
				,tblInv.strStockUnit AS [Unit]
				,tblInv.decSellFromStock AS [SellFromStock]
				,tblInv.intType AS [Type]
				,tblInv.bitInvSerialType AS [IsInventorySerial]
				,CASE 
					WHEN tblInv.intType = 4
						THEN tblInv.decStandardCost
					ELSE CASE @GPCalcLPP
							WHEN 0
								THEN tblInv.decLastPPUnit
							WHEN 1
								THEN tblInv.decStandardCost
							WHEN 2
								THEN CASE @GPCalcInvLevel
										WHEN 0
											THEN CASE 
													WHEN tblInv.decLastPPUnit > ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt(NOLOCK) EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
														THEN tblInv.decLastPPUnit
													ELSE CASE 
															WHEN tblInv.decLastPPUnit < ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt(NOLOCK) EXT
																		WHERE EXT.strPartNumber = tblInv.strPartNumber
																			AND EXT.strLocName = @LocName
																		), 0)
																THEN ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt(NOLOCK) EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = @LocName
																			), 0)
															ELSE CASE 
																	WHEN ISNULL((
																				SELECT CASE EXT.decOnHand
																						WHEN 0
																							THEN 0
																						ELSE EXT.decValue / EXT.decOnHand
																						END
																				FROM tblInvExt(NOLOCK) EXT
																				WHERE EXT.strPartNumber = tblInv.strPartNumber
																					AND EXT.strLocName = @LocName
																				), 0) = 0
																		THEN tblInv.decLastPPUnit
																	ELSE ISNULL((
																				SELECT CASE EXT.decOnHand
																						WHEN 0
																							THEN 0
																						ELSE EXT.decValue / EXT.decOnHand
																						END
																				FROM tblInvExt(NOLOCK) EXT
																				WHERE EXT.strPartNumber = tblInv.strPartNumber
																					AND EXT.strLocName = @LocName
																				), 0)
																	END
															END
													END
										WHEN 1
											THEN CASE 
													WHEN tblInv.decLastPPUnit > ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
														THEN tblInv.decLastPPUnit
													ELSE CASE 
															WHEN tblInv.decLastPPUnit < ISNULL((
																		CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END
																		), 0)
																THEN ISNULL((
																			CASE tblInv.decSumOnHand
																				WHEN 0
																					THEN 0
																				ELSE tblInv.decSumValue / tblInv.decSumOnHand
																				END
																			), 0)
															ELSE CASE 
																	WHEN CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END = 0
																		THEN tblInv.decLastPPUnit
																	ELSE ISNULL((
																				CASE tblInv.decSumOnHand
																					WHEN 0
																						THEN 0
																					ELSE tblInv.decSumValue / tblInv.decSumOnHand
																					END
																				), 0)
																	END
															END
													END
										ELSE tblInv.decLastPPUnit
										END
							WHEN 3
								THEN CASE @GPCalcInvLevel
										WHEN 0
											THEN CASE 
													WHEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt(NOLOCK) EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0) = 0
														THEN tblInv.decLastPPUnit
													ELSE ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt(NOLOCK) EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
													END
										WHEN 1
											THEN CASE 
													WHEN CASE tblInv.decSumOnHand
															WHEN 0
																THEN 0
															ELSE tblInv.decSumValue / tblInv.decSumOnHand
															END = 0
														THEN tblInv.decLastPPUnit
													ELSE ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
													END
										ELSE tblInv.decLastPPUnit
										END
							ELSE tblInv.decLastPPUnit
							END
					END AS GLCalc
				,ISNULL([tblOrderDocDTBOM].decGLCalc, ISNULL(PRICE.decSelling, 0)) AS [Selling]
				,tblinv.intType AS 'Type'
			FROM [dbo].[tblOrderDocDTBOM](NOLOCK)
			INNER JOIN tblOrderDocDT(NOLOCK) ON tblOrderDocDT.strOrdDocID = tblOrderDocDTBOM.strOrdDocID
				AND tblOrderDocDT.intLineNo = tblOrderDocDTBOM.intMainLineNo
			INNER JOIN tblInv(NOLOCK) ON tblInv.strPartNumber = tblOrderDocDTBOM.strPartItemNumber
			LEFT JOIN tblInvBOM(NOLOCK) ON tblInvBOM.strPartNumber = tblOrderDocDT.strPartNumber
				AND tblInvBOM.strPartItemNumber = tblOrderDocDTBOM.strPartItemNumber
				AND [tblOrderDocDTBOM].decBOMQty IS NULL
			INNER JOIN tblInvExtBin(NOLOCK) ON tblOrderDocDTBOM.strPartItemNumber = tblInvExtBin.strPartNumber
				AND tblOrderDocDTBOM.strLocName = tblInvExtBin.strLocName
				AND tblInvExtBin.bitDefault = 1
			INNER JOIN tblInvLocBin(NOLOCK) ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
			LEFT OUTER JOIN (
				SELECT tblInvPrice.strPartNumber
					,tblInvPrice.decSelling
				FROM tblInvPrice(NOLOCK)
				INNER JOIN tblPriceListsByDate(NOLOCK) ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
				WHERE (
						tblInvPrice.strPricelist = @Pricelist
						OR tblInvPrice.strPricelist IS NULL
						)
					AND (
						@DocDate BETWEEN tblPriceListsByDate.dteStartDate
							AND tblPriceListsByDate.dteFinishDate
						)
				) PRICE ON tblInv.strPartNumber = PRICE.strPartNumber
			LEFT JOIN tblInvSerialTypes(NOLOCK) ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
			WHERE tblOrderDocDTBOM.strOrdDocID = @DocId
		END
		ELSE IF @DocType = 'DA'
		BEGIN
			SELECT tblOrderDocDADT.strPartNumber AS [PartNumber]
				,tblOrderDocDADT.strPartDesc AS [Desc]
				,tblOrderDocDADT.strOrdDADocID AS [DocId]
				,tblOrderDocDADTBOM.lngBinId AS [BinIdLong]
				,tblOrderDocDADTBOM.intLineNo AS [LineNo]
				,tblOrderDocDADTBOM.intMainLineNo AS [MainLineNo]
				,tblOrderDocDADTBOM.decQty AS [Qty]
				,tblOrderDocDADTBOM.strPartItemNumber AS [PartItemNumber]
				,tblInv.strDesc AS [ItemPartNumberDesc]
				,strBinCode AS [BinCode]
				,tblOrderDocDADTBOM.strLocName AS [LocName]
				,cast(0 AS BIT) AS [IsAutoBuildSameLoc]
				,ISNULL([tblOrderDocDADTBOM].decBOMQty, tblInvBOM.intQtyToUse) AS [BOMQty]
				,tblInv.strUnitOfMeasure AS [UOM]
				,tblInvSerialTypes.bitDimensionExist AS [IsDimension]
				,tblInv.strStockUnit AS [Unit]
				,tblInv.decSellFromStock AS [SellFromStock]
				,tblInv.intType AS [Type] 
				,tblInv.bitInvSerialType AS [IsInventorySerial]
				,CASE 
					WHEN tblInv.intType = 4
						THEN tblInv.decStandardCost
					ELSE CASE @GPCalcLPP
							WHEN 0
								THEN tblInv.decLastPPUnit
							WHEN 1
								THEN tblInv.decStandardCost
							WHEN 2
								THEN CASE @GPCalcInvLevel
										WHEN 0
											THEN CASE 
													WHEN tblInv.decLastPPUnit > ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt(NOLOCK) EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
														THEN tblInv.decLastPPUnit
													ELSE CASE 
															WHEN tblInv.decLastPPUnit < ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt(NOLOCK) EXT
																		WHERE EXT.strPartNumber = tblInv.strPartNumber
																			AND EXT.strLocName = @LocName
																		), 0)
																THEN ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt(NOLOCK) EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = @LocName
																			), 0)
															ELSE CASE 
																	WHEN ISNULL((
																				SELECT CASE EXT.decOnHand
																						WHEN 0
																							THEN 0
																						ELSE EXT.decValue / EXT.decOnHand
																						END
																				FROM tblInvExt(NOLOCK) EXT
																				WHERE EXT.strPartNumber = tblInv.strPartNumber
																					AND EXT.strLocName = @LocName
																				), 0) = 0
																		THEN tblInv.decLastPPUnit
																	ELSE ISNULL((
																				SELECT CASE EXT.decOnHand
																						WHEN 0
																							THEN 0
																						ELSE EXT.decValue / EXT.decOnHand
																						END
																				FROM tblInvExt(NOLOCK) EXT
																				WHERE EXT.strPartNumber = tblInv.strPartNumber
																					AND EXT.strLocName = @LocName
																				), 0)
																	END
															END
													END
										WHEN 1
											THEN CASE 
													WHEN tblInv.decLastPPUnit > ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
														THEN tblInv.decLastPPUnit
													ELSE CASE 
															WHEN tblInv.decLastPPUnit < ISNULL((
																		CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END
																		), 0)
																THEN ISNULL((
																			CASE tblInv.decSumOnHand
																				WHEN 0
																					THEN 0
																				ELSE tblInv.decSumValue / tblInv.decSumOnHand
																				END
																			), 0)
															ELSE CASE 
																	WHEN CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END = 0
																		THEN tblInv.decLastPPUnit
																	ELSE ISNULL((
																				CASE tblInv.decSumOnHand
																					WHEN 0
																						THEN 0
																					ELSE tblInv.decSumValue / tblInv.decSumOnHand
																					END
																				), 0)
																	END
															END
													END
										ELSE tblInv.decLastPPUnit
										END
							WHEN 3
								THEN CASE @GPCalcInvLevel
										WHEN 0
											THEN CASE 
													WHEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt(NOLOCK) EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0) = 0
														THEN tblInv.decLastPPUnit
													ELSE ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt(NOLOCK) EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
													END
										WHEN 1
											THEN CASE 
													WHEN CASE tblInv.decSumOnHand
															WHEN 0
																THEN 0
															ELSE tblInv.decSumValue / tblInv.decSumOnHand
															END = 0
														THEN tblInv.decLastPPUnit
													ELSE ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
													END
										ELSE tblInv.decLastPPUnit
										END
							ELSE tblInv.decLastPPUnit
							END
					END AS GLCalc
				,ISNULL([tblOrderDocDADTBOM].decGLCalc, ISNULL(PRICE.decSelling, 0)) AS [Selling]
				,tblinv.intType AS 'Type'
			FROM [dbo].[tblOrderDocDADTBOM](NOLOCK)
			INNER JOIN tblOrderDocDADT(NOLOCK) ON tblOrderDocDADT.strOrdDADocID = tblOrderDocDADTBOM.strOrdDocDAID
				AND tblOrderDocDADT.intLineNo = tblOrderDocDADTBOM.intMainLineNo
			INNER JOIN tblInv(NOLOCK) ON tblInv.strPartNumber = tblOrderDocDADTBOM.strPartItemNumber
			INNER JOIN tblInv(NOLOCK) AS tblInv2 ON tblInv2.strPartNumber = tblOrderDocDADT.strPartNumber
			LEFT JOIN tblInvBOM(NOLOCK) ON tblInvBOM.strPartNumber = tblInv2.strPartNumber
				AND tblInvBOM.strPartItemNumber = [tblOrderDocDADTBOM].strPartItemNumber
				AND [tblOrderDocDADTBOM].decBOMQty IS NULL
			INNER JOIN tblInvExtBin(NOLOCK) ON tblOrderDocDADTBOM.strPartItemNumber = tblInvExtBin.strPartNumber
							
				AND tblOrderDocDADTBOM.strLocName = tblInvExtBin.strLocName
				AND tblInvExtBin.bitDefault = 1 

			INNER JOIN tblInvLocBin(NOLOCK) ON tblOrderDocDADTBOM.lngBinID = tblInvLocBin.lngID
			LEFT OUTER JOIN (
				SELECT tblInvPrice.strPartNumber
					,tblInvPrice.decSelling
				FROM tblInvPrice(NOLOCK)
				INNER JOIN tblPriceListsByDate(NOLOCK) ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
				WHERE (
						tblInvPrice.strPricelist = @Pricelist
						OR tblInvPrice.strPricelist IS NULL
						)
					AND (
						@DocDate BETWEEN tblPriceListsByDate.dteStartDate
							AND tblPriceListsByDate.dteFinishDate
						)
				) PRICE ON tblInv.strPartNumber = PRICE.strPartNumber
			LEFT JOIN tblInvSerialTypes(NOLOCK) ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
			WHERE tblOrderDocDADTBOM.strOrdDocDAID = @DocId
		END
		ELSE IF @DocType = 'QS'
		BEGIN
			SELECT tblOrderDocQDT.strPartNumber AS [PartNumber]
				,tblOrderDocQDT.strPartDesc AS [Desc]
				,tblOrderDocQDT.strOrdDocID AS [DocId]
				,lngBinId AS [BinIdLong]
				,tblOrderDocQDTBOM.intLineNo AS [LineNo]
				,tblOrderDocQDTBOM.intMainLineNo AS [MainLineNo]
				,tblOrderDocQDTBOM.decQty AS [Qty]
				,tblOrderDocQDTBOM.strPartItemNumber AS [PartItemNumber]
				,tblInv.strDesc AS [ItemPartNumberDesc]
				,strBinCode AS [BinCode]
				,tblOrderDocQDTBOM.strLocName AS [LocName]
				,cast(0 AS BIT) AS [IsAutoBuildSameLoc]
				,ISNULL([tblOrderDocQDTBOM].decBOMQty, tblInvBOM.intQtyToUse) AS [BOMQty]
				,tblInv.strUnitOfMeasure AS [UOM]
				,tblInvSerialTypes.bitDimensionExist AS [IsDimension]
				,tblInv.strStockUnit AS [Unit]
				,tblInv.decSellFromStock AS [SellFromStock]
				,tblInv.intType AS [Type] 
				,tblInv.bitInvSerialType AS [IsInventorySerial]
				,CASE 
					WHEN tblInv.intType = 4
						THEN tblInv.decStandardCost
					ELSE CASE @GPCalcLPP
							WHEN 0
								THEN tblInv.decLastPPUnit
							WHEN 1
								THEN tblInv.decStandardCost
							WHEN 2
								THEN CASE @GPCalcInvLevel
										WHEN 0
											THEN CASE 
													WHEN tblInv.decLastPPUnit > ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt(NOLOCK) EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
														THEN tblInv.decLastPPUnit
													ELSE CASE 
															WHEN tblInv.decLastPPUnit < ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt(NOLOCK) EXT
																		WHERE EXT.strPartNumber = tblInv.strPartNumber
																			AND EXT.strLocName = @LocName
																		), 0)
																THEN ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt(NOLOCK) EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = @LocName
																			), 0)
															ELSE CASE 
																	WHEN ISNULL((
																				SELECT CASE EXT.decOnHand
																						WHEN 0
																							THEN 0
																						ELSE EXT.decValue / EXT.decOnHand
																						END
																				FROM tblInvExt(NOLOCK) EXT
																				WHERE EXT.strPartNumber = tblInv.strPartNumber
																					AND EXT.strLocName = @LocName
																				), 0) = 0
																		THEN tblInv.decLastPPUnit
																	ELSE ISNULL((
																				SELECT CASE EXT.decOnHand
																						WHEN 0
																							THEN 0
																						ELSE EXT.decValue / EXT.decOnHand
																						END
																				FROM tblInvExt(NOLOCK) EXT
																				WHERE EXT.strPartNumber = tblInv.strPartNumber
																					AND EXT.strLocName = @LocName
																				), 0)
																	END
															END
													END
										WHEN 1
											THEN CASE 
													WHEN tblInv.decLastPPUnit > ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
														THEN tblInv.decLastPPUnit
													ELSE CASE 
															WHEN tblInv.decLastPPUnit < ISNULL((
																		CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END
																		), 0)
																THEN ISNULL((
																			CASE tblInv.decSumOnHand
																				WHEN 0
																					THEN 0
																				ELSE tblInv.decSumValue / tblInv.decSumOnHand
																				END
																			), 0)
															ELSE CASE 
																	WHEN CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END = 0
																		THEN tblInv.decLastPPUnit
																	ELSE ISNULL((
																				CASE tblInv.decSumOnHand
																					WHEN 0
																						THEN 0
																					ELSE tblInv.decSumValue / tblInv.decSumOnHand
																					END
																				), 0)
																	END
															END
													END
										ELSE tblInv.decLastPPUnit
										END
							WHEN 3
								THEN CASE @GPCalcInvLevel
										WHEN 0
											THEN CASE 
													WHEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt(NOLOCK) EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0) = 0
														THEN tblInv.decLastPPUnit
													ELSE ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt(NOLOCK) EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
													END
										WHEN 1
											THEN CASE 
													WHEN CASE tblInv.decSumOnHand
															WHEN 0
																THEN 0
															ELSE tblInv.decSumValue / tblInv.decSumOnHand
															END = 0
														THEN tblInv.decLastPPUnit
													ELSE ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
													END
										ELSE tblInv.decLastPPUnit
										END
							ELSE tblInv.decLastPPUnit
							END
					END AS GLCalc
				,ISNULL([tblOrderDocQDTBOM].decGLCalc, ISNULL(PRICE.decSelling, 0)) AS [Selling]
				,tblinv.intType AS 'Type'
			FROM [dbo].[tblOrderDocQDTBOM](NOLOCK)
			INNER JOIN tblOrderDocQDT(NOLOCK) ON tblOrderDocQDT.strOrdDocID = tblOrderDocQDTBOM.strOrdDocID
				AND tblOrderDocQDT.intLineNo = tblOrderDocQDTBOM.intMainLineNo
			INNER JOIN tblInv(NOLOCK) ON tblInv.strPartNumber = tblOrderDocQDTBOM.strPartItemNumber
			INNER JOIN tblInv(NOLOCK) AS tblInv2 ON tblInv2.strPartNumber = tblOrderDocQDT.strPartNumber
			LEFT JOIN tblInvBOM(NOLOCK) ON tblInvBOM.strPartNumber = tblInv2.strPartNumber
				AND tblInvBOM.strPartItemNumber = [tblOrderDocQDTBOM].strPartItemNumber
				AND [tblOrderDocQDTBOM].decBOMQty IS NULL
			INNER JOIN tblInvExtBin(NOLOCK) ON tblOrderDocQDTBOM.strPartItemNumber = tblInvExtBin.strPartNumber
				AND tblOrderDocQDTBOM.strLocName = tblInvExtBin.strLocName
				AND tblInvExtBin.bitDefault = 1
			INNER JOIN tblInvLocBin(NOLOCK) ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
			LEFT OUTER JOIN (
				SELECT tblInvPrice.strPartNumber
					,tblInvPrice.decSelling
				FROM tblInvPrice(NOLOCK)
				INNER JOIN tblPriceListsByDate(NOLOCK) ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
				WHERE (
						tblInvPrice.strPricelist = @Pricelist
						OR tblInvPrice.strPricelist IS NULL
						)
					AND (
						@DocDate BETWEEN tblPriceListsByDate.dteStartDate
							AND tblPriceListsByDate.dteFinishDate
						)
				) PRICE ON tblInv.strPartNumber = PRICE.strPartNumber
			LEFT JOIN tblInvSerialTypes(NOLOCK) ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
			WHERE tblOrderDocQDTBOM.strOrdDocID = @DocId
		END
		ELSE IF @DocType = 'SP'
		BEGIN
			SELECT tblPickTicketsDT.strPartNumber AS [PartNumber]
				,tblPickTicketsDT.strPartDesc AS [Desc]
				,(SELECT TOP 1 PT.strOrdDocID
					FROM tblPickTickets(NOLOCK) AS PT
					WHERE PT.strPkTkDocID = tblPickTicketsDT.strPkTkDocID
					) AS [DocId]
				,tblPickTicketsDTBOM.lngBinId AS [BinIdLong]
				,tblPickTicketsDTBOM.intLineNo AS [LineNo]
				,tblPickTicketsDTBOM.intMainLineNo AS [MainLineNo]
				,tblPickTicketsDTBOM.decQty AS [Qty]
				,tblPickTicketsDTBOM.strPartItemNumber AS [PartItemNumber]
				,tblInv.strDesc AS [ItemPartNumberDesc]
				,strBinCode AS [BinCode]
				,tblPickTicketsDTBOM.strLocation AS [LocName]
				,cast(0 AS BIT) AS [IsAutoBuildSameLoc]
				,ISNULL([tblPickTicketsDTBOM].decBOMQty, tblInvBOM.intQtyToUse) AS [BOMQty]
				,tblInv.strUnitOfMeasure AS [UOM]
				,tblInvSerialTypes.bitDimensionExist AS [IsDimension]
				,tblInv.strStockUnit AS [Unit]
				,tblInv.decSellFromStock AS [SellFromStock]
				,tblInv.intType AS [Type]
				,tblInv.bitInvSerialType AS [IsInventorySerial]
				,CASE 
					WHEN tblInv.intType = 4
						THEN tblInv.decStandardCost
					ELSE CASE @GPCalcLPP
							WHEN 0
								THEN tblInv.decLastPPUnit
							WHEN 1
								THEN tblInv.decStandardCost
							WHEN 2
								THEN CASE @GPCalcInvLevel
										WHEN 0
											THEN CASE 
													WHEN tblInv.decLastPPUnit > ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt(NOLOCK) EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
														THEN tblInv.decLastPPUnit
													ELSE CASE 
															WHEN tblInv.decLastPPUnit < ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt(NOLOCK) EXT
																		WHERE EXT.strPartNumber = tblInv.strPartNumber
																			AND EXT.strLocName = @LocName
																		), 0)
																THEN ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt(NOLOCK) EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = @LocName
																			), 0)
															ELSE CASE 
																	WHEN ISNULL((
																				SELECT CASE EXT.decOnHand
																						WHEN 0
																							THEN 0
																						ELSE EXT.decValue / EXT.decOnHand
																						END
																				FROM tblInvExt(NOLOCK) EXT
																				WHERE EXT.strPartNumber = tblInv.strPartNumber
																					AND EXT.strLocName = @LocName
																				), 0) = 0
																		THEN tblInv.decLastPPUnit
																	ELSE ISNULL((
																				SELECT CASE EXT.decOnHand
																						WHEN 0
																							THEN 0
																						ELSE EXT.decValue / EXT.decOnHand
																						END
																				FROM tblInvExt(NOLOCK) EXT
																				WHERE EXT.strPartNumber = tblInv.strPartNumber
																					AND EXT.strLocName = @LocName
																				), 0)
																	END
															END
													END
										WHEN 1
											THEN CASE 
													WHEN tblInv.decLastPPUnit > ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
														THEN tblInv.decLastPPUnit
													ELSE CASE 
															WHEN tblInv.decLastPPUnit < ISNULL((
																		CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END
																		), 0)
																THEN ISNULL((
																			CASE tblInv.decSumOnHand
																				WHEN 0
																					THEN 0
																				ELSE tblInv.decSumValue / tblInv.decSumOnHand
																				END
																			), 0)
															ELSE CASE 
																	WHEN CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END = 0
																		THEN tblInv.decLastPPUnit
																	ELSE ISNULL((
																				CASE tblInv.decSumOnHand
																					WHEN 0
																						THEN 0
																					ELSE tblInv.decSumValue / tblInv.decSumOnHand
																					END
																				), 0)
																	END
															END
													END
										ELSE tblInv.decLastPPUnit
										END
							WHEN 3
								THEN CASE @GPCalcInvLevel
										WHEN 0
											THEN CASE 
													WHEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt(NOLOCK) EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0) = 0
														THEN tblInv.decLastPPUnit
													ELSE ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt(NOLOCK) EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
													END
										WHEN 1
											THEN CASE 
													WHEN CASE tblInv.decSumOnHand
															WHEN 0
																THEN 0
															ELSE tblInv.decSumValue / tblInv.decSumOnHand
															END = 0
														THEN tblInv.decLastPPUnit
													ELSE ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
													END
										ELSE tblInv.decLastPPUnit
										END
							ELSE tblInv.decLastPPUnit
							END
					END AS GLCalc
				,ISNULL([tblPickTicketsDTBOM].decGLCalc, ISNULL(PRICE.decSelling, 0)) AS [Selling]
				,tblinv.intType AS 'Type'
			FROM [dbo].[tblPickTicketsDTBOM](NOLOCK)
			INNER JOIN tblPickTicketsDT(NOLOCK) ON tblPickTicketsDT.strPkTkDocID = tblPickTicketsDTBOM.strPkTkDocID
				AND tblPickTicketsDT.intLineNo = tblPickTicketsDTBOM.intMainLineNo
			INNER JOIN tblInv(NOLOCK) ON tblInv.strPartNumber = tblPickTicketsDTBOM.strPartItemNumber
			INNER JOIN tblInv(NOLOCK) AS tblInv2 ON tblInv2.strPartNumber = tblPickTicketsDT.strPartNumber
			LEFT JOIN tblInvBOM(NOLOCK) ON tblInvBOM.strPartNumber = tblInv2.strPartNumber
				AND tblInvBOM.strPartItemNumber = [tblPickTicketsDTBOM].strPartItemNumber
				AND [tblPickTicketsDTBOM].decBOMQty IS NULL
			INNER JOIN tblInvLocBin(NOLOCK) ON tblPickTicketsDTBOM.lngBinID = tblInvLocBin.lngID
			LEFT OUTER JOIN (
				SELECT tblInvPrice.strPartNumber
					,tblInvPrice.decSelling
				FROM tblInvPrice(NOLOCK)
				INNER JOIN tblPriceListsByDate(NOLOCK) ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
				WHERE (
						tblInvPrice.strPricelist = @Pricelist
						OR tblInvPrice.strPricelist IS NULL
						)
					AND (
						@DocDate BETWEEN tblPriceListsByDate.dteStartDate
							AND tblPriceListsByDate.dteFinishDate
						)
				) PRICE ON tblInv.strPartNumber = PRICE.strPartNumber
			LEFT JOIN tblInvSerialTypes(NOLOCK) ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
			WHERE tblPickTicketsDTBOM.strPkTkDocID IN (
								SELECT Value
					FROM dbo.fnSplitStringAsTable(@DocId, ',')
					)
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetItemDescriptionAutoCompleteList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetItemDescriptionAutoCompleteList]    Script Date: 2020-05-26 ******/
Create Procedure [dbo].[GetItemDescriptionAutoCompleteList]
As
Begin

Select strDescription as [LabelValue],
	   strValue  as [Description],
	   strDescription as [DescriptionOLD]
	   from tblInvDescriptionAutoComplete
end
GO
/****** Object:  StoredProcedure [dbo].[GetItemDescriptionByPartName]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetItemDescriptionByPartName] 
  @PartNumber nvarchar(100)
AS
BEGIN
	SELECT  
	  CASE WHEN (strPOSDesc IS NULL or strPOSDesc = '')
	  THEN strDesc
      ELSE strPOSDesc
	  END 
	from tblInv 
	where strPartNumber =  @PartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetItemDescriptionFieldList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetItemDescriptionFieldList]    Script Date: 06-09-2019 10:38:47 ******/
CREATE PROCEDURE [dbo].[GetItemDescriptionFieldList] 
	 @IsEdit AS BIT
	,@PartNumber AS NVARCHAR(100) = NULL
AS
BEGIN
	IF (@IsEdit = 0)
	BEGIN
		SELECT strDescription AS [Description]
			,intOrder AS [DescriptionOrder]
			,'' AS [LabelValue]
		FROM tblInvDescription
		ORDER BY intOrder,strDescription ASC
	END
	ELSE
	BEGIN
			;

		WITH tbltempListData
		AS (
			SELECT tblInvDescriptionList.strDescription AS [Description]
				,ISNULL(ISNULL(tblInvDescriptionList.intDescriptionOrder,tblInvDescription.intOrder), 0) AS [DescriptionOrder]
				,tblInvDescriptionList.strDescriptionValue AS [LabelValue]
			FROM tblInvDescriptionList
			LEFT JOIN tblInvDescription ON tblInvDescriptionList.strDescription = tblInvDescription.strDescription
			WHERE strPartNumber = @PartNumber
			)
			,tbltempListData2
		AS (
			SELECT tblInvDescription.strDescription AS [Description]
				,tblInvDescription.intOrder AS [DescriptionOrder]
				,'' AS [LabelValue]
			FROM tblInvDescription
			WHERE tblInvDescription.strDescription NOT IN (
					SELECT tbltempListData.Description
					FROM tbltempListData
					)
			)
			,tbltempListData3
		AS (
			SELECT Description
				,DescriptionOrder
				,LabelValue
				,Cast(0 AS BIT) AS IsNew
			FROM tbltempListData
			
			UNION ALL
			
			SELECT Description
				,DescriptionOrder
				,LabelValue
				,Cast(1 AS BIT) AS IsNew
			FROM tbltempListData2
			)
		SELECT *
		FROM tbltempListData3
		ORDER BY DescriptionOrder
			,Description ASC
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetItemDescriptionFieldListByFieldName]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetItemDescriptionFieldListByFieldName]    Script Date: 15-10-2019 10:38:47 ******/
CREATE Procedure [dbo].[GetItemDescriptionFieldListByFieldName]
(
@strDescription as Nvarchar(Max)=''
)
AS 
BEGIN
Select distinct(strValue) from tblInvDescriptionAutoComplete where strDescription=@strDescription Order by strValue asc
END
GO
/****** Object:  StoredProcedure [dbo].[GetItemDescriptionList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetItemDescriptionList]    Script Date: 06-09-2019 10:37:49 ******/
CREATE PROCEDURE [dbo].[GetItemDescriptionList]
AS
BEGIN
Select 
tblInvDescription.strDescription AS [Description],
tblInvDescription.strDescription AS [DescriptionOLD],
tblInvDescription.intOrder AS [DescriptionOrder] from tblInvDescription ORDER BY intOrder,tblInvDescription.strDescription asc
END
GO
/****** Object:  StoredProcedure [dbo].[GetItemInfoSalesImportExport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetOrderInfoSalesImportExport] ***********/

/*********** Start [GetItemInfoSalesImportExport] ***********/
CREATE PROCEDURE [dbo].[GetItemInfoSalesImportExport] 
@PartNumber VARCHAR(50),
@CustName VARCHAR(50)
AS
BEGIN
SELECT TOP 1 tblinv.strpartnumber,
             tblinv.strdesc,
             Isnull(tblinvprice.decselling, 0)
FROM   tblinv
       LEFT OUTER JOIN tblinvprice
                    ON tblinv.strpartnumber = tblinvprice.strpartnumber
       LEFT OUTER JOIN tblpricelists
                    ON tblinvprice.strpricelist = tblpricelists.strpricelist
                       AND tblinvprice.uidpricebasedid =
                           tblpricelists.uidpricebasedid
       LEFT OUTER JOIN tblcustomers
                    ON tblpricelists.strpricelist = tblcustomers.strpricelist
WHERE  ( tblinv.inttype = 1 )
       AND ( tblinv.strpartnumber = @PartNumber
              OR tblinv.strbarcode = @PartNumber
              OR tblinv.strbarcode2 = @PartNumber )
       AND ( tblcustomers.strcustname = @CustName )  
END 
GO
/****** Object:  StoredProcedure [dbo].[GetItemInfoSOGameSalesImportExport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetItemInfoSalesImportExport] ***********/

/*********** Start [GetItemInfoSOGameSalesImportExport] ***********/
CREATE PROCEDURE [dbo].[GetItemInfoSOGameSalesImportExport] 
@PartNumber VARCHAR(50),
@CustName VARCHAR(50)
AS
BEGIN
SELECT tblinv.strdesc,
       Isnull(tblinvprice.decselling, 0)
FROM   tblinv
       LEFT OUTER JOIN tblinvprice
                    ON tblinv.strpartnumber = tblinvprice.strpartnumber
       LEFT OUTER JOIN tblpricelists
                    ON tblinvprice.strpricelist = tblpricelists.strpricelist
                       AND tblinvprice.uidpricebasedid =
                           tblpricelists.uidpricebasedid
       LEFT OUTER JOIN tblcustomers
                    ON tblpricelists.strpricelist = tblcustomers.strpricelist
WHERE  ( tblinv.inttype = 1 )
       AND ( tblinv.strpartnumber = @PartNumber )
       AND ( tblcustomers.strcustname = @CustName )
END 
GO
/****** Object:  StoredProcedure [dbo].[GetItemSalesData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvDocIDList] ***********/

/*********** Start [GetItemSalesData] ***********/
CREATE PROCEDURE [dbo].[GetItemSalesData] (
	@CustomerNumber NVARCHAR(50),
	@FromDate DATETIME,
	@ToDate DATETIME
	)
AS
BEGIN

	SELECT tblInvoiceDocDT.strPartNumber AS ItemCode,
		tblInvoiceDocDT.strPartDesc AS ItemDescription,
		tblInvoiceDoc.dteJournalDate AS TransactionDate,
		tblInvoiceDoc.strInvDocID AS DocumentNumber,
		ISNULL(tblInvTracking.lngJourID, 0) AS JourID,
		tblInvoiceDocDT.decQty AS Qty,
		CAST(ISNULL(tblInvTrackingDT.decRevenue, 0) AS NUMERIC(16, 2)) AS Revenue,
		CAST(ISNULL(tblInvTrackingDT.decCOGS, 0) AS NUMERIC(16, 2)) AS Cost,
		CAST(ISNULL(tblInvTrackingDT.decRevenue - tblInvTrackingDT.decCOGS, 0) AS NUMERIC(16, 2)) AS Profit,
		tblInvoiceDoc.strSalesName AS SalesPerson,
		CASE 
			WHEN (tblInvoiceDocDT.intType = 1)
				THEN 'Stock Item'
			WHEN (tblInvoiceDocDT.intType = 4)
				THEN 'Service Item'
			ELSE 'JOURNAL CODE'
			END AS ItemType,
		ISNULL(tblInv.strCategory, '') AS ItemCategory,
		ISNULL(tblInv.strAcctSet, '') AS AccountSet,
		tblInvoiceDoc.strUserName AS UserName,
		(
			CASE 
				WHEN (tblInvTrackingDT.decRevenue <> 0)
					THEN (CAST(((tblInvTrackingDT.decRevenue - tblInvTrackingDT.decCOGS) / tblInvTrackingDT.decRevenue * 100) AS NUMERIC(16, 2)))
				ELSE 0
				END
			) AS Margin,
		CASE 
			WHEN CHARINDEX(CHAR(13), tblInvoiceDoc.strShipTo) = 0
				THEN ISNULL(tblInvoiceDoc.strShipTo, '')
			ELSE LEFT(tblInvoiceDoc.strShipTo, CHARINDEX(CHAR(13), tblInvoiceDoc.strShipTo) - 1)
			END AS ShipTo, tblInvoiceDocDT.strUnit AS Unit
	FROM tblInvoiceDocDT
	INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
	INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber AND tblInvoiceDocDT.strLocation = tblInv.strLocName
	LEFT JOIN tblInvTrackingDT ON tblInvTrackingDT.strPartNumber = tblInvoiceDocDT.strPartNumber AND tblInvTrackingDT.strSource = tblInvoiceDocDT.strInvDocID AND tblInvTrackingDT.intLineNo = tblInvoiceDocDT.intLineNo AND tblInvTrackingDT.lngInvTrackID = (
			SELECT MAX(lngInvTrackID)
			FROM tblInvTrackingDT
			WHERE strSource = tblInvoiceDoc.strInvDocID
			)
	LEFT JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
	WHERE tblInvoiceDoc.strCustName = @CustomerNumber AND CONVERT(DATE, tblInvoiceDoc.dteJournalDate) BETWEEN CONVERT(DATE, @FromDate)
			AND CONVERT(DATE, @ToDate)
	ORDER BY TransactionDate,
		ItemCode,
		DocumentNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetItemsByBinForLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetItemsByBinForLocation]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetItemsByBinForLocation]
 @SQstrLocName nvarchar(100)
AS
BEGIN
  SET NOCOUNT ON;

  SET NOCOUNT ON;

		--;WITH CTE AS (  
  --select   
  -- lngBinId,tblInvLocBin.strBinCode,tblInvLocBin.strDescription AS strDesc, strPartNumber, SUM(tblInvTrackingDTBin.decOnHand) AS decOnHand  
  -- ,CAST(dense_rank() OVER(ORDER BY tblInvLocBin.strBinCode) AS int) AS intRowId  
  -- from tblInvTrackingDTBin  
  --  join tblInvTrackingDT on tblInvTrackingDTBin.lngInvTrackId = tblInvTrackingDT.lngInvTrackID AND tblInvTrackingDTBin.intLineNo = tblInvTrackingDT.intLineNo  
  --  join tblInvTracking on tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID AND tblInvTracking.lngInvTrackID = tblInvTrackingDTBin.lngInvTrackID  
  --  join tblInvLocBin on tblInvLocBin.lngId = tblInvTrackingDTBin.lngBinId AND tblInvLocBin.strLocName = tblInvTrackingDT.strLocName  
  --  WHERE tblInvTrackingDT.strLocName = @SQstrLocName  
  -- group by lngBinId,tblInvLocBin.strBinCode,tblInvLocBin.strDescription,tblInvTrackingDT.strPartNumber  
  -- )  
  -- SELECT *, CAST(SUM(decOnHand) over (Partition by intRowId) AS decimal) AS Total   
  -- FROM CTE  
  -- group by lngBinId,strBinCode,strDesc,strPartNumber,decOnHand,intRowId  
  --  order by strBinCode,strPartNumber  

  ;WITH CTE AS (   
   SELECT tblInvExtBin.lngBinID,tblInvLocBin.strBinCode,tblInvLocBin.strDescription as strDesc,tblInvExtBin.strPartNumber,tblInvExtBin.decAvail As decOnHand
	,CAST(dense_rank() OVER(ORDER BY tblInvLocBin.strBinCode) AS int) AS intRowId 
	FROM tblInvExtBin INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId 
	WHERE tblInvExtBin.strLocName = @SQstrLocName AND tblInvExtBin.decAvail > 0
  )  
  SELECT *, CAST(SUM(decOnHand) over (Partition by intRowId) AS decimal) AS Total   
   FROM CTE
   order by strBinCode,strPartNumber  
END
GO
/****** Object:  StoredProcedure [dbo].[GetJobCostVarianceReportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetJobCostVarianceReportData] (
	@CustomerList NVARCHAR(MAX)
	,@ServiceableItemList NVARCHAR(MAX)
	,@StartDate DATETIME
	,@FinishDate DATETIME
	,@IsCheckedSummary BIT
	,@IsFilterbyOwner BIT
	)
AS
BEGIN
	IF @IsCheckedSummary = 1
	BEGIN
		SELECT [Date] AS JournalDate
			,JobNumber AS JobNumber
			,ServiceableItemCode AS ServiceableItem
			,CustomerCode AS CustomerCode
			,CustomerDetails AS CustomerDescription
			,IsForeign AS IsForeign
			,SUM(EstimatedCost) AS EstimatedCost
			,SUM(ActualCost) AS ActualCost
			,SUM(EstimatedCostF) AS EstimatedCostF
			,SUM(ActualCostF) AS ActualCostF
			,SUM(EstimatedQty) AS EstimatedQty
			,SUM(ActualQty) AS ActualQty
			,OwnerName
			,OwnerDesc
		FROM (
			SELECT tblInvoiceDoc.dteJournalDate AS [Date]
				,tblInvoiceDoc.strInvDocID AS JobNumber
				,tblWSInvoiceDoc.ServiceableItemCode AS ServiceableItemCode
				,tblWSInvoiceDoc.CustomerCode AS CustomerCode
				,tblCustomers.strCustDesc AS CustomerDetails
				,tblInvoiceDoc.bitIsForeign AS IsForeign
				,SUM(tblWSProcessDocDT.JobQty * tblWSProcessDocDT.PriceEaExc) AS EstimatedCost
				,SUM(tblWSProcessDocDT.JobQty * tblWSProcessDocDT.PriceEaExcF) AS EstimatedCostF
				,0 AS ActualCost
				,0 AS ActualCostF
				,SUM(tblWSProcessDocDT.JobQty) AS EstimatedQty
				,0 AS ActualQty
				,tblWSInvoiceDoc.OwnerCode AS OwnerName
				,tblowners.OwnerDesc
			FROM tblInvoiceDoc
			--INNER JOIN tblWSInvoiceDoc ON tblWSInvoiceDoc.strInvDocID = tblInvoiceDoc.strInvDocID  
			--INNER JOIN tblWSProcessDocDT ON tblWSInvoiceDoc.ProcessDocID = tblWSProcessDocDT.ProcessDocID  
			--INNER JOIN tblCustomers on tblCustomers.strCustName = tblWSInvoiceDoc.CustomerCode  
			INNER JOIN tblWSInvoiceDoc ON tblWSInvoiceDoc.strInvDocID = tblInvoiceDoc.strInvDocID
			INNER JOIN tblWSProcessDoc ON tblWSProcessDoc.ProcessDocID = tblWSInvoiceDoc.ProcessDocID
			INNER JOIN tblWSProcessDocDT ON tblWSProcessDoc.ProcessDocID = tblWSProcessDocDT.ProcessDocID -- INNER JOIN tblWSProcessDocDT ON tblWSProcessDoc.QuoteDocID = tblWSProcessDocDT.ProcessDocID   
			INNER JOIN tblCustomers ON tblCustomers.strCustName = tblWSInvoiceDoc.CustomerCode
			LEFT JOIN tblOwners ON tblOwners.OwnerName = tblWSInvoiceDoc.OwnerCode
			WHERE (
					CONVERT(DATE, tblInvoiceDoc.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
						AND CONVERT(DATE, @FinishDate)
					)
				AND (
					tblWSInvoiceDoc.ServiceableItemCode IN (
						(
							SELECT [VALUE]
							FROM fnSplitStringAsTable(@ServiceableItemList, ',')
							)
						)
					OR ISNULL(@ServiceableItemList, '') = ''
					)
				AND (
					(
						CASE 
							WHEN (@IsFilterbyOwner = 1)
								THEN (tblWSInvoiceDoc.OwnerCode)
							ELSE tblWSInvoiceDoc.CustomerCode
							END
						) IN (
						(
							SELECT [VALUE]
							FROM fnSplitStringAsTable(@CustomerList, ',')
							)
						)
					OR ISNULL(@CustomerList, '') = ''
					)
			GROUP BY tblInvoiceDoc.dteJournalDate
				,tblInvoiceDoc.strInvDocID
				,tblWSInvoiceDoc.ServiceableItemCode
				,tblWSInvoiceDoc.CustomerCode
				,tblWSInvoiceDoc.CustomerDetails
				,tblInvoiceDoc.bitIsForeign
				,tblCustomers.strCustDesc
				,tblWSInvoiceDoc.OwnerCode
				,tblOwners.OwnerDesc
			
			UNION ALL
			
			SELECT tblInvoiceDoc.dteJournalDate AS [Date]
				,tblInvoiceDoc.strInvDocID AS JobNumber
				,tblWSInvoiceDoc.ServiceableItemCode AS ServiceableItemCode
				,tblWSInvoiceDoc.CustomerCode AS CustomerCode
				,tblCustomers.strCustDesc AS CustomerDetails
				,tblInvoiceDoc.bitIsForeign AS IsForeign
				,0 AS EstimatedCost
				,0 AS EstimatedCostF
				,SUM(tblInvoiceDocDT.decUsedQty * tblInvoiceDocDT.decPriceEaExc) AS ActualCost
				,SUM(tblInvoiceDocDT.decUsedQty * tblInvoiceDocDT.decPriceEaExcF) AS ActualCostF
				,0 AS EstimatedQty
				,SUM(tblInvoiceDocDT.decUsedQty) AS ActualQty
				,tblWSInvoiceDoc.OwnerCode AS OwnerName
				,tblowners.OwnerDesc
			FROM tblInvoiceDoc
			INNER JOIN tblWSInvoiceDoc ON tblWSInvoiceDoc.strInvDocID = tblInvoiceDoc.strInvDocID
			INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
			INNER JOIN tblCustomers ON tblCustomers.strCustName = tblWSInvoiceDoc.CustomerCode
			LEFT JOIN tblOwners ON tblOwners.OwnerName = tblWSInvoiceDoc.OwnerCode
			WHERE (
					CONVERT(DATE, tblInvoiceDoc.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
						AND CONVERT(DATE, @FinishDate)
					)
				AND (
					tblWSInvoiceDoc.ServiceableItemCode IN (
						(
							SELECT [VALUE]
							FROM fnSplitStringAsTable(@ServiceableItemList, ',')
							)
						)
					OR ISNULL(@ServiceableItemList, '') = ''
					)
				AND (
					(
						CASE 
							WHEN (@IsFilterbyOwner = 1)
								THEN (tblWSInvoiceDoc.OwnerCode)
							ELSE tblWSInvoiceDoc.CustomerCode
							END
						) IN (
						(
							SELECT [VALUE]
							FROM fnSplitStringAsTable(@CustomerList, ',')
							)
						)
					OR ISNULL(@CustomerList, '') = ''
					)
			GROUP BY tblInvoiceDoc.dteJournalDate
				,tblInvoiceDoc.strInvDocID
				,tblWSInvoiceDoc.ServiceableItemCode
				,tblWSInvoiceDoc.CustomerCode
				,tblWSInvoiceDoc.CustomerDetails
				,tblInvoiceDoc.bitIsForeign
				,tblCustomers.strCustDesc
				,tblWSInvoiceDoc.OwnerCode
				,tblOwners.OwnerDesc
			) AS tblSummaryReportData
		GROUP BY [Date]
			,JobNumber
			,ServiceableItemCode
			,CustomerCode
			,CustomerDetails
			,IsForeign
			,OwnerName
			,OwnerDesc
	END
	ELSE
	BEGIN
		SELECT [Date] AS JournalDate
			,JobNumber AS JobNumber
			,PartNumber AS PartNumber
			,PartDesc AS PartDescription
			,Location AS Location
			,ServiceableItemCode AS ServiceableItem
			,ServiceableItemDescription AS ServiceableItemDescription
			,CustomerCode AS CustomerCode
			,CustomerDetails AS CustomerDescription
			,IsForeign AS IsForeign
			,SUM(EstimatedCost) AS EstimatedCost
			,SUM(ActualCost) AS ActualCost
			,SUM(EstimatedCostF) AS EstimatedCostF
			,SUM(ActualCostF) AS ActualCostF
			,SUM(EstimatedQty) AS EstimatedQty
			,SUM(ActualQty) AS ActualQty
			,OwnerName
			,OwnerDesc
		FROM (
			SELECT tblInvoiceDoc.dteJournalDate AS [Date]
				,tblInvoiceDoc.strInvDocID AS JobNumber
				,tblWSProcessDocDT.PartNumber AS PartNumber
				,tblWSProcessDocDT.PartDesc AS PartDesc
				,tblWSProcessDocDT.Location AS Location
				,tblWSInvoiceDoc.ServiceableItemCode
				,tblWSServiceableItem.ServiceableItemDescription
				,tblWSInvoiceDoc.CustomerCode AS CustomerCode
				,tblCustomers.strCustDesc AS CustomerDetails
				,tblInvoiceDoc.bitIsForeign AS IsForeign
				,(tblWSProcessDocDT.JobQty * tblWSProcessDocDT.PriceEaExc) AS EstimatedCost
				,(tblWSProcessDocDT.JobQty * tblWSProcessDocDT.PriceEaExcF) AS EstimatedCostF
				,0 AS ActualCost
				,0 AS ActualCostF
				,(tblWSProcessDocDT.JobQty) AS EstimatedQty
				,0 AS ActualQty
				,tblWSInvoiceDoc.OwnerCode AS OwnerName
				,tblOwners.OwnerDesc
			FROM tblInvoiceDoc
			--INNER JOIN tblWSInvoiceDoc on tblWSInvoiceDoc.strInvDocID = tblInvoiceDoc.strInvDocID  
			--INNER JOIN tblWSProcessDocDT ON tblWSInvoiceDoc.ProcessDocID = tblWSProcessDocDT.ProcessDocID  
			--INNER JOIN tblCustomers on tblCustomers.strCustName = tblWSInvoiceDoc.CustomerCode  
			--INNER JOIN tblWSServiceableItem on tblWSServiceableItem.ServiceableItemCode = tblWSInvoiceDoc.ServiceableItemCode  
			INNER JOIN tblWSInvoiceDoc ON tblWSInvoiceDoc.strInvDocID = tblInvoiceDoc.strInvDocID
			INNER JOIN tblWSProcessDoc ON tblWSProcessDoc.ProcessDocID = tblWSInvoiceDoc.ProcessDocID
			INNER JOIN tblWSProcessDocDT ON tblWSProcessDoc.ProcessDocID = tblWSProcessDocDT.ProcessDocID -- INNER JOIN tblWSProcessDocDT ON tblWSProcessDoc.QuoteDocID = tblWSProcessDocDT.ProcessDocID   
			INNER JOIN tblCustomers ON tblCustomers.strCustName = tblWSInvoiceDoc.CustomerCode
			LEFT OUTER JOIN tblWSServiceableItem ON tblWSServiceableItem.ServiceableItemCode = tblWSInvoiceDoc.ServiceableItemCode
			LEFT JOIN tblOwners ON tblOwners.OwnerName = tblWSInvoiceDoc.OwnerCode
			WHERE (
					CONVERT(DATE, tblInvoiceDoc.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
						AND CONVERT(DATE, @FinishDate)
					)
				AND (
					tblWSInvoiceDoc.ServiceableItemCode IN (
						(
							SELECT [VALUE]
							FROM fnSplitStringAsTable(@ServiceableItemList, ',')
							)
						)
					OR ISNULL(@ServiceableItemList, '') = ''
					)
				AND (
					(
						CASE 
							WHEN (@IsFilterbyOwner = 1)
								THEN (tblWSInvoiceDoc.OwnerCode)
							ELSE tblWSInvoiceDoc.CustomerCode
							END
						) IN (
						(
							SELECT [VALUE]
							FROM fnSplitStringAsTable(@CustomerList, ',')
							)
						)
					OR ISNULL(@CustomerList, '') = ''
					)
			
			UNION ALL
			
			SELECT tblInvoiceDoc.dteJournalDate AS [Date]
				,tblInvoiceDoc.strInvDocID AS JobNumber
				,tblInvoiceDocDT.strPartNumber AS PartNumber
				,tblInvoiceDocDT.strPartDesc AS PartDesc
				,tblInvoiceDocDT.strLocation AS Location
				,tblWSInvoiceDoc.ServiceableItemCode AS ServiceableItemCode
				,tblWSServiceableItem.ServiceableItemDescription
				,tblWSInvoiceDoc.CustomerCode AS CustomerCode
				,tblCustomers.strCustDesc AS CustomerDetails
				,tblInvoiceDoc.bitIsForeign AS IsForeign
				,0 AS EstimatedCost
				,0 AS EstimatedCostF
				,(tblInvoiceDocDT.decUsedQty * tblInvoiceDocDT.decPriceEaExc) AS ActualCost
				,(tblInvoiceDocDT.decUsedQty * tblInvoiceDocDT.decPriceEaExcF) AS ActualCostF
				,0 AS EstimatedQty
				,(tblInvoiceDocDT.decUsedQty) AS ActualQty
				,tblWSInvoiceDoc.OwnerCode AS OwnerName
				,tblOwners.OwnerDesc
			FROM tblInvoiceDoc
			INNER JOIN tblWSInvoiceDoc ON tblWSInvoiceDoc.strInvDocID = tblInvoiceDoc.strInvDocID
			INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
			INNER JOIN tblCustomers ON tblCustomers.strCustName = tblWSInvoiceDoc.CustomerCode
			LEFT OUTER JOIN tblWSServiceableItem ON tblWSServiceableItem.ServiceableItemCode = tblWSInvoiceDoc.ServiceableItemCode
			LEFT JOIN tblOwners ON tblOwners.OwnerName = tblWSInvoiceDoc.OwnerCode
			WHERE (
					CONVERT(DATE, tblInvoiceDoc.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
						AND CONVERT(DATE, @FinishDate)
					)
				AND (
					tblWSInvoiceDoc.ServiceableItemCode IN (
						(
							SELECT [VALUE]
							FROM fnSplitStringAsTable(@ServiceableItemList, ',')
							)
						)
					OR ISNULL(@ServiceableItemList, '') = ''
					)
				AND (
					(
						CASE 
							WHEN (@IsFilterbyOwner = 1)
								THEN (tblWSInvoiceDoc.OwnerCode)
							ELSE tblWSInvoiceDoc.CustomerCode
							END
						) IN (
						(
							SELECT [VALUE]
							FROM fnSplitStringAsTable(@CustomerList, ',')
							)
						)
					OR ISNULL(@CustomerList, '') = ''
					)
			) AS tblDetailReportData
		GROUP BY [Date]
			,JobNumber
			,PartNumber
			,PartDesc
			,Location
			,ServiceableItemCode
			,ServiceableItemDescription
			,CustomerCode
			,CustomerDetails
			,IsForeign
			,OwnerName
			,OwnerDesc
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetJobnumbersForRequisition]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[GetProcessDocDTFromCode] ***********/

/*********** Start [dbo].[GetJobnumbersForRequisition] ***********/
CREATE PROCEDURE [dbo].[GetJobnumbersForRequisition]
AS
BEGIN
	--DoctType = 2 is Process Job
	SELECT 
		--CASE Cleared WHEN 1 THEN 'Closed' ELSE 'Open' END as 'JobStatus'
		ProcessDocID
		,ServiceableItemCode
		,JobTemplateID
		,OwnerCode
		,CustomerCode
		,CustomerDetails
		,SystemDate
		,DocumentDate
		,RequiredDate
		,ReferenceNumber
		,AddInfo
		,Technician
		,SalesName
		,Dept
		,DocType
		,InventoryTotal
		,LabourTotal
		,BuyOutsTotal
		,RecoveryTotal
		,InventoryTotalF
		,LabourTotalF
		,BuyOutsTotalF
		,RecoveryTotalF
		,Term
		,SubTotal
		,VAT
		,Total
		,IsForeign
		,SubTotalF
		,VATF
		,TotalF
		,IsFromQuote
		,QuoteDocID
		,Notes
		,Printed
		,Emailed
		,Cleared
		,Currency
		,DiscPerc
		,DiscAmt
		,DiscAmtF
		,RevisionNumber
		,Exchange
		,SubFormated
		,VATFormatted
		,TotFormatted
		,DiscFormatted
		,CreatedDate
		,UpdatedDate
		,CreatedBy
		,UpdatedBy
		,SOReasonCode
		,DelMethodCode
		,TotalWeight
		,TotalVolWeight
		,DeliveryCost
		,DeliveryCostF
		,DeliveryCostFormatted
		,(CASE WHEN JobStatusType = 2 THEN 'Open' ELSE CASE WHEN JobStatusType = 4 THEN 'Work In Progress' END END) AS JobStatusText
 FROM tblWSProcessDoc 
 WHERE DocType = 2 AND Cleared = 0
 END
GO
/****** Object:  StoredProcedure [dbo].[GetJobProfitabilityReportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetJobProfitabilityReportData] (
	@CustomerList NVARCHAR(max)
	,@ServiceableItemList NVARCHAR(max)
	,@StartDate DATETIME
	,@FinishDate DATETIME
	,@IsCheckedSummary BIT
	,@IsFilterbyOwner BIT
	)
AS
BEGIN
	IF @IsCheckedSummary = 1
	BEGIN
			;

		WITH JobProfitSummaryCTE (
			JournalDate
			,JobNumber
			,ServiceableItemCode
			,ServiceableItemDescription
			,CustomerCode
			,CustomerDesc
			,RevenueAmt
			,CostAmt
			,OwnerName
			,OwnerDesc
			)
		AS (
			SELECT tblInvoiceDoc.dteJournalDate AS JournalDate
				,tblWSInvoiceDoc.strInvDocID AS JobNumber
				,tblWSInvoiceDoc.ServiceableItemCode AS ServiceableItemCode
				,tblWSServiceableItem.ServiceableItemDescription AS ServiceableItemDescription
				,tblCustomers.strCustName AS CustomerCode
				,tblCustomers.strCustDesc AS CustomerDesc
				,SUM(tblInvoiceDocDT.decLineTotInc) AS RevenueAmt
				,(
					CASE 
						WHEN tblInvoiceDocDT.intType = 1 --inv = 1  
							THEN SUM(tblInvoiceDocDT.decLastPPUnit * tblInvoiceDocDT.decUsedQty)
						ELSE CASE 
								WHEN tblInvoiceDocDT.intType = 4
									OR tblInvoiceDocDT.intType = 11 --4 = service and 11= buyout  
									THEN SUM(tblInvoiceDocDT.decStandardCost * tblInvoiceDocDT.decUsedQty)
								END
						END
					) AS CostAmt
					,tblOwners.OwnerName
			,tblOwners.OwnerDesc
			--SUM(tblInvTrackingDT.decRevenue) AS Revenue,   
			--SUM(tblInvTrackingDT.decCOGS) AS Cost  
			FROM tblWSInvoiceDoc
			INNER JOIN tblInvoiceDoc ON tblWSInvoiceDoc.strInvDocID = tblInvoiceDoc.strInvDocID
			LEFT OUTER JOIN tblWSServiceableItem ON tblWSServiceableItem.ServiceableItemCode = tblWSInvoiceDoc.ServiceableItemCode
			INNER JOIN tblCustomers ON tblWSInvoiceDoc.CustomerCode = tblCustomers.strCustName
			INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblWSInvoiceDoc.strInvDocID
			LEFT JOIN tblOwners ON tblOwners.OwnerName = tblWSInvoiceDoc.OwnerCode
			--INNER JOIN tblInvTracking ON tblInvoiceDoc.lngInvTrackID = tblInvTracking.lngInvTrackID  
			--INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID   
			WHERE (
					CONVERT(DATE, tblInvoiceDoc.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
						AND CONVERT(DATE, @FinishDate)
					)
				--and tblInvTracking.intModule = 2  -- fetch only invoice job records  
				AND (
					tblWSServiceableItem.ServiceableItemCode IN (
						(
							SELECT [VALUE]
							FROM fnSplitStringAsTable(@ServiceableItemList, ',')
							)
						)
					OR ISnull(@ServiceableItemList, '') = ''
					)
				AND (
					(
						CASE 
							WHEN (@IsFilterbyOwner = 1)
								THEN (tblOwners.OwnerName)
							ELSE tblCustomers.strCustName
							END
						) IN (
						(
							SELECT [VALUE]
							FROM fnSplitStringAsTable(@CustomerList, ',')
							)
						)
					OR ISnull(@CustomerList, '') = ''
					)
			GROUP BY tblInvoiceDoc.dteJournalDate
				,tblWSInvoiceDoc.strInvDocID
				,tblWSInvoiceDoc.ServiceableItemCode
				,tblWSServiceableItem.ServiceableItemDescription
				,tblCustomers.strCustName
				,tblCustomers.strCustDesc
				,tblInvoiceDocDT.intType
				,tblOwners.OwnerName
			,tblOwners.OwnerDesc

			)
		SELECT JournalDate
			,JobNumber
			,ServiceableItemCode
			,ServiceableItemDescription
			,CustomerCode
			,CustomerDesc
			,SUM(RevenueAmt) AS Revenue
			,SUM(CostAmt) AS Cost
			,OwnerName
			,OwnerDesc
		FROM JobProfitSummaryCTE
		GROUP BY JournalDate
			,JobNumber
			,ServiceableItemCode
			,ServiceableItemDescription
			,CustomerCode
			,CustomerDesc
			,OwnerName
			,OwnerDesc
	END
	ELSE
	BEGIN
		SELECT tblInvoiceDoc.dteJournalDate AS JournalDate
			,tblInvoiceDoc.strInvDocID AS JobNumber
			,tblInvoiceDoc.strCustName AS CustomerCode
			,tblWSInvoiceDoc.ServiceableItemCode AS ServiceableItemCode
			,tblWSServiceableItem.ServiceableItemDescription AS ServiceableItemDescription
			--,tblInvTrackingDT.decQty * - 1 AS Qty  
			--,tblInvTrackingDT.strPartNumber AS PartNumber  
			--,tblInvTrackingDT.decRevenue AS Revenue  
			--,tblInvTrackingDT.decCOGS AS Cost  
			,tblInvoiceDocDT.decUsedQty AS Qty
			,tblInvoiceDocDT.strPartNumber AS PartNumber
			,tblInvoiceDocDT.decLineTotInc AS Revenue
			,(
				CASE 
					WHEN tblInvoiceDocDT.intType = 1 --inv = 1  
						THEN tblInvoiceDocDT.decLastPPUnit
					ELSE CASE 
							WHEN tblInvoiceDocDT.intType = 4
								OR tblInvoiceDocDT.intType = 11 --4 = service and 11= buyout  
								THEN tblInvoiceDocDT.decStandardCost
							END
					END
				) AS Cost
			,(
				SELECT strCustDesc
				FROM tblCustomers
				WHERE strCustName = tblInvoiceDoc.strCustName
				) AS CustomerDesc
				,tblWSInvoiceDoc.OwnerCode as OwnerName
			,(
				SELECT OwnerDesc
				FROM tblOwners
				WHERE OwnerName = tblWSInvoiceDoc.OwnerCode
				) AS OwnerDesc
		FROM tblInvoiceDoc
		INNER JOIN tblWSInvoiceDoc ON tblWSInvoiceDoc.strInvDocID = tblInvoiceDoc.strInvDocID
		--INNER JOIN tblInvTracking ON tblInvoiceDoc.lngInvTrackID = tblInvTracking.lngInvTrackID  
		--INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID  
		INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
		LEFT OUTER JOIN tblWSServiceableItem ON tblWSServiceableItem.ServiceableItemCode = tblWSInvoiceDoc.ServiceableItemCode
		WHERE (
				CONVERT(DATE, tblInvoiceDoc.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @FinishDate)
				)
			AND (
				tblWSServiceableItem.ServiceableItemCode IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@ServiceableItemList, ',')
						)
					)
				OR ISnull(@ServiceableItemList, '') = ''
				)
			AND (
				(
					CASE 
						WHEN (@IsFilterbyOwner = 1)
							THEN (tblWSInvoiceDoc.OwnerCode)
						ELSE tblInvoiceDoc.strCustName
						END
					) IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@CustomerList, ',')
						)
					)
				OR ISnull(@CustomerList, '') = ''
				)
		ORDER BY tblInvoiceDoc.strInvDocID
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetJobTemplateIDList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[GetSelectedTechnicianData] ***********/

/*********** Start [dbo].[GetJobTemplateIDList] ***********/
CREATE PROCEDURE [dbo].[GetJobTemplateIDList]
AS
BEGIN
	Select JobTemplateCode from tblWSJobTemplate
END
GO
/****** Object:  StoredProcedure [dbo].[GetJobTemplateListReportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [LoadServiceableItemTypeList] ***********/

/*********** Start [GetJobTemplateListReportData] ***********/
CREATE PROCEDURE [dbo].[GetJobTemplateListReportData]
(
	@JobTemplateList nvarchar(max),
	@ServiceableItemTypeList nvarchar(max),
	@IsSummary bit
)
AS
BEGIN
	IF @IsSummary = 1
	BEGIN
		SELECT 
		JobTemplateID
		,JobTemplateCode
		,JobTemplateDescription
		,SIT.ServiceableItemTypeCode
		,SIT.ServiceableItemTypeDescription
		,JT.IsInactive
		,SIT.FrequencyOfService
		,Notes
		,InventoryTotal
		,LabourTotal
		,BuyOutsTotal
		,RecoveryTotal
		,Total
		,InventoryTotalF
		,LabourTotalF
		,BuyOutsTotalF
		,RecoveryTotalF
		,TotalF
	FROM 
		tblWSJobTemplate JT
	INNER JOIN 
		tblWSServiceableItemType SIT on JT.ServiceableItemTypeCode = SIT.ServiceableItemTypeCode
	WHERE 
		(JT.JobTemplateID IN (SELECT [VALUE] FROM fnSplitStringAsTable(@JobTemplateList, ',')) or ISnull(@JobTemplateList,'')='')
		AND (SIT.ServiceableItemTypeId IN (SELECT [VALUE] FROM fnSplitStringAsTable(@ServiceableItemTypeList, ',')) or ISnull(@ServiceableItemTypeList,'') = '')
		--AND SIT.FrequencyOfService = CASE WHEN @IsCheckedAllServiceFreq = 1 THEN SIT.FrequencyOfService ELSE @FrequenceService END
	END
	ELSE
	BEGIN
		select 
			JT.JobTemplateID
		,JobTemplateCode
		,JobTemplateDescription
		,SIT.ServiceableItemTypeCode
		,SIT.ServiceableItemTypeDescription
		,JTDT.PartNumber
		,JTDT.PartDesc
		,JTDT.ItemType
		,JTDT.Location
		,JTDT.Qty
		,JTDT.[LineNo]
		,JTDT.ID
		,JT.IsInactive
		,SIT.FrequencyOfService
		,Notes
		from 
			tblWSJobTemplate JT
		INNER JOIN tblWSJobTemplateDT JTDT On JT.JobTemplateID = JTDT.JobTemplateID
		INNER JOIN tblWSServiceableItemType SIT on JT.ServiceableItemTypeCode = SIT.ServiceableItemTypeCode
		WHERE 
			(JT.JobTemplateID IN (SELECT [VALUE] FROM fnSplitStringAsTable(@JobTemplateList, ',')) or ISnull(@JobTemplateList,'')='')
			AND (SIT.ServiceableItemTypeId IN (SELECT [VALUE] FROM fnSplitStringAsTable(@ServiceableItemTypeList, ',')) or ISnull(@ServiceableItemTypeList,'') = '')
			--AND SIT.FrequencyOfService = CASE WHEN @IsCheckedAllServiceFreq = 1 THEN SIT.FrequencyOfService ELSE @FrequenceService END

	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetJobTemplates]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[DeleteJobTemplate] ***********/

/*********** Start [dbo].[GetJobTemplates] ***********/
CREATE PROCEDURE [dbo].[GetJobTemplates]
(
	@IsAllJobs AS BIT
)
AS
BEGIN
	IF @IsAllJobs = 1
		SELECT 
			JobTemplateID ,
			JobTemplateCode ,
			JobTemplateDescription ,
			ServiceableItemTypeCode ,
			IsInactive ,
			FrequencyOfService ,
			Notes ,
			InventoryTotal ,
			LabourTotal	,
			BuyOutsTotal ,
			RecoveryTotal ,
			Total ,
			InventoryTotalF	,
			LabourTotalF ,
			BuyOutsTotalF ,
			RecoveryTotalF ,
			TotalF ,
			CreatedDate	,
			UpdatedDate	,
			CreatedBy ,
			UpdatedBy					
		FROM 
			tblWSJobTemplate
	ELSE
		SELECT 
			JobTemplateID ,
			JobTemplateCode ,
			JobTemplateDescription ,
			ServiceableItemTypeCode ,
			IsInactive ,
			FrequencyOfService ,
			Notes ,
			InventoryTotal ,
			LabourTotal	,
			BuyOutsTotal ,
			RecoveryTotal ,
			Total ,
			InventoryTotalF	,
			LabourTotalF ,
			BuyOutsTotalF ,
			RecoveryTotalF ,
			TotalF ,
			CreatedDate	,
			UpdatedDate	,
			CreatedBy ,
			UpdatedBy					
		FROM 
			tblWSJobTemplate
		WHERE 
			IsInactive = 0
END
GO
/****** Object:  StoredProcedure [dbo].[GetJobTemplatesByServiceableItemCode]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetJobTemplatesByServiceableItemCode]
(
	@ServiceableItemCode AS nvarchar(100)
)
AS
BEGIN
		SELECT 
			JobTemplateID,
			JobTemplateCode,
			JobTemplateDescription,
			ServiceableItemTypeCode,
			Template.IsInactive,
			FrequencyOfService,
			Notes,
			InventoryTotal,
			LabourTotal,
			BuyOutsTotal,
			RecoveryTotal,
			Total,
			InventoryTotalF,
			LabourTotalF,
			BuyOutsTotalF,
			RecoveryTotalF,
			TotalF,
			Template.CreatedDate,
			Template.UpdatedDate,
			Template.CreatedBy,
			Template.UpdatedBy,
			Template.ServiceableItemTypeId,
			JobTemplateCode +'-'+ JobTemplateDescription AS DisplayJobTemplate
		FROM
(
SELECT tblWSJobTemplate.*, tblWSServiceableItemType.ServiceableItemTypeId FROM tblWSJobTemplate INNER JOIN tblWSServiceableItemType 
ON tblWSJobTemplate.ServiceableItemTypeCode = tblWSServiceableItemType.ServiceableItemTypeCode WHERE tblWSJobTemplate.IsInactive = 0
) AS Template
INNER JOIN tblWSServiceableItem ON Template.ServiceableItemTypeId = tblWSServiceableItem.ServiceableItemTypeId
WHERE tblWSServiceableItem.ServiceableItemCode = @ServiceableItemCode
END
GO
/****** Object:  StoredProcedure [dbo].[GetJobTemplatesFromServiceableItem]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/***********************End  [GetBinIdStringForPartNumber]********************************************/

/***********************Start [GetJobTemplatesFromServiceableItem]********************************************/

CREATE PROCEDURE [dbo].[GetJobTemplatesFromServiceableItem]
(
	@ServiceableItemCode AS nvarchar(30)
)
AS
BEGIN
	   SELECT 
			tblWSJobTemplate.JobTemplateID ,
			tblWSJobTemplate.JobTemplateCode ,
			tblWSJobTemplate.JobTemplateDescription ,
			tblWSJobTemplate.ServiceableItemTypeCode ,
			tblWSJobTemplate.IsInactive ,
			tblWSJobTemplate.FrequencyOfService ,
			tblWSJobTemplate.Notes ,
			tblWSJobTemplate.InventoryTotal ,
			tblWSJobTemplate.LabourTotal	,
			tblWSJobTemplate.BuyOutsTotal ,
			tblWSJobTemplate.RecoveryTotal ,
			tblWSJobTemplate.Total ,
			tblWSJobTemplate.InventoryTotalF	,
			tblWSJobTemplate.LabourTotalF ,
			tblWSJobTemplate.BuyOutsTotalF ,
			tblWSJobTemplate.RecoveryTotalF ,
			tblWSJobTemplate.TotalF ,
			tblWSJobTemplate.CreatedDate	,
			tblWSJobTemplate.UpdatedDate	,
			tblWSJobTemplate.CreatedBy ,
			tblWSJobTemplate.UpdatedBy					
		FROM 
			tblWSJobTemplate
		INNER JOIN tblWSServiceableItemType ON tblWSServiceableItemType.ServiceableItemTypeCode = tblWSJobTemplate.ServiceableItemTypeCode
		INNER JOIN tblWSServiceableItem ON tblWSServiceableItemType.ServiceableItemTypeId = tblWSServiceableItem.ServiceableItemTypeId
		WHERE 
			tblWSServiceableItem.ServiceableItemCode = @ServiceableItemCode AND
			tblWSJobTemplate.IsInactive = 0
END
GO
/****** Object:  StoredProcedure [dbo].[GetJournalCenterData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********** End [NavigateSalesByNumber] ***********/

/********** Start [GetJournalCenterData] ***********/
CREATE PROCEDURE [dbo].[GetJournalCenterData] 
(
	@JournalID VARCHAR(50),	
	@IsCurrentYearAdjust BIT
)

AS
BEGIN
		
	IF(@IsCurrentYearAdjust = 1)
		SELECT DISTINCT CONCAT(a.intGLNumber, ' - ', b.strDesc, CHAR(10), CHAR(13)) FROM tblCenterEnt as c INNER JOIN tblJournalEnt as a ON c.lngJourID = a.lngJourID AND c.intLineNum = a.intLineNum INNER JOIN tblAccounts as b ON a.intGLNumber = b.intGLNumber WHERE (c.lngJourID = @JournalID) AND (a.intGLNumber IN (SELECT intGLNumber FROM tblAccounts WHERE bitAllowCenters = 0 AND intAccType <> 3))
	ELSE 
		SELECT DISTINCT CONCAT(a.intGLNumber, ' - ', b.strDesc, CHAR(10), CHAR(13)) FROM tblCenterEntLY as c INNER JOIN tblJournalEntLY as a ON c.lngJourID = a.lngJourID AND c.intLineNum = a.intLineNum INNER JOIN tblAccountsLY as b ON a.intGLNumber = b.intGLNumber WHERE (c.lngJourID = @JournalID) AND (a.intGLNumber IN (SELECT intGLNumber FROM tblAccountsLY WHERE bitAllowCenters = 0 AND intAccType <> 3))

END
GO
/****** Object:  StoredProcedure [dbo].[GetJournalCodeData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [JournalCodeUpdate] ***********/

/*********** Start [GetJournalCodeData] ***********/
CREATE PROCEDURE [dbo].[GetJournalCodeData]
(
	@PartNumber varchar(50) = ''
)
AS
BEGIN	
	SELECT strPartNumber AS 'PartNumber'
		,strDesc AS 'Desc'
		,intType AS 'Type'
		,intExpAcct AS 'ExpAcct'
		,strAddInfo AS 'AddInfo'
		,bitInactive AS [IsInactive]	
		,strField1 'Field1'
		,strField2 'Field2'
		,strField3 'Field3'
		,strField4 'Field4'
		,strField5 'Field5'
		,strField6 'Field6'
		,bitExclCommission AS 'IsExclCommission'
	FROM dbo.fnTblInvLocationsAll() tblInv
	WHERE strPartNumber = @PartNumber	
END
GO
/****** Object:  StoredProcedure [dbo].[GetJournalEntryReportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetJournalEntryReportData]
(
	@IsCurrentYear AS bit,
	@JournalID AS bigint
)
AS
BEGIN
	IF @IsCurrentYear = 1
	BEGIN
		SELECT 
		tblJournal.dteJournalDate AS JournalDate,  
		tblJournal.lngJourID AS JourID, 
		(
		CASE 
			WHEN tblJournal.strSource = 'Stock Count'
				THEN (
						CASE 
							WHEN (
									SELECT COUNT(strAdjDocID)
									FROM tblInvAdjDoc
									INNER JOIN tblJournal ON tblInvAdjDoc.lngJourID = tblJournal.lngJourID
									 AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
									WHERE tblJournal.lngJourID = @JournalID
									) = 0
								THEN tblJournal.strSource
							ELSE (
									SELECT ISNULL(CONCAT (
												'SC/',
												strAdjDocID
												), tblJournal.strSource)
									FROM tblInvAdjDoc
									INNER JOIN tblJournal ON tblInvAdjDoc.lngJourID = tblJournal.lngJourID
									AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
									WHERE tblJournal.lngJourID = @JournalID
									)
							END
						)
			ELSE strSource
			END
		) AS [Source], 
		tblJournalEnt.strComment AS Comment, 
		tblJournalEnt.intGLNumber AS GLNumber, 
		tblAccounts.strDesc AS [Description], 
		tblJournalEnt.decDebits AS Debits, 
		tblJournalEnt.decCredits AS Credits,
		tblJournalEnt.strFormula AS Formula
	FROM 
		tblAccounts 
	INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber 
	INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
	WHERE 
		(tblJournal.lngJourID = @JournalID) 
	ORDER BY 
		tblJournal.lngJourID, 
		tblJournalEnt.intGLNumber 
	END
	ELSE
	BEGIN
		SELECT 
			tblJournalLY.dteJournalDate AS JournalDate,  
			tblJournalLY.lngJourID AS JourID, 
			(
			CASE 
				WHEN tblJournalLY.strSource = 'Stock Count'
					THEN (
							CASE 
								WHEN (
										SELECT COUNT(strAdjDocID)
										FROM tblInvAdjDoc
										INNER JOIN tblJournalLY ON tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID
										AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate
										WHERE tblJournalLY.lngJourID = @JournalID
										) = 0
									THEN tblJournalLY.strSource
								ELSE (
										SELECT ISNULL(CONCAT (
													'SC/',
													strAdjDocID
													), tblJournalLY.strSource)
										FROM tblInvAdjDoc
										INNER JOIN tblJournalLY ON tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID
										AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate
										WHERE tblJournalLY.lngJourID = @JournalID
										)
								END
							)
				ELSE strSource
				END
			) AS [Source], 
			tblJournalEntLY.strComment AS Comment, 
			tblJournalEntLY.intGLNumber AS GLNumber, 
			tblAccountsLY.strDesc AS [Description], 
			tblJournalEntLY.decDebits AS Debits, 
			tblJournalEntLY.decCredits AS Credits,
			tblJournalEntLY.strFormula AS Formula
		FROM 
			tblAccountsLY 
		INNER JOIN tblJournalEntLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber 
		INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
		WHERE 
			(tblJournalLY.lngJourID = @JournalID) 
		ORDER BY 
			tblJournalLY.lngJourID, 
			tblJournalEntLY.intGLNumber
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetJournalId]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateOderDocDTRemaining] ***********/

CREATE PROCEDURE  [dbo].[GetJournalId]
(	
	@SQDocID         AS NVARCHAR(50)=NULL,
	@SQSalesDocType  AS INT = NULL
)
AS
BEGIN
	
	IF (@SQSalesDocType = 0  OR @SQSalesDocType = 4)
	BEGIN
		DECLARE @SQJourID int = null
		SET @SQJourID =  (SELECT lngJourID FROM tblInvoiceDoc WHERE strInvDocID = @SQDocID)
		
		SELECT tblCustPay.lngJourID AS JournalId, tblCustTrans.bitDocReRated AS IsDocReRated, tblCustTransDT.bitReversed AS IsReversed FROM tblCustTrans 
		INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
		INNER JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID 
		WHERE (tblCustTrans.strInvDocID = @SQDocID) AND (tblCustPay.bitReversed = 0) AND (tblCustTransDT.bitReversed = 0) AND (tblCustPay.lngJourID <> @SQJourID)

		UNION ALL

		SELECT tblCustPay.lngJourID AS JournalId, tblCustTrans.bitDocReRated AS IsDocReRated, tblCustTransDT.bitReversed AS IsReversed FROM tblCustTrans 
		INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
		INNER JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID 
		WHERE (tblCustTrans.strInvDocID = @SQDocID) AND (tblCustTransDT.bitReversed = 1) AND (tblCustPay.lngJourID = @SQJourID)
	END  
	ELSE IF (@SQSalesDocType = 1  OR @SQSalesDocType = 3 OR @SQSalesDocType = 9)
	BEGIN
		  declare @SQInvoiceDocCount int = 0; 
		  declare @JournalId bigint = 0; 

		  IF (@SQSalesDocType = 1 OR @SQSalesDocType = 9)
		  BEGIN
		   SET @SQInvoiceDocCount = (SELECT COUNT(strInvDocID) FROM tblInvoiceDoc WHERE strOrdDocID = @SQDocID)
		  END
 
		  SET @JournalId = (SELECT TOP 1 tblCustPay.lngJourID FROM tblCustTrans 
		  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
		  INNER JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID 
		  WHERE (tblCustTrans.strOrdDocID = @SQDocID) AND (tblCustPay.bitReversed = 0) AND (tblCustTransDT.bitReversed = 0))

		  SELECT @SQInvoiceDocCount AS InvoiceDocCount, @JournalId AS JournalId
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetLabelFormDocs]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetLabelFormDocs]    Script Date: 07-11-2019 10:38:47 ******/
CREATE PROCEDURE [dbo].[GetLabelFormDocs] 
	 @bitGlobal AS BIT
	,@bitDisplayAll AS BIT
	,@strMachName AS NVARCHAR(300)
AS
BEGIN
	IF (@bitDisplayAll = 1)
	BEGIN
		SELECT	 bitGlobal AS GlobalDoc
				,strMachine AS Machine
				,strName AS Name
				,strForm AS Form
				,strPrinter AS Printer
				,bitDocDefault AS DocDefault
				,lngID AS lngID
		FROM tblLabelFormsDocs
		WHERE (
				strMachine = @strMachName
				OR strMachine IS NULL
				)
		ORDER BY bitGlobal
			,strName
	END
	ELSE IF (@bitGlobal = 1)
	BEGIN
		SELECT   bitGlobal AS GlobalDoc
				,strMachine AS Machine
				,strName AS Name
				,strForm AS Form
				,strPrinter AS Printer
				,bitDocDefault AS DocDefault
				,lngID AS lngID
		FROM tblLabelFormsDocs
		WHERE bitGlobal = @bitGlobal
		ORDER BY strName
	END
	ELSE
	BEGIN
		SELECT   bitGlobal AS GlobalDoc
				,strMachine AS Machine
				,strName AS Name
				,strForm AS Form
				,strPrinter AS Printer
				,bitDocDefault AS DocDefault
				,lngID AS lngID
		FROM tblLabelFormsDocs
		WHERE bitGlobal = @bitGlobal
			AND strMachine = @strMachName
		ORDER BY strName
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetLandedCostAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetLandedCostAccountsCY](@bitGLAccountAccess BIT, @bitShowAllCurrency BIT, @strUserName NVARCHAR(40), @strCurrency NVARCHAR(6), @strHomeCurrency NVARCHAR(6)) AS  
  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (    tblAccounts.bitIsLinkedAccount = 0     OR tblAccounts.bitLinkSalesDisc = 1     OR tblAccounts.bitLinkPurDisc = 1     OR tblAccounts.bitLinkAssCosts = 1     OR tblAccounts.bitLinkAdjWriteOff = 1     OR tblAccounts.bitLinkExc = 1     
   OR tblAccounts.bitDefBank = 1     OR tblAccounts.bitLinkAddCost = 1     OR tblAccounts.bitLinkManStandardCost = 1     )  
    AND (  
         tblAccounts.intGLNumber NOT IN (  
      SELECT intGLAsset       FROM tblAccountSets(NOLOCK)  
      WHERE (          blnService = 0           AND blnBuyout = 0           )  
      )  
     )  
    AND (  
         tblAccounts.intGLNumber NOT IN (  
      SELECT intPurchAcct       FROM tblTaxDef(NOLOCK)  
      )  
     )  
    AND (  
         tblAccounts.intGLNumber NOT IN (  
      SELECT intSalesAcct       FROM tblTaxDef(NOLOCK)  
      )  
     )  
    AND (tblAccounts.bitInactive = 0)  
    AND (    tblAccounts.intGroupCode = 1     OR tblAccounts.intGroupCode = 2     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (  
     tblAccounts.bitIsLinkedAccount = 0  
     OR tblAccounts.bitLinkSalesDisc = 1  
     OR tblAccounts.bitLinkPurDisc = 1  
     OR tblAccounts.bitLinkAssCosts = 1  
     OR tblAccounts.bitLinkAdjWriteOff = 1  
     OR tblAccounts.bitLinkExc = 1  
     OR tblAccounts.bitDefBank = 1  
     OR tblAccounts.bitLinkAddCost = 1  
     OR tblAccounts.bitLinkManStandardCost = 1  
     )  
    AND (  
     tblAccounts.intGLNumber NOT IN (  
      SELECT intGLAsset  
      FROM tblAccountSets(NOLOCK)  
      WHERE (  
        blnService = 0  
        AND blnBuyout = 0  
        )  
      )  
     )  
    AND (  
     tblAccounts.intGLNumber NOT IN (  
      SELECT intPurchAcct  
      FROM tblTaxDef(NOLOCK)  
      )  
     )  
    AND (  
     tblAccounts.intGLNumber NOT IN (  
      SELECT intSalesAcct  
      FROM tblTaxDef(NOLOCK)  
      )  
     )  
    AND (tblAccounts.bitInactive = 0)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (    tblAccounts.bitIsLinkedAccount = 0     OR tblAccounts.bitLinkSalesDisc = 1     OR tblAccounts.bitLinkPurDisc = 1     OR tblAccounts.bitLinkAssCosts = 1     OR tblAccounts.bitLinkAdjWriteOff = 1     OR tblAccounts.bitLinkExc = 1    
   OR tblAccounts.bitDefBank = 1     OR tblAccounts.bitLinkAddCost = 1     OR tblAccounts.bitLinkManStandardCost = 1     )  
    AND (  
         tblAccounts.intGLNumber NOT IN (  
      SELECT intGLAsset       FROM tblAccountSets(NOLOCK)  
      WHERE (          blnService = 0           AND blnBuyout = 0           )  
      )  
     )  
    AND (  
         tblAccounts.intGLNumber NOT IN (  
      SELECT intPurchAcct       FROM tblTaxDef(NOLOCK)  
      )  
     )  
    AND (  
         tblAccounts.intGLNumber NOT IN (  
      SELECT intSalesAcct       FROM tblTaxDef(NOLOCK)  
      )  
     )  
    AND (tblAccounts.bitInactive = 0)  
    AND (    tblAccounts.intGroupCode = 1     OR tblAccounts.intGroupCode = 2     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (  
     tblAccounts.bitIsLinkedAccount = 0  
     OR tblAccounts.bitLinkSalesDisc = 1  
     OR tblAccounts.bitLinkPurDisc = 1  
     OR tblAccounts.bitLinkAssCosts = 1  
     OR tblAccounts.bitLinkAdjWriteOff = 1  
     OR tblAccounts.bitLinkExc = 1  
     OR tblAccounts.bitDefBank = 1  
     OR tblAccounts.bitLinkAddCost = 1  
     OR tblAccounts.bitLinkManStandardCost = 1  
     )  
    AND (  
     tblAccounts.intGLNumber NOT IN (  
      SELECT intGLAsset  
      FROM tblAccountSets(NOLOCK)  
      WHERE (  
        blnService = 0  
        AND blnBuyout = 0  
        )  
      )  
     )  
    AND (  
     tblAccounts.intGLNumber NOT IN (  
      SELECT intPurchAcct  
      FROM tblTaxDef(NOLOCK)  
      )  
     )  
    AND (  
     tblAccounts.intGLNumber NOT IN (  
      SELECT intSalesAcct  
      FROM tblTaxDef(NOLOCK)  
      )  
     )  
    AND (tblAccounts.bitInactive = 0)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
  
 RETURN  
END  
GO

/****** Object:  StoredProcedure [dbo].[GetLandedCostAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetLandedCostAccountsLY]  
(  
 @bitGLAccountAccess bit,  
 @bitShowAllCurrency bit,  
 @strUserName nvarchar(40),  
 @strCurrency nvarchar(6),  
 @strHomeCurrency nvarchar(6)  
)  
AS  
  
BEGIN  
  
if @bitShowAllCurrency = 1  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName   
  FROM tblAccountsLY  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitInactive = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccType = 1 OR tblAccountsLY.intAccType = 2 OR tblAccountsLY.intAccType = 5)   
  AND (tblAccountsLY.intAccClass <> 15)  
  AND tblAccountsLY.bitLinkAPVendMast = 0 AND tblAccountsLY.bitLinkPrepayVendMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccountsLY (NOLOCK) LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitInactive = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccType = 1 OR tblAccountsLY.intAccType = 2 OR tblAccountsLY.intAccType = 5)   
  AND (tblAccountsLY.intAccClass <> 15)  
  AND tblAccountsLY.bitLinkAPVendMast = 0 AND tblAccountsLY.bitLinkPrepayVendMast = 0  
  ORDER BY intAccType, tblAccountsLY.intGLNumber  
  
 END  
  
END  
ELSE  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName   
  FROM tblAccountsLY  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitInactive = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccType = 1 OR tblAccountsLY.intAccType = 2 OR tblAccountsLY.intAccType = 5)   
  AND (tblAccountsLY.intAccClass <> 15)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccountsLY.bitLinkAPVendMast = 0 AND tblAccountsLY.bitLinkPrepayVendMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccountsLY (NOLOCK) LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitInactive = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccType = 1 OR tblAccountsLY.intAccType = 2 OR tblAccountsLY.intAccType = 5)   
  AND (tblAccountsLY.intAccClass <> 15)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccountsLY.bitLinkAPVendMast = 0 AND tblAccountsLY.bitLinkPrepayVendMast = 0  
  ORDER BY intAccType, tblAccountsLY.intGLNumber  
  
 END  
  
END  
  
RETURN  
  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetLastReceivedCost]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvEntriesContra] ***********/

/*********** Start [GetLastReceivedCost] ***********/
CREATE PROCEDURE [dbo].[GetLastReceivedCost]
AS
BEGIN
    SELECT 
	CASE 
		WHEN decQty = 0 THEN 0
		ELSE
			CASE WHEN (decCOGS / decQty) < 0 
				THEN (decCOGS / decQty) * -1
			ELSE (decCOGS / decQty)
			END
	END AS COGS ,
       lngID As ID,
       strPartNumber AS PartNumber,
       strLocName AS [Location],
       strLocName AS LocName

FROM tblInvTrackingDT
END
GO
/****** Object:  StoredProcedure [dbo].[GetLastYearCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetLastYearCount]    Script Date: 28-01-2020 07:30:00 AM ******/
Create Procedure [dbo].[GetLastYearCount]
As
BEGIN
	Select Count(*) from tblAccountsLY (NOLOCK) 
END
GO
/****** Object:  StoredProcedure [dbo].[GetLatestIRnumberByProcessJob]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetOpenOrdersProcessJobInfo] ***********/


/*********** Start [GetLatestIRnumberByProcessJob]***********/

---------------------------------

CREATE PROCEDURE [dbo].[GetLatestIRnumberByProcessJob] (@DocNumber NVARCHAR(30))
AS
BEGIN
	SELECT TOP (1) *
	FROM tblWSWIP
	WHERE JBDocID = @DocNumber
	ORDER BY id DESC
END
GO
/****** Object:  StoredProcedure [dbo].[GetLiabilityAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetLiabilityAccountsCY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.intAccType = 2  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.intAccType = 2  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.intAccType = 2  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.intAccType = 2  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
  
 RETURN  
END
GO
/****** Object:  StoredProcedure [dbo].[GetLiabilityAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------
CREATE PROCEDURE [dbo].[GetLiabilityAccountsLY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 2  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 2  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 2  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 2  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
  
 RETURN  
END
GO
/****** Object:  StoredProcedure [dbo].[GetLinesCheckSecurity]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/***************Start [GetLinesCheckSecurity]***************/

-------------------------------
CREATE PROCEDURE [dbo].[GetLinesCheckSecurity] (@UidCenterIds AS NVARCHAR(100))
AS
BEGIN
	SELECT tblCenters.uidCenterID AS CenterID
		,(
			CASE 
				WHEN tblCenterAccts.lngId IS NULL
					THEN cast(0 AS BIT)
				ELSE cast(1 AS BIT)
				END
			) AS IsEnabled
		,intGLNumber AS AcctNumber
	FROM tblCenters
	LEFT JOIN tblCenterAccts ON tblCenterAccts.uidCenterID = tblCenters.uidCenterID
	--AND intGLNumber = @SQintGLNumber
	WHERE (bitInactive = 0)
		AND strLvl1 IN (
			SELECT strLvl1
			FROM tblCenters
			WHERE (strLvl2 IS NULL)
				AND (bitInactive = 0)
			)
		AND tblCenters.uidCenterID IN (
			SELECT [Value]
			FROM dbo.fnSplitStringAsTable(@UidCenterIds, ',')
			)
	ORDER BY strLvl1
		,strLvl2
		,strLvl3
		,strLvl4
		,strLvl5
END
GO
/****** Object:  StoredProcedure [dbo].[GetLinkAccountsDynamicLabels]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [NamingConvensionUpdate] ***********/

/*********** Start [GetLinkAccountsDynamicLabels] ***********/
CREATE PROCEDURE [dbo].[GetLinkAccountsDynamicLabels]
AS
BEGIN
	SELECT tblAccountClass.intAcctClassID AS AcctClassID
		,tblAccountClass.intAcctTypeID AS AcctTypeID
		,tblAccountClass.strCustomLabel AS CustomLabel
		,tblAccountClass.strDefaultLabel AS DefaultLabel
		,tblAccounts.bitLinkREarnings AS LinkREarnings
		,tblAccounts.bitLinkCEarnings AS LinkCEarnings
		,tblAccounts.bitLinkAP AS LinkAP
		,tblAccounts.bitLinkPurDisc AS LinkPurDisc
		,tblAccounts.bitLinkAR AS LinkAR
		,tblAccounts.bitLinkSalesDisc AS LinkSalesDisc
		,tblAccounts.bitLinkAssCosts AS LinkAssCosts
		,tblAccounts.bitDefBank AS DefBank
		,tblAccounts.bitLinkAdjWriteOff AS LinkAdjWriteOff
		,tblAccounts.bitLinkAddCost AS LinkAddCost
		,tblAccounts.bitLinkExc AS LinkExc
		,tblAccounts.bitLinkPrePay AS LinkPrePay
		,tblAccounts.bitLinkDeposit AS LinkDeposit
		,tblAccounts.bitLinkManStandardCost AS LinkManStandardCost
		,tblAccounts.bitLinkWIP AS LinkWIP
		,tblAccounts.bitRecon AS LinkWIP
		,tblAccounts.bitLinkDelAdvice AS LinkDelAdvice
	FROM tblAccountClass
	INNER JOIN tblAccounts ON tblAccountClass.intAcctClassID = tblAccounts.intAccClass
	WHERE tblAccounts.bitLinkREarnings = 1
		OR tblAccounts.bitLinkCEarnings = 1
		OR tblAccounts.bitLinkAP = 1
		OR tblAccounts.bitLinkPurDisc = 1
		OR tblAccounts.bitLinkAR = 1
		OR tblAccounts.bitLinkSalesDisc = 1
		OR tblAccounts.bitLinkAssCosts = 1
		OR tblAccounts.bitDefBank = 1
		OR tblAccounts.bitLinkAdjWriteOff = 1
		OR tblAccounts.bitLinkAddCost = 1
		OR tblAccounts.bitLinkExc = 1
		OR tblAccounts.bitLinkPrePay = 1
		OR tblAccounts.bitLinkDeposit = 1
		OR tblAccounts.bitLinkManStandardCost = 1
		OR tblAccounts.bitLinkWIP = 1
		OR tblAccounts.bitRecon = 1
		OR tblAccounts.bitLinkDelAdvice = 1
END
GO
/****** Object:  StoredProcedure [dbo].[GetLinkedCustomers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetLinkedCustomers](
@CustName nvarchar(MAX)
)
AS
BEGIN
	SELECT strCustName as CustomerName, strCustDesc as Description FROM tblCustomers WHERE strCustName IN (SELECT * FROM fnSplitStringAsTable(@CustName,','))
END
GO
/****** Object:  StoredProcedure [dbo].[GetLinkedCustomersForPicker]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetLinkedCustomersForPicker]
    (
      @CustomerNumber NVARCHAR(40),
      @Childrens NVARCHAR(MAX)

    )
AS
    BEGIN

        SELECT  strCustName AS CustomerName ,
                strCustDesc AS Description
        FROM    tblCustomers
        WHERE   strParentCust = ''
                AND strCustName <> @CustomerNumber
                AND strCustName NOT IN (
                SELECT  *
                FROM    fnSplitStringAsTable(@Childrens, ',') )
                AND strCustName NOT IN ( SELECT DISTINCT
                                                ( strParentCust )
                                         FROM   tblCustomers );

    END
GO
/****** Object:  StoredProcedure [dbo].[GetLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-------------------------------------------------
/*********** Start [GetLocation] ***********/
CREATE PROCEDURE [dbo].[GetLocation]
(
 @PartNumber NVARCHAR(100) = ''
,@InvLocation NVARCHAR(200)  = ''
)
AS
BEGIN

SELECT ISNULL(CASE 
			WHEN INV.intType = 5
				THEN @InvLocation
			ELSE CASE 
					WHEN ISNULL((
								SELECT COUNT(strUserName)
								FROM tblUsers
								), 0) = 0
						THEN ISNULL((
									SELECT EXT.strLocName
									FROM tblInvExt EXT
									WHERE EXT.strPartNumber = INV.strPartNumber
										AND EXT.bitDefault = 1
									), '')
					ELSE CASE 
							WHEN ISNULL(IE.bitInactive, 0) = 1
								THEN ISNULL((
											SELECT EXT.strLocName
											FROM tblInvExt EXT
											WHERE EXT.strPartNumber = INV.strPartNumber
												AND EXT.bitDefault = 1
											), '')
							ELSE IE.strLocName
							END
					END
			END, '')
FROM tblInv INV
LEFT JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber
	AND IE.strLocName = @InvLocation
WHERE (
		INV.strPartNumber = @PartNumber
		OR INV.strBarCode = @PartNumber
		OR INV.strBarCode2 = @PartNumber
		)
	AND (INV.bitInactive = 0)
END
GO
/****** Object:  StoredProcedure [dbo].[GetLocationBins]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [OperationsOnReversal] ***********/


/*********** End create stored procedure Receipt ***********/

/*********** Start create stored procedure MultipleBin ***********/

/*********** Start [GetLocationBins] ***********/
CREATE PROCEDURE [dbo].[GetLocationBins]
 -- Add the parameters for the stored procedure here
 @LocationName nvarchar(10),
 @PartNumber nvarchar(50),
 @SearchText nvarchar(100) = NULL,
 @BinIds nvarchar(100) = NULL,
 @ZeroOnHand BIT = NULL,
 @UserName nvarchar(20) = NULL

AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;

    -- Insert statements for procedure here
	
	IF @ZeroOnHand = 0
	BEGIN		
		SELECT 
		IBE.lngBinId AS 'BinId',
		ILB.strBinCode AS 'BinCode',
		ILB.strDescription AS 'Description',
		IBE.strLocName AS 'LocName',
		IBE.strPartNumber AS 'PartNumber',
		decMaximumQty AS 'MaximumQty',
		decAvail AS 'Avail',
		decOnHand AS 'OnHand',
		CAST(0 AS DECIMAL) AS 'IssueQty',
		ISNULL(INV.bitInvSerialType,0) AS 'IsInvSerialType',
		ILB.bitPickingBin AS 'PickingBin',
		ISNULL(ILB.bitReceivingBin, 0) AS 'ReceivingBin',
		ISNULL((SELECT COUNT(tblInvLocBinSec.strBinCode) FROM tblInvLocBinSec WHERE tblInvLocBinSec.strBinCode = ILB.strBinCode AND tblInvLocBinSec.strLocName = IBE.strLocName), 0) AS 'NoOfBinCode',
		ISNULL(tblInvLocBinSec.strUserName, '') AS 'UserName',
		0.00 As 'OldQty'
		FROM 
		tblInvExtBin IBE
		INNER JOIN tblInvLocBin ILB ON ILB.strLocName = IBE.strLocName AND ILB.lngId = IBE.lngBinId AND ILB.bitInactive = 0
		LEFT JOIN tblInvLocBinSec ON ILB.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = ILB.strLocName AND tblInvLocBinSec.strUserName = @UserName
		LEFT JOIN tblInv INV ON INV.strPartNumber = IBE.strPartNumber  
		WHERE
		IBE.strLocName = @LocationName AND IBE.strPartNumber = @PartNumber AND 
		(ILB.strBinCode = @SearchText OR @SearchText IS NULL) AND
		(ILB.lngId IN (Select CAST(Value AS bigint) From dbo.fnSplitStringAsTable(@BinIds,',')) OR @BinIds IS NULL)
		ORDER BY
		IBE.bitDefault, IBE.decOnHand desc
	END
	ELSE
	BEGIN	
		SELECT 
		IBE.lngBinId AS 'BinId',
		ILB.strBinCode AS 'BinCode',
		ILB.strDescription AS 'Description',
		IBE.strLocName AS 'LocName',
		IBE.strPartNumber AS 'PartNumber',
		decMaximumQty AS 'MaximumQty',
		decAvail AS 'Avail',
		decOnHand AS 'OnHand',
		CAST(0 AS DECIMAL) AS 'IssueQty',
		ISNULL(INV.bitInvSerialType,0) AS 'IsInvSerialType',
		ILB.bitPickingBin AS 'PickingBin',
		ILB.bitReceivingBin AS 'ReceivingBin',
		ISNULL((SELECT COUNT(tblInvLocBinSec.strBinCode) FROM tblInvLocBinSec WHERE tblInvLocBinSec.strBinCode = ILB.strBinCode AND tblInvLocBinSec.strLocName = IBE.strLocName), 0) AS 'NoOfBinCode',
		ISNULL(tblInvLocBinSec.strUserName, '') AS 'UserName',
		0.00 As 'OldQty'
		FROM 
		tblInvExtBin IBE
		INNER JOIN tblInvLocBin ILB ON ILB.strLocName = IBE.strLocName AND ILB.lngId = IBE.lngBinId  AND ILB.bitInactive = 0
		LEFT JOIN tblInvLocBinSec ON ILB.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = ILB.strLocName AND tblInvLocBinSec.strUserName = @UserName
		LEFT JOIN tblInv INV ON INV.strPartNumber = IBE.strPartNumber  
		WHERE
		IBE.strLocName = @LocationName AND IBE.strPartNumber = @PartNumber AND 
		(ILB.strBinCode = @SearchText OR @SearchText IS NULL) AND
		(ILB.lngId IN (Select CAST(Value AS bigint) From dbo.fnSplitStringAsTable(@BinIds,',')) OR @BinIds IS NULL) AND IBE.decOnHand = 0
		ORDER BY
		IBE.bitDefault, IBE.decOnHand desc
	END 	
END
GO
/****** Object:  StoredProcedure [dbo].[GetLocationCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetLocationCount]
    (
      @AssetCode NVARCHAR(40) ,
      @TransferDate DATETIME ,
      @LocationId BIGINT
    )
AS
BEGIN
    SET NOCOUNT ON;
    SET NOCOUNT ON;
    SELECT  COUNT(lngID)
    FROM    tblAssetLocation
    WHERE   strAssetCode = @AssetCode
            AND dteTransferDate = @TransferDate
            AND lngID <> @LocationId;
		END
GO

CREATE PROCEDURE [dbo].[GetLocationCriteria] (
	@LocationHandle AS NVARCHAR(100)
	,@DetailTable AS NVARCHAR(100)
	,@DetailField AS NVARCHAR(100)
	,@DetailValue AS NVARCHAR(100)
	)
AS
BEGIN
	DECLARE @Query NVARCHAR(MAX)

	CREATE TABLE #mytemptable (
		PartNumber VARCHAR(50)
		,
		)

	SET @Query = 'SELECT DISTINCT ' + @LocationHandle + ' FROM ' + @DetailTable + ' WHERE ' + @DetailField + ' = ' + @DetailValue

	INSERT INTO #mytemptable
	EXEC sp_Executesql @Query

	DECLARE @str VARCHAR(1000)

	SELECT @str = coalesce(@str + ', ', '') + a.PartNumber
	FROM (
		SELECT PartNumber
		FROM #mytemptable
		) a

	SELECT @str AS 'PartNumber'

	DECLARE @result NVARCHAR(MAX)

	SELECT @result = LEFT(@str, LEN(@str) - 1);
END
GO

/****** Object:  StoredProcedure [dbo].[GetLocationForSalesDocBrowser]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------------'
CREATE PROCEDURE [dbo].[GetLocationForSalesDocBrowser]
(
	@UserName NVARCHAR(100)
)
AS
BEGIN
	
	DECLARE @Temp AS TABLE
	(
		ID INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
		LocName  NVARCHAR(100),
		LocCount INT,
		UserName NVARCHAR(100)
	)
	DECLARE @LocationList AS TABLE
	(
		LocName  NVARCHAR(100)
	)
	INSERT INTO @Temp 
	SELECT tblInvLoc.strLocName
		,ISNULL((
				SELECT COUNT(tblInvLocSec.strLocName)
				FROM tblInvLocSec
				WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName
				), 0)
		,ISNULL(tblInvLocSec.strUserName, '')
	FROM tblInvLoc
	LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName
		AND tblInvLocSec.strUserName = @UserName
	WHERE tblInvLoc.intType = 0
	ORDER BY tblInvLoc.strLocName


	DECLARE @Id AS INT
	DECLARE @LocName AS NVARCHAR(100)
	DECLARE @LocCount AS INT
	DECLARE @User AS NVARCHAR(100)

	WHILE((SELECT COUNT(1) FROM @Temp) > 0)
	BEGIN
		SELECT TOP 1 @Id = ID, @LocName= LocName, @LocCount = LocCount, @User = UserName FROM @Temp

		IF(@LocCount = 0 OR (@LocCount > 0 AND @User <>''))
		INSERT INTO @LocationList VALUES (@LocName)

		DELETE from @Temp where ID = @Id
	END

	SELECT * FROM @LocationList
END
GO
/****** Object:  StoredProcedure [dbo].[Getlocations]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[GetAllVouchers] ***********/

CREATE PROCEDURE [dbo].[Getlocations] (@PartNo   VARCHAR(50) ='',     
                                      @UserName VARCHAR(80))     
AS     
  BEGIN     
      DECLARE @Query NVARCHAR(max)=''     
    
      SET @Query = 'SELECT distinct tblinvloc.strlocname as LocName,    
     tblinvloc.strDesc as [Desc],   
     Isnull((SELECT Count(tblinvlocsec.strlocname) FROM     
     tblinvlocsec WHERE tblinvlocsec.strlocname = tblinvloc.strlocname), 0) as InvLocCount,    
     Isnull(tblinvlocsec.strusername, '''')  as UserName, tblInvLoc.bitDefault as [Default] FROM     
     tblinvext INNER JOIN tblinvloc ON tblinvext.strlocname = tblinvloc.strlocname     
     LEFT JOIN tblinvlocsec ON tblinvloc.strlocname = tblinvlocsec.strlocname     
     AND tblinvlocsec.strusername = ''' + @UserName + '''  WHERE ( tblinvext.bitinactive = 0 ) '     
    
      IF @PartNo != ''     
        SET @Query = @Query + ' AND  ( tblinvext.strpartnumber = ''' + @PartNo + ''') '     
    
      EXEC Sp_executesql @Query     
END 
GO
/****** Object:  StoredProcedure [dbo].[GetLocationVariance]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetLocationVariance]
AS
BEGIN
	SELECT Z.strPartNumber AS PartNumber, Z.strSerialNumber AS SerialNumber, Z.strLocation AS Location, Z.strLocationNext AS LocationNext FROM (SELECT lngID, tblSerialNumberTracking.strPartNumber, strSerialNumber, strLocation, tblSerialNumberTracking.intType, CASE WHEN tblSerialNumberTracking.intType = 9 THEN strLocation ELSE CASE WHEN tblSerialNumberTracking.intType = 7 AND intStatus = 2 THEN strLocation ELSE CASE WHEN tblSerialNumberTracking.intType = 4 AND intStatus = 2 THEN strLocation ELSE ISNULL((SELECT CASE WHEN SNT2.intType = 4 AND SNT2.intStatus = 1 THEN 'NO RECORD' ELSE SNT2.strLocation END FROM tblSerialNumberTracking SNT2 WHERE SNT2.lngID = (SELECT MIN(SNT.lngID) FROM tblSerialNumberTracking SNT WHERE SNT.strPartNumber = tblSerialNumberTracking.strPartNumber AND SNT.strSerialNumber = tblSerialNumberTracking.strSerialNumber AND SNT.lngID > tblSerialNumberTracking.lngID)), 'NO RECORD') END END END AS strLocationNext FROM tblSerialNumberTracking INNER JOIN tblInv ON tblSerialNumberTracking.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType WHERE tblInvSerialTypes.intType = 0) Z WHERE Z.strLocationNext <> 'NO RECORD' AND Z.strLocation <> Z.strLocationNext ORDER BY Z.strPartNumber, Z.strSerialNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetLogoData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/***********End [GetCustomerData]************************/

/**********Start [GetLogoData]********************/
CREATE PROCEDURE [dbo].[GetLogoData]
@IsDisplayLogo as bit
AS
BEGIN
SELECT imgLogo AS Logo, @IsDisplayLogo As IsDisplayLogo FROM tblCompany
END
GO
/****** Object:  StoredProcedure [dbo].[GetLostSalesData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetLostSalesData]
@StartDate as datetime
,@FinishDate as datetime
,@CurrentUserName as nvarchar(20) 
AS
BEGIN

	;With INTotaltbl as ( Select Sum(decSubTotal) as Total,strUserName from tblInvoiceDoc (NOLOCK) Where strInvDocID like 'IN-%' AND (dteJournalDate BETWEEN @StartDate AND @FinishDate)  group by strUserName ), 
	  CNTotaltbl as ( Select Sum(decSubTotal) as Total,strUserName from tblInvoiceDoc (NOLOCK) Where strInvDocID like 'CN-%' AND (dteJournalDate BETWEEN @StartDate AND @FinishDate)  group by strUserName ), 
	  SOTotaltbl as ( SELECT Sum(decSubTotal) As SalesDocTotal, strUserName FROM tblOrderDoc (NOLOCK)  WHERE (dteJournalDate BETWEEN @StartDate AND @FinishDate) AND intDocType = 1 And strOrdDocID like 'SO-%' and bitCleared=1 and strSOReasonCode is not null group by strUserName ), 
	  QUTotaltbl as ( SELECT Sum(decSubTotal) As QUDocTotal, strUserName FROM tblOrderDoc (NOLOCK)  WHERE (dteJournalDate BETWEEN @StartDate AND @FinishDate) AND  intDocType = 2 And strOrdDocID like 'QU-%' and bitCleared=1 and strSOReasonCode is not null group by strUserName ), 
	  FianlTabletbl as (SELECT  Isnull(INtbl.strUserName,CNTbl.strUserName) as UserName,
			isnull(INtbl.Total,0) as InvoiceTotal, 
			isnull(CNTbl.Total,0) as CreditNoteTotal,
			(isnull(INtbl.Total,0)+Isnull(CNTbl.Total,0)) as NetSales,
	 	
		isnull(SOtbl.SalesDocTotal,0) AS SalesOrderTotal,
		isnull(QUtbl.QUDocTotal,0) AS SalesQuoteTotal,
		(isnull(SOtbl.SalesDocTotal,0)+isnull(QUtbl.QUDocTotal,0)) As LostSales,

		((isnull(INtbl.Total,0)+Isnull(CNTbl.Total,0)) - (isnull(SOtbl.SalesDocTotal,0)+isnull(QUtbl.QUDocTotal,0))) as FinalSales,

		(((isnull(INtbl.Total,0)+Isnull(CNTbl.Total,0)) - (isnull(SOtbl.SalesDocTotal,0)+isnull(QUtbl.QUDocTotal,0)))/(isnull(INtbl.Total,0)+Isnull(CNTbl.Total,0)) )*100 as [Efficiency %Old],

		((isnull(INtbl.Total,0)+Isnull(CNTbl.Total,0)) / ((isnull(INtbl.Total,0)+Isnull(CNTbl.Total,0)) + (isnull(SOtbl.SalesDocTotal,0)+isnull(QUtbl.QUDocTotal,0))) )*100 as [Efficiency %]
	 FROM INTotaltbl as INtbl (NOLOCK) FULL OUTER join CNTotaltbl as CNTbl (NOLOCK) ON INtbl.strUserName=CNTbl.strUserName
	 FULL OUTER JOIN SOTotaltbl as SOtbl (NOLOCK) ON Isnull(INtbl.strUserName,CNTbl.strUserName)=SOtbl.strUserName
	 FULL OUTER JOIN QUTotaltbl as QUtbl (NOLOCK) ON Isnull(INtbl.strUserName,CNTbl.strUserName)=QUtbl.strUserName)
	 Select 'Sales' as SalesDoc , Isnull(Sum(NetSales),0) as SalesDocCount  from FianlTabletbl where UserName =case when @CurrentUserName='<<ALL>>' Then UserName else @CurrentUserName end 
	 Union All
	 Select 'Lost Sales' as SalesDoc , Isnull(Sum(LostSales),0) as SalesDocCount  from FianlTabletbl where UserName =case when @CurrentUserName='<<ALL>>' Then UserName else @CurrentUserName end 
	  Union All
	 Select 'Efficiency %' as SalesDoc ,CASE WHEN ((Sum(NetSales)+Sum(LostSales))=0) THEN 0 ELSE Isnull(((Sum(NetSales)/(Sum(NetSales)+Sum(LostSales)))*100),0) END as SalesDocCount  from FianlTabletbl where UserName =case when @CurrentUserName='<<ALL>>' Then UserName else @CurrentUserName end 


END
GO
/****** Object:  StoredProcedure [dbo].[GetLotSerialQtyRemaining]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetLotSerialQtyRemaining]    Script Date: 2020-05-26 ******/
CREATE PROCEDURE  [dbo].[GetLotSerialQtyRemaining] 
@PartNumber VARCHAR(500),  
@Location VARCHAR(100),  
@IsLotNumber BIT,
@LotSerialNumber VARCHAR(500)  
AS  
BEGIN  

 IF(@IsLotNumber = 1)   
   BEGIN
   SELECT (ILE.decQty - ISNULL((SELECT SUM(DTL.decQtyRemaining) FROM tblOrderDoc HDR INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID INNER JOIN tblOrderDocDTSerial SRL ON DTL.strOrdDocID = SRL.strOrdDocID AND DTL.intLineNo = SRL.intLineNo WHERE (HDR.bitCleared = 0) AND (DTL.strPartNumber = ILE.strPartNumber) AND (DTL.strLocation = ILE.strLocName) AND (SRL.strSerialNumber = ILE.strLotNumber) GROUP BY SRL.strSerialNumber),0)) AS decQty FROM tblInvLotExt ILE WHERE (ILE.strPartNumber = @PartNumber) AND (ILE.strLocName = @Location) AND (ILE.strLotNumber = @LotSerialNumber)
   END
 ELSE  
   BEGIN
   SELECT (ISE.decQty - ISNULL((SELECT SUM(DTL.decQtyRemaining) FROM tblOrderDoc HDR INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID INNER JOIN tblOrderDocDTSerial SRL ON DTL.strOrdDocID = SRL.strOrdDocID AND DTL.intLineNo = SRL.intLineNo WHERE (HDR.bitCleared = 0) AND (DTL.strPartNumber = ISE.strPartNumber) AND (DTL.strLocation = ISE.strLocName) AND (SRL.strSerialNumber = ISE.strSerialNumber) GROUP BY SRL.strSerialNumber),0)) AS decQty FROM tblInvSerialExt ISE WHERE (ISE.strPartNumber = @PartNumber) AND (ISE.strLocName = @Location) AND (ISE.strSerialNumber = @LotSerialNumber)
   END 
END  
GO
/****** Object:  StoredProcedure [dbo].[GetMachineName]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetLostSalesData] ***********/

/*********** Start [GetMachineName] ***********/

CREATE PROCEDURE [dbo].[GetMachineName]
AS
BEGIN
	SELECT SERVERPROPERTY('MachineName')
END

GO
/****** Object:  StoredProcedure [dbo].[GetMainHomeTransactionData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetMachineName] ***********/

/*********** Start [GetMainHomeTransactionData] ***********/

CREATE PROCEDURE [dbo].[GetMainHomeTransactionData]

@TransactionType INT,
@StartDate DATETIME
AS
BEGIN

	IF @transactionType = 0 --Purchase Invoices
	BEGIN
		SELECT TOP (50) strInvPDocID AS DocumentNumber, 
						dteJournalDate AS JournalDate, 
						strVendName + ' - ' + (SELECT strVendDesc FROM tblVendors (NOLOCK) WHERE strVendName = tblInvoiceDocP.strVendName) AS VendCustName, 
						strVendInvNo AS SourceReference, 
						decTotal AS Total, 
						bitIsForeign AS IsForeign, 
						strCurrency AS Currency, 
						decTotalF AS TotalF
		FROM tblInvoiceDocP (NOLOCK) 
		WHERE bitHistoryTrans = 0 
			  AND dteJournalDate >= @startDate 
		ORDER BY 
			  dteJournalDate DESC, 
			  strInvPDocID DESC
	END
	ELSE IF @transactionType = 1 --Purchase Orders
	BEGIN
		SELECT TOP (50) strOrdPDocID AS DocumentNumber, 
						dteJournalDate AS JournalDate, 
						strVendName + ' - ' + (SELECT strVendDesc FROM tblVendors (NOLOCK) WHERE strVendName = tblOrderDocP.strVendName) AS VendCustName, 
						dteRequired AS RequiredDate, 
						decTotal  AS Total, 
						bitIsForeign AS IsForeign, 
						strCurrency AS Currency, 
						decTotalF AS TotalF
		FROM tblOrderDocP (NOLOCK) 
		WHERE bitCleared = 0 
			  AND intDocType = 1 
			  AND dteJournalDate >= @startDate 
		ORDER BY dteJournalDate DESC, 
				 strOrdPDocID DESC
	END
	ELSE IF @transactionType = 2 --Purchase Requisitions
	BEGIN
		SELECT TOP (50) strOrdPDocID AS DocumentNumber,  
						dteJournalDate AS JournalDate, 
						strVendName + ' - ' + (SELECT strVendDesc FROM tblVendors (NOLOCK) WHERE strVendName = tblOrderDocP.strVendName) AS VendCustName, 
						dteRequired AS RequiredDate, 
						decTotal AS Total, 
						bitIsForeign AS IsForeign, 
						strCurrency AS Currency, 
						decTotalF AS TotalF
		FROM tblOrderDocP (NOLOCK)
		WHERE bitCleared = 0 
			  AND intDocType = 2 
			  AND dteJournalDate >= @startDate 
		ORDER BY dteJournalDate DESC, 
				 strOrdPDocID DESC
	END
	ELSE IF @transactionType = 3 --Purchase Payments
	BEGIN

		SELECT TOP (50) dteJournalDate AS JournalDate, 
						strVendName + ' - ' + (SELECT strVendDesc FROM tblVendors (NOLOCK) WHERE strVendName = tblVendPay.strVendName) AS VendCustName, 
						strSource AS DocumentNumber, 
						lngJourID AS JournalID, 
						decAmount AS Total, 
						bitIsForeign AS IsForeign, 
						strCurrency AS Currency, 
						decAmountF AS TotalF, 
						lngVendPayID AS VendCustPayID
		FROM tblVendPay (NOLOCK) 
		WHERE bitReversed = 0 
			  AND bitReversal = 0 
		      AND dteJournalDate >= @startDate 
		ORDER BY dteJournalDate DESC

	END
	ELSE IF @transactionType = 4 -- Sales Invoices
	BEGIN

		SELECT TOP (50) strInvDocID AS DocumentNumber, 
						dteJournalDate AS JournalDate, 
						strCustName + ' - ' + (SELECT strCustDesc FROM tblCustomers (NOLOCK) WHERE strCustName = tblInvoiceDoc.strCustName) AS VendCustName, 
						strReference AS SourceReference, 
						decTotal AS Total, 
						bitIsForeign  AS IsForeign, 
						strCurrency AS Currency, 
						decTotalF AS TotalF 
		FROM tblInvoiceDoc (NOLOCK) 
		WHERE bitHistoryTrans = 0 
			  AND bitReserved = 0 
			  AND dteJournalDate >= @startDate 
		ORDER BY dteJournalDate DESC, 
				 strInvDocID DESC

	END
	ELSE IF @transactionType = 5 --Sales Orders
	BEGIN

		SELECT TOP (50) strOrdDocID AS DocumentNumber, 
						dteJournalDate AS JournalDate, 
						strCustName + ' - ' + (SELECT strCustDesc FROM tblCustomers (NOLOCK) WHERE strCustName = tblOrderDoc.strCustName) AS VendCustName, 
						dteRequired AS RequiredDate, 
						decTotal AS Total, 
						bitIsForeign AS IsForeign, 
						strCurrency AS Currency, 
						decTotalF AS TotalF
		FROM tblOrderDoc (NOLOCK) 
		WHERE bitCleared = 0 
			  AND intDocType = 1 
			  AND dteJournalDate >= @startDate 
		ORDER BY dteJournalDate DESC, 
				 strOrdDocID DESC

	END
	ELSE IF @transactionType = 6 --Sales Quotes
	BEGIN
		SELECT TOP (50) strOrdDocID AS DocumentNumber, 
						dteJournalDate AS JournalDate, 
						strCustName + ' - ' + (SELECT strCustDesc FROM tblCustomers (NOLOCK) WHERE strCustName = tblOrderDoc.strCustName) AS VendCustName, 
						dteRequired AS RequiredDate, 
						decTotal AS Total, 
						bitIsForeign AS IsForeign, 
						strCurrency AS Currency, 
						decTotalF AS TotalF 
		FROM tblOrderDoc (NOLOCK) 
		WHERE bitCleared = 0 
			  AND intDocType = 2 
			  AND dteJournalDate >= @startDate
		ORDER BY dteJournalDate DESC, 
				 strOrdDocID DESC
	END
	ELSE IF @transactionType = 7 -- Sales Receipts
	BEGIN

		SELECT TOP (50) strSource AS DocumentNumber, 
						dteJournalDate AS JournalDate, 
						strCustName + ' - ' + (SELECT strCustDesc FROM tblCustomers (NOLOCK) WHERE strCustName = tblCustPay.strCustName) AS VendCustName, 
						lngJourID AS JournalID,
						decAmount AS Total, 
						bitIsForeign AS IsForeign, 
						strCurrency AS Currency, 
						decAmountF AS TotalF, 
						lngCustPayID AS VendCustPayID
		FROM tblCustPay (NOLOCK) 
		WHERE (bitReversed = 0) 
			  AND (bitReversal = 0) 
			  AND (dteJournalDate >= @startDate) 
		ORDER BY dteJournalDate DESC, 
				 strSource DESC
		
	END

END

GO
/****** Object:  StoredProcedure [dbo].[GetManufactureBOM]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------------------------

CREATE PROCEDURE [dbo].[GetManufactureBOM]
AS
BEGIN

	SELECT 0 AS 'Type',
		tblManBOM.strPartNumber AS 'BOMPartNumber',
		tblManBOM.strDesc AS 'BOMPartDesc',
		tblManBOM.strLocation AS 'BOMLocation',
		tblManBOM.dteRevDate AS 'BOMRevisionDate',
		tblManBOM.decQty AS 'BOMQuantity',
		tblManBOM.bitInactive AS 'IsBOMInactive',
		tblManBOM.bitPrintInv AS 'IsBOMPrintInv',
		tblManBOM.bitPrintSO AS 'IsBOMPrintSO',
		tblManBOM.bitPrintDN AS 'IsBOMPrintDN',
		0 AS 'LineNumber',
		'' AS 'ByProdCompInvPartNumber',
		'' AS 'ByProdCompInvLocation',
		0 AS 'ByProdCompInvQty',
		'' AS 'WorkCentre',
		'' AS 'Notes',
		'' AS 'LabMachCode',
		0 AS 'VariableHours',
		0 AS 'VariableRate',
		0 AS 'SetupHours',
		0 AS 'SetupRate',
		0 AS 'BreakdownHours',
		0 AS 'BreakdownRate',
		'' AS 'GLNumber',
		0 AS 'Department',
		'' AS 'ProfitCenter',
		0 AS 'Amount'
	FROM tblManBOM

	UNION ALL

	SELECT 1 AS 'Type',
		tblManBOM.strPartNumber AS 'BOMPartNumber',
		'' AS 'BOMPartDesc',
		tblManBOM.strLocation AS 'BOMLocation',
		tblManBOM.dteRevDate AS 'BOMRevisionDate',
		0 AS 'BOMQuantity',
		tblManBOM.bitInactive AS 'IsBOMInactive',
		tblManBOM.bitPrintInv AS 'IsBOMPrintInv',
		tblManBOM.bitPrintSO AS 'IsBOMPrintSO',
		tblManBOM.bitPrintDN AS 'IsBOMPrintDN',
	    Cast(tblManBOMOp.lngID as smallint) AS 'LineNumber',
		'' AS 'ByProdCompInvPartNumber',
		'' AS 'ByProdCompInvLocation',
		0 AS 'ByProdCompInvQty',
		tblManBOMOp.strWCCode AS 'WorkCentre',
		tblManBOMOp.strNotes 'Notes',
		'' AS 'LabMachCode',
		0 AS 'VariableHours',
		0 AS 'VariableRate',
		0 AS 'SetupHours',
		0 AS 'SetupRate',
		0 AS 'BreakdownHours',
		0 AS 'BreakdownRate',
		'' AS 'GLNumber',
		0 AS 'Department',
		'' AS 'ProfitCenter',
		0 AS 'Amount'
	FROM tblManBOM
	INNER JOIN tblManBOMOp ON tblManBOM.lngManBOMID = tblManBOMOp.lngManBOMID

	UNION ALL

	SELECT 2 AS 'Type',
		tblManBOM.strPartNumber AS 'BOMPartNumber',
		'' AS 'BOMPartDesc',
		tblManBOM.strLocation AS 'BOMLocation',
		tblManBOM.dteRevDate AS 'BOMRevisionDate',
		0 AS 'BOMQuantity',
		tblManBOM.bitInactive AS 'IsBOMInactive',
		tblManBOM.bitPrintInv AS 'IsBOMPrintInv',
		tblManBOM.bitPrintSO AS 'IsBOMPrintSO',
		tblManBOM.bitPrintDN AS 'IsBOMPrintDN',
		tblManBOMCompInv.intLineNo AS 'LineNumber',
		tblManBOMCompInv.strPartNumber AS 'ByProdCompInvPartNumber',
		tblManBOMCompInv.strLocation AS 'ByProdCompInvLocation',
		tblManBOMCompInv.decQty AS 'ByProdCompInvQty',
		tblManBOMCompInv.strWCCode AS 'WorkCentre',
		'' AS 'Notes',
		'' AS 'LabMachCode',
		0 AS 'VariableHours',
		0 AS 'VariableRate',
		0 AS 'SetupHours',
		0 AS 'SetupRate',
		0 AS 'BreakdownHours',
		0 AS 'BreakdownRate',
		'' AS 'GLNumber',
		0 AS 'Department',
		'' AS 'ProfitCenter',
		0 AS 'Amount'
	FROM tblManBOM
	INNER JOIN tblManBOMCompInv ON tblManBOM.lngManBOMID = tblManBOMCompInv.lngManBOMID

	UNION ALL

	SELECT 3 AS 'Type',
		tblManBOM.strPartNumber AS 'BOMPartNumber',
		'' AS 'BOMPartDesc',
		tblManBOM.strLocation AS 'BOMLocation',
		tblManBOM.dteRevDate AS 'BOMRevisionDate',
		0 AS 'BOMQuantity',
		tblManBOM.bitInactive AS 'IsBOMInactive',
		tblManBOM.bitPrintInv AS 'IsBOMPrintInv',
		tblManBOM.bitPrintSO AS 'IsBOMPrintSO',
		tblManBOM.bitPrintDN AS 'IsBOMPrintDN',
		tblManBOMCompLab.intLineNo AS 'LineNumber',
		'' AS 'ByProdCompInvPartNumber',
		'' AS 'ByProdCompInvLocation',
		0 AS 'ByProdCompInvQty',
		tblManBOMCompLab.strWCCode AS 'WorkCentre',
		'' AS 'Notes',
		tblManBOMCompLab.strLabCode AS 'LabMachCode',
		tblManBOMCompLab.decVariableHours AS 'VariableHours',
		tblManBOMCompLab.decVariableRate AS 'VariableRate',
		tblManBOMCompLab.decSetupHours AS 'SetupHours',
		tblManBOMCompLab.decSetupRate AS 'SetupRate',
		tblManBOMCompLab.decBreakdownHours AS 'BreakdownHours',
		tblManBOMCompLab.decBreakdownRate AS 'BreakdownRate',
		'' AS 'GLNumber',
		0 AS 'Department',
		'' AS 'ProfitCenter',
		0 AS 'Amount'
	FROM tblManBOM
	INNER JOIN tblManBOMCompLab ON tblManBOM.lngManBOMID = tblManBOMCompLab.lngManBOMID

	UNION ALL

	SELECT 4 AS 'Type',
		tblManBOM.strPartNumber AS 'BOMPartNumber',
		'' AS 'BOMPartDesc',
		tblManBOM.strLocation AS 'BOMLocation',
		tblManBOM.dteRevDate AS 'BOMRevisionDate',
		0 AS 'BOMQuantity',
		tblManBOM.bitInactive AS 'IsBOMInactive',
		tblManBOM.bitPrintInv AS 'IsBOMPrintInv',
		tblManBOM.bitPrintSO AS 'IsBOMPrintSO',
		tblManBOM.bitPrintDN AS 'IsBOMPrintDN',
		tblManBOMCompMach.intLineNo AS 'LineNumber',
		'' AS 'ByProdCompInvPartNumber',
		'' AS 'ByProdCompInvLocation',
		0 AS 'ByProdCompInvQty',
		tblManBOMCompMach.strWCCode AS 'WorkCentre',
		'' AS 'Notes',
		tblManBOMCompMach.strMachCode AS 'LabMachCode',
		tblManBOMCompMach.decVariableHours AS 'VariableHours',
		tblManBOMCompMach.decVariableRate AS 'VariableRate',
		tblManBOMCompMach.decSetupHours AS 'SetupHours',
		tblManBOMCompMach.decSetupRate AS 'SetupRate',
		tblManBOMCompMach.decBreakdownHours AS 'BreakdownHours',
		tblManBOMCompMach.decBreakdownRate AS 'BreakdownRate',
		'' AS 'GLNumber',
		0 AS 'Department',
		'' AS 'ProfitCenter',
		0 AS 'Amount'
	FROM tblManBOM
	INNER JOIN tblManBOMCompMach ON tblManBOM.lngManBOMID = tblManBOMCompMach.lngManBOMID

	UNION ALL

	SELECT 5 AS 'Type',
		tblManBOM.strPartNumber AS 'BOMPartNumber',
		'' AS 'BOMPartDesc',
		tblManBOM.strLocation AS 'BOMLocation',
		tblManBOM.dteRevDate AS 'BOMRevisionDate',
		0 AS 'BOMQuantity',
		tblManBOM.bitInactive AS 'IsBOMInactive',
		tblManBOM.bitPrintInv AS 'IsBOMPrintInv',
		tblManBOM.bitPrintSO AS 'IsBOMPrintSO',
		tblManBOM.bitPrintDN AS 'IsBOMPrintDN',
		tblManBOMCompOverhead.intLineNo AS 'LineNumber',
		'' AS 'ByProdCompInvPartNumber',
		'' AS 'ByProdCompInvLocation',
		0 AS 'ByProdCompInvQty',
		tblManBOMCompOverhead.strWCCode AS 'WorkCentre',
		'' AS 'Notes',
		'' AS 'LabMachCode',
		0 AS 'VariableHours',
		0 AS 'VariableRate',
		0 AS 'SetupHours',
		0 AS 'SetupRate',
		0 AS 'BreakdownHours',
		0 AS 'BreakdownRate',
		tblManBOMCompOverhead.intGLNumber AS 'GLNumber',
		ISNULL(tblManBOMCompOverhead.intDept, 0) AS 'Department',
		ISNULL(tblCenters.strLvl1, '') + CASE 
			WHEN ISNULL(tblCenters.strLvl2, '') = ''
				THEN ''
			ELSE '/' + tblCenters.strLvl2
			END + CASE 
			WHEN ISNULL(tblCenters.strLvl3, '') = ''
				THEN ''
			ELSE '/' + tblCenters.strLvl3
			END + CASE 
			WHEN ISNULL(tblCenters.strLvl4, '') = ''
				THEN ''
			ELSE '/' + tblCenters.strLvl4
			END + CASE 
			WHEN ISNULL(tblCenters.strLvl5, '') = ''
				THEN ''
			ELSE '/' + tblCenters.strLvl5
			END AS 'ProfitCenter',
		tblManBOMCompOverhead.decAmount AS 'Amount'
	FROM tblManBOM
	INNER JOIN tblManBOMCompOverhead ON tblManBOM.lngManBOMID = tblManBOMCompOverhead.lngManBOMID
	LEFT JOIN tblCenters ON tblManBOMCompOverhead.uidCenterID = tblCenters.uidCenterID
	ORDER BY 'Type',
		tblManBOM.strPartNumber,
		tblManBOM.dteRevDate,
		tblManBOM.strLocation,
		'LineNumber',
		'ByProdCompInvLocation',
		'LabMachCode',
		'GLNumber'

END
GO
/****** Object:  StoredProcedure [dbo].[GetManWIPCompInvSerial]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [dbo].[GetManWIPCompInvSerial] ***********/
CREATE PROCEDURE [dbo].[GetManWIPCompInvSerial]
(
	@DocNumber as nvarchar(30)
)
AS
BEGIN
	SELECT 
		tblManWIPCompInvSerial.strWIPDocID as WIPDocID,
		tblManWIPCompInvSerial.lngWIPID as WIPID,
		tblManWIPCompInvSerial.intLineNo as [LineNo],
		tblManWIPCompInvSerial.strSerialNumber as SerialNumber,
		tblManWIPCompInvSerial.decQty as Qty,
		tblManWIPCompInvSerial.strUnit as Unit,
		tblManWIPCompInvSerial.lngID as ID,
		tblManWIPCompInvSerial.bitExpiryDate as IsExpiryDate,
		tblManWIPCompInvSerial.dteExpiryDate as ExpiryDate,
		tblManWIPCompInvSerial.intSerialLotType as SerialLotType,
	       ISNULL(
	                (SELECT DISTINCT TYP.strInvSerialType
	                 FROM tblManWIPCompInvSerial SRL
	                 INNER JOIN tblWSWIPCompDT DTL ON SRL.strWIPDocID = DTL.WIPDocID
	                 AND SRL.intLineNo = DTL.[LineNo]
	                 INNER JOIN tblInv INV ON DTL.PartNumber = INV.strPartNumber
	                 INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType
	                 WHERE SRL.strWIPDocID = tblManWIPCompInvSerial.strWIPDocID
	                   AND SRL.intLineNo = tblManWIPCompInvSerial.intLineNo),'') as InvSerialType
	FROM tblManWIPCompInvSerial
	WHERE strWIPDocID = @DocNumber
	  --AND intLineNo = @SQLineNo
	ORDER BY lngID
END
GO
/****** Object:  StoredProcedure [dbo].[GetMarginPercentage]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetMarginPercentage] ***********/
CREATE PROCEDURE [dbo].[GetMarginPercentage]
(	@PartNumber AS NVARCHAR(50),
	@BarCode AS NVARCHAR(300)
)
AS
BEGIN
	SELECT tblInvCat.bitUseMinMarginPerc AS IsUseMinMarginPerc
	,tblInvCat.decMinMarginPerc AS MinMarginPerc
	,tblInvCat.intAlertOnMinMarginPerc AS AlertOnMinMarginPerc
	FROM tblInv (NOLOCK)
	INNER JOIN tblInvCat (NOLOCK) ON tblInv.strCategory = tblInvCat.strCategory
	WHERE (
			tblInv.strPartNumber = @PartNumber
			OR tblInv.strBarCode = @BarCode
			OR tblInv.strBarCode2 = @BarCode
			)
END
GO
/****** Object:  StoredProcedure [dbo].[GetMatrixData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/******************* End [GetPriceListData] ********************/

/******************* Start [GetMatrixData] ********************/
Create PROCEDURE [dbo].[GetMatrixData]
(
	@CustName AS NVARCHAR(20),
	@ExpiryDate AS Datetime
)
AS
BEGIN
SELECT ttdm.strMatrixType AS  MatrixType
	,Cast (ttdmt.dteStartDate AS Datetime) StartDate
	,Cast (ttdmt.dteFinishDate AS Datetime)  FinishDate
	,tdmt.strPartNumber AS PartNumber
FROM tblTradeDiscMatrix ttdm
INNER JOIN tblTradeDiscMatrixTypes ttdmt ON ttdmt.strMatrixType = ttdm.strMatrixType
INNER JOIN tblCustomers tc ON tc.strMatrixType = ttdm.strMatrixType
INNER JOIN tblTradeDiscMatrixTypesDT tdmt ON tdmt.uidMatrixID = ttdmt.uidMatrixID
WHERE tc.strCustName = @CustName
	AND tdmt.strPartNumber IS NOT NULL
	AND tdmt.intType = 1
	--AND ttdmt.dteFinishDate <= cast(@ExpiryDate as date)
	AND (@ExpiryDate BETWEEN ttdmt.dteStartDate AND ttdmt.dteFinishDate) 
END
GO
/****** Object:  StoredProcedure [dbo].[GetMinCustomerDateSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCustomerNameSales] ***********/

/*********** Start [GetMinCustomerDateSales] ***********/
CREATE PROCEDURE [dbo].[GetMinCustomerDateSales]
(
	@CustomerName AS VARCHAR(50)
)
AS
BEGIN
	SELECT ISNULL(MIN(tblOrderDocDA.dteJournalDate),GETDATE()) FROM tblOrderDocDA INNER JOIN tblCustomers ON tblOrderDocDA.strCustName = tblCustomers.strCustName
    WHERE (tblOrderDocDA.bitCleared = 0) AND (tblCustomers.strCustName = @CustomerName)
END
GO
/****** Object:  StoredProcedure [dbo].[GetMinimumJournalDate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCustomerNumber] ***********/

/*********** End [GetMinimumJournalDate] ***********/
CREATE PROCEDURE [dbo].[GetMinimumJournalDate]
@CustomerName AS VARCHAR(50)
AS
BEGIN
	SELECT ISNULL(MIN(tblOrderDocDA.dteJournalDate),GETDATE()) FROM tblOrderDocDA INNER JOIN tblCustomers ON tblOrderDocDA.strCustName = tblCustomers.strCustName
    WHERE (tblOrderDocDA.bitCleared = 0) AND (tblCustomers.strCustName = @CustomerName)
END
GO
/****** Object:  StoredProcedure [dbo].[GetMissingCustomerInventory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetMissingCustomerInventory]

AS

SELECT TOP 20 CASE WHEN LEN(REVERSE(Z.ItemCode)) <> LEN(Z.ItemCode) THEN LTRIM(RTRIM(ISNULL(Z.ItemCode,'<< Blank >>'))) ELSE '<< Blank >>' END FROM (SELECT DISTINCT HL.ItemCode 

FROM tblUtilityPervHistoryLines HL LEFT OUTER JOIN tblUtilityPervInventory INV ON HL.ItemCode = INV.ItemCode WHERE HL.DocumentType IN (3, 4) AND HL.SearchType = 4 

AND ISNULL(INV.ItemCode,'') = '') Z ORDER BY Z.ItemCode

GO
/****** Object:  StoredProcedure [dbo].[GetMissingCustomers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetMissingCustomers]
AS
SELECT TOP 20 Z.CustomerCode FROM (SELECT DISTINCT Y.CustomerCode FROM (SELECT DISTINCT HH.CustomerCode FROM tblUtilityPervHistoryHeader HH 
LEFT OUTER JOIN tblUtilityPervCurrencyFile CF ON HH.CurrencyCode = CF.CurrCode WHERE HH.DocumentType IN (3, 4) UNION ALL SELECT DISTINCT CSCode AS CustomerCode 
FROM tblUtilityPervOpenItem WHERE DC = 'D' AND BatchID = 0 AND PPeriod <> 13) Y) Z LEFT JOIN tblUtilityPervCustomerMaster CM ON Z.CustomerCode = CM.CustomerCode 
WHERE ISNULL(CM.CustomerCode,'') = ''ORDER BY Z.CustomerCode
GO
/****** Object:  StoredProcedure [dbo].[GetMissingOpenPurchaseOrder]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetMissingOpenPurchaseOrder]
(
	@dteStartDate date,
	@dteEndDate date
)
AS
SELECT TOP 20 CASE WHEN LEN(REVERSE(Z.ItemCode)) <> LEN(Z.ItemCode) THEN LTRIM(RTRIM(ISNULL(Z.ItemCode,'<< Blank >>'))) ELSE '<< Blank >>' END 
FROM (SELECT DISTINCT HL.ItemCode FROM tblUtilityPervHistoryHeader HH LEFT JOIN tblUtilityPervHistoryLines HL ON HH.DocumentNumber = HL.DocumentNumber 
LEFT OUTER JOIN tblUtilityPervInventory INV ON HL.ItemCode = INV.ItemCode WHERE HL.DocumentType = 106 AND HL.QtyLeft > 0 AND (HH.DocumentDate BETWEEN @dteStartDate AND @dteEndDate) 
AND ISNULL(INV.ItemCode,'') = '') Z ORDER BY Z.ItemCode
GO
/****** Object:  StoredProcedure [dbo].[GetMissingOpenSalesInventory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetMissingOpenSalesInventory]
(
	@dteStartDate date,
	@dteEndDate date
)
AS
SELECT Top 20 CASE WHEN LEN(REVERSE(Z.ItemCode)) <> LEN(Z.ItemCode) THEN LTRIM(RTRIM(ISNULL(Z.ItemCode,'<< Blank >>'))) ELSE '<< Blank >>' END FROM (SELECT DISTINCT HL.ItemCode 
FROM tblUtilityPervHistoryHeader HH LEFT JOIN tblUtilityPervHistoryLines HL ON HH.DocumentNumber = HL.DocumentNumber LEFT OUTER JOIN tblUtilityPervInventory INV 
ON HL.ItemCode = INV.ItemCode WHERE HL.DocumentType = 102 AND HL.QtyLeft > 0 AND (HH.DocumentDate BETWEEN @dteStartDate AND @dteEndDate) AND ISNULL(INV.ItemCode,'') = '') Z 
ORDER BY Z.ItemCode
GO
/****** Object:  StoredProcedure [dbo].[GetMissingVendorInventory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetMissingVendorInventory]
AS
SELECT TOP 20 CASE WHEN LEN(REVERSE(Z.ItemCode)) <> LEN(Z.ItemCode) THEN LTRIM(RTRIM(ISNULL(Z.ItemCode,'<< Blank >>'))) ELSE '<< Blank >>' END 
FROM (SELECT DISTINCT HL.ItemCode FROM tblUtilityPervHistoryLines HL LEFT OUTER JOIN tblUtilityPervInventory INV ON HL.ItemCode = INV.ItemCode 
WHERE HL.DocumentType IN (8, 9) AND HL.SearchType = 4 AND ISNULL(INV.ItemCode,'') = '') Z ORDER BY Z.ItemCode
GO
/****** Object:  StoredProcedure [dbo].[GetMissingVendors]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetMissingVendors]
AS
SELECT TOP 20 Z.CustomerCode FROM (SELECT DISTINCT Y.CustomerCode FROM (SELECT DISTINCT HH.CustomerCode FROM tblUtilityPervHistoryHeader HH 
LEFT OUTER JOIN tblUtilityPervCurrencyFile CF ON HH.CurrencyCode = CF.CurrCode WHERE HH.DocumentType IN (8, 9) UNION ALL SELECT DISTINCT CSCode AS CustomerCode 
FROM tblUtilityPervOpenItem WHERE DC = 'C' AND BatchID = 0 AND PPeriod <> 13) Y) Z LEFT JOIN tblUtilityPervSupplierMaster SM ON Z.CustomerCode = SM.SupplCode 
WHERE ISNULL(SM.SupplCode,'') = '' ORDER BY Z.CustomerCode
GO
/****** Object:  StoredProcedure [dbo].[GetMobileUserToken]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetMobileUserToken]    Script Date: 2020-05-16 ******/
CREATE PROCEDURE [dbo].[GetMobileUserToken]
@UserName VARCHAR(50)
AS
BEGIN
   SELECT strMobileUserToken FROM tblUsers WHERE strUserName = @UserName
END
GO
/****** Object:  StoredProcedure [dbo].[GetmSysVariables]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/******************* End [SPSalesOrder] ********************/


/*********** End create stored procedure MultipleBin ***********/

/*********** Start create stored procedure AllFixes ***********/

/*********** Start [GetmSysVariables] ***********/
CREATE PROCEDURE [dbo].[GetmSysVariables]
AS
BEGIN
	SELECT dteLYStarted AS dteLYStarted
		,dteLYEnded AS dteLYEnded
		,dteYearStarts AS dteCurrentYearBegan
		,dteYearEnds AS dteCurrentYearEnds
		,dteEarliestTran AS dteEarliestAllowed
		,dteYearEnds as dteMaximumAllowed
		,dteYearEnds as dteSessionDate
	FROM tblCompany
END
GO
/****** Object:  StoredProcedure [dbo].[GetMyActivityActionsList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetActivityActionsList] (CRM)**********/


/********* Start [GetMyActivityActionsList] (CRM)**********/

CREATE Procedure [dbo].[GetMyActivityActionsList]
@ActionsUserName nvarchar(Max)
As
begin
	Select 
 a.ActivityActionID as ActivityActionID
	,a.ActivityID as ActivityID
	,a.ActionDescription as ActionDescription
	,a.DueDate as DueDate
	,a.AssignTo as AssignTo
	,a.ActionStatus as ActionStatus
	,a.CreatedDate as CreatedDate
	,a.UpdateDate as UpdateDate
	,a.CreatedUser as CreatedUser
	,a.UpdatedUser as UpdatedUser
	,a.IsInactive as IsInactive
	,a.ActionType as ActionType
	,b.ActivityName as ActivityName
	,b.ActivityDescription as ActivityDescription
	,b.ActivityGroupName as ActivityGroupName
	,b.ActivityStatus as ActivityStatus
	,b.CustomerNumber as CustomerName
	,b.VendorNumber as VendorNumber
	,b.InventoryItemNumber as InventoryItemNumber
	,b.ProjectNumber as ProjectNumber
	,b.CustomerContactNo as CustomerContactNo
	,b.VendorContactNo as VendorContactNo
	,b.SalesPipelineText as SalesPipelineText
	,b.SalesPipelinePercentage as SalesPipelinePercentage
	,b.TransactionNumber as TransactionNumber
	,a.SignText as SignText  
	,a.EmailId as EmailId
	,IsNull(a.IsCalendar,0)      AS IsCalendar
	,IsNull(a.StartTime,'12:00:00 AM')    AS StartTime
	,IsNull(a.EndTime,'12:00:00 AM') 	  AS EndTime
	from tblCRMActivityActions a inner join tblCRMActivities b on a.ActivityID=b.ActivityID
	where a.AssignTo=@ActionsUserName
	order by a.ActivityID,a.DueDate	
end
GO
/****** Object:  StoredProcedure [dbo].[GetMyActivityListCRM]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetActivityListCRM] (CRM)**********/



/********* Start [GetMyActivityListCRM] (CRM)**********/

CREATE Procedure [dbo].[GetMyActivityListCRM]
@ActivityCreatedUser nvarchar(Max)
AS
Begin

Select 
 tblCRMActivities.ActivityID as ActivityID
,tblCRMActivities.ActivityName as ActivityName
,tblCRMActivities.ActivityDescription as ActivityDescription
,tblCRMActivities.ActivityGroupName as ActivityGroupName
,tblCRMActivities.ActivityStatus as ActivityStatus
,tblCRMActivities.ActivityCreatedDate as ActivityCreatedDate
,tblCRMActivities.CustomerNumber as CustomerNumber
,tblCustomers.strCustDesc as CustomerDescription
,tblCRMActivities.VendorNumber as VendorNumber
,tblVendors.strVendDesc as VendorDescription
,tblCRMActivities.InventoryItemNumber as InventoryItemNumber
,tblInv.strDesc as InventoryItemDescription
,tblCRMActivities.ProjectNumber as ProjectNumber
,tblProjects.strProjName as ProjectDescription
,tblCRMActivities.CustomerContactNo as CustomerContactNo
,tblCRMActivities.VendorContactNo as VendorContactNo
,tblCRMActivities.TransactionType as TransactionType
,tblCRMActivities.TransactionNumber as TransactionNumber
,tblCRMActivities.CreatedUser as CreatedUser
,tblCRMActivities.UpdatedUser as UpdatedUser
,tblCRMActivities.CreatedDate as CreatedDate
,tblCRMActivities.UpdatedDate as UpdatedDate
,tblCRMActivities.IsInactive as IsInactive
,tblCRMActivities.IsSalesGroup as IsSalesGroup
,tblCRMActivities.SalesPipelineText as SalesPipelineText
,tblCRMActivities.SalesPipelinePercentage as SalesPipelinePercentage
,tblCRMActivities.ActivityCreatedUser as ActivityCreatedUser
from tblCRMActivities left join tblCustomers on tblCRMActivities.CustomerNumber=tblCustomers.strCustName
left join tblVendors on tblCRMActivities.VendorNumber=tblVendors.strVendName
left join tblInv on tblCRMActivities.InventoryItemNumber=tblInv.strPartNumber
left join tblProjects on tblCRMActivities.ProjectNumber=tblProjects.strProjNumber
Where tblCRMActivities.CreatedUser=@ActivityCreatedUser
END
GO
/****** Object:  StoredProcedure [dbo].[GetMyStatisticsDataForAllUser]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetMainHomeTransactionData] ***********/

/*********** Start [GetMyStatisticsDataForAllUser] ***********/

CREATE PROCEDURE [dbo].[GetMyStatisticsDataForAllUser]

@StartDate as datetime
,@FinishDate as datetime

AS
BEGIN

DECLARE @Journal bigint

SET @Journal = ((SELECT COUNT(lngJourID) FROM tblJournal (NOLOCK) WHERE (dteSystemDate BETWEEN @StartDate AND @FinishDate)) + (SELECT COUNT(lngJourID) FROM tblJournalLY (NOLOCK) WHERE (dteSystemDate BETWEEN @StartDate AND @FinishDate))) 

SELECT 'Journal Entries' As SalesDoc, @Journal As SalesDocCount
UNION ALL
SELECT 'Sales Quotes', COUNT(strOrdDocID) FROM tblOrderDoc (NOLOCK) WHERE (dteSystemDate BETWEEN @StartDate AND @FinishDate) AND intDocType = 2 
UNION ALL
SELECT 'Sales Orders', COUNT(strOrdDocID) FROM tblOrderDoc (NOLOCK) WHERE (dteSystemDate BETWEEN @StartDate AND @FinishDate) AND intDocType = 1 
UNION ALL
SELECT 'Sales Invoices', COUNT(strInvDocID) FROM tblInvoiceDoc (NOLOCK) WHERE (dteSystemDate BETWEEN @StartDate AND @FinishDate) 
UNION ALL
SELECT 'Receipts', COUNT(lngCustPayID) FROM tblCustPay (NOLOCK) WHERE (dteSystemDate BETWEEN @StartDate AND @FinishDate) 
UNION ALL
SELECT 'Purchase Orders', COUNT(strOrdPDocID) FROM tblOrderDocP (NOLOCK) WHERE (dteSystemDate BETWEEN @StartDate AND @FinishDate) 
UNION ALL
SELECT 'Purchase Invoices', COUNT(strInvPDocID) FROM tblInvoiceDocP (NOLOCK) WHERE (dteSystemDate BETWEEN @StartDate AND @FinishDate) 
UNION ALL
SELECT 'Payments', COUNT(lngVendPayID) FROM tblVendPay (NOLOCK) WHERE (dteSystemDate BETWEEN @StartDate AND @FinishDate)

END
GO

/****** Object:  StoredProcedure [dbo].[GetMyStatisticsDataForCurrentUser]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetMyStatisticsDataForAllUser] ***********/

/*********** Start [GetMyStatisticsDataForCurrentUser] ***********/

CREATE PROCEDURE [dbo].[GetMyStatisticsDataForCurrentUser]

@StartDate as datetime
,@FinishDate as datetime
,@CurrentUserName as nvarchar(20)

AS
BEGIN
	
DECLARE @Journal bigint
set @Journal = ((SELECT COUNT(lngJourID) FROM tblJournal (NOLOCK) WHERE (dteSystemDate BETWEEN @StartDate AND @FinishDate) AND strUserName = @CurrentUserName) + (SELECT COUNT(lngJourID) FROM tblJournalLY (NOLOCK) WHERE (dteSystemDate BETWEEN @StartDate AND @FinishDate) AND strUserName = @CurrentUserName)) 

SELECT 'Journal Entries' AS SalesDoc, CAST(@Journal as bigint) AS SalesDocCount
UNION ALL
SELECT 'Sales Quotes', CAST(COUNT(strOrdDocID) AS bigint)  FROM tblOrderDoc (NOLOCK) WHERE (dteSystemDate BETWEEN @StartDate AND @FinishDate) AND strUserName = @CurrentUserName AND intDocType = 2
UNION ALL
SELECT 'Sales Orders', CAST(COUNT(strOrdDocID) AS bigint)  FROM tblOrderDoc (NOLOCK) WHERE (dteSystemDate BETWEEN @StartDate AND @FinishDate) AND strUserName = @CurrentUserName AND intDocType = 1 
UNION ALL
SELECT 'Sales Invoices', CAST(COUNT(strInvDocID) AS bigint)  FROM tblInvoiceDoc (NOLOCK) WHERE (dteSystemDate BETWEEN @StartDate AND @FinishDate) AND strUserName = @CurrentUserName 
UNION ALL
SELECT 'Receipts', CAST(COUNT(lngCustPayID)AS bigint)  FROM tblCustPay (NOLOCK) WHERE (dteSystemDate BETWEEN @StartDate AND @FinishDate) AND strUserName = @CurrentUserName 
UNION ALL
SELECT 'Purchase Orders', CAST(COUNT(strOrdPDocID)AS bigint)  FROM tblOrderDocP (NOLOCK) WHERE (dteSystemDate BETWEEN @StartDate AND @FinishDate) AND strUserName = @CurrentUserName 
UNION ALL
SELECT 'Purchase Invoices', CAST(COUNT(strInvPDocID)AS bigint)  FROM tblInvoiceDocP (NOLOCK) WHERE (dteSystemDate BETWEEN @StartDate AND @FinishDate) AND strUserName = @CurrentUserName 
UNION ALL
SELECT 'Payments', CAST(COUNT(lngVendPayID)AS bigint)  FROM tblVendPay (NOLOCK) WHERE (dteSystemDate BETWEEN @StartDate AND @FinishDate) AND strUserName = @CurrentUserName 

END
GO

/****** Object:  StoredProcedure [dbo].[GetNegativeStockitemsData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [LoadCRMNotifitcationDetails] (CRM) **********/

/*********************Start [GetNegativeStockitemsData]*****************************************/

CREATE PROCEDURE [dbo].[GetNegativeStockitemsData]
AS
BEGIN
	SELECT tblInv.strPartNumber AS 'PartNumber'
		,tblInv.strDesc AS 'Desc'
		,tblInvExt.strLocName AS 'LocName'
		,tblInvExt.decAvail AS 'Avail'
		,tblInvExt.decAlloc AS 'Alloc'
		,tblInvExt.decOnHand AS 'OnHand'
		,tblInvExt.decValue AS 'Value'
		,tblInv.bitInactive AS 'InActive'
		,tblInvExt.decManuf AS 'Manuf'
	FROM tblInv
	INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
	WHERE tblInvExt.decOnHand < 0
END
GO
/****** Object:  StoredProcedure [dbo].[GetNegInvMovingAvg]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetNegInvMovingAvg]
AS
BEGIN
	SELECT bitNegInvMovingAvg FROM tblCoOpts
END
GO
/****** Object:  StoredProcedure [dbo].[GetNextDocNumbersPosSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[GetNextDocNumbersPosSales]    Script Date: 10-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[GetNextDocNumbersPosSales]	
AS
BEGIN

SELECT ISNULL(MAX(lngInvNumber), 0) + 1 as NextInvoiceNumber,ISNULL(MAX(lngCNNumber), 0) + 1 as NextCNNumber, 
ISNULL(MAX(lngLBNumber), 0) + 1 AS NextLBNumber,
ISNULL(MAX(lngSONumber), 0) + 1 as NextOrderNumber,
 ISNULL(MAX(lngQuoteNumber), 0) + 1 as NextQuoteNumber,
  ISNULL(MAX(lngRCNumber), 0) + 1 as NextRCNumber
  FROM tblLastIDs

END
GO
/****** Object:  StoredProcedure [dbo].[GetNextNotificationID]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetNextNotificationID]    Script Date: 2020-05-16 ******/
CREATE PROCEDURE [dbo].[GetNextNotificationID]  
AS  
BEGIN  
   SELECT MAX(NotificationID) + 1  FROM tblnotificationdata  
END
GO
/****** Object:  StoredProcedure [dbo].[GetNextPaymentDocNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetNextPaymentDocNumber]
AS
BEGIN
	SELECT ISNULL(MAX(lngPYNumber), 0) + 1 FROM tblLastIDs
END
GO
/****** Object:  StoredProcedure [dbo].[GetNextTerminalId]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetNextTerminalId]    Script Date: 2019-08-07 16:37:12 ******/
CREATE PROCEDURE [dbo].[GetNextTerminalId]
AS
BEGIN
	DECLARE @Id INT
	DECLARE @NextId INT

	SELECT @Id = CAST(IDENT_CURRENT('tblTerminalSetup') AS INT)

	DECLARE @last_value INT = CONVERT(INT, (
				SELECT last_value
				FROM sys.identity_columns
				WHERE OBJECT_NAME(OBJECT_ID) = 'tblTerminalSetup'
				));

	IF @last_value IS NULL
	BEGIN
		SET @NextId = @Id
	END
	ELSE
	BEGIN
		SET @NextId = @Id + 1
	END

	SELECT @NextId
END
GO
/****** Object:  StoredProcedure [dbo].[GetNextWorkshopDocNumbers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** END [dbo].[SaveServiceableItemType] ***********/

/*********** START [dbo].[GetNextWorkshopDocNumbers] ***********/
CREATE PROCEDURE [dbo].[GetNextWorkshopDocNumbers]	
AS
BEGIN
	SELECT 
		ISNULL(MAX(lngSINumber), 0) + 1 AS SINumber, --Serviceable Item
		ISNULL(MAX(lngWQNumber), 0) + 1 AS WQNumber, --Quote number
		ISNULL(MAX(lngPJBNumber), 0) + 1 AS PJBNumber, -- Process Job number
		ISNULL(MAX(lngIRNumber), 0) + 1 AS IRNumber, -- Inventory Requisition number
		ISNULL(MAX(lngIJBNumber), 0) + 1 AS IJBNumber -- Invoice Job Number
	FROM 
		tblLastIDs
END

GO
/****** Object:  StoredProcedure [dbo].[GetNotificationsList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetNotificationsList]    Script Date: 2020-05-16 ******/
CREATE PROCEDURE [dbo].[GetNotificationsList]    
@UserName varchar(50)    
AS    
BEGIN    
   SELECT       
   NotificationID AS NotificationId,      
   strSenderName AS SenderName,      
   strApproverName AS ApproverName,      
   intNotificationType AS NotificationType,       
   strNotificationData AS NotificationJsonData,      
   intApprovalStatus AS ApprovalStatus,
   dteCreatedDateTime AS CreatedDateTime     
   FROM tblNotificationData        
   Where intApprovalStatus = 0 and strApproverName = @UserName 
   order by dteCreatedDateTime desc         
END 
GO
/****** Object:  StoredProcedure [dbo].[GetOfflineChangeUserDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetOfflineChangeUserDT]    Script Date: 24-06-2020 22:59:00 ******/
CREATE PROCEDURE [dbo].[GetOfflineChangeUserDT]
AS
BEGIN
   select TOP 1 * from tblOfflineChangeUserDT where IsSync = 0
END
GO
/****** Object:  StoredProcedure [dbo].[GetOfflineCustomerData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetOfflineCustomerData]    Script Date: 06-01-2020 08:25:00 AM ******/
CREATE PROCEDURE [dbo].[GetOfflineCustomerData]
AS
BEGIN
	SELECT *
	FROM tblOfflineCustomerDT
	WHERE IsSync = 0
END
GO
/****** Object:  StoredProcedure [dbo].[GetOfflineInvoiceDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetOfflineInvoiceDT]
AS
BEGIN
   select * from tblOfflineInvoiceDT where IsSync = 0 
END
GO
/****** Object:  StoredProcedure [dbo].[GetOfflineOrderAndQuoteData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetOfflineOrderAndQuoteData]
AS
BEGIN
   select * from tblOfflineOrderAndQuoteDT where IsSync = 0 
END
GO
/****** Object:  StoredProcedure [dbo].[GetOfflinePOSDefaultTable]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetOfflinePOSDefaultTable]  
AS  
BEGIN  
 -- SET NOCOUNT ON added to prevent extra result sets from  
 -- interfering with SELECT statements.  
 SET NOCOUNT ON;  
  
 DECLARE @DefaultTable TABLE (  
  TableName VARCHAR(500)  
  ,TableType VARCHAR(500)  
  );  
  
 INSERT INTO @DefaultTable  
 SELECT TableName  
  ,TableType  
 FROM (  
  VALUES (  
   'tblCoOpts'  
   ,'CoOptsTableType'  
   )  
   ,(  
   'tblCoOptsN'  
   ,'CoOptsNTableType'  
   )  
   ,(  
   'tblCustomers'  
   ,'CustomersTableType'  
   )  
   ,(  
   'tblDiscountMatrix'  
   ,'DiscountMatrixTableType'  
   )  
   ,(  
   'tblInv'  
   ,'InvTableType'  
   )  
   ,(  
   'tblInvCat'  
   ,'InvCatTableType'  
   )  
   ,(  
   'tblInvCatSec'  
   ,'InvCatSecTableType'  
   )  
   ,(  
   'tblInvExt'  
   ,'InvExtTableType'  
   )  
   ,(  
   'tblInvExtBin'  
   ,'InvExtBinTableType'  
   )  
   ,(  
   'tblInvLoc'  
   ,'InvLocTableType'  
   )  
   ,(  
   'tblInvLocBin'  
   ,'InvLocBinTableType'  
   )  
   ,(  
   'tblInvLotExt'  
   ,'POSInvLotExtTableType'  
   )  
   ,(  
   'tblInvPrice'  
   ,'InvPriceTableType'  
   )  
   ,(  
   'tblInvSerialExt'  
   ,'POSInvSerialExtTableType'  
   )  
   ,(  
   'tblPricelists'  
   ,'PricelistsTableType'  
   )  
   ,(  
   'tblPriceListsByDate'  
   ,'PriceListsByDateTableType'  
   )  
   ,(  
   'tblPricelistsCat'  
   ,'PricelistsCatTableType'  
   )  
   ,(  
   'tblUsers'  
   ,'UsersTableType'  
   )  
   ,(  
   'tblPriceData'  
   ,'PriceDataTableType'  
   )  
   ,(  
   'tblCountries'  
   ,'CountriesTableType'  
   )  
   ,(  
   'tblCustomerCat'  
   ,'CustomerCatTableType'  
   )  
   ,(  
   'tblAccountSets'  
   ,'AccountSetsTableType'  
   )  
   ,(  
   'tblCreditNoteReasons'  
   ,'CreditNoteReasonsTableType'  
   )  
   ,(  
   'tblCurrency'  
   ,'CurrencyTableType'  
   )  
   ,(  
   'tblTaxCodes'  
   ,'TaxCodesTableType'  
   )  
   ,(  
   'tblDepartments'  
   ,'DepartmentsTableType'  
   )  
   ,(  
   'tblInvNumConv'  
   ,'InvNumConvTableType'  
   )  
   ,(  
   'tblInvSerialTypes'  
   ,'InvSerialTypesTableType'  
   )  
   ,(  
   'tblDeliveryMethods'  
   ,'DeliveryMethodsTableType'  
   )  
   ,(  
   'tblSalesPersons'  
   ,'SalesPersonsTableType'  
   )  
   ,(  
   'tblInvWorkCentre'  
   ,'InvWorkCentreTableType'  
   )  
   ,(  
   'tblVoucherCodes'  
   ,'VoucherCodesTableType'  
   )  
   ,(  
   'tblSalesOrderEDIs'  
   ,'SalesOrderEDIsTableType'  
   )  
   ,(  
   'tblOrderDocQ'  
   ,'OrderDocQTableType'  
   )  
   ,(  
   'tblSalesOrderReasons'  
   ,'SalesOrderReasonsTableType'  
   )  
   ,(  
   'tblTenderTypes'  
   ,'TenderTypesTableType'  
   )  
   ,(  
   'tblTerms'  
   ,'TermsTableType'  
   )  
   ,(  
   'tblStatusTypes'  
   ,'StatusTypesTableType'  
   )  
   ,(  
   'tblTradeDiscMatrix'  
   ,'TradeDiscMatrixTableType'  
   )  
   ,(  
   'tblCompany'  
   ,'CompanyTableType'  
   )  
   ,(  
   'tblValueBased'  
   ,'ValueBasedTableType'  
   )  
   ,(  
   'tblProfileMenuItems'  
   ,'ProfileMenuItemsTableType'  
   )  
   ,(  
   'tblProfileMenu'  
   ,'ProfileMenuTableType'  
   )  
   ,(  
   'tblAccounts'  
   ,'AccountsTableType'  
   )  
   ,(  
   'tblPOSDr'  
   ,'POSDrTableType'  
   )  
   ,(  
   'tblPOSDrs'  
   ,'POSDrsTableType'  
   )  
   ,(  
   'tblPOSDrTenderTypes'  
   ,'POSDrTenderTypesTableType'  
   )  
   ,(  
   'tblPOSOpts'  
   ,'POSOptsTableType'  
   )  
   ,(  
   'tblBankRecAccts'  
   ,'BankRecAcctsTableType'  
   )  
   ,(  
   'tblTaxCodeExt'  
   ,'TaxCodeExtTableType'  
   )  
   ,(  
   'tblTaxDef'  
   ,'TaxDefTableType'  
   )  
   ,(  
   'tblInvImg'  
   ,'InvImgTableType'  
   )  
   ,(  
   'tblInvUpsell'  
   ,'InvUpsellTableType'  
   )  
   ,(  
   'tblUsersDocs'  
   ,'UsersDocsTableType'  
   )
   ,(
	'tblPOSDrsGroup'
	,'POSDrsGroupTableType'
	) 
   ,(  
   'tblPricelistsCatBuyout'  
   ,'PricelistsCatBuyoutTableType'  
   )  
   ,(  
   'tblInvSubCat'  
   ,'InvSubCatTableType'  
   )  
   ,(  
   'tblInvGroupSubCat'  
   ,'InvGroupSubCatTableType'  
   )  
   ,(  
   'tblInvEx'  
   ,'InvExTableType'  
   )  
   ,(  
   'tblInvBOM'  
   ,'InvBOMTableType'  
   )  
   ,(  
   'tblTradeDiscMatrixTypes'  
   ,'TradeDiscMatrixTypesTableType'  
   )  
   ,(  
   'tblTradeDiscMatrixTypesDT'  
   ,'TradeDiscMatrixTypesDTTableType'  
   )  
   ,(  
   'tblDimProLines'  
   ,'DimProLinesTableType'  
   )  
   ,(  
   'tblDimensionProfiles'  
   ,'DimensionProfilesTableType'  
   )  
   ,(  
   'tblSerialNumberTracking'  
   ,'SerialNumberTrackingTableTypeNew'  
   )  
   ,(  
   'tblOptFields'  
   ,'OptFieldsTableType'  
   )  
   ,(  
   'tblAutoComplete'  
   ,'AutoCompleteTableType'  
   )  
   ,(  
   'tblCenters'  
   ,'CentersTableType'  
   )  
   ,(    
   'tblEFDRegisterConfig'    
   ,'EFDRegisterConfigTableType'    
   )  
   ,(    
   'tblInvDevice'    
   ,'InvDeviceTableType'    
   )  
   --,(    
   -- 'tblEFDInvoiceDoc'    
   -- ,'EFDInvoiceDocTableType'    
   -- )  
    ,(    
    'tblEFDRegisterSettings'    
    ,'EFDRegisterSettingsTableType'    
    )  
    ,(    
    'tblProfileMenuImgs'    
    ,'ProfileMenuImgsTableType'    
    )  
    ,(  
    'tblESDUserMapping'  
    ,'ESDUserMappingTableType'  
    )  
	,(
	'tblPOSDrsCLSP'
	,'POSDrsCLSPTableType'
	) 
	,(
	'tblCurrencyExc'
	,'CurrencyExcTableType'
	) 
	,(
	'tblInvItemTax'
	,'InvItemTaxTableType'
	) 
	,(
	'tblPOSDrsDT'
	,'POSDrsDTTableType'
	) 

	,(
	'tblEFDRegisterConfigKenya'
	,'EFDRegisterConfigKenyaTableType'
	) 
	,(
	'tblCustomerSales'
	,'CustomerSalesTableType'
	) 

	,(
	'tblPOSDrsGroupSec'
	,'POSDrsGroupSecTableType'
	) 

	,(
	'tblAccountsLY'
	,'AccountsLYTableType'
	) 

	,(
	'tblEFDRegisterConfigMauritius'
	,'EFDRegisterConfigMauritiusTableType'
	) 

	,(
	'tblESDTaxCodeMapping'
	,'ESDTaxCodeMappingTableType'
	) 

	--,(
	--'tblEFDInvoiceDocMauritius'
	--,'EFDInvoiceDocMauritiusTableType'
	--) 

	,(
	'tblVSDCRegisterConfig'
	,'VSDCRegisterConfigTableType'
	) 

		,(
	'tblVSDCLocationMapping'
	,'VSDCLocationMappingTableType'
	) 

		,(
	'tblZambiaItemClassifications'
	,'ZambiaItemClassificationsTableType'
	) 

	,(
	'tblCompanyLoc'
	,'CompanyLocTableType'
	) 	

	,(
	'tblAccountsSec'
	,'AccountsSecTableType'
	) 

	,(  
    'tblInvContainers'  
    ,'InvContainersTableType'  
    ) 

  ) AS t(TableName, TableType)  
  
 DECLARE @TableLevel TABLE (  
  TableName VARCHAR(500)  
  ,TableLevel INT  
  );  
  
 WITH fk_tables  
 AS (  
  SELECT s1.name AS from_schema  
   ,o1.Name AS from_table  
   ,s2.name AS to_schema  
   ,o2.Name AS to_table  
  FROM sys.foreign_keys fk  
  INNER JOIN sys.objects o1 ON fk.parent_object_id = o1.object_id  
  INNER JOIN sys.schemas s1 ON o1.schema_id = s1.schema_id  
  INNER JOIN sys.objects o2 ON fk.referenced_object_id = o2.object_id  
  INNER JOIN sys.schemas s2 ON o2.schema_id = s2.schema_id  
  /*For the purposes of finding dependency hierarchy         
        we're not worried about self-referencing tables*/  
  WHERE NOT (  
    s1.name = s2.name  
    AND o1.name = o2.name  
    )  
  )  
  ,ordered_tables  
 AS (  
  SELECT s.name AS schemaName  
   ,t.name AS tableName  
   ,0 AS LEVEL  
  FROM (  
   SELECT *  
   FROM sys.tables  
   WHERE name <> 'sysdiagrams'  
   ) t  
  INNER JOIN sys.schemas s ON t.schema_id = s.schema_id  
  LEFT OUTER JOIN fk_tables fk ON s.name = fk.from_schema  
   AND t.name = fk.from_table  
  WHERE fk.from_schema IS NULL  
    
  UNION ALL  
    
  SELECT fk.from_schema  
   ,fk.from_table  
   ,ot.LEVEL + 1  
  FROM fk_tables fk  
  INNER JOIN ordered_tables ot ON fk.to_schema = ot.schemaName  
   AND fk.to_table = ot.tableName  
  )  
 INSERT INTO @TableLevel  
 SELECT DISTINCT ot.tableName  
  ,ot.LEVEL  
 FROM ordered_tables ot  
 INNER JOIN (  
  SELECT schemaName  
   ,tableName  
   ,MAX(LEVEL) maxLevel  
  FROM ordered_tables  
  GROUP BY schemaName  
   ,tableName  
  ) mx ON ot.schemaName = mx.schemaName  
  AND ot.tableName = mx.tableName  
  AND mx.maxLevel = ot.LEVEL  
  
 DECLARE @TableFinal TABLE (  
  TableID INT  
  ,TableName VARCHAR(500)  
  ,TableType VARCHAR(500)  
  ,TableLevel INT  
  );  
  
 INSERT INTO @TableFinal  
 SELECT ROW_NUMBER() OVER (  
   ORDER BY tbllevel.TableLevel ASC  
   ) AS TableID  
  ,tbldef.TableName  
  ,tbldef.TableType  
  ,tbllevel.TableLevel  
 FROM @DefaultTable AS tbldef  
 INNER JOIN @TableLevel AS tbllevel ON tbldef.TableName = tbllevel.TableName  
 ORDER BY tbllevel.TableLevel;  
  
 SELECT TableName  
  ,TableType  
 FROM @TableFinal  
END
GO
/****** Object:  StoredProcedure [dbo].[GetOfflinePOSServerDataDownloadPeriod]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetOfflinePOSServerDataDownloadPeriod]    Script Date: 04-02-2020 06:39:00 AM ******/
CREATE PROCEDURE [dbo].[GetOfflinePOSServerDataDownloadPeriod]
AS
BEGIN
select
 (
  CASE WHEN (bitEnablePOSSyncInterval = 1) THEN ISNULL(intPOSSyncInterval,30)
  ELSE 30 END)
   as Period
  from tblCoOpts
END
GO
/****** Object:  StoredProcedure [dbo].[GetOfflineReceiptsData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetOfflineReceiptsData]    Script Date: 06-01-2020 08:25:00 AM ******/
CREATE PROCEDURE [dbo].[GetOfflineReceiptsData]
AS
BEGIN
	SELECT *
	FROM tblOfflineReceiptsDT
	WHERE IsSync = 0
END
GO
/****** Object:  StoredProcedure [dbo].[GetOpenDACount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetOpenDACount]    Script Date: 2019-10-23 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetOpenDACount]
@Result As int = 0 OUTPUT
AS
BEGIN
	SELECT @Result = ISNULL(COUNT(DTL.strOrdDADocID),0) FROM tblOrderDocDA HDR INNER JOIN tblOrderDocDADT DTL ON HDR.strOrdDADocID = DTL.strOrdDADocID WHERE HDR.bitCleared = 0 AND (decStockQty <> decStockDAQtyRemain)
	SELECT @Result;
END
GO
/****** Object:  StoredProcedure [dbo].[GetOpenGRN]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetOpenGRN]
AS
SELECT DISTINCT DocumentNumber FROM tblUtilityPervHistoryLines WHERE DocumentType = 7 AND GRNQty > 0
GO
/****** Object:  StoredProcedure [dbo].[GetOpenGRVCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/**********End [SPStockPick]**********************/

/**********Start [GetOpenGRVCount]**********************/

CREATE PROCEDURE [dbo].[GetOpenGRVCount]
@Result As int = 0 OUTPUT
AS
BEGIN
	--SELECT @Result = COUNT(*)
	--FROM tblOrderDocPG
	--WHERE bitCleared = 0;
	
	SELECT @Result = ISNULL(COUNT(DTL.strOrdPGDocID),0) FROM tblOrderDocPG HDR INNER JOIN tblOrderDocPGDT DTL ON HDR.strOrdPGDocID = DTL.strOrdPGDocID WHERE HDR.bitCleared = 0 AND (decStockQty <> decStockGRVQtyRemain)
	SELECT @Result;
END
GO
/****** Object:  StoredProcedure [dbo].[GetOpenItemInvList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetOpenItemInvList]
AS
SELECT MST.StoreCode, MST.ItemCode, MST.CostThis12, MST.LastInvDate, MST.LastPurchDate, SUM((MST.OpeningQty + ((MST.QtyBuyThis01 + MST.QtyBuyThis02 + MST.QtyBuyThis03 + 
MST.QtyBuyThis04 + MST.QtyBuyThis05 + MST.QtyBuyThis06 + MST.QtyBuyThis07 + MST.QtyBuyThis08 + MST.QtyBuyThis09 + MST.QtyBuyThis10 + MST.QtyBuyThis11 + MST.QtyBuyThis12) 
+ (MST.QtyAdjustThis01 + MST.QtyAdjustThis02 + MST.QtyAdjustThis03 + MST.QtyAdjustThis04 + MST.QtyAdjustThis05 + MST.QtyAdjustThis06 + MST.QtyAdjustThis07 + MST.QtyAdjustThis08 
+ MST.QtyAdjustThis09 + MST.QtyAdjustThis10 + MST.QtyAdjustThis11 + MST.QtyAdjustThis12)) - (MST.QtySellThis01 + MST.QtySellThis02 + MST.QtySellThis03 + MST.QtySellThis04 
+ MST.QtySellThis05 + MST.QtySellThis06 + MST.QtySellThis07 + MST.QtySellThis08 + MST.QtySellThis09 + MST.QtySellThis10 + MST.QtySellThis11 + MST.QtySellThis12)) 
+ ((MST.QtyBuyLast + MST.QtyAdjustLast) - MST.QtySellLast)) AS Qty FROM tblUtilityPervMultiStoreTrn MST INNER JOIN tblUtilityPervInventory INV 
ON MST.ItemCode = INV.ItemCode WHERE INV.Physical = 1 GROUP BY MST.StoreCode, MST.ItemCode, MST.CostThis12, MST.LastInvDate, MST.LastPurchDate 
HAVING SUM((MST.OpeningQty + ((MST.QtyBuyThis01 + MST.QtyBuyThis02 + MST.QtyBuyThis03 + MST.QtyBuyThis04 + MST.QtyBuyThis05 + MST.QtyBuyThis06 + 
MST.QtyBuyThis07 + MST.QtyBuyThis08 + MST.QtyBuyThis09 + MST.QtyBuyThis10 + MST.QtyBuyThis11 + MST.QtyBuyThis12) + (MST.QtyAdjustThis01 + MST.QtyAdjustThis02 + 
MST.QtyAdjustThis03 + MST.QtyAdjustThis04 + MST.QtyAdjustThis05 + MST.QtyAdjustThis06 + MST.QtyAdjustThis07 + MST.QtyAdjustThis08 + MST.QtyAdjustThis09 + MST.QtyAdjustThis10 + 
MST.QtyAdjustThis11 + MST.QtyAdjustThis12)) - (MST.QtySellThis01 + MST.QtySellThis02 + MST.QtySellThis03 + MST.QtySellThis04 + MST.QtySellThis05 + MST.QtySellThis06 + 
MST.QtySellThis07 + MST.QtySellThis08 + MST.QtySellThis09 + MST.QtySellThis10 + MST.QtySellThis11 + MST.QtySellThis12)) + ((MST.QtyBuyLast + MST.QtyAdjustLast) - MST.QtySellLast)) > 0
GO
/****** Object:  StoredProcedure [dbo].[GetOpenItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[GetOpenItems]
AS
Begin
SELECT Z.OIBalance, Z.OICurrBalance, Z.CSCode, LTrim(RTrim(Z.MatchRef)) AS MatchRef, Z.dDate,Cast(Z.UseLocalCurrency as bit) as  UseLocalCurrency
FROM (SELECT ROUND(SUM(Amount),2) AS OIBalance, ROUND(SUM(CurrAmt),2) AS OICurrBalance, CSCode, CASE WHEN LTrim(RTrim(MatchRef)) = '' 
THEN LTrim(RTrim(Ref)) ELSE LTrim(RTrim(MatchRef)) END AS MatchRef, ISNULL((SELECT MAX(OI.dDate) FROM tblUtilityPervOpenItem OI WHERE OI.DC = 'D' 
AND OI.BatchID = 0 AND OI.PPeriod <> 13 AND OI.CSCode = tblUtilityPervOpenItem.CSCode AND LTrim(RTrim(OI.Ref)) = CASE WHEN LTrim(RTrim(tblUtilityPervOpenItem.MatchRef)) = ''
THEN LTrim(RTrim(tblUtilityPervOpenItem.Ref)) ELSE LTrim(RTrim(tblUtilityPervOpenItem.MatchRef)) END),'') AS dDate, 0 AS UseLocalCurrency 
FROM tblUtilityPervOpenItem WHERE CSCode IN (SELECT CSCode FROM tblUtilityPervOpenItem WHERE DC = 'D' AND BatchID = 0 AND PPeriod <> 13 GROUP BY CSCode 
HAVING ROUND(SUM(CurrAmt),2) <> 0 OR ROUND(SUM(Amount),2) <> 0) AND DC = 'D' AND BatchID = 0 AND PPeriod <> 13 
GROUP BY CSCode, CASE WHEN LTrim(RTrim(MatchRef)) = '' THEN LTrim(RTrim(Ref)) ELSE LTrim(RTrim(MatchRef)) END 
HAVING ROUND(SUM(Amount),2) <> 0 OR ROUND(SUM(CurrAmt),2) <> 0 UNION ALL SELECT ROUND(SUM(CurrAmt),2) AS OIBalance, 
ROUND(SUM(Amount),2) AS OICurrBalance, AccNumber AS CSCode, Refrence + '-CA' AS MatchRef, dDate, 1 AS UseLocalCurrency 
FROM tblUtilityPervLedgerTransactions WHERE GDC = 'D' AND PPeriod <> 13 AND UPPER([Description]) = 'CURRENCY ADJUSTMENT' AND CurrCode = 0 
GROUP BY AccNumber, Refrence, dDate HAVING ROUND(SUM(CurrAmt),2) <> 0 OR ROUND(SUM(Amount),2) <> 0 
UNION ALL 
SELECT SUM(BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + BalanceThis05 + BalanceThis06 + BalanceThis07 + BalanceThis08 + BalanceThis09 + BalanceThis10 + 
BalanceThis11 + BalanceThis12 + BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + BalanceLast07 + BalanceLast08 + 
BalanceLast09 + BalanceLast10 + BalanceLast11 + BalanceLast12) AS OIBalance, SUM(BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + BalanceThis05 + 
BalanceThis06 + BalanceThis07 + BalanceThis08 + BalanceThis09 + BalanceThis10 + BalanceThis11 + BalanceThis12 + BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + 
BalanceLast05 + BalanceLast06 + BalanceLast07 + BalanceLast08 + BalanceLast09 + BalanceLast10 + BalanceLast11 + BalanceLast12) AS OICurrBalance, CustomerCode AS CSCode,
 'Balance Forward' AS MatchRef, LastCrDate AS dDate, 0 AS UseLocalCurrency FROM tblUtilityPervCustomerMaster WHERE OpenItem = 0 GROUP BY CustomerCode, LastCrDate 
 HAVING SUM(BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + BalanceThis05 + BalanceThis06 + BalanceThis07 + BalanceThis08 + BalanceThis09 + BalanceThis10 + 
 BalanceThis11 + BalanceThis12 + BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + BalanceLast07 + BalanceLast08 + BalanceLast09 + 
 BalanceLast10 + BalanceLast11 + BalanceLast12) <> 0) Z ORDER BY Z.CSCode, Z.dDate, Z.MatchRef
 End
GO
/****** Object:  StoredProcedure [dbo].[GetOpenItemsVendors]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetOpenItemsVendors]
AS
SELECT Z.OIBalance, Z.OICurrBalance, Z.CSCode, LTrim(RTrim(Z.MatchRef)) AS MatchRef, Z.dDate, Z.UseLocalCurrency FROM (SELECT ROUND(SUM(Amount),2) AS OIBalance, 
ROUND(SUM(CurrAmt),2) AS OICurrBalance, CSCode, CASE WHEN LTrim(RTrim(MatchRef)) = '' THEN LTrim(RTrim(Ref)) ELSE LTrim(RTrim(MatchRef)) END AS MatchRef, 
ISNULL((SELECT MAX(OI.dDate) FROM tblUtilityPervOpenItem OI WHERE OI.DC = 'C' AND OI.BatchID = 0 AND OI.PPeriod <> 13 AND OI.CSCode = tblUtilityPervOpenItem.CSCode 
AND LTrim(RTrim(OI.Ref)) = CASE WHEN LTrim(RTrim(tblUtilityPervOpenItem.MatchRef)) = '' THEN LTrim(RTrim(tblUtilityPervOpenItem.Ref)) 
ELSE LTrim(RTrim(tblUtilityPervOpenItem.MatchRef)) END),'') AS dDate, 0 AS UseLocalCurrency FROM tblUtilityPervOpenItem 
WHERE CSCode IN (SELECT CSCode FROM tblUtilityPervOpenItem WHERE DC = 'C' AND BatchID = 0 AND PPeriod <> 13 GROUP BY CSCode HAVING ROUND(SUM(CurrAmt),2) <> 0 
OR ROUND(SUM(Amount),2) <> 0) AND DC = 'C' AND BatchID = 0 AND PPeriod <> 13 GROUP BY CSCode, CASE WHEN LTrim(RTrim(MatchRef)) = '' THEN LTrim(RTrim(Ref)) 
ELSE LTrim(RTrim(MatchRef)) END HAVING ROUND(SUM(Amount),2) <> 0 OR ROUND(SUM(CurrAmt),2) <> 0 UNION ALL SELECT ROUND(SUM(CurrAmt),2) AS OIBalance, 
ROUND(SUM(Amount),2) AS OICurrBalance, AccNumber AS CSCode, Refrence + '-CA' AS MatchRef, dDate, 1 AS UseLocalCurrency 
FROM tblUtilityPervLedgerTransactions 
WHERE GDC = 'C' AND PPeriod <> 13 AND UPPER([Description]) = 'CURRENCY ADJUSTMENT' AND CurrCode = 0 
GROUP BY AccNumber, Refrence, dDate HAVING ROUND(SUM(CurrAmt),2) <> 0 OR ROUND(SUM(Amount),2) <> 0 
UNION ALL 
SELECT SUM(BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + BalanceThis05 + BalanceThis06 + BalanceThis07 + BalanceThis08 + BalanceThis09 + 
BalanceThis10 + BalanceThis11 + BalanceThis12 + BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + BalanceLast07 + 
BalanceLast08 + BalanceLast09 + BalanceLast10 + BalanceLast11 + BalanceLast12) AS OIBalance, SUM(BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + 
BalanceThis05 + BalanceThis06 + BalanceThis07 + BalanceThis08 + BalanceThis09 + BalanceThis10 + BalanceThis11 + BalanceThis12 + BalanceLast01 + BalanceLast02 + 
BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + BalanceLast07 + BalanceLast08 + BalanceLast09 + BalanceLast10 + BalanceLast11 + BalanceLast12) 
AS OICurrBalance, SupplCode AS CSCode, 'Balance Forward' AS MatchRef, LastCrDate AS dDate, 0 AS UseLocalCurrency FROM tblUtilityPervSupplierMaster 
WHERE OpenItem = 0 GROUP BY SupplCode, LastCrDate HAVING SUM(BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + BalanceThis05 + BalanceThis06 + BalanceThis07 + 
BalanceThis08 + BalanceThis09 + BalanceThis10 + BalanceThis11 + BalanceThis12 + BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + 
BalanceLast07 + BalanceLast08 + BalanceLast09 + BalanceLast10 + BalanceLast11 + BalanceLast12) <> 0) Z ORDER BY Z.CSCode, Z.dDate, Z.MatchRef
GO
/****** Object:  StoredProcedure [dbo].[GetOpenOrders]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetQuotes] ***********/

/*********** Start [GetOpenOrders] ***********/
CREATE PROCEDURE [dbo].[GetOpenOrders]
	
	@CustomerNumber AS VARCHAR(50)
AS
BEGIN
SELECT * FROM 
(
	SELECT HDR.strOrdDocID AS DocumentNumber
		,HDR.dteJournalDate AS JournalDate
		,HDR.dteRequired AS [Required]
		,ISNULL(HDR.strReference, '') AS Reference
		,DTL.strPartNumber AS PartNumber
		,DTL.strPartDesc AS PartDesc
		,DTL.decQty AS Qty
		,CASE HDR.bitIsForeign
			WHEN 0
				THEN DTL.decPriceEaExc
			ELSE DTL.decPriceEaExcF
			END AS PriceEaExc
		,DTL.strTaxCode AS TaxCode
		,CASE HDR.bitIsForeign
			WHEN 0
				THEN DTL.decLineTaxAmt
			ELSE DTL.decLineTaxAmtF
			END AS LineTaxAmt
		,CASE HDR.bitIsForeign
			WHEN 0
				THEN DTL.decLineTotExc + DTL.decLineTaxAmt
			ELSE DTL.decLineTotExcF + DTL.decLineTaxAmtF
			END AS LineTotInc
		,CASE HDR.bitIsForeign
			WHEN 0
				THEN ROUND(((DTL.decLineTotExc + DTL.decLineTaxAmt) / decQty) * DTL.decQtyRemaining, 2)
			ELSE ROUND(((DTL.decLineTotExcF + DTL.decLineTaxAmtF) / decQty) * DTL.decQtyRemaining, 2)
			END AS Outstanding
		,DTL.intLineNo AS [LineNo]
	FROM tblOrderDoc HDR
	INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
	WHERE (HDR.decTotal <> 0)
		AND (bitCleared = 0)
		AND (intDocType = 1)
		AND (HDR.strCustName = @CustomerNumber)
		AND (DTL.decQtyRemaining <> 0)
	
	
	UNION ALL
	
	SELECT HDR.ProcessDocID AS DocumentNumber
		,HDR.DocumentDate AS JournalDate
		,HDR.RequiredDate AS [Required]
		,ISNULL(HDR.ReferenceNumber, '') AS Reference
		,DTL.PartNumber AS PartNumber
		,DTL.PartDesc AS PartDesc
		,DTL.JobQty AS Qty
		,CASE HDR.IsForeign
			WHEN 0
				THEN DTL.PriceEaExc
			ELSE DTL.PriceEaExcF
			END AS PriceEaExc
		,DTL.TaxCode AS TaxCode
		,CASE HDR.IsForeign
			WHEN 0
				THEN DTL.LineTaxAmt
			ELSE DTL.LineTaxAmtF
			END AS LineTaxAmt
		,CASE HDR.IsForeign
			WHEN 0
				THEN DTL.LineTotExc + DTL.LineTaxAmt
			ELSE DTL.LineTotExcF + DTL.LineTaxAmtF
			END AS LineTotInc
		,CASE HDR.IsForeign
			WHEN 0
				THEN ROUND(((DTL.LineTotExc + DTL.LineTaxAmt) / JobQty) * DTL.QtyRemaining, 2)
			ELSE ROUND(((DTL.LineTotExcF + DTL.LineTaxAmtF) / JobQty) * DTL.QtyRemaining, 2)
			END AS Outstanding
		,DTL.[LineNo] AS [LineNo]
	FROM tblWSProcessDoc HDR
	INNER JOIN tblWSProcessDocDT DTL ON HDR.ProcessDocID = DTL.ProcessDocID
	WHERE (HDR.Total <> 0)
		AND (Cleared = 0)
		AND (DocType = 2)   --Process Job
		AND (HDR.CustomerCode = @CustomerNumber)
		AND (DTL.QtyRemaining <> 0)
) Z
ORDER BY
	 Z.DocumentNumber
	,Z.JournalDate
	,z.[LineNo]
END
GO
/****** Object:  StoredProcedure [dbo].[GetOpenOrdersInfo]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetQuotesInfo] ***********/

/*********** Start [GetOpenOrdersInfo] ***********/
CREATE PROCEDURE [dbo].[GetOpenOrdersInfo] 
(
	@CustomerNumber NVARCHAR(50),
	@IsShowOrders BIT,
	@FromDate DateTime,
	@ToDate DateTime
)
 AS 
 BEGIN
	SELECT  
		T3.strPartNumber AS PartNumber, 
		T2.strUnit as Unit, 
		T2.strPartDesc as PartDescription, 
		T1.strOrdDocID as OrdDocID, 
		T2.decQty AS Qty, 
		T2.decQtyRemaining AS QtyRemaining, 
		T3.decSumOnOrder AS SumOnOrder,
		CASE WHEN T2.bitIsForeign = 0 THEN T2.decPriceEaExc ELSE T2.decPriceEaExcF END AS UnitPrice, 
		ISNULL(T4.strTaxCode,'') AS TaxCode, 
		CASE WHEN T2.bitIsForeign = 0 THEN CASE WHEN ISNULL(T4.decRate,0) = 0 THEN T2.decQtyRemaining * T2.decPriceEaExc ELSE ((T2.decQtyRemaining * T2.decPriceEaExc) + ((T2.decQtyRemaining * T2.decPriceEaExc) * (T4.decRate / 100))) END ELSE CASE WHEN		ISNULL(T4.decRate,0) = 0 THEN T2.decQtyRemaining * T2.decPriceEaExcF ELSE ((T2.decQtyRemaining * T2.decPriceEaExcF) + ((T2.decQtyRemaining * T2.decPriceEaExcF) * (T4.decRate / 100))) END END AS RemainingOrderValue, 
		CASE WHEN T2.bitIsForeign = 0 THEN T1.decTotal ELSE T1.decTotalF END AS TotalOrderValue, 
		T1.strSalesName as SalesName, 
        T2.strLocation as Location, 
		T1.dteJournalDate as Date, 
		T1.strStatusTypeCode as StatusTypeCode
   FROM tblOrderDoc T1 
   INNER JOIN tblOrderDocDT T2 ON T1.strOrdDocID = T2.strOrdDocID 
   INNER JOIN tblInv T3 ON T2.strPartNumber = T3.strPartNumber 
   LEFT JOIN tblTaxCodeExt T4 ON T2.strTaxCode = T4.strTaxCode 
   WHERE T1.strCustName = @CustomerNumber 
   AND T1.intDocType = 1
   AND ((@IsShowOrders = 1 AND CONVERT(date,T1.dteJournalDate) BETWEEN CONVERT(date,@FromDate) AND CONVERT(date, @ToDate)) OR (@IsShowOrders = 0 AND T1.bitCleared = 0))
   ORDER BY T1.dteJournalDate,T1.strOrdDocID
 END
GO
/****** Object:  StoredProcedure [dbo].[GetOpenOrdersProcessJobInfo]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [TurnBitClearedONOFF]***********/

/*********** Start [GetOpenOrdersProcessJobInfo] ***********/


---------------------------------

CREATE PROCEDURE [dbo].[GetOpenOrdersProcessJobInfo] (
	@CustomerNumber NVARCHAR(50)
	,@IsShowOrders BIT
	,@FromDate DATETIME
	,@ToDate DATETIME
	)
AS
BEGIN
	SELECT *
	FROM (
		SELECT T3.strPartNumber AS PartNumber
			,T2.strUnit AS Unit
			,T2.strPartDesc AS PartDescription
			,T1.strOrdDocID AS OrdDocID
			,T2.decQty AS Qty
			,T2.decQtyRemaining AS QtyRemaining
			,T3.decSumOnOrder AS SumOnOrder
			,CASE 
				WHEN T2.bitIsForeign = 0
					THEN T2.decPriceEaExc
				ELSE T2.decPriceEaExcF
				END AS UnitPrice
			,ISNULL(T4.strTaxCode, '') AS TaxCode
			,CASE 
				WHEN T2.bitIsForeign = 0
					THEN CASE 
							WHEN ISNULL(T4.decRate, 0) = 0
								THEN T2.decQtyRemaining * T2.decPriceEaExc
							ELSE ((T2.decQtyRemaining * T2.decPriceEaExc) + ((T2.decQtyRemaining * T2.decPriceEaExc) * (T4.decRate / 100)))
							END
				ELSE CASE 
						WHEN ISNULL(T4.decRate, 0) = 0
							THEN T2.decQtyRemaining * T2.decPriceEaExcF
						ELSE ((T2.decQtyRemaining * T2.decPriceEaExcF) + ((T2.decQtyRemaining * T2.decPriceEaExcF) * (T4.decRate / 100)))
						END
				END AS RemainingOrderValue
			,CASE 
				WHEN T2.bitIsForeign = 0
					THEN T1.decTotal
				ELSE T1.decTotalF
				END AS TotalOrderValue
			,T1.strSalesName AS SalesName
			,T2.strLocation AS Location
			,T1.dteJournalDate [DATE]
			,T1.strStatusTypeCode AS StatusTypeCode
		FROM tblOrderDoc T1
		INNER JOIN tblOrderDocDT T2 ON T1.strOrdDocID = T2.strOrdDocID
		INNER JOIN tblInv T3 ON T2.strPartNumber = T3.strPartNumber
		LEFT JOIN tblTaxCodeExt T4 ON T2.strTaxCode = T4.strTaxCode
		WHERE T1.strCustName = @CustomerNumber
			AND T1.intDocType = 1
			AND (
				(
					@IsShowOrders = 1
					AND (
						CONVERT(DATE, T1.dteJournalDate) BETWEEN CONVERT(DATE, @FromDate)
							AND CONVERT(DATE, @ToDate)
						)
					)
				OR (
					@IsShowOrders = 0
					AND T1.bitCleared = 0
					)
				)
		--ORDER BY T1.dteJournalDate,T1.strOrdDocID
		
		UNION ALL
		
		SELECT PDT.PartNumber
			,PDT.Unit
			,PDT.PartDesc AS PartDescription
			,P.ProcessDocID AS OrdDocID
			,PDT.JobQty AS Qty
			,PDT.StockQtyRemain AS QtyRemaining
			,INV.decSumOnOrder AS SumOnOrder
			,CASE 
				WHEN P.IsForeign = 0
					THEN PDT.PriceEaExc
				ELSE PDT.PriceEaExcF
				END AS UnitPrice
			,ISNULL(PDT.TaxCode, '') AS TaxCode
			,CASE 
				WHEN PDT.IsForeign = 0
					THEN CASE 
							WHEN ISNULL(TXE.decRate, 0) = 0
								THEN PDT.QtyRemaining * PDT.PriceEaExc
							ELSE ((PDT.QtyRemaining * PDT.PriceEaExc) + ((PDT.QtyRemaining * PDT.PriceEaExc) * (TXE.decRate / 100)))
							END
				ELSE CASE 
						WHEN ISNULL(TXE.decRate, 0) = 0
							THEN PDT.QtyRemaining * PDT.PriceEaExcF
						ELSE ((PDT.QtyRemaining * PDT.PriceEaExcF) + ((PDT.QtyRemaining * PDT.PriceEaExcF) * (TXE.decRate / 100)))
						END
				END AS RemainingOrderValue
			,CASE 
				WHEN P.IsForeign = 0
					THEN P.Total
				ELSE P.TotalF
				END AS TotalOrderValue
			,PDT.SalesName
			,PDT.Location
			,P.DocumentDate AS [DATE]
			,P.StatusTypeCode
		FROM tblWSProcessDoc P
		INNER JOIN tblWSProcessDocDT PDT ON P.ProcessDocID = PDT.ProcessDocID
		INNER JOIN tblInv INV ON PDT.PartNumber = INV.strPartNumber
		LEFT JOIN tblTaxCodeExt TXE ON PDT.TaxCode = TXE.strTaxCode
		WHERE P.CustomerCode = @CustomerNumber
			AND P.DocType = 2
			AND (
				(
					@IsShowOrders = 1
					AND (
						CONVERT(DATE, P.DocumentDate) BETWEEN CONVERT(DATE, @FromDate)
							AND CONVERT(DATE, @ToDate)
						)
					)
				OR (
					@IsShowOrders = 0
					AND P.Cleared = 0
					AND JobStatusType = 2
					)
				)
		) AS TEMP
	ORDER BY [DATE]
		,OrdDocID
END
GO
/****** Object:  StoredProcedure [dbo].[GetOpenPayInv]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetOpenPayInv]
AS
BEGIN
	SELECT ISNULL(SUM(tblVendTransDT.decAmount), 0) AS decAmount
	FROM tblVendTrans
	INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
	WHERE (tblVendTransDT.bitReversed = 0)
END
GO
/****** Object:  StoredProcedure [dbo].[GetOpenPayInvSeparate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetOpenPayInvSeparate]  
AS  
BEGIN  
	SELECT ISNULL(SUM(tblVendTransDT.decAmount), 0) AS Expr1 FROM tblVendTransDT 
	INNER JOIN tblVendTrans ON tblVendTransDT.lngVendTrID = tblVendTrans.lngVendTrID 
	INNER JOIN tblVendors ON tblVendTrans.strVendName = tblVendors.strVendName 
	INNER JOIN tblAccounts ON tblAccounts.intGLNumber = ISNULL(tblVendors.intGLNumberAP,(select intGLNumber from tblAccounts where bitLinkAP = 1)) 
	WHERE (tblVendTransDT.bitReversed = 0) AND (tblVendTrans.intTransType <> 2)
END
GO
/****** Object:  StoredProcedure [dbo].[GetOpenPOHeaderList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetOpenPOHeaderList]
(
	@dteStartDate date,
	@dteEndDate date
)
AS
SELECT HH.DocumentNumber, HH.DocumentDate, HH.CustomerCode, HH.OrderNumber, HH.Total, HH.TotalTax, HH.Message01, HH.Message02, HH.Message03, HH.SalesManCode, 
HH.CurrencyCode, HH.ExchangeRate, HH.FCurrTotal, HH.FCurrTotalTax, HH.Terms, HH.DiscountPercent, HH.DocumentType 
FROM tblUtilityPervHistoryHeader HH LEFT OUTER JOIN tblUtilityPervCurrencyFile CF ON HH.CurrencyCode = CF.CurrCode 
WHERE HH.DocumentType = 106 AND HH.DocumentNumber IN (SELECT HL.DocumentNumber FROM tblUtilityPervHistoryLines HL 
WHERE HL.DocumentType = 106 AND HL.QtyLeft > 0 GROUP BY HL.DocumentNumber) AND (HH.DocumentDate BETWEEN @dteStartDate AND @dteEndDate) ORDER BY HH.DocumentNumber
GO
/****** Object:  StoredProcedure [dbo].[GetOpenReceipts]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCustTransID] ***********/

/*********** Start [GetOpenReceipts] ***********/
CREATE PROCEDURE [dbo].[GetOpenReceipts] (
	@PickedCustomer NVARCHAR(50)
	,@GLNumber NVARCHAR(30)
	,@PickerStartDate DATETIME
	,@PickerEndDate DATETIME
	)
AS
BEGIN
	SELECT tblCustPay.dteJournalDate AS JournalDate
		,tblCustomers.strCustName AS CustomerName
		,tblCustomers.strCustDesc AS CustomerDesc
		,tblCustPay.strSource AS [Source]
		,tblCustPay.lngJourID AS Journal
		,tblCustPay.decAmount AS Amount
		,tblCustPay.lngCustPayID AS PayId
		,tblCustPay.bitIsForeign AS IsForeign
		,tblCustPay.decAmountF AS AmountF
		,tblCustPay.strCurrency AS Currency
	FROM tblCustomers
	INNER JOIN tblCustPay ON tblCustomers.strCustName = tblCustPay.strCustName
	WHERE (tblCustPay.bitReversed = 0)
		AND (tblCustPay.bitReversal = 0)
		AND (
			tblCustPay.dteJournalDate BETWEEN @PickerStartDate
				AND @PickerEndDate
			)
		AND (
			tblCustPay.strCustName = CASE ISNULL(@PickedCustomer, '') --LEN(@PickedCustomer)    
				WHEN ''
					THEN tblCustPay.strCustName
				ELSE @PickedCustomer
				END
			)
		AND (
			tblCustPay.intBankAcct = CASE ISNULL(@GLNumber, '') --LEN(@GLNumber)    
				WHEN ''
					THEN tblCustPay.intBankAcct
				ELSE @GLNumber
				END
			)
END
GO
/****** Object:  StoredProcedure [dbo].[GetOpenRecInv]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetOpenRecInv]
AS
BEGIN
SELECT
  SUM(ISNULL(Z.decAmount, 0))
FROM
  (
    SELECT
      ISNULL(SUM(tblCustTransDT.decAmount), 0) AS decAmount
    FROM
      tblCustTrans
      INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
    WHERE
      (tblCustTransDT.bitReversed = 0)
      AND (
        tblCustTrans.strOrdDocID IS NULL
        OR (
          tblCustTrans.strInvDocID IS NOT NULL
          AND tblCustTrans.strOrdDocID IS NOT NULL
        )
      )
    UNION ALL
    SELECT
      ISNULL(SUM(tblCustTransDT.decAmount), 0) AS decAmount
    FROM
      tblCustTrans
      INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
    WHERE
      (tblCustTransDT.bitReversed = 0)
      AND (tblCustTrans.strOrdDocID IS NOT NULL)
      AND (tblCustTrans.strInvDocID IS NULL)
      AND (tblCustTransDT.lngCustPayID IS NOT NULL)
  ) Z
  END
GO
/****** Object:  StoredProcedure [dbo].[GetOpenRecInvSeparate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetOpenRecInvSeparate]  
AS  
BEGIN  
 --SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) AS Expr1 
 --FROM tblCustTransDT 
 --INNER JOIN tblCustTrans ON tblCustTransDT.lngCustTrID = tblCustTrans.lngCustTrID   
 --WHERE (tblCustTransDT.bitReversed = 0) AND (tblCustTrans.intTransType <> 2)
 SELECT SUM(ISNULL(Z.decAmount, 0))
FROM (
	SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) AS decAmount
	FROM tblCustTrans
	INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
	WHERE (tblCustTransDT.bitReversed = 0)
		AND (tblCustTrans.intTransType <> 2)
		AND (
			tblCustTrans.strOrdDocID IS NULL
			OR (
				tblCustTrans.strInvDocID IS NOT NULL
				AND tblCustTrans.strOrdDocID IS NOT NULL
				)
			)
	
	UNION ALL
	
	SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) AS decAmount
	FROM tblCustTrans
	INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
	WHERE (tblCustTransDT.bitReversed = 0)
		AND (tblCustTrans.intTransType <> 2)
		AND (tblCustTrans.strOrdDocID IS NOT NULL)
		AND (tblCustTrans.strInvDocID IS NULL)
		AND (tblCustTransDT.lngCustPayID IS NOT NULL)
	) Z
END  
GO
/****** Object:  StoredProcedure [dbo].[GetOpenSOHeaderList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetOpenSOHeaderList]
(
	@dteStartDate date,
	@dteEndDate date
)
AS
SELECT HH.DocumentNumber, HH.DocumentDate, HH.CustomerCode, HH.OrderNumber, HH.Total, HH.TotalTax, HH.Message01, HH.Message02, HH.Message03, HH.SalesManCode, 
HH.CurrencyCode, HH.ExchangeRate, HH.FCurrTotal, HH.FCurrTotalTax, HH.Terms, HH.DiscountPercent, HH.DocumentType 
FROM tblUtilityPervHistoryHeader HH LEFT OUTER JOIN tblUtilityPervCurrencyFile CF ON HH.CurrencyCode = CF.CurrCode 
WHERE HH.DocumentType = 102 AND HH.DocumentNumber IN (SELECT HL.DocumentNumber FROM tblUtilityPervHistoryLines HL 
WHERE HL.DocumentType = 102 AND HL.QtyLeft > 0 GROUP BY HL.DocumentNumber) AND (HH.DocumentDate BETWEEN @dteStartDate AND @dteEndDate) 
ORDER BY HH.DocumentNumber
GO

/****** Object:  StoredProcedure [dbo].[GetOptFieldsAndValueFromItemCode]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetOptFieldsAndValueFromItemCode]  
(  
 @ServiceableItemCode as NVARCHAR(50)  
)  
AS  
BEGIN  
   SELECT     
  OptFields.FieldId    
  --ServiceableItemCode     
  ,[FieldType]  
  ,[Description]    
  ,[IsMandatory]    
  ,[DisplayOrder]    
  ,[ItemList]  
  ,ISNULL(value,'') AS value  
 FROM tblWSServiceableItemTypeOptFields AS OptFields    
  INNER JOIN tblWSServiceableItem AS ServicableItem ON OptFields.ServiceableItemTypeId = ServicableItem.ServiceableItemTypeId   
  LEFT JOIN tblWSServiceableItemOptFieldDetails AS OptValues ON  OptFields.FieldId = OptValues.FieldId AND  ServicableItem.ServiceableItemCode = OptValues.ServiceableItemCode
 WHERE     
  ServicableItem.ServiceableItemCode= @ServiceableItemCode      
END
GO
/****** Object:  StoredProcedure [dbo].[GetOptionalFieldNamesPos]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[GetOptionalFieldNamesPos]    Script Date: 10-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[GetOptionalFieldNamesPos]
AS
BEGIN

SELECT strRecDoc1 as RecDoc1, strRecDoc2 as RecDoc2, strRecDoc3 as RecDoc3, strRecDoc4 as RecDoc4,
 strRecDoc5 as RecDoc5, strRecDoc6 as RecDoc6, strRecDoc7 as RecDoc7, strRecDoc8 as RecDoc8, strRecDoc9 as RecDoc9,
  strRecDoc10 as RecDoc10, strRecDoc11 as RecDoc11, strRecDoc12 as RecDoc12, strRecDoc13 as RecDoc13, strRecDoc14 as RecDoc14,
   bitRecDoc1 as IsRecDoc1, bitRecDoc2 as IsRecDoc2, bitRecDoc3 as IsRecDoc3, bitRecDoc4 as IsRecDoc4, bitRecDoc5 as IsRecDoc5,
    bitRecDoc6 as IsRecDoc6, bitRecDoc7 as bitRecDoc7 , bitRecDoc8 as IsRecDoc8, bitRecDoc9 as IsRecDoc9, bitRecDoc10, bitRecDoc11 as IsRecDoc11,
	 bitRecDoc12 as IsRecDoc12, bitRecDoc13 as IsRecDoc13, bitRecDoc14 as IsRecDoc14 FROM tblOptFields

END
GO
/****** Object:  StoredProcedure [dbo].[GetOptionalLineFieldLists]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetOptionalLineFieldLists]
(
	@DocumentLineModule int
)
AS
BEGIN
	SELECT 
		tblOptLineFieldLists.lngID AS ID, 
		tblOptLineFieldLists.intModule AS Module,
		tblOptLineFieldLists.strField AS Field,
		tblOptLineFieldLists.strValue AS Value
	FROM 
		tblOptLineFieldLists 
	Left JOIN 
		tblOptLineFields 
	ON 
		tblOptLineFieldLists.intModule = tblOptLineFields.intModule AND 
		tblOptLineFieldLists.strField = tblOptLineFields.strField 
	WHERE 
		tblOptLineFieldLists.intModule = @DocumentLineModule
	ORDER BY 
		strValue
END
GO
/****** Object:  StoredProcedure [dbo].[GetOptionalLineFields]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetOptionalLineFields]
(
	@DocumentLineModule int
)
AS
BEGIN
	SELECT 
		intModule AS Module,
		strField AS Field,
		strCaption AS Caption,
		bitMandatory AS Mandatory,
		intType AS [Type]
	FROM 
		tblOptLineFields 
	WHERE 
		intModule = @DocumentLineModule
END
GO
/****** Object:  StoredProcedure [dbo].[GetOptionFields]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetOptionFields] ( @moduleType INT = 0 )
AS
    BEGIN

        IF @moduleType > 0
            BEGIN

                IF @moduleType = 2
                    BEGIN

                        SELECT  strPay1 AS Doc1 ,
                                strPay2 AS Doc2 ,
                                strPay3 AS Doc3 ,
                                strPay4 AS Doc4 ,
                                strPay5 AS Doc5 ,
                                strPay6 AS Doc6 ,
                                strPay7 AS Doc7 ,
                                strPay8 AS Doc8 ,
                                strPay9 AS Doc9 ,
                                strPay10 AS Doc10 ,
                                strPay11 AS Doc11 ,
                                strPay12 AS Doc12 ,
								bitPay1 AS Pay1,
								bitPay2 AS Pay2,
								bitPay3 AS Pay3,
								bitPay4 AS Pay4,
								bitPay5 AS Pay5,
								bitPay6 AS Pay6,
								bitPay7 AS Pay7,
								bitPay8 AS Pay8,
								bitPay9 AS Pay9,
								bitPay10 AS Pay10,
								bitPay11 AS Pay11,
								bitPay12 AS Pay12 
                        FROM    tblOptFields;

                    END;

                ELSE
                    IF @moduleType = 3
                        BEGIN

                            SELECT  strRec1 AS Doc1 ,
                                    strRec2 AS Doc2 ,
                                    strRec3 AS Doc3 ,
                                    strRec4 AS Doc4 ,
                                    strRec5 AS Doc5 ,
                                    strRec6 AS Doc6 ,
                                    strRec7 AS Doc7 ,
                                    strRec8 AS Doc8 ,
                                    strRec9 AS Doc9 ,
                                    strRec10 AS Doc10 ,
                                    strRec11 AS Doc11 ,
                                    strRec12 AS Doc12 ,
									strRec13 AS Doc13 ,
									strRec14 AS Doc14 ,
                                    strRec15 AS Doc15 ,
                                    strRec16 AS Doc16 ,
                                    strRec17 AS Doc17 ,
                                    strRec18 AS Doc18 
                            FROM    tblOptFields;

                        END;
					ELSE IF @moduleType = 4
                        BEGIN

                            SELECT  strRec1 AS Doc1 ,
                                    strRec2 AS Doc2 ,
                                    strRec3 AS Doc3 ,
                                    strRec4 AS Doc4 ,
                                    strRec5 AS Doc5 ,
                                    strRec6 AS Doc6 ,
                                    strRec7 AS Doc7 ,
                                    strRec8 AS Doc8 ,
                                    strRec9 AS Doc9 ,
                                    strRec10 AS Doc10 ,
                                    strRec11 AS Doc11 ,
                                    strRec12 AS Doc12,
									strRec13 AS Doc13 ,
									strRec14 AS Doc14 ,
                                    strRec15 AS Doc15 ,
                                    strRec16 AS Doc16 ,
                                    strRec17 AS Doc17 ,
                                    strRec18 AS Doc18 ,
									bitRec1 AS Rec1,
									bitRec2 AS Rec2,
									bitRec3 AS Rec3,
									bitRec4 AS Rec4,
									bitRec5 AS Rec5,
									bitRec6 AS Rec6,
									bitRec7 AS Rec7,
									bitRec8 AS Rec8,
									bitRec9 AS Rec9,
									bitRec10 AS Rec10,
									bitRec11 AS Rec11,
									bitRec12 AS Rec12 ,
									bitRec13 AS Rec13,
									bitRec14 AS Rec14,
									bitRec15 AS Rec15,
									bitRec16 AS Rec16,
									bitRec17 AS Rec17,
									bitRec18 AS Rec18
                            FROM    tblOptFields;

                        END;
						ELSE IF @moduleType = 5
                        BEGIN

                            SELECT  strInv1 AS Inv1 ,
                                    strInv2 AS Inv2 ,
                                    strInv3 AS Inv3 ,
                                    strInv4 AS Inv4 ,
                                    strInv5 AS Inv5 ,
                                    strInv6 AS Inv6 
                            FROM    tblOptFields;

                        END;
                    ELSE
                        BEGIN

                            SELECT  strRecDoc1 AS Doc1 ,
                                    strRecDoc2 AS Doc2 ,
                                    strRecDoc3 AS Doc3 ,
                                    strRecDoc4 AS Doc4 ,
                                    strRecDoc5 AS Doc5 ,
                                    strRecDoc6 AS Doc6 ,
                                    strRecDoc7 AS Doc7 ,
                                    strRecDoc8 AS Doc8 ,
                                    strRecDoc9 AS Doc9 ,
                                    strRecDoc10 AS Doc10 ,
                                    strRecDoc11 AS Doc11 ,
                                    strRecDoc12 AS Doc12
                            FROM    tblOptFields;
                        END;
            END;

        ELSE
            BEGIN

                SELECT  strPayDoc1 AS Doc1 ,
                        strPayDoc2 AS Doc2 ,
                        strPayDoc3 AS Doc3 ,
                        strPayDoc4 AS Doc4 ,
                        strPayDoc5 AS Doc5 ,
                        strPayDoc6 AS Doc6 ,
                        strPayDoc7 AS Doc7 ,
                        strPayDoc8 AS Doc8 ,
                        strPayDoc9 AS Doc9 ,
                        strPayDoc10 AS Doc10 ,
                        strPayDoc11 AS Doc11 ,
                        strPayDoc12 AS Doc12
                FROM    tblOptFields;

            END;

    END
GO

/****** Object:  StoredProcedure [dbo].[GetOrderDocDAData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [ImportGLTransHistory] ***********/

CREATE PROCEDURE [dbo].[GetOrderDocDAData]
(
	@DocNum nvarchar(max)
)
AS
BEGIN
	SELECT TOP 1 
								 strOrdDADocID AS OrdDADocID  ,
                                 lngInvTrackID AS InvTrackID  ,
                                 lngJourID AS JourID  ,
                                 dteSystemDate AS SystemDate  ,
                                 dteJournalDate AS JournalDate  ,
                                 dteRequired AS Required  ,
                                 strUserName AS UserName  ,
                                 strCustName AS CustName  ,
                                 strSoldTo AS SoldTo,
                                 strShipTo AS ShipTo,
                                 decSubTotal AS SubTotal,
                                 decVAT AS VAT,
                                 decTotal AS Total,
                                 bitFromSO AS IsFromSO,
                                 strOrdDocID AS OrdDocID,
                                 strNotes  AS Notes  ,
                                 bitPrinted AS IsPrinted,
                                 bitEmailed AS IsEmailed,
                                 bitCleared AS IsCleared,
                                 strCurrency AS Currency  ,
                                 bitIsForeign AS IsForeign  ,
                                 decSubTotalF AS SubTotalF  ,
                                 decVATF AS VATF  ,
                                 decTotalF AS TotalF  ,
                                 decExchange AS Exchange  ,
                                 strTerm AS Term  ,
                                 intDept AS Dept  ,
                                 strField1 AS Field1,
                                 strField2 AS Field2,
                                 strField3 AS Field3,
                                 strField4 AS Field4,
                                 strField5 AS Field5,
                                 strField6 AS Field6,
                                 strField7 AS Field7,
                                 strField8 AS Field8,
                                 strField9 AS Field9,
                                 strField10 AS Field10,
                                 strField11 AS Field11,
                                 strField12 AS Field12,
                                 dteField13 AS Field13,
                                 dteField14 AS Field14,
                                 strSubFormated AS SubFormated  ,
                                 strVATFormatted AS VATFormatted  ,
                                 strTotFormatted AS TotFormatted  ,
                                 decDiscPerc AS DiscPerc  ,
                                 decDiscAmt AS DiscAmt  ,
                                 decDiscAmtF AS DiscAmtF  ,
                                 strDiscFormatted AS DiscFormatted  ,
                                 strOrdFQDocID AS OrdFQDocID  ,
                                 strStatusTypeCode AS StatusTypeCode  ,
                                 bitBookmark AS IsBookmark  ,
                                 strAddInfo AS AddInfo  ,
                                 strReference AS Reference  ,
                                 strSalesName AS SalesName  ,
                                 decTotalWeight AS TotalWeight  ,
                                 decTotalVolWeight AS TotalVolWeight  ,
                                 strSOReasonCode AS SOReasonCode  ,
                                 decDeliveryCost AS DeliveryCost  ,
                                 decDeliveryCostF AS DeliveryCostF  ,
                                 strDeliveryCostFormatted AS DeliveryCostFormatted  ,
                                 strDelMethodCode AS DelMethodCode  ,
                                 intRevisionNumber AS RevisionNumber  ,
                                 strStoreNumber AS StoreNumber  ,
                                 strEDI AS EDI  
	FROM tblOrderDocDA 
	WHERE strOrdDADocID IN ((SELECT * FROM fnSplitStringAsTable(@DocNum,',')))

END
GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocDADataForDAReport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End  [CheckIssuedQtyStatusForProcessJob] ***********/

/*********** Start Create/Drop [GetOrderDocDADataForDAReport] ***********/

CREATE PROCEDURE [dbo].[GetOrderDocDADataForDAReport]
(
	@IsChkPrintChecked bit,
	@IsShowPricesDAPrint bit,
	@DocNumber nvarchar(50)	
)
AS
BEGIN
	SELECT *, @IsChkPrintChecked AS bitPrintAddInfo, @IsShowPricesDAPrint AS bitShowPricesDAPrint FROM tblOrderDocDA WHERE strOrdDADocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocDADT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetOrderDocDADTSerialData] ***********/

/*********** Start [GetOrderDocDADT] ***********/
CREATE PROCEDURE [dbo].[GetOrderDocDADT]
	@DocNumber AS NVARCHAR(MAX),
	@IsMultipleDA AS BIT
AS
BEGIN
IF @IsMultipleDA = 0
	BEGIN
	SELECT 
			tblOrderDocDADT.strOrdDADocID AS OrdDADocID
			,tblOrderDocDADT.intLineNo AS [LineNo]
			,tblOrderDocDADT.strPartNumber AS PartNumber
			,tblOrderDocDADT.strLocation AS Location
			,tblOrderDocDADT.strPartDesc AS PartDesc
			,tblOrderDocDADT.decQty AS Qty
			,tblOrderDocDADT.decQtyRemain AS QtyRemaining
			,tblOrderDocDADT.strUnit AS Unit
			,tblOrderDocDADT.decStockQty AS StockQty
			,tblOrderDocDADT.decStockQtyRemain AS StockQtyRemain
			,tblOrderDocDADT.strStockUnit AS StockUnit
			,tblOrderDocDADT.intType AS [Type]
			,tblOrderDocDADT.decPriceEaExc AS PriceEaExc
			,tblOrderDocDADT.decLineTotExc AS LineTotExc
			,tblOrderDocDADT.decLineTaxAmt AS LineTaxAmt
			,tblOrderDocDADT.strTaxCode AS TaxCode
			,tblOrderDocDADT.imgTaxObj AS ImageTaxObj
			,tblOrderDocDADT.decPriceEaInc AS PriceEaInc
			,tblOrderDocDADT.decLineTotInc AS LineTotInc
			,tblOrderDocDADT.imgTaxObj AS TaxObj
			,tblOrderDocDADT.strCurrency AS Currency
			,tblOrderDocDADT.bitIsForeign AS IsForeign
			,tblOrderDocDADT.decPriceEaExcF AS PriceEaExcF
			,tblOrderDocDADT.decLineTotExcF AS LineTotExcF
			,tblOrderDocDADT.decLineTaxAmtF AS LineTaxAmtF
			,tblOrderDocDADT.decEaIncTaxF AS EaIncTaxF
			,tblOrderDocDADT.decTotIncTaxF AS TotIncTaxF
			,tblOrderDocDADT.strInvField1 AS InvField1
			,tblOrderDocDADT.strInvField2 AS InvField2
			,tblOrderDocDADT.strInvField3 AS InvField3
			,tblOrderDocDADT.strInvField4 AS InvField4
			,tblOrderDocDADT.strInvField5 AS InvField5
			,tblOrderDocDADT.strInvField6 AS InvField6
			,tblOrderDocDADT.strLineField1 AS LineField1
			,tblOrderDocDADT.strLineField2 AS LineField2
			,tblOrderDocDADT.strLineField3 AS LineField3
			,tblOrderDocDADT.strLineField4 AS LineField4
			,tblOrderDocDADT.strLineField5 AS LineField5
			,tblOrderDocDADT.strLineField6 AS LineField6
			,tblOrderDocDADT.strLineField7 AS LineField7
			,tblOrderDocDADT.strLineField8 AS LineField8
			,tblOrderDocDADT.strLineField9 AS LineField9
			,tblOrderDocDADT.strLineField10 AS LineField10
			,tblOrderDocDADT.strLineField11 AS LineField11
			,tblOrderDocDADT.strLineField12 AS LineField12
			,tblOrderDocDADT.decLineDiscPerc AS LineDiscPerc
			,tblOrderDocDADT.decLineDiscAmt AS LineDiscAmt
			,tblOrderDocDADT.decLineDiscAmtF AS LineDiscAmtF
			,tblOrderDocDADT.bitDiscountTax AS IsDiscountTax
			,tblOrderDocDADT.decCOGS AS COGS
			,tblOrderDocDADT.strSalesName AS SalesName
			,tblOrderDocDADT.decItemWeight AS ItemWeight
			,tblOrderDocDADT.decVolumetricWeight AS VolumetricWeight
			,tblOrderDocDADT.bitContainerItem AS IsContainerItem
			,tblOrderDocDADT.bitDelCost AS DelCost
			,tblOrderDocDADT.intBillingMethod AS BillingMethod
			,tblOrderDocDADT.decBuyoutCost AS BuyoutCost
			,tblOrderDocDADT.uidTransactionFieldID AS TransactionFieldID
			,tblOrderDocDADT.strPartExtendedDesc AS PartExtendedDescription
			,
			--NEW ADDED
			tblOrderDocDADT.uidContainerItem AS ContainerItemID
			,ISNULL(tblOrderDocDADTPrj.strProjNumber, '') AS ProjNumber
			,tblInv.bitInvSerialType AS IsInvSerialType
			,tblInv.strDimProCode AS DimProCode
			,tblInv.strUnitOfMeasure AS UnitOfMeasure
			,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist
			,ISNULL(STUFF((
						SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(max))
						FROM tblInvLocBin
						WHERE tblInvLocBin.lngId IN (
								SELECT lngBinId
								FROM tblOrderDocDADTBin
								WHERE tblOrderDocDADTBin.strOrdDADocID = tblOrderDocDADT.strOrdDADocID
									AND tblOrderDocDADT.intLineNo = tblOrderDocDADTBin.intLineNo
								)
						FOR XML PATH('')
						), 1, 1, ''), '') AS BinCode
			,ISNULL(STUFF((
						SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(max))
						FROM tblInvLocBin
						WHERE tblInvLocBin.lngId IN (
								SELECT lngBinId
								FROM tblOrderDocDADTBin
								WHERE tblOrderDocDADTBin.strOrdDADocID = tblOrderDocDADT.strOrdDADocID
									AND tblOrderDocDADT.intLineNo = tblOrderDocDADTBin.intLineNo
								)
						FOR XML PATH('')
						), 1, 1, ''), '') AS BinIdString
			,decDAQtyRemain AS DAQtyRemain
			,decStockDAQtyRemain AS StockDAQtyRemain
			,bitFromGRV AS IsFromGRV
			,strGRVDocNum AS GRVDocNum
			,intGRVLineNo AS GRVLineNo
			,CAST(0 AS BIT) AS IsCashPrice
		FROM tblOrderDocDADT
		INNER JOIN tblInv ON tblOrderDocDADT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblOrderDocDADTPrj ON tblOrderDocDADT.strOrdDADocID = tblOrderDocDADTPrj.strOrdDADocID
			AND tblOrderDocDADT.intLineNo = tblOrderDocDADTPrj.intLineNo
		LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
		WHERE tblOrderDocDADT.strOrdDADocID = @DocNumber
			AND tblOrderDocDADT.decStockDAQtyRemain <> 0
		ORDER BY tblOrderDocDADT.intLineNo
	END
	ELSE
	BEGIN
		SELECT tblOrderDocDADT.strOrdDADocID AS OrdDADocID
			,tblOrderDocDADT.intLineNo AS [LineNo]
			,tblOrderDocDADT.strPartNumber AS PartNumber
			,tblOrderDocDADT.strLocation AS Location
			,tblOrderDocDADT.strPartDesc AS PartDesc
			,tblOrderDocDADT.decQty AS Qty
			,tblOrderDocDADT.decQtyRemain AS QtyRemaining
			,tblOrderDocDADT.strUnit AS Unit
			,tblOrderDocDADT.decStockQty AS StockQty
			,tblOrderDocDADT.decStockQtyRemain AS StockQtyRemain
			,tblOrderDocDADT.strStockUnit AS StockUnit
			,tblOrderDocDADT.intType AS [Type]
			,tblOrderDocDADT.decPriceEaExc AS PriceEaExc
			,tblOrderDocDADT.decLineTotExc AS LineTotExc
			,tblOrderDocDADT.decLineTaxAmt AS LineTaxAmt
			,tblOrderDocDADT.strTaxCode AS TaxCode
			,tblOrderDocDADT.decPriceEaInc AS PriceEaInc
			,tblOrderDocDADT.decLineTotInc AS LineTotInc
			,tblOrderDocDADT.imgTaxObj AS ImageTaxObj
			,tblOrderDocDADT.imgTaxObj AS TaxObj
			,tblOrderDocDADT.strCurrency AS Currency
			,tblOrderDocDADT.bitIsForeign AS IsForeign
			,tblOrderDocDADT.decPriceEaExcF AS PriceEaExcF
			,tblOrderDocDADT.decLineTotExcF AS LineTotExcF
			,tblOrderDocDADT.decLineTaxAmtF AS LineTaxAmtF
			,tblOrderDocDADT.decEaIncTaxF AS EaIncTaxF
			,tblOrderDocDADT.decTotIncTaxF AS TotIncTaxF
			,tblOrderDocDADT.strInvField1 AS InvField1
			,tblOrderDocDADT.strInvField2 AS InvField2
			,tblOrderDocDADT.strInvField3 AS InvField3
			,tblOrderDocDADT.strInvField4 AS InvField4
			,tblOrderDocDADT.strInvField5 AS InvField5
			,tblOrderDocDADT.strInvField6 AS InvField6
			,tblOrderDocDADT.strLineField1 AS LineField1
			,tblOrderDocDADT.strLineField2 AS LineField2
			,tblOrderDocDADT.strLineField3 AS LineField3
			,tblOrderDocDADT.strLineField4 AS LineField4
			,tblOrderDocDADT.strLineField5 AS LineField5
			,tblOrderDocDADT.strLineField6 AS LineField6
			,tblOrderDocDADT.strLineField7 AS LineField7
			,tblOrderDocDADT.strLineField8 AS LineField8
			,tblOrderDocDADT.strLineField9 AS LineField9
			,tblOrderDocDADT.strLineField10 AS LineField10
			,tblOrderDocDADT.strLineField11 AS LineField11
			,tblOrderDocDADT.strLineField12 AS LineField12
			,tblOrderDocDADT.decLineDiscPerc AS LineDiscPerc
			,tblOrderDocDADT.decLineDiscAmt AS LineDiscAmt
			,tblOrderDocDADT.decLineDiscAmtF AS LineDiscAmtF
			,tblOrderDocDADT.bitDiscountTax AS IsDiscountTax
			,tblOrderDocDADT.decCOGS AS COGS
			,tblOrderDocDADT.strSalesName AS SalesName
			,tblOrderDocDADT.decItemWeight AS ItemWeight
			,tblOrderDocDADT.decVolumetricWeight AS VolumetricWeight
			,tblOrderDocDADT.bitContainerItem AS IsContainerItem
			,tblOrderDocDADT.bitDelCost AS DelCost
			,tblOrderDocDADT.intBillingMethod AS BillingMethod
			,tblOrderDocDADT.decBuyoutCost AS BuyoutCost
			,tblOrderDocDADT.uidTransactionFieldID AS TransactionFieldID
			,tblOrderDocDADT.strPartExtendedDesc AS PartExtendedDescription
			,
			--NEW ADDED
			tblOrderDocDADT.uidContainerItem AS ContainerItemID
			,ISNULL(tblOrderDocDADTPrj.strProjNumber, '') AS ProjNumber
			,tblInv.bitInvSerialType AS IsInvSerialType
			,tblInv.strDimProCode AS DimProCode
			,tblInv.strUnitOfMeasure AS UnitOfMeasure
			,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist
			,ISNULL(STUFF((
						SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(max))
						FROM tblInvLocBin
						WHERE tblInvLocBin.lngId IN (
								SELECT lngBinId
								FROM tblOrderDocDADTBin
								WHERE tblOrderDocDADTBin.strOrdDADocID = tblOrderDocDADT.strOrdDADocID
									AND tblOrderDocDADT.intLineNo = tblOrderDocDADTBin.intLineNo
								)
						FOR XML PATH('')
						), 1, 1, ''), '') AS BinCode
			,ISNULL(STUFF((
						SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(max))
						FROM tblInvLocBin
						WHERE tblInvLocBin.lngId IN (
								SELECT lngBinId
								FROM tblOrderDocDADTBin
								WHERE tblOrderDocDADTBin.strOrdDADocID = tblOrderDocDADT.strOrdDADocID
									AND tblOrderDocDADT.intLineNo = tblOrderDocDADTBin.intLineNo
								)
						FOR XML PATH('')
						), 1, 1, ''), '') AS BinIdString
			,decDAQtyRemain AS DAQtyRemain
			,decStockDAQtyRemain AS StockDAQtyRemain
			,bitFromGRV AS IsFromGRV
			,strGRVDocNum AS GRVDocNum
			,intGRVLineNo AS GRVLineNo
			,CAST(0 AS BIT) AS IsCashPrice
		FROM tblOrderDocDADT
		INNER JOIN tblInv ON tblOrderDocDADT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblOrderDocDADTPrj ON tblOrderDocDADT.strOrdDADocID = tblOrderDocDADTPrj.strOrdDADocID
			AND tblOrderDocDADT.intLineNo = tblOrderDocDADTPrj.intLineNo
		LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
		WHERE tblOrderDocDADT.strOrdDADocID IN (
				(
					SELECT *
					FROM fnSplitStringAsTable(@DocNumber, ',')
					)
				)
			AND tblOrderDocDADT.decStockDAQtyRemain <> 0
			AND tblOrderDocDADT.bitDiscountTax = 0
		ORDER BY tblOrderDocDADT.strOrdDADocID
			,tblOrderDocDADT.intLineNo
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetOrderDocDADTBin]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetPickTicketsBinData] ***********/

/*********** Start [GetOrderDocDADTBin] ***********/
CREATE PROCEDURE [dbo].[GetOrderDocDADTBin]
	@DocNumber AS NVARCHAR(MAX)
AS
BEGIN
SELECT	   
		   tblOrderDocDADT.strOrdDADocID AS OrdDADocID,
		   tblOrderDocDADT.intLineNo AS [LineNo],
		   tblOrderDocDADT.strPartNumber AS PartNumber,
		   tblOrderDocDADT.strLocation AS Location,
		   tblOrderDocDADT.strPartDesc AS PartDesc,
		   tblOrderDocDADT.decQty AS Qty,
		   tblOrderDocDADT.decQtyRemain AS QtyRemaining,
		   tblOrderDocDADT.strUnit AS Unit,
		   tblOrderDocDADT.decStockQty AS StockQty,
		   tblOrderDocDADT.decStockQtyRemain AS StockQtyRemain,
		   tblOrderDocDADT.strStockUnit AS StockUnit,
		   tblOrderDocDADT.intType AS [Type],
		   tblOrderDocDADT.decPriceEaExc AS PriceEaExc,
		   tblOrderDocDADT.decLineTotExc AS	LineTotExc,
		   tblOrderDocDADT.decLineTaxAmt AS	LineTaxAmt,
		   tblOrderDocDADT.strTaxCode AS TaxCode,
		   tblOrderDocDADT.decPriceEaInc AS PriceEaInc,
		   tblOrderDocDADT.decLineTotInc AS	LineTotInc,
		   tblOrderDocDADT.imgTaxObj AS ImageTaxObj,
		   tblOrderDocDADT.strCurrency AS Currency,
		   tblOrderDocDADT.bitIsForeign AS IsForeign,
		   tblOrderDocDADT.decPriceEaExcF AS PriceEaExcF,
		   tblOrderDocDADT.decLineTotExcF AS LineTotExcF,
		   tblOrderDocDADT.decLineTaxAmtF AS LineTaxAmtF,
		   tblOrderDocDADT.decEaIncTaxF AS EaIncTaxF,
		   tblOrderDocDADT.decTotIncTaxF AS TotIncTaxF,
		   tblOrderDocDADT.strInvField1 AS InvField1,
		   tblOrderDocDADT.strInvField2	AS InvField2,
		   tblOrderDocDADT.strInvField3	AS InvField3,
		   tblOrderDocDADT.strInvField4	AS InvField4,
		   tblOrderDocDADT.strInvField5	AS InvField5,
		   tblOrderDocDADT.strInvField6	AS InvField6,
		   tblOrderDocDADT.strLineField1 AS LineField1,
		   tblOrderDocDADT.strLineField2 AS	LineField2,
		   tblOrderDocDADT.strLineField3 AS	LineField3,
		   tblOrderDocDADT.strLineField4 AS	LineField4,
		   tblOrderDocDADT.strLineField5 AS	LineField5,
		   tblOrderDocDADT.strLineField6 AS	LineField6,
		   tblOrderDocDADT.strLineField7 AS	LineField7,
		   tblOrderDocDADT.strLineField8 AS	LineField8,
		   tblOrderDocDADT.strLineField9 AS	LineField9,
		   tblOrderDocDADT.strLineField10 AS LineField10,
		   tblOrderDocDADT.strLineField11 AS LineField11,
		   tblOrderDocDADT.strLineField12 AS LineField12,
		   tblOrderDocDADT.decLineDiscPerc AS LineDiscPerc,
		   tblOrderDocDADT.decLineDiscAmt AS LineDiscAmt,
		   tblOrderDocDADT.decLineDiscAmtF AS LineDiscAmtF,
		   tblOrderDocDADT.bitDiscountTax AS IsDiscountTax,
		   tblOrderDocDADT.decCOGS AS COGS,
		   tblOrderDocDADT.strSalesName AS SalesName,
		   tblOrderDocDADT.decItemWeight AS ItemWeight,
		   tblOrderDocDADT.decVolumetricWeight AS VolumetricWeight,
		   tblOrderDocDADT.bitContainerItem AS IsContainerItem,
		   tblOrderDocDADT.bitDelCost AS DelCost,
		   tblOrderDocDADT.intBillingMethod AS BillingMethod,
		   tblOrderDocDADT.decBuyoutCost AS BuyoutCost,
		   tblOrderDocDADT.uidTransactionFieldID AS TransactionFieldID,
		   tblOrderDocDADT.strPartExtendedDesc AS PartExtendedDescription,
		   tblOrderDocDADT.decQtyRemain AS DAQtyRemain,
		   tblOrderDocDADT.decStockDAQtyRemain AS StockDAQtyRemain,
		   --NEW ADDED
		   tblOrderDocDADT.uidContainerItem AS ContainerItemID
	,ISNULL(tblOrderDocDADTPrj.strProjNumber, '') AS ProjNumber
	,tblInv.bitInvSerialType AS IsInvSerialType
	,tblInv.strUnitOfMeasure AS UnitOfMeasure
	,tblInv.strDimProCode AS DimProCode
	,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist
	,ISNULL(STUFF((
				SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX))
				FROM tblInvLocBin
				WHERE tblInvLocBin.lngId IN (
						SELECT lngBinId
						FROM tblOrderDocDADTBin
						WHERE tblOrderDocDADTBin.strOrdDADocID = tblOrderDocDADT.strOrdDADocID
							AND tblOrderDocDADTBin.intLineNo = tblOrderDocDADT.intLineNo
						)
				FOR XML PATH('')
				), 1, 1, ''), '') AS BinCode
	,ISNULL(STUFF((
				SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(MAX))
				FROM tblInvLocBin
				WHERE tblInvLocBin.lngId IN (
						SELECT lngBinId
						FROM tblOrderDocDADTBin
						WHERE tblOrderDocDADTBin.strOrdDADocID = tblOrderDocDADT.strOrdDADocID
							AND tblOrderDocDADTBin.intLineNo = tblOrderDocDADT.intLineNo
						)
				FOR XML PATH('')
				), 1, 1, ''), '') AS BinIdString
FROM tblOrderDocDADT
INNER JOIN tblInv ON tblOrderDocDADT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblOrderDocDADTPrj ON tblOrderDocDADT.strOrdDADocID = tblOrderDocDADTPrj.strOrdDADocID
	AND tblOrderDocDADT.intLineNo = tblOrderDocDADTPrj.intLineNo
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblOrderDocDADT.strOrdDADocID = @DocNumber
ORDER BY tblOrderDocDADT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocDADTData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InsertToInvoiceREVAndInvoiceREVDT] ***********/

/*********** Start [GetOrderDocDADTData] ***********/
CREATE PROCEDURE [dbo].[GetOrderDocDADTData]
	(
	@DocNumber AS NVARCHAR(50)
	)
AS
BEGIN
	SELECT 
		   tblOrderDocDADT.strOrdDADocID AS OrdDADocID,
		   tblOrderDocDADT.intLineNo AS [LineNo],
		   tblOrderDocDADT.strPartNumber AS PartNumber,
		   tblOrderDocDADT.strLocation AS Location,
		   tblOrderDocDADT.strPartDesc AS PartDesc,
		   tblOrderDocDADT.decQty AS Qty,
		   tblOrderDocDADT.decQtyRemain AS QtyRemain,
		   tblOrderDocDADT.strUnit AS Unit,
		   tblOrderDocDADT.decStockQty AS StockQty,
		   tblOrderDocDADT.decStockQtyRemain AS StockQtyRemain,
		   tblOrderDocDADT.strStockUnit AS StockUnit,
		   tblOrderDocDADT.intType AS [Type],
		   tblOrderDocDADT.decPriceEaExc AS PriceEaExc,
		   tblOrderDocDADT.decLineTotExc AS	LineTotExc,
		   tblOrderDocDADT.decLineTaxAmt AS	LineTaxAmt,
		   tblOrderDocDADT.strTaxCode AS TaxCode,
		   tblOrderDocDADT.decPriceEaInc AS PriceEaInc,
		   tblOrderDocDADT.decLineTotInc AS	LineTotInc,
		   tblOrderDocDADT.imgTaxObj AS ImageTaxObj,
		   tblOrderDocDADT.strCurrency AS Currency,
		   tblOrderDocDADT.bitIsForeign AS IsForeign,
		   tblOrderDocDADT.decPriceEaExcF AS PriceEaExcF,
		   tblOrderDocDADT.decLineTotExcF AS LineTotExcF,
		   tblOrderDocDADT.decLineTaxAmtF AS LineTaxAmtF,
		   tblOrderDocDADT.decEaIncTaxF AS EaIncTaxF,
		   tblOrderDocDADT.decTotIncTaxF AS TotIncTaxF,
		   tblOrderDocDADT.strInvField1 AS InvField1,
		   tblOrderDocDADT.strInvField2	AS InvField2,
		   tblOrderDocDADT.strInvField3	AS InvField3,
		   tblOrderDocDADT.strInvField4	AS InvField4,
		   tblOrderDocDADT.strInvField5	AS InvField5,
		   tblOrderDocDADT.strInvField6	AS InvField6,
		   tblOrderDocDADT.strLineField1 AS LineField1,
		   tblOrderDocDADT.strLineField2 AS	LineField2,
		   tblOrderDocDADT.strLineField3 AS	LineField3,
		   tblOrderDocDADT.strLineField4 AS	LineField4,
		   tblOrderDocDADT.strLineField5 AS	LineField5,
		   tblOrderDocDADT.strLineField6 AS	LineField6,
		   tblOrderDocDADT.strLineField7 AS	LineField7,
		   tblOrderDocDADT.strLineField8 AS	LineField8,
		   tblOrderDocDADT.strLineField9 AS	LineField9,
		   tblOrderDocDADT.strLineField10 AS LineField10,
		   tblOrderDocDADT.strLineField11 AS LineField11,
		   tblOrderDocDADT.strLineField12 AS LineField12,
		   tblOrderDocDADT.decLineDiscPerc AS LineDiscPerc,
		   tblOrderDocDADT.decLineDiscAmt AS LineDiscAmt,
		   tblOrderDocDADT.decLineDiscAmtF AS LineDiscAmtF,
		   tblOrderDocDADT.bitDiscountTax AS IsDiscountTax,
		   tblOrderDocDADT.decCOGS AS COGS,
		   tblOrderDocDADT.strSalesName AS SalesName,
		   tblOrderDocDADT.decItemWeight AS ItemWeight,
		   tblOrderDocDADT.decVolumetricWeight AS VolumetricWeight,
		   tblOrderDocDADT.bitContainerItem AS IsContainerItem,
		   tblOrderDocDADT.bitDelCost AS DelCost,
		   tblOrderDocDADT.intBillingMethod AS BillingMethod,
		   tblOrderDocDADT.decBuyoutCost AS BuyoutCost,
		   tblOrderDocDADT.uidTransactionFieldID AS TransactionFieldID,
		   tblOrderDocDADT.strPartExtendedDesc AS PartExtendedDescription
	FROM tblOrderDocDADT
	WHERE strOrdDADocID = @DocNumber
	  AND (decQty <> decQtyRemain OR decStockQty <> decStockQtyRemain)
END

GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocDADTDataForDAReport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End Create/Drop [GetOrderDocDADataForDAReport] ***********/

/*********** Start Create/Drop [GetOrderDocDADTDataForDAReport] ***********/

CREATE PROCEDURE [dbo].[GetOrderDocDADTDataForDAReport] 
(
	@IsCustStockCodes BIT --= 1
	,@DocNumber NVARCHAR(50)
)
AS
BEGIN
	IF (@IsCustStockCodes = 1)
	BEGIN
		SELECT tblDADT.*
			,tblInv.strBarCode
			,tblInv.strBarCode2
			,ISNULL(tblInvCustomer.strItemCode, '') AS strItemCode
			,ISNULL(tblInvCustomer.strItemDesc, '') AS strItemDesc
			,(
				SELECT STUFF((
							SELECT ',' + tblOrderDocDADTSerial.strSerialNumber
							FROM tblOrderDocDADTSerial
							INNER JOIN tblOrderDocDADT ON tblOrderDocDADTSerial.strOrdDADocID = tblOrderDocDADT.strOrdDADocID
								AND tblOrderDocDADTSerial.intLineNo = tblOrderDocDADT.intLineNo
							LEFT JOIN tblInvSerialExt ON tblOrderDocDADT.strPartNumber = tblInvSerialExt.strPartNumber
								AND tblOrderDocDADTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
							INNER JOIN tblInv ON tblOrderDocDADT.strPartNumber = tblInv.strPartNumber
							LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
							WHERE tblOrderDocDADTSerial.strOrdDADocID = @DocNumber
								AND tblInvSerialTypes.bitPrintInv = 1
								AND tblOrderDocDADT.intLineNo = tblDADT.intLineNo
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strSerialNumber
		,( select bitARShowPricesDAPrint from tblCoOpts) AS bitShowPricesDAPrint
		FROM tblOrderDocDADT AS tblDADT
		INNER JOIN tblOrderDocDA AS TblDA ON tblDADT.strOrdDADocID = TblDA.strOrdDADocID
		INNER JOIN tblInv ON tblDADT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
			AND TblDA.strCustName = tblInvCustomer.strCustName
		WHERE tblDADT.strOrdDADocID = @DocNumber
			AND tblDADT.bitDelCost = 0
		ORDER BY tblDADT.intLineNo
	END
	ELSE
	BEGIN
		SELECT tblDADT.*
			,tblInv.strBarCode
			,tblInv.strBarCode2
			,'' AS strItemCode
			,'' AS strItemDesc
			,(
				SELECT STUFF((
							SELECT ',' + tblOrderDocDADTSerial.strSerialNumber
							FROM tblOrderDocDADTSerial
							INNER JOIN tblOrderDocDADT ON tblOrderDocDADTSerial.strOrdDADocID = tblOrderDocDADT.strOrdDADocID
								AND tblOrderDocDADTSerial.intLineNo = tblOrderDocDADT.intLineNo
							LEFT JOIN tblInvSerialExt ON tblOrderDocDADT.strPartNumber = tblInvSerialExt.strPartNumber
								AND tblOrderDocDADTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
							INNER JOIN tblInv ON tblOrderDocDADT.strPartNumber = tblInv.strPartNumber
							LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
							WHERE tblOrderDocDADTSerial.strOrdDADocID = @DocNumber
								AND tblInvSerialTypes.bitPrintInv = 1
								AND tblOrderDocDADT.intLineNo = tblDADT.intLineNo
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strSerialNumber
				,( select bitARShowPricesDAPrint from tblCoOpts) AS bitShowPricesDAPrint
		FROM tblOrderDocDADT AS tblDADT
		INNER JOIN tblInv ON tblDADT.strPartNumber = tblInv.strPartNumber
		WHERE tblDADT.strOrdDADocID = @DocNumber
			AND tblDADT.bitDelCost = 0
		ORDER BY tblDADT.intLineNo
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocDADTDataForRecord]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [RemoveDocumentDML] ***********/

CREATE PROCEDURE [dbo].[GetOrderDocDADTDataForRecord]
    (    
      @DocNumber AS NVARCHAR(50)    
    )    
AS    
    BEGIN    
        SELECT  tblOrderDocDADT.strPartNumber AS PartNumber ,   
          tblOrderDocDADT.strPartDesc AS PartDesc,  
                tblOrderDocDADT.strLocation AS Location ,   
                tblOrderDocDADT.decStockQty AS Qty ,    
				tblOrderDocDADT.decStockQty AS StockQty,
                tblOrderDocDADT.intLineNo AS [LineNo] ,    
                tblOrderDocDADT.decCOGS AS COGS ,    
                tblOrderDocDADT.bitDiscountTax AS IsDiscountTax ,    
                tblOrderDocDADT.intType AS [Type],  
    		tblOrderDocDADT.imgTaxObj AS ImageTaxObj  ,
		tblOrderDocDADT.decLineTotInc AS LineTotInc,
		tblOrderDocDADT.decLineDiscPerc AS LineDiscPerc   ,
		  tblOrderDocDADT.strUnit As Unit
        FROM    tblOrderDocDA    
                INNER JOIN tblOrderDocDADT ON tblOrderDocDA.strOrdDADocID = tblOrderDocDADT.strOrdDADocID    
        WHERE   ( tblOrderDocDA.strOrdDADocID = @DocNumber )    
        ORDER BY tblOrderDocDADT.intLineNo    
END
GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocDADTForLoadSO]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetOrderDocDADTForLoadSO] ***********/
CREATE PROCEDURE [dbo].[GetOrderDocDADTForLoadSO] 
	( 
	@DocNumber NVARCHAR(MAX) 
	--DocNum
	)
AS
    BEGIN
        SELECT  tblOrderDocDT.strOrdDocID AS OrdDocID ,
                tblOrderDocDT.intLineNo AS [LineNo] ,
                tblOrderDocDT.strPartNumber AS PartNumber ,
                tblOrderDocDT.strLocation AS Location ,
                tblOrderDocDT.strPartDesc AS PartDesc ,
                tblOrderDocDT.decQty AS Qty ,
                tblOrderDocDT.decQtyRemaining AS QtyRemaining ,
                tblOrderDocDT.strUnit AS Unit ,
                tblOrderDocDT.intType AS Type ,
                tblOrderDocDT.decPriceEaExc AS PriceEaExc ,
                tblOrderDocDT.decLineTotExc AS LineTotExc ,
                tblOrderDocDT.decLineTaxAmt AS LineTaxAmt ,
                tblOrderDocDT.decPriceEaInc AS PriceEaInc ,
                tblOrderDocDT.decLineTotInc AS LineTotInc ,
                tblOrderDocDT.strTaxCode AS TaxCode ,
                tblOrderDocDT.imgTaxObj AS TaxObj ,
                tblOrderDocDT.strCurrency AS Currency ,
                tblOrderDocDT.bitIsForeign AS IsForeign ,
                tblOrderDocDT.decPriceEaExcF AS PriceEaExcF ,
                tblOrderDocDT.decLineTotExcF AS LineTotExcF ,
                tblOrderDocDT.decLineTaxAmtF AS LineTaxAmtF ,
                tblOrderDocDT.decEaIncTaxF AS EaIncTaxF ,
                tblOrderDocDT.decTotIncTaxF AS TotIncTaxF ,
                tblOrderDocDT.strInvField1 AS InvField1 ,
                tblOrderDocDT.strInvField2 AS InvField2 ,
                tblOrderDocDT.strInvField3 AS InvField3 ,
                tblOrderDocDT.strInvField4 AS InvField4 ,
                tblOrderDocDT.strInvField5 AS InvField5 ,
                tblOrderDocDT.strInvField6 AS InvField6 ,
                tblOrderDocDT.strLineField1 AS LineField1 ,
                tblOrderDocDT.strLineField2 AS LineField2 ,
                tblOrderDocDT.strLineField3 AS LineField3 ,
                tblOrderDocDT.strLineField4 AS LineField4 ,
                tblOrderDocDT.strLineField5 AS LineField5 ,
                tblOrderDocDT.strLineField6 AS LineField6 ,
                tblOrderDocDT.strLineField7 AS LineField7 ,
                tblOrderDocDT.strLineField8 AS LineField8 ,
                tblOrderDocDT.strLineField9 AS LineField9 ,
                tblOrderDocDT.strLineField10 AS LineField10 ,
                tblOrderDocDT.strLineField11 AS LineField11 ,
                tblOrderDocDT.strLineField12 AS LineField12 ,
                tblOrderDocDT.decLineDiscPerc AS LineDiscPerc ,
                tblOrderDocDT.decLineDiscAmt AS LineDiscAmt ,
                tblOrderDocDT.decLineDiscAmtF AS LineDiscAmtF ,
                tblOrderDocDT.bitDiscountTax AS DiscountTax ,
                tblOrderDocDT.decStockQty AS StockQty ,
                tblOrderDocDT.strStockUnit AS StockUnit ,
                tblOrderDocDT.decStockQtyRemain AS StockQtyRemain ,
                tblOrderDocDT.strSalesName AS SalesName ,
                tblOrderDocDT.strPartExtendedDesc AS PartExtendedDesc ,
                tblOrderDocDT.decBuyoutCost AS BuyoutCost ,
                tblOrderDocDT.decItemWeight AS ItemWeight ,
                tblOrderDocDT.decVolumetricWeight AS VolumetricWeight ,
                tblOrderDocDT.bitContainerItem AS ContainerItem ,
                tblOrderDocDT.bitDelCost AS IsDelCost ,
                tblOrderDocDT.intBillingMethod AS BillingMethod ,
				tblOrderDocDT.uidContainerItem AS ContainerItemID ,
                ISNULL(tblOrderDocDTPrj.strProjNumber, '') AS ProjNumber ,
                tblInv.bitInvSerialType AS IsInvSerialType,
                tblInv.strUnitOfMeasure AS UnitOfMeasure,
                tblInv.strDimProCode AS DimProCode,
                ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist,
				tblInv.strBarCode AS BarCode,
				tblInv.strBarCode2 AS BarCode2,
				tblInv.decSellFromStock AS SellFromStock
        FROM    tblOrderDoc (NOLOCK)
                INNER JOIN tblOrderDocDT  (NOLOCK) ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
                INNER JOIN tblInv  (NOLOCK) ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
                LEFT JOIN tblOrderDocDTPrj (NOLOCK) ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
                                              AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
                LEFT JOIN tblInvSerialTypes (NOLOCK) ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
        WHERE   tblOrderDoc.strOrdDocID = @DocNumber
                AND tblOrderDocDT.decStockQtyRemain <> 0
                AND tblOrderDocDT.bitDiscountTax = 0
        ORDER BY tblOrderDocDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocDADTInvoiceConvert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvTrackingDTBinDataConvert] ***********/

/*********** Start [GetOrderDocDADTInvoiceConvert] ***********/
CREATE PROCEDURE [dbo].[GetOrderDocDADTInvoiceConvert]
(	@DocNumber AS NVARCHAR(50),
	@ExistingDANumber AS NVARCHAR(Max),
	@Type AS TINYINT,
	@Status AS TINYINT,
	@IsMultipleDA AS BIT
)
AS
BEGIN
	SELECT tblOrderDocDADT.strPartNumber AS PartNumber
	,tblOrderDocDADTSerial.strSerialNumber AS SerialNumber
	,tblOrderDocDADTSerial.strOrdDADocID AS OrdDADocID
	,tblOrderDocDADTSerial.intLineNo AS [LineNo]
	,tblOrderDocDADTSerial.decQty AS Qty
	,tblOrderDocDADT.strLocation AS Location
	,tblOrderDocDADTSerial.bitExpiryDate AS IsExpiryDate
	,tblOrderDocDADTSerial.dteExpiryDate AS ExpiryDate
	,tblOrderDocDADTSerial.lngBinID AS BinID
	,tblOrderDocDADTSerial.intSerialLotType AS SerialLotType
	,CASE 
		WHEN tblOrderDocDADTSerial.intSerialLotType = 0
			THEN ISNULL(ISE.bitDimensionExist, 0)
		ELSE 0
		END AS IsDimensionExist 
	,CASE 
		WHEN tblOrderDocDADTSerial.intSerialLotType = 0
			THEN ISNULL(ISE.strDimension, '')
		ELSE 0
		END AS Dimension
FROM tblOrderDocDADTSerial
INNER JOIN tblOrderDocDADT ON tblOrderDocDADTSerial.strOrdDADocID = tblOrderDocDADT.strOrdDADocID
	AND tblOrderDocDADTSerial.intLineNo = tblOrderDocDADT.intLineNo
INNER JOIN tblSerialNumberTracking ON tblOrderDocDADT.intLineNo = tblSerialNumberTracking.intLineNo
	AND tblOrderDocDADTSerial.strSerialNumber = tblSerialNumberTracking.strSerialNumber
	AND tblSerialNumberTracking.lngID = (
		SELECT MAX(SNT.lngID)
		FROM tblSerialNumberTracking SNT
		WHERE (SNT.intLineNo = tblSerialNumberTracking.intLineNo)
			AND SNT.strSerialNumber = tblSerialNumberTracking.strSerialNumber
		)
LEFT JOIN tblInvSerialExt ISE ON tblOrderDocDADT.strPartNumber = ISE.strPartNumber
	AND tblOrderDocDADT.strLocation = ISE.strLocName
	AND tblOrderDocDADTSerial.strSerialNumber = ISE.strSerialNumber
WHERE ((@IsMultipleDA=0 AND tblOrderDocDADTSerial.strOrdDADocID = @DocNumber) OR		
	  (@IsMultipleDA=1 AND tblOrderDocDADTSerial.strOrdDADocID IN  ((SELECT * FROM fnSplitStringAsTable(@ExistingDANumber,',')))))
	AND tblSerialNumberTracking.intType = @Type
	AND tblSerialNumberTracking.intStatus <> @Status
END
GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocDADTSerialData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InventoryImageCount] ***********/

/*********** Start [GetOrderDocDADTSerialData] ***********/
CREATE PROCEDURE [dbo].[GetOrderDocDADTSerialData] @DocNumber AS NVARCHAR(50)
	--@LineNumber AS INT  
AS
BEGIN
	SELECT tblOrderDocDADTSerial.strOrdDADocID AS OrdDADocID
		,tblOrderDocDADTSerial.intLineNo AS [LineNo]
		,tblOrderDocDADTSerial.strSerialNumber AS SerialNumber
		,tblOrderDocDADTSerial.decQty AS Qty
		,tblOrderDocDADTSerial.strUnit AS Unit
		,tblOrderDocDADTSerial.lngID AS ID
		,tblOrderDocDADTSerial.bitExpiryDate AS IsExpiryDate
		,tblOrderDocDADTSerial.dteExpiryDate AS ExpiryDate
		,tblOrderDocDADTSerial.intSerialLotType AS SerialLotType
		,tblOrderDocDADTSerial.lngBinID AS BinID
		,CASE 
			WHEN tblOrderDocDADTSerial.intSerialLotType = 0
				THEN ISNULL(CAST(tblInvSerialExt.intStatus AS CHAR(1)) + tblInvSerialExt.strDocID, '')
			ELSE ''
			END AS [Status]
		,CASE 
			WHEN tblOrderDocDADTSerial.intSerialLotType = 0
				THEN Convert(BIT, ISNULL(tblInvSerialExt.bitDimensionExist, 0))
			ELSE Convert(BIT, 0)
			END AS IsDimensionExist
		,CASE 
			WHEN tblOrderDocDADTSerial.intSerialLotType = 0
				THEN ISNULL(tblInvSerialExt.strDimension, '')
			ELSE ''
			END AS Dimension
		,ISNULL((
			SELECT strBinCode
			FROM tblInvLocBin
			WHERE lngID = tblOrderDocDADTSerial.lngBinId
			), '') AS BinCode
		 ,ISNULL((
			SELECT Sum(InvDTSerail.decQty) AS TotalUsed
			FROM tblInvoiceDocDT AS InvDT
			INNER JOIN tblInvoiceDocDTSerial AS InvDTSerail ON InvDT.strInvDocID = InvDTSerail.strInvDocID
				AND InvDT.intLineNo = InvDTSerail.intLineNo
			WHERE InvDT.strOrdDADocID = tblOrderDocDADTSerial.strOrdDADocID
				AND InvDT.intDALineNo = tblOrderDocDADTSerial.intLineNo
				AND InvDTSerail.strSerialNumber = tblOrderDocDADTSerial.strSerialNumber
				AND InvDTSerail.lngBinID = tblOrderDocDADTSerial.lngBinID
				AND InvDT.strPartNumber = tblOrderDocDADT.strPartNumber
			), 0) AS TotalCount
	FROM tblOrderDocDADT
	INNER JOIN tblOrderDocDADTSerial ON tblOrderDocDADT.strOrdDADocID = tblOrderDocDADTSerial.strOrdDADocID
		AND tblOrderDocDADT.intLineNo = tblOrderDocDADTSerial.intLineNo
	LEFT JOIN tblInvSerialExt ON tblOrderDocDADT.strPartNumber = tblInvSerialExt.strPartNumber
		AND tblOrderDocDADTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
	WHERE tblOrderDocDADT.strOrdDADocID IN (SELECT * FROM fnSplitStringAsTable(@DocNumber,','))
	--WHERE tblOrderDocDADT.strOrdDADocID = @DocNumber
	-- AND tblOrderDocDADT.intLineNo = @LineNumber  
	ORDER BY lngID
END
GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetOrderDocData]
(
	@StartDate AS DATETIME,
	@EndDate AS DATETIME,
	@FilterDateFieldName AS NVARCHAR(50),
	@ShowActive AS BIT,
	@DocType AS INT
)
AS
BEGIN

	DECLARE @QueryCommand AS NVARCHAR(MAX)		
	DECLARE @SubQueryCommand AS NVARCHAR(MAX)	
	DECLARE @ParameterDefinition AS NVARCHAR(MAX) 	

	SET @QueryCommand = CONCAT('SELECT tblOrderDoc.strOrdDocID AS DocumentNumber, tblOrderDoc.dteSystemDate AS SystemDate, tblOrderDoc.dteJournalDate AS JournalDate, tblOrderDoc.dteRequired AS Required, tblOrderDoc.strUserName AS UserName, tblOrderDoc.strCustName AS CustomerNumber, (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblOrderDoc.strCustName) AS CustomerName, tblOrderDoc.strSoldTo AS SoldTo, tblOrderDoc.strShipTo AS ShipTo, tblOrderDoc.strReference AS Reference, tblOrderDoc.decSubTotal AS SubTotal, tblOrderDoc.decVAT AS VAT, tblOrderDoc.decTotal as Total, tblOrderDoc.bitCleared AS IsCleared, tblOrderDoc.strSalesName AS SalesName, tblOrderDoc.strAddInfo AS AdditionalInfo, tblOrderDoc.strCurrency AS CurrencyCode, tblOrderDoc.bitIsForeign AS IsForeign, tblOrderDoc.decSubTotalF AS SubTotalForeign, tblOrderDoc.decVATF AS VATForeign, tblOrderDoc.decTotalF AS TotalForeign, tblOrderDoc.decExchange AS ExchangeRate, tblOrderDoc.decDiscPerc AS DiscountPercentage, tblOrderDoc.decDiscAmt AS DiscountAmount, tblOrderDoc.decDiscAmtF AS DiscountAmountForeign, tblOrderDoc.strTerm AS Term, tblOrderDoc.intDept AS Deptartment, tblOrderDoc.strField1 AS Field1, tblOrderDoc.strField2 AS Field2, tblOrderDoc.strField3 AS Field3, tblOrderDoc.strField4 AS Field4, tblOrderDoc.strField5 AS Field5, tblOrderDoc.strField6 AS Field6, tblOrderDoc.strField7 AS Field7, tblOrderDoc.strField8 AS Field8, tblOrderDoc.strField9 AS Field9, tblOrderDoc.strField10 AS Field10, tblOrderDoc.strField11 AS Field11, tblOrderDoc.strField12 AS Field12, tblOrderDoc.dteField13 AS Field13, tblOrderDoc.dteField14 AS Field14, tblOrderDoc.decTotalWeight AS TotalWeight, tblOrderDoc.decTotalVolWeight AS TotalVolWeight, tblOrderDocDT.intLineNo AS LineNumber, tblOrderDocDT.strPartNumber AS InventoryNumber, tblOrderDocDT.strLocation AS Location, tblOrderDocDT.strPartDesc AS PartDescription, tblOrderDocDT.decQty AS Quantity, tblOrderDocDT.strUnit AS Unit, tblOrderDocDT.decPriceEaExc AS PriceEaExc, tblOrderDocDT.decLineTotExc AS LineTotExc, tblOrderDocDT.decLineTaxAmt AS LineTaxAmt, tblOrderDocDT.decPriceEaInc AS PriceEaInc, tblOrderDocDT.decLineTotInc AS LineTotInc, tblOrderDocDT.strTaxCode AS TaxCode, tblOrderDocDT.decPriceEaExcF AS PriceEaExcF, tblOrderDocDT.decLineTotExcF AS LineTotExcF, tblOrderDocDT.decLineTaxAmtF AS LineTaxAmtF, tblOrderDocDT.decEaIncTaxF AS EaIncTaxF, tblOrderDocDT.decTotIncTaxF AS TotIncTaxF, tblOrderDocDT.bitDiscountTax AS IsDiscountTax, tblOrderDocDT.decLineDiscPerc AS LineDiscPerc, tblOrderDocDT.decLineDiscAmt AS LineDiscAmt, tblOrderDocDT.decLineDiscAmtF AS LineDiscAmtF, tblOrderDocDT.strInvField1 AS InventoryField1, tblOrderDocDT.strInvField2 AS InventoryField2, tblOrderDocDT.strInvField3 AS InventoryField3, tblOrderDocDT.strInvField4 AS InventoryField4, tblOrderDocDT.strInvField5 AS InventoryField5, tblOrderDocDT.strInvField6 AS InventoryField6, tblOrderDocDT.strLineField1 AS LineField1, tblOrderDocDT.strLineField2 AS LineField2, tblOrderDocDT.strLineField3 AS LineField3, tblOrderDocDT.strLineField4 AS LineField4, tblOrderDocDT.strLineField5 AS LineField5, tblOrderDocDT.strLineField6 AS LineField6, tblOrderDocDT.strLineField7 AS LineField7, tblOrderDocDT.strLineField8 AS LineField8, tblOrderDocDT.strLineField9 AS LineField9, tblOrderDocDT.strLineField10 AS LineField10, tblOrderDocDT.strLineField11 AS LineField11, tblOrderDocDT.strLineField12 AS LineField12, tblOrderDocDT.strPartExtendedDesc AS PartExtendedDesc, tblOrderDocDT.decItemWeight AS ItemWeight, tblOrderDocDT.decVolumetricWeight AS VolumetricWeight FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID WHERE', CASE WHEN @ShowActive = 1 THEN ' (tblOrderDoc.bitCleared = 0) AND' ELSE '' END, ' (tblOrderDoc.intDocType = @DocType) AND (', @FilterDateFieldName, ' BETWEEN @StartDate AND @EndDate) ORDER BY tblOrderDoc.strOrdDocID')

	Set @ParameterDefinition =' @DocType AS INT, @StartDate AS DATETIME, @EndDate AS DATETIME'
								
	EXECUTE sp_executesql @QueryCommand, @ParameterDefinition, @DocType, @StartDate, @EndDate

END
GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetDimensionList] ***********/

/*********** Start [GetOrderDocDT] ***********/
CREATE PROCEDURE [dbo].[GetOrderDocDT]
(
	@DocNumber AS NVARCHAR(50),
	@GPCalcInvLevel AS TINYINT,
	@GPCalcLPP AS TINYINT,
	@DefaultInvLocation AS NVARCHAR(10)
)
AS
BEGIN
		SELECT tblOrderDocQDT.[strOrdDocID] AS OrdDocID
		    ,tblOrderDocQDT.[intLineNo] AS [LineNo]
		    ,tblOrderDocQDT.[strPartNumber] AS PartNumber
		    ,[strLocation] AS Location
		    ,[strPartDesc] AS PartDesc
		    ,[decQty] AS Qty
		    ,[strUnit] AS Unit
		    ,[decCost] AS Cost
		    ,[decMarkUp]
		    ,[decPriceEaExc] AS PriceEaExc
		    ,[decLineTotExc] AS LineTotExc
		    ,[decLineTaxAmt] AS LineTaxAmt
		    ,[decPriceEaInc] AS PriceEaInc
		    ,[decLineTotInc] AS LineTotInc
		    ,[strTaxCode] AS TaxCode
		    ,[imgTaxObj] AS TaxObj
		    ,[strCurrency] AS Currency
		    ,[bitIsForeign] AS IsForeign
		    ,[decPriceEaExcF] AS PriceEaExcF
		    ,[decLineTotExcF] AS LineTotExcF
		    ,[decLineTaxAmtF] AS LineTaxAmtF
		    ,[decEaIncTaxF] AS EaIncTaxF
		    ,[decTotIncTaxF] AS TotIncTaxF
		    ,[decTotalCost]
		    ,[strInvField1] AS InvField1
		    ,[strInvField2] AS InvField2
		    ,[strInvField3] AS InvField3
		    ,[strInvField4] AS InvField4
		    ,[strInvField5] AS InvField5
		    ,[strInvField6] AS InvField6
		    ,[strLineField1] AS LineField1
		    ,[strLineField2] AS LineField2
		    ,[strLineField3] AS LineField3
		    ,[strLineField4] AS LineField4
		    ,[strLineField5] AS LineField5
		    ,[strLineField6] AS LineField6
		    ,[strLineField7] AS LineField7
		    ,[strLineField8] AS LineField8
		    ,[strLineField9] AS LineField9
		    ,[strLineField10] AS LineField10
		    ,[strLineField11] AS LineField11
		    ,[strLineField12] AS LineField12
		    ,[decLineDiscPerc] AS LineDiscPerc
		    ,[decLineDiscAmt] AS LineDiscAmt
		    ,[decLineDiscAmtF] AS LineDiscAmtF
		    ,[strVendName]
		    ,[bitDiscountTax] AS DiscountTax
		    ,[strSalesName] AS SalesName
		    ,[strPartExtendedDesc] AS PartExtendedDesc
		    ,[decItemWeight] AS ItemWeight
		    ,tblOrderDocQDT.[decVolumetricWeight] AS VolumetricWeight
		    ,[bitContainerItem] AS ContainerItem
		    ,[bitDelCost] AS DelCost
		    ,[intBillingMethod] AS BillingMethod
		    ,[uidTransactionFieldID] AS TransactionFieldGUID
			--Column added
			,[uidContainerItem] AS ContainerItemGUID
			,tblInv.strSellUnit AS SellUnit
			,tblInv.strSellStockUnit AS SellStockUnit
			,tblInv.decSellFromStock AS SellFromStock
			,ISNULL(tblOrderDocQDTPrj.strProjNumber, '') AS ProjNumber
			,tblInv.bitInvSerialType AS IsInvSerialType
			,CASE 
				WHEN tblInv.intType = 4
					THEN tblInv.decStandardCost
				ELSE CASE @GPCalcLPP
						WHEN 0
							THEN tblInv.decLastPPUnit
						WHEN 1
							THEN tblInv.decStandardCost
						WHEN 2
							THEN CASE @GPCalcInvLevel
									WHEN 0
										THEN CASE 
												WHEN tblInv.decLastPPUnit > ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblOrderDocQDT.strLocation
															), 0)
													THEN tblInv.decLastPPUnit
												ELSE CASE 
														WHEN tblInv.decLastPPUnit < ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblOrderDocQDT.strLocation
																	), 0)
															THEN ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt EXT
																		WHERE EXT.strPartNumber = tblInv.strPartNumber
																			AND EXT.strLocName = tblOrderDocQDT.strLocation
																		), 0)
														ELSE CASE 
																WHEN ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = tblOrderDocQDT.strLocation
																			), 0) = 0
																	THEN tblInv.decLastPPUnit
																ELSE ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = tblOrderDocQDT.strLocation
																			), 0)
																END
														END
												END
									WHEN 1
										THEN CASE 
												WHEN tblInv.decLastPPUnit > ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN tblInv.decLastPPUnit
												ELSE CASE 
														WHEN tblInv.decLastPPUnit < ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
															THEN ISNULL((
																		CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END
																		), 0)
														ELSE CASE 
																WHEN CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END = 0
																	THEN tblInv.decLastPPUnit
																ELSE ISNULL((
																			CASE tblInv.decSumOnHand
																				WHEN 0
																					THEN 0
																				ELSE tblInv.decSumValue / tblInv.decSumOnHand
																				END
																			), 0)
																END
														END
												END
									ELSE tblInv.decLastPPUnit
									END
						WHEN 3
							THEN CASE @GPCalcInvLevel
									WHEN 0
										THEN CASE 
												WHEN ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblOrderDocQDT.strLocation
															), 0) = 0
													THEN tblInv.decLastPPUnit
												ELSE ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblOrderDocQDT.strLocation
															), 0)
												END
									WHEN 1
										THEN CASE 
												WHEN CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END = 0
													THEN tblInv.decLastPPUnit
												ELSE ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
												END
									ELSE tblInv.decLastPPUnit
									END
						ELSE tblInv.decLastPPUnit
						END
				END AS GPCalc
			,tblInv.strDimProCode AS DimProCode
			,tblInv.intType AS [TYPE]
			,tblInv.strUnitOfMeasure AS UnitOfMeasure 
			,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist
			,tblInv.bitAutoBuild AS IsAutoBuild
			,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc
			,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
				ELSE ISNULL((
					SELECT SUM(INV.decLastPPUnit)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
					END AS AutoBuildLRC
			,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
				ELSE ISNULL((
						SELECT SUM(INV.decStandardCost)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
				END AS AutoBuildSC
			,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
				ELSE ISNULL((
					SELECT ISNULL(SUM(CASE EXT.decOnHand
									WHEN 0
										THEN 0
									ELSE EXT.decValue / EXT.decOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
						AND EXT.strLocName = @DefaultInvLocation
					), 0)
			END AS AutoBuildMALocDef
			,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
				ELSE ISNULL((
					SELECT ISNULL(SUM(CASE EXT.decOnHand
									WHEN 0
										THEN 0
									ELSE EXT.decValue / EXT.decOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
						AND BOM.strLocName = EXT.strLocName
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
			END AS AutoBuildMALocation
			,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
				ELSE ISNULL((
					SELECT ISNULL(SUM(CASE INV.decSumOnHand
									WHEN 0
										THEN 0
									ELSE INV.decSumValue / INV.decSumOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
			END AS AutoBuildMAMain
		FROM tblOrderDocQDT
		INNER JOIN tblInv ON tblOrderDocQDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblOrderDocQDTPrj ON tblOrderDocQDT.strOrdDocID = tblOrderDocQDTPrj.strOrdDocID
			AND tblOrderDocQDT.intLineNo = tblOrderDocQDTPrj.intLineNo
		LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
		WHERE tblOrderDocQDT.strOrdDocID = @DocNumber
		ORDER BY tblOrderDocQDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocDTData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetOrderDocDTData]
(
	@DocNumber AS NVARCHAR(50),
	@GPCalcInvLevel AS INT,
	@GPCalcLPP AS INT,
	@DefaultInvLocation AS NVARCHAR(10)= NULL,
	@PriceList AS VARCHAR(20) = null,
	@Date DATETIME	= null
)
AS
BEGIN
SELECT tblOrderDocDT.[strOrdDocID] AS OrdDocID
      ,tblOrderDocDT.[intLineNo] AS [LineNo]
      ,tblOrderDocDT.[strPartNumber] AS PartNumber
      ,[strLocation] AS Location
      ,[strPartDesc] AS PartDesc
      ,[decQty] AS Qty
      ,[decQtyRemaining] AS QtyRemaining
      ,[strUnit] AS Unit
      ,tblOrderDocDT.[intType] AS [Type]
      ,[decPriceEaExc] AS PriceEaExc
      ,[decLineTotExc] AS LineTotExc
      ,[decLineTaxAmt] AS LineTaxAmt
      ,[decPriceEaInc] AS PriceEaInc
      ,[decLineTotInc] AS LineTotInc
      ,[strTaxCode] AS TaxCode 
      ,[imgTaxObj] AS TaxObj
      ,[strCurrency] AS Currency
      ,[bitIsForeign] AS IsForeign
      ,[decPriceEaExcF] AS PriceEaExcF
      ,[decLineTotExcF] AS LineTotExcF
      ,[decLineTaxAmtF] AS LineTaxAmtF
      ,[decEaIncTaxF] AS EaIncTaxF
      ,[decTotIncTaxF] AS TotIncTaxF
      ,[strInvField1] AS InvField1
      ,[strInvField2] AS InvField2
      ,[strInvField3] AS InvField3
      ,[strInvField4] AS InvField4
      ,[strInvField5] AS InvField5
      ,[strInvField6] AS InvField6
      ,[strLineField1] AS LineField1
      ,[strLineField2] AS LineField2
      ,[strLineField3] AS LineField3
      ,[strLineField4] AS LineField4
      ,[strLineField5] AS LineField5
      ,[strLineField6] AS LineField6
      ,[strLineField7] AS LineField7
      ,[strLineField8] AS LineField8
      ,[strLineField9] AS LineField9
      ,[strLineField10] AS LineField10
      ,[strLineField11] AS LineField11
      ,[strLineField12] AS LineField12
      ,[decLineDiscPerc] AS LineDiscPerc
      ,[decLineDiscAmt] AS LineDiscAmt
      ,[decLineDiscAmtF] AS LineDiscAmtF
      ,[bitDiscountTax] AS DiscountTax
      ,[decStockQty] AS StockQty
      ,tblOrderDocDT.[strStockUnit] AS StockUnit
      ,[decStockQtyRemain] AS StockQtyRemain
      ,[strSalesName] AS SalesName
      ,[strPartExtendedDesc] AS PartExtendedDesc
      ,[decBuyoutCost] AS BuyoutCost
      ,[decItemWeight] AS ItemWeight
      ,tblOrderDocDT.[decVolumetricWeight] AS VolumetricWeight
      ,[bitContainerItem] AS ContainerItem
      ,[bitDelCost] AS DelCost
      ,[intBillingMethod] AS BillingMethod
      ,[uidTransactionFieldID] AS TransactionFieldGUID 
	  ,[uidContainerItem] AS ContainerItemGUID
	  ,[strOrigDocID] AS OrigDocID
	,ISNULL(tblOrderDocDTPrj.strProjNumber, '') AS ProjNumber
	,tblInv.bitInvSerialType AS IsInvSerialType
	,CASE 
		WHEN tblInv.intType = 4
			THEN tblInv.decStandardCost
		ELSE CASE @GPCalcLPP
				WHEN 0
					THEN tblInv.decLastPPUnit
				WHEN 1
					THEN tblInv.decStandardCost
				WHEN 2
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblOrderDocDT.strLocation
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblOrderDocDT.strLocation
															), 0)
													THEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = tblOrderDocDT.strLocation
																), 0)
												ELSE CASE 
														WHEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblOrderDocDT.strLocation
																	), 0) = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblOrderDocDT.strLocation
																	), 0)
														END
												END
										END
							WHEN 1
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
												ELSE CASE 
														WHEN CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
														END
												END
										END
							ELSE tblInv.decLastPPUnit
							END
				WHEN 3
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblOrderDocDT.strLocation
													), 0) = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblOrderDocDT.strLocation
													), 0)
										END
							WHEN 1
								THEN CASE 
										WHEN CASE tblInv.decSumOnHand
												WHEN 0
													THEN 0
												ELSE tblInv.decSumValue / tblInv.decSumOnHand
												END = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
										END
							ELSE tblInv.decLastPPUnit
							END
				ELSE tblInv.decLastPPUnit
				END
		END  AS	GPCalc	
	,tblInv.strDimProCode AS DimProCode
	,tblInv.strUnitOfMeasure AS UnitOfMeasure
	,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist
	,tblInv.bitAutoBuild AS IsAutoBuild
	,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT SUM(INV.decLastPPUnit)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildLRC 
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT SUM(INV.decStandardCost)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildSC
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE EXT.decOnHand
									WHEN 0
										THEN 0
									ELSE EXT.decValue / EXT.decOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
						AND (ISNULL(@DefaultInvLocation,'')='' OR EXT.strLocName = @DefaultInvLocation) --EXT.strLocName = @DefaultInvLocation
					), 0)
		END AS AutoBuildMALocDef
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE EXT.decOnHand
									WHEN 0
										THEN 0
									ELSE EXT.decValue / EXT.decOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
						AND BOM.strLocName = EXT.strLocName
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildMALocation
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE INV.decSumOnHand
									WHEN 0
										THEN 0
									ELSE INV.decSumValue / INV.decSumOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildMAMain
	,CASE ISNULL((
					SELECT TOP 1 tblPriceListsByDate.uidPriceBasedID
					FROM tblPriceListsByDate
					INNER JOIN dbo.tblInvPrice ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
					WHERE ISNULL(@Date,getdate()) BETWEEN dbo.tblPriceListsByDate.dteStartDate
							AND dbo.tblPriceListsByDate.dteFinishDate
						AND tblPriceListsByDate.strPricelist = ISNULL(@PriceList,'')
						AND tblInvPrice.strPartNumber = tblInv.strPartNumber
					), NULL)
			WHEN NULL
				THEN NULL
			ELSE ISNULL((
						SELECT TOP 1 decCashPrice
						FROM tblInvPrice
						WHERE tblInv.strPartNumber = tblInvPrice.strPartNumber
							AND tblInvPrice.strPricelist = ISNULL(@PriceList,'')
							AND tblInvPrice.uidPriceBasedID = (
								SELECT TOP 1 tblPriceListsByDate.uidPriceBasedID
								FROM tblPriceListsByDate
								INNER JOIN dbo.tblInvPrice ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
								WHERE ISNULL(@Date,getdate()) BETWEEN dbo.tblPriceListsByDate.dteStartDate
										AND dbo.tblPriceListsByDate.dteFinishDate
									AND tblPriceListsByDate.strPricelist = ISNULL(@PriceList,'')
									AND tblInvPrice.strPartNumber = tblInv.strPartNumber
								)
							AND tblInvPrice.bitCashPricing = 1
						), NULL)
			END AS 'CashPrice'
	,tblInv.decSellFromStock AS SellFromStock
FROM tblOrderDocDT
INNER JOIN tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
	AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblOrderDocDT.strOrdDocID = @DocNumber
ORDER BY tblOrderDocDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocDTForConversion]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInventorySerialTypeData] ***********/

/*********** Start [GetOrderDocDTForConversion] ***********/
CREATE PROCEDURE [dbo].[GetOrderDocDTForConversion]
(
   	 @DocNumber AS NVARCHAR(100)
	,@DocLineNumber AS INT
)
AS
BEGIN
SELECT tblOrderDocDTSerial.[strOrdDocID] AS OrdDocID
      ,tblOrderDocDTSerial.[intLineNo] AS [LineNo]
      ,tblOrderDocDTSerial.[strSerialNumber] AS SerialNumber
      ,tblOrderDocDTSerial.[decQty] AS Qty
      ,tblOrderDocDTSerial.[strUnit] AS Unit
      ,tblOrderDocDTSerial.[lngID] AS ID
      ,tblOrderDocDTSerial.[bitExpiryDate] AS IsExpiryDate
      ,tblOrderDocDTSerial.[dteExpiryDate] AS ExpiryDate
      ,tblOrderDocDTSerial.[intSerialLotType] AS SerialLotType	
	,ISNULL((
			SELECT TYP.intType
			FROM tblOrderDocDT DTL
			INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber
			INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType
			WHERE DTL.strOrdDocID = tblOrderDocDTSerial.strOrdDocID
				AND DTL.intLineNo = tblOrderDocDTSerial.intLineNo
			), 0)
	,CASE 
		WHEN tblOrderDocDTSerial.intSerialLotType = 0
			THEN CONVERT(BIT, (ISNULL(tblInvSerialExt.bitDimensionExist, 0)), 0)
		ELSE CONVERT(BIT, 0)
			--THEN ISNULL(tblInvSerialExt.bitDimensionExist, 0)
		--ELSE 0
		END AS IsDimensionExist
	,CASE 
		WHEN tblOrderDocDTSerial.intSerialLotType = 0
			THEN ISNULL(tblInvSerialExt.strDimension, '')
		ELSE ''
		END AS Dimension	
	,lngBinID AS BinID
	,ISNULL((
			SELECT strBinCode
			FROM tblInvLocBin
			WHERE lngID = tblInvSerialExt.lngBinID
			), '') AS BinCode
	--,strBinCode = (
	--	SELECT strBinCode
	--	FROM tblInvLocBin
	--	WHERE lngID = tblInvSerialExt.lngBinID
	--	)
FROM tblOrderDocDT
INNER JOIN tblOrderDocDTSerial ON tblOrderDocDT.strOrdDocID = tblOrderDocDTSerial.strOrdDocID
	AND tblOrderDocDT.intLineNo = tblOrderDocDTSerial.intLineNo
LEFT JOIN tblInvSerialExt ON tblOrderDocDT.strPartNumber = tblInvSerialExt.strPartNumber
	AND tblOrderDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
WHERE tblOrderDocDTSerial.strOrdDocID = @DocNumber
	AND tblOrderDocDTSerial.intLineNo = @DocLineNumber
ORDER BY tblOrderDocDTSerial.lngID
END
GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocDTForLoadDoc]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetOrderDocument] ***********/

/*********** Start [GetOrderDocDTForLoadDoc] ***********/
CREATE PROCEDURE [dbo].[GetOrderDocDTForLoadDoc] (
	@ExistingSOSQNumber AS NVARCHAR(50)
	,@SQstrLineNos AS NVARCHAR(50) = NULL
	,@GPCalcInvLevel AS INT
	,@GPCalcLPP AS INT
	,@DefaultInvLocation AS NVARCHAR(5)
	)
AS
BEGIN
	SET @ExistingSOSQNumber = REPLACE(@ExistingSOSQNumber, '''', '')

	declare @linNoCount as int = (SELECT count(*) FROM fnSplitStringAsTable(@SQstrLineNos, ','))


SELECT tblOrderDocDT.strOrdDocID AS OrdDocID
		,tblOrderDocDT.intLineNo AS [LineNo]
		,tblOrderDocDT.strPartNumber AS PartNumber
		,tblOrderDocDT.strLocation AS Location
		,tblOrderDocDT.strPartDesc AS PartDesc
		,tblOrderDocDT.decQty AS Qty
		,tblOrderDocDT.decQtyRemaining AS QtyRemaining
		,tblOrderDocDT.strUnit AS Unit
		,tblOrderDocDT.intType AS Type
		,tblOrderDocDT.decPriceEaExc AS PriceEaExc
		,tblOrderDocDT.decLineTotExc AS LineTotExc
		,tblOrderDocDT.decLineTaxAmt AS LineTaxAmt
		,tblOrderDocDT.decPriceEaInc AS PriceEaInc
		,tblOrderDocDT.decLineTotInc AS LineTotInc
		,tblOrderDocDT.strTaxCode AS TaxCode
		,tblOrderDocDT.imgTaxObj AS TaxObj
		,tblOrderDocDT.strCurrency AS Currency
		,tblOrderDocDT.bitIsForeign AS IsForeign
		,tblOrderDocDT.decPriceEaExcF AS PriceEaExcF
		,tblOrderDocDT.decLineTotExcF AS LineTotExcF
		,tblOrderDocDT.decLineTaxAmtF AS LineTaxAmtF
		,tblOrderDocDT.decEaIncTaxF AS EaIncTaxF
		,tblOrderDocDT.decTotIncTaxF AS TotIncTaxF
		,tblOrderDocDT.strInvField1 AS InvField1
		,tblOrderDocDT.strInvField2 AS InvField2
		,tblOrderDocDT.strInvField3 AS InvField3
		,tblOrderDocDT.strInvField4 AS InvField4
		,tblOrderDocDT.strInvField5 AS InvField5
		,tblOrderDocDT.strInvField6 AS InvField6
		,tblOrderDocDT.strLineField1 AS LineField1
		,tblOrderDocDT.strLineField2 AS LineField2
		,tblOrderDocDT.strLineField3 AS LineField3
		,tblOrderDocDT.strLineField4 AS LineField4
		,tblOrderDocDT.strLineField5 AS LineField5
		,tblOrderDocDT.strLineField6 AS LineField6
		,tblOrderDocDT.strLineField7 AS LineField7
		,tblOrderDocDT.strLineField8 AS LineField8
		,tblOrderDocDT.strLineField9 AS LineField9
		,tblOrderDocDT.strLineField10 AS LineField10
		,tblOrderDocDT.strLineField11 AS LineField11
		,tblOrderDocDT.strLineField12 AS LineField12
		,tblOrderDocDT.decLineDiscPerc AS LineDiscPerc
		,tblOrderDocDT.decLineDiscAmt AS LineDiscAmt
		,tblOrderDocDT.decLineDiscAmtF AS LineDiscAmtF
		,tblOrderDocDT.bitDiscountTax AS DiscountTax
		,tblOrderDocDT.decStockQty AS StockQty
		,tblOrderDocDT.strStockUnit AS StockUnit
		,tblOrderDocDT.decStockQtyRemain AS StockQtyRemain
		,tblOrderDocDT.strSalesName AS SalesName
		,tblOrderDocDT.strPartExtendedDesc AS PartExtendedDesc
		,tblOrderDocDT.decBuyoutCost AS BuyoutCost
		,tblOrderDocDT.decItemWeight AS ItemWeight
		,tblOrderDocDT.decVolumetricWeight AS VolumetricWeight
		,tblOrderDocDT.bitContainerItem AS ContainerItem
		,tblOrderDocDT.bitDelCost AS DelCost
		,tblOrderDocDT.intBillingMethod AS BillingMethod
		,tblOrderDocDT.uidTransactionFieldID AS TransactionFieldGUID
		,tblOrderDocDT.[uidContainerItem] AS ContainerItemGUID
		,ISNULL(tblOrderDocDTPrj.strProjNumber, '') AS ProjNumber
		,tblInv.bitInvSerialType AS IsInvSerialType
		,CAST(0 AS BIT) AS IsCashPrice
		,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
		,CASE 
			WHEN tblInv.intType = 4
				THEN tblInv.decStandardCost
			ELSE CASE @GPCalcLPP
					WHEN 0
						THEN tblInv.decLastPPUnit
					WHEN 1
						THEN tblInv.decStandardCost
					WHEN 2
						THEN CASE @GPCalcInvLevel
								WHEN 0
									THEN CASE 
											WHEN tblInv.decLastPPUnit > ISNULL((
														SELECT CASE EXT.decOnHand
																WHEN 0
																	THEN 0
																ELSE EXT.decValue / EXT.decOnHand
																END
														FROM tblInvExt EXT
														WHERE EXT.strPartNumber = tblInv.strPartNumber
															AND EXT.strLocName = tblOrderDocDT.strLocation
														), 0)
												THEN tblInv.decLastPPUnit
											ELSE CASE 
													WHEN tblInv.decLastPPUnit < ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = tblOrderDocDT.strLocation
																), 0)
														THEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblOrderDocDT.strLocation
																	), 0)
													ELSE CASE 
															WHEN ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt EXT
																		WHERE EXT.strPartNumber = tblInv.strPartNumber
																			AND EXT.strLocName = tblOrderDocDT.strLocation
																		), 0) = 0
																THEN tblInv.decLastPPUnit
															ELSE ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt EXT
																		WHERE EXT.strPartNumber = tblInv.strPartNumber
																			AND EXT.strLocName = tblOrderDocDT.strLocation
																		), 0)
															END
													END
											END
								WHEN 1
									THEN CASE 
											WHEN tblInv.decLastPPUnit > ISNULL((
														CASE tblInv.decSumOnHand
															WHEN 0
																THEN 0
															ELSE tblInv.decSumValue / tblInv.decSumOnHand
															END
														), 0)
												THEN tblInv.decLastPPUnit
											ELSE CASE 
													WHEN tblInv.decLastPPUnit < ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
														THEN ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
													ELSE CASE 
															WHEN CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END = 0
																THEN tblInv.decLastPPUnit
															ELSE ISNULL((
																		CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END
																		), 0)
															END
													END
											END
								ELSE tblInv.decLastPPUnit
								END
					WHEN 3
						THEN CASE @GPCalcInvLevel
								WHEN 0
									THEN CASE 
											WHEN ISNULL((
														SELECT CASE EXT.decOnHand
																WHEN 0
																	THEN 0
																ELSE EXT.decValue / EXT.decOnHand
																END
														FROM tblInvExt EXT
														WHERE EXT.strPartNumber = tblInv.strPartNumber
															AND EXT.strLocName = tblOrderDocDT.strLocation
														), 0) = 0
												THEN tblInv.decLastPPUnit
											ELSE ISNULL((
														SELECT CASE EXT.decOnHand
																WHEN 0
																	THEN 0
																ELSE EXT.decValue / EXT.decOnHand
																END
														FROM tblInvExt EXT
														WHERE EXT.strPartNumber = tblInv.strPartNumber
															AND EXT.strLocName = tblOrderDocDT.strLocation
														), 0)
											END
								WHEN 1
									THEN CASE 
											WHEN CASE tblInv.decSumOnHand
													WHEN 0
														THEN 0
													ELSE tblInv.decSumValue / tblInv.decSumOnHand
													END = 0
												THEN tblInv.decLastPPUnit
											ELSE ISNULL((
														CASE tblInv.decSumOnHand
															WHEN 0
																THEN 0
															ELSE tblInv.decSumValue / tblInv.decSumOnHand
															END
														), 0)
											END
								ELSE tblInv.decLastPPUnit
								END
					ELSE tblInv.decLastPPUnit
					END
			END AS GPCalc
		--NEWLY ADDED  
		,tblInv.bitVoucherEnabled AS IsVoucherEnabled
		,ISNULL(tblInv.strVoucherCode, '') AS VoucherCode
		,ISNULL(tblInv.strUnitOfMeasure, '') AS UnitOfMeasure
		,tblInv.strDimProCode AS DimProCode
		,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist
		,tblInv.bitAutoBuild AS IsAutoBuild
		,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT SUM(INV.decLastPPUnit)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						WHERE BOM.strPartNumber = tblInv.strPartNumber
						), 0)
			END AS AutoBuildLRC
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT SUM(INV.decStandardCost)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						WHERE BOM.strPartNumber = tblInv.strPartNumber
						), 0)
			END AS AutoBuildSC
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT ISNULL(SUM(CASE EXT.decOnHand
										WHEN 0
											THEN 0
										ELSE EXT.decValue / EXT.decOnHand
										END), 0)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
						WHERE BOM.strPartNumber = tblInv.strPartNumber
							AND EXT.strLocName = @DefaultInvLocation
						), 0)
			END AS AutoBuildMALocDef
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT ISNULL(SUM(CASE EXT.decOnHand
										WHEN 0
											THEN 0
										ELSE EXT.decValue / EXT.decOnHand
										END), 0)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
							AND BOM.strLocName = EXT.strLocName
						WHERE BOM.strPartNumber = tblInv.strPartNumber
						), 0)
			END AS AutoBuildMALocation
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT ISNULL(SUM(CASE INV.decSumOnHand
										WHEN 0
											THEN 0
										ELSE INV.decSumValue / INV.decSumOnHand
										END), 0)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						WHERE BOM.strPartNumber = tblInv.strPartNumber
						), 0)
			END AS AutoBuildMAMain
		,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
	FROM tblOrderDocDT
	INNER JOIN tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
		AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
		WHERE tblOrderDocDT.strOrdDocID  IN (SELECT * FROM dbo.fnSplitStringAsTable(@ExistingSOSQNumber, ','))
		AND tblOrderDocDT.decQtyRemaining <> 0
		--AND tblOrderDocDT.intLineNo IN (
		--	SELECT *
		--	FROM fnSplitStringAsTable(@SQstrLineNos, ',')
		--	)
		AND tblOrderDocDT.intLineNo IN (
			case when @linNoCount > 0
			then (SELECT * FROM fnSplitStringAsTable(@SQstrLineNos, ','))
			else tblOrderDocDT.intLineNo
			end
			)
	ORDER BY tblOrderDocDT.intLineNo
END
GO

/****** Object:  StoredProcedure [dbo].[GetOrderDocDTSerialData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetPickedDataForMulSOSQDoc] ***********/

/*********** End [GetOrderDocDTSerialData] ***********/
CREATE PROCEDURE [dbo].[GetOrderDocDTSerialData]
	@DocNumber AS NVARCHAR(50),
	@LineNumber AS INT
AS
BEGIN
	SELECT tblOrderDocDTSerial.[strOrdDocID] AS OrderDocID
		  ,tblOrderDocDTSerial.[intLineNo] AS [LineNo] 
		  ,tblOrderDocDTSerial.[strSerialNumber] AS SerialNumber 
		  ,tblOrderDocDTSerial.[decQty] AS Qty 
		  ,tblOrderDocDTSerial.[strUnit] AS Unit 
		  ,[lngID] AS ID
		  ,[bitExpiryDate] AS IsExpiryDate 
		  ,[dteExpiryDate] AS ExpiryDate
		  ,[intSerialLotType] AS SerialLotType 
		,CASE 
			WHEN tblOrderDocDTSerial.intSerialLotType = 0
				THEN ISNULL(tblInvSerialExt.bitDimensionExist, 0)
			ELSE 0
			END AS IsDimensionExist
		,CASE 
			WHEN tblOrderDocDTSerial.intSerialLotType = 0
				THEN ISNULL(tblInvSerialExt.strDimension, '')
			ELSE ''
			END AS Dimension	
	FROM tblOrderDocDT
	INNER JOIN tblOrderDocDTSerial ON tblOrderDocDT.strOrdDocID = tblOrderDocDTSerial.strOrdDocID
		AND tblOrderDocDT.intLineNo = tblOrderDocDTSerial.intLineNo
	LEFT JOIN tblInvSerialExt ON tblOrderDocDT.strPartNumber = tblInvSerialExt.strPartNumber
		AND tblOrderDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
	WHERE tblOrderDocDT.strOrdDocID = @DocNumber
		AND tblOrderDocDT.intLineNo = @LineNumber
	ORDER BY lngID
END
GO

/*********** Start [GetOrderDocDTSerialDataForLoadDocConversion] ***********/
CREATE PROCEDURE [dbo].[GetOrderDocDTSerialDataForLoadDocConversion]
(
   	@DocNumber AS NVARCHAR(100)
	,@DocLineNumber AS INT
)
AS
BEGIN
	SELECT s.strOrdDADocID AS OrdDocID
		,s.intLineNo AS [LineNo]
		,s.strSerialNumber AS SerialNumber
		,s.decQty AS Qty
		,s.strUnit AS Unit
		,s.lngID AS ID
		,s.bitExpiryDate AS IsExpiryDate
		,s.dteExpiryDate AS ExpiryDate
		,s.intSerialLotType AS SerialLotType
		,s.lngBinID AS BinID
		,(
			CASE 
				WHEN s.intSerialLotType = 0
					THEN ISNULL(CAST(tblInvSerialExt.intStatus AS CHAR(1)) + tblInvSerialExt.strDocID, '')
				ELSE ''
				END
			) AS NewType
		,ISNULL((
				SELECT DISTINCT TYP.strInvSerialType
				FROM tblOrderDocDADTSerial (NOLOCK) SRL
				INNER JOIN tblOrderDocDADT (NOLOCK) DTL ON SRL.strOrdDADocID = DTL.strOrdDADocID
					AND SRL.intLineNo = DTL.intLineNo
				INNER JOIN tblInv (NOLOCK) INV ON DTL.strPartNumber = INV.strPartNumber
				INNER JOIN tblInvSerialTypes (NOLOCK) TYP ON INV.strInvSerialType = TYP.strInvSerialType
				WHERE SRL.strOrdDADocID = s.strOrdDADocID
					AND SRL.intLineNo = s.intLineNo
				), '') AS Type1
		,CASE 
			WHEN s.intSerialLotType = 0
				THEN CONVERT(BIT, (ISNULL(tblInvSerialExt.bitDimensionExist, 0)), 0)
			ELSE CONVERT(BIT, 0)
			END AS IsDimensionExist
		,CASE 
			WHEN s.intSerialLotType = 0
				THEN ISNULL(tblInvSerialExt.strDimension, '')
			ELSE ''
			END AS Dimension
		,s.lngBinID AS BinID		
		,ISNULL((
			SELECT strBinCode
			FROM tblInvLocBin
			WHERE lngID = s.lngBinID
			), '') AS BinCode
		FROM tblOrderDocDADT (NOLOCK)
		INNER JOIN tblOrderDocDADTSerial (NOLOCK) s ON tblOrderDocDADT.strOrdDADocID = s.strOrdDADocID
			AND tblOrderDocDADT.intLineNo = s.intLineNo
		LEFT JOIN tblInvSerialExt (NOLOCK) ON tblOrderDocDADT.strPartNumber = tblInvSerialExt.strPartNumber
			AND s.strSerialNumber = tblInvSerialExt.strSerialNumber
		WHERE tblOrderDocDADT.strOrdDADocID = @DocNumber
			AND tblOrderDocDADT.intLineNo = @DocLineNumber
		ORDER BY lngID		
END
GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocDTSerialForMulSOSQConversion]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetPickTicketsDTSerialForDocConversion] ***********/

/*********** Start [GetOrderDocDTSerialForMulSOSQConversion] ***********/
CREATE PROCEDURE [dbo].[GetOrderDocDTSerialForMulSOSQConversion]
	@DocNumber AS NVARCHAR(50)
	--@LineNumber AS INT
AS
BEGIN
	SELECT 
			tblOrderDocDTSerial.strOrdDocID AS OrderDocID,
			tblOrderDocDTSerial.intLineNo AS [LineNo],
			tblOrderDocDTSerial.strSerialNumber AS SerialNumber,
			tblOrderDocDTSerial.decQty AS Qty,
			tblOrderDocDTSerial.strUnit AS Unit,
			tblOrderDocDTSerial.lngID AS ID,
			tblOrderDocDTSerial.bitExpiryDate AS IsExpiryDate,
			tblOrderDocDTSerial.dteExpiryDate AS ExpiryDate,
			tblOrderDocDTSerial.intSerialLotType AS SerialLotType,
       CASE
           WHEN tblOrderDocDTSerial.intSerialLotType = 0 THEN ISNULL(CAST(tblInvSerialExt.intStatus AS CHAR(1)) + tblInvSerialExt.strDocID,'')
           ELSE ''
       END AS [Status],
       CASE
           WHEN tblOrderDocDTSerial.intSerialLotType = 0 THEN ISNULL(tblInvSerialExt.bitDimensionExist,0)
           ELSE 0
       END AS IsDimensionExist,
       CASE
           WHEN tblOrderDocDTSerial.intSerialLotType = 0 THEN ISNULL(tblInvSerialExt.strDimension,'')
           ELSE ''
       END AS Dimension
	FROM tblOrderDocDT
	INNER JOIN tblOrderDocDTSerial ON tblOrderDocDT.strOrdDocID = tblOrderDocDTSerial.strOrdDocID
	AND tblOrderDocDT.intLineNo = tblOrderDocDTSerial.intLineNo
	LEFT JOIN tblInvSerialExt ON tblOrderDocDT.strPartNumber = tblInvSerialExt.strPartNumber
	AND tblOrderDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
	WHERE tblOrderDocDT.strOrdDocID = @DocNumber
	 -- AND tblOrderDocDT.intLineNo = @LineNumber
	ORDER BY lngID
END

GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocLoadSO]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetOrderDocDADTData] ***********/

CREATE PROCEDURE [dbo].[GetOrderDocLoadSO]         
 (         
 @DocNum NVARCHAR(MAX)         
 )        
AS        
    BEGIN        
        
        SELECT  tblOrderDoc.strOrdDocID AS DocumentNumber ,        
                tblOrderDoc.strOrdFQDocID AS OrdFQDocID ,        
                tblOrderDoc.dteSystemDate AS SystemDate ,        
                tblOrderDoc.dteJournalDate AS JournalDate ,        
                tblOrderDoc.dteRequired AS [Required] ,        
                tblOrderDoc.strUserName AS UserName ,        
                tblOrderDoc.strSoldTo AS SoldTo ,        
                tblOrderDoc.strShipTo AS ShipTo ,        
                tblOrderDoc.strReference AS Reference ,        
                tblOrderDoc.decSubTotal AS SubTotal ,        
                tblOrderDoc.decVAT AS VAT ,        
                tblOrderDoc.decTotal AS Total ,        
                tblOrderDoc.decSubTotalF AS SubTotalF ,        
                tblOrderDoc.decVATF AS VATF ,        
                tblOrderDoc.decTotalF AS TotalF ,        
                tblOrderDoc.strNotes AS Notes ,        
                tblOrderDoc.bitPrinted AS Printed ,        
                tblOrderDoc.bitEmailed AS Emailed ,        
                tblOrderDoc.bitCleared AS IsCleared ,        
                tblOrderDoc.strSalesName AS SalesName ,        
                tblOrderDoc.strAddInfo AS AdditionalInfo ,        
                tblOrderDoc.strCurrency AS CurrencyCode ,        
                tblOrderDoc.bitIsForeign AS IsForeign ,        
                tblOrderDoc.decSubTotalF AS SubTotalForeign ,        
                tblOrderDoc.decVATF AS VATForeign ,        
                tblOrderDoc.decTotalF AS TotalForeign ,        
                tblOrderDoc.decExchange AS ExchangeRate ,        
                tblOrderDoc.strTerm AS Term ,        
                tblOrderDoc.intDept AS Dept ,        
                tblOrderDoc.strField1 AS Field1 ,        
                tblOrderDoc.strField2 AS Field2 ,        
                tblOrderDoc.strField3 AS Field3 ,        
                tblOrderDoc.strField4 AS Field4 ,        
                tblOrderDoc.strField5 AS Field5 ,        
                tblOrderDoc.strField6 AS Field6 ,        
                tblOrderDoc.strField7 AS Field7 ,        
                tblOrderDoc.strField8 AS Field8 ,        
                tblOrderDoc.strField9 AS Field9 ,        
                tblOrderDoc.strField10 AS Field10 ,        
                tblOrderDoc.strField11 AS Field11 ,        
                tblOrderDoc.strField12 AS Field12 ,        
				tblOrderDoc.dteField13 AS Field13 ,        
				tblOrderDoc.dteField14 AS Field14 ,        
                tblOrderDoc.strSubFormated AS SubFormatted ,        
                tblOrderDoc.strVATFormatted AS VATFormatted ,        
                tblOrderDoc.strTotFormatted AS TotalFormatted ,        
                tblOrderDoc.decDiscPerc AS DiscountPercentage ,        
                tblOrderDoc.decDiscAmt AS DiscountAmount ,        
                tblOrderDoc.decDiscAmtF AS DiscountAmountForeign ,        
                tblOrderDoc.strDiscFormatted AS DiscountFormatted ,        
                tblOrderDoc.strStatusTypeCode AS StatusTypeCode ,        
                tblOrderDoc.decTotalWeight AS TotalWeight ,        
                tblOrderDoc.decTotalVolWeight AS TotalVolWeight ,        
                tblOrderDoc.strSOReasonCode AS SOReasonCode ,        
                tblOrderDoc.decDeliveryCost AS DeliveryCost ,        
                tblOrderDoc.decDeliveryCostF AS DeliveryCostForeign ,        
                tblOrderDoc.strDeliveryCostFormatted AS DeliveryCostFormatted ,        
                tblOrderDoc.strDelMethodCode AS DelMethodCode ,        
                tblOrderDoc.strStoreNumber AS StoreNumber ,        
                tblOrderDoc.strEDI AS EDI ,        
				tblOrderDoc.strCustName AS CustomerName  ,      
				C.strCustDesc AS CustomerDescription      
               -- ISNULL(tblCustomers.strCustName, '') AS CustomerName        
        FROM    tblOrderDoc (NOLOCK)        
                LEFT JOIN tblOrderDocQ  (NOLOCK) ON tblOrderDoc.strOrdFQDocID = tblOrderDocQ.strOrdDocID        
                LEFT JOIN tblCustomers  (NOLOCK) ON tblOrderDocQ.strCustName = tblCustomers.strCustName        
				LEFT JOIN tblCustomers  (NOLOCK) AS C on tblOrderDoc.strCustName = C.strCustName      
        WHERE   tblOrderDoc.strOrdDocID = @DocNum        
        
END 
GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocQDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [SaveCommissionData] ***********/

/*********** Start [GetOrderDocQDT] ***********/
CREATE PROCEDURE [dbo].[GetOrderDocQDT]
	@DocNumber AS NVARCHAR(50)
AS
BEGIN
	SELECT  tblOrderDocQDT.[strOrdDocID] AS OrdDocID
		    ,tblOrderDocQDT.[intLineNo] AS [LineNo]
		    ,tblOrderDocQDT.[strPartNumber] AS PartNumber
		    ,[strLocation] AS Location
		    ,[strPartDesc] AS PartDesc
		    ,[decQty] AS Qty
		    ,[strUnit] AS Unit
		    ,[decCost] AS Cost
		    ,[decMarkUp] AS MarkUp
		    ,[decPriceEaExc] AS PriceEaExc
		    ,[decLineTotExc] AS LineTotExc
		    ,[decLineTaxAmt] AS LineTaxAmt
		    ,[decPriceEaInc] AS PriceEaInc
		    ,[decLineTotInc] AS LineTotInc
		    ,[strTaxCode] AS TaxCode
		    ,[imgTaxObj] AS TaxObj
		    ,[strCurrency] AS Currency
		    ,[bitIsForeign] AS IsForeign
		    ,[decPriceEaExcF] AS PriceEaExcF
		    ,[decLineTotExcF] AS LineTotExcF
		    ,[decLineTaxAmtF] AS LineTaxAmtF
		    ,[decEaIncTaxF] AS EaIncTaxF
		    ,[decTotIncTaxF] AS TotIncTaxF
		    ,[decTotalCost] AS TotalCost 
		    ,[strInvField1] AS InvField1
		    ,[strInvField2] AS InvField2
		    ,[strInvField3] AS InvField3
		    ,[strInvField4] AS InvField4
		    ,[strInvField5] AS InvField5
		    ,[strInvField6] AS InvField6
		    ,[strLineField1] AS LineField1
		    ,[strLineField2] AS LineField2
		    ,[strLineField3] AS LineField3
		    ,[strLineField4] AS LineField4
		    ,[strLineField5] AS LineField5
		    ,[strLineField6] AS LineField6
		    ,[strLineField7] AS LineField7
		    ,[strLineField8] AS LineField8
		    ,[strLineField9] AS LineField9
		    ,[strLineField10] AS LineField10
		    ,[strLineField11] AS LineField11
		    ,[strLineField12] AS LineField12
		    ,[decLineDiscPerc] AS LineDiscPerc
		    ,[decLineDiscAmt] AS LineDiscAmt
		    ,[decLineDiscAmtF] AS LineDiscAmtF
		    ,[strVendName] AS VendorName
		    ,[bitDiscountTax] AS DiscountTax
		    ,[strSalesName] AS SalesName
		    ,[strPartExtendedDesc] AS PartExtendedDesc
		    ,[decItemWeight] AS ItemWeight
		    ,tblOrderDocQDT.[decVolumetricWeight] AS VolumetricWeight
		    ,[bitContainerItem] AS ContainerItem
		    ,[bitDelCost] AS DelCost
		    ,[intBillingMethod] AS BillingMethod
		    ,[uidTransactionFieldID] AS TransactionFieldGUID
			,ISNULL([intType],0) AS Type 
			,[uidContainerItem] AS ContainerItemGUID
			,ISNULL(tblOrderDocQDTPrj.strProjNumber, '') AS ProjNumber  
			,ISNULL(tblInv.strUnitOfMeasure, '') AS UnitOfMeasure 
FROM tblOrderDocQDT
			LEFT JOIN tblOrderDocQDTPrj ON tblOrderDocQDT.strOrdDocID = tblOrderDocQDTPrj.strOrdDocID
			AND tblOrderDocQDT.intLineNo = tblOrderDocQDTPrj.intLineNo
			LEFT JOIN tblInv ON tblOrderDocQDT.strPartNumber = tblInv.strPartNumber
WHERE tblOrderDocQDT.strOrdDocID = @DocNumber
ORDER BY tblOrderDocQDT.intLineNo
END	
GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocQDTData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[GetUserListForInventory] ***********/



/*********** Start [GetOrderDocQDTData] ***********/
CREATE PROCEDURE [dbo].[GetOrderDocQDTData]
	@DocNumber AS NVARCHAR(50)	
AS
BEGIN
SELECT strPartNumber AS PartNumber,  strPartDesc AS PartDesc, decLineTotInc AS LineTotInc , strTaxCode AS TaxCode , intBillingMethod AS BillingMethod FROM tblOrderDocQDT WHERE bitDelCost = 1 AND strOrdDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocument]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------------------------
/*********** Start [GetOrderDocument] ***********/
CREATE PROCEDURE [dbo].[GetOrderDocument]
    (
      @ExistingSOSQNumber NVARCHAR(100)
    )
AS
BEGIN
	SET @ExistingSOSQNumber = REPLACE(@ExistingSOSQNumber, '''','')

	SELECT 
		strOrdDocID AS DocumentNumber,
		intDocType AS DocType,
		dteSystemDate AS SystemDate,
		dteJournalDate AS JournalDate,
		dteRequired AS [Required],
		strUserName AS UserName,
		strCustName AS CustomerNumber,
		strSoldTo AS SoldTo,
		strShipTo AS ShipTo,
		strReference AS Reference,
		decSubTotal AS SubTotal,
		decVAT AS VAT,
		decTotal AS Total,
		strNotes AS Notes,
		bitPrinted AS Printed,
		bitEmailed AS Emailed,
		bitCleared AS IsCleared,
		strSalesName AS SalesName,
		strAddInfo AS AdditionalInfo,
		strCurrency AS CurrencyCode,
		bitIsForeign AS IsForeign,
		decSubTotalF AS SubTotalForeign,
		decVATF AS VATForeign,
		decTotalF AS TotalForeign,
		decExchange AS ExchangeRate,
		strTerm AS Term,
		intDept AS Dept,
		strField1 AS Field1,
		strField2 AS Field2,
		strField3 AS Field3,
		strField4 AS Field4,
		strField5 AS Field5,
		strField6 AS Field6,
		strField7 AS Field7,
		strField8 AS Field8,
		strField9 AS Field9,
		strField10 AS Field10,
		strField11 AS Field11,
		strField12 AS Field12,
		strSubFormated AS SubFormatted,
		strVATFormatted AS VATFormatted,
		strTotFormatted AS TotalFormatted,
		dteField13 AS Field13,
		dteField14 AS Field14,
		decDiscPerc AS DiscountPercentage,
		decDiscAmt AS DiscountAmount,
		decDiscAmtF AS DiscountAmountForeign,
		strDiscFormatted AS DiscountFormatted,
		strOrdFQDocID AS OrdFQDocID,
		strStatusTypeCode AS StatusTypeCode,
		bitBookmark AS Bookmark,
		strCNReasonCode AS CNReasonCode,
		bitIsRepair AS IsRepair,
		strDelMethodCode AS DelMethodCode,
		decTotalWeight AS TotalWeight,
		decTotalVolWeight AS TotalVolWeight,
		strSOReasonCode AS SOReasonCode,
		decDeliveryCost AS DeliveryCost,
		decDeliveryCostF AS DeliveryCostForeign,
		strDeliveryCostFormatted AS DeliveryCostFormatted,
		bitShipmentsAuditTrail AS ShipmentsAuditTrail,
		intRevisionNumber AS RevisionNumber,
		bitIsLayby AS IsLayby
	FROM 
		tblOrderDoc 
	WHERE 
		strOrdDocID IN (SELECT * FROM fnSplitStringAsTable(@ExistingSOSQNumber, ','))
	END
GO
/****** Object:  StoredProcedure [dbo].[GetOrderInfoSalesImportExport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetFilesSalesOrdersEDI] ***********/

/*********** Start [GetOrderInfoSalesImportExport] ***********/
CREATE PROCEDURE [dbo].[GetOrderInfoSalesImportExport] 
@Number VARCHAR(50),
@EDISwitch VARCHAR(50),
@GLN VARCHAR(50) = 'Vodacom'
AS
BEGIN
SELECT TOP (1) Isnull(tblcustomerloc.strcustname, N'') AS 'CustomerName',
               Isnull(tblcustomerloc.strlocname, N'')  AS 'LocationName',
               tblsalesorderedis.strediswitch AS 'EDISwitch',
               tblsalesorderedicustomers.strgln AS 'CustomerGLN',
               tblsalesorderedis.stredi AS 'EDI'
FROM   tblcustomerloc
       INNER JOIN tblsalesorderedicustomers
               ON tblcustomerloc.strcustname =
                  tblsalesorderedicustomers.strcustname
       INNER JOIN tblsalesorderedis
               ON tblsalesorderedicustomers.stredi = tblsalesorderedis.stredi
WHERE  ( tblcustomerloc.strnumber = @Number )
       AND ( tblsalesorderedis.strediswitch = @EDISwitch )
       AND ( tblsalesorderedicustomers.strgln = @GLN ) 	
END 
GO
/****** Object:  StoredProcedure [dbo].[GetOrphanedValuesCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetOrphanedValuesCount]
AS
BEGIN
	SELECT COUNT(t2.strPartNumber) FROM tblInvExt t2 LEFT JOIN tblInv t1 ON t1.strPartNumber = t2.strPartNumber WHERE t1.intType <> 4 AND t1.inttype <> 11 AND decOnHand <= 0 AND decValue <> 0
END
GO
/****** Object:  StoredProcedure [dbo].[GetOverDueAmountSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


/*********** Start [GetOverDueAmountSales] ***********/
CREATE PROCEDURE [dbo].[GetOverDueAmountSales]
(
	@CustomerName AS VARCHAR(50),
	@SessionDate AS DATETIME
)
AS
BEGIN
	SELECT CASE tblCustTrans.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END 
	FROM tblCustTrans (NOLOCK) INNER JOIN tblCustTransDT (NOLOCK) ON tblCustTransDT.lngCustTrID = tblCustTrans.lngCustTrID WHERE decInvAmount <> 0 
	AND bitSettled = 0 AND strCustName = @CustomerName AND dteDueDate < @SessionDate GROUP BY tblCustTrans.bitIsForeign
END
GO
/****** Object:  StoredProcedure [dbo].[GetOverdueInvoices]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateSalesPersonToLines] ***********/

CREATE PROCEDURE [dbo].[GetOverdueInvoices]
(	@CustomerNumber AS NVARCHAR(50),
	@SessionDate AS DATETIME,
	@IsFromWorkshop AS BIT
)
AS
BEGIN
	SELECT ISNULL(tblCustTrans.strInvDocID, tblCustTrans.strInvDepNumber) AS Document
	,ISNULL(tblCustTrans.strInvDepNumber, '') AS Reference
	,tblCustTrans.dteJournalDate AS DocumentDate
	,ISNULL((
			SELECT tblInvoiceDoc.dteRequired
			FROM tblInvoiceDoc
			WHERE tblInvoiceDoc.strInvDocID = tblCustTrans.strInvDocID
			), tblCustTrans.dteDueDate) AS RequiredDate
	,CASE tblCustTrans.bitIsForeign
		WHEN 0
			THEN tblCustTrans.decInvAmount
		ELSE tblCustTrans.decInvAmountF
		END AS Total
	,CASE tblCustTrans.bitIsForeign
		WHEN 0
			THEN SUM(tblCustTransDT.decAmount)
		ELSE SUM(tblCustTransDT.decAmountF)
		END AS AmountDue
	,CASE 
		WHEN tblCustTrans.dteDueDate >= @SessionDate
			THEN CASE tblCustTrans.bitIsForeign
					WHEN 0
						THEN SUM(tblCustTransDT.decAmount)
					ELSE SUM(tblCustTransDT.decAmountF)
					END
		ELSE 0
		END AS CurrentDue
	,tblCustTrans.dteDueDate AS DueDate
	,CASE 
		WHEN tblCustTrans.dteDueDate < @SessionDate
			THEN CASE tblCustTrans.bitIsForeign
					WHEN 0
						THEN SUM(tblCustTransDT.decAmount)
					ELSE SUM(tblCustTransDT.decAmountF)
					END
		ELSE 0
		END AS Overdue
	,ISNULL((
			SELECT tblInvoiceDoc.strTerm
			FROM tblInvoiceDoc
			WHERE tblInvoiceDoc.strInvDocID = tblCustTrans.strInvDocID
			), '') AS Term
	FROM tblCustTrans
	INNER JOIN tblCustTransDT ON tblCustTransDT.lngCustTrID = tblCustTrans.lngCustTrID
	INNER JOIN tblInvoiceDoc ON  tblCustTrans.strInvDocID = tblInvoiceDoc.strInvDocID
	WHERE tblCustTrans.decInvAmount <> 0
		AND tblCustTrans.bitSettled = 0
		AND tblCustTrans.strCustName = @CustomerNumber
		AND tblInvoiceDoc.bitIsFromWorkshop = @IsFromWorkshop
	GROUP BY tblCustTrans.strInvDocID
		,tblCustTrans.strInvDepNumber
		,tblCustTrans.dteJournalDate
		,tblCustTrans.dteDueDate
		,tblCustTrans.bitIsForeign
		,tblCustTrans.decInvAmount
		,tblCustTrans.decInvAmountF
	ORDER BY ISNULL(tblCustTrans.strInvDocID, tblCustTrans.strInvDepNumber)
END
GO
/****** Object:  StoredProcedure [dbo].[GetPartItemNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InsertCustTransAndCustTransDT] ***********/

/*********** Start [GetPartItemNumber] ***********/
CREATE PROCEDURE [dbo].[GetPartItemNumber]
(
	@PartNumbers VARCHAR(MAX)
)
AS
BEGIN
	SELECT COUNT(strPartItemNumber) FROM tblInvUpsell WHERE strPartNumber IN (SELECT VALUE FROM fnSplitStringAsTable(@PartNumbers, '~'))
END
GO
/****** Object:  StoredProcedure [dbo].[GetPartNumberContainers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/************************* End [FetchInvLocation] *************************/

CREATE PROCEDURE [dbo].[GetPartNumberContainers]
AS
BEGIN	
	SELECT strPartNumber FROM tblInvContainers (NOLOCK)
END
GO
/****** Object:  StoredProcedure [dbo].[GetPartNumberDescription]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetPartNumberDescription]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetPartNumberDescription]
	-- Add the parameters for the stored procedure here
	@partNo varchar(max)
AS
BEGIN
	SET NOCOUNT ON;

    SELECt strPartNumber AS PartNumber,strDesc AS Description from tblInv where  CharIndex(',' + CONVERT(Varchar(MAX), strPartNumber) + ',', ',' + @partNo + ',' ) > 0
END
GO
/****** Object:  StoredProcedure [dbo].[GetPartNumberList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvData] ***********/

/*********** Start [GetPartNumberList] ***********/
CREATE PROCEDURE [dbo].[GetPartNumberList]
	@PartNumbers AS NVARCHAR(50)
AS
BEGIN
	SELECT tblInv.strPartNumber AS PartNumber
		,tblInvCat.bitUseMinMarginPerc AS IsUseMinMarginPerc
		,tblInvCat.decMinMarginPerc AS MinMarginPerc
		,tblInvCat.intAlertOnMinMarginPerc AS AlertOnMinMarginPerc
	FROM tblInv (NOLOCK)
		INNER JOIN tblInvCat (NOLOCK) ON tblInv.strCategory = tblInvCat.strCategory
	WHERE (
		tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@PartNumbers, ',' ))
		OR tblInv.strBarCode IN (SELECT * FROM fnSplitStringAsTable(@PartNumbers, ',' ))
		OR tblInv.strBarCode2 IN (SELECT * FROM fnSplitStringAsTable(@PartNumbers, ',' ))
		) 
END
GO
/****** Object:  StoredProcedure [dbo].[GetPartNumbersInvContainers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetLocation] ***********/

/*********** Start [GetPartNumbersInvContainers] ***********/
CREATE PROCEDURE [dbo].[GetPartNumbersInvContainers]
AS
BEGIN	
	SELECT strPartNumber FROM tblInvContainers	
END
GO
/****** Object:  StoredProcedure [dbo].[GetPastelCustomerLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetPastelCustomerLocation]
AS
SELECT CustomerCode 'CustName', CASE WHEN ISNULL(CustDelivCode,'') = '' THEN 'MAIN' ELSE CustDelivCode END 'LocName', ISNULL(DelAddress01,'') 'Street1', 
ISNULL(DelAddress02,'') 'Street2',ISNULL(DelAddress03,'') 'City', ISNULL(DelAddress04,'') 'Province', Left(ISNULL(DelAddress05,''), 20) 
AS Postal, ISNULL(SalesmanCode,'') 'SalesmanCode' FROM tblUtilityPervDeliveryAddresses WHERE CustomerCode IN (SELECT CustomerCode FROM tblUtilityPervCustomerMaster) 
ORDER BY CustomerCode, CustDelivCode
GO
/****** Object:  StoredProcedure [dbo].[GetPastelCustomersList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetPastelCustomersList]  
AS  
BEGIN  
 SELECT CM.CustomerCode as CustName  
  ,CM.CustomerDesc as CustDesc  
  ,ISNULL(CM.PostAddress01,'') as Street1  
  ,ISNULL(CM.PostAddress02,'') as Street2  
  ,ISNULL(CM.PostAddress03,'') as City  
  ,ISNULL(CM.PostAddress04,'') as Province  
  ,LEFT(ISNULL(CM.PostAddress05,''), 20) AS Postal  
  ,ISNULL(DA.Telephone,'') as Phone  
  ,ISNULL(DA.Cell,'') as CellPhone  
  ,ISNULL(DA.Fax, '') as Fax  
  ,ISNULL(DA.Email, '') as Email  
  ,ISNULL(CM.ExemptRef,'') as VAT  
  ,cast(ISNULL(CM.CreditLimit,0) as decimal(18,4)) as CreditLimit   
  ,Cast(ISNULL(CM.Blocked,0) as bit) as Inactive   
  ,CM.UpdatedOn    
  ,ISNULL(DA.Contact,'') as Contact  
  ,ISNULL(CM.UserDefined01,'') as Field1  
  ,ISNULL(CM.UserDefined02,'') as Field2  
  ,ISNULL(CM.UserDefined03,'') as Field3  
  ,ISNULL(CM.UserDefined04,'') as Field4  
  ,ISNULL(CM.UserDefined05,'') as Field5  
  ,CASE   
        WHEN LEN(ISNULL(TaxCode,'')) = 1 THEN '0'   
        ELSE CAST(ISNULL(TaxCode, 0) AS NVARCHAR(MAX))  
    END AS 'TaxCode'  
  ,CM.CreateDate as Since  
  ,CASE WHEN CM.bitEvo = 1 THEN RTRIM(ISNULL(CM.TermsCode,''))  
        ELSE RTRIM(CAST(ISNULL(CM.PaymentTerms,'') AS varchar(20)))   
     END AS Term,Cast(ISNULL(CM.CurrencyCode,0) as nvarchar(Max)) as Currency  
  ,cast( ISNULL(CM.Category,0) as nvarchar(Max)) as CustCategory  
 FROM tblUtilityPervCustomerMaster CM  
 LEFT JOIN tblUtilityPervDeliveryAddresses DA ON CM.CustomerCode = DA.CustomerCode  
  AND DA.CustDelivCode = ''  
 ORDER BY CM.CustomerCode  
END  
GO

/****** Object:  StoredProcedure [dbo].[GetPastelGLAccountData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetPastelGLAccountData]
AS
BEGIN
Declare @count int

SELECT @count= COUNT(intGLNumber) FROM tblUtilityAccounts

IF(@count > 0)
	BEGIN
	SELECT intPPGLNumber AS 'PPGLNumber',
		   strPPDesc AS 'PPDesc',
		   intAccClass AS 'AccClass',
		   strPPAccClass AS 'PPAccClass',
		   bitSubAccount AS 'SubAccount',
		   intAccType AS 'AccType',
		   intGLNumber AS 'GLNumber',
		   strDesc AS 'Desc'
	FROM tblUtilityAccounts
	ORDER BY intPPGLNumber
END
ELSE
	SELECT LM.AccNumber 'PPGLNumber'
		,LEFT(LM.AccDesc, 50) 'PPDesc'
		,cast(FC.FinDesc as nvarchar(Max)) 'PPAccClass'
		,cast(ISNULL(LM.NumberSubAccs,0) AS int) AS 'AccType'
		,ISNULL(FC.FinDesc, '') as 'Desc'
	FROM tblUtilityPervLedgerMaster LM
	LEFT JOIN tblUtilityPervFinancialCategories FC ON LM.FinancialCategory = FC.FinCode
	ORDER BY LM.AccNumber
END
GO

CREATE PROCEDURE [dbo].[GetPastelInventoryList]
AS
BEGIN
    SELECT 
        ItemCode 'PartNumber', 
        ISNULL(Description, '') 'Desc', 
        Cast(Physical as int) 'Type', 
        ISNULL(Category,'') 'Category', 
        ISNULL(UnitSize,'') 'BuyUnit', 
        CASE WHEN Blocked = 1 THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS 'Inactive', 
        ISNULL(UserDefText01,'') 'Field1', 
        ISNULL(UserDefText02,'') 'Field2', 
        ISNULL(UserDefText03,'') 'Field3', 
        CAST(ISNULL(UserDefNum01,'') as nvarchar(Max)) 'Field4', 
        CAST(ISNULL(UserDefNum02,'') as nvarchar(Max)) 'Field5', 
        CAST(ISNULL(UserDefNum03,'') as nvarchar(Max)) 'Field6', 
        ISNULL(Barcode,'') 'BarCode'
    FROM 
        tblUtilityPervInventory 
    UNION ALL 
    SELECT 
        '<<BLANK-ITEM>>', 'Blank Item Code', 1, '', '', CAST(0 AS bit), '', '', '', '', '', '', '' 
    UNION ALL 
    SELECT 
        '<<BLANK-SERV>>', 'Blank Service Code', 0, '', '', CAST(0 AS bit), '', '', '', '', '', '', '' 
    ORDER BY 
        ItemCode
END
GO

CREATE PROCEDURE [dbo].[GetPastelVendorsList]  
AS  
Begin  
SELECT   
SupplCode 'VendName',   
ISNULL(PostAddress01,'') 'Street1',   
ISNULL(PostAddress02,'') 'Street2',   
ISNULL(PostAddress03,'') 'City',   
ISNULL(PostAddress04,'') 'Province',   
LEFT(ISNULL(PostAddress05,''), 20) AS Postal,   
ISNULL(Telephone,'') 'Phone',   
ISNULL(CellPhone,'') 'CellPhone',   
ISNULL(Fax,'') 'Fax',   
ISNULL(Email,'') 'Email',   
ISNULL(ExemptRef,'') 'VAT',   
cast((case when Blocked=1 then 1  
else 0 end)as bit) 'Inactive',   
UpdatedOn,   
ISNULL(Contact,'') 'Contact',   
ISNULL(UserDefined01,'') 'Field1',   
ISNULL(UserDefined02,'') 'Field2',   
ISNULL(UserDefined03,'') 'Field3',   
ISNULL(UserDefined04,'') 'Field4',   
ISNULL(UserDefined05,'') 'Field5',   
    CASE   
        WHEN LEN(ISNULL(TaxCode,'')) = 1 THEN '0'   
        ELSE CAST(ISNULL(TaxCode, 0) AS NVARCHAR(MAX))  
    END AS 'TaxCode',  
CreateDate 'Since',   
ISNULL(SupplDesc,'') 'VendDesc',   
CASE WHEN bitEvo = 1 THEN ISNULL(TermsCode,'') ELSE CAST(ISNULL(PaymentTerms,'') AS varchar(20)) END AS Term,   
cast(ISNULL(CurrencyCode,0) as nvarchar(max)) 'Currency',   
cast(ISNULL(Category,0) as nvarchar(max)) 'VendCategory'  
FROM tblUtilityPervSupplierMaster WHERE ISNULL(SupplCode, '') <> '' ORDER BY SupplCode  
End  
GO

/****** Object:  StoredProcedure [dbo].[GetPaymentAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------------
CREATE PROCEDURE [dbo].[GetPaymentAccountsCY]  
(  
 @bitGLAccountAccess bit,  
 @bitShowAllCurrency bit,  
 @strUserName nvarchar(40),  
 @strCurrency nvarchar(6),  
 @strHomeCurrency nvarchar(6)  
)  
AS  
  
BEGIN  
  
if @bitShowAllCurrency = 1  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  FROM tblAccounts  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInventory = 0   
  AND tblAccounts.bitInactive = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.intAccType = 1 OR tblAccounts.intAccType = 2)   
  AND (tblAccounts.intAccClass = 0 OR tblAccounts.intAccClass = 1 OR tblAccounts.intAccClass = 2 OR tblAccounts.intAccClass = 4 OR tblAccounts.intAccClass = 9 OR tblAccounts.intAccClass = 10 OR tblAccounts.intAccClass = 11 OR tblAccounts.intAccClass = 12)  
  AND tblAccounts.bitLinkAPVendMast = 0 AND tblAccounts.bitLinkPrepayVendMast = 0 AND tblAccounts.bitLinkARCustMast = 0 AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccounts  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInventory = 0   
  AND tblAccounts.bitInactive = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2) AND (tblAccounts.intAccType = 1 OR tblAccounts.intAccType = 2) AND (tblAccounts.intAccClass = 0 OR tblAccounts.intAccClass = 1 OR tblAccounts.intAccClass = 2 OR tblAccounts.intAccClass = 4   
  OR tblAccounts.intAccClass = 9 OR tblAccounts.intAccClass = 10 OR tblAccounts.intAccClass = 11 OR tblAccounts.intAccClass = 12)  
  AND tblAccounts.bitLinkAPVendMast = 0 AND tblAccounts.bitLinkPrepayVendMast = 0 AND tblAccounts.bitLinkARCustMast = 0 AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccounts.intGLNumber  
  
 END  
  
END  
ELSE  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  FROM tblAccounts (NOLOCK)   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInventory = 0   
  AND tblAccounts.bitInactive = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.intAccType = 1 OR tblAccounts.intAccType = 2)   
  AND (tblAccounts.intAccClass = 0 OR tblAccounts.intAccClass = 1 OR tblAccounts.intAccClass = 2 OR tblAccounts.intAccClass = 4 OR tblAccounts.intAccClass = 9 OR tblAccounts.intAccClass = 10 OR tblAccounts.intAccClass = 11 OR tblAccounts.intAccClass = 12)    
  AND tblAccounts.bitLinkAPVendMast = 0 AND tblAccounts.bitLinkPrepayVendMast = 0 AND tblAccounts.bitLinkARCustMast = 0 AND tblAccounts.bitLinkDepositCustMast = 0  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccounts  (NOLOCK)  
  LEFT JOIN tblAccountsSec  (NOLOCK)ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInventory = 0   
  AND tblAccounts.bitInactive = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2) AND (tblAccounts.intAccType = 1 OR tblAccounts.intAccType = 2) AND (tblAccounts.intAccClass = 0 OR tblAccounts.intAccClass = 1 OR tblAccounts.intAccClass = 2 OR tblAccounts.intAccClass = 4   
  OR tblAccounts.intAccClass = 9 OR tblAccounts.intAccClass = 10 OR tblAccounts.intAccClass = 11 OR tblAccounts.intAccClass = 12)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccounts.bitLinkAPVendMast = 0 AND tblAccounts.bitLinkPrepayVendMast = 0 AND tblAccounts.bitLinkARCustMast = 0 AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccounts.intGLNumber  
  
 END  
  
END  
  
RETURN  
  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetPaymentAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetPaymentAccountsLY]  
(  
 @bitGLAccountAccess bit,  
 @bitShowAllCurrency bit,  
 @strUserName nvarchar(40),  
 @strCurrency nvarchar(6),  
 @strHomeCurrency nvarchar(6)  
)  
AS  
BEGIN  
  
if @bitShowAllCurrency = 1  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  FROM tblAccountsLY  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInventory = 0   
  AND tblAccountsLY.bitInactive = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccType = 1 OR tblAccountsLY.intAccType = 2)   
  AND (tblAccountsLY.intAccClass = 0 OR tblAccountsLY.intAccClass = 1 OR tblAccountsLY.intAccClass = 2 OR tblAccountsLY.intAccClass = 4 OR tblAccountsLY.intAccClass = 9 OR tblAccountsLY.intAccClass = 10 OR tblAccountsLY.intAccClass = 11 OR tblAccountsLY.intAccClass = 12)  
  AND tblAccountsLY.bitLinkAPVendMast = 0 AND tblAccountsLY.bitLinkPrepayVendMast = 0 AND tblAccountsLY.bitLinkARCustMast = 0 AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccountsLY  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInventory = 0   
  AND tblAccountsLY.bitInactive = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2) AND (tblAccountsLY.intAccType = 1 OR tblAccountsLY.intAccType = 2) AND (tblAccountsLY.intAccClass = 0 OR tblAccountsLY.intAccClass = 1 OR tblAccountsLY.intAccClass = 2 OR tblAccountsLY.intAccClass = 4 OR tblAccountsLY.intAccClass = 9 OR tblAccountsLY.intAccClass = 10 OR tblAccountsLY.intAccClass = 11 OR tblAccountsLY.intAccClass = 12)  
  AND tblAccountsLY.bitLinkAPVendMast = 0 AND tblAccountsLY.bitLinkPrepayVendMast = 0 AND tblAccountsLY.bitLinkARCustMast = 0 AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccountsLY.intGLNumber  
  
 END  
  
END  
ELSE  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  FROM tblAccountsLY (NOLOCK)   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInventory = 0   
  AND tblAccountsLY.bitInactive = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccType = 1 OR tblAccountsLY.intAccType = 2)   
  AND (tblAccountsLY.intAccClass = 0 OR tblAccountsLY.intAccClass = 1 OR tblAccountsLY.intAccClass = 2 OR tblAccountsLY.intAccClass = 4 OR tblAccountsLY.intAccClass = 9 OR tblAccountsLY.intAccClass = 10 OR tblAccountsLY.intAccClass = 11 OR tblAccountsLY.intAccClass = 12)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccountsLY.bitLinkAPVendMast = 0 AND tblAccountsLY.bitLinkPrepayVendMast = 0 AND tblAccountsLY.bitLinkARCustMast = 0 AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccountsLY  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInventory = 0   
  AND tblAccountsLY.bitInactive = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2) AND (tblAccountsLY.intAccType = 1 OR tblAccountsLY.intAccType = 2) AND (tblAccountsLY.intAccClass = 0 OR tblAccountsLY.intAccClass = 1 OR tblAccountsLY.intAccClass = 2 OR tblAccountsLY.intAccClass = 4 OR tblAccountsLY.intAccClass = 9 OR tblAccountsLY.intAccClass = 10 OR tblAccountsLY.intAccClass = 11 OR tblAccountsLY.intAccClass = 12)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccountsLY.bitLinkAPVendMast = 0 AND tblAccountsLY.bitLinkPrepayVendMast = 0 AND tblAccountsLY.bitLinkARCustMast = 0 AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccountsLY.intGLNumber  
  
 END  
  
END  
  
RETURN  
  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetPaymentDepositInformation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-------------------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetPaymentDepositInformation]
	@DocNumber AS NVARCHAR(50)
AS
BEGIN
	SELECT PP.strPaymentTypeName AS PaymentTypeName
	,PP.intGLNumber AS GLNumber
	,CASE 
		WHEN PP.bitIsForeign = 1
			THEN PP.decTotalF
		ELSE PP.decTotal
		END AS Total
	,TT.bitAccount AS IsAccount
	,TT.intDisplayOrder AS DisplayOrder
FROM tblPaymentPlanDeposit PP
INNER JOIN tblTenderTypes TT ON PP.strPaymentTypeName = TT.strName
WHERE PP.strInvDocID IN (@DocNumber)
END
GO
/****** Object:  StoredProcedure [dbo].[GetPaymentDetail]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvEntriesFromOrderDocDADT] ***********/

/*********** Start [GetPaymentDetail] ***********/
CREATE PROCEDURE [dbo].[GetPaymentDetail]
 (
	@DocumentNumber As NVARCHAR(50)
 )
AS
BEGIN
	SELECT PP.strPaymentTypeName AS PaymentTypeName,
       PP.intGLNumber AS GLNumber,
       PP.decTotal AS Total,
       TT.bitAccount AS IsAccount,
       TT.intDisplayOrder AS DisplayOrder
	FROM tblPaymentPlanDeposit PP
	INNER JOIN tblTenderTypes TT ON PP.strPaymentTypeName = TT.strName
	WHERE PP.strInvDocID IN (@DocumentNumber)
END
GO
/****** Object:  StoredProcedure [dbo].[GetPaymentList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetPaymentList]
(	
	@PaymentName NVARCHAR(20)
)
AS
BEGIN
	SELECT tblTenderTypes.bitAccount AS IsAccount
		,ISNULL(tblTenderTypes.intGLNumber, 0) AS GLNumber
		,tblAccounts.strDesc AS [Description]
		,bitCash as IsCash
	FROM tblTenderTypes
	LEFT OUTER JOIN tblAccounts ON tblTenderTypes.intGLNumber = tblAccounts.intGLNumber
	WHERE strName = @PaymentName
END
GO
/****** Object:  StoredProcedure [dbo].[GetPaymentPlanData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetPaymentPlanData] @CustName VARCHAR(20)
AS
BEGIN
	SELECT strInvDocID AS InvDocID
		,Total AS Total
		,InsuranceRate AS InsuranceRate
		,Deposit AS Deposit
		,InterestRate AS InterestRate
		,InstallmentPeriod AS InstallmentPeriod
		,InstallmentAmount AS InstallmentAmount
		,FirstInstallmentDate AS FirstInstallmentDate
		,LastInstallment AS LastInstallment
		,decFcPrtn AS FcPrtn
		,decFcLastPrtn AS FcLastPrtn
		,bitPmntContractAlive AS IsPmntContractAlive
		,decPenaltyInterestRate AS PenaltyInterestRate
		,strCurrency AS Currency
		,bitIsForeign AS IsForiegn
		,decExchange AS Exchange
		,TotalF AS TotalF
		,InsuranceRateF AS InsuranceRateF
		,DepositF AS DepositF
		,InstallmentAmountF AS InstallmentAmountF
		,LastInstallmentF AS LastInstallmentF
		,decFcPrtnF AS FcPrtnF
		,decFcLastPrtnF AS FcLastPrtnF
	FROM tblPaymentPlan
	WHERE bitPmntContractAlive = 1
		AND strInvDocId IN (
			SELECT CASE WHEN ISNULL(strInvDocID,'') = '' THEN ISNULL(strOrdDocID,'') ELSE strInvDocID END
			FROM tblCustTrans
			WHERE strCustName = @CustName
			)
END
GO
/****** Object:  StoredProcedure [dbo].[GetPaymentPlanDeposit]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetPaymentPlanDeposit]
(
	@DocumentNo NVARCHAR(50)
)
AS
BEGIN
	SELECT 
		strInvDocID AS InvoiceDocID, 			
		strPaymentTypeName AS PaymentTypeName,
		intGLNumber AS GLNumber,			
		decTotal AS	Total,		
		strReference AS Reference	
	FROM 
		tblPaymentPlanDeposit 
	WHERE 
		strInvDocID = @DocumentNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetPaymentsDirectAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetPaymentsDirectAccountsCY]  
(  
 @bitGLAccountAccess bit,  
 @bitShowAllCurrency bit,  
 @strUserName nvarchar(40),  
 @strCurrency nvarchar(6),  
 @strHomeCurrency nvarchar(6)  
)  
AS  
  
BEGIN  
  
if @bitShowAllCurrency = 1  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName   
  FROM tblAccounts  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE (tblAccounts.bitLinkAP = 0)   
  AND (tblAccounts.bitLinkDeposit = 0)   
  AND (tblAccounts.bitInactive = 0)   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.intAccType = 1 OR tblAccounts.intAccType = 2 OR tblAccounts.intAccType = 5)   
  AND (tblAccounts.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets (NOLOCK)))   
  AND (tblAccounts.intAccClass < 1 OR tblAccounts.intAccClass > 5)   
  AND (tblAccounts.bitIsLinkedAccount = 0)  
  AND tblAccounts.bitLinkAPVendMast = 0 AND tblAccounts.bitLinkPrepayVendMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccounts  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE (tblAccounts.bitLinkAP = 0)   
  AND (tblAccounts.bitLinkDeposit = 0)   
  AND (tblAccounts.bitInactive = 0)   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.intAccType = 1 OR tblAccounts.intAccType = 2 OR tblAccounts.intAccType = 5)   
  AND (tblAccounts.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets (NOLOCK)))   
  AND (tblAccounts.intAccClass < 1 OR tblAccounts.intAccClass > 5)   
  AND (tblAccounts.bitIsLinkedAccount = 0)  
  AND tblAccounts.bitLinkAPVendMast = 0 AND tblAccounts.bitLinkPrepayVendMast = 0  
  ORDER BY intAccType, tblAccounts.intGLNumber  
  
 END  
  
END  
ELSE  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName   
  FROM tblAccounts  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE (tblAccounts.bitLinkAP = 0)   
  AND (tblAccounts.bitLinkDeposit = 0)   
  AND (tblAccounts.bitInactive = 0)   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.intAccType = 1 OR tblAccounts.intAccType = 2 OR tblAccounts.intAccType = 5)   
  AND (tblAccounts.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets (NOLOCK)))   
  AND (tblAccounts.intAccClass < 1 OR tblAccounts.intAccClass > 5)   
  AND (tblAccounts.bitIsLinkedAccount = 0)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccounts.bitLinkAPVendMast = 0 AND tblAccounts.bitLinkPrepayVendMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccounts  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE (tblAccounts.bitLinkAP = 0)   
  AND (tblAccounts.bitLinkDeposit = 0)   
  AND (tblAccounts.bitInactive = 0)   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.intAccType = 1 OR tblAccounts.intAccType = 2 OR tblAccounts.intAccType = 5)   
  AND (tblAccounts.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets (NOLOCK)))   
  AND (tblAccounts.intAccClass < 1 OR tblAccounts.intAccClass > 5)   
  AND (tblAccounts.bitIsLinkedAccount = 0)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccounts.bitLinkAPVendMast = 0 AND tblAccounts.bitLinkPrepayVendMast = 0  
  ORDER BY intAccType, tblAccounts.intGLNumber  
  
 END  
  
END  
  
RETURN  
  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetPaymentsDirectAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetPaymentsDirectAccountsLY]  
(  
 @bitGLAccountAccess bit,  
 @bitShowAllCurrency bit,  
 @strUserName nvarchar(40),  
 @strCurrency nvarchar(6),  
 @strHomeCurrency nvarchar(6)  
)  
AS  
  
BEGIN  
  
if @bitShowAllCurrency = 1  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName   
  FROM tblAccountsLY  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE (tblAccountsLY.bitLinkAP = 0)   
  AND (tblAccountsLY.bitLinkDeposit = 0)   
  AND (tblAccountsLY.bitInactive = 0)   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccType = 1 OR tblAccountsLY.intAccType = 2 OR tblAccountsLY.intAccType = 5)   
  AND (tblAccountsLY.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountsets))   
  AND (tblAccountsLY.intAccClass < 1 OR tblAccountsLY.intAccClass > 5)   
  AND (tblAccountsLY.bitIsLinkedAccount = 0)  
  AND tblAccountsLY.bitLinkAPVendMast = 0 AND tblAccountsLY.bitLinkPrepayVendMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccountsLY  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE (tblAccountsLY.bitLinkAP = 0)   
  AND (tblAccountsLY.bitLinkDeposit = 0)   
  AND (tblAccountsLY.bitInactive = 0)   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccType = 1 OR tblAccountsLY.intAccType = 2 OR tblAccountsLY.intAccType = 5)   
  AND (tblAccountsLY.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountsets (NOLOCK)))   
  AND (tblAccountsLY.intAccClass < 1 OR tblAccountsLY.intAccClass > 5)   
  AND (tblAccountsLY.bitIsLinkedAccount = 0)  
  AND tblAccountsLY.bitLinkAPVendMast = 0 AND tblAccountsLY.bitLinkPrepayVendMast = 0  
  ORDER BY intAccType, tblAccountsLY.intGLNumber  
  
 END  
  
END  
ELSE  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName   
  FROM tblAccountsLY  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE (tblAccountsLY.bitLinkAP = 0)   
  AND (tblAccountsLY.bitLinkDeposit = 0)   
  AND (tblAccountsLY.bitInactive = 0)   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccType = 1 OR tblAccountsLY.intAccType = 2 OR tblAccountsLY.intAccType = 5)   
  AND (tblAccountsLY.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountsets (NOLOCK)))   
  AND (tblAccountsLY.intAccClass < 1 OR tblAccountsLY.intAccClass > 5)   
  AND (tblAccountsLY.bitIsLinkedAccount = 0)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccountsLY.bitLinkAPVendMast = 0 AND tblAccountsLY.bitLinkPrepayVendMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccountsLY  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE (tblAccountsLY.bitLinkAP = 0)   
  AND (tblAccountsLY.bitLinkDeposit = 0)   
  AND (tblAccountsLY.bitInactive = 0)   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccType = 1 OR tblAccountsLY.intAccType = 2 OR tblAccountsLY.intAccType = 5)   
  AND (tblAccountsLY.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountsets (NOLOCK)))   
  AND (tblAccountsLY.intAccClass < 1 OR tblAccountsLY.intAccClass > 5)   
  AND (tblAccountsLY.bitIsLinkedAccount = 0)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccountsLY.bitLinkAPVendMast = 0 AND tblAccountsLY.bitLinkPrepayVendMast = 0  
  ORDER BY intAccType, tblAccountsLY.intGLNumber  
  
 END  
  
END  
  
RETURN  
  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetPenaltySum]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************** End [spbiSalesQuotes] ****************/

/************End create stored procedure BI Tool****************/




/*********** Start create stored procedure Receipt ***********/

/*********** Start [GetPenaltySum] ***********/
CREATE PROCEDURE [dbo].[GetPenaltySum] (@CustName NVARCHAR(50))
AS
BEGIN
	SELECT SUM(t2.decAmount) AS Amount
	FROM tblcusttrans t1
	INNER JOIN tblcusttransdt t2 ON t1.lngCustTrID = t2.lngCustTrID
	WHERE t1.bitSettled = 0
		AND t1.strInvDepNumber LIKE ('%OVERDUE INTEREST (%')
		AND t1.strCustName = @CustName
	GROUP BY t1.lngCustTrID
END
GO
/****** Object:  StoredProcedure [dbo].[GetPerformanceIndicatorData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetPerformanceIndicatorData]

	@StartDate AS DATETIME
	,@FinishDate AS DATETIME
	,@CurrentUserName AS NVARCHAR(20) 

AS
BEGIN

	DECLARE @year AS INT
	DECLARE @month AS INT
	DECLARE @revanueAmount AS DECIMAL
	DECLARE @budget AS DECIMAL
	DECLARE @performanceIndicator DECIMAL


	SELECT 
		@year = DATEPART(yyyy, tblJournal.dteJournalDate),
		@month = DATEPART(m,tblJournal.dteJournalDate), 
		@revanueAmount = ISNULL(SUM(tblJournalEnt.decAmount),0) 
	FROM tblJournal (NOLOCK) 
	INNER JOIN tblJournalEnt (NOLOCK) ON tblJournal.lngJourID = tblJournalEnt.lngJourID
	INNER JOIN tblUsers (NOLOCK) ON tblJournal.strUserName = tblUsers.strUserName
	INNER JOIN tblSalesPersonsT (NOLOCK) ON tblUsers.strSalesName = tblSalesPersonsT.strSalesName 
	WHERE tblJournalEnt.intGLNumber 
		IN (SELECT intGLNumber FROM tblAccounts (NOLOCK) WHERE (intAccType = 4))
		AND tblUsers.strUserName = @CurrentUserName 
		AND tblJournal.dteJournalDate BETWEEN @StartDate AND @FinishDate 
	GROUP BY 
		DATEPART(yyyy, tblJournal.dteJournalDate), 
		DATEPART(m,tblJournal.dteJournalDate)
	ORDER BY 
		DATEPART(yyyy, tblJournal.dteJournalDate), 
		DATEPART(m,tblJournal.dteJournalDate)


		SELECT @budget = (CASE WHEN @month = 1 THEN tblSalesPersonsT.decPeriod11
							   WHEN @month = 2 THEN tblSalesPersonsT.decPeriod12
							   WHEN @month = 3 THEN tblSalesPersonsT.decPeriod1
							   WHEN @month = 4 THEN tblSalesPersonsT.decPeriod2
							   WHEN @month = 5 THEN tblSalesPersonsT.decPeriod3
							   WHEN @month = 6 THEN tblSalesPersonsT.decPeriod4
							   WHEN @month = 7 THEN tblSalesPersonsT.decPeriod5
							   WHEN @month = 8 THEN tblSalesPersonsT.decPeriod6
							   WHEN @month = 9 THEN tblSalesPersonsT.decPeriod7
							   WHEN @month = 10 THEN tblSalesPersonsT.decPeriod8
							   WHEN @month = 11 THEN tblSalesPersonsT.decPeriod9
							   WHEN @month = 12 THEN tblSalesPersonsT.decPeriod10
						  END   ) 
		FROM tblSalesPersonsT (NOLOCK) INNER JOIN tblUsers (NOLOCK) ON tblUsers.strSalesName = tblSalesPersonsT.strSalesName WHERE tblUsers.strUserName = @CurrentUserName
							
		
		set @performanceIndicator = case when (@budget = 0) then 0 else (@revanueAmount / @budget) * 100 end

		if @performanceIndicator > 100
		begin
			Set @performanceIndicator = 100
			select isnull(@performanceIndicator,0) AS PerformanceIndicator
		end
		else
		begin
			select Isnull(@performanceIndicator,0) AS PerformanceIndicator
		end
END

GO
/****** Object:  StoredProcedure [dbo].[GetPickedDataForMulSOSQDoc]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetOrderDocDTSerialForMulSOSQConversion] ***********/

/*********** Start [GetPickedDataForMulSOSQDoc] ***********/
CREATE PROCEDURE [dbo].[GetPickedDataForMulSOSQDoc]
(
	@DocID AS NVARCHAR(50)
)
AS
BEGIN
   SELECT intLineNo AS [LineNo],
       strPartNumber AS PartNumber,
       decQtyPicked AS QuantityPicked,
       strPkTkDocID AS PkTkDocID
FROM tblPickTicketsDT
WHERE strPkTkDocID IN
    (SELECT strPkTkDocID
     FROM tblPickTickets
     WHERE strOrdDocID = @DocID
       AND bitCleared = 0
       AND bitPicked = 1
       AND bitDA = 0)
ORDER BY strPartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetPickedItemsForDocConversion]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetOrderDocDTForLoadDoc] ***********/

/*********** Start [GetOrderDocDTForLoadDocConversion] ***********/
--CREATE PROCEDURE [dbo].[GetOrderDocDTForLoadDocConversion]
--(
--    @ExistingSOSQNumber AS NVARCHAR(50),
--	@GPCalcInvLevel AS INT,
--	@GPCalcLPP AS INT
--)
--AS
--BEGIN
--	SELECT tblOrderDocDT.*, ISNULL(tblOrderDocDTPrj.strProjNumber,'') AS strProjNumber, tblInv.bitInvSerialType, CASE WHEN tblInv.intType = 4 THEN tblInv.decStandardCost ELSE CASE @GPCalcLPP WHEN 0 THEN tblInv.decLastPPUnit WHEN 1 THEN tblInv.decStandardCost WHEN 2 THEN CASE @GPCalcInvLevel WHEN 0 THEN CASE WHEN tblInv.decLastPPUnit > ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblOrderDocDT.strLocation),0) THEN tblInv.decLastPPUnit ELSE CASE WHEN tblInv.decLastPPUnit < ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblOrderDocDT.strLocation),0) THEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblOrderDocDT.strLocation),0) ELSE CASE WHEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblOrderDocDT.strLocation),0) = 0 THEN tblInv.decLastPPUnit ELSE ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblOrderDocDT.strLocation),0) END END END WHEN 1 THEN CASE WHEN tblInv.decLastPPUnit > ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END),0) THEN tblInv.decLastPPUnit ELSE CASE WHEN tblInv.decLastPPUnit < ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END),0) THEN ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END),0) ELSE CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0 THEN tblInv.decLastPPUnit ELSE ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END),0) END END END ELSE tblInv.decLastPPUnit END WHEN 3 THEN CASE @GPCalcInvLevel WHEN 0 THEN CASE WHEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblOrderDocDT.strLocation),0) = 0 THEN tblInv.decLastPPUnit ELSE ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblOrderDocDT.strLocation),0) END WHEN 1 THEN CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0 THEN tblInv.decLastPPUnit ELSE ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END),0) END ELSE tblInv.decLastPPUnit END ELSE tblInv.decLastPPUnit END END AS decGPCalc, tblInv.bitVoucherEnabled, ISNULL(tblInv.strVoucherCode, '') AS strVoucherCode, tblInv.strDimProCode,tblInv.strUnitOfMeasure, ISNULL(tblInvSerialTypes.bitDimensionExist,0) AS bitDimensionExist FROM tblOrderDocDT INNER JOIN tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType WHERE tblOrderDocDT.strOrdDocID = @ExistingSOSQNumber AND tblOrderDocDT.decQtyRemaining <> 0 ORDER BY tblOrderDocDT.intLineNo
--END   
--GO
/*********** End [GetOrderDocDTForLoadDocConversion] ***********/

/*********** Start [GetPickedItemsForDocConversion] ***********/
CREATE PROCEDURE [dbo].[GetPickedItemsForDocConversion]
(
	@DocID AS NVARCHAR(50)
)
AS
BEGIN
	SELECT intLineNo AS [LineNo]
		,strPartNumber AS PartNumber
		,SUM(decQtyPicked) AS QuantityPicked
		,STUFF((
				SELECT ',' + A.strPkTkDocID
				FROM (
					SELECT intLineNo
						,strPartNumber
						,strPkTkDocID
					FROM tblPickTickets
					WHERE strOrdDocID = @DocID
						AND bitCleared = 0
						AND bitPicked = 1
						AND bitDA = 0
					) A
				WHERE A.intLineNo = B.intLineNo
					AND A.strPartNumber = B.strPartNumber
				FOR XML PATH('')
				), 1, 1, '') AS PkTkDocID
	FROM tblPickTicketsDT B
	WHERE strPkTkDocID IN (
			SELECT strPkTkDocID
			FROM tblPickTickets
			WHERE strOrdDocID = @DocID
				AND bitCleared = 0
				AND bitPicked = 1
				AND bitDA = 0
			)
	GROUP BY intLineNo
		,strPartNumber
	ORDER BY intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetPickTicketData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------------------'
CREATE PROCEDURE [dbo].[GetPickTicketData] (
	@DocumentType INT
	,@DeliveryMethod VARCHAR(100)
	,@Location VARCHAR(20)
	,@Department INT
	,@IsBPToolsMode BIT
	,@UserName AS NVARCHAR(100)
	)
AS
BEGIN
	IF (@DocumentType = 0)
	BEGIN
		SELECT strOrdDocID AS DocumentNumber
			,dteJournalDate AS JournalDate
			,dteRequired AS [Required]
			,strUserName AS UserName
			,tblCustomers.strCustName AS CustomerNumber
			,tblCustomers.strCustDesc AS CustomerName
			,strReference AS Reference
			,CASE 
				WHEN (
						SELECT COUNT(Z.strLocation)
						FROM (
							SELECT strLocation
							FROM tblOrderDocDT
							WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
							GROUP BY strLocation
							) Z
						) > 1
					THEN '<MULTIPLE>'
				ELSE ISNULL((
							SELECT strLocation
							FROM tblOrderDocDT
							WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
							GROUP BY strLocation
							), '')
				END AS Location
			,ISNULL((
					SELECT CAST(intDept AS NVARCHAR(4)) + ' ' + strDesc
					FROM tblDepartments
					WHERE (intDept = tblOrderDoc.intDept)
					), '') AS Department
			,(
				SELECT COUNT(strOrdDocID)
				FROM tblOrderDocDT
				WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
					AND bitDelCost = 0
					AND bitDiscountTax = 0
				) AS TotalItems
			,(
				SELECT COUNT(strOrdDocID)
				FROM tblOrderDocDT
				WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
					AND (decQtyRemaining > 0)
					AND bitDelCost = 0
				) AS ItemsRemain
			,'New' AS PickStatus
		FROM tblOrderDoc
		INNER JOIN tblCustomers ON tblCustomers.strCustName = tblOrderDoc.strCustName
		WHERE (
				@Location = '%%'
				OR ISNULL((
						SELECT COUNT(strLocation)
						FROM tblOrderDocDT
						WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
							AND (strLocation = @Location)
						GROUP BY strLocation
						), 0) > 0
				)
			AND (intDocType = 1)
			AND (bitCleared = 0)
			AND (decTotal > 0)
			AND (
				strOrdDocID NOT IN (
					SELECT strOrdDocID
					FROM tblPickTickets
					WHERE bitCleared = 0
					)
				)
			AND (
				LEN(@DeliveryMethod) = 0
				OR tblOrderDoc.strDelMethodCode LIKE @DeliveryMethod
				)
			AND (
				@Department = 0
				OR tblOrderDoc.intDept = @Department
				)
			AND (
				@IsBPToolsMode = 1
				OR tblCustomers.strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
		ORDER BY strOrdDocID DESC
	END
	ELSE IF (@DocumentType = 1)
		SELECT strOrdDocID AS DocumentNumber
			,dteJournalDate AS JournalDate
			,dteRequired AS [Required]
			,strUserName AS UserName
			,tblCustomers.strCustName AS CustomerNumber
			,tblCustomers.strCustDesc AS CustomerName
			,strReference AS Reference
			,CASE 
				WHEN (
						SELECT COUNT(Z.strLocation)
						FROM (
							SELECT strLocation
							FROM tblOrderDocDT
							WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
							GROUP BY strLocation
							) Z
						) > 1
					THEN '<MULTIPLE>'
				ELSE ISNULL((
							SELECT strLocation
							FROM tblOrderDocDT
							WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
							GROUP BY strLocation
							), '')
				END AS Location
			,ISNULL((
					SELECT CAST(intDept AS NVARCHAR(4)) + ' ' + strDesc
					FROM tblDepartments
					WHERE (intDept = tblOrderDoc.intDept)
					), '') AS Department
			,(
				SELECT COUNT(strOrdDocID)
				FROM tblOrderDocDT
				WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
					AND bitDelCost = 0
					AND bitDiscountTax = 0
				) AS TotalItems
			,(
				SELECT COUNT(strOrdDocID)
				FROM tblOrderDocDT
				WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
					AND (decQtyRemaining > 0)
					AND bitDelCost = 0
				) AS ItemsRemain
			,'Not Picked' AS PickStatus
		FROM tblOrderDoc
		INNER JOIN tblCustomers ON tblCustomers.strCustName = tblOrderDoc.strCustName
		WHERE (
				@Location = '%%'
				OR ISNULL((
						SELECT COUNT(strLocation)
						FROM tblOrderDocDT
						WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
							AND (strLocation = @Location)
						GROUP BY strLocation
						), 0) > 0
				)
			AND (intDocType = 1)
			AND (bitCleared = 0)
			AND (decTotal > 0)
			AND (
				strOrdDocID IN (
					SELECT strOrdDocID
					FROM tblPickTickets
					WHERE bitCleared = 0
						AND bitPicked = 0
					)
				)
			AND (
				LEN(@DeliveryMethod) = 0
				OR tblOrderDoc.strDelMethodCode LIKE @DeliveryMethod
				)
			AND (
				@Department = 0
				OR tblOrderDoc.intDept = @Department
				)
			AND (
				@IsBPToolsMode = 1
				OR tblCustomers.strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
		ORDER BY strOrdDocID DESC
	ELSE IF (@DocumentType = 2)
		SELECT strOrdDocID AS DocumentNumber
			,dteJournalDate AS JournalDate
			,dteRequired AS [Required]
			,strUserName AS UserName
			,tblCustomers.strCustName CustomerNumber
			,tblCustomers.strCustDesc AS CustomerName
			,strReference AS Reference
			,CASE 
				WHEN (
						SELECT COUNT(Z.strLocation)
						FROM (
							SELECT strLocation
							FROM tblOrderDocDT
							WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
							GROUP BY strLocation
							) Z
						) > 1
					THEN '<MULTIPLE>'
				ELSE ISNULL((
							SELECT strLocation
							FROM tblOrderDocDT
							WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
							GROUP BY strLocation
							), '')
				END AS Location
			,ISNULL((
					SELECT CAST(intDept AS NVARCHAR(4)) + ' ' + strDesc
					FROM tblDepartments
					WHERE (intDept = tblOrderDoc.intDept)
					), '') AS Department
			,(
				SELECT COUNT(strOrdDocID)
				FROM tblOrderDocDT
				WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
					AND bitDelCost = 0
					AND bitDiscountTax = 0
				) AS TotalItems
			,(
				SELECT COUNT(strOrdDocID)
				FROM tblOrderDocDT
				WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
					AND (decQtyRemaining > 0)
					AND bitDelCost = 0
				) AS ItemsRemain
			,'Picked' AS PickStatus
		FROM tblOrderDoc
		INNER JOIN tblCustomers ON tblCustomers.strCustName = tblOrderDoc.strCustName
		WHERE (
				@Location = '%%'
				OR ISNULL((
						SELECT COUNT(strLocation)
						FROM tblOrderDocDT
						WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
							AND (strLocation = @Location)
						GROUP BY strLocation
						), 0) > 0
				)
			AND (intDocType = 1)
			AND (bitCleared = 0)
			AND (decTotal > 0)
			AND (
				strOrdDocID IN (
					SELECT strOrdDocID
					FROM tblPickTickets
					WHERE bitCleared = 0
						AND bitPicked = 1
					)
				)
			AND (
				LEN(@DeliveryMethod) = 0
				OR tblOrderDoc.strDelMethodCode LIKE @DeliveryMethod
				)
			AND (
				@Department = 0
				OR tblOrderDoc.intDept = @Department
				)
			AND (
				@IsBPToolsMode = 1
				OR tblCustomers.strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
		ORDER BY strOrdDocID DESC
END
GO
/****** Object:  StoredProcedure [dbo].[GetPickTicketDTData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [PickTicketDTData] ***********/

/*********** Start [GetPickTicketDTData] ***********/
CREATE PROCEDURE [dbo].[GetPickTicketDTData]
(	@DocumentID as nvarchar(50),
	@IsDA as bit
)
AS
BEGIN	
		SELECT intLineNo AS [LineNo]
			,strPartNumber AS PartNumber
			,SUM(decQtyPicked) AS QuantityPicked
			,STUFF((
					SELECT ',' + A.strPkTkDocID
					FROM (
						SELECT intLineNo
							,strPartNumber
							,strPkTkDocID
						FROM tblPickTickets
						WHERE strOrdDocID = @DocumentID
							AND bitPicked = 1 AND
							(@IsDA = 1 OR bitDA = 0)
						) A
					WHERE A.intLineNo = B.intLineNo
						AND A.strPartNumber = B.strPartNumber
					FOR XML PATH('')
					), 1, 1, '') AS PkTkDocID
		FROM tblPickTicketsDT B
		WHERE strPkTkDocID IN (
				SELECT strPkTkDocID
				FROM tblPickTickets
				WHERE strOrdDocID = @DocumentID
					AND bitPicked = 1 AND
					(@IsDA = 1 OR bitDA = 0)					
				)
		GROUP BY intLineNo
			,strPartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetPickTicketsBinData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCollectionLettersList] ***********/

/*********** Start [GetPickTicketsBinData] ***********/
CREATE PROCEDURE [dbo].[GetPickTicketsBinData]
(
	@DocNumber AS NVARCHAR(50),
	@LineNo AS INT
)
AS
BEGIN
	SELECT lngBinId AS BinId
	,tblPickTicketsDTBin.decQty AS Quantity
	,strBinCode AS BinCode
FROM tblPickTicketsDT
INNER JOIN tblPickTicketsDTBin ON tblPickTicketsDT.strPkTkDocID = tblPickTicketsDTBin.strPkTkDocID
	AND tblPickTicketsDT.intLineNo = tblPickTicketsDTBin.intLineNo
INNER JOIN tblInvLocBin ON tblInvLocBin.lngId = tblPickTicketsDTBin.lngBinId
WHERE (
		tblPickTicketsDT.strPkTkDocID IN (
			SELECT Value
			FROM dbo.fnSplitStringAsTable(@DocNumber, ',')
			)
		)
	AND tblPickTicketsDT.intLineNo = @LineNo
ORDER BY tblPickTicketsDTBin.lngID
END
GO
/****** Object:  StoredProcedure [dbo].[GetPickTicketsData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*************End [GetInventorySubCategory]*******************************/

/*****************Start [GetPickTicketsData]****************************/
CREATE PROCEDURE [dbo].[GetPickTicketsData]
(
	@DocumentNumber as nvarchar(50) 
)
AS
BEGIN
	SELECT tblPickTicketsDT.strPartNumber AS PartNumber
	,tblPickTicketsDT.strLocation AS [Location]
	,tblPickTicketsDT.decQtyPicked AS QuantityPicked
	,tblPickTicketsDT.intLineNo AS [LineNo]
	FROM tblPickTickets
	INNER JOIN tblPickTicketsDT ON tblPickTickets.strPkTkDocID = tblPickTicketsDT.strPkTkDocID
	INNER JOIN tblInvTracking ON tblPickTickets.strPkTkDocID = tblInvTracking.strSource
	AND tblPickTickets.lngInvTrackID = tblInvTracking.lngInvTrackID
	WHERE (tblPickTickets.strPkTkDocID = @DocumentNumber)
	ORDER BY tblPickTicketsDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetPickTicketsDetailSerialData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetPickTicketsDetailSerialData]
(
	@DocumentNumber AS NVARCHAR(100),
	@IsPickTicket AS BIT = NULL
)
AS
BEGIN
	SELECT tblPickTicketsDTSerial.strPkTkDocID AS PkTkDocID
	,tblPickTicketsDTSerial.intLineNo AS [LineNo]
	,tblPickTicketsDTSerial.strSerialNumber AS SerialNumber
	,tblPickTicketsDTSerial.decQty AS Quantity
	,tblPickTicketsDTSerial.strUnit AS Unit
	,tblPickTicketsDTSerial.lngID AS ID
	,tblPickTicketsDTSerial.bitExpiryDate AS IsExpiryDate
	,ISNULL(tblPickTicketsDTSerial.dteExpiryDate, 0) AS ExpiryDate
	,tblPickTicketsDTSerial.intSerialLotType AS SerialLotType
	,ISNULL(tblPickTicketsDTSerial.lngBinID, ISNULL(tblInvSerialExt.lngBinID, 0)) AS BinId --For Mobile
	,ISNULL(tblPickTicketsDTSerial.lngBinID, ISNULL(tblInvSerialExt.lngBinID, 0)) AS BinIDLong	
	,CAST(CASE 
			WHEN tblPickTicketsDTSerial.intSerialLotType = 0
				THEN ISNULL(tblInvSerialExt.bitDimensionExist, 0)
			ELSE 0
			END AS BIT) AS IsDimensionExists
	,CASE 
		WHEN tblPickTicketsDTSerial.intSerialLotType = 0
			THEN ISNULL(tblInvSerialExt.strDimension, '')
		ELSE ''
		END AS Dimension
	,(
		SELECT strBinCode
		FROM tblInvLocBin
		--WHERE lngID = ISNULL(tblPickTicketsDTSerial.lngBinID, ISNULL(tblInvSerialExt.lngBinID, 0))
		 WHERE (((@IsPickTicket IS NULL OR @IsPickTicket = 1) AND lngID = ISNULL(tblPickTicketsDTSerial.lngBinID,0)) OR lngID = ISNULL(tblPickTicketsDTSerial.lngBinID, ISNULL(tblInvSerialExt.lngBinID, 0)))
		) AS BinCode
	,tblPickTicketsDT.strPartNumber AS PartNumber
	,CASE WHEN intSerialLotType = 0 THEN ISNULL((SELECT CAST(tblInvSerialExt.intStatus AS CHAR(1)) + tblInvSerialExt.strDocID FROM tblInvSerialExt WHERE tblInvSerialExt.strPartNumber = tblPickTicketsDT.strPartNumber AND tblInvSerialExt.strSerialNumber = tblPickTicketsDTSerial.strSerialNumber ), '') ELSE '' END AS LogicalData
FROM tblPickTicketsDT
INNER JOIN tblPickTicketsDTSerial ON tblPickTicketsDT.strPkTkDocID = tblPickTicketsDTSerial.strPkTkDocID
	AND tblPickTicketsDT.intLineNo = tblPickTicketsDTSerial.intLineNo
LEFT JOIN tblInvSerialExt ON tblPickTicketsDT.strPartNumber = tblInvSerialExt.strPartNumber
	AND tblPickTicketsDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
WHERE tblPickTicketsDTSerial.strPkTkDocID = @DocumentNumber
ORDER BY tblPickTicketsDTSerial.lngID
END
GO
/****** Object:  StoredProcedure [dbo].[GetPickTicketsDTBinForDocConversion]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetPickTicketsDTBinForDocConversion]
	@SQDocNumber varchar(50),
	@SQLineNo int
AS
BEGIN
	SET NOCOUNT ON;
	SELECT lngBinId AS BinID,tblPickTicketsDTBin.decQty AS Quantity,strBinCode AS BinCode
	,tblPickTicketsDTBin.intLineNo AS LineNumber -- For Mobile
	,tblPickTicketsDTBin.bitPickingBin AS IsPickingBin	
	--,tblPickTicketsDTBin.lngID AS IsPickingBin 
	FROM tblPickTicketsDT INNER JOIN tblPickTicketsDTBin ON tblPickTicketsDT.strPkTkDocID = tblPickTicketsDTBin.strPkTkDocID AND tblPickTicketsDT.intLineNo = tblPickTicketsDTBin.intLineNo
 INNER JOIN tblInvLocBin ON tblInvLocBin.lngId=tblPickTicketsDTBin.lngBinId WHERE (tblPickTicketsDT.strPkTkDocID IN (SELECT Value From dbo.fnSplitStringAsTable(@SQDocNumber,','))) 
 AND tblPickTicketsDT.intLineNo = @SQLineNo ORDER BY tblPickTicketsDTBin.lngID
END
GO
/****** Object:  StoredProcedure [dbo].[GetPickTicketsDTData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetOrderDocDTSerialData] ***********/

/*********** Start [GetPickTicketsDTData] ***********/   
CREATE PROCEDURE [dbo].[GetPickTicketsDTData]
(
	@DocID NVARCHAR(50)
)
AS
BEGIN
	SELECT strPartNumber As PartNumber,
       SUM(decQtyPicked) As QuantityPicked
	FROM tblPickTicketsDT
	WHERE strPkTkDocID IN
	    (SELECT strPkTkDocID
	     FROM tblPickTickets
	     WHERE strOrdDocID = @DocID
	       AND bitCleared = 0
	       AND bitPicked = 1
	       AND bitDA = 0)
	GROUP BY strPartNumber
	ORDER BY strPartNumber
END
GO


/*********** Start [GetPickTicketsDTSerialForDocConversion] ***********/
CREATE PROCEDURE [dbo].[GetPickTicketsDTSerialForDocConversion]  
(  
 @DocNumber AS NVARCHAR(50),  
 @PartNumber AS NVARCHAR(50),  
 @Location AS NVARCHAR(50),  
 @LineNo AS NVARCHAR(50)  
)  
AS  
BEGIN  
 SELECT   
      
    tblPickTicketsDTSerial.strPkTkDocID AS PkTkDocID,  
    tblPickTicketsDTSerial.intLineNo AS [LineNo],  
    tblPickTicketsDTSerial.strSerialNumber AS SerialNumber,  
    tblPickTicketsDTSerial.decQty AS Quantity,  
    tblPickTicketsDTSerial.strUnit AS Unit,  
    tblPickTicketsDTSerial.lngID AS ID,  
    tblPickTicketsDTSerial.bitExpiryDate AS IsExpiryDate,  
    tblPickTicketsDTSerial.dteExpiryDate AS ExpiryDate,  
    tblPickTicketsDTSerial.intSerialLotType AS SerialLotType,  
    tblPickTicketsDTSerial.lngBinID AS BinId, 
	tblPickTicketsDTSerial.lngBinID AS BinIDLong,
       CASE  
           WHEN tblPickTicketsDTSerial.intSerialLotType = 1 THEN ISNULL(  
                                                                          (SELECT SUM(tblInvLotExt.decQty)  
                                                                           FROM tblInvLotExt  (NOLOCK)  
                                                                           WHERE tblInvLotExt.strPartNumber = @PartNumber  
                                                                             AND tblInvLotExt.strLotNumber = tblPickTicketsDTSerial.strSerialNumber  
                                                                             AND tblInvLotExt.strLocName = @Location),0)  
           ELSE ISNULL(  
                         ( SELECT SUM(tblInvSerialExt.decQty)  
                          FROM tblInvSerialExt   (NOLOCK) 
                          WHERE tblInvSerialExt.strPartNumber = @PartNumber  
                            AND tblInvSerialExt.strSerialNumber = tblPickTicketsDTSerial.strSerialNumber  
                            AND tblInvSerialExt.strLocName = @Location),0)  
       END AS SerialLotQty,  
       ISNULL(  
                (SELECT tblInvSerialTypes.bitMethod  
                 FROM tblInv   (NOLOCK) 
                 INNER JOIN tblInvSerialTypes  (NOLOCK) ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType  
                 WHERE tblInv.strPartNumber = @PartNumber),CAST(0 As BIT)) AS IsMethod,  
       CASE  
           WHEN tblPickTicketsDTSerial.intSerialLotType = 0 THEN CAST(ISNULL(tblInvSerialExt.bitDimensionExist,0) AS bit)
           ELSE CAST(0 As BIT)  
       END AS IsDimensionExists,  
       CASE  
           WHEN tblPickTicketsDTSerial.intSerialLotType = 0 THEN ISNULL(tblInvSerialExt.strDimension,'')  
           ELSE ''  
       END AS Dimension  
    ,(  
  SELECT strBinCode  
  FROM tblInvLocBin   (NOLOCK) 
  WHERE lngID = tblPickTicketsDTSerial.lngBinID  
  ) AS BinCode  
 FROM tblPickTicketsDT  (NOLOCK)
 INNER JOIN tblPickTicketsDTSerial  (NOLOCK) ON tblPickTicketsDT.strPkTkDocID = tblPickTicketsDTSerial.strPkTkDocID  
 AND tblPickTicketsDT.intLineNo = tblPickTicketsDTSerial.intLineNo  
 LEFT JOIN tblInvSerialExt  (NOLOCK) ON tblPickTicketsDT.strPartNumber = tblInvSerialExt.strPartNumber  
 AND tblPickTicketsDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber  
 WHERE (tblPickTicketsDTSerial.strPkTkDocID IN  
          (SELECT *  
           FROM fnSplitStringAsTable(@DocNumber, ',')))  
   AND tblPickTicketsDTSerial.intLineNo = @LineNo  
 ORDER BY tblPickTicketsDTSerial.lngID  
END
GO
/****** Object:  StoredProcedure [dbo].[GetPickTicketsReportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End WorkShop Report [ReportServiceableItemDoc]****************************/

/*****************Start  [GetPickTicketsReportData]****************************/

CREATE PROCEDURE [dbo].[GetPickTicketsReportData] @SQDocNumber AS VARCHAR(250) = NULL
AS
BEGIN
	SELECT [strPkTkDocID] AS [PkTkDocID]
		,[strOrdDocID] AS [OrdDocID]
		,[dteSystemDate] AS [SystemDate]
		,CONVERT(DATE, dteJournalDate) AS [JournalDate]
		,CONVERT(DATE, dteRequired) AS [Required]
		,[strUserName] AS [UserName]
		,[strCustName] AS [CustName]
		,[strSoldTo] AS [SoldTo]
		,[strShipTo] AS [ShipTo]
		,[strReference] AS [Reference]
		,[strNotes] AS [Notes]
		,[bitPrinted] AS [Printed]
		,[bitPicked] AS [Picked]
		,[dtePicked] AS [PickedDate]
		,[bitCleared] AS [Cleared]
		,[strSalesName] AS [SalesName]
		,[strAddInfo] AS [AddInfo]
		,[strField1] AS [Field1]
		,[strField2] AS [Field2]
		,[strField3] AS [Field3]
		,[strField4] AS [Field4]
		,[strField5] AS [Field5]
		,[strField6] AS [Field6]
		,[strField7] AS [Field7]
		,[strField8] AS [Field8]
		,[strField9] AS [Field9]
		,[strField10] AS [Field10]
		,[strField11] AS [Field11]
		,[strField12] AS [Field12]
		,[strPTNote] AS [PTNote]
		,[strDelMethodCode] AS [DelMethodCode]
		,[bitDA] AS [DA]
		,[lngInvTrackId] AS [InvTrackId]
	FROM [dbo].[tblPickTickets](NOLOCK)
	WHERE strPkTkDocID = @SQDocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetPODInvoiceDocList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetPODInvoiceDocList]    Script Date: 13-01-2020 07:30:00 AM ******/
CREATE PROCEDURE [dbo].[GetPODInvoiceDocList]
 @DocumentNumber VARCHAR(50)     
AS       
  BEGIN       
      SELECT strinvdocid               AS InvDocID,       
             tblinvoicedoc.strusername AS UserName,       
             tblinvoicedoc.strcustname AS CustName,       
             tblcustomers.strcustdesc  AS CustomerDescription,       
             dectotal                  AS Total,       
             dtejournaldate            AS JournalDate,          
     case when LEN(tbldocuments.strDocumentNumber) > 0   
     then 1  
     else 0 end AS IsPODCaptured    
      FROM   tblinvoicedoc       
             LEFT JOIN tblcustomers ON tblinvoicedoc.strcustname = tblcustomers.strcustname   
    LEFT JOIN tbldocuments ON tblinvoicedoc.strinvdocid = tbldocuments.strDocumentNumber  
       where tblinvoicedoc.strinvdocid = @DocumentNumber  
     union    
     SELECT strOrdDADocID               AS InvDocID,       
             tblOrderDocDA.strusername  AS UserName,       
             tblOrderDocDA.strcustname AS CustName,       
             tblcustomers.strcustdesc  AS CustomerDescription,       
             dectotal                  AS Total,       
             dtejournaldate            AS JournalDate,     
    case when LEN(tbldocuments.strDocumentNumber) > 0  
      then 1  
     else 0 end AS IsPODCaptured  
      FROM   tblOrderDocDA       
             LEFT JOIN tblcustomers       
                    ON tblOrderDocDA.strcustname = tblcustomers.strcustname    
    LEFT JOIN tbldocuments ON tblOrderDocDA.strOrdDADocID = tbldocuments.strDocumentNumber  
     where tblOrderDocDA.strOrdDADocID = @DocumentNumber  
END
GO
/****** Object:  StoredProcedure [dbo].[GetPODManagementReportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [CustomersSearch] ***********/

/*********** Start [GetPODManagementReportData]***********/

---------------------------------
CREATE PROCEDURE [dbo].[GetPODManagementReportData] (
	@CustName NVARCHAR(MAX) = NULL,
	@OptionIndex INT = 0,
	@StartDate DATETIME = NULL,
	@FinishDate DATETIME = NULL
)
AS
BEGIN
	SELECT A.DocumentType,
		A.dteJournalDate,
		CASE WHEN A.strInvDocID LIKE 'DA-%' THEN '' ELSE A.strInvDocID END AS strInvDocID,
		A.strCustName,
		B.strCustDesc AS strCustDesc,
		CASE WHEN A.bitIsForeign = 1 THEN A.decTotalF ELSE A.decTotal END AS Amount,
		A.PODReceived,
		A.strDeliveryAdvice,
		A.strInvDocID AS strInvDADoc
	INTO #tmpPOD
	FROM vwRptPOD A
	INNER JOIN tblCustomers B ON B.strCustName = A.strCustName
	WHERE (@CustName IS NULL OR A.strCustName IN (SELECT Value FROM [fnSplitStringAsTable](@CustName, ',')))
		AND (@StartDate IS NULL OR A.dteJournalDate BETWEEN @StartDate AND @FinishDate)
		AND (
			@OptionIndex = 0 OR
			(@OptionIndex = 1 AND A.DocumentType = 'Delivery Advice') OR
			(@OptionIndex = 2 AND A.PODReceived = 'N/A') OR
			(@OptionIndex = 3 AND A.PODReceived = 'N') OR
			(@OptionIndex = 4 AND A.strInvDocID LIKE 'IN-%')
		)
	
	SELECT DocumentType,
		dteJournalDate,
		strInvDocID,
		strCustName,
		strCustDesc,
		Amount,
		PODReceived,
		strDeliveryAdvice,
		strInvDADoc
	FROM #tmpPOD
	
	DROP TABLE #tmpPOD
END
GO
/****** Object:  StoredProcedure [dbo].[GetPOSChangeUsers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetPOSChangeUsers]    Script Date: 2020-06-10 ******/
CREATE PROCEDURE [dbo].[GetPOSChangeUsers] 
AS
BEGIN
	SELECT strUserName FROM tblUsers WHERE (blnIsAdmin = 1 OR (blnPOS = 1 OR blnPOSCash = 1))
END
GO
/****** Object:  StoredProcedure [dbo].[GetPOSClearingAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------
CREATE PROCEDURE [dbo].[GetPOSClearingAccountsCY]  
(  
 @bitGLAccountAccess bit,  
 @bitShowAllCurrency bit,  
 @strUserName nvarchar(40),  
 @strCurrency nvarchar(6),  
 @strHomeCurrency nvarchar(6)  
)  
AS  
  
BEGIN  
  
if @bitShowAllCurrency = 1  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName   
  FROM tblAccounts  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInventory = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.intAccClass = 0 OR tblAccounts.intAccClass = 1 OR tblAccounts.intAccClass = 2)   
  AND (tblAccounts.bitInactive = 0)  
  AND tblAccounts.bitLinkAPVendMast = 0  AND tblAccounts.bitLinkPrepayVendMast = 0 AND tblAccounts.bitLinkARCustMast = 0 AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccounts  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInventory = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.intAccClass = 0 OR tblAccounts.intAccClass = 1 OR tblAccounts.intAccClass = 2)   
  AND (tblAccounts.bitInactive = 0)  
  AND tblAccounts.bitLinkAPVendMast = 0  AND tblAccounts.bitLinkPrepayVendMast = 0 AND tblAccounts.bitLinkARCustMast = 0 AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccounts.intGLNumber  
  
 END  
  
END  
ELSE  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName   
  FROM tblAccounts  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInventory = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.intAccClass = 0 OR tblAccounts.intAccClass = 1 OR tblAccounts.intAccClass = 2)   
  AND (tblAccounts.bitInactive = 0)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccounts.bitLinkAPVendMast = 0  AND tblAccounts.bitLinkPrepayVendMast = 0 AND tblAccounts.bitLinkARCustMast = 0 AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccounts  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInventory = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.intAccClass = 0 OR tblAccounts.intAccClass = 1 OR tblAccounts.intAccClass = 2)   
  AND (tblAccounts.bitInactive = 0)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccounts.bitLinkAPVendMast = 0  AND tblAccounts.bitLinkPrepayVendMast = 0 AND tblAccounts.bitLinkARCustMast = 0 AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccounts.intGLNumber  
  
 END  
  
END  
  
RETURN  
  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetPOSClearingAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetPOSClearingAccountsLY]  
(  
 @bitGLAccountAccess bit,  
 @bitShowAllCurrency bit,  
 @strUserName nvarchar(40),  
 @strCurrency nvarchar(6),  
 @strHomeCurrency nvarchar(6)  
)  
AS  
  
BEGIN  
  
if @bitShowAllCurrency = 1  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName   
  FROM tblAccountsLY  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInventory = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccClass = 0 OR tblAccountsLY.intAccClass = 1 OR tblAccountsLY.intAccClass = 2)   
  AND (tblAccountsLY.bitInactive = 0)  
  AND tblAccountsLY.bitLinkAPVendMast = 0   AND tblAccountsLY.bitLinkPrepayVendMast = 0   AND tblAccountsLY.bitLinkARCustMast = 0   AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccountsLY  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInventory = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccClass = 0 OR tblAccountsLY.intAccClass = 1 OR tblAccountsLY.intAccClass = 2)   
  AND (tblAccountsLY.bitInactive = 0)  
  AND tblAccountsLY.bitLinkAPVendMast = 0   AND tblAccountsLY.bitLinkPrepayVendMast = 0   AND tblAccountsLY.bitLinkARCustMast = 0   AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccountsLY.intGLNumber  
  
 END  
  
END  
ELSE  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName   
  FROM tblAccountsLY  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInventory = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccClass = 0 OR tblAccountsLY.intAccClass = 1 OR tblAccountsLY.intAccClass = 2)   
  AND (tblAccountsLY.bitInactive = 0)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccountsLY.bitLinkAPVendMast = 0   AND tblAccountsLY.bitLinkPrepayVendMast = 0   AND tblAccountsLY.bitLinkARCustMast = 0   AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccountsLY (NOLOCK)   
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInventory = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccClass = 0 OR tblAccountsLY.intAccClass = 1 OR tblAccountsLY.intAccClass = 2)   
  AND (tblAccountsLY.bitInactive = 0)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccountsLY.bitLinkAPVendMast = 0   AND tblAccountsLY.bitLinkPrepayVendMast = 0   AND tblAccountsLY.bitLinkARCustMast = 0   AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccountsLY.intGLNumber  
  
 END  
  
END  
  
RETURN  
  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetPOSDisplay]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[GetPOSDisplay]    Script Date: 10-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[GetPOSDisplay]
@SQMachine as nvarchar(500)

AS
BEGIN

SELECT strMachine as Machine,strWaitText1 as WaitText1,strWaitText2 as WaitText2,strCOMPort as COMPort FROM tblPOSDisp WHERE strMachine = @SQMachine

END
GO
/****** Object:  StoredProcedure [dbo].[GetPOSDrawerStatusBySessionID]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetPOSDrawerStatusBySessionID]    Script Date: 09-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[GetPOSDrawerStatusBySessionID] 
  @SQSession uniqueidentifier
AS
BEGIN
	SELECT intStatus FROM tblPOSDrs WHERE uidSessionID = @SQSession
END
GO
/****** Object:  StoredProcedure [dbo].[GetPOSDrsAvailBalByuidSessionID]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetPOSDrsAvailBalByuidSessionID]
  @SessionId UNIQUEIDENTIFIER,
  @PaymentTypeName NVARCHAR(50)
AS
BEGIN
	DECLARE @TotalSplitPayment MONEY = 0
	DECLARE @TotalPOSDrsCash MONEY = 0
	DECLARE @TotalPOSDrOpenCash MONEY = 0

	SELECT @TotalSplitPayment = Isnull(SUM(decTotal), 0)
	FROM tblPOSDrsSplitPmt AS split
	INNER JOIN tblTenderTypes AS tt ON split.strPaymentTypeName = tt.strName
	WHERE uidSessionID = @SessionId
		AND split.strPaymentTypeName = @PaymentTypeName
		AND split.intGLNumber IS NOT NULL
	GROUP BY strPaymentTypeName
		,split.uidSessionID

	SELECT @TotalPOSDrsCash = Isnull(SUM(decCash), 0) * - 1
	FROM tblPOSDrsDT
	WHERE uidSessionID = @SessionId
		AND strPaymentTypeName = @PaymentTypeName

	select @TotalPOSDrOpenCash = Isnull(decOpenVal, 0)
	FROM tblPOSDrs
	WHERE uidSessionID = @SessionId
		AND strCashTender = @PaymentTypeName

	SELECT ABS((@TotalSplitPayment + @TotalPOSDrOpenCash) - @TotalPOSDrsCash) AS AvailVal
END
GO
/****** Object:  StoredProcedure [dbo].[GetPOSDrsCashBalanceByuidSessionID]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetPOSDrsCashBalanceByuidSessionID] 
	@SessionId uniqueidentifier 
AS
BEGIN
	SELECT decCashBal FROM tblPOSDrs WHERE uidSessionID = @SessionId
END
GO
/****** Object:  StoredProcedure [dbo].[GetPOSDrsClosingReport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[GetPOSDrsClosingReport]    Script Date: 10-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[GetPOSDrsClosingReport]
  @DrawerSession uniqueidentifier
AS
BEGIN
   SELECT * FROM tblPOSDrs WHERE uidSessionID = @DrawerSession

	SELECT CASE WHEN ISNULL(tblPOSDrsDT.strInvDocID,'') LIKE '%RC-%' 
	THEN tblCustPay.strPaidBy ELSE tblInvoiceDocSplitPmt.strPaymentTypeName 
	END AS strPaymentTypeName, SUM(CASE WHEN ISNULL(tblPOSDrsDT.strInvDocID,'')
	 LIKE '%RC-%' THEN tblCustPay.decAmount ELSE tblInvoiceDocSplitPmt.decTotal END) AS decTotal
	  FROM tblPOSDrsDT LEFT JOIN tblInvoiceDocSplitPmt 
	  ON tblPOSDrsDT.strInvDocID = tblInvoiceDocSplitPmt.strInvDocID LEFT JOIN tblCustPay 
	  ON tblPOSDrsDT.strInvDocID = tblCustPay.strSource WHERE uidSessionID = @DrawerSession
	   GROUP BY CASE WHEN ISNULL(tblPOSDrsDT.strInvDocID,'') LIKE '%RC-%' THEN tblCustPay.strPaidBy
		ELSE tblInvoiceDocSplitPmt.strPaymentTypeName END
END
GO
/****** Object:  StoredProcedure [dbo].[GetPOSInventoryData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetPOSInventoryData] @Part AS NVARCHAR(50)
	,@BarCode AS NVARCHAR(300)
	,@PriceList AS VARCHAR(20)
	,@Date DATETIME
	,@DocNumber AS NVARCHAR(300) = ''
	,@GPCalcInvLevel AS INT = 0
	,@GPCalcLPP AS INT = 0
	,@LocName AS NVARCHAR(50) = ''
	,@TransactionType AS NVARCHAR(300) = 'Sales'
	,@Unit AS NVARCHAR(300) = ''
AS
BEGIN
	DECLARE @uidPriceBasedID AS UNIQUEIDENTIFIER

	SELECT TOP 1 @Part = strPartNumber
	FROM tblInv
	WHERE strBarCode = @BarCode
		OR strBarCode2 = @BarCode
		OR strPartNumber = @Part

	IF (
			NOT EXISTS (
				SELECT 1
				FROM tblInv
				WHERE strBarCode = @BarCode
					OR strBarCode2 = @BarCode
					OR strPartNumber = @Part
				)
			)
	BEGIN
		SELECT TOP 1 @Part = strPartNumber
			,@Unit = strFromUnit
		FROM tblInvUOMs
		WHERE (
				strBarCode = @BarCode
				OR strBarCode2 = @BarCode
				)
			AND tblInvUOMs.bitInactive = 0
			AND (
				tblInvUOMs.strUseFor = @TransactionType
				OR tblInvUOMs.strUseFor = 'Both'
				)
	END

	SELECT TOP 1 @uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
	FROM tblPriceListsByDate
	INNER JOIN dbo.tblInvPrice ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
	WHERE @Date BETWEEN dbo.tblPriceListsByDate.dteStartDate
			AND dbo.tblPriceListsByDate.dteFinishDate
		AND tblPriceListsByDate.strPricelist = @PriceList
		AND tblInvPrice.strPartNumber = @Part

	IF (@DocNumber = '')
	BEGIN
		IF (@uidPriceBasedID IS NULL)
		BEGIN
			SELECT TOP 1 CASE 
					WHEN (
							tblInv.strPOSDesc IS NULL
							OR tblInv.strPOSDesc = ''
							)
						THEN tblInv.strDesc
					ELSE tblInv.strPOSDesc
					END AS Description
				,IsNull(tblInv.strExtendedDesc, '') AS ExtendedDesc
				,tblInv.strStockUnit AS StockUnit
				,tblInv.intType AS Type
				,tblInv.bitAllowPriceChg AS AllowPriceChg
				,cast(0 AS MONEY) AS Selling
				,tblInv.strPartNumber AS PartNumber
				,tblInv.strField1 AS Field1
				,tblInv.strField2 AS Field2
				,tblInv.strField3 AS Field3
				,tblInv.strField4 AS Field4
				,tblInv.strField5 AS Field5
				,tblInv.strField6 AS Field6
				,tblInv.strSellUnit AS SellUnit
				,tblInv.decSellFromStock AS SellFromStock
				,tblInv.strSellStockUnit AS SellStockUnit
				,tblInv.bitAutoBuild AS AutoBuild
				,NULL AS CashPrice
				,tblInv.bitInvSerialType AS IsSerialType
				,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimension
				,tblInv.decDefSaleQty AS DefaultSaleQty
				,ISNULL(tblInvSerialTypes.bitMethod, 1) AS IsMethod
				,strHSCode AS HSCode
				,strHSDesc AS HSDesc
				,CASE 
		WHEN tblInv.intType = 4
			THEN tblInv.decStandardCost
		ELSE CASE @GPCalcLPP
				WHEN 0
					THEN tblInv.decLastPPUnit
				WHEN 1
					THEN tblInv.decStandardCost
				WHEN 2
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = @LocName
															), 0)
													THEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
												ELSE CASE 
														WHEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0) = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0)
														END
												END
										END
							WHEN 1
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
												ELSE CASE 
														WHEN CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
														END
												END
										END
							ELSE tblInv.decLastPPUnit
							END
				WHEN 3
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0) = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0)
										END
							WHEN 1
								THEN CASE 
										WHEN CASE tblInv.decSumOnHand
												WHEN 0
													THEN 0
												ELSE tblInv.decSumValue / tblInv.decSumOnHand
												END = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
										END
							ELSE tblInv.decLastPPUnit
							END
				ELSE tblInv.decLastPPUnit
				END
		END AS GPCalc
			FROM tblInv
			LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
			WHERE (
					tblInv.strPartNumber = @Part
					OR tblInv.strBarCode = @BarCode
					OR tblInv.strBarCode2 = @BarCode
					)
				AND (tblInv.bitInactive = 0)
		END
		ELSE
		BEGIN
		IF (@Unit = '')
			BEGIN
			SELECT TOP 1 CASE 
					WHEN (
							tblInv.strPOSDesc IS NULL
							OR tblInv.strPOSDesc = ''
							)
						THEN tblInv.strDesc
					ELSE tblInv.strPOSDesc
					END AS Description
				,IsNull(tblInv.strExtendedDesc, '') AS ExtendedDesc
				,tblInv.strStockUnit AS StockUnit
				,tblInv.intType AS Type
				,tblInv.bitAllowPriceChg AS AllowPriceChg
				,CASE ISNULL(tblInvPrice.bitPromotionalPricing, 0)
					WHEN 1
						THEN (
								CASE 
									WHEN @Date BETWEEN tblInvPrice.dtePromotionalStartDate
											AND tblInvPrice.dtePromotionalEndDate
										THEN ISNULL(tblInvPrice.decPromotionalPrice, 0)
									ELSE ISNULL(tblInvPrice.decSelling, 0)
									END
								)
					ELSE ISNULL(tblInvPrice.decSelling, 0)
					END AS Selling
				,tblInv.strPartNumber AS PartNumber
				,tblInv.strField1 AS Field1
				,tblInv.strField2 AS Field2
				,tblInv.strField3 AS Field3
				,tblInv.strField4 AS Field4
				,tblInv.strField5 AS Field5
				,tblInv.strField6 AS Field6
				,ISNULL(tblInvPrice.strUnit, tblInv.strSellUnit) AS SellUnit
					,ISNULL(CASE strConversionType
							WHEN 'Multiply'
								THEN decConversionFactor
							ELSE 1 / decConversionFactor
							END, decSellFromStock) AS SellFromStock
				,tblInv.strSellStockUnit AS SellStockUnit
				,tblInv.bitAutoBuild AS AutoBuild
				,CASE ISNULL(tblInvPrice.bitCashPricing, 0)
					WHEN 1
						THEN ISNULL(tblInvPrice.decCashPrice, 0)
					ELSE NULL
					END AS CashPrice
				,tblInv.bitInvSerialType AS IsSerialType
				,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimension
				,tblInv.decDefSaleQty AS DefaultSaleQty
				,ISNULL(tblInvSerialTypes.bitMethod, 1) AS IsMethod
				,strHSCode AS HSCode
				,strHSDesc AS HSDesc
				,CASE 
		WHEN tblInv.intType = 4
			THEN tblInv.decStandardCost
		ELSE CASE @GPCalcLPP
				WHEN 0
					THEN tblInv.decLastPPUnit
				WHEN 1
					THEN tblInv.decStandardCost
				WHEN 2
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = @LocName
															), 0)
													THEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
												ELSE CASE 
														WHEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0) = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0)
														END
												END
										END
							WHEN 1
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
												ELSE CASE 
														WHEN CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
														END
												END
										END
							ELSE tblInv.decLastPPUnit
							END
				WHEN 3
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0) = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0)
										END
							WHEN 1
								THEN CASE 
										WHEN CASE tblInv.decSumOnHand
												WHEN 0
													THEN 0
												ELSE tblInv.decSumValue / tblInv.decSumOnHand
												END = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
										END
							ELSE tblInv.decLastPPUnit
							END
				ELSE tblInv.decLastPPUnit
				END
		END AS GPCalc
			FROM tblInv
			LEFT OUTER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
				LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber
					AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
					AND tblInvUOMs.bitInactive = 0
					AND (
						tblInvUOMs.strUseFor = @TransactionType
						OR tblInvUOMs.strUseFor = 'Both'
						)
			LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
			WHERE (
					tblInv.strPartNumber = @Part
					OR tblInv.strBarCode = @BarCode
					OR tblInv.strBarCode2 = @BarCode
					OR tblInvUOMs.strBarCode = @BarCode
					OR tblInvUOMs.strBarCode2 = @BarCode
					)
				AND (tblInv.bitInactive = 0)
				AND (
					tblInvPrice.strPricelist = @Pricelist
					AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
					)
					AND (
						CASE 
							WHEN tblInv.strBarCode = @BarCode
								OR tblInv.strBarCode2 = @BarCode
								THEN tblInvPrice.bitStockUnit
							ELSE CASE 
									WHEN tblInv.strPartNumber = @Part
										THEN CASE 
												WHEN tblInvPrice.bitStockUnit = 1
													THEN tblInv.bitDefaultUOM
												ELSE 0
												END
									ELSE 1
									END
							END = 1
						OR CASE 
							WHEN tblInv.strBarCode = @BarCode
								OR tblInv.strBarCode2 = @BarCode
								THEN tblInvPrice.bitStockUnit
							ELSE ISNULL(tblInvUOMs.bitDefaultUOM, 0)
							END = 1
						)
			END
			ELSE
			BEGIN
			SELECT TOP 1 CASE 
					WHEN (
							tblInv.strPOSDesc IS NULL
							OR tblInv.strPOSDesc = ''
							)
						THEN tblInv.strDesc
					ELSE tblInv.strPOSDesc
					END AS Description
				,IsNull(tblInv.strExtendedDesc, '') AS ExtendedDesc
				,tblInv.strStockUnit AS StockUnit
				,tblInv.intType AS Type
				,tblInv.bitAllowPriceChg AS AllowPriceChg
				,CASE ISNULL(tblInvPrice.bitPromotionalPricing, 0)
					WHEN 1
						THEN (
								CASE 
									WHEN @Date BETWEEN tblInvPrice.dtePromotionalStartDate
											AND tblInvPrice.dtePromotionalEndDate
										THEN ISNULL(tblInvPrice.decPromotionalPrice, 0)
									ELSE ISNULL(tblInvPrice.decSelling, 0)
									END
								)
					ELSE ISNULL(tblInvPrice.decSelling, 0)
					END AS Selling
				,tblInv.strPartNumber AS PartNumber
				,tblInv.strField1 AS Field1
				,tblInv.strField2 AS Field2
				,tblInv.strField3 AS Field3
				,tblInv.strField4 AS Field4
				,tblInv.strField5 AS Field5
				,tblInv.strField6 AS Field6
			,ISNULL(tblInvPrice.strUnit, tblInv.strSellUnit) AS SellUnit
					,ISNULL(CASE strConversionType
							WHEN 'Multiply'
								THEN decConversionFactor
							ELSE 1 / decConversionFactor
							END, decSellFromStock) AS SellFromStock	
				,tblInv.strSellStockUnit AS SellStockUnit
				,tblInv.bitAutoBuild AS AutoBuild
				,CASE ISNULL(tblInvPrice.bitCashPricing, 0)
					WHEN 1
						THEN ISNULL(tblInvPrice.decCashPrice, 0)
					ELSE NULL
					END AS CashPrice
				,tblInv.bitInvSerialType AS IsSerialType
				,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimension
				,tblInv.decDefSaleQty AS DefaultSaleQty
				,ISNULL(tblInvSerialTypes.bitMethod, 1) AS IsMethod
			FROM tblInv
			LEFT OUTER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
			LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber
					AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
					AND tblInvUOMs.bitInactive = 0
					AND (
						tblInvUOMs.strUseFor = @TransactionType
						OR tblInvUOMs.strUseFor = 'Both'
						)
			LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
			WHERE (
					tblInv.strPartNumber = @Part
					OR tblInv.strBarCode = @BarCode
					OR tblInv.strBarCode2 = @BarCode
	                                OR tblInvUOMs.strBarCode = @BarCode
					OR tblInvUOMs.strBarCode2 = @BarCode
					)
				AND (tblInv.bitInactive = 0)
				AND (
					tblInvPrice.strPricelist = @Pricelist
					AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
					)
			AND (strUnit = @Unit)
			END
		END
	END
	ELSE
	BEGIN
		IF (@uidPriceBasedID IS NULL)
		BEGIN
			SELECT TOP 1 CASE 
					WHEN (
							tblInv.strPOSDesc IS NULL
							OR tblInv.strPOSDesc = ''
							)
						THEN tblInv.strDesc
					ELSE tblInv.strPOSDesc
					END AS Description
				,IsNull(tblInv.strExtendedDesc, '') AS ExtendedDesc
				,tblInvoiceDocDT.strStockUnit AS StockUnit
				,tblInvoiceDocDT.intType AS Type
				,tblInv.bitAllowPriceChg AS AllowPriceChg
				,cast(0 AS MONEY) AS Selling
				,tblInv.strPartNumber AS PartNumber
				,tblInv.strField1 AS Field1
				,tblInv.strField2 AS Field2
				,tblInv.strField3 AS Field3
				,tblInv.strField4 AS Field4
				,tblInv.strField5 AS Field5
				,tblInv.strField6 AS Field6
				,tblInvoiceDocDT.strUnit AS SellUnit
				,tblInv.decSellFromStock AS SellFromStock
				,tblInv.strSellStockUnit AS SellStockUnit
				,tblInv.bitAutoBuild AS AutoBuild
				,tblInvoiceDocDT.decLineDiscPerc AS Discount
				,NULL AS CashPrice
				,tblInv.bitInvSerialType AS IsSerialType
				,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimension
				,tblInv.decDefSaleQty AS DefaultSaleQty
				,ISNULL(tblInvSerialTypes.bitMethod, 1) AS IsMethod
				,strHSCode AS HSCode
				,strHSDesc AS HSDesc
				,CASE 
		WHEN tblInv.intType = 4
			THEN tblInv.decStandardCost
		ELSE CASE @GPCalcLPP
				WHEN 0
					THEN tblInv.decLastPPUnit
				WHEN 1
					THEN tblInv.decStandardCost
				WHEN 2
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = @LocName
															), 0)
													THEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
												ELSE CASE 
														WHEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0) = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0)
														END
												END
										END
							WHEN 1
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
												ELSE CASE 
														WHEN CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
														END
												END
										END
							ELSE tblInv.decLastPPUnit
							END
				WHEN 3
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0) = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0)
										END
							WHEN 1
								THEN CASE 
										WHEN CASE tblInv.decSumOnHand
												WHEN 0
													THEN 0
												ELSE tblInv.decSumValue / tblInv.decSumOnHand
												END = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
										END
							ELSE tblInv.decLastPPUnit
							END
				ELSE tblInv.decLastPPUnit
				END
		END AS GPCalc
			FROM tblInv
			INNER JOIN tblInvoiceDocDT ON tblInv.strPartNumber = tblInvoiceDocDT.strPartNumber
			LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
			WHERE (
					tblInv.strPartNumber = @Part
					OR tblInv.strBarCode = @BarCode
					OR tblInv.strBarCode2 = @BarCode
					)
				AND (tblInv.bitInactive = 0)
				AND (tblInvoiceDocDT.strInvDocID = @DocNumber)
		END
		ELSE
		BEGIN
			SELECT TOP 1 CASE 
					WHEN (
							tblInv.strPOSDesc IS NULL
							OR tblInv.strPOSDesc = ''
							)
						THEN tblInv.strDesc
					ELSE tblInv.strPOSDesc
					END AS Description
				,IsNull(tblInv.strExtendedDesc, '') AS ExtendedDesc
				,tblInv.strStockUnit AS StockUnit
				,tblInv.intType AS Type
				,tblInv.bitAllowPriceChg AS AllowPriceChg
				,ISNULL(tblInvoiceDocDT.decPriceEaInc, 0) AS Selling
				,tblInv.strPartNumber AS PartNumber
				,tblInv.strField1 AS Field1
				,tblInv.strField2 AS Field2
				,tblInv.strField3 AS Field3
				,tblInv.strField4 AS Field4
				,tblInv.strField5 AS Field5
				,tblInv.strField6 AS Field6
				,tblInvoiceDocDT.strUnit AS SellUnit
				,tblInv.decSellFromStock AS SellFromStock
				,tblInv.strSellStockUnit AS SellStockUnit
				,tblInv.bitAutoBuild AS AutoBuild
				,tblInvoiceDocDT.decLineDiscPerc AS Discount
				,NULL AS CashPrice
				,tblInv.bitInvSerialType AS IsSerialType
				,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimension
				,tblInv.decDefSaleQty AS DefaultSaleQty
				,ISNULL(tblInvSerialTypes.bitMethod, 1) AS IsMethod
				,strHSCode AS HSCode
				,strHSDesc AS HSDesc
				,CASE 
		WHEN tblInv.intType = 4
			THEN tblInv.decStandardCost
		ELSE CASE @GPCalcLPP
				WHEN 0
					THEN tblInv.decLastPPUnit
				WHEN 1
					THEN tblInv.decStandardCost
				WHEN 2
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = @LocName
															), 0)
													THEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
												ELSE CASE 
														WHEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0) = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0)
														END
												END
										END
							WHEN 1
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
												ELSE CASE 
														WHEN CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
														END
												END
										END
							ELSE tblInv.decLastPPUnit
							END
				WHEN 3
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0) = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0)
										END
							WHEN 1
								THEN CASE 
										WHEN CASE tblInv.decSumOnHand
												WHEN 0
													THEN 0
												ELSE tblInv.decSumValue / tblInv.decSumOnHand
												END = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
										END
							ELSE tblInv.decLastPPUnit
							END
				ELSE tblInv.decLastPPUnit
				END
		END AS GPCalc
			FROM tblInv
			LEFT OUTER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
			INNER JOIN tblInvoiceDocDT ON tblInv.strPartNumber = tblInvoiceDocDT.strPartNumber
			LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
			WHERE (
					tblInv.strPartNumber = @Part
					OR tblInv.strBarCode = @BarCode
					OR tblInv.strBarCode2 = @BarCode
					)
				AND (tblInv.bitInactive = 0)
				AND (
					(
						tblInvPrice.strPricelist = @Pricelist
						AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
						)
					)
				AND (tblInvoiceDocDT.strInvDocID = @DocNumber)
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetPosOptions]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[GetPosOptions]    Script Date: 10-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[GetPosOptions]

AS
BEGIN

SELECT bitDisablePOS as IsDisablePOS  ,
bitAllowDisc     as  IsAllowDisc 		,
bitAllowAcctSales	as	IsAllowAcctSales	,
bitAllowReturns		as	IsAllowReturns	,
bitAllowVoids as	IsAllowVoids			,
intPOSPrcOpts as	POSPrcOpts			,
bitCashMode	 as	IsCashMode			,
strCustName	as CustName				,
bitDropWarn	as IsDropWarn				,
decDropWarn	as	DropWarn	,		
bitDropReq	as	IsDropReq			,
decDropReq	as	DropReq			,
bitAllowCheque	as IsAllowCheque			,
bitAllowCC	as		IsAllowCC		,
bitAllowGC as	IsAllowGC				,
bitAutoPrint	as IsAutoPrint			,
bitEmbeddedEnabled	as IsEmbeddedEnabled		,
strEmbFlag	as EmbFlag			,	
intEmbBarSt	as	EmbBarSt		,	
intEmbBarEnd as	EmbBarEnd			,
intEmbType	as		EmbType		,
intEmbQtySt		as	EmbQtySt		,
intEmbQtyEnd	as	EmbQtyEnd		,
intEmbQtyDec	as	EmbQtyDec		,
intEmbPriceSt	as	EmbPriceSt		,
intEmbPriceEnd	as	EmbPriceEnd		,
intEmbPriceDec as	EmbPriceDec		,	
bitDCRounding as		IsDCRounding		,
decDCRounding as	DCRounding			,
intRefReq	as	RefReq			,
intProcessingMode as	 ProcessingMode		,
intCNReasonReq	as	CNReasonReq		,
bitReturnsRequireInvoice as IsReturnsRequireInvoice	,
bitTouchscreenPOS as	IsTouchscreenPOS		,
bitPOSAIBC	as	IsPOSAIBC			,
strPosPricelist	 as	PosPricelist		,
bitUsePosPricelist	as	IsUsePosPricelist	,
bitActivateERPIntegration as IsActivateERPIntegration  	,
bitERPAR as	IsERPAR				,
bitERPPOS as	 IsERPPOS				,
strERPSystem	as	ERPSystem		,
strERPURL	as	ERPURL			,
strERPUser as	ERPUser				,
strERPPassword	as	ERPPassword		,
dteLastUpdatedSynchTime  as  LastUpdatedSynchTime  ,
intNumberOfHoursFromLastSynch as  NumberOfHoursFromLastSynch,
bitAllowPayouts as IsAllowPayouts

 FROM tblPOSOpts
END
GO
/****** Object:  StoredProcedure [dbo].[GetPOSSyncDate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetPOSSyncDate]
 @tableName varchar(100)
AS
BEGIN
	SELECT DATEADD(second, DATEDIFF(second, GETDATE(), GETUTCDATE()), dteLastSyncDate)
	FROM tblPOSSyncStatus where strTableName = @tableName
END
GO
/****** Object:  StoredProcedure [dbo].[GetPriceBasedIDForCustomerPriceListReportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetPriceBasedIDForCustomerPriceListReportData] @Pricelist AS NVARCHAR(20) = NULL
	,@PriceListStartDate AS DATETIME
	,@PriceListEndDate AS DATETIME
AS
BEGIN
	SELECT uidPriceBasedID
	FROM tblPriceListsByDate
	WHERE strPricelist = @Pricelist
		AND CONVERT(DATE, dteStartDate) = CONVERT(DATE, @PriceListStartDate)
		AND CONVERT(DATE, dteFinishDate) = CONVERT(DATE, @PriceListEndDate)
END
GO
/****** Object:  StoredProcedure [dbo].[GetPriceData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetPriceData]
@PartNumber AS NVARCHAR(100),
@DocDate as datetime
AS
BEGIN
	SELECT tblInvPrice.strPricelist AS Pricelist
	,case 
	when
	Isnull( 
           CONVERT(VARCHAR(50), tblinvprice.dtepromotionalstartdate, 103), 
                '' 
                ) != '' and
				Isnull( 
           CONVERT(VARCHAR(50), tblinvprice.dtepromotionalenddate, 103), 
                '' 
                ) != '' and
	 (@DocDate between tblinvprice.dtepromotionalstartdate and 
	tblinvprice.dtepromotionalenddate) and Isnull(tblinvprice.bitpromotionalpricing, 0)=1
       then tblinvprice.decpromotionalprice else
	  Isnull( tblInvPrice.decSelling,0) end AS Selling
	,tblPricelists.intPriceListType AS PriceListType
	,tblPriceListsByDate.dteStartDate AS StartDate
	,tblPriceListsByDate.dteFinishDate AS EndDate
	,CASE 
        WHEN GETDATE() BETWEEN tblInvPrice.dtePromotionalStartDate AND tblInvPrice.dtePromotionalEndDate 
		THEN tblInvPrice.bitPromotionalPricing
        ELSE NULL 
    END AS PromotionalPricing,
    CASE 
        WHEN GETDATE() BETWEEN tblInvPrice.dtePromotionalStartDate AND tblInvPrice.dtePromotionalEndDate 
		THEN tblInvPrice.dtePromotionalStartDate 
        ELSE NULL 
    END AS PromotionalStartDate,
    CASE 
        WHEN GETDATE() BETWEEN tblInvPrice.dtePromotionalStartDate AND tblInvPrice.dtePromotionalEndDate 
		THEN tblInvPrice.dtePromotionalEndDate 
        ELSE NULL 
    END AS PromotionalEndDate,
    CASE 
        WHEN GETDATE() BETWEEN tblInvPrice.dtePromotionalStartDate AND tblInvPrice.dtePromotionalEndDate 
		THEN tblInvPrice.decPromotionalPrice 
        ELSE NULL 
    END AS PromotionalPrice
,Isnull(tblinvprice.bitpromotionalpricing, 0) AS IsPromotionalPrice
	,tblInvPrice.strUnit AS Unit
	,ISNULL(tblInvUOMs.decConversionFactor, 1) AS ConversionFactor
	,ISNULL(tblInvUOMs.strConversionType, 'Multiply') AS ConversionType
	,ISNULL(CASE strConversionType
			WHEN 'Multiply'
				THEN decConversionFactor
			ELSE 1 / decConversionFactor
			END, tblInv.decSellFromStock) AS SellFromStock
FROM tblInv
INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
INNER JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist
	AND tblInvPrice.uidPriceBasedID = tblPricelists.uidPriceBasedID
INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblPricelists.uidPriceBasedID
LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber
	AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
	AND tblInvUOMs.bitInactive = 0
WHERE (tblInvPrice.strPartNumber = @PartNumber)
AND @DocDate >= tblpricelistsbydate.dtestartdate 
       AND @DocDate <= tblpricelistsbydate.dtefinishdate
AND (
		(
			tblInvUOMs.strUseFor = 'Sales'
			OR tblInvUOMs.strUseFor = 'Both'
			)
		OR tblInvPrice.bitStockUnit = 1
		)
ORDER BY tblInvPrice.strPricelist
	,tblPriceListsByDate.uidPriceBasedID
	,tblInvPrice.bitStockUnit DESC
	,tblInvPrice.strUnit
END
GO
/****** Object:  StoredProcedure [dbo].[GetPriceListByDate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetPriceListByDate] (
	@PartNumber AS NVARCHAR(50)
	,@PriceList AS NVARCHAR(20)
	,@DocDate AS DATETIME
	,@Unit AS NVARCHAR(50)
	)
AS
BEGIN
	SELECT tblPriceListsByDate.uidPriceBasedID AS PriceBasedId
		,tblPriceListsByDate.strPricelist AS PriceList
		,tblPriceListsByDate.dteStartDate AS StartDate
		,tblPriceListsByDate.dteFinishDate AS EndDate
		,tblInvPrice.decSelling AS Price
		,Isnull(tblInvPrice.bitPromotionalPricing, 0) AS IsPromotionalPricing
		,Isnull(tblInvPrice.decPromotionalPrice, 0) AS PromotionalPrice
		,Isnull(tblInvPrice.dtePromotionalStartDate, tblPriceListsByDate.dteStartDate) AS PromotionalStartDate
		,Isnull(tblInvPrice.dtePromotionalEndDate, tblPriceListsByDate.dteFinishDate) AS PromotionalEndDate
	FROM tblPriceListsByDate (NOLOCK)
	INNER JOIN tblInvPrice (NOLOCK) ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
	INNER JOIN tblInv (NOLOCK) ON tblInvPrice.strPartNumber = tblInv.strPartNumber 	
	WHERE (tblInv.strPartNumber = @PartNumber OR tblInv.strBarCode = @PartNumber OR  tblInv.strBarCode2 = @PartNumber )
		AND tblInvPrice.strPricelist = @PriceList
		AND @DocDate >= tblpricelistsbydate.dtestartdate
		AND @DocDate <= tblpricelistsbydate.dtefinishdate
		AND tblInvPrice.strUnit=@Unit
	ORDER BY tblPriceListsByDate.dteStartDate
END
GO

/****** Object:  StoredProcedure [dbo].[GetPricelistbyDocId]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/************************END [GetReceiptsData]***********************************/

/************************START [GetPricelistbyDocId]***********************************/

CREATE PROCEDURE [dbo].[GetPricelistbyDocId]
(	
@OrderDocID AS NVARCHAR(50)
)
AS
BEGIN
DECLARE @OrderPriceList NVARCHAR(50) = (SELECT strPricelist FROM tblCustomers AS tc INNER JOIN tblOrderDoc as tod on tc.strCustName = tod.strCustName WHERE tod.strOrdDocID = @OrderDocID)
--print @OrderPriceList

DECLARE @CompanyOptionPriceList NVARCHAR(50) = (SELECT strARLaybyPricelist FROM tblCoOpts)
--print @CompanyOptionPriceList

IF @OrderPriceList = @CompanyOptionPriceList
	select CAST(1 AS BIT)
ELSE
	select CAST(0 AS BIT)
END
GO
/****** Object:  StoredProcedure [dbo].[GetPriceListData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetPriceListData]
@PriceList AS NVARCHAR(20)
AS
BEGIN
SELECT
	 pd.uidPriceBasedID AS PriceBasedID
	,pd.dteStartDate AS StartDate
	,pd.dteFinishDate AS FinishDate
	,pd.bitInactive AS Inactive
FROM tblPriceListsByDate pd
INNER JOIN tblPricelists pl ON pd.uidPriceBasedID = pl.uidPriceBasedID
WHERE pl.strPricelist = @PriceList
	AND GETDATE() BETWEEN dteStartDate
		AND dteFinishDate
ORDER BY dteStartDate
END
GO
/****** Object:  StoredProcedure [dbo].[GetPriceListsWebStore]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetPriceListsWebStore]
 (@PageSize int=999999,
  @PageIndex int=1,
  @LastUpdated datetime=null)
	AS  
	BEGIN  
		SELECT tblInv.strPartNumber AS PartNumber,
			tblInv.strDesc AS [Desc],
			tblInv.decLastPPUnit AS LastPPUnit,
			tblInvPrice.decSelling AS Selling,
			tblInv.strCategory AS Category,
			tblInv.decSellFromStock AS SellFromStock,
			tblInvPrice.decEstLocalCost AS EstLocalCost,
			tblInvPrice.decEstImportCost AS EstImportCost,
			tblInvPrice.strPricelist AS Pricelist,
			tblInvPrice.uidPriceBasedID AS PriceBasedID,
			tblPriceListsByDate.dteStartDate AS StartDate,
			tblPriceListsByDate.dteFinishDate AS FinishDate,
			(CASE WHEN tblInvPrice.dtePromotionalStartDate IS NULL OR tblInvPrice.dtePromotionalEndDate IS NULL
				THEN CAST(0 as bit)
				WHEN GETDATE() between tblInvPrice.dtePromotionalStartDate and tblInvPrice.dtePromotionalEndDate
				THEN CAST(1 as bit)
				ELSE CAST (0 as bit)
			END) AS IsPromotionalPricing,
			(CASE WHEN tblInvPrice.dtePromotionalStartDate IS NULL OR tblInvPrice.dtePromotionalEndDate IS NULL
				THEN CAST(0 as money)
				WHEN GETDATE() between tblInvPrice.dtePromotionalStartDate and tblInvPrice.dtePromotionalEndDate
				THEN tblInvPrice.decPromotionalPrice
				ELSE tblInvPrice.decSelling
			END) AS PromotionalPrice,
			tblInvPrice.dtePromotionalStartDate AS PromotionalStartDate,
			tblInvPrice.dtePromotionalEndDate AS PromotionalEndDate,
			TotalRows = COUNT(*) OVER(),
			--TotalPages = Count(*) OVER()/ @PageSize,
			TotalPages = (CASE WHEN @PageSize = 999999 THEN 1 ELSE (Count(*) OVER() + @PageSize - 1) / @PageSize END),
			RowNumber=  ROW_NUMBER() OVER ( order by tblInvPrice.strPricelist)
		FROM tblInv
		INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
		INNER JOIN tblPricelists ON tblInvPrice.uidPriceBasedID = tblPricelists.uidPriceBasedID
		INNER JOIN tblPriceListsByDate ON tblPricelists.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
		WHERE (tblInv.intType <> 5	AND tblInv.bitInactive = 0	AND tblInv.bitWebstoreItem = 1)
			and (getdate() between tblPriceListsByDate.dteStartDate and tblPriceListsByDate.dteFinishDate)
			and (@LastUpdated is null or tblPriceListsByDate.dteRowUpdated>= @LastUpdated)			
		ORDER BY Pricelist
		  OFFSET @PageSize * (@PageIndex - 1) ROWS
        FETCH NEXT @PageSize ROWS ONLY ;
	END
GO
/****** Object:  StoredProcedure [dbo].[GetPrintContainerData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------------
CREATE PROCEDURE [dbo].[GetPrintContainerData]    
(    
 @DeliveryVehicle VARCHAR(100)
 ,@DeliveryDriver VARCHAR(100)   
 ,@PageSize INT = 25  
 ,@PageNumber INT = 1  
)    
AS    
BEGIN    
     
   DECLARE @skip INT  
 SET @skip = @PageSize * (@PageNumber - 1)  
  
 DECLARE @QueryCommand AS NVARCHAR(MAX) = 'SELECT strCntDocID AS CntDocID, dteJournalDate AS JournalDate, dteRequired AS Required, strUserName AS UserName, CASE WHEN bitCustMultiple = 1 THEN ''<MULTIPLE>'' ELSE strCustName END AS CustomerName,
  strReference AS Reference, strType AS Type, ISNULL(strDelVehicleDesc,'''') AS DeliveryVehicleDesc, ISNULL(strDelDriverDesc,'''') AS DeliveryDriverDesc FROM tblContainers 
  LEFT JOIN tblDeliveryVehicles ON tblContainers.strDelVehicleCode = tblDeliveryVehicles.strDelVehicleCode 
  LEFT JOIN tblDeliveryDrivers ON tblContainers.strDelDriverCode = tblDeliveryDrivers.strDelDriverCode WHERE (bitPrinted = 0) AND (bitHistoryTrans = 0)'    
    
 IF (LEN(@DeliveryVehicle) > 0)     
  SET @QueryCommand += ' AND (tblContainers.strDelVehicleCode = @DeliveryVehicle)'    
     
 IF (LEN(@DeliveryDriver) > 0)    
  SET @QueryCommand += ' AND (tblContainers.strDelDriverCode = @DeliveryDriver)'    
      
 DECLARE @ParameterDefinition AS NVARCHAR(MAX) = '@DeliveryVehicle VARCHAR(100), @DeliveryDriver VARCHAR(100)'    
    
 EXECUTE sp_executesql @QueryCommand, @ParameterDefinition, @DeliveryVehicle, @DeliveryDriver    
    
END 
GO
/****** Object:  StoredProcedure [dbo].[GetPrintPickTicketData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

--------------------------------------------------------
CREATE PROCEDURE [dbo].[GetPrintPickTicketData]

(	

	@DeliveryMethod VARCHAR(100),

	@Location VARCHAR(20),

	@Department INT

)

AS

BEGIN	



	SELECT PT.strPkTkDocID AS DocumentNumber

		,PT.dteJournalDate AS JournalDate

		,PT.dteRequired AS [Required]

		,PT.strUserName AS UserName

		,PT.strCustName AS CustomerName

		,PT.strReference AS Reference

		,PT.strOrdDocID AS OrderDocID

		,CASE WHEN (SELECT COUNT(Z.strLocation) FROM (SELECT strLocation FROM tblPickTicketsDT(NOLOCK) WHERE (strPkTkDocID = PT.strPkTkDocID) GROUP BY strLocation) Z) > 1 THEN '<MULTIPLE>' ELSE ISNULL((SELECT strLocation FROM tblPickTicketsDT(NOLOCK) WHERE (strPkTkDocID = PT.strPkTkDocID) GROUP BY strLocation), '') END AS Location
		,ISNULL((SELECT CAST(intDept AS NVARCHAR(4)) + ' ' + strDesc FROM tblDepartments(NOLOCK) WHERE (intDept = OD.intDept)), '') AS Department	

	FROM tblPickTickets PT(NOLOCK) 

	INNER JOIN tblOrderDoc OD(NOLOCK) ON PT.strOrdDocID = OD.strOrdDocID AND (LEN(@DeliveryMethod) = 0  OR OD.strDelMethodCode LIKE @DeliveryMethod) AND (@Department = 0 OR OD.intDept = @Department) 

	WHERE (@Location = '%%' OR ISNULL((SELECT COUNT(strLocation)FROM tblPickTicketsDT(NOLOCK) WHERE (strPkTkDocID = PT.strPkTkDocID) AND (strLocation = @Location) GROUP BY strLocation), 0) > 0) AND

	(PT.bitPrinted = 0) AND (PT.bitPicked = 0) AND (PT.bitCleared = 0) 

	ORDER BY PT.strPkTkDocID DESC



END

GO
/****** Object:  StoredProcedure [dbo].[GetProcessDoc]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetProcessDoc]  
(    
 @DocType AS INT,    
 @IsAllJobs AS BIT,    
 @IsFromOpenProcJob AS BIT    
)    
AS    
BEGIN    
 IF @IsAllJobs = 1    
  SELECT     
   ProcessDocID ,    
   tblWSProcessDoc.ServiceableItemCode ,    
   tsi.ServiceableItemName,    
   JobTemplateID ,    
   tblWSProcessDoc.OwnerCode ,    
   tblWSProcessDoc.CustomerCode ,    
   dbo.funGetAddressString(tblWSProcessDoc.CustomerCode) as CustomerDetails,    
   SystemDate ,    
   DocumentDate ,    
   RequiredDate ,    
   ReferenceNumber ,    
   tblWSProcessDoc.AddInfo ,    
   Technician ,    
   SalesName ,    
   Dept ,    
   DocType ,    
   InventoryTotal ,    
   LabourTotal ,    
   BuyOutsTotal ,    
   RecoveryTotal ,    
   InventoryTotalF ,    
   LabourTotalF ,    
   BuyOutsTotalF ,    
   RecoveryTotalF ,    
   Term ,    
   SubTotal ,    
   VAT ,    
   Total ,    
   IsForeign ,    
   SubTotalF ,    
   VATF ,    
   TotalF ,    
   IsFromQuote ,    
   QuoteDocID ,    
   Notes ,    
   Printed ,    
   Emailed ,    
   Cleared ,    
   Currency ,    
   DiscPerc ,    
   DiscAmt ,    
   DiscAmtF ,    
   RevisionNumber ,    
   Exchange ,    
   SubFormated ,    
   VATFormatted ,    
   TotFormatted ,    
   DiscFormatted ,    
   tblWSProcessDoc.CreatedDate ,    
   tblWSProcessDoc.UpdatedDate ,    
   tblWSProcessDoc.CreatedBy ,    
   tblWSProcessDoc.UpdatedBy        
  FROM     
   tblWSProcessDoc    
   LEFT OUTER JOIN tblWSServiceableItem as tsi ON tblWSProcessDoc.ServiceableItemCode = tsi.ServiceableItemCode    
  WHERE     
   (@DocType = 7 And (DocType = 1 or DocType = 2)) or (DocType = @DocType)    
 ELSE    
  If @IsFromOpenProcJob = 1    
   SELECT     
    ProcessDocID ,    
    tblWSProcessDoc.ServiceableItemCode ,    
    tsi.ServiceableItemName,    
    JobTemplateID ,    
    tblWSProcessDoc.OwnerCode ,    
    tblWSProcessDoc.CustomerCode ,    
    dbo.funGetAddressString(tblWSProcessDoc.CustomerCode) as CustomerDetails,    
    SystemDate ,    
    DocumentDate ,    
    RequiredDate ,    
    ReferenceNumber ,    
    tblWSProcessDoc.AddInfo ,    
    Technician ,    
    SalesName ,    
    Dept ,    
    DocType ,    
    InventoryTotal ,    
    LabourTotal ,    
    BuyOutsTotal ,    
    RecoveryTotal ,    
    InventoryTotalF ,    
    LabourTotalF ,    
    BuyOutsTotalF ,    
    RecoveryTotalF ,    
    Term ,    
    SubTotal ,    
    VAT ,    
    Total ,    
    IsForeign ,    
    SubTotalF ,    
    VATF ,    
    TotalF ,    
    IsFromQuote ,    
    QuoteDocID ,    
    Notes ,    
    Printed ,    
    Emailed ,    
    Cleared ,    
    Currency ,    
    DiscPerc ,    
    DiscAmt ,    
    DiscAmtF ,    
    RevisionNumber ,    
    Exchange ,    
    SubFormated ,    
    VATFormatted ,    
    TotFormatted ,    
    DiscFormatted ,    
    tblWSProcessDoc.CreatedDate ,    
    tblWSProcessDoc.UpdatedDate ,    
    tblWSProcessDoc.CreatedBy ,    
    tblWSProcessDoc.UpdatedBy        
   FROM     
    tblWSProcessDoc    
    LEFT OUTER JOIN tblWSServiceableItem as tsi ON tblWSProcessDoc.ServiceableItemCode = tsi.ServiceableItemCode    
   WHERE     
   ((@DocType = 7 And (DocType = 1 or DocType = 2)) or (DocType = @DocType)) AND Cleared = 0 AND JobStatusType = 2    
  ELSE    
     SELECT     
    ProcessDocID ,    
    tblWSProcessDoc.ServiceableItemCode ,    
    tsi.ServiceableItemName,    
    JobTemplateID ,    
    tblWSProcessDoc.OwnerCode ,    
    tblWSProcessDoc.CustomerCode ,    
    dbo.funGetAddressString(tblWSProcessDoc.CustomerCode) as CustomerDetails,    
    SystemDate ,    
    DocumentDate ,    
    RequiredDate ,    
    ReferenceNumber ,    
    tblWSProcessDoc.AddInfo ,    
    Technician ,    
    SalesName ,    
    Dept ,    
    DocType ,    
    InventoryTotal ,    
    LabourTotal ,    
    BuyOutsTotal ,    
    RecoveryTotal ,    
    InventoryTotalF ,    
    LabourTotalF ,    
    BuyOutsTotalF ,    
    RecoveryTotalF ,    
    Term ,    
    SubTotal ,    
    VAT ,    
    Total ,    
    IsForeign ,    
    SubTotalF ,    
    VATF ,    
    TotalF ,    
    IsFromQuote ,    
    QuoteDocID ,    
    Notes ,    
    Printed ,    
 Emailed ,    
    Cleared ,    
    Currency ,    
    DiscPerc ,    
    DiscAmt ,    
    DiscAmtF ,    
    RevisionNumber ,    
    Exchange ,    
    SubFormated ,    
    VATFormatted ,    
    TotFormatted ,    
    DiscFormatted ,    
    tblWSProcessDoc.CreatedDate ,    
    tblWSProcessDoc.UpdatedDate ,    
    tblWSProcessDoc.CreatedBy ,    
    tblWSProcessDoc.UpdatedBy        
   FROM     
    tblWSProcessDoc    
    LEFT OUTER JOIN tblWSServiceableItem as tsi ON tblWSProcessDoc.ServiceableItemCode = tsi.ServiceableItemCode    
   WHERE     
    ((@DocType = 7 And (DocType = 1 or DocType = 2)) or (DocType = @DocType)) AND Cleared = 0       
END
GO
/****** Object:  StoredProcedure [dbo].[GetProcessDocDTDataForRequisition]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetProcessDocDTDataForRequisition]
(
	@DocNumber nvarchar(30)
)
AS
BEGIN
	select tblWSProcessDocDT.[LineNo],
       tblWSProcessDocDT.PartNumber,
       tblInv.strDesc as PartDesc,
	   Convert(int, tblInv.intType) as ItemType,
       tblWSProcessDocDT.Location,
       tblWSProcessDocDT.QuotedQty,
       ISNULL(SUM(tblWSWIPCompDT.PostQty),0) - ISNULL(SUM(tblWSWIPCompDT.ReturnQty),0) AS PostedQty,
	   PostQty = 0.0,
	   ReturnQty = 0.0,
       tblWSProcessDocDT.LineTotExc as Amount, --TODO:Check
       ISNULL(SUM(tblWSWIPCompDT.PostAmount),0) AS PostedAmount,
	   PostAmount = 0.0,
       tblInv.bitInvSerialType as IsSerailType,
       tblInv.strStockUnit As Unit,
       --tblManJobCompInv.strBOMNumber,
       ISNULL(tblInvSerialTypes.bitMethod,0) as IsMethod,
       ISNULL(tblInvSerialTypes.bitDimensionExist,0) as IsDimensionExist,
	   tblWSProcessDocDT.JobQty
from tblWSProcessDocDT 
INNER JOIN tblInv ON tblWSProcessDocDT.PartNumber = tblInv.strPartNumber
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
LEFT JOIN tblWSWIP ON tblWSProcessDocDT.ProcessDocID = tblWSWIP.JBDocID
LEFT JOIN tblWSWIPCompDT ON tblWSWIP.WIPDocID = tblWSWIPCompDT.WIPDocID AND tblWSProcessDocDT.[LineNo] = tblWSWIPCompDT.[LineNo]
where ProcessDocID = @DocNumber
GROUP BY tblWSProcessDocDT.[LineNo],
         tblWSProcessDocDT.PartNumber,
         tblInv.strDesc,
         tblWSProcessDocDT.Location,
         tblWSProcessDocDT.QuotedQty,
         tblWSProcessDocDT.LineTotExc, --TODO:check
         tblInv.bitInvSerialType,
         tblInv.strStockUnit,
		 tblInv.intType,
         --tblWSProcessDocDT.strBOMNumber,
         tblInvSerialTypes.bitMethod,
         tblInvSerialTypes.bitDimensionExist,
		 tblWSProcessDocDT.JobQty
Order by tblWSProcessDocDT.[LineNo]
END
GO
/****** Object:  StoredProcedure [dbo].[GetProcessDocDTDataFromInvReq]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[GetWorkshopWIPData] ***********/

/*********** Start [dbo].[GetProcessDocDTDataFromInvReq] ***********/
CREATE PROCEDURE [dbo].[GetProcessDocDTDataFromInvReq]
(
	@DocNumber NVARCHAR(100)
)
AS
BEGIN
	SELECT 
		 WIPDocID
		,[LineNo]
		,PartNumber
		,Location
		,PostedQty
		,PostQty
		,Amount
		,PostedAmount
		,PostAmount
		,ID
		,[Type]
		,ReturnQty
	FROM tblWSWIPCompDT WHERE WIPDocID = 
			(SELECT WIPDocID FROM tblWSWIP WHERE ID = 
									(SELECT MAX(ID) FROM tblWSWIP WHERE JBDocID = @DocNumber)
			)
END
GO
/****** Object:  StoredProcedure [dbo].[GetProcessDocDTFromCode]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[UpdateJobDocument] ***********/

/*********** Start [dbo].[GetProcessDocDTFromCode] ***********/

CREATE PROCEDURE [dbo].[GetProcessDocDTFromCode]
(
	@DocNumber AS NVARCHAR(50),
	@GPCalcInvLevel AS INT,
	@GPCalcLPP AS INT,
	@IsPJBToIJB AS Bit,
	@DefaultInvLocation AS NVARCHAR(5)
)
AS
BEGIN
	DECLARE @WSWIPCount int

	select @WSWIPCount = COUNT(*) from tblWSWIP where JBDocID = @DocNumber


	IF(@IsPJBToIJB = 1 AND @WSWIPCount > 0) --For the MultipleBin Changes
	BEGIN
			SELECT
		ProcessDocDTID		
		,ProcessDocID
		,pdt.[LineNo]
		,pdt.PartNumber
		,pdt.Location
		,PartDesc
		,QuotedQty
		,JobQty
		,Unit
		,ItemType
		,TaxCode
		,Currency
		,IsForeign
		,LineDiscPerc
		,LineDiscAmt
		,LineDiscAmtF
		,IsDiscountTax
		,StockQty
		,StockUnit
		,StockQtyRemain
		,PriceEaExc
		,LineTotExc
		,LineTaxAmt
		,PriceEaInc
		,LineTotInc
		,PriceEaExcF
		,LineTotExcF
		,LineTaxAmtF
		,EaIncTaxF
		,TotIncTaxF
		,CreatedDate
		,UpdatedDate
		,CreatedBy
		,UpdatedBy
		,IsDelCost
		,BillingMethod
		,tblInv.strSellUnit AS SellUnit
		,tblInv.strSellStockUnit AS SellStockUnit
		,tblInv.decSellFromStock AS SellFromStock
		,tblInv.bitInvSerialType AS IsInvSerialType
		,ISNULL(tblWSOrderDocDTPrj.strProjNumber, '') AS ProjNumber  
		,SalesName
		,CASE 
		WHEN tblInv.intType = 4
			THEN tblInv.decStandardCost
		ELSE CASE @GPCalcLPP
				WHEN 0
					THEN tblInv.decLastPPUnit
				WHEN 1
					THEN tblInv.decStandardCost
				WHEN 2
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = pdt.Location
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = pdt.Location
															), 0)
													THEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = pdt.Location
																), 0)
												ELSE CASE 
														WHEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = pdt.Location
																	), 0) = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = pdt.Location
																	), 0)
														END
												END
										END
							WHEN 1
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
												ELSE CASE 
														WHEN CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
														END
												END
										END
							ELSE tblInv.decLastPPUnit
							END
				WHEN 3
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = pdt.Location
													), 0) = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = pdt.Location
													), 0)
										END
							WHEN 1
								THEN CASE 
										WHEN CASE tblInv.decSumOnHand
												WHEN 0
													THEN 0
												ELSE tblInv.decSumValue / tblInv.decSumOnHand
												END = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
										END
							ELSE tblInv.decLastPPUnit
							END
				ELSE tblInv.decLastPPUnit
				END
		END  AS	GPCalc
		,pdt.TransactionFieldID
		,pdt.BuyoutCost as BuyoutCost
		,tblInv.strUnitOfMeasure AS UnitOfMeasure

		,ISNULL(STUFF
		(
			(
				SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX))
				From 
					tblWSWIPCompInvBin
				INNER JOIN tblWSWIPCompDT ON tblWSWIPCompDT.WIPDocID = tblWSWIPCompInvBin.WIPDocID
				INNER JOIN tblWSWIP ON tblWSWIP.WIPDocID = tblWSWIPCompDT.WIPDocID
				INNEr JOIn tblInvLocBin ON tblInvLocBin.lngID = tblWSWIPCompInvBin.BinID
				WHERE tblWSWIP.JBDocID = @DocNumber and pdt.ProcessDocId = tblWSWIP.JBDocID and pdt.[LineNo] = tblWSWIPCompInvBin.[LineNo]
				Group by 
				   tblInvLocBin.strBinCode 
				FOR XML PATH('')
			),1, 1, ''),'') AS BinCode

		,ISNULL(STUFF
		(
			(
				SELECT ',' + CAST(tblWSWIPCompInvBin.BinID AS VARCHAR(MAX)) 
				From 
					tblWSWIPCompInvBin
				INNER JOIN tblWSWIPCompDT ON tblWSWIPCompDT.WIPDocID = tblWSWIPCompInvBin.WIPDocID
				INNER JOIN tblWSWIP ON tblWSWIP.WIPDocID = tblWSWIPCompDT.WIPDocID
				INNEr JOIn tblInvLocBin ON tblInvLocBin.lngID = tblWSWIPCompInvBin.BinID
				WHERE tblWSWIP.JBDocID = @DocNumber and pdt.ProcessDocId = tblWSWIP.JBDocID and pdt.[LineNo] = tblWSWIPCompInvBin.[LineNo]
				Group by 
					tblWSWIPCompInvBin.BinID
				Order by tblWSWIPCompInvBin.BinID
				FOR XML PATH('')
		),1, 1, '' ),'') AS BinIdString


		,tblInv.bitAutoBuild AS IsAutoBuild
		,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc
		,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT SUM(INV.decLastPPUnit)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildLRC
		,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT SUM(INV.decStandardCost)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildSC
		,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE EXT.decOnHand
									WHEN 0
										THEN 0
									ELSE EXT.decValue / EXT.decOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
						AND EXT.strLocName = @DefaultInvLocation
					), 0)
		END AS AutoBuildMALocDef
		,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE EXT.decOnHand
									WHEN 0
										THEN 0
									ELSE EXT.decValue / EXT.decOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
						AND BOM.strLocName = EXT.strLocName
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildMALocation
		,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE INV.decSumOnHand
									WHEN 0
										THEN 0
									ELSE INV.decSumValue / INV.decSumOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildMAMain
		


	FROM tblWSProcessDocDT as pdt
	INNER JOIN tblInv ON pdt.PartNumber = tblInv.strPartNumber
	LEFT JOIN tblWSOrderDocDTPrj ON pdt.ProcessDocID = tblWSOrderDocDTPrj.strOrdDocID  
	AND pdt.[LineNo] = tblWSOrderDocDTPrj.intLineNo 
	--INNER JOIN tblWSWIP ON tblWSWIP.JBDocID = tblWSProcessDocDT.ProcessDocID 
	--INNER JOIN tblWSWIPCompDT ON tblWSWIP.WIPDocID = tblWSWIPCompDT.WIPDocID AND tblWSWIPCompDT.PartNumber = tblWSProcessDocDT.PartNumber AND tblWSProcessDocDT.[LineNo] = tblWSWIPCompDT.[LineNo]
	WHERE pdt.ProcessDocID = @DocNumber
ORDER BY pdt.[LineNo]
	END
	ELSE
	BEGIN
			SELECT
				ProcessDocDTID				
				,ProcessDocID
				,[LineNo]
				,PartNumber
				,Location
				,PartDesc
				,QuotedQty
				,JobQty
				,Unit
				,ItemType
				,TaxCode
				,Currency
				,IsForeign
				,LineDiscPerc
				,LineDiscAmt
				,LineDiscAmtF
				,IsDiscountTax
				,StockQty
				,StockUnit
				,StockQtyRemain
				,PriceEaExc
				,LineTotExc
				,LineTaxAmt
				,PriceEaInc
				,LineTotInc
				,PriceEaExcF
				,LineTotExcF
				,LineTaxAmtF
				,EaIncTaxF
				,TotIncTaxF
				,CreatedDate
				,UpdatedDate
				,CreatedBy
				,UpdatedBy
				,IsDelCost
				,BillingMethod
				,tblInv.strSellUnit AS SellUnit
				,tblInv.strSellStockUnit AS SellStockUnit
				,tblInv.decSellFromStock AS SellFromStock
				,tblInv.bitInvSerialType AS IsInvSerialType
				,ISNULL(tblWSOrderDocDTPrj.strProjNumber, '') AS ProjNumber  
				,SalesName
				,CASE 
				WHEN tblInv.intType = 4
					THEN tblInv.decStandardCost
				ELSE CASE @GPCalcLPP
						WHEN 0
							THEN tblInv.decLastPPUnit
						WHEN 1
							THEN tblInv.decStandardCost
						WHEN 2
							THEN CASE @GPCalcInvLevel
									WHEN 0
										THEN CASE 
												WHEN tblInv.decLastPPUnit > ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblWSProcessDocDT.Location
															), 0)
													THEN tblInv.decLastPPUnit
												ELSE CASE 
														WHEN tblInv.decLastPPUnit < ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblWSProcessDocDT.Location
																	), 0)
															THEN ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt EXT
																		WHERE EXT.strPartNumber = tblInv.strPartNumber
																			AND EXT.strLocName = tblWSProcessDocDT.Location
																		), 0)
														ELSE CASE 
																WHEN ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = tblWSProcessDocDT.Location
																			), 0) = 0
																	THEN tblInv.decLastPPUnit
																ELSE ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = tblWSProcessDocDT.Location
																			), 0)
																END
														END
												END
									WHEN 1
										THEN CASE 
												WHEN tblInv.decLastPPUnit > ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN tblInv.decLastPPUnit
												ELSE CASE 
														WHEN tblInv.decLastPPUnit < ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
															THEN ISNULL((
																		CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END
																		), 0)
														ELSE CASE 
																WHEN CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END = 0
																	THEN tblInv.decLastPPUnit
																ELSE ISNULL((
																			CASE tblInv.decSumOnHand
																				WHEN 0
																					THEN 0
																				ELSE tblInv.decSumValue / tblInv.decSumOnHand
																				END
																			), 0)
																END
														END
												END
									ELSE tblInv.decLastPPUnit
									END
						WHEN 3
							THEN CASE @GPCalcInvLevel
									WHEN 0
										THEN CASE 
												WHEN ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblWSProcessDocDT.Location
															), 0) = 0
													THEN tblInv.decLastPPUnit
												ELSE ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblWSProcessDocDT.Location
															), 0)
												END
									WHEN 1
										THEN CASE 
												WHEN CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END = 0
													THEN tblInv.decLastPPUnit
												ELSE ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
												END
									ELSE tblInv.decLastPPUnit
									END
						ELSE tblInv.decLastPPUnit
						END
				END  AS	GPCalc
				,tblWSProcessDocDT.TransactionFieldID
				,tblWSProcessDocDT.BuyoutCost as BuyoutCost
				,tblInv.strUnitOfMeasure AS UnitOfMeasure

				,tblInv.bitAutoBuild AS IsAutoBuild
		,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc
		,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT SUM(INV.decLastPPUnit)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildLRC
		,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT SUM(INV.decStandardCost)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildSC
		,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE EXT.decOnHand
									WHEN 0
										THEN 0
									ELSE EXT.decValue / EXT.decOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
						AND EXT.strLocName = @DefaultInvLocation
					), 0)
		END AS AutoBuildMALocDef
		,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE EXT.decOnHand
									WHEN 0
										THEN 0
									ELSE EXT.decValue / EXT.decOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
						AND BOM.strLocName = EXT.strLocName
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildMALocation
		,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE INV.decSumOnHand
									WHEN 0
										THEN 0
									ELSE INV.decSumValue / INV.decSumOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildMAMain

			FROM tblWSProcessDocDT
			INNER JOIN tblInv ON tblWSProcessDocDT.PartNumber = tblInv.strPartNumber
   			LEFT JOIN tblWSOrderDocDTPrj ON tblWSProcessDocDT.ProcessDocID = tblWSOrderDocDTPrj.strOrdDocID  
   			AND tblWSProcessDocDT.[LineNo] = tblWSOrderDocDTPrj.intLineNo  
			WHERE tblWSProcessDocDT.ProcessDocID = @DocNumber
		ORDER BY tblWSProcessDocDT.[LineNo]
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetProcessDocDTFromCodeRevNo]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****************End [SPSalesQuoteSystem]******************************/

/*****************Start [GetProcessDocDTFromCodeRevNo]*****************************/

CREATE PROCEDURE [dbo].[GetProcessDocDTFromCodeRevNo]
(
	@DocNumber AS NVARCHAR(50),
	@RevNo AS INT,
	@GPCalcInvLevel AS INT,
	@GPCalcLPP AS INT,
	@IsPJBToIJB AS Bit	
)
AS
BEGIN
	DECLARE @WSWIPCount int

	select @WSWIPCount = COUNT(*) from tblWSWIP where JBDocID = @DocNumber


	IF(@IsPJBToIJB = 1 AND @WSWIPCount > 0) --For the MultipleBin Changes
	BEGIN
			SELECT
		ProcessDocDTID
		,tblWSProcessDocREVDT.ProcessDocID
		,tblWSProcessDocREVDT.[LineNo]
		,tblWSProcessDocREVDT.PartNumber
		,tblWSProcessDocREVDT.Location
		,PartDesc
		,QuotedQty
		,JobQty
		,Unit
		,ItemType
		,TaxCode
		,tblWSProcessDocREVDT.Currency
		,tblWSProcessDocREVDT.IsForeign
		,LineDiscPerc
		,LineDiscAmt
		,LineDiscAmtF
		,IsDiscountTax
		,StockQty
		,StockUnit
		,StockQtyRemain
		,PriceEaExc
		,LineTotExc
		,LineTaxAmt
		,PriceEaInc
		,LineTotInc
		,PriceEaExcF
		,LineTotExcF
		,LineTaxAmtF
		,EaIncTaxF
		,TotIncTaxF
		,tblWSProcessDocREVDT.CreatedDate
		,tblWSProcessDocREVDT.UpdatedDate
		,tblWSProcessDocREVDT.CreatedBy
		,tblWSProcessDocREVDT.UpdatedBy
		,IsDelCost
		,BillingMethod
		,tblInv.strSellUnit AS SellUnit
		,tblInv.strSellStockUnit AS SellStockUnit
		,tblInv.decSellFromStock AS SellFromStock
		,tblInv.bitInvSerialType AS IsInvSerialType
		,CASE 
		WHEN tblInv.intType = 4
			THEN tblInv.decStandardCost
		ELSE CASE @GPCalcLPP
				WHEN 0
					THEN tblInv.decLastPPUnit
				WHEN 1
					THEN tblInv.decStandardCost
				WHEN 2
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblWSProcessDocREVDT.Location
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblWSProcessDocREVDT.Location
															), 0)
													THEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = tblWSProcessDocREVDT.Location
																), 0)
												ELSE CASE 
														WHEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblWSProcessDocREVDT.Location
																	), 0) = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblWSProcessDocREVDT.Location
																	), 0)
														END
												END
										END
							WHEN 1
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
												ELSE CASE 
														WHEN CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
														END
												END
										END
							ELSE tblInv.decLastPPUnit
							END
				WHEN 3
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblWSProcessDocREVDT.Location
													), 0) = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblWSProcessDocREVDT.Location
													), 0)
										END
							WHEN 1
								THEN CASE 
										WHEN CASE tblInv.decSumOnHand
												WHEN 0
													THEN 0
												ELSE tblInv.decSumValue / tblInv.decSumOnHand
												END = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
										END
							ELSE tblInv.decLastPPUnit
							END
				ELSE tblInv.decLastPPUnit
				END
		END  AS	GPCalc
		,tblWSProcessDocREVDT.BuyoutCost as BuyoutCost
		,tblInv.strUnitOfMeasure AS UnitOfMeasure

		,ISNULL(STUFF
		(
			(
				SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX))
				From 
					tblWSWIPCompInvBin
				INNER JOIN tblWSWIPCompDT ON tblWSWIPCompDT.WIPDocID = tblWSWIPCompInvBin.WIPDocID
				INNER JOIN tblWSWIP ON tblWSWIP.WIPDocID = tblWSWIPCompDT.WIPDocID
				INNEr JOIn tblInvLocBin ON tblInvLocBin.lngID = tblWSWIPCompInvBin.BinID
				WHERE tblWSWIP.JBDocID = @DocNumber
				Group by 
				   tblInvLocBin.strBinCode 
				FOR XML PATH('')
			),1, 1, ''),'') AS BinCode

		,ISNULL(STUFF
		(
			(
				SELECT ',' + CAST(tblWSWIPCompInvBin.BinID AS VARCHAR(MAX)) 
				From 
					tblWSWIPCompInvBin
				INNER JOIN tblWSWIPCompDT ON tblWSWIPCompDT.WIPDocID = tblWSWIPCompInvBin.WIPDocID
				INNER JOIN tblWSWIP ON tblWSWIP.WIPDocID = tblWSWIPCompDT.WIPDocID
				INNEr JOIn tblInvLocBin ON tblInvLocBin.lngID = tblWSWIPCompInvBin.BinID
				WHERE tblWSWIP.JBDocID = @DocNumber
				Group by 
					tblWSWIPCompInvBin.BinID
				Order by tblWSWIPCompInvBin.BinID
				FOR XML PATH('')
		),1, 1, '' ),'') AS BinIdString



		--,ISNULL(STUFF((
		--		SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX))
		--		FROM tblInvLocBin
		--		WHERE tblInvLocBin.lngId IN (
		--				SELECT BinId
		--				FROM tblWSWIPCompInvBin
		--				WHERE tblWSWIPCompInvBin.WIPDocID = tblWSWIPCompDT.WIPDocID
		--					AND tblWSWIPCompDT.[LineNo] = tblWSWIPCompInvBin.[LineNo]
		--				)
		--		FOR XML PATH('')
		--		), 1, 1, ''), '') AS BinCode
		--,ISNULL(STUFF((
		--		SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(MAX))
		--		FROM tblInvLocBin
		--		WHERE tblInvLocBin.lngId IN (
		--				SELECT BinId
		--				FROM tblWSWIPCompInvBin
		--				WHERE tblWSWIPCompInvBin.WIPDocID = tblWSWIPCompDT.WIPDocID
		--					AND tblWSWIPCompDT.[LineNo] = tblWSWIPCompInvBin.[LineNo]
		--				)
		--		FOR XML PATH('')
		--		), 1, 1, ''), '') AS BinIdString


	FROM tblWSProcessDocREVDT
	INNER JOIN tblInv ON tblWSProcessDocREVDT.PartNumber = tblInv.strPartNumber
	INNER JOIN tblWSProcessDocREV on tblWSProcessDocREV.EntID = tblWSProcessDocREVDT.EntID
	--INNER JOIN tblWSWIP ON tblWSWIP.JBDocID = tblWSProcessDocDT.ProcessDocID 
	--INNER JOIN tblWSWIPCompDT ON tblWSWIP.WIPDocID = tblWSWIPCompDT.WIPDocID AND tblWSWIPCompDT.PartNumber = tblWSProcessDocDT.PartNumber AND tblWSProcessDocDT.[LineNo] = tblWSWIPCompDT.[LineNo]
	WHERE tblWSProcessDocREVDT.ProcessDocID = @DocNumber and tblWSProcessDocREV.RevisionNumber =@RevNo
ORDER BY tblWSProcessDocREVDT.[LineNo]
	END
	ELSE
	BEGIN
			SELECT
				ProcessDocDTID
				,tblWSProcessDocREVDT.ProcessDocID
				,[LineNo]
				,PartNumber
				,Location
				,PartDesc
				,QuotedQty
				,JobQty
				,Unit
				,ItemType
				,TaxCode
				,tblWSProcessDocREVDT.Currency
				,tblWSProcessDocREVDT.IsForeign
				,LineDiscPerc
				,LineDiscAmt
				,LineDiscAmtF
				,IsDiscountTax
				,StockQty
				,StockUnit
				,StockQtyRemain
				,PriceEaExc
				,LineTotExc
				,LineTaxAmt
				,PriceEaInc
				,LineTotInc
				,PriceEaExcF
				,LineTotExcF
				,LineTaxAmtF
				,EaIncTaxF
				,TotIncTaxF
				,tblWSProcessDocREVDT.CreatedDate
				,tblWSProcessDocREVDT.UpdatedDate
				,tblWSProcessDocREVDT.CreatedBy
				,tblWSProcessDocREVDT.UpdatedBy
				,IsDelCost
				,BillingMethod
				,tblInv.strSellUnit AS SellUnit
				,tblInv.strSellStockUnit AS SellStockUnit
				,tblInv.decSellFromStock AS SellFromStock
				,tblInv.bitInvSerialType AS IsInvSerialType
				,CASE 
				WHEN tblInv.intType = 4
					THEN tblInv.decStandardCost
				ELSE CASE @GPCalcLPP
						WHEN 0
							THEN tblInv.decLastPPUnit
						WHEN 1
							THEN tblInv.decStandardCost
						WHEN 2
							THEN CASE @GPCalcInvLevel
									WHEN 0
										THEN CASE 
												WHEN tblInv.decLastPPUnit > ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblWSProcessDocREVDT.Location
															), 0)
													THEN tblInv.decLastPPUnit
												ELSE CASE 
														WHEN tblInv.decLastPPUnit < ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblWSProcessDocREVDT.Location
																	), 0)
															THEN ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt EXT
																		WHERE EXT.strPartNumber = tblInv.strPartNumber
																			AND EXT.strLocName = tblWSProcessDocREVDT.Location
																		), 0)
														ELSE CASE 
																WHEN ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = tblWSProcessDocREVDT.Location
																			), 0) = 0
																	THEN tblInv.decLastPPUnit
																ELSE ISNULL((
																			SELECT CASE EXT.decOnHand
																					WHEN 0
																						THEN 0
																					ELSE EXT.decValue / EXT.decOnHand
																					END
																			FROM tblInvExt EXT
																			WHERE EXT.strPartNumber = tblInv.strPartNumber
																				AND EXT.strLocName = tblWSProcessDocREVDT.Location
																			), 0)
																END
														END
												END
									WHEN 1
										THEN CASE 
												WHEN tblInv.decLastPPUnit > ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN tblInv.decLastPPUnit
												ELSE CASE 
														WHEN tblInv.decLastPPUnit < ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
															THEN ISNULL((
																		CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END
																		), 0)
														ELSE CASE 
																WHEN CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END = 0
																	THEN tblInv.decLastPPUnit
																ELSE ISNULL((
																			CASE tblInv.decSumOnHand
																				WHEN 0
																					THEN 0
																				ELSE tblInv.decSumValue / tblInv.decSumOnHand
																				END
																			), 0)
																END
														END
												END
									ELSE tblInv.decLastPPUnit
									END
						WHEN 3
							THEN CASE @GPCalcInvLevel
									WHEN 0
										THEN CASE 
												WHEN ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblWSProcessDocREVDT.Location
															), 0) = 0
													THEN tblInv.decLastPPUnit
												ELSE ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblWSProcessDocREVDT.Location
															), 0)
												END
									WHEN 1
										THEN CASE 
												WHEN CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END = 0
													THEN tblInv.decLastPPUnit
												ELSE ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
												END
									ELSE tblInv.decLastPPUnit
									END
						ELSE tblInv.decLastPPUnit
						END
				END  AS	GPCalc
				,tblWSProcessDocREVDT.BuyoutCost as BuyoutCost
				,tblInv.strUnitOfMeasure AS UnitOfMeasure
			FROM tblWSProcessDocREVDT
			INNER JOIN tblInv ON tblWSProcessDocREVDT.PartNumber = tblInv.strPartNumber
			INNER JOIN tblWSProcessDocREV on tblWSProcessDocREV.EntID = tblWSProcessDocREVDT.EntID
			WHERE tblWSProcessDocREVDT.ProcessDocID = @DocNumber and tblWSProcessDocREV.RevisionNumber =@RevNo
		ORDER BY tblWSProcessDocREVDT.[LineNo]
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetProcessIS]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetTrackingDataDTForGrid] ***********/

CREATE PROCEDURE [dbo].[GetProcessIS] 
(

	 @periodToProcess			as	int				=	0
	,@intInstalmentPeriod		as	int				=	0
	,@decInstalmentAmount		as	decimal(20, 2)	=	0
	,@decLastInstalmentAmount	as	decimal(20, 2)	=	0
	,@decOverdueInterest		as	decimal(20, 2)	=	0
	,@firstInstallmentDate		as	smalldatetime	=	null
	,@strInvoiceNr				as	nvarchar(50)	=	null
	,@strCustName				as	nvarchar(50)	=	''	
	
	,@decDeposite				as	decimal(20, 2)	=	0
	,@decIntAmount				as	decimal(20, 2)	=	0 OUTPUT
	
)
 AS 
 BEGIN
 SET NOCOUNT ON;
 
			declare @lngCustTrID as bigint = 0
 
 
            declare @periodStartDate	As smallDatetime	 
            declare @periodInterestDate As smallDatetime
            declare @periodEndDate		As smallDatetime

            
            set @periodStartDate	= DateAdd(month	, @periodToProcess - 1	,	@firstInstallmentDate	)
            set @periodInterestDate = DateAdd(Month	, @periodToProcess		,	@firstInstallmentDate	)
            set	@periodEndDate		= DateAdd(Day	, -1					,	@periodInterestDate		)
 
 
			 select 
					top 1 @lngCustTrID = lngCustTrID	
			FROM tblcusttrans
			WHERE		strCustName = @strCustName 
					AND strInvDocID = @strInvoiceNr
 
 
			declare @payments as decimal(20, 2) = 0

			SELECT @payments = convert(decimal(20, 2), (isnull(Sum(
						Case 
							WHEN decAmount IS NULL 
								THEN 0
							ELSE
								CASE	WHEN decAmount < 0 
										THEN -decAmount 
										ELSE 0 
								END 
						END),0) -  isnull(@decDeposite, 0)))
			FROM tblcusttransDT 
			WHERE lngCustTrID IN
						(
							Select lngCustTrID
								FROM tblcusttrans
							WHERE	strCustName		= @strCustName 
								AND lngCustTrID		= @lngCustTrID 
								AND dteJournalDate	< @periodEndDate 
						)




			declare @installments as decimal(20, 2)

            If @periodToProcess <= @intInstalmentPeriod 
                set @installments	=	Convert(decimal(20, 2),  (@periodToProcess) * @intInstalmentPeriod)
            Else
                set @installments	=	(convert(decimal(20, 2), (@periodToProcess - 1))) * @decInstalmentAmount + @decLastInstalmentAmount
			
			If (@installments - @payments) > 0 
				select @decIntAmount=@installments - @payments               
			else
				select @decIntAmount= 0               

 
End



GO
/****** Object:  StoredProcedure [dbo].[GetProductVersion]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetProductVersion]    Script Date: 04-02-2020 06:39:00 AM ******/
CREATE PROCEDURE [dbo].[GetProductVersion]    
AS  
BEGIN  
 SELECT intVersion FROM tblVersion
END
GO
/****** Object:  StoredProcedure [dbo].[GetProfileMenu]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetProfileMenu]    Script Date: 27-08-2018 10:12:35 ******/

CREATE PROCEDURE [dbo].[GetProfileMenu]  
AS  
BEGIN  
SET NOCOUNT ON;  
  BEGIN   
 SELECT 
    tblPM.ProfileID AS ProfileID, 
    tblPM.ScreenName AS ScreenName, 
    tblPM.ScreenDescription AS ScreenDescription, 
    tblPM.ScreenGridRow AS ScreenGridRow, 
    tblPM.ScreenGridCol AS ScreenGridCol, 
    tblPMI.ProfileItemID AS ProfileItemID, 
    tblPMI.ItemID AS ItemID, 
    tblPMI.ProfileID AS ProfileID1, 
    tblPMI.Shape AS Shape, 
    tblPMI.Background AS Background, 
    tblPMI.ItemRow AS ItemRow, 
    tblPMI.ItemColumn AS ItemColumn, 
    CASE WHEN (tblPMI.ButtonType = 1) THEN N'Button Type' ELSE N'Link Type' END AS ButtonType, 
    tblPMI.IsImageVisible AS IsImageVisible, 
    tblPMI.LinkProfileID AS LinkProfileID, 
    CASE WHEN (tblPMI.LinkProfileID = 0) THEN '' ELSE (Select ScreenName FROM tblProfileMenu where ProfileID = tblPMI.LinkProfileID) END AS ProfileName
    FROM  dbo.tblProfileMenu AS tblPM
    INNER JOIN dbo.tblProfileMenuItems AS tblPMI ON tblPM.ProfileID = tblPMI.ProfileID
 END  
END  
  
GO
/****** Object:  StoredProcedure [dbo].[GetProfileMenuItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[GetProfileMenuItems]    Script Date: 10-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[GetProfileMenuItems]
	@profileId int
AS
BEGIN

	SELECT 
	pmt.ProfileItemID as ProfileItemID, 
	pmt.ProfileID as ProfileID,
	 pmt.ItemID as ItemID,
	  pmt.Shape as ItemShape, 
	  pmt.Background as ItemBackground,
	  pmt.ItemRow as ItemRow, 
	  pmt.ItemColumn as ItemCol,
	   pmt.IsImageVisible as IsImageVisible, 
	   pmt.ButtonType as IsButtonType,
	    pmt.LinkProfileID as LinkProfileID,
		 pmt.CreatedDate  as CreatedDate,
		  pmt.ItemRowSpan as ItemRowSpan, 
		  pmt.ItemColumnSpan as ItemColSpan,
		  pm.ScreenName as ProfileName
	 from tblProfileMenuItems as pmt
	 left join tblProfileMenu as pm
	 on pmt.LinkProfileID =pm.ProfileID
	  where pmt.ProfileID = @profileId
END
GO
/****** Object:  StoredProcedure [dbo].[GetProjectAllocationData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetProjectAllocationData]
(
	@DocumentType AS TINYINT,
	@DocumentNumber AS VARCHAR(50),
	@TypeBOM  AS TINYINT,
	@TypeINV  AS TINYINT,
	@TypeLAB  AS TINYINT,
	@TypeMACH AS TINYINT,
	@TypeRC   AS TINYINT
)
AS
BEGIN

	DECLARE @Result AS TABLE
	(
		LineNumber INT,
		PartNumber VARCHAR(50),
		[Description] VARCHAR(500),
		Quantity MONEY,
		ProjNumber VARCHAR(50),
		Department INT DEFAULT 0,
		Module TINYINT DEFAULT 0,
		Stage VARCHAR(100),
		WCCode VARCHAR(100),
		IntType INT,
		LngID BIGINT
	)

	IF (@DocumentType = 8) --CreditRequest
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber, Stage)
		SELECT tblOrderDocDT.intLineNo, tblOrderDocDT.strPartNumber, tblOrderDocDT.strPartDesc, tblOrderDocDT.decQty, tblOrderDocDTPrj.strProjNumber,tblOrderDocDTPrj.strStage FROM tblOrderDocDT LEFT OUTER JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo WHERE (tblOrderDocDT.strOrdDocID = @DocumentNumber) AND (tblOrderDocDT.strOrdDocID LIKE 'CR%') ORDER BY tblOrderDocDT.intLineNo
	END
	ELSE IF (@DocumentType = 0) --SalesQuote
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
		SELECT tblOrderDocDT.intLineNo, tblOrderDocDT.strPartNumber, tblOrderDocDT.strPartDesc, tblOrderDocDT.decQty, tblOrderDocDTPrj.strProjNumber,tblOrderDocDTPrj.strStage FROM tblOrderDocDT LEFT OUTER JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo WHERE (tblOrderDocDT.strOrdDocID = @DocumentNumber) ORDER BY tblOrderDocDT.intLineNo
	END
	ELSE IF (@DocumentType = 1) --SalesOrder
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
		SELECT tblOrderDocDT.intLineNo, tblOrderDocDT.strPartNumber, tblOrderDocDT.strPartDesc, tblOrderDocDT.decQty, tblOrderDocDTPrj.strProjNumber,tblOrderDocDTPrj.strStage FROM tblOrderDocDT LEFT OUTER JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo WHERE (tblOrderDocDT.strOrdDocID = @DocumentNumber) ORDER BY tblOrderDocDT.intLineNo
	END
	ELSE IF (@DocumentType = 2) --SalesInvoice
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
		SELECT tblInvoiceDocDT.intLineNo, tblInvoiceDocDT.strPartNumber, tblInvoiceDocDT.strPartDesc, tblInvoiceDocDT.decQty, tblInvoiceDocDTPrj.strProjNumber,tblInvoiceDocDTPrj.strStage FROM tblInvoiceDocDT LEFT OUTER JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo WHERE (tblInvoiceDocDT.strInvDocID = @DocumentNumber) ORDER BY tblInvoiceDocDT.intLineNo
	END
	ELSE IF (@DocumentType = 11) --CreditNote
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
		SELECT tblInvoiceDocDT.intLineNo, tblInvoiceDocDT.strPartNumber, tblInvoiceDocDT.strPartDesc, tblInvoiceDocDT.decQty, tblInvoiceDocDTPrj.strProjNumber,tblInvoiceDocDTPrj.strStage  FROM tblInvoiceDocDT LEFT OUTER JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo WHERE (tblInvoiceDocDT.strInvDocID = @DocumentNumber) AND (tblInvoiceDocDT.strInvDocID LIKE 'CN%') ORDER BY tblInvoiceDocDT.intLineNo
	END
	ELSE IF (@DocumentType = 3) --Requisition
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
		SELECT tblOrderDocPDT.intLineNo, tblOrderDocPDT.strPartNumber, tblOrderDocPDT.strPartDesc, tblOrderDocPDT.decBuyQty, tblOrderDocPDTPrj.strProjNumber,tblOrderDocPDTPrj.strStage FROM tblOrderDocPDT LEFT OUTER JOIN tblOrderDocPDTPrj ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTPrj.strOrdPDocID AND tblOrderDocPDT.intLineNo = tblOrderDocPDTPrj.intLineNo WHERE (tblOrderDocPDT.strOrdPDocID = @DocumentNumber) ORDER BY tblOrderDocPDT.intLineNo
	END
	ELSE IF (@DocumentType = 4) --PurchaseOrder
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
		SELECT tblOrderDocPDT.intLineNo, tblOrderDocPDT.strPartNumber, tblOrderDocPDT.strPartDesc, tblOrderDocPDT.decBuyQty, tblOrderDocPDTPrj.strProjNumber,tblOrderDocPDTPrj.strStage FROM tblOrderDocPDT LEFT OUTER JOIN tblOrderDocPDTPrj ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTPrj.strOrdPDocID AND tblOrderDocPDT.intLineNo = tblOrderDocPDTPrj.intLineNo WHERE (tblOrderDocPDT.strOrdPDocID = @DocumentNumber) ORDER BY tblOrderDocPDT.intLineNo
	END
	ELSE IF (@DocumentType = 5) --GRV
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
		SELECT tblOrderDocPGDT.intLineNo, tblOrderDocPGDT.strPartNumber, tblOrderDocPGDT.strPartDesc, tblOrderDocPGDT.decBuyQty, tblOrderDocPGDTPrj.strProjNumber,tblOrderDocPGDTPrj.strStage FROM tblOrderDocPGDT LEFT OUTER JOIN tblOrderDocPGDTPrj ON tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPGDTPrj.strOrdPGDocID AND tblOrderDocPGDT.intLineNo = tblOrderDocPGDTPrj.intLineNo WHERE (tblOrderDocPGDT.strOrdPGDocID = @DocumentNumber) ORDER BY tblOrderDocPGDT.intLineNo
	END
	ELSE IF (@DocumentType = 6) --PurchaseInvoice
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
		SELECT tblInvoiceDocPDT.intLineNo, tblInvoiceDocPDT.strPartNumber, tblInvoiceDocPDT.strPartDesc, tblInvoiceDocPDT.decBuyQty, tblInvoiceDocPDTPrj.strProjNumber,tblInvoiceDocPDTPrj.strStage FROM tblInvoiceDocPDT LEFT OUTER JOIN tblInvoiceDocPDTPrj ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocPDTPrj.strInvPDocID AND tblInvoiceDocPDT.intLineNo = tblInvoiceDocPDTPrj.intLineNo WHERE (tblInvoiceDocPDT.strInvPDocID = @DocumentNumber) ORDER BY tblInvoiceDocPDT.intLineNo
	END
	ELSE IF (@DocumentType = 12) --PurchaseReturns
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
		SELECT tblInvoiceDocPDT.intLineNo, tblInvoiceDocPDT.strPartNumber, tblInvoiceDocPDT.strPartDesc, tblInvoiceDocPDT.decBuyQty, tblInvoiceDocPDTPrj.strProjNumber,tblInvoiceDocPDTPrj.strStage FROM tblInvoiceDocPDT LEFT OUTER JOIN tblInvoiceDocPDTPrj ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocPDTPrj.strInvPDocID AND tblInvoiceDocPDT.intLineNo = tblInvoiceDocPDTPrj.intLineNo WHERE (tblInvoiceDocPDT.strInvPDocID = @DocumentNumber) AND (tblInvoiceDocPDT.strInvPDocID LIKE 'DN%') ORDER BY tblInvoiceDocPDT.intLineNo
	END
	ELSE IF (@DocumentType = 7) --FreehandQuote
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
		SELECT tblOrderDocQDT.intLineNo, tblOrderDocQDT.strPartNumber, tblOrderDocQDT.strPartDesc, tblOrderDocQDT.decQty, tblOrderDocQDTPrj.strProjNumber,tblOrderDocQDTPrj.strStage FROM tblOrderDocQDT LEFT OUTER JOIN tblOrderDocQDTPrj ON tblOrderDocQDT.strOrdDocID = tblOrderDocQDTPrj.strOrdDocID AND tblOrderDocQDT.intLineNo = tblOrderDocQDTPrj.intLineNo WHERE (tblOrderDocQDT.strOrdDocID = @DocumentNumber) ORDER BY tblOrderDocQDT.intLineNo
	END
	ELSE IF (@DocumentType = 9) --PaymentJournal
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber, Department,Stage)
		SELECT tblJournalEntryDocCBDT.intLineNo, tblJournalEntryDocCBDT.intGLNumber, tblJournalEntryDocCBDT.strDesc, 1 AS decBuyQty, tblJournalEntryDocCBDTPrj.strProjNumber, tblJournalEntryDocCBDT.intDept,tblJournalEntryDocCBDTPrj.strStage FROM tblJournalEntryDocCBDT LEFT OUTER JOIN tblJournalEntryDocCBDTPrj ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCBDTPrj.strJEDocID AND tblJournalEntryDocCBDT.intGLNumber = tblJournalEntryDocCBDTPrj.intGLNumber AND tblJournalEntryDocCBDT.intLineNo = tblJournalEntryDocCBDTPrj.intLineNo WHERE (tblJournalEntryDocCBDT.strJEDocID = @DocumentNumber) AND (tblJournalEntryDocCBDT.intType = 1) ORDER BY tblJournalEntryDocCBDT.intLineNo
	END
	ELSE IF (@DocumentType = 10) --ReceiptJournal
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber, Department,Stage)
		SELECT tblJournalEntryDocCBDT.intLineNo, tblJournalEntryDocCBDT.intGLNumber, tblJournalEntryDocCBDT.strDesc, 1 AS decBuyQty, tblJournalEntryDocCBDTPrj.strProjNumber, tblJournalEntryDocCBDT.intDept,tblJournalEntryDocCBDTPrj.strStage FROM tblJournalEntryDocCBDT LEFT OUTER JOIN tblJournalEntryDocCBDTPrj ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCBDTPrj.strJEDocID AND tblJournalEntryDocCBDT.intGLNumber = tblJournalEntryDocCBDTPrj.intGLNumber AND tblJournalEntryDocCBDT.intLineNo = tblJournalEntryDocCBDTPrj.intLineNo WHERE (tblJournalEntryDocCBDT.strJEDocID = @DocumentNumber) AND (tblJournalEntryDocCBDT.intType = 0) ORDER BY tblJournalEntryDocCBDT.intLineNo
	END
	ELSE IF (@DocumentType = 13) --JournalEntry
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber, Department, Module,Stage)
		SELECT tblJournalEntryDocDT.intLineNo, CASE WHEN tblJournalEntryDocDT.intModule = 0 AND ISNULL(tblJournalEntryDocDT.intGLNumber,'') = '' THEN tblJournalEntryDocDT.strCuVeGeID ELSE tblJournalEntryDocDT.intGLNumber END, CASE WHEN tblJournalEntryDocDT.intModule = 0 AND ISNULL(tblJournalEntryDocDT.intGLNumber,'') = '' THEN tblJournalEntryDocDT.strCuVeGeDesc ELSE tblJournalEntryDocDT.strDesc END, 1 AS decBuyQty, tblJournalEntryDocDTPrj.strProjNumber, tblJournalEntryDocDT.intDept, tblJournalEntryDocDT.intModule,tblJournalEntryDocDTPrj.strStage FROM tblJournalEntryDocDT LEFT OUTER JOIN tblJournalEntryDocDTPrj ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDocDTPrj.strJEDocID AND tblJournalEntryDocDT.intLineNo = tblJournalEntryDocDTPrj.intLineNo AND tblJournalEntryDocDT.intModule = tblJournalEntryDocDTPrj.intModule WHERE (tblJournalEntryDocDT.strJEDocID = @DocumentNumber) ORDER BY tblJournalEntryDocDT.intLineNo
	END
	ELSE IF (@DocumentType = 14) --DeliveryAdvice
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
		SELECT tblOrderDocDADT.intLineNo, tblOrderDocDADT.strPartNumber, tblOrderDocDADT.strPartDesc, tblOrderDocDADT.decQty, tblOrderDocDADTPrj.strProjNumber,tblOrderDocDADTPrj.strStage FROM tblOrderDocDADT LEFT OUTER JOIN tblOrderDocDADTPrj ON tblOrderDocDADT.strOrdDADocID = tblOrderDocDADTPrj.strOrdDADocID AND tblOrderDocDADT.intLineNo = tblOrderDocDADTPrj.intLineNo WHERE (tblOrderDocDADT.strOrdDADocID = @DocumentNumber) ORDER BY tblOrderDocDADT.intLineNo
	END
	ELSE IF (@DocumentType = 15) --Adjustment
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
		SELECT tblInvAdjDocDT.intLineNo, tblInvAdjDocDT.strPartNumber, strDesc, tblInvAdjDocDT.decQty, tblInvAdjDocDTPrj.strProjNumber,tblInvAdjDocDTPrj.strStage FROM tblInvAdjDocDT LEFT OUTER JOIN tblInvAdjDocDTPrj ON tblInvAdjDocDT.strAdjDocID = tblInvAdjDocDTPrj.strAdjDocID AND tblInvAdjDocDT.intLineNo = tblInvAdjDocDTPrj.intLineNo LEFT JOIN tblInv ON tblInv.strPartNumber = tblInvAdjDocDT.strPartNumber WHERE (tblInvAdjDocDT.strAdjDocID = @DocumentNumber) ORDER BY tblInvAdjDocDT.intLineNo
	END
	ELSE IF (@DocumentType = 16) --InternalRequisition
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
		SELECT tblInvIntReqDocDT.intLineNo, tblInvIntReqDocDT.strPartNumber, strDesc, tblInvIntReqDocDT.decQty, tblInvIntReqDocDTPrj.strProjNumber, tblInvIntReqDocDTPrj.strStage FROM tblInvIntReqDocDT LEFT OUTER JOIN tblInvIntReqDocDTPrj ON tblInvIntReqDocDT.strInvIntReqDocID = tblInvIntReqDocDTPrj.strInvIntReqDocID AND tblInvIntReqDocDT.intLineNo = tblInvIntReqDocDTPrj.intLineNo LEFT JOIN tblInv ON tblInv.strPartNumber = tblInvIntReqDocDT.strPartNumber WHERE (tblInvIntReqDocDT.strInvIntReqDocID = @DocumentNumber) ORDER BY tblInvIntReqDocDT.intLineNo
	END
	ELSE IF (@DocumentType = 17) --IssueRequisition
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
		SELECT tblInvIssReqDocDT.intLineNo, tblInvIssReqDocDT.strPartNumber, strDesc, tblInvIssReqDocDT.decQty, tblInvIssReqDocDTPrj.strProjNumber, tblInvIssReqDocDTPrj.strStage FROM tblInvIssReqDocDT LEFT OUTER JOIN tblInvIssReqDocDTPrj ON tblInvIssReqDocDT.strInvIssReqDocID = tblInvIssReqDocDTPrj.strInvIssReqDocID AND tblInvIssReqDocDT.intLineNo = tblInvIssReqDocDTPrj.intLineNo LEFT JOIN tblInv ON tblInv.strPartNumber = tblInvIssReqDocDT.strPartNumber WHERE (tblInvIssReqDocDT.strInvIssReqDocID = @DocumentNumber) ORDER BY tblInvIssReqDocDT.intLineNo
	END
	ELSE IF (@DocumentType = 18) --Repackaging
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
		SELECT DISTINCT tblInvRepackDocDT.intLineNo, tblInvRepackDocDT.strPartNumber, strDesc, tblInvRepackDocDT.decQty, tblInvRepackDocDTPrj.strProjNumber, tblInvRepackDocDTPrj.strStage FROM tblInvRepackDocDT LEFT OUTER JOIN tblInvRepackDocDTPrj ON tblInvRepackDocDT.strRepackDocID = tblInvRepackDocDTPrj.strRepackDocID AND tblInvRepackDocDTPrj.intLineNo = tblInvRepackDocDTPrj.intLineNo LEFT JOIN tblInv ON tblInv.strPartNumber = tblInvRepackDocDT.strPartNumber WHERE (tblInvRepackDocDT.strRepackDocID = @DocumentNumber) ORDER BY tblInvRepackDocDT.intLineNo
	END

	ELSE IF (@DocumentType = 19) --BankManager
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
		SELECT tblBankManagerBatchDT.intLineNo, tblBankManagerBatchDT.strCuVeGeInID, ISNULL(tblAccounts.strDesc,'') AS strDesc, 1 AS decQty, tblBankManagerBatchDTPrj.strProjNumber, tblBankManagerBatchDTPrj.strStage FROM tblBankManagerBatchDT LEFT OUTER JOIN tblBankManagerBatchDTPrj ON tblBankManagerBatchDT.strBMDocID = tblBankManagerBatchDTPrj.strBMDocID AND tblBankManagerBatchDT.intLineNo = tblBankManagerBatchDTPrj.intLineNo LEFT JOIN tblAccounts ON tblBankManagerBatchDT.strCuVeGeInID = tblAccounts.intGLNumber WHERE (tblBankManagerBatchDT.strBMDocID = @DocumentNumber) AND (UPPER(tblBankManagerBatchDT.strAccountType) = 'GENERAL LEDGER') ORDER BY tblBankManagerBatchDT.intLineNo
	
	END
	ELSE IF (@DocumentType = 20) --Lay-By
       BEGIN
               INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
		       SELECT tblOrderDocDT.intLineNo, tblOrderDocDT.strPartNumber, tblOrderDocDT.strPartDesc, tblOrderDocDT.decQty, tblOrderDocDTPrj.strProjNumber,tblOrderDocDTPrj.strStage FROM tblOrderDocDT LEFT OUTER JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo WHERE (tblOrderDocDT.strOrdDocID = @DocumentNumber) ORDER BY tblOrderDocDT.intLineNo
       END
	ELSE IF (@DocumentType = 21) --Quotation
    BEGIN
			INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
			SELECT tblWSProcessDocDT.[LineNo], tblWSProcessDocDT.PartNumber, tblWSProcessDocDT.PartDesc, tblWSProcessDocDT.QuotedQty, tblWSOrderDocDTPrj.strProjNumber,tblWSOrderDocDTPrj.strStage FROM tblWSProcessDocDT LEFT OUTER JOIN tblWSOrderDocDTPrj ON tblWSProcessDocDT.ProcessDocID = tblWSOrderDocDTPrj.strOrdDocID AND tblWSProcessDocDT.[LineNo] = tblWSOrderDocDTPrj.intLineNo WHERE (tblWSProcessDocDT.ProcessDocID= @DocumentNumber) ORDER BY tblWSProcessDocDT.[LineNo]
    END
	ELSE IF (@DocumentType = 22) --ProcessJob
    BEGIN
			INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
			SELECT tblWSProcessDocDT.[LineNo], tblWSProcessDocDT.PartNumber, tblWSProcessDocDT.PartDesc, tblWSProcessDocDT.JobQty, tblWSOrderDocDTPrj.strProjNumber,tblWSOrderDocDTPrj.strStage FROM tblWSProcessDocDT LEFT OUTER JOIN tblWSOrderDocDTPrj ON tblWSProcessDocDT.ProcessDocID = tblWSOrderDocDTPrj.strOrdDocID AND tblWSProcessDocDT.[LineNo] = tblWSOrderDocDTPrj.intLineNo WHERE (tblWSProcessDocDT.ProcessDocID= @DocumentNumber) ORDER BY tblWSProcessDocDT.[LineNo]
    END
	ELSE IF (@DocumentType = 23) --InvoiceJob
    BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage)
		SELECT tblInvoiceDocDT.intLineNo, tblInvoiceDocDT.strPartNumber, tblInvoiceDocDT.strPartDesc, tblInvoiceDocDT.decQty, tblInvoiceDocDTPrj.strProjNumber,tblInvoiceDocDTPrj.strStage FROM tblInvoiceDocDT LEFT OUTER JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo WHERE (tblInvoiceDocDT.strInvDocID = @DocumentNumber) ORDER BY tblInvoiceDocDT.intLineNo
    END

	ELSE IF(@DocumentType = 24) --Manufacturing Invoice Job
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage,WCCode,IntType)
        SELECT 0 AS intLineNo, tblManJobByProd.strPartNumber, tblManJobByProd.strDesc, tblManJobByProd.decManQty AS decQty, tblManJobPrj.strProjNumber, tblManJobPrj.strStage, ISNULL(strWCCode,'') AS WCCode, @TypeBOM AS intType FROM tblManJobByProd LEFT OUTER JOIN tblManJobPrj ON tblManJobByProd.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobByProd.strPartNumber = tblManJobPrj.strPartNumber AND tblManJobPrj.intType = @TypeBOM WHERE (tblManJobByProd.strJBDocID = @DocumentNumber) UNION ALL SELECT tblManJobCompInv.intLineNo, tblManJobCompInv.strPartNumber, tblManJobCompInv.strDesc, tblManJobCompInv.decQty, tblManJobPrj.strProjNumber, tblManJobPrj.strStage, tblManJobCompInv.strWCCode, @TypeINV AS intType FROM tblManJobCompInv LEFT OUTER JOIN tblManJobPrj ON tblManJobCompInv.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobCompInv.strWCCode = tblManJobPrj.strWCCode AND tblManJobCompInv.intLineNo = tblManJobPrj.intLineNo AND tblManJobPrj.intType = @TypeINV WHERE (tblManJobCompInv.strJBDocID = @DocumentNumber) UNION ALL SELECT tblManJobCompLab.intLineNo, tblManJobCompLab.strLabCode AS strPartNumber, tblManLabour.strDesc, (tblManJobCompLab.decManVariableHours + tblManJobCompLab.decSetupHours + tblManJobCompLab.decBreakdownHours) AS decQty, tblManJobPrj.strProjNumber, tblManJobPrj.strStage, tblManJobCompLab.strWCCode, @TypeLAB AS intType FROM tblManJobCompLab INNER JOIN tblManLabour ON tblManJobCompLab.strLabCode = tblManLabour.strLabCode LEFT OUTER JOIN tblManJobPrj ON tblManJobCompLab.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobCompLab.strWCCode = tblManJobPrj.strWCCode AND tblManJobCompLab.intLineNo = tblManJobPrj.intLineNo AND tblManJobPrj.intType = @TypeLAB WHERE (tblManJobCompLab.strJBDocID = @DocumentNumber) UNION ALL SELECT tblManJobCompMach.intLineNo, tblManJobCompMach.strMachCode AS strPartNumber, tblManMachinery.strDesc, (tblManJobCompMach.decManVariableHours + tblManJobCompMach.decSetupHours + tblManJobCompMach.decBreakdownHours) AS decQty, tblManJobPrj.strProjNumber, tblManJobPrj.strStage, tblManJobCompMach.strWCCode, @TypeMACH AS intType FROM tblManJobCompMach INNER JOIN tblManMachinery ON tblManJobCompMach.strMachCode = tblManMachinery.strMachCode LEFT OUTER JOIN tblManJobPrj ON tblManJobCompMach.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobCompMach.strWCCode = tblManJobPrj.strWCCode AND tblManJobCompMach.intLineNo = tblManJobPrj.intLineNo AND tblManJobPrj.intType = @TypeMACH WHERE (tblManJobCompMach.strJBDocID = @DocumentNumber) UNION ALL SELECT tblManJobCompOverhead.intLineNo, tblManJobCompOverhead.intGLNumber AS strPartNumber, tblAccounts.strDesc, 1 AS decQty, tblManJobPrj.strProjNumber, tblManJobPrj.strStage, tblManJobCompOverhead.strWCCode, @TypeRC AS intType FROM tblManJobCompOverhead INNER JOIN tblAccounts ON tblManJobCompOverhead.intGLNumber = tblAccounts.intGLNumber LEFT OUTER JOIN tblManJobPrj ON tblManJobCompOverhead.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobCompOverhead.strWCCode = tblManJobPrj.strWCCode AND tblManJobCompOverhead.intLineNo = tblManJobPrj.intLineNo AND tblManJobPrj.intType = @TypeRC WHERE (tblManJobCompOverhead.strJBDocID = @DocumentNumber) ORDER BY intType, intLineNo, strPartNumber
	END

	ELSE IF(@DocumentType = 25) --Issue Work in Progress
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage,IntType)
		SELECT tblManWIPCompInv.intLineNo, tblManWIPCompInv.strPartNumber, tblManWIPCompInv.strDesc, CASE WHEN tblManWIPCompInv.decPostAmount < 0 THEN tblManWIPCompInv.decReturnQty * -1 ELSE tblManWIPCompInv.decPostQty END AS Quantity, tblManWIPPrj.strProjNumber, tblManWIPPrj.strStage, @TypeINV AS intType FROM tblManWIPCompInv LEFT OUTER JOIN tblManWIPPrj ON tblManWIPCompInv.strWIPDocID = tblManWIPPrj.strWIPDocID AND tblManWIPCompInv.strPartNumber = tblManWIPPrj.strPartNumber AND tblManWIPPrj.intType = @TypeINV WHERE (tblManWIPCompInv.strWIPDocID = @DocumentNumber) UNION ALL SELECT tblManWIPCompLab.intLineNo, tblManWIPCompLab.strLabCode AS strPartNumber, tblManLabour.strDesc, CASE WHEN tblManWIPCompLab.decPostAmount < 0 THEN (tblManWIPCompLab.decReturnVariableHours + tblManWIPCompLab.decReturnSetupHours + tblManWIPCompLab.decReturnBreakdownHours) ELSE (tblManWIPCompLab.decPostVariableHours + tblManWIPCompLab.decPostSetupHours + tblManWIPCompLab.decPostBreakdownHours) END AS decQty, tblManWIPPrj.strProjNumber, tblManWIPPrj.strStage, @TypeLAB AS intType FROM tblManWIPCompLab INNER JOIN tblManLabour ON tblManWIPCompLab.strLabCode = tblManLabour.strLabCode LEFT OUTER JOIN tblManWIPPrj ON tblManWIPCompLab.strWIPDocID = tblManWIPPrj.strWIPDocID AND tblManWIPCompLab.strLabCode = tblManWIPPrj.strPartNumber  AND tblManWIPPrj.intType = @TypeLAB WHERE (tblManWIPCompLab.strWIPDocID = @DocumentNumber) UNION ALL SELECT tblManWIPCompMach.intLineNo, tblManWIPCompMach.strMachCode AS strPartNumber, tblManMachinery.strDesc, CASE WHEN tblManWIPCompMach.decPostAmount < 0 THEN (tblManWIPCompMach.decReturnVariableHours + tblManWIPCompMach.decReturnSetupHours + tblManWIPCompMach.decReturnBreakdownHours) ELSE (tblManWIPCompMach.decPostVariableHours + tblManWIPCompMach.decPostSetupHours + tblManWIPCompMach.decPostBreakdownHours) END AS decQty, tblManWIPPrj.strProjNumber, tblManWIPPrj.strStage, @TypeMACH AS intType FROM tblManWIPCompMach INNER JOIN tblManMachinery ON tblManWIPCompMach.strMachCode = tblManMachinery.strMachCode LEFT OUTER JOIN tblManWIPPrj ON tblManWIPCompMach.strWIPDocID = tblManWIPPrj.strWIPDocID AND tblManWIPCompMach.strMachCode = tblManWIPPrj.strPartNumber AND tblManWIPPrj.intType = @TypeMACH WHERE (tblManWIPCompMach.strWIPDocID = @DocumentNumber) UNION ALL SELECT tblManWIPCompOverhead.intLineNo, tblManWIPCompOverhead.intGLNumber AS strPartNumber, tblAccounts.strDesc, 1 AS decQty, tblManWIPPrj.strProjNumber, tblManWIPPrj.strStage, @TypeRC AS intType FROM tblManWIPCompOverhead INNER JOIN tblAccounts ON tblManWIPCompOverhead.intGLNumber = tblAccounts.intGLNumber LEFT OUTER JOIN tblManWIPPrj ON tblManWIPCompOverhead.strWIPDocID = tblManWIPPrj.strWIPDocID AND tblManWIPCompOverhead.intGLNumber = tblManWIPPrj.strPartNumber AND tblManWIPPrj.intType = @TypeRC WHERE (tblManWIPCompOverhead.strWIPDocID = @DocumentNumber) ORDER BY tblManWIPCompInv.intLineNo
	END

	ELSE IF(@DocumentType = 26) --CloseJob
	BEGIN
		INSERT INTO @Result (LineNumber, PartNumber, [Description], Quantity, ProjNumber,Stage,LngID,IntType)
        SELECT NULL AS intLineNo, tblManJobClose.strPartNumber, tblInv.strDesc, tblManJobClose.decManQtyClosed AS decQty, tblManJobClosePrj.strProjNumber, tblManJobClosePrj.strStage, tblManJobClose.lngID AS LngID, tblManJobClose.intType as IntType  FROM tblManJobClose LEFT OUTER JOIN tblManJobClosePrj ON tblManJobClose.lngID = tblManJobClosePrj.lngJBID LEFT JOIN tblInv ON tblInv.strPartNumber = tblManJobClose.strPartNumber WHERE (tblManJobClose.strJBDocID = @DocumentNumber) ORDER BY tblManJobClosePrj.lngJBID, tblManJobClosePrj.lngID
	END

	SELECT * FROM @Result

END
GO
/****** Object:  StoredProcedure [dbo].[GetProjectAllocationStage]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetProjectAllocationStage]
(	
	@strProjNumber VARCHAR(50)	
)
AS
BEGIN
	SELECT strStage FROM tblProjectsStages WHERE strProjNumber = @strProjNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetProjectsPickerData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*************End [GetCenterPickerData]**************************/
CREATE PROCEDURE [dbo].[GetProjectsPickerData]
    (
      @isAll BIT = 0 ,
      @isActive BIT = 0 ,
      @isInactive BIT = 0
    )
AS
    BEGIN
        SET NOCOUNT ON;
        IF @isAll = 1
            BEGIN
                SELECT  strProjNumber AS ProjectNumber ,
                        strProjName AS ProjectName ,
                        strCustName AS CustomerName ,
                        ( SELECT    strCustDesc
                          FROM      tblCustomers
                          WHERE     strCustName = tblProjects.strCustName
                        ) AS CustomerDescription ,
                        intStatus AS Status
                FROM    tblProjects
                ORDER BY strProjNumber;
            END;
        ELSE
            IF @isActive = 1
                BEGIN
                    SELECT  strProjNumber AS ProjectNumber ,
                            strProjName AS ProjectName ,
                            strCustName AS CustomerName ,
                            ( SELECT    strCustDesc
                              FROM      tblCustomers
                              WHERE     strCustName = tblProjects.strCustName
                            ) AS CustomerDescription ,
                            intStatus AS Status
                    FROM    tblProjects
                    WHERE   intStatus < 20
                    ORDER BY strProjNumber;
                END;
            ELSE
                IF @isInactive = 1
                    BEGIN
                        SELECT  strProjNumber AS ProjectNumber ,
                                strProjName AS ProjectName ,
                                strCustName AS CustomerName ,
                                ( SELECT    strCustDesc
                                  FROM      tblCustomers
                                  WHERE     strCustName = tblProjects.strCustName
                                ) AS CustomerDescription ,
                                intStatus AS Status
                        FROM    tblProjects
                        WHERE   intStatus >= 20
                        ORDER BY strProjNumber;
                    END;
    END;
GO
/****** Object:  StoredProcedure [dbo].[GetPurchaseDocuments]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetPurchaseDocuments]
    (
      @typePOPIToFind INT = 0 ,
      @quotesSelectedIndex INT = -1 ,
      @locationSelectedIndex INT = -1 ,
      @departmentSelectedIndex INT = -1 ,
      @sqDept INT = -1 ,
      @sqLocation NVARCHAR(50) = NULL ,
      @isBookmarks BIT = 0 ,
      @isCriteriaWorkflow BIT = 0 ,
      @documentStartDate DATETIME ,
      @documentEndDate DATETIME ,
      @isFilter BIT = 0 ,
      @createReturn INT = 0 ,
      @vendorNameLabel NVARCHAR(100)
    )
AS
    SET NOCOUNT ON;
    IF @typePOPIToFind = 1
        BEGIN
            IF @isFilter = 1
                IF @quotesSelectedIndex > 0
                    BEGIN
                        PRINT 'first';
                        SELECT  tblOrderDocP.strVendName AS VendorName ,
                                tblVendors.strVendDesc AS VendorDescription ,
                                tblOrderDocP.dteJournalDate AS JournalDate ,
                                tblOrderDocP.strOrdPDocID AS OrdPDocID ,
                                tblOrderDocP.strReference AS Reference ,
                                tblOrderDocP.decTotal AS Total ,
                                tblOrderDocP.bitIsForeign AS IsForeign ,
                                tblOrderDocP.decTotalF AS TotalF ,
                                tblOrderDocP.strCurrency AS Currency ,
                                CASE WHEN ( SELECT  COUNT(Z.strLocation)
                                            FROM    ( SELECT  strLocation
                                                      FROM    tblOrderDocPDT
                                                      WHERE   ( strOrdPDocID = tblOrderDocP.strOrdPDocID )
                                                      GROUP BY strLocation
                                                    ) Z
                                          ) > 1 THEN '<MULTIPLE>'
                                     ELSE ISNULL(( SELECT   strLocation
                                                   FROM     tblOrderDocPDT
                                                   WHERE    ( strOrdPDocID = tblOrderDocP.strOrdPDocID )
                                                   GROUP BY strLocation
                                                 ), '')
                                END AS Location ,
                                ISNULL(( SELECT CAST(intDept AS NVARCHAR(4))
                                                + ' ' + strDesc
                                         FROM   tblDepartments
                                         WHERE  ( intDept = tblOrderDocP.intDept )
                                       ), '') AS Department ,
                                CASE WHEN @sqLocation = '%%' THEN 1
                                     ELSE ISNULL(( SELECT   COUNT(strLocation)
                                                   FROM     tblOrderDocPDT
                                                   WHERE    ( strOrdPDocID = tblOrderDocP.strOrdPDocID )
                                                            AND ( strLocation = @sqLocation )
                                                   GROUP BY strLocation
                                                 ), 0)
                                END
                        FROM    tblOrderDocP
                                INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
                        WHERE   ( tblOrderDocP.bitCleared = 0
                                  AND ( tblOrderDocP.intDocType = 1
                                        AND ( tblOrderDocP.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                                      )
                                )
                                AND ( ( ( @isBookmarks = 1 )
                                        AND ( bitBookmark = 1 )
                                      )
                                      OR ( bitBookmark = 0 )
                                    )
                                AND ( ( ( @isCriteriaWorkflow = 1 )
                                        AND ( bitInvWorkflowGRV = 1 )
                                      )
                                      OR ( bitInvWorkflowGRV = 0 )
                                    )
                                AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                        AND ( tblVendors.strVendName = @vendorNameLabel )
                                      )
                                      OR LEN(ISNULL(@vendorNameLabel, '')) = 0
                                    );
                    END;

                ELSE
                    SELECT  tblOrderDocP.strVendName AS VendorName ,
                            tblVendors.strVendDesc AS VendorDescription ,
                            tblOrderDocP.dteJournalDate AS JournalDate ,
                            tblOrderDocP.strOrdPDocID AS OrdPDocID ,
                            tblOrderDocP.strReference AS Reference ,
                            tblOrderDocP.decTotal AS Total ,
                            tblOrderDocP.bitIsForeign AS IsForeign ,
                            tblOrderDocP.decTotalF AS TotalF ,
                            tblOrderDocP.strCurrency AS Currency ,
                            CASE WHEN ( SELECT  COUNT(Z.strLocation)
                                        FROM    ( SELECT    strLocation
                                                  FROM      tblOrderDocPDT
                                                  WHERE     ( strOrdPDocID = tblOrderDocP.strOrdPDocID )
                                                  GROUP BY  strLocation
                                                ) Z
                                      ) > 1 THEN '<MULTIPLE>'
                                 ELSE ISNULL(( SELECT   strLocation
                                               FROM     tblOrderDocPDT
                                               WHERE    ( strOrdPDocID = tblOrderDocP.strOrdPDocID )
                                               GROUP BY strLocation
                                             ), '')
                            END AS Location ,
                            ISNULL(( SELECT CAST(intDept AS NVARCHAR(4)) + ' '
                                            + strDesc
                                     FROM   tblDepartments
                                     WHERE  ( intDept = tblOrderDocP.intDept )
                                   ), '') AS Department ,
                            CASE WHEN @sqLocation = '%%' THEN 1
                                 ELSE ISNULL(( SELECT   COUNT(strLocation)
                                               FROM     tblOrderDocPDT
                                               WHERE    ( strOrdPDocID = tblOrderDocP.strOrdPDocID )
                                                        AND ( strLocation = @sqLocation )
                                               GROUP BY strLocation
                                             ), 0)
                            END
                    FROM    tblOrderDocP
                            INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
                    WHERE   tblOrderDocP.intDocType = 1
                            AND tblOrderDocP.dteJournalDate BETWEEN @documentStartDate
                                                            AND
                                                              @documentEndDate
                            AND ( ( @isBookmarks = 1 )
                                  AND ( bitBookmark = 1 )
                                )
                            AND ( ( @isCriteriaWorkflow = 1 )
                                  AND ( bitInvWorkflowGRV = 1 )
                                )
                            AND ( ( LEN(@vendorNameLabel) > 0 )
                                  AND ( tblVendors.strVendName = @vendorNameLabel )
                                );

            ELSE
                IF @quotesSelectedIndex > 0
                    SELECT  tblOrderDocP.strVendName AS VendorName ,
                            tblVendors.strVendDesc AS VendorDescription ,
                            tblOrderDocP.dteJournalDate AS JournalDate ,
                            tblOrderDocP.strOrdPDocID AS OrdPDocID ,
                            tblOrderDocP.strReference AS Reference ,
                            tblOrderDocP.decTotal AS Total ,
                            tblOrderDocP.bitIsForeign AS IsForeign ,
                            tblOrderDocP.decTotalF AS TotalF ,
                            tblOrderDocP.strCurrency AS Currency
                    FROM    tblOrderDocP
                            INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
                    WHERE   ( tblOrderDocP.bitCleared = 0 )
                            AND ( tblOrderDocP.intDocType = 1 )
                            AND ( tblOrderDocP.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                            AND ( ( ( @isBookmarks = 1 )
                                    AND ( bitBookmark = 1 )
                                  )
                                  OR ( bitBookmark = 0 )
                                )
                            AND ( ( ( @isCriteriaWorkflow = 1 )
                                    AND ( bitInvWorkflowGRV = 1 )
                                  )
                                  OR ( bitInvWorkflowGRV = 0 )
                                )
                            AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                    AND ( tblVendors.strVendName = @vendorNameLabel )
                                  )
                                  OR LEN(ISNULL(@vendorNameLabel, '')) = 0
                                );

                ELSE
                    SELECT  tblOrderDocP.strVendName AS VendorName ,
                            tblVendors.strVendDesc AS VendorDescription ,
                            tblOrderDocP.dteJournalDate AS JournalDate ,
                            tblOrderDocP.strOrdPDocID AS OrdPDocID ,
                            tblOrderDocP.strReference AS Reference ,
                            tblOrderDocP.decTotal AS Total ,
                            tblOrderDocP.bitIsForeign AS IsForeign ,
                            tblOrderDocP.decTotalF AS TotalF ,
                            tblOrderDocP.strCurrency AS Currency
                    FROM    tblOrderDocP
                            INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
                    WHERE   ( tblOrderDocP.intDocType = 1 )
                            AND ( tblOrderDocP.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                            AND ( ( ( @isBookmarks = 1 )
                                    AND ( bitBookmark = 1 )
                                  )
                                  OR ( bitBookmark = 0 )
                                )
                            AND ( ( ( @isCriteriaWorkflow = 1 )
                                    AND ( bitInvWorkflowGRV = 1 )
                                  )
                                  OR ( bitInvWorkflowGRV = 0 )
                                )
                            AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                    AND ( tblVendors.strVendName = @vendorNameLabel )
                                  )
                                  OR LEN(ISNULL(@vendorNameLabel, '')) = 0
                                );

        END;
    ELSE
        IF @typePOPIToFind = 2
            BEGIN
                PRINT 'type2';
                IF @createReturn = 1
                    BEGIN
                        PRINT 'fdfdh';
                        SELECT  tblInvoiceDocP.strVendName AS VendorName ,
                                tblVendors.strVendDesc AS VendorDescription ,
                                tblInvoiceDocP.dteJournalDate AS JournalDate ,
                                tblInvoiceDocP.strInvPDocID AS InvPDocID ,
                                tblInvoiceDocP.strReference AS Reference ,
                                tblInvoiceDocP.decTotal AS Total ,
                                tblInvoiceDocP.bitIsForeign AS IsForeign ,
                                tblInvoiceDocP.decTotalF AS TotalF ,
                                tblInvoiceDocP.strCurrency AS Currency,
								tblInvoiceDocP.strVendInvNo AS VendInvNo
                        FROM    tblInvoiceDocP
                                INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName
                        WHERE   ( tblInvoiceDocP.strInvPDocID NOT LIKE 'DN%' )
                                AND ( tblInvoiceDocP.bitHistoryTrans = 0 )
                                AND ( tblInvoiceDocP.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                                AND ( ( ( @isBookmarks = 1 )
                                        AND ( bitBookmark = 1 )
                                      )
                                      OR ( bitBookmark = 0 )
                                    )
                                AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                        AND ( tblVendors.strVendName = @vendorNameLabel )
                                      )
                                      OR LEN(ISNULL(@vendorNameLabel, '')) = 0
                                    );
                    END;
                ELSE
                    BEGIN
                        PRINT 1;
                        SELECT  tblInvoiceDocP.strVendName AS VendorName ,
                                tblVendors.strVendDesc AS VendorDescription ,
                                tblInvoiceDocP.dteJournalDate AS JournalDate ,
                                tblInvoiceDocP.strInvPDocID AS InvPDocID ,
                                tblInvoiceDocP.strReference AS Reference ,
                                tblInvoiceDocP.decTotal AS Total ,
                                tblInvoiceDocP.bitIsForeign AS IsForeign ,
                                tblInvoiceDocP.decTotalF AS TotalF ,
                                tblInvoiceDocP.strCurrency AS Currency,
								tblInvoiceDocP.strVendInvNo AS VendInvNo
                        FROM    tblInvoiceDocP
                                INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName
                        WHERE   ( tblInvoiceDocP.bitHistoryTrans = 0 )
                                AND ( tblInvoiceDocP.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                                AND ( ( ( @isBookmarks = 1 )
                                        AND ( bitBookmark = 1 )
                                      )
                                      OR ( bitBookmark = 0 )
                                    )
                                AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                        AND ( tblVendors.strVendName = @vendorNameLabel )
                                      )
                                      OR LEN(ISNULL(@vendorNameLabel, '')) = 0
                                    );
                    END;
            END;
        ELSE
            IF @typePOPIToFind = 3
                BEGIN
                    PRINT 'type3';
                    SELECT  tblInvoiceDocP.strVendName AS VendorName ,
                            tblVendors.strVendDesc AS VendorDescription ,
                            tblInvoiceDocP.dteJournalDate AS JournalDate ,
                            tblInvoiceDocP.strInvPDocID AS InvPDocID ,
                            tblInvoiceDocP.strReference AS Reference ,
                            tblInvoiceDocP.decTotal AS Total ,
                            tblInvoiceDocP.bitIsForeign AS IsForeign ,
                            tblInvoiceDocP.decTotalF AS TotalF ,
                            tblInvoiceDocP.strCurrency AS Currency
                    FROM    tblInvoiceDocP
                            INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName
                    WHERE   ( tblInvoiceDocP.bitHistoryTrans = 0 )
                            AND ( tblInvoiceDocP.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                            AND ( ( ( @isBookmarks = 1 )
                                    AND ( bitBookmark = 1 )
                                  )
                                  OR ( bitBookmark = 0 )
                                )
                            AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                    AND ( tblVendors.strVendName = @vendorNameLabel )
                                  )
                                  OR LEN(ISNULL(@vendorNameLabel, '')) = 0
                                );
                END;
            ELSE
                IF @typePOPIToFind = 4
                    BEGIN
                        PRINT 'type4';
                        IF @quotesSelectedIndex > 0
                            SELECT  tblOrderDocP.strVendName AS VendorName ,
                                    tblVendors.strVendDesc AS VendorDescription ,
                                    tblOrderDocP.dteJournalDate AS JournalDate ,
                                    tblOrderDocP.strOrdPDocID AS OrdPDocID ,
                                    tblOrderDocP.strReference AS Reference ,
                                    tblOrderDocP.decTotal AS Total ,
                                    tblOrderDocP.bitIsForeign AS IsForeign ,
                                    tblOrderDocP.decTotalF AS TotalF ,
                                    tblOrderDocP.strCurrency AS Currency
                            FROM    tblOrderDocP
                                    INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
                            WHERE   ( tblOrderDocP.intDocType = 2 )
                                    AND ( tblOrderDocP.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                                    AND ( ( ( @isBookmarks = 1 )
                                            AND ( bitBookmark = 1 )
                                          )
                                          OR ( bitBookmark = 0 )
                                        )
                                    AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                            AND ( tblVendors.strVendName = @vendorNameLabel )
                                          )
                                          OR LEN(ISNULL(@vendorNameLabel, '')) = 0
                                        );
                        ELSE
                            SELECT  tblOrderDocP.strVendName AS VendorName ,
                                    tblVendors.strVendDesc AS VendorDescription ,
                                    tblOrderDocP.dteJournalDate AS JournalDate ,
                                    tblOrderDocP.strOrdPDocID AS OrdPDocID ,
                                    tblOrderDocP.strReference AS Reference ,
                                    tblOrderDocP.decTotal AS Total ,
                                    tblOrderDocP.bitIsForeign AS IsForeign ,
                                    tblOrderDocP.decTotalF AS TotalF ,
                                    tblOrderDocP.strCurrency AS Currency
                            FROM    tblOrderDocP
                                    INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
                            WHERE   ( tblOrderDocP.bitCleared = 0 )
                                    AND ( tblOrderDocP.intDocType = 2 )
                                    AND ( tblOrderDocP.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                                    AND ( ( ( @isBookmarks = 1 )
                                            AND ( bitBookmark = 1 )
                                          )
                                          OR ( bitBookmark = 0 )
                                        )
                                    AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                            AND ( tblVendors.strVendName = @vendorNameLabel )
                                          )
                                          OR LEN(ISNULL(@vendorNameLabel, '')) = 0
                                        );
                    END;
                ELSE
                    IF @typePOPIToFind = 5
                        BEGIN
                            PRINT 'type5';
                            SELECT  tblOrderDocP.strVendName AS VendorName ,
                                    tblVendors.strVendDesc AS VendorDescription ,
                                    tblOrderDocP.dteJournalDate AS JournalDate ,
                                    tblOrderDocP.strOrdPDocID AS OrdPDocID ,
                                    tblOrderDocP.strReference AS Reference ,
                                    tblOrderDocP.decTotal AS Total ,
                                    tblOrderDocP.bitIsForeign AS IsForeign ,
                                    tblOrderDocP.decTotalF AS TotalF ,
                                    tblOrderDocP.strCurrency AS Currency ,
                                    tblOrderDocP.decDiscPerc AS DiscPerc
                            FROM    tblOrderDocP
                                    INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
                            WHERE   ( tblOrderDocP.bitCleared = 0 )
                                    AND ( tblOrderDocP.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                                    AND ( tblVendors.bitInvWorkflowPO = 1 )
                                    AND ( ( ( @isBookmarks = 1 )
                                            AND ( bitBookmark = 1 )
                                          )
                                          OR ( bitBookmark = 0 )
                                        )
                                    AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                            AND ( tblVendors.strVendName = @vendorNameLabel )
                                          )
                                          OR LEN(ISNULL(@vendorNameLabel, '')) = 0
                                        );
                        END;
                    ELSE
                        IF @typePOPIToFind = 6
                            BEGIN
                                PRINT 'type6';
                                IF @quotesSelectedIndex > 0
                                    SELECT  tblOrderDocPG.strVendName AS VendorName ,
                                            tblVendors.strVendDesc AS VendorDescription ,
                                            tblOrderDocPG.dteJournalDate AS JournalDate ,
                                            tblOrderDocPG.strOrdPGDocID AS OrdPGDocID ,
                                            tblOrderDocPG.strReference AS Reference ,
                                            tblOrderDocPG.decTotal AS Total ,
                                            tblOrderDocPG.bitIsForeign AS IsForeign ,
                                            tblOrderDocPG.decTotalF AS TotalF ,
                                            tblOrderDocPG.strCurrency AS Currency ,
                                            tblOrderDocPG.decDiscPerc AS DiscPerc
                                    FROM    tblOrderDocPG
                                            INNER JOIN tblVendors ON tblOrderDocPG.strVendName = tblVendors.strVendName
                                    WHERE   ( tblOrderDocPG.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                                            AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                                    AND ( tblVendors.strVendName = @vendorNameLabel )
                                                  )
                                                  OR LEN(ISNULL(@vendorNameLabel,
                                                              '')) = 0
                                                );

                                ELSE
                                    SELECT  tblOrderDocPG.strVendName AS VendorName ,
                                            tblVendors.strVendDesc AS VendorDescription ,
                                            tblOrderDocPG.dteJournalDate AS JournalDate ,
                                            tblOrderDocPG.strOrdPGDocID AS OrdPGDocID ,
                                            tblOrderDocPG.strReference AS Reference ,
                                            tblOrderDocPG.decTotal AS Total ,
                                            tblOrderDocPG.bitIsForeign AS IsForeign ,
                                            tblOrderDocPG.decTotalF AS TotalF ,
                                            tblOrderDocPG.strCurrency AS Currency ,
                                            tblOrderDocPG.decDiscPerc AS DiscPerc
                                    FROM    tblOrderDocPG
                                            INNER JOIN tblVendors ON tblOrderDocPG.strVendName = tblVendors.strVendName
                                    WHERE   ( tblOrderDocPG.bitCleared = 0 )
                                            AND ( tblOrderDocPG.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                                            AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                                    AND ( tblVendors.strVendName = @vendorNameLabel )
                                                  )
                                                  OR LEN(ISNULL(@vendorNameLabel,
                                                              '')) = 0
                                                );
                            END;
GO
/****** Object:  StoredProcedure [dbo].[GetPurchaseDocumentsNew]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetPurchaseDocumentsNew]
    (
      @typePOPIToFind INT = 0 ,
      @quotesSelectedIndex INT = -1 ,
      @locationSelectedIndex INT = -1 ,
      @departmentSelectedIndex INT = -1 ,
      @sqDept INT = -1 ,
      @sqLocation NVARCHAR(50) = NULL ,
      @isCriteriaWorkflow BIT = 0 ,
      @documentStartDate DATETIME ,
      @documentEndDate DATETIME ,
      @isFilter BIT = 0 ,
      @createReturn INT = 0 ,
      @vendorNameLabel NVARCHAR(100)
    )
AS
    SET NOCOUNT ON;
    IF @typePOPIToFind = 1
        BEGIN
            IF @isFilter = 1
                IF @quotesSelectedIndex > 0
                    BEGIN
                        SELECT  tblOrderDocP.strVendName AS VendorName ,
                                tblVendors.strVendDesc AS VendorDescription ,
                                tblOrderDocP.dteJournalDate AS JournalDate ,
                                tblOrderDocP.strOrdPDocID AS OrdPDocID ,
                                tblOrderDocP.strReference AS Reference ,
                                tblOrderDocP.decTotal AS Total ,
                                tblOrderDocP.bitIsForeign AS IsForeign ,
                                tblOrderDocP.decTotalF AS TotalF ,
                                tblOrderDocP.strCurrency AS Currency ,
                                tblOrderDocP.bitBookmark AS IsBookmark ,
                                CASE WHEN ( SELECT  COUNT(Z.strLocation)
                                            FROM    ( SELECT  strLocation
                                                      FROM    tblOrderDocPDT
                                                      WHERE   ( strOrdPDocID = tblOrderDocP.strOrdPDocID )
                                                      GROUP BY strLocation
                                                    ) Z
                                          ) > 1 THEN '<MULTIPLE>'
                                     ELSE ISNULL(( SELECT   strLocation
                                                   FROM     tblOrderDocPDT
                                                   WHERE    ( strOrdPDocID = tblOrderDocP.strOrdPDocID )
                                                   GROUP BY strLocation
                                                 ), '')
                                END AS Location ,
                                ISNULL(( SELECT CAST(intDept AS NVARCHAR(4))
                                                + ' ' + strDesc
                                         FROM   tblDepartments
                                         WHERE  ( intDept = tblOrderDocP.intDept )
                                       ), '') AS Department ,
                                CASE WHEN @sqLocation = '%%' THEN 1
                                     ELSE ISNULL(( SELECT   COUNT(strLocation)
                                                   FROM     tblOrderDocPDT
                                                   WHERE    ( strOrdPDocID = tblOrderDocP.strOrdPDocID )
                                                            AND ( strLocation = @sqLocation )
                                                   GROUP BY strLocation
                                                 ), 0)
                                END
                        FROM    tblOrderDocP
                                INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
                        WHERE   ( tblOrderDocP.bitCleared = 0
                                  AND ( tblOrderDocP.intDocType = 1
                                        AND ( tblOrderDocP.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                                      )
                                )
                                AND ( ( ( @isCriteriaWorkflow = 1 )
                                        AND ( bitInvWorkflowGRV = 1 )
                                      )
                                      OR ( bitInvWorkflowGRV = 0 )
                                    )
                                AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                        AND ( tblVendors.strVendName = @vendorNameLabel )
                                      )
                                      OR LEN(ISNULL(@vendorNameLabel, '')) = 0
                                    );
                    END;
                ELSE
                    SELECT  tblOrderDocP.strVendName AS VendorName ,
                            tblVendors.strVendDesc AS VendorDescription ,
                            tblOrderDocP.dteJournalDate AS JournalDate ,
                            tblOrderDocP.strOrdPDocID AS OrdPDocID ,
                            tblOrderDocP.strReference AS Reference ,
                            tblOrderDocP.decTotal AS Total ,
                            tblOrderDocP.bitIsForeign AS IsForeign ,
                            tblOrderDocP.decTotalF AS TotalF ,
                            tblOrderDocP.strCurrency AS Currency ,
                            tblOrderDocP.bitBookmark AS IsBookmark ,
                            CASE WHEN ( SELECT  COUNT(Z.strLocation)
                                        FROM    ( SELECT    strLocation
                                                  FROM      tblOrderDocPDT
                                                  WHERE     ( strOrdPDocID = tblOrderDocP.strOrdPDocID )
                                                  GROUP BY  strLocation
                                                ) Z
                                      ) > 1 THEN '<MULTIPLE>'
                                 ELSE ISNULL(( SELECT   strLocation
                                               FROM     tblOrderDocPDT
                                               WHERE    ( strOrdPDocID = tblOrderDocP.strOrdPDocID )
                                               GROUP BY strLocation
                                             ), '')
                            END AS Location ,
                            ISNULL(( SELECT CAST(intDept AS NVARCHAR(4)) + ' '
                                            + strDesc
                                     FROM   tblDepartments
                                     WHERE  ( intDept = tblOrderDocP.intDept )
                                   ), '') AS Department ,
                            CASE WHEN @sqLocation = '%%' THEN 1
                                 ELSE ISNULL(( SELECT   COUNT(strLocation)
                                               FROM     tblOrderDocPDT
                                               WHERE    ( strOrdPDocID = tblOrderDocP.strOrdPDocID )
                                                        AND ( strLocation = @sqLocation )
                                               GROUP BY strLocation
                                             ), 0)
                            END
                    FROM    tblOrderDocP
                            INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
                    WHERE   tblOrderDocP.intDocType = 1
                            AND tblOrderDocP.dteJournalDate BETWEEN @documentStartDate
                                                            AND
                                                              @documentEndDate
                            AND ( ( @isCriteriaWorkflow = 1 )
                                  AND ( bitInvWorkflowGRV = 1 )
                                )
                            AND ( ( LEN(@vendorNameLabel) > 0 )
                                  AND ( tblVendors.strVendName = @vendorNameLabel )
                                );
            ELSE
                IF @quotesSelectedIndex > 0
                    SELECT  tblOrderDocP.strVendName AS VendorName ,
                            tblVendors.strVendDesc AS VendorDescription ,
                            tblOrderDocP.dteJournalDate AS JournalDate ,
                            tblOrderDocP.strOrdPDocID AS OrdPDocID ,
                            tblOrderDocP.strReference AS Reference ,
                            tblOrderDocP.decTotal AS Total ,
                            tblOrderDocP.bitIsForeign AS IsForeign ,
                            tblOrderDocP.decTotalF AS TotalF ,
                            tblOrderDocP.strCurrency AS Currency ,
                            tblOrderDocP.bitBookmark AS IsBookmark
                    FROM    tblOrderDocP
                            INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
                    WHERE   ( tblOrderDocP.bitCleared = 0 )
                            AND ( tblOrderDocP.intDocType = 1 )
                            AND ( tblOrderDocP.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                            AND ( ( ( @isCriteriaWorkflow = 1 )
                                    AND ( bitInvWorkflowGRV = 1 )
                                  )
                                  OR ( bitInvWorkflowGRV = 0 )
                                )
                            AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                    AND ( tblVendors.strVendName = @vendorNameLabel )
                                  )
                                  OR LEN(ISNULL(@vendorNameLabel, '')) = 0
                                );
                ELSE
                    SELECT  tblOrderDocP.strVendName AS VendorName ,
                            tblVendors.strVendDesc AS VendorDescription ,
                            tblOrderDocP.dteJournalDate AS JournalDate ,
                            tblOrderDocP.strOrdPDocID AS OrdPDocID ,
                            tblOrderDocP.strReference AS Reference ,
                            tblOrderDocP.decTotal AS Total ,
                            tblOrderDocP.bitIsForeign AS IsForeign ,
                            tblOrderDocP.decTotalF AS TotalF ,
                            tblOrderDocP.strCurrency AS Currency ,
                            tblOrderDocP.bitBookmark AS IsBookmark
                    FROM    tblOrderDocP
                            INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
                    WHERE   ( tblOrderDocP.intDocType = 1 )
                            AND ( tblOrderDocP.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                            AND ( ( ( @isCriteriaWorkflow = 1 )
                                    AND ( bitInvWorkflowGRV = 1 )
                                  )
                                  OR ( bitInvWorkflowGRV = 0 )
                                )
                            AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                    AND ( tblVendors.strVendName = @vendorNameLabel )
                                  )
                                  OR LEN(ISNULL(@vendorNameLabel, '')) = 0
                                );
        END;
    ELSE
        IF @typePOPIToFind = 2
            BEGIN
                IF @createReturn = 1
                    BEGIN
                        SELECT  tblInvoiceDocP.strVendName AS VendorName ,
                                tblVendors.strVendDesc AS VendorDescription ,
                                tblInvoiceDocP.dteJournalDate AS JournalDate ,
                                tblInvoiceDocP.strInvPDocID AS InvPDocID ,
                                tblInvoiceDocP.strReference AS Reference ,
                                tblInvoiceDocP.decTotal AS Total ,
                                tblInvoiceDocP.bitIsForeign AS IsForeign ,
                                tblInvoiceDocP.decTotalF AS TotalF ,
                                tblInvoiceDocP.strCurrency AS Currency ,
                                tblInvoiceDocP.strVendInvNo AS VendInvNo ,
                                tblInvoiceDocP.bitBookmark AS IsBookmark
                        FROM    tblInvoiceDocP
                                INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName
                        WHERE   ( tblInvoiceDocP.strInvPDocID NOT LIKE 'DN%' )
                                AND ( tblInvoiceDocP.bitHistoryTrans = 0 )
                                AND ( tblInvoiceDocP.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                                AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                        AND ( tblVendors.strVendName = @vendorNameLabel )
                                      )
                                      OR LEN(ISNULL(@vendorNameLabel, '')) = 0
                                    );
                    END;
                ELSE
                    BEGIN
                        PRINT 1;
                        SELECT  tblInvoiceDocP.strVendName AS VendorName ,
                                tblVendors.strVendDesc AS VendorDescription ,
                                tblInvoiceDocP.dteJournalDate AS JournalDate ,
                                tblInvoiceDocP.strInvPDocID AS InvPDocID ,
                                tblInvoiceDocP.strReference AS Reference ,
                                tblInvoiceDocP.decTotal AS Total ,
                                tblInvoiceDocP.bitIsForeign AS IsForeign ,
                                tblInvoiceDocP.decTotalF AS TotalF ,
                                tblInvoiceDocP.strCurrency AS Currency ,
                                tblInvoiceDocP.strVendInvNo AS VendInvNo ,
                                tblInvoiceDocP.bitBookmark AS IsBookmark  ,
								CASE WHEN ( SELECT  COUNT(Z.strLocation)  
                                            FROM    ( SELECT  strLocation  
                                                      FROM    tblInvoiceDocPDT  
                                                      WHERE   ( strInvPDocID = tblInvoiceDocP.strInvPDocID )  
                                                      GROUP BY strLocation  
                                                    ) Z  
                                          ) > 1 THEN '<MULTIPLE>'  
								ELSE ISNULL((
											SELECT strLocation
											FROM tblInvoiceDocPDT
											WHERE (strInvPDocID = tblInvoiceDocP.strInvPDocID)
											GROUP BY strLocation
											), '')
								END AS Location, 
								ISNULL((
									SELECT CAST(intDept AS NVARCHAR(4)) + ' ' + strDesc
									FROM tblDepartments
									WHERE (intDept = tblInvoiceDocP.intDept)
									), '') AS Department
                        FROM    tblInvoiceDocP
                                INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName
                        WHERE   ( tblInvoiceDocP.bitHistoryTrans = 0 )
                                AND ( tblInvoiceDocP.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                                AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                        AND ( tblVendors.strVendName = @vendorNameLabel )
                                      )
                                      OR LEN(ISNULL(@vendorNameLabel, '')) = 0
                                    );
                    END;
            END;
        ELSE
            IF @typePOPIToFind = 3
                BEGIN
                    SELECT  tblInvoiceDocP.strVendName AS VendorName ,
                            tblVendors.strVendDesc AS VendorDescription ,
                            tblInvoiceDocP.dteJournalDate AS JournalDate ,
                            tblInvoiceDocP.strInvPDocID AS InvPDocID ,
                            tblInvoiceDocP.strReference AS Reference ,
                            tblInvoiceDocP.decTotal AS Total ,
                            tblInvoiceDocP.bitIsForeign AS IsForeign ,
                            tblInvoiceDocP.decTotalF AS TotalF ,
                            tblInvoiceDocP.strCurrency AS Currency ,
                            tblInvoiceDocP.bitBookmark AS IsBookmark
                    FROM    tblInvoiceDocP
                            INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName
                    WHERE   ( tblInvoiceDocP.bitHistoryTrans = 0 )
                            AND ( tblInvoiceDocP.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                            AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                    AND ( tblVendors.strVendName = @vendorNameLabel )
                                  )
                                  OR LEN(ISNULL(@vendorNameLabel, '')) = 0
                                );
                END;
            ELSE
                IF @typePOPIToFind = 4
                    BEGIN
                        IF @quotesSelectedIndex > 0
                            SELECT  tblOrderDocP.strVendName AS VendorName ,
                                    tblVendors.strVendDesc AS VendorDescription ,
                                    tblOrderDocP.dteJournalDate AS JournalDate ,
                                    tblOrderDocP.strOrdPDocID AS OrdPDocID ,
                                    tblOrderDocP.strReference AS Reference ,
                                    tblOrderDocP.decTotal AS Total ,
                                    tblOrderDocP.bitIsForeign AS IsForeign ,
                                    tblOrderDocP.decTotalF AS TotalF ,
                                    tblOrderDocP.strCurrency AS Currency ,
                                    tblOrderDocP.bitBookmark AS IsBookmark
                            FROM    tblOrderDocP
                                    INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
                            WHERE   ( tblOrderDocP.intDocType = 2 )
                                    AND ( tblOrderDocP.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                                    AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                            AND ( tblVendors.strVendName = @vendorNameLabel )
                                          )
                                          OR LEN(ISNULL(@vendorNameLabel, '')) = 0
                                        );
                        ELSE
                            SELECT  tblOrderDocP.strVendName AS VendorName ,
                                    tblVendors.strVendDesc AS VendorDescription ,
                                    tblOrderDocP.dteJournalDate AS JournalDate ,
                                    tblOrderDocP.strOrdPDocID AS OrdPDocID ,
                                    tblOrderDocP.strReference AS Reference ,
                                    tblOrderDocP.decTotal AS Total ,
                                    tblOrderDocP.bitIsForeign AS IsForeign ,
                                    tblOrderDocP.decTotalF AS TotalF ,
                                    tblOrderDocP.strCurrency AS Currency ,
                                    tblOrderDocP.bitBookmark AS IsBookmark
                            FROM    tblOrderDocP
                                    INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
                            WHERE   ( tblOrderDocP.bitCleared = 0 )
                                    AND ( tblOrderDocP.intDocType = 2 )
                                    AND ( tblOrderDocP.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                                    AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                            AND ( tblVendors.strVendName = @vendorNameLabel )
                                          )
                                          OR LEN(ISNULL(@vendorNameLabel, '')) = 0
                                        );
                    END;
                ELSE
                    IF @typePOPIToFind = 5
                        BEGIN
                            SELECT  tblOrderDocP.strVendName AS VendorName ,
                                    tblVendors.strVendDesc AS VendorDescription ,
                                    tblOrderDocP.dteJournalDate AS JournalDate ,
                                    tblOrderDocP.strOrdPDocID AS OrdPDocID ,
                                    tblOrderDocP.strReference AS Reference ,
                                    tblOrderDocP.decTotal AS Total ,
                                    tblOrderDocP.bitIsForeign AS IsForeign ,
                                    tblOrderDocP.decTotalF AS TotalF ,
                                    tblOrderDocP.strCurrency AS Currency ,
                                    tblOrderDocP.decDiscPerc AS DiscPerc ,
                                    tblOrderDocP.bitBookmark AS IsBookmark
                            FROM    tblOrderDocP
                                    INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
                            WHERE   ( tblOrderDocP.bitCleared = 0 )
                                    AND ( tblOrderDocP.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                                    AND ( tblVendors.bitInvWorkflowPO = 1 )
                                    AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                            AND ( tblVendors.strVendName = @vendorNameLabel )
                                          )
                                          OR LEN(ISNULL(@vendorNameLabel, '')) = 0
                                        );
                        END;
                    ELSE
                        IF @typePOPIToFind = 6
                            BEGIN
                                IF @quotesSelectedIndex > 0
                                    SELECT  tblOrderDocPG.strVendName AS VendorName ,
                                            tblVendors.strVendDesc AS VendorDescription ,
                                            tblOrderDocPG.dteJournalDate AS JournalDate ,
                                            tblOrderDocPG.strOrdPGDocID AS OrdPGDocID ,
                                            tblOrderDocPG.strReference AS Reference ,
                                            tblOrderDocPG.decTotal AS Total ,
                                            tblOrderDocPG.bitIsForeign AS IsForeign ,
                                            tblOrderDocPG.decTotalF AS TotalF ,
                                            tblOrderDocPG.strCurrency AS Currency ,
                                            tblOrderDocPG.decDiscPerc AS DiscPerc
                                    FROM    tblOrderDocPG
                                            INNER JOIN tblVendors ON tblOrderDocPG.strVendName = tblVendors.strVendName
                                    WHERE   ( tblOrderDocPG.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                                            AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                                    AND ( tblVendors.strVendName = @vendorNameLabel )
                                                  )
                                                  OR LEN(ISNULL(@vendorNameLabel,
                                                              '')) = 0
                                                );

                                ELSE
                                    SELECT  tblOrderDocPG.strVendName AS VendorName ,
                                            tblVendors.strVendDesc AS VendorDescription ,
                                            tblOrderDocPG.dteJournalDate AS JournalDate ,
                                            tblOrderDocPG.strOrdPGDocID AS OrdPGDocID ,
                                            tblOrderDocPG.strReference AS Reference ,
                                            tblOrderDocPG.decTotal AS Total ,
                                            tblOrderDocPG.bitIsForeign AS IsForeign ,
                                            tblOrderDocPG.decTotalF AS TotalF ,
                                            tblOrderDocPG.strCurrency AS Currency ,
                                            tblOrderDocPG.decDiscPerc AS DiscPerc
                                    FROM    tblOrderDocPG
                                            INNER JOIN tblVendors ON tblOrderDocPG.strVendName = tblVendors.strVendName
                                    WHERE   ( tblOrderDocPG.bitCleared = 0 )
                                            AND ( tblOrderDocPG.dteJournalDate BETWEEN @documentStartDate
                                                              AND
                                                              @documentEndDate )
                                            AND ( ( ( LEN(@vendorNameLabel) > 0 )
                                                    AND ( tblVendors.strVendName = @vendorNameLabel )
                                                  )
                                                  OR LEN(ISNULL(@vendorNameLabel,
                                                              '')) = 0
                                                );
                            END;
GO
/****** Object:  StoredProcedure [dbo].[GetPurchaseOrderDocByDocNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetPurchaseOrderDocByDocNumber]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetPurchaseOrderDocByDocNumber]
(
@DocNumber nvarchar(100)
)
AS
BEGIN
SET NOCOUNT ON;
	BEGIN	
		SELECT 
			tblOrderDocP.strOrdPDocID as PurchaseOrderDocID,
			tblOrderDocP.strVendName as VendorName,
			tblOrderDocP.strBoughtFrom as BoughtFrom,
			tblOrderDocP.strBuyerName as BuyerName,
			tblOrderDocP.strOrdFQDocID as OrderFQDocID,			
			tblOrderDocP.strOrdRFQDocID as OrderRFQDocID,			
			tblOrderDocP.dteJournalDate as JournalDate,
			tblOrderDocP.dteRequired as RequiredDate,
			tblOrderDocP.dteSystemDate as SystemDate,
			tblOrderDocP.strReference as Reference,
			tblOrderDocP.decDiscAmt as DiscountAmount,
			tblOrderDocP.decDiscAmtF as DiscountAmountF,
			tblOrderDocP.strDiscFormatted as DiscountFormatted,
			tblOrderDocP.decDiscPerc as DiscountPercentage,
			tblOrderDocP.decExchange as ExchangeValue,
			tblOrderDocP.decSubTotal as SubTotal,
			tblOrderDocP.decSubTotalF as SubTotalF,
			tblOrderDocP.strSubFormated as SubTotalFormatted,
			tblOrderDocP.decVAT as VAT,
			tblOrderDocP.decVATF as VATF,
			tblOrderDocP.strVATFormatted as VATFormatted,
			tblOrderDocP.decTotal as Total,
			tblOrderDocP.decTotalF as TotalF,
			tblOrderDocP.strTotFormatted as TotalFormatted,
			tblOrderDocP.decNetItemWeight as NetItemWeight,
			tblOrderDocP.decNetVolumetricWeight as NetVolumetricWeight,
		 	IsNull(tblOrderDocP.intDept,0) as [Department],
			tblOrderDocP.intDocType as DocType,
			tblOrderDocP.intRevisionNumber as RevisionNumber,
			tblOrderDocP.strAddInfo as AdditionalInfo,
			tblOrderDocP.strCurrency as Currency,
			tblOrderDocP.strField1 as Field1 ,
			tblOrderDocP.strField2 as Field2,
			tblOrderDocP.strField3 as Field3,
			tblOrderDocP.strField4 as Field4,
			tblOrderDocP.strField5 as Field5,
			tblOrderDocP.strField6 as Field6,
			tblOrderDocP.strField7 as Field7,
			tblOrderDocP.strField8 as Field8,
			tblOrderDocP.strField9 as Field9,
			tblOrderDocP.strField10 as Field10,
			tblOrderDocP.strField11 as Field11,
			tblOrderDocP.strField12 as Field12, 
			tblOrderDocP.strNotes as Notes,
			tblOrderDocP.strShipTo as ShipTo,
			tblOrderDocP.strStatusTypeCode as StatusTypeCode,
			tblOrderDocP.strTerm as Term,
			tblOrderDocP.strUserName as UserName,			
			tblOrderDocP.bitBookmark as IsBookmark, 
			tblOrderDocP.bitCleared as IsCleared,
			tblOrderDocP.bitEmailed as IsEmailed,
			tblOrderDocP.bitFQConvert as IsFQConver,
			tblOrderDocP.bitIsForeign as IsForeign,
			tblOrderDocP.bitPrinted as IsPrinted,
			tblOrderDocP.bitRFQConvert as IsRFQConvert,
			tblOrderDocP.bitSOCopy as IsSOCopy,
			tblOrderDocP.bitSOCopyMulti as IsSOCopyMulti,
			ISNULL(tblCustomers.strCustName,'') AS CustName 
			FROM tblOrderDocP 
			LEFT JOIN tblOrderDocQ
			ON tblOrderDocP.strOrdFQDocID = tblOrderDocQ.strOrdDocID 
			LEFT JOIN tblCustomers 
			ON tblOrderDocQ.strCustName = tblCustomers.strCustName 
			WHERE tblOrderDocP.strOrdPDocID = @DocNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetPurchaseOrderDocDTByDocNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetPurchaseOrderDocDTByDocNumber]
(
	@DocNumber nvarchar(100)
)
AS
BEGIN
SET NOCOUNT ON;
	BEGIN	
		SELECT 		 
		tblOrderDocPDT.strOrdPDocID as PurchaseOrderDocID,                                       
		tblOrderDocPDT.intLineNo as LineNumber,   
		tblOrderDocPDT.strPartNumber as PartNumber,                                      
		tblOrderDocPDT.strLocation as Location, 
		tblOrderDocPDT.strPartDesc as PartDescription,                                                                                                                                                                                                                                                      
		tblOrderDocPDT.decBuyQty as BuyQty,            
		tblOrderDocPDT.decBuyQtyRemain as BuyQtyRemain,       
		tblOrderDocPDT.strBuyUnit as BuyUnit,      
		tblOrderDocPDT.decStockQty as StockQty,           
		tblOrderDocPDT.decStockQtyRemain as StockQtyRemain,     
		tblOrderDocPDT.strStockUnit as StockUnit,    
		tblOrderDocPDT.intType as [Type],  
		tblOrderDocPDT.decPriceEaExc as PriceEaExc,         
		tblOrderDocPDT.decLineTotExc as LineTotalExc,         
		tblOrderDocPDT.decLineTaxAmt as LineTaxAmount,         
		tblOrderDocPDT.strTaxCode as TaxCode, 
		tblOrderDocPDT.decEaIncTax as EaIncTax,           
		tblOrderDocPDT.decTotIncTax as TotalIncTax,          
		tblOrderDocPDT.imgTaxObj as TaxObj,                                                                                                                                                                                                                                                        
		tblOrderDocPDT.strCurrency as Currency, 
		tblOrderDocPDT.bitIsForeign as IsForeign, 
		tblOrderDocPDT.decPriceEaExcF as PriceExExcF,        
		tblOrderDocPDT.decLineTotExcF as LineTotalExcF,
		tblOrderDocPDT.decLineTaxAmtF as LineTaxAmountF,        
		tblOrderDocPDT.decEaIncTaxF as EaIncTaxF,          
		tblOrderDocPDT.decTotIncTaxF as TotalIncTaxF,         
		tblOrderDocPDT.strInvField1 as InvField1,                                                                                         
		tblOrderDocPDT.strInvField2 as InvField2,                                                                                         
		tblOrderDocPDT.strInvField3 as InvField3,			                                                                                         
		tblOrderDocPDT.strInvField4 as InvField4,                                                                                        
		tblOrderDocPDT.strInvField5 as InvField5,                                                                                         
		tblOrderDocPDT.strInvField6 as InvField6,                                                                                         
		tblOrderDocPDT.strLineField1 as LineField1,                                      
		tblOrderDocPDT.strLineField2 as LineField2,                                      
		tblOrderDocPDT.strLineField3 as LineField3,                                      
		tblOrderDocPDT.strLineField4 as LineField4,                                      
		tblOrderDocPDT.strLineField5 as LineField5,                                      
		tblOrderDocPDT.strLineField6 as LineField6,                                      
		tblOrderDocPDT.strLineField7 as LineField7,                                      
		tblOrderDocPDT.strLineField8 as LineField8,                                      
		tblOrderDocPDT.strLineField9 as LineField9,                                      
		tblOrderDocPDT.strLineField10 as LineField10,                                     
		tblOrderDocPDT.strLineField11 as LineField11,                                     
		tblOrderDocPDT.strLineField12 as LineField12,                                     
		tblOrderDocPDT.decLineDiscPerc as LineDiscountPercentage,       
		tblOrderDocPDT.decLineDiscAmt as DiscountAmount,        
		tblOrderDocPDT.decLineDiscAmtF as DiscountAmountF,       
		tblOrderDocPDT.bitDiscountTax as IsDiscountTax, 
		tblOrderDocPDT.strOrdSODocID as OrderSODocID,                                      
		tblOrderDocPDT.strPartExtendedDesc as PartExtendedDesc,                                                                                                                                                                                                                                              
		tblOrderDocPDT.decItemWeight as ItemWeight,         
		tblOrderDocPDT.decVolumetricWeight as VolumetricWeight,   
		tblOrderDocPDT.uidTransactionFieldID as TransactionFieldID,
		ISNULL(tblOrderDocPDTPrj.strProjNumber,'') AS ProjNumber,
		ISNULL(tblOrderDocPDTPrj.strStage,'') AS Stage,
		ISNULL(tblOrderDoc.strCustName,'') AS CustName, 
		tblInv.bitInvSerialType as IsSerialType, 
		ISNULL(tblInvSerialTypes.bitMethod,0) AS IsMethod, 
		ISNULL(tblInv.strUnitOfMeasure,'') AS UnitOfMeasure, 
		tblInv.strDimProCode as DimProCode, 
		ISNULL(tblInvSerialTypes.bitDimensionExist,0) AS IsDimensionExist,
		tblInv.strBarCode AS BarCode,
		tblInv.strBarCode2 AS BarCode2 
		FROM tblOrderDocPDT 
		INNER JOIN tblInv ON tblOrderDocPDT.strPartNumber = tblInv.strPartNumber 
		LEFT JOIN tblOrderDocPDTPrj ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTPrj.strOrdPDocID AND tblOrderDocPDT.intLineNo = tblOrderDocPDTPrj.intLineNo 
		LEFT JOIN tblOrderDoc ON tblOrderDocPDT.strOrdSODocID = tblOrderDoc.strOrdDocID 
		LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
		WHERE tblOrderDocPDT.strOrdPDocID = @DocNumber AND tblOrderDocPDT.decStockQtyRemain <> 0 AND tblOrderDocPDT.bitDiscountTax = 0 
		ORDER BY tblOrderDocPDT.intLineNo
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetPurchaseOrderDocDTSerialDataByDocNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-----------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseOrderDocDTSerialDataByDocNumber]
(
@DocNumber nvarchar(100)
)
AS
BEGIN
SET NOCOUNT ON;
	BEGIN	
		SELECT 
		tblOrderDocPDTSerial.strOrdPDocID as PurchaseOrderDocID,
		tblOrderDocPDTSerial.intLineNo as LineNumber,
		tblOrderDocPDTSerial.intSerialLotType as SerialLotType,
		tblOrderDocPDTSerial.strSerialNumber as SerialNumber,
		tblOrderDocPDTSerial.strUnit as Unit, 
		tblOrderDocPDTSerial.decQty as Qty,
		tblOrderDocPDTSerial.bitExpiryDate as IsExpiry,
		tblOrderDocPDTSerial.dteExpiryDate as ExpiryDate,		
		tblOrderDocPDTSerial.lngID as ID,
		CASE 
			WHEN intSerialLotType = 0 
			THEN ISNULL((SELECT CAST(tblInvSerialExt.intStatus AS CHAR(1)) + tblInvSerialExt.strDocID FROM tblInvSerialExt WHERE tblInvSerialExt.strPartNumber = tblOrderDocPDT.strPartNumber AND tblInvSerialExt.strSerialNumber = tblOrderDocPDTSerial.strSerialNumber),'') 
			ELSE ''
			END as SerialPartString  , 
		ISNULL((SELECT TYP.intType FROM tblOrderDocPDT DTL INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType WHERE DTL.strOrdPDocID = tblOrderDocPDTSerial.strOrdPDocID AND DTL.intLineNo = tblOrderDocPDTSerial.intLineNo),0) as SerialType
		FROM tblOrderDocPDT 
		INNER JOIN tblOrderDocPDTSerial ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTSerial.strOrdPDocID AND tblOrderDocPDT.intLineNo = tblOrderDocPDTSerial.intLineNo 
		WHERE tblOrderDocPDT.strOrdPDocID = @DocNumber
		ORDER BY lngID
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetPurchasePrepayments]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetPurchasePrepayments]
AS
BEGIN
	SELECT ISNULL(SUM(tblVendTransDT.decAmount), 0) * -1 AS Expr1 FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID 
	WHERE (tblVendTransDT.bitReversed = 0) AND (tblVendTrans.intTransType = 2)
END
GO
/****** Object:  StoredProcedure [dbo].[GetQtyForInvoiceData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[GetWSInvoiceDocDTDataFromCode] ***********/

/*********** Start [dbo].[GetQtyForInvoiceData] ***********/
CREATE PROCEDURE [dbo].[GetQtyForInvoiceData]
(
	@DocNumber AS NVARCHAR(50)
)
AS
BEGIN
	select 
		tblWSProcessDocDT.ProcessDocDTID
		,tblWSProcessDocDT.ProcessDocID
		,tblWSProcessDocDT.[LineNo]
		,tblWSProcessDocDT.PartNumber
		,tblWSProcessDocDT.Location
		,tblWSProcessDocDT.PartDesc
		,tblWSProcessDocDT.QuotedQty
		,tblWSProcessDocDT.JobQty
		,tblWSProcessDocDT.Unit
		,tblWSProcessDocDT.ItemType
		,tblWSProcessDocDT.TaxCode
		,tblWSProcessDocDT.Currency
		,tblWSProcessDocDT.IsForeign
		,tblWSProcessDocDT.LineDiscPerc
		,tblWSProcessDocDT.LineDiscAmt
		,tblWSProcessDocDT.LineDiscAmtF
		,tblWSProcessDocDT.IsDiscountTax
		,tblWSProcessDocDT.StockQty
		,tblWSProcessDocDT.StockUnit
		,tblWSProcessDocDT.StockQtyRemain
		,tblWSProcessDocDT.PriceEaExc
		,tblWSProcessDocDT.LineTotExc
		,tblWSProcessDocDT.LineTaxAmt
		,tblWSProcessDocDT.PriceEaInc
		,tblWSProcessDocDT.LineTotInc
		,tblWSProcessDocDT.PriceEaExcF
		,tblWSProcessDocDT.LineTotExcF
		,tblWSProcessDocDT.LineTaxAmtF
		,tblWSProcessDocDT.EaIncTaxF
		,tblWSProcessDocDT.TotIncTaxF
		,tblWSProcessDocDT.CreatedDate
		,tblWSProcessDocDT.UpdatedDate
		,tblWSProcessDocDT.CreatedBy
		,tblWSProcessDocDT.UpdatedBy
		,tblWSProcessDocDT.IsDelCost
		,tblWSProcessDocDT.BillingMethod
		,tblWSProcessDocDT.QtyRemaining
		,tblWSProcessDocDT.TaxObj
		,tblWSProcessDocDT.SalesName
		,tblWSProcessDocDT.PartExtendedDesc
		,tblWSProcessDocDT.BuyoutCost
		,tblWSProcessDocDT.ItemWeight
		,tblWSProcessDocDT.VolumetricWeight
		,tblWSProcessDocDT.TransactionFieldID 
	from tblWSProcessDocDT where ProcessDocID = (select ProcessDocID from tblWSInvoiceDoc where strInvDocID = @DocNumber)
END
GO
/****** Object:  StoredProcedure [dbo].[GetQtyRemaining]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE  [dbo].[GetQtyRemaining]

@PartNumber VARCHAR(50),
@Location VARCHAR(10),
@IsLotNumber BIT
AS
BEGIN
	IF(@IsLotNumber = 1) 
	(SELECT (
			ILE.decQty - ISNULL((
					SELECT SUM(DTL.decQtyRemaining)
					FROM tblOrderDoc HDR
					INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
					INNER JOIN tblOrderDocDTSerial SRL ON DTL.strOrdDocID = SRL.strOrdDocID
						AND DTL.intLineNo = SRL.intLineNo
					WHERE (HDR.bitCleared = 0)
						AND (DTL.strPartNumber = ILE.strPartNumber)
						AND (DTL.strLocation = ILE.strLocName)
						AND (SRL.strSerialNumber = ILE.strLotNumber)
					GROUP BY SRL.strSerialNumber
					), 0)
			) AS Quantity,
			ILE.strLotNumber AS SerialNumber
	FROM tblInvLotExt ILE
	WHERE (ILE.strPartNumber = @PartNumber)
		AND (ILE.strLocName = @Location)
		)
	ELSE
	(
		SELECT (
			ISE.decQty - ISNULL((
					SELECT SUM(DTL.decQtyRemaining)
					FROM tblOrderDoc HDR
					INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
					INNER JOIN tblOrderDocDTSerial SRL ON DTL.strOrdDocID = SRL.strOrdDocID
						AND DTL.intLineNo = SRL.intLineNo
					WHERE (HDR.bitCleared = 0)
						AND (DTL.strPartNumber = ISE.strPartNumber)
						AND (DTL.strLocation = ISE.strLocName)
						AND (SRL.strSerialNumber = ISE.strSerialNumber)
					GROUP BY SRL.strSerialNumber
					), 0)
			) AS Quantity,
			ISE.strSerialNumber AS SerialNumber
	FROM tblInvSerialExt ISE
	WHERE (ISE.strPartNumber = @PartNumber)
		AND (ISE.strLocName = @Location)		
		)
END
GO
/****** Object:  StoredProcedure [dbo].[GetQtyStockPick]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetQtyStockPick]
(
	@PartNumber VARCHAR(50),
	@Location VARCHAR(10),
	@IsLotNumber BIT,
	@LotNumber AS NVARCHAR(100),
	@BinId bigint
)
AS
BEGIN
	IF(@IsLotNumber = 1) 
	BEGIN
		SELECT (
		ILE.decQty - ISNULL((
				SELECT SUM(DTL.decQtyPicked)
				FROM tblPickTickets HDR
				INNER JOIN tblPickTicketsDT DTL ON HDR.strPkTkDocID = DTL.strPkTkDocID
				INNER JOIN tblPickTicketsDTSerial SRL ON DTL.strPkTkDocID = SRL.strPkTkDocID
					AND DTL.intLineNo = SRL.intLineNo
				WHERE (HDR.bitCleared = 0)
				    AND (HDR.bitStockTransferred = 0)
					AND (DTL.strPartNumber = ILE.strPartNumber)
					AND (DTL.strLocation = ILE.strLocName)
					AND (
						SRL.strSerialNumber = ILE.strLotNumber
						AND lngBinId = @BinId
						)
				GROUP BY SRL.strSerialNumber
				), 0)
		) AS Quantity
		FROM tblInvLotExt ILE
		WHERE (ILE.strPartNumber = @PartNumber)
			AND (ILE.strLocName = @Location)
			AND (ILE.strLotNumber = @LotNumber)
			AND lngBinId = @BinId
	END

	ELSE
		BEGIN
		DECLARE @Quantity AS decimal = 0; 

			SELECT @Quantity = ( ISE.decqty - Isnull((SELECT Sum(DTL.decqtypicked) 
													  FROM   tblpicktickets HDR 
															 INNER JOIN tblpickticketsdt DTL 
																	 ON HDR.strpktkdocid = 
																		DTL.strpktkdocid 
											  INNER JOIN tblpickticketsdtserial SRL 
													  ON DTL.strpktkdocid = 
														 SRL.strpktkdocid 
														 AND DTL.intlineno = 
															 SRL.intlineno 
													  WHERE  ( HDR.bitcleared = 0 ) 
															 AND ( HDR.bitstocktransferred = 
																   0 ) 
															 AND ( DTL.strpartnumber = 
																   ISE.strpartnumber ) 
															 AND ( DTL.strlocation = 
																 ISE.strlocname ) 
															 AND ( SRL.strserialnumber = 
																   ISE.strserialnumber ) 
													  GROUP  BY SRL.strserialnumber), 0) ) 
			FROM   tblinvserialext ISE 
			WHERE  ( ISE.strpartnumber = @PartNumber ) 
				   AND ( ISE.strlocname = @Location ) 
				   AND ( ISE.strserialnumber = @LotNumber ) 
				   AND lngbinid = @BinId 

			IF @Quantity > 0 
			  BEGIN 			  
				  SELECT @Quantity  AS Quantity
			  END 
			ELSE
				BEGIN 			  
					  DECLARE @CheckPickingBinID decimal = 0 

					  SELECT @CheckPickingBinID = ISE.lngid 
					  FROM   tblinvlocbin ISE 
					  WHERE  ISE.strlocname = @Location 
							 AND ISE.bitpickingbin = 1 

					  IF @CheckPickingBinID > 0 
						BEGIN 
							SELECT ( ISE.decqty - Isnull((SELECT Sum(DTL.decqtypicked) 
														  FROM   tblpicktickets HDR 
																 INNER JOIN tblpickticketsdt DTL 
																		 ON HDR.strpktkdocid = 
																			DTL.strpktkdocid 
												  INNER JOIN tblpickticketsdtserial 
															 SRL 
														  ON DTL.strpktkdocid = 
															 SRL.strpktkdocid 
															 AND DTL.intlineno = 
																 SRL.intlineno 
														  WHERE  ( HDR.bitcleared = 0 ) 
																 AND ( HDR.bitstocktransferred = 
																	   0 
																	 ) 
																 AND ( DTL.strpartnumber = 
																	 ISE.strpartnumber ) 
																 AND ( DTL.strlocation = 
																	 ISE.strlocname ) 
																 AND ( SRL.strserialnumber = 
																	   ISE.strserialnumber ) 
														  GROUP  BY SRL.strserialnumber), 0) ) 
								   AS Quantity 
							FROM   tblinvserialext ISE 
							WHERE  ( ISE.strpartnumber = @PartNumber ) 
								   AND ( ISE.strlocname = @Location ) 
								   AND ( ISE.strserialnumber = @LotNumber ) 
								   AND lngbinid = @CheckPickingBinID 
						END 
					  ELSE 
						BEGIN 
							SELECT @CheckPickingBinID AS Quantity; 
						END 
			  END  
		END	
END
GO
/****** Object:  StoredProcedure [dbo].[GetQuantityContainers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------Mobile App Changes End -------

----------------------------------------
CREATE PROCEDURE [dbo].[GetQuantityContainers]
AS
BEGIN	
	SELECT ISNULL(decQuantity,0) AS Quantity , strPartNumber AS PartNumber ,strPartItemNumber AS PartItemNumber FROM tblInvContainers	
END
GO
/****** Object:  StoredProcedure [dbo].[GetQuantityVariance]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetQuantityVariance]
AS
BEGIN
	SELECT tblInvExt.strPartNumber AS PartNumber
	,tblInvExt.strLocName AS Location
	,CONVERT(Int, tblInvExt.decOnHand) AS LocExt_Cnt
	,CONVERT(Int,ISNULL(Z.SNCount, 0)) AS Track_Cnt
	,CONVERT(Int,ISNULL(y.SNCount, 0)) AS SerialExt_Cnt
FROM tblInvExt
INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber
INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
LEFT JOIN (
	SELECT tblSerialNumberTracking.strPartNumber
		,tblSerialNumberTracking.strLocation
		,COUNT(tblSerialNumberTracking.strSerialNumber) AS SNCount
	FROM tblSerialNumberTracking
	INNER JOIN tblInv ON tblSerialNumberTracking.strPartNumber = tblInv.strPartNumber
	INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblInv.intType <> 4
		AND tblInv.intType <> 11
		AND tblInvSerialTypes.intType = 0
		AND intStatus = 1
		AND lngID IN (
			SELECT MAX(lngID)
			FROM tblSerialNumberTracking
			GROUP BY strPartNumber
				,strLocation
				,strSerialNumber
			)
	GROUP BY tblSerialNumberTracking.strPartNumber
		,tblSerialNumberTracking.strLocation
	) Z ON tblInvExt.strPartNumber = Z.strPartNumber
	AND tblInvExt.strLocName = Z.strLocation
LEFT JOIN (
	SELECT tblInvSerialExt.strPartNumber
		,tblInvSerialExt.strLocName
		,COUNT(tblInvSerialExt.strSerialNumber) AS SNCount
	FROM tblInvSerialExt
	INNER JOIN tblInv ON tblInvSerialExt.strPartNumber = tblInv.strPartNumber
	INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblInvSerialTypes.intType = 0
		AND tblInvSerialExt.intStatus = 1
	GROUP BY tblInvSerialExt.strPartNumber
		,tblInvSerialExt.strLocName
	) Y ON tblInvExt.strPartNumber = Y.strPartNumber
	AND tblInvExt.strLocName = Y.strLocName
WHERE tblInvSerialTypes.intType = 0
	AND (
		CONVERT(INT, tblInvExt.decOnHand) <> ISNULL(Z.SNCount, 0)
		OR CONVERT(INT, tblInvExt.decOnHand) <> ISNULL(Y.SNCount, 0)
		OR ISNULL(Z.SNCount, 0) <> ISNULL(Y.SNCount, 0)
		)
	AND (
		ISNULL(Z.SNCount, 0) <> 0
		AND ISNULL(Y.SNCount, 0) <> 0
		)

UNION ALL

SELECT tblInvExt.strPartNumber
	,tblInvExt.strLocName
	,CONVERT(Int,tblInvExt.decOnHand) AS LocExt_Cnt
	,CONVERT(Int,ISNULL(Z.SNCount, 0)) AS Track_Cnt
	,CONVERT(Int,ISNULL(y.SNCount, 0)) AS SerialExt_Cnt
FROM tblInvExt
INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber
INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
LEFT JOIN (
	SELECT tblSerialNumberTracking.strPartNumber
		,tblSerialNumberTracking.strLocation
		,SUM(CASE 
				WHEN tblSerialNumberTracking.intStatus = 2
					THEN tblSerialNumberTracking.decQty * - 1
				ELSE tblSerialNumberTracking.decQty
				END) AS SNCount
	FROM tblSerialNumberTracking
	INNER JOIN tblInv ON tblSerialNumberTracking.strPartNumber = tblInv.strPartNumber
	INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblInvSerialTypes.intType = 1
	GROUP BY tblSerialNumberTracking.strPartNumber
		,tblSerialNumberTracking.strLocation
	) Z ON tblInvExt.strPartNumber = Z.strPartNumber
	AND tblInvExt.strLocName = Z.strLocation
LEFT JOIN (
	SELECT tblInvLotExt.strPartNumber
		,tblInvLotExt.strLocName
		,SUM(tblInvLotExt.decQty) AS SNCount
	FROM tblInvLotExt
	INNER JOIN tblInv ON tblInvLotExt.strPartNumber = tblInv.strPartNumber
	INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblInvSerialTypes.intType = 1
	GROUP BY tblInvLotExt.strPartNumber
		,tblInvLotExt.strLocName
	) Y ON tblInvExt.strPartNumber = Y.strPartNumber
	AND tblInvExt.strLocName = Y.strLocName
WHERE tblInvSerialTypes.intType = 1
	AND (
		tblInvExt.decOnHand <> ISNULL(Z.SNCount, 0)
		OR tblInvExt.decOnHand <> ISNULL(Y.SNCount, 0)
		OR ISNULL(Z.SNCount, 0) <> ISNULL(Y.SNCount, 0)
		)
	AND (
		ISNULL(Z.SNCount, 0) <> 0
		AND ISNULL(Y.SNCount, 0) <> 0
		)
ORDER BY PartNumber
	,Location
END
GO
/****** Object:  StoredProcedure [dbo].[GetQuotationFromCode]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetQuotationFromCode] (@DocNumber NVARCHAR(30))  
AS  
BEGIN  
 SELECT ProcessDocID  
  , tpd.ServiceableItemCode  
  , tsi.ServiceableItemName  
  , tsi.IsInternalAsset  
  , tsi.AssetNumber  
  , tsi.AssetServiceCostAccount  
  , JobTemplateID  
  , tpd.OwnerCode
  , tpd.CustomerCode  
  , tsi.OwnerDetails  
  , dbo.funGetAddressString(tpd.CustomerCode) AS CustomerDetails  
  , SystemDate  
  , DocumentDate  
  , RequiredDate  
  , ReferenceNumber  
  , tpd.AddInfo  
  , Technician  
  , SalesName  
  , Dept  
  , DocType  
  , InventoryTotal  
  , LabourTotal  
  , BuyOutsTotal  
  , RecoveryTotal  
  , InventoryTotalF  
  , LabourTotalF  
  , BuyOutsTotalF  
  , RecoveryTotalF  
  , Term  
  , SubTotal  
  , VAT  
  , Total  
  , IsForeign  
  , SubTotalF  
  , VATF  
  , TotalF  
  , IsFromQuote  
  , QuoteDocID  
  , Notes  
  , Printed  
  , Emailed  
  , Cleared  
  , Currency  
  , DiscPerc  
  , DiscAmt  
  , DiscAmtF  
  , RevisionNumber  
  , Exchange  
  , SubFormated  
  , VATFormatted  
  , TotFormatted  
  , DiscFormatted  
  , tpd.CreatedDate  
  , tpd.UpdatedDate  
  , tpd.CreatedBy  
  , tpd.UpdatedBy  
  , SOReasonCode  
  , DelMethodCode  
  , TotalWeight  
  , TotalVolWeight  
  , DeliveryCost  
  , DeliveryCostF  
  , DeliveryCostFormatted  
  , JobStatusType AS JobStatus  
  , StatusTypeCode  
  , VATNo  
  , tpd.ShipTo  
 FROM tblWSProcessDoc AS tpd  
 LEFT OUTER JOIN tblWSServiceableItem AS tsi ON tpd.ServiceableItemCode = tsi.ServiceableItemCode  
 WHERE ProcessdocID = @DocNumber  
END 
GO

/****** Object:  StoredProcedure [dbo].[GetQuotationFromCodeRevNo]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetQuotationFromCodeRevNo]  
(  
 @DocNumber nvarchar(30),  
 @RevNo int  
)  
AS  
BEGIN  
 select   
  ProcessDocID  
  ,tpd.ServiceableItemCode  
  ,tsi.ServiceableItemName  
  ,tsi.IsInternalAsset  
  ,tsi.AssetNumber  
  ,tsi.AssetServiceCostAccount  
  ,JobTemplateID  
  ,tpd.OwnerCode  
  ,tpd.CustomerCode  
  ,dbo.funGetAddressString(tpd.OwnerCode) as OwnerDetails  
  ,dbo.funGetAddressString(tpd.CustomerCode) as CustomerDetails  
  ,SystemDate  
  ,DocumentDate  
  ,RequiredDate  
  ,ReferenceNumber  
  ,tsi.AddInfo  
  ,Technician  
  ,SalesName  
  ,Dept  
  ,DocType  
  ,InventoryTotal  
  ,LabourTotal  
  ,BuyOutsTotal  
  ,RecoveryTotal  
  ,InventoryTotalF  
  ,LabourTotalF  
  ,BuyOutsTotalF  
  ,RecoveryTotalF  
  ,Term  
  ,SubTotal  
  ,VAT  
  ,Total  
  ,IsForeign  
  ,SubTotalF  
  ,VATF  
  ,TotalF  
  ,IsFromQuote  
  ,QuoteDocID  
  ,Notes  
  ,Printed  
  ,Emailed  
  ,Cleared  
  ,Currency  
  ,DiscPerc  
  ,DiscAmt  
  ,DiscAmtF  
  ,RevisionNumber  
  ,Exchange  
  ,SubFormated  
  ,VATFormatted  
  ,TotFormatted  
  ,DiscFormatted  
  ,tpd.CreatedDate  
  ,tpd.UpdatedDate  
  ,tpd.CreatedBy  
  ,tpd.UpdatedBy  
  ,SOReasonCode  
  ,DelMethodCode  
  ,TotalWeight  
  ,TotalVolWeight  
  ,DeliveryCost  
  ,DeliveryCostF  
  ,DeliveryCostFormatted  
  --,JobStatusType  
  ,StatusTypeCode
  ,VATNo  
  from tblWSProcessDocREV as tpd  
 LEFT OUTER JOIN tblWSServiceableItem as tsi ON tpd.ServiceableItemCode = tsi.ServiceableItemCode  
 WHERe ProcessdocID = @DocNumber and RevisionNumber=@RevNo   
END
GO
/****** Object:  StoredProcedure [dbo].[GetQuotes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


/***************************************************/

/*********** Start [GetQuotes] ***********/
CREATE PROCEDURE [dbo].[GetQuotes]
	@CustomerNumber AS VARCHAR(50)
AS
BEGIN
SELECT *
FROM (
	SELECT HDR.strOrdDocID AS DocumentNumber
		,HDR.dteJournalDate AS JournalDate
		,HDR.dteRequired AS [Required]
		,ISNULL(HDR.strReference, '') AS Reference
		,DTL.strPartNumber AS PartNumber
		,DTL.strPartDesc AS PartDesc
		,DTL.decQty AS Qty
		,CASE HDR.bitIsForeign
			WHEN 0
				THEN DTL.decPriceEaExc
			ELSE DTL.decPriceEaExcF
			END AS PriceEaExc
		,DTL.strTaxCode AS TaxCode
		,CASE HDR.bitIsForeign
			WHEN 0
				THEN DTL.decLineTaxAmt
			ELSE DTL.decLineTaxAmtF
			END AS LineTaxAmt
		,CASE HDR.bitIsForeign
			WHEN 0
				THEN DTL.decLineTotExc + DTL.decLineTaxAmt
			ELSE DTL.decTotIncTaxF + DTL.decLineTaxAmtF
			END AS LineTotInc
		,DTL.intLineNo AS [LineNo]
	FROM tblOrderDoc HDR
	INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
	WHERE HDR.decTotal <> 0
		AND HDR.bitCleared = 0
		AND HDR.intDocType = 2
		AND HDR.strCustName = @CustomerNumber
	
	UNION ALL
	
	SELECT HDR.strOrdDocID AS DocumentNumber
		,HDR.dteJournalDate AS JournalDate
		,HDR.dteRequired AS [Required]
		,ISNULL(HDR.strReference, '') AS Reference
		,DTL.strPartNumber AS PartNumber
		,DTL.strPartDesc AS PartDesc
		,DTL.decQty AS Qty
		,CASE HDR.bitIsForeign
			WHEN 0
				THEN DTL.decPriceEaExc
			ELSE DTL.decPriceEaExcF
			END AS [decPriceEaExc]
		,DTL.strTaxCode AS TaxCode
		,CASE HDR.bitIsForeign
			WHEN 0
				THEN DTL.decLineTaxAmt
			ELSE DTL.decLineTaxAmtF
			END AS LineTaxAmt
		,CASE HDR.bitIsForeign
			WHEN 0
				THEN DTL.decLineTotExc + DTL.decLineTaxAmt
			ELSE DTL.decTotIncTaxF + DTL.decLineTaxAmtF
			END AS LineTotInc
		,DTL.intLineNo AS [LineNo]
	FROM tblOrderDocQ HDR
	INNER JOIN tblOrderDocQDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
	WHERE HDR.decTotal <> 0
		AND HDR.bitCleared = 0
		AND HDR.strCustName = @CustomerNumber
	

	UNION ALL

	SELECT 
		tblWSProcessDoc.ProcessDocID AS DocumentNumber
		,tblWSProcessDoc.DocumentDate AS JournalDate
		,tblWSProcessDoc.RequiredDate AS [Required]
		,ISNULL(tblWSProcessDoc.ReferenceNumber, '') AS Reference
		,tblWSProcessDocDT.PartNumber AS PartNumber
		,tblWSProcessDocDT.PartDesc AS PartDesc
		,tblWSProcessDocDT.QuotedQty AS Qty
		,CASE tblWSProcessDoc.IsForeign
			WHEN 0
				THEN tblWSProcessDocDT.PriceEaExc
			ELSE tblWSProcessDocDT.PriceEaExcF
			END AS PriceEaExc
		,tblWSProcessDocDT.TaxCode AS TaxCode
		,CASE tblWSProcessDoc.IsForeign
			WHEN 0
				THEN tblWSProcessDocDT.LineTaxAmt
			ELSE tblWSProcessDocDT.LineTaxAmtF
			END AS LineTaxAmt
		,CASE tblWSProcessDoc.IsForeign
			WHEN 0
				THEN tblWSProcessDocDT.LineTotExc + tblWSProcessDocDT.LineTaxAmt
			ELSE tblWSProcessDocDT.TotIncTaxF + tblWSProcessDocDT.LineTaxAmtF
			END AS LineTotInc
		,tblWSProcessDocDT.[LineNo] AS [LineNo]
	FROM tblWSProcessDoc
	INNER JOIN tblWSProcessDocDT ON tblWSProcessDoc.ProcessDocID = tblWSProcessDocDT.ProcessDocID
	WHERE tblWSProcessDoc.Total <> 0
		AND tblWSProcessDoc.Cleared = 0
		AND tblWSProcessDoc.DocType = 1   --Quotation
		AND tblWSProcessDoc.CustomerCode = @CustomerNumber

		) Z
ORDER BY Z.DocumentNumber 
	,Z.JournalDate
	,Z.[LineNo]



	END
GO
/****** Object:  StoredProcedure [dbo].[GetQuotesInfo]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCustomerProfitability] ***********/

/*********** Start [GetQuotesInfo] ***********/
CREATE PROCEDURE [dbo].[GetQuotesInfo] 
(
	@CustomerNumber NVARCHAR(50),
	@IsShowQuotes BIT,
	@FromDate DateTime,
	@ToDate DateTime
)
 AS 
 BEGIN
	SELECT
		T4.strCustDesc as CustomerName, 
		T1.strOrdDocID as DocumentNumber, 
		T1.strReference as Reference,  
		T1.strSalesName as SalesName,
		T1.dteJournalDate as JournalDate, 
		T1.dteRequired as [Required], 
		T1.strUserName as UserName, 
	    'Quote Order' AS Method, 
		T1.decTotal as Total, 
		T1.strStatusTypeCode as StatusTypeCode, 
		T1.bitIsForeign AS IsForeign, 
		T1.decTotalF AS TotalForeign, 
		T4.strCurrency AS CurrencyCode
	FROM 
		tblOrderDoc T1 
	INNER JOIN 
		tblCustomers T4 ON T1.strCustName = T4.strCustName 
	INNER JOIN 
		tblCurrency T5 ON T4.strCurrency = T5.strCurrency 
	WHERE (T1.strOrdDocID LIKE 'QU%') 
	AND T1.strCustName = @CustomerNumber 
	AND ((@IsShowQuotes = 1 AND CONVERT(date,T1.dteJournalDate) BETWEEN CONVERT(date,@FromDate) AND CONVERT(date, @ToDate)) OR (@IsSHowQuotes = 0 AND T1.bitCleared = 0))
	UNION ALL 
	SELECT 
		T4.strCustDesc as CustomerName, 
		T1.strOrdDocID AS DocumentNumber, 
		T1.strReference as Reference, 
		T1.strSalesName as SalesName, 
		T1.dteJournalDate as JournalDate, 
		T1.dteRequired as [Required], 
		T1.strUserName as UserName, 
		'Freehand Quotes' AS Method, 
		T1.decTotal as Total, 
		T1.strStatusTypeCode as StatusTypeCode, 
		T1.bitIsForeign as IsForeign, 
		T1.decTotalF as TotalForeign, 
		T4.strCurrency as CurrencyCode
	FROM
		tblOrderDocQ T1 
	INNER JOIN tblCustomers T4 ON T1.strCustName = T4.strCustName 
	INNER JOIN tblCurrency T5 ON T4.strCurrency = T5.strCurrency 
	WHERE T1.strCustName = @CustomerNumber 
	AND ((@IsShowQuotes = 1 AND CONVERT(date,T1.dteJournalDate) BETWEEN CONVERT(date,@FromDate) AND CONVERT(date,@ToDate)) OR (@IsSHowQuotes = 0 AND T1.bitCleared = 0))

	UNION ALL 
	SELECT 
		T4.strCustDesc as CustomerName, 
		T1.ProcessDocID AS DocumentNumber, 
		T1.ReferenceNumber as Reference, 
		T1.SalesName as SalesName, 
		T1.DocumentDate as JournalDate, 
		T1.RequiredDate as [Required], 
		T1.CreatedBy as UserName, 
		'Quotation Job' AS Method, 
		T1.Total as Total, 
		T1.StatusTypeCode as StatusTypeCode, 
		T1.IsForeign as IsForeign, 
		T1.TotalF as TotalForeign, 
		T4.strCurrency as CurrencyCode
	FROM
		tblWSProcessDoc T1 
	INNER JOIN tblCustomers T4 ON T1.CustomerCode = T4.strCustName 
	INNER JOIN tblCurrency T5 ON T4.strCurrency = T5.strCurrency 
	WHERE T1.CustomerCode = @CustomerNumber 
	AND T1.DocType = 1 --DocType = 1 for Quotation 
	AND ((@IsShowQuotes = 1 AND CONVERT(date,T1.DocumentDate) BETWEEN CONVERT(date,@FromDate) AND CONVERT(date,@ToDate)) OR (@IsSHowQuotes = 0 AND T1.Cleared = 0))

 END
GO
/****** Object:  StoredProcedure [dbo].[GetRecCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetRecCount]
@FromDate as datetime
AS
BEGIN
	SELECT COUNT(Z.RecCount)
FROM (
	SELECT MAX(tblCustTrans.lngCustTrID) AS RecCount
	FROM tblCustTrans
	INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
	WHERE tblCustTrans.strInvDepNumber LIKE '%INTEREST (%'
		AND tblCustTransDT.bitReversed = 0
		AND tblCustTransDT.dteJournalDate >= @FromDate
	
	UNION ALL
	
	SELECT MAX(lngIntBillTrackID) AS RecCount
	FROM tblIntBillTracking
	WHERE dteIntRunDate >= @FromDate
	) Z

END
GO
/****** Object:  StoredProcedure [dbo].[GetReceiptAmount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetReceiptAmount]
   @SQDocNumber nvarchar(50)
AS
BEGIN
	declare @decReceiptAmount DECIMAL(10,2);
	declare @decDepositAmount DECIMAL(10,2);
	SET @decReceiptAmount = (select top 1 decInvAmount from tblCustTrans  where strOrdDocID = @SQDocNumber)
	SET @decDepositAmount = (SELECT SUM(decAmount) as DepositeAmount  from tblCustTransDT as ct
	where lngCustTrID = (select top 1 lngCustTrID from tblCustTrans  where strOrdDocID = @SQDocNumber)
	and intTransType = 2
	group by lngCustTrID)
	select ISNULL(@decReceiptAmount,0) as ReceiptAmount,ISNULL(ABS(@decDepositAmount),0) as DepositAmount,ISNULL((@decReceiptAmount - ABS(@decDepositAmount)),0) as BalanceDue
END
GO
/****** Object:  StoredProcedure [dbo].[GetReceiptsAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetReceiptsAccountsCY]  
(  
 @bitGLAccountAccess bit,  
 @bitShowAllCurrency bit,  
 @strUserName nvarchar(40),  
 @strCurrency nvarchar(6),  
 @strHomeCurrency nvarchar(6)  
)  
AS  
  
BEGIN  
  
if @bitShowAllCurrency = 1  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  FROM tblAccounts  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInventory = 0   
  AND tblAccounts.bitInactive = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.intAccType = 1 OR tblAccounts.intAccType = 2 OR tblAccounts.intAccType = 5)   
  AND (tblAccounts.intAccClass = 0 OR tblAccounts.intAccClass = 1 OR tblAccounts.intAccClass = 2 OR tblAccounts.intAccClass = 4 OR tblAccounts.intAccClass = 9 OR tblAccounts.intAccClass = 10 OR tblAccounts.intAccClass = 11 OR tblAccounts.intAccClass = 12 
    
  OR tblAccounts.intAccClass = 39)  
  AND tblAccounts.bitLinkAPVendMast = 0   AND tblAccounts.bitLinkPrepayVendMast = 0   AND tblAccounts.bitLinkARCustMast = 0   AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName   
  FROM tblAccounts (NOLOCK)   
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInventory = 0   
  AND tblAccounts.bitInactive = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.intAccType = 1 OR tblAccounts.intAccType = 2 OR tblAccounts.intAccType = 5)   
  AND (tblAccounts.intAccClass = 0 OR tblAccounts.intAccClass = 1 OR tblAccounts.intAccClass = 2 OR tblAccounts.intAccClass = 4 OR tblAccounts.intAccClass = 9 OR tblAccounts.intAccClass = 10 OR tblAccounts.intAccClass = 11 OR tblAccounts.intAccClass = 12 
    
  OR tblAccounts.intAccClass = 39)  
  AND tblAccounts.bitLinkAPVendMast = 0   AND tblAccounts.bitLinkPrepayVendMast = 0   AND tblAccounts.bitLinkARCustMast = 0   AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccounts.intGLNumber  
  
 END  
  
END  
ELSE  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  FROM tblAccounts  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInventory = 0   
  AND tblAccounts.bitInactive = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.intAccType = 1 OR tblAccounts.intAccType = 2 OR tblAccounts.intAccType = 5)   
  AND (tblAccounts.intAccClass = 0 OR tblAccounts.intAccClass = 1 OR tblAccounts.intAccClass = 2 OR tblAccounts.intAccClass = 4 OR tblAccounts.intAccClass = 9 OR tblAccounts.intAccClass = 10 OR tblAccounts.intAccClass = 11 OR tblAccounts.intAccClass = 12 
    
  OR tblAccounts.intAccClass = 39)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccounts.bitLinkAPVendMast = 0   AND tblAccounts.bitLinkPrepayVendMast = 0   AND tblAccounts.bitLinkARCustMast = 0   AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName   
  FROM tblAccounts  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  WHERE tblAccounts.bitLinkAP = 0   
  AND tblAccounts.bitLinkAR = 0   
  AND tblAccounts.bitLinkDeposit = 0   
  AND tblAccounts.bitLinkPrePay = 0   
  AND tblAccounts.bitInventory = 0   
  AND tblAccounts.bitInactive = 0   
  AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)   
  AND (tblAccounts.intAccType = 1 OR tblAccounts.intAccType = 2 OR tblAccounts.intAccType = 5)   
  AND (tblAccounts.intAccClass = 0 OR tblAccounts.intAccClass = 1 OR tblAccounts.intAccClass = 2 OR tblAccounts.intAccClass = 4 OR tblAccounts.intAccClass = 9 OR tblAccounts.intAccClass = 10 OR tblAccounts.intAccClass = 11 OR tblAccounts.intAccClass = 12 
    
  OR tblAccounts.intAccClass = 39)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccounts.bitLinkAPVendMast = 0   AND tblAccounts.bitLinkPrepayVendMast = 0   AND tblAccounts.bitLinkARCustMast = 0   AND tblAccounts.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccounts.intGLNumber  
  
 END  
  
END  
  
RETURN  
  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetReceiptsAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetReceiptsAccountsLY]  
(  
 @bitGLAccountAccess bit,  
 @bitShowAllCurrency bit,  
 @strUserName nvarchar(40),  
 @strCurrency nvarchar(6),  
 @strHomeCurrency nvarchar(6)  
)  
AS  
  
BEGIN  
  
if @bitShowAllCurrency = 1  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  FROM tblAccountsLY  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInventory = 0   
  AND tblAccountsLY.bitInactive = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccType = 1 OR tblAccountsLY.intAccType = 2 OR tblAccountsLY.intAccType = 5)   
  AND (tblAccountsLY.intAccClass = 0 OR tblAccountsLY.intAccClass = 1 OR tblAccountsLY.intAccClass = 2 OR tblAccountsLY.intAccClass = 4 OR tblAccountsLY.intAccClass = 9 OR tblAccountsLY.intAccClass = 10 OR tblAccountsLY.intAccClass = 11 OR tblAccountsLY.intAccClass = 12 OR tblAccountsLY.intAccClass = 39)  
  AND tblAccountsLY.bitLinkAPVendMast = 0  AND tblAccountsLY.bitLinkPrepayVendMast = 0 AND tblAccountsLY.bitLinkARCustMast = 0 AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName   
  FROM tblAccountsLY  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInventory = 0   
  AND tblAccountsLY.bitInactive = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccType = 1 OR tblAccountsLY.intAccType = 2 OR tblAccountsLY.intAccType = 5)   
  AND (tblAccountsLY.intAccClass = 0 OR tblAccountsLY.intAccClass = 1 OR tblAccountsLY.intAccClass = 2 OR tblAccountsLY.intAccClass = 4 OR tblAccountsLY.intAccClass = 9 OR tblAccountsLY.intAccClass = 10 OR tblAccountsLY.intAccClass = 11 OR 
  tblAccountsLY.intAccClass = 12 OR tblAccountsLY.intAccClass = 39)  
  AND tblAccountsLY.bitLinkAPVendMast = 0  AND tblAccountsLY.bitLinkPrepayVendMast = 0 AND tblAccountsLY.bitLinkARCustMast = 0 AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccountsLY.intGLNumber  
  
 END  
  
END  
ELSE  
BEGIN  
  
 if @bitGLAccountAccess = 1  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  FROM tblAccountsLY  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInventory = 0   
  AND tblAccountsLY.bitInactive = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccType = 1 OR tblAccountsLY.intAccType = 2 OR tblAccountsLY.intAccType = 5)   
  AND (tblAccountsLY.intAccClass = 0 OR tblAccountsLY.intAccClass = 1 OR tblAccountsLY.intAccClass = 2 OR tblAccountsLY.intAccClass = 4 OR tblAccountsLY.intAccClass = 9 OR tblAccountsLY.intAccClass = 10 OR tblAccountsLY.intAccClass = 11 OR tblAccountsLY.intAccClass = 12 OR tblAccountsLY.intAccClass = 39)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccountsLY.bitLinkAPVendMast = 0  AND tblAccountsLY.bitLinkPrepayVendMast = 0 AND tblAccountsLY.bitLinkARCustMast = 0 AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, intGLNumber  
  
 END  
 ELSE  
 BEGIN  
  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
    ISNULL(tblInv.strPartNumber, '') JournalCode,   
    ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) AccountSecCount,   
    ISNULL(tblAccountsSec.strUserName,'') UserName   
  FROM tblAccountsLY  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE tblAccountsLY.bitLinkAP = 0   
  AND tblAccountsLY.bitLinkAR = 0   
  AND tblAccountsLY.bitLinkDeposit = 0   
  AND tblAccountsLY.bitLinkPrePay = 0   
  AND tblAccountsLY.bitInventory = 0   
  AND tblAccountsLY.bitInactive = 0   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)   
  AND (tblAccountsLY.intAccType = 1 OR tblAccountsLY.intAccType = 2 OR tblAccountsLY.intAccType = 5)   
  AND (tblAccountsLY.intAccClass = 0 OR tblAccountsLY.intAccClass = 1 OR tblAccountsLY.intAccClass = 2 OR tblAccountsLY.intAccClass = 4 OR tblAccountsLY.intAccClass = 9 OR tblAccountsLY.intAccClass = 10 OR tblAccountsLY.intAccClass = 11 OR tblAccountsLY.intAccClass = 12 OR tblAccountsLY.intAccClass = 39)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  AND tblAccountsLY.bitLinkAPVendMast = 0  AND tblAccountsLY.bitLinkPrepayVendMast = 0 AND tblAccountsLY.bitLinkARCustMast = 0 AND tblAccountsLY.bitLinkDepositCustMast = 0  
  ORDER BY intAccType, tblAccountsLY.intGLNumber  
  
 END  
  
END  
  
RETURN  
  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetReceiptsData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************START [GetReceiptsData]***********************************/

CREATE PROCEDURE [dbo].[GetReceiptsData] (
	@CustName AS NVARCHAR(100) = ''
	,@DocDate AS DATETIME = ''
	,@DocSearch AS NVARCHAR(500) = ''
	,@IsAllowReceiptOnSalesOrder AS BIT = 0
	)
AS
BEGIN
	IF @IsAllowReceiptOnSalesOrder = 0
	BEGIN
		SELECT Z.strInvDepNumber AS Reference
			,Z.strInvDocID AS DocumentNumber
			,Z.dteJournalDate AS JournalDate
			,Z.strSoNumber AS OrderNumber
			,Z.decInvAmount AS InvAmount
			,Z.decInvAmountF AS InvAmountF
			,Z.decAmount AS Amount
			,Z.decAmountF AS AmountF
			,CONVERT(INT,Z.intTransType)AS TransType
			,Z.decDiscAvail AS DiscAvailable
			,Z.decDiscAvailF AS DiscAvailF
			,Z.dteDiscExpires AS DiscExpires
			,Z.lngCustTrID AS LngID
			,ISNULL(tblInvoiceDoc.decVAT, 0) AS VAT
			,ISNULL(tblInvoiceDoc.decVATF, 0) AS VATF
			,Z.strCustName AS CustName
			,Z.strJEDocID AS JEDocID
		FROM (
			SELECT tblCustTrans.strInvDepNumber
				,tblCustTrans.strInvDocID
				,tblCustTrans.dteJournalDate
				,tblCustTrans.strSoNumber
				,tblCustTrans.decInvAmount
				,tblCustTrans.decInvAmountF
				,SUM(tblCustTransDT.decAmount) AS decAmount
				,SUM(tblCustTransDT.decAmountF) AS decAmountF
				,tblCustTrans.intTransType
				,tblCustTrans.decDiscAvail
				,tblCustTrans.decDiscAvailF
				,tblCustTrans.dteDiscExpires
				,tblCustTrans.lngCustTrID
				,tblCustTrans.strCustName
				,ISNULL((
						SELECT COUNT(strInvDocID)
						FROM tblPaymentPlan
						WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID
						), 0) AS intPaymentPlan
				,tblCustTrans.strJEDocID
			FROM tblCustTrans
			INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
			WHERE (tblCustTrans.strCustName = @CustName)
				AND tblCustTransDT.bitReversed = 0
				AND tblCustTrans.bitSettled = 0
				AND (
					tblCustTrans.dteJournalDate <= (
						SELECT DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, @DocDate) + 1, 0))
						)
					)
				AND (
					tblCustTrans.strOrdDocID IS NULL
					OR (
						tblCustTrans.strInvDocID IS NOT NULL
						AND tblCustTrans.strOrdDocID IS NOT NULL
						)
					)
				AND (
					tblCustTrans.strInvDocID LIKE ('%' + @DocSearch + '%')
					OR tblCustTrans.strInvDepNumber LIKE ('%' + @DocSearch + '%')
					OR tblCustTrans.strSoNumber LIKE ('%' + @DocSearch + '%')
					OR tblCustTrans.decInvAmount LIKE ('%' + @DocSearch + '%')
					OR decAmount LIKE ('%' + @DocSearch + '%')
					)
			GROUP BY tblCustTrans.strCustName
				,tblCustTrans.lngCustTrID
				,tblCustTrans.strInvDepNumber
				,tblCustTrans.dteJournalDate
				,tblCustTrans.strInvDocID
				,tblCustTrans.strSoNumber
				,tblCustTrans.decInvAmount
				,tblCustTrans.decInvAmountF
				,tblCustTrans.intTransType
				,tblCustTrans.decDiscAvail
				,tblCustTrans.decDiscAvailF
				,tblCustTrans.dteDiscExpires
				,tblCustTrans.strJEDocID
			) Z
		LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID
		WHERE Z.intPaymentPlan = 0
			OR Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%')
		ORDER BY Z.strCustName
			,Z.intTransType
			,Z.strInvDocID
	END
	ELSE
	BEGIN
			;

		WITH cteInvoices
		AS (
			SELECT Z.strInvDepNumber AS Reference
				,Z.strInvDocID AS DocumentNumber
				,Z.dteJournalDate AS JournalDate
				,Z.strSoNumber AS OrderNumber
				,Z.decInvAmount AS InvAmount
				,Z.decInvAmountF AS InvAmountF
				,Z.decAmount AS Amount
				,Z.decAmountF AS AmountF
				,Z.intTransType AS TransType
				,Z.decDiscAvail AS DiscAvailable
				,Z.decDiscAvailF AS DiscAvailF
				,Z.dteDiscExpires AS DiscExpires
				,Z.lngCustTrID AS LngID
				,ISNULL(tblInvoiceDoc.decVAT, 0) AS VAT
				,ISNULL(tblInvoiceDoc.decVATF, 0) AS VATF
				,Z.strCustName AS CustName
				,Z.strJEDocID AS JEDocID
			FROM (
				SELECT tblCustTrans.strInvDepNumber
					,tblCustTrans.strInvDocID
					,tblCustTrans.dteJournalDate
					,tblCustTrans.strSoNumber
					,tblCustTrans.decInvAmount
					,tblCustTrans.decInvAmountF
					,SUM(tblCustTransDT.decAmount) AS decAmount
					,SUM(tblCustTransDT.decAmountF) AS decAmountF
					,tblCustTrans.intTransType
					,tblCustTrans.decDiscAvail
					,tblCustTrans.decDiscAvailF
					,tblCustTrans.dteDiscExpires
					,tblCustTrans.lngCustTrID
					,tblCustTrans.strCustName
					,ISNULL((
							SELECT COUNT(strInvDocID)
							FROM tblPaymentPlan
							WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID
							), 0) AS intPaymentPlan
					,tblCustTrans.strJEDocID
				FROM tblCustTrans
				INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
				WHERE (tblCustTrans.strCustName = @CustName)
					AND tblCustTransDT.bitReversed = 0
					AND tblCustTrans.bitSettled = 0
					AND (
						tblCustTrans.dteJournalDate <= (
							SELECT DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, @DocDate) + 1, 0))
							)
						)
					AND (
						tblCustTrans.strOrdDocID IS NULL
						OR (
							tblCustTrans.strInvDocID IS NOT NULL
							AND tblCustTrans.strOrdDocID IS NOT NULL
							)
						)
				GROUP BY tblCustTrans.strCustName
					,tblCustTrans.lngCustTrID
					,tblCustTrans.strInvDepNumber
					,tblCustTrans.dteJournalDate
					,tblCustTrans.strInvDocID
					,tblCustTrans.strSoNumber
					,tblCustTrans.decInvAmount
					,tblCustTrans.decInvAmountF
					,tblCustTrans.intTransType
					,tblCustTrans.decDiscAvail
					,tblCustTrans.decDiscAvailF
					,tblCustTrans.dteDiscExpires
					,tblCustTrans.strJEDocID
				) Z
			LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID
			WHERE Z.intPaymentPlan = 0
				OR Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%')
			)
			,cteOrders
		AS (
			SELECT Z.strInvDepNumber AS Reference
				,Z.strOrdDocID AS DocumentNumber
				,Z.dteJournalDate AS JournalDate
				,Z.strSoNumber AS OrderNumber
				,Z.decInvAmount AS InvAmount
				,Z.decInvAmountF AS InvAmountF
				,Z.decAmount AS Amount
				,Z.decAmountF AS AmountF
				,Z.intTransType AS TransType
				,Z.decDiscAvail AS DiscAvailable
				,Z.decDiscAvailF AS DiscAvailF
				,Z.dteDiscExpires AS DiscExpires
				,Z.lngCustTrID AS LngID
				,ISNULL(tblOrderDoc.decVAT, 0) AS VAT
				,ISNULL(tblOrderDoc.decVATF, 0) AS VATF
				,Z.strCustName AS CustName
				,Z.strJEDocID AS JEDocID
			FROM (
				SELECT tblCustTrans.strInvDepNumber
					,tblCustTrans.strOrdDocID
					,tblCustTrans.dteJournalDate
					,tblCustTrans.strSoNumber
					,tblCustTrans.decInvAmount
					,tblCustTrans.decInvAmountF
					,SUM(tblCustTransDT.decAmount) AS decAmount
					,SUM(tblCustTransDT.decAmountF) AS decAmountF
					,tblCustTrans.intTransType
					,tblCustTrans.decDiscAvail
					,tblCustTrans.decDiscAvailF
					,tblCustTrans.dteDiscExpires
					,tblCustTrans.lngCustTrID
					,tblCustTrans.strCustName
					,tblCustTrans.strJEDocID
				FROM tblCustTrans
				INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
				WHERE (tblCustTrans.strCustName = @CustName)
					AND tblCustTransDT.bitReversed = 0
					AND tblCustTrans.bitSettled = 0
					AND (
						tblCustTrans.dteJournalDate <= (
							SELECT DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, @DocDate) + 1, 0))
							)
						)
					AND tblCustTrans.strOrdDocID IS NOT NULL
					AND tblCustTrans.strInvDocID IS NULL
				GROUP BY tblCustTrans.strCustName
					,tblCustTrans.lngCustTrID
					,tblCustTrans.strInvDepNumber
					,tblCustTrans.dteJournalDate
					,tblCustTrans.strOrdDocID
					,tblCustTrans.strSoNumber
					,tblCustTrans.decInvAmount
					,tblCustTrans.decInvAmountF
					,tblCustTrans.intTransType
					,tblCustTrans.decDiscAvail
					,tblCustTrans.decDiscAvailF
					,tblCustTrans.dteDiscExpires
					,tblCustTrans.strJEDocID
				) Z
			LEFT JOIN tblOrderDoc ON Z.strOrdDocID = tblOrderDoc.strOrdDocID
			WHERE Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%')
			)
			,cteOrdersFromOrderDoc
		AS (
			SELECT tblOrderDoc.strReference AS strInvDepNumber
				,tblOrderDoc.strOrdDocID AS DocID
				,tblOrderDoc.dteJournalDate
				,tblOrderDoc.strOrdDocID AS strSoNumber
				,tblOrderDoc.decTotal AS decInvAmount
				,tblOrderDoc.decTotalF AS decInvAmountF
				,tblOrderDoc.decTotal AS decAmount
				,tblOrderDoc.decTotalF AS decAmountF
				,1 AS intTransType
				,0 AS decDiscAvail
				,0 AS decDiscAvailF
				,0 AS dteDiscExpires
				,0 AS lngCustTrID
				,ISNULL(decVAT, 0) AS decVAT
				,ISNULL(decVATF, 0) AS decVATF
				,tblOrderDoc.strCustName
				,NULL AS strJEDocID
			FROM tblOrderDoc
			WHERE intDocType = 1
				AND bitCleared = 0
				AND tblOrderDoc.strCustName = @CustName
				AND tblOrderDoc.strOrdDocID NOT IN (
					SELECT strOrdDocID
					FROM tblCustTrans
					WHERE strOrdDocID IS NOT NULL
					)
				AND (
					tblOrderDoc.dteJournalDate <= (
						SELECT DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, @DocDate) + 1, 0))
						)
					)
				AND (
					CASE 
						WHEN tblOrderDoc.bitIsForeign = 1
							THEN tblOrderDoc.decTotalF
						ELSE tblOrderDoc.decTotal
						END <> 0
					)
			)
		SELECT *
		FROM cteInvoices
		
		UNION
		
		SELECT *
		FROM cteOrders
		
		UNION
		
		SELECT *
		FROM cteOrdersFromOrderDoc
		ORDER BY CustName
			,TransType
			,JEDocID
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetReceiptsDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetReceiptsDetails] (
	@CustName AS NVARCHAR(100) = ''
	,@Individual AS INT = 0
	,@Consolidated AS INT = 0
	,@NAConsolidated AS INT = 0
	,@IsHP AS BIT = 0
	,@IsAllowReceiptOnSalesOrder AS BIT = 0
	,@DocDate AS DATETIME
	,@DocSearch AS NVARCHAR(500) = ''
	,@PL_NameCust AS NVARCHAR(100) = ''
	--,@PL_Jouranl AS int = 0      
	--,@IsForeign as bit=0      
	--,@WithholdTax as decimal=0      
	)
AS
BEGIN
	DECLARE @strReturn AS NVARCHAR(500) = ''
	DECLARE @strCustname AS NVARCHAR(100) = ''
	DECLARE @tblCustmoer AS TABLE (
		ID INT identity(1, 1)
		,Custname NVARCHAR(50)
		)

	INSERT INTO @tblCustmoer (Custname)
	VALUES (@CustName)

	INSERT INTO @tblCustmoer (Custname)
	SELECT strCustName
	FROM tblCustomers
	WHERE strParentCust = @CustName

	DECLARE @MinID AS INT = 0
	DECLARE @MaxID AS INT = 0
	DECLARE @bitIsHP AS BIT = 0

	SELECT @MinID = min(ID)
	FROM @tblCustmoer

	SELECT @MaxID = max(ID)
	FROM @tblCustmoer

	DECLARE @tblList AS TABLE (
		ID INT identity(1, 1)
		,strInvDepNumber NVARCHAR(max) DEFAULT ''
		,strInvDocID NVARCHAR(max) DEFAULT ''
		,dteJournalDate DATETIME
		,strSoNumber NVARCHAR(max) DEFAULT ''
		,decInvAmount MONEY DEFAULT 0
		,decInvAmountF MONEY DEFAULT 0
		,decAmount MONEY DEFAULT 0
		,decAmountF MONEY DEFAULT 0
		,intTransType INT
		,decDiscAvail MONEY DEFAULT 0
		,decDiscAvailF MONEY DEFAULT 0
		,dteDiscExpires DATETIME
		,lngCustTrID BIGINT
		,decVAT MONEY
		,decVATF MONEY
		,strCustName NVARCHAR(max) DEFAULT ''
		,strJEDocID NVARCHAR(max) DEFAULT ''
		,[OUTPUT] NVARCHAR(max) DEFAULT ''
		)
	DECLARE @strConditionalCustomer AS NVARCHAR(max)
	DECLARE @bitIsHPselected AS BIT = 0

	SELECT @bitIsHPselected = tblTerms.bitIsHP
		,@strConditionalCustomer = tblCustomers.strCustName
	FROM tblCustomers
	INNER JOIN @tblCustmoer a ON tblCustomers.strCustName = a.Custname
	LEFT JOIN tblTerms ON tblTerms.strTerm = tblCustomers.strTerm

	--WHERE bitIsHP = 1      
	PRINT @bitIsHPselected

	IF @@ROWCOUNT > 0
	BEGIN
		--print @strConditionalCustomer      
		IF @bitIsHPselected = 1
			AND @NAConsolidated = @Consolidated
		BEGIN
			SET @strReturn = 'HP ' + @PL_NameCust + '(' + @strConditionalCustomer + ') can''t be selected for Consolidated Receipting.'

			INSERT INTO @tblList ([OUTPUT])
			SELECT @strReturn

			GOTO PROCESS_END
		END
	END

	IF @IsAllowReceiptOnSalesOrder = 0
	BEGIN
		INSERT INTO @tblList (
			strInvDepNumber
			,strInvDocID
			,dteJournalDate
			,strSoNumber
			,decInvAmount
			,decInvAmountF
			,decAmount
			,decAmountF
			,intTransType
			,decDiscAvail
			,decDiscAvailF
			,dteDiscExpires
			,lngCustTrID
			,decVAT
			,decVATF
			,strCustName
			,strJEDocID
			)
		SELECT Z.strInvDepNumber
			,Z.strInvDocID
			,Z.dteJournalDate
			,Z.strSoNumber
			,Z.decInvAmount
			,Z.decInvAmountF
			,Z.decAmount
			,Z.decAmountF
			,Z.intTransType
			,Z.decDiscAvail
			,Z.decDiscAvailF
			,Z.dteDiscExpires
			,Z.lngCustTrID
			,ISNULL(tblInvoiceDoc.decVAT, 0) AS decVAT
			,ISNULL(tblInvoiceDoc.decVATF, 0) AS decVATF
			,Z.strCustName
			,Z.strJEDocID
		FROM (
			SELECT tblCustTrans.strInvDepNumber
				,tblCustTrans.strInvDocID
				,tblCustTrans.dteJournalDate
				,tblCustTrans.strSoNumber
				,tblCustTrans.decInvAmount
				,tblCustTrans.decInvAmountF
				,SUM(tblCustTransDT.decAmount) AS decAmount
				,SUM(tblCustTransDT.decAmountF) AS decAmountF
				,tblCustTrans.intTransType
				,tblCustTrans.decDiscAvail
				,tblCustTrans.decDiscAvailF
				,tblCustTrans.dteDiscExpires
				,tblCustTrans.lngCustTrID
				,tblCustTrans.strCustName
				,ISNULL((
						SELECT COUNT(strInvDocID)
						FROM tblPaymentPlan
						WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID
						), 0) AS intPaymentPlan
				,tblCustTrans.strJEDocID
			FROM tblCustTrans
			INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
			WHERE (
					tblCustTrans.strCustName = @CustName --IN (    
					-- SELECT strCustName    
					-- FROM @tblCustmoer    
					--)    
					)
				AND tblCustTransDT.bitReversed = 0
				AND tblCustTrans.bitSettled = 0
				AND (
					tblCustTrans.dteJournalDate <= (
						SELECT DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, @DocDate) + 1, 0))
						)
					)
				AND (
					tblCustTrans.strOrdDocID IS NULL
					OR (
						tblCustTrans.strInvDocID IS NOT NULL
						AND tblCustTrans.strOrdDocID IS NOT NULL
						)
					)
				AND (
					tblCustTrans.strInvDocID LIKE ('%' + @DocSearch + '%')
					OR tblCustTrans.strInvDepNumber LIKE ('%' + @DocSearch + '%')
					OR tblCustTrans.strSoNumber LIKE ('%' + @DocSearch + '%')
					OR tblCustTrans.decInvAmount LIKE ('%' + @DocSearch + '%')
					OR decAmount LIKE ('%' + @DocSearch + '%')
					)
			GROUP BY tblCustTrans.strCustName
				,tblCustTrans.lngCustTrID
				,tblCustTrans.strInvDepNumber
				,tblCustTrans.dteJournalDate
				,tblCustTrans.strInvDocID
				,tblCustTrans.strSoNumber
				,tblCustTrans.decInvAmount
				,tblCustTrans.decInvAmountF
				,tblCustTrans.intTransType
				,tblCustTrans.decDiscAvail
				,tblCustTrans.decDiscAvailF
				,tblCustTrans.dteDiscExpires
				,tblCustTrans.strJEDocID
			) Z
		LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID
		WHERE Z.intPaymentPlan = 0
			OR Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%')
		ORDER BY Z.strCustName
			,Z.intTransType
			,Z.strInvDocID
	END
	ELSE
	BEGIN
			;

		WITH cteInvoices
		AS (
			SELECT Z.strInvDepNumber
				,Z.strInvDocID AS DocID
				,Z.dteJournalDate
				,Z.strSoNumber
				,Z.decInvAmount
				,Z.decInvAmountF
				,Z.decAmount
				,Z.decAmountF
				,Z.intTransType
				,Z.decDiscAvail
				,Z.decDiscAvailF
				,Z.dteDiscExpires
				,Z.lngCustTrID
				,ISNULL(tblInvoiceDoc.decVAT, 0) AS decVAT
				,ISNULL(tblInvoiceDoc.decVATF, 0) AS decVATF
				,Z.strCustName
				,Z.strJEDocID
			FROM (
				SELECT tblCustTrans.strInvDepNumber
					,tblCustTrans.strInvDocID
					,tblCustTrans.dteJournalDate
					,tblCustTrans.strSoNumber
					,tblCustTrans.decInvAmount
					,tblCustTrans.decInvAmountF
					,SUM(tblCustTransDT.decAmount) AS decAmount
					,SUM(tblCustTransDT.decAmountF) AS decAmountF
					,tblCustTrans.intTransType
					,tblCustTrans.decDiscAvail
					,tblCustTrans.decDiscAvailF
					,tblCustTrans.dteDiscExpires
					,tblCustTrans.lngCustTrID
					,tblCustTrans.strCustName
					,ISNULL((
							SELECT COUNT(strInvDocID)
							FROM tblPaymentPlan
							WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID
							), 0) AS intPaymentPlan
					,tblCustTrans.strJEDocID
				FROM tblCustTrans
				INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
				WHERE (
						tblCustTrans.strCustName = @CustName --IN (    
						-- SELECT strCustName    
						--  FROM @tblCustmoer    
						-- )    
						)
					AND tblCustTransDT.bitReversed = 0
					AND tblCustTrans.bitSettled = 0
					AND (
						tblCustTrans.dteJournalDate <= (
							SELECT DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, @DocDate) + 1, 0))
							)
						)
					AND (
						tblCustTrans.strOrdDocID IS NULL
						OR (
							tblCustTrans.strInvDocID IS NOT NULL
							AND tblCustTrans.strOrdDocID IS NOT NULL
							)
						)
				GROUP BY tblCustTrans.strCustName
					,tblCustTrans.lngCustTrID
					,tblCustTrans.strInvDepNumber
					,tblCustTrans.dteJournalDate
					,tblCustTrans.strInvDocID
					,tblCustTrans.strSoNumber
					,tblCustTrans.decInvAmount
					,tblCustTrans.decInvAmountF
					,tblCustTrans.intTransType
					,tblCustTrans.decDiscAvail
					,tblCustTrans.decDiscAvailF
					,tblCustTrans.dteDiscExpires
					,tblCustTrans.strJEDocID
				) Z
			LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID
			WHERE Z.intPaymentPlan = 0
				OR Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%')
			)
			,cteOrders
		AS (
			SELECT Z.strInvDepNumber
				,Z.strOrdDocID AS DocID
				,Z.dteJournalDate
				,Z.strSoNumber
				,Z.decInvAmount
				,Z.decInvAmountF
				,Z.decAmount
				,Z.decAmountF
				,Z.intTransType
				,Z.decDiscAvail
				,Z.decDiscAvailF
				,Z.dteDiscExpires
				,Z.lngCustTrID
				,ISNULL(tblOrderDoc.decVAT, 0) AS decVAT
				,ISNULL(tblOrderDoc.decVATF, 0) AS decVATF
				,Z.strCustName
				,Z.strJEDocID
			FROM (
				SELECT tblCustTrans.strInvDepNumber
					,tblCustTrans.strOrdDocID
					,tblCustTrans.dteJournalDate
					,tblCustTrans.strSoNumber
					,tblCustTrans.decInvAmount
					,tblCustTrans.decInvAmountF
					,SUM(tblCustTransDT.decAmount) AS decAmount
					,SUM(tblCustTransDT.decAmountF) AS decAmountF
					,tblCustTrans.intTransType
					,tblCustTrans.decDiscAvail
					,tblCustTrans.decDiscAvailF
					,tblCustTrans.dteDiscExpires
					,tblCustTrans.lngCustTrID
					,tblCustTrans.strCustName
					,tblCustTrans.strJEDocID
				FROM tblCustTrans
				INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
				WHERE (
						tblCustTrans.strCustName = @CustName --IN (  
						--SELECT strCustName  
						--FROM @tblCustmoer  
						--)  
						)
					AND tblCustTransDT.bitReversed = 0
					AND tblCustTrans.bitSettled = 0
					AND (
						tblCustTrans.dteJournalDate <= (
							SELECT DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, @DocDate) + 1, 0))
							)
						)
					AND tblCustTrans.strOrdDocID IS NOT NULL
					AND tblCustTrans.strInvDocID IS NULL
				GROUP BY tblCustTrans.strCustName
					,tblCustTrans.lngCustTrID
					,tblCustTrans.strInvDepNumber
					,tblCustTrans.dteJournalDate
					,tblCustTrans.strOrdDocID
					,tblCustTrans.strSoNumber
					,tblCustTrans.decInvAmount
					,tblCustTrans.decInvAmountF
					,tblCustTrans.intTransType
					,tblCustTrans.decDiscAvail
					,tblCustTrans.decDiscAvailF
					,tblCustTrans.dteDiscExpires
					,tblCustTrans.strJEDocID
				) Z
			LEFT JOIN tblOrderDoc ON Z.strOrdDocID = tblOrderDoc.strOrdDocID
			--LEFT JOIN tblWSProcessDoc ON Z.strOrdDocID = tblWSProcessDoc.ProcessDocID
			WHERE Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%')
			)
			,cteOrdersFromOrderDoc
		AS (
			SELECT tblOrderDoc.strReference AS strInvDepNumber
				,tblOrderDoc.strOrdDocID AS DocID
				,tblOrderDoc.dteJournalDate
				,tblOrderDoc.strOrdDocID AS strSoNumber
				,tblOrderDoc.decTotal AS decInvAmount
				,tblOrderDoc.decTotalF AS decInvAmountF
				,tblOrderDoc.decTotal AS decAmount
				,tblOrderDoc.decTotalF AS decAmountF
				,1 AS intTransType
				,0 AS decDiscAvail
				,0 AS decDiscAvailF
				,0 AS dteDiscExpires
				,0 AS lngCustTrID
				,ISNULL(decVAT, 0) AS decVAT
				,ISNULL(decVATF, 0) AS decVATF
				,tblOrderDoc.strCustName
				,NULL AS strJEDocID
			FROM tblOrderDoc
			WHERE intDocType = 1
				AND bitCleared = 0
				AND tblOrderDoc.strCustName = @CustName --IN (  
				--SELECT strCustName  
				--FROM @tblCustmoer  
				--)  
				AND tblOrderDoc.strOrdDocID NOT IN (
					SELECT strOrdDocID
					FROM tblCustTrans
					WHERE strOrdDocID IS NOT NULL
					)
				AND (
					tblOrderDoc.dteJournalDate <= (
						SELECT DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, @DocDate) + 1, 0))
						)
					)
				AND (
					CASE 
						WHEN tblOrderDoc.bitIsForeign = 1
							THEN tblOrderDoc.decTotalF
						ELSE tblOrderDoc.decTotal
						END <> 0
					)
			)
			,cteJobsFromProcessDoc
		AS (
			SELECT tblWSProcessDoc.ReferenceNumber AS strInvDepNumber
				,tblWSProcessDoc.ProcessDocID AS DocID
				,tblWSProcessDoc.DocumentDate
				,tblWSProcessDoc.ProcessDocID AS strSoNumber
				,tblWSProcessDoc.Total AS decInvAmount
				,tblWSProcessDoc.TotalF AS decInvAmountF
				,tblWSProcessDoc.Total AS decAmount
				,tblWSProcessDoc.TotalF AS decAmountF
				,1 AS intTransType
				,0 AS decDiscAvail
				,0 AS decDiscAvailF
				,0 AS dteDiscExpires
				,0 AS lngCustTrID
				,ISNULL(VAT, 0) AS decVAT
				,ISNULL(VATF, 0) AS decVATF
				,tblWSProcessDoc.CustomerCode
				,NULL AS strJEDocID
			FROM tblWSProcessDoc
			WHERE DocType = 2 --ProcessJob
				AND Cleared = 0
				AND tblWSProcessDoc.CustomerCode = @CustName --IN (  
				--SELECT strCustName  
				--FROM @tblCustmoer  
				--)  
				AND tblWSProcessDoc.ProcessDocID NOT IN (
					SELECT strOrdDocID
					FROM tblCustTrans
					WHERE strOrdDocID IS NOT NULL
					)
				AND (
					tblWSProcessDoc.DocumentDate <= (
						SELECT DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, @DocDate) + 1, 0))
						)
					)
				AND (
					CASE 
						WHEN tblWSProcessDoc.IsForeign = 1
							THEN tblWSProcessDoc.TotalF
						ELSE tblWSProcessDoc.Total
						END <> 0
					)
			)



		INSERT INTO @tblList (
			strInvDepNumber
			,strInvDocID
			,dteJournalDate
			,strSoNumber
			,decInvAmount
			,decInvAmountF
			,decAmount
			,decAmountF
			,intTransType
			,decDiscAvail
			,decDiscAvailF
			,dteDiscExpires
			,lngCustTrID
			,decVAT
			,decVATF
			,strCustName
			,strJEDocID
			)
		SELECT *
		FROM cteInvoices
		
		UNION
		
		SELECT *
		FROM cteOrders	
		
		UNION
		
		SELECT *
		FROM cteOrdersFromOrderDoc

		UNION

		select *
		from cteJobsFromProcessDoc

		ORDER BY strCustName
			,intTransType
			,DocID
	END

	WHILE 1 = 1
	BEGIN
		SELECT @strCustname = custname
		FROM @tblCustmoer
		WHERE ID = @MinID

		IF @@ROWCOUNT = 0
			BREAK;

		SELECT @bitIsHP = bitIsHP
		FROM tblTerms
		WHERE strTerm = (
				SELECT strTerm
				FROM tblCustomers
				WHERE strCustName = @strCustname
				)

		IF @bitIsHP = 1
			AND @NAConsolidated = @Consolidated
		BEGIN
			SET @strReturn = 'HP ' + @PL_NameCust + '(' + @strCustname + ') can''t be selected for Consolidated Receipting.'

			INSERT INTO @tblList ([OUTPUT])
			SELECT @strReturn

			GOTO PROCESS_END
		END

		IF @MinID = @MaxID
			BREAK;

		SET @MinID += 1
	END

	PROCESS_END:

	SELECT strInvDepNumber AS Reference
		,strInvDocID AS DocumentNumber
		,dteJournalDate AS JournalDate
		,strSoNumber AS OrderNumber
		,decInvAmount AS InvAmount
		,decInvAmountF AS InvAmountF
		,decAmount AS Amount
		,decAmountF AS AmountF
		,intTransType AS TransType
		,decDiscAvail AS DiscAvailable
		,decDiscAvailF AS DiscAvailF
		,dteDiscExpires AS DiscExpires
		,lngCustTrID AS LngID
		,decVAT AS VAT
		,decVATF AS VATF
		,strCustName AS CustName
		,strJEDocID AS JEDocID
		,[OUTPUT] AS [OUTPUT]
	FROM @tblList
END
GO
/****** Object:  StoredProcedure [dbo].[GetReconOnlyCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetReconOnlyCY]  
(  
@bitGLAccountAccess bit,  
@strUserName nvarchar(40)  
)  
AS  
BEGIN  
if @bitGLAccountAccess = 1  
  
BEGIN  
  
 SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
  
 ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  
 FROM tblAccounts (NOLOCK)   
  
 LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  
 WHERE tblAccounts.bitRecon = 1   
  
 AND tblAccounts.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets (NOLOCK))   
  
 AND tblAccounts.bitInactive = 0   
  
 AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)  
  
 ORDER BY intAccType, intGLNumber  
  
END  
  
ELSE  
  
BEGIN  
  
 SELECT tblAccounts.intGLNumber GLNumber, tblAccounts.intAccType AccountType, tblAccounts.strDesc 'Description', tblAccounts.intAccClass AccountClass,   
  
 ISNULL(tblInv.strPartNumber, '') JournalCode,   
  
 ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0) AccountSecCount,   
  
 ISNULL(tblAccountsSec.strUserName,'') UserName  
  
 FROM tblAccounts  (NOLOCK)  
  
 LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  
 LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber   
  
 WHERE tblAccounts.bitRecon = 1   
  
 AND tblAccounts.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets (NOLOCK))   
  
 AND tblAccounts.bitInactive = 0   
  
 AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2)  
  
 ORDER BY intAccType, tblAccounts.intGLNumber  
  
END  
  
RETURN  
  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetReconOnlyLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------
CREATE PROCEDURE [dbo].[GetReconOnlyLY] (  
 @bitGLAccountAccess BIT  
 ,@strUserName NVARCHAR(40)  
 )  
AS  
BEGIN  
 IF @bitGLAccountAccess = 1  
 BEGIN  
  SELECT tblAccountsLY.intGLNumber GLNumber  
   ,tblAccountsLY.intAccType AccountType  
   ,tblAccountsLY.strDesc 'Description'  
   ,tblAccountsLY.intAccClass AccountClass  
   ,ISNULL(tblInv.strPartNumber, '') JournalCode  
   ,0 AccountSecCount  
   ,'' UserName  
  FROM tblAccountsLY(NOLOCK)  
  LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
  WHERE tblAccountsLY.bitRecon = 1  
   AND tblAccountsLY.intGLNumber NOT IN (  
    SELECT intGLAsset  
    FROM tblAccountsets(NOLOCK)  
    )  
   AND tblAccountsLY.bitInactive = 0  
   AND (  
    tblAccountsLY.intGroupCode = 1  
    OR tblAccountsLY.intGroupCode = 2  
    )  
  ORDER BY intAccType, intGLNumber  
 END  
 ELSE  
 BEGIN  
  SELECT tblAccountsLY.intGLNumber GLNumber  
   ,tblAccountsLY.intAccType AccountType  
   ,tblAccountsLY.strDesc 'Description'  
   ,tblAccountsLY.intAccClass AccountClass  
   ,ISNULL(tblInv.strPartNumber, '') JournalCode  
   ,ISNULL((  
     SELECT COUNT(tblAccountsSec.intGLNumber)  
     FROM tblAccountsSec(NOLOCK)  
     WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
     ), 0) AccountSecCount  
   ,ISNULL(tblAccountsSec.strUserName, '') UserName  
  FROM tblAccountsLY(NOLOCK)  
  LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
   AND tblAccountsSec.strUserName = @strUserName  
  LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
  WHERE tblAccountsLY.bitRecon = 1  
   AND tblAccountsLY.intGLNumber NOT IN (  
    SELECT intGLAsset  
    FROM tblAccountsets(NOLOCK)  
    )  
   AND tblAccountsLY.bitInactive = 0  
   AND (  
    tblAccountsLY.intGroupCode = 1  
    OR tblAccountsLY.intGroupCode = 2  
    )  
  ORDER BY intAccType, tblAccountsLY.intGLNumber  
 END  
  
 RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetRelatedCompanyInvData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetRelatedCompanyInvData] (@PartNumber AS VARCHAR(100))  
AS  
BEGIN  
 SELECT tblInvVend.strVendName AS VendorName
	,tblInvVend.strPartNumber AS PartNumber 
	,tblInvVend.strItemCode AS ItemCode 
	,tblInvVend.strItemDesc AS ItemDescription
	,tblInvVend.decAvail AS Available
	,ISNULL(tblInvVend.strLocName,'') AS [Location]
	, ISNULL((select Top 1 tblVendors.strVendDesc from tblVendors where tblVendors.strVendName=tblInvVend.strVendName),tblInvVend.strVendName) as VendorDescription 
	From tblInvVend (NOLOCK) WHERE bitOtherCmp = 1 
  AND strPartNumber = @PartNumber  
END
GO
/****** Object:  StoredProcedure [dbo].[GetRelatedItemData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetRelatedItemData] (
	@Part AS NVARCHAR(50)
	,@BarCode AS NVARCHAR(300)
	,@PriceList AS VARCHAR(20)
	,@GPCalcInvLevel AS INT
	,@GPCalcLPP AS INT
	,@LocName AS NVARCHAR(50)
	,@UserName AS NVARCHAR(20)
	,@IsBPToolsMode AS BIT
	)
AS
BEGIN
	SELECT tblInv.strDesc AS [Desc]
		,tblInv.strStockUnit AS StockUnit
		,tblInv.intType AS [Type]
		,tblInv.bitAllowPriceChg AS AllowPriceChg
		,ISNULL(tblInvPrice.decSelling, 0) AS Selling
		,tblInv.strPartNumber AS PartNumber
		,tblInv.strField1 AS Field1
		,tblInv.strField2 AS Field2
		,tblInv.strField3 AS Field3
		,tblInv.strField4 AS Field4
		,tblInv.strField5 AS Field5
		,tblInv.strField6 AS Field6
		,tblInv.decSumAvail AS SumAvail
		,ISNULL(tblPricelists.bitShowZeroSellingPrice, 0) AS ShowZeroSellingPrice
		,tblInv.strSellUnit AS SellUnit
		,tblInv.strSellStockUnit AS SellStockUnit
		,tblInv.decSellFromStock AS SellFromStock
		,tblInv.bitInvSerialType AS IsSerialType
		,CASE 
			WHEN tblInv.intType = 4
				THEN tblInv.decStandardCost
			ELSE CASE @GPCalcLPP
					WHEN 0
						THEN tblInv.decLastPPUnit
					WHEN 1
						THEN tblInv.decStandardCost
					WHEN 2
						THEN CASE @GPCalcInvLevel
								WHEN 0
									THEN CASE 
											WHEN tblInv.decLastPPUnit > ISNULL((
														SELECT CASE EXT.decOnHand
																WHEN 0
																	THEN 0
																ELSE EXT.decValue / EXT.decOnHand
																END
														FROM tblInvExt EXT
														WHERE EXT.strPartNumber = tblInv.strPartNumber
															AND EXT.strLocName = @LocName
														), 0)
												THEN tblInv.decLastPPUnit
											ELSE CASE 
													WHEN tblInv.decLastPPUnit < ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
														THEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0)
													ELSE CASE 
															WHEN ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt EXT
																		WHERE EXT.strPartNumber = tblInv.strPartNumber
																			AND EXT.strLocName = @LocName
																		), 0) = 0
																THEN tblInv.decLastPPUnit
															ELSE ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt EXT
																		WHERE EXT.strPartNumber = tblInv.strPartNumber
																			AND EXT.strLocName = @LocName
																		), 0)
															END
													END
											END
								WHEN 1
									THEN CASE 
											WHEN tblInv.decLastPPUnit > ISNULL((
														CASE tblInv.decSumOnHand
															WHEN 0
																THEN 0
															ELSE tblInv.decSumValue / tblInv.decSumOnHand
															END
														), 0)
												THEN tblInv.decLastPPUnit
											ELSE CASE 
													WHEN tblInv.decLastPPUnit < ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
														THEN ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
													ELSE CASE 
															WHEN CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END = 0
																THEN tblInv.decLastPPUnit
															ELSE ISNULL((
																		CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END
																		), 0)
															END
													END
											END
								ELSE tblInv.decLastPPUnit
								END
					WHEN 3
						THEN CASE @GPCalcInvLevel
								WHEN 0
									THEN CASE 
											WHEN ISNULL((
														SELECT CASE EXT.decOnHand
																WHEN 0
																	THEN 0
																ELSE EXT.decValue / EXT.decOnHand
																END
														FROM tblInvExt EXT
														WHERE EXT.strPartNumber = tblInv.strPartNumber
															AND EXT.strLocName = @LocName
														), 0) = 0
												THEN tblInv.decLastPPUnit
											ELSE ISNULL((
														SELECT CASE EXT.decOnHand
																WHEN 0
																	THEN 0
																ELSE EXT.decValue / EXT.decOnHand
																END
														FROM tblInvExt EXT
														WHERE EXT.strPartNumber = tblInv.strPartNumber
															AND EXT.strLocName = @LocName
														), 0)
											END
								WHEN 1
									THEN CASE 
											WHEN CASE tblInv.decSumOnHand
													WHEN 0
														THEN 0
													ELSE tblInv.decSumValue / tblInv.decSumOnHand
													END = 0
												THEN tblInv.decLastPPUnit
											ELSE ISNULL((
														CASE tblInv.decSumOnHand
															WHEN 0
																THEN 0
															ELSE tblInv.decSumValue / tblInv.decSumOnHand
															END
														), 0)
											END
								ELSE tblInv.decLastPPUnit
								END
					ELSE tblInv.decLastPPUnit
					END
			END AS GPCalc
		,tblInv.decDefSaleQty AS DefaultSaleQty
		,tblInv.bitVoucherEnabled AS IsVoucherEnabled
		,ISNULL(tblInv.strVoucherCode, '') AS VoucherCode
		,tblInv.strDimProCode AS DimProCode
		,tblInv.strExtendedDesc AS ExtendedDesc
		,tblInv.strUnitOfMeasure AS UnitOfMeasure
		,tblInv.decMass AS Mass
		,tblInv.decVolumetricWeight AS VolumetricWeight
		,CAST((
				SELECT COUNT(tblInvUpsell.strPartItemNumber)
				FROM tblInvUpsell
				WHERE tblInvUpsell.strPartNumber = tblInv.strPartNumber
				) AS BIT) AS IsUpsellItem
		,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimension
		,tblInvImg.imgData
		,[bitSalesInvoice]
      ,[bitSalesOrder]
      ,[bitSalesQuote]
      ,[bitFreehandQuote]
      ,[bitUseProportionateQty]
      ,[bitPOS]
	FROM tblInv
	JOIN tblInvUpsell ON tblInv.strPartNumber = tblInvUpsell.strPartItemNumber
	LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
	LEFT JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	LEFT OUTER JOIN tblInvImg ON tblInv.strPartNumber = tblInvImg.strPartNumber
	WHERE 
	(
			tblInvUpsell.strPartNumber = @Part
			)
			AND (tblInvImg.bitDefaultImage IS NULL OR tblInvImg.bitDefaultImage = 1)
		AND
		 (
			tblInvPrice.strPricelist = @PriceList
			OR tblInvPrice.strPricelist IS NULL
			)
		AND tblInv.bitInactive = 0
		AND (
			@IsBPToolsMode = 1
			OR tblInv.strCategory IN (
				SELECT tblInvCat.strCategory
				FROM tblInvCat
				LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
				WHERE ISNULL((
							SELECT COUNT(tblInvCatSec.strCategory)
							FROM tblInvCatSec
							WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
							), 0) = 0
					OR (
						ISNULL((
								SELECT COUNT(tblInvCatSec.strCategory)
								FROM tblInvCatSec
								WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
								), 0) > 0
						AND tblInvCatSec.strUserName = @UserName
						)
				)
			OR tblInv.intType = 5
			)
END
GO
/****** Object:  StoredProcedure [dbo].[GetRepairAccountForInternalAsset]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetJournalEntryReportData] ***********/

/*********** Start [GetRepairAccountForInternalAsset] ***********/
CREATE PROCEDURE [dbo].[GetRepairAccountForInternalAsset]
(
  @AssetCode NVARCHAR(20)
)
AS
BEGIN
	select 
		
		tblAssetTypes.strCode as Code,
		tblAssetTypes.strDescription as [Description],
		tblAssetTypes.intRepairAccNo as RepairAccNo
	from tblAssetTypes 
	INNER JOIN tblAssets ON tblAssets.strAssetTypeCode = tblAssetTypes.strCode
	WHERE
		tblAssets.strAssetCode = @AssetCode
END
GO
/****** Object:  StoredProcedure [dbo].[GetResourceUsageDetailTrackingReportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetResourceUsageReportData] ***********/

/*********** Start [GetResourceUsageDetailTrackingReportData] ***********/
CREATE PROCEDURE [dbo].[GetResourceUsageDetailTrackingReportData]
(
	@PartNumberList nvarchar(max),
	@Location nvarchar(20),
	@StartDate SMALLDATETIME,
	@FinishDate SMALLDATETIME
)
AS
BEGIN
	SELECT 
		tblInvTracking.dteJournalDate AS 'JournalDate',
		tblInvTracking.strSource AS 'Source',
		tblInvTracking.lngJourID AS 'JourID',
		SUM(invtrackingDT.decQty) AS Expr1,
		SUM(invtrackingDT.decValue) AS Expr2,
		CASE 
			WHEN dbo.tblInvTracking.intModule = 2
				OR dbo.tblInvTracking.intModule = 8
				THEN ISNULL((
							SELECT TOP 1 tblInvoiceDoc.strCustName
							FROM dbo.tblInvoiceDoc
							WHERE dbo.tblInvoiceDoc.strInvDocID = dbo.tblInvTracking.strSource
							), '')
			WHEN dbo.tblInvTracking.intModule = 1
				OR dbo.tblInvTracking.intModule = 7
				THEN ISNULL((
							SELECT TOP 1 tblInvoiceDocP.strVendName
							FROM dbo.tblInvoiceDocP
							WHERE dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvTracking.strSource
							), '')
			END CustVend,

			CASE 
			WHEN dbo.tblInvTracking.intModule = 2
				OR dbo.tblInvTracking.intModule = 8
				THEN ISNULL((
							SELECT TOP 1 tblCustomers.strCustDesc
							FROM dbo.tblInvoiceDoc
							INNER JOIN tblCustomers on tblCustomers.strCustName = tblInvoiceDoc.strCustName
							WHERE dbo.tblInvoiceDoc.strInvDocID = dbo.tblInvTracking.strSource
							), '')
			WHEN dbo.tblInvTracking.intModule = 1
				OR dbo.tblInvTracking.intModule = 7
				THEN ISNULL((
							SELECT TOP 1 tblCustomers.strCustDesc
							FROM dbo.tblInvoiceDocP
							INNER JOIN tblCustomers on tblCustomers.strCustName = tblInvoiceDocP.strVendName
							WHERE dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvTracking.strSource
							), '')
			END CustVendDesc,


		invtrackingDT.strPartNumber As 'PartNumber'
	FROM tblInvTracking
	INNER JOIN tblInvTrackingDT AS invtrackingDT ON tblInvTracking.lngInvTrackID = invtrackingDT.lngInvTrackID
	INNER JOIN (SELECT WIPDocID as docID FROM tblWSWIP UNION SELECT strInvDocID FROM tblWSInvoiceDoc) AS docIDs	ON docIDs.docID=invtrackingDT.strSource

	WHERE (invtrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@PartNumberList, ',')))
		AND (tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate)
		AND (strLocName = @Location)
		AND tblInvTracking.intModule <> 1
	GROUP BY tblInvTracking.dteJournalDate,
		tblInvTracking.strSource,
		tblInvTracking.lngJourID,
		tblInvTracking.lngInvTrackID,
		tblInvTracking.intModule,
		invtrackingDT.strPartNumber

END
GO
/****** Object:  StoredProcedure [dbo].[GetResourceUsageReportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [LoadInvLocSec] ***********/

/*********** Start [GetResourceUsageReportData] ***********/
CREATE PROCEDURE [dbo].[GetResourceUsageReportData]
(
	@ItemList nvarchar(max),
	@Location nvarchar(20),
	@IsInactive bit,
	@Filter int,					--To apply filteration as per radio group selection
	@IsSortDescription bit,
	@StartDate SMALLDATETIME,
	@FinishDate SMALLDATETIME,
	@IsSummary bit,
	@FilterType int,					--To get intType as per tblInv table 
	@ModuleType nvarchar(20)
)
AS
BEGIN
	IF(@IsSummary = 1 ) --Summary Report
		BEGIN
			IF(@Filter = 0) --Assets
				BEGIN
					SELECT 
						MasterTable.strPartNumber AS 'Code', 
						MasterTable.strDesc AS 'Description',
						MasterTable.intType As 'Type',

						SUM(tblInvExt.decOpenQty) + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate < @StartDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'OpenQty', --AND tblInvTrackingDT.strLocName = tblInvExt.strLocName

						(SELECT ISNULL(SUM(tblInvTrackingDT.decQtyIn), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND CHARINDEX(CAST(tblInvTracking.intModule as nvarchar), @ModuleType) > 0 
						AND tblInvTracking.strSource IN (SELECT WIPDocID as docID FROM tblWSWIP UNION SELECT strInvDocID FROM tblWSInvoiceDoc)) AS 'QtyIn', 

						(SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND CHARINDEX(CAST(tblInvTracking.intModule as nvarchar), @ModuleType) > 0 
						AND tblInvTracking.strSource IN (SELECT WIPDocID as docID FROM tblWSWIP UNION SELECT strInvDocID FROM tblWSInvoiceDoc)) AS 'QtyOut', 

						SUM(tblInvExt.decOpenValue) + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate < @StartDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'OpenValue', 

						(SELECT ISNULL(SUM(tblInvTrackingDT.decValueIn), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND CHARINDEX(CAST(tblInvTracking.intModule as nvarchar), @ModuleType) > 0 
						AND tblInvTracking.strSource IN (SELECT WIPDocID as docID FROM tblWSWIP UNION SELECT strInvDocID FROM tblWSInvoiceDoc)) AS 'ValueIn', 

						(SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND CHARINDEX(CAST(tblInvTracking.intModule as nvarchar), @ModuleType) > 0 
						AND tblInvTracking.strSource IN (SELECT WIPDocID as docID FROM tblWSWIP UNION SELECT strInvDocID FROM tblWSInvoiceDoc)) AS 'ValueOut', 

						(CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc) AS OrderByCol, 


						(SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE 

						--(tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'Value', 

						tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AS 'Value', 

						(SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE		

						--(tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'Qty'

						tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'Qty'
					FROM 
						tblInvExt 
						INNER JOIN tblInv As MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber 
						INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet 
						INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
					WHERE 
						--MasterTable.intType = 1 AND
						-- tblInvExt.strLocName = @Location AND
						 (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
					AND (MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 ELSE 0 END)
					GROUP BY MasterTable.strPartNumber, MasterTable.strDesc, MasterTable.intType, tblAccounts.strDesc, tblAccounts.intGLNumber 
					ORDER BY
						MasterTable.intType
						,OrderByCol
						,CASE WHEN @IsSortDescription = 1 THEN MasterTable.strDesc END
						,MasterTable.strPartNumber
				END
			ELSE IF(@Filter = 1) --Category
				BEGIN
					SELECT 
					  MasterTable.strPartNumber AS 'Code', 
					  MasterTable.strDesc AS 'Description',
					  MasterTable.intType As 'Type',

					  SUM(tblInvExt.decOpenQty) + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate < @StartDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'OpenQty', --AND tblInvTrackingDT.strLocName = tblInvExt.strLocName

					  (SELECT ISNULL(SUM(tblInvTrackingDT.decQtyIn), 0 ) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND CHARINDEX(CAST(tblInvTracking.intModule as nvarchar), @ModuleType) > 0 
					  AND tblInvTracking.strSource IN (SELECT WIPDocID as docID FROM tblWSWIP UNION SELECT strInvDocID FROM tblWSInvoiceDoc)) AS 'QtyIn', 

					  (SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND CHARINDEX(CAST(tblInvTracking.intModule as nvarchar), @ModuleType) > 0 
					  AND tblInvTracking.strSource IN (SELECT WIPDocID as docID FROM tblWSWIP UNION SELECT strInvDocID FROM tblWSInvoiceDoc)) AS 'QtyOut', 

					  SUM(tblInvExt.decOpenValue) + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate < @StartDate) AND 
tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'OpenValue', 

					  (SELECT ISNULL(SUM(tblInvTrackingDT.decValueIn), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND CHARINDEX(CAST(tblInvTracking.intModule as nvarchar), @ModuleType) > 0 
					  AND tblInvTracking.strSource IN (SELECT WIPDocID as docID FROM tblWSWIP UNION SELECT strInvDocID FROM tblWSInvoiceDoc)) AS 'ValueIn', 

					  (SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND CHARINDEX(CAST(tblInvTracking.intModule as nvarchar), @ModuleType) > 0 
					  AND tblInvTracking.strSource IN (SELECT WIPDocID as docID FROM tblWSWIP UNION SELECT strInvDocID FROM tblWSInvoiceDoc)) AS 'ValueOut', 

					  MasterTable.strCategory AS OrderByCol,					  

					 (SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE 

						--(tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'Value', 

						tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AS 'Value', 

						(SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE		

						--(tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'Qty'

						tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'Qty'
					FROM 
					  tblInvExt 
					  LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber 
					WHERE 
					  --MasterTable.intType = 1 AND
					  --tblInvExt.strLocName = @Location AND
					   (
						MasterTable.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ','))
					  )
					  AND (MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 ELSE 0 END)
					  GROUP BY MasterTable.strPartNumber, MasterTable.strDesc, MasterTable.intType, MasterTable.strCategory
					  ORDER BY
						MasterTable.intType
						,OrderByCol
						,CASE WHEN @IsSortDescription = 1 THEN MasterTable.strDesc END
						,MasterTable.strPartNumber
				END
			ELSE IF(@Filter = 2) --AccountSets
				BEGIN
					SELECT 
						  MasterTable.strPartNumber AS 'Code',
						  MasterTable.strDesc AS 'Description', 
						  MasterTable.intType As 'Type',

						  SUM(tblInvExt.decOpenQty) + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate < @StartDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'OpenQty', --AND tblInvTrackingDT.strLocName = tblInvExt.strLocName

						  (SELECT ISNULL(SUM(tblInvTrackingDT.decQtyIn), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND CHARINDEX(CAST(tblInvTracking.intModule as nvarchar), @ModuleType) > 0 
						  AND tblInvTracking.strSource IN (SELECT WIPDocID as docID FROM tblWSWIP UNION SELECT strInvDocID FROM tblWSInvoiceDoc)) AS 'QtyIn', 

						  (SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND CHARINDEX(CAST(tblInvTracking.intModule as nvarchar), @ModuleType) > 0 
						  AND tblInvTracking.strSource IN (SELECT WIPDocID as docID FROM tblWSWIP UNION SELECT strInvDocID FROM tblWSInvoiceDoc))  AS 'QtyOut', 

						  SUM(tblInvExt.decOpenValue) + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate < @StartDate) AND
 tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'OpenValue', 

						  (SELECT ISNULL(SUM(tblInvTrackingDT.decValueIn), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND CHARINDEX(CAST(tblInvTracking.intModule as nvarchar), @ModuleType) > 0 
						  AND tblInvTracking.strSource IN (SELECT WIPDocID as docID FROM tblWSWIP UNION SELECT strInvDocID FROM tblWSInvoiceDoc)) AS 'ValueIn', 

						  (SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND CHARINDEX(CAST(tblInvTracking.intModule as nvarchar), @ModuleType) > 0 
						  AND tblInvTracking.strSource IN (SELECT WIPDocID as docID FROM tblWSWIP UNION SELECT strInvDocID FROM tblWSInvoiceDoc)) AS 'ValueOut', 
						  tblInvExt.strAcctSet AS OrderByCol,

						 (SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE 

						--(tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'Value', 

						tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AS 'Value', 

						(SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE		

						--(tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'Qty'

						tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'Qty'

						FROM 
						  tblInvExt as tblInvExt 
						  INNER JOIN tblInv As MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber 
						WHERE 
						  --MasterTable.intType = 1 AND
						 -- tblInvExt.strLocName = @Location AND
						  (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
					AND (MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 ELSE 0 END)
					GROUP BY MasterTable.strPartNumber, MasterTable.strDesc ,MasterTable.intType, tblInvExt.strAcctSet
					ORDER BY
						MasterTable.intType
						,OrderByCol
						,CASE WHEN @IsSortDescription = 1 THEN MasterTable.strDesc END
						,MasterTable.strPartNumber
				END
			ELSE  --Items,Service,buyout,All    --@Filter = 6 for ALL
				BEGIN	
					SELECT 
					  MasterTable.strPartNumber AS 'Code', 
					  MasterTable.strDesc AS 'Description', 
					  MasterTable.intType As 'Type',

					  SUM(tblInvExt.decOpenQty) + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0 ) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate < @StartDate ) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'OpenQty', --AND tblInvTrackingDT.strLocName = tblInvExt.strLocName

					  (SELECT  ISNULL(SUM(tblInvTrackingDT.decQtyIn), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND CHARINDEX(CAST(tblInvTracking.intModule as nvarchar), @ModuleType) > 0  
					  AND tblInvTracking.strSource IN (SELECT WIPDocID as docID FROM tblWSWIP UNION SELECT strInvDocID FROM tblWSInvoiceDoc)) AS 'QtyIn', --AND tblInvTrackingDT.strLocName = tblInvExt.strLocName

					  (SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND CHARINDEX(CAST(tblInvTracking.intModule as nvarchar), @ModuleType) > 0
					  AND tblInvTracking.strSource IN (SELECT WIPDocID as docID FROM tblWSWIP UNION SELECT strInvDocID FROM tblWSInvoiceDoc)) AS 'QtyOut', --AND tblInvTrackingDT.strLocName = tblInvExt.strLocName

					  SUM(tblInvExt.decOpenValue) + (SELECT  ISNULL(SUM(tblInvTrackingDT.decValue), 0 ) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate < @StartDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'OpenValue', --AND tblInvTrackingDT.strLocName = tblInvExt.strLocName

					  (SELECT ISNULL(SUM(tblInvTrackingDT.decValueIn), 0 ) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND CHARINDEX(CAST(tblInvTracking.intModule as nvarchar), @ModuleType) > 0 
					  AND tblInvTracking.strSource IN (SELECT WIPDocID as docID FROM tblWSWIP UNION SELECT strInvDocID FROM tblWSInvoiceDoc)) AS 'ValueIn', --AND tblInvTrackingDT.strLocName = tblInvExt.strLocName

					  (SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND CHARINDEX(CAST(tblInvTracking.intModule as nvarchar), @ModuleType) > 0 
					  AND tblInvTracking.strSource IN (SELECT WIPDocID as docID FROM tblWSWIP UNION SELECT strInvDocID FROM tblWSInvoiceDoc)) AS 'ValueOut', --AND tblInvTrackingDT.strLocName = tblInvExt.strLocName

					  '' AS OrderByCol,

					(SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE 
						--(tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'Value', 
						tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AS 'Value', 

						(SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE		
						--(tblInvTracking.dteJournalDate BETWEEN @StartDate AND @FinishDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'Qty'
						tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AS 'Qty'

					  FROM tblInvExt LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber 
					WHERE 
					  ((@Filter <> 6 AND MasterTable.intType = @FilterType) OR (@Filter = 6 AND MasterTable.intType <> @FilterType))
					 --AND (tblInvExt.strLocName = @Location)
					  AND (MasterTable.strPartNumber IN ( SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
					GROUP BY MasterTable.strPartNumber, MasterTable.strDesc, MasterTable.intType
					ORDER BY
						MasterTable.intType
						,OrderByCol
						,CASE WHEN @IsSortDescription = 1 THEN MasterTable.strDesc END
						,MasterTable.strPartNumber
				END
		END
	ELSE				--Detail Report
		BEGIN
			IF(@Filter = 0) --Assets
				BEGIN
					SELECT MasterTable.strPartNumber AS 'Code',
						MasterTable.strDesc AS 'Description',

						SUM(tblInvExt.decOpenQty) + (
							SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							WHERE (tblInvTracking.dteJournalDate < @StartDate)
								AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
								--AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
							) AS 'OpenQty',

						SUM(tblInvExt.decOpenValue) + (
							SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							WHERE (tblInvTracking.dteJournalDate < @StartDate)
								AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
								--AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
							) AS 'OpenValue',
						(CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc) AS OrderByCol,
						MasterTable.intType As 'Type'

					FROM tblInvExt
					LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
					INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
					INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
					WHERE 
						--MasterTable.intType = 1 AND 
						--tblInvExt.strLocName = @Location AND
						 (
							tblAccounts.intGLNumber IN (
								SELECT *
								FROM fnSplitStringAsTable(@ItemList, ',')
								)
							)
						GROUP BY MasterTable.strPartNumber, MasterTable.strDesc, tblAccounts.strDesc, tblAccounts.intGLNumber, MasterTable.intType
						ORDER BY
							MasterTable.intType
							,OrderByCol
							,CASE WHEN @IsSortDescription = 1 THEN MasterTable.strDesc END
							,MasterTable.strPartNumber
				END
			ELSE IF(@Filter = 1) --Category
				BEGIN
					SELECT MasterTable.strPartNumber AS 'Code',
						MasterTable.strDesc AS 'Description',

						SUM(tblInvExt.decOpenQty) + (
							SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)

							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							WHERE (tblInvTracking.dteJournalDate < @StartDate)
								AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
								--AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
							) AS 'OpenQty',

						SUM(tblInvExt.decOpenValue) + (
							SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							WHERE (tblInvTracking.dteJournalDate < @StartDate)
								AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
								--AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
							) AS 'OpenValue',
						MasterTable.strCategory AS OrderByCol,
						MasterTable.intType As 'Type'
					FROM tblInvExt
					LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
					WHERE 
						--MasterTable.intType = 1 AND 
						--tblInvExt.strLocName = @Location AND
						 (
							MasterTable.strCategory IN (
								SELECT *
								FROM fnSplitStringAsTable(@ItemList, ',')
								)
							)
						GROUP BY MasterTable.strPartNumber, MasterTable.strDesc, MasterTable.strCategory, MasterTable.intType
						ORDER BY
							MasterTable.intType
							,OrderByCol
							,CASE WHEN @IsSortDescription = 1 THEN MasterTable.strDesc END
							,MasterTable.strPartNumber
				END
			ELSE IF(@Filter = 2) --AccountSets
				BEGIN
					SELECT MasterTable.strPartNumber AS 'Code',
						MasterTable.strDesc AS 'Description',
						SUM(tblInvExt.decOpenQty) + (
							SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)

							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							WHERE (tblInvTracking.dteJournalDate < @StartDate)
								AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
								--AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
							) AS 'OpenQty',

						SUM(tblInvExt.decOpenValue) + (
							SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)

							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							WHERE (tblInvTracking.dteJournalDate < @StartDate)
								AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
								--AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
							) AS 'OpenValue',
						tblInvExt.strAcctSet AS OrderByCol,
						MasterTable.intType As 'Type'
					FROM tblInvExt
					LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
					WHERE 
						--MasterTable.intType = 1 AND
						--tblInvExt.strLocName = @Location AND
						 (
							tblInvExt.strAcctSet IN (
								SELECT *
								FROM fnSplitStringAsTable(@ItemList, ',')
								)
							)
						AND (MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 ELSE 0 END)
						GROUP BY MasterTable.strPartNumber, MasterTable.strDesc, tblInvExt.strAcctSet, MasterTable.intType
						ORDER BY
							MasterTable.intType
							,OrderByCol
							,CASE WHEN @IsSortDescription = 1 THEN MasterTable.strDesc END
							,MasterTable.strPartNumber
				END
			ELSE  --Items,Service,buyout,All
				BEGIN				
					SELECT MasterTable.strPartNumber AS 'Code',
						MasterTable.strDesc AS 'Description',

						SUM(tblInvExt.decOpenQty) + (
							SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							WHERE (tblInvTracking.dteJournalDate < @StartDate)
								AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
								--AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
							) AS 'OpenQty',

						SUM(tblInvExt.decOpenValue) + (
							SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)

							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							WHERE (tblInvTracking.dteJournalDate < @StartDate)
								AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
								--AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
							) AS 'OpenValue',
						'' AS OrderByCol,
						MasterTable.intType As 'Type'
					FROM tblInvExt
					LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
					WHERE 
						((@Filter <> 6 AND MasterTable.intType = @FilterType) OR (@Filter = 6 AND MasterTable.intType <> @FilterType))
						--AND tblInvExt.strLocName = @Location
						AND (
							MasterTable.strPartNumber IN (
								SELECT *
								FROM fnSplitStringAsTable(@ItemList, ',')
								)
							)
						GROUP BY MasterTable.strPartNumber, MasterTable.strDesc, MasterTable.intType
						ORDER BY
							MasterTable.intType
							,OrderByCol
							,CASE WHEN @IsSortDescription = 1 THEN MasterTable.strDesc END
							,MasterTable.strPartNumber
				END
		END
END
GO
/****** Object:  StoredProcedure [dbo].[GetRevenueAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------
CREATE PROCEDURE [dbo].[GetRevenueAccountsCY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 ,@isForeignCurrencyRevaluation BIT  
 ,@isGridAccount BIT  
 ,@GridAccountList VARCHAR(MAX)  
 ,@RevaluationDate DATETIME = NULL  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts (NOLOCK)  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.intAccType = 4  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec (NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts (NOLOCK)  
   LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.intAccType = 4  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   IF @isForeignCurrencyRevaluation = 1  
   BEGIN  
    IF @isGridAccount = 0  
    BEGIN  
     SELECT DISTINCT tblAccounts.intGLNumber GLNumber  
      ,tblAccounts.intAccType AccountType  
      ,tblAccounts.strDesc 'Description'  
      ,tblAccounts.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccounts.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccounts (NOLOCK)  
     --INNER JOIN tblJournalEntryDocDT ON tblAccounts.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     --INNER JOIN tblJournalEntryDoc ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency] (NOLOCK) ON tblCurrency.strCurrency = tblAccounts.strCurrency  
     LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
     WHERE tblAccounts.intAccType = 4  
      AND tblAccounts.bitInactive = 0  
      AND (  
       tblAccounts.intGroupCode = 1  
       OR tblAccounts.intGroupCode = 2  
       )  
      AND (tblAccounts.strCurrency <> @strCurrency)  
      AND (decBalance <> 0 OR decBalanceF <> 0)  
      --AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
     ORDER BY intAccType, tblAccounts.intGLNumber  
    END  
    ELSE  
    BEGIN  
     SELECT DISTINCT tblAccounts.intGLNumber GLNumber  
      ,tblAccounts.intAccType AccountType  
      ,tblAccounts.strDesc 'Description'  
      ,tblAccounts.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccounts.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccounts (NOLOCK)  
     INNER JOIN tblJournalEntryDocDT (NOLOCK) ON tblAccounts.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     INNER JOIN tblJournalEntryDoc (NOLOCK) ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency] (NOLOCK) ON tblCurrency.strCurrency = tblAccounts.strCurrency  
     LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
     WHERE tblAccounts.intAccType = 4  
      AND tblAccounts.bitInactive = 0  
      AND (  
       tblAccounts.intGroupCode = 1  
       OR tblAccounts.intGroupCode = 2  
       )  
      AND (tblAccounts.strCurrency <> @strCurrency)  
      AND decBalance <> 0  
      AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
      AND tblAccounts.intGLNumber NOT IN (  
       SELECT value  
       FROM dbo.fnSplitStringAsTable(@GridAccountList, ',')  
       )  
     ORDER BY intAccType, tblAccounts.intGLNumber  
    END  
   END  
   ELSE  
   BEGIN  
    SELECT tblAccounts.intGLNumber GLNumber  
     ,tblAccounts.intAccType AccountType  
     ,tblAccounts.strDesc 'Description'  
     ,tblAccounts.intAccClass AccountClass  
     ,ISNULL(tblInv.strPartNumber, '') JournalCode  
     ,0 AccountSecCount  
     ,'' UserName  
    FROM tblAccounts (NOLOCK)  
    LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
    WHERE tblAccounts.intAccType = 4  
     AND tblAccounts.bitInactive = 0  
     AND (  
      tblAccounts.intGroupCode = 1  
      OR tblAccounts.intGroupCode = 2  
      )  
     AND (  
      strCurrency = @strCurrency  
      OR strCurrency = @strHomeCurrency  
      )  
    ORDER BY intAccType, intGLNumber  
   END  
  END  
  ELSE  
  IF @isForeignCurrencyRevaluation = 1  
  BEGIN  
  SELECT DISTINCT tblAccounts.intGLNumber GLNumber  
 ,tblAccounts.intAccType AccountType  
 ,tblAccounts.strDesc 'Description'  
 ,tblAccounts.intAccClass AccountClass  
 ,ISNULL(tblInv.strPartNumber, '') JournalCode  
 ,ISNULL((  
   SELECT COUNT(tblAccountsSec.intGLNumber)  
   FROM tblAccountsSec(NOLOCK)  
   WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
   ), 0) AccountSecCount  
 ,ISNULL(tblAccountsSec.strUserName, '') UserName  
 ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccounts.decBalanceF AS VARCHAR(22))  
FROM tblAccounts(NOLOCK)  
LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
 AND tblAccountsSec.strUserName = @strUserName  
INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblAccounts.strCurrency  
LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
WHERE tblAccounts.intAccType = 4  
 AND tblAccounts.bitInactive = 0  
 AND (  
  tblAccounts.intGroupCode = 1  
  OR tblAccounts.intGroupCode = 2  
  )  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec (NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts (NOLOCK)  
   LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.intAccType = 4  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 RETURN  
END
GO

/****** Object:  StoredProcedure [dbo].[GetRevenueAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRevenueAccountsLY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 ,@isForeignCurrencyRevaluation BIT  
 ,@isGridAccount BIT  
 ,@GridAccountList VARCHAR(MAX)  
 ,@RevaluationDate DATETIME = NULL  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY (NOLOCK)  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 4  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec (NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY (NOLOCK)  
   LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 4  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   IF @isForeignCurrencyRevaluation = 1  
   BEGIN  
    IF @isGridAccount = 0  
    BEGIN  
     SELECT DISTINCT tblAccountsLY.intGLNumber GLNumber  
      ,tblAccountsLY.intAccType AccountType  
      ,tblAccountsLY.strDesc 'Description'  
      ,tblAccountsLY.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccountsLY.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccountsLY (NOLOCK)  
     --INNER JOIN tblJournalEntryDocDT ON tblAccountsLY.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     --INNER JOIN tblJournalEntryDoc ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency] (NOLOCK) ON tblCurrency.strCurrency = tblAccountsLY.strCurrency  
     LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
     WHERE tblAccountsLY.intAccType = 4  
      AND tblAccountsLY.bitInactive = 0  
      AND (  
       tblAccountsLY.intGroupCode = 1  
       OR tblAccountsLY.intGroupCode = 2  
       )  
      AND (tblAccountsLY.strCurrency <> @strCurrency)  
      AND (decBalance <> 0 OR decBalanceF <> 0)  
      --AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
     ORDER BY intAccType, tblAccountsLY.intGLNumber  
    END  
    ELSE  
    BEGIN  
     SELECT DISTINCT tblAccountsLY.intGLNumber GLNumber  
      ,tblAccountsLY.intAccType AccountType  
      ,tblAccountsLY.strDesc 'Description'  
      ,tblAccountsLY.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccountsLY.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccountsLY (NOLOCK)  
     INNER JOIN tblJournalEntryDocDT (NOLOCK) ON tblAccountsLY.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     INNER JOIN tblJournalEntryDoc (NOLOCK) ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency] (NOLOCK) ON tblCurrency.strCurrency = tblAccountsLY.strCurrency  
     LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
     WHERE tblAccountsLY.intAccType = 4  
      AND tblAccountsLY.bitInactive = 0  
      AND (  
       tblAccountsLY.intGroupCode = 1  
       OR tblAccountsLY.intGroupCode = 2  
       )  
      AND (tblAccountsLY.strCurrency <> @strCurrency)  
      AND decBalance <> 0  
      AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
      AND tblAccountsLY.intGLNumber NOT IN (  
       SELECT value  
       FROM dbo.fnSplitStringAsTable(@GridAccountList, ',')  
       )  
     ORDER BY intAccType, tblAccountsLY.intGLNumber  
    END  
   END  
   ELSE  
   BEGIN  
    SELECT tblAccountsLY.intGLNumber GLNumber  
     ,tblAccountsLY.intAccType AccountType  
     ,tblAccountsLY.strDesc 'Description'  
     ,tblAccountsLY.intAccClass AccountClass  
     ,ISNULL(tblInv.strPartNumber, '') JournalCode  
     ,0 AccountSecCount  
     ,'' UserName  
    FROM tblAccountsLY (NOLOCK)  
    LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
    WHERE tblAccountsLY.intAccType = 4  
     AND tblAccountsLY.bitInactive = 0  
     AND (  
      tblAccountsLY.intGroupCode = 1  
      OR tblAccountsLY.intGroupCode = 2  
      )  
     AND (  
      strCurrency = @strCurrency  
      OR strCurrency = @strHomeCurrency  
      )  
    ORDER BY intAccType, intGLNumber  
   END  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec (NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY (NOLOCK)  
   LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.intAccType = 4  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
  
 RETURN  
END
GO
/****** Object:  StoredProcedure [dbo].[GetRevenueExpenseAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------
CREATE PROCEDURE [dbo].[GetRevenueExpenseAccountsCY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (  
     tblAccounts.intAccType = 4  
     OR tblAccounts.intAccType = 5  
     )  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (  
     tblAccounts.intAccType = 4  
     OR tblAccounts.intAccType = 5  
     )  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (  
     tblAccounts.intAccType = 4  
     OR tblAccounts.intAccType = 5  
     )  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (  
     tblAccounts.intAccType = 4  
     OR tblAccounts.intAccType = 5  
     )  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
  
 RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetRevenueExpenseAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------
CREATE PROCEDURE [dbo].[GetRevenueExpenseAccountsLY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE (  
     tblAccountsLY.intAccType = 4  
     OR tblAccountsLY.intAccType = 5  
     )  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE (  
     tblAccountsLY.intAccType = 4  
     OR tblAccountsLY.intAccType = 5  
     )  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE (  
     tblAccountsLY.intAccType = 4  
     OR tblAccountsLY.intAccType = 5  
     )  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE (  
     tblAccountsLY.intAccType = 4  
     OR tblAccountsLY.intAccType = 5  
     )  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
  
 RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetReversalEntry]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetReversalEntry] ***********/
CREATE PROCEDURE [dbo].[GetReversalEntry] (
	@JournalId BIGINT
	,@IsCurrentYearAdj BIT
	,@IsNoInventory BIT
	,@IsAdjustPIGRVAccrualProcess BIT = 0
	)
AS
BEGIN
	DECLARE @Result AS TABLE (
		GLNumber VARCHAR(30)
		,Debits MONEY
		,Credits MONEY
		,Dept INT
		,DebitsF MONEY
		,CreditsF MONEY
		,Currency NVARCHAR(3)
		,Exchange DECIMAL
		,IsForeignAcct BIT
		)

	IF (@IsNoInventory = 0)
	BEGIN
		IF (@IsCurrentYearAdj = 1)
			INSERT INTO @Result
			SELECT intGLNumber
				,decDebits
				,decCredits
				,ISNULL(intDept, 0) intDept
				,decDebitsF
				,decCreditsF
				,strCurrency
				,decExchange
				,bitForeignAcct
			FROM tblJournalEnt
			WHERE (lngJourID = @JournalId)
			ORDER BY intLineNum
		ELSE
			INSERT INTO @Result
			SELECT intGLNumber
				,decDebits
				,decCredits
				,ISNULL(intDept, 0) intDept
				,decDebitsF
				,decCreditsF
				,strCurrency
				,decExchange
				,bitForeignAcct
			FROM tblJournalEntLY
			WHERE (lngJourID = @JournalId)
			ORDER BY intLineNum
	END
	ELSE
	BEGIN
		-- IF(@IsCurrentYearAdj = 1)  
		--  INSERT INTO @Result   
		--  SELECT intGLNumber, decDebits, decCredits, ISNULL(intDept,0) intDept, decDebitsF, decCreditsF, strCurrency, decExchange FROM tblJournalEnt WHERE (lngJourID = @JournalId) AND (intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets)) AND (intGLNumber NOT IN (SELECT intGLRevenue FROM tblAccountSets)) AND (intGLNumber NOT IN (SELECT intGLExpCOGS FROM tblAccountSets)) AND (intGLNumber NOT IN (SELECT intGLVariance FROM tblAccountSets)) ORDER BY intLineNum  
		-- ELSE  
		--  INSERT INTO @Result   
		--  SELECT intGLNumber, decDebits, decCredits, ISNULL(intDept,0) intDept, decDebitsF, decCreditsF, strCurrency, decExchange FROM tblJournalEntLY WHERE (lngJourID = @JournalId) AND (intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets)) AND (intGLNumber NOT IN (SELECT intGLRevenue FROM tblAccountSets)) AND (intGLNumber NOT IN (SELECT intGLExpCOGS FROM tblAccountSets)) AND (intGLNumber NOT IN (SELECT intGLVariance FROM tblAccountSets)) ORDER BY intLineNum  
		--END   
		--SELECT * FROM @Result  
		IF (@IsAdjustPIGRVAccrualProcess = 1)
		BEGIN
			IF (@IsCurrentYearAdj = 1)
				INSERT INTO @Result
				SELECT intGLNumber
					,decDebits
					,decCredits
					,ISNULL(intDept, 0) intDept
					,decDebitsF
					,decCreditsF
					,strCurrency
					,decExchange
					,bitForeignAcct
				FROM tblJournalEnt
				WHERE (lngJourID = @JournalId)
				ORDER BY intLineNum
			ELSE
				INSERT INTO @Result
				SELECT intGLNumber
					,decDebits
					,decCredits
					,ISNULL(intDept, 0) intDept
					,decDebitsF
					,decCreditsF
					,strCurrency
					,decExchange
					,bitForeignAcct
				FROM tblJournalEntLY
				WHERE (lngJourID = @JournalId)
				ORDER BY intLineNum
		END
		ELSE
		BEGIN
			IF (@IsCurrentYearAdj = 1)
				INSERT INTO @Result
				SELECT intGLNumber
					,decDebits
					,decCredits
					,ISNULL(intDept, 0) intDept
					,decDebitsF
					,decCreditsF
					,strCurrency
					,decExchange
					,bitForeignAcct
				FROM tblJournalEnt
				WHERE (lngJourID = @JournalId)
					AND (
						intGLNumber NOT IN (
							SELECT intGLAsset
							FROM tblAccountSets
							)
						)
					AND (
						intGLNumber NOT IN (
							SELECT intGLRevenue
							FROM tblAccountSets
							)
						)
					AND (
						intGLNumber NOT IN (
							SELECT intGLExpCOGS
							FROM tblAccountSets
							)
						)
					AND (
						intGLNumber NOT IN (
							SELECT intGLVariance
							FROM tblAccountSets
							)
						)
					AND (
						intGLNumber NOT IN (
							SELECT intGLNumber
							FROM tblAccounts
							WHERE bitLinkWorkshopWIP = 1
								AND bitIsLinkedAccount = 1
							)
						)
				ORDER BY intLineNum
			ELSE
				INSERT INTO @Result
				SELECT intGLNumber
					,decDebits
					,decCredits
					,ISNULL(intDept, 0) intDept
					,decDebitsF
					,decCreditsF
					,strCurrency
					,decExchange
					,bitForeignAcct
				FROM tblJournalEntLY
				WHERE (lngJourID = @JournalId)
					AND (
						intGLNumber NOT IN (
							SELECT intGLAsset
							FROM tblAccountSets
							)
						)
					AND (
						intGLNumber NOT IN (
							SELECT intGLRevenue
							FROM tblAccountSets
							)
						)
					AND (
						intGLNumber NOT IN (
							SELECT intGLExpCOGS
							FROM tblAccountSets
							)
						)
					AND (
						intGLNumber NOT IN (
							SELECT intGLVariance
							FROM tblAccountSets
							)
						)
					AND (
						intGLNumber NOT IN (
							SELECT intGLNumber
							FROM tblAccountsLY
							WHERE bitLinkWorkshopWIP = 1
								AND bitIsLinkedAccount = 1
							)
						)
				ORDER BY intLineNum
		END
	END

	SELECT *
	FROM @Result
END
GO

/****** Object:  StoredProcedure [dbo].[GetReversalEntryDA]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetReversalEntryGRV] ***********/


/*********** Start [GetReversalEntryDA] ***********/
CREATE PROCEDURE [dbo].[GetReversalEntryDA] (
	@JournalId BIGINT
	,@IsYearAdj INT
	,@YearID UNIQUEIDENTIFIER = NULL
	)
AS
BEGIN
	DECLARE @Result AS TABLE (
		GLNumber VARCHAR(30)
		,Debits MONEY
		,Credits MONEY
		,Dept INT
		,DebitsF MONEY
		,CreditsF MONEY
		,Currency NVARCHAR(3)
		,Exchange DECIMAL(20, 6)
		)

	IF (@IsYearAdj = 0)
	BEGIN
		INSERT INTO @Result
		SELECT intGLNumber AS GLNumber
			,decDebits AS Debits
			,decCredits AS Credits
			,isnull(intDept, 0) AS Dept
			,decDebitsF AS DebitsF
			,decCreditsF AS CreditsF
			,strCurrency AS Currency
			,decExchange AS Exchange
		FROM tblJournalEnt
		WHERE (lngJourID = @JournalId)
			AND (
				intGLNumber NOT IN (
					SELECT intGLAsset
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLRevenue
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLExpCOGS
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLVariance
					FROM tblAccountSets
					)
				)
		ORDER BY intLineNum
	END
	ELSE IF (@IsYearAdj = 1)
	BEGIN
		INSERT INTO @Result
		SELECT intGLNumber AS GLNumber
			,decDebits AS Debits
			,decCredits AS Credits
			,isnull(intDept, 0) AS Dept
			,decDebitsF AS DebitsF
			,decCreditsF AS CreditsF
			,strCurrency AS Currency
			,decExchange AS Exchange
		FROM tblJournalEntLY
		WHERE (lngJourID = @JournalId)
			AND (
				intGLNumber NOT IN (
					SELECT intGLAsset
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLRevenue
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLExpCOGS
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLVariance
					FROM tblAccountSets
					)
				)
		ORDER BY intLineNum
	END
	ELSE
	BEGIN
		INSERT INTO @Result
		SELECT intGLNumber AS GLNumber
			,decDebits AS Debits
			,decCredits AS Credits
			,isnull(intDept, 0) AS Dept
			,decDebitsF AS DebitsF
			,decCreditsF AS CreditsF
			,strCurrency AS Currency
			,decExchange AS Exchange
		FROM tblJournalEntHist
		WHERE (uidYearID = @YearID)
			AND (lngJourID = @JournalId)
			AND (
				intGLNumber NOT IN (
					SELECT intGLAsset
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLRevenue
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLExpCOGS
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLVariance
					FROM tblAccountSets
					)
				)
		ORDER BY intLineNum
	END

	SELECT *
	FROM @Result
END
GO
/****** Object:  StoredProcedure [dbo].[GetReversalEntryGRV]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetReversalEntry] ***********/


/*********** Start [GetReversalEntryGRV] ***********/
CREATE PROCEDURE [dbo].[GetReversalEntryGRV] (
	@JournalId BIGINT
	,@IsYearAdj INT
	,@YearID UNIQUEIDENTIFIER = NULL
	)
AS
BEGIN
	DECLARE @Result AS TABLE (
		GLNumber VARCHAR(30)
		,Debits MONEY
		,Credits MONEY
		,Dept INT 
		,DebitsF MONEY
		,CreditsF MONEY
		,Currency NVARCHAR(3)
		,Exchange DECIMAL(20, 6)
		)

	IF (@IsYearAdj = 0)
	BEGIN
		INSERT INTO @Result
		SELECT intGLNumber
			,decDebits
			,decCredits
			,isnull(intDept,0) as intDept
			,decDebitsF
			,decCreditsF
			,strCurrency
			,decExchange
		FROM tblJournalEnt
		WHERE (lngJourID = @JournalId)
			AND (
				intGLNumber NOT IN (
					SELECT intGLAsset
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLRevenue
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLExpCOGS
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLVariance
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT tblAccounts.intGLNumber
					FROM tblInv
					INNER JOIN tblAccounts ON tblInv.intExpAcct = tblAccounts.intGLNumber
					WHERE tblInv.intType = 5
					)
				)
		ORDER BY intLineNum
	END
	ELSE IF (@IsYearAdj = 1)
	BEGIN
		INSERT INTO @Result
		SELECT intGLNumber
			,decDebits
			,decCredits
			,isnull(intDept,0) as intDept
			,decDebitsF
			,decCreditsF
			,strCurrency
			,decExchange
		FROM tblJournalEntLY
		WHERE (lngJourID = @JournalId)
			AND (
				intGLNumber NOT IN (
					SELECT intGLAsset
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLRevenue
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLExpCOGS
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLVariance
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT tblAccounts.intGLNumber
					FROM tblInv
					INNER JOIN tblAccounts ON tblInv.intExpAcct = tblAccounts.intGLNumber
					WHERE tblInv.intType = 5
					)
				)
		ORDER BY intLineNum
	END
	ELSE
	BEGIN
		INSERT INTO @Result
		SELECT intGLNumber
			,decDebits
			,decCredits
			,isnull(intDept,0) as intDept
			,decDebitsF
			,decCreditsF
			,strCurrency
			,decExchange
		FROM tblJournalEntHist
		WHERE (uidYearID = @YearID)
			AND (lngJourID = @JournalId)
			AND (
				intGLNumber NOT IN (
					SELECT intGLAsset
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLRevenue
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLExpCOGS
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLVariance
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT tblAccounts.intGLNumber
					FROM tblInv
					INNER JOIN tblAccounts ON tblInv.intExpAcct = tblAccounts.intGLNumber
					WHERE tblInv.intType = 5
					)
				)
		ORDER BY intLineNum
	END

	SELECT *
	FROM @Result
END
GO

/****** Object:  StoredProcedure [dbo].[GetRunDepreciationAssetsReportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetRunDepreciationAssetsReportData]
	@DepreciateDate AS DATETIME = NULL
AS
BEGIN
	SELECT RTRIM(tblAssets.strAssetTypeCode) + ' - ' + tblAssetTypes.strDescription AS strAssetType
		,'' AS strAssetCode
		,'' AS strAssetDesc
		,0 AS decQuantity
		,NULL AS dteDepreciateFrom
		,0.0 AS decPurchasePrice
		,0.0 AS decSalvageValue
		,0.0 AS decReplacementValue
	FROM tblAssets
	INNER JOIN tblAssetTypes ON tblAssets.strAssetTypeCode = tblAssetTypes.strCode
	WHERE tblAssets.strAssetCode IN (
			SELECT strAssetCode
			FROM tblDepreciationHistory
			WHERE tblDepreciationHistory.dteDepreciationDate = @DepreciateDate
			)
	ORDER BY strAssetType
END
GO
/****** Object:  StoredProcedure [dbo].[GetRunDepreciationReportCoOptsN]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/**********End [GetRunDepreciationReportDataHistory]**********************/

/**********Start [GetRunDepreciationReportCoOptsN]**********************/
CREATE PROCEDURE [dbo].[GetRunDepreciationReportCoOptsN]
AS
BEGIN
	SELECT strDepreciationMethod1
		,strDepreciationMethod2
		,strDepreciationMethod3
		,strDepreciationMethod4
		,strDepreciationMethod5
	FROM tblCoOptsN
END
GO
/****** Object:  StoredProcedure [dbo].[GetRunDepreciationReportDataHistory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/**********End [GetRunDepreciationAssetsReportData]**********************/

/**********Start [GetRunDepreciationReportDataHistory]**********************/
CREATE PROCEDURE [dbo].[GetRunDepreciationReportDataHistory]
	@DepreciateDate AS DATETIME = NULL
AS
BEGIN
	SELECT *
		,(
			SELECT strAssetDesc
			FROM tblAssets
			WHERE tblAssets.strAssetCode = tblDepreciationHistory.strAssetCode
			) AS strAsetDesc
	FROM tblDepreciationHistory
	WHERE tblDepreciationHistory.dteDepreciationDate = @DepreciateDate
	ORDER BY tblDepreciationHistory.strAssetCode
END
GO
/****** Object:  StoredProcedure [dbo].[GetSalesCyclePriceList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetSalesCyclePriceList] (
	@PartNumber VARCHAR(50)
	,@TransactionType NVARCHAR(50)
	)
AS
BEGIN
	SELECT tblInvPrice.strPricelist AS Pricelist
		,tblInvPrice.decSelling AS Selling
		,CONVERT(DATE, tblPriceListsByDate.dteStartDate) AS StartDate
		,CONVERT(DATE, tblPriceListsByDate.dteFinishDate) AS EndDate
		,tblInvPrice.strUnit AS Unit
		,ISNULL(tblInvUOMs.decConversionFactor, 1) AS ConversionFactor
		,ISNULL(tblInvUOMs.strConversionType, 'Multiply') AS ConversionType
	FROM tblInv
	INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
	INNER JOIN tblPriceListsByDate ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
	LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber
		AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
		AND tblInvUOMs.bitInactive = 0
	WHERE (tblInvPrice.strPartNumber = @PartNumber)
		AND (
			(
				tblInvUOMs.strUseFor = @TransactionType
				OR tblInvUOMs.strUseFor = 'Both'
				)
			OR tblInvPrice.bitStockUnit = 1
			)
	ORDER BY tblInvPrice.strPricelist
		,tblPriceListsByDate.uidPriceBasedID
		,tblInvPrice.bitStockUnit DESC
		,tblInvPrice.strUnit
END
GO
/****** Object:  StoredProcedure [dbo].[GetSalesDeposite]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetSalesDeposite]
AS
BEGIN
--SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) * -1 AS Expr1 FROM tblCustTransDT INNER JOIN tblCustTrans ON tblCustTransDT.lngCustTrID = tblCustTrans.lngCustTrID 
--WHERE (tblCustTransDT.bitReversed = 0) AND (tblCustTrans.intTransType = 2)	
SELECT SUM(ISNULL(Z.Expr1, 0))
FROM (
SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) * - 1 AS Expr1
FROM tblCustTrans
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
WHERE (tblCustTransDT.bitReversed = 0)
AND (tblCustTrans.intTransType = 2)
AND (
tblCustTrans.strOrdDocID IS NULL
OR (
tblCustTrans.strInvDocID IS NOT NULL
AND tblCustTrans.strOrdDocID IS NOT NULL
)
)
UNION ALL
SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) * - 1 AS Expr1
FROM tblCustTrans
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
WHERE (tblCustTransDT.bitReversed = 0)
AND (tblCustTrans.intTransType = 2)
AND (tblCustTrans.strOrdDocID IS NOT NULL)
AND (tblCustTrans.strInvDocID IS NULL)
AND (tblCustTransDT.lngCustPayID IS NOT NULL)
) Z
END
GO
/****** Object:  StoredProcedure [dbo].[GetSalesDimensionsProfilesData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [LotNumberAllow] ***********/

/*********** Start [GetSalesDimensionsProfilesData] ***********/
CREATE PROCEDURE [dbo].[GetSalesDimensionsProfilesData]
(
	@DimProCode nvarchar(40)
)
AS
BEGIN
	SELECT 
		strDescription AS [Description], 
		intRoundingDecimals AS RoundingDecimals, 
		ISNULL((SELECT COUNT(tblDimProLines.intLineNo) FROM tblDimProLines WHERE tblDimProLines.strDimProCode = tblDimensionProfiles.strDimProCode),0) AS [LineNo]
	FROM 
		tblDimensionProfiles 
	WHERE 
		strDimProCode = @DimProCode
END
GO
/****** Object:  StoredProcedure [dbo].[GetSalesDiscountMatrixData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetSalesDiscountMatrixData]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetSalesDiscountMatrixData]
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	SELECT strCustCategory AS CustCategory,
		strInvCategory AS InvCategory,
		decDiscount AS Discount
	FROM tblDiscountMatrix
	WHERE strCustCategory IN (
			SELECT strCustCategory
			FROM tblCustomerCat
			WHERE bitInactive = 0
			)
		AND strInvCategory IN (
			SELECT strCategory
			FROM tblInvCat
			WHERE bitInactive = 0
			)
	ORDER BY strInvCategory,
		strCustCategory
END
GO
/****** Object:  StoredProcedure [dbo].[GetSalesDiscountMatrixDataByInvCategoryWebStore]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetSalesDiscountMatrixDataByInvCategoryWebStore] --Magento SP
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	SELECT strCustCategory AS CustCategory,
	replace(strInvCategory,'/','-') AS InvCategory,
	decDiscount AS Discount
	FROM tblDiscountMatrix
	WHERE strCustCategory IN (
			SELECT strCustCategory
			FROM tblCustomerCat
			WHERE bitInactive = 0
			)
		AND strInvCategory IN (
			SELECT strCategory
			FROM tblInvCat
			WHERE bitInactive = 0
			)
			AND strInvCategory IN (SELECT strCategory FROM tblInv WHERE bitWebstoreItem = 1 GROUP BY strCategory)
	ORDER BY strInvCategory,
		strCustCategory

END
GO
/****** Object:  StoredProcedure [dbo].[GetSalesDocumentData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetSalesDocumentData] (
	@CustName NVARCHAR(100)
	,@PickedCustName NVARCHAR(100)
	,@InvoiceType INT
	,@SortType INT
	,@StartDate DATETIME
	,@EndDate DATETIME
	,@SelectedQuote INT
	,@IsBookmark BIT
	,@IsCriteriaWorkflow BIT
	,@IsARCreateReturnIcon BIT
	,@Location NVARCHAR(20)
	,@Department INT
	,@DeliveryRouteID NVARCHAR(100)
	,@Search NVARCHAR(100)
	,@isWorkShop BIT = NULL
	,@IsCreditNote BIT
	,@IsBPToolsMode AS BIT
	,@UserName AS NVARCHAR(100)
	)
AS
BEGIN
	DECLARE @Temp AS TABLE (
		CustomerName NVARCHAR(1000)
		,CustomerDesc NVARCHAR(1000)
		,JournalDate SMALLDATETIME
		,DocumentNumber NVARCHAR(100)
		,Reference NVARCHAR(100)
		,Total MONEY NULL
		,IsForeign BIT NULL
		,TotalF MONEY NULL
		,Currency NVARCHAR(6) NULL
		,SalesName NVARCHAR(100) NULL
		,Term NVARCHAR(100) NULL
		,Department NVARCHAR(100) NULL
		,DiscPerc MONEY NULL
		,DelMethodCode NVARCHAR(100) NULL
		,DeliveryCost MONEY NULL
		,DeliveryCostF MONEY NULL
		,IsApproved BIT NULL
		,ApprovedBy NVARCHAR(100) NULL
		,ApprovedDate DATETIME NULL
		,Location NVARCHAR(20) DEFAULT NULL
		,LocationCount INT DEFAULT NULL
		,OrdDocID NVARCHAR(100) DEFAULT NULL
		,IsFromSO BIT NULL
		,IsExcluded BIT NULL
		,Amount MONEY NULL
		,CustCategory NVARCHAR(40) NULL
		,Employee NVARCHAR(100) NULL
		,Comment NVARCHAR(100) NULL
		)

	IF (
			@InvoiceType = 10
			OR @InvoiceType = 12
			) -- CreditRequests OR CreditRequestsConvert
	BEGIN
		INSERT INTO @Temp (
			CustomerName
			,CustomerDesc
			,JournalDate
			,DocumentNumber
			,Reference
			,Total
			,IsForeign
			,TotalF
			,Currency
			,IsExcluded
			,Location
			,Department
			,Term
			,SalesName
			,DiscPerc
			,DelMethodCode
			,DeliveryCost
			,DeliveryCostF
			,IsApproved
			,Amount
			)
		SELECT tblOrderDoc.strCustName
			,tblCustomers.strCustDesc
			,tblOrderDoc.dteJournalDate
			,tblOrderDoc.strOrdDocID
			,tblOrderDoc.strReference
			,tblOrderDoc.decTotal
			,tblOrderDoc.bitIsForeign
			,tblOrderDoc.decTotalF
			,tblOrderDoc.strCurrency
			,0
			,''
			,''
			,''
			,'None'
			,0
			,''
			,0
			,0
			,0
			,(
				CASE tblOrderDoc.bitIsForeign
					WHEN 1
						THEN tblOrderDoc.decTotalF
					ELSE tblOrderDoc.decTotal
					END
				) AS Amount
		FROM tblOrderDoc
		INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
		WHERE tblOrderDoc.strOrdDocID LIKE 'CR%'
			--AND tblOrderDoc.bitCleared = CASE WHEN @SelectedQuote = 0 THEN 0 ELSE 1 END
			AND tblOrderDoc.bitIsFromWorkshop = ISNULL(@isWorkShop, 0)
			AND ((tblOrderDoc.bitCleared = CASE 
				WHEN @SelectedQuote = 1
					THEN 1
				ELSE 0
				END) OR  @SelectedQuote = 2)
			AND (
				@SelectedQuote = 2
				OR tblOrderDoc.intDocType = 1
				)
			AND (
				CONVERT(DATE, tblOrderDoc.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				LEN(@CustName) = 0
				OR tblOrderDoc.strCustName = @CustName
				)
			AND (
				LEN(@PickedCustName) = 0
				OR tblCustomers.strCustName = @PickedCustName
				)
			AND (
				tblOrderDoc.strCustName LIKE @Search
				OR tblCustomers.strCustDesc LIKE @Search
				OR tblOrderDoc.dteJournalDate LIKE @Search
				OR tblOrderDoc.strOrdDocID LIKE @Search
				OR tblOrderDoc.strReference LIKE @Search
				OR CASE 
					WHEN tblOrderDoc.bitIsForeign = 1
						THEN tblOrderDoc.decTotalF
					ELSE tblOrderDoc.decTotal
					END LIKE @Search
				OR tblOrderDoc.strCurrency LIKE @Search
				)
			AND (
				@IsBPToolsMode = 1
				OR strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
	END
	ELSE IF (@InvoiceType = 1) -- Quotes
	BEGIN
		INSERT INTO @Temp (
			CustomerName
			,CustomerDesc
			,JournalDate
			,DocumentNumber
			,Reference
			,Total
			,IsForeign
			,TotalF
			,Currency
			,IsExcluded
			,Location
			,Department
			,Term
			,SalesName
			,DiscPerc
			,DelMethodCode
			,DeliveryCost
			,DeliveryCostF
			,IsApproved
			,Amount
			)
		SELECT tblOrderDoc.strCustName
			,tblCustomers.strCustDesc
			,tblOrderDoc.dteJournalDate
			,tblOrderDoc.strOrdDocID
			,tblOrderDoc.strReference
			,tblOrderDoc.decTotal
			,tblOrderDoc.bitIsForeign
			,tblOrderDoc.decTotalF
			,tblOrderDoc.strCurrency
			,0
			,''
			,''
			,''
			,'None'
			,0
			,''
			,0
			,0
			,0
			,(
				CASE tblOrderDoc.bitIsForeign
					WHEN 1
						THEN tblOrderDoc.decTotalF
					ELSE tblOrderDoc.decTotal
					END
				) AS Amount
		FROM tblOrderDoc
		INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
		WHERE (
				@SelectedQuote = 1
				OR tblOrderDoc.bitCleared = 0
				)
			AND tblOrderDoc.intDocType = 2
			AND (
				CONVERT(DATE, tblOrderDoc.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				LEN(@CustName) = 0
				OR tblOrderDoc.strCustName = @CustName
				)
			AND (
				@IsBookmark = 0
				OR bitBookmark = 1
				)
			AND (
				LEN(@PickedCustName) = 0
				OR tblCustomers.strCustName = @PickedCustName
				)
			AND (
				tblOrderDoc.strCustName LIKE @Search
				OR tblCustomers.strCustDesc LIKE @Search
				OR tblOrderDoc.dteJournalDate LIKE @Search
				OR tblOrderDoc.strOrdDocID LIKE @Search
				OR tblOrderDoc.strReference LIKE @Search
				OR CASE 
					WHEN tblOrderDoc.bitIsForeign = 1
						THEN tblOrderDoc.decTotalF
					ELSE tblOrderDoc.decTotal
					END LIKE @Search
				OR tblOrderDoc.strCurrency LIKE @Search
				)
			AND (
				@IsBPToolsMode = 1
				OR strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
	END
	ELSE IF (@InvoiceType = 2) -- SalesOrders
	BEGIN
		INSERT INTO @Temp (
			CustomerName
			,CustomerDesc
			,JournalDate
			,DocumentNumber
			,Reference
			,Total
			,IsForeign
			,TotalF
			,Currency
			,IsExcluded
			,Location
			,Department
			,Term
			,SalesName
			,DiscPerc
			,DelMethodCode
			,DeliveryCost
			,DeliveryCostF
			,IsApproved
			,Amount
			)
		SELECT tblOrderDoc.strCustName
			,tblCustomers.strCustDesc
			,tblOrderDoc.dteJournalDate
			,tblOrderDoc.strOrdDocID
			,tblOrderDoc.strReference
			,tblOrderDoc.decTotal
			,tblOrderDoc.bitIsForeign
			,tblOrderDoc.decTotalF
			,tblOrderDoc.strCurrency
			,0
			,''
			,''
			,''
			,'None'
			,0
			,''
			,0
			,0
			,0
			,(
				CASE tblOrderDoc.bitIsForeign
					WHEN 1
						THEN tblOrderDoc.decTotalF
					ELSE tblOrderDoc.decTotal
					END
				) AS Amount
		FROM tblOrderDoc
		INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
		WHERE (
				@SelectedQuote = 1
				OR tblOrderDoc.bitCleared = 0
				)
			AND tblOrderDoc.intDocType = 1
			AND (
				CONVERT(DATE, tblOrderDoc.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				LEN(@CustName) = 0
				OR tblOrderDoc.strCustName = @CustName
				)
			AND (
				@IsBookmark = 0
				OR bitBookmark = 1
				)
			AND (
				@IsCriteriaWorkflow = 0
				OR bitInvWorkflowDA = 1
				)
			AND (
				LEN(@PickedCustName) = 0
				OR tblCustomers.strCustName = @PickedCustName
				)
			AND (
				tblOrderDoc.strCustName LIKE @Search
				OR tblCustomers.strCustDesc LIKE @Search
				OR tblOrderDoc.dteJournalDate LIKE @Search
				OR tblOrderDoc.strOrdDocID LIKE @Search
				OR tblOrderDoc.strReference LIKE @Search
				OR CASE 
					WHEN tblOrderDoc.bitIsForeign = 1
						THEN tblOrderDoc.decTotalF
					ELSE tblOrderDoc.decTotal
					END LIKE @Search
				OR tblOrderDoc.strCurrency LIKE @Search
				)
			AND (
				@IsBPToolsMode = 1
				OR strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
	END
	ELSE IF (@InvoiceType = 16) -- Layby
	BEGIN
		INSERT INTO @Temp (
			CustomerName
			,CustomerDesc
			,JournalDate
			,DocumentNumber
			,Reference
			,Total
			,IsForeign
			,TotalF
			,Currency
			,IsExcluded
			,Location
			,Department
			,Term
			,SalesName
			,DiscPerc
			,DelMethodCode
			,DeliveryCost
			,DeliveryCostF
			,IsApproved
			,Amount
			)
		SELECT tblOrderDoc.strCustName
			,tblCustomers.strCustDesc
			,tblOrderDoc.dteJournalDate
			,tblOrderDoc.strOrdDocID
			,tblOrderDoc.strReference
			,tblOrderDoc.decTotal
			,tblOrderDoc.bitIsForeign
			,tblOrderDoc.decTotalF
			,tblOrderDoc.strCurrency
			,0
			,''
			,''
			,''
			,'None'
			,0
			,''
			,0
			,0
			,0
			,(
				CASE tblOrderDoc.bitIsForeign
					WHEN 1
						THEN tblOrderDoc.decTotalF
					ELSE tblOrderDoc.decTotal
					END
				) AS Amount
		FROM tblOrderDoc
		INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
		WHERE (
				@SelectedQuote = 1
				OR tblOrderDoc.bitCleared = 0
				)
			AND tblOrderDoc.intDocType = 3
			AND (
				CONVERT(DATE, tblOrderDoc.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				LEN(@CustName) = 0
				OR tblOrderDoc.strCustName = @CustName
				)
			AND (
				@IsBookmark = 0
				OR bitBookmark = 1
				)
			AND (
				@IsCriteriaWorkflow = 0
				OR bitInvWorkflowDA = 1
				)
			AND (
				LEN(@PickedCustName) = 0
				OR tblCustomers.strCustName = @PickedCustName
				)
			AND (
				tblOrderDoc.strCustName LIKE @Search
				OR tblCustomers.strCustDesc LIKE @Search
				OR tblOrderDoc.dteJournalDate LIKE @Search
				OR tblOrderDoc.strOrdDocID LIKE @Search
				OR tblOrderDoc.strReference LIKE @Search
				OR CASE 
					WHEN tblOrderDoc.bitIsForeign = 1
						THEN tblOrderDoc.decTotalF
					ELSE tblOrderDoc.decTotal
					END LIKE @Search
				OR tblOrderDoc.strCurrency LIKE @Search
				)
			AND (
				@IsBPToolsMode = 1
				OR strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
	END
	ELSE IF (@InvoiceType = 13) -- DeliveryAdvice
	BEGIN
		INSERT INTO @Temp (
			CustomerName
			,CustomerDesc
			,JournalDate
			,DocumentNumber
			,Reference
			,Total
			,IsForeign
			,TotalF
			,Currency
			,SalesName
			,Term
			,Department
			,DiscPerc
			,DelMethodCode
			,DeliveryCost
			,DeliveryCostF
			,IsExcluded
			,Location
			,IsApproved
			,Amount
			)
		SELECT tblOrderDocDA.strCustName
			,tblCustomers.strCustDesc
			,tblOrderDocDA.dteJournalDate
			,tblOrderDocDA.strOrdDADocID
			,tblOrderDocDA.strReference
			,tblOrderDocDA.decTotal
			,tblOrderDocDA.bitIsForeign
			,tblOrderDocDA.decTotalF
			,tblOrderDocDA.strCurrency
			,tblOrderDocDA.strSalesName
			,tblOrderDocDA.strTerm
			,ISNULL((
					SELECT CAST(intDept AS NVARCHAR(4)) + ' ' + strDesc
					FROM tblDepartments
					WHERE (intDept = tblOrderDocDA.intDept)
					), '') AS Department
			,tblOrderDocDA.decDiscPerc
			,ISNULL(tblOrderDocDA.strDelMethodCode, '')
			,tblOrderDocDA.decDeliveryCost
			,tblOrderDocDA.decDeliveryCostF
			,0
			,''
			,0
			,(
				CASE tblOrderDocDA.bitIsForeign
					WHEN 1
						THEN tblOrderDocDA.decTotalF
					ELSE tblOrderDocDA.decTotal
					END
				) AS Amount
		FROM tblOrderDocDA
		INNER JOIN tblCustomers ON tblOrderDocDA.strCustName = tblCustomers.strCustName
		WHERE (
				@SelectedQuote = 1
				OR tblOrderDocDA.bitCleared = 0
				)
			AND (
				CONVERT(DATE, tblOrderDocDA.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				LEN(@CustName) = 0
				OR tblOrderDocDA.strCustName = @CustName
				)
			AND (
				LEN(@PickedCustName) = 0
				OR tblCustomers.strCustName = @PickedCustName
				)
			AND ((@Search IS NULL) OR (
				tblOrderDocDA.strCustName LIKE @Search
				OR tblCustomers.strCustDesc LIKE @Search
				OR tblOrderDocDA.dteJournalDate LIKE @Search
				OR tblOrderDocDA.strOrdDADocID LIKE @Search
				OR tblOrderDocDA.strReference LIKE @Search
				OR CASE 
					WHEN tblOrderDocDA.bitIsForeign = 1
						THEN tblOrderDocDA.decTotalF
					ELSE tblOrderDocDA.decTotal
					END LIKE @Search
				OR tblOrderDocDA.strCurrency LIKE @Search
				OR tblOrderDocDA.strSalesName LIKE @Search
				OR tblOrderDocDA.strTerm LIKE @Search
				OR ISNULL((
						SELECT CAST(intDept AS NVARCHAR(4)) + ' ' + strDesc
						FROM tblDepartments
						WHERE (intDept = tblOrderDocDA.intDept)
						), '') LIKE @Search
				OR tblOrderDocDA.decDiscPerc LIKE @Search
				OR ISNULL(tblOrderDocDA.strDelMethodCode, '') LIKE @Search
				OR tblOrderDocDA.decDeliveryCost LIKE @Search
				OR tblOrderDocDA.decDeliveryCostF LIKE @Search
				))
			AND (
				@IsBPToolsMode = 1
				OR strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
	END
	ELSE IF (@InvoiceType = 3) -- Invoices
	BEGIN
		INSERT INTO @Temp (
			CustomerName
			,CustomerDesc
			,JournalDate
			,DocumentNumber
			,Reference
			,Total
			,IsForeign
			,TotalF
			,Currency
			,IsExcluded
			,Location
			,Department
			,Term
			,SalesName
			,DiscPerc
			,DelMethodCode
			,DeliveryCost
			,DeliveryCostF
			,IsApproved
			,Amount
			)
		SELECT tblInvoiceDoc.strCustName
			,tblCustomers.strCustDesc
			,tblInvoiceDoc.dteJournalDate
			,tblInvoiceDoc.strInvDocID
			,tblInvoiceDoc.strReference
			,tblInvoiceDoc.decTotal
			,tblInvoiceDoc.bitIsForeign
			,tblInvoiceDoc.decTotalF
			,tblInvoiceDoc.strCurrency
			,0
			,''
			,''
			,''
			,'None'
			,0
			,''
			,0
			,0
			,0
			,(
				CASE tblInvoiceDoc.bitIsForeign
					WHEN 1
						THEN tblInvoiceDoc.decTotalF
					ELSE tblInvoiceDoc.decTotal
					END
				) AS Amount
		FROM tblInvoiceDoc
		INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
		WHERE (
				(
					@IsCreditNote = 0
					AND @IsARCreateReturnIcon = 0
					)
				OR tblInvoiceDoc.strInvDocID NOT LIKE 'CN%'
				)
			AND tblInvoiceDoc.bitHistoryTrans = 0
			AND (
				CONVERT(DATE, tblInvoiceDoc.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				LEN(@CustName) = 0
				OR tblInvoiceDoc.strCustName = @CustName
				)
			AND (
				@IsBookmark = 0
				OR bitBookmark = 1
				)
			AND (
				LEN(@PickedCustName) = 0
				OR tblCustomers.strCustName = @PickedCustName
				)
			--AND tblInvoiceDoc.strInvDocID NOT IN (SELECT strInvDocID FROM tblWSInvoiceDoc )		
			--AND ( tblInvoiceDoc.strInvDocID NOT IN (select  strInvDocID from  tblWSInvoiceDoc) AND @isWorkShop=0) 
			--OR (( tblInvoiceDoc.strInvDocID in (select  strInvDocID from  tblWSInvoiceDoc)) AND @isWorkShop=1)
			AND tblInvoiceDoc.bitIsFromWorkshop = ISNULL(@isWorkShop, 0)
			AND (
				tblInvoiceDoc.strCustName LIKE @Search
				OR tblCustomers.strCustDesc LIKE @Search
				OR tblInvoiceDoc.dteJournalDate LIKE @Search
				OR tblInvoiceDoc.strInvDocID LIKE @Search
				OR tblInvoiceDoc.strReference LIKE @Search
				OR CASE 
					WHEN tblInvoiceDoc.bitIsForeign = 1
						THEN tblInvoiceDoc.decTotalF
					ELSE tblInvoiceDoc.decTotal
					END LIKE @Search
				OR tblInvoiceDoc.strCurrency LIKE @Search
				)
			AND (
				@IsBPToolsMode = 1
				OR strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
	END
	ELSE IF (@InvoiceType = 14) -- ContractBillInvoice
	BEGIN
		INSERT INTO @Temp (
			CustomerName
			,CustomerDesc
			,JournalDate
			,DocumentNumber
			,Reference
			,Total
			,IsForeign
			,TotalF
			,Currency
			,IsExcluded
			,Location
			,Department
			,Term
			,SalesName
			,DiscPerc
			,DelMethodCode
			,DeliveryCost
			,DeliveryCostF
			,IsApproved
			,Amount
			)
		SELECT tblContractBill.strCustName
			,tblCustomers.strCustDesc
			,tblContractBill.dteJournalDate
			,tblContractBill.strContDocID
			,tblContractBill.strReference
			,tblContractBill.decTotal
			,tblContractBill.bitIsForeign
			,tblContractBill.decTotal
			,tblContractBill.strCurrency
			,0
			,''
			,''
			,''
			,'None'
			,0
			,''
			,0
			,0
			,0
			,(
				CASE tblContractBill.bitIsForeign
					WHEN 1
						THEN tblContractBill.decTotalF
					ELSE tblContractBill.decTotal
					END
				) AS Amount
		FROM tblContractBill
		INNER JOIN tblCustomers ON tblContractBill.strCustName = tblCustomers.strCustName
		WHERE (
				@IsARCreateReturnIcon = 0
				OR tblContractBill.strContDocID NOT LIKE 'CN%'
				)
			AND (
				CONVERT(DATE, tblContractBill.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				LEN(@CustName) = 0
				OR tblContractBill.strCustName = @CustName
				)
			AND (
				LEN(@PickedCustName) = 0
				OR tblCustomers.strCustName = @PickedCustName
				)
			AND (
				tblContractBill.strCustName LIKE @Search
				OR tblCustomers.strCustDesc LIKE @Search
				OR tblContractBill.dteJournalDate LIKE @Search
				OR tblContractBill.strContDocID LIKE @Search
				OR tblContractBill.strReference LIKE @Search
				OR CASE 
					WHEN tblContractBill.bitIsForeign = 1
						THEN tblContractBill.decTotalF
					ELSE tblContractBill.decTotal
					END LIKE @Search
				OR tblContractBill.strCurrency LIKE @Search
				)
			AND (
				@IsBPToolsMode = 1
				OR strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
	END
	ELSE IF (@InvoiceType = 11) -- CreditNotes
	BEGIN
		INSERT INTO @Temp (
			CustomerName
			,CustomerDesc
			,JournalDate
			,DocumentNumber
			,Reference
			,Total
			,IsForeign
			,TotalF
			,Currency
			,IsExcluded
			,Location
			,Department
			,Term
			,SalesName
			,DiscPerc
			,DelMethodCode
			,DeliveryCost
			,DeliveryCostF
			,IsApproved
			,Amount
			)
		SELECT tblInvoiceDoc.strCustName
			,tblCustomers.strCustDesc
			,tblInvoiceDoc.dteJournalDate
			,tblInvoiceDoc.strInvDocID
			,tblInvoiceDoc.strReference
			,tblInvoiceDoc.decTotal
			,tblInvoiceDoc.bitIsForeign
			,tblInvoiceDoc.decTotalF
			,tblInvoiceDoc.strCurrency
			,0
			,''
			,''
			,''
			,'None'
			,0
			,''
			,0
			,0
			,0
			,(
				CASE tblInvoiceDoc.bitIsForeign
					WHEN 1
						THEN tblInvoiceDoc.decTotalF
					ELSE tblInvoiceDoc.decTotal
					END
				) AS Amount
		FROM tblInvoiceDoc
		INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
		WHERE tblInvoiceDoc.strInvDocID LIKE 'CN%'
			AND tblInvoiceDoc.bitHistoryTrans = 0
			AND (
				CONVERT(DATE, tblInvoiceDoc.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				LEN(@CustName) = 0
				OR tblInvoiceDoc.strCustName = @CustName
				)
			AND (
				@IsBookmark = 0
				OR bitBookmark = 1
				)
			AND (
				LEN(@PickedCustName) = 0
				OR tblCustomers.strCustName = @PickedCustName
				)
			AND (
				tblInvoiceDoc.strCustName LIKE @Search
				OR tblCustomers.strCustDesc LIKE @Search
				OR tblInvoiceDoc.dteJournalDate LIKE @Search
				OR tblInvoiceDoc.strInvDocID LIKE @Search
				OR tblInvoiceDoc.strReference LIKE @Search
				OR CASE 
					WHEN tblInvoiceDoc.bitIsForeign = 1
						THEN tblInvoiceDoc.decTotalF
					ELSE tblInvoiceDoc.decTotal
					END LIKE @Search
				OR tblInvoiceDoc.strCurrency LIKE @Search
				)
			--AND ( tblInvoiceDoc.strInvDocID NOT IN (select  strInvDocID from  tblWSInvoiceDoc) AND @isWorkShop=0) 
			--OR ((tblInvoiceDoc.strInvDocID  LIKE 'CN%' OR tblInvoiceDoc.strInvDocID in (select  strInvDocID from  tblWSInvoiceDoc)) AND @isWorkShop=1)
			AND tblInvoiceDoc.bitIsFromWorkshop = ISNULL(@isWorkShop, 0)
			AND (
				@IsBPToolsMode = 1
				OR strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
	END
	ELSE IF (@InvoiceType = 4) -- QuotesAndSalesOrders
	BEGIN
		INSERT INTO @Temp (
			CustomerName
			,CustomerDesc
			,JournalDate
			,DocumentNumber
			,Reference
			,Total
			,IsForeign
			,TotalF
			,Currency
			,SalesName
			,Term
			,Department
			,DiscPerc
			,DelMethodCode
			,DeliveryCost
			,DeliveryCostF
			,IsExcluded
			,Location
			,IsApproved
			,Amount
			)
		SELECT tblOrderDoc.strCustName
			,tblCustomers.strCustDesc
			,tblOrderDoc.dteJournalDate
			,tblOrderDoc.strOrdDocID
			,tblOrderDoc.strReference
			,tblOrderDoc.decTotal
			,tblOrderDoc.bitIsForeign
			,tblOrderDoc.decTotalF
			,tblOrderDoc.strCurrency
			,tblOrderDoc.strSalesName
			,tblOrderDoc.strTerm
			,ISNULL((
					SELECT CAST(intDept AS NVARCHAR(4)) + ' ' + strDesc
					FROM tblDepartments
					WHERE (intDept = tblOrderDoc.intDept)
					), '') AS Department
			,tblOrderDoc.decDiscPerc
			,ISNULL(tblOrderDoc.strDelMethodCode, '')
			,tblOrderDoc.decDeliveryCost
			,tblOrderDoc.decDeliveryCostF
			,0
			,''
			,0
			,(
				CASE tblOrderDoc.bitIsForeign
					WHEN 1
						THEN tblOrderDoc.decTotalF
					ELSE tblOrderDoc.decTotal
					END
				) AS Amount
		FROM tblOrderDoc
		INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
		WHERE (
				@IsARCreateReturnIcon = 0
				OR tblOrderDoc.strOrdDocID NOT LIKE 'CR%'
				)
			AND tblOrderDoc.bitCleared = 0
			AND (
				CONVERT(DATE, tblOrderDoc.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (tblCustomers.bitInvWorkflowSO = 1)
			AND (
				LEN(@CustName) = 0
				OR tblOrderDoc.strCustName = @CustName
				)
			AND (
				@IsBookmark = 0
				OR bitBookmark = 1
				)
			AND (
				LEN(@PickedCustName) = 0
				OR tblCustomers.strCustName = @PickedCustName
				)
			AND (
				tblOrderDoc.strCustName LIKE @Search
				OR tblCustomers.strCustDesc LIKE @Search
				OR tblOrderDoc.dteJournalDate LIKE @Search
				OR tblOrderDoc.strOrdDocID LIKE @Search
				OR tblOrderDoc.strReference LIKE @Search
				OR tblOrderDoc.decTotal LIKE @Search
				OR tblOrderDoc.bitIsForeign LIKE @Search
				OR tblOrderDoc.decTotalF LIKE @Search
				OR tblOrderDoc.strCurrency LIKE @Search
				OR tblOrderDoc.strSalesName LIKE @Search
				OR tblOrderDoc.strTerm LIKE @Search
				OR ISNULL((
						SELECT CAST(intDept AS NVARCHAR(4)) + ' ' + strDesc
						FROM tblDepartments
						WHERE (intDept = tblOrderDoc.intDept)
						), '') LIKE @Search
				OR tblOrderDoc.decDiscPerc LIKE @Search
				OR ISNULL(tblOrderDoc.strDelMethodCode, '') LIKE @Search
				OR tblOrderDoc.decDeliveryCost LIKE @Search
				OR tblOrderDoc.decDeliveryCostF LIKE @Search
				)
			AND (
				tblOrderDoc.strCustName LIKE @Search
				OR tblCustomers.strCustDesc LIKE @Search
				OR tblOrderDoc.dteJournalDate LIKE @Search
				OR tblOrderDoc.strOrdDocID LIKE @Search
				OR tblOrderDoc.strReference LIKE @Search
				OR CASE 
					WHEN tblOrderDoc.bitIsForeign = 1
						THEN tblOrderDoc.decTotalF
					ELSE tblOrderDoc.decTotal
					END LIKE @Search
				OR tblOrderDoc.strCurrency LIKE @Search
				OR tblOrderDoc.strSalesName LIKE @Search
				OR tblOrderDoc.strTerm LIKE @Search
				OR ISNULL((
						SELECT CAST(intDept AS NVARCHAR(4)) + ' ' + strDesc
						FROM tblDepartments
						WHERE (intDept = tblOrderDoc.intDept)
						), '') LIKE @Search
				OR tblOrderDoc.decDiscPerc LIKE @Search
				OR ISNULL(tblOrderDoc.strDelMethodCode, '') LIKE @Search
				OR CASE 
					WHEN tblOrderDoc.bitIsForeign = 1
						THEN tblOrderDoc.decDeliveryCostF
					ELSE tblOrderDoc.decDeliveryCost
					END LIKE @Search
				)
			AND (
				@IsBPToolsMode = 1
				OR strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
	END
	ELSE IF (@InvoiceType = 5) -- QuoteSystem
	BEGIN
		INSERT INTO @Temp (
			CustomerName
			,CustomerDesc
			,JournalDate
			,DocumentNumber
			,Reference
			,Total
			,IsForeign
			,TotalF
			,Currency
			,IsApproved
			,ApprovedBy
			,ApprovedDate
			,IsExcluded
			,Location
			,Department
			,Term
			,SalesName
			,DiscPerc
			,DelMethodCode
			,DeliveryCost
			,DeliveryCostF
			,Amount
			)
		SELECT
		CASE 
        WHEN tblOrderDocQ.strCustName IS NULL THEN tblOrderDocQ.strSoldTo
        ELSE tblOrderDocQ.strCustName
    END ,
			CASE 
        WHEN tblOrderDocQ.strCustName IS NULL THEN tblOrderDocQ.strShipTo
        ELSE tblCustomers.strCustDesc
    END 

			,tblOrderDocQ.dteJournalDate
			,tblOrderDocQ.strOrdDocID
			,tblOrderDocQ.strReference
			,tblOrderDocQ.decTotal
			,tblOrderDocQ.bitIsForeign
			,tblOrderDocQ.decTotalF
			,tblOrderDocQ.strCurrency
			,tblOrderDocQ.bitApproved
			,tblOrderDocQ.strApprovedBy
			,tblOrderDocQ.dteApprovedDate
			,0
			,''
			,''
			,''
			,'None'
			,0
			,''
			,0
			,0
			,(
				CASE tblOrderDocQ.bitIsForeign
					WHEN 1
						THEN tblOrderDocQ.decTotalF
					ELSE tblOrderDocQ.decTotal
					END
				) AS Amount
		FROM tblOrderDocQ
		LEFT JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName
		WHERE tblOrderDocQ.bitDeclined = 0
			AND (
				@SelectedQuote = 1
				OR tblOrderDocQ.bitCleared = 0
				)
			AND (
				CONVERT(DATE, tblOrderDocQ.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				LEN(@CustName) = 0
				OR tblOrderDocQ.strCustName = @CustName
				)
			AND (
				LEN(@PickedCustName) = 0
				OR tblCustomers.strCustName = @PickedCustName
				)
			AND (
				tblOrderDocQ.strSoldTo LIKE @Search
				OR tblOrderDocQ.strShipTo LIKE @Search
				OR tblOrderDocQ.dteJournalDate LIKE @Search
				OR tblOrderDocQ.strOrdDocID LIKE @Search
				OR tblOrderDocQ.strReference LIKE @Search
				OR CASE 
					WHEN tblOrderDocQ.bitIsForeign = 1
						THEN tblOrderDocQ.decTotalF
					ELSE tblOrderDocQ.decTotal
					END LIKE @Search
				OR tblOrderDocQ.strCurrency LIKE @Search
				OR tblOrderDocQ.bitApproved LIKE @Search
				OR tblOrderDocQ.strApprovedBy LIKE @Search
				OR tblOrderDocQ.dteApprovedDate LIKE @Search
				)
			AND (
				@IsBPToolsMode = 1
				OR tblOrderDocQ.strCustName IS NULL
				OR strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
	END
	ELSE IF (@InvoiceType = 6) -- PickTicketsNew
	BEGIN
		INSERT INTO @Temp (
			CustomerName
			,CustomerDesc
			,JournalDate
			,DocumentNumber
			,Reference
			,Location
			,Department
			,IsExcluded
			,Total
			,IsForeign
			,TotalF
			,Currency
			,Term
			,SalesName
			,DiscPerc
			,DelMethodCode
			,DeliveryCost
			,DeliveryCostF
			,IsApproved
			,Amount
			,OrdDocID
			)
		SELECT tblPickTickets.strCustName
			,tblCustomers.strCustDesc
			,tblPickTickets.dteJournalDate
			,tblPickTickets.strPkTkDocID
			,tblPickTickets.strReference
			,CASE 
				WHEN (
						SELECT COUNT(Z.strLocation)
						FROM (
							SELECT strLocation
							FROM tblPickTicketsDT
							WHERE (strPkTkDocID = tblPickTickets.strPkTkDocID)
							GROUP BY strLocation
							) Z
						) > 1
					THEN '<MULTIPLE>'
				ELSE ISNULL((
							SELECT strLocation
							FROM tblPickTicketsDT
							WHERE (strPkTkDocID = tblPickTickets.strPkTkDocID)
							GROUP BY strLocation
							), '')
				END AS Location
			,ISNULL((
					SELECT CAST(intDept AS NVARCHAR(4)) + ' ' + strDesc
					FROM tblDepartments
					WHERE (intDept = tblOrderDoc.intDept)
					), '') AS Department
			,CASE 
				WHEN CASE 
						WHEN @Location = '%%'
							THEN 1
						ELSE ISNULL((
									SELECT COUNT(strLocation)
									FROM tblPickTicketsDT
									WHERE (strPkTkDocID = tblPickTickets.strPkTkDocID)
										AND (strLocation = @Location)
									GROUP BY strLocation
									), 0)
						END = 0
					THEN 1
				ELSE 0
				END
			,0
			,0
			,0
			,''
			,''
			,'None'
			,0
			,''
			,0
			,0
			,0
			,0 AS Amount
			,tblPickTickets.strOrdDocID
		FROM tblPickTickets
		INNER JOIN tblOrderDoc ON tblPickTickets.strOrdDocID = tblOrderDoc.strOrdDocID
		INNER JOIN tblCustomers ON tblPickTickets.strCustName = tblCustomers.strCustName
		WHERE tblPickTickets.bitCleared = 0
			AND tblPickTickets.bitPicked = 0
			AND (
				LEN(@CustName) = 0
				OR tblOrderDoc.strCustName = @CustName
				)
			AND (
				@Department = 0
				OR tblOrderDoc.intDept = @Department
				)
			AND (
				LEN(@PickedCustName) = 0
				OR tblCustomers.strCustName = @PickedCustName
				)
			AND (
				tblPickTickets.dteJournalDate BETWEEN @StartDate
					AND @EndDate
				)
			AND (
				tblPickTickets.strCustName LIKE @Search
				OR tblCustomers.strCustDesc LIKE @Search
				OR tblPickTickets.dteJournalDate LIKE @Search
				OR tblPickTickets.strPkTkDocID LIKE @Search
				OR tblPickTickets.strReference LIKE @Search
				OR CASE 
					WHEN (
							SELECT COUNT(Z.strLocation)
							FROM (
								SELECT strLocation
								FROM tblPickTicketsDT
								WHERE (strPkTkDocID = tblPickTickets.strPkTkDocID)
								GROUP BY strLocation
								) Z
							) > 1
						THEN '<MULTIPLE>'
					ELSE ISNULL((
								SELECT strLocation
								FROM tblPickTicketsDT
								WHERE (strPkTkDocID = tblPickTickets.strPkTkDocID)
								GROUP BY strLocation
								), '')
					END LIKE @Search
				OR ISNULL((
						SELECT CAST(intDept AS NVARCHAR(4)) + ' ' + strDesc
						FROM tblDepartments
						WHERE (intDept = tblOrderDoc.intDept)
						), '') LIKE @Search
				)
			AND (
				@IsBPToolsMode = 1
				OR strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
	END
	ELSE IF (@InvoiceType = 7) -- PickTicketsPicked
	BEGIN
		INSERT INTO @Temp (
			CustomerName
			,CustomerDesc
			,JournalDate
			,DocumentNumber
			,Reference
			,Location
			,Department
			,IsExcluded
			,Total
			,IsForeign
			,TotalF
			,Currency
			,Term
			,SalesName
			,DiscPerc
			,DelMethodCode
			,DeliveryCost
			,DeliveryCostF
			,IsApproved
			,Amount
			)
		SELECT tblPickTickets.strCustName
			,tblCustomers.strCustDesc
			,tblPickTickets.dteJournalDate
			,tblPickTickets.strPkTkDocID
			,tblPickTickets.strReference
			,CASE 
				WHEN (
						SELECT COUNT(Z.strLocation)
						FROM (
							SELECT strLocation
							FROM tblPickTicketsDT
							WHERE (strPkTkDocID = tblPickTickets.strPkTkDocID)
							GROUP BY strLocation
							) Z
						) > 1
					THEN '<MULTIPLE>'
				ELSE ISNULL((
							SELECT strLocation
							FROM tblPickTicketsDT
							WHERE (strPkTkDocID = tblPickTickets.strPkTkDocID)
							GROUP BY strLocation
							), '')
				END AS Location
			,''
			,CASE 
				WHEN CASE 
						WHEN @Location = '%%'
							THEN 1
						ELSE ISNULL((
									SELECT COUNT(strLocation)
									FROM tblPickTicketsDT
									WHERE (strPkTkDocID = tblPickTickets.strPkTkDocID)
										AND (strLocation = @Location)
									GROUP BY strLocation
									), 0)
						END = 0
					THEN 1
				ELSE 0
				END
			,0
			,0
			,0
			,''
			,''
			,'None'
			,0
			,''
			,0
			,0
			,0
			,0 AS Amount
		FROM tblPickTickets
		INNER JOIN tblCustomers ON tblPickTickets.strCustName = tblCustomers.strCustName
		WHERE tblPickTickets.bitCleared = 0
			AND tblPickTickets.bitPicked = 1
			AND (
				LEN(@PickedCustName) = 0
				OR tblCustomers.strCustName = @PickedCustName
				)
			AND (
				tblPickTickets.dteJournalDate BETWEEN @StartDate
					AND @EndDate
				)
			AND (
				tblPickTickets.strCustName LIKE @Search
				OR tblCustomers.strCustDesc LIKE @Search
				OR tblPickTickets.dteJournalDate LIKE @Search
				OR tblPickTickets.strPkTkDocID LIKE @Search
				OR tblPickTickets.strReference LIKE @Search
				)
			AND (
				@IsBPToolsMode = 1
				OR strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
	END
	ELSE IF (@InvoiceType = 8) -- Shipments
	BEGIN
		INSERT INTO @Temp (
			CustomerName
			,CustomerDesc
			,JournalDate
			,DocumentNumber
			,Reference
			,Total
			,IsForeign
			,TotalF
			,Currency
			,IsExcluded
			,Location
			,Department
			,Term
			,SalesName
			,DiscPerc
			,DelMethodCode
			,DeliveryCost
			,DeliveryCostF
			,IsApproved
			,Amount
			)
		SELECT tblShipments.strCustName
			,tblCustomers.strCustDesc
			,tblShipments.dteJournalDate
			,tblShipments.strShpDocID
			,tblShipments.strReference
			,0
			,0
			,0
			,''
			,0
			,''
			,''
			,''
			,'None'
			,0
			,''
			,0
			,0
			,0
			,0
		FROM tblShipments
		LEFT JOIN tblCustomers ON tblShipments.strCustName = tblCustomers.strCustName
		WHERE tblShipments.bitHistoryTrans = 0
			AND (
				CONVERT(DATE, tblShipments.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				LEN(@PickedCustName) = 0
				OR tblCustomers.strCustName = @PickedCustName
				)
			AND (
				tblShipments.strCustName LIKE @Search
				OR tblCustomers.strCustDesc LIKE @Search
				OR tblShipments.dteJournalDate LIKE @Search
				OR tblShipments.strShpDocID LIKE @Search
				OR tblShipments.strReference LIKE @Search
				)
			AND (
				@IsBPToolsMode = 1
				OR strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
	END
	ELSE IF (@InvoiceType = 9) -- Containers
	BEGIN
		IF (LEN(@DeliveryRouteID) > 0)
		BEGIN
			INSERT INTO @Temp (
				CustomerName
				,CustomerDesc
				,JournalDate
				,DocumentNumber
				,Reference
				,Total
				,IsForeign
				,TotalF
				,Currency
				,IsExcluded
				,Location
				,Department
				,Term
				,SalesName
				,DiscPerc
				,DelMethodCode
				,DeliveryCost
				,DeliveryCostF
				,IsApproved
				,Amount
				)
			SELECT CASE 
					WHEN tblContainers.bitCustMultiple = 1
						THEN '<MULTIPLE>'
					ELSE tblContainers.strCustName
					END
				,ISNULL(tblCustomers.strCustDesc, '')
				,tblContainers.dteJournalDate
				,tblContainers.strCntDocID
				,tblContainers.strReference
				,0
				,0
				,0
				,''
				,0
				,''
				,''
				,''
				,'None'
				,0
				,''
				,0
				,0
				,0
				,0 AS Amount
			FROM tblContainers
			LEFT OUTER JOIN tblCustomers ON tblContainers.strCustName = tblCustomers.strCustName
			WHERE tblContainers.bitHistoryTrans = 0
				AND (
					CONVERT(DATE, tblContainers.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
						AND CONVERT(DATE, @EndDate)
					)
				AND (
					strCntDocID IN (
						SELECT DISTINCT tblContainersDT.strCntDocID
						FROM tblContainersDT
						INNER JOIN tblShipments ON tblContainersDT.strShpDocID = tblShipments.strShpDocID
						WHERE (tblShipments.strDelRouteCode = @DeliveryRouteID)
						)
					)
				AND (
					LEN(@PickedCustName) = 0
					OR tblCustomers.strCustName = @PickedCustName
					)
				AND (
					CASE 
						WHEN tblContainers.bitCustMultiple = 1
							THEN '<MULTIPLE>'
						ELSE tblContainers.strCustName
						END LIKE @Search
					OR ISNULL(tblCustomers.strCustDesc, '') LIKE @Search
					OR tblContainers.dteJournalDate LIKE @Search
					OR tblContainers.strCntDocID LIKE @Search
					OR tblContainers.strReference LIKE @Search
					)
				AND (
					@IsBPToolsMode = 1
					OR strCustCategory IN (
						SELECT tblCustomerCat.strCustCategory
						FROM tblCustomerCat
						LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
						WHERE ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) > 0
								AND tblCustomerCatSec.strUserName = @UserName
								)
						)
					)
		END
		ELSE
		BEGIN
			INSERT INTO @Temp (
				CustomerName
				,CustomerDesc
				,JournalDate
				,DocumentNumber
				,Reference
				,Total
				,IsForeign
				,TotalF
				,Currency
				,IsExcluded
				,Location
				,Department
				,Term
				,SalesName
				,DiscPerc
				,DelMethodCode
				,DeliveryCost
				,DeliveryCostF
				,IsApproved
				,Amount
				)
			SELECT tblContainers.strCustName
				,tblCustomers.strCustDesc
				,tblContainers.dteJournalDate
				,tblContainers.strCntDocID
				,tblContainers.strReference
				,0
				,0
				,0
				,''
				,0
				,''
				,''
				,''
				,'None'
				,0
				,''
				,0
				,0
				,0
				,0 AS Amount
			FROM tblContainers
			INNER JOIN tblCustomers ON tblContainers.strCustName = tblCustomers.strCustName
			WHERE tblContainers.bitHistoryTrans = 0
				AND (
					CONVERT(DATE, tblContainers.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
						AND CONVERT(DATE, @EndDate)
					)
				AND (
					LEN(@PickedCustName) = 0
					OR tblCustomers.strCustName = @PickedCustName
					)
				AND (
					tblContainers.strCustName LIKE @Search
					OR tblCustomers.strCustDesc LIKE @Search
					OR tblContainers.dteJournalDate LIKE @Search
					OR tblContainers.strCntDocID LIKE @Search
					OR tblContainers.strReference LIKE @Search
					)
				AND (
					@IsBPToolsMode = 1
					OR strCustCategory IN (
						SELECT tblCustomerCat.strCustCategory
						FROM tblCustomerCat
						LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
						WHERE ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) > 0
								AND tblCustomerCatSec.strUserName = @UserName
								)
						)
					)
		END
	END
	ELSE IF (@InvoiceType = 15) -- ApplyToCreditNote
	BEGIN
		INSERT INTO @Temp (
			CustomerName
			,CustomerDesc
			,JournalDate
			,DocumentNumber
			,Reference
			,Total
			,IsForeign
			,TotalF
			,Currency
			,IsExcluded
			,Location
			,Department
			,Term
			,SalesName
			,DiscPerc
			,DelMethodCode
			,DeliveryCost
			,DeliveryCostF
			,IsApproved
			,Amount
			)
		SELECT tblInvoiceDoc.strCustName
			,tblCustomers.strCustDesc
			,tblInvoiceDoc.dteJournalDate
			,tblInvoiceDoc.strInvDocID
			,tblInvoiceDoc.strReference
			,tblInvoiceDoc.decTotal
			,tblInvoiceDoc.bitIsForeign
			,tblInvoiceDoc.decTotalF
			,tblInvoiceDoc.strCurrency
			,0
			,''
			,''
			,''
			,'None'
			,0
			,''
			,0
			,0
			,0
			,tblInvoiceDoc.decTotal AS Amount
		FROM tblInvoiceDoc
		INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
		WHERE tblInvoiceDoc.strInvDocID LIKE 'CN-%'
			AND tblInvoiceDoc.strOrdDocID IS NULL
			AND tblInvoiceDoc.bitFromSO = 0
			AND (
				LEN(@PickedCustName) = 0
				OR tblCustomers.strCustName = @PickedCustName
				)
			AND (
				tblInvoiceDoc.dteJournalDate BETWEEN @StartDate
					AND @EndDate
				)
			AND (
				tblInvoiceDoc.strCustName LIKE @Search
				OR tblCustomers.strCustDesc LIKE @Search
				OR tblInvoiceDoc.dteJournalDate LIKE @Search
				OR tblInvoiceDoc.strInvDocID LIKE @Search
				OR tblInvoiceDoc.strReference LIKE @Search
				OR CASE 
					WHEN tblInvoiceDoc.bitIsForeign = 1
						THEN tblInvoiceDoc.decTotalF
					ELSE tblInvoiceDoc.decTotal
					END LIKE @Search
				OR tblInvoiceDoc.strCurrency LIKE @Search
				)
			AND (
				@IsBPToolsMode = 1
				OR strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
	END
	ELSE IF (@InvoiceType = 17) -- InternalIssues
	BEGIN
		INSERT INTO @Temp (
			CustomerName
			,CustomerDesc
			,JournalDate
			,DocumentNumber
			,Reference
			,Location
			,Department
			,IsExcluded
			,Total
			,IsForeign
			,TotalF
			,Currency
			,Term
			,SalesName
			,DiscPerc
			,DelMethodCode
			,DeliveryCost
			,DeliveryCostF
			,IsApproved
			,Amount
			,Employee
			,Comment
			)
		SELECT tblEmployees.strCustNumber
			,tblCustomers.strCustDesc
			,tblInvIssReqDoc.dteJournalDate
			,tblInvIssReqDoc.strInvIssReqDocID
			,''
			,''
			,tblInvIssReqDoc.intDept
			,0
			,tblInvIssReqDoc.decTotal
			,0
			,0
			,'ZAR'
			,''
			,'None'
			,0
			,''
			,0
			,0
			,0
			,tblInvIssReqDoc.decTotal
			,tblEmployees.strEmpNumber
			,tblInvIssReqDoc.strComment
		FROM tblInvIssReqDoc
		INNER JOIN tblEmployees ON tblInvIssReqDoc.strEmpNumber = tblEmployees.strEmpNumber
		INNER JOIN tblCustomers ON tblEmployees.strCustNumber = tblCustomers.strCustName
		WHERE tblInvIssReqDoc.bitCleared = 0
			AND (
				tblInvIssReqDoc.dteJournalDate BETWEEN @StartDate
					AND @EndDate
				)
			AND (
				tblEmployees.strCustNumber LIKE @Search
				OR tblCustomers.strCustDesc LIKE @Search
				OR tblInvIssReqDoc.dteJournalDate LIKE @Search
				OR tblInvIssReqDoc.strInvIssReqDocID LIKE @Search
				OR tblInvIssReqDoc.decTotal LIKE @Search
				AND (
					LEN(@CustName) = 0
					OR tblEmployees.strCustNumber = @CustName
					)
				)
			AND (
				@IsBPToolsMode = 1
				OR strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
	END

	SELECT *
	FROM @Temp
	WHERE LocationCount IS NULL
		OR LocationCount <> 0
	ORDER BY CASE 
			WHEN (@SortType = 0)
				THEN CustomerName
			END ASC
		,CASE 
			WHEN (@SortType = 1)
				THEN CustomerDesc
			END ASC
		,CASE 
			WHEN (@SortType = 2)
				THEN JournalDate
			END DESC
		,CASE 
			WHEN (@SortType = 3)
				THEN DocumentNumber
			END DESC
		,CASE 
			WHEN (@SortType = 4)
				THEN Reference
			END ASC
		,CASE 
			WHEN (
					@SortType = 5
					AND (
						@InvoiceType IN (
							6
							,7
							,8
							,9
							)
						)
					)
				THEN JournalDate
			END DESC
		,CASE 
			WHEN (@SortType = 5)
				THEN Total
			ELSE Total
			END DESC
END
GO
/****** Object:  StoredProcedure [dbo].[GetSalesGroupFunnelChartListCRM]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************END [GetActivitySalesGroupbyUser]***********************************/

/************************Start [GetSalesGroupFunnelChartListCRM]***********************************/

CREATE Procedure [dbo].[GetSalesGroupFunnelChartListCRM]
@ActivityGroupName nvarchar(400)=''
AS
Begin


Select cast(Count(tblCRMActivities.ActivityID) as decimal(18,2)) as [Value],
(tblCRMPreActivityList.ActivityName +'-'+ cast(tblCRMPreActivityList.SalesPipelinePercentage as nvarchar(50)) +'%' ) as [Argument]  
from tblCRMActivities inner join tblCRMActivityGroup on tblCRMActivities.ActivityGroupName=tblCRMActivityGroup.ActivityGroupName
inner join tblCRMPreActivityList on tblCRMActivityGroup.ActivityGroupName=tblCRMPreActivityList.ActivityGroupName and tblCRMActivities.ActivityName=tblCRMPreActivityList.ActivityName
inner join tblCRMActivityStatus on tblCRMActivities.ActivityStatus=tblCRMActivityStatus.StatusType 
where tblCRMActivityGroup.IsSalesGroup=1 
and tblCRMActivityGroup.ActivityGroupName=@ActivityGroupName 
and tblCRMActivityGroup.IsInactive=0
and tblCRMPreActivityList.IsInactive=0 
and tblCRMActivities.IsInactive=0 
and tblCRMActivityStatus.StatusGroup<>3
Group by tblCRMPreActivityList.ActivityName,tblCRMPreActivityList.SalesPipelinePercentage
order by Count(tblCRMActivities.ActivityID) desc

End
GO
/****** Object:  StoredProcedure [dbo].[GetSalesOrderAsLayByCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetSalesOrderAsLayByCount]
(
	@DocumentNumber NVARCHAR(50)
)
AS
BEGIN
	SELECT COUNT(*)
	FROM tblCustTrans
	INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
	LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
	WHERE (tblCustTrans.strOrdDocID IS NOT NULL)
		AND (tblCustTrans.strInvDocID IS NULL)
		AND tblCustTransDT.lngCustPayID IS NOT NULL
		AND strOrdDocID = @DocumentNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetSalesOrderReasonsData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetSalesOrderReasonsData]
AS
BEGIN
	SELECT 
		strSOReasonCode AS SOReasonCode, 
		strSOReasonDesc AS SOReasonDesc, 
		bitInactive AS IsInactive 
	FROM 
		tblSalesOrderReasons 
	WHERE 
		bitInactive = 0 
	ORDER BY 
		strSOReasonCode
END
GO
/****** Object:  StoredProcedure [dbo].[GetSalesOrdersEDIOrders]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


/*********** Start [GetSalesOrdersEDIOrders] ***********/
CREATE PROCEDURE [dbo].[GetSalesOrdersEDIOrders] 
@EDI VARCHAR(50)
AS
BEGIN
	SELECT DISTINCT tblSalesOrderEDIOrders.lngID AS ID,
                tblOrderDocDT.strOrdDocID AS Document,
                tblOrderDoc.dteJournalDate AS [Date],
                tblOrderDoc.dteRequired AS [Required],
                tblOrderDoc.strUserName AS [UserName],
                tblOrderDoc.strCustName AS CustName,
                tblCustomers.strCustDesc AS CustDesc,
                tblOrderDoc.strReference AS Reference,
                tblSalesOrderEDIOrders.strCustomerGLN AS [CustomerGLN],
                tblSalesOrderEDIOrders.strStoreGLN AS [StoreGLN],
                tblOrderDoc.decTotal AS [OrderTotal],
                CAST(CASE
                         WHEN (SUM(tblOrderDocDT.decQty) - SUM(tblOrderDocDT.decQtyRemaining) = 0
                               AND tblOrderDoc.bitCleared = 1) THEN 1
                         ELSE 0
                     END AS bit) AS [UTrans],
                tblOrderDoc.bitCleared AS Cleared,
                tblSalesOrderEDIOrders.blnUTrans AS [UTransSent]
	FROM tblOrderDoc
	INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
	INNER JOIN tblSalesOrderEDIOrders ON tblOrderDoc.strOrdDocID = tblSalesOrderEDIOrders.strOrdDocID
	INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
	GROUP BY tblOrderDocDT.strOrdDocID,
			 tblOrderDocDT.intType,
			 tblOrderDoc.bitCleared,
			 tblOrderDoc.dteJournalDate,
			 tblOrderDoc.dteRequired,
			 tblOrderDoc.decTotal,
			 tblOrderDoc.strCustName,
			 tblSalesOrderEDIOrders.strStoreGLN,
			 tblSalesOrderEDIOrders.strEDI,
			 tblSalesOrderEDIOrders.strCustomerGLN,
			 tblSalesOrderEDIOrders.lngID,
			 tblSalesOrderEDIOrders.blnUTrans,
			 tblOrderDoc.strUserName,
			 tblCustomers.strCustDesc,
			 tblOrderDoc.strReference
	HAVING (tblOrderDocDT.intType = 1)
	AND (tblSalesOrderEDIOrders.strEDI = @EDI)

END 

GO
/****** Object:  StoredProcedure [dbo].[GetSalesOrdersOrderUTrans]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetSalesOrdersOrderUTrans] ***********/
CREATE PROCEDURE [dbo].[GetSalesOrdersOrderUTrans] 
@EDI VARCHAR(50)
AS
BEGIN
	SELECT DISTINCT tblSalesOrderEDIOrders.lngID AS ID,
                tblOrderDocDT.strOrdDocID AS Document,
                tblOrderDoc.dteJournalDate AS Date,
                tblOrderDoc.dteRequired AS Required,
                tblOrderDoc.strUserName AS UserName,
                tblOrderDoc.strCustName AS CustName,
                tblCustomers.strCustDesc AS CustDesc,
                tblOrderDoc.strReference AS Reference,
                tblSalesOrderEDIOrders.strCustomerGLN AS CustomerGLN,
                tblSalesOrderEDIOrders.strStoreGLN AS StoreGLN,
                tblOrderDoc.decTotal AS OrderTotal,
                CAST(CASE
                         WHEN (SUM(tblOrderDocDT.decQty) - SUM(tblOrderDocDT.decQtyRemaining) = 0
                               AND tblOrderDoc.bitCleared = 1) THEN 1
                         ELSE 0
                     END AS bit) AS UTrans,
                tblOrderDoc.bitCleared AS Cleared,
                tblSalesOrderEDIOrders.blnUTrans AS UTransSent
	FROM tblOrderDoc
	INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
	INNER JOIN tblSalesOrderEDIOrders ON tblOrderDoc.strOrdDocID = tblSalesOrderEDIOrders.strOrdDocID
	INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
	GROUP BY tblOrderDocDT.strOrdDocID,
			 tblOrderDocDT.intType,
			 tblOrderDoc.bitCleared,
			 tblOrderDoc.dteJournalDate,
			 tblOrderDoc.dteRequired,
			 tblOrderDoc.decTotal,
			 tblOrderDoc.strCustName,
			 tblSalesOrderEDIOrders.strStoreGLN,
			 tblSalesOrderEDIOrders.strEDI,
			 tblSalesOrderEDIOrders.strCustomerGLN,
			 tblSalesOrderEDIOrders.lngID,
			 tblSalesOrderEDIOrders.blnUTrans,
			 tblOrderDoc.strUserName,
			 tblCustomers.strCustDesc,
			 tblOrderDoc.strReference
	HAVING (tblOrderDocDT.intType = 1)
	AND (tblSalesOrderEDIOrders.strEDI = @EDI)
	AND (tblSalesOrderEDIOrders.blnUTrans = 0)
	AND (CAST(CASE
				  WHEN (SUM(tblOrderDocDT.decQty) - SUM(tblOrderDocDT.decQtyRemaining) = 0
						AND tblOrderDoc.bitCleared = 1) THEN 1
				  ELSE 0
			  END AS bit) = 1)

END 
GO
/****** Object:  StoredProcedure [dbo].[GetSalesPersonCommissionData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [ExcludeJournalFromCommission] ***********/
CREATE  PROCEDURE [dbo].[GetSalesPersonCommissionData] @optSummary BIT = 1
	,@optDetailChecked BIT = 0
	,@blnSPLineLevel BIT = 0
	,@SQStart DATETIME
	,@SQEnd DATETIME
	,@strSalesName AS NVARCHAR(max) = ''
	,@ApplyOverAllDisc AS bIT = 0	
AS

BEGIN

	DECLARE @isPaidInvoiceOnly bit
	SET @isPaidInvoiceOnly = isnull((SELECT TOP 1 bitPaidInvoices FROM tblSalesPersons WHERE strSalesName = @strSalesName ), 0)
	
	IF @blnSPLineLevel = 1 -- LINE LEVEL REPORT
		BEGIN

			IF @isPaidInvoiceOnly = 1
				BEGIN
					SELECT Z.strSalesName AS SalesPersonName
					,Z.paiddate
					,isnull((
					SELECT TOP 1 bitSettled
					FROM tblcusttrans
					WHERE strInvDocID = Z.strInvDocID
					), 0) AS bitSettled
					,Z.strCustDesc AS CustDescription
					,Z.dteJournalDate AS JournalDate
					,Z.strInvDocID AS InvDocID
					,Z.strCustName AS Customer
					,SUM(Z.TotalSales) AS TotalSales
					,SUM(Z.Revenue) AS Revenue
					,SUM(Z.COGS) AS COGS
					,SUM(Z.Revenue - Z.COGS) AS GP
					,Z.Commissionable
					,isnull((
							SELECT TOP 1 bitGrossProfit
							FROM tblSalesPersons
							WHERE strSalesName = Z.strSalesName
							), 0) AS bitGrossProfit
					,isnull((
					SELECT TOP 1 bitPaidInvoices
					FROM tblSalesPersons
					WHERE strSalesName = Z.strSalesName
					), 0) AS bitPaidInvoice
					,CONVERT(DECIMAL(19,2),0.0) AS commission
					,CONVERT(DECIMAL(19,2),0.0) AS margin
					,Z.decDiscPerc
					,Z.decDiscAmt 
				
				INTO #TMP
				FROM (
					SELECT DISTINCT ISNULL((
								SELECT DTL.strSalesName
								FROM tblInvoiceDoc HDR
								INNER JOIN tblInvoiceDocDT DTL ON HDR.strInvDocID = DTL.strInvDocID
								WHERE HDR.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
									AND DTL.intLineNo = tblInvTrackingDT.intLineNo
								), '<< No Sales Person >>') AS strSalesName
						,MAX(CP.dteJournalDate) AS paiddate
						,(
							SELECT strCustDesc
							FROM tblCustomers
							WHERE strCustName = tblInvoiceDoc.strCustName
							) AS strCustDesc
						,tblInvoiceDoc.dteJournalDate
						,tblInvoiceDoc.strInvDocID
						,tblInvoiceDoc.strCustName
						,ISNULL((
								SELECT DTL.decLineTotExc + DTL.decLineTaxAmt
								FROM tblInvoiceDoc HDR
								INNER JOIN tblInvoiceDocDT DTL ON HDR.strInvDocID = DTL.strInvDocID
								WHERE DTL.strInvDocID = tblInvoiceDoc.strInvDocID
									AND DTL.intLineNo = tblInvTrackingDT.intLineNo
								), 0) AS TotalSales
						,ISNULL((
								SELECT DTL.decLineTotExc
								FROM tblInvoiceDoc HDR
								INNER JOIN tblInvoiceDocDT DTL ON HDR.strInvDocID = DTL.strInvDocID
								WHERE DTL.strInvDocID = tblInvoiceDoc.strInvDocID
									AND DTL.intLineNo = tblInvTrackingDT.intLineNo
									AND DTL.bitDiscountTax = 0
								), 0) AS Revenue
						,tblInvTrackingDT.decCOGS AS COGS
						,ISNULL((
								SELECT (DTL.decLineTotExc) - ((DTL.decLineTotExc ) / (case when @ApplyOverAllDisc = 1 then (CASE WHEN tblInvoiceDoc.decDiscPerc = NULL OR tblInvoiceDoc.decDiscPerc = 0 THEN 1 ELSE tblInvoiceDoc.decDiscPerc END ) else 1 end))
								FROM tblInvoiceDoc HDR
								INNER JOIN tblInvoiceDocDT DTL ON HDR.strInvDocID = DTL.strInvDocID
								WHERE DTL.strInvDocID = tblInvoiceDoc.strInvDocID
									AND DTL.intLineNo = tblInvTrackingDT.intLineNo
									 AND DTL.bitDiscountTax = 0
								), 0) AS Commissionable
							,tblInvoiceDoc.decDiscPerc
					,tblInvoiceDoc.decDiscAmt 
					FROM tblInvoiceDoc
					INNER JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvoiceDoc.lngInvTrackID
					INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
					INNER JOIN tblCustTrans AS CT ON CT.strInvDocID = tblInvoiceDoc.strInvDocID
					INNER JOIN tblCustTransDT AS CTDT ON CTDT.lngCustTrID = CT.lngCustTrID
					INNER JOIN tblCustPay AS CP ON CP.lngCustPayID = CTDT.lngCustPayID
					WHERE 
						
						tblInvTracking.intModule = 2
						AND tblInvTrackingDT.strPartNumber in (select strpartnumber from tblInv where bitExclCommission = 0)
						AND tblInvoiceDoc.strCustName in (select strCustName from tblCustomers where bitExclCommission = 0)
						GROUP BY strSalesName
						,tblInvoiceDoc.dteJournalDate
						,tblInvoiceDoc.strInvDocID
						,tblInvoiceDoc.strCustName
						,decDiscPerc
						,decDiscAmt
						,tblInvTrackingDT.decCOGS
						,tblInvTrackingDT.lngInvTrackID
						,tblInvTrackingDT.intLineNo
						HAVING MAX(CP.dteJournalDate) BETWEEN @SQStart AND @SQEnd
				--ORDER BY strSalesName
				--	,dteJournalDate
				--	,strInvDocID
					) Z
				WHERE ISNULL(Z.strSalesName, '<< No Sales Person >>') IN (select Value from [dbo].[fnSplitStringAsTable](@strSalesName,','))
				GROUP BY Z.strSalesName
					,Z.paiddate
					,Z.strCustDesc
					,Z.strInvDocID
					,Z.dteJournalDate
					,Z.strCustName
					,Z.Commissionable
					,Z.Revenue
					,Z.COGS
					,Z.decDiscPerc
					,Z.decDiscAmt
				ORDER BY Z.strSalesName
					,Z.dteJournalDate
					,Z.strInvDocID

					SELECT SalesPersonName,paiddate,bitSettled,CustDescription,JournalDate,InvDocID,Customer
					,TotalSales,Revenue,COGS,GP,Commissionable
					,bitGrossProfit,bitPaidInvoice,commission,margin,decDiscPerc,decDiscAmt
					INTO #TMPGRP
					FROM
					(
					SELECT SalesPersonName,paiddate,bitSettled,CustDescription,JournalDate,InvDocID,Customer
					,SUM(TotalSales) AS TotalSales,SUM(Revenue) AS Revenue,SUM(COGS) AS COGS,SUM(GP) AS GP,SUM(Commissionable) AS Commissionable
					,bitGrossProfit,bitPaidInvoice,SUM(commission) as commission,AVG(margin) AS margin,AVG(decDiscPerc) AS decDiscPerc,SUM(decDiscAmt) As decDiscAmt
					FROM #TMP
					GROUP BY SalesPersonName,paiddate,bitSettled,CustDescription,JournalDate,InvDocID,Customer,bitGrossProfit,bitPaidInvoice
					) AS RESULT


					UPDATE #TMPGRP
				SET commission =  
						ROUND(
						
						case when bitPaidInvoice = 1 and bitSettled = 1 then 
													(
													(
													CASE 
														WHEN bitGrossProfit = 0
															THEN (CASE WHEN @ApplyOverAllDisc = 1 THEN  Revenue - (CASE WHEN ISNULL(decDiscAmt, 0) >= 0 THEN decDiscAmt ELSE ISNULL(decDiscAmt, 0) * -1 END) else revenue end)  
														ELSE GP
														END
													) * isnull((
														SELECT decdiscperc/100
														FROM tblsalespersonscommission AS SPC
														INNER JOIN tblSalesPersons AS SP ON SP.[uID] = SPC.uidSalesPersonID
														WHERE (
																CASE 
																	WHEN bitGrossProfit = 0
																		THEN Revenue
																	ELSE GP
																	END
																) >= decvaluefrom
															AND (
																CASE 
																	WHEN bitGrossProfit = 0
																		THEN Revenue
																	ELSE GP
																	END
																) <= decvalueto AND SP.strSalesName = @strSalesName
														), 0) 
													)	
							when bitPaidInvoice = 1   and bitSettled = 0 then 0 
							else 
										(
										(
										CASE 
										WHEN bitGrossProfit = 0
											THEN Revenue
										ELSE GP
										END
									) * isnull((
										SELECT decdiscperc/100
										FROM tblsalespersonscommission AS SPC
										INNER JOIN tblSalesPersons AS SP ON SP.[uID] = SPC.uidSalesPersonID
										WHERE (
												CASE 
													WHEN bitGrossProfit = 0
														THEN Revenue
													ELSE GP
													END
												) >= decvaluefrom
											AND (
												CASE 
													WHEN bitGrossProfit = 0
														THEN Revenue
													ELSE GP
													END
												) <= decvalueto AND SP.strSalesName = @strSalesName
										), 0) 
										)  
							
							end,2,1 ) 
				
					UPDATE #TMPGRP SET commission = CASE WHEN commission < 0 THEN commission * 0 ELSE commission END;
				
					UPDATE #TMPGRP SET margin = (1 - (COGS / CASE WHEN Revenue = 0 THEN 1 ELSE Revenue END)) * 100

					UPDATE #TMPGRP SET Commissionable = CASE WHEN bitGrossProfit = 0 THEN 
														(CASE WHEN @ApplyOverAllDisc = 1 THEN  Revenue - (CASE WHEN ISNULL(decDiscAmt, 0) >= 0 THEN decDiscAmt ELSE ISNULL(decDiscAmt, 0) * -1 END) ELSE revenue END)  
													 ELSE GP
													 END

					UPDATE #TMPGRP SET Commissionable = 0 WHERE Commissionable < 0

					IF @optSummary = 1 
						BEGIN
							SELECT SalesPersonName
								,SUM(TotalSales) AS TotalSales
								,SUM(Revenue) AS Revenue
								,SUM(COGS) AS COGS
								,SUM(GP) AS GP
								,SUM(Commissionable) AS Commissionable
								,SUM(commission) AS commission
								,SUM(Margin) AS margin
								FROM #TMPGRP 
								GROUP BY SalesPersonName
						END
					ELSE 
						BEGIN
							SELECT * FROM #TMPGRP --WHERE Commissionable > 0
						END

				END
			ELSE
				BEGIN
					SELECT Z.strSalesName AS SalesPersonName
					,isnull((
							SELECT TOP 1 dteJournaldate
							FROM tblcusttrans
							WHERE strInvDocID = Z.strInvDocID
							), '') AS paiddate
					,isnull((
					SELECT TOP 1 bitSettled
					FROM tblcusttrans
					WHERE strInvDocID = Z.strInvDocID
					), 0) AS bitSettled
					,Z.strCustDesc AS CustDescription
					,Z.dteJournalDate AS JournalDate
					,Z.strInvDocID AS InvDocID
					,Z.strCustName AS Customer
					,SUM(Z.TotalSales) AS TotalSales
					,SUM(Z.Revenue) AS Revenue
					,SUM(Z.COGS) AS COGS
					,SUM(Z.Revenue - Z.COGS) AS GP
					,Z.Commissionable
					,isnull((
							SELECT TOP 1 bitGrossProfit
							FROM tblSalesPersons
							WHERE strSalesName = Z.strSalesName
							), 0) AS bitGrossProfit
					,isnull((
					SELECT TOP 1 bitPaidInvoices
					FROM tblSalesPersons
					WHERE strSalesName = Z.strSalesName
					), 0) AS bitPaidInvoice
					,CONVERT(DECIMAL(19,2),0.0) AS commission
					,CONVERT(DECIMAL(19,2),0.0) AS margin
					,Z.decDiscPerc
					,Z.decDiscAmt 
				
				INTO #TMP1
				FROM (
					SELECT DISTINCT ISNULL((
								SELECT DTL.strSalesName
								FROM tblInvoiceDoc HDR
								INNER JOIN tblInvoiceDocDT DTL ON HDR.strInvDocID = DTL.strInvDocID
								WHERE HDR.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
									AND DTL.intLineNo = tblInvTrackingDT.intLineNo
								), '<< No Sales Person >>') AS strSalesName
						,(
							SELECT strCustDesc
							FROM tblCustomers
							WHERE strCustName = tblInvoiceDoc.strCustName
							) AS strCustDesc
						,tblInvoiceDoc.dteJournalDate
						,tblInvoiceDoc.strInvDocID
						,tblInvoiceDoc.strCustName
						,ISNULL((
								SELECT DTL.decLineTotExc + DTL.decLineTaxAmt
								FROM tblInvoiceDoc HDR
								INNER JOIN tblInvoiceDocDT DTL ON HDR.strInvDocID = DTL.strInvDocID
								WHERE DTL.strInvDocID = tblInvoiceDoc.strInvDocID
									AND DTL.intLineNo = tblInvTrackingDT.intLineNo
									AND HDR.dteJournalDate BETWEEN @SQStart
										AND @SQEnd
								), 0) AS TotalSales
						,ISNULL((
								SELECT DTL.decLineTotExc
								FROM tblInvoiceDoc HDR
								INNER JOIN tblInvoiceDocDT DTL ON HDR.strInvDocID = DTL.strInvDocID
								WHERE DTL.strInvDocID = tblInvoiceDoc.strInvDocID
									AND DTL.intLineNo = tblInvTrackingDT.intLineNo
									AND HDR.dteJournalDate BETWEEN @SQStart
										AND @SQEnd
									AND DTL.bitDiscountTax = 0
								), 0) AS Revenue
						,tblInvTrackingDT.decCOGS AS COGS
						,ISNULL((
								SELECT (DTL.decLineTotExc) - ((DTL.decLineTotExc ) / (case when @ApplyOverAllDisc = 1 then (CASE WHEN tblInvoiceDoc.decDiscPerc = NULL OR tblInvoiceDoc.decDiscPerc = 0 THEN 1 ELSE tblInvoiceDoc.decDiscPerc END ) else 1 end))
								FROM tblInvoiceDoc HDR
								INNER JOIN tblInvoiceDocDT DTL ON HDR.strInvDocID = DTL.strInvDocID
								WHERE DTL.strInvDocID = tblInvoiceDoc.strInvDocID
									AND DTL.intLineNo = tblInvTrackingDT.intLineNo
									AND (HDR.dteJournalDate BETWEEN @SQStart
										AND @SQEnd) AND DTL.bitDiscountTax = 0
								), 0) AS Commissionable
							,tblInvoiceDoc.decDiscPerc
					,tblInvoiceDoc.decDiscAmt 
					FROM tblInvoiceDoc
					INNER JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvoiceDoc.lngInvTrackID
					INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
					WHERE (
							tblInvoiceDoc.dteJournalDate BETWEEN @SQStart
								AND @SQEnd
							)
						AND (tblInvTracking.intModule = 2)
						AND tblInvTrackingDT.strPartNumber in (select strpartnumber from tblInv where bitExclCommission = 0)
						AND tblInvoiceDoc.strCustName in (select strCustName from tblCustomers where bitExclCommission = 0)
					) Z
				WHERE ISNULL(Z.strSalesName, '<< No Sales Person >>') IN (select Value from [dbo].[fnSplitStringAsTable](@strSalesName,','))
				GROUP BY Z.strSalesName
					,Z.strCustDesc
					,Z.strInvDocID
					,Z.dteJournalDate
					,Z.strCustName
					,Z.Commissionable
					,Z.Revenue
					,Z.COGS
					,Z.decDiscPerc
					,Z.decDiscAmt
				ORDER BY Z.strSalesName
					,Z.dteJournalDate
					,Z.strInvDocID
					
					UPDATE #TMP1 SET Commissionable = CASE WHEN bitGrossProfit = 0 THEN 
														(CASE WHEN @ApplyOverAllDisc = 1 THEN  Revenue - (Revenue * (decDiscPerc/100)) ELSE revenue END)  
													 ELSE GP
													 END


					SELECT SalesPersonName,paiddate,bitSettled,CustDescription,JournalDate,InvDocID,Customer
					,TotalSales,Revenue,COGS,GP,Commissionable
					,bitGrossProfit,bitPaidInvoice,commission,margin,decDiscPerc,decDiscAmt
					INTO #TMPGRP1
					FROM
					(
					SELECT SalesPersonName,paiddate,bitSettled,CustDescription,JournalDate,InvDocID,Customer
					,SUM(TotalSales) AS TotalSales,SUM(Revenue) AS Revenue,SUM(COGS) AS COGS,SUM(GP) AS GP,SUM(Commissionable) AS Commissionable
					,bitGrossProfit,bitPaidInvoice,SUM(commission) as commission,AVG(margin) AS margin,AVG(decDiscPerc) AS decDiscPerc,SUM(decDiscAmt) As decDiscAmt
					FROM #TMP1
					GROUP BY SalesPersonName,paiddate,bitSettled,CustDescription,JournalDate,InvDocID,Customer,bitGrossProfit,bitPaidInvoice
					) AS RESULT
					
					UPDATE #TMPGRP1
						SET commission =  
						ROUND(
						
						case when bitPaidInvoice = 1 and bitSettled = 1 then 
													(
													(
													CASE 
														WHEN bitGrossProfit = 0
															THEN (CASE WHEN @ApplyOverAllDisc = 1 THEN  Revenue - (CASE WHEN ISNULL(decDiscAmt, 0) >= 0 THEN decDiscAmt ELSE ISNULL(decDiscAmt, 0) * -1 END) else revenue end)  
														ELSE GP
														END
													) * isnull((
														SELECT decdiscperc/100
														FROM tblsalespersonscommission AS SPC
														INNER JOIN tblSalesPersons AS SP ON SP.[uID] = SPC.uidSalesPersonID
														WHERE (
																CASE 
																	WHEN bitGrossProfit = 0
																		THEN Revenue
																	ELSE GP
																	END
																) >= decvaluefrom
															AND (
																CASE 
																	WHEN bitGrossProfit = 0
																		THEN Revenue
																	ELSE GP
																	END
																) <= decvalueto AND SP.strSalesName = @strSalesName
														), 0) 
													)	
							when bitPaidInvoice = 1   and bitSettled = 0 then 0 
							else 
										(
										Commissionable * isnull((
										SELECT decdiscperc/100
										FROM tblsalespersonscommission AS SPC
										INNER JOIN tblSalesPersons AS SP ON SP.[uID] = SPC.uidSalesPersonID
										WHERE (
												CASE 
													WHEN bitGrossProfit = 0
														THEN (CASE WHEN @ApplyOverAllDisc = 1 THEN  Revenue - (CASE WHEN ISNULL(decDiscAmt, 0) >= 0 THEN decDiscAmt ELSE ISNULL(decDiscAmt, 0) * -1 END) ELSE revenue END)  
													ELSE GP
													END
												) >= decvaluefrom
											AND (
												CASE 
													WHEN bitGrossProfit = 0
														THEN (CASE WHEN @ApplyOverAllDisc = 1 THEN  Revenue - (CASE WHEN ISNULL(decDiscAmt, 0) >= 0 THEN decDiscAmt ELSE ISNULL(decDiscAmt, 0) * -1 END) ELSE revenue END)  
													ELSE GP
													END
												) <= decvalueto AND SP.strSalesName = @strSalesName
										), 0) 
										)  
							
							end,2,1 ) 
				
					UPDATE #TMPGRP1 SET commission = CASE WHEN commission < 0 THEN commission * 0 ELSE commission END;
				
					UPDATE #TMPGRP1 SET margin = (1 - (COGS / CASE WHEN Revenue = 0 THEN 1 ELSE Revenue END)) * 100

					UPDATE #TMPGRP1 SET Commissionable = 0 WHERE Commissionable < 0

					UPDATE #TMPGRP1 SET Revenue = CASE WHEN @ApplyOverAllDisc = 1 THEN  Revenue - (Revenue * (decDiscPerc/100)) ELSE revenue END

					IF @optSummary = 1 
						BEGIN
							SELECT SalesPersonName
								,SUM(TotalSales) AS TotalSales
								,SUM(Revenue) AS Revenue
								,SUM(COGS) AS COGS
								,SUM(GP) AS GP
								,SUM(Commissionable) AS Commissionable
								,SUM(commission) AS commission
								,SUM(Margin) AS margin
								FROM #TMPGRP1
								GROUP BY SalesPersonName
						END
					ELSE 
						BEGIN
							SELECT * FROM #TMPGRP1 --WHERE Commissionable > 0
						END

				END
		END
	ELSE -- DOCUMENT LEVEL REPORT
		BEGIN

			IF @isPaidInvoiceOnly = 1
				BEGIN
					SELECT ISNULL(tblInvoiceDoc.strSalesName, '<< No Sales Person >>') AS SalesPersonName
					,(
						SELECT strCustDesc
						FROM tblCustomers
						WHERE strCustName = tblInvoiceDoc.strCustName
						) AS CustDescription
					,MAX(CP.dteJournalDate) AS paiddate
					,isnull((
					SELECT TOP 1 bitSettled
					FROM tblcusttrans
					WHERE strInvDocID = tblInvoiceDoc.strInvDocID
					), 0) AS bitSettled
					,tblInvoiceDoc.dteJournalDate AS JournalDate
					,tblInvoiceDoc.strInvDocID AS InvDocID
					,tblInvoiceDoc.strCustName AS Customer
					,tblInvoiceDoc.decTotal AS TotalSales
					,(tblInvoiceDoc.decSubTotal + (CASE WHEN @ApplyOverAllDisc = 1 THEN tblInvoiceDoc.decDiscAmt ELSE 0 END)) AS Revenue
					,SUM(tblInvTrackingDT.decCOGS) AS COGS
					,(tblInvoiceDoc.decSubTotal + (CASE WHEN @ApplyOverAllDisc = 1 THEN tblInvoiceDoc.decDiscAmt ELSE 0 END)) - SUM(tblInvTrackingDT.decCOGS) AS GP
					
					--,(tblInvoiceDoc.decTotal) AS Commissionable
					,(tblInvoiceDoc.decSubTotal + (case when @ApplyOverAllDisc = 1 then tblInvoiceDoc.decDiscAmt else 0 end)) AS Commissionable
					,isnull((
							SELECT TOP 1 bitGrossProfit
							FROM tblSalesPersons
							WHERE strSalesName = tblInvoiceDoc.strSalesName
							), 0) AS bitGrossProfit
					,isnull((
							SELECT TOP 1 bitPaidInvoices
							FROM tblSalesPersons
							WHERE strSalesName = tblInvoiceDoc.strSalesName
							), 0) AS bitPaidInvoice
					,CONVERT(DECIMAL(19,2),0.0) AS commission
					,CONVERT(DECIMAL(19,2),0.0) AS margin
					,tblInvoiceDoc.decDiscPerc
					,tblInvoiceDoc.decDiscAmt 
				--((case when @bitGrossProfit = 0 then  (tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt) else  (tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt) - SUM(tblInvTrackingDT.decCOGS) end) / isnull((select decdiscperc from tblsalespersoncommissionDT where inttype = 0 and (case when @bitGrossProfit = 0 then  (tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt) else  (tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt) - SUM(tblInvTrackingDT.decCOGS) end) >= decvaluefrom and (case when @bitGrossProfit = 0 then  (tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt) else  (tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt) - SUM(tblInvTrackingDT.decCOGS) end) <= decvalueto), 1)) as Commission
				INTO #TMP2
				FROM tblInvoiceDoc
				INNER JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvoiceDoc.lngInvTrackID
				INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
				INNER JOIN tblCustTrans AS CT ON CT.strInvDocID = tblInvoiceDoc.strInvDocID
				INNER JOIN tblCustTransDT AS CTDT ON CTDT.lngCustTrID = CT.lngCustTrID
				INNER JOIN tblCustPay AS CP ON CP.lngCustPayID = CTDT.lngCustPayID
				WHERE (tblInvTracking.intModule = 2)
					
					AND ISNULL(tblInvoiceDoc.strSalesName, '<< No Sales Person >>') IN (select Value from [dbo].[fnSplitStringAsTable](@strSalesName,','))
					AND tblInvTrackingDT.strPartNumber in (select strpartnumber from tblInv where bitExclCommission = 0)
					AND tblInvoiceDoc.strCustName in (select strCustName from tblCustomers where bitExclCommission = 0)
				GROUP BY tblInvoiceDoc.strSalesName 
					,CP.dteJournalDate
					,tblInvoiceDoc.strInvDocID
					,tblInvoiceDoc.dteJournalDate
					,tblInvoiceDoc.strCustName
					,tblInvoiceDoc.decTotal
					,tblInvoiceDoc.decSubTotal
					,tblInvoiceDoc.decDiscAmt
					,tblInvoiceDoc.decDiscPerc
				HAVING  MAX(CP.dteJournalDate) BETWEEN @SQStart AND @SQEnd
				ORDER BY tblInvoiceDoc.strSalesName
					,tblInvoiceDoc.dteJournalDate
					,tblInvoiceDoc.strInvDocID

					UPDATE #TMP2
						SET commission = 
						ROUND(case when bitPaidInvoice = 1 and bitSettled = 1 then 
					(CASE WHEN bitGrossProfit=1 THEN GP ELSE Commissionable END
					* isnull((
							SELECT decdiscperc/100
							FROM tblsalespersonscommission AS SPC
							INNER JOIN tblSalesPersons AS SP ON SP.[uID] = SPC.uidSalesPersonID
							WHERE  (
									CASE 
										WHEN bitGrossProfit = 0
											THEN Revenue
										ELSE GP
										END
									) >= decvaluefrom
								AND (
									CASE 
										WHEN bitGrossProfit = 0
											THEN Revenue
										ELSE GP
										END
									) <= decvalueto AND SP.strSalesName = @strSalesName
							), 0)

						)
						when bitPaidInvoice = 1   and bitSettled = 0 then 0  
						else
						(CASE WHEN bitGrossProfit=1 THEN GP ELSE Commissionable END 
						* isnull((
							SELECT decdiscperc/100
							FROM tblsalespersonscommission AS SPC
							INNER JOIN tblSalesPersons AS SP ON SP.[uID] = SPC.uidSalesPersonID
							WHERE  (
									CASE 
										WHEN bitGrossProfit = 0
											THEN Revenue
										ELSE GP
										END
									) >= decvaluefrom
								AND (
									CASE 
										WHEN bitGrossProfit = 0
											THEN Revenue
										ELSE GP
										END
									) <= decvalueto  AND SP.strSalesName = @strSalesName
							), 0)
						)
						end,2,1)

					UPDATE #TMP2 SET margin = (1 - (COGS / Revenue)) * 100

					

					UPDATE #TMP2 SET Commissionable = 0 WHERE Commissionable < 0
					
					IF @optSummary = 1
						BEGIN
							SELECT SalesPersonName
								,SUM(TotalSales) AS TotalSales
								,SUM(Revenue) AS Revenue
								,SUM(COGS) AS COGS
								,SUM(GP) AS GP
								,SUM(Commissionable) AS Commissionable
								,SUM(commission) AS commission
								,SUM(Margin) AS margin
								FROM #TMP2
								GROUP BY SalesPersonName
						END
					ELSE
						BEGIN
							SELECT * FROM #TMP2 --WHERE Commissionable > 0
						END

				END
			ELSE
				BEGIN
					SELECT ISNULL(tblInvoiceDoc.strSalesName, '<< No Sales Person >>') AS SalesPersonName
					,(
						SELECT strCustDesc
						FROM tblCustomers
						WHERE strCustName = tblInvoiceDoc.strCustName
						) AS CustDescription
					,isnull((
							SELECT TOP 1 dteJournaldate
							FROM tblcusttrans
							WHERE strInvDocID = tblInvoiceDoc.strInvDocID
							), '') AS paiddate
					,isnull((
					SELECT TOP 1 bitSettled
					FROM tblcusttrans
					WHERE strInvDocID = tblInvoiceDoc.strInvDocID
					), 0) AS bitSettled
					,tblInvoiceDoc.dteJournalDate AS JournalDate
					,tblInvoiceDoc.strInvDocID AS InvDocID
					,tblInvoiceDoc.strCustName AS Customer
					,tblInvoiceDoc.decTotal AS TotalSales
					,(tblInvoiceDoc.decSubTotal + (CASE WHEN @ApplyOverAllDisc = 1 THEN tblInvoiceDoc.decDiscAmt ELSE 0 END)) AS Revenue
					,SUM(tblInvTrackingDT.decCOGS) AS COGS
					,(tblInvoiceDoc.decSubTotal + (CASE WHEN @ApplyOverAllDisc = 1 THEN tblInvoiceDoc.decDiscAmt ELSE 0 END)) - SUM(tblInvTrackingDT.decCOGS) AS GP
					
					--,(tblInvoiceDoc.decTotal) AS Commissionable
					,(tblInvoiceDoc.decSubTotal + (case when @ApplyOverAllDisc = 1 then tblInvoiceDoc.decDiscAmt else 0 end)) AS Commissionable
					,isnull((
							SELECT TOP 1 bitGrossProfit
							FROM tblSalesPersons
							WHERE strSalesName = tblInvoiceDoc.strSalesName
							), 0) AS bitGrossProfit
					,isnull((
							SELECT TOP 1 bitPaidInvoices
							FROM tblSalesPersons
							WHERE strSalesName = tblInvoiceDoc.strSalesName
							), 0) AS bitPaidInvoice
					,CONVERT(DECIMAL(19,2),0.0) AS commission
					,CONVERT(DECIMAL(19,2),0.0) AS margin
					,tblInvoiceDoc.decDiscPerc
					,tblInvoiceDoc.decDiscAmt 
				--((case when @bitGrossProfit = 0 then  (tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt) else  (tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt) - SUM(tblInvTrackingDT.decCOGS) end) / isnull((select decdiscperc from tblsalespersoncommissionDT where inttype = 0 and (case when @bitGrossProfit = 0 then  (tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt) else  (tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt) - SUM(tblInvTrackingDT.decCOGS) end) >= decvaluefrom and (case when @bitGrossProfit = 0 then  (tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt) else  (tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt) - SUM(tblInvTrackingDT.decCOGS) end) <= decvalueto), 1)) as Commission
				INTO #TMP3
				FROM tblInvoiceDoc
				INNER JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvoiceDoc.lngInvTrackID
				INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
				WHERE (tblInvTracking.intModule = 2)
					AND (
						tblInvTracking.dteJournalDate BETWEEN @SQStart
							AND @SQEnd
						)
					AND ISNULL(tblInvoiceDoc.strSalesName, '<< No Sales Person >>') IN (select Value from [dbo].[fnSplitStringAsTable](@strSalesName,','))
					AND tblInvTrackingDT.strPartNumber in (select strpartnumber from tblInv where bitExclCommission = 0)
					AND tblInvoiceDoc.strCustName in (select strCustName from tblCustomers where bitExclCommission = 0)
				GROUP BY tblInvoiceDoc.strSalesName 
					,tblInvoiceDoc.strInvDocID
					,tblInvoiceDoc.dteJournalDate
					,tblInvoiceDoc.strCustName
					,tblInvoiceDoc.decTotal
					,tblInvoiceDoc.decSubTotal
					,tblInvoiceDoc.decDiscAmt
					,tblInvoiceDoc.decDiscPerc
				ORDER BY tblInvoiceDoc.strSalesName
					,tblInvoiceDoc.dteJournalDate
					,tblInvoiceDoc.strInvDocID

					UPDATE #TMP3
						SET commission = 
						ROUND(case when bitPaidInvoice = 1 and bitSettled = 1 then 
					(CASE WHEN bitGrossProfit=1 THEN GP ELSE Commissionable END
					* isnull((
							SELECT decdiscperc/100
							FROM tblsalespersonscommission AS SPC
							INNER JOIN tblSalesPersons AS SP ON SP.[uID] = SPC.uidSalesPersonID
							WHERE  (
									CASE 
										WHEN bitGrossProfit = 0
											THEN Revenue
										ELSE GP
										END
									) >= decvaluefrom
								AND (
									CASE 
										WHEN bitGrossProfit = 0
											THEN Revenue
										ELSE GP
										END
									) <= decvalueto AND SP.strSalesName = @strSalesName
							), 0)

						)
						when bitPaidInvoice = 1   and bitSettled = 0 then 0  
						else
						(CASE WHEN bitGrossProfit=1 THEN GP ELSE Commissionable END 
						* isnull((
							SELECT decdiscperc/100
							FROM tblsalespersonscommission AS SPC
							INNER JOIN tblSalesPersons AS SP ON SP.[uID] = SPC.uidSalesPersonID
							WHERE  (
									CASE 
										WHEN bitGrossProfit = 0
											THEN Revenue
										ELSE GP
										END
									) >= decvaluefrom
								AND (
									CASE 
										WHEN bitGrossProfit = 0
											THEN Revenue
										ELSE GP
										END
									) <= decvalueto  AND SP.strSalesName = @strSalesName
							), 0)
						)
						end,2,1)

					UPDATE #TMP3 SET margin = (1 - (COGS / CASE WHEN Revenue =0 THEN 1 ELSE Revenue END)) * 100

					UPDATE #TMP3 SET Commissionable = CASE WHEN bitGrossProfit = 0 THEN 
														--(CASE WHEN @ApplyOverAllDisc = 0 THEN  Revenue + (CASE WHEN ISNULL(decDiscAmt, 0) >= 0 THEN decDiscAmt ELSE ISNULL(decDiscAmt, 0) * -1 END) ELSE Revenue END)  
														Revenue
													 ELSE GP
													 END

					UPDATE #TMP3 SET Commissionable = 0 WHERE Commissionable < 0
					
					IF @optSummary = 1
						BEGIN
							SELECT SalesPersonName
								,SUM(TotalSales) AS TotalSales
								,SUM(Revenue) AS Revenue
								,SUM(COGS) AS COGS
								,SUM(GP) AS GP
								,SUM(Commissionable) AS Commissionable
								,SUM(commission) AS commission
								,SUM(Margin) AS margin
								FROM #TMP3
								GROUP BY SalesPersonName
						END
					ELSE
						BEGIN
							SELECT * FROM #TMP3 --WHERE Commissionable > 0
						END

				END
		END	
END
GO
/****** Object:  StoredProcedure [dbo].[GetSalesPersonsPos]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetSalesPersonsPos]
AS
BEGIN

SELECT strSalesName FROM tblSalesPersons WHERE bitInactive = 0 AND bitIsWorkshopTechnician= 0 ORDER BY strSalesName

END
GO
/****** Object:  StoredProcedure [dbo].[GetSalesPriceData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetSalesPriceData]  
@PartNumber AS NVARCHAR(100)  
,@DocDate AS datetime  
AS  
BEGIN  
SELECT tblInvPrice.strPricelist AS Pricelist  
,tblInvPrice.decSelling AS Selling  
,tblPricelists.intPriceListType AS PriceListType  
,tblPriceListsByDate.dteStartDate AS StartDate  
,tblPriceListsByDate.dteFinishDate AS EndDate  
,tblInvPrice.bitPromotionalPricing AS IsPromotionalPrice  
,ISNULL(tblInvPrice.decPromotionalPrice,0) AS PromotionalPrice  
,tblInvPrice.dtePromotionalStartDate AS PromotionalStartDate  
,tblInvPrice.dtePromotionalEndDate AS PromotionalEndDate  
,tblInv.decLastPPUnit AS PurchasePrice  
,tblInvPrice.strUnit as Unit
,ISNULL(tblInvUOMs.decConversionFactor,1) as ConversionFactor 
,ISNULL(tblInvUOMs.strConversionType,'Multiply') as ConversionType
,ISNULL(CASE tblInvUOMs.strConversionType
					WHEN 'Multiply'
						THEN tblInvUOMs.decConversionFactor
					ELSE 1 / tblInvUOMs.decConversionFactor
					END, decSellFromStock) AS SellFromStock
FROM tblInvPrice  
INNER JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist  
AND tblInvPrice.uidPriceBasedID = tblPricelists.uidPriceBasedID  
INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblPricelists.uidPriceBasedID  
INNER JOIN tblPriceData ON tblPriceData.strPricelist = tblPricelists.strPricelist  
INNER JOIN tblInv ON tblInvPrice.strPartNumber = tblInv.strPartNumber   
		LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber
			AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
			AND tblInvUOMs.bitInactive = 0
			AND (
				tblInvUOMs.strUseFor = 'Sales'
				OR tblInvUOMs.strUseFor = 'Both'
				)
WHERE (tblInvPrice.strPartNumber = @PartNumber)  
AND tblPriceData.bitInactive = 0  
AND @DocDate >= tblPriceListsByDate.dteStartDate  
AND @DocDate <= tblPriceListsByDate.dteFinishDate  
ORDER BY tblInvPrice.decSelling DESC  
END 
GO

/****** Object:  StoredProcedure [dbo].[GetSalesPurchaseDocumentCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetPerformanceIndicatorData] ***********/

/*********** Start [GetSalesPurchaseDocumentCount] ***********/
CREATE PROCEDURE [dbo].[GetSalesPurchaseDocumentCount]  
 @CurrentUserName NVARCHAR(20)
 ,@StartDate DATETIME
 ,@EndDate DATETIME
AS
BEGIN

declare @SalesInvoiceAmount money
declare @SalesInvoiceTotalAmount money
declare @SalesOrderAmount money
declare @SalesOrderTotalAmount money
declare @SalesQuoteAmount money
declare @SalesQuoteTotalAmount money

declare @PurchaseInvoiceAmount money
declare @PurchaseInvoiceTotalAmount money
declare @PurchaseOrderAmount money
declare @PurchaseOrderTotalAmount money
declare @PurchaseQuoteAmount money
declare @PurchaseQuoteTotalAmount money

declare @SalesInvoiceCount int = 0
declare @SalesInvoiceTotalCount int = 0
declare @SalesOrderCount int = 0
declare @SalesOrderTotalCount int = 0
declare @SalesQuoteCount int = 0
declare @SalesQuoteTotalCount int = 0

declare @PurchaseInvoiceCount int = 0
declare @PurchaseInvoiceTotalCount int = 0
declare @PurchaseOrderCount int = 0
declare @PurchaseOrderTotalCount int = 0
declare @PurchaseQuoteCount int = 0
declare @PurchaseQuoteTotalCount int = 0

declare @OpenTask int = 0
declare @OverdueTodayTask int = 0
declare @InProgressTask int = 0
declare @OverdueTask int = 0

declare @OutstandingPOApproveCount int = 0
declare @RequisitionApproveCount int = 0
declare @CreditNoteApproveCount int = 0
declare @CreditRequestApproveCount int = 0
declare @JournalEntryApproveCount int = 0

declare @CurrSymbol nvarchar(10)

set @CurrSymbol = (select strCurrSymbol from tblCurrency (NOLOCK) where bitHome = 1)

--Sales Invoice
set @SalesInvoiceTotalAmount = (Select ISNULL(Sum(decLineTotExc),0)  from  tblInvoiceDoc (NOLOCK) inner join tblInvoiceDocDT (NOLOCK) on tblInvoiceDocDT.strInvDocID=tblInvoiceDoc.strInvDocID where  dteJournalDate between @StartDate  and @EndDate )
set @SalesInvoiceAmount = ( Select ISNULL(Sum(decLineTotExc),0)  from  tblInvoiceDoc (NOLOCK) inner join tblInvoiceDocDT (NOLOCK) on tblInvoiceDocDT.strInvDocID=tblInvoiceDoc.strInvDocID where  dteJournalDate between @StartDate  and @EndDate and  strUserName = @CurrentUserName)

set @SalesInvoiceTotalCount = (Select Count(distinct tblInvoiceDoc.strInvDocID)  from  tblInvoiceDoc (NOLOCK) inner join tblInvoiceDocDT (NOLOCK) on tblInvoiceDocDT.strInvDocID=tblInvoiceDoc.strInvDocID where  dteJournalDate between @StartDate  and @EndDate )
set @SalesInvoiceCount = (Select Count(distinct tblInvoiceDoc.strInvDocID)  from  tblInvoiceDoc (NOLOCK) inner join tblInvoiceDocDT (NOLOCK) on tblInvoiceDocDT.strInvDocID=tblInvoiceDoc.strInvDocID where  dteJournalDate between @StartDate  and @EndDate And  strUserName = @CurrentUserName)

--Sales Order
set @SalesOrderTotalAmount = (select ISNULL(Sum(decTotal),0) from tblOrderDoc (NOLOCK) where strOrdDocID like 'SO-%' And bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate)
set @SalesOrderAmount = (select ISNULL(Sum(decTotal),0) from tblOrderDoc (NOLOCK) where strOrdDocID like 'SO-%' AND strUserName = @CurrentUserName And bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate)

set @SalesOrderTotalCount = (select COUNT(*) from tblOrderDoc (NOLOCK) where strOrdDocID like 'SO-%' And bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate)
set @SalesOrderCount = (select COUNT(*) from tblOrderDoc (NOLOCK) where strOrdDocID like 'SO-%' AND strUserName = @CurrentUserName And bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate)

-- Sales Quote
set @SalesQuoteTotalAmount = (select ISNULL(Sum(decTotal),0) from tblOrderDoc (NOLOCK) where strOrdDocID like 'QU-%' and bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate) + (select ISNULL(Sum(decTotal),0) from tblOrderDocQ (NOLOCK) where strOrdDocID like 'QS-%' and bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate)
set @SalesQuoteAmount = (select ISNULL(Sum(decTotal),0) from tblOrderDoc (NOLOCK) where strOrdDocID like 'QU-%' AND strUserName = @CurrentUserName and bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate) + (select ISNULL(Sum(decTotal),0) from tblOrderDocQ (NOLOCK) where strOrdDocID like 'QS-%' AND strUserName = @CurrentUserName and bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate)

set @SalesQuoteTotalCount = (select COUNT(*) from tblOrderDoc (NOLOCK) where strOrdDocID like 'QU-%' and bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate) + (select COUNT(*) from tblOrderDocQ (NOLOCK) where strOrdDocID like 'QS-%' and bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate)
set @SalesQuoteCount = (select COUNT(*) from tblOrderDoc (NOLOCK) where strOrdDocID like 'QU-%' AND strUserName = @CurrentUserName and bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate) + (select COUNT(*) from tblOrderDocQ (NOLOCK) where strOrdDocID like 'QS-%' AND strUserName = @CurrentUserName and bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate)

-- Purchase Invoice
set @PurchaseInvoiceTotalAmount = (select ISNULL(Sum(decTotal),0) from tblInvoiceDocP (NOLOCK) where  dteJournalDate between @StartDate and @EndDate)
set @PurchaseInvoiceAmount = (select ISNULL(Sum(decTotal),0) from tblInvoiceDocP (NOLOCK) where  strUserName = @CurrentUserName AND dteJournalDate between @StartDate and @EndDate)

set @PurchaseInvoiceTotalCount = (select COUNT(*) from tblInvoiceDocP (NOLOCK) where  dteJournalDate between @StartDate and @EndDate)
set @PurchaseInvoiceCount = (select COUNT(*) from tblInvoiceDocP (NOLOCK) where strUserName = @CurrentUserName AND dteJournalDate between @StartDate and @EndDate)

-- Purchase Order
set @PurchaseOrderTotalAmount =  (select ISNULL(Sum(decTotal),0) from tblOrderDocP (NOLOCK) where strOrdPDocID like 'PO-%' and bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate)
set @PurchaseOrderAmount =  (select ISNULL(Sum(decTotal),0) from tblOrderDocP (NOLOCK) where strOrdPDocID like 'PO-%' and strUserName = @CurrentUserName and bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate)

set @PurchaseOrderTotalCount =  (select COUNT(*) from tblOrderDocP (NOLOCK) where strOrdPDocID like 'PO-%' and bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate)
set @PurchaseOrderCount =  (select COUNT(*) from tblOrderDocP (NOLOCK) where strOrdPDocID like 'PO-%' and strUserName = @CurrentUserName and bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate)

-- Purchase Quote
set @PurchaseQuoteTotalAmount = (select ISNULL(Sum(decTotal),0) from tblOrderDocP (NOLOCK) where strOrdPDocID like 'RQ-%' and bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate)
set @PurchaseQuoteAmount = (select ISNULL(Sum(decTotal),0) from tblOrderDocP (NOLOCK) where strOrdPDocID like 'RQ-%' and bitCleared = 0 And strUserName = @CurrentUserName AND dteJournalDate between @StartDate and @EndDate)

set @PurchaseQuoteTotalCount = (select COUNT(*) from tblOrderDocP (NOLOCK) where strOrdPDocID like 'RQ-%' and bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate)
set @PurchaseQuoteCount = (select COUNT(*) from tblOrderDocP (NOLOCK) where strOrdPDocID like 'RQ-%' and bitCleared = 0 And strUserName = @CurrentUserName AND dteJournalDate between @StartDate and @EndDate)

-- Task
set @OpenTask = (select count(*) from tblCRMActivityActions (NOLOCK) inner join tblCRMActivityActionsStatus (NOLOCK) 
				 on tblCRMActivityActions.ActionStatus=tblCRMActivityActionsStatus.StatusType 
				 where tblCRMActivityActions.AssignTo = @CurrentUserName 
				 AND (tblCRMActivityActionsStatus.StatusGroup=1 OR tblCRMActivityActionsStatus.StatusGroup=2)
				 AND (cast(tblCRMActivityActions.DueDate as date) >= cast(GETDATE() as date)))
set @OverdueTodayTask = (SELECT Count(*) FROM tblCRMActivityActions (NOLOCK) inner join tblCRMActivityActionsStatus (NOLOCK)
				on tblCRMActivityActions.ActionStatus=tblCRMActivityActionsStatus.StatusType  
				WHERE (tblCRMActivityActions.AssignTo = @CurrentUserName ) 
				AND (cast(tblCRMActivityActions.DueDate as date) = cast(GETDATE() as date)) 
				AND (tblCRMActivityActionsStatus.StatusGroup <> 3))
set @InProgressTask = (SELECT Count(*) FROM tblCRMActivityActions (NOLOCK) inner join tblCRMActivityActionsStatus (NOLOCK) 
				on tblCRMActivityActions.ActionStatus=tblCRMActivityActionsStatus.StatusType  
				WHERE (tblCRMActivityActions.AssignTo = @CurrentUserName ) 
				AND tblCRMActivityActionsStatus.StatusGroup=2
				AND (cast(tblCRMActivityActions.DueDate as date) >= cast(GETDATE() as date)))
set @OverdueTask = (SELECT Count(*) FROM tblCRMActivityActions (NOLOCK) inner join tblCRMActivityActionsStatus (NOLOCK) 
				 on tblCRMActivityActions.ActionStatus=tblCRMActivityActionsStatus.StatusType
				 WHERE (tblCRMActivityActions.AssignTo = @CurrentUserName )
				  AND (cast(DueDate as date) < cast(GETDATE() as date)) 
				  AND (tblCRMActivityActionsStatus.StatusGroup <> 3))

set @OutstandingPOApproveCount = (SELECT Count(*) FROM tblOrderDocP ODP (NOLOCK) INNER JOIN tblOrdersDocP_POApprovals poa (NOLOCK) ON odp.strOrdPDocID = poa.strOrdPDocID INNER JOIN tblPQApprovalsGroup g (NOLOCK) ON poa.intGroupId = g.ID INNER JOIN tblApprovalsDocLimit dl (NOLOCK) ON g.ID = dl.intApproverGroupId INNER JOIN tblPQApprovalsUserTracking ut (NOLOCK) ON poa.strOrdPDocID = ut.strOrdPDocID INNER JOIN tblUsers u (NOLOCK) ON u.strUserName=ut.strUserName AND g.ID = ut.intGroupId AND dl.strUserName = ut.strUserName  INNER JOIN  tblUsers Us (NOLOCK) on Us.strUserName = ut.strUserName WHERE odp.bitCleared = 0 AND ODP.intDocType = 2 AND ut.strUserName = @CurrentUserName AND Us.blnApprovePurchaseOrders= Case when Us.blnIsAdmin=1 then Us.blnApprovePurchaseOrders else 1 end  AND ut.intApprovalStatus = 0 AND ODP.dteJournalDate BETWEEN @StartDate AND @EndDate AND (g.intNotificationOrder = 2 AND dl.priorityLevel = (SELECT MIN(priorityLevel) FROM tblApprovalsDocLimit l (NOLOCK) INNER JOIN tblPQApprovalsUserTracking t (NOLOCK) ON l.strUserName = t.strUserName AND l.intApproverGroupId = t.intGroupId AND poa.strOrdPDocID = t.strOrdPDocID WHERE t.intApprovalStatus = 0) OR g.intNotificationOrder = 1))
set @RequisitionApproveCount = (SELECT COUNT(*) FROM  tblInvIntReqDoc ODP (NOLOCK) INNER JOIN  tblInvIntReqDoc_IRApprovals poa (NOLOCK) ON odp.strInvIntReqDocID = poa.strInvIntReqDocID INNER JOIN  tblUsers U (NOLOCK) on ODP.strUserName = U.strUserName LEFT OUTER JOIN tblEmployees (NOLOCK) on tblEmployees.strEmpNumber = ODP.strEmpNumber INNER JOIN  tblUsers Us (NOLOCK) on Us.strUserName = poa.strSelectedApproverUserName WHERE odp.bitCleared = 0 AND poa.strSelectedApproverUserName = @CurrentUserName AND ODP.dteJournalDate BETWEEN @StartDate AND @EndDate AND Us.blnApproveInventoryRequistion = Case when Us.blnIsAdmin=1 then Us.blnApproveInventoryRequistion else 1 end)
Set @CreditNoteApproveCount = (SELECT COUNT(*) FROM tblInvoiceDoc (NOLOCK) WHERE  strUserName = @CurrentUserName AND strInvDocID like 'CN-%' AND dteJournalDate between @StartDate and @EndDate)
set @CreditRequestApproveCount = (SELECT Count(*) FROM tblOrderDoc OD (NOLOCK) INNER JOIN tblOrdersDoc_CNApprovals cna (NOLOCK) ON OD.strOrdDocID = cna.strOrdDocID INNER JOIN tblPQApprovalsGroup g (NOLOCK) ON cna.intGroupId = g.ID INNER JOIN tblApprovalsDocLimit dl (NOLOCK) ON g.ID = dl.intApproverGroupId INNER JOIN tblCNApprovalsUserTracking ut (NOLOCK) ON cna.strOrdDocID = ut.strOrdDocID  AND dl.strUserName = ut.strUserName WHERE OD.bitCleared = 0 AND OD.intDocType = 1 AND ut.strUserName = @CurrentUserName AND OD.strOrdDocID like 'CR-%' AND ut.intApprovalStatus = 0 AND dl.priorityLevel =( SELECT MIN(priorityLevel) FROM tblApprovalsDocLimit(NOLOCK) l INNER JOIN tblCNApprovalsUserTracking(NOLOCK) t ON l.strUserName = t.strUserName AND l.intApproverGroupId = t.intGroupId AND cna.strOrdDocID = t.strOrdDocID WHERE t.intApprovalStatus = 0))
set @JournalEntryApproveCount = (SELECT DISTINCT Count(*) FROM tblJournalEntryDocApprovalPending ODP (NOLOCK) INNER JOIN tblJournalEntryDoc_GLApprovals poa (NOLOCK) ON odp.strJENo = poa.strJEno INNER JOIN tblPQApprovalsGroup g (NOLOCK) ON poa.intGroupId = g.ID INNER JOIN tblApprovalsDocLimit dl (NOLOCK) ON g.ID = dl.intApproverGroupId INNER JOIN tblGLApprovalsUserTracking ut (NOLOCK) ON poa.strJEno = ut.strOrdGLDocID AND g.ID = ut.intGroupId AND dl.strUserName = ut.strUserName WHERE odp.bitPosted = 0 AND ut.strUserName = @CurrentUserName AND ut.intApprovalStatus = 0 AND (intNotificationOrder  = 1 OR ((intNotificationOrder = 2) AND (dl.priorityLevel =( SELECT MIN(priorityLevel) FROM tblApprovalsDocLimit l (NOLOCK) INNER JOIN tblGLApprovalsUserTracking t (NOLOCK) ON l.strUserName = t.strUserName AND l.intApproverGroupId = t.intGroupId AND poa.strJEno = t.strOrdGLDocID WHERE t.intApprovalStatus = 0)))))

SELECT @SalesInvoiceAmount As SalesInvoiceAmount, @SalesInvoiceTotalAmount AS SalesInvoiceTotalAmount, @SalesInvoiceTotalCount AS SalesInvoiceTotalCount, @SalesInvoiceCount AS SalesInvoiceCount,
	   @SalesOrderAmount AS SalesOrderAmount, @SalesOrderTotalAmount AS SalesOrderTotalAmount, @SalesOrderTotalCount AS SalesOrderTotalCount, @SalesOrderCount AS SalesOrderCount,
	   @SalesQuoteAmount AS SalesQuoteAmount, @SalesQuoteTotalAmount AS SalesQuoteTotalAmount, @SalesQuoteTotalCount AS SalesQuoteTotalCount, @SalesQuoteCount AS SalesQuoteCount,
	   @PurchaseInvoiceAmount AS PurchaseInvoiceAmount, @PurchaseInvoiceTotalAmount AS PurchaseInvoiceTotalAmount, @PurchaseInvoiceTotalCount AS PurchaseInvoiceTotalCount, @PurchaseInvoiceCount AS PurchaseInvoiceCount,
	   @PurchaseOrderAmount AS PurchaseOrderAmount, @PurchaseOrderTotalAmount AS PurchaseOrderTotalAmount, @PurchaseOrderTotalCount AS PurchaseOrderTotalCount, @PurchaseOrderCount AS PurchaseOrderCount,
	   @PurchaseQuoteAmount AS PurchaseQuoteAmount, @PurchaseQuoteTotalAmount AS PurchaseQuoteTotalAmount, @PurchaseQuoteTotalCount AS PurchaseQuoteTotalCount, @PurchaseQuoteCount AS PurchaseQuoteCount,
	   @OpenTask AS OpenTask, @OverdueTodayTask AS OverdueToday, @InProgressTask AS InProgressTask, @OverdueTask AS OverdueTask, @OutstandingPOApproveCount AS OutstandingPOApproveCount, @RequisitionApproveCount AS RequisitionApproveCount, @CreditNoteApproveCount AS CreditNoteCount,
	   @CreditRequestApproveCount as CreditRequestApproveCount,@JournalEntryApproveCount as JournalEntryApproveCount
END
GO
/****** Object:  StoredProcedure [dbo].[GetSalesRecurringData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetSalesRecurringData]
AS
BEGIN
	SELECT 
		strREName AS RecurringName, 
		dteLastProcDate AS LastProcDate, 
		strCustName AS CustomerName
	FROM 
		tblSalesRE 
	ORDER BY strREName
END
GO
/****** Object:  StoredProcedure [dbo].[GetSalesREDataFromPickedRE]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetSalesREDataFromPickedRE] 
	@PickedREName AS NVARCHAR(50)
AS
BEGIN
	SELECT 
		strREName AS RecurringName,
		dteLastProcDate AS LastProcDate,
		strCustName AS CustomerName,
		strSoldTo AS SoldTo,
		strShipTo AS ShipTo,
		strReference AS Reference,
		decSubTotal AS SubTotal,
		decVAT AS VAT,
		decTotal AS Total,
		strNotes AS Notes,
		intPaidBy AS  PaidByCode,
		intAccount AS AccountNumber,
		strSalesName AS SalesName,
		strAddInfo AS AdditionalInfo,
		decDiscPerc AS LineDiscPerc,
		decDiscAmt AS LineDiscAmt,
		strPaidBy AS PaidBy
	FROM 
		tblSalesRE 
	WHERE 
		strREName = @PickedREName
END
GO
/****** Object:  StoredProcedure [dbo].[GetSalesREDTData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetAllSalesREBulk] ***********/

/*********** Start [GetSalesREDTData] ***********/
CREATE PROCEDURE [dbo].[GetSalesREDTData]
AS
BEGIN
	SELECT tblSalesREDT.strREName AS 'REName'
		,tblSalesREDT.strPartNumber AS 'Number'
		,tblSalesREDT.strLocation AS 'Location'
		,tblSalesREDT.strPartDesc AS 'Description'
		,CASE 
			WHEN CAST(ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS BIT) = 1
				THEN CASE 
						WHEN tblSalesREDT.decQty < 0
							THEN - 1
						ELSE 1
						END
			ELSE tblSalesREDT.decQty
			END AS 'Qty'
		,tblSalesREDT.strUnit AS 'Unit'
		,tblSalesREDT.decPriceEaInc AS 'Price'
		,tblSalesREDT.strTaxCode AS 'TaxCode'
		,tblSalesREDT.decLineTaxAmt AS 'Tax'
		,tblSalesREDT.decLineTotInc AS 'Amount'
		,tblSalesREDT.imgTaxObj AS 'TaxObject'
		,tblSalesREDT.intType AS 'Type'
		--,tblSalesREDT.bitAllowPrcChg AS 'IsAllowChngPrice'
		,tblSalesREDT.strInvField1 AS 'Inv1'
		,tblSalesREDT.strInvField2 AS 'Inv2'
		,tblSalesREDT.strInvField3 AS 'Inv3'
		,tblSalesREDT.strInvField4 AS 'Inv4'
		,tblSalesREDT.strInvField5 AS 'Inv5'
		,tblSalesREDT.strInvField6 AS 'Inv6'
		,tblSalesREDT.strLineField1 AS 'Line1'
		,tblSalesREDT.strLineField2 AS 'Line2'
		,tblSalesREDT.strLineField3 AS 'Line3'
		,tblSalesREDT.strLineField4 AS 'Line4'
		,tblSalesREDT.strLineField5 AS 'Line5'
		,tblSalesREDT.strLineField6 AS 'Line6'
		,tblSalesREDT.strLineField7 AS 'Line7'
		,tblSalesREDT.strLineField8 AS 'Line8'
		,tblSalesREDT.strLineField9 AS 'Line9'
		,tblSalesREDT.strLineField10 AS 'Line10'
		,tblSalesREDT.strLineField11 AS 'Line11'
		,tblSalesREDT.strLineField12 AS 'Line12'
		,tblSalesREDT.decLineDiscPerc AS 'DiscountPercentage'
		,tblSalesREDT.decLineDiscAmt AS 'Discount'
		,tblSalesREDT.decStockQty AS 'StockQty'
		,tblSalesREDT.strStockUnit AS 'StockUnit'
		,tblSalesREDT.decSellFromStock AS 'SellFromStock'
		,tblSalesREDT.strSalesName AS 'SalesPerson'
		,tblInv.strDimProCode AS 'DimensionProfile'
		,tblInv.bitInvSerialType AS 'IsInventorySerial'
		,CASE 
			WHEN tblInv.bitInvSerialType = 1
				THEN 'Unassigned'
			ELSE ''
			END AS 'SerialOrLot'
		,tblInv.strUnitOfMeasure AS 'UnitOfMeasureWeight'
		,tblInv.decMass AS 'ItemWeight'
		,tblInv.decVolumetricWeight AS 'VolumetricWeight'
		,CAST(ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS BIT) AS 'IsSerialDimension'
	FROM tblSalesREDT
	INNER JOIN tblInv ON tblSalesREDT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	ORDER BY intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetSalesREDTEntity]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetSalesREDTEntity] 
	@PickedREName AS NVARCHAR(50)
AS
BEGIN
	SELECT 
		tblSalesREDT.strREName AS REName,
		tblSalesREDT.intLineNo AS [LineNo],
		tblSalesREDT.strPartNumber AS PartNumber,
		tblSalesREDT.strLocation AS Location,
		tblSalesREDT.strPartDesc AS PartDesc,
		tblSalesREDT.decQty AS Qty,
		tblSalesREDT.strUnit AS Unit,
		tblSalesREDT.decPriceEaInc AS PriceEaInc,
		tblSalesREDT.strTaxCode AS TaxCode,
		tblSalesREDT.decLineTaxAmt AS LineTaxAmt,
		tblSalesREDT.decLineTotInc AS LineTotInc,--10
		tblSalesREDT.imgTaxObj AS TaxObj,
		tblSalesREDT.intType AS [Type],
		tblSalesREDT.bitAllowPrcChg AS IsAllowPrcChg,
		tblSalesREDT.strInvField1 AS InvField1,
		tblSalesREDT.strInvField2 AS InvField2,
		tblSalesREDT.strInvField3 AS InvField3,
		tblSalesREDT.strInvField4 AS InvField4,
		tblSalesREDT.strInvField5 AS InvField5,
		tblSalesREDT.strInvField6 AS InvField6,
		tblSalesREDT.strLineField1 AS LineField1,--20
		tblSalesREDT.strLineField2 AS LineField2,
		tblSalesREDT.strLineField3 AS LineField3,
		tblSalesREDT.strLineField4 AS LineField4,
		tblSalesREDT.strLineField5 AS LineField5,
		tblSalesREDT.strLineField6 AS LineField6,
		tblSalesREDT.strLineField7 AS LineField7,
		tblSalesREDT.strLineField8 AS LineField8,
		tblSalesREDT.strLineField9 AS LineField9,
		tblSalesREDT.strLineField10	AS LineField10,
		tblSalesREDT.strLineField11	AS LineField11,--30
		tblSalesREDT.strLineField12 AS LineField12,
		tblSalesREDT.decLineDiscPerc AS LineDiscPerc,
		tblSalesREDT.decLineDiscAmt AS LineDiscAmt,
		tblSalesREDT.decStockQty AS StockQty,
		tblSalesREDT.strStockUnit AS StockUnit,
		tblSalesREDT.decSellFromStock AS SellFromStock,
		tblSalesREDT.strSalesName AS SalesName,
		
		tblInv.strDimProCode AS DimProCode, 
		tblInv.bitInvSerialType AS IsInvSerialType, 
		tblInv.strUnitOfMeasure AS UnitOfMeasure,  --40
		tblInv.decMass AS Mass, 
		tblInv.decVolumetricWeight AS VolumetricWeight, 
		ISNULL(tblInvSerialTypes.bitDimensionExist,0) AS IsDimensionExist --43
	FROM tblSalesREDT 
	INNER JOIN tblInv ON tblSalesREDT.strPartNumber = tblInv.strPartNumber 
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
	WHERE strREName = @PickedREName 
	ORDER BY intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetSalesReserveUseInvoiceData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[GetSalesReserveUseInvoiceData]
AS
BEGIN
	SELECT 
		strInvDocID AS InvDocID, 
		dteSystemDate AS SystemDate, 
		strUserName AS UserName, 
		strNotes AS Notes 
	FROM 
		tblInvoiceDoc 
	WHERE 
		bitReserved = 1 
	ORDER BY 
		strInvDocID
END
GO
/****** Object:  StoredProcedure [dbo].[GetSelectedProcessJobDataFORIR]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetSelectedProcessJobDataFORIR] (
	@DocNumber NVARCHAR(30)
	,@PartNumber NVARCHAR(30) = ''
	)
AS
BEGIN
	SELECT tblWSProcessDocDT.[LineNo]
		,tblWSProcessDocDT.ProcessDocDTID
		,tblWSProcessDocDT.PartNumber
		,tblWSProcessDocDT.PartDesc AS PartDesc
		,tblWSProcessDocDT.Location
		,tblWSProcessDocDT.QuotedQty
		,tblWSProcessDocDT.JobQty
		,ISNULL(SUM(tblWSWIPCompDT.PostQty), 0) - ISNULL(SUM(tblWSWIPCompDT.ReturnQty), 0) AS PostedQty
		,CONVERT(MONEY, 0) AS ReturnQty
		,CONVERT(MONEY, 0) AS PostQty
		,CONVERT(MONEY, 0) AS PostAmount
		--tblWSProcessDocDT.ManAmount,  
		,tblWSProcessDocDT.LineTotExc AS Amount
		,ISNULL(SUM(tblWSWIPCompDT.PostAmount), 0) AS PostedAmount
		,tblInv.bitInvSerialType AS IsSerailType
		,tblInv.strStockUnit AS Unit
		,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
		,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist
		,CONVERT(INT, tblWSProcessDocDT.ItemType) AS ItemType
		,tblInv.decLastPPUnit AS LastReceivedCost --on 17042018
		,tblInv.decStandardCost AS StandardCost
		,tblWSProcessDocDT.BuyoutCost --on 18042018  
	FROM tblWSProcessDocDT
	INNER JOIN tblInv ON tblWSPRocessDocDT.PartNumber = tblInv.strPartNumber
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	LEFT JOIN tblWSWIP ON tblWSProcessDocDT.ProcessDocID = tblWSWIP.JBDocID
	LEFT JOIN tblWSWIPCompDT ON tblWSWIP.WIPDocID = tblWSWIPCompDT.WIPDocID
		AND tblWSPRocessDocDT.[LineNo] = tblWSWIPCompDT.[LineNo]
	WHERE tblWSProcessDocDT.ProcessDocID = @DocNumber
		AND tblWSProcessDocDT.BillingMethod = 0
		AND tblWSProcessDocDT.IsDiscountTax = 0 --added this condition to remove billing method and discount row from grid in IT  
		AND (
			@PartNumber = ''
			OR tblWSWIPCompDT.PartNumber = @PartNumber
			)
	GROUP BY tblWSProcessDocDT.[LineNo]
		,tblWSProcessDocDT.PartNumber
		,tblWSProcessDocDT.PartDesc
		,tblWSProcessDocDT.Location
		,tblWSProcessDocDT.QuotedQty
		,tblWSProcessDocDT.JobQty
		,tblWSProcessDocDT.LineTotExc
		,tblInv.bitInvSerialType
		,tblInv.strStockUnit
		,tblInvSerialTypes.bitMethod
		,tblInvSerialTypes.bitDimensionExist
		,tblWSProcessDocDT.ItemType
		,tblWSProcessDocDT.ProcessDocDTID
		,tblInv.decLastPPUnit --on 17042018
		,tblInv.decStandardCost
		,tblWSProcessDocDT.BuyoutCost --on 18042018  
	ORDER BY tblWSProcessDocDT.[LineNo]
END
GO
/****** Object:  StoredProcedure [dbo].[GetSelectedTechnicianData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetSelectedTechnicianData] (
	@Technician NVARCHAR(60)
	,@JobStatus INT
	)
AS
BEGIN
	IF @JobStatus <> 3 -- 3 = Closed Job. It will be fetch from tblWSInvoiceDoc table  
	BEGIN
		SELECT tpd.ProcessDocID
			,tpd.ServiceableItemCode
			,tpd.DocumentDate
			,ts.ServiceableItemDescription
			,ts.ServiceableItemTypeId
			,tpd.*
		FROM tblWSProcessDoc AS tpd
		LEFT OUTER JOIN tblWSServiceableItem AS ts ON ts.ServiceableItemCode = tpd.ServiceableItemCode
		LEFT OUTER JOIN tblSalesPersons ON tpd.Technician = tblSalesPersons.strSalesName
		WHERE Technician = CASE 
				WHEN @Technician = 'ALL'
					THEN Technician
				ELSE @Technician
				END
			AND JobStatusType = CASE 
				WHEN @JobStatus = 0
					THEN JobStatusType
				ELSE @JobStatus
				END
			AND Cleared = 0 --only active jobs will be fetched  
			AND (
				tblSalesPersons.bitInactive IS NULL
				OR tblSalesPersons.bitInactive = 0
				) --only active technicians will be fetched  and  null also
	END
	ELSE
	BEGIN
		SELECT tpd.strInvDocID AS ProcessDocID
			,tpd.ServiceableItemCode
			,tblInvoiceDoc.dteJournalDate AS DocumentDate
			,ts.ServiceableItemDescription
			,ts.ServiceableItemTypeId
			,tpd.*
		FROM tblWSInvoiceDoc AS tpd
		LEFT OUTER JOIN tblWSServiceableItem AS ts ON ts.ServiceableItemCode = tpd.ServiceableItemCode
		INNER JOIN tblInvoiceDoc ON tpd.strInvDocID = tblInvoiceDoc.strInvDocID
		LEFT OUTER JOIN tblSalesPersons ON tpd.Technician = tblSalesPersons.strSalesName
		WHERE Technician = CASE 
				WHEN @Technician = 'ALL'
					THEN Technician
				ELSE @Technician
				END
			AND JobStatusType = CASE 
				WHEN @JobStatus = 0
					THEN JobStatusType
				ELSE @JobStatus
				END
			--AND Cleared = 0                     --only active jobs will be fetched  
			AND (
				tblSalesPersons.bitInactive IS NULL
				OR tblSalesPersons.bitInactive = 0
				) --only active technicians will be fetched   and  null also
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetSellFromStock]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


/*********** End [GetOrderDocDADTForLoadSO] ***********/

/*********** Start [GetSellFromStock] ***********/
CREATE PROCEDURE [dbo].[GetSellFromStock]
(
	@PartNumber AS VARCHAR(50)
)
AS
BEGIN
	SELECT ISNULL(decSellFromStock,0) AS SellFromStock FROM tblInv WHERE strPartNumber = @PartNumber
END

GO
/****** Object:  StoredProcedure [dbo].[GetSendCustomerPriceListReportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetSendCustomerPriceListReportData] @CustomerName AS NVARCHAR(50) = NULL
	,@Pricelist AS NVARCHAR(20) = NULL
	,@UidPriceBasedID AS NVARCHAR(max) = NULL
	,@IsCheckedIncludeZeroPrices AS BIT = 0
AS
BEGIN
	DECLARE @SQLQuery NVARCHAR(max) = 'SELECT distinct tblInv.strPartNumber AS PartNumber ,tblInv.strDesc AS Description ,tblInv.strCategory AS Category ,tblInvPrice.decSelling AS Selling ,
	                                   tblInv.strSellUnit AS SellUnit ,ISNULL(( SELECT Top 1 decDiscount FROM tblDiscountMatrix 
									   INNER JOIN tblCustomers ON tblDiscountMatrix.strCustCategory = tblCustomers.strCustCategory 
									   WHERE tblCustomers.strCustName = ''' + @CustomerName + ''' AND tblDiscountMatrix.strInvCategory = tblInv.strCategory ), 0) AS Discount ,
									   tblInv.strSellStockUnit AS SellStockUnit ,CASE WHEN ISNULL(tblInvUOMs.strConversionType, ''Multiply'') = ''Multiply'' THEN tblInvPrice.decSelling / ISNULL(CASE strConversionType WHEN ''Multiply'' 
									   THEN decConversionFactor ELSE 1 / decConversionFactor END, tblInv.decSellFromStock) ELSE tblInvPrice.decSelling * ISNULL(CASE strConversionType WHEN ''Multiply'' THEN decConversionFactor ELSE 1 / decConversionFactor END, tblInv.decSellFromStock) END AS PriceStockUnit FROM tblInv INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber AND tblInvPrice.uidPriceBasedID = ''' + @UidPriceBasedID + ''' LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit AND tblInvUOMs.bitInactive = 0 WHERE (tblInvPrice.strPricelist = ''' + @Pricelist + ''') AND (tblInv.intType <> 5) AND (tblInv.bitInactive = 0)';

	IF (@IsCheckedIncludeZeroPrices = 0)
	BEGIN
		SET @SQLQuery = @SQLQuery + 'AND (tblInvPrice.decSelling <> 0)';
	END

	SET @SQLQuery = @SQLQuery + 'ORDER BY tblInv.strPartNumber';

	EXEC (@SQLQuery);
END
GO
/****** Object:  StoredProcedure [dbo].[GetSerialInfo]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-----------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetSerialInfo]
As
Begin 
SELECT 
tblInv.strPartNumber as PartNumber,
tblInv.bitInvSerialType as IsSerialType, 
ISNULL(tblInvSerialTypes.bitMethod,0) as IsMethod, 
ISNULL(tblInvSerialTypes.intMin,0) as MinCharacter, 
ISNULL(tblInvSerialTypes.intMax,0) as MaxCharacter, 
ISNULL(tblInvSerialTypes.intFormat,0) as [SerialFormat], 
ISNULL(tblInvSerialTypes.intType,0) as [SerialType], 
ISNULL(tblInvSerialTypes.bitTrackExpiryDate,0) as IsTrackExpiryDate, 
ISNULL(tblInvSerialTypes.intExpiryDateAuthGRV,0) as ExpiryDateAuthGRV,  
ISNULL(tblInvSerialTypes.strInvSerialType,'') as SerialTypeString, 
ISNULL(tblInvSerialTypes.strDimProCode,'') as DimProCode,
ISNULL(tblInvSerialTypes.bitAutoCreateLotNumber,0) as IsAutoCreateLotNumber,
ISNULL(tblInvSerialTypes.intNextLotNumber, 1) AS NextLotNumber
FROM tblInv 
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 

End
GO
/****** Object:  StoredProcedure [dbo].[GetSerialLotTypesForPartNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetSerialLotTypesForPartNumber]
(
	@PartNumber nvarchar(30),
	@BarCode nvarchar(30)
)
AS
BEGIN
	SELECT tblInv.bitInvSerialType as IsSerailType,
	       ISNULL(tblInvSerialTypes.bitMethod,0) as IsMethod
	FROM tblInv
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE (tblInv.strPartNumber = @PartNumber
	       OR tblInv.strBarCode = @BarCode
	       OR tblInv.strBarCode2 = @BarCode)
	  AND tblInv.intType = 1  --for inventory only may be
	  AND tblInv.bitInactive = 0
END
GO
/****** Object:  StoredProcedure [dbo].[GetSerialNumbersAlreadyExists]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetSerialNumbersAlreadyExists]
(
	@IsPosted AS BIT,
	@IsInvTransferOut AS BIT,
	@DocNumber As nvarchar(50),
	@LineNumber As int,
	@Location AS NVARCHAR(10),
	@PartNumber AS NVARCHAR(50),
	@SerialNumber AS NVARCHAR(100),
	@BinId as bigint = 0,
	@IsInventoryAdjIn AS BIT = 0,
	@IsGRV AS BIT = 0,
	@IsInventoryStockIn AS BIT = 0
)
AS
BEGIN
	IF @IsPosted = 1
	BEGIN
		SELECT TOP 1 strDocID AS DocNumber, intStatus AS [Status]
		FROM tblSerialNumberTracking 
		WHERE strPartNumber = @PartNumber AND strSerialNumber = @SerialNumber AND  (@BinId=0 OR lngBinId = @BinId) AND  NOT (strDocID = @DocNumber AND intLineNo = @LineNumber) 
		ORDER BY lngID DESC
	END
	ELSE IF @IsInvTransferOut = 1
	BEGIN
		SELECT strDocID AS DocNumber, intStatus AS [Status], strLocName AS LocName, lngBinId AS BinId
		FROM tblInvSerialExt 
		WHERE strPartNumber = @PartNumber AND strSerialNumber = @SerialNumber AND strLocName = @Location And (@BinId=0 OR lngBinId = @BinId )
	END
	ELSE IF @IsInventoryAdjIn = 1 OR @IsGRV = 1
	BEGIN
		SELECT  strDocID AS DocNumber, intStatus AS [Status], strLocName AS LocName, lngBinId AS BinId
		 FROM tblInvSerialExt WHERE strPartNumber = @PartNumber AND strSerialNumber = @SerialNumber
	END
	ELSE IF @IsInventoryStockIn = 1
	BEGIN
		SELECT  strDocID AS DocNumber, intStatus AS [Status], strLocName AS LocName, lngBinId AS BinId
		 FROM tblInvSerialExt WHERE strPartNumber = @PartNumber AND strSerialNumber = @SerialNumber AND intStatus <> 1
	END
	ELSE
	BEGIN
		SELECT strDocID AS DocNumber, intStatus AS [Status], strLocName AS LocName, lngBinId AS BinId
		FROM tblInvSerialExt 
		WHERE strPartNumber = @PartNumber AND strSerialNumber = @SerialNumber And (@BinId=0 OR lngBinId = @BinId )
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetSerialNumerData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InvBinExt_Delete] ***********/

/*********** Start [GetSerialNumerData] ***********/
CREATE PROCEDURE [dbo].[GetSerialNumerData]
(
	@SerialNumberType AS INT
)
AS
BEGIN	
	SELECT tblSerialNumberTracking.strPartNumber AS 'PartNumber'
		,tblInvSerialTypes.intType AS 'Type'
		,tblSerialNumberTracking.strSerialNumber AS 'SerialNumber'
		,MIN(tblSerialNumberTracking.dteUpdatedDate) AS 'UpdatedDate'
		,tblSerialNumberTracking.strLocation AS 'Location'
		,tblSerialNumberTracking.bitExpiryDate AS 'Isexpired'
		,CASE 
			WHEN tblSerialNumberTracking.bitExpiryDate = 1
				THEN MAX(tblSerialNumberTracking.dteExpiryDate)
			ELSE NULL
			END AS 'ExpiryDate'
		,CASE 
			WHEN tblInvSerialTypes.intType = 0
				THEN 1
			ELSE ISNULL((
						SELECT SUM(CASE 
									WHEN SNT.intStatus = 2
										THEN SNT.decQty * - 1
									ELSE SNT.decQty
									END)
						FROM tblSerialNumberTracking SNT
						WHERE SNT.strPartNumber = tblSerialNumberTracking.strPartNumber
							AND SNT.strSerialNumber = tblSerialNumberTracking.strSerialNumber
						), 0)
			END AS 'Qty'
		,(
			SELECT strBinCode
			FROM tblInvLocBin
			WHERE lngid = tblSerialNumberTracking.lngBinID
			) AS 'BinCode'
	FROM tblSerialNumberTracking
	INNER JOIN tblInv ON tblSerialNumberTracking.strPartNumber = tblInv.strPartNumber
	INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblInvSerialTypes.bitMethod = 1
		AND 
		(tblInvSerialTypes.intType like CASE WHEN @SerialNumberType = 2 THEN tblInvSerialTypes.intType
										   ELSE @SerialNumberType END)
	GROUP BY tblSerialNumberTracking.strPartNumber
		,tblInvSerialTypes.intType
		,tblSerialNumberTracking.strSerialNumber
		,tblSerialNumberTracking.strLocation
		,tblSerialNumberTracking.bitExpiryDate
		,tblSerialNumberTracking.lngBinID
	ORDER BY tblSerialNumberTracking.strPartNumber
		,tblSerialNumberTracking.strSerialNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetServiceableItemFromCode]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetServiceableItemFromCode]    
(    
 @ServiceableItemCode as NVARCHAR(50)    
)    
AS    
BEGIN    
 Select    
   typeTable.ServiceableItemTypeCode     
  ,ServiceableItemCode    
  ,ServiceableItemName    
  ,itemTable.ServiceableItemTypeId    
  ,ServiceableItemDescription    
  ,OwnerCode    
  ,CustomerCode    
  ,itemTable.OwnerDetails    
  ,dbo.funGetAddressString(CustomerCode) as CustomerDetails    
  ,IsInternalAsset    
  ,AssetNumber    
  ,AssetServiceCostAccount    
  ,LastServiceDate    
  ,NextServiceDate    
  ,itemTable.IsInactive    
  ,itemTable.CreatedDate    
  ,itemTable.UpdatedDate    
  ,itemTable.CreatedBy    
  ,itemTable.UpdatedBy    
  ,tblAssets.strAssetDesc as AssetDesc    
  ,tblAccounts.strDesc as AccountDescription    
  ,itemTable.ServiceableItemImage    
  ,itemTable.AddInfo  
  ,itemTable.ShipTo
 from     
  tblWSServiceableItem as itemTable    
 INNER JOIN tblWSServiceableItemType as typeTable ON typeTable.ServiceableItemTypeId = itemTable.ServiceableItemTypeId    
 left JOIN tblAssets on tblAssets.strAssetCode = itemTable.AssetNumber    
 left JOIN tblAccounts on tblAccounts.intGLNumber = itemTable.AssetServiceCostAccount    
 WHERE     
  ServiceableItemCode = @ServiceableItemCode      
    
END 
GO
/****** Object:  StoredProcedure [dbo].[GetServiceableItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetServiceableItems]  
(  
 @IsAllItems AS BIT,  
 @SearchText As NVARCHAR(max) = ''  
)  
AS  
BEGIN  
 IF @IsAllItems = 1  
  SELECT   
   distinct tblWSServiceableItem.ServiceableItemCode  
   ,typeTable.ServiceableItemTypeCode
	,typeTable.ServiceableItemTypeDescription
   ,ServiceableItemName  
   ,tblWSServiceableItem.ServiceableItemTypeId  
   ,ServiceableItemDescription  
   ,OwnerCode  
   ,CustomerCode     
   ,tblWSServiceableItem.OwnerDetails  
   ,dbo.funGetAddressString(CustomerCode) as CustomerDetails  
   ,IsInternalAsset  
   ,AssetNumber  
   ,AssetServiceCostAccount  
   ,LastServiceDate  
   ,NextServiceDate  
   ,tblWSServiceableItem.IsInactive  
   ,tblWSServiceableItem.CreatedDate  
   ,tblWSServiceableItem.UpdatedDate  
   ,tblWSServiceableItem.CreatedBy  
   ,tblWSServiceableItem.UpdatedBy   
   ,tblWSServiceableItem.ShipTo  
   ,tblWSServiceableItem.AddInfo    
  FROM   
   tblWSServiceableItem  
   Inner Join tblWSServiceableItemType as typeTable ON tblWSServiceableItem.ServiceableItemTypeId = typeTable.ServiceableItemTypeId  
   LEft Join tblWSServiceableItemOptFieldDetails on tblWSServiceableItemOptFieldDetails.ServiceableItemCode = tblWSServiceableItem.ServiceableItemCode  --get serviceable item from User defined value  
  WHERE                       --get serviceable item from User defined value  
    ServiceableItemName like '%'+@SearchText+'%' OR   
    ServiceableItemDescription like '%'+@SearchText+'%' OR   
    OwnerCode like '%'+@SearchText+'%' OR   
    CustomerCode like '%'+@SearchText+'%' OR   
    tblWSServiceableItemOptFieldDetails.Value like '%'+@SearchText+'%'  
  
 ELSE  
  SELECT   
   distinct tblWSServiceableItem.ServiceableItemCode  
   ,typeTable.ServiceableItemTypeCode  
   ,typeTable.ServiceableItemTypeDescription
   ,ServiceableItemName  
   ,tblWSServiceableItem.ServiceableItemTypeId  
   ,ServiceableItemDescription  
   ,OwnerCode  
   ,CustomerCode  
   ,tblWSServiceableItem.OwnerDetails  
   ,dbo.funGetAddressString(CustomerCode) as CustomerDetails  
   ,IsInternalAsset  
   ,AssetNumber  
   ,AssetServiceCostAccount  
   ,LastServiceDate  
   ,NextServiceDate  
   ,tblWSServiceableItem.IsInactive  
   ,tblWSServiceableItem.CreatedDate  
   ,tblWSServiceableItem.UpdatedDate  
   ,tblWSServiceableItem.CreatedBy  
   ,tblWSServiceableItem.UpdatedBy     
   ,tblWSServiceableItem.ShipTo  
   ,tblWSServiceableItem.AddInfo    
  FROM   
   tblWSServiceableItem  
   Inner Join tblWSServiceableItemType as typeTable ON tblWSServiceableItem.ServiceableItemTypeId = typeTable.ServiceableItemTypeId  
   Left Join tblWSServiceableItemOptFieldDetails on tblWSServiceableItemOptFieldDetails.ServiceableItemCode = tblWSServiceableItem.ServiceableItemCode --get serviceable item from User defined value  
   WHERE tblWSServiceableItem.IsInactive = 0  
   AND                    --get serviceable item from User defined value  
   (  
    ServiceableItemName like '%'+@SearchText+'%' OR   
    ServiceableItemDescription like '%'+@SearchText+'%' OR   
    OwnerCode like '%'+@SearchText+'%' OR   
    CustomerCode like '%'+@SearchText+'%' OR   
    tblWSServiceableItemOptFieldDetails.Value like '%'+@SearchText+'%'  
  
   )  
END
GO
/****** Object:  StoredProcedure [dbo].[GetServiceSetsAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetServiceSetsAccountsCY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (  
     tblAccounts.bitIsLinkedAccount = 0  
     OR tblAccounts.bitLinkSalesDisc = 1  
     OR tblAccounts.bitLinkPurDisc = 1  
     OR tblAccounts.bitLinkAssCosts = 1  
     OR tblAccounts.bitLinkAdjWriteOff = 1  
     OR tblAccounts.bitLinkExc = 1  
     OR tblAccounts.bitDefBank = 1  
     )  
    AND (  
     tblAccounts.intGLNumber NOT IN (  
      SELECT intGLAsset  
      FROM tblAccountSets  
      )  
     )  
    AND (  
     tblAccounts.intGLNumber NOT IN (  
      SELECT intPurchAcct  
      FROM tblTaxDef  
      )  
     )  
    AND (  
     tblAccounts.intGLNumber NOT IN (  
      SELECT intSalesAcct  
      FROM tblTaxDef  
      )  
     )  
    AND (tblAccounts.bitInactive = 0)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (  
     tblAccounts.bitIsLinkedAccount = 0  
     OR tblAccounts.bitLinkSalesDisc = 1  
     OR tblAccounts.bitLinkPurDisc = 1  
     OR tblAccounts.bitLinkAssCosts = 1  
     OR tblAccounts.bitLinkAdjWriteOff = 1  
     OR tblAccounts.bitLinkExc = 1  
     OR tblAccounts.bitDefBank = 1  
     )  
    AND (  
     tblAccounts.intGLNumber NOT IN (  
      SELECT intGLAsset  
      FROM tblAccountSets  
      )  
     )  
    AND (  
     tblAccounts.intGLNumber NOT IN (  
      SELECT intPurchAcct  
      FROM tblTaxDef  
      )  
     )  
    AND (  
     tblAccounts.intGLNumber NOT IN (  
      SELECT intSalesAcct  
      FROM tblTaxDef  
      )  
     )  
    AND (tblAccounts.bitInactive = 0)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (  
     tblAccounts.bitIsLinkedAccount = 0  
     OR tblAccounts.bitLinkSalesDisc = 1  
     OR tblAccounts.bitLinkPurDisc = 1  
     OR tblAccounts.bitLinkAssCosts = 1  
     OR tblAccounts.bitLinkAdjWriteOff = 1  
     OR tblAccounts.bitLinkExc = 1  
     OR tblAccounts.bitDefBank = 1  
     )  
    AND (  
     tblAccounts.intGLNumber NOT IN (  
      SELECT intGLAsset  
      FROM tblAccountSets  
      )  
     )  
    AND (  
     tblAccounts.intGLNumber NOT IN (
		SELECT intPurchAcct  
		FROM tblTaxDef  
      )  
     )  
    AND (  
     tblAccounts.intGLNumber NOT IN (  
      SELECT intSalesAcct  
      FROM tblTaxDef  
      )  
     )  
    AND (tblAccounts.bitInactive = 0)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (  
     tblAccounts.bitIsLinkedAccount = 0  
     OR tblAccounts.bitLinkSalesDisc = 1  
     OR tblAccounts.bitLinkPurDisc = 1  
     OR tblAccounts.bitLinkAssCosts = 1  
     OR tblAccounts.bitLinkAdjWriteOff = 1  
     OR tblAccounts.bitLinkExc = 1  
     OR tblAccounts.bitDefBank = 1  
     )  
    AND (  
     tblAccounts.intGLNumber NOT IN (  
      SELECT intGLAsset  
      FROM tblAccountSets  
      )  
     )  
    AND (  
     tblAccounts.intGLNumber NOT IN (  
      SELECT intPurchAcct  
      FROM tblTaxDef  
      )  
     )  
    AND (  
     tblAccounts.intGLNumber NOT IN (  
      SELECT intSalesAcct  
      FROM tblTaxDef  
      )  
     )  
    AND (tblAccounts.bitInactive = 0)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
  
 RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetServiceSetsAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetServiceSetsAccountsLY]  
(  
@bitGLAccountAccess bit,  
@bitShowAllCurrency bit,  
@strUserName nvarchar(40),  
@strCurrency nvarchar(6),  
@strHomeCurrency nvarchar(6)  
)  
AS  
BEGIN  
  
if @bitShowAllCurrency = 1  
BEGIN  
 if @bitGLAccountAccess = 1  
 BEGIN  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
  ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  FROM tblAccountsLY  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE (tblAccountsLY.bitIsLinkedAccount = 0 OR tblAccountsLY.bitLinkSalesDisc = 1 OR tblAccountsLY.bitLinkPurDisc = 1 OR tblAccountsLY.bitLinkAssCosts = 1 OR tblAccountsLY.bitLinkAdjWriteOff = 1 OR tblAccountsLY.bitLinkExc = 1 OR tblAccountsLY.bitDefBank = 1)   
  AND (tblAccountsLY.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountsets))   
  AND (tblAccountsLY.intGLNumber NOT IN (SELECT intPurchAcct FROM tblTaxDef))   
  AND (tblAccountsLY.intGLNumber NOT IN (SELECT intSalesAcct FROM tblTaxDef))   
  AND (tblAccountsLY.bitInactive = 0)   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)  
  ORDER BY intAccType, intGLNumber  
 END  
 ELSE  
 BEGIN  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
  ISNULL(tblInv.strPartNumber, '') JournalCode,   
  ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) AccountSecCount,   
  ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccountsLY  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE (tblAccountsLY.bitIsLinkedAccount = 0 OR tblAccountsLY.bitLinkSalesDisc = 1 OR tblAccountsLY.bitLinkPurDisc = 1 OR tblAccountsLY.bitLinkAssCosts = 1 OR tblAccountsLY.bitLinkAdjWriteOff = 1 OR tblAccountsLY.bitLinkExc = 1 OR tblAccountsLY.bitDefBank = 1)   
  AND (tblAccountsLY.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountsets))   
  AND (tblAccountsLY.intGLNumber NOT IN (SELECT intPurchAcct FROM tblTaxDef))   
  AND (tblAccountsLY.intGLNumber NOT IN (SELECT intSalesAcct FROM tblTaxDef))   
  AND (tblAccountsLY.bitInactive = 0)   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)  
  ORDER BY intAccType, tblAccountsLY.intGLNumber  
 END  
END  
ELSE  
BEGIN  
 if @bitGLAccountAccess = 1  
 BEGIN  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
  ISNULL(tblInv.strPartNumber, '') JournalCode, 0 AccountSecCount, '' UserName  
  FROM tblAccountsLY  (NOLOCK)  
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE (tblAccountsLY.bitIsLinkedAccount = 0 OR tblAccountsLY.bitLinkSalesDisc = 1 OR tblAccountsLY.bitLinkPurDisc = 1 OR tblAccountsLY.bitLinkAssCosts = 1 OR tblAccountsLY.bitLinkAdjWriteOff = 1 OR tblAccountsLY.bitLinkExc = 1 OR tblAccountsLY.bitDefBank = 1)   
  AND (tblAccountsLY.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountsets))   
  AND (tblAccountsLY.intGLNumber NOT IN (SELECT intPurchAcct FROM tblTaxDef))   
  AND (tblAccountsLY.intGLNumber NOT IN (SELECT intSalesAcct FROM tblTaxDef))   
  AND (tblAccountsLY.bitInactive = 0)   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  ORDER BY intAccType, intGLNumber  
 END  
 ELSE  
 BEGIN  
  SELECT tblAccountsLY.intGLNumber GLNumber, tblAccountsLY.intAccType AccountType, tblAccountsLY.strDesc 'Description', tblAccountsLY.intAccClass AccountClass,   
  ISNULL(tblInv.strPartNumber, '') JournalCode,   
  ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec (NOLOCK) WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) AccountSecCount,   
  ISNULL(tblAccountsSec.strUserName,'') UserName  
  FROM tblAccountsLY  (NOLOCK)  
  LEFT JOIN tblAccountsSec (NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @strUserName   
  LEFT OUTER JOIN tblInv (NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber   
  WHERE (tblAccountsLY.bitIsLinkedAccount = 0 OR tblAccountsLY.bitLinkSalesDisc = 1 OR tblAccountsLY.bitLinkPurDisc = 1 OR tblAccountsLY.bitLinkAssCosts = 1 OR tblAccountsLY.bitLinkAdjWriteOff = 1 OR tblAccountsLY.bitLinkExc = 1 OR tblAccountsLY.bitDefBank = 1)   
  AND (tblAccountsLY.intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountsets))   
  AND (tblAccountsLY.intGLNumber NOT IN (SELECT intPurchAcct FROM tblTaxDef))   
  AND (tblAccountsLY.intGLNumber NOT IN (SELECT intSalesAcct FROM tblTaxDef))   
  AND (tblAccountsLY.bitInactive = 0)   
  AND (tblAccountsLY.intGroupCode = 1 OR tblAccountsLY.intGroupCode = 2)  
  AND (strCurrency = @strCurrency OR strCurrency = @strHomeCurrency)  
  ORDER BY intAccType, tblAccountsLY.intGLNumber  
 END  
END  
  
RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetSessionFuture]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetAllCurrencies] ***********/

/*********** Start [GetSessionFuture] ***********/
CREATE Procedure [dbo].[GetSessionFuture]
as
select top 1  IsNull(bitSessionFuture,0) as SessionFuture  from tblCoOpts
GO
/****** Object:  StoredProcedure [dbo].[GetShipmentDataReport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashGetVendorCategoryList]*****************************/

/*************Start [dbo].[GetShipmentDataReport] *************/

CREATE PROCEDURE [dbo].[GetShipmentDataReport]
(
	@DocNumber AS NVARCHAR(200),
	@IsCustomerMultiple AS BIT,
	@CustomerName AS NVARCHAR(200)='',
	@SoldTo AS NVARCHAR(200) ='',
	@ShipTo AS NVARCHAR(200)='',
	@Notes AS NVARCHAR(200)=''
	
)
AS
BEGIN
	IF(@IsCustomerMultiple =1)
	BEGIN
		SELECT strShpDocID
	,dteSystemDate
	,dteJournalDate
	,dteRequired
	,strUserName
	,@CustomerName AS strCustName
	,@SoldTo AS strSoldTo
	,@ShipTo AS strShipTo
	,strReference
	,bitHistoryTrans
	,@Notes AS strNotes
	,strTrackingNo
	,strWayBillNo
	,bitPrinted
	,bitEmailed
	,decTotalValue
	,decVolW
	,decVolH
	,decVolD
	,decCuVol
	,decWeight
	,strType
	,bitCustMultiple
	,ISNULL(strDelRouteCode, '') AS strDelRouteCode
	,ISNULL(strDelVehicleCode, '') AS strVehicleCode
	,ISNULL(strDelDriverCode, '') AS strDelDriverCode
FROM tblShipments
WHERE strShpDocID = @DocNumber
	END
	ELSE
	BEGIN
		SELECT [strShpDocID]
      ,[dteSystemDate]
      ,[dteJournalDate]
      ,[dteRequired]
      ,[strUserName]
      ,[strCustName]
      ,[strSoldTo]
      ,[strShipTo]
      ,[strReference]
      ,[bitHistoryTrans]
      ,[strNotes]
      ,[strTrackingNo]
      ,[strWayBillNo]
      ,[bitPrinted]
      ,[bitEmailed]
      ,[decTotalValue]
      ,[decVolW]
      ,[decVolH]
      ,[decVolD]
      ,[decCuVol]
      ,[decWeight]
      ,[strType]
      ,[bitCustMultiple]
      ,[strDelRouteCode]
      ,[strDelVehicleCode]
      ,[strDelDriverCode]
      ,[decVolumetricWeight]
      ,[decFactor]
      ,[strUnitOfMeasure]
  FROM [dbo].[tblShipments]
  WHERE strShpDocID = @DocNumber
    END
END
GO
/****** Object:  StoredProcedure [dbo].[GetShipmentPickerData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------'
CREATE PROCEDURE [dbo].[GetShipmentPickerData] (
	@ID NVARCHAR(100)
	,@IsCustomer BIT
	,@StartDate SMALLDATETIME
	,@EndDate SMALLDATETIME
	,@IsShipmentsFromSO BIT = 0
	,@IsAdjusting BIT = 0
	,@AdjustingDocnumber NVARCHAR(100) = NULL
	,@UserName NVARCHAR(40)
	,@IsBPToolsMode BIT
	)
AS
BEGIN
	IF (@IsAdjusting = 0)
	BEGIN
		IF (@IsShipmentsFromSO = 0)
		BEGIN
			IF (@IsCustomer = 1)
			BEGIN
				SELECT tblInvoiceDoc.strCustName AS CustomerName
					,tblInvoiceDoc.strInvDocID AS InvoiceID
					,dbo.fnRemoveAllSpaces(tblInvoiceDoc.strShipTo) AS ShipTo
					,MASTERTABLE.intLineNo AS [LineNo]
					,MASTERTABLE.strPartNumber AS PartNumber
					,MASTERTABLE.strPartDesc AS PartDescription
					,MASTERTABLE.decQty AS Quantity
					,(
						SELECT ISNULL(SUM(decShpQty), 0)
						FROM tblShipmentsDT
						WHERE strInvDocID = tblInvoiceDoc.strInvDocID
							AND intLineNo = MASTERTABLE.intLineNo
						) AS QuantityToShip
					,IsNULL((
							SELECT tblCustomerLoc.strDelRouteCode
							FROM tblCustomerLoc
							WHERE strCustName = tblInvoiceDoc.strCustName
								AND strLocName = tblInvoiceDoc.strShipTo
							), '') AS [Route]
				FROM tblInvoiceDoc
				INNER JOIN tblInvoiceDocDT AS MASTERTABLE ON tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID
				--INNER JOIN tblCustomerLoc ON tblInvoiceDoc.strCustName = tblCustomerLoc.strCustName
				INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
				WHERE (
						tblInvoiceDoc.dteJournalDate BETWEEN @StartDate
							AND @EndDate
						)
					AND (tblInvoiceDoc.strCustName = @ID)
					AND (
						MASTERTABLE.intType IN (
							1
							,11
							)
						)
					AND (MASTERTABLE.decQty > 0)
					AND (tblInvoiceDoc.bitHistoryTrans = 0)
					AND (tblInvoiceDoc.bitReserved = 0)
					AND (
						MASTERTABLE.decQty > (
							SELECT ISNULL(SUM(decShpQty), 0)
							FROM tblShipmentsDT
							WHERE strInvDocID = tblInvoiceDoc.strInvDocID
								AND intLineNo = MASTERTABLE.intLineNo
							)
						)
					AND (
						@IsBPToolsMode = 1
						OR strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
				ORDER BY tblInvoiceDoc.strInvDocID
					,MASTERTABLE.intLineNo
			END
			ELSE
			BEGIN
				SELECT tblInvoiceDoc.strCustName AS CustomerName
					,tblInvoiceDoc.strInvDocID AS InvoiceID
					,tblInvoiceDoc.strShipTo AS ShipTo
					,MASTERTABLE.intLineNo AS [LineNo]
					,MASTERTABLE.strPartNumber AS PartNumber
					,MASTERTABLE.strPartDesc AS PartDescription
					,MASTERTABLE.decQty AS Quantity
					,(
						SELECT ISNULL(SUM(decShpQty), 0)
						FROM tblShipmentsDT
						WHERE strInvDocID = tblInvoiceDoc.strInvDocID
							AND intLineNo = MASTERTABLE.intLineNo
						) AS QuantityToShip
					,IsNULL(tblCustomerLoc.strDelRouteCode, '') AS [Route]
				FROM tblInvoiceDoc
				INNER JOIN tblInvoiceDocDT AS MASTERTABLE ON tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID
				INNER JOIN tblCustomerLoc ON tblInvoiceDoc.strCustName = tblCustomerLoc.strCustName
				INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
				WHERE (
						tblInvoiceDoc.dteJournalDate BETWEEN @StartDate
							AND @EndDate
						)
					AND (
						tblCustomerLoc.strDelRouteCode IN (
							SELECT *
							FROM fnSplitStringAsTable(@ID, ',')
							)
						--OR tblCustomerLoc.strDelRouteCode IS NULL
						)
					AND (
						MASTERTABLE.intType IN (
							1
							,11
							)
						)
					AND (MASTERTABLE.decQty > 0)
					AND (tblInvoiceDoc.bitHistoryTrans = 0)
					AND (tblInvoiceDoc.bitReserved = 0)
					AND (
						MASTERTABLE.decQty > (
							SELECT ISNULL(SUM(decShpQty), 0)
							FROM tblShipmentsDT
							WHERE strInvDocID = tblInvoiceDoc.strInvDocID
								AND intLineNo = MASTERTABLE.intLineNo
							)
						)
					AND (
						@IsBPToolsMode = 1
						OR strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
				ORDER BY tblInvoiceDoc.strInvDocID
					,MASTERTABLE.intLineNo
			END
		END
		ELSE
		BEGIN
			IF (@IsCustomer = 1)
			BEGIN
				SELECT tblOrderDoc.strCustName AS CustomerName
					,tblOrderDoc.strOrdDocID AS InvoiceID
					,dbo.fnRemoveAllSpaces(tblOrderDoc.strShipTo) AS ShipTo
					,MASTERTABLE.intLineNo AS [LineNo]
					,MASTERTABLE.strPartNumber AS PartNumber
					,MASTERTABLE.strPartDesc AS PartDescription
					,MASTERTABLE.decQty AS Quantity
					,(
						SELECT ISNULL(SUM(decShpQty), 0)
						FROM tblShipmentsDT
						WHERE strInvDocID = tblOrderDoc.strOrdDocID
							AND intLineNo = MASTERTABLE.intLineNo
						) AS QuantityToShip
					,IsNULL((
							SELECT tblCustomerLoc.strDelRouteCode
							FROM tblCustomerLoc
							WHERE strCustName = tblOrderDoc.strCustName
								AND strLocName = tblOrderDoc.strShipTo
							), '') AS [Route]
				FROM tblOrderDoc
				INNER JOIN tblOrderDocDT AS MASTERTABLE ON tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID
				INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
				--INNER JOIN tblCustomerLoc ON tblOrderDoc.strCustName = tblCustomerLoc.strCustName
				WHERE (
						tblOrderDoc.dteJournalDate BETWEEN @StartDate
							AND @EndDate
						)
					AND (tblOrderDoc.strCustName = @ID)
					AND (
						MASTERTABLE.intType IN (
							1
							,11
							)
						)
					AND (MASTERTABLE.decQty > 0)
					AND (tblOrderDoc.intDocType = 1)
					AND (
						MASTERTABLE.decQty > (
							SELECT ISNULL(SUM(decShpQty), 0)
							FROM tblShipmentsDT
							WHERE strInvDocID = tblOrderDoc.strOrdDocID
								AND intLineNo = MASTERTABLE.intLineNo
							)
						)
					AND (
						@IsBPToolsMode = 1
						OR strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
				ORDER BY tblOrderDoc.strOrdDocID
					,MASTERTABLE.intLineNo
			END
			ELSE
			BEGIN
				SELECT tblOrderDoc.strCustName AS CustomerName
					,tblOrderDoc.strOrdDocID AS InvoiceID
					,tblOrderDoc.strShipTo AS ShipTo
					,MASTERTABLE.intLineNo AS [LineNo]
					,MASTERTABLE.strPartNumber AS PartNumber
					,MASTERTABLE.strPartDesc AS PartDescription
					,MASTERTABLE.decQty AS Quantity
					,(
						SELECT ISNULL(SUM(decShpQty), 0)
						FROM tblShipmentsDT
						WHERE strInvDocID = tblOrderDoc.strOrdDocID
							AND intLineNo = MASTERTABLE.intLineNo
						) AS QuantityToShip
					,IsNULL(tblCustomerLoc.strDelRouteCode, '') AS [Route]
				FROM tblOrderDoc
				INNER JOIN tblOrderDocDT AS MASTERTABLE ON tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID
				INNER JOIN tblCustomerLoc ON tblOrderDoc.strCustName = tblCustomerLoc.strCustName
				INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
				WHERE (
						tblOrderDoc.dteJournalDate BETWEEN @StartDate
							AND @EndDate
						)
					AND (
						tblCustomerLoc.strDelRouteCode IN (
							SELECT *
							FROM fnSplitStringAsTable(@ID, ',')
							)
						--OR tblCustomerLoc.strDelRouteCode IS NULL
						)
					AND (
						MASTERTABLE.intType IN (
							1
							,11
							)
						)
					AND (MASTERTABLE.decQty > 0)
					AND (tblOrderDoc.intDocType = 1)
					AND (
						MASTERTABLE.decQty > (
							SELECT ISNULL(SUM(decShpQty), 0)
							FROM tblShipmentsDT
							WHERE strInvDocID = tblOrderDoc.strOrdDocID
								AND intLineNo = MASTERTABLE.intLineNo
							)
						)
					AND (
						@IsBPToolsMode = 1
						OR strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
				ORDER BY tblOrderDoc.strOrdDocID
					,MASTERTABLE.intLineNo
			END
		END
	END
	ELSE
	BEGIN
		IF (@IsShipmentsFromSO = 0)
		BEGIN
			IF (@IsCustomer = 1)
			BEGIN
				SELECT tblInvoiceDoc.strCustName AS CustomerName
					,tblInvoiceDoc.strInvDocID AS InvoiceID
					,dbo.fnRemoveAllSpaces(tblInvoiceDoc.strShipTo) AS ShipTo
					,MASTERTABLE.intLineNo AS [LineNo]
					,MASTERTABLE.strPartNumber AS PartNumber
					,MASTERTABLE.strPartDesc AS PartDescription
					,MASTERTABLE.decQty AS Quantity
					,(
						SELECT ISNULL(SUM(decShpQty), 0)
						FROM tblShipmentsDT
						WHERE strInvDocID = tblInvoiceDoc.strInvDocID
							AND intLineNo = MASTERTABLE.intLineNo
							AND tblInvoiceDoc.strInvDocID NOT IN (
								SELECT strInvDocID
								FROM tblShipmentsDT
								WHERE strShpDocID = @AdjustingDocnumber
								)
						) AS QuantityToShip
					,IsNULL((
							SELECT tblCustomerLoc.strDelRouteCode
							FROM tblCustomerLoc
							WHERE strCustName = tblInvoiceDoc.strCustName
								AND strLocName = tblInvoiceDoc.strShipTo
							), '') AS [Route]
				FROM tblInvoiceDoc
				INNER JOIN tblInvoiceDocDT AS MASTERTABLE ON tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID
				INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
				--INNER JOIN tblCustomerLoc ON tblInvoiceDoc.strCustName = tblCustomerLoc.strCustName
				WHERE (
						tblInvoiceDoc.dteJournalDate BETWEEN @StartDate
							AND @EndDate
						)
					AND (tblInvoiceDoc.strCustName = @ID)
					AND (
						MASTERTABLE.intType IN (
							1
							,11
							)
						)
					AND (MASTERTABLE.decQty > 0)
					AND (tblInvoiceDoc.bitHistoryTrans = 0)
					AND (tblInvoiceDoc.bitReserved = 0)
					AND (
						MASTERTABLE.decQty > (
							SELECT ISNULL(SUM(decShpQty), 0)
							FROM tblShipmentsDT
							WHERE strInvDocID = tblInvoiceDoc.strInvDocID
								AND intLineNo = MASTERTABLE.intLineNo
							)
						OR tblInvoiceDoc.strInvDocID IN (
							SELECT strInvDocID
							FROM tblShipmentsDT
							WHERE strShpDocID = @AdjustingDocnumber
								AND intLineNo = MASTERTABLE.intLineNo
							)
						)
					AND (
						@IsBPToolsMode = 1
						OR strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
				ORDER BY tblInvoiceDoc.strInvDocID
					,MASTERTABLE.intLineNo
			END
			ELSE
			BEGIN
				SELECT tblInvoiceDoc.strCustName AS CustomerName
					,tblInvoiceDoc.strInvDocID AS InvoiceID
					,tblInvoiceDoc.strShipTo AS ShipTo
					,MASTERTABLE.intLineNo AS [LineNo]
					,MASTERTABLE.strPartNumber AS PartNumber
					,MASTERTABLE.strPartDesc AS PartDescription
					,MASTERTABLE.decQty AS Quantity
					,(
						SELECT ISNULL(SUM(decShpQty), 0)
						FROM tblShipmentsDT
						WHERE strInvDocID = tblInvoiceDoc.strInvDocID
							AND intLineNo = MASTERTABLE.intLineNo
							AND tblInvoiceDoc.strInvDocID NOT IN (
								SELECT strInvDocID
								FROM tblShipmentsDT
								WHERE strShpDocID = @AdjustingDocnumber
								)
						) AS QuantityToShip
					,IsNULL(tblCustomerLoc.strDelRouteCode, '') AS [Route]
				FROM tblInvoiceDoc
				INNER JOIN tblInvoiceDocDT AS MASTERTABLE ON tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID
				INNER JOIN tblCustomerLoc ON tblInvoiceDoc.strCustName = tblCustomerLoc.strCustName
				INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
				WHERE (
						tblInvoiceDoc.dteJournalDate BETWEEN @StartDate
							AND @EndDate
						)
					AND (
						tblCustomerLoc.strDelRouteCode IN (
							SELECT *
							FROM fnSplitStringAsTable(@ID, ',')
							)
						--OR tblCustomerLoc.strDelRouteCode IS NULL
						)
					AND (
						MASTERTABLE.intType IN (
							1
							,11
							)
						)
					AND (MASTERTABLE.decQty > 0)
					AND (tblInvoiceDoc.bitHistoryTrans = 0)
					AND (tblInvoiceDoc.bitReserved = 0)
					AND (
						MASTERTABLE.decQty > (
							SELECT ISNULL(SUM(decShpQty), 0)
							FROM tblShipmentsDT
							WHERE strInvDocID = tblInvoiceDoc.strInvDocID
								AND intLineNo = MASTERTABLE.intLineNo
							)
						OR tblInvoiceDoc.strInvDocID IN (
							SELECT strInvDocID
							FROM tblShipmentsDT
							WHERE strShpDocID = @AdjustingDocnumber
								AND intLineNo = MASTERTABLE.intLineNo
							)
						)
					AND (
						@IsBPToolsMode = 1
						OR strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
				ORDER BY tblInvoiceDoc.strInvDocID
					,MASTERTABLE.intLineNo
			END
		END
		ELSE
		BEGIN
			IF (@IsCustomer = 1)
			BEGIN
				SELECT tblOrderDoc.strCustName AS CustomerName
					,tblOrderDoc.strOrdDocID AS InvoiceID
					,dbo.fnRemoveAllSpaces(tblOrderDoc.strShipTo) AS ShipTo
					,MASTERTABLE.intLineNo AS [LineNo]
					,MASTERTABLE.strPartNumber AS PartNumber
					,MASTERTABLE.strPartDesc AS PartDescription
					,MASTERTABLE.decQty AS Quantity
					,(
						SELECT ISNULL(SUM(decShpQty), 0)
						FROM tblShipmentsDT
						WHERE strInvDocID = tblOrderDoc.strOrdDocID
							AND intLineNo = MASTERTABLE.intLineNo
							AND tblOrderDoc.strOrdDocID NOT IN (
								SELECT strInvDocID
								FROM tblShipmentsDT
								WHERE strShpDocID = @AdjustingDocnumber
								)
						) AS QuantityToShip
					,IsNULL((
							SELECT tblCustomerLoc.strDelRouteCode
							FROM tblCustomerLoc
							WHERE strCustName = tblOrderDoc.strCustName
								AND strLocName = tblOrderDoc.strShipTo
							), '') AS [Route]
				FROM tblOrderDoc
				INNER JOIN tblOrderDocDT AS MASTERTABLE ON tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID
				--INNER JOIN tblCustomerLoc ON tblOrderDoc.strCustName = tblCustomerLoc.strCustName
				INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
				WHERE (
						tblOrderDoc.dteJournalDate BETWEEN @StartDate
							AND @EndDate
						)
					AND (tblOrderDoc.strCustName = @ID)
					AND (
						MASTERTABLE.intType IN (
							1
							,11
							)
						)
					AND (MASTERTABLE.decQty > 0)
					AND (tblOrderDoc.intDocType = 1)
					AND (
						MASTERTABLE.decQty > (
							SELECT ISNULL(SUM(decShpQty), 0)
							FROM tblShipmentsDT
							WHERE strInvDocID = tblOrderDoc.strOrdDocID
								AND intLineNo = MASTERTABLE.intLineNo
							)
						OR tblOrderDoc.strOrdDocID IN (
							SELECT strInvDocID
							FROM tblShipmentsDT
							WHERE strShpDocID = @AdjustingDocnumber
								AND intLineNo = MASTERTABLE.intLineNo
							)
						)
					AND (
						@IsBPToolsMode = 1
						OR strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
				ORDER BY tblOrderDoc.strOrdDocID
					,MASTERTABLE.intLineNo
			END
			ELSE
			BEGIN
				SELECT tblOrderDoc.strCustName AS CustomerName
					,tblOrderDoc.strOrdDocID AS InvoiceID
					,tblOrderDoc.strShipTo AS ShipTo
					,MASTERTABLE.intLineNo AS [LineNo]
					,MASTERTABLE.strPartNumber AS PartNumber
					,MASTERTABLE.strPartDesc AS PartDescription
					,MASTERTABLE.decQty AS Quantity
					,(
						SELECT ISNULL(SUM(decShpQty), 0)
						FROM tblShipmentsDT
						WHERE strInvDocID = tblOrderDoc.strOrdDocID
							AND intLineNo = MASTERTABLE.intLineNo
							AND tblOrderDoc.strOrdDocID NOT IN (
								SELECT strInvDocID
								FROM tblShipmentsDT
								WHERE strShpDocID = @AdjustingDocnumber
								)
						) AS QuantityToShip
					,IsNULL(tblCustomerLoc.strDelRouteCode, '') AS [Route]
				FROM tblOrderDoc
				INNER JOIN tblOrderDocDT AS MASTERTABLE ON tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID
				INNER JOIN tblCustomerLoc ON tblOrderDoc.strCustName = tblCustomerLoc.strCustName
				INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
				WHERE (
						tblOrderDoc.dteJournalDate BETWEEN @StartDate
							AND @EndDate
						)
					AND (
						tblCustomerLoc.strDelRouteCode IN (
							SELECT *
							FROM fnSplitStringAsTable(@ID, ',')
							)
						--OR tblCustomerLoc.strDelRouteCode IS NULL
						)
					AND (
						MASTERTABLE.intType IN (
							1
							,11
							)
						)
					AND (MASTERTABLE.decQty > 0)
					AND (tblOrderDoc.intDocType = 1)
					AND (
						MASTERTABLE.decQty > (
							SELECT ISNULL(SUM(decShpQty), 0)
							FROM tblShipmentsDT
							WHERE strInvDocID = tblOrderDoc.strOrdDocID
								AND intLineNo = MASTERTABLE.intLineNo
							)
						OR tblOrderDoc.strOrdDocID IN (
							SELECT strInvDocID
							FROM tblShipmentsDT
							WHERE strShpDocID = @AdjustingDocnumber
								AND intLineNo = MASTERTABLE.intLineNo
							)
						)
					AND (
						@IsBPToolsMode = 1
						OR strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
				ORDER BY tblOrderDoc.strOrdDocID
					,MASTERTABLE.intLineNo
			END
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetShipmentsAuditTrailData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdatePrintBatch] ***********/

/*********** Start [GetShipmentsAuditTrailData] ***********/
CREATE PROCEDURE [dbo].[GetShipmentsAuditTrailData]
(
	@IsInvoice AS BIT,
	@IsDisplayAllChecked AS BIT,
	@FromDate AS DATETIME,
	@ToDate AS DATETIME,
	@IsShipmentsAuditTrail AS BIT,
	@IsAvailableDelMethodCode as BIT,
	@DelMethodDesc AS NVARCHAR(50)
)
AS
BEGIN
	DECLARE @query AS NVARCHAR(MAX)
	
	IF @IsInvoice = 1
	BEGIN
		SELECT DISTINCT 
			tblInvoiceDoc.strInvDocID AS InvDocID
			,dteJournalDate AS JournalDate
			,dteRequired AS [Required]
			,strUserName AS UserName
			,tblCustomers.strCustName AS CustNumber
			,tblCustomers.strCustDesc AS CustName
			,strReference AS Reference
			,CASE WHEN 
							( SELECT COUNT(Z.strLocation) 
										FROM 
											( SELECT strLocation FROM tblInvoiceDocDT WHERE (strInvDocID = tblInvoiceDoc.strInvDocID) GROUP BY strLocation ) Z ) > 1 
				THEN '<MULTIPLE>' 
				ELSE ISNULL(( SELECT strLocation FROM tblInvoiceDocDT WHERE (strInvDocID = tblInvoiceDoc.strInvDocID) GROUP BY strLocation ), '') END AS Location ,
				( SELECT COUNT(strInvDocID) FROM tblInvoiceDocDT WHERE (tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID) ) AS Items,
				tblInvoiceDoc.strDelMethodCode AS DeliveryMethod, 
				'' as 'Status' 
			FROM tblInvoiceDoc 
					inner join tblDeliveryMethods on tblDeliveryMethods.strDelMethodCode =tblInvoiceDoc .strDelMethodCode 
										and tblDeliveryMethods.bitEnableEnviron =1  
					INNER JOIN tblCustomers ON tblCustomers.strCustName = tblInvoiceDoc.strCustName 
					inner join tblInvoiceDocDT  ON tblInvoiceDocDT.strInvDocID =tblInvoiceDoc.strInvDocID and tblInvoiceDocDT.intType =1 
			WHERE tblInvoiceDoc.bitShipmentsAuditTrail=@IsShipmentsAuditTrail 
					AND (@IsDisplayAllChecked = 1 or (ISNULL(CONVERT(date,dteJournalDate), '') BETWEEN ( CASE WHEN @FromDate = '' THEN ISNULL(CONVERT(date,dteJournalDate), '') ELSE  CONVERT(date,@FromDate) END) ANd ( CASE WHEN @ToDate = '' THEN ISNULL(CONVERT(date,dteJournalDate), '') ELSE  CONVERT(date,@ToDate) END)))
					AND tblInvoiceDoc.strDelMethodCode = case when @IsAvailableDelMethodCode = 1 then @DelMethodDesc else tblInvoiceDoc.strDelMethodCode end
					AND tblDeliveryMethods.bitSalesInvoice = case when @IsShipmentsAuditTrail = 0 THEN 1 ELSE tblDeliveryMethods.bitSalesInvoice end
					ORDER BY tblInvoiceDoc.strInvDocID DESC
	END	
	ELSE
	BEGIN
		SELECT DISTINCT 
			tblOrderDoc.strOrdDocID AS InvDocID
			,dteJournalDate AS JournalDate
			,dteRequired AS [Required]
			,strUserName AS UserName
			,tblCustomers.strCustName AS CustNumber
			,tblCustomers.strCustDesc AS CustName
			,strReference AS Reference
			,CASE WHEN 
						( SELECT COUNT(Z.strLocation) 
									FROM 
										( SELECT strLocation FROM tblOrderDocDT WHERE (strOrdDocID = tblOrderDoc .strOrdDocID ) GROUP BY strLocation ) Z ) > 1 
					THEN '<MULTIPLE>' 
					ELSE ISNULL(( SELECT strLocation FROM tblOrderDocDT WHERE (strOrdDocID = tblOrderDoc .strOrdDocID ) GROUP BY strLocation ), '') END AS Location ,
					( SELECT COUNT(strOrdDocID) FROM tblOrderDocDT WHERE (tblOrderDocDT.strOrdDocID = tblOrderDoc .strOrdDocID ) ) AS Items ,
					tblOrderDoc .strDelMethodCode AS DeliveryMethod, 
					'' as 'Status' 
					FROM tblOrderDoc 
						INNER JOIN tblDeliveryMethods ON tblDeliveryMethods.strDelMethodCode = tblOrderDoc.strDelMethodCode 
																AND tblDeliveryMethods.bitEnableEnviron = 1 
						INNER JOIN tblCustomers ON tblCustomers.strCustName = tblOrderDoc .strCustName 
						inner join tblOrderDocDT ON tblOrderDocDT.strOrdDocID =tblOrderDoc.strOrdDocID  and tblOrderDocDT.intType =1 
		WHERE intDocType = 1 and tblOrderDoc.bitShipmentsAuditTrail = @IsShipmentsAuditTrail
					AND (@IsDisplayAllChecked = 1 or (ISNULL(CONVERT(date,dteJournalDate), '') BETWEEN ( CASE WHEN @FromDate = '' THEN ISNULL(CONVERT(date,dteJournalDate), '') ELSE  CONVERT(date,@FromDate) END) ANd ( CASE WHEN @ToDate = '' THEN ISNULL(CONVERT(date,dteJournalDate), '') ELSE  CONVERT(date,@ToDate) END)))
					AND tblOrderDoc.strDelMethodCode = case when @IsAvailableDelMethodCode = 1 then @DelMethodDesc else tblOrderDoc.strDelMethodCode end
					AND tblDeliveryMethods.bitSalesOrder = case when @IsShipmentsAuditTrail = 0 THEN 1 ELSE tblDeliveryMethods.bitSalesOrder end
					ORDER BY tblOrderDoc.strOrdDocID DESC

	END
	
END
GO
/****** Object:  StoredProcedure [dbo].[GetSNInStockForSerialImportExport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

Create PROCEDURE  [dbo].[GetSNInStockForSerialImportExport]
(
@PartNumber NVARCHAR(MAX) = '',
@LocName NVARCHAR(MAX) = '',
@Status INT,
@BinId INT = 0
)
AS
BEGIN
--SELECT COUNT(SNT.strSerialNumber)
--FROM (
--	SELECT strSerialNumber
--		,MAX(lngID) AS lngID
--	FROM tblSerialNumberTracking
--	WHERE strPartNumber = @PartNumber
--		AND strLocation = @LocName
--	GROUP BY strSerialNumber
--	) Z
--INNER JOIN tblSerialNumberTracking SNT ON Z.lngID = SNT.lngID
--WHERE SNT.intStatus = @Status

SELECT ISNULL(SUM(SNT.decQty),0) FROM (SELECT strSerialNumber, MAX(lngID) AS lngID 
FROM tblSerialNumberTracking WHERE strPartNumber = @PartNumber 
AND strLocation = @LocName AND lngBinId= @BinId GROUP BY strSerialNumber) Z 
INNER JOIN tblSerialNumberTracking SNT ON Z.lngID = SNT.lngID 
WHERE SNT.intStatus = @Status

END
GO
/****** Object:  StoredProcedure [dbo].[GetSOAndInvoiceDTFromCust]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetSOAndInvoiceDTFromCust] 
@OrdDocID nvarchar(50)
AS
BEGIN
	SELECT ISNULL(strOrdDocID, '') as OrdDocID, ISNULL(strInvDocID, '') as InvDocID FROM tblCustTrans WHERE strOrdDocID = @OrdDocID
END
GO
/****** Object:  StoredProcedure [dbo].[GetStandardCost]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCustomerDeliveryLocation] ***********/

/*********** Start [GetStandardCost] ***********/
CREATE PROCEDURE [dbo].[GetStandardCost]
(
	@PartNumber AS VARCHAR(50)
)
AS
BEGIN
	SELECT ISNULL(decStandardCost,0) AS StandardCost FROM tblInv (NOLOCK) WHERE strPartNumber = @PartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetStandardSP]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetStandardSP]
(
	@PartNumber AS NVARCHAR(100),
	@CustName AS NVARCHAR(100)
)
AS
BEGIN
	SELECT tblInv.strDesc AS PartDescription, ISNULL(tblInvPrice.decSelling,0) AS Selling FROM tblInv LEFT OUTER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber LEFT OUTER JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist AND tblInvPrice.uidPriceBasedID = tblPricelists.uidPriceBasedID LEFT OUTER JOIN tblCustomers ON tblPricelists.strPricelist = tblCustomers.strPricelist WHERE (tblInv.intType = 1) AND (tblInv.strPartNumber = @PartNumber) AND (tblCustomers.strCustName = @CustName)
END
GO
/****** Object:  StoredProcedure [dbo].[GetStatastics]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetStatastics]
(
@SQStart date,
@SQEnd date,
@SQUser nvarchar(20)
)
AS
SET NOCOUNT ON;
SELECT top 1 tlq.JournalEntUserCount,tlu.JournalEntAllCount,tou.OrderUserCount,toa.OrderAllCount,tou1.OrderUserCount1,
toa1.OrderAllCount1,tiu.InvoiceUserCount,tia.InvoiceAllCount,tcu.CustPayUserCount,tca.CustPayAllCount,todu.OrderDocUserCount,toda.OrderDocAllCount,
tidu.InvDocUserCount,tida.InvDocAllCount,tvu.VendUserCount,tva.VendAllCount,tjcbu.JournalCBUserCount,tjcba.JournalCBAllCount,toqu.OrderDocQUserCount,
toqa.OrderDocQAllCount,tdau.DelAdvUserCount,tdaa.DelAdvAllCount,todpu.OrderDocPUserCount,todpa.OrderDocPAllCount,topgu.OrderDocPGUserCount,
topga.OrderDocPGAllCount 
FROM tblJournal
OUTER APPLY(SELECT COUNT(strJEDocID) JournalEntUserCount FROM tblJournalEntryDoc WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd) AND strUserName = @SQUser) tlq
OUTER APPLY(SELECT COUNT(strJEDocID) JournalEntAllCount FROM tblJournalEntryDoc WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd)) tlu
OUTER APPLY(SELECT COUNT(strOrdDocID) OrderUserCount FROM tblOrderDoc WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd) AND strUserName = @SQUser AND intDocType = 2) tou
OUTER APPLY(SELECT COUNT(strOrdDocID) OrderAllCount FROM tblOrderDoc WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd) AND intDocType = 2) toa
OUTER APPLY(SELECT COUNT(strOrdDocID) OrderUserCount1 FROM tblOrderDoc WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd) AND strUserName = @SQUser AND intDocType = 1) tou1
OUTER APPLY(SELECT COUNT(strOrdDocID) OrderAllCount1 FROM tblOrderDoc WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd) AND intDocType = 1) toa1
OUTER APPLY(SELECT COUNT(strInvDocID) InvoiceUserCount FROM tblInvoiceDoc WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd) AND strUserName = @SQUser) tiu
OUTER APPLY(SELECT COUNT(strInvDocID) InvoiceAllCount FROM tblInvoiceDoc WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd)) tia
OUTER APPLY(SELECT COUNT(lngCustPayID) CustPayUserCount FROM tblCustPay WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd) AND strUserName = @SQUser) tcu
OUTER APPLY(SELECT COUNT(lngCustPayID) CustPayAllCount FROM tblCustPay WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd)) tca
OUTER APPLY(SELECT COUNT(strOrdPDocID) OrderDocUserCount FROM tblOrderDocP WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd) AND strUserName = @SQUser) todu
OUTER APPLY(SELECT COUNT(strOrdPDocID) OrderDocAllCount FROM tblOrderDocP WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd)) toda
OUTER APPLY(SELECT COUNT(strInvPDocID) InvDocUserCount FROM tblInvoiceDocP WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd) AND strUserName = @SQUser) tidu
OUTER APPLY(SELECT COUNT(strInvPDocID) InvDocAllCount FROM tblInvoiceDocP WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd)) tida
OUTER APPLY(SELECT COUNT(lngVendPayID) VendUserCount FROM tblVendPay WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd) AND strUserName = @SQUser) tvu
OUTER APPLY(SELECT COUNT(lngVendPayID) VendAllCount FROM tblVendPay WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd)) tva
OUTER APPLY(SELECT COUNT(strJEDocID) JournalCBUserCount FROM tblJournalEntryDocCB WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd) AND strUserName = @SQUser) tjcbu
OUTER APPLY(SELECT COUNT(strJEDocID) JournalCBAllCount FROM tblJournalEntryDocCB WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd)) tjcba
OUTER APPLY(SELECT COUNT(strOrdDocID) OrderDocQUserCount FROM tblOrderDocQ WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd) AND strUserName = @SQUser) toqu
OUTER APPLY(SELECT COUNT(strOrdDocID) OrderDocQAllCount FROM tblOrderDocQ WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd)) toqa
OUTER APPLY(SELECT COUNT(strOrdDADocID) DelAdvUserCount FROM tblOrderDocDA WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd) AND strUserName = @SQUser) tdau
OUTER APPLY(SELECT COUNT(strOrdDADocID) DelAdvAllCount FROM tblOrderDocDA WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd)) tdaa
OUTER APPLY(SELECT COUNT(strOrdPDocID) OrderDocPUserCount FROM tblOrderDocP WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd) AND strUserName = @SQUser AND intDocType = 2) todpu
OUTER APPLY(SELECT COUNT(strOrdPDocID) OrderDocPAllCount FROM tblOrderDocP WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd) AND intDocType = 2) todpa
OUTER APPLY(SELECT COUNT(strOrdPGDocID) OrderDocPGUserCount FROM tblOrderDocPG WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd) AND strUserName = @SQUser) topgu
OUTER APPLY(SELECT COUNT(strOrdPGDocID) OrderDocPGAllCount FROM tblOrderDocPG WHERE (dteSystemDate BETWEEN @SQStart AND @SQEnd)) topga

GO
/****** Object:  StoredProcedure [dbo].[GetStoreInfoSalesImportExport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetItemInfoSOGameSalesImportExport] ***********/

/*********** Start [GetStoreInfoSalesImportExport] ***********/
CREATE PROCEDURE [dbo].[GetStoreInfoSalesImportExport] 
@StoreNumber VARCHAR(50)
AS
BEGIN
SELECT 
	ISNULL(strCustName, '') as strCustName, 
	ISNULL(strLocName, '') as strLocName 
FROM 
	tblCustomerLoc 
WHERE 
	strNumber = @StoreNumber
END 
GO
/****** Object:  StoredProcedure [dbo].[GetSubAssets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetSubAssets]
    (
      @strAssetCode NVARCHAR(20) = NULL ,
      @strSubAssetCode NVARCHAR(20) = NULL
    )
AS
BEGIN
    SET NOCOUNT ON;
    SELECT  [strAssetCode] AS AssetCode ,
            [strSubAssetCode] AS SubAssetCode
    FROM    [tblAssetsSub]
    WHERE   ( ( [strAssetCode] = @strAssetCode )
              OR ( @strAssetCode IS NULL )
            )
            AND ( ( [strSubAssetCode] = @strSubAssetCode )
                  OR ( @strSubAssetCode IS NULL )
                );
END
GO
/****** Object:  StoredProcedure [dbo].[GetSubAssetsForPicker]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetSubAssetsForPicker]
    (
      @bitInactive BIT = NULL ,
      @bitIsSubAsset BIT = NULL
    )
AS
BEGIN
    SET NOCOUNT ON;
    SELECT  [strAssetCode] AS AssetCode ,
            [strAssetDesc] AS AssetDesc ,
            [strAssetTypeCode] AS AssetTypeCode ,
            [uidCenterID] AS CenterID ,
            [strProjNumber] AS ProjNumber ,
            [decQuantity] AS Quantity ,
            [dteDepreciateFrom] AS DepreciateFrom ,
            [strSerialNumber] AS SerialNumber ,
            [strTagNumber] AS TagNumber ,
            [dteDisposalDate] AS DisposalDate ,
            [strDisposalCode] AS DisposalCode ,
            [decDisposalAmount] AS DisposalAmount ,
            [strVendNumber] AS VendNumber ,
            [dtePurchaseDate] AS PurchaseDate ,
            [strFinanceMethod] AS FinanceMethod ,
            [decIntRate] AS IntRate ,
            [intPeriod] AS Period ,
            [strAccNumber] AS AccNumber ,
            [strCapexOrder] AS CapexOrder ,
            [decPurchasePrice] AS PurchasePrice ,
            [decResidualValue] AS ResidualValue ,
            [decInsuredValue] AS InsuredValue ,
            [decSalvageValue] AS SalvageValue ,
            [decReplacementValue] AS ReplacementValue ,
            [decDepreciableValue] AS DepreciableValue ,
            [dteLastDeprecationDate] AS LastDeprecationDate ,
            [decRemainingValue] AS RemainingValue ,
            [strField1] AS Field1 ,
            [strField2] AS Field2 ,
            [strField3] AS Field3 ,
            [strField4] AS Field4 ,
            [strField5] AS Field5 ,
            [strField6] AS Field6 ,
            [strField7] AS Field7 ,
            [strField8] AS Field8 ,
            [strField9] AS Field9 ,
            [strField10] AS Field10 ,
            [strField11] AS Field11 ,
            [strField12] AS Field12 ,
            [strNotes] AS Notes ,
            [bitInactive] AS Inactive ,
            [bitIsSubAsset] AS IsSubAsset ,
            [lngJourID] AS JourID ,
            [decRevaluationValue] AS RevaluationValue ,
            [bitIsRevaluationValueActive] AS IsRevaluationValueActive ,
            [decProfitOrLossOnSale] AS ProfitOrLossOnSale ,
            [decOpeningAccumulatedDepreciation1] AS OpeningAccumulatedDepreciation1 ,
            [decOpeningAccumulatedDepreciation2] AS OpeningAccumulatedDepreciation2 ,
            [decOpeningAccumulatedDepreciation3] AS OpeningAccumulatedDepreciation3 ,
            [decOpeningAccumulatedDepreciation4] AS OpeningAccumulatedDepreciation4 ,
            [decOpeningAccumulatedDepreciation5] AS OpeningAccumulatedDepreciation5 ,
            [strBarCode] AS BarCode ,
            [strVendorInvoiceNumber] AS VendorInvoiceNumber ,
            [strDepreciationCode1] AS DepreciationCode1 ,
            [strDepreciationCode2] AS DepreciationCode2 ,
            [strDepreciationCode3] AS DepreciationCode3 ,
            [strDepreciationCode4] AS DepreciationCode4 ,
            [strDepreciationCode5] AS DepreciationCode5
    FROM    [tblAssets]
    WHERE   ( ( [bitInactive] = @bitInactive )
              OR ( @bitInactive IS NULL )
            )
            AND ( ( [bitIsSubAsset] = @bitIsSubAsset )
                  OR ( @bitIsSubAsset IS NULL )
                ); 
				END
GO
/****** Object:  StoredProcedure [dbo].[GetSummaryDetailData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------------'
CREATE PROCEDURE [dbo].[GetSummaryDetailData]
(
	@ListItemNum AS INT
)
AS
BEGIN
	DECLARE @QueryCommandPart1 AS NVARCHAR(MAX)		
	DECLARE @QueryCommandPart2 AS NVARCHAR(MAX)		
	DECLARE @QueryCommandPart3 AS NVARCHAR(MAX)		
	DECLARE @QueryCommandFinal AS NVARCHAR(MAX)		
	BEGIN
		SET @QueryCommandPart1 = 'SELECT 
					DATEPART(yyyy, tblJournal.dteJournalDate), 
					DATEPART(m,tblJournal.dteJournalDate) AS Month, 
					ISNULL(SUM(tblJournalEnt.decCredits),0) - ISNULL(SUM(tblJournalEnt.decDebits),0) AS Profit,
					ISNULL(SUM(tblJournalEnt.decAmount),0) AS Expense
				FROM tblJournal 
				INNER JOIN tblJournalEnt 
					ON tblJournal.lngJourID = tblJournalEnt.lngJourID
				WHERE tblJournalEnt.intGLNumber
				IN
				 (
					SELECT intGLNumber 
					FROM tblAccounts '
	END

	IF @ListItemNum = 10
		BEGIN
			SET @QueryCommandPart2 = 'WHERE (intAccType = 4 AND (intAccClass = 29 OR intAccClass = 30)) OR (intAccType = 5 AND (intAccClass = 35 OR intAccClass = 36))'
		END
	ELSE IF @ListItemNum = 11
		BEGIN
			SET @QueryCommandPart2 = 'WHERE ((intAccType = 4) OR (intAccType = 5))'
		END
	ELSE IF @ListItemNum = 12
		BEGIN
			SET @QueryCommandPart2 = 'WHERE (intAccType = 5 AND (intAccClass = 35 OR intAccClass = 36))'
		END
	ELSE IF @ListItemNum = 13
		BEGIN
			SET @QueryCommandPart2 = 'WHERE (intAccType = 5 AND (intAccClass <> 35 AND intAccClass <> 36))'
		END
	ELSE IF @ListItemNum = 14
		BEGIN
			SET @QueryCommandPart2 = 'WHERE (intAccType = 5)'
		END

	BEGIN
		SET @QueryCommandPart3 = ')
		        GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate)
				ORDER BY DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate)'
	END

	BEGIN
		SET @QueryCommandFinal = @QueryCommandPart1 + @QueryCommandPart2 + @QueryCommandPart3
	END
	
	EXECUTE sp_executesql @QueryCommandFinal
	
END
GO
/****** Object:  StoredProcedure [dbo].[GetSummaryDetailDataLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------'
CREATE PROCEDURE [dbo].[GetSummaryDetailDataLY]
(
	@ListItemNum AS INT
)
AS
BEGIN
	DECLARE @QueryCommandPart1 AS NVARCHAR(MAX)		
	DECLARE @QueryCommandPart2 AS NVARCHAR(MAX)		
	DECLARE @QueryCommandPart3 AS NVARCHAR(MAX)		
	DECLARE @QueryCommandFinal AS NVARCHAR(MAX)

	BEGIN
		SET @QueryCommandPart1 = 'SELECT 
					DATEPART(yyyy, tblJournalLY.dteJournalDate) AS Year , 
					DATEPART(m,tblJournalLY.dteJournalDate) AS Month,
					ISNULL(SUM(tblJournalEntLY.decCredits),0) - ISNULL(SUM(tblJournalEntLY.decDebits),0) AS Profit,
					ISNULL(SUM(tblJournalEntLY.decAmount),0) AS Expense  
				FROM tblJournalLY 
				INNER JOIN tblJournalEntLY 
					ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID
				WHERE tblJournalEntLY.intGLNumber 
					IN 
						(
							SELECT intGLNumber 
							FROM tblAccountsLY '
	END
	
	IF @ListItemNum = 10
		BEGIN
			SET @QueryCommandPart2 = 'WHERE (intAccType = 4 AND (intAccClass = 29 OR intAccClass = 30)) OR (intAccType = 5 AND (intAccClass = 35 OR intAccClass = 36))'
		END
	ELSE IF @ListItemNum = 11
		BEGIN
			SET @QueryCommandPart2 = 'WHERE ((intAccType = 4) OR (intAccType = 5))'
		END
	ELSE IF @ListItemNum = 12
		BEGIN
			SET @QueryCommandPart2 = 'WHERE (intAccType = 5 AND (intAccClass = 35 OR intAccClass = 36))'
		END
	ELSE IF @ListItemNum = 13
		BEGIN
			SET @QueryCommandPart2 = 'WHERE (intAccType = 5 AND (intAccClass <> 35 AND intAccClass <> 36))'
		END
	ELSE IF @ListItemNum = 14
		BEGIN
			SET @QueryCommandPart2 = 'WHERE (intAccType = 5)'
		END
		
	BEGIN
		SET @QueryCommandPart3 = ')
				GROUP BY DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate)
				ORDER BY DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate)'
	END	

	BEGIN
		SET @QueryCommandFinal = @QueryCommandPart1 + @QueryCommandPart2 + @QueryCommandPart3
	END
	--PRINT @QueryCommandFinal
	EXECUTE sp_executesql @QueryCommandFinal
END
GO
/****** Object:  StoredProcedure [dbo].[GetSumOfAllPeriodIB]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCustomerTransactionId] ***********/

/*********** Create [GetSumOfAllPeriodIB] ***********/
CREATE PROCEDURE [dbo].[GetSumOfAllPeriodIB] 
(
	@CustName NVARCHAR(100),
	@CustomerTransactionId NVARCHAR(MAX),
	@PeriodInterestDate SMALLDATETIME
)
AS
BEGIN
	SELECT Sum(CASE 
		WHEN decAmount IS NULL
			THEN 0
		ELSE CASE 
				WHEN decAmount < 0
					THEN - decAmount
				ELSE 0
				END
		END) AS 'Payments'
	FROM tblcusttransDT
	WHERE lngCustTrID IN (
			SELECT lngCustTrID
			FROM tblcusttrans
			WHERE strCustName = @CustName
				AND lngCustTrID = @CustomerTransactionId
				AND dteJournalDate < @PeriodInterestDate
			)
END
GO
/****** Object:  StoredProcedure [dbo].[GetSystemVariables]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetSystemVariables]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetSystemVariables]
AS
BEGIN
	SELECT strCurrency as PL_HomeCurrencyCode, strCurrName, strCurrSymbol,
	CAST(CASE WHEN (SELECT COUNT(strCurrency) FROM tblCurrency WHERE bitHome = 0) = 0 THEN 0 ELSE 1 END AS BIT) AS PL_MulticurrencyEnabled
	,(Select bitNegInv from tblCoOpts) AS bitNegInv
	FROM tblCurrency t WHERE t.bitHome = 1
END
GO
/****** Object:  StoredProcedure [dbo].[GetSysVariables]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetSysVariables]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetSysVariables]
AS
BEGIN
	SELECT dteEarliestTran AS dteEarliestAllowed,dteYearEnds AS dteCurrentYearEnds,dteYearStarts AS dteCurrentYearBegan,
	dteLYStarted AS dteLYStarted,dteLYEnded AS dteLYEnded,strName AS PL_CurrentCompanyName 
	,CAST(CASE WHEN (SELECT COUNT(intDept) FROM tblDepartments) = 0 THEN 0 ELSE 1 END AS bit) AS PL_DepartmentsEnabled
	FROM tblCompany
END
GO
/****** Object:  StoredProcedure [dbo].[GetTableDataByTablename]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetTableDataByTablename]    Script Date: 21-08-2018 11:03:14 ******/
CREATE PROCEDURE [dbo].[GetTableDataByTablename]
 @TableName AS NVARCHAR(50)
	,@TableType AS NVARCHAR(50)
	,@SyncDate AS DATETIME = NULL
	,@From AS INT = 0
	,@TO AS INT = 200
AS
BEGIN
	DECLARE @SQL NVARCHAR(Max)
	DECLARE @AllColumns VARCHAR(MAX);

	SELECT @AllColumns = COALESCE(@AllColumns + ',', '') + c.name
	FROM sys.table_types tt
	INNER JOIN sys.columns c ON c.object_id = tt.type_table_object_id
		AND tt.name = @TableType

	DECLARE @Fcolumn VARCHAR(200)

	SELECT @Fcolumn = Name
	FROM sys.columns
	WHERE object_id IN (
			SELECT object_id
			FROM sys.objects
			WHERE name = @TableName
				AND column_id = 1
			)

	SET @SQL = 'Select ROW_NUMBER( ) over (order by ' + @Fcolumn + ') as RowNumber,*  From ' + @TableName + ''

	IF (@SyncDate IS NOT NULL)
	BEGIN
		SET @SQL = @SQL + ' WHERE DATEADD(second, DATEDIFF(second, GETDATE(), GETUTCDATE()), dteRowUpdated)  >= ''' + convert(VARCHAR, @SyncDate, 20) + ''''
	END

	SET @SQL = 'SELECT ' + @AllColumns + ' FROM (' + @SQL + ') t where
         RowNumber >=' + CAST(@From AS VARCHAR) + ' and RowNumber <=' + CAST(@TO AS VARCHAR) + ''

	PRINT @SQL

	EXECUTE SP_EXECUTESQL @SQL
END
GO
/****** Object:  StoredProcedure [dbo].[GetTaskList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetOpenReceipts] ***********/

/*********** Start [GetTaskList] ***********/
CREATE PROCEDURE [dbo].[GetTaskList] 
	@IsAdmin BIT
	,@UserName NVARCHAR(20) = null
	,@SelectedTaskStatus INT
AS
BEGIN
	IF (@IsAdmin = 1)
	BEGIN
		IF (@SelectedTaskStatus = 0)
			SELECT strAssUser AS AssignedUser, dteDateDue AS DueDate, strEntUser AS EnteredUser, dteEntered AS EnteredDate, strModule AS Module, CONVERT(INT, intStatus) AS Status, strTitle AS Title, lngID AS ID, strBody AS Body FROM tblToDo WHERE (intStatus = 0 OR intStatus = 1) ORDER BY dteDateDue
		ELSE IF (@SelectedTaskStatus = 1)
			SELECT strAssUser AS AssignedUser, dteDateDue AS DueDate, strEntUser AS EnteredUser, dteEntered AS EnteredDate, strModule AS Module, CONVERT(INT, intStatus) AS Status, strTitle AS Title, lngID AS ID, strBody AS Body FROM tblToDo WHERE (intStatus = 0) ORDER BY dteDateDue
		ELSE IF (@SelectedTaskStatus = 2)
			SELECT strAssUser AS AssignedUser, dteDateDue AS DueDate, strEntUser AS EnteredUser, dteEntered AS EnteredDate, strModule AS Module, CONVERT(INT, intStatus) AS Status, strTitle AS Title, lngID AS ID, strBody AS Body FROM tblToDo WHERE (intStatus = 1) ORDER BY dteDateDue
		ELSE IF (@SelectedTaskStatus = 3)
			SELECT strAssUser AS AssignedUser, dteDateDue AS DueDate, strEntUser AS EnteredUser, dteEntered AS EnteredDate, strModule AS Module, CONVERT(INT, intStatus) AS Status, strTitle AS Title, lngID AS ID, strBody AS Body FROM tblToDo WHERE (intStatus = 2) ORDER BY dteDateDue
		ELSE IF (@SelectedTaskStatus = 4) --Overdue Task
			SELECT strAssUser AS AssignedUser, dteDateDue AS DueDate, strEntUser AS EnteredUser, dteEntered AS EnteredDate, strModule AS Module, CONVERT(INT, intStatus) AS Status, strTitle AS Title, lngID AS ID, strBody AS Body FROM tblToDo WHERE (intStatus <> 2) AND dteDateDue <= GETDATE() ORDER BY dteDateDue
		ELSE
			SELECT strAssUser AS AssignedUser, dteDateDue AS DueDate, strEntUser AS EnteredUser, dteEntered AS EnteredDate, strModule AS Module, CONVERT(INT, intStatus) AS Status, strTitle AS Title, lngID AS ID, strBody AS Body FROM tblToDo WHERE (intStatus = 0OR intStatus = 1) ORDER BY dteDateDue
	END
	ELSE
	BEGIN
		IF (@SelectedTaskStatus = 0)
			SELECT strAssUser AS AssignedUser, dteDateDue AS DueDate, strEntUser AS EnteredUser, dteEntered AS EnteredDate, strModule AS Module, CONVERT(INT, intStatus) AS Status, strTitle AS Title, lngID AS ID, strBody AS Body FROM tblToDo WHERE (strAssUser = @UserName OR strEntUser = @UserName) AND (intStatus = 0OR intStatus = 1) ORDER BY dteDateDue
		ELSE IF (@SelectedTaskStatus = 1)
			SELECT strAssUser AS AssignedUser, dteDateDue AS DueDate, strEntUser AS EnteredUser, dteEntered AS EnteredDate, strModule AS Module, CONVERT(INT, intStatus) AS Status, strTitle AS Title, lngID AS ID, strBody AS Body FROM tblToDo WHERE (strAssUser = @UserName OR strEntUser = @UserName) AND (intStatus = 0) ORDER BY dteDateDue
		ELSE IF (@SelectedTaskStatus = 2)
			SELECT strAssUser AS AssignedUser, dteDateDue AS DueDate, strEntUser AS EnteredUser, dteEntered AS EnteredDate, strModule AS Module, CONVERT(INT, intStatus) AS Status, strTitle AS Title, lngID AS ID, strBody AS Body FROM tblToDo WHERE (strAssUser = @UserName OR strEntUser = @UserName) AND (intStatus = 1) ORDER BY dteDateDue
		ELSE IF (@SelectedTaskStatus = 3)  
			SELECT strAssUser AS AssignedUser, dteDateDue AS DueDate, strEntUser AS EnteredUser, dteEntered AS EnteredDate, strModule AS Module, CONVERT(INT, intStatus) AS Status, strTitle AS Title, lngID AS ID, strBody AS Body FROM tblToDo WHERE (strAssUser = @UserName OR strEntUser = @UserName) AND (intStatus = 2) ORDER BY dteDateDue
		ELSE IF (@SelectedTaskStatus = 4) --Overdue Task
			SELECT strAssUser AS AssignedUser, dteDateDue AS DueDate, strEntUser AS EnteredUser, dteEntered AS EnteredDate, strModule AS Module, CONVERT(INT, intStatus) AS Status, strTitle AS Title, lngID AS ID, strBody AS Body FROM tblToDo WHERE (strAssUser = @UserName OR strEntUser = @UserName) AND (intStatus <> 2) AND dteDateDue <= GETDATE() ORDER BY dteDateDue
		ELSE
			SELECT strAssUser AS AssignedUser, dteDateDue AS DueDate, strEntUser AS EnteredUser, dteEntered AS EnteredDate, strModule AS Module, CONVERT(INT, intStatus) AS Status, strTitle AS Title, lngID AS ID, strBody AS Body FROM tblToDo WHERE (strAssUser = @UserName OR strEntUser = @UserName) AND (intStatus = 0 OR intStatus = 1) ORDER BY dteDateDue
	END
END

GO
/****** Object:  StoredProcedure [dbo].[GetTaxCodeData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [GetTaxCodeData] ***********/

CREATE PROCEDURE [dbo].[GetTaxCodeData]
AS
BEGIN
	SELECT strTaxCode + ' - ' + strDescription AS DisplayName
		,strTaxCode AS TaxCode
		,bitDefCustomers AS IsDefCustomer
		,bitDefVendors AS IsDefVendor
		,intAllowedJournals AS AllowedJournalsCode
	FROM tblTaxCodes
	WHERE intAllowedJournals = 0
		OR intAllowedJournals = 1
		OR intAllowedJournals = 2
	ORDER BY strTaxCode
END
GO
/****** Object:  StoredProcedure [dbo].[GetTaxCodeDefinitionByCode]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetTaxCodeDefinitionByCode]
	@TaxCode VARCHAR(4)
AS
BEGIN
	SELECT tblTaxCodeExt.strTaxName as TaxName, tblTaxCodeExt.intStatus as TaxStatus, tblTaxCodeExt.decRate as Rate, tblTaxCodeExt.bitIncluded as IsIncluded,
	 tblTaxCodeExt.bitRefundable as IsRefundable, tblTaxDef.intPurchAcct as PurchAcct, tblTaxDef.intSalesAcct as SalesAcct
	FROM tblTaxCodeExt 	
	INNER JOIN tblTaxDef ON tblTaxCodeExt.strTaxName = tblTaxDef.strTaxName WHERE (tblTaxCodeExt.strTaxCode = @TaxCode)
END
GO
/****** Object:  StoredProcedure [dbo].[GetTaxCodeForUser]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetTaxCodeForUser]( 
	@UserName as nvarchar(20)
	)
AS
BEGIN
	SELECT strTaxCode AS TaxCode, strPartNumber AS PartNumber FROM tblIntBillTracking WHERE strUserName = @UserName AND lngIntBillTrackID IN (SELECT MAX(lngIntBillTrackID) FROM tblIntBillTracking)

END
GO
/****** Object:  StoredProcedure [dbo].[GettblAccountsByCriteria]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[GettblAccountsByCriteria]    Script Date: 2014-05-15 03:25:09 PM ******/
CREATE PROCEDURE [dbo].[GettblAccountsByCriteria] (
	@intGLNumber nvarchar(30) = NULL
	,@strDesc NVARCHAR(50) = NULL
	,@intAccType INT = NULL
	,@intGroupCode INT = NULL
	,@intAccClass INT = NULL
	,@bitInactive BIT = NULL
	,@decOpenBalance MONEY = NULL
	,@decBalance MONEY = NULL
	,@decLYOpenBalance MONEY = NULL
	,@decLYEndBalance MONEY = NULL
	,@bitBank BIT = NULL
	,@bitRecon BIT = NULL
	,@bitInventory BIT = NULL
	,@bitBudget BIT = NULL
	,@bitUsed BIT = NULL
	,@bitUsedLY BIT = NULL
	,@bitLinkREarnings BIT = NULL
	,@bitLinkCEarnings BIT = NULL
	,@bitLinkAP BIT = NULL
	,@bitLinkPurDisc BIT = NULL
	,@bitLinkAR BIT = NULL
	,@bitLinkSalesDisc BIT = NULL
	,@bitLinkAssCosts BIT = NULL
	,@bitLinkAdjWriteOff BIT = NULL
	,@bitIsLinkedAccount BIT = NULL
	,@bitDefBank BIT = NULL
	,@bitLinkDeposit BIT = NULL
	,@bitLinkPrePay BIT = NULL
	,@strField1 NVARCHAR(100) = NULL
	,@strField2 NVARCHAR(100) = NULL
	,@strField3 NVARCHAR(100) = NULL
	,@strField4 NVARCHAR(100) = NULL
	,@strField5 NVARCHAR(100) = NULL
	,@strField6 NVARCHAR(100) = NULL
	,@bitLinkExc BIT = NULL
	,@bitAllowCenters BIT = NULL
	,@intCheqNumber BIGINT = NULL
	,@strCurrency NVARCHAR(3) = NULL
	,@decOpenBalanceF MONEY = NULL
	,@decBalanceF MONEY = NULL
	,@decLYOpenBalanceF MONEY = NULL
	,@decLYEndBalanceF MONEY = NULL
	,@bitLinkGRV BIT = NULL
	,@bitLinkAddCost BIT = NULL
	,@bitLinkDelAdvice BIT = NULL
	,@bitLinkWIP BIT = NULL
	,@bitLinkManStandardCost BIT = NULL
	)
AS
SELECT [tblAccounts].[intGLNumber]
	,[tblAccounts].[strDesc]
	,[tblAccounts].[intAccType]
	,[tblAccounts].[intGroupCode]
	,[tblAccounts].[intAccClass]
	,[tblAccounts].[bitInactive]
	,[tblAccounts].[decOpenBalance]
	,[tblAccounts].[decBalance]
	,[tblAccounts].[decLYOpenBalance]
	,[tblAccounts].[decLYEndBalance]
	,[tblAccounts].[bitBank]
	,[tblAccounts].[bitRecon]
	,[tblAccounts].[bitInventory]
	,[tblAccounts].[bitBudget]
	,[tblAccounts].[bitUsed]
	,[tblAccounts].[bitUsedLY]
	,[tblAccounts].[bitLinkREarnings]
	,[tblAccounts].[bitLinkCEarnings]
	,[tblAccounts].[bitLinkAP]
	,[tblAccounts].[bitLinkPurDisc]
	,[tblAccounts].[bitLinkAR]
	,[tblAccounts].[bitLinkSalesDisc]
	,[tblAccounts].[bitLinkAssCosts]
	,[tblAccounts].[bitLinkAdjWriteOff]
	,[tblAccounts].[bitIsLinkedAccount]
	,[tblAccounts].[bitDefBank]
	,[tblAccounts].[bitLinkDeposit]
	,[tblAccounts].[bitLinkPrePay]
	,[tblAccounts].[strField1]
	,[tblAccounts].[strField2]
	,[tblAccounts].[strField3]
	,[tblAccounts].[strField4]
	,[tblAccounts].[strField5]
	,[tblAccounts].[strField6]
	,[tblAccounts].[bitLinkExc]
	,[tblAccounts].[bitAllowCenters]
	,[tblAccounts].[intCheqNumber]
	,[tblAccounts].[strCurrency]
	,[tblAccounts].[decOpenBalanceF]
	,[tblAccounts].[decBalanceF]
	,[tblAccounts].[decLYOpenBalanceF]
	,[tblAccounts].[decLYEndBalanceF]
	,[tblAccounts].[bitLinkGRV]
	,[tblAccounts].[bitLinkAddCost]
	,[tblAccounts].[bitLinkDelAdvice]
	,[tblAccounts].[bitLinkWIP]
	,[tblAccounts].[bitLinkManStandardCost]
	,[tblCurrency].[strCurrency]
	,[tblCurrency].[strCurrName]
	,[tblCurrency].[strCurrSymbol]
	,[tblCurrency].[bitTrailingSymb]
	,[tblCurrency].[strThousSymb]
	,[tblCurrency].[strDecSymb]
	,[tblCurrency].[intDecimals]
	,[tblCurrency].[strCentsName]
	,[tblCurrency].[bitHome]
FROM [tblAccounts]
LEFT OUTER JOIN [tblCurrency] ON [tblAccounts].strCurrency = [tblCurrency].strCurrency
GO
/****** Object:  StoredProcedure [dbo].[GetTblAccountsByFormDiscountType]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[GetTblAccountsByFormDiscountType]    Script Date: 09-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[GetTblAccountsByFormDiscountType]
(
	@FormDiscountType int
)
AS
BEGIN

IF (@FormDiscountType =  1)
BEGIN
	SELECT strPartNumber, strDesc FROM tblInv WHERE (bitInactive = 0) AND (intType = 5) AND (intExpAcct IN (SELECT ISNULL(intGLNumber,0) FROM tblAccounts WHERE bitLinkSalesDisc = 1))
	END

ELSE
	BEGIN
	SELECT strPartNumber, strDesc FROM tblInv WHERE (bitInactive = 0) AND (intType = 5) AND (intExpAcct IN (SELECT ISNULL(intGLNumber,0) FROM tblAccounts WHERE bitLinkPurDisc = 1))
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GettblAuthorizeReasonsByCriteria]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[GettblAuthorizeReasonsByCriteria] 
(@lngID bigint = NULL ,
@strAuthReasonCode nvarchar(20) = NULL ,
@strAuthReasonDesc nvarchar(100) = NULL ,
@bitInactive bit = NULL )
 As Select [tblAuthorizeReasons].[lngID],
[tblAuthorizeReasons].[strAuthReasonCode],
[tblAuthorizeReasons].[strAuthReasonDesc],
[tblAuthorizeReasons].[bitInactive] from [tblAuthorizeReasons]
 Where ([tblAuthorizeReasons].[lngID] =  @lngID or @lngID is null ) and 
([tblAuthorizeReasons].[strAuthReasonCode] =  @strAuthReasonCode or @strAuthReasonCode is null ) and 
([tblAuthorizeReasons].[strAuthReasonDesc] =  @strAuthReasonDesc or @strAuthReasonDesc is null ) and 
([tblAuthorizeReasons].[bitInactive] =  @bitInactive or @bitInactive is null )
GO
/****** Object:  StoredProcedure [dbo].[GettblDimensionProfilesByCriteria]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GettblDimensionProfilesByCriteria] (
	@strDimProCode NVARCHAR(40) = NULL
	,@strDescription NVARCHAR(200) = NULL
	,@bitAutoInvoke BIT = NULL
	,@intRoundingDecimals INT = NULL
	,@bitInactive BIT = NULL
	)
AS
SELECT [tblDimensionProfiles].[strDimProCode]
	,[tblDimensionProfiles].[strDescription]
	,[tblDimensionProfiles].[bitAutoInvoke]
	,[tblDimensionProfiles].[intRoundingDecimals]
	,[tblDimensionProfiles].[bitInactive]
FROM [tblDimensionProfiles]
WHERE (
		[tblDimensionProfiles].[strDimProCode] = @strDimProCode
		OR @strDimProCode IS NULL
		)
	AND (
		[tblDimensionProfiles].[strDescription] = @strDescription
		OR @strDescription IS NULL
		)
	AND (
		[tblDimensionProfiles].[bitAutoInvoke] = @bitAutoInvoke
		OR @bitAutoInvoke IS NULL
		)
	AND (
		[tblDimensionProfiles].[intRoundingDecimals] = @intRoundingDecimals
		OR @intRoundingDecimals IS NULL
		)
	AND (
		[tblDimensionProfiles].[bitInactive] = @bitInactive
		OR @bitInactive IS NULL
		)
GO
/****** Object:  StoredProcedure [dbo].[GettblDimProLinesByCriteria]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GettblDimProLinesByCriteria] (
	@intLineNo INT = NULL
	,@strDimProCode NVARCHAR(40) = NULL
	,@strLineDesc NVARCHAR(200) = NULL
	,@decDefaultValue MONEY = NULL
	,@bitReadOnly BIT = NULL
	,@bitVisible BIT = NULL
	)
AS
SELECT [tblDimProLines].[intLineNo]
	,[tblDimProLines].[strDimProCode]
	,[tblDimProLines].[strLineDesc]
	,[tblDimProLines].[decDefaultValue]
	,[tblDimProLines].[bitReadOnly]
	,[tblDimProLines].[bitVisible]
	,[tblDimensionProfiles].[strDimProCode]
	,[tblDimensionProfiles].[strDescription]
	,[tblDimensionProfiles].[bitAutoInvoke]
	,[tblDimensionProfiles].[intRoundingDecimals]
	,[tblDimensionProfiles].[bitInactive]
FROM [tblDimProLines]
LEFT OUTER JOIN [tblDimensionProfiles] ON [tblDimProLines].strDimProCode = [tblDimensionProfiles].strDimProCode
WHERE (
		[tblDimProLines].[intLineNo] = @intLineNo
		OR @intLineNo IS NULL
		)
	AND (
		[tblDimProLines].[strDimProCode] = @strDimProCode
		OR @strDimProCode IS NULL
		)
	AND (
		[tblDimProLines].[strLineDesc] = @strLineDesc
		OR @strLineDesc IS NULL
		)
	AND (
		[tblDimProLines].[decDefaultValue] = @decDefaultValue
		OR @decDefaultValue IS NULL
		)
	AND (
		[tblDimProLines].[bitReadOnly] = @bitReadOnly
		OR @bitReadOnly IS NULL
		)
	AND (
		[tblDimProLines].[bitVisible] = @bitVisible
		OR @bitVisible IS NULL
		)
GO
/****** Object:  StoredProcedure [dbo].[GettblInvByCriteria]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GettblInvByCriteria] (    
 @intType VARCHAR(50) = NULL    
 ,@Pricelist VARCHAR(20) = NULL    
 ,@strLocName VARCHAR(500)= NULL    
 ,@Date VARCHAR(20) = NULL    
 ,@FilterType INTEGER = 0
 ,@PageSize INT = 25
 ,@PageNum  INT =1  
 ,@Search VARCHAR(500)=''
 ,@Category varchar(250)=''
 ,@SubCategory varchar(250)=''
 ,@SubCategoryGroup varchar(250)=''
 ,@VendorName varchar(500)=''
 ,@EmployeeName varchar(500) = ''
 ,@BomItem bit=0
 ,@SNLotTrack bit=0
 ,@ColumnName varchar(500)=''
 ,@IsStockUnit BIT = 1          
 ,@strTransactionType NVARCHAR(50) = NULL 
 )    
AS   
    
 IF(@ColumnName='')
 BEGIN
	SET @ColumnName='strPartNumber';
 END
  
 IF LTRIM(RTRIM(@strLocName))<>'<<All Locations>>' 
  BEGIN
   SET @strLocName=(select Top 1 strLocName from tblInvLoc Where strDesc=@strLocName)
  END
	
  DECLARE @Count INT=0;   
  DECLARE @SplitWord TABLE(wordRank INT, word VARCHAR(200))
  SET @Search = LTRIM(RTRIM(@Search)) -- Remove white space
  DECLARE @WordSeperator VARCHAR(1) =' '
  
  DECLARE @TotalWord Int=0
  DECLARE @WordCount Int=1

  DECLARE @Keyword1 VARCHAR(100)=''
  DECLARE @Keyword2 VARCHAR(100)=''
  DECLARE @Keyword3 VARCHAR(100)=''
  DECLARE @Keyword4 VARCHAR(100)=''
  DECLARE @Keyword5 VARCHAR(100)=''
  DECLARE @Keyword6 VARCHAR(100)=''
  DECLARE @Keyword7 VARCHAR(100)=''
  DECLARE @Keyword8 VARCHAR(100)=''
  DECLARE @Keyword9 VARCHAR(100)=''
  DECLARE @Keyword10 VARCHAR(100)=''
  Declare @Query as varchar(Max)=''
  Declare @Query1 as varchar(Max)=''
  Declare @Query2 as varchar(Max)=''
  IF(CHARINDEX(',',@Search)) > 0 
	BEGIN
		 SET @WordSeperator=','
	END  

INSERT INTO @SplitWord select Id, [Data] from dbo.split(@Search, @WordSeperator)

SET @TotalWord=(SELECT COUNT(*) FROM @SplitWord)

While(@WordCount<=@TotalWord)
Begin
		IF @WordCount=1 
			BEGIN
				SET @Keyword1=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=2 
			BEGIN
				SET @Keyword2=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=3 
			BEGIN
				SET @Keyword3=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=4 
			BEGIN
				SET @Keyword4=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=5 
			BEGIN
				SET @Keyword5=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=6 
			BEGIN
				SET @Keyword6=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=7 
			BEGIN
				SET @Keyword7=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=8 
			BEGIN
				SET @Keyword8=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=9
			BEGIN
				SET @Keyword9=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=10 
			BEGIN
				SET @Keyword10=(Select Word from @SplitWord Where wordRank=@WordCount)
			END

	SET @WordCount=@WordCount+1
End
		    

 DECLARE @Offset INT
 SET @Offset = @PageSize * (@PageNum-1)
 
 DECLARE @uidPriceBasedID AS UNIQUEIDENTIFIER
 SET @uidPriceBasedID = NULL
 
 IF ISNULL(@PriceList, '') <> ''	AND ISNULL(@Date, '') <> ''
 BEGIN
 	SELECT TOP 1 @uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
 	FROM tblPriceListsByDate
 	INNER JOIN dbo.tblInvPrice ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
 	WHERE @Date BETWEEN dbo.tblPriceListsByDate.dteStartDate AND dbo.tblPriceListsByDate.dteFinishDate AND tblPriceListsByDate.strPricelist = @PriceList
 END

 IF ( (LTRIM(RTRIM(@VendorName))='<<ALL Vendors>>')  OR (LTRIM(RTRIM(@VendorName))='<<ALL Customers>>'))
 BEGIN
		SET @VendorName=''
 END

 IF ( (LTRIM(RTRIM(@EmployeeName))='<<ALL Employees>>'))        
 BEGIN        
		SET @EmployeeName=''
 END  

CREATE TABLE #TempInvVend (
	[strVendName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strUnit] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	)

INSERT INTO #TempInvVend
SELECT DISTINCT tblInvVend.strVendName
	,tblInvVend.strPartNumber
	,tblInvVend.strUnit
FROM tblInvVend
INNER JOIN tblInvVendPriceListsByDate ON tblInvVend.uidPriceBasedID = tblInvVendPriceListsByDate.uidPriceBasedID
	AND tblInvVend.strVendName = tblInvVendPriceListsByDate.strVendName
INNER JOIN tblVendors ON tblInvVendPriceListsByDate.strVendName = tblVendors.strVendName

CREATE TABLE #TempINV (
	[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strDesc] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[intType] [tinyint] NOT NULL
	,[strCategory] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
	,[bitUseBOM] [bit] NOT NULL
	,[bitInactive] [bit] NOT NULL
	,[decSumAvail] [money] NOT NULL
	,[decSumAlloc] [money] NOT NULL
	,[decSumOnHand] [money] NOT NULL
	,[decSumValue] [money] NOT NULL
	,[decSumOnOrder] [money] NOT NULL
	,[strField1] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strField2] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strField3] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strField4] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strField5] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strField6] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strBarCode] [nvarchar](300) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[bitInvSerialType] [bit] NOT NULL
	,[strBarCode2] [nvarchar](300) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strPricelist] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
	,[decSelling] [money] NOT NULL
	,[bitTrackExpiryDate] [bit] NULL
	,[decLastPPUnit] [money] NOT NULL
	,[intDecimalQuantity] [int] NOT NULL DEFAULT((2))
	,[strCuVeID] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
	,[strSubCategory] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
	,[decSumManuf] [money] NOT NULL
	,[strSubCategoryGroup] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
	,[decMovingAvgCost] [money] NOT NULL
	,[BudgetQty] [money] NULL     
	,[BudgetFrequency] varchar(50) NULL
	,[strStockUnit] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
	)
    
CREATE TABLE #TempType (    
[intType] [tinyint] NOT NULL)    
    
INSERT INTO #TempType    
SELECT * FROM (SELECT data FROM dbo.split(@intType, ',')) Z WHERE Z.data <> ''    
    
IF ISNULL((SELECT intType FROM #TempType WHERE intType = 5), 0) = 5    
BEGIN    
    
Insert into #TempInv  
 SELECT DISTINCT dbo.tblInv.strPartNumber    
  ,dbo.tblInv.strDesc    
  ,dbo.tblInv.intType    
  ,dbo.tblInv.strCategory    
  ,dbo.tblInv.bitUseBOM    
  ,dbo.tblInv.bitInactive    
  ,dbo.tblInv.decSumAvail    
  ,dbo.tblInv.decSumAlloc    
  ,dbo.tblInv.decSumOnHand    
  ,dbo.tblInv.decSumValue    
  ,dbo.tblInv.decSumOnOrder    
  ,dbo.tblInv.strField1    
  ,dbo.tblInv.strField2    
  ,dbo.tblInv.strField3    
  ,dbo.tblInv.strField4    
  ,dbo.tblInv.strField5    
  ,dbo.tblInv.strField6    
  ,dbo.tblInv.strBarCode    
  ,dbo.tblInv.bitInvSerialType    
  ,dbo.tblInv.strBarCode2    
  ,NULL AS strPricelist    
  ,Cast(0 as decimal(18,2)) AS decSelling    
  ,NULL AS bitTrackExpiryDate    
  ,dbo.tblInv.decLastPPUnit    
  ,dbo.tblinv.intDecimalQuantity    
  ,NULL AS strCuVeID    
  ,dbo.tblInv.strSubCategory    
  ,dbo.tblInv.decSumManuf    
  ,dbo.tblInv.strSubCategoryGroup    
  ,decMovingAvgCost = CASE decSumOnHand WHEN 0 THEN 0 ELSE (decSumValue/decSumOnHand) END
  ,[BudgetQty] = 0.00    
  ,[BudgetFrequency] = 'No Budget'   
  ,dbo.tblInv.strStockUnit 
 FROM dbo.tblInv (NOLOCK)    
 WHERE (dbo.tblInv.intType = 5)    
 AND (dbo.tblInv.bitInactive = 0)   AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1) 
 AND ((
			  
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)   
  )     
END    
 
 SET @Count=(SELECT DISTINCT Count(*) FROM #TempInv)

IF @FilterType = 0	--NONE    
BEGIN    
    
 IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
 BEGIN    
    IF @strTransactionType LIKE '%Purchases%'
	BEGIN
		IF @Keyword1 <> ''
		BEGIN
			; WITH Data_Inv
	AS (
		Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all

		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,NULL AS strCuVeID
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (
						1
						,@IsStockUnit
						)
		AND (
						(
							dbo.tblInvUOMs.strUseFor = @strTransactionType
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))

		UNION ALL
		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,NULL AS strCuVeID
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvUOMs.strFromUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit = 1
		AND (
						dbo.tblInvUOMs.strUseFor IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')
							)
						)		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))


	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	Where
	((
					(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					))

	)
	SELECT *,(SElect Count(*) from Data_Final as a) as [intRowCount]
	FROM Data_Final
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
		else
		begin
			; WITH Data_Inv
		AS (
		Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all

	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,NULL AS strCuVeID
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (
						1
						,@IsStockUnit
						)
		AND (
						(
							dbo.tblInvUOMs.strUseFor = @strTransactionType
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))

		UNION ALL
		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,NULL AS strCuVeID
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvUOMs.strFromUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit = 1
		AND (
						dbo.tblInvUOMs.strUseFor IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')
							)
						)		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	)
	SELECT *
			,(SElect Count(*) from Data_Final as a) as [intRowCount]
	FROM Data_Final
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
	end
	Else
	Begin
		IF @Keyword1 <> ''
		BEGIN
			; WITH Data_Inv
	AS (

	Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all
		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,NULL AS strCuVeID
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (
						1
						,@IsStockUnit
						)
		AND (
						(
							dbo.tblInvUOMs.strUseFor = @strTransactionType
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	Where
	((
					(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					))

	)
	SELECT *,(SElect Count(*) from Data_Final as a) as [intRowCount]
	FROM Data_Final
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
		else
		begin
			; WITH Data_Inv
		AS (
		Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
			,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
			,BudgetQty,BudgetFrequency,strStockUnit
			 from #TempInv 

	Union all

	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,NULL AS strCuVeID
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
		AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	)
	SELECT *
			,(SElect Count(*) from Data_Final as a) as [intRowCount]
	FROM Data_Final
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
	end
 END    
 ELSE    
 BEGIN    
	IF @strTransactionType LIKE '%Purchases%'
	BEGIN
		If @Keyword1 <>''
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
			   ,NULL AS strCuVeID    
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  (
				(	(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						))
					)
					UNION ALL
					
					SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
			   ,NULL AS strCuVeID    
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvUOMs.strFromUnit  AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1)
			  AND (dbo.tblInvUOMs.strUseFor IN (SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')))				
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ((
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)  )
			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost
			 from #TempInv 

	Union all

				SELECT 
					Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strCuVeID,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit			
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
		WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
			   ,NULL AS strCuVeID    
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)				
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  
			UNION ALL
					
			SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
			   ,NULL AS strCuVeID    
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvUOMs.strFromUnit  AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1)
			  AND (dbo.tblInvUOMs.strUseFor IN (SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')))				
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			 
			  )
			  ,Data_Final
			AS (
			Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost
			 from #TempInv 

		Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strCuVeID,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
	END
	ELSE
	BEGIN
		If @Keyword1 <>''
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
			   ,NULL AS strCuVeID    
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)				
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ((
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						))
					)				 
			  )
			  ,Data_Final
			AS (
					Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost
			 from #TempInv 

		Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strCuVeID,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
			   ,NULL AS strCuVeID    
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)				
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)

			  )
			  ,Data_Final
			AS (
			Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strCuVeID,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
	END

 END    
END    


IF @FilterType = 1	--VENDOR    
BEGIN 
IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
 BEGIN    
    IF @strTransactionType LIKE '%Purchases%'
	BEGIN
		IF @Keyword1 <> ''
		BEGIN
		; WITH Data_Inv
	AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all


		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (
						1
						,@IsStockUnit
						)
		AND (
						(
							dbo.tblInvUOMs.strUseFor = @strTransactionType
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))

		UNION ALL
		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvUOMs.strFromUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit = 1
		AND (
						dbo.tblInvUOMs.strUseFor IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')
							)
						)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))


	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	Where
	((
					(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					))

	)
	SELECT Data_Final.*,
	(SElect Count(*) from Data_Final as a) as [intRowCount]
	,#TempInvVend.strVendName AS strCuVeID
	FROM Data_Final
	LEFT OUTER JOIN #TempInvVend ON Data_Final.strPartNumber = #TempInvVend.strPartNumber
					AND #TempInvVend.strUnit = Data_Final.strStockUnit
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
		else
		begin
			; WITH Data_Inv
		AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all



	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (
						1
						,@IsStockUnit
						)
		AND (
						(
							dbo.tblInvUOMs.strUseFor = @strTransactionType
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))

		UNION ALL
		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
	
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvUOMs.strFromUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit = 1
		AND (
						dbo.tblInvUOMs.strUseFor IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')
							)
						)		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY Data_Inv.strPartNumber
			) RowNum
		,Data_Inv.*
	,#TempInvVend.strVendName AS strCuVeID
	FROM Data_Inv
	LEFT OUTER JOIN #TempInvVend ON Data_Inv.strPartNumber = #TempInvVend.strPartNumber
					AND #TempInvVend.strUnit = Data_Inv.strStockUnit
	)
	SELECT *
			,(SElect Count(*) from Data_Final as a) as [intRowCount]
	FROM Data_Final
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
	end
	Else
	Begin
		IF @Keyword1 <> ''
		BEGIN
			; WITH Data_Inv
	AS (
	Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all

		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (
						1
						,@IsStockUnit
						)
		AND (
						(
							dbo.tblInvUOMs.strUseFor = @strTransactionType
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	Where
	((
					(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
			)
	)
	SELECT Data_Final.*
	,(SElect Count(*) from Data_Final as a) as [intRowCount]
	,#TempInvVend.strVendName AS strCuVeID
	FROM Data_Final
	LEFT OUTER JOIN #TempInvVend ON Data_Final.strPartNumber = #TempInvVend.strPartNumber
					AND #TempInvVend.strUnit = Data_Final.strStockUnit
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
		else
		begin
			; WITH Data_Inv
		AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all


	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,NULL AS strCuVeID
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
		AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	)
	SELECT Data_Final.*
			,(SElect Count(*) from Data_Final as a) as [intRowCount]
	,#TempInvVend.strVendName AS strCuVeID
	FROM Data_Final
	LEFT OUTER JOIN #TempInvVend ON Data_Final.strPartNumber = #TempInvVend.strPartNumber
					AND #TempInvVend.strUnit = Data_Final.strStockUnit
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
	end
 END    
 ELSE    
 BEGIN    
	IF @strTransactionType LIKE '%Purchases%'
	BEGIN
		If @Keyword1 <>''
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)				
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ((
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						))
					)
					UNION ALL
					
					SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvUOMs.strFromUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1)
			  AND (dbo.tblInvUOMs.strUseFor IN (SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')))				
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ((
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)  )
			  )
			  ,Data_Final
			AS (
			Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,#TempInvVend.strVendName AS strCuVeID
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber				
			    LEFT OUTER JOIN #TempInvVend ON Data_Inv.strPartNumber = #TempInvVend.strPartNumber
					AND #TempInvVend.strUnit = Data_Inv.strStockUnit
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)				
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  
			UNION ALL
					
			SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvUOMs.strFromUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1)
			  AND (dbo.tblInvUOMs.strUseFor IN (SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')))				
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			 
			  )
			  ,Data_Final
			AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,#TempInvVend.strVendName AS strCuVeID
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber				
			    LEFT OUTER JOIN #TempInvVend ON Data_Inv.strPartNumber = #TempInvVend.strPartNumber
					AND #TempInvVend.strUnit = Data_Inv.strStockUnit
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
	END
	ELSE
	BEGIN
		If @Keyword1 <>''
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity       
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)				
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  (
					((
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						))
					)				 
			  )
			  ,Data_Final
			AS ( Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,#TempInvVend.strVendName AS strCuVeID
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber				
			    LEFT OUTER JOIN #TempInvVend ON Data_Inv.strPartNumber = #TempInvVend.strPartNumber
					AND #TempInvVend.strUnit = Data_Inv.strStockUnit
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
	Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity       
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)				
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)

			  )
			  ,Data_Final
			AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,#TempInvVend.strVendName AS strCuVeID
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber				
			    LEFT OUTER JOIN #TempInvVend ON Data_Inv.strPartNumber = #TempInvVend.strPartNumber
					AND #TempInvVend.strUnit = Data_Inv.strStockUnit
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
	END

 END   
END

IF @FilterType = 2	--CUSTOMER    
BEGIN 
	IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
 BEGIN    
    IF @strTransactionType LIKE '%Purchases%'
	BEGIN
		IF @Keyword1 <> ''
		BEGIN
		; WITH Data_Inv
	AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all
		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
		AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both')OR dbo.tblInvPrice.bitStockUnit = 1)		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))

		UNION ALL
		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvUOMs.strFromUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
				 AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit = 1
		AND (
						dbo.tblInvUOMs.strUseFor IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')
							)
						)		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))


	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	Where
	((
					(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
					)
	)
	SELECT Data_Final.*,
	(SElect Count(*) from Data_Final as a) as [intRowCount]
	,dbo.tblInvCustomer.strCustName AS strCuVeID
	FROM Data_Final
	LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Final.strPartNumber = dbo.tblInvCustomer.strPartNumber
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
		else
		begin
			; WITH Data_Inv
		AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all
	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (
						1
						,@IsStockUnit
						)
		AND (
						(
							dbo.tblInvUOMs.strUseFor = @strTransactionType
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))

		UNION ALL
		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
	
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvUOMs.strFromUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit = 1
		AND (
						dbo.tblInvUOMs.strUseFor IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')
							)
						)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY Data_Inv.strPartNumber
			) RowNum
		,Data_Inv.*
	,dbo.tblInvCustomer.strCustName AS strCuVeID
	FROM Data_Inv
	LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Inv.strPartNumber = dbo.tblInvCustomer.strPartNumber
	)
	SELECT *
			,(SElect Count(*) from Data_Final as a) as [intRowCount]
	FROM Data_Final
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
	end
	Else
	Begin
		IF @Keyword1 <> ''
		BEGIN
			; WITH Data_Inv
	AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all
		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (
						1
						,@IsStockUnit
						)
		AND (
						(
							dbo.tblInvUOMs.strUseFor = @strTransactionType
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	Where
	((
					(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
			)
	)
	SELECT Data_Final.*
	,(SElect Count(*) from Data_Final as a) as [intRowCount]
		,dbo.tblInvCustomer.strCustName AS strCuVeID
	FROM Data_Final
	LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Final.strPartNumber = dbo.tblInvCustomer.strPartNumber
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
		else
		begin
			; WITH Data_Inv
		AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all
	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,NULL AS strCuVeID
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
		AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	)
	SELECT Data_Final.*
			,(SElect Count(*) from Data_Final as a) as [intRowCount]
		,dbo.tblInvCustomer.strCustName AS strCuVeID
	FROM Data_Final
	LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Final.strPartNumber = dbo.tblInvCustomer.strPartNumber
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
	end
 END    
 ELSE    
 BEGIN    
	IF @strTransactionType LIKE '%Purchases%'
	BEGIN
		If @Keyword1 <>''
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)				
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ((
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						))
					)
					UNION ALL
					
					SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvUOMs.strFromUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1)
			  AND (dbo.tblInvUOMs.strUseFor IN (SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')))				
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ((
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)  )
			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 	,dbo.tblInvCustomer.strCustName AS strCuVeID
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber				
			   LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Inv.strPartNumber = dbo.tblInvCustomer.strPartNumber
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		
Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)				
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  
			UNION ALL
					
			SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvUOMs.strFromUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1)
			  AND (dbo.tblInvUOMs.strUseFor IN (SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')))
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			 
			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
					,dbo.tblInvCustomer.strCustName AS strCuVeID
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber				
			    LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Inv.strPartNumber = dbo.tblInvCustomer.strPartNumber
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		
Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
	END
	ELSE
	BEGIN
		If @Keyword1 <>''
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity       
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ( (
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)				 
			  ))
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,dbo.tblInvCustomer.strCustName AS strCuVeID
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber				
			    LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Inv.strPartNumber = dbo.tblInvCustomer.strPartNumber
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity       
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)				
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)

			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,dbo.tblInvCustomer.strCustName AS strCuVeID
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber				
			    LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Inv.strPartNumber = dbo.tblInvCustomer.strPartNumber
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
	END

 END  
END

 
IF @FilterType = 3	--Employee    
BEGIN 
	 IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
	 BEGIN    
	    
	IF @strTransactionType LIKE '%Purchases%'
	BEGIN

		 IF @Keyword1 <> ''
		BEGIN

		; WITH Data_Inv
	AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,strStockUnit
	 from #TempInv 

	Union all
	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)	
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
		AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both') OR dbo.tblInvPrice.bitStockUnit = 1)		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))

		UNION ALL

		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,dbo.tblInvUOMs.strFromUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)	
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit = 1
		AND (dbo.tblInvUOMs.strUseFor IN (SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',') ) )		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))


	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY Data_Inv.strPartNumber
			) RowNum
		,Data_Inv.*
		,BudgetQty = (Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END)
		,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
		 WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
		, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID
	FROM Data_Inv LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber    
	Where  ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
	AND ((
					(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
					)
	)
		
		SELECT *
		,(COUNT(*) OVER()) as intRowCount   		
		FROM Data_Final 		
		WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
		else
		begin
			 ; WITH Data_Inv
		AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,strStockUnit
	 from #TempInv 

	Union all
	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
		AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both')OR dbo.tblInvPrice.bitStockUnit = 1)		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))

		UNION ALL

		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,dbo.tblInvUOMs.strFromUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit = 1
		AND (dbo.tblInvUOMs.strUseFor IN ( SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')))		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))

	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY Data_Inv.strPartNumber
			) RowNum
		,Data_Inv.*
		,BudgetQty = CAST((Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END) as decimal)
		,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
		 WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
		, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID      
	FROM Data_Inv 
	LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber 
	WHERE ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
	)

		SELECT *
		,(COUNT(*) OVER()) as intRowCount  		
		FROM Data_Final 		
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)

		end
	 END
	 ELSE
	 BEGIN
		 IF @Keyword1 <> ''
		BEGIN

			; WITH Data_Inv
	AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,strStockUnit
	 from #TempInv 

	Union all
	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)	
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
		AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both') OR dbo.tblInvPrice.bitStockUnit = 1)		
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY Data_Inv.strPartNumber
			) RowNum
		,Data_Inv.*
		,BudgetQty = (Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END)
		,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
		 WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
		, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID
	FROM Data_Inv LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber    
	Where  ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
	AND (
				(	(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
					)
	)
		
		SELECT *
		,(COUNT(*) OVER()) as intRowCount   		
		FROM Data_Final 		
		WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
		else
		begin
			 ; WITH Data_Inv
		AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,strStockUnit
	 from #TempInv 

	Union all
	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
		AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both')OR dbo.tblInvPrice.bitStockUnit = 1)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY Data_Inv.strPartNumber
			) RowNum
		,Data_Inv.*
		,BudgetQty = CAST((Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END) as decimal)
		,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
		 WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
		, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID      
	FROM Data_Inv 
	LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber 
	WHERE ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
	)

		SELECT *
		,(COUNT(*) OVER()) as intRowCount  		
		FROM Data_Final 		
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)

		end
	 END
	 END    
	 ELSE    
	 BEGIN   
	 IF @strTransactionType LIKE '%Purchases%'
	BEGIN
	  
			If @Keyword1 <>''
			BEGIN
					; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2    
			   ,@PriceList strPricelist 
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling   
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)    			        			 
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)			  
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ((
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					))
				UNION ALL

				SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2    
			   ,@PriceList strPricelist 
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling   
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,dbo.tblInvUOMs.strFromUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)    			        			 
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit = 1
			 AND (dbo.tblInvUOMs.strUseFor IN (SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')))			  
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ((
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
					)
			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,BudgetQty,BudgetFrequency,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup
					
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,BudgetQty =CAST((Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END) as decimal)
				 ,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
				WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
				, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID       
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber        
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)
					AND ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
				)			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
			END
			ELSE
			BEGIN
					; WITH Data_Inv
		AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling   
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    			 
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)     
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0    			    			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both')OR dbo.tblInvPrice.bitStockUnit = 1)			  
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)

			  UNION ALL

			  SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling   
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    			 
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
		
			   ,dbo.tblInvUOMs.strFromUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)     
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMS.bitInactive = 0    			    			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit = 1
			  AND (dbo.tblInvUOMs.strUseFor IN (SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')))			 
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)

			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,BudgetQty,BudgetFrequency,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling ,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,BudgetQty = CAST((Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END) as decimal)
				,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
				 WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
				, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID   
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber    
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)					
					AND ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
				)			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
			END
	END
	ELSE
	BEGIN
		If @Keyword1 <>''
			BEGIN
					; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2    
			   ,@PriceList strPricelist 
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling   
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            			 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)    			        			 
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)			  
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ((
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					))
			  )
			  ,Data_Final
			AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,BudgetQty,BudgetFrequency,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,BudgetQty =CAST((Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END) as decimal)
				 ,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
				WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
				, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID       
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber        
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)
					AND ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
				)			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
			END
			ELSE
			BEGIN
					; WITH Data_Inv
		AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling   
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    			 
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            

			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)     
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0    			    			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both')OR dbo.tblInvPrice.bitStockUnit = 1)			  
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,BudgetQty,BudgetFrequency,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,BudgetQty = CAST((Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END) as decimal)
				,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
				 WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
				, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID   
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber    
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)					
					AND ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
				)			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
			END
	END

	 END    
END
    
Drop table #TempType
Drop table #TempInvVend
Drop table #TempINV

GO

/****** Object:  StoredProcedure [dbo].[GettblInvByCriteriaByUser]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GettblInvByCriteriaByUser] (    
 @intType VARCHAR(50) = NULL    
 ,@UserName NVARCHAR(50) = NULL       
 ,@strLocName VARCHAR(500)= NULL       
 ,@FilterType INTEGER = 0
 ,@PageSize INT = 25
 ,@PageNum  INT =1  
 ,@Search VARCHAR(500)=''
 ,@Category varchar(250)=''
 ,@SubCategory varchar(250)=''
 ,@SubCategoryGroup varchar(250)=''
 ,@VendorName varchar(500)=''
 ,@EmployeeName varchar(500)=''
 ,@BomItem bit=0
 ,@SNLotTrack bit=0
 ,@ColumnName varchar(500)=''
 )    
AS   
    
 IF(@ColumnName='')
 BEGIN
	SET @ColumnName='strPartNumber';
 END
  
 IF LTRIM(RTRIM(@strLocName))<>'<<All Locations>>' 
  BEGIN
   SET @strLocName=(select Top 1 strLocName from tblInvLoc Where strDesc=@strLocName)
  END

  DECLARE @Count INT=0;   
  DECLARE @SplitWord TABLE(wordRank INT, word VARCHAR(200))
  SET @Search = LTRIM(RTRIM(@Search)) -- Remove white space
  DECLARE @WordSeperator VARCHAR(1) =' '
  
  DECLARE @TotalWord Int=0
  DECLARE @WordCount Int=1

  DECLARE @Keyword1 VARCHAR(100)=''
  DECLARE @Keyword2 VARCHAR(100)=''
  DECLARE @Keyword3 VARCHAR(100)=''
  DECLARE @Keyword4 VARCHAR(100)=''
  DECLARE @Keyword5 VARCHAR(100)=''
  DECLARE @Keyword6 VARCHAR(100)=''
  DECLARE @Keyword7 VARCHAR(100)=''
  DECLARE @Keyword8 VARCHAR(100)=''
  DECLARE @Keyword9 VARCHAR(100)=''
  DECLARE @Keyword10 VARCHAR(100)=''
  Declare @Query as varchar(Max)=''
  Declare @Query1 as varchar(Max)=''
  Declare @Query2 as varchar(Max)=''
  IF(CHARINDEX(',',@Search)) > 0 
	BEGIN
		 SET @WordSeperator=','
	END  

INSERT INTO @SplitWord select Id, [Data] from dbo.split(@Search, @WordSeperator)

SET @TotalWord=(SELECT COUNT(*) FROM @SplitWord)

While(@WordCount<=@TotalWord)
Begin
		IF @WordCount=1 
			BEGIN
				SET @Keyword1=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=2 
			BEGIN
				SET @Keyword2=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=3 
			BEGIN
				SET @Keyword3=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=4 
			BEGIN
				SET @Keyword4=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=5 
			BEGIN
				SET @Keyword5=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=6 
			BEGIN
				SET @Keyword6=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=7 
			BEGIN
				SET @Keyword7=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=8 
			BEGIN
				SET @Keyword8=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=9
			BEGIN
				SET @Keyword9=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=10 
			BEGIN
				SET @Keyword10=(Select Word from @SplitWord Where wordRank=@WordCount)
			END

	SET @WordCount=@WordCount+1
End
		    

 DECLARE @Offset INT
 SET @Offset = @PageSize * (@PageNum-1)
 

 IF ( (LTRIM(RTRIM(@VendorName))='<<ALL Vendors>>')  OR (LTRIM(RTRIM(@VendorName))='<<ALL Customers>>'))
 BEGIN
		SET @VendorName=''
 END

 IF ( (LTRIM(RTRIM(@EmployeeName))='<<ALL Employees>>'))        
 BEGIN        
		SET @EmployeeName=''
 END  

    
CREATE TABLE #TempType (    
[intType] [tinyint] NOT NULL)    
    
INSERT INTO #TempType    
SELECT * FROM (SELECT data FROM dbo.split(@intType, ',')) Z WHERE Z.data <> ''    
 
  CREATE TABLE #TempINV (   
[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,    
[strDesc] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,    
[intType] [tinyint] NOT NULL,    
[strCategory] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
[bitUseBOM] [bit] NOT NULL,    
[bitInactive] [bit] NOT NULL,    
[decSumAvail] [money] NOT NULL,    
[decSumAlloc] [money] NOT NULL,    
[decSumOnHand] [money] NOT NULL,    
[decSumValue] [money] NOT NULL,    
[decSumOnOrder] [money] NOT NULL,    
[strField1] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,    
[strField2] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,    
[strField3] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,    
[strField4] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,    
[strField5] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,    
[strField6] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,    
[strBarCode] [nvarchar](300) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,    
[bitInvSerialType] [bit] NOT NULL,    
[strBarCode2] [nvarchar](300) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,    
[strPricelist] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
[decSelling] [money] NOT NULL,    
[bitTrackExpiryDate] [bit] NULL,    
[decLastPPUnit] [money] NOT NULL,    
[intDecimalQuantity] [int] NOT NULL DEFAULT ((2)),    
[strCuVeID] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
[strSubCategory] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
[decSumManuf] [money] NOT NULL,    
[strSubCategoryGroup] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,      
[decMovingAvgCost] [money] NOT NULL,
[BudgetQty] [money] NULL,
[BudgetFrequency] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strStockUnit] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL) 


IF ISNULL((SELECT intType FROM #TempType WHERE intType = 5), 0) = 5    
BEGIN    
    
 Insert into #TempInv   
 SELECT DISTINCT dbo.tblInv.strPartNumber    
  ,dbo.tblInv.strDesc    
  ,dbo.tblInv.intType    
  ,dbo.tblInv.strCategory    
  ,dbo.tblInv.bitUseBOM    
  ,dbo.tblInv.bitInactive    
  ,dbo.tblInv.decSumAvail    
  ,dbo.tblInv.decSumAlloc    
  ,dbo.tblInv.decSumOnHand    
  ,dbo.tblInv.decSumValue    
  ,dbo.tblInv.decSumOnOrder    
  ,dbo.tblInv.strField1    
  ,dbo.tblInv.strField2    
  ,dbo.tblInv.strField3    
  ,dbo.tblInv.strField4    
  ,dbo.tblInv.strField5    
  ,dbo.tblInv.strField6    
  ,dbo.tblInv.strBarCode    
  ,dbo.tblInv.bitInvSerialType    
  ,dbo.tblInv.strBarCode2    
  ,NULL AS strPricelist    
  ,Cast(0 as decimal(18,2)) AS decSelling   
  ,NULL AS bitTrackExpiryDate    
  ,dbo.tblInv.decLastPPUnit    
  ,dbo.tblinv.intDecimalQuantity    
  ,NULL AS strCuVeID    
  ,dbo.tblInv.strSubCategory    
  ,dbo.tblInv.decSumManuf    
  ,dbo.tblInv.strSubCategoryGroup    
  ,decMovingAvgCost = CASE decSumOnHand WHEN 0 THEN 0 ELSE (decSumValue/decSumOnHand) END
  ,BudgetQty = 0.00    
  ,BudgetFrequency = 'No Budget'    
  ,dbo.tblInv.strStockUnit  
 FROM dbo.tblInv (NOLOCK)    
 WHERE (dbo.tblInv.intType = 5)    
 AND (dbo.tblInv.bitInactive = 0)   AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1) 
    AND ((
			  
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)   
  )  
END    
    
IF @FilterType = 0	--NONE    
BEGIN    
    
 IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
 BEGIN    
    
	IF @Keyword1 <> ''
	BEGIN

		;WITH Data_Inv
  AS (

  	Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all

	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,dbo.tblInv.decSumAvail
		,dbo.tblInv.decSumAlloc
		,dbo.tblInv.decSumOnHand
		,dbo.tblInv.decSumValue
		,dbo.tblInv.decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,dbo.tblInv.strBarCode
		,dbo.tblInv.bitInvSerialType
		,dbo.tblInv.strBarCode2
		,NULL AS strPricelist
		,Cast(0 as Decimal(18,0)) AS decSelling   
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,NULL AS strCuVeID
		,dbo.tblInv.strSubCategory
		,dbo.tblInv.decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInv.strStockUnit
	FROM dbo.tblInv(NOLOCK)
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	Where
	(
	   (
					(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
					)
	)
	SELECT *			
			,(SElect Count(*) from Data_Final as a) as [intRowCount]
	FROM Data_Final
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
	end
	else
	begin
		;WITH Data_Inv
		AS (
		SElect strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 
	Union all
	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,dbo.tblInv.decSumAvail
		,dbo.tblInv.decSumAlloc
		,dbo.tblInv.decSumOnHand
		,dbo.tblInv.decSumValue
		,dbo.tblInv.decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,dbo.tblInv.strBarCode
		,dbo.tblInv.bitInvSerialType
		,dbo.tblInv.strBarCode2
		,NULL AS strPricelist    
		,Cast(0 as Decimal(18,0)) AS decSelling   
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,NULL AS strCuVeID
		,dbo.tblInv.strSubCategory
		,dbo.tblInv.decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
	
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInv.strStockUnit
	FROM dbo.tblInv(NOLOCK)
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	)
	SELECT *
			,(SElect Count(*) from Data_Final as a) as [intRowCount]
	FROM Data_Final
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
	end

 END    
 ELSE    
 BEGIN    

	If @Keyword1 <>''
	BEGIN
			; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,dbo.tblInv.strBarCode    
			   ,dbo.tblInv.bitInvSerialType    
			   ,dbo.tblInv.strBarCode2    
			     ,NULL AS strPricelist    
			  ,Cast(0 as Decimal(18,0)) AS decSelling      
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
			   ,NULL AS strCuVeID    
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget'
			   ,dbo.tblInv.strStockUnit 	      
			  FROM dbo.tblInv (NOLOCK)        			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  (
			  (
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
					)
			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,strSubCategoryGroup,BudgetQty,BudgetFrequency,strStockUnit,
			decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost
			from #TempInv
			Union all
				SELECT
				Data_Inv.*
				  ,dbo.tblInvExt.decAvail   AS decSumAvail  
				  ,dbo.tblInvExt.decAlloc   AS decSumAlloc 
				  ,dbo.tblInvExt.decOnHand   AS decSumOnHand 
				  ,dbo.tblInvExt.decValue    AS decSumValue
				  ,dbo.tblInvExt.decOnOrder  AS decSumOnOrder 
				  ,dbo.tblInvExt.decManuf    AS decSumManuf  
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 

				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from (SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
	FROM Data_Final) Temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
	END
	ELSE
	BEGIN
			; WITH Data_Inv
		AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,dbo.tblInv.strBarCode    
			   ,dbo.tblInv.bitInvSerialType    
			   ,dbo.tblInv.strBarCode2    
			     ,NULL AS strPricelist    
			   ,Cast(0 as Decimal(18,0)) AS decSelling   
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
			   ,NULL AS strCuVeID    
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInv.strStockUnit	  
			  FROM dbo.tblInv (NOLOCK)        			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,strSubCategoryGroup,BudgetQty,BudgetFrequency,strStockUnit,
			decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost
			from #TempInv
			UNION ALL
				SELECT
				Data_Inv.*
				  ,dbo.tblInvExt.decAvail   AS decSumAvail  
				  ,dbo.tblInvExt.decAlloc   AS decSumAlloc 
				  ,dbo.tblInvExt.decOnHand   AS decSumOnHand 
				  ,dbo.tblInvExt.decValue    AS decSumValue
				  ,dbo.tblInvExt.decOnOrder  AS decSumOnOrder 
				  ,dbo.tblInvExt.decManuf    AS decSumManuf    
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)
				)
			
	Select * from (SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
	FROM Data_Final) as Temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
	END
 END    
END    


IF @FilterType = 1	--VENDOR    
BEGIN 
	 IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
 BEGIN    
    
	IF @Keyword1 <> ''
	BEGIN

		; WITH Data_Inv
  AS (

  
  Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all

	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,dbo.tblInv.decSumAvail
		,dbo.tblInv.decSumAlloc
		,dbo.tblInv.decSumOnHand
		,dbo.tblInv.decSumValue
		,dbo.tblInv.decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,dbo.tblInv.strBarCode
		,dbo.tblInv.bitInvSerialType
		,dbo.tblInv.strBarCode2
		,NULL AS strPricelist    
		,Cast(0 as Decimal(18,0)) AS decSelling   
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,dbo.tblInv.decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInv.strStockUnit
	FROM dbo.tblInv(NOLOCK)
	
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY Data_Inv.strPartNumber
			) RowNum
		,Data_Inv.*,dbo.tblInvVend.strVendName AS strCuVeID
	FROM Data_Inv LEFT OUTER JOIN dbo.tblInvVend (NOLOCK) ON Data_Inv.strPartNumber = tblInvVend.strPartNumber 
	Where (dbo.tblInvVend.strVendName= Case when @VendorName <> '' then @VendorName else dbo.tblInvVend.strVendName end) And
	(
			(		(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
					)
	)
	SELECT *
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
	FROM Data_Final 
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
	end
	else
	begin
		 ; WITH Data_Inv
		AS (

			Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all

	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,dbo.tblInv.decSumAvail
		,dbo.tblInv.decSumAlloc
		,dbo.tblInv.decSumOnHand
		,dbo.tblInv.decSumValue
		,dbo.tblInv.decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,dbo.tblInv.strBarCode
		,dbo.tblInv.bitInvSerialType
		,dbo.tblInv.strBarCode2
			,NULL AS strPricelist    
		,Cast(0 as Decimal(18,0)) AS decSelling   
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,dbo.tblInv.strSubCategory
		,dbo.tblInv.decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
	
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInv.strStockUnit
	FROM dbo.tblInv(NOLOCK)
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY Data_Inv.strPartNumber
			) RowNum
		,Data_Inv.*,dbo.tblInvVend.strVendName  AS strCuVeID
	FROM Data_Inv 
	LEFT OUTER JOIN dbo.tblInvVend (NOLOCK) ON Data_Inv.strPartNumber = tblInvVend.strPartNumber 
	WHERE (dbo.tblInvVend.strVendName= Case when @VendorName <> '' then @VendorName else dbo.tblInvVend.strVendName end)
	)
	SELECT *		
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
	FROM Data_Final 
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
	end

 END    
 ELSE    
 BEGIN    

	If @Keyword1 <>''
	BEGIN
			; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,dbo.tblInv.strBarCode    
			   ,dbo.tblInv.bitInvSerialType    
			   ,dbo.tblInv.strBarCode2    
			     ,NULL AS strPricelist    
		       ,Cast(0 as Decimal(18,0)) AS decSelling     
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
  
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget'
			   ,dbo.tblInv.strStockUnit 
			  FROM dbo.tblInv (NOLOCK)    			        			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  (
			  (
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
					)
			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling ,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup,BudgetQty,BudgetFrequency,strStockUnit,
			decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			from #TempInv
			Union all

				SELECT
				Data_Inv.*
				  ,dbo.tblInvExt.decAvail   AS decSumAvail  
				  ,dbo.tblInvExt.decAlloc   AS decSumAlloc 
				  ,dbo.tblInvExt.decOnHand   AS decSumOnHand 
				  ,dbo.tblInvExt.decValue    AS decSumValue
				  ,dbo.tblInvExt.decOnOrder  AS decSumOnOrder 
				  ,dbo.tblInvExt.decManuf    AS decSumManuf  
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
			  ,dbo.tblInvVend.strVendName AS strCuVeID  
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				LEFT OUTER JOIN dbo.tblInvVend (NOLOCK) ON Data_Inv.strPartNumber = tblInvVend.strPartNumber 
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)
					AND  (dbo.tblInvVend.strVendName= Case when @VendorName <> '' then @VendorName else dbo.tblInvVend.strVendName end)
				)
			
	Select * from (SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,*		
		,((SElect Count(*) from Data_Inv as a) + @Count) as [intRowCount]
	FROM Data_Final ) as Temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
	END
	ELSE
	BEGIN
			; WITH Data_Inv
		AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,dbo.tblInv.strBarCode    
			   ,dbo.tblInv.bitInvSerialType    
			   ,dbo.tblInv.strBarCode2    
			    ,NULL AS strPricelist    
			   ,Cast(0 as Decimal(18,0)) AS decSelling   
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    			 
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			    ,dbo.tblInv.strStockUnit
			  FROM dbo.tblInv (NOLOCK)        			    			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup,BudgetQty,BudgetFrequency,strStockUnit,
			decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			from #TempInv
			Union all

				SELECT
				Data_Inv.*
				  ,dbo.tblInvExt.decAvail   AS decSumAvail  
				  ,dbo.tblInvExt.decAlloc   AS decSumAlloc 
				  ,dbo.tblInvExt.decOnHand   AS decSumOnHand 
				  ,dbo.tblInvExt.decValue    AS decSumValue
				  ,dbo.tblInvExt.decOnOrder  AS decSumOnOrder 
				  ,dbo.tblInvExt.decManuf    AS decSumManuf   
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,dbo.tblInvVend.strVendName AS strCuVeID 
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				LEFT OUTER JOIN dbo.tblInvVend (NOLOCK) ON Data_Inv.strPartNumber = tblInvVend.strPartNumber  
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)
					AND dbo.tblInvVend.strVendName= Case when @VendorName <> '' then @VendorName else dbo.tblInvVend.strVendName end
				)
			
	 Select * from (SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,*	
	,((Select Count(*) from Data_Inv as a) + @Count) as [intRowCount]
	FROM Data_Final ) AS Temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
	END
 END    

END

IF @FilterType = 2	--CUSTOMER    
BEGIN 
	 IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
 BEGIN    
    
	IF @Keyword1 <> ''
	BEGIN

		; WITH Data_Inv
  AS (
    Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all

	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,dbo.tblInv.decSumAvail
		,dbo.tblInv.decSumAlloc
		,dbo.tblInv.decSumOnHand
		,dbo.tblInv.decSumValue
		,dbo.tblInv.decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,dbo.tblInv.strBarCode
		,dbo.tblInv.bitInvSerialType
		,dbo.tblInv.strBarCode2
		,NULL AS strPricelist    
		,Cast(0 as Decimal(18,0)) AS decSelling    
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,dbo.tblInv.decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInv.strStockUnit
	FROM dbo.tblInv(NOLOCK)	
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY Data_Inv.strPartNumber
			) RowNum
		,Data_Inv.*,dbo.tblInvCustomer.strCustName AS strCuVeID
	FROM Data_Inv LEFT OUTER JOIN dbo.tblInvCustomer (NOLOCK) ON Data_Inv.strPartNumber = tblInvCustomer.strPartNumber 
	Where dbo.tblInvCustomer.strCustName= Case when @VendorName <> '' then @VendorName else dbo.tblInvCustomer.strCustName end AND
	(
				(	(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
			)
		)
		SELECT *
			
		,((SElect Count(*) from Data_Final as a) + @Count) as [intRowCount]
	FROM Data_Final  
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
	end
	else
	begin
		 ; WITH Data_Inv
		AS (

				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all

	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,dbo.tblInv.decSumAvail
		,dbo.tblInv.decSumAlloc
		,dbo.tblInv.decSumOnHand
		,dbo.tblInv.decSumValue
		,dbo.tblInv.decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,dbo.tblInv.strBarCode
		,dbo.tblInv.bitInvSerialType
		,dbo.tblInv.strBarCode2
		,NULL AS strPricelist    
		,Cast(0 as Decimal(18,0)) AS decSelling   
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,dbo.tblInv.strSubCategory
		,dbo.tblInv.decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
	
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInv.strStockUnit
	FROM dbo.tblInv(NOLOCK)
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY Data_Inv.strPartNumber
			) RowNum
		,Data_Inv.*,dbo.tblInvCustomer.strCustName  AS strCuVeID
	FROM Data_Inv 
	LEFT OUTER JOIN dbo.tblInvCustomer (NOLOCK) ON Data_Inv.strPartNumber = tblInvCustomer.strPartNumber 
	Where dbo.tblInvCustomer.strCustName= Case when @VendorName <> '' then @VendorName else dbo.tblInvCustomer.strCustName end
	)
	SELECT *		
		,((SElect Count(*) from Data_Final as a)+ @Count) as [intRowCount]
	FROM Data_Final 
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
	end

 END    
 ELSE    
 BEGIN    

	If @Keyword1 <>''
	BEGIN
			; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,dbo.tblInv.strBarCode    
			   ,dbo.tblInv.bitInvSerialType    
			   ,dbo.tblInv.strBarCode2    
			    ,NULL AS strPricelist    
			  ,Cast(0 as Decimal(18,0)) AS decSelling     
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
  
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInv.strStockUnit			
			  FROM dbo.tblInv (NOLOCK)    			        			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  (
			  (
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
					)
			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup,BudgetQty,BudgetFrequency,strStockUnit,
			decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			from #TempInv
			Union all
				SELECT
				Data_Inv.*
				  ,dbo.tblInvExt.decAvail   AS decSumAvail  
				  ,dbo.tblInvExt.decAlloc   AS decSumAlloc 
				  ,dbo.tblInvExt.decOnHand   AS decSumOnHand 
				  ,dbo.tblInvExt.decValue    AS decSumValue
				  ,dbo.tblInvExt.decOnOrder  AS decSumOnOrder 
				  ,dbo.tblInvExt.decManuf    AS decSumManuf  
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				  ,dbo.tblInvCustomer.strCustName AS strCuVeID  
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				LEFT OUTER JOIN dbo.tblInvCustomer (NOLOCK) ON Data_Inv.strPartNumber = tblInvCustomer.strPartNumber  
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)
					AND dbo.tblInvCustomer.strCustName= Case when @VendorName <> '' then @VendorName else dbo.tblInvCustomer.strCustName end
				)			
		Select * from (SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,*		
		,((Select Count(*) from Data_Inv as a) + @Count) as [intRowCount]
	FROM Data_Final ) as Temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
	END
	ELSE
	BEGIN
			; WITH Data_Inv
		AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,dbo.tblInv.strBarCode    
			   ,dbo.tblInv.bitInvSerialType    
			   ,dbo.tblInv.strBarCode2    
			     ,NULL AS strPricelist    
			   ,Cast(0 as Decimal(18,0)) AS decSelling      
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    			 
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget'
			   ,dbo.tblInv.strStockUnit 
			  FROM dbo.tblInv (NOLOCK)        			    			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup,BudgetQty,BudgetFrequency,strStockUnit,
			decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			from #TempInv
			Union all

				SELECT
				Data_Inv.*
				  ,dbo.tblInvExt.decAvail   AS decSumAvail  
				  ,dbo.tblInvExt.decAlloc   AS decSumAlloc 
				  ,dbo.tblInvExt.decOnHand   AS decSumOnHand 
				  ,dbo.tblInvExt.decValue    AS decSumValue
				  ,dbo.tblInvExt.decOnOrder  AS decSumOnOrder 
				  ,dbo.tblInvExt.decManuf    AS decSumManuf  
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,dbo.tblInvCustomer.strCustName AS strCuVeID 
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				LEFT OUTER JOIN dbo.tblInvCustomer (NOLOCK) ON Data_Inv.strPartNumber = tblInvCustomer.strPartNumber  
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)
					AND  dbo.tblInvCustomer.strCustName= Case when @VendorName <> '' then @VendorName else dbo.tblInvCustomer.strCustName end
				)			
		Select * from (SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,*		
		,((Select Count(*) from Data_Inv as a) + @Count) as [intRowCount]
	FROM Data_Final ) as temp 
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
	END
 END    
END

 
IF @FilterType = 3	--Employee    
BEGIN 
	 IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
	 BEGIN    
	    
		 IF @Keyword1 <> ''
		BEGIN

			; WITH Data_Inv
  AS (
   Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder
			,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup
			,decMovingAvgCost,strStockUnit
			from #TempInv
			Union all
	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,dbo.tblInv.decSumAvail
		,dbo.tblInv.decSumAlloc
		,dbo.tblInv.decSumOnHand
		,dbo.tblInv.decSumValue
		,dbo.tblInv.decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,dbo.tblInv.strBarCode
		,dbo.tblInv.bitInvSerialType
		,dbo.tblInv.strBarCode2
		,NULL AS strPricelist    
		,Cast(0 as Decimal(18,0)) AS decSelling     
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,dbo.tblInv.decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,dbo.tblInv.strStockUnit
	FROM dbo.tblInv(NOLOCK)	
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY Data_Inv.strPartNumber
			) RowNum
		,Data_Inv.*
		,BudgetQty = (Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END)
		,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
		 WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
		, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID
	FROM Data_Inv LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber    
	Where  ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end AND
	(
	(
					(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
					)
	)
		
		SELECT *
		,(COUNT(*) OVER()) as intRowCount   		
		FROM Data_Final 		
		WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
		else
		begin
			 ; WITH Data_Inv
		AS (
		 Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder
			,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup
			,decMovingAvgCost,strStockUnit
			from #TempInv
			Union all
	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,dbo.tblInv.decSumAvail
		,dbo.tblInv.decSumAlloc
		,dbo.tblInv.decSumOnHand
		,dbo.tblInv.decSumValue
		,dbo.tblInv.decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,dbo.tblInv.strBarCode
		,dbo.tblInv.bitInvSerialType
		,dbo.tblInv.strBarCode2
		,NULL AS strPricelist    
		,Cast(0 as Decimal(18,0)) AS decSelling    
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,dbo.tblInv.strSubCategory
		,dbo.tblInv.decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,dbo.tblInv.strStockUnit
	FROM dbo.tblInv(NOLOCK)
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY Data_Inv.strPartNumber
			) RowNum
		,Data_Inv.*
		,BudgetQty = CAST((Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END) as decimal)
		,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
		 WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
		, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID      
	FROM Data_Inv 
	LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber 
	Where  ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
	)

		SELECT *
		,(COUNT(*) OVER()) as intRowCount  		
		FROM Data_Final 		
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)

		end
	 
	 END    
	 ELSE    
	 BEGIN    
			If @Keyword1 <>''
			BEGIN
					; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,dbo.tblInv.strBarCode    
			   ,dbo.tblInv.bitInvSerialType    
			   ,dbo.tblInv.strBarCode2    
			    ,NULL AS strPricelist    
			   ,Cast(0 as Decimal(18,0)) AS decSelling   
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup 
			   ,dbo.tblInv.strStockUnit           
			  FROM dbo.tblInv (NOLOCK)    			        			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  (
			  (
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
				)
			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup,strStockUnit,
			decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,BudgetQty,BudgetFrequency,strCuVeID
			from #TempInv
			Union all
				SELECT
				Data_Inv.*
				  ,dbo.tblInvExt.decAvail   AS decSumAvail  
				  ,dbo.tblInvExt.decAlloc   AS decSumAlloc 
				  ,dbo.tblInvExt.decOnHand   AS decSumOnHand 
				  ,dbo.tblInvExt.decValue    AS decSumValue
				  ,dbo.tblInvExt.decOnOrder  AS decSumOnOrder 
				  ,dbo.tblInvExt.decManuf    AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,BudgetQty =CAST((Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END) as decimal)
				 ,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
				WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
				, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID       
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber        
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)
					AND ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
				)			
	Select * from (SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum, *		
		,((Select Count(*) from Data_Inv as a) + @Count) as [intRowCount]	
	FROM Data_Final) as Temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
			END
			ELSE
			BEGIN
					; WITH Data_Inv
		AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,dbo.tblInv.strBarCode    
			   ,dbo.tblInv.bitInvSerialType    
			   ,dbo.tblInv.strBarCode2    
			   ,NULL AS strPricelist    
			   ,Cast(0 as Decimal(18,0)) AS decSelling   
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    			 
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            		   
			   ,dbo.tblInv.strStockUnit
			  FROM dbo.tblInv (NOLOCK)        			    			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup,strStockUnit,
			decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,BudgetQty,BudgetFrequency,strCuVeID
			from #TempInv
			Union all
				SELECT
				Data_Inv.*
				  ,dbo.tblInvExt.decAvail   AS decSumAvail  
				  ,dbo.tblInvExt.decAlloc   AS decSumAlloc 
				  ,dbo.tblInvExt.decOnHand   AS decSumOnHand 
				  ,dbo.tblInvExt.decValue    AS decSumValue
				  ,dbo.tblInvExt.decOnOrder  AS decSumOnOrder 
				  ,dbo.tblInvExt.decManuf    AS decSumManuf 
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,BudgetQty = CAST((Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END) as decimal)
				,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
				 WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
				, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID   
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber    
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)					
					AND ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
				)			
		Select * from (SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,*		
		,((Select Count(*) from Data_Inv as a) + @Count) as [intRowCount]		
	FROM Data_Final) AS Temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
			END
	 END    
END
    
Drop table #TempType
Drop table #TempInv
GO
/****** Object:  StoredProcedure [dbo].[GettblInvByCriteriaByUserByPriceList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GettblInvByCriteriaByUserByPriceList] (    
 @intType VARCHAR(50) = NULL    
 ,@UserName NVARCHAR(50) = NULL    
 ,@PriceList NVARCHAR(20) = NULL    
 ,@strLocName VARCHAR(500)= NULL    
 ,@Date VARCHAR(20) = NULL    
 ,@FilterType INTEGER = 0
 ,@PageSize INT = 25
 ,@PageNum  INT =1  
 ,@Search VARCHAR(500)=''
 ,@Category varchar(250)=''
 ,@SubCategory varchar(250)=''
 ,@SubCategoryGroup varchar(250)=''
 ,@VendorName varchar(500)=''
 ,@EmployeeName varchar(500)=''
 ,@BomItem bit=0
 ,@SNLotTrack bit=0
 ,@ColumnName varchar(500)=''
 ,@IsStockUnit BIT = 1
 ,@strTransactionType NVARCHAR(50) = NULL
 )    
AS      
    
 IF(@ColumnName='')
 BEGIN
	SET @ColumnName='strPartNumber';
 END
  
 IF LTRIM(RTRIM(@strLocName))<>'<<All Locations>>' 
  BEGIN
   SET @strLocName=(select Top 1 strLocName from tblInvLoc Where strDesc=@strLocName)
  END
    
  DECLARE @Count INT=0;   
  DECLARE @SplitWord TABLE(wordRank INT, word VARCHAR(200))
  SET @Search = LTRIM(RTRIM(@Search)) -- Remove white space
  DECLARE @WordSeperator VARCHAR(1) =' '
  
  DECLARE @TotalWord Int=0
  DECLARE @WordCount Int=1

  DECLARE @Keyword1 VARCHAR(100)=''
  DECLARE @Keyword2 VARCHAR(100)=''
  DECLARE @Keyword3 VARCHAR(100)=''
  DECLARE @Keyword4 VARCHAR(100)=''
  DECLARE @Keyword5 VARCHAR(100)=''
  DECLARE @Keyword6 VARCHAR(100)=''
  DECLARE @Keyword7 VARCHAR(100)=''
  DECLARE @Keyword8 VARCHAR(100)=''
  DECLARE @Keyword9 VARCHAR(100)=''
  DECLARE @Keyword10 VARCHAR(100)=''
  Declare @Query as varchar(Max)=''
  Declare @Query1 as varchar(Max)=''
  Declare @Query2 as varchar(Max)=''
  IF(CHARINDEX(',',@Search)) > 0 
	BEGIN
		 SET @WordSeperator=','
	END  

INSERT INTO @SplitWord select Id, [Data] from dbo.split(@Search, @WordSeperator)

SET @TotalWord=(SELECT COUNT(*) FROM @SplitWord)

While(@WordCount<=@TotalWord)
Begin
		IF @WordCount=1 
			BEGIN
				SET @Keyword1=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=2 
			BEGIN
				SET @Keyword2=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=3 
			BEGIN
				SET @Keyword3=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=4 
			BEGIN
				SET @Keyword4=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=5 
			BEGIN
				SET @Keyword5=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=6 
			BEGIN
				SET @Keyword6=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=7 
			BEGIN
				SET @Keyword7=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=8 
			BEGIN
				SET @Keyword8=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=9
			BEGIN
				SET @Keyword9=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=10 
			BEGIN
				SET @Keyword10=(Select Word from @SplitWord Where wordRank=@WordCount)
			END

	SET @WordCount=@WordCount+1
End
		    

 DECLARE @Offset INT
 SET @Offset = @PageSize * (@PageNum-1)
 
 DECLARE @uidPriceBasedID AS UNIQUEIDENTIFIER
 SET @uidPriceBasedID = NULL
 
 IF ISNULL(@PriceList, '') <> ''	AND ISNULL(@Date, '') <> ''
 BEGIN
 	SELECT TOP 1 @uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
 	FROM tblPriceListsByDate
 	INNER JOIN dbo.tblInvPrice ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
 	WHERE @Date BETWEEN dbo.tblPriceListsByDate.dteStartDate AND dbo.tblPriceListsByDate.dteFinishDate AND tblPriceListsByDate.strPricelist = @PriceList
 END

 IF ( (LTRIM(RTRIM(@VendorName))='<<ALL Vendors>>')  OR (LTRIM(RTRIM(@VendorName))='<<ALL Customers>>'))
 BEGIN
		SET @VendorName=''
 END

 IF ( (LTRIM(RTRIM(@EmployeeName))='<<ALL Employees>>'))        
 BEGIN        
		SET @EmployeeName=''
 END  

CREATE TABLE #TempInvVend (
	[strVendName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strUnit] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	)

INSERT INTO #TempInvVend
SELECT DISTINCT tblInvVend.strVendName
	,tblInvVend.strPartNumber
	,tblInvVend.strUnit
FROM tblInvVend
INNER JOIN tblInvVendPriceListsByDate ON tblInvVend.uidPriceBasedID = tblInvVendPriceListsByDate.uidPriceBasedID
	AND tblInvVend.strVendName = tblInvVendPriceListsByDate.strVendName
INNER JOIN tblVendors ON tblInvVendPriceListsByDate.strVendName = tblVendors.strVendName

CREATE TABLE #TempINV (
	[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strDesc] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[intType] [tinyint] NOT NULL
	,[strCategory] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
	,[bitUseBOM] [bit] NOT NULL
	,[bitInactive] [bit] NOT NULL
	,[decSumAvail] [money] NOT NULL
	,[decSumAlloc] [money] NOT NULL
	,[decSumOnHand] [money] NOT NULL
	,[decSumValue] [money] NOT NULL
	,[decSumOnOrder] [money] NOT NULL
	,[strField1] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strField2] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strField3] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strField4] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strField5] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strField6] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strBarCode] [nvarchar](300) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[bitInvSerialType] [bit] NOT NULL
	,[strBarCode2] [nvarchar](300) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
	,[strPricelist] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
	,[decSelling] [money] NOT NULL
	,[bitTrackExpiryDate] [bit] NULL
	,[decLastPPUnit] [money] NOT NULL
	,[intDecimalQuantity] [int] NOT NULL DEFAULT((2))
	,[strCuVeID] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
	,[strSubCategory] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
	,[decSumManuf] [money] NOT NULL
	,[strSubCategoryGroup] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
	,[decMovingAvgCost] [money] NOT NULL
	,[BudgetQty] [money] NULL     
	,[BudgetFrequency] varchar(50) NULL
	,[strStockUnit] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
	)
    
CREATE TABLE #TempType (    
[intType] [tinyint] NOT NULL)    
    
INSERT INTO #TempType    
SELECT * FROM (SELECT data FROM dbo.split(@intType, ',')) Z WHERE Z.data <> ''    
    
IF ISNULL((SELECT intType FROM #TempType WHERE intType = 5), 0) = 5    
BEGIN    
    
Insert into #TempInv  
 SELECT DISTINCT dbo.tblInv.strPartNumber    
  ,dbo.tblInv.strDesc    
  ,dbo.tblInv.intType    
  ,dbo.tblInv.strCategory    
  ,dbo.tblInv.bitUseBOM    
  ,dbo.tblInv.bitInactive    
  ,dbo.tblInv.decSumAvail    
  ,dbo.tblInv.decSumAlloc    
  ,dbo.tblInv.decSumOnHand    
  ,dbo.tblInv.decSumValue    
  ,dbo.tblInv.decSumOnOrder    
  ,dbo.tblInv.strField1    
  ,dbo.tblInv.strField2    
  ,dbo.tblInv.strField3    
  ,dbo.tblInv.strField4    
  ,dbo.tblInv.strField5    
  ,dbo.tblInv.strField6    
  ,dbo.tblInv.strBarCode    
  ,dbo.tblInv.bitInvSerialType    
  ,dbo.tblInv.strBarCode2    
  ,NULL AS strPricelist    
  ,Cast(0 as decimal(18,2)) AS decSelling    
  ,NULL AS bitTrackExpiryDate    
  ,dbo.tblInv.decLastPPUnit    
  ,dbo.tblinv.intDecimalQuantity    
  ,NULL AS strCuVeID    
  ,dbo.tblInv.strSubCategory    
  ,dbo.tblInv.decSumManuf    
  ,dbo.tblInv.strSubCategoryGroup    
  ,decMovingAvgCost = CASE decSumOnHand WHEN 0 THEN 0 ELSE (decSumValue/decSumOnHand) END
  ,[BudgetQty] = 0.00    
  ,[BudgetFrequency] = 'No Budget'   
  ,dbo.tblInv.strStockUnit 
 FROM dbo.tblInv (NOLOCK)    
 WHERE (dbo.tblInv.intType = 5)    
 AND (dbo.tblInv.bitInactive = 0)   AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1) 
 AND ((
			  
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)   
  )     
END    
 
 SET @Count=(SELECT DISTINCT Count(*) FROM #TempInv)

IF @FilterType = 0	--NONE    
BEGIN    
    
 IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
 BEGIN    
    IF @strTransactionType LIKE '%Purchases%'
	BEGIN
		IF @Keyword1 <> ''
		BEGIN
			; WITH Data_Inv
	AS (
		Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all

		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,NULL AS strCuVeID
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (
						1
						,@IsStockUnit
						)
		AND (
						(
							dbo.tblInvUOMs.strUseFor = @strTransactionType
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))

		UNION ALL
		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,NULL AS strCuVeID
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvUOMs.strFromUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit = 1
		AND (
						dbo.tblInvUOMs.strUseFor IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')
							)
						)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))


	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	Where
	((
					(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					))

	)
	SELECT *,(SElect Count(*) from Data_Final as a) as [intRowCount]
	FROM Data_Final
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
		else
		begin
			; WITH Data_Inv
		AS (
		Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all

	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,NULL AS strCuVeID
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (
						1
						,@IsStockUnit
						)
		AND (
						(
							dbo.tblInvUOMs.strUseFor = @strTransactionType
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))

		UNION ALL
		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,NULL AS strCuVeID
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvUOMs.strFromUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit = 1
		AND (
						dbo.tblInvUOMs.strUseFor IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')
							)
						)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	)
	SELECT *
			,(SElect Count(*) from Data_Final as a) as [intRowCount]
	FROM Data_Final
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
	end
	Else
	Begin
		IF @Keyword1 <> ''
		BEGIN
			; WITH Data_Inv
	AS (

	Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all
		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,NULL AS strCuVeID
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (
						1
						,@IsStockUnit
						)
		AND (
						(
							dbo.tblInvUOMs.strUseFor = @strTransactionType
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	Where
	((
					(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					))

	)
	SELECT *,(SElect Count(*) from Data_Final as a) as [intRowCount]
	FROM Data_Final
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
		else
		begin
			; WITH Data_Inv
		AS (
		Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
			,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
			,BudgetQty,BudgetFrequency,strStockUnit
			 from #TempInv 

	Union all

	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,NULL AS strCuVeID
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
		AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	)
	SELECT *
			,(SElect Count(*) from Data_Final as a) as [intRowCount]
	FROM Data_Final
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
	end
 END    
 ELSE    
 BEGIN    
	IF @strTransactionType LIKE '%Purchases%'
	BEGIN
		If @Keyword1 <>''
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
			   ,NULL AS strCuVeID    
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  (
				(	(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						))
					)
					UNION ALL
					
					SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
			   ,NULL AS strCuVeID    
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvUOMs.strFromUnit  AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1)
			  AND (dbo.tblInvUOMs.strUseFor IN (SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')))
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ((
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)  )
			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost
			 from #TempInv 

	Union all

				SELECT 
					Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strCuVeID,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit			
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
		WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
			   ,NULL AS strCuVeID    
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  
			UNION ALL
					
			SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
			   ,NULL AS strCuVeID    
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvUOMs.strFromUnit  AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1)
			  AND (dbo.tblInvUOMs.strUseFor IN (SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')))
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			 
			  )
			  ,Data_Final
			AS (
			Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost
			 from #TempInv 

		Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strCuVeID,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
	END
	ELSE
	BEGIN
		If @Keyword1 <>''
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
			   ,NULL AS strCuVeID    
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ((
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						))
					)				 
			  )
			  ,Data_Final
			AS (
					Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost
			 from #TempInv 

		Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strCuVeID,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
			   ,NULL AS strCuVeID    
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)

			  )
			  ,Data_Final
			AS (
			Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strCuVeID,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strCuVeID,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
	END

 END    
END    


IF @FilterType = 1	--VENDOR    
BEGIN 
IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
 BEGIN    
    IF @strTransactionType LIKE '%Purchases%'
	BEGIN
		IF @Keyword1 <> ''
		BEGIN
		; WITH Data_Inv
	AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all


		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (
						1
						,@IsStockUnit
						)
		AND (
						(
							dbo.tblInvUOMs.strUseFor = @strTransactionType
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))

		UNION ALL
		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvUOMs.strFromUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit = 1
		AND (
						dbo.tblInvUOMs.strUseFor IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')
							)
						)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))


	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	Where
	((
					(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					))

	)
	SELECT Data_Final.*,
	(SElect Count(*) from Data_Final as a) as [intRowCount]
	,#TempInvVend.strVendName AS strCuVeID
	FROM Data_Final
	LEFT OUTER JOIN #TempInvVend ON Data_Final.strPartNumber = #TempInvVend.strPartNumber
					AND #TempInvVend.strUnit = Data_Final.strStockUnit
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
		else
		begin
			; WITH Data_Inv
		AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all



	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (
						1
						,@IsStockUnit
						)
		AND (
						(
							dbo.tblInvUOMs.strUseFor = @strTransactionType
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))

		UNION ALL
		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
	
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvUOMs.strFromUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit = 1
		AND (
						dbo.tblInvUOMs.strUseFor IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')
							)
						)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY Data_Inv.strPartNumber
			) RowNum
		,Data_Inv.*
	,#TempInvVend.strVendName AS strCuVeID
	FROM Data_Inv
	LEFT OUTER JOIN #TempInvVend ON Data_Inv.strPartNumber = #TempInvVend.strPartNumber
					AND #TempInvVend.strUnit = Data_Inv.strStockUnit
	)
	SELECT *
			,(SElect Count(*) from Data_Final as a) as [intRowCount]
	FROM Data_Final
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
	end
	Else
	Begin
		IF @Keyword1 <> ''
		BEGIN
			; WITH Data_Inv
	AS (
	Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all

		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (
						1
						,@IsStockUnit
						)
		AND (
						(
							dbo.tblInvUOMs.strUseFor = @strTransactionType
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	Where
	((
					(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
			)
	)
	SELECT Data_Final.*
	,(SElect Count(*) from Data_Final as a) as [intRowCount]
	,#TempInvVend.strVendName AS strCuVeID
	FROM Data_Final
	LEFT OUTER JOIN #TempInvVend ON Data_Final.strPartNumber = #TempInvVend.strPartNumber
					AND #TempInvVend.strUnit = Data_Final.strStockUnit
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
		else
		begin
			; WITH Data_Inv
		AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all


	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,NULL AS strCuVeID
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
		AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	)
	SELECT Data_Final.*
			,(SElect Count(*) from Data_Final as a) as [intRowCount]
	,#TempInvVend.strVendName AS strCuVeID
	FROM Data_Final
	LEFT OUTER JOIN #TempInvVend ON Data_Final.strPartNumber = #TempInvVend.strPartNumber
					AND #TempInvVend.strUnit = Data_Final.strStockUnit
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
	end
 END    
 ELSE    
 BEGIN    
	IF @strTransactionType LIKE '%Purchases%'
	BEGIN
		If @Keyword1 <>''
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ((
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						))
					)
					UNION ALL
					
					SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvUOMs.strFromUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1)
			  AND (dbo.tblInvUOMs.strUseFor IN (SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')))
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ((
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)  )
			  )
			  ,Data_Final
			AS (
			Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,#TempInvVend.strVendName AS strCuVeID
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber				
			    LEFT OUTER JOIN #TempInvVend ON Data_Inv.strPartNumber = #TempInvVend.strPartNumber
					AND #TempInvVend.strUnit = Data_Inv.strStockUnit
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  
			UNION ALL
					
			SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvUOMs.strFromUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1)
			  AND (dbo.tblInvUOMs.strUseFor IN (SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')))
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			 
			  )
			  ,Data_Final
			AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,#TempInvVend.strVendName AS strCuVeID
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber				
			    LEFT OUTER JOIN #TempInvVend ON Data_Inv.strPartNumber = #TempInvVend.strPartNumber
					AND #TempInvVend.strUnit = Data_Inv.strStockUnit
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
	END
	ELSE
	BEGIN
		If @Keyword1 <>''
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity       
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  (
					((
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						))
					)				 
			  )
			  ,Data_Final
			AS ( Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,#TempInvVend.strVendName AS strCuVeID
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber				
			    LEFT OUTER JOIN #TempInvVend ON Data_Inv.strPartNumber = #TempInvVend.strPartNumber
					AND #TempInvVend.strUnit = Data_Inv.strStockUnit
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
	Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity       
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)

			  )
			  ,Data_Final
			AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,#TempInvVend.strVendName AS strCuVeID
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber				
			    LEFT OUTER JOIN #TempInvVend ON Data_Inv.strPartNumber = #TempInvVend.strPartNumber
					AND #TempInvVend.strUnit = Data_Inv.strStockUnit
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
	END

 END   
END

IF @FilterType = 2	--CUSTOMER    
BEGIN 
	IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
 BEGIN    
    IF @strTransactionType LIKE '%Purchases%'
	BEGIN
		IF @Keyword1 <> ''
		BEGIN
		; WITH Data_Inv
	AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all
		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
		AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both')OR dbo.tblInvPrice.bitStockUnit = 1)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))

		UNION ALL
		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvUOMs.strFromUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
				 AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit = 1
		AND (
						dbo.tblInvUOMs.strUseFor IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')
							)
						)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))


	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	Where
	((
					(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
					)
	)
	SELECT Data_Final.*,
	(SElect Count(*) from Data_Final as a) as [intRowCount]
	,dbo.tblInvCustomer.strCustName AS strCuVeID
	FROM Data_Final
	LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Final.strPartNumber = dbo.tblInvCustomer.strPartNumber
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
		else
		begin
			; WITH Data_Inv
		AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all
	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (
						1
						,@IsStockUnit
						)
		AND (
						(
							dbo.tblInvUOMs.strUseFor = @strTransactionType
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))

		UNION ALL
		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
	
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvUOMs.strFromUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit = 1
		AND (
						dbo.tblInvUOMs.strUseFor IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')
							)
						)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY Data_Inv.strPartNumber
			) RowNum
		,Data_Inv.*
	,dbo.tblInvCustomer.strCustName AS strCuVeID
	FROM Data_Inv
	LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Inv.strPartNumber = dbo.tblInvCustomer.strPartNumber
	)
	SELECT *
			,(SElect Count(*) from Data_Final as a) as [intRowCount]
	FROM Data_Final
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
	end
	Else
	Begin
		IF @Keyword1 <> ''
		BEGIN
			; WITH Data_Inv
	AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all
		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (
						1
						,@IsStockUnit
						)
		AND (
						(
							dbo.tblInvUOMs.strUseFor = @strTransactionType
							OR dbo.tblInvUOMs.strUseFor = 'Both'
							)
						OR dbo.tblInvPrice.bitStockUnit = 1
						)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	Where
	((
					(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
			)
	)
	SELECT Data_Final.*
	,(SElect Count(*) from Data_Final as a) as [intRowCount]
		,dbo.tblInvCustomer.strCustName AS strCuVeID
	FROM Data_Final
	LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Final.strPartNumber = dbo.tblInvCustomer.strPartNumber
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
		else
		begin
			; WITH Data_Inv
		AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,BudgetQty,BudgetFrequency,strStockUnit
	 from #TempInv 

	Union all
	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,NULL AS strCuVeID
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,BudgetQty = 0.00
		,BudgetFrequency = 'No Budget'
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
		AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY strPartNumber
			) RowNum
		,*
	FROM Data_Inv
	)
	SELECT Data_Final.*
			,(SElect Count(*) from Data_Final as a) as [intRowCount]
		,dbo.tblInvCustomer.strCustName AS strCuVeID
	FROM Data_Final
	LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Final.strPartNumber = dbo.tblInvCustomer.strPartNumber
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
	end
 END    
 ELSE    
 BEGIN    
	IF @strTransactionType LIKE '%Purchases%'
	BEGIN
		If @Keyword1 <>''
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ((
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						))
					)
					UNION ALL
					
					SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvUOMs.strFromUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1)
			  AND (dbo.tblInvUOMs.strUseFor IN (SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')))
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ((
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)  )
			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 	,dbo.tblInvCustomer.strCustName AS strCuVeID
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber				
			   LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Inv.strPartNumber = dbo.tblInvCustomer.strPartNumber
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		
Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  
			UNION ALL
					
			SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvUOMs.strFromUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1)
			  AND (dbo.tblInvUOMs.strUseFor IN (SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')))
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			 
			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
					,dbo.tblInvCustomer.strCustName AS strCuVeID
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber				
			    LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Inv.strPartNumber = dbo.tblInvCustomer.strPartNumber
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		
Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
	END
	ELSE
	BEGIN
		If @Keyword1 <>''
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity       
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ( (
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)				 
			  ))
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,dbo.tblInvCustomer.strCustName AS strCuVeID
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber				
			    LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Inv.strPartNumber = dbo.tblInvCustomer.strPartNumber
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
				; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity       
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,BudgetQty = 0.00      
			   ,BudgetFrequency = 'No Budget' 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)      
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0  			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)

			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,BudgetQty,BudgetFrequency,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup,
					Data_Inv.BudgetQty,Data_Inv.BudgetFrequency,strStockUnit
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,dbo.tblInvCustomer.strCustName AS strCuVeID
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber				
			    LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Inv.strPartNumber = dbo.tblInvCustomer.strPartNumber
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)

				)
			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		END
	END

 END  
END

 
IF @FilterType = 3	--Employee    
BEGIN 
	 IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
	 BEGIN    
	    
	IF @strTransactionType LIKE '%Purchases%'
	BEGIN

		 IF @Keyword1 <> ''
		BEGIN

		; WITH Data_Inv
	AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,strStockUnit
	 from #TempInv 

	Union all
	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)	
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
		AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both') OR dbo.tblInvPrice.bitStockUnit = 1)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))

		UNION ALL

		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,dbo.tblInvUOMs.strFromUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)	
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit = 1
		AND (dbo.tblInvUOMs.strUseFor IN (SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',') ) )
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))


	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY Data_Inv.strPartNumber
			) RowNum
		,Data_Inv.*
		,BudgetQty = (Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END)
		,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
		 WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
		, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID
	FROM Data_Inv LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber    
	Where  ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
	AND ((
					(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
					)
	)
		
		SELECT *
		,(COUNT(*) OVER()) as intRowCount   		
		FROM Data_Final 		
		WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
		else
		begin
			 ; WITH Data_Inv
		AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,strStockUnit
	 from #TempInv 

	Union all
	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
		AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both')OR dbo.tblInvPrice.bitStockUnit = 1)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))

		UNION ALL

		SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,dbo.tblInvUOMs.strFromUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit = 1
		AND (dbo.tblInvUOMs.strUseFor IN ( SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')))
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))

	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY Data_Inv.strPartNumber
			) RowNum
		,Data_Inv.*
		,BudgetQty = CAST((Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END) as decimal)
		,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
		 WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
		, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID      
	FROM Data_Inv 
	LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber 
	WHERE ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
	)

		SELECT *
		,(COUNT(*) OVER()) as intRowCount  		
		FROM Data_Final 		
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)

		end
	 END
	 ELSE
	 BEGIN
		 IF @Keyword1 <> ''
		BEGIN

			; WITH Data_Inv
	AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,strStockUnit
	 from #TempInv 

	Union all
	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)	
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
		AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both') OR dbo.tblInvPrice.bitStockUnit = 1)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY Data_Inv.strPartNumber
			) RowNum
		,Data_Inv.*
		,BudgetQty = (Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END)
		,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
		 WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
		, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID
	FROM Data_Inv LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber    
	Where  ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
	AND (
				(	(
						@Keyword1 = ''
						OR strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR Data_Inv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
					)
	)
		
		SELECT *
		,(COUNT(*) OVER()) as intRowCount   		
		FROM Data_Final 		
		WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
		end
		else
		begin
			 ; WITH Data_Inv
		AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue
	,decSumOnOrder,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
	,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,decSumManuf,strSubCategoryGroup,decMovingAvgCost
	,strStockUnit
	 from #TempInv 

	Union all
	SELECT DISTINCT dbo.tblInv.strPartNumber
		,dbo.tblInv.strDesc
		,dbo.tblInv.intType
		,dbo.tblInv.strCategory
		,dbo.tblInv.bitUseBOM
		,dbo.tblInv.bitInactive
		,CASE WHEN dbo.tblInv.decSumAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAvail ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAvail / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAvail * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAvail
		,CASE WHEN dbo.tblInv.decSumAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumAlloc ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumAlloc / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumAlloc * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumAlloc
		,CASE WHEN dbo.tblInv.decSumOnHand = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnHand ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnHand / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnHand * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
		,CASE WHEN dbo.tblInv.decSumValue = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumValue ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumValue / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumValue * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumValue
		,CASE WHEN dbo.tblInv.decSumOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumOnOrder ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumOnOrder / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumOnOrder * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnOrder
		,dbo.tblInv.strField1
		,dbo.tblInv.strField2
		,dbo.tblInv.strField3
		,dbo.tblInv.strField4
		,dbo.tblInv.strField5
		,dbo.tblInv.strField6
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
		,dbo.tblInv.bitInvSerialType
		,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2
		,@Pricelist AS strPricelist
		,Isnull(dbo.tblInvPrice.decSelling,0) as decSelling
		,CASE 
			WHEN dbo.tblInv.bitInvSerialType = 1
				THEN (
						SELECT bitTrackExpiryDate
						FROM dbo.tblInvSerialTypes(NOLOCK)
						WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
						)
			ELSE NULL
			END AS bitTrackExpiryDate
		,dbo.tblInv.decLastPPUnit
		,dbo.tblinv.intDecimalQuantity
		,dbo.tblInv.strSubCategory
		,CASE WHEN dbo.tblInv.decSumManuf = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN dbo.tblInv.decSumManuf ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN dbo.tblInv.decSumManuf / dbo.tblInvUOMs.decConversionFactor ELSE dbo.tblInv.decSumManuf * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumManuf
		,dbo.tblInv.strSubCategoryGroup
		,decMovingAvgCost = CASE decSumOnHand
			WHEN 0
				THEN 0
			ELSE (decSumValue / decSumOnHand)
			END
		,dbo.tblInvPrice.strUnit AS strStockUnit
	FROM dbo.tblInv(NOLOCK)
	INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
	LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
	LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
	WHERE (dbo.tblInv.bitInactive = 0)
		AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
		AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
		AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
		AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both')OR dbo.tblInvPrice.bitStockUnit = 1)
		AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
		AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
		AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
		AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
		AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
		AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
	)
	,Data_Final
	AS (
	SELECT ROW_NUMBER() OVER (
			ORDER BY Data_Inv.strPartNumber
			) RowNum
		,Data_Inv.*
		,BudgetQty = CAST((Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END) as decimal)
		,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
		 WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
		, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID      
	FROM Data_Inv 
	LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber 
	WHERE ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
	)

		SELECT *
		,(COUNT(*) OVER()) as intRowCount  		
		FROM Data_Final 		
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)

		end
	 END
	 END    
	 ELSE    
	 BEGIN   
	 IF @strTransactionType LIKE '%Purchases%'
	BEGIN
	  
			If @Keyword1 <>''
			BEGIN
					; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2    
			   ,@PriceList strPricelist 
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling   
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)    			        			 
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
			  AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ((
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					))
				UNION ALL

				SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2    
			   ,@PriceList strPricelist 
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling   
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			   ,dbo.tblInvUOMs.strFromUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)    			        			 
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					 AND dbo.tblInvUOMS.bitInactive = 0
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit = 1
			 AND (dbo.tblInvUOMs.strUseFor IN (SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')))
			  AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ((
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					)
					)
			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,BudgetQty,BudgetFrequency,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup
					
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,BudgetQty =CAST((Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END) as decimal)
				 ,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
				WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
				, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID       
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber        
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)
					AND ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
				)			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
			END
			ELSE
			BEGIN
					; WITH Data_Inv
		AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling   
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    			 
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
			
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)     
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0    			    			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both')OR dbo.tblInvPrice.bitStockUnit = 1)
			  AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)

			  UNION ALL

			  SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling   
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    			 
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            
		
			   ,dbo.tblInvUOMs.strFromUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)     
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  INNER JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMS.bitInactive = 0    			    			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit = 1
			  AND (dbo.tblInvUOMs.strUseFor IN (SELECT [VALUE] FROM dbo.fnSplitStringAsTable(@strTransactionType, ',')))
			  AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)

			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,BudgetQty,BudgetFrequency,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling ,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,BudgetQty = CAST((Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END) as decimal)
				,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
				 WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
				, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID   
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber    
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)					
					AND ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
				)			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
			END
	END
	ELSE
	BEGIN
		If @Keyword1 <>''
			BEGIN
					; WITH Data_Inv
			AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2    
			   ,@PriceList strPricelist 
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling   
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity      
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            			 
			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)    			        			 
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both' ) OR dbo.tblInvPrice.bitStockUnit = 1)
			  AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  AND 
			  ((
					(
						@Keyword1 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strCategory LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strCategory LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strCategory LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strCategory LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strCategory LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strCategory LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strCategory LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strCategory LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strCategory LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strCategory LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField1 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField1 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField1 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField1 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField1 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField1 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField1 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField1 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField1 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField1 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField2 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField3 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField3 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField3 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField3 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField3 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField3 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField3 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField3 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField3 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField3 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField4 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField4 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField4 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField4 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField4 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField4 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField4 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField4 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField4 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField4 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField5 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField5 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField5 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField5 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField5 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField5 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField5 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField5 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField5 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField5 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR strField6 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR strField6 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR strField6 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR strField6 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR strField6 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR strField6 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR strField6 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR strField6 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR strField6 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR strField6 LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR dbo.tblInv.strBarCode LIKE '%' + @Keyword10 + '%'
						)
					)
				OR (
					(
						@Keyword1 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword1 + '%'
						)
					AND (
						@Keyword2 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword2 + '%'
						)
					AND (
						@Keyword3 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword3 + '%'
						)
					AND (
						@Keyword4 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword4 + '%'
						)
					AND (
						@Keyword5 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword5 + '%'
						)
					AND (
						@Keyword6 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword6 + '%'
						)
					AND (
						@Keyword7 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword7 + '%'
						)
					AND (
						@Keyword8 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword8 + '%'
						)
					AND (
						@Keyword9 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword9 + '%'
						)
					AND (
						@Keyword10 = ''
						OR dbo.tblInv.strBarCode2 LIKE '%' + @Keyword10 + '%'
						)
					))
			  )
			  ,Data_Final
			AS (Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,BudgetQty,BudgetFrequency,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,BudgetQty =CAST((Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END) as decimal)
				 ,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
				WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
				, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID       
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber        
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)
					AND ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
				)			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
			END
			ELSE
			BEGIN
					; WITH Data_Inv
		AS (	SELECT  dbo.tblInv.strPartNumber    
			   ,dbo.tblInv.strDesc    
			   ,dbo.tblInv.intType    
			   ,dbo.tblInv.strCategory    
			   ,dbo.tblInv.bitUseBOM    
			   ,dbo.tblInv.bitInactive      
			   ,dbo.tblInv.strField1    
			   ,dbo.tblInv.strField2    
			   ,dbo.tblInv.strField3    
			   ,dbo.tblInv.strField4    
			   ,dbo.tblInv.strField5    
			   ,dbo.tblInv.strField6    
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode ELSE ISNULL(dbo.tblInvUOMs.strBarCode, '') END AS strBarCode
			   ,dbo.tblInv.bitInvSerialType
			   ,CASE WHEN dbo.tblInvPrice.bitStockUnit = 1 THEN dbo.tblInv.strBarCode2 ELSE ISNULL(dbo.tblInvUOMs.strBarCode2, '') END AS strBarCode2   
			   ,@PriceList strPricelist    
			   ,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling   
			   ,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS bitTrackExpiryDate
			   ,dbo.tblInv.decLastPPUnit    
			   ,dbo.tblInv.intDecimalQuantity    			 
			   ,dbo.tblInv.strSubCategory      
			   ,dbo.tblInv.strSubCategoryGroup            

			   ,dbo.tblInvPrice.strUnit AS strStockUnit
			   ,dbo.tblInvUOMs.strPartNumber AS strUOMPartNumber
			   ,dbo.tblInvUOMs.strConversionType
			   ,dbo.tblInvUOMs.decConversionFactor
			  FROM dbo.tblInv (NOLOCK)     
			  INNER JOIN dbo.tblInvPrice(NOLOCK) ON dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID AND dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
			  LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInv.strPartNumber
					AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit AND dbo.tblInvUOMS.bitInactive = 0    			    			 
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
			  AND dbo.tblInvPrice.bitStockUnit IN (1,@IsStockUnit)
			  AND ((dbo.tblInvUOMs.strUseFor = @strTransactionType OR dbo.tblInvUOMs.strUseFor = 'Both')OR dbo.tblInvPrice.bitStockUnit = 1)
			  AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')	WHERE data <> 5	) OR @intType = NULL)
			  )
			  ,Data_Final
			AS (
				Select strPartNumber,strDesc,intType,strCategory,bitUseBOM,bitInactive,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,bitInvSerialType,strBarCode2
			,strPricelist,decSelling,bitTrackExpiryDate,decLastPPUnit,intDecimalQuantity,strSubCategory,strSubCategoryGroup
			,strStockUnit
			,decSumAvail,decSumAlloc,decSumOnHand,decSumValue,decSumOnOrder,decSumManuf,decMovingAvgCost,BudgetQty,BudgetFrequency,strCuVeID
			 from #TempInv 

	Union all

				SELECT Data_Inv.strPartNumber,Data_Inv.strDesc,Data_Inv.intType,Data_Inv.strCategory,Data_Inv.bitUseBOM,Data_Inv.bitInactive,
					Data_Inv.strField1,Data_Inv.strField2,Data_Inv.strField3,Data_Inv.strField4,Data_Inv.strField5,Data_Inv.strField6,
					Data_Inv.strBarCode,Data_Inv.bitInvSerialType,Data_Inv.strBarCode2,Data_Inv.strPricelist,Data_Inv.decSelling,Data_Inv.bitTrackExpiryDate,
					Data_Inv.decLastPPUnit,Data_Inv.intDecimalQuantity,Data_Inv.strSubCategory,Data_Inv.strSubCategoryGroup
				  ,CASE WHEN dbo.tblInvExt.decAvail = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAvail ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAvail / decConversionFactor ELSE dbo.tblInvExt.decAvail * decConversionFactor END END) END AS decSumAvail
				  ,CASE WHEN dbo.tblInvExt.decAlloc = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decAlloc ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decAlloc / decConversionFactor ELSE dbo.tblInvExt.decAlloc * decConversionFactor END END) END AS decSumAlloc
				  ,CASE WHEN dbo.tblInvExt.decOnHand  = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnHand  ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnHand  / decConversionFactor ELSE dbo.tblInvExt.decOnHand  * decConversionFactor END END) END AS decSumOnHand
				  ,CASE WHEN dbo.tblInvExt.decValue   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decValue   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decValue   / decConversionFactor ELSE dbo.tblInvExt.decValue   * decConversionFactor END END) END AS decSumValue
				  ,CASE WHEN dbo.tblInvExt.decOnOrder = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decOnOrder ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decOnOrder / decConversionFactor ELSE dbo.tblInvExt.decOnOrder * decConversionFactor END END) END AS decSumOnOrder
				  ,CASE WHEN dbo.tblInvExt.decManuf   = 0 THEN 0 ELSE (CASE WHEN ISNULL(strUOMPartNumber,'') = '' THEN dbo.tblInvExt.decManuf   ELSE CASE strConversionType WHEN 'Multiply' THEN dbo.tblInvExt.decManuf   / decConversionFactor ELSE dbo.tblInvExt.decManuf   * decConversionFactor END END) END AS decSumManuf
				 ,decMovingAvgCost = CASE tblInvExt.decOnHand WHEN 0 THEN 0 ELSE (tblInvExt.decValue/tblInvExt.decOnHand) END 
				 ,BudgetQty = CAST((Case when @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END) as decimal)
				,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
				 WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)      
				, (Case when @EmployeeName <> '' THEN  dbo.tblEmpItemBudgetDT.strEmpNumber ELSE '' END)  AS strCuVeID   
				FROM Data_Inv
				INNER JOIN tblInvExt ON Data_Inv.strPartNumber = tblInvExt.strPartNumber
				LEFT OUTER JOIN dbo.tblEmpItemBudgetDT (NOLOCK) ON Data_Inv.strPartNumber = tblEmpItemBudgetDT.strPartNumber    
				WHERE (
					dbo.tblInvExt.strLocName = LTRIM(RTRIM(@strLocName))
					AND dbo.tblInvExt.bitInActive = 0
					)					
					AND ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') = case when @EmployeeName<> '' then @EmployeeName else ISNULL(tblEmpItemBudgetDT.strEmpNumber,'') end
				)			
		Select * from(SELECT ROW_NUMBER() OVER (ORDER BY Data_Final.strPartNumber) RowNum,Data_Final.*
		,(SElect Count(*) from Data_Final as a) as [intRowCount]
		FROM Data_Final) as temp
	WHERE RowNum >= (@Offset + 1)
		AND RowNum <= (@Offset + @PageSize)
			END
	END

	 END    
END
    
Drop table #TempType
Drop table #TempInvVend
Drop table #TempINV
GO
/****** Object:  StoredProcedure [dbo].[GettblInvBySearchCriteria]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------------
CREATE PROCEDURE [dbo].[GettblInvBySearchCriteria] (
	@intType VARCHAR(50) = NULL
	,@UserName NVARCHAR(50) = NULL
	,@PriceList NVARCHAR(20) = NULL
	,@strLocName VARCHAR(500)= NULL
	,@Date VARCHAR(20) = NULL
	,@FilterType INTEGER = 0
	)
AS
IF @FilterType = 0	--NONE
BEGIN

	IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'
	BEGIN

		SELECT dbo.tblInv.strPartNumber as PartNumber
			,dbo.tblInv.strDesc as Description
			,dbo.tblInv.intType as Type
			,dbo.tblInv.strCategory as Category
			,dbo.tblInv.bitUseBOM as IsUseBOM
			,dbo.tblInv.bitInactive as IsInactive
			,dbo.tblInv.decSumAvail as SumAvail
			,dbo.tblInv.decSumAlloc as SumAlloc
			,dbo.tblInv.decSumManuf as SumManuf
			,dbo.tblInv.decSumOnHand as SumOnHand
			,dbo.tblInv.decSumValue as SumValue
			,dbo.tblInv.decSumOnOrder as SumOnOrder
			,dbo.tblInv.strField1 as Field1
			,dbo.tblInv.strField2 as Field2
			,dbo.tblInv.strField3 as Field3
			,dbo.tblInv.strField4 as Field4
			,dbo.tblInv.strField5 as Field5
			,dbo.tblInv.strField6 as Field6
			,dbo.tblInv.strBarCode as BarCode
			,dbo.tblInv.bitInvSerialType as IsInvSerialType
			,dbo.tblInv.strBarCode2 as BarCode2
			,dbo.tblInvPrice.strPricelist as Pricelist
			,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
			,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS IsTrackExpiryDate
			,dbo.tblInv.decLastPPUnit AS LastPPUnit
			,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
			,NULL AS strCuVeID
		FROM dbo.tblInv (NOLOCK)
		INNER JOIN dbo.tblInvPrice (NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
		INNER JOIN dbo.tblPriceListsByDate (NOLOCK) ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
		WHERE (dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',') WHERE data <> 5)
				OR @intType = NULL)
		AND (dbo.tblInv.bitInactive = 0)
		AND (dbo.tblInvPrice.strPricelist = @PriceList
			OR dbo.tblInvPrice.strPricelist IS NULL)
		AND (@Date IS NULL
			OR @Date BETWEEN dbo.tblPriceListsByDate.dteStartDate AND dbo.tblPriceListsByDate.dteFinishDate)
		AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
										FROM dbo.tblInvCat (NOLOCK)
										LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
										WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
										OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
											AND dbo.tblInvCatSec.strUserName = @UserName))) 
			OR dbo.tblInv.strCategory IS NULL)
		UNION ALL
		SELECT dbo.tblInv.strPartNumber as PartNumber 
			,dbo.tblInv.strDesc as Description
			,dbo.tblInv.intType as Type
			,dbo.tblInv.strCategory as Category
			,dbo.tblInv.bitUseBOM as UseBOM
			,dbo.tblInv.bitInactive as IsInactive
			,dbo.tblInv.decSumAvail as SumAvail
			,dbo.tblInv.decSumAlloc as SumAlloc
			,dbo.tblInv.decSumManuf as SumManuf
			,dbo.tblInv.decSumOnHand as SumOnHand
			,dbo.tblInv.decSumValue as SumValue
			,dbo.tblInv.decSumOnOrder as SumOnOrder
			,dbo.tblInv.strField1 as Field1
			,dbo.tblInv.strField2 as Field2
			,dbo.tblInv.strField3 as Field3
			,dbo.tblInv.strField4 as Field4
			,dbo.tblInv.strField5 as Field5
			,dbo.tblInv.strField6 as Field6
			,dbo.tblInv.strBarCode as BarCode
			,dbo.tblInv.bitInvSerialType as IsInvSerialType
			,dbo.tblInv.strBarCode2 as BarCode2
			,NULL AS Pricelist 
			,Cast(0 as decimal(18,2)) AS Selling
			,NULL AS IsTrackExpiryDate
			,dbo.tblInv.decLastPPUnit as LastPPUnit
			,dbo.tblinv.intDecimalQuantity as DecimalQuantity
			,NULL AS strCuVeID
		FROM dbo.tblInv (NOLOCK)
		WHERE (dbo.tblInv.intType IN (ISNULL((SELECT data FROM dbo.split(@intType, ',') WHERE data = 5), 0)))
		AND (dbo.tblInv.bitInactive = 0)
		AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
										FROM dbo.tblInvCat (NOLOCK)
										LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
										WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
										OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
											AND dbo.tblInvCatSec.strUserName = @UserName))) 
			OR dbo.tblInv.strCategory IS NULL)

	END
	ELSE
	BEGIN

		SELECT dbo.tblInv.strPartNumber as PartNumber
			,dbo.tblInv.strDesc as Description
			,dbo.tblInv.intType as Type
			,dbo.tblInv.strCategory as Category
			,dbo.tblInv.bitUseBOM as IsUseBOM
			,dbo.tblInv.bitInactive as IsInactive
			,dbo.tblInvExt.decAvail AS SumAvail
			,dbo.tblInvExt.decAlloc AS SumAlloc
			,dbo.tblInvExt.decManuf as SumManuf
			,dbo.tblInvExt.decOnHand AS SumOnHand
			,dbo.tblInvExt.decValue AS SumValue
			,dbo.tblInvExt.decOnOrder AS SumOnOrder
			,dbo.tblInv.strField1 as Field1
			,dbo.tblInv.strField2 as Field2
			,dbo.tblInv.strField3 as Field3
			,dbo.tblInv.strField4 as Field4
			,dbo.tblInv.strField5 as Field5
			,dbo.tblInv.strField6 as Field6
			,dbo.tblInv.strBarCode as BarCode
			,dbo.tblInv.bitInvSerialType as IsInvSerialType
			,dbo.tblInv.strBarCode2 as BarCode2
			,dbo.tblInvPrice.strPricelist as Pricelist
			,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
			,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS IsTrackExpiryDate
			,dbo.tblInv.decLastPPUnit as LastPPUnit
			,dbo.tblInv.intDecimalQuantity as DecimalQuantity
			,NULL AS strCuVeID
		FROM dbo.tblInv (NOLOCK)
		INNER JOIN dbo.tblInvExt (NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvExt.strPartNumber
		INNER JOIN dbo.tblInvLoc (NOLOCK) ON dbo.tblInvExt.strLocName = dbo.tblInvLoc.strLocName
		INNER JOIN dbo.tblInvPrice (NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
		INNER JOIN dbo.tblPriceListsByDate (NOLOCK) ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
		WHERE (@Date IS NULL
			 OR @Date BETWEEN tblPriceListsByDate.dteStartDate AND tblPriceListsByDate.dteFinishDate)
		AND (dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@strLocName)))
		AND (dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',') WHERE data <> 5)
			 OR @intType = NULL)
		AND (dbo.tblInv.bitInactive = 0)
		AND (dbo.tblInvPrice.strPricelist = @PriceList
			 OR dbo.tblInvPrice.strPricelist IS NULL)
		AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
										FROM dbo.tblInvCat (NOLOCK)
										LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
										WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
										OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
											AND dbo.tblInvCatSec.strUserName = @UserName))) 
			OR dbo.tblInv.strCategory IS NULL)
		UNION ALL
		SELECT dbo.tblInv.strPartNumber as PartNumber
			,dbo.tblInv.strDesc as Description
			,dbo.tblInv.intType as Type
			,dbo.tblInv.strCategory as Category
			,dbo.tblInv.bitUseBOM as IsUseBOM
			,dbo.tblInv.bitInactive as IsInactive
			,dbo.tblInv.decSumAvail as SumAvail
			,dbo.tblInv.decSumAlloc as SumAlloc
			,dbo.tblInv.decSumManuf as SumManuf
			,dbo.tblInv.decSumOnHand as SumOnHand
			,dbo.tblInv.decSumValue as SumValue
			,dbo.tblInv.decSumOnOrder as SumOnOrder
			,dbo.tblInv.strField1 as Field1
			,dbo.tblInv.strField2 as Field2
			,dbo.tblInv.strField3 as Field3
			,dbo.tblInv.strField4 as Field4
			,dbo.tblInv.strField5 as Field5
			,dbo.tblInv.strField6 as Field6
			,dbo.tblInv.strBarCode as BarCode
			,dbo.tblInv.bitInvSerialType as IsInvSerialType
			,dbo.tblInv.strBarCode2 as BarCode2
			,NULL AS Pricelist
			,Cast(0 as decimal(18,2)) AS Selling
			,NULL AS IsTrackExpiryDate
			,dbo.tblInv.decLastPPUnit as LastPPUnit
			,dbo.tblinv.intDecimalQuantity as DecimalQuantity
			,NULL AS strCuVeID
		FROM dbo.tblInv (NOLOCK)
		WHERE (dbo.tblInv.intType IN (ISNULL((SELECT data FROM dbo.split(@intType, ',') WHERE data = 5), 0)))
		AND (dbo.tblInv.bitInactive = 0)
		AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
										FROM dbo.tblInvCat (NOLOCK)
										LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
										WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
										OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
											AND dbo.tblInvCatSec.strUserName = @UserName))) 
			OR dbo.tblInv.strCategory IS NULL)

	END
END

IF @FilterType = 1	--VENDOR
BEGIN

	IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'
	BEGIN

		SELECT dbo.tblInv.strPartNumber as PartNumber
			,dbo.tblInv.strDesc as Description
			,dbo.tblInv.intType as Type
			,dbo.tblInv.strCategory as Category
			,dbo.tblInv.bitUseBOM as IsUseBOM
			,dbo.tblInv.bitInactive as IsInactive 
			,dbo.tblInv.decSumAvail as SumAvail
			,dbo.tblInv.decSumAlloc	as SumAlloc
			,dbo.tblInv.decSumManuf as SumManuf
			,dbo.tblInv.decSumOnHand as SumOnHand
			,dbo.tblInv.decSumValue	 as SumValue
			,dbo.tblInv.decSumOnOrder as SumOnOrder
			,dbo.tblInv.strField1  as Field1
			,dbo.tblInv.strField2  as Field2
			,dbo.tblInv.strField3  as Field3
			,dbo.tblInv.strField4  as Field4
			,dbo.tblInv.strField5  as Field5
			,dbo.tblInv.strField6  as Field6
			,dbo.tblInv.strBarCode as BarCode
			,dbo.tblInv.bitInvSerialType as IsInvSerialType
			,dbo.tblInv.strBarCode2 as BarCode2 
			,dbo.tblInvPrice.strPricelist as Pricelist
			,ISNULL(dbo.tblInvPrice.decSelling, 0) AS decSelling
			,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS IsTrackExpiryDate
			,dbo.tblInv.decLastPPUnit      as LastPPUnit
			,dbo.tblInv.intDecimalQuantity as DecimalQuantity
			,dbo.tblInvVend.strVendName AS strCuVeID
		FROM dbo.tblInv (NOLOCK)
		INNER JOIN dbo.tblInvPrice (NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
		INNER JOIN dbo.tblPriceListsByDate (NOLOCK) ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
		LEFT OUTER JOIN dbo.tblInvVend (NOLOCK) ON dbo.tblInv.strPartNumber = tblInvVend.strPartNumber
		WHERE (dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',') WHERE data <> 5)
				OR @intType = NULL)
		AND (dbo.tblInv.bitInactive = 0)
		AND (dbo.tblInvPrice.strPricelist = @PriceList
			OR dbo.tblInvPrice.strPricelist IS NULL)
		AND (@Date IS NULL
			OR @Date BETWEEN dbo.tblPriceListsByDate.dteStartDate AND dbo.tblPriceListsByDate.dteFinishDate)
		AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
										FROM dbo.tblInvCat (NOLOCK)
										LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
										WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
										OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
											AND dbo.tblInvCatSec.strUserName = @UserName))) 
			OR dbo.tblInv.strCategory IS NULL)
		UNION ALL
		SELECT dbo.tblInv.strPartNumber as PartNumber
			,dbo.tblInv.strDesc as Description
			,dbo.tblInv.intType         as Type
			,dbo.tblInv.strCategory		as Category
			,dbo.tblInv.bitUseBOM		as IsUseBOM
			,dbo.tblInv.bitInactive		as IsInactive
			,dbo.tblInv.decSumAvail		as SumAvail
			,dbo.tblInv.decSumAlloc		as SumAlloc
			,dbo.tblInv.decSumManuf as SumManuf
			,dbo.tblInv.decSumOnHand	as SumOnHand
			,dbo.tblInv.decSumValue		as SumValue
			,dbo.tblInv.decSumOnOrder	as SumOnOrder
			,dbo.tblInv.strField1		as Field1
			,dbo.tblInv.strField2		as Field2
			,dbo.tblInv.strField3		as Field3
			,dbo.tblInv.strField4		as Field4
			,dbo.tblInv.strField5		as Field5
			,dbo.tblInv.strField6		as Field6
			,dbo.tblInv.strBarCode		as BarCode
			,dbo.tblInv.bitInvSerialType as IsInvSerialType
			,dbo.tblInv.strBarCode2     as BarCode2 
			,NULL AS Pricelist
			,Cast(0 as decimal(18,2)) AS Selling
			,NULL AS IsTrackExpiryDate
			,dbo.tblInv.decLastPPUnit	   as LastPPUnit
			,dbo.tblinv.intDecimalQuantity as DecimalQuantity
			,NULL AS CuVeID
		FROM dbo.tblInv (NOLOCK)
		WHERE (dbo.tblInv.intType IN (ISNULL((SELECT data FROM dbo.split(@intType, ',') WHERE data = 5), 0)))
		AND (dbo.tblInv.bitInactive = 0)
		AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
										FROM dbo.tblInvCat (NOLOCK)
										LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
										WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
										OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
											AND dbo.tblInvCatSec.strUserName = @UserName))) 
			OR dbo.tblInv.strCategory IS NULL)

	END
	ELSE
	BEGIN

		SELECT dbo.tblInv.strPartNumber as PartNumber
			,dbo.tblInv.strDesc     as Description
			,dbo.tblInv.intType		as Type
			,dbo.tblInv.strCategory	as Category
			,dbo.tblInv.bitUseBOM	as IsUseBOM
			,dbo.tblInv.bitInactive	as IsInactive
			,dbo.tblInvExt.decAvail AS SumAvail
			,dbo.tblInvExt.decAlloc AS SumAlloc
			,dbo.tblInvExt.decManuf as SumManuf
			,dbo.tblInvExt.decOnHand AS SumOnHand
			,dbo.tblInvExt.decValue AS SumValue
			,dbo.tblInvExt.decOnOrder AS SumOnOrder
			,dbo.tblInv.strField1		 as Field1
			,dbo.tblInv.strField2		 as Field2
			,dbo.tblInv.strField3		 as Field3
			,dbo.tblInv.strField4		 as Field4
			,dbo.tblInv.strField5		 as Field5
			,dbo.tblInv.strField6		 as Field6
			,dbo.tblInv.strBarCode		 as BarCode
			,dbo.tblInv.bitInvSerialType as IsInvSerialType
			,dbo.tblInv.strBarCode2      as BarCode2
			,dbo.tblInvPrice.strPricelist as Pricelist
			,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
			,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS IsTrackExpiryDate
			,dbo.tblInv.decLastPPUnit	   as LastPPUnit
			,dbo.tblInv.intDecimalQuantity as DecimalQuantity
			,dbo.tblInvVend.strVendName AS strCuVeID
		FROM dbo.tblInv (NOLOCK)
		INNER JOIN dbo.tblInvExt (NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvExt.strPartNumber
		INNER JOIN dbo.tblInvLoc (NOLOCK) ON dbo.tblInvExt.strLocName = dbo.tblInvLoc.strLocName
		INNER JOIN dbo.tblInvPrice (NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
		INNER JOIN dbo.tblPriceListsByDate (NOLOCK) ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
		LEFT OUTER JOIN dbo.tblInvVend (NOLOCK) ON dbo.tblInv.strPartNumber = tblInvVend.strPartNumber
		WHERE (@Date IS NULL
			 OR @Date BETWEEN tblPriceListsByDate.dteStartDate AND tblPriceListsByDate.dteFinishDate)
		AND (dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@strLocName)))
		AND (dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',') WHERE data <> 5)
			 OR @intType = NULL)
		AND (dbo.tblInv.bitInactive = 0)
		AND (dbo.tblInvPrice.strPricelist = @PriceList
			 OR dbo.tblInvPrice.strPricelist IS NULL)
		AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
										FROM dbo.tblInvCat (NOLOCK)
										LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
										WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
										OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
											AND dbo.tblInvCatSec.strUserName = @UserName))) 
			OR dbo.tblInv.strCategory IS NULL)
		UNION ALL
		SELECT dbo.tblInv.strPartNumber as PartNumber
			,dbo.tblInv.strDesc			 as Description
			,dbo.tblInv.intType			 as Type
			,dbo.tblInv.strCategory		 as Category
			,dbo.tblInv.bitUseBOM		 as IsUseBOM
			,dbo.tblInv.bitInactive		 as IsInactive
			,dbo.tblInv.decSumAvail		 as SumAvail
			,dbo.tblInv.decSumAlloc		 as SumAlloc
			,dbo.tblInv.decSumManuf      as SumManuf
			,dbo.tblInv.decSumOnHand	 as SumOnHand
			,dbo.tblInv.decSumValue		 as SumValue
			,dbo.tblInv.decSumOnOrder	 as SumOnOrder
			,dbo.tblInv.strField1		 as Field1
			,dbo.tblInv.strField2		 as Field2
			,dbo.tblInv.strField3		 as Field3
			,dbo.tblInv.strField4		 as Field4
			,dbo.tblInv.strField5		 as Field5
			,dbo.tblInv.strField6		 as Field6
			,dbo.tblInv.strBarCode		 as BarCode
			,dbo.tblInv.bitInvSerialType as IsInvSerialType
			,dbo.tblInv.strBarCode2      as BarCode2
			,NULL AS Pricelist
			,Cast(0 as decimal(18,2)) AS Selling
			,NULL AS IsTrackExpiryDate
			,dbo.tblInv.decLastPPUnit	   as LastPPUnit
			,dbo.tblinv.intDecimalQuantity as DecimalQuantity
			,NULL AS strCuVeID
		FROM dbo.tblInv (NOLOCK)
		WHERE (dbo.tblInv.intType IN (ISNULL((SELECT data FROM dbo.split(@intType, ',') WHERE data = 5), 0)))
		AND (dbo.tblInv.bitInactive = 0)
		AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
										FROM dbo.tblInvCat (NOLOCK)
										LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
										WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
										OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
											AND dbo.tblInvCatSec.strUserName = @UserName))) 
			OR dbo.tblInv.strCategory IS NULL)

	END
END

IF @FilterType = 2	--CUSTOMER
BEGIN

	IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'
	BEGIN

		SELECT dbo.tblInv.strPartNumber as PartNumber
			,dbo.tblInv.strDesc			 as Description
			,dbo.tblInv.intType			 as Type
			,dbo.tblInv.strCategory		 as Category
			,dbo.tblInv.bitUseBOM		 as IsUseBOM
			,dbo.tblInv.bitInactive		 as IsInactive
			,dbo.tblInv.decSumAvail		 as SumAvail
			,dbo.tblInv.decSumAlloc		 as SumAlloc
			,dbo.tblInv.decSumManuf      as SumManuf
			,dbo.tblInv.decSumOnHand	 as SumOnHand
			,dbo.tblInv.decSumValue		 as SumValue
			,dbo.tblInv.decSumOnOrder	 as SumOnOrder
			,dbo.tblInv.strField1		 as Field1
			,dbo.tblInv.strField2		 as Field2
			,dbo.tblInv.strField3		 as Field3
			,dbo.tblInv.strField4		 as Field4
			,dbo.tblInv.strField5		 as Field5
			,dbo.tblInv.strField6		 as Field6
			,dbo.tblInv.strBarCode		 as BarCode
			,dbo.tblInv.bitInvSerialType as IsInvSerialType
			,dbo.tblInv.strBarCode2      as BarCode2
			,dbo.tblInvPrice.strPricelist as Pricelist
			,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
			,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS IsTrackExpiryDate
			,dbo.tblInv.decLastPPUnit	   as LastPPUnit
			,dbo.tblInv.intDecimalQuantity as DecimalQuantity
			,dbo.tblInvCustomer.strCustName AS strCuVeID
		FROM dbo.tblInv (NOLOCK)
		INNER JOIN dbo.tblInvPrice (NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
		INNER JOIN dbo.tblPriceListsByDate (NOLOCK) ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
		LEFT OUTER JOIN dbo.tblInvCustomer (NOLOCK) ON dbo.tblInv.strPartNumber = tblInvCustomer.strPartNumber
		WHERE (dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',') WHERE data <> 5)
				OR @intType = NULL)
		AND (dbo.tblInv.bitInactive = 0)
		AND (dbo.tblInvPrice.strPricelist = @PriceList
			OR dbo.tblInvPrice.strPricelist IS NULL)
		AND (@Date IS NULL
			OR @Date BETWEEN dbo.tblPriceListsByDate.dteStartDate AND dbo.tblPriceListsByDate.dteFinishDate)
		AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
										FROM dbo.tblInvCat (NOLOCK)
										LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
										WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
										OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
											AND dbo.tblInvCatSec.strUserName = @UserName))) 
			OR dbo.tblInv.strCategory IS NULL)
		UNION ALL
		SELECT dbo.tblInv.strPartNumber as PartNumber
			,dbo.tblInv.strDesc			  as Description
			,dbo.tblInv.intType			  as Type
			,dbo.tblInv.strCategory		  as Category
			,dbo.tblInv.bitUseBOM		  as IsUseBOM
			,dbo.tblInv.bitInactive		  as IsInactive
			,dbo.tblInv.decSumAvail		  as SumAvail
			,dbo.tblInv.decSumAlloc		  as SumAlloc
			,dbo.tblInv.decSumManuf      as SumManuf
			,dbo.tblInv.decSumOnHand	  as SumOnHand
			,dbo.tblInv.decSumValue		  as SumValue
			,dbo.tblInv.decSumOnOrder	  as SumOnOrder
			,dbo.tblInv.strField1		  as Field1
			,dbo.tblInv.strField2		  as Field2
			,dbo.tblInv.strField3		  as Field3
			,dbo.tblInv.strField4		  as Field4
			,dbo.tblInv.strField5		  as Field5
			,dbo.tblInv.strField6		  as Field6
			,dbo.tblInv.strBarCode		  as BarCode
			,dbo.tblInv.bitInvSerialType  as IsInvSerialType
			,dbo.tblInv.strBarCode2       as BarCode2 
			,NULL AS Pricelist 
			,Cast(0 as decimal(18,2)) AS Selling
			,NULL AS IsTrackExpiryDate
			,dbo.tblInv.decLastPPUnit	   as LastPPUnit
			,dbo.tblinv.intDecimalQuantity as DecimalQuantity
			,NULL AS strCuVeID
		FROM dbo.tblInv (NOLOCK)
		WHERE (dbo.tblInv.intType IN (ISNULL((SELECT data FROM dbo.split(@intType, ',') WHERE data = 5), 0)))
		AND (dbo.tblInv.bitInactive = 0)
		AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
										FROM dbo.tblInvCat (NOLOCK)
										LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
										WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
										OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
											AND dbo.tblInvCatSec.strUserName = @UserName))) 
			OR dbo.tblInv.strCategory IS NULL)

	END
	ELSE
	BEGIN

		SELECT dbo.tblInv.strPartNumber as PartNumber
			,dbo.tblInv.strDesc		as Description
			,dbo.tblInv.intType		as Type
			,dbo.tblInv.strCategory as Category
	,dbo.tblInv.bitUseBOM	as IsUseBOM
	,dbo.tblInv.bitInactive as IsInactive
			,dbo.tblInvExt.decAvail AS SumAvail
			,dbo.tblInvExt.decAlloc AS SumAlloc
			,dbo.tblInvExt.decManuf AS SumManuf
			,dbo.tblInvExt.decOnHand AS SumOnHand
			,dbo.tblInvExt.decValue AS SumValue
			,dbo.tblInvExt.decOnOrder AS SumOnOrder
	,dbo.tblInv.strField1		 as Field1
	,dbo.tblInv.strField2		 as Field2
	,dbo.tblInv.strField3		 as Field3
	,dbo.tblInv.strField4		 as Field4
	,dbo.tblInv.strField5		 as Field5
	,dbo.tblInv.strField6		 as Field6
	,dbo.tblInv.strBarCode		 as BarCode
	,dbo.tblInv.bitInvSerialType as IsInvSerialType
	,dbo.tblInv.strBarCode2      as BarCode2
	,dbo.tblInvPrice.strPricelist as Pricelist
	,ISNULL(dbo.tblInvPrice.decSelling, 0) AS Selling
			,CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE NULL END AS IsTrackExpiryDate
			,dbo.tblInv.decLastPPUnit	   as LastPPUnit
			,dbo.tblInv.intDecimalQuantity as DecimalQuantity
			,dbo.tblInvCustomer.strCustName AS strCuVeID
		FROM dbo.tblInv (NOLOCK)
		INNER JOIN dbo.tblInvExt (NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvExt.strPartNumber
		INNER JOIN dbo.tblInvLoc (NOLOCK) ON dbo.tblInvExt.strLocName = dbo.tblInvLoc.strLocName
		INNER JOIN dbo.tblInvPrice (NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
		INNER JOIN dbo.tblPriceListsByDate (NOLOCK) ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
		LEFT OUTER JOIN dbo.tblInvCustomer (NOLOCK) ON dbo.tblInv.strPartNumber = tblInvCustomer.strPartNumber
		WHERE (@Date IS NULL
			 OR @Date BETWEEN tblPriceListsByDate.dteStartDate AND tblPriceListsByDate.dteFinishDate)
		AND (dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@strLocName)))
		AND (dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',') WHERE data <> 5)
			 OR @intType = NULL)
		AND (dbo.tblInv.bitInactive = 0)
		AND (dbo.tblInvPrice.strPricelist = @PriceList
			 OR dbo.tblInvPrice.strPricelist IS NULL)
		AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
										FROM dbo.tblInvCat (NOLOCK)
										LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
										WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
										OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
											AND dbo.tblInvCatSec.strUserName = @UserName))) 
			OR dbo.tblInv.strCategory IS NULL)
		UNION ALL
		SELECT dbo.tblInv.strPartNumber as PartNumber
			,dbo.tblInv.strDesc			 as Description
			,dbo.tblInv.intType			 as Type
			,dbo.tblInv.strCategory		 as Category
			,dbo.tblInv.bitUseBOM		 as IsUseBOM
			,dbo.tblInv.bitInactive		 as IsInactive
			,dbo.tblInv.decSumAvail		 as SumAvail
			,dbo.tblInv.decSumAlloc		 as SumAlloc
			,dbo.tblInv.decSumManuf      as SumManuf
			,dbo.tblInv.decSumOnHand	 as SumOnHand
			,dbo.tblInv.decSumValue		 as SumValue
			,dbo.tblInv.decSumOnOrder	 as SumOnOrder
			,dbo.tblInv.strField1		 as Field1
			,dbo.tblInv.strField2		 as Field2
			,dbo.tblInv.strField3		 as Field3
			,dbo.tblInv.strField4		 as Field4
			,dbo.tblInv.strField5		 as Field5
			,dbo.tblInv.strField6		 as Field6
			,dbo.tblInv.strBarCode		 as BarCode
			,dbo.tblInv.bitInvSerialType as IsInvSerialType
			,dbo.tblInv.strBarCode2      as BarCode2
			,NULL AS Pricelist
			,Cast(0 as decimal(18,2)) AS Selling
			,NULL AS IsTrackExpiryDate
			,dbo.tblInv.decLastPPUnit	   as LastPPUnit
			,dbo.tblinv.intDecimalQuantity as DecimalQuantity
			,NULL AS strCuVeID
		FROM dbo.tblInv (NOLOCK)
		WHERE (dbo.tblInv.intType IN (ISNULL((SELECT data FROM dbo.split(@intType, ',') WHERE data = 5), 0)))
		AND (dbo.tblInv.bitInactive = 0)
		AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
										FROM dbo.tblInvCat (NOLOCK)
										LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
										WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
										OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
											AND dbo.tblInvCatSec.strUserName = @UserName))) 
			OR dbo.tblInv.strCategory IS NULL)

	END
END
GO
/****** Object:  StoredProcedure [dbo].[GettblInvCatByCriteria]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE  [dbo].[GettblInvCatByCriteria] 
(@strCategory nvarchar(20) = NULL ,
@strDesc nvarchar(100) = NULL ,
@bitInactive bit = NULL ,
@decMinMarginPerc decimal = NULL ,
@bitUseMinMarginPerc bit = NULL ,
@intAlertOnMinMarginPerc int = NULL )
 As Select [tblInvCat].[strCategory],
[tblInvCat].[strDesc],
[tblInvCat].[bitInactive],
[tblInvCat].[decMinMarginPerc],
[tblInvCat].[bitUseMinMarginPerc],
[tblInvCat].[intAlertOnMinMarginPerc] from [tblInvCat] (NOLOCK)
GO
/****** Object:  StoredProcedure [dbo].[GettblInvoiceDocDataForSIReport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*************End  [dbo].[SerailNumberForSIReport_SubReportData]  *************/


/*************Start [dbo].[GettblInvoiceDocDataForSIReport]  *************/


CREATE PROCEDURE [dbo].[GettblInvoiceDocDataForSIReport] (@DocNumber NVARCHAR(100))
AS
BEGIN
	SELECT tblInvoiceDoc.*
		,ISNULL(tblDeliveryMethods.bitDisplay, 0) AS bitDisplay
		,(
				SELECT bitInvImgOnSI
				FROM tblCoOpts
				) AS bitShowImage
	FROM tblInvoiceDoc
	LEFT JOIN tblDeliveryMethods ON tblInvoiceDoc.strDelMethodCode = tblDeliveryMethods.strDelMethodCode
	WHERE strInvDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GettblInvVendByCriteria]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[GettblInvVendByCriteria] 
(@strPartNumber nvarchar(50) = NULL ,
@strVendName nvarchar(50) = NULL ,
@lngID bigint = NULL ,
@strItemCode nvarchar(50) = NULL ,
@strItemDesc nvarchar(500) = NULL ,
@intWarrantyDays int = NULL ,
@decPrice money = NULL ,
@bitPreferred bit = NULL ,
@decDiscPerc money = NULL ,
@decLocalPrice money = NULL ,
@decLandedCostFactor money = NULL )
 As Select [tblInvVend].[strPartNumber],
[tblInvVend].[strVendName],
[tblInvVend].[lngID],
[tblInvVend].[strItemCode],
[tblInvVend].[strItemDesc],
[tblInvVend].[intWarrantyDays],
[tblInvVend].[decPrice],
[tblInvVend].[bitPreferred],
[tblInvVend].[decDiscPerc],
[tblInvVend].[decLocalPrice],
[tblInvVend].[decLandedCostFactor],
[tblInv].[strPartNumber],
[tblInv].[strDesc],
[tblInv].[intType],
[tblInv].[strCategory],
'' AS [strAcctSet],
[tblInv].[intExpAcct],
[tblInv].[decCostOnPO],
[tblInv].[bitUseLPPOnPO],
[tblInv].[intReorderQty],
[tblInv].[strBuyUnit],
[tblInv].[strStockUnit],
[tblInv].[decBuyToStock],
[tblInv].[bitAllowPriceChg],
[tblInv].[dteDateLastSale],
[tblInv].[dteLastPurchase],
[tblInv].[decLastPPUnit],
[tblInv].[dteLastUpdated],
[tblInv].[bitUseBOM],
[tblInv].[intBOMQty],
[tblInv].[strAddInfo],
[tblInv].[bitInactive],
[tblInv].[decSumAvail],
[tblInv].[decSumAlloc],
[tblInv].[decSumOnHand],
[tblInv].[decSumValue],
[tblInv].[decSumOnOrder],
[tblInv].[decSumOpenQty],
[tblInv].[decSumOpenValue],
[tblInv].[decSumValYearStart],
[tblInv].[decSumQtyYearStart],
[tblInv].[decSumAmtSoldYTD],
[tblInv].[decSumAmtSoldLY],
[tblInv].[decSumQtySoldYTD],
[tblInv].[decSumQtySoldLY],
[tblInv].[decSumCOGSYTD],
[tblInv].[decSumCOGSLY],
[tblInv].[intSumNumTransYTD],
[tblInv].[intSumNumTransLY],
[tblInv].[bitAutoBuild],
[tblInv].[strField1],
[tblInv].[strField2],
[tblInv].[strField3],
[tblInv].[strField4],
[tblInv].[strField5],
[tblInv].[strField6],
[tblInv].[strBarCode],
[tblInv].[decStandardCost],
'' AS [strBinLoc],
[tblInv].[bitItemNumConvUsed],
[tblInv].[strSellUnit],
[tblInv].[strSellStockUnit],
[tblInv].[decSellFromStock],
[tblInv].[strItemSegment1],
[tblInv].[strItemSegment2],
[tblInv].[strItemSegment3],
[tblInv].[strItemSegment4],
[tblInv].[strInvNumConv],
[tblInv].[bitInvSerialType],
[tblInv].[strInvSerialType],
[tblInv].[decRepairCharge],
[tblInv].[strBarCode2],
[tblInv].[bitVoucherEnabled],
[tblInv].[strVoucherCode],
[tblInv].[decDefSaleQty],
[tblInv].[strExtendedDesc],
[tblInv].[bitInvExtDescOnSI],
[tblInv].[bitInvExtDescOnSO],
[tblInv].[bitInvExtDescOnSQ],
[tblInv].[bitInvExtDescOnSFHQ],
[tblInv].[bitInvExtDescOnCR],
[tblInv].[bitInvExtDescOnPI],
[tblInv].[bitInvExtDescOnPO],
[tblInv].[bitInvExtDescOnPQ],
[tblInv].[bitInvExtDescOnBRQ],
[tblInv].[bitWebstoreItem],
[tblVendors].[strVendName],
[tblVendors].[strStreet1],
[tblVendors].[strStreet2],
[tblVendors].[strCity],
[tblVendors].[strProvince],
[tblVendors].[strPostal],
[tblVendors].[strPhone],
[tblVendors].[strCellPhone],
[tblVendors].[strFax],
[tblVendors].[strEmail],
[tblVendors].[strVAT],
[tblVendors].[strCK],
[tblVendors].[decBalDue],
[tblVendors].[decYTDPurch],
[tblVendors].[decOpenOrders],
[tblVendors].[intDelMethod],
[tblVendors].[bitInventoryVendor],
[tblVendors].[bitExpenseVendor],
[tblVendors].[intExpAcct],
[tblVendors].[bitInactive],
[tblVendors].[dteLastUpdated],
[tblVendors].[strContact],
[tblVendors].[strField1],
[tblVendors].[strField2],
[tblVendors].[strField3],
[tblVendors].[strField4],
[tblVendors].[strField5],
[tblVendors].[strField6],
[tblVendors].[strTaxCode],
[tblVendors].[dteSince],
[tblVendors].[strNotes],
[tblVendors].[uID],
[tblVendors].[strVendDesc],
[tblVendors].[strCountry],
[tblVendors].[strTerm],
[tblVendors].[intDept],
[tblVendors].[strCurrency],
[tblVendors].[decBalDueF],
[tblVendors].[decYTDPurchF],
[tblVendors].[decOpenOrdersF],
[tblVendors].[strField7],
[tblVendors].[strField8],
[tblVendors].[strField9],
[tblVendors].[strField10],
[tblVendors].[strField11],
[tblVendors].[strField12],
[tblVendors].[strVendCategory],
[tblVendors].[strCountryCode],
[tblVendors].[strTenderType],
[tblVendors].[decTradeDiscPerc],
[tblVendors].[bitWithholdTax],
[tblVendors].[strWithholdTaxCode],
[tblInv].[decSumManuf]
from [tblInvVend] (NOLOCK) left outer join
[tblInv] (NOLOCK) ON [tblInvVend].strPartNumber = [tblInv].strPartNumber left outer join
[tblVendors] (NOLOCK) ON [tblInvVend].strVendName = [tblVendors].strVendName
 Where ([tblInvVend].[strPartNumber] =  @strPartNumber or @strPartNumber is null ) and 
([tblInvVend].[strVendName] =  @strVendName or @strVendName is null ) and 
([tblInvVend].[lngID] =  @lngID or @lngID is null ) and 
([tblInvVend].[strItemCode] =  @strItemCode or @strItemCode is null ) and 
([tblInvVend].[strItemDesc] =  @strItemDesc or @strItemDesc is null ) and 
([tblInvVend].[intWarrantyDays] =  @intWarrantyDays or @intWarrantyDays is null ) and 
([tblInvVend].[decPrice] =  @decPrice or @decPrice is null ) and 
([tblInvVend].[bitPreferred] =  @bitPreferred or @bitPreferred is null ) and 
([tblInvVend].[decDiscPerc] =  @decDiscPerc or @decDiscPerc is null ) and 
([tblInvVend].[decLocalPrice] =  @decLocalPrice or @decLocalPrice is null ) and 
([tblInvVend].[decLandedCostFactor] =  @decLandedCostFactor or @decLandedCostFactor is null )
GO
/****** Object:  StoredProcedure [dbo].[GettblManBOMDataForSIReport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*************End [dbo].[SPInvoiceDeliveryCostData]  *************/

/************* [dbo].[GettblManBOMDataForSIReport] Start *************/

CREATE PROCEDURE [dbo].[GettblManBOMDataForSIReport] @DocumentNumber AS VARCHAR(50) = NULL
	,@IsDeliveryNote AS BIT
	,@PartNumber AS VARCHAR(50) = NULL
	,@LineNo AS INT
AS
BEGIN
	IF (@IsDeliveryNote) = 1
	BEGIN
		SELECT BOM.strPartNumber
			,INV2.strDesc
			,COMP.strPartNumber AS strCompNumber
			,INV.strDesc AS strCompDesc
			,DTL.intLineNo
			,CAST(ROUND((COMP.decQty * (DTL.decStockQty / BOM.decQty)), 4) AS FLOAT) AS decQty
			,INV.strStockUnit AS strUnit
		FROM tblInvoiceDocDT DTL
		INNER JOIN tblManBOM BOM ON DTL.strPartNumber = BOM.strPartNumber
			AND DTL.strLocation = BOM.strLocation
		INNER JOIN tblManBOMCompInv COMP ON BOM.lngManBOMID = COMP.lngManBOMID
		INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber
		INNER JOIN tblInv INV2 ON BOM.strPartNumber = INV2.strPartNumber
		LEFT JOIN tblInvBOM ON tblInvBOM.strPartNumber = DTL.strPartNumber
		WHERE (DTL.strInvDocID = @DocumentNumber)
			AND (BOM.bitInactive = 0)
			AND DTL.intLineNo = @LineNo
			AND (BOM.bitPrintDN = 1)
			AND BOM.strPartNumber = @PartNumber
		
		UNION ALL
		
		SELECT tblInvoiceDocDT.strPartNumber
			,Inv2.strDesc
			,tblInvoiceDocDTBOM.strPartItemNumber AS strCompNumber
			,tblInv.strDesc AS strCompDesc
			,tblInvoiceDocDT.intLineNo
			,SUM(tblInvoiceDocDTBOM.decQty) AS intQtyToUse
			,tblInv.strUnitOfMeasure
		FROM tblInvoiceDocDTBOM
		INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTBOM.strInvDocID = tblInvoiceDocDT.strInvDocID
			AND tblInvoiceDocDTBOM.intMainLineNo = tblInvoiceDocDT.intLineNo
		INNER JOIN tblInv ON tblInvoiceDocDTBOM.strPartItemNumber = tblInv.strPartNumber
		INNER JOIN tblInv Inv2 ON tblInvoiceDocDT.strPartNumber = Inv2.strPartNumber
		WHERE tblInvoiceDocDT.strInvDocID = @DocumentNumber
			AND tblInvoiceDocDT.intLineNo = @LineNo
			AND Inv2.bitAutoBuild = 1
			AND Inv2.bitPrintComp = 1
		GROUP BY tblInvoiceDocDT.strPartNumber
			,Inv2.strDesc
			,tblInvoiceDocDTBOM.strPartItemNumber
			,tblInv.strDesc
			,tblInvoiceDocDT.intLineNo
			,tblInv.strUnitOfMeasure
		ORDER BY BOM.strPartNumber
			,COMP.strPartNumber
	END
	ELSE
	BEGIN
		SELECT BOM.strPartNumber
			,INV2.strDesc
			,COMP.strPartNumber AS strCompNumber
			,DTL.intLineNo AS intCompLineNo
			,INV.strDesc AS strCompDesc
			,DTL.intLineNo
			,CAST(ROUND((COMP.decQty * (DTL.decStockQty / BOM.decQty)), 4) AS FLOAT) AS decQty
			,INV.strStockUnit AS strUnit
		FROM tblInvoiceDocDT DTL
		INNER JOIN tblManBOM BOM ON DTL.strPartNumber = BOM.strPartNumber
			AND DTL.strLocation = BOM.strLocation
		INNER JOIN tblManBOMCompInv COMP ON BOM.lngManBOMID = COMP.lngManBOMID
		INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber
		INNER JOIN tblInv INV2 ON BOM.strPartNumber = INV2.strPartNumber
		LEFT JOIN tblInvBOM ON tblInvBOM.strPartNumber = DTL.strPartNumber
		WHERE (DTL.strInvDocID = @DocumentNumber)
			AND (BOM.bitInactive = 0)
			AND DTL.intLineNo = @LineNo
			AND (BOM.bitPrintInv = 1)
			AND BOM.strPartNumber = @PartNumber
		
		UNION ALL
		
		SELECT tblInvoiceDocDT.strPartNumber
			,Inv2.strDesc
			,tblInvoiceDocDTBOM.strPartItemNumber AS strCompNumber
			,tblInvoiceDocDTBOM.intLineNo AS intCompLineNo
			,tblInv.strDesc AS strCompDesc
			,tblInvoiceDocDT.intLineNo
			,SUM(tblInvoiceDocDTBOM.decQty) AS intQtyToUse
			,tblInv.strUnitOfMeasure
		FROM tblInvoiceDocDTBOM
		INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTBOM.strInvDocID = tblInvoiceDocDT.strInvDocID
			AND tblInvoiceDocDTBOM.intMainLineNo = tblInvoiceDocDT.intLineNo
		INNER JOIN tblInv ON tblInvoiceDocDTBOM.strPartItemNumber = tblInv.strPartNumber
		INNER JOIN tblInv Inv2 ON tblInvoiceDocDT.strPartNumber = Inv2.strPartNumber
		WHERE tblInvoiceDocDT.strInvDocID = @DocumentNumber
			AND tblInvoiceDocDT.intLineNo = @LineNo
			AND Inv2.bitAutoBuild = 1
			AND Inv2.bitPrintComp = 1
		GROUP BY tblInvoiceDocDT.strPartNumber
			,Inv2.strDesc
			,tblInvoiceDocDTBOM.strPartItemNumber
			,tblInvoiceDocDTBOM.intLineNo
			,tblInv.strDesc
			,tblInvoiceDocDT.intLineNo
			,tblInv.strUnitOfMeasure
		ORDER BY BOM.strPartNumber
			,COMP.strPartNumber
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GettblManBOMDataForSOReport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/************* [dbo].[SPOrderDeliveryCostData] End *************/

/*************start [dbo].[GettblManBOMDataForSOReport]  *************/

CREATE PROCEDURE [dbo].[GettblManBOMDataForSOReport] @DocumentNumber AS VARCHAR(50) = NULL
	,@PartNumber AS VARCHAR(50) = NULL
AS
BEGIN
	SELECT BOM.strPartNumber
		,INV2.strDesc
		,COMP.strPartNumber AS strCompNumber
		,INV.strDesc AS strCompDesc
		,DTL.intLineNo 
		,ROUND((COMP.decQty * (DTL.decStockQty / BOM.decQty)), 4) AS decQty
		,INV.strStockUnit AS strUnit
	FROM tblOrderDoc HDR
	INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
	INNER JOIN tblManBOM BOM ON DTL.strPartNumber = BOM.strPartNumber
		AND DTL.strLocation = BOM.strLocation
	INNER JOIN tblManBOMCompInv COMP ON BOM.lngManBOMID = COMP.lngManBOMID
	INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber
	INNER JOIN tblInv INV2 ON BOM.strPartNumber = INV2.strPartNumber
	LEFT JOIN tblInvBOM ON tblInvBOM.strPartNumber = DTL.strPartNumber
	WHERE (DTL.strOrdDocID = @DocumentNumber)
		AND (
			HDR.intDocType = 1
			AND HDR.strOrdDocID NOT LIKE 'CR-%'
			)
		AND (BOM.bitInactive = 0)
		AND (BOM.bitPrintSO = 1)
		AND tblInvBOM.strPartNumber IS NULL
	
	UNION ALL
	
	SELECT tblOrderDocDT.strPartNumber
		,Inv2.strDesc
		,tblOrderDocDTBOM.strPartItemNumber AS strCompNumber
		,tblInv.strDesc AS strCompDesc
		,tblOrderDocDT.intLineNo
		,tblOrderDocDTBOM.decQty AS intQtyToUse
		,tblInv.strUnitOfMeasure
	FROM tblOrderDocDTBOM
	INNER JOIN tblOrderDocDT ON tblOrderDocDTBOM.strOrdDocID = tblOrderDocDT.strOrdDocID
		AND tblOrderDocDTBOM.intMainLineNo = tblOrderDocDT.intLineNo
	INNER JOIN tblInv ON tblOrderDocDTBOM.strPartItemNumber = tblInv.strPartNumber
	INNER JOIN tblInv Inv2 ON tblOrderDocDT.strPartNumber = Inv2.strPartNumber
	WHERE tblOrderDocDT.strOrdDocID = @DocumentNumber
		AND Inv2.bitAutoBuild = 1
		AND Inv2.bitPrintComp = 1
	ORDER BY BOM.strPartNumber
		,COMP.strPartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GettblOrderDocQDataForFHQReport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/************* [dbo].[GettblManBOMDataForSIReport] End *************/

/************* [dbo].[GettblOrderDocQDataForFHQReport] Start *************/

CREATE PROCEDURE [dbo].[GettblOrderDocQDataForFHQReport] (@DocNumber NVARCHAR(100))
AS
BEGIN
	SELECT tblOrderDocQ.*
	,ISNULL(tblDeliveryMethods.bitDisplay, 0) AS bitDisplay
FROM tblOrderDocQ
LEFT JOIN tblDeliveryMethods ON tblOrderDocQ.strDelMethodCode = tblDeliveryMethods.strDelMethodCode
WHERE strOrdDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetTenderTypeForPaymentPlanDeposit]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetTenderTypeForPaymentPlanDeposit]
(
    @POSDrawerLength INT,
    @POSDrawer NVARCHAR(100),
    @IsCashSale bit
)
AS
BEGIN
    DECLARE @QueryString AS NVARCHAR(MAX)
    DECLARE @ParameterDefinition AS NVARCHAR(MAX)        
    DECLARE @Name AS NVARCHAR(15) 
    SET @Name = 'Split Payment';

    SET @QueryString = CONCAT(
        'SELECT strName AS Name, ISNULL(intGLNumber, 0) AS GLNumber, bitInActive AS InActive, bitAccount AS IsAccount, ',
        'intDisplayOrder AS DisplayOrder, bitSalesInvoice AS SalesInvoice, bitLayBy AS LayBy, ',
        'ISNULL((SELECT strCurrency FROM tblAccounts WHERE tblAccounts.intGLNumber = ISNULL(tblTenderTypes.intGLNumber, 0)), '''') AS Currency ',
        'FROM tblTenderTypes ',
        CASE 
            WHEN @POSDrawerLength > 0 
                THEN 'INNER JOIN tblPOSDrTenderTypes ON tblPOSDrTenderTypes.strTenderTypeName = tblTenderTypes.strName WHERE tblPOSDrTenderTypes.bitUsed = 1 AND tblPOSDrTenderTypes.strDrawerName = @POSDrawer AND ' 
            ELSE 'WHERE ' 
        END,
        'bitInActive = 0 ', 
        CASE 
            WHEN @IsCashSale = 1 
                THEN 'AND bitAccount = 0 AND strName <> @Name ' 
        END,
        'ORDER BY intDisplayOrder, strName'
    );

    SET @ParameterDefinition = '@POSDrawer AS NVARCHAR(100), @Name AS NVARCHAR(15)';
    EXECUTE sp_executesql @QueryString, @ParameterDefinition, @POSDrawer, @Name;
END
GO

/****** Object:  StoredProcedure [dbo].[GetTenderTypeForSplitPayments]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetTenderTypeForSplitPayments]
(  
 @POSDrawerLength INT,  
 @POSDrawer NVARCHAR(100),  
 @IsCashSale bit ,
 @HomeCurrency NVARCHAR(10)
)  
AS  
BEGIN  
 DECLARE @QueryString AS NVARCHAR(MAX)  
 DECLARE @ParameterDefinition AS NVARCHAR(MAX)   
  
 DECLARE @FirstName AS NVARCHAR(15)   
 SET @FirstName = 'Split Payment'  
  
 DECLARE @SecondName AS NVARCHAR(20)   
 SET @SecondName = 'Installment Sale'  
  
 SET @QueryString = CONCAT('SELECT strName AS Name, ISNULL(tt.intGLNumber, '''') AS GLNumber, tt.bitInActive AS InActive, bitAccount AS IsAccount, intDisplayOrder AS DisplayOrder, bitSalesInvoice as IsSalesInvoice, bitLayBy as IsLayBy, bitCash as IsCash, bitEFTIntegration as IsEFTIntegration, bitPrintMerchantCopy AS IsPrintMerchantCopy, bitFEFTIntegration AS IsFEFTIntegration, strFEFTMerchantId AS FEFTMerchantId, strServerUrl AS ServerUrl, intFEFTTransaction AS FEFTTransaction, bitFEFTPrintMerchantCopy AS IsFEFTPrintMerchantCopy,bitMGAIntegration AS IsMGAIntegration,strMGAServerUrl AS MGAServerUrl,strMGAUsername AS MGAUsername,strMGAPassword AS MGAPassword, bitCashGuardIntegration AS IsCashGuardIntegration, ISNULL(acc.strCurrency, @HomeCurrency) AS CurrencyCode,
    CAST(
    CASE 
        WHEN ISNULL(acc.strCurrency, @HomeCurrency) <> @HomeCurrency 
        THEN 1 
        ELSE 0 
    END AS BIT
) AS IsForeignTenderType

FROM tblTenderTypes tt
LEFT JOIN tblAccounts acc ON acc.intGLNumber = tt.intGLNumber',   
 CASE    
  WHEN @POSDrawerLength > 0   
   THEN ' INNER JOIN tblPOSDrTenderTypes ON tblPOSDrTenderTypes.strTenderTypeName = tt.strName WHERE tblPOSDrTenderTypes.bitUsed = 1 AND tblPOSDrTenderTypes.strDrawerName =   
   @POSDrawer AND'   
  ELSE ' WHERE'   
  END,  
 ' tt.bitInActive = 0 AND strName <> @FirstName AND strName <> @SecondName',  
 CASE   
  WHEN @IsCashSale = 1		
   THEN ' AND bitAccount = 0'   
  END,  
 ' ORDER BY intDisplayOrder, strName')  
  
 SET @ParameterDefinition = ' @POSDrawer AS NVARCHAR(100), @FirstName AS NVARCHAR(15), @SecondName AS NVARCHAR(20), @HomeCurrency AS NVARCHAR(10)'  
 EXECUTE sp_executesql @QueryString, @ParameterDefinition, @POSDrawer, @FirstName,@SecondName,@HomeCurrency
END
GO
/****** Object:  StoredProcedure [dbo].[GetTerminalServerConfiguration]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetTerminalServerConfiguration] 
AS
BEGIN
 select * from tblTerminalServerConfiguration
END
GO
/****** Object:  StoredProcedure [dbo].[GetTerminalSetupData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[GetTerminalSetupData]	
AS
BEGIN
	SELECT intTerminalId AS TerminalId, strTerminalCode AS TerminalCode,strDescription AS Description ,
	strServerName AS ServerName,strUserName AS UserName,strPassword AS Password
	FROM dbo.tblTerminalSetup 
END
GO
/****** Object:  StoredProcedure [dbo].[GetTexCodesWithDescription]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [CategoryInsertWithTableType] ***********/

/*********** Start [GetTexCodesWithDescription] ***********/

CREATE PROCEDURE [dbo].[GetTexCodesWithDescription]
AS
BEGIN
	SELECT t1.strTaxCode + ' - ' + t1.strDescription AS [Description]
		,t1.strTaxCode AS TaxCode
		,t1.bitDefCustomers AS IsDefCustomer
	FROM tblTaxCodes t1
	LEFT JOIN tblTaxCodeExt t2 ON t1.strTaxCode = t2.strTaxCode
	WHERE (
			t1.intAllowedJournals = 0
			OR t1.intAllowedJournals = 1
			)
		AND t2.decRate = 0
	ORDER BY t1.strTaxCode
END

GO
/****** Object:  StoredProcedure [dbo].[GetTotalBinQtyByLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InvLocationBin_Search] ***********/

/*********** Start [GetTotalBinQtyByLocation] ***********/
CREATE PROCEDURE [dbo].[GetTotalBinQtyByLocation]
(
	-- Add the parameters for the stored procedure here
	@LocName nvarchar(50)
)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT 
		ISNULL(SUM(decAvail),0) AS 'Avail'
		, ISNULL(SUM(decAlloc),0) AS 'Alloc'
		, ISNULL(SUM(decOnHand),0) AS 'OnHand' 
	FROM 
		tblInvExtBin  
	WHERE 
		strLocName = @LocName

END
GO
/****** Object:  StoredProcedure [dbo].[GetTrackingData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetTrackingData]
@TrackID AS bigint
AS
BEGIN
	SELECT dteSystemDate             as SystemDate
	,ISNULL(dteIntFromDate, '')		 as IntFromDate
	,dteIntRunDate					 as IntRunDate
	,strCustName					 as CustName
	,strUserName					 as UserName
	,decIntRate						 as IntRate
	,strTaxCode						 as TaxCode
	,strPartNumber					 as PartNumber
	,bitInvDueDate					 as InvDueDate
	,bitCompoundedInt				 as CompoundedInt
	,bitCustom						 as Custom
	,ISNULL((
			SELECT tblCustomers.strCustDesc
			FROM tblCustomers
			WHERE tblCustomers.strCustName = tblIntBillTracking.strCustName
			), '') AS CustDesc
FROM tblIntBillTracking
WHERE lngIntBillTrackID = @TrackID
END
GO
/****** Object:  StoredProcedure [dbo].[GetTrackingDataDTForGrid]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetTrackingDataDTForGrid]
@TrackID AS bigint
AS
BEGIN
SELECT strDocNumber  AS DocNumber
	,dteIntFromDate	 AS IntFromDate
	,decDocAmount	 AS DocAmount
	,intIntDays		 AS IntDays
	,decIntAmtExcl	 AS IntAmtExcl
	,decIntAmtTax	 AS IntAmtTax
	,decIntAmtIncl	 AS IntAmtIncl
FROM tblIntBillTrackingDT
WHERE lngIntBillTrackID = @TrackID
END
GO
/****** Object:  StoredProcedure [dbo].[GetTrackLocationByDocNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetTrackLocationByDocNumber]    Script Date: 2020-06-08 ******/
CREATE PROCEDURE [dbo].[GetTrackLocationByDocNumber]  
 @DocNumber NVARCHAR(100)  
AS  
BEGIN  
 SET NOCOUNT ON;   
 SELECT TOP 1 strUserName AS UserName  
  ,geoCoord.Lat AS Latitude  
  ,geoCoord.Long AS Longitude  
  ,dteCreatedDateTime AS CreatedDateTime  
  ,strEmail AS Email  
  ,strDocumentId AS DocumentId  
 FROM tblTrackUsersLocation  
 WHERE strDocumentId = @DocNumber  
 ORDER BY dteCreatedDateTime DESC  
END
GO
/****** Object:  StoredProcedure [dbo].[GetTradeDiscountMatrixData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/********* End [GetCRMCustomerDetails] (CRM)**********/

/*********** START [GetTradeDiscountMatrixData]***********/

Create PROCEDURE [dbo].[GetTradeDiscountMatrixData]
(
	@CustName AS NVARCHAR(20),
	@ExpiryDate AS Datetime
)
AS
BEGIN
	SELECT ttdm.strMatrixType AS  MatrixType
	,Cast (ttdmt.dteStartDate AS Datetime) StartDate
	,Cast (ttdmt.dteFinishDate AS Datetime)  FinishDate	
	,tdmt.decValueFROM AS ValueFrom
	,tdmt.decValueTo AS ValueTo
	,tdmt.decDiscPerc AS DescPerc
FROM tblTradeDiscMatrix ttdm
INNER JOIN tblTradeDiscMatrixTypes ttdmt ON ttdmt.strMatrixType = ttdm.strMatrixType
INNER JOIN tblCustomers tc ON tc.strMatrixType = ttdm.strMatrixType
INNER JOIN tblTradeDiscMatrixTypesDT tdmt ON tdmt.uidMatrixID = ttdmt.uidMatrixID
WHERE tc.strCustName = @CustName
	AND tdmt.strPartNumber IS NULL 
	--AND ttdmt.dteFinishDate <= cast(@ExpiryDate as date)
	AND (@ExpiryDate BETWEEN ttdmt.dteStartDate AND ttdmt.dteFinishDate)
END
GO
/****** Object:  StoredProcedure [dbo].[GetTradeDiscounts]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetTradeDiscounts] @MatrixType AS VARCHAR(20)
	,@TransactionDate AS SMALLDATETIME
	,@Exclusions AS INT
AS
BEGIN
	SELECT CAST(intType AS INT) AS [Type]
		,decValueFrom AS ValueFrom
		,decValueTo AS ValueTo
		,decDiscPerc AS DiscPerc
		,ISNULL(strPartNumber, '') AS PartNumber
		,bitApplyDisc AS ApplyDisc
	FROM tblTradeDiscMatrix
	INNER JOIN tblTradeDiscMatrixTypes ON tblTradeDiscMatrix.strMatrixType = tblTradeDiscMatrixTypes.strMatrixType
	INNER JOIN tblTradeDiscMatrixTypesDT ON tblTradeDiscMatrixTypes.uidMatrixID = tblTradeDiscMatrixTypesDT.uidMatrixID
	WHERE tblTradeDiscMatrix.strMatrixType = @MatrixType
		AND tblTradeDiscMatrixTypes.bitInactive = 0
		AND tblTradeDiscMatrixTypesDT.intType <> @Exclusions
		AND (
			@TransactionDate BETWEEN tblTradeDiscMatrixTypes.dteStartDate
				AND tblTradeDiscMatrixTypes.dteFinishDate
			)
END
GO
/****** Object:  StoredProcedure [dbo].[GetTransactionIDList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetTransactionIDList]
(
	@dteStartDate date,
	@dteEndDate date
)
AS
SELECT DISTINCT TransactionID,DDate FROM tblUtilityPervLedgerTransactions WHERE DDate BETWEEN @dteStartDate AND @dteEndDate ORDER BY TransactionID,DDate
GO
/****** Object:  StoredProcedure [dbo].[GetTrendsData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetItemSalesData] ***********/

/*********** Start [GetTrendsData] ***********/
CREATE PROCEDURE [dbo].[GetTrendsData]
(
	@CustomerNumber NVARCHAR(50),
	@FromDate DATETIME,
	@ToDate DATETIME
)
AS
BEGIN
	SELECT 
		DATEPART(YYYY, dteJournalDate) [Year],
	    DATEPART(MM,dteJournalDate) AS [Month],
	       ISNULL(SUM(CASE
	                      WHEN bitIsForeign = 0 THEN decSubTotal
	                      ELSE decSubTotalF
	                  END),0) AS TotalSales
	FROM tblInvoiceDoc
	WHERE (strCustName = @CustomerNumber)
	  AND (CONVERT(date,dteJournalDate) BETWEEN CONVERT(date,@FromDate) AND CONVERT(date,@ToDate))
	  AND (bitHistoryTrans = 0)
	GROUP BY DATEPART(yyyy, dteJournalDate),
	         DATEPART(M,dteJournalDate)
	ORDER BY DATEPART(yyyy, dteJournalDate),
	         DATEPART(M,dteJournalDate)
END
GO
/****** Object:  StoredProcedure [dbo].[GetTrJNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetTrJNumber] 
	@PayID as decimal
AS
BEGIN
	SELECT lngJourID
FROM tblCustPay
WHERE lngCustPayID IN (
		SELECT lngCustPayID
		FROM tblCustTransDT
		WHERE lngCustPayID <> @PayID
			AND lngCustTrID IN (
				SELECT lngCustTrID
				FROM tblCustTransDT
				WHERE lngCustPayID = @PayID
					AND bitReversed = 0
					AND intTransType = 1
				)
			AND bitReversed = 0
		)
	AND bitReversed = 0
	AND bitReversal = 0
END
GO
/****** Object:  StoredProcedure [dbo].[GetUnbalancedInvCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetUnbalancedInvCount]
AS
BEGIN
	SELECT COUNT(tblInv.strPartNumber)
	FROM tblInv
	INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
	GROUP BY tblInv.strPartNumber
		,tblInv.decSumAvail
		,tblInv.decSumAlloc
		,tblInv.decSumManuf
		,tblInv.decSumOnHand
		,tblInv.decSumValue
		,tblInv.decSumOnOrder
	HAVING tblInv.decSumAvail <> SUM(tblInvExt.decAvail)
		OR tblInv.decSumAlloc <> SUM(tblInvExt.decAlloc)
		OR tblInv.decSumManuf <> SUM(tblInvExt.decManuf)
		OR tblInv.decSumOnHand <> SUM(tblInvExt.decOnHand)
		OR tblInv.decSumValue <> SUM(tblInvExt.decValue)
		OR tblInv.decSumOnOrder <> SUM(tblInvExt.decOnOrder)
END
GO
/****** Object:  StoredProcedure [dbo].[GetUnllocatedGenLedAcc]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[GetUnllocatedGenLedAcc]
AS
Begin
SELECT AccNumber, CASE WHEN FinancialCategory = 5 THEN ' (Unallocated Balance Sheet)' ELSE ' (Unallocated Income Statement)' END as Comment FROM tblUtilityPervLedgerMaster 
WHERE FinancialCategory IN (5, 85) ORDER BY AccNumber
End
GO
/****** Object:  StoredProcedure [dbo].[GetUserAssignedDrawerPos]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetUserAssignedDrawerPos] 
	@SQAssigned AS NVARCHAR(40)
	,@SQOfflineTerminalId AS INT = NULL
AS
BEGIN
	IF (@SQOfflineTerminalId IS NULL)
	BEGIN
		SELECT strDrawerName AS DrawerName
			,uidSessionID AS SessionID
			,intStatus AS STATUS
			,dteSessionDate AS SessionDate
			,decOpenVal AS OpenVal
			,intProfileMenuId AS ProfileMenuId
			,IsNull(bitAllowChangeUsers, 0) AS IsAllowChangeUsers
			,intOfflineTerminalId AS OfflineTerminalId
			,intShortcutbarId AS ShortcutbarId
			,strCashTender AS CashTender
		FROM tblPOSDrs
		WHERE intStatus < 2
			AND strAssignedUser = @SQAssigned
	END
	ELSE
	BEGIN
		SELECT strDrawerName AS DrawerName
			,uidSessionID AS SessionID
			,intStatus AS STATUS
			,dteSessionDate AS SessionDate
			,decOpenVal AS OpenVal
			,intProfileMenuId AS ProfileMenuId
			,IsNull(bitAllowChangeUsers, 0) AS IsAllowChangeUsers
			,intOfflineTerminalId AS OfflineTerminalId
			,intShortcutbarId AS ShortcutbarId
			,strCashTender AS CashTender
		FROM tblPOSDrs
		WHERE intStatus < 2
			AND strAssignedUser = @SQAssigned
			AND intOfflineTerminalId = @SQOfflineTerminalId
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GetUserCategorySales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetMinCustomerDateSales] ***********/

/*********** Start [GetUserCategorySales] ***********/
CREATE PROCEDURE [dbo].[GetUserCategorySales] 
(
	@CustomerName AS VARCHAR(50)
)
AS
BEGIN
	SELECT bitIsHP FROM tblCustomerCat " & " WHERE strCustCategory = (SELECT strCustCategory FROM tblCustomers WHERE strCustName = @CustomerName)
END
GO
/****** Object:  StoredProcedure [dbo].[GetUserEmailID]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****************** End [GetCRMOverDueTaskListingRpt] [CRM]**********************/

/********* Start [GetUserEmailID] (CRM)**********/

CREATE PROCEDURE [dbo].[GetUserEmailID] @UserName NVARCHAR(Max)
AS
BEGIN
	SELECT strEmail AS EmailID
	FROM tblUsers
	WHERE strUserName = @UserName
END
GO
/****** Object:  StoredProcedure [dbo].[GetUserFromUser]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[GetUserFromUser]    Script Date: 10-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[GetUserFromUser] 
   @SQUserName nvarchar(40)
AS
BEGIN
   SELECT blnPOSOrders as IsPOSOrders, blnPOSQuotes as IsPOSQuotes, blnPOSConvertOrders as IsPOSConvertOrders
 , blnPOSConvertQuotes as IsPOSConvertQuotes,blnPOSLayby as IsPOSLayby, blnPOSConvertLayby as IsPOSConvertLayby, blnInvCanChangeSellingPrice as IsInvCanChangeSellingPrice, blnPOSPayouts as IsPayoutsEnabled
  FROM tblUsers WHERE strUserName = @SQUserName
END
GO
/****** Object:  StoredProcedure [dbo].[GetUserList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetUserList] (@CatName NVARCHAR(40))
AS
BEGIN
SELECT strUserName As UserName FROM tblUsers WHERE strUserName NOT IN (SELECT strUserName FROM tblCustomerCatSec WHERE strCustCategory = @CatName)
END
GO
/****** Object:  StoredProcedure [dbo].[GetUserListActivityGroup]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [DeleteActivityGroupUsers] (CRM)**********/


/********* Start [GetUserListActivityGroup] (CRM)**********/

CREATE PROCEDURE [dbo].[GetUserListActivityGroup] 
(@ActivityGroupName NVARCHAR(40))
AS
BEGIN
SELECT tblUsers.strUserName As UserName 
FROM tblUsers 
WHERE tblUsers.strUserName NOT IN (SELECT tblCRMAcitvityGroupUsers.UserName FROM tblCRMAcitvityGroupUsers WHERE tblCRMAcitvityGroupUsers.ActivityGroupName = @ActivityGroupName)
END
GO
/****** Object:  StoredProcedure [dbo].[GetUserListActivityGroupAccessList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetUserListActivityGroup] (CRM)**********/


/********* Start [GetUserListActivityGroupAccessList] (CRM)**********/

CREATE PROCEDURE [dbo].[GetUserListActivityGroupAccessList] 
(@ActivityGroupName NVARCHAR(40))
AS
BEGIN
SELECT tblCRMAcitvityGroupUsers.UserName FROM tblCRMAcitvityGroupUsers WHERE tblCRMAcitvityGroupUsers.ActivityGroupName = @ActivityGroupName
END
GO
/****** Object:  StoredProcedure [dbo].[GetUserListCalendar]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/********* Start [GetUserListCalendar] (CRM)**********/

CREATE Procedure [dbo].[GetUserListCalendar]
As
Begin
	Select strUserName as Id,strName as UserName from tblUsers (NOLOCK)
end
GO
/****** Object:  StoredProcedure [dbo].[GetUserListForInventory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [dbo].[GetUserListForInventory] ***********/
CREATE PROCEDURE [dbo].[GetUserListForInventory] ( @CatName NVARCHAR(40) )
AS
    BEGIN
        SELECT  strUserName AS UserName
        FROM    tblUsers
        WHERE   strUserName NOT IN ( SELECT strUserName
                                     FROM   tblInvCatSec
                                     WHERE  strCategory = @CatName )
    END

GO
/****** Object:  StoredProcedure [dbo].[GetUserLocations]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetUserLocations]    
		 @StartDate DateTime,    
		 @EndDate DateTime,    
		 @UserName CommonFieldTableType readonly ,  
		 @HistoricalMap bit = 0  
	AS    
	BEGIN    
		SET NOCOUNT ON;    
    
		if(@HistoricalMap = 1)  
			SELECT strUserName UserName,geoCoord.Lat Latitude,geoCoord.Long Longitude,dteCreatedDateTime CreatedDateTime 
			FROM tblTrackUsersLocation      
			WHERE CAST(dteCreatedDateTime as date) =  CAST(@StartDate as date)    
				AND strUserName in (SELECT l.Field1 FROM @UserName l)  
				AND strDocumentId is not null  
		else  
			SELECT strUserName UserName, geoCoord.Lat Latitude, geoCoord.Long Longitude, dteLocationDateTime CreatedDateTime 
			FROM tblUsers      
			WHERE CAST(dteLocationDateTime as date) =  CAST(@StartDate as date)    
				AND strUserName in (SELECT l.Field1 FROM @UserName l)
		 --SELECT strUserName UserName,geoCoord.Lat Latitude,geoCoord.Long Longitude,dteCreatedDateTime CreatedDateTime 
		 --FROM tblTrackUsersLocation      
		 --WHERE CAST(dteCreatedDateTime as date) =  CAST(@StartDate as date)    
		 --AND strUserName in (SELECT l.Field1 FROM @UserName l)  AND strDocumentId is null  
	END 
GO
/****** Object:  StoredProcedure [dbo].[GetUserLocationTrackingPreference]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetUserLocationTrackingPreference]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[GetUserLocationTrackingPreference]
	@userName nvarchar(40)
AS
BEGIN
	SELECT strUserName AS UserName,
	strDay AS [Day],
	tmeStartDate AS StartTime,
	tmeEndDate AS EndTime,
	bitTrackLoc AS TrackLoc FROM tblLocationTrackingPreference Where strUserName = @userName
END
GO
/****** Object:  StoredProcedure [dbo].[GetUtilityCustomerLoc]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetUtilityCustomerLoc]
AS
SELECT
strCustName As 'CustName',
strLocName As 'LocName',
strStreet1 As 'Street1',
strStreet2 As 'Street2',
strCity As 'City',
strProvince As 'Province',
strPostal As 'Postal',
strSalesmanCode As 'SalesmanCode'
 FROM tblUtilityCustomerLoc WHERE strCustName IN (SELECT strCustName FROM tblUtilityCustomers) ORDER BY strCustName
GO
/****** Object:  StoredProcedure [dbo].[GetUtilityCustomerMasterList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetUtilityCustomerMasterList]
AS
SELECT CustomerCode, CustomerDesc, OpenItem, ROUND((BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + 
BalanceLast07 + BalanceLast08 + BalanceLast09 + BalanceLast10 + BalanceLast11 + BalanceLast12 + BalanceThis01 + BalanceThis02 + BalanceThis03 + 
BalanceThis04 + BalanceThis05 + BalanceThis06 + BalanceThis07 + BalanceThis08 + BalanceThis09 + BalanceThis10 + BalanceThis11 + BalanceThis12),2) AS Balance, 
ROUND((CurrBalanceLast01 + CurrBalanceLast02 + CurrBalanceLast03 + CurrBalanceLast04 + CurrBalanceLast05 + CurrBalanceLast06 + CurrBalanceLast07 + CurrBalanceLast08 + 
CurrBalanceLast09 + CurrBalanceLast10 + CurrBalanceLast11 + CurrBalanceLast12 + CurrBalanceThis01 + CurrBalanceThis02 + CurrBalanceThis03 + CurrBalanceThis04 + 
CurrBalanceThis05 + CurrBalanceThis06 + CurrBalanceThis07 + CurrBalanceThis08 + CurrBalanceThis09 + CurrBalanceThis10 + CurrBalanceThis11 + CurrBalanceThis12),2) AS CBalance 
FROM tblUtilityPervCustomerMaster WHERE OpenItem <> 0 AND (ROUND((BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + 
BalanceLast07 + BalanceLast08 + BalanceLast09 + BalanceLast10 + BalanceLast11 + BalanceLast12 + BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + 
BalanceThis05 + BalanceThis06 + BalanceThis07 + BalanceThis08 + BalanceThis09 + BalanceThis10 + BalanceThis11 + BalanceThis12),2) <> 0 OR 
ROUND((CurrBalanceLast01 + CurrBalanceLast02 + CurrBalanceLast03 + CurrBalanceLast04 + CurrBalanceLast05 + CurrBalanceLast06 + CurrBalanceLast07 + 
CurrBalanceLast08 + CurrBalanceLast09 + CurrBalanceLast10 + CurrBalanceLast11 + CurrBalanceLast12 + CurrBalanceThis01 + CurrBalanceThis02 + CurrBalanceThis03 + 
CurrBalanceThis04 + CurrBalanceThis05 + CurrBalanceThis06 + CurrBalanceThis07 + CurrBalanceThis08 + CurrBalanceThis09 + CurrBalanceThis10 + CurrBalanceThis11 + 
CurrBalanceThis12),2) <> 0) ORDER BY CustomerCode
GO
/****** Object:  StoredProcedure [dbo].[GetUtilityInventoryCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetUtilityInventoryCount]
AS
SELECT SUM(RowCnt) FROM (SELECT COUNT(strPartNumber) AS RowCnt FROM tblUtilityInv 
UNION ALL SELECT COUNT(strCategory) AS RowCnt FROM tblUtilityInvCat UNION ALL SELECT COUNT(strLocName) AS RowCnt FROM tblUtilityInvLoc) Z
GO
/****** Object:  StoredProcedure [dbo].[GetUtilityPervHistoryHeaderList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[GetUtilityPervHistoryHeaderList]
AS
BEGIN
SELECT HH.DocumentNumber, HH.DocumentDate, HH.CustomerCode, HH.OrderNumber, HH.Total, HH.TotalTax, HH.Message01, HH.Message02, 
HH.Message03, HH.SalesManCode, cast(HH.CurrencyCode as int) as CurrencyCode , HH.ExchangeRate, HH.FCurrTotal, HH.FCurrTotalTax, cast(HH.Terms as int) as Terms, HH.DiscountPercent, 
cast(HH.DocumentType as int) as DocumentType
FROM tblUtilityPervHistoryHeader HH LEFT OUTER JOIN tblUtilityPervCurrencyFile CF ON HH.CurrencyCode = CF.CurrCode 
WHERE HH.DocumentType IN (3, 4) ORDER BY HH.DocumentNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetUtilityPervHistoryHeaderListVendor]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[GetUtilityPervHistoryHeaderListVendor]
AS
Begin
SELECT HH.DocumentNumber, HH.DocumentDate, HH.CustomerCode, HH.OrderNumber, HH.Total, HH.TotalTax, HH.Message01, HH.Message02, 
HH.Message03, HH.SalesManCode, Cast(HH.CurrencyCode as int) as CurrencyCode, HH.ExchangeRate, HH.FCurrTotal, HH.FCurrTotalTax, Cast(HH.Terms as int) as Terms, HH.DiscountPercent, 
Cast(HH.DocumentType as int) as  DocumentType
FROM tblUtilityPervHistoryHeader HH LEFT OUTER JOIN tblUtilityPervCurrencyFile CF ON HH.CurrencyCode = CF.CurrCode 
WHERE HH.DocumentType IN (8, 9) ORDER BY HH.DocumentNumber
End
GO
/****** Object:  StoredProcedure [dbo].[GetUtilityPervHistoryLines]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[GetUtilityPervHistoryLines]
AS
BEGIN
SELECT cast(TaxType as nvarchar(Max)) as TaxType FROM tblUtilityPervHistoryLines WHERE DocumentType IN (3, 4, 8, 9)
END
GO
/****** Object:  StoredProcedure [dbo].[GetUtilityPervHistoryLinesList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetUtilityPervHistoryLinesList]
(
	@strDocNumber char(8),
	@intDocType smallint
)
AS
Begin
SELECT CAst(DocumentType as int) as DocumentType, LinkNum, ItemCode, MultiStore, Description, CostPrice, Qty, UnitUsed,Cast((case when Physical=1 then 1 else 0 end )as int)as Physical ,cast( DiscountPercentage as int)as DiscountPercentage, UnitPrice, TaxAmt, InclusivePrice,
DiscountAmount, CAst(TaxType as int) as TaxType, FCurrUnitPrice, FCurrTaxAmount, FCurrInclPrice, FCDiscountAmount,CostCode, 
Cast((case when SearchType=1 then 1 else 0 end )as int)as SearchType, DDate FROM tblUtilityPervHistoryLines 
WHERE LTRIM(RTRIM(DocumentNumber)) = @strDocNumber AND DocumentType = @intDocType AND SearchType IN (4,6,7) ORDER BY LinkNum
End
GO
/****** Object:  StoredProcedure [dbo].[GetUtilityPervHistoryLinesSOList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetUtilityPervHistoryLinesSOList]
(
	@strDocNumber char(8),
	@intDocType smallint
)
AS
SELECT DocumentType, LinkNum, ItemCode, MultiStore, Description, Qty, UnitUsed, Physical, UnitPrice, TaxAmt, InclusivePrice, TaxType, FCurrUnitPrice, FCurrTaxAmount, 
FCurrInclPrice, SearchType, DDate, DiscountPercentage, DiscountAmount, FCDiscountAmount FROM tblUtilityPervHistoryLines 
WHERE LTRIM(RTRIM(DocumentNumber)) = @strDocNumber AND DocumentType = @intDocType ORDER BY LinkNum
GO
/****** Object:  StoredProcedure [dbo].[GetUtilityPervInventoryData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetUtilityPervInventoryData]
(	
@IsEvo BIT
)
AS
BEGIN
IF (@IsEvo = 1)
SELECT DISTINCT Category, cast(Physical as int) as Physical FROM tblUtilityPervInventory WHERE ISNULL(Category, '') <> '' ORDER BY Category, Physical
ELSE
SELECT DISTINCT Category, cast(Physical as int) as Physical FROM tblUtilityPervInventory WHERE Category <> '000' ORDER BY Category, Physical
END
GO
/****** Object:  StoredProcedure [dbo].[GetUtilityTerms]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[GetUtilityTerms]
AS
BEGIN
SELECT DISTINCT cast(LTrim(RTrim(z.PaymentTerms))as nvarchar(Max)) 'PPTerm', case when Z.PaymentTerms = '30' then '30 Days From Invoice' else '' end 'Term' FROM 

(
SELECT DISTINCT PaymentTerms FROM tblUtilityPervCustomerMaster 

UNION ALL 

SELECT DISTINCT PaymentTerms FROM tblUtilityPervSupplierMaster
) Z 

UNION ALL

SELECT DISTINCT cast( LTrim(RTrim(Terms)) as nvarchar(Max)) 'PPTerm', case when Terms = '30' then '30 Days From Invoice' else '' end 'Term' FROM tblUtilityPervHistoryHeader WHERE DocumentType IN (3, 4, 8, 9) 

AND LTrim(RTrim(Terms)) NOT IN (SELECT DISTINCT LTrim(RTrim(Z.PaymentTerms)) 

FROM (SELECT DISTINCT PaymentTerms FROM tblUtilityPervCustomerMaster UNION ALL SELECT DISTINCT PaymentTerms FROM tblUtilityPervSupplierMaster) Z)
END
GO
/****** Object:  StoredProcedure [dbo].[GetUtilityVendorMasterList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetUtilityVendorMasterList]
AS
SELECT SupplCode, SupplDesc, OpenItem, ROUND((BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + BalanceLast07 + 
BalanceLast08 + BalanceLast09 + BalanceLast10 + BalanceLast11 + BalanceLast12 + BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + BalanceThis05 + 
BalanceThis06 + BalanceThis07 + BalanceThis08 + BalanceThis09 + BalanceThis10 + BalanceThis11 + BalanceThis12),2) AS Balance, 
ROUND((CurrBalanceLast01 + CurrBalanceLast02 + CurrBalanceLast03 + CurrBalanceLast04 + CurrBalanceLast05 + CurrBalanceLast06 + CurrBalanceLast07 + CurrBalanceLast08 + 
CurrBalanceLast09 + CurrBalanceLast10 + CurrBalanceLast11 + CurrBalanceLast12 + CurrBalanceThis01 + CurrBalanceThis02 + CurrBalanceThis03 + CurrBalanceThis04 + 
CurrBalanceThis05 + CurrBalanceThis06 + CurrBalanceThis07 + CurrBalanceThis08 + CurrBalanceThis09 + CurrBalanceThis10 + CurrBalanceThis11 + CurrBalanceThis12),2) AS CBalance 
FROM tblUtilityPervSupplierMaster WHERE OpenItem <> 0 AND (ROUND((BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + 
BalanceLast07 + BalanceLast08 + BalanceLast09 + BalanceLast10 + BalanceLast11 + BalanceLast12 + BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + 
BalanceThis05 + BalanceThis06 + BalanceThis07 + BalanceThis08 + BalanceThis09 + BalanceThis10 + BalanceThis11 + BalanceThis12),2) <> 0 OR 
ROUND((CurrBalanceLast01 + CurrBalanceLast02 + CurrBalanceLast03 + CurrBalanceLast04 + CurrBalanceLast05 + CurrBalanceLast06 + CurrBalanceLast07 + CurrBalanceLast08 + 
CurrBalanceLast09 + CurrBalanceLast10 + CurrBalanceLast11 + CurrBalanceLast12 + CurrBalanceThis01 + CurrBalanceThis02 + CurrBalanceThis03 + CurrBalanceThis04 + 
CurrBalanceThis05 + CurrBalanceThis06 + CurrBalanceThis07 + CurrBalanceThis08 + CurrBalanceThis09 + CurrBalanceThis10 + CurrBalanceThis11 + CurrBalanceThis12),2) <> 0) 
ORDER BY SupplCode
GO
/****** Object:  StoredProcedure [dbo].[GetVATAccountsCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------------
CREATE PROCEDURE [dbo].[GetVATAccountsCY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.bitIsLinkedAccount = 0  
    AND tblAccounts.intAccType = 2  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND tblAccounts.intAccClass = 15  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.bitIsLinkedAccount = 0  
    AND tblAccounts.intAccType = 2  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND tblAccounts.intAccClass = 15  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.bitIsLinkedAccount = 0  
    AND tblAccounts.intAccType = 2  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND tblAccounts.intAccClass = 15  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE tblAccounts.bitIsLinkedAccount = 0  
    AND tblAccounts.intAccType = 2  
    AND tblAccounts.bitInactive = 0  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND tblAccounts.intAccClass = 15  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
  
 RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetVATAccountsLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetVATAccountsLY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.bitIsLinkedAccount = 0  
    AND tblAccountsLY.intAccType = 2  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND tblAccountsLY.intAccClass = 15  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.bitIsLinkedAccount = 0  
    AND tblAccountsLY.intAccType = 2  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND tblAccountsLY.intAccClass = 15  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.bitIsLinkedAccount = 0  
    AND tblAccountsLY.intAccType = 2  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND tblAccountsLY.intAccClass = 15  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE tblAccountsLY.bitIsLinkedAccount = 0  
    AND tblAccountsLY.intAccType = 2  
    AND tblAccountsLY.bitInactive = 0  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND tblAccountsLY.intAccClass = 15  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
  
 RETURN  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetVatDescription]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetVatDescription]
	@SQCustName as nvarchar
AS
BEGIN
	SELECT strDescription
FROM tbltaxcodes WHERE strTaxCode IN (
		SELECT strInstallSaleTaxCode
		FROM tblCustomerCat
		WHERE strCustCategory = (
				SELECT DISTINCT t1.strCustCategory
				FROM tblCustomers t1
				LEFT JOIN tblCustTrans t2 ON t1.strCustName = t2.strCustName
				WHERE t1.strCustName = @SQCustName
				)
		)
END
GO
/****** Object:  StoredProcedure [dbo].[GetVendor]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetVendor]
    (
      @strVendName NVARCHAR(50)
    )
AS
BEGIN
    SET NOCOUNT ON;
    SELECT  [strVendName] AS VendName ,
            [strStreet1] AS Street1 ,
            [strStreet2] AS Stree2 ,
            [strCity] AS City ,
            [strProvince] AS Province ,
            [strPostal] AS Postal ,
            [strPhone] AS Phone ,
            [strCellPhone] AS CellPhone ,
            [strFax] AS Fax ,
            [strEmail] AS Email ,
            [strVAT] AS VAT ,
            [strCK] AS CK ,
            [decBalDue] AS BalDue ,
            [decYTDPurch] AS YTDPurch ,
            [decOpenOrders] AS OpenOrders ,
            [intDelMethod] AS DelMethod ,
            [bitInventoryVendor] AS InventoryVendor ,
            [bitExpenseVendor] AS ExpenseVendor ,
            [intExpAcct] AS ExpAcct ,
            [bitInactive] AS Inactive ,
            [dteLastUpdated] AS LastUpdated ,
            [strContact] AS Contact ,
            [strField1] AS Field1 ,
            [strField2] AS Field2 ,
            [strField3] AS Field3 ,
            [strField4] AS Field4 ,
            [strField5] AS Field5 ,
            [strField6] AS Field6 ,
            [strTaxCode] AS TaxCode ,
            [dteSince] AS dteSince ,
            [strNotes] AS Notes ,
            [uID] AS ID ,
            [strVendDesc] AS VendDesc ,
            [strCountry] AS Country ,
            [strTerm] AS Term ,
            [intDept] AS Dept ,
            [strCurrency] AS Currency ,
            [decBalDueF] AS BalDueF ,
            [decYTDPurchF] AS YTDPurchF ,
            [decOpenOrdersF] AS OpenOrdersF ,
            [strField7] AS Field7 ,
            [strField8] AS Field8 ,
            [strField9] AS Field9 ,
            [strField10] AS Field10 ,
            [strField11] AS Field11 ,
            [strField12] AS Field12 ,
            [strVendCategory] AS VendCategory ,
            [strCountryCode] AS CountryCode ,
            [strTenderType] AS TenderType ,
            [decTradeDiscPerc] AS TradeDiscPerc ,
            [bitWithholdTax] AS WithholdTax ,
            [strWithholdTaxCode] AS WithholdTaxCode
    FROM    [tblVendors]
    WHERE   [strVendName] = @strVendName;
	END
GO
/****** Object:  StoredProcedure [dbo].[GetVendorAdvanceSearchData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetVendorAdvanceSearchData]
    (
      @FieldName NVARCHAR(MAX) = NULL ,
      @SearchText NVARCHAR(MAX) = NULL ,
	  @PageIndex int = 1 ,
	 @PageSize int = 0
    )
AS
    BEGIN
        SET NOCOUNT ON;
		DECLARE @Sql nvarchar(MAX)
		DECLARE @Where nvarchar(MAX)
		DECLARE @Query nvarchar(MAX)
		DECLARE @TotalRows INT
		DECLARE @TotalPages INT
		DECLARE @StartRowIndex INT
		,@EndRowIndex INT;
		DECLARE @EmailFieldName Varchar(5)
				
		SET @TotalRows = 0
		SET @TotalPages = 0
		IF ISNULL(@FieldName,'') = ''
		BEGIN
			SET @FieldName = 'NoNameContact'
			SET @EmailFieldName = 'Email'
		END

        SET @Query = 'SELECT ROW_NUMBER() OVER(ORDER BY strVendName) AS RowNumber ,
			    strVendName AS VendorName ,
                strVendDesc AS VendorDescription ,
                strContact AS Contact ,
                strStreet1 AS Street1 ,
                strStreet2 AS Street2 ,
                strCity AS City ,
                strProvince AS Province ,
                strPostal AS Postal ,
                strPhone AS Phone ,
                strCellPhone AS CellPhone ,
                strFax AS Fax ,
				strEmail AS VendorEmail ,
				strCurrency AS Currency ,
				strCountry AS Country ,
				strTerm AS Term ,
				strTenderType AS TenderType ,
                strField1 AS Field1 ,
                strField2 AS Field2 ,
                strField3 AS Field3 ,
                strField4 AS Field4 ,
                strField5 AS Field5 ,
                strField6 AS Field6 ,
                strField7 AS Field7 ,
                strField8 AS Field8 ,
                strField9 AS Field9 ,
                strField10 AS Field10 ,
                strField11 AS Field11 ,
                strField12 AS Field12
        FROM    tblVendors';
		SET @Where = 'bitInactive = 0 
                AND (
			(
				@SearchText IS NULL OR @SearchText = '''' OR (tblVendors.strVendName LIKE ''%''+@SearchText+''%''	AND @FieldName = ''NoNameContact'')
				OR (tblVendors.strContact LIKE ''%''+@SearchText+''%''   AND @FieldName = ''NoNameContact'')
				OR (tblVendors.strVendDesc LIKE ''%''+@SearchText+''%'' AND @FieldName = ''NoNameContact''
					)
				)
				OR (@SearchText IS NULL OR @SearchText = '''' OR (tblVendors.strEmail LIKE ''%''+@SearchText+''%''   AND @FieldName = @EmailFieldName))
			OR (
				(
					tblVendors.strStreet1 LIKE ''%''+@SearchText+''%''
					AND @FieldName = ''AllAddress''
					)
				OR (
					tblVendors.strStreet2 LIKE ''%''+@SearchText+''%''
					AND @FieldName = ''AllAddress''
					)
				OR (
					tblVendors.strCity LIKE ''%''+@SearchText+''%''
					AND @FieldName = ''AllAddress''
					)
				OR (
					tblVendors.strProvince LIKE ''%''+@SearchText+''%''
					AND @FieldName = ''AllAddress''
					)
				OR (
					tblVendors.strPostal LIKE ''%''+@SearchText+''%''
					AND @FieldName = ''AllAddress''
					)
				)
			OR (
				(
					tblVendors.strPhone LIKE ''%''+@SearchText+''%''
					AND @FieldName = ''AllPhone''
					)
				OR (
					tblVendors.strCellPhone LIKE ''%''+@SearchText+''%''
					AND @FieldName = ''AllPhone''
					)
				OR (
					tblVendors.strFax LIKE ''%''+@SearchText+''%''
					AND @FieldName = ''AllPhone''
					)
				)
			OR (
				tblVendors.strField1 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField1''
				)
			OR (
				tblVendors.strField2 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField2''
				)
			OR (
				tblVendors.strField3 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField3''
				)
			OR (
				tblVendors.strField4 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField4''
				)
			OR (
				tblVendors.strField5 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField5''
				)
			OR (
				tblVendors.strField6 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField6''
				)
			OR (
				tblVendors.strField7 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField7''
				)
			OR (
				tblVendors.strField8 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField8''
				)
			OR (
				tblVendors.strField9 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField9''
				)
			OR (
				tblVendors.strField10 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField10''
				)
			OR (
				tblVendors.strField11 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField11''
				)
			OR (
				tblVendors.strField12 LIKE ''%''+@SearchText+''%''
				AND @FieldName = ''strField12''
				)
			)';

				SET @Sql = ';WITH CTE AS('+@Query+' WHERE '+@Where+')'
	IF(@PageSize = 0)
	BEGIN
		SET @Sql = @Sql + ' SELECT * FROM CTE;'
	END
	ELSE
	BEGIN
		SELECT @StartRowIndex = ((@PageIndex - 1) * @PageSize) + 1;
		SELECT @EndRowIndex = @StartRowIndex + @PageSize - 1;

		
		DECLARE @TotalRecords NVARCHAR(MAX) = 'SELECT @temp = COUNT(1) FROM tblVendors WHERE ' + @Where + ''
	
		EXEC sp_executesql @TotalRecords, 
							N'@SearchText NVARCHAR(MAX), @FieldName NVARCHAR(MAX),@EmailFieldName NVARCHAR(5), @temp int out'
							,@SearchText=@SearchText,@FieldName=@FieldName,@EmailFieldName=@EmailFieldName,@temp=@TotalRows OUTPUT
	
		SELECT @TotalPages = CEILING(@TotalRows / @PageSize)

		IF @TotalRows > @TotalPages * @PageSize
			SET @TotalPages = @TotalPages + 1

		SET @Sql = @Sql + ' SELECT *,'+ CAST(@TotalRows AS VARCHAR) + ' AS TotalRows,'+CAST(@TotalPages AS VARCHAR)+' AS TotalPages FROM CTE WHERE RowNumber BETWEEN ' + cast(@StartRowIndex AS VARCHAR) + ' AND ' + cast(@EndRowIndex AS VARCHAR) + ' ;'
	END
	
	  exec sp_executesql @Sql, 
                        N'@SearchText NVARCHAR(MAX), @FieldName NVARCHAR(MAX),@EmailFieldName NVARCHAR(5)', 
                        @SearchText=@SearchText,@FieldName=@FieldName,@EmailFieldName=@EmailFieldName
	
END
GO
/****** Object:  StoredProcedure [dbo].[GetVendorContacts]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [CRMLoadActivityStatus] (CRM)**********/

/********* Start [GetVendorContacts] (CRM)**********/

CREATE PROCEDURE [dbo].[GetVendorContacts] (@VendorNumber AS NVARCHAR(50))
AS
BEGIN
SELECT c.lngID AS ID
,c.strName AS Name
,c.strVendName AS VendorName
,j.strJobTitle AS JobTitleName
,j.lngID AS JobTitle
,c.strEmail AS Email
,c.strTel AS Telephone
,c.strFax AS Fax
,c.strCell AS CellPhone
,'Address' = CASE 
WHEN c.strStreet1 IS NULL
OR c.strStreet1 = ''
THEN ''
ELSE c.strStreet1
END + CASE 
WHEN c.strStreet2 IS NULL
OR c.strStreet2 = ''
THEN ''
ELSE CASE 
WHEN c.strStreet1 <> ''
THEN ', '
ELSE ''
END + c.strStreet2
END + CASE 
WHEN c.strCity IS NULL
OR c.strCity = ''
THEN ''
ELSE CASE 
WHEN COALESCE(c.strStreet1, c.strStreet2) IS NOT NULL
THEN ', '
ELSE ''
END + c.strCity
END + CASE 
WHEN c.strProvince IS NULL
OR c.strProvince = ''
THEN ''
ELSE CASE 
WHEN COALESCE(c.strStreet1, c.strStreet2, c.strCity) IS NOT NULL
THEN ', '
ELSE ''
END + c.strProvince
END + CASE 
WHEN c.strPostal IS NULL
OR c.strPostal = ''
THEN ''
ELSE CASE 
WHEN COALESCE(c.strStreet1, c.strStreet2, c.strCity, c.strProvince) IS NOT NULL
THEN ', '
ELSE ''
END + c.strPostal
END
,c.strFacebook AS Facebook
,c.strLinkedIn AS LinkedIn
,c.strSkype AS Skype
,c.strNotes AS Notes
,c.imgPicture AS Picture
,c.strStreet1 AS Street1
,c.strStreet2 AS Street2
,c.strCity AS City
,c.strPostal AS Postal
,c.strProvince AS Province
FROM tblVendorContacts AS c
INNER JOIN tblJobTitles AS j ON j.lngID = c.intJobTitle
WHERE c.strVendName = @VendorNumber
END
GO

/****** Object:  StoredProcedure [dbo].[GetVendorCurrency]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
---------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendorCurrency] 
( 
	@VendName VARCHAR(50) 
)
AS
    BEGIN
        SELECT strCurrency AS 'CurrencyCode', strCurrName AS 'CurrencyName' FROM tblCurrency WHERE strCurrency = (SELECT strCurrency FROM tblVendors WHERE strVendName =  @VendName)
    END
GO
/****** Object:  StoredProcedure [dbo].[GetVendorCurrencyCode]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetVendorCurrencyCode]
@SQVendName varchar(50)
AS
BEGIN
	SELECT strCurrency as Currency, bitWithholdTax as WithholdTax, strWithholdTaxCode as WithholdTaxCode FROM tblVendors WHERE strVendName = @SQVendName
END
GO
/****** Object:  StoredProcedure [dbo].[GetVendorCurrencyRate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendorCurrencyRate] 
( 
	@Currency VARCHAR(3),
	@TransDate DATETIME 
)
AS
    BEGIN
        SELECT decRate FROM tblCurrencyExc WHERE strCurrency = @Currency AND dteDate = (SELECT MAX(dteDate) FROM tblCurrencyExc WHERE strCurrency = @Currency AND dteDate <= @TransDate)
    END
GO
/****** Object:  StoredProcedure [dbo].[GetVendorLocalPriceFHQ]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetCustomersImportItems] (Customer) **********/

/********* Start [GetVendorLocalPriceFHQ] (FHQ) **********/

CREATE PROCEDURE [dbo].[GetVendorLocalPriceFHQ] (@PartNumber NVARCHAR(100) = '')
AS
BEGIN
	SELECT ISNULL(decLocalPrice * ((decLandedCostFactor + 100) / 100), 0)
	FROM tblInvVend
	WHERE strPartNumber = @PartNumber
		AND bitPreferred = 1
END
GO
/****** Object:  StoredProcedure [dbo].[GetVendors]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetVendors]  
(  
  @IsActive         BIT = NULL,  
  @IsInvoice        BIT = NULL,  
  @HomeCurrencyCode VARCHAR(20) = NULL,  
  @SQCurrency       VARCHAR(20)= NULL,  
  @Option           INT = 1,-- For 1 = ALL, 2 = Orders, 3 = Balances  
  @SQUserName       VARCHAR(50) = NULL,  
  @IsForeignCurrencyRevaluation  BIT = NULL,  
  @dteRevaluationDate DATETIME = NULL,  
  @lstGridAccount NVARCHAR(MAX) = NULL  
)  
AS  
  BEGIN  
 CREATE TABLE #Temp  
(  
 strVendName NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS,  
 strVendDesc NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,  
 strCity NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS,  
 strPhone NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS,  
 bitInventoryVendor bit,  
 strField1 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,  
    strField2 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,  
    strField3 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,  
    strField4 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,  
    strField5 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,  
    strField6 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,  
    strCurrency NVARCHAR(6) COLLATE SQL_Latin1_General_CP1_CI_AS,  
    strCurrSymbol NVARCHAR(10) COLLATE SQL_Latin1_General_CP1_CI_AS,  
 decBalDue decimal,  
 decBalDueF decimal,
 bitInactive bit,  
 decBalDueValid VARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS  
  )  
  
  CREATE TABLE #Temp2  
  (  
  strAccountNumber NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS,  
  LocalAmount NVARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS,  
 ForeignAmount NVARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS,  
  )  
  
     
  
IF @IsForeignCurrencyRevaluation = 1  
BEGIN  
   INSERT INTO #Temp  
      SELECT strVendName,strVendDesc,strCity,strPhone,bitInventoryVendor,strField1,strField2,strField3,strField4,strField5,strField6,tblVendors.strCurrency,tblCurrency.strCurrSymbol,  
       decBalDue = 0.00,  
      decBalDueF=0.00,bitInactive, decBalDueValid=0.00  
      FROM tblVendors  
      INNER JOIN tblCurrency ON tblVendors.strCurrency = tblCurrency.strCurrency  
      WHERE 
	  (@IsActive IS NULL OR @IsActive = 1 OR (@IsActive = 0 AND bitInactive = 0)) -- Checked for Active and In Active customers
	  
	  --(@IsActive <> 1 or (@IsActive = 1 and bitInactive = @IsActive))  
      AND (@IsInvoice IS NULL OR @IsInvoice = 0 OR (@IsInvoice = 1 AND bitInvWorkflowNew = 1)) -- Checked for invoice  
      AND (@Option IS NULL OR @Option = 1 OR (@Option = 2 AND decOpenOrders <> 0) OR (@Option = 3 AND decBalDue <> 0)) -- For 1 = ALL, 2 = Orders, 3 = Balances  
      AND (@SQCurrency IS NULL OR (tblVendors.strCurrency = @SQCurrency)) -- Checked for selected currency  
      AND (@SQUserName IS NULL OR (strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat  
                                   LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory  
           WHERE  ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory)  
                                   FROM   tblVendorCatSec  
                                   WHERE  tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0  
                                   OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM   tblVendorCatSec   
           WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0  
                                   AND tblVendorCatSec.strUserName = @SQUserName))))  
      ORDER  BY strVendName  
  
  INSERT INTO #Temp2 (strAccountNumber, LocalAmount, ForeignAmount)  
    (SELECT  
      LTRIM(RTRIM(MASTERTABLE.strVendName)) AS strAccountNumber,  
      SUM(tblVendTransDT.decAmount) AS LocalAmount,  
      SUM(tblVendTransDT.decAmountF) AS ForeignAmount  
    FROM tblVendTrans AS MASTERTABLE  
    INNER JOIN tblVendors ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(tblVendors.strVendName))  
    INNER JOIN tblVendTransDT ON MASTERTABLE.lngVendTrID = tblVendTransDT.lngVendTrID  
    WHERE (tblVendTransDT.bitReversed = 0)  
    AND (tblVendTransDT.dteJournalDate <= @dteRevaluationDate)  
    AND (tblVendTransDT.lngVendTrID NOT IN (SELECT  
      tblVendTransDT.lngVendTrID  
    FROM tblVendTrans  
    INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID  
    WHERE LTRIM(RTRIM(tblVendTrans.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName))  
    AND tblVendTransDT.bitReversed = 0  
    AND tblVendTransDT.dteJournalDate <= @dteRevaluationDate  
    GROUP BY tblVendTransDT.lngVendTrID  
    HAVING SUM(tblVendTransDT.decAmount) = 0  
    AND SUM(tblVendTransDT.decAmountF) = 0)  
    )  
    GROUP BY LTRIM(RTRIM(MASTERTABLE.strVendName)),  
             tblVendors.strVendDesc,  
             tblVendors.strTerm,  
             tblVendors.strCurrency,  
             tblVendTransDT.bitIsForeign)  
  
  UPDATE #Temp  
  SET decBalDue = #Temp2.ForeignAmount,  
      decBalDueF = #Temp2.ForeignAmount,  
   decBalDueValid = #Temp2.LocalAmount  
  FROM #Temp2   
  WHERE #Temp2.strAccountNumber = #Temp.strVendName  
  
  SELECT strVendName AS VendorName ,  
                strVendDesc AS VendorDescription ,  
                strCity AS City ,  
                strPhone AS Phone ,  
                bitInventoryVendor AS InventoryVendor ,  
                strField1 AS Field1 ,  
                strField2 AS Field2 ,  
                strField3 AS Field3 ,  
                strField4 AS Field4 ,  
                strField5 AS Field5 ,  
                strField6 AS Field6 ,  
                strCurrency AS Currency ,  
                strCurrSymbol AS CurrencySymbol ,  
                decBalDue As ConditionalBalDue ,  
                decBalDueF AS BalanceDueF ,  
                bitInactive AS Inactive FROM #Temp  
  WHERE strCurrency <> @HomeCurrencyCode  
  AND (CAST(decBalDueValid AS decimal(18,4)) <> 0.00 OR CAST(decBalDueF AS decimal(18,4)) <> 0.00)    
  AND strVendName NOT IN (SELECT Value FROM [fnSplitStringAsTable]((@lstGridAccount), (',')))  
  ORDER BY strVendName  
  
END  
ELSE IF @dteRevaluationDate IS NOT NULL  
BEGIN  
 SELECT   
 strVendName AS VendorName ,  
                strVendDesc AS VendorDescription ,  
                strCity AS City ,  
                strPhone AS Phone ,  
                bitInventoryVendor AS InventoryVendor ,  
                strField1 AS Field1 ,  
                strField2 AS Field2 ,  
                strField3 AS Field3 ,  
                strField4 AS Field4 ,  
                strField5 AS Field5 ,  
                strField6 AS Field6 ,  
                tblVendors.strCurrency AS Currency ,  
                tblCurrency.strCurrSymbol AS CurrencySymbol ,  
               tblVendors.decBalDue AS ConditionalBalDue ,  
                decBalDueF AS BalanceDueF ,  
                bitInactive AS Inactive  
  
      FROM tblVendors  
      INNER JOIN tblCurrency ON tblVendors.strCurrency = tblCurrency.strCurrency  
   LEFT JOIN (SELECT strVendName As VendName, ISNULL(SUM(CASE WHEN strCurrency = @HomeCurrencyCode THEN tblVendTransDT.decAmount ELSE tblVendTransDT.decAmountF END),0) AS decBalDue FROM tblVendTrans   
   INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID WHERE tblVendTransDT.bitReversed = 0   
   AND tblVendTrans.dteJournalDate <= @dteRevaluationDate GROUP BY strVendName) AS VendBal ON tblVendors.strVendName = VendBal.VendName  
      WHERE 
	  (@IsActive IS NULL OR @IsActive = 1 OR (@IsActive = 0 AND bitInactive = 0)) -- Checked for Active and In Active customers
	  --(@IsActive <> 1 or (@IsActive = 1 and bitInactive = @IsActive))  
      AND (@IsInvoice IS NULL OR @IsInvoice = 0 OR (@IsInvoice = 1 AND bitInvWorkflowNew = 1)) -- Checked for invoice  
      AND (@Option IS NULL OR @Option = 1 OR (@Option = 2 AND decOpenOrders <> 0) OR (@Option = 3 AND ISNULL(VendBal.decBaldue,0) <> 0)) -- For 1 = ALL, 2 = Orders, 3 = Balances  
      AND (@SQCurrency IS NULL OR (tblVendors.strCurrency = @SQCurrency)) -- Checked for selected currency  
      AND (@SQUserName IS NULL OR (strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat  
                                   LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory  
           WHERE  ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory)  
                                   FROM   tblVendorCatSec  
                                   WHERE  tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0  
                                   OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM   tblVendorCatSec   
           WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0  
                                   AND tblVendorCatSec.strUserName = @SQUserName))))  
      ORDER  BY strVendName  
END  
ELSE   
BEGIN  
  SELECT   
  strVendName AS VendorName ,  
                strVendDesc AS VendorDescription ,  
                strCity AS City ,  
                strPhone AS Phone ,  
                bitInventoryVendor AS InventoryVendor ,  
                strField1 AS Field1 ,  
                strField2 AS Field2 ,  
                strField3 AS Field3 ,  
                strField4 AS Field4 ,  
                strField5 AS Field5 ,  
                strField6 AS Field6 ,  
                tblVendors.strCurrency AS Currency ,  
                tblCurrency.strCurrSymbol AS CurrencySymbol ,  
                decBalDue AS ConditionalBalDue ,  
                decBalDueF AS BalanceDueF ,  
                bitInactive AS Inactive  
      FROM tblVendors  
      INNER JOIN tblCurrency ON tblVendors.strCurrency = tblCurrency.strCurrency  
      WHERE (@IsActive IS NULL OR @IsActive = 1 OR (@IsActive = 0 AND bitInactive = 0)) -- Checked for Active and In Active customers  
	  --(@IsActive <> 1 or (@IsActive = 1 and bitInactive = @IsActive))
      AND (@IsInvoice IS NULL OR @IsInvoice = 0 OR (@IsInvoice = 1 AND bitInvWorkflowNew = 1)) -- Checked for invoice  
      AND (@Option IS NULL OR @Option = 1 OR (@Option = 2 AND decOpenOrders <> 0) OR (@Option = 3 AND decBalDue <> 0)) -- For 1 = ALL, 2 = Orders, 3 = Balances  
      AND (@SQCurrency IS NULL OR (tblVendors.strCurrency = @SQCurrency)) -- Checked for selected currency  
      AND (@SQUserName IS NULL OR (strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat  
                                   LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory  
           WHERE  ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory)  
                                   FROM   tblVendorCatSec  
                                   WHERE  tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0  
                                   OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM   tblVendorCatSec   
           WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0  
                                   AND tblVendorCatSec.strUserName = @SQUserName))))  
      ORDER  BY strVendName  
END  
END  
GO
/****** Object:  StoredProcedure [dbo].[GetVendorsDataOI]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetVendorsDataOI]
(
	@strVendName nvarchar(50)	
)
AS
SELECT strCurrency 'Currency', strTerm 'Term', ISNULL((SELECT bitCOD FROM tblTerms WHERE tblTerms.strTerm = tblVendors.strTerm),0) AS COD FROM tblVendors WHERE strVendName = @strVendName
GO
/****** Object:  StoredProcedure [dbo].[GetVendorsListByVendName]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/***************End [GetCustomersListByCustName]***************/

/***************Strat [GetVendorsListByVendName] ******************/
CREATE PROCEDURE [dbo].[GetVendorsListByVendName]
(
	@VendID AS NVARCHAR(50)
)
AS
BEGIN
	SELECT tblVendors.strVendDesc AS 'Description',
		tblVendors.strStreet1 AS 'Street1',
		tblVendors.strStreet2 AS 'Street2',
		tblVendors.strCity AS 'City',
		tblVendors.strProvince AS 'Province',
		tblVendors.strPostal AS 'Postal',
		tblVendors.strCountry AS 'Country',
		tblCurrency.bitHome AS 'Home'
	FROM tblVendors
	INNER JOIN tblCurrency ON tblVendors.strCurrency = tblCurrency.strCurrency
	WHERE tblVendors.strVendName = @VendID
END
GO
/****** Object:  StoredProcedure [dbo].[GetVendPayID]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetVendPayID]

AS
BEGIN
	SELECT ISNULL(MAX(lngVendPayID),0) + 1 FROM tblVendPay
END
GO
/****** Object:  StoredProcedure [dbo].[GetVendTrans]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetVendTrans]
AS
SELECT ISNULL(MAX(lngVendTrID),0) + 1 FROM tblVendTrans
GO
/****** Object:  StoredProcedure [dbo].[GetVendTransID]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[GetVendTransID]

AS
BEGIN
SELECT ISNULL(MAX(lngVendTrID),0) + 1 FROM tblVendTrans
END
GO
/****** Object:  StoredProcedure [dbo].[GetViewCubeList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** END [ProcessJobUpdate] ***********/



/*********** End create stored procedure workshop Report***********/

/*********** End create stored procedure workshop ***********/

/************Start create stored procedure BI Tool****************/

/************************** Start [GetViewCubeList] ****************/

CREATE Procedure [dbo].[GetViewCubeList]
(
@strUserName nvarchar(50)=null,
@strViewName nvarchar(50)=null,
@isAdmin bit=null
)
AS
begin
	if @isAdmin=1 and @strUserName='Administrator'
	begin
		SELECT T1.strCubeName as [CubeName], T1.strViewName as [ViewName], T1.bitCustomCube as [IsCustomCube], T1.strViewDefinition as [ViewDefinition],  1 as [IsAvailable] FROM tblCubes T1 WHERE T1.strViewName = @strViewName
	end
	else 
	begin
		SELECT T1.strCubeName as [CubeName], T1.strViewName as [ViewName], T1.bitCustomCube as [IsCustomCube], Coalesce((Case When T2.strViewDefinition='' then NULL else T2.strViewDefinition end), T1.strViewDefinition) as [ViewDefinition],
		isnull(T2.blnIsAvailable, 0) as [IsAvailable] 
		FROM tblCubes T1 left outer join tblUsersCubeViews T2 on T1.strCubeName = T2.strCubeName and T2.strUserName =@strUserName
		WHERE T1.strViewName = @strViewName and isnull(T2.blnIsAvailable, 0)<>0
	end
end
GO
/****** Object:  StoredProcedure [dbo].[GetViewsList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


/*********** End [GetSalesPurchaseDocumentCount] ***********/

/*********** Start [GetViewsList] ***********/

CREATE PROCEDURE [dbo].[GetViewsList]
AS
BEGIN
	 Select SUBSTRING(name,3,Len(name)) as Name from sys.procedures   WHERE NAME LIKE 'spbi%' ORDER BY name
END
GO
/****** Object:  StoredProcedure [dbo].[GetWarehouseData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetWarehouseData]
    (
      @IsCompanyChecked BIT ,
      @partNumber NVARCHAR(200) ,
      @locationName NVARCHAR(200)
    )
 AS
    BEGIN
	
        IF @IsCompanyChecked = 1
            BEGIN

                SELECT  tblInvExt.strPartNumber ,
                        SUM(tblInvExt.decAvail) AS Available,
                        SUM(tblInvExt.decOnHand) AS OnHand ,
                        tblInvLoc.intType ,
                        '0' ,
                        ISNULL(tblInvLocSec.strUserName, '') ,
                        SUM(tblInvExt.decAlloc) AS Allocated ,
                        SUM(tblInvExt.decOnOrder) AS OnOrder ,
						 SUM(tblInvExt.decManuf) as Manuf,
						 tblInv.strStockUnit as StockUnit
                FROM    tblInvExt 
                        INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber 
						INNER JOIN tblInvLoc ON tblInvExt.strLocName = tblInvLoc.strLocName
                        LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName
                WHERE   tblInvExt.strPartNumber = @partNumber
                GROUP BY tblInvExt.strPartNumber ,
                        tblInvLoc.intType ,
                        tblInvLocSec.strUserName,tblInv.strStockUnit
            END
        ELSE
            BEGIN
                SELECT  tblInvExt.strLocName ,
                        tblInvExt.decAvail AS Available,
                        tblInvExt.decOnHand AS OnHand,
                        tblInvLoc.intType ,
                        ISNULL(( SELECT COUNT(tblInvLocSec.strLocName)
                                 FROM   tblInvLocSec
                                 WHERE  tblInvLocSec.strLocName = tblInvLoc.strLocName
                               ), 0) ,
                        ISNULL(tblInvLocSec.strUserName, '') ,
                        tblInvExt.decAlloc AS Allocated,
                        tblInvExt.decOnOrder AS OnOrder,
						tblInvExt.decManuf AS Manuf,
						tblInv.strStockUnit AS StockUnit
                FROM    tblInvExt
						INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber 
                        INNER JOIN tblInvLoc ON tblInvExt.strLocName = tblInvLoc.strLocName
                        LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName
                WHERE   tblInvExt.strPartNumber = @partNumber
                        AND tblInvExt.strLocName = @locationName;
            END
    END
GO
/****** Object:  StoredProcedure [dbo].[GetWarehouseDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetWarehouseDetails] (
	@PartNumber NVARCHAR(50)
	,@Location NVARCHAR(10)
	)
AS
BEGIN
	SELECT tblInvExt.strLocName AS Location
		,tblInvExt.decAvail AS Available
		,tblInvExt.decOnHand AS OnHand
		,tblInvLoc.intType AS LocationType
		,ISNULL((
				SELECT COUNT(tblInvLocSec.strLocName)
				FROM tblInvLocSec (NOLOCK)
				WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName
				), 0) AS [LocationCount]
		,ISNULL(tblInvLocSec.strUserName, '') AS Username
		,tblInvExt.decAlloc AS Alloc
		,tblInvExt.decOnOrder AS OnOrder
		,tblInvExt.decManuf AS Manuf
		,tblInv.strStockUnit AS StockUnit
		,(
			SELECT SUM(QTY)
			FROM (
				SELECT (ISNULL(SUM(DT.decQtyRemaining), 0) * - 1) AS QTY
				FROM tblInvTrfOrdDoc (NOLOCK) DOC
				INNER JOIN tblInvTrfOrdDocDT (NOLOCK) DT ON DOC.strInvTrfOrdDocID = DT.strInvTrfOrdDocID
				WHERE DOC.bitCleared = 0
					AND DOC.strLocName = @Location
					AND DT.strPartNumber = @PartNumber
				
				UNION ALL
				
				SELECT ISNULL(SUM(DT.decQtyRemaining), 0) AS QTY
				FROM tblInvTrfOrdDoc (NOLOCK) DOC
				INNER JOIN tblInvTrfOrdDocDT (NOLOCK) DT ON DOC.strInvTrfOrdDocID = DT.strInvTrfOrdDocID
				WHERE DOC.bitCleared = 0
					AND DOC.strToLocName = @Location
					AND DT.strPartNumber = @PartNumber
				) AS Result1
			) AS TransferOrder
		,(
			SELECT SUM(QTY)
			FROM (
				SELECT (ISNULL(SUM(DT.decQty), 0) * - 1) AS QTY
				FROM tblInvTrfDoc (NOLOCK) DOC
				INNER JOIN tblInvTrfDocDT (NOLOCK) DT ON DOC.strTrfDocID = DT.strTrfDocID
				WHERE bitWarehouseTrf = 1
					AND bitCleared = 0
					AND strFromLoc = @Location
					AND DT.strPartNumber = @PartNumber
				
				UNION ALL
				
				SELECT ISNULL(SUM(DT.decQty), 0) AS QTY
				FROM tblInvTrfDoc (NOLOCK) DOC
				INNER JOIN tblInvTrfDocDT (NOLOCK) DT ON DOC.strTrfDocID = DT.strTrfDocID
				WHERE bitWarehouseTrf = 1
					AND bitCleared = 0
					AND strToLoc = @Location
					AND DT.strPartNumber = @PartNumber
				) AS Result2
			) AS [GoodsInTransit]
	FROM tblInvExt (NOLOCK)
	INNER JOIN tblInv (NOLOCK) ON tblInvExt.strPartNumber = tblInv.strPartNumber
	INNER JOIN tblInvLoc (NOLOCK) ON tblInvExt.strLocName = tblInvLoc.strLocName
	LEFT JOIN tblInvLocSec (NOLOCK) ON tblInvLoc.strLocName = tblInvLocSec.strLocName
	WHERE tblInvExt.strPartNumber = @PartNumber
	AND tblInvExt.strLocName = @Location
END
GO

/****** Object:  StoredProcedure [dbo].[GetWHCompareData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInventoryUpsellsData] ***********/

/*********** Start [GetWHCompareData] ***********/
CREATE PROCEDURE [dbo].[GetWHCompareData]
(
	@DocumentID VARCHAR(50)
)
AS
BEGIN
	SELECT strPartNumber AS PartNumber
		,SUM(decQtyPicked) AS TatalQuantity
	FROM tblPickTicketsDT
	WHERE strPkTkDocID IN (
			SELECT strPkTkDocID
			FROM tblPickTickets
			WHERE strOrdDocID = @DocumentID
				AND bitCleared = 0
				AND bitPicked = 1
				AND bitDA = 0
			)
	GROUP BY strPartNumber
	ORDER BY strPartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetWHContainerItem]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** END [FetchInvoiceDocDTDataLineWise] ***********/

/*********** Start [GetWHContainerItem] ***********/
CREATE PROCEDURE [dbo].[GetWHContainerItem]
AS
BEGIN
	SELECT
	   [strCntDocID]             AS CntDocID
      ,[dteSystemDate]			 AS SystemDate
      ,[dteJournalDate]			 AS JournalDate
      ,[dteRequired]			 AS [Required]
      ,[strUserName]			 AS UserName
      ,[strCustName]			 AS CustomerName
      ,[strSoldTo]				 AS SoldTo
      ,[strShipTo]				 AS ShipTo
      ,[strReference]			 AS Reference
      ,[strType]				 AS [Type]
      ,[bitHistoryTrans]		 AS IsHistoryTrans
      ,[strNotes]				 AS Notes
      ,[strTrackingNo]			 AS TrackingNo
      ,[strWayBillNo]			 AS WayBillNo
      ,[bitPrinted]				 AS IsPrinted
      ,[bitEmailed]				 AS IsEmailed
      ,[decTotalValue]			 AS TotalValue
      ,[decVolW]				 AS VolW
      ,[decVolH]				 AS VolH
      ,[decVolD]				 AS VolD
      ,[decCuVol]				 AS CubeVolume
      ,[decWeight]				 AS [Weight]
      ,[bitCustMultiple]		 AS IsCustMultiple
      ,[strDelRouteCode]		 AS DeliveryRouteCode
      ,[strDelVehicleCode]		 AS DeliveryVehicleCode
      ,[strDelDriverCode]		 AS DeliveryDriverCode
  FROM [dbo].[tblContainers]
END
GO
/****** Object:  StoredProcedure [dbo].[GetWmsImportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[GetWmsImportData]    Script Date: 2020-03-27 ******/
CREATE PROCEDURE [dbo].[GetWmsImportData]
AS
BEGIN
 
 SELECT lngid AS ID,
        strFilePath AS Filepath,
	Substring(strfilepath, Len(strfilepath) - Charindex('/', Reverse(strfilepath)) + 2, Len(strfilepath)) as [FileName],
        strUserName AS UserName,
        dteCreatedDateTime AS CreatedDateTime,
        varFile AS [File]
    FROM tblWmsImport
END
GO
/****** Object:  StoredProcedure [dbo].[GetWorkshopWIPData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[LoadSelectedProcessJobNumberData] ***********/

/*********** Start [dbo].[GetWorkshopWIPData] ***********/
CREATE PROCEDURE [dbo].[GetWorkshopWIPData]

	--@StartDate as DATETIME,
	--@EndDate as DATETIME

AS
BEGIN
	select 
		WIPDocID
		,JBDocID
		,SystemDate
		,JournalDate
		,UserName
		,[Type]
		,JourID
		,ID
	from tblWSWIP
	--where JournalDate BETWEEN @StartDate AND @EndDate
END
GO
/****** Object:  StoredProcedure [dbo].[GetWSInvoiceDataFromCode]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetWSInvoiceDataFromCode]  
(  
    @DocNumber nvarchar(30)  
)  
AS  
BEGIN  
 SELECT   
   tw.strInvDocID AS ProcessDocID  
  ,tw.ServiceableItemCode  
  ,tblWSServiceableItem.ServiceableItemName  
  ,tblWSServiceableItem.IsInternalAsset   
  ,tblWSServiceableItem.AssetNumber   
  ,tblWSServiceableItem.AssetServiceCostAccount  
  ,tw.JobTemplateID  
  ,tw.OwnerCode  
  ,tw.CustomerCode  
  ,dbo.funGetAddressString(tw.OwnerCode) as OwnerDetails  
  ,dbo.funGetAddressString(tw.CustomerCode) as CustomerDetails  
  ,tw.Technician  
  ,tw.DocType  
  ,tw.InventoryTotal  
  ,tw.LabourTotal  
  ,tw.BuyOutsTotal  
  ,tw.RecoveryTotal  
  ,tw.InventoryTotalF  
  ,tw.LabourTotalF  
  ,tw.BuyOutsTotalF  
  ,tw.RecoveryTotalF  
  ,tw.JobStatusType as JobStatus  
  ,tw.CreatedDate  
  ,tw.UpdatedDate  
  ,tw.CreatedBy  
  ,tw.UpdatedBy  
  ,t.lngInvTrackID AS InvTrackID  
  ,t.lngJourID AS JourID  
  ,t.dteSystemDate as SystemDate  
  ,t.dteJournalDate as DocumentDate  
  ,t.dteRequired as RequiredDate  
  ,t.strUserName AS UserName  
  ,t.strReference AS ReferenceNumber  
  ,t.decSubTotal AS SubTotal  
  ,t.decVAT AS VAT  
  ,t.decTotal AS Total  
  ,t.bitFromSO AS IsPJBToIJB  
  ,t.strOrdDocID AS ExistsingJobNumber  
  ,t.strNotes AS Notes  
  ,t.bitPrinted AS Printed  
  ,t.bitEmailed AS Emailed  
  ,t.intPaidBy AS PaidByInt  
  ,t.intAccount AS Account  
  ,t.strSalesName AS SalesName  
  ,t.strAddInfo AS AddInfo  
  ,t.strCurrency AS Currency  
  ,t.bitIsForeign AS IsForeign  
  ,t.decSubTotalF AS SubTotalF  
  ,t.decVATF AS VATF  
  ,t.decTotalF AS TotalF  
  ,t.decExchange AS Exchange  
  ,t.strTerm AS Term  
  ,t.intDept AS Dept  
  ,t.strSubFormated AS SubFormated  
  ,t.strVATFormatted AS VATFormatted  
  ,t.strTotFormatted AS TotFormatted  
  ,t.decDiscPerc AS DiscPerc  
  ,t.decDiscAmt AS DiscAmt  
  ,t.decDiscAmtF AS DiscAmtF  
  ,t.strDiscFormatted AS DiscFormatted  
  ,t.strPaidBy AS PaidByStr  
  ,t.strVAT AS VATNo
  ,t.strDelMethodCode AS DelMethodCode  
  ,t.decTotalWeight AS TotalWeight  
  ,t.decTotalVolWeight AS TotalVolWeight  
  ,t.decDeliveryCost AS DeliveryCost  
  ,t.decDeliveryCostF AS DeliveryCostF  
  ,t.strDeliveryCostFormatted AS DeliveryCostFormatted  
  ,t.intRevisionNumber AS RevisionNumber  
  ,t.strStatusTypeCode AS StatusTypeCode  
  ,tw.ProcessDocID AS QuoteDocID  
  ,tw.ShipTo
 FROM tblWSInvoiceDoc AS tw  
 INNER JOIN tblInvoiceDoc AS t ON t.strInvDocID = tw.strInvDocID  
 LEFT OUTER JOIN tblWSServiceableItem ON tblWSServiceableItem.ServiceableItemCode = tw.ServiceableItemCode  
 Where t.strInvDocID = @DocNumber  
END
GO
/****** Object:  StoredProcedure [dbo].[GetWSInvoiceDataFromCodeRevNo]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetWSInvoiceDataFromCodeRevNo]
(
	   @DocNumber nvarchar(30),
	   @RevNo int
)
AS
BEGIN
	SELECT 
		 tw.strInvDocID AS ProcessDocID
		,tw.ServiceableItemCode
		,tblWSServiceableItem.ServiceableItemName
		,tblWSServiceableItem.IsInternalAsset 
		,tblWSServiceableItem.AssetNumber 
		,tblWSServiceableItem.AssetServiceCostAccount
		,tw.JobTemplateID
		,tw.OwnerCode
		,tw.CustomerCode
		,dbo.funGetAddressString(tw.OwnerCode) as OwnerDetails
		,dbo.funGetAddressString(tw.CustomerCode) as CustomerDetails
		,tw.Technician
		,tw.DocType
		,tw.InventoryTotal
		,tw.LabourTotal
		,tw.BuyOutsTotal
		,tw.RecoveryTotal
		,tw.InventoryTotalF
		,tw.LabourTotalF
		,tw.BuyOutsTotalF
		,tw.RecoveryTotalF
		,tw.JobStatusType as JobStatus
		,tw.CreatedDate
		,tw.UpdatedDate
		,tw.CreatedBy
		,tw.UpdatedBy
		,t.lngInvTrackID AS InvTrackID
		,t.lngJourID AS JourID
		,t.dteSystemDate as SystemDate
		,t.dteJournalDate as DocumentDate
		,t.dteRequired as RequiredDate
		,t.strUserName AS UserName
		,t.strReference AS ReferenceNumber
		,t.decSubTotal AS SubTotal
		,t.decVAT AS VAT
		,t.decTotal AS Total
		,t.bitFromSO AS IsPJBToIJB
		,t.strOrdDocID AS ExistsingJobNumber
		,t.strNotes AS Notes
		,t.bitPrinted AS Printed
		,t.bitEmailed AS Emailed
		,t.intPaidBy AS PaidByInt
		,t.intAccount AS Account
		,t.strSalesName AS SalesName
		,t.strAddInfo AS AddInfo
		,t.strCurrency AS Currency
		,t.bitIsForeign AS IsForeign
		,t.decSubTotalF AS SubTotalF
		,t.decVATF AS VATF
		,t.decTotalF AS TotalF
		,t.decExchange AS Exchange
		,t.strTerm AS Term
		,t.intDept AS Dept
		,t.strSubFormated AS SubFormated
		,t.strVATFormatted AS VATFormatted
		,t.strTotFormatted AS TotFormatted
		,t.decDiscPerc AS DiscPerc
		,t.decDiscAmt AS DiscAmt
		,t.decDiscAmtF AS DiscAmtF
		,t.strDiscFormatted AS DiscFormatted
		,t.strPaidBy AS PaidByStr
		,t.strVAT AS VATStr
		,t.strDelMethodCode AS DelMethodCode
		,t.decTotalWeight AS TotalWeight
		,t.decTotalVolWeight AS TotalVolWeight
		,t.decDeliveryCost AS DeliveryCost
		,t.decDeliveryCostF AS DeliveryCostF
		,t.strDeliveryCostFormatted AS DeliveryCostFormatted
		,t.intRevisionNumber AS RevisionNumber
		,t.strStatusTypeCode AS StatusTypeCode
		,tw.ProcessDocID AS QuoteDocID
	FROM tblWSInvoiceDocREV AS tw
	INNER JOIN tblInvoiceDocREV AS t ON t.strInvDocID = tw.strInvDocID
	LEFT OUTER JOIN tblWSServiceableItem ON tblWSServiceableItem.ServiceableItemCode = tw.ServiceableItemCode
	Where t.strInvDocID = @DocNumber and t.intRevisionNumber = @RevNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetWSInvoiceDocDTDataFromCode]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[GetWSInvoiceDataFromCode] ***********/

/*********** Start [dbo].[GetWSInvoiceDocDTDataFromCode] ***********/

CREATE PROCEDURE [dbo].[GetWSInvoiceDocDTDataFromCode]
(
	@DocNumber AS NVARCHAR(50),
	@GPCalcInvLevel AS INT,
	@GPCalcLPP AS INT	
)
AS
BEGIN
	SELECT
	   tblInvoiceDocDT.bitDiscountTax as DiscountTax
	  ,tblInvoiceDocDT.[strInvDocID] AS InvDocID
      ,tblInvoiceDocDT.[intLineNo] AS [LineNo]
      ,tblInvoiceDocDT.[strPartNumber] AS PartNumber
      ,[strLocation] AS Location
      ,[strPartDesc] AS PartDesc
      ,[decQty] AS Qty
	  ,[decUsedQty] AS UsedQty  --added for workshop invoice Job
      ,[strUnit] AS Unit
      ,tblInvoiceDocDT.[intType] AS [Type]
      ,[decPriceEaExc] AS PriceEaExc
      ,[decLineTotExc] AS LineTotExc
      ,[decLineTaxAmt] AS LineTaxAmt
      ,[decPriceEaInc] AS PriceEaInc
      ,[decLineTotInc] AS LineTotInc
      ,[strTaxCode] AS TaxCode
      ,[imgTaxObj] AS TaxObj
      ,[strCurrency] AS Currency
      ,[bitIsForeign] AS IsForeign
      ,[decPriceEaExcF] AS PriceEaExcF
      ,[decLineTotExcF] AS LineTotExcF
      ,[decLineTaxAmtF] AS LineTaxAmtF
      ,[decEaIncTaxF] AS EaIncTaxF
      ,[decTotIncTaxF] AS TotIncTaxF
      ,[strInvField1] AS InvField1
      ,[strInvField2] AS InvField2
      ,[strInvField3] AS InvField3
      ,[strInvField4] AS InvField4
      ,[strInvField5] AS InvField2
      ,[strInvField6] AS InvField5
      ,[strLineField1] AS LineField1
      ,[strLineField2] AS LineField2
      ,[strLineField3] AS LineField3
      ,[strLineField4] AS LineField4
      ,[strLineField5] AS LineField5
      ,[strLineField6] AS LineField6
      ,[strLineField7] AS LineField7
      ,[strLineField8] AS LineField8
      ,[strLineField9] AS LineField9
      ,[strLineField10] AS LineField10
      ,[strLineField11] AS LineField11
      ,[strLineField12] AS LineField12
      ,[decLineDiscPerc] AS LineDiscPerc
      ,[decLineDiscAmt] AS LineDiscAmt
      ,[decLineDiscAmtF] AS LineDiscAmtF
      ,[bitDiscountTax] AS DiscountTax
      ,[decStockQty] AS StockQty
      ,tblInvoiceDocDT.[strStockUnit] AS StockUnit
      ,tblInvoiceDocDT.[decStandardCost] AS StandardCost
      ,tblInvoiceDocDT.[decLastPPUnit] AS LastPPUnit
      ,[strSalesName] AS SalesName
      ,[decCOGS] AS COGS
      ,[decSOQty] AS SOQty
      ,[decSOQtyRemain] AS SOQtyRemain
      ,[strPartExtendedDesc] AS PartExtendedDesc
      ,[decItemWeight] AS ItemWeight
      ,tblInvoiceDocDT.[decVolumetricWeight] AS VolumetricWeight
      ,[bitContainerItem] AS ContainerItem
      ,[bitDelCost] AS DelCost
      ,[intBillingMethod] AS BillingMethod
      ,[uidTransactionFieldID] AS TransactionFieldGUID
		,tblInv.strSellUnit AS SellUnit
		,tblInv.strSellStockUnit AS SellStockUnit
		,tblInv.decSellFromStock AS SellFromStock
		,ISNULL(tblOrderDocDTPrj.strProjNumber, '') AS ProjNumber  
		,tblInv.bitInvSerialType AS IsInvSerialType
		,CASE 
		WHEN tblInv.intType = 4
			THEN tblInv.decStandardCost
		ELSE CASE @GPCalcLPP
				WHEN 0
					THEN tblInv.decLastPPUnit
				WHEN 1
					THEN tblInv.decStandardCost
				WHEN 2
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblInvoiceDocDT.strLocation
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblInvoiceDocDT.strLocation
															), 0)
													THEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = tblInvoiceDocDT.strLocation
																), 0)
												ELSE CASE 
														WHEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblInvoiceDocDT.strLocation
																	), 0) = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblInvoiceDocDT.strLocation
																	), 0)
														END
												END
										END
							WHEN 1
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
												ELSE CASE 
														WHEN CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
														END
												END
										END
							ELSE tblInv.decLastPPUnit
							END
				WHEN 3
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblInvoiceDocDT.strLocation
													), 0) = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblInvoiceDocDT.strLocation
													), 0)
										END
							WHEN 1
								THEN CASE 
										WHEN CASE tblInv.decSumOnHand
												WHEN 0
													THEN 0
												ELSE tblInv.decSumValue / tblInv.decSumOnHand
												END = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
										END
							ELSE tblInv.decLastPPUnit
							END
				ELSE tblInv.decLastPPUnit
				END
		END  AS	GPCalc
		--,tblInvoiceDocDT.BuyoutCost as BuyoutCost
		,tblInv.strUnitOfMeasure AS UnitOfMeasure

		--For Workshop : Every time data will be fetch from Requisition table insted of Invoice table
		--,ISNULL(STUFF((
		--		SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(max))
		--		FROM tblInvLocBin
		--		WHERE tblInvLocBin.lngId IN (
		--				SELECT lngBinId
		--				FROM tblInvoiceDocDTBin
		--				WHERE tblInvoiceDocDTBin.strInvDocID = tblInvoiceDocDT.strInvDocID
		--					AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTBin.intLineNo
		--				)
		--		FOR XML PATH('')
		--		), 1, 1, ''), '') AS BinCode
		--,ISNULL(STUFF((
		--		SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(max))
		--		FROM tblInvLocBin
		--		WHERE tblInvLocBin.lngId IN (
		--				SELECT lngBinId
		--				FROM tblInvoiceDocDTBin
		--				WHERE tblInvoiceDocDTBin.strInvDocID = tblInvoiceDocDT.strInvDocID
		--					AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTBin.intLineNo
		--				)
		--		FOR XML PATH('')
		--		), 1, 1, ''), '') AS BinID
				
				
				,ISNULL(STUFF
		(
			(
				SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX))
				From 
					tblWSWIPCompInvBin
				INNER JOIN tblWSWIPCompDT ON tblWSWIPCompDT.WIPDocID = tblWSWIPCompInvBin.WIPDocID
				INNER JOIN tblWSWIP ON tblWSWIP.WIPDocID = tblWSWIPCompDT.WIPDocID
				INNEr JOIn tblInvLocBin ON tblInvLocBin.lngID = tblWSWIPCompInvBin.BinID
				WHERE tblWSWIP.JBDocID = (select ProcessDocID FRom tblWsInvoiceDoc where strInvDocID = @DocNumber) AND tblInvoiceDocDT.intLineNo = tblWSWIPCompInvBin.[LineNo]
				Group by 
				   tblInvLocBin.strBinCode 
				FOR XML PATH('')
			),1, 1, ''),'') AS BinCode


				,ISNULL(STUFF
		(
			(
				SELECT ',' + CAST(tblWSWIPCompInvBin.BinID AS VARCHAR(MAX)) 
				From 
					tblWSWIPCompInvBin
				INNER JOIN tblWSWIPCompDT ON tblWSWIPCompDT.WIPDocID = tblWSWIPCompInvBin.WIPDocID
				INNER JOIN tblWSWIP ON tblWSWIP.WIPDocID = tblWSWIPCompDT.WIPDocID
				INNEr JOIn tblInvLocBin ON tblInvLocBin.lngID = tblWSWIPCompInvBin.BinID
				WHERE tblWSWIP.JBDocID = (select ProcessDocID FRom tblWsInvoiceDoc where strInvDocID = @DocNumber) AND tblInvoiceDocDT.intLineNo = tblWSWIPCompInvBin.[LineNo]
				Group by 
					tblWSWIPCompInvBin.BinID
				Order by tblWSWIPCompInvBin.BinID
				FOR XML PATH('')
		),1, 1, '' ),'') AS BinIdString


	FROM tblInvoiceDocDT
	INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblOrderDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblOrderDocDTPrj.strOrdDocID  
	AND tblInvoiceDocDT.intLineNo = tblOrderDocDTPrj.intLineNo   
	WHERE tblInvoiceDocDT.strInvDocID = @DocNumber
ORDER BY tblInvoiceDocDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetWSInvoiceDocDTDataFromCodeRevNo]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetWSInvoiceDocDTDataFromCodeRevNo]
(
	@DocNumber AS NVARCHAR(50),
	@RevNo AS INT,
	@GPCalcInvLevel AS INT,
	@GPCalcLPP AS INT	
)
AS
BEGIN
	SELECT
	   tblInvoiceDocREVDT.bitDiscountTax as DiscountTax
	  ,tblInvoiceDocREVDT.[strInvDocID] AS InvDocID
      ,tblInvoiceDocREVDT.[intLineNo] AS [LineNo]
      ,tblInvoiceDocREVDT.[strPartNumber] AS PartNumber
      ,[strLocation] AS Location
      ,[strPartDesc] AS PartDesc
      ,[decQty] AS Qty
	  ,tblInvoiceDocREVDT.[decUsedQty] AS UsedQty  --added for workshop invoice Job
      ,[strUnit] AS Unit
      ,tblInvoiceDocREVDT.[intType] AS [Type]
      ,[decPriceEaExc] AS PriceEaExc
      ,[decLineTotExc] AS LineTotExc
      ,[decLineTaxAmt] AS LineTaxAmt
      ,[decPriceEaInc] AS PriceEaInc
      ,[decLineTotInc] AS LineTotInc
      ,[strTaxCode] AS TaxCode
      ,[imgTaxObj] AS TaxObj
      ,tblInvoiceDocREVDT.[strCurrency] AS Currency
      ,tblInvoiceDocREVDT.[bitIsForeign] AS IsForeign
      ,[decPriceEaExcF] AS PriceEaExcF
      ,[decLineTotExcF] AS LineTotExcF
      ,[decLineTaxAmtF] AS LineTaxAmtF
      ,[decEaIncTaxF] AS EaIncTaxF
      ,[decTotIncTaxF] AS TotIncTaxF
      ,[strInvField1] AS InvField1
      ,[strInvField2] AS InvField2
      ,[strInvField3] AS InvField3
      ,[strInvField4] AS InvField4
      ,[strInvField5] AS InvField2
      ,[strInvField6] AS InvField5
      ,[strLineField1] AS LineField1
      ,[strLineField2] AS LineField2
      ,[strLineField3] AS LineField3
      ,[strLineField4] AS LineField4
      ,[strLineField5] AS LineField5
      ,[strLineField6] AS LineField6
      ,[strLineField7] AS LineField7
      ,[strLineField8] AS LineField8
      ,[strLineField9] AS LineField9
      ,[strLineField10] AS LineField10
      ,[strLineField11] AS LineField11
      ,[strLineField12] AS LineField12
      ,[decLineDiscPerc] AS LineDiscPerc
      ,[decLineDiscAmt] AS LineDiscAmt
      ,[decLineDiscAmtF] AS LineDiscAmtF
      ,[bitDiscountTax] AS DiscountTax
      ,[decStockQty] AS StockQty
      ,tblInvoiceDocREVDT.[strStockUnit] AS StockUnit
      ,tblInvoiceDocREVDT.[decStandardCost] AS StandardCost
      ,tblInvoiceDocREVDT.[decLastPPUnit] AS LastPPUnit
      ,tblInvoiceDocREVDT.[strSalesName] AS SalesName
      ,[decCOGS] AS COGS
      ,[decSOQty] AS SOQty
      ,[decSOQtyRemain] AS SOQtyRemain
      ,[strPartExtendedDesc] AS PartExtendedDesc
      ,[decItemWeight] AS ItemWeight
      ,tblInvoiceDocREVDT.[decVolumetricWeight] AS VolumetricWeight
      ,[bitContainerItem] AS ContainerItem
      ,[bitDelCost] AS DelCost
      --,[intBillingMethod] AS BillingMethod
      ,[uidTransactionFieldID] AS TransactionFieldGUID
		,tblInv.strSellUnit AS SellUnit
		,tblInv.strSellStockUnit AS SellStockUnit
		,tblInv.decSellFromStock AS SellFromStock
		,tblInv.bitInvSerialType AS IsInvSerialType
		,CASE 
		WHEN tblInv.intType = 4
			THEN tblInv.decStandardCost
		ELSE CASE @GPCalcLPP
				WHEN 0
					THEN tblInv.decLastPPUnit
				WHEN 1
					THEN tblInv.decStandardCost
				WHEN 2
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblInvoiceDocREVDT.strLocation
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblInvoiceDocREVDT.strLocation
															), 0)
													THEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = tblInvoiceDocREVDT.strLocation
																), 0)
												ELSE CASE 
														WHEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblInvoiceDocREVDT.strLocation
																	), 0) = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblInvoiceDocREVDT.strLocation
																	), 0)
														END
												END
										END
							WHEN 1
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
												ELSE CASE 
														WHEN CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
														END
												END
										END
							ELSE tblInv.decLastPPUnit
							END
				WHEN 3
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblInvoiceDocREVDT.strLocation
													), 0) = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblInvoiceDocREVDT.strLocation
													), 0)
										END
							WHEN 1
								THEN CASE 
										WHEN CASE tblInv.decSumOnHand
												WHEN 0
													THEN 0
												ELSE tblInv.decSumValue / tblInv.decSumOnHand
												END = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
										END
							ELSE tblInv.decLastPPUnit
							END
				ELSE tblInv.decLastPPUnit
				END
		END  AS	GPCalc
		--,tblInvoiceDocDT.BuyoutCost as BuyoutCost
		,tblInv.strUnitOfMeasure AS UnitOfMeasure
		,ISNULL(STUFF((
				SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(max))
				FROM tblInvLocBin
				WHERE tblInvLocBin.lngId IN (
						SELECT lngBinId
						FROM tblInvoiceDocDTBin
						WHERE tblInvoiceDocDTBin.strInvDocID = tblInvoiceDocREVDT.strInvDocID
							AND tblInvoiceDocREVDT.intLineNo = tblInvoiceDocDTBin.intLineNo
						)
				FOR XML PATH('')
				), 1, 1, ''), '') AS BinCode
		,ISNULL(STUFF((
				SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(max))
				FROM tblInvLocBin
				WHERE tblInvLocBin.lngId IN (
						SELECT lngBinId
						FROM tblInvoiceDocDTBin
						WHERE tblInvoiceDocDTBin.strInvDocID = tblInvoiceDocREVDT.strInvDocID
							AND tblInvoiceDocREVDT.intLineNo = tblInvoiceDocDTBin.intLineNo
						)
				FOR XML PATH('')
				), 1, 1, ''), '') AS BinID
	FROM tblInvoiceDocREVDT
	INNER JOIN tblInv ON tblInvoiceDocREVDT.strPartNumber = tblInv.strPartNumber
	INNER JOIN tblInvoiceDocREV ON tblInvoiceDocREVDT.lngEntID = tblInvoiceDocREV.lngEntID
	WHERE tblInvoiceDocREVDT.strInvDocID = @DocNumber and tblInvoiceDocREV.intRevisionNumber = @RevNo 
ORDER BY tblInvoiceDocREVDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetWSOpenInvoiceJobDoc]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetWSOpenInvoiceJobDoc]
AS
BEGIN
	SELECT 
		 tw.strInvDocID AS ProcessDocID
		,tw.ServiceableItemCode
		,tblWSServiceableItem.ServiceableItemName
		,tw.JobTemplateID
		,tw.OwnerCode
		,tw.CustomerCode
		,dbo.funGetAddressString(tw.OwnerCode) as OwnerDetails
		,dbo.funGetAddressString(tw.CustomerCode) as CustomerDetails
		,tw.Technician
		,tw.DocType
		,tw.InventoryTotal
		,tw.LabourTotal
		,tw.BuyOutsTotal
		,tw.RecoveryTotal
		,tw.InventoryTotalF
		,tw.LabourTotalF
		,tw.BuyOutsTotalF
		,tw.RecoveryTotalF
		,tw.JobStatusType as JobStatus
		,tw.CreatedDate
		,tw.UpdatedDate
		,tw.CreatedBy
		,tw.UpdatedBy
		,t.lngInvTrackID AS InvTrackID
		,t.lngJourID AS JourID
		,t.dteSystemDate as SystemDate
		,t.dteJournalDate as DocumentDate
		,t.dteRequired as RequiredDate
		,t.strUserName AS UserName
		,t.strReference AS ReferenceNumber
		,t.decSubTotal AS SubTotal
		,t.decVAT AS VAT
		,t.decTotal AS Total
		,t.bitFromSO AS IsPJBToIJB
		,t.strOrdDocID AS ExistsingJobNumber
		,t.strNotes AS Notes
		,t.bitPrinted AS Printed
		,t.bitEmailed AS Emailed
		,t.intPaidBy AS PaidByInt
		,t.intAccount AS Account
		,t.strSalesName AS SalesName
		,t.strAddInfo AS AddInfo
		,t.strCurrency AS Currency
		,t.bitIsForeign AS IsForeign
		,t.decSubTotalF AS SubTotalF
		,t.decVATF AS VATF
		,t.decTotalF AS TotalF
		,t.decExchange AS Exchange
		,t.strTerm AS Term
		,t.intDept AS Dept
		,t.strSubFormated AS SubFormated
		,t.strVATFormatted AS VATFormatted
		,t.strTotFormatted AS TotFormatted
		,t.decDiscPerc AS DiscPerc
		,t.decDiscAmt AS DiscAmt
		,t.decDiscAmtF AS DiscAmtF
		,t.strDiscFormatted AS DiscFormatted
		,t.strPaidBy AS PaidByStr
		,t.strVAT AS VATStr
		,t.strDelMethodCode AS DelMethodCode
		,t.decTotalWeight AS TotalWeight
		,t.decTotalVolWeight AS TotalVolWeight
		,t.decDeliveryCost AS DeliveryCost
		,t.decDeliveryCostF AS DeliveryCostF
		,t.strDeliveryCostFormatted AS DeliveryCostFormatted
		,t.intRevisionNumber AS RevisionNumber
	FROM tblWSInvoiceDoc AS tw
	INNER JOIN tblInvoiceDoc AS t ON t.strInvDocID = tw.strInvDocID
	LEFT OUTER JOIN tblWSServiceableItem ON tblWSServiceableItem.ServiceableItemCode = tw.ServiceableItemCode
	WHERE t.bitHistoryTrans = 0
END
GO
/****** Object:  StoredProcedure [dbo].[GetWSWIPCompInvSerial]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateOpenOrdersForWorkshop] ***********/

/*********** Start [GetWSWIPCompInvSerial] ***********/
CREATE PROCEDURE [dbo].[GetWSWIPCompInvSerial]
(
	@DocNumber as nvarchar(30)
)
AS
BEGIN
	SELECT 
		tblWSWIPCompSerial.WIPDocID as WIPDocID,
		tblWSWIPCompSerial.WIPID as WIPID,
		tblWSWIPCompSerial.[LineNo] as [LineNo],
		tblWSWIPCompSerial.SerialNumber as SerialNumber,
		tblWSWIPCompSerial.Qty as Qty,
		tblWSWIPCompSerial.Unit as Unit,
		tblWSWIPCompSerial.ID as ID,
		tblWSWIPCompSerial.IsExpiryDate as IsExpiryDate,
		tblWSWIPCompSerial.ExpiryDate as ExpiryDate,
		tblWSWIPCompSerial.SerialLotType as SerialLotType,
	       ISNULL(
	                (SELECT DISTINCT TYP.strInvSerialType
	                 FROM tblWSWIPCompSerial SRL
	                 INNER JOIN tblWSWIPCompDT DTL ON SRL.WIPDocID = DTL.WIPDocID
	                 AND SRL.[LineNo] = DTL.[LineNo]
	                 INNER JOIN tblInv INV ON DTL.PartNumber = INV.strPartNumber
	                 INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType
	                 WHERE SRL.WIPDocID = tblWSWIPCompSerial.WIPDocID
	                   AND SRL.[LineNo] = tblWSWIPCompSerial.[LineNo]),'') as InvSerialType
	FROM tblWSWIPCompSerial
	WHERE WIPDocID = @DocNumber
	  --AND intLineNo = @SQLineNo
	ORDER BY ID
END
GO
/****** Object:  StoredProcedure [dbo].[GetWSWIPCompSerialDataForLoadDocConversion]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateCustomersData] ***********/

/*********** Start [GetWSWIPCompSerialDataForLoadDocConversion] ***********/
CREATE PROCEDURE [dbo].[GetWSWIPCompSerialDataForLoadDocConversion] (
	@DocNumber AS NVARCHAR(100)
	,@DocLineNumber AS INT	
	)
AS
BEGIN
	DECLARE @IsSerialType int
	
	select @IsSerialType = tblInvSerialTypes.intType from tblInv
	INNER JOIN tblWSProcessDocDT on tblWSProcessDocDT.PartNumber = tblInv.strPartNumber 
	INNER JOIN tblInvSerialTypes on tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	where ProcessDocID = @DocNumber  and [LineNo] = @DocLineNumber
	
	IF(@IsSerialType = 0) --Serial Type Item
	BEGIN
	SELECT 
		tblWSWIPCompSerial.[LineNo],
			tblWSWIPCompSerial.SerialNumber,
			tblWSWIPCompSerial.Qty,
			tblWSWIPCompSerial.Unit,
			tblWSWIPCompSerial.ID as ID,
			tblWSWIPCompSerial.IsExpiryDate,
			tblWSWIPCompSerial.ExpiryDate,
			tblWSWIPCompSerial.SerialLotType,
			tblWSWIPCompDT.WIPDocID,
		tblWSWIPCompDT.[Type],
		tblWSWIPCompDT.PartNumber 
	into #tempMain FROM tblWSWIPCompDT
	INNER JOIN tblWSWIPCompSerial ON tblWSWIPCompSerial.WIPDocID = tblWSWIPCompDT.WIPDocID AND tblWSWIPCompSerial.WIPID = tblWSWIPCompDT.ID 
	where tblWSWIPCompDT.WIPDocID in (select WIPDocID from tblWSWIP where JBDocID = @DocNumber) AND tblWSWIPCompDT.[LineNo] = @DocLineNumber
	
	--select * from #temp1
	
	select (ROW_NUMBER() OVER(ORDER BY ID)) as IssueQtyRow#,* into #tempTblIssueQty from #tempMain where [Type] = 0 --Issued Qty
	--select * from #tempTblIssueQty
	
	select (ROW_NUMBER() OVER(ORDER BY ID)) as ReturnQtyRow#,* into #tempTblReturnQty from #tempMain where [Type] = 1 --Return Qty
	--select * from #tempTblReturnQty
	
	DECLARE @ReturnCount as INT
	SET @ReturnCount = 1
	
	IF((SELECT COUNT(*) FROM #tempTblReturnQty) > 0)
	BEGIN
	WHILE(@ReturnCount <= (SELECT COUNT(*) FROM #tempTblReturnQty))
	BEGIN
			DECLARE @SerialNumber as nvarchar(50)
			
			SELECT @SerialNumber = SerialNumber from #tempTblReturnQty where ReturnQtyRow# = @ReturnCount
			
			Delete from #tempTblIssueQty where ID = (select Top 1 ID from #tempTblIssueQty where SerialNumber = @SerialNumber)
			SET @ReturnCount = @ReturnCount + 1
	END
	END

	SELECT 
		tblWSWIP.JBDocID,
		#tempTblIssueQty.[LineNo],
			#tempTblIssueQty.SerialNumber,
			#tempTblIssueQty.Qty,
			#tempTblIssueQty.Unit,
			#tempTblIssueQty.ID as ID,
			#tempTblIssueQty.IsExpiryDate,
			#tempTblIssueQty.ExpiryDate,
			#tempTblIssueQty.SerialLotType,
	
			CASE 
					WHEN #tempTblIssueQty.SerialLotType = 0
						THEN CONVERT(BIT, (ISNULL(tblInvSerialExt.bitDimensionExist, 0)), 0)
					ELSE CONVERT(BIT, 0)
					END AS IsDimensionExist,
		
		CASE 
					WHEN #tempTblIssueQty.SerialLotType = 0
						THEN ISNULL(tblInvSerialExt.strDimension, '')
					ELSE ''
					END AS Dimension
		,lngBinID AS BinID
		,ISNULL((
				SELECT strBinCode
				FROM tblInvLocBin
				WHERE lngID = tblInvSerialExt.lngBinID
				), '') AS BinCode
	
	
	from #tempTblIssueQty
	INNER JOIN tblWSWIP on tblWSWIP.WIPDocID = #tempTblIssueQty.WIPDocID
		LEFT JOIN tblInvSerialExt ON #tempTblIssueQty.PartNumber = tblInvSerialExt.strPartNumber
				AND #tempTblIssueQty.SerialNumber = tblInvSerialExt.strSerialNumber
	END
	ELSE --Lot Type Item
	BEGIN
		--Review Required
		;WITH CTE1(JBDocID,[LineNo],SerialNumber,Qty,Unit,IsExpiryDate,ExpiryDate,SerialLotType,IsDimensionExist,Dimension,BinID,BinCode) as
		(
		 SELECT 
				tblWSWIP.JBDocID,
				tblWSWIPCompSerial.[LineNo],
				tblWSWIPCompSerial.SerialNumber,
				CASE tblWSWIPCompDT.[Type]  WHEN  1 THEN (tblWSWIPCompSerial.Qty * (-1)) ELSE tblWSWIPCompSerial.Qty END as Qty,
				tblWSWIPCompSerial.Unit,
				--tblWSWIPCompSerial.ID as ID,
				tblWSWIPCompSerial.IsExpiryDate,
				tblWSWIPCompSerial.ExpiryDate,
				tblWSWIPCompSerial.SerialLotType ,

				CONVERT(bit,0) as IsDimensionExist,
			--CASE 
			--			WHEN tblWSWIPCompSerial.SerialLotType = 0
			--				THEN CONVERT(BIT, (ISNULL(tblInvLotExt.bitDimensionExist, 0)), 0)
			--			ELSE CONVERT(BIT, 0)
			--			END AS IsDimensionExist,
			

			'' as Dimension,
			--CASE 
			--			WHEN tblWSWIPCompSerial.SerialLotType = 0
			--				THEN ISNULL(tblInvLotExt.strDimension, '')
			--			ELSE ''
			--			END AS Dimension,

			lngBinID AS BinID
			,ISNULL((
					SELECT strBinCode
					FROM tblInvLocBin
					WHERE lngID = tblInvLotExt.lngBinID
					), '') AS BinCode	
			from 
				tblWSWIP 
			INNER JOIN tblWSWIPCompDT ON tblWSWIP.WIPDocID = tblWSWIPCompDT.WIPDocID
			INNER JOIN tblWSWIPCompSerial ON tblWSWIPCompDT.WIPDocID = tblWSWIPCompSerial.WIPDocID AND tblWSWIPCompDT.ID =	tblWSWIPCompSerial.WIPID
		
			--LEFT JOIN tblInvSerialExt ON tblWSWIPCompDT.PartNumber = tblInvSerialExt.strPartNumber AND tblWSWIPCompSerial.SerialNumber = tblInvSerialExt.strSerialNumber
			LEFT JOIN tblInvLotExt ON tblWSWIPCompDT.PartNumber = tblInvLotExt.strPartNumber AND tblWSWIPCompSerial.SerialNumber = tblInvLotExt.strLotNumber
			WHERE tblWSWIP.JBDocID = @DocNumber AND tblWSWIPCompSerial.[LineNo] = @DocLineNumber
		)
		select 
			JBDocID,
			[LineNo],
			SerialNumber,
			SUM(Qty) as Qty,
			Unit,
			IsExpiryDate,
			ExpiryDate,
			SerialLotType,
			IsDimensionExist,
			Dimension,
			BinID,
			BinCode
		
		from CTE1
		Group By
			JBDocID,
			[LineNo],
			SerialNumber,
			Unit,
			IsExpiryDate,
			ExpiryDate,
			SerialLotType,
			IsDimensionExist,
			Dimension,
			BinID,
			BinCode
	END


	--OLD Query
	--SELECT 
	--	tblWSWIP.JBDocID,
	--	tblWSWIPCompSerial.[LineNo],
	--	tblWSWIPCompSerial.SerialNumber,
	--	tblWSWIPCompSerial.Qty,
	--	tblWSWIPCompSerial.Unit,
	--	tblWSWIPCompSerial.ID as ID,
	--	tblWSWIPCompSerial.IsExpiryDate,
	--	tblWSWIPCompSerial.ExpiryDate,
	--	tblWSWIPCompSerial.SerialLotType ,
	----ISNULL((
	----				select  DISTINCT TYP.strInvSerialType,* from tblWSWIPCompSerial SRL
	----INNER JOIN tblWSWIP WIP ON WIP.WIPDocID = SRL.WIPDocID
	----INNER JOIN tblWSWIPCompDT ON tblWSWIPCompDT.WIPDocID = SRL.WIPDocID AND tblWSWIPCompDT.ID = SRL.WIPID
	----INNER JOIN tblInv INV ON tblWSWIPCompDT.PartNumber = INV.strPartNumber
	----INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType
	----WHERE WIP.JBDocID = 'PJB-000000010'
	----					AND SerialOut.[LineNo] =1
	----				), '') AS Type1,    --Not Worksing in this sp
	
	--CASE 
	--			WHEN tblWSWIPCompSerial.SerialLotType = 0
	--				THEN CONVERT(BIT, (ISNULL(tblInvSerialExt.bitDimensionExist, 0)), 0)
	--			ELSE CONVERT(BIT, 0)
	--			END AS IsDimensionExist,
	
	--CASE 
	--			WHEN tblWSWIPCompSerial.SerialLotType = 0
	--				THEN ISNULL(tblInvSerialExt.strDimension, '')
	--			ELSE ''
	--			END AS Dimension
	--,lngBinID AS BinID
	--,ISNULL((
	--		SELECT strBinCode
	--		FROM tblInvLocBin
	--		WHERE lngID = tblInvSerialExt.lngBinID
	--		), '') AS BinCode
		
	--from 
	--	tblWSWIP 
	--INNER JOIN tblWSWIPCompDT ON tblWSWIP.WIPDocID = tblWSWIPCompDT.WIPDocID
	--INNER JOIN tblWSWIPCompSerial ON tblWSWIPCompDT.WIPDocID = tblWSWIPCompSerial.WIPDocID AND tblWSWIPCompDT.ID =	tblWSWIPCompSerial.WIPID

	--LEFT JOIN tblInvSerialExt ON tblWSWIPCompDT.PartNumber = tblInvSerialExt.strPartNumber
	--		AND tblWSWIPCompSerial.SerialNumber = tblInvSerialExt.strSerialNumber
	--WHERE tblWSWIP.JBDocID = @DocNumber AND tblWSWIPCompSerial.[LineNo] = @DocLineNumber

END
GO
/****** Object:  StoredProcedure [dbo].[GetWSWorkInProgressData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetWSWorkInProgressData]
(  
 @WIPDocID nvarchar(30)  
)  
AS  
BEGIN  
 SELECT tblWSWIPCompDT.[LineNo],  
        tblWSWIPCompDT.PartNumber, 
	tblWSProcessDocDT.PartDesc as PartDesc , 
     CONVERT(INT, tblInv.intType) AS ItemType,  
        tblWSWIPCompDT.Location,  
     ISNULL(tblWSProcessDocDT.JobQty,0) AS JobQty,  
        ISNULL(tblWSWIPCompDT.PostedQty,0) AS PostedQty,  
        ISNULL(tblWSWIPCompDT.PostQty,0) AS PostQty,  
        ISNULL(tblWSWIPCompDT.PostedAmount,0) AS PostedAmount,  
        ISNULL(tblWSWIPCompDT.PostAmount,0) AS PostAmount,  
        tblInv.bitInvSerialType AS IsSerailType,  
        tblInv.strStockUnit AS Unit,  
        ISNULL(tblWSWIPCompDT.ReturnQty,0) AS ReturnQty,  
        ISNULL(tblInvSerialTypes.bitMethod,0) AS IsMethod,  
     ISNULL(tblInv.decLastPPUnit,0) AS LastReceivedCost,  --newly added  
  
     ISNULL(STUFF((  
    SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX))  
    FROM tblInvLocBin  
    WHERE tblInvLocBin.lngId IN (  
      SELECT BinId  
      FROM tblWSWIPCompInvBin  
      WHERE tblWSWIPCompInvBin.WIPDocID = tblWSWIPCompDT.WIPDocID  
       AND tblWSWIPCompDT.[LineNo] = tblWSWIPCompInvBin.[LineNo]  
      )  
    FOR XML PATH('')  
    ), 1, 1, ''), '') AS BinCode  
 ,ISNULL(STUFF((  
    SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(MAX))  
    FROM tblInvLocBin  
    WHERE tblInvLocBin.lngId IN (  
      SELECT BinId  
      FROM tblWSWIPCompInvBin  
      WHERE tblWSWIPCompInvBin.WIPDocID = tblWSWIPCompDT.WIPDocID  
       AND tblWSWIPCompDT.[LineNo] = tblWSWIPCompInvBin.[LineNo]  
      )  
    FOR XML PATH('')  
    ), 1, 1, ''), '') AS BinId  
 FROM tblWSWIPCompDT  
 INNER JOIN tblInv ON tblWSWIPCompDT.PartNumber = tblInv.strPartNumber  
 LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType  
 INNER JOIN tblWSWIP ON tblWSWIP.WIPDocID = tblWSWIPCompDT.WIPDocID   
 LEFT JOIN tblWSProcessDocDT ON tblWSWIP.JBDocID = tblWSProcessDocDT.ProcessDocID AND tblWSWIPCompDT.PartNumber = tblWSProcessDocDT.PartNumber AND tblWSProcessDocDT.[LineNo] = tblWSWIPCompDT.[LineNo]  
 WHERE tblWSWIPCompDT.WIPDocID = @WIPDocID  
 ORDER BY tblWSWIPCompDT.[LineNo]  
END
GO
/****** Object:  StoredProcedure [dbo].[GetWSWorkInprogressReportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetWSWorkInprogressReportData] (
	@Filter INT
	,--To apply filteration as per radio group selection  
	@StartDate SMALLDATETIME
	,@FinishDate SMALLDATETIME
	,@IsSummary BIT
	,@ItemList NVARCHAR(max)
	,@CustomerList NVARCHAR(MAX)
	,@TechnicianList NVARCHAR(MAX)
	,@JobList NVARCHAR(MAX)
	,@FilterType INT
	,--To get intType as per tblInv table   
	@IsFilterbyOwner BIT
	)
AS
BEGIN
	IF (@IsSummary = 1) --Summary Report  
	BEGIN
		IF (@Filter = 0) --Assets  
		BEGIN
			SELECT JournalDate
				,JBDocID AS JobNumber
				,tblWSWIPCompDT.PartNumber
				,tblInv.strDesc AS [Description]
				,tblInv.intType AS [Type]
				,tblWSWIPCompDT.Location
				,tblWSProcessDocDT.JobQty
				--,(CASE WHEN tblWSProcessDocDT.IsForeign = 0 THEN (tblWSProcessDocDT.QuotedQty * tblWSProcessDocDT.PriceEaExc) ELSE (tblWSProcessDocDT.QuotedQty * tblWSProcessDocDT.PriceEaExcF) END) AS QuotedAmount  
				,SUM(PostQty) - SUM(ReturnQty) AS IssuedQty
				,SUM(PostAmount) AS IssuedAmount
			FROM tblWSWIP
			INNER JOIN tblWSWIPCompDT ON tblWSWIPCompDT.WIPDocID = tblWSWIP.WIPDocID
			INNER JOIN tblInv ON tblWSWIPCompDT.PartNumber = tblInv.strPartNumber
			INNER JOIN tblWSProcessDocDT ON tblWSWIP.JBDocID = tblWSProcessDocDT.ProcessDocID
				AND tblWSWIPCompDT.PartNumber = tblWSProcessDocDT.PartNumber
			INNER JOIN tblInvExt ON tblInvExt.strPartNumber = tblWSWIPCompDT.PartNumber
				AND tblInvExt.strLocName = tblWSWIPCompDT.Location
			INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
			INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
			INNER JOIN tblWSProcessDoc ON tblWSProcessDoc.ProcessDocID = tblWSWIP.JBDocID
			INNER JOIN tblCustomers ON tblCustomers.strCustName = tblWSProcessDoc.CustomerCode
			LEFT JOIN tblSalesPersons ON tblSalesPersons.strSalesName = tblWSProcessDoc.Technician
			LEFT JOIN tblOwners ON tblOwners.OwnerName = tblWSProcessDoc.OwnerCode
			WHERE (
					tblAccounts.intGLNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND CONVERT(DATETIME, tblWSWIP.JournalDate) BETWEEN CONVERT(DATETIME, @StartDate)
					AND CONVERT(DATETIME, @FinishDate)
				AND (
					CASE 
						WHEN (@IsFilterbyOwner = 1)
							THEN (tblOwners.OwnerName)
						ELSE tblCustomers.strCustName
						END
					) IN (
					SELECT *
					FROM fnSplitStringAsTable(@CustomerList, ',')
					)
				AND tblWSWIP.JBDocID IN (
					SELECT *
					FROM fnSplitStringAsTable(@JobList, ',')
					)
				AND tblWSProcessDoc.Technician IN (
					SELECT *
					FROM fnSplitStringAsTable(@TechnicianList, ',')
					)
			GROUP BY JournalDate
				,JBDocID
				,tblWSWIPCompDT.PartNumber
				,tblInv.strDesc
				,tblInv.intType
				,tblWSWIPCompDT.Location
				,tblWSProcessDocDT.JobQty
				,tblWSProcessDocDT.PriceEaExc
				,tblWSProcessDocDT.PriceEaExcF
				,tblWSProcessDocDT.IsForeign
			ORDER BY JBDocID
				,tblWSWIPCompDT.PartNumber
		END
		ELSE IF (@Filter = 1) --Category  
		BEGIN
			SELECT JournalDate
				,JBDocID AS JobNumber
				,tblWSWIPCompDT.PartNumber
				,tblInv.strDesc AS [Description]
				,tblInv.intType AS [Type]
				,tblWSWIPCompDT.Location
				,tblWSProcessDocDT.JobQty
				--,(CASE WHEN tblWSProcessDocDT.IsForeign = 0 THEN (tblWSProcessDocDT.QuotedQty * tblWSProcessDocDT.PriceEaExc) ELSE (tblWSProcessDocDT.QuotedQty * tblWSProcessDocDT.PriceEaExcF) END) AS QuotedAmount  
				,SUM(PostQty) - SUM(ReturnQty) AS IssuedQty
				,SUM(PostAmount) AS IssuedAmount
			FROM tblWSWIP
			INNER JOIN tblWSWIPCompDT ON tblWSWIPCompDT.WIPDocID = tblWSWIP.WIPDocID
			INNER JOIN tblInv ON tblWSWIPCompDT.PartNumber = tblInv.strPartNumber
			INNER JOIN tblWSProcessDocDT ON tblWSWIP.JBDocID = tblWSProcessDocDT.ProcessDocID
				AND tblWSWIPCompDT.PartNumber = tblWSProcessDocDT.PartNumber
			INNER JOIN tblWSProcessDoc ON tblWSProcessDoc.ProcessDocID = tblWSWIP.JBDocID
			INNER JOIN tblCustomers ON tblCustomers.strCustName = tblWSProcessDoc.CustomerCode
			LEFT JOIN tblSalesPersons ON tblSalesPersons.strSalesName = tblWSProcessDoc.Technician
			LEFT JOIN tblOwners ON tblOwners.OwnerName = tblWSProcessDoc.OwnerCode
			WHERE tblInv.strCategory IN (
					SELECT *
					FROM fnSplitStringAsTable(@ItemList, ',')
					)
				AND CONVERT(DATETIME, tblWSWIP.JournalDate) BETWEEN CONVERT(DATETIME, @StartDate)
					AND CONVERT(DATETIME, @FinishDate)
				AND (
					CASE 
						WHEN (@IsFilterbyOwner = 1)
							THEN (tblOwners.OwnerName)
						ELSE tblCustomers.strCustName
						END
					) IN (
					SELECT *
					FROM fnSplitStringAsTable(@CustomerList, ',')
					)
				AND tblWSWIP.JBDocID IN (
					SELECT *
					FROM fnSplitStringAsTable(@JobList, ',')
					)
				AND tblWSProcessDoc.Technician IN (
					SELECT *
					FROM fnSplitStringAsTable(@TechnicianList, ',')
					)
			GROUP BY JournalDate
				,JBDocID
				,tblWSWIPCompDT.PartNumber
				,tblInv.strDesc
				,tblInv.intType
				,tblWSWIPCompDT.Location
				,tblWSProcessDocDT.JobQty
				,tblWSProcessDocDT.PriceEaExc
				,tblWSProcessDocDT.PriceEaExcF
				,tblWSProcessDocDT.IsForeign
			ORDER BY JBDocID
				,tblWSWIPCompDT.PartNumber
		END
		ELSE IF (@Filter = 2) --AccountSets  
		BEGIN
			SELECT JournalDate
				,JBDocID AS JobNumber
				,tblWSWIPCompDT.PartNumber
				,tblInv.strDesc AS [Description]
				,tblInv.intType AS [Type]
				,tblWSWIPCompDT.Location
				,tblWSProcessDocDT.JobQty
				--,(CASE WHEN tblWSProcessDocDT.IsForeign = 0 THEN (tblWSProcessDocDT.QuotedQty * tblWSProcessDocDT.PriceEaExc) ELSE (tblWSProcessDocDT.QuotedQty * tblWSProcessDocDT.PriceEaExcF) END) AS QuotedAmount  
				,SUM(PostQty) - SUM(ReturnQty) AS IssuedQty
				,SUM(PostAmount) AS IssuedAmount
			FROM tblWSWIP
			INNER JOIN tblWSWIPCompDT ON tblWSWIPCompDT.WIPDocID = tblWSWIP.WIPDocID
			INNER JOIN tblInv ON tblWSWIPCompDT.PartNumber = tblInv.strPartNumber
			INNER JOIN tblWSProcessDocDT ON tblWSWIP.JBDocID = tblWSProcessDocDT.ProcessDocID
				AND tblWSWIPCompDT.PartNumber = tblWSProcessDocDT.PartNumber
			INNER JOIN tblWSProcessDoc ON tblWSProcessDoc.ProcessDocID = tblWSWIP.JBDocID
			INNER JOIN tblCustomers ON tblCustomers.strCustName = tblWSProcessDoc.CustomerCode
			LEFT JOIN tblSalesPersons ON tblSalesPersons.strSalesName = tblWSProcessDoc.Technician
			INNER JOIN tblInvExt ON tblInvExt.strPartNumber = tblWSWIPCompDT.PartNumber
				AND tblInvExt.strLocName = tblWSWIPCompDT.Location
			LEFT JOIN tblOwners ON tblOwners.OwnerName = tblWSProcessDoc.OwnerCode
			WHERE (
					tblInvExt.strAcctSet IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND CONVERT(DATETIME, tblWSWIP.JournalDate) BETWEEN CONVERT(DATETIME, @StartDate)
					AND CONVERT(DATETIME, @FinishDate)
				AND (
					CASE 
						WHEN (@IsFilterbyOwner = 1)
							THEN (tblOwners.OwnerName)
						ELSE tblCustomers.strCustName
						END
					) IN (
					SELECT *
					FROM fnSplitStringAsTable(@CustomerList, ',')
					)
				AND tblWSWIP.JBDocID IN (
					SELECT *
					FROM fnSplitStringAsTable(@JobList, ',')
					)
				AND tblWSProcessDoc.Technician IN (
					SELECT *
					FROM fnSplitStringAsTable(@TechnicianList, ',')
					)
			GROUP BY JournalDate
				,JBDocID
				,tblWSWIPCompDT.PartNumber
				,tblInv.strDesc
				,tblInv.intType
				,tblWSWIPCompDT.Location
				,tblWSProcessDocDT.JobQty
				,tblWSProcessDocDT.PriceEaExc
				,tblWSProcessDocDT.PriceEaExcF
				,tblWSProcessDocDT.IsForeign
			ORDER BY JBDocID
				,tblWSWIPCompDT.PartNumber
		END
		ELSE --Items,Service,buyout,All    --@Filter = 6 for ALL  
		BEGIN
			SELECT JournalDate
				,JBDocID AS JobNumber
				,tblWSWIPCompDT.PartNumber
				,tblInv.strDesc AS [Description]
				,tblInv.intType AS [Type]
				,tblWSWIPCompDT.Location
				,tblWSProcessDocDT.JobQty
				--,(CASE WHEN tblWSProcessDocDT.IsForeign = 0 THEN (tblWSProcessDocDT.QuotedQty * tblWSProcessDocDT.PriceEaExc) ELSE (tblWSProcessDocDT.QuotedQty * tblWSProcessDocDT.PriceEaExcF) END) AS QuotedAmount  
				,SUM(PostQty) - SUM(ReturnQty) AS IssuedQty
				,SUM(PostAmount) AS IssuedAmount
			FROM tblWSWIP
			INNER JOIN tblWSWIPCompDT ON tblWSWIPCompDT.WIPDocID = tblWSWIP.WIPDocID
			INNER JOIN tblInv ON tblWSWIPCompDT.PartNumber = tblInv.strPartNumber
			INNER JOIN tblWSProcessDocDT ON tblWSWIP.JBDocID = tblWSProcessDocDT.ProcessDocID
				AND tblWSWIPCompDT.PartNumber = tblWSProcessDocDT.PartNumber
			INNER JOIN tblWSProcessDoc ON tblWSProcessDoc.ProcessDocID = tblWSWIP.JBDocID
			INNER JOIN tblCustomers ON tblCustomers.strCustName = tblWSProcessDoc.CustomerCode
			LEFT JOIN tblSalesPersons ON tblSalesPersons.strSalesName = tblWSProcessDoc.Technician
			LEFT JOIN tblOwners ON tblOwners.OwnerName = tblWSProcessDoc.OwnerCode
			WHERE (
					(
						@Filter <> 6
						AND tblInv.intType = @FilterType
						)
					OR (
						@Filter = 6
						AND tblInv.intType <> @FilterType
						)
					)
				AND tblInv.strPartNumber IN (
					SELECT *
					FROM fnSplitStringAsTable(@ItemList, ',')
					)
				AND CONVERT(DATETIME, tblWSWIP.JournalDate) BETWEEN CONVERT(DATETIME, @StartDate)
					AND CONVERT(DATETIME, @FinishDate)
				AND (
					CASE 
						WHEN (@IsFilterbyOwner = 1)
							THEN (tblOwners.OwnerName)
						ELSE tblCustomers.strCustName
						END
					) IN (
					SELECT *
					FROM fnSplitStringAsTable(@CustomerList, ',')
					)
				AND tblWSWIP.JBDocID IN (
					SELECT *
					FROM fnSplitStringAsTable(@JobList, ',')
					)
				AND tblWSProcessDoc.Technician IN (
					SELECT *
					FROM fnSplitStringAsTable(@TechnicianList, ',')
					)
			GROUP BY JournalDate
				,JBDocID
				,tblWSWIPCompDT.PartNumber
				,tblInv.strDesc
				,tblInv.intType
				,tblWSWIPCompDT.Location
				,tblWSProcessDocDT.JobQty
				,tblWSProcessDocDT.PriceEaExc
				,tblWSProcessDocDT.PriceEaExcF
				,tblWSProcessDocDT.IsForeign
			ORDER BY JBDocID
				,tblWSWIPCompDT.PartNumber
		END
	END
	ELSE --Detail Report  
	BEGIN
		IF (@Filter = 0) --Assets  
		BEGIN
			SELECT JournalDate
				,JBDocID AS JobNumber
				,tblWSWIP.WIPDocID AS WIPNumber
				,tblWSWIPCompDT.PartNumber
				,tblInv.strDesc AS [Description]
				,tblInv.intType AS [Type]
				,tblWSWIPCompDT.Location
				,tblWSProcessDocDT.JobQty
				--,(CASE WHEN tblWSProcessDocDT.IsForeign = 0 THEN (tblWSProcessDocDT.QuotedQty * tblWSProcessDocDT.PriceEaExc) ELSE (tblWSProcessDocDT.QuotedQty * tblWSProcessDocDT.PriceEaExcF) END) AS QuotedAmount  
				,SUM(PostQty) - SUM(ReturnQty) AS IssuedQty
				,SUM(PostAmount) AS IssuedAmount
			FROM tblWSWIP
			INNER JOIN tblWSWIPCompDT ON tblWSWIPCompDT.WIPDocID = tblWSWIP.WIPDocID
			INNER JOIN tblInv ON tblWSWIPCompDT.PartNumber = tblInv.strPartNumber
			INNER JOIN tblWSProcessDocDT ON tblWSWIP.JBDocID = tblWSProcessDocDT.ProcessDocID
				AND tblWSWIPCompDT.PartNumber = tblWSProcessDocDT.PartNumber
			INNER JOIN tblInvExt ON tblInvExt.strPartNumber = tblWSWIPCompDT.PartNumber
				AND tblInvExt.strLocName = tblWSWIPCompDT.Location
			INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
			INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
			INNER JOIN tblWSProcessDoc ON tblWSProcessDoc.ProcessDocID = tblWSWIP.JBDocID
			INNER JOIN tblCustomers ON tblCustomers.strCustName = tblWSProcessDoc.CustomerCode
			LEFT JOIN tblSalesPersons ON tblSalesPersons.strSalesName = tblWSProcessDoc.Technician
			LEFT JOIN tblOwners ON tblOwners.OwnerName = tblWSProcessDoc.OwnerCode
			WHERE (
					tblAccounts.intGLNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND CONVERT(DATETIME, tblWSWIP.JournalDate) BETWEEN CONVERT(DATETIME, @StartDate)
					AND CONVERT(DATETIME, @FinishDate)
				AND (
					CASE 
						WHEN (@IsFilterbyOwner = 1)
							THEN (tblOwners.OwnerName)
						ELSE tblCustomers.strCustName
						END
					) IN (
					SELECT *
					FROM fnSplitStringAsTable(@CustomerList, ',')
					)
				AND tblWSWIP.JBDocID IN (
					SELECT *
					FROM fnSplitStringAsTable(@JobList, ',')
					)
				AND tblWSProcessDoc.Technician IN (
					SELECT *
					FROM fnSplitStringAsTable(@TechnicianList, ',')
					)
			GROUP BY JournalDate
				,JBDocID
				,tblWSWIPCompDT.PartNumber
				,tblInv.strDesc
				,tblInv.intType
				,tblWSWIPCompDT.Location
				,tblWSProcessDocDT.JobQty
				,tblWSProcessDocDT.PriceEaExc
				,tblWSProcessDocDT.PriceEaExcF
				,tblWSWIP.WIPDocID
				,tblWSProcessDocDT.IsForeign
			ORDER BY JBDocID
				,tblWSWIP.WIPDocID
				,tblWSWIPCompDT.PartNumber
		END
		ELSE IF (@Filter = 1) --Category  
		BEGIN
			SELECT JournalDate
				,JBDocID AS JobNumber
				,tblWSWIP.WIPDocID AS WIPNumber
				,tblWSWIPCompDT.PartNumber
				,tblInv.strDesc AS [Description]
				,tblInv.intType AS [Type]
				,tblWSWIPCompDT.Location
				,tblWSProcessDocDT.JobQty
				--,(CASE WHEN tblWSProcessDocDT.IsForeign = 0 THEN (tblWSProcessDocDT.QuotedQty * tblWSProcessDocDT.PriceEaExc) ELSE (tblWSProcessDocDT.QuotedQty * tblWSProcessDocDT.PriceEaExcF) END) AS QuotedAmount  
				,SUM(PostQty) - SUM(ReturnQty) AS IssuedQty
				,SUM(PostAmount) AS IssuedAmount
			FROM tblWSWIP
			INNER JOIN tblWSWIPCompDT ON tblWSWIPCompDT.WIPDocID = tblWSWIP.WIPDocID
			INNER JOIN tblInv ON tblWSWIPCompDT.PartNumber = tblInv.strPartNumber
			INNER JOIN tblWSProcessDocDT ON tblWSWIP.JBDocID = tblWSProcessDocDT.ProcessDocID
				AND tblWSWIPCompDT.PartNumber = tblWSProcessDocDT.PartNumber
			INNER JOIN tblWSProcessDoc ON tblWSProcessDoc.ProcessDocID = tblWSWIP.JBDocID
			INNER JOIN tblCustomers ON tblCustomers.strCustName = tblWSProcessDoc.CustomerCode
			LEFT JOIN tblSalesPersons ON tblSalesPersons.strSalesName = tblWSProcessDoc.Technician
			LEFT JOIN tblOwners ON tblOwners.OwnerName = tblWSProcessDoc.OwnerCode
			WHERE tblInv.strCategory IN (
					SELECT *
					FROM fnSplitStringAsTable(@ItemList, ',')
					)
				AND CONVERT(DATETIME, tblWSWIP.JournalDate) BETWEEN CONVERT(DATETIME, @StartDate)
					AND CONVERT(DATETIME, @FinishDate)
				AND (
					CASE 
						WHEN (@IsFilterbyOwner = 1)
							THEN (tblOwners.OwnerName)
						ELSE tblCustomers.strCustName
						END
					) IN (
					SELECT *
					FROM fnSplitStringAsTable(@CustomerList, ',')
					)
				AND tblWSWIP.JBDocID IN (
					SELECT *
					FROM fnSplitStringAsTable(@JobList, ',')
					)
				AND tblWSProcessDoc.Technician IN (
					SELECT *
					FROM fnSplitStringAsTable(@TechnicianList, ',')
					)
			GROUP BY JournalDate
				,JBDocID
				,tblWSWIPCompDT.PartNumber
				,tblInv.strDesc
				,tblInv.intType
				,tblWSWIPCompDT.Location
				,tblWSProcessDocDT.JobQty
				,tblWSProcessDocDT.PriceEaExc
				,tblWSProcessDocDT.PriceEaExcF
				,tblWSWIP.WIPDocID
				,tblWSProcessDocDT.IsForeign
			ORDER BY JBDocID
				,tblWSWIP.WIPDocID
				,tblWSWIPCompDT.PartNumber
		END
		ELSE IF (@Filter = 2) --AccountSets  
		BEGIN
			SELECT JournalDate
				,JBDocID AS JobNumber
				,tblWSWIP.WIPDocID AS WIPNumber
				,tblWSWIPCompDT.PartNumber
				,tblInv.strDesc AS [Description]
				,tblInv.intType AS [Type]
				,tblWSWIPCompDT.Location
				,tblWSProcessDocDT.JobQty
				--,(CASE WHEN tblWSProcessDocDT.IsForeign = 0 THEN (tblWSProcessDocDT.QuotedQty * tblWSProcessDocDT.PriceEaExc) ELSE (tblWSProcessDocDT.QuotedQty * tblWSProcessDocDT.PriceEaExcF) END) AS QuotedAmount  
				,SUM(PostQty) - SUM(ReturnQty) AS IssuedQty
				,SUM(PostAmount) AS IssuedAmount
			FROM tblWSWIP
			INNER JOIN tblWSWIPCompDT ON tblWSWIPCompDT.WIPDocID = tblWSWIP.WIPDocID
			INNER JOIN tblInv ON tblWSWIPCompDT.PartNumber = tblInv.strPartNumber
			INNER JOIN tblWSProcessDocDT ON tblWSWIP.JBDocID = tblWSProcessDocDT.ProcessDocID
				AND tblWSWIPCompDT.PartNumber = tblWSProcessDocDT.PartNumber
			INNER JOIN tblWSProcessDoc ON tblWSProcessDoc.ProcessDocID = tblWSWIP.JBDocID
			INNER JOIN tblCustomers ON tblCustomers.strCustName = tblWSProcessDoc.CustomerCode
			LEFT JOIN tblSalesPersons ON tblSalesPersons.strSalesName = tblWSProcessDoc.Technician
			INNER JOIN tblInvExt ON tblInvExt.strPartNumber = tblWSWIPCompDT.PartNumber
				AND tblInvExt.strLocName = tblWSWIPCompDT.Location
			LEFT JOIN tblOwners ON tblOwners.OwnerName = tblWSProcessDoc.OwnerCode
			WHERE (
					tblInvExt.strAcctSet IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND CONVERT(DATETIME, tblWSWIP.JournalDate) BETWEEN CONVERT(DATETIME, @StartDate)
					AND CONVERT(DATETIME, @FinishDate)
				AND (
					CASE 
						WHEN (@IsFilterbyOwner = 1)
							THEN (tblOwners.OwnerName)
						ELSE tblCustomers.strCustName
						END
					) IN (
					SELECT *
					FROM fnSplitStringAsTable(@CustomerList, ',')
					)
				AND tblWSWIP.JBDocID IN (
					SELECT *
					FROM fnSplitStringAsTable(@JobList, ',')
					)
				AND tblWSProcessDoc.Technician IN (
					SELECT *
					FROM fnSplitStringAsTable(@TechnicianList, ',')
					)
			GROUP BY JournalDate
				,JBDocID
				,tblWSWIPCompDT.PartNumber
				,tblInv.strDesc
				,tblInv.intType
				,tblWSWIPCompDT.Location
				,tblWSProcessDocDT.JobQty
				,tblWSProcessDocDT.PriceEaExc
				,tblWSProcessDocDT.PriceEaExcF
				,tblWSWIP.WIPDocID
				,tblWSProcessDocDT.IsForeign
			ORDER BY JBDocID
				,tblWSWIP.WIPDocID
				,tblWSWIPCompDT.PartNumber
		END
		ELSE --Items,Service,buyout,All    --@Filter = 6 for ALL  
		BEGIN
			SELECT JournalDate
				,JBDocID AS JobNumber
				,tblWSWIP.WIPDocID AS WIPNumber
				,tblWSWIPCompDT.PartNumber
				,tblInv.strDesc AS [Description]
				,tblInv.intType AS [Type]
				,tblWSWIPCompDT.Location
				,tblWSProcessDocDT.JobQty
				--,(CASE WHEN tblWSProcessDocDT.IsForeign = 0 THEN (tblWSProcessDocDT.QuotedQty * tblWSProcessDocDT.PriceEaExc) ELSE (tblWSProcessDocDT.QuotedQty * tblWSProcessDocDT.PriceEaExcF) END) AS QuotedAmount  
				,SUM(PostQty) - SUM(ReturnQty) AS IssuedQty
				,SUM(PostAmount) AS IssuedAmount
			FROM tblWSWIP
			INNER JOIN tblWSWIPCompDT ON tblWSWIPCompDT.WIPDocID = tblWSWIP.WIPDocID
			INNER JOIN tblInv ON tblWSWIPCompDT.PartNumber = tblInv.strPartNumber
			INNER JOIN tblWSProcessDocDT ON tblWSWIP.JBDocID = tblWSProcessDocDT.ProcessDocID
				AND tblWSWIPCompDT.PartNumber = tblWSProcessDocDT.PartNumber
			INNER JOIN tblWSProcessDoc ON tblWSProcessDoc.ProcessDocID = tblWSWIP.JBDocID
			INNER JOIN tblCustomers ON tblCustomers.strCustName = tblWSProcessDoc.CustomerCode
			LEFT JOIN tblSalesPersons ON tblSalesPersons.strSalesName = tblWSProcessDoc.Technician
			LEFT JOIN tblOwners ON tblOwners.OwnerName = tblWSProcessDoc.OwnerCode
			WHERE (
					(
						@Filter <> 6
						AND tblInv.intType = @FilterType
						)
					OR (
						@Filter = 6
						AND tblInv.intType <> @FilterType
						)
					)
				AND tblInv.strPartNumber IN (
					SELECT *
					FROM fnSplitStringAsTable(@ItemList, ',')
					)
				AND CONVERT(DATETIME, tblWSWIP.JournalDate) BETWEEN CONVERT(DATETIME, @StartDate)
					AND CONVERT(DATETIME, @FinishDate)
				AND (
					CASE 
						WHEN (@IsFilterbyOwner = 1)
							THEN (tblOwners.OwnerName)
						ELSE tblCustomers.strCustName
						END
					) IN (
					SELECT *
					FROM fnSplitStringAsTable(@CustomerList, ',')
					)
				AND tblWSWIP.JBDocID IN (
					SELECT *
					FROM fnSplitStringAsTable(@JobList, ',')
					)
				AND tblWSProcessDoc.Technician IN (
					SELECT *
					FROM fnSplitStringAsTable(@TechnicianList, ',')
					)
			GROUP BY JournalDate
				,JBDocID
				,tblWSWIPCompDT.PartNumber
				,tblInv.strDesc
				,tblInv.intType
				,tblWSWIPCompDT.Location
				,tblWSProcessDocDT.JobQty
				,tblWSProcessDocDT.PriceEaExc
				,tblWSProcessDocDT.PriceEaExcF
				,tblWSWIP.WIPDocID
				,tblWSProcessDocDT.IsForeign
			ORDER BY JBDocID
				,tblWSWIP.WIPDocID
				,tblWSWIPCompDT.PartNumber
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[GLSecurityAccountsList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GLSecurityAccountsList]
AS
SET NOCOUNT ON;
SELECT DISTINCT tblAccountsSec.intGLNumber 'GLNumber', tblAccounts.strDesc 'Desc' FROM tblAccounts 
INNER JOIN tblAccountsSec ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber 
ORDER BY tblAccountsSec.intGLNumber
GO
/****** Object:  StoredProcedure [dbo].[ImportAccounts]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ImportAccounts] (
	@GLNumber AS NVARCHAR(50)
	,@Desc AS NVARCHAR(200)
	,@Type AS INT
	,@GroupCode AS INT
	,@Class AS INT
	,@IsInactive AS BIT
	,@IsBank AS BIT
	,@Field1 AS NVARCHAR(100)
	,@Field2 AS NVARCHAR(100)
	,@Field3 AS NVARCHAR(100)
	,@Field4 AS NVARCHAR(100)
	,@Field5 AS NVARCHAR(100)
	,@Field6 AS NVARCHAR(100)
	,@RevenueCode AS INT
	,@HomeCurrency AS NVARCHAR(3)
	,@Period1 AS MONEY
	,@Period2 AS MONEY
	,@Period3 AS MONEY
	,@Period4 AS MONEY
	,@Period5 AS MONEY
	,@Period6 AS MONEY
	,@Period7 AS MONEY
	,@Period8 AS MONEY
	,@Period9 AS MONEY
	,@Period10 AS MONEY
	,@Period11 AS MONEY
	,@Period12 AS MONEY
	,@IsBudget AS BIT
	)
AS
BEGIN
	BEGIN TRY
		DECLARE @ERR_MSG AS NVARCHAR(4000)
			,@Err_Severity INT
			,@ERR_STA AS SMALLINT
		DECLARE @IsAllowCenters AS BIT = NULL
		DECLARE @AccRevenueFrom AS INT;

		WITH cte
		AS (
			SELECT (
					ROW_NUMBER() OVER (
						ORDER BY tblAccountsLegend.intAccType
						)
					) AS row
				,intGLNumberFrom
			FROM tblAccountsLegend
			)
		SELECT @AccRevenueFrom = intGLNumberFrom
		FROM cte
		WHERE row = 4

		DECLARE @SUBGL AS INT

		SELECT TOP (1) @SUBGL = [Value]
		FROM [dbo].[fnSplitStringAsTable](@GLNumber, '-')

		SET @IsAllowCenters = CASE 
				WHEN @SUBGL > @AccRevenueFrom
					THEN 1
				ELSE 0
				END

		DECLARE @IsInsert AS BIT = 0
		IF EXISTS (SELECT * FROM tblAccounts with (updlock,serializable) WHERE intGLNumber = @GLNumber)
		BEGIN
			UPDATE tblAccounts
			SET strDesc = @Desc,
				intGroupCode = @GroupCode,
				intAccClass = @Class,
				bitBudget = @IsBudget,
				strField1 = @Field1,
				strField2 = @Field2,
				strField3 = @Field3,
				strField4 = @Field4,
				strField5 = @Field5,
				strField6 = @Field6,
				bitInactive = @IsInactive
			WHERE intGLNumber = @GLNumber
		END
		ELSE
		BEGIN
			INSERT INTO tblAccounts
			VALUES (
				@GLNumber
				,@Desc
				,@Type
				,@GroupCode
				,@Class
				,@IsInactive
				,0
				,0
				,0
				,0
				,@IsBank
				,0
				,0
				,@IsBudget
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,@Field1
				,@Field2
				,@Field3
				,@Field4
				,@Field5
				,@Field6
				,0
				,@IsAllowCenters
				,1
				,@HomeCurrency
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,GETDATE()
				,0
				,0
				,0
				,0
				)
			SET @IsInsert = 1
		END

		----Budget Info----
		IF @IsBudget = 1
		BEGIN
			IF EXISTS (SELECT * FROM tblAcctBudgets with (updlock,serializable) WHERE intGLNumber = @GLNumber)
			BEGIN
				UPDATE tblAcctBudgets
				SET decPeriod1 = @Period1,
					decPeriod2 = @Period2,
					decPeriod3 = @Period3,
					decPeriod4 = @Period4,
					decPeriod5 = @Period5,
					decPeriod6 = @Period6,
					decPeriod7 = @Period7,
					decPeriod8 = @Period8,
					decPeriod9 = @Period9,
					decPeriod10 = @Period10,
					decPeriod11 = @Period11,
					decPeriod12 = @Period12
				WHERE intGLNumber = @GLNumber
			END
			ELSE
			BEGIN
				INSERT INTO tblAcctBudgets
					(intGLNumber
					,decPeriod1
					,decPeriod2
					,decPeriod3
					,decPeriod4
					,decPeriod5
					,decPeriod6
					,decPeriod7
					,decPeriod8
					,decPeriod9
					,decPeriod10
					,decPeriod11
					,decPeriod12)
				VALUES
					(@GLNumber
					,@Period1
					,@Period2
					,@Period3
					,@Period4
					,@Period5
					,@Period6
					,@Period7
					,@Period8
					,@Period9
					,@Period10
					,@Period11
					,@Period12)
			END
		END
		ELSE
		BEGIN
			IF EXISTS (SELECT * FROM tblAcctBudgets with (updlock,serializable) WHERE intGLNumber = @GLNumber)
			BEGIN
				DELETE FROM tblAcctBudgets WHERE intGLNumber = @GLNumber
			END
		END

		----Insert new Account into AccountsLY----
		DECLARE @AccLYCount AS INT

		SELECT @AccLYCount = COUNT(intGLNumber)
		FROM tblAccountsLY
		WHERE intGLNumber = @GLNumber

		IF @AccLYCount = 0
		BEGIN
			INSERT INTO tblAccountsLY
			SELECT intGLNumber
				,strDesc
				,intAccType
				,intGroupCode
				,intAccClass
				,bitInactive
				,0
				,0
				,0
				,0
				,bitBank
				,bitRecon
				,bitInventory
				,bitBudget
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,strField1
				,strField2
				,strField3
				,strField4
				,strField5
				,strField6
				,0
				,bitAllowCenters
				,intCheqNumber
				,strCurrency
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
				,0
			FROM tblAccounts
			WHERE intGLNumber = @GLNumber
		END

		----Insert new Account into AccountsHist----
		DECLARE @YearID AS UNIQUEIDENTIFIER
		DECLARE @AccHistCount AS INT

		--START YEAR CURSOR--
		DECLARE @Year_CUR CURSOR SET @Year_CUR = CURSOR
		FOR
		SELECT uidYearID
		FROM tblAcctHist

		OPEN @Year_CUR

		FETCH NEXT
		FROM @Year_CUR
		INTO @YearID

		WHILE @@FETCH_STATUS = 0
		BEGIN
			SELECT @AccHistCount = COUNT(intGLNumber)
			FROM tblAccountsHist
			WHERE uidYearID = @YearID
				AND intGLNumber = @GLNumber

			IF @AccHistCount = 0
			BEGIN
				INSERT INTO tblAccountsHist
				SELECT @YearID
					,intGLNumber
					,strDesc
					,intAccType
					,intGroupCode
					,intAccClass
					,bitInactive
					,0
					,0
					,0
					,0
					,bitBank
					,bitRecon
					,bitInventory
					,bitBudget
					,0
					,0
					,0
					,0
					,0
					,0
					,0
					,0
					,0
					,0
					,0
					,0
					,0
					,0
					,strField1
					,strField2
					,strField3
					,strField4
					,strField5
					,strField6
					,0
					,bitAllowCenters
					,intCheqNumber
					,strCurrency
					,0
					,0
					,0
					,0
					,0
					,0
					,0
					,0
					,0
					,0
					,0
					,0
					,0
					,0
					,0
				FROM tblAccounts
				WHERE intGLNumber = @GLNumber
			END

			FETCH NEXT
			FROM @Year_CUR
			INTO @YearID
		END

		CLOSE @Year_CUR

		DEALLOCATE @Year_CUR

		--END YEAR CURSOR--
		DECLARE @GLSegment AS NVARCHAR(50)
		DECLARE @SegmentCount AS INT
		DECLARE @SegmentId AS INT = 1

		--START GLSegment CURSOR--
		DECLARE @GLSegment_CUR CURSOR SET @GLSegment_CUR = CURSOR
		FOR
		SELECT [Value]
		FROM [dbo].[fnSplitStringAsTable](@GLNumber, '-')

		OPEN @GLSegment_CUR

		FETCH NEXT
		FROM @GLSegment_CUR
		INTO @GLSegment

		WHILE @@FETCH_STATUS = 0
		BEGIN
			SELECT @SegmentCount = COUNT(strCode)
			FROM tblGLSegmentSetup
			WHERE strCode = @GLSegment

			IF (@SegmentCount = 0)
			BEGIN
				IF (@SegmentId = 1)
				BEGIN
					INSERT INTO tblGLSegmentSetup (
						intSegmentId
						,strCode
						,strDescription
						,bitIsPrimary
						,intAccType
						,intAccClass
						,intGroupCode
						)
					VALUES (
						@SegmentId
						,@GLSegment
						,@Desc
						,0
						,@Type
						,@Class
						,@GroupCode
						)
				END
				ELSE
				BEGIN
					INSERT INTO tblGLSegmentSetup (
						intSegmentId
						,strCode
						,strDescription
						,bitIsPrimary
						,intAccType
						,intAccClass
						,intGroupCode
						)
					VALUES (
						@SegmentId
						,@GLSegment
						,''
						,0
						,NULL
						,NULL
						,@GroupCode
						)
				END
			END
			ELSE
			BEGIN
				UPDATE tblGLSegmentSetup
				SET strDescription = @Desc,
					intGroupCode = @GroupCode,
					intAccClass = @Class
				WHERE strCode = @GLSegment
			END

			SET @SegmentId += 1

			FETCH NEXT
			FROM @GLSegment_CUR
			INTO @GLSegment
		END

		CLOSE @GLSegment_CUR

		DEALLOCATE @GLSegment_CUR

		--END GLSegment CURSOR--
		--SELECT 'Success'
		SELECT CONCAT('Success: ' , @IsInsert)
	END TRY

	BEGIN CATCH
		IF ERROR_NUMBER() = 2627
		BEGIN
			PRINT 'merr'

			ROLLBACK TRANSACTION

			SET @ERR_MSG = 'Error 2627: '

			SELECT @ERR_MSG
		END
		ELSE IF ERROR_NUMBER() = 8152
		BEGIN
			ROLLBACK TRANSACTION

			SET @ERR_MSG = 'Error 8152: '

			SELECT @ERR_MSG
		END
		ELSE
		BEGIN
			SELECT @ERR_MSG = ERROR_MESSAGE()
				,@Err_Severity = ERROR_SEVERITY()
				,@ERR_STA = ERROR_STATE()

			ROLLBACK TRANSACTION

			RAISERROR (
					@ERR_MSG
					,@Err_Severity
					,@ERR_STA
					);
		END
	END CATCH
END
GO
/****** Object:  StoredProcedure [dbo].[ImportAssets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportAssets]
(
@AssetCode AS NVARCHAR(20),
@AssetDesc AS NVARCHAR(100),
@AssetTypeCode AS NVARCHAR(20),
@CenterID AS UNIQUEIDENTIFIER,
@ProjNumber AS NVARCHAR(50),
@Quantity AS MONEY=0,
@DepreciateFrom AS DATE,
@SerialNumber AS NVARCHAR(100),
@TagNumber AS NVARCHAR(100),
@DisposalDate AS DATE,
@DisposalCode AS NVARCHAR(20),
@DisposalAmount AS MONEY=0,
@VendNumber AS NVARCHAR(50),
@PurchaseDate AS DATE,
@FinanceMethod AS NVARCHAR(100),
@Rate AS MONEY=0,
@Period AS INT,
@AccNumber AS NVARCHAR(50),
@CapexOrder AS NVARCHAR(50),
@PurchasePrice AS MONEY=0,
@ResidualValue AS MONEY=0, 
@InsuredValue AS MONEY=0,
@SalvageValue AS MONEY=0,
@ReplacementValue AS MONEY=0,
@LastDeprecationDate AS DATETIME,
@RemainingValue AS MONEY=0,
@Field1 AS NVARCHAR(100),
@Field2 AS NVARCHAR(100),
@Field3 AS NVARCHAR(100),
@Field4 AS NVARCHAR(100),
@Field5 AS NVARCHAR(100),
@Field6 AS NVARCHAR(100),
@Field7 AS NVARCHAR(100),
@Field8 AS NVARCHAR(100),
@Field9 AS NVARCHAR(100),
@Field10 AS NVARCHAR(100),
@Field11 AS NVARCHAR(100),
@Field12 AS NVARCHAR(100),
@Notes AS NVARCHAR(MAX),
@IsInactive AS BIT,
@IsSubAsset AS BIT,
@JourID AS BIGINT,
@RevaluationValue AS MONEY=0,
@IsRevaluationValueActive AS BIT,
@ProfitOrLossOnSale AS MONEY=0,
@OpeningAccumulatedDepreciation1 AS MONEY=0,
@OpeningAccumulatedDepreciation2 AS MONEY=0,
@OpeningAccumulatedDepreciation3 AS MONEY=0,
@OpeningAccumulatedDepreciation4 AS MONEY=0,
@OpeningAccumulatedDepreciation5 AS MONEY=0,
@BarCode AS NVARCHAR(300),
@VendorInvoiceNumber AS NVARCHAR(50),
@DepreciationCode1 AS NVARCHAR(20),
@DepreciationCode2 AS NVARCHAR(20),
@DepreciationCode3 AS NVARCHAR(20),
@DepreciationCode4 AS NVARCHAR(20),
@DepreciationCode5 AS NVARCHAR(20),
@DepreciableValue AS MONEY=0
)

AS
BEGIN
	
	BEGIN TRY
	
	DECLARE @ERR_MSG AS NVARCHAR(4000), @Err_Severity INT,@ERR_STA AS SMALLINT

	DECLARE @IsInsert AS BIT = 0

	UPDATE tblAssets SET strAssetDesc = @AssetDesc, strAssetTypeCode = @AssetTypeCode, uidCenterID = @CenterID,  strProjNumber = @ProjNumber, decQuantity = @Quantity, dteDepreciateFrom = @DepreciateFrom, strSerialNumber = @SerialNumber, strTagNumber = @TagNumber, dteDisposalDate = @DisposalDate, strDisposalCode = @DisposalCode, decDisposalAmount = @DisposalAmount, strVendNumber = @VendNumber, dtePurchaseDate = @PurchaseDate, strFinanceMethod = @FinanceMethod, decIntRate = @Rate, intPeriod = @Period, strAccNumber = @AccNumber, strCapexOrder = @CapexOrder, decPurchasePrice = @PurchasePrice, decResidualValue = @ResidualValue, decInsuredValue = @InsuredValue, decSalvageValue = @SalvageValue, decReplacementValue = @ReplacementValue, decDepreciableValue = @DepreciableValue, dteLastDeprecationDate = @LastDeprecationDate, decRemainingValue = @RemainingValue, strField1 = @Field1, strField2 = @Field2, strField3 = @Field3, strField4 = @Field4, strField5 = @Field5, strField6 = @Field6, strField7 = @Field7,strField8 = @Field8,strField9 = @Field9,strField10 = @Field10,strField11 = @Field11,strField12 = @Field12, strNotes = @Notes, bitInactive = @IsInactive, bitIsSubAsset = @IsSubAsset, lngJourID = @JourID, decRevaluationValue = @RevaluationValue, bitIsRevaluationValueActive = @IsRevaluationValueActive, decProfitOrLossOnSale = @ProfitOrLossOnSale, decOpeningAccumulatedDepreciation1 = @OpeningAccumulatedDepreciation1, decOpeningAccumulatedDepreciation2 = @OpeningAccumulatedDepreciation2, decOpeningAccumulatedDepreciation3 = @OpeningAccumulatedDepreciation3, decOpeningAccumulatedDepreciation4 = @OpeningAccumulatedDepreciation4, decOpeningAccumulatedDepreciation5 = @OpeningAccumulatedDepreciation5, strBarCode = @BarCode, strVendorInvoiceNumber = @VendorInvoiceNumber, strDepreciationCode1 = @DepreciationCode1 , strDepreciationCode2 = @DepreciationCode2, strDepreciationCode3 = @DepreciationCode3, strDepreciationCode4 = @DepreciationCode4, strDepreciationCode5 = @DepreciationCode5
    WHERE (strAssetCode = @AssetCode)

	IF @@ROWCOUNT = 0
	BEGIN 

		INSERT INTO tblAssets VALUES (@AssetCode, @AssetDesc, @AssetTypeCode, NULL, @ProjNumber, @Quantity, @DepreciateFrom, @SerialNumber, @TagNumber, NULL, NULL, 0, @VendNumber, @PurchaseDate, @FinanceMethod, @Rate, @Period, @AccNumber, @CapexOrder, @PurchasePrice, @ResidualValue, @InsuredValue, @SalvageValue, @ReplacementValue, @DepreciableValue, NULL, NULL, @Field1, @Field2, @Field3, @Field4, @Field5, @Field6, @Field7, @Field8, @Field9, @Field10, @Field11, @Field12, @Notes, @isInactive, @IsSubAsset, NULL, @RevaluationValue, @IsRevaluationValueActive, @ProfitOrLossOnSale, @OpeningAccumulatedDepreciation1, @OpeningAccumulatedDepreciation2, @OpeningAccumulatedDepreciation3, @OpeningAccumulatedDepreciation4, @OpeningAccumulatedDepreciation5, @BarCode, @VendorInvoiceNumber, @DepreciationCode1, @DepreciationCode2, @DepreciationCode3, @DepreciationCode4, @DepreciationCode5, NULL)

		SET @IsInsert = 1

	END	

		SELECT CONCAT('Success: ' , @IsInsert)

	END TRY

	BEGIN CATCH

		IF ERROR_NUMBER()= 547
			BEGIN 
				SET @ERR_MSG = 'Error 547: '
				SELECT @ERR_MSG
			END
		ELSE IF ERROR_NUMBER()= 8152
				BEGIN
					SET @ERR_MSG= 'Error 8152: '
					SELECT @ERR_MSG
				END
		ELSE
			BEGIN
				SELECT @ERR_MSG = ERROR_MESSAGE(), @Err_Severity = ERROR_SEVERITY(), @ERR_STA = ERROR_STATE()		
				RAISERROR (@ERR_MSG, @Err_Severity, @ERR_STA);
			END
	
	END CATCH
   
END
GO
/****** Object:  StoredProcedure [dbo].[ImportCurrencyCode]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportCurrencyCode]
(
	@strCurrency NVARCHAR(3)
)
AS
INSERT INTO tblCurrency
SELECT *
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,'00:00:00'
	,GETDATE()
	,0
	,0
	,'00:00:00.0000000'
FROM tblCurrencyDict
WHERE tblCurrencyDict.strCurrency = @strCurrency
GO
/****** Object:  StoredProcedure [dbo].[ImportCustomerContacts]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [VendorContactsGet] ***********/

/*********** Start [ImportCustomerContacts] ***********/

CREATE PROCEDURE [dbo].[ImportCustomerContacts]
(
	@tblData AS ContactsTableType READONLY
)
AS
BEGIN
	BEGIN TRY

		DECLARE @ERR_MSG AS NVARCHAR(4000), @Err_Severity INT, @ERR_STA AS SMALLINT
	
		BEGIN TRAN	

			DECLARE @UpdateCount AS INT = 0
			DECLARE @InsertCount AS INT = 0
			DECLARE @RowNumber AS INT = 0

			DECLARE @Name AS NVARCHAR(200) = NULL	
			DECLARE @CustName AS NVARCHAR(50) = NULL				
			DECLARE @JobTitle AS NVARCHAR(150) = NULL	
			DECLARE @Email AS NVARCHAR(150) = NULL	
			DECLARE @Telephone AS NVARCHAR(50) = NULL	
			DECLARE @Fax AS NVARCHAR(50) = NULL	
			DECLARE @CellPhone AS NVARCHAR(50) = NULL	
			DECLARE @Street1 AS NVARCHAR(100) = NULL	
			DECLARE @Street2 AS NVARCHAR(100) = NULL	
			DECLARE @City AS NVARCHAR(50) = NULL	
			DECLARE @Province AS NVARCHAR(50) = NULL	
			DECLARE @Postal AS NVARCHAR(20) = NULL	
			DECLARE @Notes AS NVARCHAR(MAX) = NULL	
			DECLARE @Facebook AS NVARCHAR(50) = NULL
			DECLARE @LinkedIn AS NVARCHAR(50) = NULL
			DECLARE @Skype AS NVARCHAR(50) = NULL

			DECLARE @JobTitleId AS BIGINT = NULL

			--START CURSOR--

			DECLARE @Item_CUR CURSOR
			SET @Item_CUR = CURSOR FOR SELECT * FROM @tblData 
			OPEN @Item_CUR   
			FETCH NEXT FROM @Item_CUR
			INTO @Name, @CustName, @JobTitle, @Email, @Telephone, @Fax, @CellPhone, @Street1, @Street2, @City, @Province, @Postal, @Notes, @Facebook, @LinkedIn, @Skype
			
			WHILE @@FETCH_STATUS = 0
			BEGIN
			
				SET @RowNumber += 1
				
				
				--GET JOB TITLE ID. CREATE NEW IF JOB TITLE DOES NOT EXIST

				SELECT @JobTitleId = [lngID] FROM [tblJobTitles] WHERE [strJobTitle] = @JobTitle
				IF(@@ROWCOUNT =0)
				BEGIN
					INSERT INTO tblJobTitles VALUES (@JobTitle); 
					SELECT @JobTitleId = @@IDENTITY
				END
				
								
				UPDATE tblCustomerContacts SET [intJobTitle] = @JobTitleId,[strEmail] = @Email,[strTel] = @Telephone,[strFax] = @Fax,[strCell] = @CellPhone,[strStreet1] = @Street1,[strStreet2] = @Street2,[strCity] = @City,[strProvince] = @Province,[strPostal] = @Postal,[strNotes] = @Notes,[strFacebook] = @Facebook,[strLinkedIn] = @LinkedIn,[strSkype] = @Skype WHERE [strName] = @Name AND [strCustName] = @CustName
				
				
				IF @@ROWCOUNT = 0
				BEGIN

					INSERT INTO tblCustomerContacts ([strName],[strCustName],[intJobTitle],[strEmail],[strTel],[strFax],[strCell],[strStreet1],[strStreet2],[strCity],[strProvince],[strPostal],[strNotes],[strFacebook],[strLinkedIn],[strSkype]) VALUES(@Name,@CustName,@JobTitleId,@Email,@Telephone,@Fax,@CellPhone,@Street1,@Street2,@City,@Province,@Postal,@Notes,@Facebook,@LinkedIn,@Skype)

					SET @InsertCount +=1

				END
				ELSE 
				BEGIN 
					SET @UpdateCount +=1
				END					

			FETCH NEXT FROM @Item_CUR
			INTO @Name, @CustName, @JobTitle, @Email, @Telephone, @Fax, @CellPhone, @Street1, @Street2, @City, @Province, @Postal, @Notes, @Facebook, @LinkedIn, @Skype

			END

			CLOSE @Item_CUR
			DEALLOCATE @Item_CUR

			--END CURSOR--
						
			
			COMMIT TRAN

			SELECT CONCAT('Success: ', @InsertCount)

	END TRY

	BEGIN CATCH

		IF ERROR_NUMBER() = 547
			BEGIN	
				ROLLBACK TRAN
				SET @ERR_MSG = CONCAT('Error 547: ', @RowNumber)
				SELECT @ERR_MSG
	
			END
		ELSE IF ERROR_NUMBER() = 8152
			BEGIN					
				ROLLBACK TRAN
				SET @ERR_MSG = CONCAT('Error 8152: ',@RowNumber)
				SELECT @ERR_MSG	
			END
		ELSE
			BEGIN			
				SELECT @ERR_MSG = ERROR_MESSAGE(),  @Err_Severity = ERROR_SEVERITY() , @ERR_STA = ERROR_STATE()								
				ROLLBACK TRAN	
				RAISERROR (@ERR_MSG, @Err_Severity, @ERR_STA);
			END				
		
	END CATCH	

END
GO
/****** Object:  StoredProcedure [dbo].[ImportCustomerItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [CustomerItemsGet] (Control panel) **********/

/********* Start [ImportCustomerItems] (Control panel) **********/

CREATE PROCEDURE [dbo].[ImportCustomerItems] (
	@ItemCode AS NVARCHAR(100)
	,@ItemDesc AS NVARCHAR(1000)
	,@PartNumber AS NVARCHAR(100)
	,@CustName AS NVARCHAR(100)
	)
AS
BEGIN
	BEGIN TRY
		DECLARE @ERR_MSG AS NVARCHAR(4000)
			,@Err_Severity INT
			,@ERR_STA AS SMALLINT;
		DECLARE @IsInsert AS BIT = 0;

		UPDATE tblInvCustomer
		SET strItemCode = @ItemCode
			,strItemDesc = @ItemDesc
		WHERE strPartNumber = @PartNumber
			AND strCustName = @CustName;

		IF @@ROWCOUNT = 0
		BEGIN
			INSERT INTO tblInvCustomer (
				strPartNumber
				,strCustName
				,strItemCode
				,strItemDesc
				)
			VALUES (
				@PartNumber
				,@CustName
				,@ItemCode
				,@ItemDesc
				);

			SET @IsInsert = 1;
		END;

		SELECT CONCAT (
				'Success: '
				,@IsInsert
				);
	END TRY

	BEGIN CATCH
		IF ERROR_NUMBER() = 547
		BEGIN
			SET @ERR_MSG = 'Error 547: ';

			SELECT @ERR_MSG;
		END;
		ELSE IF ERROR_NUMBER() = 8152
		BEGIN
			SET @ERR_MSG = 'Error 8152: ';

			SELECT @ERR_MSG;
		END;
		ELSE
		BEGIN
			SELECT @ERR_MSG = ERROR_MESSAGE()
				,@Err_Severity = ERROR_SEVERITY()
				,@ERR_STA = ERROR_STATE();

			RAISERROR (
					@ERR_MSG
					,@Err_Severity
					,@ERR_STA
					);
		END;
	END CATCH;
END
GO
/****** Object:  StoredProcedure [dbo].[ImportCustomerLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportCustomerLocation]
    (
      @CustName AS NVARCHAR(100) ,
      @LocName AS NVARCHAR(100) ,
      @Street1 AS NVARCHAR(200) ,
      @Street2 AS NVARCHAR(200) ,
      @City AS NVARCHAR(100) ,
      @Province AS NVARCHAR(100) ,
      @Postal AS NVARCHAR(40) ,
      @Country AS NVARCHAR(100) ,
      @CountryCode AS NVARCHAR(20) = NULL ,
      @DelRouteCode AS NVARCHAR(100) = NULL ,
      @SalesName AS NVARCHAR(100) = NULL ,
	  @DelMethodCode AS NVARCHAR(100) = NULL ,
      @DistanceToClient AS MONEY = 0,
	  @Number AS NVARCHAR(100)
    )
AS
    BEGIN
        BEGIN TRY
            DECLARE @ERR_MSG AS NVARCHAR(4000) ,
                @Err_Severity INT ,
                @ERR_STA AS SMALLINT;
            DECLARE @IsInsert AS BIT = 0;	
            UPDATE  tblCustomerLoc
            SET     strStreet1 = @Street1 ,
                    strStreet2 = @Street2 ,
                    strCity = @City ,
                    strProvince = @Province ,
                    strPostal = @Postal ,
                    strCountry = @Country ,
                    strDelRouteCode = @DelRouteCode ,
                    strCountryCode = @CountryCode ,
                    strSalesName = @SalesName,
					decDistance = @DistanceToClient,
					strNumber = @Number
            WHERE   strCustName = @CustName
                    AND strLocName = @LocName;

            IF @@ROWCOUNT = 0
                BEGIN
                     INSERT INTO [dbo].[tblcustomerloc] 
                        ([strCustName], 
                         [strLocName], 
                         [strStreet1], 
                         [strStreet2], 
                         [strCity], 
                         [strProvince], 
                         [strPostal], 
                         [strCountry], 
                         [strDelRouteCode], 
                         [strCountryCode], 
                         [strSalesName], 
                         [strDelMethodCode], 
                         [decDistance], 
                         [strNumber], 
                         [geoCoord]) 
                    VALUES  ( @CustName, @LocName, @Street1, @Street2, @City,
                              @Province, @Postal, @Country, @DelRouteCode,
                              @CountryCode, @SalesName, @DelMethodCode,
                              @DistanceToClient, @Number, NULL);
                    SET @IsInsert = 1;
                END;
            SELECT  CONCAT('Success: ', @IsInsert);
        END TRY
        BEGIN CATCH
            IF ERROR_NUMBER() = 547
                BEGIN					

                    SET @ERR_MSG = 'Error 547: ';

                    SELECT  @ERR_MSG;
                END;

            ELSE
                IF ERROR_NUMBER() = 8152
                    BEGIN					

                        SET @ERR_MSG = 'Error 8152: ';

                        SELECT  @ERR_MSG;	

                    END;

                ELSE
                    BEGIN			

                        SELECT  @ERR_MSG = ERROR_MESSAGE() ,
                                @Err_Severity = ERROR_SEVERITY() ,
                                @ERR_STA = ERROR_STATE();		

                        RAISERROR (@ERR_MSG, @Err_Severity, @ERR_STA);

                    END;				
        END CATCH;	
    END
GO
/****** Object:  StoredProcedure [dbo].[ImportCustomers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportCustomers] (  
 @CustName AS NVARCHAR(50)  
 ,@CustDesc AS NVARCHAR(200)  
 ,@Contact AS NVARCHAR(100)  
 ,@Street1 AS NVARCHAR(100)  
 ,@Street2 AS NVARCHAR(100)  
 ,@City AS NVARCHAR(50)  
 ,@Province AS NVARCHAR(50)  
 ,@Postal AS NVARCHAR(20)  
 ,@Country AS NVARCHAR(50)  
 ,@CountryCode AS NVARCHAR(10)  
 ,@Phone AS NVARCHAR(50)  
 ,@CellPhone AS NVARCHAR(50)  
 ,@Fax AS NVARCHAR(50)  
 ,@Email AS NVARCHAR(250)  
 ,@EmailInv AS NVARCHAR(250)  
 ,@EmailStat AS NVARCHAR(250)  
 ,@VAT AS NVARCHAR(50)  
 ,@CK AS NVARCHAR(50)  
 ,@Field1 AS NVARCHAR(100)  
 ,@Field2 AS NVARCHAR(100)  
 ,@Field3 AS NVARCHAR(100)  
 ,@Field4 AS NVARCHAR(100)  
 ,@Field5 AS NVARCHAR(100)  
 ,@Field6 AS NVARCHAR(100)  
 ,@Field7 AS NVARCHAR(100)  
 ,@Field8 AS NVARCHAR(100)  
 ,@Field9 AS NVARCHAR(100)  
 ,@Field10 AS NVARCHAR(100)  
 ,@Field11 AS NVARCHAR(100)  
 ,@Field12 AS NVARCHAR(100)  
 ,@Field13 AS BIT  
 ,@Field14 AS BIT  
 ,@Field15 AS BIT  
 ,@Field16 AS BIT  
 ,@Field17 AS BIT  
 ,@Field18 AS BIT  
 ,@Notes AS NVARCHAR(MAX)  
 ,@Term AS NVARCHAR(50)  
 ,@IsCreditCtrl AS BIT  
 ,@CreditLimit AS MONEY  
 ,@IsCreditHold AS BIT  
 ,@Pricelist AS NVARCHAR(20)  
 ,@IntRate AS MONEY  
 ,@Dept AS INT  
 ,@Currency AS NVARCHAR(3)  
 ,@CustCategory AS NVARCHAR(20)  
 ,@TenderType AS NVARCHAR(20)  
 ,@TradeDiscPerc AS MONEY  
 ,@CreditLimitOverride AS DECIMAL(18, 2)  
 ,@CreditLimitExpiryDate AS DATETIME  
 ,@PartialBackorders AS INT  
 ,@INVFormDocName AS NVARCHAR(50)  
 ,@ORDFormDocName AS NVARCHAR(50)  
 ,@IsMatrixType AS BIT  
 ,@MatrixType AS NVARCHAR(20)  
 ,@IsInactive AS BIT  
 ,@ValueBased AS NVARCHAR(20)  
 ,@SalesName AS NVARCHAR(100)  
 ,@Center AS NVARCHAR(MAX)  
 ,@IsInvWorkflowNew AS BIT  
 ,@IsInvWorkflowDA AS BIT  
 ,@IsInvWorkflowSO AS BIT  
 ,@Website AS NVARCHAR(200)  
 ,@RSTTerminalSync AS NVARCHAR(MAX)  
 ,@TaxCode AS NVARCHAR(2)  
 ,@EmailOso AS NVARCHAR(250)  
 ,@NAPrintMethod AS INT  
 ,@DelMethodCode AS NVARCHAR(50)  
 ,@CustomerType AS NVARCHAR(50)  
 ,@NAIndividual AS INT = 0  
 ,@NAConsolidated AS INT = 1  
 ,@RowNumber AS INT  
 ,@ARAccount AS NVARCHAR(50)  
 ,@DepositAccount AS NVARCHAR(50)  
 ,@DocPassword AS NVARCHAR(Max) = NULL  
 ,@Contact2 AS NVARCHAR(50)  
 ,@DelMethod AS INT  
 ,@Suburb AS NVARCHAR(50)  
 ,@FaceBook AS NVARCHAR(50)  
 ,@LinkedIn AS NVARCHAR(50)  
 ,@ParentCust AS NVARCHAR(50)  
 ,@EComPassword AS NVARCHAR(max)  
 ,@IsSynctwebstore AS BIT  
 ,@WebstoreEmail AS NVARCHAR(250)  
 ,@TPIN AS NVARCHAR(10)  
 ,@TransactionType AS NVARCHAR(400)  
 ,@KenyaCustPin AS NVARCHAR(250)  
 )  
AS  
BEGIN  
 DECLARE @ERR_MSG AS NVARCHAR(MAX)  
  ,@IsInsert AS BIT = 0  
  
 IF @IsSynctwebstore = 1  
 BEGIN  
  IF LEN(@WebstoreEmail) > 0  
  BEGIN  
   DECLARE @EmailCount AS INT  
  
   SELECT @EmailCount = COUNT(*)  
   FROM tblCustomers  
   WHERE strWebstoreEmail = @WebstoreEmail  
    AND strCustName != @CustName  
  
   IF @EmailCount > 0  
   BEGIN  
    SET @ERR_MSG = CONCAT (  
      'Please use a different Webstore Email('  
      ,@WebstoreEmail  
      ,'), as it is used by another customer on row: '  
      ,@RowNumber  
      )  
  
    RAISERROR (  
      @ERR_MSG  
      ,16  
      ,1  
      );  
   END  
  END  
 END  
  
 UPDATE tblCustomers  
 SET strCustDesc = @CustDesc  
  ,strContact = @Contact  
  ,strStreet1 = @Street1  
  ,strStreet2 = @Street2  
  ,strCity = @City  
  ,strProvince = @Province  
  ,strPostal = @Postal  
  ,strCountry = @Country  
  ,strCountryCode = @CountryCode  
  ,strPhone = @Phone  
  ,strCellPhone = @CellPhone  
  ,strFax = @Fax  
  ,strEmail = @Email  
  ,strEmailInv = @EmailInv  
  ,strEmailStat = @EmailStat  
  ,strVAT = @VAT  
  ,strCK = @CK  
  ,dteUpdated = GETDATE()  
  ,strField1 = @Field1  
  ,strField2 = @Field2  
  ,strField3 = @Field3  
  ,strField4 = @Field4  
  ,strField5 = @Field5  
  ,strField6 = @Field6  
  ,strField7 = @Field7  
  ,strField8 = @Field8  
  ,strField9 = @Field9  
  ,strField10 = @Field10  
  ,strField11 = @Field11  
  ,strField12 = @Field12  
  ,strField13 = @Field13  
  ,strField14 = @Field14  
  ,strField15 = @Field15  
  ,strField16 = @Field16  
  ,strField17 = @Field17  
  ,strField18 = @Field18  
  ,strNotes = @Notes  
  ,strTerm = @Term  
  ,bitCreditCtrl = @IsCreditCtrl  
  ,decCreditLimit = @CreditLimit  
  ,bitCreditHold = @IsCreditHold  
  ,strPricelist = @Pricelist  
  ,decIntRate = @IntRate  
  ,intDept = @Dept  
  ,strCurrency = @Currency  
  ,strCustCategory = @CustCategory  
  ,strTenderType = @TenderType  
  ,decTradeDiscPerc = @TradeDiscPerc  
  ,decCreditLimitOverride = @CreditLimitOverride  
  ,dteCreditLimitExpiryDate = @CreditLimitExpiryDate  
  ,intPartialBackorders = @PartialBackorders  
  ,strINVFormDocName = @INVFormDocName  
  ,strORDFormDocName = @ORDFormDocName  
  ,bitMatrixType = @IsMatrixType  
  ,strMatrixType = @MatrixType  
  ,bitInactive = @IsInactive  
  ,strValueBased = @ValueBased  
  ,bitInvWorkflowNew = @IsInvWorkflowNew  
  ,bitInvWorkflowDA = @IsInvWorkflowDA  
  ,bitInvWorkflowSO = @IsInvWorkflowSO  
  ,strWebsite = @Website  
  ,strRSTTerminalSync = @RSTTerminalSync  
  ,strTaxCode = LTRIM(RTRIM(@TaxCode))  
  ,strEmailOso = @EmailOso  
  ,intNAPrintMethod = @NAPrintMethod  
  ,strDelMethodCode = @DelMethodCode  
  ,strCustomerType = @CustomerType  
  ,intGLNumberAR = @ARAccount  
  ,intGLNumberDeposit = @DepositAccount  
  ,strContact2 = @Contact2  
  ,intDelMethod = @DelMethod  
  ,strSuburb = @Suburb  
  ,strFacebook = @FaceBook  
  ,strLinkedIn = @LinkedIn  
  ,strParentCust = @ParentCust  
  ,streComPassword = @EComPassword  
  ,blnIsSynctwebstore = @IsSynctwebstore  
  ,strWebstoreEmail = @WebstoreEmail  
  ,strCustTPIN = @TPIN  
  ,strTransactionType = @TransactionType
  ,strKenyaCustPin = @KenyaCustPin
 WHERE strCustName = @CustName  
  
 IF @@ROWCOUNT = 0  
 BEGIN  
  INSERT INTO tblCustomers (  
   [strCustName]  
   ,[strStreet1]  
   ,[strStreet2]  
   ,[strCity]  
   ,[strProvince]  
   ,[strPostal]  
   ,[strPhone]  
   ,[strCellPhone]  
   ,[strFax]  
   ,[strEmail]  
   ,[strVAT]  
   ,[strCK]  
   ,[decBalDue]  
   ,[decYTDPurch]  
   ,[decOpenOrders]  
   ,[intDelMethod]  
   ,[bitCreditCtrl]  
   ,[decCreditLimit]  
   ,[bitCreditHold]  
   ,[bitInactive]  
   ,[dteUpdated]  
   ,[strContact]  
   ,[strField1]  
   ,[strField2]  
   ,[strField3]  
   ,[strField4]  
   ,[strField5]  
   ,[strField6]  
   ,[strTaxCode]  
   ,[dteSince]  
   ,[strNotes]  
   ,[strPricelist]  
   ,[uID]  
   ,[decIntRate]  
   ,[strCustDesc]  
   ,[strCountry]  
   ,[strTerm]  
   ,[intDept]  
   ,[strCurrency]  
   ,[decBalDueF]  
   ,[decYTDPurchF]  
   ,[decOpenOrdersF]  
   ,[strField7]  
   ,[strField8]  
   ,[strField9]  
   ,[strField10]  
   ,[strField11]  
   ,[strField12]  
   ,[strField13]  
   ,[strField14]  
   ,[strField15]  
   ,[strField16]  
   ,[strField17]  
   ,[strField18]  
   ,[strEmailInv]  
   ,[strEmailStat]  
   ,[strCustCategory]  
   ,[strCountryCode]  
   ,[strTenderType]  
   ,[decTradeDiscPerc]  
   ,[decCreditLimitOverride]  
   ,[dteCreditLimitExpiryDate]  
   ,[intPartialBackorders]  
   ,[bitWithholdTax]  
   ,[strWithholdTaxCode]  
   ,[strINVFormDocName]  
   ,[strORDFormDocName]  
   ,[bitMatrixType]  
   ,[strMatrixType]  
   ,[strParentCust]  
   ,[strValueBased]  
   ,[bitInvWorkflowNew]  
   ,[bitInvWorkflowDA]  
   ,[bitInvWorkflowSO]  
   ,[strWebsite]  
   ,[strRSTTerminalSync]  
   ,[strContact2]  
   ,[strSuburb]  
   ,[strEmailOso]  
   ,[intNAPrintMethod]  
   ,[strDelMethodCode]  
   ,[strCustomerType]  
   ,[bitExclCommission]  
   ,[streComPassword]  
   ,[dteRowUpdated]  
   ,[intGLNumberAR]  
   ,[intGLNumberDeposit]  
   ,[strDocPassword]  
   ,[strFacebook]  
   ,[strLinkedIn]  
   ,[blnIsSynctwebstore]  
   ,[strWebstoreEmail]  
   ,[strCustTPIN]  
   ,[strTransactionType]  
   ,[strKenyaCustPin]
   )  
  VALUES (  
   @CustName  
   ,@Street1  
   ,@Street2  
   ,@City  
   ,@Province  
   ,@Postal  
   ,@Phone  
   ,@CellPhone  
   ,@Fax  
   ,@Email  
   ,@VAT  
   ,@CK  
   ,0  
   ,0  
   ,0  
   ,@DelMethod  
   ,@IsCreditCtrl  
   ,@CreditLimit  
   ,@IsCreditHold  
   ,@IsInactive  
   ,GetDate()  
   ,@Contact  
   ,@Field1  
   ,@Field2  
   ,@Field3  
   ,@Field4  
   ,@Field5  
   ,@Field6  
   ,LTRIM(RTRIM(@TaxCode)) 
   ,CAST(GetDate() AS DATE)  
   ,@Notes  
   ,@Pricelist  
   ,NEWID()  
   ,@IntRate  
   ,@CustDesc  
   ,@Country  
   ,@Term  
   ,@Dept  
   ,@Currency  
   ,0  
   ,0  
   ,0  
   ,@Field7  
   ,@Field8  
   ,@Field9  
   ,@Field10  
   ,@Field11  
   ,@Field12  
   ,@Field13  
   ,@Field14  
   ,@Field15  
   ,@Field16  
   ,@Field17  
   ,@Field18  
   ,@EmailInv  
   ,@EmailStat  
   ,@CustCategory  
   ,@CountryCode  
   ,@TenderType  
   ,@TradeDiscPerc  
   ,@CreditLimitOverride  
   ,@CreditLimitExpiryDate  
   ,@PartialBackorders  
   ,0  
   ,NULL  
   ,@INVFormDocName  
   ,@ORDFormDocName  
   ,@IsMatrixType  
   ,@MatrixType  
   ,@ParentCust  
   ,@ValueBased  
   ,@IsInvWorkflowNew  
   ,@IsInvWorkflowDA  
   ,@IsInvWorkflowSO  
   ,@Website  
   ,@RSTTerminalSync  
   ,@Contact2  
   ,@Suburb  
   ,@EmailOso  
   ,@NAPrintMethod  
   ,@DelMethodCode  
   ,@CustomerType  
   ,0  
   ,@EComPassword  
   ,GETDATE()  
   ,@ARAccount  
   ,@DepositAccount  
   ,@DocPassword  
   ,@FaceBook  
   ,@LinkedIn  
   ,@IsSynctwebstore  
   ,@WebstoreEmail  
   ,@TPIN  
   ,@TransactionType  
   ,@KenyaCustPin
   )  
  
  SET @IsInsert = 1  
 END  
  
 UPDATE tblCustomers  
 SET intNAPrintMethod = @NAIndividual  
 FROM (  
  SELECT strCustName  
  FROM tblCustomers  
  WHERE intNAPrintMethod = @NAConsolidated  
   AND ISNULL((  
     SELECT COUNT(CUST.strCustName)  
     FROM tblCustomers CUST  
     WHERE CUST.strParentCust = tblCustomers.strCustName  
     ), 0) = 0  
  ) Z  
 WHERE tblCustomers.strCustName = Z.strCustName  
  
 ---Sales Person--  
 DELETE  
 FROM tblCustomerSales  
 WHERE strCustName = @CustName  
  
 IF LEN(@SalesName) > 0  
 BEGIN  
  DECLARE @SalesPersonsCount AS INT  
  
  SELECT @SalesPersonsCount = COUNT(*)  
  FROM tblSalesPersons  
  WHERE bitIsWorkshopTechnician = 0  
   AND strSalesName = @SalesName  
  
  IF @SalesPersonsCount = 0  
  BEGIN  
   SET @ERR_MSG = CONCAT (  
     'Invalid Sales Person on row: '  
     ,@RowNumber  
     )  
  
   RAISERROR (  
     @ERR_MSG  
     ,16  
     ,1  
     );  
  END  
  
  INSERT INTO tblCustomerSales (  
   strCustName  
   ,strSalesName  
   )  
  VALUES (  
   @CustName  
   ,@SalesName  
   )  
 END  
  
 ---Profit Center---  
 DELETE  
 FROM tblCustomerCenter  
 WHERE strCustName = @CustName  
  
 IF LEN(@Center) > 0  
 BEGIN  
  DECLARE @CenterID AS UNIQUEIDENTIFIER  
  DECLARE @Level1 AS NVARCHAR(400) = NULL  
  DECLARE @Level2 AS NVARCHAR(400) = NULL  
  DECLARE @Level3 AS NVARCHAR(400) = NULL  
  DECLARE @Level4 AS NVARCHAR(400) = NULL  
  DECLARE @Level5 AS NVARCHAR(400) = NULL  
  DECLARE @LevelCount AS INT  
  DECLARE @QueryCommand AS NVARCHAR(MAX)  
  DECLARE @ParameterDefinition AS NVARCHAR(MAX)  
  
  CREATE TABLE #Temp (  
   RowId INT Identity(1, 1)  
   ,CenterLevel NVARCHAR(200)  
   ,  
   )  
  
  INSERT INTO #Temp  
  SELECT [Value]  
  FROM [dbo].[fnSplitStringAsTable](@Center, '\')  
  
  SET @LevelCount = @@ROWCOUNT  
  
  SELECT TOP (1) @Level1 = CenterLevel  
  FROM #Temp  
  WHERE RowId = 1  
  
  SET @QueryCommand = 'SELECT @CenterIDOut = uidCenterID FROM tblCenters WHERE strLvl1 = @Level1'  
  
  IF @LevelCount > 1  
  BEGIN  
   SELECT TOP (1) @Level2 = CenterLevel  
   FROM #Temp  
   WHERE RowId = 2  
  
   SET @QueryCommand += ' AND strLvl2 = @Level2'  
  END  
  ELSE  
  BEGIN  
   SET @QueryCommand += ' AND strLvl2 IS NULL AND strLvl3 IS NULL AND strLvl4 IS NULL AND strLvl5 IS NULL'  
  END  
  
  IF @LevelCount > 2  
  BEGIN  
   SELECT TOP (1) @Level3 = CenterLevel  
   FROM #Temp  
   WHERE RowId = 3  
  
   SET @QueryCommand += ' AND strLvl3 = @Level3'  
  END  
  ELSE  
  BEGIN  
   SET @QueryCommand += ' AND strLvl3 IS NULL AND strLvl4 IS NULL AND strLvl5 IS NULL'  
  END  
  
  IF @LevelCount > 3  
  BEGIN  
   SELECT TOP (1) @Level4 = CenterLevel  
   FROM #Temp  
   WHERE RowId = 4  
  
   SET @QueryCommand += ' AND strLvl4 = @Level4'  
  END  
  ELSE  
  BEGIN  
   SET @QueryCommand += ' AND strLvl4 IS NULL AND strLvl5 IS NULL'  
  END  
  
  IF @LevelCount > 4  
  BEGIN  
   SELECT TOP (1) @Level5 = CenterLevel  
   FROM #Temp  
   WHERE RowId = 5  
  
   SET @QueryCommand += ' AND strLvl5 = @Level5'  
  END  
  ELSE  
  BEGIN  
   SET @QueryCommand += ' AND strLvl5 IS NULL'  
  END  
  
  DROP TABLE #Temp  
  
  SET @ParameterDefinition = ' @Level1 NVARCHAR(400),  
          @Level2 NVARCHAR(400),  
          @Level3 NVARCHAR(400),  
          @Level4 NVARCHAR(400),  
          @Level5 NVARCHAR(400),  
          @CenterIDOut UNIQUEIDENTIFIER OUT'  
  
  EXECUTE sp_executesql @QueryCommand  
   ,@ParameterDefinition  
   ,@Level1  
   ,@Level2  
   ,@Level3  
   ,@Level4  
   ,@Level5  
   ,@CenterIDOut = @CenterID OUTPUT  
  
  IF @@ROWCOUNT = 0  
  BEGIN  
   SET @ERR_MSG = CONCAT (  
     'Invalid Profit Center on row: '  
     ,@RowNumber  
     )  
  
   RAISERROR (  
     @ERR_MSG  
     ,16  
     ,1  
     );  
  END  
  
  INSERT INTO tblCustomerCenter  
  VALUES (  
   @CustName  
   ,@CenterID  
   )  
 END  
  
 SELECT CONCAT (  
   'Success: '  
   ,@IsInsert  
   )  
END  
GO

/****** Object:  StoredProcedure [dbo].[ImportCustomersCat]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportCustomersCat] (
	@strCustCategory NVARCHAR(20)
	,@strDesc NVARCHAR(100)
	)
AS
BEGIN
	DECLARE @custCatCount INT

	SELECT @custCatCount = COUNT(strCustCategory)
	FROM tblCustomerCat
	WHERE strCustCategory = @strCustCategory

	IF @custCatCount = 0
	BEGIN
		INSERT INTO tblCustomerCat (
			strCustCategory
			,strDesc
			,bitInactive
			,bitIsHP
			,decISDefDep
			,decISDefIns
			,decISDefFinChrge
			,strInstallSaleFC
			,strInstallSaleTaxCode
			,decArrPenalty
			,dteRowUpdated
			)
		VALUES (
			@strCustCategory
			,@strDesc
			,0
			,0
			,0
			,0
			,0
			,0
			,NULL
			,NULL
			,GetDate()
			)

		INSERT INTO tblDiscountMatrix
		SELECT tblCustomerCat.strCustCategory
			,tblInvCat.strCategory
			,0
			,GETDATE()
		FROM tblInvCat
		CROSS JOIN tblCustomerCat
		WHERE tblCustomerCat.strCustCategory = @strCustCategory
	END
END
GO
/****** Object:  StoredProcedure [dbo].[ImportGLAccounts]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [DeleteAllPastelData]*****************************/

/*****************Start [ImportGLAccounts]*****************************/
Create Procedure [dbo].[ImportGLAccounts]
@intGLNumber as nvarchar(Max),
@strDesc as nvarchar(Max),
@intAccType as int,
@intGroupCode as int,
@intAccClass as int,
@bitInactive as bit,
@bitBank as bit,
@strCurrency as nvarchar(10)
As
begin
	INSERT INTO tblAccounts(intGLNumber,strDesc,intAccType,intGroupCode,intAccClass,bitInactive,decOpenBalance,decBalance,decLYOpenBalance,decLYEndBalance,bitBank,bitRecon,bitInventory,bitBudget,bitUsed,bitUsedLY,bitLinkREarnings,bitLinkCEarnings,bitLinkAP,bitLinkPurDisc,bitLinkAR,bitLinkSalesDisc,bitLinkAssCosts,bitLinkAdjWriteOff,bitIsLinkedAccount,bitDefBank,bitLinkDeposit,bitLinkPrePay,
	strField1,strField2,strField3,strField4,strField5,strField6,bitLinkExc,bitAllowCenters,intCheqNumber,strCurrency,
	decOpenBalanceF,decBalanceF,decLYOpenBalanceF,decLYEndBalanceF,bitLinkGRV,bitLinkAddCost,bitLinkDelAdvice,bitLinkWIP,bitLinkManStandardCost,bitLinkWorkshopWIP,bitLinkGoodsInTransit,dteRowUpdated)
	 VALUES 
	(@intGLNumber,@strDesc,@intAccType,@intGroupCode,@intAccClass,@bitInactive,0,0,0,0,@bitBank,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'','','','','','',0,0,1,@strCurrency,0,0,0,0,0,0,0,0,0,0,0,GetDate())
end
GO
/****** Object:  StoredProcedure [dbo].[ImportGLTransHistory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** END [ContractBillingInvoiceSearch] ***********/

/*********** Start [ImportGLTransHistory] ***********/
CREATE procedure [dbo].[ImportGLTransHistory]
(	
	 @GLType		int = 0
	,@StartDate		date = null
	,@EndDate		date = null	
	,@APControlAcc	nvarchar(256)
	,@ARControlAcc	nvarchar(256)
	,@UserName		nvarchar(256)
	,@tblImportGLAccounts	commontabletype readonly
	,@tblMapCurrencyCode	commontabletype readonly
	,@PLHomeCurrencyCode nvarchar(50)
)	
As
begin
	
	declare @strRetrun as nvarchar(max) = ''

	declare @Count as int = 0

	if @GLType = 0 
	begin
		SELECT @Count=COUNT(lngJourID) FROM tblJournal
		if ISNULL(@count, 0) > 0 
		begin
			set @strRetrun = 'Current Year Records Already Exist. General Ledger (Current) Import Will Now Be Cancelled.'
			return;
		end
	end

	if @GLType = 1
	begin
		SELECT @Count = COUNT(lngJourID) FROM tblJournalLY
		if ISNULL(@count, 0) > 0 
		begin
			set @strRetrun = 'Last Year History Records Already Exist. General Ledger (Last Year) Import Will Now Be Cancelled.'
			return;
		end

		UPDATE tblCompany SET dteLYStarted = @StartDate

		INSERT INTO tblAccountsLY 
		(
			 intGLNumber
			,strDesc
			,intAccType
			,intGroupCode
			,intAccClass
			,bitInactive
			,decOpenBalance
			,decBalance
			,decLYOpenBalance
			,decLYEndBalance
			,bitBank
			,bitRecon
			,bitInventory
			,bitBudget
			,bitUsed
			,bitUsedLY
			,bitLinkREarnings
			,bitLinkCEarnings
			,bitLinkAP
			,bitLinkPurDisc
			,bitLinkAR
			,bitLinkSalesDisc
			,bitLinkAssCosts
			,bitLinkAdjWriteOff
			,bitIsLinkedAccount
			,bitDefBank
			,bitLinkDeposit
			,bitLinkPrePay
			,strField1
			,strField2
			,strField3
			,strField4
			,strField5
			,strField6
			,bitLinkExc
			,bitAllowCenters
			,intCheqNumber
			,strCurrency
			,decOpenBalanceF
			,decBalanceF
			,decLYOpenBalanceF
			,decLYEndBalanceF
			,bitLinkGRV
			,bitLinkAddCost
			,bitLinkDelAdvice
			,bitLinkWIP
			,bitLinkManStandardCost
		)
		SELECT 
				 intGLNumber					--intGLNumber
				,strDesc 						--strDesc
				,intAccType 					--intAccType
				,intGroupCode 					--intGroupCode
				,intAccClass 					--intAccClass
				,bitInactive					--bitInactive
				,0								--decOpenBalance
				,0								--decBalance
				,0								--decLYOpenBalance
				,0								--decLYEndBalance
				,bitBank						--bitBank
				,bitRecon						--bitRecon
				,bitInventory					--bitInventory
				,bitBudget						--bitBudget
				,0								--bitUsed
				,0								--bitUsedLY
				,0								--bitLinkREarnings
				,0								--bitLinkCEarnings
				,0								--bitLinkAP
				,0								--bitLinkPurDisc
				,0								--bitLinkAR
				,0								--bitLinkSalesDisc
				,0								--bitLinkAssCosts
				,0								--bitLinkAdjWriteOff
				,0								--bitIsLinkedAccount
				,0								--bitDefBank
				,0								--bitLinkDeposit
				,0								--bitLinkPrePay
				,strField1						--strField1
				,strField2						--strField2
				,strField3						--strField3
				,strField4						--strField4
				,strField5						--strField5
				,strField6						--strField6
				,0								--bitLinkExc
				,bitAllowCenters				--bitAllowCenters
				,intCheqNumber					--intCheqNumber
				,strCurrency					--strCurrency
				,0								--decOpenBalanceF
				,0								--decBalanceF
				,0								--decLYOpenBalanceF
				,0								--decLYEndBalanceF
				,0								--bitLinkGRV
				,0								--bitLinkAddCost
				,0								--bitLinkDelAdvice
				,0								--bitLinkWIP
				,0 								--bitLinkManStandardCost
		FROM tblAccounts 
		WHERE intGLNumber NOT IN (SELECT intGLNumber FROM tblAccountsLY)

				
	end
	
		declare @strAPControlAcc As nvarchar(256)	 
        declare @strARControlAcc As nvarchar(256)	 

		select @strAPControlAcc = [dbo].[fnGetAccountNumber](@APControlAcc)
		select @strARControlAcc = [dbo].[fnGetAccountNumber](@ARControlAcc)

		declare @intJournalHistCount As Int
        declare @intJournalHistImportedCount As Int = 0

		declare @Min_AutoID as int = 0
		declare @Max_AutoID as int = 0

		declare @Min_AutoID1 as int = 0
		declare @Max_AutoID1 as int = 0


		declare @tblUtilityPervLedgerTransactions as table
		(
			 autoid			int identity(1, 1) 
			,TransactionID	int
			,DDate			datetime
		)


		declare @tblUtilityPervLedgerTransactions1 as table
		(
				 autoid				int identity(1, 1) 
				,TransactionID		int
				,GDC				char(1)
				,AccNumber			char(7)
				,DDate				datetime
				,Refrence			char(8)
				,[Description]		char(60)
				,Amount				money
				,CurrCode			smallint
				,CurrAmt			money
				,[LineNo]			int
		)


		insert into @tblUtilityPervLedgerTransactions
		(
			 TransactionID
			,DDate
		)
		SELECT DISTINCT TransactionID, DDate 
				FROM tblUtilityPervLedgerTransactions 
		WHERE DDate BETWEEN @StartDate AND @EndDate ORDER BY TransactionID, DDate

		select @Min_AutoID = min(AutoID) from @tblUtilityPervLedgerTransactions
		select @Max_AutoID = min(AutoID) from @tblUtilityPervLedgerTransactions

		declare @TransactionID as int 
		declare @DDate as datetime 

		declare @lngJournalID	As bigint = 0
		declare @TransactionID1 as int 
		declare @DDate1			as	datetime

				declare @GDC				as	char(1)
				declare @AccNumber			as	char(7)
				
				declare @Refrence			as	char(8)
				declare @Description		as	char(60)
				declare @Amount				as	money
				declare @CurrCode			as	smallint
				declare @CurrAmt 			as	money


		--while 1=1 
		--begin
		--	select		 @TransactionID	=	TransactionID
		--				,@DDate			=	DDate	
		--	from	@tblUtilityPervLedgerTransactions
		--	where	autoid = @Min_AutoID

		--	set @lngJournalID = 0



			delete from @tblUtilityPervLedgerTransactions1
			
			insert into @tblUtilityPervLedgerTransactions1
			(
				 GDC
				,TransactionID
				,AccNumber
				,DDate
				,Refrence
				,[Description]
				,Amount
				,CurrCode
				,CurrAmt 
				,[Lineno]
			)
			SELECT 
					 GDC
					,TransactionID
					,AccNumber
					,DDate
					,Refrence
					,[Description]
					,Amount
					,CurrCode
					,CurrAmt 
					,ROW_NUMBER() over(partition by TransactionID, DDate order by TransactionID, DDate) as [Lineno]
			FROM tblUtilityPervLedgerTransactions 
			WHERE		--(TransactionID = @TransactionID) 
					--AND (DDate = @DDate) 
					(DDate BETWEEN @StartDate AND @EndDate) 
			ORDER BY TransactionID, DDATe, GDC, AutoNumber


			select @Min_AutoID1 = min(AutoID) from @tblUtilityPervLedgerTransactions1
			select @Max_AutoID1 = min(AutoID) from @tblUtilityPervLedgerTransactions1

			declare @TransactionID_OLD as int = 0
			declare @DDate_OLD  as datetime 
			declare @iCount as int = 0

			declare @MaxJournalID as bigint = 0
			declare @Lineno as int = 0
			declare @strGLNumCheck as nvarchar(256) = ''
			declare @strGLNumLinked as nvarchar(256) = ''
			declare @strCurrencyCode as nvarchar(256) = ''

			while 1=1
			begin
					SELECT 
							@GDC			=	GDC
						,	@TransactionID1	=	TransactionID
						,	@AccNumber		=	AccNumber
						,	@DDate1			=	DDate
						,	@Refrence		=	Refrence
						,	@Description	=	[Description]
						,	@Amount			=	Amount
						,	@CurrCode		=	CurrCode
						,	@CurrAmt 		=	CurrAmt 
						,	@Lineno			=	[LineNo]
					FROM @tblUtilityPervLedgerTransactions1
					where autoid = @Min_AutoID1

					if @Lineno =1 
					begin
							if @GLType = 0
							begin
								select @MaxJournalID =  ISNULL(MAX(lngJourID), 0) FROM tblJournal
								set @MaxJournalID +=1
								INSERT INTO tblJournal(lngJourID,strUserName,dteSystemDate,dteJournalDate,intModule,intEntryType,strSource,strComment,strCuVeGeInID,intPayType,bitIsTobeReversed,dteReverseDate,bitIsReversed) VALUES (@MaxJournalID,@UserName,@DDate1,@DDate1,0,0,@Refrence,@Description,@AccNumber,0,0,NULL,0)
							end
							else
							begin
								SELECT @MaxJournalID = ISNULL(MAX(lngJourID), 0) FROM tblJournalLY
								set @MaxJournalID +=1
								INSERT INTO tblJournalLY (lngJourID, strUserName, dteSystemDate, dteJournalDate, intModule, intEntryType, strSource, strComment, strCuVeGeInID, intPayType, bitIsTobeReversed, dteReverseDate, bitIsReversed) VALUES (@MaxJournalID,@UserName,@DDate1,@DDate1,0,0,@Refrence,@Description,@AccNumber,0,0,NULL,0)
							end
					end
					
					
					if @GDC = 'C'
						set @strGLNumCheck = @APControlAcc
					if @GDC = 'D'
						set @strGLNumCheck = @ARControlAcc
					if @GDC = 'G'
					begin
						set @strGLNumLinked = ''

						select top 1 @strGLNumLinked = [dbo].[fnGetAccountNumber](isnull(COl05, ''))  from @tblImportGLAccounts	where COL01 = @AccNumber
						
						if rtrim(isnull(@strGLNumLinked, '')) = ''
						begin
							set @strRetrun = 'General Ledger Account Number doesn''t exist within the Masterfile '''  +  @AccNumber
							return;
						end

						SET @strGLNumCheck = @strGLNumLinked
					end
										
					set @strCurrencyCode = ''

						select top 1 @strCurrencyCode = isnull(COl03, '')  from @tblMapCurrencyCode	where COL01 = @CurrCode
						
						if rtrim(isnull(@strCurrencyCode, '')) = ''
						begin
							SET @strCurrencyCode = @PLHomeCurrencyCode
						end

					DECLARE @CurrencyCode AS nvarchar(100)
					SET @CurrencyCode = 'DLR'

					DECLARE @IsForeign as bit
					SET @IsForeign = 0
					DECLARE @Exchange as decimal
					SET @Exchange = 1

					DECLARE @AmountCurr as decimal
					DECLARE @CurrentAmount as decimal
					DECLARE @ExchangeCurr as decimal
					DECLARE @AmountCheck as decimal
					DECLARE @AmountCheckF as decimal
					DECLARE @AmountFinal as decimal
					DECLARE @AmountFFinal as decimal

					DECLARE @Debits as decimal
					DECLARE @Credits as decimal
					DECLARE @DebitsF as decimal
					DECLARE @CreditsF as decimal
					
					If @strCurrencyCode <> @PLHomeCurrencyCode
					BEGIN
						SET @IsForeign = 1
						SELECT Top 1 @AmountCurr = Amount,@CurrentAmount = CurrAmt FROM @tblUtilityPervLedgerTransactions1 
						IF @AmountCurr = 0 OR @CurrentAmount = 0
							SET @ExchangeCurr = 1
						ELSE
							SET @ExchangeCurr = ROUND(@AmountCurr / @CurrentAmount,4)

						
							SET @AmountCheck = @Amount 
							SET @AmountCheckF = @CurrentAmount
						
						DECLARE @funResult as nvarchar(50)
						--SET @funResult = fnIsCreditAccountType(@strGLNumCheck)
						SET @funResult = dbo.[fnIsCreditAccountType](@strGLNumCheck)
						if @funResult = '1'
						BEGIN
							SET @AmountCheck = @Amount * -1
							SET @AmountCheckF = @CurrentAmount * -1	
						END
						ELSE IF @funResult <> '0' AND @funResult <> '1'
						BEGIN
							SET @strRetrun = @funResult
							return
						END


						SET @AmountFinal = @AmountCheckF
						--ash
						if ISNULL(@AmountFinal, 0) = 0
						BEGIN
						SET @AmountFinal = 0
						END
						IF @CurrentAmount >= 0
						BEGIN
							SET @Debits = @CurrentAmount
							SET @Credits = 0
						END
						ELSE
						BEGIN
							SET @Debits = 0
							SET @Credits = @CurrentAmount * -1
						END

						SET @AmountFFinal = @AmountCheck

						IF @Amount >= 0
						BEGIN
							SET @DebitsF = @Amount
							SET @CreditsF = 0
						END
						ELSE
						BEGIN
							SET @DebitsF = 0
							SET @CreditsF = @Amount * -1
						END

					END
					ELSE
					BEGIN
						
						SELECT Top 1 @AmountCurr = Amount,@CurrentAmount = CurrAmt FROM @tblUtilityPervLedgerTransactions1
						SET @AmountCheck = @CurrentAmount
						--from line no 4308 oAccountLegend.IsCreditAccountType
						SET @AmountFinal = @AmountCheck
						--ash
						if ISNULL(@AmountFinal, 0) = 0
						BEGIN
						SET @AmountFinal = 0
						END
						IF @CurrentAmount >= 0
						BEGIN
							SET @Debits = @CurrentAmount
							SET @Credits = 0
						END
						ELSE
						BEGIN
							SET @Debits = 0
							SET @Credits = @CurrAmt * -1
						END
						SET @AmountFFinal = 0
						SET @DebitsF = 0
						SET @CreditsF = 0
						SET @Exchange = 1
					END
					if ISNULL(@Credits, 0) = 0
						BEGIN
						SET @Credits = 0
						END
						if ISNULL(@ExchangeCurr, 0) = 0
						BEGIN
						SET @ExchangeCurr = 0
						END
					if @GLType = 0
					begin
							INSERT INTO tblJournalEnt 
							(
									 lngJourID
									,intLineNum
									,intGLNumber
									,decAmount
									,decDebits
									,decCredits
									,strComment
									,intDept
									,decAmountF
									,decDebitsF
									,decCreditsF
									,strCurrency
									,decExchange
									,bitForeignAcct
									,decAllocatedAmtToDate
									,decUnAllocatedAmt
									,strFormula
									,bitVerified
							)
							VALUES			   
							(
								 @MaxJournalID						--lngJourID
								,@Lineno							--intLineNum
								,@strGLNumCheck						--intGLNumber
								,@AmountFinal						--decAmount
								,@Debits							--decDebits
								,@Credits							--decCredits
								,@AccNumber							--strComment
								,null								--intDept
								,@AmountFFinal						--decAmountF
								,@DebitsF							--decDebitsF
								,@CreditsF --						--decCreditsF
								,@strCurrencyCode					--strCurrency
								,@ExchangeCurr						--decExchange
								,0									--bitForeignAcct
								,0									--decAllocatedAmtToDate
								,0									--decUnAllocatedAmt
								,null								--strFormula
								,0									--bitVerified
							)
					end
					else
					begin
					print 'GLType 2'
						INSERT INTO tblJournalEntLY 
						(
								 lngJourID
								,intLineNum
								,intGLNumber
								,decAmount
								,decDebits
								,decCredits
								,strComment
								,intDept
								,decAmountF
								,decDebitsF
								,decCreditsF
								,strCurrency
								,decExchange
								,bitForeignAcct
								,decAllocatedAmtToDate
								,decUnAllocatedAmt
								,strFormula
								,bitVerified
						)
						VALUES 
						(
								 @MaxJournalID						--lngJourID
								,@Lineno							--intLineNum
								,@strGLNumCheck						--intGLNumber
								,@AmountFinal						--decAmount
								,@Debits							--decDebits
								,@Credits							--decCredits
								,@AccNumber							--strComment
								,null								--intDept
								,@AmountFFinal						--decAmountF
								,@DebitsF							--decDebitsF
								,@CreditsF --						--decCreditsF
								,@strCurrencyCode					--strCurrency
								,@ExchangeCurr						--decExchange
								,0									--bitForeignAcct
								,0									--decAllocatedAmtToDate
								,0									--decUnAllocatedAmt
								,null								--strFormula
								,0									--bitVerified
						)
					end

					SET @intJournalHistImportedCount += 1
															

					if @Min_AutoID1 = @Max_AutoID1 
						break;
					set @Min_AutoID1 += 1

					

			end




		--	if @Min_AutoID = @Max_AutoID 
		--		break;
		--	set @Min_AutoID += 1
		--end

		delete from @tblUtilityPervLedgerTransactions1

		insert into @tblUtilityPervLedgerTransactions1
		(
			 AccNumber
			,Amount
			,CurrAmt
		)
		SELECT	 AccNumber
				,ROUND((
							BalanceLast01 
						+	BalanceLast02 
						+	BalanceLast03 
						+	BalanceLast04 
						+	BalanceLast05 
						+	BalanceLast06 
						+	BalanceLast07 
						+	BalanceLast08 
						+	BalanceLast09 
						+	BalanceLast10 
						+	BalanceLast11 
						+	BalanceLast12
						),2) AS OpeningBalance
				, ROUND((
								BalanceLast01 
							+	BalanceLast02 
							+	BalanceLast03 
							+	BalanceLast04 
							+	BalanceLast05 
							+	BalanceLast06 
							+	BalanceLast07 
							+	BalanceLast08 
							+	BalanceLast09 
							+	BalanceLast10 
							+	BalanceLast11 
							+	BalanceLast12 
							+	BalanceThis01 
							+	BalanceThis02 
							+	BalanceThis03 
							+	BalanceThis04 
							+	BalanceThis05 
							+	BalanceThis06 
							+	BalanceThis07 
							+	BalanceThis08 
							+	BalanceThis09 
							+	BalanceThis10 
							+	BalanceThis11 
							+	BalanceThis12 
							),2) AS Balance 
				FROM tblUtilityPervLedgerMaster 
				WHERE 
							FinancialCategory < 90 
						AND NumberSubAccs = 0 
						AND		(	ROUND((	BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + 
											BalanceLast07 + BalanceLast08 + BalanceLast09 + BalanceLast10 + BalanceLast11 + BalanceLast12),2) <> 0 
								OR (@GLType = 0 AND	ROUND((	BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + BalanceThis05 + BalanceThis06 + 
											BalanceThis07 + BalanceThis08 + BalanceThis09 + BalanceThis10 + BalanceThis11 + BalanceThis12),2) <> 0))


		set @Min_AutoID1 = 0
		set @Max_AutoID1 = 0
		declare @decOpeningBalance	as money = 0
		declare @decBalance			as money = 0
		select @Min_AutoID1 = min(AutoID) from @tblUtilityPervLedgerTransactions1
		select @Max_AutoID1 = min(AutoID) from @tblUtilityPervLedgerTransactions1

		while 1=1
		begin
			SELECT 
							@AccNumber		=	AccNumber
						,	@Amount			=	Amount
						,	@CurrAmt 		=	CurrAmt 
					FROM @tblUtilityPervLedgerTransactions1
					where autoid = @Min_AutoID1


					
					set @decOpeningBalance		=	@Amount
					set @decBalance				=	case when @GLType = 0 then @CurrAmt else @Amount end


						set @strGLNumLinked = ''

						select top 1 @strGLNumLinked = [dbo].[fnGetAccountNumber](isnull(COl05, ''))  from @tblImportGLAccounts	where COL01 = @AccNumber
						
						if rtrim(isnull(@strGLNumLinked, '')) = ''
						begin
							set @strRetrun = 'General Ledger Account Number doesn''t exist within the Masterfile '''  +  @AccNumber
							return;
						end

						SET @strGLNumCheck = @strGLNumLinked


						SET @funResult = dbo.[fnIsCreditAccountType](@strGLNumCheck)
						if @funResult = '1'
						BEGIN
							SET @decOpeningBalance	= @decOpeningBalance * -1
							SET @decBalance			= @decBalance * -1	
						END
						--ELSE IF @funResult <> '0' AND @funResult <> '1'
						--BEGIN
						--	SET @strRetrun = @funResult
						--	return
						--END

						if @GLType = 0
						begin
							UPDATE tblAccounts SET decOpenBalanceF = @decOpeningBalance, decBalanceF = @decBalance, decLYEndBalanceF = @decOpeningBalance WHERE intGLNumber = @strGLNumLinked AND decBalance <> @decBalance
						end
						else if @GLType = 1
						begin
							UPDATE tblAccountsLY SET decBalanceF = @decBalance WHERE intGLNumber = @strGLNumLinked AND decBalance <> @decBalance
						end

			
			if @Min_AutoID1 = @Max_AutoID1 
				break;
			set @Min_AutoID1 += 1
		end
		

		insert into @tblUtilityPervLedgerTransactions1
		(
			 AccNumber
			,Amount
			,CurrAmt
		)
		SELECT	 AccNumber
				,ROUND((
							BalanceThis01 
						+	BalanceThis02 
						+	BalanceThis03 
						+	BalanceThis04 
						+	BalanceThis05 
						+	BalanceThis06 
						+	BalanceThis07 
						+	BalanceThis08 
						+	BalanceThis09 
						+	BalanceThis10 
						+	BalanceThis11 
						+	BalanceThis12
						),2) AS Balance
				, ROUND((
								BalanceLast01 
							+	BalanceLast02 
							+	BalanceLast03 
							+	BalanceLast04 
							+	BalanceLast05 
							+	BalanceLast06 
							+	BalanceLast07 
							+	BalanceLast08 
							+	BalanceLast09 
							+	BalanceLast10 
							+	BalanceLast11 
							+	BalanceLast12 	
							),2) AS Balance 
				FROM tblUtilityPervLedgerMaster 
				WHERE 
							FinancialCategory < 90 
						AND NumberSubAccs = 0 
						AND	(@GLType = 1 OR	ROUND((	BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + BalanceThis05 + BalanceThis06 + 
											BalanceThis07 + BalanceThis08 + BalanceThis09 + BalanceThis10 + BalanceThis11 + BalanceThis12),2) <> 0)
						and (@GLType = 0 OR ROUND((	BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + 
											BalanceLast07 + BalanceLast08 + BalanceLast09 + BalanceLast10 + BalanceLast11 + BalanceLast12),2) <> 0)


		set @Min_AutoID1 = 0
		set @Max_AutoID1 = 0

		set @decOpeningBalance	= 0
		set @decBalance			= 0
		select @Min_AutoID1 = min(AutoID) from @tblUtilityPervLedgerTransactions1
		select @Max_AutoID1 = min(AutoID) from @tblUtilityPervLedgerTransactions1

		while 1=1
		begin
			SELECT 
							@AccNumber		=	AccNumber
						,	@Amount			=	Amount
						,	@CurrAmt 		=	CurrAmt 
					FROM @tblUtilityPervLedgerTransactions1
					where autoid = @Min_AutoID1


					
					set @decBalance				=	case when @GLType = 0 then @Amount else @CurrAmt end
					

						set @strGLNumLinked = ''

						select top 1 @strGLNumLinked = [dbo].[fnGetAccountNumber](isnull(COl05, ''))  from @tblImportGLAccounts	where COL01 = @AccNumber
						
						if rtrim(isnull(@strGLNumLinked, '')) = ''
						begin
							set @strRetrun = 'General Ledger Account Number doesn''t exist within the Masterfile '''  +  @AccNumber
							return;
						end

						SET @strGLNumCheck = @strGLNumLinked


						SET @funResult = dbo.[fnIsCreditAccountType](@strGLNumCheck)
						if @funResult = '1'
						BEGIN
							SET @decBalance			= @decBalance * -1	
						END
						--ELSE IF @funResult <> '0' AND @funResult <> '1'
						--BEGIN
						--	SET @strRetrun = @funResult
						--	return
						--END

						if @GLType = 0
						begin
							UPDATE tblAccounts SET decBalance = @decBalance WHERE intGLNumber = @strGLNumLinked
						end
						else if @GLType = 1
						begin
							UPDATE tblAccountsLY SET decBalance = @decBalance WHERE intGLNumber = @strGLNumLinked
						end

			
			if @Min_AutoID1 = @Max_AutoID1 
				break;
			set @Min_AutoID1 += 1
		end


		delete from @tblUtilityPervLedgerTransactions1

		insert into @tblUtilityPervLedgerTransactions1
		(
			 AccNumber
			,Amount
			,CurrAmt
		)
		SELECT	 AccNumber
				,ROUND((
							LastBalance01 
						+	LastBalance02 
						+	LastBalance03 
						+	LastBalance04 
						+	LastBalance05 
						+	LastBalance06 
						+	LastBalance07 
						+	LastBalance08 
						+	LastBalance09 
						+	LastBalance10 
						+	LastBalance11 
						+	LastBalance12
						),2) AS OpeningBalance
				, ROUND((
								LastBalance01 
							+	LastBalance02 
							+	LastBalance03 
							+	LastBalance04 
							+	LastBalance05 
							+	LastBalance06 
							+	LastBalance07 
							+	LastBalance08 
							+	LastBalance09 
							+	LastBalance10 
							+	LastBalance11 
							+	LastBalance12 
							+	Balance01 
							+	Balance02 
							+	Balance03 
							+	Balance04 
							+	Balance05 
							+	Balance06 
							+	Balance07 
							+	Balance08 
							+	Balance09 
							+	Balance10 
							+	Balance11 
							+	Balance12 
							),2) AS Balance 
				FROM tblUtilityPervCashBookCurrency 
				WHERE 					
						(	ROUND((	LastBalance01 + LastBalance02 + LastBalance03 + LastBalance04 + LastBalance05 + LastBalance06 + 
											LastBalance07 + LastBalance08 + LastBalance09 + LastBalance10 + LastBalance11 + LastBalance12),2) <> 0 
								OR (@GLType = 0 AND	ROUND((	Balance01 + Balance02 + Balance03 + Balance04 + Balance05 + Balance06 + 
											Balance07 + Balance08 + Balance09 + Balance10 + Balance11 + Balance12),2) <> 0))


		set @Min_AutoID1 = 0
		set @Max_AutoID1 = 0
		set @decOpeningBalance	 = 0
		set @decBalance			 = 0
		select @Min_AutoID1 = min(AutoID) from @tblUtilityPervLedgerTransactions1
		select @Max_AutoID1 = min(AutoID) from @tblUtilityPervLedgerTransactions1

		while 1=1
		begin
			SELECT 
							@AccNumber		=	AccNumber
						,	@Amount			=	Amount
						,	@CurrAmt 		=	CurrAmt 
					FROM @tblUtilityPervLedgerTransactions1
					where autoid = @Min_AutoID1


					
					set @decOpeningBalance		=	@Amount
					set @decBalance				=	case when @GLType = 0 then @CurrAmt else @Amount end


						set @strGLNumLinked = ''

						select top 1 @strGLNumLinked = [dbo].[fnGetAccountNumber](isnull(COl05, ''))  from @tblImportGLAccounts	where COL01 = @AccNumber
						
						if rtrim(isnull(@strGLNumLinked, '')) = ''
						begin
							set @strRetrun = 'General Ledger Account Number doesn''t exist within the Masterfile '''  +  @AccNumber
							return;
						end

						SET @strGLNumCheck = @strGLNumLinked


						SET @funResult = dbo.[fnIsCreditAccountType](@strGLNumCheck)
						if @funResult = '1'
						BEGIN
							SET @decOpeningBalance	= @decOpeningBalance * -1
							SET @decBalance			= @decBalance * -1	
						END
						--ELSE IF @funResult <> '0' AND @funResult <> '1'
						--BEGIN
						--	SET @strRetrun = @funResult
						--	return
						--END

						if @GLType = 0
						begin
							UPDATE tblAccounts SET decOpenBalance = @decOpeningBalance, decBalance = @decBalance, decLYEndBalance = @decOpeningBalance WHERE intGLNumber = @strGLNumLinked
						end
						else if @GLType = 1
						begin
							UPDATE tblAccountsLY SET decBalance = @decBalance WHERE intGLNumber = @strGLNumLinked
						end

			
			if @Min_AutoID1 = @Max_AutoID1 
				break;
			set @Min_AutoID1 += 1
		end

		 declare @decProfitLoss as money= 0
		if @GLType = 0
		begin
			
                    SELECT TOP 1 @decProfitLoss = LastProfitLossAmt FROM tblUtilityPervLedgerParameters                    
                    set @decProfitLoss = @decProfitLoss * -1
                    UPDATE tblAccounts SET decOpenBalance = decOpenBalance + @decProfitLoss, decBalance = decBalance + @decProfitLoss, decLYEndBalance = decOpenBalance WHERE bitIsLinkedAccount = 1 AND bitLinkREarnings = 1
                    UPDATE tblAccounts SET		 decBalance			= ((SELECT SUM(decBalance) FROM tblAccounts WHERE intAccType = 4) - (SELECT SUM(decBalance) FROM tblAccounts WHERE intAccType = 5))
												,decLYEndBalance	= (SELECT decBalance FROM tblAccounts WHERE bitIsLinkedAccount = 1 AND bitLinkREarnings = 1) WHERE bitIsLinkedAccount = 1 AND bitLinkCEarnings = 1
		end
		else if @GLType = 1
		begin 
					UPDATE tblAccounts SET decLYEndBalance = decOpenBalance WHERE intAccType < 4 AND bitLinkREarnings = 0 AND bitLinkCEarnings = 0
                    
					UPDATE tblAccounts SET decLYEndBalance = ISNULL((SELECT decBalance FROM tblAccountsLY WHERE bitIsLinkedAccount = 1 AND bitLinkREarnings = 1),0) WHERE bitIsLinkedAccount = 1 AND bitLinkREarnings = 1
                    
					UPDATE tblAccountsLY SET decBalance = ISNULL(((SELECT SUM(decBalance) FROM tblAccountsLY WHERE intAccType = 4) - (SELECT SUM(decBalance) FROM tblAccountsLY WHERE intAccType = 5)),0) 
					WHERE bitIsLinkedAccount = 1 AND bitLinkCEarnings = 1
                    
					UPDATE tblAccounts SET decLYEndBalance = ISNULL((SELECT decBalance FROM tblAccountsLY WHERE bitIsLinkedAccount = 1 AND bitLinkCEarnings = 1),0) 
					WHERE bitIsLinkedAccount = 1 AND bitLinkCEarnings = 1

                    UPDATE tblAccountsLY SET decOpenBalance = (ISNULL((SELECT SUM(JE.decAmount) FROM tblJournalEntLY JE WHERE JE.intGLNumber = tblAccountsLY.intGLNumber),0) * -1) + decBalance 
					WHERE tblAccountsLY.intAccType < 4
		end
end
GO
/****** Object:  StoredProcedure [dbo].[ImportINRecurring]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportINRecurring]
(
	@REName NVARCHAR(100),
	@CustName NVARCHAR(100),
	@SoldTo NVARCHAR(1000),		
	@ShipTo NVARCHAR(1000),
	@Reference NVARCHAR(100),				
	@SubTotal MONEY,
	@VAT MONEY,
	@Total MONEY,
	@Notes NVARCHAR(MAX),
	@PaidBy NVARCHAR(40),
	@Account NVARCHAR(60),
	@SalesName NVARCHAR(100),
	@AddInfo NVARCHAR(100),
	@DiscPerc MONEY,
	@DiscAmt MONEY,
	@LineNo INT,
	@PartNumber NVARCHAR(100),
	@Location NVARCHAR(20),
	@PartDesc NVARCHAR(1000),
	@Qty MONEY,
	@Unit NVARCHAR(30),
	@PriceEaInc MONEY,
	@TaxCode NVARCHAR(4),
	@LineTaxAmt MONEY,
	@LineTotInc MONEY,		
	@InvField1 NVARCHAR(200),
	@InvField2 NVARCHAR(200),
	@InvField3 NVARCHAR(200),
	@InvField4 NVARCHAR(200),
	@InvField5 NVARCHAR(200),
	@InvField6 NVARCHAR(200),
	@LineField1 NVARCHAR(100),
	@LineField2 NVARCHAR(100),
	@LineField3 NVARCHAR(100),
	@LineField4 NVARCHAR(100),
	@LineField5 NVARCHAR(100),
	@LineField6 NVARCHAR(100),
	@LineField7 NVARCHAR(100),
	@LineField8 NVARCHAR(100),
	@LineField9 NVARCHAR(100),
	@LineField10 NVARCHAR(100),
	@LineField11 NVARCHAR(100),
	@LineField12 NVARCHAR(100),
	@LineDiscPerc MONEY,
	@LineDiscAmt MONEY,
	@IsItem BIT
)
AS
BEGIN
	
	DECLARE @LastProcDate AS SMALLDATETIME --= CAST ('1999-1-1' AS DATETIME)

	SELECT @LastProcDate = dteLastProcDate FROM tblSalesRE WHERE strREName = @REName AND NOT dteLastProcDate IS NULL

	DELETE FROM tblSalesRE WHERE strREName = @REName

	INSERT INTO tblSalesRE VALUES (@REName, @LastProcDate, @CustName, @SoldTo, @ShipTo, @Reference, @SubTotal, @VAT, @Total, @Notes, 0, @Account, @SalesName, @AddInfo, @DiscPerc, @DiscAmt, @PaidBy)

	DECLARE @Type AS TINYINT
	DECLARE @AllowPrcChg AS BIGINT	
	DECLARE @StockUnit AS NVARCHAR(30)	
	DECLARE @SellFromStock AS MONEY
	DECLARE @StockQty AS MONEY

	SELECT @Type = intType, @AllowPrcChg = bitAllowPriceChg, @StockUnit = strSellStockUnit, @SellFromStock = decSellFromStock FROM tblInv WHERE strPartNumber = @PartNumber

	IF @IsItem = 1
	BEGIN
		SET @StockQty = @Qty * @SellFromStock
	END
	ELSE
	BEGIN
		SET @SellFromStock = 1
		SET @StockQty = @Qty
	END

	INSERT INTO tblSalesREDT VALUES (@REName, @LineNo, @PartNumber, @Location, @PartDesc, @Qty, @Unit, @PriceEaInc, @TaxCode, @LineTaxAmt, @LineTotInc, NULL, @Type, @AllowPrcChg, @InvField1, @InvField2, @InvField3, @InvField4, @InvField5, @InvField6, @LineField1, @LineField2, @LineField3, @LineField4, @LineField5, @LineField6, @LineField7, @LineField8, @LineField9, @LineField10, @LineField11, @LineField12, @LineDiscPerc, @LineDiscAmt, @StockQty, @StockUnit, @SellFromStock, @SalesName)

END
GO
/****** Object:  StoredProcedure [dbo].[ImportInvBinLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [InvBinSearchLocation] (Control panel) **********/

/********* Start [ImportInvBinLocation] (Control panel) **********/

Create PROCEDURE [dbo].[ImportInvBinLocation] (
	 @PartNumber AS NVARCHAR(100)
	,@BinCode AS NVARCHAR(100)
	,@BinDesc AS NVARCHAR(1000)
	,@MaximumQty AS money
	,@IsAllowed AS Bit
	,@Location AS NVARCHAR(20)
	)
AS
BEGIN
	BEGIN TRY
		DECLARE @ERR_MSG AS NVARCHAR(4000) = NULL
			,@Err_Severity INT
			,@ERR_STA AS SMALLINT;
		DECLARE @IsInsert AS BIT = 0;
		--DECLARE @IsUpdate AS BIT = 0;
		
		DECLARE @blnMultipleBins As BIT = 0;
		DECLARE @PartNumberOther AS NVARCHAR(100);
		DECLARE @strPartNumber AS NVARCHAR(100) = '';

		IF LEN(@PartNumber) > 0
			BEGIN			
				SELECT @strPartNumber = strPartNumber
				FROM tblInv
				WHERE strPartNumber = @PartNumber
				
				IF datalength(@strPartNumber) = 0
				BEGIN
					SET @ERR_MSG = 'Part Number not found on row : '
					
					select @ERR_MSG;
					--RAISERROR (
					--		,@ERR_MSG
					--		,@Err_Severity
					--		,@ERR_STA
					--		);
				END
				ELSE
				BEGIN
					IF(@blnMultipleBins = 0)
						SET @blnMultipleBins = 1;

					SELECT @PartNumberOther = strPartNumber
					FROM tblInv
					WHERE strPartNumber = @PartNumber

					UPDATE tblInvLocBin
					SET strDescription = @BinDesc
					WHERE strLocName = @Location
					AND strBinCode = @BinCode

					IF @@ROWCOUNT = 0
						BEGIN
							INSERT INTO tblInvLocBin (
							strLocName
							,strBinCode
							,strDescription
							,decCapacity
							,strCapacityUnit
							,bitPickingBin
							,bitInactive
							,bitReceivingBin
							,bitProductionBin
							,bitStockingBin
							)
							VALUES (
							@Location
							,@BinCode
							,@BinDesc
							,0.00
							,0
							,0
							,0
							,0
							,0
							,0
							)
						END;


					UPDATE tblInvExtBin
					SET decMaximumQty = @MaximumQty
						,bitAllowed = @IsAllowed
					FROM tblInvExtBin
					INNER JOIN tblInvLocBin ON tblInvExtBin.strLocName = tblInvLocBin.strLocName
						AND tblInvExtBin.lngBinID = tblInvLocBin.lngID
					WHERE strPartNumber = @PartNumberOther
						AND strBinCode = @BinCode
						AND tblInvExtBin.strLocName = @Location

					--SET @IsUpdate = @IsUpdate + @@ROWCOUNT ;

					IF @@ROWCOUNT = 0
						BEGIN
							INSERT INTO tblInvExtBin (
								strPartNumber
								,strLocName
								,lngBinID
								,decAvail
								,decAlloc
								,decOnHand
								,decMaximumQty
								,bitAllowed
								,bitDefault
								)
							SELECT @PartNumberOther
								,@Location
								,lngID
								,0.00
								,0.00
								,0.00
								,@MaximumQty
								,@IsAllowed
								,0
							FROM tblInvLocBin
							WHERE strLocName = @Location
								AND strBinCode = @BinCode

						  	SET @IsInsert = 1;
						END;

						SELECT CONCAT (
				'Success: '
				,@IsInsert
				);
				END												
			END
	
		SELECT CONCAT (
			'NoImport'
			,@IsInsert
			);
	END TRY

	BEGIN CATCH
		IF ERROR_NUMBER() = 547
		BEGIN
			SET @ERR_MSG = 'Error 547: ';

			SELECT @ERR_MSG;
			
		END;
		ELSE IF ERROR_NUMBER() = 8152
		BEGIN
			SET @ERR_MSG = 'Error 8152: ';

			SELECT @ERR_MSG;
			
		END;
		ELSE
	BEGIN
			SELECT @ERR_MSG = ERROR_MESSAGE()
				,@Err_Severity = ERROR_SEVERITY()
				,@ERR_STA = ERROR_STATE();

			RAISERROR (
					@ERR_MSG
					,@Err_Severity
					,@ERR_STA
					);
		END;
	END CATCH;
END
GO
/****** Object:  StoredProcedure [dbo].[ImportInventory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ImportInventory] (  
 @SelectedFormat AS INT  
 ,@SelectedInvType AS INT  
 ,@PartNumber AS NVARCHAR(100)  
 ,@Desc AS NVARCHAR(500)  
 ,@Category AS NVARCHAR(20)  
 ,@BuyUnit AS NVARCHAR(15)  
 ,@StockUnit AS NVARCHAR(15)  
 ,@BuyToStock AS SMALLMONEY  
 ,@AddInfo AS NVARCHAR(200)  
 ,@Field1 AS NVARCHAR(100)  
 ,@Field2 AS NVARCHAR(100)  
 ,@Field3 AS NVARCHAR(100)  
 ,@Field4 AS NVARCHAR(100)  
 ,@Field5 AS NVARCHAR(100)  
 ,@Field6 AS NVARCHAR(100)  
 ,@BarCode AS NVARCHAR(600)  
 ,@SubCategory AS NVARCHAR(20)  
 ,@BarCode2 AS NVARCHAR(600)  
 ,@IsItemNumConvUsed AS BIT  
 ,@ItemSegment1 AS NVARCHAR(50)  
 ,@ItemSegment2 AS NVARCHAR(50)  
 ,@ItemSegment3 AS NVARCHAR(50)  
 ,@ItemSegment4 AS NVARCHAR(50)  
 ,@SellUnit AS NVARCHAR(15)  
 ,@SellFromStock AS SMALLMONEY  
 ,@IsInvSerialType AS BIT  
 ,@InvSerialType AS NVARCHAR(20)  
 ,@RepairCharge AS MONEY  
 ,@IsVoucherEnabled AS BIT  
 ,@DefSaleQty AS MONEY  
 ,@ExtendedDesc AS NVARCHAR(MAX)  
 ,@ISInactive AS BIT  
 ,@IsWebstoreItem AS BIT  
 ,@DimProCode AS NVARCHAR(40)  
 ,@RSTTerminalSync AS NVARCHAR(MAX)  
 ,@UseLPPOnPO AS BIT  
 ,@CostOnPO AS MONEY  
 ,@StandardCost AS MONEY  
 ,@BOMNotes AS NVARCHAR(MAX)  
 ,@Mass AS MONEY  
 ,@VolumetricWeight AS MONEY  
 ,@UnitOfMeasure AS NVARCHAR(50)  
 ,@Width AS MONEY  
 ,@Height AS MONEY  
 ,@Depth AS MONEY  
 ,@Cube AS MONEY  
 ,@Factor AS MONEY  
 ,@VoucherCode AS NVARCHAR(100)  
 ,@InvNumConv AS NVARCHAR(100)  
 ,@Type AS INT  
 ,@TypeBoth AS INT  
 ,@ExclusionsMatrixType AS INT  
 ,@ExclusionsValueBasedType AS INT  
 ,@IsInclInvForecast AS BIT  
 ,@IsDimProSales AS BIT  
 ,@IsDimProPurchases AS BIT  
 ,@InvWCCode AS NVARCHAR(100)  
 ,@SafetyFactorPer AS MONEY  
 ,@OrderLeadTime AS MONEY  
 ,@DaysSalesinStock AS MONEY  
 ,@EconomicOrderQty AS MONEY  
 ,@MinimumOrderQuantity AS MONEY  
 ,@SubCategoryGroup AS NVARCHAR(20)  
 ,@POSDesc AS NVARCHAR(100)  
 ,@IsExclCommission AS BIT  
 ,@HSCode AS NVARCHAR(MAX)  
 ,@HSDesc AS NVARCHAR(MAX)  
 ,@URACode AS NVARCHAR(MAX)  
 ,@IsEnableZmb AS BIT  
 ,@ZambiaTaxCode AS NVARCHAR(20) = NULL  
 ,@ZambiaClsCode AS NVARCHAR(100) = NULL  
 ,@ZambiaClsName AS NVARCHAR(MAX) = NULL  
 ,@KenyaItemCode as Nvarchar(200) = Null  
 ,@KenyaItemCodeCounter AS NVARCHAR(MAX) = NULL  
 ,@KenyaItemClassificationName AS NVARCHAR(MAX) = NULL 
 ,@ZambiaCountryOriginCode AS NVARCHAR(3)
 ,@ZambiaItemType AS NVARCHAR(2)
 )  
AS  
BEGIN  
 BEGIN TRY  
  DECLARE @ERR_MSG AS NVARCHAR(4000) = NULL  
   ,@Err_Severity INT = 16  
   ,@ERR_STA AS SMALLINT = 1  
  DECLARE @IsInsert AS BIT = 0  
  DECLARE @IsUpdateItem AS BIT = 0  

  DECLARE @QueryCommand AS NVARCHAR(MAX)  
  DECLARE @ParameterDefinition AS NVARCHAR(MAX)  
 IF (@IsEnableZmb = 1)
        BEGIN
            IF EXISTS (SELECT 1 FROM tblInv WHERE strPartNumber = @PartNumber)
            BEGIN
                SET @IsUpdateItem = 1;
            END
        END
  IF (@SelectedInvType <> 0)  
   SET @IsInclInvForecast = 1  
  
  IF (@SelectedInvType = 1)  
  BEGIN  
   IF LEN(@VoucherCode) > 0  
   BEGIN  
    DECLARE @strVoucherCode NVARCHAR(MAX) = ''  
  
    SELECT @strVoucherCode = strVoucherCode  
    FROM tblVoucherCodes  
    WHERE strVoucherCode = @VoucherCode  
  
    IF datalength(@strVoucherCode) = 0  
    BEGIN  
     SET @ERR_MSG = 'Voucher Code Does not Exist: '  
  
     RAISERROR (  
       @ERR_MSG  
       ,@Err_Severity  
       ,@ERR_STA  
       );  
    END  
  
    DECLARE @PartNumberOther AS NVARCHAR(100)  
  
    SELECT @PartNumberOther = strPartNumber  
    FROM tblInv  
    WHERE strVoucherCode = @VoucherCode  
     AND strPartNumber <> @PartNumber  
  
    IF @@ROWCOUNT > 0  
    BEGIN  
     SET @ERR_MSG = CONCAT (  
       'Voucher Code already exists in Item Number: '  
       ,@PartNumberOther  
       )  
  
     RAISERROR (  
       @ERR_MSG  
       ,@Err_Severity  
       ,@ERR_STA  
       );  
    END  
   END  
  END  
  
  IF LEN(@BarCode) > 0  
  BEGIN  
   SELECT @PartNumberOther = strPartNumber  
   FROM tblInv  
   WHERE (  
     strBarCode = @BarCode  
     OR strBarCode2 = @BarCode  
     )  
    AND strPartNumber <> @PartNumber  
  
   IF @@ROWCOUNT > 0  
   BEGIN  
    SET @ERR_MSG = CONCAT (  
      'Barcode already exists in Item Number: '  
      ,@PartNumberOther  
      )  
  
    RAISERROR (  
      @ERR_MSG  
      ,@Err_Severity  
      ,@ERR_STA  
      );  
   END  
  END  
  
  IF LEN(@SubCategory) > 0  
  BEGIN  
   DECLARE @strsubCategory NVARCHAR(MAX) = ''  
   DECLARE @strParentCategory NVARCHAR(MAX) = ''  
  
   SELECT @strsubCategory = strCategory  
    ,@strParentCategory = strParentCategory  
   FROM tblInvSubCat  
   WHERE strCategory = @SubCategory  
    AND strParentCategory = @Category  
  
   IF datalength(@strsubCategory) = 0  
   BEGIN  
    SET @ERR_MSG = 'Sub Category not found on Row: '  
  
    RAISERROR (  
      @ERR_MSG  
      ,@Err_Severity  
      ,@ERR_STA  
      );  
   END  
  END  
  
  IF LEN(@SubCategoryGroup) > 0  
  BEGIN  
   DECLARE @strsubCategorygrp NVARCHAR(MAX) = ''  
  
   SELECT @strsubCategorygrp = strCategory  
   FROM tblInvGroupSubCat  
   WHERE strCategory = @SubCategoryGroup  
    AND strParentCategory = @Category  
    AND strParentSubCategory = @SubCategory  
  
   IF datalength(@strsubCategorygrp) = 0  
   BEGIN  
    SET @ERR_MSG = 'Sub Category Group not found on Row: '  
  
    RAISERROR (  
      @ERR_MSG  
      ,@Err_Severity  
      ,@ERR_STA  
      );  
   END  
  END  
  
  IF LEN(@BarCode2) > 0  
  BEGIN  
   SELECT @PartNumberOther = strPartNumber  
   FROM tblInv  
   WHERE (  
     strBarCode = @BarCode2  
     OR strBarCode2 = @BarCode2  
     )  
    AND strPartNumber <> @PartNumber  
  
   IF @@ROWCOUNT > 0  
   BEGIN  
    SET @ERR_MSG = CONCAT (  
      'Barcode already exists in Item Number: '  
      ,@PartNumberOther  
      )  
  
    RAISERROR (  
      @ERR_MSG  
      ,@Err_Severity  
      ,@ERR_STA  
      );  
   END  
  END  
  
  IF (@IsInvSerialType = 1)  
  BEGIN  
   IF LEN(@InvSerialType) > 0  
   BEGIN  
    DECLARE @strInvSerialType NVARCHAR(MAX) = ''  
  
    SELECT @strInvSerialType = strInvSerialType  
    FROM tblInvSerialTypes  
    WHERE strInvSerialType = @InvSerialType  
  
    IF @@ROWCOUNT = 0  
    BEGIN  
     SET @ERR_MSG = CONCAT (  
       'Serial or Lot Type not found on Row: '  
       ,@strInvSerialType  
       )  
  
     RAISERROR (  
       @ERR_MSG  
       ,@Err_Severity  
       ,@ERR_STA  
       );  
    END  
   END  
  END  
  
  IF @SelectedFormat = 1  
  BEGIN  
   IF @IsItemNumConvUsed = 1  
   BEGIN  
    DECLARE @strInvNumConv NVARCHAR(MAX) = ''  
  
    SELECT @strInvNumConv = strInvNumConv  
    FROM tblInvNumConv  
    WHERE (  
      intType = @Type  
      OR intType = @TypeBoth  
      )  
     AND (strInvNumConv = @InvNumConv)  
  
    IF datalength(@strInvNumConv) = 0  
    BEGIN  
     SET @ERR_MSG = 'Item Numbering Convention Does not Exist: '  
  
     RAISERROR (  
       @ERR_MSG  
       ,@Err_Severity  
       ,@ERR_STA  
       );  
    END  
   END  
  END  
  
  UPDATE tblInv  
  SET strDesc = @Desc  
   ,strCategory = @Category  
   ,strSubCategory = @SubCategory  
   ,strBuyUnit = @BuyUnit  
   ,strStockUnit = @StockUnit  
   ,decBuyToStock = @BuyToStock  
   ,dteLastUpdated = GetDate()  
   ,strAddInfo = @AddInfo  
   ,strField1 = @Field1  
   ,strField2 = @Field2  
   ,strField3 = @Field3  
   ,strField4 = @Field4  
   ,strField5 = @Field5  
   ,strField6 = @Field6  
   ,strBarCode = @BarCode  
   ,bitItemNumConvUsed = @IsItemNumConvUsed  
   ,strItemSegment1 = @ItemSegment1  
   ,strItemSegment2 = @ItemSegment2  
   ,strItemSegment3 = @ItemSegment3  
   ,strItemSegment4 = @ItemSegment4  
   ,strSellUnit = @SellUnit  
   ,strSellStockUnit = @StockUnit  
   ,decSellFromStock = @SellFromStock  
   ,strBarCode2 = @BarCode2  
   ,bitInvSerialType = @IsInvSerialType  
   ,strInvSerialType = @InvSerialType  
   ,decRepairCharge = @RepairCharge  
   ,bitVoucherEnabled = @IsVoucherEnabled  
   ,strVoucherCode = @VoucherCode  
   ,decDefSaleQty = @DefSaleQty  
   ,strExtendedDesc = @ExtendedDesc  
   ,bitInactive = @ISInactive  
   ,bitWebstoreItem = @IsWebstoreItem  
   ,strDimProCode = @DimProCode  
   ,strRSTTerminalSync = @RSTTerminalSync  
   ,bitUseLPPOnPO = @UseLPPOnPO  
   ,decCostOnPO = @CostOnPO  
   ,decStandardCost = @StandardCost  
   ,strBOMNotes = @BOMNotes  
   ,decMass = @Mass  
   ,decVolumetricWeight = @VolumetricWeight  
   ,strUnitOfMeasure = @UnitOfMeasure  
   ,decW = @Width  
   ,decH = @Height  
   ,decD = @Depth  
   ,decCube = @Cube  
   ,decFactor = @Factor  
   ,bitInclInvForecast = @IsInclInvForecast  
   ,bitDimProSales = @IsDimProSales  
   ,bitDimProPurchases = @IsDimProPurchases  
   ,strInvWCCode = @InvWCCode  
   ,decSafetyFactorPer = @SafetyFactorPer  
   ,decOrderLeadTime = @OrderLeadTime  
   ,decDaysSalesinStock = @DaysSalesinStock  
   ,decEconomicOrderQty = @EconomicOrderQty  
   ,decMinimumOrderQuantity = @MinimumOrderQuantity  
   ,strSubCategoryGroup = @SubCategoryGroup  
   ,strPOSDesc = @POSDesc  
   ,bitExclCommission = @IsExclCommission  
   ,strHSCode = @HSCode  
   ,strHSDesc = @HSDesc  
   ,strURACode = @URACode  
   ,strKenyaItemCode = @KenyaItemCode
   ,strKenyaItemClassificationName = @KenyaItemClassificationName
  WHERE strPartNumber = @PartNumber  
  
  IF @@ROWCOUNT = 0  
  BEGIN  
   DECLARE @PlaceHolder AS SMALLDATETIME = CAST('1999-01-01' AS SMALLDATETIME)  
   DECLARE @IsInvExtDescOnSI AS BIT = 0  
   DECLARE @IsInvExtDescOnSO AS BIT = 0  
   DECLARE @IsInvExtDescOnSQ AS BIT = 0  
   DECLARE @IsInvExtDescOnSFHQ AS BIT = 0  
   DECLARE @IsInvExtDescOnCR AS BIT = 0  
   DECLARE @IsInvExtDescOnPI AS BIT = 0  
   DECLARE @IsInvExtDescOnPO AS BIT = 0  
   DECLARE @IsInvExtDescOnPQ AS BIT = 0  
   DECLARE @IsInvExtDescOnBRQ AS BIT = 0  
  
   SELECT @IsInvExtDescOnSI = bitInvExtDescOnSI  
    ,@IsInvExtDescOnSO = bitInvExtDescOnSO  
    ,@IsInvExtDescOnSQ = bitInvExtDescOnSQ  
    ,@IsInvExtDescOnSFHQ = bitInvExtDescOnSFHQ  
    ,@IsInvExtDescOnCR = bitInvExtDescOnCR  
    ,@IsInvExtDescOnPI = bitInvExtDescOnPI  
    ,@IsInvExtDescOnPO = bitInvExtDescOnPO  
    ,@IsInvExtDescOnPQ = bitInvExtDescOnPQ  
    ,@IsInvExtDescOnBRQ = bitInvExtDescOnBRQ  
   FROM tblCoOpts  
  
   INSERT INTO tblInv (  
    strPartNumber  
    ,strDesc  
    ,intType  
    ,strCategory  
    ,intExpAcct  
    ,decCostOnPO  
    ,bitUseLPPOnPO  
    ,intReorderQty  
    ,strBuyUnit  
    ,strStockUnit  
    ,decBuyToStock  
    ,bitAllowPriceChg  
    ,dteDateLastSale  
    ,dteLastPurchase  
    ,decLastPPUnit  
    ,dteLastUpdated  
    ,bitUseBOM  
    ,intBOMQty  
    ,strAddInfo  
    ,bitInactive  
    ,decSumAvail  
    ,decSumAlloc  
    ,decSumOnHand  
    ,decSumValue  
    ,decSumOnOrder  
    ,decSumOpenQty  
    ,decSumOpenValue  
    ,decSumValYearStart  
    ,decSumQtyYearStart  
    ,decSumAmtSoldYTD  
    ,decSumAmtSoldLY  
    ,decSumQtySoldYTD  
    ,decSumQtySoldLY  
    ,decSumCOGSYTD  
    ,decSumCOGSLY  
    ,intSumNumTransYTD  
    ,intSumNumTransLY  
    ,bitAutoBuild  
    ,strField1  
    ,strField2  
    ,strField3  
    ,strField4  
    ,strField5  
    ,strField6  
    ,strBarCode  
    ,decStandardCost  
    ,bitItemNumConvUsed  
    ,strSellUnit  
    ,strSellStockUnit  
    ,decSellFromStock  
    ,strItemSegment1  
    ,strItemSegment2  
    ,strItemSegment3  
    ,strItemSegment4  
    ,strInvNumConv  
    ,bitInvSerialType  
    ,strInvSerialType  
    ,decRepairCharge  
    ,strBarCode2  
    ,bitVoucherEnabled  
    ,strVoucherCode  
    ,decDefSaleQty  
    ,strExtendedDesc  
    ,bitInvExtDescOnSI  
    ,bitInvExtDescOnSO  
    ,bitInvExtDescOnSQ  
    ,bitInvExtDescOnSFHQ  
    ,bitInvExtDescOnCR  
    ,bitInvExtDescOnPI  
    ,bitInvExtDescOnPO  
    ,bitInvExtDescOnPQ  
    ,bitWebstoreItem  
    ,strDimProCode  
    ,strRSTTerminalSync  
    ,intDecimalQuantity  
    ,strBOMNotes  
    ,bitInvExtDescOnBRQ  
    ,decMass  
    ,decVolumetricWeight  
    ,strUnitOfMeasure  
    ,decW  
    ,decH  
    ,decD  
    ,decCube  
    ,decFactor  
    ,decMaxLevel  
    ,decOrderLeadTime  
    ,decSafetyFactorPer  
    ,decDaysSalesinStock  
    ,decMinimumOrderQuantity  
    ,decNewDailySales  
    ,decOldMinLevel  
    ,decMinimumLevel  
    ,decOldMaxLevel  
    ,decEconomicOrderQty  
    ,bitPallet  
    ,bitInclInvForecast  
    ,bitDimProSales  
    ,bitDimProPurchases  
    ,strInvWCCode  
    ,decLastManCost  
    ,bitAutoBuildSameLoc  
    ,strFileName  
    ,strSubCategory  
    ,decSumManuf  
    ,strSubCategoryGroup  
    ,bitExclCommission  
    ,strPOSDesc  
    ,bitOtherCmp  
    ,bitPrintComp  
    ,dteRowUpdated  
    ,bitSumComp  
    ,decDensity  
    ,bitIsSuperseded  
    ,strSupersededBy  
    ,strSupersededDescription  
    ,dtesupersessiondate  
    ,bitPendingApproval  
    ,strHsCode  
    ,strHSDesc  
    ,strURACode  
    ,bitDefaultUOM  
    ,strZambiaItemClassificationName 
	,strZambiaInvCountryOriginCode
	,intZambiaItemType
    ,strKenyaItemCode  
    ,strKenyaItemCodeCounter  
    ,strKenyaItemClassificationName      
    )  
   VALUES (  
    @PartNumber  
    ,@Desc  
    ,@Type  
    ,@Category  
    ,0  
    ,@CostOnPO  
    ,@UseLPPOnPO  
    ,0  
    ,@BuyUnit  
    ,@StockUnit  
    ,@BuyToStock  
    ,1  
    ,@PlaceHolder  
    ,@PlaceHolder  
    ,0  
    ,GetDate()  
    ,0  
    ,1  
    ,@AddInfo  
    ,@IsInactive  
    ,0  
    ,0  
    ,0  
    ,0  
    ,0  
    ,0  
    ,0  
    ,0  
    ,0  
    ,0  
    ,0  
    ,0  
    ,0  
    ,0  
    ,0  
    ,0  
    ,0  
    ,0  
    ,@Field1  
    ,@Field2  
    ,@Field3  
    ,@Field4  
    ,@Field5  
    ,@Field6  
    ,@BarCode  
    ,@StandardCost  
    ,@IsItemNumConvUsed  
    ,@SellUnit  
    ,@StockUnit  
    ,@SellFromStock  
    ,@ItemSegment1  
    ,@ItemSegment2  
    ,@ItemSegment3  
    ,@ItemSegment4  
    ,@InvNumConv  
    ,@IsInvSerialType  
    ,@InvSerialType  
    ,@RepairCharge  
    ,@BarCode2  
    ,@IsVoucherEnabled  
    ,@VoucherCode  
    ,@DefSaleQty  
    ,@ExtendedDesc  
    ,@IsInvExtDescOnSI  
    ,@IsInvExtDescOnSO  
    ,@IsInvExtDescOnSQ  
    ,@IsInvExtDescOnSFHQ  
    ,@IsInvExtDescOnCR  
    ,@IsInvExtDescOnPI  
    ,@IsInvExtDescOnPO  
    ,@IsInvExtDescOnPQ  
    ,@IsWebstoreItem  
    ,@DimProCode  
    ,@RSTTerminalSync  
    ,2  
    ,@BOMNotes  
    ,@IsInvExtDescOnBRQ  
    ,@Mass  
    ,@VolumetricWeight  
    ,@UnitOfMeasure  
    ,@Width  
    ,@Height  
    ,@Depth  
    ,@Cube  
    ,@Factor  
    ,0  
    ,@OrderLeadTime  
    ,@SafetyFactorPer  
    ,@DaysSalesinStock  
    ,@MinimumOrderQuantity  
    ,0  
    ,0  
    ,0  
    ,0  
    ,@EconomicOrderQty  
    ,0  
    ,@IsInclInvForecast  
    ,@IsDimProSales  
    ,@IsDimProPurchases  
    ,@InvWCCode  
    ,0  
    ,0  
    ,NULL  
    ,@SubCategory  
    ,0  
    ,@SubCategoryGroup  
    ,@IsExclCommission  
    ,@POSDesc  
    ,0  
    ,0  
    ,GetDate()  
    ,0  
    ,0  
    ,0  
    ,NULL  
    ,NULL  
    ,NULL  
    ,0  
    ,@HSCode  
    ,@HSDesc  
    ,@URACode  
    ,1  
    ,CASE   
     WHEN @ZambiaClsName IS NOT NULL  
      THEN @ZambiaClsName  
     WHEN @ZambiaClsCode IS NOT NULL  
      THEN (  
        SELECT strItemClsNm  
        FROM tblZambiaItemClassifications  
        WHERE strItemClsCd = @ZambiaClsCode  
        )  
     ELSE NULL  
     END  
	 ,ISNULL(@ZambiaCountryOriginCode,'ZM')
	 ,ISNULL(CAST(@ZambiaItemType AS INT),2)
     ,@KenyaItemCode  
     ,@KenyaItemCodeCounter  
     ,@KenyaItemClassificationName  
    )  
  
   IF (@IsEnableZmb = 1)  
   BEGIN  
    INSERT INTO tblInvItemTax  
    VALUES (  
     @PartNumber  
     ,0  
     ,''  
     ,0  
     ,0.00  
     ,''  
     ,GETDATE()  
     ,GETDATE()  
     ,'A'  
     ,@ZambiaTaxCode  
     )  
   END  
  
   DECLARE @PricelistTempData AS TABLE (  
    ID INT NOT NULL IDENTITY(1, 1) PRIMARY KEY  
    ,PriceBasedID UNIQUEIDENTIFIER  
    ,Pricelist NVARCHAR(40)  
    )  
  
   INSERT INTO @PricelistTempData  
   SELECT uidPriceBasedID  
    ,strPricelist  
   FROM tblPricelists  
  
   DECLARE @Id AS INT  
   DECLARE @PriceBasedID AS UNIQUEIDENTIFIER  
   DECLARE @Pricelist AS NVARCHAR(40)  
  
   WHILE (  
     (  
      SELECT Count(1)  
      FROM @PricelistTempData  
      ) > 0  
     )  
   BEGIN  
    SELECT TOP 1 @Id = ID  
     ,@PriceBasedID = PriceBasedID  
     ,@Pricelist = Pricelist  
    FROM @PricelistTempData  
  
    INSERT INTO tblInvPrice  
    VALUES (  
     @PriceBasedID  
     ,@PartNumber  
     ,@Pricelist  
     ,0  
     ,0  
     ,0  
     ,NULL  
     ,NULL  
     ,NULL  
     ,NULL  
     ,GETDATE()  
     ,NULL  
     ,NULL  
     ,'EA'  
     ,1  
     )  
  
    DELETE  
    FROM @PricelistTempData  
    WHERE ID = @Id  
   END  
  
   DECLARE @AcctSet AS NVARCHAR(100)  
  
   IF @SelectedInvType = 0  
   BEGIN  
    SELECT TOP 1 @AcctSet = strAcctSet  
    FROM tblAccountSets  
    WHERE blnService = 0  
     AND blnBuyout = 0  
   END  
   ELSE IF @SelectedInvType = 1  
   BEGIN  
    SELECT TOP 1 @AcctSet = strAcctSet  
    FROM tblAccountSets  
    WHERE blnService = 1  
   END  
   ELSE IF @SelectedInvType = 2  
   BEGIN  
    SELECT TOP 1 @AcctSet = strAcctSet  
    FROM tblAccountSets  
    WHERE blnBuyout = 1  
   END  
  
   DECLARE @InvLocTempData AS TABLE (  
    ID INT NOT NULL IDENTITY(1, 1) PRIMARY KEY  
    ,LocName NVARCHAR(20)  
    )  
  
   INSERT INTO @InvLocTempData  
   SELECT strLocName  
   FROM tblInvLoc  
  
   DECLARE @LocName AS NVARCHAR(20)  
  
   WHILE (  
     (  
      SELECT Count(1)  
      FROM @InvLocTempData  
      ) > 0  
     )  
   BEGIN  
    SELECT TOP 1 @Id = ID  
     ,@LocName = LocName  
    FROM @InvLocTempData  
  
    INSERT INTO tblInvExt (  
     strPartNumber  
     ,strLocName  
     ,decAvail  
     ,decAlloc  
     ,decOnHand  
     ,decValue  
     ,decOnOrder  
     ,decOpenQty  
     ,decOpenValue  
     ,intReorderPoint  
     ,strAcctSet  
     ,strBinLoc  
     ,decMaxLevel  
     ,decMinimumLevel  
     ,bitInactive  
     ,bitDefault  
     ,decManuf  
     )  
    VALUES (  
     @PartNumber  
     ,@LocName  
     ,0  
     ,0  
     ,0  
     ,0  
     ,0  
     ,0  
     ,0  
     ,0  
     ,@AcctSet  
     ,''  
     ,0  
     ,0  
     ,0  
     ,0  
     ,0  
     )  
  
    DELETE  
    FROM @InvLocTempData  
    WHERE ID = @Id  
   END  
  
   IF @SelectedInvType = 0  
   BEGIN  
    INSERT INTO tblTradeDiscMatrixTypesDT  
    SELECT uidMatrixID  
     ,@ExclusionsMatrixType  
     ,ISNULL((  
       SELECT MAX(DTL.intLineNo)  
       FROM tblTradeDiscMatrixTypesDT DTL  
       WHERE DTL.intType = @ExclusionsMatrixType  
        AND DTL.uidMatrixID = tblTradeDiscMatrixTypes.uidMatrixID  
       ), 0) + 1  
     ,0  
     ,0  
     ,0  
     ,@PartNumber  
     ,GETDATE()  
    FROM tblTradeDiscMatrixTypes  
  
    INSERT INTO tblValueBasedPricingDT  
    SELECT uidValueBasedID  
     ,@ExclusionsValueBasedType  
     ,ISNULL((  
       SELECT MAX(DTL.intLineNo)  
       FROM tblValueBasedPricingDT DTL  
       WHERE DTL.intType = @ExclusionsValueBasedType  
        AND DTL.uidValueBasedID = tblValueBasedPricing.uidValueBasedID  
       ), 0) + 1  
     ,@Category  
     ,0  
     ,0  
     ,0  
     ,@PartNumber  
    FROM tblValueBasedPricing  
    WHERE uidValueBasedID IN (  
      SELECT DISTINCT DTL.uidValueBasedID  
      FROM tblValueBasedPricingDT DTL  
      WHERE DTL.strCategory = @Category  
      )  
   END  
  
   SET @IsInsert = 1  
  END  
  
  IF @IsEnableZmb = 1  
  BEGIN  
  BEGIN TRY  
  		IF NOT EXISTS (SELECT 1 FROM tblInvExtBin WHERE strPartNumber = @PartNumber)  
		BEGIN
    -- Insert into tblInvExtBin using set-based approach with lngID and prevention of duplicate entries
    ;WITH RankedBins AS (
        SELECT 
            strLocName,
            lngID,
            ROW_NUMBER() OVER (PARTITION BY strLocName ORDER BY lngID) AS rn
        FROM tblInvLocBin
    )
    INSERT INTO tblInvExtBin (
        strPartNumber,
        strLocName,
        lngBinID,
        decAvail,
        decAlloc,
        decOnHand,
        decMaximumQty,
        bitAllowed,
        bitDefault,
        dteRowUpdated,
        decOpenQty,
        decOpenValue
    )
    SELECT 
        @PartNumber,
        strLocName,
        lngID, -- Used as lngBinID
        0, -- decAvail
        0, -- decAlloc
        0, -- decOnHand
        0, -- decMaximumQty
        1, -- bitAllowed
        CASE WHEN rn = 1 THEN 1 ELSE 0 END, -- Mark one bin as default per location
        NULL, -- dteRowUpdated
        0, -- decOpenQty
        0  -- decOpenValue
    FROM RankedBins
    WHERE NOT EXISTS (
        SELECT 1 
        FROM tblInvExtBin 
        WHERE strPartNumber = @PartNumber 
        AND strLocName = RankedBins.strLocName
        AND lngBinID = RankedBins.lngID
    )
END
  
       
  END TRY  
  BEGIN CATCH  
   SELECT ERROR_MESSAGE()  
     ,ERROR_SEVERITY()  
     ,ERROR_STATE()  
  END CATCH  
  
  DECLARE @ZmbItemClsName NVARCHAR(Max);  
    
  IF (@ZambiaClsName IS NULL)  
   SET @ZmbItemClsName = ISNULL((  
      SELECT strZambiaItemClassificationName  
      FROM tblInv  
      WHERE strPartNumber = @PartNumber  
      ), NULL)  
  ELSE  
   SET @ZmbItemClsName = @ZambiaClsName  
  
    
   IF (  
     @ZambiaTaxCode IS NULL  
     OR @ZambiaTaxCode = ''  
     )  
    SET @ZambiaTaxCode = ISNULL((  
       SELECT strZambiaItemTaxCode  
       FROM tblInvItemTax  
       WHERE strPartNumber = @PartNumber  
       ), '')  
  
   IF (  
     @ZmbItemClsName <> NULL  
     AND (  
      @ZambiaClsCode IS NULL  
      OR @ZambiaClsCode = ''  
      )  
     )  
    SET @ZambiaClsCode = ISNULL((  
       SELECT strItemClsCd  
       FROM tblZambiaItemClassifications  
       WHERE strItemClsNm = @ZmbItemClsName  
       ), '')  
  
   IF (  
     @ZambiaTaxCode <> NULL  
     OR @ZambiaTaxCode <> ''  
     )  
    UPDATE tblInvItemTax  
    SET strZambiaItemTaxCode = @ZambiaTaxCode  
    WHERE strPartNumber = @PartNumber  
   ELSE  
    UPDATE tblInvItemTax  
    SET strZambiaItemTaxCode = (  
      SELECT TOP 1 strTaxCode  
      FROM tblTaxCodes  
      )  
    WHERE strPartNumber = @PartNumber  
  
   IF (  
     @ZmbItemClsName IS NULL  
     OR Len(LTRIM(RTRIM(@ZmbItemClsName))) = 0  
     )  
   BEGIN  
    IF (  
      @ZambiaClsCode <> NULL  
      OR @ZambiaClsCode <> ''  
      )  
     UPDATE tblInv  
     SET strZambiaItemClassificationName = (  
       SELECT strItemClsNm  
       FROM tblZambiaItemClassifications  
       WHERE strItemClsCd = @ZambiaClsCode  
       )  
     WHERE strPartNumber = @PartNumber  
    ELSE  
     UPDATE tblInv  
     SET strZambiaItemClassificationName = (  
       SELECT TOP 1 strItemClsNm  
       FROM tblZambiaItemClassifications  
       )  
     WHERE strPartNumber = @PartNumber  
   END  
   ELSE  
   BEGIN  
    UPDATE tblInv  
    SET strZambiaItemClassificationName = @ZmbItemClsName
    WHERE strPartNumber = @PartNumber  
   END  
  
   DECLARE @defZmbtemCd NVARCHAR(200)  
    ,@maxCount NVARCHAR(15)  
    ,@Invtype NVARCHAR(5)  
    ,@InvStockUnit NVARCHAR(10)  
    ,@newDefaultCode NVARCHAR(200)  
    ,@ItemClsName NVARCHAR(400);  
  
   SELECT @defZmbtemCd = strZambiaItemCode  
    ,@ItemClsName = strZambiaItemClassificationName  
   FROM tblInv  
   WHERE strPartNumber = @partNumber;  
  
   --SELECT @maxCount = ISNULL(MAX(strZMBItemCodeCounter), '000000')  
   --FROM tblInv;  
  
   IF (  
     @defZmbtemCd IS NULL  
     OR @defZmbtemCd = ''  
     )  
   BEGIN  
    SELECT @Invtype = CAST(intType AS NVARCHAR)  
     ,@InvStockUnit = strStockUnit  
    FROM tblInv  
    WHERE strPartNumber = @partNumber;  
  
    IF (@Invtype = 4)  
     SET @Invtype = 3  
    ELSE  
     SET @Invtype = 2  

    IF (@IsUpdateItem <> 1)  
    BEGIN  
     SET @maxCount = FORMAT(SYSDATETIME(), 'yyyyMMddHHmmssfff');  
     SET @newDefaultCode = @ZambiaCountryOriginCode + @ZambiaItemType + 'NT' + @InvStockUnit + @maxCount;  
  
     UPDATE tblInv  
     SET strZambiaItemCode = @newDefaultCode  
      ,strZMBItemCodeCounter = @maxCount  
     WHERE strPartNumber = @partNumber;  
    END  
   END  
  END  
  
  SELECT CONCAT (  
    'Success: '  
    ,@IsInsert  
    )  
 END TRY  
  
 BEGIN CATCH  
  IF ERROR_NUMBER() = 547  
  BEGIN  
   SET @ERR_MSG = 'Error 547: '  
  
   SELECT @ERR_MSG  
  END  
  ELSE IF ERROR_NUMBER() = 8152  
  BEGIN  
   SET @ERR_MSG = 'Error 8152: '  
  
   SELECT @ERR_MSG  
  END  
  ELSE  
  BEGIN  
   IF @ERR_MSG IS NULL  
   BEGIN  
    SELECT @ERR_MSG = ERROR_MESSAGE()  
     ,@Err_Severity = ERROR_SEVERITY()  
     ,@ERR_STA = ERROR_STATE()  
   END  
   ELSE  
   BEGIN  
    SELECT @ERR_MSG  
   END  
  END  
 END CATCH  
END  
GO

/****** Object:  StoredProcedure [dbo].[ImportInventoryCategory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportInventoryCategory] (
	@strCategory NVARCHAR(20)
	,@strDesc NVARCHAR(100)
	)
AS
DECLARE @invCatCount INT

SELECT @invCatCount = COUNT(strCategory)
FROM tblInvCat
WHERE strCategory = @strCategory

IF @invCatCount = 0
BEGIN
	INSERT INTO tblInvCat
	VALUES (
		@strCategory
		,@strDesc
		,0
		,0
		,0
		,0
		,NULL
		,NULL
		,NULL
		,GETDATE()
		,0)

	INSERT INTO tblDiscountMatrix
	SELECT tblCustomerCat.strCustCategory
		,tblInvCat.strCategory
		,0
		,GETDATE()
	FROM tblInvCat
	CROSS JOIN tblCustomerCat
	WHERE tblInvCat.strCategory = @strCategory
END
GO
/****** Object:  StoredProcedure [dbo].[ImportInventoryContainer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ImportInventoryContainer]
(
	@PartNumber AS NVARCHAR(50),	
	@PartItemNumber AS NVARCHAR(50),		
	@Quantity AS MONEY,	
	@IsRoundUp AS BIT
)
AS
BEGIN

	BEGIN TRY

		DECLARE @ERR_MSG AS NVARCHAR(4000), @Err_Severity INT, @ERR_STA AS SMALLINT
	
		DECLARE @IsInsert AS BIT = 0	
								
		UPDATE tblInvContainers SET decQuantity = @Quantity, bitRoundUp = @IsRoundUp, dteRowUpdated = GETDATE() WHERE strPartNumber = @PartNumber AND strPartItemNumber = @PartItemNumber
				
				
		IF @@ROWCOUNT = 0
		BEGIN

			INSERT INTO tblInvContainers VALUES (@PartNumber, @PartItemNumber, @Quantity, @IsRoundUp, GETDATE())

			SET @IsInsert = 1

		END
		
		SELECT CONCAT('Success: ', @IsInsert)

	END TRY

	BEGIN CATCH

		IF ERROR_NUMBER() = 547
			BEGIN					
				--ROLLBACK TRAN
				SET @ERR_MSG = 'Error 547: '
				SELECT @ERR_MSG
	
			END
		ELSE IF ERROR_NUMBER() = 8152
			BEGIN					
				--ROLLBACK TRAN
				SET @ERR_MSG = 'Error 8152: '
				SELECT @ERR_MSG	
			END
		ELSE
			BEGIN			
				SELECT @ERR_MSG = ERROR_MESSAGE(),  @Err_Severity = ERROR_SEVERITY() , @ERR_STA = ERROR_STATE()								
				--ROLLBACK TRAN	
				RAISERROR (@ERR_MSG, @Err_Severity, @ERR_STA);
			END				
		
	END CATCH	
END
GO

/****** Object:  StoredProcedure [dbo].[ImportInventoryLocations]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportInventoryLocations] (
	@PartNumber AS NVARCHAR(100)
	,@LocationName AS NVARCHAR(20)
	,@AccountSet AS NVARCHAR(20)
	,@BinLocation AS NVARCHAR(100)
	,@InActive AS BIT
	,@DefaultLoc AS BIT
	)
AS
BEGIN
	BEGIN TRY
		DECLARE @ERR_MSG AS NVARCHAR(4000)
			,@Err_Severity INT
			,@ERR_STA AS SMALLINT
			,@Success_Count AS INT

		IF (
				(
					SELECT count(strAcctSet)
					FROM tblAccountSets
					WHERE strAcctSet = @AccountSet
					) = 0 And @InActive =0
				)
		BEGIN
			SET @ERR_MSG = 'Error 547: '

			SELECT @ERR_MSG
		END
		ELSE
		BEGIN
			UPDATE tblInvExt
			SET strAcctSet = @AccountSet
				,strBinLoc = @BinLocation
				,bitInactive = @InActive
				,bitDefault = @DefaultLoc
			WHERE strPartNumber = @PartNumber
				AND strLocName = @LocationName

			SET @Success_Count = CAST(@@ROWCOUNT AS INT)

			IF CAST(@Success_Count AS INT) != 0
			BEGIN
				IF (
						SELECT COUNT(strLocName)
						FROM tblInvLocBin
						WHERE (strBinCode = @BinLocation)
							AND strLocName = @LocationName
						) > 0
				BEGIN
					IF (
							SELECT COUNT(lngBinId)
							FROM tblInvExtBin
							INNER JOIN tblInvLocBin ON tblInvExtBin.strLocName = tblInvLocBin.strLocName
								AND tblInvExtBin.lngBinID = tblInvLocBin.lngID
							WHERE tblInvExtBin.strLocName = @LocationName
								AND strBinCode = @BinLocation
								AND tblInvExtBin.strPartNumber = @PartNumber
							) > 0
					BEGIN
						ONE:

						IF (
								SELECT COUNT(lngBinId)
								FROM tblInvExtBin
								INNER JOIN tblInvLocBin ON tblInvExtBin.strLocName = tblInvLocBin.strLocName
									AND tblInvExtBin.lngBinID = tblInvLocBin.lngID
								WHERE tblInvExtBin.strLocName = @LocationName
									AND bitDefault = 1
									AND tblInvExtBin.strPartNumber = @PartNumber
								) = 0
						BEGIN
							UPDATE tblInvExtBin
							SET bitDefault = 1
							FROM tblInvExtBin
							INNER JOIN tblInvLocBin ON tblInvExtBin.strLocName = tblInvLocBin.strLocName
								AND tblInvExtBin.lngBinID = tblInvLocBin.lngID
							WHERE strPartNumber = @PartNumber
								AND strBinCode = @BinLocation
								AND tblInvExtBin.strLocName = @LocationName
						END
					END
					ELSE
					BEGIN
						INSERT INTO tblInvExtBin (
							strPartNumber
							,strLocName
							,lngBinID
							,decAvail
							,decAlloc
							,decOnHand
							,decMaximumQty
							,bitAllowed
							,bitDefault
							)
						SELECT @PartNumber
							,@LocationName
							,lngID
							,0.00
							,0.00
							,0.00
							,0
							,1
							,0
						FROM tblInvLocBin
						WHERE strLocName = @LocationName
							AND strBinCode = @BinLocation

						GOTO ONE;
					END
				END
				ELSE
				BEGIN
					INSERT INTO tblInvLocBin (
						strLocName
						,strBinCode
						,strDescription
						,decCapacity
						,strCapacityUnit
						,bitPickingBin
						,bitInactive
						,bitReceivingBin
						,bitProductionBin
						,bitStockingBin
						)
					VALUES (
						@LocationName
						,@BinLocation
						,@BinLocation
						,0.00
						,0
						,0
						,0
						,0
						,0
						,0
						)

					IF (
							SELECT COUNT(lngBinId)
							FROM tblInvExtBin
							INNER JOIN tblInvLocBin ON tblInvExtBin.strLocName = tblInvLocBin.strLocName
								AND tblInvExtBin.lngBinID = tblInvLocBin.lngID
							WHERE tblInvExtBin.strLocName = @LocationName
								AND strBinCode = @BinLocation
								AND tblInvExtBin.strPartNumber = @PartNumber
							) > 0
					BEGIN
						TWO:

						IF (
								SELECT COUNT(lngBinId)
								FROM tblInvExtBin
								INNER JOIN tblInvLocBin ON tblInvExtBin.strLocName = tblInvLocBin.strLocName
									AND tblInvExtBin.lngBinID = tblInvLocBin.lngID
								WHERE tblInvExtBin.strLocName = @LocationName
									AND bitDefault = 1
									AND tblInvExtBin.strPartNumber = @PartNumber
								) = 0
						BEGIN
							UPDATE tblInvExtBin
							SET bitDefault = 1
							FROM tblInvExtBin
							INNER JOIN tblInvLocBin ON tblInvExtBin.strLocName = tblInvLocBin.strLocName
								AND tblInvExtBin.lngBinID = tblInvLocBin.lngID
							WHERE strPartNumber = @PartNumber
								AND strBinCode = @BinLocation
								AND tblInvExtBin.strLocName = @LocationName
						END
					END
					ELSE
					BEGIN
						INSERT INTO tblInvExtBin (
							strPartNumber
							,strLocName
							,lngBinID
							,decAvail
							,decAlloc
							,decOnHand
							,decMaximumQty
							,bitAllowed
							,bitDefault
							)
						SELECT @PartNumber
							,@LocationName
							,lngID
							,0.00
							,0.00
							,0.00
							,0
							,1
							,0
						FROM tblInvLocBin
						WHERE strLocName = @LocationName
							AND strBinCode = @BinLocation

						GOTO TWO;
					END
				END
			END

			SELECT CONCAT (
					'Success: '
					,@Success_Count
					)
		END
	END TRY

	BEGIN CATCH
		IF ERROR_NUMBER() = 547
		BEGIN
			SET @ERR_MSG = 'Error 547: '

			SELECT @ERR_MSG
		END
		ELSE IF ERROR_NUMBER() = 8152
		BEGIN
			SET @ERR_MSG = 'Error 8152: '

			SELECT @ERR_MSG
		END
		ELSE
		BEGIN
			SELECT @ERR_MSG = ERROR_MESSAGE()
				,@Err_Severity = ERROR_SEVERITY()
				,@ERR_STA = ERROR_STATE()

			RAISERROR (
					@ERR_MSG
					,@Err_Severity
					,@ERR_STA
					);
		END
	END CATCH
END
GO
/****** Object:  StoredProcedure [dbo].[ImportInventoryPastel]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportInventoryPastel]
(
	@strPartNumber nvarchar(50),
	@strDesc nvarchar(500),
	@intType tinyint,
	@intExpAcct nvarchar(30),
	@SQintType tinyint
)
AS
BEGIN
declare @dtePlaceHolder date = '1999/01/01'
declare @bitInvExtDescOnSI bit, @bitInvExtDescOnSO bit,@bitInvExtDescOnSQ bit,@bitInvExtDescOnSFHQ bit,@bitInvExtDescOnCR bit,@bitInvExtDescOnPI bit,
@bitInvExtDescOnPO bit,@bitInvExtDescOnPQ bit,@bitInvExtDescOnBRQ bit

SELECT @bitInvExtDescOnSI = bitInvExtDescOnSI, @bitInvExtDescOnSO = bitInvExtDescOnSO, @bitInvExtDescOnSQ = bitInvExtDescOnSQ, 
@bitInvExtDescOnSFHQ = bitInvExtDescOnSFHQ, @bitInvExtDescOnCR = bitInvExtDescOnCR, @bitInvExtDescOnPI = bitInvExtDescOnPI, 
@bitInvExtDescOnPO = bitInvExtDescOnPO, @bitInvExtDescOnPQ = bitInvExtDescOnPQ, @bitInvExtDescOnBRQ = bitInvExtDescOnBRQ FROM tblCoOpts

INSERT INTO tblInv
	(
	strPartNumber
,strDesc
,intType
,strCategory
,intExpAcct
,decCostOnPO
,bitUseLPPOnPO
,intReorderQty
,strBuyUnit
,strStockUnit
,decBuyToStock
,bitAllowPriceChg
,dteDateLastSale
,dteLastPurchase
,decLastPPUnit
,dteLastUpdated
,bitUseBOM
,intBOMQty
,strAddInfo
,bitInactive
,decSumAvail
,decSumAlloc
,decSumOnHand
,decSumValue
,decSumOnOrder
,decSumOpenQty
,decSumOpenValue
,decSumValYearStart
,decSumQtyYearStart
,decSumAmtSoldYTD
,decSumAmtSoldLY
,decSumQtySoldYTD
,decSumQtySoldLY
,decSumCOGSYTD
,decSumCOGSLY
,intSumNumTransYTD
,intSumNumTransLY
,bitAutoBuild
,strField1
,strField2
,strField3
,strField4
,strField5
,strField6
,strBarCode
,decStandardCost
,bitItemNumConvUsed
,strSellUnit
,strSellStockUnit
,decSellFromStock
,strItemSegment1
,strItemSegment2
,strItemSegment3
,strItemSegment4
,strInvNumConv
,bitInvSerialType
,strInvSerialType
,decRepairCharge
,strBarCode2
,bitVoucherEnabled
,strVoucherCode
,decDefSaleQty
,strExtendedDesc
,bitInvExtDescOnSI
,bitInvExtDescOnSO
,bitInvExtDescOnSQ
,bitInvExtDescOnSFHQ
,bitInvExtDescOnCR
,bitInvExtDescOnPI
,bitInvExtDescOnPO
,bitInvExtDescOnPQ
,bitWebstoreItem
,strDimProCode
,strRSTTerminalSync
,intDecimalQuantity
,strBOMNotes
,bitInvExtDescOnBRQ
,decMass
,decVolumetricWeight
,strUnitOfMeasure
,decW
,decH
,decD
,decCube
,decFactor
,decMaxLevel
,decOrderLeadTime
,decSafetyFactorPer
,decDaysSalesinStock
,decMinimumOrderQuantity
,decNewDailySales
,decOldMinLevel
,decMinimumLevel
,decOldMaxLevel
,decEconomicOrderQty
,bitPallet
,bitInclInvForecast
,bitDimProSales
,bitDimProPurchases
,strInvWCCode
,decLastManCost
,bitAutoBuildSameLoc
,strFileName
,strSubCategory
,bitExclCommission
,decSumManuf
,bitOtherCmp
,bitPrintComp
,dteRowUpdated
,bitSumComp
,decDensity
,bitIsSuperseded
,strSupersededBy
,strSupersededDescription
,dtesupersessiondate
,bitPendingApproval
--,bitInclInvForecastOld
,bitDefaultUOM
	)
 VALUES (@strPartNumber,@strDesc,@intType,null,@intExpAcct,0,0,0,'','',
1,1,@dtePlaceHolder,@dtePlaceHolder,0,GetDate(),0,1,'',
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'','','','','','','',
0,0,'','',1,'','','',
'',null,0,null,0,'',0,null,1,'',
@bitInvExtDescOnSI,@bitInvExtDescOnSO,@bitInvExtDescOnSQ,@bitInvExtDescOnSFHQ,@bitInvExtDescOnCR,@bitInvExtDescOnPI,@bitInvExtDescOnPO,@bitInvExtDescOnPQ,
0,N'',N'',2,N'',@bitInvExtDescOnBRQ,0,0,N'',0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,NULL,0,0, NULL,NULL,0,0,0,0,GetDate(),0,0,0,NULL,NULL,NULL,0,1)

INSERT INTO tblTradeDiscMatrixTypesDT SELECT uidMatrixID, @SQintType, ISNULL((SELECT MAX(DTL.intLineNo) FROM tblTradeDiscMatrixTypesDT DTL 
WHERE DTL.intType = @SQintType AND DTL.uidMatrixID = tblTradeDiscMatrixTypes.uidMatrixID),0) + 1, 0, 0, 0, @strPartNumber, GETDATE() FROM tblTradeDiscMatrixTypes
END
GO
/****** Object:  StoredProcedure [dbo].[ImportInvVendor1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportInvVendor1]
(
 @PartNumber NVARCHAR(50),
 @VendName AS NVARCHAR(50),
 @ItemCode AS NVARCHAR(50),
 @ItemDesc AS NVARCHAR(500),
 @WarrantyDays AS int,
 @Price AS MONEY,
 @Preferred AS BIT,
 @DiscPerc AS MONEY,
 @LandedCostFactor AS MONEY,
 @CurrencyCode As NVARCHAR(50),
 @dteSessionDate As DATETIME,
 @uidPriceBasedID as uniqueIdentifier 
)

AS
BEGIN	
	BEGIN TRY
		DECLARE @ERR_MSG AS NVARCHAR(4000), @Err_Severity INT, @ERR_STA AS SMALLINT

		DECLARE @EXCHANGE AS DECIMAL = 1
		DECLARE @IsInsert AS BIT = 0

		IF LEN(@CurrencyCode)= 0
		BEGIN
			SELECT @EXCHANGE = decRate FROM tblCurrencyExc WHERE strCurrency = (SELECT strCurrency FROM tblVendors WHERE strVendName = @VendName) AND dteDate = (SELECT MAX(dteDate) FROM tblCurrencyExc WHERE strCurrency = (SELECT strCurrency FROM tblVendors WHERE strVendName = @VendName) AND dteDate <= @dteSessionDate)
		END
		ELSE
		BEGIN
			SELECT @EXCHANGE = decRate FROM tblCurrencyExc WHERE strCurrency = @CurrencyCode AND dteDate = (SELECT MAX(dteDate) FROM tblCurrencyExc WHERE strCurrency = @CurrencyCode AND dteDate <= @dteSessionDate)
		END
				
		DECLARE @LocalPrice AS MONEY = @Price * @EXCHANGE

		IF @Preferred = 1
		BEGIN
			UPDATE tblInvVend SET bitPreferred = 0 WHERE strPartNumber = @PartNumber
		END

		UPDATE tblInvVend SET strItemCode = @ItemCode, strItemDesc = @ItemDesc, intWarrantyDays = @WarrantyDays, decPrice = @Price, bitPreferred = @Preferred, decDiscPerc = @DiscPerc, decLocalPrice = @LocalPrice, decLandedCostFactor = @LandedCostFactor WHERE strPartNumber = @PartNumber AND strVendName = @VendName
				
		IF @@ROWCOUNT = 0
		BEGIN			
			
			INSERT INTO tblInvVend VALUES (@PartNumber,@VendName,@ItemCode,@ItemDesc,@WarrantyDays,@Price,@Preferred,@DiscPerc,@LocalPrice,@LandedCostFactor,0,0,0,NULL,0,@uidPriceBasedID,0)
			SET @IsInsert = 1
		END
		ELSE
		BEGIN
			SET @IsInsert = 0
		END
		SELECT CONCAT('Success: ' , @IsInsert)
	END TRY
	BEGIN CATCH
	print('catch')
	print(ERROR_NUMBER())
		IF ERROR_NUMBER()= 8152
		BEGIN 
			SET @ERR_MSG = 'Error 8152: '
			SELECT @ERR_MSG
		END
		ELSE IF ERROR_NUMBER()= 547
		BEGIN 
			SET @ERR_MSG = 'Error 547: '
			SELECT @ERR_MSG
		END
		ELSE
		BEGIN
			SELECT @ERR_MSG = ERROR_MESSAGE(), @Err_Severity = ERROR_SEVERITY(), @ERR_STA = ERROR_STATE()		
			RAISERROR (@ERR_MSG, @Err_Severity, @ERR_STA);
		END
	END CATCH
END
GO
/****** Object:  StoredProcedure [dbo].[ImportInvVendor2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportInvVendor2]

AS

BEGIN

UPDATE tblInvVend SET bitPreferred = 1 WHERE (SELECT COUNT(DISTINCT strVendName) FROM tblInvVend) = 1

END

GO
/****** Object:  StoredProcedure [dbo].[ImportJournalCCYHist]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportJournalCCYHist]
(
	@dteStartDate datetime,
	@dteEndDate datetime,
	@intTransactionID int,
	@strUserName varchar(100),
	@dteDate datetime
)
AS

CREATE TABLE #UtilityPervData
(
	ID int identity(1,1),
	GDC char(1),
	AccNumber char(7),
	DDate datetime,
	Refrence char(8),
	[Description] char(60),
	Amount money,
	CurrCode smallint,
	CurrAmt money
)

Insert into #UtilityPervData
SELECT GDC, AccNumber, DDate, Refrence, Description, Amount, CurrCode, CurrAmt FROM tblUtilityPervLedgerTransactions 
WHERE TransactionID = @intTransactionID  AND (DDate = @dteDate) AND (DDate BETWEEN @dteStartDate AND @dteEndDate) ORDER BY GDC, AutoNumber

declare @UtilityPervDataCount int,@JournalID int,@DDate datetime,@Refrence char(8),@Description char(60),@AccNumber char(7),@lineNum int = 0,@GDC char(1),@id int,
@intGLNumber varchar(100)

Select @UtilityPervDataCount = Count(0) from #UtilityPervData
SELECT @JournalID = ISNULL(MAX(lngJourID), 0) FROM tblJournal
SET @JournalID = @JournalID + 1

IF @UtilityPervDataCount > 0
BEGIN
	SELECT TOP 1 @AccNumber = AccNumber, @DDate = DDate, @Refrence = Refrence, @Description = Description FROM #UtilityPervData
	SELECT TOP 1 @AccNumber = AccNumber, @DDate = DDate, @Refrence = Refrence, @Description = Description FROM #UtilityPervData
	INSERT INTO tblJournal(lngJourID
,strUserName
,dteSystemDate
,dteJournalDate
,intModule
,intEntryType
,strSource
,strComment
,strCuVeGeInID
,intPayType
) VALUES (@JournalID,@strUserName,@DDate,@DDate,0,0,@Refrence,@Description,@AccNumber,0)
END

--While (Select Count(1) from #UtilityPervData) > 0
--BEGIN
	
--	Select TOP 1 @id = ID, @GDC = GDC from #UtilityPervData

--	SET @lineNum = @lineNum + 1
--	INSERT INTO tblJournalEnt VALUES (@JournalID,@lineNum,@SQintGLNumber,@SQdecAmount,@SQdecDebits,@SQdecCredits,@SQstrComment,@SQintDept,@SQdecAmountF,@SQdecDebitsF,@SQdecCreditsF,@SQstrCurrency,@SQdecExchange,@SQbitForeignAcct,0,0)
--END
GO
/****** Object:  StoredProcedure [dbo].[ImportManufactureBOM]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ImportManufactureBOM]
(
	@Type AS INT,
	@BOMPartNumber AS NVARCHAR(100),	
	@BOMPartDesc AS NVARCHAR(200),	
	@BOMLocation AS NVARCHAR(20),	
	@BOMRevisionDate AS SMALLDATETIME,	
	@BOMQuantity AS MONEY,	
	@IsBOMInactive AS BIT,	
	@ByProdCompInvPartNumber AS NVARCHAR(100),	
	@ByProdCompInvLocation AS NVARCHAR(20),	
	@ByProdCompInvQty AS MONEY,	
	@WorkCentre AS NVARCHAR(40),	
	@Notes AS NVARCHAR(MAX),
	@LabMachCode AS NVARCHAR(40),
	@VariableHours AS MONEY,
	@VariableRate AS MONEY,
	@SetupHours AS MONEY,
	@SetupRate AS MONEY,
	@BreakdownHours AS MONEY,
	@BreakdownRate AS MONEY,
	@GLNumber AS NVARCHAR(60),
	@Department AS INT,
	@ProfitCenter AS NVARCHAR(MAX),
	@Amount AS MONEY,
	@UserName AS NVARCHAR(40),
	@SystemDate AS SMALLDATETIME,
	@IsPrintInv AS BIT,
	@IsPrintSO AS BIT,
	@IsPrintDN AS BIT,
	@FileName AS NVARCHAR(500) = NULL
)
AS
BEGIN

	BEGIN TRY

		DECLARE @ERR_MSG AS NVARCHAR(4000), @Err_Severity INT, @ERR_STA AS SMALLINT
	
		DECLARE @IsInsert AS BIT = 0	
		DECLARE @IsUpdate AS BIT = 0	
								
		IF @Type <> 0 
		BEGIN			
			DECLARE @ManBOMID AS BIGINT
			SELECT @ManBOMID = lngManBOMID FROM tblManBOM WHERE strPartNumber = @BOMPartNumber AND strLocation = @BOMLocation AND dteRevDate = @BOMRevisionDate
		END
			
		IF @Type = 0
		BEGIN
			UPDATE tblManBOM SET strDesc = @BOMPartDesc, decQty = @BOMQuantity, bitInactive = @IsBOMInactive, dteSystemDate = @SystemDate, strUserName = @UserName, bitPrintInv = @IsPrintInv, bitPrintSO = @IsPrintSO, bitPrintDN = @IsPrintDN WHERE strPartNumber = @BOMPartNumber AND strLocation = @BOMLocation AND dteRevDate = @BOMRevisionDate				
			IF @@ROWCOUNT = 0
			BEGIN
				INSERT INTO tblManBOM 
				(
				lngManBOMID
				,strPartNumber
				,strDesc
				,strLocation
				,dteRevDate
				,decQty
				,bitInactive
				,dteSystemDate
				,strUserName
				,bitPrintInv
				,bitPrintSO
				,bitPrintDN
				,strFileName
				,bitRevision
				)
				VALUES (ISNULL((SELECT MAX(lngManBOMID) FROM tblManBOM),0) + 1, @BOMPartNumber, @BOMPartDesc, @BOMLocation, @BOMRevisionDate, @BOMQuantity, @IsBOMInactive, @SystemDate, @UserName, @IsPrintInv, @IsPrintSO, @IsPrintDN, @FileName,0)
				SET @IsInsert = 1
			END
			ELSE 
			BEGIN 
				SET @IsUpdate = 1
			END		
		END		

		ELSE IF @Type = 1
		BEGIN
			IF(@ManBOMID > 0)
			BEGIN
				UPDATE tblManBOMOp SET strNotes = @Notes WHERE lngManBOMID = @ManBOMID AND strWCCode = @WorkCentre	
				IF @@ROWCOUNT = 0
				BEGIN
					INSERT INTO tblManBOMOp (lngManBOMID, strWCCode, strNotes) VALUES (@ManBOMID, @WorkCentre, @Notes)
					SET @IsInsert = 1
				END
				ELSE 
				BEGIN 
					SET @IsUpdate = 1
				END	
			END
		END		

		ELSE IF @Type = 2
		BEGIN
			IF(@ManBOMID > 0)
			BEGIN
				UPDATE tblManBOMCompInv SET strLocation = @ByProdCompInvLocation, decQty = @ByProdCompInvQty WHERE lngManBOMID = @ManBOMID AND strWCCode = @WorkCentre AND strPartNumber = @ByProdCompInvPartNumber
				IF @@ROWCOUNT = 0
				BEGIN
					INSERT INTO tblManBOMCompInv VALUES (@ManBOMID, @WorkCentre, ISNULL((SELECT MAX(intLineNo) FROM tblManBOMCompInv WHERE lngManBOMID = @ManBOMID AND strWCCode = @WorkCentre),0) + 1, @ByProdCompInvPartNumber, @ByProdCompInvLocation, @ByProdCompInvQty,ISNULL((SELECT INV.strDesc FROM tblInv INV WHERE INV.strPartNumber = @ByProdCompInvPartNumber),''))
					SET @IsInsert = 1
				END
				ELSE 
				BEGIN 
					SET @IsUpdate = 1
				END	
			END
		END		

		ELSE IF @Type = 3
		BEGIN
			IF(@ManBOMID > 0)
			BEGIN
				UPDATE tblManBOMCompLab SET decVariableHours = @VariableHours, decVariableRate = @VariableRate, decSetupHours = @SetupHours, decSetupRate = @SetupRate, decBreakdownHours = @BreakdownHours, decBreakdownRate = @BreakdownRate WHERE lngManBOMID = @ManBOMID AND strWCCode = @WorkCentre AND strLabCode = @LabMachCode
				IF @@ROWCOUNT = 0
				BEGIN
					INSERT INTO tblManBOMCompLab VALUES (@ManBOMID, @WorkCentre, ISNULL((SELECT MAX(intLineNo) FROM tblManBOMCompLab WHERE lngManBOMID = @ManBOMID),0) + 1, @LabMachCode, @VariableHours, @VariableRate, @SetupHours, @SetupRate, @BreakdownHours, @BreakdownRate)
					SET @IsInsert = 1
				END
				ELSE 
				BEGIN 
					SET @IsUpdate = 1
				END	
			END
		END		

		ELSE IF @Type = 4
		BEGIN
			IF(@ManBOMID > 0)
			BEGIN
				UPDATE tblManBOMCompMach SET decVariableHours = @VariableHours, decVariableRate = @VariableRate, decSetupHours = @SetupHours, decSetupRate = @SetupRate, decBreakdownHours = @BreakdownHours, decBreakdownRate = @BreakdownRate WHERE lngManBOMID = @ManBOMID AND strWCCode = @WorkCentre AND strMachCode = @LabMachCode
				IF @@ROWCOUNT = 0
				BEGIN
					INSERT INTO tblManBOMCompMach VALUES (@ManBOMID, @WorkCentre, ISNULL((SELECT MAX(intLineNo) FROM tblManBOMCompMach WHERE lngManBOMID = @ManBOMID),0) + 1, @LabMachCode, @VariableHours, @VariableRate, @SetupHours, @SetupRate, @BreakdownHours, @BreakdownRate)
					SET @IsInsert = 1
				END
				ELSE 
				BEGIN 
					SET @IsUpdate = 1
				END	
			END
		END		

		ELSE IF @Type = 5
		BEGIN
			IF(@ManBOMID > 0)
			BEGIN
				UPDATE tblManBOMCompOverhead SET intDept = @Department, uidCenterID = ISNULL((SELECT uidCenterID FROM tblCenters WHERE (strLvl1 + CASE WHEN ISNULL(strLvl2,'') = '' THEN '' ELSE '\' + strLvl2 END + CASE WHEN ISNULL(strLvl3,'') = '' THEN '' ELSE '\' + strLvl3 END + CASE WHEN ISNULL(strLvl4,'') = '' THEN '' ELSE '\' + strLvl4 END + CASE WHEN ISNULL(strLvl5,'') = '' THEN '' ELSE '\' + strLvl5 END) = @ProfitCenter),NULL), decAmount = @Amount WHERE lngManBOMID = @ManBOMID AND strWCCode = @WorkCentre AND intGLNumber = @GLNumber
				IF @@ROWCOUNT = 0
				BEGIN
					INSERT INTO tblManBOMCompOverhead VALUES (@ManBOMID, @WorkCentre, ISNULL((SELECT MAX(intLineNo) FROM tblManBOMCompOverhead WHERE lngManBOMID = @ManBOMID),0) + 1, @GLNumber, @Department, ISNULL((SELECT uidCenterID FROM tblCenters WHERE (strLvl1 + CASE WHEN ISNULL(strLvl2,'') = '' THEN '' ELSE '\' + strLvl2 END + CASE WHEN ISNULL(strLvl3,'') = '' THEN '' ELSE '\' + strLvl3 END + CASE WHEN ISNULL(strLvl4,'') = '' THEN '' ELSE '\' + strLvl4 END + CASE WHEN ISNULL(strLvl5,'') = '' THEN '' ELSE '\' + strLvl5 END) = @ProfitCenter),NULL), @Amount)
					SET @IsInsert = 1
				END
				ELSE 
				BEGIN 
					SET @IsUpdate = 1
				END	
			END
		END		

		SELECT CONCAT('Success: ', @IsUpdate, ',', @IsInsert)

	END TRY

	BEGIN CATCH

		IF ERROR_NUMBER() = 547
			BEGIN					
				SET @ERR_MSG = 'Error 547: '
				SELECT @ERR_MSG
	
			END
		ELSE IF ERROR_NUMBER() = 8152
			BEGIN					
				SET @ERR_MSG = 'Error 8152: '
				SELECT @ERR_MSG	
			END
		ELSE
			BEGIN			
				SELECT @ERR_MSG = ERROR_MESSAGE(),  @Err_Severity = ERROR_SEVERITY() , @ERR_STA = ERROR_STATE()		
				RAISERROR (@ERR_MSG, @Err_Severity, @ERR_STA);
			END				
		
	END CATCH	
END
GO
/****** Object:  StoredProcedure [dbo].[ImportPastelCustomerData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [ImportPastelInvoiceDoc]*****************************/

/*****************Start [ImportPastelCustomerData]*****************************/

Create Procedure [dbo].[ImportPastelCustomerData]
(
@CustName as nvarchar(100), 
@CustDesc as nvarchar(100), 
@TaxCode as nvarchar(300),
@Term as nvarchar(100), 
@Currency as nvarchar(10), 
@CustCategory as nvarchar(50), 
@Street1 as nvarchar(200), 
@Street2 as nvarchar(200), 
@City as nvarchar(100),
@Province as nvarchar(100),
@Postal as nvarchar(50),
@Phone as nvarchar(100),
@CellPhone as nvarchar(100), 
@Fax as nvarchar(100),
@Email as nvarchar(100), 
@VAT as nvarchar(100),
@CreditLimit as money, 
@Inactive as bit,
@Contact as nvarchar(200),
@Field1 as nvarchar(200), 
@Field2 as nvarchar(200), 
@Field3 as nvarchar(200), 
@Field4 as nvarchar(200), 
@Field5 as nvarchar(200), 
@Updated as smalldatetime,
@Since as datetime
)
As
Begin
	INSERT INTO tblUtilityCustomers
(strCustName
,strCustDesc
,strTaxCode
,strTerm
,strCurrency
,strCustCategory
,strStreet1
,strStreet2
,strCity
,strProvince
,strPostal
,strPhone
,strCellPhone
,strFax
,strEmail
,strVAT
,decCreditLimit
,bitInactive
,strContact
,strField1
,strField2
,strField3
,strField4
,strField5
,dteUpdated
,dteSince
) VALUES 
	(@CustName,
	 @CustDesc
	,@TaxCode
	,@Term
	,@Currency
	,@CustCategory
	,@Street1
	,@Street2
	,@City
	,@Province
	,@Postal
	,@Phone
	,@CellPhone
	,@Fax
	,@Email
	,@VAT
	,@CreditLimit
	,@Inactive
	,@Contact
	,@Field1
	,@Field2
	,@Field3
	,@Field4
	,@Field5
	,@Updated
	,@Since)
End
GO
/****** Object:  StoredProcedure [dbo].[ImportPastelcustomerLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [ImportGLAccounts]*****************************/

/*****************Start [ImportPastelcustomerLocation]*****************************/

Create Procedure [dbo].[ImportPastelcustomerLocation]
@strCustName as nvarchar(100),
@strLocName as nvarchar(100),
@strStreet1 as nvarchar(200),
@strStreet2 as nvarchar(200),
@strCity as nvarchar(100),
@strProvince as nvarchar(100),
@strPostal as nvarchar(50)
As
begin
	INSERT INTO tblCustomerLoc(strCustName,strLocName,strStreet1,strStreet2,strCity,strProvince,strPostal,strCountry,strDelRouteCode,strCountryCode,strSalesName,strDelMethodCode,decDistance,strNumber) 
	                 VALUES (@strCustName,@strLocName,@strStreet1,@strStreet2,@strCity,@strProvince,@strPostal,'',NULL,NULL,NULL,NULL,0,NULL)
end
GO
/****** Object:  StoredProcedure [dbo].[ImportPastelCustomers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [ImportPastelCustomerData]*****************************/

/*****************Start [ImportPastelCustomers]*****************************/

CREATE PROCEDURE [dbo].[ImportPastelCustomers] @strCustName AS NVARCHAR(100)
	,@strStreet1 AS NVARCHAR(200)
	,@strStreet2 AS NVARCHAR(200)
	,@strCity AS NVARCHAR(100)
	,@strProvince AS NVARCHAR(100)
	,@strPostal AS NVARCHAR(50)
	,@strPhone AS NVARCHAR(100)
	,@strCellPhone AS NVARCHAR(100)
	,@strFax AS NVARCHAR(100)
	,@strEmail AS NVARCHAR(500)
	,@strVAT AS NVARCHAR(100)
	,@bitCreditCtrl AS BIT
	,@decCreditLimit AS MONEY
	,@bitCreditHold AS BIT
	,@bitInactive AS BIT
	,@dteUpdated AS DATETIME
	,@strContact AS NVARCHAR(200)
	,@strField1 AS NVARCHAR(200)
	,@strField2 AS NVARCHAR(200)
	,@strField3 AS NVARCHAR(200)
	,@strField4 AS NVARCHAR(200)
	,@strField5 AS NVARCHAR(200)
	,@strTaxCode AS NVARCHAR(10)
	,@dteSince AS DATETIME
	,@strCustDesc AS VARCHAR(200)
	,@strTerm AS NVARCHAR(100)
	,@strCurrency AS NVARCHAR(10)
	,@strEmailInv AS NVARCHAR(500)
	,@strEmailStat AS NVARCHAR(500)
	,@strCustCategory AS NVARCHAR(50)
	,@strTenderType AS NVARCHAR(50)
	,@strEmailOso AS NVARCHAR(500)
	,@intNAPrintMethod AS INT
	,@strDelMethodCode AS NVARCHAR(100)
	,@SQstreComPassword AS NVARCHAR(200)
AS
BEGIN
	INSERT INTO tblCustomers (
		strCustName
		,strStreet1
		,strStreet2
		,strCity
		,strProvince
		,strPostal
		,strPhone
		,strCellPhone
		,strFax
		,strEmail
		,strVAT
		,strCK
		,decBalDue
		,decYTDPurch
		,decOpenOrders
		,intDelMethod
		,bitCreditCtrl
		,decCreditLimit
		,bitCreditHold
		,bitInactive
		,dteUpdated
		,strContact
		,strField1
		,strField2
		,strField3
		,strField4
		,strField5
		,strField6
		,strTaxCode
		,dteSince
		,strNotes
		,strPricelist
		,uID
		,decIntRate
		,strCustDesc
		,strCountry
		,strTerm
		,intDept
		,strCurrency
		,decBalDueF
		,decYTDPurchF
		,decOpenOrdersF
		,strField7
		,strField8
		,strField9
		,strField10
		,strField11
		,strField12
		,strEmailInv
		,strEmailStat
		,strCustCategory
		,strCountryCode
		,strTenderType
		,decTradeDiscPerc
		,decCreditLimitOverride
		,dteCreditLimitExpiryDate
		,intPartialBackorders
		,bitWithholdTax
		,strWithholdTaxCode
		,strINVFormDocName
		,strORDFormDocName
		,bitMatrixType
		,strMatrixType
		,strParentCust
		,strValueBased
		,bitInvWorkflowNew
		,bitInvWorkflowDA
		,bitInvWorkflowSO
		,strWebsite
		,strRSTTerminalSync
		,strContact2
		,strSuburb
		,strEmailOso
		,intNAPrintMethod
		,strDelMethodCode
		,strfield13
		,strField14
		,strField15
		,strField16
		,strFacebook
		,strLinkedIn
		,strField17
		,strField18
		,bitExclCommission
		,streComPassword
		,dteRowUpdated
		)
	VALUES (
		@strCustName
		,@strStreet1
		,@strStreet2
		,@strCity
		,@strProvince
		,@strPostal
		,@strPhone
		,@strCellPhone
		,@strFax
		,@strEmail
		,@strVAT
		,''
		,0
		,0
		,0
		,0
		,@bitCreditCtrl
		,@decCreditLimit
		,@bitCreditHold
		,@bitInactive
		,@dteUpdated
		,@strContact
		,@strField1
		,@strField2
		,@strField3
		,@strField4
		,@strField5
		,''
		,@strTaxCode
		,@dteSince
		,''
		,'REGULAR'
		,NEWID()
		,0.25
		,@strCustDesc
		,''
		,@strTerm
		,NULL
		,@strCurrency
		,0
		,0
		,0
		,''
		,''
		,''
		,''
		,''
		,''
		,@strEmail
		,@strEmail
		,@strCustCategory
		,NULL
		,@strTenderType
		,0
		,0
		,GetDate()
		,0
		,0
		,NULL
		,NULL
		,NULL
		,0
		,'DEFAULT'
		,''
		,NULL
		,1
		,1
		,1
		,''
		,''
		,NULL
		,NULL
		,@strEmailOso
		,@intNAPrintMethod
		,@strDelMethodCode
		,0
		,0
		,0
		,0
		,NULL
		,NULL
		,0
		,0
		,0
		,@SQstreComPassword
		,GetDate()
		)
END
GO
/****** Object:  StoredProcedure [dbo].[ImportPastelInvoiceDoc]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [ImportPastelcustomerLocation]*****************************/

/*****************Start [ImportPastelInvoiceDoc]*****************************/

Create Procedure [dbo].[ImportPastelInvoiceDoc]
@strInvDocID as nvarchar(100),
@lngInvTrackID as bigint,
@lngJourID as bigint,
@dteSystemDate as smalldatetime,
@dteJournalDate as smalldatetime,
@dteRequired as smalldatetime,
@strUserName as nvarchar(40),
@strCustName as nvarchar(100),
@strSoldTo as nvarchar(1000),
@strShipTo as nvarchar(1000),
@strReference as nvarchar(100),
@decSubTotal as money,
@decVAT as money,
@decTotal as money,
@bitFromSO as bit,
@strOrdDocID as nvarchar(100),
@bitHistoryTrans as bit,
@strNotes as nvarchar(Max),
@bitPrinted as bit,
@bitEmailed as bit,
@intPaidBy as int,
@intAccount as nvarchar(60),
@strSalesName as nvarchar(100),
@strAddInfo as nvarchar(100),
@strCurrency as nvarchar(50),
@bitIsForeign as bit,
@decSubTotalF as money,
@decVATF as money,
@decTotalF as money,
@decExchange as decimal(20,4),
@strTerm as nvarchar(100),
@intDept as int,
@strField1 as nvarchar(200),
@strField2 as nvarchar(200),
@strField3 as nvarchar(200),
@strField4 as nvarchar(200),
@strField5 as nvarchar(200),
@strField6 as nvarchar(200),
@strField7 as nvarchar(200),
@strField8 as nvarchar(200),
@strField9 as nvarchar(200),
@strField10 as nvarchar(200),
@strField11 as nvarchar(200),
@strField12 as nvarchar(200),
@strSubFormated as nvarchar(100),
@strVATFormatted as nvarchar(100),
@strTotFormatted as nvarchar(100),
@dteField13 as datetime,
@dteField14 as datetime,
@decDiscPerc as money,
@decDiscAmt as money,
@decDiscAmtF as money,
@strDiscFormatted as nvarchar(100),
@strOrdFQDocID as nvarchar(100),
@strStatusTypeCode as nvarchar(100),
@strCNReasonCode as nvarchar(100),
@bitBookmark as bit,
@strPaidBy as nvarchar(100),
@strDelmethodCode as nvarchar(100),
@strDeliveryCostFormatted as nvarchar(100),
@bitShipmentsAuditTrail as bit
As
begin

INSERT INTO tblInvoiceDoc(
strInvDocID
,lngInvTrackID
,lngJourID
,dteSystemDate
,dteJournalDate
,dteRequired
,strUserName
,strCustName
,strSoldTo
,strShipTo
,strReference
,decSubTotal
,decVAT
,decTotal
,bitFromSO
,strOrdDocID
,bitHistoryTrans
,strNotes
,bitPrinted
,bitEmailed
,intPaidBy
,intAccount
,strSalesName
,strAddInfo
,bitReserved
,strCurrency
,bitIsForeign
,decSubTotalF
,decVATF
,decTotalF
,decExchange
,strTerm
,intDept
,strField1
,strField2
,strField3
,strField4
,strField5
,strField6
,strField7
,strField8
,strField9
,strField10
,strField11
,strField12
,strSubFormated
,strVATFormatted
,strTotFormatted
,dteField13
,dteField14
,decDiscPerc
,decDiscAmt
,decDiscAmtF
,strDiscFormatted
,strOrdFQDocID
,strStatusTypeCode
,strCNReasonCode
,bitBookmark
,dteSystemDateTime
,strPaidBy
,intSentDoc
,strVAT
,strDelMethodCode
,decTotalWeight
,decTotalVolWeight
,decDeliveryCost
,decDeliveryCostF
,strDeliveryCostFormatted
,bitShipmentsAuditTrail
,intRevisionNumber
,strStoreNumber
,strEDI
,bitNoPODRequired
,intSalesAccrualProcess
,bitIsFromWorkshop
,bitNewsSubscribed
,strEmail
) VALUES 
(
@strInvDocID,
@lngInvTrackID,
@lngJourID,
@dteSystemDate,
@dteJournalDate,
@dteRequired,
@strUserName,
@strCustName,
@strSoldTo,
@strShipTo,
@strReference,
@decSubTotal,
@decVAT,
@decTotal,
@bitFromSO,
@strOrdDocID,
@bitHistoryTrans,
@strNotes,
@bitPrinted,
@bitEmailed,
@intPaidBy,
@intAccount,
@strSalesName,
@strAddInfo,
0,
@strCurrency,
@bitIsForeign,
@decSubTotalF,
@decVATF,
@decTotalF,
@decExchange,
@strTerm,
@intDept,
@strField1,
@strField2,
@strField3,
@strField4,
@strField5,
@strField6,
@strField7,
@strField8,
@strField9,
@strField10,
@strField11,
@strField12,
@strSubFormated,
@strVATFormatted,
@strTotFormatted,
@dteField13,
@dteField14,
@decDiscPerc,
@decDiscAmt,
@decDiscAmtF,
@strDiscFormatted,
@strOrdFQDocID,
@strStatusTypeCode,
@strCNReasonCode,
@bitBookmark,
GetDate(),
@strPaidBy,
0,
N'',
@strDelmethodCode,
0,
0,
0,
0,
@strDeliveryCostFormatted,
@bitShipmentsAuditTrail,
1,
NULL,
NULL,
0,
1,
0,
NULL,
NULL
)

end
GO
/****** Object:  StoredProcedure [dbo].[ImportPastelInvoiceDocDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** End [GetContainerDataReport] ******/

/*****************Start [ImportPastelInvoiceDocDT]*****************************/

Create Procedure [dbo].[ImportPastelInvoiceDocDT]
 @SQstrInvDocID nvarchar(100)
,@SQintLineNo int
,@SQstrPartNumber nvarchar(100)
,@SQstrLocation nvarchar(20)
,@SQstrPartDesc nvarchar(1000)
,@SQdecQty money
,@SQstrUnit nvarchar(30)
,@SQintType tinyint
,@SQdecPriceEaExc money
,@SQdecLineTotExc money
,@SQdecLineTaxAmt money
,@SQdecPriceEaInc money
,@SQdecLineTotInc money
,@SQstrTaxCode nvarchar(4)
,@SQstrCurrency nvarchar(6)
,@SQbitIsForeign bit
,@SQdecPriceEaExcF money
,@SQdecLineTotExcF money
,@SQdecLineTaxAmtF money
,@SQdecEaIncTaxF money
,@SQdecTotIncTaxF money
,@SQstrInvField1 nvarchar(200)
,@SQstrInvField2 nvarchar(200)
,@SQstrInvField3 nvarchar(200)
,@SQstrInvField4 nvarchar(200)
,@SQstrInvField5 nvarchar(200)
,@SQstrInvField6 nvarchar(200)
,@SQstrLineField1 nvarchar(100)
,@SQstrLineField2 nvarchar(100)
,@SQstrLineField3 nvarchar(100)
,@SQstrLineField4 nvarchar(100)
,@SQstrLineField5 nvarchar(100)
,@SQstrLineField6 nvarchar(100)
,@SQstrLineField7 nvarchar(100)
,@SQstrLineField8 nvarchar(100)
,@SQstrLineField9 nvarchar(100)
,@SQstrLineField10 nvarchar(100)
,@SQstrLineField11 nvarchar(100)
,@SQstrLineField12 nvarchar(100)
,@SQdecLineDiscPerc money
,@SQdecLineDiscAmt money
,@SQdecLineDiscAmtF money
,@SQbitDiscountTax bit
,@SQdecStockQty money
,@SQstrStockUnit nvarchar(30)
,@SQdecStandardCost money
,@SQdecLastPPUnit money
,@SQstrSalesName nvarchar(100)
,@SQdecCOGS money
,@SQdecSOQty money
,@SQdecSOQtyRemain money
,@SQstrPartExtendedDesc nvarchar(Max)

 
As
Begin
INSERT INTO tblInvoiceDocDT
(
 strInvDocID
,intLineNo
,strPartNumber
,strLocation
,strPartDesc
,decQty
,strUnit
,intType
,decPriceEaExc
,decLineTotExc
,decLineTaxAmt
,decPriceEaInc
,decLineTotInc
,strTaxCode
,strCurrency
,bitIsForeign
,decPriceEaExcF
,decLineTotExcF
,decLineTaxAmtF
,decEaIncTaxF
,decTotIncTaxF
,strInvField1
,strInvField2
,strInvField3
,strInvField4
,strInvField5
,strInvField6
,strLineField1
,strLineField2
,strLineField3
,strLineField4
,strLineField5
,strLineField6
,strLineField7
,strLineField8
,strLineField9
,strLineField10
,strLineField11
,strLineField12
,decLineDiscPerc
,decLineDiscAmt
,decLineDiscAmtF
,bitDiscountTax
,decStockQty
,strStockUnit
,decStandardCost
,decLastPPUnit
,strSalesName
,decCOGS
,decSOQty
,decSOQtyRemain
,strPartExtendedDesc
,decItemWeight
,decVolumetricWeight
,bitContainerItem
,bitDelCost
,intBillingMethod
,uidTransactionFieldID
,uidContainerItem
,decUsedQty
,bitFrom
,strOrdDADocID
,intDALineNo
,bitFromGRV
,strGRVDocNum
,intGRVLineNo
,blnIsCashPrice
,strOrigDocID
)
 VALUES 
(
@SQstrInvDocID
,@SQintLineNo
,@SQstrPartNumber
,@SQstrLocation
,@SQstrPartDesc
,@SQdecQty
,@SQstrUnit
,@SQintType
,@SQdecPriceEaExc
,@SQdecLineTotExc
,@SQdecLineTaxAmt
,@SQdecPriceEaInc
,@SQdecLineTotInc
,@SQstrTaxCode
,@SQstrCurrency
,@SQbitIsForeign
,@SQdecPriceEaExcF
,@SQdecLineTotExcF
,@SQdecLineTaxAmtF
,@SQdecEaIncTaxF
,@SQdecTotIncTaxF
,@SQstrInvField1
,@SQstrInvField2
,@SQstrInvField3
,@SQstrInvField4
,@SQstrInvField5
,@SQstrInvField6
,@SQstrLineField1
,@SQstrLineField2
,@SQstrLineField3
,@SQstrLineField4
,@SQstrLineField5
,@SQstrLineField6
,@SQstrLineField7
,@SQstrLineField8
,@SQstrLineField9
,@SQstrLineField10
,@SQstrLineField11
,@SQstrLineField12
,@SQdecLineDiscPerc
,@SQdecLineDiscAmt
,@SQdecLineDiscAmtF
,@SQbitDiscountTax
,@SQdecStockQty
,@SQstrStockUnit
,@SQdecStandardCost
,@SQdecLastPPUnit
,@SQstrSalesName
,@SQdecCOGS
,@SQdecSOQty
,@SQdecSOQtyRemain
,@SQstrPartExtendedDesc
,0
,0
,0
,0
,0
,NEWID()
,NULL
,0
,0
,NULL
,NULL
,0
,NULL
,NULL
,0
,NULL
)

End
GO
/****** Object:  StoredProcedure [dbo].[ImportPastelInvoiceDocPData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [ImportPastelInvoiceDocPDT]*****************************/


/*****************Start [ImportPastelInvoiceDocPData]*****************************/


 Create Procedure [dbo].[ImportPastelInvoiceDocPData]
 @SQstrInvPDocID nvarchar(100)
,@SQlngInvTrackID bigint
,@SQlngJourID bigint
,@SQdteSystemDate smalldatetime
,@SQdteJournalDate smalldatetime
,@SQdteRequired smalldatetime
,@SQstrUserName nvarchar(40)
,@SQstrVendName nvarchar(100)
,@SQstrShipTo nvarchar(1000)
,@SQstrVendInvNo nvarchar(100)
,@SQdecSubTotal money
,@SQdecVAT money
,@SQdecTotal money
,@SQbitFromPO bit
,@SQstrOrdPDocID nvarchar(100)
,@SQstrSourceMOP nvarchar(100)
,@SQbitHistoryTrans bit
,@SQstrNotes nvarchar(Max)
,@SQbitPrinted bit
,@SQbitEmailed bit
,@SQintPaidBy int
,@SQintAccount nvarchar(60)
,@SQstrCurrency nvarchar(6)
,@SQbitIsForeign bit
,@SQdecSubTotalF money
,@SQdecVATF money
,@SQdecTotalF money
,@SQdecExchange decimal(13,2)
,@SQstrTerm nvarchar(100)
,@SQintDept int
,@SQstrField1 nvarchar(200)
,@SQstrField2 nvarchar(200)
,@SQstrField3 nvarchar(200)
,@SQstrField4 nvarchar(200)
,@SQstrField5 nvarchar(200)
,@SQstrField6 nvarchar(200)
,@SQstrField7 nvarchar(200)
,@SQstrField8 nvarchar(200)
,@SQstrField9 nvarchar(200)
,@SQstrField10 nvarchar(200)
,@SQstrField11 nvarchar(200)
,@SQstrField12 nvarchar(200)
,@SQstrSubFormated nvarchar(100)
,@SQstrVATFormatted nvarchar(100)
,@SQstrTotFormatted nvarchar(100)
,@SQdecDiscPerc money
,@SQdecDiscAmt money
,@SQdecDiscAmtF money
,@SQstrDiscFormatted nvarchar(100)
,@SQstrOrdFQDocID nvarchar(100)
,@SQbitFQConvert bit
,@SQbitSOCopy bit
,@SQbitSOCopyMulti bit
,@SQstrStatusTypeCode nvarchar(40)
,@SQbitBookmark bit
,@SQstrAddInfo nvarchar(100)
,@SQstrReference nvarchar(100)
,@SQstrPaidBy nvarchar(40)

As
Begin
INSERT INTO tblInvoiceDocP
(
strInvPDocID
,lngInvTrackID
,lngJourID
,dteSystemDate
,dteJournalDate
,dteRequired
,strUserName
,strVendName
,strShipTo
,strVendInvNo
,decSubTotal
,decVAT
,decTotal
,bitFromPO
,strOrdPDocID
,strSourceMOP
,bitHistoryTrans
,strNotes
,bitPrinted
,bitEmailed
,intPaidBy
,intAccount
,strCurrency
,bitIsForeign
,decSubTotalF
,decVATF
,decTotalF
,decExchange
,strTerm
,intDept
,strField1
,strField2
,strField3
,strField4
,strField5
,strField6
,strField7
,strField8
,strField9
,strField10
,strField11
,strField12
,strSubFormated
,strVATFormatted
,strTotFormatted
,decDiscPerc
,decDiscAmt
,decDiscAmtF
,strDiscFormatted
,strOrdFQDocID
,bitFQConvert
,bitSOCopy
,bitSOCopyMulti
,strStatusTypeCode
,bitBookmark
,strAddInfo
,strReference
,strPaidBy
,decNetItemWeight
,decNetVolumetricWeight
,intRevisionNumber
,intAccrualProcess
)
 VALUES 
(
@SQstrInvPDocID
,@SQlngInvTrackID
,@SQlngJourID
,@SQdteSystemDate
,@SQdteJournalDate
,@SQdteRequired
,@SQstrUserName
,@SQstrVendName
,@SQstrShipTo
,@SQstrVendInvNo
,@SQdecSubTotal
,@SQdecVAT
,@SQdecTotal
,@SQbitFromPO
,@SQstrOrdPDocID
,@SQstrSourceMOP
,@SQbitHistoryTrans
,@SQstrNotes
,@SQbitPrinted
,@SQbitEmailed
,@SQintPaidBy
,@SQintAccount
,@SQstrCurrency
,@SQbitIsForeign
,@SQdecSubTotalF
,@SQdecVATF
,@SQdecTotalF
,@SQdecExchange
,@SQstrTerm
,@SQintDept
,@SQstrField1
,@SQstrField2
,@SQstrField3
,@SQstrField4
,@SQstrField5
,@SQstrField6
,@SQstrField7
,@SQstrField8
,@SQstrField9
,@SQstrField10
,@SQstrField11
,@SQstrField12
,@SQstrSubFormated
,@SQstrVATFormatted
,@SQstrTotFormatted
,@SQdecDiscPerc
,@SQdecDiscAmt
,@SQdecDiscAmtF
,@SQstrDiscFormatted
,@SQstrOrdFQDocID
,@SQbitFQConvert
,@SQbitSOCopy
,@SQbitSOCopyMulti
,@SQstrStatusTypeCode
,@SQbitBookmark
,@SQstrAddInfo
,@SQstrReference
,@SQstrPaidBy
,0
,0
,1
,1
)
End
GO
/****** Object:  StoredProcedure [dbo].[ImportPastelInvoiceDocPDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [ImportPastelInvoiceDocDT]*****************************/

/*****************Start [ImportPastelInvoiceDocPDT]*****************************/


Create Procedure [dbo].[ImportPastelInvoiceDocPDT]
 @SQstrInvPDocID nvarchar(100)
,@SQintLineNo int
,@SQstrPartNumber nvarchar(100)
,@SQstrLocation nvarchar(20)
,@SQstrPartDesc nvarchar(1000)
,@SQdecBuyQty money
,@SQstrBuyUnit nvarchar(30)
,@SQdecStockQty money
,@SQstrStockUnit nvarchar(30)
,@SQintType tinyint
,@SQdecPriceEaExc money
,@SQdecLineTotExc money
,@SQdecLineTaxAmt money
,@SQstrTaxCode nvarchar(4)
,@SQdecEaIncTax money
,@SQdecTotIncTax money
,@SQstrCurrency nvarchar(6)
,@SQbitIsForeign bit
,@SQdecPriceEaExcF money
,@SQdecLineTotExcF money
,@SQdecLineTaxAmtF money
,@SQdecEaIncTaxF money
,@SQdecTotIncTaxF money
,@SQstrInvField1 nvarchar(200)
,@SQstrInvField2 nvarchar(200)
,@SQstrInvField3 nvarchar(200)
,@SQstrInvField4 nvarchar(200)
,@SQstrInvField5 nvarchar(200)
,@SQstrInvField6 nvarchar(200)
,@SQstrLineField1 nvarchar(100)
,@SQstrLineField2 nvarchar(100)
,@SQstrLineField3 nvarchar(100)
,@SQstrLineField4 nvarchar(100)
,@SQstrLineField5 nvarchar(100)
,@SQstrLineField6 nvarchar(100)
,@SQstrLineField7 nvarchar(100)
,@SQstrLineField8 nvarchar(100)
,@SQstrLineField9 nvarchar(100)
,@SQstrLineField10 nvarchar(100)
,@SQstrLineField11 nvarchar(100)
,@SQstrLineField12 nvarchar(100)
,@SQdecLineDiscPerc money
,@SQdecLineDiscAmt money
,@SQdecLineDiscAmtF money
,@SQbitDiscountTax bit
,@SQstrOrdSODocID nvarchar(100)
,@SQstrPartExtendedDesc nvarchar(Max)
As
Begin


INSERT INTO tblInvoiceDocPDT
(
strInvPDocID
,intLineNo
,strPartNumber
,strLocation
,strPartDesc
,decBuyQty
,strBuyUnit
,decStockQty
,strStockUnit
,intType
,decPriceEaExc
,decLineTotExc
,decLineTaxAmt
,strTaxCode
,decEaIncTax
,decTotIncTax
,strCurrency
,bitIsForeign
,decPriceEaExcF
,decLineTotExcF
,decLineTaxAmtF
,decEaIncTaxF
,decTotIncTaxF
,strInvField1
,strInvField2
,strInvField3
,strInvField4
,strInvField5
,strInvField6
,strLineField1
,strLineField2
,strLineField3
,strLineField4
,strLineField5
,strLineField6
,strLineField7
,strLineField8
,strLineField9
,strLineField10
,strLineField11
,strLineField12
,decLineDiscPerc
,decLineDiscAmt
,decLineDiscAmtF
,bitDiscountTax
,strOrdSODocID
,strPartExtendedDesc
,decItemWeight
,decVolumetricWeight
,uidTransactionFieldID
,bitFrom
,strOrdPGDocID
)
 VALUES 
(
@SQstrInvPDocID
,@SQintLineNo
,@SQstrPartNumber
,@SQstrLocation
,@SQstrPartDesc
,@SQdecBuyQty
,@SQstrBuyUnit
,@SQdecStockQty
,@SQstrStockUnit
,@SQintType
,@SQdecPriceEaExc
,@SQdecLineTotExc
,@SQdecLineTaxAmt
,@SQstrTaxCode
,@SQdecEaIncTax
,@SQdecTotIncTax
,@SQstrCurrency
,@SQbitIsForeign
,@SQdecPriceEaExcF
,@SQdecLineTotExcF
,@SQdecLineTaxAmtF
,@SQdecEaIncTaxF
,@SQdecTotIncTaxF
,@SQstrInvField1
,@SQstrInvField2
,@SQstrInvField3
,@SQstrInvField4
,@SQstrInvField5
,@SQstrInvField6
,@SQstrLineField1
,@SQstrLineField2
,@SQstrLineField3
,@SQstrLineField4
,@SQstrLineField5
,@SQstrLineField6
,@SQstrLineField7
,@SQstrLineField8
,@SQstrLineField9
,@SQstrLineField10
,@SQstrLineField11
,@SQstrLineField12
,@SQdecLineDiscPerc
,@SQdecLineDiscAmt
,@SQdecLineDiscAmtF
,@SQbitDiscountTax
,@SQstrOrdSODocID
,@SQstrPartExtendedDesc
,0
,0
,NEWID()
,0
,0
)
End
GO
/****** Object:  StoredProcedure [dbo].[ImportPastelVendors]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [ImportPastelCustomers]*****************************/

/*****************Start [ImportPastelVendors]*****************************/

Create Procedure [dbo].[ImportPastelVendors]
@SQVendName	nvarchar(100)
,@SQStreet1	nvarchar(200)
,@SQStreet2	nvarchar(200)
,@SQCity	nvarchar(100)
,@SQProvince	nvarchar(100)
,@SQPostal	nvarchar(40)
,@SQPhone	nvarchar(100)
,@SQCellPhone	nvarchar(100)
,@SQFax	nvarchar(100)
,@SQEmail	nvarchar(500)
,@SQVAT	nvarchar(100)
,@SQInactive	bit
,@SQLastUpdated	datetime
,@SQContact	nvarchar(200)
,@SQField1	nvarchar(200)
,@SQField2	nvarchar(200)
,@SQField3	nvarchar(200)
,@SQField4	nvarchar(200)
,@SQField5	nvarchar(200)
,@SQTaxCode	nvarchar(4)
,@SQSince	datetime
,@SQVendDesc	varchar(200)
,@SQTerm	nvarchar(100)
,@SQCurrency	nvarchar(6)
,@SQVendCategory nvarchar(40)                                                         
,@SQTenderType	nvarchar(40)
As
Begin
INSERT INTO tblVendors
(
strVendName
,strStreet1
,strStreet2
,strCity
,strProvince
,strPostal
,strPhone
,strCellPhone
,strFax
,strEmail
,strVAT
,strCK
,decBalDue
,decYTDPurch
,decOpenOrders
,intDelMethod
,bitInventoryVendor
,bitExpenseVendor
,intExpAcct
,bitInactive
,dteLastUpdated
,strContact
,strField1
,strField2
,strField3
,strField4
,strField5
,strField6
,strTaxCode
,dteSince
,strNotes
,uID
,strVendDesc
,strCountry
,strTerm
,intDept
,strCurrency
,decBalDueF
,decYTDPurchF
,decOpenOrdersF
,strField7
,strField8
,strField9
,strField10
,strField11
,strField12
,strVendCategory
,strCountryCode
,strTenderType
,decTradeDiscPerc
,bitWithholdTax
,strWithholdTaxCode
,bitInvWorkflowNew
,bitInvWorkflowGRV
,bitInvWorkflowPO
,strWebsite
) VALUES 
(@SQVendName
,@SQStreet1
,@SQStreet2
,@SQCity
,@SQProvince
,@SQPostal
,@SQPhone
,@SQCellPhone
,@SQFax
,@SQEmail
,@SQVAT
,''
,0
,0
,0
,0
,1
,0
,NULL
,@SQInactive
,@SQLastUpdated
,@SQContact
,@SQField1
,@SQField2
,@SQField3
,@SQField4
,@SQField5
,''
,@SQTaxCode
,@SQSince
,''
,NEWID()
,@SQVendDesc
,''
,@SQTerm
,NULL
,@SQCurrency
,0
,0
,0
,''
,''
,''
,''
,''
,''
,@SQVendCategory
,NULL
,@SQTenderType
,0
,0
,NULL
,1
,1
,1
,'')
End
GO
/****** Object:  StoredProcedure [dbo].[ImportPricelists]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportPricelists]
(
	@Sell AS DECIMAL(18,4),
	@EstLocalCost AS MONEY,
	@EstImportCost AS MONEY,
	@Part AS NVARCHAR(100),
	@Pricelist AS NVARCHAR(40),
	@StartDate AS SMALLDATETIME,
	@FinishDate AS SMALLDATETIME,
	@PriceBasedID AS UNIQUEIDENTIFIER,
	@IsPartNumber AS BIT,
	@IsAllPricelists AS BIT,
	@IsPromotionalPricing AS BIT,
	@PromotionalStartDate AS SMALLDATETIME,
	@PromotionalEndDate AS SMALLDATETIME,
	@PromotionalPrice AS MONEY,
	@Unit AS NVARCHAR(15)
)
AS
BEGIN
	IF (@IsPartNumber = 1)
	BEGIN
		IF (@IsAllPricelists = 1)
		BEGIN
			UPDATE tblInvPrice SET decSelling = @Sell, decEstLocalCost = @EstLocalCost, decEstImportCost = @EstImportCost, bitPromotionalPricing = @IsPromotionalPricing, dtePromotionalStartDate = @PromotionalStartDate, dtePromotionalEndDate = @PromotionalEndDate, decPromotionalPrice = @PromotionalPrice  WHERE (strPartNumber = @Part) AND (strUnit = @Unit) AND (uidPriceBasedID IN (SELECT uidPriceBasedID FROM tblPriceListsByDate WHERE dteStartDate = @StartDate AND dteFinishDate = @FinishDate))
		END
		ELSE
		BEGIN
			UPDATE tblInvPrice SET decSelling = @Sell, decEstLocalCost = @EstLocalCost, decEstImportCost = @EstImportCost, bitPromotionalPricing = @IsPromotionalPricing, dtePromotionalStartDate = @PromotionalStartDate, dtePromotionalEndDate = @PromotionalEndDate, decPromotionalPrice = @PromotionalPrice WHERE (strPartNumber = @Part)  AND (strUnit = @Unit) AND (strPricelist = @Pricelist) AND (tblInvPrice.uidPriceBasedID = @PriceBasedID)
		END
	END
	ELSE
	BEGIN
	IF (@IsAllPricelists = 1)
		BEGIN
			UPDATE tblInvPrice SET decSelling = @Sell, decEstLocalCost = @EstLocalCost, decEstImportCost = @EstImportCost, bitPromotionalPricing = @IsPromotionalPricing, dtePromotionalStartDate = @PromotionalStartDate, dtePromotionalEndDate = @PromotionalEndDate, decPromotionalPrice = @PromotionalPrice WHERE (strPartNumber = (SELECT strPartNumber FROM tblInv WHERE (strBarCode = @Part OR strBarCode2 = @Part))) AND (strUnit = @Unit) AND (uidPriceBasedID IN (SELECT uidPriceBasedID FROM tblPriceListsByDate WHERE dteStartDate = @StartDate AND dteFinishDate = @FinishDate))
		END
		ELSE
		BEGIN
			UPDATE tblInvPrice SET decSelling = @Sell, decEstLocalCost = @EstLocalCost, decEstImportCost = @EstImportCost, bitPromotionalPricing = @IsPromotionalPricing, dtePromotionalStartDate = @PromotionalStartDate, dtePromotionalEndDate = @PromotionalEndDate, decPromotionalPrice = @PromotionalPrice WHERE (strPartNumber = (SELECT strPartNumber FROM tblInv WHERE (strBarCode = @Part OR strBarCode2 = @Part))) AND (strUnit = @Unit) AND (strPricelist = @Pricelist) AND (tblInvPrice.uidPriceBasedID = @PriceBasedID) 
		END
	END

	SELECT @@ROWCOUNT
END
GO
/****** Object:  StoredProcedure [dbo].[ImportSalesOrderStandard]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [ImportCustomerLocation] ***********/

CREATE PROCEDURE [dbo].[ImportSalesOrderStandard]
(
 @NextSONumber AS NVARCHAR(100),

 @OrderDocID AS NVARCHAR(100),

 @DocType AS TINYINT,

 @SystemDate AS SMALLDATETIME,

 @JournalDate AS DATETIME,

 @UserName AS NVARCHAR(40),

 @CustName AS NVARCHAR(100), 

 @Reference AS NVARCHAR(100),

 @DiscPerc AS MONEY,

 @SubTotal AS MONEY,

 @DiscAmt AS MONEY,

 @VAT AS MONEY,

 @Total AS MONEY,

 @IsCleared AS BIT,

 @AddInfo AS NVARCHAR(100),

 @Currency AS NVARCHAR(6),

 @IsForeign AS BIT,

 @SubTotalF AS MONEY,

 @DiscAmtF AS MONEY,

 @VATF AS MONEY,

 @TotalF AS MONEY,

 @Exchange AS DECIMAL,

 @Field1 AS NVARCHAR(200),

 @Field2 AS NVARCHAR(200),

 @Field3 AS NVARCHAR(200),

 @Field4 AS NVARCHAR(200),

 @Field5 AS NVARCHAR(200),

 @Field6 AS NVARCHAR(200),

 @Field7 AS NVARCHAR(200),

 @Field8 AS NVARCHAR(200),

 @Field9 AS NVARCHAR(200),

 @Field10 AS NVARCHAR(200),

 @Field11 AS NVARCHAR(200),

 @Field12 AS NVARCHAR(200),

 @Field13 AS NVARCHAR(200),

 @Field14 AS NVARCHAR(200),

 @SubFormatted AS NVARCHAR(100),

 @DiscFormatted AS NVARCHAR(100),

 @VATFormatted AS NVARCHAR(100),

 @TotFormatted AS NVARCHAR(100),

 --@DelMethodCode AS NVARCHAR(100),

 @TotalWeight  AS MONEY,

 @TotalVolWeight AS MONEY,

 @DeliveryCost AS MONEY,

 @DeliveryCostF AS MONEY,

 @DeliveryCostFormatted AS NVARCHAR(100),

 @StoreNumber AS NVARCHAR(100),

 @EDI AS NVARCHAR(100),

 @IsFromWorkshop AS BIT
)
AS
BEGIN
 BEGIN TRY
  DECLARE @ERR_MSG AS NVARCHAR(4000) = NULL, @Err_Severity INT = 16, @ERR_STA AS SMALLINT = 1
  --Get the customer's details-- 

  DECLARE @CustDesc AS NVARCHAR(200)

  DECLARE @Street1 AS NVARCHAR(200)

  DECLARE @Street2 AS NVARCHAR(200)

  DECLARE @City AS NVARCHAR(100)

  DECLARE @Province AS NVARCHAR(100)

  DECLARE @Postal AS NVARCHAR(40)

  DECLARE @Country AS NVARCHAR(100)

  DECLARE @Term AS NVARCHAR(100)

  SELECT @CustDesc = strCustDesc, @Street1 = strStreet1, @Street2 = strStreet2, @City= strCity, @Province = strProvince, @Postal = strPostal, @Country = strCountry, @Term = strTerm FROM tblCustomers WHERE strCustName = @CustName

  IF @@ROWCOUNT = 0

  BEGIN

   SET @ERR_MSG = 'Error 547: '

   RAISERROR (@ERR_MSG, @Err_Severity, @ERR_STA);

  END

  DECLARE @CrLf AS NVARCHAR(2) = CONCAT(CHAR(10), CHAR(13))

  DECLARE @ShipTo AS NVARCHAR(1000) = CONCAT(@CustDesc, @CrLf, @Street1, @CrLf, @Street2, @CrLf, @City , '  ', @Province, '  ', @CrLf, @Postal, @CrLf,  @Country) 

  --Get the customer's details--
  --Get Required Date--

  DECLARE @ReqDate AS INT

  SELECT @ReqDate = intReqRec FROM tblCoOpts

  DECLARE @Required AS DATETIME = DATEADD(DAY, @ReqDate, @JournalDate)

  --Got Required Date--
  INSERT INTO tblOrderDoc VALUES (@OrderDocID, @DocType, @SystemDate, @JournalDate, @Required, @UserName,
   @CustName, @ShipTo, @ShipTo, @Reference, @SubTotal, @VAT, @Total, '', 0, 0, @IsCleared, NULL, @AddInfo,
    @Currency, @IsForeign, @SubTotalF, @VATF, @TotalF, @Exchange, @Term, NULL, @Field1, @Field2, @Field3,
     @Field4, @Field5, @Field6, @Field7, @Field8, @Field9, @Field10, @Field11, @Field12, @SubFormatted, @VATFormatted,
      @TotFormatted, @Field13, @Field14, @DiscPerc, @DiscAmt, @DiscAmtF, @DiscFormatted, NULL,
   NULL, 0, NULL, 0, NULL, @TotalWeight, @TotalVolWeight, NULL, @DeliveryCost, @DeliveryCostF, @DeliveryCostFormatted, 
   0, 1,0, @StoreNumber, @EDI, null, @IsFromWorkshop, NULL, NULL, NULL, NULL, GETDATE(), NULL)

  DECLARE @lngRevID AS bigint

  DECLARE @ReferenceNumber AS INT

  SELECT @lngRevID = (ISNULL(MAX(lngEntID),0) + 1) FROM tblInvoiceDocREV

  SELECT @ReferenceNumber = (ISNULL(MAX(intRevisionNumber),0) + 1) FROM tblInvoiceDocREV WHERE strInvDocID = @OrderDocID

  INSERT INTO tblInvoiceDocREV (lngEntID,strInvDocID,lngInvTrackID,lngJourID,dteSystemDate,dteJournalDate,dteRequired,strUserName,strCustName,strSoldTo,strShipTo,strReference,decSubTotal,decVAT,decTotal,bitFromSO,strOrdDocID,bitHistoryTrans,strNotes,bitPrinted,
  bitEmailed,intPaidBy,intAccount,strSalesName,strAddInfo,bitReserved,strCurrency,bitIsForeign,decSubTotalF,decVATF,decTotalF,decExchange,strTerm,intDept,strField1,strField2,strField3,strField4,strField5,strField6,strField7,strField8,strField9,strField10,
  strField11,strField12,strSubFormated,strVATFormatted,strTotFormatted,dteField13,dteField14,decDiscPerc,decDiscAmt,decDiscAmtF,strDiscFormatted,strOrdFQDocID,strStatusTypeCode,strCNReasonCode,bitBookmark,dteSystemDateTime,strPaidBy,intSentDoc,strVAT,
  strDelMethodCode,decTotalWeight,decTotalVolWeight,decDeliveryCost,decDeliveryCostF,strDeliveryCostFormatted,intRevisionNumber,dteRevisionDate,strUserCreated,bitIsRepair,strVendName,strBoughtFrom,bitFQConvert,bitSOCopy,bitSOCopyMulti,strVendInvNo,bitFromPO,
  decNetItemWeight,decNetVolumetricWeight,strSourceMOP,bitCleared,strOrdRFQDocID,bitRFQConvert,strOrdPDocID,intModule,strSOReasonCode,strDelNoteNo,strContractTo,strContBillType,blnAllowAnnualIncrease,intContractPriceIncrease,dtpIncreaseStartDate,bitInactive,strStoreNumber,strEDI)
 SELECT CAST(@lngRevID as varchar(20)),strOrdDocID,NULL,NULL,dteSystemDate,dteJournalDate,dteRequired,strUserName,strCustName,strSoldTo,strShipTo,strReference,decSubTotal,decVAT,decTotal,NULL,NULL,NULL,strNotes,bitPrinted,bitEmailed,NULL,NULL,strSalesName
,strAddInfo,NULL,strCurrency,bitIsForeign,decSubTotalF,decVATF,decTotalF,decExchange,strTerm,intDept,strField1,strField2,strField3,strField4,strField5,strField6,strField7,strField8,strField9,strField10,strField11,strField12,strSubFormated,strVATFormatted,
strTotFormatted,dteField13,dteField14,decDiscPerc,decDiscAmt,decDiscAmtF,strDiscFormatted,strOrdFQDocID,strStatusTypeCode,strCNReasonCode,bitBookmark,NULL,NULL,NULL,NULL,strDelMethodCode,decTotalWeight,decTotalVolWeight, decDeliveryCost,decDeliveryCostF,
strDeliveryCostFormatted, CAST(@ReferenceNumber as varchar(20)),dteSystemDate,strUserName,bitIsRepair,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,bitCleared,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL FROM tblOrderDoc 
WHERE strOrdDocID = @OrderDocID

  INSERT INTO tblInvoiceDocREVDT (lngEntID,strInvDocID,intLineNo,strPartNumber,strLocation,strPartDesc,decQty,strUnit,intType,decPriceEaExc,decLineTotExc,decLineTaxAmt,decPriceEaInc,decLineTotInc,strTaxCode,imgTaxObj,strCurrency,bitIsForeign,decPriceEaExcF,
  decLineTotExcF,decLineTaxAmtF,decEaIncTaxF,decTotIncTaxF,strInvField1,strInvField2,strInvField3,strInvField4,strInvField5,strInvField6,strLineField1,strLineField2,strLineField3,strLineField4,strLineField5,strLineField6,strLineField7,strLineField8,strLineField9,
  strLineField10,strLineField11,strLineField12,decLineDiscPerc,decLineDiscAmt,decLineDiscAmtF,bitDiscountTax,decStockQty,strStockUnit,decStandardCost,decLastPPUnit,strSalesName,decCOGS,decSOQty,decSOQtyRemain,strPartExtendedDesc,decItemWeight,
  decVolumetricWeight,bitContainerItem,decBuyQty,decBuyQtyRemain,strBuyUnit,decEaIncTax,decTotIncTax,strOrdSODocID,decStockQtyRemain,decBuyoutCost,decQtyRemaining,intStatus,uidTransactionFieldID,strContBillType,blnAllowAnnualIncrease,intContractPriceIncrease,
  dtpIncreaseStartDate,dtpSetUpDate,dtpActivationDate,dtpTerminationDate,dtpExpirationDate,dtpBillingSchduleStart,strBillingFrequncy,dtpLastBillDate,dtpNextBillDate,dtpNextInvoiceDate) SELECT CAST(@lngRevID as varchar(20)),strOrdDocID,intLineNo,strPartNumber,
  strLocation,strPartDesc,decQty,strUnit,intType,decPriceEaExc,decLineTotExc,decLineTaxAmt,decPriceEaInc,decLineTotInc,strTaxCode,imgTaxObj,strCurrency,bitIsForeign,decPriceEaExcF,decLineTotExcF,decLineTaxAmtF,decEaIncTaxF,decTotIncTaxF,strInvField1,
  strInvField2,strInvField3,strInvField4,strInvField5,strInvField6,strLineField1,strLineField2,strLineField3,strLineField4,strLineField5,strLineField6,strLineField7,strLineField8,strLineField9,strLineField10,strLineField11,strLineField12,decLineDiscPerc,
  decLineDiscAmt,decLineDiscAmtF,bitDiscountTax,decStockQty,strStockUnit,NULL,NULL,strSalesName,NULL,NULL,NULL,strPartExtendedDesc,decItemWeight,decVolumetricWeight,bitContainerItem,NULL,NULL,NULL,NULL,NULL,NULL,decStockQtyRemain,decBuyoutCost,NULL, 1,
  uidTransactionFieldID,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL FROM tblOrderDocDT WHERE strOrdDocID = @OrderDocID

  UPDATE tblCustomers SET decOpenOrders = (SELECT ISNULL(SUM(decTotal), 0) FROM tblOrderDoc WHERE strCustName = @CustName AND bitCleared = 0 AND intDocType in (1,3)), decOpenOrdersF = (SELECT ISNULL(SUM(decTotalF), 0) FROM tblOrderDoc WHERE strCustName = @CustName
   AND bitCleared = 0 AND intDocType in (1,3)) WHERE strCustName = @CustName

  IF @DocType = 1 --Sales Order
   UPDATE tblLastIDs SET lngSONumber = @NextSONumber

  IF @DocType = 2 --Sales Quote
   UPDATE tblLastIDs SET lngQuoteNumber = @NextSONumber

  IF @DocType = 3 --Lay-By
   UPDATE tblLastIDs SET lngLBNumber = @NextSONumber


  SELECT 'Success'

 END TRY

 BEGIN CATCH

  IF ERROR_NUMBER() = 547

   BEGIN     

    SET @ERR_MSG = 'Error 547: '

    SELECT @ERR_MSG

   END

  ELSE IF ERROR_NUMBER() = 8152

   BEGIN     

    SET @ERR_MSG = 'Error 8152: '

    SELECT @ERR_MSG 

   END

  ELSE

   BEGIN  

    IF LEN(@ERR_MSG) > 0

     SELECT @ERR_MSG

    ELSE

    BEGIN

     SELECT @ERR_MSG = ERROR_MESSAGE(),  @Err_Severity = ERROR_SEVERITY() , @ERR_STA = ERROR_STATE()  

     RAISERROR (@ERR_MSG, @Err_Severity, @ERR_STA);

    END

   END    

 END CATCH 

END
GO
/****** Object:  StoredProcedure [dbo].[ImportSalesOrderStandardSub]    Script Date: 26/06/2020 15:00:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportSalesOrderStandardSub]
(	
	@OrderDocID AS NVARCHAr(100),
	@LineNo AS INT,
	@PartNumber AS NVARCHAR(100),
	@Location AS NVARCHAR(20), 
	@Qty AS MONEY,
	@Unit AS NVARCHAR(30),
	@Type AS TINYINT,
	@PriceEaExc AS MONEY,
	@LineTotExc AS MONEY,
	@LineTaxAmt AS MONEY,
	@PriceEaInc AS MONEY,
	@LineTotInc AS MONEY,
	@TaxCode AS NVARCHAR(4),
	@TaxObj AS VARBINARY(max) = NULL,
	@Currency AS NVARCHAR(6),
	@IsForeign AS BIT,
	@PriceEaExcF AS MONEY,
	@LineTotExcF AS MONEY,
	@LineTaxAmtF AS MONEY,
	@EaIncTaxF AS MONEY,
	@TotIncTaxF AS MONEY,
	@InvField1 AS NVARCHAR(200),
	@InvField2 AS NVARCHAR(200),
	@InvField3 AS NVARCHAR(200),
	@InvField4 AS NVARCHAR(200),
	@InvField5 AS NVARCHAR(200),
	@InvField6 AS NVARCHAR(200),
	@LineField1 AS NVARCHAR(

100),
	@LineField2 AS NVARCHAR(100),
	@LineField3 AS NVARCHAR(100),
	@LineField4 AS NVARCHAR(100),
	@LineField5 AS NVARCHAR(100),
	@LineField6 AS NVARCHAR(100),
	@LineField7 AS NVARCHAR(100),
	@LineField8 AS NVARCHAR(100),
	@LineField9 AS NVARCHAR(100),
	

@LineField10 AS NVARCHAR(100),
	@LineField11 AS NVARCHAR(100),
	@LineField12 AS NVARCHAR(100),
	@LineDiscPerc AS MONEY,
	@LineDiscAmt AS MONEY,
	@LineDiscAmtF AS MONEY,	
	@PartExtendedDesc AS NVARCHAR(MAX),
	@BuyoutCost AS MONEY,
	@ItemWeight AS MONEY,
	@VolumetricWeight AS MONEY,
	@IsContainerItem AS BIT
)
AS
BEGIN
	BEGIN TRY

		DECLARE @ERR_MSG AS NVARCHAR(4000), @Err_Severity INT, @ERR_STA AS SMALLINT
		DECLARE @PartDesc AS NVARCHAR(1000)
		DECLARE @SellFromStock AS SMALLMONEY
		DECLARE @StockUnit AS NVARCHAR(30)
		DECLARE @InventoryType AS INT	
			
		SELECT @PartDesc = strDesc, @SellFromStock = decSellFromStock, @StockUnit = strSellStockUnit FROM tblInv WHERE strPartNumber = @PartNumber

		IF @@ROWCOUNT = 0
		BEGIN
			SET @ERR_MSG = 'Error 547: '
			RAISERROR (@ERR_MSG, @Err_Severity, @ERR_STA);
		END

		DECLARE @StockQty AS DECIMAL = @SellFromStock * @QTY

		SELECT @InventoryType = intType FROM tblInv WHERE strPartNumber = @PartNumber

		IF @InventoryType = 0
		BEGIN
			SET @ERR_MSG = 'Error 547: '
			RAISERROR (@ERR_MSG, @Err_Severity, @ERR_STA);
		END

		INSERT INTO tblOrderDocDT VALUES (@OrderDocID, @LineNo, @PartNumber, @Location, @PartDesc, @Qty, @Qty, @Unit, @Type, @PriceEaExc, @LineTotExc, @LineTaxAmt, @PriceEaInc, @LineTotInc, @TaxCode, @TaxObj, @Currency, @IsForeign, @PriceEaExcF, @LineTotExcF, 
		@LineTaxAmtF, @EaIncTaxF, @TotIncTaxF, @InvField1, @InvField2, @InvField3, @InvField4, @InvField5, @InvField6, @LineField1, @LineField2, @LineField3, @LineField4, @LineField5, @LineField6, @LineField7, @LineField8, @LineField9, @LineField10, @LineField11, 
@LineField12, @LineDiscPerc, @LineDiscAmt, @LineDiscAmtF, 0, @StockQty, @StockUnit, @StockQty, NULL, @PartExtendedDesc, @BuyoutCost, @ItemWeight, @VolumetricWeight, @IsContainerItem, 0, 0, NEWID(), NULL, NULL)

		SELECT 'Success'

	END TRY

	BEGIN CATCH

		IF ERROR_NUMBER() = 547
			BEGIN					
				SET @ERR_MSG = 'Error 547: '
				SELECT @ERR_MSG
	
			END
		ELSE IF ERROR_NUMBER() = 8152
			BEGIN					
				SET @ERR_MSG = 'Error 8152: '
				SELECT @ERR_MSG	
			END
		ELSE
			BEGIN		
				IF LEN(@ERR_MSG) > 0
					SELECT @ERR_MSG
				ELSE
				BEGIN	
					SELECT @ERR_MSG = ERROR_MESSAGE(),  @Err_Severity = ERROR_SEVERITY() , @ERR_STA = ERROR_STATE()		
					RAISERROR (@ERR_MSG, @Err_Severity, @ERR_STA);
				END
			END				
		
	END CATCH	
END

GO
/****** Object:  StoredProcedure [dbo].[ImportSalesPersons]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportSalesPersons] (
	@strSalesName NVARCHAR(50)
	,@bitInactive BIT
	)
AS
DECLARE @salesCount INT

SELECT @salesCount = COUNT(strSalesName)
FROM tblSalesPersons
WHERE strSalesName = @strSalesName

IF @salesCount = 0
BEGIN
	INSERT INTO tblSalesPersons
	VALUES (
		@strSalesName
		,''
		,''
		,''
		,''
		,''
		,''
		,''
		,''
		,''
		,0
		,@bitInactive
		,GetDate()
		,GetDate()
		,''
		,NEWID()
		,''
		,NULL
		,''
		,''
		,''
		,NULL
		,NULL
		,NULL
		,NULL
		,GETDATE()
		)
END
GO
/****** Object:  StoredProcedure [dbo].[ImportSimplyAccountLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportSimplyAccountLY] 
AS
BEGIN
	INSERT INTO tblAccountsLY 
	SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, tblAccounts.intGroupCode, tblAccounts.intAccClass, tblAccounts.bitInactive, 0, 0, 0, 0, tblAccounts.bitBank, tblAccounts.bitRecon, tblAccounts.bitInventory, tblAccounts.bitBudget, tblAccounts.bitUsed, tblAccounts.bitUsedLY, tblAccounts.bitLinkREarnings, tblAccounts.bitLinkCEarnings, tblAccounts.bitLinkAP, tblAccounts.bitLinkPurDisc, tblAccounts.bitLinkAR, tblAccounts.bitLinkSalesDisc, tblAccounts.bitLinkAssCosts, tblAccounts.bitLinkAdjWriteOff, tblAccounts.bitIsLinkedAccount, tblAccounts.bitDefBank, tblAccounts.bitLinkDeposit, tblAccounts.bitLinkPrePay, tblAccounts.strField1, tblAccounts.strField2, tblAccounts.strField3, tblAccounts.strField4, tblAccounts.strField5, tblAccounts.strField6, tblAccounts.bitLinkExc, tblAccounts.bitAllowCenters, tblAccounts.intCheqNumber, tblAccounts.strCurrency, 0, 0, 0, 0, tblAccounts.bitLinkGRV, tblAccounts.bitLinkAddCost, tblAccounts.bitLinkDelAdvice, tblAccounts.bitLinkWIP, tblAccounts.bitLinkManStandardCost, tblAccounts.bitLinkWorkshopWIP ,tblAccounts.bitLinkGoodsInTransit, tblAccounts.bitLinkARCustMast, tblAccounts.bitLinkDepositCustMast, tblAccounts.bitLinkAPVendMast, tblAccounts.bitLinkPrepayVendMast  FROM tblAccounts LEFT JOIN tblAccountsLY ON tblAccounts.intGLNumber = tblAccountsLY.intGLNumber 
	--WHERE ISNULL(tblAccountsLY.intGLNumber,0) = 0
	WHERE tblAccountsLY.intGLNumber IS NULL
END 
GO
/****** Object:  StoredProcedure [dbo].[ImportSimplyAccountSets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportSimplyAccountSets] 
AS
BEGIN
	UPDATE tblAccounts SET bitInventory = 0
	UPDATE tblAccounts SET bitInventory = 1 WHERE intGLNumber IN (SELECT intGLAsset FROM tblAccountSets)
	
END 
GO
/****** Object:  StoredProcedure [dbo].[ImportSimplyInv]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ImportSimplyInv]
(	
	@IsService BIT,

	@PartNumber NVARCHAR(100),
	@Desciption NVARCHAR(1000),
	@Type TINYINT,
	@Category NVARCHAR(40),
	@BuyUnit NVARCHAR(30),
	@SellUnit NVARCHAR(30),
	@BuyToStock SMALLMONEY,
	@IsInactive BIT,
	@AcctSet NVARCHAR(20),
	@MatriXExclusionType AS INT
	

)
AS
BEGIN
		
	DECLARE @IsInvExtDescOnSI AS BIT = 0
	DECLARE @IsInvExtDescOnSO AS BIT = 0
	DECLARE @IsInvExtDescOnSQ AS BIT = 0
	DECLARE @IsInvExtDescOnSFHQ AS BIT = 0
	DECLARE @IsInvExtDescOnCR AS BIT = 0
	DECLARE @IsInvExtDescOnPI AS BIT = 0
	DECLARE @IsInvExtDescOnPO AS BIT = 0
	DECLARE @IsInvExtDescOnPQ AS BIT = 0
	DECLARE @IsInvExtDescOnBRQ AS BIT = 0

	SELECT @IsInvExtDescOnSI = bitInvExtDescOnSI, @IsInvExtDescOnSO = bitInvExtDescOnSO, @IsInvExtDescOnSQ = bitInvExtDescOnSQ, @IsInvExtDescOnSFHQ = bitInvExtDescOnSFHQ, @IsInvExtDescOnCR = bitInvExtDescOnCR, @IsInvExtDescOnPI = bitInvExtDescOnPI, @IsInvExtDescOnPO = bitInvExtDescOnPO, @IsInvExtDescOnPQ = bitInvExtDescOnPQ, @IsInvExtDescOnBRQ = bitInvExtDescOnBRQ FROM tblCoOpts
	
	INSERT INTO tblInv 	
	(
	strPartNumber
,strDesc
,intType
,strCategory
,intExpAcct
,decCostOnPO
,bitUseLPPOnPO
,intReorderQty
,strBuyUnit
,strStockUnit
,decBuyToStock
,bitAllowPriceChg
,dteDateLastSale
,dteLastPurchase
,decLastPPUnit
,dteLastUpdated
,bitUseBOM
,intBOMQty
,strAddInfo
,bitInactive
,decSumAvail
,decSumAlloc
,decSumOnHand
,decSumValue
,decSumOnOrder
,decSumOpenQty
,decSumOpenValue
,decSumValYearStart
,decSumQtyYearStart
,decSumAmtSoldYTD
,decSumAmtSoldLY
,decSumQtySoldYTD
,decSumQtySoldLY
,decSumCOGSYTD
,decSumCOGSLY
,intSumNumTransYTD
,intSumNumTransLY
,bitAutoBuild
,strField1
,strField2
,strField3
,strField4
,strField5
,strField6
,strBarCode
,decStandardCost
,bitItemNumConvUsed
,strSellUnit
,strSellStockUnit
,decSellFromStock
,strItemSegment1
,strItemSegment2
,strItemSegment3
,strItemSegment4
,strInvNumConv
,bitInvSerialType
,strInvSerialType
,decRepairCharge
,strBarCode2
,bitVoucherEnabled
,strVoucherCode
,decDefSaleQty
,strExtendedDesc
,bitInvExtDescOnSI
,bitInvExtDescOnSO
,bitInvExtDescOnSQ
,bitInvExtDescOnSFHQ
,bitInvExtDescOnCR
,bitInvExtDescOnPI
,bitInvExtDescOnPO
,bitInvExtDescOnPQ
,bitWebstoreItem
,strDimProCode
,strRSTTerminalSync
,intDecimalQuantity
,strBOMNotes
,bitInvExtDescOnBRQ
,decMass
,decVolumetricWeight
,strUnitOfMeasure
,decW
,decH
,decD
,decCube
,decFactor
,decMaxLevel
,decOrderLeadTime
,decSafetyFactorPer
,decDaysSalesinStock
,decMinimumOrderQuantity
,decNewDailySales
,decOldMinLevel
,decMinimumLevel
,decOldMaxLevel
,decEconomicOrderQty
,bitPallet
,bitInclInvForecast
,bitDimProSales
,bitDimProPurchases
,strInvWCCode
,decLastManCost
,bitExclCommission
,bitAutoBuildSameLoc
--,bitInclInvForecastOld
,strHSCode
,strHSDesc
,strURACode
	)
	VALUES 
	(@PartNumber, @Desciption, @Type, @Category, '', 0, 1, 0, @BuyUnit, @SellUnit, @BuyToStock, 1, '1999,1,1', '1999,1,1', 0,GetDate(), 0, 1, '', @IsInactive, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', '', '', '', '', '', 0, 0, @BuyUnit, @SellUnit, @BuyToStock, '', '', '', '', NULL, 0, NULL, 0, '', 0, NULL, 1, '', @IsInvExtDescOnSI, @IsInvExtDescOnSO, @IsInvExtDescOnSQ, @IsInvExtDescOnSFHQ, @IsInvExtDescOnCR, @IsInvExtDescOnPI, @IsInvExtDescOnPO, @IsInvExtDescOnPQ, 0, '', '', 2, '', @IsInvExtDescOnBRQ, 0, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,0,NULL,0,0, 0,'','','')
	
	IF (@IsService = 0)
	BEGIN
		DECLARE @tblLocTemp AS TABLE
		(
			Location NVARCHAR(20)
		)
		INSERT INTO @tblLocTemp SELECT strLocName FROM tblInvLoc

		DECLARE @Location AS NVARCHAR(20)

		WHILE(SELECT COUNT(1) FROM @tblLocTemp) > 0
		BEGIN
			SELECT TOP(1) @Location = Location FROM @tblLocTemp
			INSERT INTO tblInvExt 
			(
				strPartNumber
				,strLocName
				,decAvail
				,decAlloc
				,decOnHand
				,decValue
				,decOnOrder
				,decOpenQty
				,decOpenValue
				,intReorderPoint
				,strAcctSet
				,strBinLoc
				,decMaxLevel
				,decMinimumLevel
			)
			VALUES (@PartNumber, @Location, 0, 0, 0, 0, 0, 0, 0, 0, @AcctSet, '', 0, 0)
			DELETE FROM @tblLocTemp WHERE Location = @Location
		END
	END

	INSERT INTO tblTradeDiscMatrixTypesDT SELECT uidMatrixID, @MatriXExclusionType, ISNULL((SELECT MAX(DTL.intLineNo) FROM tblTradeDiscMatrixTypesDT DTL WHERE DTL.intType = @MatriXExclusionType AND DTL.uidMatrixID = tblTradeDiscMatrixTypes.uidMatrixID),0) + 1, 0, 0, 0, @PartNumber, GETDATE() FROM tblTradeDiscMatrixTypes
END
GO

/****** Object:  StoredProcedure [dbo].[ImportTaxCodes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportTaxCodes] (
	@strTaxName NVARCHAR(10)
	,@strPurchase NVARCHAR(30)
	,@strSales NVARCHAR(30)
	,@strTaxCode NVARCHAR(2)
	,@strDescription NVARCHAR(20)
	,@intAllowedJournals INT
	,@intStatus INT
	,@decRate DECIMAL
	,@bitIncluded BIT
	,@bitRefundable BIT
	)
AS
DECLARE @taxDefCount INT
	,@taxCodeCount INT

SELECT @taxDefCount = COUNT(strTaxName)
FROM tblTaxDef
WHERE strTaxName = @strTaxName

IF @taxDefCount = 0
BEGIN
	INSERT INTO tblTaxDef
	VALUES (
		@strTaxName
		,@strPurchase
		,@strSales
		,GETDATE()
		)
END

SELECT @taxCodeCount = COUNT(strTaxCode)
FROM tblTaxCodes
WHERE strTaxCode = @strTaxCode

IF @taxCodeCount = 0
BEGIN
	INSERT INTO tblTaxCodes
	VALUES (
		@strTaxCode
		,@strDescription
		,@intAllowedJournals
		,0
		,0
		,0
		,0
		,GETDATE()
		,0
		,''
		,0
		,0
		,0
		,0
		,0
		)

	INSERT INTO tblTaxCodeExt
	VALUES (
		@strTaxCode
		,@strTaxName
		,@intStatus
		,@decRate
		,@bitIncluded
		,@bitRefundable
		,GETDATE()
		)
END
GO
/****** Object:  StoredProcedure [dbo].[ImportTradeDiscMatrix]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportTradeDiscMatrix]
(
	@strPartNumber nvarchar(50),
	@intType int
)
AS

INSERT INTO tblTradeDiscMatrixTypesDT SELECT uidMatrixID, @intType, ISNULL((SELECT MAX(DTL.intLineNo) 
FROM tblTradeDiscMatrixTypesDT DTL WHERE DTL.intType = @intType AND DTL.uidMatrixID = tblTradeDiscMatrixTypes.uidMatrixID),0) + 1, 0, 0, 0, @strPartNumber, GETDATE() 
FROM tblTradeDiscMatrixTypes
GO
/****** Object:  StoredProcedure [dbo].[ImportVendorContacts]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ImportVendorContacts]
(
	@tblData AS ContactsTableType READONLY
)
AS
BEGIN
	BEGIN TRY

		DECLARE @ERR_MSG AS NVARCHAR(4000), @Err_Severity INT, @ERR_STA AS SMALLINT
	
		BEGIN TRAN	

			DECLARE @UpdateCount AS INT = 0
			DECLARE @InsertCount AS INT = 0
			DECLARE @RowNumber AS INT = 0

			DECLARE @Name AS NVARCHAR(200) = NULL	
			DECLARE @VendName AS NVARCHAR(50) = NULL				
			DECLARE @JobTitle AS NVARCHAR(150) = NULL	
			DECLARE @Email AS NVARCHAR(150) = NULL	
			DECLARE @Telephone AS NVARCHAR(50) = NULL	
			DECLARE @Fax AS NVARCHAR(50) = NULL	
			DECLARE @CellPhone AS NVARCHAR(50) = NULL	
			DECLARE @Street1 AS NVARCHAR(100) = NULL	
			DECLARE @Street2 AS NVARCHAR(100) = NULL	
			DECLARE @City AS NVARCHAR(50) = NULL	
			DECLARE @Province AS NVARCHAR(50) = NULL	
			DECLARE @Postal AS NVARCHAR(20) = NULL	
			DECLARE @Notes AS NVARCHAR(MAX) = NULL	
			DECLARE @Facebook AS NVARCHAR(50) = NULL
			DECLARE @LinkedIn AS NVARCHAR(50) = NULL
			DECLARE @Skype AS NVARCHAR(50) = NULL

			DECLARE @JobTitleId AS BIGINT = NULL

			--START CURSOR--

			DECLARE @Item_CUR CURSOR
			SET @Item_CUR = CURSOR FOR SELECT * FROM @tblData 
			OPEN @Item_CUR   
			FETCH NEXT FROM @Item_CUR
			INTO @Name, @VendName, @JobTitle, @Email, @Telephone, @Fax, @CellPhone, @Street1, @Street2, @City, @Province, @Postal, @Notes, @Facebook, @LinkedIn, @Skype
			
			WHILE @@FETCH_STATUS = 0
			BEGIN
			
				SET @RowNumber += 1
				
				
				--GET JOB TITLE ID. CREATE NEW IF JOB TITLE DOES NOT EXIST

				SELECT @JobTitleId = [lngID] FROM [tblJobTitles] WHERE [strJobTitle] = @JobTitle
				IF(@@ROWCOUNT =0)
				BEGIN
					INSERT INTO tblJobTitles VALUES (@JobTitle); 
					SELECT @JobTitleId = @@IDENTITY
				END
				
								
				UPDATE tblVendorContacts SET [intJobTitle] = @JobTitleId,[strEmail] = @Email,[strTel] = @Telephone,[strFax] = @Fax,[strCell] = @CellPhone,[strStreet1] = @Street1,[strStreet2] = @Street2,[strCity] = @City,[strProvince] = @Province,[strPostal] = @Postal
,[strNotes] = @Notes,[strFacebook] = @Facebook,[strLinkedIn] = @LinkedIn,[strSkype] = @Skype WHERE [strName] = @Name AND [strVendName] = @VendName
				
				
				IF @@ROWCOUNT = 0
				BEGIN

					INSERT INTO tblVendorContacts ([strName],[strVendName],[intJobTitle],[strEmail],[strTel],[strFax],[strCell],[strStreet1],[strStreet2],[strCity],[strProvince],[strPostal],[strNotes],[strFacebook],[strLinkedIn],[strSkype]) VALUES(@Name,@VendName,@JobTitleId,@Email,@Telephone,@Fax,@CellPhone,@Street1,@Street2,@City,@Province,@Postal,@Notes,@Facebook,@LinkedIn,@Skype)

					SET @InsertCount +=1

				END
				ELSE 
				BEGIN 
					SET @UpdateCount +=1
				END					

			FETCH NEXT FROM @Item_CUR
			INTO @Name, @VendName, @JobTitle, @Email, @Telephone, @Fax, @CellPhone, @Street1, @Street2, @City, @Province, @Postal, @Notes, @Facebook, @LinkedIn, @Skype

			END

			CLOSE @Item_CUR
			DEALLOCATE @Item_CUR

			--END CURSOR--
						
			
			COMMIT TRAN

			SELECT CONCAT('Success: ',  @InsertCount)

	END TRY

	BEGIN CATCH

		IF ERROR_NUMBER() = 547
			BEGIN	
				ROLLBACK TRAN
				SET @ERR_MSG = CONCAT('Error 547: ', @RowNumber)
				SELECT @ERR_MSG
	
			END
		ELSE IF ERROR_NUMBER() = 8152
			BEGIN					
				ROLLBACK TRAN
				SET @ERR_MSG = CONCAT('Error 8152: ',@RowNumber)
				SELECT @ERR_MSG	
			END
		ELSE
			BEGIN			
				SELECT @ERR_MSG = ERROR_MESSAGE(),  @Err_Severity = ERROR_SEVERITY() , @ERR_STA = ERROR_STATE()								
				ROLLBACK TRAN	
				RAISERROR (@ERR_MSG, @Err_Severity, @ERR_STA);
			END				
		
	END CATCH	

END
GO
/****** Object:  StoredProcedure [dbo].[ImportVendors]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [SetPickTicketAsPrinted] ***********/

/*********** Start [ImportVendors] ***********/

CREATE PROCEDURE [dbo].[ImportVendors] (
	@VendName AS NVARCHAR(50) = NULL
	,@VendDesc AS NVARCHAR(200) = NULL
	,@Contact AS NVARCHAR(100) = NULL
	,@Street1 AS NVARCHAR(100) = NULL
	,@Street2 AS NVARCHAR(100) = NULL
	,@City AS NVARCHAR(50) = NULL
	,@Province AS NVARCHAR(50) = NULL
	,@Postal AS NVARCHAR(20) = NULL
	,@Country AS NVARCHAR(50) = NULL
	,@CountryCode AS NVARCHAR(10) = NULL
	,@Phone AS NVARCHAR(50) = NULL
	,@CellPhone AS NVARCHAR(50) = NULL
	,@Fax AS NVARCHAR(50) = NULL
	,@Email AS NVARCHAR(250) = NULL
	,@VAT AS NVARCHAR(50) = NULL
	,@CK AS NVARCHAR(50) = NULL
	,@Field1 AS NVARCHAR(100) = NULL
	,@Field2 AS NVARCHAR(100) = NULL
	,@Field3 AS NVARCHAR(100) = NULL
	,@Field4 AS NVARCHAR(100) = NULL
	,@Field5 AS NVARCHAR(100) = NULL
	,@Field6 AS NVARCHAR(100) = NULL
	,@Field7 AS NVARCHAR(100) = NULL
	,@Field8 AS NVARCHAR(100) = NULL
	,@Field9 AS NVARCHAR(100) = NULL
	,@Field10 AS NVARCHAR(100) = NULL
	,@Field11 AS NVARCHAR(100) = NULL
	,@Field12 AS NVARCHAR(100) = NULL
	,@Notes AS NVARCHAR(MAX) = NULL
	,@Term AS NVARCHAR(50) = NULL
	,@VendCategory AS NVARCHAR(20) = NULL
	,@Dept AS INT = NULL
	,@Currency AS NVARCHAR(3) = NULL
	,@TenderType AS NVARCHAR(20) = NULL
	,@TradeDiscPerc AS MONEY = NULL
	,@Inactive AS BIT = NULL
	,@InvWorkflowNew AS BIT = NULL
	,@InvWorkflowGRV AS BIT = NULL
	,@InvWorkflowPO AS BIT = NULL
	,@Website AS NVARCHAR(200) = NULL
	,@TaxCode AS NVARCHAR(2) = NULL
	,@APAccount AS NVARCHAR(60) = NULL
	,@PrepayAccount AS NVARCHAR(60) = NULL
	,@DocPassword AS NVARCHAR(Max) = NULL
	,@TPIN AS NVARCHAR(10) = NULL
	)
AS
BEGIN
	DECLARE @IsInsert AS BIT = 0

	IF @APAccount = ''
		OR ISNULL(@APAccount, '') = ''
	BEGIN
		SET @APAccount = (
				SELECT intGLNumber
				FROM tblAccounts
				WHERE bitLinkAP = 1
				)
	END

	IF @PrepayAccount = ''
		OR ISNULL(@PrepayAccount, '') = ''
	BEGIN
		SET @PrepayAccount = (
				SELECT intGLNumber
				FROM tblAccounts
				WHERE bitLinkPrePay = 1
				)
	END

	UPDATE tblVendors
	SET strVendDesc = @VendDesc
		,strContact = @Contact
		,strStreet1 = @Street1
		,strStreet2 = @Street2
		,strCity = @City
		,strProvince = @Province
		,strPostal = @Postal
		,strCountry = @Country
		,strCountryCode = @CountryCode
		,strPhone = @Phone
		,strCellPhone = @CellPhone
		,strFax = @Fax
		,strEmail = @Email
		,strVAT = @VAT
		,strCK = @CK
		,dteLastUpdated = GETDATE()
		,strField1 = @Field1
		,strField2 = @Field2
		,strField3 = @Field3
		,strField4 = @Field4
		,strField5 = @Field5
		,strField6 = @Field6
		,strField7 = @Field7
		,strField8 = @Field8
		,strField9 = @Field9
		,strField10 = @Field10
		,strField11 = @Field11
		,strField12 = @Field12
		,strNotes = @Notes
		,strTerm = @Term
		,strVendCategory = @VendCategory
		,intDept = @Dept
		,strCurrency = @Currency
		,strTenderType = @TenderType
		,decTradeDiscPerc = @TradeDiscPerc
		,bitInactive = @Inactive
		,bitInvWorkflowNew = @InvWorkflowNew
		,bitInvWorkflowGRV = @InvWorkflowGRV
		,bitInvWorkflowPO = @InvWorkflowPO
		,strWebsite = @Website
		,strTaxCode = @TaxCode
		,intGLNumberAP = @APAccount
		,intGLNumberPrePay = @PrepayAccount
		,strVendTPIN = @TPIN
	WHERE (strVendName = @VendName)

	IF @@ROWCOUNT = 0
	BEGIN
		INSERT INTO tblVendors (
			strVendName
			,strStreet1
			,strStreet2
			,strCity
			,strProvince
			,strPostal
			,strPhone
			,strCellPhone
			,strFax
			,strEmail
			,strVAT
			,strCK
			,decBalDue
			,decYTDPurch
			,decOpenOrders
			,intDelMethod
			,bitInventoryVendor
			,bitExpenseVendor
			,intExpAcct
			,bitInactive
			,dteLastUpdated
			,strContact
			,strField1
			,strField2
			,strField3
			,strField4
			,strField5
			,strField6
			,strTaxCode
			,dteSince
			,strNotes
			,uID
			,strVendDesc
			,strCountry
			,strTerm
			,intDept
			,strCurrency
			,decBalDueF
			,decYTDPurchF
			,decOpenOrdersF
			,strField7
			,strField8
			,strField9
			,strField10
			,strField11
			,strField12
			,strVendCategory
			,strCountryCode
			,strTenderType
			,decTradeDiscPerc
			,bitWithholdTax
			,strWithholdTaxCode
			,bitInvWorkflowNew
			,bitInvWorkflowGRV
			,bitInvWorkflowPO
			,strWebsite
			,strBuyerName
			,intGLNumberAP
			,intGLNumberPrePay
			,strDocPassword
			,strVendTPIN
			)
		VALUES (
			@VendName
			,@Street1
			,@Street2
			,@City
			,@Province
			,@Postal
			,@Phone
			,@CellPhone
			,@Fax
			,@Email
			,@VAT
			,@CK
			,0
			,0
			,0
			,CASE 
				WHEN LEN(@Email) = 0
					THEN 0
				ELSE 1
				END
			,1
			,0
			,NULL
			,@Inactive
			,GetDate()
			,@Contact
			,@Field1
			,@Field2
			,@Field3
			,@Field4
			,@Field5
			,@Field6
			,@TaxCode
			,CAST(GetDate() AS DATE)
			,@Notes
			,NEWID()
			,@VendDesc
			,@Country
			,@Term
			,@Dept
			,@Currency
			,0
			,0
			,0
			,@Field7
			,@Field8
			,@Field9
			,@Field10
			,@Field11
			,@Field12
			,@VendCategory
			,@CountryCode
			,@TenderType
			,@TradeDiscPerc
			,0
			,NULL
			,@InvWorkflowNew
			,@InvWorkflowGRV
			,@InvWorkflowPO
			,@Website
			,''
			,@APAccount
			,@PrepayAccount
			,@DocPassword
			,@TPIN
			)

		SET @IsInsert = 1
	END

	SELECT CONCAT (
			'Success: '
			,@IsInsert
			)
END
GO
/****** Object:  StoredProcedure [dbo].[ImportVendorsCategory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportVendorsCategory]
(
	@strVendCategory nvarchar(20),
	@strDesc nvarchar(100)
)
AS

declare @vendCatCount int

SELECT @vendCatCount = COUNT(strVendCategory) FROM tblVendorCat WHERE strVendCategory = @strVendCategory
IF @vendCatCount = 0
BEGIN
	INSERT INTO tblVendorCat VALUES (@strVendCategory,@strDesc,0)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertActionType]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [ActivityGroupInsertWithTableType] (CRM)**********/

/********* Start [InsertActionType] (CRM)**********/

CREATE Procedure [dbo].[InsertActionType]
(
 @ActionType nvarchar(900)
,@ActionDescription nvarchar(Max)
,@IsInactive bit
,@CreatedUser nvarchar(400)
,@CreatedDate datetime
,@IsEmailAction bit
)
As
Begin
	Insert into tblCRMActionType(ActionType,ActionDescription,CreatedUser,CreatedDate,IsInactive,IsEmailAction)
	Values(@ActionType,@ActionDescription,@CreatedUser,@CreatedDate,@IsInactive,@IsEmailAction)
End
GO
/****** Object:  StoredProcedure [dbo].[InsertActivity]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [DeleteActivityActionsStatus] (CRM)**********/

/********* Start [InsertActivity] (CRM)**********/

CREATE Procedure [dbo].[InsertActivity]
(
 @ActivityName nvarchar(900)
,@ActivityDescription nvarchar(Max)
,@ActivityGroupName nvarchar(400)
,@SalesPipelinePercentage decimal(18,2)
,@CreatedUser nvarchar(400)
,@CreatedDate datetime
,@IsInactive bit
)
As
Begin
	Insert into tblCRMPreActivityList(ActivityName,ActivityDescription,ActivityGroupName,SalesPipelinePercentage,CreatedUser,CreatedDate,IsInactive)
	Values(@ActivityName,@ActivityDescription,@ActivityGroupName,@SalesPipelinePercentage,@CreatedUser,@CreatedDate,@IsInactive)
End
GO
/****** Object:  StoredProcedure [dbo].[InsertActivityActionsStatus]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [DeleteActionType] (CRM)**********/

/********* Start [InsertActivityActionsStatus] (CRM)**********/

Create Procedure [dbo].[InsertActivityActionsStatus]
@StatusType	nvarchar(400),
@StatusDescription	nvarchar(Max),
@IsInactive	bit,
@CreatedUser	nvarchar(400),
@CreatedDate	datetime,
@IsPredefined bit,
@StatusGroup int
As
begin
	Insert into tblCRMActivityActionsStatus(StatusType,StatusDescription,IsInactive,CreatedUser,CreatedDate,IsPredefined,StatusGroup)
	Values(@StatusType,@StatusDescription,@IsInactive,@CreatedUser,@CreatedDate,@IsPredefined,@StatusGroup)
end
GO
/****** Object:  StoredProcedure [dbo].[InsertActivityGroup]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/******************* End [RptOrigInvNewDTSales] ********************/

/********* Start [InsertActivityGroup] (CRM)**********/

CREATE PROCEDURE [dbo].[InsertActivityGroup] 
@ActivityGroupName	nvarchar(400),
@ActivityGroupDescription nvarchar(Max),
@IsInactive	bit,
@CreatedUser	nvarchar(400),
@CreatedDate	datetime,
@IsSalesGroup bit
AS
BEGIN
	Insert into tblCRMActivityGroup(ActivityGroupName,ActivityGroupDescription,IsInactive,CreatedUser,CreatedDate,IsSalesGroup)
	Values(@ActivityGroupName,@ActivityGroupDescription,@IsInactive,@CreatedUser,@CreatedDate,@IsSalesGroup)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertActivityStatus]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [DeleteActivity] (CRM)**********/


/********* Start [InsertActivityStatus] (CRM)**********/

Create Procedure [dbo].[InsertActivityStatus]
@StatusType	nvarchar(400),
@StatusDescription	nvarchar(Max),
@IsInactive	bit,
@CreatedUser	nvarchar(400),
@CreatedDate	datetime,
@IsPredefined bit,
@StatusGroup int
As
begin
	Insert into tblCRMActivityStatus(StatusType,StatusDescription,IsInactive,CreatedUser,CreatedDate,IsPredefined,StatusGroup)
	Values(@StatusType,@StatusDescription,@IsInactive,@CreatedUser,@CreatedDate,@IsPredefined,@StatusGroup)
end
GO
/****** Object:  StoredProcedure [dbo].[InsertBICube]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************** End [GetViewCubeList] ****************/

/************************** Start [InsertBICube] ****************/


Create PROCEDURE [dbo].[InsertBICube] (
	 @SQstrCubeName nvarchar(200)
	,@SQstrViewName nvarchar(200)
	,@SQbitCustomCube bit
	,@SQstrViewDefinition nvarchar(Max)
	)
AS
BEGIN
	INSERT INTO tblCubes(strCubeName,strViewName,bitCustomCube,strViewDefinition) VALUES (@SQstrCubeName,@SQstrViewName,@SQbitCustomCube,@SQstrViewDefinition)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertBICubeTrancking]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************** End [InsertBIUserCubeView] ****************/

/************************** Start [InsertBICubeTrancking] ****************/


Create Procedure [dbo].[InsertBICubeTrancking]
(
@ViewName nvarchar(200),
@CubeName nvarchar(200),
@SystemDate datetime,
@UserName nvarchar(40),
@Type int
)
as
begin
	INSERT INTO tblCubeTracking (strViewName, strCubeName, dteSystemDate, strUserName, intType) 
	VALUES (@ViewName, @CubeName, @SystemDate, @UserName, @Type)
end
GO
/****** Object:  StoredProcedure [dbo].[InsertBIUserCubeView]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************** End [InsertBICube] ****************/

/************************** Start [InsertBIUserCubeView] ****************/


Create Procedure [dbo].[InsertBIUserCubeView]
(
@UserName nvarchar(40),
@CubeName nvarchar(200),
@ViewName nvarchar(200),
@ViewDefinition nvarchar(Max),
@IsActive bit
)
as
begin
INSERT INTO tblUsersCubeViews(strUserName,strCubeName,strViewName,blnIsAvailable,strViewDefinition) VALUES 
(@UserName, @CubeName, @ViewName, @IsActive, @ViewDefinition)
end
GO
/****** Object:  StoredProcedure [dbo].[InsertContraSerialLotTracking]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [SerialLotTrackingForInvoiceConvert] ***********/

CREATE PROCEDURE [dbo].[InsertContraSerialLotTracking] (  
 @DocID AS NVARCHAR(MAX)  
 ,--strExistingDANumber  
 @IsMultipleDA AS BIT  
 ,@Type AS TINYINT  
 ,--PL_SerialNumberTypes.DeliveryAdvice  
 @Status AS TINYINT  
 ,--PL_SerialNumberStatus.StatusIn  
 @UserName AS NVARCHAR(20)  
 ,--PL_oCurrentUser.UserName  
 @DocNumber AS NVARCHAR(100) --txtDocNumber.Text  
 )  
AS  
BEGIN  
 --Exception Handling  
 BEGIN TRY  
  DECLARE @ERR_MSG AS NVARCHAR(4000)  
   ,@Err_Severity INT  
   ,@ERR_STA AS SMALLINT  
  --Create Table Variable  
  DECLARE @DetailsTable TABLE (  
   RowNumber INT IDENTITY(0, 1)  
   ,PartNumber NVARCHAR(100)  
   ,PartItemNumber NVARCHAR(100)  
   ,SerialNumber NVARCHAR(200)  
   ,OrdDADocID NVARCHAR(100)  
   ,[LineNo] INT  
   ,Qty MONEY  
   ,Location NVARCHAR(20)  
   ,IsExpiryDate BIT  
   ,ExpiryDate SMALLDATETIME  
   ,BinID BIGINT  
   ,SerialLotType INT  
   ,IsDimensionExist BIT  
   ,Dimension NVARCHAR(MAX)  
   )  
  
  --Inserting Contra Serial / Lot Number Tracking (Out)  
  IF (@IsMultipleDA = 0)  
  BEGIN  
   --- Serial/Lot Item ---  
   INSERT INTO @DetailsTable  
   SELECT tblOrderDocDADT.strPartNumber AS 'PartNumber'  
    ,tblOrderDocDADTBOM.strPartItemNumber AS 'PartItemNumber'  
    ,tblOrderDocDADTSerial.strSerialNumber AS 'SerialNumber'  
    ,tblOrderDocDADTSerial.strOrdDADocID AS 'OrdDADocID'  
    ,tblOrderDocDADTSerial.intLineNo AS 'LineNo'  
    ,tblOrderDocDADTSerial.decQty AS 'Qty'  
    ,tblOrderDocDADT.strLocation AS 'Location'  
    ,tblOrderDocDADTSerial.bitExpiryDate AS 'IsExpiryDate'  
    ,tblOrderDocDADTSerial.dteExpiryDate AS 'ExpiryDate'  
    ,tblOrderDocDADTSerial.lngBinID AS 'BinID'  
    ,tblOrderDocDADTSerial.intSerialLotType AS 'SerialLotType'  
    ,CASE   
     WHEN tblOrderDocDADTSerial.intSerialLotType = 0  
      THEN ISNULL(ISE.bitDimensionExist, 0)  
     ELSE 0  
     END AS 'IsDimensionExist'  
    ,CASE   
     WHEN tblOrderDocDADTSerial.intSerialLotType = 0  
      THEN ISNULL(ISE.strDimension, '')  
     ELSE 0  
     END AS 'Dimension'  
   FROM tblOrderDocDADTSerial  
   INNER JOIN tblOrderDocDADT ON tblOrderDocDADTSerial.strOrdDADocID = tblOrderDocDADT.strOrdDADocID  
    AND tblOrderDocDADTSerial.intLineNo = tblOrderDocDADT.intLineNo  
   INNER JOIN tblSerialNumberTracking ON tblOrderDocDADT.intLineNo = tblSerialNumberTracking.intLineNo  
    AND tblOrderDocDADTSerial.strSerialNumber = tblSerialNumberTracking.strSerialNumber  
    AND tblSerialNumberTracking.lngID = (  
     SELECT MAX(SNT.lngID)  
     FROM tblSerialNumberTracking SNT  
     WHERE (SNT.intLineNo = tblSerialNumberTracking.intLineNo)  
      AND (SNT.strSerialNumber = tblSerialNumberTracking.strSerialNumber)  
      AND (SNT.strDocID = tblOrderDocDADTSerial.strOrdDADocID)  
      AND (SNT.intType = @Type)  
     )  
   LEFT JOIN tblInvSerialExt ISE ON tblOrderDocDADT.strPartNumber = ISE.strPartNumber  
    AND tblOrderDocDADT.strLocation = ISE.strLocName  
    AND tblOrderDocDADTSerial.strSerialNumber = ISE.strSerialNumber  
   LEFT JOIN tblOrderDocDADTBOMSerial ON tblOrderDocDADTSerial.strOrdDADocID = tblOrderDocDADTBOMSerial.strOrdDocDAID  
    AND tblOrderDocDADTSerial.strSerialNumber = tblOrderDocDADTBOMSerial.strSerialNumber  
    AND tblOrderDocDADTSerial.intLineNo = tblOrderDocDADTBOMSerial.intMainLineNo  
   LEFT JOIN tblOrderDocDADTBOM ON tblOrderDocDADTBOMSerial.strOrdDocDAID = tblOrderDocDADTBOM.strOrdDocDAID  
    AND tblOrderDocDADTBOMSerial.intLineNo = tblOrderDocDADTBOM.intLineNo  
    AND tblOrderDocDADTBOMSerial.intMainLineNo = tblOrderDocDADTBOM.intMainLineNo  
   WHERE tblOrderDocDADTSerial.strOrdDADocID = @DocID  
    AND tblSerialNumberTracking.intType = @Type  
    AND tblSerialNumberTracking.intStatus <> @Status  
  
   --- Serial/Lot Kit Item ---  
   DECLARE @KitItemDetailsTable TABLE (  
   RowNumber INT IDENTITY(0, 1)  
   ,PartNumber NVARCHAR(100)  
   ,SerialNumber NVARCHAR(200)  
   ,OrdDADocID NVARCHAR(100)  
   ,[LineNo] INT  
   ,Qty MONEY  
   ,Location NVARCHAR(20)  
   ,IsExpiryDate BIT  
   ,ExpiryDate SMALLDATETIME  
   ,BinID BIGINT  
   ,SerialLotType INT  
   ,IsDimensionExist BIT  
   ,Dimension NVARCHAR(MAX)  
   )  
   INSERT INTO @KitItemDetailsTable  
   SELECT tblOrderDocDADTBOM.strPartItemNumber AS 'PartNumber'  
    ,tblOrderDocDADTBOMSerial.strSerialNumber AS 'SerialNumber'  
    ,tblOrderDocDADTBOMSerial.strOrdDocDAID AS 'OrdDADocID'  
    ,tblOrderDocDADTBOMSerial.intLineNo AS 'LineNo'  
    ,tblOrderDocDADTBOMSerial.decQty AS 'Qty'  
    ,tblOrderDocDADTBOM.strLocName AS 'Location'  
    ,tblOrderDocDADTBOMSerial.bitExpiryDate AS 'IsExpiryDate'  
    ,tblOrderDocDADTBOMSerial.dteExpiryDate AS 'ExpiryDate'  
    ,tblOrderDocDADTBOMSerial.lngBinID AS 'BinID'  
    ,tblOrderDocDADTBOMSerial.intSerialLotType AS 'SerialLotType'  
    ,CASE   
     WHEN tblOrderDocDADTBOMSerial.intSerialLotType = 0  
      THEN ISNULL(ISE.bitDimensionExist, 0)  
     ELSE 0  
     END AS 'IsDimensionExist'  
    ,CASE   
     WHEN tblOrderDocDADTBOMSerial.intSerialLotType = 0  
      THEN ISNULL(ISE.strDimension, '')  
     ELSE 0  
     END AS 'Dimension'  
   FROM tblOrderDocDADTBOMSerial  
   INNER JOIN tblOrderDocDADTBOM ON tblOrderDocDADTBOMSerial.strOrdDocDAID = tblOrderDocDADTBOM.strOrdDocDAID  
    AND tblOrderDocDADTBOMSerial.intLineNo = tblOrderDocDADTBOM.intLineNo  
    AND tblOrderDocDADTBOMSerial.intMainLineNo = tblOrderDocDADTBOM.intMainLineNo  
   INNER JOIN tblSerialNumberTracking ON tblOrderDocDADTBOM.intMainLineNo = tblSerialNumberTracking.intLineNo  
    AND tblOrderDocDADTBOMSerial.strSerialNumber = tblSerialNumberTracking.strSerialNumber  
    AND tblSerialNumberTracking.lngID = (  
     SELECT MAX(SNT.lngID)  
  
     FROM tblSerialNumberTracking SNT  
     WHERE (SNT.intLineNo = tblSerialNumberTracking.intLineNo)  
      AND (SNT.strSerialNumber = tblSerialNumberTracking.strSerialNumber)  
      AND (SNT.strDocID = tblOrderDocDADTBOMSerial.strOrdDocDAID)  
      AND (SNT.intType = @Type)  
     )  
   LEFT JOIN tblInvSerialExt ISE ON tblOrderDocDADTBOM.strPartItemNumber = ISE.strPartNumber  
    AND tblOrderDocDADTBOM.strLocName = ISE.strLocName  
    AND tblOrderDocDADTBOMSerial.strSerialNumber = ISE.strSerialNumber  
   WHERE tblOrderDocDADTBOMSerial.strOrdDocDAID = @DocID  
    AND tblSerialNumberTracking.intType = @Type  
    AND tblSerialNumberTracking.intStatus <> @Status  
  
   --- Updating @DetailsTable based on @KitItemDetailsTable  
   UPDATE D  
   SET   
    D.PartNumber = K.PartNumber,  
    D.SerialNumber = K.SerialNumber,  
    D.Qty = K.Qty,  
    D.Location = K.Location,  
    D.IsExpiryDate = K.IsExpiryDate,  
    D.ExpiryDate = K.ExpiryDate,  
    D.BinID = K.BinID,  
    D.SerialLotType = K.SerialLotType,  
    D.IsDimensionExist = K.IsDimensionExist,  
    D.Dimension = K.Dimension  
   FROM @DetailsTable D  
   INNER JOIN @KitItemDetailsTable K  
    ON D.SerialNumber = K.SerialNumber  
    AND D.OrdDADocID = K.OrdDADocID  
    AND D.PartItemNumber = K.PartNumber  
  END  
  ELSE  
  BEGIN  
   INSERT INTO @DetailsTable  
   SELECT tblOrderDocDADT.strPartNumber AS 'PartNumber'  
    ,tblOrderDocDADTBOM.strPartItemNumber AS 'PartItemNumber'  
    ,tblOrderDocDADTSerial.strSerialNumber AS 'SerialNumber'  
    ,tblOrderDocDADTSerial.strOrdDADocID AS 'OrdDADocID'  
    ,tblOrderDocDADTSerial.intLineNo AS 'LineNo'  
    ,tblOrderDocDADTSerial.decQty AS 'Qty'  
    ,tblOrderDocDADT.strLocation AS 'Location'  
    ,tblOrderDocDADTSerial.bitExpiryDate AS 'IsExpiryDate'  
    ,tblOrderDocDADTSerial.dteExpiryDate AS 'ExpiryDate'  
    ,tblOrderDocDADTSerial.lngBinID AS 'BinID'  
    ,tblOrderDocDADTSerial.intSerialLotType AS 'SerialLotType'  
    ,CASE   
     WHEN tblOrderDocDADTSerial.intSerialLotType = 0  
      THEN ISNULL(ISE.bitDimensionExist, 0)  
     ELSE 0  
     END AS 'IsDimensionExist'  
    ,CASE   
     WHEN tblOrderDocDADTSerial.intSerialLotType = 0  
      THEN ISNULL(ISE.strDimension, '')  
     ELSE 0  
     END AS 'Dimension'  
   FROM tblOrderDocDADTSerial  
   INNER JOIN tblOrderDocDADT ON tblOrderDocDADTSerial.strOrdDADocID = tblOrderDocDADT.strOrdDADocID  
    AND tblOrderDocDADTSerial.intLineNo = tblOrderDocDADT.intLineNo  
   INNER JOIN tblSerialNumberTracking ON tblOrderDocDADT.intLineNo = tblSerialNumberTracking.intLineNo  
    AND tblOrderDocDADTSerial.strSerialNumber = tblSerialNumberTracking.strSerialNumber  
    AND tblSerialNumberTracking.lngID = (  
     SELECT MAX(SNT.lngID)  
     FROM tblSerialNumberTracking SNT  
     WHERE (SNT.intLineNo = tblSerialNumberTracking.intLineNo)  
      AND (SNT.strSerialNumber = tblSerialNumberTracking.strSerialNumber)  
      AND (SNT.strDocID = tblOrderDocDADTSerial.strOrdDADocID)  
      AND (SNT.intType = @Type)  
     )  
   LEFT JOIN tblInvSerialExt ISE ON tblOrderDocDADT.strPartNumber = ISE.strPartNumber  
    AND tblOrderDocDADT.strLocation = ISE.strLocName  
    AND tblOrderDocDADTSerial.strSerialNumber = ISE.strSerialNumber  
   LEFT JOIN tblOrderDocDADTBOMSerial ON tblOrderDocDADTSerial.strOrdDADocID = tblOrderDocDADTBOMSerial.strOrdDocDAID  
    AND tblOrderDocDADTSerial.strSerialNumber = tblOrderDocDADTBOMSerial.strSerialNumber  
    AND tblOrderDocDADTSerial.intLineNo = tblOrderDocDADTBOMSerial.intMainLineNo  
   LEFT JOIN tblOrderDocDADTBOM ON tblOrderDocDADTBOMSerial.strOrdDocDAID = tblOrderDocDADTBOM.strOrdDocDAID  
    AND tblOrderDocDADTBOMSerial.intLineNo = tblOrderDocDADTBOM.intLineNo  
    AND tblOrderDocDADTBOMSerial.intMainLineNo = tblOrderDocDADTBOM.intMainLineNo  
   WHERE tblOrderDocDADTSerial.strOrdDADocID IN (SELECT * FROM fnSplitStringAsTable(@DocID,','))  
    AND tblSerialNumberTracking.intType = @Type  
    AND tblSerialNumberTracking.intStatus <> @Status  
  END  
  
  -- Loop Through Table variable   
  SET NOCOUNT ON;  
  
  DECLARE @NumberofIntType INT  
   ,@RowCount INT  
  
  -- get the number of items  
  SET @NumberofIntType = (  
    SELECT count(*)  
    FROM @DetailsTable  
    )  
  SET @RowCount = 0 -- set the first row to 0  
  
  -- loop through the records   
  -- loop until the rowcount = number of records in your table  
  WHILE @RowCount < @NumberofIntType  
  BEGIN  
   -- do your process here  
   -- Declare All Columns  
   DECLARE @PartNumber NVARCHAR(100)  
   DECLARE @SerialNumber NVARCHAR(200)  
   DECLARE @OrdDADocID NVARCHAR(100)  
   DECLARE @LineNo INT  
   DECLARE @Qty MONEY  
   DECLARE @Location NVARCHAR(20)  
   DECLARE @IsExpiryDate BIT  
   DECLARE @ExpiryDate SMALLDATETIME  
   DECLARE @BinID BIGINT  
   DECLARE @SerialLotType INT  
   DECLARE @IsDimensionExist BIT  
   DECLARE @Dimension NVARCHAR(MAX)   
  
   -- Set All Columns  
   SELECT @PartNumber = PartNumber  
    ,@SerialNumber = SerialNumber  
    ,@OrdDADocID = OrdDADocID  
    ,@LineNo = [LineNo]  
    ,@Qty = Qty  
    ,@Location = Location  
    ,@IsExpiryDate = IsExpiryDate  
    ,@ExpiryDate = ExpiryDate  
    ,@BinID = BinID 
    ,@SerialLotType = SerialLotType  
    ,@IsDimensionExist = IsDimensionExist  
    ,@Dimension = Dimension  
   FROM @DetailsTable  
   WHERE RowNumber = @RowCount  
  
   -- Conditional Logic  
   IF @Qty < 0  
   BEGIN  
    SET @Status = 2 --PL_SerialNumberStatus.StatusOut  
   END  
   ELSE  
   BEGIN  
    SET @Status = 1 --PL_SerialNumberStatus.StatusIn  
   END  
  
   IF @SerialLotType = 0 --PL_SerialLotType.Serial Number  
   BEGIN  
    DECLARE @InvSerialExtStatus TINYINT  
    DECLARE @InvSerialExtLocName NVARCHAR(20)  
  
    SELECT @InvSerialExtStatus = intStatus  
     ,@InvSerialExtLocName = strLocName  
    FROM tblInvSerialExt  
    WHERE strPartNumber = @PartNumber  
     AND strSerialNumber = @SerialNumber  
  
    IF @InvSerialExtStatus = @Status  
     OR @InvSerialExtLocName <> @Location  
    BEGIN  
     --Exeception Raised  
     SET @ERR_MSG = 'Cant Adjust Serial Items that Contain Subsequent Movement' --+ @SerialNumber         
  
     RAISERROR (  
       @ERR_MSG  
       ,@Err_Severity  
       ,@ERR_STA  
       );  
  
     RETURN 1  
    END  
   END  
  
   DECLARE @SerialLotQty MONEY = 0  
  
   IF @Qty < 0  
   BEGIN  
    IF @SerialLotType = 1 --PL_SerialLotType.LotControl  
    BEGIN  
     SET @SerialLotQty = @Qty * (- 1)  
    END  
    ELSE  
    BEGIN  
     SET @SerialLotQty = 0  
    END  
   END  
   ELSE  
   BEGIN  
    SET @SerialLotQty = @Qty  
   END  
  
   IF @IsExpiryDate = cast(0 as bit) --False   
   BEGIN  
    SET @ExpiryDate = null  
   END  
  
   INSERT INTO tblSerialNumberTracking (  
    strPartNumber  
    ,strSerialNumber  
    ,strUserName  
    ,dteUpdatedDate  
    ,intType  
    ,strDocID  
    ,intLineNo  
    ,decQty  
    ,strLocation  
    ,intStatus  
    ,bitExpiryDate  
    ,dteExpiryDate  
    ,lngBinID  
    )  
   VALUES (  
    @PartNumber  
    ,@SerialNumber  
    ,@UserName  
    ,GETDATE()  
    ,@Type  
    ,@OrdDADocID 
    ,@LineNo  
    ,@Qty  
    ,@Location  
    ,@Status  
    ,@IsExpiryDate  
    ,@ExpiryDate  
    ,@BinID  
    )  
  
   IF @SerialLotType = 1 --PL_SerialLotType.LotControl  
   BEGIN  
    DECLARE @LotNumberCount BIGINT  
  
    SELECT @LotNumberCount = COUNT(strLotNumber)  
    FROM tblInvLotExt  
    WHERE strPartNumber = @PartNumber  
     AND strLotNumber = @SerialNumber  
     AND strLocName = @Location  
     AND lngBinId = @BinID  
  
    IF @IsExpiryDate = 0 -- false  
    BEGIN  
     SET @ExpiryDate = NULL  
    END  
    IF @LotNumberCount > 0  
    BEGIN  
     UPDATE tblInvLotExt  
     SET decQty = decQty + @SerialLotQty  
      ,dteUpdatedDate = GETDATE()  
     WHERE strPartNumber = @PartNumber  
      AND strLotNumber = @SerialNumber  
      AND strLocName = @Location  
      AND lngBinId = @BinId  
    END  
    ELSE  
    BEGIN  
  
     INSERT INTO tblInvLotExt  
     VALUES (  
      @PartNumber  
      ,@SerialNumber  
      ,@Location  
      ,@SerialLotQty  
      ,@IsExpiryDate  
      ,@ExpiryDate  
      ,GETDATE()  
      ,@BinID  
      ,GETDATE()  
      )  
    END  
   END  
   ELSE  
   BEGIN  
    DECLARE @SerialNumberCount BIGINT  
  
    SELECT @SerialNumberCount = COUNT(strSerialNumber)  
    FROM tblInvSerialExt  
    WHERE strPartNumber = @PartNumber  
     AND strSerialNumber = @SerialNumber  
     AND lngBinId = @BinId  
  
    IF @IsDimensionExist = 0 -- false  
    BEGIN  
     SET @Dimension = ''  
    END  
  
    IF @SerialNumberCount > 0  
    BEGIN  
     UPDATE tblInvSerialExt  
     SET strLocName = @Location  
      ,decQty = @SerialLotQty  
      ,intStatus = @Status  
      ,strDocID = @OrdDADocID  
      ,dteUpdatedDate = GETDATE()  
     WHERE strPartNumber = @PartNumber  
      AND strSerialNumber = @SerialNumber  
      AND lngBinId = @BinId  
    END  
    ELSE  
    BEGIN  
     INSERT INTO tblInvSerialExt  
     VALUES (  
      @PartNumber  
      ,@SerialNumber  
      ,@Location  
      ,@SerialLotQty  
      ,@Status  
      ,@DocNumber  
      ,GETDATE()  
      ,@IsDimensionExist  
      ,@Dimension  
      ,@BinId  
      ,GETDATE()  
      )  
    END  
   END  
  
   SET @RowCount = @RowCount + 1  
  END  
  
  SELECT 'Success'  
 END TRY  
  
 BEGIN CATCH  
  IF LEN(@ERR_MSG) > 0  
   SELECT @ERR_MSG  
  ELSE  
  BEGIN  
   SELECT @ERR_MSG = ERROR_MESSAGE()  
    ,@Err_Severity = ERROR_SEVERITY()  
    ,@ERR_STA = ERROR_STATE()  
  
   RAISERROR (  
     @ERR_MSG  
     ,@Err_Severity  
     ,@ERR_STA  
     );  
  END  
 END CATCH  
END  
GO
/****** Object:  StoredProcedure [dbo].[InsertCRMActionCustomerNote]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/********* End [GetCRMActionCustomerNote] (CRM)**********/

/********* Start [InsertCRMActionCustomerNote] (CRM)**********/

CREATE PROCEDURE [dbo].[InsertCRMActionCustomerNote] @ActivityID BIGINT
	,@ActivityActionId BIGINT
	,@CustomerNote NVARCHAR(Max)
	,@UserName NVARCHAR(100)
	,@CustomerName NVARCHAR(Max)
	,@PoupModule NVARCHAR(Max)
AS
BEGIN
	INSERT INTO tblCRMActionsCustomerNoteLog (
		ActivityID
		,ActivityActionId
		,CustomerNote
		,NotePoupDate
		,UserName
		,CustomerName
		,PoupModule
		,IsRead
		)
	VALUES (
		@ActivityID
		,@ActivityActionId
		,@CustomerNote
		,GetDate()
		,@UserName
		,@CustomerName
		,@PoupModule
		,0
		)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertCRMActionsDocuments]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [DeleteCRMActionsDocuments] (CRM)**********/



/********* Start [InsertCRMActionsDocuments] (CRM)**********/

CREATE PROCEDURE [dbo].[InsertCRMActionsDocuments]
(    
 @ActivityActionID	bigint
,@FileName	nvarchar(MAX)
,@Description	nvarchar(MAX)
,@FileExtension	nvarchar(MAX)
,@FileSource	varbinary(MAX)
,@ModifiedDate	datetime
,@FileSize	bigint
,@UserName	nvarchar(400)
,@IsEnc	bit
)
AS
BEGIN
     INSERT INTO [tblCRMActivitiesActionFile]
     (
         [ActivityActionID],
         [FileName],
         [Description],
         [FileExtension],
         [FileSource],
         [ModifiedDate],
         [FileSize],
         [UserName],
         [IsEnc]
     )
     VALUES
     (
         @ActivityActionID,
         @FileName,
         @Description,
         @FileExtension,
         @FileSource,
         @ModifiedDate,
         @FileSize,
         @UserName,
         @IsEnc
     )
END
GO
/****** Object:  StoredProcedure [dbo].[InsertCRMActivities]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetActivityVendorContactList] (CRM)**********/



/********* Start [InsertCRMActivities] (CRM)**********/

CREATE Procedure [dbo].[InsertCRMActivities]    
(    
 @ActivityName nvarchar(1000)    
,@ActivityDescription nvarchar(mAX)    
,@ActivityGroupName nvarchar(400)    
,@ActivityStatus nvarchar(400)    
,@ActivityPriority nvarchar(200)  
,@ActivityCreatedDate datetime    
,@ActivityDueDate datetime    
,@IsNotifyOwnerofActions bit 
,@IsNotifyGroupofActivity bit 
,@CustomerNumber nvarchar(MAX)    
,@VendorNumber nvarchar(MAX)    
,@InventoryItemNumber nvarchar(MAX)    
,@ProjectNumber nvarchar(MAX)    
,@CustomerContactNo nvarchar(100)    
,@VendorContactNo nvarchar(100)    
,@TransactionType nvarchar(MAX)    
,@TransactionNumber nvarchar(MAX)    
,@CreatedUser nvarchar(400)    
,@CreatedDate datetime    
,@IsInactive bit    
,@IsSalesGroup bit    
,@SalesPipelineText nvarchar(1000)    
,@SalesPipelinePercentage decimal(18,2)    
,@ActivityCreatedUser nvarchar(MAX)    
,@ValueText decimal(18,2)    
,@CustomerProspect int    
,@ProsCompanyName nvarchar(MAX)    
,@ProsContactNo nvarchar(100)=''    
,@ProsEmailId nvarchar(MAX)=''    
,@ProsAddress nvarchar(MAX)=''    
,@CustPhoneNo nvarchar(100)    
,@CustMobileNo nvarchar(100)    
,@CustEmailId nvarchar(MAX)    
,@CustAddress nvarchar(MAX)    
,@ProsName nvarchar(MAX)=''    
,@GeoCoord geography=null    
)    
As    
Begin    
 INSERT INTO tblCRMActivities     
 (    
 ActivityName    
,ActivityDescription    
,ActivityGroupName    
,ActivityStatus    
,ActivityPriority  
,ActivityCreatedDate   
,ActivityDueDate   
,IsNotifyOwnerofActions  
,IsNotifyGroupofActivity
,CustomerNumber    
,VendorNumber    
,InventoryItemNumber    
,ProjectNumber    
,CustomerContactNo    
,VendorContactNo    
,TransactionType    
,TransactionNumber    
,CreatedUser    
,CreatedDate    
,IsInactive    
,IsSalesGroup    
,SalesPipelineText    
,SalesPipelinePercentage    
,ActivityCreatedUser    
,ValueText    
,CustomerProspect    
,ProsCompanyName    
,ProsContactNo    
,ProsEmailId    
,ProsAddress    
,CustPhoneNo    
,CustMobileNo    
,CustEmailId    
,CustAddress    
,ProsName    
,GeoCoord    
 )    
 Output inserted.ActivityID    
VALUES      
 (    
 @ActivityName    
,@ActivityDescription    
,@ActivityGroupName    
,@ActivityStatus    
,@ActivityPriority  
,@ActivityCreatedDate    
,@ActivityDueDate  
,@IsNotifyOwnerofActions 
,@IsNotifyGroupofActivity 
,@CustomerNumber    
,@VendorNumber    
,@InventoryItemNumber    
,@ProjectNumber    
,@CustomerContactNo    
,@VendorContactNo    
,@TransactionType    
,@TransactionNumber    
,@CreatedUser    
,@CreatedDate    
,@IsInactive    
,@IsSalesGroup    
,@SalesPipelineText    
,@SalesPipelinePercentage    
,@ActivityCreatedUser    
,@ValueText    
,@CustomerProspect    
,@ProsCompanyName    
,@ProsContactNo    
,@ProsEmailId    
,@ProsAddress    
,@CustPhoneNo    
,@CustMobileNo    
,@CustEmailId    
,@CustAddress    
,@ProsName    
,@GeoCoord    
 )      
End    
GO
/****** Object:  StoredProcedure [dbo].[InsertCRMActivitiesActions]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [InsertCRMActivityDocuments] (CRM)**********/

CREATE PROCEDURE [dbo].[InsertCRMActivitiesActions] @ActivityID BIGINT      
 ,@ActionDescription NVARCHAR(MAX)      
 ,@DueDate DATETIME      
 ,@AssignTo NVARCHAR(400)      
 ,@ActionStatus NVARCHAR(400)      
 ,@CreatedDate DATETIME      
 ,@CreatedUser NVARCHAR(400)      
 ,@IsInactive BIT      
 ,@ActionType NVARCHAR(1600)      
 ,@EmailId NVARCHAR(MAX)      
 ,@IsActionReopened BIT      
 ,@ActionReopenedUserName NVARCHAR(Max)      
 ,@IsNotifyOnSalesDocuments BIT      
 ,@SignText NVARCHAR(Max)     
 ,@IsCalendar BIT = Null    
 ,@StartTime Time = Null     
 ,@EndTime Time = Null    
AS      
BEGIN      
 INSERT INTO tblCRMActivityActions (      
  ActivityID      
  ,ActionDescription      
  ,DueDate      
  ,AssignTo      
  ,ActionStatus      
  ,CreatedDate      
  ,CreatedUser      
  ,IsInactive      
  ,ActionType      
  ,EmailId      
  ,IsActionReopened      
  ,ActionReopenedUserName      
  ,IsNotifyOnSalesDocuments      
  ,SignText      
  ,IsCalendar    
  ,StartTime    
  ,EndTime    
  )      
 OUTPUT inserted.ActivityActionID      
 VALUES (      
  @ActivityID      
  ,@ActionDescription      
  ,@DueDate      
  ,@AssignTo      
  ,@ActionStatus      
  ,@CreatedDate      
  ,@CreatedUser      
  ,@IsInactive      
  ,@ActionType      
  ,@EmailId      
  ,@IsActionReopened      
  ,@ActionReopenedUserName      
  ,@IsNotifyOnSalesDocuments      
  ,@SignText    
  ,@IsCalendar    
  ,@StartTime    
  ,@EndTime      
  )      
      
 BEGIN      
  DECLARE @ActivityCount INT = (      
    SELECT Count(*)      
    FROM tblCRMActivityActions      
    WHERE ActivityID = @ActivityID      
    )      
  DECLARE @ActivityNewCount INT = (      
    SELECT Count(*)      
    FROM tblCRMActivityActions inner join tblCRMActivityActionsStatus on tblCRMActivityActions.ActionStatus=tblCRMActivityActionsStatus.StatusType      
    WHERE ActivityID = @ActivityID      
     AND tblCRMActivityActionsStatus.StatusGroup = 1      
    )      
  DECLARE @ActivityNotCompletedCount INT = (      
    SELECT Count(DueDate)      
    FROM tblCRMActivityActions inner join tblCRMActivityActionsStatus on tblCRMActivityActions.ActionStatus=tblCRMActivityActionsStatus.StatusType      
    WHERE ActivityID = @ActivityID      
     AND tblCRMActivityActionsStatus.StatusGroup <> 3      
    )      
      
  UPDATE tblCRMActivities      
  SET ActivityStatus = (      
    CASE       
     WHEN @ActivityCount = @ActivityNewCount      
      THEN (Select tblCRMActivityStatus.StatusType from tblCRMActivityStatus Where tblCRMActivityStatus.StatusGroup= 1 and tblCRMActivityStatus.IsPredefined=1)  --New      
     WHEN @ActivityNotCompletedCount = 0      
      THEN (Select tblCRMActivityStatus.StatusType from tblCRMActivityStatus Where tblCRMActivityStatus.StatusGroup= 3 and tblCRMActivityStatus.IsPredefined=1)  --Completed      
     ELSE (Select tblCRMActivityStatus.StatusType from tblCRMActivityStatus Where tblCRMActivityStatus.StatusGroup= 2 and tblCRMActivityStatus.IsPredefined=1)   --In Progress      
     END      
    )      
  WHERE ActivityID = @ActivityID      
 END      
END 
GO
/****** Object:  StoredProcedure [dbo].[InsertCRMActivitiesActionsTracking]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************END [InsertCRMActivitiesActionsTrackingBulk]***********************************/

/************************Start [InsertCRMActivitiesActionsTracking]***********************************/

CREATE PROCEDURE [dbo].[InsertCRMActivitiesActionsTracking]
	 @ActivityID BIGINT
	,@ActivityActionID BIGINT
	,@ActionDescription NVARCHAR(MAX)
	,@DueDate DATETIME
	,@AssignTo NVARCHAR(400)
	,@ActionStatus NVARCHAR(400)
	,@CreatedDate DATETIME
	,@CreatedUser NVARCHAR(400)
	,@IsInactive BIT
	,@ActionType NVARCHAR(1600)
	,@EmailId NVARCHAR(MAX)
	,@IsActionReopened BIT
	,@ActionReopenedUserName NVARCHAR(Max)
	,@IsNotifyOnSalesDocuments BIT
	,@SignText NVARCHAR(Max)
	,@UpdatedDate DATETIME
	,@UpdatedUser NVARCHAR(400)
	,@LogUserName NVARCHAR(400)
	,@LogType  NVARCHAR(400)
	,@IsCalendar BIT = Null    
	,@StartTime Time = Null     
	,@EndTime Time = Null 
AS
BEGIN
	INSERT INTO tblCRMActivityActionsTracking (
		ActivityID
		,ActivityActionID
		,ActionDescription
		,DueDate
		,AssignTo
		,ActionStatus
		,CreatedDate
		,CreatedUser
		,IsInactive
		,ActionType
		,EmailId
		,IsActionReopened
		,ActionReopenedUserName
		,IsNotifyOnSalesDocuments
		,SignText
		,UpdateDate 
		,UpdatedUser
		,LogDate 
		,LogUserName 
		,LogType
		,IsCalendar
		,StartTime
		,EndTime
		)
	VALUES (
		@ActivityID
		,@ActivityActionID
		,@ActionDescription
		,@DueDate
		,@AssignTo
		,@ActionStatus
		,@CreatedDate
		,@CreatedUser
		,@IsInactive
		,@ActionType
		,@EmailId
		,@IsActionReopened
		,@ActionReopenedUserName
		,@IsNotifyOnSalesDocuments
		,@SignText
		,@UpdatedDate 
		,@UpdatedUser
		,GETDATE()
		,@LogUserName 
		,@LogType
		,@IsCalendar
		,@StartTime
		,@EndTime
		)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertCRMActivitiesActionsTrackingBulk]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************Start [InsertCRMActivitiesActionsTrackingBulk]***********************************/

CREATE PROCEDURE [dbo].[InsertCRMActivitiesActionsTrackingBulk]
	 @ActivityID BIGINT
	,@LogUserName NVARCHAR(400)
	,@LogType  NVARCHAR(400)
AS
BEGIN
	INSERT INTO tblCRMActivityActionsTracking (
		 ActivityActionID
		,ActivityID
		,ActionDescription
		,DueDate
		,AssignTo
		,ActionStatus
		,CreatedDate
		,UpdateDate
		,CreatedUser
		,UpdatedUser
		,IsInactive
		,ActionType
		,EmailId
		,IsActionReopened
		,ActionReopenedUserName
		,IsNotifyOnSalesDocuments
		,SignText
		,LogDate
		,LogUserName
		,LogType
		,IsCalendar
		,StartTime
		,EndTime
		)
	Select  ActivityActionID
		,ActivityID
		,ActionDescription
		,DueDate
		,AssignTo
		,ActionStatus
		,CreatedDate
		,UpdateDate
		,CreatedUser
		,UpdatedUser
		,IsInactive
		,ActionType
		,EmailId
		,IsActionReopened
		,ActionReopenedUserName
		,IsNotifyOnSalesDocuments
		,SignText
		,GETDATE()
		,@LogUserName
		,@LogType
		,IsCalendar
		,StartTime
		,EndTime from tblCRMActivityActions where ActivityID=@ActivityID
END
GO
/****** Object:  StoredProcedure [dbo].[InsertCRMActivitiesTracking]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************END [DeleteCRMUserFields]***********************************/

/************************START [InsertCRMActivitiesTracking]***********************************/

CREATE Procedure [dbo].[InsertCRMActivitiesTracking]
(
 @ActivityID	bigint
,@LogUserName nvarchar(400)
,@LogType nvarchar(400)
)
As
Begin
	INSERT INTO tblCRMActivitiesTracking
	(
ActivityID
,ActivityName
,ActivityDescription
,ActivityGroupName
,ActivityStatus
,ActivityCreatedDate
,CustomerNumber
,VendorNumber
,InventoryItemNumber
,ProjectNumber
,CustomerContactNo
,VendorContactNo
,TransactionType
,TransactionNumber
,CreatedUser
,UpdatedUser
,CreatedDate
,UpdatedDate
,IsInactive
,IsSalesGroup
,SalesPipelineText
,SalesPipelinePercentage
,ActivityCreatedUser
,LogDate
,LogUserName
,LogType
,ValueText
,CustomerProspect
,ProsCompanyName
,ProsContactNo
,ProsEmailId
,ProsAddress
,CustPhoneNo
,CustMobileNo
,CustEmailId
,CustAddress
,ProsName
	)
	Select 
ActivityID
,ActivityName
,ActivityDescription
,ActivityGroupName
,ActivityStatus
,ActivityCreatedDate
,CustomerNumber
,VendorNumber
,InventoryItemNumber
,ProjectNumber
,CustomerContactNo
,VendorContactNo
,TransactionType
,TransactionNumber
,CreatedUser
,UpdatedUser
,CreatedDate
,UpdatedDate
,IsInactive
,IsSalesGroup
,SalesPipelineText
,SalesPipelinePercentage
,ActivityCreatedUser
,GETDATE()
,@LogUserName
,@LogType
,ValueText
,CustomerProspect
,ProsCompanyName
,ProsContactNo
,ProsEmailId
,ProsAddress
,CustPhoneNo
,CustMobileNo
,CustEmailId
,CustAddress
,ProsName
	from tblCRMActivities where ActivityID=@ActivityID  
End
GO
/****** Object:  StoredProcedure [dbo].[InsertCRMActivitiesUserFields]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************END [GetActivityUserFieldListByID]***********************************/

/************************START [InsertCRMActivitiesUserFields]***********************************/


CREATE PROCEDURE [dbo].[InsertCRMActivitiesUserFields] 
	@ActivityID	bigint
	,@FieldType	int	
	,@FieldName	nvarchar(100)
	,@Description	nvarchar(300)
	,@IsMandatory	bit
	,@DisplayOrder	smallint
	,@ItemList	nvarchar(Max)
	,@CreatedDate	datetime
	,@CreatedBy	nvarchar(100)
	,@Value nvarchar(Max)
	,@ActivityGroupName nvarchar(Max)
	,@IsCustomField bit
AS
BEGIN
	INSERT INTO tblCRMUserActivityFields (
		ActivityID
		,FieldType
		,FieldName
		,Description
		,IsMandatory
		,DisplayOrder
		,ItemList
		,CreatedDate
		,CreatedBy
		,Value
		,ActivityGroupName
		,IsCustomField
		)
	VALUES (
		@ActivityID
		,@FieldType
		,@FieldName
		,@Description
		,@IsMandatory
		,@DisplayOrder
		,@ItemList
		,@CreatedDate
		,@CreatedBy
		,@Value
		,@ActivityGroupName
		,@IsCustomField
		)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertCRMActivityDocuments]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [DeleteCRMActivityDocuments] (CRM)**********/



/********* Start [InsertCRMActivityDocuments] (CRM)**********/

Create PROCEDURE [dbo].[InsertCRMActivityDocuments]
(    
 @ActivityID	bigint
,@FileName	nvarchar(MAX)
,@Description	nvarchar(MAX)
,@FileExtension	nvarchar(MAX)
,@FileSource	varbinary(MAX)
,@ModifiedDate	datetime
,@FileSize	bigint
,@UserName	nvarchar(400)
,@IsEnc	bit
)
AS
BEGIN
     INSERT INTO [tblCRMActivitiesFile]
     (
         [ActivityID],
         [FileName],
         [Description],
         [FileExtension],
         [FileSource],
         [ModifiedDate],
         [FileSize],
         [UserName],
         [IsEnc]
     )
     VALUES
     (
         @ActivityID,
         @FileName,
         @Description,
         @FileExtension,
         @FileSource,
         @ModifiedDate,
         @FileSize,
         @UserName,
         @IsEnc
     )
END
GO
/****** Object:  StoredProcedure [dbo].[InsertCRMActivityGroupUserFields]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************End [GetCRMCustomerDocDetails]***********************************/

/************************START [InsertCRMActivityGroupUserFields]***********************************/

CREATE procedure [dbo].[InsertCRMActivityGroupUserFields]
 @ActivityGroupName nvarchar(Max)
,@FieldType int
,@FieldName nvarchar(100)
,@Description nvarchar(300)	
,@IsMandatory bit
,@DisplayOrder smallint
,@ItemList nvarchar(Max)
,@CreatedDate datetime
,@CreatedBy nvarchar(100)
AS
BEGIN
	
	Insert into tblCRMActivityGroupUserFields(ActivityGroupName,FieldType,FieldName,Description,IsMandatory,DisplayOrder,ItemList,CreatedDate,CreatedBy)
	Values(@ActivityGroupName,@FieldType,@FieldName,@Description,@IsMandatory,@DisplayOrder,@ItemList,@CreatedDate,@CreatedBy)

END
GO
/****** Object:  StoredProcedure [dbo].[InsertCustomerCat]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetOpenOrdersInfo] ***********/

CREATE PROCEDURE [dbo].[InsertCustomerCat] (
	@SQLoc NVARCHAR(40)
	,@SQDesc NVARCHAR(200)
	,@SQInactive BIT
	,@SQIsHP BIT
	,@SQDefDep MONEY
	,@SQDefIns MONEY
	,@SQDefFinChrge MONEY
	,@SQstrInstallSaleFC NVARCHAR(100)
	,@SQstrInstallSaleTaxCode NVARCHAR(4)
	,@SQintArrPenalty MONEY
	)
AS
BEGIN
	INSERT INTO tblCustomerCat
	VALUES (
		@SQLoc
		,@SQDesc
		,@SQInactive
		,@SQIsHP
		,@SQDefDep
		,@SQDefIns
		,@SQDefFinChrge
		,@SQstrInstallSaleFC
		,@SQstrInstallSaleTaxCode
		,@SQintArrPenalty
		,GETDATE()
		)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertCustTransAndCustTransDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateTablesForProcessInvoice] ***********/
/*********** Start [InsertCustTransAndCustTransDT] ***********/
CREATE PROCEDURE [dbo].[InsertCustTransAndCustTransDT]
	@CustTrID AS BIGINT,
	@CustID AS NVARCHAR(50),
	@SystemDate AS SMALLDATETIME,
	@JournalDate AS SMALLDATETIME,
	@UserName AS NVARCHAR(20),
	@InvDocID AS NVARCHAR(50),
	@InvDepartment AS NVARCHAR(50),
	@SoNumber AS NVARCHAR(50),
	@TransType AS TINYINT,
	@InvAmount AS MONEY,
	@InvAmountF AS MONEY,
	@Currency AS NVARCHAR(3),
	@Exchange AS DECIMAL,
	@DiscAvail AS MONEY,
	@DiscAvailF AS MONEY,
	@IsForeign AS BIT,
	@IsDocReRated AS BIT,
	@ReRated AS DATETIME,
	@ReRateCumltveValue AS MONEY,
	@IsSettled AS BIT,
	@DiscExpires AS DATETIME,
	@DueDate AS DATETIME,
	@JEDocID AS NVARCHAR(50),
	@OrdDocID AS NVARCHAR(50),
	@CustPayID AS BIGINT,
	@AmtOwingAtTime AS MONEY,
	@AmtOwingAtTimeF AS MONEY,
	@IsReversed AS bit
AS

BEGIN
	INSERT INTO tblCustTrans
			([lngCustTrID]
           ,[strCustName]
           ,[dteSystemDate]
           ,[dteJournalDate]
           ,[strUserName]
           ,[strInvDocID]
           ,[strInvDepNumber]
           ,[strSoNumber]
           ,[intTransType]
           ,[decInvAmount]
           ,[decInvAmountF]
           ,[strCurrency]
           ,[bitIsForeign]
           ,[decExchange]
           ,[bitDocReRated]
           ,[dteReRated]
           ,[decReRateCumltveValue]
           ,[bitSettled]
           ,[decDiscAvail]
           ,[decDiscAvailF]
           ,[dteDiscExpires]
           ,[dteDueDate]
           ,[strJEDocID]
           ,[strOrdDocID])
	VALUES (
			 @CustTrID
			,@CustID
			,@SystemDate
			,@JournalDate
			,@UserName
			,@InvDocID
			,@InvDepartment
			,@SoNumber
			,@TransType
			,@InvAmount
			,@InvAmountF
			,@Currency
			,@IsForeign
			,@Exchange
			,@IsDocReRated
			,@ReRated
			,@ReRateCumltveValue
			,@IsSettled
			,@DiscAvail
			,@DiscAvailF
			,@DiscExpires
			,@DueDate
			,@JEDocID
			,@OrdDocID
			)

	INSERT INTO tblCustTransDT (
		dteJournalDate
		,lngCustTrID
		,lngCustPayID
		,decAmount
		,intTransType
		,decAmtOwingAtTime
		,bitReversed
		,dteIntDate
		,decAmountF
		,decAmtOwingAtTimeF
		,bitIsForeign
		)
	VALUES (
		@JournalDate
		,@CustTrID
		,@CustPayID
		,@InvAmount
		,@TransType
		,@AmtOwingAtTime
		,@IsReversed
		,NULL
		,@InvAmountF
		,@AmtOwingAtTimeF
		,@IsForeign
		)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertGRVDocDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[InsertGRVDocDetails] (
	@GRVDocDTData AS GRVDocDTTableType READONLY
	,@GRVDocDTPrjData AS GRVDocDTPrjTableType READONLY
	,@GRVDocDTSerialData AS GRVDocDTSerialTableType READONLY
	,@SerialNumberTrackingData AS SerialNumberTrackingTableType READONLY
	,@InvLotExtUpdateData AS InvLotExtTableType READONLY
	,@InvLotExtInsertData AS InvLotExtTableType READONLY
	,@InvSerialExtUpdateData AS InvSerialExtTableType READONLY
	,@InvSerialExtInsertData AS InvSerialExtTableType READONLY
	,@GRVDocDTBinData AS GRVDocDTBinTableType READONLY
	)
AS
BEGIN
	INSERT INTO tblOrderDocPGDT
	SELECT *
	FROM @GRVDocDTData

	IF (
			SELECT count(1)
			FROM @GRVDocDTPrjData
			) > 0
	BEGIN
		INSERT INTO tblOrderDocPGDTPrj
		SELECT *
		FROM @GRVDocDTPrjData
	END

	INSERT INTO tblOrderDocPGDTSerial
	SELECT *
	FROM @GRVDocDTSerialData

	IF EXISTS (
			SELECT *
			FROM @SerialNumberTrackingData
			)
	BEGIN
		INSERT INTO tblSerialNumberTracking (
			strPartNumber
			,strSerialNumber
			,strUserName
			,dteUpdatedDate
			,intType
			,strDocID
			,intLineNo
			,decQty
			,strLocation
			,intStatus
			,bitExpiryDate
			,dteExpiryDate
			,lngBinId
			)
		SELECT PartNumber
			,SerialNumber
			,UserName
			,UpdatedDate
			,SerialLotType
			,DocID
			,[LineNo]
			,Qty
			,Location
			,[Status]
			,IsExpiryDate
			,ExpiryDate
			,BinId
		FROM @SerialNumberTrackingData
	END

	IF EXISTS (
			SELECT *
			FROM @InvLotExtUpdateData
			)
	BEGIN
		UPDATE tblInvLotExt
		SET decQty = decQty + t.Qty
			,dteUpdatedDate = t.UpdatedDate
		FROM @InvLotExtUpdateData t
		WHERE strPartNumber = t.PartNumber
			AND strLotNumber = t.LotNumber
			AND strLocName = t.LocName
	END

	IF EXISTS (
			SELECT *
			FROM @InvLotExtInsertData
			)
	BEGIN
		INSERT INTO tblInvLotExt
		SELECT *
			,GETDATE()
		FROM @InvLotExtInsertData
	END

	IF EXISTS (
			SELECT *
			FROM @InvSerialExtUpdateData
			)
	BEGIN
		UPDATE tblInvSerialExt
		SET strLocName = t.LocName
			,decQty = t.Qty
			,intStatus = t.[Status]
			,strDocID = t.DocID
			,dteUpdatedDate = t.UpdatedDate
		FROM @InvSerialExtUpdateData t
		WHERE strPartNumber = t.PartNumber
			AND strSerialNumber = t.SerialNumber
			--AND strLocName = t.LocName  
	END

	IF EXISTS (
			SELECT *
			FROM @InvSerialExtInsertData
			)
	BEGIN
		INSERT INTO tblInvSerialExt
		SELECT *
			,GETDATE()
		FROM @InvSerialExtInsertData
	END

	INSERT INTO tblOrderDocPGDTBin (
		strOrdPGDocID
		,intLineNo
		,lngBinID
		,decQty
		)
	SELECT DocId
		,[LineNo]
		,BinID
		,Qty
	FROM @GRVDocDTBinData
END
GO
/****** Object:  StoredProcedure [dbo].[InsertGRVDocDimensions]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[InsertGRVDocDimensions]
 (
	@GRVDocDimensionsData GRVDocDimensionsTableType READONLY,
	@IsDeleteRecordFirst AS BIT,
	@DocumentNumber As NVARCHAR(50)
 )
AS
BEGIN
	IF @IsDeleteRecordFirst = 1
	BEGIN
		DELETE FROM tblInvoiceDocPDimensions WHERE strInvPDocID = @DocumentNumber	
	END

	INSERT INTO [dbo].[tblInvoiceDocPDimensions]
           ([strInvPDocID]
           ,[intDocLineNo]
           ,[intDimLineNo]
           ,[intDimColNo]
           ,[decValue]
           ,[strDimColHeading]
           ,[bitVisible]
           ,[bitAllowEditing])     
          SELECT * FROM @GRVDocDimensionsData
END
GO
/****** Object:  StoredProcedure [dbo].[InsertGRVHeader]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-----------------------------------------------------------------
CREATE Procedure [dbo].[InsertGRVHeader]
(
@OrdPGDocID as nvarchar(100) = null,
@InvTrackID as bigint  = null,
@JourID as bigint  = null,
@SystemDate as datetime  = null,
@JournalDate as datetime  = null,
@Required as datetime  = null,
@UserName as nvarchar(40)  = null,
@VendName as nvarchar(100)  = null,
@ShipTo as nvarchar(1000)  = null,
@DelNoteNo nvarchar(100)  = null,
@DiscPerc as money  = null, 
@SubTotal as money  = null,
@DiscAmt as money = null,
@VAT as money  = null,
@Total as money = null,
@IsFromPO as bit = null,
@OrdPDocID as nvarchar(100) = null,
@Notes as nvarchar(max) = null,
@IsPrinted as bit = null,
@IsEmailed as bit = null,
@IsCleared as bit = null,
@Currency  as nvarchar(6) = null,
@IsForeign as bit = null,
@SubTotalF as money = null,
@DiscAmtF as money = null,
@VATF as money = null,
@TotalF as money = null,
@Exchange as decimal = null,
@Term as nvarchar(100) = null,
@Dept as int = null,
@Field1 as nvarchar(200) = null,
@Field2 as nvarchar(200) = null,
@Field3 as nvarchar(200) = null,
@Field4 as nvarchar(200) = null,
@Field5 as nvarchar(200) = null,
@Field6 as nvarchar(200) = null,
@Field7 as nvarchar(200) = null,
@Field8 as nvarchar(200) = null,
@Field9 as nvarchar(200) = null,
@Field10 as nvarchar(200) = null,
@Field11 as nvarchar(200) = null,
@Field12 as nvarchar(200) = null,
@SubFormated as nvarchar(100) = null,
@DiscFormatted as nvarchar(100) = null,
@VATFormatted as nvarchar(100) = null,
@TotFormatted as nvarchar(100) = null,
@BoughtFrom as nvarchar(1000) = null,
@OrdFQDocID as nvarchar(100) = null,
@IsFQConvert as bit  = null,
@IsSOCopy as bit = null,
@IsSOCopyMulti as bit = null,
@StatusTypeCode as nvarchar(40) = null,
@IsBookmark as bit = null,
@AddInfo as nvarchar(100) = null,
@Reference as nvarchar(100) = null,
@TotalWeight as money = null,
@TotalVolWeight as money = null,
@RevisionNumber as int = null
)
as
Begin
INSERT INTO tblOrderDocPG
(
strOrdPGDocID,
lngInvTrackID,
lngJourID,
dteSystemDate,
dteJournalDate,
dteRequired,
strUserName,
strVendName,
strShipTo,
strDelNoteNo,
decSubTotal,
decVAT,
decTotal,
bitFromPO,
strOrdPDocID,
strNotes,
bitPrinted,
bitEmailed,
bitCleared,
strCurrency,
bitIsForeign,
decSubTotalF,
decVATF,
decTotalF,
decExchange,
strTerm,
intDept,
strField1,
strField2,
strField3,
strField4,
strField5,
strField6,
strField7,
strField8,
strField9,
strField10,
strField11,
strField12,
strSubFormated,
strVATFormatted,
strTotFormatted,
strBoughtFrom,
decDiscPerc,
decDiscAmt,
decDiscAmtF,
strDiscFormatted,
strOrdFQDocID,
bitFQConvert,
bitSOCopy,
bitSOCopyMulti,
strStatusTypeCode,
bitBookmark,
strAddInfo,
strReference,
decTotalWeight,
decTotalVolWeight,
intRevisionNumber
) 
VALUES 
(
@OrdPGDocID,
@InvTrackID,
@JourID,
@SystemDate,
@JournalDate,
@Required,
@UserName,
@VendName,
@ShipTo,
@DelNoteNo,
@SubTotal,
@VAT,
@Total,
@IsFromPO,
@OrdPDocID,
@Notes,
@IsPrinted,
@IsEmailed,
@IsCleared,
@Currency,
@IsForeign,
@SubTotalF,
@VATF,
@TotalF,
@Exchange,
@Term,
@Dept,
@Field1,
@Field2,
@Field3,
@Field4,
@Field5,
@Field6,
@Field7,
@Field8,
@Field9,
@Field10,
@Field11,
@Field12,
@SubFormated,
@VATFormatted,
@TotFormatted,
@BoughtFrom,
@DiscPerc,
@DiscAmt,
@DiscAmtF,
@DiscFormatted,
@OrdFQDocID,
@IsFQConvert,
@IsSOCopy,
@IsSOCopyMulti,
@StatusTypeCode,
@IsBookmark,
@AddInfo,
@Reference,
@TotalWeight,
@TotalVolWeight,
@RevisionNumber
)
End
GO
/****** Object:  StoredProcedure [dbo].[InsertInTaxAndBulkInsertInTaxDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateCustTransForWrongDiscount] ***********/

/*********** Start [InsertInTaxAndBulkInsertInTaxDT] ***********/
CREATE PROCEDURE [dbo].[InsertInTaxAndBulkInsertInTaxDT] (
	@TaxID BIGINT
	,@SystemDate DATETIME
	,@JournalDate DATETIME
	,@UserName NVARCHAR(20)
	,@InvOrPayID NVARCHAR(50)
	,@JournalID BIGINT
	,@VendCustName NVARCHAR(50)
	,@DocNumber NVARCHAR(50)
	,@Amount MONEY
	,@VAT MONEY
	,@Total MONEY
	,@Module TINYINT
	,@Type TINYINT
	,@Currency NVARCHAR(3)
	,@IsForeign BIT
	,@AmountF MONEY
	,@VATF MONEY
	,@TotalF MONEY
	,@Exchange DECIMAL(18, 6)
	,@Dept INT
	,@TaxDTData AS TaxDTDataTableType READONLY
	)
AS
BEGIN
	INSERT INTO [dbo].[tblTax] (
		[lngTaxID]
		,[dteSystemDate]
		,[dteJournalDate]
		,[strUserName]
		,[strInvOrPayID]
		,[lngJournalID]
		,[strVendCustName]
		,[strDocNumber]
		,[decAmount]
		,[decVAT]
		,[decTotal]
		,[intModule]
		,[intType]
		,[strCurrency]
		,[bitIsForeign]
		,[decAmountF]
		,[decVATF]
		,[decTotalF]
		,[decExchange]
		,[intDept]
		)
	VALUES (
		@TaxID
		,@SystemDate
		,@JournalDate
		,@UserName
		,@InvOrPayID
		,@JournalID
		,@VendCustName
		,@DocNumber
		,@Amount
		,@VAT
		,@Total
		,@Module
		,@Type
		,@Currency
		,@IsForeign
		,@AmountF
		,@VATF
		,@TotalF
		,@Exchange
		,@Dept
		)

	IF (SELECT COUNT(*) FROM @TaxDTData) > 0
	BEGIN
		INSERT INTO [dbo].[tblTaxDT] (
			[lngTaxID]
			,[intLine]
			,[strTaxCode]
			,[strTaxName]
			,[intStatus]
			,[decRate]
			,[bitRefundable]
			,[intType]
			,[decAmtSubTax]
			,[decTaxAmt]
			,[decTotOthTax]
			,[strCurrency]
			,[bitIsForeign]
			,[decAmtSubTaxF]
			,[decTaxAmtF]
			,[decTotOthTaxF]
			)
		SELECT TaxID
			,Line
			,TaxCode
			,TaxName
			,[Status]
			,Rate
			,Refundable
			,[Type]
			,AmtSubTax
			,TaxAmt
			,TotOthTax
			,Currency
			,IsForeign
			,AmtSubTaxF
			,TaxAmtF
			,TotOthTaxF
		FROM @TaxDTData
	END
END
GO
/****** Object:  StoredProcedure [dbo].[InsertInvoiceDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[InsertInvoiceDetails] (
	@InvoiceDocDTData AS InvoiceDocDTTableType READONLY
	,@InvoiceDocDTPrjData AS InvOrderDocDTPrjTableType READONLY
	,@InvoiceDocDTSerialData AS InvoiceDocDTSerialTableType READONLY
	,@InvoiceDocDTBOMSerialData AS InvoiceDocDTBOMSerialTableType READONLY 
	,@InvoiceDocSplitPmtData AS InvoiceDocSplitPmtTableType READONLY
	,@InvoiceDocDTVouchersData AS InvoiceDocDTVouchersTableType READONLY
	,@SerialNumberTrackingData AS SerialNumberTrackingTableType READONLY
	,@InvLotExtUpdateData AS InvLotExtTableType READONLY
	,@InvLotExtInsertData AS InvLotExtTableType READONLY
	,@InvSerialExtUpdateData AS InvSerialExtTableType READONLY
	,@InvSerialExtInsertData AS InvSerialExtTableType READONLY
	,@IsInvoiceConvert AS BIT
	,@IsFromWorkshop AS BIT = 0
	)
AS
BEGIN
	INSERT INTO tblInvoiceDocDT (
		strInvDocID
		,intLineNo
		,strPartNumber
		,strLocation
		,strPartDesc
		,decQty
		,strUnit
		,intType
		,decPriceEaExc
		,decLineTotExc
		,decLineTaxAmt
		,decPriceEaInc
		,decLineTotInc
		,strTaxCode
		,imgTaxObj
		,strCurrency
		,bitIsForeign
		,decPriceEaExcF
		,decLineTotExcF
		,decLineTaxAmtF
		,decEaIncTaxF
		,decTotIncTaxF
		,strInvField1
		,strInvField2
		,strInvField3
		,strInvField4
		,strInvField5
		,strInvField6
		,strLineField1
		,strLineField2
		,strLineField3
		,strLineField4
		,strLineField5
		,strLineField6
		,strLineField7
		,strLineField8
		,strLineField9
		,strLineField10
		,strLineField11
		,strLineField12
		,decLineDiscPerc
		,decLineDiscAmt
		,decLineDiscAmtF
		,bitDiscountTax
		,decStockQty
		,strStockUnit
		,decStandardCost
		,decLastPPUnit
		,strSalesName
		,decCOGS
		,decSOQty
		,decSOQtyRemain
		,strPartExtendedDesc
		,decItemWeight
		,decVolumetricWeight
		,bitContainerItem
		,bitDelCost
		,intBillingMethod
		,uidTransactionFieldID
		,uidContainerItem
		,decUsedQty
,bitFrom
,strOrdDADocID
,intDALineNo
,bitFromGRV
,strGRVDocNum
,intGRVLineNo
,blnIsCashPrice
,strOrigDocID
		)
	--decUsedQty
	SELECT InvDocID
		,[LineNo]
		,PartNumber
		,Location
		,PartDesc
		,Qty
		,Unit
		,Type
		,PriceEaExc
		,LineTotExc
		,LineTaxAmt
		,PriceEaInc
		,LineTotInc
		,TaxCode
		,TaxObj
		,Currency
		,IsForeign
		,PriceEaExcF
		,LineTotExcF
		,LineTaxAmtF
		,EaIncTaxF
		,TotIncTaxF
		,InvField1
		,InvField2
		,InvField3
		,InvField4
		,InvField5
		,InvField6
		,LineField1
		,LineField2
		,LineField3
		,LineField4
		,LineField5
		,LineField6
		,LineField7
		,LineField8
		,LineField9
		,LineField10
		,LineField11
		,LineField12
		,LineDiscPerc
		,LineDiscAmt
		,LineDiscAmtF
		,DiscountTax
		,StockQty
		,StockUnit
		,StandardCost
		,LastPPUnit
		,SalesName
		,COGS
		,SOQty
		,SOQtyRemain
		,PartExtendedDesc
		,ItemWeight
		,VolumetricWeight
		,ContainerItem
		,DelCost
		,BillingMethod
		,TransactionFieldID
		,ContainerItemID
		,UsedQty
	,IsFrom
	,OrdDADocID
	,DALineNo
	,IsFromGRV
	,GRVDocNum
	,GRVLineNo
	,IsCashPrice			 
	,OrigDocID
	--[UsedQty] [money] NULL						
	FROM @InvoiceDocDTData

	INSERT INTO tblInvoiceDocDTPrj (
		strInvDocID
		,intLineNo
		,strProjNumber
		)
	SELECT InvOrdDocID
		,[LineNo]
		,ProjNumber
	FROM @InvoiceDocDTPrjData

	INSERT INTO tblInvoiceDocDTSerial
	SELECT *
	FROM @InvoiceDocDTSerialData

	---- NOTE : Only applicable if Foreign key is not added in tblInvoiceDocDTBOMSerial ----
	DELETE FROM tblInvoiceDocDTBOMSerial WHERE strInvDocID IN (SELECT DISTINCT InvDocID FROM @InvoiceDocDTBOMSerialData)
	----

	INSERT INTO tblInvoiceDocDTBOMSerial
	SELECT *
	FROM @InvoiceDocDTBOMSerialData

	INSERT INTO tblInvoiceDocSplitPmt
	SELECT *
	FROM @InvoiceDocSplitPmtData

	INSERT INTO tblInvoiceDocDTVouchers
	SELECT *
	FROM @InvoiceDocDTVouchersData

	--IF @IsInvoiceConvert = 0
		--AND @IsFromWorkshop = 0
	IF @IsFromWorkshop = 0
	BEGIN
		IF EXISTS (
				SELECT *
				FROM @SerialNumberTrackingData
				)
		BEGIN
			INSERT INTO tblSerialNumberTracking (
				strPartNumber
				,strSerialNumber
				,strUserName
				,dteUpdatedDate
				,intType
				,strDocID
				,intLineNo
				,decQty
				,strLocation
				,intStatus
				,bitExpiryDate
				,dteExpiryDate
				,lngBinID
				)
			SELECT PartNumber
				,SerialNumber
				,UserName
				,UpdatedDate
				,SerialLotType
				,DocID
				,[LineNo]
				,Qty
				,Location
				,[Status]
				,IsExpiryDate
				,ExpiryDate
				,BinID
			FROM @SerialNumberTrackingData
		END

		IF EXISTS (
				SELECT *
				FROM @InvLotExtUpdateData
				)
		BEGIN
			UPDATE tblInvLotExt
			SET decQty = decQty + t.Qty
				,dteUpdatedDate = t.UpdatedDate
			FROM (select PartNumber,LotNumber,LocName,BinID,UpdatedDate,Sum(isnull(Qty,0)) as Qty from @InvLotExtUpdateData group by PartNumber,LotNumber,LocName,BinID,UpdatedDate) t
			WHERE strPartNumber = t.PartNumber
				AND strLotNumber = t.LotNumber
				AND strLocName = t.LocName
				AND lngBinID = t.BinID
		END

		IF EXISTS (
				SELECT *
				FROM @InvLotExtInsertData
				)
		BEGIN
			INSERT INTO tblInvLotExt
			SELECT *
				,GETDATE()
			FROM @InvLotExtInsertData
		END

		IF EXISTS (
				SELECT *
				FROM @InvSerialExtUpdateData
				)
		BEGIN
			UPDATE tblInvSerialExt
			SET strLocName = t.LocName
				,decQty = t.Qty
				,intStatus = t.[Status]
				,strDocID = t.DocID
				,dteUpdatedDate = t.UpdatedDate
				,lngBinID = t.BinID
			FROM @InvSerialExtUpdateData t
			WHERE strPartNumber = t.PartNumber
				AND strSerialNumber = t.SerialNumber
				--AND strLocName = t.LocName				
		END

		IF EXISTS (
				SELECT *
				FROM @InvSerialExtInsertData
				)
		BEGIN
			INSERT INTO tblInvSerialExt
			SELECT *
				,GETDATE()
			FROM @InvSerialExtInsertData
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[InsertInvoiceDocREVAndREVDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [InsertInvoiceDocREVAndREVDT] ***********/
CREATE PROCEDURE [dbo].[InsertInvoiceDocREVAndREVDT]
(
	@DocumentNumber AS NVARCHAR(50),
	@RevID AS BIGINT,
	@ReferenceNumber AS NVARCHAR(50),
	@Module AS int,
	@RevisionNumberStatus AS int,
	@IsWorkshop As bit = 0
)
AS
BEGIN
	INSERT INTO tblInvoiceDocREV 
	(		
		lngEntID,
		strInvDocID,
		lngInvTrackID,
  		lngJourID,
		dteSystemDate,
		dteJournalDate,
		dteRequired,
		strUsername,
		strCustName,
		strSoldTo,
		strShipTo,
		strReference,
		decSubTotal,
		decVAT,
		decTotal,
		bitFromSO,
		bitHistoryTrans,
		strNotes,
		bitPrinted,
		bitEmailed,
		intPaidBy,
		intAccount,
		strSalesName,
		strAddInfo,
		bitReserved,
		strCurrency,
		bitIsForeign,
		decSubTotalF,
		decVATF,
		decTotalF,
		decExchange,
		strTerm,
		intDept,
		strField1,
		strField2,
		strField3,
		strField4,
		strField5,
		strField6,
		strField7,
		strField8,
		strField9,
		strField10,
		strField11,
		strField12,
		strSubFormated,
		strVATFormatted,
		strTotFormatted,
		dteField13,
		dteField14,
		decDiscPerc,
		decDiscAmt,
		decDiscAmtF,
		strDiscFormatted,
		strOrdFQDocID,
		strStatusTypeCode,
		strCNReasonCode,
		bitBookmark,
		dteSystemDateTime,
		strPaidBy,
		intSentDoc,
		strVAT,
		strDelMethodCode,
		decTotalWeight,
		decTotalVolWeight,
		decDeliveryCost,
		decDeliveryCostF,
		strDeliveryCostFormatted,
		strOrdDocID,
		intRevisionNumber,
		dteRevisionDate,
		strUserCreated,
		bitIsRepair,
		strVendName,
		strBoughtFrom,
		bitFQConvert,
		bitSOCopy,
		bitSOCopyMulti,
		strVendInvNo,
		bitFromPO,
		decNetItemWeight,
		decNetVolumetricWeight,
		strSourceMOP,
		bitCleared,
		strOrdRFQDocID,
		bitRFQConvert,
		strOrdPDocID,
		intModule,
		strSOReasonCode,
		strDelNoteNo,
		strContractTo,
		strContBillType,
		blnAllowAnnualIncrease,
		intContractPriceIncrease,
		dtpIncreaseStartDate,
		bitInactive,
		strStoreNumber,
		strEDI
	)
	SELECT 
		@RevID,
		strInvDocID,
		lngInvTrackID,
		lngJourID,
		dteSystemDate,
		dteJournalDate,
		dteRequired,
		strUsername,
		strCustName,
		strSoldTo,
		strShipTo,
		strReference,
		decSubTotal,
		decVAT,
		decTotal,
		bitFromSO,
		bitHistoryTrans,
		strNotes,
		bitPrinted,
		bitEmailed,
		intPaidBy,
		intAccount,
		strSalesName,
		strAddInfo,
		bitReserved,
		strCurrency,
		bitIsForeign,
		decSubTotalF,
		decVATF,
		decTotalF,
		decExchange,
		strTerm,
		intDept,
		strField1,
		strField2,
		strField3,
		strField4,
		strField5,
		strField6,
		strField7,
		strField8,
		strField9,
		strField10,
		strField11,
		strField12,
		strSubFormated,
		strVATFormatted,
		strTotFormatted,
		dteField13,
		dteField14,
		decDiscPerc,
		decDiscAmt,
		decDiscAmtF,
		strDiscFormatted,
		strOrdFQDocID,
		strStatusTypeCode,
		strCNReasonCode,
		bitBookmark,
		dteSystemDateTime,
		strPaidBy,
		intSentDoc,
		strVAT,
		strDelMethodCode,
		decTotalWeight,
		decTotalVolWeight,
		decDeliveryCost,
		decDeliveryCostF,
		strDeliveryCostFormatted, 
		strOrdDocID,
		@ReferenceNumber,
		dteSystemDate,
		strUserName,
		NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
		@Module,
		NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,strStoreNumber,strEDI
	FROM tblInvoiceDoc
	WHERE strInvDocID = @DocumentNumber

	INSERT INTO tblInvoiceDocREVDT
	(
		lngEntID,
		strInvDocID,
		intLineNo,
		strPartNumber,
		strLocation,
		strPartDesc,
		decQty,
		strUnit,
		intType,
		decPriceEaExc,
		decLineTotExc,
		decLineTaxAmt,
		decPriceEaInc,
		decLineTotInc,
		strTaxCode,
		imgTaxObj,
		strCurrency,
		bitIsForeign,
		decPriceEaExcF,
		decLineTotExcF,
		decLineTaxAmtF,
		decEaIncTaxF,
		decTotIncTaxF,
		strInvField1,
		strInvField2,
		strInvField3,
		strInvField4,
		strInvField5,
		strInvField6,
		strLineField1,
		strLineField2,
		strLineField3,
		strLineField4,
		strLineField5,
		strLineField6,
		strLineField7,
		strLineField8,
		strLineField9,
		strLineField10,
		strLineField11,
		strLineField12,
		decLineDiscPerc,
		decLineDiscAmt,
		decLineDiscAmtF,
		bitDiscountTax,
		decStockQty,
		strStockUnit,
		decStandardCost,
		decLastPPUnit,
		strSalesName,
		decCOGS,
		decSOQty,
		decSOQtyRemain,
		strPartExtendedDesc,
		decItemWeight,
		decVolumetricWeight,
		bitContainerItem,
		decBuyQty,
		decBuyQtyRemain,
		strBuyUnit,
		decEaIncTax,
		decTotIncTax,
		strOrdSODocID,
		decStockQtyRemain,
		decBuyoutCost,
		decQtyRemaining,
		intStatus,
		uidTransactionFieldID,
		strContBillType,
		blnAllowAnnualIncrease,
		intContractPriceIncrease,
		dtpIncreaseStartDate,
		dtpSetUpDate,
		dtpActivationDate,
		dtpTerminationDate,
		dtpExpirationDate,
		dtpBillingSchduleStart,
		strBillingFrequncy,
		dtpLastBillDate,
		dtpNextBillDate,
		dtpNextInvoiceDate
	)
	SELECT 
		@RevID,
		strInvDocID,
		intLineNo,
		strPartNumber,
		strLocation,
		strPartDesc,
		decQty,
		strUnit,
		intType,
		decPriceEaExc,
		decLineTotExc,
		decLineTaxAmt,
		decPriceEaInc,
		decLineTotInc,
		strTaxCode,
		imgTaxObj,
		strCurrency,
		bitIsForeign,
		decPriceEaExcF,
		decLineTotExcF,
		decLineTaxAmtF,
		decEaIncTaxF,
		decTotIncTaxF,
		strInvField1,
		strInvField2,
		strInvField3,
		strInvField4,
		strInvField5,
		strInvField6,
		strLineField1,
		strLineField2,
		strLineField3,
		strLineField4,
		strLineField5,
		strLineField6,
		strLineField7,
		strLineField8,
		strLineField9,
		strLineField10,
		strLineField11,
		strLineField12,
		decLineDiscPerc,
		decLineDiscAmt,
		decLineDiscAmtF,
		bitDiscountTax,
		decStockQty,
		strStockUnit,
		decStandardCost,
		decLastPPUnit,
		strSalesName,
		decCOGS,
		decSOQty,
		decSOQtyRemain,
		strPartExtendedDesc,
		decItemWeight,
		decVolumetricWeight,
		bitContainerItem,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		@RevisionNumberStatus,
		uidTransactionFieldID,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL,
		NULL
	FROM tblInvoiceDocDT 
	WHERE strInvDocID = @DocumentNumber

	IF(@IsWorkshop = 1)
	BEGIN
		INSERT INTO tblWSInvoiceDocREV
		(
			lngEntID
			,strInvDocID
			,ServiceableItemCode
			,JobTemplateID
			,OwnerCode
			,CustomerCode
			,CustomerDetails
			,Technician
			,DocType
			,InventoryTotal
			,LabourTotal
			,BuyOutsTotal
			,RecoveryTotal
			,InventoryTotalF
			,LabourTotalF
			,BuyOutsTotalF
			,RecoveryTotalF
			,JobStatusType
			,IsFromProcessJob
			,ProcessDocID
			,CreatedDate
			,UpdatedDate
			,CreatedBy
			,UpdatedBy
			,intRevisionNumber
			,dteRevisionDate
		)
		SELECT
			@RevID
			,strInvDocID
			,ServiceableItemCode
			,JobTemplateID
			,OwnerCode
			,CustomerCode
			,CustomerDetails
			,Technician
			,DocType
			,InventoryTotal
			,LabourTotal
			,BuyOutsTotal
			,RecoveryTotal
			,InventoryTotalF
			,LabourTotalF
			,BuyOutsTotalF
			,RecoveryTotalF
			,JobStatusType
			,IsFromProcessJob
			,ProcessDocID
			,CreatedDate
			,UpdatedDate
			,CreatedBy
			,UpdatedBy
			,@ReferenceNumber
			,(SELECT dteSystemDate FROM tblInvoiceDoc WHERE strInvDocID = @DocumentNumber)
		FROM tblWSInvoiceDoc
	WHERE strInvDocID = @DocumentNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[InsertInvoiceDocREVAndREVDTDA]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [AccountUpdateCY] ***********/

/*********** Start [InsertInvoiceDocREVAndREVDTDA] ***********/
CREATE PROCEDURE [dbo].[InsertInvoiceDocREVAndREVDTDA]
    (
      @DocumentNumber AS NVARCHAR(50) ,
      @RevID AS NVARCHAR(50) ,
      @ReferenceNumber AS NVARCHAR(50) ,
      @Module AS INT ,
      @RevisionNumberStatus AS INT

    )
AS
    BEGIN

        INSERT  INTO tblInvoiceDocREV
                ( lngEntID ,
                  strInvDocID ,
                  lngInvTrackID ,
                  lngJourID ,
                  dteSystemDate ,
                  dteJournalDate ,
                  dteRequired ,
                  strUserName ,
                  strCustName ,
                  strSoldTo ,
                  strShipTo ,
                  strReference ,
                  decSubTotal ,
                  decVAT ,
                  decTotal ,
                  bitFromSO ,
                  strOrdDocID ,
                  bitHistoryTrans ,
                  strNotes ,
                  bitPrinted ,
                  bitEmailed ,
                  intPaidBy ,
                  intAccount ,
                  strSalesName ,
                  strAddInfo ,
                  bitReserved ,
                  strCurrency ,
                  bitIsForeign ,
                  decSubTotalF ,
                  decVATF ,
                  decTotalF ,
                  decExchange ,
                  strTerm ,
                  intDept ,
                  strField1 ,
                  strField2 ,
                  strField3 ,
                  strField4 ,
                  strField5 ,
                  strField6 ,
                  strField7 ,
                  strField8 ,
                  strField9 ,
                  strField10 ,
                  strField11 ,
                  strField12 ,
                  strSubFormated ,
                  strVATFormatted ,
                  strTotFormatted ,
                  dteField13 ,
                  dteField14 ,
                  decDiscPerc ,
                  decDiscAmt ,
                  decDiscAmtF ,
                  strDiscFormatted ,
                  strOrdFQDocID ,
                  strStatusTypeCode ,
                  strCNReasonCode ,
                  bitBookmark ,
                  dteSystemDateTime ,
                  strPaidBy ,
                  intSentDoc ,
                  strVAT ,
                  strDelMethodCode ,
                  decTotalWeight ,
                  decTotalVolWeight ,
                  decDeliveryCost ,
                  decDeliveryCostF ,
                  strDeliveryCostFormatted ,
                  intRevisionNumber ,
                  dteRevisionDate ,
                  strUserCreated ,
                  bitIsRepair ,
                  strVendName ,
                  strBoughtFrom ,
                  bitFQConvert ,
                  bitSOCopy ,
                  bitSOCopyMulti ,
                  strVendInvNo ,
                  bitFromPO ,
                  decNetItemWeight ,
                  decNetVolumetricWeight ,
                  strSourceMOP ,
                  bitCleared ,
                  strOrdRFQDocID ,
                  bitRFQConvert ,
                  strOrdPDocID ,
                  intModule ,
                  strSOReasonCode ,
                  strDelNoteNo ,
                  strContractTo ,
                  strContBillType ,
                  blnAllowAnnualIncrease ,
                  intContractPriceIncrease ,
                  dtpIncreaseStartDate ,
                  bitInactive ,
                  strStoreNumber ,
                  strEDI
                )
                SELECT  @RevID,
                        strOrdDADocID ,
                        lngInvTrackID ,
                        lngJourID ,
                        dteSystemDate ,
                        dteJournalDate ,
                        dteRequired ,
                        strUserName ,
                        strCustName ,
                        strSoldTo ,
                        strShipTo ,
                        strReference ,
                        decSubTotal ,
                        decVAT ,
                        decTotal ,
                        NULL ,
                        strOrdDocID ,
                        NULL ,
                        strNotes ,
                        bitPrinted ,
                        bitEmailed ,
                        NULL ,
                        NULL ,
                        strSalesName ,
                        strAddInfo ,
                        NULL ,
                        strCurrency ,
                        bitIsForeign ,
                        decSubTotalF ,
                        decVATF ,
                        decTotalF ,
                        decExchange ,
                        strTerm ,
                        intDept ,
                        strField1 ,
                        strField2 ,
                        strField3 ,
                        strField4 ,
                        strField5 ,
                        strField6 ,
                        strField7 ,
                        strField8 ,
                        strField9 ,
                        strField10 ,
                        strField11 ,
                        strField12 ,
                        strSubFormated ,
                        strVATFormatted ,
                        strTotFormatted ,
                        dteField13 ,
                        dteField14 ,
                        decDiscPerc ,
                        decDiscAmt ,
                        decDiscAmtF ,
                        strDiscFormatted ,
                        strOrdFQDocID ,
                        strStatusTypeCode ,
                        NULL ,
                        bitBookmark ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        strDelMethodCode ,
                        decTotalWeight ,
                        decTotalVolWeight ,
                        decDeliveryCost ,
                        decDeliveryCostF ,
                        strDeliveryCostFormatted ,
                        @ReferenceNumber ,
                        dteSystemDate ,
                        strUserName ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        bitCleared ,
                        NULL ,
                        NULL ,
                        NULL ,
                        @Module,
                        strSOReasonCode ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        strStoreNumber ,
                        strEDI
                FROM    tblOrderDocDA
                WHERE   strOrdDADocID = @DocumentNumber;



        INSERT  INTO tblInvoiceDocREVDT
                ( lngEntID ,
                  strInvDocID ,
                  intLineNo ,
                  strPartNumber ,
                  strLocation ,
                  strPartDesc ,
                  decQty ,
                  strUnit ,
                  intType ,
                  decPriceEaExc ,
                  decLineTotExc ,
                  decLineTaxAmt ,
                  decPriceEaInc ,
                  decLineTotInc ,
                  strTaxCode ,
                  imgTaxObj ,
                  strCurrency ,
                  bitIsForeign ,
                  decPriceEaExcF ,
                  decLineTotExcF ,
                  decLineTaxAmtF ,
                  decEaIncTaxF ,
                  decTotIncTaxF ,
                  strInvField1 ,
                  strInvField2 ,
                  strInvField3 ,
                  strInvField4 ,
                  strInvField5 ,
                  strInvField6 ,
                  strLineField1 ,
                  strLineField2 ,
                  strLineField3 ,
                  strLineField4 ,
                  strLineField5 ,
                  strLineField6 ,
                  strLineField7 ,
                  strLineField8 ,
                  strLineField9 ,
                  strLineField10 ,
                  strLineField11 ,
                  strLineField12 ,
                  decLineDiscPerc ,
                  decLineDiscAmt ,
                  decLineDiscAmtF ,
                  bitDiscountTax ,
                  decStockQty ,
                  strStockUnit ,
                  decStandardCost ,
                  decLastPPUnit ,
                  strSalesName ,
                  decCOGS ,
                  decSOQty ,
                  decSOQtyRemain ,
                  strPartExtendedDesc ,
                  decItemWeight ,
                  decVolumetricWeight ,
                  bitContainerItem ,
                  decBuyQty ,
                  decBuyQtyRemain ,
                  strBuyUnit ,
                  decEaIncTax ,
                  decTotIncTax ,
                  strOrdSODocID ,
                  decStockQtyRemain ,
                  decBuyoutCost ,
                  decQtyRemaining ,
                  intStatus ,
                  uidTransactionFieldID ,
                  strContBillType ,
                  blnAllowAnnualIncrease ,
                  intContractPriceIncrease ,
                  dtpIncreaseStartDate ,
                  dtpSetUpDate ,
                  dtpActivationDate ,
                  dtpTerminationDate ,
                  dtpExpirationDate ,
                  dtpBillingSchduleStart ,
                  strBillingFrequncy ,
                  dtpLastBillDate ,
                  dtpNextBillDate ,
                  dtpNextInvoiceDate
                )
                SELECT  @RevID ,
                        strOrdDADocID ,
                        intLineNo ,
                        strPartNumber ,
                        strLocation ,
                        strPartDesc ,
                        decQty ,
                        strUnit ,
                        intType ,
                        decPriceEaExc ,
                        decLineTotExc ,
                        decLineTaxAmt ,
                        decPriceEaInc ,
                        decLineTotInc ,
                        strTaxCode ,
                        imgTaxObj ,
                        strCurrency ,
                        bitIsForeign ,
                        decPriceEaExcF ,
                        decLineTotExcF ,
                        decLineTaxAmtF ,
                        decEaIncTaxF ,
                        decTotIncTaxF ,
                        strInvField1 ,
                        strInvField2 ,
                        strInvField3 ,
                        strInvField4 ,
                        strInvField5 ,
                        strInvField6 ,
                        strLineField1 ,
                        strLineField2 ,
                        strLineField3 ,
                        strLineField4 ,
                        strLineField5 ,
                        strLineField6 ,
                        strLineField7 ,
                        strLineField8 ,
                        strLineField9 ,
                        strLineField10 ,
                        strLineField11 ,
                        strLineField12 ,
                        decLineDiscPerc ,
                        decLineDiscAmt ,
                        decLineDiscAmtF ,
                        bitDiscountTax ,
                        decStockQty ,
                        strStockUnit ,
                        NULL ,
                        NULL ,
                        strSalesName ,
                        decCOGS ,
                        NULL ,
                        NULL ,
                        NULL ,
                        decItemWeight ,
                        decVolumetricWeight ,
                        bitContainerItem ,
                        bitDelCost ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        decStockQtyRemain ,
                        NULL ,
                        decQtyRemain ,
                        @RevisionNumberStatus ,
                        uidTransactionFieldID ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL ,
                        NULL
                FROM    tblOrderDocDADT
                WHERE   strOrdDADocID = @DocumentNumber;

    END
GO
/****** Object:  StoredProcedure [dbo].[InsertInvoiceDocREVAndREVDTPurchase]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


/****** Object:  StoredProcedure [dbo].[InsertInvoiceDocREVAndREVDTPurchase]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[InsertInvoiceDocREVAndREVDTPurchase]
(
	@DocumentNumber AS NVARCHAR(50),
	@RevID AS BIGINT,
	@ReferenceNumber AS NVARCHAR(50),
	@Module AS int,
	@RevisionNumberStatus AS int
)
AS
BEGIN
	INSERT INTO tblInvoiceDocREV (lngEntID,strInvDocID,lngInvTrackID,lngJourID,dteSystemDate,dteJournalDate,dteRequired,strUserName,strCustName,strSoldTo,strShipTo,strReference,decSubTotal,decVAT,decTotal,bitFromSO,strOrdDocID,bitHistoryTrans,strNotes,bitPrinted,bitEmailed,intPaidBy,intAccount,strSalesName,strAddInfo,bitReserved,strCurrency,bitIsForeign,decSubTotalF,decVATF,decTotalF,decExchange,strTerm,intDept,strField1,strField2,strField3,strField4,strField5,strField6,strField7,strField8,strField9,strField10,strField11,strField12,strSubFormated,strVATFormatted,strTotFormatted,dteField13,dteField14,decDiscPerc,decDiscAmt,decDiscAmtF,strDiscFormatted,strOrdFQDocID,strStatusTypeCode,strCNReasonCode,bitBookmark,dteSystemDateTime,strPaidBy,intSentDoc,strVAT,strDelMethodCode,decTotalWeight,decTotalVolWeight,intRevisionNumber,dteRevisionDate,strUserCreated,bitIsRepair,strVendName,strBoughtFrom,bitFQConvert,bitSOCopy,bitSOCopyMulti,strVendInvNo,bitFromPO,decNetItemWeight,decNetVolumetricWeight,strSourceMOP,bitCleared,strOrdRFQDocID,bitRFQConvert,strOrdPDocID,intModule,strSOReasonCode,strDelNoteNo,strContractTo,strContBillType,blnAllowAnnualIncrease,intContractPriceIncrease,dtpIncreaseStartDate,bitInactive,strStoreNumber,strEDI) SELECT @RevID,strInvPDocID,lngInvTrackID,lngJourID,dteSystemDate,dteJournalDate,dteRequired,strUserName,NULL,NULL,strShipTo,strReference,decSubTotal,decVAT,decTotal,NULL,NULL,bitHistoryTrans,strNotes,bitPrinted,bitEmailed,intPaidBy,intAccount,NULL,strAddInfo,NULL,strCurrency,bitIsForeign,decSubTotalF,decVATF,decTotalF,decExchange,strTerm,intDept,strField1,strField2,strField3,strField4,strField5,strField6,strField7,strField8,strField9,strField10,strField11,strField12,strSubFormated,strVATFormatted,strTotFormatted,NULL,NULL,decDiscPerc,decDiscAmt,decDiscAmtF,strDiscFormatted,strOrdFQDocID,strStatusTypeCode,NULL,bitBookmark,dteSystemDate,strPaidBy,NULL,NULL,NULL,NULL,NULL,@ReferenceNumber,dteSystemDate,strUserName,NULL,strVendName,NULL,bitFQConvert,bitSOCopy,bitSOCopyMulti,strVendInvNo,bitFromPO,decNetItemWeight,decNetVolumetricWeight,strSourceMOP,NULL,NULL,NULL,strOrdPDocID,@Module,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL FROM tblInvoiceDocP WHERE strInvPDocID = @DocumentNumber
	INSERT INTO tblInvoiceDocREVDT (lngEntID,strInvDocID,intLineNo,strPartNumber,strLocation,strPartDesc,decQty,strUnit,intType,decPriceEaExc,decLineTotExc,decLineTaxAmt,decPriceEaInc,decLineTotInc,strTaxCode,imgTaxObj,strCurrency,bitIsForeign,decPriceEaExcF,decLineTotExcF,decLineTaxAmtF,decEaIncTaxF,decTotIncTaxF,strInvField1,strInvField2,strInvField3,strInvField4,strInvField5,strInvField6,strLineField1,strLineField2,strLineField3,strLineField4,strLineField5,strLineField6,strLineField7,strLineField8,strLineField9,strLineField10,strLineField11,strLineField12,decLineDiscPerc,decLineDiscAmt,decLineDiscAmtF,bitDiscountTax,decStockQty,strStockUnit,decStandardCost,decLastPPUnit,strSalesName,decCOGS,decSOQty,decSOQtyRemain,strPartExtendedDesc,decItemWeight,decVolumetricWeight,bitContainerItem,decBuyQty,decBuyQtyRemain,strBuyUnit,decEaIncTax,decTotIncTax,strOrdSODocID,decStockQtyRemain,decBuyoutCost,decQtyRemaining,intStatus,uidTransactionFieldID,strContBillType,blnAllowAnnualIncrease,intContractPriceIncrease,dtpIncreaseStartDate,dtpSetUpDate,dtpActivationDate,dtpTerminationDate,dtpExpirationDate,dtpBillingSchduleStart,strBillingFrequncy,dtpLastBillDate,dtpNextBillDate,dtpNextInvoiceDate,decUsedQty) SELECT @RevID,strInvPDocID,intLineNo,strPartNumber,strLocation,strPartDesc,NULL,NULL,intType,decPriceEaExc,decLineTotExc,decLineTaxAmt,NULL,NULL,strTaxCode,imgTaxObj,strCurrency,bitIsForeign,decPriceEaExcF,decLineTotExcF,decLineTaxAmtF,decEaIncTaxF,decTotIncTaxF,strInvField1,strInvField2,strInvField3,strInvField4,strInvField5,strInvField6,strLineField1,strLineField2,strLineField3,strLineField4,strLineField5,strLineField6,strLineField7,strLineField8,strLineField9,strLineField10,strLineField11,strLineField12,decLineDiscPerc,decLineDiscAmt,decLineDiscAmtF,bitDiscountTax,decStockQty,strStockUnit,NULL,NULL,NULL,NULL,NULL,NULL,strPartExtendedDesc,decItemWeight,decVolumetricWeight,NULL,decBuyQty,NULL,strBuyUnit,decEaIncTax,decTotIncTax,strOrdSODocID,NULL,NULL,NULL,@RevisionNumberStatus,uidTransactionFieldID,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL FROM tblInvoiceDocPDT WHERE strInvPDocID = @DocumentNumber
END
GO
/****** Object:  StoredProcedure [dbo].[InsertInvoiceDocREVForCustInvHist]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [SalesOrderEDIOrdersInsert] ***********/

/*********** Start [InsertInvoiceDocREVForCustInvHist] ***********/
CREATE PROCEDURE [dbo].[InsertInvoiceDocREVForCustInvHist]
(
	@Module int,
	@DocID nvarchar(60),
	@RevisionNumberStatus int
)
AS
BEGIN
	INSERT INTO tblInvoiceDocREV 
	(
		lngEntID
	   ,strInvDocID
	   ,lngInvTrackID
	   ,lngJourID
	   ,dteSystemDate
	   ,dteJournalDate
	   ,dteRequired
	   ,strUsername
	   ,strCustName
	   ,strSoldTo
	   ,strShipTo
	   ,strReference
	   ,decSubTotal
	   ,decVAT
	   ,decTotal
	   ,bitFromSO
	   ,bitHistoryTrans
	   ,strNotes
	   ,bitPrinted
	   ,bitEmailed
	   ,intPaidBy
	   ,intAccount
	   ,strSalesName
	   ,strAddInfo
	   ,bitReserved
	   ,strCurrency
	   ,bitIsForeign
	   ,decSubTotalF
	   ,decVATF
	   ,decTotalF
	   ,decExchange
	   ,strTerm
	   ,intDept
	   ,strField1
	   ,strField2
	   ,strField3
	   ,strField4
	   ,strField5
	   ,strField6
	   ,strField7
	   ,strField8
	   ,strField9
	   ,strField10
	   ,strField11
	   ,strField12
	   ,strSubFormated
	   ,strVATFormatted
	   ,strTotFormatted
	   ,dteField13
	   ,dteField14
	   ,decDiscPerc
	   ,decDiscAmt
	   ,decDiscAmtF
	   ,strDiscFormatted
	   ,strOrdFQDocID
	   ,strStatusTypeCode
	   ,strCNReasonCode
	   ,bitBookmark
	   ,dteSystemDateTime
	   ,strPaidBy
	   ,intSentDoc
	   ,strVAT
	   ,strDelMethodCode
	   ,decTotalWeight
	   ,decTotalVolWeight
	   ,decDeliveryCost
	   ,decDeliveryCostF
	   ,strDeliveryCostFormatted
	   ,strOrdDocID
	   ,intRevisionNumber
	   ,dteRevisionDate
	   ,strUserCreated
	   ,bitIsRepair
	   ,strVendName
	   ,strBoughtFrom
	   ,bitFQConvert
	   ,bitSOCopy
	   ,bitSOCopyMulti
	   ,strVendInvNo
	   ,bitFromPO
	   ,decNetItemWeight
	   ,decNetVolumetricWeight
	   ,strSourceMOP
	   ,bitCleared
	   ,strOrdRFQDocID
	   ,bitRFQConvert
	   ,strOrdPDocID
	   ,intModule
	   ,strSOReasonCode
	   ,strDelNoteNo
	   ,strContractTo
	   ,strContBillType
	   ,blnAllowAnnualIncrease
	   ,intContractPriceIncrease
	   ,dtpIncreaseStartDate
	   ,bitInactive
	   ,strStoreNumber
	   ,strEDI
	)
	SELECT 
	   (SELECT ISNULL(MAX(lngEntID),0) + 1 FROM tblInvoiceDocREV),
       strInvDocID,
       lngInvTrackID,
       lngJourID,
       dteSystemDate,
       dteJournalDate,
       dteRequired,
       strUsername,
       strCustName,
       strSoldTo,
       strShipTo,
       strReference,
       decSubTotal,
       decVAT,
       decTotal,
       bitFromSO,
       bitHistoryTrans,
       strNotes,
       bitPrinted,
       bitEmailed,
       intPaidBy,
       intAccount,
       strSalesName,
       strAddInfo,
       bitReserved,
       strCurrency,
       bitIsForeign,
       decSubTotalF,
       decVATF,
       decTotalF,
       decExchange,
       strTerm,
       intDept,
       strField1,
       strField2,
       strField3,
       strField4,
       strField5,
       strField6,
       strField7,
       strField8,
       strField9,
       strField10,
       strField11,
       strField12,
       strSubFormated,
       strVATFormatted,
       strTotFormatted,
       dteField13,
       dteField14,
       decDiscPerc,
       decDiscAmt,
       decDiscAmtF,
       strDiscFormatted,
       strOrdFQDocID,
       strStatusTypeCode,
       strCNReasonCode,
       bitBookmark,
       dteSystemDateTime,
       strPaidBy,
       intSentDoc,
       strVAT,
       strDelMethodCode,
       decTotalWeight,
       decTotalVolWeight,
       decDeliveryCost,
       decDeliveryCostF,
       strDeliveryCostFormatted,
       strOrdDocID,
       (SELECT ISNULL(MAX(intRevisionNumber),0) + 1 FROM tblInvoiceDocREV WHERE strInvDocID = @DocID),
       dteSystemDate,
       strUserName,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
	   @Module,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL
	FROM tblInvoiceDoc
	WHERE strInvDocID = @DocID

	INSERT INTO tblInvoiceDocREVDT 
	(
		lngEntID
	   ,strInvDocID
	   ,intLineNo
	   ,strPartNumber
	   ,strLocation
	   ,strPartDesc
	   ,decQty
	   ,strUnit
	   ,intType
	   ,decPriceEaExc
	   ,decLineTotExc
	   ,decLineTaxAmt
	   ,decPriceEaInc
	   ,decLineTotInc
	   ,strTaxCode
	   ,imgTaxObj
	   ,strCurrency
	   ,bitIsForeign
	   ,decPriceEaExcF
	   ,decLineTotExcF
	   ,decLineTaxAmtF
	   ,decEaIncTaxF
	   ,decTotIncTaxF
	   ,strInvField1
	   ,strInvField2
	   ,strInvField3
	   ,strInvField4
	   ,strInvField5
	   ,strInvField6
	   ,strLineField1
	   ,strLineField2
	   ,strLineField3
	   ,strLineField4
	   ,strLineField5
	   ,strLineField6
	   ,strLineField7
	   ,strLineField8
	   ,strLineField9
	   ,strLineField10
	   ,strLineField11
	   ,strLineField12
	   ,decLineDiscPerc
	   ,decLineDiscAmt
	   ,decLineDiscAmtF
	   ,bitDiscountTax
	   ,decStockQty
	   ,strStockUnit
	   ,decStandardCost
	   ,decLastPPUnit
	   ,strSalesName
	   ,decCOGS
	   ,decSOQty
	   ,decSOQtyRemain
	   ,strPartExtendedDesc
	   ,decItemWeight
	   ,decVolumetricWeight
	   ,bitContainerItem
	   ,decBuyQty
	   ,decBuyQtyRemain
	   ,strBuyUnit
	   ,decEaIncTax
	   ,decTotIncTax
	   ,strOrdSODocID
	   ,decStockQtyRemain
	   ,decBuyoutCost
	   ,decQtyRemaining
	   ,intStatus
	   ,uidTransactionFieldID
	   ,strContBillType
	   ,blnAllowAnnualIncrease
	   ,intContractPriceIncrease
	   ,dtpIncreaseStartDate
	   ,dtpSetUpDate
	   ,dtpActivationDate
	   ,dtpTerminationDate
	   ,dtpExpirationDate
	   ,dtpBillingSchduleStart
	   ,strBillingFrequncy
	   ,dtpLastBillDate
	   ,dtpNextBillDate
	   ,dtpNextInvoiceDate
	)
	SELECT 
	   (SELECT ISNULL(MAX(lngEntID),0) + 1 FROM tblInvoiceDocREV),
       strInvDocID,
       intLineNo,
       strPartNumber,
       strLocation,
       strPartDesc,
       decQty,
       strUnit,
       intType,
       decPriceEaExc,
       decLineTotExc,
       decLineTaxAmt,
       decPriceEaInc,
       decLineTotInc,
       strTaxCode,
       imgTaxObj,
       strCurrency,
       bitIsForeign,
       decPriceEaExcF,
       decLineTotExcF,
       decLineTaxAmtF,
       decEaIncTaxF,
       decTotIncTaxF,
       strInvField1,
       strInvField2,
       strInvField3,
       strInvField4,
       strInvField5,
       strInvField6,
       strLineField1,
       strLineField2,
       strLineField3,
       strLineField4,
       strLineField5,
       strLineField6,
       strLineField7,
       strLineField8,
       strLineField9,
       strLineField10,
       strLineField11,
       strLineField12,
       decLineDiscPerc,
       decLineDiscAmt,
       decLineDiscAmtF,
       bitDiscountTax,
       decStockQty,
       strStockUnit,
       decStandardCost,
       decLastPPUnit,
       strSalesName,
       decCOGS,
       decSOQty,
       decSOQtyRemain,
       strPartExtendedDesc,
       decItemWeight,
       decVolumetricWeight,
       bitContainerItem,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       @RevisionNumberStatus,
       uidTransactionFieldID,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL
	FROM tblInvoiceDocDT
	WHERE strInvDocID = @DocID
END
GO
/****** Object:  StoredProcedure [dbo].[InsertInvoiceHeader]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[InsertInvoiceHeader]
(  
 @FixDocNumber AS Bit,  
 @InvDocID AS nvarchar(50),  
 @InvTrackID AS bigint,  
 @JourID AS bigint,  
 @SystemDate AS datetime,  
 @JournalDate AS datetime,  
 @Required AS datetime,  
 @UserName AS nvarchar(20),  
 @CustName AS nvarchar(50),  
 @SoldTo AS nvarchar(500),  
 @ShipTo AS nvarchar(500),  
 @Reference AS nvarchar(50),  
 @DiscountPercentage AS money,  
 @SubTotal AS money,  
 @DiscountAmount AS money,  
 @VAT AS money,  
 @Total AS money,  
 @DeliveryCost AS money,  
 @IsFromSO AS bit,  
 @OrdDocID AS nvarchar(50),  
 @Notes AS nvarchar(MAX),  
 @PaidBy AS int,  
 @Account AS nvarchar(30),  
 @SalesName AS nvarchar(50),  
 @AddInfo AS nvarchar(50),  
 @Currency AS nvarchar(3),  
 @SubTotalF AS money,  
 @DiscountAmountF AS money,  
 @VATF AS money,  
 @TotalF AS money,  
 @Exchange AS MONEY,  
 @DeliveryCostF AS money,  
 @IsForeign AS bit,  
 @Term AS nvarchar(50),  
 @Dept AS int,  
 @Field1 AS nvarchar(100),  
 @Field2 AS nvarchar(100),  
 @Field3 AS nvarchar(100),  
 @Field4 AS nvarchar(100),  
 @Field5 AS nvarchar(100),  
 @Field6 AS nvarchar(100),  
 @Field7 AS nvarchar(100),  
 @Field8 AS nvarchar(100),  
 @Field9 AS nvarchar(100),  
 @Field10 AS nvarchar(100),  
 @Field11 AS nvarchar(100),  
 @Field12 AS nvarchar(100),  
 @SubFormatted AS nvarchar(50),  
 @DiscountFormatted AS nvarchar(50),  
 @VATFormatted AS nvarchar(50),  
 @TotalFormatted AS nvarchar(50),  
 @DeliveryCostFormatted AS nvarchar(50),  
 @Field13 AS datetime,  
 @Field14 AS datetime,  
 @OrdFQDocID AS nvarchar(50),  
 @StatusTypeCode AS nvarchar(20),  
 @CNReasonCode AS nvarchar(20),  
 @IsBookmark AS bit,  
 @PaidByString AS nvarchar(20),  
 @VATString AS nvarchar(50),
 @DelMethodCode AS nvarchar(50),  
 @TotalWeight AS money,  
 @TotalVolWeight AS money,  
 @RevisionNumber AS int,  
 @StoreNumber AS NVARCHAR(50),  
 @EDI AS NVARCHAR(50),  
 @IsNoPODRequired AS BIT = NULL,
 @IsFromWorkshop AS BIT = NULL,
 @SalesAccrualProcess int = 1,
 @IsNewsSubscribed AS BIT=NULL,
 @Email AS nvarchar(50)=null,
 @DocumentSourceModules AS INT = NULL,
 @LPO AS nvarchar(100) = ''
)  
AS  
BEGIN  
 if(@DelMethodCode = '0')
 SET @DelMethodCode = NULL
 IF @FixDocNumber = 1  
 BEGIN  
  DELETE FROM tblInvoiceDoc WHERE strInvDocID = @InvDocID AND bitReserved = 1  
 END  
   
 INSERT INTO [dbo].[tblInvoiceDoc]  
           ([strInvDocID]  
           ,[lngInvTrackID]  
           ,[lngJourID]  
           ,[dteSystemDate]  
           ,[dteJournalDate]  
           ,[dteRequired]  
           ,[strUserName]  
           ,[strCustName]  
           ,[strSoldTo]  
           ,[strShipTo]  
           ,[strReference]  
           ,[decSubTotal]  
           ,[decVAT]  
           ,[decTotal]  
           ,[bitFromSO]  
           ,[strOrdDocID]  
           ,[bitHistoryTrans]  
           ,[strNotes]  
           ,[bitPrinted]  
           ,[bitEmailed]  
           ,[intPaidBy]  
           ,[intAccount]  
           ,[strSalesName]  
           ,[strAddInfo]  
           ,[bitReserved]  
           ,[strCurrency]  
           ,[bitIsForeign]  
           ,[decSubTotalF]  
           ,[decVATF]  
           ,[decTotalF]  
           ,[decExchange]  
           ,[strTerm]  
           ,[intDept]  
           ,[strField1]  
           ,[strField2]  
           ,[strField3]  
           ,[strField4]  
           ,[strField5]  
           ,[strField6]  
           ,[strField7]  
           ,[strField8]  
           ,[strField9]  
           ,[strField10]  
           ,[strField11]  
           ,[strField12]  
           ,[strSubFormated]  
           ,[strVATFormatted]  
           ,[strTotFormatted]  
           ,[dteField13]  
           ,[dteField14]  
           ,[decDiscPerc]  
           ,[decDiscAmt]  
           ,[decDiscAmtF]  
           ,[strDiscFormatted]  
           ,[strOrdFQDocID]  
           ,[strStatusTypeCode]  
           ,[strCNReasonCode]  
           ,[bitBookmark]  
           ,[dteSystemDateTime]  
           ,[strPaidBy]  
           ,[intSentDoc]  
           ,[strVAT]  
           ,[strDelMethodCode]  
           ,[decTotalWeight]  
           ,[decTotalVolWeight]  
           ,[decDeliveryCost]  
           ,[decDeliveryCostF]  
           ,[strDeliveryCostFormatted]  
           ,[bitShipmentsAuditTrail]  
           ,[intRevisionNumber]  
           ,[strStoreNumber]  
           ,[strEDI]  
           ,[bitNoPODRequired]
		   ,intSalesAccrualProcess  
		   ,[bitIsFromWorkshop]
		   ,[bitNewsSubscribed]
		   ,[strEmail]
		   ,[intDocumentSourceModules]
		   ,[strLPO]
     )  
 VALUES (  
   @InvDocID,  
   @InvTrackID,  
   @JourID,  
   @SystemDate,  
   @JournalDate,  
   @Required,  
   @UserName,  
   @CustName,  
   @SoldTo,  
   @ShipTo,  
   @Reference,  
   @SubTotal,  
   @VAT,  
   @Total,  
   @IsFromSO,  
   @OrdDocID,  
   0,  
   @Notes,  
   0,  
   0,  
   @PaidBy,  
   @Account,  
   @SalesName,  
   @AddInfo,  
   0,  
   @Currency,  
   @IsForeign,  
   @SubTotalF,  
   @VATF,  
   @TotalF,  
   @Exchange,  
   @Term,  
   @Dept,  
   @Field1,  
   @Field2,  
   @Field3,  
   @Field4,  
   @Field5,  
   @Field6,  
   @Field7,  
   @Field8,  
   @Field9,  
   @Field10,  
   @Field11,  
   @Field12,  
   @SubFormatted,  
   @VATFormatted,  
   @TotalFormatted,  
   @Field13,  
   @Field14,  
   @DiscountPercentage,  
   @DiscountAmount,  
   @DiscountAmountF,  
   @DiscountFormatted,  
   @OrdFQDocID,  
   @StatusTypeCode,  
   @CNReasonCode,  
   @IsBookmark,  
   GetDate(), --@SystemDate,--GetDate()  --It should be current datetime field as per QC
   @PaidByString,  
   0,  
   @VATString,  
   @DelMethodCode,  
   @TotalWeight,  
   @TotalVolWeight,  
   @DeliveryCost,  
   @DeliveryCostF,  
   @DeliveryCostFormatted,  
   0,  
   @RevisionNumber,  
   @StoreNumber,  
   @EDI,  
   ISNULL(@IsNoPODRequired, 0),  
   @SalesAccrualProcess,
   @IsFromWorkshop,
   @IsNewsSubscribed,
   @Email,
   @DocumentSourceModules,
   @LPO
 )  
END
GO

/****** Object:  StoredProcedure [dbo].[InsertInvoicePDocREVForCustInvHist]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InsertInvoiceDocREVForCustInvHist] ***********/

/*********** Start [InsertInvoicePDocREVForCustInvHist] ***********/
CREATE PROCEDURE [dbo].[InsertInvoicePDocREVForCustInvHist]
(
	@Module int,
	@PDocID nvarchar(60),
	@RevisionNumberStatus int
)
AS
BEGIN
	INSERT INTO tblInvoiceDocREV 
	(
		lngEntID
		,strInvDocID
		,lngInvTrackID
		,lngJourID
		,dteSystemDate
		,dteJournalDate
		,dteRequired
		,strUserName
		,strCustName
		,strSoldTo
		,strShipTo
		,strReference
		,decSubTotal
		,decVAT
		,decTotal
		,bitFromSO
		,strOrdDocID
		,bitHistoryTrans
		,strNotes
		,bitPrinted
		,bitEmailed
		,intPaidBy
		,intAccount
		,strSalesName
		,strAddInfo
		,bitReserved
		,strCurrency
		,bitIsForeign
		,decSubTotalF
		,decVATF
		,decTotalF
		,decExchange
		,strTerm
		,intDept
		,strField1
		,strField2
		,strField3
		,strField4
		,strField5
		,strField6
		,strField7
		,strField8
		,strField9
		,strField10
		,strField11
		,strField12
		,strSubFormated
		,strVATFormatted
		,strTotFormatted
		,dteField13
		,dteField14
		,decDiscPerc
		,decDiscAmt
		,decDiscAmtF
		,strDiscFormatted
		,strOrdFQDocID
		,strStatusTypeCode
		,strCNReasonCode
		,bitBookmark
		,dteSystemDateTime
		,strPaidBy
		,intSentDoc
		,strVAT
		,strDelMethodCode
		,decTotalWeight
		,decTotalVolWeight
		,intRevisionNumber
		,dteRevisionDate
		,strUserCreated
		,bitIsRepair
		,strVendName
		,strBoughtFrom
		,bitFQConvert
		,bitSOCopy
		,bitSOCopyMulti
		,strVendInvNo
		,bitFromPO
		,decNetItemWeight
		,decNetVolumetricWeight
		,strSourceMOP
		,bitCleared
		,strOrdRFQDocID
		,bitRFQConvert
		,strOrdPDocID
		,intModule
		,strSOReasonCode
		,strDelNoteNo
		,strContractTo
		,strContBillType
		,blnAllowAnnualIncrease
		,intContractPriceIncrease
		,dtpIncreaseStartDate
		,bitInactive
		,strStoreNumber
		,strEDI
	)
	SELECT 
	   (SELECT ISNULL(MAX(lngEntID),0) + 1 FROM tblInvoiceDocREV),
       strInvPDocID,
       lngInvTrackID,
       lngJourID,
       dteSystemDate,
       dteJournalDate,
       dteRequired,
       strUserName,
       NULL,
       NULL,
       strShipTo,
       strReference,
       decSubTotal,
       decVAT,
       decTotal,
       NULL,
       NULL,
       bitHistoryTrans,
       strNotes,
       bitPrinted,
       bitEmailed,
       intPaidBy,
       intAccount,
       NULL,
       strAddInfo,
       NULL,
       strCurrency,
       bitIsForeign,
       decSubTotalF,
       decVATF,
       decTotalF,
       decExchange,
       strTerm,
       intDept,
       strField1,
       strField2,
       strField3,
       strField4,
       strField5,
       strField6,
       strField7,
       strField8,
       strField9,
       strField10,
       strField11,
       strField12,
       strSubFormated,
       strVATFormatted,
       strTotFormatted,
       NULL,
       NULL,
       decDiscPerc,
       decDiscAmt,
       decDiscAmtF,
       strDiscFormatted,
       strOrdFQDocID,
       strStatusTypeCode,
       NULL,
       bitBookmark,
       dteSystemDate,
       strPaidBy,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       (SELECT ISNULL(MAX(intRevisionNumber),0) + 1 FROM tblInvoiceDocREV WHERE strInvDocID = @PDocID),
       dteSystemDate,
       strUserName,
       NULL,
       strVendName,
       NULL,
       bitFQConvert,
       bitSOCopy,
       bitSOCopyMulti,
       strVendInvNo,
       bitFromPO,
       decNetItemWeight,
       decNetVolumetricWeight,
       strSourceMOP,
       NULL,
       NULL,
       NULL,
       strOrdPDocID,
       @Module,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL
	FROM tblInvoiceDocP
	WHERE strInvPDocID = @PDocID

	INSERT INTO tblInvoiceDocREVDT 
	(
		lngEntID
		,strInvDocID
		,intLineNo
		,strPartNumber
		,strLocation
		,strPartDesc
		,decQty
		,strUnit
		,intType
		,decPriceEaExc
		,decLineTotExc
		,decLineTaxAmt
		,decPriceEaInc
		,decLineTotInc
		,strTaxCode
		,imgTaxObj
		,strCurrency
		,bitIsForeign
		,decPriceEaExcF
		,decLineTotExcF
		,decLineTaxAmtF
		,decEaIncTaxF
		,decTotIncTaxF
		,strInvField1
		,strInvField2
		,strInvField3
		,strInvField4
		,strInvField5
		,strInvField6
		,strLineField1
		,strLineField2
		,strLineField3
		,strLineField4
		,strLineField5
		,strLineField6
		,strLineField7
		,strLineField8
		,strLineField9
		,strLineField10
		,strLineField11
		,strLineField12
		,decLineDiscPerc
		,decLineDiscAmt
		,decLineDiscAmtF
		,bitDiscountTax
		,decStockQty
		,strStockUnit
		,decStandardCost
		,decLastPPUnit
		,strSalesName
		,decCOGS
		,decSOQty
		,decSOQtyRemain
		,strPartExtendedDesc
		,decItemWeight
		,decVolumetricWeight
		,bitContainerItem
		,decBuyQty
		,decBuyQtyRemain
		,strBuyUnit
		,decEaIncTax
		,decTotIncTax
		,strOrdSODocID
		,decStockQtyRemain
		,decBuyoutCost
		,decQtyRemaining
		,intStatus
		,uidTransactionFieldID
		,strContBillType
		,blnAllowAnnualIncrease
		,intContractPriceIncrease
		,dtpIncreaseStartDate
		,dtpSetUpDate
		,dtpActivationDate
		,dtpTerminationDate
		,dtpExpirationDate
		,dtpBillingSchduleStart
		,strBillingFrequncy
		,dtpLastBillDate
		,dtpNextBillDate
		,dtpNextInvoiceDate
	)
	SELECT 
	   (SELECT ISNULL(MAX(lngEntID),0) + 1 FROM tblInvoiceDocREV),
       strInvPDocID,
       intLineNo,
       strPartNumber,
       strLocation,
       strPartDesc,
       NULL,
       NULL,
       intType,
       decPriceEaExc,
       decLineTotExc,
       decLineTaxAmt,
       NULL,
       NULL,
       strTaxCode,
       imgTaxObj,
       strCurrency,
       bitIsForeign,
       decPriceEaExcF,
       decLineTotExcF,
       decLineTaxAmtF,
       decEaIncTaxF,
       decTotIncTaxF,
       strInvField1,
       strInvField2,
       strInvField3,
       strInvField4,
       strInvField5,
       strInvField6,
       strLineField1,
       strLineField2,
       strLineField3,
       strLineField4,
       strLineField5,
       strLineField6,
       strLineField7,
       strLineField8,
       strLineField9,
       strLineField10,
       strLineField11,
       strLineField12,
       decLineDiscPerc,
       decLineDiscAmt,
       decLineDiscAmtF,
       bitDiscountTax,
       decStockQty,
       strStockUnit,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       strPartExtendedDesc,
       decItemWeight,
       decVolumetricWeight,
       NULL,
       decBuyQty,
       NULL,
       strBuyUnit,
       decEaIncTax,
       decTotIncTax,
       strOrdSODocID,
       NULL,
       NULL,
       NULL,
       @RevisionNumberStatus,
       uidTransactionFieldID,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL
	FROM tblInvoiceDocPDT
	WHERE strInvPDocID = @PDocID
END
GO
/****** Object:  StoredProcedure [dbo].[InsertInvoiceREVAndREVDTForOpenItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetTradeDiscounts] ***********/

/*********** Start [InsertInvoiceREVAndREVDTForOpenItems] ***********/
CREATE PROCEDURE [dbo].[InsertInvoiceREVAndREVDTForOpenItems]
(
	@DocNumber nvarchar(50),
	@RevisionNumberStatus int
)
AS
BEGIN
	INSERT INTO tblInvoiceDocREV 
	(
		lngEntID
		,strInvDocID
		,lngInvTrackID
		,lngJourID
		,dteSystemDate
		,dteJournalDate
		,dteRequired
		,strUserName
		,strCustName
		,strSoldTo
		,strShipTo
		,strReference
		,decSubTotal
		,decVAT
		,decTotal
		,bitFromSO
		,strOrdDocID
		,bitHistoryTrans
		,strNotes
		,bitPrinted
		,bitEmailed
		,intPaidBy
		,intAccount
		,strSalesName
		,strAddInfo
		,bitReserved
		,strCurrency
		,bitIsForeign
		,decSubTotalF
		,decVATF
		,decTotalF
		,decExchange
		,strTerm
		,intDept
		,strField1
		,strField2
		,strField3
		,strField4
		,strField5
		,strField6
		,strField7
		,strField8
		,strField9
		,strField10
		,strField11
		,strField12
		,strSubFormated
		,strVATFormatted
		,strTotFormatted
		,dteField13
		,dteField14
		,decDiscPerc
		,decDiscAmt
		,decDiscAmtF
		,strDiscFormatted
		,strOrdFQDocID
		,strStatusTypeCode
		,strCNReasonCode
		,bitBookmark
		,dteSystemDateTime
		,strPaidBy
		,intSentDoc
		,strVAT
		,strDelMethodCode
		,decTotalWeight
		,decTotalVolWeight
		,decDeliveryCost
		,decDeliveryCostF
		,strDeliveryCostFormatted
		,intRevisionNumber
		,dteRevisionDate
		,strUserCreated
		,bitIsRepair
		,strVendName
		,strBoughtFrom
		,bitFQConvert
		,bitSOCopy
		,bitSOCopyMulti
		,strVendInvNo
		,bitFromPO
		,decNetItemWeight
		,decNetVolumetricWeight
		,strSourceMOP
		,bitCleared
		,strOrdRFQDocID
		,bitRFQConvert
		,strOrdPDocID
		,intModule
		,strSOReasonCode
		,strDelNoteNo
		,strContractTo
		,strContBillType
		,blnAllowAnnualIncrease
		,intContractPriceIncrease
		,dtpIncreaseStartDate
		,bitInactive
		,strStoreNumber
		,strEDI
	)
	SELECT 
	   (SELECT ISNULL(MAX(lngEntID),0) + 1 FROM tblInvoiceDocREV),
       strOrdDocID,
       NULL,
       NULL,
       dteSystemDate,
       dteJournalDate,
       dteRequired,
       strUserName,
       strCustName,
       strSoldTo,
       strShipTo,
       strReference,
       decSubTotal,
       decVAT,
       decTotal,
       NULL,
       NULL,
       NULL,
       strNotes,
       bitPrinted,
       bitEmailed,
       NULL,
       NULL,
       strSalesName,
       strAddInfo,
       NULL,
       strCurrency,
       bitIsForeign,
       decSubTotalF,
       decVATF,
       decTotalF,
       decExchange,
       strTerm,
       intDept,
       strField1,
       strField2,
       strField3,
       strField4,
       strField5,
       strField6,
       strField7,
       strField8,
       strField9,
       strField10,
       strField11,
       strField12,
       strSubFormated,
       strVATFormatted,
       strTotFormatted,
       dteField13,
       dteField14,
       decDiscPerc,
       decDiscAmt,
       decDiscAmtF,
       strDiscFormatted,
       strOrdFQDocID,
       strStatusTypeCode,
       strCNReasonCode,
       bitBookmark,
       NULL,
       NULL,
       NULL,
       NULL,
       strDelMethodCode,
       decTotalWeight,
       decTotalVolWeight,
       decDeliveryCost,
       decDeliveryCostF,
       strDeliveryCostFormatted,
       (SELECT ISNULL(MAX(intRevisionNumber),0) + 1 FROM tblInvoiceDocREV WHERE strInvDocID = @DocNumber),
       dteSystemDate,
       strUserName,
       bitIsRepair,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       bitCleared,
       NULL,
       NULL,
       NULL,
       2,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL
	FROM tblOrderDoc
	WHERE strOrdDocID = @DocNumber

	INSERT INTO tblInvoiceDocREVDT 
	(
		lngEntID
		,strInvDocID
		,intLineNo
		,strPartNumber
		,strLocation
		,strPartDesc
		,decQty
		,strUnit
		,intType
		,decPriceEaExc
		,decLineTotExc
		,decLineTaxAmt
		,decPriceEaInc
		,decLineTotInc
		,strTaxCode
		,imgTaxObj
		,strCurrency
		,bitIsForeign
		,decPriceEaExcF
		,decLineTotExcF
		,decLineTaxAmtF
		,decEaIncTaxF
		,decTotIncTaxF
		,strInvField1
		,strInvField2
		,strInvField3
		,strInvField4
		,strInvField5
		,strInvField6
		,strLineField1
		,strLineField2
		,strLineField3
		,strLineField4
		,strLineField5
		,strLineField6
		,strLineField7
		,strLineField8
		,strLineField9
		,strLineField10
		,strLineField11
		,strLineField12
		,decLineDiscPerc
		,decLineDiscAmt
		,decLineDiscAmtF
		,bitDiscountTax
		,decStockQty
		,strStockUnit
		,decStandardCost
		,decLastPPUnit
		,strSalesName
		,decCOGS
		,decSOQty
		,decSOQtyRemain
		,strPartExtendedDesc
		,decItemWeight
		,decVolumetricWeight
		,bitContainerItem
		,decBuyQty
		,decBuyQtyRemain
		,strBuyUnit
		,decEaIncTax
		,decTotIncTax
		,strOrdSODocID
		,decStockQtyRemain
		,decBuyoutCost
		,decQtyRemaining
		,intStatus
		,uidTransactionFieldID
		,strContBillType
		,blnAllowAnnualIncrease
		,intContractPriceIncrease
		,dtpIncreaseStartDate
		,dtpSetUpDate
		,dtpActivationDate
		,dtpTerminationDate
		,dtpExpirationDate
		,dtpBillingSchduleStart
		,strBillingFrequncy
		,dtpLastBillDate
		,dtpNextBillDate
		,dtpNextInvoiceDate
	)
	SELECT 
	   (SELECT ISNULL(MAX(lngEntID),0) + 1 FROM tblInvoiceDocREV),
       strOrdDocID,
       intLineNo,
       strPartNumber,
       strLocation,
       strPartDesc,
       decQty,
       strUnit,
       intType,
       decPriceEaExc,
       decLineTotExc,
       decLineTaxAmt,
       decPriceEaInc,
       decLineTotInc,
       strTaxCode,
       imgTaxObj,
       strCurrency,
       bitIsForeign,
       decPriceEaExcF,
       decLineTotExcF,
       decLineTaxAmtF,
       decEaIncTaxF,
       decTotIncTaxF,
       strInvField1,
       strInvField2,
       strInvField3,
       strInvField4,
       strInvField5,
       strInvField6,
       strLineField1,
       strLineField2,
       strLineField3,
       strLineField4,
       strLineField5,
       strLineField6,
       strLineField7,
       strLineField8,
       strLineField9,
       strLineField10,
       strLineField11,
       strLineField12,
       decLineDiscPerc,
       decLineDiscAmt,
       decLineDiscAmtF,
       bitDiscountTax,
       decStockQty,
       strStockUnit,
       NULL,
       NULL,
       strSalesName,
       NULL,
       NULL,
       NULL,
       strPartExtendedDesc,
       decItemWeight,
       decVolumetricWeight,
       bitContainerItem,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       decStockQtyRemain,
       decBuyoutCost,
       NULL,
       @RevisionNumberStatus,
       uidTransactionFieldID,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL
	FROM tblOrderDocDT
	WHERE strOrdDocID = @DocNumber

END
GO
/****** Object:  StoredProcedure [dbo].[InsertInvTransferHeader]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE Procedure [dbo].[InsertInvTransferHeader]
(
@InvTrfDocID as nvarchar(100) = null,
@intInvTrfDocID as bigint= null,
@InvTrackID as bigint  = null,
@JourID as bigint  = null,
@SystemDate as datetime  = null,
@JournalDate as datetime  = null,
@UserName as nvarchar(40)  = null,
@FromLocation as nvarchar(20)  = null,
@ToLocation as nvarchar(20)  = null,
@Comment nvarchar(100)  = null,
@Total as money  = null,
@Department as int = null,
@FileName nvarchar(250)  = null,
@WarehouseTrf bit  = 0,
@RequiredDate as datetime  = null,
@Account nvarchar(30)  = null,
@Cleared bit  = 0,
@TrfRecDocID nvarchar(50)  = null,
@InvTrfOrdDocID nvarchar(100)  = null
)
as
Begin
INSERT INTO tblInvTrfDoc
(
strTrfDocID,
intTrfDocID,
lngInvTrackID,
lngJourID,
dteSystemDate,
dteJournalDate,
strUserName,
strFromLoc,
strToLoc,
strComment,
decTotal,
intDept,
strFileName,
bitWarehouseTrf,
dteRequiredDate,
intAccount,
bitCleared,
strTrfRecDocID,
strInvTrfOrdDocID
) 
VALUES 
(
@InvTrfDocID,
@intInvTrfDocID,
@InvTrackID,
@JourID,
@SystemDate,
@JournalDate,
@UserName,
@FromLocation,
@ToLocation,
@Comment,
@Total,
@Department,
@FileName,
@WarehouseTrf,
@RequiredDate,
@Account,
@Cleared,
@TrfRecDocID,
@InvTrfOrdDocID
)
End
GO
/****** Object:  StoredProcedure [dbo].[InsertInvTrfDocDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[InsertInvTrfDocDetails] (
	@InvTrfDocDTData AS InvTrfDocDTTableType READONLY
	,@InvTrfDocDTSerialData AS DocDTSerialTableType READONLY
	,@SerialNumberTrackingInvTrfOutData AS SerialNumberTrackingTableType READONLY
	,@InvSerialExtUpdateTrfOutData AS InvSerialExtTableType READONLY
	,@InvLotExtUpdateTrfOutData AS InvLotExtTableType READONLY
	,@SerialNumberTrackingInvTrfInData AS SerialNumberTrackingTableType READONLY
	,@InvSerialExtUpdateTrfInData AS InvSerialExtTableType READONLY
	,@InvLotExtInsertTrfInData AS InvLotExtTableType READONLY
	,@InvLotExtUpdateTrfInData AS InvLotExtTableType READONLY
	)
AS
BEGIN
	INSERT INTO tblInvTrfDocDT
	SELECT *
	FROM @InvTrfDocDTData

	INSERT INTO tblInvTrfDocDTSerial
	SELECT *
	FROM @InvTrfDocDTSerialData

	DECLARE @Qty INT
	DECLARE @UpdatedDate DATETIME
	DECLARE @PartNumber NVARCHAR(MAX)
	DECLARE @LotNumber NVARCHAR(MAX)
	DECLARE @LocName NVARCHAR(MAX)
	DECLARE @BinID INT

	IF EXISTS (
			SELECT *
			FROM @SerialNumberTrackingInvTrfOutData
			)
	BEGIN
		INSERT INTO tblSerialNumberTracking (
			strPartNumber
			,strSerialNumber
			,strUserName
			,dteUpdatedDate
			,intType
			,strDocID
			,intLineNo
			,decQty
			,strLocation
			,intStatus
			,bitExpiryDate
			,dteExpiryDate
			,lngBinId
			)
		SELECT PartNumber
			,SerialNumber
			,UserName
			,UpdatedDate
			,SerialLotType
			,DocID
			,[LineNo]
			,Qty
			,Location
			,[Status]
			,IsExpiryDate
			,ExpiryDate
			,BinID
		FROM @SerialNumberTrackingInvTrfOutData
	END

	IF EXISTS (
			SELECT *
			FROM @InvSerialExtUpdateTrfOutData
			)
	BEGIN
		UPDATE tblInvSerialExt
		SET strLocName = t.LocName
			,decQty = t.Qty
			,intStatus = t.[Status]
			,strDocID = t.DocID
			,dteUpdatedDate = t.UpdatedDate
			,lngBinID = t.BinID
		FROM @InvSerialExtUpdateTrfOutData t
		WHERE strPartNumber = t.PartNumber
			AND strSerialNumber = t.SerialNumber
	END

	IF EXISTS (
			SELECT *
			FROM @InvLotExtUpdateTrfOutData
			)
	BEGIN
		DECLARE CURSOR1 CURSOR KEYSET SCROLL
		FOR
		SELECT Qty
			,UpdatedDate
			,PartNumber
			,LotNumber
			,LocName
			,BinID
		FROM @InvLotExtUpdateTrfOutData

		OPEN CURSOR1

		IF @@CURSOR_ROWS > 0
		BEGIN
			FETCH NEXT
			FROM CURSOR1
			INTO @Qty
				,@UpdatedDate
				,@PartNumber
				,@LotNumber
				,@LocName
				,@BinID

			WHILE @@FETCH_STATUS = 0
			BEGIN
				UPDATE tblInvLotExt
				SET decQty = decQty + @Qty
					,dteUpdatedDate = @UpdatedDate
				WHERE strPartNumber = @PartNumber
					AND strLotNumber = @LotNumber
					AND strLocName = @LocName
					AND lngBinID = @BinID

				FETCH NEXT
				FROM CURSOR1
				INTO @Qty
					,@UpdatedDate
					,@PartNumber
					,@LotNumber
					,@LocName
					,@BinID
			END

			CLOSE CURSOR1

			DEALLOCATE CURSOR1
		END
	END

	IF EXISTS (
			SELECT *
			FROM @SerialNumberTrackingInvTrfInData
			)
	BEGIN
		INSERT INTO tblSerialNumberTracking (
			strPartNumber
			,strSerialNumber
			,strUserName
			,dteUpdatedDate
			,intType
			,strDocID
			,intLineNo
			,decQty
			,strLocation
			,intStatus
			,bitExpiryDate
			,dteExpiryDate
			,lngBinID
			)
		SELECT PartNumber
			,SerialNumber
			,UserName
			,UpdatedDate
			,SerialLotType
			,DocID
			,[LineNo]
			,Qty
			,Location
			,[Status]
			,IsExpiryDate
			,ExpiryDate
			,BinID
		FROM @SerialNumberTrackingInvTrfInData
	END

	IF EXISTS (
			SELECT *
			FROM @InvSerialExtUpdateTrfInData
			)
	BEGIN
		UPDATE tblInvSerialExt
		SET strLocName = t.LocName
			,decQty = t.Qty
			,intStatus = t.[Status]
			,strDocID = t.DocID
			,dteUpdatedDate = t.UpdatedDate
			,lngBinID = t.BinID
		FROM @InvSerialExtUpdateTrfInData t
		WHERE strPartNumber = t.PartNumber
			AND strSerialNumber = t.SerialNumber
	END

	IF EXISTS (
			SELECT *
			FROM @InvLotExtInsertTrfInData
			)
	BEGIN
		INSERT INTO tblInvLotExt
		SELECT *
			,GETDATE()
		FROM @InvLotExtInsertTrfInData
	END

	IF EXISTS (
			SELECT *
			FROM @InvLotExtUpdateTrfInData
			)
	BEGIN
		DECLARE CURSOR1 CURSOR KEYSET SCROLL
		FOR
		SELECT Qty
			,UpdatedDate
			,PartNumber
			,LotNumber
			,LocName
			,BinID
		FROM @InvLotExtUpdateTrfInData

		OPEN CURSOR1

		IF @@CURSOR_ROWS > 0
		BEGIN
			FETCH NEXT
			FROM CURSOR1
			INTO @Qty
				,@UpdatedDate
				,@PartNumber
				,@LotNumber
				,@LocName
				,@BinID

			WHILE @@FETCH_STATUS = 0
			BEGIN
				UPDATE tblInvLotExt
				SET decQty = decQty + @Qty
					,dteUpdatedDate = @UpdatedDate
				WHERE strPartNumber = @PartNumber
					AND strLotNumber = @LotNumber
					AND strLocName = @LocName
					AND lngBinID = @BinID

				FETCH NEXT
				FROM CURSOR1
				INTO @Qty
					,@UpdatedDate
					,@PartNumber
					,@LotNumber
					,@LocName
					,@BinID
			END

			CLOSE CURSOR1

			DEALLOCATE CURSOR1
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[InsertOfflineChangeUserData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[InsertOfflineChangeUserData]    Script Date: 24-06-2020 22:59:00 ******/
CREATE PROCEDURE [dbo].[InsertOfflineChangeUserData]
 @ChangeUserData NVARCHAR(Max)
AS
BEGIN
   Truncate Table tblOfflineChangeUserDT
	-- Insert statements for procedure here
	INSERT INTO tblOfflineChangeUserDT (
		ChangeUserData
		,IsSync
		,SyncDate
		)
	VALUES (
		@ChangeUserData
		,0
		,GETDATE()
		)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertOfflineCustomerData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[InsertOfflineCustomerData]    Script Date: 06-01-2020 08:25:00 AM ******/
CREATE PROCEDURE [dbo].[InsertOfflineCustomerData] @InsertOfflineCustomerData NVARCHAR(Max)
AS
BEGIN
	-- Insert statements for procedure here
	INSERT INTO tblOfflineCustomerDT (
		CustomerData
		,IsSync
		,SyncDate
		)
	VALUES (
		@InsertOfflineCustomerData
		,0
		,GETDATE()
		)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertOfflineInvoiceData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[InsertOfflineInvoiceData]
	@InsertOfflineInvoiceData nvarchar(Max)
AS
BEGIN
    -- Insert statements for procedure here
	Insert Into tblOfflineInvoiceDT(InvoiceData,IsSync,SyncDate) values(@InsertOfflineInvoiceData,0,GETDATE()) 
END
GO
/****** Object:  StoredProcedure [dbo].[InsertOfflineOrderAndQuoteData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[InsertOfflineOrderAndQuoteData] @InvoiceData NVARCHAR(Max)
	,@DocumentType TINYINT
AS
BEGIN
	-- Insert statements for procedure here
	INSERT INTO [tblOfflineOrderAndQuoteDT] (
		InvoiceData
		,IsSync
		,SyncDate
		,DocumentType
		)
	VALUES (
		@InvoiceData
		,0
		,GETDATE()
		,@DocumentType
		)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertOfflineReceiptsData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[InsertOfflineReceiptsData]    Script Date: 06-01-2020 08:25:00 AM ******/
CREATE PROCEDURE [dbo].[InsertOfflineReceiptsData] 
@InsertOfflineReceiptsData NVARCHAR(Max),
@ReceiptActionType int = 0
AS
BEGIN
	-- Insert statements for procedure here
	INSERT INTO tblOfflineReceiptsDT (
		ReceiptsData
		,IsSync
		,SyncDate
		,ReceiptActionType
		)
	VALUES (
		@InsertOfflineReceiptsData
		,0
		,GETDATE()
		,@ReceiptActionType
		)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertOrderDocDADTDataForDA]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[InsertOrderDocDADTDataForDA] (
	@DocNumber NVARCHAR(50)
	,@tblOrderDocDADTData OrderDocDADTTableTypeDA READONLY
	,@tblOrderDocDADTAndSerialNumberTracking OrderDocDADTAndSerialNumberTrackingTableType READONLY
	,@OrderDocDADTDataBOMSerialData tblOrderDocDADTBOMSerialTableType READONLY
	,@SerialNumberTrackingData AS SerialNumberTrackingTableType READONLY
	,@InvLotExtUpdateData AS InvLotExtTableType READONLY
	,@InvLotExtInsertData AS InvLotExtTableType READONLY
	,@InvSerialExtUpdateData AS InvSerialExtTableType READONLY
	,@InvSerialExtInsertData AS InvSerialExtTableType READONLY
	)
AS
BEGIN
	INSERT INTO dbo.tblOrderDocDADT (
		strOrdDADocID
		,intLineNo
		,strPartNumber
		,strLocation
		,strPartDesc
		,decQty
		,decQtyRemain
		,strUnit
		,decStockQty
		,decStockQtyRemain
		,strStockUnit
		,intType
		,decPriceEaExc
		,decLineTotExc
		,decLineTaxAmt
		,strTaxCode
		,decPriceEaInc
		,decLineTotInc
		,imgTaxObj
		,strCurrency
		,bitIsForeign
		,decPriceEaExcF
		,decLineTotExcF
		,decLineTaxAmtF
		,decEaIncTaxF
		,decTotIncTaxF
		,strInvField1
		,strInvField2
		,strInvField3
		,strInvField4
		,strInvField5
		,strInvField6
		,strLineField1
		,strLineField2
		,strLineField3
		,strLineField4
		,strLineField5
		,strLineField6
		,strLineField7
		,strLineField8
		,strLineField9
		,strLineField10
		,strLineField11
		,strLineField12
		,decLineDiscPerc
		,decLineDiscAmt
		,decLineDiscAmtF
		,bitDiscountTax
		,decCOGS
		,strSalesName
		,decItemWeight
		,decVolumetricWeight
		,bitContainerItem
		,bitDelCost
		,intBillingMethod
		,decBuyoutCost
		,uidTransactionFieldID
		,strPartExtendedDesc
		,decDAQtyRemain
		,decStockDAQtyRemain
		,bitFromGRV
		,strGRVDocNum
		,intGRVLineNo
		)
	SELECT OrdDADocID
		,[LineNo]
		,PartNumber
		,Location
		,PartDesc
		,Qty
		,QtyRemaining
		,Unit
		,StockQty
		,StockQtyRemain
		,StockUnit
		,[Type]
		,PriceEaExc
		,LineTotExc
		,LineTaxAmt
		,TaxCode
		,PriceEaInc
		,LineTotInc
		,TaxObj
		,Currency
		,IsForeign
		,PriceEaExcF
		,LineTotExcF
		,LineTaxAmtF
		,EaIncTaxF
		,TotIncTaxF
		,InvField1
		,InvField2
		,InvField3
		,InvField4
		,InvField5
		,InvField6
		,LineField1
		,LineField2
		,LineField3
		,LineField4
		,LineField5
		,LineField6
		,LineField7
		,LineField8
		,LineField9
		,LineField10
		,LineField11
		,LineField12
		,LineDiscPerc
		,LineDiscAmt
		,LineDiscAmtF
		,DiscountTax
		,COGS
		,SalesName
		,ItemWeight
		,VolumetricWeight
		,ContainerItem
		,DelCost
		,BillingMethod
		,BuyoutCost
		,TransactionFieldID
		,PartExtendedDesc
		,Qty
		,StockQty
		,BitFromGRV
		,StrGRVDocNum
		,IntGRVLineNo
	FROM @tblOrderDocDADTData;

	INSERT INTO tblOrderDocDADTPrj (
		strOrdDADocID
		,intLineNo
		,strProjNumber
		)
	SELECT @DocNumber
		,LineNumber
		,ProjNumber
	FROM @tblOrderDocDADTData
	WHERE LEN(RTRIM(ISNULL(ProjNumber, ''))) > 0;

	IF EXISTS (
			SELECT TOP 1 1
			FROM @tblOrderDocDADTAndSerialNumberTracking
			)
BEGIN
		INSERT INTO tblOrderDocDADTSerial (
			strOrdDADocID
			,intLineNo
			,strSerialNumber
			,decQty
			,strUnit
			,bitExpiryDate
			,dteExpiryDate
			,intSerialLotType
			,lngBinID
			)
		SELECT @DocNumber
			,LineNumber
			,SerialNumber
			,[Quantity]
			,Unit
			,IsExpiryDateExists
			,ExpiryDate
			,SerialLotType
			,BinID
		FROM @tblOrderDocDADTAndSerialNumberTracking;
END

	---- NOTE : Only applicable if Foreign key is not added in tblInvoiceDocDTBOMSerial ----
	DELETE FROM tblOrderDocDADTBOMSerial WHERE strOrdDocDAID IN (SELECT DISTINCT OrdDocDAID FROM @OrderDocDADTDataBOMSerialData)
	----
	
	INSERT INTO tblOrderDocDADTBOMSerial
	SELECT *
	FROM @OrderDocDADTDataBOMSerialData

	INSERT INTO tblSerialNumberTracking (
		strPartNumber
		,strSerialNumber
		,strUserName
		,dteUpdatedDate
		,intType
		,strDocID
		,intLineNo
		,decQty
		,strLocation
		,intStatus
		,bitExpiryDate
		,dteExpiryDate
		,lngBinID
		)
	SELECT PartNumber
		,SerialNumber
		,UserName
		,UpdatedDate
		,[Type]
		,DocID
		,LineNumber
		,[Quantity]
		,[Location]
		,[Status]
		,IsExpiryDateExists
		,ExpiryDate
		,BinID
	FROM @tblOrderDocDADTAndSerialNumberTracking;

	SELECT ROW_NUMBER() OVER (
			ORDER BY LineNumber
			) AS ID
		,*
	INTO #tmp
	FROM @tblOrderDocDADTAndSerialNumberTracking;

	DECLARE @PartNumber [NVARCHAR] (100);
	DECLARE @LotNumber [NVARCHAR] (200);
	DECLARE @LocName [NVARCHAR] (20);
	DECLARE @Qty [DECIMAL] (
		18
		,0
		);
	DECLARE @bitExpiryDate BIT;
	DECLARE @dteExpiryDate [SMALLDATETIME];
	DECLARE @UpdatedDate [SMALLDATETIME];
	DECLARE @SerialLotType INT;
	DECLARE @DocID [NVARCHAR] (100);
	DECLARE @bitDimensionExists BIT;
	DECLARE @Dimension NVARCHAR(MAX);
	DECLARE @MinID AS INT = 0;
	DECLARE @MaxID AS INT = 0;
	DECLARE @BinId AS BIGINT;
	DECLARE @SerialLotQty [DECIMAL] (
		18
		,0
		);

	SELECT @MinID = MIN(ID)
	FROM #tmp;

	SELECT @MaxID = MAX(ID)
	FROM #tmp;

	WHILE (@MinID <= @MaxID)
BEGIN
		SELECT @PartNumber = PartNumber
			,@LotNumber = [SerialNumber]
			,@LocName = [Location]
			,@Qty = [Quantity]
			,@bitExpiryDate = IsExpiryDateExists
			,@dteExpiryDate = ExpiryDate
			,@UpdatedDate = UpdatedDate
			,@SerialLotType = SerialLotType
			,@DocID = DocID
			,@bitDimensionExists = [IsDimensionExists]
			,@Dimension = Dimension
			,@BinId=BinID
			,@SerialLotQty = SerialLotQty
		FROM #tmp
		WHERE ID = @MinID;

--		Duplicate Adjustment : Same Adjustment done using @InvLotExtUpdateData, @InvLotExtInsertData, @InvSerialExtUpdateData, @InvSerialExtInsertData
--		IF @SerialLotType = 1
--		BEGIN
--			IF EXISTS (
--					SELECT TOP 1 1
--					FROM tblInvLotExt
--					WHERE strPartNumber = @PartNumber
--						AND strLotNumber = @LotNumber
--						AND strLocName = @LocName
--						AND lngBinId= @BinId
--					)
--BEGIN
--				UPDATE tblInvLotExt
--				SET decQty += @SerialLotQty
--				WHERE strPartNumber = @PartNumber
--					AND strLotNumber = @LotNumber
--					AND strLocName = @LocName
--					AND lngBinId = @BinId
--			END;
--			ELSE
--BEGIN
--				INSERT INTO tblInvLotExt (
--					strPartNumber
--					,strLotNumber
--					,strLocName
--					,decQty
--					,bitExpiryDate
--					,dteExpiryDate
--					,dteUpdatedDate
--					,lngBinID
--					,dteRowUpdated
--					)
--				VALUES (
--					@PartNumber
--					,@LotNumber
--					,@LocName
--					,@SerialLotQty
--					,@bitExpiryDate
--					,@dteExpiryDate
--					,@UpdatedDate
--					,@BinId
--					,GetDate()
--					);
--			END;
--		END;
--		ELSE
--		BEGIN
--			IF EXISTS (
--					SELECT TOP 1 1
--					FROM tblInvSerialExt
--					WHERE strPartNumber = @PartNumber
--						AND strSerialNumber = @LotNumber
--					)
--BEGIN
--				UPDATE tblInvSerialExt
--				SET decQty = @SerialLotQty
--					,strLocName = @LocName
--					,intStatus = 2
--					,strDocID = @DocNumber
--					,dteUpdatedDate = @UpdatedDate
--					,lngBinId= @BinId
--				WHERE strPartNumber = @PartNumber
--					AND strSerialNumber = @LotNumber;
--			END;
--			ELSE
--BEGIN
--				INSERT INTO tblInvSerialExt (
--					strPartNumber
--					,strSerialNumber
--					,strLocName
--					,decQty
--					,intStatus
--					,strDocID
--					,dteUpdatedDate
--					,bitDimensionExist
--					,strDimension
--					,lngBinID
--					,dteRowUpdated
--					)
--				VALUES (
--					@PartNumber
--					,@LotNumber
--					,@LocName
--					,@SerialLotQty
--					,2
--					,@DocNumber
--					,@UpdatedDate
--					,@bitDimensionExists
--					,@Dimension
--					,@BinId
--					,GetDate()
--					);
--			END;

--		END;

		SET @MinID = @MinID + 1;
END

	IF EXISTS (
				SELECT *
				FROM @InvLotExtUpdateData
				)
		BEGIN
			UPDATE tblInvLotExt
			SET decQty = decQty + t.Qty
				,dteUpdatedDate = t.UpdatedDate
			FROM (select PartNumber,LotNumber,LocName,BinID,UpdatedDate,Sum(isnull(Qty,0)) as Qty from @InvLotExtUpdateData group by PartNumber,LotNumber,LocName,BinID,UpdatedDate) t
			WHERE strPartNumber = t.PartNumber
				AND strLotNumber = t.LotNumber
				AND strLocName = t.LocName
				AND lngBinID = t.BinID
		END

	IF EXISTS (
			SELECT *
			FROM @InvLotExtInsertData
			)
	BEGIN
		INSERT INTO tblInvLotExt
		SELECT *
			,GETDATE()
		FROM @InvLotExtInsertData
	END

	IF EXISTS (
			SELECT *
			FROM @InvSerialExtUpdateData
			)
	BEGIN
		UPDATE tblInvSerialExt
		SET strLocName = t.LocName
			,decQty = t.Qty
			,intStatus = t.[Status]
			,strDocID = t.DocID
			,dteUpdatedDate = t.UpdatedDate
			,lngBinID = t.BinID
		FROM @InvSerialExtUpdateData t
		WHERE strPartNumber = t.PartNumber
			AND strSerialNumber = t.SerialNumber
			--AND strLocName = t.LocName				
	END

	IF EXISTS (
			SELECT *
			FROM @InvSerialExtInsertData
			)
	BEGIN
		INSERT INTO tblInvSerialExt
		SELECT *
			,GETDATE()
		FROM @InvSerialExtInsertData
	END
END
GO
/****** Object:  StoredProcedure [dbo].[InsertOrderDocDADTDataForDAMobile]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[InsertOrderDocDADTDataForDAMobile] (    
  @DocNumber NVARCHAR(50),
  @tblOrderDocDADTData OrderDocDADTTableTypeDA READONLY,
  @tblOrderDocDADTAndSerialNumberTracking OrderDocDADTAndSerialNumberTrackingTableType READONLY,
  @tblDataDADTBin AS GRVDocDTBinTableType READONLY
 )  
AS  
BEGIN  
 INSERT INTO dbo.tblOrderDocDADT (  
    strOrdDADocID  
    ,intLineNo  
    ,strPartNumber  
    ,strLocation  
    ,strPartDesc  
    ,decQty  
    ,decQtyRemain  
    ,strUnit  
    ,decStockQty  
    ,decStockQtyRemain  
    ,strStockUnit  
    ,intType  
    ,decPriceEaExc  
    ,decLineTotExc  
    ,decLineTaxAmt  
    ,strTaxCode  
    ,decPriceEaInc  
    ,decLineTotInc  
    ,imgTaxObj  
    ,strCurrency  
    ,bitIsForeign  
    ,decPriceEaExcF  
    ,decLineTotExcF  
    ,decLineTaxAmtF  
    ,decEaIncTaxF  
    ,decTotIncTaxF  
    ,strInvField1  
    ,strInvField2  
    ,strInvField3  
    ,strInvField4  
    ,strInvField5  
    ,strInvField6  
    ,strLineField1  
    ,strLineField2  
    ,strLineField3  
    ,strLineField4  
    ,strLineField5  
    ,strLineField6  
    ,strLineField7  
    ,strLineField8  
    ,strLineField9  
    ,strLineField10  
    ,strLineField11  
    ,strLineField12  
    ,decLineDiscPerc  
    ,decLineDiscAmt  
    ,decLineDiscAmtF  
    ,bitDiscountTax  
    ,decCOGS  
    ,strSalesName  
    ,decItemWeight  
    ,decVolumetricWeight  
    ,bitContainerItem  
    ,bitDelCost  
    ,intBillingMethod  
    ,decBuyoutCost  
    ,uidTransactionFieldID  
    ,strPartExtendedDesc  
	,uidContainerItem
	,decDAQtyRemain
	,decStockDAQtyRemain
	,bitFromGRV
	,strGRVDocNum
	,intGRVLineNo
    )  
   SELECT OrdDADocID  
    ,[LineNo]  
    ,PartNumber  
    ,Location  
    ,PartDesc  
    ,Qty  
    ,QtyRemaining  
    ,Unit  
    ,StockQty  
    ,StockQtyRemain  
    ,StockUnit  
    ,[Type]  
    ,PriceEaExc  
    ,LineTotExc  
    ,LineTaxAmt  
    ,TaxCode  
    ,PriceEaInc  
    ,LineTotInc  
    ,TaxObj  
    ,Currency  
    ,IsForeign  
    ,PriceEaExcF  
    ,LineTotExcF  
    ,LineTaxAmtF  
    ,EaIncTaxF  
    ,TotIncTaxF  
    ,InvField1  
    ,InvField2  
    ,InvField3  
    ,InvField4  
    ,InvField5  
    ,InvField6  
    ,LineField1  
    ,LineField2  
    ,LineField3  
    ,LineField4  
    ,LineField5  
    ,LineField6  
    ,LineField7  
    ,LineField8  
    ,LineField9  
    ,LineField10  
    ,LineField11  
    ,LineField12  
    ,LineDiscPerc  
    ,LineDiscAmt  
    ,LineDiscAmtF  
    ,DiscountTax  
    ,COGS  
    ,SalesName  
    ,ItemWeight  
    ,VolumetricWeight  
    ,ContainerItem  
    ,DelCost  
    ,BillingMethod  
    ,BuyoutCost  
    ,TransactionFieldID  
    ,PartExtendedDesc 
	,NULL
	,QtyRemaining
	,StockQtyRemain
	,0
	,NULL
	,NULL
   FROM @tblOrderDocDADTData;  

   INSERT INTO tblOrderDocDADTPrj (  
    strOrdDADocID  
    ,intLineNo  
    ,strProjNumber  
    )  
   SELECT @DocNumber  
    ,LineNumber  
    ,ProjNumber  
   FROM @tblOrderDocDADTData  
   WHERE LEN(RTRIM(ISNULL(ProjNumber, ''))) > 0;  

   IF EXISTS (  
   SELECT TOP 1 1  
   FROM @tblOrderDocDADTAndSerialNumberTracking  
   )  
   BEGIN  
    INSERT INTO tblOrderDocDADTSerial (  
     strOrdDADocID  
     ,intLineNo  
     ,strSerialNumber  
     ,decQty  
     ,strUnit  
     ,bitExpiryDate  
     ,dteExpiryDate  
     ,intSerialLotType  
     ,lngBinId
     )  
    SELECT @DocNumber  
     ,LineNumber  
     ,SerialNumber  
     ,[Quantity]  
     ,Unit  
     ,IsExpiryDateExists  
     ,ExpiryDate  
     ,SerialLotType 
     ,BinId 
    FROM @tblOrderDocDADTAndSerialNumberTracking;  
  END  

  INSERT INTO tblSerialNumberTracking (  
  strPartNumber  
  ,strSerialNumber  
  ,strUserName  
  ,dteUpdatedDate  
  ,intType  
  ,strDocID  
  ,intLineNo  
  ,decQty  
  ,strLocation  
  ,intStatus  
  ,bitExpiryDate  
  ,dteExpiryDate
  ,lngBinId
  )  
 SELECT PartNumber  
  ,SerialNumber  
  ,UserName  
  ,UpdatedDate  
  ,Type  
  ,DocID  
  ,LineNumber  
  ,[Quantity]  
  ,[Location] 
  ,[Status]  
  ,IsExpiryDateExists  
  ,ExpiryDate
  ,BinId
 FROM @tblOrderDocDADTAndSerialNumberTracking;  


   SELECT  ROW_NUMBER() OVER ( ORDER BY LineNumber ) AS ID , *
   INTO    #tmp
   FROM    @tblOrderDocDADTAndSerialNumberTracking;

  DECLARE @PartNumber [NVARCHAR](100);
        DECLARE @LotNumber [NVARCHAR](200);
        DECLARE @LocName [NVARCHAR](20);
        DECLARE @Qty [DECIMAL](18, 2);
        DECLARE @bitExpiryDate BIT;
        DECLARE @dteExpiryDate [SMALLDATETIME];
        DECLARE @UpdatedDate [SMALLDATETIME];
        DECLARE @SerialLotType [INT];
        DECLARE @DocID [NVARCHAR](100);
        DECLARE @bitDimensionExists BIT;
        DECLARE @Dimension NVARCHAR(MAX);
        DECLARE @MinID AS INT = 0;
        DECLARE @MaxID AS INT = 0;
  DECLARE @BinId AS BIGINT = 0;


  Select @MinID = Min(ID) from #tmp
  Select @MaxID = Max(ID) from #tmp

  WHILE (@MinID <= @MaxID)
  BEGIN

   SELECT  @PartNumber = PartNumber ,
     @LotNumber = [SerialNumber] ,
     @LocName = Location ,
     @Qty = [Quantity] ,
     @bitExpiryDate = IsExpiryDateExists ,
     @dteExpiryDate = ExpiryDate ,
     @UpdatedDate = UpdatedDate ,
     @SerialLotType = [SerialLotType] ,
     @DocID = DocID ,
     @bitDimensionExists = [IsDimensionExists] ,
        @Dimension = Dimension,
     @BinId = BinId
        FROM #tmp
     WHERE ID = @MinID;


   --IF EXISTS (  
   --      SELECT TOP 1 1  
   --      FROM tblInvExtBin  
   --      WHERE strPartNumber = @PartNumber  
   --       AND strLocName = @LocName 
   -- AND lngBinID = @BinId 
   --      )  
   --       BEGIN  
   --      UPDATE tblInvExtBin  
   --      SET decAvail -= @Qty,decOnHand -= @Qty
   --      WHERE strPartNumber = @PartNumber  
   --       AND strLocName = @LocName
   -- AND lngBinID = @BinId;  
   --       END;  
   --   ELSE  
   --      BEGIN  
   --     INSERT INTO tblInvExtBin (  
   --      strPartNumber  
   --      ,strLocName  
   --      ,lngBinID  
   --      ,decAvail  
   --      ,decAlloc  
   --      ,decOnHand  
   --      ,decMaximumQty 
   --      , bitAllowed
		 --,bitDefault 
   --      )  
   --     VALUES (  
   --      @PartNumber  
   --      ,@LotNumber
   --      ,@LocName  
   --      ,-(@Qty)
   --      ,@bitExpiryDate  
   --      ,@dteExpiryDate  
   --      ,@UpdatedDate  
   --      ,@BinId
   --      );  
   --      END; 


     IF @SerialLotType = 1
                    BEGIN
      IF EXISTS (  
        SELECT TOP 1 1  
        FROM tblInvLotExt  
        WHERE strPartNumber = @PartNumber  
         AND strLotNumber = @LotNumber  
         AND strLocName = @LocName  
		 AND lngBinID = @BinId 
        )  
         BEGIN  
        UPDATE tblInvLotExt  
        SET decQty -= @Qty
        WHERE strPartNumber = @PartNumber  
         AND strLotNumber = @LotNumber  
         AND strLocName = @LocName
		 AND lngBinID = @BinId;  
         END;  
      ELSE  
         BEGIN  
        INSERT INTO tblInvLotExt (  
         strPartNumber  
         ,strLotNumber  
         ,strLocName  
         ,decQty  
         ,bitExpiryDate  
         ,dteExpiryDate  
         ,dteUpdatedDate 
         , lngBinId 
         )  
        VALUES (  
         @PartNumber  
         ,@LotNumber
         ,@LocName  
         ,-(@Qty)
         ,@bitExpiryDate  
         ,@dteExpiryDate  
         ,@UpdatedDate  
         ,@BinId
         );  
         END; 
      END
    ELSE
                    BEGIN
     IF EXISTS (  
       SELECT TOP 1 1  
       FROM tblInvSerialExt  
       WHERE strPartNumber = @PartNumber  
        AND strSerialNumber = @LotNumber  
		AND lngBinID = @BinId
       )  
        BEGIN  
       UPDATE tblInvSerialExt  
       SET --decQty += @Qty    
        decQty -= @Qty  
        ,strLocName = @LocName  
        ,intStatus = 2  
        ,strDocID = @DocNumber  
        ,dteUpdatedDate = @UpdatedDate  
        ,lngBinId = @BinId
       WHERE strPartNumber = @PartNumber  
        AND strSerialNumber = @LotNumber;  
        END;  
     ELSE  
        BEGIN  
       INSERT INTO tblInvSerialExt (  
        strPartNumber  
        ,strSerialNumber  
        ,strLocName  
        ,decQty  
        ,intStatus  
        ,strDocID  
        ,dteUpdatedDate  
        ,bitDimensionExist  
        ,strDimension  
        ,lngBinId
        )  
       VALUES (  
        @PartNumber  
        ,@LotNumber  
        ,@LocName  
        ,-(@Qty)  
        ,2  
        ,@DocNumber  
        ,@UpdatedDate  
        ,@bitDimensionExists  
        ,@Dimension
        ,@BinId  
        );  
         END;  
     END

   Set @MinID = @MinID + 1  
  END
  
  INSERT INTO tblOrderDocDADTBin(strOrdDADocID,intLineNo,lngBinID,decQty) SELECT DocId,[LineNo],BinID,Qty FROM @tblDataDADTBin
END
GO
/****** Object:  StoredProcedure [dbo].[InsertOrderDocuments]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[InsertOrderDocuments]
    (
      @OrdDADocID AS NVARCHAR(50) ,
      @InvTrackID AS BIGINT ,
      @JourID AS BIGINT ,
      @SystemDate AS SMALLDATETIME ,
      @JournalDate AS SMALLDATETIME ,
      @Required AS SMALLDATETIME ,
      @UserName AS NVARCHAR(20) ,
      @CustName AS NVARCHAR(50) ,
      @SoldTo AS NVARCHAR(500) ,
      @ShipTo AS NVARCHAR(500) ,
	  @DiscountPercentage AS MONEY ,
	  @SubTotal AS MONEY ,
	  @DiscountAmount AS MONEY ,
	  @DeliveryCost AS MONEY ,
      @VAT AS MONEY ,
      @Total AS MONEY ,
      @IsFromSO AS BIT ,
      @OrdDocID AS NVARCHAR(50) ,
      @Notes AS NVARCHAR(MAX) ,
      @Printed AS BIT ,
      @Emailed AS BIT ,
      @Cleared AS BIT ,
      @Currency AS NVARCHAR(3) ,
      @IsForeign AS BIT ,
      @SubTotalF AS MONEY ,
	  @DiscountAmountF AS MONEY ,
	  @DeliveryCostF AS MONEY ,
      @VATF AS MONEY ,
      @TotalF AS MONEY ,
      @Exchange AS DECIMAL ,
      @Term AS NVARCHAR(50) ,
      @Dept AS INT ,
      @Field1 AS NVARCHAR(100) ,
      @Field2 AS NVARCHAR(100) ,
      @Field3 AS NVARCHAR(100) ,
      @Field4 AS NVARCHAR(100) ,
      @Field5 AS NVARCHAR(100) ,
      @Field6 AS NVARCHAR(100) ,
      @Field7 AS NVARCHAR(100) ,
      @Field8 AS NVARCHAR(100) ,
      @Field9 AS NVARCHAR(100) ,
      @Field10 AS NVARCHAR(100) ,
      @Field11 AS NVARCHAR(100) ,
      @Field12 AS NVARCHAR(100) ,
      @Field13 AS DATETIME ,
      @Field14 AS DATETIME ,
      @SubFormatted AS NVARCHAR(50) ,
	  @DiscountFormatted AS NVARCHAR(50) ,
	  @DeliveryCostFormatted AS NVARCHAR(50) ,
      @VATFormatted AS NVARCHAR(50) ,
      @TotalFormatted AS NVARCHAR(50) ,
      @OrdFQDocID AS NVARCHAR(50) ,
      @StatusTypeCode AS NVARCHAR(20) ,
      @IsBookmark AS BIT ,
      @AddInfo AS NVARCHAR(50) ,
      @Reference AS NVARCHAR(50) ,
      @SalesName AS NVARCHAR(50) ,
      @TotalWeight AS MONEY ,
      @TotalVolWeight AS MONEY ,
      @SOReasonCode AS NVARCHAR(20) ,
      @DelMethodCode AS NVARCHAR(50) ,
      @RevisionNumber AS INT ,
      @StoreNumber AS NVARCHAR(50) ,
      @EDI AS NVARCHAR(50)
    )
AS
    BEGIN

        INSERT  INTO [dbo].[tblOrderDocDA]
                ( strOrdDADocID ,			
                  lngInvTrackID ,
                  lngJourID ,
                  dteSystemDate ,
                  dteJournalDate ,
                  dteRequired ,
                  strUserName ,
                  strCustName ,
                  strSoldTo ,
                  strShipTo ,
                  decSubTotal ,
                  decVAT ,
                  decTotal ,
                  bitFromSO ,
                  strOrdDocID ,
                  strNotes ,
                  bitPrinted ,
                  bitEmailed ,
                  bitCleared ,
                  strCurrency ,
                  bitIsForeign ,
                  decSubTotalF ,
                  decVATF ,
                  decTotalF ,
                  decExchange ,
                  strTerm ,
                  intDept ,
                  strField1 ,
                  strField2 ,
                  strField3 ,
                  strField4 ,
                  strField5 ,
                  strField6 ,
                  strField7 ,
                  strField8 ,
                  strField9 ,
                  strField10 ,
                  strField11 ,
                  strField12 ,
                  dteField13 ,
                  dteField14 ,
                  strSubFormated ,
                  strVATFormatted ,
                  strTotFormatted ,
                  decDiscPerc ,
                  decDiscAmt ,
                  decDiscAmtF ,
                  strDiscFormatted ,
                  strOrdFQDocID ,
                  strStatusTypeCode ,
                  bitBookmark ,
                  strAddInfo ,
                  strReference ,
                  strSalesName ,
                  decTotalWeight ,
                  decTotalVolWeight ,
                  strSOReasonCode ,
                  decDeliveryCost ,
                  decDeliveryCostF ,
                  strDeliveryCostFormatted ,
                  strDelMethodCode ,
                  intRevisionNumber ,
                  strStoreNumber ,
                  strEDI
	            )
        VALUES  ( @OrdDADocID ,
                  @InvTrackID ,
                  @JourID ,
                  @SystemDate ,
                  @JournalDate ,
                  @Required ,
                  @UserName ,
                  @CustName ,
                  @SoldTo ,
                  @ShipTo ,
                  @SubTotal ,
                  @VAT ,
                  @Total ,
                  @IsFromSO ,
                  @OrdDocID ,
                  @Notes ,
                  @Printed ,
                  @Emailed ,
                  @Cleared ,
                  @Currency ,
                  @IsForeign ,
                  @SubTotalF ,
                  @VATF ,
                  @TotalF ,
                  @Exchange ,
                  @Term ,
                  @Dept ,
                  @Field1 ,
                  @Field2 ,
                  @Field3 ,
                  @Field4 ,
                  @Field5 ,
                  @Field6 ,
                  @Field7 ,
                  @Field8 ,
                  @Field9 ,
                  @Field10 ,
                  @Field11 ,
                  @Field12 ,
                  @Field13 ,
                  @Field14 ,
                  @SubFormatted ,
                  @VATFormatted ,
                  @TotalFormatted ,
                  @DiscountPercentage ,
                  @DiscountAmount ,
                  @DiscountAmountF ,
                  @DiscountFormatted ,
                  @OrdFQDocID ,
                  @StatusTypeCode ,
                  @IsBookmark ,
                  @AddInfo ,
                  @Reference ,
                  @SalesName ,
                  @TotalWeight ,
                  @TotalVolWeight ,
                  @SOReasonCode ,
                  @DeliveryCost ,
                  @DeliveryCostF ,
                  @DeliveryCostFormatted ,
                  @DelMethodCode ,
                  @RevisionNumber ,
                  @StoreNumber ,
                  @EDI 
	            )

    END

GO
/****** Object:  StoredProcedure [dbo].[InsertPOApprovalTracking]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[InsertPOApprovalTracking]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[InsertPOApprovalTracking]
	@ReqQuoteDocID Varchar(20),
	@NewPODocID Varchar(20),
	@DocTotalIncl money,
	@DocCreatorUsername Varchar(50),
	@ApproverUsername Varchar(50),
	@DocCreationDate datetime,
	@DateofApproval datetime,
	@DeclineReasonCodeText varchar(max),
	@ShowStatus bit
AS
BEGIN
	SET NOCOUNT ON;
	IF(@DeclineReasonCodeText <> 'Approved')
	BEGIN
		SET @NewPODocID = REPLACE(CONVERT(varchar, GETDATE(), 101), '/', '') + REPLACE(CONVERT(varchar, GETDATE(), 108), ':', '')
	END
	INSERT INTO tblPOApprovalTracking VALUES (@ReqQuoteDocID, @NewPODocID, @DocTotalIncl, @DocCreatorUsername, @ApproverUsername, @DocCreationDate, @DateofApproval, @DeclineReasonCodeText, @ShowStatus)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertPOSDrsDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[InsertPOSDrsDT] (
	@SessionID UNIQUEIDENTIFIER
	,@InvDocID NVARCHAR(50)
	,@CustName NVARCHAR(50)
	,@Cash MONEY
	,@Ck MONEY
	,@CC MONEY
	,@GiftCoup MONEY
	,@Account MONEY
	,@Drop MONEY
	,@DropUser NVARCHAR(20)
	,@OvSht MONEY
	,@VendPayID INT = NULL
	,@PaymentTypeName NVARCHAR(50) = NULL
	,@Comment NVARCHAR(1000) = NULL
	)
AS
BEGIN
	INSERT INTO tblPOSDrsDT (
		uidSessionID
		,dteTimeStamp
		,strInvDocID
		,strCustName
		,decCash
		,decCk
		,decCC
		,decGiftCoup
		,decAccount
		,decDrop
		,strDropUser
		,decOvSht
		,intVendPayID
		,strPaymentTypeName
		,strComment
		)
	VALUES (
		@SessionID
		,GetDate()
		,@InvDocID
		,@CustName
		,@Cash
		,@Ck
		,@CC
		,@GiftCoup
		,@Account
		,@Drop
		,@DropUser
		,@OvSht
		,@VendPayID
		,@PaymentTypeName
		,@Comment
		)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertPOSInvoiceDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[InsertPOSInvoiceDetails]    Script Date: 09-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[InsertPOSInvoiceDetails] (
	@InvoiceDocSplitPmtData AS InvoiceDocSplitPmtTableType READONLY
	,@InvoiceDocDTData AS InvoiceDocDTTableType READONLY
	,@InvDocID AS VARCHAR(50)
	,@TotalWeight AS DECIMAL
	,@TotalVolWeight AS DECIMAL
	,@InvoiceDocDTSerialData AS InvoiceDocDTSerialTableType READONLY
	,@InvoiceDocDTBOMSerialData AS InvoiceDocDTBOMSerialTableType READONLY
	,@SerialNumberTrackingData AS SerialNumberTrackingTableType READONLY
	,@InvLotExtUpdateData AS InvLotExtTableType READONLY
	,@InvLotExtInsertData AS InvLotExtTableType READONLY
	,@InvSerialExtUpdateData AS InvSerialExtTableType READONLY
	,@InvSerialExtInsertData AS InvSerialExtTableType READONLY
	,@IsInvoiceConvert AS BIT
	)
AS
BEGIN
	INSERT INTO tblInvoiceDocDT (
		strInvDocID
		,intLineNo
		,strPartNumber
		,strLocation
		,strPartDesc
		,decQty
		,strUnit
		,intType
		,decPriceEaExc
		,decLineTotExc
		,decLineTaxAmt
		,decPriceEaInc
		,decLineTotInc
		,strTaxCode
		,imgTaxObj
		,strCurrency
		,bitIsForeign
		,decPriceEaExcF
		,decLineTotExcF
		,decLineTaxAmtF
		,decEaIncTaxF
		,decTotIncTaxF
		,strInvField1
		,strInvField2
		,strInvField3
		,strInvField4
		,strInvField5
		,strInvField6
		,strLineField1
		,strLineField2
		,strLineField3
		,strLineField4
		,strLineField5
		,strLineField6
		,strLineField7
		,strLineField8
		,strLineField9
		,strLineField10
		,strLineField11
		,strLineField12
		,decLineDiscPerc
		,decLineDiscAmt
		,decLineDiscAmtF
		,bitDiscountTax
		,decStockQty
		,strStockUnit
		,decStandardCost
		,decLastPPUnit
		,strSalesName
		,decCOGS
		,decSOQty
		,decSOQtyRemain
		,strPartExtendedDesc
		,decItemWeight
		,decVolumetricWeight
		,bitContainerItem
		,bitDelCost
		,intBillingMethod
		,uidTransactionFieldID
		,blnIsCashPrice
		)
	--,uidContainerItem
	--decUsedQty
	SELECT InvDocID
		,[LineNo]
		,PartNumber
		,Location
		,PartDesc
		,Qty
		,Unit
		,Type
		,PriceEaExc
		,LineTotExc
		,LineTaxAmt
		,PriceEaInc
		,LineTotInc
		,TaxCode
		,TaxObj
		,Currency
		,IsForeign
		,PriceEaExcF
		,LineTotExcF
		,LineTaxAmtF
		,EaIncTaxF
		,TotIncTaxF
		,InvField1
		,InvField2
		,InvField3
		,InvField4
		,InvField5
		,InvField6
		,LineField1
		,LineField2
		,LineField3
		,LineField4
		,LineField5
		,LineField6
		,LineField7
		,LineField8
		,LineField9
		,LineField10
		,LineField11
		,LineField12
		,LineDiscPerc
		,LineDiscAmt
		,LineDiscAmtF
		,DiscountTax
		,StockQty
		,StockUnit
		,StandardCost
		,LastPPUnit
		,SalesName
		,COGS
		,SOQty
		,SOQtyRemain
		,PartExtendedDesc
		,ItemWeight
		,VolumetricWeight
		,ContainerItem
		,DelCost
		,BillingMethod
		,TransactionFieldID
		,ISNULL(IsCashPrice, 0)
	--[UsedQty] [money] NULL
	FROM @InvoiceDocDTData

	INSERT INTO tblInvoiceDocSplitPmt
	SELECT *
	FROM @InvoiceDocSplitPmtData

	INSERT INTO tblInvoiceDocDTSerial
	SELECT *
	FROM @InvoiceDocDTSerialData

	INSERT INTO tblInvoiceDocDTBOMSerial
	SELECT *
	FROM @InvoiceDocDTBOMSerialData

	IF @IsInvoiceConvert = 0
	BEGIN
		IF EXISTS (
				SELECT *
				FROM @SerialNumberTrackingData
				)
		BEGIN
			INSERT INTO tblSerialNumberTracking (
				strPartNumber
				,strSerialNumber
				,strUserName
				,dteUpdatedDate
				,intType
				,strDocID
				,intLineNo
				,decQty
				,strLocation
				,intStatus
				,bitExpiryDate
				,dteExpiryDate
				,lngBinID
				)
			SELECT PartNumber
				,SerialNumber
				,UserName
				,UpdatedDate
				,SerialLotType
				,DocID
				,[LineNo]
				,Qty
				,Location
				,[Status]
				,IsExpiryDate
				,ExpiryDate
				,BinID
			FROM @SerialNumberTrackingData
		END

		IF EXISTS (
				SELECT *
				FROM @InvLotExtUpdateData
				)
		BEGIN
			UPDATE tblInvLotExt
			SET decQty = decQty +  (select sum(Qty) from @InvLotExtUpdateData t1 WHERE strPartNumber = t1.PartNumber AND strLotNumber = t1.LotNumber AND strLocName = t1.LocName AND lngBinID = t1.BinID) -- t.Qty
				,dteUpdatedDate = t.UpdatedDate
			FROM @InvLotExtUpdateData t
			WHERE strPartNumber = t.PartNumber
				AND strLotNumber = t.LotNumber
				AND strLocName = t.LocName
				AND lngBinID = t.BinID
		END

		IF EXISTS (
				SELECT *
				FROM @InvLotExtInsertData
				)
		BEGIN
			INSERT INTO tblInvLotExt
			SELECT *
				,GETDATE()
			FROM @InvLotExtInsertData
		END

		IF EXISTS (
				SELECT *
				FROM @InvSerialExtUpdateData
				)
		BEGIN
			UPDATE tblInvSerialExt
			SET strLocName = t.LocName
				,decQty = t.Qty
				,intStatus = t.[Status]
				,strDocID = t.DocID
				,dteUpdatedDate = t.UpdatedDate
			FROM @InvSerialExtUpdateData t
			WHERE strPartNumber = t.PartNumber
				AND strSerialNumber = t.SerialNumber
				--AND strLocName = t.LocName				
		END

		IF EXISTS (
				SELECT *
				FROM @InvSerialExtInsertData
				)
		BEGIN
			INSERT INTO tblInvSerialExt
			SELECT *
				,GETDATE()
			FROM @InvSerialExtInsertData
		END
	END

	UPDATE tblInvoiceDoc
	SET decTotalWeight = @TotalWeight
		,decTotalVolWeight = @TotalVolWeight
	WHERE strInvDocID = @InvDocID
END
GO
/****** Object:  StoredProcedure [dbo].[InsertSerialNumberTracking]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/********* End [dashGetCRMInProgressReport] (CRM)**********/

/*********** START [InsertSerialNumberTracking] WH R3 Bug Fix ***********/

CREATE PROCEDURE [dbo].[InsertSerialNumberTracking]
(
 @SerialNumberTrackingData AS SerialNumberTrackingTableType READONLY 
)
AS
BEGIN 
  IF EXISTS (SELECT * FROM @SerialNumberTrackingData)
  BEGIN
   INSERT INTO tblSerialNumberTracking
   (
    strPartNumber,
    strSerialNumber,
    strUserName,
    dteUpdatedDate,
    intType,
    strDocID,
    intLineNo,
    decQty,
    strLocation,
    intStatus,
    bitExpiryDate,
    dteExpiryDate,
    lngBinID
   )
   SELECT 
    PartNumber,
    SerialNumber,
    UserName,
    UpdatedDate,
    SerialLotType,
    DocID,
    [LineNo],
    Qty,
    Location,
    [Status],
    IsExpiryDate,
    ExpiryDate,
    BinID
   FROM @SerialNumberTrackingData
  END
END
GO
/****** Object:  StoredProcedure [dbo].[InsertStockPickDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/******************End [GetPickTicketsData]************************/

/*************Start [InsertStockPickDetails]****************************/

CREATE PROCEDURE [dbo].[InsertStockPickDetails]
(
	@SerialNumberTrackingData AS SerialNumberTrackingTableType READONLY,
	@InvLotExtUpdateData AS InvLotExtTableType READONLY,
	@InvLotExtInsertData AS InvLotExtTableType READONLY,
	@InvSerialExtUpdateData AS InvSerialExtTableType READONLY,
	@InvSerialExtInsertData AS InvSerialExtTableType READONLY	
)
AS
BEGIN
	 BEGIN
		IF EXISTS (SELECT * FROM @SerialNumberTrackingData)
		BEGIN
			INSERT INTO tblSerialNumberTracking
			(
				strPartNumber,
				strSerialNumber,
				strUserName,
				dteUpdatedDate,
				intType,
				strDocID,
				intLineNo,
				decQty,
				strLocation,
				intStatus,
				bitExpiryDate,
				dteExpiryDate,
				lngBinID
			)
			SELECT 
				PartNumber,
				SerialNumber,
				UserName,
				UpdatedDate,
				SerialLotType,
				DocID,
				[LineNo],
				Qty,
				Location,
				[Status],
				IsExpiryDate,
				ExpiryDate,
				BinID
			FROM @SerialNumberTrackingData
		END

		IF EXISTS (SELECT * FROM @InvLotExtUpdateData)
		BEGIN
			UPDATE tblInvLotExt
			SET decQty = decQty + t.Qty,
				dteUpdatedDate = t.UpdatedDate
			FROM @InvLotExtUpdateData t
			WHERE strPartNumber = t.PartNumber
				AND strLotNumber = t.LotNumber
				AND strLocName = t.LocName
				AND lngBinID = t.BinID
		END

		IF EXISTS (SELECT * FROM @InvLotExtInsertData)
		BEGIN
			INSERT INTO tblInvLotExt
           ([strPartNumber]
           ,[strLotNumber]
           ,[strLocName]
           ,[decQty]
           ,[bitExpiryDate]
           ,[dteExpiryDate]
           ,[dteUpdatedDate]
           ,[lngBinID])
			SELECT 			
			PartNumber
			,LotNumber
			,LocName
			,Qty
			,IsExpiryDate
			,ExpiryDate
			,UpdatedDate
			,BinID
			 FROM @InvLotExtInsertData
		END

		IF EXISTS (SELECT * FROM @InvLotExtUpdateData)
		BEGIN
			UPDATE tblInvLotExt
		SET decQty = decQty - t.Qty,
			dteUpdatedDate = t.UpdatedDate

		FROM @InvLotExtUpdateData t
		WHERE strPartNumber = t.PartNumber
			AND strLotNumber = t.LotNumber
			AND strLocName = t.LocName
			AND lngBinId = t.BinID
		END

		IF EXISTS (SELECT * FROM @InvLotExtInsertData)
		BEGIN
			INSERT INTO tblInvLotExt
           ([strPartNumber]
           ,[strLotNumber]
           ,[strLocName]
           ,[decQty]
           ,[bitExpiryDate]
           ,[dteExpiryDate]
           ,[dteUpdatedDate]
           ,[lngBinID])
			SELECT 			
			PartNumber
			,LotNumber
			,LocName
			,Qty
			,IsExpiryDate
			,ExpiryDate
			,UpdatedDate
			,BinID
			 FROM @InvLotExtInsertData
		END

		IF EXISTS (SELECT * FROM @InvSerialExtUpdateData)
		BEGIN
			UPDATE tblInvSerialExt
			SET strLocName = t.LocName,
			    decQty = t.Qty,
			    intStatus = t.[Status],
			    strDocID = t.DocID,
			    dteUpdatedDate = t.UpdatedDate
			FROM @InvSerialExtUpdateData t
			WHERE strPartNumber = t.PartNumber
			  AND strSerialNumber = t.SerialNumber
			  AND lngBinID =t.BinID
			  --AND strLocName = t.LocName
		END

		IF EXISTS (SELECT * FROM @InvSerialExtInsertData)
		BEGIN
			INSERT INTO tblInvSerialExt
			([strPartNumber]
           ,[strSerialNumber]
           ,[strLocName]
           ,[decQty]
           ,[intStatus]
           ,[strDocID]
           ,[dteUpdatedDate]
           ,[bitDimensionExist]
           ,[strDimension]
           ,[lngBinID])
			SELECT 
			 PartNumber
			,SerialNumber
			,LocName
			,Qty
			,[Status]
			,DocID
			,UpdatedDate
			,IsDimensionExist
			,Dimension
			,BinID 
			FROM @InvSerialExtInsertData
		END

		IF EXISTS (SELECT * FROM @InvSerialExtUpdateData)
		BEGIN
			UPDATE tblInvSerialExt
			SET strLocName = t.LocName,
			    decQty = t.Qty,
			    intStatus = t.[Status],
			    strDocID = t.DocID,
			    dteUpdatedDate = t.UpdatedDate
			FROM @InvSerialExtUpdateData t
			WHERE strPartNumber = t.PartNumber
			  AND strSerialNumber = t.SerialNumber
			  AND lngBinID =t.BinID
			  --AND strLocName = t.LocName
		END

		IF EXISTS (SELECT * FROM @InvSerialExtInsertData)
		BEGIN
			INSERT INTO tblInvSerialExt
			([strPartNumber]
           ,[strSerialNumber]
           ,[strLocName]
           ,[decQty]
           ,[intStatus]
           ,[strDocID]
           ,[dteUpdatedDate]
           ,[bitDimensionExist]
           ,[strDimension]
           ,[lngBinID])
			SELECT 
			 PartNumber
			,SerialNumber
			,LocName
			,Qty
			,[Status]
			,DocID
			,UpdatedDate
			,IsDimensionExist
			,Dimension
			,BinID 
			FROM @InvSerialExtInsertData
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[InsertTerminalServerConfiguration]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[InsertTerminalServerConfiguration]
@ServerName NVARCHAR(max),
@Database NVARCHAR(max), 
@UserName NVARCHAR(max), 
@Password NVARCHAR(max)
AS
BEGIN
INSERT INTO [dbo].[tblTerminalServerConfiguration]
           ([ServerName]
           ,[UserName]
           ,[Password]
           ,[Database])
     VALUES
           (@ServerName
     ,@UserName 
           ,@Password 
           ,@Database)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertToDiscountMatrix]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetUserList] ***********/

CREATE PROCEDURE [dbo].[InsertToDiscountMatrix] (
	@SQCategory NVARCHAR(40)
)
AS
BEGIN
	INSERT INTO tblDiscountMatrix
	SELECT tblCustomerCat.strCustCategory
		,tblInvCat.strCategory
		,0
		,GETDATE()
	FROM tblInvCat
	CROSS JOIN tblCustomerCat
	WHERE tblCustomerCat.strCustCategory = @SQCategory
END
GO
/****** Object:  StoredProcedure [dbo].[InsertToInvoiceREVAndInvoiceREVDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [InsertToInvoiceREVAndInvoiceREVDT] ***********/
CREATE PROCEDURE [dbo].[InsertToInvoiceREVAndInvoiceREVDT]
    (
      @DocNumber AS VARCHAR ,
      @tarnsactionType AS INT = NULL
	)
AS
    BEGIN
        IF @tarnsactionType = 0
            BEGIN
                INSERT  INTO [dbo].[tblInvoiceDocREV]
                        ( [lngEntID] ,
                          [strInvDocID] ,
                          [lngInvTrackID] ,
                          [lngJourID] ,
                          [dteSystemDate] ,
                          [dteJournalDate] ,
                          [dteRequired] ,
                          [strUserName] ,
                          [strCustName] ,
                          [strSoldTo] ,
                          [strShipTo] ,
                          [strReference] ,
                          [decSubTotal] ,
                          [decVAT] ,
                          [decTotal] ,
                          [bitFromSO] ,
                          [strOrdDocID] ,
                          [bitHistoryTrans] ,
                          [strNotes] ,
                          [bitPrinted] ,
                          [bitEmailed] ,
                          [intPaidBy] ,
                          [intAccount] ,
                          [strSalesName] ,
                          [strAddInfo] ,
                          [bitReserved] ,
                          [strCurrency] ,
                          [bitIsForeign] ,
                          [decSubTotalF] ,
                          [decVATF] ,
                          [decTotalF] ,
                          [decExchange] ,
                          [strTerm] ,
                          [intDept] ,
                          [strField1] ,
                          [strField2] ,
                          [strField3] ,
                          [strField4] ,
                          [strField5] ,
                          [strField6] ,
                          [strField7] ,
                          [strField8] ,
                          [strField9] ,
                          [strField10] ,
                          [strField11] ,
                          [strField12] ,
                          [strSubFormated] ,
                          [strVATFormatted] ,
                          [strTotFormatted] ,
                          [dteField13] ,
                          [dteField14] ,
                          [decDiscPerc] ,
                          [decDiscAmt] ,
                          [decDiscAmtF] ,
                          [strDiscFormatted] ,
                          [strOrdFQDocID] ,
                          [strStatusTypeCode] ,
                          [strCNReasonCode] ,
                          [bitBookmark] ,
                          [dteSystemDateTime] ,
                          [strPaidBy] ,
                          [intSentDoc] ,
                          [strVAT] ,
                          [strDelMethodCode] ,
                          [decTotalWeight] ,
                          [decTotalVolWeight] ,
                          [decDeliveryCost] ,
                          [decDeliveryCostF] ,
                          [strDeliveryCostFormatted] ,
                          [intRevisionNumber] ,
                          [dteRevisionDate] ,
                          [strUserCreated] ,
                          [bitIsRepair] ,
                          [strVendName] ,
                          [strBoughtFrom] ,
                          [bitFQConvert] ,
                          [bitSOCopy] ,
                          [bitSOCopyMulti] ,
                          [strVendInvNo] ,
                          [bitFromPO] ,
                          [decNetItemWeight] ,
                          [decNetVolumetricWeight] ,
                          [strSourceMOP] ,
                          [bitCleared] ,
                          [strOrdRFQDocID] ,
                          [bitRFQConvert] ,
                          [strOrdPDocID] ,
                          [intModule]

			            )
                        SELECT  ( SELECT    ISNULL(MAX([lngEntID]), 0)
                                  FROM      [dbo].[tblInvoiceDocREV]
                                ) + ( ROW_NUMBER() OVER ( ORDER BY ( SELECT
                                                              NULL
                                                              ) ) ) ,
                                [strInvDocID] ,
                                [lngInvTrackID] ,
                                [lngJourID] ,
                                [dteSystemDate] ,
                                [dteJournalDate] ,
                                [dteRequired] ,
                                [strUserName] ,
                                [strCustName] ,
                                [strSoldTo] ,
                                [strShipTo] ,
                                [strReference] ,
                                [decSubTotal] ,
                                [decVAT] ,
                                [decTotal] ,
                                [bitFromSO] ,
                                [strOrdDocID] ,
                                [bitHistoryTrans] ,
                                [strNotes] ,
                                [bitPrinted] ,
                                [bitEmailed] ,
                                [intPaidBy] ,
                                [intAccount] ,
                                [strSalesName] ,
                                [strAddInfo] ,
                                [bitReserved] ,
                                [strCurrency] ,
                                [bitIsForeign] ,
                                [decSubTotalF] ,
                                [decVATF] ,
                                [decTotalF] ,
                                [decExchange] ,
                                [strTerm] ,
                                [intDept] ,
                                [strField1] ,
                                [strField2] ,
                                [strField3] ,
                                [strField4] ,
                                [strField5] ,
                                [strField6] ,
                                [strField7] ,
                                [strField8] ,
                                [strField9] ,
                                [strField10] ,
                                [strField11] ,
                                [strField12] ,
                                [strSubFormated] ,
                                [strVATFormatted] ,
                                [strTotFormatted] ,
                                [dteField13] ,
                                [dteField14] ,
                                [decDiscPerc] ,
                                [decDiscAmt] ,
                                [decDiscAmtF] ,
                                [strDiscFormatted] ,
                                [strOrdFQDocID] ,
                                [strStatusTypeCode] ,
                                [strCNReasonCode] ,
                                [bitBookmark] ,
                                [dteSystemDateTime] ,
                                [strPaidBy] ,
                                [intSentDoc] ,
                                [strVAT] ,
                                [strDelMethodCode] ,
                                [decTotalWeight] ,
                                [decTotalVolWeight] ,
                                [decDeliveryCost] ,
                                [decDeliveryCostF] ,
                                [strDeliveryCostFormatted] ,
                                1 ,
                                [dteSystemDate] ,
                                [strUserName] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                1
                        FROM    [dbo].[tblInvoiceDoc]
                        WHERE   [strInvDocID] = @DocNumber



                INSERT  INTO [dbo].[tblInvoiceDocREVDT]
                        ( [lngEntID] ,
                          [strInvDocID] ,
                          [intLineNo] ,
                          [strPartNumber] ,
                          [strLocation] ,
                          [strPartDesc] ,
                          [decQty] ,
                          [strUnit] ,
                          [intType] ,
                          [decPriceEaExc] ,
                          [decLineTotExc] ,
                          [decLineTaxAmt] ,
                          [decPriceEaInc] ,
                          [decLineTotInc] ,
                          [strTaxCode] ,
                          [imgTaxObj] ,
                          [strCurrency] ,
                          [bitIsForeign] ,
                          [decPriceEaExcF] ,
                          [decLineTotExcF] ,
                          [decLineTaxAmtF] ,
                          [decEaIncTaxF] ,
                          [decTotIncTaxF] ,
                          [strInvField1] ,
                          [strInvField2] ,
                          [strInvField3] ,
                          [strInvField4] ,
                          [strInvField5] ,
                          [strInvField6] ,
                          [strLineField1] ,
                          [strLineField2] ,
                          [strLineField3] ,
                          [strLineField4] ,
                          [strLineField5] ,
                          [strLineField6] ,
                          [strLineField7] ,
                          [strLineField8] ,
                          [strLineField9] ,
                          [strLineField10] ,
                          [strLineField11] ,
                          [strLineField12] ,
                          [decLineDiscPerc] ,
                          [decLineDiscAmt] ,
                          [decLineDiscAmtF] ,
                          [bitDiscountTax] ,
                          [decStockQty] ,
                          [strStockUnit] ,
                          [decStandardCost] ,
                          [decLastPPUnit] ,
                          [strSalesName] ,
                          [decCOGS] ,
                          [decSOQty] ,
                          [decSOQtyRemain] ,
                          [strPartExtendedDesc] ,
                          [decItemWeight] ,
                          [decVolumetricWeight] ,
                          [bitContainerItem] ,
                          [decBuyQty] ,
                          [decBuyQtyRemain] ,
                          [strBuyUnit] ,
                          [decEaIncTax] ,
                          [decTotIncTax] ,
                          [strOrdSODocID] ,
                          [decStockQtyRemain] ,
                          [decBuyoutCost] ,
                          [decQtyRemaining] ,
                          [intStatus] ,
                          [uidTransactionFieldID]

			            )
                        SELECT  rev.[lngEntID] ,
                                dt.[strInvDocID] ,
                                [intLineNo] ,
                                [strPartNumber] ,
                                [strLocation] ,
                                [strPartDesc] ,
                                [decQty] ,
                                [strUnit] ,
                                [intType] ,
                                [decPriceEaExc] ,
                                [decLineTotExc] ,
                                [decLineTaxAmt] ,
                                [decPriceEaInc] ,
                                [decLineTotInc] ,
                                [strTaxCode] ,
                                [imgTaxObj] ,
                                dt.[strCurrency] ,
                                dt.[bitIsForeign] ,
                                [decPriceEaExcF] ,
                                [decLineTotExcF] ,
                                [decLineTaxAmtF] ,
                                [decEaIncTaxF] ,
                                [decTotIncTaxF] ,
                                [strInvField1] ,
                                [strInvField2] ,
                                [strInvField3] ,
                                [strInvField4] ,
                                [strInvField5] ,
                                [strInvField6] ,
                                [strLineField1] ,
                                [strLineField2] ,
                                [strLineField3] ,
                                [strLineField4] ,
                                [strLineField5] ,
                                [strLineField6] ,
                                [strLineField7] ,
                                [strLineField8] ,
                                [strLineField9] ,
                                [strLineField10] ,
                                [strLineField11] ,
                                [strLineField12] ,
                                [decLineDiscPerc] ,
                                [decLineDiscAmt] ,
                                [decLineDiscAmtF] ,
                                [bitDiscountTax] ,
                                [decStockQty] ,
                                [strStockUnit] ,
                                [decStandardCost] ,
                                [decLastPPUnit] ,
                                dt.[strSalesName] ,
                                [decCOGS] ,
                                [decSOQty] ,
                                [decSOQtyRemain] ,
                                [strPartExtendedDesc] ,
                                [decItemWeight] ,
                                [decVolumetricWeight] ,
                                [bitContainerItem] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                1 ,
                                dt.[uidTransactionFieldID]
                        FROM    [dbo].[tblInvoiceDocDT] dt
                                INNER JOIN [dbo].[tblInvoiceDocREV] rev ON dt.[strInvDocID] = rev.[strInvDocID]
                        WHERE   dt.[strInvDocID] = @DocNumber

            END



        IF @tarnsactionType = 1
            BEGIN

                INSERT  INTO [dbo].[tblInvoiceDocREV]
                        ( [lngEntID] ,
                          [strInvDocID] ,
                          [lngInvTrackID] ,
                          [lngJourID] ,
                          [dteSystemDate] ,
                          [dteJournalDate] ,
                          [dteRequired] ,
                          [strUserName] ,
                          [strCustName] ,
                          [strSoldTo] ,
                          [strShipTo] ,
                          [strReference] ,
                          [decSubTotal] ,
                          [decVAT] ,
                          [decTotal] ,
                          [bitFromSO] ,
                          [strOrdDocID] ,
                          [bitHistoryTrans] ,
                          [strNotes] ,
                          [bitPrinted] ,
                          [bitEmailed] ,
                          [intPaidBy] ,
                          [intAccount] ,
                          [strSalesName] ,
                          [strAddInfo] ,
                          [bitReserved] ,
                          [strCurrency] ,
                          [bitIsForeign] ,
                          [decSubTotalF] ,
                          [decVATF] ,
                          [decTotalF] ,
                          [decExchange] ,
                          [strTerm] ,
                          [intDept] ,
                          [strField1] ,
                          [strField2] ,
                          [strField3] ,
                          [strField4] ,
                          [strField5] ,
                          [strField6] ,
                          [strField7] ,
                          [strField8] ,
                          [strField9] ,
                          [strField10] ,
                          [strField11] ,
                          [strField12] ,
                          [strSubFormated] ,
                          [strVATFormatted] ,
                          [strTotFormatted] ,
                          [dteField13] ,
                          [dteField14] ,
                          [decDiscPerc] ,
                          [decDiscAmt] ,
                          [decDiscAmtF] ,
                          [strDiscFormatted] ,
                          [strOrdFQDocID] ,
                          [strStatusTypeCode] ,
                          [strCNReasonCode] ,
                          [bitBookmark] ,
                          [dteSystemDateTime] ,
                          [strPaidBy] ,
                          [intSentDoc] ,
                          [strVAT] ,
                          [strDelMethodCode] ,
                          [decTotalWeight] ,
                          [decTotalVolWeight] ,
                          [decDeliveryCost] ,
                          [decDeliveryCostF] ,
                          [strDeliveryCostFormatted] ,
                          [intRevisionNumber] ,
                          [dteRevisionDate] ,
                          [strUserCreated] ,
                          [bitIsRepair] ,
                          [strVendName] ,
                          [strBoughtFrom] ,
                          [bitFQConvert] ,
                          [bitSOCopy] ,
                          [bitSOCopyMulti] ,
                          [strVendInvNo] ,
                          [bitFromPO] ,
                          [decNetItemWeight] ,
                          [decNetVolumetricWeight] ,
                          [strSourceMOP] ,
                          [bitCleared] ,
                          [strOrdRFQDocID] ,
                          [bitRFQConvert] ,
                          [strOrdPDocID] ,
                          [intModule]

			            )
                        SELECT  ( SELECT    ISNULL(MAX([lngEntID]), 0)
                                  FROM      [dbo].[tblInvoiceDocREV]
                                ) + ( ROW_NUMBER() OVER ( ORDER BY ( SELECT
                                                              NULL
                                                              ) ) ) ,
                                [strOrdDocID] ,
                                NULL ,
                                NULL ,
                                [dteSystemDate] ,
                                [dteJournalDate] ,
                                [dteRequired] ,
                                [strUserName] ,
                                [strCustName] ,
                                [strSoldTo] ,
                                [strShipTo] ,
                                [strReference] ,
                                [decSubTotal] ,
                                [decVAT] ,
                                [decTotal] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                [strNotes] ,
                                [bitPrinted] ,
                                [bitEmailed] ,
                                NULL ,
                                NULL ,
                                [strSalesName] ,
                                [strAddInfo] ,
                                NULL ,
                                [strCurrency] ,
                                [bitIsForeign] ,
                                [decSubTotalF] ,
                                [decVATF] ,
                                [decTotalF] ,
                                [decExchange] ,
                                [strTerm] ,
                                [intDept] ,
                                [strField1] ,
                                [strField2] ,
                                [strField3] ,
                                [strField4] ,
                                [strField5] ,
                                [strField6] ,
                                [strField7] ,
                                [strField8] ,
                                [strField9] ,
                                [strField10] ,
                                [strField11] ,
                                [strField12] ,
                                [strSubFormated] ,
                                [strVATFormatted] ,
                                [strTotFormatted] ,
                                [dteField13] ,
                                [dteField14] ,
                                [decDiscPerc] ,
                                [decDiscAmt] ,
                                [decDiscAmtF] ,
                                [strDiscFormatted] ,
                                [strOrdFQDocID] ,
                                [strStatusTypeCode] ,
                                [strCNReasonCode] ,
                                [bitBookmark] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                [strDelMethodCode] ,
                                [decTotalWeight] ,
                                [decTotalVolWeight] ,
                                [decDeliveryCost] ,
                                [decDeliveryCostF] ,
                                [strDeliveryCostFormatted] ,
                                1 ,
                                [dteSystemDate] ,
                                [strUserName] ,
                                [bitIsRepair] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                [bitCleared] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                2
                        FROM    [dbo].[tblOrderDoc]
                        WHERE   [strOrdDocID] = @DocNumber



                INSERT  INTO [dbo].[tblInvoiceDocREVDT]
                        ( [lngEntID] ,
                          [strInvDocID] ,
                          [intLineNo] ,
                          [strPartNumber] ,
                          [strLocation] ,
                          [strPartDesc] ,
                          [decQty] ,
                          [strUnit] ,
                          [intType] ,
                          [decPriceEaExc] ,
                          [decLineTotExc] ,
                          [decLineTaxAmt] ,
                          [decPriceEaInc] ,
                          [decLineTotInc] ,
                          [strTaxCode] ,
                          [imgTaxObj] ,
                          [strCurrency] ,
                          [bitIsForeign] ,
                          [decPriceEaExcF] ,
                          [decLineTotExcF] ,
                          [decLineTaxAmtF] ,
                          [decEaIncTaxF] ,
                          [decTotIncTaxF] ,
                          [strInvField1] ,
                          [strInvField2] ,
                          [strInvField3] ,
                          [strInvField4] ,
                          [strInvField5] ,
                          [strInvField6] ,
                          [strLineField1] ,
                          [strLineField2] ,
                          [strLineField3] ,
                          [strLineField4] ,
                          [strLineField5] ,
                          [strLineField6] ,
                          [strLineField7] ,
                          [strLineField8] ,
                          [strLineField9] ,
                          [strLineField10] ,
                          [strLineField11] ,
                          [strLineField12] ,
                          [decLineDiscPerc] ,
                          [decLineDiscAmt] ,
                          [decLineDiscAmtF] ,
                          [bitDiscountTax] ,
                          [decStockQty] ,
                          [strStockUnit] ,
                          [decStandardCost] ,
                          [decLastPPUnit] ,
                          [strSalesName] ,
                          [decCOGS] ,
                          [decSOQty] ,
                          [decSOQtyRemain] ,
                          [strPartExtendedDesc] ,
                          [decItemWeight] ,
                          [decVolumetricWeight] ,
                          [bitContainerItem] ,
                          [decBuyQty] ,
                          [decBuyQtyRemain] ,
                          [strBuyUnit] ,
                          [decEaIncTax] ,
                          [decTotIncTax] ,
                          [strOrdSODocID] ,
                          [decStockQtyRemain] ,
                          [decBuyoutCost] ,
                          [decQtyRemaining] ,
                          [intStatus] ,
                          [uidTransactionFieldID]

			            )
                        SELECT  rev.[lngEntID] ,
                                dt.[strOrdDocID] ,
                                [intLineNo] ,
                                [strPartNumber] ,
                                [strLocation] ,
                                [strPartDesc] ,
                                [decQty] ,
                                [strUnit] ,
                                [intType] ,
                                [decPriceEaExc] ,
                                [decLineTotExc] ,
                                [decLineTaxAmt] ,
                                [decPriceEaInc] ,
                                [decLineTotInc] ,
                                [strTaxCode] ,
                                [imgTaxObj] ,
                                dt.[strCurrency] ,
                                dt.[bitIsForeign] ,
                                [decPriceEaExcF] ,
                                [decLineTotExcF] ,
                                [decLineTaxAmtF] ,
                                [decEaIncTaxF] ,
                                [decTotIncTaxF] ,
                                [strInvField1] ,
                                [strInvField2] ,
                                [strInvField3] ,
                                [strInvField4] ,
                                [strInvField5] ,
                                [strInvField6] ,
                                [strLineField1] ,
                                [strLineField2] ,
                                [strLineField3] ,
                                [strLineField4] ,
                                [strLineField5] ,
                                [strLineField6] ,
                                [strLineField7] ,
                                [strLineField8] ,
                                [strLineField9] ,
                                [strLineField10] ,
                                [strLineField11] ,
                                [strLineField12] ,
                                [decLineDiscPerc] ,
                                [decLineDiscAmt] ,
                                [decLineDiscAmtF] ,
                                [bitDiscountTax] ,
                                [decStockQty] ,
                                [strStockUnit] ,
                                NULL ,
                                NULL ,
                                dt.[strSalesName] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                [strPartExtendedDesc] ,
                                [decItemWeight] ,
                                [decVolumetricWeight] ,
                                [bitContainerItem] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                [decStockQtyRemain] ,
                                [decBuyoutCost] ,
                                NULL ,
                                1 ,
                                dt.[uidTransactionFieldID]
                        FROM    [dbo].[tblOrderDocDT] dt
                                INNER JOIN [dbo].[tblInvoiceDocREV] rev ON dt.[strOrdDocID] = rev.[strInvDocID]
                        WHERE   dt.[strOrdDocID] = @DocNumber

            END



        IF @tarnsactionType = 2
            BEGIN

                INSERT  INTO [dbo].[tblInvoiceDocREV]
                        ( [lngEntID] ,
                          [strInvDocID] ,
                          [lngInvTrackID] ,
                          [lngJourID] ,
                          [dteSystemDate] ,
                          [dteJournalDate] ,
                          [dteRequired] ,
                          [strUserName] ,
                          [strCustName] ,
                          [strSoldTo] ,
                          [strShipTo] ,
                          [strReference] ,
                          [decSubTotal] ,
                          [decVAT] ,
                          [decTotal] ,
                          [bitFromSO] ,
                          [strOrdDocID] ,
                          [bitHistoryTrans] ,
                          [strNotes] ,
                          [bitPrinted] ,
                          [bitEmailed] ,
                          [intPaidBy] ,
                          [intAccount] ,
                          [strSalesName] ,
                          [strAddInfo] ,
                          [bitReserved] ,
                          [strCurrency] ,
                          [bitIsForeign] ,
                          [decSubTotalF] ,
                          [decVATF] ,
                          [decTotalF] ,
                          [decExchange] ,
                          [strTerm] ,
                          [intDept] ,
                          [strField1] ,
                          [strField2] ,
                          [strField3] ,
                          [strField4] ,
                          [strField5] ,
                          [strField6] ,
                          [strField7] ,
                          [strField8] ,
                          [strField9] ,
                          [strField10] ,
                          [strField11] ,
                          [strField12] ,
                          [strSubFormated] ,
                          [strVATFormatted] ,
                          [strTotFormatted] ,
                          [dteField13] ,
                          [dteField14] ,
                          [decDiscPerc] ,
                          [decDiscAmt] ,
                          [decDiscAmtF] ,
                          [strDiscFormatted] ,
                          [strOrdFQDocID] ,
                          [strStatusTypeCode] ,
                          [strCNReasonCode] ,
                          [bitBookmark] ,
                          [dteSystemDateTime] ,
                          [strPaidBy] ,
                          [intSentDoc] ,
                          [strVAT] ,
                          [strDelMethodCode] ,
                          [decTotalWeight] ,
                          [decTotalVolWeight] ,
                          [decDeliveryCost] ,
                          [decDeliveryCostF] ,
                          [strDeliveryCostFormatted] ,
                          [intRevisionNumber] ,
                          [dteRevisionDate] ,
                          [strUserCreated] ,
                          [bitIsRepair] ,
                          [strVendName] ,
                          [strBoughtFrom] ,
                          [bitFQConvert] ,
                          [bitSOCopy] ,
                          [bitSOCopyMulti] ,
                          [strVendInvNo] ,
                          [bitFromPO] ,
                          [decNetItemWeight] ,
                          [decNetVolumetricWeight] ,
                          [strSourceMOP] ,
                          [bitCleared] ,
                          [strOrdRFQDocID] ,
                          [bitRFQConvert] ,
                          [strOrdPDocID] ,
                          [intModule]

			            )
                        SELECT  ( SELECT    ISNULL(MAX([lngEntID]), 0)
                                  FROM      [dbo].[tblInvoiceDocREV]
                                ) + ( ROW_NUMBER() OVER ( ORDER BY ( SELECT
                                                              NULL
                                                              ) ) ) ,
                                [strOrdDocID] ,
                                NULL ,
                                NULL ,
                                [dteSystemDate] ,
                                [dteJournalDate] ,
                                [dteRequired] ,
                                [strUserName] ,
                                [strCustName] ,
                                [strSoldTo] ,
                                [strShipTo] ,
                                [strReference] ,
                                [decSubTotal] ,
                                [decVAT] ,
                                [decTotal] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                [strNotes] ,
                                [bitPrinted] ,
                                [bitEmailed] ,
                                NULL ,
                                NULL ,
                                [strSalesName] ,
                                [strAddInfo] ,
                                NULL ,
                                [strCurrency] ,
                                [bitIsForeign] ,
                                [decSubTotalF] ,
                                [decVATF] ,
                                [decTotalF] ,
                                [decExchange] ,
                                [strTerm] ,
                                [intDept] ,
                                [strField1] ,
                                [strField2] ,
                                [strField3] ,
                                [strField4] ,
                                [strField5] ,
                                [strField6] ,
                                [strField7] ,
                                [strField8] ,
                                [strField9] ,
                                [strField10] ,
                                [strField11] ,
                                [strField12] ,
                                [strSubFormated] ,
                                [strVATFormatted] ,
                                [strTotFormatted] ,
                                [dteField13] ,
                                [dteField14] ,
                                [decDiscPerc] ,
                                [decDiscAmt] ,
                                [decDiscAmtF] ,
                                [strDiscFormatted] ,
                                [strOrdFQDocID] ,
                                [strStatusTypeCode] ,
                                [strCNReasonCode] ,
                                [bitBookmark] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                [strDelMethodCode] ,
                                [decTotalWeight] ,
                                [decTotalVolWeight] ,
                                [decDeliveryCost] ,
                                [decDeliveryCostF] ,
                                [strDeliveryCostFormatted] ,
                                1 ,
                                [dteSystemDate] ,
                                [strUserName] ,
                                [bitIsRepair] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                [bitCleared] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                3
                        FROM    [dbo].[tblOrderDoc]
                        WHERE   [strOrdDocID] = @DocNumber



                INSERT  INTO [dbo].[tblInvoiceDocREVDT]
                        ( [lngEntID] ,
                          [strInvDocID] ,
                          [intLineNo] ,
                          [strPartNumber] ,
                          [strLocation] ,
                          [strPartDesc] ,
                          [decQty] ,
                          [strUnit] ,
                          [intType] ,
                          [decPriceEaExc] ,
                          [decLineTotExc] ,
                          [decLineTaxAmt] ,
                          [decPriceEaInc] ,
                          [decLineTotInc] ,
                          [strTaxCode] ,
                          [imgTaxObj] ,
                          [strCurrency] ,
                          [bitIsForeign] ,
                          [decPriceEaExcF] ,
                          [decLineTotExcF] ,
                          [decLineTaxAmtF] ,
                          [decEaIncTaxF] ,
                          [decTotIncTaxF] ,
                          [strInvField1] ,
                          [strInvField2] ,
                          [strInvField3] ,
                          [strInvField4] ,
                          [strInvField5] ,
                          [strInvField6] ,
                          [strLineField1] ,
                          [strLineField2] ,
                          [strLineField3] ,
                          [strLineField4] ,
                          [strLineField5] ,
                          [strLineField6] ,
                          [strLineField7] ,
                          [strLineField8] ,
                          [strLineField9] ,
                          [strLineField10] ,
                          [strLineField11] ,
                          [strLineField12] ,
                          [decLineDiscPerc] ,
                          [decLineDiscAmt] ,
                          [decLineDiscAmtF] ,
                          [bitDiscountTax] ,
                          [decStockQty] ,
                          [strStockUnit] ,
                          [decStandardCost] ,
                          [decLastPPUnit] ,
                          [strSalesName] ,
                          [decCOGS] ,
                          [decSOQty] ,
                          [decSOQtyRemain] ,
                          [strPartExtendedDesc] ,
                          [decItemWeight] ,
                          [decVolumetricWeight] ,
                          [bitContainerItem] ,
                          [decBuyQty] ,
                          [decBuyQtyRemain] ,
                          [strBuyUnit] ,
                          [decEaIncTax] ,
                          [decTotIncTax] ,
                          [strOrdSODocID] ,
                          [decStockQtyRemain] ,
                          [decBuyoutCost] ,
                          [decQtyRemaining] ,
                          [intStatus] ,
                          [uidTransactionFieldID]

			            )
                        SELECT  rev.[lngEntID] ,
                                dt.[strOrdDocID] ,
                                [intLineNo] ,
                                [strPartNumber] ,
                                [strLocation] ,
                                [strPartDesc] ,
                                [decQty] ,
                                [strUnit] ,
                                [intType] ,
                                [decPriceEaExc] ,
                                [decLineTotExc] ,
                                [decLineTaxAmt] ,
                                [decPriceEaInc] ,
                                [decLineTotInc] ,
                                [strTaxCode] ,
                                [imgTaxObj] ,
                                dt.[strCurrency] ,
                                dt.[bitIsForeign] ,
                                [decPriceEaExcF] ,
                                [decLineTotExcF] ,
                                [decLineTaxAmtF] ,
                                [decEaIncTaxF] ,
                                [decTotIncTaxF] ,
                                [strInvField1] ,
                                [strInvField2] ,
                                [strInvField3] ,
                                [strInvField4] ,
                                [strInvField5] ,
                                [strInvField6] ,
                                [strLineField1] ,
                                [strLineField2] ,
                                [strLineField3] ,
                                [strLineField4] ,
                                [strLineField5] ,
                                [strLineField6] ,
                                [strLineField7] ,
                                [strLineField8] ,
                                [strLineField9] ,
                                [strLineField10] ,
                                [strLineField11] ,
                                [strLineField12] ,
                                [decLineDiscPerc] ,
                                [decLineDiscAmt] ,
                                [decLineDiscAmtF] ,
                                [bitDiscountTax] ,
                                [decStockQty] ,
                                [strStockUnit] ,
                                NULL ,
                                NULL ,
                                dt.[strSalesName] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                [strPartExtendedDesc] ,
                                [decItemWeight] ,
                                [decVolumetricWeight] ,
                                [bitContainerItem] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                [decStockQtyRemain] ,
                                [decBuyoutCost] ,
                                NULL ,
                                1 ,
                                dt.[uidTransactionFieldID]
                        FROM    [dbo].[tblOrderDocDT] dt
                                INNER JOIN [dbo].[tblInvoiceDocREV] rev ON dt.[strOrdDocID] = rev.[strInvDocID]
                        WHERE   dt.[strOrdDocID] = @DocNumber

            END



        IF @tarnsactionType = 3
            BEGIN

                INSERT  INTO [dbo].[tblInvoiceDocREV]
                        ( [lngEntID] ,
                          [strInvDocID] ,
                          [lngInvTrackID] ,
                          [lngJourID] ,
                          [dteSystemDate] ,
                          [dteJournalDate] ,
                          [dteRequired] ,
                          [strUserName] ,
                          [strCustName] ,
                          [strSoldTo] ,
                          [strShipTo] ,
                          [strReference] ,
                          [decSubTotal] ,
                          [decVAT] ,
                          [decTotal] ,
                          [bitFromSO] ,
                          [strOrdDocID] ,
                          [bitHistoryTrans] ,
                          [strNotes] ,
                          [bitPrinted] ,
                          [bitEmailed] ,
                          [intPaidBy] ,
                          [intAccount] ,
                          [strSalesName] ,
                          [strAddInfo] ,
                          [bitReserved] ,
                          [strCurrency] ,
                          [bitIsForeign] ,
                          [decSubTotalF] ,
                          [decVATF] ,
                          [decTotalF] ,
                          [decExchange] ,
                          [strTerm] ,
                          [intDept] ,
                          [strField1] ,
                          [strField2] ,
                          [strField3] ,
                          [strField4] ,
                          [strField5] ,
                          [strField6] ,
                          [strField7] ,
                          [strField8] ,
                          [strField9] ,
                          [strField10] ,
                          [strField11] ,
                          [strField12] ,
                          [strSubFormated] ,
                          [strVATFormatted] ,
                          [strTotFormatted] ,
                          [dteField13] ,
                          [dteField14] ,
                          [decDiscPerc] ,
                          [decDiscAmt] ,
                          [decDiscAmtF] ,
                          [strDiscFormatted] ,
                          [strOrdFQDocID] ,
                          [strStatusTypeCode] ,
                          [strCNReasonCode] ,
                          [bitBookmark] ,
                          [dteSystemDateTime] ,
                          [strPaidBy] ,
                          [intSentDoc] ,
                          [strVAT] ,
                          [strDelMethodCode] ,
                          [decTotalWeight] ,
                          [decTotalVolWeight] ,
                          [decDeliveryCost] ,
                          [decDeliveryCostF] ,
                          [strDeliveryCostFormatted] ,
                          [intRevisionNumber] ,
                          [dteRevisionDate] ,
                          [strUserCreated] ,
                          [bitIsRepair] ,
                          [strVendName] ,
                          [strBoughtFrom] ,
                          [bitFQConvert] ,
                          [bitSOCopy] ,
                          [bitSOCopyMulti] ,
                          [strVendInvNo] ,
                          [bitFromPO] ,
                          [decNetItemWeight] ,
                          [decNetVolumetricWeight] ,
                          [strSourceMOP] ,
                          [bitCleared] ,
                          [strOrdRFQDocID] ,
                          [bitRFQConvert] ,
                          [strOrdPDocID] ,
                          [intModule]

			            )
                        SELECT  ( SELECT    ISNULL(MAX([lngEntID]), 0)
                                  FROM      [dbo].[tblInvoiceDocREV]
                                ) + ( ROW_NUMBER() OVER ( ORDER BY ( SELECT
                                                              NULL
                                                              ) ) ) ,
                                [strOrdDocID] ,
                                NULL ,
                                NULL ,
                                [dteSystemDate] ,
                                [dteJournalDate] ,
                                [dteRequired] ,
                                [strUserName] ,
                                [strCustName] ,
                                [strSoldTo] ,
                                [strShipTo] ,
                                [strReference] ,
                                [decSubTotal] ,
                                [decVAT] ,
                                [decTotal] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                [strNotes] ,
                                [bitPrinted] ,
                                [bitEmailed] ,
                                NULL ,
                                NULL ,
                                [strSalesName] ,
                                [strAddInfo] ,
                                NULL ,
                                [strCurrency] ,
                                [bitIsForeign] ,
                                [decSubTotalF] ,
                                [decVATF] ,
                                [decTotalF] ,
                                [decExchange] ,
                                [strTerm] ,
                                [intDept] ,
                                [strField1] ,
                                [strField2] ,
                                [strField3] ,
                                [strField4] ,
                                [strField5] ,
                                [strField6] ,
                                [strField7] ,
                                [strField8] ,
                                [strField9] ,
                                [strField10] ,
                                [strField11] ,
                                [strField12] ,
                                [strSubFormated] ,
                                [strVATFormatted] ,
                                [strTotFormatted] ,
                                [dteField13] ,
                                [dteField14] ,
                                [decDiscPerc] ,
                                [decDiscAmt] ,
                                [decDiscAmtF] ,
                                [strDiscFormatted] ,
                                [strOrdFQDocID] ,
                                [strStatusTypeCode] ,
                                [strCNReasonCode] ,
                                [bitBookmark] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                [strDelMethodCode] ,
                                [decTotalWeight] ,
                                [decTotalVolWeight] ,
                                [decDeliveryCost] ,
                                [decDeliveryCostF] ,
                                [strDeliveryCostFormatted] ,
                                1 ,
                                [dteSystemDate] ,
                                [strUserName] ,
                                [bitIsRepair] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                [bitCleared] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                8
                        FROM    [dbo].[tblOrderDoc]
                        WHERE   [strOrdDocID] = @DocNumber

                INSERT  INTO [dbo].[tblInvoiceDocREVDT]
                        ( [lngEntID] ,
                          [strInvDocID] ,
                          [intLineNo] ,
                          [strPartNumber] ,
                          [strLocation] ,
                          [strPartDesc] ,
                          [decQty] ,
                          [strUnit] ,
                          [intType] ,
                          [decPriceEaExc] ,
                          [decLineTotExc] ,
                          [decLineTaxAmt] ,
                          [decPriceEaInc] ,
                          [decLineTotInc] ,
                          [strTaxCode] ,
                          [imgTaxObj] ,
                          [strCurrency] ,
                          [bitIsForeign] ,
                          [decPriceEaExcF] ,
                          [decLineTotExcF] ,
                          [decLineTaxAmtF] ,
                          [decEaIncTaxF] ,
                          [decTotIncTaxF] ,
                          [strInvField1] ,
                          [strInvField2] ,
                          [strInvField3] ,
                          [strInvField4] ,
                          [strInvField5] ,
                          [strInvField6] ,
                          [strLineField1] ,
                          [strLineField2] ,
                          [strLineField3] ,
                          [strLineField4] ,
                          [strLineField5] ,
                          [strLineField6] ,
                          [strLineField7] ,
                          [strLineField8] ,
                          [strLineField9] ,
                          [strLineField10] ,
                          [strLineField11] ,
                          [strLineField12] ,
                          [decLineDiscPerc] ,
                          [decLineDiscAmt] ,
                          [decLineDiscAmtF] ,
                          [bitDiscountTax] ,
                          [decStockQty] ,
                          [strStockUnit] ,
                          [decStandardCost] ,
                          [decLastPPUnit] ,
                          [strSalesName] ,
                          [decCOGS] ,
                          [decSOQty] ,
                          [decSOQtyRemain] ,
                          [strPartExtendedDesc] ,
                          [decItemWeight] ,
                          [decVolumetricWeight] ,
                          [bitContainerItem] ,
                          [decBuyQty] ,
                          [decBuyQtyRemain] ,
                          [strBuyUnit] ,
                          [decEaIncTax] ,
                          [decTotIncTax] ,
                          [strOrdSODocID] ,
                          [decStockQtyRemain] ,
                          [decBuyoutCost] ,
                          [decQtyRemaining] ,
                          [intStatus] ,
                          [uidTransactionFieldID]

			            )
                        SELECT  rev.[lngEntID] ,
                                dt.[strOrdDocID] ,
                                [intLineNo] ,
                                [strPartNumber] ,
                                [strLocation] ,
                                [strPartDesc] ,
                                [decQty] ,
                                [strUnit] ,
                                [intType] ,
                                [decPriceEaExc] ,
                                [decLineTotExc] ,
                                [decLineTaxAmt] ,
                                [decPriceEaInc] ,
                                [decLineTotInc] ,
                                [strTaxCode] ,
                                [imgTaxObj] ,
                                dt.[strCurrency] ,
                                dt.[bitIsForeign] ,
                                [decPriceEaExcF] ,
                                [decLineTotExcF] ,
                                [decLineTaxAmtF] ,
                                [decEaIncTaxF] ,
                                [decTotIncTaxF] ,
                                [strInvField1] ,
                                [strInvField2] ,
                                [strInvField3] ,
                                [strInvField4] ,
                                [strInvField5] ,
                                [strInvField6] ,
                                [strLineField1] ,
                                [strLineField2] ,
                                [strLineField3] ,
                                [strLineField4] ,
                                [strLineField5] ,
                                [strLineField6] ,
                                [strLineField7] ,
                                [strLineField8] ,
                                [strLineField9] ,
                                [strLineField10] ,
                                [strLineField11] ,
                                [strLineField12] ,
                                [decLineDiscPerc] ,
                                [decLineDiscAmt] ,
                                [decLineDiscAmtF] ,
                                [bitDiscountTax] ,
                                [decStockQty] ,
                                [strStockUnit] ,
                                NULL ,
                                NULL ,
                                dt.[strSalesName] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                [strPartExtendedDesc] ,
                                [decItemWeight] ,
                                [decVolumetricWeight] ,
                                [bitContainerItem] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                [decStockQtyRemain] ,
                                [decBuyoutCost] ,
                                NULL ,
                                1 ,
                                [uidTransactionFieldID]
                        FROM    [dbo].[tblOrderDocDT] dt
                                INNER JOIN [dbo].[tblInvoiceDocREV] rev ON dt.[strOrdDocID] = rev.[strInvDocID]
                        WHERE   dt.[strOrdDocID] = @DocNumber

            END



        IF @tarnsactionType = 4
            BEGIN

                INSERT  INTO [dbo].[tblInvoiceDocREV]
                        ( [lngEntID] ,
                          [strInvDocID] ,
                          [lngInvTrackID] ,
                          [lngJourID] ,
                          [dteSystemDate] ,
                          [dteJournalDate] ,
                          [dteRequired] ,
                          [strUserName] ,
                          [strCustName] ,
                          [strSoldTo] ,
                          [strShipTo] ,
                          [strReference] ,
                          [decSubTotal] ,
                          [decVAT] ,
                          [decTotal] ,
                          [bitFromSO] ,
                          [strOrdDocID] ,
                          [bitHistoryTrans] ,
                          [strNotes] ,
                          [bitPrinted] ,
                          [bitEmailed] ,
                          [intPaidBy] ,
                          [intAccount] ,
                          [strSalesName] ,
                          [strAddInfo] ,
                          [bitReserved] ,
                          [strCurrency] ,
                          [bitIsForeign] ,
                          [decSubTotalF] ,
                          [decVATF] ,
                          [decTotalF] ,
                          [decExchange] ,
                          [strTerm] ,
                          [intDept] ,
                          [strField1] ,
                          [strField2] ,
                          [strField3] ,
                          [strField4] ,
                          [strField5] ,
                          [strField6] ,
                          [strField7] ,
                          [strField8] ,
                          [strField9] ,
                          [strField10] ,
                          [strField11] ,
                          [strField12] ,
                          [strSubFormated] ,
                          [strVATFormatted] ,
                          [strTotFormatted] ,
                          [dteField13] ,
                          [dteField14] ,
                          [decDiscPerc] ,
                          [decDiscAmt] ,
                          [decDiscAmtF] ,
                          [strDiscFormatted] ,
                          [strOrdFQDocID] ,
                          [strStatusTypeCode] ,
                          [strCNReasonCode] ,
                          [bitBookmark] ,
                          [dteSystemDateTime] ,
                          [strPaidBy] ,
                          [intSentDoc] ,
                          [strVAT] ,
                          [strDelMethodCode] ,
                          [decTotalWeight] ,
                          [decTotalVolWeight] ,
                          [decDeliveryCost] ,
                          [decDeliveryCostF] ,
                          [strDeliveryCostFormatted] ,
                          [intRevisionNumber] ,
                          [dteRevisionDate] ,
                          [strUserCreated] ,
                          [bitIsRepair] ,
                          [strVendName] ,
                          [strBoughtFrom] ,
                          [bitFQConvert] ,
                          [bitSOCopy] ,
                          [bitSOCopyMulti] ,
                          [strVendInvNo] ,
                          [bitFromPO] ,
                          [decNetItemWeight] ,
                          [decNetVolumetricWeight] ,
                          [strSourceMOP] ,
                          [bitCleared] ,
                          [strOrdRFQDocID] ,
                          [bitRFQConvert] ,
                          [strOrdPDocID] ,
                          [intModule]

			            )
                        SELECT  ( SELECT    ISNULL(MAX([lngEntID]), 0)
                                  FROM      [dbo].[tblInvoiceDocREV]
                                ) + ( ROW_NUMBER() OVER ( ORDER BY ( SELECT
                                                              NULL
                                                              ) ) ) ,
                                [strInvDocID] ,
                                [lngInvTrackID] ,
                                [lngJourID] ,
                                [dteSystemDate] ,
                                [dteJournalDate] ,
                                [dteRequired] ,
                                [strUserName] ,
                                [strCustName] ,
                                [strSoldTo] ,
                                [strShipTo] ,
                                [strReference] ,
                                [decSubTotal] ,
                                [decVAT] ,
                                [decTotal] ,
                                [bitFromSO] ,
                                [strOrdDocID] ,
                                [bitHistoryTrans] ,
                                [strNotes] ,
                                [bitPrinted] ,
                                [bitEmailed] ,
                                [intPaidBy] ,
                                [intAccount] ,
                                [strSalesName] ,
                                [strAddInfo] ,
                                [bitReserved] ,
                                [strCurrency] ,
                                [bitIsForeign] ,
                                [decSubTotalF] ,
                                [decVATF] ,
                                [decTotalF] ,
                                [decExchange] ,
                                [strTerm] ,
                                [intDept] ,
                                [strField1] ,
                                [strField2] ,
                                [strField3] ,
                                [strField4] ,
                                [strField5] ,
                                [strField6] ,
                                [strField7] ,
                                [strField8] ,
                                [strField9] ,
                                [strField10] ,
                                [strField11] ,
                                [strField12] ,
                                [strSubFormated] ,
                                [strVATFormatted] ,
                                [strTotFormatted] ,
                                [dteField13] ,
                                [dteField14] ,
                                [decDiscPerc] ,
                                [decDiscAmt] ,
                                [decDiscAmtF] ,
                                [strDiscFormatted] ,
                                [strOrdFQDocID] ,
                                [strStatusTypeCode] ,
                                [strCNReasonCode] ,
                                [bitBookmark] ,
                                [dteSystemDateTime] ,
                                [strPaidBy] ,
                                [intSentDoc] ,
                                [strVAT] ,
                                [strDelMethodCode] ,
                                [decTotalWeight] ,
                                [decTotalVolWeight] ,
                                [decDeliveryCost] ,
                                [decDeliveryCostF] ,
                                [strDeliveryCostFormatted] ,
                                1 ,
                                [dteSystemDate] ,
                                [strUserName] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                7
                        FROM    [dbo].[tblInvoiceDoc]
                        WHERE   [strInvDocID] = @DocNumber



                INSERT  INTO [dbo].[tblInvoiceDocREVDT]
                        ( [lngEntID] ,
                          [strInvDocID] ,
                          [intLineNo] ,
                          [strPartNumber] ,
                          [strLocation] ,
                          [strPartDesc] ,
                          [decQty] ,
                          [strUnit] ,
                          [intType] ,
                          [decPriceEaExc] ,
                          [decLineTotExc] ,
                          [decLineTaxAmt] ,
                          [decPriceEaInc] ,
                          [decLineTotInc] ,
                          [strTaxCode] ,
                          [imgTaxObj] ,
                          [strCurrency] ,
                          [bitIsForeign] ,
                          [decPriceEaExcF] ,
                          [decLineTotExcF] ,
                          [decLineTaxAmtF] ,
                          [decEaIncTaxF] ,
                          [decTotIncTaxF] ,
                          [strInvField1] ,
                          [strInvField2] ,
                          [strInvField3] ,
                          [strInvField4] ,
                          [strInvField5] ,
                          [strInvField6] ,
                          [strLineField1] ,
                          [strLineField2] ,
                          [strLineField3] ,
                          [strLineField4] ,
                          [strLineField5] ,
                          [strLineField6] ,
                          [strLineField7] ,
                          [strLineField8] ,
                          [strLineField9] ,
                          [strLineField10] ,
                          [strLineField11] ,
                          [strLineField12] ,
                          [decLineDiscPerc] ,
                          [decLineDiscAmt] ,
                          [decLineDiscAmtF] ,
                          [bitDiscountTax] ,
                          [decStockQty] ,
                          [strStockUnit] ,
                          [decStandardCost] ,
                          [decLastPPUnit] ,
                          [strSalesName] ,
                          [decCOGS] ,
                          [decSOQty] ,
                          [decSOQtyRemain] ,
                          [strPartExtendedDesc] ,
                          [decItemWeight] ,
                          [decVolumetricWeight] ,
                          [bitContainerItem] ,
                          [decBuyQty] ,
                          [decBuyQtyRemain] ,
                          [strBuyUnit] ,
                          [decEaIncTax] ,
                          [decTotIncTax] ,
                          [strOrdSODocID] ,
                          [decStockQtyRemain] ,
                          [decBuyoutCost] ,
                          [decQtyRemaining] ,
                          [intStatus] ,
                          [uidTransactionFieldID]

			            )
                        SELECT  rev.[lngEntID] ,
                                dt.[strInvDocID] ,
                                [intLineNo] ,
                                [strPartNumber] ,
                                [strLocation] ,
                                [strPartDesc] ,
                                [decQty] ,
                                [strUnit] ,
                                [intType] ,
                                [decPriceEaExc] ,
                                [decLineTotExc] ,
                                [decLineTaxAmt] ,
                                [decPriceEaInc] ,
                                [decLineTotInc] ,
                                [strTaxCode] ,
                                [imgTaxObj] ,
                                dt.[strCurrency] ,
                                dt.[bitIsForeign] ,
                                [decPriceEaExcF] ,
                                [decLineTotExcF] ,
                                [decLineTaxAmtF] ,
                                [decEaIncTaxF] ,
                                [decTotIncTaxF] ,
                                [strInvField1] ,
                                [strInvField2] ,
                                [strInvField3] ,
                                [strInvField4] ,
                                [strInvField5] ,
                                [strInvField6] ,
                                [strLineField1] ,
                                [strLineField2] ,
                                [strLineField3] ,
                                [strLineField4] ,
                                [strLineField5] ,
                                [strLineField6] ,
                                [strLineField7] ,
                                [strLineField8] ,
                                [strLineField9] ,
                                [strLineField10] ,
                                [strLineField11] ,
                                [strLineField12] ,
                                [decLineDiscPerc] ,
                                [decLineDiscAmt] ,
                                [decLineDiscAmtF] ,
                                [bitDiscountTax] ,
                                [decStockQty] ,
                                [strStockUnit] ,
                                [decStandardCost] ,
                                [decLastPPUnit] ,
                                dt.[strSalesName] ,
                                [decCOGS] ,
                                [decSOQty] ,
                                [decSOQtyRemain] ,
                                [strPartExtendedDesc] ,
                                [decItemWeight] ,
                                [decVolumetricWeight] ,
                                [bitContainerItem] ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                NULL ,
                                1 ,
                                dt.[uidTransactionFieldID]
                        FROM    [dbo].[tblInvoiceDocDT] dt
                                INNER JOIN [dbo].[tblInvoiceDocREV] rev ON dt.[strInvDocID] = rev.[strInvDocID]
                        WHERE   dt.[strInvDocID] = @DocNumber
            END


		IF @tarnsactionType = 5
		BEGIN

		INSERT  INTO [dbo].[tblInvoiceDocREV]
        ( [lngEntID] ,
          [strInvDocID] ,
          [lngInvTrackID] ,
          [lngJourID] ,
          [dteSystemDate] ,
          [dteJournalDate] ,
          [dteRequired] ,
          [strUserName] ,
          [strCustName] ,
          [strSoldTo] ,
          [strShipTo] ,
          [strReference] ,
          [decSubTotal] ,
          [decVAT] ,
          [decTotal] ,
          [bitFromSO] ,
          [strOrdDocID] ,
          [bitHistoryTrans] ,
          [strNotes] ,
          [bitPrinted] ,
          [bitEmailed] ,
          [intPaidBy] ,
          [intAccount] ,
          [strSalesName] ,
          [strAddInfo] ,
          [bitReserved] ,
          [strCurrency] ,
          [bitIsForeign] ,
          [decSubTotalF] ,
          [decVATF] ,
          [decTotalF] ,
          [decExchange] ,
          [strTerm] ,
          [intDept] ,
          [strField1] ,
          [strField2] ,
          [strField3] ,
          [strField4] ,
          [strField5] ,
          [strField6] ,
          [strField7] ,
          [strField8] ,
          [strField9] ,
          [strField10] ,
          [strField11] ,
          [strField12] ,
          [strSubFormated] ,
          [strVATFormatted] ,
          [strTotFormatted] ,
          [dteField13] ,
          [dteField14] ,
          [decDiscPerc] ,
          [decDiscAmt] ,
          [decDiscAmtF] ,
          [strDiscFormatted] ,
          [strOrdFQDocID] ,
          [strStatusTypeCode] ,
          [strCNReasonCode] ,
          [bitBookmark] ,
          [dteSystemDateTime] ,
          [strPaidBy] ,
          [intSentDoc] ,
          [strVAT] ,
          [strDelMethodCode] ,
          [decTotalWeight] ,
          [decTotalVolWeight] ,
          [decDeliveryCost] ,
          [decDeliveryCostF] ,
          [strDeliveryCostFormatted] ,
          [intRevisionNumber] ,
          [dteRevisionDate] ,
          [strUserCreated] ,
          [bitIsRepair] ,
          [strVendName] ,
          [strBoughtFrom] ,
          [bitFQConvert] ,
          [bitSOCopy] ,
          [bitSOCopyMulti] ,
          [strVendInvNo] ,
          [bitFromPO] ,
          [decNetItemWeight] ,
          [decNetVolumetricWeight] ,
          [strSourceMOP] ,
          [bitCleared] ,
          [strOrdRFQDocID] ,
          [bitRFQConvert] ,
          [strOrdPDocID] ,
          [intModule] ,
          [strSOReasonCode] ,
          [strDelNoteNo]
        )
        SELECT  ( SELECT    ISNULL(MAX([lngEntID]), 0)
                  FROM      [dbo].[tblInvoiceDocREV]
                ) + ( ROW_NUMBER() OVER ( ORDER BY ( SELECT NULL
                                                   ) ) ) ,
                [strOrdDADocID] ,
                [lngInvTrackID] ,
                [lngJourID] ,
                [dteSystemDate] ,
                [dteJournalDate] ,
                [dteRequired] ,
                [strUserName] ,
                [strCustName] ,
                [strSoldTo] ,
                [strShipTo] ,
                [strReference] ,
                [decSubTotal] ,
                [decVAT] ,
                [decTotal] ,
                NULL ,
                [strOrdDocID] ,
                NULL ,
                [strNotes] ,
                [bitPrinted] ,
                [bitEmailed] ,
                NULL ,
                NULL ,
                [strSalesName] ,
                [strAddInfo] ,
                NULL ,
                [strCurrency] ,
                [bitIsForeign] ,
                [decSubTotalF] ,
                [decVATF] ,
                [decTotalF] ,
                [decExchange] ,
                [strTerm] ,
                [intDept] ,
                [strField1] ,
                [strField2] ,
                [strField3] ,
                [strField4] ,
                [strField5] ,
                [strField6] ,
                [strField7] ,
                [strField8] ,
                [strField9] ,
                [strField10] ,
                [strField11] ,
                [strField12] ,
                [strSubFormated] ,
                [strVATFormatted] ,
                [strTotFormatted] ,
                [dteField13] ,
                [dteField14] ,
                [decDiscPerc] ,
                [decDiscAmt] ,
                [decDiscAmtF] ,
                [strDiscFormatted] ,
                [strOrdFQDocID] ,
                [strStatusTypeCode] ,
                NULL ,
                [bitBookmark] ,
                NULL ,
                NULL ,
                NULL ,
                NULL ,
                [strDelMethodCode] ,
                [decTotalWeight] ,
                [decTotalVolWeight] ,
                [decDeliveryCost] ,
                [decDeliveryCostF] ,
                [strDeliveryCostFormatted] ,
                1 ,
                [dteSystemDate] ,
                [strUserName] ,
                NULL ,
                NULL ,
                NULL ,
                NULL ,
                NULL ,
                NULL ,
                NULL ,
                NULL ,
                NULL ,
                NULL ,
                NULL ,
                [bitCleared] ,
                NULL ,
                NULL ,
                NULL ,
                10 ,
                [strSOReasonCode] ,
                NULL
        FROM    [dbo].[tblOrderDocDA]
        WHERE   [strOrdDADocID] = @DocNumber

		INSERT  INTO [dbo].[tblInvoiceDocREVDT]
        ( [lngEntID] ,
          [strInvDocID] ,
          [intLineNo] ,
          [strPartNumber] ,
          [strLocation] ,
          [strPartDesc] ,
          [decQty] ,
          [strUnit] ,
          [intType] ,
          [decPriceEaExc] ,
          [decLineTotExc] ,
          [decLineTaxAmt] ,
          [decPriceEaInc] ,
          [decLineTotInc] ,
          [strTaxCode] ,
          [imgTaxObj] ,
          [strCurrency] ,
          [bitIsForeign] ,
          [decPriceEaExcF] ,
          [decLineTotExcF] ,
          [decLineTaxAmtF] ,
          [decEaIncTaxF] ,
          [decTotIncTaxF] ,
          [strInvField1] ,
          [strInvField2] ,
          [strInvField3] ,
          [strInvField4] ,
          [strInvField5] ,
          [strInvField6] ,
          [strLineField1] ,
          [strLineField2] ,
          [strLineField3] ,
          [strLineField4] ,
          [strLineField5] ,
          [strLineField6] ,
          [strLineField7] ,
          [strLineField8] ,
          [strLineField9] ,
          [strLineField10] ,
          [strLineField11] ,
          [strLineField12] ,
          [decLineDiscPerc] ,
          [decLineDiscAmt] ,
          [decLineDiscAmtF] ,
          [bitDiscountTax] ,
          [decStockQty] ,
          [strStockUnit] ,
          [decStandardCost] ,
          [decLastPPUnit] ,
          [strSalesName] ,
          [decCOGS] ,
          [decSOQty] ,
          [decSOQtyRemain] ,
          [strPartExtendedDesc] ,
          [decItemWeight] ,
          [decVolumetricWeight] ,
          [bitContainerItem] ,
          [decBuyQty] ,
          [decBuyQtyRemain] ,
          [strBuyUnit] ,
          [decEaIncTax] ,
          [decTotIncTax] ,
          [strOrdSODocID] ,
          [decStockQtyRemain] ,
          [decBuyoutCost] ,
          [decQtyRemaining] ,
          [intStatus] ,
          [uidTransactionFieldID]
        )
        SELECT  rev.[lngEntID] ,
                dt.[strOrdDADocID] ,
                [intLineNo] ,
                [strPartNumber] ,
                [strLocation] ,
                [strPartDesc] ,
                [decQty] ,
                [strUnit] ,
                [intType] ,
                [decPriceEaExc] ,
                [decLineTotExc] ,
                [decLineTaxAmt] ,
                [decPriceEaInc] ,
                [decLineTotInc] ,
                [strTaxCode] ,
                [imgTaxObj] ,
                dt.[strCurrency] ,
                dt.[bitIsForeign] ,
                [decPriceEaExcF] ,
                [decLineTotExcF] ,
                [decLineTaxAmtF] ,
                [decEaIncTaxF] ,
                [decTotIncTaxF] ,
                [strInvField1] ,
                [strInvField2] ,
                [strInvField3] ,
                [strInvField4] ,
                [strInvField5] ,
                [strInvField6] ,
                [strLineField1] ,
                [strLineField2] ,
                [strLineField3] ,
                [strLineField4] ,
                [strLineField5] ,
                [strLineField6] ,
                [strLineField7] ,
                [strLineField8] ,
                [strLineField9] ,
                [strLineField10] ,
                [strLineField11] ,
                [strLineField12] ,
                [decLineDiscPerc] ,
                [decLineDiscAmt] ,
                [decLineDiscAmtF] ,
                [bitDiscountTax] ,
                [decStockQty] ,
                [strStockUnit] ,
                NULL ,
                NULL ,
                dt.[strSalesName] ,
                NULL ,
                NULL ,
                NULL ,
                NULL ,
                [decItemWeight] ,
                [decVolumetricWeight] ,
                [bitContainerItem] ,
                NULL ,
                NULL ,
                NULL ,
                NULL ,
                NULL ,
                NULL ,
                [decStockQtyRemain] ,
                [decBuyoutCost] ,
                NULL ,
                1 ,
                dt.[uidTransactionFieldID]
        FROM    [dbo].[tblOrderDocDADT] dt
                INNER JOIN [dbo].[tblInvoiceDocREV] rev ON dt.[strOrdDADocID] = rev.[strInvDocID]
        WHERE   dt.[strOrdDADocID] = @DocNumber
		END
    END

GO
/****** Object:  StoredProcedure [dbo].[InsertToProceeDocREVAndProcessDocREVDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[InsertToProceeDocREVAndProcessDocREVDT]
(
	  @DocNumber AS NVARCHAR(50) ,
      @TarnsactionType AS INT = NULL
)
AS
BEGIN
	  DECLARE @ProcessDocREV_EntID AS BIGINT
	  SELECT @ProcessDocREV_EntID = (ISNULL(MAX(EntID),0) + 1) FROM tblWSProcessDocREV

	  IF @TarnsactionType = 1
	  BEGIN
		INSERT INTO tblWSProcessDocREV
		(
			 EntID
			,Module										
			,ProcessDocID								
			,ServiceableItemCode						
			,JobTemplateID							
			,OwnerCode									
			,CustomerCode								
			,CustomerDetails							
			,SystemDate									
			,DocumentDate								
			,RequiredDate								
			,ReferenceNumber							
			,AddInfo									
			,Technician									
			,SalesName									
			,Dept										
			,DocType									
			,InventoryTotal								
			,LabourTotal								
			,BuyOutsTotal								
			,RecoveryTotal								
			,InventoryTotalF							
			,LabourTotalF								
			,BuyOutsTotalF								
			,RecoveryTotalF								
			,Term										
			,SubTotal									
			,VAT										
			,Total										
			,IsForeign									
			,SubTotalF									
			,VATF										
			,TotalF										
			,IsFromQuote								
			,QuoteDocID									
			,Notes										
			,Printed									
			,Emailed									
			,Cleared									
			,Currency									
			,DiscPerc									
			,DiscAmt									
			,DiscAmtF									
			,RevisionNumber								
			,Exchange									
			,SubFormated								
			,VATFormatted								
			,TotFormatted								
			,DiscFormatted								
			,CreatedDate								
			,UpdatedDate								
			,CreatedBy									
			,UpdatedBy
			,SOReasonCode
			,DelMethodCode
			,TotalWeight
			,TotalVolWeight
			,DeliveryCost
			,DeliveryCostF
			,DeliveryCostFormatted
		)
		SELECT 
			 @ProcessDocREV_EntID							-- EntID
			,1												--,Module					
			,ProcessDocID									--,ProcessDocID			
			,ServiceableItemCode							--,ServiceableItemCode	
			,JobTemplateID								--,JobTemplateCode		
			,OwnerCode										--,OwnerCode				
			,CustomerCode									--,CustomerCode			
			,CustomerDetails								--,CustomerDetails		
			,SystemDate										--,SystemDate				
			,DocumentDate									--,DocumentDate			
			,RequiredDate									--,RequiredDate			
			,ReferenceNumber								--,ReferenceNumber		
			,AddInfo										--,AddInfo				
			,Technician										--,Technician				
			,SalesName										--,SalesName				
			,Dept											--,Dept					
			,DocType										--,DocType				
			,InventoryTotal									--,InventoryTotal			
			,LabourTotal									--,LabourTotal			
			,BuyOutsTotal									--,BuyOutsTotal			
			,RecoveryTotal									--,RecoveryTotal			
			,InventoryTotalF								--,InventoryTotalF		
			,LabourTotalF									--,LabourTotalF			
			,BuyOutsTotalF									--,BuyOutsTotalF			
			,RecoveryTotalF									--,RecoveryTotalF			
			,Term											--,Term					
			,SubTotal										--,SubTotal				
			,VAT											--,VAT					
			,Total											--,Total					
			,IsForeign										--,IsForeign				
			,SubTotalF										--,SubTotalF				
			,VATF											--,VATF					
			,TotalF											--,TotalF					
			,IsFromQuote									--,IsFromQuote			
			,QuoteDocID										--,QuoteDocID				
			,Notes											--,Notes					
			,Printed										--,Printed				
			,Emailed										--,Emailed				
			,Cleared										--,Cleared				
			,Currency										--,Currency				
			,DiscPerc										--,DiscPerc				
			,DiscAmt										--,DiscAmt				
			,DiscAmtF										--,DiscAmtF				
			,1												--,RevisionNumber			
			,Exchange										--,Exchange				
			,SubFormated									--,SubFormated			
			,VATFormatted									--,VATFormatted			
			,TotFormatted									--,TotFormatted			
			,DiscFormatted									--,DiscFormatted			
			,CreatedDate									--,CreatedDate			
			,UpdatedDate									--,UpdatedDate			
			,CreatedBy										--,CreatedBy				
			,UpdatedBy										--,UpdatedBy
			,SOReasonCode									--,SOReasonCode
			,DelMethodCode									--,DelMethodCode
			,TotalWeight									--,TotalWeight
			,TotalVolWeight									--,TotalVolWeight
			,DeliveryCost									--,DeliveryCost
			,DeliveryCostF									--,DeliveryCostF
			,DeliveryCostFormatted							--,DeliveryCostFormatted
		FROM tblWSProcessDoc
		WHERE ProcessDocID = @DocNumber
		
		INSERT INTO tblWSProcessDocREVDT
		(
			 EntID
			,ProcessDocDTID
			,ProcessDocID
			,[LineNo]
			,PartNumber
			,Location
			,PartDesc
			,QuotedQty
			,JobQty
			,Unit
			,ItemType
			,TaxCode
			,Currency
			,IsForeign
			,LineDiscPerc
			,LineDiscAmt
			,LineDiscAmtF
			,IsDiscountTax
			,StockQty
			,StockUnit
			,StockQtyRemain
			,PriceEaExc
			,LineTotExc
			,LineTaxAmt
			,PriceEaInc
			,LineTotInc
			,PriceEaExcF
			,LineTotExcF
			,LineTaxAmtF
			,EaIncTaxF
			,TotIncTaxF
			,CreatedDate
			,UpdatedDate
			,CreatedBy
			,UpdatedBy
			,IsDelCost
			,BillingMethod
			,QtyRemaining
			,TaxObj
			,SalesName
			,PartExtendedDesc
			,BuyoutCost
			,ItemWeight
			,VolumetricWeight
			,TransactionFieldID
		)
		SELECT 
			@ProcessDocREV_EntID --EntID					
			,ProcessDocDTID
			,ProcessDocID
			,[LineNo]
			,PartNumber
			,Location
			,PartDesc
			,QuotedQty
			,JobQty
			,Unit
			,ItemType
			,TaxCode
			,Currency
			,IsForeign
			,LineDiscPerc
			,LineDiscAmt
			,LineDiscAmtF
			,IsDiscountTax
			,StockQty
			,StockUnit
			,StockQtyRemain
			,PriceEaExc
			,LineTotExc
			,LineTaxAmt
			,PriceEaInc
			,LineTotInc
			,PriceEaExcF
			,LineTotExcF
			,LineTaxAmtF
			,EaIncTaxF
			,TotIncTaxF
			,CreatedDate
			,UpdatedDate
			,CreatedBy
			,UpdatedBy
			,IsDelCost
			,BillingMethod
			,QtyRemaining
			,TaxObj
			,SalesName
			,PartExtendedDesc
			,BuyoutCost
			,ItemWeight
			,VolumetricWeight
			,TransactionFieldID
		FROM tblWSProcessDocDT
		WHERE ProcessDocID = @DocNumber
	  END
END

GO
/****** Object:  StoredProcedure [dbo].[InsertToSalesPerson]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[InsertToSalesPerson] (
	@SQstrSalesName NVARCHAR(50)
	,@SQstrStreet1 NVARCHAR(50)
	,@SQstrStreet2 NVARCHAR(50)
	,@SQstrCity NVARCHAR(50)
	,@SQstrProvince NVARCHAR(50)
	,@SQstrPostal NVARCHAR(50)
	,@SQstrPhone NVARCHAR(50)
	,@SQstrCellPhone NVARCHAR(50)
	,@SQstrFax NVARCHAR(50)
	,@SQstrEmail NVARCHAR(50)
	,@SQdecYTDSales MONEY
	,@SQbitInactive BIT
	,@SQdteSince DATETIME
	,@SQstrNotes NVARCHAR(max)
	,@SQstrCountry NVARCHAR(50)
	,@SQstrCountryCode NVARCHAR(10)
	,@SQstrFacebook NVARCHAR(100)
	,@SQstrLinkedIn NVARCHAR(100)
	,@SQstrSkype NVARCHAR(100)
	,@SQimgPicture IMAGE = null
	,@SQbitGrossProfit BIT
	,@SQbitPaidInvoices BIT
	,@SQIsWorkshopTechnician BIT 
	,@SQUID uniqueidentifier
	)
AS
BEGIN
	 
	INSERT INTO tblSalesPersons
	(
		 strSalesName
		,strStreet1
		,strStreet2
		,strCity
		,strProvince
		,strPostal
		,strPhone
		,strCellPhone
		,strFax
		,strEmail
		,decYTDSales
		,bitInactive
		,dteUpdated
		,dteSince
		,strNotes
		,uID
		,strCountry
		,strCountryCode
		,strFacebook
		,strLinkedIn
		,strSkype
		,imgPicture
		,bitIsWorkshopTechnician
		,bitGrossProfit
		,bitPaidInvoices
	)
	VALUES (
		@SQstrSalesName																				
		,@SQstrStreet1																				
		,@SQstrStreet2																				
		,@SQstrCity																					
		,@SQstrProvince																				
		,@SQstrPostal																				
		,@SQstrPhone																				
		,@SQstrCellPhone																			
		,@SQstrFax																					
		,@SQstrEmail																				
		,@SQdecYTDSales																				
		,@SQbitInactive																				
		,GetDate()																					
		,@SQdteSince																				
		,@SQstrNotes																				
		,@SQUID																						
		,@SQstrCountry																				
		,@SQstrCountryCode																			
		,@SQstrFacebook																				
		,@SQstrLinkedIn																				
		,@SQstrSkype																				
		,case when convert(varbinary(max),@SQimgPicture)  =0x then null else @SQimgPicture end		
		,isnull(@SQIsWorkshopTechnician ,0)														    
		,@SQbitGrossProfit																		    
		,@SQbitPaidInvoices			  															    
		
		)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertToSalesPersonT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[InsertToSalesPersonT]
    (
	@SQstrSalesName nvarchar(50),
	@SQPer1  money,
	@SQPer2	 money,
	@SQPer3  money,
	@SQPer4	 money,
	@SQPer5	 money,
	@SQPer6  money,
	@SQPer7  money,
	@SQPer8	 money,
	@SQPer9  money,
	@SQPer10 money,
	@SQPer11 money,
	@SQPer12 money
	
	)
AS
    BEGIN
      INSERT INTO tblSalesPersonsT VALUES (@SQstrSalesName,@SQPer1,@SQPer2,@SQPer3,@SQPer4,@SQPer5,@SQPer6,@SQPer7,@SQPer8,@SQPer9,@SQPer10,@SQPer11,@SQPer12)
    END;
GO
/****** Object:  StoredProcedure [dbo].[InsertUpdateApprovalsDocLimit]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetAllEmployees]***********/

/*********** Start [InsertUpdateApprovalsDocLimit]***********/

---------------------------------
CREATE  PROCEDURE [dbo].[InsertUpdateApprovalsDocLimit] @UserName AS NVARCHAR(50)
	,@DocLimitIncl AS DECIMAL(18, 2)
	,@PreferredNotification AS NVARCHAR(50)
	,@ApproverType AS INT
	,@IsInsert AS BIT
AS
BEGIN
	IF (@IsInsert = 1)
	BEGIN
		INSERT INTO tblApprovalsDocLimit (
			strUserName
			,DocLimitIncl
			,PreferredNotification
			,intApproverType
			)
		VALUES (
			@UserName
			,@DocLimitIncl
			,@PreferredNotification
			,@ApproverType
			)
	END
	ELSE
	BEGIN
		UPDATE tblApprovalsDocLimit
		SET DocLimitIncl = @DocLimitIncl
			,PreferredNotification = @PreferredNotification
		WHERE strusername = @UserName
			AND intApproverType = @ApproverType
	END
END
GO
/****** Object:  StoredProcedure [dbo].[InsertUpdateApproversVendEmpLimits]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [InsertUpdateApprovalsDocLimit]***********/

/*********** Start [InsertUpdateApproversVendEmpLimits]***********/

---------------------------------
CREATE PROCEDURE [dbo].[InsertUpdateApproversVendEmpLimits] @VendorEmpName AS NVARCHAR(100)
	,@MonthlyDeptLimitIncl AS DECIMAL(18, 2)
	,@ApproverType AS INT
	,@IsInsert AS BIT
	,@OldVendorEmpName AS NVARCHAR(100)
AS
BEGIN
	IF (@IsInsert = 1)
	BEGIN
		INSERT INTO tblApproversVendEmpLimits (
			strVendorEmpName
			,MonthlyDeptLimitIncl
			,intApproverType
			)
		VALUES (
			@VendorEmpName
			,@MonthlyDeptLimitIncl
			,@ApproverType
			)
	END
	ELSE
	BEGIN
		UPDATE tblApproversVendEmpLimits
		SET 
		strVendorEmpName = @VendorEmpName,
		MonthlyDeptLimitIncl = @MonthlyDeptLimitIncl,
		intApproverType = @ApproverType
		WHERE strVendorEmpName = @OldVendorEmpName
			AND intApproverType = @ApproverType
	END
END
GO
/****** Object:  StoredProcedure [dbo].[InsertUpdateCustomerContacts]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[InsertUpdateCustomerContacts]
    @ID BIGINT ,
    @Name NVARCHAR(400) ,
    @CustomerName NVARCHAR(100) ,
    @JobTitle BIGINT ,
    @Email NVARCHAR(300) ,
    @Telephone NVARCHAR(40) ,
    @Fax NVARCHAR(40) ,
    @CellPhone NVARCHAR(40) ,
    @Street1 NVARCHAR(200) ,
    @Street2 NVARCHAR(200) ,
    @City NVARCHAR(100) ,
    @Province NVARCHAR(100) ,
    @Postal NVARCHAR(40) ,
    @Notes NVARCHAR(MAX) ,
    @Facebook NVARCHAR(100) ,
    @LinkedIn NVARCHAR(100) ,
    @Skype NVARCHAR(100) ,
    @Picture IMAGE = NULL ,
    @IsEdit BIT
AS
   BEGIN

        IF @IsEdit = 0
            BEGIN

                INSERT  INTO dbo.tblCustomerContacts
                        ( strName ,
                          strCustName ,
                          intJobTitle ,
                          strEmail ,
                          strTel ,
                          strFax ,
                          strCell ,
                          strStreet1 ,
                          strStreet2 ,
                          strCity ,
                          strProvince ,
                          strPostal ,
                          strNotes ,
                          strFacebook ,
                          strLinkedIn ,
                          strSkype ,
                          imgPicture

                        )
                VALUES  ( @Name , -- strName - nvarchar(200)
                          @CustomerName , -- strCustName - nvarchar(50)
                          @JobTitle , -- intJobTitle - bigint
                          @Email , -- strEmail - nvarchar(150)
                          @Telephone , -- strTel - nvarchar(20)
                          @Fax , -- strFax - nvarchar(20)
                          @CellPhone , -- strCell - nvarchar(20)
                          @Street1 , -- strStreet1 - nvarchar(100)
                          @Street2 , -- strStreet2 - nvarchar(100)
                          @City , -- strCity - nvarchar(50)
                          @Province , -- strProvince - nvarchar(50)
                          @Postal , -- strPostal - nvarchar(20)
                          @Notes , -- strNotes - varchar(max)
                          @Facebook , -- strFacebook - nvarchar(50)
                          @LinkedIn , -- strLinkedIn - nvarchar(50)
                          @Skype , -- strSkype - nvarchar(50)
                          case when convert(varbinary(max),@Picture)  =0x then null else @Picture end-- imgPicture - image
						  --,imgPicture = case when convert(varbinary(max),@SQimgPicture)  =0x then null else @SQimgPicture
                        );

            END

        ELSE
            BEGIN

                UPDATE  dbo.tblCustomerContacts
                SET     strName = @Name ,
                        strCustName = @CustomerName ,
                        intJobTitle = @JobTitle ,
                        strEmail = @Email ,
                        strTel = @Telephone ,
                        strFax = @Fax ,
                        strCell = @CellPhone ,
                        strStreet1 = @Street1 ,
                        strStreet2 = @Street2 ,
                        strCity = @City ,
                        strProvince = @Province ,
                        strPostal = @Postal ,
                        strNotes = @Notes ,
                        strFacebook = @Facebook ,
                        strLinkedIn = @LinkedIn ,
                        strSkype = @Skype ,
                        --imgPicture = @Picture
						imgPicture = case when convert(varbinary(max),@Picture)  =0x then null else @Picture end
                WHERE   lngID = @ID

            END

    END
GO
/****** Object:  StoredProcedure [dbo].[InsertUpdateInvCategory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[SelectJournalDateForInvCategories] ***********/

CREATE PROCEDURE [dbo].[InsertUpdateInvCategory] (
	@Location NVARCHAR(20)
	,@Description NVARCHAR(100)
	,@Inactive BIT
	,@MinMarginPerc DECIMAL
	,@UseMinMarginPerc BIT
	,@AlertOnMinMarginPerc INT
	,@OldName NVARCHAR(20)
	,@IsEdit BIT
	,@categoryInsertTableType AS CategoryInsertTableType READONLY
	,@AccoSetInv NVARCHAR(20)
	,@AccoSetSvc NVARCHAR(20)
	,@AccoSetBO NVARCHAR(20)
	)
AS
BEGIN
	IF @IsEdit = 0
	BEGIN
		INSERT INTO tblInvCat
		VALUES (
			@Location
			,@Description
			,@Inactive
			,@MinMarginPerc
			,@UseMinMarginPerc
			,@AlertOnMinMarginPerc
			,@AccoSetInv
			,@AccoSetSvc
			,@AccoSetBO
			,GetDate()
			,0
			);

		INSERT INTO tblDiscountMatrix
		SELECT tblCustomerCat.strCustCategory
			,tblInvCat.strCategory
			,0
			,GETDATE()
		FROM tblInvCat
		CROSS JOIN tblCustomerCat
		WHERE tblInvCat.strCategory = @Location;

		INSERT INTO tblPricelistsCat
		SELECT tblPricelists.uidPriceBasedID
			,tblPricelists.strPricelist
			,tblInvCat.strCategory
			,0
			,getDate()
		FROM tblInvCat
		CROSS JOIN tblPricelists
		WHERE tblInvCat.strCategory = @Location;

		DELETE
		FROM tblInvCatSec
		WHERE strCategory = @Location;

		IF (
				SELECT COUNT(*)
				FROM @categoryInsertTableType
				) > 0
		BEGIN
			INSERT INTO dbo.tblInvCatSec
			SELECT strCustCategory
				,strUserName
				,GetDate()
			FROM @categoryInsertTableType;
		END
	END
	ELSE
	BEGIN
		UPDATE tblInvCat
		SET strCategory = @Location
			,strDesc = @Description
			,bitInactive = @Inactive
			,decMinMarginPerc = @MinMarginPerc
			,bitUseMinMarginPerc = @UseMinMarginPerc
			,intAlertOnMinMarginPerc = @AlertOnMinMarginPerc
			--IF (@AccoSetInv IS NOT NULL) AND (LEN(@AccoSetInv) > 0)
			,strAcctSetInv = ISNULL(NULLIF(@AccoSetInv, ''), strAcctSetInv) 
			--IF (@AccoSetSvc IS NOT NULL) AND (LEN(@AccoSetSvc) > 0)
				,strAcctSetSvc =ISNULL(NULLIF(@AccoSetSvc, ''), strAcctSetSvc)  
			--IF (@AccoSetBO IS NOT NULL) AND (LEN(@AccoSetBO) > 0)
				,strAcctSetBO = ISNULL(NULLIF(@AccoSetBO, ''), strAcctSetBO) 

			,dteRowUpdated = GetDate()
			,bitDefault = 0
		WHERE strCategory = @OldName;

		DELETE
		FROM tblInvCatSec
		WHERE strCategory = @Location;

		UPDATE tblValueBasedTracking
		SET strCategoryFrom = @Location
		WHERE strCategoryFrom = @OldName;

		UPDATE tblValueBasedTracking
		SET strCategoryTo = @Location
		WHERE strCategoryTo = @OldName;

		IF (
				SELECT COUNT(*)
				FROM @categoryInsertTableType
				) > 0
		BEGIN
			INSERT INTO dbo.tblInvCatSec
			SELECT strCustCategory
				,strUserName
				,getDate()
			FROM @categoryInsertTableType;
		END
	END
END
GO

/****** Object:  StoredProcedure [dbo].[InsertUpdateViewCube]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetViewsList] ***********/

/*********** Start [InsertUpdateViewCube] ***********/

CREATE PROCEDURE [dbo].[InsertUpdateViewCube]
@InsertUpdateType as int,
@OldViewName as nvarchar(100),
@ViewName as nvarchar(100),
@SQLViewName as nvarchar(200),
@ViewDesc as nvarchar(100),
@IsCustomView as bit,
@UsersCubesTT as CommonTableType ReadOnly,
@UserName as nvarchar(40),
@CubeType as int
AS
BEGIN

if @InsertUpdateType = 1 -- Insert
begin
	INSERT INTO tblCubeViews(strViewName,strSQLViewName,strDesc,bitCustomView) VALUES (@ViewName, @SQLViewName, @ViewDesc, @IsCustomView)

	INSERT INTO tblUsersCubes(strUserName,strCubeName,blnIsAvailable) SELECT col01,col02,col03  FROM @UsersCubesTT

	INSERT INTO tblCubeTracking (strViewName, strCubeName, dteSystemDate, strUserName, intType) values (@ViewName, null, GetDate(), @UserName, @CubeType)
end

else if @InsertUpdateType = 2 -- Update
begin
	UPDATE tblCubeViews SET strViewName = @ViewName, strSQLViewName = @SQLViewName, strDesc = @ViewDesc, bitCustomView = @IsCustomView WHERE strViewName = @OldViewName

	INSERT INTO tblCubeTracking (strViewName, strCubeName, dteSystemDate, strUserName, intType) values (@ViewName, null, GetDate(), @UserName, @CubeType)
end

else if @InsertUpdateType = 3 -- Delete
begin
	DELETE FROM tblCubeViews WHERE strViewName = @ViewName

	INSERT INTO tblCubeTracking (strViewName, strCubeName, dteSystemDate, strUserName, intType) values (@ViewName, null, GetDate(), @UserName, @CubeType)
end
END

GO
/****** Object:  StoredProcedure [dbo].[InsertVendPayDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[InsertVendPayDetails]
	@VendPayID bigint,
	@SystemDate smalldatetime,
	@JournalDate smalldatetime,
	@UserName nvarchar(20),
	@JourID bigint,
	@VendName nvarchar(50),
	@Source nvarchar(100) ,
	@BankAcct nvarchar(30),
	@Amount money,
	@Reversed bit,
	@Reversal bit,
	@Comment nvarchar(200),
	@PayBy int,
	@Deposit money,
	@Dept int,
	@Currency nvarchar(3),
	@IsForeign bit,
	@Exchange decimal(20, 6),
	@AmountF money,
	@DepositF money,
	@FromInvPaymt bit,
	@WHTaxCode nvarchar(2),
	@WHPerc money,
	@WHAmt money,
	@WHAmtF money,
	@ForeignBank bit,
	@BankExchange decimal(20, 6),
	@BankCurrency nvarchar(3),
	@BankAmount money,
	@BankAmountF money,
	@PaidBy nvarchar(20),
	@Reference nvarchar(100)
AS
BEGIN
INSERT INTO tblVendPay VALUES (@VendPayID,@SystemDate,@JournalDate,@UserName,@JourID,@VendName,@Source,@BankAcct,@Amount,@Reversed,@Reversal,@Comment,@PayBy,@Deposit,@Dept,@Currency,@IsForeign,@Exchange,@AmountF,@DepositF,@FromInvPaymt,@WHTaxCode,@WHPerc,@WHAmt,@WHAmtF,@ForeignBank,@BankExchange,@BankCurrency,@BankAmount,@BankAmountF,@PaidBy,@Reference)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertVendTrans]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[InsertVendTrans]
    @VendTrID bigint ,
	@VendName nvarchar(50) ,
	@SystemDate smalldatetime ,
	@JournalDate smalldatetime ,
	@UserName nvarchar(20) ,
	@InvPDocID nvarchar(50),
	@InvDepNumber nvarchar(50) ,
	@PoNumber nvarchar(50) ,
	@TransType tinyint ,
	@InvAmount money ,
	@InvAmountF money ,
	@Currency nvarchar(3) ,
	@IsForeign bit ,
	@Exchange decimal(20, 6) ,
	@DocReRated bit ,
	@ReRated datetime,
	@ReRateCumltveValue money ,
	@Settled bit ,
	@DiscAvail money ,
	@DiscAvailF money ,
	@DiscExpires datetime ,
	@DueDate datetime,
	@JEDocID nvarchar(50)
AS
BEGIN
INSERT INTO tblVendTrans VALUES (@VendTrID,@VendName,@SystemDate,@JournalDate,@UserName,@InvPDocID,@InvDepNumber,@PoNumber,@TransType,@InvAmount,@InvAmountF,@Currency,@IsForeign,@Exchange,@DocReRated,@ReRated,@ReRateCumltveValue,@Settled,@DiscAvail,@DiscAvailF,@DiscExpires,@DueDate,@JEDocID)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertVendTransDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

Create PROCEDURE [dbo].[InsertVendTransDT]
	@JournalDate smalldatetime ,
	@VendTrID bigint,
	@VendPayID bigint,
	@Amount money ,
	@TransType tinyint ,
	@AmtOwingAtTime money ,
	@Reversed bit ,
	@AmountF money ,
	@AmtOwingAtTimeF money ,
	@IsForeign bit 
AS
BEGIN
INSERT INTO tblVendTransDT (dteJournalDate,lngVendTrID,lngVendPayID,decAmount,intTransType,decAmtOwingAtTime,bitReversed,decAmountF,decAmtOwingAtTimeF,bitIsForeign)
 VALUES (@JournalDate,@VendTrID,@VendPayID,@Amount,@TransType,@AmtOwingAtTime,@Reversed,@AmountF,@AmtOwingAtTimeF,@IsForeign)
END
GO
/****** Object:  StoredProcedure [dbo].[InsertWmsImport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[InsertWmsImport]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[InsertWmsImport] (    
	@strFilePath AS NVARCHAR(MAX),
	@strUserName AS NVARCHAR(40),  
	@dteCreatedDateTime AS DATETIME,
	@varFile AS VARBINARY(MAX)
 )    
AS    
BEGIN    
 INSERT INTO tblWmsImport(strFilePath,strUserName,dteCreatedDateTime,varFile)  
  values (@strFilePath,@strUserName,@dteCreatedDateTime,@varFile)    
END
GO
/****** Object:  StoredProcedure [dbo].[InsertWSSplitPaymentDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[GetProcessDocDTDataFromInvReq] ***********/

/*********** Start [dbo].[InsertWSSplitPaymentDetails] ***********/
CREATE PROCEDURE [dbo].[InsertWSSplitPaymentDetails]
(
	@InvoiceDocSplitPmtData AS InvoiceDocSplitPmtTableType READONLY
)
AS
BEGIN
	INSERT INTO tblInvoiceDocSplitPmt SELECT * FROM @InvoiceDocSplitPmtData
END
GO
/****** Object:  StoredProcedure [dbo].[InvAsmDocDTBin_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [OrderDocPGDTBin_List] ***********/

/*********** Start [InvAsmDocDTBin_List] ***********/
CREATE PROCEDURE [dbo].[InvAsmDocDTBin_List]
	-- Add the parameters for the stored procedure here
	@DocID nvarchar(50),
	@LineNo int
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT	
		lngID AS 'Id'
		,strAsmDocID AS 'DocId'
		,intLineNo AS 'LineNo'
		,lngBinID AS 'BinId'
		,decQty AS 'Qty'
		,ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblInvAsmDocDTBin.lngBinId),'') AS 'BinCode'
	FROM 
		tblInvAsmDocDTBin 
	WHERE 
		strAsmDocID = @DocID AND intLineNo = @LineNo
END
GO
/****** Object:  StoredProcedure [dbo].[InvAsmDocDTBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [ManWIPCompInvBin_Save] ***********/

/*********** Start [InvAsmDocDTBin_Save] ***********/
CREATE PROCEDURE [dbo].[InvAsmDocDTBin_Save]
(   
	-- Add the parameters for the stored procedure here   
	@InvDocDTBinTable InvDocDTBinTableType READONLY
)
AS  
BEGIN   
-- SET NOCOUNT ON added to prevent extra result sets from   -- interfering with SELECT statements.   
SET NOCOUNT ON;        

			INSERT INTO [dbo].[tblInvAsmDocDTBin]         
				([strAsmDocID] ,[intLineNo] ,[lngBinId] ,[decQty] )      
			SELECT
				[DocId],
				[LineNo],
				[BinId],
				[Qty]
				FROM 
			@InvDocDTBinTable;   
END
GO
/****** Object:  StoredProcedure [dbo].[InvBin_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [CheckBinForDelete] ***********/

/*********** Start [InvBin_Search] ***********/
CREATE PROCEDURE [dbo].[InvBin_Search]  
(    
 @LocationName NVARCHAR(10) = NULL,    
 @BinCode NVARCHAR(50) = NULL,    
 @PartNumber NVARCHAR(50) = NULL,    
 @UserName NVARCHAR(50) = NULL,    
 @SearchText NVARCHAR(100) = NULL,    
 @IsAllowed BIT = NULL,    
 @IsDefault BIT= NULL    
)    
AS    
BEGIN    
 SET NOCOUNT ON;    
    
 DECLARE @PickingBinId Bigint = 0     
 SET @PickingBinId=ISNULL((Select TOP 1 tblInvLocBin.lngID From tblInvLocBin WHERE tblInvLocBin.strLocName=@LocationName AND bitPickingBin = 1),0)    
    
  IF @LocationName is not NULL     
 BEGIN     
  DECLARE @Count INT     
  SET @Count = (SELECT Count(1) from tblInvLocSec Where strLocName = @LocationName)    
    
  IF @Count = 0     
  BEGIN    
   SET @UserName = NULL    
  END    
 END    
     
 IF @IsAllowed = 1    
 BEGIN    
  SELECT distinct  
  tblInvExtBin.strPartNumber AS 'PartNumber'    
  ,tblInvExtBin.strLocName AS 'LocName'    
  ,tblInvExtBin.lngBinID AS 'BinId'    
  ,tblInvExtBin.decAvail AS 'Avail'    
  ,tblInvExtBin.decAlloc AS 'Alloc'    
  ,tblInvExtBin.decOnHand AS 'OnHand'    
  ,tblInvExtBin.decMaximumQty AS 'MaximumQty'    
  ,tblInvExtBin.bitAllowed AS 'IsAllowed'    
  ,tblInvExtBin.bitDefault AS 'IsDefault'    
  ,strDescription AS 'Description'    
  ,tblInvLocBin.strBinCode AS 'BinCode'    
  --,(CAST((CASE WHEN (select count(*) from tblInvTrackingDTBin INNER JOIN tblInvTrackingDT ON tblInvTrackingDT.lngInvTrackID=tblInvTrackingDTBin.lngInvTrackID AND tblInvTrackingDT.intLineNo=tblInvTrackingDTBin.intLineNo WHERE lngBinID =tblInvLocBin.lngId
 --And tblInvTrackingDT.strPartNumber=ISNULL(tblInvExtBin.strPartNumber,@PartNumber))>0 Then 0 Else 1 End) As Bit)) AS 'IsAllowEditing'    
  ,CAST(  
    ISNULL(  
        CASE   
            WHEN (  
                SELECT COUNT(*)  
                FROM tblInvExtBin  
                WHERE strPartNumber = @PartNumber  
            ) > 0 THEN  
                CASE   
                    WHEN EXISTS (  
                        SELECT 1  
                        FROM tblInvTrackingDTBin  
                        INNER JOIN tblInvTrackingDT ON tblInvTrackingDT.lngInvTrackID = tblInvTrackingDTBin.lngInvTrackID  
                            AND tblInvTrackingDT.intLineNo = tblInvTrackingDTBin.intLineNo  
                        WHERE lngBinID = tblInvLocBin.lngId  
                            AND COALESCE(tblInvTrackingDT.strPartNumber, @PartNumber) = @PartNumber  
                    ) THEN 0  
                    ELSE 1  
                END  
            ELSE 1  
        END,  
        1  
    ) AS BIT  
 ) AS 'IsAllowEditing'  
  ,(tblInv.intType) AS 'ItemType'    
  ,(Select TOP 1 dteExpiryDate FROM tblInvLotExt WHere tblInvLotExt.decQty > 0 AND tblInvLotExt.lngBinID = tblInvExtBin.lngBinID AND tblInvLotExt.strLocName = tblInvExtBin.strLocName     
    AND tblInvLotExt.strPartNumber = tblInvExtBin.strPartNumber Order by dteExpiryDate ASC) AS ExpiryDate    
   ,tblInvLocBin.bitPickingBin AS 'PickingBin',@PickingBinId AS PickingBinId    
   ,ISNULL(tblInvLocBin.bitStockingBin,0) As 'StockingBin'    
   FROM tblInvExtBin         
  INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId AND tblInvLocBin.strLocName=tblInvExtBin.strLocName AND bitInactive = 0        
  INNER JOIN tblInv ON tblInv.strPartNumber=tblInvExtBin.strPartNumber        
  LEFT JOIN tblInvLocBinSec ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = tblInvExtBin.strLocName AND ((tblInvLocBinSec.strUserName = @UserName) OR (@UserName IS NULL))    
  WHERE
  ((tblInvExtBin.strLocName = @LocationName) OR (@LocationName IS NULL)) AND
  ((tblInvLocBin.strBinCode = @BinCode) OR (@BinCode IS NULL)) AND
  ((tblInvExtBin.strPartNumber = @PartNumber) OR (@PartNumber IS NULL)) AND    
  ((tblInvExtBin.strLocName LIKE '%' +  @SearchText + '%' OR tblInvLocBin.strBinCode LIKE '%' +  @SearchText + '%' OR tblInvExtBin.strPartNumber LIKE '%' +  @SearchText + '%')  OR (@SearchText IS NULL))      
 END    
 ELSE    
 BEGIN    
  SELECT distinct ISNULL(tblInvExtBin.strPartNumber,@PartNumber) AS 'PartNumber',    
      ISNULL(tblInvExtBin.strLocName,tblInvLocBin.strLocName) AS 'LocName',    
      ISNULL(tblInvExtBin.lngBinId,tblInvLocBin.lngId) AS 'BinId',    
      ISNULL(decAvail,0) AS 'Avail',    
      ISNULL(decAlloc,0) AS 'Alloc',    
      ISNULL(decOnHand,0) AS 'OnHand',    
      ISNULL(decMaximumQty,0) AS 'MaximumQty',    
      ISNULL(bitAllowed,0) AS 'IsAllowed',    
      ISNULL(bitDefault,0) AS 'IsDefault',    
      strDescription AS 'Description',    
      tblInvLocBin.strBinCode AS 'BinCode',    
      --(CAST(IsNull((CASE WHEN (select count(*) from tblInvExtBin where strPartNumber = @PartNumber)>0 Then (CASE WHEN (select count(*) from tblInvTrackingDTBin INNER JOIN tblInvTrackingDT ON tblInvTrackingDT.lngInvTrackID=tblInvTrackingDTBin.lngInvTrack
--ID AND tblInvTrackingDT.intLineNo=tblInvTrackingDTBin.intLineNo WHERE lngBinID =tblInvLocBin.lngId And tblInvTrackingDT.strPartNumber=ISNULL(tblInvExtBin.strPartNumber,@PartNumber))>0 Then 0 Else 1 End) Else 1 End),1) As Bit)) AS 'IsAllowEditing'    
   CAST(  
  ISNULL(  
        CASE   
            WHEN (  
                SELECT COUNT(*)  
                FROM tblInvExtBin  
                WHERE strPartNumber = @PartNumber  
            ) > 0 THEN  
                CASE   
                    WHEN EXISTS (  
                        SELECT 1  
                        FROM tblInvTrackingDTBin  
                        INNER JOIN tblInvTrackingDT ON tblInvTrackingDT.lngInvTrackID = tblInvTrackingDTBin.lngInvTrackID  
                            AND tblInvTrackingDT.intLineNo = tblInvTrackingDTBin.intLineNo  
                        WHERE lngBinID = tblInvLocBin.lngId  
                            AND COALESCE(tblInvTrackingDT.strPartNumber, @PartNumber) = @PartNumber  
                    ) THEN 0  
                    ELSE 1  
                END  
            ELSE 1  
        END,  
        1  
  ) AS BIT  
    ) AS 'IsAllowEditing'  
      ,(ISNULL(tblInv.intType,1)) AS 'ItemType'    
      ,(Select TOP 1 dteExpiryDate FROM tblInvLotExt WHere tblInvLotExt.decQty > 0 AND tblInvLotExt.lngBinID = tblInvExtBin.lngBinID AND tblInvLotExt.strLocName = tblInvExtBin.strLocName     
  AND tblInvLotExt.strPartNumber = tblInvExtBin.strPartNumber Order by dteExpiryDate ASC) AS ExpiryDate    
  ,tblInvLocBin.bitPickingBin AS 'PickingBin'    
  ,ISNULL(tblInvLocBin.bitStockingBin,0) As 'StockingBin',    
  @PickingBinId AS PickingBinId      
  FROM tblInvLocBin        
  LEFT JOIN tblInvExtBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId AND tblInvLocBin.strLocName=tblInvExtBin.strLocName AND tblInvExtBin.strPartNumber=@PartNumber        
  LEFT JOIN tblInv ON tblInv.strPartNumber=ISNULL(tblInvExtBin.strPartNumber,@PartNumber)        
  LEFT JOIN tblInvLocBinSec ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = tblInvExtBin.strLocName AND ((tblInvLocBinSec.strUserName = @UserName) OR (@UserName IS NULL))       
  WHERE tblInvLocBin.strLocName = @LocationName    
  AND tblInvLocBin.bitInactive = 0        
  AND ((tblInvLocBin.strBinCode = @BinCode) OR (@BinCode IS NULL))     
  AND ((tblInvLocBin.strLocName LIKE '%' + @SearchText + '%' OR tblInvLocBin.strBinCode LIKE '%' + @SearchText + '%') OR (@SearchText IS NULL))      
  
 END    
END  
GO
/****** Object:  StoredProcedure [dbo].[InvBinExt_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InvBinExt_Save] ***********/

/*********** Start [InvBinExt_Delete] ***********/
CREATE PROCEDURE [dbo].[InvBinExt_Delete]
( 
	-- Add the parameters for the stored procedure here   
	@InvBinExtTable InvBinExtTableType READONLY
)
AS  
BEGIN   
	SET NOCOUNT ON;
	DECLARE @NumberofIntType INT,
            @RowCount INT

	-- get the number of items
    SET @NumberofIntType = (SELECT  count(*)
                            FROM @InvBinExtTable)

	SET @RowCount = 0           -- set the first row to 0

	--Create Table Variable
	DECLARE @InvBinExtTemp TABLE (
		RowNumber INT IDENTITY(0,1),
		PartNumber nvarchar(50),
		LocName nvarchar(10),		
		BinID bigint,
		Avail money,
		Alloc money,
		OnHand money,
		MaximumQty money,
		IsAllowed bit,
		IsDefault bit,
		RowId int,
		IssueQty money
	)

	INSERT INTO @InvBinExtTemp
		SELECT * FROM @InvBinExtTable;

	-- loop through the records 
    -- loop until the rowcount = number of records in your table
    WHILE @RowCount <= @NumberofIntType
        BEGIN
            -- do your process here
			DECLARE @PartNumber nvarchar(50)
			DECLARE @LocationName nvarchar(10)
			DECLARE @BinId bigint

			SELECT 
				@PartNumber = [PartNumber],
				@LocationName = [LocName],
				@BinId = [BinID]
			FROM 
				@InvBinExtTemp 
			WHERE 
				RowNumber = @RowCount

			--VB SP START
			DELETE FROM tblInvExtBin
			WHERE strPartNumber = @PartNumber AND strLocName = @LocationName AND lngBinId = @BinId  
			--VB SP END

            SET @RowCount = @RowCount + 1
        END
	 
END
GO
/****** Object:  StoredProcedure [dbo].[InvBinExt_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InvIssReqDocDTBin_Save] ***********/

/*********** Start [InvBinExt_Save] ***********/
CREATE PROCEDURE [dbo].[InvBinExt_Save]
(
	@InvBinExtTable InvBinExtTableType READONLY
	--@SQlngId BIGINT
	--,@SQstrOrdPGDocID NVARCHAR(50)
	--,@SQintLineNo INT
	--,@SQlngBinId BIGINT
	--,@SQdecQty MONEY
)
AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @NumberofIntType INT,
            @RowCount INT

	-- get the number of items
    SET @NumberofIntType = (SELECT  count(*)
                            FROM @InvBinExtTable)

	SET @RowCount = 0           -- set the first row to 0

	--Create Table Variable
	DECLARE @InvBinExtTemp TABLE (
		RowNumber INT IDENTITY(0,1),
		PartNumber nvarchar(50),
		LocName nvarchar(10),		
		BinID bigint,
		Avail money,
		Alloc money,
		OnHand money,
		MaximumQty money,
		IsAllowed bit,
		IsDefault bit,
		RowId int,
		IssueQty money
	)
	

	INSERT INTO @InvBinExtTemp
		SELECT * FROM @InvBinExtTable;

	-- loop through the records 
    -- loop until the rowcount = number of records in your table
    WHILE @RowCount <= @NumberofIntType
        BEGIN
            -- do your process here
			DECLARE @PartNumber nvarchar(50)
			DECLARE @LocationName nvarchar(10)
			DECLARE @BinId bigint
			DECLARE @Avail money
			DECLARE @Alloc money
			DECLARE @OnHand money
			DECLARE @MaximumQty money
			DECLARE @IsAllowed bit
			DECLARE @IsDefault bit
			SELECT 
				@PartNumber = [PartNumber],
				@LocationName = [LocName],
				@BinId = [BinID],
				@Avail = [Avail],
				@Alloc = [Alloc],
				@OnHand = [OnHand],
				@MaximumQty = [MaximumQty],
				@IsAllowed = [IsAllowed],
				@IsDefault = [IsDefault]
			FROM 
				@InvBinExtTemp 
			WHERE 
				RowNumber = @RowCount

			--VB SP START
			IF (SELECT COUNT(*) FROM  tblInvExtBin WHERE strPartNumber = @PartNumber AND strLocName = @LocationName AND lngBinId = @BinId) = 0
				BEGIN
					INSERT INTO [dbo].[tblInvExtBin]
						   ([strPartNumber]
						   ,[strLocName]
						   ,[lngBinId]
						   ,[decAvail]
						   ,[decAlloc]
						   ,[decOnHand]
						   ,[decMaximumQty]
						   ,[bitAllowed]
						   ,[bitDefault])
					 VALUES
						   (@PartNumber,@LocationName,@BinId,@Avail,@Alloc,@OnHand,@MaximumQty,@IsAllowed,@IsDefault)
				END
			ELSE
				BEGIN
					UPDATE [dbo].[tblInvExtBin]
					   SET 
						   [decAvail] = @Avail
						  ,[decAlloc] = @Alloc
						  ,[decOnHand] = @OnHand
						  ,[decMaximumQty] = @MaximumQty
						  ,[bitAllowed] = @IsAllowed
						  ,[bitDefault] = @IsDefault
					 WHERE 
						strPartNumber = @PartNumber 
						AND strLocName = @LocationName 
						AND lngBinId = @BinId
				END
			--VB SP END

            SET @RowCount = @RowCount + 1
        END
END
GO
/****** Object:  StoredProcedure [dbo].[InvBinSearchLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [ImportCustomerItems] (Control panel) **********/

/********* Start [InvBinSearchLocation] (Control panel) **********/


CREATE PROCEDURE [dbo].[InvBinSearchLocation]
	@Location nvarchar(10) = NULL
AS
BEGIN
	SET NOCOUNT ON;
	SELECT	tblInvExtBin.strPartNumber As PartNumber,
			tblInv.strDesc As [Desc],
			tblInvLocBin.strBinCode As BinCode,
			tblInvLocBin.strDescription AS BinDesc,
			tblInvExtBin.bitAllowed As IsAllowed,
			tblInvLocBin.bitPickingBin  As PickingBin,
			 tblInvLocBin.bitReceivingBin  As ReceivingBin,
			 tblInvLocBin.bitProductionBin As ProductionBin,
			 tblInvLocBin.bitStockingBin   As StockingBin,	
			--CASE bitAllowed WHEN 1 THEN 'true' ELSE 'false' END As IsAllowed,
			tblInvExtBin.decMaximumQty As MaximumQty
	FROM tblInvExtBin 
	INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId AND tblInvLocBin.strLocName=tblInvExtBin.strLocName
	INNER JOIN tblInv ON tblInv.strPartNumber = tblInvExtBin.strPartNumber
	WHERE ((tblInvExtBin.strLocName = @Location) OR (@Location IS NULL))
	AND (tblInv.intType = 1)
END
GO
/****** Object:  StoredProcedure [dbo].[InvDocParcelInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [InvDocParcelInsert] ***********/
CREATE PROCEDURE [dbo].[InvDocParcelInsert]
(
	@DocNumber AS NVARCHAR(50),
	@WaybillNo AS NVARCHAR(50),
	@ServiceType AS NVARCHAR(50),
	@NoOfParcel AS MONEY,
	@Mass AS MONEY,
	@Height AS MONEY,
	@Length AS MONEY,
	@Width AS MONEY,
	@ReceiverAddr1 AS NVARCHAR(100),
	@ReceiverAddr2 AS NVARCHAR(100),
	@ReceiverAddr3 AS NVARCHAR(50),
	@ReceiverAddr4 AS NVARCHAR(50),
	@ReceiverAddr5 AS NVARCHAR(20)
)
AS
BEGIN
	DELETE FROM tblInvoiceDocParcels WHERE strInvDocID=@DocNumber

	INSERT INTO [dbo].[tblInvoiceDocParcels]
           ([strInvDocID]
           ,[strWaybillNo]
           ,[strServiceType]
           ,[decNoOfParcel]
           ,[decMass]
           ,[decHeight]
           ,[decLength]
           ,[decWidth]
		   ,[strReceiverAddr1]
           ,[strReceiverAddr2]
           ,[strReceiverAddr3]
           ,[strReceiverAddr4]
           ,[strReceiverAddr5])
     VALUES
           (@DocNumber,@WaybillNo,@ServiceType,@NoOfParcel,@Mass,@Height,@Length,@Width,@ReceiverAddr1,@ReceiverAddr2,@ReceiverAddr3,@ReceiverAddr4,@ReceiverAddr5)
END
GO
/****** Object:  StoredProcedure [dbo].[InventoryImageCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetOrderDocDT] ***********/

/*********** End [InventoryImageCount] ***********/
CREATE PROCEDURE [dbo].[InventoryImageCount]
	@PartNumber AS NVARCHAR(50)
AS
BEGIN
	SELECT ISNULL(COUNT(*), 0) FROM tblInvImg WHERE strPartNumber = @PartNumber 
END
GO
/****** Object:  StoredProcedure [dbo].[InvImportDocSave]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [PODsSalectAll] ***********/

CREATE PROCEDURE [dbo].[InvImportDocSave] (
	@tblDocuments InvDocumentsTableType READONLY
	,@startDate DATETIME
	,@endDate DATETIME
	)
AS
BEGIN
	DECLARE @tbl AS TABLE (
		ID NVARCHAR(200) DEFAULT ''
		,lngDocID BIGINT
		)

	INSERT INTO @tbl (
		ID
		,lngDocID
		)
	SELECT tblInvoiceDoc.strInvDocID
		,tblDocuments.lngDocumentID
	FROM tblInvoiceDoc
	INNER JOIN tblDocuments ON tblInvoiceDoc.strInvDocID = tblDocuments.strDocumentNumber
	WHERE dteJournalDate BETWEEN @startDate
			AND @endDate

	INSERT INTO @tbl (
		ID
		,lngDocID
		)
	SELECT tblOrderDocDA.strOrdDADocID
		,tblDocuments.lngDocumentID
	FROM tblOrderDocDA
	INNER JOIN tblDocuments ON tblOrderDocDA.strOrdDADocID = tblDocuments.strDocumentNumber
	WHERE dteJournalDate BETWEEN @startDate
			AND @endDate

	DELETE
	FROM @tbl
	WHERE lngDocID IS NULL

	--DELETE FROM tblDocuments WHERE lngDocumentID NOT IN (SELECT lngDocumentID FROM @tblDocuments ) AND strType = 'POD' 
	DELETE
	FROM tblDocuments
	WHERE lngDocumentID IN (
			SELECT lngDocID
			FROM @tbl
			)
		AND lngDocumentID NOT IN (
			SELECT lngDocumentID
			FROM @tblDocuments
			)
		AND strType = 'POD'

	UPDATE tblDocuments
	SET tblDocuments.strFileName = temptblDocuments.strFileName
		,tblDocuments.strDescription = temptblDocuments.strDescription
		,tblDocuments.strExtension = temptblDocuments.strExtension
		,tblDocuments.varFile = temptblDocuments.varFile
		,tblDocuments.dteModified = temptblDocuments.dteModified
		,tblDocuments.strType = temptblDocuments.strType
		,tblDocuments.intSize = temptblDocuments.intSize
		,tblDocuments.strUserName = temptblDocuments.strUserName
		,tblDocuments.bitEnc = temptblDocuments.bitEnc
		,tblDocuments.intAttachOn = temptblDocuments.intAttachOn
	FROM @tblDocuments temptblDocuments
	WHERE tblDocuments.lngDocumentID = temptblDocuments.lngDocumentID

	INSERT INTO tblDocuments
	SELECT strDocumentNumber
		,strFileName
		,strDescription
		,strExtension
		,varFile
		,dteModified
		,strType
		,intSize
		,strUserName
		,bitEnc
		,intAttachOn
		,0
		,0
		,0
		,null
		,0
		,''
	FROM @tblDocuments
	WHERE lngDocumentID = 0
END
GO
/****** Object:  StoredProcedure [dbo].[InvIssReqDocDTBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InvoiceDocBin_Save] ***********/


/*********** Start [InvIssReqDocDTBin_Save] ***********/
CREATE PROCEDURE [dbo].[InvIssReqDocDTBin_Save]
( 
	-- Add the parameters for the stored procedure here   
	@InvDocDTBinTable InvDocDTBinTableType READONLY
)
AS  
BEGIN   
-- SET NOCOUNT ON added to prevent extra result sets from   -- interfering with SELECT statements.   
SET NOCOUNT ON;        
-- Insert statements for procedure here   
	 INSERT INTO [dbo].[tblInvIssReqDocDTBin]         
			([strInvIssReqDocID] ,[intLineNo] ,[lngBinId] ,[decQty] )      
		SELECT
				[DocId],
				[LineNo],
				[BinId],
				[Qty]
				FROM 
			@InvDocDTBinTable;   
END
GO
/****** Object:  StoredProcedure [dbo].[InvLocationBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvExtBinData] ***********/

/*********** Start [InvLocationBin_Save] ***********/
CREATE PROCEDURE [dbo].[InvLocationBin_Save]   
( 
	-- Add the parameters for the stored procedure here   
	@Id BIGINT,   
	@LocationName NVARCHAR(10),   
	@BinCode NVARCHAR(50),   
	@Description NVARCHAR(500),   
	@Capacity MONEY,   
	@CapacityUnit NVARCHAR(15),
	@PickingBin BIT,
	@ReceivingBin bit,
	@ProductionBin bit,
	@StockingBin bit,
	@Inactive bit
   
)
AS  
BEGIN   
-- SET NOCOUNT ON added to prevent extra result sets from   -- interfering with SELECT statements.   
SET NOCOUNT ON;        
-- Insert statements for procedure here   
	IF @Id <> 0    
		BEGIN     
			UPDATE [dbo].[tblInvLocBin]       
				SET 
					[strLocName] = @LocationName,       
					[strBinCode] = @BinCode,      
					[strDescription] = @Description,       
					[decCapacity] = @Capacity,      
					[strCapacityUnit] = @CapacityUnit,
					[bitPickingBin] = @PickingBin,
					[bitInactive] = @Inactive,
					[bitReceivingBin] = @ReceivingBin,
					[bitProductionBin] = @ProductionBin,
					[bitStockingBin] = @StockingBin     
			WHERE      
				[lngId] = @Id    
		END   
	ELSE    
		BEGIN     
			INSERT INTO [dbo].[tblInvLocBin]         
				([strLocName] ,[strBinCode] ,[strDescription] ,[decCapacity] ,[strCapacityUnit], [bitPickingBin], [bitInactive], [bitReceivingBin], [bitProductionBin], [bitStockingBin])      
			VALUES         
				(@LocationName, @BinCode, @Description, @Capacity, @CapacityUnit, @PickingBin , @Inactive, @ReceivingBin, @ProductionBin, @StockingBin) 
			SET @Id = (SELECT IDENT_CURRENT('tblInvLocBin') AS BIGINT);
		END  
	SELECT @Id AS 'Id';
END
GO
/****** Object:  StoredProcedure [dbo].[InvLocationBin_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InvLocationBin_Save] ***********/

/*********** Start [InvLocationBin_Search] ***********/
CREATE PROCEDURE [dbo].[InvLocationBin_Search]
(
	@LocationName nvarchar(10) = NULL,
	@BinCode nvarchar(50) = NULL,
	@SearchText nvarchar(100) = NULL
)
AS
BEGIN
	SET NOCOUNT ON;
	SELECT lngID AS 'Id'
		,strLocName AS 'BinCode'
		,strBinCode AS 'Description'
		,strDescription AS 'LocName'
		,decCapacity AS 'Capacity'
		,strCapacityUnit AS 'CapacityUnit'
		,bitPickingBin AS 'PickingBin'
		,bitInactive AS  'Inactive'
		,ISNULL(bitReceivingBin,0) AS 'ReceivingBin'
		,ISNULL(bitProductionBin,0) AS 'ProductionBin'
		,ISNULL(bitStockingBin,0) AS 'StockingBin'
	 FROM tblInvLocBin WHERE 
	((strLocName = @LocationName) OR (@LocationName IS NULL)) AND
	((strBinCode = @BinCode) OR (@BinCode IS NULL)) AND
	((strLocName LIKE '%' +  @SearchText + '%' OR strBinCode LIKE '%' +  @SearchText + '%' OR strDescription LIKE '%' +  @SearchText + '%') OR (@SearchText IS NULL))
END
GO
/****** Object:  StoredProcedure [dbo].[InvLotExtStockPickInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/**************End [InvLotExtStockPickUpdate]******************/

/*************Start [InvLotExtStockPickInsert]**************************/

CREATE PROCEDURE [dbo].[InvLotExtStockPickInsert]
(
	@PartNumber AS NVARCHAR(50),
	@LotNumber AS NVARCHAR(100),
	@LocName AS NVARCHAR(10),
	@Qty AS MONEY,
	@IsExpiryDate AS BIT,
	@ExpiryDate AS SMALLDATETIME,
	@UpdatedDate AS SMALLDATETIME,
	@BinId AS BIGINT
)

AS
BEGIN
	INSERT INTO tblInvLotExt
	 ([strPartNumber]
     ,[strLotNumber]
     ,[strLocName]
     ,[decQty]
     ,[bitExpiryDate]
     ,[dteExpiryDate]
     ,[dteUpdatedDate]
     ,[lngBinID]
	 ,[dteRowUpdated])	
VALUES (
	 @PartNumber
	,@LotNumber
	,@LocName
	,@Qty
	,@IsExpiryDate
	,@ExpiryDate
	,@UpdatedDate
	,@BinId,
	GETDATE()
	)
END
GO
/****** Object:  StoredProcedure [dbo].[InvLotExtStockPickUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/***********End [GetQtyStockPick]********************/

/*************Start [InvLotExtStockPickUpdate]**************/
CREATE PROCEDURE [dbo].[InvLotExtStockPickUpdate]
(
	@Qty AS MONEY,
	@UpdatedDate AS SMALLDATETIME,
	@PartNumber	AS NVARCHAR(50),
	@LotNumber AS NVARCHAR(100),
	@LocName AS NVARCHAR(10),
	@BinID AS BIGINT,
	@IsPickBin AS BIT,
	@IsExpiryDate AS BIT,
	@ExpiryDate AS SMALLDATETIME
)
AS
BEGIN
IF @IsPickBin = 0
	BEGIN
		UPDATE tblInvLotExt
		SET decQty = decQty + @Qty
		,dteUpdatedDate = @UpdatedDate
		,bitExpiryDate = @IsExpiryDate
	    ,dteExpiryDate = @ExpiryDate
		WHERE strPartNumber = @PartNumber
		AND strLotNumber = @LotNumber
		AND strLocName = @LocName
		AND lngBinId = @BinID		
	END
ELSE
	BEGIN
		UPDATE tblInvLotExt
		SET decQty = decQty - @Qty
		,dteUpdatedDate = @UpdatedDate
		,bitExpiryDate = @IsExpiryDate
	    ,dteExpiryDate = @ExpiryDate
		WHERE strPartNumber = @PartNumber
		AND strLotNumber = @LotNumber
		AND strLocName = @LocName
		AND lngBinId = @BinID
	END
END
GO
/****** Object:  StoredProcedure [dbo].[InvLotExtStockPickUpdateOld]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [UpdatePickTicketsInvTrackId] **********/

/********* Start [InvLotExtStockPickUpdateOld] **********/

CREATE PROCEDURE [dbo].[InvLotExtStockPickUpdateOld]
(
	@Qty AS MONEY,
	@UpdatedDate AS SMALLDATETIME,
	@PartNumber	AS NVARCHAR(50),
	@LotNumber AS NVARCHAR(100),
	@LocName AS NVARCHAR(10),
	@BinID AS BIGINT,
	@IsPickBin AS BIT
)
AS
BEGIN
IF @IsPickBin = 0
	BEGIN
		UPDATE tblInvLotExt
		SET decQty = decQty + @Qty
		,dteUpdatedDate = @UpdatedDate
		WHERE strPartNumber = @PartNumber
		AND strLotNumber = @LotNumber
		AND strLocName = @LocName
		AND lngBinId = @BinID
	END
ELSE
	BEGIN
		UPDATE tblInvLotExt
		SET decQty = decQty - @Qty
		,dteUpdatedDate = @UpdatedDate
		WHERE strPartNumber = @PartNumber
		AND strLotNumber = @LotNumber
		AND strLocName = @LocName
		AND lngBinId = @BinID
	END
END
GO
/****** Object:  StoredProcedure [dbo].[InvoiceDocBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InvRepackDocDTBin_Save] ***********/

/*********** Start [InvoiceDocBin_Save] ***********/
CREATE PROCEDURE [dbo].[InvoiceDocBin_Save]
(
	@InvDocDTBinTable InvDocDTBinTableType READONLY
	--@SQlngId BIGINT
	--,@SQstrOrdPGDocID NVARCHAR(50)
	--,@SQintLineNo INT
	--,@SQlngBinId BIGINT
	--,@SQdecQty MONEY
)
AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @NumberofIntType INT,
            @RowCount INT

	-- get the number of items
    SET @NumberofIntType = (SELECT  count(*)
                            FROM @InvDocDTBinTable)

	SET @RowCount = 0           -- set the first row to 0

	--Create Table Variable
	DECLARE @InvDocDTTemp TABLE (
		RowNumber INT IDENTITY(0,1),
		Id BIGINT,
		DocId NVARCHAR(50),		
		[LineNo] INT,
		BinId BIGINT,
		Qty MONEY,
		PickingBin BIT
	)

	INSERT INTO @InvDocDTTemp
		SELECT * FROM @InvDocDTBinTable;

	-- loop through the records 
    -- loop until the rowcount = number of records in your table
    WHILE @RowCount < @NumberofIntType
        BEGIN
            -- do your process here
			DECLARE @Id BIGINT
			DECLARE @DocID NVARCHAR(50)
			DECLARE @LineNo INT
			DECLARE @BinId BIGINT
			DECLARE @Qty MONEY
			SELECT 
				@Id = [Id],
				@DocID = DocId,
				@LineNo = [LineNo],
				@BinId = [BinId],
				@Qty = [Qty]
			FROM 
				@InvDocDTTemp 
			WHERE 
				RowNumber = @RowCount

			--VB SP START
			IF NOT EXISTS (SELECT lngId FROM tblInvoiceDocDTBin WHERE lngId = @Id)
				BEGIN
						INSERT INTO tblInvoiceDocDTBin
									   (strInvDocID
									   ,intLineNo
									   ,lngBinId
									   ,decQty)
						VALUES
									   (@DocID
									   ,@LineNo
									   ,@BinId
									   ,@Qty
									   )
				END
			ELSE
				BEGIN
						UPDATE tblInvoiceDocDTBin
						SET strInvDocID = @DocID
							,intLineNo = @LineNo
							,lngBinId = @BinId
							,decQty = @Qty
						WHERE lngId = @Id
				END
			--VB SP END

            SET @RowCount = @RowCount + 1
        END
END
GO
/****** Object:  StoredProcedure [dbo].[InvoiceDocDimensionsInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [OrderDocDTSerialData] ***********/

/*********** Start [InvoiceDocDimensionsInsert] ***********/
CREATE PROCEDURE [dbo].[InvoiceDocDimensionsInsert]
 (
	@InvoiceDocDimensionsData InvoiceDocDimensionsTableType READONLY,
	@IsDeleteRecordFirst AS BIT,
	@DocumentNumber As NVARCHAR(50)
 )
AS
BEGIN
	IF @IsDeleteRecordFirst = 1
	BEGIN
		DELETE FROM tblInvoiceDocDimensions WHERE strInvDocID = @DocumentNumber	
	END

	INSERT INTO [dbo].[tblInvoiceDocDimensions]
           ([strInvDocID]
           ,[intDocLineNo]
           ,[intDimLineNo]
           ,[intDimColNo]
           ,[decValue]
           ,[strDimColHeading]
           ,[bitVisible]
           ,[bitAllowEditing])     
          SELECT * FROM @InvoiceDocDimensionsData
END
GO
/****** Object:  StoredProcedure [dbo].[InvoiceDocDTBin_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InvBin_Search] ***********/

/*********** Start [InvoiceDocDTBin_List] ***********/
CREATE PROCEDURE [dbo].[InvoiceDocDTBin_List] (
	-- Add the parameters for the stored procedure here
	@DocID NVARCHAR(50)
	,@LineNo INT
	)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	-- Insert statements for procedure here
	DECLARE @count1 INT

	SELECT @count1 = COUNT(*)
	FROM tblInvoiceDocDTBin
	WHERE strInvDocID = @DocID
		AND intLineNo = @LineNo

	IF (@count1 != 0)
	BEGIN
		SELECT lngID AS 'Id'
			,strInvDocID AS 'DocId'
			,intLineNo AS 'LineNo'
			,lngBinID AS 'BinId'
			,decQty AS 'Qty'
			,ISNULL((
					SELECT strBinCode
					FROM tblInvLocBin
					WHERE lngId = tblInvoiceDocDTBin.lngBinId
					), '') AS 'BinCode'
		FROM tblInvoiceDocDTBin
		WHERE strInvDocID = @DocID
			AND intLineNo = @LineNo
	END
	ELSE								--For WorkShop
	BEGIN
		SELECT  ROW_NUMBER() Over (Order by tblWSInvoiceDoc.strInvDocID)  AS 'Id'
			,tblWSInvoiceDoc.strInvDocID AS 'DocId'
			,tblWSWIPCompInvBin.[LineNo] AS 'LineNo'
			,tblWSWIPCompInvBin.BinID AS 'BinId'
			,SUM(CASE WHEN [tblWSWIPCompDT].[Type] = 0 THEN tblWSWIPCompInvBin.Qty ELSE (tblWSWIPCompInvBin.Qty * -1) END) AS 'Qty'
			,ISNULL((
					SELECT strBinCode
					FROM tblInvLocBin
					WHERE lngId = tblWSWIPCompInvBin.BinID
					), '') AS 'BinCode'
		FROM tblWSInvoiceDoc
		INNER JOIN tblWSWIP ON tblWSWIP.JBDocID = tblWSInvoiceDoc.ProcessDocID
		INNER JOIN tblWSWIPCompDT ON tblWSWIPCompDT.WIPDocID = tblWSWIP.WIPDocID
		INNER JOIN [tblWSWIPCompInvBin] ON [tblWSWIPCompInvBin].WIPDocID = tblWSWIP.WIPDocID AND [tblWSWIPCompInvBin].WIPDocID = tblWSWIPCompDT.WIPDocID
		AND [tblWSWIPCompInvBin].[LineNo] = tblWSWIPCompDT.[LineNo]
		WHERE tblWSInvoiceDoc.strInvDocID = @DocID
			AND tblWSWIPCompInvBin.[LineNo] = @LineNo
			Group by tblWSInvoiceDoc.strInvDocID,tblWSWIPCompInvBin.[LineNo],tblWSWIPCompInvBin.BinID
	END
END
GO
/****** Object:  StoredProcedure [dbo].[InvoiceDocParcelsDimensionsInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InvDocParcelInsert] ***********/

/*********** Start [InvoiceDocParcelsDimensionsInsert] ***********/
CREATE PROCEDURE [dbo].[InvoiceDocParcelsDimensionsInsert]
(
	@InvoiceDocParcelsDimensionsData AS OrderDocParcelsDimensionsTableType READONLY,
	@DocNumber AS NVARCHAR(50)
)
AS
BEGIN
	INSERT INTO tblInvoiceDocParcelsDimensions
		    ([strInvDocID]
           ,[intLineNo]
           ,[strParcelType]
           ,[decMass]
           ,[decHeight]
           ,[decLength]
           ,[decWidth])
	SELECT @DocNumber,[LineNo],[ParcelType],[Mass] ,[Height],[Length] ,[Width] FROM @InvoiceDocParcelsDimensionsData 
END
GO
/****** Object:  StoredProcedure [dbo].[InvoiceDocPDimensionsInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[InvoiceDocPDimensionsInsert]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[InvoiceDocPDimensionsInsert]
 (
	@InvoiceDocPDimensionsData InvoiceDocDimensionsTableType READONLY,
	@IsDeleteRecordFirst AS BIT,
	@DocumentNumber As NVARCHAR(50)
 )
AS
BEGIN
	IF @IsDeleteRecordFirst = 1
	BEGIN
		DELETE FROM tblInvoiceDocPDimensions WHERE strInvPDocID = @DocumentNumber	
	END

	INSERT INTO [dbo].[tblInvoiceDocPDimensions]
           ([strInvPDocID]
           ,[intDocLineNo]
           ,[intDimLineNo]
           ,[intDimColNo]
           ,[decValue]
           ,[strDimColHeading]
           ,[bitVisible]
           ,[bitAllowEditing])     
          SELECT * FROM @InvoiceDocPDimensionsData
END
GO
/****** Object:  StoredProcedure [dbo].[InvoiceDocPDTBin_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [OrderDocDADTBin_List] ***********/

/*********** Start [InvoiceDocPDTBin_List] ***********/
CREATE PROCEDURE [dbo].[InvoiceDocPDTBin_List]
(
	-- Add the parameters for the stored procedure here
	@InvPDocID nvarchar(50)
)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT	
		lngID AS 'Id'
		,strInvPDocID AS 'DocId'
		,intLineNo AS 'LineNo'
		,lngBinID AS 'BinId'
		,decQty AS 'Qty'
		,ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblInvoiceDocPDTBin.lngBinId),'') AS 'BinCode'
	FROM 
		tblInvoiceDocPDTBin
	WHERE 
		strInvPDocID IN (SELECT VALUE FROM dbo.fnSplitStringAsTable(@InvPDocID,','))
END
GO
/****** Object:  StoredProcedure [dbo].[InvoiceDocREVInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvUpsellData] ***********/

/*********** Start [InvoiceDocREVInsert] ***********/
Create PROCEDURE [dbo].[InvoiceDocREVInsert]	
@Module AS INT,
@DocNumber AS NVARCHAR(50)
AS
DECLARE @RevisionId AS BIGINT
DECLARE @RevisioNumber AS BIGINT
BEGIN	
	SELECT @RevisionId = ISNULL(MAX(lngEntID),0) + 1 FROM tblInvoiceDocREV
	SELECT @RevisioNumber = ISNULL(MAX(intRevisionNumber),0) + 1 FROM tblInvoiceDocREV WHERE strInvDocID = @DocNumber

INSERT INTO tblInvoiceDocREV (
	lngEntID
	,strInvDocID
	,lngInvTrackID
	,lngJourID
	,dteSystemDate
	,dteJournalDate
	,dteRequired
	,strUserName
	,strCustName
	,strSoldTo
	,strShipTo
	,strReference
	,decSubTotal
	,decVAT
	,decTotal
	,bitFromSO
	,strOrdDocID
	,bitHistoryTrans
	,strNotes
	,bitPrinted
	,bitEmailed
	,intPaidBy
	,intAccount
	,strSalesName
	,strAddInfo
	,bitReserved
	,strCurrency
	,bitIsForeign
	,decSubTotalF
	,decVATF
	,decTotalF
	,decExchange
	,strTerm
	,intDept
	,strField1
	,strField2
	,strField3
	,strField4
	,strField5
	,strField6
	,strField7
	,strField8
	,strField9
	,strField10
	,strField11
	,strField12
	,strSubFormated
	,strVATFormatted
	,strTotFormatted
	,dteField13
	,dteField14
	,decDiscPerc
	,decDiscAmt
	,decDiscAmtF
	,strDiscFormatted
	,strOrdFQDocID
	,strStatusTypeCode
	,strCNReasonCode
	,bitBookmark
	,dteSystemDateTime
	,strPaidBy
	,intSentDoc
	,strVAT
	,strDelMethodCode
	,decTotalWeight
	,decTotalVolWeight
	,decDeliveryCost
	,decDeliveryCostF
	,strDeliveryCostFormatted
	,intRevisionNumber
	,dteRevisionDate
	,strUserCreated
	,bitIsRepair
	,strVendName
	,strBoughtFrom
	,bitFQConvert
	,bitSOCopy
	,bitSOCopyMulti
	,strVendInvNo
	,bitFromPO
	,decNetItemWeight
	,decNetVolumetricWeight
	,strSourceMOP
	,bitCleared
	,strOrdRFQDocID
	,bitRFQConvert
	,strOrdPDocID
	,intModule
	,strSOReasonCode
	,strDelNoteNo
	,strContractTo
	,strContBillType
	,blnAllowAnnualIncrease
	,intContractPriceIncrease
	,dtpIncreaseStartDate
	,bitInactive
	,strStoreNumber
	,strEDI
	)
SELECT @RevisionId
	,strOrdDocID
	,NULL
	,NULL
	,dteSystemDate
	,dteJournalDate
	,dteRequired
	,strUserName
	,strCustName
	,strSoldTo
	,strShipTo
	,strReference
	,decSubTotal
	,decVAT
	,decTotal
	,NULL
	,NULL
	,NULL
	,strNotes
	,bitPrinted
	,bitEmailed
	,NULL
	,NULL
	,strSalesName
	,strAddInfo
	,NULL
	,strCurrency
	,bitIsForeign
	,decSubTotalF
	,decVATF
	,decTotalF
	,decExchange
	,strTerm
	,intDept
	,strField1
	,strField2
	,strField3
	,strField4
	,strField5
	,strField6
	,strField7
	,strField8
	,strField9
	,strField10
	,strField11
	,strField12
	,strSubFormated
	,strVATFormatted
	,strTotFormatted
	,dteField13
	,dteField14
	,decDiscPerc
	,decDiscAmt
	,decDiscAmtF
	,strDiscFormatted
	,strOrdFQDocID
	,strStatusTypeCode
	,strCNReasonCode
	,bitBookmark
	,NULL
	,NULL
	,NULL
	,NULL
	,strDelMethodCode
	,decTotalWeight
	,decTotalVolWeight
	,decDeliveryCost
	,decDeliveryCostF
	,strDeliveryCostFormatted
	,@RevisioNumber
	,dteSystemDate
	,strUserName
	,bitIsRepair
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,bitCleared
	,NULL
	,NULL
	,NULL
	,@Module
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,strStoreNumber
	,strEDI
FROM tblOrderDoc
WHERE strOrdDocID = @DocNumber
BEGIN TRY  
  INSERT INTO tblInvoiceDocREVDT (
	lngEntID
	,strInvDocID
	,intLineNo
	,strPartNumber
	,strLocation
	,strPartDesc
	,decQty
	,strUnit
	,intType
	,decPriceEaExc
	,decLineTotExc
	,decLineTaxAmt
	,decPriceEaInc
	,decLineTotInc
	,strTaxCode
	,imgTaxObj
	,strCurrency
	,bitIsForeign
	,decPriceEaExcF
	,decLineTotExcF
	,decLineTaxAmtF
	,decEaIncTaxF
	,decTotIncTaxF
	,strInvField1
	,strInvField2
	,strInvField3
	,strInvField4
	,strInvField5
	,strInvField6
	,strLineField1
	,strLineField2
	,strLineField3
	,strLineField4
	,strLineField5
	,strLineField6
	,strLineField7
	,strLineField8
	,strLineField9
	,strLineField10
	,strLineField11
	,strLineField12
	,decLineDiscPerc
	,decLineDiscAmt
	,decLineDiscAmtF
	,bitDiscountTax
	,decStockQty
	,strStockUnit
	,decStandardCost
	,decLastPPUnit
	,strSalesName
	,decCOGS
	,decSOQty
	,decSOQtyRemain
	,strPartExtendedDesc
	,decItemWeight
	,decVolumetricWeight
	,bitContainerItem
	,decBuyQty
	,decBuyQtyRemain
	,strBuyUnit
	,decEaIncTax
	,decTotIncTax
	,strOrdSODocID
	,decStockQtyRemain
	,decBuyoutCost
	,decQtyRemaining
	,intStatus
	,uidTransactionFieldID
	,strContBillType
	,blnAllowAnnualIncrease
	,intContractPriceIncrease
	,dtpIncreaseStartDate
	,dtpSetUpDate
	,dtpActivationDate
	,dtpTerminationDate
	,dtpExpirationDate
	,dtpBillingSchduleStart
	,strBillingFrequncy
	,dtpLastBillDate
	,dtpNextBillDate
	,dtpNextInvoiceDate
	)
SELECT @RevisionId
	,strOrdDocID
	,intLineNo
	,strPartNumber
	,strLocation
	,strPartDesc
	,decQty
	,strUnit
	,intType
	,decPriceEaExc
	,decLineTotExc
	,decLineTaxAmt
	,decPriceEaInc
	,decLineTotInc
	,strTaxCode
	,imgTaxObj
	,strCurrency
	,bitIsForeign
	,decPriceEaExcF
	,decLineTotExcF
	,decLineTaxAmtF
	,decEaIncTaxF
	,decTotIncTaxF
	,strInvField1
	,strInvField2
	,strInvField3
	,strInvField4
	,strInvField5
	,strInvField6
	,strLineField1
	,strLineField2
	,strLineField3
	,strLineField4
	,strLineField5
	,strLineField6
	,strLineField7
	,strLineField8
	,strLineField9
	,strLineField10
	,strLineField11
	,strLineField12
	,decLineDiscPerc
	,decLineDiscAmt
	,decLineDiscAmtF
	,bitDiscountTax
	,decStockQty
	,strStockUnit
	,NULL
	,NULL
	,strSalesName
	,NULL
	,NULL
	,NULL
	,strPartExtendedDesc
	,decItemWeight
	,decVolumetricWeight
	,bitContainerItem
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,decStockQtyRemain
	,decBuyoutCost
	,NULL
	,@RevisioNumber
	,uidTransactionFieldID
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
	,NULL
FROM tblOrderDocDT
WHERE strOrdDocID = @DocNumber
END TRY
 BEGIN CATCH
 END CATCH
END
GO
/****** Object:  StoredProcedure [dbo].[InvoiceDocSplitPmtInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [NavigateContractByNumber] ***********/

/*********** Start [InvoiceDocSplitPmtInsert] ***********/
CREATE PROCEDURE [dbo].[InvoiceDocSplitPmtInsert]
@InvoiceDocSplitPmtData AS InvoiceDocSplitPmtTableType READONLY
AS
BEGIN
INSERT INTO tblInvoiceDocSplitPmt SELECT * FROM @InvoiceDocSplitPmtData
END
GO
/****** Object:  StoredProcedure [dbo].[InvRepackDocDTBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [OrderDocPGDTBin_Save] ***********/

/*********** Start [InvRepackDocDTBin_Save] ***********/
CREATE PROCEDURE [dbo].[InvRepackDocDTBin_Save]
(
	@InvDocDTBinTable InvDocDTBinTableType READONLY
	--@SQlngId BIGINT
	--,@SQstrOrdPGDocID NVARCHAR(50)
	--,@SQintLineNo INT
	--,@SQlngBinId BIGINT
	--,@SQdecQty MONEY
)
AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @NumberofIntType INT,
            @RowCount INT

	-- get the number of items
    SET @NumberofIntType = (SELECT  count(*)
                            FROM @InvDocDTBinTable)

	SET @RowCount = 0         -- set the first row to 0

	--Create Table Variable
	DECLARE @InvDocDTTemp TABLE (
		RowNumber INT IDENTITY(0,1),
		Id BIGINT,
		DocId NVARCHAR(50),		
		[LineNo] INT,
		BinId BIGINT,
		Qty MONEY,
		PickingBin BIT
	)

	INSERT INTO @InvDocDTTemp
		SELECT * FROM @InvDocDTBinTable;

	-- loop through the records 
    -- loop until the rowcount = number of records in your table
    WHILE @RowCount < @NumberofIntType
        BEGIN
            -- do your process here
			DECLARE @Id BIGINT
			DECLARE @DocID NVARCHAR(50)
			DECLARE @LineNo INT
			DECLARE @BinId BIGINT
			DECLARE @Qty MONEY
			SELECT 
				@Id = [Id],
				@DocID = DocId,
				@LineNo = [LineNo],
				@BinId = [BinId],
				@Qty = [Qty]
			FROM 
				@InvDocDTTemp 
			WHERE 
				RowNumber = @RowCount

			--VB SP START
			IF NOT EXISTS (SELECT lngId FROM tblInvRepackDocDTBin WHERE lngId = @Id)
				BEGIN
						INSERT INTO tblInvRepackDocDTBin
									   (strRepackDocID
									   ,intLineNo
									   ,lngBinId
									   ,decQty)
						VALUES
									   (@DocID
									   ,@LineNo
									   ,@BinId
									   ,@Qty
									   )
				END
			ELSE
				BEGIN
						UPDATE tblInvRepackDocDTBin
						SET strRepackDocID = @DocID
							,intLineNo = @LineNo
							,lngBinId = @BinId
							,decQty = @Qty
						WHERE lngId = @Id
				END
			--VB SP END

            SET @RowCount = @RowCount + 1
        END
END
GO
/****** Object:  StoredProcedure [dbo].[InvSerialExtStockPickInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****************End [InvSerialExtStockPickUpdate]***********************/

/*************Start [InvSerialExtStockPickInsert]*************************/
CREATE PROCEDURE [dbo].[InvSerialExtStockPickInsert]
(
	@Qty AS MONEY,
	@UpdatedDate AS SMALLDATETIME,
	@PartNumber	AS NVARCHAR(50),
	@SerialNumber AS NVARCHAR(100),
	@LocName AS NVARCHAR(10),
	@BinID AS BIGINT,
	@Status AS INT,
	@DocID AS NVARCHAR(50),
	@IsDimensionExist AS BIT,
	@Dimension AS NVARCHAR(MAX)
)
AS
BEGIN
	INSERT INTO tblInvSerialExt
			([strPartNumber]
           ,[strSerialNumber]
           ,[strLocName]
           ,[decQty]
           ,[intStatus]
           ,[strDocID]
           ,[dteUpdatedDate]
           ,[bitDimensionExist]
           ,[strDimension]
           ,[lngBinID]
   		   ,[dteRowUpdated])
	VALUES (
			 @PartNumber
			,@SerialNumber
			,@LocName
			,@Qty
			,@Status
			,@DocID
			,@UpdatedDate
			,@IsDimensionExist
			,@Dimension			
			,@BinID
			,GETDATE()
			)
END
GO
/****** Object:  StoredProcedure [dbo].[InvSerialExtStockPickUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*************End [InvLotExtStockPickInsert]***************************/

/**************Start [InvSerialExtStockPickUpdate]*************************/
CREATE PROCEDURE [dbo].[InvSerialExtStockPickUpdate]
(
	@Qty AS MONEY,
	@UpdatedDate AS SMALLDATETIME,
	@PartNumber	AS NVARCHAR(50),
	@SerialNumber AS NVARCHAR(100),
	@LocName AS NVARCHAR(10),
	@BinID AS BIGINT,
	@Status AS INT,
	@DocID AS NVARCHAR(50)
)
AS
BEGIN
	UPDATE tblInvSerialExt
	SET strLocName = @LocName
	,decQty = @Qty
	,intStatus = @Status
	,strDocID = @DocID
	,dteUpdatedDate = @UpdatedDate
	,lngBinId = @BinID
	WHERE strPartNumber = @PartNumber
	AND strSerialNumber = @SerialNumber
END
GO
/****** Object:  StoredProcedure [dbo].[InvSerialExtUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/************End [StockPickSerialNumberTrackingInsert]*******************/

/************Start [InvSerialExtUpdate]*******************/
CREATE PROCEDURE [dbo].[InvSerialExtUpdate]
(
	@Qty AS MONEY,	
	@PartNumber	AS NVARCHAR(50),
	@SerialNumber AS NVARCHAR(100),
	@LocName AS NVARCHAR(10),
	@BinID AS BIGINT,
	@Status AS INT,
	@DocID AS NVARCHAR(50)
)
AS
BEGIN
	UPDATE tblInvSerialExt
	SET strLocName = @LocName
	,decQty = @Qty
	,intStatus = @Status
	,strDocID = @DocID
	,dteUpdatedDate = GETDATE()
	,lngBinId = @BinID
	WHERE strPartNumber = @PartNumber
	AND strSerialNumber = @SerialNumber
END
GO
/****** Object:  StoredProcedure [dbo].[IsInActiveLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[IsInActiveLocation]    Script Date: 24-06-2020 22:59:00 ******/
CREATE PROCEDURE [dbo].[IsInActiveLocation]
(
 @PartNumber NVARCHAR(100) = ''
,@InvLocation NVARCHAR(200)  = ''
)
AS
BEGIN
DECLARE @IsInActive bit = 1;
	 SELECT TOP 1 @IsInActive = tblInvExt.bitInactive
	  FROM dbo.tblInvExt
	  WHERE 
	   dbo.tblInvExt.strPartNumber = @PartNumber AND
	  dbo.tblInvExt.strLocName = LTRIM(RTRIM(@InvLocation))
SELECT @IsInActive
END
GO
/****** Object:  StoredProcedure [dbo].[IsPOSProfileUseInDrawer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[IsPOSProfileUseInDrawer] 
@profileId int
AS
BEGIN
   SELECT CASE WHEN EXISTS (
    SELECT *
 FROM tblPOSDrs WHERE intStatus <= 2 AND intProfileMenuId  = @profileId
)
THEN CAST(1 AS BIT)
ELSE CAST(0 AS BIT) 
END
END
GO
/****** Object:  StoredProcedure [dbo].[IssueTickets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[IssueTickets] (
	@TicketList PickTicketTableType READONLY
	,@IsAPToMDap BIT
	,@UserTKNumber AS VARCHAR(50)
	,@IsRemainingToBePicked AS BIT
	)
AS
BEGIN
	BEGIN TRY
		DECLARE @ERR_MSG AS NVARCHAR(4000)
			,@Err_Severity INT
			,@ERR_STA AS SMALLINT
		DECLARE @Result AS NVARCHAR(100)
		DECLARE @MaxVal AS INT
		DECLARE @Index AS INT = 1

		SELECT @MaxVal = MAX(ID)
		FROM @TicketList

		DECLARE @DocumentNumber AS NVARCHAR(100)
			,@Customer AS NVARCHAR(100)
		DECLARE @IsCreditHold AS BIT
		DECLARE @NextTKNumber AS BIGINT
		DECLARE @Ticket AS VARCHAR(100)

		SELECT @NextTKNumber = ISNULL(MAX(lngTKNumber), 0)
		FROM tblLastIDs

		WHILE (@Index <= @MaxVal)
		BEGIN
			SELECT @DocumentNumber = DocumentNumber
				,@Customer = Customer
			FROM @TicketList
			WHERE ID = @Index

			SELECT @IsCreditHold = bitCreditHold
			FROM tblCustomers
			WHERE strCustName = @Customer

			SET @NextTKNumber += 1

			IF (@IsCreditHold = 1)
			BEGIN
				SET @Result = CONCAT (
						'Customer On Credit Hold:'
						,@Customer
						)

				GOTO lblEnd
			END

			IF (@IsAPToMDap = 0)
			BEGIN
				SET @Ticket = dbo.GetNextTKNumber(@NextTKNumber, 0, @UserTKNumber)

				lbl1:

				BEGIN TRY
					INSERT INTO tblPickTickets (
						strPkTkDocID
						,strOrdDocID
						,dteSystemDate
						,dteJournalDate
						,dteRequired
						,strUserName
						,strCustName
						,strSoldTo
						,strShipTo
						,strReference
						,strNotes
						,bitPrinted
						,bitPicked
						,dtePicked
						,bitCleared
						,strSalesName
						,strAddInfo
						,strField1
						,strField2
						,strField3
						,strField4
						,strField5
						,strField6
						,strField7
						,strField8
						,strField9
						,strField10
						,strField11
						,strField12
						,strPTNote
						,strDelMethodCode
						,bitDA
						)
					SELECT @Ticket
						,strOrdDocID
						,dteSystemDate
						,dteJournalDate
						,dteRequired
						,strUserName
						,strCustName
						,strSoldTo
						,strShipTo
						,strReference
						,strNotes
						,0
						,0
						,NULL
						,0
						,strSalesName
						,strAddInfo
						,strField1
						,strField2
						,strField3
						,strField4
						,strField5
						,strField6
						,strField7
						,strField8
						,strField9
						,strField10
						,strField11
						,strField12
						,''
						,strDelMethodCode
						,0
					FROM tblOrderDoc
					WHERE tblOrderDoc.strOrdDocID = @DocumentNumber
				END TRY

				BEGIN CATCH
					IF ERROR_NUMBER() = 2627
					BEGIN
						SET @Ticket = dbo.GetNextTKNumber(@NextTKNumber, 1, @UserTKNumber)

						GOTO lbl1
					END
					ELSE
					BEGIN
						SELECT @ERR_MSG = ERROR_MESSAGE()
							,@Err_Severity = ERROR_SEVERITY()
							,@ERR_STA = ERROR_STATE()

						RAISERROR (
								@ERR_MSG
								,@Err_Severity
								,@ERR_STA
								);
					END
				END CATCH

				IF (@IsRemainingToBePicked = 1)
				BEGIN
					-- START WriteDetailLine--
					INSERT INTO tblPickTicketsDT
					SELECT @Ticket
						,T.intLineNo
						,T.strPartNumber
						,T.strLocation
						,T.strPartDesc
						,T.decQty - ISNULL(T3.qtyPicked, 0)
						,0
						,T.strUnit
						,T.intType
						,T.strInvField1
						,T.strInvField2
						,T.strInvField3
						,T.strInvField4
						,T.strInvField5
						,T.strInvField6
						,T.strLineField1
						,T.strLineField2
						,T.strLineField3
						,T.strLineField4
						,T.strLineField5
						,T.strLineField6
						,T.strLineField7
						,T.strLineField8
						,T.strLineField9
						,T.strLineField10
						,T.strLineField11
						,T.strLineField12
						,ISNULL(T.strBinLoc, '')
					FROM (
						SELECT tOD.intLineNo
							,tOD.strPartNumber
							,tOD.strLocation
							,tOD.strPartDesc
							,tOD.decQty
							,tOD.strUnit
							,tOD.intType
							,tOD.strInvField1
							,tOD.strInvField2
							,tOD.strInvField3
							,tOD.strInvField4
							,tOD.strInvField5
							,tOD.strInvField6
							,tOD.strLineField1
							,tOD.strLineField2
							,tOD.strLineField3
							,tOD.strLineField4
							,tOD.strLineField5
							,tOD.strLineField6
							,tOD.strLineField7
							,tOD.strLineField8
							,tOD.strLineField9
							,tOD.strLineField10
							,tOD.strLineField11
							,tOD.strLineField12
							,tIE.strBinLoc
						FROM tblOrderDocdt tOD
						LEFT JOIN tblInvExt tIE ON tOD.strPartNumber = tIE.strPartNumber
							AND tOD.strLocation = tIE.strLocName
						WHERE (tOD.strOrdDocID = @DocumentNumber)
							AND (tOD.decQtyRemaining <> 0)
						) AS T
					LEFT JOIN (
						SELECT Sum(T2.decQtyPicked) AS qtyPicked
							,T2.intLineNo
						FROM (
							SELECT strPkTkDocID
							FROM tblPickTickets
							WHERE strOrdDocID = @DocumentNumber
							) AS T1
						INNER JOIN (
							SELECT decQty
								,decQtyPicked
								,strPkTkDocID
								,intLineNo
							FROM tblPickTicketsDT
							) AS T2 ON T1.strPkTkDocID = T2.strPkTkDocID
						GROUP BY T2.intLineNo
						) AS T3 ON T.intLineNo = T3.intLineNo
						-- END WriteDetailLine--
				END
				ELSE
				BEGIN
					--INSERT DETAIL LINES (ONLY INSERT LINES WITH QTY REMAINING AND TICKET QTY IS QTY REMAINING NOT ORIG QTY)
					INSERT INTO tblPickTicketsDT
					SELECT @Ticket
						,tOD.intLineNo
						,tOD.strPartNumber
						,tOD.strLocation
						,tOD.strPartDesc
						,tOD.decQtyRemaining
						,0
						,tOD.strUnit
						,tOD.intType
						,tOD.strInvField1
						,tOD.strInvField2
						,tOD.strInvField3
						,tOD.strInvField4
						,tOD.strInvField5
						,tOD.strInvField6
						,tOD.strLineField1
						,tOD.strLineField2
						,tOD.strLineField3
						,tOD.strLineField4
						,tOD.strLineField5
						,tOD.strLineField6
						,tOD.strLineField7
						,tOD.strLineField8
						,tOD.strLineField9
						,tOD.strLineField10
						,tOD.strLineField11
						,tOD.strLineField12
						,ISNULL(tIE.strBinLoc, '')
					FROM tblOrderDocdt tOD
					LEFT JOIN tblInvExt tIE ON tOD.strPartNumber = tIE.strPartNumber
						AND tOD.strLocation = tIE.strLocName
					WHERE (tOD.strOrdDocID = @DocumentNumber)
						AND (tOD.decQtyRemaining <> 0)
						AND (tOD.bitDelCost = 0)

					--INSERT SERIAL NUMBERS THAT CONTAIN DIMENSIONS
					INSERT INTO tblPickTicketsDTSerial (
						strPkTkDocID
						,intLineNo
						,strSerialNumber
						,decQty
						,strUnit
						,bitExpiryDate
						,dteExpiryDate
						,intSerialLotType
						,lngBinID
						)
					SELECT @Ticket
						,DTL.intLineNo
						,SER.strSerialNumber
						,SER.decQty
						,SER.strUnit
						,SER.bitExpiryDate
						,SER.dteExpiryDate
						,SER.intSerialLotType
						,NULL
					FROM tblOrderDocDT DTL
					INNER JOIN tblOrderDocDTSerial SER ON DTL.strOrdDocID = SER.strOrdDocID
						AND DTL.intLineNo = SER.intLineNo
					INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber
					INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType
					WHERE (DTL.strOrdDocID = @DocumentNumber)
						AND (DTL.decQtyRemaining <> 0)
						AND (DTL.bitDelCost = 0)
						AND (IST.bitDimensionExist = 1)
				END
			END
			ELSE
			BEGIN
				DECLARE @LocationList AS TABLE (
					ID INT IDENTITY(1, 1)
					,Location VARCHAR(100)
					)

				INSERT INTO @LocationList
				SELECT DISTINCT strlocation
				FROM tblOrderDocDT
				WHERE (tblOrderDocDT.strOrdDocID = @DocumentNumber)
					AND (tblOrderDocDT.decQtyRemaining <> 0)

				DECLARE @LocationCount AS INT
				DECLARE @i AS INT

				SELECT @LocationCount = MAX(ID)
				FROM @LocationList

				SET @i = 1

				DECLARE @Id AS INT = 1
				DECLARE @Location AS NVARCHAR(100)

				WHILE (@i <= @LocationCount)
				BEGIN
					SELECT @Location = Location
					FROM @LocationList
					WHERE ID = @Id

					SET @Ticket = dbo.GetNextTKNumber(@NextTKNumber, 0, @UserTKNumber)

					--INSERT HEADER RECORD
					lbl2:

					BEGIN TRY
						INSERT INTO tblPickTickets (
							strPkTkDocID
							,strOrdDocID
							,dteSystemDate
							,dteJournalDate
							,dteRequired
							,strUserName
							,strCustName
							,strSoldTo
							,strShipTo
							,strReference
							,strNotes
							,bitPrinted
							,bitPicked
							,dtePicked
							,bitCleared
							,strSalesName
							,strAddInfo
							,strField1
							,strField2
							,strField3
							,strField4
							,strField5
							,strField6
							,strField7
							,strField8
							,strField9
							,strField10
							,strField11
							,strField12
							,strPTNote
							,strDelMethodCode
							,bitDA
							,lngInvTrackId
							,bitStockTransferred
							)
						SELECT @Ticket
							,strOrdDocID
							,dteSystemDate
							,dteJournalDate
							,dteRequired
							,strUserName
							,strCustName
							,strSoldTo
							,strShipTo
							,strReference
							,strNotes
							,0
							,0
							,NULL
							,0
							,strSalesName
							,strAddInfo
							,strField1
							,strField2
							,strField3
							,strField4
							,strField5
							,strField6
							,strField7
							,strField8
							,strField9
							,strField10
							,strField11
							,strField12
							,''
							,strDelMethodCode
							,0
							,NULL
							,0
						FROM tblOrderDoc
						WHERE tblOrderDoc.strOrdDocID = @DocumentNumber

						IF (@IsRemainingToBePicked = 1)
						BEGIN
							-- START WriteDetailLine--
							INSERT INTO tblPickTicketsDT
							SELECT @Ticket
								,T.intLineNo
								,T.strPartNumber
								,T.strLocation
								,T.strPartDesc
								,T.decQty - ISNULL(T3.qtyPicked, 0)
								,0
								,T.strUnit
								,T.intType
								,T.strInvField1
								,T.strInvField2
								,T.strInvField3
								,T.strInvField4
								,T.strInvField5
								,T.strInvField6
								,T.strLineField1
								,T.strLineField2
								,T.strLineField3
								,T.strLineField4
								,T.strLineField5
								,T.strLineField6
								,T.strLineField7
								,T.strLineField8
								,T.strLineField9
								,T.strLineField10
								,T.strLineField11
								,T.strLineField12
								,ISNULL(T.strBinLoc, '')
							FROM (
								SELECT tOD.intLineNo
									,tOD.strPartNumber
									,tOD.strLocation
									,tOD.strPartDesc
									,tOD.decQty
									,tOD.strUnit
									,tOD.intType
									,tOD.strInvField1
									,tOD.strInvField2
									,tOD.strInvField3
									,tOD.strInvField4
									,tOD.strInvField5
									,tOD.strInvField6
									,tOD.strLineField1
									,tOD.strLineField2
									,tOD.strLineField3
									,tOD.strLineField4
									,tOD.strLineField5
									,tOD.strLineField6
									,tOD.strLineField7
									,tOD.strLineField8
									,tOD.strLineField9
									,tOD.strLineField10
									,tOD.strLineField11
									,tOD.strLineField12
									,tIE.strBinLoc
								FROM tblOrderDocdt tOD
								LEFT JOIN tblInvExt tIE ON tOD.strPartNumber = tIE.strPartNumber
									AND tOD.strLocation = tIE.strLocName
								WHERE (tOD.strOrdDocID = @DocumentNumber)
									AND (tOD.decQtyRemaining <> 0)
									AND (tOD.strlocation = @Location)
								) AS T
							LEFT JOIN (
								SELECT Sum(T2.decQtyPicked) AS qtyPicked
									,T2.intLineNo
								FROM (
									SELECT strPkTkDocID
									FROM tblPickTickets
									WHERE strOrdDocID = @DocumentNumber
									) AS T1
								INNER JOIN (
									SELECT decQty
										,decQtyPicked
										,strPkTkDocID
										,intLineNo
									FROM tblPickTicketsDT
									) AS T2 ON T1.strPkTkDocID = T2.strPkTkDocID
								GROUP BY T2.intLineNo
								) AS T3 ON T.intLineNo = T3.intLineNo
								-- END WriteDetailLine--
						END
						ELSE
						BEGIN
							--INSERT DETAIL LINES (ONLY INSERT LINES WITH QTY REMAINING AND TICKET QTY IS QTY REMAINING NOT ORIG QTY)
							INSERT INTO tblPickTicketsDT
							SELECT @Ticket
								,tOD.intLineNo
								,tOD.strPartNumber
								,tOD.strLocation
								,tOD.strPartDesc
								,tOD.decQtyRemaining
								,0
								,tOD.strUnit
								,tOD.intType
								,tOD.strInvField1
								,tOD.strInvField2
								,tOD.strInvField3
								,tOD.strInvField4
								,tOD.strInvField5
								,tOD.strInvField6
								,tOD.strLineField1
								,tOD.strLineField2
								,tOD.strLineField3
								,tOD.strLineField4
								,tOD.strLineField5
								,tOD.strLineField6
								,tOD.strLineField7
								,tOD.strLineField8
								,tOD.strLineField9
								,tOD.strLineField10
								,tOD.strLineField11
								,tOD.strLineField12
								,ISNULL(tIE.strBinLoc, '')
							FROM tblOrderDocdt tOD
							LEFT JOIN tblInvExt tIE ON tOD.strPartNumber = tIE.strPartNumber
								AND tOD.strLocation = tIE.strLocName
							WHERE (tOD.strOrdDocID = @DocumentNumber)
								AND (tOD.decQtyRemaining <> 0)
								AND (tOD.strlocation = @Location)

							--INSERT SERIAL NUMBERS THAT CONTAIN DIMENSIONS
							INSERT INTO tblPickTicketsDTSerial (
								strPkTkDocID
								,intLineNo
								,strSerialNumber
								,decQty
								,strUnit
								,bitExpiryDate
								,dteExpiryDate
								,intSerialLotType
								,lngBinID
								)
							SELECT @Ticket
								,DTL.intLineNo
								,SER.strSerialNumber
								,SER.decQty
								,SER.strUnit
								,SER.bitExpiryDate
								,SER.dteExpiryDate
								,SER.intSerialLotType
								,NULL
							FROM tblOrderDocDT DTL
							INNER JOIN tblOrderDocDTSerial SER ON DTL.strOrdDocID = SER.strOrdDocID
								AND DTL.intLineNo = SER.intLineNo
							INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber
							INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType
							WHERE (DTL.strOrdDocID = @DocumentNumber)
								AND (DTL.decQtyRemaining <> 0)
								AND (DTL.strlocation = @Location)
								AND (IST.bitDimensionExist = 1)
						END

						SET @NextTKNumber += 1
					END TRY

					BEGIN CATCH
						IF ERROR_NUMBER() = 2627
						BEGIN
							SET @Ticket = dbo.GetNextTKNumber(@NextTKNumber, 1, @UserTKNumber)

							GOTO lbl2
						END
						ELSE
						BEGIN
							SELECT @ERR_MSG = ERROR_MESSAGE()
								,@Err_Severity = ERROR_SEVERITY()
								,@ERR_STA = ERROR_STATE()

							RAISERROR (
									@ERR_MSG
									,@Err_Severity
									,@ERR_STA
									);
						END
					END CATCH

					SET @i += 1
					SET @Id += 1
				END
			END

			SET @Index += 1
		END

		--Update our IDs table
		UPDATE tblLastIDs
		SET lngTKNumber = @NextTKNumber

		SET @Result = 'Success'

		lblEnd:

		SELECT @Result
	END TRY

	BEGIN CATCH
		SELECT @ERR_MSG = ERROR_MESSAGE()
			,@Err_Severity = ERROR_SEVERITY()
			,@ERR_STA = ERROR_STATE()

		RAISERROR (
				@ERR_MSG
				,@Err_Severity
				,@ERR_STA
				);
	END CATCH
END
GO
/****** Object:  StoredProcedure [dbo].[IsSyncInvoicePending]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[IsSyncInvoicePending] 

AS
BEGIN
 SELECT CASE WHEN EXISTS (
    SELECT *
    FROM tblOfflineInvoiceDT
    WHERE IsSync = 0
)
THEN CAST(1 AS BIT)
ELSE CAST(0 AS BIT) END

END
GO
/****** Object:  StoredProcedure [dbo].[IsUserAssignedInDrawer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[IsUserAssignedInDrawer]    Script Date: 24-06-2020 22:59:00 ******/
CREATE PROCEDURE [dbo].[IsUserAssignedInDrawer] @UserName NVARCHAR(50)
AS
BEGIN
	SELECT CASE 
			WHEN EXISTS (
					SELECT strAssignedUser
					FROM tblPOSDrs
					WHERE intStatus <> 3
						AND strAssignedUser = @UserName
					)
				THEN CAST(1 AS BIT)
			ELSE CAST(0 AS BIT)
			END
END
GO
/****** Object:  StoredProcedure [dbo].[IsValidOfflinePOSPeriod]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[IsValidOfflinePOSPeriod] 
@hours INT 
AS 
  BEGIN 
      SELECT CASE 
               WHEN EXISTS (SELECT * 
                            FROM   tblofflineinvoicedt 
                            WHERE  Dateadd(hour, @hours, syncdate) < Getdate() 
                                   AND issync = 0) THEN Cast(0 AS BIT) 
               WHEN EXISTS (SELECT * 
                            FROM   tblofflineorderandquotedt 
                            WHERE  Dateadd(hour, @hours, syncdate) < Getdate() 
                                   AND issync = 0) THEN Cast(0 AS BIT) 
               ELSE Cast(1 AS BIT) 
             END 
 END
GO
/****** Object:  StoredProcedure [dbo].[IsValidTerminalForCashOutDrawer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[IsValidTerminalForCashOutDrawer]
  @OfflineTerminalId int,
  @SessionID uniqueidentifier
AS
BEGIN
 SELECT CASE WHEN EXISTS (
    SELECT *
    FROM tblPOSDrs
    WHERE uidSessionID = @SessionID and intOfflineTerminalId = @OfflineTerminalId
)
THEN CAST(1 AS BIT)
ELSE CAST(0 AS BIT) END

END
GO
/****** Object:  StoredProcedure [dbo].[JobTitlesUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------
CREATE PROCEDURE [dbo].[JobTitlesUpdate]
(
	@ID bigint,
	@JobTitle nvarchar(150)	
)
AS
IF @ID = 0 or @ID is null
BEGIN
	INSERT INTO tblJobTitles values (@JobTitle)
END
ELSE
BEGIN
UPDATE tblJobTitles set strJobTitle = @JobTitle where lngID = @ID
END
GO
/****** Object:  StoredProcedure [dbo].[JournalCodeBuilderSave]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvJournalCodeBuilderData] ***********/

/*********** Start [JournalCodeBuilderSave] ***********/
CREATE PROCEDURE [dbo].[JournalCodeBuilderSave] (
	@InventoryData InvenoryTableType READONLY
	,@MatrixType TINYINT
	)
AS
BEGIN
	DECLARE @PlaceHolder AS SMALLDATETIME = CAST('1999-01-01' AS SMALLDATETIME)
	DECLARE @TblInventory AS TABLE (
		ID INT NOT NULL IDENTITY(1, 1) PRIMARY KEY
		,GLNumber VARCHAR(50) NULL
		)
	DECLARE @Id AS INT
		,@PartNumber AS VARCHAR(50)
	DECLARE @MaxVal AS INT
		,@Index AS INT = 1

	INSERT INTO @TblInventory (GLNumber)
	SELECT GLNumber
	FROM @InventoryData

	SELECT @MaxVal = MAX(ID)
	FROM @TblInventory

	INSERT INTO tblInv (
		strPartNumber
		,strDesc
		,intType
		,strCategory
		,intExpAcct
		,decCostOnPO
		,bitUseLPPOnPO
		,intReorderQty
		,strBuyUnit
		,strStockUnit
		,decBuyToStock
		,bitAllowPriceChg
		,dteDateLastSale
		,dteLastPurchase
		,decLastPPUnit
		,dteLastUpdated
		,bitUseBOM
		,intBOMQty
		,strAddInfo
		,bitInactive
		,decSumAvail
		,decSumAlloc
		,decSumOnHand
		,decSumValue
		,decSumOnOrder
		,decSumOpenQty
		,decSumOpenValue
		,decSumValYearStart
		,decSumQtyYearStart
		,decSumAmtSoldYTD
		,decSumAmtSoldLY
		,decSumQtySoldYTD
		,decSumQtySoldLY
		,decSumCOGSYTD
		,decSumCOGSLY
		,intSumNumTransYTD
		,intSumNumTransLY
		,bitAutoBuild
		,strField1
		,strField2
		,strField3
		,strField4
		,strField5
		,strField6
		,strBarCode
		,decStandardCost
		,bitItemNumConvUsed
		,strSellUnit
		,strSellStockUnit
		,decSellFromStock
		,strItemSegment1
		,strItemSegment2
		,strItemSegment3
		,strItemSegment4
		,strInvNumConv
		,bitInvSerialType
		,strInvSerialType
		,decRepairCharge
		,strBarCode2
		,bitVoucherEnabled
		,strVoucherCode
		,decDefSaleQty
		,strExtendedDesc
		,bitInvExtDescOnSI
		,bitInvExtDescOnSO
		,bitInvExtDescOnSQ
		,bitInvExtDescOnSFHQ
		,bitInvExtDescOnCR
		,bitInvExtDescOnPI
		,bitInvExtDescOnPO
		,bitInvExtDescOnPQ
		,bitWebstoreItem
		,strDimProCode
		,strRSTTerminalSync
		,intDecimalQuantity
		,strBOMNotes
		,bitInvExtDescOnBRQ
		,decMass
		,decVolumetricWeight
		,strUnitOfMeasure
		,decW
		,decH
		,decD
		,decCube
		,decFactor
		,decMaxLevel
		,decOrderLeadTime
		,decSafetyFactorPer
		,decDaysSalesinStock
		,decMinimumOrderQuantity
		,decNewDailySales
		,decOldMinLevel
		,decMinimumLevel
		,decOldMaxLevel
		,decEconomicOrderQty
		,bitPallet
		,bitInclInvForecast
		,bitDimProSales
		,bitDimProPurchases
		,strInvWCCode
		,decLastManCost
		,bitAutoBuildSameLoc
		,strFileName
		,strSubCategory
		,decSumManuf
		,strSubCategoryGroup
		,bitExclCommission
		,strPOSDesc
		,bitOtherCmp
		,bitPrintComp
		,dteRowUpdated
		,bitSumComp
		,dteWebStoreItemUpdated
		,bitAllowAdjustKitCompOnDoc
		,decDensity
		,bitIsSuperseded
		,strSupersededBy
		,strSupersededDescription
		,dtesupersessiondate
		,bitPendingApproval
		,bitDefaultUOM
		,strURACode
		)
	SELECT GLNumber
		,[Description]
		,5
		,NULL
		,ExpAcct
		,0
		,0
		,0
		,''
		,''
		,1
		,1
		,@PlaceHolder
		,@PlaceHolder
		,0
		,GETDATE()
		,0
		,1
		,''
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,''
		,''
		,''
		,''
		,''
		,''
		,''
		,0
		,0
		,''
		,''
		,1
		,''
		,''
		,''
		,''
		,NULL
		,0
		,NULL
		,0
		,''
		,0
		,NULL
		,1
		,''
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,''
		,''
		,2
		,''
		,0
		,0
		,0
		,''
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,1
		,1
		,0
		,0
		,0
		,NULL
		,0
		,0
		,NULL
		,NULL
		,0
		,NULL
		,0
		,''
		,0
		,0
		,Getdate()
		,0
		,NULL
		,0
		,0
		,0
		,NULL
		,NULL
		,NULL
		,0
		,1
		,''
	FROM @InventoryData

	WHILE (@Index <= @MaxVal)
	BEGIN
		SELECT @PartNumber = GLNumber
		FROM @TblInventory
		WHERE ID = @Index

		INSERT INTO tblTradeDiscMatrixTypesDT
		SELECT uidMatrixID
			,@MatrixType
			,ISNULL((
					SELECT MAX(DTL.intLineNo)
					FROM tblTradeDiscMatrixTypesDT DTL
					WHERE DTL.intType = @MatrixType
						AND DTL.uidMatrixID = tblTradeDiscMatrixTypes.uidMatrixID
					), 0) + 1
			,0
			,0
			,0
			,@PartNumber
			,GETDATE()
		FROM tblTradeDiscMatrixTypes

		SET @Index += 1
	END
END
GO

/****** Object:  StoredProcedure [dbo].[JournalCodeInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[JournalCodeInsert] (
	@PartNumber VARCHAR(50)
	,@Description VARCHAR(500)
	,@InvItemType TINYINT
	,@ExpAcct VARCHAR(30)
	,@Notes VARCHAR(200)
	,@IsInactive BIT
	,@Field1 VARCHAR(100)
	,@Field2 VARCHAR(100)
	,@Field3 VARCHAR(100)
	,@Field4 VARCHAR(100)
	,@Field5 VARCHAR(100)
	,@Field6 VARCHAR(100)
	,@TaxNames VARCHAR(MAX)
	,@MatrixType TINYINT
	,@IsExclCommission BIT
	)
AS
BEGIN
	DECLARE @IsInvExtDescOnSI AS BIT
	DECLARE @IsInvExtDescOnSO AS BIT
	DECLARE @IsInvExtDescOnSQ AS BIT
	DECLARE @IsInvExtDescOnSFHQ AS BIT
	DECLARE @IsInvExtDescOnCR AS BIT
	DECLARE @IsInvExtDescOnPI AS BIT
	DECLARE @IsInvExtDescOnPO AS BIT
	DECLARE @IsInvExtDescOnPQ AS BIT
	DECLARE @IsInvExtDescOnBRQ AS BIT
	DECLARE @PlaceHolder AS SMALLDATETIME = CAST('1999-01-01' AS SMALLDATETIME)

	SELECT @IsInvExtDescOnSI = bitInvExtDescOnSI
		,@IsInvExtDescOnSO = bitInvExtDescOnSO
		,@IsInvExtDescOnSQ = bitInvExtDescOnSQ
		,@IsInvExtDescOnSFHQ = bitInvExtDescOnSFHQ
		,@IsInvExtDescOnCR = bitInvExtDescOnCR
		,@IsInvExtDescOnPI = bitInvExtDescOnPI
		,@IsInvExtDescOnPO = bitInvExtDescOnPO
		,@IsInvExtDescOnPQ = bitInvExtDescOnPQ
		,@IsInvExtDescOnBRQ = bitInvExtDescOnBRQ
	FROM tblCoOpts

	INSERT INTO [dbo].[tblInv] (
		strPartNumber
		,strDesc
		,intType
		,strCategory
		,intExpAcct
		,decCostOnPO
		,bitUseLPPOnPO
		,intReorderQty
		,strBuyUnit
		,strStockUnit
		,decBuyToStock
		,bitAllowPriceChg
		,dteDateLastSale
		,dteLastPurchase
		,decLastPPUnit
		,dteLastUpdated
		,bitUseBOM
		,intBOMQty
		,strAddInfo
		,bitInactive
		,decSumAvail
		,decSumAlloc
		,decSumOnHand
		,decSumValue
		,decSumOnOrder
		,decSumOpenQty
		,decSumOpenValue
		,decSumValYearStart
		,decSumQtyYearStart
		,decSumAmtSoldYTD
		,decSumAmtSoldLY
		,decSumQtySoldYTD
		,decSumQtySoldLY
		,decSumCOGSYTD
		,decSumCOGSLY
		,intSumNumTransYTD
		,intSumNumTransLY
		,bitAutoBuild
		,strField1
		,strField2
		,strField3
		,strField4
		,strField5
		,strField6
		,strBarCode
		,decStandardCost
		,bitItemNumConvUsed
		,strSellUnit
		,strSellStockUnit
		,decSellFromStock
		,strItemSegment1
		,strItemSegment2
		,strItemSegment3
		,strItemSegment4
		,strInvNumConv
		,bitInvSerialType
		,strInvSerialType
		,decRepairCharge
		,strBarCode2
		,bitVoucherEnabled
		,strVoucherCode
		,decDefSaleQty
		,strExtendedDesc
		,bitInvExtDescOnSI
		,bitInvExtDescOnSO
		,bitInvExtDescOnSQ
		,bitInvExtDescOnSFHQ
		,bitInvExtDescOnCR
		,bitInvExtDescOnPI
		,bitInvExtDescOnPO
		,bitInvExtDescOnPQ
		,bitWebstoreItem
		,strDimProCode
		,strRSTTerminalSync
		,intDecimalQuantity
		,strBOMNotes
		,bitInvExtDescOnBRQ
		,decMass
		,decVolumetricWeight
		,strUnitOfMeasure
		,decW
		,decH
		,decD
		,decCube
		,decFactor
		,decMaxLevel
		,decOrderLeadTime
		,decSafetyFactorPer
		,decDaysSalesinStock
		,decMinimumOrderQuantity
		,decNewDailySales
		,decOldMinLevel
		,decMinimumLevel
		,decOldMaxLevel
		,decEconomicOrderQty
		,bitPallet
		,bitInclInvForecast
		,bitDimProSales
		,bitDimProPurchases
		,strInvWCCode
		,decLastManCost
		,bitAutoBuildSameLoc
		,strFileName
		,strSubCategory
		,decSumManuf
		,strSubCategoryGroup
		,bitExclCommission
		,strPOSDesc
		,bitOtherCmp
		,bitPrintComp
		,dteRowUpdated
		,bitSumComp
		,dteWebStoreItemUpdated
		,bitAllowAdjustKitCompOnDoc
		,decDensity
		,bitIsSuperseded
		,strSupersededBy
		,strSupersededDescription
		,dtesupersessiondate
		,bitPendingApproval
		,bitDefaultUOM
		,strURACode
		)
	VALUES (
		@PartNumber
		,@Description
		,@InvItemType
		,NULL
		,@ExpAcct
		,0
		,0
		,0
		,''
		,''
		,1
		,1
		,@PlaceHolder
		,@PlaceHolder
		,0
		,GETDATE()
		,0
		,1
		,@Notes
		,@IsInactive
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,@Field1
		,@Field2
		,@Field3
		,@Field4
		,@Field5
		,@Field6
		,''
		,0
		,0
		,''
		,''
		,1
		,''
		,''
		,''
		,''
		,NULL
		,0
		,NULL
		,0
		,''
		,0
		,NULL
		,1
		,''
		,@IsInvExtDescOnSI
		,@IsInvExtDescOnSO
		,@IsInvExtDescOnSQ
		,@IsInvExtDescOnSFHQ
		,@IsInvExtDescOnCR
		,@IsInvExtDescOnPI
		,@IsInvExtDescOnPO
		,@IsInvExtDescOnPQ
		,0
		,''
		,''
		,2
		,''
		,@IsInvExtDescOnBRQ
		,0
		,0
		,''
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,1
		,0
		,1
		,0
		,0
		,NULL --100
		,0
		,0
		,NULL
		,NULL
		,0
		,NULL
		,@IsExclCommission
		,''
		,0
		,0
		,Getdate()
		,0
		,NULL
		,0
		,0
		,0
		,NULL
		,NULL
		,NULL
		,0
		,1
		,''
		)

	DECLARE @TblContainer AS TABLE (
		ID INT NOT NULL IDENTITY(1, 1) PRIMARY KEY
		,TaxName NVARCHAR(200)
		)
	DECLARE @Id AS INT
		,@TaxName AS NVARCHAR(100)
	DECLARE @MaxVal AS INT
		,@Index AS INT = 1

	INSERT INTO @TblContainer
	SELECT [Value]
	FROM [dbo].[fnSplitStringAsTable](@TaxNames, '~')

	SELECT @MaxVal = MAX(ID)
	FROM @TblContainer

	WHILE (@Index <= @MaxVal)
	BEGIN
		SELECT @TaxName = TaxName
		FROM @TblContainer
		WHERE ID = @Index

		INSERT INTO tblInvEx (
			strPartNumber
			,strTaxName
			)
		VALUES (
			@PartNumber
			,@TaxName
			)

		SET @Index += 1
	END

	INSERT INTO tblTradeDiscMatrixTypesDT
	SELECT uidMatrixID
		,@MatrixType
		,ISNULL((
				SELECT MAX(DTL.intLineNo)
				FROM tblTradeDiscMatrixTypesDT DTL
				WHERE DTL.intType = @MatrixType
					AND DTL.uidMatrixID = tblTradeDiscMatrixTypes.uidMatrixID
				), 0) + 1
		,0
		,0
		,0
		,@PartNumber
		,GETDATE()
	FROM tblTradeDiscMatrixTypes
END
GO

/****** Object:  StoredProcedure [dbo].[JournalCodeUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [JournalCodeInsert] ***********/

/*********** Start [JournalCodeUpdate] ***********/
CREATE PROCEDURE [dbo].[JournalCodeUpdate]
(
	@PartNumber VARCHAR(50),
	@OldPartNumber VARCHAR(50),
	@Description VARCHAR(500),	
	@ExpAcct VARCHAR(30),
	@Notes VARCHAR(200),
	@IsInactive BIT,
	@Field1 VARCHAR(100),
	@Field2 VARCHAR(100),
	@Field3 VARCHAR(100),
	@Field4 VARCHAR(100),
	@Field5 VARCHAR(100),
	@Field6 VARCHAR(100),
	@TaxNames VARCHAR(MAX),
	@IsExclCommission BIT
)
AS
BEGIN

	UPDATE tblInv
	SET strPartNumber = @PartNumber
		,strDesc = @Description
		,intExpAcct = @ExpAcct
		,dteLastUpdated = GetDate()
		,strAddInfo = @Notes
		,bitInactive = @IsInactive
		,strField1 = @Field1
		,strField2 = @Field2
		,strField3 = @Field3
		,strField4 = @Field4
		,strField5 = @Field5
		,strField6 = @Field6
		,bitExclCommission = @IsExclCommission
	WHERE strPartNumber = @OldPartNumber

	DELETE FROM tblInvEx WHERE strPartNumber = @PartNumber

	DECLARE @TblContainer AS TABLE
	(
		ID INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
		TaxName NVARCHAR(200)
	)
	DECLARE @Id AS INT, @TaxName AS NVARCHAR(100)
	DECLARE @MaxVal AS INT, @Index AS INT = 1
	INSERT INTO @TblContainer SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@TaxNames, '~')
	SELECT @MaxVal = MAX(ID) FROM @TblContainer

	WHILE(@Index <= @MaxVal)
	BEGIN		
		SELECT @TaxName = TaxName FROM @TblContainer WHERE ID = @Index
		INSERT INTO tblInvEx (strPartNumber, strTaxName)  VALUES (@PartNumber,@TaxName)
		SET @Index += 1
	END

END
GO
/****** Object:  StoredProcedure [dbo].[JournalEntInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[JournalEntInsert]
(
	@JournID AS INT,
	@LineNum AS INT,
	@GLNumber AS NVARCHAR(30),
	@Amount AS MONEY,
	@Debits AS MONEY,
	@Credits AS MONEY,
	@Comment AS NVARCHAR(100),
	@intDept AS INT,
	@decAmountF AS MONEY,
	@decDebitsF AS MONEY,
	@decCreditsF AS MONEY,
	@strCurrency AS NVARCHAR(3),
	@decExchange AS DECIMAL(20,6),
	@bitForeignAcct AS BIT,
	@decUnAllocatedAmt AS MONEY,
	@strFormula AS NVARCHAR(100) = NULL,
	@bitVerified AS BIT = 0
)
AS
BEGIN
	INSERT INTO tblJournalEnt (lngJourID, intLineNum, intGLNumber, decAmount, decDebits, decCredits, strComment, intDept, decAmountF,decDebitsF, decCreditsF, strCurrency, decExchange, bitForeignAcct, decAllocatedAmtToDate, decUnAllocatedAmt, strFormula, bitVerified)
    VALUES (@JournID ,@LineNum ,@GLNumber ,@Amount ,@Debits ,@Credits ,@Comment ,@intDept ,@decAmountF ,@decDebitsF ,@decCreditsF ,@strCurrency ,@decExchange ,@bitForeignAcct,0 ,@decUnAllocatedAmt, @strFormula, @bitVerified)
END
GO
/****** Object:  StoredProcedure [dbo].[JournalEntLYInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[JournalEntLYInsert]
(
	@JournID AS INT,
	@LineNum AS INT,
	@GLNumber AS NVARCHAR(30),
	@Amount AS MONEY,
	@Debits AS MONEY,
	@Credits AS MONEY,
	@Comment AS NVARCHAR(100),
	@intDept AS INT,
	@decAmountF AS MONEY,
	@decDebitsF AS MONEY,
	@decCreditsF AS MONEY,
	@strCurrency AS NVARCHAR(3),
	@decExchange AS DECIMAL(20,6),
	@bitForeignAcct AS BIT,
	@decUnAllocatedAmt AS MONEY
)
AS
BEGIN
	INSERT INTO tblJournalEntLY (lngJourID, intLineNum, intGLNumber, decAmount, decDebits, decCredits, strComment, intDept, decAmountF, decDebitsF, decCreditsF, strCurrency, decExchange, bitForeignAcct, decAllocatedAmtToDate, decUnAllocatedAmt)
	VALUES (@JournID ,@LineNum ,@GLNumber ,@Amount ,@Debits ,@Credits ,@Comment ,@intDept ,@decAmountF ,@decDebitsF ,@decCreditsF ,@strCurrency ,@decExchange ,@bitForeignAcct,0,@decUnAllocatedAmt)
END
GO
/****** Object:  StoredProcedure [dbo].[JournalInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[JournalInsert]
(
	@JournID AS BIGINT,
	@UserID AS NVARCHAR(20),
	@SysDate AS SMALLDATETIME,
	@TransDate AS SMALLDATETIME,
	@Module AS TINYINT,
	@EntType AS TINYINT,
	@Source AS NVARCHAR(100),
	@Comment AS NVARCHAR(400),
	@CuVeInID AS NVARCHAR(50),
	@PayType AS TINYINT
)
AS
BEGIN
	INSERT INTO tblJournal (lngJourID, strUserName, dteSystemDate, dteJournalDate, intModule,intEntryType, strSource, strComment, strCuVeGeInID ,intPayType)
    VALUES (@JournID ,@UserID ,@SysDate ,@TransDate ,@Module ,@EntType ,@Source ,@Comment ,@CuVeInID ,@PayType)
END
GO
/****** Object:  StoredProcedure [dbo].[JournalLYInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[JournalLYInsert]
(
	@JournID AS BIGINT,
	@UserID AS NVARCHAR(20),
	@SysDate AS SMALLDATETIME,
	@TransDate AS SMALLDATETIME,
	@Module AS TINYINT,
	@EntType AS TINYINT,
	@Source AS NVARCHAR(100),
	@Comment AS NVARCHAR(200),
	@CuVeInID AS NVARCHAR(50),
	@PayType AS TINYINT
)
AS
BEGIN
	INSERT INTO tblJournalLY (lngJourID, strUserName, dteSystemDate, dteJournalDate, intModule, intEntryType, strSource, strComment, strCuVeGeInID, intPayType) 
	VALUES (@JournID ,@UserID ,@SysDate ,@TransDate ,@Module ,@EntType ,@Source ,@Comment ,@CuVeInID ,@PayType)
END
GO
/****** Object:  StoredProcedure [dbo].[KillProcess]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[KillProcess]
(
	@SPID NVARCHAR(MAX)
) 
AS
BEGIN

	DECLARE @Query AS NVARCHAR(MAX) = 'KILL ' + @SPID
	DECLARE @ParameterDefinition AS NVARCHAR(MAX) ='@SPID NVARCHAR(MAX)'
	EXECUTE sp_executesql @Query, @ParameterDefinition, @SPID

END
GO
/****** Object:  StoredProcedure [dbo].[LabelDocsSetAdd]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/***************End [RequisitionReasonUpdate]***************/

/******************* Start [LabelDocsSetAdd] ********************/

---------------------------------

Create PROCEDURE  [dbo].[LabelDocsSetAdd] 
(@IsGlobalDoc bit,
@MachineName nvarchar(100),
@Name nvarchar(50),
@Form nvarchar(500),
@Printer nvarchar(500),
@IsDocDefault bit
)
 As 
 BEGIN
 INSERT INTO tblLabelFormsDocs (bitGlobal, strMachine, strName,  strForm, strPrinter, bitDocDefault) VALUES (@IsGlobalDoc, @MachineName, @Name, @Form, @Printer, @IsDocDefault)
 END 
GO
/****** Object:  StoredProcedure [dbo].[LabelFormDocsSetAdd]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[LabelFormDocsSetAdd]    Script Date: 07-11-2019 10:38:47 ******/
CREATE PROCEDURE  [dbo].[LabelFormDocsSetAdd] 
(@IsGlobalDoc bit,
@MachineName nvarchar(100),
@Name nvarchar(50),
@Form nvarchar(500),
@Printer nvarchar(500),
@IsDocDefault bit
)
As 
BEGIN
INSERT INTO tblLabelFormsDocs (bitGlobal, strMachine, strName, strForm, strPrinter, bitDocDefault) VALUES (@IsGlobalDoc, @MachineName, @Name, @Form, @Printer, @IsDocDefault)
END
GO
/****** Object:  StoredProcedure [dbo].[LabelFormDocsSetDelete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[LabelFormDocsSetDelete]    Script Date: 07-11-2019 10:38:47 ******/
CREATE PROCEDURE  [dbo].[LabelFormDocsSetDelete] 
(@IsGlobalSet bit,
@IsDeleteDirtySet bit,
@MachineName nvarchar(100))
 As 
 BEGIN
 
 BEGIN TRAN

	BEGIN TRY
		If @IsDeleteDirtySet = 1
		Begin
			DELETE FROM tblLabelFormsDocs WHERE lngID IN (SELECT lngID FROM tblLabelFormsDocs WHERE bitGlobal = 0 AND strName NOT IN (SELECT strName FROM tblLabelFormsDocs WHERE bitGlobal = 1))
		END
		Else
		Begin
			If @IsGlobalSet = 1
			Begin
				DELETE FROM tblLabelFormsDocs WHERE bitGlobal = @IsGlobalSet
			End
			Else				
			Begin
				DELETE FROM tblLabelFormsDocs WHERE bitGlobal = @IsGlobalSet and strMachine = @MachineName
			End
		END
		COMMIT TRAN
	END TRY

	BEGIN CATCH
		ROLLBACK TRAN
		THROW
	END CATCH
 END
GO
/****** Object:  StoredProcedure [dbo].[LastPINumberUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [InsertInvoiceREVAndREVDTForOpenItems] ***********/

/*********** Start [LastPINumberUpdate] ***********/
CREATE PROCEDURE [dbo].[LastPINumberUpdate]
(
	@LastPINumber BIGINT
)
AS
BEGIN
	UPDATE tblLastIDs SET lngPINumber = @LastPINumber
END
GO
/****** Object:  StoredProcedure [dbo].[LinkedAccountsUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[LinkedAccountsUpdate] (
	@SQGLNumber NVARCHAR(200)
	,@bIsCurrentYearTable BIT
	,@intLinkREarnings NVARCHAR(50)
	,@intLinkCEarnings NVARCHAR(50)
	,@intLinkAP NVARCHAR(50)
	,@intLinkPurDisc NVARCHAR(50)
	,@intLinkAR NVARCHAR(50)
	,@intLinkSalesDisc NVARCHAR(50)
	,@intLinkAssCosts NVARCHAR(50)
	,@intLinkAdjWriteOff NVARCHAR(50)
	,@intDefBank NVARCHAR(50)
	,@intLinkPrePay NVARCHAR(50)
	,@intLinkDeposit NVARCHAR(50)
	,@intLinkExchange NVARCHAR(50)
	,@intLinkGRV NVARCHAR(50)
	,@intLinkAddCost NVARCHAR(50)
	,@intLinkDelAdvice NVARCHAR(50)
	,@intLinkWIP NVARCHAR(50)
	,@intLinkManStandardCost NVARCHAR(50)
	,@intWorkshopLinkWIP NVARCHAR(50)
	,@intLinkGIT NVARCHAR(50)
	)
AS
BEGIN
	BEGIN TRAN

	BEGIN TRY
		SELECT tblInv.strPartNumber PartNumber
			,tblAccounts.intGLNumber GLNumber
		INTO #AccountData
		FROM tblInv
		INNER JOIN tblAccounts ON tblInv.intExpAcct = tblAccounts.intGLNumber
		WHERE (
				tblAccounts.intGLNumber IN (
					SELECT *
					FROM fnSplitStringAsTable(@SQGLNumber, ',')
					)
				)

		IF (
				NOT EXISTS (
					SELECT 1
					FROM #AccountData
					)
				)
		BEGIN
			IF (@bIsCurrentYearTable = 1)
			BEGIN
				UPDATE tblAccounts
				SET bitLinkREarnings = 0
					,bitLinkAP = 0
					,bitLinkCEarnings = 0
					,bitLinkPurDisc = 0
					,bitLinkAR = 0
					,bitLinkSalesDisc = 0
					,bitLinkAssCosts = 0
					,bitLinkAdjWriteOff = 0
					,bitDefBank = 0
					,bitLinkDeposit = 0
					,bitLinkPrePay = 0
					,bitLinkAddCost = 0
					,bitLinkDelAdvice = 0
					,bitLinkWIP = 0
					,bitLinkManStandardCost = 0
					,bitIsLinkedAccount = 0
					,bitLinkWorkshopWIP = 0 /*NOTE:WS-Workshop*/
					,bitLinkGoodsInTransit = 0 /*WS:IBT Change*/

				UPDATE tblAccounts
				SET bitLinkREarnings = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkREarnings

				UPDATE tblAccounts
				SET bitLinkCEarnings = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkCEarnings

				UPDATE tblAccounts
				SET bitLinkAP = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkAP

				UPDATE tblAccounts
				SET bitLinkPurDisc = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkPurDisc

				UPDATE tblAccounts
				SET bitLinkAR = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkAR

				UPDATE tblAccounts
				SET bitLinkSalesDisc = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkSalesDisc

				UPDATE tblAccounts
				SET bitLinkAssCosts = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkAssCosts

				UPDATE tblAccounts
				SET bitLinkAdjWriteOff = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkAdjWriteOff

				UPDATE tblAccounts
				SET bitDefBank = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intDefBank

				UPDATE tblAccounts
				SET bitLinkPrePay = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkPrePay

				UPDATE tblAccounts
				SET bitLinkDeposit = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkDeposit

				UPDATE tblAccounts
				SET bitlinkexc = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkExchange

				UPDATE tblAccounts
				SET bitLinkGRV = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkGRV

				UPDATE tblAccounts
				SET bitLinkAddCost = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkAddCost

				UPDATE tblAccounts
				SET bitLinkDelAdvice = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkDelAdvice

				UPDATE tblAccounts
				SET bitLinkWIP = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkWIP

				UPDATE tblAccounts
				SET bitLinkManStandardCost = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkManStandardCost

				UPDATE tblAccounts
				SET bitLinkWorkshopWIP = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intWorkshopLinkWIP --NOTE:WS-Workshop

				UPDATE tblAccounts
				SET bitLinkGoodsInTransit = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkGIT --WS: IBT change
			END
			ELSE
			BEGIN
				UPDATE tblAccountsLY
				SET bitLinkREarnings = 0
					,bitLinkAP = 0
					,bitLinkCEarnings = 0
					,bitLinkPurDisc = 0
					,bitLinkAR = 0
					,bitLinkSalesDisc = 0
					,bitLinkAssCosts = 0
					,bitLinkAdjWriteOff = 0
					,bitDefBank = 0
					,bitLinkDeposit = 0
					,bitLinkPrePay = 0
					,bitLinkAddCost = 0
					,bitLinkDelAdvice = 0
					,bitLinkWIP = 0
					,bitLinkManStandardCost = 0
					,bitIsLinkedAccount = 0
					,bitLinkWorkshopWIP = 0 /*NOTE:WS-Workshop*/
					,bitLinkGoodsInTransit = 0 /*WS:IBT Change*/

				UPDATE tblAccountsLY
				SET bitLinkREarnings = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkREarnings

				UPDATE tblAccountsLY
				SET bitLinkCEarnings = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkCEarnings

				UPDATE tblAccountsLY
				SET bitLinkAP = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkAP

				UPDATE tblAccountsLY
				SET bitLinkPurDisc = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkPurDisc

				UPDATE tblAccountsLY
				SET bitLinkAR = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkAR

				UPDATE tblAccountsLY
				SET bitLinkSalesDisc = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkSalesDisc

				UPDATE tblAccountsLY
				SET bitLinkAssCosts = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkAssCosts

				UPDATE tblAccountsLY
				SET bitLinkAdjWriteOff = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkAdjWriteOff

				UPDATE tblAccountsLY
				SET bitDefBank = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intDefBank

				UPDATE tblAccountsLY
				SET bitLinkPrePay = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkPrePay

				UPDATE tblAccountsLY
				SET bitLinkDeposit = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkDeposit

				UPDATE tblAccountsLY
				SET bitlinkexc = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkExchange

				UPDATE tblAccountsLY
				SET bitLinkGRV = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkGRV

				UPDATE tblAccountsLY
				SET bitLinkAddCost = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkAddCost

				UPDATE tblAccountsLY
				SET bitLinkDelAdvice = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkDelAdvice

				UPDATE tblAccountsLY
				SET bitLinkWIP = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkWIP

				UPDATE tblAccountsLY
				SET bitLinkManStandardCost = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intLinkManStandardCost

				UPDATE tblAccountsLY
				SET bitLinkWorkshopWIP = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intWorkshopLinkWIP --NOTE:WS-Workshop

				UPDATE tblAccountsLY
				SET bitLinkGoodsInTransit = 1
					,bitIsLinkedAccount = 1
				WHERE intGLNumber = @intWorkshopLinkWIP --WS:IBT change
			END
		END
		ELSE
		BEGIN
			SELECT *
			FROM #AccountData
		END

		COMMIT TRAN
	END TRY

	BEGIN CATCH
		ROLLBACK TRAN THROW
	END CATCH

	RETURN
END
GO
/****** Object:  StoredProcedure [dbo].[LoadContainer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

------------------------------------------------------------------'
CREATE PROCEDURE [dbo].[LoadContainer]
(
	@DocumentID NVARCHAR(100)
)
AS
BEGIN
	SELECT [strCntDocID] AS DocumentID
      ,[dteSystemDate] AS SystemDate
      ,[dteJournalDate] AS JournalDate
      ,[dteRequired] AS [Required]
      ,[strUserName] AS UserName 
      ,[strCustName] AS CustomerName
      ,[strSoldTo] AS SoldTo 
      ,[strShipTo] AS ShipTo
      ,[strReference] AS Reference 
	  ,[strType] AS [Type]
      ,[bitHistoryTrans] AS IsHistoryTrans 
      ,[strNotes] AS Notes
      ,[strTrackingNo] AS TrackingNo 
      ,[strWayBillNo] AS WayBillNo
      ,[bitPrinted] AS IsPrinted 
      ,[bitEmailed] AS IsEmailed 
      ,[decTotalValue] AS TotalValue 
      ,[decVolW] AS Width 
      ,[decVolH] AS Height
      ,[decVolD] AS Depth 
      ,[decCuVol] AS CubeVolume 
      ,[decWeight] AS [Weight]      
      ,[bitCustMultiple] AS IsCustomerMultiple 
      ,tblContainers.[strDelRouteCode] AS DeliveryRouteCode
      ,tblContainers.[strDelVehicleCode] AS DeliveryVehicleCode 
      ,tblContainers.[strDelDriverCode] AS DeliveryDriverCode
      ,tblDeliveryRoutes.strDelRouteDesc AS DeliveryRouteDesc
	  ,tblDeliveryVehicles.strDelVehicleDesc AS DeliveryVehicleDesc
	  ,tblDeliveryDrivers.strDelDriverDesc AS DeliveryDriverDesc 
	FROM tblContainers 
	LEFT OUTER JOIN tblDeliveryRoutes ON tblContainers.strDelRouteCode = tblDeliveryRoutes.strDelRouteCode 
	LEFT OUTER JOIN tblDeliveryVehicles ON tblContainers.strDelVehicleCode = tblDeliveryVehicles.strDelVehicleCode 
	LEFT OUTER JOIN tblDeliveryDrivers ON tblContainers.strDelDriverCode = tblDeliveryDrivers.strDelDriverCode 
	WHERE tblContainers.strCntDocID = @DocumentID
END
GO
/****** Object:  StoredProcedure [dbo].[LoadContainerDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------'
CREATE PROCEDURE [dbo].[LoadContainerDT]
(
	@DocumentID NVARCHAR(100)
)
AS
BEGIN
	SELECT c.strShpDocID AS ShpDocID 
		,c.decTotalValue AS TotalValue
		,c.decVolW AS Width
		,c.decVolH AS Height
		,c.decVolD AS Depth
		,c.decCuVol AS CubeVolume
		,c.decWeight AS [Weight]
		,c.intSeqNo AS SequenceNo
		,CASE WHEN s.bitCustMultiple = 1 THEN '<MULTIPLE>' ELSE s.strCustName END AS CustomerName
		,CASE WHEN s.bitCustMultiple = 1 THEN '' ELSE s.strSoldTo END AS SoldTo
		,CASE WHEN s.bitCustMultiple = 1 THEN '' ELSE s.strShipTo END AS ShipTo
		,CASE WHEN s.bitCustMultiple = 1 THEN '' ELSE s.strNotes END AS Notes
		,s.bitCustMultiple AS IsCustomerMultiple
	FROM tblContainersDT c
	LEFT JOIN tblShipments s ON c.strShpDocID = s.strShpDocID
	WHERE c.strCntDocID = @DocumentID
	ORDER BY c.strShpDocID
END
GO
/****** Object:  StoredProcedure [dbo].[LoadCRMNotifitcationDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/********* Start [LoadCRMNotifitcationDetails] (CRM)**********/

CREATE PROCEDURE [dbo].[LoadCRMNotifitcationDetails] (
	@UserName NVARCHAR(Max)
	,@CurrentDate DATETIME
	)
AS
BEGIN
		Select 
		 tblCRMActivityActions.ActivityActionID as ActivityActionID
		,tblCRMActivityActions.ActivityID as ActivityID
		,tblCRMActivityActions.ActionDescription as ActionDescription
		,Cast(tblCRMActivityActions.DueDate as DATE) as DueDate
		,tblCRMActivityActions.AssignTo as AssignTo
		,tblCRMActivityActions.ActionStatus as ActionStatus
		,tblCRMActivityActions.CreatedDate as CreatedDate
		,tblCRMActivityActions.UpdateDate as UpdateDate
		,tblCRMActivityActions.CreatedUser as CreatedUser
		,tblCRMActivityActions.UpdatedUser as UpdatedUser
		,tblCRMActivityActions.IsInactive as IsInactive
		,tblCRMActivityActions.ActionType as ActionType
		,tblCRMActivities.ActivityName as ActivityName
		,tblCRMActivities.ActivityGroupName as ActivityGroupName
		,tblCRMActivities.CustomerNumber as CustomerNumber
		,tblCRMActivities.VendorNumber as VendorNumber
		,tblCRMActivities.InventoryItemNumber as  InventoryItemNumber     
		,tblCRMActivities.ProjectNumber as ProjectNumber 
		,tblCRMActivityActions.EmailId as EmailId
		,tblCRMActivityActions.IsActionReopened as IsActionReopened
		,tblCRMActivityActions.ActionReopenedUserName as ActionReopenedUserName
		,tblCRMActivityActions.IsNotifyOnSalesDocuments as IsNotifyOnSalesDocuments 
		,c.strEmail as ActionEmailID
		,d.strEmail as ActivityEmailID
		,tblCRMActivities.ActivityCreatedUser as ActivityCreatedUser
		,tblCRMActivityActions.SignText as SignText 
		,ISNULL(tblCRMActivityActions.IsCalendar,0) AS IsCalendar
		,ISNULL(tblCRMActivityActions.StartTime,'12:00:00 AM') AS StartTime   
		,ISNULL(tblCRMActivityActions.EndTime,'12:00:00 AM') AS EndTime                  
	 from tblCRMActivityActions (NOLOCK) inner join tblCRMActivities (NOLOCK)  on tblCRMActivityActions.ActivityID=tblCRMActivities.ActivityID 
	 left join tblUsers c (NOLOCK) on tblCRMActivityActions.CreatedUser=c.strUserName
		left join tblUsers d (NOLOCK) on tblCRMActivities.ActivityCreatedUser =d.strUserName
		inner join tblCRMActivityActionsStatus (NOLOCK) on tblCRMActivityActions.ActionStatus= tblCRMActivityActionsStatus.StatusType
	WHERE tblCRMActivityActionsStatus.StatusGroup <> 3
		AND tblCRMActivityActions.AssignTo = @UserName
	ORDER BY DueDate
END
GO
/****** Object:  StoredProcedure [dbo].[LoadCustomers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [LoadServiceableItems] ***********/

/*********** Start [LoadCustomers] ***********/
CREATE PROCEDURE [dbo].[LoadCustomers]
(
	@IsCheckedSearch bit,
	@SearchText nvarchar(max),
	@IsInactive bit
)
AS
BEGIN
	IF(@IsCheckedSearch = 1)
	BEGIN
		IF(@SearchText <> '')
		BEGIN
			IF(@IsInactive = 1)
			BEGIN
				SELECT 
				    strCustName AS CustomerName
				   ,strCustDesc AS [Description]
				FROM 
					tblCustomers 
				WHERE 
					(strCustName LIKE @SearchText OR strCustDesc LIKE @SearchText)
				Order By 
					strCustName
			END
			ELSE
			BEGIN
				SELECT 
				    strCustName AS CustomerName
				   ,strCustDesc AS [Description]
				FROM 
					tblCustomers 
				WHERE 
					bitInactive = 0 AND 
					(strCustName LIKE @SearchText OR strCustDesc LIKE @SearchText)
				Order By 
					strCustName
			END
		END
	END
	ELSE
	BEGIN
		IF(@IsInactive = 1)
		BEGIN
			SELECT 
				    strCustName AS CustomerName
				   ,strCustDesc AS [Description]
			FROM 
					tblCustomers  
			Order By 
				strCustName
		END
		ELSE
		BEGIN
			SELECT 
				    strCustName AS CustomerName
				   ,strCustDesc AS [Description]
			FROM 
					tblCustomers   
			WHERE 
				bitInactive = 0
			Order By 
				strCustName
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[LoadDocumentForConversionDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[LoadDocumentForConversionDetails] (
	@PickTicketsDocId VARCHAR(100)
	,@IsLoadDocumentForConversion BIT = 0
	)
AS
BEGIN
	DECLARE @IsSerialAssigned BIT = 1
	IF @IsLoadDocumentForConversion = 1
	BEGIN
		SELECT tblPickTicketsDT.strPkTkDocID AS 'PkTkDocID'
			,tblPickTicketsDT.intLineNo AS 'LineNo'
			,tblPickTicketsDT.strPartNumber AS 'PartNumber'
			,tblPickTicketsDT.strLocation AS 'Location'
			,tblPickTicketsDT.strPartDesc AS 'Description'
			,tblPickTicketsDT.decQty AS 'Quantity'
			,tblPickTicketsDT.decQtyPicked AS 'QuantityPicked'
			,tblPickTicketsDT.strUnit AS 'Unit'
			,tblInv.bitInvSerialType AS 'IsInventorySerialType'
			,ISNULL(tblInvSerialTypes.intType, 0) AS 'SerialLotType'
			,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS 'IsDimensionExist'
			,ISNULL(tblInvSerialTypes.bitMethod, 0) AS 'IsMethod'
			,tblInv.decSellFromStock AS 'SellFromStock'
			,
			--ADDED
			ISNULL(tblInvLocBin.lngId, 0) AS 'PickingBin'
			,tblInv.intType AS 'InvSerialTypeID'
			,tblInv.strBarCode AS BarCode
			,tblInv.strBarCode2 AS BarCode2
			,tblInv.intType AS 'Type'
			,tblOrderDocDT.bitDiscountTax AS 'IsDiscountTax'
		FROM tblpicktickets
		INNER JOIN tblpickticketsdt ON tblpicktickets.strPkTkDocID = tblpickticketsdt.strPkTkDocID
		INNER JOIN tblInv ON tblPickTicketsDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
		LEFT JOIN tblInvLocBin ON tblPickTicketsDT.strLocation = tblInvLocBin.strLocName
			AND tblInvLocBin.bitPickingBin = 1
			AND tblInvLocBin.bitInactive = 0
		INNER JOIN tblOrderDocDT ON tblOrderDocDT.strOrdDocID = tblpicktickets.strOrdDocID
			AND tblpickticketsdt.intLineNo = tblOrderDocDT.intLineNo
		WHERE tblPickTicketsDT.strPkTkDocID = @PickTicketsDocId
		ORDER BY tblPickTicketsDT.intLineNo
	END
	ELSE
		SELECT tblPickTicketsDT.strPkTkDocID AS 'PkTkDocID'
			,tblPickTicketsDT.intLineNo AS 'LineNo'
			,tblPickTicketsDT.strPartNumber AS 'PartNumber'
			,tblPickTicketsDT.strLocation AS 'Location'
			,tblPickTicketsDT.strPartDesc AS 'Description'
			,tblPickTicketsDT.decQty AS 'Quantity'
			,tblPickTicketsDT.decQtyPicked AS 'QuantityPicked'
			,tblPickTicketsDT.strUnit AS 'Unit'
			,tblInv.bitInvSerialType AS 'IsInventorySerialType'
			,ISNULL(tblInvSerialTypes.intType, 0) AS 'SerialLotType'
			,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS 'IsDimensionExist'
			,ISNULL(tblInvSerialTypes.bitMethod, 0) AS 'IsMethod'
			,tblInv.decSellFromStock AS 'SellFromStock'
			,
			--ADDED
			--ISNULL(lngBinID, 0) AS 'PickingBin'
			ISNULL(lngBinID, ISNULL((
						SELECT lngID
						FROM tblInvLocBin
						WHERE tblPickTicketsDT.strLocation = tblInvLocBin.strLocName
							AND tblInvLocBin.bitPickingBin = 1
							AND tblInvLocBin.bitInactive = 0
						), 0)) AS 'PickingBin'
			,tblInv.intType AS 'InvSerialTypeID'
			,tblInv.strBarCode AS BarCode
			,tblInv.strBarCode2 AS BarCode2
			,tblInv.intType AS 'Type'
			,ISNULL(@IsSerialAssigned, 1) AS IsSerialAssigned -- For Mobile, by default assigned selected line for adjustment
			,tblOrderDocDT.bitDiscountTax AS 'IsDiscountTax'
		FROM tblpicktickets
		INNER JOIN tblpickticketsdt ON tblpicktickets.strPkTkDocID = tblpickticketsdt.strPkTkDocID
		INNER JOIN tblInv ON tblPickTicketsDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
		LEFT JOIN tblPickTicketsDTBin ON tblPickTicketsDT.strPkTkDocID = tblPickTicketsDTBin.strPkTkDocID
			AND tblPickTicketsDTBin.intLineNo = tblPickTicketsDT.intLineNo
			AND bitPickingBin = 1
		INNER JOIN tblOrderDocDT ON tblOrderDocDT.strOrdDocID = tblpicktickets.strOrdDocID
			AND tblpickticketsdt.intLineNo = tblOrderDocDT.intLineNo
		WHERE tblPickTicketsDT.strPkTkDocID = @PickTicketsDocId
		ORDER BY tblPickTicketsDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[LoadInventoryImage]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[LoadInventoryImage]
	@tvpTblInvImage ImportInvImageTableType READONLY 
AS
BEGIN
	--Delete FROM [tblInvImg] WHERE Image_ID NOT IN (SELECT imageID FROM @tvpTblInvImage)
	UPDATE tblInvImg SET tblInvImg.[bitDefaultImage] = temptblInvImg.[bitDefaultImage] FROM @tvpTblInvImage temptblInvImg WHERE tblInvImg.Image_ID =  temptblInvImg.imageId And temptblInvImg.imageID <> 0
	INSERT INTO [tblInvImg] ([strPartNumber], [imgData], [bitDefaultImage], [dteRowUpdated]) SELECT strPartNumber, imgData, bitDefaultImage, GETDATE() FROM @tvpTblInvImage TType where TType.imageID = 0
END
GO
/****** Object:  StoredProcedure [dbo].[LoadInvForecastingData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [dbo].[LoadInvForecastingData] ***********/
CREATE PROCEDURE [dbo].[LoadInvForecastingData] (
	@IsCompanyChecked BIT
	,@Location NVARCHAR(200)
	,@StartDate DATETIME
	,@FinishDate DATETIME
	,@Category NVARCHAR(200)
	)
AS
BEGIN
	IF @IsCompanyChecked = 1
	BEGIN
		SELECT tblInv.strPartNumber AS PartNumber
			,tblInv.strDesc AS [Description]
			,tblInv.intReorderQty AS ReorderQty
			,(
				SELECT Isnull(Sum(tblinvtrackingdt.decqty), 0) * - 1
				FROM tblinvtrackingdt
				INNER JOIN tblinvtracking ON tblinvtrackingdt.lnginvtrackid = tblinvtracking.lnginvtrackid
				WHERE (
						tblinvtracking.dtejournaldate BETWEEN @StartDate
							AND @FinishDate
						)
					AND (tblinvtracking.intmodule = 2)
					AND (tblinvtrackingdt.strpartnumber = tblinv.strpartnumber)
				) AS Qty
			,CONVERT(MONEY, (
					SELECT ISNULL(SUM(decQty), 0)
					FROM tblInvoiceDoc
					INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
						AND tblInvoiceDoc.dteJournalDate BETWEEN CONVERT(DATE, GETDATE() - 8)
							AND CONVERT(DATE, GETDATE() - 1)
						AND tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
					)) AS SalesLastSevenDays
			,CONVERT(MONEY, (
					SELECT ISNULL(SUM(decQty), 0)
					FROM tblInvoiceDoc
					INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
						AND tblInvoiceDoc.dteJournalDate BETWEEN CONVERT(DATE, GETDATE() - 8)
							AND CONVERT(DATE, GETDATE() - 1)
					) / 7) AS NewDailySalesCalc
			,decNewDailySales AS NewDailySales
			,decOrderLeadTime AS OrderLeadTime
			,decSafetyFactorPer AS SafetyFactorPer
			,CONVERT(MONEY, tblInv.intReorderQty) AS OldMinLevel
			,CONVERT(MONEY, (
					SELECT ISNULL(SUM(decQty), 0)
					FROM tblInvoiceDoc
					INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
						AND tblInvoiceDoc.dteJournalDate BETWEEN CONVERT(DATE, GETDATE() - 8)
							AND CONVERT(DATE, GETDATE() - 1)
					) * (decOrderLeadTime * 1) + (decSafetyFactorPer)) AS MinimumLevelCalc
			,decMinimumLevel AS MinimumLevel
			,decOldMinLevel AS OldMinLevelCalc
			,decDaysSalesinStock AS DaysSalesinStock
			,CONVERT(MONEY, (
					SELECT ISNULL(SUM(decQty), 0)
					FROM tblInvoiceDoc
					INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
						AND tblInvoiceDoc.dteJournalDate BETWEEN CONVERT(DATE, GETDATE() - 8)
							AND CONVERT(DATE, GETDATE() - 1)
					) * (decOrderLeadTime * 1) + (decSafetyFactorPer) + (decOrderLeadTime) * (
					SELECT ISNULL(SUM(decQty), 0)
					FROM tblInvoiceDoc
					INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
						AND tblInvoiceDoc.dteJournalDate BETWEEN CONVERT(DATE, GETDATE() - 8)
							AND CONVERT(DATE, GETDATE() - 1)
					)) AS MaxQty
			,tblInv.decMaxLevel AS MaxLevel
			,intReorderQty AS OldMax
			,decOldMaxLevel AS OldMaxLevel
			,bitInclInvForecast AS InclInvForecast
		FROM tblInv
		WHERE (intType = 1)
			AND (bitInactive = 0)
			AND (
				@Category = '<< ALL Categories >>'
				OR tblInv.strCategory = @Category
				)
		ORDER BY tblInv.strPartNumber;
	END
	ELSE
	BEGIN
		SELECT tblInv.strPartNumber AS PartNumber
			,tblInv.strDesc AS [Description]
			,tblInv.intReorderQty AS ReorderQty
			,(
				SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) * - 1
				FROM tblInvTrackingDT
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
				WHERE (
						tblInvTracking.dteJournalDate BETWEEN @StartDate
							AND @FinishDate
						)
					AND (tblInvTracking.intModule = 2)
					AND (tblInvTrackingDT.strPartNumber = tblInv.strPartNumber)
					AND tblInvTrackingDT.strLocName = @Location
				) AS Qty
			,CONVERT(MONEY, (
					SELECT ISNULL(SUM(decQty), 0)
					FROM tblInvoiceDoc
					INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
						AND tblInvoiceDoc.dteJournalDate BETWEEN CONVERT(DATE, GETDATE() - 8)
							AND CONVERT(DATE, GETDATE() - 1)
						AND tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
					)) AS SalesLastSevenDays
			,CONVERT(MONEY, (
					SELECT ISNULL(SUM(decQty), 0)
					FROM tblInvoiceDoc
					INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
						AND tblInvoiceDoc.dteJournalDate BETWEEN CONVERT(DATE, GETDATE() - 8)
							AND CONVERT(DATE, GETDATE() - 1)
					) / 7) AS NewDailySalesCalc
			,decNewDailySales AS NewDailySales
			,decOrderLeadTime AS OrderLeadTime
			,decSafetyFactorPer AS SafetyFactorPer
			,CONVERT(MONEY, tblInv.intReorderQty) AS OldMinLevel
			,CONVERT(MONEY, (
					SELECT ISNULL(SUM(decQty), 0)
					FROM tblInvoiceDoc
					INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
						AND tblInvoiceDoc.dteJournalDate BETWEEN CONVERT(DATE, GETDATE() - 8)
							AND CONVERT(DATE, GETDATE() - 1)
					) * (decOrderLeadTime * 1) + (decSafetyFactorPer)) AS MinimumLevelCalc
			,tblInvExt.decMinimumLevel AS MinimumLevel
			,decOldMinLevel AS OldMinLevelCalc
			,decDaysSalesinStock AS DaysSalesinStock
			,CONVERT(MONEY, (
					SELECT ISNULL(SUM(decQty), 0)
					FROM tblInvoiceDoc
					INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
						AND tblInvoiceDoc.dteJournalDate BETWEEN CONVERT(DATE, GETDATE() - 8)
							AND CONVERT(DATE, GETDATE() - 1)
					) * (decOrderLeadTime * 1) + (decSafetyFactorPer) + (decOrderLeadTime) * (
					SELECT ISNULL(SUM(decQty), 0)
					FROM tblInvoiceDoc
					INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
						AND tblInvoiceDoc.dteJournalDate BETWEEN CONVERT(DATE, GETDATE() - 8)
							AND CONVERT(DATE, GETDATE() - 1)
					)) AS MaxQty
			,tblInvExt.decMaxLevel AS MaxLevel
			,intReorderQty AS OldMax
			,decOldMaxLevel AS OldMaxLevel
			,tblInvExt.decMinimumLevel AS tblInvExt_decMinimumLevel
			,tblInvExt.decMaxLevel AS tblInvExt_decMaxLevel
			,bitInclInvForecast AS InclInvForecast
		FROM tblInv
		INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
		WHERE (intType = 1)
			AND (tblInvExt.bitInactive = 0)
			AND (
				@Category = '<< ALL Categories >>'
				OR tblInv.strCategory = @Category
				)
			AND tblInvExt.strLocName = @Location
		ORDER BY tblInv.strPartNumber;
	END
END
GO
/****** Object:  StoredProcedure [dbo].[LoadInvLocSec]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[LoadInvLocSec]
(
	@UserName nvarchar(100)
)
AS
BEGIN
	SELECT 
	  tblInvLoc.strLocName AS LocationName, 
	  ISNULL((
		  SELECT 
			COUNT(tblInvLocSec.strLocName) 
		  FROM 
			tblInvLocSec 
		  WHERE 
			tblInvLocSec.strLocName = tblInvLoc.strLocName), 0) AS LocationCount, 
	  ISNULL(tblInvLocSec.strUserName, '') AS UserName
	FROM 
	  tblInvLoc 
	  LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName 
	  AND tblInvLocSec.strUserName = @UserName 
	ORDER BY 
	  tblInvLoc.strLocName
END
GO
/****** Object:  StoredProcedure [dbo].[LoadItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[LoadItems] (
	@SearchText NVARCHAR(max)
	,@IsInactive BIT
	,@Filter INT
	,@IsBPToolMode BIT
	,@UserName NVARCHAR(100)
	,@IsSortDescription BIT
	)
AS
BEGIN
	IF (@Filter = 0) --Assets
	BEGIN
		SELECT intGLNumber AS 'Code'
			,strDesc AS 'Description'
		FROM tblAccounts
		WHERE (
				--intAccType = 1
				--AND 
				bitInventory = 1
				)
			AND (
				bitInactive = CASE 
					WHEN @IsInactive = 0
						THEN 0
					ELSE bitInactive
					END
				)
			AND (
				intGLNumber NOT IN (
					SELECT DISTINCT intGLAsset
					FROM tblAccountSets
					WHERE blnBuyout = 1
					)
				)
			AND (
				(
					LEN(@SearchText) > 0
					AND (
						intGLNumber LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					)
				OR (
					LEN(@SearchText) <= 0
					AND (
						intGLNumber LIKE '%'
						OR strDesc LIKE '%'
						)
					)
				)
		ORDER BY intGLNumber
	END
	ELSE IF (@Filter = 1) --Category
	BEGIN
		IF (@IsBPToolMode = 0)
		BEGIN
			SELECT strCategory AS 'Code'
				,strDesc AS 'Description'
			FROM tblInvCat
			WHERE (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 0
						AND (
							strCategory LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 0
						AND (
							strCategory LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					strCategory IN (
						SELECT tblInvCat.strCategory
						FROM tblInvCat
						LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
						WHERE ISNULL((
									SELECT COUNT(tblInvCatSec.strCategory)
									FROM tblInvCatSec
									WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblInvCatSec.strCategory)
										FROM tblInvCatSec
										WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
										), 0) > 0
								AND tblInvCatSec.strUserName = @UserName
								)
						)
					)
			ORDER BY strCategory
		END
		ELSE
		BEGIN
			SELECT strCategory AS 'Code'
				,strDesc AS 'Description'
			FROM tblInvCat
			WHERE (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 0
						AND (
							strCategory LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 0
						AND (
							strCategory LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY strCategory
		END
	END
	ELSE IF (@Filter = 2) --AccountSets
	BEGIN
		SELECT strAcctSet AS 'Code'
			,strDesc AS 'Description'
		FROM tblAccountSets
		WHERE (
				blnInactive = CASE 
					WHEN @IsInactive = 0
						THEN 0
					ELSE blnInactive
					END
				)
			AND (
				(
					LEN(@SearchText) > 0
					AND (
						strAcctSet LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					)
				OR (
					LEN(@SearchText) <= 0
					AND (
						strAcctSet LIKE '%'
						OR strDesc LIKE '%'
						)
					)
				)
		ORDER BY strAcctSet
	END
	ELSE IF (@Filter = 3) --Items
	BEGIN
		IF (@IsBPToolMode = 0)
		BEGIN
			SELECT strPartNumber AS 'Code'
				,strDesc AS 'Description'
				,intType AS 'Type'
			FROM tblInv
			WHERE (intType = 1)
				AND (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 0
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 0
						AND (
							strPartNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					strCategory IN (
						SELECT tblInvCat.strCategory
						FROM tblInvCat
						LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
						WHERE ISNULL((
									SELECT COUNT(tblInvCatSec.strCategory)
									FROM tblInvCatSec
									WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblInvCatSec.strCategory)
										FROM tblInvCatSec
										WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
										), 0) > 0
								AND tblInvCatSec.strUserName = @UserName
								)
						)
					)
			ORDER BY CASE 
					WHEN @IsSortDescription = 0
						THEN strPartNumber
					END
				,CASE 
					WHEN @IsSortDescription = 1
						THEN strDesc
					END
		END
		ELSE
		BEGIN
			SELECT strPartNumber AS 'Code'
				,strDesc AS 'Description'
				,intType AS 'Type'
			FROM tblInv
			WHERE (intType = 1)
				AND (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 0
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 0
						AND (
							strPartNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY CASE 
					WHEN @IsSortDescription = 0
						THEN strPartNumber
					END
				,CASE 
					WHEN @IsSortDescription = 1
						THEN strDesc
					END
		END
	END
	ELSE IF (@Filter = 4) --Service
	BEGIN
		IF (@IsBPToolMode = 0)
		BEGIN
			SELECT strPartNumber AS 'Code'
				,strDesc AS 'Description'
				,intType AS 'Type'
			FROM tblInv
			WHERE (intType = 4)
				AND (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 0
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 0
						AND (
							strPartNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					strCategory IN (
						SELECT tblInvCat.strCategory
						FROM tblInvCat
						LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
						WHERE ISNULL((
									SELECT COUNT(tblInvCatSec.strCategory)
									FROM tblInvCatSec
									WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblInvCatSec.strCategory)
										FROM tblInvCatSec
										WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
										), 0) > 0
								AND tblInvCatSec.strUserName = @UserName
								)
						)
					)
			ORDER BY CASE 
					WHEN @IsSortDescription = 0
						THEN strPartNumber
					END
				,CASE 
					WHEN @IsSortDescription = 1
						THEN strDesc
					END
		END
		ELSE
		BEGIN
			SELECT strPartNumber AS 'Code'
				,strDesc AS 'Description'
				,intType AS 'Type'
			FROM tblInv
			WHERE (intType = 4)
				AND (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 0
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 0
						AND (
							strPartNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY CASE 
					WHEN @IsSortDescription = 0
						THEN strPartNumber
					END
				,CASE 
					WHEN @IsSortDescription = 1
						THEN strDesc
					END
		END
	END
	ELSE IF (@Filter = 5) --Buyout
	BEGIN
		IF (@IsBPToolMode = 0)
		BEGIN
			SELECT strPartNumber AS 'Code'
				,strDesc AS 'Description'
				,intType AS 'Type'
			FROM tblInv
			WHERE (intType = 11)
				AND (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 0
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 0
						AND (
							strPartNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					strCategory IN (
						SELECT tblInvCat.strCategory
						FROM tblInvCat
						LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
						WHERE ISNULL((
									SELECT COUNT(tblInvCatSec.strCategory)
									FROM tblInvCatSec
									WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblInvCatSec.strCategory)
										FROM tblInvCatSec
										WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
										), 0) > 0
								AND tblInvCatSec.strUserName = @UserName
								)
						)
					)
			ORDER BY CASE 
					WHEN @IsSortDescription = 0
						THEN strPartNumber
					END
				,CASE 
					WHEN @IsSortDescription = 1
						THEN strDesc
					END
		END
		ELSE
		BEGIN
			SELECT strPartNumber AS 'Code'
				,strDesc AS 'Description'
				,intType AS 'Type'
			FROM tblInv
			WHERE (intType = 11)
				AND (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 0
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 0
						AND (
							strPartNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY CASE 
					WHEN @IsSortDescription = 0
						THEN strPartNumber
					END
				,CASE 
					WHEN @IsSortDescription = 1
						THEN strDesc
					END
		END
	END
	ELSE IF (@Filter = 6) --All
	BEGIN
		IF (@IsBPToolMode = 0)
		BEGIN
			SELECT strPartNumber AS 'Code'
				,strDesc AS 'Description'
				,intType AS 'Type'
			FROM tblInv
			WHERE (intType <> 5)
				AND (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 0
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 0
						AND (
							strPartNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					strCategory IN (
						SELECT tblInvCat.strCategory
						FROM tblInvCat
						LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
						WHERE ISNULL((
									SELECT COUNT(tblInvCatSec.strCategory)
									FROM tblInvCatSec
									WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblInvCatSec.strCategory)
										FROM tblInvCatSec
										WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
										), 0) > 0
								AND tblInvCatSec.strUserName = @UserName
								)
						)
					)
			ORDER BY CASE 
					WHEN @IsSortDescription = 0
						THEN strPartNumber
					END
				,CASE 
					WHEN @IsSortDescription = 1
						THEN strDesc
					END
		END
		ELSE
		BEGIN
			SELECT strPartNumber AS 'Code'
				,strDesc AS 'Description'
				,intType AS 'Type'
			FROM tblInv
			WHERE (intType <> 5)
				AND (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 0
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 0
						AND (
							strPartNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY CASE 
					WHEN @IsSortDescription = 0
						THEN strPartNumber
					END
				,CASE 
					WHEN @IsSortDescription = 1
						THEN strDesc
					END
		END
	END
END
GO

/****** Object:  StoredProcedure [dbo].[LoadJobs]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE  PROCEDURE [dbo].[LoadJobs]
(
	@IsCheckedSearch bit,
	@SearchText nvarchar(max)
)
AS
BEGIN
	IF(@IsCheckedSearch = 1)
	BEGIN
		IF(@SearchText <> '')
		BEGIN
			SELECT 
				p.ProcessDocID AS ProcessDocID,
				p.ServiceableItemCode AS ServiceableItemCode,
				s.ServiceableItemDescription AS ServiceableItemDescription,
				p.JobStatusType AS JobStatus
			FROM 
				tblWSProcessDoc p,
				tblWSServiceableItem s
			WHERE 
				p.ServiceableItemCode = s.ServiceableItemCode
				AND (p.ProcessDocID LIKE @SearchText OR s.ServiceableItemCode LIKE @SearchText OR s.ServiceableItemDescription LIKE @SearchText)
				AND p.DocType = 2 -- 2 for Process Job ID
			ORDER BY
				p.ProcessDocID
		END
	END
	ELSE
	BEGIN
		SELECT 
			p.ProcessDocID,
			p.ServiceableItemCode,
			s.ServiceableItemDescription,
			p.JobStatusType AS JobStatus
		FROM 
			tblWSProcessDoc p,
			tblWSServiceableItem s
		WHERE 
			p.ServiceableItemCode = s.ServiceableItemCode
			AND p.DocType = 2 -- 2 for Process Job ID
		ORDER BY
			p.ProcessDocID
	END
END
GO
/****** Object:  StoredProcedure [dbo].[LoadJobTempleteList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[LoadJobTempleteList]
(
	@IsCheckedSearch bit,
	@SearchText nvarchar(max),
	@IsInactive bit
)
AS
BEGIN
	IF(@IsCheckedSearch = 1)
	BEGIN
		IF(@SearchText <> '')
		BEGIN
			IF(@IsInactive = 1)
			BEGIN
				SELECT 
					JobTemplateID,
					JobTemplateCode, 
					JobTemplateDescription 
				FROM 
					tblWSJobTemplate 
				WHERE 
					(JobTemplateCode LIKE @SearchText OR JobTemplateDescription LIKE @SearchText)
				Order By 
					JobTemplateCode
			END
			ELSE
			BEGIN
				SELECT 
					JobTemplateID,
					JobTemplateCode, 
					JobTemplateDescription 
				FROM 
					tblWSJobTemplate 
				WHERE 
					IsInactive = 0 AND 
					(JobTemplateCode LIKE @SearchText OR JobTemplateDescription LIKE @SearchText)
				Order By 
					JobTemplateCode
			END
		END
	END
	ELSE
	BEGIN
		IF(@IsInactive = 1)
		BEGIN
			SELECT 
			    JobTemplateID,
				JobTemplateCode, 
				JobTemplateDescription 
			FROM 
				tblWSJobTemplate 
			Order By 
				JobTemplateCode
		END
		ELSE
		BEGIN
			SELECT 
				JobTemplateID,
				JobTemplateCode, 
				JobTemplateDescription 
			FROM 
				tblWSJobTemplate  
			WHERE 
				IsInactive = 0
			Order By 
				JobTemplateCode
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[LoadSelectedProcessJobNumberData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[LoadSelectedProcessJobNumberData]
(
	@DocNumber nvarchar(30)
)
AS
BEGIN
	select 
	   tblWSProcessDocDT.[LineNo],
	   tblWSProcessDocDT.ProcessDocDTID,
       tblWSProcessDocDT.PartNumber,
       tblInv.strDesc as PartDesc,
       tblWSProcessDocDT.Location,
	   tblWSProcessDocDT.QuotedQty,
       tblWSProcessDocDT.JobQty,
       ISNULL(SUM(tblWSWIPCompDT.PostQty),0) - ISNULL(SUM(tblWSWIPCompDT.ReturnQty),0) AS PostedQty,
	   CONVERT(MONEY,0) as ReturnQty,
	   CONVERT(MONEY,0) as PostQty,
       --tblWSProcessDocDT.ManAmount,
       ISNULL(SUM(tblWSWIPCompDT.PostAmount),0) AS PostAmount,
       tblInv.bitInvSerialType as IsSerailType,
       tblInv.strStockUnit as Unit,
       ISNULL(tblInvSerialTypes.bitMethod,0) as IsMethod,
       ISNULL(tblInvSerialTypes.bitDimensionExist,0) as IsDimensionExist,
	   CONVERT(INT, tblWSProcessDocDT.ItemType) as ItemType,
	   tblInv.decLastPPUnit AS LastReceivedCost,  --on 17042018
	   tblWSProcessDocDT.BuyoutCost --on 18042018
from tblWSProcessDocDT
INNER JOIN tblInv ON tblWSPRocessDocDT.PartNumber = tblInv.strPartNumber
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
INNER JOIN tblWSWIP ON tblWSProcessDocDT.ProcessDocID = tblWSWIP.JBDocID  
INNER JOIN tblWSWIPCompDT ON tblWSWIP.WIPDocID = tblWSWIPCompDT.WIPDocID AND tblWSPRocessDocDT.[LineNo] = tblWSWIPCompDT.[LineNo]
WHERE tblWSProcessDocDT.ProcessDocID = @DocNumber
GROUP BY tblWSProcessDocDT.[LineNo],
         tblWSProcessDocDT.PartNumber,
         tblInv.strDesc,
         tblWSProcessDocDT.Location,
		 tblWSProcessDocDT.QuotedQty,
         tblWSProcessDocDT.JobQty,
         tblInv.bitInvSerialType,
         tblInv.strStockUnit,
         tblInvSerialTypes.bitMethod,
         tblInvSerialTypes.bitDimensionExist,
		 tblWSProcessDocDT.ItemType,
		 tblWSProcessDocDT.ProcessDocDTID,
		 tblInv.decLastPPUnit, --on 17042018
		 tblWSProcessDocDT.BuyoutCost --on 18042018
ORDER BY tblWSProcessDocDT.[LineNo]
END
GO
/****** Object:  StoredProcedure [dbo].[LoadServiceableItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetJobTemplateListReportData] ***********/

/*********** Start [LoadServiceableItems] ***********/
CREATE PROCEDURE [dbo].[LoadServiceableItems] (
	@IsCheckedSearch BIT
	,@SearchText NVARCHAR(max)
	,@IsInactive BIT
	)
AS
BEGIN
	IF (@IsCheckedSearch = 1)
	BEGIN
		IF (@SearchText <> '')
		BEGIN
			IF (@IsInactive = 1)
			BEGIN
				SELECT ServiceableItemName
					,ServiceableItemDescription
					,ServiceableItemCode
				FROM tblWSServiceableItem
				WHERE (
						ServiceableItemName LIKE @SearchText
						OR ServiceableItemDescription LIKE @SearchText
						)
				ORDER BY ServiceableItemName
			END
			ELSE
			BEGIN
				SELECT ServiceableItemName
					,ServiceableItemDescription
					,ServiceableItemCode
				FROM tblWSServiceableItem
				WHERE IsInactive = 0
					AND (
						ServiceableItemName LIKE @SearchText
						OR ServiceableItemDescription LIKE @SearchText
						)
				ORDER BY ServiceableItemName
			END
		END
	END
	ELSE
	BEGIN
		IF (@IsInactive = 1)
		BEGIN
			SELECT ServiceableItemName
				,ServiceableItemDescription
				,ServiceableItemCode
			FROM tblWSServiceableItem
			ORDER BY ServiceableItemName
		END
		ELSE
		BEGIN
			SELECT ServiceableItemName
				,ServiceableItemDescription
				,ServiceableItemCode
			FROM tblWSServiceableItem
			WHERE IsInactive = 0
			ORDER BY ServiceableItemName
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[LoadServiceableItemTypeList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [LoadJobTempleteList] ***********/

/*********** Start [LoadServiceableItemTypeList] ***********/
CREATE PROCEDURE [dbo].[LoadServiceableItemTypeList]
(
	@IsCheckedSearch bit,
	@SearchText nvarchar(max),
	@IsInactive bit
)
AS
BEGIN
	IF(@IsCheckedSearch = 1)
	BEGIN
		IF(@SearchText <> '')
		BEGIN
			IF(@IsInactive = 1)
			BEGIN
				SELECT 
					ServiceableItemTypeId
				   ,ServiceableItemTypeCode
				   ,ServiceableItemTypeDescription
				FROM 
					tblWSServiceableItemType 
				WHERE 
					(ServiceableItemTypeCode LIKE @SearchText OR ServiceableItemTypeDescription LIKE @SearchText)
				Order By 
					ServiceableItemTypeCode
			END
			ELSE
			BEGIN
				SELECT 
					ServiceableItemTypeId
				   ,ServiceableItemTypeCode
				   ,ServiceableItemTypeDescription
				FROM 
					tblWSServiceableItemType 
				WHERE 
					IsInactive = 0 AND 
					(ServiceableItemTypeCode LIKE @SearchText OR ServiceableItemTypeDescription LIKE @SearchText)
				Order By 
					ServiceableItemTypeCode
			END
		END
	END
	ELSE
	BEGIN
		IF(@IsInactive = 1)
		BEGIN
			SELECT 
					ServiceableItemTypeId
				   ,ServiceableItemTypeCode
				   ,ServiceableItemTypeDescription
				FROM 
					tblWSServiceableItemType 
			Order By 
				ServiceableItemTypeCode
		END
		ELSE
		BEGIN
			SELECT 
			        ServiceableItemTypeId
				   ,ServiceableItemTypeCode
				   ,ServiceableItemTypeDescription
				FROM 
					tblWSServiceableItemType   
			WHERE 
				IsInactive = 0
			Order By 
				ServiceableItemTypeCode
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[LoadShipment]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[LoadShipment] 
(
	@DocumentID NVARCHAR(100)  
)
AS  
BEGIN  
 SELECT [strShpDocID] AS DocumentID  
      ,[dteSystemDate] AS SystemDate  
      ,[dteJournalDate] AS JournalDate  
      ,[dteRequired] AS [Required]  
      ,[strUserName] AS UserName   
      ,[strCustName] AS CustomerName  
      ,[strSoldTo] AS SoldTo   
      ,[strShipTo] AS ShipTo  
      ,[strReference] AS Reference   
      ,[bitHistoryTrans] AS IsHistoryTrans   
      ,[strNotes] AS Notes  
      ,[strTrackingNo] AS TrackingNo   
      ,[strWayBillNo] AS WayBillNo  
      ,[bitPrinted] AS IsPrinted   
      ,[bitEmailed] AS IsEmailed   
      ,[decTotalValue] AS TotalValue   
      ,[decVolW] AS Width   
      ,[decVolH] AS Height  
      ,[decVolD] AS Depth   
      ,[decCuVol] AS CubeVolume   
      ,[decWeight] AS Weight   
      ,[strType] AS Type   
      ,[bitCustMultiple] AS IsCustomerMultiple   
      ,tblShipments.[strDelRouteCode] AS DeliveryRouteCode  
      ,tblShipments.[strDelVehicleCode] AS DeliveryVehicleCode   
      ,tblShipments.[strDelDriverCode] AS DeliveryDriverCode  
      ,[decVolumetricWeight] AS VolumetricWeight  
      ,[decFactor] AS Factor   
      ,[strUnitOfMeasure] AS UnitOfMeasure  
   ,tblDeliveryRoutes.strDelRouteDesc AS DeliveryRouteDesc  
   ,tblDeliveryVehicles.strDelVehicleDesc AS DeliveryVehicleDesc  
   ,tblDeliveryDrivers.strDelDriverDesc AS DeliveryDriverDesc  
   ,[strTransportType] AS TransportType  
 FROM tblShipments   
 LEFT OUTER JOIN tblDeliveryRoutes ON tblShipments.strDelRouteCode = tblDeliveryRoutes.strDelRouteCode   
 LEFT OUTER JOIN tblDeliveryVehicles ON tblShipments.strDelVehicleCode = tblDeliveryVehicles.strDelVehicleCode   
 LEFT OUTER JOIN tblDeliveryDrivers ON tblShipments.strDelDriverCode = tblDeliveryDrivers.strDelDriverCode   
 WHERE tblShipments.strShpDocID = @DocumentID  
END
GO
/****** Object:  StoredProcedure [dbo].[LoadTechnicians]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [LoadCustomers] ***********/

/*********** Start [LoadTechnicians] ***********/
CREATE PROCEDURE [dbo].[LoadTechnicians]
(
	@IsCheckedSearch bit,
	@SearchText nvarchar(max),
	@IsInactive bit
)
AS
BEGIN
	IF(@IsCheckedSearch = 1)
	BEGIN
		IF(@SearchText <> '')
		BEGIN
			IF(@IsInactive = 1)
			BEGIN
				SELECT 
				    strSalesName AS SalesName
				   ,decYTDSales AS YTDSales
				FROM 
					tblSalesPersons 
				WHERE 
					(strSalesName LIKE @SearchText)
					ANd bitIsWorkshopTechnician = 1
				Order By 
					strSalesName
			END
			ELSE
			BEGIN
				SELECT 
				    strSalesName AS SalesName
				   ,decYTDSales AS YTDSales
				FROM 
					tblSalesPersons 
				WHERE 
					bitInactive = 0 AND 
					(strSalesName LIKE @SearchText )
					ANd bitIsWorkshopTechnician = 1
				Order By 
					strSalesName
			END
		END
	END
	ELSE
	BEGIN
		IF(@IsInactive = 1)
		BEGIN
			SELECT 
				    strSalesName AS SalesName
				   ,decYTDSales AS YTDSales
			FROM 
					tblSalesPersons  
			WHERE
				 bitIsWorkshopTechnician = 1
			Order By 
				strSalesName
		END
		ELSE
		BEGIN
			SELECT 
				    strSalesName AS SalesName
				   ,decYTDSales AS YTDSales
			FROM 
					tblSalesPersons   
			WHERE 
				bitInactive = 0
				AND bitIsWorkshopTechnician = 1
			Order By 
				strSalesName
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[LoadWSWIP]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [SPMainFest] *****************************/ 

/*****************Start  [LoadWSWIP] *****************************/

CREATE PROCEDURE [dbo].[LoadWSWIP]
	@DocNumber  AS NVARCHAR(50)
AS
BEGIN
	select 
		tblWSProcessDoc.OwnerCode,
		tblWSWIP.WIPDocID,
		tblWSWIP.JBDocID,
		tblWSWIP.JournalDate,
		tblWSWIP.JourID
	from tblWSWIP
	INNER JOIN tblWSProcessDoc on tblWSProcessDoc.ProcessDocID = tblWSWIP.JBDocID
	where tblWSWIP.WIPDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[LotNumberAllow]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInventoryLotExtForLotNumberAllow] ***********/

/*********** Start [LotNumberAllow] ***********/
CREATE PROCEDURE [dbo].[LotNumberAllow]
(
    @PONumber AS NVARCHAR(50),
	@PartNumber AS NVARCHAR(50),
	@LotNumber AS NVARCHAR(50)
)
AS
BEGIN
	--DECLARE @SerialNumberCount AS INT

	--SELECT @SerialNumberCount = COUNT(strSerialNumber) FROM tblOrderDocPDTSerial WHERE strOrdPDocID = @PONumber

	--IF @SerialNumberCount > 0 
	--BEGIN
		SELECT 
			COUNT(strSerialNumber) 
		FROM tblOrderDocPDTSerial 
		INNER JOIN tblOrderDocPDT ON tblOrderDocPDTSerial.strOrdPDocID = tblOrderDocPDT.strOrdPDocID AND tblOrderDocPDTSerial.intLineNo = tblOrderDocPDT.intLineNo
		WHERE 
			tblOrderDocPDTSerial.strOrdPDocID = @PONumber AND 
			tblOrderDocPDT.strPartNumber = @PartNumber AND 
			tblOrderDocPDTSerial.strSerialNumber = @LotNumber
	--END
END
GO
/****** Object:  StoredProcedure [dbo].[ManCloseJobBin_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InvoiceDocPDTBin_List] ***********/

/*********** Start [ManCloseJobBin_List] ***********/
CREATE PROCEDURE [dbo].[ManCloseJobBin_List]
(
	-- Add the parameters for the stored procedure here
	@InvDocId nvarchar(50)
)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	SELECT	MAX(lngID) AS 'Id',
			strInvDocID AS 'DocId',
		intLineNo AS 'LineNo',		
			lngBinID AS 'BinId',
			SUM(decQty) AS 'Qty',
			ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblManJobCloseBin.lngBinId),'') AS 'BinCode'
	FROM tblManJobCloseBin
	WHERE strInvDocId IN (SELECT VALUE FROM dbo.fnSplitStringAsTable(@InvDocId,','))
	GROUP BY strInvDocID,
			 intLineNo,
			 lngBinID
 
END
GO
/****** Object:  StoredProcedure [dbo].[ManCloseJobBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [RptGetBinItemsForSetup] ***********/

/*********** Start [ManCloseJobBin_Save] ***********/
CREATE PROCEDURE [dbo].[ManCloseJobBin_Save]
(
	@InvDocDTBinTable InvDocDTBinTableType READONLY
	--@SQlngId BIGINT
	--,@SQstrOrdPGDocID NVARCHAR(50)
	--,@SQintLineNo INT
	--,@SQlngBinId BIGINT
	--,@SQdecQty MONEY
)
AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @NumberofIntType INT,
            @RowCount INT

	-- get the number of items
    SET @NumberofIntType = (SELECT  count(*)
                            FROM @InvDocDTBinTable)

	SET @RowCount = 0           -- set the first row to 0

	--Create Table Variable
	DECLARE @InvDocDTTemp TABLE (
		RowNumber INT IDENTITY(0,1),
		Id BIGINT,
		DocId NVARCHAR(50),		
		[LineNo] INT,
		BinId BIGINT,
		Qty MONEY,
		PickingBin BIT
	)

	INSERT INTO @InvDocDTTemp
		SELECT * FROM @InvDocDTBinTable;

	-- loop through the records 
    -- loop until the rowcount = number of records in your table
    WHILE @RowCount <= @NumberofIntType
        BEGIN
            -- do your process here
			DECLARE @Id BIGINT
			DECLARE @DocID NVARCHAR(50)
			DECLARE @LineNo INT
			DECLARE @BinId BIGINT
			DECLARE @Qty MONEY
			SELECT 
				@Id = [Id],
				@DocID = [DocId],
				@LineNo = [LineNo],
				@BinId = [BinId],
				@Qty = [Qty]
			FROM 
				@InvDocDTTemp 
			WHERE 
				RowNumber = @RowCount

			--VB SP START
			IF NOT EXISTS (SELECT lngId FROM tblManJobCloseBin WHERE lngId = @Id)
				BEGIN
						INSERT INTO tblManJobCloseBin
									   (strInvDocID
									   ,intLineNo
									   ,lngBinId
									   ,decQty)
						VALUES
									   (@DocID
									   ,@LineNo
									   ,@BinId
									   ,@Qty
									   )
				END
			ELSE
				BEGIN
						UPDATE tblManJobCloseBin
						SET strInvDocID = @DocID
							,intLineNo = @LineNo
							,lngBinId = @BinId
							,decQty = @Qty
						WHERE lngId = @Id
				END
			--VB SP END

            SET @RowCount = @RowCount + 1
        END
END
GO
/****** Object:  StoredProcedure [dbo].[ManWIPBin_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [ManCloseJobBin_List] ***********/

/*********** Start [ManWIPBin_List] ***********/
CREATE PROCEDURE [dbo].[ManWIPBin_List]
(
	-- Add the parameters for the stored procedure here
	@SQstrInvDocId nvarchar(50)
)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
 
    -- Insert statements for procedure here
	SELECT
			MIN(tblManWIPCompInvBin.lngID) AS 'Id',
			MIN(tblManWIPCompInvBin.strWIPDocID) AS 'DocId',
			tblManWIPCompInvBin.intLineNo AS 'LineNo',
			tblManWIPCompInvBin.lngBinID AS 'BinId',
			SUM(CASE WHEN tblManWIPCompInv.decReturnQty > 0 THEN tblManWIPCompInvBin.decQty * -1 ELSE tblManWIPCompInvBin.decQty END) AS 'Qty',
			ISNULL(tblInvLocBin.strBinCode, '') AS 'BinCode'
	FROM tblManWIPCompInvBin 
	INNER JOIN tblManWIPCompInv ON tblManWIPCompInvBin.strWIPDocID = tblManWIPCompInv.strWIPDocID AND tblManWIPCompInvBin.intLineNo = tblManWIPCompInv.intLineNo
	INNER JOIN tblManWIP ON tblManWIPCompInv.strWIPDocID = tblManWIP.strWIPDocID
	LEFT JOIN tblInvLocBin ON tblManWIPCompInvBin.lngBinId = tblInvLocBin.lngId
	WHERE 	strJBDocID IN (SELECT VALUE FROM dbo.fnSplitStringAsTable(@SQstrInvDocId,','))
	GROUP BY tblManWIPCompInvBin.intLineNo,
			 tblManWIPCompInvBin.lngBinID,
			 tblInvLocBin.strBinCode
 
END
GO
/****** Object:  StoredProcedure [dbo].[ManWIPCompInvBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [ManCloseJobBin_Save] ***********/

/*********** Start [ManWIPCompInvBin_Save] ***********/
CREATE PROCEDURE [dbo].[ManWIPCompInvBin_Save]
(   
	-- Add the parameters for the stored procedure here   
	@InvDocDTBinTable InvDocDTBinTableType READONLY
)
AS  
BEGIN   
-- SET NOCOUNT ON added to prevent extra result sets from   -- interfering with SELECT statements.   
SET NOCOUNT ON;        

			INSERT INTO [dbo].[tblManWIPCompInvBin]         
				([strWIPDocID] ,[intLineNo] ,[lngBinId] ,[decQty] )      
			SELECT
				[DocId],
				[LineNo],
				[BinId],
				[Qty]
				FROM 
			@InvDocDTBinTable;    
END
GO
/****** Object:  StoredProcedure [dbo].[Mobile_spBiSalesAnalysis]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[Mobile_spBiSalesAnalysis]    Script Date: 06-01-2020 08:25:00 AM ******/
CREATE PROCEDURE [dbo].[Mobile_spBiSalesAnalysis]   
(  
@strDateFilter VARCHAR(100)=NULL,  
@dateFromDate DateTime=NULL,  
@dateToDate DateTime=NULL,  
@strDateFilterCriteria VARCHAR(100)=NULL,
@PageNumber int,  
@PageSize int  
)  
AS  
BEGIN  
  WITH Paged AS  
(  
SELECT tblInvoiceDoc.strInvDocID AS [Document #]  
 ,tblInvoiceDoc.strReference AS Reference  
 ,tblInvoiceDoc.strUserName AS Agent  
 ,tblInvoiceDoc.strSalesName AS [Sales Rep]  
 ,tblInvoiceDoc.dteJournalDate AS [Transaction Date]  
 ,tblInvoiceDoc.dteRequired AS [Required Date]  
 ,DATENAME(YEAR, tblInvoiceDoc.dteJournalDate) AS Year  
 ,RIGHT('00' + CAST(MONTH(tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, tblInvoiceDoc.dteJournalDate) AS Month  
 ,REPLICATE('0',2-LEN(DATENAME(DAY, tblInvoiceDoc.dteJournalDate))) + DATENAME(DAY, tblInvoiceDoc.dteJournalDate) AS Day  
 ,DATENAME(WEEK, tblInvoiceDoc.dteJournalDate) AS Week  
 ,DATENAME(QUARTER, tblInvoiceDoc.dteJournalDate) AS Quarter  
 ,tblInvoiceDoc.strCustName AS [Customer Code]  
 ,tblCustomers.strCustDesc AS [Customer Name]  
 ,tblCustomers.strCustCategory AS [Customer Category]  
 ,tblInvoiceDocDT.strPartNumber AS [Item Code]  
 ,tblInvoiceDocDT.strPartDesc AS [Item Description]  
 ,tblInv.strDesc AS [Item Description (Masterfile)]  
 ,tblInvoiceDocDT.strLocation AS [Item Location]  
 ,tblInv.strCategory AS [Item Category]  
 ,tblInvExt.strAcctSet AS [Item Account Set]  
 ,tblInvoiceDocDT.decQty AS Qty  
 ,tblInvoiceDocDT.decLineTotExc AS Revenue  
 ,tblInvoiceDocDT.decCOGS AS Cost  
 ,tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS AS Profit  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS nVarchar(25)) + '%' AS [GP Margin]  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS nVarchar(25)) AS [Margin Percentage]  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100),2) AS nVarchar(25)) + '%' AS [GP Markup]  
 ,ISNULL(tblInv.bitItemNumConvUsed, 0) AS [Using Item # Convention]  
 ,ISNULL(tblInv.strItemSegment1, N'') AS [Item Segment 1]  
 ,ISNULL(tblInv.strItemSegment2, N'') AS [Item Segment 2]  
 ,ISNULL(tblInv.strItemSegment3, N'') AS [Item Segment 3]  
 ,ISNULL(tblInv.strItemSegment4, N'') AS [Item Segment 4]  
 ,ISNULL(tblInv.strInvNumConv, N'') AS [Number Convention]  
 ,CASE WHEN tblInvoiceDocDT.decQty = 0 THEN 0 ELSE tblInvoiceDocDT.decCOGS / tblInvoiceDocDT.decQty END AS [Unit Cost]  
 ,ISNULL(tblInvoiceDocDT.decStandardCost, 0) AS [Standard Cost]  
 ,ISNULL(tblInvoiceDocDT.decLastPPUnit, 0) AS [Last Received Cost]  
 ,tblInvoiceDoc.strCurrency AS [Currency Code]  
 ,tblInvoiceDoc.decExchange AS [Exchange Rate]  
 ,CASE WHEN (tblInvoiceDoc.bitIsForeign <> 0) THEN tblInvoiceDocDT.decLineTotExc / tblInvoiceDoc.decExchange ELSE 0 END AS [Revenue FC]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS [Is Foreign Trans]  
 ,REPLACE(REPLACE(ISNULL(tblInvoiceDoc.strShipTo,''), CHAR(13), ' '), CHAR(10), '') AS [Ship To]  
 ,tblInvoiceDoc.strAddInfo AS [Additional Info]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decSubTotalF + tblInvoiceDoc.decDiscAmtF END AS [Document Subtotal]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decDiscAmtF END AS [Document Discount]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decVAT ELSE tblInvoiceDoc.decVATF END AS [Document Tax]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS [Document Total]  
 ,tblInvoiceDoc.intDept AS Department  
 ,tblInv.decMass AS [Dimension Mass]  
    ,tblInv.decVolumetricWeight AS [Dimension Volumetric Weight]  
 ,tblInv.strUnitOfMeasure AS [Dimension UOM]  
 ,tblInv.decW AS [Dimension Width]  
 ,tblInv.decH AS [Dimension Height]   
    ,tblInv.decD AS [Dimension Depth]  
 ,tblInv.decCube AS [Dimension Cube]  
 ,tblInv.decFactor AS [Dimension Factor]  
 ,tblInvoiceDocDT.decLineTaxAmt AS [Line Tax Amount]  
 ,tblInvoiceDocDT.decLineTotExc + tblInvoiceDocDT.decLineTaxAmt AS [Line Total Incl]  
 ,tblInvoiceDocDT.decPriceEaExc AS [Unit Price Excl]   
 ,tblInvoiceDocDT.decPriceEaInc AS [Unit Price Incl]   
 ,tblInvoiceDocDT.decLineDiscPerc AS [Line Disc Perc]   
 ,tblInvoiceDocDT.decLineDiscAmt AS [Line Disc Amount]  
 ,tblInvoiceDocDT.decLineDiscAmtF AS [Line Disc Amount Foreign]  
 ,tblInvoiceDocDT.decLineTotExc AS [Line Total Excl]  
 ,tblInvoiceDocDT.decPriceEaExcF as [Unit Price Foreign]  
 ,tblInvoiceDocDT.decLineTotExcF [Line Total Foreign]  
 ,tblInvoiceDocDT.decTotIncTaxF as [Line Tax Amount Foreign]  
 ,tblInv.strSubCategory as [Item SubCategory]  
 ,tblInvCat.strDesc as [Category Description]  
 ,tblInvSubCat.strDesc as [SubCategory Description]  
 ,tblInv.strSubCategoryGroup as [Item SubCategory Group] 
 ,tblInvGroupSubCat.strDesc as [Item SubCategory Group Description]   
 , ROW_NUMBER() OVER(ORDER BY tblInvoiceDoc.strInvDocID) AS RowNumber
 ,COUNT(*) OVER() AS TotalCount
FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory And tblInvSubCat.strParentCategory = tblInv.strCategory 
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup And tblInvGroupSubCat.strParentSubCategory=tblInv.strSubCategory And tblInvGroupSubCat.strParentCategory = tblInv.strCategory
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL   
  when @strDateFilter='Transaction Date' and @strDateFilterCriteria !='All' then  cast(tblInvoiceDoc.dteJournalDate as date)   
  when @strDateFilter='Required Date' and @strDateFilterCriteria !='All' then cast(tblInvoiceDoc.dteRequired as date)  
     else CAST(@dateFromDate as date) end     
  between  
   cast(@dateFromDate as date) and   
   cast( @dateToDate as date))  
   )  
 SELECT   
  *  
FROM   
    Paged  
WHERE   
    RowNumber BETWEEN (@PageNumber - 1) * @PageSize + 1 AND @PageNumber * @PageSize  
END
GO
/****** Object:  StoredProcedure [dbo].[Mobile_UserDataByUserName]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[Mobile_UserDataByUserName]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[Mobile_UserDataByUserName] (@UserName VARCHAR(50), 											 
                                                    @Version  INT = 0)                                                  
AS                                                                                                                     
BEGIN                                                                                                                  
 	                                                                                                                     
DECLARE @Query NVARCHAR(MAX) = ''                                                                                      
DECLARE @IsMobileUser int = 0                                                                                          
IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tblUsers' AND column_name = 'blnIsMobileUser')  
 	 BEGIN			                                                                                                     
 		SET @IsMobileUser = 1                                                                                            
 	 END                                                                                                                 
                                                                                                                        
     IF( @Version = 0 )                                                                                                 
       BEGIN                                                                                                            
         IF( @IsMobileUser = 1 )                                                                                        
			BEGIN                                                                                                        
			   SET @Query = 'SELECT tblusers.strusername AS UserName,                                                    
					  strname              AS Name,                                                                      
					  strcellnumber        AS CellNumber,                                                                
					  stremail             AS Email,                                                                     
					  strpassword          AS Password,                                                                  
					  blnisadmin           AS IsAdmin,                                                                   
					  blnislockedout       AS IsLockedOut,                                                               
					  dtelastlogin         AS LastLogin,                                                                 
 					  blnIsMobileUser	   AS IsMobileUser                                                               
			   FROM   tblusers                                                                                           
					  LEFT OUTER JOIN tblusersdocs                                                                       
								   ON tblusers.strusername = tblusersdocs.strusername                                    
			   WHERE  tblusers.stremail = '''+@UserName+''''                                                             
	    	END                                                                                                          
 		  ELSE                                                                                                           
			BEGIN                                                                                                        
				SET @Query = 'SELECT tblusers.strusername AS UserName,                                                   
						strname              AS Name,                                                                    
						strcellnumber        AS CellNumber,                                                              
						stremail             AS Email,                                                                   
						strpassword          AS Password,                                                                
						blnisadmin           AS IsAdmin,                                                                 
						blnislockedout       AS IsLockedOut,                                                             
						dtelastlogin         AS LastLogin,                                                               
 						0					   AS IsMobileUser                                                           
				FROM   tblusers                                                                                          
					  LEFT OUTER JOIN tblusersdocs                                                                       
									   ON tblusers.strusername = tblusersdocs.strusername                                
				WHERE  tblusers.stremail = '''+@UserName+''''                                                            
			END                                                                                                          
                                                                                                                        
		  EXEC sp_executesql @Query                                                                                      
       END                                                                                                              
     ELSE                                                                                                               
       BEGIN                                                                                                            
           SELECT tblusers.strusername       AS 'UserName',                                                             
                  strname                    AS 'Name',                                                                 
                  strcellnumber              AS 'CellNumber',                                                           
                  stremail                   AS 'Email',                                                                
                  strpassword                AS 'Password',                                                             
                  blnisadmin                 AS 'IsAdmin',                                                              
                  blnislockedout             AS 'IsLockedOut',                                                          
                  dtelastlogin               AS 'LastLogin',                                                            
                  blnarorders                AS 'AROrders',                                                             
                  blnarordersremove          AS 'AROrdersRemove',                                                       
                  blnarsoadjallowed          AS 'ARSOAdjAllowed',                                                       
                  blnarcreditblockso         AS 'ARCreditBlockSO',                                                      
                  blnarchangecustonso        AS 'ARChangeCustOnSO',                                                     
                  blnarquotes                AS 'ARQuotes',                                                             
                  blnarchangecustonsq        AS 'ARChangeCustOnSQ',                                                     
                  blnarquotesremove          AS 'ARQuotesRemove',                                                       
                  blnarsqadjallowed          AS 'ARSQAdjAllowed',                                                       
                  blnardeliveryadvice        AS 'ARDeliveryAdvice',                                                     
                  blnardeliveryadviceremove  AS 'ARDeliveryAdviceRemove',                                               
                  blnardaadjustmentapproval  AS 'ARDeliveryAdviceAdjustApproval',                                       
                  blnwhstpick                AS 'WHStPick',                                                             
                  blnwhstpickremove          AS 'WHStPickRemove',                                                       
                  blnwhrec                   AS 'WHRec',                                                                
                  blnwhrecremove             AS 'WHRecRemove',                                                          
                  blnapgrvadjustmentapproval AS 'WHRecAdjust',                                                          
                  blnarqusys                 AS 'ARQuSys',                                                              
                  blnfhqcanapprove           AS 'FHQCanApprove',                                                        
                  blnfhqcreatepurchaseorder  AS 'FHQCreatePurchaseOrder',                                               
                  blnarqusysremove           AS 'ARQuSysRemove',                                                        
                  blnarfhqadjallowed         AS 'ARFHQAdjAllowed',                                                      
                  blninvtrans                AS 'InvTrans',                                                             
                  blndashar                  AS 'DashAR',                                                               
                  blninvbrowser              AS 'InvBrowser',                                                           
                  blninvcount                AS 'InvCount',                                                             
                  blnapreq                   AS 'APReq',                                                                
                  blnappradjallowed          AS 'APPRAdjAllowed',                                                       
                  blnapreqremove             AS 'APReqRemove',                                                          
 				 				                                                                                         
                  strinvnumber               AS 'InvNumber',                                                            
                  strsonumber                AS 'SONumber',                                                             
                  strquotenumber             AS 'QuoteNumber',                                                          
                  strpinumber                AS 'PINumber',                                                             
                  strponumber                AS 'PONumber',                                                             
                  strrcnumber                AS 'RCNumber',                                                             
                  strdpnumber                AS 'DPNumber',                                                             
                  strjenumber                AS 'JENumber',                                                             
                  strcnnumber                AS 'CNNumber',                                                             
                  strdnnumber                AS 'DNNumber',                                                             
                  strrqnumber                AS 'RQNumber',                                                             
                  strqusysnumber             AS 'QuSysNumber',                                                          
                  strgrvnumber               AS 'GRVNumber',                                                            
                  strtknumber                AS 'TKNumber',                                                             
                  strshnumber                AS 'SHNumber',                                                             
                  strmsnumber                AS 'MSNumber',                                                             
                  strcrnumber                AS 'CRNumber',                                                             
                  strrfqnumber               AS 'RFQNumber',                                                            
                  strpsnumber                AS 'PSNumber',                                                             
                  strdanumber                AS 'DANumber',                                                             
                  strwonumber                AS 'WONumber',                                                             
                  strjbnumber                AS 'JBNumber',                                                             
                  strwpnumber                AS 'WPNumber',                                                             
                  striwonumber               AS 'IWONumber',                                                            
                  strpynumber                AS 'PYNumber',                                                             
                  strcbnumber                AS 'CBNumber',                                                             
                  strpronumber               AS 'PRONumber',                                                            
                  strbmnumber                AS 'BMNumber' ,                                                            
 				 strLocName					AS 'LocName' ,                                                               
 				 strMobileUserToken         AS 'MobileUserToken' ,                                                       
 				 strSalesName				AS 'SalesName',                                                              
 				 blnTrackUser               AS 'TrackUser',                                                              
 				 blnMobPerformanceDashboard AS 'MobPerformanceDashboard'                                                 
           FROM   tblusers                                                                                              
                  LEFT JOIN tblusersdocs                                                                                
                         ON tblusers.strusername = tblusersdocs.strusername                                             
           WHERE  ( tblusers.strEmail = @UserName )                                                                     
 	  END                                                                                                                
END 
GO

/****** Object:  StoredProcedure [dbo].[NamingConvensionUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetAccountNamingConvensionData] ***********/

/*********** Start [NamingConvensionUpdate] ***********/
CREATE PROCEDURE [dbo].[NamingConvensionUpdate] 
(
	@NamingConvensionData AS NamingConvensionTableType READONLY
)
AS
BEGIN
	UPDATE a
	SET strCustomLabel = b.CustomLabel
	FROM tblAccountClass a
	INNER JOIN @NamingConvensionData b ON a.intAcctTypeID = (
			SELECT intAcctTypeID
			FROM tblAccountType
			WHERE strAcctType = b.AccountType
			)
		AND a.strDefaultLabel = b.DefalutLabel
END
GO
/****** Object:  StoredProcedure [dbo].[NavigateContainerByCustomer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------------'
CREATE PROCEDURE [dbo].[NavigateContainerByCustomer]
(
	@CustomerName NVARCHAR(100),
	@DocumentID NVARCHAR(100),
	@IsPrevious BIT
)
AS
BEGIN
	IF (@IsPrevious = 1)
		SELECT MAX(strCntDocID) FROM tblContainers WHERE strCustName = @CustomerName AND strCntDocID < @DocumentID AND bitHistoryTrans = 0
	ELSE
		SELECT MIN(strCntDocID) FROM tblContainers WHERE strCustName = @CustomerName AND strCntDocID > @DocumentID AND bitHistoryTrans = 0
END
GO
/****** Object:  StoredProcedure [dbo].[NavigateContainerByNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------'
CREATE PROCEDURE [dbo].[NavigateContainerByNumber] (
	@DocumentID NVARCHAR(100)
	,@IsPrevious BIT
	,@UserName NVARCHAR(40)
	,@IsBPToolsMode BIT
	)
AS
BEGIN
	IF (@IsPrevious = 1)
		SELECT MAX(strCntDocID)
		FROM tblContainers
		INNER JOIN tblCustomers ON tblContainers.strCustName = tblCustomers.strCustName
		WHERE strCntDocID < @DocumentID
			AND bitHistoryTrans = 0
			AND (
				@IsBPToolsMode = 1
				OR (
					tblCustomers.strCustCategory IN (
						SELECT tblCustomerCat.strCustCategory
						FROM tblCustomerCat
						LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
						WHERE ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) > 0
								AND tblCustomerCatSec.strUserName = @UserName
								)
						)
					)
				)
	ELSE
		SELECT MIN(strCntDocID)
		FROM tblContainers
		INNER JOIN tblCustomers ON tblContainers.strCustName = tblCustomers.strCustName
		WHERE strCntDocID > @DocumentID
			AND bitHistoryTrans = 0
			AND (
				@IsBPToolsMode = 1
				OR (
					tblCustomers.strCustCategory IN (
						SELECT tblCustomerCat.strCustCategory
						FROM tblCustomerCat
						LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
						WHERE ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) > 0
								AND tblCustomerCatSec.strUserName = @UserName
								)
						)
					)
				)
END
GO
/****** Object:  StoredProcedure [dbo].[NavigateContractByCustomer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetContractBillDTData] ***********/

/*********** Start [NavigateContractByCustomer] ***********/
CREATE PROCEDURE [dbo].[NavigateContractByCustomer]
(
	@IsARReturnIcon BIT,	
	@CustomerName NVARCHAR(100),
	@DocumentID NVARCHAR(100),
	@IsPrevious BIT
)
AS
	BEGIN
	IF(@IsPrevious=1)
		BEGIN		
				IF(@IsARReturnIcon =1)
					SELECT MAX(strContDocID) FROM tblContractBill WHERE strCustName = @CustomerName AND strContDocID < @DocumentID AND strContDocID NOT LIKE 'CN%' 
				ELSE
					SELECT MAX(strContDocID) FROM tblContractBill WHERE strCustName = @CustomerName AND strContDocID < @DocumentID 			
		END
	ELSE
		BEGIN			
				IF(@IsARReturnIcon =1)
					SELECT MIN(strContDocID) FROM tblContractBill WHERE strCustName = @CustomerName AND strContDocID > @DocumentID AND strContDocID NOT LIKE 'CN%'
				ELSE
					SELECT MIN(strContDocID) FROM tblContractBill WHERE strCustName = @CustomerName AND strContDocID > @DocumentID
		END
	END
GO
/****** Object:  StoredProcedure [dbo].[NavigateContractByNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [NavigateContractByCustomer] ***********/

/*********** Start [NavigateContractByNumber] ***********/
CREATE PROCEDURE [dbo].[NavigateContractByNumber]
(		
	@DocumentID NVARCHAR(100),
	@IsPrevious BIT
)
AS
BEGIN
	IF (@IsPrevious = 1)
		BEGIN		
				SELECT MAX(strContDocID) FROM tblContractBill WHERE strContDocID < @DocumentID
		END
	ELSE
		BEGIN		
				SELECT MIN(strContDocID) FROM tblContractBill WHERE strContDocID > @DocumentID
		END
END
GO
/****** Object:  StoredProcedure [dbo].[NavigateDeliveryByCustomer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [NavigateDeliveryByNumber] ***********/

/*********** Start [NavigateDeliveryByCustomer] ***********/
CREATE PROCEDURE [dbo].[NavigateDeliveryByCustomer]
    (
      @CustomerName NVARCHAR(100) ,
      @DocumentID NVARCHAR(100) ,
      @IsPrevious BIT
    )
AS
BEGIN
    IF ( @IsPrevious = 1 )
        BEGIN
            SELECT  MAX(strOrdDADocID)
            FROM    tblOrderDocDA
            WHERE   strCustName = @CustomerName
                    AND strOrdDADocID < @DocumentID
                    AND bitCleared = 0
        END
    ELSE
        BEGIN
            SELECT  MIN(strOrdDADocID)
            FROM    tblOrderDocDA
            WHERE   strCustName = @CustomerName
                    AND strOrdDADocID > @DocumentID
                    AND bitCleared = 0
        END
END

GO
/****** Object:  StoredProcedure [dbo].[NavigateDeliveryByNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [ReceiptsRecord] ***********/


/*********** Start [NavigateDeliveryByNumber] ***********/
CREATE PROCEDURE [dbo].[NavigateDeliveryByNumber] (
	@DocumentID NVARCHAR(100)
	,@IsPrevious BIT
	,@IsBPToolsMode BIT
	,@UserName AS NVARCHAR(100)
	)
AS
BEGIN
	IF (@IsPrevious = 1)
	BEGIN
		SELECT MAX(strOrdDADocID)
		FROM tblOrderDocDA
		INNER JOIN tblCustomers ON tblOrderDocDA.strCustName = tblCustomers.strCustName
		WHERE strOrdDADocID < @DocumentID
			AND bitCleared = 0
			AND (
				@IsBPToolsMode = 1
				OR (
					tblCustomers.strCustCategory IN (
						SELECT tblCustomerCat.strCustCategory
						FROM tblCustomerCat
						LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
						WHERE ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) > 0
								AND tblCustomerCatSec.strUserName = @UserName
								)
						)
					)
				)
	END
	ELSE
	BEGIN
		SELECT MIN(strOrdDADocID)
		FROM tblOrderDocDA
		INNER JOIN tblCustomers ON tblOrderDocDA.strCustName = tblCustomers.strCustName
		WHERE strOrdDADocID > @DocumentID
			AND bitCleared = 0
			AND (
				@IsBPToolsMode = 1
				OR (
					tblCustomers.strCustCategory IN (
						SELECT tblCustomerCat.strCustCategory
						FROM tblCustomerCat
						LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
						WHERE ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) > 0
								AND tblCustomerCatSec.strUserName = @UserName
								)
						)
					)
				)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[NavigateQuotesByNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateOrderQDocument] ***********/

/*********** Start [NavigateQuotesByNumber] ***********/
CREATE PROCEDURE [dbo].[NavigateQuotesByNumber] (
	@DocNumber AS VARCHAR(50)
	,@IsPrevious AS BIT
	,@IsBPToolsMode AS BIT
	,@UserName AS NVARCHAR(100)
	)
AS
BEGIN
	IF (@IsPrevious = 1)
		SELECT MAX(strOrdDocID)
		FROM tblOrderDocQ
		INNER JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName
		WHERE strOrdDocID < @DocNumber
			AND bitCleared = 0
			AND (
				@IsBPToolsMode = 0
				OR tblCustomers.strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
	ELSE
		SELECT MIN(strOrdDocID)
		FROM tblOrderDocQ
		INNER JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName
		WHERE strOrdDocID > @DocNumber
			AND bitCleared = 0
			AND (
				@IsBPToolsMode = 0
				OR tblCustomers.strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
END
GO
/****** Object:  StoredProcedure [dbo].[NavigateSalesByCustomer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [NavigateSalesByCustomer] ***********/
CREATE PROCEDURE [dbo].[NavigateSalesByCustomer]
(
	@IsARReturnIcon BIT,
	@TransactionType TINYINT,
	@CustomerName NVARCHAR(100),
	@DocumentID NVARCHAR(100),
	@IsPrevious BIT
)
AS
BEGIN
	IF (@IsPrevious = 1)
	BEGIN
		IF (@TransactionType = 0) --Invoice
			IF(@IsARReturnIcon = 1)
				SELECT MAX(strInvDocID) FROM tblInvoiceDoc WHERE strCustName = @CustomerName AND strInvDocID < @DocumentID AND strInvDocID NOT LIKE 'CN%' AND bitHistoryTrans = 0
			ELSE
				SELECT MAX(strInvDocID) FROM tblInvoiceDoc WHERE strCustName = @CustomerName AND strInvDocID < @DocumentID AND bitHistoryTrans = 0
		
		ELSE IF (@TransactionType = 4 ) --CreditNote
			SELECT MAX(strInvDocID) FROM tblInvoiceDoc WHERE strCustName = @CustomerName AND strInvDocID < @DocumentID AND bitHistoryTrans = 0 AND strInvDocID LIKE 'CN%'
		
		ELSE IF (@TransactionType = 1 ) --SalesOrder			
			SELECT MAX(strOrdDocID) FROM tblOrderDoc WHERE strCustName = @CustomerName AND strOrdDocID < @DocumentID AND intDocType = 1 and bitCleared = 0
		
		ELSE IF (@TransactionType = 2 ) --Quote
			SELECT MAX(strOrdDocID) FROM tblOrderDoc WHERE strCustName = @CustomerName AND strOrdDocID < @DocumentID AND intDocType = 2 and bitCleared = 0

		ELSE IF (@TransactionType = 3 ) --CreditRequest
			SELECT MAX(strOrdDocID) FROM tblOrderDoc WHERE strCustName = @CustomerName AND strOrdDocID < @DocumentID AND strOrdDocID LIKE 'CR%' AND intDocType = 1 and bitCleared = 0
					
	END
	ELSE
	BEGIN
		IF (@TransactionType = 0) --Invoice
			IF(@IsARReturnIcon = 1)
				SELECT MIN(strInvDocID) FROM tblInvoiceDoc WHERE strCustName = @CustomerName AND strInvDocID > @DocumentID AND strInvDocID NOT LIKE 'CN%' AND bitHistoryTrans = 0
			ELSE
				SELECT MIN(strInvDocID) FROM tblInvoiceDoc WHERE strCustName = @CustomerName AND strInvDocID > @DocumentID AND bitHistoryTrans = 0
		
		ELSE IF (@TransactionType = 4 ) --CreditNote
			SELECT MIN(strInvDocID) FROM tblInvoiceDoc WHERE strCustName = @CustomerName AND strInvDocID > @DocumentID AND bitHistoryTrans = 0 AND strInvDocID LIKE 'CN%'
		
		ELSE IF (@TransactionType = 1 ) --SalesOrder
			SELECT MIN(strOrdDocID) FROM tblOrderDoc WHERE strCustName = @CustomerName AND strOrdDocID > @DocumentID AND intDocType = 1 and bitCleared = 0

		ELSE IF (@TransactionType = 2 ) --Quote
			SELECT MIN(strOrdDocID) FROM tblOrderDoc WHERE strCustName = @CustomerName AND strOrdDocID > @DocumentID AND intDocType = 2 and bitCleared = 0

		ELSE IF (@TransactionType = 3 ) --CreditRequest
			SELECT MIN(strOrdDocID) FROM tblOrderDoc WHERE strCustName = @CustomerName AND strOrdDocID > @DocumentID AND strOrdDocID LIKE 'CR%' AND intDocType = 1 and bitCleared = 0
					
	END
END
GO
/****** Object:  StoredProcedure [dbo].[NavigateSalesByNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [NavigateSalesByCustomer] ***********/

/*********** Start [NavigateSalesByNumber] ***********/
CREATE PROCEDURE [dbo].[NavigateSalesByNumber] (
	@IsARReturnIcon BIT
	,@TransactionType TINYINT
	,@DocumentID NVARCHAR(100)
	,@IsPrevious BIT
	,@IsBPToolsMode BIT
	,@UserName AS NVARCHAR(100)
	)
AS
BEGIN
	IF (@IsPrevious = 1)
	BEGIN
		IF (@TransactionType = 0) --Invoice
			IF (@IsARReturnIcon = 1)
				SELECT MAX(strInvDocID)
				FROM tblInvoiceDoc
				INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
				WHERE strInvDocID < @DocumentID
					AND strInvDocID NOT LIKE 'CN%'
					AND bitHistoryTrans = 0
					AND (
						@IsBPToolsMode = 1
						OR (
							tblCustomers.strCustCategory IN (
								SELECT tblCustomerCat.strCustCategory
								FROM tblCustomerCat
								LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
								WHERE ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) > 0
										AND tblCustomerCatSec.strUserName = @UserName
										)
								)
							)
						)
			ELSE
				SELECT MAX(strInvDocID)
				FROM tblInvoiceDoc
				INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
				WHERE strInvDocID < @DocumentID
					AND bitHistoryTrans = 0
					AND (
						@IsBPToolsMode = 1
						OR (
							tblCustomers.strCustCategory IN (
								SELECT tblCustomerCat.strCustCategory
								FROM tblCustomerCat
								LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
								WHERE ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) > 0
										AND tblCustomerCatSec.strUserName = @UserName
										)
								)
							)
						)
		ELSE IF (@TransactionType = 4) --CreditNote
			SELECT MAX(strInvDocID)
			FROM tblInvoiceDoc
			INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
			WHERE strInvDocID < @DocumentID
				AND bitHistoryTrans = 0
				AND strInvDocID LIKE 'CN%'
				AND (
					@IsBPToolsMode = 1
					OR (
						tblCustomers.strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
					)
		ELSE IF (@TransactionType = 1) --SalesOrder
			SELECT MAX(strOrdDocID)
			FROM tblOrderDoc
			INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
			WHERE strOrdDocID < @DocumentID
				AND intDocType = 1
				AND bitCleared = 0
				AND (
					@IsBPToolsMode = 1
					OR (
						tblCustomers.strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
					)
		ELSE IF (@TransactionType = 9) --Sales Layby
			SELECT MAX(strOrdDocID)
			FROM tblOrderDoc
			INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
			WHERE strOrdDocID < @DocumentID
				AND intDocType = 3
				AND bitCleared = 0
				AND (
					@IsBPToolsMode = 1
					OR (
						tblCustomers.strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
					)
		ELSE IF (@TransactionType = 2) --Quote
			SELECT MAX(strOrdDocID)
			FROM tblOrderDoc
			INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
			WHERE strOrdDocID < @DocumentID
				AND intDocType = 2
				AND bitCleared = 0
				AND (
					@IsBPToolsMode = 1
					OR (
						tblCustomers.strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
					)
		ELSE IF (@TransactionType = 3) --CreditRequest
			SELECT MAX(strOrdDocID)
			FROM tblOrderDoc
			INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
			WHERE strOrdDocID < @DocumentID
				AND strOrdDocID LIKE 'CR%'
				AND intDocType = 1
				AND bitCleared = 0
				AND (
					@IsBPToolsMode = 1
					OR (
						tblCustomers.strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
					)
	END
	ELSE
	BEGIN
		IF (@TransactionType = 0) --Invoice
			IF (@IsARReturnIcon = 1)
				SELECT MIN(strInvDocID)
				FROM tblInvoiceDoc
				INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
				WHERE strInvDocID > @DocumentID
					AND strInvDocID NOT LIKE 'CN%'
					AND bitHistoryTrans = 0
					AND (
						@IsBPToolsMode = 1
						OR (
							tblCustomers.strCustCategory IN (
								SELECT tblCustomerCat.strCustCategory
								FROM tblCustomerCat
								LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
								WHERE ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) > 0
										AND tblCustomerCatSec.strUserName = @UserName
										)
								)
							)
						)
			ELSE
				SELECT MIN(strInvDocID)
				FROM tblInvoiceDoc
				INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
				WHERE strInvDocID > @DocumentID
					AND bitHistoryTrans = 0
					AND (
						@IsBPToolsMode = 1
						OR (
							tblCustomers.strCustCategory IN (
								SELECT tblCustomerCat.strCustCategory
								FROM tblCustomerCat
								LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
								WHERE ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) > 0
										AND tblCustomerCatSec.strUserName = @UserName
										)
								)
							)
						)
		ELSE IF (@TransactionType = 4) --CreditNote
			SELECT MIN(strInvDocID)
			FROM tblInvoiceDoc
			INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
			WHERE strInvDocID > @DocumentID
				AND bitHistoryTrans = 0
				AND strInvDocID LIKE 'CN%'
				AND (
					@IsBPToolsMode = 1
					OR (
						tblCustomers.strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
					)
		ELSE IF (@TransactionType = 1) --SalesOrder
			SELECT MIN(strOrdDocID)
			FROM tblOrderDoc
			INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
			WHERE strOrdDocID > @DocumentID
				AND intDocType = 1
				AND bitCleared = 0
				AND (
					@IsBPToolsMode = 1
					OR (
						tblCustomers.strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
					)
		ELSE IF (@TransactionType = 9) --Sales Layby
			SELECT MIN(strOrdDocID)
			FROM tblOrderDoc
			INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
			WHERE strOrdDocID > @DocumentID
				AND intDocType = 3
				AND bitCleared = 0
				AND (
					@IsBPToolsMode = 1
					OR (
						tblCustomers.strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
					)
		ELSE IF (@TransactionType = 2) --Quote
			SELECT MIN(strOrdDocID)
			FROM tblOrderDoc
			INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
			WHERE strOrdDocID > @DocumentID
				AND intDocType = 2
				AND bitCleared = 0
				AND (
					@IsBPToolsMode = 1
					OR (
						tblCustomers.strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
					)
		ELSE IF (@TransactionType = 3) --CreditRequest
			SELECT MIN(strOrdDocID)
			FROM tblOrderDoc
			INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
			WHERE strOrdDocID > @DocumentID
				AND strOrdDocID LIKE 'CR%'
				AND intDocType = 1
				AND bitCleared = 0
				AND (
					@IsBPToolsMode = 1
					OR (
						tblCustomers.strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName
									)
							)
						)
					)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[NavigateServiceItemByCustomer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[NavigateServiceItemByCustomer]
(
	@TransactionType TINYINT,
	@CustomerName NVARCHAR(50),
	@DocumentID NVARCHAR(50),
	@IsPrevious BIT
)
AS
BEGIN
	IF (@IsPrevious = 1)
	BEGIN
		IF (@TransactionType = 0) --Serviceable Item
		BEGIN
			SELECT Max(ServiceableItemCode) FROM tblWSServiceableItem WHERE CustomerCode = @CustomerName AND ServiceableItemCode < @DocumentID
		END
	END
	ELSE
	BEGIN 
		IF (@TransactionType = 0) --Serviceable Item
		BEGIN
			SELECT Max(ServiceableItemCode) FROM tblWSServiceableItem WHERE CustomerCode = @CustomerName AND ServiceableItemCode > @DocumentID
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[NavigateServiceItemByNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[NavigateServiceItemByNumber]
(
	@TransactionType INT,
	@DocumentID NVARCHAR(100),
	@IsPrevious BIT
)
AS
BEGIN
	IF (@IsPrevious = 1)
	BEGIN
		IF (@TransactionType = 0)      --Serviceable Item
			SELECT Max(ServiceableItemCode) FROM tblWSServiceableItem WHERE ServiceableItemCode < @DocumentID AND IsInactive = 0
		ELSE IF (@TransactionType = 1) --Quotation
			SELECT Max(ProcessDocID) FROM tblWSProcessDoc LEFT OUTER JOIN tblWSServiceableItem as tsi ON tblWSProcessDoc.ServiceableItemCode = tsi.ServiceableItemCode WHERE ProcessDocID < @DocumentID AND DocType = 1 and Cleared = 0
		ELSE IF (@TransactionType = 2) --Process Job
		    SELECT Max(ProcessDocID) FROM tblWSProcessDoc LEFT OUTER JOIN tblWSServiceableItem as tsi ON tblWSProcessDoc.ServiceableItemCode = tsi.ServiceableItemCode WHERE ProcessDocID < @DocumentID AND DocType = 2 and Cleared = 0 AND JobStatusType = 2
		ELSE IF (@TransactionType = 3) --Invoice Job
			SELECT Max(strInvDocID) FROM tblWSInvoiceDoc LEFT OUTER JOIN tblWSServiceableItem as tsi ON tblWSInvoiceDoc.ServiceableItemCode = tsi.ServiceableItemCode WHERE strInvDocID < @DocumentID  AND DocType = 3
		ELSE IF (@TransactionType = 4) --Job Template
			SELECT CONVERT(NVARCHAR,Max(JobTemplateID)) FROM tblwsJobTemplate WHERE JobTemplateID < @DocumentID
		ELSE IF (@TransactionType = 5) --Requisition
			SELECT CONVERT(NVARCHAR,Max(WIPDocID)) FROM tblWSWIP WHERE WIPDocID < @DocumentID
	
	END
	ELSE
	BEGIN
		IF (@TransactionType = 0)      --Serviceable Item
			SELECT Min(ServiceableItemCode) FROM tblWSServiceableItem WHERE ServiceableItemCode > @DocumentID AND IsInactive = 0
		ELSE IF (@TransactionType = 1) --Quotation 
			SELECT Min(ProcessDocID) FROM tblWSProcessDoc LEFT OUTER JOIN tblWSServiceableItem as tsi ON tblWSProcessDoc.ServiceableItemCode = tsi.ServiceableItemCode WHERE ProcessDocID > @DocumentID AND DocType = 1 and Cleared = 0
		ELSE IF (@TransactionType = 2) --Process Job
			SELECT Min(ProcessDocID) FROM tblWSProcessDoc LEFT OUTER JOIN tblWSServiceableItem as tsi ON tblWSProcessDoc.ServiceableItemCode = tsi.ServiceableItemCode WHERE ProcessDocID > @DocumentID AND DocType = 2 and Cleared = 0 AND JobStatusType = 2
		ELSE IF (@TransactionType = 3) --Invoice Job
			SELECT Min(strInvDocID) FROM tblWSInvoiceDoc LEFT OUTER JOIN tblWSServiceableItem as tsi ON tblWSInvoiceDoc.ServiceableItemCode = tsi.ServiceableItemCode WHERE strInvDocID > @DocumentID  AND DocType = 3
		ELSE IF (@TransactionType = 4) --Job Template
			SELECT CONVERT(NVARCHAR,Min(JobTemplateID)) FROM tblwsJobTemplate WHERE JobTemplateID > @DocumentID
		ELSE IF (@TransactionType = 5) --Requisition
			SELECT CONVERT(NVARCHAR,Min(WIPDocID)) FROM tblWSWIP WHERE WIPDocID > @DocumentID

	END
END
GO
/****** Object:  StoredProcedure [dbo].[NavigateShipmentByCustomer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[NavigateShipmentByCustomer]
(
	@CustomerName NVARCHAR(100),
	@DocumentID NVARCHAR(100),
	@IsPrevious BIT
)
AS
BEGIN
	IF (@IsPrevious = 1)
		SELECT MAX(strShpDocID) FROM tblShipments WHERE strCustName = @CustomerName AND strShpDocID < @DocumentID AND bitHistoryTrans = 0
	ELSE
		SELECT MIN(strShpDocID) FROM tblShipments WHERE strCustName = @CustomerName AND strShpDocID > @DocumentID AND bitHistoryTrans = 0
END
GO
/****** Object:  StoredProcedure [dbo].[NavigateShipmentByNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[NavigateShipmentByNumber] (
	@DocumentID NVARCHAR(100)
	,@IsPrevious BIT
	,@IsBPToolsMode BIT
	,@UserName AS NVARCHAR(100)
	)
AS
BEGIN
	IF (@IsPrevious = 1)
		SELECT MAX(strShpDocID)
		FROM tblShipments
		INNER JOIN tblCustomers ON tblShipments.strCustName = tblCustomers.strCustName
		WHERE strShpDocID < @DocumentID
			AND bitHistoryTrans = 0
			AND (
				@IsBPToolsMode = 1
				OR tblCustomers.strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
	ELSE
		SELECT MIN(strShpDocID)
		FROM tblShipments
		INNER JOIN tblCustomers ON tblShipments.strCustName = tblCustomers.strCustName
		WHERE strShpDocID > @DocumentID
			AND bitHistoryTrans = 0
			AND (
				@IsBPToolsMode = 1
				OR tblCustomers.strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
END
GO
/****** Object:  StoredProcedure [dbo].[NavigateStockPickByCustomer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInventorySerialExtData] ***********/

/*********** Start [NavigateStockPickByCustomer] ***********/
CREATE PROCEDURE [dbo].[NavigateStockPickByCustomer]
(
	@CustomerName NVARCHAR(100),
	@DocumentID NVARCHAR(100),
	@IsPrevious BIT
)
AS
BEGIN
	IF (@IsPrevious = 1)
		SELECT MAX(strPkTkDocID) FROM tblPickTickets WHERE strCustName = @CustomerName AND strPkTkDocID < @DocumentID AND bitCleared = 0 AND bitPicked = 1
	ELSE
		SELECT MIN(strPkTkDocID) FROM tblPickTickets WHERE strCustName = @CustomerName AND strPkTkDocID > @DocumentID AND bitCleared = 0 AND bitPicked = 1
END
GO
/****** Object:  StoredProcedure [dbo].[NavigateStockPickByNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [NavigateStockPickByCustomer] ***********/

/*********** Start [NavigateStockPickByNumber] ***********/
CREATE PROCEDURE [dbo].[NavigateStockPickByNumber] (
	@DocumentID NVARCHAR(100)
	,@IsPrevious BIT
	,@IsBPToolsMode BIT
	,@UserName AS NVARCHAR(100)
	)
AS
BEGIN
	IF (@IsPrevious = 1)
		SELECT MAX(strPkTkDocID)
		FROM tblPickTickets
		INNER JOIN tblCustomers ON tblPickTickets.strCustName = tblCustomers.strCustName
		WHERE strPkTkDocID < @DocumentID
			AND bitCleared = 0
			AND bitPicked = 1
			AND (
				@IsBPToolsMode = 1
				OR tblCustomers.strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
	ELSE
		SELECT MIN(strPkTkDocID)
		FROM tblPickTickets
		INNER JOIN tblCustomers ON tblPickTickets.strCustName = tblCustomers.strCustName
		WHERE strPkTkDocID > @DocumentID
			AND bitCleared = 0
			AND bitPicked = 1
			AND (
				@IsBPToolsMode = 1
				OR tblCustomers.strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND tblCustomerCatSec.strUserName = @UserName
							)
					)
				)
END
GO
/****** Object:  StoredProcedure [dbo].[NextDocNumbersSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[NextDocNumbersSales]
AS
BEGIN
	SELECT ISNULL(MAX(lngInvNumber), 0) + 1 AS InvNumber
		,ISNULL(MAX(lngSONumber), 0) + 1 AS SONumber
		,ISNULL(MAX(lngLBNumber), 0) + 1 AS LBNumber
		,ISNULL(MAX(lngQuoteNumber), 0) + 1 AS QuoteNumber
		,ISNULL(MAX(lngCNNumber), 0) + 1 AS CNNumber
		,ISNULL(MAX(lngCRNumber), 0) + 1 AS CRNumber
		,ISNULL(MAX(lngGVNumber), 0) + 1 AS GVNumber
		,ISNULL(MAX(lngRCNumber), 0) + 1 AS RCNumber
		,ISNULL(MAX(lngPONumber), 0) + 1 AS PONumber
		,ISNULL(MAX(lngRQNumber), 0) + 1 AS RQNumber
		,ISNULL(MAX(lngWQNumber), 0) + 1 AS WQNumber
		,ISNULL(MAX(lngPJBNumber), 0) + 1 AS PJBNumber
		,ISNULL(MAX(lngIJBNumber), 0) + 1 AS IJBNumber
		,ISNULL(MAX(lngSINumber), 0) + 1 AS SINumber
		,ISNULL(MAX(lngIRNumber), 0) + 1 AS IRNumber
		,ISNULL(MAX(lngJENumber), 0) + 1 AS JENumber
		,ISNULL(MAX(lngDANumber), 0) + 1 AS DANumber
	FROM tblLastIDs
END
GO

/****** Object:  StoredProcedure [dbo].[NonDisposedAssetsDepreciationHistory_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*************End [dbo].[SPQuoteDeliveryCostData] *************/

/******************* Start [NonDisposedAssetsDepreciationHistory_Search]********************/



CREATE PROCEDURE [dbo].[NonDisposedAssetsDepreciationHistory_Search]
(
    @lngID bigint = Null,
    @strAssetCode nvarchar(20) = Null,
    @dteDepreciationDate datetime = Null,
    @decOtherValue1 money = Null,
    @decOtherValue2 money = Null,
    @decOtherValue3 money = Null,
    @decOtherValue4 money = Null,
    @decOtherValue5 money = Null
)
AS
BEGIN
    SET NOCOUNT ON

	Declare  @Maxdate as datetime
	SELECT @Maxdate = MAX(dteDepreciationDate)  from tblDepreciationHistory
	
   SELECT 
        [tblDepreciationHistory].[lngID],
        [tblDepreciationHistory].[strAssetCode],
        [tblDepreciationHistory].[dteDepreciationDate],
        [tblDepreciationHistory].[decOtherValue1],
        [tblDepreciationHistory].[decOtherValue2],
        [tblDepreciationHistory].[decOtherValue3],
        [tblDepreciationHistory].[decOtherValue4],
        [tblDepreciationHistory].[decOtherValue5],
		 @Maxdate As MaxDate
    FROM 
        [tblDepreciationHistory] 
		inner join tblAssets on [tblDepreciationHistory].strAssetCode=tblAssets.strAssetCode and tblAssets.dteDisposalDate is null and tblAssets.bitInactive = 0
    WHERE 
        (([lngID] = @lngID) OR (@lngID Is Null)) AND 
        (([tblDepreciationHistory].[strAssetCode] = @strAssetCode) OR (@strAssetCode Is Null)) AND 
        (([dteDepreciationDate] = @dteDepreciationDate) OR (@dteDepreciationDate Is Null)) AND 
        (([decOtherValue1] = @decOtherValue1) OR (@decOtherValue1 Is Null)) AND 
        (([decOtherValue2] = @decOtherValue2) OR (@decOtherValue2 Is Null)) AND 
        (([decOtherValue3] = @decOtherValue3) OR (@decOtherValue3 Is Null)) AND 
        (([decOtherValue4] = @decOtherValue4) OR (@decOtherValue4 Is Null)) AND 
        (([decOtherValue5] = @decOtherValue5) OR (@decOtherValue5 Is Null))
END
GO
/****** Object:  StoredProcedure [dbo].[OpeningBalanceCustomers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[OpeningBalanceCustomers]
(
	@UserPINumber NVARCHAR(MAX),
	@SystemDate SMALLDATETIME ,
	@JournalDate SMALLDATETIME,
	@UserName NVARCHAR(20),
	@CustName NVARCHAR(50),
	@CustInvNo NVARCHAR(50),
	@Amount MONEY,
	@Currency NVARCHAR(3) ,
	@IsForeign BIT ,
	@AmountF MONEY ,
	@Term NVARCHAR(50),
	@Dept INT,
	@FormattedValue NVARCHAR(100),
	@DeliveryCostFormatted NVARCHAR(100) ,
	@TransType INT,
	@Disc MONEY ,
	@DiscF MONEY ,
	@DiscExpires DATETIME ,
	@DueDate DATETIME,
	@TransTypeDT INT ,
	@CurrentYrStarts DATETIME
)
AS
BEGIN

	BEGIN TRY
		DECLARE @ERR_MSG AS NVARCHAR(4000), @Err_Severity INT, @ERR_STA AS SMALLINT		
		DECLARE @NextPINumber AS BIGINT 
		SELECT @NextPINumber = ISNULL(MAX(lngPINumber), 0) FROM tblLastIDs			

		DECLARE @PaymentType AS NVARCHAR(MAX) 
		SELECT TOP 1 @PaymentType = t.strName FROM tblTenderTypes t WHERE t.bitAccount = 1				
			
		DECLARE @NextCustTrans AS BIGINT
		SELECT @NextCustTrans = ISNULL(MAX(lngCustTrID),0) FROM tblCustTrans					
							
		IF @Dept = 0 
		BEGIN 	
			SET @Dept = NULL		
		END
		INSERT INTO tblInvoiceDoc
		(
		strInvDocID
,lngInvTrackID
,lngJourID
,dteSystemDate
,dteJournalDate
,dteRequired
,strUserName
,strCustName
,strSoldTo
,strShipTo
,strReference
,decSubTotal
,decVAT
,decTotal
,bitFromSO
,strOrdDocID
,bitHistoryTrans
,strNotes
,bitPrinted
,bitEmailed
,intPaidBy
,intAccount
,strSalesName
,strAddInfo
,bitReserved
,strCurrency
,bitIsForeign
,decSubTotalF
,decVATF
,decTotalF
,decExchange
,strTerm
,intDept
,strField1
,strField2
,strField3
,strField4
,strField5
,strField6
,strField7
,strField8
,strField9
,strField10
,strField11
,strField12
,strSubFormated
,strVATFormatted
,strTotFormatted
,dteField13
,dteField14
,decDiscPerc
,decDiscAmt
,decDiscAmtF
,strDiscFormatted
,strOrdFQDocID
,strStatusTypeCode
,strCNReasonCode
,bitBookmark
,dteSystemDateTime
,strPaidBy
,intSentDoc
,strVAT
,strDelMethodCode
,decTotalWeight
,decTotalVolWeight
,decDeliveryCost
,decDeliveryCostF
,strDeliveryCostFormatted
,bitShipmentsAuditTrail
,intRevisionNumber
,strStoreNumber
,strEDI
--,bitNoPODRequired
		)
		 VALUES 
		(
	@CustInvNo											
	,NULL												
	,NULL												
	,@SystemDate										
	,@JournalDate										
	,@JournalDate										
	,@UserName											
	,@CustName											
	,''													
	,''													
	,''													
	,@Amount											
	,0													
	,@Amount											
	,0													
	,NULL												
	,1													
	,'History Transaction'								
	,1													
	,1													
	,0													
	,NULL												
	,NULL												
	,''													
	,0													
	,@Currency											
	,@IsForeign											
	,@AmountF											
	,0													
	,@AmountF											
	,1													
	,@Term												
	,@Dept												
	,''													
	,''													
	,''													
	,''													
	,''													
	,''													
	,''													
	,''													
	,''													
	,''													
	,''													
	,''													
	,@FormattedValue									
	,@FormattedValue									
	,@FormattedValue									
	,@JournalDate										
	,@JournalDate										
	,0													
	,0													
	,0													
	,''													
	,NULL												
	,NULL												
	,NULL												
	,0													
	,@SystemDate										
	,@PaymentType										
	,0													
	,N''												
	,NULL												
	,0													
	,0													
	,0													
	,0													
	,@DeliveryCostFormatted								
	,0													
	,1													
	,NULL												
	,null		
	--,0										
)
				
		PRINT '2 start'				

		SET @NextCustTrans += 1
		
		INSERT INTO tblCustTrans VALUES (@NextCustTrans,@CustName,@SystemDate,@JournalDate,@UserName,@CustInvNo,'History','',@TransType,@Amount,@AmountF,@Currency,@IsForeign,1,0,NULL,0,0,@Disc,@DiscF,@DiscExpires,@DueDate,NULL,null)
		
		INSERT INTO tblCustTransDT (dteJournalDate,lngCustTrID,lngCustPayID,decAmount,intTransType,decAmtOwingAtTime,bitReversed,dteIntDate,decAmountF,decAmtOwingAtTimeF,bitIsForeign) VALUES (@JournalDate,@NextCustTrans,NULL,@Amount,@TransTypeDT,@Amount,0,NULL,


@AmountF,@AmountF,@IsForeign)

		UPDATE tblCustomers SET 
		decBalDue = (SELECT ISNULL(SUM(tblCustTransDT.decAmount),0) FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = @CustName AND tblCustTransDT.bitReversed = 0
		AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR  (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL)))
		, decYTDPurch = (SELECT ISNULL(SUM(decTotal),0) FROM tblInvoiceDoc WHERE strCustName = @CustName AND bitHistoryTrans = 0 AND dteJournalDate >= @CurrentYrStarts)
		, decBalDueF = (SELECT ISNULL(SUM(tblCustTransDT.decAmountF),0) FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = @CustName AND tblCustTransDT.bitReversed = 0
		AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR  (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL)))
		, decYTDPurchF = (SELECT ISNULL(SUM(decTotalF),0) FROM tblInvoiceDoc WHERE strCustName = @CustName AND bitHistoryTrans = 0 AND dteJournalDate >= @CurrentYrStarts) WHERE strCustName = @CustName			
		
		SELECT 'Success'
	END TRY
	BEGIN CATCH		
		IF ERROR_NUMBER() = 2627
		BEGIN		
				SET @ERR_MSG =  'Error 2627: '						
				SELECT @ERR_MSG				
			END
		ELSE
			BEGIN									
				SELECT @ERR_MSG = ERROR_MESSAGE(),  @Err_Severity = ERROR_SEVERITY() , @ERR_STA = ERROR_STATE()
				RAISERROR (@ERR_MSG, @Err_Severity, @ERR_STA);
		END					
	END CATCH			
END
GO
/****** Object:  StoredProcedure [dbo].[OpeningBalanceInventory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [ImportVendors] ***********/
/*********** Start [OpeningBalanceInventory] ***********/
CREATE PROCEDURE [dbo].[OpeningBalanceInventory] (
	@PartNumber AS NVARCHAR(100)
	,@Location AS NVARCHAR(20)
	,@AdjVal AS MONEY
	,@AdjQty AS MONEY
	,@IsZRAEnable AS bit 
	,@SQOpQty AS MONEY
	,@SQOpVal AS MONEY	
	)
AS
BEGIN
	BEGIN TRY
		DECLARE @ERR_MSG AS NVARCHAR(4000)
			,@Err_Severity INT
			,@ERR_STA AS SMALLINT
		DECLARE @Result AS NVARCHAR(100)

		UPDATE tblInv
		SET decSumAvail = decSumAvail + @AdjQty
			,decSumOnHand = decSumOnHand + @AdjQty
			,decSumValue = decSumValue + @AdjVal
			,decSumOpenQty = decSumOpenQty + @AdjQty
			,decSumOpenValue = decSumOpenValue + @AdjVal
			,dteLastUpdated = GetDate()
		WHERE strPartNumber = @PartNumber

		IF (@@ROWCOUNT = 0)
		BEGIN
			SET @Result = CONCAT (
					'Inventory item not found:'
					,@PartNumber
					)

			GOTO lblEnd
		END

		UPDATE tblInvExt
		SET decAvail = decAvail + @AdjQty
			,decOnHand = decOnHand + @AdjQty
			,decValue = decValue + @AdjVal
			,decOpenQty = decOpenQty + @AdjQty
			,decOpenValue = decOpenValue + @AdjVal
		WHERE strPartNumber = @PartNumber
			AND strLocName = @Location

		IF (@@ROWCOUNT = 0)
		BEGIN
			SET @Result = CONCAT (
					'Inventory Ext item not found:'
					,@PartNumber
					)

			GOTO lblEnd
		END

		
		UPDATE tblInvExtBin
		SET decAvail = decAvail + @AdjQty
			,decOnHand = decOnHand + @AdjQty
			,dteRowUpdated = GetDate()
			,decOpenQty = @SQOpQty
			,decOpenValue = @SQOpVal
		WHERE strPartNumber = @PartNumber
			AND strLocName = @Location
	

		IF (@@ROWCOUNT = 0)
		BEGIN
			SET @Result = CONCAT (
					'Inventory Ext Binitem not found:'
					,@PartNumber
					)

			GOTO lblEnd
		END

		SET @Result = 'Success'

		lblEnd:

		SELECT @Result
	END TRY

	BEGIN CATCH
		ROLLBACK TRANSACTION

		SELECT @ERR_MSG = ERROR_MESSAGE()
			,@Err_Severity = ERROR_SEVERITY()
			,@ERR_STA = ERROR_STATE()

		RAISERROR (
				@ERR_MSG
				,@Err_Severity
				,@ERR_STA
				);
	END CATCH
END
GO
/****** Object:  StoredProcedure [dbo].[OpeningBalanceVendors]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[OpeningBalanceVendors] (
	@NextPINumber AS NVARCHAR(100)
	,@UserPINumber AS NVARCHAR(50)
	,@SystemDate AS SMALLDATETIME
	,@JournalDate AS SMALLDATETIME
	,@UserName AS NVARCHAR(20)
	,@VendName AS NVARCHAR(50)
	,@VendInvNo AS NVARCHAR(50)
	,@Amount AS MONEY
	,@Currency AS NVARCHAR(3)
	,@IsForeign AS BIT
	,@AmountF AS MONEY
	,@Term AS NVARCHAR(50)
	,@Dept AS INT
	,@FormattedValue AS NVARCHAR(100)
	,@TransType AS INT
	,@Disc AS MONEY
	,@DiscF AS MONEY
	,@DiscExpires AS DATETIME
	,@DueDate AS DATETIME
	,@TransTypeDT AS INT
	,@CurrentYrStarts AS DATETIME
	,@PaymentType AS NVARCHAR(MAX)
	)
AS
BEGIN
	INSERT INTO tblInvoiceDocP
	VALUES (
		@NextPINumber
		,NULL
		,NULL
		,@SystemDate
		,@JournalDate
		,@JournalDate
		,@UserName
		,@VendName
		,''
		,@VendInvNo
		,@Amount
		,0
		,@Amount
		,0
		,NULL
		,''
		,1
		,'History Transaction'
		,1
		,1
		,0
		,NULL
		,@Currency
		,@IsForeign
		,@AmountF
		,0
		,@AmountF
		,1
		,@Term
		,@Dept
		,''
		,''
		,''
		,''
		,''
		,''
		,''
		,''
		,''
		,''
		,''
		,''
		,@FormattedValue
		,@FormattedValue
		,@FormattedValue
		,0
		,0
		,0
		,''
		,NULL
		,0
		,0
		,0
		,NULL
		,0
		,''
		,''
		,@PaymentType
		,0
		,0
		,1
		,0
		,''
		)

	DECLARE @NextVendTrans AS BIGINT

	SELECT @NextVendTrans = ISNULL(MAX(lngVendTrID), 0) + 1
	FROM tblVendTrans

	INSERT INTO tblVendTrans
	VALUES (
		@NextVendTrans
		,@VendName
		,@SystemDate
		,@JournalDate
		,@UserName
		,@NextPINumber
		,@VendInvNo
		,''
		,@TransType
		,@Amount
		,@AmountF
		,@Currency
		,@IsForeign
		,1
		,0
		,NULL
		,0
		,0
		,@Disc
		,@DiscF
		,@DiscExpires
		,@DueDate
		,NULL
		)

	INSERT INTO tblVendTransDT (
		dteJournalDate
		,lngVendTrID
		,lngVendPayID
		,decAmount
		,intTransType
		,decAmtOwingAtTime
		,bitReversed
		,decAmountF
		,decAmtOwingAtTimeF
		,bitIsForeign
		)
	VALUES (
		@JournalDate
		,@NextVendTrans
		,NULL
		,@Amount
		,@TransTypeDT
		,@Amount
		,0
		,@AmountF
		,@AmountF
		,@IsForeign
		)

	UPDATE tblVendors
	SET decBalDue = (
			SELECT ISNULL(SUM(tblVendTransDT.decAmount), 0)
			FROM tblVendTrans
			INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
			WHERE tblVendTrans.strVendName = @VendName
				AND tblVendTransDT.bitReversed = 0
			)
		,decYTDPurch = (
			SELECT ISNULL(SUM(decTotal), 0)
			FROM tblInvoiceDocP
			WHERE strVendName = @VendName
				AND bitHistoryTrans = 0
				AND dteJournalDate >= @CurrentYrStarts
			)
		,decBalDueF = (
			SELECT ISNULL(SUM(tblVendTransDT.decAmountF), 0)
			FROM tblVendTrans
			INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
			WHERE tblVendTrans.strVendName = @VendName
				AND tblVendTransDT.bitReversed = 0
			)
		,decYTDPurchF = (
			SELECT ISNULL(SUM(decTotalF), 0)
			FROM tblInvoiceDocP
			WHERE strVendName = @VendName
				AND bitHistoryTrans = 0
				AND dteJournalDate >= @CurrentYrStarts
			)
	WHERE strVendName = @VendName

	SELECT 'Success'
END
GO
/****** Object:  StoredProcedure [dbo].[OperationsOnReversal]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[OperationsOnReversal] (
	@DocDate DATETIME
	,@JourID BIGINT
	,@PayID BIGINT
	,@CustUpdateForReceiptEntityData CustUpdateForReceiptEntityDataTableType Readonly
	)
AS
BEGIN
	DELETE
	FROM tblCustTransDT
	WHERE lngCustPayID = @PayID

	DELETE
	FROM tblCustPay
	WHERE lngCustPayID = @PayID

	DELETE
	FROM tblTax
	WHERE dteJournalDate = @DocDate
		AND lngJournalID = @JourID
		AND strInvOrPayID = @PayID

	DECLARE @CustName VARCHAR(50)
	DECLARE @CurrentYrStarts DATETIME

	DECLARE db_cursor CURSOR
	FOR
	SELECT CustName
		,CurrentYrStarts
	FROM @CustUpdateForReceiptEntityData

	OPEN db_cursor

	FETCH NEXT
	FROM db_cursor
	INTO @CustName
		,@CurrentYrStarts

	WHILE @@FETCH_STATUS = 0
	BEGIN
		--SET @fileName = @path + @name + '_' + @fileDate + '.BAK'   
		--BACKUP DATABASE @name TO DISK = @fileName   
		UPDATE tblCustomers
		SET decBalDue = (
				SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0)
				FROM tblCustTrans
				INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
				WHERE tblCustTrans.strCustName = tblCustomers.strCustName
					AND tblCustTransDT.bitReversed = 0
					AND (
						tblCustTrans.strOrdDocID IS NULL
						OR (
							tblCustTrans.strInvDocID IS NOT NULL
							AND tblCustTrans.strOrdDocID IS NOT NULL
							)
						OR (
							tblCustTrans.strOrdDocID IS NOT NULL
							AND tblCustTransDT.lngCustPayID IS NOT NULL
							)
						)
				)
			,decYTDPurch = (
				SELECT ISNULL(SUM(decTotal), 0)
				FROM tblInvoiceDoc
				WHERE strCustName = tblCustomers.strCustName
					AND bitHistoryTrans = 0
					AND dteJournalDate >= @CurrentYrStarts
				)
			,decBalDueF = (
				SELECT ISNULL(SUM(tblCustTransDT.decAmountF), 0)
				FROM tblCustTrans
				INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
				WHERE tblCustTrans.strCustName = tblCustomers.strCustName
					AND tblCustTransDT.bitReversed = 0
					AND (
						tblCustTrans.strOrdDocID IS NULL
						OR (
							tblCustTrans.strInvDocID IS NOT NULL
							AND tblCustTrans.strOrdDocID IS NOT NULL
							)
						OR (
							tblCustTrans.strOrdDocID IS NOT NULL
							AND tblCustTransDT.lngCustPayID IS NOT NULL
							)
						)
				)
			,decYTDPurchF = (
				SELECT ISNULL(SUM(decTotalF), 0)
				FROM tblInvoiceDoc
				WHERE strCustName = tblCustomers.strCustName
					AND bitHistoryTrans = 0
					AND dteJournalDate >= @CurrentYrStarts
				)
			,dteUpdated = GetDate()
		WHERE strCustName = @CustName

		FETCH NEXT
		FROM db_cursor
		INTO @CustName
			,@CurrentYrStarts
	END

	CLOSE db_cursor

	DEALLOCATE db_cursor

	UPDATE tblCustTrans
	SET bitSettled = 1
	WHERE bitSettled = 0
		AND lngCustTrID IN (
			SELECT lngCustTrID
			FROM tblCustTransDT
			WHERE bitReversed = 0
			GROUP BY lngCustTrID
			HAVING SUM(decAmount) = 0
				AND SUM(decAmountF) = 0
			)

	UPDATE tblCustTrans
	SET bitSettled = 0
	WHERE bitSettled = 1
		AND lngCustTrID IN (
			SELECT lngCustTrID
			FROM tblCustTransDT
			WHERE bitReversed = 0
			GROUP BY lngCustTrID
			HAVING SUM(decAmount) <> 0
				OR SUM(decAmountF) <> 0
			)
END
GO
/****** Object:  StoredProcedure [dbo].[OptBinBagInsertUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/***************End [GetVendorsListByVendName]***************************/

CREATE PROCEDURE [dbo].[OptBinBagInsertUpdate]
(
	@BinBagTable BinBagTableType READONLY
)
AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @NumberofIntType INT,
            @RowCount INT

	-- get the number of items
    SET @NumberofIntType = (SELECT  count(*)
                            FROM @BinBagTable)

	SET @RowCount = 0           -- set the first row to 0

	--Create Table Variable
	DECLARE @BinBagTemp TABLE (
		RowNumber INT IDENTITY(0,1),
		ID INT,
		BagSize NVARCHAR(20)
	)

	INSERT INTO @BinBagTemp
		SELECT * FROM @BinBagTable;

	-- loop through the records 
    -- loop until the rowcount = number of records in your table
    WHILE @RowCount < @NumberofIntType
        BEGIN
            -- do your process here
			DECLARE @ID INT
			DECLARE @BagSize NVARCHAR(50)

			SELECT 
				@ID = ID,
				@BagSize = BagSize
			FROM 
				@BinBagTemp 
			WHERE 
				RowNumber = @RowCount

			--VB SP START
			IF @BagSize IS NOT NULL AND LEN(@BagSize) > 0
			BEGIN
				IF @ID IS NOT NULL AND (@ID) > 0
					BEGIN
						UPDATE tblOptBagSize SET strBagSize = @BagSize WHERE lngID = @ID
					END
				ELSE
					BEGIN
						INSERT INTO tblOptBagSize (strBagSize) VALUES (@BagSize)
					END
			END
			--VB SP END

            SET @RowCount = @RowCount + 1
        END
END
GO
/****** Object:  StoredProcedure [dbo].[OptDocLinesUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[OptDocLinesUpdate]
(
    @tblDataOrderDocQDT AS OrderDocQDTTableType READONLY
)
AS
BEGIN
	UPDATE
		tblOrderDocQDT
	SET
		strLineField1 = tt.LineField1, 
		strLineField2 = tt.LineField2, 
		strLineField3 = tt.LineField3, 
		strLineField4 = tt.LineField4, 
		strLineField5 = tt.LineField5, 
		strLineField6 = tt.LineField6, 
		strLineField7 = tt.LineField7, 
		strLineField8 = tt.LineField8, 
		strLineField9 = tt.LineField9, 
		strLineField10 = tt.LineField10, 
		strLineField11 = tt.LineField11, 
		strLineField12 = tt.LineField12
	FROM 
		 @tblDataOrderDocQDT tt
	WHERE 
	  	 tblOrderDocQDT.strOrdDocID = tt.DocID
		 AND
		 tblOrderDocQDT.[intLineNo] = tt.[LineNo]	
END
GO
/****** Object:  StoredProcedure [dbo].[OptDocLinesUpdateForLoop]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[OptDocLinesUpdateForLoop]
(
    @LineField1 AS NVARCHAR(50),
	@LineField2 AS NVARCHAR(50),
	@LineField3	AS NVARCHAR(50),
	@LineField4	AS NVARCHAR(50),
	@LineField5	AS NVARCHAR(50),
	@LineField6	AS NVARCHAR(50),
	@LineField7	AS NVARCHAR(50),
	@LineField8	AS NVARCHAR(50),
	@LineField9	AS NVARCHAR(50),
	@LineField10 AS NVARCHAR(50),
	@LineField11 AS NVARCHAR(50),
	@LineField12 AS NVARCHAR(50),

	@DocID AS NVARCHAR(50),
	@LineNo AS INT
)
AS
BEGIN
	UPDATE 
		tblOrderDocQDT 
	SET 
		strLineField1 = @LineField1, 
		strLineField2 = @LineField2, 
		strLineField3 = @LineField3, 
		strLineField4 = @LineField4, 
		strLineField5 = @LineField5, 
		strLineField6 = @LineField6, 
		strLineField7 = @LineField7, 
		strLineField8 = @LineField8, 
		strLineField9 = @LineField9, 
		strLineField10 = @LineField10, 
		strLineField11 = @LineField11, 
		strLineField12 = @LineField12 
	WHERE 
		strOrdDocID = @DocID AND 
		intLineNo = @LineNo
END
GO
/****** Object:  StoredProcedure [dbo].[OrderDocDADTBin_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InvAsmDocDTBin_List] ***********/

/*********** Start [OrderDocDADTBin_List] ***********/
CREATE PROCEDURE [dbo].[OrderDocDADTBin_List]
(
	@OrdDADocID NVARCHAR(50)
)
AS
BEGIN
	SELECT	
		lngID AS 'Id'
		,strOrdDADocID AS 'DocId'
		,intLineNo AS 'LineNo'
		,lngBinID AS 'BinId'
		,decQty AS 'Qty'
		,ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblOrderDocDADTBin.lngBinId),'') AS 'BinCode'
	FROM 
		tblOrderDocDADTBin
	WHERE 
	strOrdDADocID IN ((SELECT * FROM fnSplitStringAsTable(@OrdDADocID,',')))
		--strOrdDADocID = @OrdDADocID
END
GO
/****** Object:  StoredProcedure [dbo].[OrderDocDTDataDelete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [UpdateUserEditData] ***********/

/*********** Start [OrderDocDTDataDelete] ***********/

CREATE  PROCEDURE [dbo].[OrderDocDTDataDelete]
 @DocNumber AS NVARCHAR(50)
AS
BEGIN
 DELETE FROM tblOrderDocDT WHERE strOrdDocID = @DocNumber
END

GO
/****** Object:  StoredProcedure [dbo].[OrderDocDTInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End[CustomerTransDTInsert] ***********/

/*********** Start[OrderDocDTInsert] ***********/
CREATE PROCEDURE [dbo].[OrderDocDTInsert]
	@OrderDocDTData OrderDocDTTableType READONLY
AS
BEGIN
	INSERT INTO [dbo].[tblOrderDocDT]
           ([strOrdDocID]
           ,[intLineNo]
           ,[strPartNumber]
           ,[strLocation]
           ,[strPartDesc]
           ,[decQty]
           ,[decQtyRemaining]
           ,[strUnit]
           ,[intType]
           ,[decPriceEaExc]
           ,[decLineTotExc]
           ,[decLineTaxAmt]
           ,[decPriceEaInc]
           ,[decLineTotInc]
           ,[strTaxCode]
           ,[imgTaxObj]
           ,[strCurrency]
           ,[bitIsForeign]
           ,[decPriceEaExcF]
           ,[decLineTotExcF]
           ,[decLineTaxAmtF]
           ,[decEaIncTaxF]
           ,[decTotIncTaxF]
           ,[strInvField1]
           ,[strInvField2]
           ,[strInvField3]
           ,[strInvField4]
           ,[strInvField5]
           ,[strInvField6]
           ,[strLineField1]
           ,[strLineField2]
           ,[strLineField3]
           ,[strLineField4]
           ,[strLineField5]
           ,[strLineField6]
           ,[strLineField7]
           ,[strLineField8]
           ,[strLineField9]
           ,[strLineField10]
           ,[strLineField11]
           ,[strLineField12]
           ,[decLineDiscPerc]
           ,[decLineDiscAmt]
           ,[decLineDiscAmtF]
           ,[bitDiscountTax]
           ,[decStockQty]
           ,[strStockUnit]
           ,[decStockQtyRemain]
           ,[strSalesName]
           ,[strPartExtendedDesc]
           ,[decBuyoutCost]
           ,[decItemWeight]
           ,[decVolumetricWeight]
           ,[bitContainerItem]
           ,[bitDelCost]
           ,[intBillingMethod]
           ,[uidTransactionFieldID]
		   ,[uidContainerItem]
		   ,[strOrigDocID])		   
		   SELECT * FROM @OrderDocDTData             
END
GO
/****** Object:  StoredProcedure [dbo].[OrderDocDTPrjInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [OrderDocDTInsert] ***********/

/*********** End [OrderDocDTPrjInsert] ***********/
CREATE PROCEDURE [dbo].[OrderDocDTPrjInsert]
	@OrderDocDTPrjData InvOrderDocDTPrjTableType READONLY
AS
BEGIN
	INSERT INTO [dbo].[tblOrderDocDTPrj]
           ([strOrdDocID]
           ,[intLineNo]
           ,[strProjNumber])
		   SELECT * FROM @OrderDocDTPrjData
END 
GO
/****** Object:  StoredProcedure [dbo].[OrderDocDTSerialData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [OrderDocDTPrjInsert] ***********/

/*********** Start [OrderDocDTSerialData] ***********/
CREATE PROCEDURE [dbo].[OrderDocDTSerialData]
    @DocNumber AS NVARCHAR(50),
	@LineNumber AS INT
AS
BEGIN
	SELECT tblOrderDocDTSerial.*
	,CASE 
		WHEN tblOrderDocDTSerial.intSerialLotType = 0
			THEN ISNULL(tblInvSerialExt.bitDimensionExist, 0)
		ELSE 0
		END
	,CASE 
		WHEN tblOrderDocDTSerial.intSerialLotType = 0
			THEN ISNULL(tblInvSerialExt.strDimension, '')
		ELSE ''
		END
FROM tblOrderDocDT
INNER JOIN tblOrderDocDTSerial ON tblOrderDocDT.strOrdDocID = tblOrderDocDTSerial.strOrdDocID
	AND tblOrderDocDT.intLineNo = tblOrderDocDTSerial.intLineNo
LEFT JOIN tblInvSerialExt ON tblOrderDocDT.strPartNumber = tblInvSerialExt.strPartNumber
	AND tblOrderDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
WHERE tblOrderDocDT.strOrdDocID = @DocNumber
	AND tblOrderDocDT.intLineNo = @LineNumber
ORDER BY lngID
END
GO
/****** Object:  StoredProcedure [dbo].[OrderDocDTSerialInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [LastPINumberUpdate] ***********/

/*********** Start [OrderDocDTSerialInsert] ***********/
CREATE PROCEDURE [dbo].[OrderDocDTSerialInsert]
	@OrderDocDTSerialData OrderDocDTSerialTableType READONLY
AS
BEGIN
INSERT INTO [dbo].[tblOrderDocDTSerial]
           ([strOrdDocID]
           ,[intLineNo]
           ,[strSerialNumber]
           ,[decQty]
           ,[strUnit]
           ,[bitExpiryDate]
           ,[dteExpiryDate]
           ,[intSerialLotType])
			SELECT * FROM @OrderDocDTSerialData
END
GO
/****** Object:  StoredProcedure [dbo].[OrderDocDTUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InsertInvoiceDocREVAndREVDT] ***********/

/*********** Start [OrderDocDTUpdate] ***********/
CREATE PROCEDURE [dbo].[OrderDocDTUpdate] (
	@OrderDocDTDataForUpdate AS OrderDocDTUpdateTableType ReadOnly
	,@ExistingSoNumber AS NVARCHAR(50)
	,@IsSOCOmpleted AS BIT
	,@IsInvoiceConvert AS BIT
	,@Date AS DATETIME
	,@UserName AS NVARCHAR(50)
	,@SOReasonCode AS NVARCHAR(50)
	)
AS
BEGIN
	UPDATE tblOrderDocDT
	SET decQtyRemaining = r.QtyRemaining
		,decStockQtyRemain = r.StockQtyRemain
	FROM @OrderDocDTDataForUpdate r
	WHERE tblOrderDocDT.strOrdDocID = @ExistingSoNumber
		AND tblOrderDocDT.intLineNo = r.[LineNo]

	IF @IsSOCOmpleted = 1
	BEGIN
		UPDATE tblOrderDoc
		SET dteSystemDate = @Date
			,strUserName = @UserName
			,bitCleared = 1
			,strSOReasonCode = CASE 
				WHEN @IsInvoiceConvert = 1
					THEN strSOReasonCode
				ELSE @SOReasonCode
				END
		WHERE strOrdDocID = @ExistingSoNumber

		UPDATE tblOrderDocDT
		SET decQtyRemaining = 0.00
			,decStockQtyRemain = 0.00
		WHERE strOrdDocID = @ExistingSoNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[OrderDocDTUpdateDA]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[OrderDocDTUpdateDA]
    (
      @OrderDocDTDataForUpdate AS SOListTableType READONLY ,
      @ExistingSoNumber AS NVARCHAR(50) ,
      @IsSOCOmpleted AS BIT ,
      @CancellBackOrder AS BIT ,
      @Date AS DATETIME ,
      @UserName AS NVARCHAR(50)
    )
AS
    BEGIN

        UPDATE  tblOrderDocDT
        SET     decQtyRemaining = r.QtyRemaining ,
                decStockQtyRemain = r.StockQtyRemain
        FROM    @OrderDocDTDataForUpdate r
        WHERE   tblOrderDocDT.strOrdDocID = @ExistingSoNumber
                AND tblOrderDocDT.intLineNo = r.[LineNo];

        IF @IsSOCOmpleted = 1
            BEGIN
                UPDATE  tblOrderDoc
                SET     bitCleared = 1
                WHERE   strOrdDocID = @ExistingSoNumber;
            END;
        ELSE
            BEGIN
                IF @CancellBackOrder = 1
                    BEGIN
                        UPDATE  tblOrderDoc
                        SET     dteSystemDate = @Date ,
                                strUserName = @UserName ,
                                bitCleared = 1
                        WHERE   strOrdDocID = @ExistingSoNumber;
                        
                    END;

            END

    END
GO
/****** Object:  StoredProcedure [dbo].[OrderDocParcelInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetQtyRemaining] ***********/

/*********** Start [OrderDocParcelInsert] ***********/
CREATE PROCEDURE [dbo].[OrderDocParcelInsert]
@DocNumber AS NVARCHAR(50),
@WaybillNo AS NVARCHAR(50),
@ServiceType AS NVARCHAR(50),
@NoOfParcel AS MONEY,
@Mass AS MONEY,
@Height AS MONEY,
@Length AS MONEY,
@Width AS MONEY,
@ReceiverAddr1 AS NVARCHAR(100),
@ReceiverAddr2 AS NVARCHAR(100),
@ReceiverAddr3 AS NVARCHAR(50),
@ReceiverAddr4 AS NVARCHAR(50),
@ReceiverAddr5 AS NVARCHAR(20)
AS
BEGIN
	delete from tblOrderDocParcels where strOrdDocID=@DocNumber

	INSERT INTO [dbo].[tblOrderDocParcels]       
		   ([strOrdDocID]
           ,[strWaybillNo]
           ,[strServiceType]
           ,[decNoOfParcel]
           ,[decMass]
           ,[decHeight]
           ,[decLength]
           ,[decWidth]
           ,[strReceiverAddr1]
           ,[strReceiverAddr2]
           ,[strReceiverAddr3]
           ,[strReceiverAddr4]
           ,[strReceiverAddr5])
     VALUES
           (@DocNumber,@WaybillNo,@ServiceType,@NoOfParcel,@Mass,@Height,@Length,@Width,@ReceiverAddr1,@ReceiverAddr2,@ReceiverAddr3,@ReceiverAddr4,@ReceiverAddr5)
END
GO
/****** Object:  StoredProcedure [dbo].[OrderDocParcelsDimensionsInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InvoiceDocDimensionsInsert] ***********/

/*********** End [OrderDocParcelsDimensionsInsert] ***********/
CREATE PROCEDURE [dbo].[OrderDocParcelsDimensionsInsert]
	@OrderDocParcelsDimensionsData AS OrderDocParcelsDimensionsTableType READONLY,
	@DocNumber AS NVARCHAR(50)
AS
BEGIN
	INSERT INTO tblOrderDocParcelsDimensions
		    ([strOrdDocID]
           ,[intLineNo]
           ,[strParcelType]
           ,[decMass]
           ,[decHeight]
           ,[decLength]
           ,[decWidth])
	SELECT @DocNumber,[LineNo],[ParcelType],[Mass] ,[Height],[Length] ,[Width] FROM @OrderDocParcelsDimensionsData
END
GO
/****** Object:  StoredProcedure [dbo].[OrderDocPDTPrjInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[OrderDocPDTPrjInsert]  
 @OrderDocPDTPrjData GRVDocDTPrjTableType READONLY  
AS  
BEGIN
 INSERT INTO [dbo].[tblOrderDocPDTPrj]  
           ([strOrdPDocID]  
           ,[intLineNo]  
           ,[strProjNumber],  
     [strStage])  
     SELECT DocID,[LineNo],ProjNumber,Stage FROM @OrderDocPDTPrjData  
END
GO
/****** Object:  StoredProcedure [dbo].[OrderDocPGDTBin_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InvoiceDocDTBin_List] ***********/

/*********** Start [OrderDocPGDTBin_List] ***********/
CREATE PROCEDURE [dbo].[OrderDocPGDTBin_List]
	-- Add the parameters for the stored procedure here
	@OrdPGDocID nvarchar(50)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT	
		lngID AS 'Id'
		,strOrdPGDocID AS 'DocId'
		,intLineNo AS 'LineNo'
		,lngBinID AS 'BinId'
		,decQty AS 'Qty'
		,ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblOrderDocPGDTBin.lngBinId),'') AS 'BinCode'
	FROM 
		tblOrderDocPGDTBin
	WHERE 
		strOrdPGDocID IN (SELECT VALUE FROM dbo.fnSplitStringAsTable(@OrdPGDocID,','))
END
GO
/****** Object:  StoredProcedure [dbo].[OrderDocPGDTBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InvAsmDocDTBin_Save] ***********/

/*********** Start [OrderDocPGDTBin_Save] ***********/
CREATE PROCEDURE [dbo].[OrderDocPGDTBin_Save]
(
	@InvDocDTBinTable InvDocDTBinTableType READONLY
	--@SQlngId BIGINT
	--,@SQstrOrdPGDocID NVARCHAR(50)
	--,@SQintLineNo INT
	--,@SQlngBinId BIGINT
	--,@SQdecQty MONEY
)
AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @NumberofIntType INT,
            @RowCount INT

	-- get the number of items
    SET @NumberofIntType = (SELECT  count(*)
                            FROM @InvDocDTBinTable)

	SET @RowCount = 0           -- set the first row to 0

	--Create Table Variable
	DECLARE @InvDocDTTemp TABLE (
		RowNumber INT IDENTITY(0,1),
		Id BIGINT,
		DocId NVARCHAR(50),		
		[LineNo] INT,
		BinId BIGINT,
		Qty MONEY,
		PickingBin BIT
	)

	INSERT INTO @InvDocDTTemp
		SELECT * FROM @InvDocDTBinTable;

	-- loop through the records 
    -- loop until the rowcount = number of records in your table
    WHILE @RowCount < @NumberofIntType					
        BEGIN
            -- do your process here
			DECLARE @Id BIGINT
			DECLARE @DocID NVARCHAR(50)
			DECLARE @LineNo INT
			DECLARE @BinId BIGINT
			DECLARE @Qty MONEY
			SELECT 
				@Id = [Id],
				@DocID = DocId,
				@LineNo = [LineNo],
				@BinId = [BinId],
				@Qty = [Qty]
			FROM 
				@InvDocDTTemp 
			WHERE 
				RowNumber = @RowCount

			--VB SP START
			IF NOT EXISTS (SELECT lngId FROM tblOrderDocPGDTBin WHERE lngId = @Id)
				BEGIN
						INSERT INTO tblOrderDocPGDTBin
										(strOrdPGDocID
										,intLineNo
										,lngBinId
										,decQty)
						VALUES
										(@DocID
										,@LineNo
										,@BinId
										,@Qty
										)
				END
			ELSE
				BEGIN
						UPDATE tblOrderDocPGDTBin
						SET strOrdPGDocID = @DocID
							,intLineNo = @LineNo
							,lngBinId = @BinId
							,decQty = @Qty
						WHERE lngId = @Id
				END
			--VB SP END

            SET @RowCount = @RowCount + 1
        END
END
GO
/****** Object:  StoredProcedure [dbo].[OrderDocQDataDelete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE  PROCEDURE [dbo].[OrderDocQDataDelete]
 @DocNumber AS NVARCHAR(50)
AS
BEGIN
 DELETE FROM tblOrderDocQ WHERE strOrdDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[OrderDocQDTDataInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------------------------------------------------------

--------------------------------------------------
CREATE PROCEDURE [dbo].[OrderDocQDTDataInsert]
	@OrderDocQDTData OrderDocQuotesDTTableType READONLY
AS
BEGIN
INSERT INTO [dbo].[tblOrderDocQDT]
           ([strOrdDocID]
           ,[intLineNo]
           ,[strPartNumber]
           ,[strLocation]
           ,[strPartDesc]
           ,[decQty]
           ,[strUnit]
           ,[decCost]
           ,[decMarkUp]
           ,[decPriceEaExc]
           ,[decLineTotExc]
           ,[decLineTaxAmt]
           ,[decPriceEaInc]
           ,[decLineTotInc]
           ,[strTaxCode]
           ,[imgTaxObj]
           ,[strCurrency]
           ,[bitIsForeign]
           ,[decPriceEaExcF]
           ,[decLineTotExcF]
           ,[decLineTaxAmtF]
           ,[decEaIncTaxF]
           ,[decTotIncTaxF]
           ,[decTotalCost]
           ,[strInvField1]
           ,[strInvField2]
           ,[strInvField3]
           ,[strInvField4]
           ,[strInvField5]
           ,[strInvField6]
           ,[strLineField1]
           ,[strLineField2]
           ,[strLineField3]
           ,[strLineField4]
           ,[strLineField5]
           ,[strLineField6]
           ,[strLineField7]
           ,[strLineField8]
           ,[strLineField9]
           ,[strLineField10]
           ,[strLineField11]
           ,[strLineField12]
           ,[decLineDiscPerc]
           ,[decLineDiscAmt]
           ,[decLineDiscAmtF]
           ,[strVendName]
           ,[bitDiscountTax]
           ,[strSalesName]
           ,[strPartExtendedDesc]
           ,[decItemWeight]
           ,[decVolumetricWeight]
           ,[bitContainerItem]
           ,[bitDelCost]
           ,[intBillingMethod]
           ,[uidTransactionFieldID]
		   ,[uidContainerItem])
   
       SELECT * FROM @OrderDocQDTData          
END
GO
/****** Object:  StoredProcedure [dbo].[OrderDocQDTPrjInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------
----------------------------------------------------
CREATE PROCEDURE [dbo].[OrderDocQDTPrjInsert]
	@OrderDocQDTPrjData OrderDocQDTPrjTableType READONLY
AS
BEGIN
	INSERT INTO [dbo].[tblOrderDocQDTPrj]
           ([strOrdDocID]
           ,[intLineNo]
           ,[strProjNumber])
		   SELECT * FROM @OrderDocQDTPrjData
END 
GO
/****** Object:  StoredProcedure [dbo].[OrderInvoiceDocUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [OrderDocParcelsDimensionsInsert] ***********/

/*********** Start [OrderInvoiceDocUpdate] ***********/
CREATE PROCEDURE [dbo].[OrderInvoiceDocUpdate]
@DocNumber AS NVARCHAR(50),
@IsOrder AS BIT
AS
BEGIN
IF(@IsOrder=1)
	update tblOrderDoc set bitShipmentsAuditTrail = 1 where strOrdDocId=@DocNumber
	else
	update tblInvoiceDoc set bitShipmentsAuditTrail = 1 where strInvDocID=@DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[ParcelTypeInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [ParcelTypeUpdate] ***********/

/*********** Start [ParcelTypeInsert] ***********/
CREATE PROCEDURE [dbo].[ParcelTypeInsert]
(
	@ParcelType VARCHAR(50),
	@ParcelTypeDesc VARCHAR(100),
	@Mass MONEY,
	@Height MONEY,
	@Length MONEY,
	@Width MONEY,
	@IsInactive BIT
)
AS
BEGIN

	INSERT INTO dbo.tblParcelType (
		strParcelType
		,strParcelTypeDescription
		,decMass
		,decHeight
		,decLength
		,decWidth
		,bitInactive
		)
	VALUES (
		@ParcelType
		,@ParcelTypeDesc
		,@Mass
		,@Height
		,@Length
		,@Width
		,@IsInactive
		)

END
GO
/****** Object:  StoredProcedure [dbo].[ParcelTypeUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInventoryCustomer] ***********/

/*********** Start [ParcelTypeUpdate] ***********/
CREATE PROCEDURE [dbo].[ParcelTypeUpdate]
(
	@ParcelTypeOld VARCHAR(50),
	@ParcelType VARCHAR(50),
	@ParcelTypeDesc VARCHAR(100),
	@Mass MONEY,
	@Height MONEY,
	@Length MONEY,
	@Width MONEY,
	@IsInactive BIT
)
AS
BEGIN

	UPDATE dbo.tblParcelType
	SET strParcelType = @ParcelType
		,strParcelTypeDescription = @ParcelTypeDesc
		,decMass = @Mass
		,decHeight = @Height
		,decLength = @Length
		,decWidth = @Width
		,bitInactive = @IsInactive
	WHERE strParcelType = @ParcelTypeOld

END
GO
/****** Object:  StoredProcedure [dbo].[PaymentPlanDepositInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InvoiceDocREVInsert] ***********/

/*********** Start [PaymentPlanDepositInsert] ***********/
CREATE PROCEDURE [dbo].[PaymentPlanDepositInsert]
    @InvDocID AS NVARCHAR(50) ,
    @InvDocIDOld AS NVARCHAR(50)
AS
    BEGIN
        INSERT  INTO tblPaymentPlan
                SELECT  @InvDocID ,
                        Total ,
                        InsuranceRate ,
                        Deposit ,
                        InterestRate ,
                        InstallmentPeriod ,
                        InstallmentAmount ,
                        FirstInstallmentDate ,
                        LastInstallment ,
                        decFcPrtn ,
                        decFcLastPrtn ,
                        bitPmntContractAlive ,
                        decPenaltyInterestRate ,
                        strCurrency ,
                        bitIsForeign ,
                        decExchange ,
                        TotalF ,
                        InsuranceRateF ,
                        DepositF ,
                        InstallmentAmountF ,
                        LastInstallmentF ,
                        decFcPrtnF ,
                        decFcLastPrtnF
                FROM    tblPaymentPlan
                WHERE   strInvDocID = @InvDocIDOld
	
        INSERT  INTO tblPaymentPlanDeposit
                SELECT  @InvDocID ,
                        strPaymentTypeName ,
                        intGLNumber ,
                        decTotal ,
                        strReference ,
                        strCurrency ,
                        bitIsForeign ,
                        decExchange ,
                        decTotalF
                FROM    tblPaymentPlanDeposit
                WHERE   strInvDocID = @InvDocIDOld
    END
GO
/****** Object:  StoredProcedure [dbo].[PaymentPlanInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[PaymentPlanInsert] (
	@InvDocId NVARCHAR(50)
	,@Total MONEY
	,@InsuranceRate MONEY
	,@Deposit MONEY
	,@InstallmentAmount MONEY
	,@LastInstallment MONEY
	,@FCPrtn MONEY
	,@FCLastPrtn MONEY
	,@Currency NVARCHAR(3)
	,@IsForeign BIT
	,@Exchange DECIMAL(20, 6)
	,@TotalF MONEY
	,@InsuranceF MONEY
	,@DepositF MONEY
	,@InstallmentAmountF MONEY
	,@LastInstallmentF MONEY
	,@FcPrtnF MONEY
	,@FcLastPrtnF MONEY
	,@InterestRate MONEY
	,@InstallmentPeriod INT
	,@FirstInstallmentDate DATE
	,@CustomerName NVARCHAR(50)
	)
AS
BEGIN
	DECLARE @ArrPenalty AS DECIMAL

	DELETE
	FROM tblPaymentPlan
	WHERE strInvDocId = @InvDocId

	SELECT @ArrPenalty = decArrPenalty
	FROM tblCustomerCat
	WHERE strCustCategory = (
			SELECT strCustCategory
			FROM tblCustomers
			WHERE strCustName = @CustomerName
			)

	IF @ArrPenalty IS NULL
	BEGIN
		SET @ArrPenalty = 0
	END

	INSERT INTO tblPaymentPlan
	VALUES (
		@InvDocId
		,@Total
		,@InsuranceRate
		,@Deposit
		,@InterestRate
		,@InstallmentPeriod
		,@InstallmentAmount
		,@FirstInstallmentDate
		,@LastInstallment
		,@FCPrtn
		,@FCLastPrtn
		,1
		,@ArrPenalty
		,@Currency
		,@IsForeign
		,@Exchange
		,@TotalF
		,@InsuranceF
		,@DepositF
		,@InstallmentAmountF
		,@LastInstallmentF
		,@FcPrtnF
		,@FcLastPrtnF
		)
END

GO
/****** Object:  StoredProcedure [dbo].[PaymentPlanInsertFromExisting]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [TaxDTInsert] ***********/

/*********** Start [PaymentPlanInsertFromExisting] ***********/
CREATE PROCEDURE [dbo].[PaymentPlanInsertFromExisting]
(
	@DocNumber VARCHAR(50),
	@ReqDate AS DATETIME,
	@DocNumberOld VARCHAR(50)
)
AS
BEGIN
	INSERT INTO [dbo].[tblPaymentPlan] (
		[strInvDocID]
		,[Total]
		,[InsuranceRate]
		,[Deposit]
		,[InterestRate]
		,[InstallmentPeriod]
		,[InstallmentAmount]
		,[FirstInstallmentDate]
		,[LastInstallment]
		,[decFcPrtn]
		,[decFcLastPrtn]
		,[bitPmntContractAlive]
		,[decPenaltyInterestRate]
		--new added
		,[strCurrency]
        ,[bitIsForeign]
        ,[decExchange]
        ,[TotalF]
        ,[InsuranceRateF]
        ,[DepositF]
        ,[InstallmentAmountF]
        ,[LastInstallmentF]
        ,[decFcPrtnF]
        ,[decFcLastPrtnF]
		)
	SELECT @DocNumber															
		,Total																			
		,InsuranceRate
		,Deposit
		,InterestRate
		,InstallmentPeriod
		,InstallmentAmount
		--,FirstInstallmentDate
		,@ReqDate
		,LastInstallment
		,decFcPrtn
		,decFcLastPrtn
		,bitPmntContractAlive
		,decPenaltyInterestRate
		--new added
		,strCurrency
		,bitIsForeign
		,decExchange
		,TotalF
		,InsuranceRateF
		,DepositF
		,InstallmentAmountF
		,LastInstallmentF
		,decFcPrtnF
		,decFcLastPrtnF
	FROM tblPaymentPlan
	WHERE strInvDocID IN (@DocNumberOld)

	INSERT INTO [dbo].[tblPaymentPlanDeposit] (
		[strInvDocID]
		,[strPaymentTypeName]
		,[intGLNumber]
		,[decTotal]
		,[strReference]
		,[strCurrency]
        ,[bitIsForeign]
        ,[decExchange]
        ,[decTotalF]
		)
	SELECT @DocNumber
		,strPaymentTypeName
		,intGLNumber
		,decTotal
		,strReference
		,strCurrency
		,bitIsForeign
		,decExchange
		,decTotalF
	FROM tblPaymentPlanDeposit
	WHERE strInvDocID IN (@DocNumberOld)
END

GO
/****** Object:  StoredProcedure [dbo].[PaymentPlanInsertNew]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [PaymentPlanInsertFromExisting] ***********/

/*********** Start [PaymentPlanInsertNew] ***********/
CREATE PROCEDURE [dbo].[PaymentPlanInsertNew]
(
	@PaymentPlanData PaymentPlanDepositTableType READONLY,
	@DocNumber VARCHAR(50)
)
AS
BEGIN
	DELETE FROM tblPaymentPlanDeposit WHERE strInvDocID = @DocNumber

	INSERT INTO [dbo].[tblPaymentPlanDeposit] (
		[strInvDocID]
		,[strPaymentTypeName]
		,[intGLNumber]
		,[decTotal]
		,[strReference]
		,[strCurrency]
        ,[bitIsForeign]
		,[decExchange]
        ,[decTotalF]
		)
	SELECT * FROM @PaymentPlanData	
END
GO
/****** Object:  StoredProcedure [dbo].[PerformYearEnd]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[PerformYearEnd] (
	@dteCurrentYearEnds DATE
	,@dteCurrentYearBegan DATE
	,@bitEarlyTrans BIT
	,@dteEarliestAllowed DATE
	)
AS
BEGIN TRANSACTION

BEGIN TRY
	--Clear AccountsLY
	DELETE
	FROM tblAccountsLY

	--Copy Accounts to AccountsLY
	INSERT INTO tblAccountsLY
	SELECT [intGLNumber]
		,[strDesc]
		,[intAccType]
		,[intGroupCode]
		,[intAccClass]
		,[bitInactive]
		,[decOpenBalance]
		,[decBalance]
		,[decLYOpenBalance]
		,[decLYEndBalance]
		,[bitBank]
		,[bitRecon]
		,[bitInventory]
		,[bitBudget]
		,[bitUsed]
		,[bitUsedLY]
		,[bitLinkREarnings]
		,[bitLinkCEarnings]
		,[bitLinkAP]
		,[bitLinkPurDisc]
		,[bitLinkAR]
		,[bitLinkSalesDisc]
		,[bitLinkAssCosts]
		,[bitLinkAdjWriteOff]
		,[bitIsLinkedAccount]
		,[bitDefBank]
		,[bitLinkDeposit]
		,[bitLinkPrePay]
		,[strField1]
		,[strField2]
		,[strField3]
		,[strField4]
		,[strField5]
		,[strField6]
		,[bitLinkExc]
		,[bitAllowCenters]
		,[intCheqNumber]
		,[strCurrency]
		,[decOpenBalanceF]
		,[decBalanceF]
		,[decLYOpenBalanceF]
		,[decLYEndBalanceF]
		,[bitLinkGRV]
		,[bitLinkAddCost]
		,[bitLinkDelAdvice]
		,[bitLinkWIP]
		,[bitLinkManStandardCost]
		,[bitLinkWorkshopWIP]
		,[bitLinkGoodsInTransit]
		,[bitLinkARCustMast]
		,[bitLinkDepositCustMast]
		,[bitLinkAPVendMast]
		,[bitLinkPrepayVendMast]
	FROM tblAccounts

	--Update Used in tblAccounts
	UPDATE tblAccounts
	SET bitUsedLY = bitUsed

	UPDATE tblAccounts
	SET bitUsed = 0

	--Transfer balances to LY in accounts
	UPDATE tblAccounts
	SET decLYOpenBalance = decOpenBalance
		,decLYEndBalance = decBalance
		,decLYOpenBalanceF = decOpenBalanceF
		,decLYEndBalanceF = decBalanceF

	--Clear out expense and revenue accounts in accounts
	UPDATE tblAccounts
	SET decBalance = 0
		,decOpenBalance = 0
		,decBalanceF = 0
		,decOpenBalanceF = 0
	WHERE intAccType >= 4

	--Find Current Earnings Value
	DECLARE @decCurrEarn DECIMAL(20, 2)
		,@decCurrEarnF DECIMAL(20, 2)

	SELECT @decCurrEarn = decBalance
		,@decCurrEarnF = decBalanceF
	FROM tblAccounts
	WHERE bitLinkCEarnings = 1

	--Add current earnings to retained earnings.
	UPDATE tblAccounts
	SET decBalance = decBalance + @decCurrEarn
		,decBalanceF = decBalanceF + @decCurrEarnF
	WHERE bitLinkREarnings = 1

	--Zero out Current Earnings
	UPDATE tblAccounts
	SET decBalance = 0
		,decBalanceF = 0
	WHERE bitLinkCEarnings = 1

	--Copy Balance to Open Balance
	UPDATE tblAccounts
	SET decOpenBalance = decBalance
		,decOpenBalanceF = decBalanceF

	--Clear Out BudgetsLY
	DELETE
	FROM tblAcctBudgetsLY

	--Copy Budgets to BudgetsLY
	INSERT INTO tblAcctBudgetsLY
	SELECT *
	FROM tblAcctBudgets

	--Clear tblAccountsDeptLY
	DELETE
	FROM tblAccountsDeptLY

	--Copy tblAccountsDept to tblAccountsDeptLY
	INSERT INTO tblAccountsDeptLY
	SELECT *
	FROM tblAccountsDept

	--Update Used in tblAccounts
	UPDATE tblAccountsDept
	SET bitUsedLY = bitUsed

	UPDATE tblAccountsDept
	SET bitUsed = 0

	--Transfer balances to LY in accounts
	UPDATE tblAccountsDept
	SET decLYOpenBalance = decOpenBalance
		,decLYEndBalance = decBalance

	--Clear out expense and revenue accounts in accounts
	UPDATE tblAccountsDept
	SET decBalance = 0
		,decOpenBalance = 0
	WHERE intGLNumber IN (
			SELECT intGLNumber
			FROM tblAccounts
			WHERE intAccType >= 4
			)

	--Find Current Earnings Value
	DECLARE @decCurrentEarning DECIMAL(20, 2)

	SELECT @decCurrentEarning = decBalance
	FROM tblAccountsDept
	WHERE intGLNumber IN (
			SELECT intGLNumber
			FROM tblAccounts
			WHERE bitLinkCEarnings = 1
			)

	--Add current earnings to retained earnings
	UPDATE tblAccountsDept
	SET decBalance = decBalance + @decCurrentEarning
	WHERE intGLNumber IN (
			SELECT intGLNumber
			FROM tblAccounts
			WHERE bitLinkREarnings = 1
			)

	--Zero out Current Earnings
	UPDATE tblAccountsDept
	SET decBalance = 0
	WHERE intGLNumber IN (
			SELECT intGLNumber
			FROM tblAccounts
			WHERE bitLinkCEarnings = 1
			)

	--Copy Balance to Open Balance
	UPDATE tblAccountsDept
	SET decOpenBalance = decBalance

	--Zero out Current Earnings
	UPDATE tblAccountsDept
	SET decBalance = 0

	--Find current period close date
	DECLARE @dtePeriod DATE

	SELECT @dtePeriod = dtePeriodClose
	FROM tblCompany

	--Update Dates in Company Table
	DECLARE @dteProposedYearStart DATE = DATEADD(dd, 1, @dteCurrentYearEnds)
	DECLARE @dteProposedYearEnd DATE = DATEADD(yy, 1, @dteProposedYearStart)
	DECLARE @dteEarliest DATE

	SET @dteProposedYearEnd = DATEADD(dd, - 1, @dteProposedYearEnd)

	IF (@bitEarlyTrans <> 1)
	BEGIN
		IF (@dteEarliestAllowed < @dteCurrentYearBegan)
		BEGIN
			SET @dteEarliest = @dteCurrentYearBegan
		END
		ELSE
		BEGIN
			SET @dteEarliest = @dteEarliestAllowed
		END
	END
	ELSE
	BEGIN
		SET @dteEarliest = @dteProposedYearStart
	END

	IF (@dtePeriod < @dteCurrentYearBegan)
	BEGIN
		SET @dtePeriod = @dteCurrentYearBegan
	END

	UPDATE tblCompany
	SET dteLYStarted = @dteCurrentYearBegan
		,dteLYEnded = @dteCurrentYearEnds
		,dteYearStarts = @dteProposedYearStart
		,dteYearEnds = @dteProposedYearEnd
		,dteEarliestTran = @dteEarliest
		,dtePeriodClose = @dtePeriod

	--Clear YTD purch for customers
	UPDATE tblCustomers
	SET decYTDPurch = 0

	--Clear YTD purch for vendors
	UPDATE tblVendors
	SET decYTDPurch = 0

	--Clear YTD Purch for sales persons
	UPDATE tblSalesPersons
	SET decYTDSales = 0

	--Clear Journal and JournalEnt
	DELETE
	FROM tblJournalLY

	DELETE
	FROM tblJournalEntLY

	--Clear CentersLY and CenterEntLY
	DELETE
	FROM tblCentersLY

	DELETE
	FROM tblCenterEntLY

	--Copy Centers to CentersLY
	INSERT INTO tblCentersLY
	SELECT strLvl1
		  ,strLvl2
		  ,strLvl3
		  ,strLvl4
		  ,strLvl5
		  ,decOpenBalanceR
		  ,decOpenBalanceE
		  ,decBudProfit
		  ,bitBudgetR
		  ,decPeriod1R
		  ,decPeriod2R
		  ,decPeriod3R
		  ,decPeriod4R
		  ,decPeriod5R
		  ,decPeriod6R
		  ,decPeriod7R
		  ,decPeriod8R
		  ,decPeriod9R
		  ,decPeriod10R
		  ,decPeriod11R
		  ,decPeriod12R
		  ,bitBudgetE
		  ,decPeriod1E
		  ,decPeriod2E
		  ,decPeriod3E
		  ,decPeriod4E
		  ,decPeriod5E
		  ,decPeriod6E
		  ,decPeriod7E
		  ,decPeriod8E
		  ,decPeriod9E
		  ,decPeriod10E
		  ,decPeriod11E
		  ,decPeriod12E
		  ,bitInactive
		  ,uidCenterID
	FROM tblCenters

	--Copy Journal and JournalEnt to LY
	INSERT INTO tblJournalLY
	SELECT *
	FROM tblJournal

	INSERT INTO tblJournalEntLY
	SELECT *
	FROM tblJournalEnt

	--Copy CenterEnt to CenterEntLY
	INSERT INTO tblCenterEntLY
	SELECT uidCenterID
		,lngJourID
		,intLineNum
		,decAmount
		,decDebits
		,decCredits
		,strComment
	FROM tblCenterEnt

	--Clear out Journal and JournalEnt
	DELETE
	FROM tblJournal

	DELETE
	FROM tblJournalEnt

	--Clear Out CenterEnt
	DELETE
	FROM tblCenterEnt

	--Update Inventory Table
	UPDATE tblInv
	SET decSumValYearStart = decSumValue
		,decSumQtyYearStart = decSumOnHand
		,decSumAmtSoldLY = decSumAmtSoldYTD
		,decSumQtySoldLY = decSumQtySoldYTD
		,decSumCOGSLY = decSumCOGSYTD
		,intSumNumTransLY = intSumNumTransYTD

	--Clear YTD from Inventory table
	UPDATE tblInv
	SET decSumAmtSoldYTD = 0
		,decSumQtySoldYTD = 0
		,decSumCOGSYTD = 0
		,intSumNumTransYTD = 0

	SELECT @dteProposedYearStart AS 'ProposedYearStart'
		,@dteProposedYearEnd AS 'ProposedYearEnd'
		,@dteEarliest AS 'Earliest'

	IF @@TRANCOUNT > 0
		COMMIT TRANSACTION
END TRY

BEGIN CATCH
	IF @@TRANCOUNT > 0
		ROLLBACK TRANSACTION

	DECLARE @ErrMsg NVARCHAR(4000)
		,@ErrSeverity INT

	SELECT @ErrMsg = ERROR_MESSAGE()
		,@ErrSeverity = ERROR_SEVERITY()

	RAISERROR (
			@ErrMsg
			,@ErrSeverity
			,1
			)
END CATCH
GO
/****** Object:  StoredProcedure [dbo].[PickTicketDTData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetSessionFuture] ***********/

/*********** Start [PickTicketDTData] ***********/
CREATE PROCEDURE [dbo].[PickTicketDTData]
	@DocumentID as nvarchar(50)
AS
BEGIN
	SELECT intLineNo AS [LineNo]
		,strPartNumber AS PartNumber
		,SUM(decQtyPicked) AS QuantityPicked
		,STUFF((
				SELECT ',' + A.strPkTkDocID
				FROM (
					SELECT intLineNo
						,strPartNumber
						,strPkTkDocID
					FROM tblPickTickets
					WHERE strOrdDocID = @DocumentID
						AND bitPicked = 1
						AND bitDA = 0
					) A
				WHERE A.intLineNo = B.intLineNo
					AND A.strPartNumber = B.strPartNumber
				FOR XML PATH('')
				), 1, 1, '') AS PkTkDocID
	FROM tblPickTicketsDT B
	WHERE strPkTkDocID IN (
			SELECT strPkTkDocID
			FROM tblPickTickets
			WHERE strOrdDocID = @DocumentID
				AND bitPicked = 1
				AND bitDA = 0
			)
	GROUP BY intLineNo
		,strPartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[PickTicketsDTBin_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[PickTicketsDTBin_List]
(
	-- Add the parameters for the stored procedure here
	@PkTkDocID nvarchar(50)
)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT	
		lngID AS 'Id',
		strPkTkDocID AS 'DocId',
		intLineNo AS 'LineNo',
		lngBinID AS 'BinId',
		decQty AS 'Qty',
		bitPickingBin AS 'PickingBin',
		ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblPickTicketsDTBin.lngBinId),'') AS 'BinCode',
		--Mobile
		lngID AS 'ID',
		strPkTkDocID AS 'DocId',
		intLineNo AS 'LineNumber',
		lngBinID AS 'BinID',
		decQty AS 'Quantity',
		bitPickingBin AS 'IsPickingBin',
		ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblPickTicketsDTBin.lngBinId),'') AS 'BinCode'
	FROM 
		tblPickTicketsDTBin 
	WHERE 
		strPkTkDocID = @PkTkDocID
END
GO
/****** Object:  StoredProcedure [dbo].[PickTicketsDTBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [PickTicketsDTBin_List] ***********/

/*********** Start [PickTicketsDTBin_Save] ***********/
CREATE PROCEDURE [dbo].[PickTicketsDTBin_Save]
( 
	-- Add the parameters for the stored procedure here   
	@InvDocDTBinTable InvDocDTBinTableType READONLY
)
AS  
BEGIN   
-- SET NOCOUNT ON added to prevent extra result sets from   -- interfering with SELECT statements.   
SET NOCOUNT ON;        
-- Insert statements for procedure here   
	 
			INSERT INTO [dbo].[tblPickTicketsDTBin]         
				([strPkTkDocID] ,[intLineNo] ,[lngBinId] ,[decQty],[bitPickingBin] )      
			SELECT
				[DocId],
				[LineNo],
				[BinId],
				[Qty],
				[PickingBin]
				FROM 
			@InvDocDTBinTable;    
END
GO
/****** Object:  StoredProcedure [dbo].[PickTicketsDTSerialInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********End [PickTicketsDTUpdate]***********/

/**********Start [PickTicketsDTSerialInsert]***************************/

CREATE PROCEDURE [dbo].[PickTicketsDTSerialInsert]
(
	 @DocID	AS NVARCHAR(50)
	,@LineNo AS INT
	,@SerialNumber AS NVARCHAR(100)
	,@Qty AS MONEY
	,@Unit AS NVARCHAR(15)
	,@IsExpiryDate	AS BIT
	,@ExpiryDate	AS SMALLDATETIME
	,@SerialLotType AS INT
	,@BinID	AS BIGINT
)
AS
BEGIN
	INSERT INTO tblPickTicketsDTSerial
	(
		strPkTkDocID
		,intLineNo
		,strSerialNumber
		,decQty
		,strUnit
		,bitExpiryDate
		,dteExpiryDate
		,intSerialLotType
		,lngBinID
	)
	VALUES
	(
		@DocID
		,@LineNo
		,@SerialNumber
		,@Qty
		,@Unit
		,@IsExpiryDate
		,@ExpiryDate
		,@SerialLotType
		,@BinID
	 )
END        
GO
/****** Object:  StoredProcedure [dbo].[PickTicketsDTUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*************End [InvSerialExtStockPickInsert]************************/

/*******Start [PickTicketsDTUpdate]***********/
CREATE PROCEDURE [dbo].[PickTicketsDTUpdate]
(
	@QuantityPicked AS MONEY,
	@DocID AS NVARCHAR(50),
	@LineNo AS INT
)
AS
BEGIN
	UPDATE tblPickTicketsDT SET decQtyPicked = @QuantityPicked WHERE strPkTkDocID = @DocID AND intLineNo = @LineNo
END
GO
/****** Object:  StoredProcedure [dbo].[PickTicketsUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*************End [InsertStockPickDetails]**************************/

/*************Start [PickTicketsUpdate]**********************/
CREATE PROCEDURE [dbo].[PickTicketsUpdate]  
 @UserName AS NVARCHAR(40),  
 @SystemDate AS SMALLDATETIME,  
 @DocumentDate AS DATETIME,  
 @DocumentNumber AS NVARCHAR(100),  
 @PickTicketNotes AS NVARCHAR(510),  
 @InvTrackingID AS BIGINT   
AS  
BEGIN  
 UPDATE tblPickTickets   
 SET  
  strUserName = @UserName,  
  dteSystemDate = @SystemDate,  
  bitPicked = 1,  
  dtePicked = @DocumentDate,   
  strNotes = @PickTicketNotes,  
  lngInvTrackId= @InvTrackingID  
 WHERE   
  strPkTkDocID = @DocumentNumber  
  
 DELETE FROM tblPickTicketsDTSerial WHERE strPkTkDocID = @DocumentNumber  
END
GO
/****** Object:  StoredProcedure [dbo].[PODsSalectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [UpdateInvoiceDocNoPODRequired] **********/

---------------------------------

CREATE  PROCEDURE [dbo].[PODsSalectAll] @StartDate AS DATETIME
	,@FinishDate AS DATETIME
	,@UserName		as nvarchar(20)
	,@BPToolsMode	as bit
AS
BEGIN
IF @BPToolsMode = 1
		BEGIN 
	         SELECT A.strInvDocID AS InvDocID
		,A.lngInvTrackID AS InvTrackID
		,A.lngJourID AS JourID
		,isnull(A.dteSystemDate, getdate()) AS SystemDate
		,isnull(A.dteJournalDate, getdate()) AS JournalDate
		,isnull(A.dteRequired, getdate()) AS [Required]
		,isnull(A.strUserName, '') AS UserName
		,isnull(A.strCustName, '') AS CustName
		,[dbo].[GetCustomerDesc](isnull(A.strCustName, '')) AS CustDesc
		,isnull(A.strSoldTo, '') AS SoldTo
		,isnull(A.strShipTo, '') AS ShipTo
		,isnull(A.strReference, '') AS Reference
		,isnull(A.decSubTotal, 0) AS SubTotal
		,isnull(A.decVAT, 0) AS VAT
		,isnull(A.decTotal, 0) AS Total
		,isnull(A.bitFromSO, 0) AS FromSO
		,isnull(A.strOrdDocID, '') AS OrdDocID
		,isnull(A.bitHistoryTrans, 0) AS HistoryTrans
		,isnull(A.strNotes, '') AS Notes
		,isnull(A.bitPrinted, 0) AS Printed
		,isnull(A.bitEmailed, 0) AS Emailed
		,isnull(A.intPaidBy, 0) AS PaidBy
		,isnull(A.intAccount, 0) AS Account
		,isnull(A.strSalesName, '') AS SalesName
		,isnull(A.strAddInfo, '') AS AddInfo
		,isnull(A.bitReserved, 0) AS Reserved
		,isnull(A.strCurrency, '') AS Currency
		,isnull(A.bitIsForeign, 0) AS IsForeign
		,isnull(A.decSubTotalF, 0) AS SubTotalF
		,isnull(A.decVATF, 0) AS VATF
		,isnull(A.decTotalF, 0) AS TotalF
		,isnull(A.decExchange, 0) AS Exchange
		,isnull(A.strTerm, '') AS Term
		,isnull(A.intDept, 0) AS Dept
		,ISNULL(A.strField1, '') AS Field1
		,ISNULL(A.strField2, '') AS Field2
		,ISNULL(A.strField3, '') AS Field3
		,ISNULL(A.strField4, '') AS Field4
		,ISNULL(A.strField5, '') AS Field5
		,ISNULL(A.strField6, '') AS Field6
		,ISNULL(A.strField7, '') AS Field7
		,ISNULL(A.strField8, '') AS Field8
		,ISNULL(A.strField9, '') AS Field9
		,ISNULL(A.strField10, '') AS Field10
		,ISNULL(A.strField11, '') AS Field11
		,ISNULL(A.strField12, '') AS Field12
		,ISNULL(A.strSubFormated, '') AS SubFormated
		,ISNULL(A.strVATFormatted, '') AS VATFormatted
		,ISNULL(A.strTotFormatted, '') AS TotFormatted
		,ISNULL(A.dteField13, 0) AS Field13
		,ISNULL(A.dteField14, 0) AS Field14
		,ISNULL(A.decDiscPerc, 0) AS DiscPerc
		,ISNULL(A.decDiscAmt, 0) AS DiscAmt
		,ISNULL(A.decDiscAmtF, 0) AS DiscAmtF
		,isnull(A.strDiscFormatted, '') AS DiscFormatted
		,isnull(A.strOrdFQDocID, '') AS OrdFQDocID
		,isnull(A.strStatusTypeCode, '') AS StatusTypeCode
		,isnull(A.strCNReasonCode, '') AS CNReasonCode
		,ISNULL(A.bitBookmark, 0) AS Bookmark
		,ISNULL(A.dteSystemDateTime, GETDATE()) AS SystemDateTime
		,ISNULL(A.strPaidBy, '') AS PaidByText
		,ISNULL(A.intSentDoc, 0) AS SentDoc
		,ISNULL(A.strVAT, '') AS VATText
		,ISNULL(A.strDelMethodCode, '') AS DelMethodCode
		,ISNULL(A.decTotalWeight, 0) AS TotalWeight
		,ISNULL(A.decTotalVolWeight, 0) AS TotalVolWeight
		,ISNULL(A.decDeliveryCost, 0) AS DeliveryCost
		,ISNULL(A.decDeliveryCostF, 0) AS DeliveryCostF
		,ISNULL(A.strDeliveryCostFormatted, '') AS DeliveryCostFormatted
		,ISNULL(A.bitShipmentsAuditTrail, 0) AS ShipmentsAuditTrail
		,ISNULL(A.intRevisionNumber, 0) AS RevisionNumber
		,ISNULL(A.strStoreNumber, '') AS StoreNumber
		,ISNULL(A.strEDI, '') AS EDI
		,ISNULL(A.bitNoPODRequired, 0) AS IsNoPODRequired
		,ISNULL(STUFF((
					SELECT DISTINCT CHAR(10) + replace(isnull(strComment, ''), 'Delivery Advice Conversion ', '') + '(' + Convert(NVARCHAR(10), (
								SELECT count(*)
								FROM tblDocuments
								WHERE strDocumentNumber = replace(isnull(strComment, ''), 'Delivery Advice Conversion ', '')
									AND strType = 'POD'
								)) + ')'
					FROM [tblInvTracking] B
					WHERE B.strSource = A.strInvDocID
						AND strComment LIKE '%Delivery Advice Conversion%'
					FOR XML PATH('')
					), 1, 1, ''), '') AS DeliveryAdvice
	FROM tblInvoiceDoc A
	WHERE A.dteJournalDate BETWEEN @StartDate
			AND @FinishDate
	
	UNION
	
	SELECT '' AS InvDocID
		,A.lngInvTrackID AS InvTrackID
		,A.lngJourID AS JourID
		,isnull(A.dteSystemDate, getdate()) AS SystemDate
		,isnull(A.dteJournalDate, getdate()) AS JournalDate
		,isnull(A.dteRequired, getdate()) AS Required
		,isnull(A.strUserName, '') AS UserName
		,isnull(A.strCustName, '') AS CustName
		,[dbo].[GetCustomerDesc](isnull(A.strCustName, '')) AS CustDesc
		,isnull(A.strSoldTo, '') AS SoldTo
		,isnull(A.strShipTo, '') AS ShipTo
		,isnull(A.strReference, '') AS Reference
		,isnull(A.decSubTotal, 0) AS SubTotal
		,isnull(A.decVAT, 0) AS VAT
		,isnull(A.decTotal, 0) AS Total
		,isnull(A.bitFromSO, 0) AS FromSO
		,isnull(A.strOrdDocID, '') AS OrdDocID
		,Cast(0 AS BIT) AS HistoryTrans
		,isnull(A.strNotes, '') AS Notes
		,isnull(A.bitPrinted, 0) AS Printed
		,isnull(A.bitEmailed, 0) AS Emailed
		,0 AS PaidBy
		,Cast(0 AS NVARCHAR) AS Account
		,isnull(A.strSalesName, '') AS SalesName
		,isnull(A.strAddInfo, '') AS AddInfo
		,Cast(0 AS BIT) AS Reserved
		,isnull(A.strCurrency, '') AS Currency
		,isnull(A.bitIsForeign, 0) AS IsForeign
		,isnull(A.decSubTotalF, 0) AS SubTotalF
		,isnull(A.decVATF, 0) AS VATF
		,isnull(A.decTotalF, 0) AS TotalF
		,isnull(A.decExchange, 0) AS Exchange
		,isnull(A.strTerm, '') AS Term
		,isnull(A.intDept, 0) AS Dept
		,ISNULL(A.strField1, '') AS Field1
		,ISNULL(A.strField2, '') AS Field2
		,ISNULL(A.strField3, '') AS Field3
		,ISNULL(A.strField4, '') AS Field4
		,ISNULL(A.strField5, '') AS Field5
		,ISNULL(A.strField6, '') AS Field6
		,ISNULL(A.strField7, '') AS Field7
		,ISNULL(A.strField8, '') AS Field8
		,ISNULL(A.strField9, '') AS Field9
		,ISNULL(A.strField10, '') AS Field10
		,ISNULL(A.strField11, '') AS Field11
		,ISNULL(A.strField12, '') AS Field12
		,ISNULL(A.strSubFormated, '') AS SubFormated
		,ISNULL(A.strVATFormatted, '') AS VATFormatted
		,ISNULL(A.strTotFormatted, '') AS TotFormatted
		,ISNULL(A.dteField13, 0) AS Field13
		,ISNULL(A.dteField14, 0) AS Field14
		,ISNULL(A.decDiscPerc, 0) AS DiscPerc
		,ISNULL(A.decDiscAmt, 0) AS DiscAmt
		,ISNULL(A.decDiscAmtF, 0) AS DiscAmtF
		,isnull(A.strDiscFormatted, '') AS DiscFormatted
		,isnull(A.strOrdFQDocID, '') AS OrdFQDocID
		,isnull(A.strStatusTypeCode, '') AS StatusTypeCode
		,'' AS CNReasonCode
		,ISNULL(A.bitBookmark, 0) AS Bookmark
		,GETDATE() AS SystemDateTime
		,'' AS PaidByText
		,0 AS SentDoc
		,'' AS VATText
		,ISNULL(A.strDelMethodCode, '') AS DelMethodCode
		,ISNULL(A.decTotalWeight, 0) AS TotalWeight
		,ISNULL(A.decTotalVolWeight, 0) AS TotalVolWeight
		,ISNULL(A.decDeliveryCost, 0) AS DeliveryCost
		,ISNULL(A.decDeliveryCostF, 0) AS DeliveryCostF
		,ISNULL(A.strDeliveryCostFormatted, '') AS DeliveryCostFormatted
		,Cast(0 AS BIT) AS ShipmentsAuditTrail
		,ISNULL(A.intRevisionNumber, 0) AS RevisionNumber
		,ISNULL(A.strStoreNumber, '') AS StoreNumber
		,ISNULL(A.strEDI, '') AS EDI
		,Cast(0 AS BIT) AS IsNoPODRequired
		,A.strOrdDADocID AS DeliveryAdvice
	FROM [dbo].[tblOrderDocDA] A
	WHERE A.strOrdDADocID NOT IN (
			SELECT rtrim(ltrim(replace(strComment, 'Delivery Advice Conversion ', '')))
			FROM tblInvTracking
			WHERE strComment LIKE '%Delivery Advice Conversion %'
			)
		AND A.dteJournalDate BETWEEN @StartDate
			AND @FinishDate
        END
ELSE
        BEGIN
  SELECT A.strInvDocID AS InvDocID
		,A.lngInvTrackID AS InvTrackID
		,A.lngJourID AS JourID
		,isnull(A.dteSystemDate, getdate()) AS SystemDate
		,isnull(A.dteJournalDate, getdate()) AS JournalDate
		,isnull(A.dteRequired, getdate()) AS [Required]
		,isnull(A.strUserName, '') AS UserName
		,isnull(A.strCustName, '') AS CustName
		,[dbo].[GetCustomerDesc](isnull(A.strCustName, '')) AS CustDesc
		,isnull(A.strSoldTo, '') AS SoldTo
		,isnull(A.strShipTo, '') AS ShipTo
		,isnull(A.strReference, '') AS Reference
		,isnull(A.decSubTotal, 0) AS SubTotal
		,isnull(A.decVAT, 0) AS VAT
		,isnull(A.decTotal, 0) AS Total
		,isnull(A.bitFromSO, 0) AS FromSO
		,isnull(A.strOrdDocID, '') AS OrdDocID
		,isnull(A.bitHistoryTrans, 0) AS HistoryTrans
		,isnull(A.strNotes, '') AS Notes
		,isnull(A.bitPrinted, 0) AS Printed
		,isnull(A.bitEmailed, 0) AS Emailed
		,isnull(A.intPaidBy, 0) AS PaidBy
		,isnull(A.intAccount, 0) AS Account
		,isnull(A.strSalesName, '') AS SalesName
		,isnull(A.strAddInfo, '') AS AddInfo
		,isnull(A.bitReserved, 0) AS Reserved
		,isnull(A.strCurrency, '') AS Currency
		,isnull(A.bitIsForeign, 0) AS IsForeign
		,isnull(A.decSubTotalF, 0) AS SubTotalF
		,isnull(A.decVATF, 0) AS VATF
		,isnull(A.decTotalF, 0) AS TotalF
		,isnull(A.decExchange, 0) AS Exchange
		,isnull(A.strTerm, '') AS Term
		,isnull(A.intDept, 0) AS Dept
		,ISNULL(A.strField1, '') AS Field1
		,ISNULL(A.strField2, '') AS Field2
		,ISNULL(A.strField3, '') AS Field3
		,ISNULL(A.strField4, '') AS Field4
		,ISNULL(A.strField5, '') AS Field5
		,ISNULL(A.strField6, '') AS Field6
		,ISNULL(A.strField7, '') AS Field7
		,ISNULL(A.strField8, '') AS Field8
		,ISNULL(A.strField9, '') AS Field9
		,ISNULL(A.strField10, '') AS Field10
		,ISNULL(A.strField11, '') AS Field11
		,ISNULL(A.strField12, '') AS Field12
		,ISNULL(A.strSubFormated, '') AS SubFormated
		,ISNULL(A.strVATFormatted, '') AS VATFormatted
		,ISNULL(A.strTotFormatted, '') AS TotFormatted
		,ISNULL(A.dteField13, 0) AS Field13
		,ISNULL(A.dteField14, 0) AS Field14
		,ISNULL(A.decDiscPerc, 0) AS DiscPerc
		,ISNULL(A.decDiscAmt, 0) AS DiscAmt
		,ISNULL(A.decDiscAmtF, 0) AS DiscAmtF
		,isnull(A.strDiscFormatted, '') AS DiscFormatted
		,isnull(A.strOrdFQDocID, '') AS OrdFQDocID
		,isnull(A.strStatusTypeCode, '') AS StatusTypeCode
		,isnull(A.strCNReasonCode, '') AS CNReasonCode
		,ISNULL(A.bitBookmark, 0) AS Bookmark
		,ISNULL(A.dteSystemDateTime, GETDATE()) AS SystemDateTime
		,ISNULL(A.strPaidBy, '') AS PaidByText
		,ISNULL(A.intSentDoc, 0) AS SentDoc
		,ISNULL(A.strVAT, '') AS VATText
		,ISNULL(A.strDelMethodCode, '') AS DelMethodCode
		,ISNULL(A.decTotalWeight, 0) AS TotalWeight
		,ISNULL(A.decTotalVolWeight, 0) AS TotalVolWeight
		,ISNULL(A.decDeliveryCost, 0) AS DeliveryCost
		,ISNULL(A.decDeliveryCostF, 0) AS DeliveryCostF
		,ISNULL(A.strDeliveryCostFormatted, '') AS DeliveryCostFormatted
		,ISNULL(A.bitShipmentsAuditTrail, 0) AS ShipmentsAuditTrail
		,ISNULL(A.intRevisionNumber, 0) AS RevisionNumber
		,ISNULL(A.strStoreNumber, '') AS StoreNumber
		,ISNULL(A.strEDI, '') AS EDI
		,ISNULL(A.bitNoPODRequired, 0) AS IsNoPODRequired
		,ISNULL(STUFF((
					SELECT DISTINCT CHAR(10) + replace(isnull(strComment, ''), 'Delivery Advice Conversion ', '') + '(' + Convert(NVARCHAR(10), (
								SELECT count(*)
								FROM tblDocuments
								WHERE strDocumentNumber = replace(isnull(strComment, ''), 'Delivery Advice Conversion ', '')
									AND strType = 'POD'
								)) + ')'
					FROM [tblInvTracking] B
					WHERE B.strSource = A.strInvDocID
						AND strComment LIKE '%Delivery Advice Conversion%'
					FOR XML PATH('')
					), 1, 1, ''), '') AS DeliveryAdvice
	FROM tblInvoiceDoc A
	WHERE A.dteJournalDate BETWEEN @StartDate
			AND @FinishDate
			AND (A.strCustName IN (SELECT strCustName 
								   FROM tblCustomers
								   WHERE (strCustCategory IN (SELECT tblCustomerCat.strCustCategory 
															 FROM tblCustomerCat 
															 LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory 
															 WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) 
																		   FROM tblCustomerCatSec 
																		   WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 
																	OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) 
																				FROM tblCustomerCatSec 
																				WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 
																		AND tblCustomerCatSec.strUserName = @UserName)))))
	
	
	UNION
	
	SELECT '' AS InvDocID
		,A.lngInvTrackID AS InvTrackID
		,A.lngJourID AS JourID
		,isnull(A.dteSystemDate, getdate()) AS SystemDate
		,isnull(A.dteJournalDate, getdate()) AS JournalDate
		,isnull(A.dteRequired, getdate()) AS Required
		,isnull(A.strUserName, '') AS UserName
		,isnull(A.strCustName, '') AS CustName
		,[dbo].[GetCustomerDesc](isnull(A.strCustName, '')) AS CustDesc
		,isnull(A.strSoldTo, '') AS SoldTo
		,isnull(A.strShipTo, '') AS ShipTo
		,isnull(A.strReference, '') AS Reference
		,isnull(A.decSubTotal, 0) AS SubTotal
		,isnull(A.decVAT, 0) AS VAT
		,isnull(A.decTotal, 0) AS Total
		,isnull(A.bitFromSO, 0) AS FromSO
		,isnull(A.strOrdDocID, '') AS OrdDocID
		,Cast(0 AS BIT) AS HistoryTrans
		,isnull(A.strNotes, '') AS Notes
		,isnull(A.bitPrinted, 0) AS Printed
		,isnull(A.bitEmailed, 0) AS Emailed
		,0 AS PaidBy
		,Cast(0 AS NVARCHAR) AS Account
		,isnull(A.strSalesName, '') AS SalesName
		,isnull(A.strAddInfo, '') AS AddInfo
		,Cast(0 AS BIT) AS Reserved
		,isnull(A.strCurrency, '') AS Currency
		,isnull(A.bitIsForeign, 0) AS IsForeign
		,isnull(A.decSubTotalF, 0) AS SubTotalF
		,isnull(A.decVATF, 0) AS VATF
		,isnull(A.decTotalF, 0) AS TotalF
		,isnull(A.decExchange, 0) AS Exchange
		,isnull(A.strTerm, '') AS Term
		,isnull(A.intDept, 0) AS Dept
		,ISNULL(A.strField1, '') AS Field1
		,ISNULL(A.strField2, '') AS Field2
		,ISNULL(A.strField3, '') AS Field3
		,ISNULL(A.strField4, '') AS Field4
		,ISNULL(A.strField5, '') AS Field5
		,ISNULL(A.strField6, '') AS Field6
		,ISNULL(A.strField7, '') AS Field7
		,ISNULL(A.strField8, '') AS Field8
		,ISNULL(A.strField9, '') AS Field9
		,ISNULL(A.strField10, '') AS Field10
		,ISNULL(A.strField11, '') AS Field11
		,ISNULL(A.strField12, '') AS Field12
		,ISNULL(A.strSubFormated, '') AS SubFormated
		,ISNULL(A.strVATFormatted, '') AS VATFormatted
		,ISNULL(A.strTotFormatted, '') AS TotFormatted
		,ISNULL(A.dteField13, 0) AS Field13
		,ISNULL(A.dteField14, 0) AS Field14
		,ISNULL(A.decDiscPerc, 0) AS DiscPerc
		,ISNULL(A.decDiscAmt, 0) AS DiscAmt
		,ISNULL(A.decDiscAmtF, 0) AS DiscAmtF
		,isnull(A.strDiscFormatted, '') AS DiscFormatted
		,isnull(A.strOrdFQDocID, '') AS OrdFQDocID
		,isnull(A.strStatusTypeCode, '') AS StatusTypeCode
		,'' AS CNReasonCode
		,ISNULL(A.bitBookmark, 0) AS Bookmark
		,GETDATE() AS SystemDateTime
		,'' AS PaidByText
		,0 AS SentDoc
		,'' AS VATText
		,ISNULL(A.strDelMethodCode, '') AS DelMethodCode
		,ISNULL(A.decTotalWeight, 0) AS TotalWeight
		,ISNULL(A.decTotalVolWeight, 0) AS TotalVolWeight
		,ISNULL(A.decDeliveryCost, 0) AS DeliveryCost
		,ISNULL(A.decDeliveryCostF, 0) AS DeliveryCostF
		,ISNULL(A.strDeliveryCostFormatted, '') AS DeliveryCostFormatted
		,Cast(0 AS BIT) AS ShipmentsAuditTrail
		,ISNULL(A.intRevisionNumber, 0) AS RevisionNumber
		,ISNULL(A.strStoreNumber, '') AS StoreNumber
		,ISNULL(A.strEDI, '') AS EDI
		,Cast(0 AS BIT) AS IsNoPODRequired
		,A.strOrdDADocID AS DeliveryAdvice
	FROM [dbo].[tblOrderDocDA] A
	WHERE A.strOrdDADocID NOT IN (
			SELECT rtrim(ltrim(replace(strComment, 'Delivery Advice Conversion ', '')))
			FROM tblInvTracking
			WHERE strComment LIKE '%Delivery Advice Conversion %'
			)
		AND A.dteJournalDate BETWEEN @StartDate
			AND @FinishDate
			AND (A.strCustName IN (SELECT strCustName
								   FROM tblCustomers
								   WHERE (strCustCategory IN (SELECT tblCustomerCat.strCustCategory 
															 FROM tblCustomerCat 
															 LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory 
															 WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) 
																		   FROM tblCustomerCatSec 
																		   WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 
																	OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) 
																				FROM tblCustomerCatSec 
																				WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 
																		AND tblCustomerCatSec.strUserName = @UserName)))))
END
END
GO
/****** Object:  StoredProcedure [dbo].[POSBOMSave]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[POSBOMSave]      
	(      
	 @InvDocId nvarchar(50),    
	 @LineNo int,    
	 @MainLineNo int,    
	 @PartNumber nvarchar(50),    
	 @Location nvarchar(10),    
	 @Qty money,    
	 @BinId bigint=0,    
	 @TransactionType TINYINT,
	 @BOMQty money,
	 @GLCalc money     
	)      
	AS      
	BEGIN       
	 SET NOCOUNT ON;      
      
   if(@TransactionType= 0 or @TransactionType =4) --Invoice   
	  Begin    
	  INSERT INTO tblInvoiceDocDTBOM (strInvDocID, intLineNo, intMainLineNo, strPartItemNumber, strLocation, decQty, lngBinId, decBOMQty,decGLCalc) 
	  VALUES  (@InvDocId,@LineNo,@MainLineNo,@PartNumber,@Location,@Qty,@BinId,@BOMQty,@GLCalc)    
	  END    
    
	  if(@TransactionType= 6) --DeliveryAdvice   
	  Begin    
	  INSERT INTO tblOrderDocDADTBOM (strOrdDocDAID, intLineNo, intMainLineNo, strPartItemNumber, strLocName, decQty, lngBinId, decBOMQty,decGLCalc)
	  VALUES  (@InvDocId,@LineNo,@MainLineNo,@PartNumber,@Location,@Qty,@BinId,@BOMQty,@GLCalc)    
	  END    
    
   if(@TransactionType =1 or @TransactionType =2 or @TransactionType = 3 or @TransactionType = 9)  -- sales Order Sales Quotes Credit Request    
	  Begin    
	  INSERT INTO tblOrderDocDTBOM (strOrdDocID, intLineNo, intMainLineNo, strPartItemNumber, strLocName, decQty, decBOMQty,decGLCalc)
	  VALUES  (@InvDocId,@LineNo,@MainLineNo,@PartNumber,@Location,@Qty,@BOMQty,@GLCalc)    
	  END  

	  IF(@TransactionType = 11)  -- freehand qoutes
	  BEGIN   
	  INSERT INTO tblOrderDocQDTBOM (strOrdDocID, intLineNo, intMainLineNo, strPartItemNumber, strLocName, decQty, decBOMQty,decGLCalc)  
	  VALUES  (@InvDocId,@LineNo,@MainLineNo,@PartNumber,@Location,@Qty,@BOMQty,@GLCalc)      
	  END 
	  
	  IF(@TransactionType = 10)  -- Stock pick
	  BEGIN
	  INSERT INTO tblPickTicketsDTBOM (strPkTkDocId, intLineNo, intMainLineNo, strPartItemNumber, strLocation, decQty, lngBinId, decBOMQty,decGLCalc) 
	  VALUES  (@InvDocId,@LineNo,@MainLineNo,@PartNumber,@Location,@Qty,@BinId,@BOMQty,@GLCalc)    
	  END
	  
	END
GO
/****** Object:  StoredProcedure [dbo].[POSDispAdd]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[POSDispAdd]
	@strMachine nvarchar(200),
	@strWaitText1 nvarchar(40),
	@strWaitText2 nvarchar(40),
	@strCOMPort nvarchar(100)
AS
BEGIN	
DELETE FROM tblPOSDisp where strMachine = @strMachine
INSERT INTO tblPOSDisp VALUES (@strMachine,@strWaitText1,@strWaitText2,@strCOMPort)

END
GO
/****** Object:  StoredProcedure [dbo].[POSInsertUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [InsertInTaxAndBulkInsertInTaxDT] ***********/

/*********** Start [POSInsertUpdate] ***********/
CREATE PROCEDURE [dbo].[POSInsertUpdate] (
	@Total DECIMAL(18, 6)
	,@POSDrawerSessionID UNIQUEIDENTIFIER
	,@PaidBy NVARCHAR(20)
	,@GLNumber NVARCHAR(30)
	,@InvDocID NVARCHAR(50)
	,@CustName NVARCHAR(50)
	,@IsForeign bit = null
	,@Exchange Decimal = null
	,@TotalF Money  = null
	,@Currency NVARCHAR(10)  = null
	)
AS
BEGIN
	UPDATE tblPOSDrs
	SET decCashBal = decCashBal + @Total
		,decCkBal = decCkBal + 0
		,decCCBal = decCCBal + 0
		,decGiftCouBal = decGiftCouBal + 0
		,decAccountBal = decAccountBal + 0
		,decTotalSales = decTotalSales 
		,decCurrentVal = decCurrentVal + @Total
	WHERE uidSessionID = @POSDrawerSessionID

	INSERT INTO [dbo].[tblPOSDrsSplitPmt] (
		[uidSessionID]
		,[strPaymentTypeName]
		,[intGLNumber]
		,[decTotal]
		,bitIsForeign
		,decExchange
		,decTotalF
		,strCurrency
		)
	VALUES (
		@POSDrawerSessionID
		,@PaidBy
		,@GLNumber
		,@Total
		,@IsForeign
		,@Exchange
		,@TotalF
		,@Currency
		)

	INSERT INTO [dbo].[tblPOSDrsDT] (
		[uidSessionID]
		,[dteTimeStamp]
		,[strInvDocID]
		,[strCustName]
		,[decCash]
		,[decCk]
		,[decCC]
		,[decGiftCoup]
		,[decAccount]
		,[decDrop]
		,[strDropUser]
		,[decOvSht]
		)
	VALUES (
		@POSDrawerSessionID
		,GETDATE()
		,@InvDocID
		,@CustName
		,@Total
		,0
		,0
		,0
		,0
		,0
		,''
		,0
		)
END
GO
/****** Object:  StoredProcedure [dbo].[POSInvBin_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[POSInvBin_Search]    Script Date: 04-02-2020 06:39:00 AM ******/
CREATE PROCEDURE [dbo].[POSInvBin_Search]      
 @SQstrLocationName NVARCHAR(10) = NULL       
 ,@SQstrPartNUmber NVARCHAR(50) = NULL         
AS      
BEGIN  
Select 
  tblInvExtBin.strPartNumber      
  ,tblInvExtBin.strLocName      
  ,tblInvExtBin.lngBinID      
  ,tblInvExtBin.decOnHand AS decAvail      
  ,tblInvExtBin.decAlloc      
  ,tblInvExtBin.decOnHand      
  ,tblInvExtBin.decMaximumQty      
  ,tblInvExtBin.bitAllowed      
  ,tblInvExtBin.bitDefault      
  ,strDescription      
  ,tblInvLocBin.strBinCode      
  ,IsAllowEditing = CAST(0 AS BIT)      
  ,intItemType = tblInv.intType 
  FROM
  tblInvExtBin  
  INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId 
  AND tblInvLocBin.strLocName = tblInvExtBin.strLocName  AND bitInactive = 0    
  INNER JOIN tblInv ON tblInv.strPartNumber = tblInvExtBin.strPartNumber  
  WHERE
  tblInvExtBin.strLocName = @SQstrLocationName 
   AND tblInvExtBin.strPartNumber = @SQstrPartNUmber
   AND tblInvExtBin.bitAllowed=1
 END
GO
/****** Object:  StoredProcedure [dbo].[POSTerminalCleanUp]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[POSTerminalCleanUp]    Script Date: 04-02-2020 06:39:00 AM ******/
CREATE PROCEDURE [dbo].[POSTerminalCleanUp]
AS
BEGIN
   Truncate Table tblOfflineCustomerDT 
   Truncate Table tblOfflineInvoiceDT 
   Truncate Table tblOfflineOrderAndQuoteDT 
   Truncate Table tblOfflineReceiptsDT 
END
GO
/****** Object:  StoredProcedure [dbo].[prAccountNumber_Update]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccountNumber_Update]
(
    @intGLNumberOld nvarchar(30) = Null,
    @intGLNumberNew nvarchar(30) = Null,
	@strDesc nvarchar(max) = Null,
	@intAccType int = NULL,
	@intGroupCode int = NULL,
	@intAccClass int = NULL
)
AS
    SET NOCOUNT ON

	BEGIN

		--tblAccounts table related changes	----Start
		UPDATE [tblAccounts] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]), strDesc = ISNULL(@strDesc, strDesc), intAccType = ISNULL(@intAccType, intAccType), intGroupCode = ISNULL(@intGroupCode, intGroupCode), intAccClass = ISNULL(@intAccClass, intAccClass) WHERE [intGLNumber] = @intGLNumberOld
		UPDATE [tblManBOMCompOverhead] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblTaxDef] SET [intPurchAcct] = ISNULL(@intGLNumberNew, [intPurchAcct]) WHERE [intPurchAcct] = @intGLNumberOld 
		UPDATE [tblTaxDef] SET [intSalesAcct] = ISNULL(@intGLNumberNew, [intSalesAcct]) WHERE [intSalesAcct] = @intGLNumberOld 
		UPDATE [tblJournalEnt] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblPOSDr] SET [intCoupGift] = ISNULL(@intGLNumberNew, [intCoupGift]) WHERE [intCoupGift] = @intGLNumberOld 
		UPDATE [tblPOSDr] SET [intAccReceipt] = ISNULL(@intGLNumberNew, [intAccReceipt]) WHERE [intAccReceipt] = @intGLNumberOld 
		UPDATE [tblPOSDr] SET [intPettyCash] = ISNULL(@intGLNumberNew, [intPettyCash]) WHERE [intPettyCash] = @intGLNumberOld 
		UPDATE [tblPOSDr] SET [intCreditCard] = ISNULL(@intGLNumberNew, [intCreditCard]) WHERE [intCreditCard] = @intGLNumberOld 
		UPDATE [tblPOSDr] SET [intOverShort] = ISNULL(@intGLNumberNew, [intOverShort]) WHERE [intOverShort] = @intGLNumberOld 
		UPDATE [tblPOSDr] SET [intCashCheq] = ISNULL(@intGLNumberNew, [intCashCheq]) WHERE [intCashCheq] = @intGLNumberOld 
		UPDATE [tblVendors] SET [intExpAcct] = ISNULL(@intGLNumberNew, [intExpAcct]) WHERE [intExpAcct] = @intGLNumberOld 
		UPDATE [tblAccountsDept] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblPOSDrsSplitPmt] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblManJobCompOverhead] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblAccountF] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblJournalEntryDocDT] SET [strCuVeGeID] = ISNULL(@intGLNumberNew, [strCuVeGeID]) WHERE [intModule] = 0 AND [strCuVeGeID] = @intGLNumberOld 
		UPDATE [tblJournalEntryDocDT] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblJournalEntLY] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblAccountsSec] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblJournalEntryDocDTPrj] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intModule] = 0 AND [intGLNumber] = @intGLNumberOld 
		UPDATE [tblJournalEntryDocCBDT] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblJournalEntryDocCBDTPrj] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblAccountsDeptB] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblAccountsSL] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblAcctBudgets] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblBankRecTrans] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblBankRecAccts] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblBankRecSum] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld  
		UPDATE [tblManWIPCompOverhead] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblJournalEntryDocREDT] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblJournalEntryDocCBREDT] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld  
		UPDATE [tblDeposits] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblDepositsA] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblManMachinery] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblManLabour] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		--tblAccounts table related changes	----End
		------------------------------------------------------------------------------------------------------------------------------------

		--tblJournalEntHist table related changes	----Start
		UPDATE [tblAccountsHist] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblJournalEntHist] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		--tblJournalEntHist table related changes	----End
		------------------------------------------------------------------------------------------------------------------------------------------------------

		--tblAccountsLY table related changes	----Start
		UPDATE [tblAccountsLY] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblAccountsDeptBLY] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblAcctBudgetsLY] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblAccountsDeptLY] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		--tblAccountsLY table related changes	----End
		------------------------------------------------------------------------------------------------------------------------------------------

		----Update Without Constraints Tables----Start-----------------------------------
		UPDATE [tblInv] SET [intExpAcct] = ISNULL(@intGLNumberNew, [intExpAcct]) WHERE [intExpAcct] = @intGLNumberOld  
		UPDATE [tblBankRecAccts] SET [intInterestRev] = ISNULL(@intGLNumberNew, [intInterestRev]) WHERE [intInterestRev] = @intGLNumberOld  
		UPDATE [tblBankRecAccts] SET [intInterestExp] = ISNULL(@intGLNumberNew, [intInterestExp]) WHERE [intInterestExp] = @intGLNumberOld  
		UPDATE [tblAccountSets] SET [intGLAsset] = ISNULL(@intGLNumberNew, [intGLAsset]) WHERE [intGLAsset] = @intGLNumberOld 
		UPDATE [tblAccountSets] SET [intGLRevenue] = ISNULL(@intGLNumberNew, [intGLRevenue]) WHERE [intGLRevenue] = @intGLNumberOld 
		UPDATE [tblAccountSets] SET [intGLExpCOGS] = ISNULL(@intGLNumberNew, [intGLExpCOGS]) WHERE [intGLExpCOGS] = @intGLNumberOld 
		UPDATE [tblAccountSets] SET [intGLVariance] = ISNULL(@intGLNumberNew, [intGLVariance]) WHERE [intGLVariance] = @intGLNumberOld 
		UPDATE [tblUtilityAccounts] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 	
		UPDATE [tblUtilityAccountSets] SET [intGLAsset] = ISNULL(@intGLNumberNew, [intGLAsset]) WHERE [intGLAsset] = @intGLNumberOld 
		UPDATE [tblUtilityAccountSets] SET [intGLRevenue] = ISNULL(@intGLNumberNew, [intGLRevenue]) WHERE [intGLRevenue] = @intGLNumberOld
		UPDATE [tblUtilityAccountSets] SET [intGLExpCOGS] = ISNULL(@intGLNumberNew, [intGLExpCOGS]) WHERE [intGLExpCOGS] = @intGLNumberOld 	
		UPDATE [tblUtilityAccountSets] SET [intGLVariance] = ISNULL(@intGLNumberNew, [intGLVariance]) WHERE [intGLVariance] = @intGLNumberOld 	
		UPDATE [tblUtilityAccountSetsUnassigned] SET [intGLRevenue] = ISNULL(@intGLNumberNew, [intGLRevenue]) WHERE [intGLRevenue] = @intGLNumberOld
		UPDATE [tblUtilityAccountSetsUnassigned] SET [intGLExpCOGS] = ISNULL(@intGLNumberNew, [intGLExpCOGS]) WHERE [intGLExpCOGS] = @intGLNumberOld 	
		UPDATE [tblUtilityAccountSetsUnassigned] SET [intGLVariance] = ISNULL(@intGLNumberNew, [intGLVariance]) WHERE [intGLVariance] = @intGLNumberOld 
		UPDATE [tblInvIntReqDoc] SET [intAccount] = ISNULL(@intGLNumberNew, [intAccount]) WHERE [intAccount] = @intGLNumberOld 
		UPDATE [tblInvIssReqDoc] SET [intAccount] = ISNULL(@intGLNumberNew, [intAccount]) WHERE [intAccount] = @intGLNumberOld 
		UPDATE [tblInvAdjDoc] SET [intAccount] = ISNULL(@intGLNumberNew, [intAccount]) WHERE [intAccount] = @intGLNumberOld 
		UPDATE [tblInvAsmDoc] SET [intAccount] = ISNULL(@intGLNumberNew, [intAccount]) WHERE [intAccount] = @intGLNumberOld 
		UPDATE [tblVendPay] SET [intBankAcct] = ISNULL(@intGLNumberNew, [intBankAcct]) WHERE [intBankAcct] = @intGLNumberOld 
		UPDATE [tblPurchRE] SET [intAccount] = ISNULL(@intGLNumberNew, [intAccount]) WHERE [intAccount] = @intGLNumberOld 		 
		UPDATE [tblInvoiceDocP] SET [intAccount] = ISNULL(@intGLNumberNew, [intAccount]) WHERE [intAccount] = @intGLNumberOld 		
		UPDATE [tblCustPay] SET [intBankAcct] = ISNULL(@intGLNumberNew, [intBankAcct]) WHERE [intBankAcct] = @intGLNumberOld
		UPDATE [tblSalesRE] SET [intAccount] = ISNULL(@intGLNumberNew, [intAccount]) WHERE [intAccount] = @intGLNumberOld 		
		UPDATE [tblTenderTypes] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 		
		UPDATE [tblInvoiceDoc] SET [intAccount] = ISNULL(@intGLNumberNew, [intAccount]) WHERE [intAccount] = @intGLNumberOld 
		UPDATE [tblAssetTypes] SET [intDepAccNo] = ISNULL(@intGLNumberNew, [intDepAccNo]) WHERE [intDepAccNo] = @intGLNumberOld  
		UPDATE [tblAssetTypes] SET [intExpAccNo] = ISNULL(@intGLNumberNew, [intExpAccNo]) WHERE [intExpAccNo] = @intGLNumberOld  
		UPDATE [tblAssetTypes] SET [intAssetAccNo] = ISNULL(@intGLNumberNew, [intAssetAccNo]) WHERE [intAssetAccNo] = @intGLNumberOld 
		UPDATE [tblAssetTypes] SET [intRepairAccNo] = ISNULL(@intGLNumberNew, [intRepairAccNo]) WHERE [intRepairAccNo] = @intGLNumberOld  
		UPDATE [tblBankRecOTP] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 	
		UPDATE [tblJournalEntryDocCBRE] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblJournalEntryDocCB] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld 
		UPDATE [tblUtilityTaxDef] SET [intPurchAcct] = ISNULL(@intGLNumberNew, [intPurchAcct]) WHERE [intPurchAcct] = @intGLNumberOld 
		UPDATE [tblUtilityTaxDef] SET [intSalesAcct] = ISNULL(@intGLNumberNew, [intSalesAcct]) WHERE [intSalesAcct] = @intGLNumberOld 	
		UPDATE [tblAccountsDeptHist] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld
		UPDATE [tblBankRecJE] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld
		UPDATE [tblInvoiceDocREV] SET [intAccount] = ISNULL(@intGLNumberNew, [intAccount]) WHERE [intAccount] = @intGLNumberOld 
		UPDATE [tblInvoiceDocSplitPmt] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld
		UPDATE [tblPaymentPlanDeposit] SET [intGLNumber] = ISNULL(@intGLNumberNew, [intGLNumber]) WHERE [intGLNumber] = @intGLNumberOld

    END

    RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prAccountNumberRelatedConstraint_Add]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccountNumberRelatedConstraint_Add]
AS
    SET NOCOUNT ON

	BEGIN

    --tblAccounts table related changes	----Start
	-----
	ALTER TABLE [dbo].[tblManBOMCompOverhead]  WITH CHECK ADD  CONSTRAINT [FK_tblManBOMCompOverhead_tblAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE
	
	ALTER TABLE [dbo].[tblManBOMCompOverhead] CHECK CONSTRAINT [FK_tblManBOMCompOverhead_tblAccounts]

	-----
	ALTER TABLE [dbo].[tblTaxDef]  WITH CHECK ADD  CONSTRAINT [FK_tblTaxDef_tblAccounts] FOREIGN KEY([intPurchAcct])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	
	ALTER TABLE [dbo].[tblTaxDef] CHECK CONSTRAINT [FK_tblTaxDef_tblAccounts]
	
	----
	ALTER TABLE [dbo].[tblTaxDef]  WITH CHECK ADD  CONSTRAINT [FK_tblTaxDef_tblAccounts1] FOREIGN KEY([intSalesAcct])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	
	ALTER TABLE [dbo].[tblTaxDef] CHECK CONSTRAINT [FK_tblTaxDef_tblAccounts1]
	
	----
	ALTER TABLE [dbo].[tblJournalEnt]  WITH CHECK ADD  CONSTRAINT [FK_tblJournalEnt_tblGLAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE

	ALTER TABLE [dbo].[tblJournalEnt] CHECK CONSTRAINT [FK_tblJournalEnt_tblGLAccounts]
	
	----
	ALTER TABLE [dbo].[tblPOSDr]  WITH CHECK ADD  CONSTRAINT [FK_tblPOSDr_tblAccounts2] FOREIGN KEY([intCoupGift])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	
	ALTER TABLE [dbo].[tblPOSDr] CHECK CONSTRAINT [FK_tblPOSDr_tblAccounts2]
	
	----
	ALTER TABLE [dbo].[tblPOSDr]  WITH CHECK ADD  CONSTRAINT [FK_tblPOSdr_tblAccounts_intReceipt] FOREIGN KEY([intAccReceipt])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])

	ALTER TABLE [dbo].[tblPOSDr] CHECK CONSTRAINT [FK_tblPOSdr_tblAccounts_intReceipt]
	
	----
	ALTER TABLE [dbo].[tblPOSDr]  WITH CHECK ADD  CONSTRAINT [FK_tblPOSDr_tblAccounts4] FOREIGN KEY([intPettyCash])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE
	
	ALTER TABLE [dbo].[tblPOSDr] CHECK CONSTRAINT [FK_tblPOSDr_tblAccounts4]
	
	----
	ALTER TABLE [dbo].[tblPOSDr]  WITH CHECK ADD  CONSTRAINT [FK_tblPOSDr_tblAccounts1] FOREIGN KEY([intCreditCard])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	
	ALTER TABLE [dbo].[tblPOSDr] CHECK CONSTRAINT [FK_tblPOSDr_tblAccounts1]
	
	----
	ALTER TABLE [dbo].[tblPOSDr]  WITH CHECK ADD  CONSTRAINT [FK_tblPOSDr_tblAccounts3] FOREIGN KEY([intOverShort])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	
	ALTER TABLE [dbo].[tblPOSDr] CHECK CONSTRAINT [FK_tblPOSDr_tblAccounts3]
	
	----
	ALTER TABLE [dbo].[tblPOSDr]  WITH CHECK ADD  CONSTRAINT [FK_tblPOSDr_tblAccounts] FOREIGN KEY([intCashCheq])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	
	ALTER TABLE [dbo].[tblPOSDr] CHECK CONSTRAINT [FK_tblPOSDr_tblAccounts]
	
	----
	ALTER TABLE [dbo].[tblVendors]  WITH CHECK ADD  CONSTRAINT [FK_tblVendors_tblAccounts] FOREIGN KEY([intExpAcct])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE
	
	ALTER TABLE [dbo].[tblVendors] CHECK CONSTRAINT [FK_tblVendors_tblAccounts]
	
	----
	ALTER TABLE [dbo].[tblAccountsDept]  WITH CHECK ADD  CONSTRAINT [FK_tblAccountsDept_tblAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE
	ON DELETE CASCADE
	
	ALTER TABLE [dbo].[tblAccountsDept] CHECK CONSTRAINT [FK_tblAccountsDept_tblAccounts]
	
	----
	ALTER TABLE [dbo].[tblPOSDrsSplitPmt]  WITH CHECK ADD  CONSTRAINT [FK_tblPOSDrsSplitPmt_tblAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	
	ALTER TABLE [dbo].[tblPOSDrsSplitPmt] CHECK CONSTRAINT [FK_tblPOSDrsSplitPmt_tblAccounts]
	
	----
	ALTER TABLE [dbo].[tblManJobCompOverhead]  WITH CHECK ADD  CONSTRAINT [FK_tblManJobCompOverhead_tblAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE
	
	ALTER TABLE [dbo].[tblManJobCompOverhead] CHECK CONSTRAINT [FK_tblManJobCompOverhead_tblAccounts]
	
	----
	ALTER TABLE [dbo].[tblAccountF]  WITH CHECK ADD  CONSTRAINT [FK_tblAccountF_tblAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE
	ON DELETE CASCADE
	
	ALTER TABLE [dbo].[tblAccountF] CHECK CONSTRAINT [FK_tblAccountF_tblAccounts]
	
	----
	ALTER TABLE [dbo].[tblJournalEntryDocDT]  WITH CHECK ADD  CONSTRAINT [FK_tblJournalEntryDocDT_tblAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE

	ALTER TABLE [dbo].[tblJournalEntryDocDT] CHECK CONSTRAINT [FK_tblJournalEntryDocDT_tblAccounts]
	
	----
	ALTER TABLE [dbo].[tblJournalEntLY]  WITH CHECK ADD  CONSTRAINT [FK_tblJournalEntLY_tblGLAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE
	
	ALTER TABLE [dbo].[tblJournalEntLY] CHECK CONSTRAINT [FK_tblJournalEntLY_tblGLAccounts]
	
	----
	ALTER TABLE [dbo].[tblAccountsSec]  WITH CHECK ADD  CONSTRAINT [FK_tblAccountsSec_tblAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE
	ON DELETE CASCADE
	
	ALTER TABLE [dbo].[tblAccountsSec] CHECK CONSTRAINT [FK_tblAccountsSec_tblAccounts]
	
	----
	ALTER TABLE [dbo].[tblJournalEntryDocDTPrj]  WITH CHECK ADD  CONSTRAINT [FK_tblJournalEntryDocDTPrj_tblJournalEntryDocDT] FOREIGN KEY([strJEDocID], [intLineNo], [intModule])
	REFERENCES [dbo].[tblJournalEntryDocDT] ([strJEDocID], [intLineNo], [intModule])
	ON DELETE CASCADE

	ALTER TABLE [dbo].[tblJournalEntryDocDTPrj] CHECK CONSTRAINT [FK_tblJournalEntryDocDTPrj_tblJournalEntryDocDT]
	
	----
	ALTER TABLE [dbo].[tblJournalEntryDocCBDT]  WITH CHECK ADD  CONSTRAINT [FK_tblJournalEntryDocCBDT_tblAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE
	
	ALTER TABLE [dbo].[tblJournalEntryDocCBDT] CHECK CONSTRAINT [FK_tblJournalEntryDocCBDT_tblAccounts]
	
	----
	ALTER TABLE [dbo].[tblJournalEntryDocCBDTPrj]  WITH CHECK ADD  CONSTRAINT [FK_tblJournalEntryDocCBDTPrj_tblJournalEntryDocCBDT] FOREIGN KEY([strJEDocID], [intType], [intGLNumber], [intLineNo])
	REFERENCES [dbo].[tblJournalEntryDocCBDT] ([strJEDocID], [intType], [intGLNumber], [intLineNo])
	ON DELETE CASCADE
	
	ALTER TABLE [dbo].[tblJournalEntryDocCBDTPrj] CHECK CONSTRAINT [FK_tblJournalEntryDocCBDTPrj_tblJournalEntryDocCBDT]
	
	----
	ALTER TABLE [dbo].[tblAccountsDeptB]  WITH CHECK ADD  CONSTRAINT [FK_tblAccountsDeptB_tblAccountsDept] FOREIGN KEY([intGLNumber], [intDept])
	REFERENCES [dbo].[tblAccountsDept] ([intGLNumber], [intDept])
	ON UPDATE CASCADE
	ON DELETE CASCADE
	
	ALTER TABLE [dbo].[tblAccountsDeptB] CHECK CONSTRAINT [FK_tblAccountsDeptB_tblAccountsDept]
	
	----
	ALTER TABLE [dbo].[tblAccountsSL]  WITH CHECK ADD  CONSTRAINT [FK_tblAccountsSL_tblAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE
	ON DELETE CASCADE
	
	ALTER TABLE [dbo].[tblAccountsSL] CHECK CONSTRAINT [FK_tblAccountsSL_tblAccounts]
	
	----
	ALTER TABLE [dbo].[tblAcctBudgets]  WITH CHECK ADD  CONSTRAINT [FK_tblAcctBudgets_tblAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE
	ON DELETE CASCADE
	
	ALTER TABLE [dbo].[tblAcctBudgets] CHECK CONSTRAINT [FK_tblAcctBudgets_tblAccounts]
	
	----
	ALTER TABLE [dbo].[tblBankRecTrans]  WITH CHECK ADD  CONSTRAINT [FK_tblBankRecTrans_tblBankRecAccts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblBankRecAccts] ([intGLNumber])
	ON UPDATE CASCADE
	ON DELETE CASCADE
	
	ALTER TABLE [dbo].[tblBankRecTrans] CHECK CONSTRAINT [FK_tblBankRecTrans_tblBankRecAccts]
	
	----
	ALTER TABLE [dbo].[tblBankRecAccts]  WITH CHECK ADD  CONSTRAINT [FK_tblBankRecAccts_tblAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE
	ON DELETE CASCADE
	
	ALTER TABLE [dbo].[tblBankRecAccts] CHECK CONSTRAINT [FK_tblBankRecAccts_tblAccounts]
	
	----
	ALTER TABLE [dbo].[tblBankRecSum]  WITH CHECK ADD  CONSTRAINT [FK_tblBankRecSum_tblBankRecAccts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblBankRecAccts] ([intGLNumber])
	ON UPDATE CASCADE
	ON DELETE CASCADE
	
	ALTER TABLE [dbo].[tblBankRecSum] CHECK CONSTRAINT [FK_tblBankRecSum_tblBankRecAccts]
	
	----
	ALTER TABLE [dbo].[tblManWIPCompOverhead]  WITH CHECK ADD  CONSTRAINT [FK_tblManWIPCompOverhead_tblAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE
	
	ALTER TABLE [dbo].[tblManWIPCompOverhead] CHECK CONSTRAINT [FK_tblManWIPCompOverhead_tblAccounts]
	
	----
	ALTER TABLE [dbo].[tblJournalEntryDocREDT]  WITH CHECK ADD  CONSTRAINT [FK_tblJournalEntryDocREDT_tblAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE
	
	ALTER TABLE [dbo].[tblJournalEntryDocREDT] CHECK CONSTRAINT [FK_tblJournalEntryDocREDT_tblAccounts]
	
	----
	ALTER TABLE [dbo].[tblJournalEntryDocCBREDT]  WITH CHECK ADD  CONSTRAINT [FK_tblJournalEntryDocCBREDT_tblAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE
	
	ALTER TABLE [dbo].[tblJournalEntryDocCBREDT] CHECK CONSTRAINT [FK_tblJournalEntryDocCBREDT_tblAccounts]
	
	----
	ALTER TABLE [dbo].[tblDeposits]  WITH CHECK ADD  CONSTRAINT [FK_tblDeposits_tblAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE
	ON DELETE CASCADE
	
	ALTER TABLE [dbo].[tblDeposits] CHECK CONSTRAINT [FK_tblDeposits_tblAccounts]

	----
	ALTER TABLE [dbo].[tblDepositsA]  WITH CHECK ADD  CONSTRAINT [FK_tblDepositsA_tblAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	
	ALTER TABLE [dbo].[tblDepositsA] CHECK CONSTRAINT [FK_tblDepositsA_tblAccounts]
	
	----
	ALTER TABLE [dbo].[tblManMachinery]  WITH CHECK ADD  CONSTRAINT [FK_tblManMachinery_tblGLAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE
	
	ALTER TABLE [dbo].[tblManMachinery] CHECK CONSTRAINT [FK_tblManMachinery_tblGLAccounts]

	----
	ALTER TABLE [dbo].[tblManLabour]  WITH CHECK ADD  CONSTRAINT [FK_tblManLabour_tblGLAccounts] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccounts] ([intGLNumber])
	ON UPDATE CASCADE
	
	ALTER TABLE [dbo].[tblManLabour] CHECK CONSTRAINT [FK_tblManLabour_tblGLAccounts]

	--tblJournalEntHist table related changes	----Start
	----
	ALTER TABLE [dbo].[tblJournalEntHist]  WITH CHECK ADD  CONSTRAINT [FK_tblJournalEntHist_tblAccountsHist] FOREIGN KEY([uidYearID], [intGLNumber])
	REFERENCES [dbo].[tblAccountsHist] ([uidYearID], [intGLNumber])
	
	ALTER TABLE [dbo].[tblJournalEntHist] CHECK CONSTRAINT [FK_tblJournalEntHist_tblAccountsHist]

	--tblAccountsLY table related changes	----Start
	----
	ALTER TABLE [dbo].[tblAccountsDeptBLY]  WITH CHECK ADD  CONSTRAINT [FK_tblAccountsDeptBLY_tblAccountsDeptLY] FOREIGN KEY([intGLNumber], [intDept])
	REFERENCES [dbo].[tblAccountsDeptLY] ([intGLNumber], [intDept])
	ON UPDATE CASCADE
	ON DELETE CASCADE
	
	ALTER TABLE [dbo].[tblAccountsDeptBLY] CHECK CONSTRAINT [FK_tblAccountsDeptBLY_tblAccountsDeptLY]
	
	----
	ALTER TABLE [dbo].[tblAcctBudgetsLY]  WITH CHECK ADD  CONSTRAINT [FK_tblAcctBudgetsLY_tblAccountsLY] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccountsLY] ([intGLNumber])
	ON UPDATE CASCADE
	ON DELETE CASCADE
	
	ALTER TABLE [dbo].[tblAcctBudgetsLY] CHECK CONSTRAINT [FK_tblAcctBudgetsLY_tblAccountsLY]
	
	----
	ALTER TABLE [dbo].[tblAccountsDeptLY]  WITH CHECK ADD  CONSTRAINT [FK_tblAccountsDeptLY_tblAccountsLY] FOREIGN KEY([intGLNumber])
	REFERENCES [dbo].[tblAccountsLY] ([intGLNumber])
	ON UPDATE CASCADE
	ON DELETE CASCADE
	
	ALTER TABLE [dbo].[tblAccountsDeptLY] CHECK CONSTRAINT [FK_tblAccountsDeptLY_tblAccountsLY]

	END

	RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prAccountNumberRelatedConstraint_Drop]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccountNumberRelatedConstraint_Drop]
AS
    SET NOCOUNT ON

	BEGIN

    --tblAccounts table related changes	----Start

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblManBOMCompOverhead_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblManBOMCompOverhead] DROP CONSTRAINT [FK_tblManBOMCompOverhead_tblAccounts]								
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblTaxDef_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblTaxDef] DROP CONSTRAINT [FK_tblTaxDef_tblAccounts]														
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblTaxDef_tblAccounts1')
	BEGIN
		ALTER TABLE [dbo].[tblTaxDef] DROP CONSTRAINT [FK_tblTaxDef_tblAccounts1]														
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblJournalEnt_tblGLAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblJournalEnt] DROP CONSTRAINT [FK_tblJournalEnt_tblGLAccounts]											
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblPOSDr_tblAccounts2')
	BEGIN
		ALTER TABLE [dbo].[tblPOSDr] DROP CONSTRAINT [FK_tblPOSDr_tblAccounts2]															
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblPOSdr_tblAccounts_intReceipt')
	BEGIN
		ALTER TABLE [dbo].[tblPOSDr] DROP CONSTRAINT [FK_tblPOSdr_tblAccounts_intReceipt]												
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblPOSDr_tblAccounts4')
	BEGIN
		ALTER TABLE [dbo].[tblPOSDr] DROP CONSTRAINT [FK_tblPOSDr_tblAccounts4]														
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblPOSDr_tblAccounts1')
	BEGIN
		ALTER TABLE [dbo].[tblPOSDr] DROP CONSTRAINT [FK_tblPOSDr_tblAccounts1]														
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblPOSDr_tblAccounts3')
	BEGIN
		ALTER TABLE [dbo].[tblPOSDr] DROP CONSTRAINT [FK_tblPOSDr_tblAccounts3]														
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblPOSDr_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblPOSDr] DROP CONSTRAINT [FK_tblPOSDr_tblAccounts]														
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblVendors_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblVendors] DROP CONSTRAINT [FK_tblVendors_tblAccounts]													
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblAccountsDept_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblAccountsDept] DROP CONSTRAINT [FK_tblAccountsDept_tblAccounts]									
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblPOSDrsSplitPmt_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblPOSDrsSplitPmt] DROP CONSTRAINT [FK_tblPOSDrsSplitPmt_tblAccounts]								
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblManJobCompOverhead_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblManJobCompOverhead] DROP CONSTRAINT [FK_tblManJobCompOverhead_tblAccounts]						
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblAccountF_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblAccountF] DROP CONSTRAINT [FK_tblAccountF_tblAccounts]											
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblJournalEntryDocDT_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblJournalEntryDocDT] DROP CONSTRAINT [FK_tblJournalEntryDocDT_tblAccounts]
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblJournalEntLY_tblGLAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblJournalEntLY] DROP CONSTRAINT [FK_tblJournalEntLY_tblGLAccounts]									
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblAccountsSec_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblAccountsSec] DROP CONSTRAINT [FK_tblAccountsSec_tblAccounts]										
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblJournalEntryDocDTPrj_tblJournalEntryDocDT')
	BEGIN
		ALTER TABLE [dbo].[tblJournalEntryDocDTPrj] DROP CONSTRAINT [FK_tblJournalEntryDocDTPrj_tblJournalEntryDocDT]			
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblJournalEntryDocCBDT_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblJournalEntryDocCBDT] DROP CONSTRAINT [FK_tblJournalEntryDocCBDT_tblAccounts]						
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblJournalEntryDocCBDTPrj_tblJournalEntryDocCBDT')
	BEGIN
		ALTER TABLE [dbo].[tblJournalEntryDocCBDTPrj] DROP CONSTRAINT [FK_tblJournalEntryDocCBDTPrj_tblJournalEntryDocCBDT]		
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblAccountsDeptB_tblAccountsDept')
	BEGIN
		ALTER TABLE [dbo].[tblAccountsDeptB] DROP CONSTRAINT [FK_tblAccountsDeptB_tblAccountsDept]								
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblAccountsSL_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblAccountsSL] DROP CONSTRAINT [FK_tblAccountsSL_tblAccounts]
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblAcctBudgets_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblAcctBudgets] DROP CONSTRAINT [FK_tblAcctBudgets_tblAccounts]
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblBankRecTrans_tblBankRecAccts')
	BEGIN
		ALTER TABLE [dbo].[tblBankRecTrans] DROP CONSTRAINT [FK_tblBankRecTrans_tblBankRecAccts]
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblBankRecAccts_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblBankRecAccts] DROP CONSTRAINT [FK_tblBankRecAccts_tblAccounts]
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblBankRecSum_tblBankRecAccts')
	BEGIN
		ALTER TABLE [dbo].[tblBankRecSum] DROP CONSTRAINT [FK_tblBankRecSum_tblBankRecAccts]
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblManWIPCompOverhead_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblManWIPCompOverhead] DROP CONSTRAINT [FK_tblManWIPCompOverhead_tblAccounts]
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblJournalEntryDocREDT_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblJournalEntryDocREDT] DROP CONSTRAINT [FK_tblJournalEntryDocREDT_tblAccounts]
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblJournalEntryDocCBREDT_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblJournalEntryDocCBREDT] DROP CONSTRAINT [FK_tblJournalEntryDocCBREDT_tblAccounts]
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblDeposits_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblDeposits] DROP CONSTRAINT [FK_tblDeposits_tblAccounts]
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblDepositsA_tblAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblDepositsA] DROP CONSTRAINT [FK_tblDepositsA_tblAccounts]
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblManMachinery_tblGLAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblManMachinery] DROP CONSTRAINT [FK_tblManMachinery_tblGLAccounts]
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblManLabour_tblGLAccounts')
	BEGIN
		ALTER TABLE [dbo].[tblManLabour] DROP CONSTRAINT [FK_tblManLabour_tblGLAccounts]
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblJournalEntHist_tblAccountsHist')
	BEGIN
		ALTER TABLE [dbo].[tblJournalEntHist] DROP CONSTRAINT [FK_tblJournalEntHist_tblAccountsHist]
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblAccountsDeptBLY_tblAccountsDeptLY')
	BEGIN
		ALTER TABLE [dbo].[tblAccountsDeptBLY] DROP CONSTRAINT [FK_tblAccountsDeptBLY_tblAccountsDeptLY]
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblAcctBudgetsLY_tblAccountsLY')
	BEGIN
		ALTER TABLE [dbo].[tblAcctBudgetsLY] DROP CONSTRAINT [FK_tblAcctBudgetsLY_tblAccountsLY]
	END

	IF EXISTS (SELECT name FROM sysobjects WHERE name = N'FK_tblAccountsDeptLY_tblAccountsLY')
	BEGIN
		ALTER TABLE [dbo].[tblAccountsDeptLY] DROP CONSTRAINT [FK_tblAccountsDeptLY_tblAccountsLY]
	END

	END

	RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prAccountNumbers_Update]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccountNumbers_Update]
	(
		@tvpTblUpdateNewGLAccountNumber tblUpdateNewGLAccountNumber READONLY 
	)
AS
BEGIN
	
	--tblAccounts table related changes	----Start

	UPDATE tblAccounts
	SET tblAccounts.intGLNumber = TEMP.intGLNumber,tblAccounts.strDesc = TEMP.strDesc,tblAccounts.intAccType = TEMP.intAccType,tblAccounts.intGroupCode = TEMP.intGroupCode,tblAccounts.intAccClass = TEMP.intAccClass	FROM tblAccounts
	INNER JOIN (SELECT intGLNumber, strDesc, intAccType, intGroupCode, intAccClass, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON tblAccounts.intGLNumber = TEMP.strOldGLNumber

	UPDATE [tblManBOMCompOverhead] SET [tblManBOMCompOverhead].[intGLNumber] = ISNULL(TEMP.intGLNumber,[tblManBOMCompOverhead].[intGLNumber]) FROM [tblManBOMCompOverhead]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblManBOMCompOverhead].[intGLNumber] = TEMP.strOldGLNumber

	UPDATE [tblTaxDef] SET [tblTaxDef].[intPurchAcct] = ISNULL(TEMP.intGLNumber, [tblTaxDef].[intPurchAcct]) FROM [tblTaxDef]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblTaxDef].[intPurchAcct] = TEMP.strOldGLNumber

	UPDATE [tblTaxDef] SET [tblTaxDef].[intSalesAcct] = ISNULL(TEMP.intGLNumber, [tblTaxDef].[intSalesAcct]) FROM [tblTaxDef]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblTaxDef].[intSalesAcct] = TEMP.strOldGLNumber

	UPDATE [tblJournalEnt] SET [tblJournalEnt].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblJournalEnt].[intGLNumber]) FROM [tblJournalEnt]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblJournalEnt].[intGLNumber] = TEMP.strOldGLNumber

	UPDATE [tblPOSDr] SET [tblPOSDr].[intCoupGift] = ISNULL(TEMP.intGLNumber, [tblPOSDr].[intCoupGift]) FROM [tblPOSDr]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblPOSDr].[intCoupGift] = TEMP.strOldGLNumber

	UPDATE [tblPOSDr] SET [tblPOSDr].[intAccReceipt] = ISNULL(TEMP.intGLNumber, [tblPOSDr].[intAccReceipt]) FROM [tblPOSDr]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblPOSDr].[intAccReceipt] = TEMP.strOldGLNumber

	UPDATE [tblPOSDr] SET [tblPOSDr].[intPettyCash] = ISNULL(TEMP.intGLNumber, [tblPOSDr].[intPettyCash]) FROM [tblPOSDr]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblPOSDr].[intPettyCash] = TEMP.strOldGLNumber

	UPDATE [tblPOSDr] SET [tblPOSDr].[intCreditCard] = ISNULL(TEMP.intGLNumber, [tblPOSDr].[intCreditCard]) FROM [tblPOSDr]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblPOSDr].[intCreditCard] = TEMP.strOldGLNumber

	UPDATE [tblPOSDr] SET [tblPOSDr].[intOverShort] = ISNULL(TEMP.intGLNumber, [tblPOSDr].[intOverShort]) FROM [tblPOSDr]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblPOSDr].[intOverShort] = TEMP.strOldGLNumber

	UPDATE [tblPOSDr] SET [tblPOSDr].[intCashCheq] = ISNULL(TEMP.intGLNumber, [tblPOSDr].[intCashCheq]) FROM [tblPOSDr]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblPOSDr].[intCashCheq] = TEMP.strOldGLNumber

	UPDATE [tblVendors] SET [tblVendors].[intExpAcct] = ISNULL(TEMP.intGLNumber, [tblVendors].[intExpAcct])  FROM [tblVendors]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblVendors].[intExpAcct] = TEMP.strOldGLNumber

	UPDATE [tblAccountsDept] SET [tblAccountsDept].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblAccountsDept].[intGLNumber]) FROM [tblAccountsDept]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAccountsDept].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblPOSDrsSplitPmt] SET [tblPOSDrsSplitPmt].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblPOSDrsSplitPmt].[intGLNumber]) FROM [tblPOSDrsSplitPmt]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblPOSDrsSplitPmt].[intGLNumber] = TEMP.strOldGLNumber

	UPDATE [tblManJobCompOverhead] SET [tblManJobCompOverhead].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblManJobCompOverhead].[intGLNumber]) FROM [tblManJobCompOverhead]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblManJobCompOverhead].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblAccountF] SET [tblAccountF].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblAccountF].[intGLNumber]) FROM [tblAccountF]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAccountF].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblJournalEntryDocDT] SET [tblJournalEntryDocDT].[strCuVeGeID] = ISNULL(TEMP.intGLNumber, [tblJournalEntryDocDT].[strCuVeGeID]) FROM [tblJournalEntryDocDT]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblJournalEntryDocDT].[strCuVeGeID] = TEMP.strOldGLNumber
	WHERE [tblJournalEntryDocDT].[intModule] = 0
	
	UPDATE [tblJournalEntryDocDT] SET [tblJournalEntryDocDT].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblJournalEntryDocDT].[intGLNumber]) FROM [tblJournalEntryDocDT]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblJournalEntryDocDT].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblJournalEntLY] SET [tblJournalEntLY].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblJournalEntLY].[intGLNumber]) FROM [tblJournalEntLY]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblJournalEntLY].[intGLNumber] = TEMP.strOldGLNumber

	UPDATE [tblAccountsSec] SET [tblAccountsSec].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblAccountsSec].[intGLNumber]) FROM [tblAccountsSec]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAccountsSec].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblJournalEntryDocDTPrj] SET [tblJournalEntryDocDTPrj].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblJournalEntryDocDTPrj].[intGLNumber]) FROM [tblJournalEntryDocDTPrj]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblJournalEntryDocDTPrj].[intGLNumber] = TEMP.strOldGLNumber
	WHERE [tblJournalEntryDocDTPrj].[intModule] = 0
	
	UPDATE [tblJournalEntryDocCBDT] SET [tblJournalEntryDocCBDT].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblJournalEntryDocCBDT].[intGLNumber]) FROM [tblJournalEntryDocCBDT]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblJournalEntryDocCBDT].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblJournalEntryDocCBDTPrj] SET [tblJournalEntryDocCBDTPrj].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblJournalEntryDocCBDTPrj].[intGLNumber]) FROM [tblJournalEntryDocCBDTPrj]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblJournalEntryDocCBDTPrj].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblAccountsDeptB] SET [tblAccountsDeptB].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblAccountsDeptB].[intGLNumber]) FROM [tblAccountsDeptB]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAccountsDeptB].[intGLNumber] = TEMP.strOldGLNumber 
	
	UPDATE [tblAccountsSL] SET [tblAccountsSL].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblAccountsSL].[intGLNumber]) FROM [tblAccountsSL]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAccountsSL].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblAcctBudgets] SET [tblAcctBudgets].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblAcctBudgets].[intGLNumber]) FROM [tblAcctBudgets]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAcctBudgets].[intGLNumber] = TEMP.strOldGLNumber 
	
	UPDATE [tblBankRecTrans] SET [tblBankRecTrans].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblBankRecTrans].[intGLNumber]) FROM [tblBankRecTrans]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblBankRecTrans].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblBankRecAccts] SET [tblBankRecAccts].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblBankRecAccts].[intGLNumber]) FROM [tblBankRecAccts]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblBankRecAccts].[intGLNumber] = TEMP.strOldGLNumber 
	
	UPDATE [tblBankRecSum] SET [tblBankRecSum].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblBankRecSum].[intGLNumber]) FROM [tblBankRecSum]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblBankRecSum].[intGLNumber] = TEMP.strOldGLNumber  
	
	UPDATE [tblManWIPCompOverhead] SET [tblManWIPCompOverhead].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblManWIPCompOverhead].[intGLNumber]) FROM [tblManWIPCompOverhead]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblManWIPCompOverhead].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblJournalEntryDocREDT] SET [tblJournalEntryDocREDT].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblJournalEntryDocREDT].[intGLNumber]) FROM [tblJournalEntryDocREDT]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblJournalEntryDocREDT].[intGLNumber] = TEMP.strOldGLNumber 
	
	UPDATE [tblJournalEntryDocCBREDT] SET [tblJournalEntryDocCBREDT].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblJournalEntryDocCBREDT].[intGLNumber]) FROM [tblJournalEntryDocCBREDT]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblJournalEntryDocCBREDT].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblDeposits] SET [tblDeposits].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblDeposits].[intGLNumber]) FROM [tblDeposits]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblDeposits].[intGLNumber] = TEMP.strOldGLNumber 
	
	UPDATE [tblDepositsA] SET [tblDepositsA].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblDepositsA].[intGLNumber])FROM [tblDepositsA]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblDepositsA].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblManMachinery] SET [tblManMachinery].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblManMachinery].[intGLNumber]) FROM [tblManMachinery]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblManMachinery].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblManLabour] SET [tblManLabour].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblManLabour].[intGLNumber]) FROM [tblManLabour]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblManLabour].[intGLNumber] = TEMP.strOldGLNumber
	
	--tblAccounts table related changes	----End
	------------------------------------------------------------------------------------------------------------------------------------

	--tblJournalEntHist table related changes	----Start
	UPDATE [tblAccountsHist] SET [tblAccountsHist].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblAccountsHist].[intGLNumber]) FROM [tblAccountsHist]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAccountsHist].[intGLNumber] = TEMP.strOldGLNumber 

	UPDATE [tblJournalEntHist] SET [tblJournalEntHist].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblJournalEntHist].[intGLNumber]) FROM [tblJournalEntHist]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblJournalEntHist].[intGLNumber] = TEMP.strOldGLNumber
	--tblJournalEntHist table related changes	----End
	------------------------------------------------------------------------------------------------------------------------------------------------------

	--tblAccountsLY table related changes	----Start
	UPDATE [tblAccountsLY] SET [tblAccountsLY].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblAccountsLY].[intGLNumber]) FROM [tblAccountsLY]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAccountsLY].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblAccountsDeptBLY] SET [tblAccountsDeptBLY].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblAccountsDeptBLY].[intGLNumber]) FROM [tblAccountsDeptBLY]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAccountsDeptBLY].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblAcctBudgetsLY] SET [tblAcctBudgetsLY].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblAcctBudgetsLY].[intGLNumber]) FROM [tblAcctBudgetsLY]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAcctBudgetsLY].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblAccountsDeptLY] SET [tblAccountsDeptLY].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblAccountsDeptLY].[intGLNumber]) FROM [tblAccountsDeptLY]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAccountsDeptLY].[intGLNumber] = TEMP.strOldGLNumber
	--tblAccountsLY table related changes	----End
	------------------------------------------------------------------------------------------------------------------------------------------

	----Update Without Constraints Tables----Start-----------------------------------
	UPDATE [tblInv] SET [tblInv].[intExpAcct] = ISNULL(TEMP.intGLNumber, [tblInv].[intExpAcct]) FROM [tblInv]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblInv].[intExpAcct] = TEMP.strOldGLNumber
	
	UPDATE [tblBankRecAccts] SET [tblBankRecAccts].[intInterestRev] = ISNULL(TEMP.intGLNumber, [tblBankRecAccts].[intInterestRev]) FROM [tblBankRecAccts]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblBankRecAccts].[intInterestRev] = TEMP.strOldGLNumber
	
	UPDATE [tblBankRecAccts] SET [tblBankRecAccts].[intInterestExp] = ISNULL(TEMP.intGLNumber, [tblBankRecAccts].[intInterestExp]) FROM [tblBankRecAccts]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblBankRecAccts].[intInterestExp] = TEMP.strOldGLNumber
	
	UPDATE [tblAccountSets] SET [tblAccountSets].[intGLAsset] = ISNULL(TEMP.intGLNumber, [tblAccountSets].[intGLAsset]) FROM [tblAccountSets]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAccountSets].[intGLAsset] = TEMP.strOldGLNumber
	
	UPDATE [tblAccountSets] SET [tblAccountSets].[intGLRevenue] = ISNULL(TEMP.intGLNumber, [tblAccountSets].[intGLRevenue]) FROM [tblAccountSets]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAccountSets].[intGLRevenue] = TEMP.strOldGLNumber
		
	UPDATE [tblAccountSets] SET [tblAccountSets].[intGLExpCOGS] = ISNULL(TEMP.intGLNumber, [tblAccountSets].[intGLExpCOGS]) FROM [tblAccountSets]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAccountSets].[intGLExpCOGS] = TEMP.strOldGLNumber
	
	UPDATE [tblAccountSets] SET [tblAccountSets].[intGLVariance] = ISNULL(TEMP.intGLNumber, [tblAccountSets].[intGLVariance]) FROM [tblAccountSets]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAccountSets].[intGLVariance] = TEMP.strOldGLNumber
	
	UPDATE [tblUtilityAccounts] SET [tblUtilityAccounts].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblUtilityAccounts].[intGLNumber]) FROM [tblUtilityAccounts]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblUtilityAccounts].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblUtilityAccountSets] SET [tblUtilityAccountSets].[intGLAsset] = ISNULL(TEMP.intGLNumber, [tblUtilityAccountSets].[intGLAsset]) FROM [tblUtilityAccountSets]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblUtilityAccountSets].[intGLAsset] = TEMP.strOldGLNumber
	
	UPDATE [tblUtilityAccountSets] SET [tblUtilityAccountSets].[intGLRevenue] = ISNULL(TEMP.intGLNumber, [tblUtilityAccountSets].[intGLRevenue]) FROM [tblUtilityAccountSets]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblUtilityAccountSets].[intGLRevenue] = TEMP.strOldGLNumber
	
	UPDATE [tblUtilityAccountSets] SET [tblUtilityAccountSets].[intGLExpCOGS] = ISNULL(TEMP.intGLNumber, [tblUtilityAccountSets].[intGLExpCOGS]) FROM [tblUtilityAccountSets]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblUtilityAccountSets].[intGLExpCOGS] = TEMP.strOldGLNumber	
	
	UPDATE [tblUtilityAccountSets] SET [tblUtilityAccountSets].[intGLVariance] = ISNULL(TEMP.intGLNumber, [tblUtilityAccountSets].[intGLVariance]) FROM [tblUtilityAccountSets]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblUtilityAccountSets].[intGLVariance] = TEMP.strOldGLNumber	
	
	UPDATE [tblUtilityAccountSetsUnassigned] SET [tblUtilityAccountSetsUnassigned].[intGLRevenue] = ISNULL(TEMP.intGLNumber, [tblUtilityAccountSetsUnassigned].[intGLRevenue]) FROM [tblUtilityAccountSetsUnassigned]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblUtilityAccountSetsUnassigned].[intGLRevenue] = TEMP.strOldGLNumber
	
	UPDATE [tblUtilityAccountSetsUnassigned] SET [tblUtilityAccountSetsUnassigned].[intGLExpCOGS] = ISNULL(TEMP.intGLNumber, [tblUtilityAccountSetsUnassigned].[intGLExpCOGS]) FROM [tblUtilityAccountSetsUnassigned]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblUtilityAccountSetsUnassigned].[intGLExpCOGS] = TEMP.strOldGLNumber	
	
	UPDATE [tblUtilityAccountSetsUnassigned] SET [tblUtilityAccountSetsUnassigned].[intGLVariance] = ISNULL(TEMP.intGLNumber, [tblUtilityAccountSetsUnassigned].[intGLVariance]) FROM [tblUtilityAccountSetsUnassigned]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblUtilityAccountSetsUnassigned].[intGLVariance] = TEMP.strOldGLNumber
	
	UPDATE [tblInvIntReqDoc] SET [tblInvIntReqDoc].[intAccount] = ISNULL(TEMP.intGLNumber, [tblInvIntReqDoc].[intAccount]) FROM [tblInvIntReqDoc]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblInvIntReqDoc].[intAccount] = TEMP.strOldGLNumber
	
	UPDATE [tblInvIssReqDoc] SET [tblInvIssReqDoc].[intAccount] = ISNULL(TEMP.intGLNumber, [tblInvIssReqDoc].[intAccount]) FROM [tblInvIssReqDoc]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblInvIssReqDoc].[intAccount] = TEMP.strOldGLNumber
	
	UPDATE [tblInvAdjDoc] SET [tblInvAdjDoc].[intAccount] = ISNULL(TEMP.intGLNumber, [tblInvAdjDoc].[intAccount]) FROM [tblInvAdjDoc]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblInvAdjDoc].[intAccount] = TEMP.strOldGLNumber
	
	UPDATE [tblInvAsmDoc] SET [tblInvAsmDoc].[intAccount] = ISNULL(TEMP.intGLNumber, [tblInvAsmDoc].[intAccount]) FROM [tblInvAsmDoc]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblInvAsmDoc].[intAccount] = TEMP.strOldGLNumber
	
	UPDATE [tblVendPay] SET [tblVendPay].[intBankAcct] = ISNULL(TEMP.intGLNumber, [tblVendPay].[intBankAcct]) FROM [tblVendPay]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblVendPay].[intBankAcct] = TEMP.strOldGLNumber
	
	UPDATE [tblPurchRE] SET [tblPurchRE].[intAccount] = ISNULL(TEMP.intGLNumber, [tblPurchRE].[intAccount]) FROM [tblPurchRE]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblPurchRE].[intAccount] = TEMP.strOldGLNumber
	
	UPDATE [tblInvoiceDocP] SET [tblInvoiceDocP].[intAccount] = ISNULL(TEMP.intGLNumber, [tblInvoiceDocP].[intAccount]) FROM [tblInvoiceDocP]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblInvoiceDocP].[intAccount] = TEMP.strOldGLNumber	
	
	UPDATE [tblCustPay] SET [tblCustPay].[intBankAcct] = ISNULL(TEMP.intGLNumber, [tblCustPay].[intBankAcct]) FROM [tblCustPay]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblCustPay].[intBankAcct] = TEMP.strOldGLNumber
	
	UPDATE [tblSalesRE] SET [tblSalesRE].[intAccount] = ISNULL(TEMP.intGLNumber, [tblSalesRE].[intAccount]) FROM [tblSalesRE]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblSalesRE].[intAccount] = TEMP.strOldGLNumber
	
	UPDATE [tblTenderTypes] SET [tblTenderTypes].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblTenderTypes].[intGLNumber]) FROM [tblTenderTypes]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblTenderTypes].[intGLNumber] = TEMP.strOldGLNumber	
	
	UPDATE [tblInvoiceDoc] SET [tblInvoiceDoc].[intAccount] = ISNULL(TEMP.intGLNumber, [tblInvoiceDoc].[intAccount]) FROM [tblInvoiceDoc]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblInvoiceDoc].[intAccount] = TEMP.strOldGLNumber
	
	UPDATE [tblAssetTypes] SET [tblAssetTypes].[intDepAccNo] = ISNULL(TEMP.intGLNumber, [tblAssetTypes].[intDepAccNo]) FROM [tblAssetTypes]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAssetTypes].[intDepAccNo] = TEMP.strOldGLNumber
		
	UPDATE [tblAssetTypes] SET [tblAssetTypes].[intExpAccNo] = ISNULL(TEMP.intGLNumber, [tblAssetTypes].[intExpAccNo]) FROM [tblAssetTypes]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAssetTypes].[intExpAccNo] = TEMP.strOldGLNumber
	
	UPDATE [tblAssetTypes] SET [tblAssetTypes].[intAssetAccNo] = ISNULL(TEMP.intGLNumber, [tblAssetTypes].[intAssetAccNo]) FROM [tblAssetTypes]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAssetTypes].[intAssetAccNo] = TEMP.strOldGLNumber
	
	UPDATE [tblAssetTypes] SET [tblAssetTypes].[intRepairAccNo] = ISNULL(TEMP.intGLNumber, [tblAssetTypes].[intRepairAccNo]) FROM [tblAssetTypes]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAssetTypes].[intRepairAccNo] = TEMP.strOldGLNumber
	
	UPDATE [tblBankRecOTP] SET [tblBankRecOTP].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblBankRecOTP].[intGLNumber]) FROM [tblBankRecOTP]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblBankRecOTP].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblJournalEntryDocCBRE] SET [tblJournalEntryDocCBRE].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblJournalEntryDocCBRE].[intGLNumber]) FROM [tblJournalEntryDocCBRE]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblJournalEntryDocCBRE].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblJournalEntryDocCB] SET [tblJournalEntryDocCB].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblJournalEntryDocCB].[intGLNumber]) FROM [tblJournalEntryDocCB]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblJournalEntryDocCB].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblUtilityTaxDef] SET [tblUtilityTaxDef].[intPurchAcct] = ISNULL(TEMP.intGLNumber, [tblUtilityTaxDef].[intPurchAcct]) FROM [tblUtilityTaxDef]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblUtilityTaxDef].[intPurchAcct] = TEMP.strOldGLNumber
	
	UPDATE [tblUtilityTaxDef] SET [tblUtilityTaxDef].[intSalesAcct] = ISNULL(TEMP.intGLNumber, [tblUtilityTaxDef].[intSalesAcct]) FROM [tblUtilityTaxDef]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblUtilityTaxDef].[intSalesAcct] = TEMP.strOldGLNumber
	
	UPDATE [tblAccountsDeptHist] SET [tblAccountsDeptHist].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblAccountsDeptHist].[intGLNumber]) FROM [tblAccountsDeptHist]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblAccountsDeptHist].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblBankRecJE] SET [tblBankRecJE].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblBankRecJE].[intGLNumber]) FROM [tblBankRecJE]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblBankRecJE].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblInvoiceDocREV] SET [tblInvoiceDocREV].[intAccount] = ISNULL(TEMP.intGLNumber, [tblInvoiceDocREV].[intAccount]) FROM [tblInvoiceDocREV]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblInvoiceDocREV].[intAccount] = TEMP.strOldGLNumber
	
	UPDATE [tblInvoiceDocSplitPmt] SET [tblInvoiceDocSplitPmt].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblInvoiceDocSplitPmt].[intGLNumber]) FROM [tblInvoiceDocSplitPmt]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblInvoiceDocSplitPmt].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblPaymentPlanDeposit] SET [tblPaymentPlanDeposit].[intGLNumber] = ISNULL(TEMP.intGLNumber, [tblPaymentPlanDeposit].[intGLNumber]) FROM [tblPaymentPlanDeposit]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblPaymentPlanDeposit].[intGLNumber] = TEMP.strOldGLNumber
	
	UPDATE [tblVendors] SET [tblVendors].[intGLNumberAP] = ISNULL(TEMP.intGLNumber, [tblVendors].[intGLNumberAP])  FROM [tblVendors]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblVendors].[intGLNumberAP] = TEMP.strOldGLNumber

	UPDATE [tblVendors] SET [tblVendors].[intGLNumberPrePay] = ISNULL(TEMP.intGLNumber, [tblVendors].[intGLNumberPrePay])  FROM [tblVendors]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblVendors].[intGLNumberPrePay] = TEMP.strOldGLNumber

	UPDATE [tblCustomers] SET [tblCustomers].[intGLNumberAR] = ISNULL(TEMP.intGLNumber, [tblCustomers].[intGLNumberAR])  FROM [tblCustomers]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblCustomers].[intGLNumberAR] = TEMP.strOldGLNumber

	UPDATE [tblCustomers] SET [tblCustomers].[intGLNumberDeposit] = ISNULL(TEMP.intGLNumber, [tblCustomers].[intGLNumberDeposit])  FROM [tblCustomers]
	INNER JOIN (SELECT intGLNumber, strOldGLNumber FROM @tvpTblUpdateNewGLAccountNumber) AS TEMP ON [tblCustomers].[intGLNumberDeposit] = TEMP.strOldGLNumber

END
GO
/****** Object:  StoredProcedure [dbo].[prAccounts_Merge]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccounts_Merge]
(
    @SQintGLNumberFrom nvarchar(30),
	@SQintGLNumberTo nvarchar(30),
	@SQstrGLDescTo nvarchar(Max)
)
AS
BEGIN

	DECLARE @dteStartDate DateTime,@dteEndDate DateTime

	SELECT @dteStartDate=dteYearStarts,@dteEndDate=dteYearEnds FROM tblCompany
	
	ALTER TABLE tblJournalEntryDocCBDTPrj
	Drop Constraint FK_tblJournalEntryDocCBDTPrj_tblJournalEntryDocCBDT

	--Update Transaction From All Tables From GL Account to To GL Account
	UPDATE [dbo].[tblJournalEnt] SET intGLNumber=@SQintGLNumberTo FROM [dbo].[tblJournalEnt] 
	INNER JOIN [dbo].[tblJournal] ON tblJournalEnt.lngJourID = tblJournal.lngJourID
	WHERE intGLNumber=@SQintGLNumberFrom AND dteJournalDate BETWEEN @dteStartDate AND @dteEndDate

	UPDATE [dbo].[tblJournalEntryDocREDT] SET intGLNumber=@SQintGLNumberTo WHERE intGLNumber=@SQintGLNumberFrom
	
	UPDATE [dbo].[tblJournalEntryDocDT] SET intGLNumber=@SQintGLNumberTo,strDesc=@SQstrGLDescTo FROM [dbo].[tblJournalEntryDocDT] 
	INNER JOIN [dbo].[tblJournalEntryDoc] ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID
	WHERE intGLNumber=@SQintGLNumberFrom AND dteJournalDate BETWEEN @dteStartDate AND @dteEndDate

	UPDATE [dbo].[tblJournalEntryDocDT] SET strCuVeGeID=@SQintGLNumberTo,strCuVeGeDesc=@SQstrGLDescTo FROM [dbo].[tblJournalEntryDocDT] 
	INNER JOIN [dbo].[tblJournalEntryDoc] ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID
	WHERE strCuVeGeID=@SQintGLNumberFrom AND dteJournalDate BETWEEN @dteStartDate AND @dteEndDate

	UPDATE [dbo].[tblJournalEntryDocDTPrj] SET intGLNumber=@SQintGLNumberTo FROM [dbo].[tblJournalEntryDocDTPrj] 
	INNER JOIN [dbo].[tblJournalEntryDoc] ON tblJournalEntryDocDTPrj.strJEDocID = tblJournalEntryDoc.strJEDocID
	WHERE intGLNumber=@SQintGLNumberFrom AND dteJournalDate BETWEEN @dteStartDate AND @dteEndDate

	UPDATE [dbo].[tblJournalEntryDocDTApplied] SET strCuVeID=@SQintGLNumberTo WHERE strCuVeID=@SQintGLNumberFrom AND dteJournalDate BETWEEN @dteStartDate AND @dteEndDate

	UPDATE [dbo].[tblJournalEntryDocCB] SET intGLNumber=@SQintGLNumberTo,strDesc=@SQstrGLDescTo WHERE intGLNumber=@SQintGLNumberFrom AND dteJournalDate BETWEEN @dteStartDate AND @dteEndDate

	UPDATE [dbo].[tblJournalEntryDocCBDT] SET intGLNumber=@SQintGLNumberTo,strDesc=@SQstrGLDescTo FROM [dbo].[tblJournalEntryDocCBDT] 
	INNER JOIN [dbo].[tblJournalEntryDocCB] ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCB.strJEDocID
	WHERE tblJournalEntryDocCBDT.intGLNumber=@SQintGLNumberFrom AND dteJournalDate BETWEEN @dteStartDate AND @dteEndDate

	UPDATE [dbo].[tblJournalEntryDocCBDTPrj] SET intGLNumber=@SQintGLNumberTo FROM [dbo].[tblJournalEntryDocCBDTPrj] 
	INNER JOIN [dbo].[tblJournalEntryDocCB] ON tblJournalEntryDocCBDTPrj.strJEDocID = tblJournalEntryDocCB.strJEDocID
	WHERE tblJournalEntryDocCBDTPrj.intGLNumber=@SQintGLNumberFrom AND dteJournalDate BETWEEN @dteStartDate AND @dteEndDate
	
	UPDATE [dbo].[tblJournalEntryDocCBRE] SET intGLNumber=@SQintGLNumberTo WHERE intGLNumber=@SQintGLNumberFrom
	UPDATE [dbo].[tblJournalEntryDocCBREDT] SET intGLNumber=@SQintGLNumberTo WHERE intGLNumber=@SQintGLNumberFrom
	UPDATE [dbo].[tblInvoiceDocSplitPmt] SET intGLNumber=@SQintGLNumberTo WHERE intGLNumber=@SQintGLNumberFrom

	ALTER TABLE [dbo].[tblJournalEntryDocCBDTPrj]  WITH CHECK ADD  CONSTRAINT [FK_tblJournalEntryDocCBDTPrj_tblJournalEntryDocCBDT] FOREIGN KEY([strJEDocID], [intType], [intGLNumber], [intLineNo])
	REFERENCES [dbo].[tblJournalEntryDocCBDT] ([strJEDocID], [intType], [intGLNumber], [intLineNo])
	ON DELETE CASCADE
	
	ALTER TABLE [dbo].[tblJournalEntryDocCBDTPrj] CHECK CONSTRAINT [FK_tblJournalEntryDocCBDTPrj_tblJournalEntryDocCBDT]
	
	--Update Balance for From GL Account
	UPDATE tblAccounts SET decBalance = tblAccounts.decOpenBalance + ISNULL(tblJournalEnt.decAmount,0)  
	FROM [tblAccounts] 
	LEFT JOIN (
					SELECT intGLNumber,  SUM(decAmount) decAmount 
					FROM tblJournalEnt 
					WHERE tblJournalEnt.intGLNumber=@SQintGLNumberFrom 
					GROUP BY  intGLNumber
				) tblJournalEnt ON tblJournalEnt.intGLNumber=tblAccounts.intGLNumber
	WHERE [tblAccounts].intGLNumber=@SQintGLNumberFrom

		--Update Balance for To GL Account
	UPDATE tblAccounts SET decBalance = tblAccounts.decOpenBalance + ISNULL(tblJournalEnt.decAmount,0) 
	FROM [tblAccounts]
	INNER JOIN (
					SELECT intGLNumber, SUM(decAmount) decAmount 
					FROM tblJournalEnt 
					WHERE tblJournalEnt.intGLNumber=@SQintGLNumberTo
					GROUP BY  intGLNumber
				) tblJournalEnt ON tblJournalEnt.intGLNumber=tblAccounts.intGLNumber
	WHERE [tblAccounts].intGLNumber=@SQintGLNumberTo

	--Update Balance for From GL Account Department
	UPDATE tblAccountsDept SET decBalance = tblAccountsDept.decOpenBalance + ISNULL(tblJournalEnt.decAmount,0)  
	FROM [tblAccountsDept] 
	LEFT JOIN (
					SELECT intGLNumber, intDept, SUM(decAmount) decAmount 
					FROM tblJournalEnt 
					WHERE tblJournalEnt.intGLNumber=@SQintGLNumberFrom AND intDept IS NOT NULL
					GROUP BY  intGLNumber,intDept
				) tblJournalEnt ON tblJournalEnt.intGLNumber=tblAccountsDept.intGLNumber AND tblJournalEnt.intDept=tblAccountsDept.intDept
	WHERE tblAccountsDept.intGLNumber=@SQintGLNumberFrom

	--Update Balance for To GL Account Department
	UPDATE tblAccountsDept SET decBalance = tblAccountsDept.decOpenBalance + ISNULL(tblJournalEnt.decAmount,0) 
	FROM [tblAccountsDept]
	INNER JOIN (
					SELECT intGLNumber, intDept, SUM(decAmount) decAmount 
					FROM tblJournalEnt 
					WHERE tblJournalEnt.intGLNumber=@SQintGLNumberTo AND intDept IS NOT NULL
					GROUP BY  intGLNumber, intDept
				) tblJournalEnt ON tblJournalEnt.intGLNumber=tblAccountsDept.intGLNumber AND tblJournalEnt.intDept=tblAccountsDept.intDept
	WHERE [tblAccountsDept].intGLNumber=@SQintGLNumberTo

END
GO
/****** Object:  StoredProcedure [dbo].[prAccounts_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccounts_Save]
(
		@intGLNumber nvarchar(30) = null,
        @strDesc nvarchar(MAX) = null,
        @intAccType int = null,
        @intGroupCode int = null,
        @intAccClass int = null,
        @bitInactive bit = null,
        @decOpenBalance money = null,
        @decBalance money = null,
        @decLYOpenBalance money = null,
        @decLYEndBalance money = null,
        @bitBank bit = null,
        @bitRecon bit = null,
        @bitInventory bit = null,
        @bitBudget bit = null,
        @bitUsed bit = null,
        @bitUsedLY bit = null,
        @bitLinkREarnings bit = null,
        @bitLinkCEarnings bit = null,
        @bitLinkAP bit = null,
        @bitLinkPurDisc bit = null,
        @bitLinkAR bit = null,
        @bitLinkSalesDisc bit = null,
        @bitLinkAssCosts bit = null,
        @bitLinkAdjWriteOff bit = null,
        @bitIsLinkedAccount bit = null,
        @bitDefBank bit = null,
        @bitLinkDeposit bit = null,
        @bitLinkPrePay bit = null,
        @strField1 nvarchar(100) = null,
        @strField2 nvarchar(100) = null,
        @strField3 nvarchar(100) = null,
        @strField4 nvarchar(100) = null,
        @strField5 nvarchar(100) = null,
        @strField6 nvarchar(100) = null,
        @bitLinkExc bit = null,
        @bitAllowCenters bit = null,
        @intCheqNumber int = null,
        @strCurrency nvarchar(3) = null,
        @decOpenBalanceF money = null,
        @decBalanceF money = null,
        @decLYOpenBalanceF money = null,
        @decLYEndBalanceF money = null,
        @bitLinkGRV bit = null,
        @bitLinkAddCost bit = null,
		@bitLinkDelAdvice bit = null,
		@bitLinkWIP bit = null,
		@bitLinkManStandardCost bit = null
)
AS
	
	SET NOCOUNT ON;

    IF ((SELECT COUNT(*) FROM tblAccounts WHERE intGLNumber = @intGLNumber) = 0)
    BEGIN
        INSERT INTO [tblAccounts]
        (
            [intGLNumber],
			[strDesc],
			[intAccType],
			[intGroupCode],
			[intAccClass],
			[bitInactive],
			[decOpenBalance],
			[decBalance],
			[decLYOpenBalance],
			[decLYEndBalance],
			[bitBank],
			[bitRecon],
			[bitInventory],
			[bitBudget],
			[bitUsed],
			[bitUsedLY],
			[bitLinkREarnings],
			[bitLinkCEarnings],
			[bitLinkAP],
			[bitLinkPurDisc],
			[bitLinkAR],
			[bitLinkSalesDisc],
			[bitLinkAssCosts],
			[bitLinkAdjWriteOff],
			[bitIsLinkedAccount],
			[bitDefBank],
			[bitLinkDeposit],
			[bitLinkPrePay],
			[strField1],
			[strField2],
			[strField3],
			[strField4],
			[strField5],
			[strField6],
			[bitLinkExc],
			[bitAllowCenters],
			[intCheqNumber],
			[strCurrency],
			[decOpenBalanceF],
			[decBalanceF],
			[decLYOpenBalanceF],
			[decLYEndBalanceF],
			[bitLinkGRV],
			[bitLinkAddCost],
			[bitLinkDelAdvice],
			[bitLinkWIP],
			[bitLinkManStandardCost]
        )
        VALUES
        (
            @intGLNumber,
            @strDesc,
            @intAccType,
            @intGroupCode,
            @intAccClass,
            @bitInactive,
            @decOpenBalance,
            @decBalance,
            @decLYOpenBalance,
            @decLYEndBalance,
            @bitBank,
            @bitRecon,
            @bitInventory,
            @bitBudget,
            @bitUsed,
            @bitUsedLY,
            @bitLinkREarnings,
            @bitLinkCEarnings,
            @bitLinkAP,
            @bitLinkPurDisc,
            @bitLinkAR,
            @bitLinkSalesDisc,
            @bitLinkAssCosts,
            @bitLinkAdjWriteOff,
            @bitIsLinkedAccount,
            @bitDefBank,
            @bitLinkDeposit,
			@bitLinkPrePay,
            @strField1,
            @strField2,
            @strField3,
            @strField4,
            @strField5,
            @strField6,
            @bitLinkExc,
            @bitAllowCenters,
            @intCheqNumber,
            @strCurrency,
            @decOpenBalanceF,
            @decBalanceF,
            @decLYOpenBalanceF,
            @decLYEndBalanceF,
            @bitLinkGRV,
            @bitLinkAddCost,
			@bitLinkDelAdvice,
			@bitLinkWIP,
			@bitLinkManStandardCost
        )
    
        SELECT @intGLNumber
    END
    ELSE
    BEGIN
        UPDATE [tblAccounts] SET 
			[intGLNumber] = ISNULL(@intGLNumber, [intGLNumber]),
			[strDesc] = ISNULL(@strDesc, [strDesc]),
			[intAccType] = ISNULL(@intAccType, [intAccType]),
			[intGroupCode] = ISNULL(@intGroupCode, [intGroupCode]),
			[intAccClass] = ISNULL(@intAccClass, [intAccClass]),
			[bitInactive] = ISNULL(@bitInactive, [bitInactive]),
			[decOpenBalance] = ISNULL(@decOpenBalance, [decOpenBalance]),
			[decBalance] = ISNULL(@decBalance, [decBalance]), 
			[decLYOpenBalance] = ISNULL(@decLYOpenBalance, [decLYOpenBalance]),
			[decLYEndBalance] = ISNULL(@decLYEndBalance, [decLYEndBalance]),
			[bitBank] = ISNULL(@bitBank, [bitBank]),
			[bitRecon] = ISNULL(@bitRecon, [bitRecon]),
			[bitInventory] = ISNULL(@bitInventory, [bitInventory]),
			[bitBudget] = ISNULL(@bitBudget, [bitBudget]),
			[bitUsed] = ISNULL(@bitUsed, [bitUsed]),
			[bitUsedLY] = ISNULL(@bitUsedLY, [bitUsedLY]),
			[bitLinkREarnings] = ISNULL(@bitLinkREarnings, [bitLinkREarnings]),
			[bitLinkCEarnings] = ISNULL(@bitLinkCEarnings, [bitLinkCEarnings]),
			[bitLinkAP] = ISNULL(@bitLinkAP, [bitLinkAP]),
			[bitLinkPurDisc] = ISNULL(@bitLinkPurDisc, [bitLinkPurDisc]),
			[bitLinkAR] = ISNULL(@bitLinkAR, [bitLinkAR]),
			[bitLinkSalesDisc] = ISNULL(@bitLinkSalesDisc, [bitLinkSalesDisc]),
			[bitLinkAssCosts] = ISNULL(@bitLinkAssCosts, [bitLinkAssCosts]),
			[bitLinkAdjWriteOff] = ISNULL(@bitLinkAdjWriteOff, [bitLinkAdjWriteOff]),
			[bitIsLinkedAccount] = ISNULL(@bitIsLinkedAccount, [bitIsLinkedAccount]),
			[bitDefBank] = ISNULL(@bitDefBank, [bitDefBank]),
			[bitLinkDeposit] = ISNULL(@bitLinkDeposit, [bitLinkDeposit]),
			[bitLinkPrePay] = ISNULL(@bitLinkPrePay, [bitLinkPrePay]),
			[strField1] = ISNULL(@strField1, [strField1]),
			[strField2] = ISNULL(@strField2, [strField2]),
			[strField3] = ISNULL(@strField3, [strField3]),
			[strField4] = ISNULL(@strField4, [strField4]),
			[strField5] = ISNULL(@strField5, [strField5]),
			[strField6] = ISNULL(@strField6, [strField6]),
			[bitLinkExc] = ISNULL(@bitLinkExc, [bitLinkExc]),
			[bitAllowCenters] = ISNULL(@bitAllowCenters, [bitAllowCenters]),
			[intCheqNumber] = ISNULL(@intCheqNumber, [intCheqNumber]),
			[strCurrency] = ISNULL(@strCurrency, [strCurrency]),
			[decOpenBalanceF] = ISNULL(@decOpenBalanceF, [decOpenBalanceF]),
			[decBalanceF] = ISNULL(@decBalanceF, [decBalanceF]),
			[decLYOpenBalanceF] = ISNULL(@decLYOpenBalanceF, [decLYOpenBalanceF]),
			[decLYEndBalanceF] = ISNULL(@decLYEndBalanceF, [decLYEndBalanceF]),
			[bitLinkGRV] = ISNULL(@bitLinkGRV, [bitLinkGRV]),
			[bitLinkAddCost] = ISNULL(@bitLinkAddCost, [bitLinkAddCost]),
			[bitLinkDelAdvice] = ISNULL(@bitLinkDelAdvice, [bitLinkDelAdvice]),
			[bitLinkWIP] = ISNULL(@bitLinkWIP, [bitLinkWIP]),
            [bitLinkManStandardCost] = ISNULL(@bitLinkManStandardCost, [bitLinkManStandardCost])
        WHERE
            [intGLNumber] = @intGLNumber

        SELECT @intGLNumber
    END

    RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prAccounts_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccounts_Search]
(
    @intGLNumber nvarchar(30) = null,
        @strDesc nvarchar(MAX) = null,
        @intAccType int = null,
        @intGroupCode int = null,
        @intAccClass int = null,
        @bitInactive bit = null,
        @decOpenBalance money = null,
        @decBalance money = null,
        @decLYOpenBalance money = null,
        @decLYEndBalance money = null,
        @bitBank bit = null,
        @bitRecon bit = null,
        @bitInventory bit = null,
        @bitBudget bit = null,
        @bitUsed bit = null,
        @bitUsedLY bit = null,
        @bitLinkREarnings bit = null,
        @bitLinkCEarnings bit = null,
        @bitLinkAP bit = null,
        @bitLinkPurDisc bit = null,
        @bitLinkAR bit = null,
        @bitLinkSalesDisc bit = null,
        @bitLinkAssCosts bit = null,
        @bitLinkAdjWriteOff bit = null,
        @bitIsLinkedAccount bit = null,
        @bitDefBank bit = null,
        @bitLinkDeposit bit = null,
        @bitLinkPrePay bit = null,
        @strField1 nvarchar(100) = null,
        @strField2 nvarchar(100) = null,
        @strField3 nvarchar(100) = null,
        @strField4 nvarchar(100) = null,
        @strField5 nvarchar(100) = null,
        @strField6 nvarchar(100) = null,
        @bitLinkExc bit = null,
        @bitAllowCenters bit = null,
        @intCheqNumber int = null,
        @strCurrency nvarchar(3) = null,
        @decOpenBalanceF money = null,
        @decBalanceF money = null,
        @decLYOpenBalanceF money = null,
        @decLYEndBalanceF money = null,
        @bitLinkGRV bit = null,
        @bitLinkAddCost bit = null,
		@bitLinkDelAdvice bit = null,
		@bitLinkWIP bit = null,
		@bitLinkManStandardCost bit = null

)
AS
    SET NOCOUNT ON

    SELECT 
        [intGLNumber],
        [strDesc],
        [intAccType],
        [intGroupCode],
        [intAccClass],
        [bitInactive],
        [decOpenBalance],
        [decBalance],
        [decLYOpenBalance],
        [decLYEndBalance],
        [bitBank],
        [bitRecon],
        [bitInventory],
        [bitBudget],
        [bitUsed],
        [bitUsedLY],
        [bitLinkREarnings],
        [bitLinkCEarnings],
        [bitLinkAP],
        [bitLinkPurDisc],
        [bitLinkAR],
        [bitLinkSalesDisc],
        [bitLinkAssCosts],
        [bitLinkAdjWriteOff],
        [bitIsLinkedAccount],
        [bitDefBank],
        [bitLinkDeposit],
        [bitLinkPrePay],
        [strField1],
        [strField2],
        [strField3],
        [strField4],
        [strField5],
        [strField6],
        [bitLinkExc],
        [bitAllowCenters],
        [intCheqNumber],
        [strCurrency],
        [decOpenBalanceF],
        [decBalanceF],
        [decLYOpenBalanceF],
        [decLYEndBalanceF],
        [bitLinkGRV],
        [bitLinkAddCost],
		[bitLinkDelAdvice],
		[bitLinkWIP],
		[bitLinkManStandardCost]
    FROM 
        [tblAccounts]
	 WHERE
        (([intGLNumber] = @intGLNumber) OR (@intGLNumber Is Null)) AND 
        (([strDesc] = @strDesc) OR (@strDesc Is Null)) AND 
        (([intAccType] = @intAccType) OR (@intAccType Is Null)) AND 
        (([intGroupCode] = @intGroupCode) OR (@intGroupCode Is Null)) AND 
        (([intAccClass] = @intAccClass) OR (@intAccClass Is Null)) AND 
        (([bitInactive] = @bitInactive) OR (@bitInactive Is Null)) AND
        (([decOpenBalance] = @decOpenBalance) OR (@decOpenBalance Is Null)) AND
        (([decBalance] = @decBalance) OR (@decBalance Is Null)) AND
        (([decLYOpenBalance] = @decLYOpenBalance) OR (@decLYOpenBalance Is Null)) AND
        (([decLYEndBalance] = @decLYEndBalance) OR (@decLYEndBalance Is Null)) AND
        (([bitBank] = @bitBank) OR (@bitBank Is Null)) AND
        (([bitRecon] = @bitRecon) OR (@bitRecon Is Null)) AND
        (([bitInventory] = @bitInventory) OR (@bitInventory Is Null)) AND
        (([bitBudget] = @bitBudget) OR (@bitBudget Is Null)) AND
        (([bitUsed] = @bitUsed) OR (@bitUsed Is Null)) AND
        (([bitUsedLY] = @bitUsedLY) OR (@bitUsedLY Is Null)) AND
        (([bitLinkREarnings] = @bitLinkREarnings) OR (@bitLinkREarnings Is Null)) AND
        (([bitLinkCEarnings] = @bitLinkCEarnings) OR (@bitLinkCEarnings Is Null)) AND
        (([bitLinkAP] = @bitLinkAP) OR (@bitLinkAP Is Null)) AND
        (([bitLinkPurDisc] = @bitLinkPurDisc) OR (@bitLinkPurDisc Is Null)) AND
        (([bitLinkAR] = @bitLinkAR) OR (@bitLinkAR Is Null)) AND
        (([bitLinkSalesDisc] = @bitLinkSalesDisc) OR (@bitLinkSalesDisc Is Null)) AND
        (([bitLinkAssCosts] = @bitLinkAssCosts) OR (@bitLinkAssCosts Is Null)) AND
        (([bitLinkAdjWriteOff] = @bitLinkAdjWriteOff) OR (@bitLinkAdjWriteOff Is Null)) AND
        (([bitIsLinkedAccount] = @bitIsLinkedAccount) OR (@bitIsLinkedAccount Is Null)) AND
        (([bitDefBank] = @bitDefBank) OR (@bitDefBank Is Null)) AND
        (([bitLinkDeposit] = @bitLinkDeposit) OR (@bitLinkDeposit Is Null)) AND
        (([bitLinkPrePay] = @bitLinkPrePay) OR (@bitLinkPrePay Is Null)) AND
        (([strField1] = @strField1) OR (@strField1 Is Null)) AND
        (([strField2] = @strField2) OR (@strField2 Is Null)) AND
        (([strField3] = @strField3) OR (@strField3 Is Null)) AND
        (([strField4] = @strField4) OR (@strField4 Is Null)) AND
        (([strField5] = @strField5) OR (@strField5 Is Null)) AND
        (([strField6] = @strField6) OR (@strField6 Is Null)) AND
        (([bitLinkExc] = @bitLinkExc) OR (@bitLinkExc Is Null)) AND
        (([bitAllowCenters] = @bitAllowCenters) OR (@bitAllowCenters Is Null)) AND
        (([intCheqNumber] = @intCheqNumber) OR (@intCheqNumber Is Null)) AND
        (([strCurrency] = @strCurrency) OR (@strCurrency Is Null)) AND
        (([decOpenBalanceF] = @decOpenBalanceF) OR (@decOpenBalanceF Is Null)) AND
        (([decBalanceF] = @decBalanceF) OR (@decBalanceF Is Null)) AND
        (([decLYOpenBalanceF] = @decLYOpenBalanceF) OR (@decLYOpenBalanceF Is Null)) AND
        (([decLYEndBalanceF] = @decLYEndBalanceF) OR (@decLYEndBalanceF Is Null)) AND
        (([bitLinkGRV] = @bitLinkGRV) OR (@bitLinkGRV Is Null)) AND
        (([bitLinkAddCost] = @bitLinkAddCost) OR (@bitLinkAddCost Is Null)) AND
        (([bitLinkDelAdvice] = @bitLinkDelAdvice) OR (@bitLinkDelAdvice Is Null)) AND
        (([bitLinkWIP] = @bitLinkWIP) OR (@bitLinkWIP Is Null)) AND
        (([bitLinkManStandardCost] = @bitLinkManStandardCost) OR (@bitLinkManStandardCost Is Null))
GO
/****** Object:  StoredProcedure [dbo].[prAccounts_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccounts_Select]
(
    @intGLNumber nvarchar(30)
)
AS
    SET NOCOUNT ON

    SELECT 
        [intGLNumber],
        [strDesc],
        [intAccType],
        [intGroupCode],
        [intAccClass],
        [bitInactive],
        [decOpenBalance],
        [decBalance],
        [decLYOpenBalance],
        [decLYEndBalance],
        [bitBank],
        [bitRecon],
        [bitInventory],
        [bitBudget],
        [bitUsed],
        [bitUsedLY],
        [bitLinkREarnings],
        [bitLinkCEarnings],
        [bitLinkAP],
        [bitLinkPurDisc],
        [bitLinkAR],
        [bitLinkSalesDisc],
        [bitLinkAssCosts],
        [bitLinkAdjWriteOff],
        [bitIsLinkedAccount],
        [bitDefBank],
        [bitLinkDeposit],
        [bitLinkPrePay],
        [strField1],
        [strField2],
        [strField3],
        [strField4],
        [strField5],
        [strField6],
        [bitLinkExc],
        [bitAllowCenters],
        [intCheqNumber],
        [strCurrency],
        [decOpenBalanceF],
        [decBalanceF],
        [decLYOpenBalanceF],
        [decLYEndBalanceF],
        [bitLinkGRV],
        [bitLinkAddCost],
		[bitLinkDelAdvice],
		[bitLinkWIP],
		[bitLinkManStandardCost]
    FROM 
        [tblAccounts]
    WHERE 
        [intGLNumber] = @intGLNumber
GO
/****** Object:  StoredProcedure [dbo].[prAccounts_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccounts_SelectAll]
AS

	SET NOCOUNT ON

    SELECT 
        [intGLNumber],
        [strDesc],
        [intAccType],
        [intGroupCode],
        [intAccClass],
        [bitInactive],
        [decOpenBalance],
        [decBalance],
        [decLYOpenBalance],
        [decLYEndBalance],
        [bitBank],
        [bitRecon],
        [bitInventory],
        [bitBudget],
        [bitUsed],
        [bitUsedLY],
        [bitLinkREarnings],
        [bitLinkCEarnings],
        [bitLinkAP],
        [bitLinkPurDisc],
        [bitLinkAR],
        [bitLinkSalesDisc],
        [bitLinkAssCosts],
        [bitLinkAdjWriteOff],
        [bitIsLinkedAccount],
        [bitDefBank],
        [bitLinkDeposit],
        [bitLinkPrePay],
        [strField1],
        [strField2],
        [strField3],
        [strField4],
        [strField5],
        [strField6],
        [bitLinkExc],
        [bitAllowCenters],
        [intCheqNumber],
        [strCurrency],
        [decOpenBalanceF],
        [decBalanceF],
        [decLYOpenBalanceF],
        [decLYEndBalanceF],
        [bitLinkGRV],
        [bitLinkAddCost],
		[bitLinkDelAdvice],
		[bitLinkManStandardCost]
    FROM 
        [tblAccounts]
GO
/****** Object:  StoredProcedure [dbo].[prAccounts_UpdateGroupCodeTypeClass]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccounts_UpdateGroupCodeTypeClass]
	@intAccType int = null,
    @intGroupCode int = null,
    @intAccClass int = null,
	@intGLNumber nvarchar(30) = null
AS
BEGIN
	SET NOCOUNT ON;

	UPDATE [tblAccounts] SET 
			[intGLNumber] = ISNULL(@intGLNumber, [intGLNumber]),
			[intAccType] = ISNULL(@intAccType, [intAccType]),
			[intGroupCode] = ISNULL(@intGroupCode, [intGroupCode]),
			[intAccClass] = ISNULL(@intAccClass, [intAccClass])
		WHERE
            [intGLNumber] = @intGLNumber
END
GO
/****** Object:  StoredProcedure [dbo].[prAccountsDept_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccountsDept_Save]
(
	@intGLNumber nvarchar(30) = null,	
	@intDept int = null,
	@strAcctDept nvarchar(max) = null,
	@decOpenBalance money = null,
	@decBalance money = null,
	@decLYOpenBalance money = null,
	@decLYEndBalance money = null,
	@bitBudget bit = null,
	@bitUsed bit = null,
	@bitUsedLY bit = null,
	@decOpenBalanceF money = null,
	@decBalanceF money = null,
	@decLYOpenBalanceF money = null,
	@decLYEndBalanceF money = null
)
AS

	SET NOCOUNT ON;

   IF ((SELECT COUNT(*) FROM tblAccountsDept WHERE intGLNumber = @intGLNumber AND intDept = @intDept) = 0)
	BEGIN
        INSERT INTO [tblAccountsDept]
        (
            [intGLNumber],
			[intDept],
			[strAcctDept],
			[decOpenBalance],
			[decBalance],
			[decLYOpenBalance],
			[decLYEndBalance],
			[bitBudget],
			[bitUsed],
			[bitUsedLY],
			[decOpenBalanceF],
			[decBalanceF],
			[decLYOpenBalanceF],
			[decLYEndBalanceF]
        )
        VALUES
        (
            @intGLNumber,
            @intDept,
            @strAcctDept,
            @decOpenBalance,
            @decBalance,
            @decLYOpenBalance,
            @decLYEndBalance,
            @bitBudget,
            @bitUsed,
            @bitUsedLY,
            @decOpenBalanceF,
            @decBalanceF,
            @decLYOpenBalanceF,
            @decLYEndBalanceF
        )
    
	    SELECT @intGLNumber
    END
    ELSE
    BEGIN
        UPDATE [tblAccountsDept] SET 
			[intGLNumber] = ISNULL(@intGLNumber, [intGLNumber]),
			[intDept] = ISNULL(@intDept, [intDept]),
			[strAcctDept] = ISNULL(@strAcctDept, [strAcctDept]),
			[decOpenBalance] = ISNULL(@decOpenBalance, [decOpenBalance]),
			[decBalance] = ISNULL(@decBalance, [decBalance]),
			[decLYOpenBalance] = ISNULL(@decLYOpenBalance, [decLYOpenBalance]),
			[decLYEndBalance] = ISNULL(@decLYEndBalance, [decLYEndBalance]),
			[bitBudget] = ISNULL(@bitBudget, [bitBudget]), 
			[bitUsed] = ISNULL(@bitUsed, [bitUsed]),
			[bitUsedLY] = ISNULL(@bitUsedLY, [bitUsedLY]),
			[decOpenBalanceF] = ISNULL(@decOpenBalanceF, [decOpenBalanceF]),
			[decBalanceF] = ISNULL(@decBalanceF, [decBalanceF]),
			[decLYOpenBalanceF] = ISNULL(@decLYOpenBalanceF, [decLYOpenBalanceF]),
			[decLYEndBalanceF] = ISNULL(@decLYEndBalanceF, [decLYEndBalanceF])
        WHERE
            [intGLNumber] = @intGLNumber AND
			[intDept] = @intDept

        SELECT @intGLNumber
    END

    RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prAccountsHistFromAccounts_Add]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccountsHistFromAccounts_Add]
(
	@intGLNumber nvarchar(30) = null,
	@uidYearID uniqueidentifier = null
)
AS

	SET NOCOUNT ON;

    INSERT INTO tblAccountsHist
		SELECT @uidYearID
			,intGLNumber
			,strDesc
			,intAccType
			,intGroupCode
			,intAccClass
			,bitInactive
			,0
			,0
			,0
			,0
			,bitBank
			,bitRecon
			,bitInventory
			,bitBudget
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,strField1
			,strField2
			,strField3
			,strField4
			,strField5
			,strField6
			,0
			,bitAllowCenters
			,intCheqNumber
			,strCurrency
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
		FROM tblAccounts
		WHERE intGLNumber = @intGLNumber

		SELECT @intGLNumber

	RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prAccountsLegend_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccountsLegend_Delete]
	(
		@intAccType INT = NULL
	)
	AS
	BEGIN
		SET NOCOUNT ON
		
		DELETE FROM tblAccountsLegend WHERE intAccType = @intAccType	
	END
	
GO
/****** Object:  StoredProcedure [dbo].[prAccountsLegend_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccountsLegend_Save]
	(
		@intAccType INT = NULL
		,@intGLNumberFrom INT = NULL
		,@intGLNumberTo INT = NULL
	)
	AS
	BEGIN
		SET NOCOUNT ON
	
		IF ((SELECT count(*) FROM tblAccountsLegend	WHERE intAccType = @intAccType) = 0)
		BEGIN
			INSERT INTO tblAccountsLegend (
				intAccType
				,intGLNumberFrom
				,intGLNumberTo
				)
			VALUES (
				@intAccType
				,@intGLNumberFrom
				,@intGLNumberTo
				)
	
			SELECT @intAccType
		END
		ELSE
		BEGIN
			UPDATE tblAccountsLegend
			SET intGLNumberFrom = ISNULL(@intGLNumberFrom, intGLNumberFrom)
				,intGLNumberTo = ISNULL(@intGLNumberTo, intGLNumberTo)
			WHERE intAccType = @intAccType
	
			SELECT @intAccType
		END
	END
	
GO
/****** Object:  StoredProcedure [dbo].[prAccountsLegend_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccountsLegend_Search] 
	(
		@intAccType INT = NULL
		,@intGLNumberFrom INT = NULL
		,@intGLNumberTo INT = NULL
	)
	AS
	BEGIN
		SET NOCOUNT ON
		SELECT 
	        [intAccType],
	        [intGLNumberFrom],
	        [intGLNumberTo]
	    FROM 
	        [tblAccountsLegend]
	    WHERE
		(([intAccType] = @intAccType) OR (@intAccType IS NULL)) AND
		(([intGLNumberFrom] = @intGLNumberFrom) OR (@intGLNumberFrom IS NULL)) AND
		(([intGLNumberTo] = @intGLNumberTo) OR (@intGLNumberTo IS NULL))
	END
	
GO
/****** Object:  StoredProcedure [dbo].[prAccountsLegend_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccountsLegend_Select]
	(
		@intAccType int 
	)
	AS
	BEGIN
		SET NOCOUNT ON;
		SELECT 
		   [intAccType]
	      ,[intGLNumberFrom]
	      ,[intGLNumberTo]
	  FROM [tblAccountsLegend]
	  WHERE [intAccType] = @intAccType
END
	
GO
/****** Object:  StoredProcedure [dbo].[prAccountsLegend_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccountsLegend_SelectAll]
	AS
	BEGIN
		SET NOCOUNT ON;
	
		SELECT 
		   [intAccType]
	      ,[intGLNumberFrom]
	      ,[intGLNumberTo]
	  FROM [tblAccountsLegend]
	END
	
GO
/****** Object:  StoredProcedure [dbo].[prAccountsLYFromAccounts_Add]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccountsLYFromAccounts_Add]
(
	@intGLNumber nvarchar(30) = null
)
AS

	SET NOCOUNT ON;

    INSERT INTO tblAccountsLY
		SELECT intGLNumber
			,strDesc
			,intAccType
			,intGroupCode
			,intAccClass
			,bitInactive
			,0
			,0
			,0
			,0
			,bitBank
			,bitRecon
			,bitInventory
			,bitBudget
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,strField1
			,strField2
			,strField3
			,strField4
			,strField5
			,strField6
			,0
			,bitAllowCenters
			,intCheqNumber
			,strCurrency
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
		FROM tblAccounts
		WHERE intGLNumber = @intGLNumber

		SELECT @intGLNumber

	RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prAccountsMerge_ValidateDept]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccountsMerge_ValidateDept]
(
	@SQintGLNumberFrom nvarchar(30),
	@SQintGLNumberTo nvarchar(30)
)
AS
BEGIN
	
	SELECT * FROM tblJournalEnt WHERE intGLNumber=@SQintGLNumberFrom 
	AND intDept NOT IN (Select intDept from tblAccountsDept WHERE tblAccountsDept.intGLNumber=@SQintGLNumberTo) AND intDept IS NOT NULL

END
GO
/****** Object:  StoredProcedure [dbo].[prAccountsSec_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccountsSec_Delete]
(
	@intGLNumber nvarchar(30) = null
)	
AS

	SET NOCOUNT ON;

	DELETE FROM [tblAccountsSec] WHERE [intGLNumber] = @intGLNumber
GO
/****** Object:  StoredProcedure [dbo].[prAccountsSec_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAccountsSec_Save]
(
	@intGLNumber nvarchar(30) = null,
	@strUserName nvarchar(20) = null
)	
AS

	SET NOCOUNT ON;

	BEGIN
        INSERT INTO [tblAccountsSec]
        (
            [intGLNumber],
			[strUserName]
        )
        VALUES
        (
            @intGLNumber,
            @strUserName
        )
    
        SELECT @intGLNumber
    END
    
    RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prAcctBudgets_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAcctBudgets_Save]
(
	@intGLNumber nvarchar(30) = null,
	@decPeriod1 money = null,
	@decPeriod2 money = null,
	@decPeriod3 money = null,
	@decPeriod4 money = null,
	@decPeriod5 money = null,
	@decPeriod6 money = null,
	@decPeriod7 money = null,
	@decPeriod8 money = null,
	@decPeriod9 money = null,
	@decPeriod10 money = null,
	@decPeriod11 money = null,
	@decPeriod12 money = null
)
AS

	SET NOCOUNT ON;

    IF ((SELECT COUNT(*) FROM tblAcctBudgets WHERE intGLNumber = @intGLNumber) = 0)
	BEGIN
        INSERT INTO [tblAcctBudgets]
        (
            [intGLNumber],
			[decPeriod1],
			[decPeriod2],
			[decPeriod3],
			[decPeriod4],
			[decPeriod5],
			[decPeriod6],
			[decPeriod7],
			[decPeriod8],
			[decPeriod9],
			[decPeriod10],
			[decPeriod11],
			[decPeriod12]
        )
        VALUES
        (
            @intGLNumber,
			@decPeriod1,
			@decPeriod2,
			@decPeriod3,
			@decPeriod4,
			@decPeriod5,
			@decPeriod6,
			@decPeriod7,
			@decPeriod8,
			@decPeriod9,
			@decPeriod10,
			@decPeriod11,
			@decPeriod12
        )
    
        SELECT @intGLNumber
    END
    ELSE
    BEGIN
        UPDATE [tblAcctBudgets] SET 
			[intGLNumber] = ISNULL(@intGLNumber, [intGLNumber]),
			[decPeriod1] = ISNULL(@decPeriod1, [decPeriod1]),
			[decPeriod2] = ISNULL(@decPeriod2, [decPeriod2]),
			[decPeriod3] = ISNULL(@decPeriod3, [decPeriod3]),
			[decPeriod4] = ISNULL(@decPeriod4, [decPeriod4]),
			[decPeriod5] = ISNULL(@decPeriod5, [decPeriod5]),
			[decPeriod6] = ISNULL(@decPeriod6, [decPeriod6]),
			[decPeriod7] = ISNULL(@decPeriod7, [decPeriod7]),
			[decPeriod8] = ISNULL(@decPeriod8, [decPeriod8]),
			[decPeriod9] = ISNULL(@decPeriod9, [decPeriod9]),
			[decPeriod10] = ISNULL(@decPeriod10, [decPeriod10]),
			[decPeriod11] = ISNULL(@decPeriod11, [decPeriod11]),
			[decPeriod12] = ISNULL(@decPeriod12, [decPeriod12])
            
        WHERE
            [intGLNumber] = @intGLNumber

        SELECT @intGLNumber
    END

    RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prAcctHist_SelectAllYearId]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAcctHist_SelectAllYearId]
	
AS

	SET NOCOUNT ON;

    SELECT 
		[uidYearID] 
	FROM 
		[tblAcctHist]
GO
/****** Object:  StoredProcedure [dbo].[prAssetF_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetF_Delete]
(
    @strAssetCode nvarchar(20),
    @strFileName nvarchar(400)
)
AS
    SET NOCOUNT ON

    DELETE FROM [tblAssetF] WHERE [strAssetCode] = @strAssetCode AND 
[strFileName] = @strFileName
GO
/****** Object:  StoredProcedure [dbo].[prAssetF_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetF_Save]
(
    @strAssetCode nvarchar(20) = Null,
    @strFileName nvarchar(400) = Null,
    @dteModified datetime = Null,
    @strType nvarchar(500) = Null,
    @intSize bigint = Null,
    @strUserName nvarchar(20) = Null,
    @bitEnc bit = Null,
    @imgFile image = Null
)
AS
    SET NOCOUNT ON

    IF ((SELECT COUNT(*) FROM tblAssetF WHERE strAssetCode = @strAssetCode AND strFileName = @strFileName) = 0)
    BEGIN
        INSERT INTO [tblAssetF]
        (
            [strAssetCode],
            [strFileName],
            [dteModified],
            [strType],
            [intSize],
            [strUserName],
            [bitEnc],
            [imgFile]
        )
        VALUES
        (
            @strAssetCode,
            @strFileName,
            @dteModified,
            @strType,
            @intSize,
            @strUserName,
            @bitEnc,
            @imgFile
        )
    
        SELECT @strAssetCode
    END
    ELSE
    BEGIN
        UPDATE [tblAssetF] SET 
            [dteModified] = ISNULL(@dteModified, [dteModified]),
            [strType] = ISNULL(@strType, [strType]),
            [intSize] = ISNULL(@intSize, [intSize]),
            [strUserName] = ISNULL(@strUserName, [strUserName]),
            [bitEnc] = ISNULL(@bitEnc, [bitEnc]),
            [imgFile] = ISNULL(@imgFile, [imgFile])
        WHERE
            [strAssetCode] = @strAssetCode AND 
            [strFileName] = @strFileName

        SELECT @strAssetCode
    END

    RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prAssetF_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetF_Search]
(
    @strAssetCode nvarchar(20) = Null,
    @strFileName nvarchar(400) = Null,
    @dteModified datetime = Null,
    @strType nvarchar(500) = Null,
    @intSize bigint = Null,
    @strUserName nvarchar(20) = Null,
    @bitEnc bit = Null
)
AS
    SET NOCOUNT ON

    SELECT 
        [strAssetCode],
        [strFileName],
        [dteModified],
        [strType],
        [intSize],
        [strUserName],
        [bitEnc],
        [imgFile]
    FROM 
        [tblAssetF]
    WHERE
        (([strAssetCode] = @strAssetCode) OR (@strAssetCode Is Null)) AND 
        (([strFileName] = @strFileName) OR (@strFileName Is Null)) AND 
        (([dteModified] = @dteModified) OR (@dteModified Is Null)) AND 
        (([strType] = @strType) OR (@strType Is Null)) AND 
        (([intSize] = @intSize) OR (@intSize Is Null)) AND 
        (([strUserName] = @strUserName) OR (@strUserName Is Null)) AND 
        (([bitEnc] = @bitEnc) OR (@bitEnc Is Null))
GO
/****** Object:  StoredProcedure [dbo].[prAssetF_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetF_Select]
(
    @strAssetCode nvarchar(20),
    @strFileName nvarchar(400)
)
AS
    SET NOCOUNT ON

    SELECT 
        [strAssetCode],
        [strFileName],
        [dteModified],
        [strType],
        [intSize],
        [strUserName],
        [bitEnc],
        [imgFile]
    FROM 
        [tblAssetF]
    WHERE 
        [strAssetCode] = @strAssetCode AND 
        [strFileName] = @strFileName
GO
/****** Object:  StoredProcedure [dbo].[prAssetImg_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetImg_Save]
(
    @Image_ID int = Null,
    @strAssetCode nvarchar(20) = Null,
    @imgData image = Null,
    @bitDefaultImage bit = Null
)
AS
    SET NOCOUNT ON

    IF (@Image_ID IS NULL)
    BEGIN
        INSERT INTO [tblAssetImg]
        (
            [strAssetCode],
            [imgData],
            [bitDefaultImage]
        )
        VALUES
        (
            @strAssetCode,
            @imgData,
            @bitDefaultImage
        )
    
        SELECT @Image_ID = SCOPE_IDENTITY()
        SELECT @Image_ID
    END
    ELSE
    BEGIN
        UPDATE [tblAssetImg] SET 
            [strAssetCode] = ISNULL(@strAssetCode, [strAssetCode]),
            [imgData] = ISNULL(@imgData, [imgData]),
            [bitDefaultImage] = ISNULL(@bitDefaultImage, [bitDefaultImage])
        WHERE
            [Image_ID] = @Image_ID

        SELECT @Image_ID
    END

    RETURN @Image_ID
GO
/****** Object:  StoredProcedure [dbo].[prAssetImg_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetImg_Search]
(
    @Image_ID int = Null,
    @strAssetCode nvarchar(20) = Null,
    @bitDefaultImage bit = Null
)
AS
    SET NOCOUNT ON

    SELECT 
        [Image_ID],
        [strAssetCode],
        [imgData],
        [bitDefaultImage]
    FROM 
        [tblAssetImg]
    WHERE
        (([Image_ID] = @Image_ID) OR (@Image_ID Is Null)) AND 
        (([strAssetCode] = @strAssetCode) OR (@strAssetCode Is Null)) AND 
        (([bitDefaultImage] = @bitDefaultImage) OR (@bitDefaultImage Is Null))
GO
/****** Object:  StoredProcedure [dbo].[prAssetLocation_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetLocation_Delete]
(
    @lngID bigint
)
AS
    SET NOCOUNT ON

    DELETE FROM [tblAssetLocation] WHERE [lngID] = @lngID
GO
/****** Object:  StoredProcedure [dbo].[prAssetLocation_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetLocation_Save]
(
    @lngID bigint = Null,
    @strAssetCode nvarchar(20) = Null,
    @dteTransferDate datetime = Null,
    @strBuilding nvarchar(100) = Null,
    @strFloor nvarchar(50) = Null,
    @strRoom nvarchar(50) = Null,
    @intDept int = Null,
    @strCustodian nvarchar(100) = Null,
    @strContactNo nvarchar(50) = Null,
    @strEmail nvarchar(100) = Null,
	@lngBuildingID bigint = Null
)
AS
    SET NOCOUNT ON

    IF (@lngID IS NULL)
    BEGIN
        INSERT INTO [tblAssetLocation]
        (
            [strAssetCode],
            [dteTransferDate],
            [strBuilding],
            [strFloor],
            [strRoom],
            [intDept],
            [strCustodian],
            [strContactNo],
            [strEmail],
			[lngBuildingID]
        )
        VALUES
        (
            @strAssetCode,
            @dteTransferDate,
            @strBuilding,
            @strFloor,
            @strRoom,
            @intDept,
            @strCustodian,
            @strContactNo,
            @strEmail,
			@lngBuildingID
        )
    
        SELECT @lngID = SCOPE_IDENTITY()
        SELECT @lngID
    END
    ELSE
    BEGIN
        UPDATE [tblAssetLocation] SET 
            [strAssetCode] = ISNULL(@strAssetCode, [strAssetCode]),
            [dteTransferDate] = ISNULL(@dteTransferDate, [dteTransferDate]),
            [strBuilding] = ISNULL(@strBuilding, [strBuilding]),
            [strFloor] = ISNULL(@strFloor, [strFloor]),
            [strRoom] = ISNULL(@strRoom, [strRoom]),
            [intDept] = ISNULL(@intDept, [intDept]),
            [strCustodian] = ISNULL(@strCustodian, [strCustodian]),
            [strContactNo] = ISNULL(@strContactNo, [strContactNo]),
            [strEmail] = ISNULL(@strEmail, [strEmail]),
			[lngBuildingID] = ISNULL(@lngBuildingID, [lngBuildingID])
        WHERE
            [lngID] = @lngID

        SELECT @lngID
    END

    RETURN @lngID
GO
/****** Object:  StoredProcedure [dbo].[prAssetLocation_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetLocation_Search]
(
    @lngID bigint = Null,
    @strAssetCode nvarchar(20) = Null,
    @dteTransferDate datetime = Null,
    @strBuilding nvarchar(100) = Null,
    @strFloor nvarchar(50) = Null,
    @strRoom nvarchar(50) = Null,
    @intDept int = Null,
    @strCustodian nvarchar(100) = Null,
    @strContactNo nvarchar(50) = Null,
    @strEmail nvarchar(100) = Null,
	@lngBuildingID bigint = Null
)
AS
    SET NOCOUNT ON

    SELECT 
        [lngID],
        [strAssetCode],
        [dteTransferDate],
        [strBuilding],
        [strFloor],
        [strRoom],
        [intDept],
        [strCustodian],
        [strContactNo],
        [strEmail],
		[lngBuildingID]
    FROM 
        [tblAssetLocation]
    WHERE
        (([lngID] = @lngID) OR (@lngID Is Null)) AND 
        (([strAssetCode] = @strAssetCode) OR (@strAssetCode Is Null)) AND 
        (([dteTransferDate] = @dteTransferDate) OR (@dteTransferDate Is Null)) AND 
        (([strBuilding] = @strBuilding) OR (@strBuilding Is Null)) AND 
        (([strFloor] = @strFloor) OR (@strFloor Is Null)) AND 
        (([strRoom] = @strRoom) OR (@strRoom Is Null)) AND 
        (([intDept] = @intDept) OR (@intDept Is Null)) AND 
        (([strCustodian] = @strCustodian) OR (@strCustodian Is Null)) AND 
        (([strContactNo] = @strContactNo) OR (@strContactNo Is Null)) AND 
        (([strEmail] = @strEmail) OR (@strEmail Is Null)) AND
		(([lngBuildingID] = @lngBuildingID) OR (@lngBuildingID Is Null))
GO
/****** Object:  StoredProcedure [dbo].[prAssetLocationBuilding_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetLocationBuilding_Delete]
	(
		@lngID bigint
	)
AS
	
	SET NOCOUNT ON;

    DELETE FROM [tblAssetLocationBuilding] WHERE [lngID] = @lngID
GO
/****** Object:  StoredProcedure [dbo].[prAssetLocationBuilding_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetLocationBuilding_Save]
	(
		@lngID bigint = Null,
		@strBuildingName nvarchar(100) = Null,
		@strFloor nvarchar(50) = Null,
		@strRoom nvarchar(50) = Null
	)
AS
	
	SET NOCOUNT ON;

   IF ((SELECT COUNT(*) FROM tblAssetLocationBuilding WHERE lngID = @lngID) = 0)
    BEGIN
        INSERT INTO [tblAssetLocationBuilding]
        (
            [strBuildingName],
            [strFloor],
            [strRoom]
        )
        VALUES
        (
            @strBuildingName,
            @strFloor,
            @strRoom
        )
    
        SELECT @lngID
    END
    ELSE
    BEGIN
        UPDATE [tblAssetLocationBuilding] SET 
		    [strBuildingName] = ISNULL(@strBuildingName, [strBuildingName]),
            [strFloor] = ISNULL(@strFloor, [strFloor]),
            [strRoom] = ISNULL(@strRoom, [strRoom])
        WHERE
            [lngID] = @lngID

        SELECT @lngID
    END

    RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prAssetLocationBuilding_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetLocationBuilding_Search]
	(
		@lngID bigint = Null,
		@strBuildingName nvarchar(100) = Null,
		@strFloor nvarchar(50) = Null,
		@strRoom nvarchar(50) = Null
	)
AS
	
	SET NOCOUNT ON;

   SELECT 
        [lngID],
        [strBuildingName],
        [strFloor],
        [strRoom]
    FROM 
        [tblAssetLocationBuilding]
    WHERE
        (([lngID] = @lngID) OR (@lngID Is Null)) AND 
        (([strBuildingName] = @strBuildingName) OR (@strBuildingName Is Null)) AND 
        (([strFloor] = @strFloor) OR (@strFloor Is Null)) AND 
        (([strRoom] = @strRoom) OR (@strRoom Is Null))
GO
/****** Object:  StoredProcedure [dbo].[prAssetLocationBuilding_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetLocationBuilding_Select]
(
    @lngID bigint
)
AS
    SET NOCOUNT ON;

	SELECT 
	   [lngID],
	   [strBuildingName],
	   [strFloor],
	   [strRoom]
	FROM 
		[tblAssetLocationBuilding]
	WHERE
		[lngID] = @lngID
GO
/****** Object:  StoredProcedure [dbo].[prAssetLocationBuilding_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetLocationBuilding_SelectAll]
AS
    SET NOCOUNT ON;

	SET NOCOUNT ON;

    SELECT 
		[lngID],
		[strBuildingName],
		[strFloor],
		[strRoom]
	FROM 
		[tblAssetLocationBuilding]
GO
/****** Object:  StoredProcedure [dbo].[prAssetRepairs_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetRepairs_Delete]
(
    @lngID bigint
)
AS
    SET NOCOUNT ON

    DELETE FROM [tblAssetRepairs] WHERE [lngID] = @lngID
GO
/****** Object:  StoredProcedure [dbo].[prAssetRepairs_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetRepairs_Save]
(
    @lngID bigint = Null,
    @strAssetCode nvarchar(20) = Null,
    @dteRepairDate date = Null,
    @strCostCode nvarchar(20) = Null,
    @strVendNumber nvarchar(50) = Null,
    @strInvPDocID nvarchar(50) = Null,
    @decCost money = Null,
    @strAddInfo nvarchar(200) = Null,
	@strPartNumber nvarchar(50) = Null,
	@intLineNo int = Null,
	@isFromPI bit = 0,
	@intAssetCostType int = 0
)
AS
    IF (@lngID IS NULL)
    BEGIN
        INSERT INTO [tblAssetRepairs]
        (
            [strAssetCode],
            [dteRepairDate],
            [strCostCode],
            [strVendNumber],
            [strInvPDocID],
            [decCost],
            [strAddInfo],
			[strPartNumber],
			[intLineNo],
			[intAssetCostType]
        )
        output inserted.lngID values
        (
            @strAssetCode,
            @dteRepairDate,
            @strCostCode,
            @strVendNumber,
            @strInvPDocID,
            @decCost,
            @strAddInfo,
			@strPartNumber,
			@intLineNo,
			@intAssetCostType
        )
    END
    ELSE
    BEGIN
        UPDATE [tblAssetRepairs] SET 
            [strAssetCode] = ISNULL(@strAssetCode, [strAssetCode]),
            [dteRepairDate] = ISNULL(@dteRepairDate, [dteRepairDate]),
            [strCostCode] = ISNULL(@strCostCode, [strCostCode]),
            [strVendNumber] = ISNULL(@strVendNumber, [strVendNumber]),
            [strInvPDocID] = ISNULL(@strInvPDocID, [strInvPDocID]),
            [decCost] = ISNULL(@decCost, [decCost]),
            [strAddInfo] = ISNULL(@strAddInfo, [strAddInfo]),
			[strPartNumber] = ISNULL(@strPartNumber, [strPartNumber]),
			[intLineNo] = CASE WHEN @isFromPI = 0 THEN [intLineNo] ELSE @intLineNo END,
			[intAssetCostType] = ISNULL(@intAssetCostType, [intAssetCostType])
        WHERE
            [lngID] = @lngID
    END
GO
/****** Object:  StoredProcedure [dbo].[prAssetRepairs_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetRepairs_Search]
(
    @lngID bigint = Null,
    @strAssetCode nvarchar(20) = Null,
    @dteRepairDate date = Null,
    @strCostCode nvarchar(20) = Null,
    @strVendNumber nvarchar(50) = Null,
    @strInvPDocID nvarchar(50) = Null,
    @decCost money = Null,
    @strAddInfo nvarchar(200) = Null,
	@strPartNumber nvarchar(50) = Null,
	@intLineNo int = NULL
)
AS
    SET NOCOUNT ON

	IF(@intLineNo <> NULL OR @intLineNo <> 0)
		BEGIN
				SELECT 
			        [lngID],
			        [strAssetCode],
			        [dteRepairDate],
			        [strCostCode],
			        [strVendNumber],
			        [strInvPDocID],
			        [decCost],
			        [strAddInfo],
					[strPartNumber],
					[intLineNo],
					[intAssetCostType]
			    FROM 
			        [tblAssetRepairs]
			    WHERE
			        ((([lngID] = @lngID) OR (@lngID Is Null)) AND 
			        (([strAssetCode] = @strAssetCode) OR (@strAssetCode Is Null)) AND 
			        (([dteRepairDate] = @dteRepairDate) OR (@dteRepairDate Is Null)) AND 
			        (([strCostCode] = @strCostCode) OR (@strCostCode Is Null)) AND 
			        (([strVendNumber] = @strVendNumber) OR (@strVendNumber Is Null)) AND 
			        (([strInvPDocID] = @strInvPDocID) OR (@strInvPDocID Is Null)) AND 
			        (([decCost] = @decCost) OR (@decCost Is Null)) AND 
			        (([strAddInfo] = @strAddInfo) OR (@strAddInfo Is Null)) AND
					(([strPartNumber] = @strPartNumber) OR (@strPartNumber Is Null))) AND ([intLineNo]=@intLineNo)
		END 
	ELSE
		BEGIN
				SELECT 
				    [lngID],
				    [strAssetCode],
				    [dteRepairDate],
				    [strCostCode],
				    [strVendNumber],
				    [strInvPDocID],
				    [decCost],
				    [strAddInfo],
					[strPartNumber],
					[intLineNo],
					[intAssetCostType]
				FROM 
				    [tblAssetRepairs]
				WHERE
				    (([lngID] = @lngID) OR (@lngID Is Null)) AND 
				    (([strAssetCode] = @strAssetCode) OR (@strAssetCode Is Null)) AND 
				    (([dteRepairDate] = @dteRepairDate) OR (@dteRepairDate Is Null)) AND 
				    (([strCostCode] = @strCostCode) OR (@strCostCode Is Null)) AND 
				    (([strVendNumber] = @strVendNumber) OR (@strVendNumber Is Null)) AND 
				    (([strInvPDocID] = @strInvPDocID) OR (@strInvPDocID Is Null)) AND 
				    (([decCost] = @decCost) OR (@decCost Is Null)) AND 
				    (([strAddInfo] = @strAddInfo) OR (@strAddInfo Is Null)) AND
					(([strPartNumber] = @strPartNumber) OR (@strPartNumber Is Null))
		END
GO


/****** Object:  StoredProcedure [dbo].[prAssets_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssets_Delete]
(
    @strAssetCode nvarchar(20)
)
AS
    SET NOCOUNT ON

    DELETE FROM [tblAssets] WHERE [strAssetCode] = @strAssetCode
GO
/****** Object:  StoredProcedure [dbo].[prAssets_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssets_Save]
(
    @strAssetCode nvarchar(20) = Null,
    @strAssetDesc nvarchar(100) = Null,
    @strAssetTypeCode nvarchar(20) = Null,
    @uidCenterID uniqueidentifier = Null,
    @strProjNumber nvarchar(50) = Null,
    @decQuantity money = Null,
    @dteDepreciateFrom date = Null,
    @strSerialNumber nvarchar(100) = Null,
    @strTagNumber nvarchar(100) = Null,
    @dteDisposalDate date = Null,
    @strDisposalCode nvarchar(20) = Null,
    @decDisposalAmount money = Null,
    @strVendNumber nvarchar(50) = Null,
    @dtePurchaseDate date = Null,
    @strFinanceMethod nvarchar(100) = Null,
    @decIntRate money = Null,
    @intPeriod int = Null,
    @strAccNumber nvarchar(50) = Null,
    @strCapexOrder nvarchar(50) = Null,
    @decPurchasePrice money = Null,
    @decResidualValue money = Null,
    @decInsuredValue money = Null,
    @decSalvageValue money = Null,
    @decReplacementValue money = Null,
    @decDepreciableValue money = Null,
	@decRevaluationValue money = Null,
    @dteLastDeprecationDate datetime = Null,
    @decRemainingValue money = Null,
    @strField1 nvarchar(100) = Null,
    @strField2 nvarchar(100) = Null,
    @strField3 nvarchar(100) = Null,
    @strField4 nvarchar(100) = Null,
    @strField5 nvarchar(100) = Null,
    @strField6 nvarchar(100) = Null,
    @strField7 nvarchar(100) = Null,
    @strField8 nvarchar(100) = Null,
    @strField9 nvarchar(100) = Null,
    @strField10 nvarchar(100) = Null,
    @strField11 nvarchar(100) = Null,
    @strField12 nvarchar(100) = Null,
    @strNotes nvarchar(max) = Null,
    @bitInactive bit = Null,
    @bitIsSubAsset bit = Null,
    @lngJourID bigint = Null,
	@bitIsRevaluationValueActive bit = Null,
	@decProfitOrLossOnSale money = Null,
	@decOpeningAccumulatedDepreciation1 money = Null,
	@decOpeningAccumulatedDepreciation2 money = Null,
	@decOpeningAccumulatedDepreciation3 money = Null,
	@decOpeningAccumulatedDepreciation4 money = Null,
	@decOpeningAccumulatedDepreciation5 money = Null,
	@strBarCode nvarchar(300) = Null,
	@strVendorInvoiceNumber nvarchar(50) = Null,
	@strDepreciationCode1 nvarchar(20) = Null,
	@strDepreciationCode2 nvarchar(20) = Null,
	@strDepreciationCode3 nvarchar(20) = Null,
	@strDepreciationCode4 nvarchar(20) = Null,
	@strDepreciationCode5 nvarchar(20) = Null,
	@intLineNo int = Null,
	@isFromPI bit = 0
)
AS
    SET NOCOUNT ON

    IF ((SELECT COUNT(*) FROM tblAssets WHERE strAssetCode = @strAssetCode) = 0)
    BEGIN
        INSERT INTO [tblAssets]
        (
            [strAssetCode],
            [strAssetDesc],
            [strAssetTypeCode],
            [uidCenterID],
            [strProjNumber],
            [decQuantity],
            [dteDepreciateFrom],
            [strSerialNumber],
            [strTagNumber],
            [dteDisposalDate],
            [strDisposalCode],
            [decDisposalAmount],
            [strVendNumber],
            [dtePurchaseDate],
            [strFinanceMethod],
            [decIntRate],
            [intPeriod],
            [strAccNumber],
            [strCapexOrder],
            [decPurchasePrice],
            [decResidualValue],
            [decInsuredValue],
            [decSalvageValue],
            [decReplacementValue],
            [decDepreciableValue],
            [dteLastDeprecationDate],
            [decRemainingValue],
            [strField1],
            [strField2],
            [strField3],
            [strField4],
            [strField5],
            [strField6],
            [strField7],
            [strField8],
            [strField9],
            [strField10],
            [strField11],
            [strField12],
            [strNotes],
            [bitInactive],
            [bitIsSubAsset],
            [lngJourID],
			[decRevaluationValue],
			[bitIsRevaluationValueActive],
			[decProfitOrLossOnSale],
			[decOpeningAccumulatedDepreciation1],
			[decOpeningAccumulatedDepreciation2],
			[decOpeningAccumulatedDepreciation3],
			[decOpeningAccumulatedDepreciation4],
			[decOpeningAccumulatedDepreciation5],
			[strBarCode],
			[strVendorInvoiceNumber],
			[strDepreciationCode1],
			[strDepreciationCode2],
			[strDepreciationCode3],
			[strDepreciationCode4],
			[strDepreciationCode5],
			[intLineNo]
        )
        VALUES
        (
            @strAssetCode,
            @strAssetDesc,
            @strAssetTypeCode,
            @uidCenterID,
            @strProjNumber,
            @decQuantity,
            @dteDepreciateFrom,
            @strSerialNumber,
            @strTagNumber,
            @dteDisposalDate,
            @strDisposalCode,
            @decDisposalAmount,
            @strVendNumber,
            @dtePurchaseDate,
            @strFinanceMethod,
            @decIntRate,
            @intPeriod,
            @strAccNumber,
            @strCapexOrder,
            @decPurchasePrice,
            @decResidualValue,
            @decInsuredValue,
            @decSalvageValue,
            @decReplacementValue,
            @decDepreciableValue,
            @dteLastDeprecationDate,
            @decRemainingValue,
            @strField1,
            @strField2,
            @strField3,
            @strField4,
            @strField5,
            @strField6,
            @strField7,
            @strField8,
            @strField9,
            @strField10,
            @strField11,
            @strField12,
            @strNotes,
            @bitInactive,
            @bitIsSubAsset,
            @lngJourID,
			@decRevaluationValue,
			@bitIsRevaluationValueActive,
			@decProfitOrLossOnSale,
			@decOpeningAccumulatedDepreciation1,
			@decOpeningAccumulatedDepreciation2,
			@decOpeningAccumulatedDepreciation3,
			@decOpeningAccumulatedDepreciation4,
			@decOpeningAccumulatedDepreciation5,
			@strBarCode,
			@strVendorInvoiceNumber,
			@strDepreciationCode1,
			@strDepreciationCode2,
			@strDepreciationCode3,
			@strDepreciationCode4,
			@strDepreciationCode5,
			@intLineNo
        )
    
        SELECT @strAssetCode
    END
    ELSE
    BEGIN
        UPDATE [tblAssets] SET 
            [strAssetDesc] = ISNULL(@strAssetDesc, [strAssetDesc]),
            [strAssetTypeCode] = ISNULL(@strAssetTypeCode, [strAssetTypeCode]),
            [uidCenterID] = ISNULL(@uidCenterID, [uidCenterID]),
            [strProjNumber] = ISNULL(@strProjNumber, [strProjNumber]),
            [decQuantity] = ISNULL(@decQuantity, [decQuantity]),
            [dteDepreciateFrom] = ISNULL(@dteDepreciateFrom, [dteDepreciateFrom]),
            [strSerialNumber] = ISNULL(@strSerialNumber, [strSerialNumber]),
            [strTagNumber] = ISNULL(@strTagNumber, [strTagNumber]),
            --[dteDisposalDate] = ISNULL(@dteDisposalDate, [dteDisposalDate]),
			[dteDisposalDate] = @dteDisposalDate,
            --[strDisposalCode] = ISNULL(@strDisposalCode, [strDisposalCode]),
			[strDisposalCode] = @strDisposalCode,
            [decDisposalAmount] = ISNULL(@decDisposalAmount, [decDisposalAmount]),
            [strVendNumber] = ISNULL(@strVendNumber, [strVendNumber]),
            [dtePurchaseDate] = ISNULL(@dtePurchaseDate, [dtePurchaseDate]),
            [strFinanceMethod] = ISNULL(@strFinanceMethod, [strFinanceMethod]),
            [decIntRate] = ISNULL(@decIntRate, [decIntRate]),
            [intPeriod] = ISNULL(@intPeriod, [intPeriod]),
            [strAccNumber] = ISNULL(@strAccNumber, [strAccNumber]),
            [strCapexOrder] = ISNULL(@strCapexOrder, [strCapexOrder]),
            [decPurchasePrice] = ISNULL(@decPurchasePrice, [decPurchasePrice]),
            [decResidualValue] = ISNULL(@decResidualValue, [decResidualValue]),
            [decInsuredValue] = ISNULL(@decInsuredValue, [decInsuredValue]),
            [decSalvageValue] = ISNULL(@decSalvageValue, [decSalvageValue]),
            [decReplacementValue] = ISNULL(@decReplacementValue, [decReplacementValue]),
            [decDepreciableValue] = ISNULL(@decDepreciableValue, [decDepreciableValue]),
            [dteLastDeprecationDate] = ISNULL(@dteLastDeprecationDate, [dteLastDeprecationDate]),
            [decRemainingValue] = ISNULL(@decRemainingValue, [decRemainingValue]),
            [strField1] = ISNULL(@strField1, [strField1]),
            [strField2] = ISNULL(@strField2, [strField2]),
            [strField3] = ISNULL(@strField3, [strField3]),
            [strField4] = ISNULL(@strField4, [strField4]),
            [strField5] = ISNULL(@strField5, [strField5]),
            [strField6] = ISNULL(@strField6, [strField6]),
            [strField7] = ISNULL(@strField7, [strField7]),
            [strField8] = ISNULL(@strField8, [strField8]),
            [strField9] = ISNULL(@strField9, [strField9]),
            [strField10] = ISNULL(@strField10, [strField10]),
            [strField11] = ISNULL(@strField11, [strField11]),
            [strField12] = ISNULL(@strField12, [strField12]),
            [strNotes] = ISNULL(@strNotes, [strNotes]),
            [bitInactive] = ISNULL(@bitInactive, [bitInactive]),
            [bitIsSubAsset] = ISNULL(@bitIsSubAsset, [bitIsSubAsset]),
            [lngJourID] = ISNULL(@lngJourID, [lngJourID]),
			[decRevaluationValue] = ISNULL(@decRevaluationValue, [decRevaluationValue]),
			[bitIsRevaluationValueActive] = ISNULL(@bitIsRevaluationValueActive, [bitIsRevaluationValueActive]),
			[decProfitOrLossOnSale] = ISNULL(@decProfitOrLossOnSale, [decProfitOrLossOnSale]),
			[decOpeningAccumulatedDepreciation1] = ISNULL(@decOpeningAccumulatedDepreciation1, [decOpeningAccumulatedDepreciation1]),
			[decOpeningAccumulatedDepreciation2] = ISNULL(@decOpeningAccumulatedDepreciation2, [decOpeningAccumulatedDepreciation2]),
			[decOpeningAccumulatedDepreciation3] = ISNULL(@decOpeningAccumulatedDepreciation3, [decOpeningAccumulatedDepreciation3]),
			[decOpeningAccumulatedDepreciation4] = ISNULL(@decOpeningAccumulatedDepreciation4, [decOpeningAccumulatedDepreciation4]),
			[decOpeningAccumulatedDepreciation5] = ISNULL(@decOpeningAccumulatedDepreciation5, [decOpeningAccumulatedDepreciation5]),
			[strBarCode] = ISNULL(@strBarCode, [strBarCode]),
			[strVendorInvoiceNumber] = ISNULL(@strVendorInvoiceNumber, [strVendorInvoiceNumber]),
			[strDepreciationCode1] = @strDepreciationCode1,
			[strDepreciationCode2] = @strDepreciationCode2,
			[strDepreciationCode3] = @strDepreciationCode3,
			[strDepreciationCode4] = @strDepreciationCode4,
			[strDepreciationCode5] = @strDepreciationCode5,
			[intLineNo] = CASE WHEN @isFromPI = 0 THEN [intLineNo] ELSE  @intLineNo END
        WHERE
            [strAssetCode] = @strAssetCode

        SELECT @strAssetCode
    END

    RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prAssets_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssets_Search]  
(  
    @strAssetCode nvarchar(20) = Null,  
    @strAssetDesc nvarchar(100) = Null,  
    @strAssetTypeCode nvarchar(20) = Null,  
    @uidCenterID uniqueidentifier = Null,  
    @strProjNumber nvarchar(50) = Null,  
    @decQuantity money = Null,  
    @dteDepreciateFrom date = Null,  
    @strSerialNumber nvarchar(100) = Null,  
    @strTagNumber nvarchar(100) = Null,  
    @dteDisposalDate date = Null,  
    @strDisposalCode nvarchar(20) = Null,  
    @decDisposalAmount money = Null,  
    @strVendNumber nvarchar(50) = Null,  
    @dtePurchaseDate date = Null,  
    @strFinanceMethod nvarchar(100) = Null,  
    @decIntRate money = Null,  
    @intPeriod int = Null,  
    @strAccNumber nvarchar(50) = Null,  
    @strCapexOrder nvarchar(50) = Null,  
    @decPurchasePrice money = Null,  
    @decResidualValue money = Null,  
    @decInsuredValue money = Null,  
    @decSalvageValue money = Null,  
    @decReplacementValue money = Null,  
    @decDepreciableValue money = Null,  
	@decRevaluationValue money = Null,  
    @dteLastDeprecationDate datetime = Null,  
    @decRemainingValue money = Null,  
    @strField1 nvarchar(100) = Null,  
    @strField2 nvarchar(100) = Null,  
    @strField3 nvarchar(100) = Null,  
    @strField4 nvarchar(100) = Null,  
    @strField5 nvarchar(100) = Null,  
    @strField6 nvarchar(100) = Null,  
    @strField7 nvarchar(100) = Null,  
    @strField8 nvarchar(100) = Null,  
    @strField9 nvarchar(100) = Null,  
    @strField10 nvarchar(100) = Null,  
    @strField11 nvarchar(100) = Null,  
    @strField12 nvarchar(100) = Null,  
    @strNotes nvarchar(4000) = Null,  
    @bitInactive bit = Null,  
    @bitIsSubAsset bit = Null,  
    @lngJourID bigint = Null,  
	@bitIsRevaluationValueActive bit = Null,  
	@decProfitOrLossOnSale money = Null,  
	@decOpeningAccumulatedDepreciation1 money = Null,  
	@decOpeningAccumulatedDepreciation2 money = Null,  
	@decOpeningAccumulatedDepreciation3 money = Null,  
	@decOpeningAccumulatedDepreciation4 money = Null,  
	@decOpeningAccumulatedDepreciation5 money = Null,  
	@strBarCode nvarchar(300) = Null,  
	@strVendorInvoiceNumber nvarchar(50) = Null,  
	@strDepreciationCode1 nvarchar(20) = Null,  
    @strDepreciationCode2 nvarchar(20) = Null,  
    @strDepreciationCode3 nvarchar(20) = Null,  
    @strDepreciationCode4 nvarchar(20) = Null,  
    @strDepreciationCode5 nvarchar(20) = Null  
)  
AS  
BEGIN
    SET NOCOUNT ON  
  
    SELECT   
        [strAssetCode] AS AssetCode,  
        [strAssetDesc] AS AssetDesc,  
        [strAssetTypeCode] AS AssetTypeCode,  
        [uidCenterID],  
        [strProjNumber],  
        [decQuantity],  
        [dteDepreciateFrom],  
        [strSerialNumber],  
        [strTagNumber],  
        [dteDisposalDate],  
        [strDisposalCode],  
        [decDisposalAmount],  
        [strVendNumber],  
        [dtePurchaseDate],  
        [strFinanceMethod],  
        [decIntRate],  
        [intPeriod],  
        [strAccNumber],  
        [strCapexOrder],  
        [decPurchasePrice],  
        [decResidualValue],  
        [decInsuredValue],  
        [decSalvageValue],  
        [decReplacementValue],  
        [decDepreciableValue],  
        [dteLastDeprecationDate],  
        [decRemainingValue],  
        [strField1],  
        [strField2],  
        [strField3],  
        [strField4],  
        [strField5],  
        [strField6],  
        [strField7],  
        [strField8],  
        [strField9],  
        [strField10],  
        [strField11],  
        [strField12],  
        [strNotes],  
        [bitInactive],  
        [bitIsSubAsset],  
        [lngJourID],  
		[decRevaluationValue],  
		[bitIsRevaluationValueActive],  
		[decProfitOrLossOnSale],  
		[decOpeningAccumulatedDepreciation1],  
		[decOpeningAccumulatedDepreciation2],  
		[decOpeningAccumulatedDepreciation3],  
		[decOpeningAccumulatedDepreciation4],  
		[decOpeningAccumulatedDepreciation5],  
		[strBarCode],  
		[strVendorInvoiceNumber],  
		[strDepreciationCode1],  
        [strDepreciationCode2],  
        [strDepreciationCode3],  
        [strDepreciationCode4],  
		[strDepreciationCode5]  
    FROM   
        [tblAssets]  
    WHERE  
        (([strAssetCode] = @strAssetCode) OR (@strAssetCode Is Null)) AND   
        (([strAssetDesc] = @strAssetDesc) OR (@strAssetDesc Is Null)) AND   
        (([strAssetTypeCode] = @strAssetTypeCode) OR (@strAssetTypeCode Is Null)) AND   
        (([uidCenterID] = @uidCenterID) OR (@uidCenterID Is Null)) AND   
        (([strProjNumber] = @strProjNumber) OR (@strProjNumber Is Null)) AND   
        (([decQuantity] = @decQuantity) OR (@decQuantity Is Null)) AND   
        (([dteDepreciateFrom] = @dteDepreciateFrom) OR (@dteDepreciateFrom Is Null)) AND   
        (([strSerialNumber] = @strSerialNumber) OR (@strSerialNumber Is Null)) AND   
        (([strTagNumber] = @strTagNumber) OR (@strTagNumber Is Null)) AND   
        (([dteDisposalDate] = @dteDisposalDate) OR (@dteDisposalDate Is Null)) AND   
        (([strDisposalCode] = @strDisposalCode) OR (@strDisposalCode Is Null)) AND   
        (([decDisposalAmount] = @decDisposalAmount) OR (@decDisposalAmount Is Null)) AND   
        (([strVendNumber] = @strVendNumber) OR (@strVendNumber Is Null)) AND   
        (([dtePurchaseDate] = @dtePurchaseDate) OR (@dtePurchaseDate Is Null)) AND   
        (([strFinanceMethod] = @strFinanceMethod) OR (@strFinanceMethod Is Null)) AND   
        (([decIntRate] = @decIntRate) OR (@decIntRate Is Null)) AND   
        (([intPeriod] = @intPeriod) OR (@intPeriod Is Null)) AND   
        (([strAccNumber] = @strAccNumber) OR (@strAccNumber Is Null)) AND   
        (([strCapexOrder] = @strCapexOrder) OR (@strCapexOrder Is Null)) AND   
        (([decPurchasePrice] = @decPurchasePrice) OR (@decPurchasePrice Is Null)) AND   
        (([decResidualValue] = @decResidualValue) OR (@decResidualValue Is Null)) AND   
        (([decInsuredValue] = @decInsuredValue) OR (@decInsuredValue Is Null)) AND   
        (([decSalvageValue] = @decSalvageValue) OR (@decSalvageValue Is Null)) AND   
        (([decReplacementValue] = @decReplacementValue) OR (@decReplacementValue Is Null)) AND   
        (([decDepreciableValue] = @decDepreciableValue) OR (@decDepreciableValue Is Null)) AND   
        (([dteLastDeprecationDate] = @dteLastDeprecationDate) OR (@dteLastDeprecationDate Is Null)) AND   
        (([decRemainingValue] = @decRemainingValue) OR (@decRemainingValue Is Null)) AND   
        (([strField1] = @strField1) OR (@strField1 Is Null)) AND   
        (([strField2] = @strField2) OR (@strField2 Is Null)) AND   
        (([strField3] = @strField3) OR (@strField3 Is Null)) AND   
        (([strField4] = @strField4) OR (@strField4 Is Null)) AND   
        (([strField5] = @strField5) OR (@strField5 Is Null)) AND   
        (([strField6] = @strField6) OR (@strField6 Is Null)) AND   
        (([strField7] = @strField7) OR (@strField7 Is Null)) AND   
        (([strField8] = @strField8) OR (@strField8 Is Null)) AND   
        (([strField9] = @strField9) OR (@strField9 Is Null)) AND   
        (([strField10] = @strField10) OR (@strField10 Is Null)) AND   
        (([strField11] = @strField11) OR (@strField11 Is Null)) AND   
        (([strField12] = @strField12) OR (@strField12 Is Null)) AND   
        (([strNotes] = @strNotes) OR (@strNotes Is Null)) AND   
        (([bitInactive] = @bitInactive) OR (@bitInactive Is Null)) AND   
        (([bitIsSubAsset] = @bitIsSubAsset) OR (@bitIsSubAsset Is Null)) AND   
        (([lngJourID] = @lngJourID) OR (@lngJourID Is Null)) AND  
		(([decRevaluationValue] = @decRevaluationValue) OR (@decRevaluationValue Is Null)) AND   
		(([bitIsRevaluationValueActive] = @bitIsRevaluationValueActive) OR (@bitIsRevaluationValueActive Is Null)) AND  
		(([decProfitOrLossOnSale] = @decProfitOrLossOnSale) OR (@decProfitOrLossOnSale Is Null)) AND  
		(([decOpeningAccumulatedDepreciation1] = @decOpeningAccumulatedDepreciation1) OR (@decOpeningAccumulatedDepreciation1 Is Null)) AND  
		(([decOpeningAccumulatedDepreciation2] = @decOpeningAccumulatedDepreciation2) OR (@decOpeningAccumulatedDepreciation2 Is Null)) AND  
		(([decOpeningAccumulatedDepreciation3] = @decOpeningAccumulatedDepreciation3) OR (@decOpeningAccumulatedDepreciation3 Is Null)) AND  
		(([decOpeningAccumulatedDepreciation4] = @decOpeningAccumulatedDepreciation4) OR (@decOpeningAccumulatedDepreciation4 Is Null)) AND  
		(([decOpeningAccumulatedDepreciation5] = @decOpeningAccumulatedDepreciation5) OR (@decOpeningAccumulatedDepreciation5 Is Null)) AND  
		(([strBarCode] = @strBarCode) OR (@strBarCode Is Null)) AND  
		(([strVendorInvoiceNumber] = @strVendorInvoiceNumber) OR (@strVendorInvoiceNumber Is Null)) AND  
		(([strDepreciationCode1] = @strDepreciationCode1) OR (@strDepreciationCode1 Is Null)) AND   
		(([strDepreciationCode2] = @strDepreciationCode2) OR (@strDepreciationCode2 Is Null)) AND   
		(([strDepreciationCode3] = @strDepreciationCode3) OR (@strDepreciationCode3 Is Null)) AND   
		(([strDepreciationCode4] = @strDepreciationCode4) OR (@strDepreciationCode4 Is Null)) AND   
		(([strDepreciationCode5] = @strDepreciationCode5) OR (@strDepreciationCode5 Is Null))   
 END
GO
/****** Object:  StoredProcedure [dbo].[prAssets_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssets_Select]
(
	@strAssetCode NVARCHAR(20) = NULL
	,@intLineNo INT = NULL
	,@strVendorInvoiceNumber NVARCHAR(100) = NULL
	)
AS
SET NOCOUNT ON

IF (
		(@intLineNo <> NULL)
		AND (@strVendorInvoiceNumber <> NULL)
		AND (@strAssetCode <> NULL)
		)
BEGIN
	SELECT [strAssetCode] AS AssetCode
		,[strAssetDesc] AS AssetDesc
		,[strAssetTypeCode] AS AssetTypeCode
		,[uidCenterID] AS CenterID
		,[strProjNumber] AS ProjNumber
		,[decQuantity] AS Quantity
		,[dteDepreciateFrom] AS DepreciateFrom
		,[strSerialNumber] AS SerialNumber
		,[strTagNumber] AS TagNumber
		,[dteDisposalDate] AS DisposalDate
		,[strDisposalCode] AS DisposalCode
		,[decDisposalAmount] AS DisposalAmount
		,[strVendNumber] AS VendNumber
		,[dtePurchaseDate] AS PurchaseDate
		,[strFinanceMethod] AS FinanceMethod
		,[decIntRate] AS IntRate
		,[intPeriod] AS Period
		,[strAccNumber] AS AccNumber
		,[strCapexOrder] AS CapexOrder
		,[decPurchasePrice] AS PurchasePrice
		,[decResidualValue] AS ResidualValue
		,[decInsuredValue] AS InsuredValue
		,[decSalvageValue] AS SalvageValue
		,[decReplacementValue] AS ReplacementValue
		,[decDepreciableValue] AS DepreciableValue
		,[dteLastDeprecationDate] AS LastDepreciationDate
		,[decRemainingValue] AS RemainingValue
		,[strField1] AS Field1
		,[strField2] AS Field2
		,[strField3] AS Field3
		,[strField4] AS Field4
		,[strField5] AS Field5
		,[strField6] AS Field6
		,[strField7] AS Field7
		,[strField8] AS Field8
		,[strField9] AS Field9
		,[strField10] AS Field10
		,[strField11] AS Field11
		,[strField12] AS Field12
		,[strNotes] AS Notes
		,[bitInactive] AS Inactive
		,[bitIsSubAsset] AS IsSubAsset
		,[lngJourID] AS JourID
		,[decRevaluationValue] AS RevaluationValue
		,[bitIsRevaluationValueActive] AS IsRevaluationValueActive
		,[decProfitOrLossOnSale] AS ProfitOrLossOnSale
		,[decOpeningAccumulatedDepreciation1] AS OpeningAccumulatedDepreciation1
		,[decOpeningAccumulatedDepreciation2] OpeningAccumulatedDepreciation2
		,[decOpeningAccumulatedDepreciation3] AS OpeningAccumulatedDepreciation3
		,[decOpeningAccumulatedDepreciation4] AS OpeningAccumulatedDepreciation4
		,[decOpeningAccumulatedDepreciation5] AS OpeningAccumulatedDepreciation5
		,[strBarCode] AS BarCode
		,[strVendorInvoiceNumber] AS VendorInvoiceNumber
		,[strDepreciationCode1] AS DepreciationCode1
		,[strDepreciationCode2] AS DepreciationCode2
		,[strDepreciationCode3] AS DepreciationCode3
		,[strDepreciationCode4] AS DepreciationCode4
		,[strDepreciationCode5] AS DepreciationCode5
		,[intLineNo] AS [LineNo]
	FROM [tblAssets]
	WHERE [strAssetCode] = @strAssetCode
		AND [intLineNo] = @intLineNo
		AND [strVendorInvoiceNumber] = @strVendorInvoiceNumber
END
ELSE
BEGIN
	SELECT [strAssetCode] AS AssetCode
		,[strAssetDesc] AS AssetDesc
		,[strAssetTypeCode] AS AssetTypeCode
		,[uidCenterID] AS CenterID
		,[strProjNumber] AS ProjNumber
		,[decQuantity] AS Quantity
		,[dteDepreciateFrom] AS DepreciateFrom
		,[strSerialNumber] AS SerialNumber
		,[strTagNumber] AS TagNumber
		,[dteDisposalDate] AS DisposalDate
		,[strDisposalCode] AS DisposalCode
		,[decDisposalAmount] AS DisposalAmount
		,[strVendNumber] AS VendNumber
		,[dtePurchaseDate] AS PurchaseDate
		,[strFinanceMethod] AS FinanceMethod
		,[decIntRate] AS IntRate
		,[intPeriod] AS Period
		,[strAccNumber] AS AccNumber
		,[strCapexOrder] AS CapexOrder
		,[decPurchasePrice] AS PurchasePrice
		,[decResidualValue] AS ResidualValue
		,[decInsuredValue] AS InsuredValue
		,[decSalvageValue] AS SalvageValue
		,[decReplacementValue] AS ReplacementValue
		,[decDepreciableValue] AS DepreciableValue
		,[dteLastDeprecationDate] AS LastDepreciationDate
		,[decRemainingValue] AS RemainingValue
		,[strField1] AS Field1
		,[strField2] AS Field2
		,[strField3] AS Field3
		,[strField4] AS Field4
		,[strField5] AS Field5
		,[strField6] AS Field6
		,[strField7] AS Field7
		,[strField8] AS Field8
		,[strField9] AS Field9
		,[strField10] AS Field10
		,[strField11] AS Field11
		,[strField12] AS Field12
		,[strNotes] AS Notes
		,[bitInactive] AS Inactive
		,[bitIsSubAsset] AS IsSubAsset
		,[lngJourID] AS JourID
		,[decRevaluationValue] AS RevaluationValue
		,[bitIsRevaluationValueActive] AS IsRevaluationValueActive
		,[decProfitOrLossOnSale] AS ProfitOrLossOnSale
		,[decOpeningAccumulatedDepreciation1] AS OpeningAccumulatedDepreciation1
		,[decOpeningAccumulatedDepreciation2] OpeningAccumulatedDepreciation2
		,[decOpeningAccumulatedDepreciation3] AS OpeningAccumulatedDepreciation3
		,[decOpeningAccumulatedDepreciation4] AS OpeningAccumulatedDepreciation4
		,[decOpeningAccumulatedDepreciation5] AS OpeningAccumulatedDepreciation5
		,[strBarCode] AS BarCode
		,[strVendorInvoiceNumber] AS VendorInvoiceNumber
		,[strDepreciationCode1] AS DepreciationCode1
		,[strDepreciationCode2] AS DepreciationCode2
		,[strDepreciationCode3] AS DepreciationCode3
		,[strDepreciationCode4] AS DepreciationCode4
		,[strDepreciationCode5] AS DepreciationCode5
		,[intLineNo] AS [LineNo]
	FROM [tblAssets]
	WHERE [strAssetCode] = @strAssetCode
		OR [strVendorInvoiceNumber] = @strVendorInvoiceNumber
END
GO

/****** Object:  StoredProcedure [dbo].[prAssets_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssets_SelectAll]
AS
    SET NOCOUNT ON

    SELECT 
        [strAssetCode],
        [strAssetDesc],
        [strAssetTypeCode],
        [uidCenterID],
        [strProjNumber],
        [decQuantity],
        [dteDepreciateFrom],
        [strSerialNumber],
        [strTagNumber],
        [dteDisposalDate],
        [strDisposalCode],
        [decDisposalAmount],
        [strVendNumber],
        [dtePurchaseDate],
        [strFinanceMethod],
        [decIntRate],
        [intPeriod],
        [strAccNumber],
        [strCapexOrder],
        [decPurchasePrice],
        [decResidualValue],
        [decInsuredValue],
        [decSalvageValue],
        [decReplacementValue],
        [decDepreciableValue],
        [dteLastDeprecationDate],
        [decRemainingValue],
        [strField1],
        [strField2],
        [strField3],
        [strField4],
        [strField5],
        [strField6],
        [strField7],
        [strField8],
        [strField9],
        [strField10],
        [strField11],
        [strField12],
        [strNotes],
        [bitInactive],
        [bitIsSubAsset],
        [lngJourID],
		[decRevaluationValue],
		[bitIsRevaluationValueActive],
		[decProfitOrLossOnSale],
		[decOpeningAccumulatedDepreciation1],
		[decOpeningAccumulatedDepreciation2],
		[decOpeningAccumulatedDepreciation3],
		[decOpeningAccumulatedDepreciation4],
		[decOpeningAccumulatedDepreciation5],
		[strBarCode],
		[strVendorInvoiceNumber],
		[strDepreciationCode1],
        [strDepreciationCode2],
        [strDepreciationCode3],
        [strDepreciationCode4],
        [strDepreciationCode5]
    FROM 
        [tblAssets]
GO
/****** Object:  StoredProcedure [dbo].[prAssetsSub_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetsSub_Delete]
(
    @strAssetCode nvarchar(20),
    @strSubAssetCode nvarchar(20)
)
AS
    SET NOCOUNT ON

    DELETE FROM [tblAssetsSub] WHERE [strAssetCode] = @strAssetCode AND 
[strSubAssetCode] = @strSubAssetCode
GO
/****** Object:  StoredProcedure [dbo].[prAssetsSub_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetsSub_Save]
(
    @strAssetCode nvarchar(20) = Null,
    @strSubAssetCode nvarchar(20) = Null
)
AS
    SET NOCOUNT ON

    BEGIN
        INSERT INTO [tblAssetsSub]
        (
            [strAssetCode],
            [strSubAssetCode]
        )
        VALUES
        (
            @strAssetCode,
            @strSubAssetCode
        )
    
        SELECT @strAssetCode
    END
    RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prAssetsSub_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetsSub_Search]
(
    @strAssetCode nvarchar(20) = Null,
    @strSubAssetCode nvarchar(20) = Null
)
AS
    SET NOCOUNT ON

    SELECT 
        [strAssetCode],
        [strSubAssetCode]
    FROM 
        [tblAssetsSub]
    WHERE
        (([strAssetCode] = @strAssetCode) OR (@strAssetCode Is Null)) AND 
        (([strSubAssetCode] = @strSubAssetCode) OR (@strSubAssetCode Is Null))
GO
/****** Object:  StoredProcedure [dbo].[prAssetTypes_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetTypes_Delete]
(
    @strCode nvarchar(20)
)
AS
    SET NOCOUNT ON

    DELETE FROM [tblAssetTypes] WHERE [strCode] = @strCode
GO
/****** Object:  StoredProcedure [dbo].[prAssetTypes_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetTypes_Save]
(
    @strCode nvarchar(20) = Null,
    @strDescription nvarchar(100) = Null,
    @intDepAccNo nvarchar(30) = Null,
    @intExpAccNo nvarchar(30) = Null,
    @intAssetAccNo nvarchar(30) = Null,
    @intRepairAccNo nvarchar(30) = Null,
    @strDepreciationCode1 nvarchar(20) = Null,
    @blnUpdateGLCode1 bit = Null,
    @strDepreciationCode2 nvarchar(20) = Null,
    @blnUpdateGLCode2 bit = Null,
    @strDepreciationCode3 nvarchar(20) = Null,
    @blnUpdateGLCode3 bit = Null,
    @strDepreciationCode4 nvarchar(20) = Null,
    @blnUpdateGLCode4 bit = Null,
    @strDepreciationCode5 nvarchar(20) = Null,
    @blnUpdateGLCode5 bit = Null,
    @bitInactive bit = Null,
	@blnNBVDisplay1 bit = Null,
	@blnNBVDisplay2 bit = Null,
	@blnNBVDisplay3 bit = Null,
	@blnNBVDisplay4 bit = Null,
	@blnNBVDisplay5 bit = Null,
	@strProfitLossOnSaleAccNo nvarchar(30) = Null
)
AS
    SET NOCOUNT ON

    IF ((SELECT COUNT(*) FROM tblAssetTypes WHERE strCode = @strCode) = 0)
    BEGIN
        INSERT INTO [tblAssetTypes]
        (
            [strCode],
            [strDescription],
            [intDepAccNo],
            [intExpAccNo],
            [intAssetAccNo],
            [intRepairAccNo],
            [strDepreciationCode1],
            [blnUpdateGLCode1],
            [strDepreciationCode2],
            [blnUpdateGLCode2],
            [strDepreciationCode3],
            [blnUpdateGLCode3],
            [strDepreciationCode4],
            [blnUpdateGLCode4],
            [strDepreciationCode5],
            [blnUpdateGLCode5],
            [bitInactive],
			[blnNBVDisplay1],
			[blnNBVDisplay2],
			[blnNBVDisplay3],
			[blnNBVDisplay4],
			[blnNBVDisplay5],
			[strProfitLossOnSaleAccNo]
        )
        VALUES
        (
            @strCode,
            @strDescription,
            @intDepAccNo,
            @intExpAccNo,
            @intAssetAccNo,
            @intRepairAccNo,
            @strDepreciationCode1,
            @blnUpdateGLCode1,
            @strDepreciationCode2,
            @blnUpdateGLCode2,
            @strDepreciationCode3,
            @blnUpdateGLCode3,
            @strDepreciationCode4,
            @blnUpdateGLCode4,
            @strDepreciationCode5,
            @blnUpdateGLCode5,
            @bitInactive,
			@blnNBVDisplay1,
			@blnNBVDisplay2,
			@blnNBVDisplay3,
			@blnNBVDisplay4,
			@blnNBVDisplay5,
			@strProfitLossOnSaleAccNo
        )
    
        SELECT @strCode
    END
    ELSE
    BEGIN
        UPDATE [tblAssetTypes] SET 
            [strDescription] = ISNULL(@strDescription, [strDescription]),
            [intDepAccNo] = ISNULL(@intDepAccNo, [intDepAccNo]),
            [intExpAccNo] = ISNULL(@intExpAccNo, [intExpAccNo]),
            [intAssetAccNo] = ISNULL(@intAssetAccNo, [intAssetAccNo]),
            [intRepairAccNo] = ISNULL(@intRepairAccNo, [intRepairAccNo]),
            [strDepreciationCode1] = @strDepreciationCode1,
            [blnUpdateGLCode1] = ISNULL(@blnUpdateGLCode1, [blnUpdateGLCode1]),
            [strDepreciationCode2] = @strDepreciationCode2,
            [blnUpdateGLCode2] = ISNULL(@blnUpdateGLCode2, [blnUpdateGLCode2]),
            [strDepreciationCode3] = @strDepreciationCode3,
            [blnUpdateGLCode3] = ISNULL(@blnUpdateGLCode3, [blnUpdateGLCode3]),
            [strDepreciationCode4] = @strDepreciationCode4,
            [blnUpdateGLCode4] = ISNULL(@blnUpdateGLCode4, [blnUpdateGLCode4]),
            [strDepreciationCode5] = @strDepreciationCode5,
            [blnUpdateGLCode5] = ISNULL(@blnUpdateGLCode5, [blnUpdateGLCode5]),
            [bitInactive] = ISNULL(@bitInactive, [bitInactive]),
			[blnNBVDisplay1] = ISNULL(@blnNBVDisplay1, [blnNBVDisplay1]),
			[blnNBVDisplay2] = ISNULL(@blnNBVDisplay2, [blnNBVDisplay2]),
			[blnNBVDisplay3] = ISNULL(@blnNBVDisplay3, [blnNBVDisplay3]),
			[blnNBVDisplay4] = ISNULL(@blnNBVDisplay4, [blnNBVDisplay4]),
			[blnNBVDisplay5] = ISNULL(@blnNBVDisplay5, [blnNBVDisplay5]),
			[strProfitLossOnSaleAccNo] = ISNULL(@strProfitLossOnSaleAccNo, [strProfitLossOnSaleAccNo])
        WHERE
            [strCode] = @strCode

        SELECT @strCode
    END

    RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prAssetTypes_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetTypes_Search]
(
    @strCode nvarchar(20) = Null,
    @strDescription nvarchar(100) = Null,
    @intDepAccNo nvarchar(30) = Null,
    @intExpAccNo nvarchar(30) = Null,
    @intAssetAccNo nvarchar(30) = Null,
    @intRepairAccNo nvarchar(30) = Null,
    @strDepreciationCode1 nvarchar(20) = Null,
    @blnUpdateGLCode1 bit = Null,
    @strDepreciationCode2 nvarchar(20) = Null,
    @blnUpdateGLCode2 bit = Null,
    @strDepreciationCode3 nvarchar(20) = Null,
    @blnUpdateGLCode3 bit = Null,
    @strDepreciationCode4 nvarchar(20) = Null,
    @blnUpdateGLCode4 bit = Null,
    @strDepreciationCode5 nvarchar(20) = Null,
    @blnUpdateGLCode5 bit = Null,
    @bitInactive bit = Null,
	@blnNBVDisplay1 bit = Null,
	@blnNBVDisplay2 bit = Null,
	@blnNBVDisplay3 bit = Null,
	@blnNBVDisplay4 bit = Null,
	@blnNBVDisplay5 bit = Null,
	@strProfitLossOnSaleAccNo nvarchar(30) = Null
)
AS
    SET NOCOUNT ON

    SELECT 
        [strCode],
        [strDescription],
        [intDepAccNo],
        [intExpAccNo],
        [intAssetAccNo],
        [intRepairAccNo],
        [strDepreciationCode1],
        [blnUpdateGLCode1],
        [strDepreciationCode2],
        [blnUpdateGLCode2],
        [strDepreciationCode3],
        [blnUpdateGLCode3],
        [strDepreciationCode4],
        [blnUpdateGLCode4],
        [strDepreciationCode5],
        [blnUpdateGLCode5],
        [bitInactive],
		[blnNBVDisplay1],
		[blnNBVDisplay2],
		[blnNBVDisplay3],
		[blnNBVDisplay4],
		[blnNBVDisplay5],
		[strProfitLossOnSaleAccNo]
    FROM 
        [tblAssetTypes]
    WHERE
        (([strCode] = @strCode) OR (@strCode Is Null)) AND 
        (([strDescription] = @strDescription) OR (@strDescription Is Null)) AND 
        (([intDepAccNo] = @intDepAccNo) OR (@intDepAccNo Is Null)) AND 
        (([intExpAccNo] = @intExpAccNo) OR (@intExpAccNo Is Null)) AND 
        (([intAssetAccNo] = @intAssetAccNo) OR (@intAssetAccNo Is Null)) AND 
        (([intRepairAccNo] = @intRepairAccNo) OR (@intRepairAccNo Is Null)) AND 
        (([strDepreciationCode1] = @strDepreciationCode1) OR (@strDepreciationCode1 Is Null)) AND 
        (([blnUpdateGLCode1] = @blnUpdateGLCode1) OR (@blnUpdateGLCode1 Is Null)) AND 
        (([strDepreciationCode2] = @strDepreciationCode2) OR (@strDepreciationCode2 Is Null)) AND 
        (([blnUpdateGLCode2] = @blnUpdateGLCode2) OR (@blnUpdateGLCode2 Is Null)) AND 
        (([strDepreciationCode3] = @strDepreciationCode3) OR (@strDepreciationCode3 Is Null)) AND 
        (([blnUpdateGLCode3] = @blnUpdateGLCode3) OR (@blnUpdateGLCode3 Is Null)) AND 
        (([strDepreciationCode4] = @strDepreciationCode4) OR (@strDepreciationCode4 Is Null)) AND 
        (([blnUpdateGLCode4] = @blnUpdateGLCode4) OR (@blnUpdateGLCode4 Is Null)) AND 
        (([strDepreciationCode5] = @strDepreciationCode5) OR (@strDepreciationCode5 Is Null)) AND 
        (([blnUpdateGLCode5] = @blnUpdateGLCode5) OR (@blnUpdateGLCode5 Is Null)) AND 
        (([bitInactive] = @bitInactive) OR (@bitInactive Is Null)) AND
		(([blnNBVDisplay1] = @blnNBVDisplay1) OR (@blnNBVDisplay1 Is Null)) AND 
		(([blnNBVDisplay2] = @blnNBVDisplay2) OR (@blnNBVDisplay2 Is Null)) AND 
		(([blnNBVDisplay3] = @blnNBVDisplay3) OR (@blnNBVDisplay3 Is Null)) AND 
		(([blnNBVDisplay4] = @blnNBVDisplay4) OR (@blnNBVDisplay4 Is Null)) AND 
		(([blnNBVDisplay5] = @blnNBVDisplay5) OR (@blnNBVDisplay5 Is Null)) AND
		(([strProfitLossOnSaleAccNo] = @strProfitLossOnSaleAccNo) OR (@strProfitLossOnSaleAccNo Is Null))
GO
/****** Object:  StoredProcedure [dbo].[prAssetTypes_SearchParamWise]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetTypes_SearchParamWise]
		@bitIncludeInactive bit,
		@strSearch nvarchar(100)
		AS
			SET NOCOUNT ON
			IF @bitIncludeInactive = 0
				BEGIN
					SELECT 
						[strCode],
						[strDescription],
						[intDepAccNo],
						[intExpAccNo],
						[intAssetAccNo],
						[intRepairAccNo],
						[strDepreciationCode1],
						[blnUpdateGLCode1],
						[strDepreciationCode2],
						[blnUpdateGLCode2],
						[strDepreciationCode3],
						[blnUpdateGLCode3],
						[strDepreciationCode4],
						[blnUpdateGLCode4],
						[strDepreciationCode5],
						[blnUpdateGLCode5],
						[bitInactive],
						[blnNBVDisplay1],
						[blnNBVDisplay2],
						[blnNBVDisplay3],
						[blnNBVDisplay4],
						[blnNBVDisplay5],
						[strProfitLossOnSaleAccNo]
					FROM 
						[tblAssetTypes]
					WHERE
						([strCode] LIKE '%'+@strSearch+'%' OR [strDescription] LIKE '%'+@strSearch+'%' ) AND bitInactive = 0
				END
			ELSE IF @bitIncludeInactive = 1
				BEGIN
					SELECT 
						[strCode],
						[strDescription],
						[intDepAccNo],
						[intExpAccNo],
						[intAssetAccNo],
						[intRepairAccNo],
						[strDepreciationCode1],
						[blnUpdateGLCode1],
						[strDepreciationCode2],
						[blnUpdateGLCode2],
						[strDepreciationCode3],
						[blnUpdateGLCode3],
						[strDepreciationCode4],
						[blnUpdateGLCode4],
						[strDepreciationCode5],
						[blnUpdateGLCode5],
						[bitInactive],
						[blnNBVDisplay1],
						[blnNBVDisplay2],
						[blnNBVDisplay3],
						[blnNBVDisplay4],
						[blnNBVDisplay5],
						[strProfitLossOnSaleAccNo]
					FROM 
						[tblAssetTypes]
					WHERE
						([strCode] LIKE '%'+@strSearch+'%' OR [strDescription] LIKE '%'+@strSearch+'%' )
				END
GO
/****** Object:  StoredProcedure [dbo].[prAssetTypes_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetTypes_Select]
(
    @strCode nvarchar(20)
)
AS
    SET NOCOUNT ON

    SELECT 
        [strCode],
        [strDescription],
        [intDepAccNo],
        [intExpAccNo],
        [intAssetAccNo],
        [intRepairAccNo],
        [strDepreciationCode1],
        [blnUpdateGLCode1],
        [strDepreciationCode2],
        [blnUpdateGLCode2],
        [strDepreciationCode3],
        [blnUpdateGLCode3],
        [strDepreciationCode4],
        [blnUpdateGLCode4],
        [strDepreciationCode5],
        [blnUpdateGLCode5],
        [bitInactive],
		[blnNBVDisplay1],
		[blnNBVDisplay2],
		[blnNBVDisplay3],
		[blnNBVDisplay4],
		[blnNBVDisplay5],
		[strProfitLossOnSaleAccNo]
    FROM 
        [tblAssetTypes]
    WHERE 
        [strCode] = @strCode
GO
/****** Object:  StoredProcedure [dbo].[prAssetTypes_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetTypes_SelectAll]
AS
    SET NOCOUNT ON

    SELECT 
        [strCode],
        [strDescription],
        [intDepAccNo],
        [intExpAccNo],
        [intAssetAccNo],
        [intRepairAccNo],
        [strDepreciationCode1],
        [blnUpdateGLCode1],
        [strDepreciationCode2],
        [blnUpdateGLCode2],
        [strDepreciationCode3],
        [blnUpdateGLCode3],
        [strDepreciationCode4],
        [blnUpdateGLCode4],
        [strDepreciationCode5],
        [blnUpdateGLCode5],
        [bitInactive],
		[blnNBVDisplay1],
		[blnNBVDisplay2],
		[blnNBVDisplay3],
		[blnNBVDisplay4],
		[blnNBVDisplay5],
		[strProfitLossOnSaleAccNo]
    FROM 
        [tblAssetTypes]
GO
/****** Object:  StoredProcedure [dbo].[prAssetUsage_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetUsage_Delete]
(
    @lngID bigint
)
AS
    SET NOCOUNT ON

    DELETE FROM [tblAssetUsage] WHERE [lngID] = @lngID
GO
/****** Object:  StoredProcedure [dbo].[prAssetUsage_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetUsage_Save]
(
    @lngID bigint = Null,
    @strAssetCode nvarchar(20) = Null,
    @intYear int = Null,
    @intMonth int = Null,
    @strUnit nvarchar(5) = Null,
    @decFrom money = Null,
    @decTo money = Null,
    @decTotal money = Null
)
AS
    SET NOCOUNT ON

    IF (@lngID IS NULL)
    BEGIN
        INSERT INTO [tblAssetUsage]
        (
            [strAssetCode],
            [intYear],
            [intMonth],
            [strUnit],
            [decFrom],
            [decTo],
            [decTotal]
        )
        VALUES
        (
            @strAssetCode,
            @intYear,
            @intMonth,
            @strUnit,
            @decFrom,
            @decTo,
            @decTotal
        )
    
        SELECT @lngID = SCOPE_IDENTITY()
        SELECT @lngID
    END
    ELSE
    BEGIN
        UPDATE [tblAssetUsage] SET 
            [strAssetCode] = ISNULL(@strAssetCode, [strAssetCode]),
            [intYear] = ISNULL(@intYear, [intYear]),
            [intMonth] = ISNULL(@intMonth, [intMonth]),
            [strUnit] = ISNULL(@strUnit, [strUnit]),
            [decFrom] = ISNULL(@decFrom, [decFrom]),
            [decTo] = ISNULL(@decTo, [decTo]),
            [decTotal] = ISNULL(@decTotal, [decTotal])
        WHERE
            [lngID] = @lngID

        SELECT @lngID
    END

    RETURN @lngID
GO
/****** Object:  StoredProcedure [dbo].[prAssetUsage_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prAssetUsage_Search]
(
    @lngID bigint = Null,
    @strAssetCode nvarchar(20) = Null,
    @intYear int = Null,
    @intMonth int = Null,
    @strUnit nvarchar(5) = Null,
    @decFrom money = Null,
    @decTo money = Null,
    @decTotal money = Null
)
AS
    SET NOCOUNT ON

    SELECT 
        [lngID],
        [strAssetCode],
        [intYear],
        [intMonth],
        [strUnit],
        [decFrom],
        [decTo],
        [decTotal]
    FROM 
        [tblAssetUsage]
    WHERE
        (([lngID] = @lngID) OR (@lngID Is Null)) AND 
        (([strAssetCode] = @strAssetCode) OR (@strAssetCode Is Null)) AND 
        (([intYear] = @intYear) OR (@intYear Is Null)) AND 
        (([intMonth] = @intMonth) OR (@intMonth Is Null)) AND 
        (([strUnit] = @strUnit) OR (@strUnit Is Null)) AND 
        (([decFrom] = @decFrom) OR (@decFrom Is Null)) AND 
        (([decTo] = @decTo) OR (@decTo Is Null)) AND 
        (([decTotal] = @decTotal) OR (@decTotal Is Null))
GO
/****** Object:  StoredProcedure [dbo].[prBankRecAccts_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prBankRecAccts_Save]
	(
		@intGLNumber nvarchar(30) = null,
		@intInterestRev nvarchar(30) = null,
		@intInterestExp nvarchar(30) = null
	)
AS
	
	SET NOCOUNT ON;

	IF ((SELECT COUNT(*) FROM tblBankRecAccts WHERE intGLNumber = @intGLNumber) = 0)
	BEGIN
        INSERT INTO [tblBankRecAccts]
        (
            [intGLNumber],
			[intInterestRev],
			[intInterestExp]
        )
        VALUES
        (
            @intGLNumber,
            @intInterestRev,
            @intInterestExp
        )
    
        SELECT @intGLNumber
    END
    ELSE
    BEGIN
        UPDATE [tblBankRecAccts] SET 
			[intGLNumber] = ISNULL(@intGLNumber, [intGLNumber]),
			[intInterestRev] = ISNULL(@intInterestRev, [intInterestRev]),
			[intInterestExp] = ISNULL(@intInterestExp, [intInterestExp])
            
        WHERE
            [intGLNumber] = @intGLNumber

        SELECT @intGLNumber
    END

    RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prBMPreview_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prBMPreview_Select]         
@ID BIGINT        
AS        
BEGIN        
        
 SET NOCOUNT ON;        
        
 SELECT *        
 FROM (        
  SELECT tblBankManagerImports.lngImportedID        
   ,tblBankManagerImports.strUserName        
   ,tblBankManagerImports.lngId        
   ,tblBankManagerImports.dteDate        
   ,tblBankManagerImports.strStatementDescription        
   ,tblBankManagerImports.strDocumentType        
   ,CASE         
    WHEN ISNULL(tblBankManagerImports.strAccountType, '') = ''        
     THEN tblBankManagerMappings.strAccountType        
    ELSE tblBankManagerImports.strAccountType        
    END AS strAccountType        
   ,CASE bitImportComment        
    WHEN 1        
     THEN tblBankManagerImports.strStatementDescription        
    ELSE CASE         
      WHEN ISNULL(tblBankManagerImports.strComment, '') = ''        
       THEN tblBankManagerMappings.strComment        
      ELSE tblBankManagerImports.strComment        
      END        
    END AS strComment        
   ,CASE         
    WHEN ISNULL(tblBankManagerMappings.strCustName, '') = ''        
     THEN CASE         
       WHEN ISNULL(tblBankManagerMappings.strVendName, '') = ''        
        THEN CASE         
          WHEN ISNULL(tblBankManagerMappings.intGLNumber, '') = ''        
           THEN ''        
          ELSE tblBankManagerMappings.intGLNumber        
          END        
       ELSE tblBankManagerMappings.strVendName        
       END        
    ELSE tblBankManagerMappings.strCustName        
    END AS strAccountName        
   ,ISNULL(tblCustomers.strCustDesc, ISNULL(tblvendors.strVendDesc, (        
      SELECT ISNULL(tblAccounts1.strDesc, '')        
      FROM tblAccounts AS tblAccounts1        
      WHERE tblAccounts1.intGLNumber = tblBankManagerMappings.intGLNumber        
      ))) AS strAccountDesc        
   ,CASE         
    WHEN ISNULL(tblBankManagerImports.strTaxCode, '') = ''        
     THEN tblBankManagerMappings.strTaxCode        
    ELSE tblBankManagerImports.strTaxCode        
    END AS strTaxCode        
   ,tblBankManagerImports.decAmount        
   ,tblBankManagerMappings.strMappingName        
   ,tblBankManagerImports.lngGroupId        
   ,Isnull(tblBankManagerImports.YodleeReference, '') AS YodleeReference        
   ,Isnull(tblBankManagerImports.strReference, '') AS strReference        
  FROM tblBankManagerMappings        
  LEFT OUTER JOIN tblCustomers ON ISNULL(tblBankManagerMappings.strCustName, '') = tblCustomers.strCustName        
  LEFT OUTER JOIN tblVendors ON ISNULL(tblBankManagerMappings.strVendName, '') = tblVendors.strVendName        
  LEFT OUTER JOIN tblAccounts ON SUBSTRING(tblBankManagerMappings.intGLNumber, 0, ISNULL((        
      SELECT LEN(tblBankManagerMappings.intGLNumber) + 1        
      WHERE CHARINDEX('/', tblBankManagerMappings.intGLNumber, 0) = 0        
      ), CHARINDEX('/', tblBankManagerMappings.intGLNumber, 0))) = tblAccounts.intGLNumber        
  INNER JOIN tblBankManagerImports ON tblBankManagerMappings.strMappingName IN (        
    SELECT tblBankManagerMappings_1.strMappingName        
    FROM tblBankManagerMappings AS tblBankManagerMappings_1        
    WHERE (LTRIM(RTRIM(tblBankManagerImports.strStatementDescription)) LIKE '%' + LTRIM(RTRIM(strMappingName)) + '%')        
     AND (tblBankManagerImports.strDocumentType = tblBankManagerMappings_1.strDocumentType)        
     AND tblBankManagerImports.strAccountType = ''        
     AND tblBankManagerImports.lngImportedID = @ID        
    )        
   AND LTRIM(RTRIM(tblBankManagerImports.strDocumentType)) = LTRIM(RTRIM(tblBankManagerMappings.strDocumentType))        
  WHERE (tblBankManagerImports.lngImportedID = @ID)        
   AND (        
    tblBankManagerMappings.strMappingName = (        
     SELECT TOP (1) strMappingName        
     FROM tblBankManagerMappings AS tblBankManagerMappings_1        
     WHERE (LTRIM(RTRIM(tblBankManagerImports.strStatementDescription)) LIKE '%' + LTRIM(RTRIM(strMappingName)) + '%')        
      AND (tblBankManagerImports.strDocumentType = tblBankManagerMappings_1.strDocumentType)        
      AND tblBankManagerImports.strAccountType = ''        
     ORDER BY lngPriority ASC     
     )        
    )        
          
  UNION ALL        
          
  SELECT lngImportedID        
   ,strUserName        
   ,tblBankManagerImports.lngId        
   ,dteDate        
   ,strStatementDescription        
   ,tblBankManagerImports.strDocumentType        
   --,tblBankManagerImports.strAccountType
    ,CASE         
    WHEN ISNULL(tblBankManagerImports.strAccountType, '') = ''        
     THEN tblBankManagerMappings.strAccountType        
    ELSE tblBankManagerImports.strAccountType        
    END AS strAccountType 
   ,substring((        
     CASE         
      WHEN ISNULL(tblBankManagerImports.strComment, '') = ''        
       THEN strStatementDescription        
      ELSE tblBankManagerImports.strComment        
      END        
     ), 0, 49) AS strComment        
   ,      
   CASE WHEN     
 ISNULL(    
 CASE         
    WHEN ISNULL(tblBankManagerMappings.strCustName, '') = ''        
     THEN (        
       CASE         
        WHEN ISNULL(tblBankManagerMappings.strVendName, '') = ''        
         THEN (        
           CASE         
            WHEN ISNULL(tblBankManagerMappings.intGLNumber, '') = ''        
             THEN ''        
            ELSE tblBankManagerMappings.intGLNumber        
            END        
           )        
        ELSE tblBankManagerMappings.strVendName        
        END        
       )        
    ELSE tblBankManagerMappings.strCustName        
    END      
 ,      
 ''    
 )  = ''    
 THEN     
 CASE         
    WHEN ISNULL(tblBankManagerImports.strCustName, '') = ''        
     THEN (        
       CASE         
        WHEN ISNULL(tblBankManagerImports.strVendName, '') = ''        
         THEN (        
           CASE         
            WHEN ISNULL(tblBankManagerImports.intGLNumber, '') = ''        
             THEN ''        
            ELSE tblBankManagerImports.intGLNumber        
            END        
           )        
        ELSE tblBankManagerImports.strVendName        
        END        
       )        
    ELSE tblBankManagerImports.strCustName        
    END      
    
 ELSE    
 CASE         
    WHEN ISNULL(tblBankManagerMappings.strCustName, '') = ''        
     THEN (        
       CASE         
        WHEN ISNULL(tblBankManagerMappings.strVendName, '') = ''        
         THEN (        
           CASE         
            WHEN ISNULL(tblBankManagerMappings.intGLNumber, '') = ''        
             THEN ''        
            ELSE tblBankManagerMappings.intGLNumber        
            END        
           )        
        ELSE tblBankManagerMappings.strVendName        
        END        
       )        
    ELSE tblBankManagerMappings.strCustName        
    END      
 END      AS strAccountName   
   --,CASE         
   -- WHEN ISNULL(tblCustomers.strCustDesc, '') = ''        
   --  THEN (        
   --    CASE         
   --     WHEN ISNULL(tblvendors.strVendDesc, '') = ''        
   --      THEN (        
   --        CASE         
   --         WHEN ISNULL(tblAccounts.strDesc, '') = ''        
   --          THEN ''        
   --         ELSE tblAccounts.strDesc        
   --         END        
   --        )        
   --     ELSE tblvendors.strVendDesc        
   --     END        
   --    )        
   -- ELSE tblCustomers.strCustDesc        
   -- END AS strAccountDesc
    ,CASE WHEN     
 ISNULL(    
 CASE         
    WHEN ISNULL(tblBankManagerMappings.strCustName, '') = ''        
     THEN (        
       CASE         
        WHEN ISNULL(tblBankManagerMappings.strVendName, '') = ''        
         THEN (        
           CASE         
            WHEN ISNULL(tblBankManagerMappings.intGLNumber, '') = ''        
             THEN ''        
            ELSE tblBankManagerMappings.intGLNumber        
            END        
           )        
        ELSE tblBankManagerMappings.strVendName        
        END        
       )        
    ELSE tblBankManagerMappings.strCustName        
    END      
 ,      
 ''    
 )  = ''   THEN
	CASE         
    WHEN ISNULL(tblCustomers.strCustDesc, '') = ''        
     THEN (        
       CASE         
        WHEN ISNULL(tblvendors.strVendDesc, '') = ''        
         THEN (        
           CASE         
            WHEN ISNULL(tblAccounts.strDesc, '') = ''        
             THEN ''        
            ELSE tblAccounts.strDesc        
            END        
           )        
        ELSE tblvendors.strVendDesc        
        END        
       )        
    ELSE tblCustomers.strCustDesc        
    END
 ELSE
 CASE         
    WHEN ISNULL(tblBankManagerMappings.strCustName, '') = ''        
     THEN (        
       CASE         
        WHEN ISNULL(tblBankManagerMappings.strVendName, '') = ''        
         THEN (        
           CASE         
            WHEN ISNULL(tblBankManagerMappings.intGLNumber, '') = ''        
             THEN ''        
            ELSE (select TOP 1 strDesc FROM tblAccounts WHERE 
			SUBSTRING(tblBankManagerMappings.intGLNumber, 0, ISNULL((        
      SELECT LEN(tblBankManagerMappings.intGLNumber) + 1        
      WHERE CHARINDEX('/', tblBankManagerMappings.intGLNumber, 0) = 0        
      ), CHARINDEX('/', tblBankManagerMappings.intGLNumber, 0))) = tblAccounts.intGLNumber 
			)   
            END        
           )        
        ELSE (select TOP 1 strVendDesc FROM tblVendors WHERE strVendName = tblBankManagerMappings.strVendName)      
        END        
       )        
    ELSE (select TOP 1 strCustDesc FROM tblCustomers WHERE strCustName = tblBankManagerMappings.strCustName)    
    END  
 END strAccountDesc

   ,tblBankManagerImports.strTaxCode        
   ,decAmount        
    ,ISNULL(CASE         
    WHEN ISNULL(tblBankManagerImports.strMappingName, '') = ''        
     THEN tblBankManagerMappings.strMappingName        
    ELSE tblBankManagerImports.strMappingName        
    END,'') AS strMappingName
   --,tblBankManagerImports.strMappingName        
   ,lngGroupId        
   ,ISNULL(YodleeReference, '') AS YodleeReference        
   ,Isnull(tblBankManagerImports.strReference, '') AS strReference        
  FROM tblBankManagerImports        
  LEFT OUTER JOIN tblCustomers ON tblBankManagerImports.strCustName = tblCustomers.strCustName        
  LEFT OUTER JOIN tblVendors ON tblBankManagerImports.strVendName = tblVendors.strVendName        
  LEFT OUTER JOIN tblAccounts ON SUBSTRING(tblBankManagerImports.intGLNumber, 0, ISNULL((        
      SELECT LEN(tblBankManagerImports.intGLNumber) + 1        
      WHERE CHARINDEX('/', tblBankManagerImports.intGLNumber, 0) = 0        
      ), CHARINDEX('/', tblBankManagerImports.intGLNumber, 0))) = tblAccounts.intGLNumber        
  LEFT JOIN tblBankManagerMappings ON LTRIM(RTRIM(tblBankManagerImports.strStatementDescription)) = LTRIM(RTRIM(tblBankManagerMappings.strMappingName))        
   AND (tblBankManagerImports.strDocumentType = tblBankManagerMappings.strDocumentType)        
  WHERE (tblBankManagerImports.lngImportedID = @ID)        
   AND tblBankManagerImports.lngID NOT IN (        
    SELECT tblBankManagerImports.lngId        
    FROM tblBankManagerMappings        
    CROSS JOIN tblBankManagerImports        
    WHERE (tblBankManagerImports.lngImportedID = @ID)        
     AND (        
      tblBankManagerMappings.strMappingName = (        
       SELECT TOP (1) strMappingName        
       FROM tblBankManagerMappings AS tblBankManagerMappings_1        
       WHERE (LTRIM(RTRIM(tblBankManagerImports.strStatementDescription)) LIKE '%' + LTRIM(RTRIM(strMappingName)) + '%')        
        AND tblBankManagerImports.strDocumentType = tblBankManagerMappings_1.strDocumentType        
        AND tblBankManagerImports.strAccountType = ''        
       ORDER BY lngPriority ASC        
       )        
      )        
    )        
  ) z        
 WHERE z.strDocumentType IS NOT NULL        
  AND lngID > 0        
 ORDER BY lngID        
END        
  GO
/****** Object:  StoredProcedure [dbo].[prBudgetAnalysis_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[prCalculatePurchaseTargetBudgetInfo_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prCalculatePurchaseTargetBudgetInfo_Select]
(
	@periodStartDate DATETIME,
	@periodEndDate DATETIME,
	@finYearStartDate DATETIME,
	@finYearEndDate DATETIME,
	@item NVARCHAR(50),
	@docNumber NVARCHAR(50),
	@convertingDocNumber NVARCHAR(50),
	@Dept int = null
)

AS
BEGIN
							
	DECLARE
	@tempDate DATETIME,
	@itemType INT,
	@month INT,
	@periodBudget money = 0,
	@yearToDateBudget money = 0,
	@glNumber NVARCHAR(50)

	--Identify item type
	SET @itemType = (SELECT intType FROM tblInv WHERE strPartNumber = @item)

	SET @periodBudget = ISNULL(@periodBudget,0)
	SET @tempDate = @periodStartDate

	IF @itemType <> 5	--Inventory Items
	BEGIN
		--Period Budget
		WHILE @tempDate <= @periodEndDate
		BEGIN

			SET @month = (SELECT DATEPART(MONTH, @tempDate))
		
			SET @periodBudget = @periodBudget + 
				(SELECT
					CASE
						WHEN @month = 1 THEN decPeriod11
						WHEN @month = 2 THEN decPeriod12
						WHEN @month = 3 THEN decPeriod1
						WHEN @month = 4 THEN decPeriod2
						WHEN @month = 5 THEN decPeriod3
						WHEN @month = 6 THEN decPeriod4
						WHEN @month = 7 THEN decPeriod5
						WHEN @month = 8 THEN decPeriod6
						WHEN @month = 9 THEN decPeriod7
						WHEN @month = 10 THEN decPeriod8
						WHEN @month = 11 THEN decPeriod9
						WHEN @month = 12 THEN decPeriod10
					END
				FROM tblInvPurchaseTarget
				WHERE strPartNumber = @item)

			SET @tempDate = DATEADD(MONTH, 1, DATEFROMPARTS(DATEPART(YEAR, @tempDate), DATEPART(MONTH, @tempDate), 1))
		END

		--Year To Date Budget

		SET @tempDate = @finYearStartDate
		WHILE @tempDate <= @periodEndDate
		BEGIN

			SET @month = (SELECT DATEPART(MONTH, @tempDate))
		
			SET @yearToDateBudget = @yearToDateBudget + 
				(SELECT
					CASE
						WHEN @month = 1 THEN decPeriod11
						WHEN @month = 2 THEN decPeriod12
						WHEN @month = 3 THEN decPeriod1
						WHEN @month = 4 THEN decPeriod2
						WHEN @month = 5 THEN decPeriod3
						WHEN @month = 6 THEN decPeriod4
						WHEN @month = 7 THEN decPeriod5
						WHEN @month = 8 THEN decPeriod6
						WHEN @month = 9 THEN decPeriod7
						WHEN @month = 10 THEN decPeriod8
						WHEN @month = 11 THEN decPeriod9
						WHEN @month = 12 THEN decPeriod10
					END
				FROM tblInvPurchaseTarget
				WHERE strPartNumber = @item)

			SET @tempDate = DATEADD(MONTH, 1, DATEFROMPARTS(DATEPART(YEAR, @tempDate), DATEPART(MONTH, @tempDate), 1))
		END
		--SET @yearToDateBudget = (SELECT decPeriod1 + decPeriod2 + decPeriod3 + decPeriod4 + decPeriod5 + decPeriod6 + decPeriod7 + decPeriod8 + decPeriod9 + decPeriod10 + decPeriod11 + decPeriod12
		--						FROM tblInvPurchaseTarget
		--						WHERE strPartNumber = @item)
	END
	ELSE	--General Ledger
		BEGIN

		--Find GL number if code name has been changed
		SET @glNumber = (SELECT TOP(1) intExpAcct FROM tblInv WHERE strPartNumber = @item)

		--Period Budget
		WHILE @tempDate <= @periodEndDate
		BEGIN

			SET @month = (SELECT DATEPART(MONTH, @tempDate))
		
			IF @Dept IS NULL
			BEGIN
			SET @periodBudget = @periodBudget + 
				(SELECT
					CASE
						WHEN @month = 1 THEN decPeriod11
						WHEN @month = 2 THEN decPeriod12
						WHEN @month = 3 THEN decPeriod1
						WHEN @month = 4 THEN decPeriod2
						WHEN @month = 5 THEN decPeriod3
						WHEN @month = 6 THEN decPeriod4
						WHEN @month = 7 THEN decPeriod5
						WHEN @month = 8 THEN decPeriod6
						WHEN @month = 9 THEN decPeriod7
						WHEN @month = 10 THEN decPeriod8
						WHEN @month = 11 THEN decPeriod9
						WHEN @month = 12 THEN decPeriod10
					END
				FROM  tblAcctMultiBudgets
				WHERE intGLNumber = @glNumber AND BudgetName = (select strCapexBudget from tblCoOpts))
			END
			ELSE
			BEGIN 
			SET @periodBudget = @periodBudget + 
				(SELECT
					CASE
						WHEN @month = 1 THEN decPeriod11
						WHEN @month = 2 THEN decPeriod12
						WHEN @month = 3 THEN decPeriod1
						WHEN @month = 4 THEN decPeriod2
						WHEN @month = 5 THEN decPeriod3
						WHEN @month = 6 THEN decPeriod4
						WHEN @month = 7 THEN decPeriod5
						WHEN @month = 8 THEN decPeriod6
						WHEN @month = 9 THEN decPeriod7
						WHEN @month = 10 THEN decPeriod8
						WHEN @month = 11 THEN decPeriod9
						WHEN @month = 12 THEN decPeriod10
					END
				FROM  tblDeptMultiBudgets
				WHERE intGLNumber = @glNumber AND intDept = @Dept AND DeptBudgetName = (select strCapexDeptBudget from tblCoOpts))

			end
			SET @tempDate = DATEADD(MONTH, 1, DATEFROMPARTS(DATEPART(YEAR, @tempDate), DATEPART(MONTH, @tempDate), 1))
		END

		--Year To Date Budget

		SET @tempDate = @finYearStartDate
		WHILE @tempDate <= @periodEndDate
		BEGIN

			SET @month = (SELECT DATEPART(MONTH, @tempDate))
		
		IF @Dept IS NULL
		BEGIN
			SET @yearToDateBudget = @yearToDateBudget + 
				(SELECT
					CASE
						WHEN @month = 1 THEN decPeriod11
						WHEN @month = 2 THEN decPeriod12
						WHEN @month = 3 THEN decPeriod1
						WHEN @month = 4 THEN decPeriod2
						WHEN @month = 5 THEN decPeriod3
						WHEN @month = 6 THEN decPeriod4
						WHEN @month = 7 THEN decPeriod5
						WHEN @month = 8 THEN decPeriod6
						WHEN @month = 9 THEN decPeriod7
						WHEN @month = 10 THEN decPeriod8
						WHEN @month = 11 THEN decPeriod9
						WHEN @month = 12 THEN decPeriod10
					END
				FROM tblAcctMultiBudgets
				WHERE intGLNumber = @glNumber AND BudgetName = (select strCapexBudget from tblCoOpts))

				END
		ELSE
		BEGIN
		SET @yearToDateBudget = @yearToDateBudget + 
				(SELECT
					CASE
						WHEN @month = 1 THEN decPeriod11
						WHEN @month = 2 THEN decPeriod12
						WHEN @month = 3 THEN decPeriod1
						WHEN @month = 4 THEN decPeriod2
						WHEN @month = 5 THEN decPeriod3
						WHEN @month = 6 THEN decPeriod4
						WHEN @month = 7 THEN decPeriod5
						WHEN @month = 8 THEN decPeriod6
						WHEN @month = 9 THEN decPeriod7
						WHEN @month = 10 THEN decPeriod8
						WHEN @month = 11 THEN decPeriod9
						WHEN @month = 12 THEN decPeriod10
					END
				FROM tblDeptMultiBudgets
				WHERE intGLNumber = @glNumber and intDept = @Dept AND DeptBudgetName = (select strCapexDeptBudget from tblCoOpts))
		end
			SET @tempDate = DATEADD(MONTH, 1, DATEFROMPARTS(DATEPART(YEAR, @tempDate), DATEPART(MONTH, @tempDate), 1))
		END
		--SET @yearToDateBudget = (SELECT decPeriod1 + decPeriod2 + decPeriod3 + decPeriod4 + decPeriod5 + decPeriod6 + decPeriod7 + decPeriod8 + decPeriod9 + decPeriod10 + decPeriod11 + decPeriod12
		--						FROM tblAcctMultiBudgets
		--						WHERE intGLNumber = @glNumber AND BudgetName = (select strCapexBudget from tblCoOpts))
	END

	SET @periodBudget = ISNULL(@periodBudget, 0)
	SET @yearToDateBudget = ISNULL(@yearToDateBudget, 0)

	IF @itemType <> 5	--Inventory Items
		SELECT @periodBudget AS periodBudget, SUM(purchaseValue) AS periodCommitment, @yearToDateBudget AS yearToDateBudget, SUM(purchaseValueYear) AS yearToDateCommitment, MAX([description]) AS [description], MAX(approvedBy) AS approvedBy
		FROM
		(
		--Period Commitment
		--Purchases To Date
		SELECT ISNULL(SUM(CASE WHEN @itemType = 4 THEN tblInvTrackingDT.decCOGS ELSE tblInvTrackingDT.decValue END), 0) AS purchaseValue, 0 AS purchaseValueYear, '' AS [description], '' AS approvedBy
		FROM tblInvTracking
		INNER JOIN
		tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
		WHERE dteJournalDate BETWEEN @periodStartDate AND @periodEndDate AND intModule = 1 AND tblInvTrackingDT.strPartNumber = @item
		UNION ALL
		--Open Purchase Orders
		SELECT ISNULL(SUM(decBuyQtyRemain * decPriceEaExc), 0) AS purchaseValue, 0 AS purchaseValueYear, '' AS [description], '' AS approvedBy
		FROM tblOrderDocPDT
		INNER JOIN
		tblOrderDocP ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
		WHERE strPartNumber = @item AND dteJournalDate BETWEEN @periodStartDate AND @periodEndDate AND tblOrderDocP.bitCleared = 0 AND tblOrderDocP.intDocType = 1 AND tblOrderDocPDT.strOrdPDocID != @docNumber

		UNION ALL

		--Year To Date Commitment
		--Purchases To Date
		SELECT 0 AS purchaseValue, ISNULL(SUM(CASE WHEN @itemType = 4 THEN tblInvTrackingDT.decCOGS ELSE tblInvTrackingDT.decValue END), 0) AS purchaseValueYear, '' AS [description], '' AS approvedBy
		FROM tblInvTracking
		INNER JOIN
		tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
		WHERE dteJournalDate BETWEEN @finYearStartDate AND @finYearEndDate AND intModule = 1 AND tblInvTrackingDT.strPartNumber = @item
		UNION ALL
		--Open Purchase Orders
		SELECT 0 AS purchaseValue, ISNULL(SUM(decBuyQtyRemain * decPriceEaExc), 0) AS purchaseValueYear, '' AS [description], '' AS approvedBy
		FROM tblOrderDocPDT
		INNER JOIN
		tblOrderDocP ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
		WHERE strPartNumber = @item AND tblOrderDocP.dteJournalDate BETWEEN @finYearStartDate AND @finYearEndDate AND tblOrderDocP.bitCleared = 0 AND tblOrderDocP.intDocType = 1 AND tblOrderDocPDT.strOrdPDocID != @docNumber

		UNION ALL

		--Item description
		SELECT 0 AS purchaseValue, 0 AS purchaseValueYear, strDesc AS [description], '' AS approvedBy
		FROM tblInv
		WHERE strPartNumber = @item

		UNION ALL

		--Get Approved By for purchase order record
		SELECT 0 AS purchaseValue, 0 AS purchaseValueYear, '' AS [description], strApprovedBy AS approvedBy
		FROM tblInvPurchaseTargetBudgetInfo 
		WHERE strTransactionType = 'PURQ' AND strDocNumber = @convertingDocNumber

		) AS tbl
	ELSE	--General Ledger
		SELECT @periodBudget AS periodBudget, SUM(purchaseValue) AS periodCommitment, @yearToDateBudget AS yearToDateBudget, SUM(purchaseValueYear) AS yearToDateCommitment, MAX([description]) AS [description], MAX(approvedBy) AS approvedBy
		FROM
		(
		--Period Commitment
		--Account Balance
		SELECT SUM(tblJournalEnt.decAmount) AS purchaseValue, 0 AS purchaseValueYear, '' AS [description], '' AS approvedBy
		FROM tblJournal
		INNER JOIN
		tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
		WHERE tblJournal.dteJournalDate BETWEEN @periodStartDate AND @periodEndDate AND tblJournal.intModule IN (0,1) AND tblJournalEnt.intGLNumber = @glNumber
		UNION ALL
		--Open Purchase Orders
		SELECT ISNULL(SUM(decBuyQtyRemain * decPriceEaExc), 0) AS purchaseValue, 0 AS purchaseValueYear, '' AS [description], '' AS approvedBy
		FROM tblOrderDocPDT
		INNER JOIN
		tblOrderDocP ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
		WHERE strPartNumber = @item AND dteJournalDate BETWEEN @periodStartDate AND @periodEndDate AND tblOrderDocP.bitCleared = 0 AND tblOrderDocP.intDocType = 1 AND tblOrderDocPDT.strOrdPDocID != @docNumber

		UNION ALL

		--Year To Date Commitment
		--Account Balance
		SELECT 0 AS purchaseValue, SUM(tblJournalEnt.decAmount) AS purchaseValueYear, '' AS [description], '' AS approvedBy
		FROM tblJournal
		INNER JOIN
		tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
		WHERE tblJournal.dteJournalDate BETWEEN @finYearStartDate AND @finYearEndDate AND tblJournal.intModule IN (0,1) AND tblJournalEnt.intGLNumber = @glNumber
		UNION ALL
		--Open Purchase Orders
		SELECT 0 AS purchaseValue, ISNULL(SUM(decBuyQtyRemain * decPriceEaExc), 0) AS purchaseValueYear, '' AS [description], '' AS approvedBy
		FROM tblOrderDocPDT
		INNER JOIN
		tblOrderDocP ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
		WHERE strPartNumber = @item AND tblOrderDocP.dteJournalDate BETWEEN @finYearStartDate AND @finYearEndDate AND tblOrderDocP.bitCleared = 0 AND tblOrderDocP.intDocType = 1 AND tblOrderDocPDT.strOrdPDocID != @docNumber
		
		UNION ALL

		--Item description
		SELECT 0 AS purchaseValue, 0 AS purchaseValueYear, strDesc AS [description], '' AS approvedBy
		FROM tblInv
		WHERE strPartNumber = @item
		
		UNION ALL

		--Get Approved By for purchase order record
		SELECT 0 AS purchaseValue, 0 AS purchaseValueYear, '' AS [description], strApprovedBy AS approvedBy
		FROM tblInvPurchaseTargetBudgetInfo 
		WHERE strTransactionType = 'PURQ' AND strDocNumber = @convertingDocNumber

		) AS tbl
END
GO
/****** Object:  StoredProcedure [dbo].[prCheckBinForDelete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[prCheckBinForDelete]    Script Date: 2018-01-19 02:05:00 PM ******/
CREATE PROCEDURE [dbo].[prCheckBinForDelete]
	-- Add the parameters for the stored procedure here
	@SQlngBinId bigint
	AS
	BEGIN
		-- SET NOCOUNT ON added to prevent extra result SETs FROM
		-- INTerfering with SELECT statements.
		SET NOCOUNT ON;

		-- Insert statements for procedure here
		DECLARE @BinCOUNT INT 

		SET @BinCOUNT =  (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblInvIssReqDocDTBin WHERE lngBinId = @SQlngBinId)

		IF @BinCOUNT = 0
			BEGIN
				SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblPickTicketsDTBin WHERE lngBinId = @SQlngBinId)
			END

		IF @BinCOUNT = 0
			BEGIN
				SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblInvRepackDocDTBin WHERE lngBinId = @SQlngBinId)
			END

		IF @BinCOUNT = 0
			BEGIN
				SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblInvAsmDocDTBin WHERE lngBinId = @SQlngBinId)
			END

		IF @BinCOUNT = 0
			BEGIN
				SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblManWIPCompInvBin WHERE lngBinId = @SQlngBinId)
			END

		IF @BinCOUNT = 0
			BEGIN
				SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblInvAdjDocDT WHERE lngBinId = @SQlngBinId)
			END

		IF @BinCOUNT = 0
			BEGIN
				SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(*) FROM  tblInvoiceDocPDTBin WHERE lngBinId = @SQlngBinId)
			END

		IF @BinCOUNT = 0
			BEGIN
				SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblOrderDocPGDTBin WHERE lngBinId = @SQlngBinId)
			END

		IF @BinCOUNT = 0
			BEGIN
				SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(*) FROM  tblInvTrfDocDT WHERE lngFromBinId = @SQlngBinId OR lngToBinId = @SQlngBinId)
			END

		IF @BinCOUNT = 0
			BEGIN
				SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblOrderDocDADTBin WHERE lngBinId = @SQlngBinId)
			END

		IF @BinCOUNT = 0
			BEGIN
				SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblInvoiceDocDTBin WHERE lngBinId = @SQlngBinId)
			END

		IF @BinCOUNT = 0
			BEGIN
				SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblInvTrackingDTBin WHERE lngBinId = @SQlngBinId)
			END

		IF @BinCOUNT = 0
			BEGIN
				SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblInvLotExt WHERE lngBinId = @SQlngBinId)
			END

		IF @BinCOUNT = 0
			BEGIN
				SET @BinCOUNT =  @BinCOUNT + (SELECT COUNT(ISNULL(lngBinId,0)) FROM  tblSerialNumberTracking WHERE lngBinId = @SQlngBinId)
			END
		
		SELECT @BinCOUNT
END

GO
/****** Object:  StoredProcedure [dbo].[prCompany_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prCompany_Select]
(
    @strName nvarchar(50)
)
AS
    SET NOCOUNT ON

    SELECT 
        [strName],
        [strStreet1],
        [strStreet2],
        [strCity],
        [strProvince],
        [strPostal],
        [strCountry],
        [strPhone1],
        [strPhone2],
        [strFax],
        [strEmail],
        [strCK],
        [strVAT],
        [dteLYStarted],
        [dteLYEnded],
        [dteYearStarts],
        [dteYearEnds],
        [dteEarliestTran],
        [dtePeriodClose],
        [strCountryCode],
        [imgLogo],
        [strCoSerial],
        [strCloudUsername],
        [strCloudPassword]
    FROM 
        [tblCompany]
    WHERE 
        [strName] = @strName
GO
/****** Object:  StoredProcedure [dbo].[prCompanyOptions_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prCompanyOptions_SelectAll]
AS
    SET NOCOUNT ON;

    SELECT 
        [bitReadReceipt],
		[bitHighPriority],
		[bitSendDirect],
		[intRecPeriod1],
		[intRecPeriod2],
		[intRecPeriod3],
		[intPayPeriod1],
		[intPayPeriod2],
		[intPayPeriod3],
		[strAutoINV],
		[strAutoSO],
		[strAutoQU],
		[strAutoPI],
		[strAutoPO],
		[intReqPay],
		[intReqRec],
		[bitTransFuture],
		[bitSessionFuture],
		[bitSMSAuto],
		[butAutoSMSQu],
		[strAutoSMSQu],
		[bitAutoSMSSO],
		[strAutoSMSSO],
		[bitAutoSMSInv],
		[strAutoSMSInv],
		[bitInvRec],
		[bitInvPay],
		[intCashStatus],
		[bitNegInv],
		[intRefChk],
		[intRefReq],
		[bitSortInvDesc],
		[strAutoRQ],
		[bitUseCredit],
		[decCreditAmt],
		[bitSendOutlook],
		[strEmailFrom],
		[strSMTP],
		[bitSMTPAuth],
		[strSMTPUser],
		[strSMTPPwd],
		[bitPCJournal],
		[bitPCInvAdj],
		[bitPCSales],
		[bitPCPurch],
		[bitJELinked],
		[bitInvSessOnly],
		[decRecIntRate],
		[bitBlockDesc],
		[bitBlockUnit],
		[bitQSUseMarkup],
		[decQSPct],
		[bitBlockDescP],
		[bitBlockUnitP],
		[intGLMode],
		[intSpellMode],
		[intProcessDocs],
		[bitCreditRequestActive],
		[intProcessDocsP],
		[bitAutoApplyCreditNotes],
		[bitUDFinCat],
		[intCNReasonReq],
		[bitVendStockCodes],
		[intSalesPersonReq],
		[bitItemNumConvActive],
		[intPDepartmentReq],
		[intRDepartmentReq],
		[bitARSplitPmtOnCOD],
		[intAPPartDeliveries],
		[intAPOverReceiving],
		[bitBlockOrigInvReprint],
		[bitGRVBlindReceive],
		[intAPRefChk],
		[intAPRefReq],
		[bitARAutoPrintInv],
		[intAPAuthReq],
		[intARAuthReq],
		[intPOSAuthReq],
		[bitDSValidateDailySales],
		[bitARClearDocs],
		[bitAPClearDocs],
		[bitAPAutoPrintInv],
		[bitWHAutoPrintInv],
		[bitDSAutoPrintInv],
		[bitStockTakeMethod],
		[intARCreateReturn],
		[intAPCreateReturn],
		[bitARAllowProcessTotal],
		[bitAPAllowProcessTotal],
		[bitPCRecPayJnl],
		[bitProjSales],
		[bitProjFHQuotes],
		[bitProjPurch],
		[bitProjGRV],
		[bitProjAllowPostInactive],
		[intDefUpdateBank],
		[bitProjRecPayJnl],
		[bitAPPmtRequiresApprovals],
		[bitCurrencyHasDecimal],
		[intBlockOnOverdueINV],
		[bitFHQRequireApproval],
		[intRecCodeConvention],
		[intRecCodeConSeg1CharCount],
		[strRecCodeConSeg1CharType],
		[intRecCodeConSeg2CharCount],
		[strRecCodeConSeg2CharType],
		[intPayCodeConvention],
		[intPayCodeConSeg1CharCount],
		[strPayCodeConSeg1CharType],
		[intPayCodeConSeg2CharCount],
		[strPayCodeConSeg2CharType],
		[strFHQPricelist],
		[bitWithholdingTaxAR],
		[bitWithholdingTaxAP],
		[bitInvImgOnSI],
		[bitInvImgOnSO],
		[bitInvImgOnSQ],
		[bitInvImgOnSFHQ],
		[bitInvAdjustWHTransferCost],
		[bitProjJournal],
		[bitInvImgOnCR],
		[intReportTimeout],
		[intReportTimeoutVPN],
		[bitAutoInvokeGRV],
		[bitPCAllocPerc],
		[bitARIncludeOpenOrdersInCreditLimit],
		[bitARSalesPersonLevel],
		[bitInvImgOnPI],
		[bitInvImgOnPO],
		[bitInvImgOnPQ],
		[bitDisableAirtime],
		[intAirProvider],
		[strAirURL],
		[strAirAccNo],
		[strAirUsername],
		[strAirPassword],
		[strAirKey],
		[bitInvLotsOverUnder],
		[bitSMTPRequireSSL],
		[intSMTPPort],
		[bitInvExtDescOnSI],
		[bitInvExtDescOnSO],
		[bitInvExtDescOnSQ],
		[bitInvExtDescOnSFHQ],
		[bitInvExtDescOnCR],
		[bitInvExtDescOnPI],
		[bitInvExtDescOnPO],
		[bitInvExtDescOnPQ],
		[bitARDefSP],
		[bitARDefDept],
		[bitAPDefDept],
		[bitAirAllowDocumentCrediting],
		[bitCentersPOS],
		[bitPOSEnableCenters],
		[bitPOSEnableUDF],
		[bitPOSEnableUpsell],
		[bitARCompoundedInt],
		[intGPCalcInvLevel],
		[intGPCalcLPP],
		[intOverCreditLimit],
		[intBlockOnOverdueORD],
		[bitBlockOnOverdueORDConvert],
		[bitOverCreditLimitConvert],
		[decCreditBlockSILimit],
		[decCreditBlockSOLimit],
		[bitWHAutoAssignPT],
		[bitProjDelAdvice],
		[bitARDelAdvSO],
		[bitAutoInvokeDA],
		[bitARShowPricesDAProcess],
		[bitARShowPricesDAPrint],
		[blnARRequestVAT],
		[decARMinValueForVAT],
		[bitNegInvMovingAvg],
		[bitAddSignature],
		[bitNonIntegrated],
		[bitNonIntegratedChanged],
		[intDecimalQuantity],
        [bitManScaleRead],
        [strManScaleFolder],
        [bitManOverUnder],
        [intManAuthReq],
        [bitAPToMDaP],
        [bitWHAutoPrintPT],
        [bitWHAutoIssuePT],
        [intGLRPJDepartmentReq],
        [bitPCInvIssReq],
        [bitProjInvAdj],
        [bitProjInvIssReq],
        [bitProjInvIntReq],
        [blnPOApprovalsEnable],
        [blnPOApprovalsDocLimitEnable],
        [blnPOApprovalsVenLimitEnable],
        [decPODefaultDocLimit],
        [decPODefaultVenLimit],
        [bitInvExtDescOnBRQ],
        [bitInvImgOnBRQ],
        [bitWHRecSerialLotNum],
        [bitManStandardCost],
        [bitPurchCostVar],
        [bitWarnPurchOver],
        [decWarnPurchOverPerc],
        [intSOUnavailable],
        [decDimensionFactor],
        [bitActivateProcessingDocument],
        [intDepreciationCalculationMethod],
		[strDimUnitOfMeasure]
    FROM 
        [tblCoOpts]
GO
/****** Object:  StoredProcedure [dbo].[prContract_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prContract_Select]
	(
		@SQlngContractId bigint
	)
	AS
	BEGIN
		SET NOCOUNT ON

		SELECT *,ISNULL((SELECT strContractType FROM tblOptContractType WHERE lngId = tblContracts.lngContractType),'') AS strContractType
		FROM tblContracts WHERE lngId = @SQlngContractId

		SELECT * FROM tblContractsDT WHERE lngContractId = @SQlngContractId
	END
GO
/****** Object:  StoredProcedure [dbo].[prContractBillDT_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[prContractBillDT_Save] 
(
	@strContDocID nvarchar(50)=NULL,
	@intLineNo int=NULL,
	@strPartNumber nvarchar(50)=NULL,
	@strLocation nvarchar(10)=NULL,
	@strPartDesc nvarchar(100)=NULL,
	@decQty money=NULL,
	@strUnit nvarchar(15)=NULL,
	@intType tinyint=NULL,
	@decLineTaxAmt money=NULL,
	@strSalesName nvarchar(50)=NULL,
	@strTaxCode nvarchar(2)=NULL,
	@strCurrency nvarchar(3)=NULL,
	@bitIsForeign bit=NULL,
	@decLineDiscPerc money=NULL,
	@decLineDiscAmt money=NULL,
	@decLineDiscAmtF money=NULL,
	@bitDiscountTax bit=NULL,
	@strContBillType bigint=NULL,
	@blnAllowAnnualIncrease bit=NULL,
	@intContractPriceIncrease int=NULL,
	@dtpIncreaseStartDate datetime=NULL,
	@dtpSetUpDate datetime=NULL,
	@dtpActivationDate datetime=NULL,
	@dtpTerminationDate datetime=NULL,
	@dtpExpirationDate datetime=NULL,
	@dtpBillingSchduleStart datetime=NULL,
	@strBillingFrequncy nvarchar(50)=NULL,
	@dtpLastBillDate datetime=NULL,
	@dtpNextBillDate datetime=NULL,
	@decStockQty money=Null,
    @strStockUnit nvarchar(50)=Null,
	@decPriceEaExc MONEY = NULL,
	@decLineTotExc MONEY = NULL,
	@decPriceEaInc MONEY = NULL,
	@decLineTotInc MONEY = NULL,
	@imgTaxObj IMAGE = NULL,
	@decPriceEaExcF MONEY = NULL,
	@decLineTotExcF MONEY = NULL,
	@decLineTaxAmtF MONEY = NULL,
	@decEaIncTaxF MONEY = NULL,
	@decTotIncTaxF MONEY = NULL
)
 As  IF ((SELECT COUNT(*) FROM tblContractBillDT WHERE strContDocID = @strContDocID) = 0)
    BEGIN
        INSERT INTO [tblContractBillDT]
        (
			strContDocID,
			intLineNo,
			strPartNumber,
			strLocation,
			strPartDesc,
			decQty,
			strUnit,
			intType,
			decLineTaxAmt,
			strSalesName,
			strTaxCode,
			strCurrency,
			bitIsForeign,
			decLineDiscPerc,
			decLineDiscAmt,
			decLineDiscAmtF,
			bitDiscountTax,
			strContBillType,
			blnAllowAnnualIncrease,
			intContractPriceIncrease,
			dtpIncreaseStartDate,
			dtpSetUpDate,
			dtpActivationDate,
			dtpTerminationDate,
			dtpExpirationDate,
			dtpBillingSchduleStart,
			strBillingFrequncy,
			dtpLastBillDate,
			dtpNextBillDate,
			decStockQty,
			strStockUnit,
			decPriceEaExc,
			decLineTotExc,
			decPriceEaInc,
			decLineTotInc,
			imgTaxObj,
			decPriceEaExcF,
			decLineTotExcF,
			decLineTaxAmtF,
			decEaIncTaxF,
			decTotIncTaxF	
        )
        VALUES
        (
			@strContDocID,
			@intLineNo,
			@strPartNumber,
			@strLocation,
			@strPartDesc,
			@decQty,
			@strUnit,
			@intType,
			@decLineTaxAmt,
			@strSalesName,
			@strTaxCode,
			@strCurrency,
			@bitIsForeign,
			@decLineDiscPerc,
			@decLineDiscAmt,
			@decLineDiscAmtF,
			@bitDiscountTax,
			@strContBillType,
			@blnAllowAnnualIncrease,
			@intContractPriceIncrease,
			@dtpIncreaseStartDate,
			@dtpSetUpDate,
			@dtpActivationDate,
			@dtpTerminationDate,
			@dtpExpirationDate,
			@dtpBillingSchduleStart,
			@strBillingFrequncy,
			@dtpLastBillDate,
			@dtpNextBillDate,
			@decStockQty,
			@strStockUnit,
			@decPriceEaExc,
			@decLineTotExc,
			@decPriceEaInc,
			@decLineTotInc,
			@imgTaxObj,
			@decPriceEaExcF,
			@decLineTotExcF,
			@decLineTaxAmtF,
			@decEaIncTaxF,
			@decTotIncTaxF	
        )
    
        SELECT @strContDocID
    END     
	RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prContractBillEnquiries_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prContractBillEnquiries_Select] 
(
	@strCustName nvarchar(50)=NULL
)
 As  Select TCB.strContDocID as ContractNumber,TCB.strContBillType as ContractType,TCBDT.strPartNumber as ItemCode,
	TCBDT.strPartDesc as ItemDescription,TCBDT.strLocation as ItemLocation,TCB.decSubTotal as ContractPrice,TCBDT.dtpActivationDate as ContractStartDate,
	TCBDT.strBillingFrequncy as Frequency,TCBDT.dtpIncreaseStartDate as IncreaseDate,TCBDT.intContractPriceIncrease as IncreasePercentage,
	TCBDT.dtpNextBillDate as NextInvoiceDate,TCBDT.dtpLastBillDate as LastInvoiceDate,CASE WHEN (TCB.bitInactive = 1) THEN 'Inactive' ELSE 'Active' END AS [Status],
	TCB.strNotes as Note from tblContractBill TCB INNER JOIN tblContractBillDT TCBDT ON TCB.strContDocID=TCBDT.strContDocID
	LEFT JOIN tblCustomers TC ON TC.strCustName=TCB.strCustName WHERE TC.strCustName=@strCustName
GO
/****** Object:  StoredProcedure [dbo].[prContractBillInvoice_GetTotalProcessCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prContractBillInvoice_GetTotalProcessCount]
	(
	 @strContDocID nvarchar(50)=NULL
	)
AS
BEGIN
	SELECT ISNULL(intTotalProcessCount, 0) AS intTotalProcessCount 
	FROM tblContractBill
	WHERE strContDocID = @strContDocID
END
GO
/****** Object:  StoredProcedure [dbo].[prContractBillInvoice_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[prContractBillInvoice_Save] 
(
	@strContDocID nvarchar(50)=NULL,
	@dteSystemDate date=NULL,
	@dteJournalDate date=NULL,
	@strUserName nvarchar(20)=NULL,
	@strCustName nvarchar(50)=NULL,
	@strContractTo nvarchar(500)=NULL,
	@strReference nvarchar(50)=NULL,
	@decSubTotal money=NULL,
	@decTotal money=NULL,
	@decVAT money=NULL,
	@strNotes  nvarchar(MAX)=NULL,
	@strOrdDocID nvarchar(50)=NULL,
	@bitPrinted bit=Null,
	@bitEmailed bit=Null,
	@strSalesName nvarchar(50)=Null,
	@strAddInfo nvarchar(50)=NULL,
	@strCurrency nvarchar(3)=NULL,
	@strTerm nvarchar(50)=NULL,
	@strField1 nvarchar(100)=NULL,
	@strField2 nvarchar(100)=NULL,
	@strField3 nvarchar(100)=NULL,
	@strField4 nvarchar(100)=NULL,
	@strField5 nvarchar(100)=NULL,
	@strField6 nvarchar(100)=NULL,
	@strField7 nvarchar(100)=NULL,
	@strField8 nvarchar(100)=NULL,
	@strField9 nvarchar(100)=NULL,
	@strField10 nvarchar(100)=NULL,
	@strField11 nvarchar(100)=NULL,
	@strField12 nvarchar(100)=NULL,
	@dtpField13 date=NULL,
	@dtpField14 date=NULL,
	@strSubFormated nvarchar(50)=NULL,
	@strTotFormatted nvarchar(50)=NULL,
	@strVATFormatted nvarchar(50)=Null,
	@decDiscPerc money=NULL,
	@decDiscAmt money=NULL,
	@decDiscAmtF money=NULL,
	@strDiscFormatted nvarchar(50)=NULL,
	@strPaidBy nvarchar(20)=NULL,
	@strDelMethodCode nvarchar(50)=NULL,
	@strContBillType nvarchar(50)=NULL,
	@blnAllowAnnualIncrease bit=NULL,
	@intContractPriceIncrease int=NULL,
	@dtpIncreaseStartDate date=NULL,
	@bitInactive bit=NULL,
	@strShipTo varchar(200)=NULL,
	@intRevisionNumber int=NULL,
	@bitIsForeign bit=Null,
	@dtpLastProcessDate datetime = NULL,
	@intTotalProcessCount int = NULL,
	@decSubTotalF money=NULL,
	@decVATF money=NULL,
	@decTotalF money=NULL,
	@decExchange decimal(20,6)=NULL,
	@strDepartment nvarchar(50)=NULL,
	@decTotalWeight	money,
    @decTotalVolWeight money,
    @decDeliveryCost money
)
 As  
 BEGIN TRY
	IF ((SELECT COUNT(*) FROM tblContractBill WHERE strContDocID = @strContDocID) = 0)
    BEGIN
        INSERT INTO [tblContractBill]
        (
			strContDocID,
			dteSystemDate,
			dteJournalDate,
			strUserName,
			strCustName,
			strContractTo,
			strReference,
			decSubTotal,
			decTotal,
			decVAT,
			strNotes,
			strOrdDocID,
			bitPrinted,
			bitEmailed,
			strSalesName,
			strAddInfo,
			strCurrency,
			strTerm,
			strField1,
			strField2,
			strField3,
			strField4,
			strField5,
			strField6,
			strField7,
			strField8,
			strField9,
			strField10,
			strField11,
			strField12,
			dtpField13,
			dtpField14,
			strSubFormated,
			strTotFormatted,
			strVATFormatted,
			decDiscPerc,
			decDiscAmt,
			decDiscAmtF,
			strDiscFormatted,
			strPaidBy,
			strDelMethodCode,
			strContBillType,
			blnAllowAnnualIncrease,
			intContractPriceIncrease,
			dtpIncreaseStartDate,
			bitInactive,
			strShipTo,
			intRevisionNumber,
			bitIsForeign,
			dtpLastProcessDate,
			intTotalProcessCount,
			decSubTotalF,
			decVATF,
			decTotalF,
			decExchange,
			strDepartment,
			decTotalWeight,
			decTotalVolWeight,
			decDeliveryCost
        )
        VALUES
        (
			@strContDocID,
			@dteSystemDate ,
			@dteJournalDate ,
			@strUserName,
			@strCustName,
			@strContractTo ,
			@strReference ,
			@decSubTotal,
			@decTotal ,
			@decVAT,
			@strNotes  ,
			@strOrdDocID,
			@bitPrinted,
			@bitEmailed ,
			@strSalesName ,
			@strAddInfo ,
			@strCurrency,
			@strTerm ,
			@strField1 ,
			@strField2 ,
			@strField3 ,
			@strField4,
			@strField5 ,
			@strField6 ,
			@strField7 ,
			@strField8,
			@strField9 ,
			@strField10 ,
			@strField11 ,
			@strField12 ,
			@dtpField13 ,
			@dtpField14 ,
			@strSubFormated ,
			@strTotFormatted ,
			@strVatFormatted,
			@decDiscPerc ,
			@decDiscAmt,
			@decDiscAmtF ,
			@strDiscFormatted,
			@strPaidBy ,
			@strDelMethodCode,
			@strContBillType,
			@blnAllowAnnualIncrease,
			@intContractPriceIncrease ,
			@dtpIncreaseStartDate ,
			@bitInactive ,
			@strShipTo,
			@intRevisionNumber,
			@bitIsForeign,
			@dtpLastProcessDate,
			@intTotalProcessCount,
			@decSubTotalF,
			@decVATF,
			@decTotalF,
			@decExchange,
			@strDepartment,
			@decTotalWeight,
			@decTotalVolWeight,
			@decDeliveryCost
        )
    
        SELECT @strContDocID
    END  
	ELSE
	BEGIN
		UPDATE [tblContractBill] SET 
		   [strContDocID]= ISNULL(@strContDocID, [strContDocID]),
		   [dteSystemDate]= ISNULL(@dteSystemDate, [dteSystemDate]),  
		   [dteJournalDate]= ISNULL(@dteJournalDate, [dteJournalDate]),  
		   [strUserName]= ISNULL(@strUserName, [strUserName]),  
		   [strCustName]= ISNULL(@strCustName, [strCustName]),  
		   [strContractTo]= ISNULL(@strContractTo, [strContractTo]),    
		   [strReference]= ISNULL(@strReference, [strReference]),  
		   [decSubTotal]= ISNULL(@decSubTotal, [decSubTotal]),  
		   [decTotal]= ISNULL(@decTotal, [decTotal]),  
		   [decVAT]= ISNULL(@decVAT, [decVAT]),  
		   [strNotes]= ISNULL(@strNotes, [strNotes]),  
		   [strOrdDocID]= ISNULL(@strOrdDocID, [strOrdDocID]),  
		   [bitPrinted]= ISNULL(@bitPrinted, [bitPrinted]),  
		   [bitEmailed]= ISNULL(@bitEmailed, [bitEmailed]),  
		   [strSalesName]= ISNULL(@strSalesName, [strSalesName]),  
		   [strAddInfo]= ISNULL(@strAddInfo, [strAddInfo]),  
		   [strCurrency]= ISNULL(@strCurrency, [strCurrency]),  
		   [strTerm]= ISNULL(@strTerm, [strTerm]),  
		   [strField1]= ISNULL(@strField1, [strField1]),  
		   [strField2]= ISNULL(@strField2, [strField2]),  
		   [strField3]= ISNULL(@strField3, [strField3]),  
		   [strField4]= ISNULL(@strField4, [strField4]),  
		   [strField5]= ISNULL(@strField5, [strField5]),  
		   [strField6]= ISNULL(@strField6, [strField6]),  
		   [strField7]= ISNULL(@strField7, [strField7]),  
		   [strField8]= ISNULL(@strField8, [strField8]),  
		   [strField9]= ISNULL(@strField9, [strField9]),  
		   [strField10]= ISNULL(@strField10, [strField10]),  
		   [strField11]= ISNULL(@strField11, [strField11]),  
		   [strField12]= ISNULL(@strField12, [strField12]),  
		   [dtpField13]= ISNULL(@dtpField13, [dtpField13]),  
		   [dtpField14]= ISNULL(@dtpField14, [dtpField14]),  
		   [strSubFormated]= ISNULL(@strSubFormated, [strSubFormated]),  
		   [strTotFormatted]= ISNULL(@strTotFormatted, [strTotFormatted]),  
		   [strVATFormatted]= ISNULL(@strVATFormatted, [strVATFormatted]),
		   [decDiscPerc]= ISNULL(@decDiscPerc, [decDiscPerc]),  
		   [decDiscAmt]= ISNULL(@decDiscAmt, [decDiscAmt]),  
		   [decDiscAmtF]= ISNULL(@decDiscAmtF, [decDiscAmtF]),  
		   [strDiscFormatted]= ISNULL(@strDiscFormatted, [strDiscFormatted]),  
		   [strPaidBy]= ISNULL(@strPaidBy, [strPaidBy]),  
		   [strDelMethodCode]= ISNULL(@strDelMethodCode, [strDelMethodCode]),  
		   [strContBillType]= ISNULL(@strContBillType, [strContBillType]),  
		   [blnAllowAnnualIncrease]= ISNULL(@blnAllowAnnualIncrease, [blnAllowAnnualIncrease]),  
		   [intContractPriceIncrease]= ISNULL(@intContractPriceIncrease, [intContractPriceIncrease]),  
		   [dtpIncreaseStartDate]= ISNULL(@dtpIncreaseStartDate, [dtpIncreaseStartDate]), 
		   [bitInactive]= ISNULL(@bitInactive, [bitInactive]),  
		   [strShipTo]= ISNULL(@strShipTo, [strShipTo]),
		   [intRevisionNumber] = ISNULL(@intRevisionNumber, [intRevisionNumber]),   
		   [bitIsForeign]= ISNULL(@bitIsForeign, [bitIsForeign]),
		   [dtpLastProcessDate]= ISNULL(@dtpLastProcessDate,[dtpLastProcessDate]),
		   [intTotalProcessCount]= ISNULL(@intTotalProcessCount,[intTotalProcessCount]),
		   [decSubTotalF]= ISNULL(@decSubTotalF,[decSubTotalF]),
		   [decVATF]= ISNULL(@decVATF,[decVATF]),
		   [decTotalF]= ISNULL(@decTotalF,[decTotalF]),
		   [decExchange] = ISNULL(@decExchange,[decExchange]),
		   [strDepartment] =ISNULL(@strDepartment, [strDepartment]),
		   [decTotalWeight] = @decTotalWeight,
		   [decTotalVolWeight] = @decTotalVolWeight,
		   [decDeliveryCost] = @decDeliveryCost    
        WHERE
            [strContDocID] = @strContDocID
        SELECT @strContDocID
	END 
	RETURN 1
	END TRY
BEGIN CATCH
 PRINT 'Error: ' + ERROR_MESSAGE();
END CATCH
GO
/****** Object:  StoredProcedure [dbo].[prContractBillInvoice_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[prContractBillInvoice_Search] 
(@strContDocID nvarchar(50)=NULL,
	@strOrdDocID nvarchar(50)=NULL,
	@strContBillType nvarchar(50)=NULL)
 As SELECT 
            [strContDocID],
			[dteSystemDate],
			[dteJournalDate],
			[strUserName],
			[strCustName],
			[strContractTo],
			[strReference],
			[decSubTotal],
			[decTotal],
			[decVAT],
			[strNotes],
			[strOrdDocID],
			[bitPrinted],
			[bitEmailed],
			[strSalesName],
			[strAddInfo],
			[strCurrency],
			[strTerm],
			[strField1],
			[strField2],
			[strField3],
			[strField4],
			[strField5],
			[strField6],
			[strField7],
			[strField8],
			[strField9],
			[strField10],
			[strField11],
			[strField12],
			[dtpField13],
			[dtpField14],
			[strSubFormated],
			[strTotFormatted],
			[strVATFormatted],
			[decDiscPerc],
			[decDiscAmt],
			[decDiscAmtF],
			[strDiscFormatted],
			[strPaidBy],
			[strDelMethodCode],
			[strContBillType],
			[blnAllowAnnualIncrease],
			[intContractPriceIncrease],
			[dtpIncreaseStartDate],
			[bitInactive],
			[strShipTo],
			[bitIsForeign],
			[dtpLastProcessDate],
			[intTotalProcessCount],
			[decSubTotalF],
			[decVATF],
			[decTotalF],
			[decExchange]
    FROM 
        [tblContractBill]
	WHERE
		(([strContDocID] = @strContDocID) OR (@strContDocID Is Null)) AND 
		(([strOrdDocID] = @strOrdDocID) OR (@strOrdDocID Is Null)) AND
		(([strContBillType] = @strContBillType) OR (@strContBillType Is Null))
GO
/****** Object:  StoredProcedure [dbo].[prContractBillInvoice_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[prContractBillInvoice_Select]
	(
		@strContDocID nvarchar(50)=NULL
	) 
 As  Select
	   [strContDocID]
      ,[dteSystemDate]
      ,[dteJournalDate]
      ,[strUserName]
      ,[strCustName]
      ,[strContractTo]
      ,[strReference]
      ,[decSubTotal]
      ,[decTotal]
      ,[strNotes]
      ,[strOrdDocID]
      ,[bitPrinted]
      ,[bitEmailed]
      ,[strSalesName]
      ,[strAddInfo]
      ,[strCurrency]
      ,[strTerm]
      ,[strField1]
      ,[strField2]
      ,[strField3]
      ,[strField4]
      ,[strField5]
      ,[strField6]
      ,[strField7]
      ,[strField8]
      ,[strField9]
      ,[strField10]
      ,[strField11]
      ,[strField12]
      ,[dtpField13]
      ,[dtpField14]
      ,[strSubFormated]
      ,[strTotFormatted]
	  ,[strVATFormatted]
      ,[decDiscPerc]
      ,[decDiscAmt]
      ,[decDiscAmtF]
      ,[strDiscFormatted]
      ,[strPaidBy]
      ,[strDelMethodCode]
      ,[strContBillType]
      ,[blnAllowAnnualIncrease]
      ,[intContractPriceIncrease]
      ,[dtpIncreaseStartDate]
      ,[bitInactive]
	  ,[strShipTo]
      ,[decVAT]
      ,[bitIsForeign]
      ,[dtpLastProcessDate]
      ,[intTotalProcessCount]
      ,[decSubTotalF]
      ,[decVATF]
      ,[decTotalF]
      ,[decExchange]
	   FROM [tblContractBill]
	WHERE
			[strContDocID]=@strContDocID
GO
/****** Object:  StoredProcedure [dbo].[prContractBillInvoice_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[prContractBillInvoice_SelectAll] 
 As  Select
	   [strContDocID]
      ,[dteSystemDate]
      ,[dteJournalDate]
      ,[strUserName]
      ,[strCustName]
      ,[strContractTo]
      ,[strReference]
      ,[decSubTotal]
      ,[decTotal]
      ,[strNotes]
      ,[strOrdDocID]
      ,[bitPrinted]
      ,[bitEmailed]
      ,[strSalesName]
      ,[strAddInfo]
      ,[strCurrency]
      ,[strTerm]
      ,[strField1]
      ,[strField2]
      ,[strField3]
      ,[strField4]
      ,[strField5]
      ,[strField6]
      ,[strField7]
      ,[strField8]
      ,[strField9]
      ,[strField10]
      ,[strField11]
      ,[strField12]
      ,[dtpField13]
      ,[dtpField14]
      ,[strSubFormated]
      ,[strTotFormatted]
	  ,[strVATFormatted]
      ,[decDiscPerc]
      ,[decDiscAmt]
      ,[decDiscAmtF]
      ,[strDiscFormatted]
      ,[strPaidBy]
      ,[strDelMethodCode]
      ,[strContBillType]
      ,[blnAllowAnnualIncrease]
      ,[intContractPriceIncrease]
      ,[dtpIncreaseStartDate]
      ,[bitInactive]
	  ,(SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblContractBill.strCustName) as CustomerName
	  ,[strShipTo]
      ,[decVAT]
      ,[bitIsForeign]
      ,[dtpLastProcessDate]
      ,[intTotalProcessCount]
      ,[decSubTotalF]
      ,[decVATF]
      ,[decTotalF]
      ,[decExchange]
	   FROM [tblContractBill]
	   Where bitInactive=0
	   Order By [strContDocID]
GO
/****** Object:  StoredProcedure [dbo].[prContractBillInvoiceDocREV_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prContractBillInvoiceDocREV_Save] 
(
	@SQDocNumber nvarchar(250),
	@SQlngRevID int,
	@SQintModule int	
)
AS
BEGIN
	
ALTER TABLE tblInvoiceDocREV NOCHECK CONSTRAINT FK_tblInvoiceDocREV_tblDeliveryMethods
INSERT INTO [tblInvoiceDocREV] (
	[lngEntID]
	,[strInvDocID]
	,[lngInvTrackID]
	,[lngJourID]
	,[dteSystemDate]
	,[dteJournalDate]
	,[dteRequired]
	,[strUserName]
	,[strCustName]
	,[strSoldTo]
	,[strShipTo]
	,[strReference]
	,[decSubTotal]
	,[decVAT]
	,[decTotal]
	,[bitFromSO]
	,[strOrdDocID]
	,[bitHistoryTrans]
	,[strNotes]
	,[bitPrinted]
	,[bitEmailed]
	,[intPaidBy]
	,[intAccount]
	,[strSalesName]
	,[strAddInfo]
	,[bitReserved]
	,[strCurrency]
	,[bitIsForeign]
	,[decSubTotalF]
	,[decVATF]
	,[decTotalF]
	,[decExchange]
	,[strTerm]
	,[intDept]
	,[strField1]
	,[strField2]
	,[strField3]
	,[strField4]
	,[strField5]
	,[strField6]
	,[strField7]
	,[strField8]
	,[strField9]
	,[strField10]
	,[strField11]
	,[strField12]
	,[strSubFormated]
	,[strVATFormatted]
	,[strTotFormatted]
	,[dteField13]
	,[dteField14]
	,[decDiscPerc]
	,[decDiscAmt]
	,[decDiscAmtF]
	,[strDiscFormatted]
	,[strOrdFQDocID]
	,[strStatusTypeCode]
	,[strCNReasonCode]
	,[bitBookmark]
	,[dteSystemDateTime]
	,[strPaidBy]
	,[intSentDoc]
	,[strVAT]
	,[strDelMethodCode]
	,[decTotalWeight]
	,[decTotalVolWeight]
	,[decDeliveryCost]
	,[decDeliveryCostF]
	,[strDeliveryCostFormatted]
	,[intRevisionNumber]
	,[dteRevisionDate]
	,[strUserCreated]
	,[bitIsRepair]
	,[strVendName]
	,[strBoughtFrom]
	,[bitFQConvert]
	,[bitSOCopy]
	,[bitSOCopyMulti]
	,[strVendInvNo]
	,[bitFromPO]
	,[decNetItemWeight]
	,[decNetVolumetricWeight]
	,[strSourceMOP]
	,[bitCleared]
	,[strOrdRFQDocID]
	,[bitRFQConvert]
	,[strOrdPDocID]
	,[intModule]
	,[strSOReasonCode]
	,[strDelNoteNo]
	,[strContractTo]
	,[strContBillType]
	,[blnAllowAnnualIncrease]
	,[intContractPriceIncrease]
	,[dtpIncreaseStartDate]
	,[bitInactive]
	) (
	SELECT @SQlngRevID
		,strContDocID
		,NULL
		,NULL
		,dteSystemDate
		,dteJournalDate
		,NULL
		,strUserName
		,strCustName
		,NULL
		,NULL
		,strReference
		,decSubTotal
		,decVAT
		,decTotal
		,NULL
		,strOrdDocID
		,NULL
		,strNotes
		,bitPrinted
		,bitEmailed
		,NULL
		,NULL
		,strSalesName
		,strAddInfo
		,NULL
		,strCurrency
		,NULL
		,NULL
		,NULL
		,NULL
		,NULL
		,strTerm
		,NULL
		,strField1
		,strField2
		,strField3
		,strField4
		,strField5
		,strField6
		,strField7
		,strField8
		,strField9
		,strField10
		,strField11
		,strField12
		,strSubFormated
		,strVATFormatted
		,strTotFormatted
		,dtpField13
		,dtpField14
		,decDiscPerc
		,decDiscAmt
		,decDiscAmtF
		,strDiscFormatted
		,NULL
		,NULL
		,NULL
		,NULL
		,GETDATE()
		,strPaidBy
		,NULL
		,NULL
		,ISNULL(strDelMethodCode,'')
		,NULL
		,NULL
		,NULL
		,NULL
		,NULL
		,intRevisionNumber
		,GETDATE()
		,NULL
		,NULL
		,NULL
		,NULL
		,NULL
		,NULL
		,NULL
		,NULL
		,NULL
		,NULL
		,NULL
		,NULL
		,NULL
		,NULL
		,NULL
		,NULL
		,@SQintModule
		,NULL
		,NULL
		,strContractTo
		,strContBillType
		,blnAllowAnnualIncrease
		,intContractPriceIncrease
		,dtpIncreaseStartDate
		,bitInactive 
	FROM tblContractBill 
	WHERE strContDocID = @SQDocNumber
	)
	ALTER TABLE tblInvoiceDocREV CHECK CONSTRAINT FK_tblInvoiceDocREV_tblDeliveryMethods	
END
GO
/****** Object:  StoredProcedure [dbo].[prContractBillInvoiceUpdate_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[prContractBillInvoiceUpdate_Select]
	(
		@strContDocID nvarchar(50)=NULL
	) 
 As Select
	   TB.[strContDocID]
      ,TB.[dteSystemDate]
      ,TB.[dteJournalDate]
      ,TB.[strUserName]
      ,TB.[strCustName]
      ,TB.[strContractTo]
      ,TB.[strReference]
      ,TB.[decSubTotal]
      ,TB.[decTotal]
      ,TB.[strNotes]
      ,TB.[strOrdDocID]
      ,TB.[bitPrinted]
      ,TB.[bitEmailed]
      ,TB.[strSalesName]
      ,TB.[strAddInfo]
      ,TB.[strCurrency]
      ,TB.[strTerm]
      ,TB.[strField1]
      ,TB.[strField2]
      ,TB.[strField3]
      ,TB.[strField4]
      ,TB.[strField5]
      ,TB.[strField6]
      ,TB.[strField7]
      ,TB.[strField8]
      ,TB.[strField9]
      ,TB.[strField10]
      ,TB.[strField11]
      ,TB.[strField12]
      ,TB.[dtpField13]
      ,TB.[dtpField14]
      ,TB.[strSubFormated]
      ,TB.[strTotFormatted]
	  ,TB.[strVATFormatted]
      ,TB.[decDiscPerc]
      ,TB.[decDiscAmt]
      ,TB.[decDiscAmtF]
      ,TB.[strDiscFormatted]
      ,TB.[strPaidBy]
      ,TB.[strDelMethodCode]
      ,TB.[strContBillType]
      ,TB.[blnAllowAnnualIncrease]
      ,TB.[intContractPriceIncrease]
      ,TB.[dtpIncreaseStartDate]
      ,TB.[bitInactive]
	  ,TB.[strShipTo]
      ,TB.[decVAT]
      ,TB.[bitIsForeign]
      ,TB.[dtpLastProcessDate]
      ,TB.[intTotalProcessCount]
	  ,TB.[decSubTotalF]
      ,TB.[decVATF]
      ,TB.[decTotalF]
      ,TB.[decExchange]
	  ,TBDT.intLineNo
	  ,TBDT.strPartNumber
	  ,TBDT.strLocation
	  ,TBDT.strPartDesc
	  ,TBDT.decQty
	  ,TBDT.strUnit
	  ,TBDT.decPriceEaExc
	  ,TBDT.decLineTotExc
	  ,TBDT.decLineTaxAmt
	  ,TBDT.strTaxCode
	  ,TBDT.strCurrency
	  ,TBDT.bitIsForeign
	  ,TBDT.strContBillType
	  ,TBDT.blnAllowAnnualIncrease
	  ,TBDT.intContractPriceIncrease
	  ,TBDT.dtpIncreaseStartDate
	  ,TBDT.dtpSetUpDate
	  ,TBDT.dtpActivationDate
	  ,TBDT.dtpTerminationDate
	  ,TBDT.dtpExpirationDate
	  ,TBDT.dtpBillingSchduleStart
	  ,TBDT.strBillingFrequncy
	  ,TBDT.dtpLastBillDate
	  ,TBDT.dtpNextBillDate
	  ,TBDT.[decStockQty]
	  ,TBDT.[strStockUnit]
	   FROM [tblContractBill] TB INNER JOIN [tblContractBillDT] TBDT
	   ON TB.strContDocID=TBDT.strContDocID
	WHERE
	   TB.[strContDocID]=@strContDocID
GO
/****** Object:  StoredProcedure [dbo].[prContractBillType_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[prContractBillType_SelectAll] 

@InActive BIT = 0
,@SearchText AS NVARCHAR(Max) = ''

 As BEGIN 

 select count(*) from (
 Select [lngID] as ID,[strContBillType] as ContBillType ,
            [strContBillTypeDesc] as ContBillTypeDesc,            
            [bitInactive] as IsInactive,
			[intChargeonFreq] as ChargeonFreq,
			[intChargeonFreqType] as ChargeonFreqType,
			[intChargeonDay] as ChargeonDay,
			[dteSystemDate] as SystemDate,
			[dteActivateFrom] as ActivateFrom,
			[dteTerminateOn] as TerminateOn,
			[bitChargeImmediate] as IsChargeImmediate,
			[bitLimitOccourance] as IsLimitOccurrence,
			[intLimitOccouranceTimes] as LimitOccurrenceTimes
	FROM
	        [tblContractBillTypes] WHERE (
			bitInactive = @InActive
			OR bitInactive = 0
			)
		AND (
			(ISNULL(strContBillType, '') LIKE '%' + ISNULL(@SearchText, strContBillType) + '%')
			OR ISNULL(strContBillTypeDesc, '') LIKE '%' + ISNULL(@SearchText, strContBillTypeDesc) + '%'
			))

			[tblContractBillTypes]
END
GO

/****** Object:  StoredProcedure [dbo].[prContractBillTypes_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[prContractBillTypes_Delete] 
(@strContBillType nvarchar(50)=NULL )
 As  DELETE FROM [tblContractBillTypes] WHERE [strContBillType] = @strContBillType
GO
/****** Object:  StoredProcedure [dbo].[prContractBillTypes_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[prContractBillTypes_Save] 
(	@strContBillType nvarchar(50)=NULL,
	@strContBillTypeDesc nvarchar(250)=NULL,
	@bitInactive bit=NULL,
	@intChargeonFreq int=NULL,
	@intChargeonFreqType int=NULL,
	@intChargeonDay int=NULL,
	@dteSystemDate datetime=NULL,
	@dteActivateFrom datetime=NULL,
	@dteTerminateOn datetime=NULL,
	@bitChargeImmediate bit=NULL,
	@bitLimitOccourance bit=NULL,
	@intLimitOccouranceTimes int=NULL )
 As IF ((SELECT COUNT(*) FROM tblContractBillTypes WHERE strContBillType = @strContBillType) = 0)
    BEGIN
        INSERT INTO [tblContractBillTypes]
        (
            [strContBillType],
            [strContBillTypeDesc],            
            [bitInactive],
			[intChargeonFreq],
			[intChargeonFreqType],
			[intChargeonDay],
			[dteSystemDate],
			[dteActivateFrom],
			[dteTerminateOn],
			[bitChargeImmediate],
			[bitLimitOccourance],
			[intLimitOccouranceTimes]
        )
        VALUES
        (
            @strContBillType,
            @strContBillTypeDesc,            
            @bitInactive,
			@intChargeonFreq,
			@intChargeonFreqType,
			@intChargeonDay,
			@dteSystemDate,
			@dteActivateFrom,
			@dteTerminateOn,
			@bitChargeImmediate,
			@bitLimitOccourance,
			@intLimitOccouranceTimes
        )
    
        SELECT @strContBillType
    END
    ELSE
    BEGIN
        UPDATE [tblContractBillTypes] SET 
		   [strContBillType]= ISNULL(@strContBillType, [strContBillType]),
            [strContBillTypeDesc]= ISNULL(@strContBillTypeDesc, [strContBillTypeDesc]),            
            [bitInactive]= ISNULL(@bitInactive, [bitInactive]),
			[intChargeonFreq]= ISNULL(@intChargeonFreq, [intChargeonFreq]),
			[intChargeonFreqType]= ISNULL(@intChargeonFreqType, [intChargeonFreqType]),
			[intChargeonDay]= ISNULL(@intChargeonDay, [intChargeonDay]),
			[dteSystemDate]= ISNULL(@dteSystemDate, [dteSystemDate]),
			[dteActivateFrom]= ISNULL(@dteActivateFrom, [dteActivateFrom]),
			[dteTerminateOn]= ISNULL(@dteTerminateOn, [dteTerminateOn]),
			[bitChargeImmediate]= ISNULL(@bitChargeImmediate, [bitChargeImmediate]),
			[bitLimitOccourance]= ISNULL(@bitLimitOccourance, [bitLimitOccourance]),
			[intLimitOccouranceTimes]= ISNULL(@intLimitOccouranceTimes, [intLimitOccouranceTimes])
            
        WHERE
            [strContBillType] = @strContBillType

        SELECT @strContBillType
    END
	RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prContractBillTypes_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[prContractBillTypes_Select] 
(@strContBillType nvarchar(50)=NULL )
 As Select  [lngID],
			[strContBillType],
            [strContBillTypeDesc],            
            [bitInactive],
			[intChargeonFreq],
			[intChargeonFreqType],
			[intChargeonDay],
			[dteSystemDate],
			[dteActivateFrom],
			[dteTerminateOn],
			[bitChargeImmediate],
			[bitLimitOccourance],
			[intLimitOccouranceTimes] 
	FROM
	        [tblContractBillTypes]
	WHERE
			[strContBillType]=@strContBillType
GO
/****** Object:  StoredProcedure [dbo].[prContracts_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prContracts_Delete]
	(
		@SQlngContractId bigint
	)
	AS
	BEGIN
		SET NOCOUNT ON

		DELETE FROM [tblContracts] WHERE [lngId] = @SQlngContractId
	END
GO
/****** Object:  StoredProcedure [dbo].[prContracts_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prContracts_List]      
@SQstrSearchText nvarchar(50) = NULL,      
@SQbitInactive bit = NULL      
AS      
BEGIN      
 SET NOCOUNT ON;      
 SELECT       
  *,      
  ISNULL((SELECT strContractType FROM tblOptContractType WHERE lngId = tblContracts.lngContractType),'') AS strContractType      
 FROM       
  tblContracts WHERE ((strContractNumber Like '%' + @SQstrSearchText + '%' Or @SQstrSearchText IS NULL) OR       
      (strContactPerson Like '%' + @SQstrSearchText + '%' Or @SQstrSearchText IS NULL) OR      
      (strDescription Like '%' + @SQstrSearchText + '%' Or @SQstrSearchText IS NULL) OR      
      (intGLNumber Like '%' + @SQstrSearchText + '%' Or @SQstrSearchText IS NULL))      
      AND (bitInactive IN (0,@SQbitInactive) OR @SQbitInactive IS NULL)      
END 
GO
/****** Object:  StoredProcedure [dbo].[prContracts_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

Create PROCEDURE [dbo].[prContracts_Save]
(    
 @lngId bigint,    
 @lngContractType bigint,    
 @strDescription nvarchar(500),    
 @strContractNumber nvarchar(100),    
 @strContactPerson nvarchar(20),    
 @intGLNumber nvarchar(30),    
 @strUserName nvarchar(20),    
 @bitInactive bit    
)    
AS    
SET IDENTITY_INSERT [tblContracts] ON
    SET NOCOUNT ON    
    
    IF ((SELECT COUNT(*) FROM [tblContracts] WHERE lngId = @lngId) = 0)    
    BEGIN    
        INSERT INTO [tblContracts]    
        (    
		lngId,
   lngContractType,    
   strDescription,    
   strContractNumber,    
   strContactPerson,    
   intGLNumber,    
   strUserName,    
   bitInactive    
        )    
        VALUES    
        (    
		@lngId,
   @lngContractType,    
   @strDescription,    
   @strContractNumber,    
   @strContactPerson,    
   @intGLNumber,    
   @strUserName,    
   @bitInactive    
        )    
    END    
    ELSE    
    BEGIN    
        UPDATE [tblContracts] SET     
   lngContractType = @lngContractType,    
   strDescription = @strDescription,    
   strContractNumber = @strContractNumber,    
   strContactPerson = @strContactPerson,    
   intGLNumber = @intGLNumber,    
   strUserName = @strUserName,    
   bitInactive=@bitInactive    
        WHERE    
            lngId = @lngId    
    END  
GO
/****** Object:  StoredProcedure [dbo].[prContractsDT_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prContractsDT_Delete]
	(
		@SQlngContractId bigint
	)
	AS
	BEGIN
		SET NOCOUNT ON

		DELETE FROM [tblContractsDT] WHERE [lngId] = @SQlngContractId
	END
GO
/****** Object:  StoredProcedure [dbo].[prContractsDT_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prContractsDT_Save](  
 @lngId bigint,  
 @lngContractId bigint,  
 @dteFromDate datetime,  
 @dteToDate datetime,  
 @decAmount money,  
 @strUserName nvarchar(20)  
)  
AS  
    SET NOCOUNT ON  
    IF ((SELECT COUNT(*) FROM [tblContractsDT] WHERE lngId = @lngId) = 0)  
    BEGIN  
        INSERT INTO [tblContractsDT]  
        (  
   lngContractId,  
   dteFromDate,  
   dteToDate,  
   decAmount,  
   strUserName  
        )  
        VALUES  
        (  
   @lngContractId,  
   @dteFromDate,  
   @dteToDate,  
   @decAmount,  
   @strUserName  
        )  
    END  
    ELSE  
    BEGIN  
        UPDATE [tblContractsDT] SET   
   lngContractId=@lngContractId,  
   dteFromDate=@dteFromDate,  
   dteToDate=@dteToDate,  
   decAmount=@decAmount,  
   strUserName = @strUserName  
        WHERE  
            lngId = @lngId  
END
GO
/****** Object:  StoredProcedure [dbo].[prContractTypes_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[prContractTypes_Search] 
(@lngID bigint = NULL,
	@strContBillType nvarchar(50)=NULL,
	@strContBillTypeDesc nvarchar(250)=NULL,
	@bitInactive bit=NULL )
 As Select  [lngID],
			[strContBillType],
            [strContBillTypeDesc],            
            [bitInactive],
			[intChargeonFreq],
			[intChargeonFreqType],
			[intChargeonDay],
			[dteSystemDate],
			[dteActivateFrom],
			[dteTerminateOn],
			[bitChargeImmediate],
			[bitLimitOccourance],
			[intLimitOccouranceTimes] 
	FROM
	        [tblContractBillTypes]
	WHERE
			
			(([lngID] = @lngID) OR (@lngID Is NULL)) AND 
            (([strContBillType] = @strContBillType) OR (@strContBillType Is NULL)) AND 
            (([strContBillTypeDesc] = @strContBillTypeDesc) OR (@strContBillTypeDesc Is NULL)) AND        
            (([bitInactive] = @bitInactive) OR (@bitInactive Is NULL))
GO
/****** Object:  StoredProcedure [dbo].[prCostTypes_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prCostTypes_Delete]
(
    @strCode nvarchar(20)
)
AS
    SET NOCOUNT ON

    DELETE FROM [tblCostTypes] WHERE [strCode] = @strCode
GO
/****** Object:  StoredProcedure [dbo].[prCostTypes_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prCostTypes_Save]
(
    @lngID bigint = Null,
    @strCode nvarchar(20) = Null,
    @strDescription nvarchar(100) = Null,
    @strUOM nvarchar(10) = Null,
    @bitInactive bit = Null
)
AS
  BEGIN
        INSERT INTO [tblCostTypes]
        (
            [strCode],
            [strDescription],
            [strUOM],
            [bitInactive]
        )
        VALUES
        (
            @strCode,
            @strDescription,
            @strUOM,
            @bitInactive
        )
    
        SELECT @strCode
  END
GO
/****** Object:  StoredProcedure [dbo].[prCostTypes_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prCostTypes_Search]
(
    @lngID bigint = Null,
    @strCode nvarchar(20) = Null,
    @strDescription nvarchar(100) = Null,
    @strUOM nvarchar(10) = Null,
    @bitInactive bit = Null
)
AS
    SET NOCOUNT ON

    SELECT 
        [lngID],
        [strCode],
        [strDescription],
        [strUOM],
        [bitInactive]
    FROM 
        [tblCostTypes]
    WHERE
        (([lngID] = @lngID) OR (@lngID Is Null)) AND 
        (([strCode] = @strCode) OR (@strCode Is Null)) AND 
        (([strDescription] = @strDescription) OR (@strDescription Is Null)) AND 
        (([strUOM] = @strUOM) OR (@strUOM Is Null)) AND 
        (([bitInactive] = @bitInactive) OR (@bitInactive Is Null))
GO
/****** Object:  StoredProcedure [dbo].[prCostTypes_SearchParamWise]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prCostTypes_SearchParamWise]
		@bitIncludeInactive bit,
		@strSearch nvarchar(100)
		AS
			SET NOCOUNT ON

			IF @bitIncludeInactive = 0
				BEGIN
					 SELECT 
						[lngID],
						[strCode],
						[strDescription],
						[strUOM],
						[bitInactive]
					FROM 
						[tblCostTypes]
					WHERE
						([strCode] LIKE '%'+@strSearch+'%' OR [strDescription] LIKE '%'+@strSearch+'%'  ) AND bitInactive = 0
				END
			ELSE IF @bitIncludeInactive = 1
				BEGIN
					 SELECT 
						[lngID],
						[strCode],
						[strDescription],
						[strUOM],
						[bitInactive]
					FROM 
						[tblCostTypes]
					WHERE
						([strCode] LIKE '%'+@strSearch+'%' OR [strDescription] LIKE '%'+@strSearch+'%'  )
				END
GO
/****** Object:  StoredProcedure [dbo].[prCostTypes_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prCostTypes_Select]
(
    @strCode nvarchar(20)
)
AS
    SET NOCOUNT ON

    SELECT 
        [lngID],
        [strCode],
        [strDescription],
        [strUOM],
        [bitInactive]
    FROM 
        [tblCostTypes]
    WHERE 
        [strCode] = @strCode
GO
/****** Object:  StoredProcedure [dbo].[prCostTypes_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prCostTypes_SelectAll]
AS
    SET NOCOUNT ON

    SELECT 
        [lngID],
        [strCode],
        [strDescription],
        [strUOM],
        [bitInactive]
    FROM 
        [tblCostTypes]
GO
/****** Object:  StoredProcedure [dbo].[prCustomerContacts_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prCustomerContacts_Search]
(
    @lngID bigint = Null,
    @strName nvarchar(200) = Null,
    @strCustName nvarchar(50) = Null,
    @intJobTitle bigint = Null,
    @strEmail nvarchar(150) = Null,
    @strTel nvarchar(20) = Null,
    @strFax nvarchar(20) = Null,
    @strCell nvarchar(20) = Null,
    @strStreet1 nvarchar(100) = Null,
    @strStreet2 nvarchar(100) = Null,
    @strCity nvarchar(50) = Null,
    @strProvince nvarchar(50) = Null,
    @strPostal nvarchar(20) = Null,
    @strNotes varchar(MAX) = Null,
    @strFacebook nvarchar(50) = Null,
    @strLinkedIn nvarchar(50) = Null,
    @strSkype nvarchar(50) = Null
)
AS
    SET NOCOUNT ON

    SELECT 
        [lngID],
        [strName],
        [strCustName],
        [intJobTitle],
        [strEmail],
        [strTel],
        [strFax],
        [strCell],
        [strStreet1],
        [strStreet2],
        [strCity],
        [strProvince],
        [strPostal],
        [strNotes],
        [strFacebook],
        [strLinkedIn],
        [strSkype],
        [imgPicture]
    FROM 
        [tblCustomerContacts]
    WHERE
        (([lngID] = @lngID) OR (@lngID Is Null)) AND 
        (([strName] = @strName) OR (@strName Is Null)) AND 
        (([strCustName] = @strCustName) OR (@strCustName Is Null)) AND 
        (([intJobTitle] = @intJobTitle) OR (@intJobTitle Is Null)) AND 
        (([strEmail] = @strEmail) OR (@strEmail Is Null)) AND 
        (([strTel] = @strTel) OR (@strTel Is Null)) AND 
        (([strFax] = @strFax) OR (@strFax Is Null)) AND 
        (([strCell] = @strCell) OR (@strCell Is Null)) AND 
        (([strStreet1] = @strStreet1) OR (@strStreet1 Is Null)) AND 
        (([strStreet2] = @strStreet2) OR (@strStreet2 Is Null)) AND 
        (([strCity] = @strCity) OR (@strCity Is Null)) AND 
        (([strProvince] = @strProvince) OR (@strProvince Is Null)) AND 
        (([strPostal] = @strPostal) OR (@strPostal Is Null)) AND 
        (([strNotes] = @strNotes) OR (@strNotes Is Null)) AND 
        (([strFacebook] = @strFacebook) OR (@strFacebook Is Null)) AND 
        (([strLinkedIn] = @strLinkedIn) OR (@strLinkedIn Is Null)) AND 
        (([strSkype] = @strSkype) OR (@strSkype Is Null))
GO
/****** Object:  StoredProcedure [dbo].[prCustomerFromDocumentNo_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prCustomerFromDocumentNo_Search] (
		@strDocNumber nvarchar(MAX) = Null
	)
AS
	BEGIN
	SELECT strCustName, strDocumentNo, strCustDesc, strCity, strPhone, strField1, strField2, strField3, strField4, strField5, strField6 FROM
	(

		SELECT 
			  tblInvoiceDoc.strCustName,
			  strInvDocID AS strDocumentNo,
			  tblcustomers.strCustDesc,
			  tblCustomers.strCity,
			  tblCustomers.strPhone,
			  tblcustomers.strField1,
			  tblcustomers.strField2,
			  tblcustomers.strField3,
			  tblcustomers.strField4,
			  tblcustomers.strField5,
			  tblcustomers.strField6
		FROM 
	    	  tblInvoiceDoc
		INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
		WHERE
	          strInvDocID LIKE 'IN-' + '%' AND
			  strInvDocID LIKE '%' + @strDocNumber + '%'

		UNION 

		SELECT 
				tblOrderDoc.strCustName,
				strOrdDocID AS strDocumentNo,
				tblcustomers.strCustDesc,
				tblCustomers.strCity,
				tblCustomers.strPhone,
				tblcustomers.strField1,
				tblcustomers.strField2,
				tblcustomers.strField3,
				tblcustomers.strField4,
				tblcustomers.strField5,
				tblcustomers.strField6
		FROM 
				tblOrderDoc
		INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
		WHERE
				intDocType = 1 AND
				strOrdDocID LIKE 'SO-' + '%' AND
				strOrdDocID LIKE '%' + @strDocNumber + '%'

		UNION 

		SELECT 
				tblOrderDoc.strCustName,
				strOrdDocID AS strDocumentNo,
				tblcustomers.strCustDesc,
				tblCustomers.strCity,
				tblCustomers.strPhone,
				tblcustomers.strField1,
				tblcustomers.strField2,
				tblcustomers.strField3,
				tblcustomers.strField4,
				tblcustomers.strField5,
				tblcustomers.strField6
		FROM 
				tblOrderDoc
				INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
		WHERE
				intDocType = 2 AND
				strOrdDocID LIKE 'QU-' + '%' AND
				strOrdDocID LIKE '%' + @strDocNumber + '%'

		UNION 

		SELECT 
				tblOrderDoc.strCustName,
				strOrdDocID AS strDocumentNo,
				tblcustomers.strCustDesc,
				tblCustomers.strCity,
				tblCustomers.strPhone,
				tblcustomers.strField1,
				tblcustomers.strField2,
				tblcustomers.strField3,
				tblcustomers.strField4,
				tblcustomers.strField5,
				tblcustomers.strField6
		FROM 
				tblOrderDoc
				INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
		WHERE
				intDocType = 1 AND
				strOrdDocID LIKE 'CR-' + '%' AND
				strOrdDocID LIKE '%' + @strDocNumber + '%'

		UNION 

		SELECT 
			  tblInvoiceDoc.strCustName,
			  strInvDocID AS strDocumentNo,
			  tblcustomers.strCustDesc,
			  tblCustomers.strCity,
			  tblCustomers.strPhone,
			  tblcustomers.strField1,
			  tblcustomers.strField2,
			  tblcustomers.strField3,
			  tblcustomers.strField4,
			  tblcustomers.strField5,
			  tblcustomers.strField6
		FROM 
				tblInvoiceDoc
				INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
		WHERE
				strInvDocID LIKE 'CN-' + '%' AND
				strInvDocID LIKE '%' + @strDocNumber + '%'

	 ) AS Main
	ORDER BY strCustName
END
GO
/****** Object:  StoredProcedure [dbo].[prCustomers_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prCustomers_Search]
	(	 @strUserName nvarchar(20) = NULL,
		 @blnBPToolsMode bit = NULL,
		 @strCustName nvarchar(50) = NULL,
		 @strStreet1 nvarchar(100) = NULL,
		 @strStreet2 nvarchar(100) = NULL,
		 @strCity nvarchar(50) = NULL,
		 @strProvince nvarchar(50) = NULL,
		 @strPostal nvarchar(20) = NULL,
		 @strPhone nvarchar(50) = NULL,
		 @strCellPhone nvarchar(50) = NULL,
		 @strFax nvarchar(50) = NULL,
		 @strEmail nvarchar(250) = NULL,
		 @strVAT nvarchar(50) = NULL,
		 @strCK nvarchar(50) = NULL,
		 @decBalDue money = NULL,
		 @decYTDPurch money = NULL,
		 @decOpenOrders money = NULL,
		 @intDelMethod int = NULL,
		 @bitCreditCtrl bit = NULL,
		 @decCreditLimit money = NULL,
		 @bitCreditHold bit = NULL,
		 @bitInactive bit = NULL,
		 @dteUpdated smalldatetime = NULL,
		 @strContact nvarchar(100) = NULL,
		 @strField1 nvarchar(100) = NULL,
		 @strField2 nvarchar(100) = NULL,
		 @strField3 nvarchar(100) = NULL,
		 @strField4 nvarchar(100) = NULL,
		 @strField5 nvarchar(100) = NULL,
		 @strField6 nvarchar(100) = NULL,
		 @strTaxCode nvarchar(2) = NULL,
		 @dteSince datetime = NULL,
		 @strNotes nvarchar(max) = NULL,
		 @strPricelist nvarchar(20) = NULL,
		 @uID uniqueidentifier = NULL,
		 @decIntRate money = NULL,
		 @strCustDesc varchar(200) = NULL,
		 @strCountry nvarchar(50) = NULL,
		 @strTerm nvarchar(50) = NULL,
		 @intDept int = NULL,
		 @strCurrency nvarchar(3) = NULL,
		 @decBalDueF money = NULL,
		 @decYTDPurchF money = NULL,
		 @decOpenOrdersF money = NULL,
		 @strField7 nvarchar(100) = NULL,
		 @strField8 nvarchar(100) = NULL,
		 @strField9 nvarchar(100) = NULL,
		 @strField10 nvarchar(100) = NULL,
		 @strField11 nvarchar(100) = NULL,
		 @strField12 nvarchar(100) = NULL,
		 @strEmailInv nvarchar(250) = NULL,
		 @strEmailStat nvarchar(250) = NULL,
		 @strCustCategory nvarchar(20) = NULL,
		 @strCountryCode nvarchar(10) = NULL,
		 @strTenderType nvarchar(20) = NULL,
		 @decTradeDiscPerc money = NULL,
		 @decCreditLimitOverride money = NULL,
		 @dteCreditLimitExpiryDate datetime = NULL,
		 @intPartialBackorders int = NULL,
		 @bitWithholdTax bit = NULL,
		 @strWithholdTaxCode nvarchar(2) = NULL,
		 @strINVFormDocName nvarchar(50) = NULL,
		 @strORDFormDocName nvarchar(50) = NULL,
		 @bitMatrixType bit = NULL,
		 @strMatrixType nvarchar(20) = NULL,
		 @strParentCust nvarchar(50) = NULL,
		 @strValueBased nvarchar(20) = NULL,
		 @bitInvWorkflowNew bit = NULL,
		 @bitInvWorkflowDA bit = NULL,
		 @bitInvWorkflowSO bit = NULL,
		 @strWebsite nvarchar(200) = NULL,
		 @strRSTTerminalSync nvarchar(max) = NULL,
		 @strContact2 nvarchar(50) = NULL,
		 @strSuburb nvarchar(50) = NULL,
		 @strEmailOso nvarchar(250) = NULL,
		 @intNAPrintMethod int = NULL,
		 @strDelMethodCode nvarchar(50) = NULL
		)
	AS
	
		SET NOCOUNT ON

		IF @blnBPToolsMode = 1
		BEGIN 

			SELECT 
				[strCustName]
			   ,[strStreet1]
			   ,[strStreet2]
			   ,[strCity]
			   ,[strProvince]
			   ,[strPostal]
			   ,[strPhone]
			   ,[strCellPhone]
			   ,[strFax]
			   ,[strEmail]
			   ,[strVAT]
			   ,[strCK]
			   ,[decBalDue]
			   ,[decYTDPurch]
			   ,[decOpenOrders]
			   ,[intDelMethod]
			   ,[bitCreditCtrl]
			   ,[decCreditLimit]
			   ,[bitCreditHold]
			   ,[bitInactive]
			   ,[dteUpdated]
			   ,[strContact]
			   ,[strField1]
			   ,[strField2]
			   ,[strField3]
			   ,[strField4]
			   ,[strField5]
			   ,[strField6]
			   ,[strTaxCode]
			   ,[dteSince]
			   ,[strNotes]
			   ,[strPricelist]
			   ,[uID]
			   ,[decIntRate]
			   ,[strCustDesc]
			   ,[strCountry]
			   ,[strTerm]
			   ,[intDept]
			   ,[strCurrency]
			   ,[decBalDueF]
			   ,[decYTDPurchF]
			   ,[decOpenOrdersF]
			   ,[strField7]
			   ,[strField8]
			   ,[strField9]
			   ,[strField10]
			   ,[strField11]
			   ,[strField12]
			   ,[strEmailInv]
			   ,[strEmailStat]
			   ,[strCustCategory]
			   ,[strCountryCode]
			   ,[strTenderType]
			   ,[decTradeDiscPerc]
			   ,[decCreditLimitOverride]
			   ,[dteCreditLimitExpiryDate]
			   ,[intPartialBackorders]
			   ,[bitWithholdTax]
			   ,[strWithholdTaxCode]
			   ,[strINVFormDocName]
			   ,[strORDFormDocName]
			   ,[bitMatrixType]
			   ,[strMatrixType]
			   ,[strParentCust]
			   ,[strValueBased]
			   ,[bitInvWorkflowNew]
			   ,[bitInvWorkflowDA]
			   ,[bitInvWorkflowSO]
			   ,[strWebsite]
			   ,[strRSTTerminalSync]
			   ,[strContact2]
			   ,[strSuburb]
			   ,[strEmailOso]
			   ,[intNAPrintMethod]
			   ,[strDelMethodCode]
			FROM 
				[tblCustomers]
			WHERE
				((([strCustName] = @strCustName) OR (@strCustName Is Null)) AND 
				(([strStreet1] = @strStreet1) OR (@strStreet1 Is Null)) AND 
				(([strStreet2] = @strStreet2) OR (@strStreet2 Is Null)) AND 
				(([strCity] = @strCity) OR (@strCity Is Null)) AND 
				(([strProvince] = @strProvince) OR (@strProvince Is Null)) AND 
				(([strPostal] = @strPostal) OR (@strPostal Is Null)) AND 
				(([strPhone] = @strPhone) OR (@strPhone Is Null)) AND 
				(([strCellPhone] = @strCellPhone) OR (@strCellPhone Is Null)) AND 
				(([strFax] = @strFax) OR (@strFax Is Null)) AND 
				(([strEmail] = @strEmail) OR (@strEmail Is Null)) AND 
				(([strVAT] = @strVAT) OR (@strVAT Is Null)) AND 
				(([strCK] = @strCK) OR (@strCK Is Null)) AND 
				(([decBalDue] = @decBalDue) OR (@decBalDue Is Null)) AND 
				(([decYTDPurch] = @decYTDPurch) OR (@decYTDPurch Is Null)) AND 
				(([decOpenOrders] = @decOpenOrders) OR (@decOpenOrders Is Null)) AND 
				(([intDelMethod] = @intDelMethod) OR (@intDelMethod Is Null)) AND 
				(([bitCreditCtrl] = @bitCreditCtrl) OR (@bitCreditCtrl Is Null)) AND 
				(([decCreditLimit] = @decCreditLimit) OR (@decCreditLimit Is Null)) AND 
				(([bitCreditHold] = @bitCreditHold) OR (@bitCreditHold Is Null)) AND 
				(([bitInactive] = @bitInactive) OR (@bitInactive Is Null)) AND 
				(([dteUpdated] = @dteUpdated) OR (@dteUpdated Is Null)) AND  
				(([strContact] = @strContact) OR (@strContact Is Null)) AND 
				(([strField1] = @strField1) OR (@strField1 Is Null)) AND 
				(([strField2] = @strField2) OR (@strField2 Is Null)) AND 
				(([strField3] = @strField3) OR (@strField3 Is Null)) AND 
				(([strField4] = @strField4) OR (@strField4 Is Null)) AND 
				(([strField5] = @strField5) OR (@strField5 Is Null)) AND 
				(([strField6] = @strField6) OR (@strField6 Is Null)) AND 
				(([strTaxCode] = @strTaxCode) OR (@strTaxCode Is Null)) AND 
				(([dteSince] = @dteSince) OR (@dteSince Is Null)) AND 
				(([strNotes] = @strNotes) OR (@strNotes Is Null)) AND 
				(([strPricelist] = @strPricelist) OR (@strPricelist Is Null)) AND 
				(([uID] = @uID) OR (@uID Is Null)) AND 
				(([decIntRate] = @decIntRate) OR (@decIntRate Is Null)) AND 
				(([strCustDesc] = @strCustDesc) OR (@strCustDesc Is Null)) AND 
				(([strCountry] = @strCountry) OR (@strCountry Is Null)) AND 
				(([strTerm] = @strTerm) OR (@strTerm Is Null)) AND 
				(([intDept] = @intDept) OR (@intDept Is Null)) AND 
				(([strCurrency] = @strCurrency) OR (@strCurrency Is Null)) AND 
				(([decBalDueF] = @decBalDueF) OR (@decBalDueF Is Null)) AND 
				(([decYTDPurchF] = @decYTDPurchF) OR (@decYTDPurchF Is Null)) AND 
				(([decOpenOrdersF] = @decOpenOrdersF) OR (@decOpenOrdersF Is Null)) AND 
				(([strField7] = @strField7) OR (@strField7 Is Null)) AND 
				(([strField8] = @strField8) OR (@strField8 Is Null)) AND 
				(([strField9] = @strField9) OR (@strField9 Is Null)) AND 
				(([strField10] = @strField10) OR (@strField10 Is Null)) AND 
				(([strField11] = @strField11) OR (@strField11 Is Null)) AND 
				(([strField12] = @strField12) OR (@strField12 Is Null)) AND 
				(([strEmailInv] = @strEmailInv) OR (@strEmailInv Is Null)) AND 
				(([strEmailStat] = @strEmailStat) OR (@strEmailStat Is Null)) AND 
				(([strCustCategory] = @strCustCategory) OR (@strCustCategory Is Null)) AND 
				(([strCountryCode] = @strCountryCode) OR (@strCountryCode Is Null)) AND 
				(([strTenderType] = @strTenderType) OR (@strTenderType Is Null)) AND 
				(([decTradeDiscPerc] = @decTradeDiscPerc) OR (@decTradeDiscPerc Is Null)) AND 
				(([decCreditLimitOverride] = @decCreditLimitOverride) OR (@decCreditLimitOverride Is Null)) AND 
				(([dteCreditLimitExpiryDate] = @dteCreditLimitExpiryDate) OR (@dteCreditLimitExpiryDate Is Null)) AND 
				(([intPartialBackorders] = @intPartialBackorders) OR (@intPartialBackorders Is Null)) AND 
				(([bitWithholdTax] = @bitWithholdTax) OR (@bitWithholdTax Is Null)) AND 
				(([strWithholdTaxCode] = @strWithholdTaxCode) OR (@strWithholdTaxCode Is Null)) AND 
				(([strINVFormDocName] = @strINVFormDocName) OR (@strINVFormDocName Is Null)) AND 
				(([strORDFormDocName] = @strORDFormDocName) OR (@strORDFormDocName Is Null)) AND 
				(([bitMatrixType] = @bitMatrixType) OR (@bitMatrixType Is Null)) AND 
				(([strMatrixType] = @strMatrixType) OR (@strMatrixType Is Null)) AND 
				(([strParentCust] = @strParentCust) OR (@strParentCust Is Null)) AND 
				(([strValueBased] = @strValueBased) OR (@strValueBased Is Null)) AND 
				(([bitInvWorkflowNew] = @bitInvWorkflowNew) OR (@bitInvWorkflowNew Is Null)) AND 
				(([bitInvWorkflowDA] = @bitInvWorkflowDA) OR (@bitInvWorkflowDA Is Null)) AND 
				(([bitInvWorkflowSO] = @bitInvWorkflowSO) OR (@bitInvWorkflowSO Is Null)) AND 
				(([strWebsite] = @strWebsite) OR (@strWebsite Is Null)) AND 
				(([strRSTTerminalSync] = @strRSTTerminalSync) OR (@strRSTTerminalSync Is Null)) AND 
				(([strContact2] = @strContact2) OR (@strContact2 Is Null)) AND 
				(([strSuburb] = @strSuburb) OR (@strSuburb Is Null)) AND 
				(([strEmailOso] = @strEmailOso) OR (@strEmailOso Is Null)) AND 
				(([intNAPrintMethod] = @intNAPrintMethod) OR (@intNAPrintMethod Is Null)) AND 
				(([strDelMethodCode] = @strDelMethodCode) OR (@strDelMethodCode Is Null)))

		END
		ELSE
		BEGIN

			SELECT 
				[strCustName]
			   ,[strStreet1]
			   ,[strStreet2]
			   ,[strCity]
			   ,[strProvince]
			   ,[strPostal]
			   ,[strPhone]
			   ,[strCellPhone]
			   ,[strFax]
			   ,[strEmail]
			   ,[strVAT]
			   ,[strCK]
			   ,[decBalDue]
			   ,[decYTDPurch]
			   ,[decOpenOrders]
			   ,[intDelMethod]
			   ,[bitCreditCtrl]
			   ,[decCreditLimit]
			   ,[bitCreditHold]
			   ,[bitInactive]
			   ,[dteUpdated]
			   ,[strContact]
			   ,[strField1]
			   ,[strField2]
			   ,[strField3]
			   ,[strField4]
			   ,[strField5]
			   ,[strField6]
			   ,[strTaxCode]
			   ,[dteSince]
			   ,[strNotes]
			   ,[strPricelist]
			   ,[uID]
			   ,[decIntRate]
			   ,[strCustDesc]
			   ,[strCountry]
			   ,[strTerm]
			   ,[intDept]
			   ,[strCurrency]
			   ,[decBalDueF]
			   ,[decYTDPurchF]
			   ,[decOpenOrdersF]
			   ,[strField7]
			   ,[strField8]
			   ,[strField9]
			   ,[strField10]
			   ,[strField11]
			   ,[strField12]
			   ,[strEmailInv]
			   ,[strEmailStat]
			   ,[strCustCategory]
			   ,[strCountryCode]
			   ,[strTenderType]
			   ,[decTradeDiscPerc]
			   ,[decCreditLimitOverride]
			   ,[dteCreditLimitExpiryDate]
			   ,[intPartialBackorders]
			   ,[bitWithholdTax]
			   ,[strWithholdTaxCode]
			   ,[strINVFormDocName]
			   ,[strORDFormDocName]
			   ,[bitMatrixType]
			   ,[strMatrixType]
			   ,[strParentCust]
			   ,[strValueBased]
			   ,[bitInvWorkflowNew]
			   ,[bitInvWorkflowDA]
			   ,[bitInvWorkflowSO]
			   ,[strWebsite]
			   ,[strRSTTerminalSync]
			   ,[strContact2]
			   ,[strSuburb]
			   ,[strEmailOso]
			   ,[intNAPrintMethod]
			   ,[strDelMethodCode]
			FROM 
				[tblCustomers]
			WHERE
				((([strCustName] = @strCustName) OR (@strCustName Is Null)) AND 
				(([strStreet1] = @strStreet1) OR (@strStreet1 Is Null)) AND 
				(([strStreet2] = @strStreet2) OR (@strStreet2 Is Null)) AND 
				(([strCity] = @strCity) OR (@strCity Is Null)) AND 
				(([strProvince] = @strProvince) OR (@strProvince Is Null)) AND 
				(([strPostal] = @strPostal) OR (@strPostal Is Null)) AND 
				(([strPhone] = @strPhone) OR (@strPhone Is Null)) AND 
				(([strCellPhone] = @strCellPhone) OR (@strCellPhone Is Null)) AND 
				(([strFax] = @strFax) OR (@strFax Is Null)) AND 
				(([strEmail] = @strEmail) OR (@strEmail Is Null)) AND 
				(([strVAT] = @strVAT) OR (@strVAT Is Null)) AND 
				(([strCK] = @strCK) OR (@strCK Is Null)) AND 
				(([decBalDue] = @decBalDue) OR (@decBalDue Is Null)) AND 
				(([decYTDPurch] = @decYTDPurch) OR (@decYTDPurch Is Null)) AND 
				(([decOpenOrders] = @decOpenOrders) OR (@decOpenOrders Is Null)) AND 
				(([intDelMethod] = @intDelMethod) OR (@intDelMethod Is Null)) AND 
				(([bitCreditCtrl] = @bitCreditCtrl) OR (@bitCreditCtrl Is Null)) AND 
				(([decCreditLimit] = @decCreditLimit) OR (@decCreditLimit Is Null)) AND 
				(([bitCreditHold] = @bitCreditHold) OR (@bitCreditHold Is Null)) AND 
				(([bitInactive] = @bitInactive) OR (@bitInactive Is Null)) AND 
				(([dteUpdated] = @dteUpdated) OR (@dteUpdated Is Null)) AND  
				(([strContact] = @strContact) OR (@strContact Is Null)) AND 
				(([strField1] = @strField1) OR (@strField1 Is Null)) AND 
				(([strField2] = @strField2) OR (@strField2 Is Null)) AND 
				(([strField3] = @strField3) OR (@strField3 Is Null)) AND 
				(([strField4] = @strField4) OR (@strField4 Is Null)) AND 
				(([strField5] = @strField5) OR (@strField5 Is Null)) AND 
				(([strField6] = @strField6) OR (@strField6 Is Null)) AND 
				(([strTaxCode] = @strTaxCode) OR (@strTaxCode Is Null)) AND 
				(([dteSince] = @dteSince) OR (@dteSince Is Null)) AND 
				(([strNotes] = @strNotes) OR (@strNotes Is Null)) AND 
				(([strPricelist] = @strPricelist) OR (@strPricelist Is Null)) AND 
				(([uID] = @uID) OR (@uID Is Null)) AND 
				(([decIntRate] = @decIntRate) OR (@decIntRate Is Null)) AND 
				(([strCustDesc] = @strCustDesc) OR (@strCustDesc Is Null)) AND 
				(([strCountry] = @strCountry) OR (@strCountry Is Null)) AND 
				(([strTerm] = @strTerm) OR (@strTerm Is Null)) AND 
				(([intDept] = @intDept) OR (@intDept Is Null)) AND 
				(([strCurrency] = @strCurrency) OR (@strCurrency Is Null)) AND 
				(([decBalDueF] = @decBalDueF) OR (@decBalDueF Is Null)) AND 
				(([decYTDPurchF] = @decYTDPurchF) OR (@decYTDPurchF Is Null)) AND 
				(([decOpenOrdersF] = @decOpenOrdersF) OR (@decOpenOrdersF Is Null)) AND 
				(([strField7] = @strField7) OR (@strField7 Is Null)) AND 
				(([strField8] = @strField8) OR (@strField8 Is Null)) AND 
				(([strField9] = @strField9) OR (@strField9 Is Null)) AND 
				(([strField10] = @strField10) OR (@strField10 Is Null)) AND 
				(([strField11] = @strField11) OR (@strField11 Is Null)) AND 
				(([strField12] = @strField12) OR (@strField12 Is Null)) AND 
				(([strEmailInv] = @strEmailInv) OR (@strEmailInv Is Null)) AND 
				(([strEmailStat] = @strEmailStat) OR (@strEmailStat Is Null)) AND 
				(([strCustCategory] = @strCustCategory) OR (@strCustCategory Is Null)) AND 
				(([strCountryCode] = @strCountryCode) OR (@strCountryCode Is Null)) AND 
				(([strTenderType] = @strTenderType) OR (@strTenderType Is Null)) AND 
				(([decTradeDiscPerc] = @decTradeDiscPerc) OR (@decTradeDiscPerc Is Null)) AND 
				(([decCreditLimitOverride] = @decCreditLimitOverride) OR (@decCreditLimitOverride Is Null)) AND 
				(([dteCreditLimitExpiryDate] = @dteCreditLimitExpiryDate) OR (@dteCreditLimitExpiryDate Is Null)) AND 
				(([intPartialBackorders] = @intPartialBackorders) OR (@intPartialBackorders Is Null)) AND 
				(([bitWithholdTax] = @bitWithholdTax) OR (@bitWithholdTax Is Null)) AND 
				(([strWithholdTaxCode] = @strWithholdTaxCode) OR (@strWithholdTaxCode Is Null)) AND 
				(([strINVFormDocName] = @strINVFormDocName) OR (@strINVFormDocName Is Null)) AND 
				(([strORDFormDocName] = @strORDFormDocName) OR (@strORDFormDocName Is Null)) AND 
				(([bitMatrixType] = @bitMatrixType) OR (@bitMatrixType Is Null)) AND 
				(([strMatrixType] = @strMatrixType) OR (@strMatrixType Is Null)) AND 
				(([strParentCust] = @strParentCust) OR (@strParentCust Is Null)) AND 
				(([strValueBased] = @strValueBased) OR (@strValueBased Is Null)) AND 
				(([bitInvWorkflowNew] = @bitInvWorkflowNew) OR (@bitInvWorkflowNew Is Null)) AND 
				(([bitInvWorkflowDA] = @bitInvWorkflowDA) OR (@bitInvWorkflowDA Is Null)) AND 
				(([bitInvWorkflowSO] = @bitInvWorkflowSO) OR (@bitInvWorkflowSO Is Null)) AND 
				(([strWebsite] = @strWebsite) OR (@strWebsite Is Null)) AND 
				(([strRSTTerminalSync] = @strRSTTerminalSync) OR (@strRSTTerminalSync Is Null)) AND 
				(([strContact2] = @strContact2) OR (@strContact2 Is Null)) AND 
				(([strSuburb] = @strSuburb) OR (@strSuburb Is Null)) AND 
				(([strEmailOso] = @strEmailOso) OR (@strEmailOso Is Null)) AND 
				(([intNAPrintMethod] = @intNAPrintMethod) OR (@intNAPrintMethod Is Null)) AND 
				(([strDelMethodCode] = @strDelMethodCode) OR (@strDelMethodCode Is Null)))
			AND (strCustCategory IN (SELECT tblCustomerCat.strCustCategory 
									 FROM tblCustomerCat 
									 LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory 
									 WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) 
												   FROM tblCustomerCatSec 
												   WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 
											OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) 
														FROM tblCustomerCatSec 
														WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 
												AND tblCustomerCatSec.strUserName = @strUserName)))

		END
GO
/****** Object:  StoredProcedure [dbo].[prDepreciationHistory_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDepreciationHistory_Delete]
(
    @lngID bigint
)
AS
    SET NOCOUNT ON

    DELETE FROM [tblDepreciationHistory] WHERE [lngID] = @lngID
GO
/****** Object:  StoredProcedure [dbo].[prDepreciationHistory_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDepreciationHistory_Save]
(
    @lngID bigint = Null,
    @strAssetCode nvarchar(20) = Null,
    @dteDepreciationDate datetime = Null,
    @decOtherValue1 money = Null,
    @decOtherValue2 money = Null,
    @decOtherValue3 money = Null,
    @decOtherValue4 money = Null,
    @decOtherValue5 money = Null
)
AS
    SET NOCOUNT ON

    IF (@lngID IS NULL)
    BEGIN
        INSERT INTO [tblDepreciationHistory]
        (
            [strAssetCode],
            [dteDepreciationDate],
            [decOtherValue1],
            [decOtherValue2],
            [decOtherValue3],
            [decOtherValue4],
            [decOtherValue5]
        )
        VALUES
        (
            @strAssetCode,
            @dteDepreciationDate,
            @decOtherValue1,
            @decOtherValue2,
            @decOtherValue3,
            @decOtherValue4,
            @decOtherValue5
        )
    
        SELECT @lngID = SCOPE_IDENTITY()
        SELECT @lngID
    END
    ELSE
    BEGIN
        UPDATE [tblDepreciationHistory] SET 
            [strAssetCode] = ISNULL(@strAssetCode, [strAssetCode]),
            [dteDepreciationDate] = ISNULL(@dteDepreciationDate, [dteDepreciationDate]),
            [decOtherValue1] = ISNULL(@decOtherValue1, [decOtherValue1]),
            [decOtherValue2] = ISNULL(@decOtherValue2, [decOtherValue2]),
            [decOtherValue3] = ISNULL(@decOtherValue3, [decOtherValue3]),
            [decOtherValue4] = ISNULL(@decOtherValue4, [decOtherValue4]),
            [decOtherValue5] = ISNULL(@decOtherValue5, [decOtherValue5])
        WHERE
            [lngID] = @lngID

        SELECT @lngID
    END

    RETURN @lngID
GO
/****** Object:  StoredProcedure [dbo].[prDepreciationHistory_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDepreciationHistory_Search]
(
    @lngID bigint = Null,
    @strAssetCode nvarchar(20) = Null,
    @dteDepreciationDate datetime = Null,
    @decOtherValue1 money = Null,
    @decOtherValue2 money = Null,
    @decOtherValue3 money = Null,
    @decOtherValue4 money = Null,
    @decOtherValue5 money = Null
)
AS
    SET NOCOUNT ON

    SELECT 
        [lngID],
        [strAssetCode],
        [dteDepreciationDate],
        [decOtherValue1],
        [decOtherValue2],
        [decOtherValue3],
        [decOtherValue4],
        [decOtherValue5]
    FROM 
        [tblDepreciationHistory]
    WHERE
        (([lngID] = @lngID) OR (@lngID Is Null)) AND 
        (([strAssetCode] = @strAssetCode) OR (@strAssetCode Is Null)) AND 
        (([dteDepreciationDate] = @dteDepreciationDate) OR (@dteDepreciationDate Is Null)) AND 
        (([decOtherValue1] = @decOtherValue1) OR (@decOtherValue1 Is Null)) AND 
        (([decOtherValue2] = @decOtherValue2) OR (@decOtherValue2 Is Null)) AND 
        (([decOtherValue3] = @decOtherValue3) OR (@decOtherValue3 Is Null)) AND 
        (([decOtherValue4] = @decOtherValue4) OR (@decOtherValue4 Is Null)) AND 
        (([decOtherValue5] = @decOtherValue5) OR (@decOtherValue5 Is Null))
GO
/****** Object:  StoredProcedure [dbo].[prDepreciationHistory_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDepreciationHistory_SelectAll]
AS
    SET NOCOUNT ON

    SELECT 
        [lngID],
        [strAssetCode],
        [dteDepreciationDate],
        [decOtherValue1],
        [decOtherValue2],
        [decOtherValue3],
        [decOtherValue4],
        [decOtherValue5]
    FROM 
        [tblDepreciationHistory]
GO
/****** Object:  StoredProcedure [dbo].[prDepreciationMethods_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDepreciationMethods_Delete]
(
    @strCode nvarchar(20)
)
AS
    SET NOCOUNT ON

    DELETE FROM [tblDepreciationMethods] WHERE [strCode] = @strCode
GO
/****** Object:  StoredProcedure [dbo].[prDepreciationMethods_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDepreciationMethods_Save]
(
    @strCode nvarchar(20) = Null,
    @strDescription nvarchar(100) = Null,
    @intCalculationMethod int = Null,
    @decPercentage money = Null,
    @intYears decimal(18, 4) = Null,
    @decIniPercentage money = Null,
    @bitInactive bit = Null
)
AS
    SET NOCOUNT ON

    IF ((SELECT COUNT(*) FROM tblDepreciationMethods WHERE strCode = @strCode) = 0)
    BEGIN
        INSERT INTO [tblDepreciationMethods]
        (
            [strCode],
            [strDescription],
            [intCalculationMethod],
            [decPercentage],
            [intYears],
            [decIniPercentage],
            [bitInactive]
        )
        VALUES
        (
            @strCode,
            @strDescription,
            @intCalculationMethod,
            @decPercentage,
            @intYears,
            @decIniPercentage,
            @bitInactive
        )
    
        SELECT @strCode
    END
    ELSE
    BEGIN
        UPDATE [tblDepreciationMethods] SET 
            [strDescription] = ISNULL(@strDescription, [strDescription]),
            [intCalculationMethod] = ISNULL(@intCalculationMethod, [intCalculationMethod]),
            [decPercentage] = ISNULL(@decPercentage, [decPercentage]),
            [intYears] = ISNULL(@intYears, [intYears]),
            [decIniPercentage] = ISNULL(@decIniPercentage, [decIniPercentage]),
            [bitInactive] = ISNULL(@bitInactive, [bitInactive])
        WHERE
            [strCode] = @strCode

        SELECT @strCode
    END

    RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prDepreciationMethods_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDepreciationMethods_Search]
(
    @strCode nvarchar(20) = Null,
    @strDescription nvarchar(100) = Null,
    @intCalculationMethod int = Null,
    @decPercentage money = Null,
    @intYears decimal(18, 4) = Null,
    @decIniPercentage money = Null,
    @bitInactive bit = Null
)
AS
    SET NOCOUNT ON

    SELECT 
        [strCode],
        [strDescription],
        [intCalculationMethod],
        [decPercentage],
        [intYears],
        [decIniPercentage],
        [bitInactive]
    FROM 
        [tblDepreciationMethods]
    WHERE
        (([strCode] = @strCode) OR (@strCode Is Null)) AND 
        (([strDescription] = @strDescription) OR (@strDescription Is Null)) AND 
        (([intCalculationMethod] = @intCalculationMethod) OR (@intCalculationMethod Is Null)) AND 
        (([decPercentage] = @decPercentage) OR (@decPercentage Is Null)) AND 
        (([intYears] = @intYears) OR (@intYears Is Null)) AND 
        (([decIniPercentage] = @decIniPercentage) OR (@decIniPercentage Is Null)) AND 
        (([bitInactive] = @bitInactive) OR (@bitInactive Is Null))
GO
/****** Object:  StoredProcedure [dbo].[prDepreciationMethods_SearchParamWise]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDepreciationMethods_SearchParamWise]
		@bitIncludeInactive bit,
		@strSearch nvarchar(100)
		AS
			SET NOCOUNT ON

			IF @bitIncludeInactive = 0
				BEGIN
					SELECT 
						[strCode],
						[strDescription],
						[intCalculationMethod],
						[decPercentage],
						[intYears],
						[decIniPercentage],
						[bitInactive]
					FROM 
						[tblDepreciationMethods]
					WHERE
						([strCode] LIKE '%'+@strSearch+'%' OR [strDescription] LIKE '%'+@strSearch+'%'  ) AND bitInactive = 0
				END
			ELSE IF @bitIncludeInactive = 1
				BEGIN
					SELECT 
						[strCode],
						[strDescription],
						[intCalculationMethod],
						[decPercentage],
						[intYears],
						[decIniPercentage],
						[bitInactive]
					FROM 
						[tblDepreciationMethods]
					WHERE
						([strCode] LIKE '%'+@strSearch+'%' OR [strDescription] LIKE '%'+@strSearch+'%'  ) 
		END
GO
/****** Object:  StoredProcedure [dbo].[prDepreciationMethods_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDepreciationMethods_Select]
(
    @strCode nvarchar(20)
)
AS
    SET NOCOUNT ON

    SELECT 
        [strCode],
        [strDescription],
        [intCalculationMethod],
        [decPercentage],
        [intYears],
        [decIniPercentage],
        [bitInactive]
    FROM 
        [tblDepreciationMethods]
    WHERE 
        [strCode] = @strCode
GO
/****** Object:  StoredProcedure [dbo].[prDepreciationMethods_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDepreciationMethods_SelectAll]
AS
    SET NOCOUNT ON

    SELECT 
        [strCode],
        [strDescription],
        [intCalculationMethod],
        [decPercentage],
        [intYears],
        [decIniPercentage],
        [bitInactive]
    FROM 
        [tblDepreciationMethods]
GO
/****** Object:  StoredProcedure [dbo].[prDepreciationMethodYears_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDepreciationMethodYears_Delete]
(
    @strCode nvarchar(20),
	@intYearNumber int = NULL 
)
AS
SET NOCOUNT ON

   DELETE FROM [tblDepreciationMethodYears] 
    WHERE [strCode] = @strCode 
    AND ([intYearNumber] = @intYearNumber OR @intYearNumber IS NULL)

GO

/****** Object:  StoredProcedure [dbo].[prDepreciationMethodYears_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDepreciationMethodYears_Save]
(
    @strCode nvarchar(20) = Null,
    @intYearNumber int = Null,
    @decPercentage decimal = Null
)
AS
    SET NOCOUNT ON

    IF ((SELECT COUNT(*) FROM tblDepreciationMethodYears WHERE intYearNumber = @intYearNumber AND strCode = @strCode) = 0)
    BEGIN
        INSERT INTO [tblDepreciationMethodYears]
        (
            [strCode],
            [intYearNumber],
            [decPercentage]
        )
        VALUES
        (
            @strCode,
            @intYearNumber,
            @decPercentage
        )
    
        SELECT @intYearNumber
    END
    ELSE
    BEGIN
        UPDATE [tblDepreciationMethodYears] SET 
            [decPercentage] = ISNULL(@decPercentage, [decPercentage])
        WHERE
            [strCode] = @strCode AND 
            [intYearNumber] = @intYearNumber

        SELECT @intYearNumber
    END

    RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prDepreciationMethodYears_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDepreciationMethodYears_Search]
(
    @strCode nvarchar(20) = Null,
    @intYearNumber int = Null,
    @decPercentage decimal = Null
)
AS
    SET NOCOUNT ON

    SELECT 
        [strCode] as Code,
        [intYearNumber] as YearNumber, 
        [decPercentage] as Percentage 
    FROM 
        [tblDepreciationMethodYears]
    WHERE
        (([strCode] = @strCode) OR (@strCode Is Null)) AND 
        (([intYearNumber] = @intYearNumber) OR (@intYearNumber Is Null)) AND 
        (([decPercentage] = @decPercentage) OR (@decPercentage Is Null))
GO
/****** Object:  StoredProcedure [dbo].[prDisposalMethods_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDisposalMethods_Delete]
(
    @strCode nvarchar(20)
)
AS
    SET NOCOUNT ON

    DELETE FROM [tblDisposalMethods] WHERE [strCode] = @strCode
GO
/****** Object:  StoredProcedure [dbo].[prDisposalMethods_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDisposalMethods_Save]
(
    @lngID bigint = Null,
    @strCode nvarchar(20) = Null,
    @strDescription nvarchar(100) = Null,
    @bitInactive bit = Null
)
AS
    SET NOCOUNT ON

    IF ((SELECT COUNT(*) FROM tblDisposalMethods WHERE strCode = @strCode) = 0)
    BEGIN
        INSERT INTO [tblDisposalMethods]
        (
            [strCode],
            [strDescription],
            [bitInactive]
        )
        VALUES
        (
            @strCode,
            @strDescription,
            @bitInactive
        )
    
        SELECT @strCode
    END
    ELSE
    BEGIN
        UPDATE [tblDisposalMethods] SET 
            [strDescription] = ISNULL(@strDescription, [strDescription]),
            [bitInactive] = ISNULL(@bitInactive, [bitInactive])
        WHERE
            [strCode] = @strCode

        SELECT @strCode
    END

    RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prDisposalMethods_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDisposalMethods_Search]
(
    @lngID bigint = Null,
    @strCode nvarchar(20) = Null,
    @strDescription nvarchar(100) = Null,
    @bitInactive bit = Null
)
AS
    SET NOCOUNT ON

    SELECT 
        [lngID],
        [strCode],
        [strDescription],
        [bitInactive]
    FROM 
        [tblDisposalMethods]
    WHERE
        (([lngID] = @lngID) OR (@lngID Is Null)) AND 
        (([strCode] = @strCode) OR (@strCode Is Null)) AND 
        (([strDescription] = @strDescription) OR (@strDescription Is Null)) AND 
        (([bitInactive] = @bitInactive) OR (@bitInactive Is Null))
GO
/****** Object:  StoredProcedure [dbo].[prDisposalMethods_SearchParamWise]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDisposalMethods_SearchParamWise]
		@bitIncludeInactive bit,
		@strSearch nvarchar(100)
		AS
			SET NOCOUNT ON
			IF @bitIncludeInactive = 0
				BEGIN
					SELECT 
						[lngID],
						[strCode],
						[strDescription],
						[bitInactive]
					FROM 
						[tblDisposalMethods]
					WHERE
						([strCode] LIKE '%'+@strSearch+'%' OR [strDescription] LIKE '%'+@strSearch+'%'  ) AND bitInactive = 0
				END
			ELSE IF @bitIncludeInactive = 1
				BEGIN
					SELECT 
						[lngID],
						[strCode],
						[strDescription],
						[bitInactive]
					FROM 
						[tblDisposalMethods]
					WHERE
						([strCode] LIKE '%'+@strSearch+'%' OR [strDescription] LIKE '%'+@strSearch+'%' ) 
				END
GO
/****** Object:  StoredProcedure [dbo].[prDisposalMethods_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDisposalMethods_Select]
(
    @strCode nvarchar(20)
)
AS
    SET NOCOUNT ON

    SELECT 
        [lngID],
        [strCode],
        [strDescription],
        [bitInactive]
    FROM 
        [tblDisposalMethods]
    WHERE 
        [strCode] = @strCode
GO
/****** Object:  StoredProcedure [dbo].[prDisposalMethods_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDisposalMethods_SelectAll]
AS
    SET NOCOUNT ON

    SELECT 
        [lngID],
        [strCode],
        [strDescription],
        [bitInactive]
    FROM 
        [tblDisposalMethods]
GO
/****** Object:  StoredProcedure [dbo].[prDocuments_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDocuments_Delete]
(
    @lngDocumentID bigint
)
AS
    SET NOCOUNT ON

    DELETE FROM [tblDocuments] WHERE [lngDocumentID] = @lngDocumentID
GO
/****** Object:  StoredProcedure [dbo].[prDocuments_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDocuments_Save]
(
    @lngDocumentID bigint = Null,
    @strDocumentNumber varchar(50) = Null,
    @strFileName nvarchar(200) = Null,
    @strDescription nvarchar(200) = Null,
    @strExtension varchar(10) = Null,
    @varFile varbinary(MAX) = Null,
    @dteModified datetime = Null,
    @strType nvarchar(100) = Null,
    @intSize bigint = Null,
    @strUserName nvarchar(20) = Null,
    @bitEnc bit = Null,
    @intAttachOn int = Null,
	@bitItemLine bit = Null,
    @intLineNo int = Null,
	@bitPosted bit = NULL,
	@IsSignature bit = 0,
	@SignatureName varchar(100) = Null

)
AS
    SET NOCOUNT ON

    IF (@lngDocumentID IS NULL)
    BEGIN
        INSERT INTO [tblDocuments]
        (
            [strDocumentNumber],
            [strFileName],
            [strDescription],
            [strExtension],
            [varFile],
            [dteModified],
            [strType],
            [intSize],
            [strUserName],
            [bitEnc],
            [intAttachOn],
			[bitItemLine],
			[intLineNo],
			[bitPosted],
			[bitIsSignature],
			[strSignatureName]
        )
        VALUES
        (
            @strDocumentNumber,
            @strFileName,
            @strDescription,
            @strExtension,
            @varFile,
            @dteModified,
            @strType,
            @intSize,
            @strUserName,
            @bitEnc,
            @intAttachOn,
			@bitItemLine,
			@intLineNo,
			@bitPosted,
			@IsSignature,
			@SignatureName
        )
    
        SELECT @lngDocumentID = SCOPE_IDENTITY()
        SELECT @lngDocumentID
    END
    ELSE
    BEGIN
        UPDATE [tblDocuments] SET 
            [strDocumentNumber] = ISNULL(@strDocumentNumber, [strDocumentNumber]),
            [strFileName] = ISNULL(@strFileName, [strFileName]),
            [strDescription] = ISNULL(@strDescription, [strDescription]),
            [strExtension] = ISNULL(@strExtension, [strExtension]),
            [varFile] = ISNULL(@varFile, [varFile]),
            [dteModified] = ISNULL(@dteModified, [dteModified]),
            [strType] = ISNULL(@strType, [strType]),
            [intSize] = ISNULL(@intSize, [intSize]),
            [strUserName] = ISNULL(@strUserName, [strUserName]),
            [bitEnc] = ISNULL(@bitEnc, [bitEnc]),
            [intAttachOn] = ISNULL(@intAttachOn, [intAttachOn]),
			[bitItemLine] = ISNULL(@bitItemLine, [bitItemLine]),
            [intLineNo] = ISNULL(@intLineNo, [intLineNo]),
			[bitPosted] = ISNULL(@bitPosted,[bitPosted])
        WHERE
            [lngDocumentID] = @lngDocumentID

        SELECT @lngDocumentID
    END

    RETURN @lngDocumentID
GO
/****** Object:  StoredProcedure [dbo].[prDocuments_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDocuments_Search]
(
    @lngDocumentID bigint = Null,
    @strDocumentNumber varchar(50) = Null,
    @strFileName nvarchar(400) = Null,
    @strDescription nvarchar(400) = Null,
    @strExtension varchar(10) = Null,
    @varFile varbinary(MAX) = Null,
    @dteModified datetime = Null,
    @strType nvarchar(200) = Null,
    @intSize bigint = Null,
    @strUserName nvarchar(40) = Null,
    @bitEnc bit = Null,
    @intAttachOn int = Null,
	@intLineNo int = NULL,  
	@bitItemLine bit = NULL,  
	@bitPosted bit = NULL 
)
AS
BEGIN
    SET NOCOUNT ON
    IF  ISNULL(@lngDocumentID,0) = 0 AND  ISNULL(@strFileName,'Null') = 'Null' AND ISNULL(@strDescription,'Null') = 'Null' AND 
        ISNULL(@strExtension, 'Null') ='Null' AND  ISNULL(@varFile,-1) = -1  AND  cast( ISNULL(@dteModified,'1990-01-01') as date) = cast('1990-01-01' as date) AND
		ISNULL(@strType,'Null') = 'Null' AND ISNULL(@intSize,-15478) =-15478  AND ISNULL(@strUserName,'Null') = 'Null' AND
        ISNULL(@bitEnc,1) =1 AND ISNULL(@bitEnc,0) = 0  AND ISNULL(@intAttachOn,-15478) = -15478 AND ISNULL(@intLineNo,0) = 0  AND ISNULL(@bitItemLine,0) = 0  AND ISNULL(@bitPosted,0) = 0  AND
		ISNULL(@strDocumentNumber,'Null') <> 'Null'
            
        BEGIN
			SELECT 
                 [lngDocumentID] as DocumentID,
                 [strDocumentNumber] as DocumentNumber,
                 [strFileName] as [FileName],
                 [strDescription] as [Description],
                 [strExtension] as Extension,
                 [varFile] as [File], 
                 [dteModified] as Modified,
                 [strType] as [Type],
                 [intSize] as Size,
                 [strUserName] as UserName,
                 [bitEnc] as IsEnc,
                 [intAttachOn] as AttachOn,
				 [bitItemLine] as ItemLine,  
				 [intLineNo] as [LineNo],  
				 [bitPosted] as IsPosted
                 FROM 
                 [tblDocuments]
                 WHERE strDocumentNumber = @strDocumentNumber
            
			RETURN
		END 

	ELSE
        BEGIN
            

			SELECT 
                 [lngDocumentID] as DocumentID,
                 [strDocumentNumber] as DocumentNumber,
                 [strFileName] as [FileName],
                 [strDescription] as [Description],
                 [strExtension] as Extension,
                 [varFile] as [File], 
                 [dteModified] as Modified,
                 [strType] as [Type],
                 [intSize] as Size,
                 [strUserName] as UserName,
                 [bitEnc] as IsEnc,
                 [intAttachOn] as AttachOn,
				 [bitItemLine] as ItemLine,  
				 [intLineNo] as [LineNo],  
				 [bitPosted] as IsPosted
                 FROM 
                 [tblDocuments]
                 WHERE
				(([lngDocumentID] = @lngDocumentID) OR (@lngDocumentID Is Null)) AND 
				(([strDocumentNumber] = @strDocumentNumber) OR (@strDocumentNumber Is Null)) AND 
				(([strFileName] = @strFileName) OR (@strFileName Is Null)) AND 
				(([strDescription] = @strDescription) OR (@strDescription Is Null)) AND 
				(([strExtension] = @strExtension) OR (@strExtension Is Null)) AND 
				--(([varFile] = @varFile) OR (@varFile Is Null)) AND 
				(([dteModified] = @dteModified) OR (@dteModified Is Null)) AND 
				(([strType] = @strType) OR (@strType Is Null)) AND 
				--(([intSize] = @intSize) OR (@intSize Is Null)) AND 
				--(([strUserName] = @strUserName) OR (@strUserName Is Null)) AND 
				--(([bitEnc] = @bitEnc) OR (@bitEnc Is Null)) AND 
				--(([intAttachOn] = @intAttachOn) OR (@intAttachOn Is Null)) AND
				(([intLineNo] = @intLineNo) OR (@intLineNo Is Null)) AND  
				(([bitItemLine] IN (0,ISNULL(@bitItemLine,0)))) AND  
				(([bitPosted] IN (0,ISNULL(@bitPosted,1)))) 
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prDocuments_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDocuments_Select]
(
    @lngDocumentID bigint
)
AS
    SET NOCOUNT ON

    SELECT 
        [lngDocumentID],
        [strDocumentNumber],
        [strFileName],
        [strDescription],
        [strExtension],
        [varFile],
        [dteModified],
        [strType],
        [intSize],
        [strUserName],
        [bitEnc],
        [intAttachOn]
    FROM 
        [tblDocuments]
    WHERE 
        [lngDocumentID] = @lngDocumentID
GO
/****** Object:  StoredProcedure [dbo].[prDocuments_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prDocuments_SelectAll]
AS
    SET NOCOUNT ON

    SELECT 
        [lngDocumentID],
        [strDocumentNumber],
        [strFileName],
        [strDescription],
        [strExtension],
        [varFile],
        [dteModified],
        [strType],
        [intSize],
        [strUserName],
        [bitEnc],
        [intAttachOn]
    FROM 
        [tblDocuments]
GO
/****** Object:  StoredProcedure [dbo].[prEmpMaterialIssueProfile_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prEmpMaterialIssueProfile_Delete]    
	(    
	 @lngID bigint    
	)     
	AS    
	BEGIN    
	 SET NOCOUNT ON;    
    
	 DELETE FROM [tblEmpMaterialIssueProfile] WHERE [lngID] = @lngID    
	END
GO
/****** Object:  StoredProcedure [dbo].[prEmpMaterialIssueProfile_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prEmpMaterialIssueProfile_List]          
	@SQstrSearchText nvarchar(50) = NULL,          
	@SQbitInactive bit = NULL          
	AS          
	BEGIN          
	 SET NOCOUNT ON;          
	 SELECT           
	  *        
	 FROM [dbo].[tblEmpMaterialIssueProfile]          
	 WHERE (strName Like '%' + @SQstrSearchText + '%' Or @SQstrSearchText IS NULL)          
		  AND (bitInactive IN (0,@SQbitInactive) OR @SQbitInactive IS NULL)          
	END 
GO
/****** Object:  StoredProcedure [dbo].[prEmpMaterialProfile_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prEmpMaterialProfile_Save]      
	@SQlngId bigint,      
	@SQstrName nvarchar(50),      
	@SQstrDescription nvarchar(200),      
	@SQbitInactive bit      
      
	AS      
	BEGIN      
	 IF ((SELECT COUNT(*) FROM tblEmpMaterialIssueProfile WHERE lngId = @SQlngId) = 0)        
		BEGIN      
	  INSERT INTO tblEmpMaterialIssueProfile      
	  (strName,strDescription,bitInactive)      
	  VALUES (@SQstrName,@SQstrDescription,@SQbitInactive)      
	 Select @SQlngId = @@IDENTITY        
	 END      
	 ELSE      
	 BEGIN      
	  UPDATE tblEmpMaterialIssueProfile SET      
	  strName = @SQstrName,      
	  strDescription = @SQstrDescription,      
	  bitInactive = @SQbitInactive      
	  WHERE lngId = @SQlngId     
	  DELETE FROM tblEmpMaterialIssueProfileDT WHERE lngProfileId = @SQlngId  
	 END      
	 SELECT @SQlngId        
	END 
GO
/****** Object:  StoredProcedure [dbo].[prEmpMaterialProfile_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prEmpMaterialProfile_Select]    
	(    
	@SQlngProfileId bigint    
	)    
	AS    
	BEGIN    
		SET NOCOUNT ON    
    
		SELECT lngId,strName,strDescription,bitInactive FROM tblEmpMaterialIssueProfile WHERE lngId = @SQlngProfileId    
    
		SELECT lngId,lngProfileId,tblEmpMaterialIssueProfileDT.strPartNumber,tblInv.strDesc,tblInv.strCategory,strUnitOfMeasure As strUnit,  
		intBudgetFrequency,decBudgetQty FROM tblEmpMaterialIssueProfileDT  
		INNER JOIN tblInv ON tblInv.strPartNumber = tblEmpMaterialIssueProfileDT.strPartNumber  
		WHERE lngProfileId = @SQlngProfileId ORDER BY lngId DESC
	END  
GO
/****** Object:  StoredProcedure [dbo].[prEmpMaterialProfileDT_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prEmpMaterialProfileDT_Delete]    
 (    
  @SQlngId bigint    
 )    
 AS    
 BEGIN    
  SET NOCOUNT ON    
    
  DELETE FROM [tblEmpMaterialIssueProfileDT] WHERE [lngId] = @SQlngId    
 END 
GO
/****** Object:  StoredProcedure [dbo].[PrepareBinForAdjustStockPick]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvLocBinId] ***********/

/*********** Start [PrepareBinForAdjustStockPick] ***********/
CREATE PROCEDURE [dbo].[PrepareBinForAdjustStockPick] (
	@PkTkDocID NVARCHAR(50)
	,@LineNo INT
	,@Location NVARCHAR(10)
	)
AS
BEGIN
	DECLARE @IsBin AS BIT
	DECLARE @NumberofRows AS INT
	DECLARE @DetailsTable TABLE (
		[lngID] BIGINT
		,[strLocName] NVARCHAR(10)
		,[strBinCode] NVARCHAR(100)
		,[strDescription] NVARCHAR(200)
		,[decCapacity] MONEY
		,[strCapacityUnit] NVARCHAR(50)
		)

	BEGIN
		INSERT INTO @DetailsTable (
			[lngID]
			,[strLocName]
			,[strBinCode]
			,[strDescription]
			,[decCapacity]
			,[strCapacityUnit]
			)
		SELECT [lngID]
			,[strLocName]
			,[strBinCode]
			,[strDescription]
			,[decCapacity]
			,[strCapacityUnit]
		FROM tblInvLocBin
		WHERE bitPickingBin = 1
			AND bitInactive = 0
			AND strLocName = @Location
	END

	SET @NumberofRows = (
			SELECT count(*)
			FROM @DetailsTable
			WHERE strLocName = @Location
			)

	IF @NumberofRows = 0
	BEGIN
		SELECT lngBinId AS 'BinIdLong'
			,SUM(tblPickTicketsDTBin.decQty) AS 'Quantity'
			,strBinCode AS 'Bin'
		FROM tblPickTicketsDT
		INNER JOIN tblPickTicketsDTBin ON tblPickTicketsDT.strPkTkDocID = tblPickTicketsDTBin.strPkTkDocID
			AND tblPickTicketsDT.intLineNo = tblPickTicketsDTBin.intLineNo
		INNER JOIN tblInvLocBin ON tblInvLocBin.lngId = tblPickTicketsDTBin.lngBinId
		WHERE (
				tblPickTicketsDT.strPkTkDocID IN (
					SELECT Value
					FROM dbo.fnSplitStringAsTable(@PkTkDocID, ',')
					)
				)
			AND tblPickTicketsDT.intLineNo = @LineNo
		--ORDER BY tblPickTicketsDTBin.lngID	
		GROUP BY lngBinId
			,strBinCode
	END
	ELSE
	BEGIN
		SET @IsBin = 1

		SELECT lngBinId AS 'BinIdLong'
			,SUM(tblPickTicketsDTBin.decQty) AS 'Quantity'
			,strBinCode AS 'Bin'
			,@IsBin AS IsBinPicking
		FROM tblPickTicketsDT
		INNER JOIN tblPickTicketsDTBin ON tblPickTicketsDT.strPkTkDocID = tblPickTicketsDTBin.strPkTkDocID
			AND tblPickTicketsDT.intLineNo = tblPickTicketsDTBin.intLineNo
		INNER JOIN tblInvLocBin ON tblInvLocBin.lngId = tblPickTicketsDTBin.lngBinId
		WHERE (
				tblPickTicketsDT.strPkTkDocID IN (
					SELECT Value
					FROM dbo.fnSplitStringAsTable(@PkTkDocID, ',')
					)
				)
			AND tblPickTicketsDT.intLineNo = @LineNo
			AND tblPickTicketsDTBin.bitPickingBin = 1
		--ORDER BY tblPickTicketsDTBin.lngID			
		GROUP BY lngBinId
			,strBinCode
	END
END
GO

/****** Object:  StoredProcedure [dbo].[prGetAccountsHistCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetAccountsHistCount]
(
	@intGLNumber nvarchar(30) = null,
	@uidYearID uniqueidentifier = null
)

AS
BEGIN
	
	SET NOCOUNT ON;

    SELECT 
		COUNT(intGLNumber) 
	FROM 
		tblAccountsHist 
	WHERE 
		uidYearID = @uidYearID AND intGLNumber = @intGLNumber

END
GO
/****** Object:  StoredProcedure [dbo].[prGetAccountsLYCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetAccountsLYCount]
(
	@intGLNumber nvarchar(30) = null
)
AS
BEGIN
	
	SET NOCOUNT ON;

    SELECT 
		COUNT(intGLNumber) 
	FROM 
		tblAccountsLY 
	WHERE 
		intGLNumber = @intGLNumber

END
GO
/****** Object:  StoredProcedure [dbo].[prGetActiveProjectsDataMain]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetActiveProjectsDataMain]
	
AS
BEGIN
	SET NOCOUNT ON;

	SELECT tblProjects.strProjNumber AS ProjNo, tblProjects.strProjName AS ProjName	FROM tblProjects WHERE tblProjects.intStatus IN (0,1,2,3,4,5)
END
GO
/****** Object:  StoredProcedure [dbo].[prGetActiveProjectsDataSub]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetActiveProjectsDataSub]
	@SQProjNum AS nvarchar(50) = NULL,
	@SQPayType AS INT = NULL,
	@SQRecType AS INT = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT Z.SeqNo
						,Z.strPartNumber
						,Z.strPartDesc
						,ISNULL(SUM(Z.decQty), 0)
						,ISNULL(SUM(Z.decLineTotExc), 0)
					FROM (
						SELECT 1 AS SeqNo
							,tblOrderDocDT.strPartNumber
							,tblOrderDocDT.strPartDesc
							,ISNULL(SUM(tblOrderDocDT.decQty), 0) AS decQty
							,ISNULL(SUM(tblOrderDocDT.decLineTotExc), 0) AS decLineTotExc
						FROM tblOrderDoc
						INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
						INNER JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
							AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
						WHERE (tblOrderDocDTPrj.strProjNumber = @SQProjNum)
							AND (tblOrderDoc.intDocType = 2)
						GROUP BY strPartNumber
							,strPartDesc
	
						UNION ALL
	
						SELECT 1 AS SeqNo
							,tblOrderDocQDT.strPartNumber
							,tblOrderDocQDT.strPartDesc
							,ISNULL(SUM(tblOrderDocQDT.decQty), 0) AS decQty
							,ISNULL(SUM(tblOrderDocQDT.decLineTotExc), 0) AS decLineTotExc
						FROM tblOrderDocQ
						INNER JOIN tblOrderDocQDT ON tblOrderDocQ.strOrdDocID = tblOrderDocQDT.strOrdDocID
						INNER JOIN tblOrderDocQDTPrj ON tblOrderDocQDT.strOrdDocID = tblOrderDocQDTPrj.strOrdDocID
							AND tblOrderDocQDT.intLineNo = tblOrderDocQDTPrj.intLineNo
						WHERE (tblOrderDocQDTPrj.strProjNumber = @SQProjNum)
						GROUP BY strPartNumber
							,strPartDesc
						) Z
					GROUP BY Z.SeqNo
						,Z.strPartNumber
						,Z.strPartDesc

					UNION ALL

					SELECT 2 AS SeqNo
						,tblInvoiceDocDT.strPartNumber
						,tblInvoiceDocDT.strPartDesc
						,ISNULL(SUM(tblInvoiceDocDT.decQty), 0) AS decQty
						,ISNULL(SUM(tblInvoiceDocDT.decLineTotExc), 0) AS decLineTotExc
					FROM tblInvoiceDoc
					INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
					INNER JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
						AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
					WHERE (tblInvoiceDocDTPrj.strProjNumber = @SQProjNum)
					GROUP BY strPartNumber
						,strPartDesc

					UNION ALL

					SELECT 3 AS SeqNo
						,tblOrderDocPDT.strPartNumber
						,tblOrderDocPDT.strPartDesc
						,ISNULL(SUM(tblOrderDocPDT.decStockQty), 0) AS decQty
						,ISNULL(SUM(tblOrderDocPDT.decLineTotExc), 0) AS decLineTotExc
					FROM tblOrderDocP
					INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
					INNER JOIN tblOrderDocPDTPrj ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTPrj.strOrdPDocID
						AND tblOrderDocPDT.intLineNo = tblOrderDocPDTPrj.intLineNo
					WHERE (tblOrderDocPDTPrj.strProjNumber = @SQProjNum)
						AND (tblOrderDocP.intDocType = 2)
					GROUP BY strPartNumber
						,strPartDesc

					UNION ALL

					SELECT 4 AS SeqNo
						,tblInvoiceDocPDT.strPartNumber
						,tblInvoiceDocPDT.strPartDesc
						,ISNULL(SUM(tblInvoiceDocPDT.decStockQty), 0) AS decQty
						,ISNULL(SUM(tblInvoiceDocPDT.decLineTotExc), 0) AS decLineTotExc
					FROM tblInvoiceDocP
					INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
					INNER JOIN tblInvoiceDocPDTPrj ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocPDTPrj.strInvPDocID
						AND tblInvoiceDocPDT.intLineNo = tblInvoiceDocPDTPrj.intLineNo
					WHERE (tblInvoiceDocPDTPrj.strProjNumber = @SQProjNum)
					GROUP BY strPartNumber
						,strPartDesc

					UNION ALL

					SELECT 5 AS SeqNo
						,CONVERT(NVARCHAR(20), tblJournalEntryDocCBDT.intGLNumber) AS strPartNumber
						,tblJournalEntryDocCBDT.strDesc
						,ISNULL(COUNT(tblJournalEntryDocCBDT.intGLNumber), 0) AS decQty
						,ISNULL(SUM(tblJournalEntryDocCBDT.decLineTotExc), 0) AS decLineTotExc
					FROM tblJournalEntryDocCB
					INNER JOIN tblJournalEntryDocCBDT ON tblJournalEntryDocCB.strJEDocID = tblJournalEntryDocCBDT.strJEDocID
					INNER JOIN tblJournalEntryDocCBDTPrj ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCBDTPrj.strJEDocID
						AND tblJournalEntryDocCBDT.intType = tblJournalEntryDocCBDTPrj.intType
						AND tblJournalEntryDocCBDT.intGLNumber = tblJournalEntryDocCBDTPrj.intGLNumber
						AND tblJournalEntryDocCBDT.intLineNo = tblJournalEntryDocCBDTPrj.intLineNo
					WHERE (tblJournalEntryDocCBDTPrj.strProjNumber = @SQProjNum)
						AND (tblJournalEntryDocCBDT.intType = @SQPayType)
					GROUP BY tblJournalEntryDocCBDT.intGLNumber
						,tblJournalEntryDocCBDT.strDesc

					UNION ALL

					SELECT 6 AS SeqNo
						,CONVERT(NVARCHAR(20), tblJournalEntryDocCBDT.intGLNumber) AS strPartNumber
						,tblJournalEntryDocCBDT.strDesc
						,ISNULL(COUNT(tblJournalEntryDocCBDT.intGLNumber), 0) AS decQty
						,(ISNULL(SUM(tblJournalEntryDocCBDT.decLineTotExc), 0) * - 1) AS decLineTotExc
					FROM tblJournalEntryDocCB
					INNER JOIN tblJournalEntryDocCBDT ON tblJournalEntryDocCB.strJEDocID = tblJournalEntryDocCBDT.strJEDocID
					INNER JOIN tblJournalEntryDocCBDTPrj ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCBDTPrj.strJEDocID
						AND tblJournalEntryDocCBDT.intType = tblJournalEntryDocCBDTPrj.intType
						AND tblJournalEntryDocCBDT.intGLNumber = tblJournalEntryDocCBDTPrj.intGLNumber
						AND tblJournalEntryDocCBDT.intLineNo = tblJournalEntryDocCBDTPrj.intLineNo
					WHERE (tblJournalEntryDocCBDTPrj.strProjNumber = @SQProjNum)
						AND (tblJournalEntryDocCBDT.intType = @SQRecType)
					GROUP BY tblJournalEntryDocCBDT.intGLNumber
						,tblJournalEntryDocCBDT.strDesc

					UNION ALL

					SELECT 7 AS SeqNo
						,CONVERT(NVARCHAR(20), tblJournalEntryDocDT.intGLNumber) AS strPartNumber
						,tblJournalEntryDocDT.strDesc
						,ISNULL(COUNT(tblJournalEntryDocDT.intGLNumber), 0) AS decQty
						,ISNULL(SUM(tblJournalEntryDocDT.decDebits), 0) AS decLineTotExc
					FROM tblJournalEntryDoc
					INNER JOIN tblJournalEntryDocDT ON tblJournalEntryDoc.strJEDocID = tblJournalEntryDocDT.strJEDocID
					INNER JOIN tblJournalEntryDocDTPrj ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDocDTPrj.strJEDocID
						AND tblJournalEntryDocDT.intGLNumber = tblJournalEntryDocDTPrj.intGLNumber
						AND tblJournalEntryDocDT.intLineNo = tblJournalEntryDocDTPrj.intLineNo
					WHERE (tblJournalEntryDocDTPrj.strProjNumber = @SQProjNum)
					GROUP BY tblJournalEntryDocDT.intGLNumber
						,tblJournalEntryDocDT.strDesc

					UNION ALL

					SELECT 8 AS SeqNo
						,CONVERT(NVARCHAR(20), tblJournalEntryDocDT.intGLNumber) AS strPartNumber
						,tblJournalEntryDocDT.strDesc
						,ISNULL(COUNT(tblJournalEntryDocDT.intGLNumber), 0) AS decQty
						,(ISNULL(SUM(tblJournalEntryDocDT.decCredits), 0) * - 1) AS decLineTotExc
					FROM tblJournalEntryDoc
					INNER JOIN tblJournalEntryDocDT ON tblJournalEntryDoc.strJEDocID = tblJournalEntryDocDT.strJEDocID
					INNER JOIN tblJournalEntryDocDTPrj ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDocDTPrj.strJEDocID
						AND tblJournalEntryDocDT.intGLNumber = tblJournalEntryDocDTPrj.intGLNumber
						AND tblJournalEntryDocDT.intLineNo = tblJournalEntryDocDTPrj.intLineNo
					WHERE (tblJournalEntryDocDTPrj.strProjNumber = @SQProjNum)
					GROUP BY tblJournalEntryDocDT.intGLNumber
						,tblJournalEntryDocDT.strDesc
					ORDER BY strPartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[prGetAPOpenOrdersData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetAPOpenOrdersData]
	@IsAllVendorCategory AS BIT = NULL,
	@IsAllVendor AS BIT = NULL,
	@VendName AS nvarchar(50) = NULL,
	@VendCategory AS nvarchar(20) = NULL,
	@PORequiredStartDate AS datetime = NULL,
	@PORequiredEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllVendorCategory = 1 AND @IsAllVendor = 1
	BEGIN
		SELECT tblVendors.strVendName AS VendorNumber, tblVendors.strVendDesc AS VendorName , tblVendors.strVendCategory as VendorCategory , tblOrderDocP.strOrdPDocID AS OrderID , tblOrderDocP.dteJournalDate AS JournalDate , tblOrderDocP.dteRequired AS RequiredDate , tblOrderDocPDT.strPartNumber AS ItemNo , tblOrderDocPDT.strPartDesc AS ItemDesc , tblOrderDocPDT.decBuyQty AS BuyQty , tblOrderDocPDT.strBuyUnit AS BuyUnit , tblOrderDocPDT.decBuyQtyRemain AS QtyRemaining , tblOrderDocP.decTotal AS Total, tblOrderDocPDT.decEaIncTax AS BuyValue , tblOrderDocPDT.decLineTotExc AS LineValue , CASE tblOrderDocPDT.decBuyQty WHEN tblOrderDocPDT.decBuyQtyRemain THEN (tblOrderDocPDT.decLineTotExc) ELSE ((tblOrderDocPDT.decLineTotExc) / tblOrderDocPDT.decBuyQty) * tblOrderDocPDT.decBuyQtyRemain END AS ValueRemaining , tblOrderDocP.intDocType FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName WHERE (tblOrderDocP.intDocType = 1) AND (tblOrderDocP.bitCleared = 0) AND tblOrderDocP.dteRequired BETWEEN @PORequiredStartDate AND @PORequiredEndDate ORDER BY tblOrderDocP.dteRequired
	END
	ELSE IF @IsAllVendorCategory = 1 AND @IsAllVendor = 0
	BEGIN
		SELECT tblVendors.strVendName AS VendorNumber, tblVendors.strVendDesc AS VendorName , tblVendors.strVendCategory as VendorCategory , tblOrderDocP.strOrdPDocID AS OrderID , tblOrderDocP.dteJournalDate AS JournalDate , tblOrderDocP.dteRequired AS RequiredDate , tblOrderDocPDT.strPartNumber AS ItemNo , tblOrderDocPDT.strPartDesc AS ItemDesc , tblOrderDocPDT.decBuyQty AS BuyQty , tblOrderDocPDT.strBuyUnit AS BuyUnit , tblOrderDocPDT.decBuyQtyRemain AS QtyRemaining , tblOrderDocP.decTotal AS Total, tblOrderDocPDT.decEaIncTax AS BuyValue , tblOrderDocPDT.decLineTotExc AS LineValue , CASE tblOrderDocPDT.decBuyQty WHEN tblOrderDocPDT.decBuyQtyRemain THEN (tblOrderDocPDT.decLineTotExc) ELSE ((tblOrderDocPDT.decLineTotExc) / tblOrderDocPDT.decBuyQty) * tblOrderDocPDT.decBuyQtyRemain END AS ValueRemaining , tblOrderDocP.intDocType FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName WHERE (tblOrderDocP.intDocType = 1) AND (tblOrderDocP.bitCleared = 0) AND tblOrderDocP.dteRequired BETWEEN @PORequiredStartDate AND @PORequiredEndDate AND tblVendors.strVendName = @VendName ORDER BY tblOrderDocP.dteRequired
	END
	ELSE IF @IsAllVendorCategory = 0 AND @IsAllVendor = 1
	BEGIN
		SELECT tblVendors.strVendName AS VendorNumber, tblVendors.strVendDesc AS VendorName , tblVendors.strVendCategory as VendorCategory , tblOrderDocP.strOrdPDocID AS OrderID , tblOrderDocP.dteJournalDate AS JournalDate , tblOrderDocP.dteRequired AS RequiredDate , tblOrderDocPDT.strPartNumber AS ItemNo , tblOrderDocPDT.strPartDesc AS ItemDesc , tblOrderDocPDT.decBuyQty AS BuyQty , tblOrderDocPDT.strBuyUnit AS BuyUnit , tblOrderDocPDT.decBuyQtyRemain AS QtyRemaining , tblOrderDocP.decTotal AS Total, tblOrderDocPDT.decEaIncTax AS BuyValue , tblOrderDocPDT.decLineTotExc AS LineValue , CASE tblOrderDocPDT.decBuyQty WHEN tblOrderDocPDT.decBuyQtyRemain THEN (tblOrderDocPDT.decLineTotExc) ELSE ((tblOrderDocPDT.decLineTotExc) / tblOrderDocPDT.decBuyQty) * tblOrderDocPDT.decBuyQtyRemain END AS ValueRemaining , tblOrderDocP.intDocType FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName WHERE (tblOrderDocP.intDocType = 1) AND (tblOrderDocP.bitCleared = 0) AND tblOrderDocP.dteRequired BETWEEN @PORequiredStartDate AND @PORequiredEndDate AND tblVendors.strVendCategory = @VendCategory ORDER BY tblOrderDocP.dteRequired
	END
	ELSE IF @IsAllVendorCategory = 0 AND @IsAllVendor = 0
	BEGIN
		SELECT tblVendors.strVendName AS VendorNumber, tblVendors.strVendDesc AS VendorName , tblVendors.strVendCategory as VendorCategory , tblOrderDocP.strOrdPDocID AS OrderID , tblOrderDocP.dteJournalDate AS JournalDate , tblOrderDocP.dteRequired AS RequiredDate , tblOrderDocPDT.strPartNumber AS ItemNo , tblOrderDocPDT.strPartDesc AS ItemDesc , tblOrderDocPDT.decBuyQty AS BuyQty , tblOrderDocPDT.strBuyUnit AS BuyUnit , tblOrderDocPDT.decBuyQtyRemain AS QtyRemaining , tblOrderDocP.decTotal AS Total, tblOrderDocPDT.decEaIncTax AS BuyValue , tblOrderDocPDT.decLineTotExc AS LineValue , CASE tblOrderDocPDT.decBuyQty WHEN tblOrderDocPDT.decBuyQtyRemain THEN (tblOrderDocPDT.decLineTotExc) ELSE ((tblOrderDocPDT.decLineTotExc) / tblOrderDocPDT.decBuyQty) * tblOrderDocPDT.decBuyQtyRemain END AS ValueRemaining , tblOrderDocP.intDocType FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName WHERE (tblOrderDocP.intDocType = 1) AND (tblOrderDocP.bitCleared = 0) AND tblOrderDocP.dteRequired BETWEEN @PORequiredStartDate AND @PORequiredEndDate AND tblVendors.strVendName = @VendName AND tblVendors.strVendCategory = @VendCategory ORDER BY tblOrderDocP.dteRequired
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetAPOpenQuotesData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetAPOpenQuotesData]
	@IsAllVendorCategory AS BIT = NULL,
	@IsAllVendor AS BIT = NULL,
	@POQuotesVendName AS nvarchar(50) = NULL,
	@POQuotesVendCategory AS nvarchar(20) = NULL,
	@POQuotesStartDate AS datetime = NULL,
	@POQuotesEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllVendorCategory = 1 AND @IsAllVendor = 1
	BEGIN
		SELECT tblVendors.strVendName AS VendorNumber, tblVendors.strVendDesc AS VendorName , tblVendors.strVendCategory as VendorCategory , tblOrderDocP.strOrdPDocID AS DocID , tblOrderDocP.dteJournalDate AS JournalDate , tblOrderDocP.dteRequired AS RequiredDate , tblOrderDocPDT.strPartNumber AS ItemName , tblOrderDocPDT.strPartDesc AS ItemDesc , tblOrderDocP.decTotal AS Total , tblOrderDocPDT.decBuyQty AS BuyQty, tblOrderDocPDT.decEaIncTax AS BuyValue, tblOrderDocPDT.strBuyUnit AS BuyUnit , tblOrderDocPDT.decBuyQtyRemain AS QtyRemaining, tblOrderDocPDT.decLineTotExc AS LineValue, CASE tblOrderDocPDT.decBuyQty WHEN tblOrderDocPDT.decBuyQtyRemain THEN (tblOrderDocPDT.decLineTotExc) ELSE ((tblOrderDocPDT.decLineTotExc) / tblOrderDocPDT.decBuyQty) * tblOrderDocPDT.decBuyQtyRemain END AS ValueRemaining , tblOrderDocP.intDocType FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName WHERE (tblOrderDocP.intDocType = 2) AND (tblOrderDocP.bitCleared = 0) AND tblOrderDocP.dteRequired BETWEEN @POQuotesStartDate AND @POQuotesEndDate ORDER BY tblOrderDocP.dteRequired
	END
	ELSE IF @IsAllVendorCategory = 1 AND @IsAllVendor = 0
	BEGIN
		SELECT tblVendors.strVendName AS VendorNumber, tblVendors.strVendDesc AS VendorName , tblVendors.strVendCategory as VendorCategory , tblOrderDocP.strOrdPDocID AS DocID , tblOrderDocP.dteJournalDate AS JournalDate , tblOrderDocP.dteRequired AS RequiredDate , tblOrderDocPDT.strPartNumber AS ItemName , tblOrderDocPDT.strPartDesc AS ItemDesc , tblOrderDocP.decTotal AS Total , tblOrderDocPDT.decBuyQty AS BuyQty, tblOrderDocPDT.decEaIncTax AS BuyValue, tblOrderDocPDT.strBuyUnit AS BuyUnit , tblOrderDocPDT.decBuyQtyRemain AS QtyRemaining, tblOrderDocPDT.decLineTotExc AS LineValue, CASE tblOrderDocPDT.decBuyQty WHEN tblOrderDocPDT.decBuyQtyRemain THEN (tblOrderDocPDT.decLineTotExc) ELSE ((tblOrderDocPDT.decLineTotExc) / tblOrderDocPDT.decBuyQty) * tblOrderDocPDT.decBuyQtyRemain END AS ValueRemaining , tblOrderDocP.intDocType FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName WHERE (tblOrderDocP.intDocType = 2) AND (tblOrderDocP.bitCleared = 0) AND tblOrderDocP.dteRequired BETWEEN @POQuotesStartDate AND @POQuotesEndDate AND tblVendors.strVendName = @POQuotesVendName ORDER BY tblOrderDocP.dteRequired
	END
	ELSE IF @IsAllVendorCategory = 0 AND @IsAllVendor = 1
	BEGIN
		SELECT tblVendors.strVendName AS VendorNumber, tblVendors.strVendDesc AS VendorName , tblVendors.strVendCategory as VendorCategory , tblOrderDocP.strOrdPDocID AS DocID , tblOrderDocP.dteJournalDate AS JournalDate , tblOrderDocP.dteRequired AS RequiredDate , tblOrderDocPDT.strPartNumber AS ItemName , tblOrderDocPDT.strPartDesc AS ItemDesc , tblOrderDocP.decTotal AS Total , tblOrderDocPDT.decBuyQty AS BuyQty, tblOrderDocPDT.decEaIncTax AS BuyValue, tblOrderDocPDT.strBuyUnit AS BuyUnit , tblOrderDocPDT.decBuyQtyRemain AS QtyRemaining, tblOrderDocPDT.decLineTotExc AS LineValue, CASE tblOrderDocPDT.decBuyQty WHEN tblOrderDocPDT.decBuyQtyRemain THEN (tblOrderDocPDT.decLineTotExc) ELSE ((tblOrderDocPDT.decLineTotExc) / tblOrderDocPDT.decBuyQty) * tblOrderDocPDT.decBuyQtyRemain END AS ValueRemaining , tblOrderDocP.intDocType FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName WHERE (tblOrderDocP.intDocType = 2) AND (tblOrderDocP.bitCleared = 0) AND tblOrderDocP.dteRequired BETWEEN @POQuotesStartDate AND @POQuotesEndDate AND tblVendors.strVendCategory = @POQuotesVendCategory ORDER BY tblOrderDocP.dteRequired
	END
	ELSE IF @IsAllVendorCategory = 0 AND @IsAllVendor = 0
	BEGIN
		SELECT tblVendors.strVendName AS VendorNumber, tblVendors.strVendDesc AS VendorName , tblVendors.strVendCategory as VendorCategory , tblOrderDocP.strOrdPDocID AS DocID , tblOrderDocP.dteJournalDate AS JournalDate , tblOrderDocP.dteRequired AS RequiredDate , tblOrderDocPDT.strPartNumber AS ItemName , tblOrderDocPDT.strPartDesc AS ItemDesc , tblOrderDocP.decTotal AS Total , tblOrderDocPDT.decBuyQty AS BuyQty, tblOrderDocPDT.decEaIncTax AS BuyValue, tblOrderDocPDT.strBuyUnit AS BuyUnit , tblOrderDocPDT.decBuyQtyRemain AS QtyRemaining, tblOrderDocPDT.decLineTotExc AS LineValue, CASE tblOrderDocPDT.decBuyQty WHEN tblOrderDocPDT.decBuyQtyRemain THEN (tblOrderDocPDT.decLineTotExc) ELSE ((tblOrderDocPDT.decLineTotExc) / tblOrderDocPDT.decBuyQty) * tblOrderDocPDT.decBuyQtyRemain END AS ValueRemaining , tblOrderDocP.intDocType FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName WHERE (tblOrderDocP.intDocType = 2) AND (tblOrderDocP.bitCleared = 0) AND tblOrderDocP.dteRequired BETWEEN @POQuotesStartDate AND @POQuotesEndDate AND tblVendors.strVendName = @POQuotesVendName AND tblVendors.strVendCategory = @POQuotesVendCategory ORDER BY tblOrderDocP.dteRequired
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetAROpenOrdersData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetAROpenOrdersData]
	@IsAllCustomerCategory AS BIT = NULL,
	@IsAllCustomer AS BIT = NULL,
	@CustName AS nvarchar(50) = NULL,
	@CustCategory AS nvarchar(20) = NULL,
	@SORequiredStartDate AS datetime = NULL,
	@SORequiredEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllCustomerCategory = 1 AND @IsAllCustomer = 1
	BEGIN
		SELECT tblCustomers.strCustName AS CustomerNumber, tblCustomers.strCustDesc AS CustomerName, tblCustomers.strCustCategory as CustomerCategory, tblOrderDoc.strOrdDocID AS OrderID , tblOrderDoc.dteJournalDate AS JournalDate, tblOrderDoc.dteRequired AS RequiredDate, tblOrderDocDT.strPartNumber AS ItemNo, tblOrderDocDT.strPartDesc AS ItemDesc, tblOrderDocDT.decQty AS Qty, tblOrderDocDT.decQtyRemaining AS OpenQty, tblOrderDoc.decSubTotal AS Total, CASE tblOrderDocDT.decQty WHEN tblOrderDocDT.decQtyRemaining THEN tblOrderDocDT.decLineTotExc ELSE (tblOrderDocDT.decLineTotExc / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining END AS OpenValue, tblInv.decSumOnHand AS OnHand FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID INNER JOIN tblInv ON tblInv.strPartNumber = tblOrderDocDT.strPartNumber INNER JOIN tblCustomers ON tblCustomers.strCustName = tblOrderDoc.strCustName WHERE (tblOrderDoc.intDocType = 1) AND (tblOrderDoc.bitCleared = 0) AND tblOrderDoc.dteRequired BETWEEN @SORequiredStartDate AND @SORequiredEndDate ORDER BY tblOrderDoc.dteRequired
	END
	ELSE IF @IsAllCustomerCategory = 1 AND @IsAllCustomer = 0
	BEGIN
		SELECT tblCustomers.strCustName AS CustomerNumber, tblCustomers.strCustDesc AS CustomerName, tblCustomers.strCustCategory as CustomerCategory, tblOrderDoc.strOrdDocID AS OrderID , tblOrderDoc.dteJournalDate AS JournalDate, tblOrderDoc.dteRequired AS RequiredDate, tblOrderDocDT.strPartNumber AS ItemNo, tblOrderDocDT.strPartDesc AS ItemDesc, tblOrderDocDT.decQty AS Qty, tblOrderDocDT.decQtyRemaining AS OpenQty, tblOrderDoc.decSubTotal AS Total, CASE tblOrderDocDT.decQty WHEN tblOrderDocDT.decQtyRemaining THEN tblOrderDocDT.decLineTotExc ELSE (tblOrderDocDT.decLineTotExc / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining END AS OpenValue, tblInv.decSumOnHand AS OnHand FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID INNER JOIN tblInv ON tblInv.strPartNumber = tblOrderDocDT.strPartNumber INNER JOIN tblCustomers ON tblCustomers.strCustName = tblOrderDoc.strCustName WHERE (tblOrderDoc.intDocType = 1) AND (tblOrderDoc.bitCleared = 0) AND tblOrderDoc.dteRequired BETWEEN @SORequiredStartDate AND @SORequiredEndDate AND tblCustomers.strCustName = @CustName ORDER BY tblOrderDoc.dteRequired
	END
	ELSE IF @IsAllCustomerCategory = 0 AND @IsAllCustomer = 1
	BEGIN
		SELECT tblCustomers.strCustName AS CustomerNumber, tblCustomers.strCustDesc AS CustomerName, tblCustomers.strCustCategory as CustomerCategory, tblOrderDoc.strOrdDocID AS OrderID , tblOrderDoc.dteJournalDate AS JournalDate, tblOrderDoc.dteRequired AS RequiredDate, tblOrderDocDT.strPartNumber AS ItemNo, tblOrderDocDT.strPartDesc AS ItemDesc, tblOrderDocDT.decQty AS Qty, tblOrderDocDT.decQtyRemaining AS OpenQty, tblOrderDoc.decSubTotal AS Total, CASE tblOrderDocDT.decQty WHEN tblOrderDocDT.decQtyRemaining THEN tblOrderDocDT.decLineTotExc ELSE (tblOrderDocDT.decLineTotExc / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining END AS OpenValue, tblInv.decSumOnHand AS OnHand FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID INNER JOIN tblInv ON tblInv.strPartNumber = tblOrderDocDT.strPartNumber INNER JOIN tblCustomers ON tblCustomers.strCustName = tblOrderDoc.strCustName WHERE (tblOrderDoc.intDocType = 1) AND (tblOrderDoc.bitCleared = 0) AND tblOrderDoc.dteRequired BETWEEN @SORequiredStartDate AND @SORequiredEndDate AND tblCustomers.strCustCategory = @CustCategory ORDER BY tblOrderDoc.dteRequired
	END
	ELSE IF @IsAllCustomerCategory = 0 AND @IsAllCustomer = 0
	BEGIN
		SELECT tblCustomers.strCustName AS CustomerNumber, tblCustomers.strCustDesc AS CustomerName, tblCustomers.strCustCategory as CustomerCategory, tblOrderDoc.strOrdDocID AS OrderID , tblOrderDoc.dteJournalDate AS JournalDate, tblOrderDoc.dteRequired AS RequiredDate, tblOrderDocDT.strPartNumber AS ItemNo, tblOrderDocDT.strPartDesc AS ItemDesc, tblOrderDocDT.decQty AS Qty, tblOrderDocDT.decQtyRemaining AS OpenQty, tblOrderDoc.decSubTotal AS Total, CASE tblOrderDocDT.decQty WHEN tblOrderDocDT.decQtyRemaining THEN tblOrderDocDT.decLineTotExc ELSE (tblOrderDocDT.decLineTotExc / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining END AS OpenValue, tblInv.decSumOnHand AS OnHand FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID INNER JOIN tblInv ON tblInv.strPartNumber = tblOrderDocDT.strPartNumber INNER JOIN tblCustomers ON tblCustomers.strCustName = tblOrderDoc.strCustName WHERE (tblOrderDoc.intDocType = 1) AND (tblOrderDoc.bitCleared = 0) AND tblOrderDoc.dteRequired BETWEEN @SORequiredStartDate AND @SORequiredEndDate AND tblCustomers.strCustName = @CustName AND tblCustomers.strCustCategory = @CustCategory ORDER BY tblOrderDoc.dteRequired
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetAROpenQuotesData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetAROpenQuotesData]
	@IsAllCustomerCategory AS BIT = NULL,
	@IsAllCustomer AS BIT = NULL,
	@SOQuotesCustName AS nvarchar(50) = NULL,
	@SOQuotesCustCategory AS nvarchar(20) = NULL,
	@SOQuotesStartDate AS datetime = NULL,
	@SOQuotesEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllCustomerCategory = 1 AND @IsAllCustomer = 1
	BEGIN
		SELECT tblCustomers.strCustName AS CustomerNumber, tblCustomers.strCustDesc AS CustomerName, tblCustomers.strCustCategory AS CustomerCategory, strOrdDocID AS DocNo, strReference AS Reference, dteJournalDate AS TransDate, dteRequired AS RequiredDate, tblOrderDoc.strCurrency AS Currency, decSubTotal AS Total_Excl, decVAT AS VAT, decTotal AS Total FROM tblOrderDoc INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName WHERE intDocType = 2 AND bitCleared = 0 AND tblOrderDoc.dteRequired BETWEEN @SOQuotesStartDate AND @SOQuotesEndDate UNION ALL SELECT tblCustomers.strCustName AS CustomerNumber, tblCustomers.strCustDesc AS CustomerName, tblCustomers.strCustCategory AS CustomerCategory, strOrdDocID AS DocNo, strReference AS Reference, dteJournalDate AS TransDate, dteRequired AS RequiredDate, tblOrderDocQ.strCurrency AS Currency, decSubTotal AS Total_Excl, decVAT AS VAT, decTotal  AS Total FROM tblOrderDocQ INNER JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName WHERE bitCleared = 0 AND tblOrderDocQ.dteRequired BETWEEN @SOQuotesStartDate AND @SOQuotesEndDate ORDER BY dteJournalDate
	END
	ELSE IF @IsAllCustomerCategory = 1 AND @IsAllCustomer = 0
	BEGIN
		SELECT tblCustomers.strCustName AS CustomerNumber, tblCustomers.strCustDesc AS CustomerName, tblCustomers.strCustCategory AS CustomerCategory, strOrdDocID AS DocNo, strReference AS Reference, dteJournalDate AS TransDate, dteRequired AS RequiredDate, tblOrderDoc.strCurrency AS Currency, decSubTotal AS Total_Excl, decVAT AS VAT, decTotal AS Total FROM tblOrderDoc INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName WHERE intDocType = 2 AND bitCleared = 0 AND tblOrderDoc.dteRequired BETWEEN @SOQuotesStartDate AND @SOQuotesEndDate AND tblCustomers.strCustName = @SOQuotesCustName UNION ALL SELECT tblCustomers.strCustName AS CustomerNumber, tblCustomers.strCustDesc AS CustomerName, tblCustomers.strCustCategory AS CustomerCategory, strOrdDocID AS DocNo, strReference AS Reference, dteJournalDate AS TransDate, dteRequired AS RequiredDate, tblOrderDocQ.strCurrency AS Currency, decSubTotal AS Total_Excl, decVAT AS VAT, decTotal  AS Total FROM tblOrderDocQ INNER JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName WHERE bitCleared = 0 AND tblOrderDocQ.dteRequired BETWEEN @SOQuotesStartDate AND @SOQuotesEndDate AND tblCustomers.strCustName = @SOQuotesCustName ORDER BY dteJournalDate
	END
	ELSE IF @IsAllCustomerCategory = 0 AND @IsAllCustomer = 1
	BEGIN
		SELECT tblCustomers.strCustName AS CustomerNumber, tblCustomers.strCustDesc AS CustomerName, tblCustomers.strCustCategory AS CustomerCategory, strOrdDocID AS DocNo, strReference AS Reference, dteJournalDate AS TransDate, dteRequired AS RequiredDate, tblOrderDoc.strCurrency AS Currency, decSubTotal AS Total_Excl, decVAT AS VAT, decTotal AS Total FROM tblOrderDoc INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName WHERE intDocType = 2 AND bitCleared = 0 AND tblOrderDoc.dteRequired BETWEEN @SOQuotesStartDate AND @SOQuotesEndDate AND tblCustomers.strCustCategory = @SOQuotesCustCategory UNION ALL SELECT tblCustomers.strCustName AS CustomerNumber, tblCustomers.strCustDesc AS CustomerName, tblCustomers.strCustCategory AS CustomerCategory, strOrdDocID AS DocNo, strReference AS Reference, dteJournalDate AS TransDate, dteRequired AS RequiredDate, tblOrderDocQ.strCurrency AS Currency, decSubTotal AS Total_Excl, decVAT AS VAT, decTotal  AS Total FROM tblOrderDocQ INNER JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName WHERE bitCleared = 0 AND tblOrderDocQ.dteRequired BETWEEN @SOQuotesStartDate AND @SOQuotesEndDate AND tblCustomers.strCustCategory = @SOQuotesCustCategory ORDER BY dteJournalDate
	END
	ELSE IF @IsAllCustomerCategory = 0 AND @IsAllCustomer = 0
	BEGIN
		SELECT tblCustomers.strCustName AS CustomerNumber, tblCustomers.strCustDesc AS CustomerName, tblCustomers.strCustCategory AS CustomerCategory, strOrdDocID AS DocNo, strReference AS Reference, dteJournalDate AS TransDate, dteRequired AS RequiredDate, tblOrderDoc.strCurrency AS Currency, decSubTotal AS Total_Excl, decVAT AS VAT, decTotal AS Total FROM tblOrderDoc INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName WHERE intDocType = 2 AND bitCleared = 0 AND tblOrderDoc.dteRequired BETWEEN @SOQuotesStartDate AND @SOQuotesEndDate AND tblCustomers.strCustName = @SOQuotesCustName AND tblCustomers.strCustCategory = @SOQuotesCustCategory UNION ALL SELECT tblCustomers.strCustName AS CustomerNumber, tblCustomers.strCustDesc AS CustomerName, tblCustomers.strCustCategory AS CustomerCategory, strOrdDocID AS DocNo, strReference AS Reference, dteJournalDate AS TransDate, dteRequired AS RequiredDate, tblOrderDocQ.strCurrency AS Currency, decSubTotal AS Total_Excl, decVAT AS VAT, decTotal  AS Total FROM tblOrderDocQ INNER JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName WHERE bitCleared = 0 AND tblOrderDocQ.dteRequired BETWEEN @SOQuotesStartDate AND @SOQuotesEndDate AND tblCustomers.strCustName = @SOQuotesCustName AND tblCustomers.strCustCategory = @SOQuotesCustCategory ORDER BY dteJournalDate
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetBankBalancesDataByBankOrCash]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetBankBalancesDataByBankOrCash]
	@IsBankBalanceSupress AS bit = NULL,
	@Option AS int = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsBankBalanceSupress = 1 
	BEGIN
		SELECT strDesc AS AccountName
										,decBalance AS Balance
										,intAccClass
										,CASE 
											WHEN intAccClass = 1
												THEN 'CASH'
											WHEN intAccClass = 2
												THEN 'BANK'
											END AS AccountClass
									FROM tblAccounts
									WHERE intAccClass = @Option AND decBalance != 0 
	END
	ELSE IF @IsBankBalanceSupress = 0 
	BEGIN
		SELECT strDesc AS AccountName
										,decBalance AS Balance
										,intAccClass
										,CASE 
											WHEN intAccClass = 1
												THEN 'CASH'
											WHEN intAccClass = 2
												THEN 'BANK'
											END AS AccountClass
									FROM tblAccounts
									WHERE intAccClass = @Option
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetBankBalancesDataByBoth]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetBankBalancesDataByBoth]
	@IsBankBalanceSupress AS bit = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsBankBalanceSupress = 1 
		BEGIN
			SELECT strDesc AS AccountName
									,decBalance AS Balance
									,intAccClass
									,CASE 
										WHEN intAccClass = 1
											THEN 'CASH'
										WHEN intAccClass = 2
											THEN 'BANK'
										END AS AccountClass
								FROM tblAccounts
								WHERE intAccClass IN (
										1
										,2
										)
										AND decBalance != 0 
		END
	ELSE
		BEGIN
			SELECT strDesc AS AccountName
									,decBalance AS Balance
									,intAccClass
									,CASE 
										WHEN intAccClass = 1
											THEN 'CASH'
										WHEN intAccClass = 2
											THEN 'BANK'
										END AS AccountClass
								FROM tblAccounts
								WHERE intAccClass IN (
										1
										,2
										)
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetBulkLabelPrintingItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetBulkLabelPrintingItems] 
	@SQDate SMALLDATETIME = NULL
	,@SQApply BIT = 0
	,@SQCategory NVARCHAR(Max) = ''
	,@SQSubCategory NVARCHAR(Max) = ''
	,@SQLocation NVARCHAR(Max) = ''
	,@SQSearch NVARCHAR(100) = ''
	,@SQWithPrice BIT = 0
	,@SQPricelist NVARCHAR(100) = 'REGULAR'
	,@SQuidPriceBasedID NVARCHAR(100) = 0
	,@SQPriceSince DATETIME
	,@SQShowPrices BIT = 0
	,@SQShowOnHandQtyOnly BIT = 0
	,@SQBinCode NVARCHAR(Max) = ''
	,@PageSize INT = 25
	,@PageNum  INT =1

WITH RECOMPILE
AS
BEGIN
  DECLARE @Offset INT
  SET @Offset = @PageSize * (@PageNum-1)

DECLARE @SplitWord TABLE(wordRank INT, word VARCHAR(200))
SET @SQSearch = LTRIM(RTRIM(@SQSearch)) -- Remove white space
DECLARE @WordSeperator VARCHAR(1) =' '

  DECLARE @TotalWord Int=0
  DECLARE @WordCount Int=1
  DECLARE @Keyword1 VARCHAR(100)=''
  DECLARE @Keyword2 VARCHAR(100)=''
  DECLARE @Keyword3 VARCHAR(100)=''
  DECLARE @Keyword4 VARCHAR(100)=''
  DECLARE @Keyword5 VARCHAR(100)=''
  DECLARE @Keyword6 VARCHAR(100)=''
  DECLARE @Keyword7 VARCHAR(100)=''
  DECLARE @Keyword8 VARCHAR(100)=''
  DECLARE @Keyword9 VARCHAR(100)=''
  DECLARE @Keyword10 VARCHAR(100)=''

  IF(CHARINDEX(',',@SQSearch)) > 0 
	BEGIN
		 SET @WordSeperator=','
	END  


INSERT INTO @SplitWord select Id, [Data] from dbo.split(@SQSearch, @WordSeperator)

SET @TotalWord=(SELECT COUNT(*) FROM @SplitWord)

While(@WordCount<=@TotalWord)
Begin
		IF @WordCount=1 
			BEGIN
				SET @Keyword1=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=2 
			BEGIN
				SET @Keyword2=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=3 
			BEGIN
				SET @Keyword3=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=4 
			BEGIN
				SET @Keyword4=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=5 
			BEGIN
				SET @Keyword5=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=6 
			BEGIN
				SET @Keyword6=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=7 
			BEGIN
				SET @Keyword7=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=8 
			BEGIN
				SET @Keyword8=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=9
			BEGIN
				SET @Keyword9=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=10 
			BEGIN
				SET @Keyword10=(Select Word from @SplitWord Where wordRank=@WordCount)
			END

	SET @WordCount=@WordCount+1
End

DECLARE @uidPriceBasedID AS UNIQUEIDENTIFIER
SET @uidPriceBasedID = NULL
IF ISNULL(@SQPricelist, '') <> ''	AND ISNULL(@SQDate, '') <> '' And isnull(@SQuidPriceBasedID,'')=''
BEGIN
SELECT TOP 1 @uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
FROM tblPriceListsByDate
INNER JOIN dbo.tblInvPrice ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
WHERE @SQDate BETWEEN dbo.tblPriceListsByDate.dteStartDate AND dbo.tblPriceListsByDate.dteFinishDate AND tblPriceListsByDate.strPricelist = @SQPricelist
END
ELSE
BEGIN
SELECT TOP 1 @uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
FROM tblPriceListsByDate
INNER JOIN dbo.tblInvPrice ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
WHERE @SQDate BETWEEN dbo.tblPriceListsByDate.dteStartDate AND dbo.tblPriceListsByDate.dteFinishDate AND tblPriceListsByDate.strPricelist = 'REGULAR'
END

	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	IF (@SQShowOnHandQtyOnly = 0)
	BEGIN
		IF (@SQShowPrices = 0)
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
				Select  0 AS bitSelect,*,CASE 
							WHEN @SQApply = 0
								THEN 0 ELSE Cast(decSumOnHand as int) end as intAmount 
								from (
					SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,(Select top 1 t.decSelling from tblInvPrice t where t.strPartNumber=tblInv.strPartNumber and t.strPricelist='Regular' and t.uidPriceBasedID=@uidPriceBasedID) as decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(Select dteUpdatedDate from dbo.tblInvPriceTracking  where
						dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						GROUP BY a.strPartNumber
						))  as dteUpdatedDate
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strCategory) AS RowNumber
					,tblInvPrice.strUnit
				FROM [tblInvExt]
				INNER JOIN [tblInv] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				INNER JOIN dbo.tblInvPrice (NOLOCK) ON (dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID or @uidPriceBasedID is null)
				and tblInvPrice.strPartNumber=[tblInv].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = 'REGULAR')
					--AND (
					--	@SQDate BETWEEN tblPriceListsByDate.dteStartDate
					--		AND tblPriceListsByDate.dteFinishDate
					--	)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.strUnit
					,tblInvUOMs.decConversionFactor
						,tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.strPartNumber
					) As result  WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
				ORDER BY RowNumber
			END
			ELSE
			BEGIN
				Select  0 AS bitSelect,*,
								CASE WHEN @SQApply = 0
								THEN 0 ELSE Cast(decSumOnHand as int) end as intAmount 
								from (
					SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,(Select top 1 t.decSelling from tblInvPrice t where t.strPartNumber=tblInv.strPartNumber and t.strPricelist=@SQPricelist and t.uidPriceBasedID=@SQuidPriceBasedID) as decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(Select dteUpdatedDate from dbo.tblInvPriceTracking  where
			    dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE (a.uidPriceBasedID = @SQuidPriceBasedID)
						GROUP BY a.strPartNumber
						))  as dteUpdatedDate
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strCategory) AS RowNumber
					,tblInvPrice.strUnit
				FROM [tblInvExt]
				INNER JOIN [tblInv] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				INNER JOIN dbo.tblInvPrice (NOLOCK) ON (dbo.tblInvPrice.uidPriceBasedID = @SQuidPriceBasedID or @SQuidPriceBasedID is null)	
				and tblInvPrice.strPartNumber=[tblInv].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				--and tblinv.strPartNumber=tblInvPrice.strPartNumber
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = @SQPricelist)
					
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.strUnit
					,tblInvUOMs.decConversionFactor
					,tblInvUOMs.strConversionType
					,dbo.tblInvUOMs.strPartNumber
					) As result  
					WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
				
			END
		END
		ELSE
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
				Select  0 AS bitSelect,*,
								CASE WHEN @SQApply = 0
								THEN 0 ELSE Cast(decSumOnHand as int) end as intAmount 
								from (
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,(Select top 1 t.decSelling from tblInvPrice t where t.strPartNumber=tblInv.strPartNumber and t.strPricelist='Regular' and t.uidPriceBasedID=@uidPriceBasedID) as decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(Select dteUpdatedDate from dbo.tblInvPriceTracking  where
						dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE) And a.uidPriceBasedID=@uidPriceBasedID
						GROUP BY a.strPartNumber
						))  as dteUpdatedDate
					--,tblInvPriceTracking.decPriceFrom
					--,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strCategory) AS RowNumber
					,tblInvPrice.strUnit
				FROM [tblInvExt]
				INNER JOIN [tblInv] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				INNER JOIN dbo.tblInvPrice (NOLOCK) ON (dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID or @uidPriceBasedID is null)
				and tblInvPrice.strPartNumber=[tblInv].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = 'REGULAR')
				
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					--AND tblInvPriceTracking.lngInvPriceTrackID IN (
					--	SELECT Max(a.lngInvPriceTrackID)
					--	FROM tblInvPriceTracking a
					--	INNER JOIN tblPriceListsByDate b ON a.uidPriceBasedID = b.uidPriceBasedID
					--	WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
					--		AND (
					--			@SQDate BETWEEN b.dteStartDate
					--				AND b.dteFinishDate
					--			)
					--		AND (a.strPricelist = 'REGULAR')
					--	GROUP BY a.strPartNumber
					--	)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.strUnit
					,tblInvUOMs.decConversionFactor
						,tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.strPartNumber
					) As result  
					WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber				
			END
			ELSE
			BEGIN
				Select  0 AS bitSelect,*,
								CASE WHEN @SQApply = 0
								THEN 0 ELSE Cast(decSumOnHand as int) end as intAmount 
								from (
				SELECT 
					tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,(Select top 1 t.decSelling from tblInvPrice t where t.strPartNumber=tblInv.strPartNumber and t.strPricelist=@SQPricelist and t.uidPriceBasedID=@SQuidPriceBasedID) as decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					 ,tblInvPriceTracking.dteUpdatedDate
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strCategory) AS RowNumber
					,tblInvPrice.strUnit
				FROM [tblInvExt]
				INNER JOIN [tblInv] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				and tblInvPrice.strPartNumber=[tblInv].strPartNumber
				INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				INNER JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = @SQPricelist)
					AND (tblPriceListsByDate.uidPriceBasedID = @SQuidPriceBasedID)
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
							AND a.uidPriceBasedID = @SQuidPriceBasedID
						GROUP BY a.strPartNumber
						)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory	
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPrice.strUnit
					,tblInvUOMs.decConversionFactor
						,tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.strPartNumber				
					) As result  
					WHERE dteUpdatedDate is not null and RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
		END
	END
	ELSE
	BEGIN
		IF (@SQShowPrices = 0)
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
			 Select * from (
			 	Select  0 AS bitSelect,*,
								CASE WHEN @SQApply = 0
								THEN 0 ELSE Cast(decSumOnHand as int) end as intAmount,ROW_NUMBER () over (order by strCategory) AS RowNumber	,COUNT(*) over () AS intRowCount 
								from (
					SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,(Select top 1 t.decSelling from tblInvPrice t where t.strPartNumber=tblInv.strPartNumber and t.strPricelist='REGULAR' and t.uidPriceBasedID=@uidPriceBasedID) as decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					
					,(Select dteUpdatedDate from dbo.tblInvPriceTracking  where
						dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						GROUP BY a.strPartNumber
						))  as dteUpdatedDate
						,tblInvPrice.strUnit
					--,tblInvPriceTracking.decPriceFrom
					--,tblInvPriceTracking.decPriceTo
					--,COUNT(*) over () AS intRowCount 
		
				FROM [tblInvExt]
				INNER JOIN [tblInv] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				INNER JOIN dbo.tblInvPrice (NOLOCK) ON (dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID or @uidPriceBasedID is null)
				and tblInvPrice.strPartNumber=[tblInv].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = 'REGULAR')
					--AND (
					--	@SQDate BETWEEN tblPriceListsByDate.dteStartDate
					--		AND tblPriceListsByDate.dteFinishDate
					--	)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,decSumOnHand
					,tblInvPrice.strUnit
						,tblInvUOMs.decConversionFactor
						,tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.strPartNumber
					) AS tblTemp1
				WHERE tblTemp1.decSumOnHand <> 0 
			) As Result
					
					WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
			ELSE
			BEGIN
			Select * from (
				Select  0 AS bitSelect,*,
								CASE WHEN @SQApply = 0
								THEN 0 ELSE Cast(decSumOnHand as int) end as intAmount ,ROW_NUMBER () over (order by strCategory) AS RowNumber,COUNT(*) over () AS intRowCount 
								from (
						SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,(Select top 1 t.decSelling from tblInvPrice t where t.strPartNumber=tblInv.strPartNumber and t.strPricelist=@SQPricelist and t.uidPriceBasedID=@SQuidPriceBasedID) as decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					
					,(Select dteUpdatedDate from dbo.tblInvPriceTracking  where
			    dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE (a.uidPriceBasedID = @SQuidPriceBasedID)
						GROUP BY a.strPartNumber
						))  as dteUpdatedDate
					,tblInvPrice.strUnit
					--,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
				FROM [tblInvExt]
				INNER JOIN [tblInv] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				INNER JOIN dbo.tblInvPrice (NOLOCK) ON (dbo.tblInvPrice.uidPriceBasedID = @SQuidPriceBasedID or @SQuidPriceBasedID is null)	
				and tblInvPrice.strPartNumber=[tblInv].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = @SQPricelist)
					
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.strUnit
						,tblInvUOMs.decConversionFactor
						,tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.strPartNumber
					) AS tblTemp2
				WHERE tblTemp2.decSumOnHand <> 0 ) as results  WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
		END
		ELSE
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
				SELECT *
				FROM (
					SELECT 0 AS bitSelect
						,tblInv.strPartNumber
						,tblInv.strDesc
						,tblInv.strCategory
						,tblInv.strSubCategory
						--,tblInvExt.strLocName
						,tblInvPrice.decSelling
						,isnull((
								SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
								FROM tblInvExt
								INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
									AND tblInvExtBin.strLocName = tblInvExt.strLocName
								INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
									AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
								WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
									AND (
										[tblInvLocBin].strBinCode = CASE 
											WHEN (
													@SQBinCode = ''
													OR @SQBinCode = '<<All Bin Locations>>'
													)
												THEN IsNull([tblInvLocBin].strBinCode, '')
											ELSE @SQBinCode
											END
										)
									AND (
										IsNull(tblInvLocBin.strLocName, '') = CASE 
											WHEN (
													@SQLocation = '<<All Locations>>'
													OR @SQLocation = ''
													)
												THEN IsNull(tblInvLocBin.strLocName, '')
											ELSE @SQLocation
											END
										)
									AND tblInvExt.bitInactive = 0
								), 0) AS decSumOnHand
						,(
							CASE 
								WHEN @SQApply = 0
									THEN 0
								ELSE CAST(isnull((
												SELECT Sum(tblInvExtBin.decOnHand)
												FROM tblInvExt
												INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
													AND tblInvExtBin.strLocName = tblInvExt.strLocName
												INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
													AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
												WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
													AND (
														[tblInvLocBin].strBinCode = CASE 
															WHEN (
																	@SQBinCode = ''
																	OR @SQBinCode = '<<All Bin Locations>>'
																	)
																THEN IsNull([tblInvLocBin].strBinCode, '')
															ELSE @SQBinCode
															END
														)
													AND (
														IsNull(tblInvLocBin.strLocName, '') = CASE 
															WHEN (
																	@SQLocation = '<<All Locations>>'
																	OR @SQLocation = ''
																	)
																THEN IsNull(tblInvLocBin.strLocName, '')
															ELSE @SQLocation
															END
														)
													AND tblInvExt.bitInactive = 0
												), 0) AS INT)
								END
							) AS intAmount
						,tblInvPriceTracking.dteUpdatedDate
						--,tblInvPriceTracking.decPriceFrom
						--,tblInvPriceTracking.decPriceTo
						,COUNT(*) over () AS intRowCount 
						,ROW_NUMBER () over (order by tblInv.strCategory) AS RowNumber
						,tblInvPrice.strUnit
					FROM tblInv
					INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					and tblInvPrice.strPartNumber=[tblInv].strPartNumber
					INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
					INNER JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
					INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
					LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
					
					--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
					--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
					--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
					--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
					WHERE (
							tblInv.intType IN (
								1
								,11
								)
							)
						AND (tblInvPrice.strPricelist = 'REGULAR')
						AND (
							@SQDate BETWEEN tblPriceListsByDate.dteStartDate
								AND tblPriceListsByDate.dteFinishDate
							)
						AND (
							IsNull(tblInv.strCategory, '') = CASE 
								WHEN (
										@SQCategory = ''
										OR @SQCategory = '<<ALL Categories>>'
										)
									THEN IsNull(tblInv.strCategory, '')
								ELSE @SQCategory
								END
							)
						AND (
							IsNull(tblInv.strSubCategory, '') = CASE 
								WHEN (
										@SQSubCategory = '<<ALL Sub Categories>>'
										OR @SQSubCategory = ''
										)
									THEN IsNull(tblInv.strSubCategory, '')
								ELSE @SQSubCategory
								END
							)
						AND (
							IsNull(tblInvExt.strLocName, '') = CASE 
								WHEN (
										@SQLocation = '<<All Locations>>'
										OR @SQLocation = ''
										)
									THEN IsNull(tblInvExt.strLocName, '')
								ELSE @SQLocation
								END
							)
						AND (tblInvExt.bitInactive = 0)
						AND (tblInv.bitInactive = 0)
						AND (
							tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
							OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
							OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
							)
						AND tblInvPriceTracking.lngInvPriceTrackID IN (
							SELECT Max(a.lngInvPriceTrackID)
							FROM tblInvPriceTracking a
							INNER JOIN tblPriceListsByDate b ON a.uidPriceBasedID = b.uidPriceBasedID
							WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
								AND (
									@SQDate BETWEEN b.dteStartDate
										AND b.dteFinishDate
									)
								AND (a.strPricelist = 'REGULAR')
							GROUP BY a.strPartNumber
							)
					--AND (tblInvExtBin.decOnHand <> 0)
					GROUP BY tblInv.strPartNumber
						,tblInv.strDesc
						,tblInv.strCategory
						,tblInv.strSubCategory
						,tblInvPrice.decSelling
						,tblInvPriceTracking.dteUpdatedDate
						,tblInvPrice.strUnit
						,tblInvUOMs.decConversionFactor
						,tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.strPartNumber
					--	,tblInvPriceTracking.decPriceFrom
						--,tblInvPriceTracking.decPriceTo
						--	Having decSumOnHand <> 0
						--ORDER BY tblInv.strPartNumber
					) AS tblTemp3
				WHERE tblTemp3.decSumOnHand <> 0 
					AND RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
			ELSE
			BEGIN
				SELECT *
				FROM (
					SELECT 0 AS bitSelect
						,tblInv.strPartNumber
						,tblInv.strDesc
						,tblInv.strCategory
						,tblInv.strSubCategory
						--,tblInvExt.strLocName
						,tblInvPrice.decSelling
						,isnull((
								SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
								FROM tblInvExt
								INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
									AND tblInvExtBin.strLocName = tblInvExt.strLocName
								INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
									AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
								WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
									AND (
										[tblInvLocBin].strBinCode = CASE 
											WHEN (
													@SQBinCode = ''
													OR @SQBinCode = '<<All Bin Locations>>'
													)
												THEN IsNull([tblInvLocBin].strBinCode, '')
											ELSE @SQBinCode
											END
										)
									AND (
										IsNull(tblInvLocBin.strLocName, '') = CASE 
											WHEN (
													@SQLocation = '<<All Locations>>'
													OR @SQLocation = ''
													)
												THEN IsNull(tblInvLocBin.strLocName, '')
											ELSE @SQLocation
											END
										)
									AND tblInvExt.bitInactive = 0
								), 0) AS decSumOnHand
						,(
							CASE 
								WHEN @SQApply = 0
									THEN 0
								ELSE CAST(isnull((
												SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
												FROM tblInvExt
												INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
													AND tblInvExtBin.strLocName = tblInvExt.strLocName
												INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
													AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
												WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
													AND (
														[tblInvLocBin].strBinCode = CASE 
															WHEN (
																	@SQBinCode = ''
																	OR @SQBinCode = '<<All Bin Locations>>'
																	)
																THEN IsNull([tblInvLocBin].strBinCode, '')
															ELSE @SQBinCode
															END
														)
													AND (
														IsNull(tblInvLocBin.strLocName, '') = CASE 
															WHEN (
																	@SQLocation = '<<All Locations>>'
																	OR @SQLocation = ''
																	)
																THEN IsNull(tblInvLocBin.strLocName, '')
															ELSE @SQLocation
															END
														)
													AND tblInvExt.bitInactive = 0
												), 0) AS INT)
								END
							) AS intAmount
						,tblInvPriceTracking.dteUpdatedDate
					--	,tblInvPriceTracking.decPriceFrom
						--,tblInvPriceTracking.decPriceTo
						,COUNT(*) over () AS intRowCount 
						,ROW_NUMBER () over (order by tblInv.strCategory) AS RowNumber
						,tblInvPrice.strUnit
					FROM tblInv
					INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					and tblInvPrice.strPartNumber=[tblInv].strPartNumber
					INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
					INNER JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
					INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
						LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
					--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
					--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
					--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
					--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
					WHERE (
							tblInv.intType IN (
								1
								,11
								)
							)
						AND (tblInvPrice.strPricelist = @SQPricelist)
						AND (tblPriceListsByDate.uidPriceBasedID = @SQuidPriceBasedID)
						AND (
							IsNull(tblInv.strCategory, '') = CASE 
								WHEN (
										@SQCategory = ''
										OR @SQCategory = '<<ALL Categories>>'
										)
									THEN IsNull(tblInv.strCategory, '')
								ELSE @SQCategory
								END
							)
						AND (
							IsNull(tblInv.strSubCategory, '') = CASE 
								WHEN (
										@SQSubCategory = '<<ALL Sub Categories>>'
										OR @SQSubCategory = ''
										)
									THEN IsNull(tblInv.strSubCategory, '')
								ELSE @SQSubCategory
								END
							)
						AND (
							IsNull(tblInvExt.strLocName, '') = CASE 
								WHEN (
										@SQLocation = '<<All Locations>>'
										OR @SQLocation = ''
										)
									THEN IsNull(tblInvExt.strLocName, '')
								ELSE @SQLocation
								END
							)
						AND (tblInvExt.bitInactive = 0)
						AND (tblInv.bitInactive = 0)
						AND (
							tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
							OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
							OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
							)
						AND tblInvPriceTracking.lngInvPriceTrackID IN (
							SELECT Max(a.lngInvPriceTrackID)
							FROM tblInvPriceTracking a
							WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
								AND a.uidPriceBasedID = @SQuidPriceBasedID
							GROUP BY a.strPartNumber
							)
					--AND (tblInvExtBin.decOnHand <> 0)
					GROUP BY tblInv.strPartNumber
						,tblInv.strDesc
						,tblInv.strCategory
						,tblInv.strSubCategory
						,tblInvPrice.decSelling
						,tblInvPriceTracking.dteUpdatedDate
						,tblInvPrice.strUnit
						,tblInvUOMs.decConversionFactor
						,tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.strPartNumber
					--	,tblInvPriceTracking.decPriceFrom
						--,tblInvPriceTracking.decPriceTo
						--Having decSumOnHand <> 0
						--ORDER BY tblInv.strPartNumber
					) AS tblTemp4
				WHERE tblTemp4.decSumOnHand <> 0 
					AND RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetBulkLabelPrintingItemsSerial]    Script Date: 26/06/2020 15:00:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetBulkLabelPrintingItemsSerial] 
	 @SQDate SMALLDATETIME = NULL
	,@SQApply BIT = 0
	,@SQCategory NVARCHAR(Max) = ''
	,@SQSubCategory NVARCHAR(Max) = ''
	,@SQLocation NVARCHAR(Max) = ''
	,@SQSearch NVARCHAR(100) = ''
	,@SQWithPrice BIT = 0
	,@SQPricelist NVARCHAR(100) = 'REGULAR'
	,@SQuidPriceBasedID NVARCHAR(100) = 0
	,@SQPriceSince DATETIME
	,@SQShowPrices BIT = 0
	,@SQShowOnHandQtyOnly BIT = 0
	,@SQBinCode NVARCHAR(Max) = ''
	,@SQPartNumber NVARCHAR(Max) = ''
	,@PageSize INT = 25
	,@PageNum  INT =1
AS
BEGIN

  DECLARE @Offset INT
  SET @Offset = @PageSize * (@PageNum-1)

DECLARE @SplitWord TABLE(wordRank INT, word VARCHAR(200))
SET @SQSearch = LTRIM(RTRIM(@SQSearch)) -- Remove white space
DECLARE @WordSeperator VARCHAR(1) =' '

  DECLARE @TotalWord Int=0
  DECLARE @WordCount Int=1
  DECLARE @Keyword1 VARCHAR(100)=''
  DECLARE @Keyword2 VARCHAR(100)=''
  DECLARE @Keyword3 VARCHAR(100)=''
  DECLARE @Keyword4 VARCHAR(100)=''
  DECLARE @Keyword5 VARCHAR(100)=''
  DECLARE @Keyword6 VARCHAR(100)=''
  DECLARE @Keyword7 VARCHAR(100)=''
  DECLARE @Keyword8 VARCHAR(100)=''
  DECLARE @Keyword9 VARCHAR(100)=''
  DECLARE @Keyword10 VARCHAR(100)=''

 IF(CHARINDEX(',',@SQSearch)) > 0 
	BEGIN
		 SET @WordSeperator=','
	END  

INSERT INTO @SplitWord select Id, [Data] from dbo.split(@SQSearch, @WordSeperator)

SET @TotalWord=(SELECT COUNT(*) FROM @SplitWord)

While(@WordCount<=@TotalWord)
Begin
		IF @WordCount=1 
			BEGIN
				SET @Keyword1=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=2 
			BEGIN
				SET @Keyword2=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=3 
			BEGIN
				SET @Keyword3=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=4 
			BEGIN
				SET @Keyword4=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=5 
			BEGIN
				SET @Keyword5=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=6 
			BEGIN
				SET @Keyword6=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=7 
			BEGIN
				SET @Keyword7=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=8 
			BEGIN
				SET @Keyword8=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=9
			BEGIN
				SET @Keyword9=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=10 
			BEGIN
				SET @Keyword10=(Select Word from @SplitWord Where wordRank=@WordCount)
			END

	SET @WordCount=@WordCount+1
End
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	IF (@SQShowOnHandQtyOnly = 0)
	BEGIN
		IF (@SQShowPrices = 0)
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
				Select * from (
				SELECT 0 AS bitSelect
					,tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,tblInvPrice.decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(
						CASE 
							WHEN @SQApply = 0
								THEN 0
							ELSE CAST(isnull((
											SELECT Sum(tblInvExtBin.decOnHand)
											FROM tblInvExt
											INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
												AND tblInvExtBin.strLocName = tblInvExt.strLocName
											INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
												AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
											WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
												AND (
													[tblInvLocBin].strBinCode = CASE 
														WHEN (
																@SQBinCode = ''
																OR @SQBinCode = '<<All Bin Locations>>'
																)
															THEN IsNull([tblInvLocBin].strBinCode, '')
														ELSE @SQBinCode
														END
													)
												AND (
													IsNull(tblInvLocBin.strLocName, '') = CASE 
														WHEN (
																@SQLocation = '<<All Locations>>'
																OR @SQLocation = ''
																)
															THEN IsNull(tblInvLocBin.strLocName, '')
														ELSE @SQLocation
														END
													)
												AND tblInvExt.bitInactive = 0
											), 0) AS INT)
							END
						) AS intAmount
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
					,tblInvPrice.strUnit
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM tblInv
				INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				LEFT JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						GROUP BY a.strPartNumber
						)
				INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
				--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
				--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
				--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = 'REGULAR')
					AND (
						@SQDate BETWEEN tblPriceListsByDate.dteStartDate
							AND tblPriceListsByDate.dteFinishDate
						)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					AND (
						tblInv.strPartNumber IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@SQPartNumber, ',')
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.decSelling
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,tblInvPrice.strUnit
				,tblInvUOMs.decConversionFactor
				,tblInvUOMs.strConversionType
				,dbo.tblInvUOMs.strPartNumber
					) as result WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
			ELSE
			BEGIN
			Select * from (
				SELECT 0 AS bitSelect
					,tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,tblInvPrice.decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(
						CASE 
							WHEN @SQApply = 0
								THEN 0
							ELSE CAST(isnull((
											SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
											FROM tblInvExt
											INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
												AND tblInvExtBin.strLocName = tblInvExt.strLocName
											INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
												AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
											WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
												AND (
													[tblInvLocBin].strBinCode = CASE 
														WHEN (
																@SQBinCode = ''
																OR @SQBinCode = '<<All Bin Locations>>'
																)
															THEN IsNull([tblInvLocBin].strBinCode, '')
														ELSE @SQBinCode
														END
													)
												AND (
													IsNull(tblInvLocBin.strLocName, '') = CASE 
														WHEN (
																@SQLocation = '<<All Locations>>'
																OR @SQLocation = ''
																)
															THEN IsNull(tblInvLocBin.strLocName, '')
														ELSE @SQLocation
														END
													)
												AND tblInvExt.bitInactive = 0
											), 0) AS INT)
							END
						) AS intAmount
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
					,tblInvPrice.strUnit
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM tblInv
				INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				LEFT JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE (a.uidPriceBasedID = @SQuidPriceBasedID)
						GROUP BY a.strPartNumber
						)
				INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
				--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
				--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
				--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = @SQPricelist)
					AND (tblPriceListsByDate.uidPriceBasedID = @SQuidPriceBasedID)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					AND (
						tblInv.strPartNumber IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@SQPartNumber, ',')
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.decSelling
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,tblInvPrice.strUnit
				,tblInvUOMs.decConversionFactor
				,tblInvUOMs.strConversionType
				,dbo.tblInvUOMs.strPartNumber
					) as result WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
				
			END
		END
		ELSE
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
				Select * from (
				SELECT 0 AS bitSelect
					,tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,tblInvPrice.decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(
						CASE 
							WHEN @SQApply = 0
								THEN 0
							ELSE CAST(isnull((
											SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
											FROM tblInvExt
											INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
												AND tblInvExtBin.strLocName = tblInvExt.strLocName
											INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
												AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
											WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
												AND (
													[tblInvLocBin].strBinCode = CASE 
														WHEN (
																@SQBinCode = ''
																OR @SQBinCode = '<<All Bin Locations>>'
																)
															THEN IsNull([tblInvLocBin].strBinCode, '')
														ELSE @SQBinCode
														END
													)
												AND (
													IsNull(tblInvLocBin.strLocName, '') = CASE 
														WHEN (
																@SQLocation = '<<All Locations>>'
																OR @SQLocation = ''
																)
															THEN IsNull(tblInvLocBin.strLocName, '')
														ELSE @SQLocation
														END
													)
												AND tblInvExt.bitInactive = 0
											), 0) AS INT)
							END
						) AS intAmount
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
					,tblInvPrice.strUnit
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM tblInv
				INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				INNER JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
				--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
				--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
				--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = 'REGULAR')
					AND (
						@SQDate BETWEEN tblPriceListsByDate.dteStartDate
							AND tblPriceListsByDate.dteFinishDate
						)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						INNER JOIN tblPriceListsByDate b ON a.uidPriceBasedID = b.uidPriceBasedID
						WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
							AND (
								@SQDate BETWEEN b.dteStartDate
									AND b.dteFinishDate
								)
							AND (a.strPricelist = 'REGULAR')
						GROUP BY a.strPartNumber
						)
					AND (
						tblInv.strPartNumber IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@SQPartNumber, ',')
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.decSelling
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,tblInvPrice.strUnit
				,tblInvUOMs.decConversionFactor
				,tblInvUOMs.strConversionType
				,dbo.tblInvUOMs.strPartNumber
				) as result WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
			ELSE
			BEGIN
			Select * from (
				SELECT 0 AS bitSelect
					,tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,tblInvPrice.decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(
						CASE 
							WHEN @SQApply = 0
								THEN 0
							ELSE CAST(isnull((
											SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
											FROM tblInvExt
											INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
												AND tblInvExtBin.strLocName = tblInvExt.strLocName
											INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
												AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
											WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
												AND (
													[tblInvLocBin].strBinCode = CASE 
														WHEN (
																@SQBinCode = ''
																OR @SQBinCode = '<<All Bin Locations>>'
																)
															THEN IsNull([tblInvLocBin].strBinCode, '')
														ELSE @SQBinCode
														END
													)
												AND (
													IsNull(tblInvLocBin.strLocName, '') = CASE 
														WHEN (
																@SQLocation = '<<All Locations>>'
																OR @SQLocation = ''
																)
															THEN IsNull(tblInvLocBin.strLocName, '')
														ELSE @SQLocation
														END
													)
												AND tblInvExt.bitInactive = 0
											), 0) AS INT)
							END
						) AS intAmount
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
					,tblInvPrice.strUnit
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM tblInv
				INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				INNER JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
				--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
				--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
				--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = @SQPricelist)
					AND (tblPriceListsByDate.uidPriceBasedID = @SQuidPriceBasedID)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
							AND a.uidPriceBasedID = @SQuidPriceBasedID
						GROUP BY a.strPartNumber
						)
					AND (
						tblInv.strPartNumber IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@SQPartNumber, ',')
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.decSelling
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,tblInvPrice.strUnit
				,tblInvUOMs.decConversionFactor
				,tblInvUOMs.strConversionType
				,dbo.tblInvUOMs.strPartNumber
				) as result WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
		END
	END
	ELSE
	BEGIN
		IF (@SQShowPrices = 0)
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
			Select * from (
				SELECT 0 AS bitSelect
					,tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,tblInvPrice.decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(
						CASE 
							WHEN @SQApply = 0
								THEN 0
							ELSE CAST(isnull((
											SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
											FROM tblInvExt
											INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
												AND tblInvExtBin.strLocName = tblInvExt.strLocName
											INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
												AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
											WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
												AND (
													[tblInvLocBin].strBinCode = CASE 
														WHEN (
																@SQBinCode = ''
																OR @SQBinCode = '<<All Bin Locations>>'
																)
															THEN IsNull([tblInvLocBin].strBinCode, '')
														ELSE @SQBinCode
														END
													)
												AND (
													IsNull(tblInvLocBin.strLocName, '') = CASE 
														WHEN (
																@SQLocation = '<<All Locations>>'
																OR @SQLocation = ''
																)
															THEN IsNull(tblInvLocBin.strLocName, '')
														ELSE @SQLocation
														END
													)
												AND tblInvExt.bitInactive = 0
											), 0) AS INT)
							END
						) AS intAmount
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
					,tblInvPrice.strUnit
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM tblInv
				INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				LEFT JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						GROUP BY a.strPartNumber
						)
				INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
				--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
				--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
				--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = 'REGULAR')
					AND (
						@SQDate BETWEEN tblPriceListsByDate.dteStartDate
							AND tblPriceListsByDate.dteFinishDate
						)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					--AND (tblInvExtBin.decOnHand <> 0)
					AND (
						tblInv.strPartNumber IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@SQPartNumber, ',')
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.decSelling
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,tblInvPrice.strUnit
				,tblInvUOMs.decConversionFactor
				,tblInvUOMs.strConversionType
				,dbo.tblInvUOMs.strPartNumber
				--ORDER BY tblInv.strPartNumber
			) as tblTemp1 where tblTemp1.decSumOnHand<>0 AND  RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber 
			END
			ELSE
			BEGIN
			Select * from (
				SELECT 0 AS bitSelect
					,tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,tblInvPrice.decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(
						CASE 
							WHEN @SQApply = 0
								THEN 0
							ELSE CAST(isnull((
											SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
											FROM tblInvExt
											INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
												AND tblInvExtBin.strLocName = tblInvExt.strLocName
											INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
												AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
											WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
												AND (
													[tblInvLocBin].strBinCode = CASE 
														WHEN (
																@SQBinCode = ''
																OR @SQBinCode = '<<All Bin Locations>>'
																)
															THEN IsNull([tblInvLocBin].strBinCode, '')
														ELSE @SQBinCode
														END
													)
												AND (
													IsNull(tblInvLocBin.strLocName, '') = CASE 
														WHEN (
																@SQLocation = '<<All Locations>>'
																OR @SQLocation = ''
																)
															THEN IsNull(tblInvLocBin.strLocName, '')
														ELSE @SQLocation
														END
													)
												AND tblInvExt.bitInactive = 0
											), 0) AS INT)
							END
						) AS intAmount
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
					,tblInvPrice.strUnit
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM tblInv
				INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				LEFT JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE (a.uidPriceBasedID = @SQuidPriceBasedID)
						GROUP BY a.strPartNumber
						)
				INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
				--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
				--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
				--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = @SQPricelist)
					AND (tblPriceListsByDate.uidPriceBasedID = @SQuidPriceBasedID)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
				--	AND (tblInvExtBin.decOnHand <> 0)
					AND (
						tblInv.strPartNumber IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@SQPartNumber, ',')
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.decSelling
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,tblInvPrice.strUnit
				,tblInvUOMs.decConversionFactor
				,tblInvUOMs.strConversionType
				,dbo.tblInvUOMs.strPartNumber
			--	ORDER BY tblInv.strPartNumber
			) as tblTemp2 where tblTemp2.decSumOnHand<>0 AND  RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber 
			END
		END
		ELSE
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
			Select * from (
				SELECT 0 AS bitSelect
					,tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,tblInvPrice.decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(
						CASE 
							WHEN @SQApply = 0
								THEN 0
							ELSE CAST(isnull((
											SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
											FROM tblInvExt
											INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
												AND tblInvExtBin.strLocName = tblInvExt.strLocName
											INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
												AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
											WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
												AND (
													[tblInvLocBin].strBinCode = CASE 
														WHEN (
																@SQBinCode = ''
																OR @SQBinCode = '<<All Bin Locations>>'
																)
															THEN IsNull([tblInvLocBin].strBinCode, '')
														ELSE @SQBinCode
														END
													)
												AND (
													IsNull(tblInvLocBin.strLocName, '') = CASE 
														WHEN (
																@SQLocation = '<<All Locations>>'
																OR @SQLocation = ''
																)
															THEN IsNull(tblInvLocBin.strLocName, '')
														ELSE @SQLocation
														END
													)
												AND tblInvExt.bitInactive = 0
											), 0) AS INT)
							END
						) AS intAmount
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
					,tblInvPrice.strUnit
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM tblInv
				INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				INNER JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
				--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
				--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
				--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = 'REGULAR')
					AND (
						@SQDate BETWEEN tblPriceListsByDate.dteStartDate
							AND tblPriceListsByDate.dteFinishDate
						)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						INNER JOIN tblPriceListsByDate b ON a.uidPriceBasedID = b.uidPriceBasedID
						WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
							AND (
								@SQDate BETWEEN b.dteStartDate
									AND b.dteFinishDate
								)
							AND (a.strPricelist = 'REGULAR')
						GROUP BY a.strPartNumber
						)
					--AND (tblInvExtBin.decOnHand <> 0)
					AND (
						tblInv.strPartNumber IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@SQPartNumber, ',')
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.decSelling
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,tblInvPrice.strUnit
				,tblInvUOMs.decConversionFactor
				,tblInvUOMs.strConversionType
				,dbo.tblInvUOMs.strPartNumber
				--ORDER BY tblInv.strPartNumber
			) as tblTemp3 where tblTemp3.decSumOnHand<>0 AND  RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber 
			END
			ELSE
			BEGIN
			Select * from (
				SELECT 0 AS bitSelect
					,tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,tblInvPrice.decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(
						CASE 
							WHEN @SQApply = 0
								THEN 0
							ELSE CAST(isnull((
											SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
											FROM tblInvExt
											INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
												AND tblInvExtBin.strLocName = tblInvExt.strLocName
											INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
												AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
											WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
												AND (
													[tblInvLocBin].strBinCode = CASE 
														WHEN (
																@SQBinCode = ''
																OR @SQBinCode = '<<All Bin Locations>>'
																)
															THEN IsNull([tblInvLocBin].strBinCode, '')
														ELSE @SQBinCode
														END
													)
												AND (
													IsNull(tblInvLocBin.strLocName, '') = CASE 
														WHEN (
																@SQLocation = '<<All Locations>>'
																OR @SQLocation = ''
																)
															THEN IsNull(tblInvLocBin.strLocName, '')
														ELSE @SQLocation
														END
													)
												AND tblInvExt.bitInactive = 0
											), 0) AS INT)
							END
						) AS intAmount
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
					,tblInvPrice.strUnit
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM tblInv
				INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				INNER JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
				--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
				--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
				--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = @SQPricelist)
					AND (tblPriceListsByDate.uidPriceBasedID = @SQuidPriceBasedID)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
							AND a.uidPriceBasedID = @SQuidPriceBasedID
						GROUP BY a.strPartNumber
						)
					--AND (tblInvExtBin.decOnHand <> 0)
					AND (
						tblInv.strPartNumber IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@SQPartNumber, ',')
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.decSelling
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,tblInvPrice.strUnit
				,tblInvUOMs.decConversionFactor
				,tblInvUOMs.strConversionType
				,dbo.tblInvUOMs.strPartNumber
				--ORDER BY tblInv.strPartNumber
				) as tblTemp4 where tblTemp4.decSumOnHand<>0 AND  RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber 
			END
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetClosedPickTicketsData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetClosedPickTicketsData]
	@WHCPTJournalStartDate AS datetime = NULL,
	@WHCPTJournalEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT strOrdDocID , dteJournalDate , dteRequired , strUserName , strCustName , strReference , CASE WHEN (SELECT COUNT(Z.strLocation) FROM (SELECT strLocation FROM tblOrderDocDT WHERE (strOrdDocID = tblOrderDoc.strOrdDocID) GROUP BY strLocation) Z) > 1 THEN '<MULTIPLE>' ELSE ISNULL((SELECT strLocation FROM tblOrderDocDT WHERE (strOrdDocID = tblOrderDoc.strOrdDocID) GROUP BY strLocation),'') END AS Location, ISNULL((SELECT CAST(intDept AS NVarchar(4)) + ' ' + strDesc FROM tblDepartments WHERE (intDept = tblOrderDoc.intDept)),'') AS Department, (SELECT COUNT(strOrdDocID) FROM tblOrderDocDT WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)) AS TotalItems, (SELECT COUNT(strOrdDocID) FROM tblOrderDocDT WHERE (strOrdDocID = tblOrderDoc.strOrdDocID) AND (decQtyRemaining > 0)) AS ItemsRemain, 'Picked' AS PickStatus, CASE WHEN '%%' = '%%' THEN 1 ELSE ISNULL((SELECT COUNT(strLocation) FROM tblOrderDocDT WHERE (strOrdDocID = tblOrderDoc.strOrdDocID) AND (strLocation = '%%') GROUP BY strLocation),0) END FROM tblOrderDoc WHERE (intDocType = 1) AND (bitCleared = 0) AND (strOrdDocID IN (SELECT strOrdDocID FROM tblPickTickets WHERE bitCleared = 1 AND bitPicked = 1)) AND dteJournalDate BETWEEN @WHCPTJournalStartDate AND @WHCPTJournalEndDate ORDER BY strOrdDocID DESC
END
GO
/****** Object:  StoredProcedure [dbo].[prGetCustomerCategoryData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetCustomerCategoryData]
	
AS
BEGIN
	SET NOCOUNT ON;

	SELECT strCustCategory, strDesc FROM tblCustomerCat WHERE bitInactive = 0
END
GO
/****** Object:  StoredProcedure [dbo].[prGetCustomerData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetCustomerData]
	@IsAllCustomerCategory AS BIT = NULL,
	@IsAllCustomer AS BIT = NULL,
	@CustName AS nvarchar(50) = NULL,
	@CustCategory AS nvarchar(20) = NULL,
	@SQUserName AS nvarchar(20) = NULL,
	@BPToolsMode AS BIT = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllCustomerCategory = 1 AND @IsAllCustomer = 1
		BEGIN
			IF @BPToolsMode = 0
				BEGIN
					SELECT [strCustName] AS CustomerNumber
									,[strCustDesc] AS CustomerName
									,[strCustCategory] AS Category
									,[decYTDPurch] AS Purchases
									,[strContact] AS Contact
									,[strPhone] AS TelephoneNumber
								FROM [dbo].[tblCustomers] 
							WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName =  @SQUserName ))
						ORDER BY strCustName 
				END
			ELSE
				BEGIN
					SELECT [strCustName] AS CustomerNumber
								,[strCustDesc] AS CustomerName
								,[strCustCategory] AS Category
								,[decYTDPurch] AS Purchases
								,[strContact] AS Contact
								,[strPhone] AS TelephoneNumber
							FROM [dbo].[tblCustomers] 
						ORDER BY strCustName  
				END
		END
	ELSE IF @IsAllCustomerCategory = 1 AND @IsAllCustomer = 0
		BEGIN
			IF @BPToolsMode = 0
				BEGIN
					SELECT [strCustName] AS CustomerNumber
									,[strCustDesc] AS CustomerName
									,[strCustCategory] AS Category
									,[decYTDPurch] AS Purchases
									,[strContact] AS Contact
									,[strPhone] AS TelephoneNumber
								FROM [dbo].[tblCustomers]  
								WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) AND tblCustomers.strCustName = @CustName  
							ORDER BY strCustName
				END
			ELSE
				BEGIN
					SELECT [strCustName] AS CustomerNumber
									,[strCustDesc] AS CustomerName
									,[strCustCategory] AS Category
									,[decYTDPurch] AS Purchases
									,[strContact] AS Contact
									,[strPhone] AS TelephoneNumber
								FROM [dbo].[tblCustomers] 
								WHERE tblCustomers.strCustName =  @CustName
							ORDER BY strCustName 
				END
		END
	ELSE IF @IsAllCustomerCategory = 0 AND @IsAllCustomer = 1
		BEGIN
			IF @BPToolsMode = 0
				BEGIN
					SELECT [strCustName] AS CustomerNumber
									,[strCustDesc] AS CustomerName
									,[strCustCategory] AS Category
									,[decYTDPurch] AS Purchases
									,[strContact] AS Contact
									,[strPhone] AS TelephoneNumber
								FROM [dbo].[tblCustomers]
								WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName =  @SQUserName )) AND tblCustomers.strCustCategory =  @CustCategory  
								ORDER BY strCustName 
				END
			ELSE
				BEGIN
					SELECT [strCustName] AS CustomerNumber
									,[strCustDesc] AS CustomerName
									,[strCustCategory] AS Category
									,[decYTDPurch] AS Purchases
									,[strContact] AS Contact
									,[strPhone] AS TelephoneNumber
								FROM [dbo].[tblCustomers]  
								WHERE tblCustomers.strCustCategory =  @CustCategory 
							ORDER BY strCustName
				END
		END
	ELSE IF @IsAllCustomerCategory = 0 AND @IsAllCustomer = 0
		BEGIN
			IF @BPToolsMode = 0
				BEGIN
					SELECT [strCustName] AS CustomerNumber
								,[strCustDesc] AS CustomerName
								,[strCustCategory] AS Category
								,[decYTDPurch] AS Purchases
								,[strContact] AS Contact
								,[strPhone] AS TelephoneNumber
							FROM [dbo].[tblCustomers] 
							WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName =  @SQUserName )) AND tblCustomers.strCustCategory =  @CustCategory  AND tblCustomers.strCustName =  @CustName   
							ORDER BY strCustName
				END
			ELSE
				BEGIN
					SELECT [strCustName] AS CustomerNumber
								,[strCustDesc] AS CustomerName
								,[strCustCategory] AS Category
								,[decYTDPurch] AS Purchases
								,[strContact] AS Contact
								,[strPhone] AS TelephoneNumber
							FROM [dbo].[tblCustomers]  
							WHERE tblCustomers.strCustCategory = @CustCategory  AND tblCustomers.strCustName =  @CustName  
							ORDER BY strCustName 
				END
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetCustomerSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetCustomerSales]
	@SQstrCustomer AS nvarchar(50) = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT DATEPART(yyyy, tblJournal.dteJournalDate) AS Year, DATEPART(m,tblJournal.dteJournalDate) AS Month, ISNULL(SUM(tblJournalEnt.decAmount),0) AS Revenue FROM tblJournal INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID WHERE tblJournalEnt.intGLNumber IN (SELECT intGLNumber FROM tblAccounts WHERE (intAccType = 4)) AND tblJournal.strCuVeGeInID = @SQstrCustomer AND tblJournal.intModule = 2 AND tblJournal.intEntryType = 1 GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate) ORDER BY DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate)
END
GO
/****** Object:  StoredProcedure [dbo].[prGetCustomersData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetCustomersData]
	@IsAllCustomerCategory AS BIT = NULL,
	@SQCustCategory AS nvarchar(20) = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllCustomerCategory = 1 
	BEGIN
		SELECT strCustName, strCustDesc FROM tblCustomers WHERE bitInactive = 0
	END
	ELSE IF @IsAllCustomerCategory = 0 
	BEGIN
		SELECT strCustName, strCustDesc FROM tblCustomers WHERE bitInactive = 0 AND strCustCategory = @SQCustCategory
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetDepreciatableAssets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prGetDepreciatableAssets]
AS
BEGIN
	SELECT
		tblAssetTypes.strCode,
		tblAssetTypes.intDepAccNo,
		ACC.strDesc AS [AccumulatedAccDesc],
		tblAssetTypes.intExpAccNo,
		DEP.strDesc AS [DepreciationDesc],
		ISNULL(tblAssets.dteDepreciateFrom, tblAssets.dteLastDeprecationDate) AS [dteDepreciateFrom],
		ISNULL(tblAssets.decRemainingValue, tblAssets.decDepreciableValue) AS [DepreciableValue],
		tblAssets.strDepreciationCode1,
		tblAssetTypes.blnUpdateGLCode1,
		tblAssets.strDepreciationCode2,
		tblAssetTypes.blnUpdateGLCode2,
		tblAssets.strDepreciationCode3,
		tblAssetTypes.blnUpdateGLCode3,
		tblAssets.strDepreciationCode4,
		tblAssetTypes.blnUpdateGLCode4,
		tblAssets.strDepreciationCode5,
		tblAssetTypes.blnUpdateGLCode5,
		tblAssets.strAssetCode,
		tblAssets.decPurchasePrice
	FROM tblAssets
		INNER JOIN tblAssetTypes ON tblAssets.strAssetTypeCode = tblAssetTypes.strCode
		INNER JOIN tblAccounts ACC ON tblAssetTypes.intDepAccNo = ACC.intGLNumber
		INNER JOIN tblAccounts DEP ON tblAssetTypes.intExpAccNo = DEP.intGLNumber
	WHERE tblAssets.dteDisposalDate IS NULL AND tblAssets.bitInactive = 0 
END
GO
/****** Object:  StoredProcedure [dbo].[prGetDocumentCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetDocumentCount]
(
        @strDocumentNumber nvarchar(100) = null,
        @bitItemLine bit = NULL,
        @strType nvarchar(100) = ''
)
AS
BEGIN
  SET NOCOUNT ON;

  SELECT 
    COUNT(strDocumentNumber) AS 'DocumentCount'
  FROM 
    tblDocuments 
  WHERE 
(strDocumentNumber in (@strDocumentNumber) OR @strDocumentNumber IS NULL)
AND bitItemLine IN (0,ISNULL(@bitItemLine,0))
    AND (strType = @strType OR (@strType = '' AND strType IS NULL))
 
END
GO
/****** Object:  StoredProcedure [dbo].[prGetDueBalancesDataDocumentDate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetDueBalancesDataDocumentDate]
	@IsAllCustomerCategory AS BIT = NULL,
	@IsAllCustomer AS BIT = NULL,
	@CustName AS nvarchar(50) = NULL,
	@CustCategory AS nvarchar(20) = NULL,
	@FromDate AS datetime = NULL,
	@SQUserName AS nvarchar(20) = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllCustomerCategory = 1 AND @IsAllCustomer = 0
		BEGIN
			SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName
									,tblCustomers.strCustDesc AS CustDesc
									,tblCustomers.strTerm AS Term
									,MASTERTABLE.dteDueDate AS DueDate
									,SUM(tblCustTransDT.decAmount) AS Amount
									,MASTERTABLE.dteJournalDate AS JournalDate
									,ISNULL(tblCustomers.strCustCategory, '') AS CustCate
									,DATEPART(m, MASTERTABLE.dteJournalDate) AS Month
									,DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS Year
									,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) AS [Month-Year]
								FROM tblCustTrans AS MASTERTABLE
								INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))
								INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
								WHERE tblCustomers.strCustCategory IN (
										SELECT tblCustomerCat.strCustCategory
										FROM tblCustomerCat
										LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
										WHERE ISNULL((
													SELECT COUNT(tblCustomerCatSec.strCustCategory)
													FROM tblCustomerCatSec
													WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
													), 0) = 0
											OR (
												ISNULL((
														SELECT COUNT(tblCustomerCatSec.strCustCategory)
														FROM tblCustomerCatSec
														WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
														), 0) > 0
												AND tblCustomerCatSec.strUserName = @SQUserName 
												)
										)
									AND tblCustTransDT.bitReversed = 0
									AND tblCustTransDT.dteJournalDate <=  @FromDate  
									AND tblCustTransDT.lngCustTrID NOT IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @FromDate  
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										) 
									AND tblcustomers.strCustName =  @CustName
								GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc ,tblCustomers.strTerm , MASTERTABLE.dteDueDate , MASTERTABLE.dteJournalDate , tblCustomers.strCustCategory, DATEPART(m, MASTERTABLE.dteJournalDate), DATEPART(yyyy, MASTERTABLE.dteJournalDate), CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) ORDER BY tblCustomers.strTerm , LTRIM(RTRIM(MASTERTABLE.strCustName)) 
		END
	ELSE IF @IsAllCustomerCategory = 0 AND @IsAllCustomer = 1
		BEGIN
			SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName
									,tblCustomers.strCustDesc AS CustDesc
									,tblCustomers.strTerm AS Term
									,MASTERTABLE.dteDueDate AS DueDate
									,SUM(tblCustTransDT.decAmount) AS Amount
									,MASTERTABLE.dteJournalDate AS JournalDate
									,ISNULL(tblCustomers.strCustCategory, '') AS CustCate
									,DATEPART(m, MASTERTABLE.dteJournalDate) AS Month
									,DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS Year
									,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) AS [Month-Year]
								FROM tblCustTrans AS MASTERTABLE
								INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))
								INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
								WHERE tblCustomers.strCustCategory IN (
										SELECT tblCustomerCat.strCustCategory
										FROM tblCustomerCat
										LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
										WHERE ISNULL((
													SELECT COUNT(tblCustomerCatSec.strCustCategory)
													FROM tblCustomerCatSec
													WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
													), 0) = 0
											OR (
												ISNULL((
														SELECT COUNT(tblCustomerCatSec.strCustCategory)
														FROM tblCustomerCatSec
														WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
														), 0) > 0
												AND tblCustomerCatSec.strUserName =  @SQUserName   
												)
										)
									AND tblCustTransDT.bitReversed = 0
									AND tblCustTransDT.dteJournalDate <= @FromDate
									AND tblCustTransDT.lngCustTrID NOT IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @FromDate    
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										) 
										AND tblCustomers.strCustCategory =  @CustCategory 
										GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc ,tblCustomers.strTerm , MASTERTABLE.dteDueDate , MASTERTABLE.dteJournalDate , tblCustomers.strCustCategory, DATEPART(m, MASTERTABLE.dteJournalDate), DATEPART(yyyy, MASTERTABLE.dteJournalDate), CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) ORDER BY tblCustomers.strTerm , LTRIM(RTRIM(MASTERTABLE.strCustName)) 
		END
	ELSE IF @IsAllCustomerCategory = 0 AND @IsAllCustomer = 0
		BEGIN
			SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName
									,tblCustomers.strCustDesc AS CustDesc
									,tblCustomers.strTerm AS Term
									,MASTERTABLE.dteDueDate AS DueDate
									,SUM(tblCustTransDT.decAmount) AS Amount
									,MASTERTABLE.dteJournalDate AS JournalDate
									,ISNULL(tblCustomers.strCustCategory, '') AS CustCate
									,DATEPART(m, MASTERTABLE.dteJournalDate) AS Month
									,DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS Year
									,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) AS [Month-Year]
								FROM tblCustTrans AS MASTERTABLE
								INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))
								INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
								WHERE tblCustomers.strCustCategory IN (
										SELECT tblCustomerCat.strCustCategory
										FROM tblCustomerCat
										LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
										WHERE ISNULL((
													SELECT COUNT(tblCustomerCatSec.strCustCategory)
													FROM tblCustomerCatSec
													WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
													), 0) = 0
											OR (
												ISNULL((
														SELECT COUNT(tblCustomerCatSec.strCustCategory)
														FROM tblCustomerCatSec
														WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
														), 0) > 0
												AND tblCustomerCatSec.strUserName = @SQUserName 
												)
										)
									AND tblCustTransDT.bitReversed = 0
									AND tblCustTransDT.dteJournalDate <= @FromDate  
									AND tblCustTransDT.lngCustTrID NOT IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @FromDate 
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										) 
										AND tblCustomers.strCustCategory = @CustCategory AND tblcustomers.strCustName =  @CustName 
										GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc ,tblCustomers.strTerm , MASTERTABLE.dteDueDate , MASTERTABLE.dteJournalDate , tblCustomers.strCustCategory, DATEPART(m, MASTERTABLE.dteJournalDate), DATEPART(yyyy, MASTERTABLE.dteJournalDate), CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) ORDER BY tblCustomers.strTerm , LTRIM(RTRIM(MASTERTABLE.strCustName)) 
		END
	ELSE IF @IsAllCustomerCategory = 1 AND @IsAllCustomer = 1
		BEGIN
			SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName
									,tblCustomers.strCustDesc AS CustDesc
									,tblCustomers.strTerm AS Term
									,MASTERTABLE.dteDueDate AS DueDate
									,SUM(tblCustTransDT.decAmount) AS Amount
									,MASTERTABLE.dteJournalDate AS JournalDate
									,ISNULL(tblCustomers.strCustCategory, '') AS CustCate
									,DATEPART(m, MASTERTABLE.dteJournalDate) AS Month
									,DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS Year
									,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) AS [Month-Year]
								FROM tblCustTrans AS MASTERTABLE
								INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))
								INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
								WHERE tblCustomers.strCustCategory IN (
										SELECT tblCustomerCat.strCustCategory
										FROM tblCustomerCat
										LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
										WHERE ISNULL((
													SELECT COUNT(tblCustomerCatSec.strCustCategory)
													FROM tblCustomerCatSec
													WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
													), 0) = 0
											OR (
												ISNULL((
														SELECT COUNT(tblCustomerCatSec.strCustCategory)
														FROM tblCustomerCatSec
														WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
														), 0) > 0
												AND tblCustomerCatSec.strUserName = @SQUserName   
												)
										)
									AND tblCustTransDT.bitReversed = 0
									AND tblCustTransDT.dteJournalDate <= @FromDate  
									AND tblCustTransDT.lngCustTrID NOT IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <=  @FromDate    
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										)
									GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc ,tblCustomers.strTerm , MASTERTABLE.dteDueDate , MASTERTABLE.dteJournalDate , tblCustomers.strCustCategory, DATEPART(m, MASTERTABLE.dteJournalDate), DATEPART(yyyy, MASTERTABLE.dteJournalDate), CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) ORDER BY tblCustomers.strTerm , LTRIM(RTRIM(MASTERTABLE.strCustName)) 
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetDueBalancesDataDueDate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetDueBalancesDataDueDate]
	@IsAllCustomerCategory AS BIT = NULL,
	@IsAllCustomer AS BIT = NULL,
	@CustName AS nvarchar(50) = NULL,
	@CustCategory AS nvarchar(20) = NULL,
	@FromDate AS datetime = NULL,
	@SQUserName AS nvarchar(20) = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllCustomerCategory = 1 AND @IsAllCustomer = 0
		BEGIN
			SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName
										,tblCustomers.strCustDesc AS CustDesc
										,tblCustomers.strTerm AS Term
										,MASTERTABLE.dteDueDate AS DueDate
										,SUM(tblCustTransDT.decAmount) AS Amount
										,MASTERTABLE.dteJournalDate AS JournalDate
										,ISNULL(tblCustomers.strCustCategory, '') AS CustCate
										,DATEPART(m, MASTERTABLE.dteDueDate) AS Month
										,DATEPART(yyyy, MASTERTABLE.dteDueDate) AS Year
										,CAST(DATEPART(m, MASTERTABLE.dteDueDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteDueDate) AS NVARCHAR) AS [Month-Year]
									FROM tblCustTrans AS MASTERTABLE
									INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))
									INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
									WHERE tblCustomers.strCustCategory IN (
											SELECT tblCustomerCat.strCustCategory
											FROM tblCustomerCat
											LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
											WHERE ISNULL((
														SELECT COUNT(tblCustomerCatSec.strCustCategory)
														FROM tblCustomerCatSec
														WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
														), 0) = 0
												OR (
													ISNULL((
															SELECT COUNT(tblCustomerCatSec.strCustCategory)
															FROM tblCustomerCatSec
															WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
															), 0) > 0
													AND tblCustomerCatSec.strUserName = @SQUserName
													)
											)
										AND tblCustTransDT.bitReversed = 0
										AND tblCustTransDT.dteJournalDate <= @FromDate   
										AND tblCustTransDT.lngCustTrID NOT IN (
											SELECT tblCustTransDT.lngCustTrID
											FROM tblCustTrans
											INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
											WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
												AND tblCustTransDT.bitReversed = 0
												AND tblCustTransDT.dteJournalDate <= @FromDate  
											GROUP BY tblCustTransDT.lngCustTrID
											HAVING SUM(tblCustTransDT.decAmount) = 0
												AND SUM(tblCustTransDT.decAmountF) = 0
											) 
											AND tblcustomers.strCustName =  @CustName 
											GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc ,tblCustomers.strTerm , MASTERTABLE.dteDueDate , MASTERTABLE.dteJournalDate , tblCustomers.strCustCategory, DATEPART(m, MASTERTABLE.dteDueDate), DATEPART(yyyy, MASTERTABLE.dteDueDate), CAST(DATEPART(m, MASTERTABLE.dteDueDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteDueDate) AS NVARCHAR) ORDER BY tblCustomers.strTerm , LTRIM(RTRIM(MASTERTABLE.strCustName)) 
		END
	ELSE IF @IsAllCustomerCategory = 0 AND @IsAllCustomer = 1
		BEGIN
			SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName
										,tblCustomers.strCustDesc AS CustDesc
										,tblCustomers.strTerm AS Term
										,MASTERTABLE.dteDueDate AS DueDate
										,SUM(tblCustTransDT.decAmount) AS Amount
										,MASTERTABLE.dteJournalDate AS JournalDate
										,ISNULL(tblCustomers.strCustCategory, '') AS CustCate
										,DATEPART(m, MASTERTABLE.dteDueDate) AS Month
										,DATEPART(yyyy, MASTERTABLE.dteDueDate) AS Year
										,CAST(DATEPART(m, MASTERTABLE.dteDueDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteDueDate) AS NVARCHAR) AS [Month-Year]
									FROM tblCustTrans AS MASTERTABLE
									INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))
									INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
									WHERE tblCustomers.strCustCategory IN (
											SELECT tblCustomerCat.strCustCategory
											FROM tblCustomerCat
											LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
											WHERE ISNULL((
														SELECT COUNT(tblCustomerCatSec.strCustCategory)
														FROM tblCustomerCatSec
														WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
														), 0) = 0
												OR (
													ISNULL((
															SELECT COUNT(tblCustomerCatSec.strCustCategory)
															FROM tblCustomerCatSec
															WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
															), 0) > 0
													AND tblCustomerCatSec.strUserName =  @SQUserName 
													)
											)
										AND tblCustTransDT.bitReversed = 0
										AND tblCustTransDT.dteJournalDate <=  @FromDate   
										AND tblCustTransDT.lngCustTrID NOT IN (
											SELECT tblCustTransDT.lngCustTrID
											FROM tblCustTrans
											INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
											WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
												AND tblCustTransDT.bitReversed = 0
												AND tblCustTransDT.dteJournalDate <=  @FromDate 
											GROUP BY tblCustTransDT.lngCustTrID
											HAVING SUM(tblCustTransDT.decAmount) = 0
												AND SUM(tblCustTransDT.decAmountF) = 0
											) 
											AND tblCustomers.strCustCategory =  @CustCategory 
											GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc ,tblCustomers.strTerm , MASTERTABLE.dteDueDate , MASTERTABLE.dteJournalDate , tblCustomers.strCustCategory, DATEPART(m, MASTERTABLE.dteDueDate), DATEPART(yyyy, MASTERTABLE.dteDueDate), CAST(DATEPART(m, MASTERTABLE.dteDueDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteDueDate) AS NVARCHAR) ORDER BY tblCustomers.strTerm , LTRIM(RTRIM(MASTERTABLE.strCustName)) 
		END
	ELSE IF @IsAllCustomerCategory = 0 AND @IsAllCustomer = 0
		BEGIN
			SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName
										,tblCustomers.strCustDesc AS CustDesc
										,tblCustomers.strTerm AS Term
										,MASTERTABLE.dteDueDate AS DueDate
										,SUM(tblCustTransDT.decAmount) AS Amount
										,MASTERTABLE.dteJournalDate AS JournalDate
										,ISNULL(tblCustomers.strCustCategory, '') AS CustCate
										,DATEPART(m, MASTERTABLE.dteDueDate) AS Month
										,DATEPART(yyyy, MASTERTABLE.dteDueDate) AS Year
										,CAST(DATEPART(m, MASTERTABLE.dteDueDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteDueDate) AS NVARCHAR) AS [Month-Year]
									FROM tblCustTrans AS MASTERTABLE
									INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))
									INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
									WHERE tblCustomers.strCustCategory IN (
											SELECT tblCustomerCat.strCustCategory
											FROM tblCustomerCat
											LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
											WHERE ISNULL((
														SELECT COUNT(tblCustomerCatSec.strCustCategory)
														FROM tblCustomerCatSec
														WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
														), 0) = 0
												OR (
													ISNULL((
															SELECT COUNT(tblCustomerCatSec.strCustCategory)
															FROM tblCustomerCatSec
															WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
															), 0) > 0
													AND tblCustomerCatSec.strUserName =  @SQUserName 
													)
											)
										AND tblCustTransDT.bitReversed = 0
										AND tblCustTransDT.dteJournalDate <=  @FromDate  
										AND tblCustTransDT.lngCustTrID NOT IN (
											SELECT tblCustTransDT.lngCustTrID
											FROM tblCustTrans
											INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
											WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
												AND tblCustTransDT.bitReversed = 0
												AND tblCustTransDT.dteJournalDate <= @FromDate   
											GROUP BY tblCustTransDT.lngCustTrID
											HAVING SUM(tblCustTransDT.decAmount) = 0
												AND SUM(tblCustTransDT.decAmountF) = 0
											)
											AND tblCustomers.strCustCategory = @CustCategory  AND tblcustomers.strCustName =  @CustName 
									GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc ,tblCustomers.strTerm , MASTERTABLE.dteDueDate , MASTERTABLE.dteJournalDate , tblCustomers.strCustCategory, DATEPART(m, MASTERTABLE.dteDueDate), DATEPART(yyyy, MASTERTABLE.dteDueDate), CAST(DATEPART(m, MASTERTABLE.dteDueDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteDueDate) AS NVARCHAR) ORDER BY tblCustomers.strTerm , LTRIM(RTRIM(MASTERTABLE.strCustName)) 
		END
	ELSE IF @IsAllCustomerCategory = 1 AND @IsAllCustomer = 1
		BEGIN
			SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName
										,tblCustomers.strCustDesc AS CustDesc
										,tblCustomers.strTerm AS Term
										,MASTERTABLE.dteDueDate AS DueDate
										,SUM(tblCustTransDT.decAmount) AS Amount
										,MASTERTABLE.dteJournalDate AS JournalDate
										,ISNULL(tblCustomers.strCustCategory, '') AS CustCate
										,DATEPART(m, MASTERTABLE.dteDueDate) AS Month
										,DATEPART(yyyy, MASTERTABLE.dteDueDate) AS Year
										,CAST(DATEPART(m, MASTERTABLE.dteDueDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteDueDate) AS NVARCHAR) AS [Month-Year]
									FROM tblCustTrans AS MASTERTABLE
									INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))
									INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
									WHERE tblCustomers.strCustCategory IN (
											SELECT tblCustomerCat.strCustCategory
											FROM tblCustomerCat
											LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
											WHERE ISNULL((
														SELECT COUNT(tblCustomerCatSec.strCustCategory)
														FROM tblCustomerCatSec
														WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
														), 0) = 0
												OR (
													ISNULL((
															SELECT COUNT(tblCustomerCatSec.strCustCategory)
															FROM tblCustomerCatSec
															WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
															), 0) > 0
													AND tblCustomerCatSec.strUserName =  @SQUserName
													)
											)
										AND tblCustTransDT.bitReversed = 0
										AND tblCustTransDT.dteJournalDate <= @FromDate   
										AND tblCustTransDT.lngCustTrID NOT IN (
											SELECT tblCustTransDT.lngCustTrID
											FROM tblCustTrans
											INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
											WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
												AND tblCustTransDT.bitReversed = 0
												AND tblCustTransDT.dteJournalDate <=  @FromDate   
											GROUP BY tblCustTransDT.lngCustTrID
											HAVING SUM(tblCustTransDT.decAmount) = 0
												AND SUM(tblCustTransDT.decAmountF) = 0
											) 
										GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc ,tblCustomers.strTerm , MASTERTABLE.dteDueDate , MASTERTABLE.dteJournalDate , tblCustomers.strCustCategory, DATEPART(m, MASTERTABLE.dteDueDate), DATEPART(yyyy, MASTERTABLE.dteDueDate), CAST(DATEPART(m, MASTERTABLE.dteDueDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteDueDate) AS NVARCHAR) ORDER BY tblCustomers.strTerm , LTRIM(RTRIM(MASTERTABLE.strCustName)) 
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetEmpProfileCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prGetEmpProfileCount]    
	(    
	 @lngID nvarchar(30) = null    
	)    
	AS    
	BEGIN    
	 SET NOCOUNT ON;    
		SELECT COUNT(strEmpName) FROM tblEmployees     
	 WHERE lngProfileId = @lngID    
	END
GO
/****** Object:  StoredProcedure [dbo].[prGetGridInventory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetGridInventory]
	@PageIndex		int = 1, 
	@PageSize		int = 15,
	@OrderByField	varchar(200) = 'strPartNumber',
	@Asc			bit = 1,
	@SearchText		nvarchar(1000) = null,
	@Inactive		bit = 1,
	@IsItem			bit = 1,
	@DealerToolsMode bit = 1,
	@UserName		nvarchar(20) = null,
	@InvForecastItem int = 0,
	@PendingApproval bit = 1
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @ItemData TABLE(
		intType int, 
		strPartNumber nvarchar(50), 
		strDesc nvarchar(500), 
		decSumAvail money, 
		strBarCode nvarchar(600), 
		strBarCode2 nvarchar(600), 
		strItemCode nvarchar(100),
		strItemDesc nvarchar(500)
		)

	DECLARE	@StartRowIndex	int,
			@EndRowIndex    int

	SELECT @StartRowIndex = ((@PageIndex - 1) * @PageSize) + 1;
	SELECT @EndRowIndex = @StartRowIndex + @PageSize - 1;

	DECLARE @WhereQuery nvarchar(max)
	DECLARE @OrderQuery varchar(100)

	SET @WhereQuery = ' WHERE '

	IF @IsItem = 1 AND @Inactive = 0
		SET @WhereQuery = @WhereQuery + 'tblInv.bitInactive = 0 AND tblInv.intType = 1 '
	ELSE IF @IsItem = 1 AND @Inactive = 1
		SET @WhereQuery = @WhereQuery + 'tblInv.intType = 1 '

	IF @IsItem = 1 AND @PendingApproval = 0
		SET @WhereQuery = @WhereQuery + 'tblInv.bitPendingApproval = 0 AND tblInv.intType = 1 '
	ELSE IF @IsItem = 1 AND @PendingApproval = 1
		SET @WhereQuery = @WhereQuery + 'tblInv.intType = 1 '

	IF LEN(@SearchText) > 0
	BEGIN
		IF @IsItem = 1
			SET @WhereQuery = @WhereQuery + ' AND (strPartNumber LIKE ''%' + @SearchText + '%'' OR strDesc LIKE ''%' + @SearchText + '%'')'
		ELSE
			SET @WhereQuery = @WhereQuery + ' (strPartNumber LIKE ''%' + @SearchText + '%'' OR strDesc LIKE ''%' + @SearchText + '%'')'
	END	

	IF @InvForecastItem = 1
		SET @WhereQuery = @WhereQuery + ' AND tblInv.bitInclInvForecast = 1 '

	IF @InvForecastItem = 2
		SET @WhereQuery = @WhereQuery + ' AND tblInv.bitInclInvForecast = 0 '

	IF @DealerToolsMode = 0
	BEGIN
		SET @WhereQuery = @WhereQuery + ' AND strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''' + @UserName + '''))'
	END
	
	SET @OrderQuery = ' ORDER BY ' + @OrderByField + ' ' +
		CASE @Asc WHEN 1 THEN ' ASC ' ELSE ' DESC ' END

	
	DECLARE @Query  NVARCHAR(MAX)
	SET @Query = '
		SELECT 
			intType, 
			strPartNumber, 
			strDesc, 
			decSumAvail, 
			strBarCode, 
			strBarCode2, 
			strItemCode, 
			strItemDesc
		FROM 
			(
			SELECT 
				ROW_NUMBER() OVER (ORDER BY strPartNumber) AS RowNum, 	
				intType, 
				strPartNumber, 
				strDesc, 
				decSumAvail, 
				strBarCode, 
				tblInv.strBarCode2, 
				CASE WHEN ISNULL((SELECT COUNT(strItemCode) FROM tblInvVend WHERE strPartNumber = tblInv.strPartNumber),0) > 1 
					THEN 
						CASE WHEN ISNULL((SELECT COUNT(strItemCode) FROM tblInvVend WHERE strPartNumber = tblInv.strPartNumber AND bitPreferred = 1),0) = 0 
							THEN ''<MULTIPLE>''
							ELSE ISNULL((SELECT strItemCode FROM tblInvVend WHERE strPartNumber = tblInv.strPartNumber AND bitPreferred = 1),'''') 
						END 
					ELSE ISNULL((SELECT strItemCode FROM tblInvVend WHERE strPartNumber = tblInv.strPartNumber),'''') 
					END AS ''strItemCode'', 
				CASE WHEN ISNULL((SELECT COUNT(strItemDesc) FROM tblInvVend WHERE strPartNumber = tblInv.strPartNumber),0) > 1 
					THEN 
						CASE WHEN ISNULL((SELECT COUNT(strItemDesc) FROM tblInvVend WHERE strPartNumber = tblInv.strPartNumber AND bitPreferred = 1),0) = 0 
							THEN ''<MULTIPLE>'' 
							ELSE ISNULL((SELECT strItemDesc FROM tblInvVend WHERE strPartNumber = tblInv.strPartNumber AND bitPreferred = 1),'''') 
							END 
						ELSE ISNULL((SELECT strItemDesc FROM tblInvVend WHERE strPartNumber = tblInv.strPartNumber),'''') 
						END AS ''strItemDesc'' 
				FROM  tblInv ' + 
				@WhereQuery + '	
			) ' + 
			'AS [t1]' +
					+ ' WHERE RowNum BETWEEN 
			     	@StartRowIndex AND @EndRowIndex' + @OrderQuery

	PRINT @Query
	DECLARE @TotalQuery varchar(1000)
	SET @TotalQuery = '
			SELECT 
				TotalRows = COUNT(*),
				TotalPages = CAST(COUNT(*) / ' + CAST((@EndRowIndex - @StartRowIndex) + 1 AS varchar) + ' AS int) +
					CASE (COUNT(*) % ' + CAST((@EndRowIndex - @StartRowIndex) + 1 AS varchar) + ') 
					WHEN 0 THEN 0 ELSE 1 END					
			FROM	 
				tblInv ' + 
			@WhereQuery	

	PRINT @TotalQuery
	
	INSERT INTO @ItemData EXEC sp_Executesql @Query,
					N'@OrderQuery varchar(100),@StartRowIndex int,@EndRowIndex int',
					@OrderQuery=@OrderQuery,
					@StartRowIndex=@StartRowIndex,
					@EndRowIndex=@EndRowIndex
	
								
	SELECT * FROM @ItemData		

	EXECUTE(@TotalQuery)

    SET NOCOUNT OFF;
END
GO
/****** Object:  StoredProcedure [dbo].[prGetGridInventoryJournals]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prGetGridInventoryJournals]
	@PageIndex		int = 1, 
	@PageSize		int = 15,
	@OrderByField	varchar(200) = 'strPartNumber',
	@Asc			bit = 1,
	@SearchText		nvarchar(1000) = null
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @ItemData TABLE(
		strPartNumber nvarchar(50), 
		intType int, 
		strDesc nvarchar(500), 
		decSumAvail money, 
		strBarCode nvarchar(600), 
		strBarCode2 nvarchar(600)
		)

	DECLARE	@StartRowIndex	int,
			@EndRowIndex    int

	SELECT @StartRowIndex = ((@PageIndex - 1) * @PageSize) + 1;
	SELECT @EndRowIndex = @StartRowIndex + @PageSize - 1;

	DECLARE @WhereQuery nvarchar(max)
	DECLARE @OrderQuery varchar(100)

	SET @WhereQuery = ' WHERE bitInactive = 0 AND intType = 5 '

	IF LEN(@SearchText) > 0
		SET @WhereQuery = @WhereQuery + ' AND (strPartNumber LIKE ''%' + @SearchText + '%'' OR strDesc LIKE ''%' + @SearchText + '%'')'
	
	SET @OrderQuery = ' ORDER BY ' + @OrderByField + ' ' +
		CASE @Asc WHEN 1 THEN ' ASC ' ELSE ' DESC ' END

	
	DECLARE @Query  NVARCHAR(MAX)
	SET @Query = '
		SELECT 
			strPartNumber, 
			intType, 
			strDesc, 
			decSumAvail, 
			strBarCode, 
			strBarCode2 
		FROM 
			(
			SELECT 
				ROW_NUMBER() OVER (ORDER BY strPartNumber) AS RowNum, 	
				strPartNumber, 
				intType, 
				strDesc, 
				decSumAvail, 
				strBarCode, 
				strBarCode2 
			FROM  tblInv ' + 
				@WhereQuery + '	
			) ' + 
			'AS [t1]' +
					+ ' WHERE RowNum BETWEEN 
			     	@StartRowIndex AND @EndRowIndex' + @OrderQuery

	PRINT @Query
	DECLARE @TotalQuery varchar(1000)
	SET @TotalQuery = '
			SELECT 
				TotalRows = COUNT(*),
				TotalPages = CAST(COUNT(*) / ' + CAST((@EndRowIndex - @StartRowIndex) + 1 AS varchar) + ' AS int) +
					CASE (COUNT(*) % ' + CAST((@EndRowIndex - @StartRowIndex) + 1 AS varchar) + ') 
					WHEN 0 THEN 0 ELSE 1 END					
			FROM	 
				tblInv ' + 
			@WhereQuery	

	PRINT @TotalQuery
	
	INSERT INTO @ItemData EXEC sp_Executesql @Query,
					N'@OrderQuery varchar(100),@StartRowIndex int,@EndRowIndex int',
					@OrderQuery=@OrderQuery,
					@StartRowIndex=@StartRowIndex,
					@EndRowIndex=@EndRowIndex
	
								
	SELECT * FROM @ItemData		

	EXECUTE(@TotalQuery)

    SET NOCOUNT OFF;
END
GO
/****** Object:  StoredProcedure [dbo].[prGetGridInventoryMaster]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetGridInventoryMaster]
	@PageIndex		int = 1, 
	@PageSize		int = 15,
	@OrderByField	varchar(200) = 'strPartNumber',
	@Asc			bit = 1,
	@SearchText		nvarchar(1000) = null,
	@Inactive		bit = 1,
	@DealerToolsMode bit = 1,
	@UserName		nvarchar(20) = null,
	@InvForecastItem int = 0,
	@Category nvarchar(Max) = '<<ALL Categories>>',
	@SubCategory nvarchar(Max) = '<<ALL Sub Categories>>',
	@Group nvarchar(Max) = '<<ALL Sub Category Groups>>',
	@PendingApproval bit = 1
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @Count INT=0;   
  DECLARE @SplitWord TABLE(wordRank INT, word VARCHAR(200))
  SET @SearchText = LTRIM(RTRIM(@SearchText)) -- Remove white space
  DECLARE @WordSeperator VARCHAR(1) =' '

  DECLARE @TotalWord Int=0
  DECLARE @WordCount Int=1
  DECLARE @Keyword1 VARCHAR(100)=''
  DECLARE @Keyword2 VARCHAR(100)=''
  DECLARE @Keyword3 VARCHAR(100)=''
  DECLARE @Keyword4 VARCHAR(100)=''
  DECLARE @Keyword5 VARCHAR(100)=''
  DECLARE @Keyword6 VARCHAR(100)=''
  DECLARE @Keyword7 VARCHAR(100)=''
  DECLARE @Keyword8 VARCHAR(100)=''
  DECLARE @Keyword9 VARCHAR(100)=''
  DECLARE @Keyword10 VARCHAR(100)=''
  IF(CHARINDEX(',',@SearchText)) > 0 
	BEGIN
		 SET @WordSeperator=','
	END  

 INSERT INTO @SplitWord select Id, [Data] from dbo.split(@SearchText, @WordSeperator)

 SET @TotalWord=(SELECT COUNT(*) FROM @SplitWord)

While(@WordCount<=@TotalWord)
Begin
		IF @WordCount=1 
			BEGIN
				SET @Keyword1=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=2 
			BEGIN
				SET @Keyword2=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=3 
			BEGIN
				SET @Keyword3=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=4 
			BEGIN
				SET @Keyword4=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=5 
			BEGIN
				SET @Keyword5=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=6 
			BEGIN
				SET @Keyword6=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=7 
			BEGIN
				SET @Keyword7=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=8 
			BEGIN
				SET @Keyword8=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=9
			BEGIN
				SET @Keyword9=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=10 
			BEGIN
				SET @Keyword10=(Select Word from @SplitWord Where wordRank=@WordCount)
			END

	SET @WordCount=@WordCount+1
End



	DECLARE @ItemData TABLE(
		intType int, 
		strPartNumber nvarchar(50), 
		strDesc nvarchar(500), 
		decSumAvail money, 
		decSumAlloc money, 
		decSumOnHand money, 
		decSumOnOrder money, 
		decSumValue money,
		bitInactive bit,
		decSumManuf money,
		strCategory nvarchar(MAX),
		bitPendingApproval bit
		)

	DECLARE	@StartRowIndex	int,
			@EndRowIndex    int

	SELECT @StartRowIndex = ((@PageIndex - 1) * @PageSize) + 1;
	SELECT @EndRowIndex = @StartRowIndex + @PageSize - 1;

	DECLARE @WhereQuery nvarchar(max)
	DECLARE @OrderQuery nvarchar(max)

	SET @WhereQuery = ' WHERE intType <> 5 '

	SET @WhereQuery = @WhereQuery + ' AND (isnull(dbo.tblInv.strCategory,'''') = CASE WHEN '''+@Category+''' =''<<ALL Categories>>'' Then isnull(dbo.tblInv.strCategory,'''') ELSE '''+@Category+''' END) '
	SET @WhereQuery = @WhereQuery + ' AND (isnull(dbo.tblInv.strSubCategory,'''') = CASE WHEN '''+@SubCategory+''' =''<<ALL Sub Categories>>'' Then isnull(dbo.tblInv.strSubCategory,'''') ELSE '''+@SubCategory+''' END) '
	SET @WhereQuery = @WhereQuery + ' AND (isnull(dbo.tblInv.strSubCategoryGroup,'''') = CASE WHEN '''+@Group+''' =''<<ALL Sub Category Groups>>'' Then isnull(dbo.tblInv.strSubCategoryGroup,'''') ELSE '''+@Group+''' END) '

	IF @PendingApproval = 1 AND @Inactive = 0
	BEGIN 
		SET @WhereQuery = @WhereQuery + 'AND (bitPendingApproval = 1 or bitInactive = 0)'
	end
	else
	begin
		IF @Inactive = 0
		BEGIN
			SET @WhereQuery = @WhereQuery + 'AND bitInactive = 0 '
		END

		IF @PendingApproval = 0
		BEGIN
			SET @WhereQuery = @WhereQuery + 'AND bitPendingApproval = 0 '
		END
	END


	IF LEN(@SearchText) > 0
	BEGIN
		SET @WhereQuery = @WhereQuery +  ' AND ((
									('''+@Keyword1+'''='''' OR strPartNumber LIKE ''%'+@Keyword1+'%'') AND ('''+@Keyword2+'''='''' OR strPartNumber LIKE ''%'+@Keyword2+'%'')  AND ('''+@Keyword3+'''='''' OR strPartNumber LIKE ''%'+@Keyword3+'%'')  AND ('''+@Keyword4+'''='''' OR strPartNumber LIKE ''%'+@Keyword4+'%'')  AND ('''+@Keyword5+'''='''' OR strPartNumber LIKE ''%'+@Keyword5+'%'')
									  AND ('''+@Keyword6+'''='''' OR strPartNumber LIKE ''%'+@Keyword6+'%'') AND ('''+@Keyword7+'''='''' OR strPartNumber LIKE ''%'+@Keyword7+'%'') AND ('''+@Keyword8+'''='''' OR strPartNumber LIKE ''%'+@Keyword8+'%'')  AND ('''+@Keyword9+'''='''' OR strPartNumber LIKE ''%'+@Keyword9+'%'')  AND ('''+@Keyword10+'''='''' OR strPartNumber LIKE ''%'+@Keyword10+'%'')	
									 )'
		SET @WhereQuery = @WhereQuery +  ' OR (
									('''+@Keyword1+'''='''' OR strDesc LIKE ''%'+@Keyword1+'%'') AND ('''+@Keyword2+'''='''' OR strDesc LIKE ''%'+@Keyword2+'%'')  AND ('''+@Keyword3+'''='''' OR strDesc LIKE ''%'+@Keyword3+'%'')  AND ('''+@Keyword4+'''='''' OR strDesc LIKE ''%'+@Keyword4+'%'')  AND ('''+@Keyword5+'''='''' OR strDesc LIKE ''%'+@Keyword5+'%'')
									  AND ('''+@Keyword6+'''='''' OR strDesc LIKE ''%'+@Keyword6+'%'') AND ('''+@Keyword7+'''='''' OR strDesc LIKE ''%'+@Keyword7+'%'') AND ('''+@Keyword8+'''='''' OR strDesc LIKE ''%'+@Keyword8+'%'')  AND ('''+@Keyword9+'''='''' OR strDesc LIKE ''%'+@Keyword9+'%'')  AND ('''+@Keyword10+'''='''' OR strDesc LIKE ''%'+@Keyword10+'%'')	
									 )'
		SET @WhereQuery = @WhereQuery +  ' OR (
									('''+@Keyword1+'''='''' OR strCategory LIKE ''%'+@Keyword1+'%'') AND ('''+@Keyword2+'''='''' OR strCategory LIKE ''%'+@Keyword2+'%'')  AND ('''+@Keyword3+'''='''' OR strCategory LIKE ''%'+@Keyword3+'%'')  AND ('''+@Keyword4+'''='''' OR strCategory LIKE ''%'+@Keyword4+'%'')  AND ('''+@Keyword5+'''='''' OR strCategory LIKE ''%'+@Keyword5+'%'')
									  AND ('''+@Keyword6+'''='''' OR strCategory LIKE ''%'+@Keyword6+'%'') AND ('''+@Keyword7+'''='''' OR strCategory LIKE ''%'+@Keyword7+'%'') AND ('''+@Keyword8+'''='''' OR strCategory LIKE ''%'+@Keyword8+'%'')  AND ('''+@Keyword9+'''='''' OR strCategory LIKE ''%'+@Keyword9+'%'')  AND ('''+@Keyword10+'''='''' OR strCategory LIKE ''%'+@Keyword10+'%'')	
									 )'
		SET @WhereQuery = @WhereQuery +  ' OR (
									('''+@Keyword1+'''='''' OR strSubCategory LIKE ''%'+@Keyword1+'%'') AND ('''+@Keyword2+'''='''' OR strSubCategory LIKE ''%'+@Keyword2+'%'')  AND ('''+@Keyword3+'''='''' OR strSubCategory LIKE ''%'+@Keyword3+'%'')  AND ('''+@Keyword4+'''='''' OR strSubCategory LIKE ''%'+@Keyword4+'%'')  AND ('''+@Keyword5+'''='''' OR strSubCategory LIKE ''%'+@Keyword5+'%'')
									  AND ('''+@Keyword6+'''='''' OR strSubCategory LIKE ''%'+@Keyword6+'%'') AND ('''+@Keyword7+'''='''' OR strSubCategory LIKE ''%'+@Keyword7+'%'') AND ('''+@Keyword8+'''='''' OR strSubCategory LIKE ''%'+@Keyword8+'%'')  AND ('''+@Keyword9+'''='''' OR strSubCategory LIKE ''%'+@Keyword9+'%'')  AND ('''+@Keyword10+'''='''' OR strSubCategory LIKE ''%'+@Keyword10+'%'')	
									 )'
		SET @WhereQuery = @WhereQuery +  ' OR (
									('''+@Keyword1+'''='''' OR strSubCategoryGroup LIKE ''%'+@Keyword1+'%'') AND ('''+@Keyword2+'''='''' OR strSubCategoryGroup LIKE ''%'+@Keyword2+'%'')  AND ('''+@Keyword3+'''='''' OR strSubCategoryGroup LIKE ''%'+@Keyword3+'%'')  AND ('''+@Keyword4+'''='''' OR strSubCategoryGroup LIKE ''%'+@Keyword4+'%'')  AND ('''+@Keyword5+'''='''' OR strSubCategoryGroup LIKE ''%'+@Keyword5+'%'')
									  AND ('''+@Keyword6+'''='''' OR strSubCategoryGroup LIKE ''%'+@Keyword6+'%'') AND ('''+@Keyword7+'''='''' OR strSubCategoryGroup LIKE ''%'+@Keyword7+'%'') AND ('''+@Keyword8+'''='''' OR strSubCategoryGroup LIKE ''%'+@Keyword8+'%'')  AND ('''+@Keyword9+'''='''' OR strSubCategoryGroup LIKE ''%'+@Keyword9+'%'')  AND ('''+@Keyword10+'''='''' OR strSubCategoryGroup LIKE ''%'+@Keyword10+'%'')	
									 ))'
	END

	IF @InvForecastItem = 1
		SET @WhereQuery = @WhereQuery + ' AND tblInv.bitInclInvForecast = 1 '

	IF @InvForecastItem = 2
		SET @WhereQuery = @WhereQuery + ' AND tblInv.bitInclInvForecast = 0 '

	IF @DealerToolsMode = 0
	BEGIN
		SET @WhereQuery = @WhereQuery + ' AND strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''' + @UserName + '''))'
	END
	
	SET @OrderQuery = ' ORDER BY ' + @OrderByField + ' ' +
		CASE @Asc WHEN 1 THEN ' ASC ' ELSE ' DESC ' END

	
	DECLARE @Query  NVARCHAR(MAX)
	SET @Query = '
		SELECT 
			intType,
			strPartNumber,
			strDesc,
			decSumAvail,
			decSumAlloc,
			decSumOnHand,
			decSumOnOrder,
			decSumValue,
			bitInactive,
			decSumManuf,
			strCategory,
			bitPendingApproval
		FROM 
			(
			SELECT 
				ROW_NUMBER() OVER (ORDER BY ' + @OrderByField + ') AS RowNum, 	
				intType,
				strPartNumber,
				strDesc,
				decSumAvail,
				decSumAlloc,
				decSumOnHand,
				decSumOnOrder,
				decSumValue,
				bitInactive,
				decSumManuf,
				(ISNULL(RTRIM(LTRIM(strCategory)),'''') +	(CASE WHEN ISNULL(RTRIM(LTRIM(strSubCategory)),'''')='''' THEN '''' ELSE ''/''+RTRIM(LTRIM(strSubCategory)) END) + (CASE WHEN ISNULL(RTRIM(LTRIM(strSubCategoryGroup)),'''')='''' THEN '''' ELSE ''/''+RTRIM(LTRIM(strSubCategoryGroup)) END)) AS strCategory,
				bitPendingApproval
			FROM  tblInv ' + 
				@WhereQuery + '	
			) ' + 
			'AS [t1]' +
					+ ' WHERE RowNum BETWEEN 
			     	@StartRowIndex AND @EndRowIndex' + @OrderQuery


	DECLARE @TotalQuery nvarchar(Max)
	SET @TotalQuery = '
			SELECT 
				TotalRows = COUNT(*),
				TotalPages = CAST(COUNT(*) / ' + CAST((@EndRowIndex - @StartRowIndex) + 1 AS varchar) + ' AS int) +
					CASE (COUNT(*) % ' + CAST((@EndRowIndex - @StartRowIndex) + 1 AS varchar) + ') 
					WHEN 0 THEN 0 ELSE 1 END					
			FROM	 
				tblInv ' + 
			@WhereQuery	

	
	INSERT INTO @ItemData EXEC sp_Executesql @Query,
					N'@OrderQuery varchar(100),@StartRowIndex int,@EndRowIndex int',
					@OrderQuery=@OrderQuery,
					@StartRowIndex=@StartRowIndex,
					@EndRowIndex=@EndRowIndex
					
	SELECT * FROM @ItemData		

	EXECUTE(@TotalQuery)

    SET NOCOUNT OFF;
END
GO
/****** Object:  StoredProcedure [dbo].[prGetGridJournals]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetGridJournals]
	@SearchText nvarchar(1000) = null,
	@StartDate  datetime,
	@EndDate    datetime,
	@OrderByField nvarchar(50)
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @ItemData TABLE(
		strSource nvarchar(50), 
		lngJourId bigint,
		dteJournalDate datetime, 
		strComment nvarchar(500),
		strCurrency nvarchar(6),
		decExchange decimal(20,6),
		dteReverseDate datetime
		)

	DECLARE @WhereQuery nvarchar(max)
	DECLARE @OrderQuery varchar(100)

	SET @WhereQuery = ' WHERE bitIsTobeReversed = 1 AND bitIsReversed = 0 '

	IF LEN(@SearchText) > 0
		SET @WhereQuery = @WhereQuery + ' AND (strJEDocID LIKE ''%' + @SearchText + '%'' OR strComment LIKE ''%' + @SearchText + '%'')'
	SET @WhereQuery = @WhereQuery + ' AND dteReverseDate between ''' + Convert(Varchar(10),@StartDate,121) + ''' AND ''' + Convert(Varchar(10),@EndDate,121) + ''''
	
	SET @OrderQuery = ' ORDER BY ' + @OrderByField + ' ASC'
	
	DECLARE @Query  NVARCHAR(MAX)
	SET @Query = '
			SELECT 
				strJEDocID,
				lngJourId,
				dteJournalDate,
				strComment,
				strCurrency,
				decExchange,
				dteReverseDate
				FROM
					tblJournalEntryDoc ' + 
				@WhereQuery +  @OrderQuery

	PRINT @Query
	
	INSERT INTO @ItemData EXEC sp_Executesql @Query,
					N'@OrderQuery varchar(100)',
					@OrderQuery=@OrderQuery
								
	SELECT * FROM @ItemData		

    SET NOCOUNT OFF;
END
GO
/****** Object:  StoredProcedure [dbo].[prGetInvAged]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetInvAged] (    
	@SQUserName nvarchar(20) = NULL,
	 @SQAsAt Datetime,    
	 @SQstrPartNumber nvarchar(50)
	 )    
	AS    
	BEGIN    
	 SET NOCOUNT ON;    
    
	Declare      
	@PartNumber  nvarchar(100),    
	@Description nvarchar(1000),    
	@Amount1  [money] =0.0,    
	@Qty1   int =0,    
	@Amount2  [money] =0.0,    
	@Qty2   int =0,    
	@Amount3  [money] =0.0,    
	@Qty3   int =0,    
	@Amount4  [money] =0.0,    
	@Qty4   int =0.0,    
	@Amount5  [money] =0.0,    
	@Qty5   int =0,    
	@Amount6  [money] =0.0,    
	@Qty6   int =0,    
	@CurOnHandValue [money] =0.0,    
	@CurOnHandQty [money] =0.0,    
	@OpenValue [money] =0.0,    
	@OpenQty int =0,    
	@balanceAmnt [money] =0.0,    
	@balanceQty int =0,    
	@purTotalValue [MONEY]=0.0,    
	@purTotalQty int=0,    
	@SQL varchar(max);    

	declare @InvAgedList as table    
	(    
	 dteJournalDate datetime,    
	 decValue [money],    
	 decQty [money]
	)    
    
	declare @tblInv as table    
	(    
	 strPartNumber nvarchar(100) not null    
	 ,strDesc  nvarchar(max) default ''    
	,Amt1   money    
	,Qty1   int    
	,Amt2   money    
	,Qty2   int    
	,Amt3   money    
	,Qty3   int    
	,Amt4   money    
	,Qty4   int    
	,Amt6   money   --total amnt    
	,Qty6   int   --total qnty    
	,sumDecValue money    
	,sumDecQty  money    
	,sumOpenValue money    
	,sumOpenQty  money    
	,curOnHandValue money    
	,curOnHandQty money    
	primary key(strPartNumber)    
	)    
    
	insert into @tblInv    
	select   tblInv.strPartNumber    
	  ,  strDesc    
	  ,0 as Amt1    
	  ,0 as Qty1    
	  ,0 as Amt2    
	  ,0 as Qty2    
	  ,0 as Amt3    
	  ,0 as Qty3    
	  ,0 as Amt4    
	  ,0 as Qty4    
	  ,0 as Amt6    
	  ,0 as Qty6     
	  ,NULL,NULL,NULL,NULL,NULL,NULL    
	from  tblInv
	where  tblInv.strPartNumber = @SQstrPartNumber AND   
	strCategory in (    
	SELECT strCategory    
	FROM tblInvCat    
	WHERE strCategory IN (    
	  SELECT tblInvCat.strCategory    
	  FROM tblInvCat    
	  LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory    
	  WHERE ISNULL((    
		 SELECT COUNT(tblInvCatSec.strCategory)    
		 FROM tblInvCatSec    
		 WHERE tblInvCatSec.strCategory = tblInvCat.strCategory    
		 ), 0) = 0    
	   OR (    
		ISNULL((    
		  SELECT COUNT(tblInvCatSec.strCategory)    
		  FROM tblInvCatSec    
		  WHERE tblInvCatSec.strCategory = tblInvCat.strCategory    
		  ), 0) > 0    
		AND tblInvCatSec.strUserName = @SQUserName    
		)    
	  )    
	)    
	and tblInv.bitInactive = 0    
	and intType = 1   

	declare @tblInvTracingInfo as table    
	(    
	  strPartNumber nvarchar(100)     
	 ,decSumValue money    
	 ,decsumqty  INT     
	 primary key(strPartNumber)    
	)    
    
	declare @tblInvExtInfo as table    
	(    
	  strPartNumber nvarchar(100)     
	 ,decOpenValue money    
	 ,decOpenQty  INT    
	 primary key(strPartNumber)    
	)    
    
	insert into @tblInvTracingInfo    
	SELECT tblInvTrackingDT.strPartNumber,  
		 SUM(tblInvTrackingDT.decValue) AS decSumValue,    
		 SUM(tblInvTrackingDT.decQty) AS decSumQty    
	   FROM tblInvTracking       
	   INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID    
	   WHERE (tblInvTrackingDT.bitService = 0)  AND tblInvTrackingDT.strPartNumber = @SQstrPartNumber      
	   AND (tblInvTracking.dteJournalDate <= @SQAsAt)       
	   GROUP BY tblInvTrackingDT.strPartNumber    
    
	insert into @tblInvExtInfo    
	   SELECT  strPartNumber,SUM(decOpenValue)decOpenValue, SUM(decOpenQty)decOpenQty FROM tblInvExt
	   WHERE strPartNumber = @SQstrPartNumber        
	   group by strPartNumber

	UPDATE @tblInv    
	SET sumDecQty = B.decsumqty, sumDecValue = B.decSumValue    
	FROM @tblInv A    
	INNER JOIN @tblInvTracingInfo B    
		ON A.strPartNumber = B.strPartNumber
    
    
	UPDATE @tblInv    
	SET sumOpenQty = B.decOpenQty, sumOpenValue = B.decOpenValue ,curOnHandQty =(CASE WHEN (sumDecQty IS NOT NULL) THEN sumDecQty+decOpenQty ELSE decOpenQty END),curOnHandValue=(CASE WHEN (sumDecQty IS NOT NULL) THEN sumDecValue+decOpenValue ELSE decOpenValue
	 END)    
	FROM @tblInv A    
	INNER JOIN @tblInvExtInfo B    
		ON A.strPartNumber = B.strPartNumber 
    
	delete from @tblInv where curOnHandQty<=0    
    
	  SELECT strPartNumber,SUM(Amnt1) As Amnt1,SUM(Qnty1) As Qnty1   
	   ,SUM(Amnt2) As Amnt2,SUM(Qnty2) As Qnty2  
	   ,SUM(Amnt3) As Amnt3,SUM(Qnty3) As Qnty3   
	   ,SUM(Amnt4) As Amnt4,SUM(Qnty4) As Qnty4   
	   INTO  #Sales_Data FROM        
	   (  
	 select tblInvTrackingDT.strLocName,    
		 tblInvTrackingDT.strPartNumber, tblInvTrackingDT.strSource,   
		 Sum(CASE WHEN (DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)<=30) Then tblInvTrackingDT.decValue ELse 0 END) Amnt1,    
		 Sum(CASE WHEN (DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)<=30) Then tblInvTrackingDT.decQty ELse 0 END) Qnty1,      
		 SUM(CASE WHEN (DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)>30 AND DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)<=60) Then tblInvTrackingDT.decValue ELse 0 END) Amnt2,    
		 SUM(CASE WHEN (DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)>30 AND DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)<=60) Then tblInvTrackingDT.decQty ELse 0 END) Qnty2,    
		 SUM(CASE WHEN (DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)>60 AND DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)<=90) Then tblInvTrackingDT.decValue ELse 0 END) Amnt3,    
		 SUM(CASE WHEN (DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)>60 AND DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)<=90) Then tblInvTrackingDT.decQty ELse 0 END) Qnty3,    
		 SUM(CASE WHEN (DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)>90) Then tblInvTrackingDT.decValue ELse 0 END)  Amnt4,    
		 SUM(CASE WHEN (DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)>90) Then tblInvTrackingDT.decQty ELse 0 END) Qnty4     
   
	   FROM tblInvTracking    
	   INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID    
	   WHERE (tblInvTrackingDT.bitService = 0) AND tblInvTrackingDT.strPartNumber = @SQstrPartNumber   
	   AND (tblInvTracking.dteJournalDate <= @SQAsAt)    
	   GROUP BY tblInvTrackingDT.strPartNumber, tblInvTrackingDT.strLocName,tblInvTrackingDT.strSource       
	   HAVING SUM(decQty) > 0  
	   ) AS Z GROUP BY Z.strPartNumber

	UPDATE @tblInv    
	SET Amt1=CASE WHEN curOnHandQty<0 THEN curOnHandValue ELSE Amnt1 END,    
	Qty1=CASE WHEN curOnHandQty<0 THEN curOnHandQty ELSE Qnty1 END,    
	Amt2=CASE WHEN curOnHandQty<0 THEN 0 ELSE Amnt2 END,    
	Qty2=CASE WHEN curOnHandQty<0 THEN 0 ELSE Qnty2 END,    
	Amt3=CASE WHEN curOnHandQty<0 THEN 0 ELSE Amnt3 END,    
	Qty3=CASE WHEN curOnHandQty<0 THEN 0 ELSE Qnty3 END,    
	Amt4=CASE WHEN curOnHandQty<0 THEN 0 ELSE Amnt4 END,    
	Qty4=CASE WHEN curOnHandQty<0 THEN 0 ELSE Qnty4 END   
	FROM @tblInv a    
	inner join #Sales_Data    
	on #Sales_Data.strPartNumber=a.strPartNumber  

	DECLARE InvAged_Cursor CURSOR FOR      
	SELECT    strPartNumber,strDesc ,Amt1, Qty1,Amt2, Qty2,Amt3, Qty3,Amt4, Qty4,Amt6, Qty6 ,curOnHandValue,curOnHandQty,sumOpenValue,sumOpenQty from    @tblInv    
	OPEN InvAged_Cursor;      
	FETCH NEXT FROM InvAged_Cursor INTO @PartNumber,@Description,@Amount1,@Qty1,@Amount2,@Qty2,@Amount3,@Qty3,@Amount4,@Qty4,@Amount6,@Qty6,@CurOnHandValue,@CurOnHandQty,@OpenValue,@OpenQty;    
	WHILE @@FETCH_STATUS = 0      
	 BEGIN      
      
	  SET @purTotalValue=@Amount1+@Amount2+@Amount3+@Amount4    
	  SET @purTotalQty=@Qty1+@Qty2+@Qty3+@Qty4   

	  --If On Hand quantity is less than zero(Negative)    
	  IF @CurOnHandQty<0    
	  BEGIN        
	   update @tblInv set            
		   Amt1=@CurOnHandValue, Qty1=@CurOnHandQty,    
		   Amt2=0.0,  Qty2=0,    
		   Amt3=0.0, Qty3=0,    
		   Amt4=0.0, Qty4=0,    
		   Amt6=@CurOnHandValue,  Qty6=@CurOnHandQty  --total    
			 where strPartNumber=@PartNumber  
	  END    
	  --If On Hand quantity is equal to total sum of receiving criteria    
	  ELSE IF @CurOnHandQty=@purTotalQty    
	  BEGIN       
	   update @tblInv set            
		   Amt1=@Amount1, Qty1=@Qty1,    
		   Amt2=@Amount2,  Qty2=@Qty2,    
		   Amt3=@Amount3, Qty3=@Qty3,    
		   Amt4=@Amount4, Qty4=@Qty4,    
		   Amt6=@CurOnHandValue,  Qty6=@CurOnHandQty --total    
			 where strPartNumber=@PartNumber    
	  END    
	  --If On Hand quantity is greater than zero(Positive) and On Hand quantity is less than total sum of receiving criteria    
	  ELSE IF @CurOnHandQty>0 and @CurOnHandQty<@purTotalQty    
	  BEGIN    
	   DECLARE @isProcessed bit=0;   
    
	   SET @balanceQty=@purTotalQty-@CurOnHandQty    
	   SET @balanceAmnt=@purTotalValue-@CurOnHandValue    

	   IF @Qty4>0     
	   BEGIN    
		SET @balanceQty=@Qty4-@balanceQty    
		SET @balanceAmnt=@Amount4-@balanceAmnt    
		IF @balanceQty>=0    
		BEGIN    
		 SET @Qty4=@balanceQty    
		 SET @Amount4=@balanceAmnt    
		END    
		ELSE    
		BEGIN    
		 SET @Qty4=0    
		 SET @Amount4=0    
		END    
		SET @isProcessed=1    
	   END    
    
	   IF @Qty3>0     
	   BEGIN    
		IF @balanceQty<0    
		BEGIN     
		 SET @balanceQty=@Qty3-(-@balanceQty)    
		 SET @balanceAmnt=@Amount3-(-@balanceAmnt)    
		END    
		ELSE IF @balanceQty>0    
		 BEGIN    
		  IF @isProcessed=1     
		  BEGIN    
		   SET @balanceQty=@Qty3    
		   SET @balanceAmnt=@Amount3    
		  END     
		  ELSE    
		  BEGIN    
		   SET @balanceQty=@Qty3-@balanceQty    
		   SET @balanceAmnt=@Amount3-@balanceAmnt    
		  END    
		 END    
		ELSE    
		 BEGIN    
		  SET @balanceQty=@Qty3-(@balanceQty)    
		  SET @balanceAmnt=@Amount3-(@balanceAmnt)    
		 END    
    
		IF @balanceQty>=0    
		BEGIN    
		 SET @Qty3=@balanceQty    
		 SET @Amount3=@balanceAmnt    
		END    
		ELSE    
		BEGIN    
		 SET @Qty3=0    
		 SET @Amount3=0.0    
		END    
		SET @isProcessed=1    
	   END    
    
	   IF @Qty2>0     
	   BEGIN    
		IF @balanceQty<0    
		BEGIN     
		 SET @balanceQty=@Qty2-(-@balanceQty)    
		 SET @balanceAmnt=@Amount2-(-@balanceAmnt)    
		END    
		ELSE IF @balanceQty>0    
		 BEGIN    
		 IF @isProcessed=1     
		  BEGIN    
		   SET @balanceQty=@Qty2    
		   SET @balanceAmnt=@Amount2    
		  END    
		 ELSE    
		  BEGIN    
		   SET @balanceQty=@Qty2-(@balanceQty)    
		   SET @balanceAmnt=@Amount2-(@balanceAmnt)    
		  END    
		 END    
		ELSE    
		 BEGIN    
		 SET @balanceQty=@Qty2-(@balanceQty)    
		 SET @balanceAmnt=@Amount2-(@balanceAmnt)    
		 END    
    
		IF @balanceQty>=0    
		BEGIN    
		 SET @Qty2=@balanceQty    
		 SET @Amount2=@balanceAmnt    
		END    
		ELSE    
		BEGIN    
		 SET @Qty2=0    
		 SET @Amount2=0.0    
		END    
		SET @isProcessed=1    
	   END    
        
	   IF @Qty1>0     
	   BEGIN    
		IF @balanceQty<0    
		BEGIN     
		 SET @balanceQty=@Qty1-(-@balanceQty)    
		 SET @balanceAmnt=@Amount1-(-@balanceAmnt)    
		END    
		ELSE IF @balanceQty>0    
		 BEGIN    
		 IF @isProcessed=1     
		  BEGIN    
		   SET @balanceQty=@Qty1    
		   SET @balanceAmnt=@Amount1    
		  END    
		 ELSE    
		  BEGIN    
		   SET @balanceQty=@Qty1-@balanceQty    
		   SET @balanceAmnt=@Amount1-@balanceAmnt    
		  END    
		 END    
		ELSE    
		 BEGIN    
		 SET @balanceQty=@Qty1-(@balanceQty)    
		 SET @balanceAmnt=@Amount1-(@balanceAmnt)    
		 END    
    
		IF @balanceQty>=0    
		BEGIN    
		 SET @Qty1=@balanceQty    
		 SET @Amount1=@balanceAmnt    
		END    
		ELSE    
		BEGIN    
		 SET @Qty1=0    
		 SET @Amount1=0.0    
		END    
		SET @isProcessed=1    
	   END    
         
	   update @tblInv set            
		   Amt1=@Amount1, Qty1=@Qty1,    
		   Amt2=@Amount2,  Qty2=@Qty2,    
		   Amt3=@Amount3, Qty3=@Qty3,    
		   Amt4=@Amount4, Qty4=@Qty4,    
		   Amt6=@CurOnHandValue,  Qty6=@CurOnHandQty --total    
			 where strPartNumber=@PartNumber    
	  END    
	  --If On Hand quantity is greater than zero(Positive) and On Hand quantity is greater than total sum of receiving criteria    
	  ELSE IF @CurOnHandQty > 0 and @CurOnHandQty > @purTotalQty    
	  BEGIN    
	   update @tblInv set            
		   Amt1=@Amount1, Qty1=@Qty1,    
		   Amt2=@Amount2,  Qty2=@Qty2,    
		   Amt3=@Amount3, Qty3=@Qty3,    
		   Amt4=@Amount4, Qty4=@Qty4,    
		   Amt6=@CurOnHandValue,  Qty6=@CurOnHandQty --total    
			 where strPartNumber=@PartNumber
	  END     
      
	  SET @purTotalValue=0.0    
	  SET @purTotalQty=0    
    
	  FETCH NEXT FROM InvAged_Cursor INTO @PartNumber,@Description,@Amount1,@Qty1,@Amount2,@Qty2,@Amount3,@Qty3,@Amount4,@Qty4,@Amount6,@Qty6,@CurOnHandValue,@CurOnHandQty,@OpenValue,@OpenQty;    
	 END;      
	CLOSE InvAged_Cursor;      
	DEALLOCATE InvAged_Cursor;        
    
	select cast(sum(Qty6) as int)[Total Qty],  
		   sum(Amt6)[Total Value],
		   sum(Qty1)[Current Qty],
		   sum(Amt1)[Current Value],
		   sum(Qty2)[31 to 60 Qty],
		   sum(Amt2)[31 to 60 Value],
		   sum(Qty3)[61 to 90 Qty],
		   sum(Amt3)[61 to 90 Value],
		   sum(Qty4)[90+ Qty],
		   sum(Amt4)[90+ Value]
	 from @tblInv    
	group by strPartNumber,strDesc   
	 order by strPartNumber,strDesc    
    
	IF OBJECT_ID('tempdb..#Sales_Data') IS NOT NULL    
	   drop table #Sales_Data    
	END
GO
/****** Object:  StoredProcedure [dbo].[prGetInvAgedValues]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prGetInvAgedValues]
	@SQPartNumber nvarchar(20) = '', 
	@SQAsAt smalldatetime = NULL,
	@SQLocName nvarchar(MAX) = '' 
AS
BEGIN
	SET NOCOUNT ON;

	IF LEN(@SQLocName) > 0
		BEGIN

			SELECT	SUM(tblInvTrackingDT.decValue) AS decSumValue,
					SUM(tblInvTrackingDT.decQty) AS decSumQty
			FROM tblInvTracking
			INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			WHERE (tblInvTrackingDT.bitService = 0) 
			AND	(tblInvTrackingDT.strPartNumber = @SQPartNumber) 
			AND	(tblInvTracking.dteJournalDate <= @SQAsAt)
			AND (tblInvTrackingDT.strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQLocName,',')))
			ORDER BY decSumValue DESC

END
	ELSE
		BEGIN

			SELECT	SUM(tblInvTrackingDT.decValue) AS decSumValue,
					SUM(tblInvTrackingDT.decQty) AS decSumQty
			FROM tblInvTracking
			INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			WHERE (tblInvTrackingDT.bitService = 0) 
			AND	(tblInvTrackingDT.strPartNumber = @SQPartNumber) 
			AND	(tblInvTracking.dteJournalDate <= @SQAsAt)
			ORDER BY decSumValue DESC
		
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetInvAgedValuesForNewAging]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prGetInvAgedValuesForNewAging]
	@SQPartNumber nvarchar(20) = '', 
	@SQAsAt smalldatetime = NULL,
	@SQLocName nvarchar(MAX) = '' 
AS
BEGIN
	SET NOCOUNT ON;

	IF LEN(@SQLocName) > 0
		BEGIN

			SELECT	tblInvTracking.dteJournalDate,
					tblInvTrackingDT.decValue,
					tblInvTrackingDT.decQty,
					tblInvTrackingDT.strLocName
			FROM tblInvTracking
			INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			WHERE (tblInvTrackingDT.bitService = 0)
			AND (tblInvTracking.intModule IN (1, 3, 4))
			AND (tblInvTrackingDT.strPartNumber = @SQPartNumber)
			AND (tblInvTracking.dteJournalDate <= @SQAsAt)
			AND (tblInvTracking.strSource LIKE 'PI%' 
				 OR tblInvTracking.strSource LIKE 'JB%' 
				 OR tblInvTracking.strSource LIKE 'IAS%' 
				 OR tblInvTracking.strSource LIKE 'GR%' 
				 OR tblInvTracking.strSource LIKE 'ITR%' 
				 OR tblInvTracking.strSource LIKE 'IAJ%' 
				 OR tblInvTracking.strSource LIKE 'IRP%')
			AND (tblInvTrackingDT.decQty > 0)
			AND (tblInvTrackingDT.strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQLocName,',')))
			ORDER BY tblInvTrackingDT.strLocName, 
					 tblInvTracking.dteJournalDate

		END
	ELSE
		BEGIN
		
			SELECT	tblInvTracking.dteJournalDate,
					tblInvTrackingDT.decValue,
					tblInvTrackingDT.decQty,
					tblInvTrackingDT.strLocName
			FROM tblInvTracking
			INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			WHERE (tblInvTrackingDT.bitService = 0)
			AND (tblInvTracking.intModule IN (1, 3, 4))
			AND (tblInvTrackingDT.strPartNumber = @SQPartNumber)
			AND (tblInvTracking.dteJournalDate <= @SQAsAt)
			AND (tblInvTracking.strSource LIKE 'PI%' 
				 OR tblInvTracking.strSource LIKE 'JB%' 
				 OR tblInvTracking.strSource LIKE 'IAS%' 
				 OR tblInvTracking.strSource LIKE 'GR%' 
				 OR tblInvTracking.strSource LIKE 'ITR%' 
				 OR tblInvTracking.strSource LIKE 'IAJ%' 
				 OR tblInvTracking.strSource LIKE 'IRP%')
			AND tblInvTrackingDT.decQty > 0
			ORDER BY tblInvTrackingDT.strLocName, 
					 tblInvTracking.dteJournalDate
		
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetInvAgedValuesForNewAgingSalesData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prGetInvAgedValuesForNewAgingSalesData]
	@SQPartNumber nvarchar(20) = '', 
	@SQAsAt smalldatetime = NULL,
	@SQLocName nvarchar(MAX) = '' 
AS
BEGIN
	SET NOCOUNT ON;

	IF LEN(@SQLocName) > 0
		BEGIN

			SELECT	SUM(tblInvTrackingDT.decValue) AS decSumValue,
					SUM(tblInvTrackingDT.decQty) AS decSumQty,
					tblInvTrackingDT.strLocName
			FROM tblInvTracking
			INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			WHERE (tblInvTrackingDT.bitService = 0)
			AND (tblInvTracking.intModule IN (2))
			AND (tblInvTrackingDT.strPartNumber = @SQPartNumber)
			AND (tblInvTracking.dteJournalDate <= @SQAsAt)
			AND (tblInvTracking.strSource LIKE 'IN%')
			AND (tblInvTrackingDT.strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQLocName,',')))
			GROUP BY tblInvTrackingDT.strLocName
			ORDER BY decSumValue DESC

		END
	ELSE
		BEGIN
		
			SELECT	SUM(tblInvTrackingDT.decValue) AS decSumValue,
					SUM(tblInvTrackingDT.decQty) AS decSumQty,
					tblInvTrackingDT.strLocName
			FROM tblInvTracking
			INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			WHERE (tblInvTrackingDT.bitService = 0)
			AND (tblInvTracking.intModule IN (2))
			AND (tblInvTrackingDT.strPartNumber = @SQPartNumber)
			AND (tblInvTracking.dteJournalDate <= @SQAsAt)
			AND (tblInvTracking.strSource LIKE 'IN%')
			GROUP BY tblInvTrackingDT.strLocName
			ORDER BY decSumValue DESC
		
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetInventoryItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetInventoryItems]
	@IsAllItemCategory AS BIT = NULL,
	@SQItemCategory AS nvarchar(20) = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllItemCategory = 1 
	BEGIN
		SELECT strPartNumber, strDesc, intType FROM tblInv WHERE (intType = 1) AND (bitInactive = 0) ORDER BY strPartNumber
	END
	ELSE 
	BEGIN
		SELECT strPartNumber, strDesc, intType FROM tblInv WHERE (intType = 1) AND (bitInactive = 0) AND strCategory = @SQItemCategory ORDER BY strPartNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetInventoryItemsBudget]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

 CREATE PROCEDURE [dbo].[prGetInventoryItemsBudget]                    
 @SQIsEditMode bit,                  
 @SQlngId bigint = NULL,              
 @SQstrEmpNumber nvarchar(50) = NULL,              
 @SQbitManual bit = 0              
 AS                      
 BEGIN                      
  SET NOCOUNT ON;         

  IF @SQlngId IS NOT NULL            
  BEGIN
	If @SQstrEmpNumber IS NOT NULL
	BEGIN
		IF ((SELECT ISNULL(lngProfileId,0) FROM tblEmployees WHERE strEmpNumber = @SQstrEmpNumber)) <> @SQlngId            
		BEGIN            
			SELECT bitSelected = 1,tblEmpMaterialIssueProfileDT.lngId, tblEmpMaterialIssueProfileDT.strPartNumber, tblInv.strDesc,         
			intType,strCategory,strUnitOfMeasure AS strUnit,decBudgetQty,intBudgetFrequency,        
			strBudgetFrequency = CASE intBudgetFrequency WHEN 5 THEN 'No Budget' WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly'            
			WHEN 2 THEN 'Quarterly' WHEN 3  THEN 'Monthly' WHEN 4 THEN 'Weekly' END                  
			FROM tblEmpMaterialIssueProfile                   
			INNER JOIN tblEmpMaterialIssueProfileDT ON tblEmpMaterialIssueProfile.lngId = tblEmpMaterialIssueProfileDT.lngProfileId                  
			INNER JOIN tblInv ON tblInv.strPartNumber = tblEmpMaterialIssueProfileDT.strPartNumber AND (intType = 1)                  
			WHERE tblEmpMaterialIssueProfile.lngId = @SQlngId              
			ORDER BY tblInv.strPartNumber          
		END             
		ELSE        
		BEGIN        
			SELECT bitSelected = 1,lngId=0,tblInv.strPartNumber,         
			tblInv.strDesc, intType,strCategory,strUnitOfMeasure AS strUnit,ISNULL(decBudgetQty,0) AS decBudgetQty,                  
			ISNULL(intBudgetFrequency,5) AS intBudgetFrequency,strBudgetFrequency = CASE ISNULL(intBudgetFrequency,5) WHEN 5 THEN 'No Budget'         
			WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3  THEN 'Monthly' WHEN 4 THEN 'Weekly' END            
			FROM tblInv        
			INNER JOIN tblEmpItemBudgetDT ON tblInv.strPartNumber = tblEmpItemBudgetDT.strPartNumber   AND strEmpNumber = @SQstrEmpNumber            
			WHERE (intType = 1)            
			ORDER BY tblInv.strPartNumber     
		END
	END
	ELSE
	BEGIN
		SELECT bitSelected = 1,tblEmpMaterialIssueProfileDT.lngId, tblEmpMaterialIssueProfileDT.strPartNumber, tblInv.strDesc,         
		intType,strCategory,strUnitOfMeasure AS strUnit,decBudgetQty,intBudgetFrequency,        
		strBudgetFrequency = CASE intBudgetFrequency WHEN 5 THEN 'No Budget' WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly'            
		WHEN 2 THEN 'Quarterly' WHEN 3  THEN 'Monthly' WHEN 4 THEN 'Weekly' END                  
		FROM tblEmpMaterialIssueProfile                   
		INNER JOIN tblEmpMaterialIssueProfileDT ON tblEmpMaterialIssueProfile.lngId = tblEmpMaterialIssueProfileDT.lngProfileId                  
		INNER JOIN tblInv ON tblInv.strPartNumber = tblEmpMaterialIssueProfileDT.strPartNumber AND (intType = 1)                  
		WHERE tblEmpMaterialIssueProfile.lngId = @SQlngId              
		ORDER BY tblInv.strPartNumber 
	END
  END
  ELSE        
  BEGIN        
	SELECT bitSelected = 1,lngId=0,tblInv.strPartNumber,         
	tblInv.strDesc, intType,strCategory,strUnitOfMeasure AS strUnit,ISNULL(decBudgetQty,0) AS decBudgetQty,                  
	ISNULL(intBudgetFrequency,5) AS intBudgetFrequency,strBudgetFrequency = CASE ISNULL(intBudgetFrequency,5) WHEN 5 THEN 'No Budget'         
	WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3  THEN 'Monthly' WHEN 4 THEN 'Weekly' END            
	FROM tblInv        
	INNER JOIN tblEmpItemBudgetDT ON tblInv.strPartNumber = tblEmpItemBudgetDT.strPartNumber   AND strEmpNumber = @SQstrEmpNumber            
	WHERE (intType = 1)            
	ORDER BY tblInv.strPartNumber          
  END      
 END
GO
/****** Object:  StoredProcedure [dbo].[prGetItemAccountSets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[prGetItemAccountSets]    Script Date: 2018-01-19 02:05:00 PM ******/
CREATE PROCEDURE [dbo].[prGetItemAccountSets]
	-- Add the parameters for the stored procedure here
	
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT * FROM tblAccountSets WHERE blnService = 0 AND blnInactive = 0
END
GO
/****** Object:  StoredProcedure [dbo].[prGetItemCategoryData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetItemCategoryData]
	
AS
BEGIN
	SET NOCOUNT ON;

	SELECT strCategory, strDesc FROM tblInvCat WHERE bitInactive = 0
END
GO
/****** Object:  StoredProcedure [dbo].[GetItemCategoryData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetItemCategoryData]
	
AS
BEGIN
	SET NOCOUNT ON;

	SELECT strCategory FROM tblInvCat WHERE bitInactive = 0
END
GO
/****** Object:  StoredProcedure [dbo].[prGetItemQuantityData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetItemQuantityData]
	@IsAllWarehouse AS BIT = NULL,
	@SQWarehouse AS nvarchar(10) = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllWarehouse = 1 
	BEGIN
		SELECT tblInv.strPartNumber AS ItemNo, tblInv.strDesc AS ItemDesc, tblInvExt.strLocName AS Warehouse, tblInvExt.decOnHand AS OnHand, tblInvExt.intReorderPoint AS ReOrder, tblInvExt.decOnOrder AS PurchaseOrder, tblInvExt.decAlloc AS SalesOrder, ((tblInvExt.decOnHand + tblInvExt.decOnOrder) - (tblInvExt.intReorderPoint + tblInvExt.decAlloc + tblInvExt.decManuf)) * -1 AS ToOrder, '' AS strVendName, '', '' AS OrderbyCol, tblInvExt.decManuf AS Manufactured FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.intReorderPoint + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0) AND tblInv.bitInactive = 0 ORDER BY ToOrder desc
	END
	ELSE
	BEGIN
		SELECT tblInv.strPartNumber AS ItemNo, tblInv.strDesc AS ItemDesc, tblInvExt.strLocName AS Warehouse, tblInvExt.decOnHand AS OnHand, tblInvExt.intReorderPoint AS ReOrder, tblInvExt.decOnOrder AS PurchaseOrder, tblInvExt.decAlloc AS SalesOrder, ((tblInvExt.decOnHand + tblInvExt.decOnOrder) - (tblInvExt.intReorderPoint + tblInvExt.decAlloc + tblInvExt.decManuf)) * -1 AS ToOrder, '' AS strVendName, '', '' AS OrderbyCol, tblInvExt.decManuf AS Manufactured FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.intReorderPoint + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0) AND ( tblInvExt.strLocName = @SQWarehouse) AND tblInv.bitInactive = 0 ORDER BY ToOrder desc
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetItemSalesReportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetItemSalesReportData]
	@IsAllItemCategory AS BIT = NULL,
	@IsAllItem AS BIT = NULL,
	@IsAllWarehouse AS BIT = NULL,
	@SQPartNumber AS nvarchar(50) = NULL,
	@SQPartCategory AS nvarchar(20) = NULL,
	@SQWarehouse AS nvarchar(10) = NULL,
	@SQStart AS datetime = NULL, 
	@SQEnd AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllItemCategory = 1 AND @IsAllItem = 0
		BEGIN
			IF @IsAllWarehouse = 0
				BEGIN
					SELECT tblInvTrackingDT.strPartNumber AS ItemNumber
								,tblInv.strDesc AS ItemDescription
								,COUNT(tblInvTrackingDT.strPartNumber) AS No_Trans
								,SUM(tblInvTrackingDT.decQty) * - 1 AS Sale_Qty
								,SUM(tblInvTrackingDT.decValue) * - 1 AS Value
								,SUM(tblInvTrackingDT.decRevenue) AS Revenue
								,SUM(tblInvTrackingDT.decCOGS) AS COGS
								,SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS PROFIT
								,'' AS OrderByCol
								,strCategory
							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
							INNER JOIN (
								SELECT DISTINCT tblJournal.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEnt
								INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
								WHERE tblJournal.dteJournalDate BETWEEN  @SQStart 
										AND  @SQEnd 
	
								UNION ALL
	
								SELECT DISTINCT tblJournalLY.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEntLY
								INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
								WHERE tblJournalLY.dteJournalDate BETWEEN  @SQStart 
										AND  @SQEnd   
	
								UNION ALL
	
								SELECT DISTINCT tblJournalHist.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEntHist
								INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID
								WHERE tblJournalHist.dteJournalDate BETWEEN  @SQStart 
										AND  @SQEnd   
								) Z ON tblInvTracking.lngJourID = Z.lngJourID
								AND tblInvTracking.strSource = Z.strSource
							WHERE tblInvTracking.intModule = 2
								AND tblInv.intType = 1
								AND tblInv.bitInactive = 0
								AND tblInvTracking.dteJournalDate BETWEEN  @SQStart 
										AND  @SQEnd 
						AND tblInvTrackingDT.strPartNumber =  @SQPartNumber 
						AND tblInvTrackingDT.strLocName =  @SQWarehouse  
					GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, strCategory ORDER BY OrderByCol,tblInvTrackingDT.strPartNumber  
				END
			ELSE
				BEGIN
					SELECT tblInvTrackingDT.strPartNumber AS ItemNumber
								,tblInv.strDesc AS ItemDescription
								,COUNT(tblInvTrackingDT.strPartNumber) AS No_Trans
								,SUM(tblInvTrackingDT.decQty) * - 1 AS Sale_Qty
								,SUM(tblInvTrackingDT.decValue) * - 1 AS Value
								,SUM(tblInvTrackingDT.decRevenue) AS Revenue
								,SUM(tblInvTrackingDT.decCOGS) AS COGS
								,SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS PROFIT
								,'' AS OrderByCol
								,strCategory
							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
							INNER JOIN (
								SELECT DISTINCT tblJournal.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEnt
								INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
								WHERE tblJournal.dteJournalDate BETWEEN  @SQStart  
										AND  @SQEnd  
	
								UNION ALL
	
								SELECT DISTINCT tblJournalLY.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEntLY
								INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
								WHERE tblJournalLY.dteJournalDate BETWEEN  @SQStart 
										AND @SQEnd   
	
								UNION ALL
	
								SELECT DISTINCT tblJournalHist.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEntHist
								INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID
								WHERE tblJournalHist.dteJournalDate BETWEEN  @SQStart  
										AND  @SQEnd   
								) Z ON tblInvTracking.lngJourID = Z.lngJourID
								AND tblInvTracking.strSource = Z.strSource
							WHERE tblInvTracking.intModule = 2
								AND tblInv.intType = 1
								AND tblInv.bitInactive = 0
								AND tblInvTracking.dteJournalDate BETWEEN  @SQStart  
										AND  @SQEnd 
					            AND tblInvTrackingDT.strPartNumber =  @SQPartNumber  
						GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, strCategory ORDER BY OrderByCol,tblInvTrackingDT.strPartNumber  
				END
		END
	ELSE IF @IsAllItemCategory = 0 AND @IsAllItem = 1
		BEGIN
			IF @IsAllWarehouse = 0
				BEGIN
					SELECT tblInvTrackingDT.strPartNumber AS ItemNumber
								,tblInv.strDesc AS ItemDescription
								,COUNT(tblInvTrackingDT.strPartNumber) AS No_Trans
								,SUM(tblInvTrackingDT.decQty) * - 1 AS Sale_Qty
								,SUM(tblInvTrackingDT.decValue) * - 1 AS Value
								,SUM(tblInvTrackingDT.decRevenue) AS Revenue
								,SUM(tblInvTrackingDT.decCOGS) AS COGS
								,SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS PROFIT
								,'' AS OrderByCol
								,strCategory
							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
							INNER JOIN (
								SELECT DISTINCT tblJournal.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEnt
								INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
								WHERE tblJournal.dteJournalDate BETWEEN  @SQStart 
										AND  @SQEnd  
	
								UNION ALL
	
								SELECT DISTINCT tblJournalLY.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEntLY
								INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
								WHERE tblJournalLY.dteJournalDate BETWEEN  @SQStart 
										AND @SQEnd
	
								UNION ALL
	
								SELECT DISTINCT tblJournalHist.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEntHist
								INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID
								WHERE tblJournalHist.dteJournalDate BETWEEN  @SQStart 
										AND  @SQEnd   
								) Z ON tblInvTracking.lngJourID = Z.lngJourID
								AND tblInvTracking.strSource = Z.strSource
							WHERE tblInvTracking.intModule = 2
								AND tblInv.intType = 1
								AND tblInv.bitInactive = 0
								AND tblInvTracking.dteJournalDate BETWEEN  @SQStart  
										AND @SQEnd 
					 AND strCategory = @SQPartCategory  
					 AND tblInvTrackingDT.strLocName =  @SQWarehouse 
					  GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, strCategory ORDER BY OrderByCol,tblInvTrackingDT.strPartNumber  
				END
			ELSE
				BEGIN
					SELECT tblInvTrackingDT.strPartNumber AS ItemNumber
								,tblInv.strDesc AS ItemDescription
								,COUNT(tblInvTrackingDT.strPartNumber) AS No_Trans
								,SUM(tblInvTrackingDT.decQty) * - 1 AS Sale_Qty
								,SUM(tblInvTrackingDT.decValue) * - 1 AS Value
								,SUM(tblInvTrackingDT.decRevenue) AS Revenue
								,SUM(tblInvTrackingDT.decCOGS) AS COGS
								,SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS PROFIT
								,'' AS OrderByCol
								,strCategory
							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
							INNER JOIN (
								SELECT DISTINCT tblJournal.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEnt
								INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
								WHERE tblJournal.dteJournalDate BETWEEN  @SQStart  
										AND  @SQEnd 
	
								UNION ALL
	
								SELECT DISTINCT tblJournalLY.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEntLY
								INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
								WHERE tblJournalLY.dteJournalDate BETWEEN @SQStart 
										AND @SQEnd   
	
								UNION ALL
	
								SELECT DISTINCT tblJournalHist.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEntHist
								INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID
								WHERE tblJournalHist.dteJournalDate BETWEEN @SQStart  
										AND  @SQEnd  
								) Z ON tblInvTracking.lngJourID = Z.lngJourID
								AND tblInvTracking.strSource = Z.strSource
							WHERE tblInvTracking.intModule = 2
								AND tblInv.intType = 1
								AND tblInv.bitInactive = 0
								AND tblInvTracking.dteJournalDate BETWEEN  @SQStart  
										AND  @SQEnd   
							AND strCategory =  @SQPartCategory  
							GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, strCategory ORDER BY OrderByCol,tblInvTrackingDT.strPartNumber  
				END
		END
	ELSE IF @IsAllItemCategory = 0 AND @IsAllItem = 0
		BEGIN
			BEGIN
				IF @IsAllWarehouse = 0
					BEGIN
						SELECT tblInvTrackingDT.strPartNumber AS ItemNumber
								,tblInv.strDesc AS ItemDescription
								,COUNT(tblInvTrackingDT.strPartNumber) AS No_Trans
								,SUM(tblInvTrackingDT.decQty) * - 1 AS Sale_Qty
								,SUM(tblInvTrackingDT.decValue) * - 1 AS Value
								,SUM(tblInvTrackingDT.decRevenue) AS Revenue
								,SUM(tblInvTrackingDT.decCOGS) AS COGS
								,SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS PROFIT
								,'' AS OrderByCol
								,strCategory
							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
							INNER JOIN (
								SELECT DISTINCT tblJournal.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEnt
								INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
								WHERE tblJournal.dteJournalDate BETWEEN  @SQStart 
										AND @SQEnd 
	
								UNION ALL
	
								SELECT DISTINCT tblJournalLY.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEntLY
								INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
								WHERE tblJournalLY.dteJournalDate BETWEEN  @SQStart  
										AND  @SQEnd  
	
								UNION ALL
	
								SELECT DISTINCT tblJournalHist.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEntHist
								INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID
								WHERE tblJournalHist.dteJournalDate BETWEEN  @SQStart 
										AND  @SQEnd  
								) Z ON tblInvTracking.lngJourID = Z.lngJourID
								AND tblInvTracking.strSource = Z.strSource
							WHERE tblInvTracking.intModule = 2
								AND tblInv.intType = 1
								AND tblInv.bitInactive = 0
								AND tblInvTracking.dteJournalDate BETWEEN  @SQStart  
										AND  @SQEnd 
						 AND tblInvTrackingDT.strPartNumber =  @SQPartNumber  AND strCategory =  @SQPartCategory  
						AND tblInvTrackingDT.strLocName = @SQWarehouse  
						GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, strCategory ORDER BY OrderByCol,tblInvTrackingDT.strPartNumber  
					END
				ELSE
					BEGIN
						SELECT tblInvTrackingDT.strPartNumber AS ItemNumber
								,tblInv.strDesc AS ItemDescription
								,COUNT(tblInvTrackingDT.strPartNumber) AS No_Trans
								,SUM(tblInvTrackingDT.decQty) * - 1 AS Sale_Qty
								,SUM(tblInvTrackingDT.decValue) * - 1 AS Value
								,SUM(tblInvTrackingDT.decRevenue) AS Revenue
								,SUM(tblInvTrackingDT.decCOGS) AS COGS
								,SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS PROFIT
								,'' AS OrderByCol
								,strCategory
							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
							INNER JOIN (
								SELECT DISTINCT tblJournal.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEnt
								INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
								WHERE tblJournal.dteJournalDate BETWEEN  @SQStart 
										AND  @SQEnd  
	
								UNION ALL
	
								SELECT DISTINCT tblJournalLY.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEntLY
								INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
								WHERE tblJournalLY.dteJournalDate BETWEEN  @SQStart 
										AND @SQEnd   
	
								UNION ALL
	
								SELECT DISTINCT tblJournalHist.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEntHist
								INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID
								WHERE tblJournalHist.dteJournalDate BETWEEN  @SQStart  
										AND  @SQEnd   
								) Z ON tblInvTracking.lngJourID = Z.lngJourID
								AND tblInvTracking.strSource = Z.strSource
							WHERE tblInvTracking.intModule = 2
								AND tblInv.intType = 1
								AND tblInv.bitInactive = 0
								AND tblInvTracking.dteJournalDate BETWEEN @SQStart  
										AND  @SQEnd  

						AND tblInvTrackingDT.strPartNumber =  @SQPartNumber AND strCategory = @SQPartCategory  
						GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, strCategory ORDER BY OrderByCol,tblInvTrackingDT.strPartNumber  
					END
			END
		END
	ELSE IF @IsAllItemCategory = 1 AND @IsAllItem = 1
		BEGIN
			BEGIN
				IF @IsAllWarehouse = 0
					BEGIN
						SELECT tblInvTrackingDT.strPartNumber AS ItemNumber
								,tblInv.strDesc AS ItemDescription
								,COUNT(tblInvTrackingDT.strPartNumber) AS No_Trans
								,SUM(tblInvTrackingDT.decQty) * - 1 AS Sale_Qty
								,SUM(tblInvTrackingDT.decValue) * - 1 AS Value
								,SUM(tblInvTrackingDT.decRevenue) AS Revenue
								,SUM(tblInvTrackingDT.decCOGS) AS COGS
								,SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS PROFIT
								,'' AS OrderByCol
								,strCategory
							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
							INNER JOIN (
								SELECT DISTINCT tblJournal.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEnt
								INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
								WHERE tblJournal.dteJournalDate BETWEEN  @SQStart 
										AND  @SQEnd  
	
								UNION ALL
	
								SELECT DISTINCT tblJournalLY.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEntLY
								INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
								WHERE tblJournalLY.dteJournalDate BETWEEN @SQStart  
										AND  @SQEnd   
	
								UNION ALL
	
								SELECT DISTINCT tblJournalHist.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEntHist
								INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID
								WHERE tblJournalHist.dteJournalDate BETWEEN  @SQStart 
										AND  @SQEnd  
								) Z ON tblInvTracking.lngJourID = Z.lngJourID
								AND tblInvTracking.strSource = Z.strSource
							WHERE tblInvTracking.intModule = 2
								AND tblInv.intType = 1
								AND tblInv.bitInactive = 0
								AND tblInvTracking.dteJournalDate BETWEEN  @SQStart 
										AND  @SQEnd 
						 AND tblInvTrackingDT.strLocName = @SQWarehouse 
						 GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, strCategory ORDER BY OrderByCol,tblInvTrackingDT.strPartNumber  
					END
				ELSE
					BEGIN
						SELECT tblInvTrackingDT.strPartNumber AS ItemNumber
								,tblInv.strDesc AS ItemDescription
								,COUNT(tblInvTrackingDT.strPartNumber) AS No_Trans
								,SUM(tblInvTrackingDT.decQty) * - 1 AS Sale_Qty
								,SUM(tblInvTrackingDT.decValue) * - 1 AS Value
								,SUM(tblInvTrackingDT.decRevenue) AS Revenue
								,SUM(tblInvTrackingDT.decCOGS) AS COGS
								,SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS PROFIT
								,'' AS OrderByCol
								,strCategory
							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
							INNER JOIN (
								SELECT DISTINCT tblJournal.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEnt
								INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
								WHERE tblJournal.dteJournalDate BETWEEN  @SQStart 
										AND @SQEnd  
	
								UNION ALL
	
								SELECT DISTINCT tblJournalLY.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEntLY
								INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
								WHERE tblJournalLY.dteJournalDate BETWEEN  @SQStart  
										AND @SQEnd   
	
								UNION ALL
	
								SELECT DISTINCT tblJournalHist.lngJourID
									,intDept
									,dteJournalDate
									,strSource
								FROM tblJournalEntHist
								INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID
								WHERE tblJournalHist.dteJournalDate BETWEEN  @SQStart  
										AND  @SQEnd   
								) Z ON tblInvTracking.lngJourID = Z.lngJourID
								AND tblInvTracking.strSource = Z.strSource
							WHERE tblInvTracking.intModule = 2
								AND tblInv.intType = 1
								AND tblInv.bitInactive = 0
								AND tblInvTracking.dteJournalDate BETWEEN  @SQStart  
										AND  @SQEnd 
							GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, strCategory ORDER BY OrderByCol,tblInvTrackingDT.strPartNumber  
					END
			END
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetItemsData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetItemsData]
	@SQUserName AS nvarchar(20) = NULL,
	@BPToolsMode AS BIT = NULL,
	@InvSortDescription AS BIT = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @BPToolsMode = 0
		BEGIN
			IF @InvSortDescription = 0 
				BEGIN
					SELECT strPartNumber, strDesc, intType FROM tblInv WHERE (intType = 1) AND (bitInactive = 0)
					 AND strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = @SQUserName ))  
					 ORDER BY strPartNumber 
				END
			ELSE 
				BEGIN
					SELECT strPartNumber, strDesc, intType FROM tblInv WHERE (intType = 1) AND (bitInactive = 0)
					 AND strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = @SQUserName ))  
					 ORDER BY strDesc 
				END
		END
	ELSE
		BEGIN
			IF @InvSortDescription = 0 
				BEGIN
					SELECT strPartNumber, strDesc, intType FROM tblInv WHERE (intType = 1) AND (bitInactive = 0)
					ORDER BY strPartNumber 
				END
			ELSE 
				BEGIN
					SELECT strPartNumber, strDesc, intType FROM tblInv WHERE (intType = 1) AND (bitInactive = 0) 
					 ORDER BY strDesc 
				END
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetItemsForInvLocationBin]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[prGetItemsForInvLocationBin]    Script Date: 2018-01-19 02:05:00 PM ******/
CREATE PROCEDURE [dbo].[prGetItemsForInvLocationBin]
	-- Add the parameters for the stored procedure here
	@SQstrLocationName nvarchar(10),
	@SQstrBinCode nvarchar(50)
AS
BEGIN
	If(Exists(SELECT TOP 1 tblInvLocBin.lngId FROM tblInvLocBin WHERE tblInvLocBin.strBinCode = @SQstrBinCode and tblInvLocBin.strLocName = @SQstrLocationName) AND Exists(SELECT  TOP 1  tblInvExt.strPartNumber FROM tblInvExt WHERE tblInvExt.strLocName = @SQstrLocationName))
	BEGIN
		SELECT 
			tblInv.strPartNumber,
			tblInv.strDesc,
			tblInv.strCategory,
			tblInvExtBin.strLocName,
			tblInvExtBin.lngBinId,
			tblInvExt.strAcctSet,
			(SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblInvExtBin.lngBinId) AS strBinCode,
			ISNULL(tblInvExtBin.decMaximumQty,0) AS decMaximumQty,
			ISNULL(tblInvExtBin.bitAllowed,0) AS bitAllowed,
			ISNULL(tblInvExtBin.bitDefault,0) AS bitDefault,
			ISNULL(tblInvExtBin.decOnHand,0) AS decOnHand,
			ISNULL(tblInvExtBin.decAlloc,0) AS decAlloc,
			ISNULL(tblInvExtBin.decAvail,0) AS decAvail,
			IsAllowEditing=CAST((CASE WHEN (select count(*) from tblInvTrackingDTBin where lngBinID = tblInvExtBin.lngBinId)>0 Then 0 Else 1 End) As Bit),
			intItemType=tblInv.intType
			,ISNULL(tblInvExt.bitInactive,ISNULL((Select invE.bitInactive from tblInvExt as invE where invE.strLocName= @SQstrLocationName and tblInv.strPartNumber=invE.strPartNumber),0)) as bitInactive
		FROM 
			tblInv LEFT JOIN tblInvExtBin
			ON tblInv.strPartNumber = tblInvExtBin.strPartNumber 
			AND tblInvExtBin.strLocName = @SQstrLocationName
			AND tblInvExtBin.lngBinId IN (SELECT lngId FROM tblInvLocBin WHERE strBinCode = @SQstrBinCode)
			LEFT JOIN tblInvExt ON tblInvExt.strPartNumber = tblInv.strPartNumber AND tblInvExt.strLocName = tblInvExtBin.strLocName
		WHERE
			tblInv.bitInactive = 0 
			AND tblInv.intType = 1
	END	
	Else
	BEGIN
		If(Exists(SELECT  TOP 1  tblInvExt.strPartNumber FROM tblInvExt WHERE tblInvExt.strLocName = @SQstrLocationName))
		BEGIN

			SELECT 
				tblInv.strPartNumber,
				tblInv.strDesc,
				tblInv.strCategory,
				tblInvExt.strLocName,
				NULL AS lngBinId,
				tblInvExt.strAcctSet,
				NULL AS strBinCode,
				0 AS decMaximumQty,
				0 AS bitAllowed,
				0 AS bitDefault,
				0 AS decOnHand,
				0 AS decAlloc,
				0 AS decAvail,
				IsAllowEditing=1,
				intItemType=tblInv.intType
				,ISNULL(tblInvExt.bitInactive,ISNULL((Select invE.bitInactive from tblInvExt as invE where invE.strLocName= @SQstrLocationName and tblInv.strPartNumber=invE.strPartNumber),0)) as bitInactive
			FROM 
				tblInv 
				LEFT JOIN tblInvExt ON tblInvExt.strPartNumber = tblInv.strPartNumber
				AND tblInvExt.strLocName = @SQstrLocationName
			WHERE
				tblInv.bitInactive = 0 
				AND tblInv.intType = 1
		END
		ELSE
		BEGIN
			SELECT 
				tblInv.strPartNumber,
				tblInv.strDesc,
				tblInv.strCategory,
				NULL AS strLocName,
				NULL AS lngBinId,
				NULL AS strAcctSet,
				NULL AS strBinCode,
				0 AS decMaximumQty,
				0 AS bitAllowed,
				0 AS bitDefault,
				0 AS decOnHand,
				0 AS decAlloc,
				0 AS decAvail,
				IsAllowEditing=1,
				intItemType=tblInv.intType
				,0 as bitInactive
			FROM 
				tblInv 
			WHERE
				tblInv.bitInactive = 0 
				AND tblInv.intType = 1
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetLocationBins]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[prGetLocationBins]    Script Date: 10-04-2018 06:10:57 PM ******/
CREATE PROCEDURE [dbo].[prGetLocationBins]
 -- Add the parameters for the stored procedure here
 @SQstrLocationName nvarchar(10),
 @SQstrPartNumber nvarchar(50),
 @SQstrSearchText nvarchar(100) = NULL,
 @SQstrBinIds nvarchar(100) = NULL,
 @SQblnZeroOnHand BIT = NULL,
 @SQstrUserName nvarchar(20) = NULL
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;

    -- Insert statements for procedure here
	
	IF @SQblnZeroOnHand = 0
	BEGIN		
		SELECT 
		IBE.lngBinId,
		ILB.strBinCode,
		ILB.strDescription,
		IBE.strLocName,
		IBE.strPartNumber,
		decMaximumQty,
		decAvail=decOnHand,
		decOnHand,
		0.00 As decIssueQty,
		ISNULL(INV.bitInvSerialType,0) AS bitInvSerialType,
		ILB.bitPickingBin,
		ILB.bitReceivingBin,
		ISNULL((SELECT COUNT(tblInvLocBinSec.strBinCode) FROM tblInvLocBinSec (NOLOCK) WHERE tblInvLocBinSec.strBinCode = ILB.strBinCode AND tblInvLocBinSec.strLocName = IBE.strLocName), 0) AS [NoOfBinCode],
		ISNULL(tblInvLocBinSec.strUserName, '') AS [UserName],
		0.00 As decOldQty
		FROM 
		tblInvExtBin (NOLOCK) IBE
		INNER JOIN tblInvLocBin (NOLOCK) ILB ON ILB.strLocName = IBE.strLocName AND ILB.lngId = IBE.lngBinId AND bitInactive = 0
		LEFT JOIN tblInvLocBinSec (NOLOCK) ON ILB.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = ILB.strLocName AND tblInvLocBinSec.strUserName = @SQstrUserName
		LEFT JOIN tblInv (NOLOCK) INV ON INV.strPartNumber = IBE.strPartNumber  
		WHERE
		IBE.strLocName = @SQstrLocationName AND IBE.strPartNumber = @SQstrPartNumber AND IBE.bitAllowed = 1 AND
		(ILB.strBinCode = @SQstrSearchText OR @SQstrSearchText IS NULL) AND
		(ILB.lngId IN (Select CAST(Value AS bigint) From dbo.fnSplitStringAsTable(@SQstrBinIds,',')) OR @SQstrBinIds IS NULL)
		ORDER BY
		IBE.bitDefault, IBE.decOnHand desc
	END
	ELSE
	BEGIN	
		SELECT 
		IBE.lngBinId,
		ILB.strBinCode,
		ILB.strDescription,
		IBE.strLocName,
		IBE.strPartNumber,
		decMaximumQty,
		decAvail=decOnHand,
		decOnHand,
		0.00 As decIssueQty,
		ISNULL(INV.bitInvSerialType,0) AS bitInvSerialType,
		ILB.bitPickingBin,
		ILB.bitReceivingBin,
		ISNULL((SELECT COUNT(tblInvLocBinSec.strBinCode) FROM tblInvLocBinSec WHERE tblInvLocBinSec.strBinCode = ILB.strBinCode AND tblInvLocBinSec.strLocName = IBE.strLocName), 0) AS [NoOfBinCode],
		ISNULL(tblInvLocBinSec.strUserName, '') AS [UserName],
		0.00 As decOldQty
		FROM 
		tblInvExtBin (NOLOCK) IBE
		INNER JOIN tblInvLocBin (NOLOCK) ILB ON ILB.strLocName = IBE.strLocName AND ILB.lngId = IBE.lngBinId AND bitInactive = 0
		LEFT JOIN tblInvLocBinSec (NOLOCK) ON ILB.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = ILB.strLocName AND tblInvLocBinSec.strUserName = @SQstrUserName
		LEFT JOIN tblInv (NOLOCK) INV ON INV.strPartNumber = IBE.strPartNumber  
		WHERE
		IBE.strLocName = @SQstrLocationName AND IBE.strPartNumber = @SQstrPartNumber AND IBE.bitAllowed = 1 AND
		(ILB.strBinCode = @SQstrSearchText OR @SQstrSearchText IS NULL) AND
		(ILB.lngId IN (Select CAST(Value AS bigint) From dbo.fnSplitStringAsTable(@SQstrBinIds,',')) OR @SQstrBinIds IS NULL) AND IBE.decOnHand = 0
		ORDER BY
		IBE.bitDefault, IBE.decOnHand desc
	END 	
END

GO
/****** Object:  StoredProcedure [dbo].[prGetMaxPurchaseDateForInvAgedValues]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prGetMaxPurchaseDateForInvAgedValues]
	@SQPartNumber nvarchar(20) = '', 
	@SQAsAt smalldatetime = NULL,
	@SQLocName nvarchar(10) = '' 
AS
BEGIN
	SET NOCOUNT ON;

	IF LEN(@SQLocName) > 0
		BEGIN

			SELECT ISNULL(MAX(tblInvTracking.dteJournalDate),'')
			FROM tblInvTracking
			INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			WHERE (tblInvTrackingDT.bitService = 0)
			AND (tblInvTracking.intModule IN (1, 3))
			AND (tblInvTrackingDT.strPartNumber = @SQPartNumber)
			AND (tblInvTracking.dteJournalDate <= @SQAsAt)
			AND (tblInvTracking.strSource LIKE 'PI%' 
				 OR tblInvTracking.strSource LIKE 'JB%' 
				 OR tblInvTracking.strSource LIKE 'IAS%') 
			AND (tblInvTrackingDT.decQty > 0)
			AND (tblInvTrackingDT.strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQLocName,',')))

		END
	ELSE
		BEGIN
		
			SELECT ISNULL(MAX(tblInvTracking.dteJournalDate),'')
			FROM tblInvTracking
			INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			WHERE (tblInvTrackingDT.bitService = 0)
			AND (tblInvTracking.intModule IN (1, 3))
			AND (tblInvTrackingDT.strPartNumber = @SQPartNumber)
			AND (tblInvTracking.dteJournalDate <= @SQAsAt)
			AND (tblInvTracking.strSource LIKE 'PI%' 
				 OR tblInvTracking.strSource LIKE 'JB%' 
				 OR tblInvTracking.strSource LIKE 'IAS%') 
			AND (tblInvTrackingDT.decQty > 0)
		
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetOpenPickTicketsData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetOpenPickTicketsData]
	@WHJournalStartDate AS datetime = NULL,
	@WHJournalEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT strOrdDocID
					,dteJournalDate
					,dteRequired
					,strUserName
					,strCustName
					,strReference
					,CASE 
						WHEN (
								SELECT COUNT(Z.strLocation)
								FROM (
									SELECT strLocation
									FROM tblOrderDocDT
									WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
									GROUP BY strLocation
									) Z
								) > 1
							THEN '<MULTIPLE>'
						ELSE ISNULL((
									SELECT strLocation
									FROM tblOrderDocDT
									WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
									GROUP BY strLocation
									), '')
						END AS Location
					,ISNULL((
							SELECT CAST(intDept AS NVARCHAR(4)) + ' ' + strDesc
							FROM tblDepartments
							WHERE (intDept = tblOrderDoc.intDept)
							), '') AS Department
					,(
						SELECT COUNT(strOrdDocID)
						FROM tblOrderDocDT
						WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
						) AS TotalItems
					,(
						SELECT COUNT(strOrdDocID)
						FROM tblOrderDocDT
						WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
							AND (decQtyRemaining > 0)
						) AS ItemsRemain
					,'Picked' AS PickStatus
					,CASE 
						WHEN '%%' = '%%'
							THEN 1
						ELSE ISNULL((
									SELECT COUNT(strLocation)
									FROM tblOrderDocDT
									WHERE (strOrdDocID = tblOrderDoc.strOrdDocID)
										AND (strLocation = '%%')
									GROUP BY strLocation
									), 0)
						END
				FROM tblOrderDoc
				WHERE (intDocType = 1)
					AND (bitCleared = 0)
					AND (
						strOrdDocID IN (
							SELECT strOrdDocID
							FROM tblPickTickets
							WHERE bitCleared = 0
								AND bitPicked = 1
							)
						)
					AND dteJournalDate BETWEEN @WHJournalStartDate
						AND @WHJournalEndDate
				ORDER BY strOrdDocID DESC
END
GO
/****** Object:  StoredProcedure [dbo].[prGetOpenQtyAndValueFromInvItemAndLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetOpenQtyAndValueFromInvItemAndLocation]
(
	@SQPartNumber AS nvarchar(max) = '',
	@SQLocName AS nvarchar(max) = ''
)
AS
BEGIN
	SET NOCOUNT ON;

	IF LEN(@SQLocName) > 0
		BEGIN
			SELECT decOpenQty, decOpenValue FROM tblInvExt WHERE strPartNumber = @SQPartNumber AND (strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQLocName,',')))
		END
	ELSE
		BEGIN
			SELECT decOpenQty, decOpenValue FROM tblInvExt WHERE strPartNumber = @SQPartNumber 
		END		
END
GO
/****** Object:  StoredProcedure [dbo].[prGetPayableData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetPayableData]
	@VendCategory AS nvarchar(20) = NULL,
	@IsAllVendorCategory AS bit = NULL,
	@ToDate AS datetime = NULL,
	@SQUserName AS nvarchar(20) = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllVendorCategory = 0 
		BEGIN
			SELECT MASTERTABLE.strVendName AS VendName
							,tblVendors.strVendDesc AS VendDesc
							,tblVendors.strTerm AS Term
							,MASTERTABLE.dteDueDate AS DueDate
							,SUM(tblVendTransDT.decAmount) AS Amount
							,MASTERTABLE.dteJournalDate AS JournalDate
							,ISNULL(tblVendors.strVendCategory, '') AS VendCate
							,DATEPART(m, MASTERTABLE.dteJournalDate) AS Month
							,DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS Year
							,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) AS [Month-Year]
						FROM tblVendTrans AS MASTERTABLE
						INNER JOIN tblVendors ON MASTERTABLE.strVendName = tblVendors.strVendName
						INNER JOIN tblVendTransDT ON MASTERTABLE.lngVendTrID = tblVendTransDT.lngVendTrID
						WHERE tblVendors.strVendCategory IN (
								SELECT tblVendorCat.strVendCategory
								FROM tblVendorCat
								LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
								WHERE ISNULL((
											SELECT COUNT(tblVendorCatSec.strVendCategory)
											FROM tblVendorCatSec
											WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblVendorCatSec.strVendCategory)
												FROM tblVendorCatSec
												WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
												), 0) > 0
										AND tblVendorCatSec.strUserName = @SQUserName
										)
								)
							AND tblVendTransDT.bitReversed = 0
							AND tblVendTransDT.dteJournalDate <= @ToDate
							AND tblVendTransDT.lngVendTrID NOT IN (
								SELECT tblVendTransDT.lngVendTrID
								FROM tblVendTrans
								INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
								WHERE tblVendTrans.strVendName = MASTERTABLE.strVendName
									AND tblVendTransDT.bitReversed = 0
									AND tblVendTransDT.dteJournalDate <= @ToDate
								GROUP BY tblVendTransDT.lngVendTrID
								HAVING SUM(tblVendTransDT.decAmount) = 0
									AND SUM(tblVendTransDT.decAmountF) = 0
								)
							AND tblVendors.strVendCategory = @VendCategory
							GROUP BY MASTERTABLE.strVendName, tblVendors.strVendDesc, tblVendors.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblVendors.strVendCategory, DATEPART(m, MASTERTABLE.dteJournalDate), DATEPART(yyyy, MASTERTABLE.dteJournalDate), CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) ORDER BY tblVendors.strTerm, LTRIM(RTRIM(MASTERTABLE.strVendName)) 
		END
	ELSE
		BEGIN
			SELECT MASTERTABLE.strVendName AS VendName
							,tblVendors.strVendDesc AS VendDesc
							,tblVendors.strTerm AS Term
							,MASTERTABLE.dteDueDate AS DueDate
							,SUM(tblVendTransDT.decAmount) AS Amount
							,MASTERTABLE.dteJournalDate AS JournalDate
							,ISNULL(tblVendors.strVendCategory, '') AS VendCate
							,DATEPART(m, MASTERTABLE.dteJournalDate) AS Month
							,DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS Year
							,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) AS [Month-Year]
						FROM tblVendTrans AS MASTERTABLE
						INNER JOIN tblVendors ON MASTERTABLE.strVendName = tblVendors.strVendName
						INNER JOIN tblVendTransDT ON MASTERTABLE.lngVendTrID = tblVendTransDT.lngVendTrID
						WHERE tblVendors.strVendCategory IN (
								SELECT tblVendorCat.strVendCategory
								FROM tblVendorCat
								LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
								WHERE ISNULL((
											SELECT COUNT(tblVendorCatSec.strVendCategory)
											FROM tblVendorCatSec
											WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblVendorCatSec.strVendCategory)
												FROM tblVendorCatSec
												WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
												), 0) > 0
										AND tblVendorCatSec.strUserName = @SQUserName
										)
								)
							AND tblVendTransDT.bitReversed = 0
							AND tblVendTransDT.dteJournalDate <= @ToDate
							AND tblVendTransDT.lngVendTrID NOT IN (
								SELECT tblVendTransDT.lngVendTrID
								FROM tblVendTrans
								INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
								WHERE tblVendTrans.strVendName = MASTERTABLE.strVendName
									AND tblVendTransDT.bitReversed = 0
									AND tblVendTransDT.dteJournalDate <= @ToDate
								GROUP BY tblVendTransDT.lngVendTrID
								HAVING SUM(tblVendTransDT.decAmount) = 0
									AND SUM(tblVendTransDT.decAmountF) = 0
								)
								GROUP BY MASTERTABLE.strVendName, tblVendors.strVendDesc, tblVendors.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblVendors.strVendCategory, DATEPART(m, MASTERTABLE.dteJournalDate), DATEPART(yyyy, MASTERTABLE.dteJournalDate), CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) ORDER BY tblVendors.strTerm, LTRIM(RTRIM(MASTERTABLE.strVendName)) 
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetPayableMonthData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetPayableMonthData]
	@VendCategory AS nvarchar(20) = NULL,
	@IsAllVendorCategory AS bit = NULL,
	@ToDate AS datetime = NULL,
	@SQUserName AS nvarchar(20) = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllVendorCategory = 0 
		BEGIN
			SELECT MASTERTABLE.strVendName AS VendName
								,tblVendors.strVendDesc AS VendDesc
								,tblVendors.strTerm AS Term
								,MASTERTABLE.dteDueDate AS DueDate
								,SUM(tblVendTransDT.decAmount) AS Amount
								,MASTERTABLE.dteJournalDate AS JournalDate
								,ISNULL(tblVendors.strVendCategory, '') AS VendCate
								,DATEPART(m, MASTERTABLE.dteJournalDate) AS Month
								,DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS Year
								,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) AS [Month-Year]
							FROM tblVendTrans AS MASTERTABLE
							INNER JOIN tblVendors ON MASTERTABLE.strVendName = tblVendors.strVendName
							INNER JOIN tblVendTransDT ON MASTERTABLE.lngVendTrID = tblVendTransDT.lngVendTrID
							WHERE tblVendors.strVendCategory IN (
									SELECT tblVendorCat.strVendCategory
									FROM tblVendorCat
									LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
									WHERE ISNULL((
												SELECT COUNT(tblVendorCatSec.strVendCategory)
												FROM tblVendorCatSec
												WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblVendorCatSec.strVendCategory)
													FROM tblVendorCatSec
													WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
													), 0) > 0
											AND tblVendorCatSec.strUserName = @SQUserName
											)
									)
								AND tblVendTransDT.bitReversed = 0
								AND tblVendTransDT.dteJournalDate <= @ToDate
								AND tblVendTransDT.lngVendTrID NOT IN (
									SELECT tblVendTransDT.lngVendTrID
									FROM tblVendTrans
									INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
									WHERE tblVendTrans.strVendName = MASTERTABLE.strVendName
										AND tblVendTransDT.bitReversed = 0
										AND tblVendTransDT.dteJournalDate <= @ToDate
									GROUP BY tblVendTransDT.lngVendTrID
									HAVING SUM(tblVendTransDT.decAmount) = 0
										AND SUM(tblVendTransDT.decAmountF) = 0
									) 
									AND tblVendors.strVendCategory = @VendCategory
								GROUP BY MASTERTABLE.strVendName, tblVendors.strVendDesc, tblVendors.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblVendors.strVendCategory, DATEPART(m, MASTERTABLE.dteJournalDate), DATEPART(yyyy, MASTERTABLE.dteJournalDate), CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) ORDER BY tblVendors.strTerm, LTRIM(RTRIM(MASTERTABLE.strVendName)) 
		END
	ELSE
		BEGIN
			SELECT MASTERTABLE.strVendName AS VendName
								,tblVendors.strVendDesc AS VendDesc
								,tblVendors.strTerm AS Term
								,MASTERTABLE.dteDueDate AS DueDate
								,SUM(tblVendTransDT.decAmount) AS Amount
								,MASTERTABLE.dteJournalDate AS JournalDate
								,ISNULL(tblVendors.strVendCategory, '') AS VendCate
								,DATEPART(m, MASTERTABLE.dteJournalDate) AS Month
								,DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS Year
								,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) AS [Month-Year]
							FROM tblVendTrans AS MASTERTABLE
							INNER JOIN tblVendors ON MASTERTABLE.strVendName = tblVendors.strVendName
							INNER JOIN tblVendTransDT ON MASTERTABLE.lngVendTrID = tblVendTransDT.lngVendTrID
							WHERE tblVendors.strVendCategory IN (
									SELECT tblVendorCat.strVendCategory
									FROM tblVendorCat
									LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
									WHERE ISNULL((
												SELECT COUNT(tblVendorCatSec.strVendCategory)
												FROM tblVendorCatSec
												WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblVendorCatSec.strVendCategory)
													FROM tblVendorCatSec
													WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
													), 0) > 0
											AND tblVendorCatSec.strUserName = @SQUserName
											)
									)
								AND tblVendTransDT.bitReversed = 0
								AND tblVendTransDT.dteJournalDate <= @ToDate
								AND tblVendTransDT.lngVendTrID NOT IN (
									SELECT tblVendTransDT.lngVendTrID
									FROM tblVendTrans
									INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
									WHERE tblVendTrans.strVendName = MASTERTABLE.strVendName
										AND tblVendTransDT.bitReversed = 0
										AND tblVendTransDT.dteJournalDate <= @ToDate
									GROUP BY tblVendTransDT.lngVendTrID
									HAVING SUM(tblVendTransDT.decAmount) = 0
										AND SUM(tblVendTransDT.decAmountF) = 0
									) 
									GROUP BY MASTERTABLE.strVendName, tblVendors.strVendDesc, tblVendors.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblVendors.strVendCategory, DATEPART(m, MASTERTABLE.dteJournalDate), DATEPART(yyyy, MASTERTABLE.dteJournalDate), CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) ORDER BY tblVendors.strTerm, LTRIM(RTRIM(MASTERTABLE.strVendName)) 
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetPurchaseComparisonData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetPurchaseComparisonData]
	@IsAllVendorCategory AS BIT = NULL,
	@IsAllVendor AS BIT = NULL,
	@VendName AS nvarchar(50) = NULL,
	@VendCategory AS nvarchar(20) = NULL,
	@StartDate AS datetime = NULL,
	@EndDate AS datetime = NULL,
	@SinceStartDate AS datetime = NULL,
	@SinceEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllVendorCategory = 1 AND @IsAllVendor = 0
		BEGIN
			SELECT tblInvCat.strCategory AS ItemCategory
									,ISNULL(NewVend.NetPurchasesValue, 0) AS NewVendor
									,ISNULL(OldVend.NetPurchasesValue, 0) AS OldVendor
								FROM tblInvCat
								LEFT JOIN (
									SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory
										,SUM(tblInvoiceDocPDT.decLineTotExc) AS NetPurchasesValue
									FROM tblInvoiceDocP
									INNER JOIN tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
									INNER JOIN tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber
									INNER JOIN tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = tblTaxCodeExt.strTaxCode
									INNER JOIN tblVendors ON dbo.tblInvoiceDocP.strVendName = tblVendors.strVendName
									WHERE tblInvoiceDocP.dteJournalDate BETWEEN @StartDate 
											AND @EndDate   
										AND tblVendors.dteSince BETWEEN @SinceStartDate  
											AND @SinceEndDate 
										AND tblVendors.strVendName = @VendName 
									GROUP BY tblInv.strCategory ) AS NewVend ON tblInvCat.strCategory = NewVend.ItemCategory LEFT JOIN ( SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory , SUM(tblInvoiceDocPDT.decLineTotExc) AS NetPurchasesValue FROM tblInvoiceDocP INNER JOIN tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID INNER JOIN tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber INNER JOIN tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = tblTaxCodeExt.strTaxCode INNER JOIN tblVendors ON dbo.tblInvoiceDocP.strVendName = tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @StartDate   AND  @EndDate  AND tblVendors.dteSince < @SinceStartDate   
									AND tblVendors.strVendName =  @VendName
									GROUP BY tblInv.strCategory ) AS OldVend ON tblInvCat.strCategory = OldVend.ItemCategory ORDER BY ItemCategory 
		END
	ELSE IF @IsAllVendorCategory = 0 AND @IsAllVendor = 1
		BEGIN
			SELECT tblInvCat.strCategory AS ItemCategory
									,ISNULL(NewVend.NetPurchasesValue, 0) AS NewVendor
									,ISNULL(OldVend.NetPurchasesValue, 0) AS OldVendor
								FROM tblInvCat
								LEFT JOIN (
									SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory
										,SUM(tblInvoiceDocPDT.decLineTotExc) AS NetPurchasesValue
									FROM tblInvoiceDocP
									INNER JOIN tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
									INNER JOIN tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber
									INNER JOIN tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = tblTaxCodeExt.strTaxCode
									INNER JOIN tblVendors ON dbo.tblInvoiceDocP.strVendName = tblVendors.strVendName
									WHERE tblInvoiceDocP.dteJournalDate BETWEEN @StartDate 
											AND @EndDate   
										AND tblVendors.dteSince BETWEEN  @SinceStartDate 
											AND  @SinceEndDate  
										AND tblVendors.strVendCategory = @VendCategory
										GROUP BY tblInv.strCategory ) AS NewVend ON tblInvCat.strCategory = NewVend.ItemCategory LEFT JOIN ( SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory , SUM(tblInvoiceDocPDT.decLineTotExc) AS NetPurchasesValue FROM tblInvoiceDocP INNER JOIN tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID INNER JOIN tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber INNER JOIN tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = tblTaxCodeExt.strTaxCode INNER JOIN tblVendors ON dbo.tblInvoiceDocP.strVendName = tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN  @StartDate  AND  @EndDate  AND tblVendors.dteSince < @SinceStartDate 
										AND tblVendors.strVendCategory =  @VendCategory 
										GROUP BY tblInv.strCategory ) AS OldVend ON tblInvCat.strCategory = OldVend.ItemCategory ORDER BY ItemCategory 

		END
	ELSE IF @IsAllVendorCategory = 0 AND @IsAllVendor = 0
		BEGIN
			SELECT tblInvCat.strCategory AS ItemCategory
									,ISNULL(NewVend.NetPurchasesValue, 0) AS NewVendor
									,ISNULL(OldVend.NetPurchasesValue, 0) AS OldVendor
								FROM tblInvCat
								LEFT JOIN (
									SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory
										,SUM(tblInvoiceDocPDT.decLineTotExc) AS NetPurchasesValue
									FROM tblInvoiceDocP
									INNER JOIN tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
									INNER JOIN tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber
									INNER JOIN tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = tblTaxCodeExt.strTaxCode
									INNER JOIN tblVendors ON dbo.tblInvoiceDocP.strVendName = tblVendors.strVendName
									WHERE tblInvoiceDocP.dteJournalDate BETWEEN @StartDate 
											AND @EndDate  
										AND tblVendors.dteSince BETWEEN  @SinceStartDate
											AND @SinceEndDate 
										AND tblVendors.strVendName = @VendName AND tblVendors.strVendCategory = @VendCategory 
									GROUP BY tblInv.strCategory ) AS NewVend ON tblInvCat.strCategory = NewVend.ItemCategory LEFT JOIN ( SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory , SUM(tblInvoiceDocPDT.decLineTotExc) AS NetPurchasesValue FROM tblInvoiceDocP INNER JOIN tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID INNER JOIN tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber INNER JOIN tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = tblTaxCodeExt.strTaxCode INNER JOIN tblVendors ON dbo.tblInvoiceDocP.strVendName = tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN  @StartDate   AND @EndDate  AND tblVendors.dteSince < @SinceStartDate  
									AND tblVendors.strVendName =  @VendName  AND tblVendors.strVendCategory = @VendCategory 
									GROUP BY tblInv.strCategory ) AS OldVend ON tblInvCat.strCategory = OldVend.ItemCategory ORDER BY ItemCategory 
		END
	ELSE IF @IsAllVendorCategory = 1 AND @IsAllVendor = 1
		BEGIN
			SELECT tblInvCat.strCategory AS ItemCategory
									,ISNULL(NewVend.NetPurchasesValue, 0) AS NewVendor
									,ISNULL(OldVend.NetPurchasesValue, 0) AS OldVendor
								FROM tblInvCat
								LEFT JOIN (
									SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory
										,SUM(tblInvoiceDocPDT.decLineTotExc) AS NetPurchasesValue
									FROM tblInvoiceDocP
									INNER JOIN tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
									INNER JOIN tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber
									INNER JOIN tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = tblTaxCodeExt.strTaxCode
									INNER JOIN tblVendors ON dbo.tblInvoiceDocP.strVendName = tblVendors.strVendName
									WHERE tblInvoiceDocP.dteJournalDate BETWEEN @StartDate 
											AND @EndDate 
										AND tblVendors.dteSince BETWEEN @SinceStartDate
											AND @SinceEndDate   
									GROUP BY tblInv.strCategory ) AS NewVend ON tblInvCat.strCategory = NewVend.ItemCategory LEFT JOIN ( SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory , SUM(tblInvoiceDocPDT.decLineTotExc) AS NetPurchasesValue FROM tblInvoiceDocP INNER JOIN tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID INNER JOIN tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber INNER JOIN tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = tblTaxCodeExt.strTaxCode INNER JOIN tblVendors ON dbo.tblInvoiceDocP.strVendName = tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN  @StartDate  AND  @EndDate  AND tblVendors.dteSince <  @SinceStartDate  
									GROUP BY tblInv.strCategory ) AS OldVend ON tblInvCat.strCategory = OldVend.ItemCategory ORDER BY ItemCategory 
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetPurchaseMixDataCurrentMonth]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetPurchaseMixDataCurrentMonth]
	@IsAllVendorCategory AS BIT = NULL,
	@IsAllVendor AS BIT = NULL,
	@IsAllItemCategory AS BIT = NULL,
	@VendName AS nvarchar(50) = NULL,
	@VendCategory AS nvarchar(20) = NULL,
	@ItemCategory AS nvarchar(20) = NULL,
	@PurJournalStartDate AS datetime = NULL,
	@PurJournalEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllVendorCategory = 1 AND @IsAllVendor = 1
	BEGIN
		IF @IsAllItemCategory = 1
		BEGIN
			SELECT ISNULL(tblInv.strCategory,'') AS ItemCategory, SUM(tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, DATEPART(m, tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblInv.strCategory Is Not Null GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), tblInv.strCategory ORDER BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate) 
		END
		ELSE
		BEGIN
			SELECT ISNULL(tblInv.strCategory,'') AS ItemCategory, SUM(tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, DATEPART(m, tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblInv.strCategory Is Not Null AND tblInv.strCategory = @ItemCategory GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), tblInv.strCategory ORDER BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate) 
		END
	END
	ELSE IF @IsAllVendorCategory = 1 AND @IsAllVendor = 0
	BEGIN
		IF @IsAllItemCategory = 1
		BEGIN
			SELECT ISNULL(tblInv.strCategory,'') AS ItemCategory, SUM(tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, DATEPART(m, tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblInv.strCategory Is Not Null AND tblVendors.strVendName = @VendName GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), tblInv.strCategory ORDER BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate) 
		END
		ELSE
		BEGIN
			SELECT ISNULL(tblInv.strCategory,'') AS ItemCategory, SUM(tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, DATEPART(m, tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblInv.strCategory Is Not Null AND tblVendors.strVendName = @VendName AND tblInv.strCategory = @ItemCategory GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), tblInv.strCategory ORDER BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate) 
		END
	END
	ELSE IF @IsAllVendorCategory = 0 AND @IsAllVendor = 1
	BEGIN
		IF @IsAllItemCategory = 1
		BEGIN
			SELECT ISNULL(tblInv.strCategory,'') AS ItemCategory, SUM(tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, DATEPART(m, tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblInv.strCategory Is Not Null AND tblVendors.strVendCategory = @VendCategory GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), tblInv.strCategory ORDER BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate) 
		END
		ELSE
		BEGIN
			SELECT ISNULL(tblInv.strCategory,'') AS ItemCategory, SUM(tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, DATEPART(m, tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblInv.strCategory Is Not Null AND tblVendors.strVendCategory = @VendCategory AND tblInv.strCategory = @ItemCategory GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), tblInv.strCategory ORDER BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate) 
		END
	END
	ELSE IF @IsAllVendorCategory = 0 AND @IsAllVendor = 0
	BEGIN
		IF @IsAllItemCategory = 1
		BEGIN
			SELECT ISNULL(tblInv.strCategory,'') AS ItemCategory, SUM(tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, DATEPART(m, tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblInv.strCategory Is Not Null AND tblVendors.strVendName = @VendName AND tblVendors.strVendCategory = @VendCategory GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), tblInv.strCategory ORDER BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate) 
		END
		ELSE
		BEGIN
			SELECT ISNULL(tblInv.strCategory,'') AS ItemCategory, SUM(tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, DATEPART(m, tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblInv.strCategory Is Not Null AND tblVendors.strVendName = @VendName AND tblVendors.strVendCategory = @VendCategory AND tblInv.strCategory = @ItemCategory GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), tblInv.strCategory ORDER BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate) 
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetPurchaseMixDataCurrentWeekOrCustom]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetPurchaseMixDataCurrentWeekOrCustom]
	@IsAllVendorCategory AS BIT = NULL,
	@IsAllVendor AS BIT = NULL,
	@IsAllItemCategory AS BIT = NULL,
	@VendName AS nvarchar(50) = NULL,
	@VendCategory AS nvarchar(20) = NULL,
	@ItemCategory AS nvarchar(20) = NULL,
	@PurJournalStartDate AS datetime = NULL,
	@PurJournalEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllVendorCategory = 1 AND @IsAllVendor = 1
	BEGIN
		IF @IsAllItemCategory = 1
		BEGIN
			SELECT ISNULL(tblInv.strCategory,'') AS ItemCategory, SUM(tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, DATEPART(m, tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart, CONVERT(VARCHAR(10), tblInvoiceDocP.dteJournalDate, 105) AS TransactionDate FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblInv.strCategory Is Not Null GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), tblInv.strCategory ,tblInvoiceDocP.dteJournalDate ORDER BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), CONVERT(VARCHAR(10), tblInvoiceDocP.dteJournalDate, 105), tblInv.strCategory 
		END
		ELSE
		BEGIN
			SELECT ISNULL(tblInv.strCategory,'') AS ItemCategory, SUM(tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, DATEPART(m, tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart, CONVERT(VARCHAR(10), tblInvoiceDocP.dteJournalDate, 105) AS TransactionDate FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblInv.strCategory Is Not Null AND tblInv.strCategory = @ItemCategory GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), tblInv.strCategory, tblInvoiceDocP.dteJournalDate ORDER BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), CONVERT(VARCHAR(10), tblInvoiceDocP.dteJournalDate, 105), tblInv.strCategory 
		END
	END
	ELSE IF @IsAllVendorCategory = 1 AND @IsAllVendor = 0
	BEGIN
		IF @IsAllItemCategory = 1
		BEGIN
			SELECT ISNULL(tblInv.strCategory,'') AS ItemCategory, SUM(tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, DATEPART(m, tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart, CONVERT(VARCHAR(10), tblInvoiceDocP.dteJournalDate, 105) AS TransactionDate FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblInv.strCategory Is Not Null AND tblVendors.strVendName = @VendName GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), tblInv.strCategory, tblInvoiceDocP.dteJournalDate ORDER BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), CONVERT(VARCHAR(10), tblInvoiceDocP.dteJournalDate, 105), tblInv.strCategory 
		END
		ELSE
		BEGIN
			SELECT ISNULL(tblInv.strCategory,'') AS ItemCategory, SUM(tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, DATEPART(m, tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart, CONVERT(VARCHAR(10), tblInvoiceDocP.dteJournalDate, 105) AS TransactionDate FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblInv.strCategory Is Not Null AND tblVendors.strVendName = @VendName AND tblInv.strCategory = @ItemCategory GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), tblInv.strCategory, tblInvoiceDocP.dteJournalDate ORDER BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), CONVERT(VARCHAR(10), tblInvoiceDocP.dteJournalDate, 105), tblInv.strCategory 
		END
	END
	ELSE IF @IsAllVendorCategory = 0 AND @IsAllVendor = 1
	BEGIN
		IF @IsAllItemCategory = 1
		BEGIN
			SELECT ISNULL(tblInv.strCategory,'') AS ItemCategory, SUM(tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, DATEPART(m, tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart, CONVERT(VARCHAR(10), tblInvoiceDocP.dteJournalDate, 105) AS TransactionDate FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblInv.strCategory Is Not Null AND tblVendors.strVendCategory = @VendCategory GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), tblInv.strCategory, tblInvoiceDocP.dteJournalDate ORDER BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), CONVERT(VARCHAR(10), tblInvoiceDocP.dteJournalDate, 105), tblInv.strCategory 
		END
		ELSE
		BEGIN
			SELECT ISNULL(tblInv.strCategory,'') AS ItemCategory, SUM(tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, DATEPART(m, tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart, CONVERT(VARCHAR(10), tblInvoiceDocP.dteJournalDate, 105) AS TransactionDate FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblInv.strCategory Is Not Null AND tblVendors.strVendCategory = @VendCategory AND tblInv.strCategory = @ItemCategory GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), tblInv.strCategory, tblInvoiceDocP.dteJournalDate ORDER BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), CONVERT(VARCHAR(10), tblInvoiceDocP.dteJournalDate, 105), tblInv.strCategory 
		END
	END
	ELSE IF @IsAllVendorCategory = 0 AND @IsAllVendor = 0
	BEGIN
		IF @IsAllItemCategory = 1
		BEGIN
			SELECT ISNULL(tblInv.strCategory,'') AS ItemCategory, SUM(tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, DATEPART(m, tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart, CONVERT(VARCHAR(10), tblInvoiceDocP.dteJournalDate, 105) AS TransactionDate FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblInv.strCategory Is Not Null AND tblVendors.strVendName = @VendName AND tblVendors.strVendCategory = @VendCategory GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), tblInv.strCategory, tblInvoiceDocP.dteJournalDate ORDER BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), CONVERT(VARCHAR(10), tblInvoiceDocP.dteJournalDate, 105), tblInv.strCategory 
		END
		ELSE
		BEGIN
			SELECT ISNULL(tblInv.strCategory,'') AS ItemCategory, SUM(tblInvoiceDocPDT.decLineTotExc) AS LineTotExcl, DATEPART(m, tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart, CONVERT(VARCHAR(10), tblInvoiceDocP.dteJournalDate, 105) AS TransactionDate FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblInv.strCategory Is Not Null AND tblVendors.strVendName = @VendName AND tblVendors.strVendCategory = @VendCategory AND tblInv.strCategory = @ItemCategory GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), tblInv.strCategory, tblInvoiceDocP.dteJournalDate ORDER BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate), DATEPART(m, tblInvoiceDocP.dteJournalDate), CONVERT(VARCHAR(10), tblInvoiceDocP.dteJournalDate, 105), tblInv.strCategory 
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetPurchasesData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetPurchasesData]
	@IsAllVendorCategory AS BIT = NULL,
	@IsAllVendor AS BIT = NULL,
	@VendName AS nvarchar(50) = NULL,
	@VendCategory AS nvarchar(20) = NULL,
	@PurJournalStartDate AS datetime = NULL,
	@PurJournalEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllVendorCategory = 1 AND @IsAllVendor = 1
	BEGIN
		SELECT dbo.tblVendors.strVendName AS VendorNumber, dbo.tblVendors.strVendDesc AS VendorName, dbo.tblVendors.strVendCategory AS VendorCategory, dbo.tblInvoiceDocPDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocPDT.strPartDesc AS ItemDescription_Line, dbo.tblInvoiceDocPDT.strBuyUnit AS ItemUnit, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocP.strInvPDocID AS Document#, dbo.tblInvoiceDocPDT.decBuyQty AS OriginalInvoiceQty, dbo.tblTaxCodeExt.strTaxCode AS TaxCode, dbo.tblInvoiceDocP.decSubTotal AS OriginalInvoiceValue, dbo.tblInvoiceDocPDT.strLocation AS Location, dbo.tblInvoiceDocP.dteSystemDate AS SystemDate, ISNULL(dbo.tblInvoiceDocP.strStatusTypeCode, N'') AS StatusTypeCode, dbo.tblInvoiceDocP.dteJournalDate AS TransactionDate, dbo.tblInv.decSumOnHand AS OnHandQty, dbo.tblInv.decCostOnPO AS DefaultItemCost, dbo.tblInv.decStandardCost AS StandardCost, dbo.tblInv.decLastPPUnit AS LastUnitCost, dbo.tblInvoiceDocP.dteRequired AS OrderRequiredDate, DATENAME(YEAR, dbo.tblInvoiceDocP.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDocP.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, dbo.tblInvoiceDocP.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDocP.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDocP.dteJournalDate) AS Quarter, DATEDIFF(DAY, GETDATE(), dbo.tblInvoiceDocP.dteRequired) AS DaysToRequiredDate, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, dbo.tblInvoiceDocPDT.decLineTotExc AS LineTotExcl, dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotTax, dbo.tblInvoiceDocPDT.decEaIncTax AS Price, dbo.tblInvoiceDocPDT.decLineTotExc + dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotIncl, dbo.tblInvoiceDocP.strCurrency AS CurrencyCode, dbo.tblInvoiceDocP.decExchange AS ExchangeRate, dbo.tblInvoiceDocP.decSubTotalF AS OriginalInvoiceValueFC, dbo.tblInvoiceDocPDT.decLineTotExcF AS LineTotExclFC, CASE tblInvoiceDocPDT.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, dbo.tblInvoiceDocP.strAddInfo AS AdditionalInfo FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate
	END
	ELSE IF @IsAllVendorCategory = 1 AND @IsAllVendor = 0
	BEGIN
		SELECT dbo.tblVendors.strVendName AS VendorNumber, dbo.tblVendors.strVendDesc AS VendorName, dbo.tblVendors.strVendCategory AS VendorCategory, dbo.tblInvoiceDocPDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocPDT.strPartDesc AS ItemDescription_Line, dbo.tblInvoiceDocPDT.strBuyUnit AS ItemUnit, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocP.strInvPDocID AS Document#, dbo.tblInvoiceDocPDT.decBuyQty AS OriginalInvoiceQty, dbo.tblTaxCodeExt.strTaxCode AS TaxCode, dbo.tblInvoiceDocP.decSubTotal AS OriginalInvoiceValue, dbo.tblInvoiceDocPDT.strLocation AS Location, dbo.tblInvoiceDocP.dteSystemDate AS SystemDate, ISNULL(dbo.tblInvoiceDocP.strStatusTypeCode, N'') AS StatusTypeCode, dbo.tblInvoiceDocP.dteJournalDate AS TransactionDate, dbo.tblInv.decSumOnHand AS OnHandQty, dbo.tblInv.decCostOnPO AS DefaultItemCost, dbo.tblInv.decStandardCost AS StandardCost, dbo.tblInv.decLastPPUnit AS LastUnitCost, dbo.tblInvoiceDocP.dteRequired AS OrderRequiredDate, DATENAME(YEAR, dbo.tblInvoiceDocP.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDocP.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, dbo.tblInvoiceDocP.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDocP.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDocP.dteJournalDate) AS Quarter, DATEDIFF(DAY, GETDATE(), dbo.tblInvoiceDocP.dteRequired) AS DaysToRequiredDate, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, dbo.tblInvoiceDocPDT.decLineTotExc AS LineTotExcl, dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotTax, dbo.tblInvoiceDocPDT.decEaIncTax AS Price, dbo.tblInvoiceDocPDT.decLineTotExc + dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotIncl, dbo.tblInvoiceDocP.strCurrency AS CurrencyCode, dbo.tblInvoiceDocP.decExchange AS ExchangeRate, dbo.tblInvoiceDocP.decSubTotalF AS OriginalInvoiceValueFC, dbo.tblInvoiceDocPDT.decLineTotExcF AS LineTotExclFC, CASE tblInvoiceDocPDT.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, dbo.tblInvoiceDocP.strAddInfo AS AdditionalInfo FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblVendors.strVendName = @VendName
	END
	ELSE IF @IsAllVendorCategory = 0 AND @IsAllVendor = 1
	BEGIN
		SELECT dbo.tblVendors.strVendName AS VendorNumber, dbo.tblVendors.strVendDesc AS VendorName, dbo.tblVendors.strVendCategory AS VendorCategory, dbo.tblInvoiceDocPDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocPDT.strPartDesc AS ItemDescription_Line, dbo.tblInvoiceDocPDT.strBuyUnit AS ItemUnit, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocP.strInvPDocID AS Document#, dbo.tblInvoiceDocPDT.decBuyQty AS OriginalInvoiceQty, dbo.tblTaxCodeExt.strTaxCode AS TaxCode, dbo.tblInvoiceDocP.decSubTotal AS OriginalInvoiceValue, dbo.tblInvoiceDocPDT.strLocation AS Location, dbo.tblInvoiceDocP.dteSystemDate AS SystemDate, ISNULL(dbo.tblInvoiceDocP.strStatusTypeCode, N'') AS StatusTypeCode, dbo.tblInvoiceDocP.dteJournalDate AS TransactionDate, dbo.tblInv.decSumOnHand AS OnHandQty, dbo.tblInv.decCostOnPO AS DefaultItemCost, dbo.tblInv.decStandardCost AS StandardCost, dbo.tblInv.decLastPPUnit AS LastUnitCost, dbo.tblInvoiceDocP.dteRequired AS OrderRequiredDate, DATENAME(YEAR, dbo.tblInvoiceDocP.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDocP.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, dbo.tblInvoiceDocP.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDocP.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDocP.dteJournalDate) AS Quarter, DATEDIFF(DAY, GETDATE(), dbo.tblInvoiceDocP.dteRequired) AS DaysToRequiredDate, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, dbo.tblInvoiceDocPDT.decLineTotExc AS LineTotExcl, dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotTax, dbo.tblInvoiceDocPDT.decEaIncTax AS Price, dbo.tblInvoiceDocPDT.decLineTotExc + dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotIncl, dbo.tblInvoiceDocP.strCurrency AS CurrencyCode, dbo.tblInvoiceDocP.decExchange AS ExchangeRate, dbo.tblInvoiceDocP.decSubTotalF AS OriginalInvoiceValueFC, dbo.tblInvoiceDocPDT.decLineTotExcF AS LineTotExclFC, CASE tblInvoiceDocPDT.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, dbo.tblInvoiceDocP.strAddInfo AS AdditionalInfo FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblVendors.strVendCategory = @VendCategory
	END
	ELSE IF @IsAllVendorCategory = 0 AND @IsAllVendor = 0
	BEGIN
		SELECT dbo.tblVendors.strVendName AS VendorNumber, dbo.tblVendors.strVendDesc AS VendorName, dbo.tblVendors.strVendCategory AS VendorCategory, dbo.tblInvoiceDocPDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocPDT.strPartDesc AS ItemDescription_Line, dbo.tblInvoiceDocPDT.strBuyUnit AS ItemUnit, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocP.strInvPDocID AS Document#, dbo.tblInvoiceDocPDT.decBuyQty AS OriginalInvoiceQty, dbo.tblTaxCodeExt.strTaxCode AS TaxCode, dbo.tblInvoiceDocP.decSubTotal AS OriginalInvoiceValue, dbo.tblInvoiceDocPDT.strLocation AS Location, dbo.tblInvoiceDocP.dteSystemDate AS SystemDate, ISNULL(dbo.tblInvoiceDocP.strStatusTypeCode, N'') AS StatusTypeCode, dbo.tblInvoiceDocP.dteJournalDate AS TransactionDate, dbo.tblInv.decSumOnHand AS OnHandQty, dbo.tblInv.decCostOnPO AS DefaultItemCost, dbo.tblInv.decStandardCost AS StandardCost, dbo.tblInv.decLastPPUnit AS LastUnitCost, dbo.tblInvoiceDocP.dteRequired AS OrderRequiredDate, DATENAME(YEAR, dbo.tblInvoiceDocP.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDocP.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, dbo.tblInvoiceDocP.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDocP.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDocP.dteJournalDate) AS Quarter, DATEDIFF(DAY, GETDATE(), dbo.tblInvoiceDocP.dteRequired) AS DaysToRequiredDate, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, dbo.tblInvoiceDocPDT.decLineTotExc AS LineTotExcl, dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotTax, dbo.tblInvoiceDocPDT.decEaIncTax AS Price, dbo.tblInvoiceDocPDT.decLineTotExc + dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotIncl, dbo.tblInvoiceDocP.strCurrency AS CurrencyCode, dbo.tblInvoiceDocP.decExchange AS ExchangeRate, dbo.tblInvoiceDocP.decSubTotalF AS OriginalInvoiceValueFC, dbo.tblInvoiceDocPDT.decLineTotExcF AS LineTotExclFC, CASE tblInvoiceDocPDT.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, dbo.tblInvoiceDocP.strAddInfo AS AdditionalInfo FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblVendors.strVendName = @VendName AND tblVendors.strVendCategory = @VendCategory
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetPurchasesMixData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetPurchasesMixData]
	@IsAllVendorCategory AS BIT = NULL,
	@IsAllVendor AS BIT = NULL,
	@IsAllItemCategory AS BIT = NULL,
	@VendName AS nvarchar(50) = NULL,
	@VendCategory AS nvarchar(20) = NULL,
	@ItemCategory AS nvarchar(20) = NULL,
	@PurJournalStartDate AS datetime = NULL,
	@PurJournalEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllVendorCategory = 1 AND @IsAllVendor = 1
	BEGIN
		IF @IsAllItemCategory = 1
		BEGIN
			SELECT dbo.tblVendors.strVendName AS VendorName, DATEPART(m,tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart, dbo.tblVendors.strVendCategory AS VendorCategory, dbo.tblInvoiceDocPDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocPDT.strPartDesc AS ItemDescription_Line, dbo.tblInvoiceDocPDT.strBuyUnit AS ItemUnit, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocP.strInvPDocID AS Document#, dbo.tblInvoiceDocPDT.decBuyQty AS OriginalInvoiceQty, dbo.tblTaxCodeExt.strTaxCode AS TaxCode, dbo.tblInvoiceDocP.decSubTotal AS OriginalInvoiceValue, dbo.tblInvoiceDocPDT.strLocation AS Location, dbo.tblInvoiceDocP.dteSystemDate AS SystemDate, ISNULL(dbo.tblInvoiceDocP.strStatusTypeCode, N'') AS StatusTypeCode, dbo.tblInvoiceDocP.dteJournalDate AS TransactionDate, dbo.tblInv.decSumOnHand AS OnHandQty, dbo.tblInv.decLastPPUnit AS LastUnitCost, dbo.tblInvoiceDocP.dteRequired AS OrderRequiredDate, DATENAME(YEAR, dbo.tblInvoiceDocP.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDocP.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, dbo.tblInvoiceDocP.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDocP.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDocP.dteJournalDate) AS Quarter, DATEDIFF(DAY, GETDATE(), dbo.tblInvoiceDocP.dteRequired) AS DaysToRequiredDate, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, dbo.tblInvoiceDocPDT.decLineTotExc AS LineTotExcl, dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotTax, dbo.tblInvoiceDocPDT.decLineTotExc + dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotIncl, dbo.tblInvoiceDocP.strCurrency AS CurrencyCode, dbo.tblInvoiceDocP.decExchange AS ExchangeRate, dbo.tblInvoiceDocP.decSubTotalF AS OriginalInvoiceValueFC, dbo.tblInvoiceDocPDT.decLineTotExcF AS LineTotExclFC, CASE tblInvoiceDocPDT.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, dbo.tblInvoiceDocP.strAddInfo AS AdditionalInfo FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate
		END
		ELSE
		BEGIN
			SELECT dbo.tblVendors.strVendName AS VendorName, DATEPART(m,tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart, dbo.tblVendors.strVendCategory AS VendorCategory, dbo.tblInvoiceDocPDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocPDT.strPartDesc AS ItemDescription_Line, dbo.tblInvoiceDocPDT.strBuyUnit AS ItemUnit, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocP.strInvPDocID AS Document#, dbo.tblInvoiceDocPDT.decBuyQty AS OriginalInvoiceQty, dbo.tblTaxCodeExt.strTaxCode AS TaxCode, dbo.tblInvoiceDocP.decSubTotal AS OriginalInvoiceValue, dbo.tblInvoiceDocPDT.strLocation AS Location, dbo.tblInvoiceDocP.dteSystemDate AS SystemDate, ISNULL(dbo.tblInvoiceDocP.strStatusTypeCode, N'') AS StatusTypeCode, dbo.tblInvoiceDocP.dteJournalDate AS TransactionDate, dbo.tblInv.decSumOnHand AS OnHandQty, dbo.tblInv.decLastPPUnit AS LastUnitCost, dbo.tblInvoiceDocP.dteRequired AS OrderRequiredDate, DATENAME(YEAR, dbo.tblInvoiceDocP.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDocP.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, dbo.tblInvoiceDocP.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDocP.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDocP.dteJournalDate) AS Quarter, DATEDIFF(DAY, GETDATE(), dbo.tblInvoiceDocP.dteRequired) AS DaysToRequiredDate, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, dbo.tblInvoiceDocPDT.decLineTotExc AS LineTotExcl, dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotTax, dbo.tblInvoiceDocPDT.decLineTotExc + dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotIncl, dbo.tblInvoiceDocP.strCurrency AS CurrencyCode, dbo.tblInvoiceDocP.decExchange AS ExchangeRate, dbo.tblInvoiceDocP.decSubTotalF AS OriginalInvoiceValueFC, dbo.tblInvoiceDocPDT.decLineTotExcF AS LineTotExclFC, CASE tblInvoiceDocPDT.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, dbo.tblInvoiceDocP.strAddInfo AS AdditionalInfo FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblInv.strCategory = @ItemCategory
		END
	END
	ELSE IF @IsAllVendorCategory = 1 AND @IsAllVendor = 0
	BEGIN
		IF @IsAllItemCategory = 1
		BEGIN
			SELECT dbo.tblVendors.strVendName AS VendorName, DATEPART(m,tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart, dbo.tblVendors.strVendCategory AS VendorCategory, dbo.tblInvoiceDocPDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocPDT.strPartDesc AS ItemDescription_Line, dbo.tblInvoiceDocPDT.strBuyUnit AS ItemUnit, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocP.strInvPDocID AS Document#, dbo.tblInvoiceDocPDT.decBuyQty AS OriginalInvoiceQty, dbo.tblTaxCodeExt.strTaxCode AS TaxCode, dbo.tblInvoiceDocP.decSubTotal AS OriginalInvoiceValue, dbo.tblInvoiceDocPDT.strLocation AS Location, dbo.tblInvoiceDocP.dteSystemDate AS SystemDate, ISNULL(dbo.tblInvoiceDocP.strStatusTypeCode, N'') AS StatusTypeCode, dbo.tblInvoiceDocP.dteJournalDate AS TransactionDate, dbo.tblInv.decSumOnHand AS OnHandQty, dbo.tblInv.decLastPPUnit AS LastUnitCost, dbo.tblInvoiceDocP.dteRequired AS OrderRequiredDate, DATENAME(YEAR, dbo.tblInvoiceDocP.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDocP.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, dbo.tblInvoiceDocP.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDocP.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDocP.dteJournalDate) AS Quarter, DATEDIFF(DAY, GETDATE(), dbo.tblInvoiceDocP.dteRequired) AS DaysToRequiredDate, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, dbo.tblInvoiceDocPDT.decLineTotExc AS LineTotExcl, dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotTax, dbo.tblInvoiceDocPDT.decLineTotExc + dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotIncl, dbo.tblInvoiceDocP.strCurrency AS CurrencyCode, dbo.tblInvoiceDocP.decExchange AS ExchangeRate, dbo.tblInvoiceDocP.decSubTotalF AS OriginalInvoiceValueFC, dbo.tblInvoiceDocPDT.decLineTotExcF AS LineTotExclFC, CASE tblInvoiceDocPDT.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, dbo.tblInvoiceDocP.strAddInfo AS AdditionalInfo FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblVendors.strVendName = @VendName 
		END
		ELSE
		BEGIN
			SELECT dbo.tblVendors.strVendName AS VendorName, DATEPART(m,tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart, dbo.tblVendors.strVendCategory AS VendorCategory, dbo.tblInvoiceDocPDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocPDT.strPartDesc AS ItemDescription_Line, dbo.tblInvoiceDocPDT.strBuyUnit AS ItemUnit, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocP.strInvPDocID AS Document#, dbo.tblInvoiceDocPDT.decBuyQty AS OriginalInvoiceQty, dbo.tblTaxCodeExt.strTaxCode AS TaxCode, dbo.tblInvoiceDocP.decSubTotal AS OriginalInvoiceValue, dbo.tblInvoiceDocPDT.strLocation AS Location, dbo.tblInvoiceDocP.dteSystemDate AS SystemDate, ISNULL(dbo.tblInvoiceDocP.strStatusTypeCode, N'') AS StatusTypeCode, dbo.tblInvoiceDocP.dteJournalDate AS TransactionDate, dbo.tblInv.decSumOnHand AS OnHandQty, dbo.tblInv.decLastPPUnit AS LastUnitCost, dbo.tblInvoiceDocP.dteRequired AS OrderRequiredDate, DATENAME(YEAR, dbo.tblInvoiceDocP.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDocP.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, dbo.tblInvoiceDocP.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDocP.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDocP.dteJournalDate) AS Quarter, DATEDIFF(DAY, GETDATE(), dbo.tblInvoiceDocP.dteRequired) AS DaysToRequiredDate, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, dbo.tblInvoiceDocPDT.decLineTotExc AS LineTotExcl, dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotTax, dbo.tblInvoiceDocPDT.decLineTotExc + dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotIncl, dbo.tblInvoiceDocP.strCurrency AS CurrencyCode, dbo.tblInvoiceDocP.decExchange AS ExchangeRate, dbo.tblInvoiceDocP.decSubTotalF AS OriginalInvoiceValueFC, dbo.tblInvoiceDocPDT.decLineTotExcF AS LineTotExclFC, CASE tblInvoiceDocPDT.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, dbo.tblInvoiceDocP.strAddInfo AS AdditionalInfo FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblVendors.strVendName = @VendName AND tblInv.strCategory = @ItemCategory 
		END
	END
	ELSE IF @IsAllVendorCategory = 0 AND @IsAllVendor = 1
	BEGIN
		IF @IsAllItemCategory = 1
		BEGIN
			SELECT dbo.tblVendors.strVendName AS VendorName, DATEPART(m,tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart, dbo.tblVendors.strVendCategory AS VendorCategory, dbo.tblInvoiceDocPDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocPDT.strPartDesc AS ItemDescription_Line, dbo.tblInvoiceDocPDT.strBuyUnit AS ItemUnit, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocP.strInvPDocID AS Document#, dbo.tblInvoiceDocPDT.decBuyQty AS OriginalInvoiceQty, dbo.tblTaxCodeExt.strTaxCode AS TaxCode, dbo.tblInvoiceDocP.decSubTotal AS OriginalInvoiceValue, dbo.tblInvoiceDocPDT.strLocation AS Location, dbo.tblInvoiceDocP.dteSystemDate AS SystemDate, ISNULL(dbo.tblInvoiceDocP.strStatusTypeCode, N'') AS StatusTypeCode, dbo.tblInvoiceDocP.dteJournalDate AS TransactionDate, dbo.tblInv.decSumOnHand AS OnHandQty, dbo.tblInv.decLastPPUnit AS LastUnitCost, dbo.tblInvoiceDocP.dteRequired AS OrderRequiredDate, DATENAME(YEAR, dbo.tblInvoiceDocP.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDocP.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, dbo.tblInvoiceDocP.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDocP.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDocP.dteJournalDate) AS Quarter, DATEDIFF(DAY, GETDATE(), dbo.tblInvoiceDocP.dteRequired) AS DaysToRequiredDate, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, dbo.tblInvoiceDocPDT.decLineTotExc AS LineTotExcl, dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotTax, dbo.tblInvoiceDocPDT.decLineTotExc + dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotIncl, dbo.tblInvoiceDocP.strCurrency AS CurrencyCode, dbo.tblInvoiceDocP.decExchange AS ExchangeRate, dbo.tblInvoiceDocP.decSubTotalF AS OriginalInvoiceValueFC, dbo.tblInvoiceDocPDT.decLineTotExcF AS LineTotExclFC, CASE tblInvoiceDocPDT.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, dbo.tblInvoiceDocP.strAddInfo AS AdditionalInfo FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblVendors.strVendCategory = @VendCategory 
		END
		ELSE
		BEGIN
			SELECT dbo.tblVendors.strVendName AS VendorName, DATEPART(m,tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart, dbo.tblVendors.strVendCategory AS VendorCategory, dbo.tblInvoiceDocPDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocPDT.strPartDesc AS ItemDescription_Line, dbo.tblInvoiceDocPDT.strBuyUnit AS ItemUnit, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocP.strInvPDocID AS Document#, dbo.tblInvoiceDocPDT.decBuyQty AS OriginalInvoiceQty, dbo.tblTaxCodeExt.strTaxCode AS TaxCode, dbo.tblInvoiceDocP.decSubTotal AS OriginalInvoiceValue, dbo.tblInvoiceDocPDT.strLocation AS Location, dbo.tblInvoiceDocP.dteSystemDate AS SystemDate, ISNULL(dbo.tblInvoiceDocP.strStatusTypeCode, N'') AS StatusTypeCode, dbo.tblInvoiceDocP.dteJournalDate AS TransactionDate, dbo.tblInv.decSumOnHand AS OnHandQty, dbo.tblInv.decLastPPUnit AS LastUnitCost, dbo.tblInvoiceDocP.dteRequired AS OrderRequiredDate, DATENAME(YEAR, dbo.tblInvoiceDocP.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDocP.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, dbo.tblInvoiceDocP.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDocP.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDocP.dteJournalDate) AS Quarter, DATEDIFF(DAY, GETDATE(), dbo.tblInvoiceDocP.dteRequired) AS DaysToRequiredDate, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, dbo.tblInvoiceDocPDT.decLineTotExc AS LineTotExcl, dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotTax, dbo.tblInvoiceDocPDT.decLineTotExc + dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotIncl, dbo.tblInvoiceDocP.strCurrency AS CurrencyCode, dbo.tblInvoiceDocP.decExchange AS ExchangeRate, dbo.tblInvoiceDocP.decSubTotalF AS OriginalInvoiceValueFC, dbo.tblInvoiceDocPDT.decLineTotExcF AS LineTotExclFC, CASE tblInvoiceDocPDT.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, dbo.tblInvoiceDocP.strAddInfo AS AdditionalInfo FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblVendors.strVendCategory = @VendCategory AND tblInv.strCategory = @ItemCategory 
		END
	END
	ELSE IF @IsAllVendorCategory = 0 AND @IsAllVendor = 0
	BEGIN
		IF @IsAllItemCategory = 1
		BEGIN
			SELECT dbo.tblVendors.strVendName AS VendorName, DATEPART(m,tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart, dbo.tblVendors.strVendCategory AS VendorCategory, dbo.tblInvoiceDocPDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocPDT.strPartDesc AS ItemDescription_Line, dbo.tblInvoiceDocPDT.strBuyUnit AS ItemUnit, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocP.strInvPDocID AS Document#, dbo.tblInvoiceDocPDT.decBuyQty AS OriginalInvoiceQty, dbo.tblTaxCodeExt.strTaxCode AS TaxCode, dbo.tblInvoiceDocP.decSubTotal AS OriginalInvoiceValue, dbo.tblInvoiceDocPDT.strLocation AS Location, dbo.tblInvoiceDocP.dteSystemDate AS SystemDate, ISNULL(dbo.tblInvoiceDocP.strStatusTypeCode, N'') AS StatusTypeCode, dbo.tblInvoiceDocP.dteJournalDate AS TransactionDate, dbo.tblInv.decSumOnHand AS OnHandQty, dbo.tblInv.decLastPPUnit AS LastUnitCost, dbo.tblInvoiceDocP.dteRequired AS OrderRequiredDate, DATENAME(YEAR, dbo.tblInvoiceDocP.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDocP.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, dbo.tblInvoiceDocP.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDocP.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDocP.dteJournalDate) AS Quarter, DATEDIFF(DAY, GETDATE(), dbo.tblInvoiceDocP.dteRequired) AS DaysToRequiredDate, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, dbo.tblInvoiceDocPDT.decLineTotExc AS LineTotExcl, dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotTax, dbo.tblInvoiceDocPDT.decLineTotExc + dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotIncl, dbo.tblInvoiceDocP.strCurrency AS CurrencyCode, dbo.tblInvoiceDocP.decExchange AS ExchangeRate, dbo.tblInvoiceDocP.decSubTotalF AS OriginalInvoiceValueFC, dbo.tblInvoiceDocPDT.decLineTotExcF AS LineTotExclFC, CASE tblInvoiceDocPDT.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, dbo.tblInvoiceDocP.strAddInfo AS AdditionalInfo FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblVendors.strVendName = @VendName AND tblVendors.strVendCategory = @VendCategory
		END
		ELSE
		BEGIN
			SELECT dbo.tblVendors.strVendName AS VendorName, DATEPART(m,tblInvoiceDocP.dteJournalDate) AS MonthPart, DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) AS YearPart, dbo.tblVendors.strVendCategory AS VendorCategory, dbo.tblInvoiceDocPDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocPDT.strPartDesc AS ItemDescription_Line, dbo.tblInvoiceDocPDT.strBuyUnit AS ItemUnit, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocP.strInvPDocID AS Document#, dbo.tblInvoiceDocPDT.decBuyQty AS OriginalInvoiceQty, dbo.tblTaxCodeExt.strTaxCode AS TaxCode, dbo.tblInvoiceDocP.decSubTotal AS OriginalInvoiceValue, dbo.tblInvoiceDocPDT.strLocation AS Location, dbo.tblInvoiceDocP.dteSystemDate AS SystemDate, ISNULL(dbo.tblInvoiceDocP.strStatusTypeCode, N'') AS StatusTypeCode, dbo.tblInvoiceDocP.dteJournalDate AS TransactionDate, dbo.tblInv.decSumOnHand AS OnHandQty, dbo.tblInv.decLastPPUnit AS LastUnitCost, dbo.tblInvoiceDocP.dteRequired AS OrderRequiredDate, DATENAME(YEAR, dbo.tblInvoiceDocP.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDocP.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, dbo.tblInvoiceDocP.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDocP.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDocP.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDocP.dteJournalDate) AS Quarter, DATEDIFF(DAY, GETDATE(), dbo.tblInvoiceDocP.dteRequired) AS DaysToRequiredDate, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, dbo.tblInvoiceDocPDT.decLineTotExc AS LineTotExcl, dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotTax, dbo.tblInvoiceDocPDT.decLineTotExc + dbo.tblInvoiceDocPDT.decLineTaxAmt AS LineTotIncl, dbo.tblInvoiceDocP.strCurrency AS CurrencyCode, dbo.tblInvoiceDocP.decExchange AS ExchangeRate, dbo.tblInvoiceDocP.decSubTotalF AS OriginalInvoiceValueFC, dbo.tblInvoiceDocPDT.decLineTotExcF AS LineTotExclFC, CASE tblInvoiceDocPDT.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, dbo.tblInvoiceDocP.strAddInfo AS AdditionalInfo FROM dbo.tblInvoiceDocP INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName WHERE tblInvoiceDocP.dteJournalDate BETWEEN @PurJournalStartDate AND @PurJournalEndDate AND tblVendors.strVendName = @VendName AND tblVendors.strVendCategory = @VendCategory AND tblInv.strCategory = @ItemCategory 
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetReceivableData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetReceivableData]
	@CustCategory AS nvarchar(20) = NULL,
	@IsAllCustomerCategory AS bit = NULL,
	@ToDate AS datetime = NULL,
	@SQUserName AS nvarchar(20) = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllCustomerCategory = 0 
		BEGIN
			SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName
						,tblCustomers.strCustDesc AS CustDesc
						,tblCustomers.strTerm AS Term
						,MASTERTABLE.dteDueDate AS DueDate
						,SUM(tblCustTransDT.decAmount) AS Amount
						,MASTERTABLE.dteJournalDate AS JournalDate
						,ISNULL(tblCustomers.strCustCategory, '') AS CustCate
						,DATEPART(m, MASTERTABLE.dteJournalDate) AS Month
						,DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS Year
						,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) AS [Month-Year]
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					WHERE tblCustomers.strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName =  @SQUserName
									)
							)
						AND tblCustTransDT.bitReversed = 0
						AND tblCustTransDT.dteJournalDate <= @ToDate 
						AND tblCustTransDT.lngCustTrID NOT IN (
							SELECT tblCustTransDT.lngCustTrID
							FROM tblCustTrans
							INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
							WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
								AND tblCustTransDT.bitReversed = 0
								AND tblCustTransDT.dteJournalDate <= @ToDate 
							GROUP BY tblCustTransDT.lngCustTrID
							HAVING SUM(tblCustTransDT.decAmount) = 0
								AND SUM(tblCustTransDT.decAmountF) = 0
							)
						AND tblCustomers.strCustCategory = @CustCategory
						GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc ,tblCustomers.strTerm , MASTERTABLE.dteDueDate , MASTERTABLE.dteJournalDate , tblCustomers.strCustCategory, DATEPART(m, MASTERTABLE.dteJournalDate), DATEPART(yyyy, MASTERTABLE.dteJournalDate), CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) ORDER BY tblCustomers.strTerm , LTRIM(RTRIM(MASTERTABLE.strCustName)) 
		END
	ELSE
		BEGIN
			SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName
						,tblCustomers.strCustDesc AS CustDesc
						,tblCustomers.strTerm AS Term
						,MASTERTABLE.dteDueDate AS DueDate
						,SUM(tblCustTransDT.decAmount) AS Amount
						,MASTERTABLE.dteJournalDate AS JournalDate
						,ISNULL(tblCustomers.strCustCategory, '') AS CustCate
						,DATEPART(m, MASTERTABLE.dteJournalDate) AS Month
						,DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS Year
						,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) AS [Month-Year]
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					WHERE tblCustomers.strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName =  @SQUserName
									)
							)
						AND tblCustTransDT.bitReversed = 0
						AND tblCustTransDT.dteJournalDate <= @ToDate 
						AND tblCustTransDT.lngCustTrID NOT IN (
							SELECT tblCustTransDT.lngCustTrID
							FROM tblCustTrans
							INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
							WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
								AND tblCustTransDT.bitReversed = 0
								AND tblCustTransDT.dteJournalDate <= @ToDate 
							GROUP BY tblCustTransDT.lngCustTrID
							HAVING SUM(tblCustTransDT.decAmount) = 0
								AND SUM(tblCustTransDT.decAmountF) = 0
							)
							GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc ,tblCustomers.strTerm , MASTERTABLE.dteDueDate , MASTERTABLE.dteJournalDate , tblCustomers.strCustCategory, DATEPART(m, MASTERTABLE.dteJournalDate), DATEPART(yyyy, MASTERTABLE.dteJournalDate), CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) ORDER BY tblCustomers.strTerm , LTRIM(RTRIM(MASTERTABLE.strCustName)) 
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetReceivableMonthData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetReceivableMonthData]
	@CustCategory AS nvarchar(20) = NULL,
	@IsAllCustomerCategory AS bit = NULL,
	@ToDate AS datetime = NULL,
	@SQUserName AS nvarchar(20) = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllCustomerCategory = 0 
		BEGIN
			SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName
										,tblCustomers.strCustDesc AS CustDesc
										,tblCustomers.strTerm AS Term
										,MASTERTABLE.dteDueDate AS DueDate
										,SUM(tblCustTransDT.decAmount) AS Amount
										,MASTERTABLE.dteJournalDate AS JournalDate
										,ISNULL(tblCustomers.strCustCategory, '') AS CustCate
										,DATEPART(m, MASTERTABLE.dteJournalDate) AS Month
										,DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS Year
										,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) AS [Month-Year]
									FROM tblCustTrans AS MASTERTABLE
									INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))
									INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
									WHERE tblCustomers.strCustCategory IN (
											SELECT tblCustomerCat.strCustCategory
											FROM tblCustomerCat
											LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
											WHERE ISNULL((
														SELECT COUNT(tblCustomerCatSec.strCustCategory)
														FROM tblCustomerCatSec
														WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
														), 0) = 0
												OR (
													ISNULL((
															SELECT COUNT(tblCustomerCatSec.strCustCategory)
															FROM tblCustomerCatSec
															WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
															), 0) > 0
													AND tblCustomerCatSec.strUserName = @SQUserName
													)
											)
										AND tblCustTransDT.bitReversed = 0
										AND tblCustTransDT.dteJournalDate <= @ToDate
										AND tblCustTransDT.lngCustTrID NOT IN (
											SELECT tblCustTransDT.lngCustTrID
											FROM tblCustTrans
											INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
											WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
												AND tblCustTransDT.bitReversed = 0
												AND tblCustTransDT.dteJournalDate <= @ToDate
											GROUP BY tblCustTransDT.lngCustTrID
											HAVING SUM(tblCustTransDT.decAmount) = 0
												AND SUM(tblCustTransDT.decAmountF) = 0
											)
											AND tblCustomers.strCustCategory = @CustCategory
											GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc ,tblCustomers.strTerm , MASTERTABLE.dteDueDate , MASTERTABLE.dteJournalDate , tblCustomers.strCustCategory, DATEPART(m, MASTERTABLE.dteJournalDate), DATEPART(yyyy, MASTERTABLE.dteJournalDate), CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) ORDER BY tblCustomers.strTerm , LTRIM(RTRIM(MASTERTABLE.strCustName)) 
		END
	ELSE
		BEGIN
			SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName
										,tblCustomers.strCustDesc AS CustDesc
										,tblCustomers.strTerm AS Term
										,MASTERTABLE.dteDueDate AS DueDate
										,SUM(tblCustTransDT.decAmount) AS Amount
										,MASTERTABLE.dteJournalDate AS JournalDate
										,ISNULL(tblCustomers.strCustCategory, '') AS CustCate
										,DATEPART(m, MASTERTABLE.dteJournalDate) AS Month
										,DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS Year
										,CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) AS [Month-Year]
									FROM tblCustTrans AS MASTERTABLE
									INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))
									INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
									WHERE tblCustomers.strCustCategory IN (
											SELECT tblCustomerCat.strCustCategory
											FROM tblCustomerCat
											LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
											WHERE ISNULL((
														SELECT COUNT(tblCustomerCatSec.strCustCategory)
														FROM tblCustomerCatSec
														WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
														), 0) = 0
												OR (
													ISNULL((
															SELECT COUNT(tblCustomerCatSec.strCustCategory)
															FROM tblCustomerCatSec
															WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
															), 0) > 0
													AND tblCustomerCatSec.strUserName = @SQUserName
													)
											)
										AND tblCustTransDT.bitReversed = 0
										AND tblCustTransDT.dteJournalDate <=  @ToDate
										AND tblCustTransDT.lngCustTrID NOT IN (
											SELECT tblCustTransDT.lngCustTrID
											FROM tblCustTrans
											INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
											WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
												AND tblCustTransDT.bitReversed = 0
												AND tblCustTransDT.dteJournalDate <= @ToDate
											GROUP BY tblCustTransDT.lngCustTrID
											HAVING SUM(tblCustTransDT.decAmount) = 0
												AND SUM(tblCustTransDT.decAmountF) = 0
											)
						GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc ,tblCustomers.strTerm , MASTERTABLE.dteDueDate , MASTERTABLE.dteJournalDate , tblCustomers.strCustCategory, DATEPART(m, MASTERTABLE.dteJournalDate), DATEPART(yyyy, MASTERTABLE.dteJournalDate), CAST(DATEPART(m, MASTERTABLE.dteJournalDate) AS NVARCHAR) + '-' + CAST(DATEPART(yyyy, MASTERTABLE.dteJournalDate) AS NVARCHAR) ORDER BY tblCustomers.strTerm , LTRIM(RTRIM(MASTERTABLE.strCustName))
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetRptInvAged]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prGetRptInvAged] (
  -- Add the parameters for the stored procedure here
	@SQUserName nvarchar(20) = NULL,	
	@SQstrLocNameList nvarchar(1000) = NULL,
	@bitOptInactive [bit] = NULL,
	@SQAsAt Datetime=NULL,
	@bitblnBPToolsMode [bit]=NULL,
	@bitAll bit=NULL,
	@bitChkUseCalAge bit=NULL,
	@bitOptCurrent bit=NULL,
	@intPeriod1 int,
	@intPeriod2 int,
	@intPeriod3 int,
	@intPeriod4 int	
	)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

Declare  
@PartNumber		nvarchar(100),
@Description	nvarchar(1000),
@Amount1		[money] =0.0,
@Qty1			int =0,
@Amount2		[money] =0.0,
@Qty2			int =0,
@Amount3		[money] =0.0,
@Qty3			int =0,
@Amount4		[money] =0.0,
@Qty4			int =0.0,
@Amount5		[money] =0.0,
@Qty5			int =0,
@Amount6		[money] =0.0,
@Qty6			int =0,
@CurOnHandValue [money] =0.0,
@CurOnHandQty [money] =0.0,
@OpenValue [money] =0.0,
@OpenQty int =0,
@balanceAmnt [money] =0.0,
@balanceQty int =0,
@purTotalValue [MONEY]=0.0,
@purTotalQty int=0,
@SQL varchar(max),
@LocName as nvarchar(max)
;

declare @LocationList as table
(
	LocName  nvarchar(1000)
)

declare @InvAgedList as table
(
	dteJournalDate datetime,
	decValue [money],
	decQty [money],
	strLocName  nvarchar(1000)
)

declare @tblInv as table
(
 strPartNumber	nvarchar(100) not null
 ,strDesc		nvarchar(max) default ''
,Amt1			money
,Qty1			int
,Amt2			money
,Qty2			int
,Amt3			money
,Qty3			int
,Amt4			money
,Qty4			int
,Amt5			money
,Qty5			int
,Amt6			money
,Qty6			int
,LocName		nvarchar(100) not null
,sumDecValue	money
,sumDecQty		money
,sumOpenValue	money
,sumOpenQty		money
,curOnHandValue money
,curOnHandQty money
primary key(strPartNumber, LocName)
)

if @bitAll = 0
	insert into @LocationList
	select Value as LocName from [dbo].[fnSplitStringAsTable](@SQstrLocNameList, ',')
else 
	insert into @LocationList
	select @SQstrLocNameList as LocName   

if @bitblnBPToolsMode=0
insert into @tblInv
select			strPartNumber
		,		strDesc
		,0	as	Amt1
		,0	as	Qty1
		,0	as	Amt2
		,0	as	Qty2
		,0	as	Amt3
		,0	as	Qty3
		,0	as	Amt4
		,0	as	Qty4
		,0	as	Amt5
		,0	as	Qty5
		,0	as	Amt6
		,0	as	Qty6
		,Lc.LocName
		,NULL,NULL,NULL,NULL,NULL,NULL
from tblInv 
CROSS APPLY @LocationList as Lc
where 
strCategory in (
SELECT strCategory
FROM tblInvCat
WHERE strCategory IN (
		SELECT tblInvCat.strCategory
		FROM tblInvCat
		LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
		WHERE ISNULL((
					SELECT COUNT(tblInvCatSec.strCategory)
					FROM tblInvCatSec
					WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
					), 0) = 0
			OR (
				ISNULL((
						SELECT COUNT(tblInvCatSec.strCategory)
						FROM tblInvCatSec
						WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
						), 0) > 0
				AND tblInvCatSec.strUserName = @SQUserName
				)
		)
)
and bitInactive = CASE WHEN @bitOptInactive = 1 THEN bitInactive ELSE @bitOptInactive END
and intType = 1 

else
begin
	insert into @tblInv
	select			strPartNumber
			,		strDesc
			,0	as	Amt1
			,0	as	Qty1
			,0	as	Amt2
			,0	as	Qty2
			,0	as	Amt3
			,0	as	Qty3
			,0	as	Amt4
			,0	as	Qty4
			,0	as	Amt5
			,0	as	Qty5
			,0	as	Amt6
			,0	as	Qty6
			,Lc.LocName
			,NULL,NULL,NULL,NULL,NULL,NULL
	from tblInv 
	CROSS APPLY @LocationList as Lc
	where bitInactive = CASE WHEN @bitOptInactive = 1 THEN bitInactive ELSE @bitOptInactive END
	and intType = 1 
end


declare @tblInvTracingInfo as table
(
	 strPartNumber	nvarchar(100) 
	,strLocName		nvarchar(1000) 	
	,decSumValue	money
	,decsumqty		INT	
 primary key(strPartNumber, strLocName)  
)  
  
declare @tblInvExtInfo as table  
(  
	 strPartNumber	nvarchar(100) 
	,strLocName		nvarchar(1000) 
	,decOpenValue	money
	,decOpenQty		INT
 primary key(strPartNumber, strLocName)  
)  
  
if @bitAll = 0  
	insert into @tblInvTracingInfo  
	SELECT	tblInvTrackingDT.strPartNumber, tblInvTrackingDT.strLocName,  
	     SUM(tblInvTrackingDT.decValue) AS decSumValue,  
	     SUM(tblInvTrackingDT.decQty) AS decSumQty     
	   FROM tblInvTracking     
	   INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID        
	   WHERE (tblInvTrackingDT.bitService = 0)      
	   AND	(tblInvTracking.dteJournalDate <= @SQAsAt)     
	   AND (tblInvTrackingDT.strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQstrLocNameList,',')))  
	   GROUP BY tblInvTrackingDT.strPartNumber, tblInvTrackingDT.strLocName    
  
else  
begin  
	insert into @tblInvTracingInfo  
	SELECT	tblInvTrackingDT.strPartNumber, '' as locname,  
	     SUM(tblInvTrackingDT.decValue) AS decSumValue,  
	     SUM(tblInvTrackingDT.decQty) AS decSumQty  
	   FROM tblInvTracking     
	   INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID  
	   WHERE (tblInvTrackingDT.bitService = 0)   
	   AND	(tblInvTracking.dteJournalDate <= @SQAsAt)  
	   GROUP BY tblInvTrackingDT.strPartNumber--, tblInvTrackingDT.strLocName 
end  
  
if @bitAll = 0  
	insert into @tblInvExtInfo  
	SELECT strPartNumber, strLocName, SUM(decOpenValue) decOpenValue, SUM(decOpenQty) decOpenQty 
	FROM tblInvExt      
	WHERE (strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQstrLocNameList,',')))  
	GROUP BY strPartNumber, strLocName  
  
else  
begin  
	insert into @tblInvExtInfo  
	SELECT strPartNumber, '' as strLocName, SUM(decOpenValue) decOpenValue, SUM(decOpenQty) decOpenQty 
	FROM tblInvExt   
	GROUP BY strPartNumber--,strLocName 
end  
  
UPDATE @tblInv  
SET sumDecQty = B.decsumqty, sumDecValue = B.decSumValue  
FROM @tblInv A  
INNER JOIN @tblInvTracingInfo B  
    ON A.strPartNumber = B.strPartNumber and (@bitAll = 1 OR A.LocName = B.strLocName)  
  
UPDATE @tblInv  
SET sumOpenQty = B.decOpenQty, 
    sumOpenValue = B.decOpenValue,
    curOnHandQty = (CASE WHEN (sumDecQty IS NOT NULL) THEN sumDecQty + decOpenQty ELSE decOpenQty END),
    curOnHandValue = (CASE WHEN (sumDecQty IS NOT NULL) THEN sumDecValue + decOpenValue ELSE decOpenValue END)
FROM @tblInv A  
INNER JOIN @tblInvExtInfo B  
    ON A.strPartNumber = B.strPartNumber and (@bitAll = 1 OR A.LocName = B.strLocName)  
  
delete from @tblInv where curOnHandQty <= 0  
  
if @bitChkUseCalAge = 1  
begin   
 set @intPeriod1 = 0  
 set @intPeriod2 = -1  
 set @intPeriod3 = -2  
 set @intPeriod4 = -3   
end  

SELECT CASE 
		WHEN @bitAll = 1
			THEN ''
		ELSE Z.strLocName
		END AS strLocName,
		strPartNumber,
		SUM(Amnt1) AS Amnt1, SUM(Qnty1) AS Qnty1,
		SUM(Amnt2) AS Amnt2, SUM(Qnty2) AS Qnty2,
		SUM(Amnt3) AS Amnt3, SUM(Qnty3) AS Qnty3,
		SUM(Amnt4) AS Amnt4, SUM(Qnty4) AS Qnty4,
		SUM(Amnt5) AS Amnt5, SUM(Qnty5) AS Qnty5
INTO #Sales_Data
FROM (
	SELECT tblInvTrackingDT.strLocName,
		tblInvTrackingDT.strPartNumber,
	     tblInvTrackingDT.strSource,
		Sum(CASE WHEN @bitChkUseCalAge=0   
       THEN (case when (DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)<=@intPeriod1) Then tblInvTrackingDT.decValue ELse 0 END)   
       ELSE (case when (DATEDIFF(MONTH,@SQAsAt,tblInvTracking.dteJournalDate)>=@intPeriod1) Then tblInvTrackingDT.decValue ELse 0 END) END) Amnt1,  
     Sum(CASE WHEN @bitChkUseCalAge=0  
        THEN(case when (DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)<=@intPeriod1) Then tblInvTrackingDT.decQty ELse 0 END)   
        ELSE (case when (DATEDIFF(MONTH,@SQAsAt,tblInvTracking.dteJournalDate)>=@intPeriod1) Then tblInvTrackingDT.decQty ELse 0 END) END) Qnty1,       
     SUM(CASE WHEN @bitChkUseCalAge=0   
       THEN(case when (DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)>@intPeriod1 AND DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)<=@intPeriod2) Then tblInvTrackingDT.decValue ELse 0 END)   
       ELSE (case when (DATEDIFF(MONTH,@SQAsAt,tblInvTracking.dteJournalDate)=@intPeriod2) Then tblInvTrackingDT.decValue ELse 0 END) END) Amnt2,  
     SUM(CASE WHEN @bitChkUseCalAge=0   
       THEN(case when (DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)>@intPeriod1 AND DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)<=@intPeriod2) Then tblInvTrackingDT.decQty ELse 0 END)   
       ELSE (case when (DATEDIFF(MONTH,@SQAsAt,tblInvTracking.dteJournalDate)=@intPeriod2) Then tblInvTrackingDT.decQty ELse 0 END) END) Qnty2,  
     SUM(CASE WHEN @bitChkUseCalAge=0   
       THEN(case when (DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)>@intPeriod2 AND DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)<=@intPeriod3) Then tblInvTrackingDT.decValue ELse 0 END)   
       ELSE (case when (DATEDIFF(MONTH,@SQAsAt,tblInvTracking.dteJournalDate)=@intPeriod3) Then tblInvTrackingDT.decValue ELse 0 END) END) Amnt3,  
     SUM(CASE WHEN @bitChkUseCalAge=0   
       THEN(case when (DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)>@intPeriod2 AND DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)<=@intPeriod3) Then tblInvTrackingDT.decQty ELse 0 END)   
       ELSE (case when (DATEDIFF(MONTH,@SQAsAt,tblInvTracking.dteJournalDate)=@intPeriod3) Then tblInvTrackingDT.decQty ELse 0 END) END) Qnty3,  
     SUM(CASE WHEN @bitChkUseCalAge=0   
       THEN(case when (DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)>@intPeriod3 AND DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)<=@intPeriod4) Then tblInvTrackingDT.decValue ELse 0 END)   
       ELSE (case when (DATEDIFF(MONTH,@SQAsAt,tblInvTracking.dteJournalDate)=@intPeriod4) Then tblInvTrackingDT.decValue ELse 0 END) END) Amnt4,  
     SUM(CASE WHEN @bitChkUseCalAge=0   
       THEN(case when (DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)>@intPeriod3 AND DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)<=@intPeriod4) Then tblInvTrackingDT.decQty ELse 0 END)   
       ELSE (case when (DATEDIFF(MONTH,@SQAsAt,tblInvTracking.dteJournalDate)=@intPeriod4) Then tblInvTrackingDT.decQty ELse 0 END) END) Qnty4,  
     SUM(CASE WHEN @bitChkUseCalAge=0   
       THEN(case when (DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)>@intPeriod4) Then tblInvTrackingDT.decValue ELse 0 END)   
       ELSE (case when (DATEDIFF(MONTH,@SQAsAt,tblInvTracking.dteJournalDate)=@intPeriod4) Then tblInvTrackingDT.decValue ELse 0 END) END) Amnt5,  
     SUM(CASE WHEN @bitChkUseCalAge=0   
       THEN(case when (DATEDIFF(DAY,tblInvTracking.dteJournalDate,@SQAsAt)>@intPeriod4) Then tblInvTrackingDT.decQty ELse 0 END)   
       ELSE (case when (DATEDIFF(MONTH,@SQAsAt,tblInvTracking.dteJournalDate)=@intPeriod4) Then tblInvTrackingDT.decQty ELse 0 END) END) Qnty5   
	FROM tblInvTracking
	INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
	WHERE (tblInvTrackingDT.bitService = 0)
		AND (tblInvTracking.dteJournalDate <= @SQAsAt)
		AND (
			@bitAll = 1
			OR tblInvTrackingDT.strLocName IN (
				SELECT Value
				FROM dbo.fnSplitStringAsTable(@SQstrLocNameList, ',')
				)
			)
	GROUP BY tblInvTrackingDT.strPartNumber
		,tblInvTrackingDT.strLocName
		,tblInvTrackingDT.strSource
	HAVING SUM(tblInvTrackingDT.decQty) > 0
	) AS Z
GROUP BY Z.strPartNumber
	,CASE 
		WHEN @bitAll = 1
			THEN ''
		ELSE Z.strLocName
		END

UPDATE @tblInv  
SET Amt1 = CASE WHEN curOnHandQty<0 THEN curOnHandValue ELSE Amnt1 END,  
Qty1 = CASE WHEN curOnHandQty<0 THEN curOnHandQty ELSE Qnty1 END,  
Amt2 = CASE WHEN curOnHandQty<0 THEN 0 ELSE Amnt2 END,  
Qty2 = CASE WHEN curOnHandQty<0 THEN 0 ELSE Qnty2 END,  
Amt3 = CASE WHEN curOnHandQty<0 THEN 0 ELSE Amnt3 END,  
Qty3 = CASE WHEN curOnHandQty<0 THEN 0 ELSE Qnty3 END,  
Amt4 = CASE WHEN curOnHandQty<0 THEN 0 ELSE Amnt4 END,  
Qty4 = CASE WHEN curOnHandQty<0 THEN 0 ELSE Qnty4 END,  
Amt5 = CASE WHEN curOnHandQty<0 THEN 0 ELSE Amnt5 END,  
Qty5 = CASE WHEN curOnHandQty<0 THEN 0 ELSE Qnty5 END  
FROM @tblInv a  
INNER JOIN #Sales_Data  
ON #Sales_Data.strPartNumber = a.strPartNumber 
AND (@bitAll = 1 OR A.LocName = #Sales_Data.strLocName)  
  
DECLARE InvAged_Cursor CURSOR FOR    
SELECT strPartNumber, strDesc, Amt1, Qty1, Amt2, Qty2, Amt3, Qty3, Amt4, Qty4, Amt5, Qty5, Amt6, Qty6, curOnHandValue, curOnHandQty, sumOpenValue, sumOpenQty, LocName 
FROM @tblInv  
OPEN InvAged_Cursor;    
FETCH NEXT FROM InvAged_Cursor INTO @PartNumber, @Description, @Amount1, @Qty1, @Amount2, @Qty2, @Amount3, @Qty3, @Amount4, @Qty4, @Amount5, @Qty5, @Amount6, @Qty6, @CurOnHandValue, @CurOnHandQty, @OpenValue, @OpenQty, @LocName;  
WHILE @@FETCH_STATUS = 0    
BEGIN    
    
  SET @purTotalValue = @Amount1 + @Amount2 + @Amount3 + @Amount4 + @Amount5  
  SET @purTotalQty   = @Qty1 + @Qty2 + @Qty3 + @Qty4 + @Qty5  
  
  --If On Hand quantity is less than zero(Negative)  
  IF @CurOnHandQty < 0  
  BEGIN      
   UPDATE @tblInv SET          
				Amt1=@CurOnHandValue, Qty1=@CurOnHandQty,
				Amt2=0.0,  Qty2=0,
				Amt3=0.0,  Qty3=0,
				Amt4=0.0,  Qty4=0,
				Amt5=0.0,  Qty5=0,
				Amt6=@CurOnHandValue,  
				Qty6=@CurOnHandQty --total
   WHERE strPartNumber=@PartNumber AND LocName=@LocName  
  END
  --If On Hand quantity is equal to total sum of receiving criteria 
  ELSE IF @CurOnHandQty = @purTotalQty  
  BEGIN     
   UPDATE @tblInv SET          
				Amt1=@Amount1, Qty1=@Qty1,
				Amt2=@Amount2, Qty2=@Qty2,
				Amt3=@Amount3, Qty3=@Qty3,
				Amt4=@Amount4, Qty4=@Qty4,
				Amt5=@Amount5, Qty5=@Qty5,
				Amt6=@CurOnHandValue,  
				Qty6=@CurOnHandQty --total
   WHERE strPartNumber=@PartNumber AND LocName=@LocName  
  END  
  --If On Hand quantity is greater than zero(Positive) and On Hand quantity is less than total sum of receiving criteria  
  ELSE IF @CurOnHandQty > 0 AND @CurOnHandQty < @purTotalQty  
  BEGIN  
   DECLARE @isProcessed bit=0; 
  
   SET @balanceQty  = @purTotalQty  - @CurOnHandQty  
   SET @balanceAmnt = @purTotalValue - @CurOnHandValue  

   IF @Qty5 > 0   
   BEGIN  
    SET @balanceQty  = @Qty5  - @balanceQty  
    SET @balanceAmnt = @Amount5 - @balanceAmnt  
    IF @balanceQty >= 0  
    BEGIN  
     SET @Qty5    = @balanceQty  
     SET @Amount5 = @balanceAmnt  
    END  
    ELSE  
    BEGIN  
     SET @Qty5    = 0  
     SET @Amount5 = 0  
    END  
    SET @isProcessed = 1  
   END  
  
   IF @Qty4 > 0   
   BEGIN  
    IF @balanceQty < 0  
    BEGIN   
     SET @balanceQty  = @Qty4 - (-@balanceQty)  
     SET @balanceAmnt = @Amount4 - (-@balanceAmnt)  
    END  
    ELSE IF @balanceQty > 0  
     BEGIN  
      IF @isProcessed = 1   
      BEGIN  
       SET @balanceQty  = @Qty4  
       SET @balanceAmnt = @Amount4  
      END   
      ELSE  
      BEGIN  
       SET @balanceQty  = @Qty4 - @balanceQty  
       SET @balanceAmnt = @Amount4 - @balanceAmnt  
      END  
     END  
    ELSE  
     BEGIN  
      SET @balanceQty  = @Qty4 - (@balanceQty)  
      SET @balanceAmnt = @Amount4 - (@balanceAmnt)  
     END  
    IF @balanceQty >= 0  
    BEGIN  
     SET @Qty4    = @balanceQty  
     SET @Amount4 = @balanceAmnt  
    END  
    ELSE  
    BEGIN  
     SET @Qty4    = 0  
     SET @Amount4 = 0.0  
    END  
    SET @isProcessed = 1  
   END  
  
   IF @Qty3 > 0   
   BEGIN  
    IF @balanceQty < 0  
    BEGIN   
     SET @balanceQty  = @Qty3 - (-@balanceQty)  
     SET @balanceAmnt = @Amount3 - (-@balanceAmnt)  
    END  
    ELSE IF @balanceQty > 0  
     BEGIN  
     IF @isProcessed = 1   
      BEGIN  
       SET @balanceQty  = @Qty3  
       SET @balanceAmnt = @Amount3  
      END  
     ELSE  
      BEGIN  
       SET @balanceQty  = @Qty3 - (@balanceQty)  
       SET @balanceAmnt = @Amount3 - (@balanceAmnt)  
      END  
     END  
    ELSE  
     BEGIN  
     SET @balanceQty  = @Qty3 - (@balanceQty)  
     SET @balanceAmnt = @Amount3 - (@balanceAmnt)  
     END  
    IF @balanceQty >= 0  
    BEGIN  
     SET @Qty3    = @balanceQty  
     SET @Amount3 = @balanceAmnt  
    END  
    ELSE  
    BEGIN  
     SET @Qty3    = 0  
     SET @Amount3 = 0.0  
    END  
    SET @isProcessed = 1  
   END  
  
   IF @Qty2 > 0   
   BEGIN  
    IF @balanceQty < 0  
    BEGIN   
     SET @balanceQty  = @Qty2 - (-@balanceQty)  
     SET @balanceAmnt = @Amount2 - (-@balanceAmnt)  
    END  
    ELSE IF @balanceQty > 0  
     BEGIN  
     IF @isProcessed = 1   
      BEGIN  
       SET @balanceQty  = @Qty2  
       SET @balanceAmnt = @Amount2  
      END  
      ELSE  
      BEGIN  
       SET @balanceQty  = @Qty2 - (@balanceQty)  
       SET @balanceAmnt = @Amount2 - (@balanceAmnt)  
      END  
     END  
    ELSE  
     BEGIN  
      SET @balanceQty  = @Qty2 - (@balanceQty)  
      SET @balanceAmnt = @Amount2 - (@balanceAmnt)  
     END  
    IF @balanceQty >= 0  
    BEGIN  
     SET @Qty2    = @balanceQty  
     SET @Amount2 = @balanceAmnt  
    END  
    ELSE  
    BEGIN  
     SET @Qty2    = 0  
     SET @Amount2 = 0.0  
    END  
    SET @isProcessed = 1  
   END  
  
   IF @Qty1 > 0   
   BEGIN  
    IF @balanceQty < 0  
    BEGIN   
     SET @balanceQty  = @Qty1 - (-@balanceQty)  
     SET @balanceAmnt = @Amount1 - (-@balanceAmnt)  
    END  
    ELSE IF @balanceQty > 0  
     BEGIN  
     IF @isProcessed = 1   
      BEGIN  
       SET @balanceQty  = @Qty1  
       SET @balanceAmnt = @Amount1  
      END  
     ELSE  
      BEGIN  
       SET @balanceQty  = @Qty1 - @balanceQty  
       SET @balanceAmnt = @Amount1 - @balanceAmnt  
      END  
     END  
    ELSE  
     BEGIN  
     SET @balanceQty  = @Qty1 - (@balanceQty)  
     SET @balanceAmnt = @Amount1 - (@balanceAmnt)  
     END  
    IF @balanceQty >= 0  
    BEGIN  
     SET @Qty1    = @balanceQty  
     SET @Amount1 = @balanceAmnt  
    END  
    ELSE  
    BEGIN  
     SET @Qty1    = 0  
     SET @Amount1 = 0.0  
    END  
    SET @isProcessed = 1  
   END  
       
   UPDATE @tblInv SET          
				Amt1=@Amount1, Qty1=@Qty1,
				Amt2=@Amount2, Qty2=@Qty2,
				Amt3=@Amount3, Qty3=@Qty3,
				Amt4=@Amount4, Qty4=@Qty4,
				Amt5=@Amount5, Qty5=@Qty5,
				Amt6=@CurOnHandValue,  
				Qty6=@CurOnHandQty
   WHERE strPartNumber=@PartNumber AND LocName=@LocName  
  
  END  
  --If On Hand quantity is greater than zero(Positive) and On Hand quantity is greater than total sum of receiving criteria  
  ELSE IF @CurOnHandQty > 0 AND @CurOnHandQty > @purTotalQty  
  BEGIN  
   UPDATE @tblInv SET          
				Amt1=@Amount1, Qty1=@Qty1,
				Amt2=@Amount2, Qty2=@Qty2,
				Amt3=@Amount3, Qty3=@Qty3,
				Amt4=@Amount4, Qty4=@Qty4,
				Amt5=@CurOnHandValue-@purTotalValue,	
				Qty5=@CurOnHandQty-@purTotalQty,
				Amt6=@CurOnHandValue,  
				Qty6=@CurOnHandQty
   WHERE strPartNumber=@PartNumber AND LocName=@LocName  
  END   
    
  SET @purTotalValue = 0.0  
  SET @purTotalQty   = 0  
  
  FETCH NEXT FROM InvAged_Cursor INTO @PartNumber, @Description, @Amount1, @Qty1, @Amount2, @Qty2, @Amount3, @Qty3, @Amount4, @Qty4, @Amount5, @Qty5, @Amount6, @Qty6, @CurOnHandValue, @CurOnHandQty, @OpenValue, @OpenQty, @LocName;  
END;    
CLOSE InvAged_Cursor;    
DEALLOCATE InvAged_Cursor;      
  
if @bitAll = 0  
BEGIN

	UPDATE @tblInv 
	SET Qty5 = Qty5 + Z.QtyVariance,
		Amt5 = Amt5 + Z.AmtVariance 
	FROM (SELECT strPartNumber AS PartNum,
				 strDesc, 
				 LocName as [Location],
				 SUM(Qty6) - (SUM(Qty1) + SUM(Qty2) + SUM(Qty3) + SUM(Qty4) + SUM(Qty5)) AS QtyVariance, 
				 SUM(Amt6) - (SUM(Amt1) + SUM(Amt2) + SUM(Amt3) + SUM(Amt4) + SUM(Amt5)) AS AmtVariance
		  FROM @tblInv   
		  GROUP BY strPartNumber, strDesc, LocName
		  HAVING (SUM(Qty1) + SUM(Qty2) + SUM(Qty3) + SUM(Qty4) + SUM(Qty5)) <> SUM(Qty6)
		  OR (SUM(Amt1) + SUM(Amt2) + SUM(Amt3) + SUM(Amt4) + SUM(Amt5)) <> SUM(Amt6)) Z
	WHERE strPartNumber = Z.PartNum 
	AND LocName = Z.[Location]

	SELECT strPartNumber, strDesc, LocName as Location,
		   sum(Amt1) Amount1, sum(Qty1) Qty1,
		   sum(Amt2) Amount2, sum(Qty2) Qty2,
		   sum(Amt3) Amount3, sum(Qty3) Qty3,
		   sum(Amt4) Amount4, sum(Qty4) Qty4,
		   sum(Amt5) Amount5, sum(Qty5) Qty5,
		   sum(Amt6) AmountTotal, cast(sum(Qty6) as int) QtyTotal 
	FROM @tblInv  
	GROUP BY strPartNumber, strDesc, LocName  
	ORDER BY LocName, strPartNumber, strDesc  

END
else  
BEGIN 

	UPDATE @tblInv 
	SET Qty5 = Qty5 + Z.QtyVariance,
		Amt5 = Amt5 + Z.AmtVariance 
	FROM (SELECT strPartNumber AS PartNum,
				 strDesc,
				 SUM(Qty6) - (SUM(Qty1) + SUM(Qty2) + SUM(Qty3) + SUM(Qty4) + SUM(Qty5)) AS QtyVariance, 
				 SUM(Amt6) - (SUM(Amt1) + SUM(Amt2) + SUM(Amt3) + SUM(Amt4) + SUM(Amt5)) AS AmtVariance
		  FROM @tblInv   
		  GROUP BY strPartNumber, strDesc
		  HAVING (SUM(Qty1) + SUM(Qty2) + SUM(Qty3) + SUM(Qty4) + SUM(Qty5)) <> SUM(Qty6)
		  OR (SUM(Amt1) + SUM(Amt2) + SUM(Amt3) + SUM(Amt4) + SUM(Amt5)) <> SUM(Amt6)) Z
	WHERE strPartNumber = Z.PartNum

	SELECT strPartNumber, strDesc, '' as Location,
		   sum(Amt1) Amount1, sum(Qty1) Qty1,
		   sum(Amt2) Amount2, sum(Qty2) Qty2,
		   sum(Amt3) Amount3, sum(Qty3) Qty3,
		   sum(Amt4) Amount4, sum(Qty4) Qty4,
		   sum(Amt5) Amount5, sum(Qty5) Qty5,
		   sum(Amt6) AmountTotal, cast(sum(Qty6) as int) QtyTotal 
	FROM @tblInv   
	GROUP BY strPartNumber, strDesc  
	ORDER BY strPartNumber  

END

IF OBJECT_ID('tempdb..#Sales_Data') IS NOT NULL  
   DROP TABLE #Sales_Data  
END
GO
/****** Object:  StoredProcedure [dbo].[prGetSalesComparisonData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetSalesComparisonData]
	@IsAllCustomerCategory AS BIT = NULL,
	@IsAllCustomer AS BIT = NULL,
	@CustName AS nvarchar(50) = NULL,
	@CustCategory AS nvarchar(20) = NULL,
	@StartDate AS datetime = NULL,
	@EndDate AS datetime = NULL,
	@SinceStartDate AS datetime = NULL,
	@SinceEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllCustomerCategory = 1 AND @IsAllCustomer = 0
		BEGIN
			SELECT tblInvCat.strCategory AS ItemCategory
								,ISNULL(NewCust.NetSalesValue, 0) AS NewCustomer
								,ISNULL(OldCust.NetSalesValue, 0) AS OldCustomer
							FROM tblInvCat
							LEFT JOIN (
								SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory
									,SUM(tblInvoiceDocDT.decLineTotExc) AS NetSalesValue
								FROM tblInvoiceDocDT
								INNER JOIN tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
								INNER JOIN tblInv ON dbo.tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
								INNER JOIN tblCustomers ON dbo.tblInvoiceDoc.strCustName = tblCustomers.strCustName
								WHERE (tblInvoiceDocDT.bitDiscountTax = 0)
									AND tblInvoiceDoc.dteJournalDate BETWEEN @StartDate 
										AND  @EndDate 
									AND tblCustomers.dteSince BETWEEN @SinceStartDate  
										AND @SinceEndDate  
										AND tblInvoiceDoc.strCustName =  @CustName
										GROUP BY tblInv.strCategory ) AS NewCust ON tblInvCat.strCategory = NewCust.ItemCategory LEFT JOIN ( SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory, SUM(tblInvoiceDocDT.decLineTotExc) AS NetSalesValue FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON dbo.tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber INNER JOIN tblCustomers ON dbo.tblInvoiceDoc.strCustName = tblCustomers.strCustName WHERE (tblInvoiceDocDT.bitDiscountTax = 0) AND tblInvoiceDoc.dteJournalDate BETWEEN  @StartDate  AND  @EndDate  AND tblCustomers.dteSince <  @SinceStartDate 
										 AND tblInvoiceDoc.strCustName =  @CustName 
									GROUP BY tblInv.strCategory ) AS OldCust ON tblInvCat.strCategory = OldCust.ItemCategory ORDER BY ItemCategory 
		END
	ELSE IF @IsAllCustomerCategory = 0 AND @IsAllCustomer = 1
		BEGIN
			SELECT tblInvCat.strCategory AS ItemCategory
								,ISNULL(NewCust.NetSalesValue, 0) AS NewCustomer
								,ISNULL(OldCust.NetSalesValue, 0) AS OldCustomer
							FROM tblInvCat
							LEFT JOIN (
								SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory
									,SUM(tblInvoiceDocDT.decLineTotExc) AS NetSalesValue
								FROM tblInvoiceDocDT
								INNER JOIN tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
								INNER JOIN tblInv ON dbo.tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
								INNER JOIN tblCustomers ON dbo.tblInvoiceDoc.strCustName = tblCustomers.strCustName
								WHERE (tblInvoiceDocDT.bitDiscountTax = 0)
									AND tblInvoiceDoc.dteJournalDate BETWEEN @StartDate 
										AND  @EndDate 
									AND tblCustomers.dteSince BETWEEN @SinceStartDate  
										AND @SinceEndDate  
										AND tblCustomers.strCustCategory =  @CustCategory 
										GROUP BY tblInv.strCategory ) AS NewCust ON tblInvCat.strCategory = NewCust.ItemCategory LEFT JOIN ( SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory, SUM(tblInvoiceDocDT.decLineTotExc) AS NetSalesValue FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON dbo.tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber INNER JOIN tblCustomers ON dbo.tblInvoiceDoc.strCustName = tblCustomers.strCustName WHERE (tblInvoiceDocDT.bitDiscountTax = 0) AND tblInvoiceDoc.dteJournalDate BETWEEN  @StartDate  AND  @EndDate  AND tblCustomers.dteSince <  @SinceStartDate   
										AND tblCustomers.strCustCategory =  @CustCategory 
										GROUP BY tblInv.strCategory ) AS OldCust ON tblInvCat.strCategory = OldCust.ItemCategory ORDER BY ItemCategory 
		END
	ELSE IF @IsAllCustomerCategory = 0 AND @IsAllCustomer = 0
		BEGIN
			SELECT tblInvCat.strCategory AS ItemCategory
								,ISNULL(NewCust.NetSalesValue, 0) AS NewCustomer
								,ISNULL(OldCust.NetSalesValue, 0) AS OldCustomer
							FROM tblInvCat
							LEFT JOIN (
								SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory
									,SUM(tblInvoiceDocDT.decLineTotExc) AS NetSalesValue
								FROM tblInvoiceDocDT
								INNER JOIN tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
								INNER JOIN tblInv ON dbo.tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
								INNER JOIN tblCustomers ON dbo.tblInvoiceDoc.strCustName = tblCustomers.strCustName
								WHERE (tblInvoiceDocDT.bitDiscountTax = 0)
									AND tblInvoiceDoc.dteJournalDate BETWEEN @StartDate 
										AND  @EndDate  
									AND tblCustomers.dteSince BETWEEN  @SinceStartDate   
										AND  @SinceEndDate    
										AND tblInvoiceDoc.strCustName =  @CustName  AND tblCustomers.strCustCategory =  @CustCategory 
										GROUP BY tblInv.strCategory ) AS NewCust ON tblInvCat.strCategory = NewCust.ItemCategory LEFT JOIN ( SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory, SUM(tblInvoiceDocDT.decLineTotExc) AS NetSalesValue FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON dbo.tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber INNER JOIN tblCustomers ON dbo.tblInvoiceDoc.strCustName = tblCustomers.strCustName WHERE (tblInvoiceDocDT.bitDiscountTax = 0) AND tblInvoiceDoc.dteJournalDate BETWEEN  @StartDate  AND  @EndDate AND tblCustomers.dteSince <  @SinceStartDate   
										AND tblInvoiceDoc.strCustName =  @CustName  AND tblCustomers.strCustCategory =  @CustCategory  
										GROUP BY tblInv.strCategory ) AS OldCust ON tblInvCat.strCategory = OldCust.ItemCategory ORDER BY ItemCategory 
		END
	ELSE IF @IsAllCustomerCategory = 1 AND @IsAllCustomer = 1
		BEGIN
			SELECT tblInvCat.strCategory AS ItemCategory
								,ISNULL(NewCust.NetSalesValue, 0) AS NewCustomer
								,ISNULL(OldCust.NetSalesValue, 0) AS OldCustomer
							FROM tblInvCat
							LEFT JOIN (
								SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory
									,SUM(tblInvoiceDocDT.decLineTotExc) AS NetSalesValue
								FROM tblInvoiceDocDT
								INNER JOIN tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
								INNER JOIN tblInv ON dbo.tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
								INNER JOIN tblCustomers ON dbo.tblInvoiceDoc.strCustName = tblCustomers.strCustName
								WHERE (tblInvoiceDocDT.bitDiscountTax = 0)
									AND tblInvoiceDoc.dteJournalDate BETWEEN  @StartDate 
										AND @EndDate  
									AND tblCustomers.dteSince BETWEEN  @SinceStartDate   
										AND  @SinceEndDate 
								GROUP BY tblInv.strCategory ) AS NewCust ON tblInvCat.strCategory = NewCust.ItemCategory LEFT JOIN ( SELECT ISNULL(tblInv.strCategory, '') AS ItemCategory, SUM(tblInvoiceDocDT.decLineTotExc) AS NetSalesValue FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON dbo.tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber INNER JOIN tblCustomers ON dbo.tblInvoiceDoc.strCustName = tblCustomers.strCustName WHERE (tblInvoiceDocDT.bitDiscountTax = 0) AND tblInvoiceDoc.dteJournalDate BETWEEN @StartDate  AND  @EndDate  AND tblCustomers.dteSince <  @SinceStartDate   
								GROUP BY tblInv.strCategory ) AS OldCust ON tblInvCat.strCategory = OldCust.ItemCategory ORDER BY ItemCategory 
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetSalesData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetSalesData]
	@IsAllCustomerCategory AS BIT = NULL,
	@IsAllCustomer AS BIT = NULL,
	@CustName AS nvarchar(50) = NULL,
	@CustCategory AS nvarchar(20) = NULL,
	@SalesJournalStartDate AS datetime = NULL,
	@SalesJournalEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllCustomerCategory = 1 AND @IsAllCustomer = 1
	BEGIN
		SELECT dbo.tblInvoiceDoc.strInvDocID AS Document#, dbo.tblInvoiceDoc.strReference AS Reference, dbo.tblInvoiceDoc.strUserName AS Agent, dbo.tblInvoiceDoc.strSalesName AS SalesRep, dbo.tblInvoiceDoc.dteJournalDate AS TransactionDate, dbo.tblInvoiceDoc.dteRequired AS RequiredDate, DATENAME(YEAR, dbo.tblInvoiceDoc.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, dbo.tblInvoiceDoc.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDoc.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDoc.dteJournalDate) AS Quarter, dbo.tblInvoiceDoc.strCustName AS CustomerNumber, dbo.tblCustomers.strCustDesc AS CustomerName, dbo.tblCustomers.strCustCategory AS CustomerCategory, dbo.tblInvoiceDocDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocDT.strPartDesc AS ItemDescription_Line, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocDT.strLocation AS ItemLocation, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInvoiceDocDT.decQty AS Qty, dbo.tblInvoiceDocDT.decLineTotExc AS Revenue, dbo.tblInvoiceDocDT.decCOGS AS Cost, dbo.tblInvoiceDocDT.decLineTotExc - dbo.tblInvoiceDocDT.decCOGS AS Profit, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMargin, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMarkup, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, CASE WHEN tblInvoiceDocDT.decQty = 0 THEN 0 ELSE tblInvoiceDocDT.decCOGS / tblInvoiceDocDT.decQty END AS UnitCost, ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) AS StandardCost, ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) AS LastReceivedCost, dbo.tblInvoiceDoc.strCurrency AS CurrencyCode, dbo.tblInvoiceDoc.decExchange AS ExchangeRate, CASE WHEN (tblInvoiceDoc.bitIsForeign <> 0) THEN tblInvoiceDocDT.decLineTotExc / tblInvoiceDoc.decExchange ELSE 0 END AS RevenueFC, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, CASE WHEN CHARINDEX(Char(13), tblInvoiceDoc.strShipTo) = 0 THEN ISNULL(tblInvoiceDoc.strShipTo, '') ELSE LEFT(tblInvoiceDoc.strShipTo, CHARINDEX(Char(13), tblInvoiceDoc.strShipTo)) END AS ShipTo, dbo.tblInvoiceDoc.strAddInfo AS AdditionalInfo, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decSubTotal ELSE tblInvoiceDoc.decSubTotalF END AS DocumentSubtotal, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decDiscAmtF END AS DocumentDiscount, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decVAT ELSE tblInvoiceDoc.decVATF END AS DocumentTax, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS DocumentTotal, dbo.tblInvoiceDoc.intDept AS Department FROM  dbo.tblInvoiceDocDT INNER JOIN dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName WHERE (dbo.tblInvoiceDocDT.bitDiscountTax = 0) AND tblInvoiceDoc.dteJournalDate BETWEEN @SalesJournalStartDate AND @SalesJournalEndDate 
	END
	ELSE IF @IsAllCustomerCategory = 1 AND @IsAllCustomer = 0
	BEGIN
		SELECT dbo.tblInvoiceDoc.strInvDocID AS Document#, dbo.tblInvoiceDoc.strReference AS Reference, dbo.tblInvoiceDoc.strUserName AS Agent, dbo.tblInvoiceDoc.strSalesName AS SalesRep, dbo.tblInvoiceDoc.dteJournalDate AS TransactionDate, dbo.tblInvoiceDoc.dteRequired AS RequiredDate, DATENAME(YEAR, dbo.tblInvoiceDoc.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, dbo.tblInvoiceDoc.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDoc.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDoc.dteJournalDate) AS Quarter, dbo.tblInvoiceDoc.strCustName AS CustomerNumber, dbo.tblCustomers.strCustDesc AS CustomerName, dbo.tblCustomers.strCustCategory AS CustomerCategory, dbo.tblInvoiceDocDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocDT.strPartDesc AS ItemDescription_Line, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocDT.strLocation AS ItemLocation, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInvoiceDocDT.decQty AS Qty, dbo.tblInvoiceDocDT.decLineTotExc AS Revenue, dbo.tblInvoiceDocDT.decCOGS AS Cost, dbo.tblInvoiceDocDT.decLineTotExc - dbo.tblInvoiceDocDT.decCOGS AS Profit, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMargin, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMarkup, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, CASE WHEN tblInvoiceDocDT.decQty = 0 THEN 0 ELSE tblInvoiceDocDT.decCOGS / tblInvoiceDocDT.decQty END AS UnitCost, ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) AS StandardCost, ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) AS LastReceivedCost, dbo.tblInvoiceDoc.strCurrency AS CurrencyCode, dbo.tblInvoiceDoc.decExchange AS ExchangeRate, CASE WHEN (tblInvoiceDoc.bitIsForeign <> 0) THEN tblInvoiceDocDT.decLineTotExc / tblInvoiceDoc.decExchange ELSE 0 END AS RevenueFC, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, CASE WHEN CHARINDEX(Char(13), tblInvoiceDoc.strShipTo) = 0 THEN ISNULL(tblInvoiceDoc.strShipTo, '') ELSE LEFT(tblInvoiceDoc.strShipTo, CHARINDEX(Char(13), tblInvoiceDoc.strShipTo)) END AS ShipTo, dbo.tblInvoiceDoc.strAddInfo AS AdditionalInfo, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decSubTotal ELSE tblInvoiceDoc.decSubTotalF END AS DocumentSubtotal, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decDiscAmtF END AS DocumentDiscount, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decVAT ELSE tblInvoiceDoc.decVATF END AS DocumentTax, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS DocumentTotal, dbo.tblInvoiceDoc.intDept AS Department FROM  dbo.tblInvoiceDocDT INNER JOIN dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName WHERE (dbo.tblInvoiceDocDT.bitDiscountTax = 0) AND tblInvoiceDoc.dteJournalDate BETWEEN @SalesJournalStartDate AND @SalesJournalEndDate AND tblInvoiceDoc.strCustName = @CustName 
	END
	ELSE IF @IsAllCustomerCategory = 0 AND @IsAllCustomer = 1
	BEGIN
		SELECT dbo.tblInvoiceDoc.strInvDocID AS Document#, dbo.tblInvoiceDoc.strReference AS Reference, dbo.tblInvoiceDoc.strUserName AS Agent, dbo.tblInvoiceDoc.strSalesName AS SalesRep, dbo.tblInvoiceDoc.dteJournalDate AS TransactionDate, dbo.tblInvoiceDoc.dteRequired AS RequiredDate, DATENAME(YEAR, dbo.tblInvoiceDoc.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, dbo.tblInvoiceDoc.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDoc.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDoc.dteJournalDate) AS Quarter, dbo.tblInvoiceDoc.strCustName AS CustomerNumber, dbo.tblCustomers.strCustDesc AS CustomerName, dbo.tblCustomers.strCustCategory AS CustomerCategory, dbo.tblInvoiceDocDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocDT.strPartDesc AS ItemDescription_Line, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocDT.strLocation AS ItemLocation, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInvoiceDocDT.decQty AS Qty, dbo.tblInvoiceDocDT.decLineTotExc AS Revenue, dbo.tblInvoiceDocDT.decCOGS AS Cost, dbo.tblInvoiceDocDT.decLineTotExc - dbo.tblInvoiceDocDT.decCOGS AS Profit, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMargin, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMarkup, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, CASE WHEN tblInvoiceDocDT.decQty = 0 THEN 0 ELSE tblInvoiceDocDT.decCOGS / tblInvoiceDocDT.decQty END AS UnitCost, ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) AS StandardCost, ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) AS LastReceivedCost, dbo.tblInvoiceDoc.strCurrency AS CurrencyCode, dbo.tblInvoiceDoc.decExchange AS ExchangeRate, CASE WHEN (tblInvoiceDoc.bitIsForeign <> 0) THEN tblInvoiceDocDT.decLineTotExc / tblInvoiceDoc.decExchange ELSE 0 END AS RevenueFC, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, CASE WHEN CHARINDEX(Char(13), tblInvoiceDoc.strShipTo) = 0 THEN ISNULL(tblInvoiceDoc.strShipTo, '') ELSE LEFT(tblInvoiceDoc.strShipTo, CHARINDEX(Char(13), tblInvoiceDoc.strShipTo)) END AS ShipTo, dbo.tblInvoiceDoc.strAddInfo AS AdditionalInfo, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decSubTotal ELSE tblInvoiceDoc.decSubTotalF END AS DocumentSubtotal, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decDiscAmtF END AS DocumentDiscount, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decVAT ELSE tblInvoiceDoc.decVATF END AS DocumentTax, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS DocumentTotal, dbo.tblInvoiceDoc.intDept AS Department FROM  dbo.tblInvoiceDocDT INNER JOIN dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName WHERE (dbo.tblInvoiceDocDT.bitDiscountTax = 0) AND tblInvoiceDoc.dteJournalDate BETWEEN @SalesJournalStartDate AND @SalesJournalEndDate AND tblCustomers.strCustCategory = @CustCategory 
	END
	ELSE IF @IsAllCustomerCategory = 0 AND @IsAllCustomer = 0
	BEGIN
		SELECT dbo.tblInvoiceDoc.strInvDocID AS Document#, dbo.tblInvoiceDoc.strReference AS Reference, dbo.tblInvoiceDoc.strUserName AS Agent, dbo.tblInvoiceDoc.strSalesName AS SalesRep, dbo.tblInvoiceDoc.dteJournalDate AS TransactionDate, dbo.tblInvoiceDoc.dteRequired AS RequiredDate, DATENAME(YEAR, dbo.tblInvoiceDoc.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, dbo.tblInvoiceDoc.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDoc.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDoc.dteJournalDate) AS Quarter, dbo.tblInvoiceDoc.strCustName AS CustomerNumber, dbo.tblCustomers.strCustDesc AS CustomerName, dbo.tblCustomers.strCustCategory AS CustomerCategory, dbo.tblInvoiceDocDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocDT.strPartDesc AS ItemDescription_Line, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocDT.strLocation AS ItemLocation, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInvoiceDocDT.decQty AS Qty, dbo.tblInvoiceDocDT.decLineTotExc AS Revenue, dbo.tblInvoiceDocDT.decCOGS AS Cost, dbo.tblInvoiceDocDT.decLineTotExc - dbo.tblInvoiceDocDT.decCOGS AS Profit, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMargin, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMarkup, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, CASE WHEN tblInvoiceDocDT.decQty = 0 THEN 0 ELSE tblInvoiceDocDT.decCOGS / tblInvoiceDocDT.decQty END AS UnitCost, ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) AS StandardCost, ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) AS LastReceivedCost, dbo.tblInvoiceDoc.strCurrency AS CurrencyCode, dbo.tblInvoiceDoc.decExchange AS ExchangeRate, CASE WHEN (tblInvoiceDoc.bitIsForeign <> 0) THEN tblInvoiceDocDT.decLineTotExc / tblInvoiceDoc.decExchange ELSE 0 END AS RevenueFC, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, CASE WHEN CHARINDEX(Char(13), tblInvoiceDoc.strShipTo) = 0 THEN ISNULL(tblInvoiceDoc.strShipTo, '') ELSE LEFT(tblInvoiceDoc.strShipTo, CHARINDEX(Char(13), tblInvoiceDoc.strShipTo)) END AS ShipTo, dbo.tblInvoiceDoc.strAddInfo AS AdditionalInfo, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decSubTotal ELSE tblInvoiceDoc.decSubTotalF END AS DocumentSubtotal, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decDiscAmtF END AS DocumentDiscount, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decVAT ELSE tblInvoiceDoc.decVATF END AS DocumentTax, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS DocumentTotal, dbo.tblInvoiceDoc.intDept AS Department FROM  dbo.tblInvoiceDocDT INNER JOIN dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName WHERE (dbo.tblInvoiceDocDT.bitDiscountTax = 0) AND tblInvoiceDoc.dteJournalDate BETWEEN @SalesJournalStartDate AND @SalesJournalEndDate AND tblInvoiceDoc.strCustName = @CustName AND tblCustomers.strCustCategory = @CustCategory 
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetSalesHistoryCostOfSalesSeriesByDaily]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetSalesHistoryCostOfSalesSeriesByDaily]
	@FromDate AS datetime = NULL,
	@ToDate AS datetime = NULL,
	@SQintAccClass As Int = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate) AS Month
					,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
					,CONVERT(VARCHAR(10), tblJournal.dteJournalDate, 105) AS DATE
				FROM tblJournal
				INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
				WHERE tblJournalEnt.intGLNumber IN (
						SELECT intGLNumber
						FROM tblAccounts
						WHERE (intAccType = 5)
							AND (intAccClass = @SQintAccClass)
						)
					AND tblJournal.dteJournalDate BETWEEN @FromDate
						AND @ToDate
				GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
					,tblJournal.dteJournalDate
				ORDER BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
					,tblJournal.dteJournalDate
END
GO
/****** Object:  StoredProcedure [dbo].[prGetSalesHistoryCostOfSalesSeriesByMonthly]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetSalesHistoryCostOfSalesSeriesByMonthly]
	@SQintAccClass As Int = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate) AS Month
						,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
					FROM tblJournal
					INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
					WHERE tblJournalEnt.intGLNumber IN (
							SELECT intGLNumber
							FROM tblAccounts
							WHERE (intAccType = 5)
								AND (intAccClass = @SQintAccClass)
							)
					GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate)
					ORDER BY DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate)
END
GO
/****** Object:  StoredProcedure [dbo].[prGetSalesHistoryExpenseSeriesByDaily]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetSalesHistoryExpenseSeriesByDaily]
	@SQintAccClassCOS AS Int = NULL,
	@SQintAccClassTAX AS Int = NULL,
	@FromDate AS datetime = NULL,
	@ToDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate) AS Month
					,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
					,CONVERT(VARCHAR(10), tblJournal.dteJournalDate, 105) AS DATE
				FROM tblJournal
				INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
				WHERE tblJournalEnt.intGLNumber IN (
						SELECT intGLNumber
						FROM tblAccounts
						WHERE (intAccType = 5)
							AND (intAccClass <> @SQintAccClassCOS)
							AND (intAccClass <> @SQintAccClassTAX)
						)
					AND tblJournal.dteJournalDate BETWEEN @FromDate
						AND @ToDate
				GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
					,tblJournal.dteJournalDate
				ORDER BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
					,tblJournal.dteJournalDate
END
GO
/****** Object:  StoredProcedure [dbo].[prGetSalesHistoryExpenseSeriesByMonthly]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetSalesHistoryExpenseSeriesByMonthly]
	@SQintAccClassCOS AS Int = NULL,
	@SQintAccClassTAX AS Int = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT DATEPART(yyyy, tblJournal.dteJournalDate)
							,DATEPART(m, tblJournal.dteJournalDate) AS Month
							,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
						FROM tblJournal
						INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
						WHERE tblJournalEnt.intGLNumber IN (
								SELECT intGLNumber
								FROM tblAccounts
								WHERE (intAccType = 5)
									AND (intAccClass <> @SQintAccClassCOS)
									AND (intAccClass <> @SQintAccClassTAX)
								)
						GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
							,DATEPART(m, tblJournal.dteJournalDate)
						ORDER BY DATEPART(yyyy, tblJournal.dteJournalDate)
							,DATEPART(m, tblJournal.dteJournalDate)
END
GO
/****** Object:  StoredProcedure [dbo].[prGetSalesHistoryIncomeSeriesByDaily]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetSalesHistoryIncomeSeriesByDaily]
	@FromDate AS datetime = NULL,
	@ToDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT DATEPART(yyyy, tblJournal.dteJournalDate) AS Year
							,DATEPART(m, tblJournal.dteJournalDate) AS Month
							,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Revenue
							,CONVERT(VARCHAR(10), tblJournal.dteJournalDate, 105) AS DATE
						FROM tblJournal
						INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
						WHERE tblJournalEnt.intGLNumber IN (
								SELECT intGLNumber
								FROM tblAccounts
								WHERE (intAccType = 4)
								)
							AND tblJournal.dteJournalDate BETWEEN @FromDate
								AND @ToDate
						GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
							,DATEPART(m, tblJournal.dteJournalDate)
							,tblJournal.dteJournalDate
						ORDER BY DATEPART(yyyy, tblJournal.dteJournalDate)
							,DATEPART(m, tblJournal.dteJournalDate)
							,tblJournal.dteJournalDate
END
GO
/****** Object:  StoredProcedure [dbo].[prGetSalesHistoryIncomeSeriesByMonthly]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetSalesHistoryIncomeSeriesByMonthly]
	
AS
BEGIN
	SET NOCOUNT ON;

	SELECT DATEPART(yyyy, tblJournal.dteJournalDate) AS Year
					,DATEPART(m, tblJournal.dteJournalDate) AS Month
					,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Revenue
				FROM tblJournal
				INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
				WHERE tblJournalEnt.intGLNumber IN (
						SELECT intGLNumber
						FROM tblAccounts
						WHERE (intAccType = 4)
						)
				GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
				ORDER BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
END
GO
/****** Object:  StoredProcedure [dbo].[prGetSalesHistoryInterestSeriesByDaily]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetSalesHistoryInterestSeriesByDaily]
	@SQintAccClass AS Int = NULL,
	@FromDate AS datetime = NULL,
	@ToDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate) AS Month
					,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
					,CONVERT(VARCHAR(10), tblJournal.dteJournalDate, 105) AS DATE
				FROM tblJournal
				INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
				WHERE tblJournalEnt.intGLNumber IN (
						SELECT intGLNumber
						FROM tblAccounts
						WHERE (intAccType = 5)
							AND (intAccClass = @SQintAccClass)
						)
					AND tblJournal.dteJournalDate BETWEEN @FromDate
						AND @ToDate
				GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
					,tblJournal.dteJournalDate
				ORDER BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
					,tblJournal.dteJournalDate
END
GO
/****** Object:  StoredProcedure [dbo].[prGetSalesHistoryInterestSeriesByMonthly]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetSalesHistoryInterestSeriesByMonthly]
	@SQintAccClass AS Int = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate) AS Month
						,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
					FROM tblJournal
					INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
					WHERE tblJournalEnt.intGLNumber IN (
							SELECT intGLNumber
							FROM tblAccounts
							WHERE (intAccType = 5)
								AND (intAccClass = @SQintAccClass)
							)
					GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate)
					ORDER BY DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate)
END
GO
/****** Object:  StoredProcedure [dbo].[prGetSalesHistoryInterestWithTheExpenseSeriesByDaily]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetSalesHistoryInterestWithTheExpenseSeriesByDaily]
	@SQintAccClassCOS AS Int = NULL,
	@SQintAccClassTAX AS Int = NULL,
	@FromDate AS datetime = NULL,
	@ToDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate) AS Month
					,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
					,CONVERT(VARCHAR(10), tblJournal.dteJournalDate, 105) AS DATE
				FROM tblJournal
				INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
				WHERE tblJournalEnt.intGLNumber IN (
						SELECT intGLNumber
						FROM tblAccounts
						WHERE (intAccType = 5)
							AND (intAccClass <> @SQintAccClassCOS)
							AND (intAccClass <> @SQintAccClassTAX)
						)
					AND tblJournal.dteJournalDate BETWEEN @FromDate
						AND @ToDate
				GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
					,tblJournal.dteJournalDate
				ORDER BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
					,tblJournal.dteJournalDate
END
GO
/****** Object:  StoredProcedure [dbo].[prGetSalesHistoryInterestWithTheExpenseSeriesByMonthly]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetSalesHistoryInterestWithTheExpenseSeriesByMonthly]
	@SQintAccClassCOS As Int = NULL,
	@SQintAccClassTAX AS Int = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate) AS Month
					,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
				FROM tblJournal
				INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
				WHERE tblJournalEnt.intGLNumber IN (
						SELECT intGLNumber
						FROM tblAccounts
						WHERE (intAccType = 5)
							AND (intAccClass <> @SQintAccClassCOS)
							AND (intAccClass <> @SQintAccClassTAX)
						)
				GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
				ORDER BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
END
GO
/****** Object:  StoredProcedure [dbo].[prGetSalesHistoryProfitSeriesByDaily]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetSalesHistoryProfitSeriesByDaily]
	@FromDate AS datetime = NULL,
	@ToDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate) AS Month
					,ISNULL(SUM(tblJournalEnt.decCredits), 0) - ISNULL(SUM(tblJournalEnt.decDebits), 0) AS Profit
					,CONVERT(VARCHAR(10), tblJournal.dteJournalDate, 105) AS DATE
				FROM tblJournal
				INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
				WHERE tblJournalEnt.intGLNumber IN (
						SELECT intGLNumber
						FROM tblAccounts
						WHERE (
								(intAccType = 4)
								OR (intAccType = 5)
								)
						)
					AND tblJournal.dteJournalDate BETWEEN @FromDate
						AND @ToDate
				GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
					,tblJournal.dteJournalDate
				ORDER BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
					,tblJournal.dteJournalDate
END
GO
/****** Object:  StoredProcedure [dbo].[prGetSalesHistoryProfitSeriesByMonthly]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetSalesHistoryProfitSeriesByMonthly]
	
AS
BEGIN
	SET NOCOUNT ON;

	SELECT DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate) AS Month
						,ISNULL(SUM(tblJournalEnt.decCredits), 0) - ISNULL(SUM(tblJournalEnt.decDebits), 0) AS Profit
					FROM tblJournal
					INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
					WHERE tblJournalEnt.intGLNumber IN (
							SELECT intGLNumber
							FROM tblAccounts
							WHERE (
									(intAccType = 4)
									OR (intAccType = 5)
									)
							)
					GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate)
					ORDER BY DATEPART(yyyy, tblJournal.dteJournalDate)
						,DATEPART(m, tblJournal.dteJournalDate)
END
GO
/****** Object:  StoredProcedure [dbo].[prGetSalesHistoryTaxSeriesByDaily]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetSalesHistoryTaxSeriesByDaily]
	@SQintAccClass AS Int = NULL,
	@FromDate AS datetime = NULL,
	@ToDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate) AS Month
					,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
					,CONVERT(VARCHAR(10), tblJournal.dteJournalDate, 105) AS DATE
				FROM tblJournal
				INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
				WHERE tblJournalEnt.intGLNumber IN (
						SELECT intGLNumber
						FROM tblAccounts
						WHERE (intAccType = 5)
							AND (intAccClass = @SQintAccClass)
						)
					AND tblJournal.dteJournalDate BETWEEN @FromDate
						AND @ToDate
				GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
					,tblJournal.dteJournalDate
				ORDER BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
					,tblJournal.dteJournalDate
END
GO
/****** Object:  StoredProcedure [dbo].[prGetSalesHistoryTaxSeriesByMonthly]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetSalesHistoryTaxSeriesByMonthly]
	@SQintAccClass AS Int = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate) AS Month
					,ISNULL(SUM(tblJournalEnt.decAmount), 0) AS Expense
				FROM tblJournal
				INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
				WHERE tblJournalEnt.intGLNumber IN (
						SELECT intGLNumber
						FROM tblAccounts
						WHERE (intAccType = 5)
							AND (intAccClass = @SQintAccClass)
						)
				GROUP BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
				ORDER BY DATEPART(yyyy, tblJournal.dteJournalDate)
					,DATEPART(m, tblJournal.dteJournalDate)
END
GO
/****** Object:  StoredProcedure [dbo].[prGetSalesMixData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetSalesMixData]
	@IsAllCustomerCategory AS BIT = NULL,
	@IsAllCustomer AS BIT = NULL,
	@IsAllItemCategory AS BIT = NULL,
	@CustName AS nvarchar(50) = NULL,
	@CustCategory AS nvarchar(20) = NULL,
	@ItemCategory AS nvarchar(20) = NULL,
	@SalesJournalStartDate AS datetime = NULL,
	@SalesJournalEndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllCustomerCategory = 1 AND @IsAllCustomer = 1
	BEGIN
		IF @IsAllItemCategory = 1
		BEGIN
			SELECT dbo.tblInvoiceDoc.strInvDocID AS Document#, dbo.tblInvoiceDoc.strReference AS Reference, dbo.tblInvoiceDoc.strUserName AS Agent, dbo.tblInvoiceDoc.strSalesName AS SalesRep, dbo.tblInvoiceDoc.dteJournalDate AS TransactionDate, dbo.tblInvoiceDoc.dteRequired AS RequiredDate, DATENAME(YEAR, dbo.tblInvoiceDoc.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, dbo.tblInvoiceDoc.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDoc.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDoc.dteJournalDate) AS Quarter, dbo.tblInvoiceDoc.strCustName AS CustomerNumber, dbo.tblCustomers.strCustDesc AS CustomerName, dbo.tblCustomers.strCustCategory AS CustomerCategory, dbo.tblInvoiceDocDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocDT.strPartDesc AS ItemDescription_Line, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocDT.strLocation AS ItemLocation, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInvoiceDocDT.decQty AS Qty, dbo.tblInvoiceDocDT.decLineTotExc AS Revenue, dbo.tblInvoiceDocDT.decCOGS AS Cost, dbo.tblInvoiceDocDT.decLineTotExc - dbo.tblInvoiceDocDT.decCOGS AS Profit, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMargin, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMarkup, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, CASE WHEN tblInvoiceDocDT.decQty = 0 THEN 0 ELSE tblInvoiceDocDT.decCOGS / tblInvoiceDocDT.decQty END AS UnitCost, ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) AS StandardCost, ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) AS LastReceivedCost, dbo.tblInvoiceDoc.strCurrency AS CurrencyCode, dbo.tblInvoiceDoc.decExchange AS ExchangeRate, CASE WHEN (tblInvoiceDoc.bitIsForeign <> 0) THEN tblInvoiceDocDT.decLineTotExc / tblInvoiceDoc.decExchange ELSE 0 END AS RevenueFC, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, CASE WHEN CHARINDEX(Char(13), tblInvoiceDoc.strShipTo) = 0 THEN ISNULL(tblInvoiceDoc.strShipTo, '') ELSE LEFT(tblInvoiceDoc.strShipTo, CHARINDEX(Char(13), tblInvoiceDoc.strShipTo)) END AS ShipTo, dbo.tblInvoiceDoc.strAddInfo AS AdditionalInfo, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decSubTotal ELSE tblInvoiceDoc.decSubTotalF END AS DocumentSubtotal, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decDiscAmtF END AS DocumentDiscount, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decVAT ELSE tblInvoiceDoc.decVATF END AS DocumentTax, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS DocumentTotal, dbo.tblInvoiceDoc.intDept AS Department FROM  dbo.tblInvoiceDocDT INNER JOIN dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName WHERE (dbo.tblInvoiceDocDT.bitDiscountTax = 0) AND tblInvoiceDoc.dteJournalDate BETWEEN @SalesJournalStartDate AND @SalesJournalEndDate 
		END
		ELSE
		BEGIN
			SELECT dbo.tblInvoiceDoc.strInvDocID AS Document#, dbo.tblInvoiceDoc.strReference AS Reference, dbo.tblInvoiceDoc.strUserName AS Agent, dbo.tblInvoiceDoc.strSalesName AS SalesRep, dbo.tblInvoiceDoc.dteJournalDate AS TransactionDate, dbo.tblInvoiceDoc.dteRequired AS RequiredDate, DATENAME(YEAR, dbo.tblInvoiceDoc.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, dbo.tblInvoiceDoc.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDoc.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDoc.dteJournalDate) AS Quarter, dbo.tblInvoiceDoc.strCustName AS CustomerNumber, dbo.tblCustomers.strCustDesc AS CustomerName, dbo.tblCustomers.strCustCategory AS CustomerCategory, dbo.tblInvoiceDocDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocDT.strPartDesc AS ItemDescription_Line, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocDT.strLocation AS ItemLocation, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInvoiceDocDT.decQty AS Qty, dbo.tblInvoiceDocDT.decLineTotExc AS Revenue, dbo.tblInvoiceDocDT.decCOGS AS Cost, dbo.tblInvoiceDocDT.decLineTotExc - dbo.tblInvoiceDocDT.decCOGS AS Profit, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMargin, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMarkup, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, CASE WHEN tblInvoiceDocDT.decQty = 0 THEN 0 ELSE tblInvoiceDocDT.decCOGS / tblInvoiceDocDT.decQty END AS UnitCost, ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) AS StandardCost, ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) AS LastReceivedCost, dbo.tblInvoiceDoc.strCurrency AS CurrencyCode, dbo.tblInvoiceDoc.decExchange AS ExchangeRate, CASE WHEN (tblInvoiceDoc.bitIsForeign <> 0) THEN tblInvoiceDocDT.decLineTotExc / tblInvoiceDoc.decExchange ELSE 0 END AS RevenueFC, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, CASE WHEN CHARINDEX(Char(13), tblInvoiceDoc.strShipTo) = 0 THEN ISNULL(tblInvoiceDoc.strShipTo, '') ELSE LEFT(tblInvoiceDoc.strShipTo, CHARINDEX(Char(13), tblInvoiceDoc.strShipTo)) END AS ShipTo, dbo.tblInvoiceDoc.strAddInfo AS AdditionalInfo, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decSubTotal ELSE tblInvoiceDoc.decSubTotalF END AS DocumentSubtotal, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decDiscAmtF END AS DocumentDiscount, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decVAT ELSE tblInvoiceDoc.decVATF END AS DocumentTax, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS DocumentTotal, dbo.tblInvoiceDoc.intDept AS Department FROM  dbo.tblInvoiceDocDT INNER JOIN dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName WHERE (dbo.tblInvoiceDocDT.bitDiscountTax = 0) AND tblInvoiceDoc.dteJournalDate BETWEEN @SalesJournalStartDate AND @SalesJournalEndDate AND tblInv.strCategory = @ItemCategory 
		END
	END
	ELSE IF @IsAllCustomerCategory = 1 AND @IsAllCustomer = 0
	BEGIN
		IF @IsAllItemCategory = 1
		BEGIN
			SELECT dbo.tblInvoiceDoc.strInvDocID AS Document#, dbo.tblInvoiceDoc.strReference AS Reference, dbo.tblInvoiceDoc.strUserName AS Agent, dbo.tblInvoiceDoc.strSalesName AS SalesRep, dbo.tblInvoiceDoc.dteJournalDate AS TransactionDate, dbo.tblInvoiceDoc.dteRequired AS RequiredDate, DATENAME(YEAR, dbo.tblInvoiceDoc.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, dbo.tblInvoiceDoc.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDoc.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDoc.dteJournalDate) AS Quarter, dbo.tblInvoiceDoc.strCustName AS CustomerNumber, dbo.tblCustomers.strCustDesc AS CustomerName, dbo.tblCustomers.strCustCategory AS CustomerCategory, dbo.tblInvoiceDocDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocDT.strPartDesc AS ItemDescription_Line, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocDT.strLocation AS ItemLocation, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInvoiceDocDT.decQty AS Qty, dbo.tblInvoiceDocDT.decLineTotExc AS Revenue, dbo.tblInvoiceDocDT.decCOGS AS Cost, dbo.tblInvoiceDocDT.decLineTotExc - dbo.tblInvoiceDocDT.decCOGS AS Profit, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMargin, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMarkup, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, CASE WHEN tblInvoiceDocDT.decQty = 0 THEN 0 ELSE tblInvoiceDocDT.decCOGS / tblInvoiceDocDT.decQty END AS UnitCost, ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) AS StandardCost, ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) AS LastReceivedCost, dbo.tblInvoiceDoc.strCurrency AS CurrencyCode, dbo.tblInvoiceDoc.decExchange AS ExchangeRate, CASE WHEN (tblInvoiceDoc.bitIsForeign <> 0) THEN tblInvoiceDocDT.decLineTotExc / tblInvoiceDoc.decExchange ELSE 0 END AS RevenueFC, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, CASE WHEN CHARINDEX(Char(13), tblInvoiceDoc.strShipTo) = 0 THEN ISNULL(tblInvoiceDoc.strShipTo, '') ELSE LEFT(tblInvoiceDoc.strShipTo, CHARINDEX(Char(13), tblInvoiceDoc.strShipTo)) END AS ShipTo, dbo.tblInvoiceDoc.strAddInfo AS AdditionalInfo, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decSubTotal ELSE tblInvoiceDoc.decSubTotalF END AS DocumentSubtotal, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decDiscAmtF END AS DocumentDiscount, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decVAT ELSE tblInvoiceDoc.decVATF END AS DocumentTax, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS DocumentTotal, dbo.tblInvoiceDoc.intDept AS Department FROM  dbo.tblInvoiceDocDT INNER JOIN dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName WHERE (dbo.tblInvoiceDocDT.bitDiscountTax = 0) AND tblInvoiceDoc.dteJournalDate BETWEEN @SalesJournalStartDate AND @SalesJournalEndDate AND tblInvoiceDoc.strCustName = @CustName 
		END
		ELSE
		BEGIN
			SELECT dbo.tblInvoiceDoc.strInvDocID AS Document#, dbo.tblInvoiceDoc.strReference AS Reference, dbo.tblInvoiceDoc.strUserName AS Agent, dbo.tblInvoiceDoc.strSalesName AS SalesRep, dbo.tblInvoiceDoc.dteJournalDate AS TransactionDate, dbo.tblInvoiceDoc.dteRequired AS RequiredDate, DATENAME(YEAR, dbo.tblInvoiceDoc.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, dbo.tblInvoiceDoc.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDoc.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDoc.dteJournalDate) AS Quarter, dbo.tblInvoiceDoc.strCustName AS CustomerNumber, dbo.tblCustomers.strCustDesc AS CustomerName, dbo.tblCustomers.strCustCategory AS CustomerCategory, dbo.tblInvoiceDocDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocDT.strPartDesc AS ItemDescription_Line, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocDT.strLocation AS ItemLocation, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInvoiceDocDT.decQty AS Qty, dbo.tblInvoiceDocDT.decLineTotExc AS Revenue, dbo.tblInvoiceDocDT.decCOGS AS Cost, dbo.tblInvoiceDocDT.decLineTotExc - dbo.tblInvoiceDocDT.decCOGS AS Profit, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMargin, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMarkup, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, CASE WHEN tblInvoiceDocDT.decQty = 0 THEN 0 ELSE tblInvoiceDocDT.decCOGS / tblInvoiceDocDT.decQty END AS UnitCost, ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) AS StandardCost, ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) AS LastReceivedCost, dbo.tblInvoiceDoc.strCurrency AS CurrencyCode, dbo.tblInvoiceDoc.decExchange AS ExchangeRate, CASE WHEN (tblInvoiceDoc.bitIsForeign <> 0) THEN tblInvoiceDocDT.decLineTotExc / tblInvoiceDoc.decExchange ELSE 0 END AS RevenueFC, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, CASE WHEN CHARINDEX(Char(13), tblInvoiceDoc.strShipTo) = 0 THEN ISNULL(tblInvoiceDoc.strShipTo, '') ELSE LEFT(tblInvoiceDoc.strShipTo, CHARINDEX(Char(13), tblInvoiceDoc.strShipTo)) END AS ShipTo, dbo.tblInvoiceDoc.strAddInfo AS AdditionalInfo, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decSubTotal ELSE tblInvoiceDoc.decSubTotalF END AS DocumentSubtotal, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decDiscAmtF END AS DocumentDiscount, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decVAT ELSE tblInvoiceDoc.decVATF END AS DocumentTax, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS DocumentTotal, dbo.tblInvoiceDoc.intDept AS Department FROM  dbo.tblInvoiceDocDT INNER JOIN dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName WHERE (dbo.tblInvoiceDocDT.bitDiscountTax = 0) AND tblInvoiceDoc.dteJournalDate BETWEEN @SalesJournalStartDate AND @SalesJournalEndDate AND tblInvoiceDoc.strCustName = @CustName AND tblInv.strCategory = @ItemCategory 
		END
	END
	ELSE IF @IsAllCustomerCategory = 0 AND @IsAllCustomer = 1
	BEGIN
		IF @IsAllItemCategory = 1
		BEGIN
			SELECT dbo.tblInvoiceDoc.strInvDocID AS Document#, dbo.tblInvoiceDoc.strReference AS Reference, dbo.tblInvoiceDoc.strUserName AS Agent, dbo.tblInvoiceDoc.strSalesName AS SalesRep, dbo.tblInvoiceDoc.dteJournalDate AS TransactionDate, dbo.tblInvoiceDoc.dteRequired AS RequiredDate, DATENAME(YEAR, dbo.tblInvoiceDoc.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, dbo.tblInvoiceDoc.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDoc.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDoc.dteJournalDate) AS Quarter, dbo.tblInvoiceDoc.strCustName AS CustomerNumber, dbo.tblCustomers.strCustDesc AS CustomerName, dbo.tblCustomers.strCustCategory AS CustomerCategory, dbo.tblInvoiceDocDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocDT.strPartDesc AS ItemDescription_Line, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocDT.strLocation AS ItemLocation, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInvoiceDocDT.decQty AS Qty, dbo.tblInvoiceDocDT.decLineTotExc AS Revenue, dbo.tblInvoiceDocDT.decCOGS AS Cost, dbo.tblInvoiceDocDT.decLineTotExc - dbo.tblInvoiceDocDT.decCOGS AS Profit, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMargin, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMarkup, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, CASE WHEN tblInvoiceDocDT.decQty = 0 THEN 0 ELSE tblInvoiceDocDT.decCOGS / tblInvoiceDocDT.decQty END AS UnitCost, ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) AS StandardCost, ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) AS LastReceivedCost, dbo.tblInvoiceDoc.strCurrency AS CurrencyCode, dbo.tblInvoiceDoc.decExchange AS ExchangeRate, CASE WHEN (tblInvoiceDoc.bitIsForeign <> 0) THEN tblInvoiceDocDT.decLineTotExc / tblInvoiceDoc.decExchange ELSE 0 END AS RevenueFC, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, CASE WHEN CHARINDEX(Char(13), tblInvoiceDoc.strShipTo) = 0 THEN ISNULL(tblInvoiceDoc.strShipTo, '') ELSE LEFT(tblInvoiceDoc.strShipTo, CHARINDEX(Char(13), tblInvoiceDoc.strShipTo)) END AS ShipTo, dbo.tblInvoiceDoc.strAddInfo AS AdditionalInfo, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decSubTotal ELSE tblInvoiceDoc.decSubTotalF END AS DocumentSubtotal, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decDiscAmtF END AS DocumentDiscount, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decVAT ELSE tblInvoiceDoc.decVATF END AS DocumentTax, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS DocumentTotal, dbo.tblInvoiceDoc.intDept AS Department FROM  dbo.tblInvoiceDocDT INNER JOIN dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName WHERE (dbo.tblInvoiceDocDT.bitDiscountTax = 0) AND tblInvoiceDoc.dteJournalDate BETWEEN @SalesJournalStartDate AND @SalesJournalEndDate AND tblCustomers.strCustCategory = @CustCategory 
		END
		ELSE
		BEGIN
			SELECT dbo.tblInvoiceDoc.strInvDocID AS Document#, dbo.tblInvoiceDoc.strReference AS Reference, dbo.tblInvoiceDoc.strUserName AS Agent, dbo.tblInvoiceDoc.strSalesName AS SalesRep, dbo.tblInvoiceDoc.dteJournalDate AS TransactionDate, dbo.tblInvoiceDoc.dteRequired AS RequiredDate, DATENAME(YEAR, dbo.tblInvoiceDoc.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, dbo.tblInvoiceDoc.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDoc.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDoc.dteJournalDate) AS Quarter, dbo.tblInvoiceDoc.strCustName AS CustomerNumber, dbo.tblCustomers.strCustDesc AS CustomerName, dbo.tblCustomers.strCustCategory AS CustomerCategory, dbo.tblInvoiceDocDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocDT.strPartDesc AS ItemDescription_Line, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocDT.strLocation AS ItemLocation, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInvoiceDocDT.decQty AS Qty, dbo.tblInvoiceDocDT.decLineTotExc AS Revenue, dbo.tblInvoiceDocDT.decCOGS AS Cost, dbo.tblInvoiceDocDT.decLineTotExc - dbo.tblInvoiceDocDT.decCOGS AS Profit, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMargin, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMarkup, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, CASE WHEN tblInvoiceDocDT.decQty = 0 THEN 0 ELSE tblInvoiceDocDT.decCOGS / tblInvoiceDocDT.decQty END AS UnitCost, ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) AS StandardCost, ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) AS LastReceivedCost, dbo.tblInvoiceDoc.strCurrency AS CurrencyCode, dbo.tblInvoiceDoc.decExchange AS ExchangeRate, CASE WHEN (tblInvoiceDoc.bitIsForeign <> 0) THEN tblInvoiceDocDT.decLineTotExc / tblInvoiceDoc.decExchange ELSE 0 END AS RevenueFC, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, CASE WHEN CHARINDEX(Char(13), tblInvoiceDoc.strShipTo) = 0 THEN ISNULL(tblInvoiceDoc.strShipTo, '') ELSE LEFT(tblInvoiceDoc.strShipTo, CHARINDEX(Char(13), tblInvoiceDoc.strShipTo)) END AS ShipTo, dbo.tblInvoiceDoc.strAddInfo AS AdditionalInfo, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decSubTotal ELSE tblInvoiceDoc.decSubTotalF END AS DocumentSubtotal, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decDiscAmtF END AS DocumentDiscount, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decVAT ELSE tblInvoiceDoc.decVATF END AS DocumentTax, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS DocumentTotal, dbo.tblInvoiceDoc.intDept AS Department FROM  dbo.tblInvoiceDocDT INNER JOIN dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName WHERE (dbo.tblInvoiceDocDT.bitDiscountTax = 0) AND tblInvoiceDoc.dteJournalDate BETWEEN @SalesJournalStartDate AND @SalesJournalEndDate AND tblCustomers.strCustCategory = @CustCategory AND tblInv.strCategory = @ItemCategory 
		END
	END
	ELSE IF @IsAllCustomerCategory = 0 AND @IsAllCustomer = 0
	BEGIN
		IF @IsAllItemCategory = 1
		BEGIN
			SELECT dbo.tblInvoiceDoc.strInvDocID AS Document#, dbo.tblInvoiceDoc.strReference AS Reference, dbo.tblInvoiceDoc.strUserName AS Agent, dbo.tblInvoiceDoc.strSalesName AS SalesRep, dbo.tblInvoiceDoc.dteJournalDate AS TransactionDate, dbo.tblInvoiceDoc.dteRequired AS RequiredDate, DATENAME(YEAR, dbo.tblInvoiceDoc.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, dbo.tblInvoiceDoc.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDoc.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDoc.dteJournalDate) AS Quarter, dbo.tblInvoiceDoc.strCustName AS CustomerNumber, dbo.tblCustomers.strCustDesc AS CustomerName, dbo.tblCustomers.strCustCategory AS CustomerCategory, dbo.tblInvoiceDocDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocDT.strPartDesc AS ItemDescription_Line, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocDT.strLocation AS ItemLocation, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInvoiceDocDT.decQty AS Qty, dbo.tblInvoiceDocDT.decLineTotExc AS Revenue, dbo.tblInvoiceDocDT.decCOGS AS Cost, dbo.tblInvoiceDocDT.decLineTotExc - dbo.tblInvoiceDocDT.decCOGS AS Profit, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMargin, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMarkup, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, CASE WHEN tblInvoiceDocDT.decQty = 0 THEN 0 ELSE tblInvoiceDocDT.decCOGS / tblInvoiceDocDT.decQty END AS UnitCost, ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) AS StandardCost, ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) AS LastReceivedCost, dbo.tblInvoiceDoc.strCurrency AS CurrencyCode, dbo.tblInvoiceDoc.decExchange AS ExchangeRate, CASE WHEN (tblInvoiceDoc.bitIsForeign <> 0) THEN tblInvoiceDocDT.decLineTotExc / tblInvoiceDoc.decExchange ELSE 0 END AS RevenueFC, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, CASE WHEN CHARINDEX(Char(13), tblInvoiceDoc.strShipTo) = 0 THEN ISNULL(tblInvoiceDoc.strShipTo, '') ELSE LEFT(tblInvoiceDoc.strShipTo, CHARINDEX(Char(13), tblInvoiceDoc.strShipTo)) END AS ShipTo, dbo.tblInvoiceDoc.strAddInfo AS AdditionalInfo, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decSubTotal ELSE tblInvoiceDoc.decSubTotalF END AS DocumentSubtotal, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decDiscAmtF END AS DocumentDiscount, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decVAT ELSE tblInvoiceDoc.decVATF END AS DocumentTax, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS DocumentTotal, dbo.tblInvoiceDoc.intDept AS Department FROM  dbo.tblInvoiceDocDT INNER JOIN dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName WHERE (dbo.tblInvoiceDocDT.bitDiscountTax = 0) AND tblInvoiceDoc.dteJournalDate BETWEEN @SalesJournalStartDate AND @SalesJournalEndDate AND tblInvoiceDoc.strCustName = @CustName AND tblCustomers.strCustCategory = @CustCategory 
		END
		ELSE
		BEGIN
			SELECT dbo.tblInvoiceDoc.strInvDocID AS Document#, dbo.tblInvoiceDoc.strReference AS Reference, dbo.tblInvoiceDoc.strUserName AS Agent, dbo.tblInvoiceDoc.strSalesName AS SalesRep, dbo.tblInvoiceDoc.dteJournalDate AS TransactionDate, dbo.tblInvoiceDoc.dteRequired AS RequiredDate, DATENAME(YEAR, dbo.tblInvoiceDoc.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, dbo.tblInvoiceDoc.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDoc.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDoc.dteJournalDate) AS Quarter, dbo.tblInvoiceDoc.strCustName AS CustomerNumber, dbo.tblCustomers.strCustDesc AS CustomerName, dbo.tblCustomers.strCustCategory AS CustomerCategory, dbo.tblInvoiceDocDT.strPartNumber AS ItemCode, dbo.tblInvoiceDocDT.strPartDesc AS ItemDescription_Line, dbo.tblInv.strDesc AS ItemDescription_Masterfile, dbo.tblInvoiceDocDT.strLocation AS ItemLocation, dbo.tblInv.strCategory AS ItemCategory, dbo.tblInvoiceDocDT.decQty AS Qty, dbo.tblInvoiceDocDT.decLineTotExc AS Revenue, dbo.tblInvoiceDocDT.decCOGS AS Cost, dbo.tblInvoiceDocDT.decLineTotExc - dbo.tblInvoiceDocDT.decCOGS AS Profit, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMargin, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100, 2) AS nVarchar(25)) + '%' AS GPMarkup, ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS UsingItem#Convention, ISNULL(dbo.tblInv.strItemSegment1, N'') AS ItemSegment1, ISNULL(dbo.tblInv.strItemSegment2, N'') AS ItemSegment2, ISNULL(dbo.tblInv.strItemSegment3, N'') AS ItemSegment3, ISNULL(dbo.tblInv.strItemSegment4, N'') AS ItemSegment4, ISNULL(dbo.tblInv.strInvNumConv, N'') AS NumberConvention, CASE WHEN tblInvoiceDocDT.decQty = 0 THEN 0 ELSE tblInvoiceDocDT.decCOGS / tblInvoiceDocDT.decQty END AS UnitCost, ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) AS StandardCost, ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) AS LastReceivedCost, dbo.tblInvoiceDoc.strCurrency AS CurrencyCode, dbo.tblInvoiceDoc.decExchange AS ExchangeRate, CASE WHEN (tblInvoiceDoc.bitIsForeign <> 0) THEN tblInvoiceDocDT.decLineTotExc / tblInvoiceDoc.decExchange ELSE 0 END AS RevenueFC, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS IsForeignTrans, CASE WHEN CHARINDEX(Char(13), tblInvoiceDoc.strShipTo) = 0 THEN ISNULL(tblInvoiceDoc.strShipTo, '') ELSE LEFT(tblInvoiceDoc.strShipTo, CHARINDEX(Char(13), tblInvoiceDoc.strShipTo)) END AS ShipTo, dbo.tblInvoiceDoc.strAddInfo AS AdditionalInfo, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decSubTotal ELSE tblInvoiceDoc.decSubTotalF END AS DocumentSubtotal, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decDiscAmtF END AS DocumentDiscount, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decVAT ELSE tblInvoiceDoc.decVATF END AS DocumentTax, CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS DocumentTotal, dbo.tblInvoiceDoc.intDept AS Department FROM  dbo.tblInvoiceDocDT INNER JOIN dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber INNER JOIN dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName WHERE (dbo.tblInvoiceDocDT.bitDiscountTax = 0) AND tblInvoiceDoc.dteJournalDate BETWEEN @SalesJournalStartDate AND @SalesJournalEndDate AND tblInvoiceDoc.strCustName = @CustName AND tblCustomers.strCustCategory = @CustCategory AND tblInv.strCategory = @ItemCategory 
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetTopCustomersDataByAsAt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prGetTopCustomersDataByAsAt] (
	@ViewTop int = 5,
	@AsAt datetime = NULL, 
	@SQCurrentYrStarts datetime = NULL
	)
AS
	SELECT TOP (@ViewTop) tblCustomers.strCustName
						,strCustDesc
						,ISNULL(SUM(tblInvoiceDoc.decTotal), 0) AS Sales
	FROM tblInvoiceDoc
	INNER JOIN tblCustomers ON tblCustomers.strCustName = tblInvoiceDoc.strCustName
	WHERE tblCustomers.bitInactive = 0
						AND tblInvoiceDoc.dteJournalDate <= @AsAt
						AND tblInvoiceDoc.bitHistoryTrans = 0
						AND tblInvoiceDoc.dteJournalDate >= @SQCurrentYrStarts
	GROUP BY tblCustomers.strCustName
						,tblCustomers.strCustDesc
	HAVING ISNULL(SUM(tblInvoiceDoc.decTotal), 0) > 0
	ORDER BY Sales DESC
						,tblCustomers.strCustName
GO
/****** Object:  StoredProcedure [dbo].[prGetTopCustomersDataByCurrent]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prGetTopCustomersDataByCurrent] (
	@ViewTop int = 5
	)
AS
	SELECT TOP (@ViewTop) strCustName
						,strCustDesc
						,strPhone
						,decYTDPurch AS Sales
						,strCurrency
						,decYTDPurchF
	FROM tblCustomers
	WHERE (	bitInactive = 0	AND decYTDPurch > 0	)
	ORDER BY decYTDPurch DESC,strCustName
GO
/****** Object:  StoredProcedure [dbo].[prGetTopInventoryDataByQtyAndAsAt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prGetTopInventoryDataByQtyAndAsAt] (
	@ViewTop int = 5,
	@AsAt datetime = NULL
	)
AS
	SELECT TOP (@ViewTop) MasterTable.strPartNumber
					,MasterTable.strDesc
					,MasterTable.decSumOpenQty + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (tblInvTracking.dteJournalDate <= @AsAt)
							AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						) AS Sales
					,MasterTable.decSumOpenValue + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (tblInvTracking.dteJournalDate <= @AsAt)
							AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						) AS Value
				FROM tblInv AS MasterTable
				WHERE (intType = 1)
					AND (
						MasterTable.decSumOpenQty + (
							SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							WHERE (tblInvTracking.dteJournalDate <= @AsAt)
								AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							) + MasterTable.decSumOpenValue + (
							SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
							FROM tblInvTrackingDT
							INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
							WHERE (tblInvTracking.dteJournalDate <= @AsAt)
								AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							) <> 0
						)
					AND MasterTable.bitInactive = 0
				ORDER BY Sales DESC
					,strPartNumber
GO
/****** Object:  StoredProcedure [dbo].[prGetTopInventoryDataByQtyAndCurrent]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prGetTopInventoryDataByQtyAndCurrent] (
	@ViewTop int = 5
	)
AS
	SELECT TOP (@ViewTop) strPartNumber
					,strDesc
					,decSumAvail
					,decSumAlloc
					,decSumOnHand AS Sales
					,decSumValue
					,'' AS OrderbyCol
					,decSumManuf
				FROM tblInv
				WHERE (tblInv.intType = 1)
					AND ((decSumOnHand + decSumValue) <> 0)
					AND tblInv.bitInactive = 0
				ORDER BY Sales DESC
					,strPartNumber
GO
/****** Object:  StoredProcedure [dbo].[prGetTopInventoryDataByVauleAndAsAt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prGetTopInventoryDataByVauleAndAsAt] (
	@ViewTop int = 5,
	@AsAt datetime = NULL
	)
AS
	SELECT TOP (@ViewTop) MasterTable.strPartNumber
							,MasterTable.strDesc
							,MasterTable.decSumOpenQty + (
								SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
								FROM tblInvTrackingDT
								INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
								WHERE (tblInvTracking.dteJournalDate <= @AsAt)
									AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
								) AS OnHand
							,MasterTable.decSumOpenValue + (
								SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
								FROM tblInvTrackingDT
								INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
								WHERE (tblInvTracking.dteJournalDate <= @AsAt)
									AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
								) AS Sales
						FROM tblInv AS MasterTable
						WHERE (intType = 1)
							AND (
								MasterTable.decSumOpenQty + (
									SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
									FROM tblInvTrackingDT
									INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
									WHERE (tblInvTracking.dteJournalDate <= @AsAt)
										AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
									) + MasterTable.decSumOpenValue + (
									SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
									FROM tblInvTrackingDT
									INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
									WHERE (tblInvTracking.dteJournalDate <= @AsAt)
										AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
									) <> 0
								)
							AND MasterTable.bitInactive = 0
						ORDER BY Sales DESC
							,strPartNumber
GO
/****** Object:  StoredProcedure [dbo].[prGetTopInventoryDataByVauleAndCurrent]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prGetTopInventoryDataByVauleAndCurrent] (
	@ViewTop int = 5
	)
AS
	SELECT TOP (@ViewTop) strPartNumber
						,strDesc
						,decSumAvail
						,decSumAlloc
						,decSumOnHand
						,decSumValue AS Sales
						,'' AS OrderbyCol
						,decSumManuf
	FROM tblInv
	WHERE (tblInv.intType = 1)
						AND ((decSumOnHand + decSumValue) <> 0)
						AND tblInv.bitInactive = 0
	ORDER BY Sales DESC
						,strPartNumber
GO
/****** Object:  StoredProcedure [dbo].[prGetTopSalesItemByMarginData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetTopSalesItemByMarginData]
	@IsAllWarehouse AS BIT = NULL,
	@ViewTop AS INT = NULL,
	@SQLocation AS nvarchar(10) = NULL,
	@SQStart AS datetime = NULL,
	@SQEnd AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllWarehouse = 1 
	BEGIN
		SELECT TOP (@ViewTop) tblInvTrackingDT.strPartNumber, tblInv.strDesc, COUNT(tblInvTrackingDT.strPartNumber) AS No_Transaction, SUM(tblInvTrackingDT.decQty) * - 1 AS Qty, SUM(tblInvTrackingDT.decRevenue) AS Revenue, SUM(tblInvTrackingDT.decCOGS) AS COGS, SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS PROFIT, '' AS OrderByCol, ROUND(CASE WHEN SUM(tblInvTrackingDT.decRevenue) = 0 THEN 0 ELSE (1 - (SUM(tblInvTrackingDT.decCOGS) / SUM(tblInvTrackingDT.decRevenue))) * 100 END, 1) AS Margin FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber INNER JOIN (SELECT DISTINCT tblJournal.lngJourID , intDept, dteJournalDate, strSource FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd UNION ALL SELECT DISTINCT tblJournalLY.lngJourID , intDept , dteJournalDate, strSource FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd UNION ALL SELECT DISTINCT tblJournalHist.lngJourID , intDept, dteJournalDate, strSource FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate BETWEEN @SQStart AND @SQEnd ) Z ON tblInvTracking.lngJourID = Z.lngJourID AND tblInvTracking.strSource = Z.strSource AND intType IN (1,4) AND (tblInvTracking.intModule = 2) AND tblInv.bitInactive = 0 AND tblInvTracking.dteJournalDate BETWEEN @SQStart AND @SQEnd GROUP BY tblInvTrackingDT.strPartNumber , tblInv.strDesc, strCategory ORDER BY PROFIT DESC, OrderByCol, tblInvTrackingDT.strPartNumber
	END
	ELSE
	BEGIN
		SELECT TOP (@ViewTop) tblInvTrackingDT.strPartNumber, tblInv.strDesc, COUNT(tblInvTrackingDT.strPartNumber) AS No_Transaction, SUM(tblInvTrackingDT.decQty) * - 1 AS Qty, SUM(tblInvTrackingDT.decRevenue) AS Revenue, SUM(tblInvTrackingDT.decCOGS) AS COGS, SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS PROFIT, '' AS OrderByCol, ROUND(CASE WHEN SUM(tblInvTrackingDT.decRevenue) = 0 THEN 0 ELSE (1 - (SUM(tblInvTrackingDT.decCOGS) / SUM(tblInvTrackingDT.decRevenue))) * 100 END, 1) AS Margin FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber INNER JOIN (SELECT DISTINCT tblJournal.lngJourID , intDept, dteJournalDate, strSource FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd UNION ALL SELECT DISTINCT tblJournalLY.lngJourID , intDept , dteJournalDate, strSource FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd UNION ALL SELECT DISTINCT tblJournalHist.lngJourID , intDept, dteJournalDate, strSource FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate BETWEEN @SQStart AND @SQEnd ) Z ON tblInvTracking.lngJourID = Z.lngJourID AND tblInvTracking.strSource = Z.strSource AND intType IN (1,4) AND (tblInvTracking.intModule = 2) AND tblInv.bitInactive = 0 AND tblInvTrackingDT.strLocName = @SQLocation AND tblInvTracking.dteJournalDate BETWEEN @SQStart AND @SQEnd GROUP BY tblInvTrackingDT.strPartNumber , tblInv.strDesc, strCategory ORDER BY PROFIT DESC, OrderByCol, tblInvTrackingDT.strPartNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetTopSalesItemByQtyData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetTopSalesItemByQtyData]
	@IsAllWarehouse AS BIT = NULL,
	@ViewTop AS INT = NULL,
	@SQLocation AS nvarchar(10) = NULL,
	@SQSalesModuleId AS INT = NULL,
	@AsAt AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllWarehouse = 1 
	BEGIN
		SELECT TOP (@ViewTop) TRACK.strPartNumber, tblInv.strDesc, TRACK.decQty FROM (SELECT strPartNumber, SUM(decQty * -1) AS decQty FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType IN (1,4) AND bitInactive = 0) AND tblInvTracking.intModule = @SQSalesModuleId AND tblInvTracking.dteJournalDate <= @AsAt GROUP BY strPartNumber) TRACK INNER JOIN tblInv ON TRACK.strPartNumber = tblInv.strPartNumber WHERE TRACK.decQty > 0 ORDER BY TRACK.decQty DESC, TRACK.strPartNumber
	END
	ELSE
	BEGIN
		SELECT TOP (@ViewTop) TRACK.strPartNumber, tblInv.strDesc, TRACK.decQty FROM (SELECT strPartNumber, SUM(decQty * -1) AS decQty FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType IN (1,4) AND bitInactive = 0) AND (strLocName = @SQLocation) AND tblInvTracking.intModule = @SQSalesModuleId AND tblInvTracking.dteJournalDate <= @AsAt GROUP BY strPartNumber) TRACK INNER JOIN tblInv ON TRACK.strPartNumber = tblInv.strPartNumber WHERE TRACK.decQty > 0 ORDER BY TRACK.decQty DESC, TRACK.strPartNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetTopSalesItemByValueData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetTopSalesItemByValueData]
	@IsAllWarehouse AS BIT = NULL,
	@ViewTop AS INT = NULL,
	@SQLocation AS nvarchar(10) = NULL,
	@SQStart AS datetime = NULL,
	@SQEnd AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllWarehouse = 1 
	BEGIN
		SELECT TOP (@ViewTop) tblInvTrackingDT.strPartNumber, tblInv.strDesc, COUNT(tblInvTrackingDT.strPartNumber) AS No_Transaction, SUM(tblInvTrackingDT.decQty) * - 1 AS Qty, SUM(tblInvTrackingDT.decRevenue) AS Revenue, SUM(tblInvTrackingDT.decCOGS) AS COGS, SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS PROFIT, '' AS OrderByCol, ROUND(CASE WHEN SUM(tblInvTrackingDT.decRevenue) = 0 THEN 0 ELSE (1 - (SUM(tblInvTrackingDT.decCOGS) / SUM(tblInvTrackingDT.decRevenue))) * 100 END, 1) AS Margin FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber INNER JOIN (SELECT DISTINCT tblJournal.lngJourID , intDept, dteJournalDate, strSource FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd UNION ALL SELECT DISTINCT tblJournalLY.lngJourID , intDept , dteJournalDate, strSource FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd UNION ALL SELECT DISTINCT tblJournalHist.lngJourID , intDept, dteJournalDate, strSource FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate BETWEEN @SQStart AND @SQEnd ) Z ON tblInvTracking.lngJourID = Z.lngJourID AND tblInvTracking.strSource = Z.strSource AND intType IN (1,4) AND (tblInvTracking.intModule = 2) AND tblInv.bitInactive = 0 AND tblInvTracking.dteJournalDate BETWEEN @SQStart AND @SQEnd GROUP BY tblInvTrackingDT.strPartNumber , tblInv.strDesc, strCategory ORDER BY PROFIT DESC, OrderByCol, tblInvTrackingDT.strPartNumber
	END
	ELSE
	BEGIN
		SELECT TOP (@ViewTop) tblInvTrackingDT.strPartNumber, tblInv.strDesc, COUNT(tblInvTrackingDT.strPartNumber) AS No_Transaction, SUM(tblInvTrackingDT.decQty) * - 1 AS Qty, SUM(tblInvTrackingDT.decRevenue) AS Revenue, SUM(tblInvTrackingDT.decCOGS) AS COGS, SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS PROFIT, '' AS OrderByCol, ROUND(CASE WHEN SUM(tblInvTrackingDT.decRevenue) = 0 THEN 0 ELSE (1 - (SUM(tblInvTrackingDT.decCOGS) / SUM(tblInvTrackingDT.decRevenue))) * 100 END, 1) AS Margin FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber INNER JOIN (SELECT DISTINCT tblJournal.lngJourID , intDept, dteJournalDate, strSource FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd UNION ALL SELECT DISTINCT tblJournalLY.lngJourID , intDept , dteJournalDate, strSource FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd UNION ALL SELECT DISTINCT tblJournalHist.lngJourID , intDept, dteJournalDate, strSource FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate BETWEEN @SQStart AND @SQEnd ) Z ON tblInvTracking.lngJourID = Z.lngJourID AND tblInvTracking.strSource = Z.strSource AND intType IN (1,4) AND (tblInvTracking.intModule = 2) AND tblInv.bitInactive = 0 AND tblInvTrackingDT.strLocName = @SQLocation AND tblInvTracking.dteJournalDate BETWEEN @SQStart AND @SQEnd GROUP BY tblInvTrackingDT.strPartNumber , tblInv.strDesc, strCategory ORDER BY PROFIT DESC, OrderByCol, tblInvTrackingDT.strPartNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetTopVendorsDataByAsAt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prGetTopVendorsDataByAsAt] (
	@ViewTop int = 5,
	@AsAt datetime = NULL, 
	@SQCurrentYrStarts datetime = NULL
	)
AS
	SELECT TOP (@ViewTop) tblVendors.strVendName
						,strVendDesc
						,ISNULL(SUM(tblInvoiceDocP.decTotal), 0) AS Purchases
	FROM tblInvoiceDocP
	INNER JOIN tblVendors ON tblVendors.strVendName = tblInvoiceDocP.strVendName
	WHERE tblVendors.bitInactive = 0
			AND tblInvoiceDocP.dteJournalDate <= @AsAt
			AND tblInvoiceDocP.bitHistoryTrans = 0
			AND tblInvoiceDocP.dteJournalDate >= @SQCurrentYrStarts
	GROUP BY tblVendors.strVendName
						,tblVendors.strVendDesc
	HAVING ISNULL(SUM(tblInvoiceDocP.decTotal), 0) > 0
	ORDER BY Purchases DESC,tblVendors.strVendName
GO
/****** Object:  StoredProcedure [dbo].[prGetTopVendorsDataByCurrent]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prGetTopVendorsDataByCurrent] (
	@ViewTop int = 5
	)
AS
	SELECT TOP (@ViewTop) strVendName
							,strVendDesc
							,strPhone
							,decYTDPurch AS Purchases
							,strCurrency
							,decYTDPurchF
	FROM tblVendors
	WHERE bitInactive = 0 AND decYTDPurch > 0
	ORDER BY decYTDPurch DESC,strVendName
GO
/****** Object:  StoredProcedure [dbo].[prGetTotalBinQtyByLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prGetTotalBinQtyByLocation]
	-- Add the parameters for the stored procedure here
	@SQstrLocName nvarchar(50)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT 
		ISNULL(SUM(decAvail),0) AS decAvail, ISNULL(SUM(decAlloc),0) AS decAlloc, ISNULL(SUM(decOnHand),0) AS decOnHand 
	FROM 
		tblInvExtBin  
	WHERE 
		strLocName = @SQstrLocName
END

GO
/****** Object:  StoredProcedure [dbo].[prGetUserPerformanceData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetUserPerformanceData]
	@StartDate AS datetime = NULL,
	@EndDate AS datetime = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT tblUsers.strUserName AS UserName
						,ISNULL(SalesQuotes.SalesQuotesQty, 0) AS SalesQuotesQty
						,ISNULL(SalesQuotes.SalesQuotesValue, 0) AS SalesQuotesValue
						,ISNULL(SalesOrders.SalesOrdersQty, 0) AS SalesOrdersQty
						,ISNULL(SalesOrders.SalesOrdersValue, 0) AS SalesOrdersValue
						,ISNULL(CreditRequests.CreditRequestQty, 0) AS CreditRequestQty
						,ISNULL(CreditRequests.CreditRequestValue, 0) AS CreditRequestValue
						,ISNULL(SalesInvoices.SalesInvoicesQty, 0) AS SalesInvoicesQty
						,ISNULL(SalesInvoices.SalesInvoicesValue, 0) AS SalesInvoicesValue
						,ISNULL(CreditNote.CreditNoteQty, 0) AS CreditNoteQty
						,ISNULL(CreditNote.CreditNoteValue, 0) AS CreditNoteValue
						,ISNULL(PurchaseQuotes.PurchaseQuoteQty, 0) AS PurchaseQuoteQty
						,ISNULL(PurchaseQuotes.PurchaseQuoteValue, 0) AS PurchaseQuoteValue
						,ISNULL(PurchaseOrder.PurchaseOrderQty, 0) AS PurchaseOrderQty
						,ISNULL(PurchaseOrder.PurchaseOrderValue, 0) AS PurchaseOrderValue
						,ISNULL(PurchaseInvoice.PurchaseInvoiceQty, 0) AS PurchaseInvoiceQty
						,ISNULL(PurchaseInvoice.PurchaseInvoiceValue, 0) AS PurchaseInvoiceValue
						,ISNULL(DebitNotes.DebitNotesQty, 0) AS DebitNoteQty
						,ISNULL(DebitNotes.DebitNotesValue, 0) AS DebitNoteValue
					FROM tblUsers
					LEFT JOIN (
						SELECT SUM(Z.SalesQuotesQty) AS SalesQuotesQty,
								SUM(Z.SalesQuotesValue) AS SalesQuotesValue,
								Z.strUserName 
						FROM (SELECT SUM(tblOrderDocDT.decQty) AS SalesQuotesQty
									,SUM(tblOrderDocDT.decLineTotExc) AS SalesQuotesValue
									,tblOrderDoc.strUserName
								FROM tblOrderDoc
								INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
								INNER JOIN tblCurrency ON tblCustomers.strCurrency = tblCurrency.strCurrency
								INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
									AND tblCurrency.strCurrency = tblOrderDocDT.strCurrency
								INNER JOIN tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
								INNER JOIN tblTaxCodeExt ON tblTaxCodeExt.strTaxCode = tblOrderDocDT.strTaxCode
								WHERE intDocType = 2
									AND tblOrderDoc.dteSystemDate BETWEEN @StartDate
										AND @EndDate
								GROUP BY tblOrderDoc.strUserName
	
								UNION ALL
	
								SELECT SUM(tblOrderDocQDT.decQty) AS SalesQuotesQty
									,SUM(tblOrderDocQDT.decLineTotExc) AS SalesQuotesValue
									,tblOrderDocQ.strUserName
								FROM tblOrderDocQ
								LEFT JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName
								INNER JOIN tblCurrency ON tblOrderDocQ.strCurrency = tblCurrency.strCurrency
								INNER JOIN tblOrderDocQDT ON tblOrderDocQ.strOrdDocID = tblOrderDocQDT.strOrdDocID
									AND tblCurrency.strCurrency = tblOrderDocQDT.strCurrency
								LEFT JOIN tblInv ON tblOrderDocQDT.strPartNumber = tblInv.strPartNumber
								INNER JOIN tblTaxCodeExt ON tblTaxCodeExt.strTaxCode = tblOrderDocQDT.strTaxCode
								WHERE tblOrderDocQ.dteSystemDate BETWEEN @StartDate
										AND @EndDate
								GROUP BY tblOrderDocQ.strUserName) Z
						GROUP BY Z.strUserName) AS SalesQuotes ON tblUsers.strUserName = SalesQuotes.strUserName
					LEFT JOIN (
						SELECT SUM(tblOrderDocDT.decQty) AS SalesOrdersQty
							,SUM(tblOrderDocDT.decLineTotExc) AS SalesOrdersValue
							,tblOrderDoc.strUserName
						FROM tblOrderDoc
						INNER JOIN dbo.tblOrderDocDT ON dbo.tblOrderDoc.strOrdDocID = dbo.tblOrderDocDT.strOrdDocID
						INNER JOIN dbo.tblInv ON dbo.tblOrderDocDT.strPartNumber = dbo.tblInv.strPartNumber
						INNER JOIN dbo.tblTaxCodeExt ON dbo.tblOrderDocDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode
						INNER JOIN dbo.tblCustomers ON dbo.tblOrderDoc.strCustName = dbo.tblCustomers.strCustName
						WHERE (tblOrderDoc.intDocType = 1)
							AND tblOrderDoc.dteSystemDate BETWEEN @StartDate
								AND @EndDate
							AND tblOrderDoc.strOrdDocID NOT LIKE 'CR%'
						GROUP BY tblOrderDoc.strUserName
						) AS SalesOrders ON tblUsers.strUserName = SalesOrders.strUserName
					LEFT JOIN (
						SELECT SUM(tblOrderDocDT.decQty) AS CreditRequestQty
							,SUM(tblOrderDocDT.decLineTotExc) AS CreditRequestValue
							,tblOrderDoc.strUserName
						FROM tblOrderDoc
						INNER JOIN dbo.tblOrderDocDT ON dbo.tblOrderDoc.strOrdDocID = dbo.tblOrderDocDT.strOrdDocID
						INNER JOIN dbo.tblInv ON dbo.tblOrderDocDT.strPartNumber = dbo.tblInv.strPartNumber
						INNER JOIN dbo.tblTaxCodeExt ON dbo.tblOrderDocDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode
						INNER JOIN dbo.tblCustomers ON dbo.tblOrderDoc.strCustName = dbo.tblCustomers.strCustName
						WHERE (tblOrderDoc.intDocType = 1)
							AND tblOrderDoc.dteSystemDate BETWEEN @StartDate
								AND @EndDate
							AND tblOrderDoc.strOrdDocID LIKE 'CR%'
						GROUP BY tblOrderDoc.strUserName
						) AS CreditRequests ON tblUsers.strUserName = CreditRequests.strUserName
					LEFT JOIN (
						SELECT SUM(dbo.tblInvoiceDocDT.decQty) AS SalesInvoicesQty
							,SUM(dbo.tblInvoiceDocDT.decLineTotExc) AS SalesInvoicesValue
							,dbo.tblInvoiceDoc.strUserName
						FROM dbo.tblInvoiceDocDT
						INNER JOIN dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID
						INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber
						INNER JOIN dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName
						WHERE (dbo.tblInvoiceDocDT.bitDiscountTax = 0)
							AND tblInvoiceDoc.dteSystemDate BETWEEN @StartDate
								AND @EndDate
							AND tblInvoiceDoc.strInvDocID NOT LIKE 'CN%'
						GROUP BY dbo.tblInvoiceDoc.strUserName
						) AS SalesInvoices ON tblUsers.strUserName = SalesInvoices.strUserName
					LEFT JOIN (
						SELECT SUM(dbo.tblInvoiceDocDT.decQty) AS CreditNoteQty
							,SUM(dbo.tblInvoiceDocDT.decLineTotExc) AS CreditNoteValue
							,dbo.tblInvoiceDoc.strUserName
						FROM dbo.tblInvoiceDocDT
						INNER JOIN dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID
						INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber
						INNER JOIN dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName
						WHERE (dbo.tblInvoiceDocDT.bitDiscountTax = 0)
							AND tblInvoiceDoc.dteSystemDate BETWEEN @StartDate
								AND @EndDate
							AND tblInvoiceDoc.strInvDocID LIKE 'CN%'
						GROUP BY dbo.tblInvoiceDoc.strUserName
						) AS CreditNote ON tblUsers.strUserName = CreditNote.strUserName
					LEFT JOIN (
						SELECT SUM(tblOrderDocPDT.decBuyQty) AS PurchaseQuoteQty
							,SUM(tblOrderDocPDT.decLineTotExc) AS PurchaseQuoteValue
							,tblOrderDocP.strUserName
						FROM tblOrderDocP
						INNER JOIN dbo.tblVendors ON dbo.tblOrderDocP.strVendName = dbo.tblVendors.strVendName
						INNER JOIN dbo.tblCurrency ON dbo.tblVendors.strCurrency = dbo.tblCurrency.strCurrency
						INNER JOIN dbo.tblOrderDocPDT ON dbo.tblOrderDocP.strOrdPDocID = dbo.tblOrderDocPDT.strOrdPDocID
							AND dbo.tblCurrency.strCurrency = dbo.tblOrderDocPDT.strCurrency
						INNER JOIN dbo.tblInv ON dbo.tblOrderDocPDT.strPartNumber = dbo.tblInv.strPartNumber
						INNER JOIN dbo.tblTaxCodeExt ON dbo.tblTaxCodeExt.strTaxCode = dbo.tblOrderDocPDT.strTaxCode
						WHERE (tblOrderDocP.intDocType = 2)
							AND tblOrderDocP.dteSystemDate BETWEEN @StartDate
								AND @EndDate
						GROUP BY tblOrderDocP.strUserName
						) AS PurchaseQuotes ON tblUsers.strUserName = PurchaseQuotes.strUserName
					LEFT JOIN (
						SELECT SUM(tblOrderDocPDT.decBuyQty) AS PurchaseOrderQty
							,SUM(tblOrderDocPDT.decLineTotExc) AS PurchaseOrderValue
							,tblOrderDocP.strUserName
						FROM tblOrderDocP
						INNER JOIN dbo.tblOrderDocPDT ON dbo.tblOrderDocP.strOrdPDocID = dbo.tblOrderDocPDT.strOrdPDocID
						INNER JOIN dbo.tblInv ON dbo.tblOrderDocPDT.strPartNumber = dbo.tblInv.strPartNumber
						INNER JOIN dbo.tblTaxCodeExt ON dbo.tblOrderDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode
						INNER JOIN dbo.tblVendors ON dbo.tblOrderDocP.strVendName = dbo.tblVendors.strVendName
						LEFT JOIN dbo.tblOrderDoc ON dbo.tblOrderDocPDT.strOrdSODocID = dbo.tblOrderDoc.strOrdDocID
						LEFT JOIN dbo.tblCustomers ON dbo.tblCustomers.strCustName = dbo.tblOrderDoc.strCustName
						WHERE (tblOrderDocP.intDocType = 1)
							AND tblOrderDocP.dteSystemDate BETWEEN @StartDate
								AND @EndDate
						GROUP BY tblOrderDocP.strUserName
						) AS PurchaseOrder ON tblUsers.strUserName = PurchaseOrder.strUserName
					LEFT JOIN (
						SELECT SUM(dbo.tblInvoiceDocPDT.decBuyQty) AS PurchaseInvoiceQty
							,SUM(dbo.tblInvoiceDocPDT.decLineTotExc) AS PurchaseInvoiceValue
							,tblInvoiceDocP.strUserName
						FROM dbo.tblInvoiceDocP
						INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID
						INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber
						INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode
						INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName
						WHERE tblInvoiceDocP.dteSystemDate BETWEEN @StartDate
								AND @EndDate
							AND tblInvoiceDocP.strInvPDocID NOT LIKE 'DN%'
						GROUP BY tblInvoiceDocP.strUserName
						) AS PurchaseInvoice ON tblUsers.strUserName = PurchaseInvoice.strUserName
					LEFT JOIN (
						SELECT SUM(dbo.tblInvoiceDocPDT.decBuyQty) AS DebitNotesQty
							,SUM(dbo.tblInvoiceDocPDT.decLineTotExc) AS DebitNotesValue
							,tblInvoiceDocP.strUserName
						FROM dbo.tblInvoiceDocP
						INNER JOIN dbo.tblInvoiceDocPDT ON dbo.tblInvoiceDocP.strInvPDocID = dbo.tblInvoiceDocPDT.strInvPDocID
						INNER JOIN dbo.tblInv ON dbo.tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber
						INNER JOIN dbo.tblTaxCodeExt ON dbo.tblInvoiceDocPDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode
						INNER JOIN dbo.tblVendors ON dbo.tblInvoiceDocP.strVendName = dbo.tblVendors.strVendName
						WHERE tblInvoiceDocP.dteSystemDate BETWEEN @StartDate
								AND @EndDate
							AND tblInvoiceDocP.strInvPDocID LIKE 'DN%'
						GROUP BY tblInvoiceDocP.strUserName
						) AS DebitNotes ON tblUsers.strUserName = DebitNotes.strUserName
					ORDER BY tblUsers.strUserName
END
GO
/****** Object:  StoredProcedure [dbo].[prGetVendorCategoryData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetVendorCategoryData]
	
AS
BEGIN
	SET NOCOUNT ON;

	SELECT strVendCategory, strDesc FROM tblVendorCat WHERE bitInactive = 0
END
GO
/****** Object:  StoredProcedure [dbo].[prGetVendorReconReasonCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetVendorReconReasonCount]
(
	@lngID nvarchar(30) = null
)
AS
BEGIN
	SET NOCOUNT ON;
    SELECT COUNT(lngId) FROM tblVendorReconDT 
	WHERE lngReconReason = @lngID
END
GO
/****** Object:  StoredProcedure [dbo].[prGetVendorsData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetVendorsData]
	@IsAllVendorCategory AS BIT = NULL,
	@SQVendCategory AS nvarchar(20) = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsAllVendorCategory = 1 
	BEGIN
		SELECT strVendName, strVendDesc FROM tblVendors WHERE bitInactive = 0
	END
	ELSE IF @IsAllVendorCategory = 0 
	BEGIN
		SELECT strVendName, strVendDesc FROM tblVendors WHERE bitInactive = 0 AND strVendCategory = @SQVendCategory
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prGetWarehouseData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGetWarehouseData]
	
AS
BEGIN
	SET NOCOUNT ON;

	SELECT strLocName, strDesc FROM tblInvLoc WHERE tblInvLoc.intType = 0
END
GO
/****** Object:  StoredProcedure [dbo].[prGLAccountNumberColumnRelatedTables_Update]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGLAccountNumberColumnRelatedTables_Update]
AS
    SET NOCOUNT ON

	BEGIN

	DELETE FROM [dbo].[tblGLSegmentFormatSetup]

	INSERT INTO [dbo].[tblGLSegmentFormatSetup] ([strGLAccountSegment], [strSeg1Name], [intSeg1Format], [intSeg1Length], [strSeg2Name], [intSeg2Format], [intSeg2Length], [strSeg3Name], [intSeg3Format], [intSeg3Length], [strSeg4Name], [intSeg4Format], [intSeg4Length], [strSeg5Name], [intSeg5Format], [intSeg5Length], [strSeg6Name], [intSeg6Format], [intSeg6Length], [strSeg7Name], [intSeg7Format], [intSeg7Length], [strSeg8Name], [intSeg8Format], [intSeg8Length], [strSeg9Name], [intSeg9Format], [intSeg9Length], [strSeg10Name], [intSeg10Format], [intSeg10Length], [bitIsUsed]) VALUES ('0000-AAAA', 'Main Account No', 2, 4, 'Sub Account No', 1, 4, '', -1, 0, '', -1, 0, '', -1, 0, '', -1, 0, '', -1, 0, '', -1, 0, '', -1, 0, '', -1, 0, 0 )

	DECLARE @format nvarchar(30) = (SELECT [strGLAccountSegment] FROM [dbo].[tblGLSegmentFormatSetup])
	UPDATE tblCoOpts SET strGLAccountSegment = @format

	UPDATE tblGLSegmentFormatSetup SET bitIsUsed = 1
	
	END

	RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prGLAccountNumberColumnRelatedTablesBusInd_Update]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGLAccountNumberColumnRelatedTablesBusInd_Update]
AS
    SET NOCOUNT ON

	BEGIN

	DELETE FROM [dbo].[tblGLSegmentFormatSetup]

	INSERT INTO [dbo].[tblGLSegmentFormatSetup] ([strGLAccountSegment], [strSeg1Name], [intSeg1Format], [intSeg1Length], [strSeg2Name], [intSeg2Format], [intSeg2Length], [strSeg3Name], [intSeg3Format], [intSeg3Length], [strSeg4Name], [intSeg4Format], [intSeg4Length], [strSeg5Name], [intSeg5Format], [intSeg5Length], [strSeg6Name], [intSeg6Format], [intSeg6Length], [strSeg7Name], [intSeg7Format], [intSeg7Length], [strSeg8Name], [intSeg8Format], [intSeg8Length], [strSeg9Name], [intSeg9Format], [intSeg9Length], [strSeg10Name], [intSeg10Format], [intSeg10Length], [bitIsUsed]) VALUES ('0000-AAAA', 'Main Account No', 2, 4, 'Sub Account No', 1, 4, '', -1, 0, '', -1, 0, '', -1, 0, '', -1, 0, '', -1, 0, '', -1, 0, '', -1, 0, '', -1, 0, 0 )

    DECLARE @sl1 AS int = (SELECT [intSeg1Length] FROM [dbo].[tblGLSegmentFormatSetup])

	-- Update Accounts Legend Tables data
	UPDATE [dbo].[tblAccountsLegend] 
	SET [intGLNumberFrom] = SUBSTRING(CONVERT(nvarchar, [intGLNumberFrom]), 0, @sl1 + 1), 
		[intGLNumberTo] = SUBSTRING(CONVERT(nvarchar, [intGLNumberTo]), 0, @sl1 + 1)
	
	-- Drop Constraints
	EXEC [prAccountNumberRelatedConstraint_Drop]

	-- Update account number related column in all tables
	declare @l1 as int = (SELECT intSeg1Length from tblGLSegmentFormatSetup)
	declare @l2 as int = (SELECT intSeg2Length from tblGLSegmentFormatSetup)

	DECLARE @format nvarchar(30) = (SELECT [strGLAccountSegment] FROM [dbo].[tblGLSegmentFormatSetup])
	UPDATE tblCoOpts SET strGLAccountSegment = @format

	UPDATE tblGLSegmentFormatSetup SET bitIsUsed = 1
	
	UPDATE tblAccounts SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblManBOMCompOverhead SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)  
	UPDATE tblTaxDef SET intPurchAcct = SUBSTRING(intPurchAcct, 0, @l1 + 1) + '-' + SUBSTRING(intPurchAcct, 5, @l2)  , intSalesAcct = SUBSTRING(intSalesAcct, 0, @l1 + 1) + '-' + SUBSTRING(intSalesAcct, 5, @l2)  
	UPDATE tblJournalEnt SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)  
	UPDATE tblPOSDr SET intCoupGift = SUBSTRING(intCoupGift, 0, @l1 + 1) + '-' + SUBSTRING(intCoupGift, 5, @l2)  ,intAccReceipt = SUBSTRING(intAccReceipt, 0, @l1 + 1) + '-' + SUBSTRING(intAccReceipt, 5, @l2), intPettyCash = SUBSTRING(intPettyCash, 0, @l1 + 1) + '-' + SUBSTRING(intPettyCash, 5, @l2), intCreditCard = SUBSTRING(intCreditCard, 0, @l1 + 1) + '-' + SUBSTRING(intCreditCard, 5, @l2), intOverShort = SUBSTRING(intOverShort, 0, @l1 + 1) + '-' + SUBSTRING(intOverShort, 5, @l2), intCashCheq = SUBSTRING(intCashCheq, 0, @l1 + 1) + '-' + SUBSTRING(intCashCheq, 5, @l2)
	UPDATE tblVendors SET intExpAcct = SUBSTRING(intExpAcct, 0, @l1 + 1) + '-' + SUBSTRING(intExpAcct, 5, @l2) 
	UPDATE tblAccountsDept SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblPOSDrsSplitPmt SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblManJobCompOverhead SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblAccountF SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblJournalEntryDocDT SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblJournalEntLY SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblAccountsSec SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblJournalEntryDocDTPrj SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblJournalEntryDocCBDT SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblJournalEntryDocCBDTPrj SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblAccountsDeptB SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblAccountsSL SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblAcctBudgets SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblBankRecTrans SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblBankRecAccts SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblBankRecSum SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)  
	UPDATE tblManWIPCompOverhead SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)  
	UPDATE tblJournalEntryDocREDT SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)  
	UPDATE tblJournalEntryDocCBREDT SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)  
	UPDATE tblDeposits SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblDepositsA SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblManMachinery SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblManLabour SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblAccountsLY SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2) 
	UPDATE tblAccountsDeptBLY SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)
	UPDATE tblAcctBudgetsLY SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)
	UPDATE tblAccountsDeptLY SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)
	UPDATE tblAccountsHist SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)
	UPDATE tblJournalEntHist SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)
	UPDATE tblInv SET intExpAcct = CASE WHEN intExpAcct = '0' THEN '0' ELSE SUBSTRING(intExpAcct, 0, @l1 + 1) + '-' + SUBSTRING(intExpAcct, 5, @l2) END 
	UPDATE tblBankRecAccts SET intInterestRev = SUBSTRING(intInterestRev, 0, @l1 + 1) + '-' + SUBSTRING(intInterestRev, 5, @l2), intInterestExp = SUBSTRING(intInterestExp, 0, @l1 + 1) + '-' + SUBSTRING(intInterestExp, 5, @l2) 
	UPDATE tblAccountSets SET intGLAsset = CASE WHEN intGLAsset = '0' THEN '0' ELSE SUBSTRING(intGLAsset, 0, @l1 + 1) + '-' + SUBSTRING(intGLAsset, 5, @l2) END, intGLRevenue = CASE WHEN intGLRevenue = '0' THEN '0' ELSE SUBSTRING(intGLRevenue, 0, @l1 + 1) + '-' + SUBSTRING(intGLRevenue, 5, @l2) END, intGLExpCOGS = CASE WHEN intGLExpCOGS = '0' THEN '0' ELSE SUBSTRING(intGLExpCOGS, 0, @l1 + 1) + '-' + SUBSTRING(intGLExpCOGS, 5, @l2) END, intGLVariance = CASE WHEN intGLVariance = '0' THEN '0' ELSE SUBSTRING(intGLVariance, 0, @l1 + 1) + '-' + SUBSTRING(intGLVariance, 5, @l2) END 
	UPDATE tblUtilityAccounts SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)
	UPDATE tblUtilityAccountSets SET intGLAsset = CASE WHEN intGLAsset = '0' THEN '0' ELSE SUBSTRING(intGLAsset, 0, @l1 + 1) + '-' + SUBSTRING(intGLAsset, 5, @l2) END, intGLRevenue = CASE WHEN intGLRevenue = '0' THEN '0' ELSE SUBSTRING(intGLRevenue, 0, @l1 + 1) + '-' + SUBSTRING(intGLRevenue, 5, @l2) END, intGLExpCOGS = CASE WHEN intGLExpCOGS = '0' THEN '0' ELSE SUBSTRING(intGLExpCOGS, 0, @l1 + 1) + '-' + SUBSTRING(intGLExpCOGS, 5, @l2) END, intGLVariance = CASE WHEN intGLVariance = '0' THEN '0' ELSE SUBSTRING(intGLVariance, 0, @l1 + 1) + '-' + SUBSTRING(intGLVariance, 5, @l2) END	
	UPDATE tblUtilityAccountSetsUnassigned SET intGLRevenue = CASE WHEN intGLRevenue = '0' THEN '0' ELSE SUBSTRING(intGLRevenue, 0, @l1 + 1) + '-' + SUBSTRING(intGLRevenue, 5, @l2) END, intGLExpCOGS = CASE WHEN intGLExpCOGS = '0' THEN '0' ELSE SUBSTRING(intGLExpCOGS, 0, @l1 + 1) + '-' + SUBSTRING(intGLExpCOGS, 5, @l2) END, intGLVariance = CASE WHEN intGLVariance = '0' THEN '0' ELSE SUBSTRING(intGLVariance, 0, @l1 + 1) + '-' + SUBSTRING(intGLVariance, 5, @l2) END		 
	UPDATE tblInvIntReqDoc SET intAccount = SUBSTRING(intAccount, 0, @l1 + 1) + '-' + SUBSTRING(intAccount, 5, @l2)
	UPDATE tblInvIssReqDoc SET intAccount = SUBSTRING(intAccount, 0, @l1 + 1) + '-' + SUBSTRING(intAccount, 5, @l2)
	UPDATE tblInvAdjDoc SET intAccount = SUBSTRING(intAccount, 0, @l1 + 1) + '-' + SUBSTRING(intAccount, 5, @l2)
	UPDATE tblInvAsmDoc SET intAccount = SUBSTRING(intAccount, 0, @l1 + 1) + '-' + SUBSTRING(intAccount, 5, @l2)
	UPDATE tblVendPay SET intBankAcct = SUBSTRING(intBankAcct, 0, @l1 + 1) + '-' + SUBSTRING(intBankAcct, 5, @l2)
	UPDATE tblPurchRE SET intAccount = SUBSTRING(intAccount, 0, @l1 + 1) + '-' + SUBSTRING(intAccount, 5, @l2)
	UPDATE tblInvoiceDocP SET intAccount = SUBSTRING(intAccount, 0, @l1 + 1) + '-' + SUBSTRING(intAccount, 5, @l2)
	UPDATE tblCustPay SET intBankAcct = SUBSTRING(intBankAcct, 0, @l1 + 1) + '-' + SUBSTRING(intBankAcct, 5, @l2)		
	UPDATE tblSalesRE SET intAccount = SUBSTRING(intAccount, 0, @l1 + 1) + '-' + SUBSTRING(intAccount, 5, @l2)	
	UPDATE tblTenderTypes SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)	
	UPDATE tblInvoiceDoc SET intAccount = SUBSTRING(intAccount, 0, @l1 + 1) + '-' + SUBSTRING(intAccount, 5, @l2)   
	UPDATE tblAssetTypes SET intDepAccNo = SUBSTRING(intDepAccNo, 0, @l1 + 1) + '-' + SUBSTRING(intDepAccNo, 5, @l2) ,intExpAccNo = SUBSTRING(intExpAccNo, 0, @l1 + 1) + '-' + SUBSTRING(intExpAccNo, 5, @l2) ,intAssetAccNo = SUBSTRING(intAssetAccNo, 0, @l1 + 1) + '-' + SUBSTRING(intAssetAccNo, 5, @l2) ,intRepairAccNo = SUBSTRING(intRepairAccNo, 0, @l1 + 1) + '-' + SUBSTRING(intRepairAccNo, 5, @l2)
	UPDATE tblBankRecOTP SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)
	UPDATE tblJournalEntryDocCBRE SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)
	UPDATE tblJournalEntryDocCB SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)
	UPDATE tblUtilityTaxDef SET intPurchAcct = SUBSTRING(intPurchAcct, 0, @l1 + 1) + '-' + SUBSTRING(intPurchAcct, 5, @l2), intSalesAcct = SUBSTRING(intSalesAcct, 0, @l1 + 1) + '-' + SUBSTRING(intSalesAcct, 5, @l2)
	UPDATE tblAccountsDeptHist SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)
	UPDATE tblBankRecJE SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)
	UPDATE tblInvoiceDocREV SET intAccount = SUBSTRING(intAccount, 0, @l1 + 1) + '-' + SUBSTRING(intAccount, 5, @l2)
	UPDATE tblInvoiceDocSplitPmt SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)
	UPDATE tblPaymentPlanDeposit SET intGLNumber = SUBSTRING(intGLNumber, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumber, 5, @l2)
	UPDATE tblCustomers SET intGLNumberAR = SUBSTRING(intGLNumberAR, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumberAR, 5, @l2)
	UPDATE tblCustomers SET intGLNumberDeposit = SUBSTRING(intGLNumberDeposit, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumberDeposit, 5, @l2)
	UPDATE tblVendors SET intGLNumberAP = SUBSTRING(intGLNumberAP, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumberAP, 5, @l2)
	UPDATE tblVendors SET intGLNumberPrePay = SUBSTRING(intGLNumberPrePay, 0, @l1 + 1) + '-' + SUBSTRING(intGLNumberPrePay, 5, @l2)


	-- Add Constraints
	EXEC [prAccountNumberRelatedConstraint_Add]

	-- Add default Segment Code and Description in tblGLSegmentSetup
	EXEC [prGLSegmentSetupDefaultCodeAndDesc_Add]

	END

	RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prGLSegmentFormatSetup_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGLSegmentFormatSetup_Save]
(
    @strGLAccountSegment nvarchar(30) = Null,
		@strSeg1Name nvarchar(15) = Null,
		@intSeg1Format int = Null,
		@intSeg1Length int = Null,
		@strSeg2Name nvarchar(15) = Null,
		@intSeg2Format int = Null,
		@intSeg2Length int = Null,
		@strSeg3Name nvarchar(15) = Null,
		@intSeg3Format int = Null,
		@intSeg3Length int = Null,
		@strSeg4Name nvarchar(15) = Null,
		@intSeg4Format int = Null,
		@intSeg4Length int = Null,
		@strSeg5Name nvarchar(15) = Null,
		@intSeg5Format int = Null,
		@intSeg5Length int = Null,
		@strSeg6Name nvarchar(15) = Null,
		@intSeg6Format int = Null,
		@intSeg6Length int = Null,
		@strSeg7Name nvarchar(15) = Null,
		@intSeg7Format int = Null,
		@intSeg7Length int = Null,
		@strSeg8Name nvarchar(15) = Null,
		@intSeg8Format int = Null,
		@intSeg8Length int = Null,
		@strSeg9Name nvarchar(15) = Null,
		@intSeg9Format int = Null,
		@intSeg9Length int = Null,
		@strSeg10Name nvarchar(15) = Null,
		@intSeg10Format int = Null,
		@intSeg10Length int = Null,
		@bitIsUsed bit = Null
)
AS
    SET NOCOUNT ON

	IF ((SELECT COUNT(*) FROM tblGLSegmentFormatSetup) = 0)
    BEGIN
        INSERT INTO [tblGLSegmentFormatSetup]
        (
            [strGLAccountSegment],
            [strSeg1Name],
			[intSeg1Format],
			[intSeg1Length],
			[strSeg2Name],
			[intSeg2Format],
			[intSeg2Length],
			[strSeg3Name],
			[intSeg3Format],
			[intSeg3Length],
			[strSeg4Name],
			[intSeg4Format],
			[intSeg4Length],
			[strSeg5Name],
			[intSeg5Format],
			[intSeg5Length],
			[strSeg6Name],
			[intSeg6Format],
			[intSeg6Length],
			[strSeg7Name],
			[intSeg7Format],
			[intSeg7Length],
			[strSeg8Name],
			[intSeg8Format],
			[intSeg8Length],
			[strSeg9Name],
			[intSeg9Format],
			[intSeg9Length],
			[strSeg10Name],
			[intSeg10Format],
			[intSeg10Length],
			[bitIsUsed]
        )
        VALUES
        (
            @strGLAccountSegment,
           	@strSeg1Name,
			@intSeg1Format,
			@intSeg1Length,
			@strSeg2Name,
			@intSeg2Format,
			@intSeg2Length,
			@strSeg3Name,
			@intSeg3Format,
			@intSeg3Length,
			@strSeg4Name,
			@intSeg4Format,
			@intSeg4Length,
			@strSeg5Name,
			@intSeg5Format,
			@intSeg5Length,
			@strSeg6Name,
			@intSeg6Format,
			@intSeg6Length,
			@strSeg7Name,
			@intSeg7Format,
			@intSeg7Length,
			@strSeg8Name,
			@intSeg8Format,
			@intSeg8Length,
			@strSeg9Name,
			@intSeg9Format,
			@intSeg9Length,
			@strSeg10Name,
			@intSeg10Format,
			@intSeg10Length,
			@bitIsUsed
        )
    
        SELECT @strGLAccountSegment
    END
    ELSE
    BEGIN
        UPDATE [tblGLSegmentFormatSetup] SET 
		    [strGLAccountSegment] = ISNULL(@strGLAccountSegment, [strGLAccountSegment]),
            [strSeg1Name] = ISNULL(@strSeg1Name, [strSeg1Name]),
			[intSeg1Format] = ISNULL(@intSeg1Format, [intSeg1Format]),
			[intSeg1Length] = ISNULL(@intSeg1Length, [intSeg1Length]),
			[strSeg2Name] = ISNULL(@strSeg2Name, [strSeg2Name]),
			[intSeg2Format] = ISNULL(@intSeg2Format, [intSeg2Format]),
			[intSeg2Length] = ISNULL(@intSeg2Length, [intSeg2Length]),
			[strSeg3Name] = ISNULL(@strSeg3Name, [strSeg3Name]),
			[intSeg3Format] = ISNULL(@intSeg3Format, [intSeg3Format]),
			[intSeg3Length] = ISNULL(@intSeg3Length, [intSeg3Length]),
			[strSeg4Name] = ISNULL(@strSeg4Name, [strSeg4Name]),
			[intSeg4Format] = ISNULL(@intSeg4Format, [intSeg4Format]),
			[intSeg4Length] = ISNULL(@intSeg4Length, [intSeg4Length]),
			[strSeg5Name] = ISNULL(@strSeg5Name, [strSeg5Name]),
			[intSeg5Format] = ISNULL(@intSeg5Format, [intSeg5Format]),
			[intSeg5Length] = ISNULL(@intSeg5Length, [intSeg5Length]),
			[strSeg6Name] = ISNULL(@strSeg6Name, [strSeg6Name]),
			[intSeg6Format] = ISNULL(@intSeg6Format, [intSeg6Format]),
			[intSeg6Length] = ISNULL(@intSeg6Length, [intSeg6Length]),
			[strSeg7Name] = ISNULL(@strSeg7Name, [strSeg7Name]),
			[intSeg7Format] = ISNULL(@intSeg7Format, [intSeg7Format]),
			[intSeg7Length] = ISNULL(@intSeg7Length, [intSeg7Length]),
			[strSeg8Name] = ISNULL(@strSeg8Name, [strSeg8Name]),
			[intSeg8Format] = ISNULL(@intSeg8Format, [intSeg8Format]),
			[intSeg8Length] = ISNULL(@intSeg8Length, [intSeg8Length]),
			[strSeg9Name] = ISNULL(@strSeg9Name, [strSeg9Name]),
			[intSeg9Format] = ISNULL(@intSeg9Format, [intSeg9Format]),
			[intSeg9Length] = ISNULL(@intSeg9Length, [intSeg9Length]),
			[strSeg10Name] = ISNULL(@strSeg10Name, [strSeg10Name]),
			[intSeg10Format] = ISNULL(@intSeg10Format, [intSeg10Format]),
			[intSeg10Length] = ISNULL(@intSeg10Length, [intSeg10Length]),
			[bitIsUsed] = ISNULL(@bitIsUsed, [bitIsUsed])

        SELECT @strGLAccountSegment
    END

    RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prGLSegmentFormatSetup_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/

CREATE PROCEDURE [dbo].[prGLSegmentFormatSetup_SelectAll]
AS
SET NOCOUNT ON
SELECT 
[strGLAccountSegment],
[strSeg1Name],
[intSeg1Format],
[intSeg1Length],
[strSeg2Name],
[intSeg2Format],
[intSeg2Length],
[strSeg3Name],
[intSeg3Format],
[intSeg3Length],
[strSeg4Name],
[intSeg4Format],
[intSeg4Length],
[strSeg5Name],
[intSeg5Format],
[intSeg5Length],
[strSeg6Name],
[intSeg6Format],
[intSeg6Length],
[strSeg7Name],
[intSeg7Format],
[intSeg7Length],
[strSeg8Name],
[intSeg8Format],
[intSeg8Length],
[strSeg9Name],
[intSeg9Format],
[intSeg9Length],
[strSeg10Name],
[intSeg10Format],
[intSeg10Length],
[bitIsUsed]
FROM 
[tblGLSegmentFormatSetup]
GO


/****** Object:  StoredProcedure [dbo].[prGLSegmentSetup_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGLSegmentSetup_Delete]
(
    @intSegmentSetupId bigint
)
AS
    SET NOCOUNT ON

    DELETE FROM [tblGLSegmentSetup] WHERE [intSegmentSetupId] = @intSegmentSetupId
GO
/****** Object:  StoredProcedure [dbo].[prGLSegmentSetup_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGLSegmentSetup_Save]
(
    @intSegmentSetupId int = Null,
		@intSegmentId int = Null,
		@strCode nvarchar(30) = Null,
		@strDescription nvarchar(100) = Null,
		@bitIsPrimary bit = Null,
		@intAccType int = Null,
        @intAccClass int = Null,
		@intGroupCode int = Null
)
AS
    SET NOCOUNT ON

	    IF ((SELECT COUNT(*) FROM tblGLSegmentSetup WHERE intSegmentSetupId = @intSegmentSetupId) = 0)
    BEGIN
        INSERT INTO [tblGLSegmentSetup]
        (
            [intSegmentId],
            [strCode],
            [strDescription],
			[bitIsPrimary],
			[intAccType],
			[intAccClass],
			[intGroupCode]
        )
        VALUES
        (
            @intSegmentId,
            @strCode,
            @strDescription,
			@bitIsPrimary,
			@intAccType,
            @intAccClass,
		    @intGroupCode
        )
    
        SELECT @intSegmentSetupId
    END
    ELSE
    BEGIN
        UPDATE [tblGLSegmentSetup] SET 
		    [intSegmentId] = ISNULL(@intSegmentId, [intSegmentId]),
            [strCode] = ISNULL(@strCode, [strCode]),
            [strDescription] = ISNULL(@strDescription, [strDescription]),
			[bitIsPrimary] = ISNULL(@bitIsPrimary, [bitIsPrimary]),
			[intAccType] = ISNULL(@intAccType, [bitIsPrimary]),
			[intAccClass] = ISNULL(@intAccClass, [bitIsPrimary]),
			[intGroupCode] = ISNULL(@intGroupCode, [bitIsPrimary])
        WHERE
            [intSegmentSetupId] = @intSegmentSetupId

        SELECT @intSegmentSetupId
    END

    RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prGLSegmentSetup_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO



CREATE PROCEDURE [dbo].[prGLSegmentSetup_Search]
(
    @intSegmentSetupId int = Null,
		@intSegmentId int = Null,
		@strCode nvarchar(30) = Null,
		@strDescription nvarchar(100) = Null,
		@bitIsPrimary bit = Null,
		@intAccType int = Null,
		@intAccClass int = Null,
		@intGroupCode int = Null
)
AS
    SET NOCOUNT ON

	SELECT 
        [intSegmentSetupId],
        [intSegmentId],
        [strCode],
        [strDescription],
		[bitIsPrimary],
		[intAccType],
        [intAccClass],
        [intGroupCode]
    FROM 
        [tblGLSegmentSetup]
    WHERE
        (([intSegmentSetupId] = @intSegmentSetupId) OR (@intSegmentSetupId Is Null)) AND 
        (([intSegmentId] = @intSegmentId) OR (@intSegmentId Is Null)) AND 
        (([strCode] = @strCode) OR (@strCode Is Null)) AND 
        (([strDescription] = @strDescription) OR (@strDescription Is Null)) AND
		(([bitIsPrimary] = @bitIsPrimary) OR (@bitIsPrimary Is Null)) AND
		(([intAccType] = @intAccType) OR (@intAccType Is Null)) AND 
		(([intAccClass] = @intAccClass) OR (@intAccClass Is Null)) AND 
	    (([intGroupCode] = @intGroupCode) OR (@intGroupCode Is Null))
		ORDER BY strCode
GO
/****** Object:  StoredProcedure [dbo].[prGLSegmentSetup_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGLSegmentSetup_Select]
(
    @intSegmentSetupId int
)
AS
    SET NOCOUNT ON

	SELECT 
	   [intSegmentSetupId],
	   [intSegmentId],
	   [strCode],
	   [strDescription],
	   [bitIsPrimary]
	FROM 
		[tblGLSegmentSetup]
	WHERE
		[intSegmentSetupId] = @intSegmentSetupId
GO
/****** Object:  StoredProcedure [dbo].[prGLSegmentSetup_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGLSegmentSetup_SelectAll]
AS
    SET NOCOUNT ON

     SELECT 
		[intSegmentSetupId],
		[intSegmentId],
		[strCode],
		[strDescription],
		[bitIsPrimary]
	FROM 
		[tblGLSegmentSetup]
GO
/****** Object:  StoredProcedure [dbo].[prGLSegmentSetup_SelectAll_WHSegmentId]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGLSegmentSetup_SelectAll_WHSegmentId]    
@SQintSegmentId As int    
AS    
     SELECT     
  [intSegmentSetupId],    
  [intSegmentId],    
  [strCode],    
  [strDescription],    
  [bitIsPrimary]    
 FROM     
  [tblGLSegmentSetup]    
    WHERE intSegmentId <> @SQintSegmentId    
 ORDER BY intSegmentId,strCode
GO
/****** Object:  StoredProcedure [dbo].[prGLSegmentSetupDefaultCodeAndDesc_Add]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prGLSegmentSetupDefaultCodeAndDesc_Add]
AS
    SET NOCOUNT ON

BEGIN

DECLARE @l1 AS int,
		@l2 AS int,
		@l3 AS int,
		@l4 AS int,
		@l5 AS int,
		@l6 AS int,
		@l7 AS int,
		@l8 AS int,
		@l9 AS int,
		@l10 AS int,
		@Add AS int = 1

SELECT	@l1 = intSeg1Length,
		@l2 = intSeg2Length,
		@l3 = intSeg3Length,
		@l4 = intSeg4Length,
		@l5 = intSeg5Length,
		@l6 = intSeg6Length,
		@l7 = intSeg7Length,
		@l8 = intSeg8Length,
		@l9 = intSeg9Length,
		@l10 = intSeg10Length
FROM tblGLSegmentFormatSetup

DELETE FROM tblGLSegmentSetup

IF @l1 > 0
BEGIN
	INSERT INTO tblGLSegmentSetup (intSegmentId, strCode, strDescription, bitIsPrimary,intAccType,intAccClass,intGroupCode)
	SELECT 1 AS intSegmentId ,A.strCode AS strCode ,A.strDesc AS strDescription ,0 AS bitIsPrimary ,A.intAccType ,A.intAccClass ,A.intGroupCode FROM ( SELECT SUBSTRING(intGLNumber, @Add, @l1) AS strCode ,strDesc ,ROW_NUMBER() OVER ( PARTITION BY SUBSTRING(intGLNumber, @Add, @l1) ORDER BY SUBSTRING(intGLNumber, @Add, @l1) ) AS RowNumber ,intAccType ,intAccClass ,intGroupCode FROM tblAccounts GROUP BY SUBSTRING(intGLNumber, @Add, @l1) ,strDesc ,intAccType ,intAccClass ,intGroupCode ) AS A WHERE RowNumber = 1
END

IF @l2 > 0
BEGIN
	SET @Add = (@Add + 1) + @l1

	INSERT INTO tblGLSegmentSetup (intSegmentId, strCode, strDescription, bitIsPrimary,intAccType,intAccClass,intGroupCode)
	SELECT 2 AS intSegmentId ,A.strCode AS strCode ,A.strDesc AS strDescription ,0 AS bitIsPrimary ,A.intAccType ,A.intAccClass ,A.intGroupCode FROM ( SELECT SUBSTRING(intGLNumber, @Add, @l2) AS strCode ,strDesc ,ROW_NUMBER() OVER ( PARTITION BY SUBSTRING(intGLNumber, @Add, @l2) ORDER BY SUBSTRING(intGLNumber, @Add, @l2) ) AS RowNumber ,intAccType ,intAccClass ,intGroupCode FROM tblAccounts GROUP BY SUBSTRING(intGLNumber, @Add, @l2) ,strDesc ,intAccType ,intAccClass ,intGroupCode ) AS A WHERE RowNumber = 1
END

IF @l3 > 0
BEGIN
SET @Add = (@Add + 1) + @l2

	INSERT INTO tblGLSegmentSetup (intSegmentId, strCode, strDescription, bitIsPrimary,intAccType,intAccClass,intGroupCode)
	SELECT 3 AS intSegmentId ,A.strCode AS strCode ,A.strDesc AS strDescription ,0 AS bitIsPrimary ,A.intAccType ,A.intAccClass ,A.intGroupCode FROM ( SELECT SUBSTRING(intGLNumber, @Add, @l3) AS strCode ,strDesc ,ROW_NUMBER() OVER ( PARTITION BY SUBSTRING(intGLNumber, @Add, @l3) ORDER BY SUBSTRING(intGLNumber, @Add, @l3) ) AS RowNumber ,intAccType ,intAccClass ,intGroupCode FROM tblAccounts GROUP BY SUBSTRING(intGLNumber, @Add, @l3) ,strDesc ,intAccType ,intAccClass ,intGroupCode ) AS A WHERE RowNumber = 1
END

IF @l4 > 0
BEGIN
	SET @Add = (@Add + 1) + @l3

	INSERT INTO tblGLSegmentSetup (intSegmentId, strCode, strDescription, bitIsPrimary,intAccType,intAccClass,intGroupCode)
	SELECT 4 AS intSegmentId ,A.strCode AS strCode ,A.strDesc AS strDescription ,0 AS bitIsPrimary ,A.intAccType ,A.intAccClass ,A.intGroupCode FROM ( SELECT SUBSTRING(intGLNumber, @Add, @l4) AS strCode ,strDesc ,ROW_NUMBER() OVER ( PARTITION BY SUBSTRING(intGLNumber, @Add, @l4) ORDER BY SUBSTRING(intGLNumber, @Add, @l4) ) AS RowNumber ,intAccType ,intAccClass ,intGroupCode FROM tblAccounts GROUP BY SUBSTRING(intGLNumber, @Add, @l4) ,strDesc ,intAccType ,intAccClass ,intGroupCode ) AS A WHERE RowNumber = 1
END

IF @l5 > 0
BEGIN
	SET @Add = (@Add + 1) + @l4

	INSERT INTO tblGLSegmentSetup (intSegmentId, strCode, strDescription, bitIsPrimary,intAccType,intAccClass,intGroupCode)
	SELECT 5 AS intSegmentId ,A.strCode AS strCode ,A.strDesc AS strDescription ,0 AS bitIsPrimary ,A.intAccType ,A.intAccClass ,A.intGroupCode FROM ( SELECT SUBSTRING(intGLNumber, @Add, @l5) AS strCode ,strDesc ,ROW_NUMBER() OVER ( PARTITION BY SUBSTRING(intGLNumber, @Add, @l5) ORDER BY SUBSTRING(intGLNumber, @Add, @l5) ) AS RowNumber ,intAccType ,intAccClass ,intGroupCode FROM tblAccounts GROUP BY SUBSTRING(intGLNumber, @Add, @l5) ,strDesc ,intAccType ,intAccClass ,intGroupCode ) AS A WHERE RowNumber = 1
END

IF @l6 > 0
BEGIN
	SET @Add = (@Add + 1) + @l5

	INSERT INTO tblGLSegmentSetup (intSegmentId, strCode, strDescription, bitIsPrimary,intAccType,intAccClass,intGroupCode)
	SELECT 6 AS intSegmentId ,A.strCode AS strCode ,A.strDesc AS strDescription ,0 AS bitIsPrimary ,A.intAccType ,A.intAccClass ,A.intGroupCode FROM ( SELECT SUBSTRING(intGLNumber, @Add, @l6) AS strCode ,strDesc ,ROW_NUMBER() OVER ( PARTITION BY SUBSTRING(intGLNumber, @Add, @l6) ORDER BY SUBSTRING(intGLNumber, @Add, @l6) ) AS RowNumber ,intAccType ,intAccClass ,intGroupCode FROM tblAccounts GROUP BY SUBSTRING(intGLNumber, @Add, @l6) ,strDesc ,intAccType ,intAccClass ,intGroupCode ) AS A WHERE RowNumber = 1
END

IF @l7 > 0
BEGIN
	SET @Add = (@Add + 1) + @l6

	INSERT INTO tblGLSegmentSetup (intSegmentId, strCode, strDescription, bitIsPrimary,intAccType,intAccClass,intGroupCode)
	SELECT 7 AS intSegmentId ,A.strCode AS strCode ,A.strDesc AS strDescription ,0 AS bitIsPrimary ,A.intAccType ,A.intAccClass ,A.intGroupCode FROM ( SELECT SUBSTRING(intGLNumber, @Add, @l7) AS strCode ,strDesc ,ROW_NUMBER() OVER ( PARTITION BY SUBSTRING(intGLNumber, @Add, @l7) ORDER BY SUBSTRING(intGLNumber, @Add, @l7) ) AS RowNumber ,intAccType ,intAccClass ,intGroupCode FROM tblAccounts GROUP BY SUBSTRING(intGLNumber, @Add, @l7) ,strDesc ,intAccType ,intAccClass ,intGroupCode ) AS A WHERE RowNumber = 1
END

IF @l8 > 0
BEGIN
	SET @Add = (@Add + 1) + @l7

	INSERT INTO tblGLSegmentSetup (intSegmentId, strCode, strDescription, bitIsPrimary,intAccType,intAccClass,intGroupCode)
	SELECT 8 AS intSegmentId ,A.strCode AS strCode ,A.strDesc AS strDescription ,0 AS bitIsPrimary ,A.intAccType ,A.intAccClass ,A.intGroupCode FROM ( SELECT SUBSTRING(intGLNumber, @Add, @l8) AS strCode ,strDesc ,ROW_NUMBER() OVER ( PARTITION BY SUBSTRING(intGLNumber, @Add, @l8) ORDER BY SUBSTRING(intGLNumber, @Add, @l8) ) AS RowNumber ,intAccType ,intAccClass ,intGroupCode FROM tblAccounts GROUP BY SUBSTRING(intGLNumber, @Add, @l8) ,strDesc ,intAccType ,intAccClass ,intGroupCode ) AS A WHERE RowNumber = 1
END

IF @l9 > 0
BEGIN
	SET @Add = (@Add + 1) + @l8

	INSERT INTO tblGLSegmentSetup (intSegmentId, strCode, strDescription, bitIsPrimary,intAccType,intAccClass,intGroupCode)
	SELECT 9 AS intSegmentId ,A.strCode AS strCode ,A.strDesc AS strDescription ,0 AS bitIsPrimary ,A.intAccType ,A.intAccClass ,A.intGroupCode FROM ( SELECT SUBSTRING(intGLNumber, @Add, @l9) AS strCode ,strDesc ,ROW_NUMBER() OVER ( PARTITION BY SUBSTRING(intGLNumber, @Add, @l9) ORDER BY SUBSTRING(intGLNumber, @Add, @l9) ) AS RowNumber ,intAccType ,intAccClass ,intGroupCode FROM tblAccounts GROUP BY SUBSTRING(intGLNumber, @Add, @l9) ,strDesc ,intAccType ,intAccClass ,intGroupCode ) AS A WHERE RowNumber = 1
END

IF @l10 > 0
BEGIN
	SET @Add = (@Add + 1) + @l9

	INSERT INTO tblGLSegmentSetup (intSegmentId, strCode, strDescription, bitIsPrimary,intAccType,intAccClass,intGroupCode)
	SELECT 10 AS intSegmentId ,A.strCode AS strCode ,A.strDesc AS strDescription ,0 AS bitIsPrimary ,A.intAccType ,A.intAccClass ,A.intGroupCode FROM ( SELECT SUBSTRING(intGLNumber, @Add, @l10) AS strCode ,strDesc ,ROW_NUMBER() OVER ( PARTITION BY SUBSTRING(intGLNumber, @Add, @l10) ORDER BY SUBSTRING(intGLNumber, @Add, @l10) ) AS RowNumber ,intAccType ,intAccClass ,intGroupCode FROM tblAccounts GROUP BY SUBSTRING(intGLNumber, @Add, @l10) ,strDesc ,intAccType ,intAccClass ,intGroupCode ) AS A WHERE RowNumber = 1
END

END
 
RETURN 1
GO
/****** Object:  StoredProcedure [dbo].[prImportPODViaService]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prImportPODViaService] 
	@tblDocuments InvDocumentsTableType READONLY 
AS 
  BEGIN 
      DECLARE @tblPOD AS InvDocumentsTableType 

      INSERT INTO @tblPOD 
                  (lngDocumentID, 
                   strDocumentNumber, 
                   strFileName, 
                   strDescription, 
                   strExtension, 
                   varFile, 
                   dteModified, 
                   strType, 
                   intSize, 
                   strUserName, 
                   bitEnc, 
                   intAttachOn) 
      SELECT Doc.lngDocumentID, 
             InvDoc.strInvDocID, 
             Doc.strFileName, 
             InvDoc.strCustName, 
             Doc.strExtension, 
             Doc.varFile, 
             Doc.dteModified, 
             Doc.strType, 
             Doc.intSize, 
             Doc.strUserName, 
             Doc.bitEnc, 
             Doc.intAttachOn 
      FROM   tblInvoiceDoc AS InvDoc 
             INNER JOIN @tblDocuments AS Doc 
                     ON InvDoc.strInvDocID = Doc.strDocumentNumber 

      INSERT INTO @tblPOD 
                  (lngDocumentID, 
                   strDocumentNumber, 
                   strFileName, 
                   strDescription, 
                   strExtension, 
                   varFile, 
                   dteModified, 
                   strType, 
                   intSize, 
                   strUserName, 
                   bitEnc, 
                   intAttachOn) 
      SELECT Doc.lngDocumentID, 
             DADoc.strOrdDADocID, 
             Doc.strFileName, 
             DADoc.strCustName, 
             Doc.strExtension, 
             Doc.varFile, 
             Doc.dteModified, 
             Doc.strType, 
             Doc.intSize, 
             Doc.strUserName, 
             Doc.bitEnc, 
             Doc.intAttachOn 
      FROM   tblOrderDocDA AS DADoc 
             INNER JOIN @tblDocuments AS Doc 
                     ON DADoc.strOrdDADocID = Doc.strDocumentNumber 
		  
	  DELETE FROM @tblPOD WHERE strDocumentNumber 
	  IN (SELECT doc.strDocumentNumber FROM tblDocuments AS doc 
						INNER JOIN @tblPOD AS pod 
							ON	doc.strDocumentNumber = pod.strDocumentNumber 
							AND doc.varFile = pod.varFile 
							AND doc.strType = 'POD'
					)
	  
	  INSERT INTO  @tblPOD 
                  (lngDocumentID, 
                   strDocumentNumber, 
                   strFileName, 
                   strDescription, 
                   strExtension, 
                   varFile, 
                   dteModified, 
                   strType, 
                   intSize, 
                   strUserName, 
                   bitEnc, 
                   intAttachOn) 
      SELECT lngDocumentID
			,strDocumentNumber
			,strFileName
			,strDescription
			,strExtension
			,varFile
			,dteModified
			,strType
			,intSize
			,strUserName
			,bitEnc
			,intAttachOn
      FROM   tblDocuments WHERE strType = 'POD'

                

      DECLARE @StartDate AS DATETIME 
      DECLARE @FinishDate AS DATETIME 

      SELECT @StartDate = dteYearStarts, 
             @FinishDate = dteYearEnds 
      FROM   tblCompany 

      EXEC prInvImportDoc_Save 
        @tblPOD, 
        @StartDate, 
        @FinishDate 
  END 
GO
/****** Object:  StoredProcedure [dbo].[prInv_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prInv_Search]
(
    @strPartNumber nvarchar(50) = Null,
    @strDesc nvarchar(500) = Null,
    @intType tinyint = Null,
    @strCategory nvarchar(20) = Null,
    @strAcctSet nvarchar(10) = Null,
    @intExpAcct nvarchar(30) = Null,
    @decCostOnPO money = Null,
    @bitUseLPPOnPO bit = Null,
    @intReorderQty int = Null,
    @strBuyUnit nvarchar(15) = Null,
    @strStockUnit nvarchar(15) = Null,
    @decBuyToStock smallmoney = Null,
    @bitAllowPriceChg bit = Null,
    @dteDateLastSale smalldatetime = Null,
    @dteLastPurchase smalldatetime = Null,
    @decLastPPUnit money = Null,
    @dteLastUpdated smalldatetime = Null,
    @bitUseBOM bit = Null,
    @intBOMQty int = Null,
    @strAddInfo nvarchar(200) = Null,
    @bitInactive bit = Null,
    @decSumAvail money = Null,
    @decSumAlloc money = Null,
    @decSumOnHand money = Null,
    @decSumValue money = Null,
    @decSumOnOrder money = Null,
    @decSumOpenQty money = Null,
    @decSumOpenValue money = Null,
    @decSumValYearStart money = Null,
    @decSumQtyYearStart money = Null,
    @decSumAmtSoldYTD money = Null,
    @decSumAmtSoldLY money = Null,
    @decSumQtySoldYTD money = Null,
    @decSumQtySoldLY money = Null,
    @decSumCOGSYTD money = Null,
    @decSumCOGSLY money = Null,
    @intSumNumTransYTD bigint = Null,
    @intSumNumTransLY bigint = Null,
    @bitAutoBuild bit = Null,
    @strField1 nvarchar(100) = Null,
    @strField2 nvarchar(100) = Null,
    @strField3 nvarchar(100) = Null,
    @strField4 nvarchar(100) = Null,
    @strField5 nvarchar(100) = Null,
    @strField6 nvarchar(100) = Null,
    @strBarCode nvarchar(300) = Null,
    @decStandardCost money = Null,
    @strBinLoc nvarchar(50) = Null,
    @bitItemNumConvUsed bit = Null,
    @strSellUnit nvarchar(15) = Null,
    @strSellStockUnit nvarchar(15) = Null,
    @decSellFromStock smallmoney = Null,
    @strItemSegment1 nvarchar(50) = Null,
    @strItemSegment2 nvarchar(50) = Null,
    @strItemSegment3 nvarchar(50) = Null,
    @strItemSegment4 nvarchar(50) = Null,
    @strInvNumConv nvarchar(50) = Null,
    @bitInvSerialType bit = Null,
    @strInvSerialType nvarchar(20) = Null,
    @decRepairCharge money = Null,
    @strBarCode2 nvarchar(300) = Null,
    @bitVoucherEnabled bit = Null,
    @strVoucherCode nvarchar(50) = Null,
    @decDefSaleQty money = Null,
    @strExtendedDesc nvarchar(MAX) = Null,
    @bitInvExtDescOnSI bit = Null,
    @bitInvExtDescOnSO bit = Null,
    @bitInvExtDescOnSQ bit = Null,
    @bitInvExtDescOnSFHQ bit = Null,
    @bitInvExtDescOnCR bit = Null,
    @bitInvExtDescOnPI bit = Null,
    @bitInvExtDescOnPO bit = Null,
    @bitInvExtDescOnPQ bit = Null,
	@bitInvExtDescOnBRQ bit = Null,
    @bitWebstoreItem bit = Null,
    @decSumManuf money = Null
)
AS
    SET NOCOUNT ON

    SELECT 
        [strPartNumber],
        [strDesc],
        [intType],
        [strCategory],
		'' As [strAcctSet],
        [intExpAcct],
        [decCostOnPO],
        [bitUseLPPOnPO],
        [intReorderQty],
        [strBuyUnit],
        [strStockUnit],
        [decBuyToStock],
        [bitAllowPriceChg],
        [dteDateLastSale],
        [dteLastPurchase],
        [decLastPPUnit],
        [dteLastUpdated],
        [bitUseBOM],
        [intBOMQty],
        [strAddInfo],
        [bitInactive],
        [decSumAvail],
        [decSumAlloc],
        [decSumOnHand],
        [decSumValue],
        [decSumOnOrder],
        [decSumOpenQty],
        [decSumOpenValue],
        [decSumValYearStart],
        [decSumQtyYearStart],
        [decSumAmtSoldYTD],
        [decSumAmtSoldLY],
        [decSumQtySoldYTD],
        [decSumQtySoldLY],
        [decSumCOGSYTD],
        [decSumCOGSLY],
        [intSumNumTransYTD],
        [intSumNumTransLY],
        [bitAutoBuild],
        [strField1],
        [strField2],
        [strField3],
        [strField4],
        [strField5],
        [strField6],
        [strBarCode],
        [decStandardCost],
		'' As [strBinLoc],
        [bitItemNumConvUsed],
        [strSellUnit],
        [strSellStockUnit],
        [decSellFromStock],
        [strItemSegment1],
        [strItemSegment2],
        [strItemSegment3],
        [strItemSegment4],
        [strInvNumConv],
        [bitInvSerialType],
        [strInvSerialType],
        [decRepairCharge],
        [strBarCode2],
        [bitVoucherEnabled],
        [strVoucherCode],
        [decDefSaleQty],
        [strExtendedDesc],
        [bitInvExtDescOnSI],
        [bitInvExtDescOnSO],
        [bitInvExtDescOnSQ],
        [bitInvExtDescOnSFHQ],
        [bitInvExtDescOnCR],
        [bitInvExtDescOnPI],
        [bitInvExtDescOnPO],
        [bitInvExtDescOnPQ],
		[bitInvExtDescOnBRQ],
        [bitWebstoreItem],
        [decSumManuf]
    FROM 
        [tblInv]
    WHERE
        (([strPartNumber] = @strPartNumber) OR (@strPartNumber Is Null)) AND 
        (([strDesc] = @strDesc) OR (@strDesc Is Null)) AND 
        (([intType] = @intType) OR (@intType Is Null)) AND 
        (([strCategory] = @strCategory) OR (@strCategory Is Null)) AND 
        (([intExpAcct] = @intExpAcct) OR (@intExpAcct Is Null)) AND 
        (([decCostOnPO] = @decCostOnPO) OR (@decCostOnPO Is Null)) AND 
        (([bitUseLPPOnPO] = @bitUseLPPOnPO) OR (@bitUseLPPOnPO Is Null)) AND 
        (([intReorderQty] = @intReorderQty) OR (@intReorderQty Is Null)) AND 
        (([strBuyUnit] = @strBuyUnit) OR (@strBuyUnit Is Null)) AND 
        (([strStockUnit] = @strStockUnit) OR (@strStockUnit Is Null)) AND 
        (([decBuyToStock] = @decBuyToStock) OR (@decBuyToStock Is Null)) AND 
        (([bitAllowPriceChg] = @bitAllowPriceChg) OR (@bitAllowPriceChg Is Null)) AND 
        (([dteDateLastSale] = @dteDateLastSale) OR (@dteDateLastSale Is Null)) AND 
        (([dteLastPurchase] = @dteLastPurchase) OR (@dteLastPurchase Is Null)) AND 
        (([decLastPPUnit] = @decLastPPUnit) OR (@decLastPPUnit Is Null)) AND 
        (([dteLastUpdated] = @dteLastUpdated) OR (@dteLastUpdated Is Null)) AND 
        (([bitUseBOM] = @bitUseBOM) OR (@bitUseBOM Is Null)) AND 
        (([intBOMQty] = @intBOMQty) OR (@intBOMQty Is Null)) AND 
        (([strAddInfo] = @strAddInfo) OR (@strAddInfo Is Null)) AND 
        (([bitInactive] = @bitInactive) OR (@bitInactive Is Null)) AND 
        (([decSumAvail] = @decSumAvail) OR (@decSumAvail Is Null)) AND 
        (([decSumAlloc] = @decSumAlloc) OR (@decSumAlloc Is Null)) AND 
        (([decSumOnHand] = @decSumOnHand) OR (@decSumOnHand Is Null)) AND 
        (([decSumValue] = @decSumValue) OR (@decSumValue Is Null)) AND 
        (([decSumOnOrder] = @decSumOnOrder) OR (@decSumOnOrder Is Null)) AND 
        (([decSumOpenQty] = @decSumOpenQty) OR (@decSumOpenQty Is Null)) AND 
        (([decSumOpenValue] = @decSumOpenValue) OR (@decSumOpenValue Is Null)) AND 
        (([decSumValYearStart] = @decSumValYearStart) OR (@decSumValYearStart Is Null)) AND 
        (([decSumQtyYearStart] = @decSumQtyYearStart) OR (@decSumQtyYearStart Is Null)) AND 
        (([decSumAmtSoldYTD] = @decSumAmtSoldYTD) OR (@decSumAmtSoldYTD Is Null)) AND 
        (([decSumAmtSoldLY] = @decSumAmtSoldLY) OR (@decSumAmtSoldLY Is Null)) AND 
        (([decSumQtySoldYTD] = @decSumQtySoldYTD) OR (@decSumQtySoldYTD Is Null)) AND 
        (([decSumQtySoldLY] = @decSumQtySoldLY) OR (@decSumQtySoldLY Is Null)) AND 
        (([decSumCOGSYTD] = @decSumCOGSYTD) OR (@decSumCOGSYTD Is Null)) AND 
        (([decSumCOGSLY] = @decSumCOGSLY) OR (@decSumCOGSLY Is Null)) AND 
        (([intSumNumTransYTD] = @intSumNumTransYTD) OR (@intSumNumTransYTD Is Null)) AND 
        (([intSumNumTransLY] = @intSumNumTransLY) OR (@intSumNumTransLY Is Null)) AND 
        (([bitAutoBuild] = @bitAutoBuild) OR (@bitAutoBuild Is Null)) AND 
        (([strField1] = @strField1) OR (@strField1 Is Null)) AND 
        (([strField2] = @strField2) OR (@strField2 Is Null)) AND 
        (([strField3] = @strField3) OR (@strField3 Is Null)) AND 
        (([strField4] = @strField4) OR (@strField4 Is Null)) AND 
        (([strField5] = @strField5) OR (@strField5 Is Null)) AND 
        (([strField6] = @strField6) OR (@strField6 Is Null)) AND 
        (([strBarCode] = @strBarCode) OR (@strBarCode Is Null)) AND 
        (([decStandardCost] = @decStandardCost) OR (@decStandardCost Is Null)) AND 
        (([bitItemNumConvUsed] = @bitItemNumConvUsed) OR (@bitItemNumConvUsed Is Null)) AND 
        (([strSellUnit] = @strSellUnit) OR (@strSellUnit Is Null)) AND 
        (([strSellStockUnit] = @strSellStockUnit) OR (@strSellStockUnit Is Null)) AND 
        (([decSellFromStock] = @decSellFromStock) OR (@decSellFromStock Is Null)) AND 
        (([strItemSegment1] = @strItemSegment1) OR (@strItemSegment1 Is Null)) AND 
        (([strItemSegment2] = @strItemSegment2) OR (@strItemSegment2 Is Null)) AND 
        (([strItemSegment3] = @strItemSegment3) OR (@strItemSegment3 Is Null)) AND 
        (([strItemSegment4] = @strItemSegment4) OR (@strItemSegment4 Is Null)) AND 
        (([strInvNumConv] = @strInvNumConv) OR (@strInvNumConv Is Null)) AND 
        (([bitInvSerialType] = @bitInvSerialType) OR (@bitInvSerialType Is Null)) AND 
        (([strInvSerialType] = @strInvSerialType) OR (@strInvSerialType Is Null)) AND 
        (([decRepairCharge] = @decRepairCharge) OR (@decRepairCharge Is Null)) AND 
        (([strBarCode2] = @strBarCode2) OR (@strBarCode2 Is Null)) AND 
        (([bitVoucherEnabled] = @bitVoucherEnabled) OR (@bitVoucherEnabled Is Null)) AND 
        (([strVoucherCode] = @strVoucherCode) OR (@strVoucherCode Is Null)) AND 
        (([decDefSaleQty] = @decDefSaleQty) OR (@decDefSaleQty Is Null)) AND 
        (([strExtendedDesc] = @strExtendedDesc) OR (@strExtendedDesc Is Null)) AND 
        (([bitInvExtDescOnSI] = @bitInvExtDescOnSI) OR (@bitInvExtDescOnSI Is Null)) AND 
        (([bitInvExtDescOnSO] = @bitInvExtDescOnSO) OR (@bitInvExtDescOnSO Is Null)) AND 
        (([bitInvExtDescOnSQ] = @bitInvExtDescOnSQ) OR (@bitInvExtDescOnSQ Is Null)) AND 
        (([bitInvExtDescOnSFHQ] = @bitInvExtDescOnSFHQ) OR (@bitInvExtDescOnSFHQ Is Null)) AND 
        (([bitInvExtDescOnCR] = @bitInvExtDescOnCR) OR (@bitInvExtDescOnCR Is Null)) AND 
        (([bitInvExtDescOnPI] = @bitInvExtDescOnPI) OR (@bitInvExtDescOnPI Is Null)) AND 
        (([bitInvExtDescOnPO] = @bitInvExtDescOnPO) OR (@bitInvExtDescOnPO Is Null)) AND 
        (([bitInvExtDescOnPQ] = @bitInvExtDescOnPQ) OR (@bitInvExtDescOnPQ Is Null)) AND 
		(([bitInvExtDescOnBRQ] = @bitInvExtDescOnBRQ) OR (@bitInvExtDescOnBRQ Is Null)) AND
        (([bitWebstoreItem] = @bitWebstoreItem) OR (@bitWebstoreItem Is Null)) AND 
        (([decSumManuf] = @decSumManuf) OR (@decSumManuf Is Null))
GO
/****** Object:  StoredProcedure [dbo].[prInv_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prInv_Select]
(
    @strPartNumber nvarchar(50)
)
AS
    SET NOCOUNT ON

    SELECT 
        [strPartNumber],
        [strDesc],
        [intType],
        [strCategory],
        '' As [strAcctSet],
        [intExpAcct],
        [decCostOnPO],
        [bitUseLPPOnPO],
        [intReorderQty],
        [strBuyUnit],
        [strStockUnit],
        [decBuyToStock],
        [bitAllowPriceChg],
        [dteDateLastSale],
        [dteLastPurchase],
        [decLastPPUnit],
        [dteLastUpdated],
        [bitUseBOM],
        [intBOMQty],
        [strAddInfo],
        [bitInactive],
        [decSumAvail],
        [decSumAlloc],
        [decSumOnHand],
        [decSumValue],
        [decSumOnOrder],
        [decSumOpenQty],
        [decSumOpenValue],
        [decSumValYearStart],
        [decSumQtyYearStart],
        [decSumAmtSoldYTD],
        [decSumAmtSoldLY],
        [decSumQtySoldYTD],
        [decSumQtySoldLY],
        [decSumCOGSYTD],
        [decSumCOGSLY],
        [intSumNumTransYTD],
        [intSumNumTransLY],
        [bitAutoBuild],
        [strField1],
        [strField2],
        [strField3],
        [strField4],
        [strField5],
        [strField6],
        [strBarCode],
        [decStandardCost],
        '' As [strBinLoc],
        [bitItemNumConvUsed],
        [strSellUnit],
        [strSellStockUnit],
        [decSellFromStock],
        [strItemSegment1],
        [strItemSegment2],
        [strItemSegment3],
        [strItemSegment4],
        [strInvNumConv],
        [bitInvSerialType],
        [strInvSerialType],
        [decRepairCharge],
        [strBarCode2],
        [bitVoucherEnabled],
        [strVoucherCode],
        [decDefSaleQty],
        [strExtendedDesc],
        [bitInvExtDescOnSI],
        [bitInvExtDescOnSO],
        [bitInvExtDescOnSQ],
        [bitInvExtDescOnSFHQ],
        [bitInvExtDescOnCR],
        [bitInvExtDescOnPI],
        [bitInvExtDescOnPO],
        [bitInvExtDescOnPQ],
		[bitInvExtDescOnBRQ],
        [bitWebstoreItem],
        [decSumManuf]
    FROM 
        [tblInv]
    WHERE 
        [strPartNumber] = @strPartNumber
GO
/****** Object:  StoredProcedure [dbo].[prInv_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prInv_SelectAll]
		AS
		BEGIN
			SELECT [strPartNumber]
			,[strDesc]
			,[intType]
			,[strCategory]
			,[intExpAcct]
			,[decCostOnPO]
			,[bitUseLPPOnPO]
			,[intReorderQty]
			,[strBuyUnit]
			,[strStockUnit]
			,[decBuyToStock]
			,[bitAllowPriceChg]
			,[dteDateLastSale]
			,[dteLastPurchase]
			,[decLastPPUnit]
			,[dteLastUpdated]
			,[bitUseBOM]
			,[intBOMQty]
			,[strAddInfo]
			,[bitInactive]
			,[decSumAvail]
			,[decSumAlloc]
			,[decSumOnHand]
			,[decSumValue]
			,[decSumOnOrder]
			,[decSumOpenQty]
			,[decSumOpenValue]
			,[decSumValYearStart]
			,[decSumQtyYearStart]
			,[decSumAmtSoldYTD]
			,[decSumAmtSoldLY]
			,[decSumQtySoldYTD]
			,[decSumQtySoldLY]
			,[decSumCOGSYTD]
			,[decSumCOGSLY]
			,[intSumNumTransYTD]
			,[intSumNumTransLY]
			,[bitAutoBuild]
			,[strField1]
			,[strField2]
			,[strField3]
			,[strField4]
			,[strField5]
			,[strField6]
			,[strBarCode]
			,[decStandardCost]
			,[bitItemNumConvUsed]
			,[strSellUnit]
			,[strSellStockUnit]
			,[decSellFromStock]
			,[strItemSegment1]
			,[strItemSegment2]
			,[strItemSegment3]
			,[strItemSegment4]
			,[strInvNumConv]
			,[bitInvSerialType]
			,[strInvSerialType]
			,[decRepairCharge]
			,[strBarCode2]
			,[bitVoucherEnabled]
			,[strVoucherCode]
			,[decDefSaleQty]
			,[strExtendedDesc]
			,[bitInvExtDescOnSI]
			,[bitInvExtDescOnSO]
			,[bitInvExtDescOnSQ]
			,[bitInvExtDescOnSFHQ]
			,[bitInvExtDescOnCR]
			,[bitInvExtDescOnPI]
			,[bitInvExtDescOnPO]
			,[bitInvExtDescOnPQ]
			,[bitWebstoreItem]
			,[decSumManuf]
			FROM [tblInv]
			WHERE [intType] <> 5
		END
GO
/****** Object:  StoredProcedure [dbo].[prInvAllBin_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prInvAllBin_Search]  
  @SQstrLocationName NVARCHAR(10) = NULL  
 ,@SQBinCode NVARCHAR(50) = NULL  
 ,@SQUserName NVARCHAR(50) = NULL  
 ,@SQstrPartNUmber NVARCHAR(50) = NULL  
 ,@SQSearchText NVARCHAR(100) = NULL  
 ,@SQbitAllowed BIT = NULL  
 ,@SQbitDefault BIT = NULL
 
AS  
BEGIN  
 SET NOCOUNT ON;  
  
 IF @SQstrLocationName is not NULL   
 BEGIN   
  DECLARE @Count INT   
  SET @Count = (SELECT Count(1) from tblInvLocSec (NOLOCK)  Where strLocName = @SQstrLocationName)  
  
  IF	@Count = 0   
  BEGIN  
   SET @SQUserName = NULL  
  END  
 END 
 
 

CREATE TABLE #Temp_BinUpdateHistory 
(
	[BinId] [bigint] NOT NULL,		
	[BinstrPartNumber] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[BinstrLocName] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
)

IF(@SQstrPartNUmber is not null)
BEGIN
	INSERT INTO #Temp_BinUpdateHistory
	  SELECT lngBinID,strPartNumber,strLocName
      FROM tblInvTrackingDTBin (NOLOCK)  
      INNER JOIN tblInvTrackingDT (NOLOCK) ON tblInvTrackingDT.lngInvTrackID = tblInvTrackingDTBin.lngInvTrackID  
      AND tblInvTrackingDT.intLineNo = tblInvTrackingDTBin.intLineNo  
      WHERE tblInvTrackingDT.strPartNumber =  @SQstrPartNUmber  and tblInvTrackingDT.strLocName =  @SQstrLocationName  
			  Group by lngBinID,strPartNumber,strLocName
END


  
 IF @SQbitAllowed = 1  
 BEGIN  
  
  ;WITH CTE AS (SELECT  tblInvExtBin.strPartNumber  
   ,tblInvExtBin.strLocName  
   ,tblInvExtBin.lngBinID  
   ,tblInvExtBin.decOnHand AS decAvail  
   ,tblInvExtBin.decAlloc  
   ,tblInvExtBin.decOnHand   
   ,tblInvExtBin.decMaximumQty  
   ,tblInvExtBin.bitAllowed  
   ,tblInvExtBin.bitDefault  
   ,strDescription  
   ,tblInvLocBin.strBinCode  
   ,IsAllowEditing = CAST((  
     CASE   
      WHEN (CASE WHEN @SQstrPartNUmber is null then (  
        SELECT count(tblInvTrackingDTBin.lngBinID)  
        FROM tblInvTrackingDTBin (NOLOCK)  
        INNER JOIN tblInvTrackingDT (NOLOCK) ON tblInvTrackingDT.lngInvTrackID = tblInvTrackingDTBin.lngInvTrackID  
         AND tblInvTrackingDT.intLineNo = tblInvTrackingDTBin.intLineNo  
        WHERE tblInvTrackingDTBin.lngBinID = tblInvLocBin.lngId  
         AND tblInvTrackingDT.strPartNumber = ISNULL(tblInvExtBin.strPartNumber, @SQstrPartNUmber)  
        )ELSE (SELECT Count(*) from #Temp_BinUpdateHistory (NOLOCK) T where T.BinId= tblInvExtBin.lngBinID and T.BinstrPartNumber= @SQstrPartNUmber) END) > 0  
       THEN 0  
      ELSE 1  
      END  
     ) AS BIT)  
   ,intItemType = tblInv.intType  
   ,(Select TOP 1 dteExpiryDate FROM tblInvLotExt (NOLOCK) WHere tblInvLotExt.decQty > 0 AND tblInvLotExt.lngBinID = tblInvExtBin.lngBinID AND tblInvLotExt.strLocName = tblInvExtBin.strLocName   
    AND tblInvLotExt.strPartNumber = tblInvExtBin.strPartNumber Order by dteExpiryDate ASC) AS ExpiryDate  
    ,tblInvLocBin.bitPickingBin AS IsPickingBin  
    ,ISNULL(tblInvLocBin.bitStockingBin,0) As bitStockingBin  
  FROM tblInvExtBin (NOLOCK)   
  INNER JOIN tblInvLocBin (NOLOCK) ON tblInvExtBin.lngBinId = tblInvLocBin.lngId  
   AND tblInvLocBin.strLocName = tblInvExtBin.strLocName  
   AND bitInactive = 0  
  INNER JOIN tblInv (NOLOCK) ON tblInv.strPartNumber = tblInvExtBin.strPartNumber  
  LEFT JOIN tblInvLocBinSec (NOLOCK) ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = tblInvExtBin.strLocName  AND ((tblInvLocBinSec.strUserName = @SQUserName) OR (@SQUserName IS NULL))  
  WHERE (  
    (tblInvExtBin.strLocName = @SQstrLocationName)  
    OR (@SQstrLocationName IS NULL)  
    )  
   AND (  
    (tblInvLocBin.strBinCode = @SQBinCode)  
    OR (@SQBinCode IS NULL)  
    )  
   AND (  
    (tblInvExtBin.strPartNumber = @SQstrPartNUmber)  
    OR (@SQstrPartNUmber IS NULL)  
    )  
   AND  
   --((bitAllowed IN(1,@SQbitAllowed)) OR (@SQbitAllowed IS NULL)) AND  
   --((bitDefault = @SQbitDefault) OR (@SQbitDefault IS NULL)) AND  
   (  
    (  
     tblInvExtBin.strLocName LIKE '%' + @SQSearchText + '%'  
     OR tblInvLocBin.strBinCode LIKE '%' + @SQSearchText + '%'  
     OR tblInvExtBin.strPartNumber LIKE '%' + @SQSearchText + '%'  
     )  
    OR (@SQSearchText IS NULL)  
    ))   
  Select CTE.lngBinID,*,ISNULL((Select TOP 1 tblInvLocBin.lngID From tblInvLocBin (NOLOCK) WHERE CTE.strLocName = tblInvLocBin.strLocName AND bitInactive = 0),0) AS PickingBinId   
  from CTE Order BY ExpiryDate,strBinCode  
 END  
 ELSE  
 BEGIN  
  ;WITH CTE AS (SELECT ISNULL(tblInvExtBin.strPartNumber, @SQstrPartNUmber) strPartNumber  
   ,ISNULL(tblInvExtBin.strLocName, tblInvLocBin.strLocName) strLocName  
   ,ISNULL(tblInvExtBin.lngBinId, tblInvLocBin.lngId) lngBinId  
   ,ISNULL(decOnHand, 0) decAvail  
   ,ISNULL(decAlloc, 0) decAlloc  
   ,ISNULL(decOnHand, 0) decOnHand  
   ,ISNULL(decMaximumQty, 0) decMaximumQty  
   ,ISNULL(bitAllowed, 0) bitAllowed  
   ,ISNULL(bitDefault, 0) bitDefault  
   ,strDescription  
   ,tblInvLocBin.strBinCode  
   ,intItemType = ISNULL(tblInv.intType, 1)  
   ,(Select TOP 1 dteExpiryDate FROM tblInvLotExt (NOLOCK)  WHere tblInvLotExt.decQty > 0 AND tblInvLotExt.lngBinID = tblInvExtBin.lngBinID AND tblInvLotExt.strLocName = tblInvExtBin.strLocName   
  AND tblInvLotExt.strPartNumber = tblInvExtBin.strPartNumber Order by dteExpiryDate ASC) AS ExpiryDate  
  ,tblInvLocBin.bitPickingBin AS IsPickingBin  
  ,ISNULL(tblInvLocBin.bitStockingBin,0) As bitStockingBin  
  FROM tblInvLocBin (NOLOCK)  
  LEFT JOIN tblInvExtBin (NOLOCK) ON tblInvExtBin.lngBinId = tblInvLocBin.lngId  
   AND tblInvLocBin.strLocName = tblInvExtBin.strLocName  
   AND tblInvExtBin.strPartNumber = @SQstrPartNUmber  
  LEFT JOIN tblInv (NOLOCK) ON tblInv.strPartNumber = ISNULL(tblInvExtBin.strPartNumber, @SQstrPartNUmber)  
  LEFT JOIN tblInvLocBinSec (NOLOCK) ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = tblInvLocBin.strLocName  AND ((tblInvLocBinSec.strUserName = @SQUserName)  OR (@SQUserName IS NULL))  
  WHERE (  
    (tblInvLocBin.strLocName = @SQstrLocationName)  
    OR (@SQstrLocationName IS NULL)  
    )  
   AND tblInvLocBin.bitInactive = 0  
   AND (  
    (tblInvLocBin.strBinCode = @SQBinCode)  
    OR (@SQBinCode IS NULL)  
    )  
   AND (  
    (  
     tblInvLocBin.strLocName LIKE '%' + @SQSearchText + '%'  
     OR tblInvLocBin.strBinCode LIKE '%' + @SQSearchText + '%'  
     )  
    OR (@SQSearchText IS NULL)  
    ))  
  SELECT CTE.lngBinID,*,ISNULL((Select TOP 1 tblInvLocBin.lngID From tblInvLocBin (NOLOCK) WHERE CTE.strLocName = tblInvLocBin.strLocName AND bitInactive = 0),0) AS PickingBinId 
   ,IsAllowEditing = CAST(IsNull((  
      CASE   
       WHEN (  
         SELECT count(*)  
         FROM tblInvExtBin  
         WHERE strPartNumber = @SQstrPartNUmber  
         ) > 0  
        THEN (  
          CASE   
           WHEN  ( CASE WHEN @SQstrPartNUmber is null then  (  
             SELECT Count( tblInvTrackingDTBin.lngBinID)
             FROM tblInvTrackingDTBin (NOLOCK)  
             INNER JOIN tblInvTrackingDT (NOLOCK) ON tblInvTrackingDT.lngInvTrackID = tblInvTrackingDTBin.lngInvTrackID  
              AND tblInvTrackingDT.intLineNo = tblInvTrackingDTBin.intLineNo  
             WHERE tblInvTrackingDTBin.lngBinID = CTE.lngBinID  
              AND tblInvTrackingDT.strPartNumber = ISNULL(CTE.strPartNumber, @SQstrPartNUmber)  
             ) ELSE  
			 (SELECT Count(*) from #Temp_BinUpdateHistory (NOLOCK) T where T.BinId= CTE.lngBinID and T.BinstrPartNumber= @SQstrPartNUmber) END
			 )
			 > 0  
            THEN 0  
           ELSE 1  
           END  
		
          )  
       ELSE 1  
       END  
      ), 1) AS BIT)
  FROM CTE Order BY ExpiryDate,strBinCode  
 END
 
 DROP TABLE #Temp_BinUpdateHistory 

END  
GO
/****** Object:  StoredProcedure [dbo].[prInvAsmDocDTBin_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prInvAsmDocDTBin_Delete] @SQstrAsmDocID NVARCHAR(50)
AS
BEGIN
	DELETE
	FROM tblInvAsmDocDTBin
	WHERE strAsmDocID = @SQstrAsmDocID
END
GO
/****** Object:  StoredProcedure [dbo].[prInvAsmDocDTBin_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prInvAsmDocDTBin_List]
	-- Add the parameters for the stored procedure here
	@SQstrDocID nvarchar(50),
	@SQintLineNo int
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT	
		*,
		ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblInvAsmDocDTBin.lngBinId),'') AS strBinCode
	FROM 
		tblInvAsmDocDTBin 
	WHERE 
		strAsmDocID = @SQstrDocID AND intLineNo = @SQintLineNo
END

GO
/****** Object:  StoredProcedure [dbo].[prInvAsmDocDTBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prInvAsmDocDTBin_Save]   
-- Add the parameters for the stored procedure here   
@SQlngId bigint,   
@strAsmDocID nvarchar(50),   
@SQintLineNo INT,   
@SQlngBinId bigint,   
@SQdecQty money
AS  
BEGIN   
-- SET NOCOUNT ON added to prevent extra result sets from   -- interfering with SELECT statements.   
SET NOCOUNT ON;        

			INSERT INTO [dbo].[tblInvAsmDocDTBin]         
				([strAsmDocID] ,[intLineNo] ,[lngBinId] ,[decQty] )      
			VALUES         
				(@strAsmDocID, @SQintLineNo, @SQlngBinId, @SQdecQty)    
	END  

GO
/****** Object:  StoredProcedure [dbo].[prInvBin_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prInvBin_Search]      
 @SQstrLocationName NVARCHAR(10) = NULL      
 ,@SQBinCode NVARCHAR(50) = NULL      
 ,@SQUserName NVARCHAR(50) = NULL  
 ,@SQstrPartNUmber NVARCHAR(50) = NULL      
 ,@SQSearchText NVARCHAR(100) = NULL      
 ,@SQbitAllowed BIT = NULL      
 ,@SQbitDefault BIT = NULL      
AS      
BEGIN      
 SET NOCOUNT ON;      
 IF @SQstrLocationName IS NOT NULL    
 BEGIN      
  DECLARE @PickingBinId Bigint = 0     
  SET @PickingBinId=ISNULL((Select TOP 1 tblInvLocBin.lngID From tblInvLocBin WHERE tblInvLocBin.strLocName=@SQstrLocationName AND bitPickingBin = 1),0)    
  
 DECLARE @Count INT 
 SET @Count = (SELECT Count(1) from tblInvLocSec Where strLocName = @SQstrLocationName)
 IF	@Count = 0 
 BEGIN
	SET @SQUserName = NULL
 END
  
  IF @SQbitAllowed = 1      
  BEGIN      
      
  SELECT tblInvExtBin.strPartNumber      
  ,tblInvExtBin.strLocName      
  ,tblInvExtBin.lngBinID      
  ,tblInvExtBin.decOnHand AS decAvail      
  ,tblInvExtBin.decAlloc      
  ,tblInvExtBin.decOnHand      
  ,tblInvExtBin.decMaximumQty      
  ,tblInvExtBin.bitAllowed      
  ,tblInvExtBin.bitDefault      
  ,strDescription      
  ,tblInvLocBin.strBinCode      
  ,IsAllowEditing = CAST(0 AS BIT)      
  ,intItemType = CAST(tblInv.intType AS int)   
  ,(Select TOP 1 dteExpiryDate FROM tblInvLotExt WHere tblInvLotExt.decQty > 0 AND tblInvLotExt.lngBinID = tblInvExtBin.lngBinID AND tblInvLotExt.strLocName = tblInvExtBin.strLocName       
  AND tblInvLotExt.strPartNumber = tblInvExtBin.strPartNumber Order by dteExpiryDate ASC) AS ExpiryDate      
  ,tblInvLocBin.bitPickingBin AS IsPickingBin,@PickingBinId AS PickingBinId    
  ,ISNULL(tblInvLocBin.bitStockingBin,0) As bitStockingBin    
  FROM tblInvExtBin       
  INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId AND tblInvLocBin.strLocName = tblInvExtBin.strLocName  AND bitInactive = 0      
  INNER JOIN tblInv ON tblInv.strPartNumber = tblInvExtBin.strPartNumber      
  LEFT JOIN tblInvLocBinSec ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = tblInvExtBin.strLocName AND ((tblInvLocBinSec.strUserName = @SQUserName) OR (@SQUserName IS NULL))  
  WHERE ((tblInvExtBin.strLocName = @SQstrLocationName) OR (@SQstrLocationName IS NULL))    
  AND ((tblInvLocBin.strBinCode = @SQBinCode) OR (@SQBinCode IS NULL))    
  AND ((tblInvExtBin.strPartNumber = @SQstrPartNUmber) OR (@SQstrPartNUmber IS NULL))    
  AND ((tblInvExtBin.strLocName LIKE '%' + @SQSearchText + '%' OR tblInvLocBin.strBinCode LIKE '%' + @SQSearchText + '%' OR tblInvExtBin.strPartNumber LIKE '%' + @SQSearchText + '%') OR (@SQSearchText IS NULL))    
  END      
  ELSE      
  BEGIN      
  SELECT ISNULL(tblInvExtBin.strPartNumber, @SQstrPartNUmber) strPartNumber      
  ,ISNULL(tblInvExtBin.strLocName, tblInvLocBin.strLocName) strLocName      
  ,ISNULL(tblInvExtBin.lngBinId, tblInvLocBin.lngId) lngBinId      
  ,ISNULL(decOnHand, 0) decAvail      
  ,ISNULL(decAlloc, 0) decAlloc      
  ,ISNULL(decOnHand, 0) decOnHand      
  ,ISNULL(decMaximumQty, 0) decMaximumQty      
  ,ISNULL(bitAllowed, 0) bitAllowed      
  ,ISNULL(bitDefault, 0) bitDefault      
  ,strDescription      
  ,tblInvLocBin.strBinCode      
 ,IsAllowEditing = CAST(0 AS BIT) 
  ,intItemType = ISNULL(tblInv.intType, 1)      
  ,(Select TOP 1 dteExpiryDate FROM tblInvLotExt WHere tblInvLotExt.decQty > 0 AND tblInvLotExt.lngBinID = tblInvExtBin.lngBinID AND tblInvLotExt.strLocName = tblInvExtBin.strLocName       
  AND tblInvLotExt.strPartNumber = tblInvExtBin.strPartNumber Order by dteExpiryDate ASC) AS ExpiryDate      
  ,tblInvLocBin.bitPickingBin AS IsPickingBin,@PickingBinId AS PickingBinId   
  ,ISNULL(tblInvLocBin.bitStockingBin,0) As bitStockingBin      
  FROM tblInvLocBin      
  LEFT JOIN tblInvExtBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId      
  AND tblInvLocBin.strLocName = tblInvExtBin.strLocName      
  AND tblInvExtBin.strPartNumber = @SQstrPartNUmber      
  LEFT JOIN tblInv ON tblInv.strPartNumber = ISNULL(tblInvExtBin.strPartNumber, @SQstrPartNUmber)      
  LEFT JOIN tblInvLocBinSec ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = tblInvExtBin.strLocName AND ((tblInvLocBinSec.strUserName = @SQUserName) OR (@SQUserName IS NULL))     
  WHERE tblInvLocBin.strLocName = @SQstrLocationName  
  AND tblInvLocBin.bitInactive = 0      
  AND ((tblInvLocBin.strBinCode = @SQBinCode) OR (@SQBinCode IS NULL))   
  AND ((tblInvLocBin.strLocName LIKE '%' + @SQSearchText + '%' OR tblInvLocBin.strBinCode LIKE '%' + @SQSearchText + '%') OR (@SQSearchText IS NULL))    
  END      
 END    
 ELSE    
 BEGIN    
   IF @SQbitAllowed = 1  
 BEGIN  
  
  ;WITH CTE AS (SELECT tblInvExtBin.strPartNumber    
   ,tblInvExtBin.strLocName  
   ,tblInvExtBin.lngBinID  
   ,tblInvExtBin.decOnHand AS decAvail  
   ,tblInvExtBin.decAlloc  
   ,tblInvExtBin.decOnHand  
   ,tblInvExtBin.decMaximumQty  
   ,tblInvExtBin.bitAllowed  
   ,tblInvExtBin.bitDefault  
   ,strDescription  
   ,tblInvLocBin.strBinCode  
   ,IsAllowEditing = CAST(0 AS BIT)
   ,intItemType = CAST(tblInv.intType AS int)
   ,(Select TOP 1 dteExpiryDate FROM tblInvLotExt WHere tblInvLotExt.decQty > 0 AND tblInvLotExt.lngBinID = tblInvExtBin.lngBinID AND tblInvLotExt.strLocName = tblInvExtBin.strLocName   
    AND tblInvLotExt.strPartNumber = tblInvExtBin.strPartNumber Order by dteExpiryDate ASC) AS ExpiryDate  
   ,tblInvLocBin.bitPickingBin AS IsPickingBin
   ,ISNULL(tblInvLocBin.bitStockingBin,0) As bitStockingBin  
  FROM tblInvExtBin  
  INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId AND tblInvLocBin.strLocName = tblInvExtBin.strLocName  AND bitInactive = 0    
  INNER JOIN tblInv ON tblInv.strPartNumber = tblInvExtBin.strPartNumber  
  LEFT JOIN tblInvLocBinSec ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = tblInvExtBin.strLocName AND ((tblInvLocBinSec.strUserName = @SQUserName) OR (@SQUserName IS NULL))  
  WHERE ((tblInvExtBin.strLocName = @SQstrLocationName) OR (@SQstrLocationName IS NULL))  
   AND ((tblInvLocBin.strBinCode = @SQBinCode) OR (@SQBinCode IS NULL))  
   AND ((tblInvExtBin.strPartNumber = @SQstrPartNUmber) OR (@SQstrPartNUmber IS NULL))  
   AND ((tblInvExtBin.strLocName LIKE '%' + @SQSearchText + '%' OR tblInvLocBin.strBinCode LIKE '%' + @SQSearchText + '%' OR tblInvExtBin.strPartNumber LIKE '%' + @SQSearchText + '%') OR (@SQSearchText IS NULL)))   
  Select DISTINCT CTE.lngBinID,*,ISNULL((Select TOP 1 tblInvLocBin.lngID From tblInvLocBin WHERE CTE.strLocName = tblInvLocBin.strLocName AND (bitPickingBin = 1 OR bitStockingBin = 1)),0) AS PickingBinId   
  from CTE    
   Order BY ExpiryDate,strBinCode  
 END  
 ELSE  
 BEGIN  
  ;WITH CTE AS (SELECT ISNULL(tblInvExtBin.strPartNumber, @SQstrPartNUmber) strPartNumber    
   ,ISNULL(tblInvExtBin.strLocName, tblInvLocBin.strLocName) strLocName  
   ,ISNULL(tblInvExtBin.lngBinId, tblInvLocBin.lngId) lngBinId  
   ,ISNULL(decOnHand, 0) decAvail  
   ,ISNULL(decAlloc, 0) decAlloc  
   ,ISNULL(decOnHand, 0) decOnHand  
   ,ISNULL(decMaximumQty, 0) decMaximumQty  
   ,ISNULL(bitAllowed, 0) bitAllowed  
   ,ISNULL(bitDefault, 0) bitDefault  
   ,strDescription  
   ,tblInvLocBin.strBinCode  
   ,IsAllowEditing = CAST(0 AS BIT)
   ,intItemType = ISNULL(tblInv.intType, 1)  
   ,(Select TOP 1 dteExpiryDate FROM tblInvLotExt WHere tblInvLotExt.decQty > 0 AND tblInvLotExt.lngBinID = tblInvExtBin.lngBinID AND tblInvLotExt.strLocName = tblInvExtBin.strLocName   
  AND tblInvLotExt.strPartNumber = tblInvExtBin.strPartNumber Order by dteExpiryDate ASC) AS ExpiryDate  
  ,tblInvLocBin.bitPickingBin AS IsPickingBin
  ,ISNULL(tblInvLocBin.bitStockingBin,0) As bitStockingBin 
  FROM tblInvLocBin 
  LEFT JOIN tblInvExtBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId  
   AND tblInvLocBin.strLocName = tblInvExtBin.strLocName  
   AND tblInvExtBin.strPartNumber = @SQstrPartNUmber  
  LEFT JOIN tblInv ON tblInv.strPartNumber = ISNULL(tblInvExtBin.strPartNumber, @SQstrPartNUmber)  
  LEFT JOIN tblInvLocBinSec ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = tblInvLocBin.strLocName AND ((tblInvLocBinSec.strUserName = @SQUserName) OR (@SQUserName IS NULL))  
  WHERE ((tblInvLocBin.strLocName = @SQstrLocationName) OR (@SQstrLocationName IS NULL))    
   AND tblInvLocBin.bitInactive = 0  
   AND ((tblInvLocBin.strBinCode = @SQBinCode) OR (@SQBinCode IS NULL))    
   AND ((tblInvLocBin.strLocName LIKE '%' + @SQSearchText + '%' OR tblInvLocBin.strBinCode LIKE '%' + @SQSearchText + '%') OR (@SQSearchText IS NULL)))  
  SELECT DISTINCT CTE.lngBinID,*,ISNULL((Select TOP 1 tblInvLocBin.lngID From tblInvLocBin WHERE CTE.strLocName = tblInvLocBin.strLocName AND (bitPickingBin = 1 OR bitStockingBin = 1)),0) AS PickingBinId   
  FROM CTE Order BY ExpiryDate,strBinCode  
 END  
 END      
END

GO
/****** Object:  StoredProcedure [dbo].[prInvBin_Search_Location]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[prInvBin_Search_Location]    Script Date: 03-07-2018 09:54:00 AM ******/
CREATE PROCEDURE [dbo].[prInvBin_Search_Location]
	@SQstrLocationName nvarchar(10) = NULL
AS
BEGIN
	SET NOCOUNT ON;
	SELECT	tblInvExtBin.strPartNumber,
			tblInv.strDesc,
			tblInvLocBin.strBinCode,
			tblInvLocBin.strDescription AS strBinDesc,
			CASE bitAllowed WHEN 1 THEN 'True' ELSE 'False' END As bitAllowed,
			CASE tblInvLocBin.bitPickingBin WHEN 1 THEN 'True' ELSE 'False' END As bitPickingBin,
			CASE tblInvLocBin.bitReceivingBin WHEN 1 THEN 'True' ELSE 'False' END As bitReceivingBin,
			CASE tblInvLocBin.bitProductionBin WHEN 1 THEN 'True' ELSE 'False' END As bitProductionBin,
			CASE tblInvLocBin.bitStockingBin WHEN 1 THEN 'True' ELSE 'False' END As bitStockingBin,			
			tblInvExtBin.decMaximumQty
	FROM tblInvExtBin 
	INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId AND tblInvLocBin.strLocName=tblInvExtBin.strLocName
	INNER JOIN tblInv ON tblInv.strPartNumber = tblInvExtBin.strPartNumber
	WHERE ((tblInvExtBin.strLocName = @SQstrLocationName) OR (@SQstrLocationName IS NULL))
	AND (tblInv.intType = 1)
END
GO
/****** Object:  StoredProcedure [dbo].[prInvBinExt_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prInvBinExt_Delete]
	-- Add the parameters for the stored procedure here
	@SQstrPartNumber nvarchar(50),
	@SQstrLocationName	nvarchar(10),
	@SQlngBinId bigint
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	DELETE FROM tblInvExtBin
	WHERE strPartNumber = @SQstrPartNumber AND strLocName = @SQstrLocationName AND lngBinId = @SQlngBinId
END

GO
/****** Object:  StoredProcedure [dbo].[prInvBinExt_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prInvBinExt_Save]
	-- Add the parameters for the stored procedure here
	@SQstrPartNumber nvarchar(50),
	@SQstrLocationName	nvarchar(10),
	@SQlngBinId bigint,
	@SQdecAvail money,
	@SQdecAlloc money,
	@SQdecOnHand money,
	@SQdecMaximumQty money,
	@SQbitAllowed	bit,
	@SQbitDefault bit
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	IF (SELECT COUNT(*) FROM  tblInvExtBin WHERE strPartNumber = @SQstrPartNumber AND strLocName = @SQstrLocationName AND lngBinId = @SQlngBinId) = 0
		BEGIN
			INSERT INTO [dbo].[tblInvExtBin]
				   ([strPartNumber]
				   ,[strLocName]
				   ,[lngBinId]
				   ,[decAvail]
				   ,[decAlloc]
				   ,[decOnHand]
				   ,[decMaximumQty]
				   ,[bitAllowed]
				   ,[bitDefault])
			 VALUES
				   (@SQstrPartNumber,@SQstrLocationName,@SQlngBinId,@SQdecAvail,@SQdecAlloc,@SQdecOnHand,@SQdecMaximumQty,@SQbitAllowed,@SQbitDefault)
		END
	ELSE
		BEGIN
			
			IF @SQbitDefault = 1
			BEGIN
			UPDATE [dbo].[tblInvExtBin]
			   SET 
				  [bitDefault] = 0
			 WHERE 
				strPartNumber = @SQstrPartNumber 
				AND strLocName = @SQstrLocationName 
				AND [bitDefault] = 1
			End

			UPDATE [dbo].[tblInvExtBin]
			   SET 
				   [decAvail] = @SQdecAvail
				  ,[decAlloc] = @SQdecAlloc
				  ,[decOnHand] = @SQdecOnHand
				  ,[decMaximumQty] = @SQdecMaximumQty
				  ,[bitAllowed] = @SQbitAllowed
				  ,[bitDefault] = @SQbitDefault
			 WHERE 
				strPartNumber = @SQstrPartNumber 
				AND strLocName = @SQstrLocationName 
				AND lngBinId = @SQlngBinId
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prInvBinProduction_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prInvBinProduction_Search]
	 @SQstrLocationName NVARCHAR(10) = NULL
	,@SQBinCode NVARCHAR(50) = NULL
	,@SQUserName NVARCHAR(50) = NULL
	,@SQstrPartNUmber NVARCHAR(50) = NULL
	,@SQSearchText NVARCHAR(100) = NULL
	,@SQbitAllowed BIT = NULL
	,@SQbitDefault BIT = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @SQstrLocationName is not NULL 
	BEGIN 
		DECLARE @Count INT 
		SET @Count = (SELECT Count(1) from tblInvLocSec Where strLocName = @SQstrLocationName)

		IF	@Count = 0 
		BEGIN
			SET @SQUserName = NULL
		END
	END

	IF @SQbitAllowed = 1
	BEGIN

		;WITH CTE AS (SELECT tblInvExtBin.strPartNumber
			,tblInvExtBin.strLocName
			,tblInvExtBin.lngBinID
			,tblInvExtBin.decOnHand AS decAvail
			,tblInvExtBin.decAlloc
			,tblInvExtBin.decOnHand	
			,tblInvExtBin.decMaximumQty
			,tblInvExtBin.bitAllowed
			,tblInvExtBin.bitDefault
			,strDescription
			,tblInvLocBin.strBinCode
			,IsAllowEditing = CAST((
					CASE 
						WHEN (
								SELECT count(*)
								FROM tblInvTrackingDTBin
								INNER JOIN tblInvTrackingDT ON tblInvTrackingDT.lngInvTrackID = tblInvTrackingDTBin.lngInvTrackID
									AND tblInvTrackingDT.intLineNo = tblInvTrackingDTBin.intLineNo
								WHERE lngBinID = tblInvLocBin.lngId
									AND tblInvTrackingDT.strPartNumber = ISNULL(tblInvExtBin.strPartNumber, @SQstrPartNUmber)
								) > 0
							THEN 0
						ELSE 1
						END
					) AS BIT)
			,intItemType = tblInv.intType
			,(Select TOP 1 dteExpiryDate FROM tblInvLotExt WHere tblInvLotExt.decQty > 0 AND tblInvLotExt.lngBinID = tblInvExtBin.lngBinID AND tblInvLotExt.strLocName = tblInvExtBin.strLocName 
				AND tblInvLotExt.strPartNumber = tblInvExtBin.strPartNumber Order by dteExpiryDate ASC) AS ExpiryDate
				,tblInvLocBin.bitPickingBin AS IsPickingBin
				,ISNULL(tblInvLocBin.bitProductionBin,0) As bitProductionBin
				,ISNULL(tblInvLocBin.bitStockingBin,0) As bitStockingBin
		FROM tblInvExtBin
		INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId
			AND tblInvLocBin.strLocName = tblInvExtBin.strLocName
			AND bitInactive = 0
		INNER JOIN tblInv ON tblInv.strPartNumber = tblInvExtBin.strPartNumber
		LEFT JOIN tblInvLocBinSec ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = tblInvExtBin.strLocName AND ((tblInvLocBinSec.strUserName = @SQUserName) OR (@SQUserName IS NULL))
		WHERE (
				(tblInvExtBin.strLocName = @SQstrLocationName)
				OR (@SQstrLocationName IS NULL)
				)
			AND (
				(tblInvLocBin.strBinCode = @SQBinCode)
				OR (@SQBinCode IS NULL)
				)
			AND (
				(tblInvExtBin.strPartNumber = @SQstrPartNUmber)
				OR (@SQstrPartNUmber IS NULL)
				)
			AND
			--((bitAllowed IN(1,@SQbitAllowed)) OR (@SQbitAllowed IS NULL)) AND
			--((bitDefault = @SQbitDefault) OR (@SQbitDefault IS NULL)) AND
			(
				(
					tblInvExtBin.strLocName LIKE '%' + @SQSearchText + '%'
					OR tblInvLocBin.strBinCode LIKE '%' + @SQSearchText + '%'
					OR tblInvExtBin.strPartNumber LIKE '%' + @SQSearchText + '%'
					)
				OR (@SQSearchText IS NULL)
				)) 
		Select DISTINCT CTE.lngBinID,*,ISNULL((Select TOP 1 tblInvLocBin.lngID From tblInvLocBin WHERE CTE.strLocName = tblInvLocBin.strLocName AND (bitProductionBin = 1 OR bitStockingBin = 1)),0) AS ProductionBinId from CTE 
		Order BY ExpiryDate,strBinCode
	END
	ELSE
	BEGIN
		;WITH CTE AS (SELECT ISNULL(tblInvExtBin.strPartNumber, @SQstrPartNUmber) strPartNumber
			,ISNULL(tblInvExtBin.strLocName, tblInvLocBin.strLocName) strLocName
			,ISNULL(tblInvExtBin.lngBinId, tblInvLocBin.lngId) lngBinId
			,ISNULL(decOnHand, 0) decAvail
			,ISNULL(decAlloc, 0) decAlloc
			,ISNULL(decOnHand, 0) decOnHand
			,ISNULL(decMaximumQty, 0) decMaximumQty
			,ISNULL(bitAllowed, 0) bitAllowed
			,ISNULL(bitDefault, 0) bitDefault
			,strDescription
			,tblInvLocBin.strBinCode
			,IsAllowEditing = CAST(IsNull((
						CASE 
							WHEN (
									SELECT count(*)
									FROM tblInvExtBin
									WHERE strPartNumber = @SQstrPartNUmber
									) > 0
								THEN (
										CASE 
											WHEN (
													SELECT count(*)
													FROM tblInvTrackingDTBin
													INNER JOIN tblInvTrackingDT ON tblInvTrackingDT.lngInvTrackID = tblInvTrackingDTBin.lngInvTrackID
														AND tblInvTrackingDT.intLineNo = tblInvTrackingDTBin.intLineNo
													WHERE lngBinID = tblInvLocBin.lngId
														AND tblInvTrackingDT.strPartNumber = ISNULL(tblInvExtBin.strPartNumber, @SQstrPartNUmber)
													) > 0
												THEN 0
											ELSE 1
											END
										)
							ELSE 1
							END
						), 1) AS BIT)
			,intItemType = ISNULL(tblInv.intType, 1)
			,(Select TOP 1 dteExpiryDate FROM tblInvLotExt WHere tblInvLotExt.decQty > 0 AND tblInvLotExt.lngBinID = tblInvExtBin.lngBinID AND tblInvLotExt.strLocName = tblInvExtBin.strLocName 
		AND tblInvLotExt.strPartNumber = tblInvExtBin.strPartNumber Order by dteExpiryDate ASC) AS ExpiryDate
		,tblInvLocBin.bitPickingBin AS IsPickingBin
		,ISNULL(tblInvLocBin.bitProductionBin,0) As bitProductionBin
		,ISNULL(tblInvLocBin.bitStockingBin,0) As bitStockingBin
		FROM tblInvLocBin
		LEFT JOIN tblInvExtBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId
			AND tblInvLocBin.strLocName = tblInvExtBin.strLocName
			AND tblInvExtBin.strPartNumber = @SQstrPartNUmber
		LEFT JOIN tblInv ON tblInv.strPartNumber = ISNULL(tblInvExtBin.strPartNumber, @SQstrPartNUmber)
		LEFT JOIN tblInvLocBinSec ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = tblInvLocBin.strLocName AND ((tblInvLocBinSec.strUserName = @SQUserName) OR (@SQUserName IS NULL))
		WHERE (
				(tblInvLocBin.strLocName = @SQstrLocationName)
				OR (@SQstrLocationName IS NULL)
				)
			AND tblInvLocBin.bitInactive = 0
			AND (
				(tblInvLocBin.strBinCode = @SQBinCode)
				OR (@SQBinCode IS NULL)
				)
			AND (
				(
					tblInvLocBin.strLocName LIKE '%' + @SQSearchText + '%'
					OR tblInvLocBin.strBinCode LIKE '%' + @SQSearchText + '%'
					)
				OR (@SQSearchText IS NULL)
				))
		SELECT DISTINCT CTE.lngBinID,*,ISNULL((Select TOP 1 tblInvLocBin.lngID From tblInvLocBin WHERE CTE.strLocName = tblInvLocBin.strLocName AND (bitProductionBin = 1 OR bitStockingBin = 1)),0) AS ProductionBinId FROM CTE 
		Order BY ExpiryDate,strBinCode
	END
END
GO
/****** Object:  StoredProcedure [dbo].[prInvBinReceiving_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prInvBinReceiving_Search]  
  @SQstrLocationName NVARCHAR(10) = NULL  
 ,@SQBinCode NVARCHAR(50) = NULL  
 ,@SQUserName NVARCHAR(50) = NULL  
 ,@SQstrPartNUmber NVARCHAR(50) = NULL  
 ,@SQSearchText NVARCHAR(100) = NULL  
 ,@SQbitAllowed BIT = NULL  
 ,@SQbitDefault BIT = NULL  
AS  
BEGIN  
 SET NOCOUNT ON;  
  
 IF @SQstrLocationName is not NULL   
 BEGIN   
	DECLARE @ReceivingBinId Bigint = 0     
	SET @ReceivingBinId=ISNULL((Select TOP 1 tblInvLocBin.lngID From tblInvLocBin (NOLOCK) WHERE tblInvLocBin.strLocName=@SQstrLocationName AND (bitReceivingBin = 1 OR bitStockingBin = 1)),0)    

	DECLARE @Count INT   
	SET @Count = (SELECT Count(1) from tblInvLocSec (NOLOCK) Where strLocName = @SQstrLocationName)  
  
	IF	@Count = 0   
	BEGIN  
	SET @SQUserName = NULL  
	END  
  
	 IF @SQbitAllowed = 1  
	 BEGIN  
  
	  SELECT tblInvExtBin.strPartNumber  
	   ,tblInvExtBin.strLocName  
	   ,tblInvExtBin.lngBinID  
	   ,tblInvExtBin.decOnHand AS decAvail  
	   ,tblInvExtBin.decAlloc  
	   ,tblInvExtBin.decOnHand   
	   ,tblInvExtBin.decMaximumQty  
	   ,tblInvExtBin.bitAllowed  
	   ,tblInvExtBin.bitDefault  
	   ,strDescription  
	   ,tblInvLocBin.strBinCode  
	   ,IsAllowEditing = CAST(1 AS BIT)  
	   ,intItemType = tblInv.intType  
	   ,(Select TOP 1 dteExpiryDate FROM tblInvLotExt (NOLOCK) WHere tblInvLotExt.decQty > 0 AND tblInvLotExt.lngBinID = tblInvExtBin.lngBinID AND tblInvLotExt.strLocName = tblInvExtBin.strLocName   
		AND tblInvLotExt.strPartNumber = tblInvExtBin.strPartNumber Order by dteExpiryDate ASC) AS ExpiryDate  
		,tblInvLocBin.bitPickingBin AS IsPickingBin  
		,ISNULL(tblInvLocBin.bitReceivingBin,0) As bitReceivingBin  
		,ISNULL(tblInvLocBin.bitStockingBin,0) As bitStockingBin 
		,@ReceivingBinId 
	  FROM tblInvExtBin (NOLOCK) 
	  INNER JOIN tblInvLocBin (NOLOCK) ON tblInvExtBin.lngBinId = tblInvLocBin.lngId AND tblInvLocBin.strLocName = tblInvExtBin.strLocName AND bitInactive = 0  
	  INNER JOIN tblInv (NOLOCK) ON tblInv.strPartNumber = tblInvExtBin.strPartNumber  
	  LEFT JOIN tblInvLocBinSec (NOLOCK) ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = tblInvExtBin.strLocName AND ((tblInvLocBinSec.strUserName = @SQUserName) OR (@SQUserName IS NULL))   
	  WHERE ((tblInvExtBin.strLocName = @SQstrLocationName) OR (@SQstrLocationName IS NULL))  
	   AND ((tblInvLocBin.strBinCode = @SQBinCode) OR (@SQBinCode IS NULL))  
	   AND ((tblInvExtBin.strPartNumber = @SQstrPartNUmber) OR (@SQstrPartNUmber IS NULL))  
	   AND ((tblInvExtBin.strLocName LIKE '%' + @SQSearchText + '%' OR tblInvLocBin.strBinCode LIKE '%' + @SQSearchText + '%' OR tblInvExtBin.strPartNumber LIKE '%' + @SQSearchText + '%') OR (@SQSearchText IS NULL))
	   Order BY ExpiryDate,strBinCode 
	 END  
	 ELSE  
	 BEGIN  
	  SELECT ISNULL(tblInvExtBin.strPartNumber, @SQstrPartNUmber) strPartNumber  
	   ,ISNULL(tblInvExtBin.strLocName, tblInvLocBin.strLocName) strLocName  
	   ,ISNULL(tblInvExtBin.lngBinId, tblInvLocBin.lngId) lngBinId  
	   ,ISNULL(decOnHand, 0) decAvail  
	   ,ISNULL(decAlloc, 0) decAlloc  
	   ,ISNULL(decOnHand, 0) decOnHand  
	   ,ISNULL(decMaximumQty, 0) decMaximumQty  
	   ,ISNULL(bitAllowed, 0) bitAllowed  
	   ,ISNULL(bitDefault, 0) bitDefault  
	   ,strDescription  
	   ,tblInvLocBin.strBinCode  
	   ,IsAllowEditing = CAST(1 AS BIT)   
	   ,intItemType = ISNULL(tblInv.intType, 1)  
	   ,(Select TOP 1 dteExpiryDate FROM tblInvLotExt (NOLOCK) WHere tblInvLotExt.decQty > 0 AND tblInvLotExt.lngBinID = tblInvExtBin.lngBinID AND tblInvLotExt.strLocName = tblInvExtBin.strLocName   
	  AND tblInvLotExt.strPartNumber = tblInvExtBin.strPartNumber Order by dteExpiryDate ASC) AS ExpiryDate  
	  ,tblInvLocBin.bitPickingBin AS IsPickingBin  
	  ,ISNULL(tblInvLocBin.bitReceivingBin,0) As bitReceivingBin  
	  ,ISNULL(tblInvLocBin.bitStockingBin,0) As bitStockingBin,
	  @ReceivingBinId  
	  FROM tblInvLocBin (NOLOCK) 
	  LEFT JOIN tblInvExtBin (NOLOCK) ON tblInvExtBin.lngBinId = tblInvLocBin.lngId  
	   AND tblInvLocBin.strLocName = tblInvExtBin.strLocName  
	   AND tblInvExtBin.strPartNumber = @SQstrPartNUmber  
	  LEFT JOIN tblInv (NOLOCK) ON tblInv.strPartNumber = ISNULL(tblInvExtBin.strPartNumber, @SQstrPartNUmber)  
	  LEFT JOIN tblInvLocBinSec (NOLOCK) ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = tblInvLocBin.strLocName  AND  ((tblInvLocBinSec.strUserName = @SQUserName) OR (@SQUserName IS NULL)) 
	  WHERE ((tblInvLocBin.strLocName = @SQstrLocationName) OR (@SQstrLocationName IS NULL))  
	   AND tblInvLocBin.bitInactive = 0  
	   AND ((tblInvLocBin.strBinCode = @SQBinCode) OR (@SQBinCode IS NULL))  
	   AND ((tblInvLocBin.strLocName LIKE '%' + @SQSearchText + '%' OR tblInvLocBin.strBinCode LIKE '%' + @SQSearchText + '%') OR (@SQSearchText IS NULL))
	  Order BY ExpiryDate,strBinCode  
	 END  
 END  
 ELSE
 BEGIN
	IF @SQbitAllowed = 1  
	 BEGIN  
  
	  ;WITH CTE AS (SELECT tblInvExtBin.strPartNumber  
	   ,tblInvExtBin.strLocName  
	   ,tblInvExtBin.lngBinID  
	   ,tblInvExtBin.decOnHand AS decAvail  
	   ,tblInvExtBin.decAlloc  
	   ,tblInvExtBin.decOnHand   
	   ,tblInvExtBin.decMaximumQty  
	   ,tblInvExtBin.bitAllowed  
	   ,tblInvExtBin.bitDefault  
	   ,strDescription  
	   ,tblInvLocBin.strBinCode  
	   ,IsAllowEditing = CAST((  
		 CASE   
		  WHEN (  
			SELECT count(*)  
			FROM tblInvTrackingDTBin (NOLOCK) 
			INNER JOIN tblInvTrackingDT (NOLOCK) ON tblInvTrackingDT.lngInvTrackID = tblInvTrackingDTBin.lngInvTrackID  
			 AND tblInvTrackingDT.intLineNo = tblInvTrackingDTBin.intLineNo  
			WHERE lngBinID = tblInvLocBin.lngId  
			 AND tblInvTrackingDT.strPartNumber = ISNULL(tblInvExtBin.strPartNumber, @SQstrPartNUmber)  
			) > 0  
		   THEN 0  
		  ELSE 1  
		  END  
		 ) AS BIT)  
	   ,intItemType = tblInv.intType  
	   ,(Select TOP 1 dteExpiryDate FROM tblInvLotExt (NOLOCK) WHere tblInvLotExt.decQty > 0 AND tblInvLotExt.lngBinID = tblInvExtBin.lngBinID AND tblInvLotExt.strLocName = tblInvExtBin.strLocName   
		AND tblInvLotExt.strPartNumber = tblInvExtBin.strPartNumber Order by dteExpiryDate ASC) AS ExpiryDate  
		,tblInvLocBin.bitPickingBin AS IsPickingBin  
		,ISNULL(tblInvLocBin.bitReceivingBin,0) As bitReceivingBin  
		,ISNULL(tblInvLocBin.bitStockingBin,0) As bitStockingBin  
	  FROM tblInvExtBin (NOLOCK) 
	  INNER JOIN tblInvLocBin (NOLOCK) ON tblInvExtBin.lngBinId = tblInvLocBin.lngId  
	   AND tblInvLocBin.strLocName = tblInvExtBin.strLocName  
	   AND bitInactive = 0  
	  INNER JOIN tblInv (NOLOCK) ON tblInv.strPartNumber = tblInvExtBin.strPartNumber  
	  LEFT JOIN tblInvLocBinSec (NOLOCK) ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = tblInvExtBin.strLocName  AND ((tblInvLocBinSec.strUserName = @SQUserName) OR (@SQUserName IS NULL))  
	  WHERE ((tblInvExtBin.strLocName = @SQstrLocationName) OR (@SQstrLocationName IS NULL))  
	   AND ((tblInvLocBin.strBinCode = @SQBinCode) OR (@SQBinCode IS NULL))  
	   AND ((tblInvExtBin.strPartNumber = @SQstrPartNUmber)  OR (@SQstrPartNUmber IS NULL))  
	   AND ((tblInvExtBin.strLocName LIKE '%' + @SQSearchText + '%'  OR tblInvLocBin.strBinCode LIKE '%' + @SQSearchText + '%'  OR tblInvExtBin.strPartNumber LIKE '%' + @SQSearchText + '%') OR (@SQSearchText IS NULL)))   
	  Select DISTINCT CTE.lngBinID,*,ISNULL((Select TOP 1 tblInvLocBin.lngID From tblInvLocBin (NOLOCK) WHERE CTE.strLocName = tblInvLocBin.strLocName AND (bitReceivingBin = 1 OR bitStockingBin = 1)),0) AS ReceivingBinId from CTE  
	  Order BY ExpiryDate,strBinCode  
	 END  
	 ELSE  
	 BEGIN  
	  ;WITH CTE AS (SELECT ISNULL(tblInvExtBin.strPartNumber, @SQstrPartNUmber) strPartNumber  
	   ,ISNULL(tblInvExtBin.strLocName, tblInvLocBin.strLocName) strLocName  
	   ,ISNULL(tblInvExtBin.lngBinId, tblInvLocBin.lngId) lngBinId  
	   ,ISNULL(decOnHand, 0) decAvail  
	   ,ISNULL(decAlloc, 0) decAlloc  
	   ,ISNULL(decOnHand, 0) decOnHand  
	   ,ISNULL(decMaximumQty, 0) decMaximumQty  
	   ,ISNULL(bitAllowed, 0) bitAllowed  
	   ,ISNULL(bitDefault, 0) bitDefault  
	   ,strDescription  
	   ,tblInvLocBin.strBinCode  
	   ,IsAllowEditing = CAST(IsNull((  
		  CASE   
		   WHEN (  
			 SELECT count(*)  
			 FROM tblInvExtBin  
			 WHERE strPartNumber = @SQstrPartNUmber  
			 ) > 0  
			THEN (  
			  CASE   
			   WHEN (  
				 SELECT count(*)  
				 FROM tblInvTrackingDTBin (NOLOCK)  
				 INNER JOIN tblInvTrackingDT (NOLOCK) ON tblInvTrackingDT.lngInvTrackID = tblInvTrackingDTBin.lngInvTrackID  
				  AND tblInvTrackingDT.intLineNo = tblInvTrackingDTBin.intLineNo  
				 WHERE lngBinID = tblInvLocBin.lngId  
				  AND tblInvTrackingDT.strPartNumber = ISNULL(tblInvExtBin.strPartNumber, @SQstrPartNUmber)  
				 ) > 0  
				THEN 0  
			   ELSE 1  
			   END  
			  )  
		   ELSE 1  
		   END  
		  ), 1) AS BIT)  
	   ,intItemType = ISNULL(tblInv.intType, 1)  
	   ,(Select TOP 1 dteExpiryDate FROM tblInvLotExt (NOLOCK) WHere tblInvLotExt.decQty > 0 AND tblInvLotExt.lngBinID = tblInvExtBin.lngBinID AND tblInvLotExt.strLocName = tblInvExtBin.strLocName   
	  AND tblInvLotExt.strPartNumber = tblInvExtBin.strPartNumber Order by dteExpiryDate ASC) AS ExpiryDate  
	  ,tblInvLocBin.bitPickingBin AS IsPickingBin  
	  ,ISNULL(tblInvLocBin.bitReceivingBin,0) As bitReceivingBin  
	  ,ISNULL(tblInvLocBin.bitStockingBin,0) As bitStockingBin  
	  FROM tblInvLocBin (NOLOCK)
	  LEFT JOIN tblInvExtBin (NOLOCK) ON tblInvExtBin.lngBinId = tblInvLocBin.lngId  
	   AND tblInvLocBin.strLocName = tblInvExtBin.strLocName  
	   AND tblInvExtBin.strPartNumber = @SQstrPartNUmber  
	  LEFT JOIN tblInv (NOLOCK) ON tblInv.strPartNumber = ISNULL(tblInvExtBin.strPartNumber, @SQstrPartNUmber)  
	  LEFT JOIN tblInvLocBinSec (NOLOCK) ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = tblInvLocBin.strLocName AND ((tblInvLocBinSec.strUserName = @SQUserName) OR (@SQUserName IS NULL)) 
	  WHERE ((tblInvLocBin.strLocName = @SQstrLocationName) OR (@SQstrLocationName IS NULL))  
	   AND tblInvLocBin.bitInactive = 0  
	   AND ((tblInvLocBin.strBinCode = @SQBinCode) OR (@SQBinCode IS NULL))  
	   AND ((tblInvLocBin.strLocName LIKE '%' + @SQSearchText + '%' OR tblInvLocBin.strBinCode LIKE '%' + @SQSearchText + '%') OR (@SQSearchText IS NULL)))  
	  SELECT DISTINCT CTE.lngBinID,*,ISNULL((Select TOP 1 tblInvLocBin.lngID From tblInvLocBin (NOLOCK) WHERE CTE.strLocName = tblInvLocBin.strLocName AND (bitReceivingBin = 1 OR bitStockingBin = 1)),0) AS ReceivingBinId FROM CTE  
	  Order BY ExpiryDate,strBinCode  
	 END 
 END
END  
GO
/****** Object:  StoredProcedure [dbo].[prInvCategory_DeleteSubCategoryByCategory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prInvCategory_DeleteSubCategoryByCategory]
@SQstrCategory nvarchar(50),
@SQstrParentCategory nvarchar(50)
AS
BEGIN
	SET NOCOUNT ON;
	DELETE FROM tblInvSubCat WHERE strCategory = @SQstrCategory and strParentCategory=@SQstrParentCategory
END
GO
/****** Object:  StoredProcedure [dbo].[prInvCategory_DeleteSubCategoryGroupByCategory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prInvCategory_DeleteSubCategoryGroupByCategory]
@SQstrCategory nvarchar(50),
@SQstrParentSubCategory nvarchar(50),
@SQstrParentCategory nvarchar(50)

AS
BEGIN
	SET NOCOUNT ON;
	DELETE FROM tblInvGroupSubCat WHERE strCategory = @SQstrCategory and strParentSubCategory=@SQstrParentSubCategory and strParentCategory=@SQstrParentCategory
END
GO
/****** Object:  StoredProcedure [dbo].[prInventory_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prInventory_SelectAll]
	AS
	BEGIN
		SELECT [strPartNumber]
		,[strDesc]
		,[intType]
		,[strCategory]
		,[intExpAcct]
		,[decCostOnPO]
		,[bitUseLPPOnPO]
		,[intReorderQty]
		,[strBuyUnit]
		,[strStockUnit]
		,[decBuyToStock]
		,[bitAllowPriceChg]
		,[dteDateLastSale]
		,[dteLastPurchase]
		,[decLastPPUnit]
		,[dteLastUpdated]
		,[bitUseBOM]
		,[intBOMQty]
		,[strAddInfo]
		,[bitInactive]
		,[decSumAvail]
		,[decSumAlloc]
		,[decSumOnHand]
		,[decSumValue]
		,[decSumOnOrder]
		,[decSumOpenQty]
		,[decSumOpenValue]
		,[decSumValYearStart]
		,[decSumQtyYearStart]
		,[decSumAmtSoldYTD]
		,[decSumAmtSoldLY]
		,[decSumQtySoldYTD]
		,[decSumQtySoldLY]
		,[decSumCOGSYTD]
		,[decSumCOGSLY]
		,[intSumNumTransYTD]
		,[intSumNumTransLY]
		,[bitAutoBuild]
		,[strField1]
		,[strField2]
		,[strField3]
		,[strField4]
		,[strField5]
		,[strField6]
		,[strBarCode]
		,[decStandardCost]
		,[bitItemNumConvUsed]
		,[strSellUnit]
		,[strSellStockUnit]
		,[decSellFromStock]
		,[strItemSegment1]
		,[strItemSegment2]
		,[strItemSegment3]
		,[strItemSegment4]
		,[strInvNumConv]
		,[bitInvSerialType]
		,[strInvSerialType]
		,[decRepairCharge]
		,[strBarCode2]
		,[bitVoucherEnabled]
		,[strVoucherCode]
		,[decDefSaleQty]
		,[strExtendedDesc]
		,[bitInvExtDescOnSI]
		,[bitInvExtDescOnSO]
		,[bitInvExtDescOnSQ]
		,[bitInvExtDescOnSFHQ]
		,[bitInvExtDescOnCR]
		,[bitInvExtDescOnPI]
		,[bitInvExtDescOnPO]
		,[bitInvExtDescOnPQ]
		,[bitWebstoreItem]
		,[decSumManuf]
		FROM [tblInv]
		WHERE [intType] <> 5
	END
GO
/****** Object:  StoredProcedure [dbo].[prInvImage_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prInvImage_Save]
	(
		@tvpTblInvImage tblInvImage READONLY 
	)
	AS
	BEGIN
		DELETE FROM tblInvImg WHERE Image_ID NOT IN (SELECT imageId FROM @tvpTblInvImage)
		UPDATE tblInvImg SET tblInvImg.[bitDefaultImage] = temptblInvImg.[bitDefaultImage] FROM @tvpTblInvImage temptblInvImg WHERE tblInvImg.Image_ID =  temptblInvImg.imageId 
		INSERT INTO [tblInvImg] ([strPartNumber], [imgData], [bitDefaultImage]) SELECT strPartNumber, imgData, bitDefaultImage FROM @tvpTblInvImage AS tType WHERE tType.imageId = 0
	END
GO
/****** Object:  StoredProcedure [dbo].[prInvImg_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prInvImg_Search]
	(
		@Image_ID AS INT = NULL,
		@strPartNumber AS NVARCHAR(50) = NULL,
		@bitDefaultImage AS BIGINT = NULL
	)
	AS
	BEGIN
		SELECT [Image_ID]
			,[strPartNumber]
			,[imgData]
			,[bitDefaultImage]
		FROM [tblInvImg]
		WHERE (([Image_ID] = @Image_ID) OR (@Image_ID IS NULL)) AND 
			  (([strPartNumber] = @strPartNumber) OR (@strPartNumber IS NULL)) AND 
			  (([bitDefaultImage] = @bitDefaultImage) OR (@bitDefaultImage IS NULL))
		END
GO
/****** Object:  StoredProcedure [dbo].[prInvImportDoc_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prInvImportDoc_Save]
	(
		@tblDocuments InvDocumentsTableType READONLY 
		,@startDate datetime
		,@endDate datetime
	)
	AS
	BEGIN  

		declare @tbl as table
		(
			ID nvarchar(200) default ''
			,lngDocID  bigint
		)
	
		insert into @tbl
		(ID,lngDocID)
		select tblInvoiceDoc.strInvDocID,tblDocuments.lngDocumentID from tblInvoiceDoc inner join tblDocuments on tblInvoiceDoc.strInvDocID = tblDocuments.strDocumentNumber where dteJournalDate  between @startDate and @endDate

		insert into @tbl
		(ID,lngDocID)
		select tblOrderDocDA.strOrdDADocID,tblDocuments.lngDocumentID from tblOrderDocDA inner join tblDocuments on tblOrderDocDA.strOrdDADocID = tblDocuments.strDocumentNumber where dteJournalDate between @startDate and @endDate
		
		delete from  @tbl where lngDocID is null

		--DELETE FROM tblDocuments WHERE lngDocumentID NOT IN (SELECT lngDocumentID FROM @tblDocuments ) AND strType = 'POD' 
		DELETE FROM tblDocuments WHERE lngDocumentID  IN (SELECT lngDocID FROM @tbl ) and lngDocumentID NOT IN (SELECT lngDocumentID FROM @tblDocuments ) AND strType = 'POD' 
		
		UPDATE tblDocuments 
		 SET 
		   tblDocuments.strFileName  = temptblDocuments.strFileName  
		  ,tblDocuments.strDescription =  temptblDocuments.strDescription  
		  ,tblDocuments.strExtension  =  temptblDocuments.strExtension  
		  ,tblDocuments.varFile   =  temptblDocuments.varFile   
		  ,tblDocuments.dteModified  =  temptblDocuments.dteModified  
		  ,tblDocuments.strType   =  temptblDocuments.strType   
		  ,tblDocuments.intSize   =  temptblDocuments.intSize   
		  ,tblDocuments.strUserName  =  temptblDocuments.strUserName  
		  ,tblDocuments.bitEnc   =  temptblDocuments.bitEnc    
		  ,tblDocuments.intAttachOn  =  temptblDocuments.intAttachOn  
		FROM @tblDocuments temptblDocuments 
		WHERE tblDocuments.lngDocumentID =  temptblDocuments.lngDocumentID 
		
		INSERT INTO tblDocuments 
		SELECT 
		  strDocumentNumber
		 ,strFileName
		 ,strDescription
		 ,strExtension
		 ,varFile
		 ,dteModified
		 ,strType
		 ,intSize
		 ,strUserName
		 ,bitEnc
		 ,intAttachOn
		 ,0
		 ,0
		 ,0
		 ,null
		 ,0
		 ,''
		FROM @tblDocuments WHERE lngDocumentID = 0
	
	END
	
GO
/****** Object:  StoredProcedure [dbo].[prInvIssReqDocDTBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prInvIssReqDocDTBin_Save]   
-- Add the parameters for the stored procedure here   
@SQlngId bigint,   
@SQstrInvIssReqDocID nvarchar(50),   
@SQintLineNo INT,   
@SQlngBinId bigint,   
@SQdecQty money
AS  
BEGIN   
-- SET NOCOUNT ON added to prevent extra result sets from   -- interfering with SELECT statements.   
SET NOCOUNT ON;        
-- Insert statements for procedure here   
	--IF (SELECT COUNT(*) FROM tblInvIssReqDocDTBin WHERE strInvIssReqDocID = @SQstrInvIssReqDocID AND intLineNo = @SQintLineNo) > 0    
	--	BEGIN     
	--		UPDATE [dbo].[tblInvIssReqDocDTBin]       
	--			SET 
	--				[strInvIssReqDocID] = @SQstrInvIssReqDocID,       
	--				[intLineNo] = @SQintLineNo,      
	--				[lngBinId] = @SQlngBinId,       
	--				[decQty] = @SQdecQty
	--		WHERE      
	--			[strInvIssReqDocID] = @SQstrInvIssReqDocID AND [intLineNo] = @SQintLineNo
	--	END   
	--ELSE    
	--	BEGIN     
			INSERT INTO [dbo].[tblInvIssReqDocDTBin]         
				([strInvIssReqDocID] ,[intLineNo] ,[lngBinId] ,[decQty] )      
			VALUES         
				(@SQstrInvIssReqDocID, @SQintLineNo, @SQlngBinId, @SQdecQty)    
		--END  
	END  

GO
/****** Object:  StoredProcedure [dbo].[prInvIssReqDTBin_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prInvIssReqDTBin_List]        
  @SQstrInvIssReqDocID NVARCHAR(MAX)        
 AS        
 BEGIN        
  SELECT Distinct        
   strInvIssReqDocID,intLineNo,lngBinID,decQty,        
   ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblInvIssReqDocDTBin.lngBinId),'') AS strBinCode        
  FROM         
   tblInvIssReqDocDTBin        
  WHERE         
   strInvIssReqDocID IN (SELECT VALUE FROM dbo.fnSplitStringAsTable(@SQstrInvIssReqDocID,','))        
 END 
GO
/****** Object:  StoredProcedure [dbo].[prInvLocationBin_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prInvLocationBin_Delete]
	-- Add the parameters for the stored procedure here
	@SQstrBinCode nvarchar(50),
	@SQstrLocationName nvarchar(10)

AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	DELETE FROM tblInvLocBin WHERE strBinCode = @SQstrBinCode AND strLocName = @SQstrLocationName
END

GO
/****** Object:  StoredProcedure [dbo].[prInvLocationBin_DeleteByLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[prInvLocationBin_DeleteByLocation]    Script Date: 30-03-2018 06:10:57 PM ******/
CREATE PROCEDURE [dbo].[prInvLocationBin_DeleteByLocation]
	-- Add the parameters for the stored procedure here
	@SQstrLocName nvarchar(50)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	--Select * from tblInvExtBin
	DELETE FROM tblInvExtBin WHERE strLocName = @SQstrLocName
	DELETE FROM tblInvLocBin WHERE strLocName = @SQstrLocName
END
GO
/****** Object:  StoredProcedure [dbo].[prInvLocationBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prInvLocationBin_Save]   
@SQlngId bigint OUTPUT,   
@SQstrLocationName nvarchar(10),   
@SQstrBinCode nvarchar(50),   
@SQstrDescription nvarchar(500),   
@SQdecCapacity money,   
@SQstrCapacityUnit nvarchar(15),
@SQbitPickingBin bit,
@SQbitInactive bit,
@SQbitReceivingBin bit,
@SQbitProductionBin bit,
@SQbitStockingBin bit
AS  
BEGIN   
SET NOCOUNT ON;        
	IF @SQlngId <> 0    
		BEGIN     
			UPDATE [dbo].[tblInvLocBin]       
				SET 
					[strLocName] = @SQstrLocationName,       
					[strBinCode] = @SQstrBinCode,      
					[strDescription] = @SQstrDescription,       
					[decCapacity] = @SQdecCapacity,      
					[strCapacityUnit] = @SQstrCapacityUnit,     
					[bitPickingBin] = @SQbitPickingBin,
					[bitInactive] = @SQbitInactive,
					[bitReceivingBin] = @SQbitReceivingBin,
					[bitProductionBin] = @SQbitProductionBin,
					[bitStockingBin] = @SQbitStockingBin
			WHERE      
				[lngId] = @SQlngId    
		END   
	ELSE    
		BEGIN     
			INSERT INTO [dbo].[tblInvLocBin]         
				([strLocName] ,[strBinCode] ,[strDescription] ,[decCapacity] ,[strCapacityUnit], [bitPickingBin], [bitInactive], [bitReceivingBin], [bitProductionBin], [bitStockingBin])      
			VALUES         
				(@SQstrLocationName, @SQstrBinCode, @SQstrDescription, @SQdecCapacity, @SQstrCapacityUnit, @SQbitPickingBin, @SQbitInactive, @SQbitReceivingBin, @SQbitProductionBin, @SQbitStockingBin)    
			SET @SQlngId = (SELECT IDENT_CURRENT('tblInvLocBin') AS bigint);
		END  
	END 
GO
/****** Object:  StoredProcedure [dbo].[prInvLocationBin_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prInvLocationBin_Search]
	@SQstrLocationName nvarchar(10) = NULL,
	@SQBinCode nvarchar(50) = NULL,
	@SQSearchText nvarchar(100) = NULL
AS
BEGIN
	SET NOCOUNT ON;
	SELECT * FROM tblInvLocBin WHERE 
	((strLocName = @SQstrLocationName) OR (@SQstrLocationName IS NULL)) AND
	((strBinCode = @SQBinCode) OR (@SQBinCode IS NULL)) AND
	((strLocName LIKE '%' +  @SQSearchText + '%' OR strBinCode LIKE '%' +  @SQSearchText + '%' OR strDescription LIKE '%' +  @SQSearchText + '%') OR (@SQSearchText IS NULL))
END

GO
/****** Object:  StoredProcedure [dbo].[prInvLocationBinItems_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[prInvLocationBinItems_Save]
	-- Add the parameters for the stored procedure here
	@SQstrPartNumber nvarchar(50),
	@SQstrLocationName	nvarchar(10),
	@SQlngBinId bigint,
	@SQdecAvail money,
	@SQdecAlloc money,
	@SQdecOnHand money,
	@SQdecMaximumQty money,
	@SQbitAllowed	bit,
	@SQbitDefault bit
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	IF (SELECT COUNT(*) FROM  tblInvExtBin WHERE strPartNumber = @SQstrPartNumber AND strLocName = @SQstrLocationName AND lngBinId = @SQlngBinId) = 0
		BEGIN
			INSERT INTO [dbo].[tblInvExtBin]
				   ([strPartNumber]
				   ,[strLocName]
				   ,[lngBinId]
				   ,[decAvail]
				   ,[decAlloc]
				   ,[decOnHand]
				   ,[decMaximumQty]
				   ,[bitAllowed]
				   ,[bitDefault])
			 VALUES
				   (@SQstrPartNumber,@SQstrLocationName,@SQlngBinId,@SQdecAvail,@SQdecAlloc,@SQdecOnHand,@SQdecMaximumQty,@SQbitAllowed,@SQbitDefault)
		END
	ELSE
		BEGIN
			UPDATE [dbo].[tblInvExtBin]
			   SET 
				   [decAvail] = @SQdecAvail
				  ,[decAlloc] = @SQdecAlloc
				  ,[decOnHand] = @SQdecOnHand
				  ,[decMaximumQty] = @SQdecMaximumQty
				  ,[bitAllowed] = @SQbitAllowed
				  ,[bitDefault] = @SQbitDefault
			 WHERE 
				strPartNumber = @SQstrPartNumber 
				AND strLocName = @SQstrLocationName 
				AND lngBinId = @SQlngBinId
		END
END

GO
/****** Object:  StoredProcedure [dbo].[prInvoiceDoc_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prInvoiceDoc_SelectAll]
	AS
	BEGIN
	    SELECT 
	        strInvDocID
	       ,lngInvTrackID
	       ,lngJourID
	       ,dteSystemDate
	       ,dteJournalDate
	       ,dteRequired
	       ,strUserName
	       ,strCustName
	       ,strSoldTo
	       ,strShipTo
	       ,strReference
	       ,decSubTotal
	       ,decVAT
	       ,decTotal
	       ,bitFromSO
	       ,strOrdDocID
	       ,bitHistoryTrans
	       ,strNotes
	       ,bitPrinted
	       ,bitEmailed
	       ,intPaidBy
	       ,intAccount
	       ,strSalesName
	       ,strAddInfo
	       ,bitReserved
	       ,strCurrency
	       ,bitIsForeign
	       ,decSubTotalF
	       ,decVATF
	       ,decTotalF
	       ,decExchange
	       ,strTerm
	       ,intDept
	       ,strField1
	       ,strField2
	       ,strField3
	       ,strField4
	       ,strField5
	       ,strField6
	       ,strField7
	       ,strField8
	       ,strField9
	       ,strField10
	       ,strField11
	       ,strField12
	       ,strSubFormated
	       ,strVATFormatted
	       ,strTotFormatted
	       ,dteField13
	       ,dteField14
	       ,decDiscPerc
	       ,decDiscAmt
	       ,decDiscAmtF
	       ,strDiscFormatted
	       ,strOrdFQDocID
	       ,strStatusTypeCode
	       ,strCNReasonCode
	       ,bitBookmark
	       ,dteSystemDateTime
	       ,strPaidBy
	       ,intSentDoc
	       ,strVAT
	       ,strDelMethodCode
	       ,decTotalWeight
	       ,decTotalVolWeight
	       ,decDeliveryCost
	       ,decDeliveryCostF
	       ,strDeliveryCostFormatted
	       ,bitShipmentsAuditTrail
	       ,intRevisionNumber
	       ,strStoreNumber
	       ,strEDI
		   ,bitNoPODRequired
	  FROM [tblInvoiceDoc]
	
	END
GO
/****** Object:  StoredProcedure [dbo].[prInvoiceDocBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prInvoiceDocBin_Save]
(
	@SQlngId BIGINT
	,@SQstrInvDocID NVARCHAR(50)
	,@SQintLineNo INT
	,@SQlngBinId BIGINT
	,@SQdecQty MONEY
)
AS
BEGIN
	IF NOT EXISTS (SELECT lngId FROM tblInvoiceDocDTBin WHERE lngId = @SQlngId)
		BEGIN
				INSERT INTO tblInvoiceDocDTBin
							   (strInvDocID
							   ,intLineNo
							   ,lngBinId
							   ,decQty)
				VALUES
							   (@SQstrInvDocID
							   ,@SQintLineNo
							   ,@SQlngBinId
							   ,@SQdecQty
							   )
		END
	ELSE
		BEGIN
				UPDATE tblInvoiceDocDTBin
				SET strInvDocID = @SQstrInvDocID
					,intLineNo = @SQintLineNo
					,lngBinId = @SQlngBinId
					,decQty = @SQdecQty
				WHERE lngId = @SQlngId
		END
END

GO
/****** Object:  StoredProcedure [dbo].[prInvoiceDocDTBin_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prInvoiceDocDTBin_List]
	-- Add the parameters for the stored procedure here
	@SQstrDocID nvarchar(50),
	@SQintLineNo int
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT	
		*,
		ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblInvoiceDocDTBin.lngBinId),'') AS strBinCode
	FROM 
		tblInvoiceDocDTBin 
	WHERE 
		strInvDocID = @SQstrDocID AND intLineNo = @SQintLineNo
END

GO
/****** Object:  StoredProcedure [dbo].[prInvoiceDocPDTBin_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[prInvoiceDocPDTBin_List]
	-- Add the parameters for the stored procedure here
	@SQstrInvPDocID nvarchar(50)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT	
		*,
		ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblInvoiceDocPDTBin.lngBinId),'') AS strBinCode
	FROM 
		tblInvoiceDocPDTBin
	WHERE 
		strInvPDocID IN (SELECT VALUE FROM dbo.fnSplitStringAsTable(@SQstrInvPDocID,','))
END

GO
/****** Object:  StoredProcedure [dbo].[prInvRepackDocDTBin_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prInvRepackDocDTBin_Delete]
	-- Add the parameters for the stored procedure here
	@SQstrRepackDocID nvarchar(50)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	DELETE FROM tblInvRepackDocDTBin WHERE strRepackDocID = @SQstrRepackDocID
END

GO
/****** Object:  StoredProcedure [dbo].[prInvRepackDocDTBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prInvRepackDocDTBin_Save]
(
	@SQlngId BIGINT
	,@SQstrRepackDocID NVARCHAR(50)
	,@SQintLineNo INT
	,@SQlngBinId BIGINT
	,@SQdecQty MONEY
)
AS
BEGIN
	IF NOT EXISTS (SELECT lngId FROM tblInvRepackDocDTBin WHERE lngId = @SQlngId)
		BEGIN
				INSERT INTO tblInvRepackDocDTBin
							   (strRepackDocID
							   ,intLineNo
							   ,lngBinId
							   ,decQty)
				VALUES
							   (@SQstrRepackDocID
							   ,@SQintLineNo
							   ,@SQlngBinId
							   ,@SQdecQty
							   )
		END
	ELSE
		BEGIN
				UPDATE tblInvRepackDocDTBin
				SET strRepackDocID = @SQstrRepackDocID
					,intLineNo = @SQintLineNo
					,lngBinId = @SQlngBinId
					,decQty = @SQdecQty
				WHERE lngId = @SQlngId
		END
END

GO
/****** Object:  StoredProcedure [dbo].[prItemBOM_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prItemBOM_SelectAll]                                    
  @SQstrPartNumber nvarchar(50) = NULL                                   
 ,@SQstrLocName nvarchar(50) = NULL                                    
 ,@SQstrDocId nvarchar(100) = NULL                                    
 ,@SQstrDocType nvarchar(50) = NULL                                    
 ,@SQintLineNo int = NULL          
 ,@SQGPCalcLPP As Int = 0      
 ,@SQGPCalcInvLevel As Int = 0         
 ,@SQPricelist As nvarchar(50) = NULL
 ,@SQDocDate AS smalldatetime = NULL                             
                                    
 AS                                    
 BEGIN         
  IF @SQstrDocId IS NULL                                    
  BEGIN                                    
   SELECT tblInvBOM.strPartNumber,tblInv1.strDesc,strDocId = '',  tblInvExtBin.lngBinId, intLineNo=0, decQty = intQtyToUse,strPartItemNumber As strItemPartNumber,                                
   tblInv2.strDesc as strItemPartNumDesc,strBinCode,intMainLineNo = 0  ,(Case when (tblInv1.bitAutoBuildSameLoc)=1 then @SQstrLocName else tblInvBOM.strLocName end) as strLocName                     
   ,(tblInv1.bitAutoBuildSameLoc) AS bitAutoBuildSameLoc,ISNULL(tblInvBOM.intQtyToUse,1) AS decBOMQty,tblInv2.strUnitOfMeasure As strUOM,    
   CASE WHEN tblInv2.intType = 4 THEN tblInv2.decStandardCost ELSE CASE @SQGPCalcLPP WHEN 0 THEN tblInv2.decLastPPUnit WHEN 1 THEN tblInv2.decStandardCost WHEN 2 THEN CASE @SQGPCalcInvLevel WHEN 0 THEN CASE        
   WHEN tblInv2.decLastPPUnit > ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv2.strPartNumber AND EXT.strLocName = @SQstrLocName), 0)       
   THEN tblInv2.decLastPPUnit ELSE CASE WHEN tblInv2.decLastPPUnit < ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv2.strPartNumber      
   AND EXT.strLocName = @SQstrLocName ), 0) THEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv2.strPartNumber AND EXT.strLocName = @SQstrLocName), 0)      
   ELSE CASE WHEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv2.strPartNumber AND EXT.strLocName = @SQstrLocName), 0) = 0      
   THEN tblInv2.decLastPPUnit ELSE ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv2.strPartNumber AND EXT.strLocName = @SQstrLocName), 0)      
   END END END WHEN 1 THEN CASE WHEN tblInv2.decLastPPUnit > ISNULL((CASE tblInv2.decSumOnHand WHEN 0 THEN 0 ELSE tblInv2.decSumValue / tblInv2.decSumOnHand END ), 0) THEN tblInv2.decLastPPUnit ELSE CASE WHEN tblInv2.decLastPPUnit < ISNULL((      
   CASE tblInv2.decSumOnHand WHEN 0 THEN 0 ELSE tblInv2.decSumValue / tblInv2.decSumOnHand END), 0) THEN ISNULL((CASE tblInv2.decSumOnHand WHEN 0 THEN 0 ELSE tblInv2.decSumValue / tblInv2.decSumOnHand END), 0)      
   ELSE CASE WHEN CASE tblInv2.decSumOnHand WHEN 0 THEN 0 ELSE tblInv2.decSumValue / tblInv2.decSumOnHand END = 0 THEN tblInv2.decLastPPUnit ELSE ISNULL((CASE tblInv2.decSumOnHand WHEN 0 THEN 0 ELSE tblInv2.decSumValue / tblInv2.decSumOnHand       
   END ), 0) END END END ELSE tblInv2.decLastPPUnit END WHEN 3 THEN CASE @SQGPCalcInvLevel WHEN 0 THEN CASE WHEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT      
   WHERE EXT.strPartNumber = tblInv2.strPartNumber AND EXT.strLocName = @SQstrLocName ), 0) = 0 THEN tblInv2.decLastPPUnit ELSE ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END      
   FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv2.strPartNumber AND EXT.strLocName = @SQstrLocName ), 0) END WHEN 1 THEN CASE WHEN CASE tblInv2.decSumOnHand WHEN 0 THEN 0 ELSE tblInv2.decSumValue / tblInv2.decSumOnHand END = 0      
   THEN tblInv2.decLastPPUnit ELSE ISNULL(( CASE tblInv2.decSumOnHand WHEN 0 THEN 0 ELSE tblInv2.decSumValue / tblInv2.decSumOnHand END ), 0) END ELSE tblInv2.decLastPPUnit END ELSE tblInv2.decLastPPUnit END END  AS GPCalc,
   ISNULL(PRICE.decSelling, 0) AS decSelling          
   FROM [dbo].[tblInvBOM] (NOLOCK)                                    
   INNER JOIN tblInv (NOLOCK) tblInv1 ON tblInv1.strPartNumber = [tblInvBOM].strPartNumber                              
   INNER JOIN tblInv (NOLOCK) tblInv2 ON tblInv2.strPartNumber = strPartItemNumber                                
   INNER JOIN tblInvExtBin (NOLOCK) ON tblInv2.strPartNumber = tblInvExtBin.strPartNumber AND tblInvExtBin.strLocName = CASE WHEN tblInv1.bitAutoBuildSameLoc = 1 THEN @SQstrLocName ELSE tblInvBOM.strLocName END AND tblInvExtBin.bitDefault = 1                      
   INNER JOIN tblInvLocBin (NOLOCK) ON tblInvExtBin.lngBinID = tblInvLocBin.lngID                                  
   LEFT OUTER JOIN (SELECT tblInvPrice.strPartNumber,
						   tblInvPrice.decSelling
					FROM tblInvPrice (NOLOCK)
					INNER JOIN tblPriceListsByDate (NOLOCK) ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID 
					WHERE (tblInvPrice.strPricelist = @SQPricelist OR tblInvPrice.strPricelist IS NULL)
					AND (@SQDocDate BETWEEN tblPriceListsByDate.dteStartDate AND tblPriceListsByDate.dteFinishDate)) PRICE ON tblInv2.strPartNumber = PRICE.strPartNumber
   LEFT JOIN tblInvSerialTypes (NOLOCK) ON tblInv2.strInvSerialType = tblInvSerialTypes.strInvSerialType      
   WHERE tblInvBOM.strPartNumber =@SQstrPartNumber                                 
  END                                    
  ELSE                                    
  BEGIN                                    
  IF @SQstrDocType = 'SI' OR @SQstrDocType = 'CN'                                    
  BEGIN                                    
  SELECT tblInvoiceDocDT.strPartNumber,tblInvoiceDocDT.strPartDesc AS strDesc,strDocId = tblInvoiceDocDT.strInvDocID,  lngBinId, tblInvoiceDocDTBOM.intLineNo, tblInvoiceDocDTBOM.decQty,                        
  tblInvoiceDocDTBOM.strPartItemNumber As strItemPartNumber, strBinCode,tblInv.strDesc as strItemPartNumDesc,intMainLineNo,tblInvLocBin.strLocName ,bitAutoBuildSameLoc=0,            
  ISNULL([tblInvoiceDocDTBOM].decBOMQty,tblInvBOM.intQtyToUse) AS decBOMQty,tblInv.strUnitOfMeasure AS strUOM,    
  CASE WHEN tblInv.intType = 4 THEN tblInv.decStandardCost ELSE CASE @SQGPCalcLPP WHEN 0 THEN tblInv.decLastPPUnit WHEN 1 THEN tblInv.decStandardCost WHEN 2 THEN CASE @SQGPCalcInvLevel WHEN 0 THEN CASE          
  WHEN tblInv.decLastPPUnit > ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0)         
  THEN tblInv.decLastPPUnit ELSE CASE WHEN tblInv.decLastPPUnit < ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber        
  AND EXT.strLocName = @SQstrLocName ), 0) THEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0)        
  ELSE CASE WHEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0) = 0        
  THEN tblInv.decLastPPUnit ELSE ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0)        
  END END END WHEN 1 THEN CASE WHEN tblInv.decLastPPUnit > ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) THEN tblInv.decLastPPUnit ELSE CASE WHEN tblInv.decLastPPUnit < ISNULL((        
  CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END), 0) THEN ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END), 0)        
  ELSE CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0 THEN tblInv.decLastPPUnit ELSE ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand         
  END ), 0) END END END ELSE tblInv.decLastPPUnit END WHEN 3 THEN CASE @SQGPCalcInvLevel WHEN 0 THEN CASE WHEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT        
  WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName ), 0) = 0 THEN tblInv.decLastPPUnit ELSE ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END        
  FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName ), 0) END WHEN 1 THEN CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0        
  THEN tblInv.decLastPPUnit ELSE ISNULL(( CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) END ELSE tblInv.decLastPPUnit END ELSE tblInv.decLastPPUnit END END AS GPCalc,
  ISNULL([tblInvoiceDocDTBOM].decGLCalc, ISNULL(PRICE.decSelling, 0)) AS decSelling              
  FROM [dbo].[tblInvoiceDocDTBOM] (NOLOCK)                                    
  INNER JOIN tblInvoiceDocDT (NOLOCK) ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTBOM.strInvDocID AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTBOM.intMainLineNo                                   
  INNER JOIN tblInv (NOLOCK) ON tblInv.strPartNumber = tblInvoiceDocDTBOM.strPartItemNumber                              
  INNER JOIN tblInv (NOLOCK) tblInv2 ON   tblInv2.strPartNumber=tblInvoiceDocDT.strPartNumber               
  LEFT JOIN tblInvBOM (NOLOCK) ON tblInvBOM.strPartNumber = tblInv2.strPartNumber AND tblInvBOM.strPartItemNumber = [tblInvoiceDocDTBOM].strPartItemNumber AND [tblInvoiceDocDTBOM].decBOMQty IS NULL                 
  INNER JOIN tblInvLocBin (NOLOCK) ON tblInvoiceDocDTBOM.lngBinId = tblInvLocBin.lngID         
  LEFT OUTER JOIN (SELECT tblInvPrice.strPartNumber,
						  tblInvPrice.decSelling
					FROM tblInvPrice (NOLOCK)
					INNER JOIN tblPriceListsByDate (NOLOCK) ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID 
					WHERE (tblInvPrice.strPricelist = @SQPricelist OR tblInvPrice.strPricelist IS NULL)
					AND (@SQDocDate BETWEEN tblPriceListsByDate.dteStartDate AND tblPriceListsByDate.dteFinishDate)) PRICE ON tblInv.strPartNumber = PRICE.strPartNumber
  LEFT JOIN tblInvSerialTypes (NOLOCK) ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType                                 
  WHERE tblInvoiceDocDTBOM.strInvDocID = @SQstrDocId                              
 END                                    
 ELSE IF @SQstrDocType = 'SO' OR @SQstrDocType = 'QU'                            
 BEGIN                            
  SELECT tblOrderDocDT.strPartNumber,tblOrderDocDT.strPartDesc AS strDesc,strDocId = tblOrderDocDT.strOrdDocID,  lngBinId , tblOrderDocDTBOM.intLineNo, tblOrderDocDTBOM.decQty,                        
  tblOrderDocDTBOM.strPartItemNumber As strItemPartNumber, strBinCode ,tblInv.strDesc as strItemPartNumDesc,intMainLineNo ,tblOrderDocDTBOM.strLocName,bitAutoBuildSameLoc=0,            
  ISNULL([tblOrderDocDTBOM].decBOMQty,tblInvBOM.intQtyToUse) AS decBOMQty,tblInv.strUnitOfMeasure AS strUOM,    
  CASE WHEN tblInv.intType = 4 THEN tblInv.decStandardCost ELSE CASE @SQGPCalcLPP WHEN 0 THEN tblInv.decLastPPUnit WHEN 1 THEN tblInv.decStandardCost WHEN 2 THEN CASE @SQGPCalcInvLevel WHEN 0 THEN CASE          
  WHEN tblInv.decLastPPUnit > ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0)         
  THEN tblInv.decLastPPUnit ELSE CASE WHEN tblInv.decLastPPUnit < ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber        
  AND EXT.strLocName = @SQstrLocName ), 0) THEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0)        
  ELSE CASE WHEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0) = 0        
  THEN tblInv.decLastPPUnit ELSE ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0)        
  END END END WHEN 1 THEN CASE WHEN tblInv.decLastPPUnit > ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) THEN tblInv.decLastPPUnit ELSE CASE WHEN tblInv.decLastPPUnit < ISNULL((        
  CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END), 0) THEN ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END), 0)        
  ELSE CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0 THEN tblInv.decLastPPUnit ELSE ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand         
  END ), 0) END END END ELSE tblInv.decLastPPUnit END WHEN 3 THEN CASE @SQGPCalcInvLevel WHEN 0 THEN CASE WHEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT        
  WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName ), 0) = 0 THEN tblInv.decLastPPUnit ELSE ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END        
  FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName ), 0) END WHEN 1 THEN CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0        
  THEN tblInv.decLastPPUnit ELSE ISNULL(( CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) END ELSE tblInv.decLastPPUnit END ELSE tblInv.decLastPPUnit END END AS GPCalc,
  ISNULL([tblOrderDocDTBOM].decGLCalc, ISNULL(PRICE.decSelling, 0)) AS decSelling                  
  FROM [dbo].[tblOrderDocDTBOM] (NOLOCK)             
  INNER JOIN tblOrderDocDT (NOLOCK) ON tblOrderDocDT.strOrdDocID = tblOrderDocDTBOM.strOrdDocID AND tblOrderDocDT.intLineNo = tblOrderDocDTBOM.intMainLineNo                                 
  INNER JOIN tblInv  (NOLOCK) ON tblInv.strPartNumber = tblOrderDocDTBOM.strPartItemNumber               
  LEFT JOIN tblInvBOM (NOLOCK) ON tblInvBOM.strPartNumber = tblOrderDocDT.strPartNumber AND tblInvBOM.strPartItemNumber = tblOrderDocDTBOM.strPartItemNumber AND [tblOrderDocDTBOM].decBOMQty IS NULL                        
  INNER JOIN tblInvExtBin (NOLOCK) ON tblOrderDocDTBOM.strPartItemNumber = tblInvExtBin.strPartNumber AND tblOrderDocDTBOM.strLocName = tblInvExtBin.strLocName AND tblInvExtBin.bitDefault = 1                    
  INNER JOIN tblInvLocBin (NOLOCK) ON tblInvExtBin.lngBinID = tblInvLocBin.lngID                  
  LEFT OUTER JOIN (SELECT tblInvPrice.strPartNumber,
						  tblInvPrice.decSelling
					FROM tblInvPrice (NOLOCK)
					INNER JOIN tblPriceListsByDate (NOLOCK) ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID 
					WHERE (tblInvPrice.strPricelist = @SQPricelist OR tblInvPrice.strPricelist IS NULL)
					AND (@SQDocDate BETWEEN tblPriceListsByDate.dteStartDate AND tblPriceListsByDate.dteFinishDate)) PRICE ON tblInv.strPartNumber = PRICE.strPartNumber
  LEFT JOIN tblInvSerialTypes (NOLOCK) ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType      
  WHERE tblOrderDocDTBOM.strOrdDocID = @SQstrDocId                            
 END                        
 ELSE IF @SQstrDocType = 'DA'                           
 BEGIN                          
    SELECT tblOrderDocDADT.strPartNumber,tblOrderDocDADT.strPartDesc AS strDesc,strDocId = tblOrderDocDADT.strOrdDADocID,  tblOrderDocDADTBOM.lngBinId , tblOrderDocDADTBOM.intLineNo, tblOrderDocDADTBOM.intMainLineNo,                         
    tblOrderDocDADTBOM.decQty,tblOrderDocDADTBOM.strPartItemNumber As strItemPartNumber,tblInv.strDesc as strItemPartNumDesc, strBinCode ,tblOrderDocDADTBOM.strLocName  ,bitAutoBuildSameLoc=0,            
    ISNULL([tblOrderDocDADTBOM].decBOMQty,tblInvBOM.intQtyToUse) AS decBOMQty,tblInv.strUnitOfMeasure AS strUOM,    
    CASE WHEN tblInv.intType = 4 THEN tblInv.decStandardCost ELSE CASE @SQGPCalcLPP WHEN 0 THEN tblInv.decLastPPUnit WHEN 1 THEN tblInv.decStandardCost WHEN 2 THEN CASE @SQGPCalcInvLevel WHEN 0 THEN CASE          
    WHEN tblInv.decLastPPUnit > ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0)         
    THEN tblInv.decLastPPUnit ELSE CASE WHEN tblInv.decLastPPUnit < ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber        
    AND EXT.strLocName = @SQstrLocName ), 0) THEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0)        
    ELSE CASE WHEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0) = 0        
    THEN tblInv.decLastPPUnit ELSE ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0)        
    END END END WHEN 1 THEN CASE WHEN tblInv.decLastPPUnit > ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) THEN tblInv.decLastPPUnit ELSE CASE WHEN tblInv.decLastPPUnit < ISNULL((        
    CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END), 0) THEN ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END), 0)        
    ELSE CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0 THEN tblInv.decLastPPUnit ELSE ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand         
    END ), 0) END END END ELSE tblInv.decLastPPUnit END WHEN 3 THEN CASE @SQGPCalcInvLevel WHEN 0 THEN CASE WHEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT        
    WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName ), 0) = 0 THEN tblInv.decLastPPUnit ELSE ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END        
    FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName ), 0) END WHEN 1 THEN CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0        
    THEN tblInv.decLastPPUnit ELSE ISNULL(( CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) END ELSE tblInv.decLastPPUnit END ELSE tblInv.decLastPPUnit END END AS GPCalc,
	ISNULL([tblOrderDocDADTBOM].decGLCalc, ISNULL(PRICE.decSelling, 0)) AS decSelling           
    FROM [dbo].[tblOrderDocDADTBOM] (NOLOCK)                                   
    INNER JOIN tblOrderDocDADT (NOLOCK) ON tblOrderDocDADT.strOrdDADocID = tblOrderDocDADTBOM.strOrdDocDAID AND tblOrderDocDADT.intLineNo = tblOrderDocDADTBOM.intMainLineNo                                        
    INNER JOIN tblInv (NOLOCK) ON tblInv.strPartNumber = tblOrderDocDADTBOM.strPartItemNumber                          
    INNER JOIN tblInv (NOLOCK) as tblInv2 ON tblInv2.strPartNumber = tblOrderDocDADT.strPartNumber                        
    LEFT JOIN tblInvBOM (NOLOCK) ON tblInvBOM.strPartNumber = tblInv2.strPartNumber AND tblInvBOM.strPartItemNumber = [tblOrderDocDADTBOM].strPartItemNumber AND [tblOrderDocDADTBOM].decBOMQty IS NULL              
    INNER JOIN tblInvLocBin (NOLOCK) ON tblOrderDocDADTBOM.lngBinID = tblInvLocBin.lngID               
	LEFT OUTER JOIN (SELECT tblInvPrice.strPartNumber,
							tblInvPrice.decSelling
					FROM tblInvPrice (NOLOCK)
					INNER JOIN tblPriceListsByDate (NOLOCK) ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID 
					WHERE (tblInvPrice.strPricelist = @SQPricelist OR tblInvPrice.strPricelist IS NULL)
					AND (@SQDocDate BETWEEN tblPriceListsByDate.dteStartDate AND tblPriceListsByDate.dteFinishDate)) PRICE ON tblInv.strPartNumber = PRICE.strPartNumber
    LEFT JOIN tblInvSerialTypes (NOLOCK) ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType                               
    WHERE tblOrderDocDADTBOM.strOrdDocDAID = @SQstrDocId                            
    END                          
 ELSE IF @SQstrDocType = 'QS'                           
 BEGIN                        
    SELECT tblOrderDocQDT.strPartNumber,tblOrderDocQDT.strPartDesc AS strDesc,strDocId = tblOrderDocQDT.strOrdDocID,  lngBinId , tblOrderDocQDTBOM.intLineNo, tblOrderDocQDTBOM.intMainLineNo,                         
    tblOrderDocQDTBOM.decQty,tblOrderDocQDTBOM.strPartItemNumber As strItemPartNumber,tblInv.strDesc as strItemPartNumDesc, strBinCode ,tblOrderDocQDTBOM.strLocName   ,bitAutoBuildSameLoc=0,            
    ISNULL([tblOrderDocQDTBOM].decBOMQty,tblInvBOM.intQtyToUse) AS decBOMQty,tblInv.strUnitOfMeasure AS strUOM,    
    CASE WHEN tblInv.intType = 4 THEN tblInv.decStandardCost ELSE CASE @SQGPCalcLPP WHEN 0 THEN tblInv.decLastPPUnit WHEN 1 THEN tblInv.decStandardCost WHEN 2 THEN CASE @SQGPCalcInvLevel WHEN 0 THEN CASE          
    WHEN tblInv.decLastPPUnit > ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0)         
    THEN tblInv.decLastPPUnit ELSE CASE WHEN tblInv.decLastPPUnit < ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber        
    AND EXT.strLocName = @SQstrLocName ), 0) THEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0)        
    ELSE CASE WHEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0) = 0        
    THEN tblInv.decLastPPUnit ELSE ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0)        
    END END END WHEN 1 THEN CASE WHEN tblInv.decLastPPUnit > ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) THEN tblInv.decLastPPUnit ELSE CASE WHEN tblInv.decLastPPUnit < ISNULL((        
    CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END), 0) THEN ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END), 0)        
    ELSE CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0 THEN tblInv.decLastPPUnit ELSE ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand         
    END ), 0) END END END ELSE tblInv.decLastPPUnit END WHEN 3 THEN CASE @SQGPCalcInvLevel WHEN 0 THEN CASE WHEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT        
    WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName ), 0) = 0 THEN tblInv.decLastPPUnit ELSE ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END        
    FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName ), 0) END WHEN 1 THEN CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0        
    THEN tblInv.decLastPPUnit ELSE ISNULL(( CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) END ELSE tblInv.decLastPPUnit END ELSE tblInv.decLastPPUnit END END AS GPCalc,
	ISNULL([tblOrderDocQDTBOM].decGLCalc, ISNULL(PRICE.decSelling, 0)) AS decSelling            
    FROM [dbo].[tblOrderDocQDTBOM] (NOLOCK)                                     
    INNER JOIN tblOrderDocQDT (NOLOCK) ON tblOrderDocQDT.strOrdDocID = tblOrderDocQDTBOM.strOrdDocID AND tblOrderDocQDT.intLineNo = tblOrderDocQDTBOM.intMainLineNo                                        
    INNER JOIN tblInv (NOLOCK) ON tblInv.strPartNumber = tblOrderDocQDTBOM.strPartItemNumber                          
    INNER JOIN tblInv (NOLOCK) as tblInv2 ON tblInv2.strPartNumber = tblOrderDocQDT.strPartNumber               
    LEFT JOIN tblInvBOM (NOLOCK) ON tblInvBOM.strPartNumber = tblInv2.strPartNumber AND tblInvBOM.strPartItemNumber = [tblOrderDocQDTBOM].strPartItemNumber  AND [tblOrderDocQDTBOM].decBOMQty IS NULL                      
    INNER JOIN tblInvExtBin (NOLOCK) ON tblOrderDocQDTBOM.strPartItemNumber = tblInvExtBin.strPartNumber AND tblOrderDocQDTBOM.strLocName = tblInvExtBin.strLocName AND tblInvExtBin.bitDefault = 1                    
    INNER JOIN tblInvLocBin (NOLOCK) ON tblInvExtBin.lngBinID = tblInvLocBin.lngID         
	LEFT OUTER JOIN (SELECT tblInvPrice.strPartNumber,
							tblInvPrice.decSelling
					FROM tblInvPrice (NOLOCK)
					INNER JOIN tblPriceListsByDate (NOLOCK) ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID 
					WHERE (tblInvPrice.strPricelist = @SQPricelist OR tblInvPrice.strPricelist IS NULL)
					AND (@SQDocDate BETWEEN tblPriceListsByDate.dteStartDate AND tblPriceListsByDate.dteFinishDate)) PRICE ON tblInv.strPartNumber = PRICE.strPartNumber
    LEFT JOIN tblInvSerialTypes (NOLOCK) ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType                                       
    WHERE tblOrderDocQDTBOM.strOrdDocID = @SQstrDocId                            
    END                   
ELSE IF @SQstrDocType = 'SP'                           
 BEGIN                        
    SELECT tblPickTicketsDT.strPartNumber,tblPickTicketsDT.strPartDesc AS strDesc,strDocId = (select Top 1 PT.strOrdDocID  From tblPickTickets (NOLOCK) AS PT WHERE PT.strPkTkDocID = tblPickTicketsDT.strPkTkDocID),  tblPickTicketsDTBOM.lngBinId , tblPickTicketsDTBOM.intLineNo, tblPickTicketsDTBOM.intMainLineNo,                         
    tblPickTicketsDTBOM.decQty,tblPickTicketsDTBOM.strPartItemNumber As strItemPartNumber,tblInv.strDesc as strItemPartNumDesc, strBinCode ,tblPickTicketsDTBOM.strLocation AS strLocName,bitAutoBuildSameLoc=0,            
    ISNULL([tblPickTicketsDTBOM].decBOMQty,tblInvBOM.intQtyToUse) AS decBOMQty,tblInv.strUnitOfMeasure AS strUOM,    
    CASE WHEN tblInv.intType = 4 THEN tblInv.decStandardCost ELSE CASE @SQGPCalcLPP WHEN 0 THEN tblInv.decLastPPUnit WHEN 1 THEN tblInv.decStandardCost WHEN 2 THEN CASE @SQGPCalcInvLevel WHEN 0 THEN CASE          
    WHEN tblInv.decLastPPUnit > ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0)         
    THEN tblInv.decLastPPUnit ELSE CASE WHEN tblInv.decLastPPUnit < ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber        
    AND EXT.strLocName = @SQstrLocName ), 0) THEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0)        
    ELSE CASE WHEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0) = 0        
    THEN tblInv.decLastPPUnit ELSE ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName), 0)        
    END END END WHEN 1 THEN CASE WHEN tblInv.decLastPPUnit > ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) THEN tblInv.decLastPPUnit ELSE CASE WHEN tblInv.decLastPPUnit < ISNULL((        
    CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END), 0) THEN ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END), 0)        
    ELSE CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0 THEN tblInv.decLastPPUnit ELSE ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand         
    END ), 0) END END END ELSE tblInv.decLastPPUnit END WHEN 3 THEN CASE @SQGPCalcInvLevel WHEN 0 THEN CASE WHEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt (NOLOCK) EXT        
    WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName ), 0) = 0 THEN tblInv.decLastPPUnit ELSE ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END        
    FROM tblInvExt (NOLOCK) EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @SQstrLocName ), 0) END WHEN 1 THEN CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0        
    THEN tblInv.decLastPPUnit ELSE ISNULL(( CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) END ELSE tblInv.decLastPPUnit END ELSE tblInv.decLastPPUnit END END AS GPCalc,
	ISNULL([tblPickTicketsDTBOM].decGLCalc, ISNULL(PRICE.decSelling, 0)) AS decSelling            
    FROM [dbo].[tblPickTicketsDTBOM] (NOLOCK)                           
    INNER JOIN tblPickTicketsDT (NOLOCK) ON tblPickTicketsDT.strPkTkDocID = tblPickTicketsDTBOM.strPkTkDocID AND tblPickTicketsDT.intLineNo = tblPickTicketsDTBOM.intMainLineNo                                        
    INNER JOIN tblInv (NOLOCK) ON tblInv.strPartNumber = tblPickTicketsDTBOM.strPartItemNumber                          
    INNER JOIN tblInv (NOLOCK) as tblInv2 ON tblInv2.strPartNumber = tblPickTicketsDT.strPartNumber             
    LEFT JOIN tblInvBOM (NOLOCK) ON tblInvBOM.strPartNumber = tblInv2.strPartNumber AND tblInvBOM.strPartItemNumber = [tblPickTicketsDTBOM].strPartItemNumber AND [tblPickTicketsDTBOM].decBOMQty IS NULL                          
    INNER JOIN tblInvLocBin (NOLOCK) ON tblPickTicketsDTBOM.lngBinID = tblInvLocBin.lngID           
	LEFT OUTER JOIN (SELECT tblInvPrice.strPartNumber,
							tblInvPrice.decSelling
					FROM tblInvPrice (NOLOCK)
					INNER JOIN tblPriceListsByDate (NOLOCK) ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID 
					WHERE (tblInvPrice.strPricelist = @SQPricelist OR tblInvPrice.strPricelist IS NULL)
					AND (@SQDocDate BETWEEN tblPriceListsByDate.dteStartDate AND tblPriceListsByDate.dteFinishDate)) PRICE ON tblInv.strPartNumber = PRICE.strPartNumber
    LEFT JOIN tblInvSerialTypes (NOLOCK) ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType                                     
    WHERE tblPickTicketsDTBOM.strPkTkDocID IN (SELECT Value
										   FROM dbo.fnSplitStringAsTable(@SQstrDocId, ','))                            
 END                   
  END                  
 END 

 GO
/****** Object:  StoredProcedure [dbo].[prItemSegmentFormatSetup_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prItemSegmentFormatSetup_Save]
(
@strInvNumConv	nvarchar(100)=null,
@strDesc	nvarchar(200)=null,
@intType	tinyint	=null,
@bitAllowHyphens	bit=null,
@bitSeg1Enabled	bit	=null,
@bitSeg1Checked	bit	=null,
@strSeg1Name	nvarchar(30)=null,
@intSeg1Attribute	int	=null,
@intSeg1Places	int=null,
@bitSeg2Enabled	bit	=null,
@bitSeg2Checked	bit	=null,
@strSeg2Name	nvarchar(30)=null,
@intSeg2Attribute	int	=null,
@intSeg2Places	int	=null,
@bitSeg3Enabled	bit	=null,
@bitSeg3Checked	bit	=null,
@strSeg3Name	nvarchar(30)=null,
@intSeg3Attribute	int	=null,
@intSeg3Places	int	=null,
@bitSeg4Enabled	bit	=null,
@bitSeg4Checked	bit	=null,
@strSeg4Name	nvarchar(30)=null,
@intSeg4Attribute	int	=null,
@intSeg4Places	int	=null,
@bitInactive	bit	=null,
@bitDefault	bit	=null,
@intNumberType	int	=null,
@strOldInvNumConv	nvarchar(100)=null
)
AS
Begin
    SET NOCOUNT ON

	IF ((SELECT COUNT(*) FROM tblInvNumConv Where strInvNumConv=@strOldInvNumConv) = 0)
    BEGIN
        INSERT INTO [tblInvNumConv]
        (
            [strInvNumConv],
			[strDesc],
			[intType],
			[bitAllowHyphens],
			[bitSeg1Enabled],
			[bitSeg1Checked],
			[strSeg1Name],
			[intSeg1Attribute],
			[intSeg1Places],
			[bitSeg2Enabled],
			[bitSeg2Checked],
			[strSeg2Name],
			[intSeg2Attribute],
			[intSeg2Places],
			[bitSeg3Enabled],
			[bitSeg3Checked],
			[strSeg3Name],
			[intSeg3Attribute],
			[intSeg3Places],
			[bitSeg4Enabled],
			[bitSeg4Checked],
			[strSeg4Name],
			[intSeg4Attribute],
			[intSeg4Places],
			[bitInactive],
			[bitDefault],
			[intNumberType]
        )
        VALUES
        (
			 @strInvNumConv
			,@strDesc
			,@intType
			,@bitAllowHyphens
			,@bitSeg1Enabled
			,@bitSeg1Checked
			,@strSeg1Name
			,@intSeg1Attribute
			,@intSeg1Places
			,@bitSeg2Enabled
			,@bitSeg2Checked
			,@strSeg2Name
			,@intSeg2Attribute
			,@intSeg2Places
			,@bitSeg3Enabled
			,@bitSeg3Checked
			,@strSeg3Name
			,@intSeg3Attribute
			,@intSeg3Places
			,@bitSeg4Enabled
			,@bitSeg4Checked
			,@strSeg4Name
			,@intSeg4Attribute
			,@intSeg4Places
			,@bitInactive
			,@bitDefault
			,@intNumberType
        )
    
        SELECT @strInvNumConv
    END
    ELSE
    BEGIN
        UPDATE [tblInvNumConv] SET 
		    [strInvNumConv]= ISNULL(@strInvNumConv,[strInvNumConv]),
[strDesc]= ISNULL(@strDesc,[strDesc]),
[intType]= ISNULL(@intType,[intType]),
[bitAllowHyphens]= ISNULL(@bitAllowHyphens,[bitAllowHyphens]),
[bitSeg1Enabled]= ISNULL(@bitSeg1Enabled,[bitSeg1Enabled]),
[bitSeg1Checked]= ISNULL(@bitSeg1Checked,[bitSeg1Checked]),
[strSeg1Name]= ISNULL(@strSeg1Name,[strSeg1Name]),
[intSeg1Attribute]= ISNULL(@intSeg1Attribute,[intSeg1Attribute]),
[intSeg1Places]= ISNULL(@intSeg1Places,[intSeg1Places]),
[bitSeg2Enabled]= ISNULL(@bitSeg2Enabled,[bitSeg2Enabled]),
[bitSeg2Checked]= ISNULL(@bitSeg2Checked,[bitSeg2Checked]),
[strSeg2Name]= ISNULL(@strSeg2Name,[strSeg2Name]),
[intSeg2Attribute]= ISNULL(@intSeg2Attribute,[intSeg2Attribute]),
[intSeg2Places]= ISNULL(@intSeg2Places,[intSeg2Places]),
[bitSeg3Enabled]= ISNULL(@bitSeg3Enabled,[bitSeg3Enabled]),
[bitSeg3Checked]= ISNULL(@bitSeg3Checked,[bitSeg3Checked]),
[strSeg3Name]= ISNULL(@strSeg3Name,[strSeg3Name]),
[intSeg3Attribute]= ISNULL(@intSeg3Attribute,[intSeg3Attribute]),
[intSeg3Places]= ISNULL(@intSeg3Places,[intSeg3Places]),
[bitSeg4Enabled]= ISNULL(@bitSeg4Enabled,[bitSeg4Enabled]),
[bitSeg4Checked]= ISNULL(@bitSeg4Checked,[bitSeg4Checked]),
[strSeg4Name]= ISNULL(@strSeg4Name,[strSeg4Name]),
[intSeg4Attribute]= ISNULL(@intSeg4Attribute,[intSeg4Attribute]),
[intSeg4Places]= ISNULL(@intSeg4Places,[intSeg4Places]),
[bitInactive]= ISNULL(@bitInactive,[bitInactive]),
[bitDefault]= ISNULL(@bitDefault,[bitDefault]),
[intNumberType]= ISNULL(@intNumberType,[intNumberType])
Where strInvNumConv=@strOldInvNumConv
        SELECT @strInvNumConv
    END

    RETURN 1
End
 
GO
/****** Object:  StoredProcedure [dbo].[prItemSegmentFormatSetup_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prItemSegmentFormatSetup_Select]
@SQstrInvNumConv as nvarchar(100)
AS
BEGIN
	SET NOCOUNT ON

	SELECT [strInvNumConv]
		,[strDesc]
		,cast([intType] as int) as [intType]
		,[bitAllowHyphens]
		,[bitSeg1Enabled]
		,[bitSeg1Checked]
		,[strSeg1Name]
		,[intSeg1Attribute]
		,[intSeg1Places]
		,[bitSeg2Enabled]
		,[bitSeg2Checked]
		,[strSeg2Name]
		,[intSeg2Attribute]
		,[intSeg2Places]
		,[bitSeg3Enabled]
		,[bitSeg3Checked]
		,[strSeg3Name]
		,[intSeg3Attribute]
		,[intSeg3Places]
		,[bitSeg4Enabled]
		,[bitSeg4Checked]
		,[strSeg4Name]
		,[intSeg4Attribute]
		,[intSeg4Places]
		,[bitInactive]
		,[bitDefault]
		,[intNumberType]
		,[intSeg4Type]
		,[strSeg4StartAt]
		,[intSeg1Type]
		,[strSeg1StartAt]
		,[intSeg2Type]
		,[strSeg2StartAt]
		,[intSeg3Type]
		,[strSeg3StartAt]
	FROM tblInvNumConv
	Where strInvNumConv=@SQstrInvNumConv
END
 
GO
/****** Object:  StoredProcedure [dbo].[prItemSegmentFormatSetup_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prItemSegmentFormatSetup_SelectAll]
AS
BEGIN
	SET NOCOUNT ON

	SELECT [strInvNumConv]
		,[strDesc]
		,cast([intType] as int) as [intType]
		,[bitAllowHyphens]
		,[bitSeg1Enabled]
		,[bitSeg1Checked]
		,[strSeg1Name]
		,[intSeg1Attribute]
		,[intSeg1Places]
		,[bitSeg2Enabled]
		,[bitSeg2Checked]
		,[strSeg2Name]
		,[intSeg2Attribute]
		,[intSeg2Places]
		,[bitSeg3Enabled]
		,[bitSeg3Checked]
		,[strSeg3Name]
		,[intSeg3Attribute]
		,[intSeg3Places]
		,[bitSeg4Enabled]
		,[bitSeg4Checked]
		,[strSeg4Name]
		,[intSeg4Attribute]
		,[intSeg4Places]
		,[bitInactive]
		,[bitDefault]
		,[intNumberType]
		,[intSeg4Type]
		,[strSeg4StartAt]
		,[intSeg1Type]
		,[strSeg1StartAt]
		,[intSeg2Type]
		,[strSeg2StartAt]
		,[intSeg3Type]
		,[strSeg3StartAt]
	FROM tblInvNumConv
END
 
GO
/****** Object:  StoredProcedure [dbo].[prItemSegmentSetup_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	Create PROCEDURE [dbo].[prItemSegmentSetup_Delete]
(
    @intSegmentSetupId bigint
)
AS
Begin
    SET NOCOUNT ON

    DELETE FROM [tblItemSegmentSetup] WHERE [intSegmentSetupId] = @intSegmentSetupId

End
 
GO
/****** Object:  StoredProcedure [dbo].[prItemSegmentSetup_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prItemSegmentSetup_Save]
(
		 @intSegmentSetupId int = Null,
		@intSegmentId int = Null,
		@strCode nvarchar(50) = Null,
		@strDescription nvarchar(200) = Null,
		@strInvNumConv nvarchar(50) = Null,
		@strOldInvNumConv nvarchar(50) = Null
)
AS
Begin
    SET NOCOUNT ON

	    IF ((SELECT COUNT(*) FROM tblItemSegmentSetup WHERE intSegmentSetupId = @intSegmentSetupId and strInvNumConv=@strOldInvNumConv) = 0)
    BEGIN
        INSERT INTO [tblItemSegmentSetup]
        (
            [intSegmentId],
            [strCode],
            [strDescription],
			[strInvNumConv]
        )
        VALUES
        (
            @intSegmentId,
            @strCode,
            @strDescription,
			@strInvNumConv
        )
    
        SELECT @intSegmentSetupId
    END
    ELSE
    BEGIN
        UPDATE [tblItemSegmentSetup] SET 
		    [intSegmentId] = ISNULL(@intSegmentId, [intSegmentId]),
            [strCode] = ISNULL(@strCode, [strCode]),
            [strDescription] = ISNULL(@strDescription, [strDescription]),
			[strInvNumConv] = ISNULL(@strInvNumConv, [strInvNumConv])
        WHERE
            [intSegmentSetupId] = @intSegmentSetupId
			and strInvNumConv=@strOldInvNumConv
        SELECT @intSegmentSetupId
    END

    RETURN 1

End
 
GO
/****** Object:  StoredProcedure [dbo].[prItemSegmentSetup_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prItemSegmentSetup_Search]
(
        @intSegmentSetupId int = Null,
		@intSegmentId int = Null,
		@strCode nvarchar(50) = Null,
		@strDescription nvarchar(200) = Null,
		@strInvNumConv nvarchar(50) = Null
)
AS
BEGIN
    SET NOCOUNT ON

	SELECT 
        [intSegmentSetupId],
        [intSegmentId],
        [strCode],
        [strDescription],
		[strInvNumConv]
    FROM 
        [tblItemSegmentSetup]
    WHERE
        (([intSegmentSetupId] = @intSegmentSetupId) OR (@intSegmentSetupId Is Null)) AND 
        (([intSegmentId] = @intSegmentId) OR (@intSegmentId Is Null)) AND 
        (([strCode] = @strCode) OR (@strCode Is Null)) AND 
        (([strDescription] = @strDescription) OR (@strDescription Is Null)) AND
		(([strInvNumConv] = @strInvNumConv) OR (@strInvNumConv Is Null))
		ORDER BY strCode
END
 
GO
/****** Object:  StoredProcedure [dbo].[prManCloseJobBin_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prManCloseJobBin_List]
	-- Add the parameters for the stored procedure here
	@SQstrInvDocId nvarchar(50)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
--	SELECT	
--		*,
--		ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblManJobCloseBin.lngBinId),'') AS strBinCode
--	FROM 
--		tblManJobCloseBin
--	WHERE 
--		strInvDocId IN (SELECT VALUE FROM dbo.fnSplitStringAsTable(@SQstrInvDocId,','))

	SELECT	MAX(lngID) AS lngID,
			strInvDocID,
			intLineNo,
			lngBinID,
			SUM(decQty) AS decQty,
			ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblManJobCloseBin.lngBinId),'') AS strBinCode
	FROM tblManJobCloseBin
	WHERE strInvDocId IN (SELECT VALUE FROM dbo.fnSplitStringAsTable(@SQstrInvDocId,','))
	GROUP BY strInvDocID,
			 intLineNo,
			 lngBinID

END
GO
/****** Object:  StoredProcedure [dbo].[prManCloseJobBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[prManCloseJobBin_Save]    Script Date: 10-04-2018 06:10:57 PM ******/
CREATE PROCEDURE [dbo].[prManCloseJobBin_Save]
(
	@SQlngId BIGINT
	,@SQstrOrdPGDocID NVARCHAR(50)
	,@SQintLineNo INT
	,@SQlngBinId BIGINT
	,@SQdecQty MONEY
)
AS
BEGIN
	IF NOT EXISTS (SELECT lngId FROM tblManJobCloseBin WHERE lngId = @SQlngId)
		BEGIN
				INSERT INTO tblManJobCloseBin
							   (strInvDocID
							   ,intLineNo
							   ,lngBinId
							   ,decQty)
				VALUES
							   (@SQstrOrdPGDocID
							   ,@SQintLineNo
							   ,@SQlngBinId
							   ,@SQdecQty
							   )
		END
	ELSE
		BEGIN
				UPDATE tblManJobCloseBin
				SET strInvDocID = @SQstrOrdPGDocID
					,intLineNo = @SQintLineNo
					,lngBinId = @SQlngBinId
					,decQty = @SQdecQty
				WHERE lngId = @SQlngId
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prManWIPBin_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prManWIPBin_List]
	-- Add the parameters for the stored procedure here
	@SQstrInvDocId nvarchar(50)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT	MIN(tblManWIPCompInvBin.lngID) AS lngID,
			MIN(tblManWIPCompInvBin.strWIPDocID) AS strWIPDocID,
			tblManWIPCompInvBin.intLineNo,
			tblManWIPCompInvBin.lngBinID,
			SUM(CASE WHEN tblManWIPCompInv.decReturnQty > 0 THEN tblManWIPCompInvBin.decQty * -1 ELSE tblManWIPCompInvBin.decQty END) AS decQty,
			ISNULL(tblInvLocBin.strBinCode, '') AS strBinCode
	FROM tblManWIPCompInvBin 
	INNER JOIN tblManWIPCompInv ON tblManWIPCompInvBin.strWIPDocID = tblManWIPCompInv.strWIPDocID AND tblManWIPCompInvBin.intLineNo = tblManWIPCompInv.intLineNo
	INNER JOIN tblManWIP ON tblManWIPCompInv.strWIPDocID = tblManWIP.strWIPDocID
	LEFT JOIN tblInvLocBin ON tblManWIPCompInvBin.lngBinId = tblInvLocBin.lngId
	WHERE 	strJBDocID IN (SELECT VALUE FROM dbo.fnSplitStringAsTable(@SQstrInvDocId,','))
	GROUP BY tblManWIPCompInvBin.intLineNo,
			 tblManWIPCompInvBin.lngBinID,
			 tblInvLocBin.strBinCode

END
GO
/****** Object:  StoredProcedure [dbo].[prManWIPCompInvBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prManWIPCompInvBin_Save]   
-- Add the parameters for the stored procedure here   
@SQlngId bigint,   
@strWIPDocID nvarchar(50),   
@SQintLineNo INT,   
@SQlngBinId bigint,   
@SQdecQty money
AS  
BEGIN   
-- SET NOCOUNT ON added to prevent extra result sets from   -- interfering with SELECT statements.   
SET NOCOUNT ON;        

			INSERT INTO [dbo].[tblManWIPCompInvBin]         
				([strWIPDocID] ,[intLineNo] ,[lngBinId] ,[decQty] )      
			VALUES         
				(@strWIPDocID, @SQintLineNo, @SQlngBinId, @SQdecQty)    
	END  

GO
/****** Object:  StoredProcedure [dbo].[prNonDisposedAssetsDepreciationHistory_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prNonDisposedAssetsDepreciationHistory_Search]
(
    @lngID bigint = Null,
    @strAssetCode nvarchar(20) = Null,
    @dteDepreciationDate datetime = Null,
    @decOtherValue1 money = Null,
    @decOtherValue2 money = Null,
    @decOtherValue3 money = Null,
    @decOtherValue4 money = Null,
    @decOtherValue5 money = Null
)
AS
    SET NOCOUNT ON

   SELECT 
        [tblDepreciationHistory].[lngID],
        [tblDepreciationHistory].[strAssetCode],
        [tblDepreciationHistory].[dteDepreciationDate],
        [tblDepreciationHistory].[decOtherValue1],
        [tblDepreciationHistory].[decOtherValue2],
        [tblDepreciationHistory].[decOtherValue3],
        [tblDepreciationHistory].[decOtherValue4],
        [tblDepreciationHistory].[decOtherValue5]
    FROM 
        [tblDepreciationHistory] 
		inner join tblAssets on [tblDepreciationHistory].strAssetCode=tblAssets.strAssetCode and tblAssets.dteDisposalDate is null
    WHERE 
        (([lngID] = @lngID) OR (@lngID Is Null)) AND 
        (([tblDepreciationHistory].[strAssetCode] = @strAssetCode) OR (@strAssetCode Is Null)) AND 
        (([dteDepreciationDate] = @dteDepreciationDate) OR (@dteDepreciationDate Is Null)) AND 
        (([decOtherValue1] = @decOtherValue1) OR (@decOtherValue1 Is Null)) AND 
        (([decOtherValue2] = @decOtherValue2) OR (@decOtherValue2 Is Null)) AND 
        (([decOtherValue3] = @decOtherValue3) OR (@decOtherValue3 Is Null)) AND 
        (([decOtherValue4] = @decOtherValue4) OR (@decOtherValue4 Is Null)) AND 
        (([decOtherValue5] = @decOtherValue5) OR (@decOtherValue5 Is Null))
GO
/****** Object:  StoredProcedure [dbo].[ProcessDocDTUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[ProcessDocDTUpdate]    Script Date: 06-01-2020 08:25:00 AM ******/
CREATE PROCEDURE [dbo].[ProcessDocDTUpdate]
(
	@ProcessDocDTDataForUpdate As OrderDocDTUpdateTableType ReadOnly,
	@ExistingPJBNumber AS NVARCHAR(50),
	@IsPJBCompleted As bit,
	@IsInvoiceConvert AS bit,
	@Date AS Datetime,
	@UserName AS NVARCHAR(50),
	@PJBReasonCode AS NVARCHAR(50)
)
AS
BEGIN
		UPDATE tblWSProcessDocDT 
		SET 
			QtyRemaining = r.QtyRemaining, 
			StockQtyRemain = r.StockQtyRemain 
		FROM @ProcessDocDTDataForUpdate r
		WHERE 
			tblWSProcessDocDT.ProcessDocID = @ExistingPJBNumber AND 
			tblWSProcessDocDT.[LineNo] = r.[LineNo]

		IF @IsPJBCompleted = 1
		BEGIN
			UPDATE tblWSProcessDoc
			SET SystemDate = @Date,
			    UpdatedBy = @UserName,
			    Cleared = 1,
				SOReasonCode = CASE WHEN @IsInvoiceConvert = 1 THEN SOReasonCode ELSE @PJBReasonCode END
			WHERE ProcessDocID = @ExistingPJBNumber
		END
END
GO
/****** Object:  StoredProcedure [dbo].[ProcessJobUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ProcessJobUpdate]
@DocNumber AS NVARCHAR(50)
AS
BEGIN
	UPDATE tblWSProcessDoc SET Printed = 1 WHERE ProcessDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[ProcessReceipt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ProcessReceipt] (
	@tblCustomerPayTableType AS CustomerPayTableType READONLY
	,@tblCustomerTransactionTableType AS CustomerTransactionTableType READONLY
	,@tblCustomerTransactionDTTableType AS CustomerTransactionDTTableType READONLY
	,@NextRCNumber AS BIGINT
	,@IsHPDeposit AS BIT
	,@DocumentNumber AS NVARCHAR(100)
	,@CustomerYTDFlag AS BIT
	,@CustName AS NVARCHAR(100)
	,@CurrentYrStarts AS DATETIME
	,@IsProcessCreditNotes AS BIT
	,@IsSync AS BIT	= 0
	)
AS
BEGIN
	BEGIN TRY
		DECLARE @ERR_MSG AS NVARCHAR(4000)
			,@Err_Severity INT
			,@ERR_STA AS SMALLINT

		PRINT 'tblCustPay start'

		INSERT INTO tblCustPay (
			lngCustPayID
			,dteSystemDate
			,dteJournalDate
			,strUserName
			,lngJourID
			,strCustName
			,strSource
			,intBankAcct
			,decAmount
			,bitReversed
			,bitReversal
			,strComment
			,intPayBy
			,decDeposit
			,intDept
			,strCurrency
			,bitIsForeign
			,decExchange
			,decAmountF
			,decDepositF
			,bitFromInvPaymt
			,blnForeignBank
			,decBankExchange
			,strBankCurrency
			,decBankAmount
			,decBankAmountF
			,strWHTaxCode
			,decWHPerc
			,decWHAmt
			,decWHAmtF
			,strPaidBy
			)
		SELECT CustPayID
			,SystemDate
			,JournalDate
			,UserName
			,JourID
			,CustName
			,Source
			,BankAcct
			,Amount
			,0
			,0
			,Comment
			,(CASE WHEN PayBy < 0 then (PayBy + 1) else PayBy end) AS PayBy
			,Deposit
			,CASE Dept
				WHEN 0
					THEN NULL
				ELSE Dept
				END
			,Currency
			,IsForeign
			,Exchange
			,AmountF
			,DepositF
			,(CASE WHEN @IsProcessCreditNotes = 1 THEN 0 ELSE (CASE WHEN @IsHPDeposit = 1 THEN 0 ELSE 1 END) END)
			,--payment entry comes from invoice screen not payments screen
			IsForeignBank
			,BankExchange
			,BankCurrency
			,BankAmount
			,BankAmountF
			,NULL
			,0
			,0
			,0
			,PaidBy
		FROM @tblCustomerPayTableType

		PRINT 'tblCustPay done'
	END TRY

	BEGIN CATCH
		PRINT 'tblCustPay exception'

		IF ERROR_NUMBER() = 2627
		BEGIN
			PRINT 'error'

			--ROLLBACK TRANSACTION
		END
	END CATCH

	--Get customer trans ID
	IF @IsHPDeposit = 1
	BEGIN
		PRINT 'tblCustTrans start'

		INSERT INTO tblCustTrans (
			lngCustTrID
			,strCustName
			,dteSystemDate
			,dteJournalDate
			,strUserName
			,strInvDocID
			,strInvDepNumber
			,strSoNumber
			,intTransType
			,decInvAmount
			,decInvAmountF
			,strCurrency
			,bitIsForeign
			,decExchange
			,bitDocReRated
			,dteReRated
			,decReRateCumltveValue
			,bitSettled
			,decDiscAvail
			,decDiscAvailF
			,dteDiscExpires
			,dteDueDate
			,strJEDocID
			,strOrdDocID
			)
		SELECT CustTrID
			,CustName
			,SystemDate
			,JournalDate
			,UserName
			,NULL
			,'Deposit'
			,''
			,2
			,InvAmount
			,0
			,Currency
			,0
			,1
			,0
			,NULL
			,0
			,0
			,0
			,0
			,DiscExpires
			,DueDate
			,NULL
			,NULL
		FROM @tblCustomerTransactionTableType

		PRINT 'tblCustTrans done'
	END
	ELSE
	BEGIN
		PRINT 'tblCustTransDT start'

		DECLARE @CustTrID AS BIGINT

		SELECT TOP 1 @CustTrID = ISNULL(lngCustTrID, 0)
		FROM tblCustTrans
		WHERE strInvDocID = @DocumentNumber

		INSERT INTO tblCustTransDT (
			--lngID,
			dteJournalDate
			,lngCustTrID
			,lngCustPayID
			,decAmount
			,intTransType
			,decAmtOwingAtTime
			,bitReversed
			,dteIntDate
			,decAmountF
			,decAmtOwingAtTimeF
			,bitIsForeign
			)
		SELECT JournalDate
			,(CASE WHEN ISNULL(CustTrID ,0) = 0 THEN @CustTrID ELSE ISNULL(CustTrID ,0) END) AS CustTrID
			,[CustPayID]
			,Amount
			,--decPaidTotal * -1
			2
			,AmtOwingAtTime
			,0
			,NULL
			,AmountF
			,AmtOwingAtTimeF
			,IsForeign
		FROM @tblCustomerTransactionDTTableType

		PRINT 'tblCustTransDT done'
	END

	--Update Doc Number
	BEGIN TRY
		if @IsSync = 0
		BEGIN
		UPDATE tblLastIDs
		SET lngRCNumber = @NextRCNumber
		END
	END TRY

	BEGIN CATCH
	END CATCH

	IF @IsProcessCreditNotes = 0
	BEGIN
		IF @IsHPDeposit = 1
		BEGIN
			IF @CustomerYTDFlag = 1
			BEGIN
				UPDATE tblCustomers
				SET decYTDPurch = (
						SELECT ISNULL(SUM(decTotal), 0)
						FROM tblInvoiceDoc
						WHERE strCustName = tblCustomers.strCustName
							AND bitHistoryTrans = 0
							AND dteJournalDate >= @CurrentYrStarts
						)
					,decBalDueF = (
						SELECT ISNULL(SUM(tblCustTransDT.decAmountF), 0)
						FROM tblCustTrans
						INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
						WHERE tblCustTrans.strCustName = tblCustomers.strCustName
							AND tblCustTransDT.bitReversed = 0
						)
					,decYTDPurchF = (
						SELECT ISNULL(SUM(decTotalF), 0)
						FROM tblInvoiceDoc
						WHERE strCustName = tblCustomers.strCustName
							AND bitHistoryTrans = 0
							AND dteJournalDate >= @CurrentYrStarts
						)
				WHERE strCustName = @CustName
			END
			ELSE
			BEGIN
				UPDATE tblCustomers
				SET decBalDue = (
						SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0)
						FROM tblCustTrans
						INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
						WHERE tblCustTrans.strCustName = tblCustomers.strCustName
							AND tblCustTransDT.bitReversed = 0
							AND (
								tblCustTrans.strOrdDocID IS NULL
								OR (
									tblCustTrans.strInvDocID IS NOT NULL
									AND tblCustTrans.strOrdDocID IS NOT NULL
									)
								OR (
									tblCustTrans.strOrdDocID IS NOT NULL
									AND tblCustTransDT.lngCustPayID IS NOT NULL
									)
								)
						)
					,decYTDPurch = (
						SELECT ISNULL(SUM(decTotal), 0)
						FROM tblInvoiceDoc
						WHERE strCustName = tblCustomers.strCustName
							AND bitHistoryTrans = 0
							AND dteJournalDate >= @CurrentYrStarts
						)
					,decBalDueF = (
						SELECT ISNULL(SUM(tblCustTransDT.decAmountF), 0)
						FROM tblCustTrans
						INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
						WHERE tblCustTrans.strCustName = tblCustomers.strCustName
							AND tblCustTransDT.bitReversed = 0
							AND (
								tblCustTrans.strOrdDocID IS NULL
								OR (
									tblCustTrans.strInvDocID IS NOT NULL
									AND tblCustTrans.strOrdDocID IS NOT NULL
									)
								OR (
									tblCustTrans.strOrdDocID IS NOT NULL
									AND tblCustTransDT.lngCustPayID IS NOT NULL
									)
								)
						)
					,decYTDPurchF = (
						SELECT ISNULL(SUM(decTotalF), 0)
						FROM tblInvoiceDoc
						WHERE strCustName = tblCustomers.strCustName
							AND bitHistoryTrans = 0
							AND dteJournalDate >= @CurrentYrStarts
						)
					,dteUpdated = GetDate()
				WHERE strCustName = @CustName
			END
		END
	END
	ELSE
	BEGIN
		UPDATE tblCustTrans
		SET bitSettled = 1
		WHERE bitSettled = 0
			AND lngCustTrID IN (
				SELECT lngCustTrID
				FROM tblCustTransDT
				WHERE bitReversed = 0
				GROUP BY lngCustTrID
				HAVING SUM(decAmount) = 0
					AND SUM(decAmountF) = 0
				)

		UPDATE tblCustTrans
		SET bitSettled = 0
		WHERE bitSettled = 1
			AND lngCustTrID IN (
				SELECT lngCustTrID
				FROM tblCustTransDT
				WHERE bitReversed = 0
				GROUP BY lngCustTrID
				HAVING SUM(decAmount) <> 0
					OR SUM(decAmountF) <> 0
				)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[ProcessReversal]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ProcessReversal]
     @CurrentYearBegan AS DATETIME
	,@CustName AS VARCHAR
AS
BEGIN
	UPDATE tblCustomers
	SET decBalDue = (
			SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0)
			FROM tblCustTrans
			INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
			WHERE tblCustTrans.strCustName = tblCustomers.strCustName
				AND tblCustTransDT.bitReversed = 0
				AND (
					tblCustTrans.strOrdDocID IS NULL
					OR (
						tblCustTrans.strInvDocID IS NOT NULL
						AND tblCustTrans.strOrdDocID IS NOT NULL
						)
					OR (
						tblCustTrans.strOrdDocID IS NOT NULL
						AND tblCustTransDT.lngCustPayID IS NOT NULL
						)
					)
			)
		,decYTDPurch = (
			SELECT ISNULL(SUM(decTotal), 0)
			FROM tblInvoiceDoc
			WHERE strCustName = tblCustomers.strCustName
				AND bitHistoryTrans = 0
				AND dteJournalDate >= @CurrentYearBegan
			)
		,decBalDueF = (
			SELECT ISNULL(SUM(tblCustTransDT.decAmountF), 0)
			FROM tblCustTrans
			INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
			WHERE tblCustTrans.strCustName = tblCustomers.strCustName
				AND tblCustTransDT.bitReversed = 0
				AND (
					tblCustTrans.strOrdDocID IS NULL
					OR (
						tblCustTrans.strInvDocID IS NOT NULL
						AND tblCustTrans.strOrdDocID IS NOT NULL
						)
					OR (
						tblCustTrans.strOrdDocID IS NOT NULL
						AND tblCustTransDT.lngCustPayID IS NOT NULL
						)
					)
			)
		,decYTDPurchF = (
			SELECT ISNULL(SUM(decTotalF), 0)
			FROM tblInvoiceDoc
			WHERE strCustName = tblCustomers.strCustName
				AND bitHistoryTrans = 0
				AND dteJournalDate >= @CurrentYearBegan
			)
		,dteUpdated = GetDate()
	WHERE strCustName IN (
			SELECT DISTINCT *
			FROM fnSplitStringAsTable(@CustName, ',')
			)

	UPDATE tblCustTrans
	SET bitSettled = 1
	WHERE bitSettled = 0
		AND lngCustTrID IN (
			SELECT lngCustTrID
			FROM tblCustTransDT
			WHERE bitReversed = 0
			GROUP BY lngCustTrID
			HAVING SUM(decAmount) = 0
				AND SUM(decAmountF) = 0
			)

	UPDATE tblCustTrans
	SET bitSettled = 0
	WHERE bitSettled = 1
		AND lngCustTrID IN (
			SELECT lngCustTrID
			FROM tblCustTransDT
			WHERE bitReversed = 0
			GROUP BY lngCustTrID
			HAVING SUM(decAmount) <> 0
				OR SUM(decAmountF) <> 0
			)
END
GO
/****** Object:  StoredProcedure [dbo].[ProcessWSWIP]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[RecordWSWIP] ***********/

CREATE PROCEDURE [dbo].[ProcessWSWIP] (
	@tblInventoryRequisition CommonTableType Readonly
	,@JBDocID NVARCHAR(100)
	,@DocNumber NVARCHAR(100)
	,@WIPReturnEnum INT
	,@WIPPostedEnum INT
	,@StatusInEnum INT
	,@StatusOutEnum INT
	,@tblSerialUserData CommonTableTypeBig Readonly
	,@SerialNumberTypeEnum INT
	,@LotControlTypeEnum INT
	,@CurrentUser NVARCHAR(40)
	,@UpdatedDate DATETIME
	,@SystemDate DATETIME
	,@JournalDate DATETIME
	,@JobCloseType INT
	,@JourID BIGINT
	,@JobStatus INT
	,@ListInvBinExtRowid InvBinExtTableType ReadOnly
	,@IsAdjustWithoutChangeInQty BIT
	)
AS
BEGIN
	IF (@IsAdjustWithoutChangeInQty = 0)
	BEGIN
		--BEGIN TRY 
		DECLARE @Counter AS INT
		DECLARE @InvReqLineNo AS INT
		DECLARE @Type AS INT
		DECLARE @WIPCompDTID AS INT

		SET @Counter = 1

		INSERT INTO tblWSWIP (
			WIPDocID
			,JBDocID
			,SystemDate
			,JournalDate
			,UserName
			,[Type]
			,JourID
			)
		VALUES (
			@DocNumber
			,@JBDocID
			,@SystemDate
			,@JournalDate
			,@CurrentUser
			,@JobCloseType
			,@JourID
			)

		--Insert WIP Component Inventory Records
		SELECT *
		INTO #tblInventoryRequisition
		FROM @tblInventoryRequisition

		SELECT ROW_NUMBER() OVER (
				ORDER BY CONVERT(INT, ISNULL(COL02, ''))
				) AS RowNumber
			,*
		INTO #tempInvReqEntityTable
		FROM #tblInventoryRequisition --COL02 : Line No

		--Move from bottom 
		SELECT *
		INTO #tblData
		FROM @tblSerialUserData

		SELECT ROW_NUMBER() OVER (
				ORDER BY CONVERT(NVARCHAR(100), ISNULL(COL01, ''))
				) AS UserDataRow#
			,*
		INTO #tempSerialUserData
		FROM #tblData --COL01 = SerialNumber

		SELECT *
		INTO #SerialDataFORCounter
		FROM #tempSerialUserData --#SerialDataFORCounter temp table for @UserDataCounter value set

		DECLARE @IsNewAddedRecord AS BIT

		WHILE (
				@Counter <= (
					SELECT Count(*)
					FROM #tempInvReqEntityTable
					)
				)
		BEGIN
			SELECT @IsNewAddedRecord = CONVERT(BIT, ISNULL(COL22, ''))
			FROM #tempInvReqEntityTable
			WHERE RowNumber = @Counter

			IF (@IsNewAddedRecord = 1) --COL22 = IsNewAddedRecord
			BEGIN
				--Fetch Next Line Number
				SELECT @InvReqLineNo = ISNULL(MAX(intLineNo), 0) + 1
				FROM tblManJobCompInv
				WHERE strJBDocID = @JBDocID

				--Fetch PP Unit
				DECLARE @ppUnit AS MONEY

				SET @ppUnit = 0

				SELECT @ppUnit = CASE tblInvExt.decOnHand
						WHEN 0
							THEN ROUND((tblInv.decLastPPUnit / tblInv.decBuyToStock), 4)
						ELSE ROUND((tblInvExt.decValue / tblInvExt.decOnHand), 4)
						END
				FROM tblInv
				INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
					AND tblInvExt.strLocName = (
						SELECT CONVERT(NVARCHAR(100), ISNULL(COL04, ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) --COL04 = Location
				WHERE (
						tblInv.strPartNumber = (
							SELECT CONVERT(NVARCHAR(100), ISNULL(COL03, ''))
							FROM #tempInvReqEntityTable
							WHERE RowNumber = @Counter
							) --COL03 = PartNo
						OR tblInv.strBarCode = (
							SELECT CONVERT(NVARCHAR(100), ISNULL(COL03, ''))
							FROM #tempInvReqEntityTable
							WHERE RowNumber = @Counter
							) --COL03 = PartNo
						OR tblInv.strBarCode2 = (
							SELECT CONVERT(NVARCHAR(100), ISNULL(COL03, ''))
							FROM #tempInvReqEntityTable
							WHERE RowNumber = @Counter
							)
						) --COL03 = PartNo
					AND tblInv.intType = 1

				--Insert New Inventory
				INSERT INTO tblWSProcessDocDT (
					ProcessDocID
					,[LineNo]
					,PartNumber
					,Location
					,PartDesc
					,QuotedQty
					,JobQty
					,Unit
					,ItemType
					,TaxCode
					,Currency
					,IsForeign
					,LineDiscPerc
					,LineDiscAmt
					,LineDiscAmtF
					,IsDiscountTax
					,StockQty
					,StockUnit
					,StockQtyRemain
					,PriceEaExc
					,LineTotExc
					,LineTaxAmt
					,PriceEaInc
					,LineTotInc
					,PriceEaExcF
					,LineTotExcF
					,LineTaxAmtF
					,EaIncTaxF
					,TotIncTaxF
					,CreatedDate
					,UpdatedDate
					,CreatedBy
					,UpdatedBy
					,IsDelCost
					,BillingMethod
					,QtyRemaining
					,TaxObj
					,SalesName
					,PartExtendedDesc
					,BuyoutCost
					,ItemWeight
					,VolumetricWeight
					,TransactionFieldID
					)
				VALUES (
					@JBDocID -- ProcessDocID
					,(
						SELECT CONVERT(INT, ISNULL(COL02, ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) --,[LineNo]
					,(
						SELECT CONVERT(NVARCHAR(100), ISNULL(COL03, ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) --,PartNumber
					,(
						SELECT CONVERT(NVARCHAR(100), ISNULL(COL04, ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) --,Location
					,(
						SELECT strDesc
						FROM tblInv
						WHERE strPartNumber = (
								SELECT CONVERT(NVARCHAR(100), ISNULL(COL03, ''))
								FROM #tempInvReqEntityTable
								WHERE RowNumber = @Counter
								)
						) --,PartDesc
					,0 --,QuotedQty
					,0 --,JobQty
					,(
						SELECT CONVERT(NVARCHAR(30), ISNULL(COL14, ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) --,Unit
					,(
						SELECT CONVERT(NVARCHAR(10), ISNULL(COL28, ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) --,ItemType
					,'' --,TaxCode
					,'' --,Currency
					,0 --,IsForeign
					,0 --,LineDiscPerc
					,0 --,LineDiscAmt
					,0 --,LineDiscAmtF
					,0 --,IsDiscountTax
					,0 --,StockQty
					,(
						SELECT CONVERT(NVARCHAR(30), ISNULL(COL14, ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) --,StockUnit
					,0 --,StockQtyRemain
					,0 --,PriceEaExc
					,0 --,LineTotExc
					,0 --,LineTaxAmt
					,0 --,PriceEaInc
					,0 --,LineTotInc
					,0 --,PriceEaExcF
					,0 --,LineTotExcF
					,0 --,LineTaxAmtF
					,0 --,EaIncTaxF
					,0 --,TotIncTaxF
					,GETDATE() --,CreatedDate
					,GETDATE() --,UpdatedDate
					,@CurrentUser --,CreatedBy
					,@CurrentUser --,UpdatedBy
					,0 --,IsDelCost
					,0 --,BillingMethod
					,0 --,QtyRemaining
					,NULL --,TaxObj
					,'' --,SalesName
					,'' --,PartExtendedDesc
					,(
						SELECT CONVERT(MONEY, ISNULL(COL27, 0))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) --,BuyoutCost
					,0 --,ItemWeight
					,0 --,VolumetricWeight
					,(
						SELECT TOP 1 TransactionFieldID
						FROM tblWSProcessDocDT
						WHERE ProcessDocID = @JBDocID
						) --,TransactionFieldID --If this field will be null than data will not fetch in adjust Invoice Job
					)
			END

			IF (
					(
						SELECT CONVERT(MONEY, ISNULL(COL12, ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) > 0
					) --COL12 : Return Qty
				SET @Type = @WIPReturnEnum
			ELSE
				SET @Type = @WIPPostedEnum

			INSERT INTO tblWSWIPCompDT (
				WIPDocID
				,[LineNo]
				,PartNumber
				,Location
				,PostedQty
				,PostQty
				,Amount
				,PostedAmount
				,PostAmount
				,[Type]
				,ReturnQty
				)
			VALUES (
				@DocNumber
				,(
					SELECT CONVERT(INT, ISNULL(COL02, ''))
					FROM #tempInvReqEntityTable
					WHERE RowNumber = @Counter
					) --COL02 = LineNo
				,(
					SELECT CONVERT(NVARCHAR(100), ISNULL(COL03, ''))
					FROM #tempInvReqEntityTable
					WHERE RowNumber = @Counter
					) --COL03 = PartNumber
				,(
					SELECT CONVERT(NVARCHAR(20), ISNULL(COL04, ''))
					FROM #tempInvReqEntityTable
					WHERE RowNumber = @Counter
					) --COl04 = Location
				,(
					SELECT CONVERT(MONEY, ISNULL(COL05, ''))
					FROM #tempInvReqEntityTable
					WHERE RowNumber = @Counter
					) --COl05 = PostedQty
				,(
					SELECT CONVERT(MONEY, ISNULL(COL06, ''))
					FROM #tempInvReqEntityTable
					WHERE RowNumber = @Counter
					) --COl06 = PostQty
				,(
					SELECT CONVERT(MONEY, ISNULL(COL07, ''))
					FROM #tempInvReqEntityTable
					WHERE RowNumber = @Counter
					) --COl07 = Amount
				,(
					SELECT CONVERT(MONEY, ISNULL(COL08, ''))
					FROM #tempInvReqEntityTable
					WHERE RowNumber = @Counter
					) --COl08 = PostedAmount
				,(
					SELECT CONVERT(MONEY, ISNULL(COL09, ''))
					FROM #tempInvReqEntityTable
					WHERE RowNumber = @Counter
					) --COl09 = PostAmount
				,@Type
				,(
					SELECT CONVERT(MONEY, ISNULL(COL12, ''))
					FROM #tempInvReqEntityTable
					WHERE RowNumber = @Counter
					) --COl12 = RetuenQty
				)

			IF (
					(
						SELECT CONVERT(MONEY, ISNULL(COL06, ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) > 0
					OR (
						SELECT CONVERT(MONEY, ISNULL(COL12, ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) > 0
					) -- COL06 = PostQty , COL12 = Return Qty
			BEGIN
				--Start MultipleBin Changes 
				--Insert Bin Details 
				DECLARE @rowId AS INT

				SET @rowId = (
						SELECT CONVERT(INT, ISNULL(COL32, ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) --COL32 = RowId

				IF OBJECT_ID('tempdb..#ListInvBinExtRowidTemp') IS NOT NULL
					DROP TABLE #ListInvBinExtRowidTemp

				SELECT ROW_NUMBER() OVER (
						ORDER BY CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
						) AS BinExtRow#
					,*
				INTO #ListInvBinExtRowidTemp
				FROM @ListInvBinExtRowId
				WHERE RowId = @rowId

				IF (
						(
							SELECT Count(*)
							FROM #ListInvBinExtRowidTemp
							) > 0
						)
				BEGIN
					DECLARE @CounterBinExtRowid AS INT

					SET @CounterBinExtRowid = 0

					WHILE (
							@CounterBinExtRowid <= (
								SELECT Count(*)
								FROM #ListInvBinExtRowidTemp
								)
							)
					BEGIN
						IF (
								(
									SELECT IssueQty
									FROM #ListInvBinExtRowidTemp
									WHERE BinExtRow# = @CounterBinExtRowid
									) > 0
								)
						BEGIN
							INSERT INTO [dbo].[tblWSWIPCompInvBin] --Insted of tblManWIPCompInvBin
								(
								WIPDocID
								,[LineNo]
								,BinID
								,Qty
								)
							VALUES (
								@DocNumber
								,(
									SELECT CONVERT(INT, ISNULL(COL02, ''))
									FROM #tempInvReqEntityTable
									WHERE RowNumber = @Counter
									)
								,-- COL32 RowId , COL02 = Line Number  -- COL32 = @rowId AND
								(
									SELECT BinID
									FROM #ListInvBinExtRowidTemp
									WHERE BinExtRow# = @CounterBinExtRowid
									)
								,(
									SELECT IssueQty
									FROM #ListInvBinExtRowidTemp
									WHERE BinExtRow# = @CounterBinExtRowid
									)
								)
						END

						SET @CounterBinExtRowid = @CounterBinExtRowid + 1
					END
				END

				--End MultipleBin Changes 
				--VBCODE : If CBool(flxInventory.Item(i, FlxInventoryGridCols.InventorySerialNumber)) = True Then
				IF (
						(
							SELECT CONVERT(BIT, ISNULL(COL16, ''))
							FROM #tempInvReqEntityTable
							WHERE RowNumber = @Counter
							) = 1
						) --COL16 = IsSerialType
				BEGIN
					SELECT @WIPCompDTID = MAX(ID)
					FROM tblWSWIPCompDT
					WHERE WIPDocID = @DocNumber
						AND [LineNo] = (
							SELECT CONVERT(INT, ISNULL(COL02, ''))
							FROM #tempInvReqEntityTable
							WHERE RowNumber = @Counter
							) --COL02 = line no

					IF (
							(
								SELECT COL20
								FROM #tempInvReqEntityTable
								WHERE RowNumber = @Counter
								) IS NOT NULL
							) --COL20 = UserData
					BEGIN
						DECLARE @Status AS INT

						SET @Status = 0

						IF (
								(
									SELECT CONVERT(MONEY, ISNULL(COL12, ''))
									FROM #tempInvReqEntityTable
									WHERE RowNumber = @Counter
									) > 0
								)
							SET @Status = @StatusInEnum
						ELSE
							SET @Status = @StatusOutEnum

						DECLARE @UserDataCounter AS INT

						SET @UserDataCounter = 1

						--INSERT INTO #SerialDataFORCounter
						--SELECT *
						--FROM #tempSerialUserData
						SELECT TOP 1 @UserDataCounter = UserDataRow#
						FROM #SerialDataFORCounter
						WHERE COL24 = (
								SELECT CONVERT(NVARCHAR(100), ISNULL(COL03, ''))
								FROM #tempInvReqEntityTable
								WHERE RowNumber = @Counter
								)

						--WHILE(@UserDataCounter <= (SELECT Max(UserDataRow#) FROM #tempSerialUserData WHERE COL24 = (SELECT CONVERT(NVARCHAR(100),ISNULL(COL03,'')) FROM #tempInvReqEntityTable WHERE RowNumber = @Counter)))
						WHILE (
								(
									SELECT Count(*)
									FROM #SerialDataFORCounter
									WHERE COL24 = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(COL03, ''))
											FROM #tempInvReqEntityTable
											WHERE RowNumber = @Counter
											)
										AND COL10 = @Counter
									) > 0
								)
						BEGIN
							--INSERT INTO tblManWIPCompInvSerial
							INSERT INTO tblWSWIPCompSerial (
								WIPDocID
								,WIPID
								,[LineNo]
								,SerialNumber
								,Qty
								,Unit
								,IsExpiryDate
								,ExpiryDate
								,SerialLotType
								,BinId
								)
							VALUES (
								@DocNumber
								,@WIPCompDTID
								,(
									SELECT CONVERT(INT, ISNULL(COL02, ''))
									FROM #tempInvReqEntityTable
									WHERE RowNumber = @Counter
									)
								,--COL02 = LineNo
								(
									SELECT CONVERT(NVARCHAR(200), ISNULL(COL01, ''))
									FROM #tempSerialUserData
									WHERE COL24 = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(COL03, ''))
											FROM #tempInvReqEntityTable
											WHERE RowNumber = @Counter
											)
										AND UserDataRow# = @UserDataCounter
									)
								,--COL01 =SerialNumber
								(
									SELECT CONVERT(MONEY, ISNULL(COL03, ''))
									FROM #tempSerialUserData
									WHERE UserDataRow# = @UserDataCounter
									)
								,--COL03 =Quantity,
								(
									SELECT CONVERT(NVARCHAR(30), ISNULL(COL04, ''))
									FROM #tempSerialUserData
									WHERE UserDataRow# = @UserDataCounter
									)
								,--COL04 =Unit,
								(
									SELECT CONVERT(BIT, ISNULL(COL05, ''))
									FROM #tempSerialUserData
									WHERE UserDataRow# = @UserDataCounter
									)
								,--COL05 =IsExpiryDateExists,
								CASE (
										SELECT CONVERT(BIT, ISNULL(COL05, ''))
										FROM #tempSerialUserData
										WHERE UserDataRow# = @UserDataCounter
										)
									WHEN 1
										THEN (
												SELECT CONVERT(DATETIME, ISNULL(COL06, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												)
									ELSE NULL
									END
								,--COL06 =ExpiryDate,
								(
									SELECT CONVERT(INT, ISNULL(COL09, ''))
									FROM #tempSerialUserData
									WHERE UserDataRow# = @UserDataCounter
									)
								,--COL09 =SerialLotType,
								(
									SELECT CONVERT(BIGINT, ISNULL(COL31, ''))
									FROM #tempSerialUserData
									WHERE UserDataRow# = @UserDataCounter
									) --COL31 =BinId,
								)

							IF (
									(
										SELECT CONVERT(NVARCHAR(100), ISNULL(COL07, ''))
										FROM #tempSerialUserData
										WHERE UserDataRow# = @UserDataCounter
										) = ''
									) --COL07 = Last Doc
							BEGIN
								IF (
										(
											SELECT CONVERT(INT, ISNULL(COL09, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											) = @SerialNumberTypeEnum
										) --COL09 = SerialLotType
								BEGIN
									DECLARE @StatusQuery INT
									DECLARE @LocNameQuery NVARCHAR(100)

									SELECT intStatus
										,strLocName
									FROM tblInvSerialExt
									WHERE strPartNumber = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(COL03, ''))
											FROM #tempInvReqEntityTable
											WHERE RowNumber = @Counter
											)
										AND strSerialNumber = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(COL01, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											) --COL03 = PartNumber, COL01 = serialNumber
										AND lngBinID = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(COL31, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											) --COL31 = BinId

									IF (
											@Status = @StatusQuery
											OR (
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL04, ''))
												FROM #tempInvReqEntityTable
												WHERE RowNumber = @Counter
												) <> @LocNameQuery
											)
									BEGIN
										--						Throw New InvalidUserOperationException('Cant Adjust Serial Items that Contain Subsequent Movement -')
										PRINT 'Exception'
									END
								END

								DECLARE @SerialLotQty AS MONEY

								SET @SerialLotQty = 0

								IF (@Status = @StatusOutEnum)
								BEGIN
									IF (
											(
												SELECT CONVERT(INT, ISNULL(COL09, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												) = @LotControlTypeEnum
											) --COL09 = SerialLotType
										SET @SerialLotQty = (
												SELECT CONVERT(MONEY, ISNULL(COL03, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												) * (- 1) --COL03 = Qty
									ELSE
										SET @SerialLotQty = 0 --(SELECT CONVERT(MONEY,ISNULL(COL03,'')) FROM #tempSerialUserData WHERE UserDataRow# = @UserDataCounter)  --COL03 = Qty
								END
								ELSE
								BEGIN
									SET @SerialLotQty = (
											SELECT CONVERT(MONEY, ISNULL(COL03, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											) --COL03 = Qty
								END

								INSERT INTO tblSerialNumberTracking (
									strPartNumber
									,strSerialNumber
									,strUserName
									,dteUpdatedDate
									,intType
									,strDocID
									,intLineNo
									,decQty
									,strLocation
									,intStatus
									,bitExpiryDate
									,dteExpiryDate
									,lngBinID
									)
								VALUES (
									(
										SELECT CONVERT(NVARCHAR(100), ISNULL(COL03, ''))
										FROM #tempInvReqEntityTable
										WHERE RowNumber = @Counter
										)
									,--COL03 = Part Number
									(
										SELECT CONVERT(NVARCHAR(200), ISNULL(COL01, ''))
										FROM #tempSerialUserData
										WHERE UserDataRow# = @UserDataCounter
										)
									,--COL01 = Serial number
									@CurrentUser
									,@UpdatedDate
									,13
									,--TODO:Create new PL_SerialNumberTypes for Inventory Issue workshop
									@DocNumber
									,(
										SELECT CONVERT(INT, ISNULL(COL02, ''))
										FROM #tempInvReqEntityTable
										WHERE RowNumber = @Counter
										)
									,--COL02 = line number
									(
										SELECT CONVERT(MONEY, ISNULL(COL03, ''))
										FROM #tempSerialUserData
										WHERE UserDataRow# = @UserDataCounter
										)
									,--COL03 = qty
									(
										SELECT CONVERT(NVARCHAR(20), ISNULL(COL04, ''))
										FROM #tempInvReqEntityTable
										WHERE RowNumber = @Counter
										)
									,--COL04 = Location,
									@Status
									,(
										SELECT CONVERT(BIT, ISNULL(COL05, ''))
										FROM #tempSerialUserData
										WHERE UserDataRow# = @UserDataCounter
										)
									,--COL05 = IsExpiryDateExists
									CASE (
											SELECT CONVERT(BIT, ISNULL(COL05, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											)
										WHEN 1
											THEN (
													SELECT CONVERT(DATETIME, ISNULL(COL06, ''))
													FROM #tempSerialUserData
													WHERE UserDataRow# = @UserDataCounter
													)
										ELSE NULL
										END
									,--COL06 =ExpiryDate,
									(
										SELECT CONVERT(BIGINT, ISNULL(COL31, ''))
										FROM #tempSerialUserData
										WHERE UserDataRow# = @UserDataCounter
										) --COL31 = BinId
									)

								IF (
										(
											SELECT CONVERT(INT, ISNULL(COL09, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											) = @LotControlTypeEnum
										) --COL09 = SerialLotType
								BEGIN
									DECLARE @ResultCount AS INT

									SET @ResultCount = 0

									SELECT @ResultCount = COUNT(strLotNumber)
									FROM tblInvLotExt
									WHERE strPartNumber = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(COL03, ''))
											FROM #tempInvReqEntityTable
											WHERE RowNumber = @Counter
											)
										AND strLotNumber = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(COL01, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											)
										AND strLocName = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(COL04, ''))
											FROM #tempInvReqEntityTable
											WHERE RowNumber = @Counter
											) --COL03 = PartNo,COL01=Serial Number, COL04= Location
										AND lngBinID = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(COL31, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											) -- COL31 = BinId

									IF (@ResultCount > 0)
										UPDATE tblInvLotExt
										SET decQty = decQty + @SerialLotQty
											,dteUpdatedDate = @UpdatedDate
										WHERE strPartNumber = (
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL03, ''))
												FROM #tempInvReqEntityTable
												WHERE RowNumber = @Counter
												)
											AND strLotNumber = (
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL01, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												)
											AND strLocName = (
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL04, ''))
												FROM #tempInvReqEntityTable
												WHERE RowNumber = @Counter
												) --COL03=PartNumber,COL01=SerialNumber,COL04=Location
											AND lngBinID = (
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL31, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												) --COL31 = BinId 
									ELSE
										INSERT INTO tblInvLotExt (
											strPartNumber
											,strLotNumber
											,strLocName
											,decQty
											,bitExpiryDate
											,dteExpiryDate
											,dteUpdatedDate
											,lngBinID
											)
										VALUES (
											(
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL03, ''))
												FROM #tempInvReqEntityTable
												WHERE RowNumber = @Counter
												)
											,--COL03 = PartNo
											(
												SELECT CONVERT(NVARCHAR(200), ISNULL(COL01, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												)
											,--COL01=Serial Number
											(
												SELECT CONVERT(NVARCHAR(20), ISNULL(COL04, ''))
												FROM #tempInvReqEntityTable
												WHERE RowNumber = @Counter
												)
											,--COL04= Location
											@SerialLotQty
											,(
												SELECT CONVERT(BIT, ISNULL(COL05, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												)
											,--COL05=IsExpiryDateExists
											CASE (
													SELECT CONVERT(BIT, ISNULL(COL05, ''))
													FROM #tempSerialUserData
													WHERE UserDataRow# = @UserDataCounter
													)
												WHEN 1
													THEN (
															SELECT CONVERT(DATETIME, ISNULL(COL06, ''))
															FROM #tempSerialUserData
															WHERE UserDataRow# = @UserDataCounter
															)
												ELSE NULL
												END
											,--COL06 =ExpiryDate,,
											@UpdatedDate
											,(
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL31, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												) --COL31 = BinId 
											)
								END
								ELSE
								BEGIN
									SET @ResultCount = 0

									SELECT @ResultCount = COUNT(strSerialNumber)
									FROM tblInvSerialExt
									WHERE strPartNumber = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(COL03, ''))
											FROM #tempInvReqEntityTable
											WHERE RowNumber = @Counter
											) --COL03 = PartNo
										AND strSerialNumber = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(COL01, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											) --COL01=Serial
										AND lngBinID = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(COL31, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											) --COL31 = BinId 

									IF (@ResultCount > 0)
										UPDATE tblInvSerialExt
										SET strLocName = (
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL04, ''))
												FROM #tempInvReqEntityTable
												WHERE RowNumber = @Counter
												)
											,--COL04 = Location
											decQty = @SerialLotQty
											,intStatus = @Status
											,strDocID = @DocNumber
											,dteUpdatedDate = @UpdatedDate
										WHERE strPartNumber = (
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL03, ''))
												FROM #tempInvReqEntityTable
												WHERE RowNumber = @Counter
												) --COL03 = part Number
											AND strSerialNumber = (
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL01, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												) --COL01=Serial Number
											AND lngBinID = (
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL31, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												) --COL31 = BinId 
									ELSE
										INSERT INTO tblInvSerialExt (
											strPartNumber
											,strSerialNumber
											,strLocName
											,decQty
											,intStatus
											,strDocID
											,dteUpdatedDate
											,bitDimensionExist
											,strDimension
											,lngBinID
											)
										VALUES (
											(
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL03, ''))
												FROM #tempInvReqEntityTable
												WHERE RowNumber = @Counter
												)
											,--COL03 = PartNo,
											(
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL01, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												)
											,--COL01=Serial Number,
											(
												SELECT CONVERT(NVARCHAR(20), ISNULL(COL04, ''))
												FROM #tempInvReqEntityTable
												WHERE RowNumber = @Counter
												)
											,--COL04= Location,
											@SerialLotQty
											,@Status
											,@DocNumber
											,@UpdatedDate
											,(
												SELECT COL11
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												)
											,CASE CONVERT(BIT, (
														SELECT COL11
														FROM #tempSerialUserData
														WHERE UserDataRow# = @UserDataCounter
														))
												WHEN 1
													THEN (
															SELECT COL12
															FROM #tempSerialUserData
															WHERE UserDataRow# = @UserDataCounter
															)
												ELSE ''
												END
											,(
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL31, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												) --COL31 = BinId 
											)
								END
							END --End of Last Doc condition

							DELETE
							FROM #SerialDataFORCounter
							WHERE UserDataRow# = @UserDataCounter

							SELECT TOP 1 @UserDataCounter = UserDataRow#
							FROM #SerialDataFORCounter
							WHERE COL24 = (
									SELECT CONVERT(NVARCHAR(100), ISNULL(COL03, ''))
									FROM #tempInvReqEntityTable
									WHERE RowNumber = @Counter
									)
								--SET @UserDataCounter = @UserDataCounter + 1
						END
					END
				END
			END

			SET @Counter = @Counter + 1
		END

		-- Update buyout cost //Workshop:IR:Buyout on 18042018
		UPDATE tblWSProcessDocDT
		SET BuyoutCost = t.COL27 --BuyoutCost
		FROM @tblInventoryRequisition t
		WHERE tblWSProcessDocDT.PartNumber = t.COL03 --PartNumber
			AND tblWSProcessDocDT.[LineNo] = t.COL02 --LineNo
			AND tblWSProcessDocDT.ProcessDocID = @JBDocID

		UPDATE tblLastIDs
		SET lngIRNumber += 1
			--END TRY 
			--BEGIN CATCH  
			--END CATCH 
	END

	--Update Status AND Update our IDs table 
	UPDATE tblWSProcessDoc
	SET JobStatusType = @JobStatus
	WHERE ProcessDocID = @JBDocID
END
GO
/****** Object:  StoredProcedure [dbo].[prOptContractType_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prOptContractType_List]  
(  
 @SQstrSearchText nvarchar(100) = NULL  
)  
  
AS  
BEGIN  
 SELECT lngId as ContractTypeId,strContractType as ContractType From tblOptContractType   
 WHERE (strContractType LIKE '%' + @SQstrSearchText + '%' OR @SQstrSearchText IS NULL)  
END  
GO
/****** Object:  StoredProcedure [dbo].[prOrderDocDADTBin_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prOrderDocDADTBin_List]
	@SQstrOrdDADocID NVARCHAR(MAX)
AS
BEGIN
	SELECT	
		*,
		ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblOrderDocDADTBin.lngBinId),'') AS strBinCode
	FROM 
		tblOrderDocDADTBin
	WHERE 
		strOrdDADocID IN (SELECT VALUE FROM dbo.fnSplitStringAsTable(@SQstrOrdDADocID,','))
END

GO
/****** Object:  StoredProcedure [dbo].[prOrderDocDADTBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prOrderDocDADTBin_Save]
(
	@SQlngId BIGINT
	,@SQstrOrdDADocID NVARCHAR(50)
	,@SQintLineNo INT
	,@SQlngBinId BIGINT
	,@SQdecQty MONEY
)
AS
BEGIN
	IF NOT EXISTS (SELECT lngId FROM tblOrderDocDADTBin WHERE lngId = @SQlngId)
		BEGIN
				
			INSERT INTO tblOrderDocDADTBin
				   (strOrdDADocID
				   ,intLineNo
				   ,lngBinId
				   ,decQty)
			 VALUES
				   (@SQstrOrdDADocID
				   ,@SQintLineNo
				   ,@SQlngBinId
				   ,@SQdecQty)
		END
	ELSE
		BEGIN
			UPDATE tblOrderDocDADTBin
			   SET strOrdDADocID = @SQstrOrdDADocID
				  ,intLineNo = @SQintLineNo
				  ,lngBinId = @SQlngBinId
				  ,decQty = @SQdecQty
			 WHERE lngId = @SQlngId
		END	
END

GO
/****** Object:  StoredProcedure [dbo].[prOrderDocPGDTBin_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[prOrderDocPGDTBin_List]
	-- Add the parameters for the stored procedure here
	@SQstrOrdPGDocID nvarchar(Max)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT	
		*,
		ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblOrderDocPGDTBin.lngBinId),'') AS strBinCode
	FROM 
		tblOrderDocPGDTBin
	WHERE 
		strOrdPGDocID IN (SELECT VALUE FROM dbo.fnSplitStringAsTable(@SQstrOrdPGDocID,','))
END

GO
/****** Object:  StoredProcedure [dbo].[prOrderDocPGDTBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prOrderDocPGDTBin_Save]
(
	@SQlngId BIGINT
	,@SQstrOrdPGDocID NVARCHAR(50)
	,@SQintLineNo INT
	,@SQlngBinId BIGINT
	,@SQdecQty MONEY
)
AS
BEGIN
	IF NOT EXISTS (SELECT lngId FROM tblOrderDocPGDTBin WHERE lngId = @SQlngId)
		BEGIN
				INSERT INTO tblOrderDocPGDTBin
							   (strOrdPGDocID
							   ,intLineNo
							   ,lngBinId
							   ,decQty)
				VALUES
							   (@SQstrOrdPGDocID
							   ,@SQintLineNo
							   ,@SQlngBinId
							   ,@SQdecQty
							   )
		END
	ELSE
		BEGIN
				UPDATE tblOrderDocPGDTBin
				SET strOrdPGDocID = @SQstrOrdPGDocID
					,intLineNo = @SQintLineNo
					,lngBinId = @SQlngBinId
					,decQty = @SQdecQty
				WHERE lngId = @SQlngId
		END
END

GO
/****** Object:  StoredProcedure [dbo].[ProvinceDelete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ProvinceDelete]

(

	@Province NVARCHAR(50)

)

As 

BEGIN 

	Delete from tblProvince WHERE strProvince = @Province

	UPDATE tblCompany SET strProvince = '' WHERE strProvince = @Province;

	UPDATE tblCompanyLoc SET strProvince = '' WHERE strProvince = @Province;

	UPDATE tblCustomerContacts SET strProvince = '' WHERE strProvince = @Province;

	UPDATE tblCustomerLoc SET strProvince = '' WHERE strProvince = @Province;

	UPDATE tblCustomers SET strProvince = '' WHERE strProvince = @Province;

	UPDATE tblProjectsContact SET strProvince = '' WHERE strProvince = @Province;

	UPDATE tblProvince SET strProvince = '' WHERE strProvince = @Province;

	UPDATE tblSalesPersons SET strProvince = '' WHERE strProvince = @Province;

	UPDATE tblVendorContacts SET strProvince = '' WHERE strProvince = @Province;

	UPDATE tblVendors SET strProvince = '' WHERE strProvince = @Province

END

GO
/****** Object:  StoredProcedure [dbo].[ProvinceUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ProvinceUpdate]
(
	@Province NVARCHAR(50),
	@ProvinceOld NVARCHAR(50)
)
As 
BEGIN 
	UPDATE tblProvince SET strProvince = @Province WHERE strProvince = @ProvinceOld;
	UPDATE tblCompany SET strProvince = @Province WHERE strProvince = @ProvinceOld;
	UPDATE tblCompanyLoc SET strProvince = @Province WHERE strProvince = @ProvinceOld;
	UPDATE tblCustomerContacts SET strProvince = @Province WHERE strProvince = @ProvinceOld;
	UPDATE tblCustomerLoc SET strProvince = @Province WHERE strProvince = @ProvinceOld;
	UPDATE tblCustomers SET strProvince = @Province WHERE strProvince = @ProvinceOld;
	UPDATE tblProjectsContact SET strProvince = @Province WHERE strProvince = @ProvinceOld;
	UPDATE tblProvince SET strProvince = @Province WHERE strProvince = @ProvinceOld;
	UPDATE tblSalesPersons SET strProvince = @Province WHERE strProvince = @ProvinceOld;
	UPDATE tblVendorContacts SET strProvince = @Province WHERE strProvince = @ProvinceOld;
	UPDATE tblVendors SET strProvince = @Province WHERE strProvince = @ProvinceOld
END
GO
/****** Object:  StoredProcedure [dbo].[prPickTicketsDTBin_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prPickTicketsDTBin_Delete]
	-- Add the parameters for the stored procedure here
	@SQstrPkTkDocID nvarchar(50)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	DELETE FROM tblPickTicketsDTBin WHERE strPkTkDocID = @SQstrPkTkDocID
END

GO
/****** Object:  StoredProcedure [dbo].[prPickTicketsDTBin_List]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prPickTicketsDTBin_List]
	-- Add the parameters for the stored procedure here
	@SQstrPkTkDocID nvarchar(50)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT	
		*,
		ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblPickTicketsDTBin.lngBinId),'') AS strBinCode
	FROM 
		tblPickTicketsDTBin 
	WHERE 
		strPkTkDocID = @SQstrPkTkDocID
END

GO
/****** Object:  StoredProcedure [dbo].[prPickTicketsDTBin_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prPickTicketsDTBin_Save]   
@SQlngId bigint,   
@SQstrPkTkDocID nvarchar(50),   
@SQintLineNo INT,   
@SQlngBinId bigint,   
@SQdecQty money,
@SQbitPickingBin bit
AS  
BEGIN   
	 
	INSERT INTO [dbo].[tblPickTicketsDTBin]         
	([strPkTkDocID] ,[intLineNo] ,[lngBinId] ,[decQty], [bitPickingBin] )      
	VALUES         
	(@SQstrPkTkDocID, @SQintLineNo, @SQlngBinId, @SQdecQty, @SQbitPickingBin)    
END  
GO
/****** Object:  StoredProcedure [dbo].[prPODs_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[prPODs_SelectAll]    Script Date: 10/27/2017 12:14:16 PM ******/

CREATE PROCEDURE [dbo].[prPODs_SelectAll]
(
	 @StartDate		as datetime 
	,@EndDate		as datetime
	,@UserName		as nvarchar(20)
	,@BPToolsMode	as bit
)
	AS
	BEGIN

		IF @BPToolsMode = 1
		BEGIN 

			SELECT  A.strInvDocID
				   ,A.lngInvTrackID
				   ,A.lngJourID
				   ,isnull(A.dteSystemDate					, getdate())			as dteSystemDate	
				   ,isnull(A.dteJournalDate					, getdate())			as dteJournalDate	
				   ,isnull(A.dteRequired					, getdate())			as dteRequired	
				   ,isnull(A.strUserName					, '')					as strUserName	
				   ,isnull(A.strCustName					, '')					as strCustName
				   ,[dbo].[GetCustomerDesc](isnull(A.strCustName			, ''))	as strCustDesc	
				   ,isnull(A.strSoldTo						, '')					as strSoldTo		
				   ,isnull(A.strShipTo						, '')					as strShipTo		
				   ,isnull(A.strReference					, '')					as strReference	
				   ,isnull(A.decSubTotal					, 0)					as decSubTotal	
				   ,isnull(A.decVAT							, 0)					as decVAT			
				   ,isnull(A.decTotal						, 0)					as decTotal		
				   ,isnull(A.bitFromSO						, 0)					as bitFromSO		
				   ,isnull(A.strOrdDocID					,'')					as strOrdDocID
				   ,isnull(A.bitHistoryTrans				, 0)					as bitHistoryTrans				
				   ,isnull(A.strNotes						, '')					as strNotes					
				   ,isnull(A.bitPrinted						, 0)					as bitPrinted					
				   ,isnull(A.bitEmailed						, 0)					as bitEmailed					
				   ,isnull(A.intPaidBy						, 0)					as intPaidBy					
				   ,isnull(A.intAccount						,'0')						as intAccount					
				   ,isnull(A.strSalesName					,'')					as strSalesName				
				   ,isnull(A.strAddInfo						, '')					as strAddInfo					
				   ,isnull(A.bitReserved					, 0)					as bitReserved				
				   ,isnull(A.strCurrency					, '')					as strCurrency				
				   ,isnull(A.bitIsForeign					, 0)					as bitIsForeign				
				   ,isnull(A.decSubTotalF					, 0)					as decSubTotalF				
				   ,isnull(A.decVATF						, 0)					as decVATF					
				   ,isnull(A.decTotalF						, 0)					as decTotalF					
				   ,isnull(A.decExchange					, 0)					as decExchange				
				   ,isnull(A.strTerm						, '')					as strTerm					
				   ,isnull(A.intDept						, 0)					as intDept					
				   ,ISNULL(A.strField1						, '')					as strField1					
				   ,ISNULL(A.strField2						, '')					as strField2					
				   ,ISNULL(A.strField3						, '')					as strField3					
				   ,ISNULL(A.strField4						, '')					as strField4					
				   ,ISNULL(A.strField5						, '')					as strField5					
				   ,ISNULL(A.strField6						, '')					as strField6					
				   ,ISNULL(A.strField7						, '')					as strField7					
				   ,ISNULL(A.strField8						, '')					as strField8					
				   ,ISNULL(A.strField9						, '')					as strField9					
				   ,ISNULL(A.strField10						, '')					as strField10					
				   ,ISNULL(A.strField11						, '')					as strField11					
				   ,ISNULL(A.strField12						, '')					as strField12					
				   ,ISNULL(A.strSubFormated					, '')					as strSubFormated				
				   ,ISNULL(A.strVATFormatted				, '')					as strVATFormatted			
				   ,ISNULL(A.strTotFormatted				, '')					as strTotFormatted			
				   ,ISNULL(A.dteField13						, 0)					as dteField13					
				   ,ISNULL(A.dteField14						, 0)					as dteField14					
				   ,ISNULL(A.decDiscPerc					, 0)					as decDiscPerc				
				   ,ISNULL(A.decDiscAmt						, 0)					as decDiscAmt					
				   ,ISNULL(A.decDiscAmtF					, 0)					as decDiscAmtF				
				   ,isnull(A.strDiscFormatted				,'')					as strDiscFormatted			
				   ,isnull(A.strOrdFQDocID					,'')					as strOrdFQDocID				
				   ,isnull(A.strStatusTypeCode				,'')					as strStatusTypeCode			
				   ,isnull(A.strCNReasonCode				,'')					as strCNReasonCode			
				   ,ISNULL(A.bitBookmark					,0)						as bitBookmark				
				   ,ISNULL(A.dteSystemDateTime				,GETDATE())				as dteSystemDateTime			
				   ,ISNULL(A.strPaidBy						,'')					as strPaidBy					
				   ,ISNULL(A.intSentDoc						,0)						as intSentDoc					
				   ,ISNULL(A.strVAT							,'')					as strVAT						
				   ,ISNULL(A.strDelMethodCode				,'')					as strDelMethodCode			
				   ,ISNULL(A.decTotalWeight					,0)						as decTotalWeight				
				   ,ISNULL(A.decTotalVolWeight				,0)						as decTotalVolWeight			
				   ,ISNULL(A.decDeliveryCost				,0)						as decDeliveryCost			
				   ,ISNULL(A.decDeliveryCostF				,0)						as decDeliveryCostF			
				   ,ISNULL(A.strDeliveryCostFormatted		,'')					as strDeliveryCostFormatted	
				   ,ISNULL(A.bitShipmentsAuditTrail			,0)						as bitShipmentsAuditTrail		
				   ,ISNULL(A.intRevisionNumber				,0)						as intRevisionNumber			
				   ,ISNULL(A.strStoreNumber					,'')					as strStoreNumber				
				   ,ISNULL(A.strEDI							,'')					as strEDI						
				   ,ISNULL(A.bitNoPODRequired				,0)						as bitNoPODRequired			
				   ,ISNULL(STUFF((SELECT DISTINCT CHAR(10) + replace(isnull(strComment,''), 'Delivery Advice Conversion ', '') +  '(' + Convert(nvarchar(10), (select count(*) from tblDocuments where strDocumentNumber = replace(isnull(strComment,''), 'Delivery Advice Conversion ', '') and strType = 'POD') ) + ')'
					FROM  [tblInvTracking] B 
					WHERE 
					B.strSource = A.strInvDocID and strComment like '%Delivery Advice Conversion%'                                                      
					FOR XML PATH('')), 1, 1, '') , '')    as strDeliveryAdvice        
			FROM tblInvoiceDoc A 
			where A.dteJournalDate between @StartDate and @EndDate
			union
			select		
					'' As strInvDocID
				   ,A.lngInvTrackID
				   ,A.lngJourID
				   ,isnull(A.dteSystemDate					, getdate())			as dteSystemDate	
				   ,isnull(A.dteJournalDate					, getdate())			as dteJournalDate	
				   ,isnull(A.dteRequired					, getdate())			as dteRequired	
				   ,isnull(A.strUserName					, '')					as strUserName	
				   ,isnull(A.strCustName					, '')					as strCustName
				   ,[dbo].[GetCustomerDesc](isnull(A.strCustName			, ''))	as strCustDesc	
				   ,isnull(A.strSoldTo						, '')					as strSoldTo		
				   ,isnull(A.strShipTo						, '')					as strShipTo		
				   ,isnull(A.strReference					, '')					as strReference	
				   ,isnull(A.decSubTotal					, 0)					as decSubTotal	
				   ,isnull(A.decVAT							, 0)					as decVAT			
				   ,isnull(A.decTotal						, 0)					as decTotal		
				   ,isnull(A.bitFromSO						, 0)					as bitFromSO		
				   ,isnull(A.strOrdDocID					,'')					as strOrdDocID
				   ,0																as bitHistoryTrans				
				   ,isnull(A.strNotes						, '')					as strNotes					
				   ,isnull(A.bitPrinted						, 0)					as bitPrinted					
				   ,isnull(A.bitEmailed						, 0)					as bitEmailed					
				   ,0																as intPaidBy					
				   ,'0'																as intAccount					
				   ,isnull(A.strSalesName					,'')					as strSalesName				
				   ,isnull(A.strAddInfo						, '')					as strAddInfo					
				   ,0																as bitReserved				
				   ,isnull(A.strCurrency					, '')					as strCurrency				
				   ,isnull(A.bitIsForeign					, 0)					as bitIsForeign				
				   ,isnull(A.decSubTotalF					, 0)					as decSubTotalF				
				   ,isnull(A.decVATF						, 0)					as decVATF					
				   ,isnull(A.decTotalF						, 0)					as decTotalF					
				   ,isnull(A.decExchange					, 0)					as decExchange				
				   ,isnull(A.strTerm						, '')					as strTerm					
				   ,isnull(A.intDept						, 0)					as intDept					
				   ,ISNULL(A.strField1						, '')					as strField1					
				   ,ISNULL(A.strField2						, '')					as strField2					
				   ,ISNULL(A.strField3						, '')					as strField3					
				   ,ISNULL(A.strField4						, '')					as strField4					
				   ,ISNULL(A.strField5						, '')					as strField5					
				   ,ISNULL(A.strField6						, '')					as strField6					
				   ,ISNULL(A.strField7						, '')					as strField7					
				   ,ISNULL(A.strField8						, '')					as strField8					
				   ,ISNULL(A.strField9						, '')					as strField9					
				   ,ISNULL(A.strField10						, '')					as strField10					
				   ,ISNULL(A.strField11						, '')					as strField11					
				   ,ISNULL(A.strField12						, '')					as strField12					
				   ,ISNULL(A.strSubFormated					, '')					as strSubFormated				
				   ,ISNULL(A.strVATFormatted				, '')					as strVATFormatted			
				   ,ISNULL(A.strTotFormatted				, '')					as strTotFormatted			
				   ,ISNULL(A.dteField13						, 0)					as dteField13					
				   ,ISNULL(A.dteField14						, 0)					as dteField14					
				   ,ISNULL(A.decDiscPerc					, 0)					as decDiscPerc				
				   ,ISNULL(A.decDiscAmt						, 0)					as decDiscAmt					
				   ,ISNULL(A.decDiscAmtF					, 0)					as decDiscAmtF				
				   ,isnull(A.strDiscFormatted				,'')					as strDiscFormatted			
				   ,isnull(A.strOrdFQDocID					,'')					as strOrdFQDocID				
				   ,isnull(A.strStatusTypeCode				,'')					as strStatusTypeCode			
				   ,'' as strCNReasonCode			
				   ,ISNULL(A.bitBookmark					,0)						as bitBookmark				
				   ,GETDATE()														as dteSystemDateTime			
				   ,''																as strPaidBy					
				   ,0																as intSentDoc					
				   ,''																as strVAT						
				   ,ISNULL(A.strDelMethodCode				,'')					as strDelMethodCode			
				   ,ISNULL(A.decTotalWeight					,0)						as decTotalWeight				
				   ,ISNULL(A.decTotalVolWeight				,0)						as decTotalVolWeight			
				   ,ISNULL(A.decDeliveryCost				,0)						as decDeliveryCost			
				   ,ISNULL(A.decDeliveryCostF				,0)						as decDeliveryCostF			
				   ,ISNULL(A.strDeliveryCostFormatted		,'')					as strDeliveryCostFormatted	
				   ,0																as bitShipmentsAuditTrail		
				   ,ISNULL(A.intRevisionNumber				,0)						as intRevisionNumber			
				   ,ISNULL(A.strStoreNumber					,'')					as strStoreNumber				
				   ,ISNULL(A.strEDI							,'')					as strEDI						
				   ,0																as bitNoPODRequired	
				  ,A.strOrdDADocID as strDeliveryAdvice
			from [dbo].[tblOrderDocDA] A
			where A.strOrdDADocID not in (select rtrim(ltrim(replace(strComment, 'Delivery Advice Conversion ', '')))  from tblInvTracking where strComment like '%Delivery Advice Conversion %')
			and A.dteJournalDate between @StartDate and @EndDate

		END
		ELSE
		BEGIN

			SELECT  A.strInvDocID
				   ,A.lngInvTrackID
				   ,A.lngJourID
				   ,isnull(A.dteSystemDate					, getdate())			as dteSystemDate	
				   ,isnull(A.dteJournalDate					, getdate())			as dteJournalDate	
				   ,isnull(A.dteRequired					, getdate())			as dteRequired	
				   ,isnull(A.strUserName					, '')					as strUserName	
				   ,isnull(A.strCustName					, '')					as strCustName
				   ,[dbo].[GetCustomerDesc](isnull(A.strCustName			, ''))	as strCustDesc	
				   ,isnull(A.strSoldTo						, '')					as strSoldTo		
				   ,isnull(A.strShipTo						, '')					as strShipTo		
				   ,isnull(A.strReference					, '')					as strReference	
				   ,isnull(A.decSubTotal					, 0)					as decSubTotal	
				   ,isnull(A.decVAT							, 0)					as decVAT			
				   ,isnull(A.decTotal						, 0)					as decTotal		
				   ,isnull(A.bitFromSO						, 0)					as bitFromSO		
				   ,isnull(A.strOrdDocID					,'')					as strOrdDocID
				   ,isnull(A.bitHistoryTrans				, 0)					as bitHistoryTrans				
				   ,isnull(A.strNotes						, '')					as strNotes					
				   ,isnull(A.bitPrinted						, 0)					as bitPrinted					
				   ,isnull(A.bitEmailed						, 0)					as bitEmailed					
				   ,isnull(A.intPaidBy						, 0)					as intPaidBy					
				   ,isnull(A.intAccount						,'0')						as intAccount					
				   ,isnull(A.strSalesName					,'')					as strSalesName				
				   ,isnull(A.strAddInfo						, '')					as strAddInfo					
				   ,isnull(A.bitReserved					, 0)					as bitReserved				
				   ,isnull(A.strCurrency					, '')					as strCurrency				
				   ,isnull(A.bitIsForeign					, 0)					as bitIsForeign				
				   ,isnull(A.decSubTotalF					, 0)					as decSubTotalF				
				   ,isnull(A.decVATF						, 0)					as decVATF					
				   ,isnull(A.decTotalF						, 0)					as decTotalF					
				   ,isnull(A.decExchange					, 0)					as decExchange				
				   ,isnull(A.strTerm						, '')					as strTerm					
				   ,isnull(A.intDept						, 0)					as intDept					
				   ,ISNULL(A.strField1						, '')					as strField1					
				   ,ISNULL(A.strField2						, '')					as strField2					
				   ,ISNULL(A.strField3						, '')					as strField3					
				   ,ISNULL(A.strField4						, '')					as strField4					
				   ,ISNULL(A.strField5						, '')					as strField5					
				   ,ISNULL(A.strField6						, '')					as strField6					
				   ,ISNULL(A.strField7						, '')					as strField7					
				   ,ISNULL(A.strField8						, '')					as strField8					
				   ,ISNULL(A.strField9						, '')					as strField9					
				   ,ISNULL(A.strField10						, '')					as strField10					
				   ,ISNULL(A.strField11						, '')					as strField11					
				   ,ISNULL(A.strField12						, '')					as strField12					
				   ,ISNULL(A.strSubFormated					, '')					as strSubFormated				
				   ,ISNULL(A.strVATFormatted				, '')					as strVATFormatted			
				   ,ISNULL(A.strTotFormatted				, '')					as strTotFormatted			
				   ,ISNULL(A.dteField13						, 0)					as dteField13					
				   ,ISNULL(A.dteField14						, 0)					as dteField14					
				   ,ISNULL(A.decDiscPerc					, 0)					as decDiscPerc				
				   ,ISNULL(A.decDiscAmt						, 0)					as decDiscAmt					
				   ,ISNULL(A.decDiscAmtF					, 0)					as decDiscAmtF				
				   ,isnull(A.strDiscFormatted				,'')					as strDiscFormatted			
				   ,isnull(A.strOrdFQDocID					,'')					as strOrdFQDocID				
				   ,isnull(A.strStatusTypeCode				,'')					as strStatusTypeCode			
				   ,isnull(A.strCNReasonCode				,'')					as strCNReasonCode			
				   ,ISNULL(A.bitBookmark					,0)						as bitBookmark				
				   ,ISNULL(A.dteSystemDateTime				,GETDATE())				as dteSystemDateTime			
				   ,ISNULL(A.strPaidBy						,'')					as strPaidBy					
				   ,ISNULL(A.intSentDoc						,0)						as intSentDoc					
				   ,ISNULL(A.strVAT							,'')					as strVAT						
				   ,ISNULL(A.strDelMethodCode				,'')					as strDelMethodCode			
				   ,ISNULL(A.decTotalWeight					,0)						as decTotalWeight				
				   ,ISNULL(A.decTotalVolWeight				,0)						as decTotalVolWeight			
				   ,ISNULL(A.decDeliveryCost				,0)						as decDeliveryCost			
				   ,ISNULL(A.decDeliveryCostF				,0)						as decDeliveryCostF			
				   ,ISNULL(A.strDeliveryCostFormatted		,'')					as strDeliveryCostFormatted	
				   ,ISNULL(A.bitShipmentsAuditTrail			,0)						as bitShipmentsAuditTrail		
				   ,ISNULL(A.intRevisionNumber				,0)						as intRevisionNumber			
				   ,ISNULL(A.strStoreNumber					,'')					as strStoreNumber				
				   ,ISNULL(A.strEDI							,'')					as strEDI						
				   ,ISNULL(A.bitNoPODRequired				,0)						as bitNoPODRequired			
				   ,ISNULL(STUFF((SELECT DISTINCT CHAR(10) + replace(isnull(strComment,''), 'Delivery Advice Conversion ', '') +  '(' + Convert(nvarchar(10), (select count(*) from tblDocuments where strDocumentNumber = replace(isnull(strComment,''), 'Delivery Advice Conversion ', '') and strType = 'POD') ) + ')'
					FROM  [tblInvTracking] B 
					WHERE 
					B.strSource = A.strInvDocID and strComment like '%Delivery Advice Conversion%'                                                      
					FOR XML PATH('')), 1, 1, '') , '')    as strDeliveryAdvice        
			FROM tblInvoiceDoc A 
			where (A.dteJournalDate between @StartDate and @EndDate)
			AND (A.strCustName IN (SELECT strCustName
								   FROM tblCustomers
								   WHERE (strCustCategory IN (SELECT tblCustomerCat.strCustCategory 
															 FROM tblCustomerCat 
															 LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory 
															 WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) 
																		   FROM tblCustomerCatSec 
																		   WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 
																	OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) 
																				FROM tblCustomerCatSec 
																				WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 
																		AND tblCustomerCatSec.strUserName = @UserName)))))
			union
			select		
					'' As strInvDocID
				   ,A.lngInvTrackID
				   ,A.lngJourID
				   ,isnull(A.dteSystemDate					, getdate())			as dteSystemDate	
				   ,isnull(A.dteJournalDate					, getdate())			as dteJournalDate	
				   ,isnull(A.dteRequired					, getdate())			as dteRequired	
				   ,isnull(A.strUserName					, '')					as strUserName	
				   ,isnull(A.strCustName					, '')					as strCustName
				   ,[dbo].[GetCustomerDesc](isnull(A.strCustName			, ''))	as strCustDesc	
				   ,isnull(A.strSoldTo						, '')					as strSoldTo		
				   ,isnull(A.strShipTo						, '')					as strShipTo		
				   ,isnull(A.strReference					, '')					as strReference	
				   ,isnull(A.decSubTotal					, 0)					as decSubTotal	
				   ,isnull(A.decVAT							, 0)					as decVAT			
				   ,isnull(A.decTotal						, 0)					as decTotal		
				   ,isnull(A.bitFromSO						, 0)					as bitFromSO		
				   ,isnull(A.strOrdDocID					,'')					as strOrdDocID
				   ,0																as bitHistoryTrans				
				   ,isnull(A.strNotes						, '')					as strNotes					
				   ,isnull(A.bitPrinted						, 0)					as bitPrinted					
				   ,isnull(A.bitEmailed						, 0)					as bitEmailed					
				   ,0																as intPaidBy					
				   ,'0'																as intAccount					
				   ,isnull(A.strSalesName					,'')					as strSalesName				
				   ,isnull(A.strAddInfo						, '')					as strAddInfo					
				   ,0																as bitReserved				
				   ,isnull(A.strCurrency					, '')					as strCurrency				
				   ,isnull(A.bitIsForeign					, 0)					as bitIsForeign				
				   ,isnull(A.decSubTotalF					, 0)					as decSubTotalF				
				   ,isnull(A.decVATF						, 0)					as decVATF					
				   ,isnull(A.decTotalF						, 0)					as decTotalF					
				   ,isnull(A.decExchange					, 0)					as decExchange				
				   ,isnull(A.strTerm						, '')					as strTerm					
				   ,isnull(A.intDept						, 0)					as intDept					
				   ,ISNULL(A.strField1						, '')					as strField1					
				   ,ISNULL(A.strField2						, '')					as strField2					
				   ,ISNULL(A.strField3						, '')					as strField3					
				   ,ISNULL(A.strField4						, '')					as strField4					
				   ,ISNULL(A.strField5						, '')					as strField5					
				   ,ISNULL(A.strField6						, '')					as strField6					
				   ,ISNULL(A.strField7						, '')					as strField7					
				   ,ISNULL(A.strField8						, '')					as strField8					
				   ,ISNULL(A.strField9						, '')					as strField9					
				   ,ISNULL(A.strField10						, '')					as strField10					
				   ,ISNULL(A.strField11						, '')					as strField11					
				   ,ISNULL(A.strField12						, '')					as strField12					
				   ,ISNULL(A.strSubFormated					, '')					as strSubFormated				
				   ,ISNULL(A.strVATFormatted				, '')					as strVATFormatted			
				   ,ISNULL(A.strTotFormatted				, '')					as strTotFormatted			
				   ,ISNULL(A.dteField13						, 0)					as dteField13					
				   ,ISNULL(A.dteField14						, 0)					as dteField14					
				   ,ISNULL(A.decDiscPerc					, 0)					as decDiscPerc				
				   ,ISNULL(A.decDiscAmt						, 0)					as decDiscAmt					
				   ,ISNULL(A.decDiscAmtF					, 0)					as decDiscAmtF				
				   ,isnull(A.strDiscFormatted				,'')					as strDiscFormatted			
				   ,isnull(A.strOrdFQDocID					,'')					as strOrdFQDocID				
				   ,isnull(A.strStatusTypeCode				,'')					as strStatusTypeCode			
				   ,'' as strCNReasonCode			
				   ,ISNULL(A.bitBookmark					,0)						as bitBookmark				
				   ,GETDATE()														as dteSystemDateTime			
				   ,''																as strPaidBy					
				   ,0																as intSentDoc					
				   ,''																as strVAT						
				   ,ISNULL(A.strDelMethodCode				,'')					as strDelMethodCode			
				   ,ISNULL(A.decTotalWeight					,0)						as decTotalWeight				
				   ,ISNULL(A.decTotalVolWeight				,0)						as decTotalVolWeight			
				   ,ISNULL(A.decDeliveryCost				,0)						as decDeliveryCost			
				   ,ISNULL(A.decDeliveryCostF				,0)						as decDeliveryCostF			
				   ,ISNULL(A.strDeliveryCostFormatted		,'')					as strDeliveryCostFormatted	
				   ,0																as bitShipmentsAuditTrail		
				   ,ISNULL(A.intRevisionNumber				,0)						as intRevisionNumber			
				   ,ISNULL(A.strStoreNumber					,'')					as strStoreNumber				
				   ,ISNULL(A.strEDI							,'')					as strEDI						
				   ,0																as bitNoPODRequired	
				  ,A.strOrdDADocID as strDeliveryAdvice
			from [dbo].[tblOrderDocDA] A
			where (A.strOrdDADocID not in (select rtrim(ltrim(replace(strComment, 'Delivery Advice Conversion ', '')))  from tblInvTracking where strComment like '%Delivery Advice Conversion %'))
			and (A.dteJournalDate between @StartDate and @EndDate)
			AND (A.strCustName IN (SELECT strCustName
								   FROM tblCustomers
								   WHERE (strCustCategory IN (SELECT tblCustomerCat.strCustCategory 
															 FROM tblCustomerCat 
															 LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory 
															 WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) 
																		   FROM tblCustomerCatSec 
																		   WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 
																	OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) 
																				FROM tblCustomerCatSec 
																				WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 
																		AND tblCustomerCatSec.strUserName = @UserName)))))

		END
	
	END
GO
/****** Object:  StoredProcedure [dbo].[prRptGetBinItemsForSetup]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[prRptGetBinItemsForSetup]    Script Date: 10-04-2018 06:10:57 PM ******/
CREATE PROCEDURE [dbo].[prRptGetBinItemsForSetup]
	-- Add the parameters for the stored procedure here
	@SQstrLocName nvarchar(100),
	@SQstrSearch nvarchar(100) = NULL,
	@SQbitIncludeInActive bit,
	@SQbitItem bit = 1

AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets FROM
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	IF @SQbitItem = 1
		BEGIN
			SELECT 0 As lngBinId,tblInvExt.strPartNumber As strBinCode,tblInv.strDesc As strDescription
			FROM tblInvExt INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber
			WHERE strLocName = @SQstrLocName AND ((tblInvExt.strPartNumber LIKE '%' + @SQstrSearch + '%' OR tblInv.strDesc LIKE '%' + @SQstrSearch + '%') OR @SQstrSearch IS NULL)
			AND ((@SQbitIncludeInActive = 1 AND (tblInv.bitInactive = 0 OR tblInv.bitInactive = 1)) OR (@SQbitIncludeInActive = 0 AND tblInv.bitInactive = 0))
			AND intType=1
			GROUP BY tblInvExt.strPartNumber,tblInv.strDesc
			ORDER BY tblInvExt.strPartNumber
		END
	ELSE
		BEGIN
			SELECT lngID AS lngBinId,tblInvLocBin.strBinCode,tblInvLocBin.strDescription
			FROM tblInvLocBin 
			WHERE tblInvLocBin.strLocName=@SQstrLocName AND ((tblInvLocBin.strBinCode LIKE '%' + @SQstrSearch + '%' OR tblInvLocBin.strDescription LIKE '%' + @SQstrSearch + '%') OR @SQstrSearch IS NULL)
			--AND ((@SQbitIncludeInActive = 1 AND (tblInv.bitInactive = 0 OR tblInv.bitInactive = 1)) OR (@SQbitIncludeInActive = 0 AND tblInv.bitInactive = 0))
			ORDER BY tblInvLocBin.strBinCode
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prRptGetBinLocationItemsByBinByItem]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prRptGetBinLocationItemsByBinByItem] @SQdteDate DATETIME
	,@SQbitSynopsis BIT
	,@SQstrLocName NVARCHAR(100)
	,@SQstrSearch NVARCHAR(max)
	,@SQbitItem BIT = 1
AS
BEGIN
	IF @SQbitItem = 1
	BEGIN
		SELECT lngBinID
			,tblInvLocBin.strBinCode
			,tblInvLocBin.strDescription
			,MasterTable.strPartNumber
			,ISNULL(SUM(tblInvExt.decOpenQty), 0) + ISNULL(SUM(tblInvTrackingDTBin.decQty), 0) AS decOnHand
			,MasterTable.strDesc AS ItemDescription
			,tblInvTrackingDT.strLocName
		FROM tblInvExt
		LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
		LEFT JOIN tblInvTrackingDT ON tblInvTrackingDT.strPartNumber = tblInvExt.strPartNumber
			AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
		LEFT JOIN tblInvTrackingDTBin ON tblInvTrackingDTBin.lngInvTrackId = tblInvTrackingDT.lngInvTrackID
			AND tblInvTrackingDTBin.intLineNo = tblInvTrackingDT.intLineNo
			AND SIGN(tblInvTrackingDTBin.decQty) = SIGN(tblInvTrackingDT.decQty)
		LEFT JOIN tblInvLocBin ON tblInvLocBin.lngId = tblInvTrackingDTBin.lngBinId
			AND tblInvLocBin.strLocName = tblInvTrackingDT.strLocName
		WHERE MasterTable.intType = 1
			AND tblInvExt.strLocName = @SQstrLocName --'DEFAULT'  
			AND MasterTable.strPartNumber IN (
				SELECT value
				FROM fnSplitStringAsTable(@SQstrSearch, ',')
				) --= '8'  
		GROUP BY lngBinID
			,tblInvLocBin.strBinCode
			,tblInvLocBin.strDescription
			,MasterTable.strPartNumber
			,MasterTable.strDesc
			,tblInvTrackingDT.strLocName
		ORDER BY MasterTable.strPartNumber
			,tblInvLocBin.strBinCode;
	END
	ELSE
	BEGIN
		SELECT tblInvExtBin.lngBinID
			,tblInvLocBin.strBinCode
			,tblInvLocBin.strDescription
			,MasterTable.strPartNumber
			,ISNULL(SUM(tblInvExtBin.decOpenQty), 0) + ISNULL(SUM(tblInvTrackingDTBin.decQty), 0) AS decOnHand
			,MasterTable.strDesc AS ItemDescription
			,tblInvTrackingDT.strLocName
		FROM tblInvExt
		LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
		LEFT JOIN tblInvTrackingDT ON tblInvTrackingDT.strPartNumber = tblInvExt.strPartNumber
			AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
		LEFT JOIN tblInvTrackingDTBin ON tblInvTrackingDTBin.lngInvTrackId = tblInvTrackingDT.lngInvTrackID
			AND tblInvTrackingDTBin.intLineNo = tblInvTrackingDT.intLineNo
			AND SIGN(tblInvTrackingDTBin.decQty) = SIGN(tblInvTrackingDT.decQty)
		LEFT JOIN tblInvLocBin ON tblInvLocBin.lngId = tblInvTrackingDTBin.lngBinId
			AND tblInvLocBin.strLocName = tblInvTrackingDT.strLocName
		LEFT JOIN tblInvExtBin ON tblInvExtBin.strLocName = tblInvExt.strLocName
			AND tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
		WHERE MasterTable.intType = 1
			AND tblInvExt.strLocName = @SQstrLocName --'DEFAULT'  
			AND tblInvExtBin.lngBinID IN (
				SELECT CAST(value AS BIGINT)
				FROM fnSplitStringAsTable(@SQstrSearch, ',')
				) --= '1'  
			--AND MasterTable.strPartNumber = '8'  
		GROUP BY tblInvExtBin.lngBinID
			,tblInvLocBin.strBinCode
			,tblInvLocBin.strDescription
			,MasterTable.strPartNumber
			,MasterTable.strDesc
			,tblInvTrackingDT.strLocName
		ORDER BY MasterTable.strPartNumber
			,tblInvLocBin.strBinCode;
	END
END
GO

/****** Object:  StoredProcedure [dbo].[prRptMonthlyContractDtls]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

 CREATE PROCEDURE [dbo].[prRptMonthlyContractDtls]           
  @SQstrContactPerson varchar(Max) = NULL,          
  @SQdteFromDate datetime = NULL,          
  @SQdteToDate datetime = NULL,        
  @SQbitInactive bit = NULL          
 AS          
 BEGIN          
  SET NOCOUNT ON;          
          
  SELECT C.strContractNumber , C.strDescription , CT.dteFromDate , CT.dteToDate , C.strContactPerson ,CT.decAmount, C.lngContractType, C.intGLNumber,           
  ISNULL((SELECT strContractType FROM tblOptContractType WHERE lngId = C.lngContractType),'') AS strContractType            
  FROM tblcontracts C           
  INNER JOIN tblContractsDT CT on C.lngId  = CT.lngContractId            
  WHERE ((CT.dteFromDate BETWEEN @SQdteFromDate AND @SQdteToDate)  OR (CT.dteToDate BETWEEN @SQdteFromDate AND @SQdteToDate))          
  AND  (C.strContactPerson  IN (SELECT VALUE FROM dbo.fnSplitStringAsTable(@SQstrContactPerson,',')) OR @SQstrContactPerson IS NULL)     
  AND bitInactive IN (0, @SQbitInactive)  
  ORDER by C.strContactPerson  
 END 
GO
/****** Object:  StoredProcedure [dbo].[prSalesBOM_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prSalesBOM_Delete]      
	(      
	 @SQstrInvDocId nvarchar(50),    
	 @SQstrTransactionType nvarchar(10) = Null     
	)      
	AS      
	BEGIN       
	 SET NOCOUNT ON;      
      
	  if(@SQstrTransactionType='SI')    
	  Begin    
	  DELETE FROM tblInvoiceDocDTBOM WHERE strInvDocID=@SQstrInvDocId    
	  END    
    
	  if(@SQstrTransactionType='DA')    
	  Begin    
	  DELETE FROM tblOrderDocDADTBOM WHERE strOrdDocDAID=@SQstrInvDocId    
	  END    
    
	  if(@SQstrTransactionType in ('QU','SO'))    
	  Begin    
	  DELETE FROM tblOrderDocDTBOM WHERE strOrdDocID=@SQstrInvDocId    
	  END    
    
	  if(@SQstrTransactionType='QS')    
	  Begin    
	  DELETE FROM tblOrderDocQDTBOM WHERE strOrdDocID=@SQstrInvDocId    
	  END    
  
	  if(@SQstrTransactionType='SP')    
	  Begin    
	  DELETE FROM tblPickTicketsDTBOM WHERE strPkTkDocID=@SQstrInvDocId    
	  END    
    
	END 
 
GO
/****** Object:  StoredProcedure [dbo].[prSalesBOM_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prSalesBOM_Save]      
	(      
		@SQstrInvDocId nvarchar(50),    
		@SQintLineNo int,    
		@SQintMainLineNo int,    
		@SQstrPartNumber nvarchar(50),    
		@SQstrLocation nvarchar(10),    
		@SQdecQty money,    
		@SQlngBinId bigint=0,    
		@SQstrTransactionType nvarchar(10) = Null,
		@SQdecBOMQty money,     
		@SQdecGLCalc money     
	)      
	AS      
	BEGIN       
		SET NOCOUNT ON;      
      
		if(@SQstrTransactionType='SI')    
		Begin    
		INSERT INTO tblInvoiceDocDTBOM (strInvDocID, intLineNo, intMainLineNo, strPartItemNumber, strLocation, decQty, lngBinId, decBOMQty,decGLCalc) 
		VALUES  (@SQstrInvDocId,@SQintLineNo,@SQintMainLineNo,@SQstrPartNumber,@SQstrLocation,@SQdecQty,@SQlngBinId,@SQdecBOMQty,@SQdecGLCalc)    
		END    
    
		if(@SQstrTransactionType='DA')    
		Begin    
		INSERT INTO tblOrderDocDADTBOM (strOrdDocDAID, intLineNo, intMainLineNo, strPartItemNumber, strLocName, decQty, lngBinId, decBOMQty,decGLCalc)
		VALUES  (@SQstrInvDocId,@SQintLineNo,@SQintMainLineNo,@SQstrPartNumber,@SQstrLocation,@SQdecQty,@SQlngBinId,@SQdecBOMQty,@SQdecGLCalc)    
		END    
    
		if(@SQstrTransactionType in ('QU','SO'))    
		Begin    
		INSERT INTO tblOrderDocDTBOM (strOrdDocID, intLineNo, intMainLineNo, strPartItemNumber, strLocName, decQty, decBOMQty,decGLCalc)
		VALUES  (@SQstrInvDocId,@SQintLineNo,@SQintMainLineNo,@SQstrPartNumber,@SQstrLocation,@SQdecQty,@SQdecBOMQty,@SQdecGLCalc)    
		END    
    
		if(@SQstrTransactionType='QS')    
		Begin    
		INSERT INTO tblOrderDocQDTBOM (strOrdDocID, intLineNo, intMainLineNo, strPartItemNumber, strLocName, decQty, decBOMQty,decGLCalc)
		VALUES  (@SQstrInvDocId,@SQintLineNo,@SQintMainLineNo,@SQstrPartNumber,@SQstrLocation,@SQdecQty,@SQdecBOMQty,@SQdecGLCalc)    
		END    
  
		if(@SQstrTransactionType='SP')    
		Begin    
		INSERT INTO tblPickTicketsDTBOM (strPkTkDocId, intLineNo, intMainLineNo, strPartItemNumber, strLocation, decQty, lngBinId, decBOMQty,decGLCalc) 
		VALUES  (@SQstrInvDocId,@SQintLineNo,@SQintMainLineNo,@SQstrPartNumber,@SQstrLocation,@SQdecQty,@SQlngBinId,@SQdecBOMQty,@SQdecGLCalc)    
		END    
	END 
 
 
GO
/****** Object:  StoredProcedure [dbo].[prSaveInvExtBin_ByItemByLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================

-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[prSaveInvExtBin_ByItemByLocation]
	-- Add the parameters for the stored procedure here
	@SQstrPartNumber nvarchar(50), 
	@SQstrLocName nvarchar(50)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	--922337203685477 = max value of money datatype
    -- Insert statements for procedure here
	IF (select COUNT(*) from tblInvExtBin where strPartNumber = @SQstrPartNumber AND strLocName = @SQstrLocName) = 0
		BEGIN
			INSERT INTO tblInvExtBin 
			(strPartNumber, strLocName, lngBinId, decAvail, decAlloc, decOnHand, decMaximumQty, bitAllowed, bitDefault)
			VALUES
			(@SQstrPartNumber, @SQstrLocName, ISNULL((select top(1) lngId From tblInvLocBin where strLocName = @SQstrLocName),0), 0, 0, 0, 0,1,1)
		END
END
GO
/****** Object:  StoredProcedure [dbo].[prTaxCode_Update]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prTaxCode_Update] 
(
	@SQModule integer = NULL,
	@SQTaxCodeFrom nvarchar(2) = NULL,
	@SQTaxCodeTo nvarchar(2) = NULL,
	@SQOption integer = NULL
)
AS

DECLARE @RowCount AS integer = 0

IF @SQModule = 1
BEGIN

	IF @SQOption = 1	-- Masterfile
	BEGIN

		UPDATE tblCustomers
		SET strTaxCode = @SQTaxCodeTo
		WHERE (strTaxCode = @SQTaxCodeFrom)

		SET @RowCount = @@ROWCOUNT 

	END

	IF @SQOption = 2	-- Delivery Advices
	BEGIN

		UPDATE tblOrderDocDADT
		SET strTaxCode = @SQTaxCodeTo,
			imgTaxObj = NULL
		FROM tblOrderDocDA
		WHERE (tblOrderDocDADT.strOrdDADocID = tblOrderDocDA.strOrdDADocID)
		AND (tblOrderDocDA.bitCleared = 0)
		AND (tblOrderDocDADT.strTaxCode = @SQTaxCodeFrom)

		SET @RowCount = @@ROWCOUNT 

	END

	IF @SQOption = 3	-- Orders
	BEGIN

		UPDATE tblOrderDocDT
		SET strTaxCode = @SQTaxCodeTo,
			imgTaxObj = NULL
		FROM tblOrderDoc
		WHERE (tblOrderDocDT.strOrdDocID = tblOrderDoc.strOrdDocID)
		AND (tblOrderDoc.intDocType = 1)
		AND (tblOrderDoc.bitCleared = 0)
		AND (tblOrderDocDT.strTaxCode = @SQTaxCodeFrom)
		AND (tblOrderDocDT.decQtyRemaining <> 0)

		SET @RowCount = @@ROWCOUNT 

	END

	IF @SQOption = 4	-- Quotes
	BEGIN

		UPDATE tblOrderDocDT
		SET strTaxCode = @SQTaxCodeTo,
			imgTaxObj = NULL
		FROM tblOrderDoc
		WHERE (tblOrderDocDT.strOrdDocID = tblOrderDoc.strOrdDocID)
		AND (tblOrderDoc.intDocType = 2)
		AND (tblOrderDoc.bitCleared = 0)
		AND (tblOrderDocDT.strTaxCode = @SQTaxCodeFrom)

		SET @RowCount = @@ROWCOUNT 

	END

	IF @SQOption = 5	-- Freehand Quotes
	BEGIN

		UPDATE tblOrderDocQDT
		SET strTaxCode = @SQTaxCodeTo,
			imgTaxObj = NULL
		FROM tblOrderDocQ
		WHERE (tblOrderDocQDT.strOrdDocID = tblOrderDocQ.strOrdDocID)
		AND (tblOrderDocQ.bitCleared = 0)
		AND (tblOrderDocQDT.strTaxCode = @SQTaxCodeFrom)

		SET @RowCount = @@ROWCOUNT 

	END

	IF @SQOption = 6	-- Contract Billing
	BEGIN

		UPDATE tblContractBillDT
		SET strTaxCode = @SQTaxCodeTo,
			imgTaxObj = NULL
		WHERE (strTaxCode = @SQTaxCodeFrom)

		SET @RowCount = @@ROWCOUNT 

	END

	IF @SQOption = 7	-- Withholding Tax
	BEGIN

		UPDATE tblCustomers
		SET strWithholdTaxCode = @SQTaxCodeTo
		WHERE (bitWithholdTax = 1)
		AND (strWithholdTaxCode = @SQTaxCodeFrom)

		SET @RowCount = @@ROWCOUNT 

	END

	IF @SQOption = 8	-- Delivery Methods
	BEGIN

		UPDATE tblDeliveryMethodRatesServices
		SET strTaxCode = @SQTaxCodeTo
		WHERE (strTaxCode = @SQTaxCodeFrom)

		SET @RowCount = @@ROWCOUNT 

	END

	IF @SQOption = 9	-- Recall Invoices
	BEGIN

		UPDATE tblSalesREDT
		SET strTaxCode = @SQTaxCodeTo,
			imgTaxObj = NULL
		WHERE (strTaxCode = @SQTaxCodeFrom)

		SET @RowCount = @@ROWCOUNT 

	END

	IF @SQOption = 10	-- Recall Journal Entries
	BEGIN

		UPDATE tblJournalEntryDocREDT 
		SET strTaxCode = @SQTaxCodeTo,
			imgTaxObj = NULL
		WHERE (intModule = 2)
		AND (strTaxCode = @SQTaxCodeFrom)

		SET @RowCount = @@ROWCOUNT 

	END

	IF @SQOption = 11	-- Recall Receipt Journals
	BEGIN

		UPDATE tblJournalEntryDocCBREDT 
		SET strTaxCode = @SQTaxCodeTo,
			imgTaxObj = NULL
		WHERE (intType = 0)
		AND (strTaxCode = @SQTaxCodeFrom)

		SET @RowCount = @@ROWCOUNT 

	END

	IF @SQOption = 12	-- Pricelist Including
	BEGIN

		UPDATE tblPriceData
		SET strTaxCode = @SQTaxCodeTo
		WHERE (bitPriceIncl = 1) 
		AND (strTaxCode = @SQTaxCodeFrom)

		SET @RowCount = @@ROWCOUNT 

	END

END

IF @SQModule = 2
BEGIN

	IF @SQOption = 1	-- Masterfile
	BEGIN

		UPDATE tblVendors
		SET strTaxCode = @SQTaxCodeTo
		WHERE (strTaxCode = @SQTaxCodeFrom)

		SET @RowCount = @@ROWCOUNT 

	END

	IF @SQOption = 2	-- GRVs
	BEGIN

		UPDATE tblOrderDocPGDT
		SET strTaxCode = @SQTaxCodeTo,
			imgTaxObj = NULL
		FROM tblOrderDocPG
		WHERE (tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPG.strOrdPGDocID)
		AND (tblOrderDocPG.bitCleared = 0)
		AND (tblOrderDocPGDT.strTaxCode = @SQTaxCodeFrom)

		SET @RowCount = @@ROWCOUNT 

	END

	IF @SQOption = 3	-- Orders
	BEGIN

		UPDATE tblOrderDocPDT
		SET strTaxCode = @SQTaxCodeTo,
			imgTaxObj = NULL
		FROM tblOrderDocP
		WHERE (tblOrderDocPDT.strOrdPDocID = tblOrderDocP.strOrdPDocID)
		AND (tblOrderDocP.intDocType = 1)
		AND (tblOrderDocP.bitCleared = 0)
		AND (tblOrderDocPDT.strTaxCode = @SQTaxCodeFrom)
		AND (tblOrderDocPDT.decBuyQtyRemain <> 0)

		SET @RowCount = @@ROWCOUNT 

	END

	IF @SQOption = 4	-- Quotes
	BEGIN

		UPDATE tblOrderDocPDT
		SET strTaxCode = @SQTaxCodeTo,
			imgTaxObj = NULL
		FROM tblOrderDocP
		WHERE (tblOrderDocPDT.strOrdPDocID = tblOrderDocP.strOrdPDocID)
		AND (tblOrderDocP.intDocType = 2)
		AND (tblOrderDocP.bitCleared = 0)
		AND (tblOrderDocPDT.strTaxCode = @SQTaxCodeFrom)

		SET @RowCount = @@ROWCOUNT 

	END

	IF @SQOption = 7	-- Withholding Tax
	BEGIN

		UPDATE tblVendors
		SET strWithholdTaxCode = @SQTaxCodeTo
		WHERE (bitWithholdTax = 1)
		AND (strWithholdTaxCode = @SQTaxCodeFrom)

		SET @RowCount = @@ROWCOUNT 

	END

	IF @SQOption = 9	-- Recall Invoices
	BEGIN

		UPDATE tblPurchREDT
		SET strTaxCode = @SQTaxCodeTo,
			imgTaxObj = NULL
		WHERE (strTaxCode = @SQTaxCodeFrom)

		SET @RowCount = @@ROWCOUNT 

	END

	IF @SQOption = 10	-- Recall Journal Entries
	BEGIN

		UPDATE tblJournalEntryDocREDT 
		SET strTaxCode = @SQTaxCodeTo,
			imgTaxObj = NULL
		WHERE (intModule = 1)
		AND (strTaxCode = @SQTaxCodeFrom)

		SET @RowCount = @@ROWCOUNT 

	END

	IF @SQOption = 11	-- Recall Receipt Journals
	BEGIN

		UPDATE tblJournalEntryDocCBREDT 
		SET strTaxCode = @SQTaxCodeTo,
			imgTaxObj = NULL
		WHERE (intType = 1)
		AND (strTaxCode = @SQTaxCodeFrom)

		SET @RowCount = @@ROWCOUNT 

	END

END

SELECT @RowCount 
GO
/****** Object:  StoredProcedure [dbo].[prtblContractType_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prtblContractType_Delete]
	(
		@SQlngId bigint
	)

	AS

	BEGIN
		DELETE FROM tblOptContractType WHERE lngID = @SQlngID
	END
GO
/****** Object:  StoredProcedure [dbo].[prtblContractType_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[prtblContractType_Save]
	(
		@SQlngId bigint,
		@SQstrContractType nvarchar(50)
	)

	AS

	BEGIN
		IF @SQlngId = 0
		BEGIN
			INSERT INTO tblOptContractType (strContractType) VALUES (@SQstrContractType)
		END
		ELSE
		BEGIN
			UPDATE tblOptContractType SET strContractType = @SQstrContractType WHERE lngID = @SQlngID
		END
	END
GO
/****** Object:  StoredProcedure [dbo].[prUpdateLocationNameToInvBinTables]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[prUpdateLocationNameToInvBinTables]
	-- Add the parameters for the stored procedure here
	@SQstrOldLocationName nvarchar(10),
	@SQstrNewLocationName nvarchar(10)

AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	UPDATE tblInvExtBin SET strLocName = @SQstrNewLocationName WHERE strLocName = @SQstrOldLocationName;UPDATE tblInvLocBin SET strLocName = @SQstrNewLocationName 
	WHERE strLocName = @SQstrOldLocationName;
END

GO
/****** Object:  StoredProcedure [dbo].[prUsers_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[prUsers_Search]  
(  
 @SQstrSearchText nvarchar(200) = NULL  
)    
AS    
    SET NOCOUNT ON    
    
    SELECT     
        [strUserName],    
        [strName]  
    FROM [tblUsers]    
 WHERE (strUserName LIKE '%' + @SQstrSearchText + '%' OR strName LIKE '%' + @SQstrSearchText + '%') OR (@SQstrSearchText IS NULL)
		
GO
/****** Object:  StoredProcedure [dbo].[prUsers_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prUsers_SelectAll]
AS
    SET NOCOUNT ON

    SELECT 
        [strUserName],
        [strName],
        [strCellNumber],
        [strEmail],
        [strPassword],
        [blnIsAdmin],
        [blnIsLockedOut],
        [blnMustChange],
        [blnCompany],
        [blnCoFileHandle],
        [blnGL],
        [blnPayables],
        [blnPayPayments],
        [blnReceivables],
        [blnRecReceipts],
        [blnInventory],
        [blnInvAdjust],
        [blnInvCount],
        [blnSMS],
        [blnBusMgr],
        [blnPOS],
        [blnProjects],
        [dteLastLogin],
        [blnCashBook],
        [blnReminders],
        [blnMarketing],
        [blnCollection],
        [blnPOSCash],
        [blnCoAdmin],
        [blnMainSum],
        [blnAcctSets],
        [blnJournal],
        [blnBankTrans],
        [blnBankRecon],
        [blnAPPurch],
        [blnAPTax],
        [blnARCredit],
        [blnARSales],
        [blnARBatch],
        [blnInvPricelists],
        [blnInvLoc],
        [blnInvCats],
        [blnInvAssbly],
        [blnInvTrans],
        [blnSMSCredits],
        [blnPOSDrop],
        [blnBulkSMS],
        [blnGLExpense],
        [blnDeposits],
        [blnInvPDT],
        [blnARPersons],
        [blnAPBatch],
        [blnAPBrowser],
        [blnARBrowser],
        [blnTemplates],
        [blnAREmail],
        [blnWHRec],
        [blnWHPick],
        [blnWHBatch],
        [uID],
        [blnFiles],
        [strLocName],
        [blnCycle],
        [blnInterest],
        [blnAPOrders],
        [blnAPReq],
        [blnAROrders],
        [blnARQuotes],
        [blnARQuSys],
        [blnWHStPick],
        [blnInvBrowser],
        [blnWHShp],
        [blnWHPrPack],
        [blnWHCont],
        [blnWHMani],
        [blnWHShBrow],
        [blnJobCost],
        [blnDept],
        [blnSubLedger],
        [blnCLetters],
        [blnTop20],
        [blnTransTab],
        [blnRecPayJournal],
        [blnARCats],
        [blnInvDiscMatrix],
        [blnARBlockDesc],
        [blnARBlockUnit],
        [blnARBlockDiscount],
        [blnAPBlockDesc],
        [blnAPBlockUnit],
        [blnAPBlockDiscount],
        [blnWHDelDriver],
        [blnWHDelVehicle],
        [blnWHDelRoute],
        [blnARCreditRequests],
        [blnBITab],
        [blnBICubeAdd],
        [blnBICubeEdit],
        [blnBICubeDelete],
        [blnBIViewAdd],
        [blnBIViewEdit],
        [blnBIViewDelete],
        [blnARSendPricelists],
        [blnInvNumConv],
        [blnInvSerialTypes],
        [blnAPCats],
        [blnARPrintPreview],
        [blnARCNChangesAllowed],
        [blnARPriceChangeAllowed],
        [blnAPDNChangesAllowed],
        [blnARInvoiceAdjAllowed],
        [blnARAllowCreditNotesAndRequestItems],
        [blnAPPaymentApprovals],
        [blnInvForecasting],
        [blnInvBarcode],
        [blnInvItemCostUpdater],
        [blnInvItemRenaming],
        [blnAPECOMSettings],
        [blnAPShowStatsOnDocs],
        [blnARShowStatsOnDocs],
        [blnGLOpenItemAlloc],
        [blnGLLR],
        [blnGLLRFin],
        [blnGLLRFinBalSheetStd],
        [blnGLLRFinBalSheetComp],
        [blnGLLRFinIncomeStd],
        [blnGLLRFinIncomeComp],
        [blnGLLRFinIncomeMulti],
        [blnGLLRFinIncomeGP],
        [blnGLLRFinIncomeMini],
        [blnGLLRFinTrialBal],
        [blnGLLRFinPerMovement],
        [blnGLLRFinMultiCompany],
        [blnGLLRTran],
        [blnGLLRTranLedger],
        [blnGLLRTranEntryType],
        [blnGLLRTranTax],
        [blnGLLRTranDocTran],
        [blnGLLRBudgets],
        [blnGLLRBudgetsAmounts],
        [blnGLLRBudgetsCompIncome],
        [blnGLLRBudgetsCompIncomeF],
        [blnGLLRBudgetsCompBalSheet],
        [blnGLLRDept],
        [blnGLLRDeptBalSheetStd],
        [blnGLLRDeptIncomeStd],
        [blnGLLRDeptIncomeComp],
        [blnGLLRDeptTrialBal],
        [blnGLLRDeptLedger],
        [blnGLLRDeptBudgetAmounts],
        [blnGLLRDeptCompIncome],
        [blnGLLRLists],
        [blnGLLRListsAccounts],
        [blnGLLRListsAccountSets],
        [blnGLLRListsJournalCodes],
        [blnGLCR],
        [blnGLCRFin],
        [blnGLCRFinIncome],
        [blnGLCRFinIncomeMulti],
        [blnGLCRTran],
        [blnGLCRTranAlloc],
        [blnGLCRTranAllocMissing],
        [blnGLCRBudget],
        [blnGLCRBudgetCompBudget],
        [blnGLCRLists],
        [blnGLCRListsProfitCenters],
        [blnAPPR],
        [blnAPPRFin],
        [blnAPPRFinVendorAged],
        [blnAPPRTran],
        [blnAPPRTranVendorPurchases],
        [blnAPPRTranPendingPurchaseOrders],
        [blnAPPRTranPendingPurchaseReq],
        [blnAPPRTranVendorTran],
        [blnAPPRLists],
        [blnAPPRListsVendors],
        [blnAPPRListsContacts],
        [blnARRR],
        [blnARRRFin],
        [blnARRRFinCustAged],
        [blnARRRFinCallSheet],
        [blnARRRFinCustStatements],
        [blnARRRFinSalesStatements],
        [blnARRRFinInvoiceGP],
        [blnARRRFinCustProfiability],
        [blnARRRFinCustSalesTargets],
        [blnARRRFinCustSalesTrends],
        [blnARRRFinSPPerf],
        [blnARRRFinSPTargets],
        [blnARRRTran],
        [blnARRRTranCustSales],
        [blnARRRTranSPSales],
        [blnARRRTranSPMissing],
        [blnARRRTranInvoiceDocs],
        [blnARRRTranCashUp],
        [blnARRRTranPendingSalesOrders],
        [blnARRRTranClosedSalesOrders],
        [blnARRRTranCredits],
        [blnARRRTranCustTran],
        [blnARRRTranOpenQuotes],
        [blnARRRLists],
        [blnARRRListsPricelist],
        [blnARRRListsCustomers],
        [blnARRRListsSalesPersons],
        [blnARRRListsContactsList],
        [blnIR],
        [blnIRFin],
        [blnIRFinInvAged],
        [blnIRFinInvValuation],
        [blnIRFinLocSum],
        [blnIRFinInvLoc],
        [blnIRFinQuantity],
        [blnIRFinQuantityLoc],
        [blnIRFinInvSalesTargets],
        [blnIRTran],
        [blnIRTranInvSales],
        [blnIRTranInvTran],
        [blnIRTranInvLedger],
        [blnIRTranInvLedgerLoc],
        [blnIRTranNegInvCorrections],
        [blnIRTranPricelistChangeLog],
        [blnIRTranSegInvMovement],
        [blnIRTranSegInvSales],
        [blnIRTranSerializedItemTracking],
        [blnIRLists],
        [blnIRListsPricing],
        [blnIRListsInventory],
        [blnIRListsStockCountSheets],
        [blnIRListsAdjustments],
        [blnWR],
        [blnWROrders],
        [blnWROrdersPendingPurchaseOrders],
        [blnWROrdersPendingSalesOrders],
        [blnPOSR],
        [blnPOSRFin],
        [blnPOSRFinDrawerClosing],
        [blnPOSRFinCashierVariance],
        [blnPOSRLists],
        [blnPOSRListsCashDrawers],
        [blnBR],
        [blnBRProj],
        [blnBRProjTender],
        [blnBRProjAlloc],
        [blnBRProjMissingAllow],
        [blnBRProjSalesMatrix],
        [blnBRProjPurchMatrix],
        [blnBRProjCombinedMatrix],
        [blnBRProjActvsBudget],
        [blnBRAdmin],
        [blnBRAdminHistory],
        [blnSMSRLog],
        [blnGLJournalReports],
        [blnGLTransactionReports],
        [blnAPPaymentsReports],
        [blnAPTransactionsReports],
        [blnARReceiptsReports],
        [blnARTransactionsReports],
        [blnISalesReports],
        [blnITransactionsReports],
        [blnSMSR],
        [blnFHQCanApprove],
        [blnFHQCreatePurchaseOrder],
        [blnARViewMarginPercentage],
        [blnAPPendingPayApprovals],
        [blnGLLRTranCashBook],
        [blnAPPRTranVendAccrual],
        [blnIRListsItemWhereUsed],
        [blnIRTranBillOfMaterials],
        [blnAPBulkRFQ],
        [blnInvProdSchedule],
        [blnIRListsProductionSchedule],
        [blnAPPRTranBulkRFQ],
        [blnRecReceiptsReversal],
        [blnARRRTranSalesSummary],
        [blnDashMain],
        [blnDashAR],
        [blnARChangeCustOnSO],
        [blnARChangeCustOnSQ],
        [blnAPOrdersRemove],
        [blnAPReqRemove],
        [blnAROrdersRemove],
        [blnARQuotesRemove],
        [blnARCreditRequestsRemove],
        [blnAPBlockTax],
        [blnARBlockTax],
        [blnAPBulkRFQRemove],
        [blnARQuSysRemove],
        [blnWHStPickRemove],
        [blnWHRecRemove],
        [blnWHShpRemove],
        [blnWHContRemove],
        [blnARMatrixType],
        [blnARMatrixTypeEdit],
        [blnARMatrixTypeRemove],
        [blnIRTranInvEfficiency],
        [blnInvLotNumExpiryDates],
        [blnARRRTranMatrixTypeChangeLog],
        [blnInvBulkLabelPrinting],
        [bitInvVoucher],
        [blnInvShowItemCost],
        [bitInvWebstoreSync],
        [strSalesName],
        [intARDept],
        [intAPDept],
        [bitARVoucerReprint],
        [blnARChangeDocInfo],
        [blnAPChangeDocInfo],
        [blnFADepreciateAsset],
        [blnFAAssets],
        [blnFAAssetTypes],
        [blnFADepreciationMethods],
        [blnFACostTypes],
        [blnFADisposalMethods],
        [blnFAR],
        [blnFARSummary],
        [blnFARAssetListing],
        [blnFARDisposals],
        [blnFARDepreciationListing],
        [blnFARAssetPurchases],
        [blnFARAssetEfficiency],
		[blnIRListsInvIntReq],
		[blnFAAssetsDisposal],
		[blnFAAssetsLocations],
		[blnFARAssetRegister],
		[blnDashAP],
		[blnDashInventory],
		[blnDashWarehouse],
		[blnAPSetupPOApprovers],
		[blnApprovePurchaseOrders],
		[blnMFRWCTransfer],
		[blnInvCatMarginApproval],
		[blnDashBusiness],
		[blnIRFinInvBin]
    FROM [tblUsers]
GO
/****** Object:  StoredProcedure [dbo].[prVendorContacts_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prVendorContacts_Search]
(
    @lngID bigint = Null,
    @strName nvarchar(200) = Null,
    @strVendName nvarchar(50) = Null,
    @intJobTitle bigint = Null,
    @strEmail nvarchar(150) = Null,
    @strTel nvarchar(20) = Null,
    @strFax nvarchar(20) = Null,
    @strCell nvarchar(20) = Null,
    @strStreet1 nvarchar(100) = Null,
    @strStreet2 nvarchar(100) = Null,
    @strCity nvarchar(50) = Null,
    @strProvince nvarchar(50) = Null,
    @strPostal nvarchar(20) = Null,
    @strNotes varchar(MAX) = Null,
    @strFacebook nvarchar(50) = Null,
    @strLinkedIn nvarchar(50) = Null,
    @strSkype nvarchar(50) = Null
)
AS
    SET NOCOUNT ON

    SELECT 
        [lngID],
        [strName],
        [strVendName],
        [intJobTitle],
        [strEmail],
        [strTel],
        [strFax],
        [strCell],
        [strStreet1],
        [strStreet2],
        [strCity],
        [strProvince],
        [strPostal],
        [strNotes],
        [strFacebook],
        [strLinkedIn],
        [strSkype],
        [imgPicture]
    FROM 
        [tblVendorContacts]
    WHERE
        (([lngID] = @lngID) OR (@lngID Is Null)) AND 
        (([strName] = @strName) OR (@strName Is Null)) AND 
        (([strVendName] = @strVendName) OR (@strVendName Is Null)) AND 
        (([intJobTitle] = @intJobTitle) OR (@intJobTitle Is Null)) AND 
        (([strEmail] = @strEmail) OR (@strEmail Is Null)) AND 
        (([strTel] = @strTel) OR (@strTel Is Null)) AND 
        (([strFax] = @strFax) OR (@strFax Is Null)) AND 
        (([strCell] = @strCell) OR (@strCell Is Null)) AND 
        (([strStreet1] = @strStreet1) OR (@strStreet1 Is Null)) AND 
        (([strStreet2] = @strStreet2) OR (@strStreet2 Is Null)) AND 
        (([strCity] = @strCity) OR (@strCity Is Null)) AND 
        (([strProvince] = @strProvince) OR (@strProvince Is Null)) AND 
        (([strPostal] = @strPostal) OR (@strPostal Is Null)) AND 
        (([strNotes] = @strNotes) OR (@strNotes Is Null)) AND 
        (([strFacebook] = @strFacebook) OR (@strFacebook Is Null)) AND 
        (([strLinkedIn] = @strLinkedIn) OR (@strLinkedIn Is Null)) AND 
        (([strSkype] = @strSkype) OR (@strSkype Is Null))
GO
/****** Object:  StoredProcedure [dbo].[prVendorRecon_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prVendorRecon_Save]
(
		@lngVenReconId bigint,
		@strVendorNo nvarchar(100),
        @dteReconDate datetime,
		@decLedgerBalance numeric(18,2),
		@decStatementBalance numeric(18,2),
		@strUserName nvarchar(50),
		@strComment nvarchar(500)
)
AS
BEGIN	
	SET NOCOUNT ON;

    IF ((SELECT COUNT(*) FROM [tblVendorRecon] WHERE strVendorNo = @strVendorNo AND dteReconDate = @dteReconDate) = 0)
    BEGIN
        INSERT INTO [tblVendorRecon]
        (
            strVendorNo,
			dteReconDate,
			decLedgerBalance,
			decStatementBalance,
			dteSystemDate,
			strUserName,
			strComment
        )
        VALUES
        (
            @strVendorNo,
			@dteReconDate,
			@decLedgerBalance,
			@decStatementBalance,
			GetDate(),
			@strUserName,
			@strComment
        )
		Select @lngVenReconId = @@IDENTITY
    END
    ELSE
    BEGIN
        UPDATE [tblVendorRecon] SET 
			strVendorNo=@strVendorNo,
			dteReconDate=@dteReconDate,
			decLedgerBalance=@decLedgerBalance,
			decStatementBalance=@decStatementBalance,
			strUserName=@strUserName,
			strComment=@strComment
        WHERE
            strVendorNo = @strVendorNo AND dteReconDate = @dteReconDate
	    DELETE FROM [tblVendorReconDT] WHERE lngVenReconId = @lngVenReconId
    END

    SELECT @lngVenReconId
END
GO
/****** Object:  StoredProcedure [dbo].[prVendorRecon_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prVendorRecon_Select]
(
    @strVendorNo nvarchar(50),
	@dteReconDate datetime
)
AS
    SET NOCOUNT ON
	Declare @lngVenReconId Bigint
	SET @lngVenReconId=(SELECT TOP 1 lngVenReconID From [tblVendorRecon] WHERE strVendorNo = @strVendorNo AND dteReconDate = @dteReconDate)


    SELECT 
        lngVenReconID,strVendorNo,strVendorName = strVendDesc,decLedgerBalance,
		decStatementBalance,dteReconDate,strComment,tblVendors.strCurrency
    FROM 
        [tblVendorRecon] 
		INNER JOIN [tblVendors] ON tblVendors.strVendName = tblVendorRecon.strVendorNo
     WHERE 
        lngVenReconID=@lngVenReconId

	SELECT  
		lngId,lngVenReconID,intLineNo,lngReconReason,strSource,dteDate,strComment,decDebit,decCredit
	FROM 
		[tblVendorReconDT]
	WHERE 
        lngVenReconID=@lngVenReconId
GO
/****** Object:  StoredProcedure [dbo].[prVendorRecon_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[prVendorRecon_SelectAll]    Script Date: 2020-04-22 ******/
CREATE PROCEDURE [dbo].[prVendorRecon_SelectAll]
(
    @strSearch nvarchar(50),
	@dteStartDate datetime,
	@dteFinishDate datetime
)
AS
    SET NOCOUNT ON

	IF LEN(@strSearch) > 0
	BEGIN

		SELECT	tblVendorRecon.strVendorNo AS strVendName,
				tblVendors.strVendDesc,
				tblVendorRecon.dteReconDate,
				tblVendorRecon.strComment,
				tblVendorRecon.decLedgerBalance AS decSystemBalance,
				tblVendorRecon.decStatementBalance AS decVendBalance,
				tblVendorRecon.lngVenReconID 
		FROM tblVendorRecon
		INNER JOIN tblVendors ON tblVendors.strVendName = tblVendorRecon.strVendorNo
		WHERE (tblVendorRecon.strVendorNo LIKE '%' + @strSearch + '%'
				OR tblVendors.strVendDesc LIKE '%' + @strSearch + '%'
				OR tblVendorRecon.strComment LIKE '%' + @strSearch + '%')
		AND (tblVendorRecon.dteReconDate BETWEEN @dteStartDate AND @dteFinishDate)
	END
	ELSE
	BEGIN

		SELECT	tblVendorRecon.strVendorNo AS strVendName,
				tblVendors.strVendDesc,
				tblVendorRecon.dteReconDate,
				tblVendorRecon.strComment,
				tblVendorRecon.decLedgerBalance AS decSystemBalance,
				tblVendorRecon.decStatementBalance AS decVendBalance,
				tblVendorRecon.lngVenReconID 
		FROM tblVendorRecon
		INNER JOIN tblVendors ON tblVendors.strVendName = tblVendorRecon.strVendorNo
		WHERE (tblVendorRecon.dteReconDate BETWEEN @dteStartDate AND @dteFinishDate)

	END
GO
/****** Object:  StoredProcedure [dbo].[prVendorReconRE_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prVendorReconRE_Delete]
(
	@strREName nvarchar(100) = null
)	
AS
	SET NOCOUNT ON;
	DELETE FROM [tblVendorReconRE] WHERE [strREName] = @strREName
GO
/****** Object:  StoredProcedure [dbo].[prVendorReconRE_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prVendorReconRE_Save]
(
		@strREName nvarchar(100),
		@strVendorNo nvarchar(100),
        @dteReconDate datetime,
		@decLedgerBalance numeric(18,2),
		@decStatementBalance numeric(18,2),
		@strComment nvarchar(500)
)
AS
BEGIN
	SET NOCOUNT ON;
    IF ((SELECT COUNT(*) FROM [tblVendorReconRE] WHERE strREName = @strREName) = 0)
    BEGIN
        INSERT INTO [tblVendorReconRE]
        (
			strREName,
            strVendorNo,
			dteReconDate,
			decLedgerBalance,
			decStatementBalance,
			strComment
        )
        VALUES
        (
			@strREName,
            @strVendorNo,
			@dteReconDate,
			@decLedgerBalance,
			@decStatementBalance,
			@strComment
        )
		Select 1
    END
    ELSE
    BEGIN
        UPDATE [tblVendorReconRE] SET 
			strVendorNo=@strVendorNo,
			dteReconDate=@dteReconDate,
			decLedgerBalance=@decLedgerBalance,
			decStatementBalance=@decStatementBalance,
			strComment=@strComment
        WHERE
            strREName = @strREName
			DELETE FROM [tblVendorReconREDT] WHERE strREName = @strREName
    END

    SELECT 1
END
GO
/****** Object:  StoredProcedure [dbo].[prVendorReconRE_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prVendorReconRE_Select]
(
    @strREName nvarchar(50)
)
AS
    SET NOCOUNT ON
    SELECT 
        strREName,strVendorNo,strVendorName = strVendDesc,decLedgerBalance,decStatementBalance,
		dteReconDate,strComment,strCurrency
    FROM 
        [tblVendorReconRE]
		INNER JOIN [tblVendors] ON tblVendors.strVendName = tblVendorReconRE.strVendorNo
    WHERE 
        [strREName] = @strREName
	SELECT  
		strREName,intLineNo,lngReconReason,strSource,dteDate,strComment,decDebit,decCredit
	FROM 
		[tblVendorReconREDT]
	WHERE 
        [strREName] = @strREName
GO
/****** Object:  StoredProcedure [dbo].[prVendorReconRE_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prVendorReconRE_SelectAll]
(
	@strSearchText AS nvarchar(50) = NULL
)
AS
    SET NOCOUNT ON
    SELECT 
        strREName,
        dteLastProcDate,
        strVendorNo
    FROM 
        [tblVendorReconRE] Where bitIsReconciled = 0 
		AND (strREName Like ('%' + @strSearchText + '%') OR @strSearchText IS NULL) 
GO
/****** Object:  StoredProcedure [dbo].[prVendorReconReasons_Delete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prVendorReconReasons_Delete]
(
	@lngID bigint
)	
AS
BEGIN
	SET NOCOUNT ON;

	DELETE FROM [tblVendorReconReasons] WHERE [lngID] = @lngID
END
GO
/****** Object:  StoredProcedure [dbo].[prVendorReconReasons_Save]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prVendorReconReasons_Save]
(
		@lngID bigint,
		@strName nvarchar(100) = null,
        @bitInactive bit = null
)
AS
BEGIN	
	SET NOCOUNT ON;

    IF ((SELECT COUNT(*) FROM [tblVendorReconReasons] WHERE lngID = @lngID) = 0)
    BEGIN
        INSERT INTO [tblVendorReconReasons]
        (
            [strName],
			[bitInactive]
        )
        VALUES
        (
            @strName,
			@bitInactive
        )
    END
    ELSE
    BEGIN
        UPDATE [tblVendorReconReasons] SET 
			strName = @strName,
			bitInactive=@bitInactive
        WHERE
            lngID = @lngID
    END

    RETURN 1
END
GO
/****** Object:  StoredProcedure [dbo].[prVendorReconReasons_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prVendorReconReasons_SelectAll] (
	@bitInactive BIT = NULL
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@strSearchText NVARCHAR(50) = NULL
	)
AS
BEGIN
	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT [lngID]
		,[strName]
		,[bitInactive]
	FROM [tblVendorReconReasons]
	WHERE bitInactive IN (
			0
			,ISNULL(@bitInactive, 1)
			)
		AND (
			strName LIKE ('%' + @strSearchText + '%')
			OR @strSearchText IS NULL
			)
	ORDER BY strName OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO
/****** Object:  StoredProcedure [dbo].[prVendorReconWorksheet_SelectAll]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prVendorReconWorksheet_SelectAll]
(
	@dteReconDate datetime,
	@bitIsActive bit = 0
)
AS
BEGIN
DECLARE @cols AS NVARCHAR(MAX), @colsDef AS NVARCHAR(MAX),@colsSum AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(strName) 
                    from tblVendors
					cross join tblVendorReconReasons
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

select @colsDef = STUFF((SELECT distinct ',' + QUOTENAME(strName) +'=ISNULL(' + QUOTENAME(strName)+ ',0)' 
                    from tblVendors
					cross join tblVendorReconReasons
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

select @colsSum = STUFF((SELECT distinct '+ ISNULL(' + QUOTENAME(strName)+ ',0)' 
                    from tblVendors
					cross join tblVendorReconReasons
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT strVendName,strVendDesc,decBalDue,decStatementBal=ISNULL(decStatementBalance,0),decDiff=decBalDue - ISNULL(decStatementBalance,0),
			 decReconcilied = '+@colsSum+',decVariance = (decBalDue - ISNULL(decStatementBalance,0)) - ( '+@colsSum+'),blnIsReconciled=CASE WHEN lngVenReconID IS NULL THEN 0 ELSE 1 END, strCurrency,' 
			 + @colsDef + '
             from 
             (
               select strName ,tblVendors.strVendName,strVendDesc, tblVendorRecon.lngVenReconID,
	val = ISNULL(Case When decDebit > 0 then decDebit Else decCredit*-1 End,0),Isnull(tblBal.decBalDue,0) AS decBalDue,decStatementBalance,ISNULL(tblBal.strCurrency,tblVendors.strCurrency) AS strCurrency
	from tblVendors
	LEFT JOIN (SELECT ISNULL(SUM(CASE WHEN tblVendTransDT.bitIsForeign = 1 Then tblVendTransDT.decAmountF ELSE tblVendTransDT.decAmount END),0) AS decBalDue,strVendName,strCurrency FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID 
	WHERE tblVendTransDT.bitReversed = 0 AND tblVendTransDT.dteJournalDate <= '''+CONVERT(Varchar(20),@dteReconDate)+''' Group BY strVendName,strCurrency) as tblBal ON tblVendors.strVendName = tblBal.strVendName
	cross join tblVendorReconReasons
	LEFT JOIN tblVendorRecon ON tblVendors.strVendName = tblVendorRecon.strVendorNo AND tblVendorRecon.dteReconDate = '''+CONVERT(Varchar(20),@dteReconDate)+'''
	LEFT JOIN tblVendorReconDT ON tblVendorRecon.lngVenReconID = tblVendorReconDT.lngVenReconID AND tblVendorReconReasons.lngID = tblVendorReconDT.lngReconReason
	WHERE tblVendors.bitInactive IN (0,'+ CONVERT(varchar(2),@bitIsActive) +')
            ) x
            pivot 
            (
                SUM(val)
                for strName in (' + @cols + ')
            ) p '

Execute(@query)
END
GO
/****** Object:  StoredProcedure [dbo].[prVendors_Select]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[prVendors_Select]
(
    @strVendName nvarchar(50)
)
AS
    SET NOCOUNT ON

    SELECT 
        [strVendName],
        [strStreet1],
        [strStreet2],
        [strCity],
        [strProvince],
        [strPostal],
        [strPhone],
        [strCellPhone],
        [strFax],
        [strEmail],
        [strVAT],
        [strCK],
        [decBalDue],
        [decYTDPurch],
        [decOpenOrders],
        [intDelMethod],
        [bitInventoryVendor],
        [bitExpenseVendor],
        [intExpAcct],
        [bitInactive],
        [dteLastUpdated],
        [strContact],
        [strField1],
        [strField2],
        [strField3],
        [strField4],
        [strField5],
        [strField6],
        [strTaxCode],
        [dteSince],
        [strNotes],
        [uID],
        [strVendDesc],
        [strCountry],
        [strTerm],
        [intDept],
        [strCurrency],
        [decBalDueF],
        [decYTDPurchF],
        [decOpenOrdersF],
        [strField7],
        [strField8],
        [strField9],
        [strField10],
        [strField11],
        [strField12],
        [strVendCategory],
        [strCountryCode],
        [strTenderType],
        [decTradeDiscPerc],
        [bitWithholdTax],
        [strWithholdTaxCode]
    FROM 
        [tblVendors]
    WHERE 
        [strVendName] = @strVendName
GO
/****** Object:  StoredProcedure [dbo].[PurchaseCopySoSerialNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [OrderDocDTSerialInsert] ***********/

/*********** Start [PurchaseCopySoSerialNumber] ***********/
CREATE PROCEDURE [dbo].[PurchaseCopySoSerialNumber]
 @DocNumber AS NVARCHAR(200) = NULL	,
 @LineNumber AS int 
	
AS
BEGIN

	SET NOCOUNT ON;
SELECT tblInvoiceDocDTSerial.strInvDocID AS InvDocID,
	   tblInvoiceDocDTSerial.intLineNo AS LineNumber,
	   tblInvoiceDocDTSerial.strSerialNumber AS SerialNumber,
	   tblInvoiceDocDTSerial.decQty AS Qty,
	   tblInvoiceDocDTSerial.strUnit AS Unit,
	   tblInvoiceDocDTSerial.lngID AS InvoiceDocDTSerialId,
	   tblInvoiceDocDTSerial.bitExpiryDate AS IsExpiryDate,
	   tblInvoiceDocDTSerial.dteExpiryDate AS ExpiryDate ,
	   tblInvoiceDocDTSerial.intSerialLotType AS SerialLotType,
ISNULL((SELECT TYP.intType FROM tblInvoiceDocDT (NOLOCK) DTL INNER JOIN tblInv (NOLOCK) INV ON DTL.strPartNumber = INV.strPartNumber 
INNER JOIN tblInvSerialTypes (NOLOCK) TYP ON INV.strInvSerialType = TYP.strInvSerialType WHERE DTL.strInvDocID = tblInvoiceDocDTSerial.strInvDocID 
AND DTL.intLineNo = tblInvoiceDocDTSerial.intLineNo),0) AS DocDtType FROM tblInvoiceDocDTSerial (NOLOCK) WHERE tblInvoiceDocDTSerial.strInvDocID = @DocNumber 
AND tblInvoiceDocDTSerial.intLineNo = @LineNumber ORDER BY tblInvoiceDocDTSerial.lngID

END

GO
/****** Object:  StoredProcedure [dbo].[PurchasesCopySOBookmarkedData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetSalesREDTData] ***********/

/*********** Start [PurchasesCopySOBookmarkedData] ***********/
CREATE PROCEDURE [dbo].[PurchasesCopySOBookmarkedData] @BookmarkIndex AS INT
	,@BookmarkType1 AS INT
	,@BookmarkType2 AS INT
	,@BookmarkType3 AS INT
	,@BookmarkType4 AS INT
	,@BookmarkType5 AS INT
	,@BookmarkType6 AS INT
	,@ViewType AS INT
	,@Search AS VARCHAR(max)
	,@Name AS VARCHAR(max)
	,@StartDate AS DATETIME
	,@EndDate AS DATETIME
AS
BEGIN
	SET NOCOUNT ON;

	IF @BookmarkIndex = 0
		SELECT HDR.strInvPDocID AS InvOrdDocID
			,HDR.dteJournalDate AS JournalDate
			,VEN.strVendDesc AS CustDesc
			,DTL.strPartNumber AS PartNumber
			,INV.decSumAvail AS SumAvail
			,DTL.decBuyQty AS decQty
			,DTL.decPriceEaExc AS PriceEaExc
			,DTL.strTaxCode AS TaxCode
			,DTL.decLineTaxAmt AS LineTaxAmt
			,DTL.decTotIncTax AS LineTotInc
			,DTL.intLineNo AS LineNumber
			,DTL.strPartDesc AS PartDesc
			,@BookmarkType1 AS BookmarkType
			,0 AS SerialID
			,HDR.strShipTo AS ShipTo
			,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
			,HDR.strReference AS Reference
			,DTL.decEaIncTax AS PriceEaInc
			,DTL.decLineDiscPerc AS LineDiscPerc
			,HDR.dteRequired AS RequiredDate
			,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
		FROM tblInvoiceDocP AS HDR WITH (NOLOCK)
		INNER JOIN tblInvoiceDocPDT AS DTL WITH (NOLOCK) ON HDR.strInvPDocID = DTL.strInvPDocID
		INNER JOIN tblInv AS INV WITH (NOLOCK) ON DTL.strPartNumber = INV.strPartNumber
		INNER JOIN tblVendors AS VEN WITH (NOLOCK) ON HDR.strVendName = VEN.strVendName
		LEFT JOIN tblInvoiceDocPDTPrj AS DTLPRJ WITH (NOLOCK) ON DTL.strInvPDocID = DTLPRJ.strInvPDocID
			AND DTL.intLineNo = DTLPRJ.intLineNo
		WHERE (INV.bitInactive = 0)
			AND (DTL.bitDiscountTax = 0)
			AND (HDR.decTotal >= 0)
			AND (HDR.bitBookmark = 1)
			AND (
				CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				@Search IS NULL
				OR (
					(HDR.strInvPDocID LIKE '%' + @Search + '%')
					OR (VEN.strVendDesc LIKE '%' + @Search + '%')
					OR (DTL.strPartNumber LIKE '%' + @Search + '%')
					OR (ISNULL(DTLPRJ.strProjNumber, N'') LIKE '%' + @Search + '%')
					OR (HDR.strReference LIKE '%' + @Search + '%')
					)
				)
		
		UNION ALL
		
		SELECT HDR.strOrdPDocID AS InvOrdDocID
			,HDR.dteJournalDate AS JournalDate
			,VEN.strVendDesc AS CustDesc
			,DTL.strPartNumber AS PartNumber
			,INV.decSumAvail AS SumAvail
			,DTL.decBuyQty AS Qty
			,DTL.decPriceEaExc AS PriceEaExc
			,DTL.strTaxCode AS TaxCode
			,DTL.decLineTaxAmt AS LineTaxAmt
			,DTL.decTotIncTax AS LineTotInc
			,DTL.intLineNo AS LineNumber
			,DTL.strPartDesc AS PartDesc
			,@BookmarkType2 AS BookmarkType
			,0 AS SerialID
			,HDR.strShipTo AS ShipTo
			,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
			,HDR.strReference AS Reference
			,DTL.decEaIncTax AS PriceEaInc
			,DTL.decLineDiscPerc AS LineDiscPerc
			,HDR.dteRequired AS RequiredDate
			,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
		FROM tblOrderDocP AS HDR WITH (NOLOCK)
		INNER JOIN tblOrderDocPDT AS DTL WITH (NOLOCK) ON HDR.strOrdPDocID = DTL.strOrdPDocID
		INNER JOIN tblInv AS INV WITH (NOLOCK) ON DTL.strPartNumber = INV.strPartNumber
		INNER JOIN tblVendors AS VEN WITH (NOLOCK) ON HDR.strVendName = VEN.strVendName
		LEFT JOIN tblOrderDocPDTPrj AS DTLPRJ WITH (NOLOCK) ON DTL.strOrdPDocID = DTLPRJ.strOrdPDocID
			AND DTL.intLineNo = DTLPRJ.intLineNo
		WHERE (INV.bitInactive = 0)
			AND (HDR.intDocType = 1)
			AND (DTL.bitDiscountTax = 0)
			AND (HDR.decTotal >= 0)
			AND (HDR.bitBookmark = 1)
			AND (
				CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				@Search IS NULL
				OR (
					(HDR.strOrdPDocID LIKE '%' + @Search + '%')
					OR (VEN.strVendDesc LIKE '%' + @Search + '%')
					OR (DTL.strPartNumber LIKE '%' + @Search + '%')
					OR (ISNULL(DTLPRJ.strProjNumber, N'') LIKE '%' + @Search + '%')
					OR (HDR.strReference LIKE '%' + @Search + '%')
					)
				)
		
		UNION ALL
		
		SELECT HDR.strOrdPDocID AS InvOrdDocID
			,HDR.dteJournalDate AS JournalDate
			,VEN.strVendDesc AS CustDesc
			,DTL.strPartNumber AS PartNumber
			,INV.decSumAvail AS SumAvail
			,DTL.decBuyQty AS Qty
			,DTL.decPriceEaExc AS PriceEaExc
			,DTL.strTaxCode AS TaxCode
			,DTL.decLineTaxAmt AS LineTaxAmt
			,DTL.decTotIncTax AS LineTotInc
			,DTL.intLineNo AS LineNumber
			,DTL.strPartDesc AS PartDesc
			,@BookmarkType3 AS BookmarkType
			,0 AS SerialID
			,HDR.strShipTo AS ShipTo
			,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
			,HDR.strReference AS Reference
			,DTL.decEaIncTax AS PriceEaInc
			,DTL.decLineDiscPerc AS LineDiscPerc
			,HDR.dteRequired AS RequiredDate
			,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
		FROM tblOrderDocP AS HDR WITH (NOLOCK)
		INNER JOIN tblOrderDocPDT AS DTL WITH (NOLOCK) ON HDR.strOrdPDocID = DTL.strOrdPDocID
		INNER JOIN tblInv AS INV WITH (NOLOCK) ON DTL.strPartNumber = INV.strPartNumber
		INNER JOIN tblVendors AS VEN WITH (NOLOCK) ON HDR.strVendName = VEN.strVendName
		LEFT JOIN tblOrderDocPDTPrj AS DTLPRJ WITH (NOLOCK) ON DTL.strOrdPDocID = DTLPRJ.strOrdPDocID
			AND DTL.intLineNo = DTLPRJ.intLineNo
		WHERE (INV.bitInactive = 0)
			AND (HDR.intDocType = 2)
			AND (DTL.bitDiscountTax = 0)
			AND (HDR.decTotal >= 0)
			AND (HDR.bitBookmark = 1)
			AND (
				CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				@Search IS NULL
				OR (
					(HDR.strOrdPDocID LIKE '%' + @Search + '%')
					OR (VEN.strVendDesc LIKE '%' + @Search + '%')
					OR (DTL.strPartNumber LIKE '%' + @Search + '%')
					OR (ISNULL(DTLPRJ.strProjNumber, N'') LIKE '%' + @Search + '%')
					OR (HDR.strReference LIKE '%' + @Search + '%')
					)
				)
		
		UNION ALL
		
		SELECT HDR.strInvDocID AS InvOrdDocID
			,HDR.dteJournalDate AS JournalDate
			,CUS.strCustDesc AS CustDesc
			,DTL.strPartNumber AS PartNumber
			,INV.decSumAvail AS SumAvail
			,DTL.decQty AS Qty
			,DTL.decPriceEaExc AS PriceEaExc
			,DTL.strTaxCode AS TaxCode
			,DTL.decLineTaxAmt AS LineTaxAmt
			,DTL.decLineTotInc AS LineTotInc
			,DTL.intLineNo AS LineNumber
			,DTL.strPartDesc AS PartDesc
			,@BookmarkType4 AS BookmarkType
			,0 AS SerialID
			,HDR.strShipTo AS ShipTo
			,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
			,HDR.strReference AS Reference
			,DTL.decPriceEaInc AS PriceEaInc
			,DTL.decLineDiscPerc AS LineDiscPerc
			,HDR.dteRequired AS RequiredDate
			,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
		FROM tblInvoiceDoc AS HDR WITH (NOLOCK)
		INNER JOIN tblInvoiceDocDT AS DTL WITH (NOLOCK) ON HDR.strInvDocID = DTL.strInvDocID
		INNER JOIN tblInv AS INV WITH (NOLOCK) ON DTL.strPartNumber = INV.strPartNumber
		INNER JOIN tblCustomers AS CUS WITH (NOLOCK) ON HDR.strCustName = CUS.strCustName
		LEFT JOIN tblInvoiceDocDTPrj AS DTLPRJ WITH (NOLOCK) ON DTL.strInvDocID = DTLPRJ.strInvDocID
			AND DTL.intLineNo = DTLPRJ.intLineNo
		WHERE (INV.bitInactive = 0)
			AND (DTL.bitDiscountTax = 0)
			AND (HDR.decTotal >= 0)
			AND (HDR.bitBookmark = 1)
			AND (
				CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				@Search IS NULL
				OR (
					(HDR.strInvDocID LIKE '%' + @Search + '%')
					OR (CUS.strCustDesc LIKE '%' + @Search + '%')
					OR (DTL.strPartNumber LIKE '%' + @Search + '%')
					OR (ISNULL(DTLPRJ.strProjNumber, N'') LIKE '%' + @Search + '%')
					OR (HDR.strReference LIKE '%' + @Search + '%')
					)
				)
		
		UNION ALL
		
		SELECT HDR.strOrdDocID AS InvOrdDocID
			,HDR.dteJournalDate AS JournalDate
			,CUS.strCustDesc AS CustDesc
			,DTL.strPartNumber AS PartNumber
			,INV.decSumAvail AS SumAvail
			,DTL.decQty AS Qty
			,DTL.decPriceEaExc AS PriceEaExc
			,DTL.strTaxCode AS TaxCode
			,DTL.decLineTaxAmt AS LineTaxAmt
			,DTL.decLineTotInc AS LineTotInc
			,DTL.intLineNo AS LineNumber
			,DTL.strPartDesc AS PartDesc
			,@BookmarkType5 AS BookmarkType
			,0 AS SerialID
			,HDR.strShipTo AS ShipTo
			,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
			,HDR.strReference AS Reference
			,DTL.decPriceEaInc AS PriceEaInc
			,DTL.decLineDiscPerc AS LineDiscPerc
			,HDR.dteRequired AS RequiredDate
			,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
		FROM tblOrderDoc AS HDR WITH (NOLOCK)
		INNER JOIN tblOrderDocDT AS DTL WITH (NOLOCK) ON HDR.strOrdDocID = DTL.strOrdDocID
		INNER JOIN tblInv AS INV WITH (NOLOCK) ON DTL.strPartNumber = INV.strPartNumber
		INNER JOIN tblCustomers AS CUS WITH (NOLOCK) ON HDR.strCustName = CUS.strCustName
		LEFT JOIN tblOrderDocDTPrj AS DTLPRJ WITH (NOLOCK) ON DTL.strOrdDocID = DTLPRJ.strOrdDocID
			AND DTL.intLineNo = DTLPRJ.intLineNo
		WHERE (INV.bitInactive = 0)
			AND (HDR.intDocType = 1)
			AND (DTL.bitDiscountTax = 0)
			AND (HDR.decTotal >= 0)
			AND (HDR.bitBookmark = 1)
			AND (
				CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				@Search IS NULL
				OR (
					(HDR.strOrdDocID LIKE '%' + @Search + '%')
					OR (CUS.strCustDesc LIKE '%' + @Search + '%')
					OR (DTL.strPartNumber LIKE '%' + @Search + '%')
					OR (ISNULL(DTLPRJ.strProjNumber, N'') LIKE '%' + @Search + '%')
					OR (HDR.strReference LIKE '%' + @Search + '%')
					)
				)
		
		UNION ALL
		
		SELECT HDR.strOrdDocID AS InvOrdDocID
			,HDR.dteJournalDate AS JournalDate
			,CUS.strCustDesc AS CustDesc
			,DTL.strPartNumber AS PartNumber
			,INV.decSumAvail AS SumAvail
			,DTL.decQty AS Qty
			,DTL.decPriceEaExc AS PriceEaExc
			,DTL.strTaxCode AS TaxCode
			,DTL.decLineTaxAmt AS LineTaxAmt
			,DTL.decLineTotInc AS LineTotInc
			,DTL.intLineNo AS LineNumber
			,DTL.strPartDesc AS PartDesc
			,@BookmarkType6 AS BookmarkType
			,0 AS SerialID
			,HDR.strShipTo AS ShipTo
			,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
			,HDR.strReference AS Reference
			,DTL.decPriceEaInc AS PriceEaInc
			,DTL.decLineDiscPerc AS LineDiscPerc
			,HDR.dteRequired AS RequiredDate
			,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
		FROM tblOrderDoc AS HDR WITH (NOLOCK)
		INNER JOIN tblOrderDocDT AS DTL WITH (NOLOCK) ON HDR.strOrdDocID = DTL.strOrdDocID
		INNER JOIN tblInv AS INV WITH (NOLOCK) ON DTL.strPartNumber = INV.strPartNumber
		INNER JOIN tblCustomers AS CUS WITH (NOLOCK) ON HDR.strCustName = CUS.strCustName
		LEFT JOIN tblOrderDocDTPrj AS DTLPRJ WITH (NOLOCK) ON DTL.strOrdDocID = DTLPRJ.strOrdDocID
			AND DTL.intLineNo = DTLPRJ.intLineNo
		WHERE (INV.bitInactive = 0)
			AND (HDR.intDocType = 2)
			AND (DTL.bitDiscountTax = 0)
			AND (HDR.decTotal >= 0)
			AND (HDR.bitBookmark = 1)
			AND (
				CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				@Search IS NULL
				OR (
					(HDR.strOrdDocID LIKE '%' + @Search + '%')
					OR (CUS.strCustDesc LIKE '%' + @Search + '%')
					OR (DTL.strPartNumber LIKE '%' + @Search + '%')
					OR (ISNULL(DTLPRJ.strProjNumber, N'') LIKE '%' + @Search + '%')
					OR (HDR.strReference LIKE '%' + @Search + '%')
					)
				)
		ORDER BY HDR.dteJournalDate DESC
			,InvOrdDocID DESC
			,DTL.intLineNo
	ELSE IF @BookmarkIndex = 1
		SELECT HDR.strInvPDocID AS InvOrdDocID
			,HDR.dteJournalDate AS JournalDate
			,VEN.strVendDesc AS CustDesc
			,DTL.strPartNumber AS PartNumber
			,INV.decSumAvail AS SumAvail
			,DTL.decBuyQty AS Qty
			,DTL.decPriceEaExc AS PriceEaExc
			,DTL.strTaxCode AS TaxCode
			,DTL.decLineTaxAmt AS LineTaxAmt
			,DTL.decTotIncTax AS LineTotInc
			,DTL.intLineNo AS LineNumber
			,DTL.strPartDesc AS PartDesc
			,@BookmarkType1 AS BookmarkType
			,0 AS SerialID
			,HDR.strShipTo AS ShipTo
			,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
			,HDR.strReference AS Reference
			,DTL.decEaIncTax AS PriceEaInc
			,DTL.decLineDiscPerc AS LineDiscPerc
			,HDR.dteRequired AS RequiredDate
			,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
		FROM tblInvoiceDocP AS HDR WITH (NOLOCK)
		INNER JOIN tblInvoiceDocPDT AS DTL WITH (NOLOCK) ON HDR.strInvPDocID = DTL.strInvPDocID
		INNER JOIN tblInv AS INV WITH (NOLOCK) ON DTL.strPartNumber = INV.strPartNumber
		INNER JOIN tblVendors AS VEN WITH (NOLOCK) ON HDR.strVendName = VEN.strVendName
		LEFT JOIN tblInvoiceDocPDTPrj AS DTLPRJ WITH (NOLOCK) ON DTL.strInvPDocID = DTLPRJ.strInvPDocID
			AND DTL.intLineNo = DTLPRJ.intLineNo
		WHERE (INV.bitInactive = 0)
			AND (DTL.bitDiscountTax = 0)
			AND (HDR.decTotal >= 0)
			AND (HDR.bitBookmark = 1)
			AND (
				CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				@Search IS NULL
				OR (
					(HDR.strInvPDocID LIKE '%' + @Search + '%')
					OR (VEN.strVendDesc LIKE '%' + @Search + '%')
					OR (DTL.strPartNumber LIKE '%' + @Search + '%')
					OR (ISNULL(DTLPRJ.strProjNumber, N'') LIKE '%' + @Search + '%')
					OR (HDR.strReference LIKE '%' + @Search + '%')
					)
				)
			AND (
				(
					(LEN(@Name) > 0)
					AND (
						@ViewType IN (
							0
							,1
							,2
							,3
							)
						)
					)
				AND ((HDR.strVendName = @Name))
				OR LEN(ISNULL(@Name, '')) = 0
				)
		
		UNION ALL
		
		SELECT HDR.strOrdPDocID AS InvOrdDocID
			,HDR.dteJournalDate AS JournalDate
			,VEN.strVendDesc AS CustDesc
			,DTL.strPartNumber AS PartNumber
			,INV.decSumAvail AS SumAvail
			,DTL.decBuyQty AS Qty
			,DTL.decPriceEaExc AS PriceEaExc
			,DTL.strTaxCode AS TaxCode
			,DTL.decLineTaxAmt AS LineTaxAmt
			,DTL.decTotIncTax AS LineTotInc
			,DTL.intLineNo AS LineNumber
			,DTL.strPartDesc AS PartDesc
			,@BookmarkType2 AS BookmarkType
			,0 AS SerialID
			,HDR.strShipTo AS ShipTo
			,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
			,HDR.strReference AS Reference
			,DTL.decEaIncTax AS PriceEaInc
			,DTL.decLineDiscPerc AS LineDiscPerc
			,HDR.dteRequired AS RequiredDate
			,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
		FROM tblOrderDocP AS HDR WITH (NOLOCK)
		INNER JOIN tblOrderDocPDT AS DTL WITH (NOLOCK) ON HDR.strOrdPDocID = DTL.strOrdPDocID
		INNER JOIN tblInv AS INV WITH (NOLOCK) ON DTL.strPartNumber = INV.strPartNumber
		INNER JOIN tblVendors AS VEN WITH (NOLOCK) ON HDR.strVendName = VEN.strVendName
		LEFT JOIN tblOrderDocPDTPrj AS DTLPRJ WITH (NOLOCK) ON DTL.strOrdPDocID = DTLPRJ.strOrdPDocID
			AND DTL.intLineNo = DTLPRJ.intLineNo
		WHERE (INV.bitInactive = 0)
			AND (HDR.intDocType = 1)
			AND (DTL.bitDiscountTax = 0)
			AND (HDR.decTotal >= 0)
			AND (HDR.bitBookmark = 1)
			AND (
				CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				@Search IS NULL
				OR (
					(HDR.strOrdPDocID LIKE '%' + @Search + '%')
					OR (VEN.strVendDesc LIKE '%' + @Search + '%')
					OR (DTL.strPartNumber LIKE '%' + @Search + '%')
					OR (ISNULL(DTLPRJ.strProjNumber, N'') LIKE '%' + @Search + '%')
					OR (HDR.strReference LIKE '%' + @Search + '%')
					)
				)
			AND (
				(
					(LEN(@Name) > 0)
					AND (
						@ViewType IN (
							0
							,1
							,2
							,3
							)
						)
					)
				AND ((HDR.strVendName = @Name))
				OR LEN(ISNULL(@Name, '')) = 0
				)
		
		UNION ALL
		
		SELECT HDR.strOrdPDocID AS InvOrdDocID
			,HDR.dteJournalDate AS JournalDate
			,VEN.strVendDesc AS CustDesc
			,DTL.strPartNumber AS PartNumber
			,INV.decSumAvail AS SumAvail
			,DTL.decBuyQty AS Qty
			,DTL.decPriceEaExc AS PriceEaExc
			,DTL.strTaxCode AS TaxCode
			,DTL.decLineTaxAmt AS LineTaxAmt
			,DTL.decTotIncTax AS LineTotInc
			,DTL.intLineNo AS LineNumber
			,DTL.strPartDesc AS PartDesc
			,@BookmarkType3 AS BookmarkType
			,0 AS SerialID
			,HDR.strShipTo AS ShipTo
			,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
			,HDR.strReference AS Reference
			,DTL.decEaIncTax AS PriceEaInc
			,DTL.decLineDiscPerc AS LineDiscPerc
			,HDR.dteRequired AS RequiredDate
			,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
		FROM tblOrderDocP AS HDR WITH (NOLOCK)
		INNER JOIN tblOrderDocPDT AS DTL WITH (NOLOCK) ON HDR.strOrdPDocID = DTL.strOrdPDocID
		INNER JOIN tblInv AS INV WITH (NOLOCK) ON DTL.strPartNumber = INV.strPartNumber
		INNER JOIN tblVendors AS VEN WITH (NOLOCK) ON HDR.strVendName = VEN.strVendName
		LEFT JOIN tblOrderDocPDTPrj AS DTLPRJ WITH (NOLOCK) ON DTL.strOrdPDocID = DTLPRJ.strOrdPDocID
			AND DTL.intLineNo = DTLPRJ.intLineNo
		WHERE (INV.bitInactive = 0)
			AND (HDR.intDocType = 2)
			AND (DTL.bitDiscountTax = 0)
			AND (HDR.decTotal >= 0)
			AND (HDR.bitBookmark = 1)
			AND (
				CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				@Search IS NULL
				OR (
					(HDR.strOrdPDocID LIKE '%' + @Search + '%')
					OR (VEN.strVendDesc LIKE '%' + @Search + '%')
					OR (DTL.strPartNumber LIKE '%' + @Search + '%')
					OR (ISNULL(DTLPRJ.strProjNumber, N'') LIKE '%' + @Search + '%')
					OR (HDR.strReference LIKE '%' + @Search + '%')
					)
				)
			AND (
				(
					(LEN(@Name) > 0)
					AND (
						@ViewType IN (
							0
							,1
							,2
							,3
							)
						)
					)
				AND ((HDR.strVendName = @Name))
				OR LEN(ISNULL(@Name, '')) = 0
				)
		ORDER BY HDR.dteJournalDate DESC
			,InvOrdDocID DESC
			,DTL.intLineNo
	ELSE IF @BookmarkIndex = 2
		SELECT HDR.strInvPDocID AS InvOrdDocID
			,HDR.dteJournalDate AS JournalDate
			,VEN.strVendDesc AS CustDesc
			,DTL.strPartNumber AS PartNumber
			,INV.decSumAvail AS SumAvail
			,DTL.decBuyQty AS Qty
			,DTL.decPriceEaExc AS PriceEaExc
			,DTL.strTaxCode AS TaxCode
			,DTL.decLineTaxAmt AS LineTaxAmt
			,DTL.decTotIncTax AS LineTotInc
			,DTL.intLineNo AS LineNumber
			,DTL.strPartDesc AS PartDesc
			,@BookmarkType1 AS BookmarkType
			,0 AS SerialID
			,HDR.strShipTo AS ShipTo
			,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
			,HDR.strReference AS Reference
			,DTL.decEaIncTax AS PriceEaInc
			,DTL.decLineDiscPerc AS LineDiscPerc
			,HDR.dteRequired AS RequiredDate
			,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
		FROM tblInvoiceDocP AS HDR WITH (NOLOCK)
		INNER JOIN tblInvoiceDocPDT AS DTL WITH (NOLOCK) ON HDR.strInvPDocID = DTL.strInvPDocID
		INNER JOIN tblInv AS INV WITH (NOLOCK) ON DTL.strPartNumber = INV.strPartNumber
		INNER JOIN tblVendors AS VEN WITH (NOLOCK) ON HDR.strVendName = VEN.strVendName
		LEFT JOIN tblInvoiceDocPDTPrj AS DTLPRJ WITH (NOLOCK) ON DTL.strInvPDocID = DTLPRJ.strInvPDocID
			AND DTL.intLineNo = DTLPRJ.intLineNo
		WHERE (INV.bitInactive = 0)
			AND (DTL.bitDiscountTax = 0)
			AND (HDR.decTotal >= 0)
			AND (HDR.bitBookmark = 1)
			AND (
				CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				@Search IS NULL
				OR (
					(HDR.strInvPDocID LIKE '%' + @Search + '%')
					OR (VEN.strVendDesc LIKE '%' + @Search + '%')
					OR (DTL.strPartNumber LIKE '%' + @Search + '%')
					OR (ISNULL(DTLPRJ.strProjNumber, N'') LIKE '%' + @Search + '%')
					OR (HDR.strReference LIKE '%' + @Search + '%')
					)
				)
			AND (
				(
					(LEN(@Name) > 0)
					AND (
						@ViewType IN (
							0
							,1
							,2
							,3
							)
						)
					)
				AND ((HDR.strVendName = @Name))
				OR LEN(ISNULL(@Name, '')) = 0
				)
		ORDER BY HDR.dteJournalDate DESC
			,HDR.strInvPDocID DESC
			,DTL.intLineNo
	ELSE IF @BookmarkIndex = 3
		SELECT HDR.strOrdPDocID AS InvOrdDocID
			,HDR.dteJournalDate AS JournalDate
			,VEN.strVendDesc AS CustDesc
			,DTL.strPartNumber AS PartNumber
			,INV.decSumAvail AS SumAvail
			,DTL.decBuyQty AS Qty
			,DTL.decPriceEaExc AS PriceEaExc
			,DTL.strTaxCode AS TaxCode
			,DTL.decLineTaxAmt AS LineTaxAmt
			,DTL.decTotIncTax AS LineTotInc
			,DTL.intLineNo AS LineNumber
			,DTL.strPartDesc AS PartDesc
			,@BookmarkType1 AS BookmarkType
			,0 AS SerialID
			,HDR.strShipTo AS ShipTo
			,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
			,HDR.strReference AS Reference
			,DTL.decEaIncTax AS PriceEaInc
			,DTL.decLineDiscPerc AS LineDiscPerc
			,HDR.dteRequired AS RequiredDate
			,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
		FROM tblOrderDocP AS HDR WITH (NOLOCK)
		INNER JOIN tblOrderDocPDT AS DTL WITH (NOLOCK) ON HDR.strOrdPDocID = DTL.strOrdPDocID
		INNER JOIN tblInv AS INV WITH (NOLOCK) ON DTL.strPartNumber = INV.strPartNumber
		INNER JOIN tblVendors AS VEN WITH (NOLOCK) ON HDR.strVendName = VEN.strVendName
		LEFT JOIN tblOrderDocPDTPrj AS DTLPRJ WITH (NOLOCK) ON DTL.strOrdPDocID = DTLPRJ.strOrdPDocID
			AND DTL.intLineNo = DTLPRJ.intLineNo
		WHERE (INV.bitInactive = 0)
			AND (HDR.intDocType = 1)
			AND (DTL.bitDiscountTax = 0)
			AND (HDR.decTotal >= 0)
			AND (HDR.bitBookmark = 1)
			AND (
				CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				@Search IS NULL
				OR (
					(HDR.strOrdPDocID LIKE '%' + @Search + '%')
					OR (VEN.strVendDesc LIKE '%' + @Search + '%')
					OR (DTL.strPartNumber LIKE '%' + @Search + '%')
					OR (ISNULL(DTLPRJ.strProjNumber, N'') LIKE '%' + @Search + '%')
					OR (HDR.strReference LIKE '%' + @Search + '%')
					)
				)
			AND (
				(
					(LEN(@Name) > 0)
					AND (
						@ViewType IN (
							0
							,1
							,2
							,3
							)
						)
					)
				AND ((HDR.strVendName = @Name))
				OR LEN(ISNULL(@Name, '')) = 0
				)
		ORDER BY HDR.dteJournalDate DESC
			,HDR.strOrdPDocID DESC
			,DTL.intLineNo
	ELSE IF @BookmarkIndex = 4
		SELECT HDR.strOrdPDocID AS InvOrdDocID
			,HDR.dteJournalDate AS JournalDate
			,VEN.strVendDesc AS CustDesc
			,DTL.strPartNumber AS PartNumber
			,INV.decSumAvail AS SumAvail
			,DTL.decBuyQty AS Qty
			,DTL.decPriceEaExc AS PriceEaExc
			,DTL.strTaxCode AS TaxCode
			,DTL.decLineTaxAmt AS LineTaxAmt
			,DTL.decTotIncTax AS LineTotInc
			,DTL.intLineNo AS LineNumber
			,DTL.strPartDesc AS PartDesc
			,@BookmarkType1 AS BookmarkType
			,0 AS SerialID
			,HDR.strShipTo AS ShipTo
			,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
			,HDR.strReference AS Reference
			,DTL.decEaIncTax AS PriceEaInc
			,DTL.decLineDiscPerc AS LineDiscPerc
			,HDR.dteRequired AS RequiredDate
			,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
		FROM tblOrderDocP(NOLOCK) HDR
		INNER JOIN tblOrderDocPDT(NOLOCK) DTL ON HDR.strOrdPDocID = DTL.strOrdPDocID
		INNER JOIN tblInv(NOLOCK) INV ON DTL.strPartNumber = INV.strPartNumber
		INNER JOIN tblVendors(NOLOCK) VEN ON HDR.strVendName = VEN.strVendName
		LEFT JOIN tblOrderDocPDTPrj(NOLOCK) DTLPRJ ON DTL.strOrdPDocID = DTLPRJ.strOrdPDocID
			AND DTL.intLineNo = DTLPRJ.intLineNo
		WHERE INV.bitInactive = 0
			AND HDR.intDocType = 2
			AND DTL.bitDiscountTax = 0
			AND HDR.decTotal >= 0
			AND HDR.bitBookmark = 1
			AND (
				CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				@Search IS NULL
				OR (
					(
						HDR.strOrdPDocID LIKE '%' + @Search + '%'
						OR VEN.strVendDesc LIKE '%' + @Search + '%'
						OR DTL.strPartNumber LIKE '%' + @Search + '%'
						OR ISNULL(DTLPRJ.strProjNumber, '') LIKE '%' + @Search + '%'
						OR HDR.strReference LIKE '%' + @Search + '%'
						)
					)
				)
			AND (
				(
					(LEN(@Name) > 0)
					AND (
						@ViewType IN (
							0
							,1
							,2
							,3
							)
						)
					)
				AND ((HDR.strVendName = @Name))
				OR LEN(ISNULL(@Name, '')) = 0
				)
		ORDER BY HDR.dteJournalDate DESC
			,HDR.strOrdPDocID DESC
			,DTL.intLineNo
	ELSE IF @BookmarkIndex = 5
		SELECT HDR.strInvDocID AS InvOrdDocID
			,HDR.dteJournalDate AS JournalDate
			,CUS.strCustDesc AS CustDesc
			,DTL.strPartNumber AS PartNumber
			,INV.decSumAvail AS SumAvail
			,DTL.decQty AS Qty
			,DTL.decPriceEaExc AS PriceEaExc
			,DTL.strTaxCode AS TaxCode
			,DTL.decLineTaxAmt AS LineTaxAmt
			,DTL.decLineTotInc AS LineTotInc
			,DTL.intLineNo AS LineNumber
			,DTL.strPartDesc AS PartDesc
			,@BookmarkType1 AS BookmarkType
			,0 AS SerialID
			,HDR.strShipTo AS ShipTo
			,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
			,HDR.strReference AS Reference
			,DTL.decPriceEaInc AS PriceEaInc
			,DTL.decLineDiscPerc AS LineDiscPerc
			,HDR.dteRequired AS RequiredDate
			,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
		FROM tblInvoiceDoc AS HDR WITH (NOLOCK)
		INNER JOIN tblInvoiceDocDT AS DTL WITH (NOLOCK) ON HDR.strInvDocID = DTL.strInvDocID
		INNER JOIN tblInv AS INV WITH (NOLOCK) ON DTL.strPartNumber = INV.strPartNumber
		INNER JOIN tblCustomers AS CUS WITH (NOLOCK) ON HDR.strCustName = CUS.strCustName
		LEFT JOIN tblInvoiceDocDTPrj AS DTLPRJ WITH (NOLOCK) ON DTL.strInvDocID = DTLPRJ.strInvDocID
			AND DTL.intLineNo = DTLPRJ.intLineNo
		WHERE (INV.bitInactive = 0)
			AND (DTL.bitDiscountTax = 0)
			AND (HDR.decTotal >= 0)
			AND (HDR.bitBookmark = 1)
			AND (
				CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				@Search IS NULL
				OR (
					(HDR.strInvDocID LIKE '%' + @Search + '%')
					OR (CUS.strCustDesc LIKE '%' + @Search + '%')
					OR (DTL.strPartNumber LIKE '%' + @Search + '%')
					OR (ISNULL(DTLPRJ.strProjNumber, N'') LIKE '%' + @Search + '%')
					OR (HDR.strReference LIKE '%' + @Search + '%')
					)
				)
		
		UNION ALL
		
		SELECT HDR.strOrdDocID AS InvOrdDocID
			,HDR.dteJournalDate AS JournalDate
			,CUS.strCustDesc AS CustDesc
			,DTL.strPartNumber AS PartNumber
			,INV.decSumAvail AS SumAvail
			,DTL.decQty AS Qty
			,DTL.decPriceEaExc AS PriceEaExc
			,DTL.strTaxCode AS TaxCode
			,DTL.decLineTaxAmt AS LineTaxAmt
			,DTL.decLineTotInc AS LineTotInc
			,DTL.intLineNo AS LineNumber
			,DTL.strPartDesc AS PartDesc
			,@BookmarkType2 AS BookmarkType
			,0 AS SerialID
			,HDR.strShipTo AS ShipTo
			,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
			,HDR.strReference AS Reference
			,DTL.decPriceEaInc AS PriceEaInc
			,DTL.decLineDiscPerc AS LineDiscPerc
			,HDR.dteRequired AS RequiredDate
			,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
		FROM tblOrderDoc AS HDR WITH (NOLOCK)
		INNER JOIN tblOrderDocDT AS DTL WITH (NOLOCK) ON HDR.strOrdDocID = DTL.strOrdDocID
		INNER JOIN tblInv AS INV WITH (NOLOCK) ON DTL.strPartNumber = INV.strPartNumber
		INNER JOIN tblCustomers AS CUS WITH (NOLOCK) ON HDR.strCustName = CUS.strCustName
		LEFT JOIN tblOrderDocDTPrj AS DTLPRJ WITH (NOLOCK) ON DTL.strOrdDocID = DTLPRJ.strOrdDocID
			AND DTL.intLineNo = DTLPRJ.intLineNo
		WHERE (INV.bitInactive = 0)
			AND (HDR.intDocType = 1)
			AND (DTL.bitDiscountTax = 0)
			AND (HDR.decTotal >= 0)
			AND (HDR.bitBookmark = 1)
			AND (
				CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				(
					(HDR.strOrdDocID LIKE '%' + @Search + '%')
					OR (CUS.strCustDesc LIKE '%' + @Search + '%')
					OR (DTL.strPartNumber LIKE '%' + @Search + '%')
					OR (ISNULL(DTLPRJ.strProjNumber, N'') LIKE '%' + @Search + '%')
					OR (HDR.strReference LIKE '%' + @Search + '%')
					)
				)
			AND (
				(
					(LEN(@Name) > 0)
					AND (
						@ViewType IN (
							4
							,5
							,6
							,7
							)
						)
					)
				AND ((HDR.strCustName = @Name))
				OR LEN(ISNULL(@Name, '')) = 0
				)
		
		UNION ALL
		
		SELECT HDR.strOrdDocID AS InvOrdDocID
			,HDR.dteJournalDate AS JournalDate
			,CUS.strCustDesc AS CustDesc
			,DTL.strPartNumber AS PartNumber
			,INV.decSumAvail AS SumAvail
			,DTL.decQty AS Qty
			,DTL.decPriceEaExc AS PriceEaExc
			,DTL.strTaxCode AS TaxCode
			,DTL.decLineTaxAmt AS LineTaxAmt
			,DTL.decLineTotInc AS LineTotInc
			,DTL.intLineNo AS LineNumber
			,DTL.strPartDesc AS PartDesc
			,@BookmarkType3 AS BookmarkType
			,0 AS SerialID
			,HDR.strShipTo AS ShipTo
			,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
			,HDR.strReference AS Reference
			,DTL.decPriceEaInc AS PriceEaInc
			,DTL.decLineDiscPerc AS LineDiscPerc
			,HDR.dteRequired AS RequiredDate
			,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
		FROM tblOrderDoc AS HDR WITH (NOLOCK)
		INNER JOIN tblOrderDocDT AS DTL WITH (NOLOCK) ON HDR.strOrdDocID = DTL.strOrdDocID
		INNER JOIN tblInv AS INV WITH (NOLOCK) ON DTL.strPartNumber = INV.strPartNumber
		INNER JOIN tblCustomers AS CUS WITH (NOLOCK) ON HDR.strCustName = CUS.strCustName
		LEFT JOIN tblOrderDocDTPrj AS DTLPRJ WITH (NOLOCK) ON DTL.strOrdDocID = DTLPRJ.strOrdDocID
			AND DTL.intLineNo = DTLPRJ.intLineNo
		WHERE (INV.bitInactive = 0)
			AND (HDR.intDocType = 2)
			AND (DTL.bitDiscountTax = 0)
			AND (HDR.decTotal >= 0)
			AND (HDR.bitBookmark = 1)
			AND (
				CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				@Search IS NULL
				OR (
					(HDR.strOrdDocID LIKE '%' + @Search + '%')
					OR (CUS.strCustDesc LIKE '%' + @Search + '%')
					OR (DTL.strPartNumber LIKE '%' + @Search + '%')
					OR (ISNULL(DTLPRJ.strProjNumber, N'') LIKE '%' + @Search + '%')
					OR (HDR.strReference LIKE '%' + @Search + '%')
					)
				)
			AND (
				(
					(LEN(@Name) > 0)
					AND (
						@ViewType IN (
							4
							,5
							,6
							,7
							)
						)
					)
				AND ((HDR.strCustName = @Name))
				OR LEN(ISNULL(@Name, '')) = 0
				)
		ORDER BY HDR.dteJournalDate DESC
			,InvOrdDocID DESC
			,DTL.intLineNo
	ELSE IF @BookmarkIndex = 6
		SELECT HDR.strInvDocID AS InvOrdDocID
			,HDR.dteJournalDate AS JournalDate
			,CUS.strCustDesc AS CustDesc
			,DTL.strPartNumber AS PartNumber
			,INV.decSumAvail AS SumAvail
			,DTL.decQty AS Qty
			,DTL.decPriceEaExc AS PriceEaExc
			,DTL.strTaxCode AS TaxCode
			,DTL.decLineTaxAmt AS LineTaxAmt
			,DTL.decLineTotInc AS LineTotInc
			,DTL.intLineNo AS LineNumber
			,DTL.strPartDesc AS PartDesc
			,@BookmarkType1 AS BookmarkType
			,0 AS SerialID
			,HDR.strShipTo AS ShipTo
			,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
			,HDR.strReference AS Reference
			,DTL.decPriceEaInc AS PriceEaInc
			,DTL.decLineDiscPerc AS LineDiscPerc
			,HDR.dteRequired AS RequiredDate
			,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
		FROM tblInvoiceDoc AS HDR WITH (NOLOCK)
		INNER JOIN tblInvoiceDocDT AS DTL WITH (NOLOCK) ON HDR.strInvDocID = DTL.strInvDocID
		INNER JOIN tblInv AS INV WITH (NOLOCK) ON DTL.strPartNumber = INV.strPartNumber
		INNER JOIN tblCustomers AS CUS WITH (NOLOCK) ON HDR.strCustName = CUS.strCustName
		LEFT JOIN tblInvoiceDocDTPrj AS DTLPRJ WITH (NOLOCK) ON DTL.strInvDocID = DTLPRJ.strInvDocID
			AND DTL.intLineNo = DTLPRJ.intLineNo
		WHERE (INV.bitInactive = 0)
			AND (DTL.bitDiscountTax = 0)
			AND (HDR.decTotal >= 0)
			AND (HDR.bitBookmark = 1)
			AND (
				CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				@Search IS NULL
				OR (
					(HDR.strInvDocID LIKE '%' + @Search + '%')
					OR (CUS.strCustDesc LIKE '%' + @Search + '%')
					OR (DTL.strPartNumber LIKE '%' + @Search + '%')
					OR (ISNULL(DTLPRJ.strProjNumber, N'') LIKE '%' + @Search + '%')
					OR (HDR.strReference LIKE '%' + @Search + '%')
					)
				)
			AND (
				(
					(LEN(@Name) > 0)
					AND (
						@ViewType IN (
							4
							,5
							,6
							,7
							)
						)
					)
				AND ((HDR.strCustName = @Name))
				OR LEN(ISNULL(@Name, '')) = 0
				)
		ORDER BY HDR.dteJournalDate DESC
			,HDR.strInvDocID DESC
			,DTL.intLineNo
	ELSE IF @BookmarkIndex = 7
		SELECT HDR.strOrdDocID AS InvOrdDocID
			,HDR.dteJournalDate AS JournalDate
			,CUS.strCustDesc AS CustDesc
			,DTL.strPartNumber AS PartNumber
			,INV.decSumAvail AS SumAvail
			,DTL.decQty AS Qty
			,DTL.decPriceEaExc AS PriceEaExc
			,DTL.strTaxCode AS TaxCode
			,DTL.decLineTaxAmt AS LineTaxAmt
			,DTL.decLineTotInc AS LineTotInc
			,DTL.intLineNo AS LineNumber
			,DTL.strPartDesc AS PartDesc
			,@BookmarkType1 AS BookmarkType
			,0 AS SerialID
			,HDR.strShipTo AS ShipTo
			,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
			,HDR.strReference AS Reference
			,DTL.decPriceEaInc AS PriceEaInc
			,DTL.decLineDiscPerc AS LineDiscPerc
			,HDR.dteRequired AS RequiredDate
			,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
		FROM tblOrderDoc AS HDR WITH (NOLOCK)
		INNER JOIN tblOrderDocDT AS DTL WITH (NOLOCK) ON HDR.strOrdDocID = DTL.strOrdDocID
		INNER JOIN tblInv AS INV WITH (NOLOCK) ON DTL.strPartNumber = INV.strPartNumber
		INNER JOIN tblCustomers AS CUS WITH (NOLOCK) ON HDR.strCustName = CUS.strCustName
		LEFT JOIN tblOrderDocDTPrj AS DTLPRJ WITH (NOLOCK) ON DTL.strOrdDocID = DTLPRJ.strOrdDocID
			AND DTL.intLineNo = DTLPRJ.intLineNo
		WHERE (INV.bitInactive = 0)
			AND (HDR.intDocType = 1)
			AND (DTL.bitDiscountTax = 0)
			AND (HDR.decTotal >= 0)
			AND (HDR.bitBookmark = 1)
			AND (
				CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				@Search IS NULL
				OR (
					(HDR.strOrdDocID LIKE '%' + @Search + '%')
					OR (CUS.strCustDesc LIKE '%' + @Search + '%')
					OR (DTL.strPartNumber LIKE '%' + @Search + '%')
					OR (ISNULL(DTLPRJ.strProjNumber, N'') LIKE '%' + @Search + '%')
					OR (HDR.strReference LIKE '%' + @Search + '%')
					)
				)
			AND (
				(
					(LEN(@Name) > 0)
					AND (
						@ViewType IN (
							4
							,5
							,6
							,7
							)
						)
					)
				AND ((HDR.strCustName = @Name))
				OR LEN(ISNULL(@Name, '')) = 0
				)
		ORDER BY HDR.dteJournalDate DESC
			,HDR.strOrdDocID DESC
			,DTL.intLineNo
	ELSE IF @BookmarkIndex = 8
		SELECT HDR.strOrdDocID AS InvOrdDocID
			,HDR.dteJournalDate AS JournalDate
			,CUS.strCustDesc AS CustDesc
			,DTL.strPartNumber AS PartNumber
			,INV.decSumAvail AS SumAvail
			,DTL.decQty AS Qty
			,DTL.decPriceEaExc AS PriceEaExc
			,DTL.strTaxCode AS TaxCode
			,DTL.decLineTaxAmt AS LineTaxAmt
			,DTL.decLineTotInc AS LineTotInc
			,DTL.intLineNo AS LineNumber
			,DTL.strPartDesc AS PartDesc
			,@BookmarkType1 AS BookmarkType
			,0 AS SerialID
			,HDR.strShipTo AS ShipTo
			,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
			,HDR.strReference AS Reference
			,DTL.decPriceEaInc AS PriceEaInc
			,DTL.decLineDiscPerc AS LineDiscPerc
			,HDR.dteRequired AS RequiredDate
			,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
		FROM tblOrderDoc AS HDR WITH (NOLOCK)
		INNER JOIN tblOrderDocDT AS DTL WITH (NOLOCK) ON HDR.strOrdDocID = DTL.strOrdDocID
		INNER JOIN tblInv AS INV WITH (NOLOCK) ON DTL.strPartNumber = INV.strPartNumber
		INNER JOIN tblCustomers AS CUS WITH (NOLOCK) ON HDR.strCustName = CUS.strCustName
		LEFT JOIN tblOrderDocDTPrj AS DTLPRJ WITH (NOLOCK) ON DTL.strOrdDocID = DTLPRJ.strOrdDocID
			AND DTL.intLineNo = DTLPRJ.intLineNo
		WHERE (INV.bitInactive = 0)
			AND (HDR.intDocType = 2)
			AND (DTL.bitDiscountTax = 0)
			AND (HDR.decTotal >= 0)
			AND (HDR.bitBookmark = 1)
			AND (
				CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @EndDate)
				)
			AND (
				@Search IS NULL
				OR (
					(HDR.strOrdDocID LIKE '%' + @Search + '%')
					OR (CUS.strCustDesc LIKE '%' + @Search + '%')
					OR (DTL.strPartNumber LIKE '%' + @Search + '%')
					OR (ISNULL(DTLPRJ.strProjNumber, N'') LIKE '%' + @Search + '%')
					OR (HDR.strReference LIKE '%' + @Search + '%')
					)
				)
			AND (
				(
					(LEN(@Name) > 0)
					AND (
						@ViewType IN (
							4
							,5
							,6
							,7
							)
						)
					)
				AND ((HDR.strCustName = @Name))
				OR LEN(ISNULL(@Name, '')) = 0
				)
		ORDER BY HDR.dteJournalDate DESC
			,HDR.strOrdDocID DESC
			,DTL.intLineNo
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateLastPYID]
@PYNumber BIGINT 
AS
BEGIN
UPDATE tblLastIDs SET lngPYNumber = @PYNumber
END
GO



/*********** END [PurchasesCopySOBookmarkedData] ***********/

/*********** Start [PurchasesCopySONonBookmarkedData] ***********/

CREATE PROCEDURE [dbo].[PurchasesCopySONonBookmarkedData] @ViewType AS INT
    ,@FilterIndex AS INT
    ,@BookmarkType1 AS INT
    ,@BookmarkType2 AS INT
    ,@BookmarkType3 AS INT
    ,@Search AS VARCHAR(max)
    ,@Name AS VARCHAR(max)
    ,@InvDocID AS VARCHAR(max)
    ,@IsARFHQCreatePurchaseOrder AS BIT
    ,@IsWorkOrder AS BIT
    ,@IsInventoryOnly AS BIT
    ,@StartDate AS DATETIME
    ,@EndDate AS DATETIME
AS
BEGIN
    SET NOCOUNT ON;
    IF @ViewType = 0
        SELECT HDR.strInvPDocID AS InvOrdDocID
            ,HDR.dteJournalDate AS JournalDate
            ,VEN.strVendDesc AS CustDesc
            ,DTL.strPartNumber AS PartNumber
            ,INV.decSumAvail AS SumAvail
            ,DTL.decBuyQty AS Qty
            ,DTL.decPriceEaExc AS PriceEaExc
            ,DTL.strTaxCode AS TaxCode
            ,DTL.decLineTaxAmt AS LineTaxAmt
            ,DTL.decTotIncTax AS LineTotInc
            ,DTL.intLineNo AS LineNumber
            ,DTL.strPartDesc AS PartDesc
            ,@BookmarkType1 AS BookmarkType
            ,0 AS SerialID
            ,HDR.strShipTo AS ShipTo
            ,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
            ,HDR.strReference AS Reference
            ,DTL.decEaIncTax AS PriceEaInc
            ,DTL.decLineDiscPerc AS LineDiscPerc
            ,HDR.dteRequired AS RequiredDate
            ,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
        FROM tblInvoiceDocP(NOLOCK) HDR
        INNER JOIN tblInvoiceDocPDT(NOLOCK) DTL ON HDR.strInvPDocID = DTL.strInvPDocID
        INNER JOIN tblInv(NOLOCK) INV ON DTL.strPartNumber = INV.strPartNumber
        INNER JOIN tblVendors(NOLOCK) VEN ON HDR.strVendName = VEN.strVendName
        LEFT JOIN tblInvoiceDocPDTPrj(NOLOCK) DTLPRJ ON DTL.strInvPDocID = DTLPRJ.strInvPDocID
            AND DTL.intLineNo = DTLPRJ.intLineNo
        WHERE INV.bitInactive = 0
            AND DTL.bitDiscountTax = 0
            AND HDR.decTotal >= 0
            AND (
                CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
                    AND CONVERT(DATE, @EndDate)
                )
            AND (
                (LEN(@Search) > 0)
                AND (
                    HDR.strInvPDocID LIKE '%' + @Search + '%'
                    OR VEN.strVendDesc LIKE '%' + @Search + '%'
                    OR DTL.strPartNumber LIKE '%' + @Search + '%'
                    OR ISNULL(DTLPRJ.strProjNumber, '') LIKE '%' + @Search + '%'
                    OR HDR.strReference LIKE '%' + @Search + '%'
                    )
					OR LEN(ISNULL(@Search, '')) = 0
                )
        AND ( (LEN(@Name) > 0) AND (HDR.strVendName = @Name) OR LEN(ISNULL(@Name, '')) = 0 )
        ORDER BY HDR.dteJournalDate DESC
            ,HDR.strInvPDocID DESC
            ,DTL.intLineNo
    ELSE IF @ViewType = 1
        SELECT HDR.strOrdPDocID AS InvOrdDocID
            ,HDR.dteJournalDate AS JournalDate
            ,VEN.strVendDesc AS CustDesc
            ,DTL.strPartNumber AS PartNumber
            ,INV.decSumAvail AS SumAvail
            ,DTL.decBuyQty AS Qty
            ,DTL.decPriceEaExc AS PriceEaExc
            ,DTL.strTaxCode AS TaxCode
            ,DTL.decLineTaxAmt AS LineTaxAmt
            ,DTL.decTotIncTax AS LineTotInc
            ,DTL.intLineNo AS LineNumber
            ,DTL.strPartDesc AS PartDesc
            ,@BookmarkType1 AS BookmarkType
            ,0 AS SerialID
            ,HDR.strShipTo AS ShipTo
            ,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
            ,HDR.strReference AS Reference
            ,DTL.decEaIncTax AS PriceEaInc
            ,DTL.decLineDiscPerc AS LineDiscPerc
            ,HDR.dteRequired AS RequiredDate
            ,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
        FROM tblOrderDocP(NOLOCK) HDR
        INNER JOIN tblOrderDocPDT(NOLOCK) DTL ON HDR.strOrdPDocID = DTL.strOrdPDocID
        INNER JOIN tblInv(NOLOCK) INV ON DTL.strPartNumber = INV.strPartNumber
        INNER JOIN tblVendors(NOLOCK) VEN ON HDR.strVendName = VEN.strVendName
        LEFT JOIN tblOrderDocPDTPrj(NOLOCK) DTLPRJ ON DTL.strOrdPDocID = DTLPRJ.strOrdPDocID
            AND DTL.intLineNo = DTLPRJ.intLineNo
        WHERE INV.bitInactive = 0
            AND HDR.intDocType = 1
            AND DTL.bitDiscountTax = 0
            AND HDR.decTotal >= 0
            AND (
                CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
                    AND CONVERT(DATE, @EndDate)
                )
            AND (
                (LEN(@Search) > 0)
                AND (
                    HDR.strOrdPDocID LIKE '%' + @Search + '%'
                    OR VEN.strVendDesc LIKE '%' + @Search + '%'
                    OR DTL.strPartNumber LIKE '%' + @Search + '%'
                    OR ISNULL(DTLPRJ.strProjNumber, '') LIKE '%' + @Search + '%'
                    OR HDR.strReference LIKE '%' + @Search + '%'
                    )
					OR LEN(ISNULL(@Search, '')) = 0
                )
            AND (
                (LEN(@Name) > 0)
                AND (HDR.strVendName = @Name)
                )
        ORDER BY HDR.dteJournalDate DESC
            ,HDR.strOrdPDocID DESC
            ,DTL.intLineNo
    ELSE IF @ViewType = 2
        SELECT HDR.strOrdPDocID AS InvOrdDocID
            ,HDR.dteJournalDate AS JournalDate
            ,VEN.strVendDesc AS CustDesc
            ,DTL.strPartNumber AS PartNumber
            ,INV.decSumAvail AS SumAvail
            ,DTL.decBuyQty AS Qty
            ,DTL.decPriceEaExc AS PriceEaExc
            ,DTL.strTaxCode AS TaxCode
            ,DTL.decLineTaxAmt AS LineTaxAmt
            ,DTL.decTotIncTax AS LineTotInc
            ,DTL.intLineNo AS LineNumber
            ,DTL.strPartDesc AS PartDesc
            ,@BookmarkType1 AS BookmarkType
            ,0 AS SerialID
            ,HDR.strShipTo AS ShipTo
            ,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
            ,HDR.strReference AS Reference
            ,DTL.decEaIncTax AS PriceEaInc
            ,DTL.decLineDiscPerc AS LineDiscPerc
            ,HDR.dteRequired AS RequiredDate
            ,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
        FROM tblOrderDocP(NOLOCK) HDR
        INNER JOIN tblOrderDocPDT(NOLOCK) DTL ON HDR.strOrdPDocID = DTL.strOrdPDocID
        INNER JOIN tblInv(NOLOCK) INV ON DTL.strPartNumber = INV.strPartNumber
        INNER JOIN tblVendors(NOLOCK) VEN ON HDR.strVendName = VEN.strVendName
        LEFT JOIN tblOrderDocPDTPrj(NOLOCK) DTLPRJ ON DTL.strOrdPDocID = DTLPRJ.strOrdPDocID
            AND DTL.intLineNo = DTLPRJ.intLineNo
        WHERE INV.bitInactive = 0
            AND HDR.intDocType = 2
            AND DTL.bitDiscountTax = 0
            AND HDR.decTotal >= 0
            AND (
                CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
                    AND CONVERT(DATE, @EndDate)
                )
            AND (
                (LEN(@Search) > 0)
                AND (
                    HDR.strOrdPDocID LIKE '%' + @Search + '%'
                    OR VEN.strVendDesc LIKE '%' + @Search + '%'
                    OR DTL.strPartNumber LIKE '%' + @Search + '%'
                    OR ISNULL(DTLPRJ.strProjNumber, '') LIKE '%' + @Search + '%'
                    OR HDR.strReference LIKE '%' + @Search + '%'
                    )
					OR LEN(ISNULL(@Search, '')) = 0
                )
            AND (
                (LEN(@Name) > 0)
                AND HDR.strVendName = @Name
                )
        ORDER BY HDR.dteJournalDate DESC
            ,HDR.strOrdPDocID DESC
            ,DTL.intLineNo
    ELSE IF @ViewType = 3
        SELECT HDR.strInvPDocID AS InvOrdDocID
            ,HDR.dteJournalDate AS JournalDate
            ,VEN.strVendDesc AS CustDesc
            ,DTL.strPartNumber AS PartNumber
            ,INV.decSumAvail AS SumAvail
            ,DTL.decBuyQty AS Qty
            ,DTL.decPriceEaExc AS PriceEaExc
            ,DTL.strTaxCode AS TaxCode
            ,DTL.decLineTaxAmt AS LineTaxAmt
            ,DTL.decTotIncTax AS LineTotInc
            ,DTL.intLineNo AS LineNumber
            ,DTL.strPartDesc AS PartDesc
            ,@BookmarkType1 AS BookmarkType
            ,0 AS SerialID
            ,HDR.strShipTo AS ShipTo
            ,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
            ,HDR.strReference AS Reference
            ,DTL.decEaIncTax AS PriceEaInc
            ,DTL.decLineDiscPerc AS LineDiscPerc
            ,HDR.dteRequired AS RequiredDate
            ,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
        FROM tblInvoiceDocP(NOLOCK) HDR
        INNER JOIN tblInvoiceDocPDT(NOLOCK) DTL ON HDR.strInvPDocID = DTL.strInvPDocID
        INNER JOIN tblInv(NOLOCK) INV ON DTL.strPartNumber = INV.strPartNumber
        INNER JOIN tblVendors(NOLOCK) VEN ON HDR.strVendName = VEN.strVendName
        LEFT JOIN tblInvoiceDocPDTPrj(NOLOCK) DTLPRJ ON DTL.strInvPDocID = DTLPRJ.strInvPDocID
            AND DTL.intLineNo = DTLPRJ.intLineNo
        WHERE INV.bitInactive = 0
            AND DTL.bitDiscountTax = 0
            AND HDR.decTotal >= 0
            AND (
                CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
                    AND CONVERT(DATE, @EndDate)
                )
            AND (
                (LEN(@Search) > 0)
                AND (
                    HDR.strInvPDocID LIKE '%' + @Search + '%'
                    OR VEN.strVendDesc LIKE '%' + @Search + '%'
                    OR DTL.strPartNumber LIKE '%' + @Search + '%'
                    OR ISNULL(DTLPRJ.strProjNumber, '') LIKE '%' + @Search + '%'
                    OR HDR.strReference LIKE '%' + @Search + '%'
                    )
                OR LEN(ISNULL(@Search, '')) = 0
                )
            AND (
                (LEN(@Name) > 0)
                AND (HDR.strVendName = @Name)
                OR LEN(ISNULL(@Name, '')) = 0
                )
        UNION ALL
        SELECT HDR.strOrdPDocID AS InvOrdDocID
            ,HDR.dteJournalDate AS JournalDate
            ,VEN.strVendDesc AS CustDesc
            ,DTL.strPartNumber AS PartNumber
            ,INV.decSumAvail AS SumAvail
            ,DTL.decBuyQty AS Qty
            ,DTL.decPriceEaExc AS PriceEaExc
            ,DTL.strTaxCode AS TaxCode
            ,DTL.decLineTaxAmt AS LineTaxAmt
            ,DTL.decTotIncTax AS LineTotInc
            ,DTL.intLineNo AS LineNumber
            ,DTL.strPartDesc AS PartDesc
            ,@BookmarkType2 AS BookmarkType
            ,0 AS SerialID
            ,HDR.strShipTo AS ShipTo
            ,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
            ,HDR.strReference AS Reference
            ,DTL.decEaIncTax AS PriceEaInc
            ,DTL.decLineDiscPerc AS LineDiscPerc
            ,HDR.dteRequired AS RequiredDate
            ,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
        FROM tblOrderDocP(NOLOCK) HDR
        INNER JOIN tblOrderDocPDT(NOLOCK) DTL ON HDR.strOrdPDocID = DTL.strOrdPDocID
        INNER JOIN tblInv(NOLOCK) INV ON DTL.strPartNumber = INV.strPartNumber
        INNER JOIN tblVendors(NOLOCK) VEN ON HDR.strVendName = VEN.strVendName
        LEFT JOIN tblOrderDocPDTPrj(NOLOCK) DTLPRJ ON DTL.strOrdPDocID = DTLPRJ.strOrdPDocID
            AND DTL.intLineNo = DTLPRJ.intLineNo
        WHERE INV.bitInactive = 0
            AND HDR.intDocType = 1
            AND DTL.bitDiscountTax = 0
            AND HDR.decTotal >= 0
            AND (
                CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
                    AND CONVERT(DATE, @EndDate)
                )
            AND (
                (LEN(@Search) > 0)
                AND (
                    HDR.strOrdPDocID LIKE '%' + @Search + '%'
                    OR VEN.strVendDesc LIKE '%' + @Search + '%'
                    OR DTL.strPartNumber LIKE '%' + @Search + '%'
                    OR ISNULL(DTLPRJ.strProjNumber, '') LIKE '%' + @Search + '%'
                    OR HDR.strReference LIKE '%' + @Search + '%'
                    )
                OR LEN(ISNULL(@Search, '')) = 0
                )
            AND (
                (LEN(@Name) > 0)
                AND (HDR.strVendName = @Name)
                OR LEN(ISNULL(@Name, '')) = 0
                )
        UNION ALL
        SELECT HDR.strOrdPDocID AS InvOrdDocID
            ,HDR.dteJournalDate AS JournalDate
            ,VEN.strVendDesc AS CustDesc
            ,DTL.strPartNumber AS PartNumber
            ,INV.decSumAvail AS SumAvail
            ,DTL.decBuyQty AS Qty
            ,DTL.decPriceEaExc AS PriceEaExc
            ,DTL.strTaxCode AS TaxCode
            ,DTL.decLineTaxAmt AS LineTaxAmt
            ,DTL.decTotIncTax AS LineTotInc
            ,DTL.intLineNo AS LineNumber
            ,DTL.strPartDesc AS PartDesc
            ,@BookmarkType3 AS BookmarkType
            ,0 AS SerialID
            ,HDR.strShipTo AS ShipTo
            ,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
            ,HDR.strReference AS Reference
            ,DTL.decEaIncTax AS PriceEaInc
            ,DTL.decLineDiscPerc AS LineDiscPerc
            ,HDR.dteRequired AS RequiredDate
            ,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
        FROM tblOrderDocP(NOLOCK) HDR
        INNER JOIN tblOrderDocPDT(NOLOCK) DTL ON HDR.strOrdPDocID = DTL.strOrdPDocID
        INNER JOIN tblInv(NOLOCK) INV ON DTL.strPartNumber = INV.strPartNumber
        INNER JOIN tblVendors(NOLOCK) VEN ON HDR.strVendName = VEN.strVendName
        LEFT JOIN tblOrderDocPDTPrj(NOLOCK) DTLPRJ ON DTL.strOrdPDocID = DTLPRJ.strOrdPDocID
            AND DTL.intLineNo = DTLPRJ.intLineNo
        WHERE INV.bitInactive = 0
            AND HDR.intDocType = 2
            AND DTL.bitDiscountTax = 0
            AND HDR.decTotal >= 0
            AND (
                CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
                    AND CONVERT(DATE, @EndDate)
                )
            AND (
                (LEN(@Search) > 0)
                AND (
                    HDR.strOrdPDocID LIKE '%' + @Search + '%'
                    OR VEN.strVendDesc LIKE '%' + @Search + '%'
                    OR DTL.strPartNumber LIKE '%' + @Search + '%'
                    OR ISNULL(DTLPRJ.strProjNumber, '') LIKE '%' + @Search + '%'
                    OR HDR.strReference LIKE '%' + @Search + '%'
                    )
                OR LEN(ISNULL(@Search, '')) = 0
                )
            AND (
                (LEN(@Name) > 0)
                AND (HDR.strVendName = @Name)
                OR LEN(ISNULL(@Name, '')) = 0
                )
        ORDER BY HDR.dteJournalDate DESC
            ,InvOrdDocID DESC
            ,DTL.intLineNo
    ELSE IF @ViewType = 4
        SELECT HDR.strInvDocID AS InvOrdDocID
            ,HDR.dteJournalDate AS JournalDate
            ,CUS.strCustDesc AS CustDesc
            ,DTL.strPartNumber AS PartNumber
            ,INV.decSumAvail AS SumAvail
            ,DTL.decQty AS Qty
            ,DTL.decPriceEaExc AS PriceEaExc
            ,DTL.strTaxCode AS TaxCode
            ,DTL.decLineTaxAmt AS LineTaxAmt
            ,DTL.decLineTotInc AS LineTotInc
            ,DTL.intLineNo AS LineNumber
            ,DTL.strPartDesc AS PartDesc
            ,@BookmarkType1 AS BookmarkType
            ,0 AS SerialID
            ,HDR.strShipTo AS ShipTo
            ,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
            ,HDR.strReference AS Reference
            ,DTL.decPriceEaInc AS PriceEaInc
            ,DTL.decLineDiscPerc AS LineDiscPerc
            ,HDR.dteRequired AS RequiredDate
            ,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
        FROM tblInvoiceDoc(NOLOCK) HDR
        INNER JOIN tblInvoiceDocDT(NOLOCK) DTL ON HDR.strInvDocID = DTL.strInvDocID
        INNER JOIN tblInv(NOLOCK) INV ON DTL.strPartNumber = INV.strPartNumber
        INNER JOIN tblCustomers(NOLOCK) CUS ON HDR.strCustName = CUS.strCustName
        LEFT JOIN tblInvoiceDocDTPrj(NOLOCK) DTLPRJ ON DTL.strInvDocID = DTLPRJ.strInvDocID
            AND DTL.intLineNo = DTLPRJ.intLineNo
        WHERE INV.bitInactive = 0
            AND DTL.bitDiscountTax = 0
            AND HDR.decTotal >= 0
            AND (
                CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
                    AND CONVERT(DATE, @EndDate)
                )
            AND (
                (LEN(@Search) > 0)
                AND (
                    HDR.strInvDocID LIKE '%' + @Search + '%'
                    OR CUS.strCustDesc LIKE '%' + @Search + '%'
                    OR DTL.strPartNumber LIKE '%' + @Search + '%'
                    OR ISNULL(DTLPRJ.strProjNumber, '') LIKE '%' + @Search + '%'
                    OR HDR.strReference LIKE '%' + @Search + '%'
                    )
                OR LEN(ISNULL(@Search, '')) = 0
                )
            AND (
                (LEN(@Name) > 0)
                AND (HDR.strCustName = @Name)
                OR LEN(ISNULL(@Name, '')) = 0
                )
        ORDER BY HDR.dteJournalDate DESC
            ,HDR.strInvDocID DESC
            ,DTL.intLineNo
    ELSE IF @ViewType = 5
        SELECT HDR.strOrdDocID AS InvOrdDocID
            ,HDR.dteJournalDate AS JournalDate
            ,CUS.strCustDesc AS CustDesc
            ,DTL.strPartNumber AS PartNumber
            ,INV.decSumAvail AS SumAvail
            ,DTL.decQty AS Qty
            ,DTL.decPriceEaExc AS PriceEaExc
            ,DTL.strTaxCode AS TaxCode
            ,DTL.decLineTaxAmt AS LineTaxAmt
            ,DTL.decLineTotInc AS LineTotInc
            ,DTL.intLineNo AS LineNumber
            ,DTL.strPartDesc AS PartDesc
            ,@BookmarkType1 AS BookmarkType
            ,0 AS SerialID
            ,HDR.strShipTo AS ShipTo
            ,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
            ,HDR.strReference AS Reference
            ,DTL.decPriceEaInc AS PriceEaInc
            ,DTL.decLineDiscPerc AS LineDiscPerc
            ,HDR.dteRequired AS RequiredDate
            ,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
        FROM tblOrderDoc(NOLOCK) HDR
        INNER JOIN tblOrderDocDT(NOLOCK) DTL ON HDR.strOrdDocID = DTL.strOrdDocID
        INNER JOIN tblInv(NOLOCK) INV ON DTL.strPartNumber = INV.strPartNumber
        INNER JOIN tblCustomers(NOLOCK) CUS ON HDR.strCustName = CUS.strCustName
        LEFT JOIN tblOrderDocDTPrj(NOLOCK) DTLPRJ ON DTL.strOrdDocID = DTLPRJ.strOrdDocID
            AND DTL.intLineNo = DTLPRJ.intLineNo
        WHERE INV.bitInactive = 0
            AND HDR.intDocType = 1
            AND DTL.bitDiscountTax = 0
            AND HDR.decTotal >= 0
            AND (
                CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
                    AND CONVERT(DATE, @EndDate)
                )
            AND (
                (LEN(@Search) > 0)
                AND (
                    HDR.strOrdDocID LIKE '%' + @Search + '%'
                    OR CUS.strCustDesc LIKE '%' + @Search + '%'
                    OR DTL.strPartNumber LIKE '%' + @Search + '%'
                    OR ISNULL(DTLPRJ.strProjNumber, '') LIKE '%' + @Search + '%'
                    OR HDR.strReference LIKE '%' + @Search + '%'
                    )
                OR LEN(ISNULL(@Search, '')) = 0
                )
            AND (
                (LEN(@Name) > 0)
                AND (HDR.strCustName = @Name)
                OR LEN(ISNULL(@Name, '')) = 0
                )
        ORDER BY HDR.dteJournalDate DESC
            ,HDR.strOrdDocID DESC
            ,DTL.intLineNo
    ELSE IF @ViewType = 6
        SELECT HDR.strOrdDocID AS InvOrdDocID
            ,HDR.dteJournalDate AS JournalDate
            ,CUS.strCustDesc AS CustDesc
            ,DTL.strPartNumber AS PartNumber
            ,INV.decSumAvail AS SumAvail
            ,DTL.decQty AS Qty
            ,DTL.decPriceEaExc AS PriceEaExc
            ,DTL.strTaxCode AS TaxCode
            ,DTL.decLineTaxAmt AS LineTaxAmt
            ,DTL.decLineTotInc AS LineTotInc
            ,DTL.intLineNo AS LineNumber
            ,DTL.strPartDesc AS PartDesc
            ,@BookmarkType1 AS BookmarkType
            ,0 AS SerialID
            ,HDR.strShipTo AS ShipTo
            ,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
            ,HDR.strReference AS Reference
            ,DTL.decPriceEaInc AS PriceEaInc
            ,DTL.decLineDiscPerc AS LineDiscPerc
            ,HDR.dteRequired AS RequiredDate
            ,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
        FROM tblOrderDoc(NOLOCK) HDR
        INNER JOIN tblOrderDocDT(NOLOCK) DTL ON HDR.strOrdDocID = DTL.strOrdDocID
        INNER JOIN tblInv(NOLOCK) INV ON DTL.strPartNumber = INV.strPartNumber
        INNER JOIN tblCustomers(NOLOCK) CUS ON HDR.strCustName = CUS.strCustName
        LEFT JOIN tblOrderDocDTPrj(NOLOCK) DTLPRJ ON DTL.strOrdDocID = DTLPRJ.strOrdDocID
            AND DTL.intLineNo = DTLPRJ.intLineNo
        WHERE INV.bitInactive = 0
            AND HDR.intDocType = 2
            AND DTL.bitDiscountTax = 0
            AND HDR.decTotal >= 0
            AND (
                CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
                    AND CONVERT(DATE, @EndDate)
                )
            AND (
                (LEN(@Search) > 0)
                AND (
                    HDR.strOrdDocID LIKE '%' + @Search + '%'
                    OR CUS.strCustDesc LIKE '%' + @Search + '%'
                    OR DTL.strPartNumber LIKE '%' + @Search + '%'
                    OR ISNULL(DTLPRJ.strProjNumber, '') LIKE '%' + @Search + '%'
                    OR HDR.strReference LIKE '%' + @Search + '%'
                    )
                OR LEN(ISNULL(@Search, '')) = 0
                )
            AND (
                (LEN(@Name) > 0)
                AND (HDR.strCustName = @Name)
                OR LEN(ISNULL(@Name, '')) = 0
                )
        ORDER BY HDR.dteJournalDate DESC
            ,HDR.strOrdDocID DESC
            ,DTL.intLineNo
    ELSE IF @ViewType = 10
        SELECT HDR.strOrdDocID AS InvOrdDocID
            ,HDR.dteJournalDate AS JournalDate
            ,ISNULL(CUS.strCustDesc, ISNULL(HDR.strCustName, HDR.strSoldTo)) AS CustDesc
            ,DTL.strPartNumber AS PartNumber
            ,ISNULL(INV.decSumAvail, 0) AS SumAvail
            ,DTL.decQty AS Qty
            ,DTL.decPriceEaExc AS PriceEaExc
            ,DTL.strTaxCode AS TaxCode
            ,DTL.decLineTaxAmt AS LineTaxAmt
            ,DTL.decLineTotInc AS LineTotInc
            ,DTL.intLineNo AS LineNumber
            ,DTL.strPartDesc AS PartDesc
            ,@BookmarkType1 AS BookmarkType
            ,0 AS SerialID
            ,HDR.strShipTo AS ShipTo
            ,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
            ,HDR.strReference AS Reference
            ,DTL.decPriceEaInc AS PriceEaInc
            ,DTL.decLineDiscPerc AS LineDiscPerc
            ,HDR.dteRequired AS RequiredDate
            ,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
        FROM tblOrderDocQ(NOLOCK) HDR
        INNER JOIN tblOrderDocQDT(NOLOCK) DTL ON HDR.strOrdDocID = DTL.strOrdDocID
        LEFT JOIN tblInv(NOLOCK) INV ON DTL.strPartNumber = INV.strPartNumber
        LEFT JOIN tblCustomers(NOLOCK) CUS ON HDR.strCustName = CUS.strCustName
        LEFT JOIN tblOrderDocQDTPrj(NOLOCK) DTLPRJ ON DTL.strOrdDocID = DTLPRJ.strOrdDocID
            AND DTL.intLineNo = DTLPRJ.intLineNo
        WHERE ISNULL(INV.bitInactive, 0) = 0
            AND DTL.bitDiscountTax = 0
            AND HDR.decTotal >= 0
            AND (
                CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
                    AND CONVERT(DATE, @EndDate)
                )
            AND (
                (LEN(@Search) > 0)
                AND (
                    HDR.strOrdDocID LIKE '%' + @Search + '%'
                    OR CUS.strCustDesc LIKE '%' + @Search + '%'
                    OR DTL.strPartNumber LIKE '%' + @Search + '%'
                    OR ISNULL(DTLPRJ.strProjNumber, '') LIKE '%' + @Search + '%'
                    OR HDR.strReference LIKE '%' + @Search + '%'
                    )
                OR LEN(ISNULL(@Search, '')) = 0
                )
            AND (
                (LEN(@Name) > 0)
                AND (HDR.strCustName = @Name)
                OR LEN(ISNULL(@Name, '')) = 0
                )
        ORDER BY HDR.dteJournalDate DESC
            ,HDR.strOrdDocID DESC
            ,DTL.intLineNo
    ELSE IF @ViewType = 7
        SELECT HDR.strInvDocID AS InvOrdDocID
            ,HDR.dteJournalDate AS JournalDate
            ,CUS.strCustDesc AS CustDesc
            ,DTL.strPartNumber AS PartNumber
            ,INV.decSumAvail AS SumAvail
            ,DTL.decQty AS Qty
            ,DTL.decPriceEaExc AS PriceEaExc
            ,DTL.strTaxCode AS TaxCode
            ,DTL.decLineTaxAmt AS LineTaxAmt
            ,DTL.decLineTotInc AS LineTotInc
            ,DTL.intLineNo AS LineNumber
            ,DTL.strPartDesc AS PartDesc
            ,@BookmarkType1 AS BookmarkType
            ,0 AS SerialID
            ,HDR.strShipTo AS ShipTo
            ,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
            ,HDR.strReference AS Reference
            ,DTL.decPriceEaInc AS PriceEaInc
            ,DTL.decLineDiscPerc AS LineDiscPerc
            ,HDR.dteRequired AS RequiredDate
            ,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
        FROM tblInvoiceDoc(NOLOCK) HDR
        INNER JOIN tblInvoiceDocDT(NOLOCK) DTL ON HDR.strInvDocID = DTL.strInvDocID
        INNER JOIN tblInv(NOLOCK) INV ON DTL.strPartNumber = INV.strPartNumber
        INNER JOIN tblCustomers(NOLOCK) CUS ON HDR.strCustName = CUS.strCustName
        LEFT JOIN tblInvoiceDocDTPrj(NOLOCK) DTLPRJ ON DTL.strInvDocID = DTLPRJ.strInvDocID
            AND DTL.intLineNo = DTLPRJ.intLineNo
        WHERE INV.bitInactive = 0
            AND DTL.bitDiscountTax = 0
            AND HDR.decTotal >= 0
            AND (
                CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
                    AND CONVERT(DATE, @EndDate)
                )
            AND (
                (LEN(@Search) > 0)
                AND (
                    HDR.strInvDocID LIKE '%' + @Search + '%'
                    OR CUS.strCustDesc LIKE '%' + @Search + '%'
                    OR DTL.strPartNumber LIKE '%' + @Search + '%'
                    OR ISNULL(DTLPRJ.strProjNumber, '') LIKE '%' + @Search + '%'
                    OR HDR.strReference LIKE '%' + @Search + '%'
                    )
                OR LEN(ISNULL(@Search, '')) = 0
                )
            AND (
                (LEN(@Name) > 0)
                AND (HDR.strCustName = @Name)
                OR LEN(ISNULL(@Name, '')) = 0
                )
        UNION ALL
        SELECT HDR.strOrdDocID AS InvOrdDocID
            ,HDR.dteJournalDate AS JournalDate
            ,CUS.strCustDesc AS CustDesc
            ,DTL.strPartNumber AS PartNumber
            ,INV.decSumAvail AS SumAvail
            ,DTL.decQty AS Qty
            ,DTL.decPriceEaExc AS PriceEaExc
            ,DTL.strTaxCode AS TaxCode
            ,DTL.decLineTaxAmt AS LineTaxAmt
            ,DTL.decLineTotInc AS LineTotInc
            ,DTL.intLineNo AS LineNumber
            ,DTL.strPartDesc AS PartDesc
            ,@BookmarkType2 AS BookmarkType
            ,0 AS SerialID
            ,HDR.strShipTo AS ShipTo
            ,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
            ,HDR.strReference AS Reference
            ,DTL.decPriceEaInc AS PriceEaInc
            ,DTL.decLineDiscPerc AS LineDiscPerc
            ,HDR.dteRequired AS RequiredDate
            ,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
        FROM tblOrderDoc(NOLOCK) HDR
        INNER JOIN tblOrderDocDT(NOLOCK) DTL ON HDR.strOrdDocID = DTL.strOrdDocID
        INNER JOIN tblInv(NOLOCK) INV ON DTL.strPartNumber = INV.strPartNumber
        INNER JOIN tblCustomers(NOLOCK) CUS ON HDR.strCustName = CUS.strCustName
        LEFT JOIN tblOrderDocDTPrj(NOLOCK) DTLPRJ ON DTL.strOrdDocID = DTLPRJ.strOrdDocID
            AND DTL.intLineNo = DTLPRJ.intLineNo
        WHERE INV.bitInactive = 0
            AND HDR.intDocType = 1
            AND DTL.bitDiscountTax = 0
            AND HDR.decTotal >= 0
            AND (
                CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
                    AND CONVERT(DATE, @EndDate)
                )
            AND (
                (LEN(@Search) > 0)
                AND (
                    HDR.strOrdDocID LIKE '%' + @Search + '%'
                    OR CUS.strCustDesc LIKE '%' + @Search + '%'
                    OR DTL.strPartNumber LIKE '%' + @Search + '%'
                    OR ISNULL(DTLPRJ.strProjNumber, '') LIKE '%' + @Search + '%'
                    OR HDR.strReference LIKE '%' + @Search + '%'
                    )
                OR LEN(ISNULL(@Search, '')) = 0
                )
            AND (
                (LEN(@Name) > 0)
                AND (HDR.strCustName = @Name)
                OR LEN(ISNULL(@Name, '')) = 0
                )
        UNION ALL
        SELECT HDR.strOrdDocID AS InvOrdDocID
            ,HDR.dteJournalDate AS JournalDate
            ,CUS.strCustDesc AS CustDesc
            ,DTL.strPartNumber AS PartNumber
            ,INV.decSumAvail AS SumAvail
            ,DTL.decQty AS Qty
            ,DTL.decPriceEaExc AS PriceEaExc
            ,DTL.strTaxCode AS TaxCode
            ,DTL.decLineTaxAmt AS LineTaxAmt
            ,DTL.decLineTotInc AS LineTotInc
            ,DTL.intLineNo AS LineNumber
            ,DTL.strPartDesc AS PartDesc
            ,@BookmarkType3 AS BookmarkType
            ,0 AS SerialID
            ,HDR.strShipTo AS ShipTo
            ,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
            ,HDR.strReference AS Reference
            ,DTL.decPriceEaInc AS PriceEaInc
            ,DTL.decLineDiscPerc AS LineDiscPerc
            ,HDR.dteRequired AS RequiredDate
            ,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
        FROM tblOrderDoc(NOLOCK) HDR
        INNER JOIN tblOrderDocDT(NOLOCK) DTL ON HDR.strOrdDocID = DTL.strOrdDocID
        INNER JOIN tblInv(NOLOCK) INV ON DTL.strPartNumber = INV.strPartNumber
        INNER JOIN tblCustomers(NOLOCK) CUS ON HDR.strCustName = CUS.strCustName
        LEFT JOIN tblOrderDocDTPrj(NOLOCK) DTLPRJ ON DTL.strOrdDocID = DTLPRJ.strOrdDocID
            AND DTL.intLineNo = DTLPRJ.intLineNo
        WHERE INV.bitInactive = 0
            AND HDR.intDocType = 2
            AND DTL.bitDiscountTax = 0
            AND HDR.decTotal >= 0
            AND (
                CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
                    AND CONVERT(DATE, @EndDate)
                )
            AND (
                (LEN(@Search) > 0)
                AND (
                    HDR.strOrdDocID LIKE '%' + @Search + '%'
                    OR CUS.strCustDesc LIKE '%' + @Search + '%'
                    OR DTL.strPartNumber LIKE '%' + @Search + '%'
                    OR ISNULL(DTLPRJ.strProjNumber, '') LIKE '%' + @Search + '%'
                    OR HDR.strReference LIKE '%' + @Search + '%'
                    )
                OR LEN(ISNULL(@Search, '')) = 0
                )
            AND (
                (LEN(@Name) > 0)
                AND (HDR.strCustName = @Name)
                OR LEN(ISNULL(@Name, '')) = 0
                )
        ORDER BY HDR.dteJournalDate DESC
            ,InvOrdDocID DESC
            ,DTL.intLineNo
    ELSE IF @ViewType = 8
        SELECT HDR.strOrdDocID AS InvOrdDocID
            ,HDR.dteJournalDate AS JournalDate
            ,CUS.strCustDesc AS CustDesc
            ,DTL.strPartNumber AS PartNumber
            ,INV.decSumAvail AS SumAvail
            ,DTL.decQty AS Qty
            ,DTL.decPriceEaExc AS PriceEaExc
            ,DTL.strTaxCode AS TaxCode
            ,DTL.decLineTaxAmt AS LineTaxAmt
            ,DTL.decLineTotInc AS LineTotInc
            ,DTL.intLineNo AS LineNumber
            ,DTL.strPartDesc AS PartDesc
            ,@BookmarkType1 AS BookmarkType
            ,0 AS SerialID
            ,HDR.strShipTo AS ShipTo
            ,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
            ,HDR.strReference AS Reference
            ,DTL.decPriceEaInc AS PriceEaInc
            ,DTL.decLineDiscPerc AS LineDiscPerc
            ,HDR.dteRequired AS RequiredDate
            ,DTL.strLocation AS Location
			,HDR.strCurrency AS Currency
        FROM tblOrderDoc(NOLOCK) HDR
        INNER JOIN tblOrderDocDT(NOLOCK) DTL ON HDR.strOrdDocID = DTL.strOrdDocID
        INNER JOIN tblInv(NOLOCK) INV ON DTL.strPartNumber = INV.strPartNumber
        INNER JOIN tblCustomers(NOLOCK) CUS ON HDR.strCustName = CUS.strCustName
        LEFT JOIN tblOrderDocDTPrj(NOLOCK) DTLPRJ ON DTL.strOrdDocID = DTLPRJ.strOrdDocID
            AND DTL.intLineNo = DTLPRJ.intLineNo
        WHERE INV.bitInactive = 0
            AND HDR.bitCleared = 0
            AND HDR.intDocType = 1
            AND DTL.bitDiscountTax = 0
            AND HDR.decTotal >= 0
            AND (
                CONVERT(DATE, HDR.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
                    AND CONVERT(DATE, @EndDate)
                )
            AND (
                (LEN(@Search) > 0)
                AND (
                    HDR.strOrdDocID LIKE '%' + @Search + '%'
                    OR CUS.strCustDesc LIKE '%' + @Search + '%'
                    OR DTL.strPartNumber LIKE '%' + @Search + '%'
                    OR ISNULL(DTLPRJ.strProjNumber, '') LIKE '%' + @Search + '%'
                    OR HDR.strReference LIKE '%' + @Search + '%'
                    )
                OR LEN(ISNULL(@Search, '')) = 0
                )
            AND ( ISNULL(HDR.strOrdFQDocID,'-')  =
                CASE WHEN (@IsARFHQCreatePurchaseOrder = 0)
                THEN '-' ELSE ISNULL(HDR.strOrdFQDocID,'-')  END
                )
            AND (
                ISNULL(HDR.strOrdFQDocID,'-') = CASE WHEN (
                    @FilterIndex = 1
                    AND @IsARFHQCreatePurchaseOrder = 1
                    AND @IsWorkOrder = 0
                    )
                THEN  HDR.strOrdFQDocID ELSE ISNULL(HDR.strOrdFQDocID,'-')  END
                )
            AND (INV.bitUseBOM = CASE WHEN 
                (@IsWorkOrder = 1)
                THEN  1 ELSE INV.bitUseBOM END 
                )
            AND (
                ISNULL(INV.intType,-1) = (CASE WHEN(@IsInventoryOnly = 1) THEN 1
                ELSE ISNULL(INV.intType,-1) END))
            AND (
                (LEN(@Name) > 0)
                AND (HDR.strCustName = @Name)
                OR LEN(ISNULL(@Name, '')) = 0
                )
        ORDER BY HDR.dteJournalDate DESC
            ,HDR.strOrdDocID DESC
            ,DTL.intLineNo
    ELSE IF @ViewType = 9
        SELECT HDR.strInvDocID AS InvOrdDocID
            ,HDR.dteJournalDate AS JournalDate
            ,CUS.strCustDesc AS CustDesc
            ,DTL.strPartNumber AS PartNumber
            ,INV.decSumAvail AS SumAvail
            ,DTL.decQty AS Qty
            ,DTL.decPriceEaExc AS PriceEaExc
            ,DTL.strTaxCode AS TaxCode
            ,DTL.decLineTaxAmt AS LineTaxAmt
            ,DTL.decLineTotInc AS LineTotInc
            ,DTL.intLineNo AS LineNumber
            ,DTL.strPartDesc AS PartDesc
            ,@BookmarkType1 AS BookmarkType
            ,ISNULL((
                    SELECT COUNT(lngID)
                    FROM tblInvoiceDocDTSerial
                    WHERE strInvDocID = DTL.strInvDocID
                        AND intLineNo = DTL.intLineNo
                    ), 0) AS SerialID
            ,HDR.strShipTo AS ShipTo
            ,ISNULL(DTLPRJ.strProjNumber, '') AS ProjectNumber
            ,HDR.strReference AS Reference
            ,DTL.decPriceEaInc AS PriceEaInc
            ,DTL.decLineDiscPerc AS LineDiscPerc
            ,HDR.dteRequired AS RequiredDate
            ,DTL.strLocation AS Location
            ,DTL.strPartExtendedDesc AS ExtendedDescription
			,HDR.strCurrency AS Currency
        FROM tblInvoiceDoc(NOLOCK) HDR
        INNER JOIN tblInvoiceDocDT(NOLOCK) DTL ON HDR.strInvDocID = DTL.strInvDocID
        INNER JOIN tblInv(NOLOCK) INV ON DTL.strPartNumber = INV.strPartNumber
        INNER JOIN tblCustomers(NOLOCK) CUS ON HDR.strCustName = CUS.strCustName
        LEFT JOIN tblInvoiceDocDTPrj(NOLOCK) DTLPRJ ON DTL.strInvDocID = DTLPRJ.strInvDocID
            AND DTL.intLineNo = DTLPRJ.intLineNo
        WHERE INV.bitInactive = 0
            AND DTL.bitDiscountTax = 0
            AND HDR.decTotal >= 0
            AND HDR.strInvDocID = @InvDocID
            AND (
                (LEN(@Search) > 0)
                AND (
                    HDR.strOrdDocID LIKE '%' + @Search + '%'
                    OR CUS.strCustDesc LIKE '%' + @Search + '%'
                    OR DTL.strPartNumber LIKE '%' + @Search + '%'
                    OR ISNULL(DTLPRJ.strProjNumber, '') LIKE '%' + @Search + '%'
                    OR HDR.strReference LIKE '%' + @Search + '%'
                    )
                OR LEN(ISNULL(@Search, '')) = 0
                )
        ORDER BY HDR.dteJournalDate DESC
            ,HDR.strInvDocID DESC
            ,DTL.intLineNo
END
GO

/****** Object:  StoredProcedure [dbo].[ReadCS_XML]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[ReadCS_XML]    Script Date: 03/29/2018 7:31:45 PM ******/
CREATE procedure [dbo].[ReadCS_XML]
(
@XMLFile xml 
)
AS
BEGIN

select distinct
		Stock.detail.value('(Site/text())[1]','varchar(100)') as Site 
       ,Stock.detail.value('(OriginItemCode/text())[1]','varchar(100)') as OriginItemCode
       ,Stock.detail.value('(MovementDate/text())[1]','varchar(100)') as MovementDate
       ,Stock.detail.value('(MovementHour/text())[1]','varchar(100)') as MovementHour
       ,Stock.detail.value('(OriginLot/text())[1]','varchar(100)') as OriginLot
	   ,Stock.detail.value('(OriginLotStatus/text())[1]','varchar(100)') as OriginLotStatus
	   ,Stock.detail.value('(MovementQuantity/text())[1]','varchar(100)') as MovementQuantity
	   ,Stock.detail.value('(MovementQuantityUOM/text())[1]','varchar(100)') as MovementQuantityUOM
	   ,Stock.detail.value('(ReasonCode/text())[1]','varchar(100)') as ReasonCode
	   INTO #temp_XML 
    from
	
	@XMLFile.nodes('/StockMoves/StockMove') as Stock(detail)

	SELECT #temp_XML.OriginItemCode AS strPartNumber
		,case When ISNULL(tblInv.strDesc, '') = '' then (select strDesc from tblInv where strPartNumber = #temp_XML.OriginItemCode) else tblInv.strDesc end AS strDesc
		,ISNULL((SELECT strManPromtekLoc FROM tblCoOpts), (select strLocName from tblInvExt where strPartNumber = #temp_XML.OriginItemCode and bitDefault = 1)) AS strLocation 
		,ISNULL(CONVERT(decimal(18,4),#temp_XML.MovementQuantity), 0) AS MovementQuantity
		,#temp_XML.MovementQuantityUOM
		,ISNULL(tblInv.decLastPPUnit, 0) AS decLastPPUnit
		,ISNULL(tblInv.decBuyToStock, 0) AS decBuyToStock
		,ISNULL(tblInvExt.decValue, 0) AS decValue
		,ISNULL(tblInvExt.decOnHand, 0) AS decOnHand
		,ISNULL(tblInv.decStandardCost, 0) AS decStandardCost
		,ISNULL(tblInv.bitInvSerialType,0) AS bitInvSerialType
		,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS bitDimensionExist
		,ISNULL(tblInvSerialTypes.bitMethod, 0) AS bitMethod
		,#temp_XML.MovementDate AS MovementDate
	FROM #temp_XML
	LEFT JOIN tblInvExt ON #temp_XML.OriginItemCode = tblInvExt.strPartNumber AND tblInvExt.strLocName = ISNULL((SELECT strManPromtekLoc FROM tblCoOpts), (select strLocName from tblInvExt where strPartNumber = #temp_XML.OriginItemCode and bitDefault = 1))
	LEFT JOIN tblInv ON #temp_XML.OriginItemCode = tblInv.strPartNumber
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType

	SELECT #temp_XML.OriginItemCode
			,#temp_XML.OriginLot
			,ISNULL(CONVERT(decimal(18,4),#temp_XML.MovementQuantity), 0) AS MovementQuantity
			,#temp_XML.MovementQuantityUOM
			,0 AS lngID
			,CASE WHEN ISNULL(OriginLot, '') = '' THEN 0 ELSE ISNULL((SELECT TOP 1 ILE.bitExpiryDate FROM tblInvLotExt ILE WHERE ILE.strLotNumber = #temp_XML.OriginLot AND ILE.decQty > 0),0) END AS bitExpiryDate
			,CASE WHEN ISNULL(OriginLot, '') = '' THEN NULL ELSE ISNULL((SELECT TOP 1 ILE.dteExpiryDate FROM tblInvLotExt ILE WHERE ILE.strLotNumber = #temp_XML.OriginLot AND ILE.decQty > 0),NULL) END AS dteExpiryDate
			,CASE 
				WHEN ISNULL(OriginLot, '') = ''
					THEN 0
				ELSE 1
				END AS intSerialLotType
			,ISNULL((
					SELECT DISTINCT tblInv.strInvSerialType FROM tblInv 
					INNER JOIN tblInvSerialTypes 
					ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
					where tblInv.strPartNumber = #temp_XML.OriginItemCode
			), '') as InvSerialType
			,ISNULL((
					SELECT DISTINCT tblInvSerialTypes.bitDimensionExist FROM tblInv 
					INNER JOIN tblInvSerialTypes 
					ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
					where tblInv.strPartNumber = #temp_XML.OriginItemCode
			), 0) as bitDimensionExist
			,ISNULL((SELECT ISNULL(tblInvSerialExt.strDimension,'') FROM tblInv 
					INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
					LEFT JOIN tblInvSerialExt ON tblInv.strPartNumber= tblInvSerialExt.strPartNumber AND tblInvSerialTypes.strInvSerialType  = tblInvSerialExt.strSerialNumber 
					WHERE tblInv.strPartNumber = #temp_XML.OriginItemCode
			),'') As strDimension

	from #temp_XML

	drop table #temp_XML
END
GO
/****** Object:  StoredProcedure [dbo].[ReadDO_XML]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ReadDO_XML]
(
	 @MyXML xml 
	,@SQJBDocID nvarchar(50)
	,@SQWCCode nvarchar(20)
)
AS
BEGIN

SELECT DISTINCT
		DENSE_RANK() OVER(ORDER BY  ComponentDT.detail1.value('(ComponentLineNumber/text())[1]','varchar(100)') DESC) as [LineNumber],
		Book.detail.value('(WONumber/text())[1]','varchar(100)') as WONumber, 
       Book.detail.value('(MovementDate/text())[1]','varchar(100)') as MovementDate, 
       Book.detail.value('(Site/text())[1]','varchar(100)') as Site, 
       Book.detail.value('(DocEntryNumber/text())[1]','varchar(100)') as DocEntryNumber
       ,Book.detail.value('(ClosingFlag/text())[1]','varchar(100)') as ClosingFlag
	   ,Book.detail.value('(ItemCode/text())[1]','varchar(100)') as ItemCode
	   ,Book.detail.value('(MovementHour/text())[1]','varchar(100)') as MovementHour
	   ,ComponentDT.detail1.value('(ComponentSubstituted/text())[1]','varchar(100)') as ComponentSubstituted
	   ,ComponentDT.detail1.value('(ComponentLineNumber/text())[1]','varchar(100)') as ComponentLineNumber
	   ,ComponentDT.detail1.value('(ComponentItemCode/text())[1]','varchar(100)') as ComponentItemCode
	   ,LotDT.detail2.value('(Quantity/text())[1]','varchar(100)') as Quantity
	   ,LotDT.detail2.value('(LotNumber/text())[1]','varchar(100)') as LotNumber
	   ,LotDT.detail2.value('(QuantityUOM/text())[1]','varchar(100)') as QuantityUOM
	   ,LotDT.detail2.value('(Location/text())[1]','varchar(100)') as Location
	   INTO #temp_XML 
    from @MyXML.nodes('/ComponentResults/ComponentResult') as Book(detail)
	CROSS APPLY @MyXML.nodes('/ComponentResults/ComponentResult/Component') as ComponentDT(detail1)  
	INNER JOIN @MyXML.nodes('/ComponentResults/ComponentResult/Component/Lot') as LotDT(detail2)  
					ON ComponentDT.detail1.value('(ComponentItemCode/text())[1]','varchar(100)')  = detail2.value('(../ComponentItemCode/text())[1]','varchar(100)') 

	SELECT ISNULL((SELECT TOP 1
							MJ.intLineNo 
						FROM tblManJobCompInv MJ 
						WHERE MJ.strJBDocID = @SQJBDocID 
						AND MJ.strBOMNumber = #temp_XML.ItemCode 
						AND MJ.strPartNumber = #temp_XML.ComponentItemCode),1) AS LineNumber

		,ItemCode as  strPartNumber
              ,isnull((select strDesc from tblInv where strPartNumber = ComponentItemCode), '') as strDesc
              ,case when ISNULL(#temp_XML.Location,'') = '' then ISNULL((SELECT tblManJobCompInv.strLocation
				FROM tblManJobCompInv
				WHERE strJBDocID = @SQJBDocID
					AND strWCCode = @SQWCCode
					AND strPartNumber = #temp_XML.ComponentItemCode), 0) ELSE ISNULL(#temp_XML.Location,'') END AS strLocation
              ,ISNULL(CONVERT(decimal(18,4),#temp_XML.Quantity), 0) AS Quantity
              ,SUM(ISNULL(tblManWIPCompInv.decPostQty, 0) - ISNULL(tblManWIPCompInv.decReturnQty, 0)) AS decPostQty
              ,ISNULL((SELECT tblManJobCompInv.decManAmount FROM tblManJobCompInv WHERE strJBDocID = @SQJBDocID AND strWCCode = @SQWCCode AND strPartNumber = #temp_XML.ComponentItemCode), 0) AS decManufactureAmount
			  ,SUM(ISNULL(tblManWIPCompInv.decPostAmount,0))  AS decPostAmount 
		,ISNULL(tblInv.bitInvSerialType,0) as bitInvSerialType
		,#temp_XML.QuantityUOM
		,#temp_XML.ComponentItemCode
		,ISNULL(tblInvSerialTypes.bitMethod, 0) AS bitMethod
		,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS bitDimensionExist
			  ,ISNULL((SELECT tblManJobCompInv.decManQty FROM tblManJobCompInv WHERE strJBDocID = @SQJBDocID AND strWCCode = @SQWCCode AND strPartNumber = #temp_XML.ComponentItemCode), 0) AS decManQty
	FROM #temp_XML
	LEFT JOIN tblInv ON #temp_XML.ComponentItemCode = tblInv.strPartNumber
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	LEFT JOIN tblManWIP ON #temp_XML.WONumber = tblManWIP.strJBDocID
       LEFT JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID AND tblManWIPCompInv.strPartNumber = #temp_XML.ComponentItemCode
	WHERE #temp_XML.WONumber = @SQJBDocID
	GROUP BY #temp_XML.LineNumber
		,ItemCode
		,#temp_XML.Location
              ,#temp_XML.Quantity
		,#temp_XML.QuantityUOM
		,#temp_XML.ComponentItemCode
		,tblInvSerialTypes.bitMethod
		,tblInvSerialTypes.bitDimensionExist
		,tblInv.bitInvSerialType
	ORDER BY #temp_XML.LineNumber

	CREATE TABLE #TMP_COMPONENT (
	[strWIPDocID] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[intLineNo] [int] NOT NULL,
	[decQty] [money] NOT NULL,
	[strUnit] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[intSerialLotType] [int] NOT NULL,
	[lngBinId] [bigint] NOT NULL,
	[SerialLotType] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[ComponentItemCode] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[strLocation] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[lngID] [bigint] IDENTITY(1,1) NOT NULL)

	INSERT INTO #TMP_COMPONENT
	SELECT	WONumber AS strWIPDocID						
			,ISNULL((SELECT TOP 1
							MJ.intLineNo 
									FROM tblManJobCompInv MJ 
									WHERE MJ.strJBDocID = #temp_XML.WONumber 
									AND MJ.strBOMNumber = #temp_XML.ItemCode 
									AND MJ.strPartNumber = #temp_XML.ComponentItemCode),1) AS intLineNo

			,ISNULL(CONVERT(decimal(18,4),Quantity), 0) AS decQty
			,QuantityUOM AS strUnit
			,1 AS intSerialLotType
			,ISNULL((SELECT TOP 1
							lngBinId 
					 FROM tblInvExtBin 
					 WHERE strPartNumber = #temp_XML.ComponentItemCode 
					 AND  strLocName = CASE WHEN ISNULL(#temp_XML.Location,'') = '' 
										    THEN ISNULL((SELECT tblManJobCompInv.strLocation
													     FROM tblManJobCompInv
													     WHERE strJBDocID = @SQJBDocID
													     AND strWCCode = @SQWCCode
													     AND strPartNumber = #temp_XML.ComponentItemCode), 0) 
										    ELSE ISNULL(#temp_XML.Location,'') 
									   END
					 AND bitDefault = 1), ISNULL((SELECT TOP 1
														 lngBinId 
												  FROM tblInvExtBin 
												  WHERE strPartNumber = #temp_XML.ComponentItemCode 
												  AND  strLocName = CASE WHEN ISNULL(#temp_XML.Location,'') = '' 
																		THEN ISNULL((SELECT tblManJobCompInv.strLocation
																					 FROM tblManJobCompInv
																					 WHERE strJBDocID = @SQJBDocID
																					 AND strWCCode = @SQWCCode
																					 AND strPartNumber = #temp_XML.ComponentItemCode), 0) 
																		ELSE ISNULL(#temp_XML.Location,'') 
																   END
												  AND bitAllowed = 1), 0)) AS lngBinId
			,ISNULL((SELECT DISTINCT TYP.strInvSerialType
					FROM tblManWIPCompInvSerial SRL
					INNER JOIN tblManWIPCompInv DTL ON SRL.strWIPDocID = DTL.strWIPDocID
						AND SRL.intLineNo = DTL.intLineNo
					INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber
					INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType
					WHERE SRL.strWIPDocID = #temp_XML.WONumber
						AND SRL.intLineNo = #temp_XML.LineNumber
			), '') AS SerialLotType
			,#temp_XML.ComponentItemCode
			,CASE WHEN ISNULL(#temp_XML.Location,'') = '' 
				  THEN ISNULL((SELECT tblManJobCompInv.strLocation
							   FROM tblManJobCompInv
							   WHERE strJBDocID = @SQJBDocID
							   AND strWCCode = @SQWCCode
							   AND strPartNumber = #temp_XML.ComponentItemCode), 0) 
				  ELSE ISNULL(#temp_XML.Location,'') 
			 END AS strLocation
	FROM #temp_XML
	WHERE WONumber = @SQJBDocID
	ORDER BY #temp_XML.LineNumber

	CREATE TABLE #TMP_LOT (
	[strWIPDocID] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[intLineNo] [int] NOT NULL,
	[ComponentItemCode] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[strSerialNumber] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[decQty] [money] NOT NULL,
	[bitExpiryDate] [bit] NOT NULL,
	[dteExpiryDate] [smalldatetime] NULL,
	[lngID] [bigint] IDENTITY(1,1) NOT NULL)

	DECLARE @Cursor CURSOR;
	DECLARE @WIPDocID nvarchar(50)
	DECLARE @ItemCode nvarchar(100)
	DECLARE @LineNo int
	DECLARE @Qty money
	DECLARE @BinID bigint
	DECLARE @Location nvarchar(100);
	BEGIN
		SET @Cursor = CURSOR FOR 

		SELECT strWIPDocID, ComponentItemCode, intLineNo, decQty, lngBinId, strLocation FROM #TMP_COMPONENT
        
		OPEN @Cursor 
		FETCH NEXT FROM @Cursor 
		INTO @WIPDocID, @ItemCode, @LineNo, @Qty, @BinID, @Location

		WHILE @@FETCH_STATUS = 0
		BEGIN

			DECLARE @QtyRemain money = @Qty

			DECLARE @CursorLT CURSOR;
			DECLARE @LotNumberLT nvarchar(100)
			DECLARE @QtyLT money
			DECLARE @ExpiryFlagLT bit
			DECLARE @ExpiryDateLT smalldatetime;
			BEGIN
				SET @CursorLT = CURSOR FOR 

				SELECT strLotNumber, decQty, bitExpiryDate, dteExpiryDate FROM tblInvLotExt WHERE strPartNumber = @ItemCode AND strLocName = @Location AND lngBinID = @BinID AND decQty > 0 ORDER BY dteExpiryDate, decQty
        
				OPEN @CursorLT 
				FETCH NEXT FROM @CursorLT 
				INTO @LotNumberLT, @QtyLT, @ExpiryFlagLT, @ExpiryDateLT

				WHILE @@FETCH_STATUS = 0
				BEGIN

					IF @QtyRemain > 0
					BEGIN

						DECLARE @QtyLOT money = 0

						IF @QtyLT <= @QtyRemain
						BEGIN
							SET @QtyLOT = @QtyLT
							SET @QtyRemain = @QtyRemain - @QtyLT
						END
						ELSE
						BEGIN
							SET @QtyLOT = @QtyRemain
							SET @QtyRemain = 0
						END

						INSERT INTO #TMP_LOT
						VALUES (@WIPDocID, @LineNo, @ItemCode, @LotNumberLT, @QtyLOT, @ExpiryFlagLT, @ExpiryDateLT)

					END

				  FETCH NEXT FROM @CursorLT 
				  INTO @LotNumberLT, @QtyLT, @ExpiryFlagLT, @ExpiryDateLT

				END; 

				CLOSE @CursorLT ;
				DEALLOCATE @CursorLT;
			END;

		  FETCH NEXT FROM @Cursor 
		  INTO @WIPDocID, @ItemCode, @LineNo, @Qty, @BinID, @Location

		END; 

		CLOSE @Cursor ;
		DEALLOCATE @Cursor;
	END;

	SELECT	COMP.strWIPDocID,
			0 AS lngWIPID,
			COMP.intLineNo,
			LOT.strSerialNumber,
			LOT.decQty,
			COMP.strUnit,
			0 AS lngID,
			LOT.bitExpiryDate,
			LOT.dteExpiryDate,
			COMP.intSerialLotType,
			COMP.lngBinId,
			COMP.SerialLotType,
			COMP.ComponentItemCode 
	FROM #TMP_COMPONENT COMP
	INNER JOIN #TMP_LOT LOT ON COMP.strWIPDocID = LOT.strWIPDocID AND COMP.intLineNo = LOT.intLineNo AND COMP.ComponentItemCode = LOT.ComponentItemCode  
	ORDER BY COMP.intLineNo 

	drop table #temp_XML
	DROP TABLE #TMP_COMPONENT
	DROP TABLE #TMP_LOT
END
GO
/****** Object:  StoredProcedure [dbo].[ReadEN_XML]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[ReadEN_XML]    Script Date: 23-04-2018 05:11:45 PM ******/
CREATE PROCEDURE [dbo].[ReadEN_XML] (  
 @MyXML XML  
 ,@SQJBDocID NVARCHAR(50)  
 )  
AS  
BEGIN  
 SELECT DISTINCT DENSE_RANK() OVER (  
   ORDER BY Product.detail2.value('(WONumber/text())[1]', 'varchar(100)') DESC  
   ) AS [LineNumber]  
  ,Book.detail.value('(WONumber/text())[1]', 'varchar(100)') AS WONumber  
  ,Book.detail.value('(MovementDate/text())[1]', 'varchar(100)') AS MovementDate  
  ,Book.detail.value('(Site/text())[1]', 'varchar(100)') AS Site  
  ,Book.detail.value('(DocEntryNumber/text())[1]', 'varchar(100)') AS DocEntryNumber  
  ,Book.detail.value('(ClosingFlag/text())[1]', 'varchar(100)') AS ClosingFlag  
  ,Book.detail.value('(MovementHour/text())[1]', 'varchar(100)') AS MovementHour  
  ,Product.detail2.value('(LotStatus/text())[1]', 'varchar(100)') AS LotStatus  
  ,Product.detail2.value('(ItemCode/text())[1]', 'varchar(100)') AS ItemCode  
  ,Product.detail2.value('(ByProductYesNo/text())[1]', 'varchar(100)') AS ByProductYesNo  
  ,Product.detail2.value('(Location/text())[1]', 'varchar(100)') AS Location  
  ,Product.detail2.value('(ItemQuantityUOM/text())[1]', 'varchar(100)') AS ItemQuantityUOM  
  ,Product.detail2.value('(ExpiryDate/text())[1]', 'varchar(100)') AS ExpiryDate  
  ,Product.detail2.value('(ItemQuantity/text())[1]', 'varchar(100)') AS ItemQuantity  
  ,Product.detail2.value('(OperationNumber/text())[1]', 'varchar(100)') AS OperationNumber  
  ,Product.detail2.value('(LotNumber/text())[1]', 'varchar(100)') AS LotNumber  
  ,Product.detail2.value('(ProducedDate/text())[1]', 'varchar(100)') AS ProducedDate  
 INTO #temp_XML  
 FROM @MyXML.nodes('/ProductionOrderResults/ProductionOrderResult') AS Book(detail)  
 CROSS APPLY @MyXML.nodes('/ProductionOrderResults/ProductionOrderResult/Product') AS Product(detail2)  
  
 SELECT #temp_XML.ItemCode AS strPartNumber  
  --,case When ISNULL(tblInv.strDesc, '') = '' then (select strDesc from tblInv where strPartNumber = #temp_XML.ItemCode) else tblInv.strDesc end AS strDesc  
  ,case When ISNULL((select strDesc from tblManJobByProd where strJBDocID = @SQJBDocID and strPartNumber = #temp_XML.ItemCode),'') = '' then 
  (select strDesc from tblInv where strPartNumber = #temp_XML.ItemCode) else isnull((select strDesc from tblManJobByProd where strJBDocID = @SQJBDocID and strPartNumber = #temp_XML.ItemCode),'') end  AS strDesc  
  --,case when ISNULL(#temp_XML.Location,'') = '' then (select strLocName from tblInvExt where strPartNumber = #temp_XML.ItemCode and bitDefault = 1) else ISNULL(#temp_XML.Location,'') end AS strLocation  
  ,case when ISNULL((select tblManJobByProd.strLocation from tblManJobByProd where strJBDocID = @SQJBDocID and strPartNumber = #temp_XML.ItemCode),'') = '' then (select strLocName from tblInvExt where strPartNumber = #temp_XML.ItemCode and bitDefault = 1)
  else ISNULL((select tblManJobByProd.strLocation from tblManJobByProd where strJBDocID = @SQJBDocID and strPartNumber = #temp_XML.ItemCode),'') end AS strLocation  
  ,ISNULL(CONVERT(decimal(18,4),#temp_XML.ItemQuantity), 0) AS decManQty  
  ,#temp_XML.ItemQuantityUOM  
  ,ISNULL(tblInv.decLastPPUnit, 0) AS decLastPPUnit  
  ,ISNULL(tblInv.decBuyToStock, 0) AS decBuyToStock  
  ,ISNULL(tblInvExt.decValue, 0) AS decValue  
  ,ISNULL(tblInvExt.decOnHand, 0) AS decOnHand  
  ,ISNULL(tblInv.decStandardCost, 0) AS decStandardCost  
  ,ISNULL((  
    SELECT SUM(tblInvTrackingDT.decQty)  
    FROM tblInvTrackingDT  
    WHERE tblInvTrackingDT.strSource = @SQJBDocID  
     AND tblInvTrackingDT.strPartNumber = tblInv.strPartNumber  
    ), 0) AS decQtyInvTrackingDT  
  ,ISNULL(tblInv.bitInvSerialType,0) AS bitInvSerialType  
  ,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS bitDimensionExist  
  ,ISNULL(tblInvSerialTypes.bitMethod, 0) AS bitMethod  
  ,ISNULL((SELECT decManQty FROM tblManJobByProd WHERE strJBDocID = @SQJBDocID AND strPartNumber = #temp_XML.ItemCode),0) AS decToManQty  
  ,CASE WHEN #temp_XML.ByProductYesNo = 'Y' THEN 1 ELSE 0 END AS bitRework 
  ,Row_Number() OVER (PARTITION BY WONumber ORDER BY WONumber) AS RowId 
  ,'QUALITY' AS strBinCode 
 FROM #temp_XML  
 LEFT JOIN tblInvExt ON #temp_XML.ItemCode = tblInvExt.strPartNumber	AND (select tblManJobByProd.strLocation from tblManJobByProd where strJBDocID = @SQJBDocID and strPartNumber = #temp_XML.ItemCode)  = tblInvExt.strLocName  
 LEFT JOIN tblInv ON #temp_XML.ItemCode = tblInv.strPartNumber  
 LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType  
 WHERE #temp_XML.WONumber = @SQJBDocID  
  
 SELECT WONumber  
  ,ItemCode  
  ,LotNumber  
  ,ISNULL(CONVERT(decimal(18,4),ItemQuantity), 0) AS ItemQuantity  
  ,ItemQuantityUOM  
  ,0 AS lngID  
  , CASE WHEN ISNULL(#temp_XML.ExpiryDate,'') = '' THEN 0 ELSE 1 END AS bitExpiryDate  
  ,#temp_XML.ExpiryDate AS dteExpiryDate  
  ,CASE   
   WHEN ISNULL(LotNumber, '') = ''  
    THEN 0  
   ELSE 1  
   END AS intSerialLotType  
  ,(  
   SELECT lngBinId  
   FROM tblInvExtBin  
   WHERE strPartNumber = #temp_XML.ItemCode  
    AND strLocName = #temp_XML.Location  
	AND lngBinID = (SELECT BIN.lngID 
					FROM tblInvLocBin BIN 
					WHERE BIN.strLocName = #temp_XML.Location
					AND BIN.strBinCode = 'QUALITY')
   ) AS lngBinId  
  ,ISNULL((  
    SELECT DISTINCT TYP.strInvSerialType  
    FROM tblManJobByProdSerial SRL  
    INNER JOIN tblInv INV ON SRL.strPartNumber = INV.strPartNumber  
    INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType  
    WHERE SRL.strJBDocID = #temp_XML.WONumber  
     AND SRL.strPartNumber = #temp_XML.ItemCode  
    ), '') ,
	Row_Number() OVER (PARTITION BY WONumber ORDER BY WONumber) AS RowId
 FROM #temp_XML  
 WHERE WONumber = @SQJBDocID  
  AND ItemCode = #temp_XML.ItemCode  
 ORDER BY LineNumber  
END  

GO
/****** Object:  StoredProcedure [dbo].[ReadOP_XML]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[ReadOP_XML]    Script Date: 04/25/2019 10:55:00 AM ******/
CREATE PROCEDURE [dbo].[ReadOP_XML] (
	@MyXML XML
	,@SQJBDocID NVARCHAR(50)
	)
AS
BEGIN
	SELECT Book.detail.value('(WONumber/text())[1]', 'varchar(100)') AS WONumber
		,Book.detail.value('(ItemCode/text())[1]', 'varchar(100)') AS ItemCode
		,Book.detail.value('(WorkCenterCode/text())[1]', 'varchar(100)') AS WorkCenterCode
		,Book.detail.value('(RealizationTime/text())[1]', 'varchar(100)') AS RealizationTime
		,Book.detail.value('(OperationNumber/text())[1]', 'varchar(100)') AS OperationNumber
		,Book.detail.value('(ClosingFlag/text())[1]', 'varchar(100)') AS ClosingFlag
	INTO #temp_XML
	FROM @MyXML.nodes('/OperatingTimeResults/OperatingTimeResult') AS Book(detail)

	SELECT WorkCenterCode AS strWCCode
		,ISNULL(MACH.intLineNo, 1) AS intLineNo
		,OperationNumber AS strMachCode
		,ISNULL(MACH.decManVariableHours, 0) AS decVariableHours
		,ISNULL(MACH.decVariableRate, ISNULL(WC.decVariableHourly, 0)) AS decVariableRate
		,ISNULL(MACH.decSetupHours, 0) AS decSetupHours
		,ISNULL(MACH.decSetupRate, ISNULL(WC.decFixedSetup, 0)) AS decSetupRate
		,ISNULL(MACH.decBreakdownHours, 0) AS decBreakdownHours
		,ISNULL(MACH.decBreakdownRate, ISNULL(WC.decFixedBreakdown, 0)) AS decBreakdownRate
		,ISNULL(MACH.decManAmount, 0) AS decAmount
		,ISNULL((
				SELECT SUM(WIP_MACH.decPostVariableHours)
				FROM tblManWIP WIP
				INNER JOIN tblManWIPCompMach WIP_MACH ON WIP.strWIPDocID = WIP_MACH.strWIPDocID
				WHERE WIP.strJBDocID = @SQJBDocID
					AND WIP.strWCCode = #temp_XML.WorkCenterCode
					AND WIP_MACH.strMachCode = #temp_XML.OperationNumber
					AND WIP_MACH.strBOMNumber = #temp_XML.ItemCode
				), 0) AS decPostedVariableHours
		,ISNULL((
				SELECT SUM(WIP_MACH.decPostSetupHours)
				FROM tblManWIP WIP
				INNER JOIN tblManWIPCompMach WIP_MACH ON WIP.strWIPDocID = WIP_MACH.strWIPDocID
				WHERE WIP.strJBDocID = @SQJBDocID
					AND WIP.strWCCode = #temp_XML.WorkCenterCode
					AND WIP_MACH.strMachCode = #temp_XML.OperationNumber
					AND WIP_MACH.strBOMNumber = #temp_XML.ItemCode
				), 0) AS decPostedSetupHours
		,ISNULL((
				SELECT SUM(WIP_MACH.decPostBreakdownHours)
				FROM tblManWIP WIP
				INNER JOIN tblManWIPCompMach WIP_MACH ON WIP.strWIPDocID = WIP_MACH.strWIPDocID
				WHERE WIP.strJBDocID = @SQJBDocID
					AND WIP.strWCCode = #temp_XML.WorkCenterCode
					AND WIP_MACH.strMachCode = #temp_XML.OperationNumber
					AND WIP_MACH.strBOMNumber = #temp_XML.ItemCode
				), 0) AS decPostedBreakdownHours
		,ISNULL((
				SELECT SUM(WIP_MACH.decPostAmount)
				FROM tblManWIP WIP
				INNER JOIN tblManWIPCompMach WIP_MACH ON WIP.strWIPDocID = WIP_MACH.strWIPDocID
				WHERE WIP.strJBDocID = @SQJBDocID
					AND WIP.strWCCode = #temp_XML.WorkCenterCode
					AND WIP_MACH.strMachCode = #temp_XML.OperationNumber
					AND WIP_MACH.strBOMNumber = #temp_XML.ItemCode
				), 0) AS decPostedAmount
		,CONVERT(DECIMAL(18, 2), ISNULL(#temp_XML.RealizationTime, 0)) AS decPostVariableHours
		,CASE 
			WHEN CONVERT(BIT, ISNULL(#temp_XML.ClosingFlag, 0)) = 0
				THEN 0
			ELSE ISNULL(MACH.decSetupHours, 0)
			END AS decPostSetupHours
		,CASE 
			WHEN CONVERT(BIT, ISNULL(#temp_XML.ClosingFlag, 0)) = 0
				THEN 0
			ELSE ISNULL(MACH.decBreakdownHours, 0)
			END AS decPostBreakdownHours
		,ROUND((ISNULL(MACH.decVariableRate, ISNULL(WC.decVariableHourly, 0)) * CONVERT(DECIMAL(18, 2), ISNULL(#temp_XML.RealizationTime, 0))) + (
				ISNULL(MACH.decSetupRate, ISNULL(WC.decFixedSetup, 0)) * CASE 
					WHEN CONVERT(BIT, ISNULL(#temp_XML.ClosingFlag, 0)) = 0
						THEN 0
					ELSE ISNULL(MACH.decSetupHours, 0)
					END
				) + (
				ISNULL(MACH.decBreakdownRate, ISNULL(WC.decFixedBreakdown, 0)) * CASE 
					WHEN CONVERT(BIT, ISNULL(#temp_XML.ClosingFlag, 0)) = 0
						THEN 0
					ELSE ISNULL(MACH.decBreakdownHours, 0)
					END
				), 2) AS decPostAmount
		,#temp_XML.ItemCode AS strBOMNumber
		,#temp_XML.ClosingFlag AS bitClosingFlag
		,MM.strDesc
		,CASE 
			WHEN CONVERT(BIT, ISNULL(#temp_XML.ClosingFlag, 0)) = 0
				THEN 0
			ELSE ISNULL(MACH.decReturnVariableHours, 0)
			END AS decReturnVariableHours
		,CASE 
			WHEN CONVERT(BIT, ISNULL(#temp_XML.ClosingFlag, 0)) = 0
				THEN 0
			ELSE ISNULL(MACH.decReturnSetupHours, 0)
			END AS decReturnSetupHours
		,CASE 
			WHEN CONVERT(BIT, ISNULL(#temp_XML.ClosingFlag, 0)) = 0
				THEN 0
			ELSE ISNULL(MACH.decReturnBreakdownHours, 0)
			END AS decReturnBreakdownHours
	FROM #temp_XML
	INNER JOIN tblManMachinery MM ON #temp_XML.OperationNumber = MM.strMachCode
	LEFT JOIN tblManJobCompMach MACH ON MACH.strJBDocID = @SQJBDocID
		AND #temp_XML.WorkCenterCode = MACH.strWCCode
		AND #temp_XML.OperationNumber = MACH.strMachCode
		AND #temp_XML.ItemCode = MACH.strBOMNumber
	LEFT JOIN tblManWorkCentreMach WC ON #temp_XML.WorkCenterCode = WC.strWCCode
		AND #temp_XML.OperationNumber = WC.strMachCode

	DROP TABLE #temp_XML
END
GO

/****** Object:  StoredProcedure [dbo].[ReadPS_XML]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[ReadPS_XML]    Script Date: 23-04-2018 05:11:45 PM ******/
CREATE PROCEDURE [dbo].[ReadPS_XML] 
(
	@XMLFile XML
)
AS
BEGIN

	SELECT DISTINCT ps.detail.value('(ItemCode/text())[1]', 'varchar(100)') AS ItemCode
		,ps.detail.value('(ExpiryDate/text())[1]', 'varchar(100)') AS ExpiryDate
		,ps.detail.value('(LotNumber/text())[1]', 'varchar(100)') AS LotNumber
		,ps.detail.value('(LotStatus/text())[1]', 'varchar(100)') AS LotStatus
		,ps.detail.value('(Quantity/text())[1]', 'varchar(100)') AS Quantity
		,ps.detail.value('(QuantityUOM/text())[1]', 'varchar(100)') AS QuantityUOM
		,ps.detail.value('(LabelGencod/text())[1]', 'varchar(100)') AS LabelGencod
		,ps.detail.value('(Location/text())[1]', 'varchar(100)') AS Location
	INTO #temp_XML
	FROM @XMLFile.nodes('/Inventories/Lot') AS ps(detail)

	SELECT ItemCode
		,ExpiryDate
		,LotStatus
		,SUM(CONVERT(DECIMAL, Quantity)) AS Quantity
		,QuantityUOM
		,LabelGencod
		,Location
		,ISNULL(INV.strDesc,'') AS ItemDesc
		,(SELECT tblInvLocBin.strBinCode FROM tblInvLocBin INNER JOIN tblInvExtBin ON tblInvLocBin.lngId = tblInvExtBin.lngBinId WHERE tblInvExtBin.strPartNumber = #temp_XML.ItemCode AND tblInvExtBin.strLocName = #temp_XML.Location AND tblInvExtBin.bitDefault = 1) AS BinCode
	FROM #temp_XML
	LEFT JOIN tblInv INV ON #temp_XML.ItemCode = INV.strPartNumber 
	GROUP BY ItemCode
		,ExpiryDate
		,LotStatus
		,QuantityUOM
		,LabelGencod
		,Location
		,INV.strDesc

	SELECT ItemCode
		,ExpiryDate
		,LotNumber
		,LotStatus
		,ISNULL(CONVERT(decimal(18,4),Quantity), 0) AS Quantity
		,QuantityUOM
		,LabelGencod
		,Location
		,(SELECT tblInvLocBin.strBinCode FROM tblInvLocBin INNER JOIN tblInvExtBin ON tblInvLocBin.lngId = tblInvExtBin.lngBinId WHERE tblInvExtBin.strPartNumber = #temp_XML.ItemCode AND tblInvExtBin.strLocName = #temp_XML.Location AND tblInvExtBin.bitDefault = 1) AS BinCode
		,(SELECT lngBinId FROM tblInvExtBin WHERE strPartNumber = #temp_XML.ItemCode AND strLocName = #temp_XML.Location AND bitDefault = 1) AS BinId
	FROM #temp_XML
END
GO
/****** Object:  StoredProcedure [dbo].[ReceiptsRecord]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--ReceiptsRecord 0,'','','','','','','','',getdate(),0,'',0,0,0,0,0,0,0,'',0,'',0,0,0,0,0,0,0,0,0,0,0,0,'',0,0,'',0,0,0,0,0,0,0,getdate(),'','',''
CREATE PROCEDURE [dbo].[ReceiptsRecord] 
	--@oTaxCodes AS NVARCHAR
	 @PayID                   AS BIGINT                      					-- 0
	,@CustName                AS NVARCHAR										-- ''
	,@CustNUmber              AS NVARCHAR										-- ''
	,@SourceDoc               AS NVARCHAR										-- ''
	,@PL_oCurrentUser         AS NVARCHAR										-- ''
	,@CustTransType           AS NVARCHAR										-- ''
	,@PL_CustTransDTType      AS INT							 			-- ''
	,@PL_CustTransType        AS NVARCHAR										-- ''
	,@PL_HomeCurrencyCode     AS NVARCHAR							 			-- ''
	,@DocumentDate            AS DATETIME										-- getdate()
	,@lngJourID               AS BIGINT											-- 0
	,@CustomerCurrencyCode    AS NVARCHAR							 			-- ''
	,@CustExchangeRate        AS MONEY											-- 0
	,@TotalDeposits           AS MONEY											-- 0
	,@TotalDepositsF          AS MONEY											-- 0
	,@HomeSubTotal            AS MONEY											-- 0
	,@BankCurrency            AS MONEY											-- 0
	,@BankIsForiegn           AS BIT											-- 0
	,@BankExchange            AS MONEY											-- 0
	,@Account                 AS NVARCHAR										-- ''
	,@DeptAccount             AS NVARCHAR											-- 0
	,@Comment                 AS NVARCHAR = 'Deposit'							-- ''
	,@BankAmount              AS MONEY											-- 0
	,@Deposit                 AS MONEY											-- 0
	,@IsForeign               AS BIT											-- 0
	,@bitIsForeign            AS BIT											-- 0
	,@TotalARAmount           AS MONEY											-- 0
	,@DiscMatched             AS MONEY											-- 0
	,@TotalARAmountF          AS MONEY											-- 0
	,@SelectedWTTaxCode       AS MONEY								 			-- 0
	,@TotalVariance           AS MONEY											-- 0
	,@TotalBankVariance       AS MONEY								 			-- 0
	,@Total                   AS MONEY											-- 0
	,@PaidByIndex             AS MONEY											-- 0
	,@SelectedPaidBy          AS VARCHAR										-- ''
	,@WithholdTax             AS MONEY											-- 0
	,@WithholdTaxAmt          AS MONEY											-- 0
	,@POSDrawerSessionID      AS NVARCHAR							 			-- ''
	,@NextRCNumber            AS BIGINT											-- 0
	,@ReturnSubTotal          AS DECIMAL										-- 0
	,@ReturnTotalTax          AS DECIMAL										-- 0
	,@ReturnTotal             AS DECIMAL										-- 0
	,@PL_TaxModule            AS INT											-- 0
	,@PL_TaxType			  AS INT											-- 0
	,@FromPOS                 AS BIT											-- 0
	,@CurrentYearBegan        AS DATETIME										-- getdate()
	,@DefCodeByCustomer       AS NVARCHAR										-- ''
	,@receiptGridTableType    AS CommonTableType readonly			 			-- ''
	,@taxLineTableType        AS CommonTableType readonly            			-- ''
	AS             																  
BEGIN
	DECLARE @tblReceiptGrid AS TABLE (
		CustName NVARCHAR(100)
		,Reference NVARCHAR(100)
		,DocumentNumber NVARCHAR(100)
		,DATE DATETIME
		,OrderNumber NVARCHAR(100)
		,OrigAmountExcl MONEY
		,OrigAmountIncl MONEY
		,DueAmountExcl MONEY
		,DueAmountIncl MONEY
		,WHTax MONEY
		,DiscAvailable MONEY
		,DiscTaken MONEY
		,ReceiptAmout MONEY
		,LngID BIGINT
		,TransType BIGINT
		,OrigHome MONEY
		,DueAmountHome MONEY
		,DiscAvailHome MONEY
		,ActHomeAmt MONEY
		,ActPrepayAmt MONEY
		,Variance MONEY
		,ReceiptsAmt MONEY
		)

	INSERT INTO @tblReceiptGrid (
		CustName
		,Reference
		,DocumentNumber
		,DATE
		,OrderNumber
		,OrigAmountExcl
		,OrigAmountIncl
		,DueAmountExcl
		,DueAmountIncl
		,WHTax
		,DiscAvailable
		,DiscTaken
		,ReceiptAmout
		,LngID
		,TransType
		,OrigHome
		,DueAmountHome
		,DiscAvailHome
		,ActHomeAmt
		,ActPrepayAmt
		,Variance
		,ReceiptsAmt
		)
	SELECT COL01
		,COL02
		,COL03
		,COL04
		,COL05
		,COL06
		,COL07
		,COL08
		,COL09
		,COL10
		,COL11
		,COL12
		,COL13
		,COL14
		,COL15
		,COL16
		,COL17
		,COL18
		,COL19
		,COL20
		,COL21
		,COL22
	FROM @receiptGridTableType

	DECLARE @tblTemp AS TABLE (
		docNumber NVARCHAR(200) DEFAULT ''
		,orderNUmber NVARCHAR(100) DEFAULT ''
		,InvDepNumber NVARCHAR(100) DEFAULT ''
		,OrigAmountIncl NVARCHAR(100) DEFAULT ''
		,lngCustTrans NVARCHAR(100) DEFAULT ''
		,decPayAmt NVARCHAR(100) DEFAULT ''
		,decPayAmtH NVARCHAR(100) DEFAULT ''
		,decDiscAmt NVARCHAR(100) DEFAULT ''
		)

	INSERT INTO @tblTemp (
		docNumber
		,orderNUmber
		,InvDepNumber
		,OrigAmountIncl
		)
	VALUES (
		(
			SELECT DocumentNumber
			FROM @tblReceiptGrid
			)
		,(
			SELECT strOrdDocID
			FROM tblCustTrans
			INNER JOIN @tblReceiptGrid rg ON tblCustTrans.strOrdDocID = rg.DocumentNumber
			WHERE tblCustTrans.strOrdDocID IN (
					SELECT docNumber
					FROM @tblTemp
					WHERE docNumber LIKE '(SO-|CR-)%'
					)
			)
		,(
			SELECT Reference
			FROM @tblReceiptGrid
			)
		,(
			SELECT OrigAmountIncl
			FROM @tblReceiptGrid
			)
		)

	DECLARE @lngCustTrans AS BIGINT = (
			SELECT ISNULL(MAX(lngCustTrID), 0) + 1
			FROM tblCustTrans
			)

	INSERT INTO tblCustTrans
	VALUES (
		@lngCustTrans
		,@CustNUmber
		,getdate()
		,@DocumentDate
		,@PL_oCurrentUser
		,NULL
		,(
			SELECT InvDepNumber
			FROM @tblTemp
			)
		,(
			SELECT docNumber
			FROM @tblTemp
			)
		,@CustTransType
		,(
			SELECT OrigAmountIncl
			FROM @tblTemp
			)
		,@bitIsForeign
		,@CustomerCurrencyCode
		,@IsForeign
		,@CustExchangeRate
		,0
		,NULL
		,0
		,0
		,0
		,0
		,@DocumentDate
		,@DocumentDate
		,NULL
		,(
			SELECT docNumber
			FROM @tblTemp
			)
		)

	INSERT INTO tblCustTransDT (
		dteJournalDate
		,lngCustTrID
		,lngCustPayID
		,decAmount
		,intTransType
		,decAmtOwingAtTime
		,bitReversed
		,dteIntDate
		,decAmountF
		,decAmtOwingAtTimeF
		,bitIsForeign
		)
	VALUES (
		@DocumentDate
		,@lngCustTrans
		,NULL
		,CASE 
			WHEN @IsForeign = 0
				THEN (
						SELECT OrigAmountIncl
						FROM @tblTemp
						)
			ELSE (
					SELECT OrigAmountIncl
					FROM @tblTemp
					) * @CustExchangeRate
			END
		,@PL_CustTransDTType
		,CASE 
			WHEN @IsForeign = 0
				THEN (
						SELECT OrigAmountIncl
						FROM @tblTemp
						)
			ELSE (
					SELECT OrigAmountIncl
					FROM @tblTemp
					) * @CustExchangeRate
			END
		,0
		,NULL
		,CASE 
			WHEN @IsForeign = 0
				THEN 0
			ELSE (
					SELECT OrigAmountIncl
					FROM @tblTemp
					)
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN 0
			ELSE (
					SELECT OrigAmountIncl
					FROM @tblTemp
					)
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN 0
			ELSE 1
			END
		)

	DECLARE @lngCustPayID AS BIGINT = (
			SELECT ISNULL(MAX(lngCustPayID), 0) + 1
			FROM tblCustPay
			)

	INSERT INTO tblCustPay
	VALUES (
		@lngCustPayID
		,GETDATE()
		,@DocumentDate
		,@PL_oCurrentUser
		,@lngJourID
		,@CustNUmber
		,@SourceDoc
		,@Account
		,CASE 
			WHEN @IsForeign = 0
				THEN @Total
			ELSE @Total * @CustExchangeRate
			END
		,0
		,0
		,@Comment
		,@PaidByIndex
		,CASE 
			WHEN @IsForeign = 0
				THEN @Deposit
			ELSE @Deposit * @CustExchangeRate
			END
		,@DeptAccount
		,CASE 
			WHEN @IsForeign = 0
				THEN @PL_HomeCurrencyCode
			ELSE @CustomerCurrencyCode
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN 0
			ELSE 1
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN 1
			ELSE round(@CustExchangeRate, 4)
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN 0
			ELSE @Total
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN 0
			ELSE @Deposit
			END
		,0
		,@BankIsForiegn
		,CASE 
			WHEN @BankIsForiegn = 0
				THEN @BankExchange
			ELSE 1
			END
		,CASE 
			WHEN @BankIsForiegn = 0
				THEN @BankCurrency
			ELSE @PL_HomeCurrencyCode
			END
		,CASE 
			WHEN @BankIsForiegn = 0
				THEN @BankAmount * @BankExchange
			ELSE @BankAmount
			END
		,CASE 
			WHEN @BankIsForiegn = 0
				THEN @BankAmount
			ELSE 0
			END
		,@WithholdTax
		,@WithholdTax
		,@WithholdTaxAmt
		,CASE 
			WHEN @IsForeign = 0
				THEN @WithholdTaxAmt
			ELSE round(@WithholdTaxAmt * @BankExchange, 2)
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN 0
			ELSE @WithholdTaxAmt
			END
		,0
		)

	--'If new deposit is present, must do entry for it
	IF @Deposit != 0
	BEGIN
		SET @lngCustTrans = (
				SELECT ISNULL(MAX(lngCustTrID), 0) + 1
				FROM tblCustTrans
				)

		INSERT INTO tblCustTrans
		VALUES (
			@lngCustTrans
			,@CustNUmber
			,getdate()
			,@DocumentDate
			,@PL_oCurrentUser
			,NULL
			,@Comment
			,''
			,@PL_CustTransType
			,CASE 
				WHEN @IsForeign = 0
					THEN @Deposit * (- 1)
				ELSE round(@Deposit * @CustExchangeRate, 2) * (- 1)
				END
			,CASE 
				WHEN @IsForeign = 0
					THEN 0
				ELSE @Deposit * (- 1)
				END
			,CASE 
				WHEN @IsForeign = 0
					THEN @PL_HomeCurrencyCode
				ELSE @CustomerCurrencyCode
				END
			,CASE 
				WHEN @IsForeign = 0
					THEN 0
				ELSE 1
				END
			,CASE 
				WHEN @IsForeign = 0
					THEN 1
				ELSE @CustExchangeRate
				END
			,0
			,NULL
			,0
			,0
			,0
			,0
			,@DocumentDate
			,@DocumentDate
			,NULL
			,NULL
			)

		INSERT INTO tblCustTransDT (
			dteJournalDate
			,lngCustTrID
			,lngCustPayID
			,decAmount
			,intTransType
			,decAmtOwingAtTime
			,bitReversed
			,dteIntDate
			,decAmountF
			,decAmtOwingAtTimeF
			,bitIsForeign
			)
		VALUES (
			@DocumentDate
			,@lngCustTrans
			,@lngCustPayID
			,CASE 
				WHEN @IsForeign = 0
					THEN @Deposit * (- 1)
				ELSE ROUND(@Deposit * @CustExchangeRate, 2) * (- 1)
				END
			,@PL_CustTransDTType
			,CASE 
				WHEN @IsForeign = 0
					THEN @Deposit * (- 1)
				ELSE ROUND(@Deposit * @CustExchangeRate, 2) * (- 1)
				END
			,0
			,NULL
			,CASE 
				WHEN @IsForeign = 0
					THEN 0
				ELSE @Deposit * (- 1)
				END
			,CASE 
				WHEN @IsForeign = 0
					THEN 0
				ELSE @Deposit * (- 1)
				END
			,CASE 
				WHEN @IsForeign = 0
					THEN 0
				ELSE 1
				END
			)

		INSERT INTO @tblTemp (
			lngCustTrans
			,decPayAmt
			,decPayAmtH
			,decDiscAmt
			)
		VALUES (
			(
				SELECT LngID
				FROM @tblReceiptGrid
				)
			,(
				SELECT ReceiptAmout
				FROM @tblReceiptGrid
				WHERE ReceiptAmout != 0
				)
			,(
				SELECT sum(ActHomeAmt + ActPrepayAmt)
				FROM @tblReceiptGrid
				)
			,(
				SELECT DiscTaken
				FROM @tblReceiptGrid
				)
			)

		INSERT INTO tblCustTransDT (
			dteJournalDate
			,lngCustTrID
			,lngCustPayID
			,decAmount
			,intTransType
			,decAmtOwingAtTime
			,bitReversed
			,dteIntDate
			,decAmountF
			,decAmtOwingAtTimeF
			,bitIsForeign
			)
		VALUES (
			@DocumentDate
			,@lngCustTrans
			,@lngCustPayID
			,CASE 
				WHEN @IsForeign = 0
					THEN (
							SELECT decPayAmt * (- 1)
							FROM @tblTemp
							)
				ELSE (
						SELECT decPayAmtH - (
								SELECT (decDiscAmt * @CustExchangeRate)
								FROM @tblTemp
								) * (- 1)
						FROM @tblTemp
						)
				END
			,@PL_CustTransDTType
			,CASE 
				WHEN @IsForeign = 0
					THEN (
							SELECT DueAmountIncl
							FROM @tblReceiptGrid
							)
				ELSE (
						SELECT OrigHome
						FROM @tblReceiptGrid
						)
				END
			,0
			,NULL
			,CASE 
				WHEN @IsForeign = 0
					THEN 0
				ELSE (
						SELECT decPayAmt * (- 1)
						FROM @tblTemp
						)
				END
			,CASE 
				WHEN @IsForeign = 0
					THEN 0
				ELSE (
						SELECT DueAmountIncl
						FROM @tblReceiptGrid
						)
				END
			,CASE 
				WHEN @IsForeign = 0
					THEN 0
				ELSE 1
				END
			)

		INSERT INTO @tblTemp (decDiscAmt)
		VALUES (
			(
				SELECT DiscTaken
				FROM @tblReceiptGrid
				WHERE DiscTaken != 0
				)
			)

		INSERT INTO tblCustTransDT (
			dteJournalDate
			,lngCustTrID
			,lngCustPayID
			,decAmount
			,intTransType
			,decAmtOwingAtTime
			,bitReversed
			,dteIntDate
			,decAmountF
			,decAmtOwingAtTimeF
			,bitIsForeign
			)
		VALUES (
			@DocumentDate
			,@lngCustTrans
			,@lngCustPayID
			,CASE 
				WHEN @IsForeign = 0
					THEN (
							SELECT decDiscAmt * (- 1)
							FROM @tblTemp
							)
				ELSE (
						SELECT (decDiscAmt * @CustExchangeRate * (- 1))
						FROM @tblTemp
						)
				END
			,@PL_CustTransDTType
			,CASE 
				WHEN @IsForeign = 0
					THEN (
							SELECT DueAmountIncl
							FROM @tblReceiptGrid
							)
				ELSE (
						SELECT OrigHome
						FROM @tblReceiptGrid
						)
				END
			,0
			,NULL
			,CASE 
				WHEN @IsForeign = 0
					THEN 0
				ELSE (
						SELECT decDiscAmt * (- 1)
						FROM @tblTemp
						)
				END
			,CASE 
				WHEN @IsForeign = 0
					THEN 0
				ELSE (
						SELECT DueAmountIncl
						FROM @tblReceiptGrid
						)
				END
			,CASE 
				WHEN @IsForeign = 0
					THEN 0
				ELSE 1
				END
			)
	END

	UPDATE tblCustTrans
	SET decDiscAvail = decDiscAvail - CASE 
			WHEN @IsForeign = 0
				THEN (
						SELECT decDiscAmt
						FROM @tblTemp
						)
			ELSE (
					SELECT ROUND((decDiscAmt * @CustExchangeRate), 2)
					FROM @tblTemp
					)
			END
		,decDiscAvailF = decDiscAvailF - (
			CASE 
				WHEN @IsForeign = 0
					THEN 0
				ELSE (
						SELECT decDiscAmt
						FROM @tblTemp
						)
				END
			)
	WHERE lngCustTrID = @lngCustTrans

	-- 'Fix for discounts available could be wrong way (user gave a larger discount than available)
	UPDATE tblCustTrans
	SET decDiscAvail = 0
	WHERE (
			decDiscAvail < 0
			AND decInvAmount > 0
			)
		OR (
			decDiscAvail > 0
			AND decInvAmount < 0
			)

	UPDATE tblCustTrans
	SET decDiscAvailF = 0
	WHERE (
			decDiscAvailF < 0
			AND decInvAmountF > 0
			)
		OR (
			decDiscAvailF > 0
			AND decInvAmountF < 0
			)

	--'DO TAXES ENTRY IF DISCOUNT IS PRESENT AND TAXES ARE SETUP
	DECLARE @lngTaxID AS BIGINT = (
			SELECT ISNULL(MAX(lngTaxID), 0) + 1
			FROM tblTax
			)

	INSERT INTO tblTax
	VALUES (
		@lngTaxID
		,GETDATE()
		,@DocumentDate
		,@PL_oCurrentUser
		,@lngCustPayID
		,@lngJourID
		,@CustNUmber
		,'Discount Adj'
		,CASE 
			WHEN @IsForeign = 0
				THEN @ReturnSubTotal
			ELSE ROUND(@ReturnSubTotal * @CustExchangeRate, 2)
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN @ReturnTotalTax
			ELSE ROUND(@ReturnTotalTax * @CustExchangeRate, 2)
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN @ReturnTotal
			ELSE (
					SELECT ROUND((@ReturnTotalTax * @CustExchangeRate + @ReturnSubTotal * @CustExchangeRate), 2)
					FROM @tblTemp
					)
			END
		,@PL_TaxModule
		,@PL_TaxType
		,CASE 
			WHEN @IsForeign = 0
				THEN @PL_HomeCurrencyCode
			ELSE @CustomerCurrencyCode
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN 0
			ELSE 1
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN 0
			ELSE @ReturnSubTotal
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN 0
			ELSE @ReturnTotalTax
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN 0
			ELSE @ReturnTotal
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN 1
			ELSE @CustExchangeRate
			END
		,@DeptAccount
		)

	
	DECLARE @tblTaxLine AS TABLE (
		DefinitionName NVARCHAR(100)
		,[Status] INT
		,Rate DECIMAL
		,Refundable BIT
		,ReturnAmountSubjectToTax DECIMAL
		,ReturnTaxAmount DECIMAL
		,ReturnTotalTax DECIMAL
		)

	INSERT INTO @tblTaxLine (
		DefinitionName
		,[Status]
		,Rate
		,Refundable
		,ReturnAmountSubjectToTax
		,ReturnTaxAmount
		,ReturnTotalTax
		)
	SELECT COL01
		,COL02
		,COL03
		,COL04
		,COL05
		,COL06
		,COL07
	FROM @taxLineTableType

	INSERT INTO tblTaxDT (
		lngTaxID
		,intLine
		,strTaxCode
		,strTaxName
		,intStatus
		,decRate
		,bitRefundable
		,intType
		,decAmtSubTax
		,decTaxAmt
		,decTotOthTax
		,strCurrency
		,bitIsForeign
		,decAmtSubTaxF
		,decTaxAmtF
		,decTotOthTaxF
		)
	VALUES (
		@lngTaxID
		,1
		,@DefCodeByCustomer
		,(
			SELECT DefinitionName
			FROM @tblTaxLine
			)
		,(
			SELECT STATUS
			FROM @tblTaxLine
			)
		,(
			SELECT Rate
			FROM @tblTaxLine
			)
		,(
			SELECT Refundable
			FROM @tblTaxLine
			)
		,@PL_TaxType
		,CASE 
			WHEN @IsForeign = 0
				THEN (
						SELECT ReturnAmountSubjectToTax
						FROM @tblTaxLine
						)
			ELSE (
					SELECT ROUND(ReturnAmountSubjectToTax * @CustExchangeRate, 2)
					FROM @tblTaxLine
					)
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN (
						SELECT ReturnTaxAmount
						FROM @tblTaxLine
						)
			ELSE (
					SELECT ROUND(ReturnTaxAmount * @CustExchangeRate, 2)
					FROM @tblTaxLine
					)
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN (
						SELECT ReturnTotalTax - ReturnTaxAmount
						FROM @tblTaxLine
						)
			ELSE (
					SELECT ROUND((ReturnTotalTax - ReturnTaxAmount) * @CustExchangeRate, 2)
					FROM @tblTaxLine
					)
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN @PL_HomeCurrencyCode
			ELSE @CustomerCurrencyCode
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN 1
			ELSE @CustExchangeRate
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN 1
			ELSE (
					SELECT ReturnAmountSubjectToTax
					FROM @tblTaxLine
					)
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN 1
			ELSE (
					SELECT ReturnTaxAmount
					FROM @tblTaxLine
					)
			END
		,CASE 
			WHEN @IsForeign = 0
				THEN 1
			ELSE (
					SELECT ReturnTotalTax - ReturnTaxAmount
					FROM @tblTaxLine
					)
			END
		)

	IF @FromPOS = 1
	BEGIN
		-- 'Update Drawer Header Table (summary amounts)
		UPDATE tblPOSDrs
		SET decCashBal = decCashBal + @Total
			,decCkBal = decCkBal + 0
			,decCCBal = decCCBal + 0
			,decGiftCouBal = decGiftCouBal + 0
			,decAccountBal = decAccountBal + 0
			,decTotalSales = decTotalSales + @Total
			,decCurrentVal = decCurrentVal + @Total
		WHERE uidSessionID = @POSDrawerSessionID

		INSERT INTO tblPOSDrsSplitPmt
		VALUES (
			@POSDrawerSessionID
			,@SelectedPaidBy
			,@Account
			,@Total
			,NULL
			,NULL
			,NULL
			,NULL
			)

		-- 'Update drawer detail table
		INSERT INTO tblPOSDrsDT (
			uidSessionID
			,dteTimeStamp
			,strInvDocID
			,strCustName
			,decCash
			,decCk
			,decCC
			,decGiftCoup
			,decAccount
			,decDrop
			,strDropUser
			,decOvSht
			)
		VALUES (
			@POSDrawerSessionID
			,GetDate()
			,@SourceDoc
			,@CustName
			,@Total
			,0
			,0
			,0
			,0
			,0
			,''
			,0
			)
	END

	-- 'Invoice and Sales Orders
	DECLARE @CustList VARCHAR(200)

	SET @CustList = ''

	SELECT @CustList = CASE 
			WHEN @CustList = ''
				THEN @CustNUmber
			ELSE @CustList + coalesce(',' + CustName, '')
			END
	FROM @tblReceiptGrid

	UPDATE tblCustomers
	SET decBalDue = (
			SELECT SUM(decAmount)
			FROM (
				SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) AS decAmount
				FROM tblCustTrans
				INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
				WHERE tblCustTrans.strCustName = tblCustomers.strCustName
					AND tblCustTransDT.bitReversed = 0
					AND (
						tblCustTrans.strOrdDocID IS NULL
						OR (
							tblCustTrans.strInvDocID IS NOT NULL
							AND tblCustTrans.strOrdDocID IS NOT NULL
							)
						OR (
							tblCustTrans.strOrdDocID IS NOT NULL
							AND tblCustTransDT.lngCustPayID IS NOT NULL
							)
						)
				) AS decAmount
			)
		,decYTDPurch = (
			SELECT ISNULL(SUM(decTotal), 0)
			FROM tblInvoiceDoc
			WHERE strCustName = tblCustomers.strCustName
				AND bitHistoryTrans = 0
				AND dteJournalDate >= @CurrentYearBegan
			)
		,decBalDueF = (
			SELECT SUM(decAmountF)
			FROM (
				SELECT ISNULL(SUM(tblCustTransDT.decAmountF), 0) AS decAmountF
				FROM tblCustTrans
				INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
				WHERE tblCustTrans.strCustName = tblCustomers.strCustName
					AND tblCustTransDT.bitReversed = 0
					AND (
						tblCustTrans.strOrdDocID IS NULL
						OR (
							tblCustTrans.strInvDocID IS NOT NULL
							AND tblCustTrans.strOrdDocID IS NOT NULL
							)
						OR (
							tblCustTrans.strOrdDocID IS NOT NULL
							AND tblCustTransDT.lngCustPayID IS NOT NULL
							)
						)
				) AS decAmountF
			)
		,decYTDPurchF = (
			SELECT ISNULL(SUM(decTotalF), 0)
			FROM tblInvoiceDoc
			WHERE strCustName = tblCustomers.strCustName
				AND bitHistoryTrans = 0
				AND dteJournalDate >= @CurrentYearBegan
			)
		,dteUpdated = GetDate()
	WHERE strCustName IN (
			SELECT DISTINCT *
			FROM fnSplitStringAsTable(@CustList, ',')
			)

	UPDATE tblCustTrans
	SET bitSettled = 1
	WHERE bitSettled = 0
		AND lngCustTrID IN (
			SELECT lngCustTrID
			FROM tblCustTransDT
			WHERE bitReversed = 0
			GROUP BY lngCustTrID
			HAVING SUM(decAmount) = 0
				AND SUM(decAmountF) = 0
			)

	UPDATE tblCustTrans
	SET bitSettled = 0
	WHERE bitSettled = 1
		AND lngCustTrID IN (
			SELECT lngCustTrID
			FROM tblCustTransDT
			WHERE bitReversed = 0
			GROUP BY lngCustTrID
			HAVING SUM(decAmount) <> 0
				OR SUM(decAmountF) <> 0
			)

	UPDATE tblLastIDs
	SET lngRCNumber = @NextRCNumber
END
GO
/****** Object:  StoredProcedure [dbo].[RecordProjectAllocationData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[RecordProjectAllocationData]
(
	@ProjectAllocationData ProjectAllocationTableType READONLY,
	@DocumentType TINYINT,
	@DocumentNumber VARCHAR(50),
	@PaymentType TINYINT,
	@ReceiptType TINYINT
)
AS
BEGIN

	IF (@DocumentType = 8 OR @DocumentType = 0 OR @DocumentType = 1 OR @DocumentType = 20) --CreditRequest / SalesQuote / SalesOrder / Lay-By
	BEGIN
		DELETE FROM tblOrderDocDTPrj WHERE strOrdDocID = @DocumentNumber
		INSERT INTO tblOrderDocDTPrj (strOrdDocID, intLineNo, strProjNumber,strStage) 
		SELECT @DocumentNumber, LineNumber, ProjectNumber , Stage FROM @ProjectAllocationData
	END
	ELSE IF (@DocumentType = 2 OR @DocumentType = 11 OR @DocumentType = 23) --SalesInvoice / CreditNote / InvoiceJob
	BEGIN
		DELETE FROM tblInvoiceDocDTPrj WHERE strInvDocID = @DocumentNumber
		INSERT INTO tblInvoiceDocDTPrj (strInvDocID, intLineNo, strProjNumber ,strStage) 
		SELECT @DocumentNumber, LineNumber, ProjectNumber , Stage FROM @ProjectAllocationData
	END	
	ELSE IF (@DocumentType = 3 OR @DocumentType = 4) --Requisition / PurchaseOrder
	BEGIN
		DELETE FROM tblOrderDocPDTPrj WHERE strOrdPDocID = @DocumentNumber
		INSERT INTO tblOrderDocPDTPrj (strOrdPDocID, intLineNo, strProjNumber,strStage)
		SELECT @DocumentNumber, LineNumber, ProjectNumber,Stage FROM @ProjectAllocationData
	END	
	ELSE IF (@DocumentType = 5) --GRV
	BEGIN
		DELETE FROM tblOrderDocPGDTPrj WHERE strOrdPGDocID = @DocumentNumber
		INSERT INTO tblOrderDocPGDTPrj (strOrdPGDocID, intLineNo, strProjNumber,strStage)
		SELECT @DocumentNumber, LineNumber, ProjectNumber ,Stage FROM @ProjectAllocationData
	END
	ELSE IF (@DocumentType = 6 OR @DocumentType = 12) --PurchaseInvoice / PurchaseReturns
	BEGIN
		DELETE FROM tblInvoiceDocPDTPrj WHERE strInvPDocID = @DocumentNumber
		INSERT INTO tblInvoiceDocPDTPrj (strInvPDocID, intLineNo, strProjNumber,strStage)
		SELECT @DocumentNumber, LineNumber, ProjectNumber,Stage FROM @ProjectAllocationData
	END	
	ELSE IF (@DocumentType = 7) --FreehandQuote
	BEGIN
		DELETE FROM tblOrderDocQDTPrj WHERE strOrdDocID = @DocumentNumber
		INSERT INTO tblOrderDocQDTPrj (strOrdDocID, intLineNo, strProjNumber,strStage)
		SELECT @DocumentNumber, LineNumber, ProjectNumber,Stage FROM @ProjectAllocationData
	END
	ELSE IF (@DocumentType = 9) --PaymentJournal
	BEGIN
		DELETE FROM tblJournalEntryDocCBDTPrj WHERE strJEDocID = @DocumentNumber AND intType = @PaymentType
		INSERT INTO tblJournalEntryDocCBDTPrj (strJEDocID, intType, intGLNumber, intLineNo, strProjNumber,strStage) 
		SELECT @DocumentNumber, @PaymentType, GLNumber, LineNumber, ProjectNumber,Stage FROM @ProjectAllocationData
	END
	ELSE IF (@DocumentType = 10) --ReceiptJournal
	BEGIN
		DELETE FROM tblJournalEntryDocCBDTPrj WHERE strJEDocID = @DocumentNumber AND intType = @ReceiptType
		INSERT INTO tblJournalEntryDocCBDTPrj (strJEDocID, intType, intGLNumber, intLineNo, strProjNumber,strStage) 
		SELECT @DocumentNumber, @ReceiptType, GLNumber, LineNumber, ProjectNumber,Stage FROM @ProjectAllocationData
	END
	ELSE IF (@DocumentType = 13) --JournalEntry
	BEGIN
		DELETE FROM tblJournalEntryDocDTPrj WHERE strJEDocID = @DocumentNumber
		INSERT INTO tblJournalEntryDocDTPrj (strJEDocID, intLineNo, intModule, intGLNumber, strProjNumber,strStage)
		SELECT @DocumentNumber, LineNumber, Module, GLNumber, ProjectNumber,Stage FROM @ProjectAllocationData
	END
	ELSE IF (@DocumentType = 14) --DeliveryAdvice
	BEGIN
		DELETE FROM tblOrderDocDADTPrj WHERE strOrdDADocID = @DocumentNumber
		INSERT INTO tblOrderDocDADTPrj (strOrdDADocID, intLineNo, strProjNumber,strStage)
		SELECT @DocumentNumber, LineNumber, ProjectNumber,Stage FROM @ProjectAllocationData
	END
	ELSE IF (@DocumentType = 15) --Adjustment
	BEGIN
		DELETE FROM tblInvAdjDocDTPrj WHERE strAdjDocID = @DocumentNumber
		INSERT INTO tblInvAdjDocDTPrj (strAdjDocID, intLineNo, strProjNumber,strStage) 
		SELECT @DocumentNumber, LineNumber, ProjectNumber,Stage FROM @ProjectAllocationData
	END
	ELSE IF (@DocumentType = 16) --InternalRequisition
	BEGIN
		DELETE FROM tblInvIntReqDocDTPrj WHERE strInvIntReqDocID = @DocumentNumber
		INSERT INTO tblInvIntReqDocDTPrj (strInvIntReqDocID, intLineNo, strProjNumber,strStage)
		SELECT @DocumentNumber, LineNumber, ProjectNumber,Stage FROM @ProjectAllocationData
	END
	ELSE IF (@DocumentType = 17) --IssueRequisition
	BEGIN
		DELETE FROM tblInvIssReqDocDTPrj WHERE strInvIssReqDocID = @DocumentNumber
		INSERT INTO tblInvIssReqDocDTPrj (strInvIssReqDocID, intLineNo, strProjNumber,strStage) 
		SELECT @DocumentNumber, LineNumber, ProjectNumber,Stage FROM @ProjectAllocationData
	END
	ELSE IF (@DocumentType = 18) --Repackaging
	BEGIN
		DELETE FROM tblInvRepackDocDTPrj WHERE strRepackDocID = @DocumentNumber
		INSERT INTO tblInvRepackDocDTPrj (strRepackDocID, intLineNo, strProjNumber,strStage)
		SELECT @DocumentNumber, LineNumber, ProjectNumber,Stage FROM @ProjectAllocationData
	END
	ELSE IF (@DocumentType = 19) --BankManager
	BEGIN
		DELETE FROM tblBankManagerBatchDTPrj WHERE strBMDocID = @DocumentNumber
		INSERT INTO tblBankManagerBatchDTPrj (strBMDocID,intLineNo,strProjNumber,strStage)
		SELECT @DocumentNumber, LineNumber, ProjectNumber,Stage FROM @ProjectAllocationData

        INSERT  INTO tblJournalEntryDocCBDTPrj
                ( strJEDocID ,
                  intType ,
                  intGLNumber ,
                  intLineNo ,
                  strProjNumber,
				  strStage
                )
                SELECT  tblBankManagerBatchDT.strJEDocID ,
                        tblBankManagerBatchDT.intJEType ,
                        tblBankManagerBatchDT.strCuVeGeInID ,
                        tblBankManagerBatchDT.intJELineNo ,
                        tblBankManagerBatchDTPrj.strProjNumber,
						tblBankManagerBatchDTPrj.strStage
                FROM    tblBankManagerBatchDT
                        INNER JOIN tblBankManagerBatchDTPrj ON tblBankManagerBatchDT.strBMDocID = tblBankManagerBatchDTPrj.strBMDocID
                                                              AND tblBankManagerBatchDT.intLineNo = tblBankManagerBatchDTPrj.intLineNo
                WHERE   ( tblBankManagerBatchDTPrj.strBMDocID = @DocumentNumber )
	END
	ELSE IF (@DocumentType = 21 or @DocumentType = 22) --ProcessJob / Quotation  
	BEGIN
		DELETE FROM tblWSOrderDocDTPrj WHERE strOrdDocID = @DocumentNumber
		INSERT INTO tblWSOrderDocDTPrj (strOrdDocID, intLineNo, strProjNumber,strStage) 
		SELECT @DocumentNumber, LineNumber, ProjectNumber , Stage FROM @ProjectAllocationData
	END

	ELSE IF (@DocumentType = 24) --Manufacturing ProcessJob
	BEGIN
		DELETE FROM tblManJobPrj WHERE strJBDocID = @DocumentNumber
		INSERT INTO tblManJobPrj (strJBDocID,intType,strWCCode,strPartNumber,intLineNo,strProjNumber,strStage)
		SELECT @DocumentNumber, IntType, WCCode, GLNumber,LineNumber, ProjectNumber , Stage FROM @ProjectAllocationData
	END

	ELSE IF (@DocumentType = 25) --Issue Work In Progress 
	BEGIN
		DELETE FROM tblManWIPPrj WHERE strWIPDocID = @DocumentNumber
		INSERT INTO tblManWIPPrj (strWIPDocID,intType,strPartNumber,intLineNo,strProjNumber,strStage)
		SELECT @DocumentNumber, IntType,GLNumber, LineNumber, ProjectNumber , Stage FROM @ProjectAllocationData
	END

	ELSE IF (@DocumentType = 26) --CloseJob
	BEGIN
		DELETE FROM tblManJobClosePrj WHERE strJBDocID = @DocumentNumber
		INSERT INTO tblManJobClosePrj (strJBDocID,lngJBID,strProjNumber,strStage)
		SELECT @DocumentNumber, LngID, ProjectNumber , Stage FROM @ProjectAllocationData
	END

END
GO
/****** Object:  StoredProcedure [dbo].[RecordQuotation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[RecordQuotation]  
(  
    @IsUpdate bit,  
    @TempGuidForAttachment nvarchar(2000),  
    @tblProcessDoc ProcessDocTableType READONLY,  
    @tblProcessDocDT CommonTableTypeBig READONLY,  
    @Module Int,
	@IsPJToWQ bit,  
    @ExistingJobNumber nvarchar(30),  
    @IsWQToPJ bit,  
    @ExistingQuoteNumber nvarchar(30),  
    @JobStatus int,  
    @StatusTypeCode nvarchar(20),  
    @IsFromInvoiceJob bit  
)  
AS  
BEGIN  
  
 IF @IsUpdate = 0  
 BEGIN  
  INSERT INTO tblWSProcessDoc  
  (  
      ProcessDocID  
   ,ServiceableItemCode  
   ,JobTemplateID  
   ,OwnerCode  
   ,CustomerCode  
   ,CustomerDetails  
   ,SystemDate  
   ,DocumentDate  
   ,RequiredDate  
   ,ReferenceNumber  
   ,AddInfo  
   ,Technician  
   ,SalesName  
   ,Dept  
   ,DocType  
   ,InventoryTotal  
   ,LabourTotal  
   ,BuyOutsTotal  
   ,RecoveryTotal  
   ,InventoryTotalF  
   ,LabourTotalF  
   ,BuyOutsTotalF  
   ,RecoveryTotalF  
   ,Term  
   ,SubTotal  
   ,VAT  
   ,Total  
   ,IsForeign  
   ,SubTotalF  
   ,VATF  
   ,TotalF  
   ,IsFromQuote  
   ,QuoteDocID  
   ,Notes  
   ,Printed  
   ,Emailed  
   ,Cleared  
   ,Currency  
   ,DiscPerc  
   ,DiscAmt  
   ,DiscAmtF  
   ,RevisionNumber  
   ,Exchange  
   ,SubFormated  
   ,VATFormatted  
   ,TotFormatted  
   ,DiscFormatted  
   ,CreatedDate  
   ,UpdatedDate  
   ,CreatedBy  
   ,UpdatedBy  
   ,SOReasonCode  
   ,DelMethodCode  
   ,TotalWeight  
   ,TotalVolWeight  
   ,DeliveryCost  
   ,DeliveryCostF  
   ,DeliveryCostFormatted  
   ,JobStatusType  
   ,StatusTypeCode
   ,VATNo
	,ShipTo
  )  
  SELECT  
    ProcessDocID  
   ,ServiceableItemCode  
   ,CASE JobTemplateID WHEN 0 THEN null ELSE JobTemplateID END   -- TODO: it will change from table typeJobTemplateCode  
   ,OwnerCode  
   ,CustomerCode  
   ,CustomerDetails  
   ,GETDATE()  
   ,DocumentDate  
   ,RequiredDate  
   ,ReferenceNumber  
   ,AddInfo  
   ,CASE Technician WHEN '' THEN null ELSE Technician END  
   ,CASE SalesName WHEN '' THEN null ELSE SalesName END --,strSalesName   
   ,CASE Dept WHEN 0 THEN null ELSE Dept END --,intDept    
   ,DocType  
   ,InventoryTotal  
   ,LabourTotal  
   ,BuyOutsTotal  
   ,RecoveryTotal  
   ,InventoryTotalF  
   ,LabourTotalF  
   ,BuyOutsTotalF  
   ,RecoveryTotalF  
   ,CASE Term WHEN '' THEN null ELSE Term END --,strTerm   
   ,SubTotal  
   ,VAT  
   ,Total  
   ,IsForeign  
   ,SubTotalF  
   ,VATF  
   ,TotalF  
   ,0 --,IsFromQuote  
   ,NULL --,QuoteDocID  
   ,Notes  
   ,Printed  
   ,Emailed  
   ,Cleared  
   ,Currency  
   ,DiscPerc  
   ,DiscAmt  
   ,DiscAmtF  
   ,RevisionNumber  
   ,Exchange  
   ,SubFormated  
   ,VATFormatted  
   ,TotFormatted  
   ,DiscFormatted  
   ,GETDATE()  
   ,GETDATE()  
   ,CreatedBy  
   ,UpdatedBy  
   ,SOReasonCode  
   ,CASE DelMethodCode WHEN '' THEN null ELSE DelMethodCode END     
   ,TotalWeight  
   ,TotalVolWeight  
   ,DeliveryCost  
   ,DeliveryCostF  
   ,DeliveryCostFormatted
   ,@JobStatus  
   ,@StatusTypeCode
   ,VATNo
   ,ShipTo
  FROM @tblProcessDoc  
  
  DECLARE @TransactionType AS int  
  SELECT @TransactionType = DocType FROM @tblProcessDoc  
  IF(@TransactionType = 1) --Quotation  
   UPDATE tblLastIDs set lngWQNumber += 1  
  ELSE IF(@TransactionType = 2) -- Process Job  
   UPDATE tblLastIDs set lngPJBNumber += 1  
  
 END  
 ELSE  
 BEGIN  
  UPDATE tblWSProcessDoc  
  SET   
   --ProcessDocID   = t.ProcessDocID  
   ServiceableItemCode = t.ServiceableItemCode  
   ,JobTemplateID = CASE t.JobTemplateID WHEN 0 THEN null ELSE t.JobTemplateID END  
   ,OwnerCode = t.OwnerCode  
   ,CustomerCode = t.CustomerCode  
   ,CustomerDetails = t.CustomerDetails  
   --,SystemDate = t.SystemDate  
   ,DocumentDate = t.DocumentDate  
   ,RequiredDate = t.RequiredDate  
   ,ReferenceNumber = t.ReferenceNumber  
   ,AddInfo = t.AddInfo  
   ,Technician = CASE t.Technician WHEN '' THEN null ELSE t.Technician END  
   ,SalesName = CASE t.SalesName WHEN '' THEN null ELSE t.SalesName END  
   ,Dept = CASE t.Dept when 0 THEN null ELSE t.Dept END  
   ,DocType = t.DocType  
   ,InventoryTotal = t.InventoryTotal  
   ,LabourTotal = t.LabourTotal  
   ,BuyOutsTotal = t.BuyOutsTotal  
   ,RecoveryTotal = t.RecoveryTotal  
   ,InventoryTotalF = t.InventoryTotalF  
   ,LabourTotalF = t.LabourTotalF  
   ,BuyOutsTotalF = t.BuyOutsTotalF  
   ,RecoveryTotalF = t.RecoveryTotalF  
   ,Term = CASE t.Term WHEN '' THEN null ELSE t.Term END   
   ,SubTotal = t.SubTotal  
   ,VAT = t.VAT  
   ,Total = t.Total  
   ,IsForeign = t.IsForeign  
   ,SubTotalF = t.SubTotalF  
   ,VATF = t.VATF  
   ,TotalF = t.TotalF  
   --,IsFromQuote = 0 --,IsFromQuote  
   --,QuoteDocID = NULL --,QuoteDocID  
   ,Notes = t.Notes  
   --,Printed = t.Printed  
   --,Emailed = t.Emailed  
   --,Cleared = t.Cleared  
   ,Currency = t.Currency  
   ,DiscPerc = t.DiscPerc  
   ,DiscAmt = t.DiscAmt  
   ,DiscAmtF = t.DiscAmtF  
   ,RevisionNumber = t.RevisionNumber  
   ,Exchange = t.Exchange  
   ,SubFormated = t.SubFormated  
   ,VATFormatted = t.VATFormatted  
   ,TotFormatted = t.TotFormatted  
   ,DiscFormatted = t.DiscFormatted  
   ,UpdatedDate = GETDATE()  
   ,UpdatedBy = t.UpdatedBy  
   ,SOReasonCode = t.SOReasonCode  
   ,DelMethodCode = CASE t.DelMethodCode WHEN '' THEN null ELSE t.DelMethodCode END      
   ,TotalWeight = t.TotalWeight  
   ,TotalVolWeight = t.TotalVolWeight  
   ,DeliveryCost = t.DeliveryCost  
   ,DeliveryCostF = t.DeliveryCostF  
   ,DeliveryCostFormatted = t.DeliveryCostFormatted  
   ,StatusTypeCode = @StatusTypeCode
   ,VATNo = t.VATNo
   ,ShipTo = t.ShipTo
  FROM   
   @tblProcessDoc t  
  WHERE  
   tblWSProcessDoc.ProcessDocID = t.ProcessDocID  
  
 END  
  
 DELETE FROM tblWSProcessDocDT WHERE ProcessDocID = (SELECT ProcessDocID FROM @tblProcessDoc)  
  
 DECLARE @ProcessDocIDForInvoiceJob as nvarchar(50)  
 IF(@IsFromInvoiceJob = 1)  
 BEGIN  
  SET @ProcessDocIDForInvoiceJob = (SELECT ProcessDocID FROM @tblProcessDoc)  
 END  
 ELSE  
 BEGIN  
  SELECT @ProcessDocIDForInvoiceJob = CONVERT(NVARCHAR(50), ISNULL(COL02, '')) FROM @tblProcessDocDT --COL02 = ProcessDocID  
 END  
  
  
 INSERT INTO tblWSProcessDocDT  
  (  
    ProcessDocID  
   ,[LineNo]  
   ,PartNumber  
   ,Location  
   ,PartDesc  
   ,QuotedQty  
   ,JobQty  
   ,Unit  
   ,ItemType  
   ,TaxCode  
   ,Currency  
   ,IsForeign  
   ,LineDiscPerc  
   ,LineDiscAmt  
   ,LineDiscAmtF  
   ,IsDiscountTax  
   ,StockQty  
   ,StockUnit  
   ,StockQtyRemain  
   ,PriceEaExc  
   ,LineTotExc  
   ,LineTaxAmt  
   ,PriceEaInc  
   ,LineTotInc  
   ,PriceEaExcF  
   ,LineTotExcF  
   ,LineTaxAmtF  
   ,EaIncTaxF  
   ,TotIncTaxF  
   ,CreatedDate  
   ,UpdatedDate  
   ,CreatedBy  
   ,UpdatedBy  
   ,IsDelCost  
   ,BillingMethod  
   ,QtyRemaining  
   ,TaxObj  
   ,SalesName  
   ,PartExtendedDesc  
   ,BuyoutCost  
   ,ItemWeight  
   ,VolumetricWeight  
   ,TransactionFieldID  
   --,LastPPUnit  
   --,StandardCost  
  )  
  SELECT  
    @ProcessDocIDForInvoiceJob  
   ,CONVERT(INT, ISNULL(COL03, ''))--,COL03 --,[LineNo]  
   ,CONVERT(NVARCHAR(50), ISNULL(COL04, ''))--,COL04 --,PartNumber  
   ,CONVERT(NVARCHAR(50), ISNULL(COL05, ''))--,COL05 --,Location  
   ,CONVERT(NVARCHAR(100), ISNULL(COL06, ''))--,COL06 --,PartDesc  
   ,CONVERT(MONEY, ISNULL(COL07, ''))--,COL07 --,QuotedQty  
   ,CASE WHEN @IsFromInvoiceJob = 1 THEN CONVERT(MONEY, ISNULL(COL56, '')) ELSE CONVERT(MONEY, ISNULL(COL08, '')) END--,COL08 --,JobQty  
   ,CONVERT(NVARCHAR(15), ISNULL(COL09, ''))--,COL09 --,Unit  
   ,CONVERT(tinyint, ISNULL(COL10, ''))--,COL10 --,ItemType  
   ,CONVERT(NVARCHAR(2), ISNULL(COL11, ''))--,COL11 --,TaxCode  
   ,CONVERT(NVARCHAR(3), ISNULL(COL12, ''))--,COL12 --,Currency  
   ,CONVERT(BIT, ISNULL(COL13, ''))--,COL13 --,IsForeign  
   ,CONVERT(MONEY, ISNULL(COL14, ''))--,COL14 --,LineDiscPerc  
   ,CONVERT(MONEY, ISNULL(COL15, ''))--,COL15 --,LineDiscAmt  
   ,CONVERT(MONEY, ISNULL(COL16, ''))--,COL16 --,LineDiscAmtF  
   ,CONVERT(BIT, ISNULL(COL17, ''))--,COL17 --,IsDiscountTax  
   ,CONVERT(MONEY, ISNULL(COL18, ''))--,COL18 --,StockQty  
   ,CONVERT(NVARCHAR(15), ISNULL(COL19, ''))--,COL19 --,StockUnit  
   ,CONVERT(MONEY, ISNULL(COL20, ''))--,COL20 --,StockQtyRemain  
   ,CONVERT(MONEY, ISNULL(COL21, ''))--,COL21 --,PriceEaExc  
   ,CONVERT(MONEY, ISNULL(COL22, ''))--,COL22 --,LineTotExc  
   ,CONVERT(MONEY, ISNULL(COL23, ''))--,COL23 --,LineTaxAmt  
   ,CONVERT(MONEY, ISNULL(COL24, ''))--,COL24 --,PriceEaInc  
   ,CONVERT(MONEY, ISNULL(COL25, ''))--,COL25 --,LineTotInc  
   ,CONVERT(MONEY, ISNULL(COL26, ''))--,COL26 --,PriceEaExcF  
   ,CONVERT(MONEY, ISNULL(COL27, ''))--,COL27 --,LineTotExcF  
   ,CONVERT(MONEY, ISNULL(COL28, ''))--,COL28 --,LineTaxAmtF  
   ,CONVERT(MONEY, ISNULL(COL29, ''))--,COL29 --,EaIncTaxF  
   ,CONVERT(MONEY, ISNULL(COL30, ''))--,COL30 --,TotIncTaxF  
   ,GETDATE() --,CreatedDate  
   ,GETDATE()--,UpdatedDate  
   ,CONVERT(NVARCHAR(50), ISNULL(COL33, ''))--,COL33 --,CreatedBy  
   ,CONVERT(NVARCHAR(50), ISNULL(COL34, ''))--,COL34 --,UpdatedBy  
   ,CONVERT(BIT, ISNULL(COL35, ''))--,COL35 --IsDelCost  
   ,CONVERT(INT, ISNULL(COL36, ''))--,COL36 --BillingMethod  
   ,CONVERT(MONEY, ISNULL(COL37, ''))--,COL37 --QtyRemaining  
   ,CONVERT(image, ISNULL(IMAGE1, ''))--,IMAGE1 --TaxObj  
   ,CONVERT(NVARCHAR(50), ISNULL(COL38, ''))--,COL38 --SalesName  
   ,CONVERT(NVARCHAR(MAX), ISNULL(COL39, ''))--,COL39 --PartExtendedDesc  
   ,CONVERT(MONEY, ISNULL(COL40, '')) --,COL40 --BuyoutCost  
   ,CONVERT(MONEY, ISNULL(COL41, '')) --,COL41 --ItemWeight  
   ,CONVERT(MONEY, ISNULL(COL42, '')) --,COL42 --VolumetricWeight  
   ,CONVERT(uniqueidentifier, ISNULL(COL43, '')) --,COL43 --TransactionFieldID  
   --,CONVERT(MONEY, ISNULL(COL44, '')) --,COL44 LastPPUnit   
   --,CONVERT(MONEY, ISNULL(COL45, '')) --,COL45 StandardCost  
  FROM @tblProcessDocDT  
  
 IF (@IsWQToPJ = 1)   
 BEGIN  
  UPDATE   
   tblWSProcessDoc   
  SET   
   Cleared = 1,  
   UpdatedDate = GETDATE(),   
   UpdatedBy = (SELECT UpdatedBy FROM @tblProcessDoc)  
  WHERE   
   ProcessDocID = @ExistingQuoteNumber  
  END
  
  IF(@IsWQToPJ = 1 AND @IsUpdate = 0)  
  BEGIN  
   UPDATE  
    tblWSProcessDoc  
   SET  
    IsFromQuote = 1,         
    QuoteDocID = @ExistingQuoteNumber       -- To track QuoteID to PRocessJobID on 6-July-2018  
   WHERE   
    ProcessDocID = (SELECT ProcessDocID FROM @tblProcessDoc)  
  END  
  
  IF(@IsPJToWQ = 1 AND @IsUpdate = 0)  
  BEGIN  
   UPDATE  
    tblWSProcessDoc  
   SET  
    IsFromQuote = 1,
	ReferenceNumber = CASE WHEN  ReferenceNumber IS NOT NULL AND LEN(ReferenceNumber) > 0 THEN ReferenceNumber ELSE (SELECT ProcessDocID FROM @tblProcessDoc) END,       
    QuoteDocID = (SELECT ProcessDocID FROM @tblProcessDoc)       -- To track QuoteID to PRocessJobID on 6-July-2018  
   WHERE   
    ProcessDocID = @ExistingJobNumber   
  END
 --END  
  
 DECLARE @ProcessDocREV_EntID AS BIGINT  
 DECLARE @Latest_RevisionNumber AS INT  
  
 SELECT @ProcessDocREV_EntID = (ISNULL(MAX(EntID),0) + 1) FROM tblWSProcessDocREV  
 SELECT @Latest_RevisionNumber = ISNULL(MAX(RevisionNumber),0) + 1 FROM tblWSProcessDocREV WHERE ProcessDocID = (SELECT ProcessDocID FROM @tblProcessDoc)  
  
 INSERT INTO tblWSProcessDocREV  
 (  
    EntID  
   ,Module  
   ,ProcessDocID  
   ,ServiceableItemCode  
   ,JobTemplateID  
   ,OwnerCode  
   ,CustomerCode  
   ,CustomerDetails  
   ,SystemDate  
   ,DocumentDate  
   ,RequiredDate  
   ,ReferenceNumber  
   ,AddInfo  
   ,Technician  
   ,SalesName  
   ,Dept  
   ,DocType  
   ,InventoryTotal  
   ,LabourTotal  
   ,BuyOutsTotal  
   ,RecoveryTotal  
   ,InventoryTotalF  
   ,LabourTotalF  
   ,BuyOutsTotalF  
   ,RecoveryTotalF  
   ,Term  
   ,SubTotal  
   ,VAT  
   ,Total  
   ,IsForeign  
   ,SubTotalF  
   ,VATF  
   ,TotalF  
   ,IsFromQuote  
   ,QuoteDocID  
   ,Notes  
   ,Printed  
   ,Emailed  
   ,Cleared  
   ,Currency  
   ,DiscPerc  
   ,DiscAmt  
   ,DiscAmtF  
   ,RevisionNumber  
   ,Exchange  
   ,SubFormated  
   ,VATFormatted  
   ,TotFormatted  
   ,DiscFormatted  
   ,CreatedDate  
   ,UpdatedDate  
   ,CreatedBy  
   ,UpdatedBy  
   ,SOReasonCode  
   ,DelMethodCode  
   ,TotalWeight  
   ,TotalVolWeight  
   ,DeliveryCost  
   ,DeliveryCostF  
   ,DeliveryCostFormatted  
   ,StatusTypeCode
   ,VATNo  
 )  
 SELECT   
   @ProcessDocREV_EntID      -- EntID  
   ,@Module         --,Module  
   ,ProcessDocID        --,ProcessDocID  
   ,ServiceableItemCode      --,ServiceableItemCode  
   ,JobTemplateID        --,JobTemplateID  
   ,OwnerCode         --,OwnerCode  
   ,CustomerCode        --,CustomerCode  
   ,CustomerDetails       --,CustomerDetails  
   ,SystemDate         --,SystemDate  
   ,DocumentDate        --,DocumentDate  
   ,RequiredDate        --,RequiredDate  
   ,ReferenceNumber       --,ReferenceNumber  
   ,AddInfo         --,AddInfo  
   ,Technician         --,Technician  
   ,SalesName  --,SalesName  
   ,Dept          --,Dept  
   ,DocType         --,DocType  
   ,InventoryTotal        --,InventoryTotal  
   ,LabourTotal        --,LabourTotal  
   ,BuyOutsTotal        --,BuyOutsTotal  
   ,RecoveryTotal        --,RecoveryTotal  
   ,InventoryTotalF       --,InventoryTotalF  
   ,LabourTotalF        --,LabourTotalF  
   ,BuyOutsTotalF        --,BuyOutsTotalF  
   ,RecoveryTotalF        --,RecoveryTotalF  
   ,Term          --,Term  
   ,SubTotal         --,SubTotal  
   ,VAT          --,VAT  
   ,Total          --,Total  
   ,IsForeign         --,IsForeign  
   ,SubTotalF         --,SubTotalF  
   ,VATF          --,VATF  
   ,TotalF          --,TotalF  
   ,IsFromQuote        --,IsFromQuote  
   ,QuoteDocID         --,QuoteDocID  
   ,Notes          --,Notes  
   ,Printed         --,Printed  
   ,Emailed         --,Emailed  
   ,Cleared         --,Cleared  
   ,Currency         --,Currency  
   ,DiscPerc         --,DiscPerc  
   ,DiscAmt         --,DiscAmt  
   ,DiscAmtF         --,DiscAmtF  
   ,@Latest_RevisionNumber      --,RevisionNumber  
   ,Exchange         --,Exchange  
   ,SubFormated        --,SubFormated  
   ,VATFormatted        --,VATFormatted  
   ,TotFormatted        --,TotFormatted  
   ,DiscFormatted        --,DiscFormatted  
   ,CreatedDate        --,CreatedDate  
   ,UpdatedDate        --,UpdatedDate  
   ,CreatedBy         --,CreatedBy  
   ,UpdatedBy         --,UpdatedBy  
   ,SOReasonCode        --,SOReasonCode  
   ,DelMethodCode        --,DelMethodCode  
   ,TotalWeight        --,TotalWeight  
   ,TotalVolWeight        --,TotalVolWeight  
   ,DeliveryCost        --,DeliveryCost  
   ,DeliveryCostF        --,DeliveryCostF  
   ,DeliveryCostFormatted      --,DeliveryCostFormatted  
   ,StatusTypeCode        --,StatusTypeCode  
   --,JobStatusType
   ,VATNo          
 from tblWSProcessDoc  
 where ProcessDocID = (SELECT ProcessDocID FROM @tblProcessDoc)  
  
 INSERT INTO tblWSProcessDocREVDT  
 (  
    EntID  
   ,ProcessDocDTID  
   ,ProcessDocID  
   ,[LineNo]  
   ,PartNumber  
   ,Location  
   ,PartDesc  
   ,QuotedQty  
   ,JobQty  
   ,Unit  
   ,ItemType  
   ,TaxCode  
   ,Currency  
   ,IsForeign  
   ,LineDiscPerc  
   ,LineDiscAmt  
   ,LineDiscAmtF  
   ,IsDiscountTax  
   ,StockQty  
   ,StockUnit  
   ,StockQtyRemain  
   ,PriceEaExc  
   ,LineTotExc  
   ,LineTaxAmt  
   ,PriceEaInc  
   ,LineTotInc  
   ,PriceEaExcF  
   ,LineTotExcF  
   ,LineTaxAmtF  
   ,EaIncTaxF  
   ,TotIncTaxF  
   ,CreatedDate  
   ,UpdatedDate  
   ,CreatedBy  
   ,UpdatedBy  
   ,IsDelCost  
   ,BillingMethod  
   ,QtyRemaining  
   ,TaxObj  
   ,SalesName  
   ,PartExtendedDesc  
   ,BuyoutCost  
   ,ItemWeight  
   ,VolumetricWeight  
   ,TransactionFieldID  
 )  
 SELECT   
   @ProcessDocREV_EntID  --  EntID  
   ,ProcessDocDTID    -- ,ProcessDocDTID   
   ,ProcessDocID    -- ,ProcessDocID   
   ,[LineNo]     -- ,[LineNo]   
   ,PartNumber     -- ,PartNumber   
   ,Location     -- ,Location   
   ,PartDesc     -- ,PartDesc   
   ,QuotedQty     -- ,QuotedQty   
   ,JobQty      -- ,JobQty   
   ,Unit      -- ,Unit   
   ,ItemType     -- ,ItemType   
   ,TaxCode     -- ,TaxCode   
   ,Currency     -- ,Currency   
   ,IsForeign     -- ,IsForeign   
   ,LineDiscPerc    -- ,LineDiscPerc   
   ,LineDiscAmt    -- ,LineDiscAmt   
   ,LineDiscAmtF    -- ,LineDiscAmtF   
   ,IsDiscountTax    -- ,IsDiscountTax   
   ,StockQty     -- ,StockQty   
   ,StockUnit     -- ,StockUnit   
   ,StockQtyRemain    -- ,StockQtyRemain   
   ,PriceEaExc     -- ,PriceEaExc   
   ,LineTotExc     -- ,LineTotExc   
   ,LineTaxAmt     -- ,LineTaxAmt   
   ,PriceEaInc     -- ,PriceEaInc   
   ,LineTotInc     -- ,LineTotInc   
   ,PriceEaExcF    -- ,PriceEaExcF   
   ,LineTotExcF    -- ,LineTotExcF   
   ,LineTaxAmtF    -- ,LineTaxAmtF   
   ,EaIncTaxF     -- ,EaIncTaxF   
   ,TotIncTaxF     -- ,TotIncTaxF   
   ,CreatedDate    -- ,CreatedDate   
   ,UpdatedDate    -- ,UpdatedDate   
   ,CreatedBy     -- ,CreatedBy   
   ,UpdatedBy     -- ,UpdatedBy   
   ,IsDelCost     -- ,IsDelCost   
   ,BillingMethod    -- ,BillingMethod   
   ,QtyRemaining    -- ,QtyRemaining   
   ,TaxObj      -- ,TaxObj   
   ,SalesName     -- ,SalesName   
   ,PartExtendedDesc   -- ,PartExtendedDesc   
   ,BuyoutCost     -- ,BuyoutCost   
   ,ItemWeight     -- ,ItemWeight   
   ,VolumetricWeight   -- ,VolumetricWeight   
   ,TransactionFieldID   -- ,TransactionFieldID   
 FROM tblWSProcessDocDT   
 where ProcessDocID = (SELECT ProcessDocID FROM @tblProcessDoc)      
END
GO
/****** Object:  StoredProcedure [dbo].[RecordWSInvoice]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[RecordWSInvoice]      
(      
    @IsUpdate bit,      
    @TempGuidForAttachment nvarchar(2000),      
    @tblProcessDoc ProcessDocTableType READONLY,      
    @tblProcessDocDT CommonTableTypeBig READONLY,      
    @Module Int,      
    @IsPJBToIJB bit,      
    @ExistingJobNumber nvarchar(30),      
    @JobStatus int,      
    @SelectedPayment nvarchar(60),      
    @JourID BIGINT,    --542018      
    @InvTrackID BIGINT,   --542018      
    @PaidBy INT,     --542018           
    @Account nvarchar(30),  --542018      
    @StatusTypeCode nvarchar(20), --2452018      
    @ProcessJobNumberFromIR nvarchar(50)      
)      
AS      
BEGIN      
      
 --IF @IsUpdate = 0      
 --BEGIN      
  INSERT INTO tblInvoiceDoc      
  (      
    strInvDocID      
   ,lngInvTrackID      
   ,lngJourID      
   ,dteSystemDate      
   ,dteJournalDate      
   ,dteRequired      
   ,strUserName      
   ,strCustName      
   ,strSoldTo      
   ,strShipTo      
   ,strReference      
   ,decSubTotal      
   ,decVAT      
   ,decTotal      
   ,bitFromSO      
   ,strOrdDocID      
   ,bitHistoryTrans      
   ,strNotes      
   ,bitPrinted      
   ,bitEmailed      
   ,intPaidBy      
   ,intAccount      
   ,strSalesName      
   ,strAddInfo      
   ,bitReserved      
   ,strCurrency      
   ,bitIsForeign      
   ,decSubTotalF      
   ,decVATF      
   ,decTotalF      
   ,decExchange      
   ,strTerm      
   ,intDept      
   ,strField1      
   ,strField2      
   ,strField3      
   ,strField4      
   ,strField5      
   ,strField6      
   ,strField7      
   ,strField8      
   ,strField9      
   ,strField10      
   ,strField11      
   ,strField12      
   ,strSubFormated      
   ,strVATFormatted      
   ,strTotFormatted      
   ,dteField13      
   ,dteField14      
   ,decDiscPerc      
   ,decDiscAmt      
   ,decDiscAmtF      
   ,strDiscFormatted      
   ,strOrdFQDocID      
   ,strStatusTypeCode      
   ,strCNReasonCode      
   ,bitBookmark      
   ,dteSystemDateTime      
   ,strPaidBy      
   ,intSentDoc      
   ,strVAT      
   ,strDelMethodCode      
   ,decTotalWeight      
   ,decTotalVolWeight      
   ,decDeliveryCost      
   ,decDeliveryCostF      
   ,strDeliveryCostFormatted      
   ,bitShipmentsAuditTrail      
   ,intRevisionNumber      
   ,strStoreNumber      
   ,strEDI  
   ,bitIsFromWorkshop  
   ,strLPO  
  )      
  SELECT      
    ProcessDocID    -- strInvDocID      
   ,@InvTrackID --TODO --,lngInvTrackID --DONE   --542018      
   ,@JourID --TODO --,lngJourID --DONE    --542018      
   ,GETDATE() --,dteSystemDate      
   ,DocumentDate --,dteJournalDate      
   ,RequiredDate --,dteRequired      
   ,CreatedBy  --,strUserName      
   ,CustomerCode --,strCustName      
   ,CustomerDetails    --,strSoldTo      
   ,ShipTo  --,strShipTo      
   ,ReferenceNumber   --,strReference                 
   ,SubTotal --,decSubTotal                  
   ,VAT  --,decVAT                 
   ,Total  --,decTotal                  
   ,0 --,bitFromSO  NOTE: It will be set in tblWSInvoiceDoc                  
   ,null --,strOrdDocID NOTE: It will be set in tblWSInvoiceDoc         
   ,0 --,bitHistoryTrans                 
   ,Notes --,strNotes                   
   ,0 --,bitPrinted                  
   ,0 --,bitEmailed                  
   ,@PaidBy --TODO --,intPaidBy  --DONE --542018                
   ,@Account  --TODO --,intAccount  --DONE --542018                
   ,CASE SalesName WHEN '' THEN null ELSE SalesName END --,strSalesName                   
   ,AddInfo --,strAddInfo                 
   ,0 --,bitReserved                  
   ,Currency --,strCurrency                
   ,IsForeign --,bitIsForeign                
   ,SubTotalF --,decSubTotalF                
   ,VATF  --,decVATF                 
   ,TotalF  --,decTotalF                
   ,Exchange  --,decExchange               
   ,CASE Term WHEN '' THEN null ELSE Term END --,strTerm                   
   ,CASE Dept WHEN 0 THEN null ELSE Dept END --,intDept                    
   ,'' --,strField1                  
   ,'' --,strField2                  
   ,'' --,strField3                  
   ,'' --,strField4                  
   ,'' --,strField5                  
   ,'' --,strField6                  
   ,'' --,strField7                  
   ,'' --,strField8                  
   ,'' --,strField9                  
   ,'' --,strField10                  
   ,'' --,strField11                  
   ,'' --,strField12                  
   ,SubFormated --,strSubFormated              
   ,VATFormatted --,strVATFormatted              
   ,TotFormatted --,strTotFormatted                 
   ,'' --,dteField13                  
   ,'' --,dteField14                  
   ,DiscPerc --,decDiscPerc                  
   ,DiscAmt --,decDiscAmt                  
   ,DiscAmtF --,decDiscAmtF                
   ,DiscFormatted --,strDiscFormatted                      
   ,null --,strOrdFQDocID                    
   ,@StatusTypeCode --,strStatusTypeCode                  
   ,null --,strCNReasonCode                   
   ,0 --,bitBookmark                    
   ,GETDATE() --,dteSystemDateTime      
   ,@SelectedPayment --TODO--,strPaidBy      
   ,0--,intSentDoc      
   ,VATNo --TODO --,strVAT      
   ,CASE DelMethodCode WHEN '' THEN null ELSE DelMethodCode END --,strDelMethodCode      
   ,TotalWeight --,decTotalWeight      
   ,TotalVolWeight   --,decTotalVolWeight      
   ,DeliveryCost    --,decDeliveryCost      
   ,DeliveryCostF    --,decDeliveryCostF      
   ,DeliveryCostFormatted  --,strDeliveryCostFormatted      
   ,0 --,bitShipmentsAuditTrail      
   ,RevisionNumber --,intRevisionNumber      
   ,null --,strStoreNumber      
   ,null --,strEDI  
   ,1  
   ,LPO  
  FROM @tblProcessDoc       
      
        
  delete from tblWSInvoiceDoc WHERE strInvDocID = (SELECT ProcessDocID FROM @tblProcessDoc)       
      
  INSERT INTO tblWSInvoiceDoc      
  (      
    strInvDocID      
   ,ServiceableItemCode      
   ,JobTemplateID      
   ,OwnerCode      
   ,CustomerCode      
   ,CustomerDetails      
   ,Technician      
   ,DocType      
   ,InventoryTotal      
   ,LabourTotal      
   ,BuyOutsTotal      
   ,RecoveryTotal      
   ,InventoryTotalF      
   ,LabourTotalF      
   ,BuyOutsTotalF      
   ,RecoveryTotalF      
   ,JobStatusType      
   ,IsFromProcessJob      
   ,ProcessDocID      
   ,CreatedDate      
   ,UpdatedDate      
   ,CreatedBy      
   ,UpdatedBy 
   ,ShipTo     
  )      
  SELECT      
   ProcessDocID    -- strInvDocID      
   ,ServiceableItemCode      
   ,CASE JobTemplateID WHEN 0 THEN null ELSE JobTemplateID END      
   ,OwnerCode      
   ,CustomerCode      
   ,CustomerDetails      
   ,CASE Technician WHEN '' THEN null ELSE Technician END      
   ,DocType      
   ,InventoryTotal      
   ,LabourTotal      
   ,BuyOutsTotal      
   ,RecoveryTotal      
   ,InventoryTotalF      
   ,LabourTotalF      
   ,BuyOutsTotalF      
   ,RecoveryTotalF      
   ,@JobStatus      
   ,@IsPJBToIJB      
   ,CASE @ExistingJobNumber WHEN '' THEN NULL Else @ExistingJobNumber END      
   ,CreatedDate      
   ,UpdatedDate      
   ,CreatedBy      
   ,UpdatedBy     
   ,ShipTo 
  FROM @tblProcessDoc       
      
  DECLARE @TransactionType AS int      
  SELECT @TransactionType = DocType FROM @tblProcessDoc      
  IF(@TransactionType = 3 AND @IsUpdate = 0) --Invoice Job      
   UPDATE tblLastIDs set lngIJBNumber += 1      
        
 --END       
 --ELSE      
 --BEGIN      
 -- UPDATE tblInvoiceDoc      
 -- SET       
         
 --  lngInvTrackID = @InvTrackID --TODO ,lngInvTrackID --DONE --542018      
 --  ,lngJourID = @JourID --TODO,lngJourID             --DONE --542018      
 --  ,dteJournalDate = t.DocumentDate      
 --  ,dteRequired = t.RequiredDate      
 --  ,strUserName = t.CreatedBy      
 --  ,strCustName = t.CustomerCode      
 --  ,strReference = t.ReferenceNumber      
 --  ,decSubTotal = t.SubTotal      
 --  ,decVAT = t.VAT      
 --  ,decTotal = t.Total      
 --  ,strNotes = t.Notes      
 --  ,intPaidBy = @PaidBy --TODO ,intPaidBy    --DONE --542018      
 --  ,intAccount = @Account --TODO ,intAccount  --DONE --542018      
 --  ,strSalesName = CASE t.SalesName WHEN '' THEN null ELSE t.SalesName END      
 --  ,strAddInfo = t.AddInfo      
 --  ,strCurrency = t.Currency      
 --  ,bitIsForeign = t.IsForeign      
 --  ,decSubTotalF = t.SubTotalF      
 --  ,decVATF = t.VATF      
 --  ,decTotalF = t.TotalF       
 --  ,decExchange = t.Exchange      
 --  ,strTerm = CASE t.Term WHEN '' THEN null ELSE t.Term END        
 --  ,intDept = CASE t.Dept when 0 THEN null ELSE t.Dept END      
 --  ,strSubFormated = t.SubFormated      
 --  ,strVATFormatted = t.VATFormatted      
 --  ,strTotFormatted = t.TotFormatted      
 --  ,decDiscPerc = t.DiscPerc      
 --  ,decDiscAmt = t.DiscAmt      
 --  ,decDiscAmtF = t.DiscAmtF      
 --  ,strDiscFormatted = t.DiscFormatted      
 --  ,dteSystemDateTime = GETDATE()      
 --  --TODO ,strPaidBy      
 --  --TODO ,strVAT       
 --  ,strDelMethodCode = CASE t.DelMethodCode WHEN '' THEN null ELSE t.DelMethodCode END --,strDelMethodCode       
 --  ,decTotalWeight = t.TotalWeight      
 --  ,decTotalVolWeight = t.TotalVolWeight      
 --  ,decDeliveryCost = t.DeliveryCost      
 --  ,decDeliveryCostF = t.DeliveryCostF      
 --  --TODO,strDeliveryCostFormatted =       
 --  ,intRevisionNumber = t.RevisionNumber      
 -- FROM       
 --  @tblProcessDoc t      
 -- WHERE      
 --  tblInvoiceDoc.strInvDocID = t.ProcessDocID      
        
        
      
 -- UPDATE tblWSInvoiceDoc      
 -- SET      
 --  ServiceableItemCode = t.ServiceableItemCode      
 --  ,JobTemplateID = CASE t.JobTemplateID WHEN 0 THEN null ELSE t.JobTemplateID END      
 --  ,OwnerCode = t.OwnerCode      
 --  ,CustomerCode = t.CustomerCode      
 --  ,CustomerDetails = t.CustomerDetails      
 --  ,Technician = CASE t.Technician WHEN '' THEN null ELSE t.Technician END      
 --  ,DocType = t.DocType      
 --  ,InventoryTotal = t.InventoryTotal      
 --  ,LabourTotal = t.LabourTotal      
 --  ,BuyOutsTotal = t.BuyOutsTotal      
 --  ,RecoveryTotal = t.RecoveryTotal      
 --  ,InventoryTotalF = t.InventoryTotalF      
 --  ,LabourTotalF = t.LabourTotalF      
 --  ,BuyOutsTotalF = t.BuyOutsTotalF      
 --  ,RecoveryTotalF = t.RecoveryTotalF      
 --  ,JobStatusType = @JobStatus      
 --  ,UpdatedDate = GETDATE()      
 --  ,UpdatedBy = t.UpdatedBy      
 -- FROM       
 --  @tblProcessDoc t      
 -- WHERE      
 --  tblWSInvoiceDoc.strInvDocID = t.ProcessDocID      
 --END       
       
 DELETE FROM tblInvoiceDocDT WHERE strInvDocID = (SELECT ProcessDocID FROM @tblProcessDoc)        
      
 --drop table tblTemp      
 --select * into tblTemp from @tblProcessDoc      
 --drop table tblTempDT      
 --Select * into tblTempDT from @tblProcessDocDT      
      
 INSERT INTO tblInvoiceDocDT      
 (      
   strInvDocID      
   ,intLineNo      
   ,strPartNumber      
   ,strLocation      
   ,strPartDesc      
   ,decQty      
   ,strUnit      
   ,intType      
   ,decPriceEaExc      
   ,decLineTotExc      
   ,decLineTaxAmt      
   ,decPriceEaInc      
   ,decLineTotInc      
   ,strTaxCode      
   ,imgTaxObj      
   ,strCurrency      
   ,bitIsForeign      
   ,decPriceEaExcF      
   ,decLineTotExcF      
   ,decLineTaxAmtF      
   ,decEaIncTaxF      
   ,decTotIncTaxF      
   ,strInvField1      
   ,strInvField2      
   ,strInvField3      
   ,strInvField4      
   ,strInvField5      
   ,strInvField6      
   ,strLineField1      
   ,strLineField2      
   ,strLineField3      
   ,strLineField4      
   ,strLineField5      
   ,strLineField6      
   ,strLineField7      
   ,strLineField8      
   ,strLineField9      
   ,strLineField10      
   ,strLineField11      
   ,strLineField12      
   ,decLineDiscPerc      
   ,decLineDiscAmt      
   ,decLineDiscAmtF      
   ,bitDiscountTax      
   ,decStockQty      
   ,strStockUnit      
   ,decStandardCost      
   ,decLastPPUnit      
   ,strSalesName      
   ,decCOGS      
   ,decSOQty      
   ,decSOQtyRemain      
   ,strPartExtendedDesc      
   ,decItemWeight      
   ,decVolumetricWeight      
   ,bitContainerItem      
   ,bitDelCost      
   ,intBillingMethod      
   ,uidTransactionFieldID      
   ,decUsedQty      
 )      
  SELECT      
   CONVERT(NVARCHAR(50), ISNULL(COL02, '')) --,ProcessDocID     --strInvDocID       
   ,CONVERT(INT, ISNULL(COL03, ''))--,COL03 --,[LineNo]      --intLineNo      
   ,CONVERT(NVARCHAR(50), ISNULL(COL04, ''))--,COL04 --,PartNumber    --strPartNumber      
   ,CONVERT(NVARCHAR(50), ISNULL(COL05, ''))--,COL05 --,Location    --strLocation      
   ,CONVERT(NVARCHAR(100), ISNULL(COL06, ''))--,COL06 --,PartDesc    --strPartDesc      
   ,CONVERT(MONEY, ISNULL(COL52, ''))--,COL07 --,InvoicedQty     --decQty      
   ,CONVERT(NVARCHAR(15), ISNULL(COL09, ''))--,COL09 --,Unit     --strUnit      
   ,CONVERT(tinyint, ISNULL(COL10, ''))--,COL10 --,ItemType     --intType      
   ,CONVERT(MONEY, ISNULL(COL21, ''))--,COL21 --,PriceEaExc     --decPriceEaExc             
   ,CONVERT(MONEY, ISNULL(COL22, ''))--,COL22 --,LineTotExc      --decLineTotExc                 
   ,CONVERT(MONEY, ISNULL(COL23, ''))--,COL23 --,LineTaxAmt      --decLineTaxAmt                   
   ,CONVERT(MONEY, ISNULL(COL24, ''))--,COL24 --,PriceEaInc      --decPriceEaInc                  
   ,CONVERT(MONEY, ISNULL(COL25, ''))--,COL25 --,LineTotInc      --decLineTotInc                  
   ,CONVERT(NVARCHAR(2), ISNULL(COL11, ''))--,COL11 --,TaxCode   --strTaxCode            
   ,CONVERT(image, ISNULL(IMAGE1, ''))--,IMAGE1 --TaxObj         --imgTaxObj              
   ,CONVERT(NVARCHAR(3), ISNULL(COL12, ''))--,COL12 --,Currency  --strCurrency                    
   ,CONVERT(BIT, ISNULL(COL13, ''))--,COL13 --,IsForeign         --bitIsForeign                       
   ,CONVERT(MONEY, ISNULL(COL26, ''))--,COL26 --,PriceEaExcF     --decPriceEaExcF                     
   ,CONVERT(MONEY, ISNULL(COL27, ''))--,COL27 --,LineTotExcF     --decLineTotExcF                             
   ,CONVERT(MONEY, ISNULL(COL28, ''))--,COL28 --,LineTaxAmtF     --decLineTaxAmtF                             
   ,CONVERT(MONEY, ISNULL(COL29, ''))--,COL29 --,EaIncTaxF       --decEaIncTaxF                              
   ,CONVERT(MONEY, ISNULL(COL30, ''))--,COL30 --,TotIncTaxF      --decTotIncTaxF                              
   ,''--strInvField1                              
   ,''--strInvField2                              
   ,''--strInvField3                              
   ,''--strInvField4                              
   ,''--strInvField5                              
   ,''--strInvField6                             
   ,''--strLineField1                         
   ,''--strLineField2                         
   ,''--strLineField3                         
   ,''--strLineField4                         
   ,''--strLineField5                               
   ,''--strLineField6                              
   ,''--strLineField7                         
   ,''--strLineField8                               
   ,''--strLineField9                             
   ,''--strLineField10                          
   ,''--strLineField11                        
   ,''--strLineField12                             
   ,CONVERT(MONEY, ISNULL(COL14, ''))--,COL14 --,LineDiscPerc  --decLineDiscPerc              
   ,CONVERT(MONEY, ISNULL(COL15, ''))--,COL15 --,LineDiscAmt --decLineDiscAmt           
   ,CONVERT(MONEY, ISNULL(COL16, ''))--,COL16 --,LineDiscAmtF --decLineDiscAmtF                 
   ,CONVERT(BIT, ISNULL(COL17, ''))--,COL17 --,IsDiscountTax   --bitDiscountTax                 
   ,CONVERT(MONEY, ISNULL(COL18, ''))--,COL18 --,StockQty      --decStockQty      
   ,CONVERT(NVARCHAR(15), ISNULL(COL19, ''))--,COL19 --,StockUnit    --strStockUnit      
   ,CONVERT(MONEY, ISNULL(COL53, '')) --,COL53 StandardCost     --decStandardCost      
   ,CONVERT(MONEY, ISNULL(COL54, '')) --,COL54 LastPPUnit      --decLastPPUnit      
   ,CONVERT(NVARCHAR(50), ISNULL(COL38, ''))--,COL38 --SalesName   --strSalesName   
   ,CONVERT(MONEY, ISNULL(COL80, '')) --TODO                 --decCOGS        
   ,0 --TODO                 --decSOQty      
   ,CONVERT(MONEY, ISNULL(COL20, ''))--,COL20 --,StockQtyRemain    --decSOQtyRemain      
   ,CONVERT(NVARCHAR(MAX), ISNULL(COL39, ''))--,COL39 --PartExtendedDesc  --strPartExtendedDesc      
   ,CONVERT(MONEY, ISNULL(COL41, '')) --,COL41 --ItemWeight     --decItemWeight      
   ,CONVERT(MONEY, ISNULL(COL42, '')) --,COL42 --VolumetricWeight    --decVolumetricWeight      
   ,0 --bitContainerItem      
   ,CONVERT(BIT, ISNULL(COL35, ''))--,COL35 --IsDelCost      --bitDelCost      
   ,CONVERT(INT, ISNULL(COL36, ''))--,COL36 --BillingMethod     --intBillingMethod      
   ,CONVERT(uniqueidentifier, ISNULL(COL43, '')) --,COL43 --TransactionFieldID --uidTransactionFieldID      
   ,CONVERT(MONEY, ISNULL(COL56, ''))  --,COL56 --UsedQty      --decUsedQty      
  FROM @tblProcessDocDT      
  WHERE CONVERT(NVARCHAR(30), ISNULL(COL03, '')) < 99999  --,COL03 - intLineNo      --We need to skip deleted rows from insert      
        
 IF (@IsPJBToIJB = 1) --Is PJB to IJB conversion true      
 BEGIN      
  UPDATE       
   tblWSProcessDoc       
  SET       
   Cleared = 1,      
   UpdatedDate = GETDATE(),       
   UpdatedBy = (SELECT UpdatedBy FROM @tblProcessDoc),      
   JobStatusType = @JobStatus         --Will close ProcessJob when it is converted to InvoiceJob. @JobStatus = 3 (Closed)      
  WHERE       
   ProcessDocID = @ExistingJobNumber    
     
   IF((SELECT LEN(ISNULL(QuoteDocID,0)) FROM tblWSProcessDoc WHERE ProcessDocID = @ExistingJobNumber) > 0)  
 BEGIN  
  UPDATE tblWSProcessDoc       
    SET       
      Cleared = 1,      
      UpdatedDate = GETDATE(),       
      UpdatedBy = (SELECT UpdatedBy FROM @tblProcessDoc),      
      JobStatusType = @JobStatus         --Will close QUOTE when it is converted to InvoiceJob. @JobStatus = 3 (Closed)      
    WHERE       
    ProcessDocID = (SELECT QuoteDocID FROM tblWSProcessDoc WHERE ProcessDocID = @ExistingJobNumber)   
   END    
      
  if((SELECT Count(JBDocID) FROM tblWSWIP WHERE JBDocID = @ExistingJobNumber) > 0)      
  BEGIN      
   Update       
    tblWSWIP      
   SET      
    [Type] = @JobStatus          --Will close JobNumber in Requision Table when it InvoiceJob is craeted. @JobStatus = 3 (Closed)      
   WHERE      
    JBDocID = @ExistingJobNumber            
  END      
        
 END      
 ELSE      
 BEGIN      
  --Link PJB to IJB to make when assign the Bin  --Currently not working:  bcz Process doc is not created till. First create Process doc with same data as InvoiceDoc then update it      
  UPDATE tblWSInvoiceDoc set ProcessDocID = @ProcessJobNumberFromIR WHERE strInvDocID = (SELECT ProcessDocID FROM @tblProcessDoc)      
 END      
      
END
GO
/****** Object:  StoredProcedure [dbo].[RecordWSWIP]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[RecordWSWIPCompDT] ***********/

/*********** Start [dbo].[RecordWSWIP] ***********/

CREATE PROCEDURE [dbo].[RecordWSWIP]
(
	@WIPDocID nvarchar(50),
	@JBDocID nvarchar(50), 
	@SystemDate DATETIME,
	@JournalDate DATETIME,
	@UserName nvarchar(50),
	@Type int,
	@JourID bigint
)
AS
BEGIN
	INSERT INTO tblWSWIP
	(
		 WIPDocID
		,JBDocID
		,SystemDate
		,JournalDate
		,UserName
		,[Type]
		,JourID
	)
	VALUES 
	(	
		@WIPDocID,
        @JBDocID,
        @SystemDate,
        @JournalDate,
        @UserName,
        @Type,
        @JourID
	)
END
GO
/****** Object:  StoredProcedure [dbo].[RecordWSWIPCompDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[GetInventoryPPUnit] ***********/

/*********** Start [dbo].[RecordWSWIPCompDT] ***********/
CREATE PROCEDURE [dbo].[RecordWSWIPCompDT]
(
	@WIPDocID nvarchar(50),
	@LineNo int, 
	@PartNumber nvarchar(50),
	@Location nvarchar(10),
	@PostedQty money,
	@PostQty money,
	@Amount money,
	@PostedAmount money,
	@PostAmount money,
	@Type int,
	@ReturnQty money
)
AS
BEGIN
	INSERT INTO tblWSWIPCompDT
	(
		 WIPDocID
		,[LineNo]
		,PartNumber
		,Location
		,PostedQty
		,PostQty
		,Amount
		,PostedAmount
		,PostAmount
		,[Type]
		,ReturnQty
	)
	VALUES
	(
		 @WIPDocID
		,@LineNo
		,@PartNumber
		,@Location
		,@PostedQty
		,@PostQty
		,@Amount
		,@PostedAmount
		,@PostAmount
		,@Type
		,@ReturnQty
	)
END


GO
/****** Object:  StoredProcedure [dbo].[RemoveDocumentDML]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [RemoveDocumentDML] ***********/
CREATE PROCEDURE [dbo].[RemoveDocumentDML]
    (
      @userName NVARCHAR(50) = '' ,		        
      @docNumber NVARCHAR(100) = '' ,				 
      @sOReasonCode NVARCHAR(100) = '' ,
      @tblSerialUserData SerialNumberTrackingDATableType READONLY
    )
AS
    BEGIN

        UPDATE  tblOrderDocDA
        SET     dteSystemDate = GETDATE() ,
                strUserName = @userName ,
                bitCleared = 1 ,
                strSOReasonCode = @sOReasonCode
        WHERE   strOrdDADocID = @docNumber

        DECLARE @tblSerialUserData1 AS TABLE
            (
              ID [INT] IDENTITY(1, 1) ,
              [DocID] [NVARCHAR](100) ,
              [LineNo] [INT] ,
              [UserName] [NVARCHAR](40) ,
              [UpdatedDate] [SMALLDATETIME] ,
              [Type] [INT] ,
              [PartNumber] [NVARCHAR](100) ,
              [Location] [NVARCHAR](20) ,
              [StatusIn] [INT] ,
              [Qty] [MONEY] ,
              [SerialNumber] [NVARCHAR](200) ,
              [IsExpiryDate] [BIT] ,
              [ExpiryDate] [SMALLDATETIME] ,
              [IsSerialLotType] [BIT] ,
              [StatusOut] [INT],
			  [BinID] [bigint] 
            )
		
        INSERT  INTO @tblSerialUserData1
                ( [DocID] ,
                  [LineNo] ,
                  [UserName] ,
                  [UpdatedDate] ,
                  [Type] ,
                  [PartNumber] ,
                  [Location] ,
                  [StatusIn] ,
                  [Qty] ,
                  [SerialNumber] ,
                  [IsExpiryDate] ,
                  [ExpiryDate] ,
                  [IsSerialLotType] ,
                  [StatusOut],
				  [BinID]				  			
		        )
                SELECT  [DocID] ,
                        [LineNo] ,
                        [UserName] ,
                        [UpdatedDate] ,
                        [Type] ,
                        [PartNumber] ,
                        [Location] ,
                        [StatusIn] ,
                        [Qty] ,
                        [SerialNumber] ,
                        [IsExpiryDate] ,
                        [ExpiryDate] ,
                        [IsSerialLotType] ,
                        [StatusOut],
						[BinID]
                FROM    @tblSerialUserData

        DECLARE @MaxID AS INT = 0
        DECLARE @MinID AS INT = 0

        SELECT  @MaxID = MAX(ID)
        FROM    @tblSerialUserData1
        
		SELECT  @MinID = MIN(ID)
        FROM    @tblSerialUserData1

        DECLARE @DocID NVARCHAR(100)
        DECLARE @LineNo INT 
        DECLARE @UserName1 NVARCHAR(40) 
        DECLARE @UpdatedDate SMALLDATETIME 
        DECLARE @Type INT 
        DECLARE @PartNumber NVARCHAR(100) 
        DECLARE @Location NVARCHAR(20) 
        DECLARE @StatusIn INT 
        DECLARE @Qty MONEY 
        DECLARE @SerialNumber NVARCHAR(200) 
        DECLARE @IsExpiryDate BIT 
        DECLARE @ExpiryDate SMALLDATETIME 
        DECLARE @IsSerialLotType BIT 
        DECLARE @StatusOut INT 
		DECLARE @BinID BIGINT

        WHILE 1 = 1
            BEGIN
                SELECT  @DocID = DocID ,
                        @LineNo = [LineNo] ,
                        @UserName1 = UserName ,
                        @UpdatedDate = UpdatedDate ,
                        @Type = [Type] ,
                        @PartNumber = PartNumber ,
                        @Location = Location ,
                        @StatusIn = StatusIn ,
                        @Qty = Qty ,
                        @SerialNumber = SerialNumber ,
                        @IsExpiryDate = IsExpiryDate ,
                        @ExpiryDate = ExpiryDate ,
                        @IsSerialLotType = IsSerialLotType ,
                        @StatusOut = StatusOut,
						@BinID =BinID

                FROM    @tblSerialUserData1
                WHERE   ID = @MinID 

                IF @@ROWCOUNT = 0
                    BREAK

                INSERT  INTO tblSerialNumberTracking
                        ( strPartNumber ,
                          strSerialNumber ,
                          strUserName ,
                          dteUpdatedDate ,
                          intType ,
                          strDocID ,
                          intLineNo ,
                          decQty ,
                          strLocation ,
                          intStatus ,
                          bitExpiryDate ,
                          dteExpiryDate,
						  lngBinID
				        )
                VALUES  ( CONVERT(NVARCHAR(100), ISNULL(@PartNumber, '')) ,
                          CONVERT(NVARCHAR(200), ISNULL(@SerialNumber, '')) ,
                          CONVERT(NVARCHAR(40), ISNULL(@UserName1, '')) ,
                          CONVERT(SMALLDATETIME, ISNULL(@UpdatedDate,GETDATE())) ,
                          CONVERT(INT, ISNULL(@Type, 0)) ,
                          CONVERT(NVARCHAR(100), @DocID) ,
                          CONVERT(INT, ISNULL(@LineNo, 0)) ,
                          CONVERT(MONEY, ISNULL(@Qty, 0)) ,
                          CONVERT(NVARCHAR(20), @Location) ,
                          CONVERT(INT, ISNULL(@StatusIn, 0)) ,
                          CONVERT(BIT, ISNULL(@IsExpiryDate, 0)) ,
                          CONVERT(SMALLDATETIME, @ExpiryDate),
						  CONVERT(bigint, @BinID)
				        )

                IF @IsSerialLotType = 1
                    BEGIN
                        UPDATE  tblInvLotExt
                        SET     decQty = decQty + @Qty ,
                                dteUpdatedDate = @UpdatedDate
                        WHERE   strPartNumber = @PartNumber
                                AND strLotNumber = @SerialNumber
                                AND strLocName = @Location
								AND lngBinId = @BinID
                    END
                ELSE
                    BEGIN
                        UPDATE  tblInvSerialExt
                        SET     strLocName = @Location ,
                                decQty = @Qty ,
                                intStatus = @StatusOut ,
                                strDocID = @DocID ,
                                dteUpdatedDate = @UpdatedDate
                        WHERE   strPartNumber = @PartNumber
                                AND strSerialNumber = @SerialNumber
								AND lngBinId = @BinID
                    END

                IF @MinID > @MaxID
                    BREAK

                SET @MinID += 1
            END
    END
GO
/****** Object:  StoredProcedure [dbo].[RepackReasonInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[RepackReasonInsert]

@strRepackagingReasonCode NVARCHAR(20),
@strRepackagingReasonDesc NVARCHAR(100),
@bitInactive BIT

AS
BEGIN	
	Insert into tblRepackReasons(strRepackagingReasonCode, strRepackagingReasonDesc, bitInactive) VALUES (@strRepackagingReasonCode, 

@strRepackagingReasonDesc, @bitInactive)
END
GO
/****** Object:  StoredProcedure [dbo].[RepackReasonUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[RepackReasonUpdate]
	@strRepackagingReasonCode nvarchar(20),
	@strRepackagingReasonDesc nvarchar(100),
	@bitInactive bit,
	@lngID bigint
AS
BEGIN
	
UPDATE [tblRepackReasons]
   SET [strRepackagingReasonCode] = @strRepackagingReasonCode
      ,[strRepackagingReasonDesc] = @strRepackagingReasonDesc
      ,[bitInactive] = @bitInactive
 WHERE lngID = @lngID
END

GO
/****** Object:  StoredProcedure [dbo].[ReportInvoiceDoc]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ReportInvoiceDoc] @DocNumber NVARCHAR(100)
AS
BEGIN
	SELECT tblInvoiceDoc.*
		,ISNULL(tblDeliveryMethods.bitDisplay, 0) AS bitDisplay
	FROM tblInvoiceDoc
	LEFT JOIN tblDeliveryMethods ON tblInvoiceDoc.strDelMethodCode = tblDeliveryMethods.strDelMethodCode
	WHERE strInvDocID = @DocNumber
		--	SELECT strInvDocID
		--	,dteJournalDate
		--	,strReference
		--	,dteRequired
		--	,strSalesName
		--	,strAddInfo
		--	,strCustName
		--	,strSoldTo
		--	,strShipTo
		--	,strNotes
		--	,strSubFormated
		--	,strVATFormatted
		--	,strTotFormatted
		--	,strDiscFormatted
		--	,strTerm
		--	,strDeliveryCostFormatted
		--FROM tblInvoiceDoc
		--WHERE strInvDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[ReportInvoiceDocDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ReportInvoiceDocDT]
	--@DocNumber NVARCHAR(100)
	@DocNumber AS VARCHAR(100) = NULL
	,@IsCustStockCodes BIT -- = 1 -- Remove this later default value
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	IF (@IsCustStockCodes = 1)
	BEGIN
		SELECT tblDocDT.*
			,tblInvoiceDocDTPrj.strProjNumber
			,tblProjects.strProjName
			,tblInv.strBarCode
			,tblInv.strBarCode2
			,(
				SELECT bitInvImgOnSI
				FROM tblCoOpts
				) AS bitShowImage
			,tblInvImg.imgData AS imgImage
			,tblDocDT.strPartExtendedDesc AS strExtendedDesc
			,tblInv.bitInvExtDescOnSI AS bitShowExtendedDesc
			,ISNULL(tblInvCustomer.strItemCode, '') AS strItemCode
			,ISNULL(tblInvCustomer.strItemDesc, '') AS strItemDesc
			,tblInvoiceDoc.strInvDocID AS tblInvoiceDoc_strInvDocID
			,tblInvoiceDoc.strCustName AS tblInvoiceDoc_strCustName
			,tblInvoiceDoc.dteJournalDate AS tblInvoiceDoc_dteJournalDate
			,tblInvoiceDoc.dteRequired AS tblInvoiceDoc_dteRequired
			,tblInvoiceDoc.strSoldTo AS tblInvoiceDoc_strSoldTo
			,tblInvoiceDoc.strShipTo AS tblInvoiceDoc_strShipTo
			,tblInvoiceDoc.strReference AS tblInvoiceDoc_strReference
			,tblInvoiceDoc.decTotal AS tblInvoiceDoc_decTotal
			,tblInvoiceDoc.strNotes AS tblInvoiceDoc_strNotes
			,tblInvoiceDoc.strSalesName AS tblInvoiceDoc_strSalesName
			,tblInvoiceDoc.strAddInfo AS tblInvoiceDoc_strAddInfo
			,tblInvoiceDoc.strTerm AS tblInvoiceDoc_strTerm
			,tblInvoiceDoc.strSubFormated AS tblInvoiceDoc_strSubFormated
			,tblInvoiceDoc.strDiscFormatted AS tblInvoiceDoc_strDiscFormatted
			,tblInvoiceDoc.strVATFormatted AS tblInvoiceDoc_strVATFormatted
			,tblInvoiceDoc.strTotFormatted AS tblInvoiceDoc_strTotFormatted
			,tblInvoiceDoc.strVAT AS tblInvoiceDoc_strVAT
			,tblinvoiceDoc.strDeliveryCostFormatted AS tblInvoiceDoc_strDeliveryCostFormatted
			,(
				SELECT STUFF((
							SELECT ',' + tblInvoiceDocDTSerial.strSerialNumber
							FROM tblInvoiceDocDTSerial
							INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTSerial.strInvDocID = tblInvoiceDocDT.strInvDocID
								AND tblInvoiceDocDTSerial.intLineNo = tblInvoiceDocDT.intLineNo
							LEFT JOIN tblInvSerialExt ON tblInvoiceDocDT.strPartNumber = tblInvSerialExt.strPartNumber
								AND tblInvoiceDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
							INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
							LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
							WHERE tblInvoiceDocDTSerial.strInvDocID = @DocNumber
								AND tblInvSerialTypes.bitPrintInv = 1
								AND tblInvoiceDocDT.intLineNo = tblDocDT.intLineNo
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strSerialNumber
			,(
				SELECT STUFF((
							SELECT ',' + COMP.strPartNumber
							FROM tblInvoiceDocDT DTL
							INNER JOIN tblManBOM BOM ON DTL.strPartNumber = BOM.strPartNumber
								AND DTL.strLocation = BOM.strLocation
							INNER JOIN tblManBOMCompInv COMP ON BOM.lngManBOMID = COMP.lngManBOMID
							INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber
							INNER JOIN tblInv INV2 ON BOM.strPartNumber = INV2.strPartNumber
							WHERE (DTL.strInvDocID = @DocNumber)
								AND (BOM.bitInactive = 0)
								AND (BOM.bitPrintDN = 1)
								AND BOM.strPartNumber = tblDocDT.strPartNumber
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strManBOMPartNumber
		FROM tblInvoiceDocDT tblDocDT
		INNER JOIN tblInvoiceDoc ON tblDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
		INNER JOIN tblInv ON tblDocDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvoiceDocDTPrj ON tblDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
			AND tblDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
		LEFT JOIN tblProjects ON tblInvoiceDocDTPrj.strProjNumber = tblProjects.strProjNumber
		LEFT JOIN tblInvImg ON tblDocDT.strPartNumber = tblInvImg.strPartNumber
			AND tblInvImg.bitDefaultImage = 1
		LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
			AND tblInvoiceDoc.strCustName = tblInvCustomer.strCustName
		WHERE tblDocDT.strInvDocID = @DocNumber
			AND tblDocDT.bitDiscountTax = 0
		--AND tblDocDT.bitDelCost = 0
		ORDER BY tblDocDT.intLineNo
	END
	ELSE
	BEGIN
		SELECT tblDocDT.*
			,tblInvoiceDocDTPrj.strProjNumber
			,tblProjects.strProjName
			,tblInv.strBarCode
			,tblInv.strBarCode2
			,(
				SELECT bitInvImgOnSI
				FROM tblCoOpts
				) AS bitShowImage
			,tblInvImg.imgData AS imgImage
			,tblDocDT.strPartExtendedDesc AS strExtendedDesc
			,tblInv.bitInvExtDescOnSI AS bitShowExtendedDesc
			,'' AS strItemCode
			,'' AS strItemDesc
			,tblInvoiceDoc.strInvDocID AS tblInvoiceDoc_strInvDocID
			,tblInvoiceDoc.strCustName AS tblInvoiceDoc_strCustName
			,tblInvoiceDoc.dteJournalDate AS tblInvoiceDoc_dteJournalDate
			,tblInvoiceDoc.dteRequired AS tblInvoiceDoc_dteRequired
			,tblInvoiceDoc.strSoldTo AS tblInvoiceDoc_strSoldTo
			,tblInvoiceDoc.strShipTo AS tblInvoiceDoc_strShipTo
			,tblInvoiceDoc.strReference AS tblInvoiceDoc_strReference
			,tblInvoiceDoc.decTotal AS tblInvoiceDoc_decTotal
			,tblInvoiceDoc.strNotes AS tblInvoiceDoc_strNotes
			,tblInvoiceDoc.strSalesName AS tblInvoiceDoc_strSalesName
			,tblInvoiceDoc.strAddInfo AS tblInvoiceDoc_strAddInfo
			,tblInvoiceDoc.strTerm AS tblInvoiceDoc_strTerm
			,tblInvoiceDoc.strSubFormated AS tblInvoiceDoc_strSubFormated
			,tblInvoiceDoc.strDiscFormatted AS tblInvoiceDoc_strDiscFormatted
			,tblInvoiceDoc.strVATFormatted AS tblInvoiceDoc_strVATFormatted
			,tblInvoiceDoc.strTotFormatted AS tblInvoiceDoc_strTotFormatted
			,tblInvoiceDoc.strVAT AS tblInvoiceDoc_strVAT
			,tblinvoiceDoc.strDeliveryCostFormatted AS tblInvoiceDoc_strDeliveryCostFormatted
			,(
				SELECT STUFF((
							SELECT ',' + tblInvoiceDocDTSerial.strSerialNumber
							FROM tblInvoiceDocDTSerial
							INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTSerial.strInvDocID = tblInvoiceDocDT.strInvDocID
								AND tblInvoiceDocDTSerial.intLineNo = tblInvoiceDocDT.intLineNo
							LEFT JOIN tblInvSerialExt ON tblInvoiceDocDT.strPartNumber = tblInvSerialExt.strPartNumber
								AND tblInvoiceDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
							INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
							LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
							WHERE tblInvoiceDocDTSerial.strInvDocID = @DocNumber
								AND tblInvSerialTypes.bitPrintInv = 1
								AND tblInvoiceDocDT.intLineNo = tblDocDT.intLineNo
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strSerialNumber
			,(
				SELECT STUFF((
							SELECT ',' + COMP.strPartNumber
							FROM tblInvoiceDocDT DTL
							INNER JOIN tblManBOM BOM ON DTL.strPartNumber = BOM.strPartNumber
								AND DTL.strLocation = BOM.strLocation
							INNER JOIN tblManBOMCompInv COMP ON BOM.lngManBOMID = COMP.lngManBOMID
							INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber
							INNER JOIN tblInv INV2 ON BOM.strPartNumber = INV2.strPartNumber
							WHERE (DTL.strInvDocID = @DocNumber)
								AND (BOM.bitInactive = 0)
								AND (BOM.bitPrintDN = 1)
								AND BOM.strPartNumber = tblDocDT.strPartNumber
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strManBOMPartNumber
		--FROM tblInvoiceDocDT tblDocDT
		--INNER JOIN tblInv ON tblDocDT.strPartNumber = tblInv.strPartNumber
		FROM tblInvoiceDocDT tblDocDT
		INNER JOIN tblInvoiceDoc ON tblDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
		INNER JOIN tblInv ON tblDocDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvoiceDocDTPrj ON tblDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
			AND tblDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
		LEFT JOIN tblProjects ON tblInvoiceDocDTPrj.strProjNumber = tblProjects.strProjNumber
		LEFT JOIN tblInvImg ON tblDocDT.strPartNumber = tblInvImg.strPartNumber
			AND tblInvImg.bitDefaultImage = 1
		WHERE tblDocDT.strInvDocID = @DocNumber
			AND tblDocDT.bitDiscountTax = 0
		--AND tblDocDT.bitDelCost = 0
		ORDER BY tblDocDT.intLineNo
	END
			--    SELECT tblInvoiceDocDT.*
			--	,tblInvoiceDocDTPrj.strProjNumber
			--	,tblProjects.strProjName
			--	,tblInv.strBarCode
			--	,tblInv.strBarCode2
			--	,(
			--		SELECT bitInvImgOnSI
			--		FROM tblCoOpts
			--		) AS bitShowImage
			--	,tblInvImg.imgData AS imgImage
			--	,tblInvoiceDocDT.strPartExtendedDesc AS strExtendedDesc
			--	,tblInv.bitInvExtDescOnSI AS bitShowExtendedDesc
			--	,ISNULL(tblInvCustomer.strItemCode, '') AS strItemCode
			--	,ISNULL(tblInvCustomer.strItemDesc, '') AS strItemDesc
			--FROM tblInvoiceDocDT
			--INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
			--INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
			--LEFT JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
			--	AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
			--LEFT JOIN tblProjects ON tblInvoiceDocDTPrj.strProjNumber = tblProjects.strProjNumber
			--LEFT JOIN tblInvImg ON tblInvoiceDocDT.strPartNumber = tblInvImg.strPartNumber
			--	AND tblInvImg.bitDefaultImage = 1
			--LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
			--	AND tblInvoiceDoc.strCustName = tblInvCustomer.strCustName
			--WHERE tblInvoiceDocDT.strInvDocID = @DocNumber
			--	AND tblInvoiceDocDT.bitDiscountTax = 0
			--ORDER BY tblInvoiceDocDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[ReportInvoiceDocDTSerial]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ReportInvoiceDocDTSerial] 	
	@DocNumber NVARCHAR(100)
AS
BEGIN	
    SELECT tblInvoiceDocDTSerial.*, ISNULL(tblInvSerialExt.bitDimensionExist,0) AS bitDimensionExist, ISNULL(tblInvSerialExt.strDimension,'') AS strDimension FROM tblInvoiceDocDTSerial INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTSerial.strInvDocID = tblInvoiceDocDT.strInvDocID AND tblInvoiceDocDTSerial.intLineNo = tblInvoiceDocDT.intLineNo LEFT JOIN tblInvSerialExt ON tblInvoiceDocDT.strPartNumber = tblInvSerialExt.strPartNumber AND tblInvoiceDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType WHERE tblInvoiceDocDTSerial.strInvDocID = @DocNumber AND tblInvSerialTypes.bitPrintInv = 1 ORDER BY tblInvoiceDocDTSerial.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[ReportProcessJob]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ReportProcessJob]
	@DocNumber NVARCHAR(100)
AS
BEGIN	
SELECT [ProcessDocID]
      ,[ServiceableItemCode]
      ,[JobTemplateID]
      ,[OwnerCode]
      ,[CustomerCode]
      ,[CustomerDetails]
      ,[SystemDate]
      ,[DocumentDate]
      ,[RequiredDate]
      ,[ReferenceNumber]
      ,[AddInfo]
      ,[Technician]
      ,[SalesName]
      ,[Dept]
      ,[DocType]
      ,[InventoryTotal]
      ,[LabourTotal]
      ,[BuyOutsTotal]
      ,[RecoveryTotal]
      ,[InventoryTotalF]
      ,[LabourTotalF]
      ,[BuyOutsTotalF]
      ,[RecoveryTotalF]
      ,[Term]
      ,[SubTotal]
      ,[VAT]
      ,[Total]
      ,[IsForeign]
      ,[SubTotalF]
      ,[VATF]
      ,[TotalF]
      ,[IsFromQuote]
      ,[QuoteDocID]
      ,[Notes]
      ,[Printed]
      ,[Emailed]
      ,[Cleared]
      ,[Currency]
      ,[DiscPerc]
      ,[DiscAmt]
      ,[DiscAmtF]
      ,[RevisionNumber]
      ,[Exchange]
      ,[SubFormated]
      ,[VATFormatted]
      ,[TotFormatted]
      ,[DiscFormatted]
      ,[CreatedDate]
      ,[UpdatedDate]
      ,[CreatedBy]
      ,[UpdatedBy]
      ,[SOReasonCode]
      ,[DelMethodCode]
      ,[TotalWeight]
      ,[TotalVolWeight]
      ,[DeliveryCost]
      ,[DeliveryCostF]
      ,[DeliveryCostFormatted]
      ,[JobStatusType]
      ,[StatusTypeCode]
	  ,[VATNo]
	  ,[ShipTo]
  FROM [dbo].[tblWSProcessDoc]
WHERE ProcessDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[ReportServiceableItemDoc]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ReportServiceableItemDoc] 
	@DocNumber NVARCHAR(100)
AS
BEGIN	
	Select tblWSServiceableItem.ServiceableItemCode,tblWSServiceableItem.IsInternalAsset ,tblWSServiceableItem.CreatedDate,tblWSServiceableItem.NextServiceDate ,tblWSServiceableItem.AssetNumber,tblWSServiceableItem.CustomerDetails,tblWSServiceableItem.OwnerDetails ,tblWSServiceableItemType.ServiceableItemTypeDescription from tblWSServiceableItem inner join tblWSServiceableItemType on tblWSServiceableItem.ServiceableItemTypeId = tblWSServiceableItemType.ServiceableItemTypeId  where ServiceableItemCode = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[RequisitionReasonInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/***************End [GetLinesCheckSecurity]***************/

/***************Start [RequisitionReasonInsert]***************/

-------------------------------
CREATE PROCEDURE [dbo].[RequisitionReasonInsert]

@strRequisitionReasonCode NVARCHAR(20),
@strRequisitionReasonDesc NVARCHAR(100),
@bitInactive BIT

AS
BEGIN	
	Insert into tblRequisitionReasons(strIRReasonCode, strIRReasonDesc, bitInactive) VALUES (@strRequisitionReasonCode,@strRequisitionReasonDesc, @bitInactive)
END
GO
/****** Object:  StoredProcedure [dbo].[RequisitionReasonUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/***************End [RequisitionReasonInsert]***************/

/***************Start [RequisitionReasonUpdate]***************/

-------------------------------
CREATE PROCEDURE [dbo].[RequisitionReasonUpdate]
	@strRequisitionReasonCode nvarchar(20),
	@strRequisitionReasonDesc nvarchar(100),
	@bitInactive bit,
	@lngID bigint
AS
BEGIN
	
UPDATE [tblRequisitionReasons]
   SET [strIRReasonCode] = @strRequisitionReasonCode
      ,[strIRReasonDesc] = @strRequisitionReasonDesc
      ,[bitInactive] = @bitInactive
 WHERE lngID = @lngID
END
GO
/****** Object:  StoredProcedure [dbo].[RptGetBinItemsForSetup]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [ManWIPBin_List] ***********/

/*********** Start [RptGetBinItemsForSetup] ***********/
CREATE PROCEDURE [dbo].[RptGetBinItemsForSetup]
(
	-- Add the parameters for the stored procedure here
	@LocName NVARCHAR(100),
	@Search NVARCHAR(100) = NULL,
	@IsIncludeInActive BIT,
	@IsItem BIT = 1
)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets FROM
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	IF @IsItem = 1
		BEGIN
			SELECT 
				0 AS 'BinId',
				tblInvExtBin.strPartNumber AS 'BinCode',
				tblInv.strDesc AS 'Description', 
				ISNULL(SUM(decAvail),0) AS 'OnHand' 
			FROM tblInvExtBin INNER JOIN tblInv ON tblInvExtBin.strPartNumber = tblInv.strPartNumber
			WHERE strLocName = @LocName AND ((tblInvExtBin.strPartNumber LIKE '%' + @Search + '%' OR tblInv.strDesc LIKE '%' + @Search + '%') OR @Search IS NULL)
			AND ((@IsIncludeInActive = 1 AND (tblInv.bitInactive = 0 OR tblInv.bitInactive = 1)) OR (@IsIncludeInActive = 0 AND tblInv.bitInactive = 0))
			AND intType=1
			GROUP BY tblInvExtBin.strPartNumber,tblInv.strDesc
			ORDER BY tblInvExtBin.strPartNumber
		END
	ELSE
		BEGIN
			SELECT 
				lngBinId AS 'BinId',
				tblInvLocBin.strBinCode AS 'BinCode',
				tblInvLocBin.strDescription AS 'Description', 
				ISNULL(SUM(decAvail),0) AS 'OnHand' 
			FROM tblInvExtBin INNER JOIN tblInvLocBin ON lngBinId = lngId INNER JOIN tblInv ON tblInvExtBin.strPartNumber = tblInv.strPartNumber
			WHERE tblInvExtBin.strLocName = @LocName AND ((tblInvLocBin.strBinCode LIKE '%' + @Search + '%' OR tblInvLocBin.strDescription LIKE '%' + @Search + '%') OR @Search IS NULL)
			AND ((@IsIncludeInActive = 1 AND (tblInv.bitInactive = 0 OR tblInv.bitInactive = 1)) OR (@IsIncludeInActive = 0 AND tblInv.bitInactive = 0))
			GROUP BY lngBinId,tblInvLocBin.strBinCode,tblInvLocBin.strDescription
			ORDER BY tblInvLocBin.strBinCode
		END
END
GO
/****** Object:  StoredProcedure [dbo].[RptOrigInvNew]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*****************End  [SPPickTicket_SubReportData]****************************/

/***********************Start [RptOrigInvNew]********************************************/

CREATE PROCEDURE [dbo].[RptOrigInvNew]
(
	@SQstrInvDocID AS NVARCHAR(200),
	@SQModules AS NVARCHAR(200),
	@blnBPToolsMode AS BIT,
	@SQUserName AS NVARCHAR(200),
	@IsOrder AS BIT,
	@IsQuote AS BIT
)
AS
BEGIN
DECLARE @iterator AS INT
DECLARE @rowcount as int 
DECLARE @rowiterator as int = 1
DECLARE @doc as NVARCHAR(200)
DECLARE @maxRev AS INT

CREATE TABLE #Temp
(
	ROWID INT IDENTITY(1,1),
    strDocNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS, 
)
CREATE TABLE #Temp1
(
	ROWID INT IDENTITY(1,1),
	strDocNumber NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
    intRevisionNumber INT, 
)
CREATE TABLE #Temp2
(
	EntID bigint,
	ProcessDocID  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	--lngJourID INT,
	SystemDate DATETIME,
	DocumentDate DATETIME,
	CreatedBy  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	CustomerCode  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	Total Money,
	CustomerDetails  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	RevisionNumber INT,
	Module INT
)
	IF @blnBPToolsMode = 0 
	BEGIN
			INSERT INTO #Temp SELECT DISTINCT ProcessDocID FROM tblWSProcessDocREV INNER JOIN tblCustomers ON tblWSProcessDocREV.CustomerCode = tblCustomers.strCustName WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) AND ProcessDocID = @SQstrInvDocID -- ORDER BY strInvDocID, lngEntID

			INSERT INTO #Temp1 SELECT DISTINCT ProcessDocID, tblWSProcessDocREV.RevisionNumber FROM tblWSProcessDocREV INNER JOIN tblCustomers ON tblWSProcessDocREV.CustomerCode = tblCustomers.strCustName WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) AND ProcessDocID = @SQstrInvDocID -- ORDER BY strInvDocID, lngEntID

			IF(@IsOrder =1 OR @IsQuote =1)
			BEGIN
			INSERT INTO #Temp2
			--SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strCustName, decTotal, strCustDesc, tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) AND strInvDocID = @SQstrInvDocID  ORDER BY strInvDocID, lngEntID		
			SELECT EntID, ProcessDocID, SystemDate, DocumentDate, CreatedBy, CustomerCode, Total, strCustDesc, RevisionNumber, Module FROM tblWSProcessDocREV INNER JOIN tblCustomers ON tblWSProcessDocREV.CustomerCode = tblCustomers.strCustName WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) AND ProcessDocID = @SQstrInvDocID  ORDER BY ProcessDocID, EntID
			END
			ELSE
			BEGIN
			INSERT INTO #Temp2
			SELECT lngEntID, strInvDocID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strCustName, decTotal, strCustDesc, tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) AND strInvDocID = @SQstrInvDocID  ORDER BY strInvDocID, lngEntID		
			END

		
	END 
	ELSE
	BEGIN
			INSERT INTO #Temp SELECT DISTINCT ProcessDocID FROM tblWSProcessDocREV INNER JOIN tblCustomers ON tblWSProcessDocREV.CustomerCode = tblCustomers.strCustName -- ORDER BY strInvDocID, lngEntID

			INSERT INTO #Temp1 SELECT DISTINCT ProcessDocID, tblWSProcessDocREV.RevisionNumber FROM tblWSProcessDocREV INNER JOIN tblCustomers ON tblWSProcessDocREV.CustomerCode = tblCustomers.strCustName -- ORDER BY strInvDocID, lngEntID

			IF(@IsOrder =1 OR @IsQuote =1)
			BEGIN
			INSERT INTO #Temp2
			--SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strCustName, decTotal, strCustDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName  ORDER BY strInvDocID, lngEntID
			SELECT EntID, ProcessDocID, SystemDate, DocumentDate, CreatedBy, CustomerCode, Total, CustomerDetails,RevisionNumber, Module FROM tblWSProcessDocREV INNER JOIN tblCustomers ON tblWSProcessDocREV.CustomerCode = tblCustomers.strCustName  ORDER BY ProcessDocID, EntID
			END
			ELSE
			BEGIN
			SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strCustName, decTotal, strCustDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName  ORDER BY strInvDocID, lngEntID
			END
		
	END

SELECT @rowcount = COUNT(DISTINCT(strDocNumber))  from #Temp

WHILE @rowiterator <= @rowcount
BEGIN
	SELECT @doc = strDocNumber from #Temp WHERE ROWID = @rowiterator
	PRINT @doc
	SELECT @maxRev = MAX(intRevisionNumber) from #Temp1 WHERE strDocNumber = @doc
	PRINT @maxRev
	SET @iterator = @maxRev

	WHILE @iterator <= @maxRev AND @iterator>=0
	BEGIN
		IF NOT EXISTS (SELECT * from #Temp1 WHERE strDocNumber = @doc AND intRevisionNumber = @iterator) 
		IF(@IsOrder =1 OR @IsQuote =1)
		BEGIN
			INSERT INTO #Temp2 SELECT tblWSProcessDocREV.EntID, tblWSProcessDocREV.ProcessDocID, SystemDate, DocumentDate, CreatedBy, CustomerCode, Total, 
			CustomerDetails,RevisionNumber, Module 
			FROM tblWSProcessDocREV INNER JOIN tblCustomers ON tblWSProcessDocREV.CustomerCode = tblCustomers.strCustName
			 WHERE tblWSProcessDocREV.ProcessDocID = @doc AND RevisionNumber = @iterator
		END
		ELSE
		BEGIN
		INSERT INTO #Temp2 SELECT tblInvoiceDocREV.lngEntID, tblInvoiceDocREV.strInvDocID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strCustName, decTotal, 
			tblCustomers.strCustDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule 
			FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName
			 WHERE tblInvoiceDocREV.strInvDocID = @doc AND intRevisionNumber = @iterator
		END
		SET @iterator = @iterator - 1
	END

	SET @rowiterator = @rowiterator + 1
END 

SELECT * FROM #Temp2
DROP TABLE #Temp
DROP TABLE #Temp1
DROP TABLE #Temp2
END
GO
/****** Object:  StoredProcedure [dbo].[RptOrigInvNewDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/***********************End [RptOrigInvNew]********************************************/

/***********************Start [RptOrigInvNewDT]********************************************/
CREATE PROCEDURE [dbo].[RptOrigInvNewDT]
(
@Modules AS NVARCHAR(200),
@DocID AS NVARCHAR(200),
@SubType AS NVARCHAR(200),
@IsOrder AS BIT,
@IsQuote AS BIT
)
AS
BEGIN
DECLARE @iterator AS INT
DECLARE @rowcount as int 
DECLARE @rowiterator as int = 1
DECLARE @doc as NVARCHAR(200)
DECLARE @maxRev AS INT

CREATE TABLE #Temp
(
	ROWID INT IDENTITY(1,1),
    strDocNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS, 
)
CREATE TABLE #Temp1
(
	ROWID INT IDENTITY(1,1),
	strDocNumber NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
    intRevisionNumber INT, 
)
CREATE TABLE #Temp2
(
	EntID BIGINT,
	[LineNo]  INT,
	PartNumber  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	Location  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	PartDesc  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	Qty  Money,
	Unit  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	PriceEaExc  Money,
	LineDiscPerc  Money,
	TaxCode  NVARCHAR(100)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	LineTaxAmt  Money,
	LineTotInc  Money,
	RevisionNumber  INT,
	RevisionDate DATETIME,
	TransactionFieldID  UNIQUEIDENTIFIER,
	ProcessDocID  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
)


IF @SubType = 'Contract Billing'
BEGIN
	--INSERT INTO #TEMP SELECT DISTINCT tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(',')))) AND tblInvoiceDocREV.strInvDocID = @SQstrInvDocID --ORDER BY intRevisionNumber

	INSERT INTO #TEMP SELECT DISTINCT tblWSProcessDocREV.ProcessDocID FROM tblWSProcessDocREVDT INNER JOIN tblWSProcessDocREV on tblWSProcessDocREV.EntID = tblWSProcessDocREVDT.EntID WHERE tblWSProcessDocREV.EntID  IN (SELECT EntID FROM tblWSProcessDocREV WHERE tblWSProcessDocREV.Module IN (SELECT Value FROM [fnSplitStringAsTable]((@Modules),(',')))) AND tblWSProcessDocREV.ProcessDocID = @DocID --ORDER BY intRevisionNumber

	--INSERT INTO #Temp1 SELECT DISTINCT tblInvoiceDocREV.strInvDocID,intRevisionNumber FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@Modules),(',')))) AND tblInvoiceDocREV.strInvDocID = @DocID --ORDER BY intRevisionNumber
	INSERT INTO #Temp1 SELECT DISTINCT tblWSProcessDocREV.ProcessDocID,RevisionNumber FROM tblWSProcessDocREVDT INNER JOIN  tblWSProcessDocREV on tblWSProcessDocREV.EntID = tblWSProcessDocREVDT.EntID WHERE tblWSProcessDocREV.EntID  IN (SELECT EntID FROM tblWSProcessDocREV WHERE tblWSProcessDocREV.Module IN (SELECT Value FROM [fnSplitStringAsTable]((@Modules),(',')))) AND tblWSProcessDocREV.ProcessDocID = @DocID --ORDER BY intRevisionNumber

	INSERT INTO #Temp2
	--SELECT tblInvoiceDocREV.lngEntID, intLineNo, strPartNumber, strLocation, strPartDesc,decQty, strUnit as Unit ,decPriceEaExc as Price ,decLineDiscPerc as Discount ,strTaxCode as TaxCode,decLineTaxAmt as TaxAmount,decLineTotExc as decLineTotInc, intRevisionNumber, dteRevisionDate, uidTransactionFieldID, tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@Modules),(',')))) AND tblInvoiceDocREV.strInvDocID = @DocID ORDER BY intRevisionNumber
	--, RevisionDate (Not in table)
	SELECT tblWSProcessDocREV.EntID, [LineNo], PartNumber, Location, PartDesc,QuotedQty, Unit ,PriceEaExc ,LineDiscPerc ,TaxCode ,LineTaxAmt ,LineTotExc , RevisionNumber,SystemDate as RevisionDate, TransactionFieldID, tblWSProcessDocREV.ProcessDocID FROM tblWSProcessDocREVDT INNER JOIN  tblWSProcessDocREV on tblWSProcessDocREV.EntID = tblWSProcessDocREVDT.EntID WHERE tblWSProcessDocREV.EntID  IN (SELECT EntID FROM tblWSProcessDocREV WHERE tblWSProcessDocREV.Module IN (SELECT Value FROM [fnSplitStringAsTable]((@Modules),(',')))) AND tblWSProcessDocREV.ProcessDocID = @DocID ORDER BY RevisionNumber
	
END
ELSE
BEGIN
	--INSERT INTO #TEMP SELECT DISTINCT tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@Modules),(',')))) AND tblInvoiceDocREV.strInvDocID = @DocID --ORDER BY intRevisionNumber
INSERT INTO #TEMP SELECT DISTINCT tblWSProcessDocREV.ProcessDocID FROM tblWSProcessDocREVDT INNER JOIN  tblWSProcessDocREV on tblWSProcessDocREV.EntID = tblWSProcessDocREVDT.EntID WHERE tblWSProcessDocREV.EntID  IN (SELECT EntID FROM tblWSProcessDocREV WHERE tblWSProcessDocREV.Module IN (SELECT Value FROM [fnSplitStringAsTable]((@Modules),(',')))) AND tblWSProcessDocREV.ProcessDocID = @DocID --ORDER BY intRevisionNumber

INSERT INTO #Temp1 SELECT DISTINCT tblWSProcessDocREV.ProcessDocID,RevisionNumber FROM tblWSProcessDocREVDT INNER JOIN  tblWSProcessDocREV on tblWSProcessDocREV.EntID = tblWSProcessDocREVDT.EntID WHERE tblWSProcessDocREVDT.EntID  IN (SELECT EntID FROM tblWSProcessDocREV WHERE tblWSProcessDocREV.Module IN (SELECT Value FROM [fnSplitStringAsTable]((@Modules),(',')))) AND tblWSProcessDocREV.ProcessDocID = @DocID --ORDER BY intRevisionNumber
			
IF @IsOrder =1 OR @IsQuote=1	
	BEGIN	
		INSERT INTO #Temp2
			--SELECT tblInvoiceDocREV.lngEntID, intLineNo, strPartNumber, strLocation, strPartDesc,decQty, strUnit as Unit ,decPriceEaInc as Price ,decLineDiscPerc as Discount ,strTaxCode as TaxCode,decLineTaxAmt as TaxAmount,decLineTotInc, intRevisionNumber, dteRevisionDate, uidTransactionFieldID, tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(',')))) AND tblInvoiceDocREV.strInvDocID = @SQstrInvDocID ORDER BY intRevisionNumber	    
			--SELECT tblWSProcessDocREV.EntID, [LineNo], PartNumber, Location, PartDesc,QuotedQty, Unit ,PriceEaInc ,LineDiscPerc ,TaxCode,LineTaxAmt ,LineTotInc, RevisionNumber,SystemDate as RevisionDate , TransactionFieldID, tblWSProcessDocREV.ProcessDocID FROM tblWSProcessDocREVDT INNER JOIN  tblWSProcessDocREV on tblWSProcessDocREV.EntID = tblWSProcessDocREVDT.EntID WHERE tblWSProcessDocREV.EntID  IN (SELECT EntID FROM tblWSProcessDocREV WHERE tblWSProcessDocREV.Module IN (SELECT Value FROM [fnSplitStringAsTable]((@Modules),(',')))) AND tblWSProcessDocREV.ProcessDocID = @DocID ORDER BY RevisionNumber--	
			
			SELECT tblWSProcessDocREV.EntID
				,[LineNo]
				,PartNumber
				,Location
				,PartDesc
				--,QuotedQty
				,CASE @IsOrder WHEN 1 THEN JobQty ELSE QuotedQty END 
				,Unit
				,PriceEaInc
				,LineDiscPerc
				,TaxCode
				,LineTaxAmt
				,LineTotInc
				,RevisionNumber
				,SystemDate AS RevisionDate
				,TransactionFieldID
				,tblWSProcessDocREV.ProcessDocID
			FROM tblWSProcessDocREVDT
			INNER JOIN tblWSProcessDocREV ON tblWSProcessDocREV.EntID = tblWSProcessDocREVDT.EntID
			WHERE tblWSProcessDocREV.EntID IN (
			SELECT EntID
			FROM tblWSProcessDocREV
			WHERE tblWSProcessDocREV.Module IN (
					SELECT Value
					FROM [fnSplitStringAsTable]((@Modules), (','))
				)
			)
			AND tblWSProcessDocREV.ProcessDocID = @DocID
			ORDER BY RevisionNumber
	END
ELSE
	BEGIN 	
		INSERT INTO #Temp2
		SELECT tblInvoiceDocREV.lngEntID AS EntID
		,intLineNo AS [LineNo]
		,strPartNumber AS PartNumber
		,strLocation AS Location	
		,strPartDesc AS PartDesc
		,decQty AS Qty
		,strUnit AS Unit
		,decPriceEaInc AS PriceEaInc
		,decLineDiscPerc AS LineDiscPerc
		,strTaxCode AS TaxCode
		,decLineTaxAmt AS LineTaxAmt
		,decLineTotInc AS LineTotInc
		,intRevisionNumber AS RevisionNumber
		,dteRevisionDate AS RevisionDate
		,uidTransactionFieldID AS TransactionFieldID
		,tblInvoiceDocREV.strInvDocID AS DocID
	FROM tblInvoiceDocREVDT 
	INNER JOIN tblInvoiceDocREV ON tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID
	WHERE tblInvoiceDocREV.lngEntID IN (
	SELECT lngEntID
	FROM tblInvoiceDocREV
	WHERE tblInvoiceDocREV.intModule IN (
			SELECT Value
			FROM [fnSplitStringAsTable]((@Modules), (','))
			)
	)
AND tblInvoiceDocREV.strInvDocID = @DocID
ORDER BY intRevisionNumber
	END

END
	SELECT @rowcount = COUNT(DISTINCT(strDocNumber))  from #Temp
			
WHILE @rowiterator <= @rowcount
	BEGIN
		SELECT @doc = strDocNumber from #Temp WHERE ROWID = @rowiterator
		PRINT @doc
		SELECT @maxRev = MAX(intRevisionNumber) from #Temp1 WHERE strDocNumber = @doc
		PRINT @maxRev
		SET @iterator = @maxRev
	
		WHILE @iterator <= @maxRev AND @iterator>=0
		BEGIN
			IF NOT EXISTS (SELECT * from #Temp1 WHERE strDocNumber = @doc AND intRevisionNumber = @iterator) 
			BEGIN	
			IF(@IsOrder =1  OR @IsQuote=1)	
			BEGIN		
			--	INSERT INTO #Temp2 SELECT tblWSProcessDocREV.EntID, [LineNo], PartNumber, Location, PartDesc,QuotedQty, Unit ,PriceEaInc,LineDiscPerc ,TaxCode,LineTaxAmt,LineTotInc, RevisionNumber,  TransactionFieldID, tblWSProcessDocREV.ProcessDocID FROM tblWSProcessDocREVDT INNER JOIN  
			--	tblWSProcessDocREV on tblWSProcessDocREV.EntID = tblWSProcessDocREVDT.EntID WHERE tblWSProcessDocREV.ProcessDocID = @doc AND RevisionNumber = @iterator
			INSERT INTO #Temp2

			SELECT tblWSProcessDocREV.EntID
				,[LineNo]
				,PartNumber
				,Location
				,PartDesc
				--,QuotedQty
				,CASE 
						WHEN (@IsOrder=1) THEN JobQty					
						ELSE QuotedQty
					END AS Qty 
				,Unit
				,PriceEaInc
				,LineDiscPerc
				,TaxCode
				,LineTaxAmt
				,LineTotInc
				,RevisionNumber
				,SystemDate AS RevisionDate
				,TransactionFieldID
				,tblWSProcessDocREV.ProcessDocID
			FROM tblWSProcessDocREVDT
			INNER JOIN tblWSProcessDocREV ON tblWSProcessDocREV.EntID = tblWSProcessDocREVDT.EntID
			WHERE tblWSProcessDocREV.ProcessDocID = @doc
				AND RevisionNumber = @iterator
			END
			ELSE
			BEGIN
			INSERT INTO #Temp2 SELECT tblInvoiceDocREV.lngEntID, intLineNo, strPartNumber, strLocation, strPartDesc,decQty, strUnit as Unit ,decPriceEaInc as Price ,decLineDiscPerc as Discount ,strTaxCode as TaxCode,decLineTaxAmt as TaxAmount,decLineTotInc, intRevisionNumber, dteRevisionDate, uidTransactionFieldID, tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  
			tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.strInvDocID = @doc AND intRevisionNumber = @iterator
	
			END
			END
			SET @iterator = @iterator - 1
		END
	
		SET @rowiterator = @rowiterator + 1
	END 
	
SELECT * FROM #Temp2 ORDER BY ProcessDocID, RevisionNumber, EntID, [LineNo] ASC
DROP TABLE #Temp
DROP TABLE #Temp1
DROP TABLE #Temp2	
END
GO
/****** Object:  StoredProcedure [dbo].[RptOrigInvNewDTSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [ImportPastelInvoiceDocPData]*****************************/

/******************* Start [RptOrigInvNewDTSales] ********************/
CREATE PROCEDURE [dbo].[RptOrigInvNewDTSales]
(
@Modules AS NVARCHAR(200),
@DocID AS NVARCHAR(200),
@IsSales AS BIT
)
AS
BEGIN
DECLARE @iterator AS INT
DECLARE @rowcount as int 
DECLARE @rowiterator as int = 1
DECLARE @doc as NVARCHAR(200)
DECLARE @maxRev AS INT

CREATE TABLE #Temp
(
	ROWID INT IDENTITY(1,1),
    strDocNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS, 
)
CREATE TABLE #Temp1
(
	ROWID INT IDENTITY(1,1),
	strDocNumber NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
    intRevisionNumber INT, 
)
CREATE TABLE #Temp2
(
	EntID BIGINT,
	[LineNo]  INT,
	PartNumber  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	Location  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	PartDesc  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	Qty  Money,
	Unit  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	Price  Money,
	Discount  Money,
	TaxCode  NVARCHAR(100)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	TaxAmount  Money,
	LineTotInc  Money,
	RevisionNumber  INT,
	RevisionDate DATETIME,
	TransactionFieldID  UNIQUEIDENTIFIER,
	InvDocID  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,

)

IF @IsSales = 0
	BEGIN
		INSERT INTO #TEMP SELECT DISTINCT tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@Modules),(',')))) AND tblInvoiceDocREV.strInvDocID = @DocID --ORDER BY intRevisionNumber

		INSERT INTO #Temp1 SELECT DISTINCT tblInvoiceDocREV.strInvDocID,intRevisionNumber FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@Modules),(',')))) AND tblInvoiceDocREV.strInvDocID = @DocID --ORDER BY intRevisionNumber

		INSERT INTO #Temp2
		SELECT tblInvoiceDocREV.lngEntID AS EntID, intLineNo AS [LineNo], strPartNumber AS PartNumber, strLocation AS Location, strPartDesc AS PartDesc,decQty AS Qty, strUnit as Unit ,decPriceEaExc as Price ,decLineDiscPerc as Discount ,strTaxCode as TaxCode,decLineTaxAmt as TaxAmount,decLineTotExc as decLineTotInc, intRevisionNumber, dteRevisionDate, uidTransactionFieldID, tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@Modules),(',')))) AND tblInvoiceDocREV.strInvDocID = @DocID ORDER BY intRevisionNumber
	END
	ELSE
	BEGIN
		INSERT INTO #TEMP SELECT DISTINCT tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@Modules),(',')))) AND tblInvoiceDocREV.strInvDocID = @DocID --ORDER BY intRevisionNumber

		INSERT INTO #Temp1 SELECT DISTINCT tblInvoiceDocREV.strInvDocID,intRevisionNumber FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@Modules),(',')))) AND tblInvoiceDocREV.strInvDocID = @DocID --ORDER BY intRevisionNumber

		INSERT INTO #Temp2
		SELECT tblInvoiceDocREV.lngEntID , intLineNo, strPartNumber, strLocation, strPartDesc,decQty, strUnit as Unit ,decPriceEaInc as Price ,decLineDiscPerc as Discount ,strTaxCode as TaxCode,decLineTaxAmt as TaxAmount,decLineTotInc, intRevisionNumber, dteRevisionDate, uidTransactionFieldID, tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@Modules),(',')))) AND tblInvoiceDocREV.strInvDocID = @DocID ORDER BY intRevisionNumber
	END
SELECT @rowcount = COUNT(DISTINCT(strDocNumber))  from #Temp
		
WHILE @rowiterator <= @rowcount
BEGIN
	SELECT @doc = strDocNumber from #Temp WHERE ROWID = @rowiterator
	PRINT @doc  
	SELECT @maxRev = MAX(intRevisionNumber) from #Temp1 WHERE strDocNumber = @doc
	PRINT @maxRev
	SET @iterator = @maxRev

	WHILE @iterator <= @maxRev AND @iterator>=0
	BEGIN
		IF NOT EXISTS (SELECT * from #Temp1 WHERE strDocNumber = @doc AND intRevisionNumber = @iterator) 
		BEGIN
			INSERT INTO #Temp2 SELECT tblInvoiceDocREV.lngEntID, intLineNo, strPartNumber, strLocation, strPartDesc,decQty, strUnit as Unit ,decPriceEaInc as Price ,decLineDiscPerc as Discount ,strTaxCode as TaxCode,decLineTaxAmt as TaxAmount,decLineTotInc, intRevisionNumber, dteRevisionDate, uidTransactionFieldID, tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  
			tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.strInvDocID = @doc AND intRevisionNumber = @iterator
		END
		SET @iterator = @iterator - 1
	END

	SET @rowiterator = @rowiterator + 1
END 

SELECT * FROM #Temp2 ORDER BY InvDocID, RevisionNumber, EntID, [LineNo] ASC
DROP TABLE #Temp
DROP TABLE #Temp1
DROP TABLE #Temp2

END
GO
/****** Object:  StoredProcedure [dbo].[RptOrigInvNewSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/******************* End [ReportInvoiceDocDT] ********************/

/******************* Start [RptOrigInvNewSales] ********************/

CREATE PROCEDURE [dbo].[RptOrigInvNewSales]
(
	@InvDocID AS NVARCHAR(200),	
	@IsBPToolsMode AS BIT,
	@UserName AS NVARCHAR(200)	
)
AS	
BEGIN
DECLARE @iterator AS INT
DECLARE @rowcount as int 
DECLARE @rowiterator as int = 1
DECLARE @doc as NVARCHAR(200)
DECLARE @maxRev AS INT

CREATE TABLE #Temp
(
	ROWID INT IDENTITY(1,1),
    strDocNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS, 
)
CREATE TABLE #Temp1
(
	ROWID INT IDENTITY(1,1),
	strDocNumber NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
    intRevisionNumber INT, 
)
CREATE TABLE #Temp2
(
	EntID BIGINT,
	InvDocID  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	JourID BIGINT,
	SystemDate DATETIME,
	JournalDate DATETIME,
	UserName  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	CustName  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	Total Money,
	CustDesc  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	RevisionNumber INT,
	Module INT
)
	IF @IsBPToolsMode = 0 
	BEGIN
			INSERT INTO #Temp SELECT DISTINCT strInvDocID FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @UserName)) AND strInvDocID = @InvDocID -- ORDER BY strInvDocID, lngEntID

			INSERT INTO #Temp1 SELECT DISTINCT strInvDocID, tblInvoiceDocREV.intRevisionNumber FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @UserName)) AND strInvDocID = @InvDocID -- ORDER BY strInvDocID, lngEntID

			INSERT INTO #Temp2
			SELECT lngEntID AS EntID , strInvDocID AS InvDocID, lngJourID AS JourID, dteSystemDate AS SystemDate, dteJournalDate AS JournalDate, strUserName AS UserName, tblInvoiceDocREV.strCustName AS CustName, decTotal AS Total, strCustDesc AS CustDesc, tblInvoiceDocREV.intRevisionNumber AS RevisionNumber, tblInvoiceDocREV.intModule AS Module FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @UserName)) AND strInvDocID = @InvDocID  ORDER BY strInvDocID, lngEntID
		
	END 
	ELSE
	BEGIN
			INSERT INTO #Temp SELECT DISTINCT strInvDocID FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName -- ORDER BY strInvDocID, lngEntID

			INSERT INTO #Temp1 SELECT DISTINCT strInvDocID, tblInvoiceDocREV.intRevisionNumber FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName -- ORDER BY strInvDocID, lngEntID

			INSERT INTO #Temp2
			SELECT lngEntID AS EntID , strInvDocID AS InvDocID, lngJourID AS JourID, dteSystemDate AS SystemDate, dteJournalDate AS JournalDate, strUserName AS UserName, tblInvoiceDocREV.strCustName AS CustName, decTotal AS Total, strCustDesc AS CustDesc,tblInvoiceDocREV.intRevisionNumber AS RevisionNumber, tblInvoiceDocREV.intModule AS Module  FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName  ORDER BY strInvDocID, lngEntID
		
	END

SELECT @rowcount = COUNT(DISTINCT(strDocNumber))  from #Temp

WHILE @rowiterator <= @rowcount
BEGIN
	SELECT @doc = strDocNumber from #Temp WHERE ROWID = @rowiterator
	PRINT @doc
	SELECT @maxRev = MAX(intRevisionNumber) from #Temp1 WHERE strDocNumber = @doc
	PRINT @maxRev
	SET @iterator = @maxRev

	WHILE @iterator <= @maxRev AND @iterator>=0
	BEGIN
		IF NOT EXISTS (SELECT * from #Temp1 WHERE strDocNumber = @doc AND intRevisionNumber = @iterator) 
		BEGIN
			INSERT INTO #Temp2 SELECT tblInvoiceDocREV.lngEntID, tblInvoiceDocREV.strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strCustName, decTotal, 
			tblCustomers.strCustDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule 
			FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName
			 WHERE tblInvoiceDocREV.strInvDocID = @doc AND intRevisionNumber = @iterator
		END
		SET @iterator = @iterator - 1
	END

	SET @rowiterator = @rowiterator + 1
END 

SELECT * FROM #Temp2
DROP TABLE #Temp
DROP TABLE #Temp1
DROP TABLE #Temp2
END
GO
/****** Object:  StoredProcedure [dbo].[SalesCycleRunOutputField]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [SalesCycleRunOutputField] ***********/
CREATE PROCEDURE [dbo].[SalesCycleRunOutputField]
( 
	@CycName VARCHAR(50)
)
AS
BEGIN
	SELECT tblcyclesc.strcustname AS CycName, 
       tblcustomers.strcustdesc AS CustDesc, 
       Isnull(tblcustomers.strtaxcode, '') AS TaxCode, 
       tblcustomers.intdelmethod AS DelMethod
	FROM   tblcyclesc 
		   INNER JOIN tblcustomers 
				   ON tblcyclesc.strcustname = tblcustomers.strcustname 
	WHERE  ( tblcyclesc.strcycname = @CycName ) 
	ORDER  BY tblcyclesc.strcustname 
END 
GO
/****** Object:  StoredProcedure [dbo].[SalesCyclesSaveData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [SalesCyclesSaveData] ***********/
CREATE PROCEDURE [dbo].[SalesCyclesSaveData]  
(   
 @OldCycName VARCHAR(50),  
 @CycName VARCHAR(50),  
 @Reference VARCHAR(50),  
 @LastProcDate DATETIME,  
 @isEdit BIT,  
 @CyclesCTable CyclesCTableType READONLY,  
 @CyclesITable CyclesITableType READONLY  
)  
AS  
BEGIN  
 IF(@isEdit = 1)  
 BEGIN  
  DELETE FROM tblCycles WHERE strCycName = @OldCycName;  
 END  
 INSERT INTO tblCycles VALUES (@CycName,@Reference,@LastProcDate);  
  INSERT INTO tblCyclesC (  
   strCycName,  
   strCustName  
  ) SELECT strCycName,  
   strCustName FROM @CyclesCTable;  
  
  INSERT INTO tblCyclesI (  
   strCycName,  
   strPartNumber,  
   strDesc,  
   decQty,  
   decPrice,
   strUnit  
  ) SELECT strCycName,  
   strPartNumber,  
   strDesc,  
   decQty,  
   decPrice,
   strUnit FROM @CyclesITable;  
END   
GO
/****** Object:  StoredProcedure [dbo].[SalesExpenseInserted]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [SalesExpenseInserted] ***********/
CREATE PROCEDURE [dbo].[SalesExpenseInserted]
(
	@IsCurrentYear BIT
)
AS
BEGIN

	IF(@IsCurrentYear = 1)
		SELECT lngJourID AS JourID,	intGLNumber AS GLNumber
			FROM tblJournalEnt 
			WHERE (intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets)) 
			AND (intGLNumber NOT IN (SELECT intGLRevenue FROM tblAccountSets)) 
			AND (intGLNumber NOT IN (SELECT intGLExpCOGS FROM tblAccountSets)) 
			AND (intGLNumber NOT IN (SELECT intGLVariance FROM tblAccountSets))
	ELSE
		SELECT lngJourID AS JourID,	intGLNumber AS GLNumber
			FROM tblJournalEntLY 
			WHERE (intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets)) 
			AND (intGLNumber NOT IN (SELECT intGLRevenue FROM tblAccountSets)) 
			AND (intGLNumber NOT IN (SELECT intGLExpCOGS FROM tblAccountSets)) 
			AND (intGLNumber NOT IN (SELECT intGLVariance FROM tblAccountSets))
END
GO
/****** Object:  StoredProcedure [dbo].[SalesOrderEDIOrdersInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [TaxCodeInsert] ***********/

/*********** Start [SalesOrderEDIOrdersInsert] ***********/
CREATE PROCEDURE [dbo].[SalesOrderEDIOrdersInsert]
(
@EDI AS NVARCHAR(50),
@PONumber AS NVARCHAR(50),
@DocNumber AS NVARCHAR(50),
@StoreGLN AS NVARCHAR(50),
@CustomerGLN AS NVARCHAR(50),
@IsUTrans AS BIT
)
AS
BEGIN
INSERT INTO tblSalesOrderEDIOrders (strEDI, strPONumber, strOrdDocID, strStoreGLN, strCustomerGLN, blnUTrans) VALUES ( @EDI, @PONumber, @DocNumber,  @StoreGLN, @CustomerGLN, @IsUTrans)
END
GO
/****** Object:  StoredProcedure [dbo].[SalesOrderEDISaveData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [SaveFilesSalesOrderEDI] ***********/

CREATE PROCEDURE [dbo].[SalesOrderEDISaveData] 
	@OldEDI VARCHAR(50)
	,@NewEDI VARCHAR(50)
	,@EDIDescription VARCHAR(50)
	,@GLN VARCHAR(50)
	,@EDISwitch VARCHAR(50)
	,@FTPAddress VARCHAR(max)
	,@FTPUser VARCHAR(max)
	,@FTPPassword VARCHAR(max)
	,@IsInactive BIT
	,@IsEdit BIT
	,@SalesOrderEDICustomersTable SalesOrderEDICustomersTableType READONLY
	,@SalesOrderEDITable SalesOrderEDITableType READONLY
AS
BEGIN
	IF (@IsEdit = 1)
	BEGIN
		UPDATE tblSalesOrderEDIs
		SET strEDI = @NewEDI
			,strEDIDescription = @EDIDescription
			,strGLN = @GLN
			,strEDISwitch = @EDISwitch
			,strFTPAddress = @FTPAddress
			,strFTPUser = @FTPUser
			,strFTPPassword = @FTPPassword
			,bitInactive = @IsInactive
		WHERE strEDI = @OldEDI;

		DELETE
		FROM tblSalesOrderEDICustomers
		WHERE strEDI = @NewEDI;

		DELETE
		FROM tblSalesOrderEDIF
		WHERE strEDI = @NewEDI;
	END
	ELSE
	BEGIN
		INSERT INTO tblSalesOrderEDIs
		VALUES (
			@NewEDI
			,@EDIDescription
			,@GLN
			,@EDISwitch
			,@FTPAddress
			,@FTPUser
			,@FTPPassword
			,@IsInactive
			,GETDATE()
			);

		DELETE
		FROM tblSalesOrderEDICustomers
		WHERE strEDI = @NewEDI;
	END

	INSERT INTO tblSalesOrderEDICustomers (
		strEDI
		,strCustName
		,strGLN
		)
	SELECT strEDI
		,strCustName
		,strGLN
	FROM @SalesOrderEDICustomersTable;

	INSERT INTO tblSalesOrderEDIF (
		strEDI
		,strFileName
		,dteModified
		,strType
		,intSize
		,strUserName
		,bitEnc
		,imgFile
		,intFileType
		,intStatus
		)
	SELECT strEDI
		,strFileName
		,dteModified
		,strType
		,intSize
		,strUserName
		,bitEnc
		,imgFile
		,intFileType
		,intStatus
	FROM @SalesOrderEDITable;
END
GO
/****** Object:  StoredProcedure [dbo].[SalesOrderEDISetProcessed]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateSalesOrderEDIOrders] ***********/

/*********** Start [SalesOrderEDISetProcessed] ***********/
CREATE PROCEDURE [dbo].[SalesOrderEDISetProcessed] 
@EDI VARCHAR(50),
@FileName VARCHAR(400)
AS
BEGIN
	UPDATE tblSalesOrderEDIF 
	SET 
		intStatus = 2 
	WHERE 
		strEDI = @EDI and 
		strFileName = @FileName
END 
GO
/****** Object:  StoredProcedure [dbo].[SalesOrderReasonInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SalesOrderReasonInsert]

@strSOReasonCode NVARCHAR(20),
@strSOReasonDesc NVARCHAR(100),
@bitInactive BIT

AS
BEGIN	
	Insert into tblSalesOrderReasons(strSOReasonCode, strSOReasonDesc, bitInactive) VALUES (@strSOReasonCode, @strSOReasonDesc, @bitInactive)
END
GO
/****** Object:  StoredProcedure [dbo].[SalesOrderReasonUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SalesOrderReasonUpdate]
	@strSOReasonCode nvarchar(20),
	@strSOReasonDesc nvarchar(100),
	@bitInactive bit,
	@lngID bigint
AS
BEGIN	
UPDATE [tblSalesOrderReasons]
   SET [strSOReasonCode] = @strSOReasonCode
      ,[strSOReasonDesc] = @strSOReasonDesc
      ,[bitInactive] = @bitInactive
 WHERE lngID = @lngID
END
GO
/****** Object:  StoredProcedure [dbo].[SalesPerosnFUpdateWithTableType]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateShipmentAuditTrailData] ***********/

/*********** Start [SalesPerosnFUpdateWithTableType] ***********/

CREATE PROCEDURE [dbo].[SalesPerosnFUpdateWithTableType]
    (
      @salesPerosnFUpdateTableType AS SalesPerosnFUpdatesTableType READONLY
    )
AS
    BEGIN
        Insert into tblSalesPersonF(strSalesName,strFileName,dteModified,strType,intSize,strUserName,bitEnc,imgFile)
		select * from @salesPerosnFUpdateTableType
    END;
GO
/****** Object:  StoredProcedure [dbo].[SalesSaveData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [PurchaseCopySoSerialNumber] ***********/

/*********** Start [SalesSaveData] ***********/
CREATE PROCEDURE [dbo].[SalesSaveData]
	@tblSalesREDT SaveSalesREDTTableType READONLY,
	@tblInvoiceDocDimensions AS SaveInvoiceDocDimensionsTableType READONLY,
	@strREName nvarchar(50),
	@dteLastProcDate smalldatetime = null,
	@strCustName nvarchar(50) = NULL,
	@strSoldTo nvarchar(500) ,
	@strShipTo nvarchar(500) ,
	@strReference nvarchar(50) ,
	@decSubTotal money ,
	@decVAT money ,
	@decTotal money ,
	@strNotes nvarchar(max) ,
	@intPaidBy int ,
	@intAccount nvarchar(30) =NULL,
	@strSalesName nvarchar(50) =NULL,
	@strAddInfo nvarchar(50) ,
	@decDiscPerc money ,
	@decDiscAmt money ,
	@strPaidBy nvarchar(20) 
AS
BEGIN
	
	DELETE FROM tblSalesRE WHERE strREName = @strREName

	INSERT INTO [dbo].[tblSalesRE]
           ([strREName]
           ,[dteLastProcDate]
           ,[strCustName]
           ,[strSoldTo]
           ,[strShipTo]
           ,[strReference]
           ,[decSubTotal]
           ,[decVAT]
           ,[decTotal]
           ,[strNotes]
           ,[intPaidBy]
           ,[intAccount]
           ,[strSalesName]
           ,[strAddInfo]
           ,[decDiscPerc]
           ,[decDiscAmt]
           ,[strPaidBy])
     VALUES
           (@strREName 
			,@dteLastProcDate
			,@strCustName
			,@strSoldTo 
			,@strShipTo 
			,@strReference 
			,@decSubTotal
			,@decVAT 
			,@decTotal 
			,@strNotes
			,@intPaidBy 
			,@intAccount 
			,@strSalesName 
			,@strAddInfo 
			,@decDiscPerc 
			,@decDiscAmt 
			,@strPaidBy )

			
			IF EXISTS (SELECT * FROM @tblSalesREDT)
			BEGIN	
				INSERT INTO tblSalesREDT 
				Select * from @tblSalesREDT 
			END

			DELETE FROM tblInvoiceDocDimensions WHERE strInvDocID = @strREName
			
			IF EXISTS (SELECT * FROM @tblInvoiceDocDimensions)
			BEGIN			
				INSERT INTO tblInvoiceDocDimensions
				Select * from @tblInvoiceDocDimensions 
			end
END

GO
/****** Object:  StoredProcedure [dbo].[SaveAccountCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------
Create PROCEDURE [dbo].[SaveAccountCY]
(
	@tblData AS SaveBudgetCommonTableType READONLY
)
AS

BEGIN TRANSACTION            
	BEGIN TRY

UPDATE tblAccounts SET bitBudget = 0
UPDATE tblAccounts SET bitBudget = 1 WHERE intGLNumber IN (SELECT intGLNumber FROM tblAcctBudgets)

IF @@TRANCOUNT > 0
		    COMMIT TRANSACTION
END TRY
BEGIN CATCH
	IF @@TRANCOUNT > 0
	    ROLLBACK TRANSACTION
	
	DECLARE @ErrMsg          NVARCHAR(4000),
	        @ErrSeverity     INT
	
	SELECT @ErrMsg = ERROR_MESSAGE(),
	       @ErrSeverity = ERROR_SEVERITY()
	
	RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
GO
/****** Object:  StoredProcedure [dbo].[SaveAccountLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

--------------------------------------------------------
CREATE PROCEDURE [dbo].[SaveAccountLY]
AS
UPDATE tblAccountsLY
SET bitBudget = 0

UPDATE tblAccountsLY
SET bitBudget = 1
WHERE intGLNumber IN (
		SELECT intGLNumber
		FROM tblAcctBudgetsLY
		)
GO
/****** Object:  StoredProcedure [dbo].[SaveAccountLYPastel]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SaveAccountLYPastel]
AS
INSERT INTO tblAccountsLY SELECT intGLNumber, strDesc, intAccType, intGroupCode, intAccClass, bitInactive, 0, 0, 0, 0, bitBank, bitRecon, bitInventory, bitBudget, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, strField1, strField2, strField3, strField4, strField5, strField6, 0, bitAllowCenters, intCheqNumber, strCurrency, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 FROM tblAccounts WHERE intGLNumber NOT IN (SELECT intGLNumber FROM tblAccountsLY)
GO
/****** Object:  StoredProcedure [dbo].[SaveAccountsSec]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SaveAccountsSec]
(
	@GLNumber AS VARCHAR(60),
	@strUserName varchar(40)
)
AS
BEGIN TRANSACTION            
	BEGIN TRY


	INSERT INTO tblAccountsSec (intGLNumber,strUserName) VALUES(@GLNumber,@strUserName); 

	IF @@TRANCOUNT > 0
				COMMIT TRANSACTION
	END TRY
	BEGIN CATCH
		IF @@TRANCOUNT > 0
			ROLLBACK TRANSACTION
	
		DECLARE @ErrMsg          NVARCHAR(4000),
				@ErrSeverity     INT
	
		SELECT @ErrMsg = ERROR_MESSAGE(),
			   @ErrSeverity = ERROR_SEVERITY()
	
		RAISERROR(@ErrMsg, @ErrSeverity, 1)
	END CATCH
GO
/****** Object:  StoredProcedure [dbo].[SaveAuthorizeTrackingData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [OrderDocDTDataDelete] ***********/

/*********** Start [SaveAuthorizeTrackingData] ***********/

CREATE PROCEDURE [dbo].[SaveAuthorizeTrackingData]
    (
	  @DocNumber NVARCHAR(50),
      @tblAuthorizeTracking CommonTableType READONLY 
    )
AS
    BEGIN
	IF (SELECT COUNT(*) FROM @tblAuthorizeTracking) > 0
		BEGIN
		INSERT INTO dbo.tblAuthorizeTracking 
		        (
		          dteSystemDate ,
		          strDocID ,
		          intDocType ,
		          bitAdjust ,
		          strAuthUserName ,
		          strUserName ,
		          intChangeType ,
		          strAuthReasonCode ,
		          strPartNumber ,
		          decOverdueValue ,
		          decTranValue
		        )
				
		SELECT 
		         CONVERT(DATETIME,ISNULL(COL12, GETDATE())) , 
		          @DocNumber, 
		          CONVERT(INT, ISNULL(COL01, 0)) , 
		          CONVERT(BIT, ISNULL(COL02, 0)) , 
		          CONVERT(NVARCHAR(80), ISNULL(COL03, '')) ,
				  CONVERT(NVARCHAR(80), ISNULL(COL04, '')) ,
		          CONVERT(INT, ISNULL(COL05, 0)) ,
		          CASE WHEN ISNULL(COL06, '') = '' THEN NULL ELSE COL06 END , 
		          CASE WHEN ISNULL(COL08, '') = '' THEN NULL ELSE COL07 END ,
		          CONVERT(MONEY, ISNULL(COL09, 0)) , 
		          CONVERT(MONEY, ISNULL(COL10, 0))  
				FROM    @tblAuthorizeTracking;
        END
 END

GO
/****** Object:  StoredProcedure [dbo].[SaveBIAccessRights]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SaveBIAccessRights]
(
	@tblBIAccessRights AS UsersCubesTableType READONLY,
	@strUserName varchar(250)
)
AS
BEGIN TRANSACTION            
	BEGIN TRY

DELETE FROM tblUsersCubes where strUserName = @strUserName
DELETE FROM tblUsersCubeViews WHERE strUserName = @strUserName

INSERT INTO tblUsersCubes
Select @strUserName,Title,IsChecked from @tblBIAccessRights where [Level] = 1 

INSERT INTO tblUsersCubeViews
Select @strUserName,Title,SUBSTRING(NodeParentId,0,(len(NodeParentId) - 1)),IsChecked,'' from @tblBIAccessRights where [Level] = 2 


IF @@TRANCOUNT > 0
		    COMMIT TRANSACTION
END TRY
BEGIN CATCH
	IF @@TRANCOUNT > 0
	    ROLLBACK TRANSACTION
	
	DECLARE @ErrMsg          NVARCHAR(4000),
	        @ErrSeverity     INT
	
	SELECT @ErrMsg = ERROR_MESSAGE(),
	       @ErrSeverity = ERROR_SEVERITY()
	
	RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
GO
/****** Object:  StoredProcedure [dbo].[SaveCommissionData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetContractCustomerTransactionCount] ***********/
/*********** Start [SaveCommissionData] ***********/
CREATE PROCEDURE [dbo].[SaveCommissionData] (@tblCommission CommonTableType readonly)
AS
BEGIN
	DELETE
	FROM tblSalesPersonsCommission
	WHERE uidSalesPersonID = (
			SELECT TOP 1 col01
			FROM @tblCommission
			)

	INSERT INTO tblSalesPersonsCommission (
		uidSalesPersonID
		,intLineNo
		,decValueFrom
		,decValueTo
		,decDiscPerc
		)
	SELECT COL01
		,COL02
		,COL03
		,COL04
		,COL05
	FROM @tblCommission
	WHERE NOT (
			CAST(COL03 AS DECIMAL(10, 4)) = 0
			AND CAST(COL04 AS DECIMAL(10, 4)) = 0
			)
END
GO
/****** Object:  StoredProcedure [dbo].[SaveCustomersT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------

CREATE PROCEDURE [dbo].[SaveCustomersT]
(
	@tblData AS SaveBudgetCommonTableType READONLY
)
AS

BEGIN TRANSACTION            
	BEGIN TRY

DELETE FROM tblCustomersT

INSERT INTO tblCustomersT 
Select *
from @tblData t
where
(t.Period1 + t.Period2 + t.Period3 + t.Period4 + t.Period5 + t.Period6 + t.Period7 + t.Period8 + t.Period9 + t.Period10 + t.Period11 + t.Period12) > 0

 

IF @@TRANCOUNT > 0
		    COMMIT TRANSACTION
END TRY
BEGIN CATCH
	IF @@TRANCOUNT > 0
	    ROLLBACK TRANSACTION
	
	DECLARE @ErrMsg          NVARCHAR(4000),
	        @ErrSeverity     INT
	
	SELECT @ErrMsg = ERROR_MESSAGE(),
	       @ErrSeverity = ERROR_SEVERITY()
	
	RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
GO
/****** Object:  StoredProcedure [dbo].[SaveDeleteBulletin]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [InsertUpdateViewCube] ***********/

/*********** Start [SaveDeleteBulletin] ***********/

CREATE PROCEDURE [dbo].[SaveDeleteBulletin]

@Bulletin AS ntext,
@Type as int

AS
BEGIN
	IF	@Type = 1  -- Insert bulletins
	BEGIN
		DELETE FROM tblBulletin
		INSERT INTO tblBulletin(nstrBulletin) VALUES (@Bulletin)
	END
	ELSE If @Type = 2 -- Delete bulletins
	BEGIN
		DELETE FROM tblBulletin
	END

END
GO
/****** Object:  StoredProcedure [dbo].[SaveDepartmentsBCY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------
CREATE PROCEDURE [dbo].[SaveDepartmentsBCY]
AS
UPDATE tblAccountsDept
SET bitBudget = 0

UPDATE tblAccountsDept
SET bitBudget = 1
WHERE intGLNumber IN (
		SELECT intGLNumber
		FROM tblAccountsDeptB
		)
	AND intDept IN (
		SELECT intDept
		FROM tblAccountsDeptB
		)
GO
/****** Object:  StoredProcedure [dbo].[SaveDepartmentsBLY]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------
CREATE PROCEDURE [dbo].[SaveDepartmentsBLY]
AS
UPDATE tblAccountsDeptLY
SET bitBudget = 0

UPDATE tblAccountsDeptLY
SET bitBudget = 1
WHERE intGLNumber IN (
		SELECT intGLNumber
		FROM tblAccountsDeptBLY
		)
	AND intDept IN (
		SELECT intDept
		FROM tblAccountsDeptBLY
		)
GO
/****** Object:  StoredProcedure [dbo].[SaveDocumentData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [UpdateCustTransDTTable] (Receipts) **********/

/*********************Start [SaveDocumentData]*****************************************/

CREATE PROCEDURE [dbo].[SaveDocumentData]
(
	@DocumentDocDTData DocumentDTTableType READONLY   
)
AS 
        INSERT INTO [tblDocuments]
        (			
            [strDocumentNumber],
            [strFileName],
            [strDescription],
            [strExtension],
            [varFile],
            [dteModified],
            [strType],
            [intSize],
            [strUserName],
            [bitEnc],
            [intAttachOn],
			[bitItemLine],
			[intLineNo],
			[bitPosted]
        )
SELECT * FROM @DocumentDocDTData
GO
/****** Object:  StoredProcedure [dbo].[SaveDocuments]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------------------
CREATE PROCEDURE [dbo].[SaveDocuments] (
	@DocumentNumberOld VARCHAR(50)
	,@DocumentNumberNew VARCHAR(50)
	,@Type NVARCHAR(100) = NULL
	,@FileNameTableType CommonTableType readonly
	)
AS
BEGIN
	IF (
			(
				SELECT Count(*)
				FROM @FileNameTableType
				) > 0
			)
	BEGIN
		UPDATE tblDocuments
		SET strDocumentNumber = @DocumentNumberNew
			,[strType] = ISNULL(@Type, [strType])
			,[strFileName] = CONVERT(NVARCHAR(200), isnull(t.COL03, ''))
		FROM @FileNameTableType t
		WHERE strDocumentNumber = @DocumentNumberOld
			AND [strType] = ISNULL(@Type, [strType])
			AND lngDocumentID = t.COL01
	END
	ELSE
	BEGIN
		UPDATE tblDocuments
		SET strDocumentNumber = @DocumentNumberNew
		WHERE strDocumentNumber = @DocumentNumberOld
			AND [strType] = ISNULL(@Type, [strType])
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SaveFiles]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [SaveDeleteBulletin] ***********/

/*********** Start [SaveFiles] ***********/

CREATE PROCEDURE [dbo].[SaveFiles]
 @SaveFileTableType AS SaveFileTableType READONLY 
AS

BEGIN
	DELETE
	FROM tblFiles
	WHERE tblFiles.strUserName IN (
			SELECT strUserName
			FROM @SaveFileTableType
			)

	INSERT INTO tblFiles (
		strFileName
		,dteModified
		,strType
		,intSize
		,strUserName
		,bitEnc
		,imgFile
		)
	SELECT strFileName
		,dteModified
		,strType
		,intSize
		,strUserName
		,bitEnc
		,imgFile
	FROM @SaveFileTableType
END
GO
/****** Object:  StoredProcedure [dbo].[SaveFilesSalesOrderEDI]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [SalesOrderEDISetProcessed] ***********/

/*********** Start [SaveFilesSalesOrderEDI] ***********/
CREATE PROCEDURE [dbo].[SaveFilesSalesOrderEDI] 
@EDI VARCHAR(50),
@SalesOrderEDITable SalesOrderEDITableType READONLY
AS
BEGIN
	DELETE FROM tblSalesOrderEDIF 
	WHERE 
		strEDI = @EDI;
	
	INSERT INTO tblSalesOrderEDIF (
			strEDI,
			strFileName,
			dteModified,
			strType,
			intSize,
			strUserName,
			bitEnc,
			imgFile,
			intFileType,
			intStatus
		) SELECT
			strEDI,
			strFileName,
			dteModified,
			strType,
			intSize,
			strUserName,
			bitEnc,
			imgFile,
			intFileType,
			intStatus 
		   FROM 
				@SalesOrderEDITable;
END 
GO
/****** Object:  StoredProcedure [dbo].[SaveIncludedCustomers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** END [dbo].[SaveIncludedInv] ***********/
/*********** START [dbo].[SaveIncludedCustomers] ***********/
CREATE PROCEDURE [dbo].[SaveIncludedCustomers] @IncludedCustomers ItemListTableType READONLY
AS
BEGIN
	UPDATE tblCustomers
	SET bitExclCommission = 0
	WHERE strCustName IN (
			SELECT Item
			FROM @IncludedCustomers
			)

	UPDATE tblCustomers
	SET bitExclCommission = 1
	WHERE strCustName NOT IN (
			SELECT Item
			FROM @IncludedCustomers
			)
END
GO
/****** Object:  StoredProcedure [dbo].[SaveIncludedInv]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [SaveAuthorizeTrackingData] ***********/

/*********** START [dbo].[SaveIncludedInv] ***********/

CREATE PROCEDURE [dbo].[SaveIncludedInv] @IncludedInvs  ItemListTableType READONLY
AS
BEGIN
	UPDATE tblInv
	SET bitExclCommission = 0
	WHERE strPartNumber IN (
			SELECT Item
			FROM @IncludedInvs
			)

	UPDATE tblInv
	SET bitExclCommission = 1
	WHERE strPartNumber NOT IN (
			SELECT Item
			FROM @IncludedInvs
			)
END
GO
/****** Object:  StoredProcedure [dbo].[SaveInventoryT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------
CREATE PROCEDURE [dbo].[SaveInventoryT]
(
	@tblData AS SaveBudgetCommonTableType READONLY
)
AS

BEGIN TRANSACTION            
	BEGIN TRY

DELETE FROM tblInvT

INSERT INTO tblInvT 
Select *
from @tblData t
where
(t.Period1 + t.Period2 + t.Period3 + t.Period4 + t.Period5 + t.Period6 + t.Period7 + t.Period8 + t.Period9 + t.Period10 + t.Period11 + t.Period12) > 0
 

IF @@TRANCOUNT > 0
		    COMMIT TRANSACTION
END TRY
BEGIN CATCH
	IF @@TRANCOUNT > 0
	    ROLLBACK TRANSACTION
	
	DECLARE @ErrMsg          NVARCHAR(4000),
	        @ErrSeverity     INT
	
	SELECT @ErrMsg = ERROR_MESSAGE(),
	       @ErrSeverity = ERROR_SEVERITY()
	
	RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
GO
/****** Object:  StoredProcedure [dbo].[SaveInvRepackingItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvTrackingDTBinData] ***********/

/*********** Start [SaveInvRepackingItems] ***********/
CREATE PROCEDURE [dbo].[SaveInvRepackingItems] 
 (
		@InvRepackingDocDTTable InvRepackDocDTTableType READONLY,
		@InvRepackingDocDTSerialTable InvRepackDocDTSerialTableType READONLY,
		@SerialNumberTrackingTable SerialNumberTrackingTableType READONLY
)
AS
BEGIN
	INSERT INTO tblInvRepackDocDT 
	SELECT
		[RepackDocID], 
		[LineNo],
		[OriginalItem],
		[PartNumber],
		[Qty],
		[Weight],
		[TotalWeight],
		[LocName],
		[UnitCost],
		[Amount]
		FROM 
			@InvRepackingDocDTTable;

	INSERT INTO tblInvRepackDocDTSerial (
	 strRepackDocID, intLineNo, bitOriginalItem, 
	 strSerialNumber, decQty, strUnit, 
	 bitExpiryDate, dteExpiryDate, intSerialLotType
	) 
	SELECT
		[RepackDocID],
		[LineNo],
		[OriginalItem],
		[SerialNumber],
		[Qty],
		[Unit],
		[IsExpiryDate],
		[ExpiryDate],
		[SerialLotType]
		FROM 
			@InvRepackingDocDTSerialTable;

	INSERT INTO tblSerialNumberTracking (
	  strPartNumber, strSerialNumber, strUserName, 
	  dteUpdatedDate, intType, strDocID, 
	  intLineNo, decQty, strLocation, intStatus, 
	  bitExpiryDate, dteExpiryDate
	)
	SELECT
		[PartNumber],
		[SerialNumber],
		[UserName],
		[UpdatedDate],
		[SerialLotType],
		[DocID],
		[LineNo],
		[Qty],
		[Location],
		[Status],
		[IsExpiryDate],
		[ExpiryDate]
		FROM 
			@SerialNumberTrackingTable; 
END
GO
/****** Object:  StoredProcedure [dbo].[SaveInvVendorItem]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SaveInvVendorItem] @VendorData InvVendTableType READONLY
AS
BEGIN
	INSERT INTO tblInvVend (
		strPartNumber
		,strVendName
		,strItemCode
		,strItemDesc
		,intWarrantyDays
		,decPrice
		,bitPreferred
		,decDiscPerc
		,decLocalPrice
		,decLandedCostFactor
		,strUnit
		)
	SELECT vend.strPartNumber
		,vend.strVendName
		,vend.strItemCode
		,vend.strItemDesc
		,vend.intWarrantyDays
		,vend.decPrice
		,vend.bitPreferred
		,vend.decDiscPerc
		,vend.decLocalPrice
		,vend.decLandedCostFactor
		,''
	FROM @VendorData vend
	WHERE vend.lngID = 0;

	UPDATE tblInvVend
	SET strPartNumber = vend.strPartNumber
		,strVendName = vend.strVendName
		,strItemCode = vend.strItemCode
		,strItemDesc = vend.strItemDesc
		,intWarrantyDays = vend.intWarrantyDays
		,decPrice = vend.decPrice
		,bitPreferred = vend.bitPreferred
		,decDiscPerc = vend.decDiscPerc
		,decLocalPrice = vend.decLocalPrice
		,decLandedCostFactor = vend.decLandedCostFactor
	FROM @VendorData vend
	WHERE vend.lngId = tblInvVend.lngID
		AND vend.lngID != 0
END
GO

/****** Object:  StoredProcedure [dbo].[SaveJobTemplate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[DeleteServiceableItem] ***********/

/*********** Start [dbo].[SaveJobTemplate] ***********/
CREATE PROCEDURE [dbo].[SaveJobTemplate] 
 (
		@JobTemplateID BIGINT,
		@JobTemplateCode NVARCHAR(50),
		@JobTemplateDescription NVARCHAR(100),
		@ServiceableItemTypeCode NVARCHAR(50),
		@IsInactive BIT,
		@FrequencyOfService MONEY,
		@Notes NVARCHAR(MAX),
		@InventoryTotal MONEY,
		@LabourTotal MONEY,
		@BuyOutsTotal MONEY,
		@RecoveryTotal MONEY,
		@Total MONEY,
		@InventoryTotalF MONEY,
		@LabourTotalF MONEY,
		@BuyOutsTotalF MONEY,
		@RecoveryTotalF MONEY,
		@TotalF MONEY,
		@PL_HomeCurrentUser NVARCHAR(50),
		@CreatedDate SmallDateTime,
		@tblJobTemplateDT CommonTableType Readonly
)
AS
BEGIN
	DECLARE @CurrentJobTemplateId as BIGINT

	IF EXISTS(select * from tblWSJobTemplate Where JobTemplateID = @JobTemplateID)
	BEGIN
		UPDATE 
			tblWSJobTemplate
		SET			
			JobTemplateCode = @JobTemplateCode,
			JobTemplateDescription = @JobTemplateDescription,
			ServiceableItemTypeCode = @ServiceableItemTypeCode,
			IsInactive = @IsInactive,
			FrequencyOfService = @FrequencyOfService,
			Notes = @Notes,
			InventoryTotal = @InventoryTotal,
			LabourTotal = @LabourTotal,
			BuyOutsTotal = @BuyOutsTotal,
			RecoveryTotal = @RecoveryTotal,
			Total = @Total,
			InventoryTotalF = @InventoryTotalF,
			LabourTotalF = @LabourTotalF,
			BuyOutsTotalF = @BuyOutsTotalF,
			RecoveryTotalF = @RecoveryTotalF,
			TotalF = @TotalF,
			UpdatedDate = @CreatedDate,
			UpdatedBy = @PL_HomeCurrentUser
		WHERE
			JobTemplateID = @JobTemplateID

		DELETE FROM tblWSJobTemplateDT WHERE JobTemplateID = @JobTemplateID

		SET @CurrentJobTemplateId = @JobTemplateID
	END
	ELSE
	BEGIN
		INSERT INTO tblWSJobTemplate
		(	
			--JobTemplateID,		
			JobTemplateCode,
			JobTemplateDescription,
			ServiceableItemTypeCode,
			IsInactive,
			FrequencyOfService,
			Notes,
			InventoryTotal,
			LabourTotal,
			BuyOutsTotal,
			RecoveryTotal,
			Total,
			InventoryTotalF,
			LabourTotalF,
			BuyOutsTotalF,
			RecoveryTotalF,
			TotalF,
			CreatedDate,
			UpdatedDate,
			CreatedBy,
			UpdatedBy
		)
		VALUES
		(		
			--@JobTemplateID,	
			@JobTemplateCode,
			@JobTemplateDescription,
			@ServiceableItemTypeCode,
			@IsInactive,
			@FrequencyOfService,
			@Notes,
			@InventoryTotal,
			@LabourTotal,
			@BuyOutsTotal,
			@RecoveryTotal,
			@Total,
			@InventoryTotalF,
			@LabourTotalF,
			@BuyOutsTotalF,
			@RecoveryTotalF,
			@TotalF,
			@CreatedDate,
			@CreatedDate,
			@PL_HomeCurrentUser,
			@PL_HomeCurrentUser 
		)

		SET @CurrentJobTemplateId = (SELECT IDENT_CURRENT('tblWSJobTemplate'))
		DELETE FROM tblWSJobTemplateDT WHERE JobTemplateID = @CurrentJobTemplateId

	END

	INSERT INTO tblWSJobTemplateDT
	(
		 JobTemplateID
		,[LineNo]
		,PartNumber
		,Location
		,PartDesc
		,Qty
		,Unit
		,ItemType
		,Currency
		,IsForeign
		,LineDiscPerc
		,LineDiscAmt
		,LineDiscAmtF
		,Price
		,Amount
		,CreatedDate
		,UpdatedDate
		,CreatedBy
		,UpdatedBy
		,BuyoutCost
		,TransactionFieldID
	)
	SELECT
		 @CurrentJobTemplateId --CONVERT(bigint,ISNULL(COL02,''))		--JobTemplateID
		,CONVERT(int,ISNULL(COL03,''))		--[LineNo]
		,CONVERT(NVARCHAR(50),ISNULL(COL04,''))		--PartNumber
		,CONVERT(NVARCHAR(50),ISNULL(COL05,''))		--Location
		,CONVERT(NVARCHAR(500),ISNULL(COL06,''))		--PartDesc
		,CONVERT(money,ISNULL(COL07,''))		--Qty
		,CONVERT(NVARCHAR(15),ISNULL(COL08,''))		--Unit
		,CONVERT(tinyint,ISNULL(COL09,''))		--ItemType
		,CONVERT(nvarchar(3),ISNULL(COL10,''))		--Currency
		,CONVERT(bit,ISNULL(COL11,''))		--IsForeign
		,CONVERT(money,ISNULL(COL12,''))		--LineDiscPerc
		,CONVERT(money,ISNULL(COL13,''))		--LineDiscAmt
		,CONVERT(money,ISNULL(COL14,''))		--LineDiscAmtF
		,CONVERT(money,ISNULL(COL15,''))		--Price
		,CONVERT(money,ISNULL(COL16,''))		--Amount
		,GETDATE()	--CreatedDate
		,GETDATE()		--UpdatedDate
		,CONVERT(nvarchar(50),ISNULL(COL19,''))		--CreatedBy
		,CONVERT(nvarchar(50),ISNULL(COL20,''))		--UpdatedBy
		,CONVERT(money,ISNULL(COL21,''))		--BuyoutCost
		,NULL  --CONVERT(uniqueidentifier,ISNULL(COL22,''))		--TransactionFieldID
	FROM @tblJobTemplateDT
END 
GO
/****** Object:  StoredProcedure [dbo].[SaveSalesPersonsT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------
CREATE PROCEDURE [dbo].[SaveSalesPersonsT]
(
	@tblData AS SaveBudgetCommonTableType READONLY
)
AS

BEGIN TRANSACTION            
	BEGIN TRY

DELETE FROM tblSalesPersonsT

INSERT INTO tblSalesPersonsT 
Select *
from @tblData t
where
(t.Period1 + t.Period2 + t.Period3 + t.Period4 + t.Period5 + t.Period6 + t.Period7 + t.Period8 + t.Period9 + t.Period10 + t.Period11 + t.Period12) > 0



IF @@TRANCOUNT > 0
		    COMMIT TRANSACTION
END TRY
BEGIN CATCH
	IF @@TRANCOUNT > 0
	    ROLLBACK TRANSACTION
	
	DECLARE @ErrMsg          NVARCHAR(4000),
	        @ErrSeverity     INT
	
	SELECT @ErrMsg = ERROR_MESSAGE(),
	       @ErrSeverity = ERROR_SEVERITY()
	
	RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
GO
/****** Object:  StoredProcedure [dbo].[SaveSalesReserve]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[SaveSalesReserve]	
(
	@InvDocID AS NVARCHAR(50),    			    
	@SystemDate AS SMALLDATETIME,			    
	@JournalDate AS SMALLDATETIME,			    
	@Required AS SMALLDATETIME,				    
	@UserName AS NVARCHAR(20),				    
	@Notes AS NVARCHAR(MAX),				    
	@Currency AS NVARCHAR(3),				    
	@Term AS NVARCHAR(50),					    
	@Field13 AS DATETIME,				    
	@Field14 AS DATETIME,				    
	@PaidByText AS NVARCHAR(20),		    					
	@IsCheckedInvoice AS BIT,	
	@NextId AS BIGINT,
	@IsNoPODRequired As BIT  
)
AS
BEGIN
	INSERT INTO tblInvoiceDoc (
	 strInvDocID
	,lngInvTrackID
	,lngJourID
	,dteSystemDate
	,dteJournalDate
	,dteRequired
	,strUserName
	,strCustName
	,strSoldTo
	,strShipTo
	,strReference
	,decSubTotal
	,decVAT
	,decTotal
	,bitFromSO
	,strOrdDocID
	,bitHistoryTrans
	,strNotes
	,bitPrinted
	,bitEmailed
	,intPaidBy
	,intAccount
	,strSalesName
	,strAddInfo
	,bitReserved
	,strCurrency
	,bitIsForeign
	,decSubTotalF
	,decVATF
	,decTotalF
	,decExchange
	,strTerm
	,intDept
	,strField1
	,strField2
	,strField3
	,strField4
	,strField5
	,strField6
	,strField7
	,strField8
	,strField9
	,strField10
	,strField11
	,strField12
	,strSubFormated
	,strVATFormatted
	,strTotFormatted
	,dteField13
	,dteField14
	,decDiscPerc
	,decDiscAmt
	,decDiscAmtF
	,strDiscFormatted
	,strOrdFQDocID
	,strStatusTypeCode
	,strCNReasonCode
	,bitBookmark
	,dteSystemDateTime
	,strPaidBy
	,intSentDoc
	,strVAT
	,strDelMethodCode
	,decTotalWeight
	,decTotalVolWeight
	,decDeliveryCost
	,decDeliveryCostF
	,strDeliveryCostFormatted
	,bitShipmentsAuditTrail
	,intRevisionNumber
	,strStoreNumber
	,strEDI
	,bitNoPODRequired
	)
VALUES (
	@InvDocID					-- strInvDocID
	,NULL						--,lngInvTrackID
	,NULL						--,lngJourID
	,@SystemDate				--,dteSystemDate
	,@JournalDate				--,dteJournalDate
	,@Required					--,dteRequired
	,@UserName					--,strUserName
	,NULL						--,strCustName
	,'Reserved'					--,strSoldTo
	,'Reserved'					--,strShipTo
	,'Reserved'					--,strReference
	,0							--,decSubTotal
	,0							--,decVAT
	,0							--,decTotal
	,0							--,bitFromSO
	,NULL						--,strOrdDocID
	,1							--,bitHistoryTrans
	,@Notes						--,strNotes
	,1							--,bitPrinted
	,1							--,bitEmailed
	,0							--,intPaidBy
	,NULL						--,intAccount
	,NULL						--,strSalesName
	,''							--,strAddInfo
	,1							--,bitReserved
	,@Currency					--,strCurrency
	,0							--,bitIsForeign
	,0							--,decSubTotalF
	,0							--,decVATF
	,0							--,decTotalF
	,1							--,decExchange
	,@Term						--,strTerm
	,NULL						--,intDept
	,''							--,strField1
	,''							--,strField2
	,''							--,strField3
	,''							--,strField4
	,''							--,strField5
	,''							--,strField6
	,''							--,strField7
	,''							--,strField8
	,''							--,strField9
	,''							--,strField10
	,''							--,strField11
	,''							--,strField12
	,''							--,strSubFormated
	,''							--,strVATFormatted
	,''							--,strTotFormatted
	,@Field13					--,dteField13
	,@Field14					--,dteField14
	,0							--,decDiscPerc
	,0							--,decDiscAmt
	,0							--,decDiscAmtF
	,''							--,strDiscFormatted
	,NULL						--,strOrdFQDocID
	,NULL						--,strStatusTypeCode
	,NULL						--,strCNReasonCode
	,0							--,bitBookmark
	,GETDATE()					--,dteSystemDateTime
	,@PaidByText				--,strPaidBy
	,0							--,intSentDoc
	,''							--,strVAT
	,NULL						--,strDelMethodCode
	,0							--,decTotalWeight
	,0							--,decTotalVolWeight
	,0							--,decDeliveryCost
	,0							--,decDeliveryCostF
	,''							--,strDeliveryCostFormatted
	,0							--,bitShipmentsAuditTrail
	,1							--,intRevisionNumber
	,NULL							--,strStoreNumber
	,NULL							--,strEDI
	,@IsNoPODRequired
)

	IF @IsCheckedInvoice = 1
	BEGIN
		UPDATE tblLastIDs SET lngInvNumber = @NextId
	END
	ELSE
	BEGIN
		UPDATE tblLastIDs SET lngCNNumber = @NextId
	END

END
GO
/****** Object:  StoredProcedure [dbo].[SaveServiceableItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SaveServiceableItems] (
	@ServiceableItemCode NVARCHAR(50)
	,@ServiceableItemName NVARCHAR(50)
	,@ServiceableItemTypeId BIGINT
	,@ServiceableItemDescription NVARCHAR(100)
	,@OwnerCode NVARCHAR(50)
	,@CustomerCode NVARCHAR(50)
	,@OwnerDetails NVARCHAR(2000)
	,@CustomerDetails NVARCHAR(2000)
	,@IsInternalAsset BIT
	,@AssetNumber NVARCHAR(50)
	,@AssetServiceCostAccount NVARCHAR(50)
	,@IsInactive BIT
	,@PL_HomeCurrentUser NVARCHAR(50)
	,@CreateDate DATETIME
	,@ServiceableItemImage IMAGE
	,@LastServiceDate DATETIME
	,@NextServiceDate DATETIME
	,@tblWSServiceableItemImg ServiceableItemImgTableType readonly
	,@tblServiceableItemOptFieldDetailsEntity CommonTableType readonly
	,@ShipTo NVARCHAR(2000)
	,@AddInfo NVARCHAR(50)
	)
AS
BEGIN
	IF EXISTS (
			SELECT *
			FROM tblWSServiceableItem
			WHERE ServiceableItemCode = @ServiceableItemCode
			)
	BEGIN
		UPDATE tblWSServiceableItem
		SET ServiceableItemTypeId = @ServiceableItemTypeId
			,ServiceableItemName = @ServiceableItemName
			,ServiceableItemDescription = @ServiceableItemDescription
			,OwnerCode = @OwnerCode
			,CustomerCode = @CustomerCode
			,OwnerDetails = @OwnerDetails
			,CustomerDetails = @CustomerDetails
			,IsInternalAsset = @IsInternalAsset
			,AssetNumber = @AssetNumber
			,AssetServiceCostAccount = @AssetServiceCostAccount
			,LastServiceDate = @LastServiceDate
			,NextServiceDate = @NextServiceDate
			,IsInactive = @IsInactive
			,CreatedDate = @CreateDate -- This created Date is set according to user selection  
			,UpdatedDate = GETDATE()
			,UpdatedBy = @PL_HomeCurrentUser
			,ShipTo = @ShipTo
			,AddInfo = @AddInfo
		--,ServiceableItemImage = @ServiceableItemImage  
		WHERE ServiceableItemCode = @ServiceableItemCode

		DECLARE @FieldId NVARCHAR(50)
			,@FieldValue NVARCHAR(20)
		DECLARE @counter INT;

		SET @counter = 1;

		DECLARE ServiceItemField CURSOR READ_ONLY
		FOR
		SELECT COl01
			,COL15
		FROM @tblServiceableItemOptFieldDetailsEntity

		--OPEN CURSOR  
		OPEN ServiceItemField

		FETCH NEXT
		FROM ServiceItemField
		INTO @FieldId
			,@FieldValue

		WHILE @@FETCH_STATUS = 0
		BEGIN
			IF (
					EXISTS (
						SELECT *
						FROM tblWSServiceableItemOptFieldDetails
						WHERE ServiceableItemCode = @ServiceableItemCode
							AND FieldId = @FieldId
						)
					)
			BEGIN
				UPDATE tblWSServiceableItemOptFieldDetails
				SET Value = @FieldValue --Value  
					,UpdatedDate = GETDATE()
					,UpdatedBy = @PL_HomeCurrentUser
				FROM @tblServiceableItemOptFieldDetailsEntity t
				WHERE FieldId = @FieldId --FieldId  
					AND ServiceableItemCode = @ServiceableItemCode
			END
			ELSE
			BEGIN
				INSERT INTO tblWSServiceableItemOptFieldDetails (
					FieldId
					,ServiceableItemCode
					,Value
					,CreatedDate
					,UpdatedDate
					,CreatedBy
					,UpdatedBy
					)
				SELECT @FieldId --FieldId  
					,@ServiceableItemCode
					,COL15 --Value  
					,GETDATE()
					,GETDATE()
					,@PL_HomeCurrentUser
					,@PL_HomeCurrentUser
				FROM @tblServiceableItemOptFieldDetailsEntity
				WHERE COL01 = @FieldId
			END

			SET @counter = @counter + 1

			--FETCH THE RECORD INTO THE VARIABLES.  
			FETCH NEXT
			FROM ServiceItemField
			INTO @FieldId
				,@FieldValue
		END

		--CLOSE CURSOR  
		CLOSE ServiceItemField

		DEALLOCATE ServiceItemField
	END
	ELSE
	BEGIN
		INSERT INTO tblWSServiceableItem (
			ServiceableItemCode
			,ServiceableItemTypeId
			,ServiceableItemDescription
			,OwnerCode
			,CustomerCode
			,OwnerDetails
			,CustomerDetails
			,IsInternalAsset
			,AssetNumber
			,AssetServiceCostAccount
			,LastServiceDate
			,NextServiceDate
			,IsInactive
			,CreatedDate
			,UpdatedDate
			,CreatedBy
			,UpdatedBy
			,ServiceableItemImage
			,ServiceableItemName
			,ShipTo
			,AddInfo
			)
		VALUES (
			@ServiceableItemCode
			,@ServiceableItemTypeId
			,@ServiceableItemDescription
			,@OwnerCode
			,@CustomerCode
			,@OwnerDetails
			,@CustomerDetails
			,@IsInternalAsset
			,@AssetNumber
			,@AssetServiceCostAccount
			,@LastServiceDate
			,@NextServiceDate
			,@IsInactive
			,@CreateDate --,GETDATE()    -- This created Date is set according to user selection  
			,GETDATE()
			,@PL_HomeCurrentUser
			,@PL_HomeCurrentUser
			,@ServiceableItemImage
			,@ServiceableItemName
			,@ShipTo
			,@AddInfo
			)

		INSERT INTO tblWSServiceableItemOptFieldDetails (
			FieldId
			,ServiceableItemCode
			,Value
			,CreatedDate
			,UpdatedDate
			,CreatedBy
			,UpdatedBy
			)
		SELECT COL01 --FieldId  
			,@ServiceableItemCode
			,COL15 --Value  
			,GETDATE()
			,GETDATE()
			,@PL_HomeCurrentUser
			,@PL_HomeCurrentUser
		FROM @tblServiceableItemOptFieldDetailsEntity

		UPDATE tblLastIDs
		SET lngSINumber += 1
	END

	DELETE
	FROM tblWSServiceableItemImg
	WHERE ServiceableItemCode = @ServiceableItemCode

	INSERT INTO tblWSServiceableItemImg (
		ServiceableItemCode
		,ImageData
		,IsDefaultImage
		)
	SELECT ServiceableItemCode
		,ImageData
		,IsDefaultImage
	FROM @tblWSServiceableItemImg
END
GO
/****** Object:  StoredProcedure [dbo].[SaveServiceableItemType]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** END [dbo].[DeleteServiceableItemTypes] ***********/

/*********** START [dbo].[SaveServiceableItemType] ***********/
CREATE PROCEDURE [dbo].[SaveServiceableItemType]
(
	
	@ServiceableItemTypeCode nvarchar(50),
	@ServiceableItemTypeDescription nvarchar(250),
	@IsInactiveChecked bit,
	@PL_HomeCurrentUser nvarchar(50),
	@IsUpdate bit,
	@ServiceableItemTypeID bigint,
	@FrequencyService money,
	@tblServiceableItemTypesOptFields CommonTableType readonly 
)
AS
BEGIN
	IF @IsUpdate <> 1
	BEGIN
		INSERT INTO tblWSServiceableItemType 
		(
			ServiceableItemTypeCode
			,ServiceableItemTypeDescription
			,IsInactive
			,CreatedDate
			,UpdatedDate
			,CreatedBy
			,UpdatedBy
			,FrequencyOfService
		)
		VALUES
		(
			@ServiceableItemTypeCode
			,@ServiceableItemTypeDescription
			,@IsInactiveChecked
			,GETDATE()
			,GETDATE()
			,@PL_HomeCurrentUser
			,@PL_HomeCurrentUser
			,@FrequencyService
		)

		INSERT INTO tblWSServiceableItemTypeOptFields 
		(
			 ServiceableItemTypeId
			,FieldType
			,FieldName
			,[Description]
			,IsMandatory
			,DisplayOrder
			,ItemList
			,CreatedDate
			,UpdatedDate
			,CreatedBy
			,UpdatedBy 
		) 
		SELECT 
			(SELECT ServiceableItemTypeId FROM tblWSServiceableItemType WHERE ServiceableItemTypeCode = @ServiceableItemTypeCode)
			,COL03
			,NULL
			,COL05
			,COL06
			,COL07
			,COL08
			,GETDATE()
			,GETDATE()
			,@PL_HomeCurrentUser
			,@PL_HomeCurrentUser 
		FROM @tblServiceableItemTypesOptFields 
	END
	ELSE
	BEGIN
		DECLARE @ItemTypeCode nvarchar(50)
		Select @ItemTypeCode = ServiceableItemTypeCode from tblWSServiceableItemType WHERE ServiceableItemTypeId = @ServiceableItemTypeID

		--update records in main table
		UPDATE 
			[tblWSServiceableItemType]
		SET 
			 [ServiceableItemTypeCode] = @ServiceableItemTypeCode
			,[ServiceableItemTypeDescription] = @ServiceableItemTypeDescription
			,[IsInactive] = @IsInactiveChecked
			,[UpdatedDate] = GETDATE()
			,[UpdatedBy] = @PL_HomeCurrentUser
			,[FrequencyOfService] = @FrequencyService
		WHERE [ServiceableItemTypeId] = @ServiceableItemTypeID

		--Delete records which are deleted by user
		DELETE FROM
			 tblWSServiceableItemTypeOptFields 
		WHERE 
			FieldId not in (
							 SELECT FieldId FROM @tblServiceableItemTypesOptFields as t 
							 Inner join tblWSServiceableItemTypeOptFields on tblWSServiceableItemTypeOptFields.FieldId = t.COL01 
							) 
			AND ServiceableItemTypeId = @ServiceableItemTypeID

		--insert records which are new
		INSERT INTO tblWSServiceableItemTypeOptFields 
		(
			 ServiceableItemTypeId
			,FieldType
			,FieldName
			,[Description]
			,IsMandatory
			,DisplayOrder
			,ItemList
			,CreatedDate
			,UpdatedDate
			,CreatedBy
			,UpdatedBy 
		) 
		SELECT 
			@ServiceableItemTypeID
			,COL03
			,NULL
			,COL05
			,COL06
			,COL07
			,COL08
			,GETDATE()
			,GETDATE()
			,@PL_HomeCurrentUser
			,@PL_HomeCurrentUser 
		FROM @tblServiceableItemTypesOptFields 
		WHERE COL01 = 0  

		--update existing records
		UPDATE 
			tblWSServiceableItemTypeOptFields
		SET 
			 FieldType = t.COL03
			,FieldName = NULL
			,[Description] = t.COL05
			,IsMandatory = t.COL06
			,DisplayOrder = t.COL07
			,ItemList = t.COL08
			,UpdatedDate = GETDATE()
			,UpdatedBy =  @PL_HomeCurrentUser
		FROM tblWSServiceableItemTypeOptFields
		join @tblServiceableItemTypesOptFields t on tblWSServiceableItemTypeOptFields.FieldId = t.COL01 


		--Update ServiceableItemTypeCode in tblWSJobTemplate
		Update
			tblWSJobTemplate
		set 
			ServiceableItemTypeCode = @ServiceableItemTypeCode
		Where
			ServiceableItemTypeCode = @ItemTypeCode 
			
			
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SaveSubAsset]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SaveSubAsset]
    (
      @strAssetCode NVARCHAR(20) = NULL ,
      @strSubAssetCode NVARCHAR(20) = NULL
    )
AS
    SET NOCOUNT ON;
    BEGIN
        BEGIN TRY

            DECLARE @ERR_MSG AS NVARCHAR(4000) ,
                @Err_Severity INT ,
                @ERR_STA AS SMALLINT ,
                @Result AS VARCHAR(200);

            INSERT  INTO [tblAssetsSub]
                    ( [strAssetCode] ,
                      [strSubAssetCode]
                    )
            VALUES  ( @strAssetCode ,
                      @strSubAssetCode
                    );
            SET @Result = 'Success';
            SELECT  @Result;
        END TRY
        BEGIN CATCH  
            IF ERROR_NUMBER() = 2627
                BEGIN  
                    SET @ERR_MSG = 'Error 2627: ';      
                    SELECT  @ERR_MSG;    
                END;
            ELSE
                BEGIN         
                    SELECT  @ERR_MSG = ERROR_MESSAGE() ,
                            @Err_Severity = ERROR_SEVERITY() ,
                            @ERR_STA = ERROR_STATE();
                    RAISERROR (@ERR_MSG, @Err_Severity, @ERR_STA);
                END;     
        END CATCH;
    END;
    RETURN 1;
GO
/****** Object:  StoredProcedure [dbo].[SaveUpdateTask]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetTaskList] ***********/

/*********** Start [SaveUpdateTask] ***********/
CREATE PROCEDURE [dbo].[SaveUpdateTask]
(
	@AssignedUser nvarchar(20)=NULL,
	@DueDate datetime=NULL,
	@EnteredUser nvarchar(20)=NULL,
	@Module nvarchar(50)=NULL,
	@Title nvarchar(200)=NULL,
	@Body nvarchar(2000)=NULL,
	@Id bigint =NULL
)
AS
BEGIN
	
	IF ((SELECT COUNT(*) FROM tblToDo WHERE lngID = @Id) = 0)
	BEGIN
		INSERT INTO tblToDo (strAssUser, dteDateDue, strEntUser, dteEntered, strModule, intStatus, strTitle, strBody) VALUES (@AssignedUser, @DueDate, @EnteredUser, GetDate(), @Module, 0, @Title, @Body)
	END
	ELSE
	BEGIN
		UPDATE tblToDo SET dteDateDue = ISNULL(@DueDate, dteDateDue),strModule = ISNULL(@Module, strModule),strTitle = ISNULL(@Title, strTitle),strBody = ISNULL(@Body, strBody) WHERE lngId = @Id
	END

END
GO

/****** Object:  StoredProcedure [dbo].[SaveUserDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SaveUserDetails] (  
 @UserName AS NVARCHAR(20)      
 ,@Name AS NVARCHAR(50)      
 ,@CellNumber AS NVARCHAR(50)      
 ,@Email AS NVARCHAR(100)      
 ,@Password AS NVARCHAR(2000)      
 ,@IsAdmin AS BIT      
 ,@IsLockedOut AS BIT      
 ,@MustChange AS BIT      
 ,@Company AS BIT      
 ,@CoFileHandle AS BIT      
 ,@GL AS BIT      
 ,@Payables AS BIT      
 ,@PayPayments AS BIT      
 ,@Receivables AS BIT      
 ,@RecReceipts AS BIT      
 ,@Inventory AS BIT      
 ,@InvAdjust AS BIT      
 ,@InvCount AS BIT      
 ,@SMS AS BIT      
 ,@BusMgr AS BIT      
 ,@POS AS BIT      
 ,@Projects AS BIT      
 ,@LastLogin AS DATETIME      
 ,@CashBook AS BIT      
 ,@Reminders AS BIT      
 ,@Marketing AS BIT      
 ,@Collection AS BIT      
 ,@POSCash AS BIT      
 ,@CoAdmin AS BIT      
 ,@MainSum AS BIT      
 ,@AcctSets AS BIT      
 ,@Journal AS BIT      
 ,@BankTrans AS BIT      
 ,@BankRecon AS BIT      
 ,@APPurch AS BIT      
 ,@APTax AS BIT      
 ,@ARCredit AS BIT      
 ,@ARSales AS BIT      
 ,@ARBatch AS BIT      
 ,@InvPricelists AS BIT      
 ,@InvLoc AS BIT      
 ,@InvCats AS BIT      
 ,@InvAssbly AS BIT      
 ,@InvTrans AS BIT      
 ,@SMSCredits AS BIT      
 ,@POSDrop AS BIT      
 ,@POSTerminalSetup AS BIT      
 ,@POSTerminalSetupList AS BIT      
 ,@POSProfileMenu AS BIT      
 ,@BulkSMS AS BIT      
 ,@GLExpense AS BIT      
 ,@Deposits AS BIT      
 ,@InvPDT AS BIT      
 ,@ARPersons AS BIT      
 ,@APBatch AS BIT      
 ,@APBrowser AS BIT      
 ,@ARBrowser AS BIT      
 ,@Templates AS BIT      
 ,@AREmail AS BIT      
 ,@WHRec AS BIT      
 ,@WHPick AS BIT      
 ,@WHBatch AS BIT      
 ,@Files AS BIT      
 ,@LocName AS NVARCHAR(10)      
 ,@Cycle AS BIT      
 ,@Interest AS BIT      
 ,@APOrders AS BIT      
 ,@APReq AS BIT      
 ,@AROrders AS BIT      
 ,@ARQuotes AS BIT      
 ,@ARQuSys AS BIT      
 ,@WHStPick AS BIT      
 ,@InvBrowser AS BIT      
 ,@WHShp AS BIT      
 ,@WHPrPack AS BIT      
 ,@WHCont AS BIT      
 ,@WHMani AS BIT      
 ,@WHShBrow AS BIT      
 ,@JobCost AS BIT      
 ,@Dept AS BIT      
 ,@SubLedger AS BIT      
 ,@CLetters AS BIT      
 ,@Top20 AS BIT      
 ,@TransTab AS BIT      
 ,@RecPayJournal AS BIT      
 ,@ARCats AS BIT      
 ,@InvDiscMatrix AS BIT      
 ,@ARBlockDesc AS BIT      
 ,@ARBlockUnit AS BIT      
 ,@ARBlockDiscount AS BIT      
 ,@APBlockDesc AS BIT      
 ,@APBlockUnit AS BIT      
 ,@APBlockDiscount AS BIT      
 ,@WHDelDriver AS BIT      
 ,@WHDelVehicle AS BIT      
 ,@WHDelRoute AS BIT      
 ,@ARCreditRequests AS BIT      
 ,@BITab AS BIT      
 ,@BICubeAdd AS BIT      
 ,@BICubeEdit AS BIT      
 ,@BICubeDelete AS BIT      
 ,@BIViewAdd AS BIT      
 ,@BIViewEdit AS BIT      
 ,@BIViewDelete AS BIT      
 ,@ARSendPricelists AS BIT      
 ,@InvNumConv AS BIT      
 ,@InvSerialTypes AS BIT      
 ,@APCats AS BIT      
 ,@ARPrintPreview AS BIT      
 ,@ARCNChangesAllowed AS BIT      
 ,@ARPriceChangeAllowed AS BIT      
 ,@APDNChangesAllowed AS BIT      
 ,@ARInvoiceAdjAllowed AS BIT      
 ,@ARAllowCreditNotesAndRequestItems AS BIT      
 ,@APPaymentApprovals AS BIT      
 ,@InvForecasting AS BIT      
 ,@InvBarcode AS BIT      
 ,@InvItemCostUpdater AS BIT      
 ,@InvItemRenaming AS BIT      
 ,@APECOMSettings AS BIT      
 ,@APShowStatsOnDocs AS BIT      
 ,@ARShowStatsOnDocs AS BIT      
 ,@GLOpenItemAlloc AS BIT      
 ,@GLLR AS BIT      
 ,@GLLRFin AS BIT      
 ,@GLLRFinBalSheetStd AS BIT      
 ,@GLLRFinBalSheetComp AS BIT      
 ,@GLLRFinIncomeStd AS BIT      
 ,@GLLRFinIncomeComp AS BIT      
 ,@GLLRFinIncomeMulti AS BIT      
 ,@GLLRFinIncomeGP AS BIT      
 ,@GLLRFinIncomeMini AS BIT      
 ,@GLLRFinTrialBal AS BIT      
 ,@GLLRFinPerMovement AS BIT      
 ,@GLLRFinMultiCompany AS BIT      
 ,@GLLRTran AS BIT      
 ,@GLLRTranLedger AS BIT      
 ,@GLLRTranEntryType AS BIT      
 ,@GLLRTranTax AS BIT      
 ,@GLLRTranDocTran AS BIT      
 ,@GLLRBudgets AS BIT      
 ,@GLLRBudgetsAmounts AS BIT      
 ,@GLLRBudgetsCompIncome AS BIT      
 ,@GLLRBudgetsCompIncomeF AS BIT      
 ,@GLLRBudgetsCompBalSheet AS BIT      
 ,@GLLRDept AS BIT      
 ,@GLLRDeptBalSheetStd AS BIT      
 ,@GLLRDeptIncomeStd AS BIT      
 ,@GLLRDeptIncomeComp AS BIT      
 ,@GLLRDeptTrialBal AS BIT      
 ,@GLLRDeptLedger AS BIT      
 ,@GLLRDeptBudgetAmounts AS BIT      
 ,@GLLRDeptCompIncome AS BIT      
 ,@GLLRLists AS BIT      
 ,@GLLRListsAccounts AS BIT      
 ,@GLLRListsAccountSets AS BIT      
 ,@GLLRListsJournalCodes AS BIT      
 ,@GLCR AS BIT      
 ,@GLCRFin AS BIT      
 ,@GLCRFinIncome AS BIT      
 ,@GLCRFinIncomeMulti AS BIT      
 ,@GLCRTran AS BIT      
 ,@GLCRTranAlloc AS BIT      
 ,@GLCRTranAllocMissing AS BIT      
 ,@GLCRBudget AS BIT      
 ,@GLCRBudgetCompBudget AS BIT      
 ,@GLCRLists AS BIT      
 ,@GLCRListsProfitCenters AS BIT      
 ,@APPR AS BIT      
 ,@APPRFin AS BIT      
 ,@APPRFinVendorAged AS BIT      
 ,@APPRTran AS BIT      
 ,@APPRTranVendorPurchases AS BIT      
 ,@APPRTranPendingPurchaseOrders AS BIT      
 ,@APPRTranPendingPurchaseReq AS BIT      
 ,@APPRTranVendorTran AS BIT  
 ,@APETIMSPurchasesTrans AS BIT     
 ,@APPRLists AS BIT      
 ,@APPRListsVendors AS BIT      
 ,@APPRListsContacts AS BIT      
 ,@ARRR AS BIT      
 ,@ARRRFin AS BIT      
 ,@ARRRFinCustAged AS BIT      
 ,@ARRRFinCallSheet AS BIT      
 ,@ARRRFinCustStatements AS BIT      
 ,@ARRRFinSalesStatements AS BIT      
 ,@ARRRFinInvoiceGP AS BIT      
 ,@ARRRFinCustProfiability AS BIT      
 ,@ARRRFinCustSalesTargets AS BIT      
 ,@ARRRFinCustSalesTrends AS BIT      
 ,@ARRRFinSPPerf AS BIT      
 ,@ARRRFinSPTargets AS BIT      
 ,@ARRRTran AS BIT      
 ,@ARRRTranCustSales AS BIT      
 ,@ARRRTranSPSales AS BIT      
 ,@ARRRTranSPMissing AS BIT      
 ,@ARRRTranInvoiceDocs AS BIT      
 ,@ARRRTranCashUp AS BIT      
 ,@ARRRTranPendingSalesOrders AS BIT      
 ,@ARRRTranClosedSalesOrders AS BIT      
 ,@ARRRTranCredits AS BIT      
 ,@ARRRTranCustTran AS BIT      
 ,@ARRRTranOpenQuotes AS BIT      
 ,@ARRRLists AS BIT      
 ,@ARRRListsPricelist AS BIT      
 ,@ARRRListsCustomers AS BIT      
 ,@ARRRListsSalesPersons AS BIT      
 ,@ARRRListsContactsList AS BIT      
 ,@IR AS BIT      
 ,@IRFin AS BIT      
 ,@IRFinInvAged AS BIT      
 ,@IRFinInvValuation AS BIT      
 ,@IRFinLocSum AS BIT      
 ,@IRFinInvLoc AS BIT      
 ,@IRFinQuantity AS BIT      
 ,@IRFinQuantityLoc AS BIT      
 ,@IRFinInvSalesTargets AS BIT      
 ,@IRTran AS BIT      
 ,@IRTranInvSales AS BIT      
 ,@IRTranInvTran AS BIT      
 ,@IRTranInvLedger AS BIT      
 ,@IRTranInvLedgerLoc AS BIT      
 ,@IRTranNegInvCorrections AS BIT      
 ,@IRTranPricelistChangeLog AS BIT      
 ,@IRTranSegInvMovement AS BIT      
 ,@IRTranSegInvSales AS BIT      
 ,@IRTranSerializedItemTracking AS BIT      
 ,@IRTranLotNumMovement AS BIT      
 ,@IRLists AS BIT      
 ,@IRListsPricing AS BIT      
 ,@IRListsInventory AS BIT      
 ,@IRListsStockCountSheets AS BIT      
 ,@IRListsAdjustments AS BIT      
 ,@WR AS BIT      
 ,@WROrders AS BIT      
 ,@WROrdersPendingPurchaseOrders AS BIT      
 ,@WROrdersPendingSalesOrders AS BIT      
 ,@POSR AS BIT      
 ,@POSRFin AS BIT      
 ,@POSRFinDrawerClosing AS BIT      
 ,@POSRFinCashierVariance AS BIT      
 ,@POSRLists AS BIT      
 ,@POSRListsCashDrawers AS BIT      
 ,@BR AS BIT      
 ,@BRProj AS BIT      
 ,@BRProjTender AS BIT      
 ,@BRProjAlloc AS BIT      
 ,@BRProjMissingAllow AS BIT      
 ,@BRProjSalesMatrix AS BIT      
 ,@BRProjPurchMatrix AS BIT      
 ,@BRProjCombinedMatrix AS BIT      
 ,@BRProjActvsBudget AS BIT      
 ,@BRAdmin AS BIT      
 ,@BRAdminHistory AS BIT      
 ,@SMSRLog AS BIT      
 ,@GLJournalReports AS BIT      
 ,@GLTransactionReports AS BIT      
 ,@APPaymentsReports AS BIT      
 ,@APTransactionsReports AS BIT      
 ,@ARReceiptsReports AS BIT      
 ,@ARTransactionsReports AS BIT      
 ,@ISalesReports AS BIT      
 ,@ITransactionsReports AS BIT      
 ,@SMSR AS BIT      
 ,@FHQCanApprove AS BIT      
 ,@FHQCreatePurchaseOrder AS BIT      
 ,@ARViewMarginPercentage AS BIT      
 ,@APPendingPayApprovals AS BIT      
 ,@GLLRTranCashBook AS BIT      
 ,@APPRTranVendAccrual AS BIT      
 ,@IRListsItemWhereUsed AS BIT      
 ,@IRTranBillOfMaterials AS BIT      
 ,@APBulkRFQ AS BIT      
 ,@InvProdSchedule AS BIT      
 ,@InvWorkCentres AS BIT      
 ,@IRListsProductionSchedule AS BIT      
 ,@APPRTranBulkRFQ AS BIT      
 ,@RecReceiptsReversal AS BIT      
 ,@ARRRTranSalesSummary AS BIT      
 ,@DashMain AS BIT      
 ,@DashBusiness AS BIT      
 ,@DashAR AS BIT      
 ,@ARChangeCustOnSO AS BIT      
 ,@ARChangeCustOnSQ AS BIT      
 ,@APOrdersRemove AS BIT      
 ,@APReqRemove AS BIT      
 ,@AROrdersRemove AS BIT      
 ,@ARQuotesRemove AS BIT      
 ,@ARCreditRequestsRemove AS BIT      
 ,@APBlockTax AS BIT      
 ,@ARBlockTax AS BIT      
 ,@APBulkRFQRemove AS BIT      
 ,@ARQuSysRemove AS BIT       
 ,@WHStPickRemove AS BIT      
 ,@WHRecRemove AS BIT      
 ,@WHShpRemove AS BIT      
 ,@WHContRemove AS BIT      
 ,@ARMatrixType AS BIT      
 ,@ARMatrixTypeEdit AS BIT      
 ,@ARMatrixTypeRemove AS BIT      
 ,@IRTranInvEfficiency AS BIT      
 ,@InvLotNumExpiryDates AS BIT      
 ,@ARRRTranMatrixTypeChangeLog AS BIT      
 ,@InvBulkLabelPrinting AS BIT      
 ,@InvVoucher AS BIT      
 ,@InvShowItemCost AS BIT      
 ,@InvWebstoreSync AS BIT      
 ,@SalesName AS NVARCHAR(50)      
 ,@ARDept AS INT      
 ,@APDept AS INT      
 ,@ARVoucerReprint AS BIT      
 ,@ARChangeDocInfo AS BIT      
 ,@APChangeDocInfo AS BIT      
 ,@FADepreciateAsset AS BIT      
 ,@FAAssets AS BIT      
 ,@FAAssetTypes AS BIT      
 ,@FADepreciationMethods AS BIT      
 ,@FACostTypes AS BIT      
 ,@FADisposalMethods AS BIT      
 ,@FAR AS BIT      
 ,@FARSummary AS BIT      
 ,@FARAssetListing AS BIT      
 ,@FARDisposals AS BIT      
 ,@FARDepreciationListing AS BIT      
 ,@FARAssetPurchases AS BIT      
 ,@FARAssetEfficiency AS BIT      
 --,@FARAssetClass AS BIT          
 ,@InvDimensions AS BIT      
 ,@InvValueBasedPrice AS BIT      
 ,@InvValueBasedPriceEdit AS BIT      
 ,@InvValueBasedPriceRemove AS BIT      
 ,@FARTran AS BIT      
 ,@FARLists AS BIT      
 ,@ARSOAdjAllowed AS BIT      
 ,@ARSQAdjAllowed AS BIT      
 ,@ARFHQAdjAllowed AS BIT      
 ,@ARCNAdjAllowed AS BIT      
 ,@ARCRAdjAllowed AS BIT      
 ,@ARCreditNotes AS BIT      
 ,@ARChangeDept AS BIT      
 ,@APInvoiceAdjAllowed AS BIT      
 ,@APPOAdjAllowed AS BIT      
 ,@APPRAdjAllowed AS BIT      
 ,@ARChangeCenter AS BIT      
 ,@POSEnableEditDiscount AS BIT      
 ,@POSOrders AS BIT      
 ,@POSQuotes AS BIT      
 ,@POSConvertOrders AS BIT      
 ,@POSConvertQuotes AS BIT      
 ,@POSAuthPayByAccount AS BIT      
 ,@POSAuthoriseRefunds AS BIT      
 ,@ARCreditBlockSI AS BIT      
 ,@ARCreditBlockSO AS BIT      
 ,@ARDeliveryAdvice AS BIT      
 ,@ARDeliveryAdviceRemove AS BIT      
 ,@InvCanChangeSellingPrice AS BIT      
 ,@ARSalesPersonChangeApproval AS BIT      
 ,@IRFinInvCostAnalysis AS BIT      
 ,@MFWorkOrders AS BIT      
 ,@MFJobs AS BIT      
 ,@MFJobAdjustApproval AS BIT      
 ,@MFProductionSchedule AS BIT      
 ,@MFPostWIP AS BIT      
 ,@MFBillOfMaterial AS BIT      
 ,@MFBOMAdjustApproval AS BIT      
 ,@MFWorkCentres AS BIT      
 ,@MFLabour AS BIT      
 ,@MFMachinery AS BIT      
 ,@MFTransferJobs AS BIT      
 ,@MFR AS BIT      
 ,@MFRTran AS BIT      
 ,@MFRWorkInProgress AS BIT      
 --,0 AS BIT          
 --,0 AS BIT          
 ,@MFRLists AS BIT      
 ,@MFRBillOfMaterial AS BIT      
 ,@MFRResource AS BIT      
 ,@MFRItemWhereUsed AS BIT      
 ,@MFRSerialLotOutOfSeq AS BIT      
 ,@MFRMRP AS BIT      
 --,0 AS BIT          
 ,@InvWorkOrder AS BIT      
 ,@InvIntReq AS BIT      
 ,@InvIssReq AS BIT      
 ,@ARRRTranCustAccrual AS BIT      
 ,@ARRRFinOrderStatement AS BIT      
 ,@IRListsInvIntReq AS BIT      
 ,@MFCloseJobs AS BIT      
 ,@FAAssetsDisposal AS BIT      
 ,@FAAssetsLocations AS BIT      
 ,@FARAssetRegister AS BIT      
 ,@DashAP AS BIT      
 ,@DashInventory AS BIT      
 ,@DashWarehouse AS BIT      
 ,@APSetupPOApprovers AS BIT      
 ,@ApprovePurchaseOrders AS BIT      
 ,@MFRWCTransfer AS BIT      
 ,@InvCatMarginApproval AS BIT      
 ,@MobSa AS BIT      
 ,@MobSaOrdProcess AS BIT      
 ,@MobSaGeoTrack AS BIT      
 ,@MobPhDash AS BIT      
 ,@MobPhDashBankBal AS BIT      
 ,@MobPhDashSalesItemComp AS BIT      
 ,@MobPhDashSalesCustCat AS BIT      
 ,@MobPhDashOutCustCat AS BIT      
 ,@MobPhDashCustVendBal AS BIT      
 ,@MobPhDashInvQty AS BIT      
 ,@MobPhDashSalesPerf AS BIT      
 ,@MobPhPOApproval AS BIT      
 ,@MobPhDashTimesheet AS BIT      
 ,@BRProjClaimStatement AS BIT      
 ,@ARRRTranCancelSalesDocs AS BIT      
 ,@AREditDeliveryMethod AS BIT      
 ,@InvIsRepackaging AS BIT      
 ,@IRRepackaging AS BIT      
 ,@ContractBilling AS BIT      
 ,@ContractBillingType AS BIT      
 ,@ProcessContractBilling AS BIT      
 ,@ARRRecurringInvoice AS BIT      
 ,@ARRContractExpiry AS BIT      
 ,@ARRContractReconciliation AS BIT      
 ,@APReOrders AS BIT      
 ,@ARShipmentsAuditTrail AS BIT      
 ,@WHDelMethod AS BIT      
 ,@BankManager AS BIT      
 ,@APPRTranInvoiceDocs AS BIT      
 ,@MFRJobStatus AS BIT      
 ,@ARSalesOrderEDI AS BIT      
 ,@WHRecAdjust AS BIT      
 ,@APReturn AS BIT      
 ,@RetAprAdjust AS BIT      
 ,@ARDeliveryAdviceAdjustApproval AS BIT      
 ,@IRFinInvBin AS BIT      
 ,@MFRProdVariance AS BIT      
 ,@MFRManVariance AS BIT      
 ,@APPriceChangeAllowed AS BIT      
 ,@DashManage AS BIT      
 ,@MergeAcct AS BIT      
 ,@WSWorkshop AS BIT      
 ,@WSBrowser AS BIT      
 ,@WSInvoice AS BIT      
 ,@WSInvoiceAdjAllowed AS BIT      
 ,@WSPrintPreview AS BIT      
 ,@WSProcessJob AS BIT      
 ,@WSProcessJobRemove AS BIT      
 ,@WSProcessJobAdjAllowed AS BIT      
 ,@WSQuote AS BIT      
 ,@WSQuoteRemove AS BIT      
 ,@WSQuoteAdjAllowed AS BIT      
 ,@WSCreditNote AS BIT      
 ,@WSCNChangesAllowed AS BIT      
 ,@WSCNAdjAllowed AS BIT      
 ,@WSCreditRequest AS BIT      
 ,@WSCreditRequestsRemove AS BIT      
 ,@WSCRAdjAllowed AS BIT      
 ,@WSAllowCreditNotesAndRequestItems AS BIT      
 ,@WSReceipts AS BIT      
 ,@WSReceiptsReversal AS BIT      
 ,@WSServiceableItem AS BIT      
 ,@WSServiceableItemType AS BIT      
 ,@WSJobTemplate AS BIT      
 ,@WSSetupTechnician AS BIT      
 ,@WSSchedule AS BIT      
 ,@WSInventoryIssue AS BIT      
 ,@workshop0 AS BIT      
 ,@WSTran AS BIT      
 ,@WSWorkInProgress AS BIT      
 ,@WSJobProfitability AS BIT      
 ,@WSResourceUsage AS BIT      
 ,@WSJobCostVariance AS BIT      
 ,@WSLists AS BIT      
 ,@WSJobTemplateList AS BIT      
 ,@WSProcDocuments AS BIT      
 ,@WSViewMarginPercentage AS BIT      
 ,@WSCreditBlockIJB AS BIT      
 ,@WSCreditBlockPJB AS BIT      
 ,@ARConfirmDeliveryAllowed AS BIT      
 ,@GLContracts AS BIT      
 ,@GLLRContracts AS BIT      
 ,@GLLRContractsMonthly AS BIT      
 ,@GLLRContractsIncomeStatement AS BIT      
 ,@POSPayouts AS BIT      
 ,@ARLayby AS BIT      
 ,@ARChangeCustOnLB AS BIT      
 ,@ARLaybyRemove AS BIT      
 ,@ARLBAdjAllowed AS BIT      
 ,@ARCreditBlockLB AS BIT      
 ,@POSLayby AS BIT      
 ,@POSConvertLayby AS BIT      
 ,@APVenRecon AS BIT      
 ,@APVenReconWorksheet AS BIT      
 ,@APBuyers AS BIT      
 ,@APVenReconTypes AS BIT      
 ,@BRProjResources AS BIT      
 ,@BRProjFinInfo AS BIT      
 ,@BRProjChecklist AS BIT      
 ,@BRProjCashFlow AS BIT      
 ,@ARPODManagement AS BIT      
 ,@InvEmployee AS BIT      
 ,@ApproveInventoryRequistion AS BIT      
 ,@APSetupIRApprovers AS BIT      
 ,@POSAuthoriseReturn AS BIT      
 --,@SwitchCompanies As Bit          
 ,@IBTBranchTransferOrder AS BIT      
 ,@IBTBranchTransfer AS BIT      
 ,@IBTBranchTransferReceipt AS BIT      
 ,@IBTGoodsInTransitReport AS BIT      
 ,@ARSoftBOMConfiguration AS BIT      
 ,@POSFormsSetup AS BIT      
 ,@BinTransfer AS BIT      
 ,@IRFinInvPurchaseTargets AS BIT      
 ,@APPRBudOnPRApproval AS BIT      
 ,@APBudgetAnalysis AS BIT      
 ,@APZRAPurchasesTrans AS BIT 
 ,@GLZRAVatTrans AS BIT  
 ,@POSCreateCustomer AS BIT      
 ,@POSSync AS BIT      
 ,@MFBOMBlockDesc AS BIT      
 ,@TrackUser AS BIT      
 ,@MobPerformanceDashboard AS BIT      
 ,@OverBudgetReq AS BIT      
 ,@NonBudgetReq AS BIT      
 ,@MaterialProfile AS BIT      
 ,@POSReinstallStoredProcedures AS BIT      
 ,@POSRePrintLastInvoice AS BIT      
 ,@CRMTaskListing AS BIT      
 ,@CRMOverdueTask AS BIT      
 ,@CRMStatusGroups AS BIT      
 ,@CRMProductivity AS BIT      
 ,@DashCRM AS BIT      
 ,@POSOpenCashDrawer AS BIT      
 ,@ESDSetupRegistration AS BIT      
 ,@WSChangeCenter AS BIT      
 ,@MobileUserLoginHistory AS BIT      
 ,@POSReprintInvoiceFromHistory AS BIT      
 ,@POSOpenPreviousReceipts AS BIT      
 ,@POSReversePreviousReceipts AS BIT      
 ,@UserRegDetails AS BIT      
 ,@IsMobileUser AS BIT      
 ,@IsMonitorSalespersonsTracking AS BIT      
 ,@IsMobileSalesOrder AS BIT      
 ,@IsMobileSalesQuote AS BIT      
 ,@IsMobileFreehandQuote AS BIT      
 ,@IsMobileCRMActivities AS BIT      
 ,@IsMobileCapturePOD AS BIT      
 ,@IsMobileCustomers AS BIT      
 ,@IsMobileExpenseClaims AS BIT      
 ,@IsMobileDeliveryAdvice AS BIT      
 ,@IsMobileEnuiriesByItem AS BIT      
 ,@IsMobileEnuiriesByLocation AS BIT      
 ,@IsMobileWarehouseTransfer AS BIT      
 ,@IsMobileBinTransfer AS BIT      
 ,@IsMobileGoodsReceiving AS BIT      
 ,@IsMobileStockCount AS BIT      
 ,@IsMobilePutAway AS BIT      
 ,@IsMobileStockPick AS BIT      
 ,@IsMobileJobWorkCentreTransfer AS BIT      
 ,@IsMobileInventoryIssue AS BIT      
 ,@VendorName AS NVARCHAR(50)      
 ,@IsMobileWSCreateQuotation AS BIT      
 ,@IsMobileWSProcessJob AS BIT      
 ,@IsMobileWSSchedule AS BIT      
 ,@IsMobileWSInventoryIssue AS BIT      
 ,@IsMobileProcuPurchaseRequisitions AS BIT      
 ,@IsMobileProcuPurchaseOrder AS BIT      
 ,@IsMobileWSServiceableItem AS BIT      
 ,@WSServiceHistory AS BIT      
 ,@MFReverseJobs AS BIT      
 ,@MFReverseJobEditQty AS BIT      
 ,@WRShipmentReport AS BIT      
 ,@IsMobileSalesInvoice AS BIT      
 ,@IsMobileCreditNoteApproval AS BIT      
 ,@IsEditComponentCost AS BIT      
 ,@IsMobileFinance AS BIT      
 ,@IsDispensingCashOnCashGuard AS BIT      
 ,@MFBOMItemCostsOnReport AS BIT      
 ,@IsGLApprovalAdjusment AS BIT    
 ,@POSDrawerGroups AS BIT   
 ,@CRMMyActivities AS BIT     
 ,@CRMMyActions AS BIT  
 ,@CRMUnassignedActivities AS BIT  
 ,@CRMNotifications AS BIT  
 ,@CRMAllActivities AS BIT  
 ,@CRMAllActions AS BIT  
 ,@CRMReports AS BIT  
 ,@CRMDashboard AS BIT  
 ,@InvInventoryActive AS BIT    
 ,@InvIncompatibleItems AS BIT    
 ,@APRebateSetup AS BIT    
 ,@APProcessRebate AS BIT    
 ,@APRebateReport AS BIT    
 ,@ARRRFinSPCOMM AS BIT    
 ,@DefaultLanguage as nvarchar(10)    
 ,@DefaultCompanyLocation as nvarchar(50)    
    
 )      
AS      
BEGIN      
 INSERT INTO tblUsers (      
  strUserName      
  ,strName      
  ,strCellNumber      
  ,strEmail      
  ,strPassword      
  ,blnIsAdmin      
  ,blnIsLockedOut      
  ,blnMustChange      
  ,blnCompany      
  ,blnCoFileHandle      
  ,blnGL      
  ,blnPayables      
  ,blnPayPayments      
  ,blnReceivables      
  ,blnRecReceipts      
  ,blnInventory      
  ,blnInvAdjust      
  ,blnInvCount      
  ,blnSMS      
  ,blnBusMgr      
  ,blnPOS      
  ,blnProjects      
  ,dteLastLogin      
  ,blnCashBook      
  ,blnReminders      
  ,blnMarketing      
  ,blnCollection      
  ,blnPOSCash      
  ,blnCoAdmin      
  ,blnMainSum      
  ,blnAcctSets      
  ,blnJournal      
  ,blnBankTrans      
  ,blnBankRecon      
  ,blnAPPurch      
  ,blnAPTax      
  ,blnARCredit      
  ,blnARSales      
  ,blnARBatch      
  ,blnInvPricelists      
  ,blnInvLoc      
  ,blnInvCats      
  ,blnInvAssbly      
  ,blnInvTrans      
  ,blnSMSCredits      
  ,blnPOSDrop      
  ,blnPOSTerminalSetup      
  ,blnPOSTerminalSetupList      
  ,blnPOSProfileMenu      
  ,blnBulkSMS      
  ,blnGLExpense      
  ,blnDeposits      
  ,blnInvPDT      
  ,blnARPersons      
  ,blnAPBatch      
  ,blnAPBrowser      
  ,blnARBrowser      
  ,blnTemplates      
  ,blnAREmail      
  ,blnWHRec      
  ,blnWHPick      
  ,blnWHBatch      
  ,uID      
  ,blnFiles      
  ,strLocName      
  ,blnCycle      
  ,blnInterest      
  ,blnAPOrders      
  ,blnAPReq      
  ,blnAROrders      
  ,blnARQuotes      
  ,blnARQuSys      
  ,blnWHStPick      
  ,blnInvBrowser      
  ,blnWHShp      
  ,blnWHPrPack      
  ,blnWHCont      
  ,blnWHMani      
  ,blnWHShBrow      
  ,blnJobCost      
  ,blnDept      
  ,blnSubLedger      
  ,blnCLetters      
  ,blnTop20      
  ,blnTransTab      
  ,blnRecPayJournal      
  ,blnARCats      
  ,blnInvDiscMatrix      
  ,blnARBlockDesc      
  ,blnARBlockUnit      
  ,blnARBlockDiscount      
  ,blnAPBlockDesc      
  ,blnAPBlockUnit      
  ,blnAPBlockDiscount      
  ,blnWHDelDriver      
  ,blnWHDelVehicle      
  ,blnWHDelRoute      
  ,blnARCreditRequests      
  ,blnBITab      
  ,blnBICubeAdd      
  ,blnBICubeEdit      
  ,blnBICubeDelete      
  ,blnBIViewAdd      
  ,blnBIViewEdit      
  ,blnBIViewDelete      
  ,blnARSendPricelists      
  ,blnInvNumConv      
  ,blnInvSerialTypes      
  ,blnAPCats      
  ,blnARPrintPreview      
  ,blnARCNChangesAllowed      
  ,blnARPriceChangeAllowed      
  ,blnAPDNChangesAllowed      
  ,blnARInvoiceAdjAllowed      
  ,blnARAllowCreditNotesAndRequestItems      
  ,blnAPPaymentApprovals      
  ,blnInvForecasting      
  ,blnInvBarcode      
  ,blnInvItemCostUpdater      
  ,blnInvItemRenaming      
  ,blnAPECOMSettings      
  ,blnAPShowStatsOnDocs      
  ,blnARShowStatsOnDocs      
  ,blnGLOpenItemAlloc      
  ,blnGLLR      
  ,blnGLLRFin      
  ,blnGLLRFinBalSheetStd      
  ,blnGLLRFinBalSheetComp      
  ,blnGLLRFinIncomeStd      
  ,blnGLLRFinIncomeComp      
  ,blnGLLRFinIncomeMulti      
  ,blnGLLRFinIncomeGP      
  ,blnGLLRFinIncomeMini      
  ,blnGLLRFinTrialBal      
  ,blnGLLRFinPerMovement      
  ,blnGLLRFinMultiCompany      
  ,blnGLLRTran      
  ,blnGLLRTranLedger      
  ,blnGLLRTranEntryType      
  ,blnGLLRTranTax      
  ,blnGLLRTranDocTran      
  ,blnGLLRBudgets      
  ,blnGLLRBudgetsAmounts      
  ,blnGLLRBudgetsCompIncome      
  ,blnGLLRBudgetsCompIncomeF      
  ,blnGLLRBudgetsCompBalSheet      
  ,blnGLLRDept      
  ,blnGLLRDeptBalSheetStd      
  ,blnGLLRDeptIncomeStd      
  ,blnGLLRDeptIncomeComp      
  ,blnGLLRDeptTrialBal      
  ,blnGLLRDeptLedger      
  ,blnGLLRDeptBudgetAmounts      
  ,blnGLLRDeptCompIncome      
  ,blnGLLRLists      
  ,blnGLLRListsAccounts      
  ,blnGLLRListsAccountSets      
  ,blnGLLRListsJournalCodes      
  ,blnGLCR      
  ,blnGLCRFin      
  ,blnGLCRFinIncome      
  ,blnGLCRFinIncomeMulti      
  ,blnGLCRTran      
  ,blnGLCRTranAlloc      
  ,blnGLCRTranAllocMissing      
  ,blnGLCRBudget      
  ,blnGLCRBudgetCompBudget      
  ,blnGLCRLists      
  ,blnGLCRListsProfitCenters      
  ,blnAPPR      
  ,blnAPPRFin      
  ,blnAPPRFinVendorAged      
  ,blnAPPRTran      
  ,blnAPPRTranVendorPurchases      
  ,blnAPPRTranPendingPurchaseOrders      
  ,blnAPPRTranPendingPurchaseReq      
  ,blnAPPRTranVendorTran   
  ,blnAPETIMSPurchasesTrans
  ,blnAPPRLists      
  ,blnAPPRListsVendors      
  ,blnAPPRListsContacts      
  ,blnARRR      
  ,blnARRRFin      
  ,blnARRRFinCustAged      
  ,blnARRRFinCallSheet      
  ,blnARRRFinCustStatements      
  ,blnARRRFinSalesStatements      
  ,blnARRRFinInvoiceGP      
  ,blnARRRFinCustProfiability      
  ,blnARRRFinCustSalesTargets      
  ,blnARRRFinCustSalesTrends      
  ,blnARRRFinSPPerf      
  ,blnARRRFinSPTargets      
  ,blnARRRTran      
  ,blnARRRTranCustSales      
  ,blnARRRTranSPSales      
  ,blnARRRTranSPMissing      
  ,blnARRRTranInvoiceDocs      
  ,blnARRRTranCashUp      
  ,blnARRRTranPendingSalesOrders      
  ,blnARRRTranClosedSalesOrders      
  ,blnARRRTranCredits      
  ,blnARRRTranCustTran      
  ,blnARRRTranOpenQuotes      
  ,blnARRRLists      
  ,blnARRRListsPricelist      
  ,blnARRRListsCustomers      
  ,blnARRRListsSalesPersons      
  ,blnARRRListsContactsList      
  ,blnIR      
  ,blnIRFin      
  ,blnIRFinInvAged      
  ,blnIRFinInvValuation      
  ,blnIRFinLocSum      
  ,blnIRFinInvLoc      
  ,blnIRFinQuantity      
  ,blnIRFinQuantityLoc      
  ,blnIRFinInvSalesTargets      
  ,blnIRTran      
  ,blnIRTranInvSales      
  ,blnIRTranInvTran      
  ,blnIRTranInvLedger      
  ,blnIRTranInvLedgerLoc      
  ,blnIRTranNegInvCorrections      
  ,blnIRTranPricelistChangeLog      
  ,blnIRTranSegInvMovement      
  ,blnIRTranSegInvSales      
  ,blnIRTranSerializedItemTracking      
  ,blnIRTranLotNumMovement      
  ,blnIRLists      
  ,blnIRListsPricing      
  ,blnIRListsInventory      
  ,blnIRListsStockCountSheets      
  ,blnIRListsAdjustments      
  ,blnWR      
  ,blnWROrders      
  ,blnWROrdersPendingPurchaseOrders      
  ,blnWROrdersPendingSalesOrders      
  ,blnPOSR      
  ,blnPOSRFin      
  ,blnPOSRFinDrawerClosing      
  ,blnPOSRFinCashierVariance      
  ,blnPOSRLists      
  ,blnPOSRListsCashDrawers      
  ,blnBR      
  ,blnBRProj      
  ,blnBRProjTender      
  ,blnBRProjAlloc      
  ,blnBRProjMissingAllow      
  ,blnBRProjSalesMatrix      
  ,blnBRProjPurchMatrix      
  ,blnBRProjCombinedMatrix      
  ,blnBRProjActvsBudget      
  ,blnBRAdmin      
  ,blnBRAdminHistory      
  ,blnSMSRLog      
  ,blnGLJournalReports      
  ,blnGLTransactionReports      
  ,blnAPPaymentsReports      
  ,blnAPTransactionsReports      
  ,blnARReceiptsReports      
  ,blnARTransactionsReports      
  ,blnISalesReports      
  ,blnITransactionsReports      
  ,blnSMSR      
  ,blnFHQCanApprove      
  ,blnFHQCreatePurchaseOrder      
  ,blnARViewMarginPercentage      
  ,blnAPPendingPayApprovals      
  ,blnGLLRTranCashBook      
  ,blnAPPRTranVendAccrual      
  ,blnIRListsItemWhereUsed      
  ,blnIRTranBillOfMaterials      
  ,blnAPBulkRFQ      
  ,blnInvProdSchedule      
  ,blnInvWorkCentres      
  ,blnIRListsProductionSchedule      
  ,blnAPPRTranBulkRFQ      
  ,blnRecReceiptsReversal      
  ,blnARRRTranSalesSummary      
  ,blnDashMain      
  ,blnDashBusiness      
  ,blnDashAR      
  ,blnARChangeCustOnSO      
  ,blnARChangeCustOnSQ      
  ,blnAPOrdersRemove      
  ,blnAPReqRemove      
  ,blnAROrdersRemove      
  ,blnARQuotesRemove      
  ,blnARCreditRequestsRemove      
  ,blnAPBlockTax      
  ,blnARBlockTax      
  ,blnAPBulkRFQRemove      
  ,blnARQuSysRemove      
  ,blnWHStPickRemove      
  ,blnWHRecRemove      
  ,blnWHShpRemove      
  ,blnWHContRemove      
  ,blnARMatrixType      
  ,blnARMatrixTypeEdit      
  ,blnARMatrixTypeRemove      
  ,blnIRTranInvEfficiency      
  ,blnInvLotNumExpiryDates      
  ,blnARRRTranMatrixTypeChangeLog      
  ,blnInvBulkLabelPrinting      
  ,bitInvVoucher      
  ,blnInvShowItemCost      
  ,bitInvWebstoreSync      
  ,strSalesName      
  ,intARDept      
  ,intAPDept      
  ,bitARVoucerReprint        
  ,blnARChangeDocInfo      
  ,blnAPChangeDocInfo      
  ,blnFADepreciateAsset      
  ,blnFAAssets      
  ,blnFAAssetTypes      
  ,blnFADepreciationMethods      
  ,blnFACostTypes      
  ,blnFADisposalMethods      
  ,blnFAR      
  ,blnFARSummary      
  ,blnFARAssetListing      
  ,blnFARDisposals      
  ,blnFARDepreciationListing      
  ,blnFARAssetPurchases      
  ,blnFARAssetEfficiency      
  --,blnFARAssetClass          
  ,blnInvDimensions      
  ,blnInvValueBasedPrice      
  ,blnInvValueBasedPriceEdit      
  ,blnInvValueBasedPriceRemove      
  ,blnFARTran      
  ,blnFARLists      
  ,blnARSOAdjAllowed      
  ,blnARSQAdjAllowed      
  ,blnARFHQAdjAllowed      
  ,blnARCNAdjAllowed      
  ,blnARCRAdjAllowed      
  ,blnARCreditNotes      
  ,blnARChangeDept      
  ,blnAPInvoiceAdjAllowed      
  ,blnAPPOAdjAllowed      
  ,blnAPPRAdjAllowed      
  ,blnARChangeCenter      
  ,bitPOSEnableEditDiscount      
  ,blnPOSOrders      
  ,blnPOSQuotes      
  ,blnPOSConvertOrders      
  ,blnPOSConvertQuotes      
  ,blnPOSAuthPayByAccount      
  ,blnPOSAuthoriseRefunds      
  ,blnARCreditBlockSI      
  ,blnARCreditBlockSO      
  ,blnARDeliveryAdvice      
  ,blnARDeliveryAdviceRemove      
  ,blnInvCanChangeSellingPrice      
  ,blnARSalesPersonChangeApproval      
  ,blnIRFinInvCostAnalysis      
  ,blnMFWorkOrders      
  ,blnMFJobs      
  ,blnMFJobAdjustApproval      
  ,blnMFProductionSchedule      
  ,blnMFPostWIP      
  ,blnMFBillOfMaterial      
  ,blnMFBOMAdjustApproval      
  ,blnMFWorkCentres      
  ,blnMFLabour      
  ,blnMFMachinery      
  ,blnMFTransferJobs      
  ,blnMFR      
  ,blnMFRTran      
  ,blnMFRWorkInProgress      
  --,blnMFRVariance          
  --,blnMFREfficiency          
  ,blnMFRLists      
  ,blnMFRBillOfMaterial      
  ,blnMFRResource      
  ,blnMFRItemWhereUsed      
  ,blnMFRSerialLotOutOfSeq      
  ,blnMFRMRP      
  --,blnMFRResEfficiency          
  ,blnInvWorkOrder      
  ,blnInvIntReq      
  ,blnInvIssReq      
  ,blnARRRTranCustAccrual      
  ,blnARRRFinOrderStatement      
  ,blnIRListsInvIntReq      
  ,blnMFCloseJobs      
  ,blnFAAssetsDisposal      
  ,blnFAAssetsLocations      
  ,blnFARAssetRegister      
  ,blnDashAP      
  ,blnDashInventory      
  ,blnDashWarehouse      
  ,blnAPSetupPOApprovers      
  ,blnApprovePurchaseOrders      
  ,blnMFRWCTransfer      
  ,blnInvCatMarginApproval      
  ,blnMobSa      
  ,blnMobSaOrdProcess      
  ,blnMobSaGeoTrack      
  ,blnMobPhDash      
  ,blnMobPhDashBankBal      
  ,blnMobPhDashSalesItemComp      
  ,blnMobPhDashSalesCustCat      
  ,blnMobPhDashOutCustCat      
  ,blnMobPhDashCustVendBal      
  ,blnMobPhDashInvQty      
  ,blnMobPhDashSalesPerf      
  ,blnMobPhPOApproval      
  ,blnMobPhDashTimesheet      
  ,blnBRProjClaimStatement      
  ,blnARRRTranCancelSalesDocs      
  ,blnAREditDeliveryMethod      
  ,blnInvIsRepackaging      
  ,blnIRRepackaging      
  ,blnContractBilling      
  ,blnContractBillingType      
  ,blnProcessContractBilling      
  ,blnARRRecurringInvoice      
  ,blnARRContractExpiry      
  ,blnARRContractReconciliation      
  ,blnAPReOrders      
  ,blnARShipmentsAuditTrail      
  ,blnWHDelMethod      
  ,blnBankManager      
  ,blnAPPRTranInvoiceDocs      
  ,blnMFRJobStatus      
  ,blnARSalesOrderEDI      
  ,blnAPGRVAdjustmentApproval      
  ,blnAPReturnSelection      
  ,blnAPReturnAdjustmentApproval      
  ,blnARDAAdjustmentApproval      
  ,blnIRFinInvBin      
  ,blnMFRProdVariance      
  ,blnMFRManVariance      
  ,blnAPPriceChangeAllowed      
  ,blnDashManage      
  ,blnGLMergeAccounts      
  ,blnWSWorkshop      
  ,blnWSBrowser      
  ,blnWSInvoice      
  ,blnWSInvoiceAdjAllowed      
  ,blnWSPrintPreview      
  ,blnWSProcessJob      
  ,blnWSProcessJobRemove      
  ,blnWSProcessJobAdjAllowed      
  ,blnWSQuote      
  ,blnWSQuoteRemove      
  ,blnWSQuoteAdjAllowed      
  ,blnWSCreditNote      
  ,blnWSCNChangesAllowed      
  ,blnWSCNAdjAllowed      
  ,blnWSCreditRequest      
  ,blnWSCreditRequestsRemove      
  ,blnWSCRAdjAllowed      
  ,blnWSAllowCreditNotesAndRequestItems      
  ,blnWSReceipts      
  ,blnWSReceiptsReversal      
  ,blnWSServiceableItem      
  ,blnWSServiceableItemType      
  ,blnWSJobTemplate      
  ,blnWSSetupTechnician      
  ,blnWSSchedule      
  ,blnWSInventoryIssue      
  ,blnworkshop0      
  ,blnWSTran      
  ,blnWSWorkInProgress      
  ,blnWSJobProfitability      
  ,blnWSResourceUsage      
  ,blnWSJobCostVariance      
  ,blnWSLists      
  ,blnWSJobTemplateList      
  ,blnWSProcDocuments      
  ,blnWSViewMarginPercentage      
  ,blnWSCreditBlockIJB      
  ,blnWSCreditBlockPJB      
  ,blnARConfirmDeliveryAllowed      
  ,blnGLContracts      
  ,blnGLLRContracts      
  ,blnGLLRContractsMonthly      
  ,blnGLLRContractsIncomeStatement      
  ,blnPOSPayouts      
  ,blnARLayby      
  ,blnARChangeCustOnLB      
  ,blnARLaybyRemove      
  ,blnARLBAdjAllowed      
  ,blnARCreditBlockLB      
  ,blnPOSLayby      
  ,blnPOSConvertLayby      
  ,blnAPVenRecon      
  ,blnAPVenReconWorksheet      
  ,blnAPBuyers      
  ,blnAPVenReconTypes      
  ,blnBRProjResources      
  ,blnBRProjFinInfo      
  ,blnBRProjChecklist      
  ,blnBRProjCashFlow      
  ,blnARPODManagement      
  ,blnInvEmployee      
  ,blnApproveInventoryRequistion      
  ,blnAPSetupIRApprovers      
  ,blnPOSAuthoriseReturn      
  --,blnSwitchCmp          
  ,blnIBTBranchTransOrder      
  ,blnIBTBranchTrans      
  ,blnIBTBranchTransReceipt      
  ,blnIBTGoodInTransitRpt      
  ,blnARSoftBOMConfiguration      
  ,blnPOSFormsSetup      
  ,blnBinTransfer      
  ,blnIRFinInvPurchaseTargets      
  ,blnAPPRBudOnPRApproval      
  ,blnAPBudgetAnalysis     
  ,blnAPZRAPurchasesTrans  
  ,blnGLZRAVatTrans
  ,blnPOSCreateCustomer      
  ,blnPOSSync      
  ,blnMFBlockDesc      
  ,blnTrackUser      
  ,blnMobPerformanceDashboard      
  ,blnOverBudgetReq      
  ,blnNonBudgetReq      
  ,blnMaterialProfile      
  ,blnPOSReinstallStoredProcedures      
  ,blnPOSRePrintLastInvoice      
  ,blnCRMTaskListing      
  ,blnCRMOverdueTask      
  ,blnCRMStatusGroups      
,blnCRMProductivity      
  ,blnDashCRM      
  ,blnPOSOpenCashDrawer      
  ,blnESDSetupRegistration      
  ,blnWSChangeCenter      
  ,bitMobileUserLoginHistory      
  ,blnPOSReprintInvoiceFromHistory      
  ,blnPOSOpenPreviousReceipts      
  ,blnPOSReversePreviousReceipts      
  ,blnUserRegDetails      
  ,blnIsMobileUser      
  ,blnIsMonitorSalespersonsTracking      
  ,blnIsMobileSalesOrder      
  ,blnIsMobileSalesQuote      
  ,blnIsMobileFreehandQuote      
  ,blnIsMobileCRMActivities      
  ,blnIsMobileCapturePOD      
  ,blnIsMobileCustomers      
  ,blnIsMobileExpenseClaims      
  ,blnIsMobileDeliveryAdvice      
  ,blnIsMobileEnuiriesByItem      
  ,blnIsMobileEnuiriesByLocation      
  ,blnIsMobileWarehouseTransfer      
  ,blnIsMobileBinTransfer      
  ,blnIsMobileGoodsReceiving      
  ,blnIsMobileStockCount      
  ,blnIsMobilePutAway      
  ,blnIsMobileStockPick      
  ,blnIsMobileJobWorkCentreTransfer      
  ,blnIsMobileInventoryIssue      
  ,strVendName      
  ,blnIsMobileWSCreateQuotation      
  ,blnIsMobileWSProcessJob      
  ,blnIsMobileWSSchedule      
  ,blnIsMobileWSInventoryIssue      
  ,blnIsMobileProcuPurchaseRequisitions      
  ,blnIsMobileProcuPurchaseOrder      
  ,blnIsMobileWSServiceableItem      
  ,blnWSServiceHistory      
  ,blnMFReverseJobs      
  ,blnMFReverseJobEditQty      
  ,blnWRShipment      
  ,blnIsMobileSalesInvoice       
  ,blnIsMobileCreditNoteApproval      
  ,bitIsEditComponentCost      
  ,blnIsMobileFinance      
  ,blnIsDispensingCashOnCashGuard      
  ,blnMFBOMItemCostsOnReport      
  ,blnGLApprovalAdjusment    
  ,blnPOSDrawerGroups    
  ,blnCRMMyActivities  
  ,blnCRMMyActions  
  ,blnCRMUnassignedActivities  
  ,blnCRMNotifications  
  ,blnCRMAllActivities  
  ,blnCRMAllActions  
  ,blnCRMReports  
  ,blnCRMDashboard  
  ,blnInvInventoryActive    
  ,blnInvIncompatibleItems    
  ,blnAPRebateSetup    
  ,blnAPProcessRebate    
  ,blnAPRebateReport    
  ,blnARRRFinSPCOMM    
  ,strDefaultLanguage    
  ,strDefaultCompanyLocation    
  )      
 VALUES (      
  @UserName      
  ,@Name      
  ,@CellNumber      
  ,@Email      
  ,@Password      
  ,@IsAdmin      
  ,@IsLockedOut      
  ,@MustChange      
  ,@Company      
  ,@CoFileHandle      
  ,@GL      
  ,@Payables      
  ,@PayPayments      
  ,@Receivables      
  ,@RecReceipts      
  ,@Inventory      
  ,@InvAdjust      
  ,@InvCount      
  ,@SMS      
  ,@BusMgr      
  ,@POS      
  ,@Projects      
  ,@LastLogin      
  ,@CashBook      
  ,@Reminders      
  ,@Marketing      
  ,@Collection      
  ,@POSCash      
  ,@CoAdmin      
  ,@MainSum      
  ,@AcctSets      
  ,@Journal      
  ,@BankTrans      
  ,@BankRecon      
  ,@APPurch      
  ,@APTax      
  ,@ARCredit      
  ,@ARSales      
  ,@ARBatch      
  ,@InvPricelists      
  ,@InvLoc      
  ,@InvCats      
  ,@InvAssbly      
  ,@InvTrans      
  ,@SMSCredits      
  ,@POSDrop      
  ,@POSTerminalSetup      
  ,@POSTerminalSetupList      
  ,@POSProfileMenu      
  ,@BulkSMS      
  ,@GLExpense      
  ,@Deposits      
  ,@InvPDT      
  ,@ARPersons      
  ,@APBatch      
  ,@APBrowser      
  ,@ARBrowser      
  ,@Templates      
  ,@AREmail      
  ,@WHRec      
  ,@WHPick      
  ,@WHBatch      
  ,NEWID()      
  ,@Files      
  ,@LocName      
  ,@Cycle      
  ,@Interest      
  ,@APOrders      
  ,@APReq      
  ,@AROrders      
  ,@ARQuotes      
  ,@ARQuSys      
  ,@WHStPick      
  ,@InvBrowser      
  ,@WHShp      
  ,@WHPrPack      
  ,@WHCont      
  ,@WHMani      
  ,@WHShBrow      
  ,@JobCost      
  ,@Dept      
  ,@SubLedger      
  ,@CLetters      
  ,@Top20      
  ,@TransTab      
  ,@RecPayJournal      
  ,@ARCats      
  ,@InvDiscMatrix      
  ,@ARBlockDesc      
  ,@ARBlockUnit      
  ,@ARBlockDiscount      
  ,@APBlockDesc      
  ,@APBlockUnit      
  ,@APBlockDiscount      
  ,@WHDelDriver      
  ,@WHDelVehicle      
  ,@WHDelRoute      
  ,@ARCreditRequests      
  ,@BITab      
  ,@BICubeAdd      
  ,@BICubeEdit      
  ,@BICubeDelete      
  ,@BIViewAdd      
  ,@BIViewEdit      
  ,@BIViewDelete      
  ,@ARSendPricelists      
  ,@InvNumConv      
  ,@InvSerialTypes      
  ,@APCats      
  ,@ARPrintPreview      
  ,@ARCNChangesAllowed      
  ,@ARPriceChangeAllowed      
  ,@APDNChangesAllowed      
  ,@ARInvoiceAdjAllowed      
  ,@ARAllowCreditNotesAndRequestItems      
  ,@APPaymentApprovals      
  ,@InvForecasting      
  ,@InvBarcode      
  ,@InvItemCostUpdater      
  ,@InvItemRenaming      
  ,@APECOMSettings      
  ,@APShowStatsOnDocs      
  ,@ARShowStatsOnDocs      
  ,@GLOpenItemAlloc      
  ,@GLLR      
  ,@GLLRFin      
  ,@GLLRFinBalSheetStd      
  ,@GLLRFinBalSheetComp      
  ,@GLLRFinIncomeStd      
  ,@GLLRFinIncomeComp      
  ,@GLLRFinIncomeMulti      
  ,@GLLRFinIncomeGP      
  ,@GLLRFinIncomeMini      
  ,@GLLRFinTrialBal      
  ,@GLLRFinPerMovement      
  ,@GLLRFinMultiCompany      
  ,@GLLRTran      
  ,@GLLRTranLedger      
  ,@GLLRTranEntryType      
  ,@GLLRTranTax      
  ,@GLLRTranDocTran      
  ,@GLLRBudgets      
  ,@GLLRBudgetsAmounts      
  ,@GLLRBudgetsCompIncome      
  ,@GLLRBudgetsCompIncomeF      
  ,@GLLRBudgetsCompBalSheet      
  ,@GLLRDept      
  ,@GLLRDeptBalSheetStd      
  ,@GLLRDeptIncomeStd      
  ,@GLLRDeptIncomeComp      
  ,@GLLRDeptTrialBal      
  ,@GLLRDeptLedger      
  ,@GLLRDeptBudgetAmounts      
  ,@GLLRDeptCompIncome      
  ,@GLLRLists      
  ,@GLLRListsAccounts      
  ,@GLLRListsAccountSets      
  ,@GLLRListsJournalCodes      
  ,@GLCR      
  ,@GLCRFin      
  ,@GLCRFinIncome      
  ,@GLCRFinIncomeMulti      
  ,@GLCRTran      
  ,@GLCRTranAlloc      
  ,@GLCRTranAllocMissing      
  ,@GLCRBudget      
  ,@GLCRBudgetCompBudget      
  ,@GLCRLists      
  ,@GLCRListsProfitCenters      
  ,@APPR      
  ,@APPRFin      
  ,@APPRFinVendorAged      
  ,@APPRTran      
  ,@APPRTranVendorPurchases      
  ,@APPRTranPendingPurchaseOrders      
  ,@APPRTranPendingPurchaseReq      
  ,@APPRTranVendorTran  
  ,@APETIMSPurchasesTrans
  ,@APPRLists      
  ,@APPRListsVendors      
  ,@APPRListsContacts      
  ,@ARRR      
  ,@ARRRFin      
  ,@ARRRFinCustAged      
  ,@ARRRFinCallSheet      
  ,@ARRRFinCustStatements      
  ,@ARRRFinSalesStatements      
  ,@ARRRFinInvoiceGP      
  ,@ARRRFinCustProfiability      
  ,@ARRRFinCustSalesTargets      
  ,@ARRRFinCustSalesTrends      
  ,@ARRRFinSPPerf      
  ,@ARRRFinSPTargets      
  ,@ARRRTran      
  ,@ARRRTranCustSales      
  ,@ARRRTranSPSales      
  ,@ARRRTranSPMissing      
  ,@ARRRTranInvoiceDocs      
  ,@ARRRTranCashUp      
  ,@ARRRTranPendingSalesOrders      
  ,@ARRRTranClosedSalesOrders      
  ,@ARRRTranCredits      
  ,@ARRRTranCustTran      
  ,@ARRRTranOpenQuotes      
  ,@ARRRLists      
  ,@ARRRListsPricelist      
  ,@ARRRListsCustomers      
  ,@ARRRListsSalesPersons      
  ,@ARRRListsContactsList      
  ,@IR      
  ,@IRFin      
  ,@IRFinInvAged      
  ,@IRFinInvValuation      
  ,@IRFinLocSum      
  ,@IRFinInvLoc      
  ,@IRFinQuantity      
  ,@IRFinQuantityLoc      
  ,@IRFinInvSalesTargets      
  ,@IRTran      
  ,@IRTranInvSales      
  ,@IRTranInvTran      
  ,@IRTranInvLedger      
  ,@IRTranInvLedgerLoc      
  ,@IRTranNegInvCorrections      
  ,@IRTranPricelistChangeLog      
  ,@IRTranSegInvMovement      
  ,@IRTranSegInvSales      
  ,@IRTranSerializedItemTracking      
  ,@IRTranLotNumMovement      
  ,@IRLists      
  ,@IRListsPricing      
  ,@IRListsInventory      
  ,@IRListsStockCountSheets      
  ,@IRListsAdjustments      
  ,@WR      
  ,@WROrders      
  ,@WROrdersPendingPurchaseOrders      
  ,@WROrdersPendingSalesOrders      
  ,@POSR      
  ,@POSRFin      
  ,@POSRFinDrawerClosing      
  ,@POSRFinCashierVariance      
  ,@POSRLists      
  ,@POSRListsCashDrawers      
  ,@BR      
  ,@BRProj      
  ,@BRProjTender      
  ,@BRProjAlloc      
  ,@BRProjMissingAllow      
  ,@BRProjSalesMatrix      
  ,@BRProjPurchMatrix      
  ,@BRProjCombinedMatrix      
  ,@BRProjActvsBudget      
  ,@BRAdmin      
  ,@BRAdminHistory      
  ,@SMSRLog      
  ,@GLJournalReports      
  ,@GLTransactionReports      
  ,@APPaymentsReports      
  ,@APTransactionsReports      
  ,@ARReceiptsReports      
  ,@ARTransactionsReports      
  ,@ISalesReports      
  ,@ITransactionsReports      
  ,@SMSR      
  ,@FHQCanApprove      
  ,@FHQCreatePurchaseOrder      
  ,@ARViewMarginPercentage      
  ,@APPendingPayApprovals      
  ,@GLLRTranCashBook      
  ,@APPRTranVendAccrual      
  ,@IRListsItemWhereUsed      
  ,@IRTranBillOfMaterials      
  ,@APBulkRFQ      
  ,@InvProdSchedule      
  ,@InvWorkCentres      
  ,@IRListsProductionSchedule      
  ,@APPRTranBulkRFQ      
  ,@RecReceiptsReversal      
  ,@ARRRTranSalesSummary      
  ,@DashMain      
  ,@DashBusiness      
  ,@DashAR      
  ,@ARChangeCustOnSO      
  ,@ARChangeCustOnSQ      
  ,@APOrdersRemove      
  ,@APReqRemove      
  ,@AROrdersRemove      
  ,@ARQuotesRemove      
  ,@ARCreditRequestsRemove      
  ,@APBlockTax      
  ,@ARBlockTax      
  ,@APBulkRFQRemove      
  ,@ARQuSysRemove      
  ,@WHStPickRemove      
  ,@WHRecRemove      
  ,@WHShpRemove      
  ,@WHContRemove      
  ,@ARMatrixType      
  ,@ARMatrixTypeEdit      
  ,@ARMatrixTypeRemove      
  ,@IRTranInvEfficiency      
  ,@InvLotNumExpiryDates      
  ,@ARRRTranMatrixTypeChangeLog      
  ,@InvBulkLabelPrinting      
  ,@InvVoucher      
  ,@InvShowItemCost      
  ,@InvWebstoreSync      
  ,@SalesName      
  ,@ARDept      
  ,@APDept      
  ,@ARVoucerReprint      
  ,@ARChangeDocInfo      
  ,@APChangeDocInfo      
  ,@FADepreciateAsset      
  ,@FAAssets      
  ,@FAAssetTypes      
  ,@FADepreciationMethods      
  ,@FACostTypes      
  ,@FADisposalMethods      
  ,@FAR      
  ,@FARSummary      
  ,@FARAssetListing      
  ,@FARDisposals      
  ,@FARDepreciationListing      
  ,@FARAssetPurchases      
  ,@FARAssetEfficiency      
  --,@FARAssetClass          
  ,@InvDimensions      
  ,@InvValueBasedPrice      
  ,@InvValueBasedPriceEdit      
  ,@InvValueBasedPriceRemove      
  ,@FARTran      
  ,@FARLists      
  ,@ARSOAdjAllowed      
  ,@ARSQAdjAllowed      
  ,@ARFHQAdjAllowed      
  ,@ARCNAdjAllowed      
  ,@ARCRAdjAllowed      
  ,@ARCreditNotes      
  ,@ARChangeDept      
  ,@APInvoiceAdjAllowed      
  ,@APPOAdjAllowed      
  ,@APPRAdjAllowed      
  ,@ARChangeCenter      
  ,@POSEnableEditDiscount      
  ,@POSOrders      
  ,@POSQuotes      
  ,@POSConvertOrders      
  ,@POSConvertQuotes      
  ,@POSAuthPayByAccount      
  ,@POSAuthoriseRefunds      
  ,@ARCreditBlockSI      
  ,@ARCreditBlockSO      
  ,@ARDeliveryAdvice      
  ,@ARDeliveryAdviceRemove      
  ,@InvCanChangeSellingPrice      
  ,@ARSalesPersonChangeApproval      
  ,@IRFinInvCostAnalysis      
  ,@MFWorkOrders      
  ,@MFJobs      
  ,@MFJobAdjustApproval      
  ,@MFProductionSchedule      
  ,@MFPostWIP      
  ,@MFBillOfMaterial      
  ,@MFBOMAdjustApproval      
  ,@MFWorkCentres      
  ,@MFLabour      
  ,@MFMachinery      
  ,@MFTransferJobs      
  ,@MFR      
  ,@MFRTran      
  ,@MFRWorkInProgress      
  --,@MFRVariance          
  --,@MFREfficiency          
  ,@MFRLists      
  ,@MFRBillOfMaterial      
  ,@MFRResource      
  ,@MFRItemWhereUsed      
  ,@MFRSerialLotOutOfSeq      
  ,@MFRMRP      
  --,@MFRResEfficiency          
  ,@InvWorkOrder      
  ,@InvIntReq      
  ,@InvIssReq      
  ,@ARRRTranCustAccrual      
  ,@ARRRFinOrderStatement      
  ,@IRListsInvIntReq      
  ,@MFCloseJobs      
  ,@FAAssetsDisposal      
  ,@FAAssetsLocations      
  ,@FARAssetRegister      
  ,@DashAP      
  ,@DashInventory      
  ,@DashWarehouse      
  ,@APSetupPOApprovers      
  ,@ApprovePurchaseOrders      
  ,@MFRWCTransfer      
  ,@InvCatMarginApproval      
  ,@MobSa      
  ,@MobSaOrdProcess      
  ,@MobSaGeoTrack      
  ,@MobPhDash      
  ,@MobPhDashBankBal      
  ,@MobPhDashSalesItemComp      
  ,@MobPhDashSalesCustCat      
  ,@MobPhDashOutCustCat      
  ,@MobPhDashCustVendBal      
  ,@MobPhDashInvQty      
  ,@MobPhDashSalesPerf      
  ,@MobPhPOApproval      
  ,@MobPhDashTimesheet      
  ,@BRProjClaimStatement      
  ,@ARRRTranCancelSalesDocs      
  ,@AREditDeliveryMethod      
  ,@InvIsRepackaging      
  ,@IRRepackaging      
  ,@ContractBilling      
  ,@ContractBillingType      
  ,@ProcessContractBilling      
  ,@ARRRecurringInvoice      
  ,@ARRContractExpiry      
  ,@ARRContractReconciliation      
 ,@APReOrders      
  ,@ARShipmentsAuditTrail      
  ,@WHDelMethod      
  ,@BankManager      
  ,@APPRTranInvoiceDocs      
  ,@MFRJobStatus      
  ,@ARSalesOrderEDI      
  ,@WHRecAdjust      
  ,@APReturn      
  ,@RetAprAdjust      
  ,@ARDeliveryAdviceAdjustApproval      
  ,@IRFinInvBin      
  ,@MFRProdVariance      
  ,@MFRManVariance      
  ,@APPriceChangeAllowed      
  ,@DashManage      
  ,@MergeAcct      
  ,@WSWorkshop      
  ,@WSBrowser      
  ,@WSInvoice      
  ,@WSInvoiceAdjAllowed      
  ,@WSPrintPreview      
  ,@WSProcessJob      
  ,@WSProcessJobRemove      
  ,@WSProcessJobAdjAllowed      
  ,@WSQuote      
  ,@WSQuoteRemove      
  ,@WSQuoteAdjAllowed      
  ,@WSCreditNote      
  ,@WSCNChangesAllowed      
  ,@WSCNAdjAllowed      
  ,@WSCreditRequest      
  ,@WSCreditRequestsRemove      
  ,@WSCRAdjAllowed      
  ,@WSAllowCreditNotesAndRequestItems      
  ,@WSReceipts      
  ,@WSReceiptsReversal      
  ,@WSServiceableItem      
  ,@WSServiceableItemType      
  ,@WSJobTemplate      
  ,@WSSetupTechnician      
  ,@WSSchedule      
  ,@WSInventoryIssue      
  ,@workshop0      
  ,@WSTran      
  ,@WSWorkInProgress      
  ,@WSJobProfitability      
  ,@WSResourceUsage      
  ,@WSJobCostVariance      
  ,@WSLists      
  ,@WSJobTemplateList      
  ,@WSProcDocuments      
  ,@WSViewMarginPercentage      
  ,@WSCreditBlockIJB      
  ,@WSCreditBlockPJB      
  ,@ARConfirmDeliveryAllowed      
  ,@GLContracts      
  ,@GLLRContracts      
  ,@GLLRContractsMonthly      
  ,@GLLRContractsIncomeStatement      
  ,@POSPayouts      
  ,@ARLayby      
  ,@ARChangeCustOnLB      
  ,@ARLaybyRemove      
  ,@ARLBAdjAllowed      
  ,@ARCreditBlockLB      
  ,@POSLayby      
  ,@POSConvertLayby      
  ,@APVenRecon      
  ,@APVenReconWorksheet      
  ,@APBuyers      
  ,@APVenReconTypes      
  ,@BRProjResources      
  ,@BRProjFinInfo      
  ,@BRProjChecklist      
  ,@BRProjCashFlow      
  ,@ARPODManagement      
  ,@InvEmployee      
  ,@ApproveInventoryRequistion      
  ,@APSetupIRApprovers      
  ,@POSAuthoriseReturn      
  --,@SwitchCompanies          
  ,@IBTBranchTransferOrder      
  ,@IBTBranchTransfer      
  ,@IBTBranchTransferReceipt      
  ,@IBTGoodsInTransitReport      
  ,@ARSoftBOMConfiguration      
  ,@POSFormsSetup      
  ,@BinTransfer      
  ,@IRFinInvPurchaseTargets      
  ,@APPRBudOnPRApproval      
  ,@APBudgetAnalysis     
  ,@APZRAPurchasesTrans  
  ,@GLZRAVatTrans
  ,@POSCreateCustomer      
  ,@POSSync      
  ,@MFBOMBlockDesc      
  ,@TrackUser      
  ,@MobPerformanceDashboard      
  ,@OverBudgetReq      
  ,@NonBudgetReq      
  ,@MaterialProfile      
  ,@POSReinstallStoredProcedures      
  ,@POSRePrintLastInvoice      
  ,@CRMTaskListing      
  ,@CRMOverdueTask      
  ,@CRMStatusGroups      
  ,@CRMProductivity      
  ,@DashCRM      
  ,@POSOpenCashDrawer      
  ,@ESDSetupRegistration      
  ,@WSChangeCenter      
  ,@MobileUserLoginHistory      
  ,@POSReprintInvoiceFromHistory      
  ,@POSOpenPreviousReceipts      
  ,@POSReversePreviousReceipts      
  ,@UserRegDetails      
  ,@IsMobileUser      
  ,@IsMonitorSalespersonsTracking      
  ,@IsMobileSalesOrder      
  ,@IsMobileSalesQuote      
  ,@IsMobileFreehandQuote      
  ,@IsMobileCRMActivities      
  ,@IsMobileCapturePOD      
  ,@IsMobileCustomers      
  ,@IsMobileExpenseClaims      
  ,@IsMobileDeliveryAdvice      
  ,@IsMobileEnuiriesByItem      
  ,@IsMobileEnuiriesByLocation      
  ,@IsMobileWarehouseTransfer      
  ,@IsMobileBinTransfer      
  ,@IsMobileGoodsReceiving      
  ,@IsMobileStockCount      
  ,@IsMobilePutAway      
  ,@IsMobileStockPick      
  ,@IsMobileJobWorkCentreTransfer      
  ,@IsMobileInventoryIssue      
  ,@VendorName      
  ,@IsMobileWSCreateQuotation      
  ,@IsMobileWSProcessJob      
  ,@IsMobileWSSchedule      
  ,@IsMobileWSInventoryIssue      
  ,@IsMobileProcuPurchaseRequisitions      
  ,@IsMobileProcuPurchaseOrder      
  ,@IsMobileWSServiceableItem        
  ,@WSServiceHistory      
  ,@MFReverseJobs      
  ,@MFReverseJobEditQty      
  ,@WRShipmentReport      
  ,@IsMobileSalesInvoice       
  ,@IsMobileCreditNoteApproval      
  ,@IsEditComponentCost      
  ,@IsMobileFinance      
  ,@IsDispensingCashOnCashGuard      
  ,@MFBOMItemCostsOnReport      
  ,@IsGLApprovalAdjusment    
  ,@POSDrawerGroups    
  ,@CRMMyActivities  
  ,@CRMMyActions   
  ,@CRMUnassignedActivities   
  ,@CRMNotifications   
  ,@CRMAllActivities   
  ,@CRMAllActions  
  ,@CRMReports  
  ,@CRMDashboard  
  ,@InvInventoryActive    
  ,@InvIncompatibleItems    
  ,@APRebateSetup    
  ,@APProcessRebate    
  ,@APRebateReport    
  ,@ARRRFinSPCOMM    
  ,@DefaultLanguage    
  ,@DefaultCompanyLocation    
  )      
END     
GO

/****** Object:  StoredProcedure [dbo].[SaveUserLocationTrackingPreference]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[SaveUserLocationTrackingPreference]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[SaveUserLocationTrackingPreference]
	@LocationTrackingPreferenceTableType LocationTrackingPreferenceTableType READONLY
AS
BEGIN
	IF EXISTS (SELECT TOP 1 1 FROM tblLocationTrackingPreference WHERE strUserName  = (SELECT TOP 1 strUserName FROM @LocationTrackingPreferenceTableType))
	BEGIN
		UPDATE
			  trkTbl
			SET
			  trkTbl.tmeStartDate = trkTblTmp.tmeStartDate,
			  trkTbl.tmeEndDate = trkTblTmp.tmeEndDate,
			  trkTbl.bitTrackLoc = trkTblTmp.bitTrackLoc
			FROM
			   tblLocationTrackingPreference trkTbl
			   JOIN
			   @LocationTrackingPreferenceTableType trkTblTmp ON trkTblTmp.strUserName = trkTbl.strUserName AND trkTblTmp.strDay = trkTbl.strDay
	END
	ELSE
	BEGIN
		INSERT INTO tblLocationTrackingPreference SELECT * FROM @LocationTrackingPreferenceTableType
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SaveUsersLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SaveUsersLocation]
@Latitude float,
@Longitude float,
@UserName nvarchar(40),
@Email nvarchar(100) = null,
@DocumentId nvarchar(100) = null
AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @g geography;
	DECLARE @point nvarchar(50)  =''
	SET @point = (select 'POINT('+CONVERT(varchar(10), @Longitude)+ '  ' +CONVERT(varchar(10), @Latitude)+')')
	SET @g = geography::STGeomFromText(@point, 4326);
	INSERT INTO tblTrackUsersLocation VALUES (@UserName,@g,GETUTCDATE(),@Email,@DocumentId)
END
GO
/****** Object:  StoredProcedure [dbo].[SearchCustomerForPricelistsSend]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [SearchCustomerForPricelistsSend] ***********/
CREATE PROCEDURE [dbo].[SearchCustomerForPricelistsSend]
(
	@IsCheckedInActive bit,
	@SearchText NVARCHAR(MAX),
	@SelectedPricelist NVARCHAR(25)
)
AS
BEGIN
	DECLARE @query AS NVARCHAR(MAX)
	DECLARE @IsParamExists AS BIT
	SET @IsParamExists = 0
	SET @query = 'SELECT 
					strCustName AS CustomerName, 
					strCustDesc AS Description, 
					strPricelist AS Pricelist
				FROM 
					tblCustomers ';

	IF @IsCheckedInActive = 0
	BEGIN
		SET @query += 'WHERE (bitInactive = 0) '
		SET @IsParamExists = 1
	END

	IF @SearchText <> '' AND LEN(@SearchText) > 0
	BEGIN
		IF @IsParamExists = 1
			SET @query += 'AND '
		ELSE
			SET @query += 'WHERE '
			
		SET @IsParamExists = 1
		
		SET @query += '(strCustName LIKE ''%'+@SearchText+'%'' OR strCustDesc LIKE ''%'+@SearchText+'%'') '
	END 

	IF @SelectedPricelist <> 'ALL' AND LEN(@SelectedPricelist) > 0
	BEGIN
		IF @IsParamExists = 1
			SET @query += 'AND '
		ELSE
			SET @query += 'WHERE '
		SET @query += '(strPricelist = '''+@SelectedPricelist+''') '
	END
	SET @query += 'ORDER BY strCustName'
	EXEC sp_Executesql @Query
END
GO
/****** Object:  StoredProcedure [dbo].[SelectJournalDate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SelectJournalDate]
(
	@SQSales nvarchar(20),
	@SQStart smalldatetime,
	@SQEnd smalldatetime
)
AS
BEGIN
	SELECT DATEPART(yyyy, dteJournalDate) AS 'Year',
		DATEPART(m, dteJournalDate) AS Month,
		ISNULL(SUM(decSubTotal), 0) AS TotalSales
	FROM tblInvoiceDoc
	WHERE (strSalesName = @SQSales)
		AND (dteJournalDate BETWEEN @SQStart AND @SQEnd)
		AND (bitHistoryTrans = 0)
	GROUP BY DATEPART(yyyy, dteJournalDate),
		DATEPART(m, dteJournalDate)
	ORDER BY DATEPART(yyyy, dteJournalDate),
		DATEPART(m, dteJournalDate);
END
GO
/****** Object:  StoredProcedure [dbo].[SelectJournalDateForCustCategories]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SelectJournalDateForCustCategories]

(

	@SQCat nvarchar(20),

	@SQStart smalldatetime,

	@SQEnd smalldatetime

)

AS

BEGIN

	SELECT DATEPART(yyyy, tblInvoiceDoc.dteJournalDate) as [Year], DATEPART(m,tblInvoiceDoc.dteJournalDate) AS [Month], ISNULL(SUM(tblInvoiceDocDT.decLineTotExc),0) AS TotalSales 
	FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = 
	tblInvoiceDocDT.strInvDocID WHERE (tblInvoiceDoc.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strCustCategory = @SQCat)) 
	AND (tblInvoiceDoc.dteJournalDate BETWEEN convert(date,@SQStart ) AND convert(date, @SQEnd)) 
	AND (tblInvoiceDoc.bitHistoryTrans = 0) GROUP BY DATEPART(yyyy, tblInvoiceDoc.dteJournalDate), DATEPART(m,tblInvoiceDoc.dteJournalDate) ORDER BY DATEPART(yyyy, tblInvoiceDoc.dteJournalDate), DATEPART(m,tblInvoiceDoc.dteJournalDate);
END
GO
/****** Object:  StoredProcedure [dbo].[SelectJournalDateForInvCategories]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [dbo].[SelectJournalDateForInvCategories] ***********/
CREATE PROCEDURE [dbo].[SelectJournalDateForInvCategories]
    (
      @SQCat NVARCHAR(20) ,
      @SQStart SMALLDATETIME ,
      @SQEnd SMALLDATETIME
    )
AS
    BEGIN
        SELECT  DATEPART(yyyy, tblInvoiceDoc.dteJournalDate) AS [Year] ,
                DATEPART(m, tblInvoiceDoc.dteJournalDate) AS [Month] ,
                ISNULL(SUM(tblInvoiceDocDT.decLineTotExc), 0) AS TotalSales
        FROM    tblInvoiceDoc
                INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
        WHERE   ( dbo.tblInvoiceDocDT.strPartNumber IN (
                  SELECT    strPartNumber
                  FROM      dbo.tblInv
                  WHERE     strCategory = @SQCat ) )
                AND ( tblInvoiceDoc.dteJournalDate BETWEEN CONVERT(DATE, @SQStart)
                                                   AND     CONVERT(DATE, @SQEnd) )
                AND ( tblInvoiceDoc.bitHistoryTrans = 0 )
        GROUP BY DATEPART(yyyy, tblInvoiceDoc.dteJournalDate) ,
                DATEPART(m, tblInvoiceDoc.dteJournalDate)
        ORDER BY DATEPART(yyyy, tblInvoiceDoc.dteJournalDate) ,
                DATEPART(m, tblInvoiceDoc.dteJournalDate)
	
    END

GO
/****** Object:  StoredProcedure [dbo].[SelectSalesPerson]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SelectSalesPerson] (@strSalesName NVARCHAR(50))
AS
SELECT strSalesName AS SalesName
	,strStreet1 AS Street1
	,strStreet2 AS Street2
	,strCity AS City
	,strProvince AS Province
	,strPostal AS Postal
	,strPhone AS Phone
	,strCellPhone AS CellPhone
	,strFax AS Fax
	,strEmail AS Email
	,decYTDSales AS YTDSales
	,bitInactive AS Inactive
	,dteUpdated AS Updated
	,dteSince AS Since
	,strNotes AS Notes
	,uID AS ID
	,strCountry AS Country
	,strCountryCode AS CountryCode
	,strFacebook AS Facebook
	,strLinkedIn AS LinkedIn
	,strSkype AS Skype
	,imgPicture AS Picture
	,bitGrossProfit AS IsGrossProfit
	,bitPaidInvoices As IsPaidInvoices
FROM tblSalesPersons
WHERE strSalesName = @strSalesName
GO
/****** Object:  StoredProcedure [dbo].[SelectSalesPersonFile]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SelectSalesPersonFile]
(
    @strSalesName nvarchar(50)
)
AS
    Select 
strSalesName as VendName, 
strFileName	as [FileName],
dteModified	as Modified, 
strType		as [Type],     
intSize		as Size,     
strUserName	as UserName,
bitEnc		as Enc,     
imgFile		as ImageFile
	 FROM tblSalesPersonF WHERE strSalesName = @strSalesName
GO
/****** Object:  StoredProcedure [dbo].[SelectSalesPersonTarget]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SelectSalesPersonTarget]
(
    @strSalesName nvarchar(50)
)
AS

    Select 
strSalesName as SalesName,
decPeriod1  as Period1,
decPeriod2	as Period2,
decPeriod3	as Period3,
decPeriod4	as Period4,
decPeriod5	as Period5,
decPeriod6	as Period6,
decPeriod7	as Period7,
decPeriod8	as Period8,
decPeriod9	as Period9,
decPeriod10	as Period10,
decPeriod11	as Period11,
decPeriod12	as Period12
	FROM tblSalesPersonsT WHERE strSalesName = @strSalesName
GO
/****** Object:  StoredProcedure [dbo].[SerailNumberForDAReport_SubReportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End Create/Drop [GetOrderDocDADTDataForDAReport] ***********/

/*********** Start Create/Drop [SerailNumberForDAReport_SubReportData] ***********/

CREATE PROCEDURE [dbo].[SerailNumberForDAReport_SubReportData] @DocumentNumber AS VARCHAR(50) = NULL
	,@LineNumber AS INT = NULL
AS
BEGIN
	SELECT tblOrderDocDADTSerial.*
		,ISNULL(tblInvSerialExt.bitDimensionExist, 0) AS bitDimensionExist
		,ISNULL(tblInvSerialExt.strDimension, '') AS strDimension
	FROM tblOrderDocDADTSerial
	INNER JOIN tblOrderDocDADT ON tblOrderDocDADTSerial.strOrdDADocID = tblOrderDocDADT.strOrdDADocID
		AND tblOrderDocDADTSerial.intLineNo = tblOrderDocDADT.intLineNo
	LEFT JOIN tblInvSerialExt ON tblOrderDocDADT.strPartNumber = tblInvSerialExt.strPartNumber
		AND tblOrderDocDADTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
	INNER JOIN tblInv ON tblOrderDocDADT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblOrderDocDADTSerial.strOrdDADocID = @DocumentNumber
		AND tblInvSerialTypes.bitPrintInv = 1
		AND tblOrderDocDADTSerial.intLineNo = @LineNumber
	ORDER BY tblOrderDocDADTSerial.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[SerailNumberForSIReport_SubReportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End Create/Drop [GetCustomerDeliveryMethodsWorkshop] ***********/

/************* Start [dbo].[SerailNumberForSIReport_SubReportData]  *************/

CREATE PROCEDURE [dbo].[SerailNumberForSIReport_SubReportData] @DocumentNumber AS VARCHAR(50) = NULL
	,@LineNumber AS INT = NULL
AS
BEGIN
	SELECT tblInvoiceDocDTSerial.*
		,ISNULL(tblInvSerialExt.bitDimensionExist, 0) AS bitDimensionExist
		,ISNULL(tblInvSerialExt.strDimension, '') AS strDimension
	FROM tblInvoiceDocDTSerial
	INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTSerial.strInvDocID = tblInvoiceDocDT.strInvDocID
		AND tblInvoiceDocDTSerial.intLineNo = tblInvoiceDocDT.intLineNo
	LEFT JOIN tblInvSerialExt ON tblInvoiceDocDT.strPartNumber = tblInvSerialExt.strPartNumber
		AND tblInvoiceDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
	INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblInvoiceDocDTSerial.strInvDocID = @DocumentNumber
		AND tblInvSerialTypes.bitPrintInv = 1
		AND tblInvoiceDocDTSerial.intLineNo = @LineNumber
	ORDER BY tblInvoiceDocDTSerial.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[SerialLotTrackingForInvoiceConvert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetOrderDocDADTInvoiceConvert] ***********/

/*********** Start [SerialLotTrackingForInvoiceConvert] ***********/
CREATE PROCEDURE [dbo].[SerialLotTrackingForInvoiceConvert]
(
    @SerialLotTrackingData AS SerialLotTrackingTableType READONLY
)
AS
BEGIN
	INSERT INTO tblSerialNumberTracking 
	(
	 strPartNumber
	,strSerialNumber
	,strUserName
	,dteUpdatedDate
	,intType
	,strDocID
	,intLineNo
	,decQty
	,strLocation
	,intStatus
	,bitExpiryDate
	,dteExpiryDate
	,lngBinID
	)  
	
	 SELECT 
	PartNumber,
	SerialNumber,
	UserName,
	UpdatedDate,
	[Type],
	DocID,
	[LineNo],
	Qty,
	Location,
	[Status],
	IsExpiryDate,
	ExpiryDate,
	BinID
	FROM @SerialLotTrackingData     
END
GO
/****** Object:  StoredProcedure [dbo].[SerialNumberAllow]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetSerialNumbersAlreadyExists] ***********/

/*********** Start [SerialNumberAllow] ***********/
CREATE PROCEDURE [dbo].[SerialNumberAllow]
(
	@IsPosted AS BIT,
	@DocNumber AS NVARCHAR(50),
	@LineNumber AS INT,
	@PartNumber AS NVARCHAR(50),
	@SerialNumber AS NVARCHAR(100),
	@Type AS TINYINT,
	@BinId As Bigint = 0
)
AS
BEGIN
	IF @IsPosted = 1
	BEGIN
		SELECT TOP 1 strDocID AS DocNumber
			,CAST(intStatus AS INT) AS [Status]
			,intType AS [Type]
			,ISNULL((
					SELECT COUNT(lngID) 
					FROM tblSerialNumberTracking
					WHERE strPartNumber = @PartNumber
						AND strSerialNumber LIKE @SerialNumber
						AND intType <> @Type
					), 0) AS SerialNumberCount
			,LEFT(ISNULL((
						SELECT strDocID 
						FROM tblInvSerialExt
						WHERE strPartNumber = @PartNumber
							AND strSerialNumber LIKE @SerialNumber
						), ''), 2) AS DocNumberExt
			,ISNULL((
					SELECT intStatus 
					FROM tblInvSerialExt
					WHERE strPartNumber = @PartNumber
						AND strSerialNumber LIKE @SerialNumber
					), '') AS StatusExt
		FROM tblSerialNumberTracking
		WHERE strPartNumber = @PartNumber
			AND strSerialNumber LIKE @SerialNumber
			AND (@BinId=0 OR lngBinId = @BinId)
			AND NOT (
				strDocID = @DocNumber
				AND intLineNo = @LineNumber
				)
		ORDER BY lngID
	END
	ELSE
	BEGIN
		SELECT TOP 1 strDocID AS DocNumber
			,CAST(intStatus AS INT) AS [Status]
			,intType AS [Type]
			,ISNULL((
					SELECT COUNT(lngID) 
					FROM tblSerialNumberTracking
					WHERE strPartNumber = @PartNumber
						AND strSerialNumber LIKE @SerialNumber
						AND intType <> @Type
					), 0) AS SerialNumberCount
			,LEFT(ISNULL((
						SELECT strDocID 
						FROM tblInvSerialExt
						WHERE strPartNumber = @PartNumber
							AND strSerialNumber LIKE @SerialNumber
						), ''), 2) AS DocNumberExt
			,ISNULL((
					SELECT intStatus AS StatusExt
					FROM tblInvSerialExt
					WHERE strPartNumber = @PartNumber
						AND strSerialNumber LIKE @SerialNumber
					), '') 
		FROM tblSerialNumberTracking
		WHERE strPartNumber = @PartNumber
			AND strSerialNumber LIKE @SerialNumber
			AND (@BinId=0 OR lngBinId = @BinId)
		ORDER BY lngID
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SerialNumberForSOReport_SubReportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*************End [dbo].[CROrderDeliveryCostData] *************/

/*************Start [dbo].[SerialNumberForSOReport_SubReportData] *************/

CREATE PROCEDURE [dbo].[SerialNumberForSOReport_SubReportData]
@DocumentNumber AS VARCHAR(50) = NULL,
@LineNumber AS INT = NULL
AS
BEGIN
	SELECT tblOrderDocDTSerial.*
	,ISNULL(tblInvSerialExt.bitDimensionExist, 0) AS bitDimensionExist
	,ISNULL(tblInvSerialExt.strDimension, '') AS strDimension
	FROM tblOrderDocDTSerial
	INNER JOIN tblOrderDocDT ON tblOrderDocDTSerial.strOrdDocID = tblOrderDocDT.strOrdDocID
		AND tblOrderDocDTSerial.intLineNo = tblOrderDocDT.intLineNo
	LEFT JOIN tblInvSerialExt ON tblOrderDocDT.strPartNumber = tblInvSerialExt.strPartNumber
		AND tblOrderDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
	INNER JOIN tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblOrderDocDTSerial.strOrdDocID = @DocumentNumber
		AND tblInvSerialTypes.bitPrintInv = 1
		AND tblOrderDocDTSerial.intLineNo = @LineNumber
	ORDER BY tblOrderDocDTSerial.intLineNo		
END
GO
/****** Object:  StoredProcedure [dbo].[SerialNumberTrackingBulkInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SerialNumberTrackingBulkInsert] (
	@SerialNumberTrackingData SerialNumberTrackingTableType READONLY
	,@SerialType TINYINT
	,@SerialLotControlType TINYINT
	,@CurrentTime DATETIME
	,@DocumentNumber VARCHAR(50)
	)
AS
BEGIN
	DECLARE @PartNumber AS VARCHAR(50)
	DECLARE @SerialNumber AS VARCHAR(100)
	DECLARE @SerialLotType AS TINYINT
	DECLARE @SerialLotQty AS MONEY
	DECLARE @DocID AS VARCHAR(50)
	DECLARE @Location AS VARCHAR(10)
	DECLARE @Status AS TINYINT
	DECLARE @IsExpiryDate AS BIT
	DECLARE @ExpiryDate AS SMALLDATETIME
	DECLARE @IsDimensionExist AS BIT
	DECLARE @Dimension AS NVARCHAR(max)
	DECLARE @LocationTemp AS VARCHAR(50)
	DECLARE @StatusTemp AS INT
	DECLARE @ItemCount AS INT
	DECLARE @TotalCount AS INT
	DECLARE @Result AS VARCHAR(50)
	DECLARE @Index AS INT
	DECLARE @BinId AS BIGINT

	SELECT @TotalCount = COUNT(1)
	FROM @SerialNumberTrackingData

	SELECT ROW_NUMBER() OVER (
			ORDER BY PartNumber
			) AS Row#
		,*
	INTO #tblTempSerialNumberTracking
	FROM @SerialNumberTrackingData

	SET @Index = 1

	WHILE (@Index <= @TotalCount)
	BEGIN
		SELECT @PartNumber = PartNumber
			,@SerialNumber = SerialNumber
			,@SerialLotType = SerialLotType
			,
			--@SerialLotQty = SerialLotQty,
			@SerialLotQty = CASE 
				WHEN (@SerialType = 4)
					THEN SerialLotQty
				ELSE (
						CASE Isnull(Qty, 0)
							WHEN 0
								THEN SerialLotQty
							ELSE qty
							END
						)
				END
			,@DocID = DocID
			,@Location = Location
			,@IsExpiryDate = IsExpiryDate
			,@ExpiryDate = ExpiryDate
			,@IsDimensionExist = IsDimensionExist
			,@Dimension = ''
			,@Status = [Status]
			,@BinId = BinID
		FROM #tblTempSerialNumberTracking
		WHERE Row# = @Index

		SELECT @StatusTemp = intStatus
			,@LocationTemp = strLocName
		FROM tblInvSerialExt
		WHERE strPartNumber = @PartNumber
			AND strSerialNumber = @SerialNumber

		IF (@@ROWCOUNT > 0)
		BEGIN
			IF (
					@Status = @StatusTemp
					OR @Location <> @LocationTemp
					)
			BEGIN
				SET @Index = @Index + 1

				CONTINUE
					--SET @Result = 'Subsequent Movement Error'
					--GOTO lblEnd					
			END
		END

		IF (@SerialLotType = @SerialLotControlType) --To check Lot Type 
		BEGIN
			SELECT @ItemCount = COUNT(strLotNumber)
			FROM tblInvLotExt
			WHERE strPartNumber = @PartNumber
				AND strLotNumber = @SerialNumber
				AND strLocName = @Location
				AND lngBinID = @BinId

			IF (@ItemCount > 0)
			BEGIN
				UPDATE tblInvLotExt
				SET decQty = decQty + @SerialLotQty
					,dteUpdatedDate = @CurrentTime
					,bitExpiryDate = @IsExpiryDate
					,dteExpiryDate = @ExpiryDate
				WHERE strPartNumber = @PartNumber
					AND strLotNumber = @SerialNumber
					AND strLocName = @Location
					AND lngBinID = @BinId
			END
			ELSE
			BEGIN
				INSERT INTO [dbo].[tblInvLotExt] (
					[strPartNumber]
					,[strLotNumber]
					,[strLocName]
					,[decQty]
					,[bitExpiryDate]
					,[dteExpiryDate]
					,[dteUpdatedDate]
					,[lngBinID]
					,[dteRowUpdated]
					)
				VALUES (
					@PartNumber
					,@SerialNumber
					,@Location
					,@SerialLotQty
					,@IsExpiryDate
					,@ExpiryDate
					,@CurrentTime
					,@BinId
					,GetDate()
					)
			END
		END
		ELSE
		BEGIN
			SELECT @ItemCount = COUNT(strSerialNumber)
			FROM tblInvSerialExt
			WHERE strPartNumber = @PartNumber
				AND strSerialNumber = @SerialNumber

			IF (@ItemCount > 0)
			BEGIN
				UPDATE tblInvSerialExt
				SET strLocName = @Location
					,decQty = @SerialLotQty
					,intStatus = @Status
					,strDocID = @DocumentNumber
					,dteUpdatedDate = @CurrentTime
					,lngBinId = @BinId
				WHERE strPartNumber = @PartNumber
					AND strSerialNumber = @SerialNumber
					--AND strLocName = @Location
			END
			ELSE
			BEGIN
				INSERT INTO [dbo].[tblInvSerialExt] (
					[strPartNumber]
					,[strSerialNumber]
					,[strLocName]
					,[decQty]
					,[intStatus]
					,[strDocID]
					,[dteUpdatedDate]
					,[bitDimensionExist]
					,[strDimension]
					,[lngBinID]
					,[dteRowUpdated]
					)
				VALUES (
					@PartNumber
					,@SerialNumber
					,@Location
					,@SerialLotQty
					,@Status
					,@DocID
					,@CurrentTime
					,@IsDimensionExist
					,@Dimension
					,@BinId
					,GetDate()
					)
			END
		END

		SET @Index = @Index + 1
	END

	INSERT INTO [dbo].[tblSerialNumberTracking] (
		[strPartNumber]
		,[strSerialNumber]
		,[strUserName]
		,[dteUpdatedDate]
		,[intType]
		,[strDocID]
		,[intLineNo]
		,[decQty]
		,[strLocation]
		,[intStatus]
		,[bitExpiryDate]
		,[dteExpiryDate]
		,[lngBinID]
		)
	SELECT PartNumber
		,SerialNumber
		,UserName
		,@CurrentTime
		,@SerialType
		,DocID
		,[LineNo]
		,Qty
		,Location
		,[Status]
		,IsExpiryDate
		,ExpiryDate
		,BinId
	FROM @SerialNumberTrackingData

	SET @Result = 'Success'

	lblEnd:

	SELECT @Result
END
GO

/****** Object:  StoredProcedure [dbo].[ServiceTypesInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------'
CREATE PROCEDURE [dbo].[ServiceTypesInsert]
@strServiceTypeCode NVARCHAR(30),
@strServiceTypeDesc NVARCHAR(200),
@bitInactive BIT
AS
BEGIN

INSERT INTO tblServiceTypes (strServiceTypeCode, strServiceTypeDesc, bitInactive) VALUES (@strServiceTypeCode, @strServiceTypeDesc, @bitInactive)

END
GO
/****** Object:  StoredProcedure [dbo].[ServiceTypesUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------
CREATE PROCEDURE [dbo].[ServiceTypesUpdate]
	@strServiceTypeCode nvarchar(30),
	@strServiceTypeDesc nvarchar(200),
	@bitInactive bit,
	@lngID bigint
AS
BEGIN
	
	UPDATE 
		tblServiceTypes 
	SET
		strServiceTypeCode = @strServiceTypeCode,
		strServiceTypeDesc = @strServiceTypeDesc, 
		bitInactive = @bitInactive 
	WHERE
		lngID = @lngID
END
GO
/****** Object:  StoredProcedure [dbo].[SetContainerAsPrinted]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------------'
CREATE PROCEDURE [dbo].[SetContainerAsPrinted]
(
	@DocumentIDs AS NVARCHAR(MAX)
)
AS
BEGIN

	DECLARE @TblContainer AS TABLE
	(
		ID INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
		DocumentID NVARCHAR(200)
	)
	DECLARE @Id AS INT, @ShpDocID AS NVARCHAR(100)
	
	INSERT INTO @TblContainer SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@DocumentIDs, '~')

	WHILE((SELECT COUNT(1) FROM @TblContainer) > 0)
	BEGIN		
		SELECT TOP(1) @Id = ID, @ShpDocID = DocumentID FROM @TblContainer		
		UPDATE tblContainers SET bitPrinted = 1 WHERE strCntDocID = @ShpDocID
		DELETE FROM @TblContainer WHERE ID = @Id
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SetDBMultiUser]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SetDBMultiUser]

@DatabaseName as nvarchar(max)

AS
BEGIN

 DECLARE @Query NVARCHAR(MAX) = 'ALTER DATABASE '+  @DatabaseName + ' SET MULTI_USER'
 EXEC sp_Executesql @Query 

END

GO
/****** Object:  StoredProcedure [dbo].[SetDBSingleUser]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SetDBSingleUser]
@DatabaseName as nvarchar(max)
AS
BEGIN
 DECLARE @Query NVARCHAR(MAX) = 'ALTER DATABASE '+  @DatabaseName + ' SET SINGLE_USER WITH ROLLBACK IMMEDIATE'
 EXEC sp_Executesql @Query 
END

GO
/****** Object:  StoredProcedure [dbo].[SetDefaultProfile]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[SetDefaultProfile]  
 @profileId int  
AS   
 BEGIN  
	  update tblProfileMenu set IsDefault = 0 WHERE  IsDefault = 1	  
	  update tblProfileMenu set IsDefault = 1 WHERE ProfileID = @profileId
	 END
GO
/****** Object:  StoredProcedure [dbo].[SetPickTicketAsPrinted]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [SetPickTicketAsPrinted] ***********/
CREATE PROCEDURE [dbo].[SetPickTicketAsPrinted]
(
	@DocumentIDs AS NVARCHAR(MAX)
)
AS
BEGIN

	DECLARE @TblContainer AS TABLE
	(
		ID INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
		DocumentID NVARCHAR(200)
	)
	DECLARE @Id AS INT, @PkTkDocID AS NVARCHAR(100)
	DECLARE @MaxVal AS INT, @Index AS INT = 1
	
	INSERT INTO @TblContainer SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@DocumentIDs, '~')
	SELECT @MaxVal = MAX(ID) FROM @TblContainer

	WHILE(@Index <= @MaxVal)
	BEGIN		
		SELECT @PkTkDocID = DocumentID FROM @TblContainer WHERE ID = @Index
		UPDATE tblPickTickets SET bitPrinted = 1 WHERE strPkTkDocID = @PkTkDocID
		SET @Index += 1
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SetShipmentAsPrinted]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------------------'
CREATE PROCEDURE [dbo].[SetShipmentAsPrinted]
(
	@DocumentIDs AS NVARCHAR(MAX)
)
AS
BEGIN

	DECLARE @TblShipment AS TABLE
	(
		ID INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
		DocumentID NVARCHAR(200)
	)
	DECLARE @Id AS INT, @ShpDocID AS NVARCHAR(100)
	
	INSERT INTO @TblShipment SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@DocumentIDs, '~')

	WHILE((SELECT COUNT(1) FROM @TblShipment) > 0)
	BEGIN		
		SELECT TOP(1) @Id = ID, @ShpDocID = DocumentID FROM @TblShipment		
		UPDATE tblShipments SET bitPrinted = 1 WHERE strShpDocID = @ShpDocID
		DELETE FROM @TblShipment WHERE ID = @Id
	END
END
GO
/****** Object:  StoredProcedure [dbo].[ShipmentAuditTrailReport]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*******************************End [UpdateProcessQuoteEmail] **************************************/

/*********** Start [ShipmentAuditTrailReport] ***********/

CREATE PROCEDURE [dbo].[ShipmentAuditTrailReport]
	@DocType AS NVARCHAR(50),
	@IsDisplayChecked AS BIT,
	@StartDate AS SMALLDATETIME,
	@EndDate AS SMALLDATETIME
AS
BEGIN
DECLARE @TmpTable TABLE
	(
		CustDesc NVARCHAR(MAX),
		WaybillNo NVARCHAR(MAX),
		Suburb NVARCHAR(MAX),	
		CourierServiceType NVARCHAR(MAX),
		Parcel Decimal,
		TotalMass Decimal
	)
	IF (@DocType = 'Invoice (Sent)')
	BEGIN
		IF @IsDisplayChecked= 1
		BEGIN
		INSERT INTO @TmpTable 
		SELECT tblCustomers.strCustDesc 
			,tblInvoiceDocParcels.strWaybillNo
			,tblInvoiceDocParcels.strReceiverAddr4 AS strSuburb
			,tblDeliveryMethods.strCourierServiceType
			,tblInvoiceDocParcels.decNoOfParcel AS decParcel
			,(
				SELECT SUM(IDP.decMass)
				FROM tblInvoiceDocParcels IDP
				WHERE IDP.strInvDocID = Main.strInvDocID
				GROUP BY IDP.strInvDocID
				) AS decTotalMass
			FROM tblInvoiceDoc Main
			INNER JOIN tblCustomers ON tblCustomers.strCustName = Main.strCustName
			INNER JOIN tblDeliveryMethods ON tblDeliveryMethods.strDelMethodCode = Main.strDelMethodCode
			INNER JOIN tblInvoiceDocParcels ON tblInvoiceDocParcels.strInvDocID = Main.strInvDocID
			WHERE (Main.bitShipmentsAuditTrail = 1)
		END
		ELSE
		BEGIN
		INSERT INTO @TmpTable 
			SELECT tblCustomers.strCustDesc
			,tblInvoiceDocParcels.strWaybillNo
			,tblInvoiceDocParcels.strReceiverAddr4 AS strSuburb
			,tblDeliveryMethods.strCourierServiceType
			,tblInvoiceDocParcels.decNoOfParcel AS decParcel
			,(
				SELECT SUM(IDP.decMass)
				FROM tblInvoiceDocParcels IDP
				WHERE IDP.strInvDocID = Main.strInvDocID
				GROUP BY IDP.strInvDocID
				) AS decTotalMass
			FROM tblInvoiceDoc Main
			INNER JOIN tblCustomers ON tblCustomers.strCustName = Main.strCustName
			INNER JOIN tblDeliveryMethods ON tblDeliveryMethods.strDelMethodCode = Main.strDelMethodCode
			INNER JOIN tblInvoiceDocParcels ON tblInvoiceDocParcels.strInvDocID = Main.strInvDocID
			WHERE (Main.bitShipmentsAuditTrail = 1)
				AND (
					Main.dteJournalDate BETWEEN @StartDate
						AND @EndDate
					)
			END	
	END
	ELSE IF (@DocType = 'Invoice (Not Sent)')
	BEGIN
		IF @IsDisplayChecked= 1
		BEGIN
		INSERT INTO @TmpTable 
		SELECT tblCustomers.strCustDesc
			,ISNULL(tblInvoiceDocParcels.strWaybillNo, '') AS strWaybillNo
			,CASE 
				WHEN ISNULL(tblInvoiceDocParcels.strReceiverAddr4, '') = ''
					THEN tblCustomers.strCity
				ELSE tblInvoiceDocParcels.strReceiverAddr4
				END AS strSuburb
			,tblDeliveryMethods.strCourierServiceType
			,ISNULL(tblInvoiceDocParcels.decNoOfParcel, 0) AS decParcel
			,ISNULL((
					SELECT SUM(IDP.decMass)
					FROM tblInvoiceDocParcels IDP
					WHERE IDP.strInvDocID = Main.strInvDocID
					GROUP BY IDP.strInvDocID
					), 0) AS decTotalMass
		FROM tblInvoiceDoc Main
		INNER JOIN tblCustomers ON tblCustomers.strCustName = Main.strCustName
		INNER JOIN tblDeliveryMethods ON tblDeliveryMethods.strDelMethodCode = Main.strDelMethodCode
		LEFT JOIN tblInvoiceDocParcels ON tblInvoiceDocParcels.strInvDocID = Main.strInvDocID
		WHERE (tblDeliveryMethods.bitSalesInvoice = 1)
			AND (Main.bitShipmentsAuditTrail = 0)
	END
		ELSE
		BEGIN
		INSERT INTO @TmpTable 
		SELECT tblCustomers.strCustDesc
			,ISNULL(tblInvoiceDocParcels.strWaybillNo, '') AS strWaybillNo
			,CASE 
				WHEN ISNULL(tblInvoiceDocParcels.strReceiverAddr4, '') = ''
					THEN tblCustomers.strCity
				ELSE tblInvoiceDocParcels.strReceiverAddr4
				END AS strSuburb
			,tblDeliveryMethods.strCourierServiceType
			,ISNULL(tblInvoiceDocParcels.decNoOfParcel, 0) AS decParcel
			,ISNULL((
					SELECT SUM(IDP.decMass)
					FROM tblInvoiceDocParcels IDP
					WHERE IDP.strInvDocID = Main.strInvDocID
					GROUP BY IDP.strInvDocID
					), 0) AS decTotalMass
		FROM tblInvoiceDoc Main
		INNER JOIN tblCustomers ON tblCustomers.strCustName = Main.strCustName
		INNER JOIN tblDeliveryMethods ON tblDeliveryMethods.strDelMethodCode = Main.strDelMethodCode
		LEFT JOIN tblInvoiceDocParcels ON tblInvoiceDocParcels.strInvDocID = Main.strInvDocID
		WHERE (tblDeliveryMethods.bitSalesInvoice = 1)
			AND (Main.bitShipmentsAuditTrail = 0)
			AND (
				Main.dteJournalDate BETWEEN @StartDate
					AND @EndDate
				)
		END	
	END		
	ELSE IF (@DocType = 'Order (Sent)')
	BEGIN
		IF @IsDisplayChecked= 1
		BEGIN
		INSERT INTO @TmpTable 
		SELECT tblCustomers.strCustDesc
		,tblOrderDocParcels.strWaybillNo
		,tblOrderDocParcels.strReceiverAddr4 AS strSuburb
		,tblDeliveryMethods.strCourierServiceType
		,tblOrderDocParcels.decNoOfParcel AS decParcel
		,(
			SELECT SUM(ODP.decMass)
			FROM tblOrderDocParcels ODP
			WHERE ODP.strOrdDocID = Main.strOrdDocID
			GROUP BY ODP.strOrdDocID
			) AS decTotalMass
		FROM tblOrderDoc Main
		INNER JOIN tblCustomers ON tblCustomers.strCustName = Main.strCustName
		INNER JOIN tblDeliveryMethods ON tblDeliveryMethods.strDelMethodCode = Main.strDelMethodCode
		INNER JOIN tblOrderDocParcels ON tblOrderDocParcels.strOrdDocID = Main.strOrdDocID
		WHERE (Main.bitShipmentsAuditTrail = 1)
	END
		ELSE
		BEGIN
		INSERT INTO @TmpTable 
		SELECT tblCustomers.strCustDesc
		,tblOrderDocParcels.strWaybillNo
		,tblOrderDocParcels.strReceiverAddr4 AS strSuburb
		,tblDeliveryMethods.strCourierServiceType
		,tblOrderDocParcels.decNoOfParcel AS decParcel
		,(
			SELECT SUM(ODP.decMass)
			FROM tblOrderDocParcels ODP
			WHERE ODP.strOrdDocID = Main.strOrdDocID
			GROUP BY ODP.strOrdDocID
			) AS decTotalMass
		FROM tblOrderDoc Main
		INNER JOIN tblCustomers ON tblCustomers.strCustName = Main.strCustName
		INNER JOIN tblDeliveryMethods ON tblDeliveryMethods.strDelMethodCode = Main.strDelMethodCode
		INNER JOIN tblOrderDocParcels ON tblOrderDocParcels.strOrdDocID = Main.strOrdDocID
		WHERE (Main.bitShipmentsAuditTrail = 1)
			AND (
				Main.dteJournalDate BETWEEN @StartDate
					AND @EndDate
				)
		END
	END
	ELSE IF (@DocType = 'Order (Not Sent)')
	BEGIN
		IF @IsDisplayChecked= 1
		BEGIN
		INSERT INTO @TmpTable 
		SELECT tblCustomers.strCustDesc
			,ISNULL(tblOrderDocParcels.strWaybillNo, '') AS strWaybillNo
			,CASE 
				WHEN ISNULL(tblOrderDocParcels.strReceiverAddr4, '') = ''
					THEN tblCustomers.strCity
				ELSE tblOrderDocParcels.strReceiverAddr4
				END AS strSuburb
			,tblDeliveryMethods.strCourierServiceType
			,ISNULL(tblOrderDocParcels.decNoOfParcel, 0) AS decParcel
			,ISNULL((
					SELECT SUM(ODP.decMass)
					FROM tblOrderDocParcels ODP
					WHERE ODP.strOrdDocID = Main.strOrdDocID
					GROUP BY ODP.strOrdDocID
				), 0) AS decTotalMass
		FROM tblOrderDoc Main
		INNER JOIN tblCustomers ON tblCustomers.strCustName = Main.strCustName
		INNER JOIN tblDeliveryMethods ON tblDeliveryMethods.strDelMethodCode = Main.strDelMethodCode
		LEFT JOIN tblOrderDocParcels ON tblOrderDocParcels.strOrdDocID = Main.strOrdDocID
		WHERE (tblDeliveryMethods.bitSalesOrder = 1)
			AND (Main.bitShipmentsAuditTrail = 0)
	END
		ELSE
		BEGIN
		INSERT INTO @TmpTable 
		SELECT tblCustomers.strCustDesc
			,ISNULL(tblOrderDocParcels.strWaybillNo, '') AS strWaybillNo
			,CASE 
				WHEN ISNULL(tblOrderDocParcels.strReceiverAddr4, '') = ''
					THEN tblCustomers.strCity
				ELSE tblOrderDocParcels.strReceiverAddr4
				END AS strSuburb
			,tblDeliveryMethods.strCourierServiceType
			,ISNULL(tblOrderDocParcels.decNoOfParcel, 0) AS decParcel
			,ISNULL((
					SELECT SUM(ODP.decMass)
					FROM tblOrderDocParcels ODP
					WHERE ODP.strOrdDocID = Main.strOrdDocID
					GROUP BY ODP.strOrdDocID
					), 0) AS decTotalMass
		FROM tblOrderDoc Main
		INNER JOIN tblCustomers ON tblCustomers.strCustName = Main.strCustName
		INNER JOIN tblDeliveryMethods ON tblDeliveryMethods.strDelMethodCode = Main.strDelMethodCode
		LEFT JOIN tblOrderDocParcels ON tblOrderDocParcels.strOrdDocID = Main.strOrdDocID
		WHERE (tblDeliveryMethods.bitSalesOrder = 1)
			AND (Main.bitShipmentsAuditTrail = 0)
			AND (
				Main.dteJournalDate BETWEEN @StartDate
					AND @EndDate
				)
			END
	END	
	select * from @TmpTable
END
GO
/****** Object:  StoredProcedure [dbo].[ShipmentProcessDetailLines]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [SalesSaveData] ***********/

/*********** Start [ShipmentProcessDetailLines] ***********/
CREATE PROCEDURE [dbo].[ShipmentProcessDetailLines]
(	
	@ShpDocID NVARCHAR(100),
	@InvDocID NVARCHAR(100),
	@LineNo INT,
	@PartNumber NVARCHAR(100),
	@PartDesc NVARCHAR(1000),
	@InvQty MONEY,
	@InvRemQty MONEY,
	@Unit NVARCHAR(30),
	@ShpQty MONEY,
	@PriceEaExc MONEY,
	@PriceEaInc MONEY,
	@TotalValueExc MONEY,
	@TotalValueInc MONEY,
	@Reference NVARCHAR(100),
	@Field1 NVARCHAR(200),
	@Field2 NVARCHAR(200),
	@Field3 NVARCHAR(200),
	@Field4 NVARCHAR(200),
	@Field5 NVARCHAR(200),
	@Field6 NVARCHAR(200),
	@Field7 NVARCHAR(200),
	@Field8 NVARCHAR(200),
	@Field9 NVARCHAR(200),
	@Field10 NVARCHAR(200),
	@Field11 NVARCHAR(200),
	@Field12 NVARCHAR(200),
	@Field13 DATETIME,
	@Field14 DATETIME,
	@InvField1 NVARCHAR(200),
	@InvField2 NVARCHAR(200),
	@InvField3 NVARCHAR(200),
	@InvField4 NVARCHAR(200),
	@InvField5 NVARCHAR(200),
	@InvField6 NVARCHAR(200),
	@LineField1 NVARCHAR(100),
	@LineField2 NVARCHAR(100),
	@LineField3 NVARCHAR(100),
	@LineField4 NVARCHAR(100),
	@LineField5 NVARCHAR(100),
	@LineField6 NVARCHAR(100),
	@LineField7 NVARCHAR(100),
	@LineField8 NVARCHAR(100),
	@LineField9 NVARCHAR(100),
	@LineField10 NVARCHAR(100),
	@LineField11 NVARCHAR(100),
	@LineField12 NVARCHAR(100),
	@CustName NVARCHAR(100),
	@SoldTo NVARCHAR(1000),
	@ShipTo NVARCHAR(100),
	@Notes NVARCHAR(MAX),
	@SeqNo INT,
	@DelRouteCode NVARCHAR(100) = null
)
AS 
BEGIN

	INSERT INTO tblShipmentsDT VALUES (@ShpDocID, @InvDocID, @LineNo, @PartNumber, @PartDesc, @InvQty, @InvRemQty, @Unit, @ShpQty, @PriceEaExc, @PriceEaInc, @TotalValueExc, @TotalValueInc, @Reference, @Field1, @Field2, @Field3, @Field4, @Field5, @Field6, @Field7, @Field8, @Field9, @Field10, @Field11, @Field12, @Field13, @Field14, @InvField1, @InvField2, @InvField3, @InvField4, @InvField5, @InvField6, @LineField1, @LineField2, @LineField3, @LineField4, @LineField5, @LineField6, @LineField7, @LineField8, @LineField9, @LineField10, @LineField11, @LineField12, @CustName, @SoldTo, @ShipTo, @Notes, @SeqNo, @DelRouteCode)

END

GO
/****** Object:  StoredProcedure [dbo].[ShipmentProcessHeaders]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------------------'
CREATE PROCEDURE [dbo].[ShipmentProcessHeaders]  
(  
 @IsAdjusting BIT,  
 @ShpDocID NVARCHAR(50),  
 @SystemDate AS SMALLDATETIME,  
 @JournalDate AS SMALLDATETIME,  
 @Required AS SMALLDATETIME,  
 @UserName AS NVARCHAR(20),  
 @CustName AS NVARCHAR(50),  
 @SoldTo AS NVARCHAR(500),  
 @ShipTo AS NVARCHAR(500),  
 @Reference AS NVARCHAR(50),  
 @Notes AS NVARCHAR(MAX),  
 @TrackingNo AS NVARCHAR(500),  
 @WayBillNo AS NVARCHAR(500),  
 @TotalValue AS DECIMAL(19,4),  
 @Width AS DECIMAL(19,4),  
 @Height AS DECIMAL(19,4),  
 @Deep AS DECIMAL(19,4),  
 @Cube AS DECIMAL(19,4),  
 @Weight AS DECIMAL(19,4),  
 @Type AS NVARCHAR(50), 
 @TransportType AS NVARCHAR(100), 
 @CustMultiple AS BIT,  
 @DelRouteCode AS NVARCHAR(50),  
 @DelVehicleCode AS NVARCHAR(50),  
 @DelDriverCode AS NVARCHAR(50),  
 @VolumetricWeight AS DECIMAL(19,4),  
 @Factor AS DECIMAL(19,4),  
 @UnitOfMeasure NVARCHAR(50)  
)  
AS   
BEGIN  
 IF(@IsAdjusting = 0)  
  INSERT INTO tblShipments VALUES (@ShpDocID,@SystemDate,@JournalDate,@Required,@UserName,@CustName,@SoldTo,@ShipTo,@Reference,0,@Notes,@TrackingNo,@WayBillNo,0,0,@TotalValue,@Width,@Height,@Deep,@Cube,@Weight,@Type,@CustMultiple,@DelRouteCode,@DelVehicleCode,@DelDriverCode,@VolumetricWeight,@Factor,@UnitOfMeasure,@TransportType)  
 ELSE  
  UPDATE tblShipments SET dteSystemDate = @SystemDate,dteJournalDate = @JournalDate,dteRequired = @Required,strUserName = @UserName,strCustName = @CustName,strSoldTo = @SoldTo,strShipTo = @ShipTo,strReference = @Reference,bitHistoryTrans = 0,
  strNotes = @Notes,strTrackingNo = @TrackingNo,strWayBillNo = @WayBillNo,bitPrinted = 0,bitEmailed = 0,decTotalValue = @TotalValue,decVolW = @Width,decVolH = @Height,decVolD = @Deep,
  decCuVol = @Cube,decWeight = @Weight,strType = @Type,bitCustMultiple = @CustMultiple,
  strDelRouteCode = @DelRouteCode,strDelVehicleCode = @DelVehicleCode,strDelDriverCode = @DelDriverCode, strTransportType = @TransportType WHERE strShpDocID = @ShpDocID  
END  
GO
/****** Object:  StoredProcedure [dbo].[ShipmentsInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ShipmentsInsert]
(
	@ShpDocID AS NVARCHAR(100),
	@SystemDate AS DATETIME,
	@SessionDate AS DATETIME,
	@UserName AS NVARCHAR(40),
	@CustName AS NVARCHAR(100),
	@InvDocID AS NVARCHAR(100),
	@LineNo AS INT,
	@PartNumber AS NVARCHAR(100),
	@PartDesc AS NVARCHAR(1000),
	@InvQty AS DECIMAL,
	@InvRemQty AS DECIMAL
)
AS
BEGIN
	INSERT INTO tblShipments VALUES (@ShpDocID, @SystemDate, @SessionDate, @SessionDate, @UserName, @CustName, 'History / Cleared Trans', 'History / Cleared Trans', 'History / Cleared Trans', 1, 'History / Cleared Trans', 'History / Cleared Trans', 'History / Cleared Trans', 1, 1, 0, 0, 0, 0, 0, 0, '', 0, NULL, NULL, NULL, 0, 0, N'', N'')

	INSERT INTO tblShipmentsDT VALUES (@ShpDocID, @InvDocID, @LineNo, @PartNumber, @PartDesc, @InvQty, @InvRemQty, 'Each', @InvRemQty, 0, 0, 0, 0, '', '', '', '', '', '', '', '', '', '', '', '', '', @SystemDate, @SystemDate, '','', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 1, '')
END
GO
/****** Object:  StoredProcedure [dbo].[ShippingEnquiryData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ShippingEnquiryData]
(
	@StartDate AS DATETIME,
	@EndDate AS DATETIME,
	@ID AS NVARCHAR(50),
	@IsShipment AS BIT,
	@IsCustomer AS BIT
)
AS
BEGIN

	IF (@IsShipment = 0)
	BEGIN

		IF (@IsCustomer = 0)
		BEGIN	

			SELECT strCntDocID As DocumentID, dteJournalDate AS JournalDate, dteRequired AS [Required], CASE WHEN bitCustMultiple = 1 THEN '<MULTIPLE>' ELSE strCustName END AS Customer, strReference AS Reference, strTrackingNo AS TrackingNo, strWayBillNo AS WayBillNo FROM tblContainers WHERE (bitHistoryTrans = 0) AND (strCntDocID IN (SELECT DISTINCT strCntDocID FROM tblContainersDT INNER JOIN tblShipments ON tblContainersDT.strShpDocID = tblShipments.strShpDocID WHERE tblShipments.strDelRouteCode = @ID)) AND (dteJournalDate BETWEEN @StartDate AND @EndDate) ORDER BY strCntDocID

		END

		ELSE
		BEGIN

			SELECT strCntDocID As DocumentID, dteJournalDate AS JournalDate, dteRequired AS [Required], CASE WHEN bitCustMultiple = 1 THEN '<MULTIPLE>' ELSE strCustName END AS Customer, strReference AS Reference, strTrackingNo AS TrackingNo, strWayBillNo AS WayBillNo FROM tblContainers WHERE (bitHistoryTrans = 0) AND (strCustName = @ID) AND (dteJournalDate BETWEEN @StartDate AND @EndDate) ORDER BY strCntDocID	

		END

	END
	ELSE
	BEGIN

		IF (@IsCustomer = 0)
		BEGIN	

			SELECT strShpDocID As DocumentID, dteJournalDate AS JournalDate, dteRequired AS [Required], CASE WHEN bitCustMultiple = 1 THEN '<MULTIPLE>' ELSE strCustName END AS Customer, strReference AS Reference, strTrackingNo AS TrackingNo, strWayBillNo AS WayBillNo FROM tblShipments WHERE (bitHistoryTrans = 0) AND (strDelRouteCode = @ID) AND (dteJournalDate BETWEEN @StartDate AND @EndDate) ORDER BY strShpDocID

		END

		ELSE
		BEGIN

			SELECT strShpDocID As DocumentID, dteJournalDate AS JournalDate, dteRequired AS [Required], CASE WHEN bitCustMultiple = 1 THEN '<MULTIPLE>' ELSE strCustName END AS Customer, strReference AS Reference, strTrackingNo AS TrackingNo, strWayBillNo AS WayBillNo FROM tblShipments WHERE (bitHistoryTrans = 0) AND (strCustName = @ID) AND (dteJournalDate BETWEEN @StartDate AND @EndDate) ORDER BY strShpDocID

		END

	END

END
GO
/****** Object:  StoredProcedure [dbo].[SMSMarketingCustBetween]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SMSMarketingCustBetween]
(
	@Start AS DATETIME,
	@End AS DATETIME,
	@IsBetween AS BIT,
	@HomeCurrency AS NVARCHAR(6)
)
AS
BEGIN
	IF @IsBetween = 1
	BEGIN
		SELECT strCustName+' '+strCustDesc AS Name, strCity AS City, strCellPhone AS CellNumber, strCurrency AS Currency, CASE WHEN strCurrency = @HomeCurrency THEN decYTDPurch ELSE decYTDPurchF END AS YTDPurchase 
		FROM tblCustomers 
		WHERE strCustName IN (SELECT strCustName FROM tblInvoiceDoc WHERE dteJournalDate BETWEEN @Start and @End) AND strCellPhone <> '' ORDER BY strCustName
	END
	ELSE
	BEGIN
		SELECT strCustName+' '+strCustDesc AS Name, strCity AS City, strCellPhone AS CellNumber, strCurrency AS Currency, CASE WHEN strCurrency = @HomeCurrency THEN decYTDPurch ELSE decYTDPurchF END AS YTDPurchase 
		FROM tblCustomers 
		WHERE strCustName NOT IN (SELECT strCustName FROM tblInvoiceDoc WHERE dteJournalDate BETWEEN @Start and @End) AND strCellPhone <> '' ORDER BY strCustName
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SMSMessageInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [OrderDocParcelInsert] ***********/

/*********** Start [SMSMessageInsert] ***********/
CREATE PROCEDURE [dbo].[SMSMessageInsert]
(	
	@CellNumber AS NVARCHAR(50),
	@Message AS NVARCHAR(2000),
	@SentBy AS NVARCHAR(50),	
	@Sent AS SMALLDATETIME,
	@ServerID AS VARCHAR(max),
	@IsProcessed AS BIT,
	@IsReply AS BIT
)
AS
BEGIN
	INSERT INTO tblSMSMessages (strCellNumber,strMessage,strSentBy,dteEntered,dteSent,strServerID,bitProcessed,bitReply) VALUES (@CellNumber,@Message,@SentBy,GetDate(),@Sent,@ServerID,@IsProcessed,@IsReply)
END
GO
/****** Object:  StoredProcedure [dbo].[SMSMessageSentUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SMSMessageSentUpdate]
(
	@ID AS BIGINT,
	@ServerId AS NVARCHAR(max)
)
AS 
BEGIN
	UPDATE tblSMSMessages SET dteSent = GetDate(), strServerID = @ServerId,bitProcessed = 1 WHERE lngId = @ID
END
GO
/****** Object:  StoredProcedure [dbo].[SMSMessageUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SMSMessageUpdate]
(
	@ID AS BIGINT,
	@CellNumber AS NVARCHAR(50),
	@Message AS NVARCHAR(2000),
	@SentBy AS NVARCHAR(50)
)
AS
BEGIN
	UPDATE tblSMSMessages SET strCellNumber = @CellNumber, strMessage = @Message, strSentBy = @SentBy, dteEntered = GetDate() WHERE lngId = @ID
END

GO
/****** Object:  StoredProcedure [dbo].[SMSNumberSearch]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SMSNumberSearch]
(
	@CellNumber AS NVARCHAR(100),
	@PLVend AS NVARCHAR(100),
	@PLCust AS NVARCHAR(100)
)
AS
BEGIN
	--DECLARE @QueryCommand NVARCHAR(MAX) = 'SELECT '''+  @PLVend + 's'' AS Module, strVendName AS Name, strCellPhone AS CellNumber FROM tblVendors WHERE strCellPhone = @CellNumber UNION SELECT ''--'+@PLCust+'s--'' AS Module, strCustName AS Name, strCellPhone AS CellNumber FROM tblCustomers WHERE strCellPhone = @CellNumber UNION SELECT ''--Users--'' AS Module, strName AS Name,strCellNumber AS CellNumber FROM tblUsers WHERE strCellNumber = @CellNumber'
	DECLARE @QueryCommand NVARCHAR(MAX) = 'SELECT '''+  @PLVend + 's'' AS Module, strVendName AS Name, strCellPhone AS CellNumber FROM tblVendors WHERE strCellPhone = @CellNumber UNION SELECT ''Customers'' AS Module, strCustName AS Name, strCellPhone AS CellNumber FROM tblCustomers WHERE strCellPhone = @CellNumber UNION SELECT ''Users'' AS Module, strName AS Name,strCellNumber AS CellNumber FROM tblUsers WHERE strCellNumber = @CellNumber'
	PRINT @QueryCommand
	DECLARE @ParameterDefinition AS NVARCHAR(200) = ' @CellNumber NVARCHAR(100)'
	EXECUTE sp_executesql @QueryCommand, @ParameterDefinition, @CellNumber
END

GO
/****** Object:  StoredProcedure [dbo].[SP_RptOrigInv]    Script Date: 26/06/2020 08:45:58 ******/
CREATE PROCEDURE [dbo].[SP_RptOrigInv](  
@SQStart AS DATE,  
@SQEnd AS DATE,  
@SQModules AS NVARCHAR(200),  
@blnoptDocDate AS BIT,  
@blnBPToolsMode AS BIT,  
@SQUserName AS NVARCHAR(200)  
)  
AS  
BEGIN  
DECLARE @iterator AS INT  
DECLARE @rowcount as int   
DECLARE @rowiterator as int = 1  
DECLARE @doc as NVARCHAR(200)  
DECLARE @maxRev AS INT  
CREATE TABLE #Temp  
(  
ROWID INT IDENTITY(1,1),  
strDocNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,   
)  
CREATE TABLE #Temp1  
(  
ROWID INT IDENTITY(1,1),  
strDocNumber NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
intRevisionNumber INT,   
)  
CREATE TABLE #Temp2  
(  
lngEntID INT,  
strInvDocID  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
lngJourID INT,  
dteSystemDate DATETIME,  
dteJournalDate DATETIME,  
strUserName  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
strCustName  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
decTotal Money,  
strCustDesc  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
intRevisionNumber INT,  
intModule INT  
)  
IF @blnBPToolsMode = 0   
IF @blnoptDocDate = 1   
BEGIN  
INSERT INTO #Temp SELECT DISTINCT strInvDocID FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE (Convert(Date,dteJournalDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM 
[fnSplitStringAsTable]((@SQModules),(','))) AND  strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) AND tblInvoiceDocREV.intRevisionNumber > 1--ORDER BY strInvDocID, lngEntID  
INSERT INTO #Temp1 SELECT DISTINCT strInvDocID, tblInvoiceDocREV.intRevisionNumber FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE (Convert(Date,dteJournalDate) BETWEEN @SQStart AND @SQEnd)
AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND  strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) AND tblInvoiceDocREV.intRevisionNumber > 1--ORDER BY strInvDocID, lngEntID  
INSERT INTO #Temp2  
SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strCustName, decTotal, strCustDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE (Convert(Date,dteJournalDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND  strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) AND 
tblInvoiceDocREV.intRevisionNumber > 1 ORDER BY strInvDocID, lngEntID  
END  
ELSE  
BEGIN  
INSERT INTO #Temp SELECT DISTINCT strInvDocID FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND  strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) AND tblInvoiceDocREV.intRevisionNumber > 1 --ORDER BY strInvDocID, lngEntID  
INSERT INTO #Temp1 SELECT DISTINCT strInvDocID, tblInvoiceDocREV.intRevisionNumber FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd) 
AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND  strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) AND tblInvoiceDocREV.intRevisionNumber > 1 --ORDER BY strInvDocID, lngEntID  
INSERT INTO #Temp2  
SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strCustName, decTotal, strCustDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND  strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) AND tblInvoiceDocREV.intRevisionNumber > 1 ORDER BY strInvDocID, lngEntID  
END   
ELSE  
BEGIN  
IF @blnoptDocDate = 1   
BEGIN  
INSERT INTO #Temp SELECT DISTINCT strInvDocID FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND  strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) AND tblInvoiceDocREV.intRevisionNumber > 1 --ORDER BY strInvDocID, lngEntID  
INSERT INTO #Temp1 SELECT DISTINCT strInvDocID, tblInvoiceDocREV.intRevisionNumber FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd) 
AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND  strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) AND tblInvoiceDocREV.intRevisionNumber > 1 --ORDER BY strInvDocID, lngEntID  
INSERT INTO #Temp2  
SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strCustName, decTotal, strCustDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE (Convert(Date,dteJournalDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1 ORDER BY strInvDocID, lngEntID  
END  
ELSE  
BEGIN  
INSERT INTO #Temp SELECT DISTINCT strInvDocID FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [
fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1 --ORDER BY strInvDocID, lngEntID  
INSERT INTO #Temp1 SELECT DISTINCT strInvDocID, tblInvoiceDocREV.intRevisionNumber FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd) 
AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1 --ORDER BY strInvDocID, lngEntID  
INSERT INTO #Temp2  
SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strCustName, decTotal, strCustDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1 ORDER BY strInvDocID, lngEntID  
END   
END  
SELECT @rowcount = COUNT(DISTINCT(strDocNumber))  from #Temp  
WHILE @rowiterator <= @rowcount  
BEGIN  
SELECT @doc = strDocNumber from #Temp WHERE ROWID = @rowiterator  
PRINT @doc  
SELECT @maxRev = MAX(intRevisionNumber) from #Temp1 WHERE strDocNumber = @doc  
PRINT @maxRev  
SET @iterator = @maxRev  
WHILE @iterator <= @maxRev AND @iterator>=0  
BEGIN  
IF NOT EXISTS (SELECT * from #Temp1 WHERE strDocNumber = @doc AND intRevisionNumber = @iterator)   
BEGIN  
INSERT INTO #Temp2 SELECT tblInvoiceDocREV.lngEntID, tblInvoiceDocREV.strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strCustName, decTotal,   
tblCustomers.strCustDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule   
FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName  
WHERE tblInvoiceDocREV.strInvDocID = @doc AND intRevisionNumber = @iterator  
END  
SET @iterator = @iterator - 1  
END  
SET @rowiterator = @rowiterator + 1  
END   
SELECT * FROM #Temp2  
DROP TABLE #Temp  
DROP TABLE #Temp1  
DROP TABLE #Temp2  
END
GO

/****** Object:  StoredProcedure [dbo].[SP_RptOrigInvDT]    Script Date: 26/06/2020 08:45:58 ******/

CREATE PROCEDURE [dbo].[SP_RptOrigInvDT] (  
@SQStart AS DATE,  
@SQEnd AS DATE,  
@SQModules AS NVARCHAR(200),  
@blnoptDocDate AS BIT  
)  
AS  
BEGIN  
DECLARE @iterator AS INT  
DECLARE @rowcount as int   
DECLARE @rowiterator as int = 1  
DECLARE @doc as NVARCHAR(200)  
DECLARE @maxRev AS INT  
CREATE TABLE #Temp  
(  
ROWID INT IDENTITY(1,1),  
strDocNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,   
)  
CREATE TABLE #Temp1  
(  
ROWID INT IDENTITY(1,1),  
strDocNumber NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
intRevisionNumber INT,   
)  
CREATE TABLE #Temp2  
(  
lngEntID INT,  
intLineNo  INT,  
strPartNumber  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
strLocation  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
strPartDesc  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
decQty  Money,  
Unit  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
Price  Money,  
Discount  Money,  
TaxCode  NVARCHAR(100)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
TaxAmount  Money,  
decLineTotInc  Money,  
intRevisionNumber  Int,  
uidTransactionID  uniqueidentifier,  
strInvDocID  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
)  
IF @blnoptDocDate = 1   
BEGIN  
INSERT INTO #TEMP SELECT DISTINCT tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN    
tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV   
WHERE (Convert(Date,dteJournalDate) BETWEEN @SQStart AND @SQEnd)) AND tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1  
--ORDER BY tblInvoiceDocREV.strInvDocID, tblInvoiceDocREV.lngEntID , intLineNo  
INSERT INTO #Temp1 SELECT DISTINCT tblInvoiceDocREV.strInvDocID,intRevisionNumber  FROM tblInvoiceDocREVDT INNER JOIN    
tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV   
WHERE (Convert(Date,dteJournalDate) BETWEEN @SQStart AND @SQEnd)) AND tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1  
--ORDER BY tblInvoiceDocREV.strInvDocID, tblInvoiceDocREV.lngEntID , intLineNo  
INSERT INTO #Temp2  
SELECT tblInvoiceDocREV.lngEntID, intLineNo, strPartNumber, strLocation, strPartDesc,decQty, strUnit as Unit ,decPriceEaInc as Price ,decLineDiscPerc as Discount ,strTaxCode as TaxCode,decLineTaxAmt as TaxAmount,decLineTotInc, intRevisionNumber, uidTransactionFieldID, tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE (Convert(Date,dteJournalDate) BETWEEN @SQStart AND @SQEnd)) AND tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1 ORDER BY tblInvoiceDocREV.strInvDocID, tblInvoiceDocREV.lngEntID , intLineNo  
END  
ELSE  
BEGIN  
INSERT INTO #TEMP SELECT DISTINCT tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN    
tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV   
WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd)) AND tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1  
--ORDER BY tblInvoiceDocREV.strInvDocID, tblInvoiceDocREV.lngEntID , intLineNo  
INSERT INTO #Temp1 SELECT DISTINCT tblInvoiceDocREV.strInvDocID,intRevisionNumber  FROM tblInvoiceDocREVDT INNER JOIN    
tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV   
WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd)) AND tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1  
--ORDER BY tblInvoiceDocREV.strInvDocID, tblInvoiceDocREV.lngEntID , intLineNo  
INSERT INTO #Temp2  
SELECT tblInvoiceDocREV.lngEntID, intLineNo, strPartNumber, strLocation, strPartDesc,decQty, strUnit as Unit ,decPriceEaInc as Price ,decLineDiscPerc as Discount ,strTaxCode as TaxCode,decLineTaxAmt as TaxAmount,decLineTotInc, intRevisionNumber, uidTransactionFieldID, tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd)) AND tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1 ORDER BY tblInvoiceDocREV.strInvDocID, tblInvoiceDocREV.lngEntID , intLineNo  
END  
SELECT @rowcount = COUNT(DISTINCT(strDocNumber))  from #Temp  
WHILE @rowiterator <= @rowcount  
BEGIN  
SELECT @doc = strDocNumber from #Temp WHERE ROWID = @rowiterator  
PRINT @doc  
SELECT @maxRev = MAX(intRevisionNumber) from #Temp1 WHERE strDocNumber = @doc  
PRINT @maxRev  
SET @iterator = @maxRev  
WHILE @iterator <= @maxRev AND @iterator>=0  
BEGIN  
IF NOT EXISTS (SELECT * from #Temp1 WHERE strDocNumber = @doc AND intRevisionNumber = @iterator)   
BEGIN  
INSERT INTO #Temp2 SELECT tblInvoiceDocREV.lngEntID, intLineNo, strPartNumber, strLocation, strPartDesc,decQty, strUnit as Unit ,decPriceEaInc as Price ,decLineDiscPerc as Discount ,  
strTaxCode as TaxCode,decLineTaxAmt as TaxAmount,decLineTotInc, intRevisionNumber, uidTransactionFieldID, tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN    
tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.strInvDocID = @doc AND intRevisionNumber = @iterator  
END  
SET @iterator = @iterator - 1  
END  
SET @rowiterator = @rowiterator + 1  
END   
SELECT * FROM #Temp2 order by strInvDocID, intRevisionNumber, lngEntID, intLineNo ASC  
DROP TABLE #Temp  
DROP TABLE #Temp1  
DROP TABLE #Temp2  
END  
GO



/****** Object:  StoredProcedure [dbo].[SP_RptOrigInvNew]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SP_RptOrigInvNew](  
@SQstrInvDocID AS NVARCHAR(200),  
@SQModules AS NVARCHAR(200),  
@blnBPToolsMode AS BIT,  
@SQUserName AS NVARCHAR(200)  
)  
AS  
BEGIN  
DECLARE @iterator AS INT  
DECLARE @rowcount as int   
DECLARE @rowiterator as int = 1  
DECLARE @doc as NVARCHAR(200)  
DECLARE @maxRev AS INT  
CREATE TABLE #Temp  
(  
ROWID INT IDENTITY(1,1),  
strDocNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,   
)  
CREATE TABLE #Temp1  
(  
ROWID INT IDENTITY(1,1),  
strDocNumber NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
intRevisionNumber INT,   
)  
CREATE TABLE #Temp2  
(  
lngEntID INT,  
strInvDocID  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
lngJourID INT,  
dteSystemDate DATETIME,  
dteJournalDate DATETIME,  
strUserName  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
strCustName  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
decTotal Money,  
strCustDesc  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
intRevisionNumber INT,  
intModule INT  
)  
IF @blnBPToolsMode = 0   
BEGIN  
INSERT INTO #Temp SELECT DISTINCT strInvDocID FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) AND strInvDocID = @SQstrInvDocID -- ORDER BY strInvDocID, lngEntID  
INSERT INTO #Temp1 SELECT DISTINCT strInvDocID, tblInvoiceDocREV.intRevisionNumber FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory 
FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) AND strInvDocID = @SQstrInvDocID -- ORDER BY strInvDocID, lngEntID  
INSERT INTO #Temp2  
SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strCustName, decTotal, strCustDesc, tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.
strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) AND strInvDocID = @SQstrInvDocID  ORDER BY strInvDocID, lngEntID  
END   
ELSE  
BEGIN  
INSERT INTO #Temp SELECT DISTINCT strInvDocID FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName -- ORDER BY strInvDocID, lngEntID  
INSERT INTO #Temp1 SELECT DISTINCT strInvDocID, tblInvoiceDocREV.intRevisionNumber FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName -- ORDER BY strInvDocID, lngEntID  
INSERT INTO #Temp2  
SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strCustName, decTotal, strCustDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName  ORDER BY strInvDocID, lngEntID  
END  
SELECT @rowcount = COUNT(DISTINCT(strDocNumber))  from #Temp  
WHILE @rowiterator <= @rowcount  
BEGIN  
SELECT @doc = strDocNumber from #Temp WHERE ROWID = @rowiterator  
PRINT @doc  
SELECT @maxRev = MAX(intRevisionNumber) from #Temp1 WHERE strDocNumber = @doc  
PRINT @maxRev  
SET @iterator = @maxRev  
WHILE @iterator <= @maxRev AND @iterator>=0  
BEGIN  
IF NOT EXISTS (SELECT * from #Temp1 WHERE strDocNumber = @doc AND intRevisionNumber = @iterator)   
BEGIN  
INSERT INTO #Temp2 SELECT tblInvoiceDocREV.lngEntID, tblInvoiceDocREV.strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strCustName, decTotal,   
tblCustomers.strCustDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule   
FROM tblInvoiceDocREV INNER JOIN tblCustomers ON tblInvoiceDocREV.strCustName = tblCustomers.strCustName  
WHERE tblInvoiceDocREV.strInvDocID = @doc AND intRevisionNumber = @iterator  
END  
SET @iterator = @iterator - 1  
END  
SET @rowiterator = @rowiterator + 1  
END   
SELECT * FROM #Temp2  
DROP TABLE #Temp  
DROP TABLE #Temp1  
DROP TABLE #Temp2  
END  
GO



/****** Object:  StoredProcedure [dbo].[SP_RptOrigInvNewDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SP_RptOrigInvNewDT](  
@SQModules AS NVARCHAR(200),  
@SQstrInvDocID AS NVARCHAR(200),  
@SQdocSubType AS NVARCHAR(200)  
)  
AS  
BEGIN  
DECLARE @iterator AS INT  
DECLARE @rowcount as int   
DECLARE @rowiterator as int = 1  
DECLARE @doc as NVARCHAR(200)  
DECLARE @maxRev AS INT  
CREATE TABLE #Temp  
(  
ROWID INT IDENTITY(1,1),  
strDocNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,   
)  
CREATE TABLE #Temp1  
(  
ROWID INT IDENTITY(1,1),  
strDocNumber NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
intRevisionNumber INT,   
)  
CREATE TABLE #Temp2  
(  
lngEntID INT,  
intLineNo  INT,  
strPartNumber  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
strLocation  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
strPartDesc  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
decQty  Money,  
Unit  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
Price  Money,  
Discount  Money,  
TaxCode  NVARCHAR(100)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
TaxAmount  Money,  
decLineTotInc  Money,  
intRevisionNumber  INT,  
dteRevisionDate DATETIME,  
uidTransactionID  UNIQUEIDENTIFIER,  
strInvDocID  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,  
)  
IF @SQdocSubType = 'Contract Billing'  
BEGIN  
INSERT INTO #TEMP SELECT DISTINCT tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(',')))) AND tblInvoiceDocREV.strInvDocID = @SQstrInvDocID --ORDER BY intRevisionNumber  
INSERT INTO #Temp1 SELECT DISTINCT tblInvoiceDocREV.strInvDocID,intRevisionNumber FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(',')))) AND tblInvoiceDocREV.strInvDocID = @SQstrInvDocID --ORDER BY intRevisionNumber  
INSERT INTO #Temp2  
SELECT tblInvoiceDocREV.lngEntID, intLineNo, strPartNumber, strLocation, strPartDesc,decQty, strUnit as Unit ,decPriceEaExc as Price ,decLineDiscPerc as Discount ,strTaxCode as TaxCode,decLineTaxAmt as TaxAmount,decLineTotExc as decLineTotInc, intRevisionNumber, dteRevisionDate, uidTransactionFieldID, tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(',')))) AND tblInvoiceDocREV.strInvDocID = @SQstrInvDocID ORDER BY intRevisionNumber  
END  
ELSE  
BEGIN  
INSERT INTO #TEMP SELECT DISTINCT tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(',')))) AND tblInvoiceDocREV.strInvDocID = @SQstrInvDocID --ORDER BY intRevisionNumber  
INSERT INTO #Temp1 SELECT DISTINCT tblInvoiceDocREV.strInvDocID,intRevisionNumber FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(',')))) AND tblInvoiceDocREV.strInvDocID = @SQstrInvDocID --ORDER BY intRevisionNumber  
INSERT INTO #Temp2  
SELECT tblInvoiceDocREV.lngEntID, intLineNo, strPartNumber, strLocation, strPartDesc,decQty, strUnit as Unit ,decPriceEaInc as Price ,decLineDiscPerc as Discount ,strTaxCode as TaxCode,decLineTaxAmt as TaxAmount,decLineTotInc, intRevisionNumber, dteRevisionDate, uidTransactionFieldID, tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(',')))) AND tblInvoiceDocREV.strInvDocID = @SQstrInvDocID ORDER BY intRevisionNumber  
END  
SELECT @rowcount = COUNT(DISTINCT(strDocNumber))  from #Temp  
WHILE @rowiterator <= @rowcount  
BEGIN  
SELECT @doc = strDocNumber from #Temp WHERE ROWID = @rowiterator  
PRINT @doc  
SELECT @maxRev = MAX(intRevisionNumber) from #Temp1 WHERE strDocNumber = @doc  
PRINT @maxRev  
SET @iterator = @maxRev  
WHILE @iterator <= @maxRev AND @iterator>=0  
BEGIN  
IF NOT EXISTS (SELECT * from #Temp1 WHERE strDocNumber = @doc AND intRevisionNumber = @iterator)   
BEGIN  
INSERT INTO #Temp2 SELECT tblInvoiceDocREV.lngEntID, intLineNo, strPartNumber, strLocation, strPartDesc,decQty, strUnit as Unit ,decPriceEaInc as Price ,decLineDiscPerc as Discount ,strTaxCode as TaxCode,decLineTaxAmt as TaxAmount,decLineTotInc, intRevisionNumber
isionNumber, dteRevisionDate, uidTransactionFieldID, tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN    
tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.strInvDocID = @doc AND intRevisionNumber = @iterator  
END  
SET @iterator = @iterator - 1  
END  
SET @rowiterator = @rowiterator + 1  
END   
SELECT * FROM #Temp2 ORDER BY strInvDocID, intRevisionNumber, lngEntID, intLineNo ASC  
DROP TABLE #Temp  
DROP TABLE #Temp1  
DROP TABLE #Temp2  
END
GO

/****** Object:  StoredProcedure [dbo].[SP_RptOrigInvNewP]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SP_RptOrigInvNewP]
(
	@SQstrInvDocID AS NVARCHAR(200),
	@SQModules AS NVARCHAR(200),
	@blnBPToolsMode AS BIT,
	@SQUserName AS NVARCHAR(200)
)
AS
BEGIN
DECLARE @iterator AS INT
DECLARE @rowcount as int 
DECLARE @rowiterator as int = 1
DECLARE @doc as NVARCHAR(200)
DECLARE @maxRev AS INT

CREATE TABLE #Temp
(
	ROWID INT IDENTITY(1,1),
    strDocNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS, 
)
CREATE TABLE #Temp1
(
	ROWID INT IDENTITY(1,1),
	strDocNumber NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
    intRevisionNumber INT, 
)
CREATE TABLE #Temp2
(
	lngEntID INT,
	strInvDocID  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	lngJourID INT,
	dteSystemDate DATETIME,
	dteJournalDate DATETIME,
	strUserName  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	strCustName  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	decTotal Money,
	strCustDesc  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	intRevisionNumber INT,
	intModule INT
)
	IF @blnBPToolsMode = 0 
	BEGIN
			INSERT INTO #Temp SELECT DISTINCT strInvDocID FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName WHERE strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = @SQUserName)) AND strInvDocID = @SQstrInvDocID  --ORDER BY strInvDocID, lngEntID

			INSERT INTO #Temp1 SELECT DISTINCT strInvDocID, tblInvoiceDocREV.intRevisionNumber FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName WHERE strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = @SQUserName)) AND strInvDocID = @SQstrInvDocID  --ORDER BY strInvDocID, lngEntID

			INSERT INTO #Temp2
			SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strVendName, decTotal, strVendDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName WHERE strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = @SQUserName)) AND strInvDocID = @SQstrInvDocID  ORDER BY strInvDocID, lngEntID
		
	END 
	ELSE
	BEGIN
			INSERT INTO #Temp SELECT DISTINCT strInvDocID FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName --ORDER BY strInvDocID, lngEntID

			INSERT INTO #Temp1 SELECT DISTINCT strInvDocID, tblInvoiceDocREV.intRevisionNumber FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName --ORDER BY strInvDocID, lngEntID

			INSERT INTO #Temp2
			SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strVendName, decTotal, strVendDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName ORDER BY strInvDocID, lngEntID
		
	END

SELECT @rowcount = COUNT(DISTINCT(strDocNumber))  from #Temp

WHILE @rowiterator <= @rowcount
BEGIN
	SELECT @doc = strDocNumber from #Temp WHERE ROWID = @rowiterator
	PRINT @doc
	SELECT @maxRev = MAX(intRevisionNumber) from #Temp1 WHERE strDocNumber = @doc
	PRINT @maxRev
	SET @iterator = @maxRev

	WHILE @iterator <= @maxRev AND @iterator>=0
	BEGIN
		IF NOT EXISTS (SELECT * from #Temp1 WHERE strDocNumber = @doc AND intRevisionNumber = @iterator) 
		BEGIN
			INSERT INTO #Temp2 SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strVendName, decTotal, strVendDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName
			 WHERE tblInvoiceDocREV.strInvDocID = @doc AND intRevisionNumber = @iterator
		END
		SET @iterator = @iterator - 1
	END

	SET @rowiterator = @rowiterator + 1
END 

SELECT * FROM #Temp2
DROP TABLE #Temp
DROP TABLE #Temp1
DROP TABLE #Temp2


END
GO
/****** Object:  StoredProcedure [dbo].[SP_RptOrigInvNewPDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SP_RptOrigInvNewPDT]
(
@SQModules AS NVARCHAR(200),
@SQstrInvDocID AS NVARCHAR(200)
)
AS
BEGIN
DECLARE @iterator AS INT
DECLARE @rowcount as int 
DECLARE @rowiterator as int = 1
DECLARE @doc as NVARCHAR(200)
DECLARE @maxRev AS INT

CREATE TABLE #Temp
(
	ROWID INT IDENTITY(1,1),
    strDocNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS, 
)
CREATE TABLE #Temp1
(
	ROWID INT IDENTITY(1,1),
	strDocNumber NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
    intRevisionNumber INT, 
)
CREATE TABLE #Temp2
(
	lngEntID INT,
	intLineNo  INT,
	strPartNumber  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	strLocation  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	strPartDesc  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	decQty  Money,
	Unit  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	Price  Money,
	Discount  Money,
	TaxCode  NVARCHAR(100)  COLLATE SQL_Latin1_General_CP1_CI_AS,
	TaxAmount  Money,
	decLineTotInc  Money,
	intRevisionNumber  INT,
	dteRevisionDate DATETIME,
	uidTransactionID  UNIQUEIDENTIFIER,
	strInvDocID  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,

)


INSERT INTO #TEMP SELECT DISTINCT tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(',')))) AND tblInvoiceDocREV.strInvDocID = @SQstrInvDocID --ORDER BY intRevisionNumber

INSERT INTO #Temp1 SELECT DISTINCT tblInvoiceDocREV.strInvDocID,intRevisionNumber FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(',')))) AND tblInvoiceDocREV.strInvDocID = @SQstrInvDocID --ORDER BY intRevisionNumber

INSERT INTO #Temp2 SELECT tblInvoiceDocREV.lngEntID, intLineNo, strPartNumber, strLocation, strPartDesc,decBuyQty, strBuyUnit as Unit ,decEaIncTax as Price ,decLineDiscPerc as Discount ,strTaxCode as TaxCode,decLineTaxAmt as TaxAmount,decTotIncTax,tblInvoiceDocREV.intRevisionNumber, dteRevisionDate, uidTransactionFieldID, tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(',')))) AND tblInvoiceDocREV.strInvDocID = @SQstrInvDocID ORDER BY intRevisionNumber

SELECT @rowcount = COUNT(DISTINCT(strDocNumber))  from #Temp
	
	
WHILE @rowiterator <= @rowcount
BEGIN
	SELECT @doc = strDocNumber from #Temp WHERE ROWID = @rowiterator
	PRINT @doc
	SELECT @maxRev = MAX(intRevisionNumber) from #Temp1 WHERE strDocNumber = @doc
	PRINT @maxRev
	SET @iterator = @maxRev

	WHILE @iterator <= @maxRev AND @iterator>=0
	BEGIN
		IF NOT EXISTS (SELECT * from #Temp1 WHERE strDocNumber = @doc AND intRevisionNumber = @iterator) 
		BEGIN
			INSERT INTO #Temp2 SELECT tblInvoiceDocREV.lngEntID, intLineNo, strPartNumber, strLocation, strPartDesc,decBuyQty, strBuyUnit as Unit ,decEaIncTax as Price ,decLineDiscPerc as Discount ,strTaxCode as TaxCode,decLineTaxAmt as TaxAmount,decTotIncTax,tblInvoiceDocREV.intRevisionNumber, dteRevisionDate, uidTransactionFieldID, tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID 
			WHERE tblInvoiceDocREV.strInvDocID = @doc AND intRevisionNumber = @iterator
		END
		SET @iterator = @iterator - 1
	END

	SET @rowiterator = @rowiterator + 1
END 

SELECT * FROM #Temp2 ORDER BY strInvDocID, intRevisionNumber, lngEntID, intLineNo ASC
DROP TABLE #Temp
DROP TABLE #Temp1
DROP TABLE #Temp2

END
GO
/****** Object:  StoredProcedure [dbo].[SP_RptOrigInvSetP]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SP_RptOrigInvSetP]
(
@SQStart AS DATE,
@SQEnd AS DATE,
@SQModules AS NVARCHAR(200),
@blnoptDocDate AS BIT,
@blnBPToolsMode AS BIT,
@SQUserName AS NVARCHAR(200)
)
AS
BEGIN
DECLARE @iterator AS INT
DECLARE @rowcount as int 
DECLARE @rowiterator as int = 1
DECLARE @doc as NVARCHAR(200)
DECLARE @maxRev AS INT
CREATE TABLE #Temp
(
ROWID INT IDENTITY(1,1),
strDocNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS, 
)
CREATE TABLE #Temp1
(
ROWID INT IDENTITY(1,1),
strDocNumber NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
intRevisionNumber INT, 
)
CREATE TABLE #Temp2
(
lngEntID INT,
strInvDocID  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
lngJourID INT,
dteSystemDate DATETIME,
dteJournalDate DATETIME,
strUserName  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
strVendName  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
decTotal Money,
strVendDesc  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
intRevisionNumber INT,
intModule INT
)
IF @blnBPToolsMode = 0 
BEGIN
IF @blnoptDocDate = 1 
BEGIN
INSERT INTO #Temp SELECT DISTINCT strInvDocID FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName WHERE (Convert(Date,dteJournalDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND  strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = @SQUserName)) AND tblInvoiceDocREV.intRevisionNumber > 1  --ORDER BY strInvDocID, lngEntID
INSERT INTO #Temp1 SELECT DISTINCT strInvDocID, tblInvoiceDocREV.intRevisionNumber FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName WHERE (Convert(Date,dteJournalDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND  strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = @SQUserName)) AND tblInvoiceDocREV.intRevisionNumber > 1 -- ORDER BY strInvDocID, lngEntID
INSERT INTO #Temp2
SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strVendName, decTotal, strVendDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName WHERE (Convert(Date,dteJournalDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND  strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = @SQUserName)) AND tblInvoiceDocREV.intRevisionNumber > 1 ORDER BY strInvDocID, lngEntID
END
ELSE
BEGIN
INSERT INTO #Temp SELECT DISTINCT strInvDocID FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND  strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = @SQUserName)) AND tblInvoiceDocREV.intRevisionNumber > 1 --ORDER BY strInvDocID, lngEntID
INSERT INTO #Temp1 SELECT DISTINCT strInvDocID, tblInvoiceDocREV.intRevisionNumber FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND  strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = @SQUserName)) AND tblInvoiceDocREV.intRevisionNumber > 1 --ORDER BY strInvDocID, lngEntID
INSERT INTO #Temp2
SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strVendName, decTotal, strVendDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND  strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = @SQUserName)) AND tblInvoiceDocREV.intRevisionNumber > 1 ORDER BY strInvDocID, lngEntID
END
END
ELSE
BEGIN
IF @blnoptDocDate = 1 
BEGIN
INSERT INTO #Temp SELECT DISTINCT strInvDocID FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName WHERE (Convert(Date,dteJournalDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1 -- ORDER BY strInvDocID, lngEntID
INSERT INTO #Temp1 SELECT DISTINCT strInvDocID, tblInvoiceDocREV.intRevisionNumber FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName WHERE (Convert(Date,dteJournalDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1 -- ORDER BY strInvDocID, lngEntID
INSERT INTO #Temp2
SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strVendName, decTotal, strVendDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName WHERE (Convert(Date,dteJournalDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1 ORDER BY strInvDocID, lngEntID
END
ELSE
BEGIN
INSERT INTO #Temp SELECT DISTINCT strInvDocID FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1 -- ORDER BY strInvDocID, lngEntID
INSERT INTO #Temp1 SELECT DISTINCT strInvDocID, tblInvoiceDocREV.intRevisionNumber FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1 -- ORDER BY strInvDocID, lngEntID
INSERT INTO #Temp2
SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strVendName, decTotal, strVendDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd) AND intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1 ORDER BY strInvDocID, lngEntID
END
END
SELECT @rowcount = COUNT(DISTINCT(strDocNumber))  from #Temp
WHILE @rowiterator <= @rowcount
BEGIN
SELECT @doc = strDocNumber from #Temp WHERE ROWID = @rowiterator
PRINT @doc
SELECT @maxRev = MAX(intRevisionNumber) from #Temp1 WHERE strDocNumber = @doc
PRINT @maxRev
SET @iterator = @maxRev
WHILE @iterator <= @maxRev AND @iterator>=0
BEGIN
IF NOT EXISTS (SELECT * from #Temp1 WHERE strDocNumber = @doc AND intRevisionNumber = @iterator) 
BEGIN
INSERT INTO #Temp2 SELECT tblInvoiceDocREV.lngEntID, tblInvoiceDocREV.strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strVendName, decTotal, 
tblVendors.strVendDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule 
FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName
WHERE tblInvoiceDocREV.strInvDocID = @doc AND intRevisionNumber = @iterator
END
SET @iterator = @iterator - 1
END
SET @rowiterator = @rowiterator + 1
END 
SELECT * FROM #Temp2
DROP TABLE #Temp
DROP TABLE #Temp1
DROP TABLE #Temp2
END
GO


/****** Object:  StoredProcedure [dbo].[SP_RptOrigInvSetPDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SP_RptOrigInvSetPDT] 
(
	@SQStart AS DATE,
	@SQEnd AS DATE,
	@SQModules AS NVARCHAR(200),
	@blnoptDocDate AS BIT
)
AS
BEGIN
DECLARE @iterator AS INT
DECLARE @rowcount as int 
DECLARE @rowiterator as int = 1
DECLARE @doc as NVARCHAR(200)
DECLARE @maxRev AS INT

CREATE TABLE #Temp
(
	ROWID INT IDENTITY(1,1),
    strDocNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS, 
)
CREATE TABLE #Temp1
(
	ROWID INT IDENTITY(1,1),
	strDocNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
    intRevisionNumber INT, 
)
CREATE TABLE #Temp2
(
	ROWID INT IDENTITY(1,1),
	lngEntID INT,
	intLineNo  INT,
	strPartNumber  NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
	strLocation  NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
	strPartDesc  NVARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS,
	decBuyQty  Money,
	Unit  NVARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS,
	Price Money,
	Discount  Money,
	TaxCode  NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS,
	TaxAmount Money,
	decLineTotInc Money,
	intRevisionNumber  Int,
	uidTransactionID  uniqueidentifier,
	strInvDocID  NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,

)

IF @blnoptDocDate = 1 
	BEGIN
		INSERT INTO #TEMP SELECT DISTINCT tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE (Convert(Date,dteJournalDate) BETWEEN @SQStart AND @SQEnd)) AND tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1 --ORDER BY tblInvoiceDocREV.strInvDocID, tblInvoiceDocREV.lngEntID , intLineNo

		INSERT INTO #Temp1 SELECT DISTINCT tblInvoiceDocREV.strInvDocID, tblInvoiceDocREV.intRevisionNumber FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE (Convert(Date,dteJournalDate) BETWEEN @SQStart AND @SQEnd)) AND tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1 --ORDER BY tblInvoiceDocREV.strInvDocID, tblInvoiceDocREV.lngEntID , intLineNo

		INSERT INTO #Temp2
		SELECT tblInvoiceDocREV.lngEntID, intLineNo, strPartNumber, strLocation, strPartDesc,decBuyQty, strBuyUnit as Unit ,decEaIncTax as Price ,decLineDiscPerc as Discount ,strTaxCode as TaxCode,decLineTaxAmt as TaxAmount,decTotIncTax,tblInvoiceDocREV.intRevisionNumber, uidTransactionFieldID, tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE (Convert(Date,dteJournalDate) BETWEEN @SQStart AND @SQEnd)) AND tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1 --ORDER BY tblInvoiceDocREV.strInvDocID, tblInvoiceDocREV.lngEntID , intLineNo
	END
	ELSE
	BEGIN
		INSERT INTO #TEMP SELECT DISTINCT tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd)) AND tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1 --ORDER BY tblInvoiceDocREV.strInvDocID, tblInvoiceDocREV.lngEntID, intLineNo

		INSERT INTO #Temp1 SELECT DISTINCT tblInvoiceDocREV.strInvDocID, tblInvoiceDocREV.intRevisionNumber FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd)) AND tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1 --ORDER BY tblInvoiceDocREV.strInvDocID, tblInvoiceDocREV.lngEntID, intLineNo

		INSERT INTO #Temp2
		SELECT tblInvoiceDocREV.lngEntID, intLineNo, strPartNumber, strLocation, strPartDesc,decBuyQty, strBuyUnit as Unit ,decEaIncTax as Price ,decLineDiscPerc as Discount ,strTaxCode as TaxCode,decLineTaxAmt as TaxAmount,decTotIncTax,tblInvoiceDocREV.intRevisionNumber, uidTransactionFieldID, tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE (Convert(Date,dteSystemDate) BETWEEN @SQStart AND @SQEnd)) AND tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@SQModules),(','))) AND tblInvoiceDocREV.intRevisionNumber > 1 --ORDER BY tblInvoiceDocREV.strInvDocID, tblInvoiceDocREV.lngEntID, intLineNo
		
	END
	
	SELECT @rowcount = COUNT(DISTINCT(strDocNumber))  from #Temp
	
	
INSERT INTO #Temp2
SELECT  tblInvoiceDocREV.lngEntID
				,intLineNo
				,strPartNumber
				,strLocation
				,strPartDesc
				,decBuyQty
				,strBuyUnit AS Unit
				,decEaIncTax AS Price
				,decLineDiscPerc AS Discount
				,strTaxCode AS TaxCode
				,decLineTaxAmt AS TaxAmount
				,decTotIncTax
				,tblInvoiceDocREV.intRevisionNumber
				,uidTransactionFieldID
				,tblInvoiceDocREV.strInvDocID
				FROM tblInvoiceDocREVDT
INNER JOIN tblInvoiceDocREV ON tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID
--JOIN #Temp1 ON #Temp1.strDocNumber = tblInvoiceDocREV.strInvDocID AND #Temp1.intRevisionNumber = tblInvoiceDocREV.intRevisionNumber
WHERE NOT EXISTS (
    SELECT *
    FROM #Temp1
    WHERE #Temp1.strDocNumber = tblInvoiceDocREV.strInvDocID
        AND #Temp1.intRevisionNumber = tblInvoiceDocREV.intRevisionNumber
)
AND tblInvoiceDocREV.intRevisionNumber <= (SELECT MAX(intRevisionNumber) FROM #Temp1 WHERE strDocNumber = tblInvoiceDocREV.strInvDocID)

SELECT * FROM #Temp2 ORDER BY strInvDocID, intRevisionNumber, lngEntID, intLineNo ASC

DROP TABLE #Temp
DROP TABLE #Temp1
DROP TABLE #Temp2
END
GO



/****** Object:  StoredProcedure [dbo].[spAddCustomerTradingTimes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[spAddCustomerTradingTimes]
			-- Add the parameters for the stored procedure here
			@SQstrCustName nvarchar(50),
			@SQstrDay nvarchar(50),
			@SQdteFromTime time(7),
			@SQdteToTime time(7),
			@SQstrEnqType nvarchar(50),
			@SQbitEnabled bit
		AS
		BEGIN
			-- SET NOCOUNT ON added to prevent extra result sets from
			-- interfering with SELECT statements.
			SET NOCOUNT ON;

			-- Insert statements for procedure here
			INSERT INTO 
				tblCustomerTradingTimes
			VALUES
				(
					@SQstrCustName,
					@SQstrDay,
					@SQdteFromTime,
					@SQdteToTime,
					@SQstrEnqType,
					@SQbitEnabled
				)
		END
		
GO
/****** Object:  StoredProcedure [dbo].[spbiAdjustments]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************** End [GetBIForDashboard] ****************/


/************************** Start [spbiAdjustments] ****************/


CREATE Procedure [dbo].[spbiAdjustments]
(
@strDateFilter VARCHAR(100)=NULL,
@dateFromDate DateTime=NULL,
@dateToDate DateTime=NULL,
@strDateFilterCriteria VARCHAR(100)=NULL
)
As
begin
SELECT tblInvAdjDocDT.strPartNumber AS [Item Code]
	,tblInv.strDesc AS [Item Description (Masterfile)]
	,tblInvAdjDoc.strAdjDocID AS [Document #]
	,tblInvAdjDocDT.decQty AS [Adjustment Qty]
	,tblInvAdjDocDT.decAmount AS [Line Amount]
	,tblInvAdjDoc.decTotal AS [Adjustment Amount]
	,tblInvAdjDoc.strLocName AS [Location]
	,tblInvAdjDoc.dteSystemDate AS [System Date]
	,tblInvAdjDoc.dteJournalDate AS [Transaction Date]
	,tblInvAdjDoc.strComment AS [Adjustment Comment]
	,DATENAME(year, tblInvAdjDoc.dteJournalDate) AS Year
	,DATENAME(quarter, tblInvAdjDoc.dteJournalDate) AS Quarter
	,RIGHT('00' + CAST(MONTH(tblInvAdjDoc.dteJournalDate) AS varchar(2)), 2) + ' - ' + DATENAME(month, tblInvAdjDoc.dteJournalDate) AS Month
	,DATENAME(week, tblInvAdjDoc.dteJournalDate) AS Week
	,tblInv.strCategory AS [Item Category]
	,tblInv.strSubCategory as [Item SubCategory]  
	,tblInv.strSubCategoryGroup as [Item SubCategory Group]
	,tblInvCat.strDesc as [Item Category Description]  
	,tblInvSubCat.strDesc as [Item SubCategory Description]
	,tblInvGroupSubCat.strDesc as [Item SubCategory Group Description] 
FROM tblInvAdjDoc
INNER JOIN tblInvAdjDocDT ON tblInvAdjDoc.strAdjDocID = tblInvAdjDocDT.strAdjDocID
INNER JOIN tblInv ON tblInvAdjDocDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory And tblInvSubCat.strParentCategory = tblInv.strCategory
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup And tblInvGroupSubCat.strParentSubCategory=tblInv.strSubCategory And tblInvGroupSubCat.strParentCategory = tblInv.strCategory
where 
(
case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL 
	 when @strDateFilter='Transaction Date' and @strDateFilterCriteria !='All' then  cast(tblInvAdjDoc.dteJournalDate as date) 
	 when @strDateFilter='System Date' and @strDateFilterCriteria !='All' then cast(tblInvAdjDoc.dteSystemDate as date) 
     else @dateFromDate end 
	 between cast(@dateFromDate as date) and  cast( @dateToDate as date)
)
end
GO
/****** Object:  StoredProcedure [dbo].[spbiFixedAssets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************** End [spbiAdjustments] ****************/

/************************** Start [spbiFixedAssets] ****************/


CREATE Procedure [dbo].[spbiFixedAssets]
(
@strDateFilter VARCHAR(100)=NULL,
@dateFromDate DateTime=NULL,
@dateToDate DateTime=NULL,
@strDateFilterCriteria VARCHAR(100)=NULL
)
AS
Begin

BEGIN	
	If (EXISTS(Select * from sys.tables where name='Temp_FixedAssets'))
	BEGIN
		DROP table Temp_FixedAssets
	END	
END

Select * into Temp_FixedAssets
from (
	SELECT tblAssets.strAssetCode AS [Code]
	,tblAssets.strAssetDesc AS [Description]
	,tblAssets.strAssetTypeCode AS [Type Code]
	,tblAssetTypes.strDescription AS [Type Description]
	,tblAssets.uidCenterID AS [CenterID]
	,tblAssets.strProjNumber AS [Project Number]
	,tblAssets.decQuantity AS [Quantity]
	,tblAssets.dteDepreciateFrom AS [Depreciate From]
	,tblAssets.strSerialNumber AS [Serial Number]
	,tblAssets.strTagNumber AS [Tag Number]
	,ISNULL(tblAssets.dteDisposalDate, '1990/01/01') AS [Disposal Date]
	,ISNULL(tblAssets.strDisposalCode, '') AS [Disposal Code]
	,tblAssets.decDisposalAmount AS [Disposal Amount]
	,tblAssets.strVendNumber AS [Vendor Number]
	,tblVendors.strVendDesc AS [Vendor Description]
	,tblAssets.dtePurchaseDate AS [Purchase Date]
	,tblAssets.strFinanceMethod AS [Finance Method]
	,tblAssets.decIntRate AS [Interest Rate]
	,tblAssets.intPeriod AS [Period]
	,tblAssets.strAccNumber AS [Account Number]
	,tblAssets.strCapexOrder AS [Capex Order]
	,tblAssets.decPurchasePrice AS [Purchase Price]
	,tblAssets.decResidualValue AS [Residual Value]
	,tblAssets.decInsuredValue AS [Insured Value]
	,tblAssets.decSalvageValue AS [Salvage Value]
	,tblAssets.decReplacementValue AS [Replacement Value]
	,tblAssets.decDepreciableValue AS [Depreciable Value]
	,ISNULL(tblAssets.dteLastDeprecationDate, '1990/01/01') AS [Last Depreciation Date]
	,ISNULL(tblAssets.decRemainingValue, 0) AS [Remaining Value]
	,tblAssets.strNotes AS [Notes]
	,tblAssets.bitInactive AS [Inactive]
	,tblAssets.bitIsSubAsset AS [Is Sub Asset]
	,tblAssets.strField1 
	,tblAssets.strField2 
	,tblAssets.strField3 
	,tblAssets.strField4 
	,tblAssets.strField5 
	,tblAssets.strField6 
	,tblAssets.strField7 
	,tblAssets.strField8 
	,tblAssets.strField9 
	,tblAssets.strField10
	,tblAssets.strField11
	,tblAssets.strField12
FROM tblAssets
INNER JOIN tblAssetTypes ON tblAssets.strAssetTypeCode = tblAssetTypes.strCode
INNER JOIN tblVendors ON tblAssets.strVendNumber = tblVendors.strVendName
Where
(
case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL 
     when @strDateFilter='Purchase Date' and @strDateFilterCriteria !='All' then  cast(tblAssets.dtePurchaseDate as date) 
	 when @strDateFilter='Last Depreciation Date' and @strDateFilterCriteria !='All' then cast(ISNULL(tblAssets.dteLastDeprecationDate, '1990/01/01') as date)
	 when @strDateFilter='Disposal Date' and @strDateFilterCriteria !='All' then cast(ISNULL(tblAssets.dteDisposalDate, '1990/01/01') as date) 
	  
     else @dateFromDate end 
		between
		 cast(@dateFromDate as date) and 
		 cast( @dateToDate as date)
)) as Test



			
Declare @field1 as nvarchar(Max)= (select top(1) strFA1 from tblOptFields)
Declare @field2 as nvarchar(Max)= (select top(1) strFA2 from tblOptFields)
Declare @field3 as nvarchar(Max)= (select top(1) strFA3 from tblOptFields)
Declare @field4 as nvarchar(Max)= (select top(1) strFA4 from tblOptFields)
Declare @field5 as nvarchar(Max)= (select top(1) strFA5 from tblOptFields)
Declare @field6 as nvarchar(Max)= (select top(1) strFA6 from tblOptFields)
Declare @field7 as nvarchar(Max)= (select top(1) strFA7 from tblOptFields)
Declare @field8 as nvarchar(Max)= (select top(1) strFA8 from tblOptFields)
Declare @field9 as nvarchar(Max)= (select top(1) strFA9 from tblOptFields)
Declare @field10 as nvarchar(Max)= (select top(1) strFA10 from tblOptFields)
Declare @field11 as nvarchar(Max)= (select top(1) strFA11 from tblOptFields)
Declare @field12 as nvarchar(Max)= (select top(1) strFA12 from tblOptFields)

if LEN(@field1) > 0
begin
	set @field1 = CONCAT(@field1,' (Optional)')
	EXEC sys.SP_RENAME 'Temp_FixedAssets.strField1 ' , @field1 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField1' , 'Field 1 (Optional)' , 'COLUMN'
end

if LEN(@field2) >0
begin
set @field2 = CONCAT(@field2,' (Optional)')
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField2 ' , @field2 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField2' , 'Field 2 (Optional)' , 'COLUMN'
end

if LEN(@field3) >0
begin
set @field3 = CONCAT(@field3,' (Optional)')
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField3 ' , @field3 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField3' , 'Field 3 (Optional)' , 'COLUMN'
end

if LEN(@field4) >0
begin
set @field4 = CONCAT(@field4,' (Optional)')
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField4 ' , @field4 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField4' , 'Field 4 (Optional)' , 'COLUMN'
end

if LEN(@field5) >0
begin
set @field5 = CONCAT(@field5,' (Optional)')
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField5 ' , @field5 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField5' , 'Field 5 (Optional)' , 'COLUMN'
end

if LEN(@field6) >0
begin
set @field6 = CONCAT(@field6,' (Optional)')
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField6 ' , @field6 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField6' , 'Field 6 (Optional)' , 'COLUMN'
end

if LEN(@field7) >0
begin
set @field7 = CONCAT(@field7,' (Optional)')
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField7 ' , @field7 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField7' , 'Field 7 (Optional)' , 'COLUMN'
end

if LEN(@field8) >0
begin
set @field8 = CONCAT(@field8,' (Optional)')
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField8 ' , @field8 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField8' , 'Field 8 (Optional)' , 'COLUMN'
end

if LEN(@field9) >0
begin
set @field9 = CONCAT(@field9,' (Optional)')
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField9 ' , @field9 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField9' , 'Field 9 (Optional)' , 'COLUMN'
end

if LEN(@field10) >0
begin
set @field10 = CONCAT(@field10,' (Optional)')
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField10' , @field10, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField10' , 'Field 10 (Optional)' , 'COLUMN'
end

if LEN(@field11) >0
begin
set @field11 = CONCAT(@field11,' (Optional)')
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField11' , @field11, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField11' , 'Field 11 (Optional)' , 'COLUMN'
end

if LEN(@field12) >0
begin
set @field12 = CONCAT(@field12,' (Optional)')
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField12' , @field12, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_FixedAssets.strField12' , 'Field 12 (Optional)' , 'COLUMN'
end

Select * from Temp_FixedAssets

drop table Temp_FixedAssets

End
GO
/****** Object:  StoredProcedure [dbo].[spbiInventoryItems]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************** End [spbiFixedAssets] ****************/

/************************** Start [spbiInventoryItems] ****************/


CREATE Procedure [dbo].[spbiInventoryItems]
(
@strDateFilter VARCHAR(100)=NULL,
@dateFromDate DateTime=NULL,
@dateToDate DateTime=NULL,
@strDateFilterCriteria VARCHAR(100)=NULL
)
AS
Begin

BEGIN	
	If (EXISTS(Select * from sys.tables where name='Temp_InventoryItems'))
	BEGIN
		DROP table Temp_InventoryItems
	END	
END

Select * into Temp_InventoryItems
from (
	SELECT tblInv.strPartNumber AS [Part Number]
	,tblInv.strDesc AS [Part Description]
	,CASE WHEN (tblInv.intType = 1) THEN 'Stock Item' ELSE 'Service Item' END AS Type
	,tblInv.strCategory AS [Category]
	,tblInvExt.strAcctSet AS [Account Set]
	,tblInv.decCostOnPO AS [Cost On PO]
	,tblInv.bitUseLPPOnPO AS [Use Last Purchase Price on PO]
	,tblInv.intReorderQty AS [Total Reorder Qty]
	,tblInv.strBuyUnit AS [Buy UOM]
	,tblInv.strStockUnit AS [Stock UOM]
	,tblInv.bitAllowPriceChg AS [Allow Price Change]
	,tblInv.dteDateLastSale AS [Date Last Sold]
	,tblInv.dteLastPurchase AS [Date Last Purchased]
	,tblInv.decLastPPUnit AS [Last Purchase Price]
	,tblInv.bitUseBOM AS [BOM Item]
	,tblInv.intBOMQty AS [BOM Qty]
	,tblInv.strAddInfo AS [Additional Info]
	,CASE tblInv.bitInactive WHEN 0 THEN 'Active' ELSE 'Inactive' END AS [Status]
	,tblInv.decSumAvail AS [Sum Available]
	,tblInv.decSumAlloc AS [Sum Allocated]
	,tblInv.decSumOnHand AS [Sum On Hand]
	,tblInv.decSumValue AS [Sum On Hand Value]
	,tblInv.decSumOnOrder AS [Sum Qty On Order]
	,tblInv.decSumOpenQty AS [Sum Open Purchase Quantity]
	,tblInv.decSumOpenValue AS [Sum Open Value]
	,tblInv.bitAutoBuild AS [Auto Build]
	,tblInv.strBarCode AS [Bar code]
	,tblInv.decStandardCost AS [Standard Cost]
	,tblInvExt.strBinLoc AS [Bin Location]
	,tblInv.bitItemNumConvUsed AS [Item Numbering Conv Used]
	,tblInv.strSellUnit AS [Sell Unit]
	,tblInv.strSellStockUnit AS [Sell Stock Unit]
	,tblInv.decSellFromStock AS [Sell From Stock]
	,tblInv.strItemSegment1 AS [Item Segment 1]
	,tblInv.strItemSegment2 AS [Item Segment 2]
	,tblInv.strItemSegment3 AS [Item Segment 3]
	,tblInv.strItemSegment4 AS [Item Segment 4]
	,tblInv.strInvNumConv AS [Item Numbering Conv Name]
	,tblInv.bitInvSerialType AS [Has Serial Number]
	,tblInv.strInvSerialType AS [Serial Number Type Name]
	,tblInv.decRepairCharge AS [Repair Cost]
	,tblInv.strBarCode2 AS [Bar Code 2]
	,tblInvExt.strLocName AS [Warehouse Name]
	,tblInvExt.decAvail AS [Warehouse Available]
	,tblInvExt.decAlloc AS [Warehouse Allocated]
	,tblInvExt.decOnHand AS [Warehouse On Hand]
	,tblInvExt.decValue AS [Warehouse On Hand Value]
	,tblInvExt.decOnOrder AS [Warehouse Open Purchase Quantity]
	,tblInvExt.decOpenQty AS [Warehouse Open Qty]
	,tblInvExt.decOpenValue AS [Warehouse Open Value]
	,tblInvExt.intReorderPoint AS [Warehouse Reorder Qty]
	,tblInvVend.strVendName AS [Vendor Number]
	,tblVendors.strVendDesc AS [Vendor Name]
	,tblInvVend.strItemCode AS [Vendor Item Code]
	,tblInvVend.strItemDesc AS [Vendor Item Desc]
	,tblInvVend.intWarrantyDays AS [Warranty Days]
	,tblInvVend.decPrice AS [Price]
	,tblInvVend.bitPreferred AS [Preferred]
	,tblInvVend.decDiscPerc AS [Discount Perc]
	,tblInvVend.decLocalPrice AS [Local Price]
	,tblInvVend.decLandedCostFactor AS [Landed Cost Factor]
	,tblInv.decDefSaleQty AS [Default Sale Qty]
	,tblInv.bitVoucherEnabled AS [Voucher Code Enabled]
	,tblInv.strVoucherCode AS [Voucher Code]
	,tblInv.decMass AS [Dimension Mass]
    ,tblInv.decVolumetricWeight AS [Dimension Volumetric Weight]
	,tblInv.strUnitOfMeasure AS [Dimension UOM]
	,tblInv.decW AS [Dimension Width]
	,tblInv.decH AS [Dimension Height] 
    ,tblInv.decD AS [Dimension Depth]
	,tblInv.decCube AS [Dimension Cube]
	,tblInv.decFactor AS [Dimension Factor]
	,tblInv.bitInclInvForecast AS [Inventory Forecast Item]
	,tblInv.strSubCategory  AS [Sub Category]
	,tblInv.strSubCategoryGroup  AS [Sub Category Group]
	,tblInv.strField1 
	,tblInv.strField2 
	,tblInv.strField3 
	,tblInv.strField4 
	,tblInv.strField5 
	,tblInv.strField6
	,tblInvCat.strDesc as [Item Category Description]  
	,tblInvSubCat.strDesc as [Item SubCategory Description]
	,tblInvGroupSubCat.strDesc as [Item SubCategory Group Description] 
FROM tblInv
JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
LEFT JOIN tblInvVend ON tblInv.strPartNumber = tblInvVend.strPartNumber
LEFT JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory And tblInvSubCat.strParentCategory = tblInv.strCategory
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup And tblInvGroupSubCat.strParentSubCategory=tblInv.strSubCategory And tblInvGroupSubCat.strParentCategory = tblInv.strCategory
WHERE intType <> 5 and
(
case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL 
	 when @strDateFilter='Date Last Sold' and @strDateFilterCriteria !='All' then  cast(tblInv.dteDateLastSale as date) 
	 when @strDateFilter='Date Last Purchased' and @strDateFilterCriteria !='All' then cast(tblInv.dteLastPurchase as date)
     else @dateFromDate end 
		between
		 cast(@dateFromDate as date) and 
		 cast( @dateToDate as date)
) ) as Test



Declare @field1 as nvarchar(Max)= (select top(1) strInv1 from tblOptFields)
Declare @field2 as nvarchar(Max)= (select top(1) strInv2 from tblOptFields)
Declare @field3 as nvarchar(Max)= (select top(1) strInv3 from tblOptFields)
Declare @field4 as nvarchar(Max)= (select top(1) strInv4 from tblOptFields)
Declare @field5 as nvarchar(Max)= (select top(1) strInv5 from tblOptFields)
Declare @field6 as nvarchar(Max)= (select top(1) strInv6 from tblOptFields)


if LEN(@field1) > 0
begin
	set @field1 = CONCAT(@field1,' (Optional)')
	EXEC sys.SP_RENAME 'Temp_InventoryItems.strField1 ' , @field1 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_InventoryItems.strField1' , 'Field 1 (Optional)' , 'COLUMN'
end

if LEN(@field2) >0
begin
set @field2 = CONCAT(@field2,' (Optional)')
EXEC sys.SP_RENAME 'Temp_InventoryItems.strField2 ' , @field2 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_InventoryItems.strField2' , 'Field 2 (Optional)' , 'COLUMN'
end

if LEN(@field3) >0
begin
set @field3 = CONCAT(@field3,' (Optional)')
EXEC sys.SP_RENAME 'Temp_InventoryItems.strField3 ' , @field3 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_InventoryItems.strField3' , 'Field 3 (Optional)' , 'COLUMN'
end

if LEN(@field4) >0
begin
set @field4 = CONCAT(@field4,' (Optional)')
EXEC sys.SP_RENAME 'Temp_InventoryItems.strField4 ' , @field4 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_InventoryItems.strField4' , 'Field 4 (Optional)' , 'COLUMN'
end

if LEN(@field5) >0
begin
set @field5 = CONCAT(@field5,' (Optional)')
EXEC sys.SP_RENAME 'Temp_InventoryItems.strField5 ' , @field5 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_InventoryItems.strField5' , 'Field 5 (Optional)' , 'COLUMN'
end

if LEN(@field6) >0
begin
set @field6 = CONCAT(@field6,' (Optional)')
EXEC sys.SP_RENAME 'Temp_InventoryItems.strField6 ' , @field6 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_InventoryItems.strField6' , 'Field 6 (Optional)' , 'COLUMN'
end

Select * from Temp_InventoryItems

drop table Temp_InventoryItems


End
GO
/****** Object:  StoredProcedure [dbo].[spbiIssuedRequisitions]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************** End [spbiInventoryItems] ****************/

/************************** Start [spbiIssuedRequisitions] ****************/


CREATE Procedure [dbo].[spbiIssuedRequisitions]
(
@strDateFilter VARCHAR(100)=NULL,
@dateFromDate DateTime=NULL,
@dateToDate DateTime=NULL,
@strDateFilterCriteria VARCHAR(100)=NULL
)
AS
Begin
	SELECT tblInvIssReqDocDT.strPartNumber AS [Item Code]
	,tblInv.strDesc AS [Item Description (Masterfile)]
	,tblInvIssReqDoc.strInvIssReqDocID AS [Document #]
	,tblInvIssReqDocDT.decQty AS [Requisition Qty]
	,tblInvIssReqDocDT.decAmount AS [Line Amount]
	,tblInvIssReqDoc.decTotal AS [Requisition Amount]
	,tblInvIssReqDoc.strLocName AS [Location]
	,tblInvIssReqDoc.dteSystemDate AS [System Date]
	,tblInvIssReqDoc.dteJournalDate AS [Transaction Date]
	,tblInvIssReqDoc.strComment AS [Requisition Comment]
	,DATENAME(year, tblInvIssReqDoc.dteJournalDate) AS Year
	,DATENAME(quarter, tblInvIssReqDoc.dteJournalDate) AS Quarter
	,RIGHT('00' + CAST(MONTH(tblInvIssReqDoc.dteJournalDate) AS varchar(2)), 2) + ' - ' + DATENAME(month, tblInvIssReqDoc.dteJournalDate) AS Month
	,DATENAME(week, tblInvIssReqDoc.dteJournalDate) AS Week
	,tblInv.strCategory AS [Item Category]
	,tblInv.strSubCategory as [Item SubCategory]  
	,tblInv.strSubCategoryGroup as [Item SubCategory Group]
	,tblInvCat.strDesc as [Item Category Description]  
	,tblInvSubCat.strDesc as [Item SubCategory Description]
	,tblInvGroupSubCat.strDesc as [Item SubCategory Group Description]
FROM tblInvIssReqDoc
INNER JOIN tblInvIssReqDocDT ON tblInvIssReqDoc.strInvIssReqDocID = tblInvIssReqDocDT.strInvIssReqDocID
INNER JOIN tblInv ON tblInvIssReqDocDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory And tblInvSubCat.strParentCategory = tblInv.strCategory
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup And tblInvGroupSubCat.strParentSubCategory=tblInv.strSubCategory And tblInvGroupSubCat.strParentCategory = tblInv.strCategory
WHERE
(
case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL 
	 when @strDateFilter='Transaction Date' and @strDateFilterCriteria !='All' then  cast(tblInvIssReqDoc.dteJournalDate as date) 
	 when @strDateFilter='System Date' and @strDateFilterCriteria !='All' then cast(tblInvIssReqDoc.dteSystemDate as date)
     else @dateFromDate end 
		between
		 cast(@dateFromDate as date) and 
		 cast( @dateToDate as date)
)
End
GO
/****** Object:  StoredProcedure [dbo].[spbiPaymentApprovals]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************** End [spbiIssuedRequisitions] ****************/

/************************** Start [spbiPaymentApprovals] ****************/


Create Procedure [dbo].[spbiPaymentApprovals]
(
@strDateFilter VARCHAR(100)=NULL,
@dateFromDate DateTime=NULL,
@dateToDate DateTime=NULL,
@strDateFilterCriteria VARCHAR(100)=NULL
)
AS
Begin
	SELECT tblVendPayApproval.strVendName AS 'Vendor Number'
	,tblVendors.strVendDesc AS 'Vendor Name'
	,tblVendPayApproval.strCurrency AS 'Currency'
	,tblVendPayApproval.bitIsForeign AS 'Is Foreign'
	,tblVendPayApproval.decExchange AS 'Exchange'
	,CASE tblVendPayApproval.bitIsForeign WHEN 0 THEN tblVendPayApproval.decPrepayment ELSE tblVendPayApproval.decPrepaymentF END AS 'Pre Payment'
	,tblVendPayApprovalDT.strInvPDocID AS 'Document #'
	,tblVendPayApprovalDT.strInvDepNumber AS 'Deposit Number'
	,tblVendPayApprovalDT.decOrgAmount AS 'Original Amount'
	,tblVendPayApprovalDT.decOweAmount AS 'Owing Amount'
	,tblVendPayApprovalDT.decDiscAvailable AS 'Available Discount'
	,CASE tblVendPayApprovalDT.bitIsForeign WHEN 0 THEN tblVendPayApprovalDT.decDiscount ELSE tblVendPayApprovalDT.decDiscountF END AS 'Discount Taken'
	,CASE tblVendPayApprovalDT.bitIsForeign WHEN 0 THEN tblVendPayApprovalDT.decAmount ELSE tblVendPayApprovalDT.decAmountF END AS 'Amount Approved'
	,CASE tblVendPayApprovalDT.bitPaid WHEN 0 THEN 'No' ELSE 'Yes' END AS 'Paid'
FROM tblVendPayApproval
INNER JOIN tblVendPayApprovalDT ON tblVendPayApproval.lngVendPayApprovalID = tblVendPayApprovalDT.lngVendPayApprovalID
INNER JOIN tblVendors ON tblVendors.strVendName = tblVendPayApproval.strVendName

End
GO
/****** Object:  StoredProcedure [dbo].[spBiPurchaseInvoice]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************** End [spbiPaymentApprovals] ****************/

/************************** Start [spbiPurchaseInvoice] ****************/


CREATE Procedure [dbo].[spBiPurchaseInvoice]
(
@strDateFilter VARCHAR(100)=NULL,
@dateFromDate DateTime=NULL,
@dateToDate DateTime=NULL,
@strDateFilterCriteria VARCHAR(100)=NULL
)
AS
Begin

BEGIN
	If (EXISTS(Select * from sys.tables where name='Temp_PurchaseInvoice'))
	BEGIN
		DROP table Temp_PurchaseInvoice
	END
END

 Select * into Temp_PurchaseInvoice 
from (
	SELECT tblVendors.strVendDesc AS [Vendor Name]
	,tblInvoiceDocPDT.strPartNumber AS [Item Code]
	,tblInvoiceDocPDT.strBuyUnit AS [Item Unit]
	,tblInvoiceDocPDT.strPartDesc AS [Item Description]
	,tblInv.strDesc AS [Item Description (Masterfile)]
	,tblInvoiceDocP.strInvPDocID AS [Document #]
	,tblInvoiceDocPDT.decBuyQty AS [Original Invoice Qty]
	,tblInvoiceDocPDT.strTaxCode AS [Tax Code]
	,tblInvoiceDocP.decSubTotal AS [Original Invoice Value]
	,tblInvoiceDocPDT.strLocation AS Location
	,tblInvoiceDocP.dteSystemDate AS [System Date]
	,ISNULL(tblInvoiceDocP.strStatusTypeCode, N'') AS [Status Type Code]
	,tblInvoiceDocP.dteJournalDate AS [Transaction Date]
	,tblInv.decSumOnHand AS [On Hand Qty]
	,tblInv.decLastPPUnit AS [Last Unit Cost]
	,tblInvoiceDocP.dteRequired AS [Order Required Date]
	,DATENAME(YEAR, tblInvoiceDocP.dteJournalDate) AS Year
	,RIGHT('00' + CAST(MONTH(tblInvoiceDocP.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, tblInvoiceDocP.dteJournalDate) AS Month
	,REPLICATE('0',2-LEN(DATENAME(DAY, tblInvoiceDocP.dteJournalDate))) + DATENAME(DAY, tblInvoiceDocP.dteJournalDate) AS Day
	,DATENAME(WEEK, tblInvoiceDocP.dteJournalDate) AS Week
	,DATENAME(QUARTER, tblInvoiceDocP.dteJournalDate) AS Quarter
	,DATEDIFF(DAY, GETDATE(), tblInvoiceDocP.dteRequired) AS [Days To Required Date]
	,ISNULL(tblInv.bitItemNumConvUsed, 0) AS [Using Item # Convention]
	,ISNULL(tblInv.strItemSegment1, N'') AS [Item Segment 1]
	,ISNULL(tblInv.strItemSegment2, N'') AS [Item Segment 2]
	,ISNULL(tblInv.strItemSegment3, N'') AS [Item Segment 3]
	,ISNULL(tblInv.strItemSegment4, N'') AS [Item Segment 4]
	,ISNULL(tblInv.strInvNumConv, N'') AS [Number Convention]
	,tblVendors.strVendCategory AS [Vendor Category]
	,tblInvoiceDocPDT.decLineTotExc AS [Line Tot Excl]
	,tblInvoiceDocPDT.decLineTaxAmt AS [Line Tot Tax]
	,tblInvoiceDocPDT.decLineTotExc + tblInvoiceDocPDT.decLineTaxAmt AS [Line Tot Incl]
	,tblInvoiceDocP.strCurrency AS [Currency Code]
	,tblInvoiceDocP.decExchange AS [Exchange Rate]
	,tblInvoiceDocP.decSubTotalF AS [Original Invoice Value FC]
	,tblInvoiceDocPDT.decLineTotExcF AS [Line Tot Excl FC]
	,CASE tblInvoiceDocPDT.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS [Is Foreign Trans]
	,tblInvoiceDocP.strAddInfo AS [Additional Info]
	,tblInv.decMass AS [Dimension Mass]
    ,tblInv.decVolumetricWeight AS [Dimension Volumetric Weight]
	,tblInv.strUnitOfMeasure AS [Dimension UOM]
	,tblInv.decW AS [Dimension Width]
	,tblInv.decH AS [Dimension Height] 
    ,tblInv.decD AS [Dimension Depth]
	,tblInv.decCube AS [Dimension Cube]
	,tblInv.decFactor AS [Dimension Factor]
	,tblInv.strCategory AS [Item Category]
	,tblInv.strSubCategory as [Item SubCategory]  
	,tblInv.strSubCategoryGroup as [Item SubCategory Group]
	,tblInvCat.strDesc as [Item Category Description]  
	,tblInvSubCat.strDesc as [Item SubCategory Description]
	,tblInvGroupSubCat.strDesc as [Item SubCategory Group Description] 
	,tblInvoiceDocP.strField1 
	,tblInvoiceDocP.strField2 
	,tblInvoiceDocP.strField3 
	,tblInvoiceDocP.strField4 
	,tblInvoiceDocP.strField5 
	,tblInvoiceDocP.strField6 
	,tblInvoiceDocP.strField7 
	,tblInvoiceDocP.strField8 
	,tblInvoiceDocP.strField9 
	,tblInvoiceDocP.strField10
	,tblInvoiceDocP.strField11
	,tblInvoiceDocP.strField12
FROM tblInvoiceDocP
INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
INNER JOIN tblInv ON tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber
INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory And tblInvSubCat.strParentCategory = tblInv.strCategory
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup And tblInvGroupSubCat.strParentSubCategory=tblInv.strSubCategory And tblInvGroupSubCat.strParentCategory = tblInv.strCategory
Where
(
case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL 
     when @strDateFilter='Transaction Date' and @strDateFilterCriteria !='All' then  cast(tblInvoiceDocP.dteJournalDate as date) 
	 when @strDateFilter='System Date' and @strDateFilterCriteria !='All' then cast(tblInvoiceDocP.dteSystemDate as date)
	 when @strDateFilter='Order Required Date' and @strDateFilterCriteria !='All' then cast(tblInvoiceDocP.dteRequired as date) 
	  
     else @dateFromDate end 
		between
		 cast(@dateFromDate as date) and 
		 cast( @dateToDate as date))) as Test

Declare @field1 as nvarchar(Max)= (select top(1) strpaydoc1 from tblOptFields)
Declare @field2 as nvarchar(Max)= (select top(1) strpaydoc2 from tblOptFields)
Declare @field3 as nvarchar(Max)= (select top(1) strpaydoc3 from tblOptFields)
Declare @field4 as nvarchar(Max)= (select top(1) strpaydoc4 from tblOptFields)
Declare @field5 as nvarchar(Max)= (select top(1) strpaydoc5 from tblOptFields)
Declare @field6 as nvarchar(Max)= (select top(1) strpaydoc6 from tblOptFields)
Declare @field7 as nvarchar(Max)= (select top(1) strpaydoc7 from tblOptFields)
Declare @field8 as nvarchar(Max)= (select top(1) strpaydoc8 from tblOptFields)
Declare @field9 as nvarchar(Max)= (select top(1) strpaydoc9 from tblOptFields)
Declare @field10 as nvarchar(Max)= (select top(1) strpaydoc10 from tblOptFields)
Declare @field11 as nvarchar(Max)= (select top(1) strpaydoc11 from tblOptFields)
Declare @field12 as nvarchar(Max)= (select top(1) strpaydoc12 from tblOptFields)

if LEN(@field1) > 0
begin
	set @field1 = CONCAT(@field1,' (Optional)')
	EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField1 ' , @field1 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField1' , 'Field 1 (Optional)' , 'COLUMN'
end

if LEN(@field2) >0
begin
set @field2 = CONCAT(@field2,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField2 ' , @field2 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField2' , 'Field 2 (Optional)' , 'COLUMN'
end

if LEN(@field3) >0
begin
set @field3 = CONCAT(@field3,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField3 ' , @field3 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField3' , 'Field 3 (Optional)' , 'COLUMN'
end

if LEN(@field4) >0
begin
set @field4 = CONCAT(@field4,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField4 ' , @field4 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField4' , 'Field 4 (Optional)' , 'COLUMN'
end

if LEN(@field5) >0
begin
set @field5 = CONCAT(@field5,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField5 ' , @field5 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField5' , 'Field 5 (Optional)' , 'COLUMN'
end

if LEN(@field6) >0
begin
set @field6 = CONCAT(@field6,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField6 ' , @field6 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField6' , 'Field 6 (Optional)' , 'COLUMN'
end

if LEN(@field7) >0
begin
set @field7 = CONCAT(@field7,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField7 ' , @field7 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField7' , 'Field 7 (Optional)' , 'COLUMN'
end

if LEN(@field8) >0
begin
set @field8 = CONCAT(@field8,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField8 ' , @field8 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField8' , 'Field 8 (Optional)' , 'COLUMN'
end

if LEN(@field9) >0
begin
set @field9 = CONCAT(@field9,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField9 ' , @field9 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField9' , 'Field 9 (Optional)' , 'COLUMN'
end

if LEN(@field10) >0
begin
set @field10 = CONCAT(@field10,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField10' , @field10, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField10' , 'Field 10 (Optional)' , 'COLUMN'
end

if LEN(@field11) >0
begin
set @field11 = CONCAT(@field11,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField11' , @field11, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField11' , 'Field 11 (Optional)' , 'COLUMN'
end

if LEN(@field12) >0
begin
set @field12 = CONCAT(@field12,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField12' , @field12, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseInvoice.strField12' , 'Field 12 (Optional)' , 'COLUMN'
end


Select * from Temp_PurchaseInvoice 

drop table Temp_PurchaseInvoice

End
GO
/****** Object:  StoredProcedure [dbo].[spBiPurchaseOrders]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/************************** End [spbiPurchaseInvoice] ****************/

/************************** Start [spbiPurchaseOrders] ****************/


CREATE Procedure [dbo].[spBiPurchaseOrders]
(
@strDateFilter VARCHAR(100)=NULL,
@dateFromDate DateTime=NULL,
@dateToDate DateTime=NULL,
@strDateFilterCriteria VARCHAR(100)=NULL
)
AS
Begin

BEGIN	
	If (EXISTS(Select * from sys.tables where name='Temp_PurchaseOrders'))
	BEGIN
		DROP table Temp_PurchaseOrders
	END
END

 Select * into Temp_PurchaseOrders 
from (
 SELECT tblVendors.strVendDesc AS [Vendor Name]
	,tblOrderDocPDT.strPartNumber AS [Item Code]
	,tblOrderDocPDT.strBuyUnit AS [Item Unit]
	,tblOrderDocPDT.strPartDesc AS [Item Description]
	,tblInv.strDesc AS [Item Description (Masterfile)]
	,tblOrderDocP.strOrdPDocID AS [Document #]
	,tblOrderDocPDT.decBuyQty AS [Original Order Qty]
	,tblOrderDocPDT.decBuyQtyRemain AS [Open Order Qty]
	,tblOrderDocPDT.decBuyQty - tblOrderDocPDT.decBuyQtyRemain AS [Shipped Order Qty]
	,tblInv.decSumOnOrder AS [Supplier Order Qty]
	,tblOrderDocPDT.strTaxCode AS [Tax Code]
	,tblOrderDocPDT.decBuyQtyRemain * tblOrderDocPDT.decPriceEaExc AS [Open Order Value]
	,tblOrderDocPDT.decLineTotExc AS [Original Order Value]
	,(tblOrderDocPDT.decBuyQtyRemain * tblOrderDocPDT.decPriceEaExc) - tblOrderDocPDT.decLineTotExc AS [Shipped Order Value]
	,tblOrderDocPDT.strLocation AS Location
	,tblOrderDocP.dteSystemDate AS [System Date]
	,ISNULL(tblOrderDocP.strStatusTypeCode, N'') AS [Status Type Code]
	,CASE tblOrderDocP.bitCleared WHEN 0 THEN 'Open' ELSE 'Closed' END AS Status
	,tblOrderDocP.dteJournalDate AS [Transaction Date]
	,tblInv.decSumOnHand AS [On Hand Qty]
	,tblInv.decLastPPUnit AS [Last Unit Cost]
	,tblOrderDocP.dteRequired AS [Order Required Date]
	,DATENAME(YEAR, tblOrderDocP.dteJournalDate) AS Year
	,RIGHT('00' + CAST(MONTH(tblOrderDocP.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, tblOrderDocP.dteJournalDate) AS Month
	,REPLICATE('0',2-LEN(DATENAME(DAY, tblOrderDocP.dteJournalDate))) + DATENAME(DAY, tblOrderDocP.dteJournalDate) AS Day
	,DATENAME(WEEK, tblOrderDocP.dteJournalDate) AS Week
	,DATENAME(QUARTER, tblOrderDocP.dteJournalDate) AS Quarter
	,DATEDIFF(DAY, GETDATE(), tblOrderDocP.dteRequired) AS [Days To Required Date]
	,ISNULL(tblInv.bitItemNumConvUsed, 0) AS [Using Item # Convention]
	,ISNULL(tblInv.strItemSegment1, N'') AS [Item Segment 1]
	,ISNULL(tblInv.strItemSegment2, N'') AS [Item Segment 2]
	,ISNULL(tblInv.strItemSegment3, N'') AS [Item Segment 3]
	,ISNULL(tblInv.strItemSegment4, N'') AS [Item Segment 4]
	,ISNULL(tblInv.strInvNumConv, N'') AS [Number Convention]
	,tblVendors.strVendCategory AS [Vendor Category]
	,tblOrderDocP.strCurrency AS [Currency Code]
	,tblOrderDocP.decExchange AS [Exchange Rate]
	,tblOrderDocPDT.decBuyQtyRemain * tblOrderDocPDT.decPriceEaExcF AS [Open Order Value FC]
	,tblOrderDocPDT.decLineTotExcF AS [Original Order Value FC]
	,(tblOrderDocPDT.decBuyQtyRemain * tblOrderDocPDT.decPriceEaExcF) - tblOrderDocPDT.decLineTotExcF AS [Shipped Order Value FC]
	,CASE tblOrderDocPDT.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS [Is Foreign Trans]
	,tblOrderDocP.strAddInfo AS [Additional Info]
	,ISNULL(tblOrderDocPDT.strOrdSODocID, '') AS [Copied From Document]
	,ISNULL(tblCustomers.strCustDesc, '') AS [Customer Name]
	,tblInv.strCategory AS [Item Category]
	,tblInv.strSubCategory as [Item SubCategory]  
	,tblInv.strSubCategoryGroup as [Item SubCategory Group]
	,tblInvCat.strDesc as [Item Category Description]  
	,tblInvSubCat.strDesc as [Item SubCategory Description]
	,tblInvGroupSubCat.strDesc as [Item SubCategory Group Description] 
	,tblOrderDocP.strField1 
	,tblOrderDocP.strField2 
	,tblOrderDocP.strField3 
	,tblOrderDocP.strField4 
	,tblOrderDocP.strField5 
	,tblOrderDocP.strField6 
	,tblOrderDocP.strField7 
	,tblOrderDocP.strField8 
	,tblOrderDocP.strField9 
	,tblOrderDocP.strField10
	,tblOrderDocP.strField11
	,tblOrderDocP.strField12
FROM tblOrderDocP
INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
INNER JOIN tblInv ON tblOrderDocPDT.strPartNumber = tblInv.strPartNumber
INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
LEFT JOIN tblOrderDoc ON tblOrderDocPDT.strOrdSODocID = tblOrderDoc.strOrdDocID
LEFT JOIN tblCustomers ON tblCustomers.strCustName = tblOrderDoc.strCustName
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory And tblInvSubCat.strParentCategory = tblInv.strCategory
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup And tblInvGroupSubCat.strParentSubCategory=tblInv.strSubCategory And tblInvGroupSubCat.strParentCategory = tblInv.strCategory
WHERE (tblOrderDocP.intDocType = 1)
and
(
case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL 
	 when @strDateFilter='Transaction Date' and @strDateFilterCriteria !='All' then  cast(tblOrderDocP.dteJournalDate as date) 
	 when @strDateFilter='System Date' and @strDateFilterCriteria !='All' then cast(tblOrderDocP.dteSystemDate as date)
	 when @strDateFilter='Order Required Date' and @strDateFilterCriteria !='All' then cast(tblOrderDocP.dteRequired as date) 
	  
     else @dateFromDate end 
		between
		 cast(@dateFromDate as date) and 
		 cast( @dateToDate as date))


		 UNION ALL	--IBT ORDERS


 SELECT '' AS [Vendor Name]
	,tblInvTrfOrdDocDT.strPartNumber AS [Item Code]
	,'' AS [Item Unit]
	,tblInv.strDesc AS [Item Description]
	,tblInv.strDesc AS [Item Description (Masterfile)]
	,tblInvTrfOrdDoc.strInvTrfOrdDocID AS [Document #]
	,tblInvTrfOrdDocDT.decQty AS [Original Order Qty]
	,tblInvTrfOrdDocDT.decQtyRemaining AS [Open Order Qty]
	,tblInvTrfOrdDocDT.decQty - tblInvTrfOrdDocDT.decQtyRemaining AS [Shipped Order Qty]
	,tblInv.decSumOnOrder AS [Supplier Order Qty]
	,'' AS [Tax Code]
	--,0 AS [Open Order Value]
	,tblInvTrfOrdDocDT.decQtyRemaining * tblInvTrfOrdDocDT.decUnitCost AS [Open Order Value]
	--,0 AS [Original Order Value]
	,tblInvTrfOrdDocDT.decAmount AS [Original Order Value]
	--,0 AS [Shipped Order Value]
	,(tblInvTrfOrdDocDT.decQtyRemaining * tblInvTrfOrdDocDT.decUnitCost) - tblInvTrfOrdDocDT.decAmount AS [Shipped Order Value]
	,tblInvTrfOrdDoc.strToLocName AS Location
	,tblInvTrfOrdDoc.dteSystemDate AS [System Date]
	,'' AS [Status Type Code]
	,CASE tblInvTrfOrdDoc.bitCleared WHEN 0 THEN 'Open' ELSE 'Closed' END AS Status
	,tblInvTrfOrdDoc.dteJournalDate AS [Transaction Date]
	,tblInv.decSumOnHand AS [On Hand Qty]
	,tblInv.decLastPPUnit AS [Last Unit Cost]
	,tblInvTrfOrdDoc.dteReceivingDate AS [Order Required Date]
	,DATENAME(YEAR, tblInvTrfOrdDoc.dteJournalDate) AS Year
	,RIGHT('00' + CAST(MONTH(tblInvTrfOrdDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, tblInvTrfOrdDoc.dteJournalDate) AS Month
	,REPLICATE('0',2-LEN(DATENAME(DAY, tblInvTrfOrdDoc.dteJournalDate))) + DATENAME(DAY, tblInvTrfOrdDoc.dteJournalDate) AS Day
	,DATENAME(WEEK, tblInvTrfOrdDoc.dteJournalDate) AS Week
	,DATENAME(QUARTER, tblInvTrfOrdDoc.dteJournalDate) AS Quarter
	,DATEDIFF(DAY, GETDATE(), tblInvTrfOrdDoc.dteReceivingDate) AS [Days To Required Date]
	,ISNULL(tblInv.bitItemNumConvUsed, 0) AS [Using Item # Convention]
	,ISNULL(tblInv.strItemSegment1, N'') AS [Item Segment 1]
	,ISNULL(tblInv.strItemSegment2, N'') AS [Item Segment 2]
	,ISNULL(tblInv.strItemSegment3, N'') AS [Item Segment 3]
	,ISNULL(tblInv.strItemSegment4, N'') AS [Item Segment 4]
	,ISNULL(tblInv.strInvNumConv, N'') AS [Number Convention]
	,'' AS [Vendor Category]
	,'' AS [Currency Code]
	,0 AS [Exchange Rate]
	,0 AS [Open Order Value FC]
	,0 AS [Original Order Value FC]
	,0 AS [Shipped Order Value FC]
	,CASE 0 WHEN 0 THEN 'No' ELSE 'Yes' END AS [Is Foreign Trans]
	,'' AS [Additional Info]
	,'' AS [Copied From Document]
	,'' AS [Customer Name]
	,'' as [Item Category]
	,'' as [Item SubCategory]  
	,'' as [Item SubCategory Group]
	,'' as [Item Category Description]  
	,'' as [Item SubCategory Description]
	,'' as [Item SubCategory Group Description]
	,'' as [strField1] 
	,'' as [strField2] 
	,'' as [strField3] 
	,'' as [strField4] 
	,'' as [strField5] 
	,'' as [strField6] 
	,'' as [strField7] 
	,'' as [strField8] 
	,'' as [strField9] 
	,'' as [strField10]
	,'' as [strField11]
	,'' as [strField12]
FROM tblInvTrfOrdDoc
INNER JOIN tblInvTrfOrdDocDT ON tblInvTrfOrdDoc.strInvTrfOrdDocID = tblInvTrfOrdDocDT.strInvTrfOrdDocID
INNER JOIN tblInv ON tblInvTrfOrdDocDT.strPartNumber = tblInv.strPartNumber
--INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
--LEFT JOIN tblInvTrfOrdDoc ON tblInvTrfOrdDocDT.strInvTrfOrdDocID = tblInvTrfOrdDoc.strInvTrfOrdDocID
--LEFT JOIN tblCustomers ON tblCustomers.strCustName = tblOrderDoc.strCustName
WHERE (tblInvTrfOrdDoc.bitCleared = 0)
and
(
case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL 
	 when @strDateFilter='Transaction Date' and @strDateFilterCriteria !='All' then  cast(tblInvTrfOrdDoc.dteJournalDate as date) 
	 when @strDateFilter='System Date' and @strDateFilterCriteria !='All' then cast(tblInvTrfOrdDoc.dteSystemDate as date)
	 when @strDateFilter='Order Required Date' and @strDateFilterCriteria !='All' then cast(tblInvTrfOrdDoc.dteReceivingDate as date) 
	  
     else @dateFromDate end 
		between
		 cast(@dateFromDate as date) and 
		 cast( @dateToDate as date))

) as test

Declare @field1 as nvarchar(Max)= (select top(1) strpaydoc1 from tblOptFields)
Declare @field2 as nvarchar(Max)= (select top(1) strpaydoc2 from tblOptFields)
Declare @field3 as nvarchar(Max)= (select top(1) strpaydoc3 from tblOptFields)
Declare @field4 as nvarchar(Max)= (select top(1) strpaydoc4 from tblOptFields)
Declare @field5 as nvarchar(Max)= (select top(1) strpaydoc5 from tblOptFields)
Declare @field6 as nvarchar(Max)= (select top(1) strpaydoc6 from tblOptFields)
Declare @field7 as nvarchar(Max)= (select top(1) strpaydoc7 from tblOptFields)
Declare @field8 as nvarchar(Max)= (select top(1) strpaydoc8 from tblOptFields)
Declare @field9 as nvarchar(Max)= (select top(1) strpaydoc9 from tblOptFields)
Declare @field10 as nvarchar(Max)= (select top(1) strpaydoc10 from tblOptFields)
Declare @field11 as nvarchar(Max)= (select top(1) strpaydoc11 from tblOptFields)
Declare @field12 as nvarchar(Max)= (select top(1) strpaydoc12 from tblOptFields)

if LEN(@field1) > 0
begin
	set @field1 = CONCAT(@field1,' (Optional)')
	EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField1 ' , @field1 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField1' , 'Field 1 (Optional)' , 'COLUMN'
end

if LEN(@field2) >0
begin
set @field2 = CONCAT(@field2,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField2 ' , @field2 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField2' , 'Field 2 (Optional)' , 'COLUMN'
end

if LEN(@field3) >0
begin
set @field3 = CONCAT(@field3,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField3 ' , @field3 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField3' , 'Field 3 (Optional)' , 'COLUMN'
end

if LEN(@field4) >0
begin
set @field4 = CONCAT(@field4,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField4 ' , @field4 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField4' , 'Field 4 (Optional)' , 'COLUMN'
end

if LEN(@field5) >0
begin
set @field5 = CONCAT(@field5,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField5 ' , @field5 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField5' , 'Field 5 (Optional)' , 'COLUMN'
end

if LEN(@field6) >0
begin
set @field6 = CONCAT(@field6,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField6 ' , @field6 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField6' , 'Field 6 (Optional)' , 'COLUMN'
end

if LEN(@field7) >0
begin
set @field7 = CONCAT(@field7,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField7 ' , @field7 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField7' , 'Field 7 (Optional)' , 'COLUMN'
end

if LEN(@field8) >0
begin
set @field8 = CONCAT(@field8,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField8 ' , @field8 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField8' , 'Field 8 (Optional)' , 'COLUMN'
end

if LEN(@field9) >0
begin
set @field9 = CONCAT(@field9,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField9 ' , @field9 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField9' , 'Field 9 (Optional)' , 'COLUMN'
end

if LEN(@field10) >0
begin
set @field10 = CONCAT(@field10,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField10' , @field10, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField10' , 'Field 10 (Optional)' , 'COLUMN'
end

if LEN(@field11) >0
begin
set @field11 = CONCAT(@field11,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField11' , @field11, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField11' , 'Field 11 (Optional)' , 'COLUMN'
end

if LEN(@field12) >0
begin
set @field12 = CONCAT(@field12,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField12' , @field12, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseOrders.strField12' , 'Field 12 (Optional)' , 'COLUMN'
end


Select * from Temp_PurchaseOrders 

drop table Temp_PurchaseOrders

End
GO
/****** Object:  StoredProcedure [dbo].[spBiPurchaseRequisitions]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************** End [spbiPurchaseOrders] ****************/

/************************** Start [spbiPurchaseRequisitions] ****************/

CREATE Procedure [dbo].[spBiPurchaseRequisitions]
(
@strDateFilter VARCHAR(100)=NULL,
@dateFromDate DateTime=NULL,
@dateToDate DateTime=NULL,
@strDateFilterCriteria VARCHAR(100)=NULL
)
AS
Begin

BEGIN	
	If (EXISTS(Select * from sys.tables where name='Temp_PurchaseRequisitions'))
	BEGIN
		DROP table Temp_PurchaseRequisitions
	END
END

 Select * into Temp_PurchaseRequisitions 
from (
	SELECT tblVendors.strVendDesc AS [Vendor Name]
	,tblOrderDocP.strOrdPDocID AS [Document #]
	,ISNULL(tblOrderDocPDT.strOrdSODocID, N'') AS Reference
	,tblOrderDocP.dteJournalDate AS [Transaction Date]
	,tblOrderDocP.dteRequired AS [Required Date]
	,'Requisition' AS [Document Source]
	,ISNULL(tblOrderDocP.strStatusTypeCode, N'') AS [Status Type Code]
	,CASE tblOrderDocP.bitCleared WHEN 0 THEN 'Open' ELSE 'Closed' END AS Status
	,DATENAME(YEAR, tblOrderDocP.dteJournalDate) AS Year
	,RIGHT('00' + CAST(MONTH(tblOrderDocP.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, tblOrderDocP.dteJournalDate) AS Month
	,REPLICATE('0',2-LEN(DATENAME(DAY, tblOrderDocP.dteJournalDate))) + DATENAME(DAY, tblOrderDocP.dteJournalDate) AS Day
	,DATENAME(WEEK, tblOrderDocP.dteJournalDate) AS Week
	,DATENAME(QUARTER, tblOrderDocP.dteJournalDate) AS Quarter
	,tblOrderDocPDT.strPartNumber AS [Item Code]
	,tblOrderDocPDT.strPartDesc AS [Item Desc]
	,tblInv.strDesc AS [Item Description (Masterfile)]
	,tblOrderDocPDT.decBuyQty AS Qty
	,tblOrderDocPDT.decPriceEaExc AS [Price Excl]
	,tblOrderDocPDT.decLineTotExc AS [Amount Excl]
	,tblOrderDocPDT.decLineTaxAmt AS [Tax Amount]
	,CASE ISNULL(tblTaxCodeExt.bitIncluded,0) WHEN 1 THEN tblOrderDocPDT.decTotIncTax ELSE (tblOrderDocPDT.decLineTaxAmt + tblOrderDocPDT.decLineTotExc) END AS [Amount Incl]
	,CASE ISNULL(tblTaxCodeExt.bitIncluded,0) WHEN 1 THEN tblOrderDocPDT.decEaIncTax ELSE (tblOrderDocPDT.decLineTaxAmt + tblOrderDocPDT.decLineTotExc) END AS [Price Incl]
	,ISNULL(tblInv.bitItemNumConvUsed, 0) AS [Using Item # Convention]
	,ISNULL(tblInv.strItemSegment1, N'') AS [Item Segment 1]
	,ISNULL(tblInv.strItemSegment2, N'') AS [Item Segment 2]
	,ISNULL(tblInv.strItemSegment3, N'') AS [Item Segment 3]
	,ISNULL(tblInv.strItemSegment4, N'') AS [Item Segment 4]
	,ISNULL(tblInv.strInvNumConv, N'') AS [Number Convention]
	,tblVendors.strVendCategory AS [Vendor Category]
	,tblOrderDocP.strCurrency AS [Currency Code]
	,tblOrderDocP.decExchange AS [Exchange Rate]
	,tblOrderDocPDT.decPriceEaExcF AS [Price Excl FC]
	,tblOrderDocPDT.decLineTotExcF AS [Amount Excl FC]
	,CASE tblOrderDocPDT.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS [Is Foreign Trans]
	,tblOrderDocP.strAddInfo AS [Additional Info]
	,tblInv.strCategory AS [Item Category]
	,tblInv.strSubCategory as [Item SubCategory]  
	,tblInv.strSubCategoryGroup as [Item SubCategory Group]
	,tblInvCat.strDesc as [Item Category Description]  
	,tblInvSubCat.strDesc as [Item SubCategory Description]
	,tblInvGroupSubCat.strDesc as [Item SubCategory Group Description]
	,tblOrderDocP.strField1 
	,tblOrderDocP.strField2 
	,tblOrderDocP.strField3 
	,tblOrderDocP.strField4 
	,tblOrderDocP.strField5 
	,tblOrderDocP.strField6 
	,tblOrderDocP.strField7 
	,tblOrderDocP.strField8 
	,tblOrderDocP.strField9 
	,tblOrderDocP.strField10
	,tblOrderDocP.strField11
	,tblOrderDocP.strField12
FROM tblOrderDocP
INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName
INNER JOIN tblCurrency ON tblVendors.strCurrency = tblCurrency.strCurrency
INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID AND tblCurrency.strCurrency = tblOrderDocPDT.strCurrency
INNER JOIN tblInv ON tblOrderDocPDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblTaxCodeExt ON tblTaxCodeExt.strTaxCode = tblOrderDocPDT.strTaxCode
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory And tblInvSubCat.strParentCategory = tblInv.strCategory
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup And tblInvGroupSubCat.strParentSubCategory=tblInv.strSubCategory And tblInvGroupSubCat.strParentCategory = tblInv.strCategory
WHERE (tblOrderDocP.intDocType = 2)
and
(
case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL 
	 when @strDateFilter='Transaction Date' and @strDateFilterCriteria !='All' then  cast(tblOrderDocP.dteJournalDate as date) 
	 when @strDateFilter='Required Date' and @strDateFilterCriteria !='All' then cast(tblOrderDocP.dteRequired as date) 
	  
     else @dateFromDate end 
		between
		 cast(@dateFromDate as date) and 
		 cast( @dateToDate as date))
		 
) as test

Declare @field1 as nvarchar(Max)= (select top(1) strpaydoc1 from tblOptFields)
Declare @field2 as nvarchar(Max)= (select top(1) strpaydoc2 from tblOptFields)
Declare @field3 as nvarchar(Max)= (select top(1) strpaydoc3 from tblOptFields)
Declare @field4 as nvarchar(Max)= (select top(1) strpaydoc4 from tblOptFields)
Declare @field5 as nvarchar(Max)= (select top(1) strpaydoc5 from tblOptFields)
Declare @field6 as nvarchar(Max)= (select top(1) strpaydoc6 from tblOptFields)
Declare @field7 as nvarchar(Max)= (select top(1) strpaydoc7 from tblOptFields)
Declare @field8 as nvarchar(Max)= (select top(1) strpaydoc8 from tblOptFields)
Declare @field9 as nvarchar(Max)= (select top(1) strpaydoc9 from tblOptFields)
Declare @field10 as nvarchar(Max)= (select top(1) strpaydoc10 from tblOptFields)
Declare @field11 as nvarchar(Max)= (select top(1) strpaydoc11 from tblOptFields)
Declare @field12 as nvarchar(Max)= (select top(1) strpaydoc12 from tblOptFields)

if LEN(@field1) > 0
begin
	set @field1 = CONCAT(@field1,' (Optional)')
	EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField1 ' , @field1 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField1' , 'Field 1 (Optional)' , 'COLUMN'
end

if LEN(@field2) >0
begin
set @field2 = CONCAT(@field2,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField2 ' , @field2 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField2' , 'Field 2 (Optional)' , 'COLUMN'
end

if LEN(@field3) >0
begin
set @field3 = CONCAT(@field3,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField3 ' , @field3 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField3' , 'Field 3 (Optional)' , 'COLUMN'
end

if LEN(@field4) >0
begin
set @field4 = CONCAT(@field4,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField4 ' , @field4 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField4' , 'Field 4 (Optional)' , 'COLUMN'
end

if LEN(@field5) >0
begin
set @field5 = CONCAT(@field5,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField5 ' , @field5 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField5' , 'Field 5 (Optional)' , 'COLUMN'
end

if LEN(@field6) >0
begin
set @field6 = CONCAT(@field6,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField6 ' , @field6 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField6' , 'Field 6 (Optional)' , 'COLUMN'
end

if LEN(@field7) >0
begin
set @field7 = CONCAT(@field7,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField7 ' , @field7 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField7' , 'Field 7 (Optional)' , 'COLUMN'
end

if LEN(@field8) >0
begin
set @field8 = CONCAT(@field8,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField8 ' , @field8 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField8' , 'Field 8 (Optional)' , 'COLUMN'
end

if LEN(@field9) >0
begin
set @field9 = CONCAT(@field9,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField9 ' , @field9 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField9' , 'Field 9 (Optional)' , 'COLUMN'
end

if LEN(@field10) >0
begin
set @field10 = CONCAT(@field10,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField10' , @field10, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField10' , 'Field 10 (Optional)' , 'COLUMN'
end

if LEN(@field11) >0
begin
set @field11 = CONCAT(@field11,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField11' , @field11, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField11' , 'Field 11 (Optional)' , 'COLUMN'
end

if LEN(@field12) >0
begin
set @field12 = CONCAT(@field12,' (Optional)')
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField12' , @field12, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_PurchaseRequisitions.strField12' , 'Field 12 (Optional)' , 'COLUMN'
end


Select * from Temp_PurchaseRequisitions 

drop table Temp_PurchaseRequisitions

End
GO
/****** Object:  StoredProcedure [dbo].[spBiSalesAnalysis]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[spBiSalesAnalysis]   
(  
@strDateFilter VARCHAR(100)=NULL,  
@dateFromDate DateTime=NULL,  
@dateToDate DateTime=NULL,  
@strDateFilterCriteria VARCHAR(100)=NULL  
)  
AS  
BEGIN  

BEGIN
                If (EXISTS(Select * from sys.tables where name='Temp_SalesAnalysis'))
                BEGIN
                                DROP table Temp_SalesAnalysis
                END
END

Select * into Temp_SalesAnalysis 
from (
SELECT        dbo.tblInvoiceDoc.strInvDocID AS [Document #], dbo.tblInvoiceDoc.strReference AS Reference, dbo.tblInvoiceDoc.strUserName AS Agent, dbo.tblInvoiceDoc.strSalesName AS [Sales Rep], 
                         dbo.tblInvoiceDoc.dteJournalDate AS [Transaction Date], dbo.tblInvoiceDoc.dteRequired AS [Required Date], DATENAME(YEAR, dbo.tblInvoiceDoc.dteJournalDate) AS Year, 
                         RIGHT('00' + CAST(MONTH(dbo.tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, dbo.tblInvoiceDoc.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, 
                         dbo.tblInvoiceDoc.dteJournalDate))) + DATENAME(DAY, dbo.tblInvoiceDoc.dteJournalDate) AS Day, DATENAME(WEEK, dbo.tblInvoiceDoc.dteJournalDate) AS Week, DATENAME(QUARTER, dbo.tblInvoiceDoc.dteJournalDate) 
                         AS Quarter, dbo.tblInvoiceDoc.strCustName AS [Customer Code], dbo.tblCustomers.strCustDesc AS [Customer Name], dbo.tblCustomers.strCustCategory AS [Customer Category Code], 
                         dbo.tblCustomers.strCustCategory AS [Customer Category], dbo.tblInvoiceDocDT.strPartNumber AS [Item Code], dbo.tblInvoiceDocDT.strPartDesc AS [Item Description], dbo.tblInv.strDesc AS [Item Description (Masterfile)], 
                         dbo.tblInvoiceDocDT.strLocation AS [Item Location], dbo.tblInv.strCategory AS [Item Category], dbo.tblInvExt.strAcctSet AS [Item Account Set], dbo.tblInvoiceDocDT.decQty AS Qty, dbo.tblInvoiceDocDT.decLineTotExc AS Revenue, 
                         dbo.tblInvoiceDocDT.decCOGS AS Cost, dbo.tblInvoiceDocDT.decLineTotExc - dbo.tblInvoiceDocDT.decCOGS AS Profit, CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) 
                         AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18, 2)) AS [GP Margin (%)], 
                         CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) 
                         / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18, 2)) AS [GP Margin], CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND 
                         (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18, 2)) AS [Margin Percentage], 
                         CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) 
                         / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18, 2)) AS [GP Markup (%)], CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND 
                         (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18, 2)) AS [GP Markup], 
                         ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS [Using Item # Convention], ISNULL(dbo.tblInv.strItemSegment1, N'') AS [Item Segment 1], ISNULL(dbo.tblInv.strItemSegment2, N'') AS [Item Segment 2], 
                         ISNULL(dbo.tblInv.strItemSegment3, N'') AS [Item Segment 3], ISNULL(dbo.tblInv.strItemSegment4, N'') AS [Item Segment 4], ISNULL(dbo.tblInv.strInvNumConv, N'') AS [Number Convention], 
                         CASE WHEN tblInvoiceDocDT.decQty = 0 THEN 0 ELSE tblInvoiceDocDT.decCOGS / tblInvoiceDocDT.decQty END AS [Unit Cost], ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) AS [Standard Cost], 
                         ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) AS [Last Received Cost], dbo.tblInvoiceDoc.strCurrency AS [Currency Code], dbo.tblInvoiceDoc.decExchange AS [Exchange Rate], CASE WHEN (tblInvoiceDoc.bitIsForeign <> 0 AND
                          decexchange <> 0) THEN tblInvoiceDocDT.decLineTotExc / tblInvoiceDoc.decExchange ELSE 0 END AS [Revenue FC], CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS [Is Foreign Trans], 
                         REPLACE(REPLACE(ISNULL(dbo.tblInvoiceDoc.strShipTo, N''), CHAR(13), ' '), CHAR(10), '') AS [Ship To], dbo.tblInvoiceDoc.strAddInfo AS [Additional Info], 
                         CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decSubTotalF + tblInvoiceDoc.decDiscAmtF END AS [Document Subtotal], 
                         CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decDiscAmtF END AS [Document Discount], 
                         CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decVAT ELSE tblInvoiceDoc.decVATF END AS [Document Tax], 
                         CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS [Document Total], dbo.tblInvoiceDoc.intDept AS Department, dbo.tblInv.decMass AS [Dimension Mass], 
                         dbo.tblInv.decVolumetricWeight AS [Dimension Volumetric Weight], dbo.tblInv.strUnitOfMeasure AS [Dimension UOM], dbo.tblInv.decW AS [Dimension Width], dbo.tblInv.decH AS [Dimension Height], 
                         dbo.tblInv.decD AS [Dimension Depth], dbo.tblInv.decCube AS [Dimension Cube], dbo.tblInv.decFactor AS [Dimension Factor], dbo.tblInvoiceDocDT.decLineTaxAmt AS [Line Tax Amount], 
                         dbo.tblInvoiceDocDT.decLineTotExc + dbo.tblInvoiceDocDT.decLineTaxAmt AS [Line Total Incl], dbo.tblInvoiceDocDT.decPriceEaExc AS [Unit Price Excl], dbo.tblInvoiceDocDT.decPriceEaInc AS [Unit Price Incl], 
                         dbo.tblInvoiceDocDT.decLineDiscPerc AS [Line Disc Perc], dbo.tblInvoiceDocDT.decLineDiscAmt AS [Line Disc Amount], dbo.tblInvoiceDocDT.decLineDiscAmtF AS [Line Disc Amount Foreign], 
                         dbo.tblInvoiceDocDT.decLineTotExc AS [Line Total Excl], dbo.tblInvoiceDocDT.decPriceEaExcF AS [Unit Price Foreign], dbo.tblInvoiceDocDT.decLineTotExcF AS [Line Total Foreign], 
                         dbo.tblInvoiceDocDT.decTotIncTaxF AS [Line Tax Amount Foreign], dbo.tblInv.strSubCategory AS [Item SubCategory], dbo.tblInvCat.strDesc AS [Inventory Category Description], 
                         dbo.tblInvSubCat.strDesc AS [SubCategory Description], dbo.tblInv.strSubCategoryGroup AS [Item SubCategory Group], dbo.tblInvGroupSubCat.strDesc AS [Item SubCategory Group Description], 
                         ROUND(ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty, 2) AS [Cost (Last Received Cost)], dbo.tblInvoiceDocDT.decLineTotExc - ROUND(ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) 
                         * dbo.tblInvoiceDocDT.decQty, 2) AS [Profit (Last Received Cost)], CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND 
                         (ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty), 2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty), 
                         2)) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18, 2)) AS [GP Margin (Last Received Cost) (%)], 
                         CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty), 2) <> 0) AND (ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 
                         0) * dbo.tblInvoiceDocDT.decQty), 2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty), 2)) 
                         / ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty), 2) ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18, 2)) AS [GP Markup (Last Received Cost) (%)], 
                         ROUND(ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty, 2) AS [Cost (Standard Cost)], dbo.tblInvoiceDocDT.decLineTotExc - ROUND(ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) 
                         * dbo.tblInvoiceDocDT.decQty, 2) AS [Profit (Standard Cost)], CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND 
                         (ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty), 2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) 
                         * dbo.tblInvoiceDocDT.decQty), 2)) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18, 2)) AS [GP Margin (Standard Cost) (%)], 
                         CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty), 2) <> 0) AND 
                         (ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty), 2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) 
                         * dbo.tblInvoiceDocDT.decQty), 2)) / ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty), 2) ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18, 2)) AS [GP Markup (Standard Cost) (%)], 
                         dbo.tblCustomerCat.strDesc AS [Customer Category Description], dbo.tblCustomers.dteSince AS [Customer Since Date], dbo.tblInvoiceDoc.strField1, dbo.tblInvoiceDoc.strField2, dbo.tblInvoiceDoc.strField3, 
                         dbo.tblInvoiceDoc.strField4, dbo.tblInvoiceDoc.strField5, dbo.tblInvoiceDoc.strField6, dbo.tblInvoiceDoc.strField7, dbo.tblInvoiceDoc.strField8, dbo.tblInvoiceDoc.strField9, dbo.tblInvoiceDoc.strField10, 
                         dbo.tblInvoiceDoc.strField11, dbo.tblInvoiceDoc.strField12, dbo.tblInvoiceDoc.dteField13, dbo.tblInvoiceDoc.dteField14, dbo.tblCustomers.strCountry AS [Customer Country], 
                         dbo.tblCustomers.strCountryCode AS [Customer Country Code]
FROM            dbo.tblInvoiceDocDT INNER JOIN
                         dbo.tblInvoiceDoc ON dbo.tblInvoiceDocDT.strInvDocID = dbo.tblInvoiceDoc.strInvDocID INNER JOIN
                         dbo.tblInv ON dbo.tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber LEFT OUTER JOIN
                         dbo.tblInvExt ON dbo.tblInv.strPartNumber = dbo.tblInvExt.strPartNumber AND dbo.tblInvExt.strLocName = dbo.tblInvoiceDocDT.strLocation INNER JOIN
                         dbo.tblCustomers ON dbo.tblInvoiceDoc.strCustName = dbo.tblCustomers.strCustName LEFT OUTER JOIN
                         dbo.tblInvCat ON dbo.tblInvCat.strCategory = dbo.tblInv.strCategory LEFT OUTER JOIN
                         dbo.tblInvSubCat ON dbo.tblInvSubCat.strCategory = dbo.tblInv.strSubCategory AND dbo.tblInvSubCat.strParentCategory = dbo.tblInv.strCategory LEFT OUTER JOIN
                         dbo.tblInvGroupSubCat ON dbo.tblInvGroupSubCat.strCategory = dbo.tblInv.strSubCategoryGroup AND dbo.tblInvGroupSubCat.strParentSubCategory = dbo.tblInv.strSubCategory AND 
                         dbo.tblInvGroupSubCat.strParentCategory = dbo.tblInv.strCategory LEFT OUTER JOIN
                         dbo.tblCustomerCat ON dbo.tblCustomers.strCustCategory = dbo.tblCustomerCat.strCustCategory
WHERE        (dbo.tblInvoiceDocDT.bitDiscountTax = 0)
and   
(  
case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL   
  when @strDateFilter='Transaction Date' and @strDateFilterCriteria !='All' then  cast(tblInvoiceDoc.dteJournalDate as date)   
  when @strDateFilter='Required Date' and @strDateFilterCriteria !='All' then cast(tblInvoiceDoc.dteRequired as date)  
     else CAST(@dateFromDate as date) end     
  between  
   cast(@dateFromDate as date) and   
   cast( @dateToDate as date))) as Test

Declare @field1 as nvarchar(Max)= (select top(1) strRecDoc1 from tblOptFields)
Declare @field2 as nvarchar(Max)= (select top(1) strRecDoc2 from tblOptFields)
Declare @field3 as nvarchar(Max)= (select top(1) strRecDoc3 from tblOptFields)
Declare @field4 as nvarchar(Max)= (select top(1) strRecDoc4 from tblOptFields)
Declare @field5 as nvarchar(Max)= (select top(1) strRecDoc5 from tblOptFields)
Declare @field6 as nvarchar(Max)= (select top(1) strRecDoc6 from tblOptFields)
Declare @field7 as nvarchar(Max)= (select top(1) strRecDoc7 from tblOptFields)
Declare @field8 as nvarchar(Max)= (select top(1) strRecDoc8 from tblOptFields)
Declare @field9 as nvarchar(Max)= (select top(1) strRecDoc9 from tblOptFields)
Declare @field10 as nvarchar(Max)= (select top(1) strRecDoc10 from tblOptFields)
Declare @field11 as nvarchar(Max)= (select top(1) strRecDoc11 from tblOptFields)
Declare @field12 as nvarchar(Max)= (select top(1) strRecDoc12 from tblOptFields)
Declare @field13 as nvarchar(Max)= (select top(1) strRecDoc13 from tblOptFields)
Declare @field14 as nvarchar(Max)= (select top(1) strRecDoc14 from tblOptFields)

if LEN(@field1) > 0
begin
                set @field1 = CONCAT(@field1,' (Optional)')
                EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField1 ' , @field1 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField1' , 'Field 1 (Optional)' , 'COLUMN'
end

if LEN(@field2) >0
begin
set @field2 = CONCAT(@field2,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField2 ' , @field2 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField2' , 'Field 2 (Optional)' , 'COLUMN'
end

if LEN(@field3) >0
begin
set @field3 = CONCAT(@field3,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField3 ' , @field3 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField3' , 'Field 3 (Optional)' , 'COLUMN'
end

if LEN(@field4) >0
begin
set @field4 = CONCAT(@field4,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField4 ' , @field4 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField4' , 'Field 4 (Optional)' , 'COLUMN'
end

if LEN(@field5) >0
begin
set @field5 = CONCAT(@field5,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField5 ' , @field5 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField5' , 'Field 5 (Optional)' , 'COLUMN'
end

if LEN(@field6) >0
begin
set @field6 = CONCAT(@field6,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField6 ' , @field6 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField6' , 'Field 6 (Optional)' , 'COLUMN'
end

if LEN(@field7) >0
begin
set @field7 = CONCAT(@field7,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField7 ' , @field7 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField7' , 'Field 7 (Optional)' , 'COLUMN'
end

if LEN(@field8) >0
begin
set @field8 = CONCAT(@field8,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField8 ' , @field8 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField8' , 'Field 8 (Optional)' , 'COLUMN'
end

if LEN(@field9) >0
begin
set @field9 = CONCAT(@field9,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField9 ' , @field9 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField9' , 'Field 9 (Optional)' , 'COLUMN'
end

if LEN(@field10) >0
begin
set @field10 = CONCAT(@field10,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField10' , @field10, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField10' , 'Field 10 (Optional)' , 'COLUMN'
end

if LEN(@field11) >0
begin
set @field11 = CONCAT(@field11,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField11' , @field11, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField11' , 'Field 11 (Optional)' , 'COLUMN'
end

if LEN(@field12) >0
begin
set @field12 = CONCAT(@field12,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField12' , @field12, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField12' , 'Field 12 (Optional)' , 'COLUMN'
end

if LEN(@field13) >0
begin
set @field13 = CONCAT(@field13,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField13' , @field13, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField13' , 'Field 13 (Optional)' , 'COLUMN'
end

if LEN(@field14) >0
begin
set @field14 = CONCAT(@field14,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField14' , @field14, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField14' , 'Field 14 (Optional)' , 'COLUMN'
end

Select * from Temp_SalesAnalysis 

drop table Temp_SalesAnalysis

end
GO
/****** Object:  StoredProcedure [dbo].[spBiSalesOrders]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[spBiSalesOrders] 
(
@strDateFilter VARCHAR(50) = NULL
,@dateFromDate DATETIME = NULL
,@dateToDate DATETIME = NULL
,@strDateFilterCriteria VARCHAR(100) = NULL
)
AS
BEGIN

BEGIN
	If (EXISTS(Select * from sys.tables where name='Temp_SalesOrders'))
	BEGIN
		DROP table Temp_SalesOrders
	END
END

Select * into Temp_SalesOrders
from (
	SELECT dbo.tblCustomers.strCustDesc AS [Customer Name]
		,dbo.tblOrderDocDT.strPartNumber AS [Item Code]
		,dbo.tblOrderDocDT.strUnit AS [Item Unit]
		,dbo.tblOrderDocDT.strPartDesc AS [Item Description]
		,dbo.tblInv.strDesc AS [Item Description (Masterfile)]
		,dbo.tblOrderDoc.strOrdDocID AS [Document #]
		,dbo.tblOrderDocDT.decQty AS [Original Order Qty]
		,dbo.tblOrderDocDT.decQtyRemaining AS [Open Order Qty]
		,dbo.tblOrderDocDT.decQty - dbo.tblOrderDocDT.decQtyRemaining AS [Shipped Order Qty]
		,dbo.tblInv.decSumOnOrder AS [Supplier Order Qty]
		,dbo.tblTaxCodeExt.strTaxCode AS [Tax Code]
		,dbo.tblOrderDocDT.decQtyRemaining * dbo.tblOrderDocDT.decPriceEaExc AS [Open Order Value]
		,dbo.tblOrderDocDT.decLineTotExc AS [Original Order Value]
		,dbo.tblOrderDocDT.decQtyRemaining * dbo.tblOrderDocDT.decPriceEaExc - dbo.tblOrderDocDT.decLineTotExc AS [Shipped Order Value]
		,ISNULL(dbo.tblOrderDoc.strSalesName, N'') AS [Sales Person]
		,dbo.tblOrderDocDT.strLocation AS Location
		,dbo.tblOrderDoc.dteSystemDate AS [System Date]
		,ISNULL(dbo.tblOrderDoc.strStatusTypeCode, N'') AS [Status Type Code]
		,CASE tblOrderDoc.bitCleared
			WHEN 0
				THEN 'Open'
			ELSE 'Closed'
			END AS STATUS
		,dbo.tblOrderDoc.dteJournalDate AS [Transaction Date]
		,dbo.tblInv.decSumOnHand AS [On Hand Qty]
		,dbo.tblInv.decLastPPUnit AS [Last Received Cost]
		,dbo.tblOrderDoc.dteRequired AS [Order Required Date]
		,DATENAME(year, dbo.tblOrderDoc.dteJournalDate) AS Year
		,RIGHT('00' + CAST(MONTH(dbo.tblOrderDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, dbo.tblOrderDoc.dteJournalDate) AS Month
		,REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblOrderDoc.dteJournalDate))) + DATENAME(day, dbo.tblOrderDoc.dteJournalDate) AS Day
		,DATENAME(week, dbo.tblOrderDoc.dteJournalDate) AS Week
		,DATENAME(quarter, dbo.tblOrderDoc.dteJournalDate) AS Quarter
		,DATEDIFF(day, GETDATE(), dbo.tblOrderDoc.dteRequired) AS [Days To Required Date]
		,ISNULL(dbo.tblOrderDoc.strReference, N'') AS Reference
		,dbo.tblCustomers.strCustCategory AS [Customer Category Code]
		,ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS [Using Item # Convention]
		,ISNULL(dbo.tblInv.strItemSegment1, N'') AS [Item Segment 1]
		,ISNULL(dbo.tblInv.strItemSegment2, N'') AS [Item Segment 2]
		,ISNULL(dbo.tblInv.strItemSegment3, N'') AS [Item Segment 3]
		,ISNULL(dbo.tblInv.strItemSegment4, N'') AS [Item Segment 4]
		,ISNULL(dbo.tblInv.strInvNumConv, N'') AS [Number Convention]
		,dbo.tblInv.decStandardCost AS [Standard Cost]
		,dbo.tblOrderDoc.strCurrency AS [Currency Code]
		,dbo.tblOrderDoc.decExchange AS [Exchange Rate]
		,dbo.tblOrderDocDT.decQtyRemaining * dbo.tblOrderDocDT.decPriceEaExcF AS [Open Order Value FC]
		,dbo.tblOrderDocDT.decLineTotExcF AS [Original Order Value FC]
		,dbo.tblOrderDocDT.decQtyRemaining * dbo.tblOrderDocDT.decPriceEaExcF - dbo.tblOrderDocDT.decLineTotExcF AS [Shipped Order Value FC]
		,CASE tblOrderDocDT.bitIsForeign
			WHEN 0
				THEN 'No'
			ELSE 'Yes'
			END AS [Is Foreign Trans]
		,CASE 
			WHEN CHARINDEX(CHAR(13), tblOrderDoc.strShipTo) = 0
				THEN ISNULL(tblOrderDoc.strShipTo, '')
			ELSE REPLACE(LEFT(tblOrderDoc.strShipTo, CHARINDEX(CHAR(13), tblOrderDoc.strShipTo)), CHAR(13), '')
			END AS [Ship To]
		,dbo.tblOrderDoc.strAddInfo AS [Additional Info]
		,dbo.tblOrderDocDT.strInvField1 AS [Inventory Field 1]
		,dbo.tblOrderDocDT.strInvField2 AS [Inventory Field 2]
		,dbo.tblOrderDocDT.strInvField3 AS [Inventory Field 3]
		,dbo.tblOrderDocDT.strInvField4 AS [Inventory Field 4]
		,dbo.tblOrderDocDT.strInvField5 AS [Inventory Field 5]
		,dbo.tblOrderDocDT.strInvField6 AS [Inventory Field 6]
		,dbo.tblOrderDocDT.strLineField1 AS [Line Field 1]
		,dbo.tblOrderDocDT.strLineField2 AS [Line Field 2]
		,dbo.tblOrderDocDT.strLineField3 AS [Line Field 3]
		,dbo.tblOrderDocDT.strLineField4 AS [Line Field 4]
		,dbo.tblOrderDocDT.strLineField5 AS [Line Field 5]
		,dbo.tblOrderDocDT.strLineField6 AS [Line Field 6]
		,dbo.tblOrderDocDT.strLineField7 AS [Line Field 7]
		,dbo.tblOrderDocDT.strLineField8 AS [Line Field 8]
		,dbo.tblOrderDocDT.strLineField9 AS [Line Field 9]
		,dbo.tblOrderDocDT.strLineField10 AS [Line Field 10]
		,dbo.tblOrderDocDT.strLineField11 AS [Line Field 11]
		,dbo.tblOrderDocDT.strLineField12 AS [Line Field 12]
		,dbo.tblOrderDoc.intDept AS Department
		,ISNULL(dbo.tblSalesOrderReasons.strSOReasonCode, N'') AS [Order Cancellation Code]
		,dbo.tblOrderDoc.strUserName AS [User]
		,ISNULL(dbo.tblSalesOrderReasons.strSOReasonDesc, N'') AS [Order Cancellation Description]
		,ISNULL(tblInv.strSubCategory, N'') AS [Item Sub Category]
		,ISNULL(tblInv.strSubCategoryGroup, N'') AS [Item Sub Category Group]
		,tblCustomerCat.strDesc as [Customer Category Description]
		,tblInv.strCategory AS [Item Category]
		,tblInvCat.strDesc as [Inventory Category Description]  
		,tblInvSubCat.strDesc as [SubCategory Description]
		,tblInvGroupSubCat.strDesc as [Item SubCategory Group Description]
		,tblOrderDoc.strField1 
		,tblOrderDoc.strField2 
		,tblOrderDoc.strField3 
		,tblOrderDoc.strField4 
		,tblOrderDoc.strField5 
		,tblOrderDoc.strField6 
		,tblOrderDoc.strField7 
		,tblOrderDoc.strField8 
		,tblOrderDoc.strField9 
		,tblOrderDoc.strField10
		,tblOrderDoc.strField11
		,tblOrderDoc.strField12
		,tblOrderDoc.dteField13
		,tblOrderDoc.dteField14
		,tblCustomers.strCountry as [Customer Country]
		,tblCustomers.strCountryCode as [Customer Country Code]
	FROM dbo.tblOrderDoc
	INNER JOIN dbo.tblOrderDocDT ON dbo.tblOrderDoc.strOrdDocID = dbo.tblOrderDocDT.strOrdDocID
	INNER JOIN dbo.tblInv ON dbo.tblOrderDocDT.strPartNumber = dbo.tblInv.strPartNumber
	INNER JOIN dbo.tblTaxCodeExt ON dbo.tblOrderDocDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode
	INNER JOIN dbo.tblCustomers ON dbo.tblOrderDoc.strCustName = dbo.tblCustomers.strCustName
	LEFT OUTER JOIN dbo.tblSalesOrderReasons ON dbo.tblOrderDoc.strSOReasonCode = dbo.tblSalesOrderReasons.strSOReasonCode
	LEFT JOIN dbo.tblCustomerCat on dbo.tblCustomers.strCustCategory=dbo.tblCustomerCat.strCustCategory
	LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
	LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory And tblInvSubCat.strParentCategory = tblInv.strCategory
	LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup And tblInvGroupSubCat.strParentSubCategory=tblInv.strSubCategory And tblInvGroupSubCat.strParentCategory = tblInv.strCategory
	WHERE (dbo.tblOrderDoc.intDocType = 1)
		AND (
			CASE 
				WHEN isnull(@strDateFilter, '') = ''
					AND @strDateFilterCriteria = 'Today'
					THEN NULL
				WHEN @strDateFilter = 'Order Required Date'
					AND @strDateFilterCriteria != 'All'
					THEN cast(dbo.tblOrderDoc.dteRequired AS DATE)
				WHEN @strDateFilter = 'Transaction Date'
					AND @strDateFilterCriteria != 'All'
					THEN cast(dbo.tblOrderDoc.dteJournalDate AS DATE)
				WHEN @strDateFilter = 'System Date'
					AND @strDateFilterCriteria != 'All'
					THEN cast(dbo.tblOrderDoc.dteSystemDate AS DATE)
				ELSE @dateFromDate
				END BETWEEN cast(@dateFromDate AS DATE)
				AND cast(@dateToDate AS DATE)
			)

			UNION ALL --- IBT Orders

	SELECT '' AS [Customer Name]
		,dbo.tblInvTrfOrdDocDT.strPartNumber AS [Item Code]
		,'' AS [Item Unit]
		,tblInv.strDesc AS [Item Description]
		,dbo.tblInv.strDesc AS [Item Description (Masterfile)]
		,dbo.tblInvTrfOrdDocDT.strInvTrfOrdDocID AS [Document #]
		,dbo.tblInvTrfOrdDocDT.decQty AS [Original Order Qty]
		,dbo.tblInvTrfOrdDocDT.decQtyRemaining AS [Open Order Qty]
		,dbo.tblInvTrfOrdDocDT.decQty - dbo.tblInvTrfOrdDocDT.decQtyRemaining AS [Shipped Order Qty]
		,dbo.tblInv.decSumOnOrder AS [Supplier Order Qty]
		,NULL AS [Tax Code]
		--,0 AS [Open Order Value]
		,dbo.tblInvTrfOrdDocDT.decQtyRemaining * dbo.tblInvTrfOrdDocDT.decUnitCost AS [Open Order Value]
		--,0 AS [Original Order Value]
		,dbo.tblInvTrfOrdDocDT.decAmount AS [Original Order Value]
		--,0 AS [Shipped Order Value]
		,dbo.tblInvTrfOrdDocDT.decQtyRemaining * dbo.tblInvTrfOrdDocDT.decUnitCost - dbo.tblInvTrfOrdDocDT.decAmount AS [Shipped Order Value]
		,'' AS [Sales Person]
		,dbo.tblInvTrfOrdDoc.strLocName AS Location
		,dbo.tblInvTrfOrdDoc.dteSystemDate AS [System Date]
		,'' AS [Status Type Code]
		,CASE tblInvTrfOrdDoc.bitCleared
			WHEN 0
				THEN 'Open'
			ELSE 'Closed'
			END AS STATUS
		,dbo.tblInvTrfOrdDoc.dteJournalDate AS [Transaction Date]
		,dbo.tblInv.decSumOnHand AS [On Hand Qty]
		,dbo.tblInv.decLastPPUnit AS [Last Received Cost]
		,dbo.tblInvTrfOrdDoc.dteReceivingDate AS [Order Required Date]
		,DATENAME(year, dbo.tblInvTrfOrdDoc.dteJournalDate) AS Year
		,RIGHT('00' + CAST(MONTH(dbo.tblInvTrfOrdDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, dbo.tblInvTrfOrdDoc.dteJournalDate) AS Month
		,REPLICATE('0', 2 - LEN(DATENAME(DAY, dbo.tblInvTrfOrdDoc.dteJournalDate))) + DATENAME(day, dbo.tblInvTrfOrdDoc.dteJournalDate) AS Day
		,DATENAME(week, dbo.tblInvTrfOrdDoc.dteJournalDate) AS Week
		,DATENAME(quarter, dbo.tblInvTrfOrdDoc.dteJournalDate) AS Quarter
		,DATEDIFF(day, GETDATE(), dbo.tblInvTrfOrdDoc.dteReceivingDate) AS [Days To Required Date]
		,'' AS Reference
		,'' AS [Customer Category Code]
		,ISNULL(dbo.tblInv.bitItemNumConvUsed, 0) AS [Using Item # Convention]
		,ISNULL(dbo.tblInv.strItemSegment1, N'') AS [Item Segment 1]
		,ISNULL(dbo.tblInv.strItemSegment2, N'') AS [Item Segment 2]
		,ISNULL(dbo.tblInv.strItemSegment3, N'') AS [Item Segment 3]
		,ISNULL(dbo.tblInv.strItemSegment4, N'') AS [Item Segment 4]
		,ISNULL(dbo.tblInv.strInvNumConv, N'') AS [Number Convention]
		,dbo.tblInv.decStandardCost AS [Standard Cost]
		,'' AS [Currency Code]
		,0 AS [Exchange Rate]
		,0 AS [Open Order Value FC]
		,0 AS [Original Order Value FC]
		,0 AS [Shipped Order Value FC]
		,CASE 0
			WHEN 0
				THEN 'No'
			ELSE 'Yes'
		 END AS [Is Foreign Trans]
		,'' AS [Ship To]
		,'' AS [Additional Info]
		,'' AS [Inventory Field 1]
		,'' AS [Inventory Field 2]
		,'' AS [Inventory Field 3]
		,'' AS [Inventory Field 4]
		,'' AS [Inventory Field 5]
		,'' AS [Inventory Field 6]
		,''  AS [Line Field 1]
		,''  AS [Line Field 2]
		,''  AS [Line Field 3]
		,''  AS [Line Field 4]
		,''  AS [Line Field 5]
		,''  AS [Line Field 6]
		,''  AS [Line Field 7]
		,''  AS [Line Field 8]
		,''  AS [Line Field 9]
		,''  AS [Line Field 10]
		,''  AS [Line Field 11]
		,''  AS [Line Field 12]
		,dbo.tblInvTrfOrdDoc.intDept AS Department
		,'' AS [Order Cancellation Code]
		,dbo.tblInvTrfOrdDoc.strUserName AS [User]
		,'' AS [Order Cancellation Description]
		,ISNULL(tblInv.strSubCategory, N'') AS [Item Sub Category]
		,ISNULL(tblInv.strSubCategoryGroup, N'') AS [Item Sub Category Group]
		,'' AS [Customer Category Description]
		,'' AS [Item Category]
		,'' as [Inventory Category Description]  
		,'' as [SubCategory Description]
		,'' as [Item SubCategory Group Description]
		,'' as [strField1] 
		,'' as [strField2] 
		,'' as [strField3] 
		,'' as [strField4] 
		,'' as [strField5] 
		,'' as [strField6] 
		,'' as [strField7] 
		,'' as [strField8] 
		,'' as [strField9] 
		,'' as [strField10]
		,'' as [strField11]
		,'' as [strField12]
		,GETDATE() as [dteField13]
		,GETDATE() as [dteField14]
		,'' as [Customer Country]
		,'' as [Customer Country Code]
	FROM dbo.tblInvTrfOrdDoc
	INNER JOIN dbo.tblInvTrfOrdDocDT ON dbo.tblInvTrfOrdDoc.strInvTrfOrdDocID = dbo.tblInvTrfOrdDocDT.strInvTrfOrdDocID
	INNER JOIN dbo.tblInv ON dbo.tblInvTrfOrdDocDT.strPartNumber = dbo.tblInv.strPartNumber
	--INNER JOIN dbo.tblTaxCodeExt ON dbo.tblOrderDocDT.strTaxCode = dbo.tblTaxCodeExt.strTaxCode
	--INNER JOIN dbo.tblCustomers ON dbo.tblOrderDoc.strCustName = dbo.tblCustomers.strCustName
	--LEFT OUTER JOIN dbo.tblSalesOrderReasons ON dbo.tblOrderDoc.strSOReasonCode = dbo.tblSalesOrderReasons.strSOReasonCode
	WHERE (dbo.tblInvTrfOrdDoc.bitCleared = 0)
		AND (
			CASE 
				WHEN isnull(@strDateFilter, '') = ''
					AND @strDateFilterCriteria = 'Today'
					THEN NULL
				WHEN @strDateFilter = 'Order Required Date'
					AND @strDateFilterCriteria != 'All'
					THEN cast(dbo.tblInvTrfOrdDoc.dteReceivingDate AS DATE)
				WHEN @strDateFilter = 'Transaction Date'
					AND @strDateFilterCriteria != 'All'
					THEN cast(dbo.tblInvTrfOrdDoc.dteJournalDate AS DATE)
				WHEN @strDateFilter = 'System Date'
					AND @strDateFilterCriteria != 'All'
					THEN cast(dbo.tblInvTrfOrdDoc.dteSystemDate AS DATE)
				ELSE @dateFromDate
				END BETWEEN cast(@dateFromDate AS DATE)
				AND cast(@dateToDate AS DATE)
			)) as Test



			
Declare @field1 as nvarchar(Max)= (select top(1) strRecDoc1 from tblOptFields)
Declare @field2 as nvarchar(Max)= (select top(1) strRecDoc2 from tblOptFields)
Declare @field3 as nvarchar(Max)= (select top(1) strRecDoc3 from tblOptFields)
Declare @field4 as nvarchar(Max)= (select top(1) strRecDoc4 from tblOptFields)
Declare @field5 as nvarchar(Max)= (select top(1) strRecDoc5 from tblOptFields)
Declare @field6 as nvarchar(Max)= (select top(1) strRecDoc6 from tblOptFields)
Declare @field7 as nvarchar(Max)= (select top(1) strRecDoc7 from tblOptFields)
Declare @field8 as nvarchar(Max)= (select top(1) strRecDoc8 from tblOptFields)
Declare @field9 as nvarchar(Max)= (select top(1) strRecDoc9 from tblOptFields)
Declare @field10 as nvarchar(Max)= (select top(1) strRecDoc10 from tblOptFields)
Declare @field11 as nvarchar(Max)= (select top(1) strRecDoc11 from tblOptFields)
Declare @field12 as nvarchar(Max)= (select top(1) strRecDoc12 from tblOptFields)
Declare @field13 as nvarchar(Max)= (select top(1) strRecDoc13 from tblOptFields)
Declare @field14 as nvarchar(Max)= (select top(1) strRecDoc14 from tblOptFields)

if LEN(@field1) > 0
begin
	set @field1 = CONCAT(@field1,' (Optional)')
	EXEC sys.SP_RENAME 'Temp_SalesOrders.strField1 ' , @field1 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField1' , 'Field 1 (Optional)' , 'COLUMN'
end

if LEN(@field2) >0
begin
set @field2 = CONCAT(@field2,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField2 ' , @field2 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField2' , 'Field 2 (Optional)' , 'COLUMN'
end

if LEN(@field3) >0
begin
set @field3 = CONCAT(@field3,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField3 ' , @field3 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField3' , 'Field 3 (Optional)' , 'COLUMN'
end

if LEN(@field4) >0
begin
set @field4 = CONCAT(@field4,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField4 ' , @field4 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField4' , 'Field 4 (Optional)' , 'COLUMN'
end

if LEN(@field5) >0
begin
set @field5 = CONCAT(@field5,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField5 ' , @field5 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField5' , 'Field 5 (Optional)' , 'COLUMN'
end

if LEN(@field6) >0
begin
set @field6 = CONCAT(@field6,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField6 ' , @field6 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField6' , 'Field 6 (Optional)' , 'COLUMN'
end

if LEN(@field7) >0
begin
set @field7 = CONCAT(@field7,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField7 ' , @field7 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField7' , 'Field 7 (Optional)' , 'COLUMN'
end

if LEN(@field8) >0
begin
set @field8 = CONCAT(@field8,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField8 ' , @field8 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField8' , 'Field 8 (Optional)' , 'COLUMN'
end

if LEN(@field9) >0
begin
set @field9 = CONCAT(@field9,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField9 ' , @field9 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField9' , 'Field 9 (Optional)' , 'COLUMN'
end

if LEN(@field10) >0
begin
set @field10 = CONCAT(@field10,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField10' , @field10, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField10' , 'Field 10 (Optional)' , 'COLUMN'
end

if LEN(@field11) >0
begin
set @field11 = CONCAT(@field11,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField11' , @field11, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField11' , 'Field 11 (Optional)' , 'COLUMN'
end

if LEN(@field12) >0
begin
set @field12 = CONCAT(@field12,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField12' , @field12, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesOrders.strField12' , 'Field 12 (Optional)' , 'COLUMN'
end

if LEN(@field13) >0
begin
set @field13 = CONCAT(@field13,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesOrders.dteField13' , @field13, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesOrders.dteField13' , 'Field 13 (Optional)' , 'COLUMN'
end

if LEN(@field14) >0
begin
set @field14 = CONCAT(@field14,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesOrders.dteField14' , @field14, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesOrders.dteField14' , 'Field 14 (Optional)' , 'COLUMN'
end

Select * from Temp_SalesOrders

drop table Temp_SalesOrders

END
GO
/****** Object:  StoredProcedure [dbo].[spBiSalesQuotes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************** End [DeleteBICubeView] ****************/

/************************** Start [spbiSalesQuotes] ****************/

CREATE PROCEDURE [dbo].[spBiSalesQuotes] 
(
@strDateFilter VARCHAR(100)=NULL,
@dateFromDate DateTime=NULL,
@dateToDate DateTime=NULL,
@strDateFilterCriteria VARCHAR(100)=NULL
)
AS
BEGIN

BEGIN
	If (EXISTS(Select * from sys.tables where name='Temp_SalesQuotes'))
	BEGIN
		DROP table Temp_SalesQuotes
	END
END

Select * into Temp_SalesQuotes
from (
SELECT	tblCustomers.strCustDesc AS [Customer Name], tblOrderDoc.strOrdDocID AS [Document #], tblOrderDoc.strReference AS Reference, ISNULL(tblOrderDoc.strSalesName, N'') AS [Sales Person], 
        tblOrderDoc.dteJournalDate AS [Transaction Date], tblOrderDoc.dteRequired AS [Required Date], 'Quote' AS [Document Source], ISNULL(tblOrderDoc.strStatusTypeCode, N'') AS [Status Type Code], 
        CASE tblOrderDoc.bitCleared WHEN 0 THEN 'Open' ELSE 'Closed' END AS Status, DATENAME(year, tblOrderDoc.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(tblOrderDoc.dteJournalDate) AS varchar(2)), 2)
        + ' - ' + DATENAME(month, tblOrderDoc.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, tblOrderDoc.dteJournalDate))) + DATENAME(day, tblOrderDoc.dteJournalDate) AS Day, 
        DATENAME(week, tblOrderDoc.dteJournalDate) AS Week, DATENAME(quarter, tblOrderDoc.dteJournalDate) AS Quarter, tblOrderDocDT.strPartNumber AS [Item Code], 
        tblOrderDocDT.strPartDesc AS [Item Desc], tblInv.strDesc AS [Item Description (Masterfile)], tblOrderDocDT.decQty AS Qty, tblOrderDocDT.decPriceEaExc AS [Price Excl], 
        tblOrderDocDT.decLineTotExc AS [Amount Excl], tblOrderDocDT.decLineTaxAmt AS [Tax Amount], tblCustomers.strCustCategory AS [Customer Category Code], 
        CASE ISNULL(tblTaxCodeExt.bitIncluded,0) WHEN 1 THEN tblOrderDocDT.decLineTotInc ELSE (tblOrderDocDT.decLineTaxAmt + tblOrderDocDT.decLineTotExc) END AS [Amount Incl], 
        CASE ISNULL(tblTaxCodeExt.bitIncluded,0) WHEN 1 THEN tblOrderDocDT.decPriceEaInc ELSE (tblOrderDocDT.decLineTaxAmt + tblOrderDocDT.decLineTotExc) END AS [Price Incl], ISNULL(tblInv.bitItemNumConvUsed, 0) 
        AS [Using Item # Convention], ISNULL(tblInv.strItemSegment1, N'') AS [Item Segment 1], ISNULL(tblInv.strItemSegment2, N'') AS [Item Segment 2], ISNULL(tblInv.strItemSegment3, N'') AS [Item Segment 3], 
        ISNULL(tblInv.strItemSegment4, N'') AS [Item Segment 4], ISNULL(tblInv.strInvNumConv, N'') AS [Number Convention], tblInv.decStandardCost AS [Standard Cost], tblInv.decLastPPUnit AS [Last Received Cost], 
        tblOrderDoc.strCurrency AS [Currency Code], tblOrderDoc.decExchange AS [Exchange Rate], tblOrderDocDT.decPriceEaExcF AS [Price Excl FC], tblOrderDocDT.decLineTotExcF AS [Amount Excl FC], 
        CASE tblOrderDocDT.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS [Is Foreign Trans], CASE WHEN CHARINDEX(Char(13), tblOrderDoc.strShipTo) = 0 THEN ISNULL(tblOrderDoc.strShipTo, '') 
        ELSE REPLACE(LEFT(tblOrderDoc.strShipTo, CHARINDEX(Char(13), tblOrderDoc.strShipTo)), Char(13), '') END AS [Ship To], tblOrderDoc.strAddInfo AS [Additional Info], ISNULL(tblSalesOrderReasons.strSOReasonCode, N'') 
        AS [Order Cancellation Code], ISNULL(tblSalesOrderReasons.strSOReasonDesc, N'') AS [Order Cancellation Description], tblOrderDoc.strUserName AS [User],ISNULL(tblInv.strSubCategory,N'') As [Item Sub Category]
		,ISNULL(tblInv.strSubCategoryGroup,N'') As [Item Sub Category Group],tblCustomerCat.strDesc as [Customer Category Description]
		,tblInv.strCategory AS [Item Category]
		,tblInvCat.strDesc as [Item Category Description]  
		,tblInvSubCat.strDesc as [Item SubCategory Description]
		,tblInvGroupSubCat.strDesc as [Item SubCategory Group Description] 
		,tblOrderDoc.strField1 
		,tblOrderDoc.strField2 
		,tblOrderDoc.strField3 
		,tblOrderDoc.strField4 
		,tblOrderDoc.strField5 
		,tblOrderDoc.strField6 
		,tblOrderDoc.strField7 
		,tblOrderDoc.strField8 
		,tblOrderDoc.strField9 
		,tblOrderDoc.strField10
		,tblOrderDoc.strField11
		,tblOrderDoc.strField12
		,tblOrderDoc.dteField13
		,tblOrderDoc.dteField14
		,tblCustomers.strCountry as [Customer Country]
		,tblCustomers.strCountryCode as [Customer Country Code]
		FROM tblOrderDoc 
INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName 
INNER JOIN tblCurrency ON tblCustomers.strCurrency = tblCurrency.strCurrency 
INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID AND tblCurrency.strCurrency = tblOrderDocDT.strCurrency 
INNER JOIN tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber 
LEFT JOIN tblTaxCodeExt ON tblTaxCodeExt.strTaxCode = tblOrderDocDT.strTaxCode 
LEFT OUTER JOIN tblSalesOrderReasons ON tblOrderDoc.strSOReasonCode = tblSalesOrderReasons.strSOReasonCode
LEFT JOIN dbo.tblCustomerCat on dbo.tblCustomers.strCustCategory=dbo.tblCustomerCat.strCustCategory
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory And tblInvSubCat.strParentCategory = tblInv.strCategory
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup And tblInvGroupSubCat.strParentSubCategory=tblInv.strSubCategory And tblInvGroupSubCat.strParentCategory = tblInv.strCategory
WHERE (tblOrderDoc.strOrdDocID LIKE 'QU%')
and
(
case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL 
	 when @strDateFilter='Transaction Date' and @strDateFilterCriteria !='All' then  cast(tblOrderDoc.dteJournalDate as date) 
	 when @strDateFilter='Required Date' and @strDateFilterCriteria !='All' then cast(tblOrderDoc.dteRequired  as date)
     else @dateFromDate end 
		between
		 cast(@dateFromDate as date) and 
		 cast( @dateToDate as date))
UNION ALL
SELECT	ISNULL(tblCustomers.strCustDesc, N'') AS [Customer Name], tblOrderDocQ.strOrdDocID AS [Document #], tblOrderDocQ.strReference AS Reference, ISNULL(tblOrderDocQ.strSalesName, N'') AS [Sales Person], 
        tblOrderDocQ.dteJournalDate AS [Transaction Date], tblOrderDocQ.dteRequired AS [Required Date], 'Freehand Quotes' AS [Document Source], ISNULL(tblOrderDocQ.strStatusTypeCode, N'') AS [Status Type Code], 
        CASE tblOrderDocQ.bitCleared WHEN 0 THEN 'Open' ELSE 'Closed' END AS Status, DATENAME(year, tblOrderDocQ.dteJournalDate) AS Year, RIGHT('00' + CAST(MONTH(tblOrderDocQ.dteJournalDate) 
        AS varchar(2)), 2) + ' - ' + DATENAME(month, tblOrderDocQ.dteJournalDate) AS Month, REPLICATE('0', 2 - LEN(DATENAME(DAY, tblOrderDocQ.dteJournalDate))) + DATENAME(day, tblOrderDocQ.dteJournalDate) 
        AS Day, DATENAME(week, tblOrderDocQ.dteJournalDate) AS Week, DATENAME(quarter, tblOrderDocQ.dteJournalDate) AS Quarter, tblOrderDocQDT.strPartNumber AS [Item Code], 
        tblOrderDocQDT.strPartDesc AS [Item Description (Line)], tblInv.strDesc AS [Item Description (Masterfile)], tblOrderDocQDT.decQty AS Qty, tblOrderDocQDT.decPriceEaExc AS [Price Excl], 
        tblOrderDocQDT.decLineTotExc AS [Amount Excl], tblOrderDocQDT.decLineTaxAmt AS [Tax Amount], ISNULL(tblCustomers.strCustCategory, N'') AS [Customer Category Code], 
        CASE ISNULL(tblTaxCodeExt.bitIncluded,0) WHEN 1 THEN tblOrderDocQDT.decLineTotInc ELSE (tblOrderDocQDT.decLineTaxAmt + tblOrderDocQDT.decLineTotExc) END AS [Amount Incl], 
        CASE ISNULL(tblTaxCodeExt.bitIncluded,0) WHEN 1 THEN tblOrderDocQDT.decPriceEaInc ELSE (tblOrderDocQDT.decLineTaxAmt + tblOrderDocQDT.decLineTotExc) END AS [Price Incl], ISNULL(tblInv.bitItemNumConvUsed, 
        0) AS [Using Item # Convention], ISNULL(tblInv.strItemSegment1, N'') AS [Item Segment 1], ISNULL(tblInv.strItemSegment2, N'') AS [Item Segment 2], ISNULL(tblInv.strItemSegment3, N'') AS [Item Segment 3], 
        ISNULL(tblInv.strItemSegment4, N'') AS [Item Segment 4], ISNULL(tblInv.strInvNumConv, N'') AS [Number Convention], ISNULL(tblInv.decStandardCost, N'') AS [Standard Cost], ISNULL(tblInv.decLastPPUnit, N'') 
        AS [Last Received Cost], tblOrderDocQ.strCurrency AS [Currency Code], tblOrderDocQ.decExchange AS [Exchange Rate], tblOrderDocQDT.decPriceEaExcF AS [Price Excl FC], 
        tblOrderDocQDT.decLineTotExcF AS [Amount Excl FC], CASE tblOrderDocQDT.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS [Is Foreign Trans], CASE WHEN CHARINDEX(Char(13), tblOrderDocQ.strShipTo) 
        = 0 THEN ISNULL(tblOrderDocQ.strShipTo, '') ELSE REPLACE(LEFT(tblOrderDocQ.strShipTo, CHARINDEX(Char(13), tblOrderDocQ.strShipTo)), Char(13), '') END AS [Ship To], tblOrderDocQ.strAddInfo AS [Additional Info], 
        ISNULL(tblSalesOrderReasons.strSOReasonCode, N'') AS [Order Cancellation Code], ISNULL(tblSalesOrderReasons.strSOReasonDesc, N'') AS [Order Cancellation Description], 
        tblOrderDocQ.strUserName AS [User],ISNULL(tblInv.strSubCategory,N'') As [Item Sub Category],ISNULL(tblInv.strSubCategoryGroup,N'') As [Item Sub Category Group],tblCustomerCat.strDesc as [Customer Category Description]
		,tblInv.strCategory AS [Item Category]
		,tblInvCat.strDesc as [Item Category Description]  
		,tblInvSubCat.strDesc as [Item SubCategory Description]
		,tblInvGroupSubCat.strDesc as [Item SubCategory Group Description] 
		,tblOrderDocQ.strField1 
		,tblOrderDocQ.strField2 
		,tblOrderDocQ.strField3 
		,tblOrderDocQ.strField4 
		,tblOrderDocQ.strField5 
		,tblOrderDocQ.strField6 
		,tblOrderDocQ.strField7 
		,tblOrderDocQ.strField8 
		,tblOrderDocQ.strField9 
		,tblOrderDocQ.strField10
		,tblOrderDocQ.strField11
		,tblOrderDocQ.strField12
		,GETDATE() as [dteField13]
		,GETDATE() as [dteField14]
		,ISNULL(tblCustomers.strCountry,'') as [Customer Country]
		,ISNULL(tblCustomers.strCountryCode,'') as [Customer Country Code]
		FROM tblOrderDocQ 
LEFT OUTER JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName 
INNER JOIN tblCurrency ON tblOrderDocQ.strCurrency = tblCurrency.strCurrency 
INNER JOIN tblOrderDocQDT ON tblOrderDocQ.strOrdDocID = tblOrderDocQDT.strOrdDocID AND tblCurrency.strCurrency = tblOrderDocQDT.strCurrency 
LEFT OUTER JOIN tblInv ON tblOrderDocQDT.strPartNumber = tblInv.strPartNumber 
LEFT JOIN tblTaxCodeExt ON tblTaxCodeExt.strTaxCode = tblOrderDocQDT.strTaxCode 
LEFT OUTER JOIN tblSalesOrderReasons ON tblOrderDocQ.strSOReasonCode = tblSalesOrderReasons.strSOReasonCode
LEFT JOIN dbo.tblCustomerCat on dbo.tblCustomers.strCustCategory=dbo.tblCustomerCat.strCustCategory
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory And tblInvSubCat.strParentCategory = tblInv.strCategory
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup And tblInvGroupSubCat.strParentSubCategory=tblInv.strSubCategory And tblInvGroupSubCat.strParentCategory = tblInv.strCategory
where 
(
case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL 
	 when @strDateFilter='Transaction Date' and @strDateFilterCriteria !='All' then  cast(tblOrderDocQ.dteJournalDate as date) 
	 when @strDateFilter='Required Date' and @strDateFilterCriteria !='All' then cast(tblOrderDocQ.dteRequired as date)
     else @dateFromDate end 
		between
		 cast(@dateFromDate as date) and 
		 cast( @dateToDate as date))
		 
) as test

			
Declare @field1 as nvarchar(Max)= (select top(1) strRecDoc1 from tblOptFields)
Declare @field2 as nvarchar(Max)= (select top(1) strRecDoc2 from tblOptFields)
Declare @field3 as nvarchar(Max)= (select top(1) strRecDoc3 from tblOptFields)
Declare @field4 as nvarchar(Max)= (select top(1) strRecDoc4 from tblOptFields)
Declare @field5 as nvarchar(Max)= (select top(1) strRecDoc5 from tblOptFields)
Declare @field6 as nvarchar(Max)= (select top(1) strRecDoc6 from tblOptFields)
Declare @field7 as nvarchar(Max)= (select top(1) strRecDoc7 from tblOptFields)
Declare @field8 as nvarchar(Max)= (select top(1) strRecDoc8 from tblOptFields)
Declare @field9 as nvarchar(Max)= (select top(1) strRecDoc9 from tblOptFields)
Declare @field10 as nvarchar(Max)= (select top(1) strRecDoc10 from tblOptFields)
Declare @field11 as nvarchar(Max)= (select top(1) strRecDoc11 from tblOptFields)
Declare @field12 as nvarchar(Max)= (select top(1) strRecDoc12 from tblOptFields)
Declare @field13 as nvarchar(Max)= (select top(1) strRecDoc13 from tblOptFields)
Declare @field14 as nvarchar(Max)= (select top(1) strRecDoc14 from tblOptFields)

if LEN(@field1) > 0
begin
	set @field1 = CONCAT(@field1,' (Optional)')
	EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField1 ' , @field1 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField1' , 'Field 1 (Optional)' , 'COLUMN'
end

if LEN(@field2) >0
begin
set @field2 = CONCAT(@field2,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField2 ' , @field2 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField2' , 'Field 2 (Optional)' , 'COLUMN'
end

if LEN(@field3) >0
begin
set @field3 = CONCAT(@field3,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField3 ' , @field3 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField3' , 'Field 3 (Optional)' , 'COLUMN'
end

if LEN(@field4) >0
begin
set @field4 = CONCAT(@field4,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField4 ' , @field4 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField4' , 'Field 4 (Optional)' , 'COLUMN'
end

if LEN(@field5) >0
begin
set @field5 = CONCAT(@field5,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField5 ' , @field5 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField5' , 'Field 5 (Optional)' , 'COLUMN'
end

if LEN(@field6) >0
begin
set @field6 = CONCAT(@field6,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField6 ' , @field6 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField6' , 'Field 6 (Optional)' , 'COLUMN'
end

if LEN(@field7) >0
begin
set @field7 = CONCAT(@field7,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField7 ' , @field7 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField7' , 'Field 7 (Optional)' , 'COLUMN'
end

if LEN(@field8) >0
begin
set @field8 = CONCAT(@field8,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField8 ' , @field8 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField8' , 'Field 8 (Optional)' , 'COLUMN'
end

if LEN(@field9) >0
begin
set @field9 = CONCAT(@field9,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField9 ' , @field9 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField9' , 'Field 9 (Optional)' , 'COLUMN'
end

if LEN(@field10) >0
begin
set @field10 = CONCAT(@field10,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField10' , @field10, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField10' , 'Field 10 (Optional)' , 'COLUMN'
end

if LEN(@field11) >0
begin
set @field11 = CONCAT(@field11,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField11' , @field11, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField11' , 'Field 11 (Optional)' , 'COLUMN'
end

if LEN(@field12) >0
begin
set @field12 = CONCAT(@field12,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField12' , @field12, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesQuotes.strField12' , 'Field 12 (Optional)' , 'COLUMN'
end

if LEN(@field13) >0
begin
set @field13 = CONCAT(@field13,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesQuotes.dteField13' , @field13, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesQuotes.dteField13' , 'Field 13 (Optional)' , 'COLUMN'
end

if LEN(@field14) >0
begin
set @field14 = CONCAT(@field14,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesQuotes.dteField14' , @field14, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesQuotes.dteField14' , 'Field 14 (Optional)' , 'COLUMN'
end

Select * from Temp_SalesQuotes

drop table Temp_SalesQuotes
end
GO
/****** Object:  StoredProcedure [dbo].[spBiSalesVSPurchases]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************** End [spbiSalesOrders] ****************/

/************************** Start [spbiSalesVSPurchases] ****************/

CREATE PROCEDURE [dbo].[spBiSalesVSPurchases] 
(
@strDateFilter VARCHAR(100)=NULL,
@dateFromDate DateTime=NULL,
@dateToDate DateTime=NULL,
@strDateFilterCriteria VARCHAR(100)=NULL
)
AS
BEGIN

SELECT 'Sales' AS [Type]
	,tblInvoiceDocDT.strPartNumber AS [Item Code]
	,tblInvoiceDocDT.strPartDesc AS [Item Description]
	,tblInv.strDesc AS [Item Description (Masterfile)]
	,tblInv.strCategory AS [Item Category]
	,tblInvExt.strAcctSet AS [Account Set]
	,tblInvExt.strBinLoc AS [Bin Location]
	,tblInvoiceDocDT.strLocation AS [Location Name]
	,tblInvoiceDoc.dteJournalDate AS [Transaction Date]
	,tblInvoiceDoc.strInvDocID AS [Document #]
	,(tblInvoiceDocDT.decQty * -1.0000) AS Qty
	,tblInvoiceDocDT.decLineTotInc AS Amount
	,DATENAME(YEAR, tblInvoiceDoc.dteJournalDate) AS [Year]
	,RIGHT('00' + CAST(MONTH(tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, tblInvoiceDoc.dteJournalDate) AS [Month]
	,DATENAME(DAY, tblInvoiceDoc.dteJournalDate) AS [Day]
	,DATENAME(WEEK, tblInvoiceDoc.dteJournalDate) AS [Week]
	,DATENAME(QUARTER, tblInvoiceDoc.dteJournalDate) AS [Quarter]
	,ISNULL(tblInv.bitItemNumConvUsed, 0) AS [Using Item # Convention]
	,ISNULL(tblInv.strItemSegment1, '') AS [Item Segment 1]
	,ISNULL(tblInv.strItemSegment2, '') AS [Item Segment 2]
	,ISNULL(tblInv.strItemSegment3, '') AS [Item Segment 3]
	,ISNULL(tblInv.strItemSegment4, '') AS [Item Segment 4]
	,ISNULL(tblInv.strInvNumConv, '') AS [Number Convention]
	,ISNULL(tblInv.strSubCategory,'') As [Item Sub Category]
	,ISNULL(tblInv.strSubCategoryGroup,'') As [Item Sub Category Group]
	,tblInvCat.strDesc as [Item Category Description]  
	,tblInvSubCat.strDesc as [Item SubCategory Description]
	,tblInvGroupSubCat.strDesc as [Item SubCategory Group Description] 
FROM tblInvoiceDocDT
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = dbo.tblInv.strPartNumber
LEFT JOIN tblInvExt ON tblInv.strPartNumber = dbo.tblInvExt.strPartNumber AND tblInvoiceDocDT.strLocation = tblInvExt.strLocName
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory And tblInvSubCat.strParentCategory = tblInv.strCategory
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup And tblInvGroupSubCat.strParentSubCategory=tblInv.strSubCategory And tblInvGroupSubCat.strParentCategory = tblInv.strCategory
WHERE tblInvoiceDocDT.bitDiscountTax = 0
UNION ALL
SELECT 'Purchase' AS [Type]
	,tblInvoiceDocPDT.strPartNumber AS [Item Code]
	,tblInvoiceDocPDT.strPartDesc AS [Item Description]
	,tblInv.strDesc AS [Item Description (Masterfile)]
	,tblInv.strCategory AS [Item Category]
	,tblInvExt.strAcctSet AS [Account Set]
	,tblInvExt.strBinLoc AS [Bin Location]
	,tblInvoiceDocPDT.strLocation AS [Location Name]
	,tblInvoiceDocP.dteJournalDate AS [Transaction Date]
	,tblInvoiceDocP.strInvPDocID AS [Document #]
	,tblInvoiceDocPDT.decBuyQty AS Qty
	,(tblInvoiceDocPDT.decTotIncTax * -1.0000) AS Amount
	,DATENAME(YEAR, tblInvoiceDocP.dteJournalDate) AS [Year]
	,RIGHT('00' + CAST(MONTH(tblInvoiceDocP.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(MONTH, tblInvoiceDocP.dteJournalDate) AS [Month]
	,DATENAME(DAY, tblInvoiceDocP.dteJournalDate) AS [Day]
	,DATENAME(WEEK, tblInvoiceDocP.dteJournalDate) AS [Week]
	,DATENAME(QUARTER, tblInvoiceDocP.dteJournalDate) AS [Quarter]
	,ISNULL(tblInv.bitItemNumConvUsed, 0) AS [Using Item # Convention]
	,ISNULL(tblInv.strItemSegment1, '') AS [Item Segment 1]
	,ISNULL(tblInv.strItemSegment2, '') AS [Item Segment 2]
	,ISNULL(tblInv.strItemSegment3, '') AS [Item Segment 3]
	,ISNULL(tblInv.strItemSegment4, '') AS [Item Segment 4]
	,ISNULL(tblInv.strInvNumConv, '') AS [Number Convention]
	,ISNULL(tblInv.strSubCategory,'') As [Item Sub Category]
	,ISNULL(tblInv.strSubCategoryGroup,'') As [Item Sub Category Group]
	,tblInvCat.strDesc as [Item Category Description]  
	,tblInvSubCat.strDesc as [Item SubCategory Description]
	,tblInvGroupSubCat.strDesc as [Item SubCategory Group Description] 
FROM tblInvoiceDocPDT
INNER JOIN tblInvoiceDocP ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocP.strInvPDocID
INNER JOIN tblInv ON tblInvoiceDocPDT.strPartNumber = dbo.tblInv.strPartNumber
LEFT JOIN tblInvExt ON tblInv.strPartNumber = dbo.tblInvExt.strPartNumber AND tblInvoiceDocPDT.strLocation = tblInvExt.strLocName
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory And tblInvSubCat.strParentCategory = tblInv.strCategory
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup And tblInvGroupSubCat.strParentSubCategory=tblInv.strSubCategory And tblInvGroupSubCat.strParentCategory = tblInv.strCategory
WHERE tblInvoiceDocPDT.bitDiscountTax = 0
and 
(
case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL 
	 when @strDateFilter='Transaction Date' and @strDateFilterCriteria !='All' then  cast(tblInvoiceDocP.dteJournalDate as date) 
     else @dateFromDate end 
		between
		 cast(@dateFromDate as date) and 
		 cast( @dateToDate as date)
		 )

End
GO
/****** Object:  StoredProcedure [dbo].[SPBulkRFQ]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE Procedure [dbo].[SPBulkRFQ]
(
@QUERY VARCHAR(MAX) = NULL,
@WHERE_QUERY VARCHAR(MAX) = NULL,
@IS_CATEGORY VARCHAR(1) = 'N',
@ITM_COUNT INT = 0,@SLTITEM_COUNT INT = 0,
@IS_INACTIVE VARCHAR(1) = 'N',
@IS_ITEMS VARCHAR(1) = 'N',
@IS_SERVICE VARCHAR(1) = 'N',
@IS_ALL VARCHAR(1) = 'N',
@IS_OUTSTANDING VARCHAR(1) = 'N',
@IS_APPROVED VARCHAR(1) = 'N',
@SQSTART VARCHAR(25) = NULL,
@SQEND VARCHAR(25) = NULL,
@SQAPPROVED VARCHAR(1) = 'N',
@SQCategory VARCHAR(MAX) = NULL,
@SQPartNumber VARCHAR(MAX) = NULL
)
as
begin
SET @QUERY = 'SELECT 
tblOrderDocRFQ.strOrdRFQDocID, 
tblOrderDocRFQ.dteJournalDate, 
tblOrderDocRFQ.dteRequired, 
tblOrderDocRFQ.strAddInfo, 
tblOrderDocRFQ.strReference, 
tblOrderDocRFQDT.intLineNo, 
tblOrderDocRFQDT.strPartNumber, 
tblOrderDocRFQDT.strPartDesc, 
tblOrderDocRFQDT.decQty, 
ISNULL(tblOrderDocRFQDT.strVendName,'''') AS strVendName, 
tblOrderDocRFQDT.bitApproved, 
ISNULL(tblOrderDocRFQDT.strCurrency,'''') AS strCurrency, 
tblOrderDocRFQDT.decLinePriceEa, 
tblOrderDocRFQDT.decLineDiscPerc, 
tblOrderDocRFQDT.decLineDiscAmt, 
tblOrderDocRFQDT.decLineTotAmt 
FROM 
tblOrderDocRFQ 
INNER JOIN 
tblOrderDocRFQDT 
ON 
tblOrderDocRFQ.strOrdRFQDocID = tblOrderDocRFQDT.strOrdRFQDocID 
WHERE 
(tblOrderDocRFQ.dteJournalDate BETWEEN ''' + @SQStart + ''' AND ''' + @SQEnd + ''' )'
IF @IS_CATEGORY = 'Y'
BEGIN
IF @ITM_COUNT != @SLTITEM_COUNT 
BEGIN
SET @WHERE_QUERY = ISNULL(@WHERE_QUERY,'') + 'AND (tblOrderDocRFQDT.strPartNumber IN (SELECT strPartNumber FROM dbo.fnTblInvLocationsAll() tblInv WHERE strCategory IN (' + @SQCategory + ' ) ))'
END
IF @ITM_COUNT = @SLTITEM_COUNT 
BEGIN
IF @IS_INACTIVE = 'N'
BEGIN
SET @WHERE_QUERY = ISNULL(@WHERE_QUERY,'') + 'AND (tblOrderDocRFQDT.strPartNumber IN (SELECT strPartNumber FROM dbo.fnTblInvLocationsAll() tblInv WHERE strCategory IN (SELECT strCategory FROM tblInvCat WHERE (bitInactive = 0))))'
END
IF @IS_INACTIVE = 'Y'
BEGIN
SET @WHERE_QUERY = ISNULL(@WHERE_QUERY,'') + 'AND (tblOrderDocRFQDT.strPartNumber IN (SELECT strPartNumber FROM dbo.fnTblInvLocationsAll() tblInv WHERE strCategory IN (SELECT strCategory FROM tblInvCat)))'
END
END
END
IF @IS_ITEMS = 'Y'
BEGIN
IF @ITM_COUNT != @SLTITEM_COUNT 
BEGIN
SET @WHERE_QUERY = ISNULL(@WHERE_QUERY,'') + 'AND ( tblOrderDocRFQDT.strPartNumber IN (' + @SQPartNumber + ') )'
END
IF @ITM_COUNT = @SLTITEM_COUNT 
BEGIN
IF @IS_INACTIVE = 'N'
BEGIN
SET @WHERE_QUERY = ISNULL(@WHERE_QUERY,'') + 'AND ( tblOrderDocRFQDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE (intType = 1) AND (bitInactive = 0)))'
END
IF @IS_INACTIVE = 'Y'
BEGIN
SET @WHERE_QUERY = ISNULL(@WHERE_QUERY,'') + 'AND ( tblOrderDocRFQDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE (intType = 1)))'
END
END
END
IF @IS_SERVICE = 'Y'
BEGIN
IF @ITM_COUNT != @SLTITEM_COUNT 
BEGIN
SET @WHERE_QUERY = ISNULL(@WHERE_QUERY,'') + 'AND ( tblOrderDocRFQDT.strPartNumber IN (' + @SQPartNumber + ') )'
END
IF @ITM_COUNT = @SLTITEM_COUNT 
BEGIN
IF @IS_INACTIVE = 'N'
BEGIN
SET @WHERE_QUERY = ISNULL(@WHERE_QUERY,'') + 'AND ( tblOrderDocRFQDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE (intType = 4) AND (bitInactive = 0)))'
END
IF @IS_INACTIVE = 'Y'
BEGIN
SET @WHERE_QUERY = ISNULL(@WHERE_QUERY,'') + 'AND ( tblOrderDocRFQDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE (intType = 4)))'
END
END
END
IF @IS_ALL = 'Y'
BEGIN
SET @WHERE_QUERY = ISNULL(@WHERE_QUERY,'') + 'AND ( tblOrderDocRFQDT.strPartNumber IN (' + @SQPartNumber + ') )'
END
IF @IS_OUTSTANDING = 'Y'
BEGIN
SET @WHERE_QUERY = ISNULL(@WHERE_QUERY,'') + 'AND (tblOrderDocRFQDT.bitApproved = ' + @SQApproved + ')'
END
IF @IS_APPROVED = 'Y'
BEGIN
SET @WHERE_QUERY = ISNULL(@WHERE_QUERY,'') + 'AND (tblOrderDocRFQDT.bitApproved  = ' + @SQApproved + ')'
END
SET @QUERY = @QUERY + ISNULL(@WHERE_QUERY,'') + 'ORDER BY tblOrderDocRFQDT.bitApproved, tblOrderDocRFQ.strOrdRFQDocID, tblOrderDocRFQDT.intLineNo'
EXEC(@QUERY)
END
GO
/****** Object:  StoredProcedure [dbo].[SPCollectionLetters]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[SPCollectionLetters]    Script Date: 03-07-2018 09:54:00 AM ******/
CREATE PROCEDURE [dbo].[SPCollectionLetters]
(
@SQAsAt smalldatetime = NULL
)
AS
BEGIN 

	CREATE TABLE #TempCL (
	[strCustName] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[strCustDesc] [nvarchar] (200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[decTotalDue] [money] NOT NULL,
	[decCurrent] [money] NOT NULL,
	[decPeriod2] [money] NOT NULL,
	[decPeriod3] [money] NOT NULL,
	[decPeriod4] [money] NOT NULL,
	[decPeriod5] [money] NOT NULL)

	DECLARE @SQPeriod1 int,
			@SQPeriod2 int,
			@SQPeriod3 int

	SELECT	@SQPeriod1 = intRecPeriod1, 
			@SQPeriod2 = intRecPeriod2, 
			@SQPeriod3 = intRecPeriod3 
	FROM tblCoOpts

	INSERT INTO #TempCL
	SELECT	CUST.strCustName,
			CUST.strCustDesc,
			CASE DTL.bitIsForeign WHEN 0 THEN SUM(DTL.decAmount) ELSE SUM(DTL.decAmountF) END AS decTotalDue,
			ISNULL(SUM(CASE WHEN DATEDIFF(DAY, HDR.dteDueDate, @SQAsAt) <= 0 THEN CASE DTL.bitIsForeign WHEN 0 THEN DTL.decAmount ELSE DTL.decAmountF END ELSE 0 END), 0) AS decCurrent,
			ISNULL(SUM(CASE WHEN DATEDIFF(DAY, HDR.dteDueDate, @SQAsAt) > 0 AND DATEDIFF(DAY, HDR.dteDueDate, @SQAsAt) <= @SQPeriod1 THEN CASE DTL.bitIsForeign WHEN 0 THEN DTL.decAmount ELSE DTL.decAmountF END ELSE 0 END), 0) AS decPeriod2,
			ISNULL(SUM(CASE WHEN DATEDIFF(DAY, HDR.dteDueDate, @SQAsAt) > @SQPeriod1 AND DATEDIFF(DAY, HDR.dteDueDate, @SQAsAt) <= @SQPeriod2 THEN CASE DTL.bitIsForeign WHEN 0 THEN DTL.decAmount ELSE DTL.decAmountF END ELSE 0 END), 0) AS decPeriod3,
			ISNULL(SUM(CASE WHEN DATEDIFF(DAY, HDR.dteDueDate, @SQAsAt) > @SQPeriod2 AND DATEDIFF(DAY, HDR.dteDueDate, @SQAsAt) <= @SQPeriod3 THEN CASE DTL.bitIsForeign WHEN 0 THEN DTL.decAmount ELSE DTL.decAmountF END ELSE 0 END), 0) AS decPeriod4,
			ISNULL(SUM(CASE WHEN DATEDIFF(DAY, HDR.dteDueDate, @SQAsAt) > @SQPeriod3 THEN CASE DTL.bitIsForeign WHEN 0 THEN DTL.decAmount ELSE DTL.decAmountF END ELSE 0 END), 0) AS decPeriod5
	FROM tblCustTrans HDR 
	INNER JOIN tblCustTransDT DTL ON HDR.lngCustTrID = DTL.lngCustTrID 
	INNER JOIN tblCustomers CUST ON HDR.strCustName = CUST.strCustName 
	WHERE (CUST.decBalDue > 0 OR CUST.decBalDueF > 0)
	AND (DTL.bitReversed = 0)
	AND (DTL.dteJournalDate <= @SQAsAt)
	GROUP BY CUST.strCustName,
			 CUST.strCustDesc,
			 HDR.dteDueDate, 
			 DTL.bitIsForeign

	SELECT	strCustName,
			strCustDesc,
			SUM(ISNULL(decTotalDue,0)) AS decTotalDue,
			SUM(ISNULL(decCurrent,0)) AS decCurrent,
			SUM(ISNULL(decPeriod2,0)) AS decPeriod2,
			SUM(ISNULL(decPeriod3,0)) AS decPeriod3,
			SUM(ISNULL(decPeriod4,0)) AS decPeriod4,
			SUM(ISNULL(decPeriod5,0)) AS decPeriod5
	FROM #TempCL
	GROUP BY strCustName,
			 strCustDesc
	HAVING SUM(ISNULL(decTotalDue,0)) > 0
	ORDER BY strCustName,
			 strCustDesc

	DROP TABLE #TempCL
END
GO
/****** Object:  StoredProcedure [dbo].[SPCopyInvoiceMerge]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/************* [dbo].[SPFHQDeliveryCostData] End *************/

/************* [dbo].[SPCopyInvoiceMerge] Start *************/

CREATE PROCEDURE [dbo].[SPCopyInvoiceMerge] (
	@DocNumber AS VARCHAR(250) = NULL
	,@IsCustStockCodes BIT
	)
AS
BEGIN
	IF (@IsCustStockCodes = 1)
	BEGIN
		SELECT tblDocDT.*
			,tblInvoiceDocDTPrj.strProjNumber
			,tblProjects.strProjName
			,tblInv.strBarCode
			,tblInv.strBarCode2
			,(
				SELECT bitInvImgOnSI
				FROM tblCoOpts
				) AS bitShowImage
			,tblInvImg.imgData AS imgImage
			,tblDocDT.strPartExtendedDesc AS strExtendedDesc
			,tblInv.bitInvExtDescOnSI AS bitShowExtendedDesc
			,ISNULL(tblInvCustomer.strItemCode, '') AS strItemCode
			,ISNULL(tblInvCustomer.strItemDesc, '') AS strItemDesc
			,tblInvoiceDoc.strInvDocID AS tblInvoiceDoc_strInvDocID
			,tblInvoiceDoc.strCustName AS tblInvoiceDoc_strCustName
			,tblInvoiceDoc.dteJournalDate AS tblInvoiceDoc_dteJournalDate
			,tblInvoiceDoc.dteRequired AS tblInvoiceDoc_dteRequired
			,tblInvoiceDoc.strSoldTo AS tblInvoiceDoc_strSoldTo
			,tblInvoiceDoc.strShipTo AS tblInvoiceDoc_strShipTo
			,tblInvoiceDoc.strReference AS tblInvoiceDoc_strReference
			,tblInvoiceDoc.decTotal AS tblInvoiceDoc_decTotal
			,tblInvoiceDoc.strNotes AS tblInvoiceDoc_strNotes
			,tblInvoiceDoc.strSalesName AS tblInvoiceDoc_strSalesName
			,tblInvoiceDoc.strAddInfo AS tblInvoiceDoc_strAddInfo
			,tblInvoiceDoc.strTerm AS tblInvoiceDoc_strTerm
			,tblInvoiceDoc.strSubFormated AS tblInvoiceDoc_strSubFormated
			,tblInvoiceDoc.strDiscFormatted AS tblInvoiceDoc_strDiscFormatted
			,tblInvoiceDoc.strVATFormatted AS tblInvoiceDoc_strVATFormatted
			,tblInvoiceDoc.strTotFormatted AS tblInvoiceDoc_strTotFormatted
			,tblInvoiceDoc.strVAT AS tblInvoiceDoc_strVAT
			,tblinvoiceDoc.strDeliveryCostFormatted AS tblInvoiceDoc_strDeliveryCostFormatted
			,(
				SELECT STUFF((
							SELECT ',' + tblInvoiceDocDTSerial.strSerialNumber
							FROM tblInvoiceDocDTSerial
							INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTSerial.strInvDocID = tblInvoiceDocDT.strInvDocID
								AND tblInvoiceDocDTSerial.intLineNo = tblInvoiceDocDT.intLineNo
							LEFT JOIN tblInvSerialExt ON tblInvoiceDocDT.strPartNumber = tblInvSerialExt.strPartNumber
								AND tblInvoiceDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
							INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
							LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
							WHERE tblInvoiceDocDTSerial.strInvDocID = @DocNumber
								AND tblInvSerialTypes.bitPrintInv = 1
								AND tblInvoiceDocDT.intLineNo = tblDocDT.intLineNo
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strSerialNumber
			,(
				SELECT STUFF((
							SELECT ',' + TEMP.PartNumber
							FROM (
								SELECT COMP.strPartNumber AS PartNumber
								FROM tblInvoiceDocDT DTL
								INNER JOIN tblManBOM BOM ON DTL.strPartNumber = BOM.strPartNumber
									AND DTL.strLocation = BOM.strLocation
								INNER JOIN tblManBOMCompInv COMP ON BOM.lngManBOMID = COMP.lngManBOMID
								INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber
								INNER JOIN tblInv INV2 ON BOM.strPartNumber = INV2.strPartNumber
								WHERE (DTL.strInvDocID = @DocNumber)
									AND (BOM.bitInactive = 0)
									AND (BOM.bitPrintInv = 1)
									AND DTL.intLineNo = tblDocDT.intLineNo
									AND BOM.strPartNumber = tblDocDT.strPartNumber
								
								UNION ALL
								
								SELECT tblInvoiceDocDT.strPartNumber AS PartNumber
								FROM tblInvoiceDocDTBOM
								INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTBOM.strInvDocID = tblInvoiceDocDT.strInvDocID
									AND tblInvoiceDocDTBOM.intMainLineNo = tblInvoiceDocDT.intLineNo
								INNER JOIN tblInv ON tblInvoiceDocDTBOM.strPartItemNumber = tblInv.strPartNumber
								INNER JOIN tblInv Inv2 ON tblInvoiceDocDT.strPartNumber = Inv2.strPartNumber
								WHERE tblInvoiceDocDT.strInvDocID = @DocNumber
									AND tblInvoiceDocDT.intLineNo = tblDocDT.intLineNo
									AND Inv2.bitAutoBuild = 1
									AND Inv2.bitPrintComp = 1
								GROUP BY tblInvoiceDocDT.strPartNumber
									,Inv2.strDesc
									,tblInvoiceDocDTBOM.strPartItemNumber
									,tblInv.strDesc
									,tblInvoiceDocDT.intLineNo
									,tblInv.strUnitOfMeasure
								) AS TEMP
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strManBOMPartNumber
			,(
				SELECT STUFF((
							SELECT ',' + tblInvoiceDocDT.strPartNumber
							FROM tblInvoiceDocDT
							INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
							INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
							LEFT JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
								AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
							LEFT JOIN tblProjects ON tblInvoiceDocDTPrj.strProjNumber = tblProjects.strProjNumber
							LEFT JOIN tblInvImg ON tblInvoiceDocDT.strPartNumber = tblInvImg.strPartNumber
								AND tblInvImg.bitDefaultImage = 1
							LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
								AND tblInvoiceDoc.strCustName = tblInvCustomer.strCustName
							WHERE tblInvoiceDocDT.strInvDocID = @DocNumber
								AND tblInvoiceDocDT.bitDiscountTax = 0
								AND tblInvoiceDocDT.bitDelCost = 1
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strDeliveryCostPartNumber
		FROM tblInvoiceDocDT tblDocDT
		INNER JOIN tblInvoiceDoc ON tblDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
		INNER JOIN tblInv ON tblDocDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvoiceDocDTPrj ON tblDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
			AND tblDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
		LEFT JOIN tblProjects ON tblInvoiceDocDTPrj.strProjNumber = tblProjects.strProjNumber
		LEFT JOIN tblInvImg ON tblDocDT.strPartNumber = tblInvImg.strPartNumber
			AND tblInvImg.bitDefaultImage = 1
		LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
			AND tblInvoiceDoc.strCustName = tblInvCustomer.strCustName
		WHERE tblDocDT.strInvDocID = @DocNumber
			AND tblDocDT.bitDiscountTax = 0
			AND tblDocDT.bitDelCost = 0
		ORDER BY tblDocDT.intLineNo
	END
	ELSE
	BEGIN
		SELECT tblDocDT.*
			,tblInvoiceDocDTPrj.strProjNumber
			,tblProjects.strProjName
			,tblInv.strBarCode
			,tblInv.strBarCode2
			,(
				SELECT bitInvImgOnSI
				FROM tblCoOpts
				) AS bitShowImage
			,tblInvImg.imgData AS imgImage
			,tblDocDT.strPartExtendedDesc AS strExtendedDesc
			,tblInv.bitInvExtDescOnSI AS bitShowExtendedDesc
			,'' AS strItemCode
			,'' AS strItemDesc
			,tblInvoiceDoc.strInvDocID AS tblInvoiceDoc_strInvDocID
			,tblInvoiceDoc.strCustName AS tblInvoiceDoc_strCustName
			,tblInvoiceDoc.dteJournalDate AS tblInvoiceDoc_dteJournalDate
			,tblInvoiceDoc.dteRequired AS tblInvoiceDoc_dteRequired
			,tblInvoiceDoc.strSoldTo AS tblInvoiceDoc_strSoldTo
			,tblInvoiceDoc.strShipTo AS tblInvoiceDoc_strShipTo
			,tblInvoiceDoc.strReference AS tblInvoiceDoc_strReference
			,tblInvoiceDoc.decTotal AS tblInvoiceDoc_decTotal
			,tblInvoiceDoc.strNotes AS tblInvoiceDoc_strNotes
			,tblInvoiceDoc.strSalesName AS tblInvoiceDoc_strSalesName
			,tblInvoiceDoc.strAddInfo AS tblInvoiceDoc_strAddInfo
			,tblInvoiceDoc.strTerm AS tblInvoiceDoc_strTerm
			,tblInvoiceDoc.strSubFormated AS tblInvoiceDoc_strSubFormated
			,tblInvoiceDoc.strDiscFormatted AS tblInvoiceDoc_strDiscFormatted
			,tblInvoiceDoc.strVATFormatted AS tblInvoiceDoc_strVATFormatted
			,tblInvoiceDoc.strTotFormatted AS tblInvoiceDoc_strTotFormatted
			,tblInvoiceDoc.strVAT AS tblInvoiceDoc_strVAT
			,tblinvoiceDoc.strDeliveryCostFormatted AS tblInvoiceDoc_strDeliveryCostFormatted
			,(
				SELECT STUFF((
							SELECT ',' + tblInvoiceDocDTSerial.strSerialNumber
							FROM tblInvoiceDocDTSerial
							INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTSerial.strInvDocID = tblInvoiceDocDT.strInvDocID
								AND tblInvoiceDocDTSerial.intLineNo = tblInvoiceDocDT.intLineNo
							LEFT JOIN tblInvSerialExt ON tblInvoiceDocDT.strPartNumber = tblInvSerialExt.strPartNumber
								AND tblInvoiceDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
							INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
							LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
							WHERE tblInvoiceDocDTSerial.strInvDocID = @DocNumber
								AND tblInvSerialTypes.bitPrintInv = 1
								AND tblInvoiceDocDT.intLineNo = tblDocDT.intLineNo
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strSerialNumber
			,(
				SELECT STUFF((
							SELECT ',' + TEMP.PartNumber
							FROM (
								SELECT COMP.strPartNumber AS PartNumber
								FROM tblInvoiceDocDT DTL
								INNER JOIN tblManBOM BOM ON DTL.strPartNumber = BOM.strPartNumber
									AND DTL.strLocation = BOM.strLocation
								INNER JOIN tblManBOMCompInv COMP ON BOM.lngManBOMID = COMP.lngManBOMID
								INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber
								INNER JOIN tblInv INV2 ON BOM.strPartNumber = INV2.strPartNumber
								WHERE (DTL.strInvDocID = @DocNumber)
									AND (BOM.bitInactive = 0)
									AND (BOM.bitPrintInv = 1)
									AND DTL.intLineNo = tblDocDT.intLineNo
									AND BOM.strPartNumber = tblDocDT.strPartNumber
								
								UNION ALL
								
								SELECT tblInvoiceDocDT.strPartNumber AS PartNumber
								FROM tblInvoiceDocDTBOM
								INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTBOM.strInvDocID = tblInvoiceDocDT.strInvDocID
									AND tblInvoiceDocDTBOM.intMainLineNo = tblInvoiceDocDT.intLineNo
								INNER JOIN tblInv ON tblInvoiceDocDTBOM.strPartItemNumber = tblInv.strPartNumber
								INNER JOIN tblInv Inv2 ON tblInvoiceDocDT.strPartNumber = Inv2.strPartNumber
								WHERE tblInvoiceDocDT.strInvDocID = @DocNumber
									AND tblInvoiceDocDT.intLineNo = tblDocDT.intLineNo
									AND Inv2.bitAutoBuild = 1
									AND Inv2.bitPrintComp = 1
								GROUP BY tblInvoiceDocDT.strPartNumber
									,Inv2.strDesc
									,tblInvoiceDocDTBOM.strPartItemNumber
									,tblInv.strDesc
									,tblInvoiceDocDT.intLineNo
									,tblInv.strUnitOfMeasure
								) AS TEMP
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strManBOMPartNumber
			,(
				SELECT STUFF((
							SELECT ',' + tblInvoiceDocDT.strPartNumber
							FROM tblInvoiceDocDT
							INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
							LEFT JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
								AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
							LEFT JOIN tblProjects ON tblInvoiceDocDTPrj.strProjNumber = tblProjects.strProjNumber
							LEFT JOIN tblInvImg ON tblInvoiceDocDT.strPartNumber = tblInvImg.strPartNumber
								AND tblInvImg.bitDefaultImage = 1
							WHERE tblInvoiceDocDT.strInvDocID = @DocNumber
								AND tblInvoiceDocDT.bitDiscountTax = 0
								AND tblInvoiceDocDT.bitDelCost = 1
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strDeliveryCostPartNumber
		--FROM tblInvoiceDocDT tblDocDT
		--INNER JOIN tblInv ON tblDocDT.strPartNumber = tblInv.strPartNumber
		FROM tblInvoiceDocDT tblDocDT
		INNER JOIN tblInvoiceDoc ON tblDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
		INNER JOIN tblInv ON tblDocDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvoiceDocDTPrj ON tblDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
			AND tblDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
		LEFT JOIN tblProjects ON tblInvoiceDocDTPrj.strProjNumber = tblProjects.strProjNumber
		LEFT JOIN tblInvImg ON tblDocDT.strPartNumber = tblInvImg.strPartNumber
			AND tblInvImg.bitDefaultImage = 1
		WHERE tblDocDT.strInvDocID = @DocNumber
			AND tblDocDT.bitDiscountTax = 0
			AND tblDocDT.bitDelCost = 0
		ORDER BY tblDocDT.intLineNo
	END
			-- SELECT 
			--   tblInvoiceDoc.strInvDocID
			--     ,tblInvoiceDoc.dteJournalDate
			--     ,tblInvoiceDoc.dteRequired
			--     ,tblInvoiceDoc.strSoldTo
			--  ,tblInvoiceDoc.strShipTo
			--  ,tblInvoiceDoc.strReference
			--  ,tblInvoiceDoc.decTotal
			--  ,tblInvoiceDoc.strNotes
			--  ,tblInvoiceDoc.strSalesName
			--  ,tblInvoiceDoc.strAddInfo
			--  ,tblInvoiceDoc.strTerm
			--  ,tblInvoiceDoc.strSubFormated
			--  ,tblInvoiceDoc.strVATFormatted
			--  ,tblInvoiceDoc.strTotFormatted
			--  ,tblInvoiceDoc.strDiscFormatted
			--  ,tblInvoiceDoc.strVAT
			--  ,tblInvoiceDoc.strDeliveryCostFormatted	 
			-- ,CASE WHEN tblInvoiceDoc.decTotal < 0 or LEFT(tblInvoiceDoc.strInvDocID, 2) = 'CN' THEN 'COPY Credit Note' ELSE 'COPY TAX INVOICE' END AS DocTitle
			-- ,tblInvoiceDocDT.strInvDocID As strInvDocIDDT
			-- ,tblInvoiceDocDT.intLineNo
			-- ,tblInvoiceDocDT.strPartDesc
			-- ,tblInvoiceDocDT.decQty
			-- ,tblInvoiceDocDT.strUnit
			-- ,tblInvoiceDocDT.decLineTaxAmt
			-- ,tblInvoiceDocDT.decPriceEaInc
			-- ,tblInvoiceDocDT.decLineTotInc
			-- ,tblInvoiceDocDT.bitIsForeign
			-- ,tblInvoiceDocDT.decLineDiscAmtF
			-- ,tblInvoiceDocDT.decEaIncTaxF
			-- ,tblInvoiceDocDT.decTotIncTaxF
			-- ,tblInvoiceDocDT.decLineDiscAmt
			-- ,tblInvoiceDocDT.strPartExtendedDesc
			-- ,tblInv.bitInvExtDescOnSI AS bitShowExtendedDesc
			-- ,(CASE 
			--	WHEN tblInvoiceDocDT.bitIsForeign = 0
			--		THEN tblInvoiceDocDT.decPriceEaInc
			--	ELSE tblInvoiceDocDT.decEaIncTaxF
			--	END) As decPriceEaIncDT
			--,(CASE 
			--	WHEN tblInvoiceDocDT.bitIsForeign = 0
			--		THEN tblInvoiceDocDT.decLineDiscAmt
			--	ELSE tblInvoiceDocDT.decLineDiscAmtF
			--	END) As decLineDiscAmtDT
			--,(CASE 
			--	WHEN tblInvoiceDocDT.bitIsForeign = 0
			--		THEN tblInvoiceDocDT.decLineTaxAmt
			--	ELSE tblInvoiceDocDT.decLineTaxAmtF
			--	END) As decLineTaxAmtDT
			--,(CASE 
			--	WHEN tblInvoiceDocDT.bitIsForeign = 0
			--		THEN tblInvoiceDocDT.decLineTotInc
			--	ELSE tblInvoiceDocDT.decTotIncTaxF
			--	END) As decLineTotIncDT
			--	,(
			--			SELECT bitInvImgOnSI
			--			FROM tblCoOpts
			--			) AS bitShowImageDT
			--FROM tblInvoiceDoc 
			--INNER JOIN tblInvoiceDocDT on tblInvoiceDoc.strInvDocId =tblInvoiceDocDT.strInvDocID   
			--INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber		
			--WHERE tblInvoiceDocDT.strInvDocID = @DocNumber
			--	AND tblInvoiceDocDT.bitDiscountTax = 0
			--ORDER BY tblInvoiceDocDT.intLineNo 
END
GO
/****** Object:  StoredProcedure [dbo].[SPCreditRequest]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*************End [dbo].[GettblManBOMDataForSOReport] *************/

/*************Start [dbo].[SPCreditRequest] *************/

CREATE PROCEDURE [dbo].[SPCreditRequest]
@SQDocNumber AS VARCHAR(250) = NULL,
@IsCustStockCodes AS BIT

AS
BEGIN

		IF (@IsCustStockCodes = 1)
	BEGIN	
		SELECT tblOrderDocDT.*
	,tblOrderDocDTPrj.strProjNumber
	,tblProjects.strProjName
	,ISNULL(tblInv.decSumAvail, 0) AS decSumAvail
	,ISNULL(tblInv.strBinLoc, '') AS strBinLoc
	,tblInv.strBarCode
	,tblInv.strBarCode2
	,(
		SELECT bitInvImgOnCR
		FROM tblCoOpts
		) AS bitShowImage
	,tblInvImg.imgData AS imgImage
	,tblOrderDocDT.strPartExtendedDesc AS strExtendedDesc
	,tblInv.bitInvExtDescOnCR AS bitShowExtendedDesc
	,ISNULL(tblInvCustomer.strItemCode, '') AS strItemCode
	,ISNULL(tblInvCustomer.strItemDesc, '') AS strItemDesc
	,(
	SELECT STUFF((
					SELECT ',' + tblOrderDocDTSerial.strSerialNumber	
	FROM tblOrderDocDTSerial
	INNER JOIN tblOrderDocDT ON tblOrderDocDTSerial.strOrdDocID = tblOrderDocDT.strOrdDocID
		AND tblOrderDocDTSerial.intLineNo = tblOrderDocDT.intLineNo
	LEFT JOIN tblInvSerialExt ON tblOrderDocDT.strPartNumber = tblInvSerialExt.strPartNumber
		AND tblOrderDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
	INNER JOIN tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblOrderDocDTSerial.strOrdDocID = @SQDocNumber
		AND tblInvSerialTypes.bitPrintInv = 1
	ORDER BY tblOrderDocDTSerial.intLineNo
	FOR XML PATH('')
					), 1, 1, '')
				) AS tblDADTS_strSerialNumber
	,(
	SELECT STUFF((
							SELECT ',' + tblOrderDocDT.strPartNumber
	FROM fnBaseTblOrderDocDT() tblOrderDocDT
	INNER JOIN tblOrderDoc ON tblOrderDocDT.strOrdDocID = tblOrderDoc.strOrdDocID
	LEFT JOIN fnTblInvForLocJoin() tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
		AND tblOrderDocDT.strLocation = tblInv.strLocName
	LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
		AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
	LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
	LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
		AND tblInvImg.bitDefaultImage = 1
	LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
		AND tblOrderDoc.strCustName = tblInvCustomer.strCustName
	WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
		AND tblOrderDocDT.bitDiscountTax = 0
		AND tblOrderDocDT.bitDelCost = 1
			FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strDeliveryCostPartNumber
				
	FROM fnBaseTblOrderDocDT() tblOrderDocDT
	INNER JOIN tblOrderDoc ON tblOrderDocDT.strOrdDocID = tblOrderDoc.strOrdDocID
	LEFT JOIN fnTblInvForLocJoin() tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
		AND tblOrderDocDT.strLocation = tblInv.strLocName
	LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
		AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
	LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
	LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
		AND tblInvImg.bitDefaultImage = 1
	LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
		AND tblOrderDoc.strCustName = tblInvCustomer.strCustName
	WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
		AND tblOrderDocDT.bitDiscountTax = 0
		AND tblOrderDocDT.bitDelCost = 0
	ORDER BY tblOrderDocDT.intLineNo
	END
	ELSE
	BEGIN
		SELECT tblOrderDocDT.*
	,tblOrderDocDTPrj.strProjNumber
	,tblProjects.strProjName
	,ISNULL(tblInv.decSumAvail, 0) AS decSumAvail
	,ISNULL(tblInv.strBinLoc, '') AS strBinLoc
	,tblInv.strBarCode
	,tblInv.strBarCode2
	,(
		SELECT bitInvImgOnCR
		FROM tblCoOpts
		) AS bitShowImage
	,tblInvImg.imgData AS imgImage
	,tblOrderDocDT.strPartExtendedDesc AS strExtendedDesc
	,tblInv.bitInvExtDescOnCR AS bitShowExtendedDesc
	,'' AS strItemCode
	,'' AS strItemDesc
	,(
	SELECT STUFF((
					SELECT ',' + tblOrderDocDTSerial.strSerialNumber	
	FROM tblOrderDocDTSerial
	INNER JOIN tblOrderDocDT ON tblOrderDocDTSerial.strOrdDocID = tblOrderDocDT.strOrdDocID
		AND tblOrderDocDTSerial.intLineNo = tblOrderDocDT.intLineNo
	LEFT JOIN tblInvSerialExt ON tblOrderDocDT.strPartNumber = tblInvSerialExt.strPartNumber
		AND tblOrderDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
	INNER JOIN tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblOrderDocDTSerial.strOrdDocID = @SQDocNumber
		AND tblInvSerialTypes.bitPrintInv = 1
	ORDER BY tblOrderDocDTSerial.intLineNo
	FOR XML PATH('')
					), 1, 1, '')
			) AS tblDADTS_strSerialNumber
	,(
				SELECT STUFF((
							SELECT ',' +tblOrderDocDT.strPartNumber	
	FROM fnBaseTblOrderDocDT() tblOrderDocDT
	LEFT JOIN fnTblInvForLocJoin() tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
		AND tblOrderDocDT.strLocation = tblInv.strLocName
	LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
		AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
	LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
	LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
		AND tblInvImg.bitDefaultImage = 1
	WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
		AND tblOrderDocDT.bitDiscountTax = 0
		AND tblOrderDocDT.bitDelCost = 1
			FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strDeliveryCostPartNumber

	FROM fnBaseTblOrderDocDT() tblOrderDocDT
	LEFT JOIN fnTblInvForLocJoin() tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
		AND tblOrderDocDT.strLocation = tblInv.strLocName
	LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
		AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
	LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
	LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
		AND tblInvImg.bitDefaultImage = 1
	WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
		AND tblOrderDocDT.bitDiscountTax = 0
		AND tblOrderDocDT.bitDelCost = 0
	ORDER BY tblOrderDocDT.intLineNo
    END
END
GO
/****** Object:  StoredProcedure [dbo].[spCustomerTradingTimes_Search]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[spCustomerTradingTimes_Search]
			-- Add the parameters for the stored procedure here
			@SQstrCustName nvarchar(50),
			@SQstrEnqType nvarchar(50)
		AS
		BEGIN
			-- SET NOCOUNT ON added to prevent extra result sets from
			-- interfering with SELECT statements.
			SET NOCOUNT ON;

			-- Insert statements for procedure here
			SELECT 
				*
			FROM
				tblCustomerTradingTimes
			WHERE
				strCustName = @SQstrCustName AND
				strEnqType = @SQstrEnqType AND
				bitEnabled = 1
		END
		
GO
/****** Object:  StoredProcedure [dbo].[SPCustStatements]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE Procedure [dbo].[SPCustStatements]
(
@Opt as int=0,
@SQCustID as varchar(50) = NULL,
@SQTransType as varchar(50) = NULL,
@SQintTransType as varchar(50) = NULL,
@SQConsolidated as varchar(1) = NULL,
@SQStart VARCHAR(25) = NULL,
@SQFinish VARCHAR(25) = NULL,
@SQAsAt VARCHAR(25) = NULL,
@SQPeriod1 VARCHAR(25) = NULL,
@SQPeriod2 VARCHAR(25) = NULL,
@SQPeriod3 VARCHAR(25) = NULL,
@IschkUseCalAge VARCHAR(1) = 'N',
@IsoptShowDoc VARCHAR(1) = 'N',
@SQPaidIn VARCHAR(25) = NULL
)
as
begin


 if @Opt=1
 begin
   SELECT * FROM tblCompany
 end


  if @Opt =2 
 begin

	IF @IschkUseCalAge = 'N'
	BEGIN
		IF @IsoptShowDoc = 'N'
		BEGIN
		
             SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment,'') END AS strInvDepNumber, CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END END, MASTERTABLE.dteDueDate, tblCustTransDT.dteJournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END, MASTERTABLE.dteJournalDate,	ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID),'') AS Expr2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) <= 0 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) > 0 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) <= @SQPeriod1 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) > @SQPeriod1 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) <= @SQPeriod2 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) > @SQPeriod2 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) <= @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod4, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) > @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod5, ISNULL(tblCustPay.lngJourID, 0), MASTERTABLE.strCustName, tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
             WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated)))
             AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) ORDER BY tblCustTransDT.intTransType, tblCustTransDT.dteJournalDate

		END

		IF @IsoptShowDoc = 'Y'
		BEGIN
		
            SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment,'') END AS strInvDepNumber, CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END END, tblCustTransDT.dteJournalDate, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END, MASTERTABLE.dteJournalDate,	ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID),'') AS Expr2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAt) <= 0 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAt) > 0 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAt) <= @SQPeriod1 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAt) > @SQPeriod1 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAt) <= @SQPeriod2 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAt) > @SQPeriod2 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAt) <= @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod4, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAt) > @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod5, ISNULL(tblCustPay.lngJourID, 0), tblCustomers.strCustName, tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
            WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated)))
            AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) ORDER BY tblCustTransDT.intTransType, tblCustTransDT.dteJournalDate

	    END
	END

   IF @IschkUseCalAge = 'Y'
	BEGIN
	IF @IsoptShowDoc = 'N'
	BEGIN
          SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment,'') END AS strInvDepNumber, CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END END, MASTERTABLE.dteDueDate, tblCustTransDT.dteJournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END, MASTERTABLE.dteJournalDate,	ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID),'') AS Expr2, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) >= 0 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = -1 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod2, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = -2 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = -3 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod4, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) <= -4 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod5, ISNULL(tblCustPay.lngJourID, 0), MASTERTABLE.strCustName, tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
          WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated)))
          AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) ORDER BY tblCustTransDT.intTransType, tblCustTransDT.dteJournalDate
	END

	IF @IsoptShowDoc = 'Y'
	BEGIN
         SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment,'') END AS strInvDepNumber, CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END END, tblCustTransDT.dteJournalDate, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END, MASTERTABLE.dteJournalDate,	ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID),'') AS Expr2, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) >= 0 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = -1 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod2, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = -2 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = -3 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod4, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) <= -4 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod5, ISNULL(tblCustPay.lngJourID, 0), MASTERTABLE.strCustName, tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
         WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated)))
         AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) ORDER BY tblCustTransDT.intTransType, tblCustTransDT.dteJournalDate
	END
	END

 end

 if @Opt =3
 begin

		 SELECT 
			  Z.Reference, 
			  Z.strInvDocID, 
			  Z.dteJournalDateDTL, 
			  Z.dteDueDate, 
			  Z.TransType, 
			  SUM(Z.decAmount), 
			  Z.dteJournalDateHDR, 
			  Z.strSalesName, 
			  Z.strCustName, 
			  Z.strCustDesc,
			  Z.CntTransID
		FROM 
			  (SELECT 
					 CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment,'') END AS Reference, 
					 CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END ELSE ISNULL(tblCustPay.strSource, '') END AS strInvDocID,
					 tblCustTransDT1.dteJournalDate AS dteJournalDateDTL, 
					 CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.dteDueDate ELSE tblCustPay.dteJournalDate END AS dteDueDate, 
					 CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.intTransType ELSE @SQTransType END AS TransType, 
					 CASE tblCustTransDT1.bitIsForeign WHEN 0 THEN tblCustTransDT1.decAmount ELSE tblCustTransDT1.decAmountF END AS decAmount, 
					 CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.dteJournalDate ELSE tblCustPay.dteJournalDate END AS dteJournalDateHDR,
					 CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID),'') ELSE '' END AS strSalesName, 
					 ISNULL(tblCustPay.lngJourID, 0) AS lngJourID, MASTERTABLE.strCustName, tblCustomers.strCustDesc,(SELECT COUNT(lngCustTrID) FROM tblCustTransDT WHERE lngCustTrID = tblCustTransDT1.lngCustTrID ) AS CntTransID FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT AS tblCustTransDT1 ON MASTERTABLE.lngCustTrID = tblCustTransDT1.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT1.lngCustPayID = tblCustPay.lngCustPayID

		WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated))) AND (tblCustTransDT1.bitReversed = 0) AND (tblCustTransDT1.dteJournalDate BETWEEN @SQStart AND @SQFinish)) Z 
		GROUP BY Z.Reference, Z.strInvDocID, Z.dteJournalDateDTL, Z.dteDueDate, Z.TransType, Z.dteJournalDateHDR, Z.strSalesName, Z.strCustName, Z.strCustDesc,Z.CntTransID ORDER BY Z.strCustName, Z.dteJournalDateDTL, Z.TransType, Z.strInvDocID

 end

  if @Opt =4
 begin
 	IF @IschkUseCalAge = 'N'
	BEGIN
		IF @IsoptShowDoc = 'N'
		BEGIN

		SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment,'') END AS strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END END, MASTERTABLE.dteDueDate, tblCustTransDT.dteJournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END, MASTERTABLE.dteJournalDate,	ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID),'') AS Expr2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) <= 0 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) > 0 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) <= @SQPeriod1 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) > @SQPeriod1 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) <= @SQPeriod2 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) > @SQPeriod2 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) <= @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod4, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) > @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod5, ISNULL(tblCustPay.lngJourID, 0), MASTERTABLE.strCustName, tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
		WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated)))
		AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) ORDER BY tblCustTransDT.intTransType, tblCustTransDT.dteJournalDate

		END

			IF @IsoptShowDoc = 'Y'
		BEGIN

        SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment,'') END AS strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END END, tblCustTransDT.dteJournalDate, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END, MASTERTABLE.dteJournalDate,	ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID),'') AS Expr2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAt) <= 0 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAt) > 0 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAt) <= @SQPeriod1 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAt) > @SQPeriod1 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAt) <= @SQPeriod2 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAt) > @SQPeriod2 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAt) <= @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod4, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAt) > @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod5, ISNULL(tblCustPay.lngJourID, 0), tblCustomers.strCustName, tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
        WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated)))
        AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) ORDER BY tblCustTransDT.intTransType, tblCustTransDT.dteJournalDate

		END
 END

 IF @IschkUseCalAge = 'Y'
	BEGIN
		IF @IsoptShowDoc = 'N'
		BEGIN

        SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment,'') END AS strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END END, MASTERTABLE.dteDueDate, tblCustTransDT.dteJournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END, MASTERTABLE.dteJournalDate,	ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID),'') AS Expr2, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) >= 0 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = -1 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod2, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = -2 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = -3 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod4, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) <= -4 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod5, ISNULL(tblCustPay.lngJourID, 0), MASTERTABLE.strCustName, tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
        WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated)))
        AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) ORDER BY tblCustTransDT.intTransType, tblCustTransDT.dteJournalDate

		END

		IF @IsoptShowDoc = 'Y'
		BEGIN

        SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment,'') END AS strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END END, tblCustTransDT.dteJournalDate, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END, MASTERTABLE.dteJournalDate,	ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID),'') AS Expr2, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) >= 0 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = -1 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod2, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = -2 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = -3 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod4, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) <= -4 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod5, ISNULL(tblCustPay.lngJourID, 0), MASTERTABLE.strCustName, tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
        WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated)))
        AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) ORDER BY tblCustTransDT.intTransType, tblCustTransDT.dteJournalDate

		END

    END

 end
 
 
 if @Opt =5 
 begin

		SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment,'') END AS strInvDepNumber, CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END AS strInvDocID, tblCustTransDT.dteJournalDate AS dteJournalDateDTL, MASTERTABLE.dteDueDate AS dteDueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS decAmount, MASTERTABLE.dteJournalDate AS dteJournalDateHDR, ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID),'') AS strSalesName, ISNULL(tblCustPay.lngJourID, 0) AS lngJourID, MASTERTABLE.strCustName, tblCustomers.strCustDesc 
		FROM tblCustTrans AS MASTERTABLE 
		INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID 
		INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName 
		LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
		WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID  AND intNAPrintMethod = @SQConsolidated))) 
		AND (tblCustTransDT.bitReversed = 0) 
		AND (tblCustTransDT.dteJournalDate BETWEEN @SQStart AND @SQFinish) 
		ORDER BY MASTERTABLE.strCustName, tblCustTransDT.dteJournalDate, tblCustTransDT.intTransType, CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END

 end

 end

GO
/****** Object:  StoredProcedure [dbo].[SPCustStatementsSetup]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPCustStatementsSetup]
(
@SQType int = 0,
@SQDate smalldatetime = NULL,
@SQBPTools bit = 0,
@SQUserName nvarchar(20) = NULL,
@SQInactive bit = 0,
@SQIsHP bit = 0,
@SQTerm nvarchar(50) = NULL, 
@SQOmit int = 0,
@SQBalance money = 0,
@SQSearch bit = 0,
@SQSearchBy nvarchar(250) = NULL,
@SQBalIncludeSO bit = 0,
@SQOpenSalesOrders bit = 0,
@SQSortType nvarchar(20) = NULL
)
AS
BEGIN

	CREATE TABLE #TMP_Cust (
	[strCustName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[strParentCust] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
	[bitInActive] [bit] NOT NULL,
	[strCustCategory] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
	[strTerm] [nvarchar](50) NOT NULL)

	INSERT INTO #TMP_Cust
	SELECT	strCustName,
			CASE WHEN LEN(strParentCust) = 0 THEN NULL ELSE strParentCust END,
			bitInActive,
			strCustCategory,
			strTerm
	FROM tblCustomers

	IF @SQType = 0
	BEGIN

		IF @SQSearch = 0
		BEGIN
	
			SELECT	intDept, 
					strDesc 
			FROM tblDepartments 
			WHERE (bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE bitInactive END) 
			ORDER BY intDept

		END

		IF @SQSearch = 1
		BEGIN
	
			SELECT	intDept, 
					strDesc 
			FROM tblDepartments 
			WHERE (bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE bitInactive END) 
			AND (intDept LIKE @SQSearchBy 
				 OR strDesc LIKE @SQSearchBy)
			ORDER BY intDept

		END

	END

	IF @SQType = 1
	BEGIN

		CREATE TABLE #TempSec (
		[strCustCategory] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
		[bitSecExists] [bit] NOT NULL,
		[bitSecUserExists] [bit] NOT NULL)

		INSERT INTO #TempSec
		SELECT	strCustCategory, 
				0, 
				0
		FROM tblCustomerCat

		IF @SQBPTools = 0
		BEGIN

			UPDATE #TempSec
			SET [bitSecExists] = 1
			FROM (SELECT DISTINCT strCustCategory
				  FROM tblCustomerCatSec) Z
			WHERE #TempSec.strCustCategory = Z.strCustCategory

			UPDATE #TempSec
			SET [bitSecUserExists] = 1
			FROM (SELECT strCustCategory
				  FROM tblCustomerCatSec
				  WHERE strUserName = @SQUserName) Z
			WHERE #TempSec.strCustCategory = Z.strCustCategory

		END

		CREATE TABLE #TempCust (
		[lngID] [bigint] IDENTITY(1,1) NOT NULL,
		[strCustName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
		[strCustDesc] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
		[strCurrency] [nvarchar](3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
		[strCustCategory] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
		[decAmount] [money] NOT NULL)

		IF @SQOmit = 0
		BEGIN

			IF @SQSearch = 0
			BEGIN

				IF @SQBalIncludeSO = 0
				BEGIN

					IF @SQOpenSalesOrders = 0
					BEGIN

						INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)
						SELECT	Z.strCustName, 
								tblCustomers.strCustDesc, 
								tblCustomers.strCurrency, 
								Z.strCustCategory, 
								SUM(Z.decAmount) AS decAmount
						FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName, 
									 ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,
									 tblCustomerCat.strCustCategory
							  FROM tblCustTrans 
							  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
							  INNER JOIN #TMP_Cust TMP ON tblCustTrans.strCustName = TMP.strCustName 
							  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							  WHERE (tblCustTransDT.bitReversed = 0) 
							  AND (tblCustTransDT.dteJournalDate <= @SQDate) 
							  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							  AND (tblCustomerCat.bitIsHP = @SQIsHP)
							  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))) Z
						INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName
						GROUP BY Z.strCustName, 
								 tblCustomers.strCustDesc, 
								 tblCustomers.strCurrency, 
								 Z.strCustCategory 

					END
					ELSE
					BEGIN

						INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)
						SELECT	Z.strCustName, 
								tblCustomers.strCustDesc, 
								tblCustomers.strCurrency, 
								Z.strCustCategory, 
								SUM(Z.decAmount) AS decAmount
						FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName, 
									 ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,
									 tblCustomerCat.strCustCategory
							  FROM tblCustTrans 
							  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
							  INNER JOIN #TMP_Cust TMP ON tblCustTrans.strCustName = TMP.strCustName 
							  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							  WHERE (tblCustTransDT.bitReversed = 0) 
							  AND (tblCustTransDT.dteJournalDate <= @SQDate) 
							  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							  AND (tblCustomerCat.bitIsHP = @SQIsHP)
							  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))
							  UNION ALL
							  SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName,
									 0 AS decAmount,
									 tblCustomerCat.strCustCategory
							  FROM tblOrderDoc 
							  INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID 
							  INNER JOIN #TMP_Cust TMP ON tblOrderDoc.strCustName = TMP.strCustName 
							  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							  CROSS JOIN tblCoOpts
							  WHERE (intDocType = 1 OR intDocType =3) 
							  AND bitCleared = 0 
							  AND (tblOrderDoc.dteJournalDate <= @SQDate) 
							  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							  AND (tblCustomerCat.bitIsHP = @SQIsHP)
							  --AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)
							  GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END, tblCustomerCat.strCustCategory) Z
						INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName
						GROUP BY Z.strCustName, 
								 tblCustomers.strCustDesc, 
								 tblCustomers.strCurrency, 
								 Z.strCustCategory 

					END

			END

				IF @SQBalIncludeSO = 1
				BEGIN			

					INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)
					SELECT	Z.strCustName, 
							tblCustomers.strCustDesc, 
							tblCustomers.strCurrency, 
							Z.strCustCategory, 
							SUM(Z.decAmount) AS decAmount
					FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName, 
								 ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,
								 tblCustomerCat.strCustCategory
						  FROM tblCustTrans 
						  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
						  INNER JOIN #TMP_Cust TMP ON tblCustTrans.strCustName = TMP.strCustName 
						  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
						  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
						  WHERE (tblCustTransDT.bitReversed = 0) 
						  AND (tblCustTransDT.dteJournalDate <= @SQDate) 
						  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
						  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
						  AND (tblCustomerCat.bitIsHP = @SQIsHP)
						  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))
						  UNION ALL
						  SELECT Y.strCustName,
								 ISNULL(CASE Y.bitIsForeign WHEN 0 THEN Y.decAmount ELSE Y.decAmountF END,0) AS decAmount,
								 Y.strCustCategory 
						  FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName,
									   tblOrderDoc.bitIsForeign,
									   SUM(ROUND(((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmount,
									   SUM(ROUND(((tblOrderDocDT.decLineTotExcF + tblOrderDocDT.decLineTaxAmtF) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmountF,
									   tblCustomerCat.strCustCategory
							    FROM tblOrderDoc 
							    INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID 
								INNER JOIN #TMP_Cust TMP ON tblOrderDoc.strCustName = TMP.strCustName 
							    INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							    LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							    CROSS JOIN tblCoOpts
							    WHERE (intDocType = 1 OR intDocType =3) 
							    AND bitCleared = 0 
							    AND (tblOrderDoc.dteJournalDate <= @SQDate) 
							    AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							    AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							    AND (tblCustomerCat.bitIsHP = @SQIsHP)
							    --AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)
							    GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END, tblOrderDoc.bitIsForeign, tblCustomerCat.strCustCategory) Y) Z
					INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName
					GROUP BY Z.strCustName, 
							 tblCustomers.strCustDesc, 
							 tblCustomers.strCurrency, 
							 Z.strCustCategory 

				END

			END

			IF @SQSearch = 1
			BEGIN

				IF @SQBalIncludeSO = 0
				BEGIN

					IF @SQOpenSalesOrders = 0
					BEGIN

						INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)
						SELECT	Z.strCustName, 
								tblCustomers.strCustDesc, 
								tblCustomers.strCurrency, 
								Z.strCustCategory, 
								SUM(Z.decAmount) AS decAmount
						FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName, 
									 ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,
									 tblCustomerCat.strCustCategory
							  FROM tblCustTrans 
							  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
							  INNER JOIN #TMP_Cust TMP ON tblCustTrans.strCustName = TMP.strCustName 
							  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							  WHERE (tblCustTransDT.bitReversed = 0) 
							  AND (tblCustTransDT.dteJournalDate <= @SQDate) 
							  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							  AND (tblCustomerCat.bitIsHP = @SQIsHP)
							  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))) Z
						INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName
						WHERE (Z.strCustName LIKE @SQSearchBy 
							   OR tblCustomers.strCustDesc LIKE @SQSearchBy)
						GROUP BY Z.strCustName, 
								 tblCustomers.strCustDesc, 
								 tblCustomers.strCurrency, 
								 Z.strCustCategory 

					END
					ELSE
					BEGIN

						INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)
						SELECT	Z.strCustName, 
								tblCustomers.strCustDesc, 
								tblCustomers.strCurrency, 
								Z.strCustCategory, 
								SUM(Z.decAmount) AS decAmount
						FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName, 
									 ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,
									 tblCustomerCat.strCustCategory
							  FROM tblCustTrans 
							  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
							  INNER JOIN #TMP_Cust TMP ON tblCustTrans.strCustName = TMP.strCustName 
							  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							  WHERE (tblCustTransDT.bitReversed = 0) 
							  AND (tblCustTransDT.dteJournalDate <= @SQDate) 
							  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							  AND (tblCustomerCat.bitIsHP = @SQIsHP)
							  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))
							  UNION ALL
							  SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName,
									 0 AS decAmount,
									 tblCustomerCat.strCustCategory
							  FROM tblOrderDoc 
							  INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID 
							  INNER JOIN #TMP_Cust TMP ON tblOrderDoc.strCustName = TMP.strCustName 
							  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							  CROSS JOIN tblCoOpts
							  WHERE (intDocType = 1 OR intDocType =3) 
							  AND bitCleared = 0 
							  AND (tblOrderDoc.dteJournalDate <= @SQDate) 
							  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							  AND (tblCustomerCat.bitIsHP = @SQIsHP)
							  --AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)
							  GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END, tblCustomerCat.strCustCategory) Z
						INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName
						WHERE (Z.strCustName LIKE @SQSearchBy 
							   OR tblCustomers.strCustDesc LIKE @SQSearchBy)
						GROUP BY Z.strCustName, 
								 tblCustomers.strCustDesc, 
								 tblCustomers.strCurrency, 
								 Z.strCustCategory 

					END

			END

				IF @SQBalIncludeSO = 1
				BEGIN

					INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)
					SELECT	Z.strCustName, 
							tblCustomers.strCustDesc, 
							tblCustomers.strCurrency, 
							Z.strCustCategory, 
							SUM(Z.decAmount) AS decAmount
					FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName, 
								 ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,
								 tblCustomerCat.strCustCategory
						  FROM tblCustTrans 
						  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
						  INNER JOIN #TMP_Cust TMP ON tblCustTrans.strCustName = TMP.strCustName 
						  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
						  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
						  WHERE (tblCustTransDT.bitReversed = 0) 
						  AND (tblCustTransDT.dteJournalDate <= @SQDate) 
						  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
						  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
						  AND (tblCustomerCat.bitIsHP = @SQIsHP)
						  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))
						  UNION ALL
						  SELECT Y.strCustName,
								 ISNULL(CASE Y.bitIsForeign WHEN 0 THEN Y.decAmount ELSE Y.decAmountF END,0) AS decAmount,
								 Y.strCustCategory 
						  FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName,
									   tblOrderDoc.bitIsForeign,
									   SUM(ROUND(((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmount,
									   SUM(ROUND(((tblOrderDocDT.decLineTotExcF + tblOrderDocDT.decLineTaxAmtF) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmountF,
									   tblCustomerCat.strCustCategory
							    FROM tblOrderDoc 
							    INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID 
								INNER JOIN #TMP_Cust TMP ON tblOrderDoc.strCustName = TMP.strCustName 
							    INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							    LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							    CROSS JOIN tblCoOpts
							    WHERE (intDocType = 1 OR intDocType =3) 
							    AND bitCleared = 0 
							    AND (tblOrderDoc.dteJournalDate <= @SQDate) 
							    AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							    AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							    AND (tblCustomerCat.bitIsHP = @SQIsHP)
							    --AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)
							    GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END, tblOrderDoc.bitIsForeign, tblCustomerCat.strCustCategory) Y) Z
					INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName
					WHERE (Z.strCustName LIKE @SQSearchBy 
						   OR tblCustomers.strCustDesc LIKE @SQSearchBy)
					GROUP BY Z.strCustName, 
							 tblCustomers.strCustDesc, 
							 tblCustomers.strCurrency, 
							 Z.strCustCategory 
				END

			END

		END

		IF @SQOmit = 1
		BEGIN

			IF @SQSearch = 0
			BEGIN

				IF @SQBalIncludeSO = 0
				BEGIN

					IF @SQOpenSalesOrders = 0
					BEGIN

						INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)
						SELECT	Z.strCustName, 
								tblCustomers.strCustDesc, 
								tblCustomers.strCurrency, 
								Z.strCustCategory, 
								SUM(Z.decAmount) AS decAmount
						FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName, 
									 ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,
									 tblCustomerCat.strCustCategory
							  FROM tblCustTrans 
							  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
							  INNER JOIN #TMP_Cust TMP ON tblCustTrans.strCustName = TMP.strCustName 
							  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							  WHERE (tblCustTransDT.bitReversed = 0) 
							  AND (tblCustTransDT.dteJournalDate <= @SQDate) 
							  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							  AND (tblCustomerCat.bitIsHP = @SQIsHP)
							  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))) Z
						INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName
						GROUP BY Z.strCustName, 
								 tblCustomers.strCustDesc, 
								 tblCustomers.strCurrency, 
								 Z.strCustCategory 
						HAVING SUM(Z.decAmount) <> 0 

					END
					ELSE
					BEGIN

						INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)
						SELECT	Z.strCustName, 
								tblCustomers.strCustDesc, 
								tblCustomers.strCurrency, 
								Z.strCustCategory, 
								SUM(Z.decAmount) AS decAmount
						FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName, 
									 ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,
									 tblCustomerCat.strCustCategory
							  FROM tblCustTrans 
							  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
							  INNER JOIN #TMP_Cust TMP ON tblCustTrans.strCustName = TMP.strCustName 
							  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							  WHERE (tblCustTransDT.bitReversed = 0) 
							  AND (tblCustTransDT.dteJournalDate <= @SQDate) 
							  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							  AND (tblCustomerCat.bitIsHP = @SQIsHP)
							  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))
							  UNION ALL
							  SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName,
									 0 AS decAmount,
									 tblCustomerCat.strCustCategory
							  FROM tblOrderDoc 
							  INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID 
							  INNER JOIN #TMP_Cust TMP ON tblOrderDoc.strCustName = TMP.strCustName 
							  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							  CROSS JOIN tblCoOpts
							  WHERE (intDocType = 1 OR intDocType =3) 
							  AND bitCleared = 0 
							  AND (tblOrderDoc.dteJournalDate <= @SQDate) 
							  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							  AND (tblCustomerCat.bitIsHP = @SQIsHP)
							  --AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)
							  GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END, tblCustomerCat.strCustCategory) Z
						INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName
						GROUP BY Z.strCustName, 
								 tblCustomers.strCustDesc, 
								 tblCustomers.strCurrency, 
								 Z.strCustCategory 
						HAVING SUM(Z.decAmount) <> 0 

					END

			END

				IF @SQBalIncludeSO = 1
				BEGIN

					INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)
					SELECT	Z.strCustName, 
							tblCustomers.strCustDesc, 
							tblCustomers.strCurrency, 
							Z.strCustCategory, 
							SUM(Z.decAmount) AS decAmount
					FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName, 
								 ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,
								 tblCustomerCat.strCustCategory
						  FROM tblCustTrans 
						  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
						  INNER JOIN #TMP_Cust TMP ON tblCustTrans.strCustName = TMP.strCustName 
						  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
						  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
						  WHERE (tblCustTransDT.bitReversed = 0) 
						  AND (tblCustTransDT.dteJournalDate <= @SQDate) 
						  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
						  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
						  AND (tblCustomerCat.bitIsHP = @SQIsHP)
						  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))
						  UNION ALL
						  SELECT Y.strCustName,
								 ISNULL(CASE Y.bitIsForeign WHEN 0 THEN Y.decAmount ELSE Y.decAmountF END,0) AS decAmount,
								 Y.strCustCategory 
						  FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName,
									   tblOrderDoc.bitIsForeign,
									   SUM(ROUND(((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmount,
									   SUM(ROUND(((tblOrderDocDT.decLineTotExcF + tblOrderDocDT.decLineTaxAmtF) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmountF,
									   tblCustomerCat.strCustCategory
							    FROM tblOrderDoc 
							    INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID 
								INNER JOIN #TMP_Cust TMP ON tblOrderDoc.strCustName = TMP.strCustName 
							    INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							    LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							    CROSS JOIN tblCoOpts
							    WHERE (intDocType = 1 OR intDocType =3) 
							    AND bitCleared = 0 
							    AND (tblOrderDoc.dteJournalDate <= @SQDate) 
							    AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							    AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							    AND (tblCustomerCat.bitIsHP = @SQIsHP)
							    --AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)
							    GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END, tblOrderDoc.bitIsForeign, tblCustomerCat.strCustCategory) Y) Z
					INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName
					GROUP BY Z.strCustName, 
							 tblCustomers.strCustDesc, 
							 tblCustomers.strCurrency, 
							 Z.strCustCategory 
					HAVING SUM(Z.decAmount) <> 0 
				END

			END

			IF @SQSearch = 1
			BEGIN

				IF @SQBalIncludeSO = 0
				BEGIN

					IF @SQOpenSalesOrders = 0
					BEGIN

						INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)
						SELECT	Z.strCustName, 
								tblCustomers.strCustDesc, 
								tblCustomers.strCurrency, 
								Z.strCustCategory, 
								SUM(Z.decAmount) AS decAmount
						FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName, 
									 ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,
									 tblCustomerCat.strCustCategory
							  FROM tblCustTrans 
							  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
							  INNER JOIN #TMP_Cust TMP ON tblCustTrans.strCustName = TMP.strCustName 
							  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							  WHERE (tblCustTransDT.bitReversed = 0) 
							  AND (tblCustTransDT.dteJournalDate <= @SQDate) 
							  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							  AND (tblCustomerCat.bitIsHP = @SQIsHP)
							  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))) Z
						INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName
						WHERE (Z.strCustName LIKE @SQSearchBy 
							   OR tblCustomers.strCustDesc LIKE @SQSearchBy)
						GROUP BY Z.strCustName, 
								 tblCustomers.strCustDesc, 
								 tblCustomers.strCurrency, 
								 Z.strCustCategory 
						HAVING SUM(Z.decAmount) <> 0 

					END
					ELSE
					BEGIN

						INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)
						SELECT	Z.strCustName, 
								tblCustomers.strCustDesc, 
								tblCustomers.strCurrency, 
								Z.strCustCategory, 
								SUM(Z.decAmount) AS decAmount
						FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName, 
									 ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,
									 tblCustomerCat.strCustCategory
							  FROM tblCustTrans 
							  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
							  INNER JOIN #TMP_Cust TMP ON tblCustTrans.strCustName = TMP.strCustName 
							  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							  WHERE (tblCustTransDT.bitReversed = 0) 
							  AND (tblCustTransDT.dteJournalDate <= @SQDate) 
							  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							  AND (tblCustomerCat.bitIsHP = @SQIsHP)
							  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))
							  UNION ALL
							  SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName,
									 0 AS decAmount,
									 tblCustomerCat.strCustCategory
							  FROM tblOrderDoc 
							  INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID 
							  INNER JOIN #TMP_Cust TMP ON tblOrderDoc.strCustName = TMP.strCustName 
							  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							  CROSS JOIN tblCoOpts
							  WHERE (intDocType = 1 OR intDocType =3) 
							  AND bitCleared = 0 
							  AND (tblOrderDoc.dteJournalDate <= @SQDate) 
							  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							  AND (tblCustomerCat.bitIsHP = @SQIsHP)
							  --AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)
							  GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END, tblCustomerCat.strCustCategory) Z
						INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName
						WHERE (Z.strCustName LIKE @SQSearchBy 
							   OR tblCustomers.strCustDesc LIKE @SQSearchBy)
						GROUP BY Z.strCustName, 
								 tblCustomers.strCustDesc, 
								 tblCustomers.strCurrency, 
								 Z.strCustCategory 
						HAVING SUM(Z.decAmount) <> 0 

				END

			END

				IF @SQBalIncludeSO = 1
				BEGIN

					INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)
					SELECT	Z.strCustName, 
							tblCustomers.strCustDesc, 
							tblCustomers.strCurrency, 
							Z.strCustCategory, 
							SUM(Z.decAmount) AS decAmount
					FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName, 
								 ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,
								 tblCustomerCat.strCustCategory
						  FROM tblCustTrans 
						  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
						  INNER JOIN #TMP_Cust TMP ON tblCustTrans.strCustName = TMP.strCustName 
						  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
						  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
						  WHERE (tblCustTransDT.bitReversed = 0) 
						  AND (tblCustTransDT.dteJournalDate <= @SQDate) 
						  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
						  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
						  AND (tblCustomerCat.bitIsHP = @SQIsHP)
						  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))
						  UNION ALL
						  SELECT Y.strCustName,
								 ISNULL(CASE Y.bitIsForeign WHEN 0 THEN Y.decAmount ELSE Y.decAmountF END,0) AS decAmount,
								 Y.strCustCategory 
						  FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName,
									   tblOrderDoc.bitIsForeign,
									   SUM(ROUND(((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmount,
									   SUM(ROUND(((tblOrderDocDT.decLineTotExcF + tblOrderDocDT.decLineTaxAmtF) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmountF,
									   tblCustomerCat.strCustCategory
							    FROM tblOrderDoc 
							    INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID 
								INNER JOIN #TMP_Cust TMP ON tblOrderDoc.strCustName = TMP.strCustName 
							    INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							    LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							    CROSS JOIN tblCoOpts
							    WHERE (intDocType = 1 OR intDocType =3) 
							    AND bitCleared = 0 
							    AND (tblOrderDoc.dteJournalDate <= @SQDate) 
							    AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							    AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							    AND (tblCustomerCat.bitIsHP = @SQIsHP)
							    --AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)
							    GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END, tblOrderDoc.bitIsForeign, tblCustomerCat.strCustCategory) Y) Z
					INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName
					WHERE (Z.strCustName LIKE @SQSearchBy 
						   OR tblCustomers.strCustDesc LIKE @SQSearchBy)
					GROUP BY Z.strCustName, 
							 tblCustomers.strCustDesc, 
							 tblCustomers.strCurrency, 
							 Z.strCustCategory 
					HAVING SUM(Z.decAmount) <> 0 

				END

			END

		END

		IF @SQOmit = 2
		BEGIN

			IF @SQSearch = 0
			BEGIN

				IF @SQBalIncludeSO = 0
				BEGIN

					IF @SQOpenSalesOrders = 0
					BEGIN

						INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)
						SELECT	Z.strCustName, 
								tblCustomers.strCustDesc, 
								tblCustomers.strCurrency, 
								Z.strCustCategory, 
								SUM(Z.decAmount) AS decAmount
						FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName, 
									 ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,
									 tblCustomerCat.strCustCategory
							  FROM tblCustTrans 
							  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
							  INNER JOIN #TMP_Cust TMP ON tblCustTrans.strCustName = TMP.strCustName 
							  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							  WHERE (tblCustTransDT.bitReversed = 0) 
							  AND (tblCustTransDT.dteJournalDate <= @SQDate) 
							  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							  AND (tblCustomerCat.bitIsHP = @SQIsHP)
							  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))) Z
						INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName
						GROUP BY Z.strCustName, 
								 tblCustomers.strCustDesc, 
								 tblCustomers.strCurrency, 
								 Z.strCustCategory 
						HAVING SUM(Z.decAmount) > @SQBalance  

					END
					ELSE
					BEGIN

						INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)
						SELECT	Z.strCustName, 
								tblCustomers.strCustDesc, 
								tblCustomers.strCurrency, 
								Z.strCustCategory, 
								SUM(Z.decAmount) AS decAmount
						FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName, 
									 ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,
									 tblCustomerCat.strCustCategory
							  FROM tblCustTrans 
							  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
							  INNER JOIN #TMP_Cust TMP ON tblCustTrans.strCustName = TMP.strCustName 
							  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							  WHERE (tblCustTransDT.bitReversed = 0) 
							  AND (tblCustTransDT.dteJournalDate <= @SQDate) 
							  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							  AND (tblCustomerCat.bitIsHP = @SQIsHP)
							  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))
							  UNION ALL
							  SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName,
									 0 AS decAmount,
									 tblCustomerCat.strCustCategory
							  FROM tblOrderDoc 
							  INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID 
							  INNER JOIN #TMP_Cust TMP ON tblOrderDoc.strCustName = TMP.strCustName 
							  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							  CROSS JOIN tblCoOpts
							  WHERE (intDocType = 1 OR intDocType =3) 
							  AND bitCleared = 0 
							  AND (tblOrderDoc.dteJournalDate <= @SQDate) 
							  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							  AND (tblCustomerCat.bitIsHP = @SQIsHP)
							  --AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)
							  GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END, tblCustomerCat.strCustCategory) Z
						INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName
						GROUP BY Z.strCustName, 
								 tblCustomers.strCustDesc, 
								 tblCustomers.strCurrency, 
								 Z.strCustCategory 
						HAVING SUM(Z.decAmount) > @SQBalance  

				END

			END

				IF @SQBalIncludeSO = 1
				BEGIN

					INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)
					SELECT	Z.strCustName, 
							tblCustomers.strCustDesc, 
							tblCustomers.strCurrency, 
							Z.strCustCategory, 
							SUM(Z.decAmount) AS decAmount
					FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName, 
								 ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,
								 tblCustomerCat.strCustCategory
						  FROM tblCustTrans 
						  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
						  INNER JOIN #TMP_Cust TMP ON tblCustTrans.strCustName = TMP.strCustName 
						  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
						  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
						  WHERE (tblCustTransDT.bitReversed = 0) 
						  AND (tblCustTransDT.dteJournalDate <= @SQDate) 
						  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
						  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
						  AND (tblCustomerCat.bitIsHP = @SQIsHP)
						  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))
						  UNION ALL
						  SELECT Y.strCustName,
								 ISNULL(CASE Y.bitIsForeign WHEN 0 THEN Y.decAmount ELSE Y.decAmountF END,0) AS decAmount,
								 Y.strCustCategory 
						  FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName,
									   tblOrderDoc.bitIsForeign,
									   SUM(ROUND(((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmount,
									   SUM(ROUND(((tblOrderDocDT.decLineTotExcF + tblOrderDocDT.decLineTaxAmtF) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmountF,
									   tblCustomerCat.strCustCategory
							    FROM tblOrderDoc 
							    INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID 
								INNER JOIN #TMP_Cust TMP ON tblOrderDoc.strCustName = TMP.strCustName 
							    INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							    LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							    CROSS JOIN tblCoOpts
							    WHERE (intDocType = 1 OR intDocType =3) 
							    AND bitCleared = 0 
							    AND (tblOrderDoc.dteJournalDate <= @SQDate) 
							    AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							    AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							    AND (tblCustomerCat.bitIsHP = @SQIsHP)
							    --AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)
							    GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END, tblOrderDoc.bitIsForeign, tblCustomerCat.strCustCategory) Y) Z
					INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName
					GROUP BY Z.strCustName, 
							 tblCustomers.strCustDesc, 
							 tblCustomers.strCurrency, 
							 Z.strCustCategory 
					HAVING SUM(Z.decAmount) > @SQBalance  

				END

			END

			IF @SQSearch = 1
			BEGIN

				IF @SQBalIncludeSO = 0
				BEGIN

					IF @SQOpenSalesOrders = 0
					BEGIN

						INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)
						SELECT	Z.strCustName, 
								tblCustomers.strCustDesc, 
								tblCustomers.strCurrency, 
								Z.strCustCategory, 
								SUM(Z.decAmount) AS decAmount
						FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName, 
									 ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,
									 tblCustomerCat.strCustCategory
							  FROM tblCustTrans 
							  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
							  INNER JOIN #TMP_Cust TMP ON tblCustTrans.strCustName = TMP.strCustName 
							  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							  WHERE (tblCustTransDT.bitReversed = 0) 
							  AND (tblCustTransDT.dteJournalDate <= @SQDate) 
							  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							  AND (tblCustomerCat.bitIsHP = @SQIsHP)
							  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))) Z
						INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName
						WHERE (Z.strCustName LIKE @SQSearchBy 
							   OR tblCustomers.strCustDesc LIKE @SQSearchBy)
						GROUP BY Z.strCustName, 
								 tblCustomers.strCustDesc, 
								 tblCustomers.strCurrency, 
								 Z.strCustCategory 
						HAVING SUM(Z.decAmount) > @SQBalance  

					END
					ELSE
					BEGIN

						INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)
						SELECT	Z.strCustName, 
								tblCustomers.strCustDesc, 
								tblCustomers.strCurrency, 
								Z.strCustCategory, 
								SUM(Z.decAmount) AS decAmount
						FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName, 
									 ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,
									 tblCustomerCat.strCustCategory
							  FROM tblCustTrans 
							  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
							  INNER JOIN #TMP_Cust TMP ON tblCustTrans.strCustName = TMP.strCustName 
							  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							  WHERE (tblCustTransDT.bitReversed = 0) 
							  AND (tblCustTransDT.dteJournalDate <= @SQDate) 
							  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							  AND (tblCustomerCat.bitIsHP = @SQIsHP)
							  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))
							  UNION ALL
							  SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName,
									 0 AS decAmount,
									 tblCustomerCat.strCustCategory
							  FROM tblOrderDoc 
							  INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID 
							  INNER JOIN #TMP_Cust TMP ON tblOrderDoc.strCustName = TMP.strCustName 
							  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							  CROSS JOIN tblCoOpts
							  WHERE (intDocType = 1 OR intDocType =3) 
							  AND bitCleared = 0 
							  AND (tblOrderDoc.dteJournalDate <= @SQDate) 
							  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							  AND (tblCustomerCat.bitIsHP = @SQIsHP)
							  --AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)
							  GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END, tblCustomerCat.strCustCategory) Z
						INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName
						WHERE (Z.strCustName LIKE @SQSearchBy 
							   OR tblCustomers.strCustDesc LIKE @SQSearchBy)
						GROUP BY Z.strCustName, 
								 tblCustomers.strCustDesc, 
								 tblCustomers.strCurrency, 
								 Z.strCustCategory 
						HAVING SUM(Z.decAmount) > @SQBalance  

				END

			END

				IF @SQBalIncludeSO = 1
				BEGIN

					INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)
					SELECT	Z.strCustName, 
							tblCustomers.strCustDesc, 
							tblCustomers.strCurrency, 
							Z.strCustCategory, 
							SUM(Z.decAmount) AS decAmount
					FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName, 
								 ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,
								 tblCustomerCat.strCustCategory
						  FROM tblCustTrans 
						  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
						  INNER JOIN #TMP_Cust TMP ON tblCustTrans.strCustName = TMP.strCustName 
						  INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
						  LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
						  WHERE (tblCustTransDT.bitReversed = 0) 
						  AND (tblCustTransDT.dteJournalDate <= @SQDate) 
						  AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
						  AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
						  AND (tblCustomerCat.bitIsHP = @SQIsHP)
						  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))
						  UNION ALL
						  SELECT Y.strCustName,
								 ISNULL(CASE Y.bitIsForeign WHEN 0 THEN Y.decAmount ELSE Y.decAmountF END,0) AS decAmount,
								 Y.strCustCategory 
						  FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END AS strCustName,
									   tblOrderDoc.bitIsForeign,
									   SUM(ROUND(((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmount,
									   SUM(ROUND(((tblOrderDocDT.decLineTotExcF + tblOrderDocDT.decLineTaxAmtF) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmountF,
									   tblCustomerCat.strCustCategory
							    FROM tblOrderDoc 
							    INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID 
								INNER JOIN #TMP_Cust TMP ON tblOrderDoc.strCustName = TMP.strCustName 
							    INNER JOIN tblCustomerCat ON TMP.strCustCategory = tblCustomerCat.strCustCategory 
							    LEFT JOIN tblCustomers CUST ON TMP.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END 
							    CROSS JOIN tblCoOpts
							    WHERE (intDocType = 1 OR intDocType =3) 
							    AND bitCleared = 0 
							    AND (tblOrderDoc.dteJournalDate <= @SQDate) 
							    AND (TMP.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE TMP.bitInactive END) 
							    AND (TMP.strTerm = CASE WHEN @SQTerm IS NULL THEN TMP.strTerm ELSE @SQTerm END)
							    AND (tblCustomerCat.bitIsHP = @SQIsHP)
							    --AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)
							    GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN TMP.strCustName ELSE CUST.strCustName END, tblOrderDoc.bitIsForeign, tblCustomerCat.strCustCategory) Y) Z
					INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName
					WHERE (Z.strCustName LIKE @SQSearchBy 
						   OR tblCustomers.strCustDesc LIKE @SQSearchBy)
					GROUP BY Z.strCustName, 
							 tblCustomers.strCustDesc, 
							 tblCustomers.strCurrency, 
							 Z.strCustCategory 
					HAVING SUM(Z.decAmount) > @SQBalance  

				END

			END

		END

		SELECT	#TempCust.strCustName,
				#TempCust.strCustDesc,
				#TempCust.strCurrency,
				#TempCust.decAmount 
		FROM #TempCust 
		INNER JOIN #TempSec ON #TempCust.strCustCategory = #TempSec.strCustCategory 
		WHERE (bitSecExists = 0
				OR (bitSecExists = 1 AND bitSecUserExists = 1))
		ORDER BY CASE WHEN @SQSortType = 1 THEN strCustName else strCustDesc END;

		DROP TABLE #TempSec
		DROP TABLE #TempCust

	END

	IF @SQType = 2
	BEGIN

		IF @SQSearch = 0
		BEGIN
	
			SELECT	strCustCategory, 
					strDesc 
			FROM tblCustomerCat 
			WHERE (bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE bitInactive END) 
			ORDER BY strCustCategory

		END

		IF @SQSearch = 1
		BEGIN
	
			SELECT	strCustCategory, 
					strDesc 
			FROM tblCustomerCat 
			WHERE (bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE bitInactive END) 
			AND (strCustCategory LIKE @SQSearchBy 
				 OR strDesc LIKE @SQSearchBy)
			ORDER BY strCustCategory
		END

	END

	DROP TABLE #TMP_Cust

END
GO
/****** Object:  StoredProcedure [dbo].[SPCustStatOrders]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPCustStatOrders] (
	@Opt AS INT = 0
	,@SQConsolidated INT = 0
	,@SQCustomer AS VARCHAR(100) = NULL
	,@SQbitDisplayLogo BIT = 0
	)
AS
BEGIN
	IF @Opt = 1
	BEGIN
		SELECT tblOrderDoc.strOrdDocID
			,tblOrderDoc.dteJournalDate
			,tblOrderDoc.dteRequired
			,tblOrderDoc.decSubTotal
			,CASE tblOrderDocDT.decQty
				WHEN tblOrderDocDT.decQtyRemaining
					THEN tblOrderDocDT.decLineTotExc
				ELSE (tblOrderDocDT.decLineTotExc / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining
				END AS decLineTotExc
			,tblOrderDocDT.strPartNumber
			,tblOrderDocDT.decQty
			,tblOrderDocDT.decQtyRemaining
			,tblOrderDocDT.strPartDesc
			,tblInv.decSumOnHand
		FROM tblOrderDoc
		INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
		INNER JOIN tblInv ON tblInv.strPartNumber = tblOrderDocDT.strPartNumber
		WHERE (tblOrderDoc.intDocType = 1)
			AND (tblOrderDoc.bitCleared = 0)
			AND (
				tblOrderDoc.strCustName = @SQCustomer
				OR tblOrderDoc.strCustName IN (
					SELECT CUST1.strCustName
					FROM tblCustomers CUST1
					WHERE CUST1.strParentCust = (
							SELECT CUST2.strCustName
							FROM tblCustomers CUST2
							WHERE CUST2.strCustName = @SQCustomer
								AND CUST2.intNAPrintMethod = @SQConsolidated
							)
					)
				)
		ORDER BY tblOrderDoc.dteJournalDate
	END

	IF @Opt = 2
	BEGIN
		SELECT [imgLogo]
			,@SQbitDisplayLogo AS [bitDisplayLogo]
		FROM tblCompany
	END

	IF @Opt = 4
	BEGIN
		SELECT tblOrderDoc.strOrdDocID
			,tblOrderDoc.strReference
			,tblOrderDoc.strAddInfo
			,tblOrderDoc.dteJournalDate
			,tblOrderDoc.dteRequired
			,tblOrderDoc.decTotal
			,SUM((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) * ((tblOrderDocDT.decQty - tblOrderDocDT.decQtyRemaining) / tblOrderDocDT.decQty)) AS decInvoiced
			,SUM((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) * (tblOrderDocDT.decQtyRemaining / tblOrderDocDT.decQty)) AS decOutstanding
		FROM tblOrderDoc
		INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
		WHERE (tblOrderDoc.intDocType = 1)
			AND (tblOrderDoc.bitCleared = 0)
			AND (
				tblOrderDoc.strCustName = @SQCustomer
				OR tblOrderDoc.strCustName IN (
					SELECT CUST1.strCustName
					FROM tblCustomers CUST1
					WHERE CUST1.strParentCust = (
							SELECT CUST2.strCustName
							FROM tblCustomers CUST2
							WHERE CUST2.strCustName = @SQCustomer
								AND CUST2.intNAPrintMethod = @SQConsolidated
							)
					)
				)
		GROUP BY tblOrderDoc.strOrdDocID
			,tblOrderDoc.strReference
			,tblOrderDoc.strAddInfo
			,tblOrderDoc.dteJournalDate
			,tblOrderDoc.dteRequired
			,tblOrderDoc.decTotal
		ORDER BY tblOrderDoc.dteJournalDate
	END

	IF @Opt = 5
	BEGIN
		SELECT *
		FROM tblCompany
	END

	IF @Opt = 6
	BEGIN
		SELECT strRecMsgOSOS
		FROM tblForms
	END

	IF @Opt = 7
	BEGIN
		SELECT intDelMethod
		FROM tblCustomers
	END

	IF @Opt = 8
	BEGIN
		SELECT strCurrency
		FROM tblCustomers
	END
END
GO



/****** Object:  StoredProcedure [dbo].[SPCustStatSales]    Script Date: 26/06/2020 08:45:58 ******/

CREATE PROCEDURE [dbo].[SPCustStatSales] (
	@Opt AS INT = 0
	,@SQCustName VARCHAR(250) = NULL
	,@SQbitDisplayLogo BIT = 0
	,@SQStart VARCHAR(25) = NULL
	,@SQEnd VARCHAR(25) = NULL
	,@SQConsolidated INT = 0
	)
AS
BEGIN
	IF @Opt = 1
	BEGIN
		SELECT strName
			,strStreet1
			,strStreet2
			,strCity
			,strProvince
			,strPostal
			,strCountry
			,strPhone1
			,strPhone2
			,strFax
			,strEmail
			,strCK
			,strVAT
		FROM tblCompany
	END

	IF @Opt = 2
	BEGIN
		SELECT strCustName
			,strStreet1
			,strStreet2
			,strCity
			,strProvince
			,strPostal
			,strPhone
			,strCellPhone
			,strFax
			,strEmail
			,strVAT
			,strCK
			,decBalDue
			,decYTDPurch
			,decOpenOrders
			,intDelMethod
			,bitCreditCtrl
			,decCreditLimit
			,bitCreditHold
			,bitInactive
			,dteUpdated
			,strContact
			,strField1
			,strField2
			,strField3
			,strField4
			,strField5
			,strField6
			,strTaxCode
			,dteSince
			,strNotes
			,strPricelist
			,[uID]
			,decIntRate
			,strCustDesc
			,strCountry
			,strTerm
			,intDept
			,strCurrency
			,decBalDueF
			,decYTDPurchF
			,decOpenOrdersF
			,strField7
			,strField8
			,strField9
			,strField10
			,strField11
			,strField12
			,strEmailInv
			,strEmailStat
			,strCustCategory
			,strCountryCode
			,strTenderType
			,decTradeDiscPerc
			,strWebsite
			,strEmailOso
			,intNAPrintMethod
			,strSuburb
		FROM tblCustomers
		WHERE strCustName = @SQCustName
	END

	IF @Opt = 3
	BEGIN
		SELECT imgLogo,@SQbitDisplayLogo AS bitDisplayLogo FROM tblCompany
	END

	IF @Opt = 4
	BEGIN
		SELECT strCurrency
		FROM tblCustomers
		WHERE strCustName = @SQCustName
	END

	IF @Opt = 5
	BEGIN
		SELECT tblInvoiceDoc.dteJournalDate
			,tblInvoiceDoc.strInvDocID
			,tblInvoiceDoc.strReference
			,tblInvoiceDocDT.strPartNumber
			,tblInvoiceDocDT.strPartDesc
			,tblInvoiceDocDT.decQty
			,CASE tblInvoiceDoc.bitIsForeign
				WHEN 0
					THEN decPriceEaInc
				ELSE decEaIncTaxF
				END
			,CASE tblInvoiceDoc.bitIsForeign
				WHEN 0
					THEN decLineTaxAmt
				ELSE decLineTaxAmtF
				END
			,CASE tblInvoiceDoc.bitIsForeign
				WHEN 0
					THEN CASE decLineTotInc
							WHEN decLineTotExc
								THEN decLineTotExc + decLineTaxAmt
							ELSE decLineTotInc
							END
				ELSE CASE decTotIncTaxF
						WHEN decLineTotExcF
							THEN decLineTotExcF + decLineTaxAmtF
						ELSE decTotIncTaxF
						END
				END
			,ISNULL(tblInvoiceDoc.strSalesName, '')
			,tblInvoiceDoc.strCustName
			,tblCustomers.strCustDesc
		FROM tblInvoiceDoc
		INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
		INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
		WHERE (tblInvoiceDoc.bitHistoryTrans = 0)
			AND (
				tblInvoiceDoc.dteJournalDate BETWEEN @SQStart
					AND @SQEnd
				)
			AND (
				tblInvoiceDoc.strCustName = @SQCustName
				OR tblInvoiceDoc.strCustName IN (
					SELECT CUST1.strCustName
					FROM tblCustomers CUST1
					WHERE CUST1.strParentCust = (
							SELECT CUST2.strCustName
							FROM tblCustomers CUST2
							WHERE CUST2.strCustName = @SQCustName
								AND CUST2.intNAPrintMethod = @SQConsolidated
							)
					)
				)
		
		UNION ALL
		
		SELECT tblInvoiceDoc.dteJournalDate
			,tblInvoiceDoc.strInvDocID
			,'HISTORY' AS strReference
			,'HISTORY' AS strPartNumber
			,'HISTORY' AS strPartDesc
			,1
			,CASE tblInvoiceDoc.bitIsForeign
				WHEN 0
					THEN tblInvoiceDoc.decSubTotal
				ELSE tblInvoiceDoc.decSubTotalF
				END
			,CASE tblInvoiceDoc.bitIsForeign
				WHEN 0
					THEN tblInvoiceDoc.decVAT
				ELSE tblInvoiceDoc.decVATF
				END
			,CASE tblInvoiceDoc.bitIsForeign
				WHEN 0
					THEN tblInvoiceDoc.decTotal
				ELSE tblInvoiceDoc.decTotalF
				END
			,ISNULL(tblInvoiceDoc.strSalesName, '')
			,tblInvoiceDoc.strCustName
			,tblCustomers.strCustDesc
		FROM tblInvoiceDoc
		INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
		WHERE (tblInvoiceDoc.bitHistoryTrans = 1)
			AND (
				tblInvoiceDoc.dteJournalDate BETWEEN @SQStart
					AND @SQEnd
				)
			AND (
				tblInvoiceDoc.strCustName = @SQCustName
				OR tblInvoiceDoc.strCustName IN (
					SELECT CUST1.strCustName
					FROM tblCustomers CUST1
					WHERE CUST1.strParentCust = (
							SELECT CUST2.strCustName
							FROM tblCustomers CUST2
							WHERE CUST2.strCustName = @SQCustName
								AND CUST2.intNAPrintMethod = @SQConsolidated
							)
					)
				)
			AND (tblInvoiceDoc.strNotes <> 'Conversion Transaction')
		ORDER BY tblInvoiceDoc.dteJournalDate
			,tblInvoiceDoc.strInvDocID
			,tblInvoiceDocDT.strPartNumber
	END
END
GO




/****** Object:  StoredProcedure [dbo].[spDeleteCustomerTradingTimesByCustomer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[spDeleteCustomerTradingTimesByCustomer]
			-- Add the parameters for the stored procedure here
			@SQstrCustName nvarchar(50)
		AS
		BEGIN
			-- SET NOCOUNT ON added to prevent extra result sets from
			-- interfering with SELECT statements.
			SET NOCOUNT ON;

			-- Insert statements for procedure here
			DELETE FROM
				tblCustomerTradingTimes
			WHERE
				strCustName = @SQstrCustName
		END
		
GO
/****** Object:  StoredProcedure [dbo].[SPFHQDeliveryCostData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/************* [dbo].[GettblOrderDocQDataForFHQReport] End *************/

/************* [dbo].[SPFHQDeliveryCostData] Start *************/

CREATE PROCEDURE [dbo].[SPFHQDeliveryCostData] @SQDocNumber AS VARCHAR(250) = NULL
	,@IsCustStockCodes BIT -- = 1 -- Remove this later default value
AS
BEGIN
	IF (@IsCustStockCodes = 1)
	BEGIN
		SELECT tblOrderDocQDT.*
			,ISNULL(tblInv.strBarCode, '') AS strBarCode
			,ISNULL(tblInv.strBarCode2, '') AS strBarCode2
			,(
				SELECT bitInvImgOnSFHQ
				FROM tblCoOpts
				) AS bitShowImage
			,tblInvImg.imgData AS imgImage
			,tblOrderDocQDT.strPartExtendedDesc AS strExtendedDesc
			,ISNULL(tblInv.bitInvExtDescOnSFHQ, 0) AS bitShowExtendedDesc
			,ISNULL(tblInvCustomer.strItemCode, '') AS strItemCode
			,ISNULL(tblInvCustomer.strItemDesc, '') AS strItemDesc			
		FROM tblOrderDocQDT
		INNER JOIN tblOrderDocQ ON tblOrderDocQDT.strOrdDocID = tblOrderDocQ.strOrdDocID
		LEFT JOIN tblInv ON tblOrderDocQDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvImg ON tblOrderDocQDT.strPartNumber = tblInvImg.strPartNumber
			AND tblInvImg.bitDefaultImage = 1
		LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
			AND tblOrderDocQ.strCustName = tblInvCustomer.strCustName
		WHERE tblOrderDocQDT.strOrdDocID = @SQDocNumber
			AND tblOrderDocQDT.bitDiscountTax = 0
			AND tblOrderDocQDT.bitDelCost = 1 -- Added for Parent Tables row
		ORDER BY tblOrderDocQDT.intLineNo
	END
	ELSE
	BEGIN
		SELECT tblOrderDocQDT.*
			,ISNULL(tblInv.strBarCode, '') AS strBarCode
			,ISNULL(tblInv.strBarCode2, '') AS strBarCode2
			,(
				SELECT bitInvImgOnSFHQ
				FROM tblCoOpts
				) AS bitShowImage
			,tblInvImg.imgData AS imgImage
			,tblOrderDocQDT.strPartExtendedDesc AS strExtendedDesc
			,ISNULL(tblInv.bitInvExtDescOnSFHQ, 0) AS bitShowExtendedDesc
			,'' AS strItemCode
			,'' AS strItemDesc
		FROM tblOrderDocQDT
		INNER JOIN tblOrderDocQ ON tblOrderDocQDT.strOrdDocID = tblOrderDocQ.strOrdDocID -- Added for tblOrderDocQ Data
		LEFT JOIN tblInv ON tblOrderDocQDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvImg ON tblOrderDocQDT.strPartNumber = tblInvImg.strPartNumber
			AND tblInvImg.bitDefaultImage = 1
		WHERE tblOrderDocQDT.strOrdDocID = @SQDocNumber
			AND tblOrderDocQDT.bitDiscountTax = 0
			AND tblOrderDocQDT.bitDelCost = 1 -- Added for Parent Tables row
		ORDER BY tblOrderDocQDT.intLineNo
	END
END
GO
/****** Object:  StoredProcedure [dbo].[spFindCustomerTradingTimes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[spFindCustomerTradingTimes]
			-- Add the parameters for the stored procedure here
			@SQstrCustName nvarchar(50)
		AS
		BEGIN
			-- SET NOCOUNT ON added to prevent extra result sets from
			-- interfering with SELECT statements.
			SET NOCOUNT ON;

			-- Insert statements for procedure here
			SELECT 
				*
			FROM
				tblCustomerTradingTimes
			WHERE
				strCustName = @SQstrCustName
		END
		
GO
/****** Object:  StoredProcedure [dbo].[spGetCustomerCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[spGetCustomerCount]    Script Date: 10-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[spGetCustomerCount]
	@SQCustomer AS nvarchar(500) = NULL,
	@SQCurrency AS nvarchar(500) = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT COUNT(strCustName) as CustomerCount FROM tblCustomers WHERE strCustName = @SQCustomer AND strCurrency = @SQCurrency
END
GO
/****** Object:  StoredProcedure [dbo].[SPGetCustomers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPGetCustomers]
(
  @IsActive         BIT = NULL,
  @IsInvoice        BIT = NULL,
  @HomeCurrencyCode VARCHAR(20) = NULL,
  @SQCurrency       VARCHAR(20)= NULL,
  @CheckNationalAcc INT = NULL,
  @Option           INT = 1,-- For 1 = ALL, 2 = Orders, 3 = Balances
  @SQUserName       VARCHAR(50) = NULL,
  @IsForeignCurrencyRevaluation  BIT = NULL,
  @dteRevaluationDate DATETIME = NULL,
  @lstGridAccount NVARCHAR(MAX) = NULL,
  @SQSearchText NVARCHAR(MAX) = NULL,
  @PageSize int = 12,
  @PageNum int = 1

)
AS
  BEGIN

  --- Use Pagination
 DECLARE @Offset INT
 SET @Offset = @PageSize * (@PageNum-1)

    CREATE TABLE #Temp
(
	strCustName NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS,
	strCustDesc NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
	strCity NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS,
	strPhone NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS,
	strField1 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
    strField2 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
    strField3 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
    strField4 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
    strField5 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
    strField6 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
    strCurrency NVARCHAR(6) COLLATE SQL_Latin1_General_CP1_CI_AS,
    strCurrSymbol NVARCHAR(10) COLLATE SQL_Latin1_General_CP1_CI_AS,
	decBalDue VARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS,
	decBalDueF VARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS,
	bitInactive bit,
	decBalDueValid VARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS
  )
  CREATE TABLE #Temp2
  (
  strCustName NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS,
  decAmount VARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS,
	decAmountF VARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS,
  )
      PRINT @IsActive
      PRINT @IsInvoice
      PRINT @HomeCurrencyCode
      PRINT @SQCurrency
      PRINT @CheckNationalAcc
      PRINT @Option
      PRINT @SQUserName

	  
IF @IsForeignCurrencyRevaluation = 1
BEGIN
		INSERT INTO #Temp	
      SELECT strCustName,strCustDesc,strCity,strPhone,strField1,strField2,strField3,strField4,strField5,strField6,tblCustomers.strCurrency,tblCurrency.strCurrSymbol,
             (tblCurrency.strCurrSymbol + ' 0.00') AS decBalDue,
             decBalDueF=0.00,bitInactive, decBalDueValid=0.00
      FROM   tblCustomers (NOLOCK)
             INNER JOIN [dbo].[tblCurrency] (NOLOCK) ON tblCurrency.strCurrency = tblCustomers.strCurrency
      WHERE
      (@IsActive IS NULL OR @IsActive = 1 OR (@IsActive = 0 AND bitInactive = 0)) -- Checked for Active and In Active customers
      AND (@IsInvoice IS NULL OR @IsInvoice = 0 OR ( @IsInvoice = 1 AND bitInvWorkflowNew = 1)) -- Checked for invoice
      AND (@Option IS NULL OR @Option = 1 OR (@Option = 2 AND decOpenOrders <> 0) OR (@Option = 3 AND decBalDue <> 0)) -- For 1 = ALL, 2 = Orders, 3 = Balances
      AND (@SQCurrency IS NULL OR (tblCustomers.strCurrency = @SQCurrency)) -- Checked for selected currency
      AND (@CheckNationalAcc IS NULL OR (strCustName NOT IN (SELECT CUST1.strCustName FROM   tblCustomers (NOLOCK) CUST1 WHERE  strParentCust IN 
														(SELECT CUST2.strCustName FROM   tblCustomers (NOLOCK) CUST2 WHERE  CUST2.intNAPrintMethod = @CheckNationalAcc))))
      AND (@SQUserName IS NULL OR (strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory 
							FROM   tblCustomerCat (NOLOCK)
                            LEFT JOIN tblCustomerCatSec (NOLOCK) ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
                            WHERE  ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)
                            FROM   tblCustomerCatSec (NOLOCK)
                            WHERE  tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0
                            OR ( ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM   tblCustomerCatSec (NOLOCK) 
							WHERE  tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName))))
      ORDER  BY strCustName

		INSERT INTO #Temp2 (strCustName, decAmount, decAmountF)
    (SELECT
      LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName,
      SUM(tblCustTransDT.decAmount) AS decAmount,
      SUM(tblCustTransDT.decAmountF) AS decAmountF
    FROM tblCustTrans (NOLOCK) AS MASTERTABLE
    INNER JOIN tblCustomers (NOLOCK)
      ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))
    INNER JOIN tblCustTransDT (NOLOCK)
      ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
    WHERE (tblCustTransDT.bitReversed = 0) 
    AND (MASTERTABLE.strOrdDocID IS NULL
    OR (MASTERTABLE.strInvDocID IS NOT NULL
    AND MASTERTABLE.strOrdDocID IS NOT NULL))
    AND (tblCustTransDT.dteJournalDate <= @dteRevaluationDate)
    AND (tblCustTransDT.lngCustTrID NOT IN (SELECT
      tblCustTransDT.lngCustTrID
    FROM tblCustTrans (NOLOCK)
    INNER JOIN tblCustTransDT (NOLOCK)
      ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
    WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
    AND tblCustTransDT.bitReversed = 0
    AND tblCustTransDT.dteJournalDate <= @dteRevaluationDate
    AND (tblCustTrans.strOrdDocID IS NULL
    OR (tblCustTrans.strInvDocID IS NOT NULL
    AND tblCustTrans.strOrdDocID IS NOT NULL))
    GROUP BY tblCustTransDT.lngCustTrID
    HAVING SUM(tblCustTransDT.decAmount) = 0
    AND SUM(tblCustTransDT.decAmountF) = 0)
    )
    GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)),
             tblCustomers.strCustDesc,
             tblCustomers.strTerm,
             tblCustomers.strCurrency,
             tblCustTransDT.bitIsForeign
    UNION
    SELECT
      LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName,
      SUM(tblCustTransDT.decAmount) AS decAmount,
      SUM(tblCustTransDT.decAmountF) AS decAmountF
    FROM tblCustTrans (NOLOCK) AS MASTERTABLE
    INNER JOIN tblCustomers (NOLOCK)
      ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))
    INNER JOIN tblCustTransDT (NOLOCK)
      ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
    WHERE (tblCustTransDT.bitReversed = 0)
    AND (MASTERTABLE.strOrdDocID IS NOT NULL)
    AND (MASTERTABLE.strInvDocID IS NULL)
    AND (tblCustTransDT.lngCustPayID IS NOT NULL)
    AND (tblCustTransDT.dteJournalDate <= @dteRevaluationDate)
    AND (tblCustTransDT.lngCustTrID
    NOT IN (SELECT
      tblCustTransDT.lngCustTrID
    FROM tblCustTrans (NOLOCK)
    INNER JOIN tblCustTransDT (NOLOCK)
      ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
    WHERE LTRIM(RTRIM(tblCustTrans.strCustName)) = LTRIM(RTRIM(MASTERTABLE.strCustName))
    AND tblCustTransDT.bitReversed = 0
    AND tblCustTransDT.dteJournalDate <= @dteRevaluationDate
    AND (tblCustTrans.strOrdDocID IS NULL
    OR (tblCustTrans.strInvDocID IS NOT NULL
    AND tblCustTrans.strOrdDocID IS NOT NULL))
    GROUP BY tblCustTransDT.lngCustTrID
    HAVING SUM(tblCustTransDT.decAmount) = 0
    AND SUM(tblCustTransDT.decAmountF) = 0)
    )
    GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)),
             tblCustomers.strCustDesc,
             tblCustomers.strTerm,
             tblCustomers.strCurrency,
             tblCustTransDT.bitIsForeign,
             tblCustTransDT.decAmount,
             tblCustTransDT.decAmountF
    )

		 UPDATE #Temp
		 SET decBalDue = #Temp.strCurrSymbol + ' ' + #Temp2.decAmountF,
		     decBalDueF = #Temp2.decAmountF,
			  decBalDueValid = #Temp2.decAmount
		 FROM #Temp2
		 WHERE #Temp2.strCustName = #Temp.strCustName

		 IF(ISNULL(@SQSearchText,'') = '')
		 BEGIN	  
			;With CustomerResult1 as (
			SELECT ROW_NUMBER() Over (Order by strCustName ASC) AS RowNum, strCustName, strCustDesc, strCity, strPhone, strField1, strField2, strField3, strField4, strField5, strField6, strCurrency, strCurrSymbol, decBalDue, decBalDueF, bitInactive
			FROM #Temp (NOLOCK)
			WHERE (strCurrency <> @HomeCurrencyCode)
			AND (CAST(decBalDueValid AS decimal(18,4)) <> 0.00 OR CAST(decBalDueF AS decimal(18,4)) <> 0.00)  
			AND (strCustName NOT IN (SELECT Value FROM [fnSplitStringAsTable]((@lstGridAccount), (','))))
			)  
					Select 
					strCustName, strCustDesc, strCity, strPhone, strField1, strField2, strField3, strField4, strField5, strField6, strCurrency, strCurrSymbol, decBalDue, decBalDueF, bitInactive
					,(Select Count(A.strCustName) from CustomerResult1 A) AS Total
					 from CustomerResult1
					wHERE  RowNum >= (@Offset + 1)
					AND RowNum <= (@Offset + @PageSize)	
					ORDER  BY RowNum
		 
		 END
		 ELSE
		 BEGIN
		 	;With CustomerResult1 as (
			SELECT  ROW_NUMBER() Over (Order by strCustName ASC) AS RowNum, strCustName, strCustDesc, strCity, strPhone, strField1, strField2, strField3, strField4, strField5, strField6, strCurrency, strCurrSymbol, decBalDue, decBalDueF, bitInactive
			FROM #Temp (NOLOCK)
			WHERE (strCurrency <> @HomeCurrencyCode)
			AND (CAST(decBalDueValid AS decimal(18,4)) <> 0.00 OR CAST(decBalDueF AS decimal(18,4)) <> 0.00)  
			AND (strCustName NOT IN (SELECT Value FROM [fnSplitStringAsTable]((@lstGridAccount), (','))))
			AND (strCustName Like  '%'+@SQSearchText+'%'
					OR strCustDesc Like  '%'+@SQSearchText+'%'
					OR strCity Like  '%'+@SQSearchText+'%'
					OR strPhone Like  '%'+@SQSearchText+'%'
					OR strCurrency Like  '%'+@SQSearchText+'%'
					)
			)  
					Select strCustName, strCustDesc, strCity, strPhone, strField1, strField2, strField3, strField4, strField5, strField6, strCurrency, strCurrSymbol, decBalDue, decBalDueF, bitInactive 
					,(Select Count(A.strCustName) from CustomerResult1 A) AS Total
					from CustomerResult1
					wHERE  RowNum >= (@Offset + 1)
					AND RowNum <= (@Offset + @PageSize)	
					ORDER  BY RowNum
			
		 END
		 

END
ELSE
BEGIN
	
		IF(ISNULL(@SQSearchText,'') = '')
		BEGIN
	  
					;With CustomerResult1 as (
					SELECT ROW_NUMBER() Over (Order by strCustName ASC) AS RowNum, 
								strCustName,strCustDesc,strCity,strPhone,strField1,strField2,strField3,strField4,strField5,strField6,tblCustomers.strCurrency,
							tblCurrency.strCurrSymbol,
					       (tblCurrency.strCurrSymbol + ' ' + CAST(CASE WHEN tblCurrency.strCurrency = @HomeCurrencyCode THEN decbaldue ELSE decbalduef END AS VARCHAR(22)) ) AS decBalDue,
					       decBalDueF,bitInactive
					FROM   tblCustomers (NOLOCK)
					    INNER JOIN [dbo].[tblCurrency] (NOLOCK)  ON tblCurrency.strCurrency = tblCustomers.strCurrency
					WHERE
					(@IsActive IS NULL OR @IsActive = 1 OR (@IsActive = 0 AND bitInactive = 0)) -- Checked for Active and In Active customers
					AND (@IsInvoice IS NULL OR @IsInvoice = 0 OR ( @IsInvoice = 1 AND bitInvWorkflowNew = 1)) -- Checked for invoice
					AND (@Option IS NULL OR @Option = 1 OR (@Option = 2 AND decOpenOrders <> 0) OR (@Option = 3 AND decBalDue <> 0)) -- For 1 = ALL, 2 = Orders, 3 = Balances
					AND (@SQCurrency IS NULL OR (tblCustomers.strCurrency = @SQCurrency)) -- Checked for selected currency
					AND (@CheckNationalAcc IS NULL OR (strCustName NOT IN (SELECT CUST1.strCustName FROM   tblCustomers (NOLOCK) CUST1 WHERE  strParentCust IN 
																		(SELECT CUST2.strCustName FROM   tblCustomers (NOLOCK) CUST2 WHERE  CUST2.intNAPrintMethod = @CheckNationalAcc))))
					AND (@SQUserName IS NULL OR (strCustCategory IN (
											SELECT tblCustomerCat.strCustCategory 
											FROM   tblCustomerCat (NOLOCK)
					                      LEFT JOIN tblCustomerCatSec (NOLOCK) ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					                      WHERE  ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)
					                      FROM   tblCustomerCatSec (NOLOCK)
					                      WHERE  tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0
					                      OR ( ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM   tblCustomerCatSec (NOLOCK) 
											WHERE  tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName))))	
					)  
					Select strCustName,strCustDesc,strCity,strPhone,strField1,strField2,strField3,strField4,strField5,strField6,strCurrency,strCurrSymbol,decBalDue,decBalDueF,bitInactive
					,(Select Count(A.strCustName) from CustomerResult1 A) AS Total
					 from CustomerResult1
					wHERE  RowNum >= (@Offset + 1)
					AND RowNum <= (@Offset + @PageSize)	
					ORDER  BY RowNum
	  END
	  ELSE
	  BEGIN
					;With CustomerResult1 as (
					SELECT ROW_NUMBER() Over (Order by strCustName ASC) AS RowNum, strCustName,strCustDesc,strCity,strPhone,strField1,strField2,strField3,strField4,strField5,strField6,tblCustomers.strCurrency,
							tblCurrency.strCurrSymbol,
					       (tblCurrency.strCurrSymbol + ' ' + CAST(CASE WHEN tblCurrency.strCurrency = @HomeCurrencyCode THEN decbaldue ELSE decbalduef END AS VARCHAR(22)) ) AS decBalDue,
					       decBalDueF,bitInactive					   
					FROM   tblCustomers (NOLOCK)
					     INNER JOIN [dbo].[tblCurrency] (NOLOCK)  ON tblCurrency.strCurrency = tblCustomers.strCurrency
					WHERE
					(@IsActive IS NULL OR @IsActive = 1 OR (@IsActive = 0 AND bitInactive = 0)) -- Checked for Active and In Active customers
					AND (@IsInvoice IS NULL OR @IsInvoice = 0 OR ( @IsInvoice = 1 AND bitInvWorkflowNew = 1)) -- Checked for invoice
					AND (@Option IS NULL OR @Option = 1 OR (@Option = 2 AND decOpenOrders <> 0) OR (@Option = 3 AND decBalDue <> 0)) -- For 1 = ALL, 2 = Orders, 3 = Balances
					AND (@SQCurrency IS NULL OR (tblCustomers.strCurrency = @SQCurrency)) -- Checked for selected currency
					AND (@CheckNationalAcc IS NULL OR (strCustName NOT IN (SELECT CUST1.strCustName FROM   tblCustomers (NOLOCK) CUST1 WHERE  strParentCust IN 
																		(SELECT CUST2.strCustName FROM   tblCustomers (NOLOCK) CUST2 WHERE  CUST2.intNAPrintMethod = @CheckNationalAcc))))
					AND (@SQUserName IS NULL OR (strCustCategory IN (
											SELECT tblCustomerCat.strCustCategory 
											FROM   tblCustomerCat (NOLOCK)
					                      LEFT JOIN tblCustomerCatSec (NOLOCK) ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					                      WHERE  ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)
					                      FROM   tblCustomerCatSec (NOLOCK)
					                      WHERE  tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0
					                      OR ( ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM   tblCustomerCatSec (NOLOCK) 
											WHERE  tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName))))	 
					AND (strCustName Like  '%'+@SQSearchText+'%'
					OR strCustDesc Like  '%'+@SQSearchText+'%'
					OR strCity Like  '%'+@SQSearchText+'%'
					OR strPhone Like  '%'+@SQSearchText+'%'
					OR tblCustomers.strCurrency Like  '%'+@SQSearchText+'%'
					)
					)  
					Select strCustName,strCustDesc,strCity,strPhone,strField1,strField2,strField3,strField4,strField5,strField6,strCurrency,strCurrSymbol,decBalDue,decBalDueF,bitInactive
					
					,(Select Count(A.strCustName) from CustomerResult1 A) AS Total
					from CustomerResult1
					wHERE  RowNum >= (@Offset + 1)
					AND RowNum <= (@Offset + @PageSize)	
					ORDER  BY RowNum
	  END

END
END  
GO
/****** Object:  StoredProcedure [dbo].[SPGetEmployees]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SPGetEmployees]      
@SQstrSearchText nvarchar(100) = NULL  
AS        
BEGIN        
IF @SQstrSearchText IS NULL  
BEGIN  
 SELECT strEmpNumber AS 'Employee Number', strEmpName AS 'Employee Name',strSurname AS 'Surname',strTagNo AS 'Tag No', strTelNo AS 'Tel No', strEmail As 'Email'    
 FROM tblEmployees  
END  
ELSE  
BEGIN  
 SELECT strEmpNumber AS 'Employee Number', strEmpName AS 'Employee Name',strSurname AS 'Surname',strTagNo AS 'Tag No', strTelNo AS 'Tel No', strEmail As 'Email'    
 FROM tblEmployees WHERE (strEmpNumber LIKE '%' + @SQstrSearchText + '%') OR (strEmpName LIKE '%' + @SQstrSearchText + '%') OR  
 (strEmail LIKE '%' + @SQstrSearchText + '%') OR (strTagNo LIKE '%' + @SQstrSearchText + '%') OR (strSurname LIKE '%' + @SQstrSearchText + '%')  
 OR (strTelNo LIKE '%' + @SQstrSearchText + '%')  
END  
END   
GO
/****** Object:  StoredProcedure [dbo].[SPGetMissingBIViews]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[SPGetMissingBIViews]    Script Date: 25-10-2019 10:38:47 ******/
CREATE Procedure [dbo].[SPGetMissingBIViews]
 @strViewName nvarchar(400)=NULL
,@strDateFilter nvarchar(400)=NULL
,@dateFromDate Datetime=NULL
,@dateToDate Datetime=NULL
,@strDateFilterCriteria nvarchar(200)=NULL
AS
BEGIN

Declare @strFilter as Nvarchar(Max)
Declare @strQuery nvarchar(4000)

Set @strFilter =  N' Where CAST(['+@strDateFilter+'] AS DATE) between Cast('''+Cast(@dateFromDate as nvarchar(100)) +'''AS DATE) AND CAST('''+Cast(@dateToDate as nvarchar(100))+''' as Date)'
Set @strQuery='Select * from '+@strViewName +' '+ Case When @strDateFilterCriteria='ALL' or isnull(@strDateFilter,'')='' Then ' ' else @strFilter end
execute(@strQuery)

End
GO
/****** Object:  StoredProcedure [dbo].[SPGetSalesOrderConvertDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPGetSalesOrderConvertDetails] 
(
	@SQdocNumber nvarchar(MAX)
)
AS
BEGIN
		SELECT	tblOrderDocDT.strOrdDocID,
				tblOrderDoc.dteJournalDate,
				tblOrderDocDT.strPartNumber,
				tblOrderDocDT.strPartDesc,
				tblOrderDocDT.strLocation,
				tblOrderDocDT.strUnit,
				tblOrderDocDT.decQty,
				tblOrderDocDT.decQtyRemaining,
				0.00 AS decInvoiceQty,
				CAST(0 as bit) as blnSelected,
				tblOrderDocDT.intLineNo
		FROM tblOrderDocDT
		INNER JOIN tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
		INNER JOIN tblOrderDoc ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
		LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
								   AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
		LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
		WHERE tblOrderDocDT.strOrdDocID IN (SELECT Value FROM [fnSplitStringAsTable]((@SQdocNumber),(',')))
		AND tblOrderDocDT.decQtyRemaining <> 0 
		AND tblOrderDocDT.bitDiscountTax = 0 
		ORDER BY tblOrderDocDT.strOrdDocID ,tblOrderDocDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[SPGetVendors]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPGetVendors]
(
  @IsActive         BIT = NULL,
  @IsInvoice        BIT = NULL,
  @HomeCurrencyCode VARCHAR(20) = NULL,
  @SQCurrency       VARCHAR(20)= NULL,
  @Option           INT = 1,-- For 1 = ALL, 2 = Orders, 3 = Balances
  @SQUserName       VARCHAR(50) = NULL,
  @IsForeignCurrencyRevaluation  BIT = NULL,
  @dteRevaluationDate DATETIME = NULL,
  @lstGridAccount NVARCHAR(MAX) = NULL
)
AS
  BEGIN
	CREATE TABLE #Temp
(
	strVendName NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS,
	strVendDesc NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
	strCity NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS,
	strPhone NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS,
	bitInventoryVendor bit,
	strField1 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
    strField2 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
    strField3 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
    strField4 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
    strField5 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
    strField6 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
    strCurrency NVARCHAR(6) COLLATE SQL_Latin1_General_CP1_CI_AS,
    strCurrSymbol NVARCHAR(10) COLLATE SQL_Latin1_General_CP1_CI_AS,
	decBalDue VARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS,
	decBalDueF VARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS,
	bitInactive bit,
	decBalDueValid VARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS
  )

  CREATE TABLE #Temp2
  (
  strAccountNumber NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS,
  LocalAmount NVARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS,
	ForeignAmount NVARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS,
  )

	  

IF @IsForeignCurrencyRevaluation = 1
BEGIN
	  INSERT INTO #Temp
      SELECT strVendName,strVendDesc,strCity,strPhone,bitInventoryVendor,strField1,strField2,strField3,strField4,strField5,strField6,tblVendors.strCurrency,tblCurrency.strCurrSymbol,
      (tblCurrency.strCurrSymbol + ' 0.00') AS decBalDue,
      decBalDueF=0.00,bitInactive, decBalDueValid=0.00
      FROM tblVendors
      INNER JOIN tblCurrency ON tblVendors.strCurrency = tblCurrency.strCurrency
      WHERE (@IsActive IS NULL OR @IsActive = 1 OR (@IsActive = 0 AND bitInactive = 0)) -- Checked for Active and In Active customers
      AND (@IsInvoice IS NULL OR @IsInvoice = 0 OR (@IsInvoice = 1 AND bitInvWorkflowNew = 1)) -- Checked for invoice
      AND (@Option IS NULL OR @Option = 1 OR (@Option = 2 AND decOpenOrders <> 0) OR (@Option = 3 AND decBalDue <> 0)) -- For 1 = ALL, 2 = Orders, 3 = Balances
      AND (@SQCurrency IS NULL OR (tblVendors.strCurrency = @SQCurrency)) -- Checked for selected currency
      AND (@SQUserName IS NULL OR (strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat
                                   LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
								   WHERE  ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory)
                                   FROM   tblVendorCatSec
                                   WHERE  tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0
                                   OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM   tblVendorCatSec 
								   WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0
                                   AND tblVendorCatSec.strUserName = @SQUserName))))
      ORDER  BY strVendName

  INSERT INTO #Temp2 (strAccountNumber, LocalAmount, ForeignAmount)
    (SELECT
      LTRIM(RTRIM(MASTERTABLE.strVendName)) AS strAccountNumber,
      SUM(tblVendTransDT.decAmount) AS LocalAmount,
      SUM(tblVendTransDT.decAmountF) AS ForeignAmount
    FROM tblVendTrans AS MASTERTABLE
    INNER JOIN tblVendors ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(tblVendors.strVendName))
    INNER JOIN tblVendTransDT ON MASTERTABLE.lngVendTrID = tblVendTransDT.lngVendTrID
    WHERE (tblVendTransDT.bitReversed = 0)
    AND (tblVendTransDT.dteJournalDate <= @dteRevaluationDate)
    AND (tblVendTransDT.lngVendTrID NOT IN (SELECT
      tblVendTransDT.lngVendTrID
    FROM tblVendTrans
    INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
    WHERE LTRIM(RTRIM(tblVendTrans.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName))
    AND tblVendTransDT.bitReversed = 0
    AND tblVendTransDT.dteJournalDate <= @dteRevaluationDate
    GROUP BY tblVendTransDT.lngVendTrID
    HAVING SUM(tblVendTransDT.decAmount) = 0
    AND SUM(tblVendTransDT.decAmountF) = 0)
    )
    GROUP BY LTRIM(RTRIM(MASTERTABLE.strVendName)),
             tblVendors.strVendDesc,
             tblVendors.strTerm,
             tblVendors.strCurrency,
             tblVendTransDT.bitIsForeign)

  UPDATE #Temp
  SET decBalDue = #Temp.strCurrSymbol + ' ' + #Temp2.ForeignAmount,
      decBalDueF = #Temp2.ForeignAmount,
	  decBalDueValid = #Temp2.LocalAmount
  FROM #Temp2 
  WHERE #Temp2.strAccountNumber = #Temp.strVendName

  SELECT * FROM #Temp
  WHERE strCurrency <> @HomeCurrencyCode
  AND (CAST(decBalDueValid AS decimal(18,4)) <> 0.00 OR CAST(decBalDueF AS decimal(18,4)) <> 0.00)  
  AND strVendName NOT IN (SELECT Value FROM [fnSplitStringAsTable]((@lstGridAccount), (',')))
  ORDER BY strVendName

END
ELSE IF @dteRevaluationDate IS NOT NULL
BEGIN
	SELECT strVendName,strVendDesc,strCity,strPhone,bitInventoryVendor,strField1,strField2,strField3,strField4,strField5,strField6,tblVendors.strCurrency,tblCurrency.strCurrSymbol,
      (tblCurrency.strCurrSymbol + ' ' + CAST(ISNULL(VendBal.decBaldue,0) AS VARCHAR(22))) AS decBalDue,
      decBalDueF,bitInactive
      FROM tblVendors
      INNER JOIN tblCurrency ON tblVendors.strCurrency = tblCurrency.strCurrency
	  LEFT JOIN (SELECT strVendName As VendName, ISNULL(SUM(CASE WHEN strCurrency = @HomeCurrencyCode THEN tblVendTransDT.decAmount ELSE tblVendTransDT.decAmountF END),0) AS decBalDue FROM tblVendTrans 
	  INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID WHERE tblVendTransDT.bitReversed = 0 
	  AND tblVendTrans.dteJournalDate <= @dteRevaluationDate GROUP BY strVendName) AS VendBal ON tblVendors.strVendName = VendBal.VendName
      WHERE (@IsActive IS NULL OR @IsActive = 1 OR (@IsActive = 0 AND bitInactive = 0)) -- Checked for Active and In Active customers
      AND (@IsInvoice IS NULL OR @IsInvoice = 0 OR (@IsInvoice = 1 AND bitInvWorkflowNew = 1)) -- Checked for invoice
      AND (@Option IS NULL OR @Option = 1 OR (@Option = 2 AND decOpenOrders <> 0) OR (@Option = 3 AND ISNULL(VendBal.decBaldue,0) <> 0)) -- For 1 = ALL, 2 = Orders, 3 = Balances
      AND (@SQCurrency IS NULL OR (tblVendors.strCurrency = @SQCurrency)) -- Checked for selected currency
      AND (@SQUserName IS NULL OR (strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat
                                   LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
								   WHERE  ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory)
                                   FROM   tblVendorCatSec
                                   WHERE  tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0
                                   OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM   tblVendorCatSec 
								   WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0
                                   AND tblVendorCatSec.strUserName = @SQUserName))))
      ORDER  BY strVendName
END
ELSE 
BEGIN
  SELECT strVendName,strVendDesc,strCity,strPhone,bitInventoryVendor,strField1,strField2,strField3,strField4,strField5,strField6,tblVendors.strCurrency,tblCurrency.strCurrSymbol,
      (tblCurrency.strCurrSymbol + ' ' + CAST(CASE WHEN tblCurrency.strCurrency = @HomeCurrencyCode THEN decbaldue ELSE decbalduef END AS VARCHAR(22)) ) AS decBalDue,
      decBalDueF,bitInactive
      FROM tblVendors
      INNER JOIN tblCurrency ON tblVendors.strCurrency = tblCurrency.strCurrency
      WHERE (@IsActive IS NULL OR @IsActive = 1 OR (@IsActive = 0 AND bitInactive = 0)) -- Checked for Active and In Active customers
      AND (@IsInvoice IS NULL OR @IsInvoice = 0 OR (@IsInvoice = 1 AND bitInvWorkflowNew = 1)) -- Checked for invoice
      AND (@Option IS NULL OR @Option = 1 OR (@Option = 2 AND decOpenOrders <> 0) OR (@Option = 3 AND decBalDue <> 0)) -- For 1 = ALL, 2 = Orders, 3 = Balances
      AND (@SQCurrency IS NULL OR (tblVendors.strCurrency = @SQCurrency)) -- Checked for selected currency
      AND (@SQUserName IS NULL OR (strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat
                                   LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
								   WHERE  ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory)
                                   FROM   tblVendorCatSec
                                   WHERE  tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0
                                   OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM   tblVendorCatSec 
								   WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0
                                   AND tblVendorCatSec.strUserName = @SQUserName))))
      ORDER  BY strVendName
END
END
GO
/****** Object:  StoredProcedure [dbo].[spInvLocationBin_SearchByLocation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[spInvLocationBin_SearchByLocation]
	-- Add the parameters for the stored procedure here
	@SQstrLocationName nvarchar(10)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT * FROM tblInvLocBin WHERE strLocName = @SQstrLocationName
END

GO
/****** Object:  StoredProcedure [dbo].[SPInvoice]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** END [GetWHContainerItem] ***********/

/******************* Start [SPInvoice] ********************/
CREATE PROCEDURE [dbo].[SPInvoice] @SQDocNumber AS VARCHAR(250) = NULL
	,@IsCustStockCodes BIT -- = 1 -- Remove this later default value  
AS
BEGIN
	IF (@IsCustStockCodes = 1)
	BEGIN
		SELECT tblDocDT.*
			,tblInvoiceDocDTPrj.strProjNumber
			,tblTaxCodeExt.decRate
			,tblProjects.strProjName
			,tblInv.strBarCode
			,tblInv.strBarCode2
			,(
				SELECT bitInvImgOnSI
				FROM tblCoOpts
				) AS bitShowImage
			,tblInvImg.imgData AS imgImage
			,tblDocDT.strPartExtendedDesc AS strExtendedDesc
			,tblInv.bitInvExtDescOnSI AS bitShowExtendedDesc
			,ISNULL(tblInvCustomer.strItemCode, '') AS strItemCode
			,ISNULL(tblInvCustomer.strItemDesc, '') AS strItemDesc
			,tblInvoiceDoc.strInvDocID AS tblInvoiceDoc_strInvDocID
			,tblInvoiceDoc.strCustName AS tblInvoiceDoc_strCustName
			,tblInvoiceDoc.dteJournalDate AS tblInvoiceDoc_dteJournalDate
			,tblInvoiceDoc.dteRequired AS tblInvoiceDoc_dteRequired
			,tblInvoiceDoc.strSoldTo AS tblInvoiceDoc_strSoldTo
			,tblInvoiceDoc.strShipTo AS tblInvoiceDoc_strShipTo
			,tblInvoiceDoc.strReference AS tblInvoiceDoc_strReference
			,tblInvoiceDoc.decTotal AS tblInvoiceDoc_decTotal
			,tblInvoiceDoc.strNotes AS tblInvoiceDoc_strNotes
			,tblInvoiceDoc.strSalesName AS tblInvoiceDoc_strSalesName
			,tblInvoiceDoc.strAddInfo AS tblInvoiceDoc_strAddInfo
			,tblInvoiceDoc.strTerm AS tblInvoiceDoc_strTerm
			,tblInvoiceDoc.strSubFormated AS tblInvoiceDoc_strSubFormated
			,tblInvoiceDoc.strDiscFormatted AS tblInvoiceDoc_strDiscFormatted
			,tblInvoiceDoc.strVATFormatted AS tblInvoiceDoc_strVATFormatted
			,tblInvoiceDoc.strTotFormatted AS tblInvoiceDoc_strTotFormatted
			,tblInvoiceDoc.strVAT AS tblInvoiceDoc_strVAT
			,tblinvoiceDoc.strDeliveryCostFormatted AS tblInvoiceDoc_strDeliveryCostFormatted
			,(
				SELECT STUFF((
							SELECT ',' + tblInvoiceDocDTSerial.strSerialNumber
							FROM tblInvoiceDocDTSerial
							INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTSerial.strInvDocID = tblInvoiceDocDT.strInvDocID
								AND tblInvoiceDocDTSerial.intLineNo = tblInvoiceDocDT.intLineNo
							LEFT JOIN tblInvSerialExt ON tblInvoiceDocDT.strPartNumber = tblInvSerialExt.strPartNumber
								AND tblInvoiceDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
							INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
							LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
							WHERE tblInvoiceDocDTSerial.strInvDocID = @SQDocNumber
								AND tblInvSerialTypes.bitPrintInv = 1
								AND tblInvoiceDocDT.intLineNo = tblDocDT.intLineNo
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strSerialNumber
			,(
				SELECT STUFF((
							SELECT ',' + TEMP.PartNumber
							FROM (
								SELECT COMP.strPartNumber AS PartNumber
								FROM tblInvoiceDocDT DTL
								INNER JOIN tblManBOM BOM ON DTL.strPartNumber = BOM.strPartNumber
									AND DTL.strLocation = BOM.strLocation
								INNER JOIN tblManBOMCompInv COMP ON BOM.lngManBOMID = COMP.lngManBOMID
								INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber
								INNER JOIN tblInv INV2 ON BOM.strPartNumber = INV2.strPartNumber
								WHERE (DTL.strInvDocID = @SQDocNumber)
									AND (BOM.bitInactive = 0)
									AND (BOM.bitPrintInv = 1)
									AND DTL.intLineNo = tblDocDT.intLineNo
									AND BOM.strPartNumber = tblDocDT.strPartNumber
								
								UNION ALL
								
								SELECT tblInvoiceDocDT.strPartNumber AS PartNumber
								FROM tblInvoiceDocDTBOM
								INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTBOM.strInvDocID = tblInvoiceDocDT.strInvDocID
									AND tblInvoiceDocDTBOM.intMainLineNo = tblInvoiceDocDT.intLineNo
								INNER JOIN tblInv ON tblInvoiceDocDTBOM.strPartItemNumber = tblInv.strPartNumber
								INNER JOIN tblInv Inv2 ON tblInvoiceDocDT.strPartNumber = Inv2.strPartNumber
								WHERE tblInvoiceDocDT.strInvDocID = @SQDocNumber
									AND tblInvoiceDocDT.intLineNo = tblDocDT.intLineNo
									AND Inv2.bitAutoBuild = 1
									AND Inv2.bitPrintComp = 1
								GROUP BY tblInvoiceDocDT.strPartNumber
									,Inv2.strDesc
									,tblInvoiceDocDTBOM.strPartItemNumber
									,tblInv.strDesc
									,tblInvoiceDocDT.intLineNo
									,tblInv.strUnitOfMeasure
								) AS TEMP
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strManBOMPartNumber
			,(
				SELECT STUFF((
							SELECT ',' + tblInvoiceDocDT.strPartNumber
							FROM tblInvoiceDocDT
							INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
							INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
							LEFT JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
								AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
							LEFT JOIN tblProjects ON tblInvoiceDocDTPrj.strProjNumber = tblProjects.strProjNumber
							LEFT JOIN tblInvImg ON tblInvoiceDocDT.strPartNumber = tblInvImg.strPartNumber
								AND tblInvImg.bitDefaultImage = 1
							LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
								AND tblInvoiceDoc.strCustName = tblInvCustomer.strCustName
							LEFT JOIN tblTaxCodeExt on tblInvoiceDocDT.strTaxCode  = tblTaxCodeExt.strTaxCode
							WHERE tblInvoiceDocDT.strInvDocID = @SQDocNumber
								AND tblInvoiceDocDT.bitDiscountTax = 0
								AND tblInvoiceDocDT.bitDelCost = 1
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strDeliveryCostPartNumber
		FROM tblInvoiceDocDT tblDocDT
		INNER JOIN tblInvoiceDoc ON tblDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
		INNER JOIN tblInv ON tblDocDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvoiceDocDTPrj ON tblDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
			AND tblDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
		LEFT JOIN tblProjects ON tblInvoiceDocDTPrj.strProjNumber = tblProjects.strProjNumber
		LEFT JOIN tblInvImg ON tblDocDT.strPartNumber = tblInvImg.strPartNumber
			AND tblInvImg.bitDefaultImage = 1
		LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
			AND tblInvoiceDoc.strCustName = tblInvCustomer.strCustName
		LEFT JOIN tblTaxCodeExt on tblDocDT.strTaxCode  = tblTaxCodeExt.strTaxCode
		WHERE tblDocDT.strInvDocID = @SQDocNumber
			AND tblDocDT.bitDiscountTax = 0
			AND tblDocDT.bitDelCost = 0
		ORDER BY tblDocDT.intLineNo
	END
	ELSE
	BEGIN
		SELECT tblDocDT.*
			,tblInvoiceDocDTPrj.strProjNumber
			,tblProjects.strProjName
			,taxCodeExt.decRate
			,tblInv.strBarCode
			,tblInv.strBarCode2
			,(
				SELECT bitInvImgOnSI
				FROM tblCoOpts
				) AS bitShowImage
			,tblInvImg.imgData AS imgImage
			,tblDocDT.strPartExtendedDesc AS strExtendedDesc
			,tblInv.bitInvExtDescOnSI AS bitShowExtendedDesc
			,'' AS strItemCode
			,'' AS strItemDesc
			,tblInvoiceDoc.strInvDocID AS tblInvoiceDoc_strInvDocID
			,tblInvoiceDoc.strCustName AS tblInvoiceDoc_strCustName
			,tblInvoiceDoc.dteJournalDate AS tblInvoiceDoc_dteJournalDate
			,tblInvoiceDoc.dteRequired AS tblInvoiceDoc_dteRequired
			,tblInvoiceDoc.strSoldTo AS tblInvoiceDoc_strSoldTo
			,tblInvoiceDoc.strShipTo AS tblInvoiceDoc_strShipTo
			,tblInvoiceDoc.strReference AS tblInvoiceDoc_strReference
			,tblInvoiceDoc.decTotal AS tblInvoiceDoc_decTotal
			,tblInvoiceDoc.strNotes AS tblInvoiceDoc_strNotes
			,tblInvoiceDoc.strSalesName AS tblInvoiceDoc_strSalesName
			,tblInvoiceDoc.strAddInfo AS tblInvoiceDoc_strAddInfo
			,tblInvoiceDoc.strTerm AS tblInvoiceDoc_strTerm
			,tblInvoiceDoc.strSubFormated AS tblInvoiceDoc_strSubFormated
			,tblInvoiceDoc.strDiscFormatted AS tblInvoiceDoc_strDiscFormatted
			,tblInvoiceDoc.strVATFormatted AS tblInvoiceDoc_strVATFormatted
			,tblInvoiceDoc.strTotFormatted AS tblInvoiceDoc_strTotFormatted
			,tblInvoiceDoc.strVAT AS tblInvoiceDoc_strVAT
			,tblinvoiceDoc.strDeliveryCostFormatted AS tblInvoiceDoc_strDeliveryCostFormatted
			,(
				SELECT STUFF((
							SELECT ',' + tblInvoiceDocDTSerial.strSerialNumber
							FROM tblInvoiceDocDTSerial
							INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTSerial.strInvDocID = tblInvoiceDocDT.strInvDocID
								AND tblInvoiceDocDTSerial.intLineNo = tblInvoiceDocDT.intLineNo
							LEFT JOIN tblInvSerialExt ON tblInvoiceDocDT.strPartNumber = tblInvSerialExt.strPartNumber
								AND tblInvoiceDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
							INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
							LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
							WHERE tblInvoiceDocDTSerial.strInvDocID = @SQDocNumber
								AND tblInvSerialTypes.bitPrintInv = 1
								AND tblInvoiceDocDT.intLineNo = tblDocDT.intLineNo
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strSerialNumber
			,(
				SELECT STUFF((
							SELECT ',' + TEMP.PartNumber
							FROM (
								SELECT COMP.strPartNumber AS PartNumber
								FROM tblInvoiceDocDT DTL
								INNER JOIN tblManBOM BOM ON DTL.strPartNumber = BOM.strPartNumber
									AND DTL.strLocation = BOM.strLocation
								INNER JOIN tblManBOMCompInv COMP ON BOM.lngManBOMID = COMP.lngManBOMID
								INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber
								INNER JOIN tblInv INV2 ON BOM.strPartNumber = INV2.strPartNumber
								WHERE (DTL.strInvDocID = @SQDocNumber)
									AND (BOM.bitInactive = 0)
									AND (BOM.bitPrintInv = 1)
									AND DTL.intLineNo = tblDocDT.intLineNo
									AND BOM.strPartNumber = tblDocDT.strPartNumber
								
								UNION ALL
								
								SELECT tblInvoiceDocDT.strPartNumber AS PartNumber
								FROM tblInvoiceDocDTBOM
								INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTBOM.strInvDocID = tblInvoiceDocDT.strInvDocID
									AND tblInvoiceDocDTBOM.intMainLineNo = tblInvoiceDocDT.intLineNo
								INNER JOIN tblInv ON tblInvoiceDocDTBOM.strPartItemNumber = tblInv.strPartNumber
								INNER JOIN tblInv Inv2 ON tblInvoiceDocDT.strPartNumber = Inv2.strPartNumber
								WHERE tblInvoiceDocDT.strInvDocID = @SQDocNumber
									AND tblInvoiceDocDT.intLineNo = tblDocDT.intLineNo
									AND Inv2.bitAutoBuild = 1
									AND Inv2.bitPrintComp = 1
								GROUP BY tblInvoiceDocDT.strPartNumber
									,Inv2.strDesc
									,tblInvoiceDocDTBOM.strPartItemNumber
									,tblInv.strDesc
									,tblInvoiceDocDT.intLineNo
									,tblInv.strUnitOfMeasure
								) AS TEMP
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strManBOMPartNumber
			,(
				SELECT STUFF((
							SELECT ',' + tblInvoiceDocDT.strPartNumber
							FROM tblInvoiceDocDT
							INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
							LEFT JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
								AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
							LEFT JOIN tblProjects ON tblInvoiceDocDTPrj.strProjNumber = tblProjects.strProjNumber
							LEFT JOIN tblInvImg ON tblInvoiceDocDT.strPartNumber = tblInvImg.strPartNumber
								AND tblInvImg.bitDefaultImage = 1
							LEFT JOIN tblTaxCodeExt taxCodeExt on tblInvoiceDocDT.strTaxCode  = taxCodeExt.strTaxCode
							WHERE tblInvoiceDocDT.strInvDocID = @SQDocNumber
								AND tblInvoiceDocDT.bitDiscountTax = 0
								AND tblInvoiceDocDT.bitDelCost = 1
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strDeliveryCostPartNumber
		--FROM tblInvoiceDocDT tblDocDT  
		--INNER JOIN tblInv ON tblDocDT.strPartNumber = tblInv.strPartNumber  
		FROM tblInvoiceDocDT tblDocDT
		INNER JOIN tblInvoiceDoc ON tblDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
		INNER JOIN tblInv ON tblDocDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvoiceDocDTPrj ON tblDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
			AND tblDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
		LEFT JOIN tblProjects ON tblInvoiceDocDTPrj.strProjNumber = tblProjects.strProjNumber
		LEFT JOIN tblInvImg ON tblDocDT.strPartNumber = tblInvImg.strPartNumber
			AND tblInvImg.bitDefaultImage = 1
		LEFT JOIN tblTaxCodeExt taxCodeExt on tblDocDT.strTaxCode  = taxCodeExt.strTaxCode
		WHERE tblDocDT.strInvDocID = @SQDocNumber
			AND tblDocDT.bitDiscountTax = 0
			AND tblDocDT.bitDelCost = 0
		ORDER BY tblDocDT.intLineNo
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPInvoiceDeliveryCostData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*************End [dbo].[GettblInvoiceDocDataForSIReport]  *************/

/*************Start [dbo].[SPInvoiceDeliveryCostData]  *************/


CREATE PROCEDURE [dbo].[SPInvoiceDeliveryCostData] @SQDocNumber AS VARCHAR(250) = NULL
	,@IsCustStockCodes BIT -- = 1 -- Remove this later default value
AS
BEGIN
	IF (@IsCustStockCodes = 1)
	BEGIN
		SELECT tblInvoiceDocDT.*
			,tblInvoiceDocDTPrj.strProjNumber
			,tblProjects.strProjName
			,tblInv.strBarCode
			,tblInv.strBarCode2
			,(
				SELECT bitInvImgOnSI
				FROM tblCoOpts
				) AS bitShowImage
			,tblInvImg.imgData AS imgImage
			,tblInvoiceDocDT.strPartExtendedDesc AS strExtendedDesc
			,tblInv.bitInvExtDescOnSI AS bitShowExtendedDesc
			,ISNULL(tblInvCustomer.strItemCode, '') AS strItemCode
			,ISNULL(tblInvCustomer.strItemDesc, '') AS strItemDesc
		FROM tblInvoiceDocDT
		INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
		INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
			AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
		LEFT JOIN tblProjects ON tblInvoiceDocDTPrj.strProjNumber = tblProjects.strProjNumber
		LEFT JOIN tblInvImg ON tblInvoiceDocDT.strPartNumber = tblInvImg.strPartNumber
			AND tblInvImg.bitDefaultImage = 1
		LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
			AND tblInvoiceDoc.strCustName = tblInvCustomer.strCustName
		WHERE tblInvoiceDocDT.strInvDocID = @SQDocNumber
			AND tblInvoiceDocDT.bitDiscountTax = 0
			AND tblInvoiceDocDT.bitDelCost = 1
		ORDER BY tblInvoiceDocDT.intLineNo
	END
	ELSE
	BEGIN
		SELECT tblInvoiceDocDT.*
			,tblInvoiceDocDTPrj.strProjNumber
			,tblProjects.strProjName
			,tblInv.strBarCode
			,tblInv.strBarCode2
			,(
				SELECT bitInvImgOnSI
				FROM tblCoOpts
				) AS bitShowImage
			,tblInvImg.imgData AS imgImage
			,tblInvoiceDocDT.strPartExtendedDesc AS strExtendedDesc
			,tblInv.bitInvExtDescOnSI AS bitShowExtendedDesc
			,'' AS strItemCode
			,'' AS strItemDesc
		FROM tblInvoiceDocDT
		INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
			AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
		LEFT JOIN tblProjects ON tblInvoiceDocDTPrj.strProjNumber = tblProjects.strProjNumber
		LEFT JOIN tblInvImg ON tblInvoiceDocDT.strPartNumber = tblInvImg.strPartNumber
			AND tblInvImg.bitDefaultImage = 1
		WHERE tblInvoiceDocDT.strInvDocID = @SQDocNumber
			AND tblInvoiceDocDT.bitDiscountTax = 0
			AND tblInvoiceDocDT.bitDelCost = 1
		ORDER BY tblInvoiceDocDT.intLineNo
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPInvWOExplode]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SPInvWOExplode] 
(
@SQPartLocQty NVARCHAR(MAX) = ''
)
AS
BEGIN

CREATE TABLE #Temp1 (
[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strLocName] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decQty] [money] NOT NULL)

INSERT INTO #Temp1
SELECT	SUBSTRING(Value, 0, CHARINDEX('#L#', Value)),
		SUBSTRING(REPLACE(Value, SUBSTRING(Value, 0, CHARINDEX('#L#', Value) + 3), ''), 0, CHARINDEX('#Q#', REPLACE(Value, SUBSTRING(Value, 0, CHARINDEX('#L#', Value) + 3), ''))),
		REPLACE(Value, SUBSTRING(Value, 0, CHARINDEX('#Q#', Value) + 3),'')
FROM [fnSplitStringAsTable]((@SQPartLocQty),(','))

CREATE TABLE #Temp2 (
[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strPartDesc] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strLocName] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strInvWCCode] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decQty] [money] NOT NULL,
[decBOMQty] [money] NOT NULL,
[strBOMNotes] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decAvail] [money] NOT NULL,
[lngID] [bigint] IDENTITY(1,1) NOT NULL)

CREATE TABLE #Temp3 (
[strASMPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strASMPartDesc] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strASMLocName] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strASMInvWCCode] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decASMQty] [money] NOT NULL,
[decASMBOMQty] [money] NOT NULL,
[strASMBOMNotes] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decASMAvail] [money] NOT NULL)

INSERT INTO #Temp2
SELECT	T1.strPartNumber,
		INV.strDesc,
		T1.strLocName,
		ISNULL(INV.strInvWCCode,''),
		T1.decQty,
		INV.intBOMQty,
		ISNULL(INV.strBOMNotes,''),
		INV.decSumAvail 
FROM #Temp1 T1
INNER JOIN tblInv INV ON T1.strPartNumber = INV.strPartNumber 

WHILE EXISTS (SELECT * FROM #Temp2)
BEGIN

	DECLARE @ASMPartNumber AS nvarchar(50),
			@ASMPartDesc AS nvarchar(500),
			@ASMLocName AS nvarchar(10),
			@ASMInvWCCode AS nvarchar(20),
			@ASMQty AS money,
			@ASMBOMQty AS money,
			@ASMQtyCalc AS money,
			@ASMBOMNotes AS nvarchar(MAX),
			@ASMAvail AS money,
			@lngID AS bigint

	SELECT	@ASMPartNumber = strPartNumber,
			@ASMPartDesc = strPartDesc,
			@ASMLocName = strLocName,
			@ASMInvWCCode = strInvWCCode,
			@ASMQty = decQty,
			@ASMBOMQty = decBOMQty,
			@ASMBOMNotes = strBOMNotes,
			@ASMAvail = decAvail,
			@lngID = lngID
	FROM #Temp2 

	SET @ASMQtyCalc = ROUND(@ASMQty / @ASMBOMQty, 4)

	INSERT INTO #Temp3
	VALUES (@ASMPartNumber, @ASMPartDesc, @ASMLocName, @ASMInvWCCode, @ASMQty, @ASMBOMQty, @ASMBOMNotes, @ASMAvail)

	INSERT INTO #Temp2
	SELECT	BOM.strPartItemNumber, 
			INV2.strDesc, 
			BOM.strLocName, 
			ISNULL(INV2.strInvWCCode,''),
			ROUND((BOM.intQtyToUse * @ASMQtyCalc), 4), 
			INV2.intBOMQty, 
			INV2.strBOMNotes,
			INV2.decSumAvail 
	FROM tblInv INV
	INNER JOIN tblInvBOM BOM ON INV.strPartNumber = BOM.strPartNumber 
	INNER JOIN tblInv INV2 ON BOM.strPartItemNumber = INV2.strPartNumber 
	WHERE INV.strPartNumber = @ASMPartNumber
	AND INV2.bitUseBOM = 1

	DELETE FROM #Temp2 WHERE lngID = @lngID
	
END

SELECT	strASMPartNumber,
		strASMPartDesc,
		strASMLocName,
		strASMInvWCCode,
		SUM(decASMQty),
		decASMBOMQty,
		strASMBOMNotes,
		decASMAvail 
FROM #Temp3
GROUP BY strASMPartNumber,
		 strASMPartDesc,
		 strASMLocName,
		 strASMInvWCCode,
		 decASMBOMQty,
		 strASMBOMNotes,
		 decASMAvail

DROP TABLE #Temp1
DROP TABLE #Temp2
DROP TABLE #Temp3
END
GO
/****** Object:  StoredProcedure [dbo].[SPLoadListData]    Script Date: 26/06/2020 08:45:58 ******/

CREATE PROCEDURE [dbo].[SPLoadListData] 
AS
BEGIN
SELECT tblAccountType.strAcctType ,strCustomLabel,tblAccountType.intAcctTypeID, tblAccountClass.intAcctClassID, strDefaultLabel FROM tblAccountClass inner join tblAccountType on tblAccountClass.intAcctTypeID = tblAccountType.intAcctTypeID 
END
GO

/****** Object:  StoredProcedure [dbo].[SPMainFest]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [SPPackSlip] *****************************/ 

/*****************Start [SPMainFest] *****************************/ 

CREATE procedure [dbo].[SPMainFest]

@SQDocNumber as varchar(50)=null

AS
BEGIN	
 SELECT tblShipmentsDT.*,tblShipments.strTrackingNo,tblShipments.strWayBillNo,tblShipments.decCuVol,tblShipments.decVolD,tblShipments.decVolH,tblShipments.decVolumetricWeight,tblShipments.decVolW,tblShipments.decWeight,tblShipments.decTotalValue,tblShipments.decFactor,tblShipments.strReference AS strReferenceShipment FROM tblShipmentsDT inner join tblShipments on tblShipmentsDT.strShpDocID = tblShipments.strShpDocID
 WHERE tblShipmentsDT.strShpDocID IN (SELECT C.strShpDocID FROM tblContainersDT C WHERE C.strCntDocID =  @SQDocNumber) 
 ORDER BY tblShipmentsDT.strShpDocID,tblShipmentsDT.strInvDocID,tblShipmentsDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[SPOrderDeliveryCostData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/************* [dbo].[SPSalesOrderData] end *************/

/******************* Start [SPOrderDeliveryCostData] ********************/

CREATE PROCEDURE [dbo].[SPOrderDeliveryCostData] 
	 @SQDocNumber AS VARCHAR(250) = NULL
	,@IsCustStockCodes BIT -- = 1 -- Remove this later default value
AS
BEGIN
	IF (@IsCustStockCodes = 1)
	BEGIN		
		SELECT tblOrderDocDT.*
	,tblOrderDocDTPrj.strProjNumber
	,tblProjects.strProjName
	,ISNULL(tblInv.decSumAvail, 0) AS decSumAvail
	,ISNULL(tblInv.strBinLoc, '') AS strBinLoc
	,tblInv.strBarCode
	,tblInv.strBarCode2
	,(
		SELECT bitInvImgOnSO
		FROM tblCoOpts
		) AS bitShowImage
	,tblInvImg.imgData AS imgImage
	,tblOrderDocDT.strPartExtendedDesc AS strExtendedDesc
	,tblInv.bitInvExtDescOnSO AS bitShowExtendedDesc
	,ISNULL(tblInvCustomer.strItemCode, '') AS strItemCode
	,ISNULL(tblInvCustomer.strItemDesc, '') AS strItemDesc
	FROM fnBaseTblOrderDocDT() tblOrderDocDT
	INNER JOIN tblOrderDoc ON tblOrderDocDT.strOrdDocID = tblOrderDoc.strOrdDocID
	LEFT JOIN fnTblInvForLocJoin() tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
		AND tblOrderDocDT.strLocation = tblInv.strLocName
	LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
		AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
	LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
	LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
		AND tblInvImg.bitDefaultImage = 1
	LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
		AND tblOrderDoc.strCustName = tblInvCustomer.strCustName
	WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
		AND tblOrderDocDT.bitDiscountTax = 0
		AND tblOrderDocDT.bitDelCost = 1
	ORDER BY tblOrderDocDT.intLineNo
	END
	ELSE
	BEGIN
		SELECT tblOrderDocDT.*
	,tblOrderDocDTPrj.strProjNumber
	,tblProjects.strProjName
	,ISNULL(tblInv.decSumAvail, 0) AS decSumAvail
	,ISNULL(tblInv.strBinLoc, '') AS strBinLoc
	,tblInv.strBarCode
	,tblInv.strBarCode2
	,(
		SELECT bitInvImgOnSO
		FROM tblCoOpts
		) AS bitShowImage
	,tblInvImg.imgData AS imgImage
	,tblOrderDocDT.strPartExtendedDesc AS strExtendedDesc
	,tblInv.bitInvExtDescOnSO AS bitShowExtendedDesc
	,'' AS strItemCode
	,'' AS strItemDesc
	FROM fnBaseTblOrderDocDT() tblOrderDocDT
	LEFT JOIN fnTblInvForLocJoin() tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
		AND tblOrderDocDT.strLocation = tblInv.strLocName
	LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
		AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
	LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
	LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
		AND tblInvImg.bitDefaultImage = 1
	WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
		AND tblOrderDocDT.bitDiscountTax = 0
		AND tblOrderDocDT.bitDelCost = 1
	ORDER BY tblOrderDocDT.intLineNo
		END
	END
GO
/****** Object:  StoredProcedure [dbo].[SPPackSlip]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End [dashUpdateDashboard]*****************************/

/*****************Start [SPPackSlip] *****************************/ 

CREATE PROCEDURE [dbo].[SPPackSlip] @SQDocNumber AS VARCHAR(50) = NULL
AS
BEGIN
	SELECT *
	FROM tblShipmentsDT
	WHERE strShpDocID = @SQDocNumber
	ORDER BY strInvDocID
		,intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[SPPickTicket]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*****************End  [GetPickTicketsReportData]****************************/

/*****************Start  [SPPickTicket]****************************/

CREATE PROCEDURE [dbo].[SPPickTicket] @Opt INT = 0  
 ,@SQDocNumber AS VARCHAR(250) = NULL  
AS  
BEGIN  
 SET NOCOUNT ON;  
 
 IF @Opt = 0  
 BEGIN  
  SELECT tblPickTicketsDT.*  
   ,ISNULL((  
     SELECT TYP.intType  
     FROM tblInv INV(NOLOCK)  
     INNER JOIN tblInvSerialTypes TYP(NOLOCK) ON INV.strInvSerialType = TYP.strInvSerialType  
     WHERE INV.strPartNumber = tblPickTicketsDT.strPartNumber  
     ), 0) AS intSerialLotType  
   ,tblOrderDocDT.decLineTotExc  
   ,tblOrderDocDT.decLineTotInc  
   ,tblOrderDocDT.decLineTotExcF  
   ,tblOrderDocDT.decTotIncTaxF  
   ,ISNULL((  
     SELECT TYP.bitDimensionExist  
     FROM tblInv INV(NOLOCK)  
     INNER JOIN tblInvSerialTypes TYP(NOLOCK) ON INV.strInvSerialType = TYP.strInvSerialType  
     WHERE INV.strPartNumber = tblPickTicketsDT.strPartNumber  
     ), 0) AS bitDimensionExist  
   ,ISNULL((  
     SELECT INV.decSellFromStock  
     FROM tblInv INV(NOLOCK)  
     INNER JOIN tblInvSerialTypes TYP(NOLOCK) ON INV.strInvSerialType = TYP.strInvSerialType  
     WHERE INV.strPartNumber = tblPickTicketsDT.strPartNumber  
     ), 0) AS decSellFromStock  
   ,ISNULL((  
     SELECT ROUND(tblPickTicketsDT.decQty * INV.decSellFromStock, 4) AS decStockQty  
     FROM tblInv INV(NOLOCK)  
     INNER JOIN tblInvSerialTypes TYP(NOLOCK) ON INV.strInvSerialType = TYP.strInvSerialType  
     WHERE INV.strPartNumber = tblPickTicketsDT.strPartNumber  
     ), 0) AS decStockQty  
   ,tblPickTickets.strShipTo  
   ,tblPickTickets.strSoldTo  
   ,tblPickTickets.strNotes 
   ,ISNULL((  
     SELECT INV.strBarCode 
     FROM tblInv INV(NOLOCK)  
     WHERE INV.strPartNumber = tblPickTicketsDT.strPartNumber  
     ), 0) AS strBarCode
	 ,ISNULL((  
     SELECT INV.strBarCode2 
     FROM tblInv INV(NOLOCK)  
     WHERE INV.strPartNumber = tblPickTicketsDT.strPartNumber  
     ), 0) AS strBarCode2
  FROM tblPickTickets(NOLOCK)  
  INNER JOIN tblPickTicketsDT(NOLOCK) ON tblPickTickets.strPkTkDocID = tblPickTicketsDT.strPkTkDocID  
  INNER JOIN tblOrderDocDT(NOLOCK) ON tblPickTickets.strOrdDocID = tblOrderDocDT.strOrdDocID  
   AND tblPickTicketsDT.intLineNo = tblOrderDocDT.intLineNo  
  WHERE tblPickTickets.strPkTkDocID = @SQDocNumber  
  ORDER BY tblPickTicketsDT.strBinLoc  
   ,tblPickTicketsDT.intLineNo  
 END  
  
 IF @Opt = 1  
 BEGIN  
  SELECT MASTERTABLE.*  
   ,ISNULL((  
     SELECT TYP.intType  
     FROM tblInv INV(NOLOCK)  
     INNER JOIN tblInvSerialTypes TYP(NOLOCK) ON INV.strInvSerialType = TYP.strInvSerialType  
     WHERE INV.strPartNumber = MASTERTABLE.strPartNumber  
     ), 0) AS intSerialLotType  
   ,tblOrderDocDT.decLineTotExc  
   ,tblOrderDocDT.decLineTotInc  
   ,tblOrderDocDT.decLineTotExcF  
   ,tblOrderDocDT.decTotIncTaxF  
   ,ISNULL((  
     SELECT TYP.bitDimensionExist  
     FROM tblInv INV(NOLOCK)  
     INNER JOIN tblInvSerialTypes TYP(NOLOCK) ON INV.strInvSerialType = TYP.strInvSerialType  
     WHERE INV.strPartNumber = MASTERTABLE.strPartNumber  
     ), 0) AS bitDimensionExist  
   ,ISNULL((  
     SELECT INV.decSellFromStock  
     FROM tblInv INV(NOLOCK)  
     INNER JOIN tblInvSerialTypes TYP(NOLOCK) ON INV.strInvSerialType = TYP.strInvSerialType  
     WHERE INV.strPartNumber = MASTERTABLE.strPartNumber  
     ), 0) AS decSellFromStock  
   ,ISNULL((  
     SELECT ROUND(MASTERTABLE.decQty * INV.decSellFromStock, 4) AS decStockQty  
     FROM tblInv INV(NOLOCK)  
     INNER JOIN tblInvSerialTypes TYP(NOLOCK) ON INV.strInvSerialType = TYP.strInvSerialType  
     WHERE INV.strPartNumber = MASTERTABLE.strPartNumber  
     ), 0) AS decStockQty  
   ,tblPickTickets.strShipTo  
   ,tblPickTickets.strSoldTo  
   ,tblPickTickets.strNotes 
   ,ISNULL((  
     SELECT INV.strBarCode 
     FROM tblInv INV(NOLOCK)  
     WHERE INV.strPartNumber = MASTERTABLE.strPartNumber  
     ), 0) AS strBarCode
	 ,ISNULL((  
     SELECT INV.strBarCode2 
     FROM tblInv INV(NOLOCK)  
     WHERE INV.strPartNumber = MASTERTABLE.strPartNumber  
     ), 0) AS strBarcode2
  FROM tblPickTickets(NOLOCK)  
  INNER JOIN tblPickTicketsDT AS MASTERTABLE(NOLOCK) ON tblPickTickets.strPkTkDocID = MASTERTABLE.strPkTkDocID  
  INNER JOIN tblOrderDocDT(NOLOCK) ON tblPickTickets.strOrdDocID = tblOrderDocDT.strOrdDocID  
   AND MASTERTABLE.intLineNo = tblOrderDocDT.intLineNo  
  WHERE tblPickTickets.strPkTkDocID = @SQDocNumber  
   AND MASTERTABLE.strPartNumber IN (  
    SELECT strPartNumber  
    FROM tblInvExt(NOLOCK)  
    WHERE strPartNumber = MASTERTABLE.strPartNumber  
     AND strLocName = MASTERTABLE.strLocation  
     AND decOnHand > 0  
    )  
  ORDER BY MASTERTABLE.strBinLoc  
   ,MASTERTABLE.intLineNo  
 END  
  
 IF @Opt = 2  
 BEGIN  
  SELECT MASTERTABLE.*  
   ,ISNULL((  
     SELECT TYP.intType  
     FROM tblInv INV(NOLOCK)  
     INNER JOIN tblInvSerialTypes TYP(NOLOCK) ON INV.strInvSerialType = TYP.strInvSerialType  
     WHERE INV.strPartNumber = MASTERTABLE.strPartNumber  
     ), 0) AS intSerialLotType  
   ,tblOrderDocDT.decLineTotExc  
   ,tblOrderDocDT.decLineTotInc  
   ,tblOrderDocDT.decLineTotExcF  
   ,tblOrderDocDT.decTotIncTaxF  
   ,ISNULL((  
     SELECT TYP.bitDimensionExist  
     FROM tblInv INV(NOLOCK)  
     INNER JOIN tblInvSerialTypes TYP(NOLOCK) ON INV.strInvSerialType = TYP.strInvSerialType  
     WHERE INV.strPartNumber = MASTERTABLE.strPartNumber  
     ), 0) AS bitDimensionExist  
   ,ISNULL((  
     SELECT INV.decSellFromStock  
     FROM tblInv INV(NOLOCK)  
     INNER JOIN tblInvSerialTypes TYP(NOLOCK) ON INV.strInvSerialType = TYP.strInvSerialType  
     WHERE INV.strPartNumber = MASTERTABLE.strPartNumber  
     ), 0) AS decSellFromStock  
   ,ISNULL((  
     SELECT ROUND(MASTERTABLE.decQty * INV.decSellFromStock, 4) AS decStockQty  
     FROM tblInv INV(NOLOCK)  
     INNER JOIN tblInvSerialTypes TYP(NOLOCK) ON INV.strInvSerialType = TYP.strInvSerialType  
     WHERE INV.strPartNumber = MASTERTABLE.strPartNumber  
     ), 0) AS decStockQty  
   ,tblPickTickets.strShipTo  
   ,tblPickTickets.strSoldTo  
   ,tblPickTickets.strNotes  
   ,ISNULL((  
     SELECT INV.strBarCode 
     FROM tblInv INV(NOLOCK)  
     WHERE INV.strPartNumber = MASTERTABLE.strPartNumber  
     ), 0) AS strBarCode
	 ,ISNULL((  
     SELECT INV.strBarCode2 
     FROM tblInv INV(NOLOCK)  
     WHERE INV.strPartNumber = MASTERTABLE.strPartNumber  
     ), 0) AS strBarCode2
  FROM tblPickTickets(NOLOCK)  
  INNER JOIN tblPickTicketsDT AS MASTERTABLE(NOLOCK) ON tblPickTickets.strPkTkDocID = MASTERTABLE.strPkTkDocID  
  INNER JOIN tblOrderDocDT(NOLOCK) ON tblPickTickets.strOrdDocID = tblOrderDocDT.strOrdDocID  
   AND MASTERTABLE.intLineNo = tblOrderDocDT.intLineNo  
  WHERE tblPickTickets.strPkTkDocID = @SQDocNumber  
   AND MASTERTABLE.strPartNumber IN (  
    SELECT strPartNumber  
    FROM tblInvExt(NOLOCK)  
    WHERE strPartNumber = MASTERTABLE.strPartNumber  
     AND strLocName = MASTERTABLE.strLocation  
     AND decOnHand >= MASTERTABLE.decQty  
    )  
  ORDER BY MASTERTABLE.strBinLoc  
   ,MASTERTABLE.intLineNo  
 END  
END  
GO
/****** Object:  StoredProcedure [dbo].[SPPickTicket_SubReportData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*****************End  [SPPickTicket]****************************/

/*****************Start  [SPPickTicket_SubReportData]****************************/

CREATE PROCEDURE [dbo].[SPPickTicket_SubReportData] @PartNumber AS VARCHAR(250) = NULL
	,@Location AS VARCHAR(250) = NULL
	,@SerailDimensionExist AS BIT
	,@IntType AS INT
	,@PLInvItemType AS INT
	,@decQty AS MONEY
	,@SerailLotType AS INT
	,@PLSerialLotType AS INT
	,@DocumentNumber AS VARCHAR(250)
	,@intLineNumber AS INT
	,@strUnit AS VARCHAR(20)
AS
BEGIN
	SET NOCOUNT ON;

	IF OBJECT_ID('tempdb..#TempPickTicket', 'U') IS NOT NULL
		DROP TABLE #TempPickTicket;

	CREATE TABLE #TempPickTicket (
		strPkTkID VARCHAR(250) NULL
		,intLineNo INT NULL
		,strSerialNumber VARCHAR(250) NULL
		,strLotNumber VARCHAR(250) NULL
		,decQty MONEY NULL
		,strUnit VARCHAR(10) NULL
		,lngID BIGINT NULL
		,bitExpiryDate BIT NULL
		,dteExpiryDate DATETIME NULL
		,intSerialLotType INT NULL
		)

	IF OBJECT_ID('tempdb..#ControlTable', 'U') IS NOT NULL
		DROP TABLE #ControlTable;

	CREATE TABLE #ControlTable (
		ColId INT NULL
		,strLotNumber VARCHAR(250) NULL
		,strSerialNumber VARCHAR(250) NULL
		,decQty MONEY NULL
		,bitExpiryDate BIT NULL
		,dteExpiryDate DATETIME NULL
		)

	IF @IntType = @PLInvItemType
		AND @SerailDimensionExist = 0
	BEGIN
		DECLARE @intLngID INT = 1;
		DECLARE @decTotalQtyRemain MONEY = @decQty

		IF @SerailLotType = @PLSerialLotType
		BEGIN
			INSERT INTO #ControlTable (
				ColId
				,strLotNumber
				,strSerialNumber
				,decQty
				,bitExpiryDate
				,dteExpiryDate
				)
			SELECT row_number() OVER (
					ORDER BY dteExpiryDate
						,strLotNumber
					) AS ColId
				,strLotNumber
				,NULL
				,decQty
				,bitExpiryDate
				,dteExpiryDate
			FROM tblInvLotExt(NOLOCK)
			WHERE strPartNumber = @PartNumber
				AND strLocName = @Location
				AND decQty > 0
			ORDER BY dteExpiryDate
				,strLotNumber;
		END
		ELSE
		BEGIN
			INSERT INTO #ControlTable (
				ColId
				,strLotNumber
				,strSerialNumber
				,decQty
				,bitExpiryDate
				,dteExpiryDate
				)
			SELECT row_number() OVER (
					ORDER BY dteUpdatedDate
						,strSerialNumber
					) AS ColId
				,NULL
				,strSerialNumber
				,decQty
				,NULL
				,NULL
			FROM tblInvSerialExt(NOLOCK)
			WHERE strPartNumber = @PartNumber
				AND strLocName = @Location
				AND decQty > 0
			ORDER BY dteUpdatedDate
				,strSerialNumber;
		END

		IF @@ROWCOUNT <> 0
		BEGIN --PRINT 'Select statement is returning some rows'
			SELECT *
			INTO #LoopTable
			FROM #ControlTable

			DECLARE @TotalRow AS INT

			SELECT @TotalRow = count(*)
			FROM #LoopTable

			DECLARE @counter AS INT

			SET @counter = 1

			WHILE (@counter <= @TotalRow)
			BEGIN -- Get row from #Temp1 
				DECLARE @decQtyCalc MONEY = 0

				IF @SerailLotType = @PLSerialLotType
				BEGIN
					IF @decTotalQtyRemain <= (
							SELECT decQty
							FROM #LoopTable
							WHERE ColId = @counter
							)
					BEGIN
						SET @decQtyCalc = @decTotalQtyRemain
						SET @decTotalQtyRemain = 0
					END
					ELSE
					BEGIN
						SET @decQtyCalc = (
								SELECT decQty
								FROM #LoopTable
								WHERE ColId = @counter
								)
						SET @decTotalQtyRemain = @decTotalQtyRemain - (
								SELECT decQty
								FROM #LoopTable
								WHERE ColId = @counter
								)
					END
				END
				ELSE
				BEGIN
					SET @decQtyCalc = (
							SELECT decQty
							FROM #LoopTable
							WHERE ColId = @counter
							)
					SET @decTotalQtyRemain = @decTotalQtyRemain - (
							SELECT decQty
							FROM #LoopTable
							WHERE ColId = @counter
							)
				END

				--SELECT Column1, Column2 FROM @myTable WHERE Id = @counter
				DECLARE @isTExpiryDate BIT;
				DECLARE @TExpiryDate DATETIME;

				IF @SerailLotType = @PLSerialLotType
				BEGIN
					SET @isTExpiryDate = (
							SELECT bitExpiryDate
							FROM #LoopTable
							WHERE ColId = @counter
							)
					SET @TExpiryDate = (
							SELECT dteExpiryDate
							FROM #LoopTable
							WHERE ColId = @counter
							)
				END
				ELSE
				BEGIN
					SET @isTExpiryDate = 0
					SET @TExpiryDate = NULL
				END

				INSERT INTO #TempPickTicket
				VALUES (
					@DocumentNumber
					,@intLineNumber
					,(
						SELECT strSerialNumber
						FROM #LoopTable
						WHERE ColId = @counter
						)
					,(
						SELECT strLotNumber
						FROM #LoopTable
						WHERE ColId = @counter
						)
					--,@decQtyCalc
					,convert(VARCHAR, convert(FLOAT, @decQtyCalc))
					,@strUnit
					,@intLngID
					,@isTExpiryDate
					,@TExpiryDate
					,@SerailLotType
					);

				SET @intLngID += 1

				IF @decTotalQtyRemain = 0
					BREAK;

				SET @counter = @counter + 1
			END
		END
		ELSE
		BEGIN --PRINT 'No rows returned' 
			SELECT @DocumentNumber AS strPkTkID
				,@intLineNumber AS intLineNo
				,'No Stock Available' AS strSerialNumber
				,'0' AS decQty
				,'' AS strUnit
				,@intLngID AS lngID
				,0 AS bitExpiryDate
				,NULL AS dteExpiryDate
				,@SerailLotType AS intSerialLotType
		END
	END

	SELECT *
	FROM #TempPickTicket
END
GO
/****** Object:  StoredProcedure [dbo].[SPProjClaimStatements]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE Procedure [dbo].[SPProjClaimStatements]
(
@Opt AS int = 0,
@SQCustName AS varchar(50) = NULL,
@SQConsolidated AS int = 0,
@SQDisplayLogo AS varchar(10) = NULL,
@SQInactivechecked AS varchar(7) = 'N',
@SQSearchBy AS varchar(250) = NULL,
@SQUserName AS varchar(250) = NULL,
@SQBPToolsMode AS varchar(7) = 'N',
@SQOmit AS int = 0,
@SQOmitAmt AS int = 0,
@SQOrders AS int = 0
)
AS
BEGIN

	IF @Opt = 2
	BEGIN
    
		CREATE TABLE #Temp1(
		strCustName nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
		strCustDesc nvarchar(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
		strProjNumber nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
		strProjName nvarchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
		intType tinyint NULL,
		dteJournalDate smalldatetime NULL,
		strDocID nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
		strReference nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
		strAddInfo nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
		decTotal money NULL,
		decInvoiced money NULL,
		decOpenOrders money NULL,
		decBalance money NULL,
		imgLogo image NULL,
		bitDisplayLogo varchar(10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
		bitBalance bit NULL,
		lngID bigint IDENTITY(1,1) NOT NULL)

		IF @SQOrders = 1
		BEGIN

			INSERT INTO #Temp1 (strCustName, strCustDesc, strProjNumber, strProjName, intType, dteJournalDate, strDocID, strReference, strAddInfo, decTotal, decInvoiced, decOpenOrders, decBalance, imgLogo, bitDisplayLogo, bitBalance)
			SELECT 	tblCustomers.strCustname,
					tblCustomers.strCustDesc,
					tblProjects.strProjNumber, 
					tblProjects.strProjName,
					0 AS intType,
				    tblOrderDoc.dteJournalDate, 
					tblOrderDoc.strOrdDocID AS strDocID, 
					tblOrderDoc.strReference, 
					tblOrderDoc.strAddInfo, 
					0 AS decTotal, 
					0 AS decInvoiced,
					SUM(CASE WHEN tblOrderDocDT.bitIsForeign = 1 THEN (tblOrderDocDT.decLineTotExcF + tblOrderDocDT.decLineTaxAmtF) ELSE (tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) END) AS decOpenOrders,
					0 AS decBalance,
					(SELECT imgLogo FROM tblCompany) AS imgLogo,
					@SQDisplayLogo AS bitDisplayLogo,
					0 AS bitBalance   
			FROM tblOrderDoc 
			INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
			INNER JOIN tblOrderDocDTPrj ON tblOrderDocDTPrj.strOrdDocID = tblOrderDocDT.strOrdDocID AND tblOrderDocDTPrj.intLineNo = tblOrderDocDT.intLineNo 
			INNER JOIN tblProjects ON tblProjects.strProjNumber = tblOrderDocDTPrj.strProjNumber
			INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
			WHERE (tblOrderDoc.intDocType = 1) 
			AND (tblOrderDoc.bitCleared = 0) 
			AND (tblOrderDoc.strCustName = @SQCustName 
				OR tblOrderDoc.strCustName IN (SELECT CUST1.strCustName 
											   FROM tblCustomers CUST1 
											   WHERE CUST1.strParentCust = (SELECT CUST2.strCustName 
																			FROM tblCustomers CUST2 
																			WHERE CUST2.strCustName = @SQCustName 
																			AND CUST2.intNAPrintMethod = @SQConsolidated)))
			GROUP BY tblCustomers.strCustname, tblCustomers.strCustDesc, tblProjects.strProjNumber, tblProjects.strProjName, tblOrderDoc.strOrdDocID, tblOrderDoc.strReference, tblOrderDoc.strAddInfo, tblOrderDoc.dteJournalDate, tblOrderDoc.dteRequired, tblOrderDoc.decTotal 
			UNION ALL
			SELECT 	tblCustomers.strCustname,
					tblCustomers.strCustDesc,
					tblProjects.strProjNumber, 
					tblProjects.strProjName,
					1 AS intType,
					tblInvoiceDoc.dteJournalDate, 
					tblInvoiceDoc.strInvDocID AS strDocID, 
					tblInvoiceDoc.strReference, 
					tblInvoiceDoc.strAddInfo, 
					0 AS decTotal, 
					SUM(CASE WHEN tblInvoiceDocDT.bitIsForeign = 1 THEN (tblInvoiceDocDT.decLineTotExcF + tblInvoiceDocDT.decLineTaxAmtF) * -1 ELSE (tblInvoiceDocDT.decLineTotExc + tblInvoiceDocDT.decLineTaxAmt) * -1 END) AS decInvoiced,
					0 AS decOpenOrders,
					0 AS decBalance,
					(SELECT imgLogo FROM tblCompany) AS imgLogo,
					@SQDisplayLogo  AS bitDisplayLogo,
					0 AS bitBalance   
			FROM tblInvoiceDoc 
			INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
			INNER JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
			INNER JOIN tblProjects ON tblInvoiceDocDTPrj.strProjNumber = tblProjects.strProjNumber 
			INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
			WHERE (tblInvoiceDoc.strCustName = @SQCustName 
				OR tblInvoiceDoc.strCustName IN (SELECT CUST1.strCustName 
											   FROM tblCustomers CUST1 
											   WHERE CUST1.strParentCust = (SELECT CUST2.strCustName 
																			FROM tblCustomers CUST2 
																			WHERE CUST2.strCustName = @SQCustName
																			AND CUST2.intNAPrintMethod = @SQConsolidated)))
			GROUP BY tblCustomers.strCustname, tblCustomers.strCustDesc, tblProjects.strProjNumber, tblProjects.strProjName, tblInvoiceDoc.strInvDocID, tblInvoiceDoc.strReference, tblInvoiceDoc.strAddInfo, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.dteRequired, tblInvoiceDoc.decTotal 
			ORDER BY strProjNumber, dteJournalDate, intType, strDocID

		END
		ELSE
		BEGIN

			INSERT INTO #Temp1 (strCustName, strCustDesc, strProjNumber, strProjName, intType, dteJournalDate, strDocID, strReference, strAddInfo, decTotal, decInvoiced, decOpenOrders, decBalance, imgLogo, bitDisplayLogo, bitBalance)
			SELECT 	tblCustomers.strCustname,
					tblCustomers.strCustDesc,
					tblProjects.strProjNumber, 
					tblProjects.strProjName,
					0 AS intType,
				    tblOrderDoc.dteJournalDate, 
					tblOrderDoc.strOrdDocID AS strDocID, 
				    tblOrderDoc.strReference, 
				    tblOrderDoc.strAddInfo, 
					0 AS decTotal, 
					0 AS decInvoiced,
					SUM(CASE WHEN tblOrderDocDT.bitIsForeign = 1 THEN (tblOrderDocDT.decLineTotExcF + tblOrderDocDT.decLineTaxAmtF) ELSE (tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) END) AS decOpenOrders,
					0 AS decBalance,
					(SELECT imgLogo FROM tblCompany) AS imgLogo,
					@SQDisplayLogo AS bitDisplayLogo,
					0 AS bitBalance   
			FROM tblOrderDoc 
			INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
			INNER JOIN tblOrderDocDTPrj ON tblOrderDocDTPrj.strOrdDocID = tblOrderDocDT.strOrdDocID AND tblOrderDocDTPrj.intLineNo = tblOrderDocDT.intLineNo 
			INNER JOIN tblProjects ON tblProjects.strProjNumber = tblOrderDocDTPrj.strProjNumber
			INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
			WHERE (tblOrderDoc.intDocType = 1) 
			AND (tblOrderDoc.strCustName = @SQCustName 
				OR tblOrderDoc.strCustName IN (SELECT CUST1.strCustName 
											   FROM tblCustomers CUST1 
											   WHERE CUST1.strParentCust = (SELECT CUST2.strCustName 
																			FROM tblCustomers CUST2 
																			WHERE CUST2.strCustName = @SQCustName 
																			AND CUST2.intNAPrintMethod = @SQConsolidated)))
			GROUP BY tblCustomers.strCustname, tblCustomers.strCustDesc, tblProjects.strProjNumber, tblProjects.strProjName, tblOrderDoc.strOrdDocID, tblOrderDoc.strReference, tblOrderDoc.strAddInfo, tblOrderDoc.dteJournalDate, tblOrderDoc.dteRequired, tblOrderDoc.decTotal 
			UNION ALL
			SELECT 	tblCustomers.strCustname,
					tblCustomers.strCustDesc,
					tblProjects.strProjNumber, 
					tblProjects.strProjName,
					1 AS intType,
					tblInvoiceDoc.dteJournalDate, 
					tblInvoiceDoc.strInvDocID AS strDocID, 
					tblInvoiceDoc.strReference, 
					tblInvoiceDoc.strAddInfo, 
					0 AS decTotal, 
					SUM(CASE WHEN tblInvoiceDocDT.bitIsForeign = 1 THEN (tblInvoiceDocDT.decLineTotExcF + tblInvoiceDocDT.decLineTaxAmtF) * -1 ELSE (tblInvoiceDocDT.decLineTotExc + tblInvoiceDocDT.decLineTaxAmt) * -1 END) AS decInvoiced,
					0 AS decOpenOrders,
					0 AS decBalance,
					(SELECT imgLogo FROM tblCompany) AS imgLogo,
					@SQDisplayLogo  AS bitDisplayLogo,
					0 AS bitBalance   
			FROM tblInvoiceDoc 
			INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
			INNER JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
			INNER JOIN tblProjects ON tblInvoiceDocDTPrj.strProjNumber = tblProjects.strProjNumber 
			INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
			WHERE (tblInvoiceDoc.strCustName = @SQCustName 
				OR tblInvoiceDoc.strCustName IN (SELECT CUST1.strCustName 
											   FROM tblCustomers CUST1 
											   WHERE CUST1.strParentCust = (SELECT CUST2.strCustName 
																			FROM tblCustomers CUST2 
																			WHERE CUST2.strCustName = @SQCustName
																			AND CUST2.intNAPrintMethod = @SQConsolidated)))
			GROUP BY tblCustomers.strCustname, tblCustomers.strCustDesc, tblProjects.strProjNumber, tblProjects.strProjName, tblInvoiceDoc.strInvDocID, tblInvoiceDoc.strReference, tblInvoiceDoc.strAddInfo, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.dteRequired, tblInvoiceDoc.decTotal 
			ORDER BY strProjNumber, dteJournalDate, intType, strDocID

		END
 
		DECLARE @Balance AS money,
				@Type AS tinyint,
				@Invoiced AS money,
				@OpenOrders AS money,
				@ID AS bigint

		SET @Balance = 0

		WHILE EXISTS (SELECT lngID FROM #Temp1 WHERE bitBalance = 0)
		BEGIN

			SELECT @Type = intType,
				   @Invoiced = decInvoiced,
				   @OpenOrders = decOpenOrders,
				   @ID = lngID
			FROM #Temp1
			WHERE lngID = (SELECT MIN(TMP.lngID) FROM #Temp1 TMP WHERE TMP.bitBalance = 0)

			IF @Type = 0
				BEGIN
					SET @Balance = @Balance + @OpenOrders
				END
			ELSE
				BEGIN
					SET @Balance = @Balance + @Invoiced
				END

			UPDATE #Temp1
			SET decBalance = @Balance,
				bitBalance = 1
			WHERE lngID = @ID

		END

		UPDATE #Temp1
		SET decTotal = @Balance

		IF @SQOmit = 0
		BEGIN
			SELECT	strCustName,
					strCustDesc,
					strProjNumber, 
					strProjName, 
					dteJournalDate, 
					strDocID, 
					strReference, 
					strAddInfo, 
					decTotal, 
					decInvoiced, 
					decOpenOrders, 
					decBalance, 
					imgLogo, 
					bitDisplayLogo, 
					lngID
			FROM #Temp1 
			ORDER BY lngID
		END

		IF @SQOmit = 1
		BEGIN
			SELECT	strCustName,
					strCustDesc,
					strProjNumber, 
					strProjName, 
					dteJournalDate, 
					strDocID, 
					strReference, 
					strAddInfo, 
					decTotal, 
					decInvoiced, 
					decOpenOrders, 
					decBalance, 
					imgLogo, 
					bitDisplayLogo, 
					lngID
			FROM #Temp1 
			WHERE decTotal <> 0
			ORDER BY lngID
		END

		IF @SQOmit = 2
		BEGIN
			SELECT	strCustName,
					strCustDesc,
					strProjNumber, 
					strProjName, 
					dteJournalDate, 
					strDocID, 
					strReference, 
					strAddInfo, 
					decTotal, 
					decInvoiced, 
					decOpenOrders, 
					decBalance, 
					imgLogo, 
					bitDisplayLogo, 
					lngID
			FROM #Temp1
			WHERE decTotal >= @SQOmitAmt 
			ORDER BY lngID
		END

		DROP TABLE #Temp1

	END

	ELSE IF @Opt = 3
	BEGIN

		SELECT strCurrency 
		FROM tblCustomers

	END
 
	ELSE IF @Opt = 4
	BEGIN

		SELECT  DISTINCT
		tblCustomers.strCustName AS Code,
		tblCustomers.strCustDesc AS [Description]
		FROM tblProjects 
		INNER JOIN tblCustomers ON tblProjects.strCustName = tblCustomers.strCustName 
		INNER JOIN tblOrderDoc ON tblOrderDoc.strCustName = tblCustomers.strCustName 
		INNER JOIN tblOrderDocDTPrj ON tblOrderDocDTPrj.strOrdDocID = tblOrderDoc.strOrdDocID 
		WHERE ((tblCustomers.strCustName LIKE ISNULL(@SQSearchBy,'') + '%' OR ISNULL(@SQSearchBy,'') = '')   
				OR tblCustomers.strCustDesc LIKE ISNULL(@SQSearchBy,'') + '%' OR ISNULL(@SQSearchBy,'') = '')
		AND (tblCustomers.bitInactive = (CASE WHEN @SQInactivechecked = 'N' THEN 0 ELSE tblCustomers.bitInactive END))
	 	AND (tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory 
											FROM tblCustomerCat 
											  LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory 
											  WHERE @SQBPToolsMode = 'N' 
											  AND ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) 
															FROM tblCustomerCatSec 
															WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 
															OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) 
																		FROM tblCustomerCatSec 
																		WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 
											  AND tblCustomerCatSec.strUserName = @SQUserName))) 
		ORDER BY Code

END

	ELSE IF @Opt = 5
BEGIN

		SELECT  tblOrderDoc.strOrdDocID, 
			tblOrderDoc.dteJournalDate, 
			tblOrderDoc.dteRequired, 
			tblOrderDoc.decSubTotal, 
			CASE tblOrderDocDT.decQty WHEN tblOrderDocDT.decQtyRemaining THEN tblOrderDocDT.decLineTotExc ELSE (tblOrderDocDT.decLineTotExc / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining END AS Calculated, 
			tblOrderDocDT.strPartNumber, 
			tblOrderDocDT.decQty, 
			tblOrderDocDT.decQtyRemaining, 
			tblOrderDocDT.strPartDesc, 
			tblInv.decSumOnHand 
		FROM tblOrderDoc 
		INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID 
		INNER JOIN tblInv ON tblInv.strPartNumber = tblOrderDocDT.strPartNumber
		INNER JOIN tblOrderDocDTPrj ON tblOrderDocDTPrj.strOrdDocID = tblOrderDocDT.strOrdDocID AND tblOrderDocDTPrj.intLineNo = tblOrderDocDT.intLineNo 
		INNER JOIN tblProjects ON tblProjects.strProjNumber = tblOrderDocDTPrj.strProjNumber  
		WHERE (tblOrderDoc.intDocType = 1) 
		AND (tblOrderDoc.bitCleared = 0) 
		AND (tblOrderDoc.strCustName = @SQCustName
			OR tblOrderDoc.strCustName IN (SELECT CUST1.strCustName 
										   FROM tblCustomers CUST1 
										   WHERE CUST1.strParentCust = (SELECT CUST2.strCustName 
																		FROM tblCustomers CUST2
																		WHERE CUST2.strCustName = @SQCustName
																		AND CUST2.intNAPrintMethod = @SQConsolidated))) 
		ORDER BY tblOrderDoc.dteJournalDate

END

	ELSE IF @Opt = 6
BEGIN

		 SELECT strName,
				strStreet1,
				strStreet2,
				strCity,
				strProvince,
				strPostal,
				strPhone1,
				strPhone2,
				strFax,
				strEmail,
				strCK,
				strVAT
		 FROM tblCompany

END

	ELSE IF @Opt = 7
BEGIN

		 SELECT strRecMsgOSOS 
		 FROM tblForms

END

	ELSE IF @Opt = 8
BEGIN

		 SELECT intDelMethod 
		 FROM tblCustomers

END

	ELSE IF @Opt = 9
BEGIN

		 SELECT bitSendOutlook 
		 FROM tblCoOpts

END

	ELSE IF @Opt = 10
BEGIN

		SELECT strEmailStat 
		FROM tblCustomers
		WHERE strCustName = @SQCustName

	END

END
GO
/****** Object:  StoredProcedure [dbo].[SPPurchReOrder]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SPPurchReOrder] (
	@SQDocNumber AS VARCHAR(250) = NULL
	)
AS
	SELECT tblReOrderDocDT.*
		,ISNULL(tblInvVend.strItemCode, ') AS strItemCode
		,ISNULL(tblInvVend.strItemDesc, ') AS strItemDesc
		,tblInv.strBarCode
		,tblInv.strBarCode2
		,(
			SELECT bitInvImgOnBRQ
			FROM tblCoOpts
			) AS bitShowImage
		,tblInvImg.imgData AS imgImage
		,tblInv.bitInvExtDescOnBRQ AS bitShowExtendedDesc
		,tblReOrderDoc.strShipTo as tblReOrderDoc_strShipTo
		,tblReOrderDoc.dteJournalDate
		,tblReOrderDoc.dteRequired
		,tblReOrderDoc.strAddInfo
			
	FROM tblReOrderDocDT
	INNER JOIN tblReOrderDoc ON tblReOrderDocDT.strOrdDocID = tblReOrderDoc.strOrdDocID
	INNER JOIN tblInv ON tblReOrderDocDT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblInvVend ON tblReOrderDocDT.strPartNumber = tblInvVend.strPartNumber
		AND tblReOrderDocDT.strVendorName  = tblInvVend.strVendName
	LEFT JOIN tblInvImg ON tblReOrderDocDT.strPartNumber = tblInvImg.strPartNumber
		AND tblInvImg.bitDefaultImage = 1
	WHERE tblReOrderDocDT.strOrdDocID = @SQDocNumber
	ORDER BY tblReOrderDocDT.intLineNo
GO
/****** Object:  StoredProcedure [dbo].[SPQuoteData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*************End [dbo].[SerialNumberForSOReport_SubReportData] *************/

/*************Start [dbo].[SPQuoteData] *************/

CREATE PROCEDURE [dbo].[SPQuoteData]
	 @SQDocNumber AS VARCHAR(250) = NULL
	,@IsCustStockCodes BIT 
AS
BEGIN
	IF (@IsCustStockCodes = 1)
	BEGIN	
		SELECT tblOrderDocDT.*
	,tblOrderDocDTPrj.strProjNumber
	,tblProjects.strProjName
	,ISNULL(tblInv.decSumAvail, 0) AS decSumAvail
	,ISNULL(tblInv.strBinLoc, '') AS strBinLoc
	,tblInv.strBarCode
	,tblInv.strBarCode2
	,(
		SELECT bitInvImgOnSQ
		FROM tblCoOpts
		) AS bitShowImage
	,tblInvImg.imgData AS imgImage
	,tblOrderDocDT.strPartExtendedDesc AS strExtendedDesc
	,tblInv.bitInvExtDescOnSQ AS bitShowExtendedDesc
	,ISNULL(tblInvCustomer.strItemCode, '') AS strItemCode
	,ISNULL(tblInvCustomer.strItemDesc, '') AS strItemDesc
	,(
				SELECT STUFF((
							SELECT ',' + tblOrderDocDT.strPartNumber
	FROM fnBaseTblOrderDocDT() tblOrderDocDT
	INNER JOIN tblOrderDoc ON tblOrderDocDT.strOrdDocID = tblOrderDoc.strOrdDocID
	LEFT JOIN fnTblInvForLocJoin() tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
		AND tblOrderDocDT.strLocation = tblInv.strLocName
	LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
		AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
	LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
	LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
		AND tblInvImg.bitDefaultImage = 1
	LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
		AND tblOrderDoc.strCustName = tblInvCustomer.strCustName
	WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
		AND tblOrderDocDT.bitDiscountTax = 0
		AND tblOrderDocDT.bitDelCost = 1
			FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strDeliveryCostPartNumber
				
	FROM fnBaseTblOrderDocDT() tblOrderDocDT
	INNER JOIN tblOrderDoc ON tblOrderDocDT.strOrdDocID = tblOrderDoc.strOrdDocID
	LEFT JOIN fnTblInvForLocJoin() tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
		AND tblOrderDocDT.strLocation = tblInv.strLocName
	LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
		AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
	LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
	LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
		AND tblInvImg.bitDefaultImage = 1
	LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
		AND tblOrderDoc.strCustName = tblInvCustomer.strCustName
	WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
		AND tblOrderDocDT.bitDiscountTax = 0
		AND tblOrderDocDT.bitDelCost = 0
	ORDER BY tblOrderDocDT.intLineNo
	END
	ELSE
	BEGIN
		SELECT tblOrderDocDT.*
	,tblOrderDocDTPrj.strProjNumber
	,tblProjects.strProjName
	,ISNULL(tblInv.decSumAvail, 0) AS decSumAvail
	,ISNULL(tblInv.strBinLoc, '') AS strBinLoc
	,tblInv.strBarCode
	,tblInv.strBarCode2
	,(
		SELECT bitInvImgOnSQ
		FROM tblCoOpts
		) AS bitShowImage
	,tblInvImg.imgData AS imgImage
	,tblOrderDocDT.strPartExtendedDesc AS strExtendedDesc
	,tblInv.bitInvExtDescOnSQ AS bitShowExtendedDesc
	,'' AS strItemCode
	,'' AS strItemDesc

		,(
				SELECT STUFF((
							SELECT ',' +tblOrderDocDT.strPartNumber	
	FROM fnBaseTblOrderDocDT() tblOrderDocDT
	LEFT JOIN fnTblInvForLocJoin() tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
		AND tblOrderDocDT.strLocation = tblInv.strLocName
	LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
		AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
	LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
	LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
		AND tblInvImg.bitDefaultImage = 1
	WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
		AND tblOrderDocDT.bitDiscountTax = 0
		AND tblOrderDocDT.bitDelCost = 1
			FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strDeliveryCostPartNumber

	FROM fnBaseTblOrderDocDT() tblOrderDocDT
	LEFT JOIN fnTblInvForLocJoin() tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
		AND tblOrderDocDT.strLocation = tblInv.strLocName
	LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
		AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
	LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
	LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
		AND tblInvImg.bitDefaultImage = 1
	WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
		AND tblOrderDocDT.bitDiscountTax = 0
		AND tblOrderDocDT.bitDelCost = 0
	ORDER BY tblOrderDocDT.intLineNo
	END
	END
GO
/****** Object:  StoredProcedure [dbo].[SPQuoteDeliveryCostData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*************End [dbo].[SPQuoteData] *************/

/*************Start [dbo].[SPQuoteDeliveryCostData] *************/

CREATE PROCEDURE [dbo].[SPQuoteDeliveryCostData] 
	 @SQDocNumber AS VARCHAR(250) = NULL
	,@IsCustStockCodes BIT -- = 1 -- Remove this later default value
AS
BEGIN
	IF (@IsCustStockCodes = 1)
	BEGIN		
		SELECT tblOrderDocDT.*
	,tblOrderDocDTPrj.strProjNumber
	,tblProjects.strProjName
	,ISNULL(tblInv.decSumAvail, 0) AS decSumAvail
	,ISNULL(tblInv.strBinLoc, '') AS strBinLoc
	,tblInv.strBarCode
	,tblInv.strBarCode2
	,(
		SELECT bitInvImgOnSQ
		FROM tblCoOpts
		) AS bitShowImage
	,tblInvImg.imgData AS imgImage
	,tblOrderDocDT.strPartExtendedDesc AS strExtendedDesc
	,tblInv.bitInvExtDescOnSQ AS bitShowExtendedDesc
	,ISNULL(tblInvCustomer.strItemCode, '') AS strItemCode
	,ISNULL(tblInvCustomer.strItemDesc, '') AS strItemDesc
	FROM fnBaseTblOrderDocDT() tblOrderDocDT
	INNER JOIN tblOrderDoc ON tblOrderDocDT.strOrdDocID = tblOrderDoc.strOrdDocID
	LEFT JOIN fnTblInvForLocJoin() tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
		AND tblOrderDocDT.strLocation = tblInv.strLocName
	LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
		AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
	LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
	LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
		AND tblInvImg.bitDefaultImage = 1
	LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
		AND tblOrderDoc.strCustName = tblInvCustomer.strCustName
	WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
		AND tblOrderDocDT.bitDiscountTax = 0
		AND tblOrderDocDT.bitDelCost = 1
	ORDER BY tblOrderDocDT.intLineNo
	END
	ELSE
	BEGIN
		SELECT tblOrderDocDT.*
	,tblOrderDocDTPrj.strProjNumber
	,tblProjects.strProjName
	,ISNULL(tblInv.decSumAvail, 0) AS decSumAvail
	,ISNULL(tblInv.strBinLoc, '') AS strBinLoc
	,tblInv.strBarCode
	,tblInv.strBarCode2
	,(
		SELECT bitInvImgOnSQ
		FROM tblCoOpts
		) AS bitShowImage
	,tblInvImg.imgData AS imgImage
	,tblOrderDocDT.strPartExtendedDesc AS strExtendedDesc
	,tblInv.bitInvExtDescOnSQ AS bitShowExtendedDesc
	,'' AS strItemCode
	,'' AS strItemDesc
	FROM fnBaseTblOrderDocDT() tblOrderDocDT
	LEFT JOIN fnTblInvForLocJoin() tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
		AND tblOrderDocDT.strLocation = tblInv.strLocName
	LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
		AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
	LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
	LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
		AND tblInvImg.bitDefaultImage = 1
	WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
		AND tblOrderDocDT.bitDiscountTax = 0
		AND tblOrderDocDT.bitDelCost = 1
	ORDER BY tblOrderDocDT.intLineNo
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptBalSheetCompLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 CREATE PROCEDURE [dbo].[SPRptBalSheetCompLoadQuery_1] 
(
@optCurrentYear1_IsChecked AS BIT,
@optCurrentYear2_IsChecked AS BIT,
@optPreviousYear1_IsChecked AS BIT,
@optPreviousYear2_IsChecked AS BIT,
@optHistoryYear1_IsChecked AS BIT,
@optHistoryYear2_IsChecked AS BIT,
@SQuidYearID1 AS UNIQUEIDENTIFIER,
@SQuidYearID2 AS UNIQUEIDENTIFIER

)
AS
BEGIN
	IF @optCurrentYear1_IsChecked = 1 AND @optCurrentYear2_IsChecked = 1 
	BEGIN
		SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, decOpenBalance, intAccClass FROM tblAccounts WHERE (intAccType < 4) ORDER BY intAccType, intAccClass, intGLNumber
	END
	ELSE IF @optPreviousYear1_IsChecked = 1 AND @optPreviousYear2_IsChecked = 1
	BEGIN
		SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, decOpenBalance, intAccClass FROM tblAccountsLY WHERE (intAccType < 4) ORDER BY intAccType, intAccClass, intGLNumber
	END
	ELSE IF @optHistoryYear1_IsChecked = 1 AND @optHistoryYear2_IsChecked = 1 
	BEGIN
		SELECT tblAccountsHist.intGLNumber, tblAccountsHist.strDesc, tblAccountsHist.intAccType, tblAccountsHist.intGroupCode, tblAccountsHist.decOpenBalance, ISNULL(tblAccountsHist2.decOpenBalance,0) AS Expr1,
		 ISNULL(tblAccountsHist.intAccClass, tblAccountsHist2.intAccClass) AS intAccClass FROM tblAccountsHist
		  LEFT OUTER JOIN tblAccountsHist AS tblAccountsHist2 ON tblAccountsHist.intGLNumber = tblAccountsHist2.intGLNumber AND tblAccountsHist2.uidYearID = @SQuidYearID2 WHERE 
		 (tblAccountsHist.intAccType < 4) AND (tblAccountsHist.uidYearID = @SQuidYearID1) 
		 ORDER BY intAccType, ISNULL(tblAccountsHist.intAccClass, tblAccountsHist2.intAccClass), intGLNumber
	END
	ELSE 
	BEGIN
		IF @optCurrentYear1_IsChecked =1 AND @optPreviousYear2_IsChecked = 1
		BEGIN
			SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, tblAccounts.intGroupCode, tblAccounts.decOpenBalance, ISNULL(tblAccountsLY.decOpenBalance,0) AS Expr1,
			 ISNULL(tblAccounts.intAccClass, tblAccountsLY.intAccClass) AS intAccClass
			FROM tblAccounts 
			LEFT OUTER JOIN tblAccountsLY ON tblAccounts.intGLNumber = tblAccountsLY.intGLNumber 
			WHERE (tblAccounts.intAccType < 4) ORDER BY intAccType, ISNULL(tblAccounts.intAccClass, tblAccountsLY.intAccClass) , intGLNumber
		END
		ELSE IF @optPreviousYear1_IsChecked = 1 AND @optCurrentYear2_IsChecked = 1
		BEGIN
			SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, tblAccounts.intGroupCode, ISNULL(tblAccountsLY.decOpenBalance,0) AS Expr1,
			 tblAccounts.decOpenBalance, ISNULL(tblAccounts.intAccClass, tblAccountsLY.intAccClass) AS intAccClass
			 FROM tblAccounts 
			 LEFT OUTER JOIN tblAccountsLY ON tblAccounts.intGLNumber = tblAccountsLY.intGLNumber 
			 WHERE (tblAccounts.intAccType < 4) ORDER BY intAccType, ISNULL(tblAccounts.intAccClass, tblAccountsLY.intAccClass) , intGLNumber
		END
		ELSE IF @optCurrentYear1_IsChecked = 1 AND @optHistoryYear2_IsChecked = 1
		BEGIN
			SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, tblAccounts.intGroupCode, tblAccounts.decOpenBalance, ISNULL(tblAccountsHist.decOpenBalance,0) AS Expr1, 
			ISNULL(tblAccounts.intAccClass, tblAccountsHist.intAccClass) AS intAccClass
			FROM tblAccounts LEFT OUTER JOIN tblAccountsHist ON tblAccounts.intGLNumber = tblAccountsHist.intGLNumber AND tblAccountsHist.uidYearID = @SQuidYearID2 
			WHERE (tblAccounts.intAccType < 4) ORDER BY intAccType, ISNULL(tblAccounts.intAccClass, tblAccountsHist.intAccClass), intGLNumber
		END
		ELSE IF @optHistoryYear1_IsChecked =1 AND @optCurrentYear2_IsChecked = 1
		BEGIN
			SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, tblAccounts.intGroupCode, ISNULL(tblAccountsHist.decOpenBalance,0) AS Expr1, tblAccounts.decOpenBalance, 
			ISNULL(tblAccounts.intAccClass, tblAccountsHist.intAccClass) AS intAccClass FROM tblAccounts 
			LEFT OUTER JOIN tblAccountsHist ON tblAccounts.intGLNumber = tblAccountsHist.intGLNumber AND tblAccountsHist.uidYearID = @SQuidYearID1 WHERE (tblAccounts.intAccType < 4) 
			ORDER BY intAccType, ISNULL(tblAccounts.intAccClass, tblAccountsHist.intAccClass), intGLNumber
		END
		ELSE IF @optPreviousYear1_IsChecked = 1 AND @optHistoryYear2_IsChecked = 1
		BEGIN
			SELECT tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, tblAccountsLY.intAccType, tblAccountsLY.intGroupCode, tblAccountsLY.decOpenBalance, ISNULL(tblAccountsHist.decOpenBalance,0) AS Expr1, 
			ISNULL(tblAccountsLY.intAccClass, tblAccountsHist.intAccClass) AS intAccClass FROM tblAccountsLY LEFT OUTER JOIN tblAccountsHist ON tblAccountsLY.intGLNumber = tblAccountsHist.intGLNumber AND tblAccountsHist.uidYearID = @SQuidYearID2 WHERE (tblAccountsLY.intAccType < 4) ORDER BY intAccType, ISNULL(tblAccountsLY.intAccClass, tblAccountsHist.intAccClass), intGLNumber
		END
		ELSE IF @optHistoryYear1_IsChecked = 1 AND @optPreviousYear2_IsChecked = 1
		BEGIN
			SELECT tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, tblAccountsLY.intAccType, tblAccountsLY.intGroupCode, ISNULL(tblAccountsHist.decOpenBalance,0) AS Expr1, tblAccountsLY.decOpenBalance,
			 ISNULL(tblAccountsLY.intAccClass, tblAccountsHist.intAccClass) AS intAccClass
			  FROM tblAccountsLY LEFT OUTER JOIN tblAccountsHist ON tblAccountsLY.intGLNumber = tblAccountsHist.intGLNumber AND tblAccountsHist.uidYearID = @SQuidYearID1 WHERE (tblAccountsLY.intAccType < 4) 
			  ORDER BY intAccType, ISNULL(tblAccountsLY.intAccClass, tblAccountsHist.intAccClass), intGLNumber
		END
	END

END
GO

/****** Object:  StoredProcedure [dbo].[SPRptBalSheetCompLoadQuery_2_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptBalSheetCompLoadQuery_2_1]
@optCurrentYear1_IsChecked AS BIT,
@optPreviousYear1_IsChecked AS BIT,
@optHistoryYear1_IsChecked AS BIT,
@SQintoAccountLegendExp_GLNumberFrom AS INTEGER,
@SQintoAccountLegendRev_GLNumberTo  AS INTEGER,
@SQintoAccountLegendRev_GLNumberFrom  AS INTEGER,
@SQintoAccountLegendExp_GLNumberTo  AS INTEGER,
@SQAsAtDate AS DATE,
@SQuidYearID AS UNIQUEIDENTIFIER
AS
BEGIN
Declare @SQintLengthRevGL As Integer
Declare @SQintLengthExpGL As Integer
Declare @decRevenue as decimal(18,4)
declare @decExpense as decimal(18,4)
declare @decOpenRevenue as decimal(18,4)
declare @decOpenExpense as decimal(18,4)
declare @intCurrEarnAcct as nvarchar(200)

	IF @optCurrentYear1_IsChecked = 1 
	BEGIN
	
		SELECT @intCurrEarnAcct = intGLNumber FROM tblAccounts WHERE bitLinkCEarnings = 1  --- cmdEarn

		SELECT @SQintLengthRevGL = intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength


		SELECT  @decRevenue =  ISNULL(SUM(tblJournalEnt.decAmount),0) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
		WHERE (tblJournal.dteJournalDate <= @SQAsAtDate) AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo --- cmdRev


		SELECT  @decExpense = ISNULL(SUM(tblJournalEnt.decAmount),0) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
		WHERE (tblJournal.dteJournalDate <= @SQAsAtDate) AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo --- cmdExp



		SELECT  @decOpenRevenue = SUM(decOpenBalance) FROM tblAccounts WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo    --cmdRevOpen

		SELECT @decOpenExpense = SUM(decOpenBalance) FROM tblAccounts WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo   ---cmdExpOpen

		select @intCurrEarnAcct as intCurrEarnAcct, @decRevenue as decRevenue,@decExpense as decExpense,Isnull(@decOpenRevenue,0) decOpenRevenue,Isnull(@decOpenExpense,0) as decOpenExpense

	END
	ELSE IF @optPreviousYear1_IsChecked = 1 
	BEGIN
		SELECT @intCurrEarnAcct = intGLNumber FROM tblAccountsLY WHERE bitLinkCEarnings = 1  --- cmdEarn

		SELECT @SQintLengthRevGL = intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength
		
		SELECT  @decRevenue = ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
		WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo --- cmdRev


		SELECT @decExpense = ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
		WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  --- cmdExp


		SELECT @decOpenRevenue = ISNULL(SUM(decOpenBalance),0) FROM tblAccountsLY WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo   --cmdRevOpen


		SELECT @decOpenExpense = ISNULL(SUM(decOpenBalance),0) FROM tblAccountsLY WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  ---cmdExpOpen
		
		select @intCurrEarnAcct as intCurrEarnAcct, @decRevenue as decRevenue,@decExpense as decExpense,Isnull(@decOpenRevenue,0) decOpenRevenue,Isnull(@decOpenExpense,0) as decOpenExpense
	END
	ELSE IF @optHistoryYear1_IsChecked = 1
	BEGIN
		SELECT @intCurrEarnAcct = intGLNumber FROM tblAccountsHist WHERE bitLinkCEarnings = 1 AND uidYearID = @SQuidYearID   --- cmdEarn

		SELECT @SQintLengthRevGL = intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength


		SELECT  @decRevenue = ISNULL(SUM(tblJournalEntHist.decAmount),0) FROM tblJournalEntHist 
		INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID 
		WHERE (tblJournalHist.dteJournalDate <= @SQAsAtDate) AND (tblJournalEntHist.uidYearID = @SQuidYearID) 
		AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo  --- cmdRev


		SELECT @decExpense = ISNULL(SUM(tblJournalEntHist.decAmount),0) FROM tblJournalEntHist 
		INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID 
		WHERE (tblJournalHist.dteJournalDate <= @SQAsAtDate) AND (tblJournalEntHist.uidYearID = @SQuidYearID) 
		AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  --- cmdExp


		SELECT @decOpenRevenue = SUM(decOpenBalance) FROM tblAccountsHist WHERE uidYearID = @SQuidYearID 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo   --cmdRevOpen


		SELECT @decOpenExpense = SUM(decOpenBalance) FROM tblAccountsHist WHERE uidYearID = @SQuidYearID 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  ---cmdExpOpen
		
		select @intCurrEarnAcct as intCurrEarnAcct, @decRevenue as decRevenue,@decExpense as decExpense,Isnull(@decOpenRevenue,0) decOpenRevenue,Isnull(@decOpenExpense,0) as decOpenExpense
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptBalSheetCompLoadQuery_2_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SPRptBalSheetCompLoadQuery_2_2]
@optCurrentYear2_IsChecked AS BIT,
@optPreviousYear2_IsChecked AS BIT,
@optHistoryYear2_IsChecked AS BIT,
@SQintoAccountLegendExp_GLNumberFrom AS INTEGER,
@SQintoAccountLegendRev_GLNumberTo  AS INTEGER,
@SQintoAccountLegendRev_GLNumberFrom  AS INTEGER,
@SQintoAccountLegendExp_GLNumberTo  AS INTEGER,
@SQAsAtDate AS DATE,
@SQuidYearID AS UNIQUEIDENTIFIER
AS
BEGIN
Declare @SQintLengthRevGL As Integer
Declare @SQintLengthExpGL As Integer
Declare @decRevenue as decimal(18,4)
declare @decExpense as decimal(18,4)
declare @decOpenRevenue as decimal(18,4)
declare @decOpenExpense as decimal(18,4)
declare @intCurrEarnAcct as nvarchar(200)

	IF @optCurrentYear2_IsChecked = 1 
	BEGIN
	
		SELECT @intCurrEarnAcct = intGLNumber FROM tblAccounts WHERE bitLinkCEarnings = 1  --- cmdEarn

		SELECT @SQintLengthRevGL = intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength


		SELECT  @decRevenue =  ISNULL(SUM(tblJournalEnt.decAmount),0) FROM tblJournalEnt 
		INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
		WHERE (tblJournal.dteJournalDate <= @SQAsAtDate) AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo --- cmdRev


		SELECT  @decExpense = ISNULL(SUM(tblJournalEnt.decAmount),0) FROM tblJournalEnt 
		INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate <= @SQAsAtDate) 
		AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo --- cmdExp



		SELECT  @decOpenRevenue = SUM(decOpenBalance) FROM tblAccounts WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo    --cmdRevOpen

		SELECT @decOpenExpense = SUM(decOpenBalance) FROM tblAccounts WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo   ---cmdExpOpen

		select @intCurrEarnAcct AS intCurrEarnAcct, @decRevenue AS decRevenue,@decExpense AS decExpense,IsNull(@decOpenRevenue,0) AS decOpenRevenue,IsNull(@decOpenExpense,0) AS decOpenExpense

	END
	ELSE IF @optPreviousYear2_IsChecked = 1 
	BEGIN
		SELECT @intCurrEarnAcct = intGLNumber FROM tblAccountsLY WHERE bitLinkCEarnings = 1 --- cmdEarn

		SELECT @SQintLengthRevGL = intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength
		
		SELECT  @decRevenue = ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo --- cmdRev


		SELECT @decExpense = ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) AND SUBSTRING(tblJournalEntLY.intGLNumber
, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  --- cmdExp


		SELECT @decOpenRevenue = ISNULL(SUM(decOpenBalance),0) FROM tblAccountsLY WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo   --cmdRevOpen


		SELECT @decOpenExpense = ISNULL(SUM(decOpenBalance),0) FROM tblAccountsLY WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  ---cmdExpOpen
		
		select @intCurrEarnAcct AS intCurrEarnAcct, @decRevenue AS decRevenue,@decExpense AS decExpense,IsNull(@decOpenRevenue,0) AS decOpenRevenue,IsNull(@decOpenExpense,0) AS decOpenExpense
	END
	ELSE IF @optHistoryYear2_IsChecked = 1
	BEGIN
		SELECT @intCurrEarnAcct = intGLNumber FROM tblAccountsHist WHERE bitLinkCEarnings = 1 AND uidYearID = @SQuidYearID   --- cmdEarn

		SELECT @SQintLengthRevGL = intSeg1Length from tblGLSegmentFormatSetup --- cmdRevGLLength


		SELECT  @decRevenue = ISNULL(SUM(tblJournalEntHist.decAmount),0) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.
dteJournalDate <= @SQAsAtDate) AND (tblJournalEntHist.uidYearID = @SQuidYearID) AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo  --- cmdRev


		SELECT @decExpense = ISNULL(SUM(tblJournalEntHist.decAmount),0) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate <= @SQAsAtDate) AND (tblJournalEntHist.uidYearID = @SQuidYearID) AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL
 + 1) <= @SQintoAccountLegendExp_GLNumberTo  --- cmdExp


		SELECT @decOpenRevenue = SUM(decOpenBalance) FROM tblAccountsHist WHERE uidYearID = @SQuidYearID AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo  --cmdRevOpen


		SELECT @decOpenExpense = SUM(decOpenBalance) FROM tblAccountsHist WHERE uidYearID = @SQuidYearID AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  ---cmdExpOpen
		
		select @intCurrEarnAcct AS intCurrEarnAcct, @decRevenue AS decRevenue,@decExpense AS decExpense,IsNull(@decOpenRevenue,0) AS decOpenRevenue,IsNull(@decOpenExpense,0) AS decOpenExpense
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptBalSheetCompLoadQuery_3_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptBalSheetCompLoadQuery_3_1]
@optCurrentYear1_IsChecked AS BIT,
@optPreviousYear1_IsChecked AS BIT,
@optHistoryYear1_IsChecked AS BIT,
@SQuidYearID AS UNIQUEIDENTIFIER,
@SQAsAtDate AS DATETIME


AS
BEGIN
	IF @optCurrentYear1_IsChecked = 1 
	BEGIN
		SELECT tblJournalEnt.intGLNumber AS intGLNumber, SUM(tblJournalEnt.decAmount) AS decAmount FROM tblJournalEnt 
		INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
		WHERE (tblJournal.dteJournalDate <= @SQAsAtDate) 
		GROUP BY tblJournalEnt.intGLNumber
	END
	ELSE IF @optPreviousYear1_IsChecked = 1
	BEGIN
		SELECT tblJournalEntLY.intGLNumber AS intGLNumber, SUM(tblJournalEntLY.decAmount) AS decAmount FROM tblJournalEntLY 
		INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
		WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) GROUP BY tblJournalEntLY.intGLNumber

	END
	ELSE IF @optHistoryYear1_IsChecked = 1
	BEGIN
		SELECT tblJournalEntHist.intGLNumber AS intGLNumber, SUM(tblJournalEntHist.decAmount) AS decAmount
		FROM tblJournalEntHist 
		INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID
		 WHERE (tblJournalHist.dteJournalDate <= @SQAsAtDate) AND (tblJournalEntHist.uidYearID = @SQuidYearID) 
		 GROUP BY tblJournalEntHist.intGLNumber
	END


END
GO

/****** Object:  StoredProcedure [dbo].[SPRptBalSheetCompLoadQuery_3_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptBalSheetCompLoadQuery_3_2]
@optCurrentYear2_IsChecked AS BIT,
@optPreviousYear2_IsChecked AS BIT,
@optHistoryYear2_IsChecked AS BIT,
@SQuidYearID AS UNIQUEIDENTIFIER,
@SQAsAtDate AS DATETIME


AS
BEGIN
	IF @optCurrentYear2_IsChecked = 1 
	BEGIN
		SELECT tblJournalEnt.intGLNumber AS intGLNumber, SUM(tblJournalEnt.decAmount)AS decAmount,ISNULL(intDept,0) AS intDept 
		FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate <= @SQAsAtDate) GROUP BY tblJournalEnt.intGLNumber,intDept ORDER BY tblJournalEnt.intGLNumber,intDept
	END
	ELSE IF @optPreviousYear2_IsChecked = 1
	BEGIN
		SELECT tblJournalEntLY.intGLNumber AS intGLNumber, SUM(tblJournalEntLY.decAmount) AS decAmount,ISNULL(intDept,0) AS intDept 
		FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) GROUP BY tblJournalEntLY.intGLNumber,intDept
	END
	ELSE IF @optHistoryYear2_IsChecked = 1
	BEGIN
		SELECT tblJournalEntHist.intGLNumber AS intGLNumber, SUM(tblJournalEntHist.decAmount) AS decAmount,ISNULL(intDept,0) AS intDept 
		FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate <= @SQAsAtDate) AND (tblJournalEntHist.uidYearID = @SQuidYearID) GROUP BY tblJournalEntHist.intGLNumber,intDept
	END

END
GO

/****** Object:  StoredProcedure [dbo].[SPRptBalSheetLoadQuery_1_1]    Script Date: 26/06/2020 08:45:58 ******/

CREATE PROCEDURE [dbo].[SPRptBalSheetLoadQuery_1_1]
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@optHistoryYear_IsChecked AS BIT,
@SQuidYearID AS UNIQUEIDENTIFIER
AS
BEGIN
IF @optCurrentYear_IsChecked = 1 
BEGIN
SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass FROM tblAccounts WHERE (intAccType < 4) ORDER BY intAccType, intAccClass, intGLNumber	
END
ELSE IF @optPreviousYear_IsChecked = 1 
BEGIN
SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass FROM tblAccountsLY WHERE (intAccType < 4) ORDER BY intAccType, intAccClass, intGLNumber
END
ELSE IF @optHistoryYear_IsChecked = 1
BEGIN
SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass FROM tblAccountsHist WHERE (intAccType < 4) AND (uidYearID = @SQuidYearID) ORDER BY intAccType, intAccClass, intGLNumber
END
END
GO


/****** Object:  StoredProcedure [dbo].[SPRptBalSheetLoadQuery_1_2]    Script Date: 26/06/2020 08:45:58 ******/

CREATE PROCEDURE [dbo].[SPRptBalSheetLoadQuery_1_2] 
@SQAsAtDate as date,
@SQintoAccountLegendExp_GLNumberFrom as integer,
@SQintoAccountLegendRev_GLNumberTo  as integer,
@SQintoAccountLegendRev_GLNumberFrom  as integer,
@SQintoAccountLegendExp_GLNumberTo  as integer,
--@decRevenue decimal(18,2) OUTPUT,
--@decExpense decimal OUTPUT,
--@decOpenRevenue decimal OUTPUT,
--@decOpenExpense decimal OUTPUT,
--@intCurrEarnAcct decimal OUTPUT,
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@optHistoryYear_IsChecked AS BIT,
@SQuidYearID AS UNIQUEIDENTIFIER
AS
BEGIN
Declare @SQintLengthRevGL As Integer
Declare @SQintLengthExpGL As Integer
Declare @decRevenue as DECIMAL(18,4)
declare @decExpense as DECIMAL(18,4)
declare @decOpenRevenue as DECIMAL(18,4)
declare @decOpenExpense as DECIMAL(18,4)
declare @intCurrEarnAcct as nvarchar(200)
IF @optCurrentYear_IsChecked = 1 
BEGIN
SELECT @intCurrEarnAcct = intGLNumber FROM tblAccounts WHERE bitLinkCEarnings = 1  --- cmdEarn
SELECT @SQintLengthRevGL = intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength
--SELECT @SQintLengthExpGL = intSeg1Length from tblGLSegmentFormatSetup  --- cmdExpGLLength
SELECT  @decRevenue = ISNULL(SUM(tblJournalEnt.decAmount),0) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
WHERE (tblJournal.dteJournalDate <= @SQAsAtDate) AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo --- cmdRev
SELECT  @decExpense = ISNULL(SUM(tblJournalEnt.decAmount),0) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
WHERE (tblJournal.dteJournalDate <= @SQAsAtDate) AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo --- cmdExp
SELECT  @decOpenRevenue = ISNULL(SUM(decOpenBalance),0) FROM tblAccounts WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo    --cmdRevOpen
SELECT @decOpenExpense = ISNULL(SUM(decOpenBalance),0) FROM tblAccounts WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo   ---cmdExpOpen

select @intCurrEarnAcct as intCurrEarnAcct, @decRevenue as decRevenue,@decExpense as decExpense,ISNULL(@decOpenRevenue,0) as decOpenRevenue,ISNULL(@decOpenExpense,0) as decOpenExpense
END
ELSE IF @optPreviousYear_IsChecked = 1 
BEGIN
SELECT @intCurrEarnAcct = intGLNumber FROM tblAccountsLY WHERE bitLinkCEarnings = 1  --- cmdEarn
SELECT @SQintLengthRevGL = intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength
SELECT  @decRevenue = ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo --- cmdRev
SELECT @decExpense = ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  --- cmdExp
SELECT @decOpenRevenue = ISNULL(SUM(decOpenBalance),0) FROM tblAccountsLY 
WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo   --cmdRevOpen
SELECT @decOpenExpense = ISNULL(SUM(decOpenBalance),0) FROM tblAccountsLY 
WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  ---cmdExpOpen

select @intCurrEarnAcct as intCurrEarnAcct, @decRevenue as decRevenue,@decExpense as decExpense,ISNULL(@decOpenRevenue,0) as decOpenRevenue,ISNULL(@decOpenExpense,0) as decOpenExpense
END
ELSE IF @optHistoryYear_IsChecked = 1
BEGIN
SELECT @intCurrEarnAcct = intGLNumber FROM tblAccountsHist WHERE bitLinkCEarnings = 1 AND uidYearID = @SQuidYearID   --- cmdEarn
SELECT @SQintLengthRevGL = intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength

SELECT  @decRevenue = ISNULL(SUM(tblJournalEntHist.decAmount),0) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID 
AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate <= @SQAsAtDate) AND (tblJournalEntHist.uidYearID = @SQuidYearID) 
AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo  --- cmdRev

SELECT @decExpense = ISNULL(SUM(tblJournalEntHist.decAmount),0) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID 
AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate <= @SQAsAtDate) AND (tblJournalEntHist.uidYearID = @SQuidYearID) 
AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  --- cmdExp

SELECT @decOpenRevenue = ISNULL(SUM(decOpenBalance),0) FROM tblAccountsHist WHERE uidYearID = @SQuidYearID AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo   --cmdRevOpen

SELECT @decOpenExpense = ISNULL(SUM(decOpenBalance),0) FROM tblAccountsHist WHERE uidYearID = @SQuidYearID AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  ---cmdExpOpen

select @intCurrEarnAcct as intCurrEarnAcct, @decRevenue as decRevenue,@decExpense as decExpense,ISNULL(@decOpenRevenue,0) as decOpenRevenue,ISNULL(@decOpenExpense,0) as decOpenExpense
END
END
GO

/****** Object:  StoredProcedure [dbo].[SPRptBalSheetLoadQuery_1_3]    Script Date: 26/06/2020 08:45:58 ******/

CREATE PROCEDURE [dbo].[SPRptBalSheetLoadQuery_1_3]
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@optHistoryYear_IsChecked AS BIT,
@SQuidYearID AS UNIQUEIDENTIFIER,
@SQAsAtDate AS DATE
AS
BEGIN
IF @optCurrentYear_IsChecked = 1 
BEGIN
SELECT tblJournalEnt.intGLNumber AS intGLNumber, SUM(tblJournalEnt.decAmount) As decAmount FROM tblJournalEnt 
INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate <= @SQAsAtDate)
 GROUP BY tblJournalEnt.intGLNumber
END
ELSE IF @optPreviousYear_IsChecked = 1 
BEGIN
SELECT tblJournalEntLY.intGLNumber AS intGLNumber, SUM(tblJournalEntLY.decAmount) As decAmount FROM tblJournalEntLY 
INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) 
GROUP BY tblJournalEntLY.intGLNumber
END
ELSE IF @optHistoryYear_IsChecked = 1
BEGIN
SELECT tblJournalEntHist.intGLNumber AS intGLNumber, SUM(tblJournalEntHist.decAmount) As decAmount FROM tblJournalEntHist 
INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE
 (tblJournalHist.dteJournalDate <= @SQAsAtDate) AND (tblJournalEntHist.uidYearID = @SQuidYearID)
  GROUP BY tblJournalEntHist.intGLNumber
END
END
GO

/****** Object:  StoredProcedure [dbo].[SPRptBudgetBalanceSheetLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
CREATE PROCEDURE [dbo].[SPRptBudgetBalanceSheetLoadQuery_1]
@optCurrentYear_IsChecked bit,
@optPreviousYear_IsChecked bit
AS
BEGIN
IF @optCurrentYear_IsChecked = 1 
BEGIN
SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass FROM tblAccounts WHERE (intAccType < 4) ORDER BY intAccType, intAccClass, intGLNumber
END
Else if @optPreviousYear_IsChecked = 1
BEGIN
SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass FROM tblAccountsLY WHERE (intAccType < 4) ORDER BY intAccType, intAccClass, intGLNumber
END
END
GO


/****** Object:  StoredProcedure [dbo].[SPRptBudgetBalanceSheetLoadQuery_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptBudgetBalanceSheetLoadQuery_2]
(
	@SQStartDate date = NULL,
	@SQFinishDate date = NULL,
	@SQintoAccountLegendExp_GLNumberFrom INT = NULL,
	@SQintoAccountLegendRev_GLNumberTo  INT = NULL,
	@SQintoAccountLegendRev_GLNumberFrom  INT = NULL,
	@SQintoAccountLegendExp_GLNumberTo  INT = NULL 
	)
AS
BEGIN

DECLARE @decRevenue DECIMAL(18,4)
DECLARE @decExpense DECIMAL(18,4) 
DECLARE @decOpenRevenue DECIMAL(18,4) 
DECLARE @decOpenExpense DECIMAL(18,4) 
DECLARE @intCurrEarnAcct NVARCHAR(200)


SELECT @intCurrEarnAcct = intGLNumber FROM tblAccounts WHERE bitLinkCEarnings = 1   --- cmdEarn

--SELECT intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength

SELECT @decRevenue = ISNULL(SUM(tblJournalEnt.decAmount),0) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
WHERE (tblJournal.dteJournalDate BETWEEN @SQStartDate AND @SQFinishDate) AND SUBSTRING(tblJournalEnt.intGLNumber, 0, (SELECT intSeg1Length from tblGLSegmentFormatSetup) + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
AND SUBSTRING(tblJournalEnt.intGLNumber, 0, (SELECT intSeg1Length from tblGLSegmentFormatSetup) + 1) <= @SQintoAccountLegendRev_GLNumberTo   --- cmdRev

SELECT @decExpense = ISNULL(SUM(tblJournalEnt.decAmount),0) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
WHERE (tblJournal.dteJournalDate BETWEEN @SQStartDate AND @SQFinishDate) AND SUBSTRING(tblJournalEnt.intGLNumber, 0, (SELECT intSeg1Length from tblGLSegmentFormatSetup) + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
AND SUBSTRING(tblJournalEnt.intGLNumber, 0, (SELECT intSeg1Length from tblGLSegmentFormatSetup) + 1) <= @SQintoAccountLegendExp_GLNumberTo   --- cmdExp

SELECT @decOpenRevenue = SUM(decOpenBalance) FROM tblAccounts WHERE SUBSTRING(intGLNumber, 0, (SELECT intSeg1Length from tblGLSegmentFormatSetup) + 1) >= @SQintoAccountLegendRev_GLNumberFrom AND SUBSTRING(intGLNumber, 0, (SELECT intSeg1Length from tblGLSegmentFormatSetup) + 1) <= @SQintoAccountLegendRev_GLNumberTo   --cmdRevOpen

SELECT @decOpenExpense = SUM(decOpenBalance) FROM tblAccounts WHERE SUBSTRING(intGLNumber, 0, (SELECT intSeg1Length from tblGLSegmentFormatSetup) + 1) >= @SQintoAccountLegendExp_GLNumberFrom AND SUBSTRING(intGLNumber, 0, (SELECT intSeg1Length from tblGLSegmentFormatSetup) + 1) <= @SQintoAccountLegendExp_GLNumberTo   ---cmdExpOpen

SELECT @intCurrEarnAcct,@decRevenue,@decExpense,@decOpenRevenue,@decOpenExpense
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptBudgetBalanceSheetLoadQuery_2_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SPRptBudgetBalanceSheetLoadQuery_2_2]
(
@SQStartDate date = NULL,
@SQFinishDate date = NULL,
@SQintoAccountLegendExp_GLNumberFrom INT = NULL,
@SQintoAccountLegendRev_GLNumberTo  INT = NULL,
@SQintoAccountLegendRev_GLNumberFrom  INT = NULL,
@SQintoAccountLegendExp_GLNumberTo  INT = NULL 
)
AS
BEGIN
DECLARE @decRevenue DECIMAL(18,4)
DECLARE @decExpense DECIMAL(18,4) 
DECLARE @decOpenRevenue DECIMAL(18,4) 
DECLARE @decOpenExpense DECIMAL(18,4) 
DECLARE @intCurrEarnAcct NVARCHAR(200)
DECLARE @SQintLength Integer
SELECT @intCurrEarnAcct = intGLNumber FROM tblAccountsLY WHERE bitLinkCEarnings = 1   ---cmdEarn
SELECT @SQintLength = intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength
SELECT @decRevenue = ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
WHERE (tblJournalLY.dteJournalDate BETWEEN @SQStartDate AND @SQFinishDate) AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) <= @SQintoAccountLegendRev_GLNumberTo ---cmdRev
SELECT @decExpense = ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
WHERE (tblJournalLY.dteJournalDate BETWEEN @SQStartDate AND @SQFinishDate) AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) <= @SQintoAccountLegendExp_GLNumberTo  ---cmdExp
SELECT @decOpenRevenue = SUM(decOpenBalance) FROM tblAccountsLY WHERE SUBSTRING(intGLNumber, 0, @SQintLength + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
AND SUBSTRING(intGLNumber, 0, @SQintLength + 1) <= @SQintoAccountLegendRev_GLNumberTo  ---cmdRevOpen
SELECT @decOpenExpense = SUM(decOpenBalance) FROM tblAccountsLY WHERE SUBSTRING(intGLNumber, 0, @SQintLength + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
AND SUBSTRING(intGLNumber, 0, @SQintLength + 1) <= @SQintoAccountLegendExp_GLNumberTo  ---cmdExpOpen
SELECT @intCurrEarnAcct,@decRevenue,@decExpense,@decOpenRevenue,@decOpenExpense
END
GO

/****** Object:  StoredProcedure [dbo].[SPRptBudgetIncomeFSetLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptBudgetIncomeFSetLoadQuery_1] 
(	@CostOfGoodsSold INT = NULL,
	@InterestExpense INT = NULL,
	@IncomeTaxExpense INT = NULL,
	@Revenue INT = NULL,
	@Expense INT = NULL,
	@OperatingRevenue INT = NULL,
	@intOINum nvarchar(200) = NULL
	)
AS
BEGIN
	SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, ISNULL((SELECT decOpenBalance FROM tblAccountsLY WHERE intGLNumber = tblAccounts.intGLNumber),0), intAccClass, 
                    CASE WHEN intAccClass =  @CostOfGoodsSold  THEN 1 WHEN intAccClass = @InterestExpense THEN 4 
                    WHEN intAccClass = @IncomeTaxExpense THEN 5 WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0 
					WHEN intAccType = @Revenue THEN @intOINum WHEN intAccType = @Expense THEN 3 ELSE NULL END as GroupSeq FROM tblAccounts WHERE (intAccType >= 4) AND (intGroupCode <= 2) ORDER BY GroupSeq, intAccType, intAccClass, intGLNumber
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptBudgetIncomeFSetLoadQuery_1_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptBudgetIncomeFSetLoadQuery_1_1]

AS
BEGIN
	SELECT ISNULL(COUNT(intGLNumber),0) FROM tblAccountsLY
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptBudgetIncomeSetupLoadQuery_1_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptBudgetIncomeSetupLoadQuery_1_1]
(	@CostOfGoodsSold INT = NULL,
	@InterestExpense INT = NULL,
	@IncomeTaxExpense INT = NULL,
	@Revenue INT = NULL,
	@Expense INT = NULL,
	@OperatingRevenue INT = NULL,
	@intOINum nvarchar(200) = NULL
	)
AS
BEGIN
	SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass, CASE WHEN intAccClass = @CostOfGoodsSold
					THEN 1 WHEN intAccClass = @InterestExpense THEN 4 
                    WHEN intAccClass = @IncomeTaxExpense THEN 5 
                    WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0 
                    WHEN intAccType = @Revenue THEN @intOINum
                    WHEN intAccType = @Expense THEN 3 
                    ELSE NULL END as GroupSeq FROM tblAccounts WHERE (intAccType >= 4) ORDER BY GroupSeq, intAccType, intAccClass, intGLNumber
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptBudgetIncomeSetupLoadQuery_1_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptBudgetIncomeSetupLoadQuery_1_2]
(	@CostOfGoodsSold INT = NULL,
	@InterestExpense INT = NULL,
	@IncomeTaxExpense INT = NULL,
	@Revenue INT = NULL,
	@Expense INT = NULL,
	@OperatingRevenue INT = NULL,
	@intOINum nvarchar(200) = NULL
	)
AS
BEGIN
	SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass, CASE WHEN intAccClass = @CostOfGoodsSold
					THEN 1 WHEN intAccClass = @InterestExpense THEN 4 
                    WHEN intAccClass = @IncomeTaxExpense THEN 5 
                    WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0 
                    WHEN intAccType = @Revenue THEN @intOINum
                    WHEN intAccType = @Expense THEN 3 
                    ELSE NULL END as GroupSeq FROM tblAccountsLY WHERE (intAccType >= 4) ORDER BY GroupSeq, intAccType, intAccClass, intGLNumber
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptBudgets_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptBudgets_1] 
(	@bitoptCurrentYear bit = NULL,
	@bitoptInActive bit = NULL
	)
AS
BEGIN
	
	IF @bitoptCurrentYear = 1 
	BEGIN
		IF @bitoptInActive = 0 
		BEGIN
			SELECT intGLNumber, strDesc FROM tblAccounts WHERE bitBudget = 1 AND  bitInactive = 0 ORDER BY intGLNumber
		END
		ELSE
		BEGIN
			SELECT intGLNumber, strDesc FROM tblAccounts WHERE bitBudget = 1 ORDER BY intGLNumber
		END

	END
	ELSE
	BEGIN
		IF @bitoptInActive = 0 
		BEGIN
			SELECT intGLNumber, strDesc FROM tblAccountsLY WHERE bitBudget = 1 AND bitInactive = 0 ORDER BY intGLNumber
		END
		ELSE
		BEGIN
			SELECT intGLNumber, strDesc FROM tblAccountsLY WHERE bitBudget = 1 ORDER BY intGLNumber
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptBusinessLoadCurrencies_6]    Script Date: 26/06/2020 08:45:58 ******/

CREATE PROCEDURE [dbo].[SPRptBusinessLoadCurrencies_6]
AS
BEGIN
SELECT strCurrency, strCurrName, bitHome FROM tblCurrency ORDER BY strCurrName
END
GO

/****** Object:  StoredProcedure [dbo].[SPRptBusinessLogic_Loaded_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptBusinessLogic_Loaded_1]
	
AS
BEGIN
SELECT MAX(dteJournalDate) FROM tblJournal
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptBusinessLogic_Loaded_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptBusinessLogic_Loaded_2]

AS
BEGIN
SELECT MAX(dteJournalDate) FROM tblJournalLY
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptBusinessLogicCurrency_5]    Script Date: 26/06/2020 08:45:58 ******/

CREATE PROCEDURE [dbo].[SPRptBusinessLogicCurrency_5] 
@SQCurrCode nvarchar(200)
AS
BEGIN
SELECT TOP 1 decRate FROM tblCurrencyExc WHERE strCurrency = @SQCurrCode ORDER BY dteDate DESC
END
GO

/****** Object:  StoredProcedure [dbo].[SPRptBusinessLogicHistoryYear_4]    Script Date: 26/06/2020 08:45:58 ******/

CREATE PROCEDURE [dbo].[SPRptBusinessLogicHistoryYear_4]
@SQintFiscalYr nvarchar(200)
AS
BEGIN
SELECT uidYearID, dteYearStart, dteYearEnd FROM tblAcctHist WHERE intFiscalYr = @SQintFiscalYr
END
GO

/****** Object:  StoredProcedure [dbo].[SPRptBusinessLogicOnLoaded_1]    Script Date: 26/06/2020 08:45:58 ******/
CREATE PROCEDURE [dbo].[SPRptBusinessLogicOnLoaded_1]
AS
BEGIN
DECLARE @dteMaxJourDate date 
DECLARE @dteMaxJourDateLY date 
DECLARE @dteMaxJourDateHist date 
SELECT @dteMaxJourDate =  MAX(dteJournalDate) FROM tblJournal
SELECT @dteMaxJourDateLY =  MAX(dteJournalDate) FROM tblJournalLY
SELECT @dteMaxJourDateHist = MAX(dteJournalDate) FROM tblJournalHist
SELECT @dteMaxJourDate As MaxJourDate,@dteMaxJourDateLY As MaxJourDateLY,@dteMaxJourDateHist As MaxJourDateHist
END
GO

/****** Object:  StoredProcedure [dbo].[SPRptBusinessLogicOnLoaded_1_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptBusinessLogicOnLoaded_1_1] 
	
AS
BEGIN
DECLARE @lngMaxJourNumber bigint 
DECLARE @lngMaxJourNumberLY bigint 
DECLARE @lngMaxJourNumberHist bigint 
	SELECT @lngMaxJourNumber = MAX(lngJourID) FROM tblJournal
	SELECT @lngMaxJourNumberLY = ISNULL(MAX(lngJourID),1) FROM tblJournalLY
	SELECT @lngMaxJourNumberHist = ISNULL(MAX(lngJourID),1) FROM tblJournalHist

	SELECT @lngMaxJourNumber,@lngMaxJourNumberLY,@lngMaxJourNumberHist
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptBusinessLogicOnLoaded_2]    Script Date: 26/06/2020 08:45:58 ******/
CREATE PROCEDURE [dbo].[SPRptBusinessLogicOnLoaded_2] 
AS
BEGIN
SELECT intFiscalYr FROM tblAcctHist ORDER BY intFiscalYr DESC
END
GO

/****** Object:  StoredProcedure [dbo].[SPRptBusinessLogicOnLoaded_3]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptBusinessLogicOnLoaded_3] 
	
AS
BEGIN
SELECT strCurrency, strCurrName, bitHome FROM tblCurrency ORDER BY strCurrName
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptCashBookLoadQuery_Final]    Script Date: 26/06/2020 08:45:58 ******/

CREATE PROCEDURE [dbo].[SPRptCashBookLoadQuery_Final]
@SQintAcc AS NVARCHAR(MAX),
@SQstrDesc AS NVARCHAR(MAX),
@optBankCurrency_IsChecked AS BIT,
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@optHistoryYear_IsChecked AS BIT,
@SQuidYearID AS UNIQUEIDENTIFIER,
@SQStart AS DATE,
@SQEnd AS DATE,
@SQDecEntries AS DECIMAL(18,4) = 0
AS
BEGIN
CREATE TABLE #Temp
(
intAcc NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS, 
strDesc NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS, 
)
CREATE TABLE #tmpCASHBOOK
(
Account NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
Date1 DATETIME,
Comment NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
Source NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
Journal INT,
Amount DECIMAL(18,4),
DebitCredit NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
Tax DECIMAL(18,4),
EntryType INT
)
CREATE TABLE #TMP3
(
ROWID INT IDENTITY(1,1),
dteJournalDate DATETIME,
strComment NVARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS,
strSource NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
lngJourID INT,
decDebits DECIMAL(18,4),
decCredits DECIMAL(18,4),
decAmount DECIMAL(18,4),
decVAT DECIMAL(18,4),
intEntryType INT
)
CREATE TABLE #TMP4
(
	dteJournalDate SMALLDATETIME,
	strLineComment NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
	strSource NVARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS,
	lngJourID BIGINT,
	decVAT MONEY,
	intType TINYINT,
	decLineTotInc MONEY,
	decExchange DECIMAL(20,6),
	intGLNumber_HDR NVARCHAR(30) COLLATE SQL_Latin1_General_CP1_CI_AS,
	intGLNumber_DTL NVARCHAR(30) COLLATE SQL_Latin1_General_CP1_CI_AS
)
DECLARE @intAccTemp AS NVARCHAR(200)
DECLARE @strDescTemp AS NVARCHAR(200)
DECLARE @intGroupNumber AS INT
DECLARE @decopen AS DECIMAL(18,4)
DECLARE @strHomeCurrency AS NVARCHAR(200)
DECLARE @strcurrency AS NVARCHAR(200)
DECLARE @TOTALCOUNTER AS INT
DECLARE @COUNTER AS INT = 0
DECLARE @decEntries AS DECIMAL(18,4)
DECLARE @decBalForward AS DECIMAL(18,4)
DECLARE @STRDESC AS NVARCHAR(200)
DECLARE @ROW AS INTEGER = 1
DECLARE @SQAcct AS NVARCHAR(200) 
DECLARE @SQAcctDesc AS NVARCHAR(200)
DECLARE @DATEINSERT AS DATETIME

	SELECT @strHomeCurrency = strCurrency FROM tblCurrency WHERE bitHome = 1

	 INSERT INTO #Temp
	 SELECT Value, '' FROM [fnSplitStringAsTable]((@SQintAcc),(',')) where Value <> '''0' and Value <> '0''' and  Value <> '0'

	 IF @optCurrentYear_IsChecked = 1 
	 BEGIN
		UPDATE #Temp
		SET strDesc = tblAccounts.strDesc
		FROM tblAccounts 
		WHERE #Temp.intAcc = tblAccounts.intGLNumber
	 END
	 ELSE IF @optPreviousYear_IsChecked = 1 
	 BEGIN
		UPDATE #Temp
		SET strDesc = tblAccountsLY.strDesc
		FROM tblAccountsLY 
		WHERE #Temp.intAcc = tblAccountsLY.intGLNumber
	 END
	 ELSE IF @optHistoryYear_IsChecked = 1 
	 BEGIN
		UPDATE #Temp
		SET strDesc = tblAccountsHist.strDesc
		FROM tblAccountsHist 
		WHERE #Temp.intAcc = tblAccountsHist.intGLNumber
		AND tblAccountsHist.uidYearID = @SQuidYearID
	 END

	 INSERT INTO #TMP4
	 SELECT tblJournalEntryDocCB.dteJournalDate, 
			tblJournalEntryDocCBDT.strLineComment, 
			tblJournalEntryDocCB.strJEDocID AS strSource, 
			tblJournalEntryDocCB.lngJourID, 
			tblJournalEntryDocCBDT.decLineTaxAmt AS decVAT, 
			tblJournalEntryDocCBDT.intType,
			tblJournalEntryDocCBDT.decLineTotInc,
			tblJournalEntryDocCB.decExchange,
			tblJournalEntryDocCB.intGLNumber AS intGLNumber_HDR,
			tblJournalEntryDocCBDT.intGLNumber AS intGLNumber_DTL
	FROM tblJournalEntryDocCB 
	INNER JOIN tblJournalEntryDocCBDT ON tblJournalEntryDocCB.strJEDocID = tblJournalEntryDocCBDT.strJEDocID 
	WHERE (tblJournalEntryDocCB.dteJournalDate BETWEEN @SQStart AND @SQEnd)

	DECLARE db_cursor CURSOR FOR  
	SELECT intAcc, strDesc from #Temp  

	OPEN db_cursor   
	FETCH NEXT FROM db_cursor INTO @intAccTemp, @strDescTemp

	WHILE @@FETCH_STATUS = 0   
	BEGIN 
		
		IF @ROW <= (select count(*) from #Temp)
		BEGIN

			SET @SQAcct = @intAccTemp
			SET @SQAcctDesc = @strDescTemp
			
			IF @optBankCurrency_IsChecked = 1 
			BEGIN
				IF @optCurrentYear_IsChecked = 1 
				BEGIN
					SELECT  @decopen =ISNULL((CASE WHEN strCurrency = @strHomeCurrency THEN decOpenBalance ELSE decOpenBalanceF END), 0), @strcurrency = '(' + strCurrency + ')' FROM tblAccounts WHERE intGLNumber = @SQAcct
				END
				ELSE IF @optPreviousYear_IsChecked = 1 
				BEGIN
					SELECT  @decopen =ISNULL((CASE WHEN strCurrency = @strHomeCurrency THEN decOpenBalance ELSE decOpenBalanceF END), 0), @strcurrency = '(' + strCurrency + ')' FROM tblAccountsLY WHERE intGLNumber = @SQAcct
				END
				ELSE IF @optHistoryYear_IsChecked = 1 
				BEGIN
					SELECT  @decopen =ISNULL((CASE WHEN strCurrency = @strHomeCurrency THEN decOpenBalance ELSE decOpenBalanceF END), 0), @strcurrency = '(' + strCurrency + ')' FROM tblAccountsHist WHERE intGLNumber = @SQAcct AND uidYearID = @SQuidYearID
				END
			END
			ELSE
			BEGIN
				IF @optCurrentYear_IsChecked = 1 
				BEGIN
					SELECT  @decopen =ISNULL(decOpenBalance, 0), @strcurrency = '' FROM tblAccounts WHERE intGLNumber = @SQAcct
				END
				ELSE IF @optPreviousYear_IsChecked = 1 
				BEGIN
					SELECT  @decopen =ISNULL(decOpenBalance, 0), @strcurrency = '' FROM tblAccountsLY WHERE intGLNumber = @SQAcct
				END
				ELSE IF @optHistoryYear_IsChecked = 1 
				BEGIN
					SELECT  @decopen =ISNULL(decOpenBalance, 0), @strcurrency = '' FROM tblAccountsHist WHERE intGLNumber = @SQAcct AND uidYearID = @SQuidYearID
				END
			END

			IF @optCurrentYear_IsChecked = 1 
			BEGIN
				IF @optBankCurrency_IsChecked = 1 
				BEGIN
					SELECT @decEntries =  ISNULL(SUM(CASE WHEN tblAccounts.strCurrency = @strHomeCurrency THEN tblJournalEnt.decAmount ELSE tblJournalEnt.decAmountF END),0) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID INNER JOIN tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber WHERE (tblJournal.dteJournalDate < @SQStart) AND (tblJournalEnt.intGLNumber = @SQAcct)
				END
				ELSE
				BEGIN
					SELECT @decEntries = ISNULL(SUM(tblJournalEnt.decAmount),0) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate < @SQStart) AND (tblJournalEnt.intGLNumber = @SQAcct)
				END	
			END
			ELSE IF @optPreviousYear_IsChecked = 1 
			BEGIN
			IF @optBankCurrency_IsChecked = 1 
				BEGIN
					SELECT @decEntries = ISNULL(SUM(CASE WHEN tblAccountsLY.strCurrency = @strHomeCurrency THEN tblJournalEntLY.decAmount ELSE tblJournalEntLY.decAmountF END),0) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID INNER JOIN tblAccountsLY ON tblJournalEntLY.intGLNumber = tblAccountsLY.intGLNumber WHERE (tblJournalLY.dteJournalDate < @SQStart) AND (tblJournalEntLY.intGLNumber = @SQAcct)
				END
				ELSE
				BEGIN
					SELECT @decEntries =  ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate < @SQStart) AND (tblJournalEntLY.intGLNumber = @SQAcct)
				END	
			END
			ELSE IF @optHistoryYear_IsChecked = 1 
			BEGIN
			IF @optBankCurrency_IsChecked = 1 
				BEGIN
					SELECT @decEntries = ISNULL(SUM(CASE WHEN tblAccountsHist.strCurrency = @strHomeCurrency THEN tblJournalEntHist.decAmount ELSE tblJournalEntHist.decAmountF END),0) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID INNER JOIN tblAccountsHist ON tblJournalEntHist.intGLNumber = tblAccountsHist.intGLNumber AND tblJournalEntHist.uidYearID = tblAccountsHist.uidYearID WHERE (tblJournalHist.dteJournalDate < @SQStart) AND (tblJournalEntHist.intGLNumber = @SQAcct) AND (tblJournalEntHist.uidYearID = @SQuidYearID)
				END
				ELSE
				BEGIN
					SELECT @decEntries = ISNULL(SUM(tblJournalEntHist.decAmount),0) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate < @SQStart) AND (tblJournalEntHist.intGLNumber = @SQAcct) AND (tblJournalEntHist.uidYearID = @SQuidYearID)
				END	
			END

			SET @decBalForward = @decopen + @decEntries

			SELECT @STRDESC = @SQAcct + ' - ' + @SQAcctDesc + ' ' + @strcurrency
			
			SELECT @DATEINSERT  = (CONVERT(DATETIME, '1999/01/01',120))
			INSERT INTO #tmpCASHBOOK(Account ,Date1 ,Comment ,Source ,Journal ,Amount ,DebitCredit ,Tax ,EntryType)
			VALUES (@STRDESC, @DATEINSERT , 'Balance Forward', '', 0, ISNULL(@decBalForward,0.0000), 'BalanceForward', 0, 99)

			IF @optBankCurrency_IsChecked = 1 
			BEGIN
				IF @optCurrentYear_IsChecked = 1
				BEGIN
					INSERT INTO #TMP3
					SELECT	tblJournal.dteJournalDate, 
							CASE WHEN LTRIM(RTRIM(tblJournalEnt.strComment)) = '' THEN tblJournal.strComment ELSE tblJournalEnt.strComment END AS strComment, 
							tblJournal.strSource, 
							tblJournal.lngJourID, 
							CASE WHEN tblAccounts.strCurrency = @strHomeCurrency THEN tblJournalEnt.decDebits ELSE tblJournalEnt.decDebitsF END AS decDebits, 
							CASE WHEN tblAccounts.strCurrency = @strHomeCurrency THEN tblJournalEnt.decCredits ELSE tblJournalEnt.decCreditsF END AS decCredits, 
							CASE WHEN tblAccounts.strCurrency = @strHomeCurrency THEN tblJournalEnt.decAmount ELSE tblJournalEnt.decAmountF END AS decAmount, 
							CASE WHEN tblAccounts.strCurrency = @strHomeCurrency THEN tblTax.decVAT ELSE tblTax.decVATF END AS decVAT, 
							tblJournal.intEntryType 
					FROM tblJournal 
					INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID 
					INNER JOIN tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber 
					LEFT JOIN tblTax ON tblTax.lngJournalID = tblJournal.lngJourID 
									 AND tblJournal.strSource = tblTax.strDocNumber 
									 AND tblTax.decTotal = (CASE WHEN tblJournalEnt.decAmount < 0 THEN tblJournalEnt.decAmount * -1 ELSE tblJournalEnt.decAmount END) 
					WHERE (tblJournalEnt.intGLNumber = @SQAcct)
					AND (tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd) 
					AND (tblJournal.intEntryType <> 8) 
					UNION ALL 
					SELECT	dteJournalDate, 
							strLineComment, 
							strSource, 
							lngJourID, 
							CASE WHEN intType = 0 THEN decLineTotInc ELSE 0 END AS decDebits, 
							CASE WHEN intType = 1 THEN decLineTotInc ELSE 0 END AS decCredits, 
							CASE WHEN intGLNumber_HDR = @SQAcct THEN CASE WHEN intType = 0 THEN decLineTotInc * -1 ELSE decLineTotInc END ELSE CASE WHEN intType = 0 THEN decLineTotInc ELSE decLineTotInc * -1 END END AS decAmount, 
							decVAT, 
							8 AS intEntryType
					FROM #TMP4 
					WHERE (intGLNumber_HDR = @SQAcct OR intGLNumber_DTL = @SQAcct)
					ORDER BY dteJournalDate, lngJourID


				END
				ELSE IF @optPreviousYear_IsChecked = 1
				BEGIN
					INSERT INTO #TMP3
					SELECT	tblJournalLY.dteJournalDate, 
							CASE WHEN LTRIM(RTRIM(tblJournalEntLY.strComment)) = '' THEN tblJournalLY.strComment ELSE tblJournalEntLY.strComment END AS strComment, 
							tblJournalLY.strSource, 
							tblJournalLY.lngJourID, 
							CASE WHEN tblAccountsLY.strCurrency = @strHomeCurrency THEN tblJournalEntLY.decDebits ELSE tblJournalEntLY.decDebitsF END AS decDebits, 
							CASE WHEN tblAccountsLY.strCurrency = @strHomeCurrency THEN tblJournalEntLY.decCredits ELSE tblJournalEntLY.decCreditsF END AS decCredits, 
							CASE WHEN tblAccountsLY.strCurrency = @strHomeCurrency THEN tblJournalEntLY.decAmount ELSE tblJournalEntLY.decAmountF END AS decAmount, 
							CASE WHEN tblAccountsLY.strCurrency = @strHomeCurrency THEN tblTax.decVAT ELSE tblTax.decVATF END AS decVAT, 
							tblJournalLY.intEntryType 
					FROM tblJournalLY 
					INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID 
					INNER JOIN tblAccountsLY ON tblJournalEntLY.intGLNumber = tblAccountsLY.intGLNumber 
					LEFT JOIN tblTax ON tblTax.lngJournalID = tblJournalLY.lngJourID 
									 AND tblJournalLY.strSource = tblTax.strDocNumber 
									 AND tblTax.decTotal = (CASE WHEN tblJournalEntLY.decAmount < 0 THEN tblJournalEntLY.decAmount * -1 ELSE tblJournalEntLY.decAmount END) 
					WHERE (tblJournalEntLY.intGLNumber = @SQAcct)
					AND (tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd) 
					AND (tblJournalLY.intEntryType <> 8) 
					UNION ALL 
					SELECT	dteJournalDate, 
							strLineComment, 
							strSource, 
							lngJourID, 
							CASE WHEN intType = 0 THEN decLineTotInc ELSE 0 END AS decDebits, 
							CASE WHEN intType = 1 THEN decLineTotInc ELSE 0 END AS decCredits, 
							CASE WHEN intGLNumber_HDR = @SQAcct THEN CASE WHEN intType = 0 THEN decLineTotInc * -1 ELSE decLineTotInc END ELSE CASE WHEN intType = 0 THEN decLineTotInc ELSE decLineTotInc * -1 END END AS decAmount, 
							decVAT, 
							8 AS intEntryType
					FROM #TMP4 
					WHERE (intGLNumber_HDR = @SQAcct OR intGLNumber_DTL = @SQAcct)
					ORDER BY dteJournalDate, lngJourID
				END
				ELSE IF @optHistoryYear_IsChecked = 1
				BEGIN
					INSERT INTO #TMP3
					SELECT	tblJournalHist.dteJournalDate, 
							CASE WHEN LTRIM(RTRIM(tblJournalEntHist.strComment)) = '' THEN tblJournalHist.strComment ELSE tblJournalEntHist.strComment END AS strComment, 
							tblJournalHist.strSource, 
							tblJournalHist.lngJourID, 
							CASE WHEN tblAccountsHist.strCurrency = @strHomeCurrency THEN tblJournalEntHist.decDebits ELSE tblJournalEntHist.decDebitsF END AS decDebits, 
							CASE WHEN tblAccountsHist.strCurrency = @strHomeCurrency THEN tblJournalEntHist.decCredits ELSE tblJournalEntHist.decCreditsF END AS decCredits, 
							CASE WHEN tblAccountsHist.strCurrency = @strHomeCurrency THEN tblJournalEntHist.decAmount ELSE tblJournalEntHist.decAmountF END AS decAmount, 
							CASE WHEN tblAccountsHist.strCurrency = @strHomeCurrency THEN tblTax.decVAT ELSE tblTax.decVATF END AS decVAT, 
							tblJournalHist.intEntryType 
					FROM tblJournalHist 
					INNER JOIN tblJournalEntHist ON tblJournalHist.lngJourID = tblJournalEntHist.lngJourID 
					INNER JOIN tblAccountsHist ON tblJournalEntHist.intGLNumber = tblAccountsHist.intGLNumber 
											   AND tblJournalEntHist.uidYearID = tblAccountsHist.uidYearID 
					LEFT JOIN tblTax ON tblTax.lngJournalID = tblJournalHist.lngJourID 
									 AND tblJournalHist.strSource = tblTax.strDocNumber 
									 AND tblTax.decTotal = (CASE WHEN tblJournalEntHist.decAmount < 0 THEN tblJournalEntHist.decAmount * -1 ELSE tblJournalEntHist.decAmount END) 
					WHERE (tblJournalEntHist.intGLNumber = @SQAcct) 
					AND (tblJournalHist.dteJournalDate BETWEEN @SQStart AND @SQEnd) 
					AND (tblJournalHist.intEntryType <> 8) 
					AND (tblJournalEntHist.uidYearID = @SQuidYearID) 
					UNION ALL 
					SELECT	dteJournalDate, 
							strLineComment, 
							strSource, 
							lngJourID, 
							CASE WHEN intType = 0 THEN decLineTotInc ELSE 0 END AS decDebits, 
							CASE WHEN intType = 1 THEN decLineTotInc ELSE 0 END AS decCredits, 
							CASE WHEN intGLNumber_HDR = @SQAcct THEN CASE WHEN intType = 0 THEN decLineTotInc * -1 ELSE decLineTotInc END ELSE CASE WHEN intType = 0 THEN decLineTotInc ELSE decLineTotInc * -1 END END AS decAmount, 
							decVAT, 
							8 AS intEntryType
					FROM #TMP4 
					WHERE (intGLNumber_HDR = @SQAcct OR intGLNumber_DTL = @SQAcct)
					ORDER BY dteJournalDate, lngJourID
				END
			END
			ELSE
			BEGIN
				IF @optCurrentYear_IsChecked = 1
				BEGIN
					INSERT INTO #TMP3
					SELECT	tblJournal.dteJournalDate, 
							CASE WHEN LTRIM(RTRIM(tblJournalEnt.strComment)) = '' THEN tblJournal.strComment ELSE tblJournalEnt.strComment END AS strComment, 
							tblJournal.strSource, 
							tblJournal.lngJourID, 
							tblJournalEnt.decDebits, 
							tblJournalEnt.decCredits, 
							tblJournalEnt.decAmount, 
							tblTax.decVAT, 
							tblJournal.intEntryType 
					FROM tblJournal 
					INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID 
					LEFT JOIN tblTax ON tblTax.lngJournalID = tblJournal.lngJourID 
									 AND tblJournal.strSource = tblTax.strDocNumber 
									 AND tblTax.decTotal = (CASE WHEN tblJournalEnt.decAmount < 0 THEN tblJournalEnt.decAmount * -1 ELSE tblJournalEnt.decAmount END) 
					WHERE (tblJournalEnt.intGLNumber = @SQAcct) 
					AND (tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd) 
					AND (tblJournal.intEntryType <> 8) 
					UNION ALL 
					SELECT	dteJournalDate, 
							strLineComment, 
							strSource, 
							lngJourID, 
							CASE WHEN intType = 0 THEN decLineTotInc * decExchange ELSE 0 END AS decDebits, 
							CASE WHEN intType = 1 THEN decLineTotInc * decExchange ELSE 0 END AS decCredits, 
							CASE WHEN intGLNumber_HDR = @SQAcct THEN CASE WHEN intType = 0 THEN (decLineTotInc * decExchange) * -1 ELSE decLineTotInc * decExchange END ELSE CASE WHEN intType = 0 THEN decLineTotInc * decExchange ELSE (decLineTotInc * decExchange) * -1 END END AS decAmount, 
							decVAT * decExchange AS decVAT, 
							8 AS intEntryType
					FROM #TMP4 
					WHERE (intGLNumber_HDR = @SQAcct OR intGLNumber_DTL = @SQAcct)
					ORDER BY dteJournalDate, lngJourID
				END
				ELSE IF @optPreviousYear_IsChecked = 1
				BEGIN
					INSERT INTO #TMP3
					SELECT	tblJournalLY.dteJournalDate, 
							CASE WHEN LTRIM(RTRIM(tblJournalEntLY.strComment)) = '' THEN tblJournalLY.strComment ELSE tblJournalEntLY.strComment END AS strComment, 
							tblJournalLY.strSource, 
							tblJournalLY.lngJourID, 
							tblJournalEntLY.decDebits, 
							tblJournalEntLY.decCredits, 
							tblJournalEntLY.decAmount, 
							tblTax.decVAT, 
							tblJournalLY.intEntryType 
					FROM tblJournalLY 
					INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID 
					LEFT JOIN tblTax ON tblTax.lngJournalID = tblJournalLY.lngJourID 
									 AND tblJournalLY.strSource = tblTax.strDocNumber 
									 AND tblTax.decTotal = (CASE WHEN tblJournalEntLY.decAmount < 0 THEN tblJournalEntLY.decAmount * -1 ELSE tblJournalEntLY.decAmount END) 
					WHERE (tblJournalEntLY.intGLNumber = @SQAcct) 
					AND (tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd) 
					AND (tblJournalLY.intEntryType <> 8) 
					UNION ALL 
					SELECT	dteJournalDate, 
							strLineComment, 
							strSource, 
							lngJourID, 
							CASE WHEN intType = 0 THEN decLineTotInc * decExchange ELSE 0 END AS decDebits, 
							CASE WHEN intType = 1 THEN decLineTotInc * decExchange ELSE 0 END AS decCredits, 
							CASE WHEN intGLNumber_HDR = @SQAcct THEN CASE WHEN intType = 0 THEN (decLineTotInc * decExchange) * -1 ELSE decLineTotInc * decExchange END ELSE CASE WHEN intType = 0 THEN decLineTotInc * decExchange ELSE (decLineTotInc * decExchange) * -1 END END AS decAmount, 
							decVAT * decExchange AS decVAT, 
							8 AS intEntryType
					FROM #TMP4 
					WHERE (intGLNumber_HDR = @SQAcct OR intGLNumber_DTL = @SQAcct)
					ORDER BY dteJournalDate, lngJourID
				END
				ELSE IF @optHistoryYear_IsChecked = 1
				BEGIN
					INSERT INTO #TMP3
					SELECT	tblJournalHist.dteJournalDate, 
							CASE WHEN LTRIM(RTRIM(tblJournalEntHist.strComment)) = '' THEN tblJournalHist.strComment ELSE tblJournalEntHist.strComment END AS strComment, 
							tblJournalHist.strSource, 
							tblJournalHist.lngJourID, 
							tblJournalEntHist.decDebits, 
							tblJournalEntHist.decCredits, 
							tblJournalEntHist.decAmount, 
							tblTax.decVAT, 
							tblJournalHist.intEntryType 
					FROM tblJournalHist 
					INNER JOIN tblJournalEntHist ON tblJournalHist.lngJourID = tblJournalEntHist.lngJourID 
					LEFT JOIN tblTax ON tblTax.lngJournalID = tblJournalHist.lngJourID 
									 AND tblJournalHist.strSource = tblTax.strDocNumber 
									 AND tblTax.decTotal = (CASE WHEN tblJournalEntHist.decAmount < 0 THEN tblJournalEntHist.decAmount * -1 ELSE tblJournalEntHist.decAmount END) 
					WHERE (tblJournalEntHist.intGLNumber = @SQAcct) 
					AND (tblJournalHist.dteJournalDate BETWEEN @SQStart AND @SQEnd) 
					AND (tblJournalHist.intEntryType <> 8) 
					AND (tblJournalEntHist.uidYearID = @SQuidYearID) 
					UNION ALL 
					SELECT	dteJournalDate, 
							strLineComment, 
							strSource, 
							lngJourID, 
							CASE WHEN intType = 0 THEN decLineTotInc * decExchange ELSE 0 END AS decDebits, 
							CASE WHEN intType = 1 THEN decLineTotInc * decExchange ELSE 0 END AS decCredits, 
							CASE WHEN intGLNumber_HDR = @SQAcct THEN CASE WHEN intType = 0 THEN (decLineTotInc * decExchange) * -1 ELSE decLineTotInc * decExchange END ELSE CASE WHEN intType = 0 THEN decLineTotInc * decExchange ELSE (decLineTotInc * decExchange) * -1 END END AS decAmount, 
							decVAT * decExchange AS decVAT, 
							8 AS intEntryType
					FROM #TMP4 
					WHERE (intGLNumber_HDR = @SQAcct OR intGLNumber_DTL = @SQAcct)
					ORDER BY dteJournalDate, lngJourID
				END
			END

			IF(EXISTS(SELECT * FROM #TMP3))
			BEGIN

			INSERT INTO #tmpCASHBOOK (Account ,Date1 ,Comment ,Source ,Journal ,Amount ,DebitCredit ,Tax ,EntryType) 
			(
				SELECT @STRDESC, dteJournalDate, strComment, strSource, lngJourID, decAmount, 
				CASE 
					WHEN intEntryType IN (1,5) THEN 
					  'Receipts'
					WHEN intEntryType IN (2,6) THEN
					  'Payments'
					WHEN intEntryType IN (0,3,4,8) THEN
						CASE WHEN decDebits > 0 THEN 'Receipts' ELSE 'Payments' END 
					END, 
					CONVERT(DECIMAL(18,4),(ISNULL(decVAT,0))), intEntryType
				FROM #TMP3
			)

			END
			
		END

		SET @ROW = 	@ROW + 1
		TRUNCATE TABLE #TMP3
		FETCH NEXT FROM db_cursor INTO @intAccTemp, @strDescTemp
	 END   

CLOSE db_cursor   
DEALLOCATE db_cursor

SELECT Account, Date1, Comment, Source, Journal, Amount, DebitCredit, Tax, EntryType 
FROM #tmpCASHBOOK 
ORDER BY Account

DROP TABLE #tmpCASHBOOK
DROP TABLE #Temp
DROP TABLE #TMP3
DROP TABLE #TMP4
END
GO

/****** Object:  StoredProcedure [dbo].[SPRptCashBookRefreshForm_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptCashBookRefreshForm_1] 
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@optHistoryYear_IsChecked AS BIT,
@oAcctSec_GLAccountAccess AS BIT,
@chkInactive_IsChecked AS BIT,
@SQstrUserName AS NVARCHAR(200),
@SQSearchBy AS NVARCHAR(MAX),
@SQuidYearID AS UNIQUEIDENTIFIER
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		IF @oAcctSec_GLAccountAccess = 1
		BEGIN
			IF @chkInactive_IsChecked = 0
			BEGIN
				SELECT intGLNumber, strDesc, 0, '' FROM tblAccounts WHERE bitBank = 1 AND bitLinkCEarnings = 0 AND intGroupCode < 3 AND bitInactive = 0 AND (intGLNumber LIKE @SQSearchBy OR strDesc LIKE @SQSearchBy) ORDER BY intGLNumber
			END
			ELSE
			BEGIN
				SELECT intGLNumber, strDesc, 0, '' FROM tblAccounts WHERE bitBank = 1 AND bitLinkCEarnings = 0 AND intGroupCode < 3 AND (intGLNumber LIKE @SQSearchBy OR strDesc LIKE @SQSearchBy) ORDER BY intGLNumber
			END
		END
		ELSE
		BEGIN
			IF @chkInactive_IsChecked = 0
			BEGIN
				SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0), ISNULL(tblAccountsSec.strUserName,'') FROM tblAccounts LEFT JOIN tblAccountsSec ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQstrUserName WHERE tblAccounts.bitBank = 1 AND tblAccounts.bitLinkCEarnings = 0 AND tblAccounts.intGroupCode < 3 AND tblAccounts.bitInactive = 0 AND (tblAccounts.intGLNumber LIKE @SQSearchBy OR tblAccounts.strDesc LIKE @SQSearchBy) ORDER BY tblAccounts.intGLNumber
			END
			ELSE
			BEGIN
				SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0), ISNULL(tblAccountsSec.strUserName,'') FROM tblAccounts LEFT JOIN tblAccountsSec ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQstrUserName WHERE tblAccounts.bitBank = 1 AND tblAccounts.bitLinkCEarnings = 0 AND tblAccounts.intGroupCode < 3 AND (tblAccounts.intGLNumber LIKE @SQSearchBy OR tblAccounts.strDesc LIKE @SQSearchBy) ORDER BY tblAccounts.intGLNumber
			END
		END
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		IF @oAcctSec_GLAccountAccess = 1
		BEGIN
			IF @chkInactive_IsChecked = 0
			BEGIN
				SELECT intGLNumber, strDesc, 0, '' FROM tblAccountsLY WHERE bitBank = 1 AND bitLinkCEarnings = 0 AND intGroupCode < 3 AND bitInactive = 0 AND (intGLNumber LIKE @SQSearchBy OR strDesc LIKE @SQSearchBy) ORDER BY intGLNumber
			END
			ELSE
			BEGIN
				SELECT intGLNumber, strDesc, 0, '' FROM tblAccountsLY WHERE bitBank = 1 AND bitLinkCEarnings = 0 AND intGroupCode < 3 AND (intGLNumber LIKE @SQSearchBy OR strDesc LIKE @SQSearchBy) ORDER BY intGLNumber
			END
		END
		ELSE
		BEGIN
			IF @chkInactive_IsChecked = 0
			BEGIN
				SELECT tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0), ISNULL(tblAccountsSec.strUserName,'') FROM tblAccountsLY LEFT JOIN tblAccountsSec ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQstrUserName WHERE tblAccountsLY.bitBank = 1 AND tblAccountsLY.bitLinkCEarnings = 0 AND tblAccountsLY.intGroupCode < 3 AND tblAccountsLY.bitInactive = 0 AND (tblAccountsLY.intGLNumber LIKE @SQSearchBy OR tblAccountsLY.strDesc LIKE @SQSearchBy) ORDER BY tblAccountsLY.intGLNumber
			END
			ELSE
			BEGIN
				SELECT tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0), ISNULL(tblAccountsSec.strUserName,'') FROM tblAccountsLY LEFT JOIN tblAccountsSec ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQstrUserName WHERE tblAccountsLY.bitBank = 1 AND tblAccountsLY.bitLinkCEarnings = 0 AND tblAccountsLY.intGroupCode < 3 AND (tblAccountsLY.intGLNumber LIKE @SQSearchBy OR tblAccountsLY.strDesc LIKE @SQSearchBy) ORDER BY tblAccountsLY.intGLNumber
			END
		END
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		IF @oAcctSec_GLAccountAccess = 1
		BEGIN
			IF @chkInactive_IsChecked = 0
			BEGIN
				SELECT intGLNumber, strDesc, 0, '' FROM tblAccountsHist WHERE bitBank = 1 AND bitLinkCEarnings = 0 AND intGroupCode < 3 AND uidYearID = @SQuidYearID AND bitInactive = 0 AND (intGLNumber LIKE @SQSearchBy OR strDesc LIKE @SQSearchBy) ORDER BY intGLNumber
			END
			ELSE
			BEGIN
				SELECT intGLNumber, strDesc, 0, '' FROM tblAccountsHist WHERE bitBank = 1 AND bitLinkCEarnings = 0 AND intGroupCode < 3 AND uidYearID = @SQuidYearID AND (intGLNumber LIKE @SQSearchBy OR strDesc LIKE @SQSearchBy) ORDER BY intGLNumber				
			END
		END
		ELSE
		BEGIN
			IF @chkInactive_IsChecked = 0
			BEGIN
				SELECT tblAccountsHist.intGLNumber, tblAccountsHist.strDesc, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec WHERE tblAccountsSec.intGLNumber = tblAccountsHist.intGLNumber),0), ISNULL(tblAccountsSec.strUserName,'') FROM tblAccountsHist LEFT JOIN tblAccountsSec ON tblAccountsHist.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQstrUserName WHERE tblAccountsHist.bitBank = 1 AND tblAccountsHist.bitLinkCEarnings = 0 AND tblAccountsHist.intGroupCode < 3 AND tblAccountsHist.uidYearID = @SQuidYearID AND tblAccountsHist.bitInactive = 0 AND (tblAccountsHist.intGLNumber LIKE @SQSearchBy OR tblAccountsHist.strDesc LIKE @SQSearchBy) ORDER BY tblAccountsHist.intGLNumber
			END
			ELSE
			BEGIN
				SELECT tblAccountsHist.intGLNumber, tblAccountsHist.strDesc, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec WHERE tblAccountsSec.intGLNumber = tblAccountsHist.intGLNumber),0), ISNULL(tblAccountsSec.strUserName,'') FROM tblAccountsHist LEFT JOIN tblAccountsSec ON tblAccountsHist.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQstrUserName WHERE tblAccountsHist.bitBank = 1 AND tblAccountsHist.bitLinkCEarnings = 0 AND tblAccountsHist.intGroupCode < 3 AND tblAccountsHist.uidYearID = @SQuidYearID AND (tblAccountsHist.intGLNumber LIKE @SQSearchBy OR tblAccountsHist.strDesc LIKE @SQSearchBy) ORDER BY tblAccountsHist.intGLNumber
			END
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptCenterAllocSetupLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptCenterAllocSetupLoadQuery_1]
@strLevels AS NVARCHAR(MAX),
@optCurrentYear_IsChecked AS BIT,
@chkIncLower_IsChecked AS BIT,
@strSplit_Length AS INT,
@SQStartDate AS DATE,
@SQFinishDate AS DATE,
@txtLoc_Length AS INT,
@strSplit_0 AS NVARCHAR(MAX),
@strSplit_1 AS NVARCHAR(MAX),
@strSplit_2 AS NVARCHAR(MAX),
@strSplit_3 AS NVARCHAR(MAX)

AS
BEGIN 
	
	DECLARE @TmpTable TABLE
	(
		[strCOL01] NVARCHAR(MAX),
		[strCOL02] NVARCHAR(MAX),
		[strCOL03] DECIMAL(18,2),
		[strCOL04] NVARCHAR(MAX)
	)

	DECLARE @strLevelTemp AS NVARCHAR(MAX)

	DECLARE db_cursor CURSOR FOR  
	SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@strLevels, '~')

	OPEN db_cursor   
	FETCH NEXT FROM db_cursor INTO @strLevelTemp
	WHILE @@FETCH_STATUS = 0   
	BEGIN 

		DECLARE @SQLevel1 AS NVARCHAR(MAX)
		DECLARE @SQLevel2 AS NVARCHAR(MAX)
		DECLARE @SQLevel3 AS NVARCHAR(MAX)
		DECLARE @SQLevel4 AS NVARCHAR(MAX)
		DECLARE @SQLevel5 AS NVARCHAR(MAX)

		DECLARE @QueryCommand AS NVARCHAR(MAX)		
		DECLARE @ParameterDefinition AS NVARCHAR(MAX) 	

		IF @optCurrentYear_IsChecked = 1
		BEGIN
			SET @QueryCommand = 'SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, SUM(tblCenterEnt.decAmount) AS Expr1, @strLevelTemp FROM tblAccounts INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber INNER JOIN tblCenterEnt ON tblJournalEnt.lngJourID = tblCenterEnt.lngJourID AND tblJournalEnt.intLineNum = tblCenterEnt.intLineNum INNER JOIN tblCenters ON tblCenterEnt.uidCenterID = tblCenters.uidCenterID INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate >= @SQStartDate AND tblJournal.dteJournalDate <= @SQFinishDate)'
		END
		ELSE
		BEGIN
			SET @QueryCommand = 'SELECT tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, SUM(tblCenterEntLY.decAmount) AS Expr1, @strLevelTemp FROM tblAccountsLY INNER JOIN tblJournalEntLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber INNER JOIN tblCenterEntLY ON tblJournalEntLY.lngJourID = tblCenterEntLY.lngJourID AND tblJournalEntLY.intLineNum = tblCenterEntLY.intLineNum INNER JOIN tblCentersLY ON tblCenterEntLY.uidCenterID = tblCentersLY.uidCenterID INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate >= @SQStartDate AND tblJournalLY.dteJournalDate <= @SQFinishDate)'
		END

		IF @txtLoc_Length = 0
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	SET @QueryCommand +=' AND (tblCenters.strLvl2 IS NULL)'	END

				SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.strDesc'
			END
			ELSE 
			BEGIN
				SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	SET @QueryCommand +=' AND (tblCentersLY.strLvl2 IS NULL)'	END

				SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.strDesc'
			END	
			SET @SQLevel1 = @strLevelTemp		
		END
	
		ELSE IF @strSplit_Length = 1	
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	SET @QueryCommand +=' AND (tblCenters.strLvl3 IS NULL)'	END

				SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.strDesc'
			END
			ELSE 
			BEGIN
				SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	SET @QueryCommand +=' AND (tblCentersLY.strLvl3 IS NULL)'	END

				SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.strDesc'
			END
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strLevelTemp
		END

		ELSE IF @strSplit_Length = 2
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	SET @QueryCommand +=' AND (tblCenters.strLvl4 IS NULL)'	END

				SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.strDesc'				
			END
			ELSE 
			BEGIN
				SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	SET @QueryCommand +=' AND (tblCentersLY.strLvl4 IS NULL)'	END

				SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.strDesc'
			END
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strLevelTemp
		END
		
		ELSE IF @strSplit_Length = 3
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	SET @QueryCommand +=' AND (tblCenters.strLvl5 IS NULL)'	END

				SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.strDesc'
			END
			ELSE 
			BEGIN
				SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	SET @QueryCommand +=' AND (tblCentersLY.strLvl5 IS NULL)'	END

				SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.strDesc'
			END
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strSplit_2
			SET @SQLevel4 = @strLevelTemp
		END

		ELSE
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4) AND (tblCenters.strLvl5 = @SQLevel5)'
				SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.strDesc'
			END
			ELSE 
			BEGIN
				SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4) AND (tblCentersLY.strLvl5 = @SQLevel5)'
				SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.strDesc'
			END
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strSplit_2
			SET @SQLevel4 = @strSplit_3
			SET @SQLevel5 = @strLevelTemp
		END
				
		Set @ParameterDefinition =' @strLevelTemp NVARCHAR(MAX),
                @SQStartDate DATE,
				@SQFinishDate DATE,
				@SQLevel1 NVARCHAR(MAX),
				@SQLevel2 NVARCHAR(MAX),
				@SQLevel3 NVARCHAR(MAX),
				@SQLevel4 NVARCHAR(MAX),
				@SQLevel5 NVARCHAR(MAX)'
								
		INSERT INTO @TmpTable EXECUTE sp_executesql @QueryCommand, @ParameterDefinition, @strLevelTemp, @SQStartDate, @SQFinishDate, @SQLevel1, @SQLevel2, @SQLevel3, @SQLevel4, @SQLevel5
				
		FETCH NEXT FROM db_cursor INTO @strLevelTemp
	END   

	CLOSE db_cursor   
	DEALLOCATE db_cursor

	SELECT * FROM @TmpTable

END
GO
/****** Object:  StoredProcedure [dbo].[SPRptCenterAllocSetupLoadQuery_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptCenterAllocSetupLoadQuery_2]
@strLevels AS NVARCHAR(MAX),
@optCurrentYear_IsChecked AS BIT,
@chkIncLower_IsChecked AS BIT,
@strSplit_Length AS INT,
@SQStartDate AS DATE,
@SQFinishDate AS DATE,
@txtLoc_Length AS INT,
@strSplit_0 AS NVARCHAR(MAX),
@strSplit_1 AS NVARCHAR(MAX),
@strSplit_2 AS NVARCHAR(MAX),
@strSplit_3 AS NVARCHAR(MAX)

AS
BEGIN 
	DECLARE @TmpTable TABLE
	(
		strLevel NVARCHAR(MAX),
		intGLNumber NVARCHAR(MAX),
		strDesc NVARCHAR(MAX),	
		dteJournalDate DATE,
		strSource NVARCHAR(MAX),
		strComment NVARCHAR(MAX),
		lngJourID BIGINT,			
		decAmount MONEY
	)	
	
	DECLARE @strLevelTemp AS NVARCHAR(MAX)

	DECLARE db_cursor CURSOR FOR  
	SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@strLevels, '~')

	OPEN db_cursor   
	FETCH NEXT FROM db_cursor INTO @strLevelTemp
	WHILE @@FETCH_STATUS = 0   
	BEGIN 
	
		DECLARE @SQLevel1 AS NVARCHAR(MAX)
		DECLARE @SQLevel2 AS NVARCHAR(MAX)
		DECLARE @SQLevel3 AS NVARCHAR(MAX)
		DECLARE @SQLevel4 AS NVARCHAR(MAX)
		DECLARE @SQLevel5 AS NVARCHAR(MAX)
		DECLARE @QueryCommand1 AS NVARCHAR(MAX)
		DECLARE @QueryCommand2 AS NVARCHAR(MAX)
		DECLARE @ParameterDefinition AS NVARCHAR(MAX) 

		IF @optCurrentYear_IsChecked = 1
		BEGIN
			SET @QueryCommand1 = 'SELECT @strLevelTemp, tblJournalEnt.intGLNumber, tblAccounts.strDesc, @SQStartDate, ''Balance Forward'', '' '', 0, ISNULL(SUM(tblCenterEnt.decAmount), 0) AS Expr1 FROM tblCenterEnt INNER JOIN tblJournalEnt ON tblCenterEnt.lngJourID = tblJournalEnt.lngJourID AND tblCenterEnt.intLineNum = tblJournalEnt.intLineNum INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID INNER JOIN tblCenters ON tblCenterEnt.uidCenterID = tblCenters.uidCenterID INNER JOIN tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber WHERE (tblJournal.dteJournalDate < @SQStartDate)'

			SET @QueryCommand2 = 'SELECT @strLevelTemp, tblAccounts.intGLNumber, tblAccounts.strDesc, tblJournal.dteJournalDate, tblJournal.strSource, tblJournal.strComment, tblJournal.lngJourID, tblCenterEnt.decAmount FROM tblAccounts INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber INNER JOIN tblCenterEnt ON tblJournalEnt.lngJourID = tblCenterEnt.lngJourID AND tblJournalEnt.intLineNum = tblCenterEnt.intLineNum INNER JOIN tblCenters ON tblCenterEnt.uidCenterID = tblCenters.uidCenterID INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate >= @SQStartDate AND tblJournal.dteJournalDate <= @SQFinishDate)'
		END
		ELSE
		BEGIN
			SET @QueryCommand1 = 'SELECT @strLevelTemp, tblJournalEntLY.intGLNumber, tblAccountsLY.strDesc, @SQStartDate, ''Balance Forward'', '' '', 0, ISNULL(SUM(tblCenterEntLY.decAmount), 0) AS Expr1 FROM tblCenterEntLY INNER JOIN tblJournalEntLY ON tblCenterEntLY.lngJourID = tblJournalEntLY.lngJourID AND tblCenterEntLY.intLineNum = tblJournalEntLY.intLineNum INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID INNER JOIN tblCentersLY ON tblCenterEntLY.uidCenterID = tblCentersLY.uidCenterID INNER JOIN tblAccountsLY ON tblJournalEntLY.intGLNumber = tblAccountsLY.intGLNumber WHERE (tblJournalLY.dteJournalDate < @SQStartDate)'

			SET @QueryCommand2 = 'SELECT @strLevelTemp, tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, tblJournalLY.dteJournalDate, tblJournalLY.strSource, tblJournalLY.strComment, tblJournalLY.lngJourID, tblCenterEntLY.decAmount FROM tblAccountsLY INNER JOIN tblJournalEntLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber INNER JOIN tblCenterEntLY ON tblJournalEntLY.lngJourID = tblCenterEntLY.lngJourID AND tblJournalEntLY.intLineNum = tblCenterEntLY.intLineNum INNER JOIN tblCentersLY ON tblCenterEntLY.uidCenterID = tblCentersLY.uidCenterID INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate >= @SQStartDate AND tblJournalLY.dteJournalDate <= @SQFinishDate)'
		END

		IF @txtLoc_Length = 0
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1)'
				SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	
						SET @QueryCommand1 +=' AND (tblCenters.strLvl2 IS NULL)'
						SET @QueryCommand2 +=' AND (tblCenters.strLvl2 IS NULL)'
					END

				SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber, tblAccounts.strDesc ORDER BY tblAccounts.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccounts.strDesc'
			END
			ELSE 
			BEGIN
				SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1)'
				SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	
						SET @QueryCommand1 +=' AND (tblCentersLY.strLvl2 IS NULL)'
						SET @QueryCommand2 +=' AND (tblCentersLY.strLvl2 IS NULL)'
					END

				SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber, tblAccountsLY.strDesc ORDER BY tblAccountsLY.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccountsLY.strDesc'
			END	
			SET @SQLevel1 = @strLevelTemp		
		END
	
		ELSE IF @strSplit_Length = 1	
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2)'
				SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	
						SET @QueryCommand1 +=' AND (tblCenters.strLvl3 IS NULL)'
						SET @QueryCommand2 +=' AND (tblCenters.strLvl3 IS NULL)'
				END

				SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber, tblAccounts.strDesc ORDER BY tblAccounts.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccounts.strDesc'
			END
			ELSE 
			BEGIN
				SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2)'
				SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	
						SET @QueryCommand1 +=' AND (tblCentersLY.strLvl3 IS NULL)'
						SET @QueryCommand2 +=' AND (tblCentersLY.strLvl3 IS NULL)'
					END

				SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber, tblAccountsLY.strDesc ORDER BY tblAccountsLY.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccountsLY.strDesc'
			END
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strLevelTemp
		END

		ELSE IF @strSplit_Length = 2
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3)'
				SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	
						SET @QueryCommand1 +=' AND (tblCenters.strLvl4 IS NULL)'
						SET @QueryCommand2 +=' AND (tblCenters.strLvl4 IS NULL)'
					END

				SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber, tblAccounts.strDesc ORDER BY tblAccounts.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccounts.strDesc'
			END
			ELSE 
			BEGIN
				SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3)'
				SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	
						SET @QueryCommand1 +=' AND (tblCentersLY.strLvl4 IS NULL)'
						SET @QueryCommand2 +=' AND (tblCentersLY.strLvl4 IS NULL)'
					END

				SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber, tblAccountsLY.strDesc ORDER BY tblAccountsLY.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccountsLY.strDesc'
			END
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strLevelTemp
		END
		
		ELSE IF @strSplit_Length = 3
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4)'
				SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	
						SET @QueryCommand1 +=' AND (tblCenters.strLvl5 IS NULL)'
						SET @QueryCommand2 +=' AND (tblCenters.strLvl5 IS NULL)'
					END

				SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber, tblAccounts.strDesc ORDER BY tblAccounts.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccounts.strDesc'
			END
			ELSE 
			BEGIN
				SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4)'
				SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	
						SET @QueryCommand1 +=' AND (tblCentersLY.strLvl5 IS NULL)'
						SET @QueryCommand2 +=' AND (tblCentersLY.strLvl5 IS NULL)'
					END

				SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber, tblAccountsLY.strDesc ORDER BY tblAccountsLY.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccountsLY.strDesc'
			END
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strSplit_2
			SET @SQLevel4 = @strLevelTemp
		END

		ELSE
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4) AND (tblCenters.strLvl5 = @SQLevel5)'
				SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4) AND (tblCenters.strLvl5 = @SQLevel5)'
				SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber, tblAccounts.strDesc ORDER BY tblAccounts.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccounts.strDesc'
			END
			ELSE 
			BEGIN
				SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4) AND (tblCentersLY.strLvl5 = @SQLevel5)'
				SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4) AND (tblCentersLY.strLvl5 = @SQLevel5)'
				SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber, tblAccountsLY.strDesc ORDER BY tblAccountsLY.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccountsLY.strDesc'
			END
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strSplit_2
			SET @SQLevel4 = @strSplit_3
			SET @SQLevel5 = @strLevelTemp
		END
						
		Set @ParameterDefinition =' @strLevelTemp NVARCHAR(MAX),
                @SQStartDate DATE,
				@SQFinishDate DATE,
				@SQLevel1 NVARCHAR(MAX),
				@SQLevel2 NVARCHAR(MAX),
				@SQLevel3 NVARCHAR(MAX),
				@SQLevel4 NVARCHAR(MAX),
				@SQLevel5 NVARCHAR(MAX)'

		INSERT INTO @TmpTable EXECUTE sp_executesql @QueryCommand1, @ParameterDefinition, @strLevelTemp, @SQStartDate, @SQFinishDate, @SQLevel1, @SQLevel2, @SQLevel3, @SQLevel4, @SQLevel5
		INSERT INTO @TmpTable EXECUTE sp_executesql @QueryCommand2, @ParameterDefinition, @strLevelTemp, @SQStartDate, @SQFinishDate, @SQLevel1, @SQLevel2, @SQLevel3, @SQLevel4, @SQLevel5
				
		FETCH NEXT FROM db_cursor INTO @strLevelTemp
	END   

	CLOSE db_cursor   
	DEALLOCATE db_cursor

	SELECT strLevel
			,intGLNumber
			,strDesc
			,dteJournalDate
			,(CASE WHEN strSource = 'Stock Count'
				THEN (CASE WHEN @optCurrentYear_IsChecked = 1 
						   THEN ISNULL((SELECT ISNULL(CONCAT('SC/',strAdjDocID), T.strSource) FROM tblInvAdjDoc WHERE (tblInvAdjDoc.lngJourID = T.lngJourID) AND (tblInvAdjDoc.dteJournalDate = T.dteJournalDate)), T.strSource)
						   ELSE ISNULL((SELECT ISNULL(CONCAT('SC/',strAdjDocID), T.strSource) FROM tblInvAdjDoc WHERE (tblInvAdjDoc.lngJourID = T.lngJourID) AND (tblInvAdjDoc.dteJournalDate = T.dteJournalDate)), T.strSource)
					  END)
			  ELSE strSource
				END) AS strSource
			,strComment
			,lngJourID
			,decAmount 
	FROM @TmpTable AS T 

END
GO
/****** Object:  StoredProcedure [dbo].[SPRptCenterBusinessLogicOnLoaded_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptCenterBusinessLogicOnLoaded_1]
	
	@optCurrentYear_IsChecked AS BIT,
	@chkInactive_IsChecked AS BIT,
	@strSplit_Length AS INT,
	@txtLoc_Text AS NVARCHAR(MAX),
	@strSplit_0 AS NVARCHAR(MAX),
	@strSplit_1 AS NVARCHAR(MAX),
	@strSplit_2 AS NVARCHAR(MAX),
	@strSplit_3 AS NVARCHAR(MAX)

AS
BEGIN
	DECLARE @QueryCommand AS NVARCHAR(MAX)
	DECLARE @ParameterDefinition AS NVARCHAR(MAX) 	
	DECLARE @SQLevel1 AS NVARCHAR(200)
	DECLARE @SQLevel2 AS NVARCHAR(200)
	DECLARE @SQLevel3 AS NVARCHAR(200)
	DECLARE @SQLevel4 AS NVARCHAR(200)
		DECLARE @txtLoc_Length AS INT = LEN(@txtLoc_Text)		

		IF @txtLoc_Length = 0
		BEGIN
			
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl1 FROM tblCenters WHERE bitInactive = 0 ORDER BY strLvl1'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl1 FROM tblCenters ORDER BY strLvl1'
				END						
			END

			ELSE
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl1 FROM tblCentersLY WHERE bitInactive = 0 ORDER BY strLvl1'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl1 FROM tblCentersLY ORDER BY strLvl1'
				END
			END

		END

		ELSE IF @strSplit_Length = 1	
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl2 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 IS NOT NULL) AND (strLvl2 NOT IN (SELECT strLvl2 FROM tblCenters WHERE strLvl1 = @SQLevel1 AND bitInactive = 1)) ORDER BY strLvl2'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl2 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 IS NOT NULL) ORDER BY strLvl2'
				END						
			END

			ELSE
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl2 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 IS NOT NULL) AND (strLvl2 NOT IN (SELECT strLvl2 FROM tblCentersLY WHERE strLvl1 = @SQLevel1 AND bitInactive = 1)) ORDER BY strLvl2'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl2 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 IS NOT NULL) ORDER BY strLvl2'
				END	
			END

			SET @SQLevel1 = @txtLoc_Text

		END

		ELSE IF @strSplit_Length = 2	
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl3 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 IS NOT NULL) AND (strLvl3 NOT IN (SELECT strLvl3 FROM tblCenters WHERE strLvl1 = @SQLevel1 AND strLvl2 = @SQLevel2 AND bitInactive = 1)) ORDER BY strLvl3'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl3 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 IS NOT NULL) ORDER BY strLvl3'
				END						
			END

			ELSE
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl3 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 IS NOT NULL) AND (strLvl3 NOT IN (SELECT strLvl3 FROM tblCentersLY WHERE strLvl1 = @SQLevel1 AND strLvl2 = @SQLevel2 AND bitInactive = 1)) ORDER BY strLvl3'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl3 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 IS NOT NULL) ORDER BY strLvl3'
				END	
			END

			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
		END

		ELSE IF @strSplit_Length = 3	
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl4 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 IS NOT NULL) AND (strLvl4 NOT IN (SELECT strLvl4 FROM tblCenters WHERE strLvl1 = @SQLevel1 AND strLvl2 = @SQLevel2 AND strLvl3 = @SQLevel3 AND bitInactive = 1)) ORDER BY strLvl4'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl4 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 IS NOT NULL) ORDER BY strLvl4'
				END						
			END

			ELSE
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl4 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 IS NOT NULL) AND (strLvl4 NOT IN (SELECT strLvl4 FROM tblCentersLY WHERE strLvl1 = @SQLevel1 AND strLvl2 = @SQLevel2 AND strLvl3 = @SQLevel3 AND bitInactive = 1)) ORDER BY strLvl4'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl4 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 IS NOT NULL) ORDER BY strLvl4'
				END		
			END

			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strSplit_2
			
		END

		ELSE
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl5 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 = @SQLevel4) AND (strLvl5 IS NOT NULL) AND (strLvl5 NOT IN (SELECT strLvl5 FROM tblCenters WHERE strLvl1 = @SQLevel1 AND strLvl2 = @SQLevel2 AND strLvl3 = @SQLevel3 AND strLvl4 = @SQLevel4 AND bitInactive = 1)) ORDER BY strLvl5'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl5 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 = @SQLevel4) AND (strLvl5 IS NOT NULL) ORDER BY strLvl5'
				END						
			END

			ELSE
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl5 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 = @SQLevel4) AND (strLvl5 IS NOT NULL) AND (strLvl5 NOT IN (SELECT strLvl5 FROM tblCentersLY WHERE strLvl1 = @SQLevel1 AND strLvl2 = @SQLevel2 AND strLvl3 = @SQLevel3 AND strLvl4 = @SQLevel4 AND bitInactive = 1)) ORDER BY strLvl5'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl5 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 = @SQLevel4) AND (strLvl5 IS NOT NULL) ORDER BY strLvl5'
				END		
			END

			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strSplit_2
			SET @SQLevel4 = @strSplit_3

		END
			Set @ParameterDefinition =' @SQLevel1 NVARCHAR(MAX),
				@SQLevel2 NVARCHAR(MAX),
				@SQLevel3 NVARCHAR(MAX),
				@SQLevel4 NVARCHAR(MAX)'

		EXECUTE SP_EXECUTESQL @QueryCommand, @ParameterDefinition, @SQLevel1, @SQLevel2, @SQLevel3, @SQLevel4
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptCenterIncomeMultiSetLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptCenterIncomeMultiSetLoadQuery_1]
	@strLevels AS NVARCHAR(MAX),
	@optCurrentYear_IsChecked BIT,
	@chkIncLower_IsChecked BIT,
	@txtLoc_Length INT,	
	@strSplit_Length INT,
	@SQAsAt DATE,
	@strSplit_0 AS NVARCHAR(MAX),
	@strSplit_1 AS NVARCHAR(MAX),
	@strSplit_2 AS NVARCHAR(MAX),
	@strSplit_3 AS NVARCHAR(MAX)
AS
BEGIN
	CREATE TABLE #TmpTable
	(
		intGLNumber NVARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS,
		strDesc NVARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS,			
		intAccType INT,
		dteYear INT,
		dteMonth INT,
		sum_decAmount Money,
		strLevel NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
	)	
	
	DECLARE @strLevelTemp AS NVARCHAR(200)

	DECLARE db_cursor CURSOR FOR  
	SELECT Value FROM [fnSplitStringAsTable]((@strLevels),('~'))

	OPEN db_cursor   
	FETCH NEXT FROM db_cursor INTO @strLevelTemp
	WHILE @@FETCH_STATUS = 0   
	BEGIN 

		DECLARE @QueryCommand AS NVARCHAR(MAX)
		DECLARE @ParameterDefinition AS NVARCHAR(MAX) 
		
		DECLARE @SQLevel1 nvarchar(MAX)
		DECLARE @SQLevel2 nvarchar(MAX)
		DECLARE @SQLevel3 nvarchar(MAX)
		DECLARE @SQLevel4 nvarchar(MAX)
		DECLARE @SQLevel5 nvarchar(MAX)

		IF @optCurrentYear_IsChecked = 1
		BEGIN
			SET @QueryCommand = 'SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, DATEPART(yyyy, tblJournal.dteJournalDate) AS Year, DATEPART(m,tblJournal.dteJournalDate) AS Month, SUM(tblCenterEnt.decAmount) AS Expr1, @strLevelTemp FROM tblAccounts INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber INNER JOIN tblCenterEnt ON tblJournalEnt.lngJourID = tblCenterEnt.lngJourID AND tblJournalEnt.intLineNum = tblCenterEnt.intLineNum INNER JOIN tblCenters ON tblCenterEnt.uidCenterID = tblCenters.uidCenterID INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate <= @SQAsAt)'
		END
		ELSE
		BEGIN
			SET @QueryCommand = 'SELECT tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, tblAccountsLY.intAccType, DATEPART(yyyy, tblJournalLY.dteJournalDate) AS Year, DATEPART(m,tblJournalLY.dteJournalDate) AS Month, SUM(tblCenterEntLY.decAmount) AS Expr1, @strLevelTemp FROM tblAccountsLY INNER JOIN tblJournalEntLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber INNER JOIN tblCenterEntLY ON tblJournalEntLY.lngJourID = tblCenterEntLY.lngJourID AND tblJournalEntLY.intLineNum = tblCenterEntLY.intLineNum INNER JOIN tblCentersLY ON tblCenterEntLY.uidCenterID = tblCentersLY.uidCenterID INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate <= @SQAsAt)'
		END

		If @txtLoc_Length = 0 
		BEGIN          
            IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand += ' AND (tblCenters.strLvl1 = @SQLevel1)'                        
				If @chkIncLower_IsChecked= 0 
				BEGIN 
					SET @QueryCommand +=' AND (tblCenters.strLvl2 IS NULL)'
				END
                SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate) HAVING SUM(tblCenterEnt.decAmount) <> 0 ORDER BY tblAccounts.intGLNumber, DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate)'
            END
			ELSE
			BEGIN
               SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1)'
                If @chkIncLower_IsChecked= 0 
				 	BEGIN
						SET @QueryCommand +=' AND (tblCentersLY.strLvl2 IS NULL)'
					End
               SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, tblAccountsLY.intAccType, DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate) HAVING SUM(tblCenterEntLY.decAmount) <> 0 ORDER BY tblAccountsLY.intGLNumber, DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate)'
			END 

			SET @SQLevel1 = @strLevelTemp
		END       
		Else If @strSplit_Length = 1 
		BEGIN                
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2)'
				If @chkIncLower_IsChecked= 0 
				BEGIN
					 SET @QueryCommand +=' AND (tblCenters.strLvl3 IS NULL)'
				END
				SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate) HAVING SUM(tblCenterEnt.decAmount) <> 0 ORDER BY tblAccounts.intGLNumber, DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate)'
			END
			ELSE
			BEGIN
				SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2)'
				If @chkIncLower_IsChecked= 0 
				BEGIN
					SET @QueryCommand +=' AND (tblCentersLY.strLvl3 IS NULL)'
				END
				SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, tblAccountsLY.intAccType, DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate) HAVING SUM(tblCenterEntLY.decAmount) <> 0 ORDER BY tblAccountsLY.intGLNumber, DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate)'
			End

			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strLevelTemp
		End 
		Else If @strSplit_Length = 2 
		BEGIN                
				IF @optCurrentYear_IsChecked = 1
				BEGIN
							SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3)'
							If @chkIncLower_IsChecked= 0 
							BEGIN  
								SET @QueryCommand +='AND (tblCenters.strLvl4 IS NULL)'
							END
							SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate) HAVING SUM(tblCenterEnt.decAmount) <> 0 ORDER BY tblAccounts.intGLNumber, DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate)'
						 END
				ELSE
				BEGIN
							SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3)'
							If @chkIncLower_IsChecked= 0  
							BEGIN  
								SET @QueryCommand +='AND (tblCentersLY.strLvl4 IS NULL)'
							END
							SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, tblAccountsLY.intAccType, DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate) HAVING SUM(tblCenterEntLY.decAmount) <> 0 ORDER BY tblAccountsLY.intGLNumber, DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate)'
				End 

				SET @SQLevel1 = @strSplit_0
				SET @SQLevel2 = @strSplit_1
				SET @SQLevel3 = @strLevelTemp
			
		 End
		 Else If @strSplit_Length = 3 
		 BEGIN              
				IF @optCurrentYear_IsChecked = 1
				BEGIN
							SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4)'
							If @chkIncLower_IsChecked= 0 
							BEGIN  
								SET @QueryCommand +='AND (tblCenters.strLvl5 IS NULL)'
							END
							SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate) HAVING SUM(tblCenterEnt.decAmount) <> 0 ORDER BY tblAccounts.intGLNumber, DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate)'
				END
				ELSE
				BEGIN
							SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4)'
							If @chkIncLower_IsChecked= 0  
							BEGIN  
								SET @QueryCommand +='AND (tblCentersLY.strLvl5 IS NULL)'
							END
							SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, tblAccountsLY.intAccType, DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate) HAVING SUM(tblCenterEntLY.decAmount) <> 0 ORDER BY tblAccountsLY.intGLNumber, DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate)'
				End

				SET @SQLevel1 = @strSplit_0
				SET @SQLevel2 = @strSplit_1
				SET @SQLevel3 = @strSplit_2
				SET @SQLevel4 = @strLevelTemp
		End 
		Else
		BEGIN        
				IF @optCurrentYear_IsChecked = 1
				BEGIN
							SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4) AND (tblCenters.strLvl5 = @SQLevel5)'
							SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate) HAVING SUM(tblCenterEnt.decAmount) <> 0 ORDER BY tblAccounts.intGLNumber, DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate)'
				END
				ELSE
				BEGIN
							SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4) AND (tblCentersLY.strLvl5 = @SQLevel5)'
							SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, tblAccountsLY.intAccType, DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate) HAVING SUM(tblCenterEntLY.decAmount) <> 0 ORDER BY tblAccountsLY.intGLNumber, DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate)'
				End 

				SET @SQLevel1 = @strSplit_0
				SET @SQLevel2 = @strSplit_1
				SET @SQLevel3 = @strSplit_2
				SET @SQLevel4 = @strSplit_3
				SET @SQLevel5 = @strLevelTemp
		End 

		Set @ParameterDefinition =' @strLevelTemp NVARCHAR(200),
				@SQAsAt DATE,
				@SQLevel1 NVARCHAR(200),
				@SQLevel2 NVARCHAR(200),
				@SQLevel3 NVARCHAR(200),
				@SQLevel4 NVARCHAR(200),
				@SQLevel5 NVARCHAR(200)'

		INSERT INTO #TmpTable EXECUTE sp_executesql @QueryCommand, @ParameterDefinition, @strLevelTemp, @SQAsAt, @SQLevel1, @SQLevel2, @SQLevel3, @SQLevel4, @SQLevel5
				
		FETCH NEXT FROM db_cursor INTO @strLevelTemp
	END
	CLOSE db_cursor   
	DEALLOCATE db_cursor

	SELECT * FROM #TmpTable 
	DROP TABLE #TmpTable
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptCenterIncomeSetupLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptCenterIncomeSetupLoadQuery_1]
@strLevels AS NVARCHAR(MAX),
@optCurrentYear_IsChecked AS BIT,
@chkIncLower_IsChecked AS BIT,
@strSplit_Length AS INT,
@SQStartDate AS DATE,
@SQFinishDate AS DATE,
@txtLoc_Length AS INT,
@strSplit_0 AS NVARCHAR(MAX),
@strSplit_1 AS NVARCHAR(MAX),
@strSplit_2 AS NVARCHAR(MAX),
@strSplit_3 AS NVARCHAR(MAX)
AS
BEGIN 
	
	DECLARE @TmpTable TABLE
	(
		intGLNumber NVARCHAR(MAX),
		intAccType INT,
		strDesc NVARCHAR(MAX),
		sum_decAmount MONEY,
		strLevel NVARCHAR(MAX)
	)	

	DECLARE @strLevelTemp AS NVARCHAR(MAX)

	DECLARE db_cursor CURSOR FOR  
	SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@strLevels, '~')

	OPEN db_cursor   
	FETCH NEXT FROM db_cursor INTO @strLevelTemp
	WHILE @@FETCH_STATUS = 0   
	BEGIN 
	
		DECLARE @SQLevel1 AS NVARCHAR(MAX)
		DECLARE @SQLevel2 AS NVARCHAR(MAX)
		DECLARE @SQLevel3 AS NVARCHAR(MAX)
		DECLARE @SQLevel4 AS NVARCHAR(MAX)
		DECLARE @SQLevel5 AS NVARCHAR(MAX)

		DECLARE @QueryCommand AS NVARCHAR(MAX)		
		DECLARE @ParameterDefinition AS NVARCHAR(MAX) 	
			
		IF @optCurrentYear_IsChecked = 1
		BEGIN
			SET @QueryCommand = 'SELECT tblAccounts.intGLNumber, tblAccounts.intAccType, tblAccounts.strDesc, SUM(tblCenterEnt.decAmount) AS Expr1, @strLevelTemp FROM tblAccounts INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber INNER JOIN tblCenterEnt ON tblJournalEnt.lngJourID = tblCenterEnt.lngJourID AND tblJournalEnt.intLineNum = tblCenterEnt.intLineNum INNER JOIN tblCenters ON tblCenterEnt.uidCenterID = tblCenters.uidCenterID INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate >= @SQStartDate AND tblJournal.dteJournalDate <= @SQFinishDate)'
		END
		ELSE
		BEGIN
			SET @QueryCommand = 'SELECT tblAccountsLY.intGLNumber, tblAccountsLY.intAccType, tblAccountsLY.strDesc, SUM(tblCenterEntLY.decAmount) AS Expr1, @strLevelTemp FROM tblAccountsLY INNER JOIN tblJournalEntLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber INNER JOIN tblCenterEntLY ON tblJournalEntLY.lngJourID = tblCenterEntLY.lngJourID AND tblJournalEntLY.intLineNum = tblCenterEntLY.intLineNum INNER JOIN tblCentersLY ON tblCenterEntLY.uidCenterID = tblCentersLY.uidCenterID INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate >= @SQStartDate AND tblJournalLY.dteJournalDate <= @SQFinishDate)'
		END

		IF @txtLoc_Length = 0
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	SET @QueryCommand +=' AND (tblCenters.strLvl2 IS NULL)'	END

				SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.intAccType, tblAccounts.strDesc'
				SET @QueryCommand +=' ORDER BY tblAccounts.intGLNumber'
			END
			ELSE 
			BEGIN
				SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	SET @QueryCommand +=' AND (tblCentersLY.strLvl2 IS NULL)'	END

				SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.intAccType, tblAccountsLY.strDesc'
				SET @QueryCommand +=' ORDER BY tblAccountsLY.intGLNumber'		
			END	
			SET @SQLevel1 = @strLevelTemp		
		END
	
		ELSE IF @strSplit_Length = 1	
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	SET @QueryCommand +=' AND (tblCenters.strLvl3 IS NULL)'	END

				SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.intAccType, tblAccounts.strDesc'
				SET @QueryCommand +=' ORDER BY tblAccounts.intGLNumber'
			END
			ELSE 
			BEGIN
				SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	SET @QueryCommand +=' AND (tblCentersLY.strLvl3 IS NULL)'	END

				SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.intAccType, tblAccountsLY.strDesc'
				SET @QueryCommand +=' ORDER BY tblAccountsLY.intGLNumber'		
			END
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strLevelTemp
		END

		ELSE IF @strSplit_Length = 2
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	SET @QueryCommand +=' AND (tblCenters.strLvl4 IS NULL)'	END

				SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.intAccType, tblAccounts.strDesc'
				SET @QueryCommand +=' ORDER BY tblAccounts.intGLNumber'
			END
			ELSE 
			BEGIN
				SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	SET @QueryCommand +=' AND (tblCentersLY.strLvl4 IS NULL)'	END

				SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.intAccType, tblAccountsLY.strDesc'
				SET @QueryCommand +=' ORDER BY tblAccountsLY.intGLNumber'		
			END
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strLevelTemp
		END
		
		ELSE IF @strSplit_Length = 3
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	SET @QueryCommand +=' AND (tblCenters.strLvl5 IS NULL)'	END

				SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.intAccType, tblAccounts.strDesc'
				SET @QueryCommand +=' ORDER BY tblAccounts.intGLNumber'
			END
			ELSE 
			BEGIN
				SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	SET @QueryCommand +=' AND (tblCentersLY.strLvl5 IS NULL)'	END

				SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.intAccType, tblAccountsLY.strDesc'
				SET @QueryCommand +=' ORDER BY tblAccountsLY.intGLNumber'		
			END
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strSplit_2
			SET @SQLevel4 = @strLevelTemp
		END

		ELSE
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4) AND (tblCenters.strLvl5 = @SQLevel5)'
				SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.intAccType, tblAccounts.strDesc'
				SET @QueryCommand +=' ORDER BY tblAccounts.intGLNumber'
			END
			ELSE 
			BEGIN
				SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4) AND (tblCentersLY.strLvl5 = @SQLevel5)'
				SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.intAccType, tblAccountsLY.strDesc'
				SET @QueryCommand +=' ORDER BY tblAccountsLY.intGLNumber'		
			END
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strSplit_2
			SET @SQLevel4 = @strSplit_3
			SET @SQLevel5 = @strLevelTemp
		END
					
		Set @ParameterDefinition =' @strLevelTemp NVARCHAR(MAX),
                @SQStartDate DATE,
				@SQFinishDate DATE,
				@SQLevel1 NVARCHAR(MAX),
				@SQLevel2 NVARCHAR(MAX),
				@SQLevel3 NVARCHAR(MAX),
				@SQLevel4 NVARCHAR(MAX),
				@SQLevel5 NVARCHAR(MAX)'
								
		INSERT INTO @TmpTable EXECUTE sp_executesql @QueryCommand, @ParameterDefinition, @strLevelTemp, @SQStartDate, @SQFinishDate, @SQLevel1, @SQLevel2, @SQLevel3, @SQLevel4, @SQLevel5
								
		FETCH NEXT FROM db_cursor INTO @strLevelTemp
	END   

	CLOSE db_cursor   
	DEALLOCATE db_cursor

	SELECT * FROM @TmpTable 

END
GO
/****** Object:  StoredProcedure [dbo].[SPRptCenterIncomeSetupLoadQuery_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptCenterIncomeSetupLoadQuery_2]
@strLevels AS NVARCHAR(MAX),
@optCurrentYear_IsChecked AS BIT,
@chkIncLower_IsChecked AS BIT,
@strSplit_Length AS INT,
@SQStartDate AS DATE,
@SQFinishDate AS DATE,
@txtLoc_Length AS INT,
@strSplit_0 AS NVARCHAR(MAX),
@strSplit_1 AS NVARCHAR(MAX),
@strSplit_2 AS NVARCHAR(MAX),
@strSplit_3 AS NVARCHAR(MAX)

AS
BEGIN 
	
	DECLARE @TmpTable TABLE
	(
		strLevel NVARCHAR(MAX),
		intAccType INT,
		intGLNumber NVARCHAR(MAX),
		strDesc NVARCHAR(MAX),	
		dteJournalDate DATE,
		strSource NVARCHAR(MAX),
		strComment NVARCHAR(MAX),
		lngJourID BIGINT,			
		decAmount MONEY
	)	
	
	DECLARE @strLevelTemp AS NVARCHAR(MAX)

	DECLARE db_cursor CURSOR FOR  
	SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@strLevels, '~')

	OPEN db_cursor   
	FETCH NEXT FROM db_cursor INTO @strLevelTemp
	WHILE @@FETCH_STATUS = 0   
	BEGIN 

		DECLARE @SQLevel1 AS NVARCHAR(MAX)
		DECLARE @SQLevel2 AS NVARCHAR(MAX)
		DECLARE @SQLevel3 AS NVARCHAR(MAX)
		DECLARE @SQLevel4 AS NVARCHAR(MAX)
		DECLARE @SQLevel5 AS NVARCHAR(MAX)
		DECLARE @QueryCommand1 AS NVARCHAR(MAX)
		DECLARE @QueryCommand2 AS NVARCHAR(MAX)
		DECLARE @ParameterDefinition AS NVARCHAR(MAX) 

		IF @optCurrentYear_IsChecked = 1
		BEGIN
			SET @QueryCommand1 = 'SELECT @strLevelTemp, tblAccounts.intAccType, tblJournalEnt.intGLNumber, tblAccounts.strDesc, @SQStartDate, ''Balance Forward'', '' '', 0, ISNULL(SUM(tblCenterEnt.decAmount), 0) AS Expr1 FROM tblCenterEnt INNER JOIN tblJournalEnt ON tblCenterEnt.lngJourID = tblJournalEnt.lngJourID AND tblCenterEnt.intLineNum = tblJournalEnt.intLineNum INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID INNER JOIN tblCenters ON tblCenterEnt.uidCenterID = tblCenters.uidCenterID INNER JOIN tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber WHERE (tblJournal.dteJournalDate < @SQStartDate)'

			SET @QueryCommand2 = 'SELECT @strLevelTemp, tblAccounts.intAccType, tblAccounts.intGLNumber, tblAccounts.strDesc, tblJournal.dteJournalDate, tblJournal.strSource, tblJournal.strComment, tblJournal.lngJourID, tblCenterEnt.decAmount FROM tblAccounts INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber INNER JOIN tblCenterEnt ON tblJournalEnt.lngJourID = tblCenterEnt.lngJourID AND tblJournalEnt.intLineNum = tblCenterEnt.intLineNum INNER JOIN tblCenters ON tblCenterEnt.uidCenterID = tblCenters.uidCenterID INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate >= @SQStartDate AND tblJournal.dteJournalDate <= @SQFinishDate)'
		END
		ELSE
		BEGIN
			SET @QueryCommand1 = 'SELECT @strLevelTemp, tblAccountsLY.intAccType, tblJournalEntLY.intGLNumber, tblAccountsLY.strDesc, @SQStartDate, ''Balance Forward'', '' '', 0, ISNULL(SUM(tblCenterEntLY.decAmount), 0) AS Expr1 FROM tblCenterEntLY INNER JOIN tblJournalEntLY ON tblCenterEntLY.lngJourID = tblJournalEntLY.lngJourID AND tblCenterEntLY.intLineNum = tblJournalEntLY.intLineNum INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID INNER JOIN tblCentersLY ON tblCenterEntLY.uidCenterID = tblCentersLY.uidCenterID INNER JOIN tblAccountsLY ON tblJournalEntLY.intGLNumber = tblAccountsLY.intGLNumber WHERE (tblJournalLY.dteJournalDate < @SQStartDate)'

			SET @QueryCommand2 = 'SELECT @strLevelTemp, tblAccountsLY.intAccType, tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, tblJournalLY.dteJournalDate, tblJournalLY.strSource, tblJournalLY.strComment, tblJournalLY.lngJourID, tblCenterEntLY.decAmount FROM tblAccountsLY INNER JOIN tblJournalEntLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber INNER JOIN tblCenterEntLY ON tblJournalEntLY.lngJourID = tblCenterEntLY.lngJourID AND tblJournalEntLY.intLineNum = tblCenterEntLY.intLineNum INNER JOIN tblCentersLY ON tblCenterEntLY.uidCenterID = tblCentersLY.uidCenterID INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate >= @SQStartDate AND tblJournalLY.dteJournalDate <= @SQFinishDate)'
		END

		IF @txtLoc_Length = 0
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1)'
				SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	
						SET @QueryCommand1 +=' AND (tblCenters.strLvl2 IS NULL)'
						SET @QueryCommand2 +=' AND (tblCenters.strLvl2 IS NULL)'
					END

				SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber,tblAccounts.intAccType,tblAccounts.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccounts.intGLNumber, tblJournal.dteJournalDate, tblJournal.strSource'
			END
			ELSE 
			BEGIN
				SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1)'
				SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	
						SET @QueryCommand1 +=' AND (tblCentersLY.strLvl2 IS NULL)'
						SET @QueryCommand2 +=' AND (tblCentersLY.strLvl2 IS NULL)'
					END

				SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber,tblAccountsLY.intAccType,tblAccountsLY.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccountsLY.intGLNumber, tblJournalLY.dteJournalDate, tblJournalLY.strSource'
			END	
			SET @SQLevel1 = @strLevelTemp		
		END
	
		ELSE IF @strSplit_Length = 1	
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2)'
				SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	
						SET @QueryCommand1 +=' AND (tblCenters.strLvl3 IS NULL)'
						SET @QueryCommand2 +=' AND (tblCenters.strLvl3 IS NULL)'
				END

				SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber,tblAccounts.intAccType,tblAccounts.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccounts.intGLNumber, tblJournal.dteJournalDate, tblJournal.strSource'
			END
			ELSE 
			BEGIN
				SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2)'
				SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	
						SET @QueryCommand1 +=' AND (tblCentersLY.strLvl3 IS NULL)'
						SET @QueryCommand2 +=' AND (tblCentersLY.strLvl3 IS NULL)'
					END

				SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber,tblAccountsLY.intAccType,tblAccountsLY.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccountsLY.intGLNumber, tblJournalLY.dteJournalDate, tblJournalLY.strSource'
			END
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strLevelTemp
		END

		ELSE IF @strSplit_Length = 2
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3)'
				SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	
						SET @QueryCommand1 +=' AND (tblCenters.strLvl4 IS NULL)'
						SET @QueryCommand2 +=' AND (tblCenters.strLvl4 IS NULL)'
					END

				SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber,tblAccounts.intAccType,tblAccounts.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccounts.intGLNumber, tblJournal.dteJournalDate, tblJournal.strSource'
			END
			ELSE 
			BEGIN
				SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3)'
				SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	
						SET @QueryCommand1 +=' AND (tblCentersLY.strLvl4 IS NULL)'
						SET @QueryCommand2 +=' AND (tblCentersLY.strLvl4 IS NULL)'
					END

				SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber,tblAccountsLY.intAccType,tblAccountsLY.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccountsLY.intGLNumber, tblJournalLY.dteJournalDate, tblJournalLY.strSource'
			END
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strLevelTemp
		END
		
		ELSE IF @strSplit_Length = 3
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4)'
				SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	
						SET @QueryCommand1 +=' AND (tblCenters.strLvl5 IS NULL)'
						SET @QueryCommand2 +=' AND (tblCenters.strLvl5 IS NULL)'
					END

				SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber,tblAccounts.intAccType,tblAccounts.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccounts.intGLNumber, tblJournal.dteJournalDate, tblJournal.strSource'
			END
			ELSE 
			BEGIN
				SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4)'
				SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4)'
				IF @chkIncLower_IsChecked = 0
					BEGIN	
						SET @QueryCommand1 +=' AND (tblCentersLY.strLvl5 IS NULL)'
						SET @QueryCommand2 +=' AND (tblCentersLY.strLvl5 IS NULL)'
					END

				SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber,tblAccountsLY.intAccType,tblAccountsLY.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccountsLY.intGLNumber, tblJournalLY.dteJournalDate, tblJournalLY.strSource'
			END
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strSplit_2
			SET @SQLevel4 = @strLevelTemp
		END

		ELSE
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4) AND (tblCenters.strLvl5 = @SQLevel5)'
				SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4) AND (tblCenters.strLvl5 = @SQLevel5)'
				SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber,tblAccounts.intAccType,tblAccounts.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccounts.intGLNumber, tblJournal.dteJournalDate, tblJournal.strSource'
			END
			ELSE 
			BEGIN
				SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4) AND (tblCentersLY.strLvl5 = @SQLevel5)'
				SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4) AND (tblCentersLY.strLvl5 = @SQLevel5)'
				SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber,tblAccountsLY.intAccType,tblAccountsLY.strDesc'
				SET @QueryCommand2 +=' ORDER BY tblAccountsLY.intGLNumber, tblJournalLY.dteJournalDate, tblJournalLY.strSource'
			END
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strSplit_2
			SET @SQLevel4 = @strSplit_3
			SET @SQLevel5 = @strLevelTemp
		END
						
		Set @ParameterDefinition =' @strLevelTemp NVARCHAR(MAX),
                @SQStartDate DATE,
				@SQFinishDate DATE,
				@SQLevel1 NVARCHAR(MAX),
				@SQLevel2 NVARCHAR(MAX),
				@SQLevel3 NVARCHAR(MAX),
				@SQLevel4 NVARCHAR(MAX),
				@SQLevel5 NVARCHAR(MAX)'

		INSERT INTO @TmpTable EXECUTE sp_executesql @QueryCommand1, @ParameterDefinition, @strLevelTemp, @SQStartDate, @SQFinishDate, @SQLevel1, @SQLevel2, @SQLevel3, @SQLevel4, @SQLevel5
		INSERT INTO @TmpTable EXECUTE sp_executesql @QueryCommand2, @ParameterDefinition, @strLevelTemp, @SQStartDate, @SQFinishDate, @SQLevel1, @SQLevel2, @SQLevel3, @SQLevel4, @SQLevel5
				
		FETCH NEXT FROM db_cursor INTO @strLevelTemp
	END   

	CLOSE db_cursor   
	DEALLOCATE db_cursor
	
	SELECT * FROM @TmpTable 

END
GO
/****** Object:  StoredProcedure [dbo].[SPRptCenterMisAllocSetupLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptCenterMisAllocSetupLoadQuery_1]
	@SQStart AS DATETIME,
	@SQEnd AS DATETIME,
	@SQintGLNumberFromRev AS INT,
	@SQintGLNumberToRev AS INT,
	@SQintGLNumberFromExp AS INT,
	@SQintGLNumberToExp AS INT,
	@SQCurrentYear_IsChecked AS BIT,
	@SQPreviousYear_IsChecked AS BIT
AS
BEGIN
	DECLARE @SQintLength AS INT = 0

	SELECT @SQintLength = intSeg1Length from tblGLSegmentFormatSetup

	IF @SQCurrentYear_IsChecked = 1 
	BEGIN
		SELECT strInvDocID, lngJourID, dteJournalDate, strUserName, strCustName FROM tblInvoiceDoc WHERE (dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (lngJourID NOT IN (SELECT lngJourID FROM tblCenterEnt)) AND (lngJourID IN (SELECT DISTINCT tblJournal.lngJourID FROM tblJournal INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID WHERE (tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromRev AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToRev) OR (SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromExp AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToExp))) UNION ALL SELECT strInvPDocID, lngJourID, dteJournalDate, strUserName, strVendName FROM tblInvoiceDocP WHERE (dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (lngJourID NOT IN (SELECT lngJourID FROM tblCenterEnt)) AND (lngJourID IN (SELECT DISTINCT tblJournal.lngJourID FROM tblJournal INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID WHERE (tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromRev AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToRev) OR (SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromExp AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToExp))) UNION ALL SELECT strJEDocID, lngJourID, dteJournalDate, strUserName, strComment FROM tblJournalEntryDoc WHERE (dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (lngJourID NOT IN (SELECT lngJourID FROM tblCenterEnt)) AND (lngJourID IN (SELECT DISTINCT tblJournal.lngJourID FROM tblJournal INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID WHERE (tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromRev AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToRev) OR (SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromExp AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToExp)))  UNION ALL SELECT strJEDocID, lngJourID, dteJournalDate, strUserName, strComment FROM tblJournalEntryDocCB WHERE (dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (lngJourID NOT IN (SELECT lngJourID FROM tblCenterEnt)) AND (lngJourID IN (SELECT DISTINCT tblJournal.lngJourID FROM tblJournal INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID WHERE (tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromRev AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToRev) OR (SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromExp AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToExp))) UNION ALL SELECT strWIPDocID, lngJourID, dteJournalDate, strUserName, strJBDocID FROM tblManWIP WHERE (dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (lngJourID NOT IN (SELECT lngJourID FROM tblCenterEnt)) AND (lngJourID IN (SELECT DISTINCT tblJournal.lngJourID FROM tblJournal INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID WHERE (tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromRev AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToRev) OR (SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromExp AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToExp))) UNION ALL SELECT strAdjDocID, lngJourID, dteJournalDate, strUserName, strComment FROM tblInvAdjDoc WHERE (dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (lngJourID NOT IN (SELECT lngJourID FROM tblCenterEnt)) AND (lngJourID IN (SELECT DISTINCT tblJournal.lngJourID FROM tblJournal INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID WHERE (tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromRev AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToRev) OR (SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromExp AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToExp))) UNION ALL SELECT strInvIssReqDocID, lngJourID, dteJournalDate, strUserName, strComment FROM tblInvIssReqDoc WHERE (dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (lngJourID NOT IN (SELECT lngJourID FROM tblCenterEnt)) AND (lngJourID IN (SELECT DISTINCT tblJournal.lngJourID FROM tblJournal INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID WHERE (tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromRev AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToRev) OR (SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromExp AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToExp))) ORDER BY strInvDocID
	END
	ELSE IF @SQPreviousYear_IsChecked = 1 
	BEGIN
		SELECT strInvDocID, lngJourID, dteJournalDate, strUserName, strCustName FROM tblInvoiceDoc WHERE (dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (lngJourID NOT IN (SELECT lngJourID FROM tblCenterEntLY)) AND (lngJourID IN (SELECT DISTINCT tblJournalLY.lngJourID FROM tblJournalLY INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID WHERE (tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromRev AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToRev) OR (SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromExp AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToExp))) UNION ALL SELECT strInvPDocID, lngJourID, dteJournalDate, strUserName, strVendName FROM tblInvoiceDocP WHERE (dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (lngJourID NOT IN (SELECT lngJourID FROM tblCenterEntLY)) AND (lngJourID IN (SELECT DISTINCT tblJournalLY.lngJourID FROM tblJournalLY INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID WHERE (tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromRev AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToRev) OR (SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromExp AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToExp))) UNION ALL SELECT strJEDocID, lngJourID, dteJournalDate, strUserName, strComment FROM tblJournalEntryDoc WHERE (dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (lngJourID NOT IN (SELECT lngJourID FROM tblCenterEntLY)) AND (lngJourID IN (SELECT DISTINCT tblJournalLY.lngJourID FROM tblJournalLY INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID WHERE (tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromRev AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToRev) OR (SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromExp AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToExp)))  UNION ALL SELECT strJEDocID, lngJourID, dteJournalDate, strUserName, strComment FROM tblJournalEntryDocCB WHERE (dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (lngJourID NOT IN (SELECT lngJourID FROM tblCenterEntLY)) AND (lngJourID IN (SELECT DISTINCT tblJournalLY.lngJourID FROM tblJournalLY INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID WHERE (tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromRev AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToRev) OR (SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromExp AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToExp))) UNION ALL SELECT strWIPDocID, lngJourID, dteJournalDate, strUserName, strJBDocID FROM tblManWIP WHERE (dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (lngJourID NOT IN (SELECT lngJourID FROM tblCenterEntLY)) AND (lngJourID IN (SELECT DISTINCT tblJournalLY.lngJourID FROM tblJournalLY INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID WHERE (tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromRev AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToRev) OR (SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromExp AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToExp))) UNION ALL SELECT strAdjDocID, lngJourID, dteJournalDate, strUserName, strComment FROM tblInvAdjDoc WHERE (dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (lngJourID NOT IN (SELECT lngJourID FROM tblCenterEntLY)) AND (lngJourID IN (SELECT DISTINCT tblJournalLY.lngJourID FROM tblJournalLY INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID WHERE (tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromRev AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToRev) OR (SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromExp AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToExp))) UNION ALL SELECT strInvIssReqDocID, lngJourID, dteJournalDate, strUserName, strComment FROM tblInvIssReqDoc WHERE (dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (lngJourID NOT IN (SELECT lngJourID FROM tblCenterEntLY)) AND (lngJourID IN (SELECT DISTINCT tblJournalLY.lngJourID FROM tblJournalLY INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID WHERE (tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromRev AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToRev) OR (SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) >= @SQintGLNumberFromExp AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLength + 1) <= @SQintGLNumberToExp))) ORDER BY strInvDocID		
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptCentersCompareSetupLoadQuery]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptCentersCompareSetupLoadQuery]
@strLevels AS NVARCHAR(MAX),
@optCurrentYear_IsChecked AS BIT,
@strSplit_Length AS INT,
@SQStartDate AS DATE,
@SQFinishDate AS DATE,
@txtLoc_Length AS INT,
@strSplit_0 AS NVARCHAR(MAX),
@strSplit_1 AS NVARCHAR(MAX),
@strSplit_2 AS NVARCHAR(MAX),
@strSplit_3 AS NVARCHAR(MAX),
@intBudPeriodStart INT,
@intBudPeriodEnds INT
AS
BEGIN 
	
	DECLARE @TableResult TABLE
	(
		strLevel NVARCHAR(MAX),
		intAccType INT,
		intGLNumber NVARCHAR(MAX),		
		strDesc NVARCHAR(MAX),
		sum_decAmount DECIMAL(18,2),
		sum_decBudget MONEY
	)	
	
	DECLARE @TmpTable1 TABLE
	(
		decPeriod1R MONEY,
		decPeriod2R MONEY,
		decPeriod3R MONEY,
		decPeriod4R MONEY,
		decPeriod5R MONEY,
		decPeriod6R MONEY,
		decPeriod7R MONEY,
		decPeriod8R MONEY,
		decPeriod9R MONEY,
		decPeriod10R MONEY,
		decPeriod11R MONEY,
		decPeriod12R MONEY,
		decPeriod1E MONEY,
		decPeriod2E MONEY,
		decPeriod3E MONEY,
		decPeriod4E MONEY,
		decPeriod5E MONEY,
		decPeriod6E MONEY,
		decPeriod7E MONEY,
		decPeriod8E MONEY,
		decPeriod9E MONEY,
		decPeriod10E MONEY,
		decPeriod11E MONEY,
		decPeriod12E MONEY,
		bitBudgetR BIT,
		bitBudgetE BIT
	)
	
	DECLARE @TmpTable2 TABLE
	(
		strLevel NVARCHAR(MAX),
		intAccType INT,
		intGLNumber NVARCHAR(MAX),		
		strDesc NVARCHAR(MAX),
		sum_decAmount DECIMAL(18,2),
		sum_decBudget MONEY
	)

	DECLARE @strLevelTemp AS NVARCHAR(MAX)
	DECLARE @decBudgetRevenue AS MONEY
	DECLARE @decBudgetExpense AS MONEY
	DECLARE db_cursor CURSOR FOR  
	SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@strLevels, '~')
	
	OPEN db_cursor   
	FETCH NEXT FROM db_cursor INTO @strLevelTemp
	WHILE @@FETCH_STATUS = 0   
	BEGIN 
		
		DELETE FROM @TmpTable1
		DELETE FROM @TmpTable2

		DECLARE @SQLevel1 AS NVARCHAR(MAX) = NULL
		DECLARE @SQLevel2 AS NVARCHAR(MAX) = NULL
		DECLARE @SQLevel3 AS NVARCHAR(MAX) = NULL
		DECLARE @SQLevel4 AS NVARCHAR(MAX) = NULL
		DECLARE @SQLevel5 AS NVARCHAR(MAX) = NULL
		
		DECLARE @QueryCommand1 AS NVARCHAR(MAX)	
		DECLARE @QueryCommand2 AS NVARCHAR(MAX)		
		DECLARE @ParameterDefinition AS NVARCHAR(MAX) 	

		SET @decBudgetRevenue = 0	
		SET @decBudgetExpense = 0
		
		IF @optCurrentYear_IsChecked = 1
		BEGIN
			SET @QueryCommand1 = 'SELECT decPeriod1R, decPeriod2R, decPeriod3R, decPeriod4R, decPeriod5R, decPeriod6R, decPeriod7R, decPeriod8R, decPeriod9R, decPeriod10R, decPeriod11R, decPeriod12R, decPeriod1E, decPeriod2E, decPeriod3E, decPeriod4E, decPeriod5E, decPeriod6E, decPeriod7E, decPeriod8E, decPeriod9E, decPeriod10E, decPeriod11E, decPeriod12E, bitBudgetR, bitBudgetE FROM tblCenters'
			
			SET @QueryCommand2 = 'SELECT @strLevelTemp, tblAccounts.intAccType, tblAccounts.intGLNumber, tblAccounts.strDesc, SUM(tblCenterEnt.decAmount) AS Expr1, 0 FROM tblAccounts INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber INNER JOIN tblCenterEnt ON tblJournalEnt.lngJourID = tblCenterEnt.lngJourID AND tblJournalEnt.intLineNum = tblCenterEnt.intLineNum INNER JOIN tblCenters ON tblCenterEnt.uidCenterID = tblCenters.uidCenterID INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate >= @SQStartDate AND tblJournal.dteJournalDate <= @SQFinishDate)'
		END
		ELSE
		BEGIN
			SET @QueryCommand1 = 'SELECT decPeriod1R, decPeriod2R, decPeriod3R, decPeriod4R, decPeriod5R, decPeriod6R, decPeriod7R, decPeriod8R, decPeriod9R, decPeriod10R, decPeriod11R, decPeriod12R, decPeriod1E, decPeriod2E, decPeriod3E, decPeriod4E, decPeriod5E, decPeriod6E, decPeriod7E, decPeriod8E, decPeriod9E, decPeriod10E, decPeriod11E, decPeriod12E, bitBudgetR, bitBudgetE FROM tblCentersLY'
			SET @QueryCommand2 = 'SELECT @strLevelTemp, tblAccountsLY.intAccType, tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, SUM(tblCenterEntLY.decAmount) AS Expr1, 0 FROM tblAccountsLY INNER JOIN tblJournalEntLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber INNER JOIN tblCenterEntLY ON tblJournalEntLY.lngJourID = tblCenterEntLY.lngJourID AND tblJournalEntLY.intLineNum = tblCenterEntLY.intLineNum INNER JOIN tblCentersLY ON tblCenterEntLY.uidCenterID = tblCentersLY.uidCenterID INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate >= @SQStartDate AND tblJournalLY.dteJournalDate <= @SQFinishDate)'
		END

		IF @txtLoc_Length = 0
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1)'
				SET @QueryCommand2 +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.intAccType, tblAccounts.strDesc'				
			END
			ELSE 
			BEGIN
				SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1)'
				SET @QueryCommand2 +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.intAccType, tblAccountsLY.strDesc'
			END
			SET @QueryCommand1 +=' WHERE (strLvl1 = @SQLevel1) AND (strLvl2 IS NULL) AND (strLvl3 IS NULL) AND (strLvl4 IS NULL) AND (strLvl5 IS NULL)'	
			SET @SQLevel1 = @strLevelTemp		
		END
	
		ELSE IF @strSplit_Length = 1	
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2)'
				SET @QueryCommand2 +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.intAccType, tblAccounts.strDesc'				
			END
			ELSE 
			BEGIN
				SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2)'
				SET @QueryCommand2 +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.intAccType, tblAccountsLY.strDesc'
			END
			SET @QueryCommand1 +=' WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 IS NULL) AND (strLvl4 IS NULL) AND (strLvl5 IS NULL)'
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strLevelTemp
		END

		ELSE IF @strSplit_Length = 2
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3)'
				SET @QueryCommand2 +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.intAccType, tblAccounts.strDesc'
			END
			ELSE 
			BEGIN
				SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3)'
				SET @QueryCommand2 +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.intAccType, tblAccountsLY.strDesc'
			END
			SET @QueryCommand1 +=' WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 IS NULL) AND (strLvl5 IS NULL)'
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strLevelTemp
		END
		
		ELSE IF @strSplit_Length = 3
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4)'
				SET @QueryCommand2 +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.intAccType, tblAccounts.strDesc'
			END
			ELSE 
			BEGIN
				SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4)'
				SET @QueryCommand2 +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.intAccType, tblAccountsLY.strDesc'			
			END
			SET @QueryCommand1 +=' WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 = @SQLevel4) AND (strLvl5 IS NULL)'
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strSplit_2
			SET @SQLevel4 = @strLevelTemp
		END

		ELSE
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4) AND (tblCenters.strLvl5 = @SQLevel5)'
				SET @QueryCommand2 +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.intAccType, tblAccounts.strDesc'
			END
			ELSE 
			BEGIN
				SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4) AND (tblCentersLY.strLvl5 = @SQLevel5)'
				SET @QueryCommand2 +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.intAccType, tblAccountsLY.strDesc'
			END
			SET @QueryCommand1 +=' WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 = @SQLevel4) AND (strLvl5 = @SQLevel5)'
			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strSplit_2
			SET @SQLevel4 = @strSplit_3
			SET @SQLevel5 = @strLevelTemp
		END

		Set @ParameterDefinition ='
				@SQLevel1 NVARCHAR(MAX),
				@SQLevel2 NVARCHAR(MAX),
				@SQLevel3 NVARCHAR(MAX),
				@SQLevel4 NVARCHAR(MAX),
				@SQLevel5 NVARCHAR(MAX)'

		INSERT INTO @TmpTable1 EXECUTE sp_executesql @QueryCommand1, @ParameterDefinition, @SQLevel1, @SQLevel2, @SQLevel3, @SQLevel4, @SQLevel5
		--INNER CURSOR STARTS
			
			DECLARE InnerCursor CURSOR
			FOR SELECT * FROM @TmpTable1
									
			DECLARE @col_0 AS MONEY, @col_1 AS MONEY, @col_2 AS MONEY, @col_3 AS MONEY, @col_4 AS MONEY, @col_5 AS MONEY, @col_6 AS MONEY, @col_7 AS MONEY, @col_8 AS MONEY, @col_9 AS MONEY, @col_10 AS MONEY, @col_11 AS MONEY, @col_12 AS MONEY, @col_13 AS MONEY, @col_14 AS MONEY, @col_15 AS MONEY, @col_16 AS MONEY, @col_17 AS MONEY, @col_18 AS MONEY, @col_19 AS MONEY, @col_20 AS MONEY, @col_21 AS MONEY, @col_22 AS MONEY, @col_23 AS MONEY, @col_24 AS BIT, @col_25 AS BIT
			DECLARE @ColCount INT
		
			OPEN InnerCursor          
			
			FETCH NEXT FROM InnerCursor
			INTO @col_0, @col_1, @col_2, @col_3, @col_4, @col_5, @col_6, @col_7, @col_8, @col_9, @col_10, @col_11, @col_12, @col_13, @col_14, @col_15, @col_16, @col_17, @col_18, @col_19, @col_20, @col_21, @col_22, @col_23, @col_24, @col_25
			
			WHILE @@FETCH_STATUS = 0
			BEGIN
   				
				If @col_24 = 1 
				BEGIN	
					SET @ColCount = @intBudPeriodStart - 1	
					WHILE @ColCount <= (@intBudPeriodEnds - 1)
					BEGIN
						SET @decBudgetRevenue += CASE @ColCount WHEN 0 THEN @col_0 WHEN 1 THEN @col_1 WHEN 2 THEN @col_2 WHEN 3 THEN @col_3 WHEN 4 THEN @col_4 WHEN 5 THEN @col_5 WHEN 6 THEN @col_6 WHEN 7 THEN @col_7 WHEN 8 THEN @col_8 WHEN 9 THEN @col_9 WHEN 10 THEN @col_10 WHEN 11 THEN @col_11 WHEN 12 THEN @col_12 WHEN 13 THEN @col_13 WHEN 14 THEN @col_14 WHEN 15 THEN @col_15 WHEN 16 THEN @col_16 WHEN 17 THEN @col_17 WHEN 18 THEN @col_18 WHEN 19 THEN @col_19 WHEN 20 THEN @col_20 WHEN 21 THEN @col_21 WHEN 22 THEN @col_22 WHEN 23 THEN @col_23 ELSE 0 END 
			
						SET @ColCount = @ColCount + 1
					END		
				END
				If @col_25 = 1 
				BEGIN		
					SET @ColCount = @intBudPeriodStart + 11	
					WHILE @ColCount <= (@intBudPeriodEnds + 11)
					BEGIN
						SET @decBudgetExpense += CASE @ColCount WHEN 0 THEN @col_0 WHEN 1 THEN @col_1 WHEN 2 THEN @col_2 WHEN 3 THEN @col_3 WHEN 4 THEN @col_4 WHEN 5 THEN @col_5 WHEN 6 THEN @col_6 WHEN 7 THEN @col_7 WHEN 8 THEN @col_8 WHEN 9 THEN @col_9 WHEN 10 THEN @col_10 WHEN 11 THEN @col_11 WHEN 12 THEN @col_12 WHEN 13 THEN @col_13 WHEN 14 THEN @col_14 WHEN 15 THEN @col_15 WHEN 16 THEN @col_16 WHEN 17 THEN @col_17 WHEN 18 THEN @col_18 WHEN 19 THEN @col_19 WHEN 20 THEN @col_20 WHEN 21 THEN @col_21 WHEN 22 THEN @col_22 WHEN 23 THEN @col_23 ELSE 0 END 
			
						SET @ColCount = @ColCount + 1
					END		
				END

			FETCH NEXT FROM InnerCursor
			INTO @col_0, @col_1, @col_2, @col_3, @col_4, @col_5, @col_6, @col_7, @col_8, @col_9, @col_10, @col_11, @col_12, @col_13, @col_14, @col_15, @col_16, @col_17, @col_18, @col_19, @col_20, @col_21, @col_22, @col_23, @col_24, @col_25

			END
			CLOSE InnerCursor						
			DEALLOCATE InnerCursor
		--INNER CURSOR ENDS
		Set @ParameterDefinition =' @strLevelTemp NVARCHAR(MAX),
				@decBudgetRevenue MONEY,
				@decBudgetExpense MONEY,
                @SQStartDate DATE,
				@SQFinishDate DATE,
				@SQLevel1 NVARCHAR(MAX),
				@SQLevel2 NVARCHAR(MAX),
				@SQLevel3 NVARCHAR(MAX),
				@SQLevel4 NVARCHAR(MAX),
				@SQLevel5 NVARCHAR(MAX)'
			
		INSERT INTO @TmpTable2 EXECUTE sp_executesql @QueryCommand2, @ParameterDefinition, @strLevelTemp, @decBudgetRevenue, @decBudgetExpense, @SQStartDate, @SQFinishDate, @SQLevel1, @SQLevel2, @SQLevel3, @SQLevel4, @SQLevel5
				
		DECLARE @blnFoundRevenue AS BIT = 0
		DECLARE @blnFoundExpense AS BIT = 0

		;WITH UpdateRevenue_view AS (SELECT TOP 1 sum_decBudget FROM @TmpTable2 WHERE intAccType = 4)
		UPDATE UpdateRevenue_view SET sum_decBudget = @decBudgetRevenue	

		IF (@@ROWCOUNT = 0 AND @decBudgetRevenue <> 0) 
		BEGIN 
			INSERT INTO @TmpTable2 Values(@strLevelTemp, 4, 0, 'Budget Amount', 0, @decBudgetRevenue)
		END

		;WITH UpdateExpense_view AS (SELECT TOP 1 sum_decBudget FROM @TmpTable2 WHERE intAccType = 5)
		UPDATE UpdateExpense_view SET sum_decBudget = @decBudgetExpense
		
		IF (@@ROWCOUNT = 0 AND @decBudgetExpense <> 0) 
		BEGIN 
			INSERT INTO @TmpTable2 Values(@strLevelTemp, 5, 0, 'Budget Amount', 0, @decBudgetExpense)
		END	
				
		INSERT INTO @TableResult SELECT * FROM @TmpTable2

		FETCH NEXT FROM db_cursor INTO @strLevelTemp
	END   

	CLOSE db_cursor   
	DEALLOCATE db_cursor

	SELECT * FROM @TableResult 

END
GO
/****** Object:  StoredProcedure [dbo].[SPRptContractIncomeSetupLoadQuery_1_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	Create PROCEDURE [dbo].[SPRptContractIncomeSetupLoadQuery_1_1]
	(	@CostOfGoodsSold INT = NULL,
		@InterestExpense INT = NULL,
		@IncomeTaxExpense INT = NULL,
		@Revenue INT = NULL,
		@Expense INT = NULL,
		@OperatingRevenue INT = NULL,
		@intOINum nvarchar(200) = NULL
	)
	AS
	BEGIN
		SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass, 
		CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 WHEN intAccClass = @InterestExpense THEN 4 
		WHEN intAccClass = @IncomeTaxExpense THEN 5 
		WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0 
		WHEN intAccType = @Revenue THEN @intOINum
		WHEN intAccType = @Expense THEN 3 
		ELSE NULL END as GroupSeq FROM tblAccounts WHERE (intAccType >= 4) ORDER BY GroupSeq, intAccType, intAccClass, intGLNumber
	END
GO
/****** Object:  StoredProcedure [dbo].[SPRptContractIncomeSetupLoadQuery_1_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[SPRptContractIncomeSetupLoadQuery_1_2]
	(	@CostOfGoodsSold INT = NULL,
		@InterestExpense INT = NULL,
		@IncomeTaxExpense INT = NULL,
		@Revenue INT = NULL,
		@Expense INT = NULL,
		@OperatingRevenue INT = NULL,
		@intOINum nvarchar(200) = NULL
	)
	AS
	BEGIN
		SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass, 
		CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 WHEN intAccClass = @InterestExpense THEN 4 
		WHEN intAccClass = @IncomeTaxExpense THEN 5 
		WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0 
		WHEN intAccType = @Revenue THEN @intOINum
		WHEN intAccType = @Expense THEN 3 
		ELSE NULL END as GroupSeq 
		FROM tblAccountsLY WHERE (intAccType >= 4) ORDER BY GroupSeq, intAccType, intAccClass, intGLNumber
	END
GO
/****** Object:  StoredProcedure [dbo].[SPRptDocTransLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptDocTransLoadQuery_1]
@optEntDate_IsChecked AS BIT,
@SQStart AS DATE,
@SQEnd AS DATE

AS
BEGIN
	IF @optEntDate_IsChecked = 1 
	BEGIN
		SELECT 'Invoices',strInvDocID,dteSystemDate,dteJournalDate,strUserName,ISNULL(lngJourID,0),strCustName + ' - ' + (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblInvoiceDoc.strCustName),decTotal FROM tblInvoiceDoc WHERE bitHistoryTrans = 0  AND dteSystemDate >= @SQStart AND dteSystemDate <= @SQEnd ORDER BY dteSystemDate
	END
	ELSE 
	BEGIN
		SELECT 'Invoices',strInvDocID,dteSystemDate,dteJournalDate,strUserName,ISNULL(lngJourID,0),strCustName + ' - ' + (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblInvoiceDoc.strCustName),decTotal FROM tblInvoiceDoc WHERE bitHistoryTrans = 0  AND dteJournalDate >= @SQStart AND dteJournalDate <= @SQEnd ORDER BY dteJournalDate
	END

	IF @optEntDate_IsChecked = 1 
	BEGIN
		SELECT 'Receipts',strSource,dteSystemDate,dteJournalDate,strUserName,ISNULL(lngJourID,0),strCustName + ' - ' + (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblCustPay.strCustName),decAmount FROM tblCustPay WHERE bitReversed = 0 AND bitReversal = 0  AND dteSystemDate >= @SQStart AND dteSystemDate <= @SQEnd ORDER BY dteSystemDate
	END
	ELSE
	BEGIN
		SELECT 'Receipts',strSource,dteSystemDate,dteJournalDate,strUserName,ISNULL(lngJourID,0),strCustName + ' - ' + (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblCustPay.strCustName),decAmount FROM tblCustPay WHERE bitReversed = 0 AND bitReversal = 0  AND dteJournalDate >= @SQStart AND dteJournalDate <= @SQEnd ORDER BY dteJournalDate
	END

	IF @optEntDate_IsChecked = 1 
	BEGIN
		SELECT 'Purchases',strInvPDocID,dteSystemDate,dteJournalDate,strUserName,ISNULL(lngJourID,0),strVendName + ' - ' + (SELECT strVendDesc FROM tblVendors WHERE strVendName = tblInvoiceDocP.strVendName),decTotal FROM tblInvoiceDocP WHERE bitHistoryTrans = 0  AND dteSystemDate >= @SQStart AND dteSystemDate <= @SQEnd ORDER BY dteSystemDate
	END
	ELSE
	BEGIN
		SELECT 'Purchases',strInvPDocID,dteSystemDate,dteJournalDate,strUserName,ISNULL(lngJourID,0),strVendName + ' - ' + (SELECT strVendDesc FROM tblVendors WHERE strVendName = tblInvoiceDocP.strVendName),decTotal FROM tblInvoiceDocP WHERE bitHistoryTrans = 0 AND dteJournalDate >= @SQStart AND dteJournalDate <= @SQEnd ORDER BY dteJournalDate
	END

	IF @optEntDate_IsChecked = 1 
	BEGIN
		SELECT 'Payments',strSource,dteSystemDate,dteJournalDate,strUserName,ISNULL(lngJourID,0),strVendName + ' - ' + (SELECT strVendDesc FROM tblVendors WHERE strVendName = tblVendPay.strVendName),decAmount FROM tblVendPay WHERE bitReversed = 0 AND bitReversal = 0 AND dteSystemDate >= @SQStart AND dteSystemDate <= @SQEnd ORDER BY dteSystemDate
	END
	ELSE
	BEGIN
		SELECT 'Payments',strSource,dteSystemDate,dteJournalDate,strUserName,ISNULL(lngJourID,0),strVendName + ' - ' + (SELECT strVendDesc FROM tblVendors WHERE strVendName = tblVendPay.strVendName),decAmount FROM tblVendPay WHERE bitReversed = 0 AND bitReversal = 0 AND dteJournalDate >= @SQStart AND dteJournalDate <= @SQEnd ORDER BY dteJournalDate
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptFetchNamingConvention]    Script Date: 26/06/2020 08:45:58 ******/

CREATE PROCEDURE [dbo].[SPRptFetchNamingConvention] 
AS
BEGIN
select strRptProfitAfterTaxLabel, strRptProfitBeforeTaxLabel, strRptGrossProfitLabel, strRptOperatingProfitLabel from tblCoOptsN
END
GO

/****** Object:  StoredProcedure [dbo].[SPRptFilterOptYearBusinessLogic_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptFilterOptYearBusinessLogic_1] 
(	@SQStartDate date = NULL,
	@SQFinishDate date = NULL
	)
AS
BEGIN
	SELECT tblJournalEnt.intGLNumber, SUM(tblJournalEnt.decAmount) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate BETWEEN @SQStartDate AND @SQFinishDate) GROUP BY tblJournalEnt.intGLNumber
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptFilterOptYearBusinessLogic_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SPRptFilterOptYearBusinessLogic_2] 
(
	@SQStartDate date = NULL,
	@SQFinishDate date = NULL
)
AS
BEGIN
	SELECT tblJournalEntLY.intGLNumber, SUM(tblJournalEntLY.decAmount) As decAmount FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate BETWEEN @SQStartDate AND @SQFinishDate) GROUP BY tblJournalEntLY.intGLNumber
END
GO

/****** Object:  StoredProcedure [dbo].[SPRptFilterOptYearBusinessLogicContract_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	Create PROCEDURE [dbo].[SPRptFilterOptYearBusinessLogicContract_1] 
	(	@SQStartDate date = NULL,
		@SQFinishDate date = NULL
	)
	AS
	BEGIN
		SELECT tblJournalEnt.intGLNumber, SUM(tblJournalEnt.decAmount) 
		FROM tblJournalEnt 
		INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
		WHERE (tblJournal.dteJournalDate BETWEEN @SQStartDate AND @SQFinishDate) 
		GROUP BY tblJournalEnt.intGLNumber
	END
GO
/****** Object:  StoredProcedure [dbo].[SPRptFilterOptYearBusinessLogicContract_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[SPRptFilterOptYearBusinessLogicContract_2] 
	(
		@SQStartDate date = NULL,
		@SQFinishDate date = NULL
	)
	AS
	BEGIN
		SELECT tblJournalEntLY.intGLNumber, SUM(tblJournalEntLY.decAmount) 
		FROM tblJournalEntLY 
		INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
		WHERE (tblJournalLY.dteJournalDate BETWEEN @SQStartDate AND @SQFinishDate) 
		GROUP BY tblJournalEntLY.intGLNumber
	END
GO
/****** Object:  StoredProcedure [dbo].[SPRptFilterSubAccountsBusinessLogic_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptFilterSubAccountsBusinessLogic_1] 
(
@SQGLNumber nvarchar(MAX) = NULL
)
	
AS
BEGIN
	
	SELECT * FROM tblAcctBudgets WHERE intGLNumber in 
	( SELECT Value FROM [fnSplitStringAsTable]((@SQGLNumber),(',')))
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptFilterSubAccountsBusinessLogic_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptFilterSubAccountsBusinessLogic_2] 
(	@SQGLNumber nvarchar(MAX) = NULL
)
	
AS
BEGIN
	SELECT * FROM tblAcctBudgetsLY WHERE intGLNumber in 
	( SELECT Value FROM [fnSplitStringAsTable]((@SQGLNumber),(',')))
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptFilterSubAccountsBusinessLogic_3]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptFilterSubAccountsBusinessLogic_3] 
(@SQAcct nvarchar(MAX) = NULL
)
AS
BEGIN
	SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, tblAcctBudgets.decPeriod1, tblAcctBudgets.decPeriod2, tblAcctBudgets.decPeriod3, 
	tblAcctBudgets.decPeriod4, tblAcctBudgets.decPeriod5, tblAcctBudgets.decPeriod6, tblAcctBudgets.decPeriod7, tblAcctBudgets.decPeriod8, tblAcctBudgets.decPeriod9, 
	tblAcctBudgets.decPeriod10, tblAcctBudgets.decPeriod11, tblAcctBudgets.decPeriod12 
	FROM tblAccounts INNER JOIN tblAcctBudgets ON tblAccounts.intGLNumber = tblAcctBudgets.intGLNumber WHERE (tblAccounts.intGLNumber in
	( SELECT Value FROM [fnSplitStringAsTable]((@SQAcct),(','))))
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptFilterSubAccountsBusinessLogic_4]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptFilterSubAccountsBusinessLogic_4] 
(@SQAcct nvarchar(MAX) = NULL
)
AS
BEGIN
	SELECT tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, tblAccountsLY.intAccType, tblAcctBudgetsLY.decPeriod1, 
	tblAcctBudgetsLY.decPeriod2, tblAcctBudgetsLY.decPeriod3, tblAcctBudgetsLY.decPeriod4, tblAcctBudgetsLY.decPeriod5, 
	tblAcctBudgetsLY.decPeriod6, tblAcctBudgetsLY.decPeriod7, tblAcctBudgetsLY.decPeriod8, tblAcctBudgetsLY.decPeriod9, 
	tblAcctBudgetsLY.decPeriod10, tblAcctBudgetsLY.decPeriod11, tblAcctBudgetsLY.decPeriod12 
	FROM tblAccountsLY INNER JOIN tblAcctBudgetsLY ON tblAccountsLY.intGLNumber = tblAcctBudgetsLY.intGLNumber WHERE (tblAccountsLY.intGLNumber in
	( SELECT Value FROM [fnSplitStringAsTable]((@SQAcct),(','))))
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptFilterSubAccountsBusinessLogicContracts_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

	CREATE PROCEDURE [dbo].[SPRptFilterSubAccountsBusinessLogicContracts_1]   
	 (  
	  @SQGLNumber nvarchar(MAX) = NULL,  
	  @SQStartDate datetime,  
	  @SQFinishDate datetime  
	 )  
	 AS  
	 BEGIN  
   
	  SET @SQStartDate = DATEADD(month, DATEDIFF(month, 0, @SQStartDate), 0)  
	  SET @SQFinishDate = DATEADD(month,1 + DATEDIFF(month, 0, @SQFinishDate), -1)  
  
	  SELECT C.intGLNumber,  
		CDT.decAmount  
	  FROM tblContractsDT AS CDT   
	  INNER JOIN tblContracts AS C ON CDT.lngContractId = C.lngId   
	  WHERE  C.intGLNumber IN ( SELECT Value FROM [fnSplitStringAsTable]((@SQGLNumber),(',')))   
	  AND ((CDT.dteFromDate BETWEEN @SQStartDate AND @SQFinishDate) OR (CDT.dteToDate BETWEEN @SQStartDate AND @SQFinishDate))
  
	 END  
GO
/****** Object:  StoredProcedure [dbo].[SPRptFPBalSheetLoadQuery_1_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptFPBalSheetLoadQuery_1_1]
	@strGLNumber AS NVARCHAR(Max)
AS
BEGIN
	SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass FROM tblAccounts 
	WHERE (intAccType < 4)
	ORDER BY intAccType, intAccClass, intGLNumber	
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptFPBalSheetLoadQuery_1_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptFPBalSheetLoadQuery_1_2] 
	@SQAsAtDate as date,
	@SQintoAccountLegendExp_GLNumberFrom as integer,
	@SQintoAccountLegendRev_GLNumberTo  as integer,
	@SQintoAccountLegendRev_GLNumberFrom  as integer,
	@SQintoAccountLegendExp_GLNumberTo  as integer,
	@optCurrentYear_IsChecked AS BIT,
	@optPreviousYear_IsChecked AS BIT
AS
BEGIN
Declare @SQintLengthRevGL As Integer
Declare @SQintLengthExpGL As Integer
Declare @decRevenue as DECIMAL(18,4)
declare @decExpense as DECIMAL(18,4)
declare @decOpenRevenue as DECIMAL(18,4)
declare @decOpenExpense as DECIMAL(18,4)
declare @intCurrEarnAcct as nvarchar(200)

	
		IF @optCurrentYear_IsChecked = 1 
		BEGIN
		SELECT @intCurrEarnAcct = intGLNumber FROM tblAccounts WHERE bitLinkCEarnings = 1  --- cmdEarn

		SELECT @SQintLengthRevGL = intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength

		SELECT  @decRevenue = ISNULL(SUM(tblJournalEnt.decAmount),0) 
		FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
		WHERE (tblJournal.dteJournalDate <= @SQAsAtDate) AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo --- cmdRev

		SELECT  @decExpense = ISNULL(SUM(tblJournalEnt.decAmount),0) 
		FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
		WHERE (tblJournal.dteJournalDate <= @SQAsAtDate) AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo --- cmdExp

		SELECT  @decOpenRevenue = ISNULL(SUM(decOpenBalance),0) FROM tblAccounts WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo    --cmdRevOpen

		SELECT @decOpenExpense = ISNULL(SUM(decOpenBalance),0) FROM tblAccounts WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo   ---cmdExpOpen

		select @intCurrEarnAcct, @decRevenue,@decExpense,@decOpenRevenue,@decOpenExpense

	END
	ELSE IF @optPreviousYear_IsChecked = 1 
	BEGIN
		SELECT @intCurrEarnAcct = intGLNumber FROM tblAccountsLY WHERE bitLinkCEarnings = 1  --- cmdEarn

		SELECT @SQintLengthRevGL = intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength
		
		SELECT  @decRevenue = ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
		WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo --- cmdRev


		SELECT @decExpense = ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
		WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  --- cmdExp


		SELECT @decOpenRevenue = ISNULL(SUM(decOpenBalance),0) FROM tblAccountsLY 
		WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo   --cmdRevOpen


		SELECT @decOpenExpense = ISNULL(SUM(decOpenBalance),0) FROM tblAccountsLY 
		WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  ---cmdExpOpen
		select @intCurrEarnAcct, @decRevenue,@decExpense,@decOpenRevenue,@decOpenExpense
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptFPBalSheetLoadQuery_1_3]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptFPBalSheetLoadQuery_1_3]
 @SQAsAtDate AS DATE,  
 @strGLNumber As NVARCHAR(MAX),  
 @StrREName AS NVARCHAR(100),  
 @SQlngJourId As bigint = NULL,  
 @optCurrentYear_IsChecked AS BIT,  
 @optPreviousYear_IsChecked AS BIT  
AS  
BEGIN  
 IF @optCurrentYear_IsChecked = 1   
 BEGIN  
  SELECT tblJournalEnt.intGLNumber, SUM(tblJournalEnt.decDebits), SUM(tblJournalEnt.decCredits) , SUM(tblJournalEnt.decAmount),GRP=1  
  FROM tblJournalEnt   
  INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID   
  WHERE (tblJournal.dteJournalDate <= @SQAsAtDate)   
  AND (tblJournal.lngJourID<> @SQlngJourId OR @SQlngJourId IS NULL)  
  GROUP BY tblJournalEnt.intGLNumber  
  
  UNION ALL  
  
  SELECT intGLNumber,SUM(decDbits) As decDbits, SUM(decCredits) AS decCredits, SUM(decAmount) AS decAmount, GRP FROM (    
   SELECT CASE intModule WHEN 0 Then strCuVeGeID   
   WHEN 1 THEN ISNULL((SELECT intGLNumber FROM tblAccounts WHERE (bitIsLinkedAccount = 1) AND (bitLinkAP = 1)),'')   
   WHEN 2 THEN ISNULL((SELECT intGLNumber FROM tblAccounts WHERE (bitIsLinkedAccount = 1) AND (bitLinkAR = 1)),'') END AS intGLNumber,  
   SUM(ISNULL(decDebits ,0)) As decDbits,  
   SUM(ISNULL(decCredits ,0)) As decCredits,   
   (SUM(ISNULL(decDebits ,0)) - SUM(ISNULL(decCredits ,0))) AS decAmount,   
   GRP=2  FROM tblJournalEntryDocRE    
   INNER JOIN tblJournalEntryDocREDT ON tblJournalEntryDocRE.strREName = tblJournalEntryDocREDT.strREName   
   WHERE tblJournalEntryDocRE.strREName = @StrREName AND bitPosted=0  
   GROUP BY tblJournalEntryDocREDT.strCuVeGeID,intModule  
  
   UNION ALL  
  
   SELECT tblJournalEntryDocREDT.intGLNumber,  
   SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decCredits > 0 THEN decLineTotExc ELSE decCredits END ,0)),  
   SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decDebits > 0 THEN decLineTotExc ELSE decDebits END ,0)),  
   (SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decCredits > 0 THEN decLineTotExc ELSE decCredits END ,0))   
   - SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decDebits > 0 THEN decLineTotExc ELSE decDebits END ,0))),   
   GRP=2 FROM tblJournalEntryDocRE    
   INNER JOIN tblJournalEntryDocREDT ON tblJournalEntryDocRE.strREName = tblJournalEntryDocREDT.strREName   
   WHERE tblJournalEntryDocRE.strREName = @StrREName AND bitPosted=0 AND tblJournalEntryDocREDT.intGLNumber IS NOT NULL    
   GROUP BY tblJournalEntryDocREDT.intGLNumber,intModule  
  
  
   UNION ALL  
  
   SELECT ISNULL(CASE intModule WHEN 1 THEN TD.intPurchAcct WHEN 2 THEN intSalesAcct END,strCuVeGeID),  
   CASE WHEN decCredits>0 THEN (decLineTaxAmt ) ELSE 0 END,  
   CASE WHEN decDebits>0 THEN (decLineTaxAmt ) ELSE 0 END,  
   CASE WHEN decCredits>0 THEN (decLineTaxAmt ) ELSE ( decLineTaxAmt )*-1 END,  
   GRP=2 FROM tblJournalEntryDocRE    
   INNER JOIN tblJournalEntryDocREDT ON tblJournalEntryDocRE.strREName = tblJournalEntryDocREDT.strREName   
   INNER JOIN tblTaxCodeExt As T ON T.strTaxCode=tblJournalEntryDocREDT.strTaxCode  
   INNER JOIN tblTaxDef AS TD ON T.strTaxName=TD.strTaxName  
   WHERE tblJournalEntryDocRE.strREName = @StrREName AND bitPosted=0 AND intTaxType IS NOT NULL   
  ) AS A
  GROUP BY A.intGLNumber,A.GRP    
  
 END  
 ELSE IF @optPreviousYear_IsChecked = 1   
 BEGIN  
  SELECT tblJournalEntLY.intGLNumber, SUM(tblJournalEntLY.decDebits), SUM(tblJournalEntLY.decCredits) , SUM(tblJournalEntLY.decAmount),GRP=1  
  FROM tblJournalEntLY   
  INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID   
  WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate)   
  AND (tblJournalLY.lngJourID<> @SQlngJourId OR @SQlngJourId IS NULL)  
  GROUP BY tblJournalEntLY.intGLNumber  
  
  UNION ALL  
  
  SELECT intGLNumber,SUM(decDbits) As decDbits, SUM(decCredits) AS decCredits, SUM(decAmount) AS decAmount, GRP FROM (   
   SELECT CASE intModule WHEN 0 Then strCuVeGeID   
   WHEN 1 THEN ISNULL((SELECT intGLNumber FROM tblAccounts WHERE (bitIsLinkedAccount = 1) AND (bitLinkAP = 1)),'')   
   WHEN 2 THEN ISNULL((SELECT intGLNumber FROM tblAccounts WHERE (bitIsLinkedAccount = 1) AND (bitLinkAR = 1)),'') END AS intGLNumber,  
   SUM(ISNULL(decDebits ,0)) As decDbits,  
   SUM(ISNULL(decCredits ,0)) As decCredits,   
   (SUM(ISNULL(decDebits ,0)) - SUM(ISNULL(decCredits ,0))) AS decAmount,   
   GRP=2  FROM tblJournalEntryDocRE    
   INNER JOIN tblJournalEntryDocREDT ON tblJournalEntryDocRE.strREName = tblJournalEntryDocREDT.strREName   
   WHERE tblJournalEntryDocRE.strREName = @StrREName AND bitPosted=0  
   GROUP BY tblJournalEntryDocREDT.strCuVeGeID,intModule  
  
   UNION ALL  
  
   SELECT tblJournalEntryDocREDT.intGLNumber,  
   SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decCredits > 0 THEN decLineTotExc ELSE decCredits END ,0)),  
   SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decDebits > 0 THEN decLineTotExc ELSE decDebits END ,0)),  
   (SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decCredits > 0 THEN decLineTotExc ELSE decCredits END ,0))   
   - SUM(ISNULL(CASE WHEN intTaxType = 1 AND decDebits > 0 THEN decLineTotExc ELSE decDebits END ,0))),   
   GRP=2 FROM tblJournalEntryDocRE    
   INNER JOIN tblJournalEntryDocREDT ON tblJournalEntryDocRE.strREName = tblJournalEntryDocREDT.strREName   
   WHERE tblJournalEntryDocRE.strREName = @StrREName AND bitPosted=0 AND tblJournalEntryDocREDT.intGLNumber IS NOT NULL    
   GROUP BY tblJournalEntryDocREDT.intGLNumber,intModule  
  
  
   UNION ALL  
  
   SELECT ISNULL(CASE intModule WHEN 1 THEN TD.intPurchAcct WHEN 2 THEN intSalesAcct END,strCuVeGeID),  
   CASE WHEN decCredits>0 THEN ( decLineTaxAmt ) ELSE 0 END,  
   CASE WHEN decDebits>0 THEN ( decLineTaxAmt ) ELSE 0 END,  
   CASE WHEN decCredits>0 THEN ( decLineTaxAmt ) ELSE ( decLineTaxAmt )*-1 END,  
   GRP=2 FROM tblJournalEntryDocRE    
   INNER JOIN tblJournalEntryDocREDT ON tblJournalEntryDocRE.strREName = tblJournalEntryDocREDT.strREName   
   INNER JOIN tblTaxCodeExt As T ON T.strTaxCode=tblJournalEntryDocREDT.strTaxCode  
   INNER JOIN tblTaxDef AS TD ON T.strTaxName=TD.strTaxName  
   WHERE tblJournalEntryDocRE.strREName = @StrREName AND bitPosted=0 AND intTaxType IS NOT NULL   
  ) AS A  
  GROUP BY A.intGLNumber,A.GRP  
 END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptFPIncomeLoadQuery_1_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptFPIncomeLoadQuery_1_1]
	@strGLNumber AS NVARCHAR(Max),
	@CostOfGoodsSold AS INT,
	@InterestExpense AS INT,
	@IncomeTaxExpense AS INT,
	@Revenue AS INT,
	@intOINum AS INT,
	@OperatingRevenue AS INT,
	@Expense AS INT
AS
BEGIN
	SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass, 
    'GroupSeq' = CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 
    WHEN intAccClass = @InterestExpense THEN 4 
    WHEN intAccClass = @IncomeTaxExpense THEN 5 
    WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0 
    WHEN intAccType = @Revenue THEN @intOINum
    WHEN intAccType = @Expense THEN 3 
    ELSE NULL END FROM tblAccounts WHERE (intAccType >= 4) 
	ORDER BY GroupSeq, intAccType, intAccClass, intGLNumber
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptFPIncomeLoadQuery_1_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptFPIncomeLoadQuery_1_2] 
	@optCurrentYear_IsChecked AS BIT,
	@optPreviousYear_IsChecked AS BIT,
	@optHistoryYear_IsChecked AS BIT,
	@strGLNumber NVARCHAR(Max),
	@SQStart AS DATE,
	@SQFinish AS DATE,
	@StrREName AS NVARCHAR(100),
	@SQlngJourId As bigint = NULL
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		SELECT tblJournalEnt.intGLNumber, SUM(tblJournalEnt.decDebits), SUM(tblJournalEnt.decCredits) , SUM(tblJournalEnt.decAmount),Grp=1 
		FROM tblJournalEnt 
		INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
		WHERE (tblJournal.dteJournalDate >= @SQStart) AND (tblJournal.dteJournalDate <= @SQFinish) 
		AND (tblJournal.lngJourID<> @SQlngJourId OR @SQlngJourId IS NULL)
		GROUP BY tblJournalEnt.intGLNumber

		UNION ALL

		SELECT * FROM (
			SELECT CASE intModule WHEN 0 Then strCuVeGeID 
			WHEN 1 THEN ISNULL((SELECT intGLNumber FROM tblAccounts WHERE (bitIsLinkedAccount = 1) AND (bitLinkAP = 1)),'') 
			WHEN 2 THEN ISNULL((SELECT intGLNumber FROM tblAccounts WHERE (bitIsLinkedAccount = 1) AND (bitLinkAR = 1)),'') END AS intGLNumber,
			SUM(ISNULL(decDebits ,0)) As decDbits,
			SUM(ISNULL(decCredits ,0)) As decCredits, 
			(SUM(ISNULL(decDebits ,0)) - SUM(ISNULL(decCredits ,0))) AS decAmount, 
			GRP=2  FROM tblJournalEntryDocRE  
			INNER JOIN tblJournalEntryDocREDT ON tblJournalEntryDocRE.strREName = tblJournalEntryDocREDT.strREName 
			WHERE tblJournalEntryDocRE.strREName = @StrREName AND bitPosted=0
			GROUP BY tblJournalEntryDocREDT.strCuVeGeID,intModule

			UNION ALL

			SELECT tblJournalEntryDocREDT.intGLNumber,
			SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decCredits > 0 THEN decLineTotExc ELSE decCredits  END,0)),
			SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decDebits > 0 THEN decLineTotExc ELSE decDebits  END,0)),
			(SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decCredits > 0 THEN decLineTotExc ELSE decCredits  END,0)) 
			- SUM(ISNULL( CASE WHEN intTaxType <> 0 AND decDebits > 0 THEN decLineTotExc ELSE decDebits END,0))), 
			GRP=2 FROM tblJournalEntryDocRE  
			INNER JOIN tblJournalEntryDocREDT ON tblJournalEntryDocRE.strREName = tblJournalEntryDocREDT.strREName 
			WHERE tblJournalEntryDocRE.strREName = @StrREName AND bitPosted=0 AND tblJournalEntryDocREDT.intGLNumber IS NOT NULL		
			GROUP BY tblJournalEntryDocREDT.intGLNumber,intModule


			UNION ALL

			SELECT ISNULL(CASE intModule WHEN 1 THEN TD.intPurchAcct WHEN 2 THEN intSalesAcct END,strCuVeGeID),
			CASE WHEN decCredits>0 THEN ( decLineTaxAmt ) ELSE 0 END,
			CASE WHEN decDebits>0 THEN ( decLineTaxAmt ) ELSE 0 END,
			CASE WHEN decCredits>0 THEN ( decLineTaxAmt ) ELSE ( decLineTaxAmt )*-1 END,
			GRP=2 FROM tblJournalEntryDocRE  
			INNER JOIN tblJournalEntryDocREDT ON tblJournalEntryDocRE.strREName = tblJournalEntryDocREDT.strREName 
			INNER JOIN tblTaxCodeExt As T ON T.strTaxCode=tblJournalEntryDocREDT.strTaxCode
			INNER JOIN tblTaxDef AS TD ON T.strTaxName=TD.strTaxName
			WHERE tblJournalEntryDocRE.strREName = @StrREName AND bitPosted=0 AND intTaxType IS NOT NULL	
		) AS A		

	END
	ELSE IF @optPreviousYear_IsChecked = 1 
	BEGIN
		SELECT tblJournalEntLY.intGLNumber, SUM(tblJournalEntLY.decDebits), SUM(tblJournalEntLY.decCredits) , SUM(tblJournalEntLY.decAmount),Grp=1
		FROM tblJournalEntLY 
		INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
		WHERE (tblJournalLY.dteJournalDate >= @SQStart) AND (tblJournalLY.dteJournalDate <= @SQFinish) 
		AND (tblJournalLY.lngJourID<> @SQlngJourId OR @SQlngJourId IS NULL)
		GROUP BY tblJournalEntLY.intGLNumber

		UNION ALL

		SELECT * FROM (
			SELECT CASE intModule WHEN 0 Then strCuVeGeID 
			WHEN 1 THEN ISNULL((SELECT intGLNumber FROM tblAccounts WHERE (bitIsLinkedAccount = 1) AND (bitLinkAP = 1)),'') 
			WHEN 2 THEN ISNULL((SELECT intGLNumber FROM tblAccounts WHERE (bitIsLinkedAccount = 1) AND (bitLinkAR = 1)),'') END AS intGLNumber,
			SUM(ISNULL( decDebits ,0)) As decDbits,
			SUM(ISNULL( decCredits ,0)) As decCredits, 
			(SUM(ISNULL( decDebits ,0)) - SUM(ISNULL( decCredits ,0))) AS decAmount, 
			GRP=2  FROM tblJournalEntryDocRE  
			INNER JOIN tblJournalEntryDocREDT ON tblJournalEntryDocRE.strREName = tblJournalEntryDocREDT.strREName 
			WHERE tblJournalEntryDocRE.strREName = @StrREName AND bitPosted=0
			GROUP BY tblJournalEntryDocREDT.strCuVeGeID,intModule

			UNION ALL

			SELECT tblJournalEntryDocREDT.intGLNumber,
			SUM(ISNULL( CASE WHEN intTaxType <> 0 AND decCredits > 0 THEN decLineTotExc ELSE decCredits END ,0)),
			SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decDebits > 0 THEN decLineTotExc ELSE decDebits END ,0)),
			(SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decCredits > 0 THEN decLineTotExc ELSE decCredits END ,0)) 
			- SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decDebits > 0 THEN decLineTotExc ELSE decDebits END ,0))), 
			GRP=2 FROM tblJournalEntryDocRE  
			INNER JOIN tblJournalEntryDocREDT ON tblJournalEntryDocRE.strREName = tblJournalEntryDocREDT.strREName 
			WHERE tblJournalEntryDocRE.strREName = @StrREName AND bitPosted=0 AND tblJournalEntryDocREDT.intGLNumber IS NOT NULL		
			GROUP BY tblJournalEntryDocREDT.intGLNumber,intModule


			UNION ALL

			SELECT ISNULL(CASE intModule WHEN 1 THEN TD.intPurchAcct WHEN 2 THEN intSalesAcct END,strCuVeGeID),
			CASE WHEN decCredits>0 THEN (decLineTaxAmt ) ELSE 0 END,
			CASE WHEN decDebits>0 THEN (decLineTaxAmt ) ELSE 0 END,
			CASE WHEN decCredits>0 THEN (decLineTaxAmt ) ELSE (decLineTaxAmt )*-1 END,
			GRP=2 FROM tblJournalEntryDocRE  
			INNER JOIN tblJournalEntryDocREDT ON tblJournalEntryDocRE.strREName = tblJournalEntryDocREDT.strREName 
			INNER JOIN tblTaxCodeExt As T ON T.strTaxCode=tblJournalEntryDocREDT.strTaxCode
			INNER JOIN tblTaxDef AS TD ON T.strTaxName=TD.strTaxName
			WHERE tblJournalEntryDocRE.strREName = @StrREName AND bitPosted=0 AND intTaxType IS NOT NULL	
		) AS A		
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptFPTrialBalLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptFPTrialBalLoadQuery_1]
	@strGLNumber NVARCHAR(MAX)
AS
BEGIN
	SELECT intGLNumber, strDesc, decOpenBalance, intAccType FROM tblAccounts 
	WHERE (intGroupCode < 3) AND bitLinkCEarnings = 0
	ORDER BY intAccType, intGLNumber
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptFPTrialBalLoadQuery_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptFPTrialBalLoadQuery_2] 
 @SQAsAtDate date,  
 @strGLNumber NVARCHAR(MAX),  
 @strREName NVARCHAR(100),  
 @SQlngJourId As bigint = NULL,  
 @optCurrentYear_IsChecked AS BIT,  
 @optPreviousYear_IsChecked AS BIT  
AS  
BEGIN  
 IF @optCurrentYear_IsChecked = 1   
 BEGIN  
  SELECT tblJournalEnt.intGLNumber, SUM(tblJournalEnt.decDebits), SUM(tblJournalEnt.decCredits) , SUM(tblJournalEnt.decAmount),Grp=1   
  FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID   
  WHERE (tblJournal.dteJournalDate <= @SQAsAtDate)   
  AND (tblJournal.lngJourID<> @SQlngJourId OR @SQlngJourId IS NULL)  
  GROUP BY tblJournalEnt.intGLNumber  
  
  UNION ALL  
  
  SELECT intGLNumber,SUM(decDbits) As decDbits, SUM(decCredits) AS decCredits, SUM(decAmount) AS decAmount, GRP FROM( 
   SELECT CASE intModule WHEN 0 Then strCuVeGeID   
   WHEN 1 THEN ISNULL((SELECT intGLNumber FROM tblAccounts WHERE (bitIsLinkedAccount = 1) AND (bitLinkAP = 1)),'')   
   WHEN 2 THEN ISNULL((SELECT intGLNumber FROM tblAccounts WHERE (bitIsLinkedAccount = 1) AND (bitLinkAR = 1)),'') END AS intGLNumber,  
   SUM(ISNULL(decDebits ,0)) As decDbits,  
   SUM(ISNULL(decCredits ,0)) As decCredits,   
   (SUM(ISNULL(decDebits ,0)) - SUM(ISNULL(decCredits ,0))) AS decAmount,   
   GRP=2  FROM tblJournalEntryDocRE    
   INNER JOIN tblJournalEntryDocREDT ON tblJournalEntryDocRE.strREName = tblJournalEntryDocREDT.strREName   
   WHERE tblJournalEntryDocRE.strREName = @StrREName AND bitPosted=0  
   GROUP BY tblJournalEntryDocREDT.strCuVeGeID,intModule  
  
   UNION ALL  
  
   SELECT tblJournalEntryDocREDT.intGLNumber,  
   SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decCredits > 0 THEN decLineTotExc ELSE decCredits END ,0)),  
   SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decDebits > 0 THEN decLineTotExc ELSE decDebits END ,0)),  
   (SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decCredits > 0 THEN decLineTotExc ELSE decCredits END ,0))   
   - SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decDebits > 0 THEN decLineTotExc ELSE decDebits END ,0))),   
   GRP=2 FROM tblJournalEntryDocRE    
   INNER JOIN tblJournalEntryDocREDT ON tblJournalEntryDocRE.strREName = tblJournalEntryDocREDT.strREName   
   WHERE tblJournalEntryDocRE.strREName = @StrREName AND bitPosted=0 AND tblJournalEntryDocREDT.intGLNumber IS NOT NULL    
   GROUP BY tblJournalEntryDocREDT.intGLNumber,intModule  
  
  
   UNION ALL  
  
   SELECT ISNULL(CASE intModule WHEN 1 THEN TD.intPurchAcct WHEN 2 THEN intSalesAcct END,strCuVeGeID),  
   CASE WHEN decCredits>0 THEN (CASE bitForeignAcct When 1 THEN (decLineTaxAmt * decExchange) ELSE decLineTaxAmt END) ELSE 0 END,  
   CASE WHEN decDebits>0 THEN (CASE bitForeignAcct When 1 THEN (decLineTaxAmt * decExchange) ELSE decLineTaxAmt END) ELSE 0 END,  
   CASE WHEN decCredits>0 THEN (CASE bitForeignAcct When 1 THEN (decLineTaxAmt * decExchange) ELSE decLineTaxAmt END) ELSE (CASE bitForeignAcct When 1 THEN (decLineTaxAmt * decExchange) ELSE decLineTaxAmt END)*-1 END,  
   GRP=2 FROM tblJournalEntryDocRE    
   INNER JOIN tblJournalEntryDocREDT ON tblJournalEntryDocRE.strREName = tblJournalEntryDocREDT.strREName   
   INNER JOIN tblTaxCodeExt As T ON T.strTaxCode=tblJournalEntryDocREDT.strTaxCode  
   INNER JOIN tblTaxDef AS TD ON T.strTaxName=TD.strTaxName  
   WHERE tblJournalEntryDocRE.strREName = @StrREName AND bitPosted=0 AND intTaxType IS NOT NULL   
  ) AS A  
  GROUP BY A.intGLNumber,A.GRP  
 END  
 ELSE IF @optPreviousYear_IsChecked = 1  
 BEGIN  
  SELECT tblJournalEntLY.intGLNumber, SUM(tblJournalEntLY.decDebits), SUM(tblJournalEntLY.decCredits) , SUM(tblJournalEntLY.decAmount),Grp=1  
  FROM tblJournalEntLY   
  INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID   
  WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate)   
  AND (tblJournalLY.lngJourID<> @SQlngJourId OR @SQlngJourId IS NULL)  
  GROUP BY tblJournalEntLY.intGLNumber  
    
  UNION ALL  
  
 SELECT intGLNumber,SUM(decDbits) As decDbits, SUM(decCredits) AS decCredits, SUM(decAmount) AS decAmount, GRP FROM (  
   SELECT CASE intModule WHEN 0 Then strCuVeGeID   
   WHEN 1 THEN ISNULL((SELECT intGLNumber FROM tblAccounts WHERE (bitIsLinkedAccount = 1) AND (bitLinkAP = 1)),'')   
   WHEN 2 THEN ISNULL((SELECT intGLNumber FROM tblAccounts WHERE (bitIsLinkedAccount = 1) AND (bitLinkAR = 1)),'') END AS intGLNumber,  
   SUM(ISNULL(decDebits ,0)) As decDbits,  
   SUM(ISNULL(decCredits ,0)) As decCredits,   
   (SUM(ISNULL(decDebits ,0)) - SUM(ISNULL(decCredits ,0))) AS decAmount,   
   GRP=2  FROM tblJournalEntryDocRE    
   INNER JOIN tblJournalEntryDocREDT ON tblJournalEntryDocRE.strREName = tblJournalEntryDocREDT.strREName   
   WHERE tblJournalEntryDocRE.strREName = @StrREName AND bitPosted=0  
   GROUP BY tblJournalEntryDocREDT.strCuVeGeID,intModule  
  
   UNION ALL  
  
   SELECT tblJournalEntryDocREDT.intGLNumber,  
   SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decCredits > 0 THEN decLineTotExc ELSE decCredits END ,0)),  
   SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decDebits > 0 THEN decLineTotExc ELSE decDebits END ,0)),  
   (SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decCredits > 0 THEN decLineTotExc ELSE decCredits END ,0))   
   - SUM(ISNULL(CASE WHEN intTaxType <> 0 AND decDebits > 0 THEN decLineTotExc ELSE decDebits END ,0))),   
   GRP=2 FROM tblJournalEntryDocRE    
   INNER JOIN tblJournalEntryDocREDT ON tblJournalEntryDocRE.strREName = tblJournalEntryDocREDT.strREName   
   WHERE tblJournalEntryDocRE.strREName = @StrREName AND bitPosted=0 AND tblJournalEntryDocREDT.intGLNumber IS NOT NULL    
   GROUP BY tblJournalEntryDocREDT.intGLNumber,intModule  
  
  
   UNION ALL  
  
   SELECT ISNULL(CASE intModule WHEN 1 THEN TD.intPurchAcct WHEN 2 THEN intSalesAcct END,strCuVeGeID),  
   CASE WHEN decCredits>0 THEN (CASE bitForeignAcct When 1 THEN (decLineTaxAmt * decExchange) ELSE decLineTaxAmt END) ELSE 0 END,  
   CASE WHEN decDebits>0 THEN (CASE bitForeignAcct When 1 THEN (decLineTaxAmt * decExchange) ELSE decLineTaxAmt END) ELSE 0 END,  
   CASE WHEN decCredits>0 THEN (CASE bitForeignAcct When 1 THEN (decLineTaxAmt * decExchange) ELSE decLineTaxAmt END) ELSE (CASE bitForeignAcct When 1 THEN (decLineTaxAmt * decExchange) ELSE decLineTaxAmt END)*-1 END,  
   GRP=2 FROM tblJournalEntryDocRE    
   INNER JOIN tblJournalEntryDocREDT ON tblJournalEntryDocRE.strREName = tblJournalEntryDocREDT.strREName   
   INNER JOIN tblTaxCodeExt As T ON T.strTaxCode=tblJournalEntryDocREDT.strTaxCode  
   INNER JOIN tblTaxDef AS TD ON T.strTaxName=TD.strTaxName  
   WHERE tblJournalEntryDocRE.strREName = @StrREName AND bitPosted=0 AND intTaxType IS NOT NULL   
  ) AS A   
  GROUP BY A.intGLNumber,A.GRP 
 END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptGeneralLoadQuery_Final]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SPRptGeneralLoadQuery_Final]
(
	@SQintAcc_inquery AS NVARCHAR(MAX),
	@SQstrDesc_inquery AS NVARCHAR(MAX),
	@SQuidYearID AS UNIQUEIDENTIFIER,
	@SQStart AS DATE,
	@SQEnd AS DATE,
	@SQJourStart AS INT,
	@SQJourEnd AS INT,
	@SQModule AS INT,
	@optCurrentYear_IsChecked AS BIT,
	@optPreviousYear_IsChecked AS BIT,
	@optHistoryYear_IsChecked AS BIT,
	@chkShowUnallocOnly_IsChecked AS BIT,
	@optJournalRange_IsChecked AS BIT,
	@optSortDate_IsChecked AS BIT,
	@SQOmitClosingBal AS BIT,
	@SQEntryTypeRec AS INT,
    @SQEntryTypePay AS INT
)	
AS
BEGIN
	DECLARE @SQAcct AS NVARCHAR(200)
	DECLARE @SQAcctDesc AS NVARCHAR(200)
	DECLARE @intAccTemp AS NVARCHAR(200)
	DECLARE @strDescTemp AS NVARCHAR(200)
	DECLARE @decopen AS DECIMAL(18,4)
	DECLARE @intAcctType AS NVARCHAR(200)
	DECLARE @TOTALCOUNTER AS INT
	DECLARE @COUNTER AS INT = 0
	DECLARE @ROW AS INTEGER = 1
	DECLARE @decBalForward AS DECIMAL(18,4)
	DECLARE @decEntries AS DECIMAL(18,4)
	DECLARE @intGroupNumber AS INT = 0
	DECLARE @SQLQuery1_1 AS NVARCHAR(MAX)
	DECLARE @SQLQuery1_2 AS NVARCHAR(MAX)
	DECLARE @SQLQuery1_3 AS NVARCHAR(MAX)
	DECLARE @SQLQuery2_1 AS NVARCHAR(MAX)
	DECLARE @SQLQuery2_2 AS NVARCHAR(MAX)
	DECLARE @SQLQuery2_3 AS NVARCHAR(MAX)
	DECLARE @SQLQuery3_1 AS NVARCHAR(MAX)
	DECLARE @SQLQuery3_2 AS NVARCHAR(MAX)
	DECLARE @SQLQuery3_3 AS NVARCHAR(MAX)
	DECLARE @ParameterDefinition AS NVARCHAR(MAX)
	DECLARE	@strCurrency NVARCHAR(3)
	DECLARE	@strCurrencyHome NVARCHAR(3)
	CREATE TABLE #Temp
	(
	
		intAcc NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS, 
		strDesc NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS, 
		intAccType INT,
		strCurrency NVARCHAR(3) COLLATE SQL_Latin1_General_CP1_CI_AS,
		decOpenBalance DECIMAL(18,4),
		decTransBal DECIMAL(18,4),
		decBalForward DECIMAL(18,4)
	)
	CREATE TABLE #tmpGENERAL
	(
		ID int identity(1,1) ,
		Group1 INT,
		AcctType INT,
		Account NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
		[Description] NVARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS,
		[Date] DATETIME,
		Comment NVARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS,
		[Source] NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
		Journal INT,
		Debits DECIMAL(18,4),
		Credits DECIMAL(18,4),
		Amount DECIMAL(18,4),
		Currency NVARCHAR(3) COLLATE SQL_Latin1_General_CP1_CI_AS,
		Exchange DECIMAL(20,6),
		DebitsF DECIMAL(18,4),
		CreditsF DECIMAL(18,4),
		AmountF DECIMAL(18,4),	
	)
	CREATE TABLE #TEMP2
	(
		strSource  NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
	)
	CREATE TABLE #Temp3
	(
	dteJournalDate DATETIME,
	NEWCOLUMN1 NVARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS,
	strSource NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
	lngJourID INT,
	decDebits DECIMAL(18,4),
	decCredits DECIMAL(18,4),
	decAmount DECIMAL(18,4),
	decAllocatedAmtToDate DECIMAL(18,4),
	decUnAllocatedAmt DECIMAL(18,4),
	NEWCOLUMN2 NVARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS,
	strCurrency NVARCHAR(3) COLLATE SQL_Latin1_General_CP1_CI_AS,
	decExchange DECIMAL(20,6),
	decDebitsF DECIMAL(18,4),
	decCreditsF DECIMAL(18,4),
	decAmountF DECIMAL(18,4),
	AccType INT,
	Account NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
	[Description] NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS,
	intLineNum INT
	)

	SELECT @strCurrencyHome = strCurrency FROM tblCurrency WHERE bitHome = 1
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		INSERT INTO #Temp
		SELECT acc.intGLNumber, acc.strDesc,intAccType,strCurrency,decOpenBalance,ISNULL(decAmount,0),(decOpenBalance + ISNULL(decAmount,0)) FROM tblAccounts AS acc 
		INNER JOIN (SELECT Value From [fnSplitStringAsTable]((@SQintAcc_inquery),(',')) where Value <> '''0' and Value <> '0''' and  Value <> '0') AS accNo ON acc.intGLNumber = accNo.Value
		LEFT JOIN (SELECT ISNULL(SUM(decAmount),0) AS decAmount,intGLNumber FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate < @SQStart) GROUP BY intGLNumber) 
		AS Jour ON Jour.intGLNumber = acc.intGLNumber

		INSERT INTO #TEMP2
		SELECT DISTINCT strSource FROM tblJournal WHERE (tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND intEntryType IN (5,6)
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		INSERT INTO #Temp
		SELECT acc.intGLNumber, acc.strDesc,intAccType,strCurrency,decOpenBalance,ISNULL(decAmount,0),(decOpenBalance + ISNULL(decAmount,0)) FROM tblAccountsLY AS acc 
		INNER JOIN (SELECT Value From [fnSplitStringAsTable]((@SQintAcc_inquery),(',')) where Value <> '''0' and Value <> '0''' and  Value <> '0') AS accNo ON acc.intGLNumber = accNo.Value
		LEFT JOIN (SELECT ISNULL(SUM(decAmount),0) AS decAmount,intGLNumber FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate < @SQStart) GROUP BY intGLNumber) 
		AS Jour ON Jour.intGLNumber = acc.intGLNumber

		INSERT INTO #TEMP2
		SELECT DISTINCT strSource FROM tblJournalLY WHERE (tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND intEntryType IN (5,6)
	END
	ELSE IF @optHistoryYear_IsChecked = 1 
	BEGIN
		INSERT INTO #Temp
		SELECT acc.intGLNumber, acc.strDesc,intAccType,strCurrency,decOpenBalance,ISNULL(decAmount,0),(decOpenBalance + ISNULL(decAmount,0)) FROM tblAccountsHist AS acc 
		INNER JOIN (SELECT Value From [fnSplitStringAsTable]((@SQintAcc_inquery),(',')) where Value <> '''0' and Value <> '0''' and  Value <> '0') AS accNo ON acc.intGLNumber = accNo.Value
		LEFT JOIN (SELECT ISNULL(SUM(decAmount),0) AS decAmount,intGLNumber FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate < @SQStart) AND (tblJournalHist.uidYearID = @SQuidYearID) GROUP BY intGLNumber)
		AS Jour ON Jour.intGLNumber = acc.intGLNumber
		WHERE acc.uidYearID = @SQuidYearID 

		INSERT INTO #TEMP2
		SELECT DISTINCT strSource FROM tblJournalHist WHERE (tblJournalHist.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (tblJournalHist.uidYearID = @SQuidYearID) AND intEntryType IN (5,6)
	END

	INSERT INTO #tmpGENERAL(Group1 ,AcctType ,Account ,Description ,Date ,Comment ,Source ,Journal,Debits ,Credits, Amount, Currency, Exchange, DebitsF, CreditsF, AmountF)
	SELECT RANK() OVER (ORDER BY intAcc),intAccType,intAcc,strDesc,@SQStart,'Balance Forward', ' ',0,0,0,decBalForward,strCurrency,1,0,0,0 From #Temp


	Set @ParameterDefinition =' @SQModule INT,
	@SQJourStart Decimal(18,4),
	@SQJourEnd Decimal(18,4),
	@SQEnd Date,
	@SQStart Date'
	IF @optHistoryYear_IsChecked = 1 
	BEGIN
		Set @ParameterDefinition = @ParameterDefinition + ' ,@SQuidYearID UniqueIdentifier'
	END

	----Get Detail Records for Period Reporting On
	SET @SQLQuery1_1 = 'SELECT HDR.dteJournalDate, CASE WHEN HDR.intModule = ' + CONVERT(NVARCHAR(50),@SQModule) + ' THEN CASE WHEN DTL.strComment = '''' THEN HDR.strComment ELSE DTL.strComment END ELSE HDR.strComment END, HDR.strSource, HDR.lngJourID, DTL.decDebits, DTL.decCredits, DTL.decAmount, DTL.decAllocatedAmtToDate, DTL.decUnAllocatedAmt, CASE WHEN ISNULL(BRT.strSource, '''') = '''' THEN ISNULL((SELECT TOP 1 JDT.strLineReference FROM tblJournalEntryDoc JHR INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID WHERE (JHR.lngJourID = HDR.lngJourID) AND (JHR.strJEDocID = HDR.strSource) AND (JDT.strCuVeGeID = DTL.intGLNumber OR JDT.intGLNumber = DTL.intGLNumber) AND (JDT.strLineComment = DTL.strComment)), '''') ELSE ISNULL(BRT.strSource, '''') END, ISNULL(CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypeRec) + ' THEN tblCustPay.strCurrency ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypePay) + ' THEN tblVendPay.strCurrency ELSE DTL.strCurrency END END, DTL.strCurrency) AS strCurrency, ISNULL(CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypeRec) + ' THEN tblCustPay.decExchange ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypePay) + ' THEN tblVendPay.decExchange ELSE DTL.decExchange END END, DTL.decExchange) AS decExchange, CASE WHEN ''' + @strCurrencyHome + ''' <> DTL.strCurrency AND DTL.decAmountF = 0 THEN CASE WHEN DTL.decDebits <> 0 THEN CASE WHEN DTL.decDebits = 0 OR DTL.decExchange = 0 THEN 0 ELSE ROUND(DTL.decDebits / DTL.decExchange,2) END ELSE DTL.decDebitsF END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypeRec) + ' AND tblCustPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decDebits = 0 OR tblCustPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decDebits / tblCustPay.decExchange,2) END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypePay) + ' AND tblVendPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decDebits = 0 OR tblVendPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decDebits / tblVendPay.decExchange,2) END ELSE DTL.decDebitsF END END END, CASE WHEN ''' + @strCurrencyHome + ''' <> DTL.strCurrency AND DTL.decAmountF = 0 THEN CASE WHEN DTL.decCredits <> 0 THEN CASE WHEN DTL.decCredits = 0 OR DTL.decExchange = 0 THEN 0 ELSE ROUND(DTL.decCredits / DTL.decExchange,2) END ELSE DTL.decCreditsF END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypeRec) + ' AND tblCustPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decCredits = 0 OR tblCustPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decCredits / tblCustPay.decExchange,2) END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypePay) + ' AND tblVendPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decCredits = 0 OR tblVendPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decCredits / tblVendPay.decExchange,2) END ELSE DTL.decCreditsF END END END, CASE WHEN ''' + @strCurrencyHome + ''' <> DTL.strCurrency AND DTL.decAmountF = 0 THEN CASE WHEN DTL.decAmount <> 0 THEN CASE WHEN DTL.decAmount = 0 OR DTL.decExchange = 0 THEN 0 ELSE ROUND(DTL.decAmount / DTL.decExchange,2) END ELSE DTL.decAmountF END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypeRec) + ' AND tblCustPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decAmount = 0 OR tblCustPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decAmount / tblCustPay.decExchange,2) END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypePay) + ' AND tblVendPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decAmount = 0 OR tblVendPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decAmount / tblVendPay.decExchange,2) END ELSE DTL.decAmountF END END END, ACC.intAccType, ACC.intAcc, ACC.strDesc, DTL.intLineNum '
	SET @SQLQuery1_2 = 'FROM tblJournal HDR INNER JOIN tblJournalEnt DTL ON HDR.lngJourID = DTL.lngJourID INNER JOIN #Temp ACC ON ACC.intAcc = DTL.intGLNumber LEFT OUTER JOIN tblBankRecTrans BRT ON BRT.lngJourID = DTL.lngJourID AND BRT.intLineNum = DTL.intLineNum AND BRT.dteJourDate = HDR.dteJournalDate LEFT JOIN (SELECT lngJourID,dteJournalDate,j.strSource,strCurrency,decExchange From tblCustPay CP INNER JOIN #TEMP2 J on CP.strSource=j.strSource) AS tblCustPay ON HDR.strSource = tblCustPay.strSource AND HDR.lngJourID = tblCustPay.lngJourID AND HDR.dteJournalDate = tblCustPay.dteJournalDate LEFT JOIN (SELECT lngJourID,dteJournalDate,j.strSource,strCurrency,decExchange From tblVendPay VP INNER JOIN #TEMP2 J on VP.strSource = j.strSource UNION SELECT lngJourID,dteJournalDate,j.strSource,strCurrency,decExchange FROM tblVendPay VP INNER JOIN #TEMP2 J ON VP.strReference = j.strSource) AS tblVendPay ON HDR.strSource = tblVendPay.strSource AND HDR.lngJourID = tblVendPay.lngJourID AND HDR.dteJournalDate = tblVendPay.dteJournalDate AND DTL.strCurrency = tblVendPay.strCurrency WHERE (HDR.dteJournalDate >= ''' + CONVERT(NVARCHAR(50), @SQStart) + ''') AND (HDR.dteJournalDate <= ''' + CONVERT(NVARCHAR(50),@SQEnd) + ''')'
	SET @SQLQuery2_1 = 'SELECT HDR.dteJournalDate, CASE WHEN HDR.intModule = ' + CONVERT(NVARCHAR(50),@SQModule) + ' THEN CASE WHEN DTL.strComment = '''' THEN HDR.strComment ELSE DTL.strComment END ELSE HDR.strComment END, HDR.strSource, HDR.lngJourID, DTL.decDebits, DTL.decCredits, DTL.decAmount, DTL.decAllocatedAmtToDate, DTL.decUnAllocatedAmt, CASE WHEN ISNULL(BRT.strSource, '''') = '''' THEN ISNULL((SELECT TOP 1 JDT.strLineReference FROM tblJournalEntryDoc JHR INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID WHERE (JHR.lngJourID = HDR.lngJourID) AND (JHR.strJEDocID = HDR.strSource) AND (JDT.strCuVeGeID = DTL.intGLNumber OR JDT.intGLNumber = DTL.intGLNumber) AND (JDT.strLineComment = DTL.strComment)), '''') ELSE ISNULL(BRT.strSource, '''') END, ISNULL(CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypeRec) + ' THEN tblCustPay.strCurrency ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypePay) + ' THEN tblVendPay.strCurrency ELSE DTL.strCurrency END END, DTL.strCurrency) AS strCurrency, ISNULL(CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypeRec) + ' THEN tblCustPay.decExchange ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypePay) + ' THEN tblVendPay.decExchange ELSE DTL.decExchange END END, DTL.decExchange) AS decExchange, CASE WHEN ''' + @strCurrencyHome + ''' <> DTL.strCurrency AND DTL.decAmountF = 0 THEN CASE WHEN DTL.decDebits <> 0 THEN CASE WHEN DTL.decDebits = 0 OR DTL.decExchange = 0 THEN 0 ELSE ROUND(DTL.decDebits / DTL.decExchange,2) END ELSE DTL.decDebitsF END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypeRec) + ' AND tblCustPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decDebits = 0 OR tblCustPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decDebits / tblCustPay.decExchange,2) END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypePay) + ' AND tblVendPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decDebits = 0 OR tblVendPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decDebits / tblVendPay.decExchange,2) END ELSE DTL.decDebitsF END END END, CASE WHEN ''' + @strCurrencyHome + ''' <> DTL.strCurrency AND DTL.decAmountF = 0 THEN CASE WHEN DTL.decCredits <> 0 THEN CASE WHEN DTL.decCredits = 0 OR DTL.decExchange = 0 THEN 0 ELSE ROUND(DTL.decCredits / DTL.decExchange,2) END ELSE DTL.decCreditsF END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypeRec) + ' AND tblCustPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decCredits = 0 OR tblCustPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decCredits / tblCustPay.decExchange,2) END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypePay) + ' AND tblVendPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decCredits = 0 OR tblVendPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decCredits / tblVendPay.decExchange,2) END ELSE DTL.decCreditsF END END END, CASE WHEN ''' + @strCurrencyHome + ''' <> DTL.strCurrency AND DTL.decAmountF = 0 THEN CASE WHEN DTL.decAmount <> 0 THEN CASE WHEN DTL.decAmount = 0 OR DTL.decExchange = 0 THEN 0 ELSE ROUND(DTL.decAmount / DTL.decExchange,2) END ELSE DTL.decAmountF END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypeRec) + ' AND tblCustPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decAmount = 0 OR tblCustPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decAmount / tblCustPay.decExchange,2) END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypePay) + ' AND tblVendPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decAmount = 0 OR tblVendPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decAmount / tblVendPay.decExchange,2) END ELSE DTL.decAmountF END END END, ACC.intAccType, ACC.intAcc, ACC.strDesc, DTL.intLineNum '
	SET @SQLQuery2_2 = 'FROM tblJournalLY HDR INNER JOIN tblJournalEntLY DTL ON HDR.lngJourID = DTL.lngJourID INNER JOIN #Temp ACC ON ACC.intAcc = DTL.intGLNumber LEFT OUTER JOIN tblBankRecTrans BRT ON BRT.lngJourID = DTL.lngJourID AND BRT.intLineNum = DTL.intLineNum AND BRT.dteJourDate = HDR.dteJournalDate LEFT JOIN (SELECT lngJourID,dteJournalDate,j.strSource,strCurrency,decExchange From tblCustPay CP INNER JOIN #TEMP2 J on CP.strSource=j.strSource) AS tblCustPay ON HDR.strSource = tblCustPay.strSource AND HDR.lngJourID = tblCustPay.lngJourID AND HDR.dteJournalDate = tblCustPay.dteJournalDate LEFT JOIN (SELECT lngJourID,dteJournalDate,j.strSource,strCurrency,decExchange From tblVendPay VP INNER JOIN #TEMP2 J on VP.strSource = j.strSource UNION SELECT lngJourID,dteJournalDate,j.strSource,strCurrency,decExchange FROM tblVendPay VP INNER JOIN #TEMP2 J ON VP.strReference = j.strSource) AS tblVendPay ON HDR.strSource = tblVendPay.strSource AND HDR.lngJourID = tblVendPay.lngJourID AND HDR.dteJournalDate = tblVendPay.dteJournalDate AND DTL.strCurrency = tblVendPay.strCurrency WHERE (HDR.dteJournalDate >= ''' + CONVERT(NVARCHAR(50),@SQStart) + ''') AND (HDR.dteJournalDate <= ''' + CONVERT(NVARCHAR(50),@SQEnd) + ''')'
	SET @SQLQuery3_1 = 'SELECT HDR.dteJournalDate, CASE WHEN HDR.intModule = ' + CONVERT(NVARCHAR(50),@SQModule) + ' THEN CASE WHEN DTL.strComment = '''' THEN HDR.strComment ELSE DTL.strComment END ELSE HDR.strComment END, HDR.strSource, HDR.lngJourID, DTL.decDebits, DTL.decCredits, DTL.decAmount, DTL.decAllocatedAmtToDate, DTL.decUnAllocatedAmt, CASE WHEN ISNULL(BRT.strSource, '''') = '''' THEN ISNULL((SELECT TOP 1 JDT.strLineReference FROM tblJournalEntryDoc JHR INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID WHERE (JHR.lngJourID = HDR.lngJourID) AND (JHR.strJEDocID = HDR.strSource) AND (JDT.strCuVeGeID = DTL.intGLNumber OR JDT.intGLNumber = DTL.intGLNumber) AND (JDT.strLineComment = DTL.strComment)), '''') ELSE ISNULL(BRT.strSource, '''') END, ISNULL(CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypeRec) + ' THEN tblCustPay.strCurrency ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypePay) + ' THEN tblVendPay.strCurrency ELSE DTL.strCurrency END END, DTL.strCurrency) AS strCurrency, ISNULL(CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypeRec) + ' THEN tblCustPay.decExchange ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypePay) + ' THEN tblVendPay.decExchange ELSE DTL.decExchange END END, DTL.decExchange) AS decExchange, CASE WHEN ''' + @strCurrencyHome + ''' <> DTL.strCurrency AND DTL.decAmountF = 0 THEN CASE WHEN DTL.decDebits <> 0 THEN CASE WHEN DTL.decDebits = 0 OR DTL.decExchange = 0 THEN 0 ELSE ROUND(DTL.decDebits / DTL.decExchange,2) END ELSE DTL.decDebitsF END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypeRec) + ' AND tblCustPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decDebits = 0 OR tblCustPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decDebits / tblCustPay.decExchange,2) END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypePay) + ' AND tblVendPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decDebits = 0 OR tblVendPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decDebits / tblVendPay.decExchange,2) END ELSE DTL.decDebitsF END END END, CASE WHEN ''' + @strCurrencyHome + ''' <> DTL.strCurrency AND DTL.decAmountF = 0 THEN CASE WHEN DTL.decCredits <> 0 THEN CASE WHEN DTL.decCredits = 0 OR DTL.decExchange = 0 THEN 0 ELSE ROUND(DTL.decCredits / DTL.decExchange,2) END ELSE DTL.decCreditsF END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypeRec) + ' AND tblCustPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decCredits = 0 OR tblCustPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decCredits / tblCustPay.decExchange,2) END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypePay) + ' AND tblVendPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decCredits = 0 OR tblVendPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decCredits / tblVendPay.decExchange,2) END ELSE DTL.decCreditsF END END END, CASE WHEN ''' + @strCurrencyHome + ''' <> DTL.strCurrency AND DTL.decAmountF = 0 THEN CASE WHEN DTL.decAmount <> 0 THEN CASE WHEN DTL.decAmount = 0 OR DTL.decExchange = 0 THEN 0 ELSE ROUND(DTL.decAmount / DTL.decExchange,2) END ELSE DTL.decAmountF END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypeRec) + ' AND tblCustPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decAmount = 0 OR tblCustPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decAmount / tblCustPay.decExchange,2) END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50),@SQEntryTypePay) + ' AND tblVendPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decAmount = 0 OR tblVendPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decAmount / tblVendPay.decExchange,2) END ELSE DTL.decAmountF END END END, ACC.intAccType, ACC.intAcc, ACC.strDesc, DTL.intLineNum '
	SET @SQLQuery3_2 = 'FROM tblJournalHist HDR INNER JOIN tblJournalEntHist DTL ON HDR.lngJourID = DTL.lngJourID AND HDR.uidYearID = DTL.uidYearID INNER JOIN #Temp ACC ON ACC.intAcc = DTL.intGLNumber LEFT OUTER JOIN tblBankRecTrans BRT ON BRT.lngJourID = DTL.lngJourID AND BRT.intLineNum = DTL.intLineNum AND BRT.dteJourDate = HDR.dteJournalDate LEFT JOIN (SELECT lngJourID,dteJournalDate,j.strSource,strCurrency,decExchange From tblCustPay CP INNER JOIN #TEMP2 J on CP.strSource=j.strSource) AS tblCustPay ON HDR.strSource = tblCustPay.strSource AND HDR.lngJourID = tblCustPay.lngJourID AND HDR.dteJournalDate = tblCustPay.dteJournalDate LEFT JOIN (SELECT lngJourID,dteJournalDate,j.strSource,strCurrency,decExchange From tblVendPay VP INNER JOIN #TEMP2 J on VP.strSource = j.strSource UNION SELECT lngJourID,dteJournalDate,j.strSource,strCurrency,decExchange FROM tblVendPay VP INNER JOIN #TEMP2 J ON VP.strReference = j.strSource) AS tblVendPay ON HDR.strSource = tblVendPay.strSource AND HDR.lngJourID = tblVendPay.lngJourID AND HDR.dteJournalDate = tblVendPay.dteJournalDate AND DTL.strCurrency = tblVendPay.strCurrency '
	SET @SQLQuery3_2 = @SQLQuery3_2 + ' WHERE (HDR.dteJournalDate >= ''' + CONVERT(NVARCHAR(50),@SQStart) + ''') AND (HDR.dteJournalDate <= ''' + CONVERT(NVARCHAR(50),@SQEnd) + ''') AND (HDR.uidYearID = ''' + CONVERT(NVARCHAR(50),@SQuidYearID) + ''')'

	IF @chkShowUnallocOnly_IsChecked = 1
	BEGIN
		SET @SQLQuery1_2 =  @SQLQuery1_2 + ' AND DTL.decUnAllocatedAmt <> 0'
		SET @SQLQuery2_2 =  @SQLQuery2_2 + ' AND DTL.decUnAllocatedAmt <> 0'
		SET @SQLQuery3_2 =  @SQLQuery3_2 + ' AND DTL.decUnAllocatedAmt <> 0'
	END
	IF @optJournalRange_IsChecked = 1
	BEGIN
		SET @SQLQuery1_2 = @SQLQuery1_2 + ' AND HDR.lngJourID BETWEEN ''' + CONVERT(NVARCHAR(50),@SQJourStart) + ''' AND ''' + CONVERT(NVARCHAR(50),@SQJourEnd) + ''''
		SET @SQLQuery2_2 = @SQLQuery2_2 + ' AND HDR.lngJourID BETWEEN ''' + CONVERT(NVARCHAR(50),@SQJourStart) + ''' AND ''' + CONVERT(NVARCHAR(50),@SQJourEnd) + ''''
		SET @SQLQuery3_2 = @SQLQuery3_2 + ' AND HDR.lngJourID BETWEEN ''' + CONVERT(NVARCHAR(50),@SQJourStart) + ''' AND ''' + CONVERT(NVARCHAR(50),@SQJourEnd) + ''''
	END
	IF @optSortDate_IsChecked = 1 
	BEGIN
		SET @SQLQuery1_2 = @SQLQuery1_2 + ' ORDER BY HDR.dteJournalDate, HDR.lngJourID'
		SET @SQLQuery2_2 = @SQLQuery2_2 + ' ORDER BY HDR.dteJournalDate, HDR.lngJourID'
		SET @SQLQuery3_2 = @SQLQuery3_2 + ' ORDER BY HDR.dteJournalDate, HDR.lngJourID'
	END
	ELSE
	BEGIN
		SET @SQLQuery1_2 = @SQLQuery1_2 + ' ORDER BY HDR.lngJourID, HDR.dteJournalDate'
		SET @SQLQuery2_2 = @SQLQuery2_2 + ' ORDER BY HDR.lngJourID, HDR.dteJournalDate'
		SET @SQLQuery3_2 = @SQLQuery3_2 + ' ORDER BY HDR.lngJourID, HDR.dteJournalDate'
	END

	SET @SQLQuery1_3 = @SQLQuery1_1 + @SQLQuery1_2
	SET @SQLQuery2_3 = @SQLQuery2_1 + @SQLQuery2_2
	SET @SQLQuery3_3 = @SQLQuery3_1 + @SQLQuery3_2

	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		INSERT INTO #Temp3
		EXECUTE sp_executesql @SQLQuery1_3, @ParameterDefinition, @SQModule, @SQJourStart, @SQJourEnd, @SQEnd,@SQStart
	END
	IF @optPreviousYear_IsChecked = 1
	BEGIN
		INSERT INTO #Temp3
		EXECUTE sp_executesql @SQLQuery2_3, @ParameterDefinition, @SQModule, @SQJourStart, @SQJourEnd, @SQEnd,@SQStart
	END
	IF @optHistoryYear_IsChecked = 1 
	BEGIN
				
		INSERT INTO #Temp3
		EXECUTE sp_executesql @SQLQuery3_3, @ParameterDefinition, @SQModule, @SQJourStart, @SQJourEnd, @SQEnd,@SQStart, @SQuidYearID
	END
			
	INSERT INTO #tmpGENERAL(Group1 ,AcctType ,Account ,Description ,Date ,Comment ,Source ,Journal,Debits ,Credits, Amount, Currency, Exchange, DebitsF, CreditsF, AmountF) 
	(
		SELECT @intGroupNumber, AccType,Account,[Description],dteJournalDate,NEWCOLUMN1,
		CASE WHEN LEN(NEWCOLUMN2) > 0 
			THEN NEWCOLUMN2 
		ELSE 
			CASE WHEN strSource = 'Stock Count'
				THEN (CASE WHEN @optCurrentYear_IsChecked = 1 
						   THEN ISNULL((SELECT ISNULL(CONCAT('SC/',strAdjDocID), tblJournal.strSource) FROM tblInvAdjDoc INNER JOIN tblJournal ON tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate AND tblInvAdjDoc.lngJourID = tblJournal.lngJourID WHERE (#Temp3.lngJourID = tblJournal.lngJourID) AND (#Temp3.dteJournalDate = tblInvAdjDoc.dteJournalDate)), strSource)
						   ELSE CASE WHEN @optPreviousYear_IsChecked = 1 
									 THEN ISNULL((SELECT ISNULL(CONCAT('SC/',strAdjDocID), tblJournalLY.strSource) FROM tblInvAdjDoc INNER JOIN tblJournalLY ON tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate AND tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID WHERE (#Temp3.lngJourID = tblJournalLY.lngJourID) AND (#Temp3.dteJournalDate = tblInvAdjDoc.dteJournalDate)), strSource)
									 ELSE ISNULL((SELECT ISNULL(CONCAT('SC/',strAdjDocID), tblJournalHist.strSource) FROM tblInvAdjDoc INNER JOIN tblJournalHist ON tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate AND tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID WHERE (#Temp3.lngJourID = tblJournalHist.lngJourID) AND (tblJournalHist.uidYearID = @SQuidYearID) AND (#Temp3.dteJournalDate = tblInvAdjDoc.dteJournalDate)), strSource)
							    END
					  END)
			ELSE
				strSource
			END
		END 
		, lngJourID, 
		CASE 
			WHEN @chkShowUnallocOnly_IsChecked = 1 THEN
				CASE WHEN decDebits > 0 THEN ABS(decUnAllocatedAmt) ELSE ABS(decDebits) END						
			ELSE
				decDebits
		END,
		CASE 
			WHEN @chkShowUnallocOnly_IsChecked = 1 THEN	
				CASE WHEN decCredits > 0 THEN ABS(decUnAllocatedAmt) ELSE ABS(decCredits) END
			ELSE
				decCredits
		END,
		CASE 
			WHEN @chkShowUnallocOnly_IsChecked = 1 THEN	
				decUnAllocatedAmt
			ELSE
				decAmount
					
		END,
		strCurrency,
		decExchange,
		decDebitsF,
		decCreditsF,
		decAmountF
		FROM #Temp3
	)

	IF @optSortDate_IsChecked = 1 
		BEGIN
			IF @SQOmitClosingBal = 1
			BEGIN
				SELECT * FROM #tmpGENERAL WHERE Account IN (SELECT DISTINCT TMP.Account FROM #tmpGENERAL TMP WHERE TMP.Amount <> 0 OR TMP.AmountF <> 0) ORDER BY Account, Date, ID
			END
			ELSE
			BEGIN
				SELECT * FROM #tmpGENERAL ORDER BY Account, Date, ID
			END
		END
	ELSE
		BEGIN
			IF @SQOmitClosingBal = 1
			BEGIN
				SELECT * FROM #tmpGENERAL WHERE Account IN (SELECT DISTINCT TMP.Account FROM #tmpGENERAL TMP WHERE TMP.Amount <> 0 OR TMP.AmountF <> 0) ORDER BY Account, ID
			END
			ELSE
			BEGIN
				SELECT * FROM #tmpGENERAL ORDER BY Account, ID
			END
		END

	DROP TABLE #Temp
	DROP TABLE #Temp2
	DROP TABLE #Temp3
	DROP TABLE #tmpGENERAL
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptGeneralRefreshForm_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptGeneralRefreshForm_1]
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@optHistoryYear_IsChecked AS BIT,
@oAcctSec_GLAccountAccess AS BIT,
@chkInactive_IsChecked AS BIT,
@SQstrUserName AS NVARCHAR(200),
@SQSearchBy AS NVARCHAR(MAX),
@SQuidYearID AS UNIQUEIDENTIFIER
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		IF @oAcctSec_GLAccountAccess = 1
		BEGIN
			IF @chkInactive_IsChecked = 0
			BEGIN
				SELECT intGLNumber, strDesc, 0, '' FROM tblAccounts WHERE bitLinkCEarnings = 0 AND intGroupCode < 3 AND bitInactive = 0 AND (intGLNumber LIKE @SQSearchBy OR strDesc LIKE @SQSearchBy) ORDER BY intGLNumber
			END
			ELSE
			BEGIN
				SELECT intGLNumber, strDesc, 0, '' FROM tblAccounts WHERE bitLinkCEarnings = 0 AND intGroupCode < 3 AND (intGLNumber LIKE @SQSearchBy OR strDesc LIKE @SQSearchBy) ORDER BY intGLNumber
			END
		END
		ELSE
		BEGIN
			IF @chkInactive_IsChecked = 0
			BEGIN
				SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0), ISNULL(tblAccountsSec.strUserName,'') FROM tblAccounts LEFT JOIN tblAccountsSec ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQstrUserName WHERE tblAccounts.bitLinkCEarnings = 0 AND tblAccounts.intGroupCode < 3 AND tblAccounts.bitInactive = 0 AND (tblAccounts.intGLNumber LIKE @SQSearchBy OR tblAccounts.strDesc LIKE @SQSearchBy) ORDER BY tblAccounts.intGLNumber
			END
			ELSE
			BEGIN
				SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0), ISNULL(tblAccountsSec.strUserName,'') FROM tblAccounts LEFT JOIN tblAccountsSec ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQstrUserName WHERE tblAccounts.bitLinkCEarnings = 0 AND tblAccounts.intGroupCode < 3 AND (tblAccounts.intGLNumber LIKE @SQSearchBy OR tblAccounts.strDesc LIKE @SQSearchBy) ORDER BY tblAccounts.intGLNumber
			END
		END
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		IF @oAcctSec_GLAccountAccess = 1
		BEGIN
			IF @chkInactive_IsChecked = 0
			BEGIN
				SELECT intGLNumber, strDesc, 0, '' FROM tblAccountsLY WHERE bitLinkCEarnings = 0 AND intGroupCode < 3 AND bitInactive = 0 AND (intGLNumber LIKE @SQSearchBy OR strDesc LIKE @SQSearchBy) ORDER BY intGLNumber
			END
			ELSE
			BEGIN
				SELECT intGLNumber, strDesc, 0, '' FROM tblAccountsLY WHERE bitLinkCEarnings = 0 AND intGroupCode < 3 AND (intGLNumber LIKE @SQSearchBy OR strDesc LIKE @SQSearchBy) ORDER BY intGLNumber
			END
		END
		ELSE
		BEGIN
			IF @chkInactive_IsChecked = 0
			BEGIN
				SELECT tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0), ISNULL(tblAccountsSec.strUserName,'') FROM tblAccountsLY LEFT JOIN tblAccountsSec ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQstrUserName WHERE tblAccountsLY.bitLinkCEarnings = 0 AND tblAccountsLY.intGroupCode < 3 AND tblAccountsLY.bitInactive = 0 AND (tblAccountsLY.intGLNumber LIKE @SQSearchBy OR tblAccountsLY.strDesc LIKE @SQSearchBy) ORDER BY tblAccountsLY.intGLNumber
			END
			ELSE
			BEGIN
				SELECT tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0), ISNULL(tblAccountsSec.strUserName,'') FROM tblAccountsLY LEFT JOIN tblAccountsSec ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQstrUserName WHERE tblAccountsLY.bitLinkCEarnings = 0 AND tblAccountsLY.intGroupCode < 3 AND (tblAccountsLY.intGLNumber LIKE @SQSearchBy OR tblAccountsLY.strDesc LIKE @SQSearchBy) ORDER BY tblAccountsLY.intGLNumber
			END
		END
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		IF @oAcctSec_GLAccountAccess = 1
		BEGIN
			IF @chkInactive_IsChecked = 0
			BEGIN
				SELECT intGLNumber, strDesc, 0, '' FROM tblAccountsHist WHERE bitLinkCEarnings = 0 AND intGroupCode < 3 AND uidYearID = @SQuidYearID AND bitInactive = 0 AND (intGLNumber LIKE @SQSearchBy OR strDesc LIKE @SQSearchBy) ORDER BY intGLNumber
			END
			ELSE
			BEGIN
				SELECT intGLNumber, strDesc, 0, '' FROM tblAccountsHist WHERE bitLinkCEarnings = 0 AND intGroupCode < 3 AND uidYearID = @SQuidYearID AND (intGLNumber LIKE @SQSearchBy OR strDesc LIKE @SQSearchBy) ORDER BY intGLNumber
			END
		END
		ELSE
		BEGIN
			IF @chkInactive_IsChecked = 0
			BEGIN
				SELECT tblAccountsHist.intGLNumber, tblAccountsHist.strDesc, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec WHERE tblAccountsSec.intGLNumber = tblAccountsHist.intGLNumber),0), ISNULL(tblAccountsSec.strUserName,'') FROM tblAccountsHist LEFT JOIN tblAccountsSec ON tblAccountsHist.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQstrUserName WHERE tblAccountsHist.bitLinkCEarnings = 0 AND tblAccountsHist.intGroupCode < 3 AND tblAccountsHist.uidYearID = @SQuidYearID AND tblAccountsHist.bitInactive = 0 AND (tblAccountsHist.intGLNumber LIKE @SQSearchBy OR tblAccountsHist.strDesc LIKE @SQSearchBy) ORDER BY tblAccountsHist.intGLNumber
			END
			ELSE
			BEGIN
				SELECT tblAccountsHist.intGLNumber, tblAccountsHist.strDesc, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec WHERE tblAccountsSec.intGLNumber = tblAccountsHist.intGLNumber),0), ISNULL(tblAccountsSec.strUserName,'') FROM tblAccountsHist LEFT JOIN tblAccountsSec ON tblAccountsHist.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQstrUserName WHERE tblAccountsHist.bitLinkCEarnings = 0 AND tblAccountsHist.intGroupCode < 3 AND tblAccountsHist.uidYearID = @SQuidYearID AND (tblAccountsHist.intGLNumber LIKE @SQSearchBy OR tblAccountsHist.strDesc LIKE @SQSearchBy) ORDER BY tblAccountsHist.intGLNumber
			END
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptGLGeneralDptLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptGLGeneralDptLoadQuery_1]
	@SQAcct AS NVARCHAR(MAX),
	@SQDept AS INT,
	@SQuidYearID AS UNIQUEIDENTIFIER = NULL,
	@SQStart datetime = NULL,
	@SQEnd datetime = NULL,
	@SQdcnudExchange AS DECIMAL(18,2) = NULL,
	@optCurrentYear_IsChecked AS BIT = NULL,
	@optPreviousYear_IsChecked AS BIT = NULL,
	@optHistoryYear_IsChecked AS BIT = NULL,
	@optSortDate_IsChecked AS BIT = NULL
AS
BEGIN
	--SET @SQAcct = '1^D1~2^D2~3^D3'
	DECLARE @intAcct AS NVARCHAR(MAX)
	DECLARE @intGroupNumber AS INT = 0
	DECLARE @tbl_IMPORT TABLE
	(
		[strCOL01] [varchar](MAX) DEFAULT '',
		[strCOL02] [varchar](MAX) DEFAULT '',
		[strCOL03] [varchar](MAX) DEFAULT '',
		[strCOL04] [varchar](MAX) DEFAULT '',
		[strCOL05] [varchar](MAX) DEFAULT '',
		[strCOL06] [varchar](MAX) DEFAULT '',
		[strCOL07] [varchar](MAX) DEFAULT '',
		[strCOL08] [varchar](MAX) DEFAULT '',
		[strCOL09] [varchar](MAX) DEFAULT '',
		[strCOL10] [varchar](MAX) DEFAULT '',
		[strCOL11] [varchar](MAX) DEFAULT ''
	)
	--1.
	DECLARE @Acct_CUR CURSOR
	--2.
	SET @Acct_CUR = CURSOR 
	FOR SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@SQAcct, '~')
	--3.
	OPEN @Acct_CUR               
	--4.
	FETCH NEXT FROM @Acct_CUR
	INTO @intAcct
	WHILE @@FETCH_STATUS = 0
	BEGIN
		SET @intGroupNumber += 1
		
		DECLARE @intNewAcct AS NVARCHAR(MAX) = ''
		DECLARE @OldItemDescription AS NVARCHAR(MAX) = ''
		
		SELECT @intNewAcct = [VALUE] FROM (SELECT ROW_NUMBER() OVER(ORDER BY [Value]) AS ID, [Value] FROM [dbo].[fnSplitStringAsTable](@intAcct, '^')) X WHERE ID = 1
		SELECT @OldItemDescription = [VALUE] FROM (SELECT ROW_NUMBER() OVER(ORDER BY [Value]) AS ID, [Value] FROM [dbo].[fnSplitStringAsTable](@intAcct, '^')) X WHERE ID = 2
		
		DECLARE @decOpen AS DECIMAL(18,2) = 0.0
		DECLARE @decOpenBalance AS DECIMAL(18,2) = 0.0
		DECLARE @intAccType AS INT
		DECLARE @decAmount AS DECIMAL(18,2) = 0.0
		DECLARE @decEntries AS DECIMAL(18,2) = 0.0
		DECLARE @decBalForward AS DECIMAL(18,4) = 0.0
		
		IF @optCurrentYear_IsChecked = 1
			SELECT @decOpenBalance = decOpenBalance, @intAccType = (SELECT intAccType FROM tblAccounts WHERE intGLNumber = tblAccountsDept.intGLNumber) FROM tblAccountsDept WHERE intGLNumber = @intNewAcct AND intDept = @SQDept
		ELSE IF @optPreviousYear_IsChecked = 1
			SELECT @decOpenBalance = decOpenBalance, @intAccType = (SELECT intAccType FROM tblAccountsLY WHERE intGLNumber = tblAccountsDeptLY.intGLNumber) FROM tblAccountsDeptLY WHERE intGLNumber = @intNewAcct AND intDept = @SQDept
		ELSE IF @optHistoryYear_IsChecked = 1
			SELECT @decOpenBalance = decOpenBalance, @intAccType = (SELECT intAccType FROM tblAccountsHist WHERE intGLNumber = tblAccountsDeptHist.intGLNumber AND uidYearID = tblAccountsDeptHist.uidYearID) FROM tblAccountsDeptHist WHERE intGLNumber = @intNewAcct AND intDept = @SQDept AND uidYearID = @SQuidYearID

		SET @decOpen = ISNULL(@decOpenBalance, 0) / @SQdcnudExchange
		

		IF @optCurrentYear_IsChecked = 1
			SELECT @decAmount = ISNULL(SUM(tblJournalEnt.decAmount),0) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate < @SQStart) AND (tblJournalEnt.intGLNumber = @intNewAcct) AND (tblJournalEnt.intDept = @SQDept)
		ELSE IF @optPreviousYear_IsChecked = 1
			SELECT @decAmount = ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate < @SQStart) AND (tblJournalEntLY.intGLNumber = @intNewAcct) AND (tblJournalEntLY.intDept = @SQDept)
		ELSE IF @optHistoryYear_IsChecked = 1
			SELECT @decAmount = ISNULL(SUM(tblJournalEntHist.decAmount),0) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate < @SQStart) AND (tblJournalEntHist.intGLNumber = @intNewAcct) AND (tblJournalEntHist.intDept = @SQDept) AND (tblJournalEntHist.uidYearID = @SQuidYearID)

		
		SET @decEntries = @decAmount / @SQdcnudExchange
		SET @decBalForward = @decOpen + @decEntries
		
		--ADD TO TEMP TABLE START
		INSERT INTO @tbl_IMPORT VALUES
		(
			 CONVERT(NVARCHAR(MAX), @intGroupNumber)					-- [strCOL01]
			,CONVERT(NVARCHAR(MAX), ISNULL(@intAccType, ''))			-- [strCOL02]
			,CONVERT(NVARCHAR(MAX), ISNULL(@intNewAcct, ''))			-- [strCOL03]
			,CONVERT(NVARCHAR(MAX), ISNULL(@OldItemDescription, ''))	-- [strCOL04]
			,CONVERT(NVARCHAR(MAX), @SQStart)							-- [strCOL05]
			,CONVERT(NVARCHAR(MAX), 'Balance Forward')					-- [strCOL06]
			,CONVERT(NVARCHAR(MAX), ' ')								-- [strCOL07]
			,CONVERT(NVARCHAR(MAX), '0')								-- [strCOL08]
			,CONVERT(NVARCHAR(MAX), '0')								-- [strCOL09]
			,CONVERT(NVARCHAR(MAX), '0')								-- [strCOL10]
			,CONVERT(NVARCHAR(MAX), @decBalForward)						-- [strCOL11]
		)
		--ADD TO TEMP TABLE END
		
		IF @optSortDate_IsChecked = 1
		BEGIN
			IF @optCurrentYear_IsChecked = 1
				BEGIN
					INSERT INTO @tbl_IMPORT 
					SELECT	CONVERT(NVARCHAR(MAX), @intGroupNumber), 
							CONVERT(NVARCHAR(MAX), ISNULL(@intAccType, '')), 
							CONVERT(NVARCHAR(MAX), ISNULL(@intNewAcct, '')), 
							CONVERT(NVARCHAR(MAX), ISNULL(@OldItemDescription, '')), 
							tblJournal.dteJournalDate, 
							tblJournal.strComment, 
							tblJournal.strSource, 
							tblJournal.lngJourID, 
							CONVERT(NVARCHAR(MAX), ISNULL(tblJournalEnt.decDebits / @SQdcnudExchange, 0)), 
							CONVERT(NVARCHAR(MAX), ISNULL(tblJournalEnt.decCredits / @SQdcnudExchange, 0)), 
							CONVERT(NVARCHAR(MAX), ISNULL(tblJournalEnt.decAmount / @SQdcnudExchange, 0)) 
					FROM tblJournal 
					INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID 
					WHERE (tblJournal.dteJournalDate >= @SQStart) 
					AND (tblJournal.dteJournalDate <= @SQEnd) 
					AND (tblJournalEnt.intGLNumber = @intNewAcct) 
					AND (tblJournalEnt.intDept = @SQDept) 
					ORDER BY tblJournal.dteJournalDate
				END
			ELSE IF @optPreviousYear_IsChecked = 1
				BEGIN
					INSERT INTO @tbl_IMPORT 
					SELECT	CONVERT(NVARCHAR(MAX), @intGroupNumber), 
							CONVERT(NVARCHAR(MAX), ISNULL(@intAccType, '')), 
							CONVERT(NVARCHAR(MAX), ISNULL(@intNewAcct, '')), 
							CONVERT(NVARCHAR(MAX), ISNULL(@OldItemDescription, '')), 
							tblJournalLY.dteJournalDate, 
							tblJournalLY.strComment, 
							tblJournalLY.strSource, 
							tblJournalLY.lngJourID, 
							CONVERT(NVARCHAR(MAX), ISNULL(tblJournalEntLY.decDebits / @SQdcnudExchange, 0)), 
							CONVERT(NVARCHAR(MAX), ISNULL(tblJournalEntLY.decCredits / @SQdcnudExchange, 0)), 
							CONVERT(NVARCHAR(MAX), ISNULL(tblJournalEntLY.decAmount / @SQdcnudExchange, 0)) 
					FROM tblJournalLY 
					INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID 
					WHERE (tblJournalLY.dteJournalDate >= @SQStart) 
					AND (tblJournalLY.dteJournalDate <= @SQEnd) 
					AND (tblJournalEntLY.intGLNumber = @intNewAcct) 
					AND (tblJournalEntLY.intDept = @SQDept) 
					ORDER BY tblJournalLY.dteJournalDate
				END
			ELSE IF @optHistoryYear_IsChecked = 1
				BEGIN
					INSERT INTO @tbl_IMPORT 
					SELECT	CONVERT(NVARCHAR(MAX), @intGroupNumber), 
							CONVERT(NVARCHAR(MAX), ISNULL(@intAccType, '')), 
							CONVERT(NVARCHAR(MAX), ISNULL(@intNewAcct, '')), 
							CONVERT(NVARCHAR(MAX), ISNULL(@OldItemDescription, '')), 
							tblJournalHist.dteJournalDate,
							tblJournalHist.strComment, 
							tblJournalHist.strSource, 
							tblJournalHist.lngJourID, 
							CONVERT(NVARCHAR(MAX), ISNULL(tblJournalEntHist.decDebits / @SQdcnudExchange, 0)), 
							CONVERT(NVARCHAR(MAX), ISNULL(tblJournalEntHist.decCredits / @SQdcnudExchange, 0)), 
							CONVERT(NVARCHAR(MAX), ISNULL(tblJournalEntHist.decAmount / @SQdcnudExchange, 0)) 
					FROM tblJournalHist 
					INNER JOIN tblJournalEntHist ON tblJournalHist.lngJourID = tblJournalEntHist.lngJourID 
												 AND tblJournalHist.uidYearID = tblJournalEntHist.uidYearID 
					WHERE (tblJournalHist.dteJournalDate >= @SQStart) 
					AND (tblJournalHist.dteJournalDate <= @SQEnd) 
					AND (tblJournalHist.uidYearID = @SQuidYearID) 
					AND (tblJournalEntHist.intGLNumber = @intNewAcct) 
					AND (tblJournalEntHist.intDept = @SQDept) 
					ORDER BY tblJournalHist.dteJournalDate
				END
		END
		ELSE
		BEGIN
			IF @optCurrentYear_IsChecked = 1
				BEGIN
					INSERT INTO @tbl_IMPORT 
					SELECT	CONVERT(NVARCHAR(MAX), @intGroupNumber), 
							CONVERT(NVARCHAR(MAX), ISNULL(@intAccType, '')), 
							CONVERT(NVARCHAR(MAX), ISNULL(@intNewAcct, '')), 
							CONVERT(NVARCHAR(MAX), ISNULL(@OldItemDescription, '')), 
							tblJournal.dteJournalDate,
							tblJournal.strComment, 
							tblJournal.strSource, 
							tblJournal.lngJourID, 
							CONVERT(NVARCHAR(MAX), ISNULL(tblJournalEnt.decDebits / @SQdcnudExchange, 0)), 
							CONVERT(NVARCHAR(MAX), ISNULL(tblJournalEnt.decCredits / @SQdcnudExchange, 0)), 
							CONVERT(NVARCHAR(MAX), ISNULL(tblJournalEnt.decAmount / @SQdcnudExchange, 0)) 
					FROM tblJournal 
					INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID 
					WHERE (tblJournal.dteJournalDate >= @SQStart) 
					AND (tblJournal.dteJournalDate <= @SQEnd) 
					AND (tblJournalEnt.intGLNumber = @intNewAcct) 
					AND (tblJournalEnt.intDept = @SQDept) 
					ORDER BY tblJournal.lngJourID
				END
			ELSE IF @optPreviousYear_IsChecked = 1
				BEGIN
					INSERT INTO @tbl_IMPORT 
					SELECT	CONVERT(NVARCHAR(MAX), @intGroupNumber), 
							CONVERT(NVARCHAR(MAX), ISNULL(@intAccType, '')), 
							CONVERT(NVARCHAR(MAX), ISNULL(@intNewAcct, '')), 
							CONVERT(NVARCHAR(MAX), ISNULL(@OldItemDescription, '')), 
							tblJournalLY.dteJournalDate,
							tblJournalLY.strComment, 
							tblJournalLY.strSource, 
							tblJournalLY.lngJourID, 
							CONVERT(NVARCHAR(MAX), ISNULL(tblJournalEntLY.decDebits / @SQdcnudExchange, 0)), 
							CONVERT(NVARCHAR(MAX), ISNULL(tblJournalEntLY.decCredits / @SQdcnudExchange, 0)), 
							CONVERT(NVARCHAR(MAX), ISNULL(tblJournalEntLY.decAmount / @SQdcnudExchange, 0)) 
					FROM tblJournalLY 
					INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID 
					WHERE (tblJournalLY.dteJournalDate >= @SQStart) 
					AND (tblJournalLY.dteJournalDate <= @SQEnd) 
					AND (tblJournalEntLY.intGLNumber = @intNewAcct) 
					AND (tblJournalEntLY.intDept = @SQDept) 
					ORDER BY tblJournalLY.lngJourID
				END
			ELSE IF @optHistoryYear_IsChecked = 1
				BEGIN
					INSERT INTO @tbl_IMPORT 
					SELECT	CONVERT(NVARCHAR(MAX), @intGroupNumber), 
							CONVERT(NVARCHAR(MAX), ISNULL(@intAccType, '')), 
							CONVERT(NVARCHAR(MAX), ISNULL(@intNewAcct, '')), 
							CONVERT(NVARCHAR(MAX), ISNULL(@OldItemDescription, '')), 
							tblJournalHist.dteJournalDate,
							tblJournalHist.strComment, 
							tblJournalHist.strSource, 
							tblJournalHist.lngJourID, 
							CONVERT(NVARCHAR(MAX), ISNULL(tblJournalEntHist.decDebits / @SQdcnudExchange, 0)), 
							CONVERT(NVARCHAR(MAX), ISNULL(tblJournalEntHist.decCredits / @SQdcnudExchange, 0)), 
							CONVERT(NVARCHAR(MAX), ISNULL(tblJournalEntHist.decAmount / @SQdcnudExchange, 0)) 
					FROM tblJournalHist 
					INNER JOIN tblJournalEntHist ON tblJournalHist.lngJourID = tblJournalEntHist.lngJourID 
												 AND tblJournalHist.uidYearID = tblJournalEntHist.uidYearID 
					WHERE (tblJournalHist.dteJournalDate >= @SQStart) 
					AND (tblJournalHist.dteJournalDate <= @SQEnd) 
					AND (tblJournalHist.uidYearID = @SQuidYearID) 
					AND (tblJournalEntHist.intGLNumber = @intNewAcct) 
					AND (tblJournalEntHist.intDept = @SQDept) 
					ORDER BY tblJournalHist.lngJourID
				END
		END

	FETCH NEXT FROM @Acct_CUR
	INTO @intAcct
	END
	--5.
	CLOSE @Acct_CUR
	--6.
	DEALLOCATE @Acct_CUR

	SELECT strCOL01
			,strCOL02
			,strCOL03
			,strCOL04
			,strCOL05
			,strCOL06
			,(CASE WHEN strCOL07 = 'Stock Count'
				THEN (
						CASE 
							WHEN (SELECT COUNT(strAdjDocID)
									FROM tblInvAdjDoc
									WHERE tblInvAdjDoc.lngJourID = T.strCOL08
									AND tblInvAdjDoc.dteJournalDate = T.strCOL05
									) = 0
							THEN 
								strCOL07
							ELSE (
									SELECT ISNULL(CONCAT ('SC/',strAdjDocID), strCOL07)
									FROM tblInvAdjDoc
									WHERE tblInvAdjDoc.lngJourID = T.strCOL08
									AND tblInvAdjDoc.dteJournalDate = T.strCOL05
									)
							END
						)
				ELSE strCOL07
			END
			)
			,strCOL08
			,strCOL09
			,strCOL10
			,strCOL11
	FROM @tbl_IMPORT As T

END
GO
/****** Object:  StoredProcedure [dbo].[SPRptGLGeneralDptLoadQuery_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptGLGeneralDptLoadQuery_2] @SQAcct AS NVARCHAR(MAX)
	,@SQDept AS NVARCHAR(MAX)
	,@SQYear AS NVARCHAR(MAX)
	,@SQuidYearID AS UNIQUEIDENTIFIER = NULL
	,@SQStart DATETIME = NULL
	,@SQDescription AS NVARCHAR(MAX)
	,@SQEnd DATETIME = NULL
	,@SQExchange DECIMAL(18, 2) = NULL
	,@SQGroupNumber INT = NULL
AS
BEGIN
	DECLARE @intGroupNumber AS INT = 0
	DECLARE @tbl_IMPORT TABLE (
		[strCOL01] [varchar](MAX) DEFAULT ''
		,[strCOL02] [varchar](MAX) DEFAULT ''
		,[strCOL03] [varchar](MAX) DEFAULT ''
		,[strCOL04] [varchar](MAX) DEFAULT ''
		,[strCOL05] [varchar](MAX) DEFAULT ''
		,[strCOL06] [varchar](MAX) DEFAULT ''
		,[strCOL07] [varchar](MAX) DEFAULT ''
		,[strCOL08] [varchar](MAX) DEFAULT ''
		,[strCOL09] [varchar](MAX) DEFAULT ''
		,[strCOL10] [varchar](MAX) DEFAULT ''
		,[strCOL11] [varchar](MAX) DEFAULT ''
		,[strCOL12] [varchar](MAX) DEFAULT ''
		)
	DECLARE @intAccType AS INT
	DECLARE @decOpen AS DECIMAL(18, 2) = 0.0
	DECLARE @decOpenBalance AS DECIMAL(18, 2) = 0.0
	DECLARE @decAmount AS DECIMAL(18, 2) = 0.0
	DECLARE @decEntries AS DECIMAL(18, 2) = 0.0
	DECLARE @decBalForward AS DECIMAL(18, 4) = 0.0

	PRINT @SQAcct

	IF @SQYear = 'Current'
		SELECT @decOpenBalance = decOpenBalance
			,@intAccType = (
				SELECT intAccType
				FROM tblAccounts
				WHERE intGLNumber = tblAccountsDept.intGLNumber
				)
		FROM tblAccountsDept
		WHERE intGLNumber = @SQAcct
			AND intDept IN (
				SELECT CAST(Value AS INT)
				FROM [fnSplitStringAsTable]((@SQDept), (','))
				) --= @SQDept
	ELSE IF @SQYear = 'Previous'
		SELECT @decOpenBalance = decOpenBalance
			,@intAccType = (
				SELECT intAccType
				FROM tblAccountsLY
				WHERE intGLNumber = tblAccountsDeptLY.intGLNumber
				)
		FROM tblAccountsDeptLY
		WHERE intGLNumber = @SQAcct
			AND intDept IN (
				SELECT CAST(Value AS INT)
				FROM [fnSplitStringAsTable]((@SQDept), (','))
				) --= @SQDept
	ELSE IF @SQYear = 'History'
		SELECT @decOpenBalance = decOpenBalance
			,@intAccType = (
				SELECT intAccType
				FROM tblAccountsHist
				WHERE intGLNumber = tblAccountsDeptHist.intGLNumber
					AND uidYearID = tblAccountsDeptHist.uidYearID
				)
		FROM tblAccountsDeptHist
		WHERE intGLNumber = @SQAcct
			AND intDept IN (
				SELECT CAST(Value AS INT)
				FROM [fnSplitStringAsTable]((@SQDept), (','))
				)
			AND uidYearID = @SQuidYearID

	SET @decOpen = ISNULL(@decOpenBalance, 0) / @SQExchange

	IF @SQYear = 'Current'
		SELECT @decAmount = ISNULL(SUM(tblJournalEnt.decAmount), 0)
		FROM tblJournalEnt
		INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
		WHERE (tblJournal.dteJournalDate < @SQStart)
			AND (tblJournalEnt.intGLNumber = @SQAcct)
			AND (
				tblJournalEnt.intDept IN (
					SELECT CAST(Value AS INT)
					FROM [fnSplitStringAsTable]((@SQDept), (','))
					)
				) --= @SQDept)
	ELSE IF @SQYear = 'Previous'
		SELECT @decAmount = ISNULL(SUM(tblJournalEntLY.decAmount), 0)
		FROM tblJournalEntLY
		INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
		WHERE (tblJournalLY.dteJournalDate < @SQStart)
			AND (tblJournalEntLY.intGLNumber = @SQAcct)
			AND (
				tblJournalEntLY.intDept IN (
					SELECT CAST(Value AS INT)
					FROM [fnSplitStringAsTable]((@SQDept), (','))
					)
				) --= @SQDept)
	ELSE IF @SQYear = 'History'
		SELECT @decAmount = ISNULL(SUM(tblJournalEntHist.decAmount), 0)
		FROM tblJournalEntHist
		INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID
			AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID
		WHERE (tblJournalHist.dteJournalDate < @SQStart)
			AND (tblJournalEntHist.intGLNumber = @SQAcct)
			AND (
				tblJournalEntHist.intDept IN (
					SELECT CAST(Value AS INT)
					FROM [fnSplitStringAsTable]((@SQDept), (','))
					)
				)
			AND (tblJournalEntHist.uidYearID = @SQuidYearID)

	SET @decEntries = @decAmount / @SQExchange
	SET @decBalForward = @decOpen + @decEntries

	--ADD TO TEMP TABLE START
	INSERT INTO @tbl_IMPORT
	VALUES (
		CONVERT(NVARCHAR(MAX), @SQGroupNumber) -- [strCOL01]
		,CONVERT(NVARCHAR(MAX), ISNULL(@intAccType, '')) -- [strCOL02]
		,CONVERT(NVARCHAR(MAX), ISNULL(@SQAcct, '')) -- [strCOL03]
		,CONVERT(NVARCHAR(MAX), ISNULL(@SQDescription, '')) -- [strCOL04]
		,CONVERT(NVARCHAR(MAX), @SQStart) -- [strCOL05]
		,CONVERT(NVARCHAR(MAX), 'Balance Forward') -- [strCOL06]
		,CONVERT(NVARCHAR(MAX), ' ') -- [strCOL07]
		,CONVERT(NVARCHAR(MAX), '0') -- [strCOL08]
		,CONVERT(NVARCHAR(MAX), '0') -- [strCOL09]
		,CONVERT(NVARCHAR(MAX), '0') -- [strCOL10]
		,CONVERT(NVARCHAR(MAX), @decBalForward) -- [strCOL11]
		,CONVERT(NVARCHAR(MAX), '') -- [strCOL12]
		)

	--ADD TO TEMP TABLE END
	IF @SQYear = 'Current'
	BEGIN
		IF (
				@SQStart IS NOT NULL
				AND @SQEnd IS NULL
				)
		BEGIN
			INSERT INTO @tbl_IMPORT
			SELECT CONVERT(NVARCHAR(MAX), @intGroupNumber)
				,CONVERT(NVARCHAR(MAX), ISNULL(@intAccType, ''))
				,CONVERT(NVARCHAR(MAX), ISNULL(@SQAcct, ''))
				,CONVERT(NVARCHAR(MAX), ISNULL(@SQDescription, ''))
				,tblJournal.dteJournalDate
				,tblJournal.strComment
				,tblJournal.strSource
				,tblJournal.lngJourID
				,CONVERT(NVARCHAR(MAX), tblJournalEnt.decDebits / @SQExchange)
				,CONVERT(NVARCHAR(MAX), tblJournalEnt.decCredits / @SQExchange)
				,CONVERT(NVARCHAR(MAX), tblJournalEnt.decAmount / @SQExchange)
				,(tblJournalEnt.intGLNumber + '/' + Cast(isnull(tblJournalEnt.intDept, 0) AS NVARCHAR(50))) AS strAcctDept
			FROM tblJournal
			INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
			INNER JOIN tblAccounts ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber
			WHERE (
					(
						(tblJournalEnt.intGLNumber + '/' + Cast(isnull(tblJournalEnt.intDept, 0) AS NVARCHAR(50))) IN (
							SELECT Value
							FROM [fnSplitStringAsTable]((@SQAcct), (','))
							)
						)
					)
				AND (tblJournal.dteJournalDate <= @SQStart)
			ORDER BY strAcctDept
				,tblJournal.dteJournalDate
		END
		ELSE IF (@SQEnd IS NOT NULL)
		BEGIN
			INSERT INTO @tbl_IMPORT
			SELECT CONVERT(NVARCHAR(MAX), @intGroupNumber)
				,CONVERT(NVARCHAR(MAX), ISNULL(@intAccType, ''))
				,CONVERT(NVARCHAR(MAX), ISNULL(@SQAcct, ''))
				,CONVERT(NVARCHAR(MAX), ISNULL(@SQDescription, ''))
				,tblJournal.dteJournalDate
				,tblJournal.strComment
				,tblJournal.strSource
				,tblJournal.lngJourID
				,CONVERT(NVARCHAR(MAX), tblJournalEnt.decDebits / @SQExchange)
				,CONVERT(NVARCHAR(MAX), tblJournalEnt.decCredits / @SQExchange)
				,CONVERT(NVARCHAR(MAX), tblJournalEnt.decAmount / @SQExchange)
				,(tblJournalEnt.intGLNumber + '/' + Cast(isnull(tblJournalEnt.intDept, 0) AS NVARCHAR(50))) AS strAcctDept
			FROM tblJournal
			INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
			INNER JOIN tblAccounts ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber
			WHERE (
					(
						(tblJournalEnt.intGLNumber + '/' + Cast(isnull(tblJournalEnt.intDept, 0) AS NVARCHAR(50))) IN (
							SELECT Value
							FROM [fnSplitStringAsTable]((@SQAcct), (','))
							)
						)
					)
				AND (
					tblJournal.dteJournalDate BETWEEN @SQStart
						AND @SQEnd
					)
			ORDER BY strAcctDept
				,tblJournal.dteJournalDate
		END
	END
	ELSE IF @SQYear = 'Previous'
	BEGIN
		IF (
				@SQStart IS NOT NULL
				AND @SQEnd IS NULL
				)
		BEGIN
			INSERT INTO @tbl_IMPORT
			SELECT CONVERT(NVARCHAR(MAX), @intGroupNumber)
				,CONVERT(NVARCHAR(MAX), ISNULL(@intAccType, ''))
				,CONVERT(NVARCHAR(MAX), ISNULL(@SQAcct, ''))
				,CONVERT(NVARCHAR(MAX), ISNULL(@SQDescription, ''))
				,tblJournalLY.dteJournalDate
				,tblJournalLY.strComment
				,tblJournalLY.strSource
				,tblJournalLY.lngJourID
				,CONVERT(NVARCHAR(MAX), tblJournalEntLY.decDebits / @SQExchange)
				,CONVERT(NVARCHAR(MAX), tblJournalEntLY.decCredits / @SQExchange)
				,CONVERT(NVARCHAR(MAX), tblJournalEntLY.decAmount / @SQExchange)
				,(tblJournalEntLY.intGLNumber + '/' + Cast(isnull(tblJournalEntLY.intDept, 0) AS NVARCHAR(50))) AS strAcctDept
			FROM tblJournalLY
			INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID
			INNER JOIN tblAccountsLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber
			WHERE (
					(
						(tblJournalEntLY.intGLNumber + '/' + Cast(isnull(tblJournalEntLY.intDept, 0) AS NVARCHAR(50))) IN (
							SELECT Value
							FROM [fnSplitStringAsTable]((@SQAcct), (','))
							)
						)
					)
				AND (tblJournalLY.dteJournalDate <= @SQStart)
			ORDER BY strAcctDept
				,tblJournalLY.dteJournalDate
		END
		ELSE IF (@SQEnd IS NOT NULL)
		BEGIN
			INSERT INTO @tbl_IMPORT
			SELECT CONVERT(NVARCHAR(MAX), @intGroupNumber)
				,CONVERT(NVARCHAR(MAX), ISNULL(@intAccType, ''))
				,CONVERT(NVARCHAR(MAX), ISNULL(@SQAcct, ''))
				,CONVERT(NVARCHAR(MAX), ISNULL(@SQDescription, ''))
				,tblJournalLY.dteJournalDate
				,tblJournalLY.strComment
				,tblJournalLY.strSource
				,tblJournalLY.lngJourID
				,CONVERT(NVARCHAR(MAX), tblJournalEntLY.decDebits / @SQExchange)
				,CONVERT(NVARCHAR(MAX), tblJournalEntLY.decCredits / @SQExchange)
				,CONVERT(NVARCHAR(MAX), tblJournalEntLY.decAmount / @SQExchange)
				,(tblJournalEntLY.intGLNumber + '/' + Cast(isnull(tblJournalEntLY.intDept, 0) AS NVARCHAR(50))) AS strAcctDept
			FROM tblJournalLY
			INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID
			INNER JOIN tblAccountsLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber
			WHERE (
					(
						(tblJournalEntLY.intGLNumber + '/' + Cast(isnull(tblJournalEntLY.intDept, 0) AS NVARCHAR(50))) IN (
							SELECT Value
							FROM [fnSplitStringAsTable]((@SQAcct), (','))
							)
						)
					)
				AND (
					tblJournalLY.dteJournalDate BETWEEN @SQStart
						AND @SQEnd
					)
			ORDER BY strAcctDept
				,tblJournalLY.dteJournalDate
		END
	END
	ELSE IF @SQYear = 'History'
	BEGIN
		IF (
				@SQStart IS NOT NULL
				AND @SQEnd IS NULL
				)
		BEGIN
			INSERT INTO @tbl_IMPORT
			SELECT CONVERT(NVARCHAR(MAX), @intGroupNumber)
				,CONVERT(NVARCHAR(MAX), ISNULL(@intAccType, ''))
				,CONVERT(NVARCHAR(MAX), ISNULL(@SQAcct, ''))
				,CONVERT(NVARCHAR(MAX), ISNULL(@SQDescription, ''))
				,tblJournalHist.dteJournalDate
				,tblJournalHist.strComment
				,tblJournalHist.strSource
				,tblJournalHist.lngJourID
				,CONVERT(NVARCHAR(MAX), tblJournalEntHist.decDebits / @SQExchange)
				,CONVERT(NVARCHAR(MAX), tblJournalEntHist.decCredits / @SQExchange)
				,CONVERT(NVARCHAR(MAX), tblJournalEntHist.decAmount / @SQExchange)
				,(tblJournalEntHist.intGLNumber + '/' + Cast(isnull(tblJournalEntHist.intDept, 0) AS NVARCHAR(50))) AS strAcctDept
			FROM tblJournalHist
			INNER JOIN tblJournalEntHist ON tblJournalHist.lngJourID = tblJournalEntHist.lngJourID
				AND tblJournalHist.uidYearID = tblJournalEntHist.uidYearID
			INNER JOIN tblAccountsHist ON tblAccountsHist.intGLNumber = tblJournalEntHist.intGLNumber
			WHERE (tblJournalHist.uidYearID = @SQuidYearID)
				AND (
					(
						(tblJournalEntHist.intGLNumber + '/' + Cast(isnull(tblJournalEntHist.intDept, 0) AS NVARCHAR(50))) IN (
							SELECT Value
							FROM [fnSplitStringAsTable]((@SQAcct), (','))
							)
						)
					)
				AND (tblJournalHist.dteJournalDate <= @SQStart)
			ORDER BY strAcctDept
				,tblJournalHist.dteJournalDate
		END
		ELSE IF (@SQEnd IS NOT NULL)
		BEGIN
			INSERT INTO @tbl_IMPORT
			SELECT CONVERT(NVARCHAR(MAX), @intGroupNumber)
				,CONVERT(NVARCHAR(MAX), ISNULL(@intAccType, ''))
				,CONVERT(NVARCHAR(MAX), ISNULL(@SQAcct, ''))
				,CONVERT(NVARCHAR(MAX), ISNULL(@SQDescription, ''))
				,tblJournalHist.dteJournalDate
				,tblJournalHist.strComment
				,tblJournalHist.strSource
				,tblJournalHist.lngJourID
				,CONVERT(NVARCHAR(MAX), tblJournalEntHist.decDebits / @SQExchange)
				,CONVERT(NVARCHAR(MAX), tblJournalEntHist.decCredits / @SQExchange)
				,CONVERT(NVARCHAR(MAX), tblJournalEntHist.decAmount / @SQExchange)
				,(tblJournalEntHist.intGLNumber + '/' + Cast(isnull(tblJournalEntHist.intDept, 0) AS NVARCHAR(50))) AS strAcctDept
			FROM tblJournalHist
			INNER JOIN tblJournalEntHist ON tblJournalHist.lngJourID = tblJournalEntHist.lngJourID
				AND tblJournalHist.uidYearID = tblJournalEntHist.uidYearID
			INNER JOIN tblAccountsHist ON tblAccountsHist.intGLNumber = tblJournalEntHist.intGLNumber
			WHERE (tblJournalHist.uidYearID = @SQuidYearID)
				AND (
					(
						(tblJournalEntHist.intGLNumber + '/' + Cast(isnull(tblJournalEntHist.intDept, 0) AS NVARCHAR(50))) IN (
							SELECT Value
							FROM [fnSplitStringAsTable]((@SQAcct), (','))
							)
						)
					)
				AND (
					tblJournalHist.dteJournalDate BETWEEN @SQStart
						AND @SQEnd
					)
			ORDER BY strAcctDept
				,tblJournalHist.dteJournalDate
		END
	END

	SELECT *
	FROM @tbl_IMPORT
END
GO

/****** Object:  StoredProcedure [dbo].[SPRptGLGeneralDptRefreshForm_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptGLGeneralDptRefreshForm_1]
	@optCurrentYear_IsChecked AS BIT,
	@optPreviousYear_IsChecked AS BIT,
	@optHistoryYear_IsChecked AS BIT,
	@optChkInactive AS BIT,
	@SQuidYearID AS UNIQUEIDENTIFIER,
	@SQDeptNumber AS INT
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		IF @optChkInactive = 0 
			SELECT intGLNumber, (SELECT strDesc FROM tblAccounts WHERE intGLNumber = tblAccountsDept.intGLNumber), intDept FROM tblAccountsDept WHERE intDept =@SQDeptNumber AND intGLNumber IN (SELECT intGLNumber FROM tblAccounts WHERE bitLinkCEarnings = 0 AND bitLinkREarnings = 0 AND intGroupCode < 3 AND bitInactive = 0) ORDER BY intGLNumber
		ELSE
			SELECT intGLNumber, (SELECT strDesc FROM tblAccounts WHERE intGLNumber = tblAccountsDept.intGLNumber), intDept FROM tblAccountsDept WHERE intDept =@SQDeptNumber AND intGLNumber IN (SELECT intGLNumber FROM tblAccounts WHERE bitLinkCEarnings = 0 AND bitLinkREarnings = 0 AND intGroupCode < 3) ORDER BY intGLNumber
	END
	ELSE IF @optPreviousYear_IsChecked = 1 
	BEGIN
		IF @optChkInactive = 0 
			SELECT intGLNumber, (SELECT strDesc FROM tblAccountsLY WHERE intGLNumber = tblAccountsDeptLY.intGLNumber), intDept FROM tblAccountsDeptLY WHERE intDept =@SQDeptNumber AND intGLNumber IN (SELECT intGLNumber FROM tblAccountsLY WHERE bitLinkCEarnings = 0 AND bitLinkREarnings = 0 AND intGroupCode < 3 AND bitInactive = 0) ORDER BY intGLNumber
		ELSE
			SELECT intGLNumber, (SELECT strDesc FROM tblAccountsLY WHERE intGLNumber = tblAccountsDeptLY.intGLNumber), intDept FROM tblAccountsDeptLY WHERE intDept =@SQDeptNumber AND intGLNumber IN (SELECT intGLNumber FROM tblAccountsLY WHERE bitLinkCEarnings = 0 AND bitLinkREarnings = 0 AND intGroupCode < 3) ORDER BY intGLNumber
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		IF @optChkInactive = 0 
			SELECT intGLNumber, (SELECT strDesc FROM tblAccountsHist WHERE intGLNumber = tblAccountsDeptHist.intGLNumber AND uidYearID = tblAccountsDeptHist.uidYearID), intDept FROM tblAccountsDeptHist WHERE intDept =@SQDeptNumber AND uidYearID = @SQuidYearID AND intGLNumber IN (SELECT intGLNumber FROM tblAccountsHist WHERE bitLinkCEarnings = 0 AND bitLinkREarnings = 0 AND intGroupCode < 3 AND uidYearID = @SQuidYearID AND bitInactive = 0) ORDER BY intGLNumber
		ELSE
			SELECT intGLNumber, (SELECT strDesc FROM tblAccountsHist WHERE intGLNumber = tblAccountsDeptHist.intGLNumber AND uidYearID = tblAccountsDeptHist.uidYearID), intDept FROM tblAccountsDeptHist WHERE intDept =@SQDeptNumber AND uidYearID = @SQuidYearID AND intGLNumber IN (SELECT intGLNumber FROM tblAccountsHist WHERE bitLinkCEarnings = 0 AND bitLinkREarnings = 0 AND intGroupCode < 3 AND uidYearID = @SQuidYearID) ORDER BY intGLNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptIncomeCompSetupLoadQuery_1_1]    Script Date: 26/06/2020 08:45:58 ******/


CREATE PROCEDURE [dbo].[SPRptIncomeCompSetupLoadQuery_1_1] 
(
@optCurrentYear1_IsChecked as bit, 
@optCurrentYear2_IsChecked as bit, 
@optPreviousYear1_IsChecked as bit, 
@optPreviousYear2_IsChecked as bit, 
@optHistoryYear1_IsChecked as bit, 
@optHistoryYear2_IsChecked as bit,
@CostOfGoodsSold as int,
@InterestExpense as int,
@IncomeTaxExpense as int,
@Revenue as int,
@Expense as int,
@OperatingRevenue as int,
@intOINum as nvarchar(200),
@SQuidYearID1 as uniqueidentifier, 
@SQuidYearID2 as uniqueidentifier
)
AS
BEGIN
IF @optCurrentYear1_IsChecked = 1 AND @optCurrentYear2_IsChecked = 1
BEGIN
SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, decOpenBalance, intAccClass, 
'GroupSeq' = CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 
WHEN intAccClass = @InterestExpense THEN 4 
WHEN intAccClass = @IncomeTaxExpense  THEN 5 
WHEN intAccType = @Revenue  AND intAccClass = @OperatingRevenue THEN 0 
WHEN intAccType = @Revenue THEN @intOINum
WHEN intAccType = @Expense THEN 3 
ELSE NULL END FROM tblAccounts WHERE (intAccType >= 4) ORDER BY GroupSeq, intAccType, intAccClass, intGLNumber
END
ELSE IF @optPreviousYear1_IsChecked = 1 AND @optPreviousYear2_IsChecked = 1
BEGIN
SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, decOpenBalance, intAccClass,
'GroupSeq' = CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 
WHEN intAccClass = @InterestExpense THEN 4 
WHEN intAccClass = @IncomeTaxExpense THEN 5 
WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0 
WHEN intAccType = @Revenue THEN @intOINum
WHEN intAccType = @Expense THEN 3 
ELSE NULL END FROM tblAccountsLY WHERE (intAccType >= 4) ORDER BY GroupSeq, intAccType, intAccClass, intGLNumber
END
ELSE IF @optHistoryYear1_IsChecked = 1 AND @optHistoryYear2_IsChecked = 1
BEGIN
SELECT tblAccountsHist.intGLNumber as intGLNumber, tblAccountsHist.strDesc as strDesc, tblAccountsHist.intAccType as intAccType, tblAccountsHist.intGroupCode as intGroupCode, tblAccountsHist.decOpenBalance as decOpenBalance, ISNULL(tblAccountsHist2.decOpenBalance,0) AS Expr1, ISNULL(tblAccountsHist.intAccClass, tblAccountsHist2.intAccClass) as intAccClass, 
'GroupSeq' = CASE WHEN ISNULL(tblAccountsHist.intAccClass, tblAccountsHist2.intAccClass) = @CostOfGoodsSold THEN 1 
WHEN ISNULL(tblAccountsHist.intAccClass, tblAccountsHist2.intAccClass) = @InterestExpense  THEN 4 
WHEN ISNULL(tblAccountsHist.intAccClass, tblAccountsHist2.intAccClass) = @IncomeTaxExpense THEN 5 
WHEN ISNULL(tblAccountsHist.intAccType, tblAccountsHist2.intAccType) = @Revenue AND ISNULL(tblAccountsHist.intAccClass, tblAccountsHist2.intAccClass) = @OperatingRevenue THEN 0 
WHEN ISNULL(tblAccountsHist.intAccType, tblAccountsHist2.intAccType) = @Revenue THEN @intOINum
WHEN ISNULL(tblAccountsHist.intAccType, tblAccountsHist2.intAccType) = @Expense THEN 3 
ELSE NULL END FROM tblAccountsHist LEFT OUTER JOIN tblAccountsHist AS tblAccountsHist2 ON tblAccountsHist.intGLNumber = tblAccountsHist2.intGLNumber AND tblAccountsHist2.uidYearID = @SQuidYearID2 WHERE (tblAccountsHist.intAccType >= 4) AND (tblAccountsHist.uidYearID = @SQuidYearID1) ORDER BY GroupSeq, intAccType, tblAccountsHist.intAccClass, intGLNumber
END
ELSE
BEGIN
IF @optCurrentYear1_IsChecked = 1 And @optPreviousYear2_IsChecked = 1 
BEGIN
SELECT tblAccounts.intGLNumber as intGLNumber, tblAccounts.strDesc as strDesc, tblAccounts.intAccType as intAccType, tblAccounts.intGroupCode as intGroupCode, tblAccounts.decOpenBalance as decOpenBalance, ISNULL(tblAccountsLY.decOpenBalance,0) AS Expr1, ISNULL(tblAccounts.intAccClass, tblAccountsLY.intAccClass) as intAccClass,
'GroupSeq' = CASE WHEN ISNULL(tblAccounts.intAccClass, tblAccountsLY.intAccClass) = @CostOfGoodsSold THEN 1 
WHEN ISNULL(tblAccounts.intAccClass, tblAccountsLY.intAccClass) = @InterestExpense THEN 4
WHEN ISNULL(tblAccounts.intAccClass, tblAccountsLY.intAccClass) = @IncomeTaxExpense THEN 5 
WHEN ISNULL(tblAccounts.intAccType, tblAccountsLY.intAccType) = @Revenue AND ISNULL(tblAccounts.intAccClass, tblAccountsLY.intAccClass) = @OperatingRevenue THEN 0 
WHEN ISNULL(tblAccounts.intAccType, tblAccountsLY.intAccType) = @Revenue THEN @intOINum
WHEN ISNULL(tblAccounts.intAccType, tblAccountsLY.intAccType) = @Expense THEN 3 
ELSE NULL END FROM tblAccounts LEFT OUTER JOIN tblAccountsLY ON tblAccounts.intGLNumber = tblAccountsLY.intGLNumber WHERE (tblAccounts.intAccType >= 4) 
ORDER BY GroupSeq, intAccType, tblAccounts.intAccClass, intGLNumber
END
ELSE IF @optPreviousYear1_IsChecked = 1 And @optCurrentYear2_IsChecked = 1
BEGIN
SELECT tblAccounts.intGLNumber as intGLNumber, tblAccounts.strDesc as strDesc, tblAccounts.intAccType as intAccType, tblAccounts.intGroupCode as intGroupCode, ISNULL(tblAccountsLY.decOpenBalance,0) AS Expr1, tblAccounts.decOpenBalance as decOpenBalance, ISNULL(tblAccounts.intAccClass, tblAccountsLY.intAccClass) as intAccClass,
'GroupSeq' = CASE WHEN ISNULL(tblAccounts.intAccClass, tblAccountsLY.intAccClass) = @CostOfGoodsSold THEN 1 
WHEN ISNULL(tblAccounts.intAccClass, tblAccountsLY.intAccClass) = @InterestExpense THEN 4 
WHEN ISNULL(tblAccounts.intAccClass, tblAccountsLY.intAccClass) = @IncomeTaxExpense THEN 5 
WHEN ISNULL(tblAccounts.intAccType, tblAccountsLY.intAccType) = @Revenue AND ISNULL(tblAccounts.intAccClass, tblAccountsLY.intAccClass) = @OperatingRevenue THEN 0 
WHEN ISNULL(tblAccounts.intAccType, tblAccountsLY.intAccType) = @Revenue THEN @intOINum
WHEN ISNULL(tblAccounts.intAccType, tblAccountsLY.intAccType) = @Expense THEN 3 
ELSE NULL END FROM tblAccounts LEFT OUTER JOIN tblAccountsLY ON tblAccounts.intGLNumber = tblAccountsLY.intGLNumber WHERE (tblAccounts.intAccType >= 4) ORDER BY GroupSeq, intAccType, tblAccounts.intAccClass, intGLNumber
END
ELSE IF @optCurrentYear1_IsChecked = 1 And @optHistoryYear2_IsChecked = 1
BEGIN
SELECT tblAccounts.intGLNumber as intGLNumber, tblAccounts.strDesc as strDesc, tblAccounts.intAccType as intAccType, tblAccounts.intGroupCode as intGroupCode, tblAccounts.decOpenBalance as decOpenBalance, ISNULL(tblAccountsHist.decOpenBalance,0) AS Expr1, ISNULL(tblAccounts.intAccClass, tblAccountsHist.intAccClass) as intAccClass,
'GroupSeq' = CASE WHEN ISNULL(tblAccounts.intAccClass, tblAccountsHist.intAccClass) = @CostOfGoodsSold THEN 1 
WHEN ISNULL(tblAccounts.intAccClass, tblAccountsHist.intAccClass) = @InterestExpense THEN 4 
WHEN ISNULL(tblAccounts.intAccClass, tblAccountsHist.intAccClass) = @IncomeTaxExpense THEN 5
WHEN ISNULL(tblAccounts.intAccType, tblAccountsHist.intAccType) = @Revenue AND ISNULL(tblAccounts.intAccClass, tblAccountsHist.intAccClass) = @OperatingRevenue THEN 0 
WHEN ISNULL(tblAccounts.intAccType, tblAccountsHist.intAccType) = @Revenue THEN @intOINum
WHEN ISNULL(tblAccounts.intAccType, tblAccountsHist.intAccType) = @Expense THEN 3 
ELSE NULL END FROM tblAccounts LEFT OUTER JOIN tblAccountsHist ON tblAccounts.intGLNumber = tblAccountsHist.intGLNumber AND tblAccountsHist.uidYearID = @SQuidYearID2 WHERE (tblAccounts.intAccType >= 4)
 ORDER BY GroupSeq, intAccType, tblAccounts.intAccClass, intGLNumber
END
ELSE IF @optHistoryYear1_IsChecked = 1 And @optCurrentYear2_IsChecked = 1
BEGIN
SELECT tblAccounts.intGLNumber as intGLNumber, tblAccounts.strDesc as strDesc, tblAccounts.intAccType as intAccType, tblAccounts.intGroupCode as intGroupCode, ISNULL(tblAccountsHist.decOpenBalance,0) AS Expr1, tblAccounts.decOpenBalance as decOpenBalance, ISNULL(tblAccounts.intAccClass, tblAccountsHist.intAccClass) as intAccClass,
'GroupSeq' = CASE WHEN ISNULL(tblAccounts.intAccClass, tblAccountsHist.intAccClass) = @CostOfGoodsSold THEN 1 
WHEN ISNULL(tblAccounts.intAccClass, tblAccountsHist.intAccClass) = @InterestExpense THEN 4 
WHEN ISNULL(tblAccounts.intAccClass, tblAccountsHist.intAccClass) = @IncomeTaxExpense THEN 5 
WHEN ISNULL(tblAccounts.intAccType, tblAccountsHist.intAccType) = @Revenue AND ISNULL(tblAccounts.intAccClass, tblAccountsHist.intAccClass) = @OperatingRevenue THEN 0 
WHEN ISNULL(tblAccounts.intAccType, tblAccountsHist.intAccType) = @Revenue THEN @intOINum
WHEN ISNULL(tblAccounts.intAccType, tblAccountsHist.intAccType) = @Expense THEN 3 
ELSE NULL END FROM tblAccounts LEFT OUTER JOIN tblAccountsHist ON tblAccounts.intGLNumber = tblAccountsHist.intGLNumber AND tblAccountsHist.uidYearID = @SQuidYearID1 WHERE (tblAccounts.intAccType >= 4) ORDER BY GroupSeq, intAccType, tblAccounts.intAccClass, intGLNumber
END
ELSE IF @optPreviousYear1_IsChecked = 1 And @optHistoryYear2_IsChecked = 1
BEGIN
SELECT tblAccountsLY.intGLNumber as intGLNumber, tblAccountsLY.strDesc as strDesc, tblAccountsLY.intAccType as intAccType, tblAccountsLY.intGroupCode as intGroupCode, ISNULL(tblAccountsLY.decOpenBalance,0), ISNULL(tblAccountsHist.decOpenBalance,0), ISNULL(tblAccountsLY.intAccClass, tblAccountsHist.intAccClass) as intAccClass
, 
'GroupSeq' = CASE WHEN ISNULL(tblAccountsLY.intAccClass, tblAccountsHist.intAccClass) = @CostOfGoodsSold THEN 1 
WHEN ISNULL(tblAccountsLY.intAccClass, tblAccountsHist.intAccClass) = @InterestExpense THEN 4 
WHEN ISNULL(tblAccountsLY.intAccClass, tblAccountsHist.intAccClass) = @IncomeTaxExpense THEN 5
WHEN ISNULL(tblAccountsLY.intAccType, tblAccountsHist.intAccType) = @Revenue AND ISNULL(tblAccountsLY.intAccClass, tblAccountsHist.intAccClass) = @OperatingRevenue THEN 0 
WHEN ISNULL(tblAccountsLY.intAccType, tblAccountsHist.intAccType) = @Revenue THEN @intOINum
WHEN ISNULL(tblAccountsLY.intAccType, tblAccountsHist.intAccType) = @Expense THEN 3 
ELSE NULL END FROM tblAccountsLY LEFT OUTER JOIN tblAccountsHist ON tblAccountsLY.intGLNumber = tblAccountsHist.intGLNumber AND tblAccountsHist.uidYearID = @SQuidYearID2 WHERE (tblAccountsLY.intAccType >= 4)
 ORDER BY GroupSeq, intAccType, tblAccountsLY.intAccClass, intGLNumber
END
ELSE IF @optHistoryYear1_IsChecked = 1 And @optPreviousYear2_IsChecked = 1
BEGIN
SELECT tblAccountsLY.intGLNumber as intGLNumber, tblAccountsLY.strDesc as strDesc, tblAccountsLY.intAccType as intAccType, tblAccountsLY.intGroupCode as intGroupCode, ISNULL(tblAccountsHist.decOpenBalance,0), ISNULL(tblAccountsLY.decOpenBalance,0), ISNULL(tblAccountsLY.intAccClass, tblAccountsHist.intAccClass) as intAccClass
, 
'GroupSeq' = CASE WHEN ISNULL(tblAccountsLY.intAccClass, tblAccountsHist.intAccClass) = @CostOfGoodsSold THEN 1 
WHEN ISNULL(tblAccountsLY.intAccClass, tblAccountsHist.intAccClass) = @InterestExpense THEN 4 
WHEN ISNULL(tblAccountsLY.intAccClass, tblAccountsHist.intAccClass) = @IncomeTaxExpense THEN 5
WHEN ISNULL(tblAccountsLY.intAccType, tblAccountsHist.intAccType) = @Revenue AND ISNULL(tblAccountsLY.intAccClass, tblAccountsHist.intAccClass) = @OperatingRevenue THEN 0 
WHEN ISNULL(tblAccountsLY.intAccType, tblAccountsHist.intAccType) = @Revenue THEN @intOINum
WHEN ISNULL(tblAccountsLY.intAccType, tblAccountsHist.intAccType) = @Expense THEN 3 
ELSE NULL END FROM tblAccountsLY LEFT OUTER JOIN tblAccountsHist ON tblAccountsLY.intGLNumber = tblAccountsHist.intGLNumber AND tblAccountsHist.uidYearID = @SQuidYearID1 
WHERE (tblAccountsLY.intAccType >= 4) 
ORDER BY GroupSeq, intAccType, tblAccountsLY.intAccClass, intGLNumber
END
END
END
GO

/****** Object:  StoredProcedure [dbo].[SPRptIncomeCompSetupLoadQuery_1_2]    Script Date: 26/06/2020 08:45:58 ******/

CREATE PROCEDURE [dbo].[SPRptIncomeCompSetupLoadQuery_1_2]
(
@optCurrentYear1_IsChecked AS BIT,
@optPreviousYear1_IsChecked AS BIT,
@optHistoryYear1_IsChecked AS BIT,
@SQStart AS DATE,
@SQFinish AS DATE,
@SQuidYearID AS UNIQUEIDENTIFIER
)
AS
BEGIN
	IF @optCurrentYear1_IsChecked = 1 
	BEGIN
		SELECT tblJournalEnt.intGLNumber, SUM(tblJournalEnt.decAmount) AS decAmount FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate >= @SQStart) AND (tblJournal.dteJournalDate <= @SQFinish) GROUP BY tblJournalEnt.intGLNumber
	END
	ELSE IF @optPreviousYear1_IsChecked = 1 
	BEGIN
		SELECT tblJournalEntLY.intGLNumber, SUM(tblJournalEntLY.decAmount) AS decAmount FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate >= @SQStart) AND (tblJournalLY.dteJournalDate <= @SQFinish) GROUP BY tblJournalEntLY.intGLNumber
	END
	ELSE IF @optHistoryYear1_IsChecked = 1 
	BEGIN
		SELECT tblJournalEntHist.intGLNumber, SUM(tblJournalEntHist.decAmount) AS decAmount FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate >= @SQStart) AND (tblJournalHist.dteJournalDate <= @SQFinish) AND (tblJournalEntHist.uidYearID = @SQuidYearID) GROUP BY tblJournalEntHist.intGLNumber
	END
END
GO


/****** Object:  StoredProcedure [dbo].[SPRptIncomeGPLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptIncomeGPLoadQuery_1] 
@optCurrentYear_IsChecked  bit,
	@optPreviousYear_IsChecked bit,
	@optHistoryYear_IsChecked bit,
	@SQuidYearID uniqueidentifier
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass FROM tblAccounts WHERE (intAccType >= 4) AND (intAccClass = 29 OR intAccClass = 30 OR intAccClass = 35 OR intAccClass = 36) ORDER BY intAccType, intAccClass, intGLNumber
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass FROM tblAccountsLY WHERE (intAccType >= 4) AND (intAccClass = 29 OR intAccClass = 30 OR intAccClass = 35 OR intAccClass = 36) ORDER BY intAccType, intAccClass, intGLNumber
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass FROM tblAccountsHist WHERE (intAccType >= 4) AND (uidYearID = @SQuidYearID) AND (intAccClass = 29 OR intAccClass = 30 OR intAccClass = 35 OR intAccClass = 36) ORDER BY intAccType, intAccClass, intGLNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptIncomeGPLoadQuery_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptIncomeGPLoadQuery_2]
@optCurrentYear_IsChecked  bit,
	@optPreviousYear_IsChecked bit,
	@optHistoryYear_IsChecked bit,
	@SQStart date,
	@SQFinish date,
	@SQuidYearID uniqueidentifier

AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		SELECT tblJournalEnt.intGLNumber, SUM(tblJournalEnt.decAmount) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate >= @SQStart) AND (tblJournal.dteJournalDate <= @SQFinish) GROUP BY tblJournalEnt.intGLNumber
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		SELECT tblJournalEntLY.intGLNumber, SUM(tblJournalEntLY.decAmount) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate >= @SQStart) AND (tblJournalLY.dteJournalDate <= @SQFinish) GROUP BY tblJournalEntLY.intGLNumber
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		SELECT tblJournalEntHist.intGLNumber, SUM(tblJournalEntHist.decAmount) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate >= @SQStart) AND (tblJournalHist.dteJournalDate <= @SQFinish) AND (tblJournalEntHist.uidYearID = @SQuidYearID) GROUP BY tblJournalEntHist.intGLNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptIncomeLoadQuery_1_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptIncomeLoadQuery_1_1]
	@optCurrentYear_IsChecked AS BIT,
	@optPreviousYear_IsChecked AS BIT,
	@optHistoryYear_IsChecked AS BIT,
	@SQuidYearID AS UNIQUEIDENTIFIER,
	@CostOfGoodsSold AS INT,
	@InterestExpense AS INT,
	@IncomeTaxExpense AS INT,
	@Revenue AS INT,
	@intOINum AS INT,
	@OperatingRevenue AS INT,
	@Expense AS INT
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
	SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass, 
                    'GroupSeq' = CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 
                    WHEN intAccClass = @InterestExpense THEN 4 
                    WHEN intAccClass = @IncomeTaxExpense THEN 5 
                    WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0 
                    WHEN intAccType = @Revenue THEN @intOINum
                    WHEN intAccType = @Expense THEN 3 
                    ELSE NULL END FROM tblAccounts WHERE (intAccType >= 4) ORDER BY GroupSeq, intAccType, intAccClass, intGLNumber
	END
	ELSE IF @optPreviousYear_IsChecked = 1 
	BEGIN
	SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass, 
                    'GroupSeq' = CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 
                    WHEN intAccClass = @InterestExpense THEN 4 
                    WHEN intAccClass = @IncomeTaxExpense THEN 5
                    WHEN intAccType = @Revenue AND intAccClass =@OperatingRevenue THEN 0 
                    WHEN intAccType = @Revenue THEN @intOINum
                    WHEN intAccType = @Expense THEN 3
                    ELSE NULL END FROM tblAccountsLY WHERE (intAccType >= 4) ORDER BY GroupSeq, intAccType, intAccClass, intGLNumber
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
	SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass, 
                    'GroupSeq' = CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 
                    WHEN intAccClass = @InterestExpense THEN 4 
                    WHEN intAccClass = @IncomeTaxExpense THEN 5 
                    WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0 
                    WHEN intAccType = @Revenue THEN @intOINum
                    WHEN intAccType = @Expense THEN 3 
                    ELSE NULL END FROM tblAccountsHist WHERE (intAccType >= 4) AND (uidYearID = @SQuidYearID) ORDER BY GroupSeq, intAccType, intAccClass, intGLNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptIncomeLoadQuery_1_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptIncomeLoadQuery_1_2] 
	@optCurrentYear_IsChecked AS BIT,
	@optPreviousYear_IsChecked AS BIT,
	@optHistoryYear_IsChecked AS BIT,
	@SQStart AS DATE,
	@SQFinish AS DATE,
	@SQuidYearID AS UNIQUEIDENTIFIER
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		SELECT tblJournalEnt.intGLNumber, SUM(tblJournalEnt.decAmount) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate >= @SQStart) AND (tblJournal.dteJournalDate <= @SQFinish) GROUP BY tblJournalEnt.intGLNumber
	END
	ELSE IF @optPreviousYear_IsChecked = 1 
	BEGIN
	SELECT tblJournalEntLY.intGLNumber, SUM(tblJournalEntLY.decAmount) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate >= @SQStart) AND (tblJournalLY.dteJournalDate <= @SQFinish) GROUP BY tblJournalEntLY.intGLNumber
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
	SELECT tblJournalEntHist.intGLNumber, SUM(tblJournalEntHist.decAmount) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate >= @SQStart) AND (tblJournalHist.dteJournalDate <= @SQFinish) AND (tblJournalEntHist.uidYearID = @SQuidYearID) GROUP BY tblJournalEntHist.intGLNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptIncomeMiniLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
CREATE PROCEDURE [dbo].[SPRptIncomeMiniLoadQuery_1]
@optCurrentYear_IsChecked  bit,
@optPreviousYear_IsChecked bit,
@optHistoryYear_IsChecked bit,
@SQuidYearID uniqueidentifier
AS
BEGIN
IF @optCurrentYear_IsChecked = 1 
BEGIN
SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass FROM tblAccounts WHERE (intAccType >= 4) ORDER BY intAccType, intAccClass, intGLNumber
END
ELSE IF @optPreviousYear_IsChecked = 1
BEGIN
SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass FROM tblAccountsLY WHERE (intAccType >= 4) ORDER BY intAccType, intAccClass, intGLNumber
END
ELSE IF @optHistoryYear_IsChecked = 1
BEGIN
SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass FROM tblAccountsHist WHERE (intAccType >= 4) AND (uidYearID = @SQuidYearID) ORDER BY intAccType, intAccClass, intGLNumber
END
END
GO

/****** Object:  StoredProcedure [dbo].[SPRptIncomeMiniLoadQuery_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptIncomeMiniLoadQuery_2]
	@optCurrentYear_IsChecked  bit,
	@optPreviousYear_IsChecked bit,
	@optHistoryYear_IsChecked bit,
	@SQuidYearID uniqueidentifier,
	@SQStart date,
	@SQFinish date
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		SELECT tblJournalEnt.intGLNumber, SUM(tblJournalEnt.decAmount) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate >= @SQStart) AND (tblJournal.dteJournalDate <= @SQFinish) GROUP BY tblJournalEnt.intGLNumber
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		SELECT tblJournalEntLY.intGLNumber, SUM(tblJournalEntLY.decAmount) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate >= @SQStart) AND (tblJournalLY.dteJournalDate <= @SQFinish) GROUP BY tblJournalEntLY.intGLNumber
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		SELECT tblJournalEntHist.intGLNumber, SUM(tblJournalEntHist.decAmount) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate >= @SQStart) AND (tblJournalHist.dteJournalDate <= @SQFinish) AND (tblJournalEntHist.uidYearID = @SQuidYearID) GROUP BY tblJournalEntHist.intGLNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptIncomeMiniRefreshForm_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SPRptIncomeMiniRefreshForm_1] 
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@optHistoryYear_IsChecked AS BIT,
@SQuidYearID AS UNIQUEIDENTIFIER,
@chkInactive_IsChecked AS BIT
AS
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN	
SELECT intGLNumber, strDesc FROM tblAccounts WHERE intAccType = 4 AND (intGroupCode = 1 OR intGroupCode = 2)
END
ELSE IF @optPreviousYear_IsChecked = 1
BEGIN
SELECT intGLNumber, strDesc FROM tblAccountsLY WHERE intAccType = 4 AND (intGroupCode = 1 OR intGroupCode = 2)
END
ELSE IF @optHistoryYear_IsChecked = 1
BEGIN
SELECT intGLNumber, strDesc FROM tblAccountsHist WHERE intAccType = 4 AND uidYearID = @SQuidYearID AND (intGroupCode = 1 OR intGroupCode = 2)
END
END
GO


/****** Object:  StoredProcedure [dbo].[SPRptIncomeMiniRefreshForm_2]    Script Date: 26/06/2020 08:45:58 ******/

CREATE PROCEDURE [dbo].[SPRptIncomeMiniRefreshForm_2]
@optCurrentYear_IsChecked  bit,
@optPreviousYear_IsChecked bit,
@optHistoryYear_IsChecked bit,
@SQuidYearID uniqueidentifier,
@chkInactive_IsChecked bit
AS
BEGIN
IF @optCurrentYear_IsChecked = 1 
BEGIN
SELECT intGLNumber, strDesc FROM tblAccounts WHERE intAccType = 5 AND (intGroupCode = 1 OR intGroupCode = 2)
END
ELSE IF @optPreviousYear_IsChecked = 1
BEGIN
SELECT intGLNumber, strDesc FROM tblAccountsLY WHERE intAccType = 5 AND (intGroupCode = 1 OR intGroupCode = 2)
END
ELSE IF @optHistoryYear_IsChecked = 1
BEGIN
IF @chkInactive_IsChecked = 0 
BEGIN
SELECT intGLNumber, strDesc FROM tblAccountsHist WHERE intAccType = 5 AND uidYearID = @SQuidYearID AND (intGroupCode = 1 OR intGroupCode = 2) AND bitInactive = 0
END
ELSE
BEGIN
SELECT intGLNumber, strDesc FROM tblAccountsHist WHERE intAccType = 5 AND uidYearID = @SQuidYearID AND (intGroupCode = 1 OR intGroupCode = 2)
END
END
END
GO


/****** Object:  StoredProcedure [dbo].[SPRptIncomeMultiLoadQuery_1_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptIncomeMultiLoadQuery_1_1] @optCurrentYear_IsChecked BIT
	,@optPreviousYear_IsChecked BIT
	,@optHistoryYear_IsChecked BIT
	,@SQStartAt DATE
	,@SQEndAt DATE
	,@SQuidYearID UNIQUEIDENTIFIER
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1
	BEGIN
		--ORDER BY DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate), tblAccounts.intGLNumber
			;

		WITH result1
		AS (
			SELECT tblAccounts.intGLNumber
				,tblAccounts.strDesc
				,tblAccounts.intAccType
				,DATEPART(yyyy, tblJournal.dteJournalDate) AS Year
				,DATEPART(m, tblJournal.dteJournalDate) AS Month
				,SUM(tblJournalEnt.decAmount) AS decAmount
				,tblAccounts.intAccClass
			FROM tblJournal
			INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
			INNER JOIN tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber
			WHERE (
					tblJournal.dteJournalDate BETWEEN @SQStartAt
						AND @SQEndAt
					)
				AND (tblAccounts.intAccType >= 4)
				AND (tblAccounts.intGroupCode < 3)
			GROUP BY tblAccounts.intGLNumber
				,tblAccounts.strDesc
				,tblAccounts.intAccType
				,DATEPART(yyyy, tblJournal.dteJournalDate)
				,DATEPART(m, tblJournal.dteJournalDate)
				,tblAccounts.intAccClass
			HAVING SUM(tblJournalEnt.decAmount) <> 0
			)
		SELECT *
		FROM result1
		
		UNION
		
		SELECT 'Cost' AS intGLNumber
			,'Of Sales' AS strDesc
			,6 AS intAccType
			,Result2.Year
			,Result2.Month
			,SUM(CASE 
					WHEN Result2.intAccType = 4
						THEN Result2.decAmount
					ELSE (Result2.decAmount * - 1)
					END) AS AmtFinal
			,- 1 AS intAccClass
		FROM (
			SELECT *
			FROM result1
			WHERE result1.intAccClass IN (
					30
					,35
					)
			) AS Result2
		GROUP BY Result2.Year
			,Result2.Month
		
		UNION
		
		SELECT 'Profit/Loss' AS intGLNumber
			,'after Interest & Tax' AS strDesc
			,7 AS intAccType
			,Result3.Year
			,Result3.Month
			,SUM(CASE 
					WHEN Result3.intAccType = 4
						THEN Result3.decAmount
					ELSE (Result3.decAmount * - 1)
					END) AS AmtFinal
			,- 2 AS intAccClass
		FROM (
			SELECT *
			FROM result1
			) AS Result3
		GROUP BY Result3.Year
			,Result3.Month
		ORDER BY Result1.Year
			,Result1.Month
			,intGLNumber
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		-- ORDER BY DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate), tblAccountsLY.intGLNumber
			;

		WITH result1
		AS (
			SELECT tblAccountsLY.intGLNumber
				,tblAccountsLY.strDesc
				,tblAccountsLY.intAccType
				,DATEPART(yyyy, tblJournalLY.dteJournalDate) AS Year
				,DATEPART(m, tblJournalLY.dteJournalDate) AS Month
				,SUM(tblJournalEntLY.decAmount) AS decAmount
				,tblAccountsLY.intAccClass
			FROM tblJournalLY
			INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID
			INNER JOIN tblAccountsLY ON tblJournalEntLY.intGLNumber = tblAccountsLY.intGLNumber
			WHERE (
					tblJournalLY.dteJournalDate BETWEEN @SQStartAt
						AND @SQEndAt
					)
				AND (tblAccountsLY.intAccType >= 4)
				AND (tblAccountsLY.intGroupCode < 3)
			GROUP BY tblAccountsLY.intGLNumber
				,tblAccountsLY.strDesc
				,tblAccountsLY.intAccType
				,DATEPART(yyyy, tblJournalLY.dteJournalDate)
				,DATEPART(m, tblJournalLY.dteJournalDate)
				,tblAccountsLY.intAccClass
			HAVING SUM(tblJournalEntLY.decAmount) <> 0
			)
		SELECT *
		FROM result1
		
		UNION
		
		SELECT 'Cost' AS intGLNumber
			,'Of Sales' AS strDesc
			,6 AS intAccType
			,Result2.Year
			,Result2.Month
			,SUM(CASE 
					WHEN Result2.intAccType = 4
						THEN Result2.decAmount
					ELSE (Result2.decAmount * - 1)
					END) AS AmtFinal
			,- 1 AS intAccClass
		FROM (
			SELECT *
			FROM result1
			WHERE result1.intAccClass IN (
					30
					,35
					)
			) AS Result2
		GROUP BY Result2.Year
			,Result2.Month
		
		UNION
		
		SELECT 'Profit/Loss' AS intGLNumber
			,'after Interest & Tax' AS strDesc
			,7 AS intAccType
			,Result3.Year
			,Result3.Month
			,SUM(CASE 
					WHEN Result3.intAccType = 4
						THEN Result3.decAmount
					ELSE (Result3.decAmount * - 1)
					END) AS AmtFinal
			,- 2 AS intAccClass
		FROM (
			SELECT *
			FROM result1
			) AS Result3
		GROUP BY Result3.Year
			,Result3.Month
		ORDER BY Result1.Year
			,Result1.Month
			,intGLNumber
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		-- ORDER BY DATEPART(yyyy, tblJournalHist.dteJournalDate), DATEPART(m,tblJournalHist.dteJournalDate), tblAccountsHist.intGLNumber
			;

		WITH result1
		AS (
			SELECT tblAccountsHist.intGLNumber
				,tblAccountsHist.strDesc
				,tblAccountsHist.intAccType
				,DATEPART(yyyy, tblJournalHist.dteJournalDate) AS Year
				,DATEPART(m, tblJournalHist.dteJournalDate) AS Month
				,SUM(tblJournalEntHist.decAmount) AS decAmount
				,tblAccountsHist.intAccClass
			FROM tblJournalHist
			INNER JOIN tblJournalEntHist ON tblJournalHist.lngJourID = tblJournalEntHist.lngJourID
				AND tblJournalHist.uidYearID = tblJournalEntHist.uidYearID
			INNER JOIN tblAccountsHist ON tblJournalEntHist.intGLNumber = tblAccountsHist.intGLNumber
				AND tblJournalEntHist.uidYearID = tblAccountsHist.uidYearID
			WHERE (
					tblJournalHist.dteJournalDate BETWEEN @SQStartAt
						AND @SQEndAt
					)
				AND (tblAccountsHist.intAccType >= 4)
				AND (tblAccountsHist.intGroupCode < 3)
				AND (tblJournalHist.uidYearID = @SQuidYearID)
			GROUP BY tblAccountsHist.intGLNumber
				,tblAccountsHist.strDesc
				,tblAccountsHist.intAccType
				,DATEPART(yyyy, tblJournalHist.dteJournalDate)
				,DATEPART(m, tblJournalHist.dteJournalDate)
				,tblAccountsHist.intAccClass
			HAVING SUM(tblJournalEntHist.decAmount) <> 0
			)
		SELECT *
		FROM result1
		
		UNION
		
		SELECT 'Cost' AS intGLNumber
			,'Of Sales' AS strDesc
			,6 AS intAccType
			,Result2.Year
			,Result2.Month
			,SUM(CASE 
					WHEN Result2.intAccType = 4
						THEN Result2.decAmount
					ELSE (Result2.decAmount * - 1)
					END) AS AmtFinal
			,- 1 AS intAccClass
		FROM (
			SELECT *
			FROM result1
			WHERE result1.intAccClass IN (
					30
					,35
					)
			) AS Result2
		GROUP BY Result2.Year
			,Result2.Month
		
		UNION
		
		SELECT 'Profit/Loss' AS intGLNumber
			,'after Interest & Tax' AS strDesc
			,7 AS intAccType
			,Result3.Year
			,Result3.Month
			,SUM(CASE 
					WHEN Result3.intAccType = 4
						THEN Result3.decAmount
					ELSE (Result3.decAmount * - 1)
					END) AS AmtFinal
			,- 2 AS intAccClass
		FROM (
			SELECT *
			FROM result1
			) AS Result3
		GROUP BY Result3.Year
			,Result3.Month
		ORDER BY Result1.Year
			,Result1.Month
			,intGLNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptIncomeMultiLoadQuery_1_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptIncomeMultiLoadQuery_1_2]
	@optCurrentYear_IsChecked  bit,
	@optPreviousYear_IsChecked bit,
	@optHistoryYear_IsChecked bit,
	@SQuidYearID uniqueidentifier,
	@SQStartAt date,
	@SQEndAt date
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		SELECT MIN(tblAccounts.intGLNumber), tblAccounts.intAccType, DATEPART(yyyy, tblJournal.dteJournalDate) AS Year, DATEPART(m,tblJournal.dteJournalDate) AS Month, SUM(tblJournalEnt.decAmount) FROM tblJournal INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID INNER JOIN tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber WHERE (tblJournal.dteJournalDate Between @SQStartAt and @SQEndAt) AND (tblAccounts.intAccType >= 4) AND (tblAccounts.intGroupCode < 3) GROUP BY tblAccounts.intAccType, DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate) HAVING SUM(tblJournalEnt.decAmount) <> 0 ORDER BY tblAccounts.intAccType, DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate)
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		SELECT MIN(tblAccountsLY.intGLNumber), tblAccountsLY.intAccType, DATEPART(yyyy, tblJournalLY.dteJournalDate) AS Year, DATEPART(m,tblJournalLY.dteJournalDate) AS Month, SUM(tblJournalEntLY.decAmount) FROM tblJournalLY INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID INNER JOIN tblAccountsLY ON tblJournalEntLY.intGLNumber = tblAccountsLY.intGLNumber WHERE (tblJournalLY.dteJournalDate Between @SQStartAt and @SQEndAt) AND (tblAccountsLY.intAccType >= 4) AND (tblAccountsLY.intGroupCode < 3) GROUP BY tblAccountsLY.intAccType, DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate) HAVING SUM(tblJournalEntLY.decAmount) <> 0 ORDER BY tblAccountsLY.intAccType, DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate)
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		SELECT MIN(tblAccountsHist.intGLNumber), tblAccountsHist.intAccType, DATEPART(yyyy, tblJournalHist.dteJournalDate) AS Year, DATEPART(m,tblJournalHist.dteJournalDate) AS Month, SUM(tblJournalEntHist.decAmount) FROM tblJournalHist INNER JOIN tblJournalEntHist ON tblJournalHist.lngJourID = tblJournalEntHist.lngJourID AND tblJournalHist.uidYearID = tblJournalEntHist.uidYearID INNER JOIN tblAccountsHist ON tblJournalEntHist.intGLNumber = tblAccountsHist.intGLNumber AND tblJournalEntHist.uidYearID = tblAccountsHist.uidYearID WHERE (tblJournalHist.dteJournalDate Between @SQStartAt and @SQEndAt) AND (tblAccountsHist.intAccType >= 4) AND (tblAccountsHist.intGroupCode < 3) AND (tblJournalHist.uidYearID = @SQuidYearID) GROUP BY tblAccountsHist.intAccType, DATEPART(yyyy, tblJournalHist.dteJournalDate), DATEPART(m,tblJournalHist.dteJournalDate) HAVING SUM(tblJournalEntHist.decAmount) <> 0 ORDER BY tblAccountsHist.intAccType, DATEPART(yyyy, tblJournalHist.dteJournalDate), DATEPART(m,tblJournalHist.dteJournalDate)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptJournalEntLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptJournalEntLoadQuery_1] @optCurrentYear_IsChecked AS BIT
	,@optPreviousYear_IsChecked AS BIT
	,@optHistoryYear_IsChecked AS BIT
	,@SQuidYearID AS UNIQUEIDENTIFIER
	,@SQStart AS DATE
	,@SQEnd AS DATE
	,@SQJourStart AS DECIMAL(18, 4)
	,@SQJourEnd AS DECIMAL(18, 4)
	,@optALL_IsChecked AS BIT
	,@optGeneral_IsChecked AS BIT
	,@optInventoryAdj_IsChecked AS BIT
	,@optPayments_IsChecked AS BIT
	,@optPurchases_IsChecked AS BIT
	,@optReceipts_IsChecked AS BIT
	,@optRecon_IsChecked AS BIT
	,@optSales_IsChecked AS BIT
	,@optRecPayJournal_IsChecked AS BIT
	,@aecjet_General AS INTEGER
	,@aecjet_InventoryAdjustments AS INTEGER
	,@aecjet_Payments AS INTEGER
	,@aecjet_PurchaseInvoices AS INTEGER
	,@aecjet_Receipts AS INTEGER
	,@aecjet_BankReconEntries AS INTEGER
	,@aecjet_SalesInvoices AS INTEGER
	,@aecjet_ReceiptPaymentJournal AS INTEGER
	,@optDateRange_IsChecked AS BIT
AS
BEGIN
	DECLARE @SQEntryType AS INTEGER
	DECLARE @SQLQuery AS NVARCHAR(MAX)
	DECLARE @ParameterDefinition AS NVARCHAR(MAX)

	IF @optGeneral_IsChecked = 1
	BEGIN
		SET @SQEntryType = @aecjet_General
	END
	ELSE IF @optInventoryAdj_IsChecked = 1
	BEGIN
		SET @SQEntryType = @aecjet_InventoryAdjustments
	END
	ELSE IF @optPayments_IsChecked = 1
	BEGIN
		SET @SQEntryType = @aecjet_Payments
	END
	ELSE IF @optPurchases_IsChecked = 1
	BEGIN
		SET @SQEntryType = @aecjet_PurchaseInvoices
	END
	ELSE IF @optReceipts_IsChecked = 1
	BEGIN
		SET @SQEntryType = @aecjet_Receipts
	END
	ELSE IF @optRecon_IsChecked = 1
	BEGIN
		SET @SQEntryType = @aecjet_BankReconEntries
	END
	ELSE IF @optSales_IsChecked = 1
	BEGIN
		SET @SQEntryType = @aecjet_SalesInvoices
	END
	ELSE IF @optRecPayJournal_IsChecked = 1
	BEGIN
		SET @SQEntryType = @aecjet_ReceiptPaymentJournal
	END

	IF @optCurrentYear_IsChecked = 1
	BEGIN
		SET @SQLQuery = 'SELECT tblJournal.dteJournalDate, tblJournal.lngJourID, ( CASE WHEN tblJournal.strSource = ''Stock Count'' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc 
  WHERE tblInvAdjDoc.lngJourID = tblJournal.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate) = 0 THEN tblJournal.strSource ELSE (SELECT ISNULL(CONCAT(''SC/'',strAdjDocID), tblJournal.strSource) 
  FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = tblJournal.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate) END) ELSE tblJournal.strSource END) AS strSource, tblJournalEnt.strComment, tblJournalEnt.intGLNumber, tblAccounts.strDesc, tblJournalEnt.decDebits, tblJournalEnt.decCredits, tblJournalEnt.strFormula FROM tblAccounts INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE'

		IF @optDateRange_IsChecked = 1
		BEGIN
			SET @SQLQuery = @SQLQuery + ' (tblJournal.dteJournalDate BETWEEN @SQStart AND @SQEnd)'
		END
		ELSE
		BEGIN
			SET @SQLQuery = @SQLQuery + ' (tblJournal.lngJourID >= @SQJourStart AND tblJournal.lngJourID <= @SQJourEnd)'
		END

		IF @optALL_IsChecked = 0
		BEGIN
			SET @SQLQuery = @SQLQuery + ' AND (tblJournal.intEntryType = @SQEntryType)'
		END

		SET @SQLQuery = @SQLQuery + ' ORDER BY tblJournal.lngJourID, tblJournalEnt.intGLNumber'
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		SET @SQLQuery = 'SELECT tblJournalLY.dteJournalDate, tblJournalLY.lngJourID, ( CASE WHEN tblJournalLY.strSource = ''Stock Count'' THEN( CASE WHEN ( SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc 
 WHERE tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate) = 0 THEN tblJournalLY.strSource ELSE ( SELECT ISNULL(CONCAT ( ''SC/'' ,strAdjDocID ), tblJournalLY.strSource) 
 FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate) END ) ELSE tblJournalLY.strSource END ) AS strSource, tblJournalEntLY.strComment, tblJournalEntLY.intGLNumber, tblAccountsLY.strDesc, tblJournalEntLY.decDebits, tblJournalEntLY.decCredits, 
 tblJournalEntLY.strFormula FROM tblAccountsLY INNER JOIN tblJournalEntLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE'

		IF @optDateRange_IsChecked = 1
		BEGIN
			SET @SQLQuery = @SQLQuery + ' (tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd)'
		END
		ELSE
		BEGIN
			SET @SQLQuery = @SQLQuery + ' (tblJournalLY.lngJourID >= @SQJourStart AND tblJournalLY.lngJourID <= @SQJourEnd)'
		END

		IF @optALL_IsChecked = 0
		BEGIN
			SET @SQLQuery = @SQLQuery + ' AND (tblJournalLY.intEntryType = @SQEntryType)'
		END

		SET @SQLQuery = @SQLQuery + ' ORDER BY tblJournalLY.lngJourID, tblJournalEntLY.intGLNumber'
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		SET @SQLQuery = 
			'SELECT tblJournalHist.dteJournalDate, tblJournalHist.lngJourID, ( CASE WHEN tblJournalHist.strSource = ''Stock Count'' THEN( CASE WHEN ( SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc 
 WHERE tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate) = 0 THEN tblJournalHist.strSource ELSE ( SELECT ISNULL(CONCAT ( ''SC/'' ,strAdjDocID ), tblJournalHist.strSource) FROM tblInvAdjDoc 
 WHERE tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate) END ) ELSE tblJournalHist.strSource END ) AS strSource, tblJournalEntHist.strComment, tblJournalEntHist.intGLNumber, tblAccountsHist.strDesc,
 tblJournalEntHist.decDebits, tblJournalEntHist.decCredits, tblJournalEntHist.strFormula FROM tblAccountsHist INNER JOIN tblJournalEntHist ON tblAccountsHist.intGLNumber = tblJournalEntHist.intGLNumber AND tblAccountsHist.uidYearID = tblJournalEntHist.uidYearID 
 INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE'

		IF @optDateRange_IsChecked = 1
		BEGIN
			SET @SQLQuery = @SQLQuery + ' (tblJournalHist.dteJournalDate BETWEEN @SQStart AND @SQEnd)'
		END
		ELSE
		BEGIN
			SET @SQLQuery = @SQLQuery + ' (tblJournalHist.lngJourID >= @SQJourStart AND tblJournalHist.lngJourID <= @SQJourEnd)'
		END

		IF @optALL_IsChecked = 0
		BEGIN
			SET @SQLQuery = @SQLQuery + ' AND (tblJournalHist.intEntryType = @SQEntryType)'
		END

		SET @SQLQuery = @SQLQuery + ' AND (tblJournalHist.uidYearID = @SQuidYearID) ORDER BY tblJournalHist.lngJourID, tblJournalEntHist.intGLNumber'
	END

	SET @ParameterDefinition = ' @SQStart Date,  
                @SQEnd Date,  
                @SQJourStart DECIMAL(18,4),  
                @SQJourEnd DECIMAL(18,4),  
                @SQEntryType Integer,  
                @SQuidYearID UniqueIdentifier'

	EXECUTE sp_executesql @SQLQuery
		,@ParameterDefinition
		,@SQStart
		,@SQEnd
		,@SQJourStart
		,@SQJourEnd
		,@SQEntryType
		,@SQuidYearID
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptListAccountsLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptListAccountsLoadQuery_1]
@rbCurrentYear_IsChecked BIT

AS
BEGIN
	IF @rbCurrentYear_IsChecked = 1
	BEGIN
		SELECT * FROM tblAccounts WHERE intAccClass <> 999
	END
	ELSE 
	BEGIN
		SELECT * FROM tblAccountsLY WHERE intAccClass <> 999
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptListBalSheetDeptLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptListBalSheetDeptLoadQuery_1]
(
@optCurrentYear_IsChecked BIT,
@optPreviousYear_IsChecked BIT,
@optHistoryYear_IsChecked BIT,
@SQuidYearID UNIQUEIDENTIFIER,
@SQDept NVARCHAR(MAX)
)
AS
BEGIN
 
	IF @optCurrentYear_IsChecked = 1
	BEGIN
		SELECT * FROM (SELECT tblAccounts.intGLNumber, strDesc, intAccType,intGroupCode,
		0 As decOpenBalanceDept,tblAccounts.decOpenBalance,intAccClass, 0 AS intDept
		FROM tblAccounts 
		UNION ALL
		SELECT tblAccounts.intGLNumber, strDesc, intAccType, intGroupCode, 
		--ISNULL((SELECT decOpenBalance FROM tblAccountsDept WHERE intGLNumber = tblAccounts.intGLNumber AND intDept = @SQDept),0), 
		ISNULL(tblAccountsDept.decOpenBalance,0),
		tblAccounts.decOpenBalance, intAccClass, intDept FROM tblAccounts 
		INNER JOIN tblAccountsDept ON tblAccounts.intGLNumber = tblAccountsDept.intGLNumber WHERE (intAccType < 4)) AS T
		WHERE ISNULL(intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(','))) 
		ORDER BY intGLNumber
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		SELECT * FROM (SELECT tblAccountsLY.intGLNumber, strDesc, intAccType,intGroupCode,
		0 As decOpenBalanceDept,tblAccountsLY.decOpenBalance,intAccClass, 0 AS intDept
		FROM tblAccountsLY 
		UNION ALL
		SELECT tblAccountsLY.intGLNumber, strDesc, intAccType, intGroupCode, 
		--ISNULL((SELECT decOpenBalance FROM tblAccountsDeptLY WHERE intGLNumber = tblAccountsLY.intGLNumber AND intDept = @SQDept),0), 
		ISNULL(tblAccountsDept.decOpenBalance,0),
		tblAccountsLY.decOpenBalance, intAccClass, intDept FROM tblAccountsLY 
		INNER JOIN tblAccountsDept ON tblAccountsLY.intGLNumber = tblAccountsDept.intGLNumber WHERE (intAccType < 4)) AS T
		WHERE ISNULL(intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(','))) ORDER BY intGLNumber
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		SELECT * FROM (SELECT tblAccountsHist.intGLNumber, strDesc, intAccType,intGroupCode,
		0 As decOpenBalanceDept,tblAccountsHist.decOpenBalance,intAccClass, 0 AS intDept
		FROM tblAccountsHist 
		UNION ALL
		SELECT tblAccountsHist.intGLNumber, strDesc, intAccType, intGroupCode, 
		--ISNULL((SELECT decOpenBalance FROM tblAccountsDeptHist WHERE intGLNumber = tblAccountsHist.intGLNumber AND intDept = @SQDept AND uidYearID = tblAccountsHist.uidYearID),0), 
		ISNULL(tblAccountsDept.decOpenBalance,0),
		tblAccountsHist.decOpenBalance, intAccClass, intDept FROM tblAccountsHist 
		INNER JOIN tblAccountsDept ON tblAccountsHist.intGLNumber = tblAccountsDept.intGLNumber AND uidYearID = tblAccountsHist.uidYearID 
		WHERE (intAccType < 4) AND (uidYearID = @SQuidYearID)) AS T
		WHERE ISNULL(intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(','))) ORDER BY intGLNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptListBalSheetDeptLoadQuery_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptListBalSheetDeptLoadQuery_2] 
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@optHistoryYear_IsChecked AS BIT,
@SQintoAccountLegendExp_GLNumberFrom AS INTEGER,
@SQintoAccountLegendRev_GLNumberTo  AS INTEGER,
@SQintoAccountLegendRev_GLNumberFrom  AS INTEGER,
@SQintoAccountLegendExp_GLNumberTo  AS INTEGER,
@SQAsAtDate AS DATE,
@SQuidYearID AS UNIQUEIDENTIFIER
AS
BEGIN
Declare @SQintLengthRevGL As Integer
Declare @SQintLengthExpGL As Integer
Declare @decRevenue AS DECIMAL(18,2)
DECLARE @decExpense AS DECIMAL(18,2)
DECLARE @decOpenRevenue AS DECIMAL(18,2)
DECLARE @decOpenExpense AS DECIMAL(18,2)
DECLARE @intCurrEarnAcct AS NVARCHAR(200)

	IF @optCurrentYear_IsChecked = 1 
	BEGIN
	
		SELECT @intCurrEarnAcct = intGLNumber FROM tblAccounts WHERE bitLinkCEarnings = 1 --- cmdEarn

		SELECT @SQintLengthRevGL = intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength


		SELECT  @decRevenue =  ISNULL(SUM(tblJournalEnt.decAmount),0) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate <= @SQAsAtDate) 
		AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo --- cmdRev


		SELECT  @decExpense = ISNULL(SUM(tblJournalEnt.decAmount),0) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate <= @SQAsAtDate) 
		AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo --- cmdExp



		SELECT  @decOpenRevenue = SUM(decOpenBalance) FROM tblAccounts WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo    --cmdRevOpen

		SELECT @decOpenExpense = SUM(decOpenBalance) FROM tblAccounts WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo   ---cmdExpOpen

		SELECT @intCurrEarnAcct, @decRevenue,@decExpense,@decOpenRevenue,@decOpenExpense

	END
	ELSE IF @optPreviousYear_IsChecked = 1 
	BEGIN
		SELECT @intCurrEarnAcct = intGLNumber FROM tblAccountsLY WHERE bitLinkCEarnings = 1  --- cmdEarn

		SELECT @SQintLengthRevGL = intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength
		
		SELECT  @decRevenue = ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo --- cmdRev


		SELECT @decExpense = ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  --- cmdExp


		SELECT @decOpenRevenue = SUM(decOpenBalance) FROM tblAccountsLY WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo   --cmdRevOpen


		SELECT @decOpenExpense = SUM(decOpenBalance) FROM tblAccountsLY WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  ---cmdExpOpen

		SELECT @intCurrEarnAcct, @decRevenue,@decExpense,@decOpenRevenue,@decOpenExpense

	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		SELECT @intCurrEarnAcct = intGLNumber FROM tblAccountsHist WHERE bitLinkCEarnings = 1 AND uidYearID = @SQuidYearID   --- cmdEarn

		SELECT @SQintLengthRevGL = intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength


		SELECT  @decRevenue = ISNULL(SUM(tblJournalEntHist.decAmount),0) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID 
		WHERE (tblJournalHist.dteJournalDate <= @SQAsAtDate) AND (tblJournalEntHist.uidYearID = @SQuidYearID) 
		AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo  --- cmdRev


		SELECT @decExpense = ISNULL(SUM(tblJournalEntHist.decAmount),0) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID 
		WHERE (tblJournalHist.dteJournalDate <= @SQAsAtDate) AND (tblJournalEntHist.uidYearID = @SQuidYearID) 
		AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  --- cmdExp


		SELECT @decOpenRevenue = SUM(decOpenBalance) FROM tblAccountsHist WHERE uidYearID = @SQuidYearID 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo  --cmdRevOpen


		SELECT @decOpenExpense = SUM(decOpenBalance) FROM tblAccountsHist WHERE uidYearID = @SQuidYearID 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  ---cmdExpOpen
		
		SELECT @intCurrEarnAcct, @decRevenue,@decExpense,@decOpenRevenue,@decOpenExpense
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptListBalSheetDeptLoadQuery_3]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptListBalSheetDeptLoadQuery_3]
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@optHistoryYear_IsChecked AS BIT,
@SQintoAccountLegendExp_GLNumberFrom AS INTEGER,
@SQintoAccountLegendRev_GLNumberTo  AS INTEGER,
@SQintoAccountLegendRev_GLNumberFrom  AS INTEGER,
@SQintoAccountLegendExp_GLNumberTo  AS INTEGER,
@SQAsAtDate AS DATE,
@SQuidYearID AS UNIQUEIDENTIFIER,
@SQDept AS NVARCHAR(MAX)
AS
BEGIN
Declare @SQintLengthRevGL As Integer
Declare @SQintLengthExpGL As Integer
Declare @decRevenue as decimal
declare @decExpense as decimal
declare @decOpenRevenue as decimal
declare @decOpenExpense as decimal
--declare @intCurrEarnAcct as nvarchar(200)

	IF @optCurrentYear_IsChecked = 1 
	BEGIN
	
		--SELECT @intCurrEarnAcct = intGLNumber FROM tblAccounts WHERE bitLinkCEarnings = 1  --- cmdEarn

		SELECT @SQintLengthRevGL = intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength


		SELECT  @decRevenue =  ISNULL(SUM(tblJournalEnt.decAmount),0) 
		FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
		WHERE (tblJournal.dteJournalDate <= @SQAsAtDate) 
		AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo 
		AND ISNULL(tblJournalEnt.intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))--= @SQDept --- cmdRev


		SELECT  @decExpense = ISNULL(SUM(tblJournalEnt.decAmount),0) 
		FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
		WHERE (tblJournal.dteJournalDate <= @SQAsAtDate) 
		AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND SUBSTRING(tblJournalEnt.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo 
		AND ISNULL(tblJournalEnt.intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))--= @SQDept --- cmdExp



		SELECT  @decOpenRevenue = ISNULL(SUM(decOpenBalance),0) 
		FROM tblAccountsDept 
		WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo 
		AND ISNULL(intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))--= @SQDept    --cmdRevOpen

		SELECT @decOpenExpense = ISNULL(SUM(decOpenBalance),0) 
		FROM tblAccountsDept 
		WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo 
		AND ISNULL(intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))--= @SQDept   ---cmdExpOpen

		select  @decRevenue,@decExpense,@decOpenRevenue,@decOpenExpense

	END
	ELSE IF @optPreviousYear_IsChecked = 1 
	BEGIN
		--SELECT @intCurrEarnAcct = intGLNumber FROM tblAccountsLY WHERE bitLinkCEarnings = 1  --- cmdEarn

		SELECT @SQintLengthRevGL = intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength
		
		SELECT  @decRevenue = ISNULL(SUM(tblJournalEntLY.decAmount),0) 
		FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
		WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) 
		AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo 
		AND ISNULL(tblJournalEntLY.intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))--= @SQDept --- cmdRev


		SELECT @decExpense = ISNULL(SUM(tblJournalEntLY.decAmount),0) 
		FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
		WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) 
		AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo 
		AND ISNULL(tblJournalEntLY.intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))--= @SQDept  --- cmdExp


		SELECT @decOpenRevenue = ISNULL(SUM(decOpenBalance),0) 
		FROM tblAccountsDeptLY 
		WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo 
		AND ISNULL(intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))--= @SQDept   --cmdRevOpen


		SELECT @decOpenExpense = ISNULL(SUM(decOpenBalance),0) 
		FROM tblAccountsDeptLY 
		WHERE SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo 
		AND ISNULL(intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))--= @SQDept  ---cmdExpOpen

		select  @decRevenue,@decExpense,@decOpenRevenue,@decOpenExpense
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		--SELECT @intCurrEarnAcct = intGLNumber FROM tblAccountsHist WHERE bitLinkCEarnings = 1 AND uidYearID = @SQuidYearID   --- cmdEarn

		SELECT @SQintLengthRevGL = intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength


		SELECT  @decRevenue = ISNULL(SUM(tblJournalEntHist.decAmount),0) 
		FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID 
		WHERE (tblJournalHist.dteJournalDate <= @SQAsAtDate) 
		AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND  SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo 
		AND ISNULL(tblJournalEntHist.intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))--= @SQDept  --- cmdRev


		SELECT @decExpense = ISNULL(SUM(tblJournalEntHist.decAmount),0) 
		FROM tblJournalEntHist 
		INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID 
		WHERE (tblJournalHist.dteJournalDate <= @SQAsAtDate) 
		AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND  SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo 
		AND ISNULL(tblJournalEntHist.intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))--= @SQDept --- cmdExp


		SELECT @decOpenRevenue = ISNULL(SUM(decOpenBalance),0) 
		FROM tblAccountsDeptHist 
		WHERE  SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
		AND  SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo 
		AND ISNULL(intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))--= @SQDept   --cmdRevOpen


		SELECT @decOpenExpense = ISNULL(SUM(decOpenBalance),0) 
		FROM tblAccountsDeptHist 
		WHERE  SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
		AND  SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo 
		AND ISNULL(intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))--= @SQDept  ---cmdExpOpen
		
		select  @decRevenue,@decExpense,@decOpenRevenue,@decOpenExpense
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptListBalSheetDeptLoadQuery_4]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptListBalSheetDeptLoadQuery_4] 
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@optHistoryYear_IsChecked AS BIT,
@SQAsAtDate AS DATE,
@SQuidYearID AS UNIQUEIDENTIFIER
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		SELECT tblJournalEnt.intGLNumber, SUM(tblJournalEnt.decAmount),ISNULL(intDept,0) AS intDept FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate <= @SQAsAtDate) GROUP BY tblJournalEnt.intGLNumber,intDept
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		SELECT tblJournalEntLY.intGLNumber, SUM(tblJournalEntLY.decAmount),ISNULL(intDept,0) AS intDept FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) GROUP BY tblJournalEntLY.intGLNumber,intDept
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		SELECT tblJournalEntHist.intGLNumber, SUM(tblJournalEntHist.decAmount),ISNULL(intDept,0) AS intDept FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate <= @SQAsAtDate) AND (tblJournalEntHist.uidYearID = @SQuidYearID) GROUP BY tblJournalEntHist.intGLNumber,intDept
	END


END
GO
/****** Object:  StoredProcedure [dbo].[SPRptListBalSheetDeptLoadQuery_5]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptListBalSheetDeptLoadQuery_5] 
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@optHistoryYear_IsChecked AS BIT,
@SQAsAtDate AS DATE,
@SQuidYearID AS UNIQUEIDENTIFIER,
@SQDept AS NVARCHAR(MAX)
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		SELECT tblJournalEnt.intGLNumber, ISNULL(SUM(tblJournalEnt.decAmount),0),ISNULL(intDept,0) AS intDept 
		FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
		WHERE (tblJournal.dteJournalDate <= @SQAsAtDate) AND (ISNULL(tblJournalEnt.intDept,0) IN (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))) 
		GROUP BY tblJournalEnt.intGLNumber,intDept
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		SELECT tblJournalEntLY.intGLNumber, ISNULL(SUM(tblJournalEntLY.decAmount),0),ISNULL(intDept,0) AS intDept 
		FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) 
		AND (ISNULL(tblJournalEntLY.intDept,0) IN (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))) GROUP BY tblJournalEntLY.intGLNumber,intDept
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		SELECT tblJournalEntHist.intGLNumber, ISNULL(SUM(tblJournalEntHist.decAmount),0),ISNULL(intDept,0) AS intDept 
		FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID 
		WHERE (tblJournalHist.dteJournalDate <= @SQAsAtDate) AND (ISNULL(tblJournalEntHist.intDept,0) IN (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))) AND (tblJournalEntHist.uidYearID = @SQuidYearID) 
		GROUP BY tblJournalEntHist.intGLNumber,intDept
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptListBudgetIncomeDeptLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptListBudgetIncomeDeptLoadQuery_1]
@SQDept NVARCHAR(MAX),
@optCurrentYear_IsChecked AS BIT,
@CostOfGoodsSold AS INT,
@InterestExpense AS INT,
@IncomeTaxExpense AS INT,
@Revenue AS INT,
@OperatingRevenue AS INT,
@intOINum AS INT,
@Expense AS INT,
@SQStart DATE,
@SQFinish DATE

AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN	

		SELECT tblAccounts.intGLNumber, strDesc, intAccType, intGroupCode, 
		--ISNULL((SELECT decOpenBalance FROM tblAccountsDept WHERE intGLNumber = tblAccounts.intGLNumber AND intDept = @SQDept),0),
		ISNULL(tblAccountsDept.decOpenBalance,0),
		intAccClass, 'GroupSeq' = CASE 
		WHEN intAccClass = @CostOfGoodsSold THEN 1 
		WHEN intAccClass = @InterestExpense THEN 4 
		WHEN intAccClass = @IncomeTaxExpense THEN 5
		WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0  
		WHEN intAccType = @Revenue THEN @intOINum  
		WHEN intAccType = @Expense THEN 3
		ELSE NULL END,
		intDept FROM tblAccounts
		LEFT JOIN tblAccountsDept ON tblAccounts.intGLNumber = tblAccountsDept.intGLNumber
		 WHERE (intAccType >= 4) 
		 AND ISNULL(intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))
		 ORDER BY GroupSeq, intAccType, intAccClass, tblAccounts.intGLNumber

		SELECT tblJournalEnt.intGLNumber, SUM(tblJournalEnt.decAmount),tblJournalEnt.intDept 
		FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
		WHERE (tblJournal.dteJournalDate >= @SQStart) AND (tblJournal.dteJournalDate <= @SQFinish) AND (tblJournalEnt.intDept in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))) 
		GROUP BY tblJournalEnt.intGLNumber,tblJournalEnt.intDept 
	END
	ELSE
	BEGIN
		SELECT tblAccountsLY.intGLNumber, strDesc, intAccType, intGroupCode, 
		--ISNULL((SELECT decOpenBalance FROM tblAccountsDeptLY WHERE intGLNumber = tblAccountsLY.intGLNumber AND intDept = @SQDept),0), 
		ISNULL(tblAccountsDept.decOpenBalance,0),
		intAccClass, 'GroupSeq' = CASE 
		WHEN intAccClass = @CostOfGoodsSold THEN 1 
		WHEN intAccClass = @InterestExpense THEN 4 
		WHEN intAccClass = @IncomeTaxExpense THEN 5
		WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0  
		WHEN intAccType = @Revenue THEN @intOINum  
		WHEN intAccType = @Expense THEN 3
		ELSE NULL END,
		intDept FROM tblAccountsLY 
		LEFT JOIN tblAccountsDept ON tblAccountsLY.intGLNumber = tblAccountsDept.intGLNumber
		WHERE (intAccType >= 4) 
		AND ISNULL(intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))
		ORDER BY GroupSeq, intAccType, intAccClass, tblAccountsLY.intGLNumber

		SELECT tblJournalEntLY.intGLNumber, SUM(tblJournalEntLY.decAmount),tblJournalEntLY.intDept  
		FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
		WHERE (tblJournalLY.dteJournalDate >= @SQStart) AND (tblJournalLY.dteJournalDate <= @SQFinish) AND (tblJournalEntLY.intDept in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))) 
		GROUP BY tblJournalEntLY.intGLNumber,tblJournalEntLY.intDept		
	END	
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptListBudgetIncomeDeptLoadQuery_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptListBudgetIncomeDeptLoadQuery_2]
@SQDept NVARCHAR(MAX),
@SQGLNumber NVARCHAR(MAX),
@optCurrentYear_IsChecked BIT,
@intBudPeriodStart INT,
@intBudPeriodEnds INT
AS
BEGIN
CREATE TABLE #Temp
(
    intDept NVARCHAR(200), 
)
	DECLARE @intAcct AS NVARCHAR(MAX)
	DECLARE @intGroupNumber AS INT = 0
	DECLARE @tbl_IMPORT TABLE
	(
		SQGLNumber VARCHAR(100),
		SQDept VARCHAR(100),
		decBudget DECIMAL(18,2)
	)

	DECLARE @tbl_temp1 TABLE
	(
		[strCOL01] [varchar](MAX) DEFAULT ''
	)
	INSERT INTO #Temp
	 SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(','))

	 DECLARE @ROW AS INTEGER
	 DECLARE @intDeptTemp AS INTEGER
	 DECLARE @SQDeptCur AS INTEGER 
	 DECLARE db_cursor CURSOR FOR  
	 SELECT intDept FROM #Temp  

	 OPEN db_cursor   
	 FETCH NEXT FROM db_cursor INTO @intDeptTemp
	 SET @ROW = 1
	 WHILE @@FETCH_STATUS = 0   
	 BEGIN 
	 IF @ROW <= (select count(*) from #Temp)
		BEGIN
		SET @SQDeptCur = @intDeptTemp
			DECLARE @intDeptCur AS INTEGER
	DECLARE @decBudget AS DECIMAL		
	DECLARE @Acct_CUR CURSOR	
	SET @Acct_CUR = CURSOR 
	FOR SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@SQGLNumber, '~')
	OPEN @Acct_CUR               
	FETCH NEXT FROM @Acct_CUR
	INTO @intAcct
	
	WHILE @@FETCH_STATUS = 0
	BEGIN
		SET @intGroupNumber += 1		
		SET @decBudget = 0	 
		DECLARE @ColCount INT			
		DECLARE @Dept INT		
		WHILE @ColCount <= (@intBudPeriodEnds + 1)
		BEGIN
			IF @optCurrentYear_IsChecked = 1
				BEGIN
					SELECT  @Dept = IsNULL(intDept,@SQDeptCur), @decBudget = @decBudget +  CASE @ColCount WHEN 3 THEN decPeriod1 WHEN 4 THEN decPeriod2 WHEN 5 THEN decPeriod3 WHEN 6 THEN decPeriod4 WHEN 7 THEN decPeriod5 WHEN 8 THEN decPeriod6 WHEN 9 THEN decPeriod7 WHEN 10 THEN decPeriod8 WHEN 11 THEN decPeriod9 WHEN 12 THEN decPeriod10 WHEN 13 THEN decPeriod11 WHEN 14 THEN decPeriod12 ELSE 0 END FROM tblAccountsDeptB WHERE intGLNumber = @intAcct AND intDept  = @SQDeptCur--in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))
				END						
			ELSE
				Begin
					SELECT  @Dept = IsNULL(intDept,@SQDeptCur), @decBudget = @decBudget +  CASE @ColCount WHEN 3 THEN decPeriod1 WHEN 4 THEN decPeriod2 WHEN 5 THEN decPeriod3 WHEN 6 THEN decPeriod4 WHEN 7 THEN decPeriod5 WHEN 8 THEN decPeriod6 WHEN 9 THEN decPeriod7 WHEN 10 THEN decPeriod8 WHEN 11 THEN decPeriod9 WHEN 12 THEN decPeriod10 WHEN 13 THEN decPeriod11 WHEN 14 THEN decPeriod12 ELSE 0 END FROM tblAccountsDeptBLY WHERE intGLNumber = @intAcct AND intDept =@SQDeptCur--in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))
				End

			SET @ColCount = @ColCount + 1
		END																						
		INSERT INTO @tbl_IMPORT (SQGLNumber,SQDept,decBudget) VALUES(@intAcct,IsNULL(@Dept,@SQDeptCur),@decBudget)
				
		FETCH NEXT FROM @Acct_CUR
		INTO @intAcct
	END
		SET @ROW = 	@ROW + 1
		END
	CLOSE @Acct_CUR
	DEALLOCATE @Acct_CUR
	
	FETCH NEXT FROM db_cursor INTO @intDeptTemp
	 END   

CLOSE db_cursor   
DEALLOCATE db_cursor

	SELECT * FROM @tbl_IMPORT	
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptListBudgetsDeptLoadQuery_1_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptListBudgetsDeptLoadQuery_1_1]
	@optCurrentYear_IsChecked AS BIT,
	@SQDept AS NVARCHAR(MAX)
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, tblAccountsDeptB.decPeriod1, tblAccountsDeptB.decPeriod2, 
		tblAccountsDeptB.decPeriod3, tblAccountsDeptB.decPeriod4, tblAccountsDeptB.decPeriod5, tblAccountsDeptB.decPeriod6, tblAccountsDeptB.decPeriod7, 
		tblAccountsDeptB.decPeriod8, tblAccountsDeptB.decPeriod9, tblAccountsDeptB.decPeriod10, tblAccountsDeptB.decPeriod11, tblAccountsDeptB.decPeriod12 
		FROM tblAccounts INNER JOIN tblAccountsDept ON tblAccounts.intGLNumber = tblAccountsDept.intGLNumber 
		INNER JOIN tblAccountsDeptB ON tblAccountsDept.intGLNumber = tblAccountsDeptB.intGLNumber AND tblAccountsDept.intDept = tblAccountsDeptB.intDept 
		WHERE (tblAccountsDept.intDept IN (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(','))))
	END
	ELSE
	BEGIN
		SELECT tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, tblAccountsLY.intAccType, tblAccountsDeptBLY.decPeriod1, tblAccountsDeptBLY.decPeriod2, 
		tblAccountsDeptBLY.decPeriod3, tblAccountsDeptBLY.decPeriod4, tblAccountsDeptBLY.decPeriod5, tblAccountsDeptBLY.decPeriod6, tblAccountsDeptBLY.decPeriod7, 
		tblAccountsDeptBLY.decPeriod8, tblAccountsDeptBLY.decPeriod9, tblAccountsDeptBLY.decPeriod10, tblAccountsDeptBLY.decPeriod11, tblAccountsDeptBLY.decPeriod12 
		FROM tblAccountsLY INNER JOIN tblAccountsDeptLY ON tblAccountsLY.intGLNumber = tblAccountsDeptLY.intGLNumber 
		INNER JOIN tblAccountsDeptBLY ON tblAccountsDeptLY.intGLNumber = tblAccountsDeptBLY.intGLNumber AND tblAccountsDeptLY.intDept = tblAccountsDeptBLY.intDept 
		WHERE (tblAccountsDeptLY.intDept IN (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))
)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptListCentersLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptListCentersLoadQuery_1]
	@SQCurrentYear_IsChecked AS BIT
AS
BEGIN

	IF @SQCurrentYear_IsChecked = 1 
	BEGIN
		SELECT strLvl1, ISNULL(strLvl2,'') AS strLvl2, ISNULL(strLvl3,'') AS strLvl3, ISNULL(strLvl4,'') AS strLvl4, ISNULL(strLvl5,'') AS strLvl5, bitBudgetR, bitBudgetE, bitInactive FROM tblCenters ORDER BY strLvl1, strLvl2, strLvl3, strLvl4, strLvl5
	END
	ELSE
	BEGIN
		SELECT strLvl1, ISNULL(strLvl2,'') AS strLvl2, ISNULL(strLvl3,'') AS strLvl3, ISNULL(strLvl4,'') AS strLvl4, ISNULL(strLvl5,'') AS strLvl5, bitBudgetR, bitBudgetE, bitInactive FROM tblCentersLY ORDER BY strLvl1, strLvl2, strLvl3, strLvl4, strLvl5
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptListDeptOnLoadedBusinessLogic_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptListDeptOnLoadedBusinessLogic_1]

AS
BEGIN
	SELECT intDept,strDesc FROM tblDepartments WHERE bitInactive = 0 ORDER BY intDept
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptListIncomeDeptCLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptListIncomeDeptCLoadQuery_1] 
@optCurrentYear_IsChecked BIT,
@optPreviousYear_IsChecked BIT,
@optHistoryYear_IsChecked BIT,
@SQuidYearID UNIQUEIDENTIFIER

AS
BEGIN
	IF @optCurrentYear_IsChecked = 1
	BEGIN
		SELECT tblAccounts.intGLNumber, tblAccountsDept.intDept, tblAccounts.strDesc, tblAccounts.intAccType, ISNULL(tblAccountsDept.decOpenBalance,0), tblAccounts.intAccClass FROM tblAccounts INNER JOIN tblAccountsDept ON tblAccounts.intGLNumber = tblAccountsDept.intGLNumber WHERE (tblAccounts.intAccType >= 4) AND (tblAccounts.intGroupCode <= 2) ORDER BY tblAccounts.intGLNumber,tblAccountsDept.intDept
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		SELECT tblAccountsLY.intGLNumber, tblAccountsDeptLY.intDept, tblAccountsLY.strDesc, tblAccountsLY.intAccType, ISNULL(tblAccountsDeptLY.decOpenBalance,0), tblAccountsLY.intAccClass FROM tblAccountsLY INNER JOIN tblAccountsDeptLY ON tblAccountsLY.intGLNumber = tblAccountsDeptLY.intGLNumber WHERE (tblAccountsLY.intAccType >= 4) AND (tblAccountsLY.intGroupCode <= 2) ORDER BY tblAccountsLY.intGLNumber, tblAccountsDeptLY.intDept
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		SELECT tblAccountsHist.intGLNumber, tblAccountsDeptHist.intDept, tblAccountsHist.strDesc, tblAccountsHist.intAccType, ISNULL(tblAccountsDeptHist.decOpenBalance,0), tblAccountsHist.intAccClass FROM tblAccountsHist INNER JOIN tblAccountsDeptHist ON tblAccountsHist.intGLNumber = tblAccountsDeptHist.intGLNumber AND tblAccountsHist.uidYearID = tblAccountsDeptHist.uidYearID WHERE (tblAccountsHist.intAccType >= 4) AND (tblAccountsHist.intGroupCode <= 2) AND (tblAccountsHist.uidYearID = @SQuidYearID) ORDER BY tblAccountsHist.intGLNumber, tblAccountsDeptHist.intDept
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptListIncomeDeptCLoadQuery_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptListIncomeDeptCLoadQuery_2] 
@optCurrentYear_IsChecked BIT,
@optPreviousYear_IsChecked BIT,
@optHistoryYear_IsChecked BIT,
@SQuidYearID UNIQUEIDENTIFIER,
@SQStart DATETIME,
@SQFinish DATETIME
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1
	BEGIN
		SELECT tblJournalEnt.intGLNumber, tblJournalEnt.intDept, SUM(tblJournalEnt.decAmount) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate >= @SQStart) AND (tblJournal.dteJournalDate <= @SQFinish) AND (tblJournalEnt.intDept IS NOT NULL) GROUP BY tblJournalEnt.intGLNumber, tblJournalEnt.intDept
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		SELECT tblJournalEntLY.intGLNumber, tblJournalEntLY.intDept, SUM(tblJournalEntLY.decAmount) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate >= @SQStart) AND (tblJournalLY.dteJournalDate <= @SQFinish) AND (tblJournalEntLY.intDept IS NOT NULL) GROUP BY tblJournalEntLY.intGLNumber, tblJournalEntLY.intDept
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		SELECT tblJournalEntHist.intGLNumber, tblJournalEntHist.intDept, SUM(tblJournalEntHist.decAmount) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate >= @SQStart) AND (tblJournalHist.dteJournalDate <= @SQFinish) AND (tblJournalEntHist.intDept IS NOT NULL) AND (tblJournalEntHist.uidYearID = @SQuidYearID) GROUP BY tblJournalEntHist.intGLNumber, tblJournalEntHist.intDept
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptListIncomeDeptCLoadQuery_3]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptListIncomeDeptCLoadQuery_3] 
@optCurrentYear_IsChecked BIT,
@optPreviousYear_IsChecked BIT,
@optHistoryYear_IsChecked BIT,
@SQuidYearID UNIQUEIDENTIFIER
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1
	BEGIN
		SELECT DISTINCT tblAccountsDept.intDept FROM tblAccounts INNER JOIN tblAccountsDept ON tblAccounts.intGLNumber = tblAccountsDept.intGLNumber WHERE (tblAccounts.intAccType >= 4) AND (tblAccounts.intGroupCode <= 2) ORDER BY tblAccountsDept.intDept
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		SELECT DISTINCT tblAccountsDeptLY.intDept FROM tblAccountsLY INNER JOIN tblAccountsDeptLY ON tblAccountsLY.intGLNumber = tblAccountsDeptLY.intGLNumber WHERE (tblAccountsLY.intAccType >= 4) AND (tblAccountsLY.intGroupCode <= 2) ORDER BY tblAccountsDeptLY.intDept
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		SELECT DISTINCT tblAccountsDeptHist.intDept FROM tblAccountsHist INNER JOIN tblAccountsDeptHist ON tblAccountsHist.intGLNumber = tblAccountsDeptHist.intGLNumber AND tblAccountsHist.uidYearID = tblAccountsDeptHist.uidYearID WHERE (tblAccountsHist.intAccType >= 4) AND (tblAccountsHist.intGroupCode <= 2) AND (tblAccountsHist.uidYearID = @SQuidYearID) ORDER BY tblAccountsDeptHist.intDept
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptListIncomeDeptLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptListIncomeDeptLoadQuery_1]
@optCurrentYear_IsChecked BIT,
@optPreviousYear_IsChecked BIT,
@optHistoryYear_IsChecked BIT,
@SQuidYearID UNIQUEIDENTIFIER,
@SQDept AS NVARCHAR(MAX),
@CostOfGoodsSold INT,
@InterestExpense INT,
@IncomeTaxExpense INT,
@Revenue INT,
@OperatingRevenue INT,
@Expense INT,
@intOINum INT
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		SELECT * FROM(SELECT tblAccounts.intGLNumber, strDesc, intAccType, intGroupCode, 
		decOpenBalance,
		intAccClass,
		'GroupSeq' = CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 WHEN intAccClass = @InterestExpense THEN 4
		WHEN intAccClass = @IncomeTaxExpense THEN 5 WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0
		WHEN intAccType = @Revenue THEN @intOINum WHEN intAccType = @Expense THEN 3 ELSE NULL END ,0 AS intDept
		FROM tblAccounts WHERE (intAccType >= 4) 
		UNION ALL
		SELECT tblAccounts.intGLNumber, strDesc, intAccType, intGroupCode, 
		ISNULL(tblAccountsDept.decOpenBalance,0),
		intAccClass,
		'GroupSeq' = CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 WHEN intAccClass = @InterestExpense THEN 4
		WHEN intAccClass = @IncomeTaxExpense THEN 5 WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0
		WHEN intAccType = @Revenue THEN @intOINum WHEN intAccType = @Expense THEN 3 ELSE NULL END, intDept
		FROM tblAccounts 
		INNER JOIN tblAccountsDept ON tblAccounts.intGLNumber = tblAccountsDept.intGLNumber
		WHERE (intAccType >= 4) ) AS T
		WHERE ISNULL(intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))
		ORDER BY GroupSeq, intAccType, intAccClass, intGLNumber 
	END	
	ELSE IF @optPreviousYear_IsChecked = 1	
	BEGIN	
		SELECT * FROM(SELECT tblAccountsLY.intGLNumber, strDesc, intAccType, intGroupCode, 
		decOpenBalance,intAccClass,
		'GroupSeq' = CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 WHEN intAccClass = @InterestExpense THEN 4
		WHEN intAccClass = @IncomeTaxExpense THEN 5 WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0
		WHEN intAccType = @Revenue THEN @intOINum WHEN intAccType = @Expense THEN 3 ELSE NULL END ,0 AS intDept
		FROM tblAccountsLY WHERE (intAccType >= 4) 
		UNION ALL
		SELECT tblAccountsLY.intGLNumber, strDesc, intAccType, intGroupCode, 
		ISNULL(tblAccountsDept.decOpenBalance,0),intAccClass, 
                    'GroupSeq' = CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 
                    WHEN intAccClass = @InterestExpense THEN 4 
                    WHEN intAccClass = @IncomeTaxExpense THEN 5 
                    WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0 
                    WHEN intAccType = @Revenue THEN @intOINum
                    WHEN intAccType = @Expense THEN 3 
        ELSE NULL END , intDept
		FROM tblAccountsLY
		INNER JOIN tblAccountsDept ON tblAccountsLY.intGLNumber = tblAccountsDept.intGLNumber
		WHERE (intAccType >= 4)) AS T
		WHERE ISNULL(intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))
		ORDER BY GroupSeq, intAccType, intAccClass, intGLNumber
	END	
	ELSE IF @optHistoryYear_IsChecked = 1	
	BEGIN	
		SELECT * FROM(SELECT tblAccountsHist.intGLNumber, strDesc, intAccType, intGroupCode, 
		decOpenBalance,intAccClass,
		'GroupSeq' = CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 WHEN intAccClass = @InterestExpense THEN 4
		WHEN intAccClass = @IncomeTaxExpense THEN 5 WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0
		WHEN intAccType = @Revenue THEN @intOINum WHEN intAccType = @Expense THEN 3 ELSE NULL END ,0 AS intDept
		FROM tblAccountsHist WHERE (intAccType >= 4) 
		UNION ALL
		SELECT tblAccountsHist.intGLNumber, strDesc, intAccType, intGroupCode, 
		ISNULL(tblAccountsHist.decOpenBalance,0),intAccClass, 
                    'GroupSeq' = CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 
                    WHEN intAccClass = @InterestExpense THEN 4 
                    WHEN intAccClass = @IncomeTaxExpense THEN 5 
                    WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0 
                    WHEN intAccType = @Revenue THEN @intOINum
                    WHEN intAccType = @Expense THEN 3 
        ELSE NULL END ,intDept
		FROM tblAccountsHist
		INNER JOIN tblAccountsDept ON tblAccountsHist.intGLNumber = tblAccountsDept.intGLNumber and uidYearID = tblAccountsHist.uidYearID
		WHERE (intAccType >= 4) AND (uidYearID = @SQuidYearID) ) AS T
		WHERE ISNULL(intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))
		ORDER BY GroupSeq, intAccType, intAccClass, intGLNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptListIncomeDeptLoadQuery_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptListIncomeDeptLoadQuery_2]
@optCurrentYear_IsChecked BIT,
@optPreviousYear_IsChecked BIT,
@optHistoryYear_IsChecked BIT,
@SQuidYearID UNIQUEIDENTIFIER,
@SQStart DATE,
@SQFinish DATE,
@SQDept NVARCHAR(MAX)
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1
	BEGIN
		SELECT tblJournalEnt.intGLNumber, 
		SUM(tblJournalEnt.decAmount),ISNULL(intDept,0) AS intDept  
		FROM tblJournalEnt 
		INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
		WHERE (tblJournal.dteJournalDate >= @SQStart) 
		AND (tblJournal.dteJournalDate <= @SQFinish) 
		AND (ISNULL(tblJournalEnt.intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))) 
		GROUP BY tblJournalEnt.intGLNumber,intDept
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		SELECT tblJournalEntLY.intGLNumber, 
		SUM(tblJournalEntLY.decAmount),ISNULL(intDept,0) AS intDept  
		FROM tblJournalEntLY 
		INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
		WHERE (tblJournalLY.dteJournalDate >= @SQStart) 
		AND (tblJournalLY.dteJournalDate <= @SQFinish) 
		AND (ISNULL(tblJournalEntLY.intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))) 
		GROUP BY tblJournalEntLY.intGLNumber,intDept
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		SELECT tblJournalEntHist.intGLNumber, 
		SUM(tblJournalEntHist.decAmount),ISNULL(intDept,0) AS intDept  
		FROM tblJournalEntHist 
		INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID 
		AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID 
		WHERE (tblJournalHist.dteJournalDate >= @SQStart) 
		AND (tblJournalHist.dteJournalDate <= @SQFinish) 
		AND (ISNULL(tblJournalEntHist.intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))) 
		AND (tblJournalEntHist.uidYearID = @SQuidYearID) 
		GROUP BY tblJournalEntHist.intGLNumber,intDept
	END
END
GO

/****** Object:  StoredProcedure [dbo].[SPRptLoadQuerySegmentData]    Script Date: 26/06/2020 08:45:58 ******/
CREATE PROCEDURE [dbo].[SPRptLoadQuerySegmentData]
AS
BEGIN
select strCode, strDescription, intSegmentId from tblGLSegmentSetup
END
GO

/****** Object:  StoredProcedure [dbo].[SPRptPODManagement]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptPODManagement]
(
	@SQCustName nvarchar(MAX) = NULL,
	@SQOptionIndex int = 0,
	@SQStartDate datetime = NULL,
	@SQFinishDate datetime = NULL
)
AS
BEGIN

	DECLARE @tblPOD AS TABLE (
	DocumentType nvarchar(500),
	dteJournalDate datetime,
	strInvDocID nvarchar(500),
	strCustname nvarchar(500),
	strCustDesc nvarchar(1000),
	Amount money,
	PODReceived nvarchar(10),
	strDeliveryAdvice nvarchar(1000))

	INSERT INTO @tblPOD
	SELECT	'Invoice' AS DocumentType,
			ISNULL(DOC.dteJournalDate, GETDATE()) AS dteJournalDate,
			DOC.strInvDocID,
			ISNULL(DOC.strCustName, '') AS strCustName,
			ISNULL(CUST.strCustDesc, '') AS strCustDesc,
			ISNULL(CASE WHEN ISNULL(DOC.bitIsForeign, 0) = 1 THEN ISNULL(DOC.decTotalF, 0) ELSE ISNULL(DOC.decTotal, 0) END, 0) AS Amount,
			CASE WHEN (SELECT COUNT(lngDocumentID) 
					   FROM tblDocuments 
					   INNER JOIN tblInvTracking ON tblDocuments.strDocumentNumber = REPLACE(tblInvTracking.strComment, 'Delivery Advice Conversion ', '') 
												 AND tblInvTracking.strSource =  DOC.strInvDocID 
												 AND strType = 'POD') > 0 
				 THEN 'Y'
				 ELSE (CASE WHEN (SELECT COUNT(lngDocumentID) 
								  FROM tblDocuments 
								  WHERE tblDocuments.strDocumentNumber = DOC.strInvDocID 
								  AND strType = 'POD') > 0 
							THEN 'Y' 
							ELSE (CASE WHEN DOC.bitNoPODRequired = 1 THEN 'N/A' ELSE 'N' END) 
					   END) 
			END AS PODReceived,
			ISNULL(STUFF((SELECT DISTINCT CHAR(10) + REPLACE(ISNULL(strComment, ''), 'Delivery Advice Conversion ', '') 
											 + '(' + CONVERT(nvarchar(10), (SELECT COUNT(lngDocumentID) 
																			FROM tblDocuments 
																			WHERE strDocumentNumber = REPLACE(ISNULL(strComment, ''), 'Delivery Advice Conversion ', '') 
																			AND strType = 'POD')) + ')'
						  FROM [tblInvTracking] TRACK 
						  WHERE TRACK.strSource = DOC.strInvDocID 
						  AND strComment LIKE '%Delivery Advice Conversion%' FOR XML PATH('')), 1, 1, '') , '') AS strDeliveryAdvice
	FROM tblInvoiceDoc DOC 
	LEFT JOIN tblCustomers CUST ON DOC.strCustName = CUST.strCustName 
	WHERE (DOC.dteJournalDate BETWEEN @SQStartDate AND @SQFinishDate)
	AND (DOC.strCustName IN (SELECT Value FROM [fnSplitStringAsTable] ((@SQCustName), (','))))
	AND (DOC.strInvDocID LIKE (CASE WHEN @SQOptionIndex = 4 THEN 'IN-%' ELSE '%%' END))
	UNION ALL
	SELECT	'Delivery Advice' AS DocumentType,
			ISNULL(DA.dteJournalDate, GETDATE()) AS dteJournalDate,
			DOC.strDocumentNumber AS strInvDocID,
			ISNULL(DA.strCustName, '') AS strCustName,
			ISNULL(CUST.strCustDesc, '') AS strCustDesc,
			ISNULL(CASE WHEN ISNULL(DA.bitIsForeign, 0) = 1 THEN ISNULL(DA.decTotalF, 0) ELSE ISNULL(DA.decTotal, 0) END, 0) AS Amount,
			'Y' AS PODReceived,
			DOC.strDocumentNumber + '(' + CONVERT(nvarchar(10), (SELECT COUNT(B.lngDocumentID)
																 FROM tblDocuments B 
																 WHERE B.strDocumentNumber = DA.strOrdDADocID 
																 AND B.strType = 'POD')) + ')' AS strDeliveryAdvice 
	FROM tblDocuments DOC
	INNER JOIN tblOrderDocDA DA ON DOC.strDocumentNumber = DA.strOrdDADocID
	LEFT JOIN tblCustomers CUST ON DA.strCustName = CUST.strCustName 
	WHERE (DA.dteJournalDate BETWEEN @SQStartDate AND @SQFinishDate)
	AND (DA.strCustName IN (SELECT Value FROM [fnSplitStringAsTable] ((@SQCustName), (','))))
	AND (DOC.strDocumentNumber LIKE 'DA-%')
	AND (DOC.strDocumentNumber NOT IN (SELECT RTRIM(LTRIM(REPLACE(strComment, 'Delivery Advice Conversion ', ''))) 
									   FROM tblInvTracking 
									   WHERE strComment LIKE '%Delivery Advice Conversion %'))
	AND (DOC.strType = 'POD')
	AND (DOC.strDocumentNumber LIKE (CASE WHEN @SQOptionIndex = 4 THEN 'IN-%' ELSE '%%' END))
		
	SELECT	DocumentType,
			dteJournalDate,
			CASE WHEN strInvDocID LIKE 'DA-%' THEN '' ELSE strInvDocID END AS strInvDocID,
			strCustname,
			strCustDesc,
			Amount,		
			PODReceived,
			strDeliveryAdvice,
			strInvDocID AS strInvDADoc
	FROM @tblPOD
	WHERE (DocumentType = (CASE WHEN @SQOptionIndex = 0 THEN DocumentType 
								WHEN @SQOptionIndex = 1 THEN 'Delivery Advice'
								ELSE DocumentType
						   END))
	and	(PODReceived = (CASE WHEN @SQOptionIndex = 2 THEN 'N/A' 
							 WHEN @SQOptionIndex = 3 THEN 'N'
							 ELSE PODReceived 
						END))

END
GO
/****** Object:  StoredProcedure [dbo].[SPRptTaxes_Loaded]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptTaxes_Loaded]
	
AS
BEGIN
	SELECT MIN(dteJournalDate), MAX(dteJournalDate) FROM tblTax
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptTaxesLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptTaxesLoadQuery_1]
@optAll_IsChecked AS BIT,
@SQCriteria AS NVARCHAR(200),
@SQStart AS DATE,
@SQFinish AS DATE,
@SQDisplayNames AS BIT
AS
BEGIN

	CREATE TABLE #TempTAX (
	[lngID] [int] IDENTITY(1,1),
	[strTaxName] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[intStatus] [int] NOT NULL,
	[bitRefundable] [bit] NOT NULL,
	[intType] [int] NOT NULL,
	[dteJournalDate] [smalldatetime] NOT NULL,
	[strSource] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[decAmtSubTax] [money] NOT NULL,
	[decTaxAmt] [money] NOT NULL,
	[decTotOthTax] [money] NOT NULL,
	[lngTaxID] [bigint] NOT NULL,
	[intModule] [tinyint] NOT NULL,
	[strDocNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[strVendCustVatNo] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[lngPayID] [bigint] NOT NULL,
	[strVendCustName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[strVendCustDesc] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL)
	
	IF @optAll_IsChecked = 0 
	BEGIN

		INSERT INTO #TempTAX ([strTaxName], [intStatus], [bitRefundable], [intType], [dteJournalDate], [strSource], [decAmtSubTax], [decTaxAmt], 
							  [decTotOthTax], [lngTaxID], [intModule], [strDocNumber], [strVendCustVatNo], [lngPayID], [strVendCustName])
		SELECT	tblTaxDT.strTaxName, 
				tblTaxDT.intStatus, 
				tblTaxDT.bitRefundable, 
				tblTaxDT.intType, 
				tblTax.dteJournalDate, 
				REPLACE(ISNULL(CASE WHEN tblTax.strDocNumber = 'Discount Adj' 
									THEN CASE WHEN tblTax.intModule = 5 
											  THEN ISNULL((SELECT tblCustPay.strSource 
														   FROM tblCustPay 
														   WHERE tblCustPay.lngJourID = tblTax.lngJournalID 
														   AND tblCustPay.dteJournalDate = tblTax.dteJournalDate),'') 
											  ELSE ISNULL((SELECT tblVendPay.strSource 
														   FROM tblVendPay 
														   WHERE tblVendPay.lngJourID = tblTax.lngJournalID 
														   AND tblVendPay.dteJournalDate = tblTax.dteJournalDate),'') 
										 END + ', ' + tblTax.strDocNumber 
									ELSE tblTax.strDocNumber + ', ' + CASE WHEN tblTax.intModule = 5 AND tblTax.intType = 1 AND tblTax.strDocNumber <> 'Discount Adj' 
																		   THEN CAST(JE1.intGLNumber AS nVarchar(50)) + ', ' + JE1.strLineComment 
																		   ELSE CASE WHEN tblTax.intmodule = 3 AND tblTax.intType = 2 AND tblTax.strDocNumber <> 'Discount Adj' 
																					 THEN CAST(JE2.intGLNumber AS nVarchar(50)) + ', ' + JE2.strLineComment 
																					 ELSE tblTax.strVendCustName 
																				END 
																	  END 
							   END,''), ',',';') AS strSource, 
				tblTaxDT.decAmtSubTax, 
				tblTaxDT.decTaxAmt, 
				tblTaxDT.decTotOthTax, 
				tblTax.lngTaxID, 
				tblTax.intModule, 
				tblTax.strDocNumber, 
				ISNULL(CASE tblTax.intModule WHEN 1 
											 THEN (SELECT strVAT 
												   FROM dbo.tblVendors 
												   WHERE strVendName = tbltax.strVendCustName) 
											 ELSE (SELECT strVAT 
												   FROM dbo.tblCustomers 
												   WHERE strCustName = tbltax.strVendCustName) 
					   END, '') AS strVendCustVatNo, 
				ISNULL(CASE WHEN tblTax.strDocNumber = 'Discount Adj' 
							THEN CASE WHEN tblTax.intModule = 5 
									  THEN ISNULL((SELECT tblCustPay.lngCustPayID 
												   FROM tblCustPay 
												   WHERE tblCustPay.lngJourID = tblTax.lngJournalID 
												   AND tblCustPay.dteJournalDate = tblTax.dteJournalDate),0) 
									  ELSE ISNULL((SELECT tblVendPay.lngVendPayID 
												   FROM tblVendPay 
												   WHERE tblVendPay.lngJourID = tblTax.lngJournalID 
												   AND tblVendPay.dteJournalDate = tblTax.dteJournalDate),0) 
								 END 
							ELSE 0 
					   END,0) AS lngPayID,
				tblTax.strVendCustName
		FROM tblTax 
		INNER JOIN tblTaxDT ON tblTax.lngTaxID = tblTaxDT.lngTaxID 
		LEFT JOIN tblJournalEntryDocCBDT JE1 ON tblTax.strDocNumber = JE1.strJEDocID 
											 AND tblTaxDT.intLine = JE1.intLineNo 
											 AND tblTax.intModule = 5 
											 AND tblTax.intType = 1 
											 AND JE1.intType = 0 
		LEFT JOIN tblJournalEntryDocCBDT JE2 ON tblTax.strDocNumber = JE2.strJEDocID 
											 AND tblTaxDT.intLine = JE2.intLineNo 
											 AND tblTax.intModule = 3 
											 AND tblTax.intType = 2 
											 AND JE2.intType = 1 
		WHERE (dteJournalDate BETWEEN @SQStart AND @SQFinish) 
		AND tblTaxDT.strTaxCode IN ((SELECT DISTINCT * FROM dbo.fnSplitStringAsTable(@SQCriteria, ','))) 
		AND (tblTaxDT.decAmtSubTax != 0 OR tblTaxDT.decTaxAmt != 0 OR tblTaxDT.decTaxAmt != 0) 
		ORDER BY tblTaxDT.strTaxName, tblTaxDT.intType, tblTaxDT.bitRefundable, tblTaxDT.intStatus, tblTax.intModule, tblTax.dteJournalDate

	END
	ELSE
	BEGIN

		INSERT INTO #TempTAX ([strTaxName], [intStatus], [bitRefundable], [intType], [dteJournalDate], [strSource], [decAmtSubTax], [decTaxAmt], 
							  [decTotOthTax], [lngTaxID], [intModule], [strDocNumber], [strVendCustVatNo], [lngPayID], [strVendCustName])
		SELECT	tblTaxDT.strTaxName, 
				tblTaxDT.intStatus, 
				tblTaxDT.bitRefundable, 
				tblTaxDT.intType, 
				tblTax.dteJournalDate, 
				REPLACE(ISNULL(CASE WHEN tblTax.strDocNumber = 'Discount Adj' 
									THEN CASE WHEN tblTax.intModule = 5 
											  THEN ISNULL((SELECT tblCustPay.strSource 
														   FROM tblCustPay 
														   WHERE tblCustPay.lngJourID = tblTax.lngJournalID 
														   AND tblCustPay.dteJournalDate = tblTax.dteJournalDate),'') 
											  ELSE ISNULL((SELECT tblVendPay.strSource 
														   FROM tblVendPay 
														   WHERE tblVendPay.lngJourID = tblTax.lngJournalID 
														   AND tblVendPay.dteJournalDate = tblTax.dteJournalDate),'') 
										 END + ', ' + tblTax.strDocNumber 
									ELSE tblTax.strDocNumber + ', ' + CASE WHEN tblTax.intModule = 5 AND tblTax.intType = 1 AND tblTax.strDocNumber <> 'Discount Adj' 
																		   THEN CAST(JE1.intGLNumber AS nVarchar(50)) + ', ' + JE1.strLineComment 
																		   ELSE CASE WHEN tblTax.intmodule = 3 AND tblTax.intType = 2 AND tblTax.strDocNumber <> 'Discount Adj' 
																					 THEN CAST(JE2.intGLNumber AS nVarchar(50)) + ', ' + JE2.strLineComment 
																					 ELSE tblTax.strVendCustName 
																				END 
																	  END 
							   END,''), ',',';') AS strSource, 
				tblTaxDT.decAmtSubTax, 
				tblTaxDT.decTaxAmt, 
				tblTaxDT.decTotOthTax, 
				tblTax.lngTaxID, 
				tblTax.intModule, 
				tblTax.strDocNumber, 
				ISNULL(CASE tblTax.intModule WHEN 1 
											 THEN (SELECT strVAT 
												   FROM dbo.tblVendors 
												   WHERE strVendName = tbltax.strVendCustName) 
											 ELSE (SELECT strVAT 
												   FROM dbo.tblCustomers 
												   WHERE strCustName = tbltax.strVendCustName) 
					   END, '') AS strVendCustVatNo, 
				ISNULL(CASE WHEN tblTax.strDocNumber = 'Discount Adj' 
							THEN CASE WHEN tblTax.intModule = 5 
									  THEN ISNULL((SELECT tblCustPay.lngCustPayID 
												   FROM tblCustPay 
												   WHERE tblCustPay.lngJourID = tblTax.lngJournalID 
												   AND tblCustPay.dteJournalDate = tblTax.dteJournalDate),0) 
									  ELSE ISNULL((SELECT tblVendPay.lngVendPayID 
												   FROM tblVendPay 
												   WHERE tblVendPay.lngJourID = tblTax.lngJournalID 
												   AND tblVendPay.dteJournalDate = tblTax.dteJournalDate),0) 
								 END 
							ELSE 0 
					   END,0) AS lngPayID,
				tblTax.strVendCustName
		FROM tblTax 
		INNER JOIN tblTaxDT ON tblTax.lngTaxID = tblTaxDT.lngTaxID 
		LEFT JOIN tblJournalEntryDocCBDT JE1 ON tblTax.strDocNumber = JE1.strJEDocID 
											 AND tblTaxDT.intLine = JE1.intLineNo 
											 AND tblTax.intModule = 5 
											 AND tblTax.intType = 1 
											 AND JE1.intType = 0 
		LEFT JOIN tblJournalEntryDocCBDT JE2 ON tblTax.strDocNumber = JE2.strJEDocID 
											 AND tblTaxDT.intLine = JE2.intLineNo 
											 AND tblTax.intModule = 3 
											 AND tblTax.intType = 2 
											 AND JE2.intType = 1 
		WHERE (dteJournalDate BETWEEN @SQStart AND @SQFinish) 
		AND (tblTaxDT.decAmtSubTax != 0 OR tblTaxDT.decTaxAmt != 0 OR tblTaxDT.decTaxAmt != 0) 
		ORDER BY tblTaxDT.strTaxName, tblTaxDT.intType, tblTaxDT.bitRefundable, tblTaxDT.intStatus, tblTax.intModule, tblTax.dteJournalDate

	END

	IF @SQDisplayNames = 1
	BEGIN

		UPDATE #TempTAX
		SET strVendCustDesc = VEND.strVendDesc 
		FROM (SELECT strVendName,
					 strVendDesc
			  FROM tblVendors) VEND
		WHERE #TempTAX.strVendCustName = VEND.strVendName
		AND intModule IN (1, 3, 4)

		UPDATE #TempTAX
		SET strVendCustDesc = CUST.strCustDesc 
		FROM (SELECT strCustName,
					 strCustDesc
			  FROM tblCustomers) CUST
		WHERE #TempTAX.strVendCustName = CUST.strCustName
		AND intModule IN (2, 5)

	END

	SELECT	strTaxName,
			intStatus,
			bitRefundable,
			intType,
			dteJournalDate,
			strSource + CASE WHEN strVendCustDesc IS NULL 
							 THEN ''
							 ELSE ' - ' + strVendCustDesc
						END AS strSource,
			decAmtSubTax,
			decTaxAmt,
			decTotOthTax,
			lngTaxID,
			intModule,
			strDocNumber,
			strVendCustVatNo,
			lngPayID
	FROM #TempTAX
	ORDER BY lngID

	DROP TABLE #TempTAX
	
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptTaxesLoadQuery_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[SPRptTaxesLoadQuery_2]
(
	@inquery2 AS NVARCHAR(MAX),
	@inquery3 AS NVARCHAR(MAX)
)
AS
BEGIN

CREATE TABLE #Temp
(
	ROWID INT IDENTITY(1,1),
    strVendCust NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
)
CREATE TABLE #Temp1
(
	ROWID INT IDENTITY(1,1),
    Module NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
)
CREATE TABLE #Temp2
(
	ROWID INT IDENTITY(1,1),
	strDesc NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
)

DECLARE @ROWID_TEMP AS INT
DECLARE @ModuleID_TEMP1 AS NVARCHAR(200)
DECLARE @strVendCust_TEMP AS NVARCHAR(200)

INSERT INTO #Temp
	 SELECT Value FROM [fnSplitStringAsTable]((@inquery2),(',')) 

	 

	 INSERT INTO #Temp1
	 SELECT Value FROM [fnSplitStringAsTable]((@inquery3),(','))

	 --select * from #Temp
	-- select * from #Temp1

	  DECLARE db_cursor CURSOR FOR  
	 select ROWID from #Temp  

	 OPEN db_cursor   
	 FETCH NEXT FROM db_cursor INTO @ROWID_TEMP
	 
	 WHILE @@FETCH_STATUS = 0   
	 BEGIN 

		SELECT @strVendCust_TEMP = RIGHT(strVendCust, LEN(strVendCust) - (CHARINDEX(';', strVendCust) + 1)) FROM #Temp WHERE ROWID = @ROWID_TEMP
		SELECT @ModuleID_TEMP1 = Module FROM #Temp1 WHERE ROWID = @ROWID_TEMP
		
		IF @ModuleID_TEMP1 <> 6 AND @ModuleID_TEMP1 <> 7
		BEGIN
			IF @ModuleID_TEMP1 = 1 OR @ModuleID_TEMP1 = 3 OR @ModuleID_TEMP1 = 4 
			BEGIN
				IF EXISTS(SELECT IsNull(strVendDesc,'') FROM tblVendors WHERE strVendName = @strVendCust_TEMP)
				BEGIN
					INSERT INTO #Temp2
					SELECT IsNull(strVendDesc,'') FROM tblVendors WHERE strVendName = @strVendCust_TEMP
				END
				ELSE
				BEGIN
					INSERT INTO #Temp2
					SELECT NULL
				END
			END
			ELSE IF @ModuleID_TEMP1 = 2 OR @ModuleID_TEMP1 = 5
			BEGIN
				IF EXISTS(SELECT IsNull(strCustDesc,'') FROM tblCustomers WHERE strCustName = @strVendCust_TEMP)
				BEGIN
					INSERT INTO #Temp2
					SELECT IsNull(strCustDesc,'') FROM tblCustomers WHERE strCustName = @strVendCust_TEMP
				END
				ELSE
				BEGIN
					INSERT INTO #Temp2
					SELECT NULL
				END
			END
			ELSE
			BEGIN
				INSERT INTO #Temp2
				SELECT @strVendCust_TEMP
			END
		END
		ELSE
		BEGIN
			INSERT INTO #Temp2
			SELECT NULL
		END
		FETCH NEXT FROM db_cursor INTO @ROWID_TEMP
	 END   
CLOSE db_cursor   
DEALLOCATE db_cursor

select ROWID, ISNULL(strDesc,'') AS strDesc from #Temp2 

drop table #Temp2
drop table #Temp1
drop table #Temp 

END
GO
/****** Object:  StoredProcedure [dbo].[SPRptTaxesLoadQuery_3]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptTaxesLoadQuery_3]
@chkShowUnallocOnly_IsChecked AS BIT,
@SQStart AS DATE,
@SQFinish AS DATE,
@SQDisplayNames AS BIT
AS
BEGIN
	
	CREATE TABLE #TempTAX (
	[lngID] [int] IDENTITY(1,1),
	[intType] [int] NOT NULL,
	[dteJournalDate] [smalldatetime] NOT NULL,
	[strDocNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[strVendCustName] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[decAmount] [money] NOT NULL,
	[decVAT] [money] NOT NULL,
	[decTotal] [money] NOT NULL,
	[intModule] [tinyint] NOT NULL,
	[strVendCustVatNo] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[strVendCustDesc] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL)

	IF @chkShowUnallocOnly_IsChecked = 0 
	BEGIN

		INSERT INTO #TempTAX ([intType], [dteJournalDate], [strDocNumber], [strVendCustName], [decAmount], [decVAT], [decTotal], [intModule], [strVendCustVatNo])
		SELECT	tblTax.intType, 
				tblTax.dteJournalDate, 
				tblTax.strDocNumber, 
				tblTax.strVendCustName, 
				decAmount, 
				decVAT, 
				decTotal, 
				tblTax.intModule, 
				ISNULL(CASE tblTax.intModule WHEN 1 
											 THEN (SELECT strVAT 
												   FROM tblVendors 
												   WHERE strVendName = tbltax.strVendCustName) 
											 ELSE (SELECT strVAT 
												   FROM tblCustomers 
												   WHERE strCustName = tbltax.strVendCustName) 
					   END, '') AS strVendCustVatNo 
		FROM tblTax 
		LEFT JOIN tblTaxAllocations ON tblTax.lngTaxID = tblTaxAllocations.lngTaxID 
		WHERE (dteJournalDate >= @SQStart 
		AND dteJournalDate <= @SQFinish) 
		AND (tblTax.decAmount != 0 OR tblTax.decTotal != 0) 
		ORDER BY tblTax.intType, tblTax.dteJournalDate

	END
	ELSE
	BEGIN

		INSERT INTO #TempTAX ([intType], [dteJournalDate], [strDocNumber], [strVendCustName], [decAmount], [decVAT], [decTotal], [intModule], [strVendCustVatNo])
		SELECT	tblTax.intType, 
				tblTax.dteJournalDate, 
				tblTax.strDocNumber, 
				tblTax.strVendCustName, 
				decAmount, 
				decVAT, 
				decTotal, 
				tblTax.intModule, 
				ISNULL(CASE tblTax.intModule WHEN 1 
											 THEN (SELECT strVAT 
												   FROM tblVendors 
												   WHERE strVendName = tbltax.strVendCustName) 
											 ELSE (SELECT strVAT 
												   FROM tblCustomers 
												   WHERE strCustName = tbltax.strVendCustName) 
					   END, '') AS strVendCustVatNo 
		FROM tblTax 
		LEFT JOIN tblTaxAllocations ON tblTax.lngTaxID = tblTaxAllocations.lngTaxID 
		WHERE (dteJournalDate >= @SQStart 
		AND dteJournalDate <= @SQFinish) 
		AND (tblTax.decAmount != 0 OR tblTax.decTotal != 0) 
		AND (tblTax.decVAT <> 0 AND ISNULL(tblTaxAllocations.decUnAllocatedAmt, -1) <> 0) 
		ORDER BY tblTax.intType, tblTax.dteJournalDate

	END
	
	IF @SQDisplayNames = 1
	BEGIN

		UPDATE #TempTAX
		SET strVendCustDesc = VEND.strVendDesc 
		FROM (SELECT strVendName,
					 strVendDesc
			  FROM tblVendors) VEND
		WHERE #TempTAX.strVendCustName = VEND.strVendName
		AND intModule IN (1, 3, 4)

		UPDATE #TempTAX
		SET strVendCustDesc = CUST.strCustDesc 
		FROM (SELECT strCustName,
					 strCustDesc
			  FROM tblCustomers) CUST
		WHERE #TempTAX.strVendCustName = CUST.strCustName
		AND intModule IN (2, 5)

	END

	SELECT	intType,
			dteJournalDate,
			strDocNumber,
			strVendCustName + CASE WHEN strVendCustDesc IS NULL 
								   THEN ''
								   ELSE ' - ' + strVendCustDesc
							  END AS strVendCustName,
			decAmount,
			decVAT,
			decTotal,
			intModule,
			strVendCustVatNo
	FROM #TempTAX
	ORDER BY lngID

	DROP TABLE #TempTAX

END
GO
/****** Object:  StoredProcedure [dbo].[SPRptTaxesLoadQuery_4]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptTaxesLoadQuery_4]
@optAll_IsChecked AS BIT,
@SQCriteria AS NVARCHAR(200),
@SQStart AS DATE,
@SQFinish AS DATE
AS
BEGIN
	
	IF @optAll_IsChecked = 0
	BEGIN
	SELECT tblTaxDT.strTaxName, tblTaxDT.intStatus, tblTaxDT.bitRefundable, tblTaxDT.intType, SUM(tblTaxDT.decAmtSubTax) As decAmtSubTax, SUM(tblTaxDT.decTaxAmt) As decTaxAmt, SUM(tblTaxDT.decTotOthTax) As decTotOthTax FROM tblTax INNER JOIN tblTaxDT ON tblTax.lngTaxID = tblTaxDT.lngTaxID WHERE (dteJournalDate BETWEEN @SQStart AND @SQFinish) 
	AND tblTaxDT.strTaxCode IN ((SELECT DISTINCT * FROM dbo.fnSplitStringAsTable(@SQCriteria, ','))) 
	GROUP BY tblTaxDT.strTaxName, tblTaxDT.intStatus, tblTaxDT.bitRefundable, tblTaxDT.intType ORDER BY tblTaxDT.strTaxName, tblTaxDT.bitRefundable, tblTaxDT.intStatus, tblTaxDT.intType
	END
	ELSE
	BEGIN
		SELECT tblTaxDT.strTaxName, tblTaxDT.intStatus, tblTaxDT.bitRefundable, tblTaxDT.intType, SUM(tblTaxDT.decAmtSubTax) As decAmtSubTax, SUM(tblTaxDT.decTaxAmt) As decTaxAmt, 
SUM(tblTaxDT.decTotOthTax) As decTotOthTax FROM tblTax INNER JOIN tblTaxDT ON tblTax.lngTaxID = tblTaxDT.lngTaxID WHERE (dteJournalDate BETWEEN @SQStart AND @SQFinish) 
GROUP BY tblTaxDT.strTaxName, tblTaxDT.intStatus, tblTaxDT.bitRefundable, tblTaxDT.intType ORDER BY tblTaxDT.strTaxName, tblTaxDT.bitRefundable, 
tblTaxDT.intStatus, tblTaxDT.intType
	END
	
END
GO

/****** Object:  StoredProcedure [dbo].[SPRptTaxesLoadQuery_5]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptTaxesLoadQuery_5]
@optAll_IsChecked AS BIT,
@SQCriteria AS NVARCHAR(200),
	@SQStart AS DATE,
@SQFinish AS DATE
AS
BEGIN
	IF @optAll_IsChecked = 0
	BEGIN
		SELECT	tblTaxDT.strTaxName, tblTaxDT.strTaxCode, tblTaxDT.intStatus, tblTaxDT.bitRefundable, tblTaxDT.intType, 
				SUM(tblTaxDT.decAmtSubTax), SUM(tblTaxDT.decTaxAmt), SUM(tblTaxDT.decTotOthTax), ISNULL(tblTaxCodes.strDescription,'')
		FROM tblTax 
		INNER JOIN tblTaxDT ON tblTax.lngTaxID = tblTaxDT.lngTaxID 
		LEFT JOIN tblTaxCodes ON tblTaxDT.strTaxCode = tblTaxCodes.strTaxCode
		WHERE dteJournalDate >= @SQStart AND dteJournalDate <= @SQFinish 
		AND tblTaxDT.strTaxCode IN ((SELECT DISTINCT * FROM dbo.fnSplitStringAsTable(@SQCriteria, ',')))
		GROUP BY tblTaxDT.strTaxName, tblTaxDT.strTaxCode, tblTaxDT.intStatus, tblTaxDT.bitRefundable, tblTaxDT.intType, tblTaxCodes.strDescription 
		ORDER BY tblTaxDT.strTaxName, tblTaxDT.bitRefundable DESC, tblTaxDT.intType, tblTaxDT.intStatus, tblTaxDT.strTaxCode
	END
	ELSE
	BEGIN
		SELECT	tblTaxDT.strTaxName, tblTaxDT.strTaxCode, tblTaxDT.intStatus, tblTaxDT.bitRefundable, tblTaxDT.intType, 
				SUM(tblTaxDT.decAmtSubTax), SUM(tblTaxDT.decTaxAmt), SUM(tblTaxDT.decTotOthTax), ISNULL(tblTaxCodes.strDescription,'')
		FROM tblTax 
		INNER JOIN tblTaxDT ON tblTax.lngTaxID = tblTaxDT.lngTaxID 
		LEFT JOIN tblTaxCodes ON tblTaxDT.strTaxCode = tblTaxCodes.strTaxCode
		WHERE dteJournalDate >= @SQStart AND dteJournalDate <= @SQFinish 
		GROUP BY tblTaxDT.strTaxName, tblTaxDT.strTaxCode, tblTaxDT.intStatus, tblTaxDT.bitRefundable, tblTaxDT.intType, tblTaxCodes.strDescription 
		ORDER BY tblTaxDT.strTaxName, tblTaxDT.bitRefundable DESC, tblTaxDT.intType, tblTaxDT.intStatus, tblTaxDT.strTaxCode
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptTaxesLoadQuery_6]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptTaxesLoadQuery_6]
(
	@inquery4 AS NVARCHAR(MAX),
	@inquery5 AS NVARCHAR(MAX)
)
AS
BEGIN

CREATE TABLE #Temp
(
	ROWID INT IDENTITY(1,1),
    strVendCust NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
)
CREATE TABLE #Temp1
(
	ROWID INT IDENTITY(1,1),
    Module NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
)
CREATE TABLE #Temp2
(
	ROWID INT IDENTITY(1,1),
	strDesc NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
)

DECLARE @ROWID_TEMP AS INT
DECLARE @ModuleID_TEMP1 AS NVARCHAR(200)
DECLARE @strVendCust_TEMP AS NVARCHAR(200)

INSERT INTO #Temp
	 SELECT Value FROM [fnSplitStringAsTable]((@inquery4),(','))  where Value <> '''0' and Value <> '0''' and  Value <> '0'

	 

	 INSERT INTO #Temp1
	 SELECT Value FROM [fnSplitStringAsTable]((@inquery5),(',')) where Value <> '''0' and Value <> '0''' and  Value <> '0'

	 DECLARE db_cursor CURSOR FOR  
	 select ROWID from #Temp  

	 OPEN db_cursor   
	 FETCH NEXT FROM db_cursor INTO @ROWID_TEMP
	 
	 WHILE @@FETCH_STATUS = 0   
	 BEGIN 
	
		SELECT @strVendCust_TEMP = strVendCust FROM #Temp WHERE ROWID = @ROWID_TEMP
		SELECT @ModuleID_TEMP1 = Module FROM #Temp1 WHERE ROWID = @ROWID_TEMP
		

		IF @ModuleID_TEMP1 = 1 OR @ModuleID_TEMP1 = 3 OR @ModuleID_TEMP1 = 4 
		BEGIN
			IF EXISTS(SELECT IsNull(strVendDesc,'') FROM tblVendors WHERE strVendName = @strVendCust_TEMP)
			BEGIN
				INSERT INTO #Temp2
				SELECT IsNull(strVendDesc,'') FROM tblVendors WHERE strVendName = @strVendCust_TEMP
			END
			ELSE
			BEGIN
			INSERT INTO #Temp2
				SELECT @strVendCust_TEMP
			END
		END
		ELSE IF @ModuleID_TEMP1 = 2
		BEGIN
			IF EXISTS(SELECT IsNull(strCustDesc,'') FROM tblCustomers WHERE strCustName = @strVendCust_TEMP)
			BEGIN
				INSERT INTO #Temp2
				SELECT IsNull(strCustDesc,'') FROM tblCustomers WHERE strCustName = @strVendCust_TEMP
			END
			ELSE
			BEGIN
				INSERT INTO #Temp2
				SELECT @strVendCust_TEMP
			END
		END
		ELSE
		BEGIN
			INSERT INTO #Temp2
			SELECT @strVendCust_TEMP
		END
		FETCH NEXT FROM db_cursor INTO @ROWID_TEMP
	 END   
CLOSE db_cursor   
DEALLOCATE db_cursor

select * from #Temp2 
drop table #Temp2
drop table #Temp1
drop table #Temp 

END
GO
/****** Object:  StoredProcedure [dbo].[SPRptTaxesLoadQuery_7]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptTaxesLoadQuery_7]
@optAll_IsChecked AS BIT,
@SQCriteria AS NVARCHAR(200),
@SQStart AS DATE,
@SQFinish AS DATE,
@SQDisplayNames AS BIT
AS
BEGIN

	CREATE TABLE #TempTAX (
	[lngID] [int] IDENTITY(1,1),
	[strTaxName] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[intStatus] [int] NOT NULL,
	[bitRefundable] [bit] NOT NULL,
	[intType] [int] NOT NULL,
	[dteJournalDate] [smalldatetime] NOT NULL,
	[strSource] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[decAmtSubTax] [money] NOT NULL,
	[decTaxAmt] [money] NOT NULL,
	[decTotOthTax] [money] NOT NULL,
	[lngTaxID] [bigint] NOT NULL,
	[intModule] [tinyint] NOT NULL,
	[strDocNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[strVendCustVatNo] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[lngPayID] [bigint] NOT NULL,
	[strTaxCode] [nvarchar](2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[strTaxDesc] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[strVendCustName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[strVendCustDesc] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL)

	IF @optAll_IsChecked = 0 
	BEGIN

		INSERT INTO #TempTAX ([strTaxName], [intStatus], [bitRefundable], [intType], [dteJournalDate], [strSource], [decAmtSubTax], [decTaxAmt], [decTotOthTax], 
							  [lngTaxID], [intModule], [strDocNumber], [strVendCustVatNo], [lngPayID], [strTaxCode], [strTaxDesc], [strVendCustName])
		SELECT	tblTaxDT.strTaxName, 
				tblTaxDT.intStatus, 
				tblTaxDT.bitRefundable, 
				tblTaxDT.intType, 
				tblTax.dteJournalDate, 
				REPLACE(ISNULL(CASE WHEN tblTax.strDocNumber = 'Discount Adj' 
									THEN CASE WHEN tblTax.intModule = 5 
											  THEN ISNULL((SELECT tblCustPay.strSource 
														   FROM tblCustPay 
														   WHERE tblCustPay.lngJourID = tblTax.lngJournalID 
														   AND tblCustPay.dteJournalDate = tblTax.dteJournalDate),'') 
											  ELSE ISNULL((SELECT tblVendPay.strSource 
														   FROM tblVendPay 
														   WHERE tblVendPay.lngJourID = tblTax.lngJournalID 
														   AND tblVendPay.dteJournalDate = tblTax.dteJournalDate),'') 
										 END + ', ' + tblTax.strDocNumber 
										 ELSE tblTax.strDocNumber + ', ' + CASE WHEN tblTax.intModule = 5 AND tblTax.intType = 1 AND tblTax.strDocNumber <> 'Discount Adj' 
																				THEN CAST(JE1.intGLNumber AS nVarchar(50)) + ', ' + JE1.strLineComment 
																				ELSE CASE WHEN tblTax.intmodule = 3 AND tblTax.intType = 2 AND tblTax.strDocNumber <> 'Discount Adj' 
																						  THEN CAST(JE2.intGLNumber AS nVarchar(50)) + ', ' + JE2.strLineComment 
																						  ELSE tblTax.strVendCustName 
																					 END 
																		   END 
							   END,''), ',',';') AS strSource, 
				tblTaxDT.decAmtSubTax, 
				tblTaxDT.decTaxAmt, 
				tblTaxDT.decTotOthTax, 
				tblTax.lngTaxID, 
				tblTax.intModule, 
				tblTax.strDocNumber, 
				ISNULL(CASE tblTax.intModule WHEN 1 
											 THEN (SELECT strVAT 
												   FROM tblVendors 
												   WHERE strVendName = tbltax.strVendCustName) 
											 ELSE (SELECT strVAT 
												   FROM tblCustomers 
												   WHERE strCustName = tbltax.strVendCustName) 
					   END, '') AS strVendCustVatNo, 
				ISNULL(CASE WHEN tblTax.strDocNumber = 'Discount Adj' 
							THEN CASE WHEN tblTax.intModule = 5 
									  THEN ISNULL((SELECT tblCustPay.lngCustPayID 
												   FROM tblCustPay 
												   WHERE tblCustPay.lngJourID = tblTax.lngJournalID 
												   AND tblCustPay.dteJournalDate = tblTax.dteJournalDate),0) 
									  ELSE ISNULL((SELECT tblVendPay.lngVendPayID 
												   FROM tblVendPay 
												   WHERE tblVendPay.lngJourID = tblTax.lngJournalID 
												   AND tblVendPay.dteJournalDate = tblTax.dteJournalDate),0) 
								 END 
							ELSE 0 
					   END,0) AS lngPayID, 
				tblTaxDT.strTaxCode, 
				ISNULL((SELECT TC.strDescription 
						FROM tblTaxCodes TC 
						WHERE TC.strTaxCode = tblTaxDT.strTaxCode),'') AS strTaxDesc,
				tblTax.strVendCustName 
		FROM tblTax 
		INNER JOIN tblTaxDT ON tblTax.lngTaxID = tblTaxDT.lngTaxID 
		LEFT JOIN tblJournalEntryDocCBDT JE1 ON tblTax.strDocNumber = JE1.strJEDocID 
											 AND tblTaxDT.intLine = JE1.intLineNo 
											 AND tblTax.intModule = 5 
											 AND tblTax.intType = 1 
											 AND JE1.intType = 0 
		LEFT JOIN tblJournalEntryDocCBDT JE2 ON tblTax.strDocNumber = JE2.strJEDocID 
											 AND tblTaxDT.intLine = JE2.intLineNo 
											 AND tblTax.intModule = 3 
											 AND tblTax.intType = 2 
											 AND JE2.intType = 1 
		WHERE (dteJournalDate BETWEEN @SQStart AND @SQFinish) 
		AND tblTaxDT.strTaxCode IN ((SELECT DISTINCT * FROM dbo.fnSplitStringAsTable(@SQCriteria, ','))) 
		AND (tblTaxDT.decAmtSubTax != 0 OR tblTaxDT.decTaxAmt != 0 OR tblTaxDT.decTaxAmt != 0) 
		ORDER BY tblTaxDT.strTaxName, tblTaxDT.intType, tblTaxDT.bitRefundable, tblTaxDT.intStatus, tblTax.intModule, tblTaxDT.strTaxCode, tblTax.dteJournalDate
	
	END
	ELSE
	BEGIN

		INSERT INTO #TempTAX ([strTaxName], [intStatus], [bitRefundable], [intType], [dteJournalDate], [strSource], [decAmtSubTax], [decTaxAmt], [decTotOthTax], 
							  [lngTaxID], [intModule], [strDocNumber], [strVendCustVatNo], [lngPayID], [strTaxCode], [strTaxDesc], [strVendCustName])
		SELECT	tblTaxDT.strTaxName, 
				tblTaxDT.intStatus, 
				tblTaxDT.bitRefundable, 
				tblTaxDT.intType, 
				tblTax.dteJournalDate, 
				REPLACE(ISNULL(CASE WHEN tblTax.strDocNumber = 'Discount Adj' 
									THEN CASE WHEN tblTax.intModule = 5 
											  THEN ISNULL((SELECT tblCustPay.strSource 
														   FROM tblCustPay 
														   WHERE tblCustPay.lngJourID = tblTax.lngJournalID 
														   AND tblCustPay.dteJournalDate = tblTax.dteJournalDate),'') 
											  ELSE ISNULL((SELECT tblVendPay.strSource 
														   FROM tblVendPay 
														   WHERE tblVendPay.lngJourID = tblTax.lngJournalID 
														   AND tblVendPay.dteJournalDate = tblTax.dteJournalDate),'') 
										 END + ', ' + tblTax.strDocNumber 
									ELSE tblTax.strDocNumber + ', ' + CASE WHEN tblTax.intModule = 5 AND tblTax.intType = 1 AND tblTax.strDocNumber <> 'Discount Adj' 
																		   THEN CAST(JE1.intGLNumber AS nVarchar(50)) + ', ' + JE1.strLineComment 
																		   ELSE CASE WHEN tblTax.intmodule = 3 AND tblTax.intType = 2 AND tblTax.strDocNumber <> 'Discount Adj' 
																					 THEN CAST(JE2.intGLNumber AS nVarchar(50)) + ', ' + JE2.strLineComment 
																					 ELSE tblTax.strVendCustName 
																				END 
																	  END 
							   END,''), ',',';') AS strSource, 
				tblTaxDT.decAmtSubTax, 
				tblTaxDT.decTaxAmt, 
				tblTaxDT.decTotOthTax, 
				tblTax.lngTaxID, 
				tblTax.intModule, 
				tblTax.strDocNumber, 
				ISNULL(CASE tblTax.intModule WHEN 1 
											 THEN (SELECT strVAT 
												   FROM tblVendors 
												   WHERE strVendName = tbltax.strVendCustName) 
											 ELSE (SELECT strVAT 
												   FROM tblCustomers 
												   WHERE strCustName = tbltax.strVendCustName) 
					   END, '') AS strVendCustVatNo, 
				ISNULL(CASE WHEN tblTax.strDocNumber = 'Discount Adj' 
						    THEN CASE WHEN tblTax.intModule = 5 
									  THEN ISNULL((SELECT tblCustPay.lngCustPayID 
												   FROM tblCustPay 
												   WHERE tblCustPay.lngJourID = tblTax.lngJournalID 
												   AND tblCustPay.dteJournalDate = tblTax.dteJournalDate),0) 
									  ELSE ISNULL((SELECT tblVendPay.lngVendPayID 
												   FROM tblVendPay 
												   WHERE tblVendPay.lngJourID = tblTax.lngJournalID 
												   AND tblVendPay.dteJournalDate = tblTax.dteJournalDate),0) 
								 END 
							ELSE 0 
					   END,0), 
				tblTaxDT.strTaxCode, 
				ISNULL((SELECT TC.strDescription 
						FROM tblTaxCodes TC 
						WHERE TC.strTaxCode = tblTaxDT.strTaxCode),'') AS strTaxDesc,
				tblTax.strVendCustName 
		FROM tblTax 
		INNER JOIN tblTaxDT ON tblTax.lngTaxID = tblTaxDT.lngTaxID 
		LEFT JOIN tblJournalEntryDocCBDT JE1 ON tblTax.strDocNumber = JE1.strJEDocID 
											 AND tblTaxDT.intLine = JE1.intLineNo 
											 AND tblTax.intModule = 5 
											 AND tblTax.intType = 1 
											 AND JE1.intType = 0 
		LEFT JOIN tblJournalEntryDocCBDT JE2 ON tblTax.strDocNumber = JE2.strJEDocID 
											 AND tblTaxDT.intLine = JE2.intLineNo 
											 AND tblTax.intModule = 3 
											 AND tblTax.intType = 2 
											 AND JE2.intType = 1 
		WHERE (dteJournalDate BETWEEN @SQStart AND @SQFinish) 
		AND (tblTaxDT.decAmtSubTax != 0 OR tblTaxDT.decTaxAmt != 0 OR tblTaxDT.decTaxAmt != 0) 
		ORDER BY tblTaxDT.strTaxName, tblTaxDT.intType, tblTaxDT.bitRefundable, tblTaxDT.intStatus, tblTax.intModule, tblTaxDT.strTaxCode, tblTax.dteJournalDate

	END
	
	IF @SQDisplayNames = 1
	BEGIN

		UPDATE #TempTAX
		SET strVendCustDesc = VEND.strVendDesc 
		FROM (SELECT strVendName,
					 strVendDesc
			  FROM tblVendors) VEND
		WHERE #TempTAX.strVendCustName = VEND.strVendName
		AND intModule IN (1, 3, 4)

		UPDATE #TempTAX
		SET strVendCustDesc = CUST.strCustDesc 
		FROM (SELECT strCustName,
					 strCustDesc
			  FROM tblCustomers) CUST
		WHERE #TempTAX.strVendCustName = CUST.strCustName
		AND intModule IN (2, 5)

	END

	SELECT	strTaxName,
			intStatus,
			bitRefundable,
			intType,
			dteJournalDate,
			strSource + CASE WHEN strVendCustDesc IS NULL 
							 THEN ''
							 ELSE ' - ' + strVendCustDesc
						END AS strSource,
			decAmtSubTax,
			decTaxAmt,
			decTotOthTax,
			lngTaxID,
			intModule,
			strDocNumber,
			strVendCustVatNo,
			lngPayID,
			strTaxCode,
			strTaxDesc
	FROM #TempTAX
	ORDER BY lngID

	DROP TABLE #TempTAX

END
GO
/****** Object:  StoredProcedure [dbo].[SPRptTaxesRefreshForm_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptTaxesRefreshForm_1]
@SQSearch AS NVARCHAR(MAX),
@optSearch_IsChecked AS BIT

AS
BEGIN
	IF LEN(@SQSearch) > 1 
	BEGIN
	SELECT strTaxCode, strDescription FROM tblTaxCodes WHERE strTaxCode LIKE @SQSearch OR strDescription LIKE @SQSearch 
	END
	ELSE
	BEGIN
	SELECT strTaxCode, strDescription FROM tblTaxCodes 
	END
	
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptTrialBalLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptTrialBalLoadQuery_1]
	@optCurrentYear_IsChecked  bit,
	@optPreviousYear_IsChecked bit,
	@optHistoryYear_IsChecked bit,
	@SQuidYearID uniqueidentifier
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		SELECT intGLNumber, strDesc, decOpenBalance, intAccType FROM tblAccounts WHERE (intGroupCode < 3) AND bitLinkCEarnings = 0 ORDER BY intAccType, intGLNumber
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		SELECT intGLNumber, strDesc, decOpenBalance, intAccType FROM tblAccountsLY WHERE (intGroupCode < 3) AND bitLinkCEarnings = 0 ORDER BY intAccType, intGLNumber
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		SELECT intGLNumber, strDesc, decOpenBalance, intAccType FROM tblAccountsHist WHERE (intGroupCode < 3) AND (uidYearID = @SQuidYearID) AND bitLinkCEarnings = 0 ORDER BY intAccType, intGLNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptTrialBalLoadQuery_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptTrialBalLoadQuery_2] 
	@optCurrentYear_IsChecked  bit,
	@optPreviousYear_IsChecked bit,
	@optHistoryYear_IsChecked bit,
	@SQAsAtDate date,
	@SQuidYearID UNIQUEIDENTIFIER
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		SELECT tblJournalEnt.intGLNumber, SUM(tblJournalEnt.decAmount) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate <= @SQAsAtDate) GROUP BY tblJournalEnt.intGLNumber
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		SELECT tblJournalEntLY.intGLNumber, SUM(tblJournalEntLY.decAmount) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) GROUP BY tblJournalEntLY.intGLNumber
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		SELECT tblJournalEntHist.intGLNumber, SUM(tblJournalEntHist.decAmount) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate <= @SQAsAtDate) AND (tblJournalEntHist.uidYearID = @SQuidYearID) GROUP BY tblJournalEntHist.intGLNumber
	END

END
GO
/****** Object:  StoredProcedure [dbo].[SPRptTrialBalMovementLoadQuery_1]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptTrialBalMovementLoadQuery_1]
	@optCurrentYear_IsChecked  bit,
	@optPreviousYear_IsChecked bit,
	@optHistoryYear_IsChecked bit,
	@SQuidYearID uniqueidentifier
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		SELECT intGLNumber, strDesc, decOpenBalance, intAccType FROM tblAccounts WHERE (intGroupCode < 3) AND bitLinkCEarnings = 0 ORDER BY intAccType, intGLNumber
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		SELECT intGLNumber, strDesc, decOpenBalance, intAccType FROM tblAccountsLY WHERE (intGroupCode < 3) AND bitLinkCEarnings = 0 ORDER BY intAccType, intGLNumber
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		SELECT intGLNumber, strDesc, decOpenBalance, intAccType FROM tblAccountsHist WHERE (intGroupCode < 3) AND (uidYearID = @SQuidYearID) AND bitLinkCEarnings = 0 ORDER BY intAccType, intGLNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptTrialBalMovementLoadQuery_2]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptTrialBalMovementLoadQuery_2]
(
	@optCurrentYear_IsChecked AS BIT,
	@optPreviousYear_IsChecked AS BIT,
	@optHistoryYear_IsChecked AS BIT,
	@SQFromDate AS DATE,
	@SQToDate AS DATE,
	@SQuidYearID AS UNIQUEIDENTIFIER
)
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		SELECT tblJournalEnt.intGLNumber, SUM(tblJournalEnt.decAmount) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (@SQFromDate <= tblJournal.dteJournalDate AND tblJournal.dteJournalDate <= @SQToDate) GROUP BY tblJournalEnt.intGLNumber
	END
	ELSE IF @optPreviousYear_IsChecked = 1 
	BEGIN
		SELECT tblJournalEntLY.intGLNumber, SUM(tblJournalEntLY.decAmount) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (@SQFromDate <= tblJournalLY.dteJournalDate AND tblJournalLY.dteJournalDate <= @SQToDate) GROUP BY tblJournalEntLY.intGLNumber
	END
	ELSE IF @optHistoryYear_IsChecked = 1 
	BEGIN
		SELECT tblJournalEntHist.intGLNumber, SUM(tblJournalEntHist.decAmount) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (@SQFromDate <= tblJournalHist.dteJournalDate AND tblJournalHist.dteJournalDate <= @SQToDate) AND (tblJournalEntHist.uidYearID = @SQuidYearID) GROUP BY tblJournalEntHist.intGLNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptVendorReconLoadQuery]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SPRptVendorReconLoadQuery]
(
	@dteReconDate datetime = NULL,
	@strVendorNo nvarchar(50) = NULL,
	@IsReconciled bit = 0
)
AS
BEGIN
	IF @IsReconciled = 0
	BEGIN
		SELECT strName ,tblVendors.strVendName,strVendDesc, 
		Amount = ISNULL(CASE WHEN decDebit > 0 THEN decDebit ELSE decCredit * -1 END,0),Isnull(tblBal.decBalDue,0) AS decBalDue,
		decStatementBalance = ISNULL(decStatementBalance,0),blnIsReconciled = CASE WHEN tblVendorRecon.lngVenReconID IS NULL THEN 0 ELSE 1 END,ISNULL(tblBal.strCurrency,tblVendors.strCurrency) As strCurrency
		FROM tblVendors
		LEFT JOIN (SELECT ISNULL(SUM(CASE WHEN tblVendTransDT.bitIsForeign = 1 Then tblVendTransDT.decAmountF ELSE tblVendTransDT.decAmount END),0) AS decBalDue,strVendName,strCurrency FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID 
		WHERE tblVendTransDT.bitReversed = 0 AND (tblVendTrans.dteJournalDate <= @dteReconDate OR @dteReconDate IS NULL) GROUP BY strVendName,strCurrency) AS tblBal ON tblVendors.strVendName = tblBal.strVendName
		CROSS JOIN tblVendorReconReasons
		LEFT JOIN tblVendorRecon ON tblVendors.strVendName = tblVendorRecon.strVendorNo AND (tblVendorRecon.dteReconDate = @dteReconDate OR @dteReconDate IS NULL)
		LEFT JOIN tblVendorReconDT ON tblVendorRecon.lngVenReconID = tblVendorReconDT.lngVenReconID AND tblVendorReconReasons.lngID = tblVendorReconDT.lngReconReason
		WHERE (tblVendors.strVendName = @strVendorNo OR @strVendorNo IS NULL) ORDER BY tblVendors.strVendName
	END
	ELSE
	BEGIN
		SELECT strName ,tblVendors.strVendName,strVendDesc, 
		Amount = ISNULL(CASE WHEN decDebit > 0 THEN decDebit ELSE decCredit * -1 END,0),Isnull(tblBal.decBalDue,0) AS decBalDue,
		decStatementBalance = ISNULL(decStatementBalance,0),blnIsReconciled = CASE WHEN tblVendorRecon.lngVenReconID IS NULL THEN 0 ELSE 1 END,ISNULL(tblBal.strCurrency,tblVendors.strCurrency) As strCurrency
		FROM tblVendors
		LEFT JOIN (SELECT ISNULL(SUM(CASE WHEN tblVendTransDT.bitIsForeign = 1 Then tblVendTransDT.decAmountF ELSE tblVendTransDT.decAmount END),0) AS decBalDue,strVendName,strCurrency FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID 
		WHERE tblVendTransDT.bitReversed = 0 AND (tblVendTrans.dteJournalDate <= @dteReconDate OR @dteReconDate IS NULL) GROUP BY strVendName,strCurrency) AS tblBal ON tblVendors.strVendName = tblBal.strVendName
		CROSS JOIN tblVendorReconReasons
		INNER JOIN tblVendorRecon ON tblVendors.strVendName = tblVendorRecon.strVendorNo AND (tblVendorRecon.dteReconDate = @dteReconDate OR @dteReconDate IS NULL)
		LEFT JOIN tblVendorReconDT ON tblVendorRecon.lngVenReconID = tblVendorReconDT.lngVenReconID AND tblVendorReconReasons.lngID = tblVendorReconDT.lngReconReason
		WHERE (tblVendors.strVendName = @strVendorNo OR @strVendorNo IS NULL) ORDER BY tblVendors.strVendName
	END

END
GO
/****** Object:  StoredProcedure [dbo].[SPSalesOrder]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/******************* End [GetCustomerInfoForEmail] ********************/

/******************* Start [SPSalesOrder] ********************/
CREATE PROCEDURE [dbo].[SPSalesOrder]
@SQDocNumber AS VARCHAR(250) = NULL

AS
BEGIN

	SET NOCOUNT ON;
			SELECT tblOrderDocDT.*
				,tblOrderDocDTPrj.strProjNumber
				,tblProjects.strProjName
				,ISNULL(tblInv.decSumAvail, 0) AS decSumAvail
				,'' AS strBinLoc
				,tblInv.strBarCode
				,tblInv.strBarCode2
				,(
					SELECT bitInvImgOnSQ
					FROM tblCoOpts
					) AS bitShowImage
				,tblInvImg.imgData AS imgImage
				,tblOrderDocDT.strPartExtendedDesc AS strExtendedDesc
				,tblInv.bitInvExtDescOnSQ AS bitShowExtendedDesc
				,tblOrderDoc.strSoldTo as tblOrderDoc_strSoldTo
				,tblOrderDoc.strShipTo as tblOrderDoc_strShipTo
				,tblOrderDoc.strCustName as tblOrderDoc_strCustName 
			,tblOrderDoc.dteJournalDate as tblOrderDoc_dteJournalDate
			,tblOrderDoc.dteRequired as tblOrderDoc_dteRequired
			,tblOrderDoc.strReference as tblOrderDoc_strReference
			,tblOrderDoc.decTotal as tblOrderDoc_decTotal
			,tblOrderDoc.strNotes as tblOrderDoc_strNotes
			,tblOrderDoc.strSalesName as tblOrderDoc_strSalesName
			,tblOrderDoc.strAddInfo as tblOrderDoc_strAddInfo
			,tblOrderDoc.strTerm as tblOrderDoc_strTerm
			,tblOrderDoc.strSubFormated as tblOrderDoc_strSubFormated
			,tblOrderDoc.strDiscFormatted as tblOrderDoc_strDiscFormatted
			,tblOrderDoc.strVATFormatted as tblOrderDoc_strVATFormatted
			,tblOrderDoc.strTotFormatted as tblOrderDoc_strTotFormatted
			,tblOrderDoc.strDelMethodCode as tblOrderDoc_strDelMethodCode 
			FROM tblOrderDocDT
			INNER JOIN tblOrderDoc ON tblOrderDocDT.strOrdDocID = tblOrderDoc.strOrdDocID
			INNER JOIN tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
			LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
				AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
			LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
			LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
				AND tblInvImg.bitDefaultImage = 1
			WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
				AND tblOrderDocDT.bitDiscountTax = 0
			ORDER BY tblOrderDocDT.intLineNo

			SELECT strOrdDocID from tblOrderDocDT 
			WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
				AND tblOrderDocDT.bitDiscountTax = 0
END
GO
/****** Object:  StoredProcedure [dbo].[SPSalesOrderData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/************* [dbo].[SPCopyInvoiceMerge] End *************/

/************* [dbo].[SPSalesOrderData] start *************/

CREATE PROCEDURE [dbo].[SPSalesOrderData] @SQDocNumber AS VARCHAR(250) = NULL
	,@IsCustStockCodes AS BIT
AS
BEGIN
	IF (@IsCustStockCodes = 1)
	BEGIN
		SELECT tblOrderDocDT.*
			,tblOrderDocDTPrj.strProjNumber
			,tblProjects.strProjName
			,ISNULL(tblInv.decSumAvail, 0) AS decSumAvail
			,ISNULL(tblInv.strBinLoc, '') AS strBinLoc
			,tblInv.strBarCode
			,tblInv.strBarCode2
			,(
				SELECT bitInvImgOnSO
				FROM tblCoOpts
				) AS bitShowImage
			,tblInvImg.imgData AS imgImage
			,tblOrderDocDT.strPartExtendedDesc AS strExtendedDesc
			,tblInv.bitInvExtDescOnSO AS bitShowExtendedDesc
			,ISNULL(tblInvCustomer.strItemCode, '') AS strItemCode
			,ISNULL(tblInvCustomer.strItemDesc, '') AS strItemDesc
			,(
				SELECT STUFF((
							SELECT ',' + tblOrderDocDTSerial.strSerialNumber
							FROM tblOrderDocDTSerial
							INNER JOIN tblOrderDocDT ON tblOrderDocDTSerial.strOrdDocID = tblOrderDocDT.strOrdDocID
								AND tblOrderDocDTSerial.intLineNo = tblOrderDocDT.intLineNo
							LEFT JOIN tblInvSerialExt ON tblOrderDocDT.strPartNumber = tblInvSerialExt.strPartNumber
								AND tblOrderDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
							INNER JOIN tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
							LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
							WHERE tblOrderDocDTSerial.strOrdDocID = @SQDocNumber
								AND tblInvSerialTypes.bitPrintInv = 1
							ORDER BY tblOrderDocDTSerial.intLineNo
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strSerialNumber
			,(
				SELECT STUFF((
							SELECT ',' + TEMP.PartNumber
							FROM (
								SELECT COMP.strPartNumber AS PartNumber
								FROM tblOrderDoc HDR
								INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
								INNER JOIN tblManBOM BOM ON DTL.strPartNumber = BOM.strPartNumber
									AND DTL.strLocation = BOM.strLocation
								INNER JOIN tblManBOMCompInv COMP ON BOM.lngManBOMID = COMP.lngManBOMID
								INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber
								INNER JOIN tblInv INV2 ON BOM.strPartNumber = INV2.strPartNumber
								WHERE (DTL.strOrdDocID = @SQDocNumber)
									AND (
										HDR.intDocType = 1
										AND HDR.strOrdDocID NOT LIKE 'CR-%'
										)
									AND (BOM.bitInactive = 0)
									AND (BOM.bitPrintSO = 1)
									AND DTL.intLineNo = tblOrderDocDT.intLineNo
									AND BOM.strPartNumber = tblOrderDocDT.strPartNumber
								
								UNION ALL
								
								SELECT tblOrderDocDT.strPartNumber AS PartNumber
								FROM tblOrderDocDTBOM
								INNER JOIN tblOrderDocDT ON tblOrderDocDTBOM.strOrdDocID = tblOrderDocDT.strOrdDocID
									AND tblOrderDocDTBOM.intMainLineNo = tblOrderDocDT.intLineNo
								INNER JOIN tblInv ON tblOrderDocDTBOM.strPartItemNumber = tblInv.strPartNumber
								INNER JOIN tblInv Inv2 ON tblOrderDocDT.strPartNumber = Inv2.strPartNumber
								WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
									AND tblOrderDocDT.intLineNo = tblOrderDocDT.intLineNo
									AND Inv2.bitAutoBuild = 1
									AND Inv2.bitPrintComp = 1
								) AS TEMP
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strManBOMPartNumber
			,(
				SELECT STUFF((
							SELECT ',' + tblOrderDocDT.strPartNumber
							FROM fnBaseTblOrderDocDT() tblOrderDocDT
							INNER JOIN tblOrderDoc ON tblOrderDocDT.strOrdDocID = tblOrderDoc.strOrdDocID
							LEFT JOIN fnTblInvForLocJoin() tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
								AND tblOrderDocDT.strLocation = tblInv.strLocName
							LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
								AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
							LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
							LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
								AND tblInvImg.bitDefaultImage = 1
							LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
								AND tblOrderDoc.strCustName = tblInvCustomer.strCustName
							WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
								AND tblOrderDocDT.bitDiscountTax = 0
								AND tblOrderDocDT.bitDelCost = 1
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strDeliveryCostPartNumber
		FROM fnBaseTblOrderDocDT() tblOrderDocDT
		INNER JOIN tblOrderDoc ON tblOrderDocDT.strOrdDocID = tblOrderDoc.strOrdDocID
		LEFT JOIN fnTblInvForLocJoin() tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
			AND tblOrderDocDT.strLocation = tblInv.strLocName
		LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
			AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
		LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
		LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
			AND tblInvImg.bitDefaultImage = 1
		LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
			AND tblOrderDoc.strCustName = tblInvCustomer.strCustName
		WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
			AND tblOrderDocDT.bitDiscountTax = 0
			AND tblOrderDocDT.bitDelCost = 0
		ORDER BY tblOrderDocDT.intLineNo
	END
	ELSE
	BEGIN
		SELECT tblOrderDocDT.*
			,tblOrderDocDTPrj.strProjNumber
			,tblProjects.strProjName
			,ISNULL(tblInv.decSumAvail, 0) AS decSumAvail
			,ISNULL(tblInv.strBinLoc, '') AS strBinLoc
			,tblInv.strBarCode
			,tblInv.strBarCode2
			,(
				SELECT bitInvImgOnSO
				FROM tblCoOpts
				) AS bitShowImage
			,tblInvImg.imgData AS imgImage
			,tblOrderDocDT.strPartExtendedDesc AS strExtendedDesc
			,tblInv.bitInvExtDescOnSO AS bitShowExtendedDesc
			,'' AS strItemCode
			,'' AS strItemDesc
			,(
				SELECT STUFF((
							SELECT ',' + tblOrderDocDTSerial.strSerialNumber
							FROM tblOrderDocDTSerial
							INNER JOIN tblOrderDocDT ON tblOrderDocDTSerial.strOrdDocID = tblOrderDocDT.strOrdDocID
								AND tblOrderDocDTSerial.intLineNo = tblOrderDocDT.intLineNo
							LEFT JOIN tblInvSerialExt ON tblOrderDocDT.strPartNumber = tblInvSerialExt.strPartNumber
								AND tblOrderDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
							INNER JOIN tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
							LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
							WHERE tblOrderDocDTSerial.strOrdDocID = @SQDocNumber
								AND tblInvSerialTypes.bitPrintInv = 1
							ORDER BY tblOrderDocDTSerial.intLineNo
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strSerialNumber
			,(
				SELECT STUFF((
							SELECT ',' + TEMP.PartNumber
							FROM (
								SELECT COMP.strPartNumber AS PartNumber
								FROM tblOrderDoc HDR
								INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
								INNER JOIN tblManBOM BOM ON DTL.strPartNumber = BOM.strPartNumber
									AND DTL.strLocation = BOM.strLocation
								INNER JOIN tblManBOMCompInv COMP ON BOM.lngManBOMID = COMP.lngManBOMID
								INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber
								INNER JOIN tblInv INV2 ON BOM.strPartNumber = INV2.strPartNumber
								WHERE (DTL.strOrdDocID = @SQDocNumber)
									AND (
										HDR.intDocType = 1
										AND HDR.strOrdDocID NOT LIKE 'CR-%'
										)
									AND (BOM.bitInactive = 0)
									AND (BOM.bitPrintSO = 1)
									AND DTL.intLineNo = tblOrderDocDT.intLineNo
									AND BOM.strPartNumber = tblOrderDocDT.strPartNumber
								
								UNION ALL
								
								SELECT tblOrderDocDT.strPartNumber AS PartNumber
								FROM tblOrderDocDTBOM
								INNER JOIN tblOrderDocDT ON tblOrderDocDTBOM.strOrdDocID = tblOrderDocDT.strOrdDocID
									AND tblOrderDocDTBOM.intMainLineNo = tblOrderDocDT.intLineNo
								INNER JOIN tblInv ON tblOrderDocDTBOM.strPartItemNumber = tblInv.strPartNumber
								INNER JOIN tblInv Inv2 ON tblOrderDocDT.strPartNumber = Inv2.strPartNumber
								WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
									AND tblOrderDocDT.intLineNo = tblOrderDocDT.intLineNo
									AND Inv2.bitAutoBuild = 1
									AND Inv2.bitPrintComp = 1
								) AS TEMP
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strManBOMPartNumber
			,(
				SELECT STUFF((
							SELECT ',' + tblOrderDocDT.strPartNumber
							FROM fnBaseTblOrderDocDT() tblOrderDocDT
							LEFT JOIN fnTblInvForLocJoin() tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
								AND tblOrderDocDT.strLocation = tblInv.strLocName
							LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
								AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
							LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
							LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
								AND tblInvImg.bitDefaultImage = 1
							WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
								AND tblOrderDocDT.bitDiscountTax = 0
								AND tblOrderDocDT.bitDelCost = 1
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strDeliveryCostPartNumber
		FROM fnBaseTblOrderDocDT() tblOrderDocDT
		LEFT JOIN fnTblInvForLocJoin() tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
			AND tblOrderDocDT.strLocation = tblInv.strLocName
		LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
			AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
		LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
		LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
			AND tblInvImg.bitDefaultImage = 1
		WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
			AND tblOrderDocDT.bitDiscountTax = 0
			AND tblOrderDocDT.bitDelCost = 0
		ORDER BY tblOrderDocDT.intLineNo
	END
END
GO
/****** Object:  StoredProcedure [dbo].[SPSalesQuote]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****************End [UpdateOrderPrint]******************************/

/*****************Start [SPSalesQuote]*****************************/

Create PROCEDURE [dbo].[SPSalesQuote]
@SQDocNumber AS VARCHAR(250) = NULL,
@SQLocationCriteria AS VARCHAR(250) = NULL
AS
BEGIN

	SET NOCOUNT ON;

		SELECT tblOrderDocDT.*
				,tblOrderDocDTPrj.strProjNumber
				,tblProjects.strProjName
				,ISNULL(tblInv.decSumAvail, 0) AS decSumAvail
				,'' AS strBinLoc
				,tblInv.strBarCode
				,tblInv.strBarCode2
				,(
					SELECT bitInvImgOnSQ
					FROM tblCoOpts
					) AS bitShowImage
				,tblInvImg.imgData AS imgImage
				,tblOrderDocDT.strPartExtendedDesc AS strExtendedDesc
				,tblInv.bitInvExtDescOnSQ AS bitShowExtendedDesc
				,tblOrderDoc.strSoldTo as tblOrderDoc_strSoldTo
				,tblOrderDoc.strShipTo as tblOrderDoc_strShipTo
				,tblOrderDoc.strCustName as tblOrderDoc_strCustName 
				,tblOrderDoc.dteJournalDate as tblOrderDoc_dteJournalDate
				,tblOrderDoc.dteRequired as tblOrderDoc_dteRequired
				,tblOrderDoc.strReference as tblOrderDoc_strReference
				,tblOrderDoc.decTotal as tblOrderDoc_decTotal
				,tblOrderDoc.strNotes as tblOrderDoc_strNotes
				,tblOrderDoc.strSalesName as tblOrderDoc_strSalesName
				,tblOrderDoc.strAddInfo as tblOrderDoc_strAddInfo
				,tblOrderDoc.strTerm as tblOrderDoc_strTerm
				,tblOrderDoc.strSubFormated as tblOrderDoc_strSubFormated
				,tblOrderDoc.strDiscFormatted as tblOrderDoc_strDiscFormatted
				,tblOrderDoc.strVATFormatted as tblOrderDoc_strVATFormatted
				,tblOrderDoc.strTotFormatted as tblOrderDoc_strTotFormatted
				,tblOrderDoc.strDelMethodCode as tblOrderDoc_strDelMethodCode 
			FROM fnBaseTblOrderDocDT() tblOrderDocDT
			INNER JOIN tblOrderDoc ON tblOrderDocDT.strOrdDocID = tblOrderDoc.strOrdDocID
			INNER JOIN dbo.fnTblInvLocations(@SQLocationCriteria) tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
			LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
				AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
			LEFT JOIN tblProjects ON tblOrderDocDTPrj.strProjNumber = tblProjects.strProjNumber
			LEFT JOIN tblInvImg ON tblOrderDocDT.strPartNumber = tblInvImg.strPartNumber
				AND tblInvImg.bitDefaultImage = 1
			WHERE tblOrderDocDT.strOrdDocID = @SQDocNumber
				AND tblOrderDocDT.bitDiscountTax = 0
			ORDER BY tblOrderDocDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[SPSalesQuoteSystem]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****************End [SPSalesQuote]******************************/

/*****************Start [SPSalesQuoteSystem]*****************************/

CREATE PROCEDURE [dbo].[SPSalesQuoteSystem] @SQDocNumber AS VARCHAR(250) = NULL
	,@IsCustStockCodes BIT
AS
BEGIN
	IF (@IsCustStockCodes = 1)
	BEGIN
		SELECT tblOrderDocQDT.*
			,ISNULL(tblInv.strBarCode, '') AS strBarCode
			,ISNULL(tblInv.strBarCode2, '') AS strBarCode2
			,(
				SELECT bitInvImgOnSFHQ
				FROM tblCoOpts
				) AS bitShowImage
			,tblInvImg.imgData AS imgImage
			,tblOrderDocQDT.strPartExtendedDesc AS strExtendedDesc
			,ISNULL(tblInv.bitInvExtDescOnSFHQ, 0) AS bitShowExtendedDesc
			,ISNULL(tblInvCustomer.strItemCode, '') AS strItemCode
			,ISNULL(tblInvCustomer.strItemDesc, '') AS strItemDesc
			,tblOrderDocQ.strOrdDocID AS tblInvoiceDoc_strOrdDocID
			,tblOrderDocQ.strCustName AS tblInvoiceDoc_strCustName
			,tblOrderDocQ.dteJournalDate AS tblInvoiceDoc_dteJournalDate
			,tblOrderDocQ.dteRequired AS tblInvoiceDoc_dteRequired
			,tblOrderDocQ.strSoldTo AS tblInvoiceDoc_strSoldTo
			,tblOrderDocQ.strShipTo AS tblInvoiceDoc_strShipTo
			,tblOrderDocQ.strReference AS tblInvoiceDoc_strReference
			,tblOrderDocQ.decTotal AS tblInvoiceDoc_decTotal
			,tblOrderDocQ.strNotes AS tblInvoiceDoc_strNotes
			,tblOrderDocQ.strSalesName AS tblInvoiceDoc_strSalesName
			,tblOrderDocQ.strAddInfo AS tblInvoiceDoc_strAddInfo
			,tblOrderDocQ.strTerm AS tblInvoiceDoc_strTerm
			,tblOrderDocQ.strSubFormated AS tblInvoiceDoc_strSubFormated
			,tblOrderDocQ.strDiscFormatted AS tblInvoiceDoc_strDiscFormatted
			,tblOrderDocQ.strVATFormatted AS tblInvoiceDoc_strVATFormatted
			,tblOrderDocQ.strTotFormatted AS tblInvoiceDoc_strTotFormatted
			,tblOrderDocQ.decVAT AS tblInvoiceDoc_decVAT
			,tblOrderDocQ.strDeliveryCostFormatted AS tblInvoiceDoc_strDeliveryCostFormatted
			,(
				SELECT STUFF((
							SELECT ',' + tblOrderDocQDT.strPartNumber
							FROM tblOrderDocQDT
							INNER JOIN tblOrderDocQ ON tblOrderDocQDT.strOrdDocID = tblOrderDocQ.strOrdDocID
							LEFT JOIN tblInv ON tblOrderDocQDT.strPartNumber = tblInv.strPartNumber
							LEFT JOIN tblInvImg ON tblOrderDocQDT.strPartNumber = tblInvImg.strPartNumber
								AND tblInvImg.bitDefaultImage = 1
							LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
								AND tblOrderDocQ.strCustName = tblInvCustomer.strCustName
							WHERE tblOrderDocQDT.strOrdDocID = @SQDocNumber
								AND tblOrderDocQDT.bitDiscountTax = 0
								AND tblOrderDocQDT.bitDelCost = 1
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strDeliveryCostPartNumber
		FROM tblOrderDocQDT
		INNER JOIN tblOrderDocQ ON tblOrderDocQDT.strOrdDocID = tblOrderDocQ.strOrdDocID
		LEFT JOIN tblInv ON tblOrderDocQDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvImg ON tblOrderDocQDT.strPartNumber = tblInvImg.strPartNumber
			AND tblInvImg.bitDefaultImage = 1
		LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
			AND tblOrderDocQ.strCustName = tblInvCustomer.strCustName
		WHERE tblOrderDocQDT.strOrdDocID = @SQDocNumber
			AND tblOrderDocQDT.bitDiscountTax = 0
			AND tblOrderDocQDT.bitDelCost = 0 -- Added for Parent Tables row
		ORDER BY tblOrderDocQDT.intLineNo
	END
	ELSE
	BEGIN
		SELECT tblOrderDocQDT.*
			,ISNULL(tblInv.strBarCode, '') AS strBarCode
			,ISNULL(tblInv.strBarCode2, '') AS strBarCode2
			,(
				SELECT bitInvImgOnSFHQ
				FROM tblCoOpts
				) AS bitShowImage
			,tblInvImg.imgData AS imgImage
			,tblOrderDocQDT.strPartExtendedDesc AS strExtendedDesc
			,ISNULL(tblInv.bitInvExtDescOnSFHQ, 0) AS bitShowExtendedDesc
			,'' AS strItemCode
			,'' AS strItemDesc
			,tblOrderDocQ.strOrdDocID AS tblInvoiceDoc_strOrdDocID
			,tblOrderDocQ.strCustName AS tblInvoiceDoc_strCustName
			,tblOrderDocQ.dteJournalDate AS tblInvoiceDoc_dteJournalDate
			,tblOrderDocQ.dteRequired AS tblInvoiceDoc_dteRequired
			,tblOrderDocQ.strSoldTo AS tblInvoiceDoc_strSoldTo
			,tblOrderDocQ.strShipTo AS tblInvoiceDoc_strShipTo
			,tblOrderDocQ.strReference AS tblInvoiceDoc_strReference
			,tblOrderDocQ.decTotal AS tblInvoiceDoc_decTotal
			,tblOrderDocQ.strNotes AS tblInvoiceDoc_strNotes
			,tblOrderDocQ.strSalesName AS tblInvoiceDoc_strSalesName
			,tblOrderDocQ.strAddInfo AS tblInvoiceDoc_strAddInfo
			,tblOrderDocQ.strTerm AS tblInvoiceDoc_strTerm
			,tblOrderDocQ.strSubFormated AS tblInvoiceDoc_strSubFormated
			,tblOrderDocQ.strDiscFormatted AS tblInvoiceDoc_strDiscFormatted
			,tblOrderDocQ.strVATFormatted AS tblInvoiceDoc_strVATFormatted
			,tblOrderDocQ.strTotFormatted AS tblInvoiceDoc_strTotFormatted
			,tblOrderDocQ.decVAT AS tblInvoiceDoc_decVAT
			,tblOrderDocQ.strDeliveryCostFormatted AS tblInvoiceDoc_strDeliveryCostFormatted
			,(
				SELECT STUFF((
							SELECT ',' + tblOrderDocQDT.strPartNumber
							FROM tblOrderDocQDT
							INNER JOIN tblOrderDocQ ON tblOrderDocQDT.strOrdDocID = tblOrderDocQ.strOrdDocID
							LEFT JOIN tblInv ON tblOrderDocQDT.strPartNumber = tblInv.strPartNumber
							LEFT JOIN tblInvImg ON tblOrderDocQDT.strPartNumber = tblInvImg.strPartNumber
								AND tblInvImg.bitDefaultImage = 1
							LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
								AND tblOrderDocQ.strCustName = tblInvCustomer.strCustName
							WHERE tblOrderDocQDT.strOrdDocID = @SQDocNumber
								AND tblOrderDocQDT.bitDiscountTax = 0
								AND tblOrderDocQDT.bitDelCost = 1
							FOR XML PATH('')
							), 1, 1, '')
				) AS tblDADTS_strDeliveryCostPartNumber
		FROM tblOrderDocQDT
		INNER JOIN tblOrderDocQ ON tblOrderDocQDT.strOrdDocID = tblOrderDocQ.strOrdDocID -- Added for tblOrderDocQ Data
		LEFT JOIN tblInv ON tblOrderDocQDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvImg ON tblOrderDocQDT.strPartNumber = tblInvImg.strPartNumber
			AND tblInvImg.bitDefaultImage = 1
		WHERE tblOrderDocQDT.strOrdDocID = @SQDocNumber
			AND tblOrderDocQDT.bitDiscountTax = 0
			AND tblOrderDocQDT.bitDelCost = 0 -- Added for Parent Tables row
		ORDER BY tblOrderDocQDT.intLineNo
	END
			--SELECT tblOrderDocQDT.*
			--	,ISNULL(tblInv.strBarCode, '') AS strBarCode
			--	,ISNULL(tblInv.strBarCode2, '') AS strBarCode2
			--	,(
			--		SELECT bitInvImgOnSFHQ
			--		FROM tblCoOpts
			--		) AS bitShowImage
			--	,tblInvImg.imgData AS imgImage
			--	,tblOrderDocQDT.strPartExtendedDesc AS strExtendedDesc
			--	,ISNULL(tblInv.bitInvExtDescOnSFHQ, 0) AS bitShowExtendedDesc
			--FROM tblOrderDocQDT
			--LEFT JOIN tblInv ON tblOrderDocQDT.strPartNumber = tblInv.strPartNumber
			--LEFT JOIN tblInvImg ON tblOrderDocQDT.strPartNumber = tblInvImg.strPartNumber
			--	AND tblInvImg.bitDefaultImage = 1
			--WHERE tblOrderDocQDT.strOrdDocID = @SQDocNumber
			--	AND tblOrderDocQDT.bitDiscountTax = 0
			--ORDER BY tblOrderDocQDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[SPStockPick]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/**********End [GetRunDepreciationReportCoOptsN]**********************/

/**********Start [SPStockPick]**********************/
CREATE PROCEDURE [dbo].[SPStockPick] 
@SQDocNumber AS VARCHAR(250) = NULL
AS
BEGIN
	SELECT tblPT.strPkTkDocID AS tblPT_strPkTkDocID
	,tblPT.strOrdDocID AS tblPT_strOrdDocID
	,tblPT.dteJournalDate AS tblPT_dteJournalDate
	,tblPT.dteRequired AS tblPT_dteRequired
	,tblPT.strCustName AS tblPT_strCustName
	,tblPT.strSoldTo AS tblPT_strSoldTo
	,tblPT.strShipTo AS tblPT_strShipTo
	,tblPT.strReference AS tblPT_strReference
	,tblPTDT.strPkTkDocID AS tblPTDT_strPkTkDocID
	,tblPTDT.intLineNo AS tblPTDT_intLineNo
	,tblPTDT.strPartNumber AS tblPTDT_strPartNumber
	,tblPTDT.strLocation
	,tblPTDT.strPartDesc AS tblPTDT_strPartDesc
	,tblPTDT.decQty AS tblPTDT_decQty
	,tblPTDT.decQtyPicked AS tblPTDT_decQtyPicked
	,tblPTDT.strUnit AS tblPTDT_strUnit
	,tblPT.strPTNote AS tblPT_strPTNote
	,(SELECT STUFF((SELECT ',' + tblPickTicketsDTSerial.strSerialNumber
					FROM tblPickTicketsDTSerial
					INNER JOIN tblPickTicketsDT ON tblPickTicketsDTSerial.strPkTkDocID = tblPickTicketsDT.strPkTkDocID
						AND tblPickTicketsDTSerial.intLineNo = tblPickTicketsDT.intLineNo
					LEFT JOIN tblInvSerialExt ON tblPickTicketsDT.strPartNumber = tblInvSerialExt.strPartNumber
						AND tblPickTicketsDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
					INNER JOIN tblInv ON tblPickTicketsDT.strPartNumber = tblInv.strPartNumber
					LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
					WHERE tblPickTicketsDTSerial.strPkTkDocID = @SQDocNumber
						AND tblInvSerialTypes.bitPrintInv = 1
						AND tblPickTicketsDT.intLineNo = tblPTDT.intLineNo
					FOR XML PATH('')
					), 1, 1, '')
		) AS tblPTDTS_strSerialNumber
FROM tblPickTickets AS tblPT
INNER JOIN tblPickTicketsDT AS tblPTDT ON tblPT.strPkTkDocID = tblPTDT.strPkTkDocID
INNER JOIN tblOrderDocDT(NOLOCK) ON tblPT.strOrdDocID = tblOrderDocDT.strOrdDocID
	AND tblPTDT.intLineNo = tblOrderDocDT.intLineNo
WHERE tblPT.strPkTkDocID = @SQDocNumber
ORDER BY tblPTDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[SPWorkshopInventoryIssueDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SPWorkshopInventoryIssueDT]

@DocID as varchar(50)=null

AS
BEGIN
		SELECT DISTINCT 
		tblWSWIPCompDT.WIPDocID
		, tblWSWIPCompDT.[LineNo]
		, tblWSProcessDocDT.PartNumber
		, tblWSProcessDocDT.PartDesc AS strDesc
		, tblWSWIPCompDT.Location
		, tblWSProcessDocDT.JobQty 
		, tblWSWIPCompDT.PostedQty
		, tblWSWIPCompDT.PostQty
		, tblWSWIPCompDT.Amount
		, tblWSWIPCompDT.PostedAmount
		, tblWSWIPCompDT.PostAmount
		, tblWSWIPCompDT.ID
		, tblWSProcessDocDT.Unit AS strUnit
		, tblWSWIPCompDT.[Type]
		, tblWSWIPCompDT.ReturnQty 
		, CASE WHEN tblWSWIPCompDT.PostAmount < 0 THEN 'RETURNED' END AS PostAmountReturn
		, tblWSWIP.WIPDocID AS DocID
		, tblWSWIP.JBDocID
		, CONVERT(date, tblWSWIP.JournalDate) AS JournalDate
		FROM tblWSProcessDocDT 
		INNER JOIN tblWSWIP ON tblWSWIP.JBDocID = tblWSProcessDocDT.ProcessDocID
		INNER JOIN tblWSWIPCompDT ON tblWSProcessDocDT.PartNumber = tblWSWIPCompDT.PartNumber
		WHERE tblWSWIP.WIPDocID = @DocID AND tblWSWIPCompDT.WIPDocID = @DocID
		ORDER BY tblWSWIPCompDT.[LineNo]
END
GO
/****** Object:  StoredProcedure [dbo].[SPWorkshopInvoice]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SPWorkshopInvoice]
@SQDocNumber AS VARCHAR(250) = NULL

AS
BEGIN
DECLARE @BitValue BIT
SELECT TOP 1 @BitValue = bitIsZeroWorkshopItemInvoiced FROM tblCoOpts

			select tblInvoiceDocDT.* , 
						tblInvoiceDoc.strInvDocID as tblInvoiceDoc_strInvDocID, 
						tblInvoiceDoc.strCustName as tblInvoiceDoc_strCustName, 
						tblInvoiceDoc.dteJournalDate as tblInvoiceDoc_dteJournalDate, 
						tblInvoiceDoc.dteRequired as tblInvoiceDoc_dteRequired, 
						tblInvoiceDoc.strSoldTo as tblInvoiceDoc_strSoldTo, 
						tblInvoiceDoc.strShipTo as tblInvoiceDoc_strShipTo,
						tblInvoiceDoc.strReference as tblInvoiceDoc_strReference,
						tblInvoiceDoc.decTotal as tblInvoiceDoc_decTotal,
						tblInvoiceDoc.strNotes as tblInvoiceDoc_strNotes,
						tblInvoiceDoc.strSalesName as tblInvoiceDoc_strSalesName,
						tblInvoiceDoc.strAddInfo as tblInvoiceDoc_strAddInfo,
						tblInvoiceDoc.strTerm as tblInvoiceDoc_strTerm,
						tblInvoiceDoc.strSubFormated as tblInvoiceDoc_strSubFormated,
						tblInvoiceDoc.strDiscFormatted as tblInvoiceDoc_strDiscFormatted,
						tblInvoiceDoc.strVATFormatted as tblInvoiceDoc_strVATFormatted,
						tblInvoiceDoc.strTotFormatted as tblInvoiceDoc_strTotFormatted,
						tblInvoiceDoc.strVAT as tblInvoiceDoc_strVAT,
						dbo.funGetAddressString(tblWSInvoiceDoc.CustomerCode) as CustomerDetails,  
						--tblWSInvoiceDoc.CustomerDetails as CustomerDetails,
						--tblWSServiceableItem.OwnerDetails as OwnerDetails,
						dbo.funGetAddressString(tblWSInvoiceDoc.OwnerCode) as OwnerDetails,
						tblWSServiceableItem.ServiceableItemName,
						tblWSInvoiceDoc.Technician,
						tblInv.intType AS [Type]
						,ISNULL(tblInvCustomer.strItemCode, '') AS strItemCode -- (Added for customer invitem code and desc)
						,ISNULL(tblInvCustomer.strItemDesc, '') AS strItemDesc -- (Added for customer invitem code and desc)
						,(select bitCustStockCodes from tblCoOpts) As IsDisplayItemCode -- (Added for customer invitem code and desc)
			from tblInvoiceDocDT
			inner join tblInvoiceDoc on tblInvoiceDocDT.strInvDocID=tblInvoiceDoc.strInvDocID
			inner join tblWSInvoiceDoc on tblInvoiceDocDT.strInvDocID=tblWSInvoiceDoc.strInvDocID
			LEFT OUTER join tblWSServiceableItem on tblWSInvoiceDoc.ServiceableItemCode=tblWSServiceableItem.ServiceableItemCode
			inner join tblInv on tblInv.strPartNumber=tblInvoiceDocdt.strPartNumber 
			LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber -- (Added for customer invitem code and desc)
			AND tblInvoiceDoc.strCustName = tblInvCustomer.strCustName -- (Added for customer invitem code and desc)
			where tblInvoiceDocDT.strInvDocID=@SQDocNumber --AND tblInv.intType=1
			AND tblInvoiceDocDT.bitDiscountTax = 0 -- Added 
			AND tblInvoiceDocDT.bitDelCost = 0
			AND (( tblInvoiceDocDT.decQty>0 AND (SELECT @BitValue AS FirstBitValue)=0)OR (SELECT @BitValue AS FirstBitValue)=1 ) ---- to check if on workshop invoice 0 quantity item is to be displayed or not()

END
GO
/****** Object:  StoredProcedure [dbo].[SPWorkshopProcessJob]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SPWorkshopProcessJob]
@DocNumber AS VARCHAR(250) = NULL

AS
BEGIN
		SELECT	 [ProcessDocDTID]
				,tblWSProcessDocDT.[ProcessDocID]
				,[LineNo]
				,[PartNumber]
				,[Location]
				,[PartDesc]
				,[QuotedQty]
				,[JobQty]
				,[Unit]
				,[ItemType]
				,[TaxCode]
				,tblWSProcessDocDT.[Currency]
				,tblWSProcessDocDT.[IsForeign]
				,[LineDiscPerc]
				,[LineDiscAmt]
				,[LineDiscAmtF]
				,[IsDiscountTax]
				,[StockQty]
				,[StockUnit]
				,[StockQtyRemain]
				,[PriceEaExc]
				,[LineTotExc]
				,[LineTaxAmt]
				,[PriceEaInc]
				,[LineTotInc]
				,[PriceEaExcF]
				,[LineTotExcF]
				,[LineTaxAmtF]
				,[EaIncTaxF]
				,[TotIncTaxF]
				,tblWSProcessDocDT.[CreatedDate]
				,tblWSProcessDocDT.[UpdatedDate]
				,tblWSProcessDocDT.[CreatedBy]
				,tblWSProcessDocDT.[UpdatedBy]
				,[IsDelCost]
				,[BillingMethod]
				,[QtyRemaining]
				,[TaxObj]
				,tblWSProcessDocDT.[SalesName]
				,[PartExtendedDesc]
				,[BuyoutCost]
				,[ItemWeight]
				,[VolumetricWeight]
				,[TransactionFieldID]				
				,ISNULL(tblInv.decSumAvail, 0) AS decSumAvail
				,'' AS strBinLoc
				,tblInv.strBarCode
				,tblInv.strBarCode2
				,(
					SELECT bitInvImgOnSQ
					FROM tblCoOpts
					) AS bitShowImage
				,tblInvImg.imgData AS imgImage			
				,tblInv.intType AS [Type]
			,tblWSProcessDoc.Technician 
			,dbo.funGetAddressString(tblWSProcessDoc.CustomerCode) as CustomerDetails			
			,dbo.funGetAddressString(tblWSProcessDoc.OwnerCode) as OwnerDetails		
			,ISNULL(tblInvCustomer.strItemCode, '') AS strItemCode -- (Added for customer invitem code and desc)
			,ISNULL(tblInvCustomer.strItemDesc, '') AS strItemDesc -- (Added for customer invitem code and desc)
			,(select bitCustStockCodes from tblCoOpts) As IsDisplayItemCode -- (Added for customer invitem code and desc)
			FROM tblWSProcessDoc
			inner join tblWSProcessDocDT on tblWSProcessDocDT.ProcessDocID =tblWSProcessDoc.ProcessDocID			
			LEFT OUTER JOIN tblWSServiceableItem on tblWSProcessDoc.ServiceableItemCode=tblWSServiceableItem.ServiceableItemCode
			inner join tblInv on tblInv.strPartNumber = tblWSProcessDocDT.partnumber
			LEFT JOIN tblInvImg ON tblWSProcessDocDT.PartNumber = tblInvImg.strPartNumber AND tblInvImg.bitDefaultImage = 1 
			LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber -- (Added for customer invitem code and desc)
			AND tblWSProcessDoc.CustomerCode = tblInvCustomer.strCustName -- (Added for customer invitem code and desc)
			WHERE tblWSProcessDoc.ProcessDocID = @DocNumber AND tblWSProcessDocDT.IsDiscountTax = 0 
			AND tblWSProcessDocDT.IsDelCost = 0 -- Added 1 feb		
			ORDER BY tblWSProcessDocDT.[LineNo]
END
GO
/****** Object:  StoredProcedure [dbo].[SQFetchLinkedAccounts]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SQFetchLinkedAccounts] 
	
AS
BEGIN
	SELECT tblAccountClass.*, tblAccounts.bitLinkREarnings, tblAccounts.bitLinkCEarnings,tblAccounts.bitLinkAP,tblAccounts.bitLinkPurDisc,tblAccounts.bitLinkAR,tblAccounts.bitLinkSalesDisc,tblAccounts.bitLinkAssCosts
	,tblAccounts.bitDefBank,tblAccounts.bitLinkAdjWriteOff,tblAccounts.bitLinkAddCost,tblAccounts.bitLinkExc,tblAccounts.bitLinkPrePay,tblAccounts.bitLinkDeposit,tblAccounts.bitLinkManStandardCost,tblAccounts.bitLinkWIP
	,tblAccounts.bitRecon,tblAccounts.bitLinkDelAdvice
	FROM tblAccountClass INNER JOIN tblAccounts ON tblAccountClass.intAcctClassID = tblAccounts.intAccClass WHERE tblAccounts.bitLinkREarnings = 1 OR tblAccounts.bitLinkCEarnings = 1 OR 
	tblAccounts.bitLinkAP = 1 OR tblAccounts.bitLinkPurDisc= 1 OR tblAccounts.bitLinkAR=1 OR tblAccounts.bitLinkSalesDisc=1 OR tblAccounts.bitLinkAssCosts=1 OR tblAccounts.bitDefBank = 1 OR
	tblAccounts.bitLinkAdjWriteOff=1 OR tblAccounts.bitLinkAddCost=1 OR tblAccounts.bitLinkExc=1 OR tblAccounts.bitLinkPrePay=1 OR tblAccounts.bitLinkDeposit=1 OR tblAccounts.bitLinkManStandardCost=1 OR 
	tblAccounts.bitLinkWIP =1 OR tblAccounts.bitRecon=1 OR tblAccounts.bitLinkDelAdvice=1
END
GO
/****** Object:  StoredProcedure [dbo].[SQLoadAccountLegend]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SQLoadAccountLegend] 
	
AS
BEGIN
	SELECT * FROM tblAccountType inner join tblAccountsLegend on tblAccountType.intAcctTypeID = tblAccountsLegend.intAccType
END
GO
/****** Object:  StoredProcedure [dbo].[StatusTypeInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[StatusTypeInsert]
@strStatusTypeCode NVARCHAR(20),
@strStatusTypeDesc NVARCHAR(100),
@bitInactive BIT
AS
BEGIN

Insert into tblStatusTypes (strStatusTypeCode, strStatusTypeDesc,bitInactive, dteRowUpdated) VALUES (@strStatusTypeCode, @strStatusTypeDesc, @bitInactive, GETDATE())

END
GO
/****** Object:  StoredProcedure [dbo].[StatusTypesUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[StatusTypesUpdate]
	@strStatusTypeCode nvarchar(20),
	@strStatusTypeDesc nvarchar(100),
	@bitInactive bit,
	@lngID bigint
AS
BEGIN	
UPDATE [tblStatusTypes]
   SET [strStatusTypeCode] = @strStatusTypeCode
      ,[strStatusTypeDesc] = @strStatusTypeDesc
      ,[bitInactive] = @bitInactive
 WHERE lngID = @lngID
END
GO
/****** Object:  StoredProcedure [dbo].[StockPickDelete]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [NavigateStockPickByNumber] ***********/

/*********** Start [StockPickDelete] ***********/
CREATE PROCEDURE [dbo].[StockPickDelete]
(
	@DocumentNumber NVARCHAR(50),
	@UserName NVARCHAR(100)
)
AS
BEGIN
	UPDATE tblPickTickets SET strUserName = @UserName,bitPicked = 0,dtePicked = NULL WHERE strPkTkDocID = @DocumentNumber

	UPDATE tblPickTicketsDT SET decQtyPicked = 0 WHERE strPkTkDocID = @DocumentNumber

	DELETE FROM tblPickTicketsDTSerial WHERE strPkTkDocID = @DocumentNumber

	DELETE FROM tblDocuments WHERE strDocumentNumber = @DocumentNumber
END
GO
/****** Object:  StoredProcedure [dbo].[StockPickProcessDocument]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetDefaultValuesDimProLines] ***********/

CREATE PROCEDURE [dbo].[StockPickProcessDocument] (
	@tblDataPickTicketsDT AS PickTicketsDTTableType READONLY
	,@tblDataSerialNumber AS SerialNumberTableType READONLY
	,@tblDataPickTicketsDTBin AS GRVDocDTBinTableType READONLY
	,@UserName AS NVARCHAR(40)
	,@SystemDate AS SMALLDATETIME
	,@DocumentDate AS DATETIME
	,@DocumentNumber AS NVARCHAR(100)
	,@PickTicketNotes AS NVARCHAR(510)
	,@lngTrackId AS BIGINT
	,@SerialNumberTrackingInvTrfData AS SerialNumberTrackingTableType READONLY
	,@InvSerialExtData AS InvSerialExtTableType READONLY
	,@InvLotExtDataRemoving AS InvLotExtTableType READONLY
	,@InvLotExtDataInserting AS InvLotExtTableType READONLY
	,@InvLotExtDataUpdating AS InvLotExtTableType READONLY
	)
AS
BEGIN
	DECLARE @TempPickTicketsDT AS PickTicketsDTTableType
	DECLARE @TempSerialNumber AS SerialNumberTableType
	DECLARE @QuantityPicked MONEY
	DECLARE @PkTkDocID NVARCHAR(100)
	DECLARE @IsInventorySerialType BIT
	DECLARE @LineNo INT
	DECLARE @counter INT
	DECLARE @counterSerialNumber INT

	UPDATE tblPickTickets
	SET strUserName = @UserName
		,dteSystemDate = @SystemDate
		,bitPicked = 1
		,dtePicked = @DocumentDate
		,strPTNote = @PickTicketNotes
		,lngInvTrackId = @lngTrackId
	WHERE strPkTkDocID = @DocumentNumber

	DELETE
	FROM tblPickTicketsDTSerial
	WHERE strPkTkDocID = @DocumentNumber

	--BulkDataCopyInsert
	INSERT INTO @TempPickTicketsDT
	SELECT *
	FROM @tblDataPickTicketsDT

	INSERT INTO @TempSerialNumber
	SELECT *
	FROM @tblDataSerialNumber

	--for tblPickTicketsDT table
	SELECT @counter = COUNT(*)
	FROM @TempPickTicketsDT

	SELECT @counterSerialNumber = COUNT(*)
	FROM @TempSerialNumber

	WHILE (@counter > 0)
	BEGIN
		SELECT TOP 1 @LineNo = [LineNo]
			,@PkTkDocID = PkTkDocID
			,@QuantityPicked = QuantityPicked
			,@IsInventorySerialType = IsInventorySerialType
		FROM @TempPickTicketsDT
		ORDER BY [LineNo];

		UPDATE tblPickTicketsDT
		SET decQtyPicked = @QuantityPicked
		WHERE strPkTkDocID = @PkTkDocID
			AND intLineNo = @LineNo

		--for tblPickTicketsDTSerial
		DELETE
		FROM @TempPickTicketsDT
		WHERE [LineNo] = @LineNo
			AND PkTkDocID = @PkTkDocID;

		SET @counter = @counter - 1
	END

	INSERT INTO tblPickTicketsDTSerial (
		strSerialNumber
		,decQty
		,strUnit
		,bitExpiryDate
		,dteExpiryDate
		,intSerialLotType
		,strPkTkDocID
		,intLineNo
		,lngBinId
		)
	SELECT SerialNumber
		,Quantity
		,Unit
		,IsExpiryDateExists
		,ExpiryDate
		,SerialLotType
		,PkTkDocId
		,LineNumber
		,binId
	FROM @tblDataSerialNumber

	INSERT INTO tblPickTicketsDTBin (
		[strPkTkDocID]
		,[intLineNo]
		,[lngBinId]
		,[decQty]
		,[bitPickingBin]
		)
	SELECT DocId
		,[LineNo]
		,BinID
		,Qty
		,IsPickingBin
	FROM @tblDataPickTicketsDTBin

	-- Inv transfer start
	IF EXISTS (
			SELECT *
			FROM @SerialNumberTrackingInvTrfData
			)
	BEGIN
		INSERT INTO tblSerialNumberTracking (
			strPartNumber
			,strSerialNumber
			,strUserName
			,dteUpdatedDate
			,intType
			,strDocID
			,intLineNo
			,decQty
			,strLocation
			,intStatus
			,bitExpiryDate
			,dteExpiryDate
			,lngBinId
			)
		SELECT PartNumber
			,SerialNumber
			,UserName
			,UpdatedDate
			,SerialLotType
			,DocID
			,[LineNo]
			,Qty
			,Location
			,[Status]
			,IsExpiryDate
			,ExpiryDate
			,BinID
		FROM @SerialNumberTrackingInvTrfData
	END

	DECLARE @Qty MONEY
	DECLARE @Status INT
	DECLARE @UpdatedDate DATETIME
	DECLARE @PartNumber NVARCHAR(MAX)
	DECLARE @DocID NVARCHAR(100)
	DECLARE @LotNumber NVARCHAR(MAX)
	DECLARE @LocName NVARCHAR(MAX)
	DECLARE @BinID INT

	IF EXISTS (
			SELECT *
			FROM @InvSerialExtData
			)
	BEGIN
		DECLARE CURSOR1 CURSOR KEYSET SCROLL
		FOR
		SELECT LocName
			,Qty
			,[Status]
			,DocID
			,BinID
			,PartNumber
			,SerialNumber
			,UpdatedDate
		FROM @InvSerialExtData

		OPEN CURSOR1

		IF @@CURSOR_ROWS > 0
		BEGIN
			FETCH NEXT
			FROM CURSOR1
			INTO @LocName
				,@Qty
				,@Status
				,@DocID
				,@BinID
				,@PartNumber
				,@LotNumber
				,@UpdatedDate

			WHILE @@FETCH_STATUS = 0
			BEGIN
				UPDATE tblInvSerialExt
				SET strLocName = @LocName
					,decQty = @Qty
					,intStatus = @Status
					,strDocID = @DocID
					,dteUpdatedDate = @UpdatedDate
					,lngBinID = @BinID
				FROM @InvSerialExtData t
				WHERE strPartNumber = @PartNumber
					AND strSerialNumber = @LotNumber

				FETCH NEXT
				FROM CURSOR1
				INTO @LocName
					,@Qty
					,@Status
					,@DocID
					,@BinID
					,@PartNumber
					,@LotNumber
					,@UpdatedDate
			END

			CLOSE CURSOR1

			DEALLOCATE CURSOR1
		END
	END

	IF EXISTS (
			SELECT *
			FROM @InvLotExtDataRemoving
			)
	BEGIN
		DECLARE CURSOR1 CURSOR KEYSET SCROLL
		FOR
		SELECT Qty
			,UpdatedDate
			,PartNumber
			,LotNumber
			,LocName
			,BinID
		FROM @InvLotExtDataRemoving

		OPEN CURSOR1

		IF @@CURSOR_ROWS > 0
		BEGIN
			FETCH NEXT
			FROM CURSOR1
			INTO @Qty
				,@UpdatedDate
				,@PartNumber
				,@LotNumber
				,@LocName
				,@BinID

			WHILE @@FETCH_STATUS = 0
			BEGIN
				UPDATE tblInvLotExt
				SET decQty = decQty + @Qty
					,dteUpdatedDate = @UpdatedDate
				WHERE strPartNumber = @PartNumber
					AND strLotNumber = @LotNumber
					AND strLocName = @LocName
					AND lngBinID = @BinID

				FETCH NEXT
				FROM CURSOR1
				INTO @Qty
					,@UpdatedDate
					,@PartNumber
					,@LotNumber
					,@LocName
					,@BinID
			END

			CLOSE CURSOR1

			DEALLOCATE CURSOR1
		END
	END

	IF EXISTS (
			SELECT *
			FROM @InvLotExtDataInserting
			)
	BEGIN
		INSERT INTO tblInvLotExt
		SELECT *
			,GETDATE()
		FROM @InvLotExtDataInserting
	END

	IF EXISTS (
			SELECT *
			FROM @InvLotExtDataUpdating
			)
	BEGIN
		DECLARE CURSOR1 CURSOR KEYSET SCROLL
		FOR
		SELECT Qty
			,UpdatedDate
			,PartNumber
			,LotNumber
			,LocName
			,BinID
		FROM @InvLotExtDataUpdating

		OPEN CURSOR1

		IF @@CURSOR_ROWS > 0
		BEGIN
			FETCH NEXT
			FROM CURSOR1
			INTO @Qty
				,@UpdatedDate
				,@PartNumber
				,@LotNumber
				,@LocName
				,@BinID

			WHILE @@FETCH_STATUS = 0
			BEGIN
				UPDATE tblInvLotExt
				SET decQty = decQty + @Qty
					,dteUpdatedDate = @UpdatedDate
				WHERE strPartNumber = @PartNumber
					AND strLotNumber = @LotNumber
					AND strLocName = @LocName
					AND lngBinID = @BinID

				FETCH NEXT
				FROM CURSOR1
				INTO @Qty
					,@UpdatedDate
					,@PartNumber
					,@LotNumber
					,@LocName
					,@BinID
			END

			CLOSE CURSOR1

			DEALLOCATE CURSOR1
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[StockPickSerialNumberTrackingInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************End [PickTicketsDTSerialInsert]**************************/

/***********Start [StockPickSerialNumberTrackingInsert]******************/
CREATE PROCEDURE [dbo].[StockPickSerialNumberTrackingInsert]
(
 @PartNumber AS NVARCHAR(50)
,@SerialNumber AS NVARCHAR(50)
,@UserName AS NVARCHAR(20)
,@UpdatedDate AS SMALLDATETIME
,@Type AS TINYINT
,@DocID AS NVARCHAR(50)
,@LineNo AS INT
,@Qty AS MONEY
,@Location AS NVARCHAR(10)
,@Status AS TINYINT
,@IsExpiryDate AS BIT
,@ExpiryDate AS SMALLDATETIME
,@BinID AS BIGINT
)
AS
BEGIN
	INSERT INTO tblSerialNumberTracking (
		strPartNumber
		,strSerialNumber
		,strUserName
		,dteUpdatedDate
		,intType
		,strDocID
		,intLineNo
		,decQty
		,strLocation
		,intStatus
		,bitExpiryDate
		,dteExpiryDate
		,lngBinId
	)
	VALUES 
	(
		 @PartNumber
		,@SerialNumber
		,@UserName
		,@UpdatedDate
		,@Type
		,@DocID
		,@LineNo
		,@Qty
		,@Location
		,@Status
		,@IsExpiryDate
		,@ExpiryDate
		,@BinID
	)
END
GO
/****** Object:  StoredProcedure [dbo].[SyncInvAllocated]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SyncInvAllocated]
(	
	@AllocationSource INT,
	@OrderDocID NVARCHAR(50),
	@IsFromIBT AS BIT = 0
)
AS
BEGIN
	DECLARE @Query1 AS NVARCHAR(MAX) 
	DECLARE @Query2 AS NVARCHAR(MAX) 
	DECLARE @Query3 AS NVARCHAR(MAX)
	DECLARE @Query4 AS NVARCHAR(MAX)
	DECLARE @Query5 AS NVARCHAR(MAX)
	DECLARE @Query6 AS NVARCHAR(MAX)
	DECLARE @Query7 AS NVARCHAR(MAX)

	DECLARE @ParameterDefinition AS NVARCHAR(MAX) ='@OrderDocID NVARCHAR(50)'

	DECLARE @tblInvoiceOnOrder AS TABLE 
	(
		ID INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
		PartNumber VARCHAR(100),
		Location VARCHAR(20) NULL,
		AllocatedQty DECIMAL		
	)

	DECLARE @PartNumber VARCHAR(100), @Location VARCHAR(20), @AllocatedQty DECIMAL, @ID INT

	DECLARE @PartForOpenOrder AS NVARCHAR(MAX) = 'SELECT strPartNumber FROM tblOrderDocDT WHERE strOrdDocID = @OrderDocID'	
	DECLARE @PartForProductionSchedule AS NVARCHAR(MAX) = 'SELECT strPartNumber FROM tblProductionScheduleDT WHERE strProdNumber = @OrderDocID'		
	DECLARE @PartForOpenRequistion AS NVARCHAR(MAX) = 'SELECT strPartNumber FROM tblInvIntReqDocDT WHERE strInvIntReqDocID = @OrderDocID'
	DECLARE @PartForOpenWSProcessJob AS NVARCHAR(MAX) = 'SELECT PartNumber FROM tblWSProcessDocDT WHERE ProcessDocID = @OrderDocID'
	DECLARE @PartForOpenTrfOrd AS NVARCHAR(MAX) = 'SELECT strPartNumber FROM tblInvTrfOrdDocDT WHERE strInvTrfOrdDocID = @OrderDocID'
	
	DECLARE @QuerySub AS NVARCHAR(MAX) = CASE WHEN @AllocationSource = 0 THEN @PartForOpenOrder WHEN @AllocationSource = 1 THEN @PartForProductionSchedule 
		WHEN @AllocationSource = 2 and @IsFromIBT = 1 THEN @PartForOpenTrfOrd
		WHEN @AllocationSource = 2 and @IsFromIBT = 0 THEN @PartForOpenRequistion 
		WHEN @AllocationSource = 5 THEN @PartForOpenWSProcessJob WHEN @AllocationSource = 6 THEN @PartForOpenTrfOrd END

	SET @Query1 = CONCAT('SELECT z.strPartNumber, z.strLocation, SUM(z.decQty) FROM (SELECT tblOrderDocDT.strPartNumber, tblOrderDocDT.strLocation, SUM(tblOrderDocDT.decStockQtyRemain) AS decQty FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID WHERE (tblOrderDocDT.strPartNumber IN (', @QuerySub, ')) AND (tblOrderDoc.bitCleared = 0) AND (tblOrderDoc.intDocType in (1,3)) AND (tblOrderDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1)) GROUP BY tblOrderDocDT.strPartNumber, tblOrderDocDT.strLocation UNION ALL SELECT tblProductionScheduleDT.strPartNumber, tblProductionScheduleDT.strLocName, SUM(tblProductionScheduleDT.decReqQty) AS decQty FROM tblProductionScheduleDT INNER JOIN tblProductionSchedule on tblProductionScheduleDT.strProdNumber = tblProductionSchedule.strProdnumber WHERE (tblProductionScheduleDT.strPartNumber IN (', @QuerySub, ')) AND (tblProductionSchedule.bitCleared = 0) AND (tblProductionSchedule.blnCompleted = 0) GROUP BY tblProductionScheduleDT.strPartNumber, tblProductionScheduleDT.strLocName UNION ALL SELECT tblInvIntReqDocDT.strPartNumber, tblInvIntReqDoc.strLocName, SUM(tblInvIntReqDocDT.decQty) AS decQty FROM tblInvIntReqDocDT INNER JOIN tblInvIntReqDoc on tblInvIntReqDocDT.strInvIntReqDocID = tblInvIntReqDoc.strInvIntReqDocID WHERE (tblInvIntReqDocDT.strPartNumber IN (', @QuerySub, ')) AND (tblInvIntReqDoc.bitCleared = 0) GROUP BY tblInvIntReqDocDT.strPartNumber, tblInvIntReqDoc.strLocName UNION ALL SELECT tblWSProcessDocDT.PartNumber ,tblWSProcessDocDT.Location ,SUM(tblWSProcessDocDT.QtyRemaining) AS decQty FROM tblWSProcessDoc INNER JOIN tblWSProcessDocDT ON tblWSProcessDoc.ProcessDocID = tblWSProcessDocDT.ProcessDocID WHERE (tblWSProcessDocDT.PartNumber IN (', @QuerySub, ')) AND (tblWSProcessDoc.Cleared = 0) AND (tblWSProcessDoc.JobStatusType = 2) AND ( tblWSProcessDoc.DocType IN ( 2 ) ) AND ( tblWSProcessDocDT.PartNumber IN ( SELECT strPartNumber FROM tblInv WHERE intType = 1 ) ) GROUP BY tblWSProcessDocDT.PartNumber ,tblWSProcessDocDT.Location UNION ALL SELECT tblInvTrfOrdDocDT.strPartNumber,tblInvTrfOrdDoc.strLocName  AS strLocation,SUM(tblInvTrfOrdDocDT.decQty) AS decQty FROM tblInvTrfOrdDocDT INNER JOIN tblInvTrfOrdDoc ON tblInvTrfOrdDocDT.strInvTrfOrdDocID = tblInvTrfOrdDoc.strInvTrfOrdDocID WHERE (tblInvTrfOrdDocDT.strPartNumber IN (', @QuerySub, '))	AND (tblInvTrfOrdDoc.bitCleared = 0) GROUP BY tblInvTrfOrdDocDT.strPartNumber,tblInvTrfOrdDoc.strLocName ) Z GROUP BY Z.strPartNumber, Z.strLocation')

	INSERT INTO @tblInvoiceOnOrder EXECUTE sp_executesql @Query1, @ParameterDefinition, @OrderDocID


	SET @Query2 = CONCAT('UPDATE tblInvExt SET decAlloc = 0 WHERE strPartNumber IN (', @QuerySub, ')')
	EXECUTE sp_executesql @Query2, @ParameterDefinition, @OrderDocID

	WHILE((Select COUNT(1) from @tblInvoiceOnOrder) > 0)
	BEGIN
		Select TOP 1 @ID = ID, @PartNumber = PartNumber, @Location = Location, @AllocatedQty = AllocatedQty FROM @tblInvoiceOnOrder
	
		UPDATE tblInvExt SET decAlloc = @AllocatedQty WHERE strPartNumber = @PartNumber AND strLocName = @Location
	
		DELETE from @tblInvoiceOnOrder where ID = @id
	END
	
	SET @Query3 = CONCAT('UPDATE tblInvExt SET decAvail = (decOnHand - decAlloc) - decManuf WHERE strPartNumber IN (', @QuerySub, ')')
	EXECUTE sp_executesql @Query3, @ParameterDefinition, @OrderDocID
	
	SET @Query4 = CONCAT('SELECT Z.strPartNumber, NULL, SUM(Z.decQty) FROM (SELECT tblOrderDocDT.strPartNumber, SUM(tblOrderDocDT.decStockQtyRemain) AS decQty FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID WHERE (tblOrderDocDT.strPartNumber IN (', @QuerySub, ')) AND (tblOrderDoc.bitCleared = 0) AND (tblOrderDoc.intDocType in (1,3)) AND (tblOrderDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1)) GROUP BY tblOrderDocDT.strPartNumber UNION ALL SELECT tblProductionScheduleDT.strPartNumber, SUM(tblProductionScheduleDT.decReqQty) AS decQty FROM tblProductionSchedule INNER JOIN tblProductionScheduleDT ON tblProductionSchedule.strProdNumber = tblProductionScheduleDT.strProdNumber WHERE (tblProductionScheduleDT.strPartNumber IN (', @QuerySub,')) AND tblProductionSchedule.blnCompleted = 0 GROUP BY tblProductionScheduleDT.strPartNumber UNION ALL SELECT tblInvIntReqDocDT.strPartNumber, SUM(tblInvIntReqDocDT.decQty) AS decQty FROM tblInvIntReqDocDT INNER JOIN tblInvIntReqDoc on tblInvIntReqDocDT.strInvIntReqDocID = tblInvIntReqDoc.strInvIntReqDocID WHERE (tblInvIntReqDocDT.strPartNumber IN (', @QuerySub, ')) AND (tblInvIntReqDoc.bitCleared = 0) GROUP BY tblInvIntReqDocDT.strPartNumber UNION ALL SELECT tblWSProcessDocDT.PartNumber ,SUM(tblWSProcessDocDT.QtyRemaining) AS decQty FROM tblWSProcessDoc INNER JOIN tblWSProcessDocDT ON tblWSProcessDoc.ProcessDocID = tblWSProcessDocDT.ProcessDocID WHERE (tblWSProcessDocDT.PartNumber IN (', @QuerySub, ')) AND (tblWSProcessDoc.Cleared = 0) AND (tblWSProcessDoc.JobStatusType = 2) AND ( tblWSProcessDoc.DocType IN (2) ) AND ( tblWSProcessDocDT.PartNumber IN ( SELECT strPartNumber FROM tblInv WHERE intType = 1 ) ) GROUP BY tblWSProcessDocDT.PartNumber UNION ALL SELECT tblInvTrfOrdDocDT.strPartNumber,SUM(tblInvTrfOrdDocDT.decQty) AS decQty FROM tblInvTrfOrdDocDT	INNER JOIN tblInvTrfOrdDoc ON tblInvTrfOrdDocDT.strInvTrfOrdDocID = tblInvTrfOrdDoc.strInvTrfOrdDocID WHERE (tblInvTrfOrdDocDT.strPartNumber IN (', @QuerySub, ')) AND (tblInvTrfOrdDoc.bitCleared = 0)	GROUP BY tblInvTrfOrdDocDT.strPartNumber ) Z GROUP BY Z.strPartNumber')

	INSERT INTO @tblInvoiceOnOrder EXECUTE sp_executesql @Query4, @ParameterDefinition, @OrderDocID
	
	SET @Query5 = CONCAT('UPDATE tblInv SET decSumAlloc = 0, dteLastUpdated = GetDate() WHERE strPartNumber IN (', @QuerySub, ')')
	EXECUTE sp_executesql @Query5, @ParameterDefinition, @OrderDocID

	WHILE((Select Count(1) from @tblInvoiceOnOrder) > 0)
	BEGIN
		Select TOP 1 @ID = ID, @PartNumber = PartNumber, @AllocatedQty = AllocatedQty FROM @tblInvoiceOnOrder
	
		UPDATE tblInv SET decSumAlloc =decSumAlloc + @AllocatedQty, dteLastUpdated = GetDate() WHERE strPartNumber = @PartNumber
	
		DELETE from @tblInvoiceOnOrder where ID = @id
	END
	
	SET @Query6 = CONCAT('UPDATE tblInv SET decSumAvail = (decSumOnHand - decSumAlloc) - decSumManuf , dteLastUpdated = GetDate() WHERE strPartNumber IN (', @QuerySub, ')')
	EXECUTE sp_executesql @Query6, @ParameterDefinition, @OrderDocID

END
GO

/****** Object:  StoredProcedure [dbo].[SyncInvAllocatedDataSet]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SyncInvAllocatedDataSet] (
    @PartNumbers AS NVARCHAR(MAX)
    ,@Locations AS NVARCHAR(MAX)
    ,@AllocationSource INT = NULL
    )
AS
BEGIN
    DECLARE @Query1 AS NVARCHAR(MAX)
    DECLARE @Query1Ord AS NVARCHAR(MAX)
    DECLARE @Query1PJB AS NVARCHAR(MAX)
    DECLARE @Query1IBT AS NVARCHAR(MAX)
    DECLARE @Query2 AS NVARCHAR(MAX)
    DECLARE @Query3 AS NVARCHAR(MAX)
    DECLARE @Query4 AS NVARCHAR(MAX)
    DECLARE @Query4Ord AS NVARCHAR(MAX)
    DECLARE @Query4PJB AS NVARCHAR(MAX)
    DECLARE @Query4IBT AS NVARCHAR(MAX)
    DECLARE @Query5 AS NVARCHAR(MAX)
    DECLARE @Query6 AS NVARCHAR(MAX)
    DECLARE @Query7 AS NVARCHAR(MAX)
    DECLARE @LocID AS INT = 0
    DECLARE @PartTemp AS TABLE (
        Id INT NOT NULL IDENTITY(1, 1) PRIMARY KEY
        ,Part NVARCHAR(100)
        )
    DECLARE @LocationTemp AS TABLE (
        Id INT NOT NULL IDENTITY(1, 1) PRIMARY KEY
        ,Location NVARCHAR(20)
        )
    DECLARE @InvoiceOnOrder AS TABLE (
        ID INT NOT NULL IDENTITY(1, 1) PRIMARY KEY
        ,PartNumber VARCHAR(100)
        ,Location VARCHAR(20) NULL
        ,AllocatedQty MONEY
        )
    DECLARE @InvoiceOnOrderCopy AS TABLE (
        ID INT NOT NULL PRIMARY KEY
        ,PartNumber VARCHAR(100)
        ,Location VARCHAR(20) NULL
        ,AllocatedQty MONEY
        )
    DECLARE @Part AS NVARCHAR(100)
        ,@Loc AS NVARCHAR(20)
        ,@Id AS INT
        ,@IdLoc AS INT
    DECLARE @IdInv INT
        ,@PartNumber VARCHAR(100)
        ,@Location VARCHAR(20)
        ,@AllocatedQty MONEY

    INSERT INTO @PartTemp
    SELECT [Value]
    FROM [dbo].[fnSplitStringAsTable](@PartNumbers, '~')

    DECLARE @ItemCount AS INT

    SELECT @ItemCount = COUNT(1)
    FROM @PartTemp

    DECLARE @QuerySub AS NVARCHAR(MAX) = ''

    SET @QuerySub = '('

    IF @AllocationSource IS NULL
    BEGIN
        IF (@ItemCount > 0)
        BEGIN
            WHILE (
                    (
                        SELECT Count(1)
                        FROM @PartTemp
                        ) > 0
                    )
            BEGIN
                SELECT TOP (1) @Id = ID
                    ,@Part = Part
                FROM @PartTemp

                SET @QuerySub += CONCAT (
                        'tblOrderDocDT.strPartNumber = '''
                        ,@Part
                        ,''' OR '
                        )

                DELETE
                FROM @PartTemp
                WHERE ID = @Id
            END

            --SET @QuerySub = SUBSTRING(@QuerySub,1, LEN(@QuerySub) - 4)
            SET @QuerySub = SUBSTRING(@QuerySub, 1, LEN(@QuerySub) - 3)
        END

        SET @QuerySub += ') '

        PRINT 'QUERY SUB= ' + @QuerySub

        SET @Query1 = CONCAT (
                'SELECT tblOrderDocDT.strPartNumber, tblOrderDocDT.strLocation, SUM(tblOrderDocDT.decStockQtyRemain) AS Expr1 FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID WHERE '
                ,@QuerySub
                ,'AND (tblOrderDoc.bitCleared = 0) AND (tblOrderDoc.intDocType in (1,3)) AND (tblOrderDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1)) GROUP BY tblOrderDocDT.strPartNumber, tblOrderDocDT.strLocation'
                )

        PRINT 'Query1= ' + @Query1

        INSERT INTO @InvoiceOnOrder
        EXECUTE sp_executesql @Query1

        INSERT INTO @InvoiceOnOrderCopy
        SELECT *
        FROM @InvoiceOnOrder

        SET @Query2 = CONCAT (
                'UPDATE tblInvExt SET decAlloc = 0 WHERE strPartNumber IN (SELECT strPartNumber FROM tblOrderDocDT WHERE '
                ,@QuerySub
                ,')'
                )

        EXECUTE sp_executesql @Query2

        --PRINT 'Query2= ' + @Query2
        WHILE (
                (
                    SELECT Count(1)
                    FROM @InvoiceOnOrder
                    ) > 0
                )
        BEGIN
            SELECT TOP 1 @IdInv = ID
                ,@PartNumber = PartNumber
                ,@Location = Location
                ,@AllocatedQty = AllocatedQty
            FROM @InvoiceOnOrder

            UPDATE tblInvExt
            SET decAlloc = @AllocatedQty
            WHERE strPartNumber = @PartNumber
                AND strLocName = @Location

            DELETE
            FROM @InvoiceOnOrder
            WHERE ID = @IdInv
        END

        SET @Query3 = CONCAT (
                'UPDATE tblInvExt SET decAvail = (decOnHand - decAlloc) -decManuf WHERE strPartNumber IN (SELECT strPartNumber FROM tblOrderDocDT WHERE '
                ,@QuerySub
                ,')'
                )

        EXECUTE sp_executesql @Query3

        SET @Query4 = CONCAT (
                'SELECT tblOrderDocDT.strPartNumber, tblOrderDocDT.strLocation ,SUM(tblOrderDocDT.decStockQtyRemain) AS Expr1 FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID WHERE '
                ,@QuerySub
                ,' AND (tblOrderDoc.bitCleared = 0) AND (tblOrderDoc.intDocType in (1,3)) AND (tblOrderDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1)) GROUP BY tblOrderDocDT.strPartNumber, tblOrderDocDT.strLocation'
                )

        PRINT '@Query4=' + @Query4

        INSERT INTO @InvoiceOnOrder
        EXECUTE sp_executesql @Query4

        SET @Query5 = CONCAT (
                'UPDATE tblInv SET decSumAlloc = 0, dteLastUpdated = GetDate() WHERE strPartNumber IN (SELECT strPartNumber FROM tblOrderDocDT WHERE '
                ,@QuerySub
                ,')'
                )

        PRINT '@Query5=' + @Query5

        EXECUTE sp_executesql @Query5

        SELECT *
        FROM @InvoiceOnOrder

        WHILE (
                (
                    SELECT Count(1)
                    FROM @InvoiceOnOrder
                    ) > 0
                )
        BEGIN
            SELECT TOP 1 @IdInv = ID
                ,@PartNumber = PartNumber
                ,@AllocatedQty = AllocatedQty
            FROM @InvoiceOnOrder

            PRINT @AllocatedQty

            UPDATE tblInv
            SET decSumAlloc = decSumAlloc + @AllocatedQty
                ,dteLastUpdated = GetDate()
            WHERE strPartNumber = @PartNumber

            DELETE
            FROM @InvoiceOnOrder
            WHERE ID = @IdInv
        END

        SET @Query6 = CONCAT (
                'UPDATE tblInv SET decSumAvail = (decSumOnHand - decSumAlloc) - decSumManuf, dteLastUpdated = GetDate() WHERE strPartNumber IN (SELECT strPartNumber FROM tblOrderDocDT WHERE '
                ,@QuerySub
                ,')'
                )

        EXECUTE sp_executesql @Query6

        --PRINT '@Query6=' + @Query6
        SET @LocID = 0

        IF (@ItemCount > 0)
        BEGIN
            INSERT INTO @PartTemp
            SELECT [Value]
            FROM [dbo].[fnSplitStringAsTable](@PartNumbers, '~')

            INSERT INTO @LocationTemp
            SELECT [Value]
            FROM [dbo].[fnSplitStringAsTable](@Locations, '~')

            WHILE (
                    (
                        SELECT Count(1)
                        FROM @PartTemp
                        ) > 0
                    )
            BEGIN
                --SELECT * FROM @InvoiceOnOrderCopy WHERE PartNumber = @Part
                --IF (@@ROWCOUNT = 0)
                SELECT TOP (1) @Id = ID
                    ,@Part = Part
                FROM @PartTemp

                SELECT TOP (1) @LocID = ID
                    ,@Loc = Location
                FROM @LocationTemp

                IF NOT EXISTS (
                        SELECT TOP 1 1
                        FROM @InvoiceOnOrderCopy
                        WHERE PartNumber = @Part
                        )
                BEGIN
                    UPDATE tblInvExt
                    SET decAlloc = 0
                        ,decAvail = decOnHand
                    WHERE strPartNumber = @Part
                        AND strLocName = @Loc

                    UPDATE tblInv
                    SET decSumAlloc = 0
                        ,decSumAvail = decSumOnHand
                        ,dteLastUpdated = GetDate()
                    WHERE strPartNumber = @Part
                END

                DELETE
                FROM @PartTemp
                WHERE ID = @Id

                DELETE
                FROM @LocationTemp
                WHERE ID = @LocID
            END
        END
    END
    ELSE
    BEGIN
        DECLARE @QuerySubPJB AS NVARCHAR(MAX) = ''
        DECLARE @QuerySubIBT AS NVARCHAR(MAX) = ''

        SET @QuerySubPJB = '('
        SET @QuerySubIBT = '('
        
        IF (@ItemCount > 0)
        BEGIN
            WHILE (
                    (
                        SELECT Count(1)
                        FROM @PartTemp
                        ) > 0
                    )
            BEGIN
                SELECT TOP (1) @Id = ID
                    ,@Part = Part
                FROM @PartTemp

                SET @QuerySub += CONCAT (
                        'tblOrderDocDT.strPartNumber = '''
                        ,@Part
                        ,''' OR '
                        )
                SET @QuerySubPJB += CONCAT (
                        'tblWSProcessDocDT.PartNumber = '''
                        ,@Part
                        ,''' OR '
                        )
                SET @QuerySubIBT += CONCAT (
                        'tblInvTrfOrdDocDT.strPartNumber = '''
                        ,@Part
                        ,''' OR '
                        )

                DELETE
                FROM @PartTemp
                WHERE ID = @Id
            END

            --SET @QuerySub = SUBSTRING(@QuerySub,1, LEN(@QuerySub) - 4)
            SET @QuerySub = SUBSTRING(@QuerySub, 1, LEN(@QuerySub) - 3)
            SET @QuerySubPJB = SUBSTRING(@QuerySubPJB, 1, LEN(@QuerySubPJB) - 3)
            SET @QuerySubIBT = SUBSTRING(@QuerySubIBT, 1, LEN(@QuerySubIBT) - 3)
        END

        SET @QuerySub += ') '
        SET @QuerySubPJB += ') '
        SET @QuerySubIBT += ') '

        PRINT 'QUERY SUB= ' + @QuerySub
        PRINT 'QUERY SUB ProcessJob= ' + @QuerySubPJB
        PRINT 'QUERY SUB IBT Orders= ' + @QuerySubIBT

        SET @Query1Ord = CONCAT (
                'SELECT tblOrderDocDT.strPartNumber, tblOrderDocDT.strLocation, SUM(tblOrderDocDT.decStockQtyRemain) AS Expr1 FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID WHERE '
                ,@QuerySub
                ,'AND (tblOrderDoc.bitCleared = 0) AND (tblOrderDoc.intDocType IN (1,3)) AND (tblOrderDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1)) GROUP BY tblOrderDocDT.strPartNumber, tblOrderDocDT.strLocation'
                )
        SET @Query1PJB = CONCAT (
                'SELECT tblWSProcessDocDT.PartNumber AS strPartNumber,tblWSProcessDocDT.Location AS strLocation,SUM(tblWSProcessDocDT.QtyRemaining) AS Expr1 FROM tblWSProcessDoc INNER JOIN tblWSProcessDocDT ON tblWSProcessDoc.ProcessDocID = tblWSProcessDocDT.ProcessDocID WHERE '
                ,@QuerySubPJB
                ,'AND (tblWSProcessDoc.Cleared = 0) AND (tblWSProcessDoc.JobStatusType = 2) AND (tblWSProcessDoc.DocType IN (2)) AND (tblWSProcessDocDT.PartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1)) GROUP BY tblWSProcessDocDT.PartNumber, tblWSProcessDocDT.Location'
                )
        SET @Query1IBT = CONCAT (
                'SELECT tblInvTrfOrdDocDT.strPartNumber,tblInvTrfOrdDoc.strLocName AS strLocation, ISNULL(SUM(CASE when tblInvTrfOrdDocDT.strConversionType=''Multiply'' then  (tblInvTrfOrdDocDT.decQty * tblInvTrfOrdDocDT.decConversionFactor) ELSE (tblInvTrfOrdDocDT.decQty * (1 / tblInvTrfOrdDocDT.decConversionFactor)) END),0) AS Expr1 FROM tblInvTrfOrdDoc INNER JOIN tblInvTrfOrdDocDT ON tblInvTrfOrdDocDT.strInvTrfOrdDocID = tblInvTrfOrdDoc.strInvTrfOrdDocID WHERE '
                ,@QuerySubIBT
                ,' AND (tblInvTrfOrdDoc.bitCleared = 0) AND (tblInvTrfOrdDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1)) GROUP BY tblInvTrfOrdDocDT.strPartNumber,tblInvTrfOrdDoc.strLocName'
                )
        SET @Query1 = 'SELECT strPartNumber, strLocation, SUM(Expr1) FROM ( ' + @Query1Ord + ' UNION ALL ' + @Query1PJB + ' UNION ALL ' + @Query1IBT + ' ) Z GROUP BY Z.strPartNumber, Z.strLocation'

        --SET @Query1 = CONCAT('SELECT tblOrderDocDT.strPartNumber, tblOrderDocDT.strLocation, SUM(tblOrderDocDT.decStockQtyRemain) AS Expr1 FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID WHERE ', @QuerySub, 'AND (tblOrderDoc.bitCleared = 0) AND (tblOrderDoc.intDocType in (1,3)) AND (tblOrderDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1)) GROUP BY tblOrderDocDT.strPartNumber, tblOrderDocDT.strLocation')
        PRINT 'Query1= ' + @Query1

        INSERT INTO @InvoiceOnOrder
        EXECUTE sp_executesql @Query1

        INSERT INTO @InvoiceOnOrderCopy
        SELECT *
        FROM @InvoiceOnOrder

        SET @Query2 = CASE 
                WHEN @AllocationSource = 0
                    THEN CONCAT (
                            'UPDATE tblInvExt SET decAlloc = 0 WHERE strPartNumber IN (SELECT strPartNumber FROM tblOrderDocDT WHERE '
                            ,@QuerySub
                            ,')'
                            )
                WHEN @AllocationSource = 5
                    THEN CONCAT (
                            'UPDATE tblInvExt SET decAlloc = 0 WHERE strPartNumber IN (SELECT PartNumber FROM tblWSProcessDocDT WHERE '
                            ,@QuerySubPJB
                            ,')'
                            )
                WHEN @AllocationSource = 6
                    THEN CONCAT (
                            'UPDATE tblInvExt SET decAlloc = 0 WHERE strPartNumber IN (SELECT strPartNumber FROM tblInvTrfOrdDocDT WHERE '
                            ,@QuerySubIBT
                            ,')'
                            )
                END

        EXECUTE sp_executesql @Query2

        --PRINT 'Query2= ' + @Query2
        WHILE (
                (
                    SELECT Count(1)
                    FROM @InvoiceOnOrder
                    ) > 0
                )
        BEGIN
            SELECT TOP 1 @IdInv = ID
                ,@PartNumber = PartNumber
                ,@Location = Location
                ,@AllocatedQty = AllocatedQty
            FROM @InvoiceOnOrder

            UPDATE tblInvExt
            SET decAlloc = @AllocatedQty
            WHERE strPartNumber = @PartNumber
                AND strLocName = @Location

            DELETE
            FROM @InvoiceOnOrder
            WHERE ID = @IdInv
        END

        SET @Query3 = CASE 
                WHEN @AllocationSource = 0
                    THEN CONCAT (
                            'UPDATE tblInvExt SET decAvail = (decOnHand - decAlloc) -decManuf WHERE strPartNumber IN (SELECT strPartNumber FROM tblOrderDocDT WHERE '
                            ,@QuerySub
                            ,')'
                            )
                WHEN @AllocationSource = 5
                    THEN CONCAT (
                            'UPDATE tblInvExt SET decAvail = (decOnHand - decAlloc) -decManuf WHERE strPartNumber IN (SELECT PartNumber FROM tblWSProcessDocDT WHERE '
                            ,@QuerySubPJB
                            ,')'
                            )
                WHEN @AllocationSource = 6
                    THEN CONCAT (
                            'UPDATE tblInvExt SET decAvail = (decOnHand - decAlloc) -decManuf WHERE strPartNumber IN (SELECT strPartNumber FROM tblInvTrfOrdDocDT WHERE '
                            ,@QuerySubIBT
                            ,')'
                            )
                END

        EXECUTE sp_executesql @Query3

        SET @Query4Ord = CONCAT (
                'SELECT tblOrderDocDT.strPartNumber, tblOrderDocDT.strLocation ,SUM(tblOrderDocDT.decStockQtyRemain) AS Expr1 FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID WHERE '
                ,@QuerySub
                ,' AND (tblOrderDoc.bitCleared = 0) AND (tblOrderDoc.intDocType in (1,3)) AND (tblOrderDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1)) GROUP BY tblOrderDocDT.strPartNumber, tblOrderDocDT.strLocation'
                )
        SET @Query4PJB = CONCAT (
                'SELECT tblWSProcessDocDT.PartNumber AS strPartNumber,tblWSProcessDocDT.Location AS strLocation,SUM(tblWSProcessDocDT.QtyRemaining) AS Expr1 FROM tblWSProcessDoc INNER JOIN tblWSProcessDocDT ON tblWSProcessDoc.ProcessDocID = tblWSProcessDocDT.ProcessDocID WHERE '
                ,@QuerySubPJB
                ,'AND (tblWSProcessDoc.Cleared = 0) AND (tblWSProcessDoc.JobStatusType = 2) AND (tblWSProcessDoc.DocType IN (2)) AND (tblWSProcessDocDT.PartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1)) GROUP BY tblWSProcessDocDT.PartNumber, tblWSProcessDocDT.Location'
                )
        SET @Query4IBT = CONCAT (
                'SELECT tblInvTrfOrdDocDT.strPartNumber AS strPartNumber,tblInvTrfOrdDoc.strLocName AS strLocation, ISNULL(SUM(Case when tblInvTrfOrdDocDT.strConversionType=''Multiply'' Then  (tblInvTrfOrdDocDT.decQty * tblInvTrfOrdDocDT.decConversionFactor) else (tblInvTrfOrdDocDT.decQty * (1/tblInvTrfOrdDocDT.decConversionFactor)) end),0) AS Expr1 FROM tblInvTrfOrdDoc INNER JOIN tblInvTrfOrdDocDT ON tblInvTrfOrdDoc.strInvTrfOrdDocID = tblInvTrfOrdDocDT.strInvTrfOrdDocID WHERE '
                ,@QuerySubIBT
                ,'AND (tblInvTrfOrdDoc.bitCleared = 0) AND (tblInvTrfOrdDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1)) GROUP BY tblInvTrfOrdDocDT.strPartNumber, tblInvTrfOrdDoc.strLocName'
                )
        SET @Query4 = 'SELECT strPartNumber, strLocation, SUM(Expr1) FROM ( ' + @Query4Ord + ' UNION ALL ' + @Query4PJB + ' UNION ALL ' + @Query4IBT + ' ) Z GROUP BY Z.strPartNumber, Z.strLocation'

        PRINT '@Query4=' + @Query4

        INSERT INTO @InvoiceOnOrder
        EXECUTE sp_executesql @Query4

        SET @Query5 = CASE 
                WHEN @AllocationSource = 0
                    THEN CONCAT (
                            'UPDATE tblInv SET decSumAlloc = 0, dteLastUpdated = GetDate() WHERE strPartNumber IN (SELECT strPartNumber FROM tblOrderDocDT WHERE '
                            ,@QuerySub
                            ,')'
                            )
                WHEN @AllocationSource = 5
                    THEN CONCAT (
                            'UPDATE tblInv SET decSumAlloc = 0, dteLastUpdated = GetDate() WHERE strPartNumber IN (SELECT PartNumber FROM tblWSProcessDocDT WHERE '
                            ,@QuerySubPJB
                            ,')'
                            )
                WHEN @AllocationSource = 6
                    THEN CONCAT (
                            'UPDATE tblInv SET decSumAlloc = 0, dteLastUpdated = GetDate() WHERE strPartNumber IN (SELECT strPartNumber FROM tblInvTrfOrdDocDT WHERE '
                            ,@QuerySubIBT
                            ,')'
                            )
                END

        PRINT '@Query5=' + @Query5

        EXECUTE sp_executesql @Query5

        SELECT *
        FROM @InvoiceOnOrder

        WHILE (
                (
                    SELECT Count(1)
                    FROM @InvoiceOnOrder
                    ) > 0
                )
        BEGIN
            SELECT TOP 1 @IdInv = ID
                ,@PartNumber = PartNumber
                ,@AllocatedQty = AllocatedQty
            FROM @InvoiceOnOrder

            PRINT @AllocatedQty

            UPDATE tblInv
            SET decSumAlloc = decSumAlloc + @AllocatedQty
                ,dteLastUpdated = GetDate()
            WHERE strPartNumber = @PartNumber

            DELETE
            FROM @InvoiceOnOrder
            WHERE ID = @IdInv
        END

        SET @Query6 = CASE 
                WHEN @AllocationSource = 0
                    THEN CONCAT (
                            'UPDATE tblInv SET decSumAvail = (decSumOnHand - decSumAlloc) - decSumManuf, dteLastUpdated = GetDate() WHERE strPartNumber IN (SELECT strPartNumber FROM tblOrderDocDT WHERE '
                            ,@QuerySub
                            ,')'
                            )
                WHEN @AllocationSource = 5
                    THEN CONCAT (
                            'UPDATE tblInv SET decSumAvail = (decSumOnHand - decSumAlloc) - decSumManuf, dteLastUpdated = GetDate() WHERE strPartNumber IN (SELECT PartNumber FROM tblWSProcessDocDT WHERE '
                            ,@QuerySubPJB
                            ,')'
                            )
                WHEN @AllocationSource = 6
                    THEN CONCAT (
                            'UPDATE tblInv SET decSumAvail = (decSumOnHand - decSumAlloc) - decSumManuf, dteLastUpdated = GetDate() WHERE strPartNumber IN (SELECT strPartNumber FROM tblInvTrfOrdDocDT WHERE '
                            ,@QuerySubIBT
                            ,')'
                            )
                END

        EXECUTE sp_executesql @Query6

        --PRINT '@Query6=' + @Query6
        SET @LocID = 0

        IF (@ItemCount > 0)
        BEGIN
            INSERT INTO @PartTemp
            SELECT [Value]
            FROM [dbo].[fnSplitStringAsTable](@PartNumbers, '~')

            INSERT INTO @LocationTemp
            SELECT [Value]
            FROM [dbo].[fnSplitStringAsTable](@Locations, '~')

            WHILE (
                    (
                        SELECT Count(1)
                        FROM @PartTemp
                        ) > 0
                    )
            BEGIN
                --SELECT * FROM @InvoiceOnOrderCopy WHERE PartNumber = @Part
                --IF (@@ROWCOUNT = 0)
                SELECT TOP (1) @Id = ID
                    ,@Part = Part
                FROM @PartTemp

                SELECT TOP (1) @LocID = ID
                    ,@Loc = Location
                FROM @LocationTemp

                IF NOT EXISTS (
                        SELECT TOP 1 1
                        FROM @InvoiceOnOrderCopy
                        WHERE PartNumber = @Part
                        )
                BEGIN
                    UPDATE tblInvExt
                    SET decAlloc = 0
                        ,decAvail = decOnHand
                    WHERE strPartNumber = @Part
                        AND strLocName = @Loc

                    UPDATE tblInv
                    SET decSumAlloc = 0
                        ,decSumAvail = decSumOnHand
                        ,dteLastUpdated = GetDate()
                    WHERE strPartNumber = @Part
                END

                DELETE
                FROM @PartTemp
                WHERE ID = @Id

                DELETE
                FROM @LocationTemp
                WHERE ID = @LocID
            END
        END
    END
END
GO

/****** Object:  StoredProcedure [dbo].[SyncInvOnOrder]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[SyncInvOnOrder] (
	@OrdPDocID NVARCHAR(50)
	,@SQCriteria NVARCHAR(MAX)
	,@IsFromIBT BIT
	)
AS
BEGIN


DECLARE @Query1 AS NVARCHAR(MAX)
	DECLARE @Query2 AS NVARCHAR(MAX)
	DECLARE @Query3 AS NVARCHAR(MAX)
	DECLARE @Query4 AS NVARCHAR(MAX)
	DECLARE @ParameterDefinition AS NVARCHAR(MAX) = '@OrdPDocID NVARCHAR(50)'
	DECLARE @tblInvoiceOnOrder AS TABLE (
		ID INT NOT NULL IDENTITY(1, 1) PRIMARY KEY
		,PartNumber VARCHAR(100)
		,Location VARCHAR(20) NULL
		,OnOrderQty MONEY
		)
	DECLARE @PartNumber VARCHAR(100)
		,@Location VARCHAR(20)
		,@OnOrderQty MONEY
		,@ID INT

	IF @IsFromIBT = 1
	BEGIN
		SET @Query1 = 'SELECT z.strPartNumber, z.strLocation, SUM(z.Expr1) FROM (SELECT tblOrderDocPDT.strPartNumber, tblOrderDocPDT.strLocation, SUM(tblOrderDocPDT.decStockQtyRemain) AS Expr1 FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID WHERE (tblOrderDocPDT.strPartNumber IN ( SELECT strPartNumber FROM tblInvTrfOrdDocDT WHERE strInvTrfOrdDocID = ''' + @OrdPDocID +
			''')) AND (tblOrderDocP.bitCleared = 0) AND (tblOrderDocP.intDocType = 1) AND (tblOrderDocPDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1 AND bitOtherCmp = 0)) GROUP BY tblOrderDocPDT.strPartNumber, tblOrderDocPDT.strLocation UNION ALL SELECT tblInvTrfOrdDocDT.strPartNumber, tblInvTrfOrdDoc.strToLocName AS strLocation, SUM(Case when tblInvTrfOrdDocDT.strConversionType = ''Multiply'' Then  (tblInvTrfOrdDocDT.decQty * tblInvTrfOrdDocDT.decConversionFactor) else (tblInvTrfOrdDocDT.decQty * (1/tblInvTrfOrdDocDT.decConversionFactor)) end) AS Expr1 FROM tblInvTrfOrdDocDT INNER JOIN tblInvTrfOrdDoc ON tblInvTrfOrdDocDT.strInvTrfOrdDocID = tblInvTrfOrdDoc.strInvTrfOrdDocID  WHERE (tblInvTrfOrdDocDT.strPartNumber IN ( SELECT strPartNumber FROM tblInvTrfOrdDocDT WHERE strInvTrfOrdDocID = ''' + @OrdPDocID + ''')) AND (tblInvTrfOrdDoc.bitCleared = 0) GROUP BY tblInvTrfOrdDocDT.strPartNumber, tblInvTrfOrdDoc.strToLocName) Z GROUP BY Z.strPartNumber, Z.strLocation'
	END
	ELSE
	BEGIN
		SET @Query1 = 'SELECT z.strPartNumber, z.strLocation, SUM(z.Expr1) FROM (SELECT tblOrderDocPDT.strPartNumber, tblOrderDocPDT.strLocation, SUM(tblOrderDocPDT.decStockQtyRemain) AS Expr1 FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID WHERE (tblOrderDocPDT.strPartNumber IN ( SELECT strPartNumber FROM tblOrderDocPDT WHERE strOrdPDocID = ''' + @OrdPDocID + 
			'''))  AND (tblOrderDocP.bitCleared = 0) AND (tblOrderDocP.intDocType = 1) AND (tblOrderDocPDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1 AND bitOtherCmp = 0)) GROUP BY tblOrderDocPDT.strPartNumber, tblOrderDocPDT.strLocation UNION ALL SELECT tblInvTrfOrdDocDT.strPartNumber, tblInvTrfOrdDoc.strToLocName AS strLocation, SUM(Case when tblInvTrfOrdDocDT.strConversionType = ''Multiply'' Then  (tblInvTrfOrdDocDT.decQty * tblInvTrfOrdDocDT.decConversionFactor) else (tblInvTrfOrdDocDT.decQty * (1/tblInvTrfOrdDocDT.decConversionFactor)) end) AS Expr1 FROM tblInvTrfOrdDocDT INNER JOIN tblInvTrfOrdDoc ON tblInvTrfOrdDocDT.strInvTrfOrdDocID = tblInvTrfOrdDoc.strInvTrfOrdDocID WHERE (tblInvTrfOrdDocDT.strPartNumber IN ( SELECT strPartNumber FROM tblOrderDocPDT WHERE strOrdPDocID = ''' + @OrdPDocID + '''))  AND (tblInvTrfOrdDoc.bitCleared = 0) GROUP BY tblInvTrfOrdDocDT.strPartNumber, tblInvTrfOrdDoc.strToLocName) Z GROUP BY Z.strPartNumber, Z.strLocation'
	END

	INSERT INTO @tblInvoiceOnOrder
	EXECUTE sp_executesql @Query1
		,@ParameterDefinition
		,@OrdPDocID


	SET @Query2 = 'UPDATE tblInvExt SET decOnOrder = 0 WHERE strPartNumber IN ('

	IF @IsFromIBT = 1
	BEGIN
		SET @Query2 = @Query2 + 'SELECT strPartNumber FROM tblInvTrfOrdDocDT WHERE strInvTrfOrdDocID = ''' + @OrdPDocID + ''') '
	END
	ELSE
	BEGIN
		SET @Query2 = @Query2 + 'SELECT strPartNumber FROM tblOrderDocPDT WHERE strOrdPDocID = ''' + @OrdPDocID + ''') '
	END

	EXECUTE sp_executesql @Query2
		,@ParameterDefinition
		,@OrdPDocID

	WHILE (
			(
				SELECT Count(1)
				FROM @tblInvoiceOnOrder
				) > 0
			)
	BEGIN
		SELECT TOP 1 @ID = ID
			,@PartNumber = PartNumber
			,@Location = Location
			,@OnOrderQty = OnOrderQty
		FROM @tblInvoiceOnOrder

		UPDATE tblInvExt
		SET decOnOrder = @OnOrderQty
		WHERE strPartNumber = @PartNumber
			AND strLocName = @Location

		DELETE
		FROM @tblInvoiceOnOrder
		WHERE ID = @id
	END

	IF @IsFromIBT = 1
	BEGIN
		SET @Query3 = 'SELECT z.strPartNumber, z.strLocation, SUM(z.Expr1) FROM (SELECT tblOrderDocPDT.strPartNumber, tblOrderDocPDT.strLocation, SUM(tblOrderDocPDT.decStockQtyRemain) AS Expr1 FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID WHERE (tblOrderDocPDT.strPartNumber IN ( SELECT strPartNumber FROM tblInvTrfOrdDocDT WHERE strInvTrfOrdDocID = ''' + @OrdPDocID + 
			'''))  AND (tblOrderDocP.bitCleared = 0) AND (tblOrderDocP.intDocType = 1) AND (tblOrderDocPDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1 AND bitOtherCmp = 0)) GROUP BY tblOrderDocPDT.strPartNumber, tblOrderDocPDT.strLocation UNION ALL SELECT tblInvTrfOrdDocDT.strPartNumber, tblInvTrfOrdDoc.strToLocName AS strLocation, SUM(Case when tblInvTrfOrdDocDT.strConversionType = ''Multiply'' Then  (tblInvTrfOrdDocDT.decQty * tblInvTrfOrdDocDT.decConversionFactor) else (tblInvTrfOrdDocDT.decQty * (1/tblInvTrfOrdDocDT.decConversionFactor)) end) AS Expr1 FROM tblInvTrfOrdDocDT INNER JOIN tblInvTrfOrdDoc ON tblInvTrfOrdDocDT.strInvTrfOrdDocID = tblInvTrfOrdDoc.strInvTrfOrdDocID WHERE (tblInvTrfOrdDocDT.strPartNumber IN ( SELECT strPartNumber FROM tblInvTrfOrdDocDT WHERE strInvTrfOrdDocID = ''' + @OrdPDocID + ''')) AND (tblInvTrfOrdDoc.bitCleared = 0) GROUP BY tblInvTrfOrdDocDT.strPartNumber, tblInvTrfOrdDoc.strToLocName) Z GROUP BY Z.strPartNumber, Z.strLocation'
	END
	ELSE
	BEGIN
		SET @Query3 = 'SELECT Z.strPartNumber, null, SUM(Z.Expr1) FROM ( SELECT tblOrderDocPDT.strPartNumber, SUM(tblOrderDocPDT.decStockQtyRemain) AS Expr1 FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID WHERE (tblOrderDocPDT.strPartNumber IN (SELECT strPartNumber FROM tblOrderDocPDT WHERE strOrdPDocID = ''' + @OrdPDocID + ''')) AND (tblOrderDocP.bitCleared = 0) AND (tblOrderDocP.intDocType = 1) AND (tblOrderDocPDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1 AND bitOtherCmp = 0)) GROUP BY tblOrderDocPDT.strPartNumber UNION ALL SELECT tblInvTrfOrdDocDT.strPartNumber, sum(Case when tblInvTrfOrdDocDT.strConversionType = ''Multiply'' Then  (tblInvTrfOrdDocDT.decQty * tblInvTrfOrdDocDT.decConversionFactor) else (tblInvTrfOrdDocDT.decQty * (1/tblInvTrfOrdDocDT.decConversionFactor)) end) AS Expr1 from tblInvTrfOrdDocDT INNER JOIN tblInvTrfOrdDoc ON tblInvTrfOrdDocDT.strInvTrfOrdDocID = tblInvTrfOrdDoc.strInvTrfOrdDocID WHERE (tblInvTrfOrdDocDT.strPartNumber IN ( SELECT strPartNumber FROM tblOrderDocPDT WHERE strOrdPDocID = ''' + @OrdPDocID + 
			''')) AND (tblInvTrfOrdDoc.bitCleared = 0) GROUP BY tblInvTrfOrdDocDT.strPartNumber) Z GROUP BY Z.strPartNumber'
	END

	INSERT INTO @tblInvoiceOnOrder
	EXECUTE sp_executesql @Query3
		,@ParameterDefinition
		,@OrdPDocID

	SET @Query4 = 'UPDATE tblInv SET decSumOnOrder = 0, dteLastUpdated = GetDate() WHERE strPartNumber IN ('

	IF @IsFromIBT = 1
	BEGIN
		SET @Query4 = @Query4 + 'SELECT strPartNumber FROM tblInvTrfOrdDocDT WHERE strInvTrfOrdDocID  = ''' + @OrdPDocID + ''') '
	END
	ELSE
	BEGIN
		SET @Query4 = @Query4 + 'SELECT strPartNumber FROM tblOrderDocPDT WHERE strOrdPDocID  = ''' + @OrdPDocID + ''') '
	END

	EXECUTE sp_executesql @Query4
		,@ParameterDefinition
		,@OrdPDocID

	WHILE (
			(
				SELECT Count(1)
				FROM @tblInvoiceOnOrder
				) > 0
			)
	BEGIN
		SELECT TOP 1 @ID = ID
			,@PartNumber = PartNumber
			,@OnOrderQty = OnOrderQty
		FROM @tblInvoiceOnOrder

		UPDATE tblInv
		SET decSumOnOrder = @OnOrderQty
			,dteLastUpdated = GetDate()
		WHERE strPartNumber = @PartNumber

		DELETE
		FROM @tblInvoiceOnOrder
		WHERE ID = @id
	END
END
GO

/****** Object:  StoredProcedure [dbo].[SyncInvOnOrderDataSet]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-----------------------------------------------------------------
CREATE PROCEDURE [dbo].[SyncInvOnOrderDataSet]
(	
	@PartNumbers AS NVARCHAR(MAX),
	@Locations AS NVARCHAR(MAX),
	@AllocationSource INT = NULL
)
AS
BEGIN		
	DECLARE @Query1 AS NVARCHAR(MAX) 
	DECLARE @Query2 AS NVARCHAR(MAX) 
	DECLARE @Query3 AS NVARCHAR(MAX)
	DECLARE @Query4 AS NVARCHAR(MAX)
	DECLARE @Query1Ord AS NVARCHAR(MAX)
	DECLARE @Query4Ord AS NVARCHAR(MAX)
	DECLARE @Query1IBT AS NVARCHAR(MAX)
	DECLARE @Query4IBT AS NVARCHAR(MAX)
	
		
	DECLARE @PartTemp AS TABLE 
	(
		Id INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
		Part NVARCHAR(100)
	)
	DECLARE @LocationTemp AS TABLE 
	(
		Id INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
		Location NVARCHAR(20)
	)	

	DECLARE @InvoiceOnOrder AS TABLE 
	(
		ID INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
		PartNumber VARCHAR(100),
		Location VARCHAR(20) NULL,
		OnOrderQty Money		
	)
	DECLARE @InvoiceOnOrderCopy AS TABLE 
	(
		ID INT NOT NULL PRIMARY KEY,
		PartNumber VARCHAR(100),
		Location VARCHAR(20) NULL,
		OnOrderQty Money		
	)

	DECLARE @Part AS NVARCHAR(100), @Loc AS NVARCHAR(20), @Id AS INT, @IdLoc AS INT
	DECLARE @IdInv INT, @PartNumber VARCHAR(100), @Location VARCHAR(20), @OnOrderQty Money

	INSERT INTO @PartTemp SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@PartNumbers, '~')
	DECLARE @ItemCount AS INT
	SELECT @ItemCount = COUNT(1) FROM @PartTemp

	DECLARE @QuerySub AS NVARCHAR(MAX) = ''
	DECLARE @QuerySubIBT AS NVARCHAR(MAX) = ''
	SET @QuerySub = '('
	IF @AllocationSource IS NULL
    BEGIN
	IF (@ItemCount > 0)
	BEGIN
		
		WHILE((Select Count(1) from @PartTemp) > 0)
		BEGIN
			
			SELECT TOP(1) @Id = ID, @Part = Part FROM @PartTemp
						
			SET @QuerySub += CONCAT('tblOrderDocPDT.strPartNumber  = ''', @Part, ''' OR ')
		   
			DELETE FROM @PartTemp WHERE ID = @Id

		END

		SET @QuerySub = SUBSTRING(@QuerySub,1, LEN(@QuerySub) - 3)
	END
	SET @QuerySub += ') '
	PRINT 'QUERY SUB= ' + @QuerySub
	SET @Query1  = CONCAT('SELECT tblOrderDocPDT.strPartNumber, tblOrderDocPDT.strLocation, SUM(tblOrderDocPDT.decStockQtyRemain) AS OnOrderQty FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID WHERE ', @QuerySub, 'AND (tblOrderDocP.bitCleared = 0) AND (tblOrderDocP.intDocType = 1) AND (tblOrderDocPDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1)) GROUP BY tblOrderDocPDT.strPartNumber, tblOrderDocPDT.strLocation')
	PRINT 'Query1= ' + @Query1
	INSERT INTO @InvoiceOnOrder EXECUTE sp_executesql @Query1
	INSERT INTO @InvoiceOnOrderCopy SELECT * FROM @InvoiceOnOrder
	SET @Query2 = CONCAT('UPDATE tblInvExt SET decOnOrder = 0 WHERE strPartNumber IN (SELECT strPartNumber FROM tblOrderDocPDT WHERE ', @QuerySub, ')')
	EXECUTE sp_executesql @Query2
	
	WHILE((Select Count(1) from @InvoiceOnOrder) > 0)
	BEGIN
		Select TOP 1 @IdInv = ID, @PartNumber = PartNumber, @Location = Location, @OnOrderQty = OnOrderQty FROM @InvoiceOnOrder
	
		UPDATE tblInvExt SET decOnOrder = @OnOrderQty WHERE strPartNumber = @PartNumber AND strLocName = @Location
	
		DELETE from @InvoiceOnOrder where ID = @IdInv
	END
	SET @Query3 =CONCAT('SELECT tblOrderDocPDT.strPartNumber,NULL, SUM(tblOrderDocPDT.decStockQtyRemain) AS OnOrderQty FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID WHERE ', @QuerySub, ' AND (tblOrderDocP.bitCleared = 0) AND (tblOrderDocP.intDocType = 1) AND (tblOrderDocPDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1)) GROUP BY tblOrderDocPDT.strPartNumber')
	INSERT INTO @InvoiceOnOrder EXECUTE sp_executesql @Query3
	SET @Query4 =  CONCAT('UPDATE tblInv SET decSumOnOrder = 0, dteLastUpdated = GetDate() WHERE strPartNumber IN (SELECT strPartNumber FROM tblOrderDocPDT WHERE ', @QuerySub, ')')
	EXECUTE sp_executesql @Query4
	WHILE((Select Count(1) from @InvoiceOnOrder) > 0)
	BEGIN
		Select TOP 1 @IdInv = ID, @PartNumber = PartNumber, @OnOrderQty = OnOrderQty FROM @InvoiceOnOrder
	
		UPDATE tblInv SET decSumOnOrder = @OnOrderQty, dteLastUpdated = GetDate() WHERE strPartNumber = @PartNumber
	
		DELETE from @InvoiceOnOrder where ID = @IdInv
	END
	
		
	IF (@ItemCount > 0)
	BEGIN
		INSERT INTO @PartTemp SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@PartNumbers, '~')
		INSERT INTO @LocationTemp SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@Locations, '~')

		WHILE((Select Count(1) from @PartTemp) > 0)
		BEGIN
			
				SELECT TOP(1) @Id = ID, @Part = Part FROM @PartTemp
				SELECT TOP(1) @Loc = Location FROM @LocationTemp
			 IF NOT EXISTS (
                        SELECT TOP 1 1
                        FROM @InvoiceOnOrderCopy
                        WHERE PartNumber = @Part
                        )


			BEGIN
				UPDATE tblInvExt SET decOnOrder = 0 WHERE strPartNumber = @Part AND strLocName = @Loc
				UPDATE tblInv SET decSumOnOrder = 0, dteLastUpdated = GetDate() WHERE strPartNumber = @Part

			END
			
			DELETE FROM @PartTemp WHERE ID = @Id
			DELETE FROM @LocationTemp WHERE ID = @Id
		END
	END
	END
	ELSE
	BEGIN
	
	SET @QuerySubIBT = '('

	IF (@ItemCount > 0)
	BEGIN
		
		WHILE((Select Count(1) from @PartTemp) > 0)
		BEGIN
			
			SELECT TOP(1) @Id = ID, @Part = Part FROM @PartTemp
						
			SET @QuerySub += CONCAT('tblOrderDocPDT.strPartNumber  = ''', @Part, ''' OR ')
		   SET @QuerySubIBT += CONCAT (
                        'tblInvTrfOrdDocPDT.strPartNumber = '''
                        ,@Part
                        ,''' OR '
                        )
			DELETE FROM @PartTemp WHERE ID = @Id

		END

		SET @QuerySub = SUBSTRING(@QuerySub,1, LEN(@QuerySub) - 3)
		SET @QuerySubIBT = SUBSTRING(@QuerySubIBT, 1, LEN(@QuerySubIBT) - 3)
	END
	
	SET @QuerySub += ') '
	SET @QuerySubIBT += ') '

	PRINT 'QUERY SUB= ' + @QuerySub
	PRINT 'QUERY SUB IBT Orders= ' + @QuerySubIBT

	SET @Query1Ord = CONCAT('SELECT tblOrderDocPDT.strPartNumber, tblOrderDocPDT.strLocation, SUM(tblOrderDocPDT.decStockQtyRemain) AS OnOrderQty FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID WHERE ', @QuerySub, 'AND (tblOrderDocP.bitCleared = 0) AND (tblOrderDocP.intDocType = 1) AND (tblOrderDocPDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1)) GROUP BY tblOrderDocPDT.strPartNumber, tblOrderDocPDT.strLocation')
	 SET @Query1IBT = CONCAT (
                'SELECT tblInvTrfOrdDocDT.strPartNumber,tblInvTrfOrdDoc.strLocName AS strLocation, ISNULL(SUM(CASE when tblInvTrfOrdDocDT.strConversionType=''Multiply'' then  (tblInvTrfOrdDocDT.decQty * tblInvTrfOrdDocDT.decConversionFactor) ELSE (tblInvTrfOrdDocDT.decQty * (1 / tblInvTrfOrdDocDT.decConversionFactor)) END),0) AS Expr1 FROM tblInvTrfOrdDoc INNER JOIN tblInvTrfOrdDocDT ON tblInvTrfOrdDocDT.strInvTrfOrdDocID = tblInvTrfOrdDoc.strInvTrfOrdDocID WHERE '
                ,@QuerySubIBT
                ,' AND (tblInvTrfOrdDoc.bitCleared = 0) AND (tblInvTrfOrdDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1)) GROUP BY tblInvTrfOrdDocDT.strPartNumber,tblInvTrfOrdDoc.strLocName'
                )
				SET @Query1 = 'SELECT strPartNumber, strLocation, SUM(Expr1) FROM ( ' + @Query1Ord +  ' UNION ALL ' + @Query1IBT + ' ) Z GROUP BY Z.strPartNumber, Z.strLocation'

    PRINT 'Query1= ' + @Query1
	INSERT INTO @InvoiceOnOrder EXECUTE sp_executesql @Query1
	INSERT INTO @InvoiceOnOrderCopy SELECT * FROM @InvoiceOnOrder

	SET @Query2 =CASE 
                WHEN @AllocationSource = 0
                    THEN CONCAT('UPDATE tblInvExt SET decOnOrder = 0 WHERE strPartNumber IN (SELECT strPartNumber FROM tblOrderDocPDT WHERE ', @QuerySub, ')')
				when @AllocationSource = 6
				    THEN CONCAT('UPDATE tblInvExt SET decOnOrder = 0 WHERE strPartNumber IN (SELECT strPartNumber FROM tblInvTrfOrdDocDT WHERE ', @QuerySubIBT, ')')
			    END
	EXECUTE sp_executesql @Query2

	WHILE((Select Count(1) from @InvoiceOnOrder) > 0)
	BEGIN
		Select TOP 1 @IdInv = ID, @PartNumber = PartNumber, @Location = Location, @OnOrderQty = OnOrderQty FROM @InvoiceOnOrder
	
		UPDATE tblInvExt SET decOnOrder = @OnOrderQty WHERE strPartNumber = @PartNumber AND strLocName = @Location
	
		DELETE from @InvoiceOnOrder where ID = @IdInv
	END
	
	
	SET @Query4Ord =CONCAT('SELECT tblOrderDocPDT.strPartNumber,NULL, SUM(tblOrderDocPDT.decStockQtyRemain) AS OnOrderQty FROM tblOrderDocP INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID WHERE ', @QuerySub, ' AND (tblOrderDocP.bitCleared = 0) AND (tblOrderDocP.intDocType = 1) AND (tblOrderDocPDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1)) GROUP BY tblOrderDocPDT.strPartNumber')
	SET @Query4IBT = CONCAT (
                'SELECT tblInvTrfOrdDocDT.strPartNumber AS strPartNumber,tblInvTrfOrdDoc.strLocName AS strLocation, ISNULL(SUM(Case when tblInvTrfOrdDocDT.strConversionType=''Multiply'' Then  (tblInvTrfOrdDocDT.decQty * tblInvTrfOrdDocDT.decConversionFactor) else (tblInvTrfOrdDocDT.decQty * (1/tblInvTrfOrdDocDT.decConversionFactor)) end),0) AS Expr1 FROM tblInvTrfOrdDoc INNER JOIN tblInvTrfOrdDocDT ON tblInvTrfOrdDoc.strInvTrfOrdDocID = tblInvTrfOrdDocDT.strInvTrfOrdDocID WHERE '
                ,@QuerySubIBT
                ,'AND (tblInvTrfOrdDoc.bitCleared = 0) AND (tblInvTrfOrdDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 1)) GROUP BY tblInvTrfOrdDocDT.strPartNumber, tblInvTrfOrdDoc.strLocName'
                )		  
	 SET @Query3 = 'SELECT strPartNumber, strLocation, SUM(Expr1) FROM ( ' + @Query4Ord + ' UNION ALL ' + @Query4IBT + ' ) Z GROUP BY Z.strPartNumber, Z.strLocation'
	PRINT '@Query3=' + @Query3
	
	INSERT INTO @InvoiceOnOrder EXECUTE sp_executesql @Query3

	SET @Query4 = CASE 
                WHEN @AllocationSource = 0
                    THEN CONCAT('UPDATE tblInv SET decSumOnOrder = 0, dteLastUpdated = GetDate() WHERE strPartNumber IN (SELECT strPartNumber FROM tblOrderDocPDT WHERE ', @QuerySub, ')')
				WHEN @AllocationSource = 6
				    THEN CONCAT('UPDATE tblInv SET decSumOnOrder = 0, dteLastUpdated = GetDate() WHERE strPartNumber IN (SELECT strPartNumber FROM tblInvTrfOrdDocDT WHERE ', @QuerySubIBT, ')')
				END

				PRINT '@Query4=' + @Query4
	EXECUTE sp_executesql @Query4

	WHILE((Select Count(1) from @InvoiceOnOrder) > 0)
	BEGIN
		Select TOP 1 @IdInv = ID, @PartNumber = PartNumber, @OnOrderQty = OnOrderQty FROM @InvoiceOnOrder
	
		UPDATE tblInv SET decSumOnOrder = @OnOrderQty, dteLastUpdated = GetDate() WHERE strPartNumber = @PartNumber
	
		DELETE from @InvoiceOnOrder where ID = @IdInv
	END
	
		
	IF (@ItemCount > 0)
	BEGIN
		INSERT INTO @PartTemp SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@PartNumbers, '~')
		INSERT INTO @LocationTemp SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@Locations, '~')

		WHILE((Select Count(1) from @PartTemp) > 0)
		BEGIN
			
				SELECT TOP(1) @Id = ID, @Part = Part FROM @PartTemp
				SELECT TOP(1) @Loc = Location FROM @LocationTemp
			 IF NOT EXISTS (
                        SELECT TOP 1 1
                        FROM @InvoiceOnOrderCopy
                        WHERE PartNumber = @Part
                        )


			BEGIN
				UPDATE tblInvExt SET decOnOrder = 0 WHERE strPartNumber = @Part AND strLocName = @Loc
				UPDATE tblInv SET decSumOnOrder = 0, dteLastUpdated = GetDate() WHERE strPartNumber = @Part

			END
			
			DELETE FROM @PartTemp WHERE ID = @Id
			DELETE FROM @LocationTemp WHERE ID = @Id
		END
	END
	END
	
END
GO

/****** Object:  StoredProcedure [dbo].[TaxAuthorityReferenceCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[TaxAuthorityReferenceCount]
	@Name AS NVARCHAR(10)
AS
BEGIN
	SELECT Count(*) FROM tblTaxCodes WHERE strTaxCode IN (SELECT strTaxCode FROM tblTaxCodeExt WHERE strTaxName = @Name)
END
GO
/****** Object:  StoredProcedure [dbo].[TaxCodeExtUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[TaxCodeExtUpdate]
(

	@TaxCode NVARCHAR(2),
	@TaxName NVARCHAR(10),
	@Status INT,
	@Rate DECIMAL(10,4),
	@IsIncluded BIT,
	@IsRefundable BIT,
	@TaxNameOld NVARCHAR(10)
)
AS 
BEGIN
	UPDATE tblTaxCodeExt SET strTaxName = @TaxName, intStatus = @Status, decRate = @Rate, bitIncluded = @IsIncluded, bitRefundable = @IsRefundable, dteRowUpdated = GETDATE() 
	WHERE strTaxCode = @TaxCode AND strTaxName = @TaxNameOld
END
GO
/****** Object:  StoredProcedure [dbo].[TaxCodeInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [CustomersGet] ***********/




/*********** Start [TaxCodeInsert] ***********/
CREATE PROCEDURE  [dbo].[TaxCodeInsert]
    @TaxCode AS NVARCHAR(2) ,
    @Description AS NVARCHAR(20) ,
    @AllowedJournalCodes AS INT ,
    @IsDefVendor AS BIT ,
    @IsDefCustomer AS BIT ,
    @IsDefPayment AS BIT ,
    @IsDefReceipt AS BIT , 
	@IsRequiresOrderNumber AS BIT ,
	@ReferenceLabel AS NVARCHAR(50) ,
	@IsValidateCharacters AS BIT ,
	@ValidationCharacterType AS INT ,
	@IsSetLength AS BIT ,
	@MaxLength AS INT ,
	@MinLength AS INT 
AS
    BEGIN
        INSERT  INTO tblTaxCodes
                ( strTaxCode ,
                  strDescription ,
                  intAllowedJournals ,
                  bitDefVendors ,
                  bitDefCustomers ,
                  bitDefCBPayments ,
                  bitDefCBReceipts ,
				  bitRequiresOrderNumber ,
				  strReferenceLabel ,
				  bitValidateCharacters ,
				  intValidationCharacterType ,
				  bitSetLength ,
				  intMaxLength ,
				  intMinLength ,
				  dteRowUpdated
                )
        VALUES  ( @TaxCode ,
                  @Description ,
                  @AllowedJournalCodes ,
                  @IsDefVendor ,
                  @IsDefCustomer ,
                  @IsDefPayment ,
                  @IsDefReceipt  ,
				  @IsRequiresOrderNumber ,
				  @ReferenceLabel ,
				  @IsValidateCharacters ,
				  @ValidationCharacterType ,
				  @IsSetLength ,
				  @MaxLength , 
				  @MinLength ,
				  GETDATE()
                );
    END;
GO
/****** Object:  StoredProcedure [dbo].[TaxDefUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[TaxDefUpdate]
(
	@TaxName NVARCHAR(10),
	@PurchaseAcc NVARCHAR(30),
	@SalesAcc  NVARCHAR(30),
	@TaxNameOld NVARCHAR(10)
)
AS 
BEGIN
	UPDATE tblTaxDef SET strTaxName = @TaxName, intPurchAcct = @PurchaseAcc, intSalesAcct = @SalesAcc, dteRowUpdated = GETDATE() WHERE  strTaxName = @TaxNameOld
END
GO
/****** Object:  StoredProcedure [dbo].[TaxDTInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [TaxInsert] ***********/

/*********** Start [TaxDTInsert] ***********/
CREATE PROCEDURE [dbo].[TaxDTInsert]
(
	@TaxDTData TaxDTTableType READONLY
)
AS
BEGIN

	INSERT INTO [dbo].[tblTaxDT]
           ([lngTaxID]
           ,[intLine]
           ,[strTaxCode]
           ,[strTaxName]
           ,[intStatus]
           ,[decRate]
           ,[bitRefundable]
           ,[intType]
           ,[decAmtSubTax]
           ,[decTaxAmt]
           ,[decTotOthTax]
           ,[strCurrency]
           ,[bitIsForeign]
           ,[decAmtSubTaxF]
           ,[decTaxAmtF]
           ,[decTotOthTaxF])
	SELECT [TaxID], [LineNo], [TaxCode], [TaxName], [Status], [Rate], [IsRefundable], [Type], [AmtSubTax], [TaxAmt], [TotOthTax], [Currency], [IsForeign], [AmtSubTaxF], [TaxAmtF], [TotOthTaxF] FROM @TaxDTData
END
GO
/****** Object:  StoredProcedure [dbo].[TaxInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [SalesExpenseInserted] ***********/

/*********** Start [TaxInsert] ***********/
CREATE PROCEDURE [dbo].[TaxInsert]
(
	@TaxID BIGINT
	,@SystemDate SMALLDATETIME
	,@JournalDate SMALLDATETIME
	,@UserName NVARCHAR(20)
	,@InvOrPayID NVARCHAR(50)
	,@JournalID BIGINT
	,@VendCustName NVARCHAR(50)
	,@DocNumber NVARCHAR(50)
	,@Amount MONEY
	,@VAT MONEY
	,@Total MONEY
	,@Module TINYINT
	,@Type TINYINT
	,@Currency NVARCHAR(3)
	,@IsForeign BIT
	,@AmountF MONEY
	,@VATF MONEY
	,@TotalF MONEY
	,@Exchange DECIMAL(20, 6)
	,@Dept INT
	)
AS
BEGIN
	INSERT INTO [dbo].[tblTax] (
		[lngTaxID]
		,[dteSystemDate]
		,[dteJournalDate]
		,[strUserName]
		,[strInvOrPayID]
		,[lngJournalID]
		,[strVendCustName]
		,[strDocNumber]
		,[decAmount]
		,[decVAT]
		,[decTotal]
		,[intModule]
		,[intType]
		,[strCurrency]
		,[bitIsForeign]
		,[decAmountF]
		,[decVATF]
		,[decTotalF]
		,[decExchange]
		,[intDept]
		)
	VALUES (
		@TaxID
		,@SystemDate
		,@JournalDate
		,@UserName
		,@InvOrPayID
		,@JournalID
		,@VendCustName
		,@DocNumber
		,@Amount
		,@VAT
		,@Total
		,@Module
		,@Type
		,@Currency
		,@IsForeign
		,@AmountF
		,@VATF
		,@TotalF
		,@Exchange
		,@Dept
		)
END

GO
/****** Object:  StoredProcedure [dbo].[TenderTypeReferenceCount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[TenderTypeReferenceCount]
	@Name AS NVARCHAR(20)

AS
BEGIN
	SELECT SUM(Z.TOTAL) FROM (
	SELECT ISNULL(COUNT(*), 0) TOTAL FROM tblInvoiceDoc WHERE strPaidBy = @Name UNION ALL SELECT ISNULL(COUNT(*), 0) TOTAL FROM tblInvoiceDocP WHERE strPaidBy = @Name UNION ALL 
	SELECT ISNULL(COUNT(*), 0) TOTAL FROM tblCustPay WHERE intPayBy = (SELECT (intDisplayOrder - 1) FROM tblTenderTypes WHERE strName = @Name) UNION ALL 
	SELECT ISNULL(COUNT(*), 0) TOTAL FROM tblVendPay WHERE intPayBy = (SELECT (intDisplayOrder - 1) FROM tblTenderTypes WHERE strName = @Name)) Z
END
GO
/****** Object:  StoredProcedure [dbo].[TenderTypesInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[TenderTypesInsert]  
 @Name AS NVARCHAR(20),  
 @Description AS NVARCHAR(100),  
 @GLNumber AS NVARCHAR(30) = NULL,  
 @InActive AS BIT,  
 @OnAccount AS BIT,  
 @DisplayOrder AS INT,  
 @CashbookIntegration AS BIT,  
 @IPAddres AS NVARCHAR(100),  
 @Port AS INT,  
 @EFTIntegration AS BIT,  
 @MerchantId AS NVARCHAR(100),  
 @TradeRootServer AS NVARCHAR(100),  
 @EFTPort AS INT,  
 @PEDId AS NVARCHAR(500),  
 @ISCash AS bit,  
 @IsSalesInvoice AS bit,  
 @IsLayBy AS bit,  
 @IsPOS AS bit,  
 @IsPrintMerchantCopy AS bit = 0,  
 @TimeoutPeriod AS INT = 10,  
 @IsOpenCashDrawer As bit = 0,  
 @IsFEFTIntegration AS BIT,  
 @FEFTMerchantId AS NVARCHAR(100),  
 @ServerUrl AS NVARCHAR(100),  
 @FEFTTransaction AS INT,  
 @IsFEFTPrintMerchantCopy AS bit = 0,  
 @IsFEFTMobileNumberRequired AS bit = 0,
 @IsMGAIntegration AS BIT,  
 @MGAServerUrl AS NVARCHAR(300),  
 @MGAUsername AS NVARCHAR(100),  
 @MGAPassword AS NVARCHAR(300),
 @IsCashGuardIntegration AS BIT=0  
AS  
BEGIN  
 INSERT INTO tblTenderTypes (strName, strDescription, intGLNumber, bitInActive, bitAccount, intDisplayOrder, bitCashbookIntegration, strIPAddress, intPortNum, bitEFTIntegration, strMerchantId, strTradeRootServer, intEFTPort, strPEDId, bitCash, bitSalesInvoice,bitLayBy, bitPOS,bitPrintMerchantCopy,intTimeoutPeriod,bitFEFTIntegration,strFEFTMerchantId,strServerUrl,intFEFTTransaction,bitFEFTPrintMerchantCopy,bitFEFTMobileNumberRequired,bitMGAIntegration,strMGAServerUrl,strMGAUsername,strMGAPassword,bitOpenCashDrawer,bitCashGuardIntegration)  
  
 VALUES (@Name, @Description, @GLNumber, @InActive, @OnAccount, @DisplayOrder, @CashbookIntegration, @IPAddres, @Port, @EFTIntegration, @MerchantId, @TradeRootServer, @EFTPort, @PEDId, @ISCash, @IsSalesInvoice, @IsLayBy, @IsPOS,@IsPrintMerchantCopy,@TimeoutPeriod, @IsFEFTIntegration, @FEFTMerchantId, @ServerUrl, @FEFTTransaction, @IsFEFTPrintMerchantCopy,@IsFEFTMobileNumberRequired,@IsMGAIntegration,@MGAServerUrl,@MGAUsername,@MGAPassword,@IsOpenCashDrawer,@IsCashGuardIntegration)  
END 
GO
/****** Object:  StoredProcedure [dbo].[TenderTypesUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[TenderTypesUpdate]  
 @Name AS NVARCHAR(20),  
 @Description AS NVARCHAR(100),  
 @GLNumber AS NVARCHAR(30) = NULL,  
 @InActive AS BIT,  
 @OnAccount AS BIT,  
 @DisplayOrder AS INT,  
 @CashbookIntegration AS BIT,  
 @IPAddres AS NVARCHAR(max),  
 @Port AS INT,  
 @EFTIntegration AS BIT,  
 @MerchantId AS NVARCHAR(max),  
 @TradeRootServer AS NVARCHAR(max),  
 @EFTPort AS INT,  
 @PEDId AS NVARCHAR(500),  
 @ISCash AS bit,  
 @IsSalesInvoice AS bit,  
 @IsLayBy AS bit,  
 @IsPOS AS bit,  
 @IsPrintMerchantCopy AS bit = 0,  
 @TimeoutPeriod AS INT = 10,  
 @IsOpenCashDrawer As bit = 0,  
 @IsFEFTIntegration AS BIT,  
 @FEFTMerchantId AS NVARCHAR(100),  
 @ServerUrl AS NVARCHAR(100),  
 @FEFTTransaction AS INT,  
 @IsFEFTPrintMerchantCopy AS bit = 0, 
 @IsFEFTMobileNumberRequired AS bit = 0,
 @IsMGAIntegration AS BIT,  
 @MGAServerUrl AS NVARCHAR(300),  
 @MGAUsername AS NVARCHAR(100),  
 @MGAPassword AS NVARCHAR(300),
 @IsCashGuardIntegration AS BIT=0  
AS  
BEGIN  
 UPDATE tblTenderTypes 
    SET 
        strDescription = @Description,
        intGLNumber = @GLNumber, 
        bitInActive = @InActive, 
        bitAccount = @OnAccount, 
        intDisplayOrder = @DisplayOrder, 
        bitCashbookIntegration = @CashbookIntegration, 
        strIPAddress = @IPAddres, 
        intPortNum = @Port, 
        bitEFTIntegration = @EFTIntegration, 
        strMerchantId = @MerchantId, 
        strTradeRootServer = @TradeRootServer, 
        intEFTPort = @EFTPort, 
        strPEDId = @PEDId,
        bitCash = @ISCash, 
        bitSalesInvoice = @IsSalesInvoice, 
        bitLayBy = @IsLayBy, 
        bitPOS = @IsPOS , 
        bitPrintMerchantCopy = @IsPrintMerchantCopy , 
        intTimeoutPeriod = @TimeoutPeriod, 
        bitOpenCashDrawer = @IsOpenCashDrawer,
        bitFEFTIntegration = @IsFEFTIntegration,
        strFEFTMerchantId = @FEFTMerchantId, 
        strServerUrl = @ServerUrl, 
        intFEFTTransaction = @FEFTTransaction, 
        bitFEFTPrintMerchantCopy = @IsFEFTPrintMerchantCopy, 
        bitFEFTMobileNumberRequired = @IsFEFTMobileNumberRequired,
        bitMGAIntegration = @IsMGAIntegration,
        strMGAServerUrl = @MGAServerUrl,
        strMGAUsername = @MGAUsername,
        strMGAPassword = @MGAPassword, 
		bitCashGuardIntegration = @IsCashGuardIntegration  
    WHERE strName = @Name  

END 
GO
/****** Object:  StoredProcedure [dbo].[TermSet]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[TermSet]
(
@IsARReciptsOnSalesOrder bit, 
@IsDefCustomers bit, 
@IsDefVendors bit
)
AS
BEGIN
	IF @IsARReciptsOnSalesOrder = 1
	BEGIN
		UPDATE tblCoOpts SET bitARReceiptsOnSalesOrder = 1
	END
	IF @IsDefCustomers = 1 
	BEGIN
		UPDATE tblTerms SET bitDefCustomers = 0
	END
	IF @IsDefVendors = 1
	BEGIN
		UPDATE tblTerms SET bitDefVendors = 0
	END
END
GO
/****** Object:  StoredProcedure [dbo].[TermUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[TermUpdate]
(
@strTerm nvarchar(100), 
@intAllowedIn tinyint, 
@intNetDue int, 
@intNetCalcBy tinyint,
@decSettleDisc money, 
@intSettleDays int, 
@intSettleCalcBy tinyint, 
@intStatCalculated tinyint,
@bitCOD bit, 
@bitDefCustomers bit, 
@bitDefVendors bit, 
@intTermType int, 
@intCalCalcBy int, 
@intISMonths int, 
@bitIsHP bit
)
AS

SET NOCOUNT ON;

Update tblTerms
SET
strTerm = @strTerm
,intAllowedIn = @intAllowedIn
,intNetDue = @intNetDue
,intNetCalcBy = @intNetCalcBy
,decSettleDisc = @decSettleDisc
,intSettleDays = @intSettleDays
,intSettleCalcBy = @intSettleCalcBy
,intStatCalculated = @intStatCalculated
,bitCOD = @bitCOD
,bitDefCustomers = @bitDefCustomers
,bitDefVendors = @bitDefVendors
,intTermType = @intTermType
,intCalCalcBy = @intCalCalcBy
,intISMonths = @intISMonths
,bitIsHP = @bitIsHP
where strTerm = @strTerm
GO
/****** Object:  StoredProcedure [dbo].[TradeDiscMatrixSave]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetShipmentsAuditTrailData] ***********/

/*********** Start [TradeDiscMatrixSave] ***********/
CREATE PROCEDURE [dbo].[TradeDiscMatrixSave]
(
	  @strMatrixType		NVARCHAR(20) =''
	, @strOldMatrixType		NVARCHAR(20) =''
	, @strDesc				NVARCHAR(100) =''
	, @bitInactive			BIT=0
	, @bitApplyDisc			BIT=0

	, @uidMatrixID			UNIQUEIDENTIFIER

	--, @strMatrixType		NVARCHAR(20) =''
	, @dteStartDate			SMALLDATETIME=getdate
	, @dteFinishDate		SMALLDATETIME=getdate
	, @bitInactiveType		BIT=0
	, @IsFromCopy			BIT=0
	--,@TradeDiscMatrixTypesDTType	TradeDiscMatrixTypesDTType READONLY
	,@TradeDiscMatrixTypesDTType	CommonTableType	READONLY
	,@TradeDiscTrackingType			TradeDiscTrackingType	READONLY


)
AS
	
BEGIN

IF EXISTS (select top 1 1 from [dbo].[tblTradeDiscMatrix] where  [strMatrixType] = (case when rtrim(isnull(@strOldMatrixType,'')) <> '' then @strOldMatrixType else  @strMatrixType end))
BEGIN
	update [dbo].[tblTradeDiscMatrix]
	set
		[strMatrixType] =	(case when @strOldMatrixType <> null then [strMatrixType] else   @strMatrixType end)
		,strDesc		=	CONVERT(NVARCHAR(100)	,@strDesc)
		,bitInactive	=	CONVERT(BIT				, isnull(@bitInactive, 0))
		,bitApplyDisc	=	CONVERT(BIT				, isnull(@bitApplyDisc, 0))
	where [strMatrixType] =	(case when rtrim(isnull(@strOldMatrixType, '')) <> '' then @strOldMatrixType else  @strMatrixType end)
END
ELSE
BEGIN
		INSERT INTO [dbo].[tblTradeDiscMatrix]
		(	 
			 strMatrixType
			,strDesc
			,bitInactive
			,bitApplyDisc
		)
		values
		(	 
			 --CONVERT(NVARCHAR(20)	, isnull(@strMatrixType, ''))
			 CONVERT(NVARCHAR(20)	, @strMatrixType)
            --,CONVERT(NVARCHAR(100)	, isnull(@strDesc, ''))
			,CONVERT(NVARCHAR(100)	, @strDesc)
			,CONVERT(BIT			, isnull(@bitInactive, 0))
			,CONVERT(BIT			, isnull(@bitApplyDisc, 0))
		)

END

IF @dteStartDate is null and @dteFinishDate is null
return;

--delete from tblTradeDiscTracking where uidMatrixID = @uidMatrixID
--delete from tblTradeDiscMatrixTypesDT where uidMatrixID = @uidMatrixID

if @IsFromCopy = 0
begin
	delete from tblTradeDiscMatrixTypes where uidMatrixID = @uidMatrixID
	if @@ROWCOUNT > 0
	begin
		SET @uidMatrixID = NEWID() 
	end
end
else
begin
		SET @uidMatrixID = NEWID() 
end

INSERT INTO [dbo].[tblTradeDiscMatrixTypes]
(	 strMatrixType
	,dteStartDate
	,dteFinishDate
	,bitInactive
	,uidMatrixID
)
values
(	 CONVERT(NVARCHAR(20), isnull(@strMatrixType, ''))
	,CONVERT(SMALLDATETIME, isnull(@dteStartDate, getdate()))
	,CONVERT(SMALLDATETIME, isnull(@dteFinishDate, getdate()))
	,CONVERT(BIT, isnull(@bitInactiveType, 0))
	,@uidMatrixID
)


insert into tblTradeDiscMatrixTypesDT
(
	 uidMatrixID
	,intType
	,intLineNo
	,decValueFrom
	,decValueTo
	,decDiscPerc
	,strPartNumber
	,dteRowUpdated
)
select 
	 @uidMatrixID
	,CONVERT(INT, COL02)
	,CONVERT(INT, COL03)
	,CONVERT(money,COL04)
	,CONVERT(money,COL05)
	,CONVERT(money, COL06)
	,COL07
	,GETDATE()
from @TradeDiscMatrixTypesDTType



insert into tblTradeDiscTracking
(
	strMatrixType
	,dteUpdatedDate
	,strUserName
	,intType
	,decDiscValueFrom
	,decDiscValueTo
	,decValueFrom
	,decValueTo
	,uidMatrixID
)
select 
	strMatrixType
	,dteUpdatedDate
	,strUserName
	,intType
	,decDiscValueFrom
	,decDiscValueTo
	,decValueFrom
	,decValueTo
	,@uidMatrixID
from @TradeDiscTrackingType



END
GO
/****** Object:  StoredProcedure [dbo].[TransferDocument]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[TransferDocument]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[TransferDocument]
	@fromDocId nvarchar(50),
	@toDocId nvarchar(50)
AS
BEGIN
	SET NOCOUNT ON;    
	INSERT INTO [tblDocuments] (
            [strDocumentNumber],
            [strFileName],
            [strDescription],
            [strExtension],
            [varFile],
            [dteModified],
            [strType],
            [intSize],
            [strUserName],
            [bitEnc],
            [intAttachOn],
			[bitItemLine],
			[intLineNo],
			[bitPosted]
        ) SELECT 
            @toDocId,
            [strFileName],
            [strDescription],
            [strExtension],
            [varFile],
            [dteModified],
            [strType],
            [intSize],
            [strUserName],
            [bitEnc],
            [intAttachOn],
			[bitItemLine],
			[intLineNo],
			[bitPosted]
         FROM [tblDocuments] WHERE strDocumentNumber = @fromDocId
END
GO
/****** Object:  StoredProcedure [dbo].[TurnBitClearedONOFF]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [TurnBitClearedONOFF]***********/

---------------------------------
CREATE PROCEDURE [dbo].[TurnBitClearedONOFF] (
	@DocId NVARCHAR(50),
	@BitClearedValue bit
	)
AS
BEGIN
	UPDATE tblOrderDocP SET [bitCleared] = @BitClearedValue WHERE strOrdPdocID = @DocId
END
GO
/****** Object:  StoredProcedure [dbo].[uCommitInvTrans]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[uCommitInvTrans]  
(            
  @AddingEntries                     INVENTRIES READONLY,            
  @RemovingEntries					 INVENTRIES READONLY,       
  @AddingBinEntries                  INVBINENTRIES READONLY,            
  @RemovingBinEntries				 INVBINENTRIES READONLY,        
  @SQID                              BIGINT,            
  @SQSysDate                         SMALLDATETIME,            
  @SQJourDate                        DATE,            
  @SQUser                            NVARCHAR(MAX),            
  @SQJourID                          BIGINT,            
  @SQModule                          INT,            
  @SQSource                          NVARCHAR(MAX),            
  @SQDesc                            NVARCHAR(MAX),            
  @SQInvEntryType                    INT,            
  @SQInvEntryTypeSales               INT,            
  @SQInvEntryTypeSalesDeliveryAdvice INT,            
  @SQInvEntryTypePurchases           INT,            
  @SQInvEntryTypeAdjustments         INT,            
  @SQInvEntryTypeWorkshopAdjustments  INT = NULL,            
  @SQIsInvTrackingInserted bit = 0              
 ,@MessageOUT                        VARCHAR(1000) = '' OUTPUT            
)            
AS            
 DECLARE @Qty money             
 DECLARE @OnHandQty money           
 DECLARE @PartNumber NVARCHAR(50)             
 DECLARE @LocName NVARCHAR(20)           
 DECLARE @BinID bigint             
                
    SET @MessageOUT ='START'            
    --cmd3 INSERT INTO tblInvTracking VALUES (@SQID,@SQSysDate,@SQJourDate,@SQUser,@SQJourID,@SQModule,@SQSource,@SQDesc)    
 IF(@SQID = -1)  
 BEGIN  
 SET @SQID = (SELECT Isnull(MAX(LNGINVTRACKID),0) + 1 FROM TBLINVTRACKING)    
 select @SQID  
 END  
            
 IF (@SQIsInvTrackingInserted = CONVERT(bit,0))  --It is used to prevent insertion in tblInvTracking when this table is already inserted from Inventory Requision [In case of Update Invoice Job record]           
 BEGIN           
  INSERT INTO tblInvTracking          
  VALUES          
  (          
    @SQID,@SQSysDate,@SQJourDate,@SQUser,@SQJourID,          
    @SQModule,@SQSource,@SQDesc          
  )          
 END           
                
            
    IF @SQInvEntryType = @SQInvEntryTypeSales            
        OR @SQInvEntryType = @SQInvEntryTypeSalesDeliveryAdvice -- InvEntryType.Sales, InvEntryType.SalesDeliveryAdvice            
      BEGIN            
          -- AddingEntries            
          --------------------------------------            
          -- SERVICE = FALSE AND BUYOUT = FALSE            
          INSERT INTO tblInvTrackingDT            
          (            
            lngInvTrackID,strPartNumber,strLocName,intLineNo,strSource,            
            decQty,decQtyIn,decQtyOut,decValue,decValueIn,            
            decValueOut,decRevenue,decCOGS,bitService,decVariance,            
            decOnHand,decNewOnHand,bitNegTrans,bitIsOpRev,bitIsOpExpC,            
            bitIsOpExpV,bitDiscountTax,decStandardCost,decLastPPUnit,intMainLineNo            
          )            
          SELECT @SQID,PartNumber,Location,[LineNo],@SQSource,            
                 Qty,Qty,0,AmountAsset,AmountAsset,            
                 0,AmountRevenue * -1.0,AmountCOGS * -1.0,0,CASE WHEN AmountVarianceIsCredit = 0 THEN AmountVariance            
                 ELSE AmountVariance * -1.0            
                 END,            
                 OnHandQty,OnHandQty + Qty,CASE WHEN OnHandQty < 0.0 THEN 1            
                     WHEN ( OnHandQty + Qty ) < 0 THEN 1            
                 ELSE 0            
                 END,RevenueAccountIsOperating,ExpenseAccountIsOperating,            
                 VarianceAccountIsOperating,DiscountTax,StandardCost,LastReceivedCost,MainLineNo            
          FROM   @AddingEntries            
        WHERE  IsService = 0            
                 AND IsBuyout = 0            
          -- SERVICE = TRUE            
            
          INSERT INTO tblInvTrackingDT            
          (            
            lngInvTrackID,strPartNumber,strLocName,intLineNo,strSource,            
            decQty,decQtyIn,decQtyOut,decValue,decValueIn,            
            decValueOut,decRevenue,decCOGS,bitService,decVariance,            
            decOnHand,decNewOnHand,bitNegTrans,bitIsOpRev,bitIsOpExpC,            
            bitIsOpExpV,bitDiscountTax,decStandardCost,decLastPPUnit,intMainLineNo            
          )            
          SELECT @SQID,PartNumber,NULL,[LineNo],@SQSource,            
                 Qty,Qty,0,0,0,            
                 0,AmountRevenue * -1.0,0,1,0,            
                 0,0,0,RevenueAccountIsOperating,ExpenseAccountIsOperating,            
                 VarianceAccountIsOperating,DiscountTax,StandardCost,LastReceivedCost,MainLineNo            
          FROM   @AddingEntries            
          WHERE  IsService = 1            
          -- Buyout            
            
          INSERT INTO tblInvTrackingDT            
          (            
            lngInvTrackID,strPartNumber,strLocName,intLineNo,strSource,            
            decQty,decQtyIn,decQtyOut,decValue,decValueIn,            
            decValueOut,decRevenue,decCOGS,bitService,decVariance,            
            decOnHand,decNewOnHand,bitNegTrans,bitIsOpRev,bitIsOpExpC,            
   bitIsOpExpV,bitDiscountTax,decStandardCost,decLastPPUnit,intMainLineNo         
          )            
          SELECT @SQID,PartNumber,NULL,[LineNo],@SQSource,            
          Qty,Qty,0,AmountAsset,AmountAsset,            
                 0,AmountRevenue * -1.0,AmountExp * -1.0,0,0,            
                 0,0,0,RevenueAccountIsOperating,ExpenseAccountIsOperating,            
                 VarianceAccountIsOperating,DiscountTax,StandardCost,LastReceivedCost,MainLineNo            
          FROM   @AddingEntries            
          WHERE  IsBuyout = 1            
          -- RemovingEntries            
          --------------------------------------            
          -- SERVICE = FALSE AND BUYOUT = FALSE            
          INSERT INTO tblInvTrackingDT            
          (            
            lngInvTrackID,strPartNumber,strLocName,intLineNo,strSource,            
            decQty,decQtyIn,decQtyOut,decValue,decValueIn,            
            decValueOut,decRevenue,decCOGS,bitService,decVariance,            
            decOnHand,decNewOnHand,bitNegTrans,bitIsOpRev,bitIsOpExpC,            
            bitIsOpExpV,bitDiscountTax,decStandardCost,decLastPPUnit,intMainLineNo            
          )            
          SELECT @SQID,PartNumber,Location,[LineNo],@SQSource,            
                 Qty * -1.0,0,Qty,AmountAsset * -1.0,0,            
                 AmountAsset,AmountRevenue,AmountCOGS,0,CASE WHEN AmountVarianceIsCredit = 0 THEN AmountVariance            
                 ELSE AmountVariance * -1.0            
                 END,            
                 OnHandQty,OnHandQty - Qty,CASE WHEN OnHandQty < 0 THEN 1            
                     WHEN ( OnHandQty - Qty ) < 0 THEN 1            
                 ELSE 0            
                 END,RevenueAccountIsOperating,ExpenseAccountIsOperating,            
                 VarianceAccountIsOperating,DiscountTax,StandardCost,LastReceivedCost,MainLineNo            
          FROM   @RemovingEntries            
          WHERE  IsService = 0            
                 AND IsBuyout = 0            
          -- SERVICE = TRUE            
          INSERT INTO tblInvTrackingDT            
          (            
            lngInvTrackID,strPartNumber,strLocName,intLineNo,strSource,            
            decQty,decQtyIn,decQtyOut,decValue,decValueIn,            
            decValueOut,decRevenue,decCOGS,bitService,decVariance,            
            decOnHand,decNewOnHand,bitNegTrans,bitIsOpRev,bitIsOpExpC,            
            bitIsOpExpV,bitDiscountTax,decStandardCost,decLastPPUnit,intMainLineNo            
          )            
          SELECT @SQID,PartNumber,NULL,[LineNo],@SQSource,            
                 Qty * -1.0,0,Qty,0,0,            
                 0,AmountRevenue,0,1,0,            
                 0,0,0,RevenueAccountIsOperating,ExpenseAccountIsOperating,            
                 VarianceAccountIsOperating,DiscountTax,StandardCost,LastReceivedCost,MainLineNo            
          FROM   @RemovingEntries            
          WHERE  IsService = 1            
            
          -- Buyout            
          INSERT INTO tblInvTrackingDT            
          (            
            lngInvTrackID,strPartNumber,strLocName,intLineNo,strSource,            
            decQty,decQtyIn,decQtyOut,decValue,decValueIn,            
            decValueOut,decRevenue,decCOGS,bitService,decVariance,            
            decOnHand,decNewOnHand,bitNegTrans,bitIsOpRev,bitIsOpExpC,            
            bitIsOpExpV,bitDiscountTax,decStandardCost,decLastPPUnit,intMainLineNo            
          )            
          SELECT @SQID,PartNumber,NULL,[LineNo],@SQSource,            
                 Qty * -1.0,0,Qty,AmountAsset * -1.0,0,            
                 AmountAsset,AmountRevenue,AmountExp,0,0,            
                 0,0,0,RevenueAccountIsOperating,ExpenseAccountIsOperating,            
                 VarianceAccountIsOperating,DiscountTax,StandardCost,LastReceivedCost,MainLineNo            
          FROM   @RemovingEntries            
          WHERE  IsBuyout = 1            
            
    -- AddingBinEntries          
          --------------------------------------            
          -- SERVICE = FALSE AND BUYOUT = FALSE            
          INSERT INTO tblInvTrackingDTBin            
          (            
            lngInvTrackID,lngBinId, intLineNo,decQty,decQtyIn,decQtyOut, decOnHand,decNewOnHand,bitNegTrans,intMainLineNo            
          )            
          SELECT @SQID,lngBinId,[LineNo],Qty,Qty,0,OnHandQty,OnHandQty + Qty,CASE WHEN OnHandQty < 0.0 THEN 1            
                     WHEN ( OnHandQty + Qty ) < 0 THEN 1            
                 ELSE 0            
      END ,MainLineNo           
          FROM   @AddingBinEntries            
          WHERE  IsService = 0            
                 AND IsBuyout = 0            
            
     -- RemovingBinEntries            
          --------------------------------------            
          -- SERVICE = FALSE AND BUYOUT = FALSE            
   INSERT INTO tblInvTrackingDTBin         
          (            
            lngInvTrackID,lngBinId, intLineNo,decQty,decQtyIn,decQtyOut, decOnHand,decNewOnHand,bitNegTrans,intMainLineNo            
          )            
          SELECT @SQID,lngBinId,[LineNo],Qty * -1.0,0,Qty,OnHandQty,OnHandQty - Qty,CASE WHEN OnHandQty < 0 THEN 1            
                     WHEN ( OnHandQty - Qty ) < 0 THEN 1            
                 ELSE 0            
                 END,MainLineNo            
          FROM   @RemovingBinEntries            
          WHERE  IsService = 0            
                 AND IsBuyout = 0            
            
            
   --Update Adding bin entries  
   DECLARE CURSORAddBinSales1 CURSOR           
   KEYSET scroll           
   FOR           
   SELECT  Qty ,OnHandQty,PartNumber,Location,lngBinID FROM @AddingBinEntries   WHERE  IsService = 0 AND  IsBuyout = 0            
   OPEN CURSORAddBinSales1           
   IF @@CURSOR_ROWS > 0           
     BEGIN          
   FETCH NEXT FROM CURSORAddBinSales1 INTO  @Qty,@OnHandQty,@PartNumber,@LocName,@BinID         
   WHILE @@FETCH_STATUS = 0           
   BEGIN           
    UPDATE tblInvExtBin SET decAvail = decAvail + @Qty ,decOnHand = decOnHand + @Qty         
    WHERE tblInvExtBin.lngBinId = @BinId AND tblInvExtBin.strLocName=@LocName AND tblInvExtBin.strPartNumber=@PartNumber ;        
   FETCH NEXT FROM CURSORAddBinSales1 INTO  @Qty,@OnHandQty,@PartNumber,@LocName,@BinID         
   END           
   CLOSE CURSORAddBinSales1           
   DEALLOCATE CURSORAddBinSales1          
   END          
   ELSE         
   BEGIN         
    CLOSE CURSORAddBinSales1          
    DEALLOCATE CURSORAddBinSales1          
   END         
            
            
    --Update Removing bin entries  
   DECLARE CURSORRemoveBinSales1 CURSOR           
   KEYSET scroll           
   FOR           
   SELECT  Qty ,OnHandQty,PartNumber,Location,lngBinID FROM @RemovingBinEntries  WHERE  IsService = 0 AND  IsBuyout = 0           
   OPEN CURSORRemoveBinSales1           
   IF @@CURSOR_ROWS > 0           
   BEGIN            
   FETCH NEXT FROM CURSORRemoveBinSales1 INTO  @Qty,@OnHandQty,@PartNumber,@LocName,@BinID         
   WHILE @@FETCH_STATUS = 0           
   BEGIN           
    UPDATE tblInvExtBin SET decAvail = decAvail - @Qty ,decOnHand = decOnHand - @Qty         
    WHERE tblInvExtBin.lngBinId = @BinId AND tblInvExtBin.strLocName=@LocName AND tblInvExtBin.strPartNumber=@PartNumber ;        
   FETCH NEXT FROM CURSORRemoveBinSales1 INTO @Qty,@OnHandQty,@PartNumber,@LocName,@BinID         
   END           
   CLOSE CURSORRemoveBinSales1           
   DEALLOCATE CURSORRemoveBinSales1           
   END         
   ELSE         
   BEGIN         
    CLOSE CURSORRemoveBinSales1          
    DEALLOCATE CURSORRemoveBinSales1          
   END         
      END            
    ELSE IF @SQInvEntryType = @SQInvEntryTypePurchases            
      BEGIN            
          -- AddingEntries            
          --------------------------------------            
          -- SERVICE = FALSE AND BUYOUT = FALSE            
          INSERT INTO tblInvTrackingDT            
          (            
            lngInvTrackID,strPartNumber,strLocName,intLineNo,strSource,            
            decQty,decQtyIn,decQtyOut,decValue,decValueIn,            
            decValueOut,decRevenue,decCOGS,bitService,decVariance,            
            decOnHand,decNewOnHand,bitNegTrans,bitIsOpRev,bitIsOpExpC,            
            bitIsOpExpV,bitDiscountTax,decStandardCost,decLastPPUnit,intMainLineNo            
          )            
          SELECT @SQID,PartNumber,Location,[LineNo],@SQSource,            
                 Qty,Qty,0,AmountAsset,AmountAsset,            
                 0,0,AmountCOGS,0,CASE WHEN AmountVarianceIsCredit = 0 THEN AmountVariance            
                 ELSE AmountVariance * -1.0            
                 END,            
                 OnHandQty,OnHandQty + Qty,CASE WHEN OnHandQty < 0 THEN 1            
                     WHEN ( OnHandQty + Qty ) < 0 THEN 1            
                 ELSE 0            
                 END,RevenueAccountIsOperating,ExpenseAccountIsOperating,            
                 VarianceAccountIsOperating,DiscountTax,StandardCost,LastReceivedCost,MainLineNo            
          FROM   @AddingEntries            
          WHERE  IsService = 0            
                 AND IsBuyout = 0            
          -- SERVICE = TRUE            
          INSERT INTO tblInvTrackingDT            
          (            
            lngInvTrackID,strPartNumber,strLocName,intLineNo,strSource,            
            decQty,decQtyIn,decQtyOut,decValue,decValueIn,            
            decValueOut,decRevenue,decCOGS,bitService,decVariance,            
            decOnHand,decNewOnHand,bitNegTrans,bitIsOpRev,bitIsOpExpC,            
            bitIsOpExpV,bitDiscountTax,decStandardCost,decLastPPUnit,intMainLineNo            
          )            
          SELECT @SQID,PartNumber,NULL,[LineNo],@SQSource,            
                 Qty,Qty,0,0,0,            
                 0,0,AmountExp,1,0,            
                 0,0,0,RevenueAccountIsOperating,ExpenseAccountIsOperating,            
                 VarianceAccountIsOperating,DiscountTax,StandardCost,LastReceivedCost,MainLineNo            
          FROM   @AddingEntries            
          WHERE  IsService = 1            
          -- Buyout            
          INSERT INTO tblInvTrackingDT            
          (            
            lngInvTrackID,strPartNumber,strLocName,intLineNo,strSource,            
            decQty,decQtyIn,decQtyOut,decValue,decValueIn,            
            decValueOut,decRevenue,decCOGS,bitService,decVariance,            
            decOnHand,decNewOnHand,bitNegTrans,bitIsOpRev,bitIsOpExpC,            
            bitIsOpExpV,bitDiscountTax,decStandardCost,decLastPPUnit,intMainLineNo            
          )            
          SELECT @SQID,PartNumber,NULL,[LineNo],@SQSource,            
                 Qty,Qty,0,AmountAsset,AmountAsset,            
                 0,0,AmountExp,0,0,            
                 0,0,0,RevenueAccountIsOperating,ExpenseAccountIsOperating,            
                 VarianceAccountIsOperating,DiscountTax,StandardCost,LastReceivedCost,MainLineNo            
          FROM   @AddingEntries            
          WHERE  IsBuyout = 1            
          -- RemovingEntries            
          --------------------------------------            
          -- SERVICE = FALSE AND BUYOUT = FALSE            
          INSERT INTO tblInvTrackingDT            
          (            
            lngInvTrackID,strPartNumber,strLocName,intLineNo,strSource,            
            decQty,decQtyIn,decQtyOut,decValue,decValueIn,            
            decValueOut,decRevenue,decCOGS,bitService,decVariance,            
            decOnHand,decNewOnHand,bitNegTrans,bitIsOpRev,bitIsOpExpC,            
            bitIsOpExpV,bitDiscountTax,decStandardCost,decLastPPUnit,intMainLineNo            
          )            
          SELECT @SQID,PartNumber,Location,[LineNo],@SQSource,            
                 Qty * -1.0,0,Qty,AmountAsset * -1.0,0,            
                 AmountAsset,0,AmountCOGS * -1.0,0,CASE WHEN AmountVarianceIsCredit = 0 THEN AmountVariance            
                 ELSE AmountVariance * -1.0            
                 END,            
                 OnHandQty,OnHandQty - Qty,CASE WHEN OnHandQty < 0 THEN 1            
                     WHEN ( OnHandQty - QTY ) < 0 THEN 1            
                 ELSE 0            
                 END,RevenueAccountIsOperating,ExpenseAccountIsOperating,            
                 VarianceAccountIsOperating,DiscountTax,StandardCost,LastReceivedCost,MainLineNo            
          FROM   @RemovingEntries            
          WHERE  IsService = 0            
                 AND IsBuyout = 0            
          -- SERVICE = TRUE            
          INSERT INTO tblInvTrackingDT            
          (            
            lngInvTrackID,strPartNumber,strLocName,intLineNo,strSource,            
            decQty,decQtyIn,decQtyOut,decValue,decValueIn,            
            decValueOut,decRevenue,decCOGS,bitService,decVariance,            
            decOnHand,decNewOnHand,bitNegTrans,bitIsOpRev,bitIsOpExpC,            
            bitIsOpExpV,bitDiscountTax,decStandardCost,decLastPPUnit,intMainLineNo            
          )            
          SELECT @SQID,PartNumber,NULL,[LineNo],@SQSource,            
                 Qty * -1.0,0,Qty,0,0,            
                 0,0,AmountExp * -1.0,1,0,            
                 0,0,0,RevenueAccountIsOperating,ExpenseAccountIsOperating,            
                 VarianceAccountIsOperating,DiscountTax,StandardCost,LastReceivedCost,MainLineNo            
          FROM   @RemovingEntries            
          WHERE  IsService = 1            
          -- BUYOUT = TRUE            
          INSERT INTO tblInvTrackingDT            
          (            
            lngInvTrackID,strPartNumber,strLocName,intLineNo,strSource,            
            decQty,decQtyIn,decQtyOut,decValue,decValueIn,            
            decValueOut,decRevenue,decCOGS,bitService,decVariance,            
            decOnHand,decNewOnHand,bitNegTrans,bitIsOpRev,bitIsOpExpC,            
            bitIsOpExpV,bitDiscountTax,decStandardCost,decLastPPUnit,intMainLineNo            
          )            
          SELECT @SQID,PartNumber,NULL,[LineNo],@SQSource,            
                 Qty * -1.0,0,Qty,AmountAsset * -1.0,0,            
                 AmountAsset,0,AmountExp * -1.0,0,0,            
                 0,0,0,RevenueAccountIsOperating,ExpenseAccountIsOperating,            
                 VarianceAccountIsOperating,DiscountTax,StandardCost,LastReceivedCost,MainLineNo            
          FROM   @RemovingEntries            
          WHERE  IsBuyout = 1            
            
    -- AddingBinEntries          
          --------------------------------------            
  -- SERVICE = FALSE AND BUYOUT = FALSE            
          INSERT INTO tblInvTrackingDTBin            
          (            
            lngInvTrackID,lngBinId,intLineNo,decQty,decQtyIn,decQtyOut,decOnHand,decNewOnHand,bitNegTrans,intMainLineNo            
          )            
          SELECT @SQID,lngBinId,[LineNo],Qty,Qty,0,OnHandQty,OnHandQty + Qty,CASE WHEN OnHandQty < 0 THEN 1            
                     WHEN ( OnHandQty + Qty ) < 0 THEN 1            
                 ELSE 0            
      END ,MainLineNo           
          FROM   @AddingBinEntries            
          WHERE  IsService = 0            
                 AND IsBuyout = 0            
                     
    -- RemovingBinEntries          
          --------------------------------------            
          -- SERVICE = FALSE AND BUYOUT = FALSE            
    INSERT INTO tblInvTrackingDTBin          
          (            
            lngInvTrackID,lngBinId, intLineNo,decQty,decQtyIn,decQtyOut, decOnHand,decNewOnHand,bitNegTrans,intMainLineNo            
          )            
          SELECT @SQID,lngBinId,[LineNo],Qty * -1.0,0,Qty,OnHandQty,            
     OnHandQty - Qty,CASE WHEN OnHandQty < 0 THEN 1        
                     WHEN ( OnHandQty - QTY ) < 0 THEN 1            
                 ELSE 0            
                 END ,MainLineNo           
          FROM   @RemovingBinEntries            
          WHERE  IsService = 0            
                 AND IsBuyout = 0            
            
            
   --Update Adding bin entries  
   DECLARE CURSORAddBinPur1 CURSOR           
   KEYSET scroll           
   FOR           
   SELECT  Qty ,OnHandQty,PartNumber,Location,lngBinID FROM @AddingBinEntries   WHERE  IsService = 0 AND  IsBuyout = 0        
   OPEN CURSORAddBinPur1           
   IF @@CURSOR_ROWS > 0           
   BEGIN            
    FETCH NEXT FROM CURSORAddBinPur1 INTO  @Qty,@OnHandQty,@PartNumber,@LocName,@BinID        
    WHILE @@FETCH_STATUS = 0          
    BEGIN          
     UPDATE tblInvExtBin SET decAvail = decAvail + @Qty ,decOnHand = decOnHand + @Qty        
     WHERE tblInvExtBin.lngBinId = @BinId AND tblInvExtBin.strLocName=@LocName AND tblInvExtBin.strPartNumber=@PartNumber ;       
    FETCH NEXT FROM CURSORAddBinPur1 INTO  @Qty,@OnHandQty,@PartNumber,@LocName,@BinID        
    END          
    CLOSE CURSORAddBinPur1          
    DEALLOCATE CURSORAddBinPur1         
   END          
   ELSE         
   BEGIN         
    CLOSE CURSORAddBinPur1          
    DEALLOCATE CURSORAddBinPur1          
   END         
            
            
   --Update Removing bin entries  
   DECLARE CURSORRemoveBinPur1 CURSOR           
   KEYSET scroll          
   FOR           
   SELECT  Qty ,OnHandQty,PartNumber,Location,lngBinID FROM @RemovingBinEntries WHERE  IsService = 0 AND  IsBuyout = 0            
   OPEN CURSORRemoveBinPur1           
   IF @@CURSOR_ROWS > 0           
   BEGIN           
    FETCH NEXT FROM CURSORRemoveBinPur1 INTO  @Qty,@OnHandQty,@PartNumber,@LocName,@BinID        
    WHILE @@FETCH_STATUS = 0          
    BEGIN          
     UPDATE tblInvExtBin SET decAvail = decAvail - @Qty ,decOnHand = decOnHand - @Qty        
     WHERE tblInvExtBin.lngBinId = @BinId AND tblInvExtBin.strLocName=@LocName AND tblInvExtBin.strPartNumber=@PartNumber;       
    FETCH NEXT FROM CURSORRemoveBinPur1 INTO @Qty,@OnHandQty,@PartNumber,@LocName,@BinID        
    END        
    CLOSE CURSORRemoveBinPur1          
    DEALLOCATE CURSORRemoveBinPur1          
   END         
   ELSE         
   BEGIN         
    CLOSE CURSORRemoveBinPur1          
    DEALLOCATE CURSORRemoveBinPur1          
   END         
      END            
    ELSE IF @SQInvEntryType = @SQInvEntryTypeAdjustments OR @SQInvEntryType = @SQInvEntryTypeWorkshopAdjustments            
      BEGIN            
          INSERT INTO tblInvTrackingDT            
          (                        lngInvTrackID,strPartNumber,strLocName,intLineNo,strSource,            
            decQty,decQtyIn,decQtyOut,decValue,decValueIn,            
            decValueOut,decRevenue,decCOGS,bitService,decVariance,            
            decOnHand,decNewOnHand,bitNegTrans,bitIsOpRev,bitIsOpExpC,            
            bitIsOpExpV,bitDiscountTax,decStandardCost,decLastPPUnit,intMainLineNo            
          )            
          SELECT @SQID,PartNumber,Location,[LineNo],@SQSource,            
                 Qty,Qty,0,AmountAsset,AmountAsset,            
                 0,AmountRevenue * -1.0,AmountCOGS,0,CASE WHEN AmountVarianceIsCredit = 0 THEN AmountVariance            
                 ELSE AmountVariance * -1.0            
                 END,            
                 OnHandQty,OnHandQty + Qty,CASE WHEN OnHandQty < 0 THEN 1            
                     WHEN ( OnHandQty + QTY ) < 0 THEN 1            
                 ELSE 0            
                 END,RevenueAccountIsOperating,ExpenseAccountIsOperating,            
                 VarianceAccountIsOperating,DiscountTax,StandardCost,LastReceivedCost,MainLineNo            
          FROM   @AddingEntries            
          INSERT INTO tblInvTrackingDT            
          (            
            lngInvTrackID,strPartNumber,strLocName,intLineNo,strSource,            
            decQty,decQtyIn,decQtyOut,decValue,decValueIn,            
            decValueOut,decRevenue,decCOGS,bitService,decVariance,            
            decOnHand,decNewOnHand,bitNegTrans,bitIsOpRev,bitIsOpExpC,            
            bitIsOpExpV,bitDiscountTax,decStandardCost,decLastPPUnit,intMainLineNo            
          )            
          SELECT @SQID,PartNumber,Location,[LineNo],@SQSource,            
                 Qty * -1.0,0,Qty,AmountAsset * -1.0,0,            
                 AmountAsset,AmountRevenue,AmountCOGS * -1.0,0,CASE WHEN AmountVarianceIsCredit = 0 THEN AmountVariance            
                 ELSE AmountVariance * -1.0            
                 END,            
                 OnHandQty,OnHandQty - Qty,CASE WHEN OnHandQty < 0 THEN 1            
                     WHEN ( OnHandQty - Qty ) < 0 THEN 1            
                 ELSE 0            
                 END,RevenueAccountIsOperating,ExpenseAccountIsOperating,            
                 VarianceAccountIsOperating,DiscountTax,StandardCost,LastReceivedCost,MainLineNo            
          FROM   @RemovingEntries            
            
    INSERT INTO tblInvTrackingDTBin          
          (            
            lngInvTrackID,lngBinId, intLineNo,decQty,decQtyIn,decQtyOut, decOnHand,decNewOnHand,bitNegTrans,intMainLineNo            
          )            
          SELECT @SQID,lngBinId,[LineNo],Qty,Qty,0,            
                 OnHandQty,OnHandQty + Qty,CASE WHEN OnHandQty < 0 THEN 1            
                     WHEN ( OnHandQty + QTY ) < 0 THEN 1            
                 ELSE 0            
                 END ,MainLineNo           
          FROM   @AddingBinEntries            
          INSERT INTO tblInvTrackingDTBin            
          (            
            lngInvTrackID,lngBinId,intLineNo,decQty,decQtyIn,decQtyOut,decOnHand,decNewOnHand,bitNegTrans,intMainLineNo            
                        
          )            
          SELECT @SQID,lngBinId,[LineNo],Qty * -1.0,0,Qty,OnHandQty,OnHandQty - Qty,CASE WHEN OnHandQty < 0 THEN 1            
                     WHEN ( OnHandQty - Qty ) < 0 THEN 1            
                 ELSE 0            
      END ,MainLineNo            
          FROM   @RemovingBinEntries            
            
            
    --Update Adding bin entries          
   DECLARE CURSORAddBinAdj1 CURSOR           
   KEYSET scroll           
   FOR           
   SELECT  Qty ,OnHandQty,PartNumber,Location,lngBinID FROM @AddingBinEntries  WHERE  IsService = 0 AND  IsBuyout = 0          
   OPEN CURSORAddBinAdj1           
   IF @@CURSOR_ROWS > 0           
   BEGIN            
    FETCH NEXT FROM CURSORAddBinAdj1 INTO  @Qty,@OnHandQty,@PartNumber,@LocName,@BinID        
    WHILE @@FETCH_STATUS = 0          
    BEGIN          
     UPDATE tblInvExtBin SET decAvail = decAvail + @Qty ,decOnHand = decOnHand + @Qty        
     WHERE tblInvExtBin.lngBinId = @BinId AND tblInvExtBin.strLocName=@LocName AND tblInvExtBin.strPartNumber=@PartNumber ;       
    FETCH NEXT FROM CURSORAddBinAdj1 INTO  @Qty,@OnHandQty,@PartNumber,@LocName,@BinID        
    END          
    CLOSE CURSORAddBinAdj1          
    DEALLOCATE CURSORAddBinAdj1         
   END          
   ELSE         
   BEGIN         
    CLOSE CURSORAddBinAdj1          
    DEALLOCATE CURSORAddBinAdj1          
   END         
            
            
    --Update Removing bin entries        
   DECLARE CURSORRemoveBinAdj1 CURSOR           
   KEYSET scroll           
   FOR           
   SELECT  Qty ,OnHandQty,PartNumber,Location,lngBinID FROM @RemovingBinEntries  WHERE  IsService = 0 AND  IsBuyout = 0     
   OPEN CURSORRemoveBinAdj1           
   IF @@CURSOR_ROWS > 0           
   BEGIN            
    FETCH NEXT FROM CURSORRemoveBinAdj1 INTO  @Qty,@OnHandQty,@PartNumber,@LocName,@BinID        
    WHILE @@FETCH_STATUS = 0          
    BEGIN          
     UPDATE tblInvExtBin SET decAvail = decAvail - @Qty ,decOnHand = decOnHand - @Qty        
     WHERE tblInvExtBin.lngBinId = @BinId AND tblInvExtBin.strLocName=@LocName AND tblInvExtBin.strPartNumber=@PartNumber ;       
    FETCH NEXT FROM CURSORRemoveBinAdj1 INTO @Qty,@OnHandQty,@PartNumber,@LocName,@BinID        
    END          
    CLOSE CURSORRemoveBinAdj1          
    DEALLOCATE CURSORRemoveBinAdj1          
   END         
   ELSE         
   BEGIN         
    CLOSE CURSORRemoveBinAdj1          
    DEALLOCATE CURSORRemoveBinAdj1          
   END         
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateActionType]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [InsertActionType] (CRM)**********/


/********* Start [UpdateActionType] (CRM)**********/

CREATE Procedure [dbo].[UpdateActionType]
(
 @ActionType nvarchar(900)
,@ActionDescription nvarchar(Max)
,@IsInactive bit
,@UpdatedUser nvarchar(400)
,@UpdatedDate datetime
,@IsEmailAction bit
)
As
Begin
	Update tblCRMActionType set 
	ActionType=@ActionType,
	ActionDescription=@ActionDescription,
	UpdatedUser=@UpdatedUser,
	UpdatedDate=@UpdatedDate,
	IsInactive=@IsInactive,
	IsEmailAction=@IsEmailAction
	where ActionType=@ActionType
End
GO
/****** Object:  StoredProcedure [dbo].[UpdateActivity]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [InsertActivity] (CRM)**********/


/********* Start [UpdateActivity] (CRM)**********/

CREATE Procedure [dbo].[UpdateActivity]
(
 @ActivityName nvarchar(900)
,@ActivityDescription nvarchar(Max)
,@ActivityGroupName nvarchar(400)
,@SalesPipelinePercentage decimal(18,2)
,@UpdatedUser nvarchar(400)
,@UpdatedDate datetime
,@IsInactive bit
)
As
Begin
	Update tblCRMPreActivityList set ActivityDescription=@ActivityDescription,ActivityGroupName=@ActivityGroupName,SalesPipelinePercentage=@SalesPipelinePercentage,UpdatedUser=@UpdatedUser,UpdatedDate=@UpdatedDate,IsInactive=@IsInactive
	where ActivityName=@ActivityName
End
GO
/****** Object:  StoredProcedure [dbo].[UpdateActivityActionsStatus]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [InsertActivityActionsStatus] (CRM)**********/


/********* Start [UpdateActivityActionsStatus] (CRM)**********/

CREATE Procedure [dbo].[UpdateActivityActionsStatus]
@StatusType	nvarchar(400),
@StatusDescription	nvarchar(Max),
@IsInactive	bit,
@UpdatedUser	nvarchar(400),
@UpdatedDate	datetime,
@StatusGroup int,
@OldStatusType nvarchar(400)
As
begin
	Update tblCRMActivityActionsStatus set StatusDescription=@StatusDescription,
	StatusType=@StatusType,
	IsInactive=@IsInactive,
	UpdatedUser=@UpdatedUser,
	UpdatedDate=@UpdatedDate,
	StatusGroup=@StatusGroup  where StatusType=@OldStatusType
end
GO
/****** Object:  StoredProcedure [dbo].[UpdateActivityGroup]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [InsertActivityGroup] (CRM)**********/


/********* Start [UpdateActivityGroup] (CRM)**********/

CREATE PROCEDURE [dbo].[UpdateActivityGroup] 
@ActivityGroupName	nvarchar(400),
@ActivityGroupDescription nvarchar(Max),
@IsInactive	bit,
@UpdatedUser	nvarchar(400),
@UpdatedDate	datetime,
@IsSalesGroup bit
AS
BEGIN
	Update tblCRMActivityGroup set ActivityGroupDescription=@ActivityGroupDescription,IsInactive=@IsInactive,UpdatedUser=@UpdatedUser,UpdatedDate=@UpdatedDate,IsSalesGroup=@IsSalesGroup
	Where ActivityGroupName=@ActivityGroupName
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateActivityGroupName]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [UpdateActivityGroup] (CRM)**********/

/********* Start [UpdateActivityGroupName] (CRM)**********/

CREATE PROCEDURE [dbo].[UpdateActivityGroupName]
@ActivityGroupName as nvarchar(Max)='',
@ActivityGroupDescription as nvarchar(Max)='',
@OldActivityGroupName as nvarchar(Max)=''
AS
Begin
Update tblCRMActivityGroup set 
	ActivityGroupName=@ActivityGroupName, 
	ActivityGroupDescription =@ActivityGroupDescription
where ActivityGroupName = @OldActivityGroupName
End
GO
/****** Object:  StoredProcedure [dbo].[UpdateActivityStatus]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [InsertActivityStatus] (CRM)**********/


/********* Start [UpdateActivityStatus] (CRM)**********/

CREATE Procedure [dbo].[UpdateActivityStatus]
@StatusType	nvarchar(400),
@StatusDescription	nvarchar(Max),
@IsInactive	bit,
@UpdatedUser	nvarchar(400),
@UpdatedDate	datetime,
@StatusGroup int,
@OldStatusType	nvarchar(400)
As
begin
	Update tblCRMActivityStatus set StatusDescription=@StatusDescription,
	StatusType=@StatusType,
	IsInactive=@IsInactive,
	UpdatedUser=@UpdatedUser,
	UpdatedDate=@UpdatedDate, 
	StatusGroup=@StatusGroup where StatusType=@OldStatusType
end
GO
/****** Object:  StoredProcedure [dbo].[UpdateAssetsDepreciationDate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateAssetsDepreciationDate]
AS
BEGIN

SET NOCOUNT ON;

CREATE TABLE #tblAssetTemp
(
	strAssetCode nvarchar(40),
	dteDepreciateFrom date
)
INSERT INTO #tblAssetTemp
Select strAssetCode,dteDepreciateFrom from tblAssets
DECLARE @strAssetCode nvarchar(40),@dteDepreciateFrom date
while(Select Count(1) from #tblAssetTemp) > 0
BEGIN
	Select TOP(1) @strAssetCode = strAssetCode,@dteDepreciateFrom = dteDepreciateFrom from #tblAssetTemp
	UPDATE tblAssets SET dteDepreciateFrom = DATEADD(day,-DATEPART(dd,dteDepreciateFrom) + 1,dteDepreciateFrom)
	DELETE FROM #tblAssetTemp where strAssetCode = @strAssetCode
END
drop table #tblAssetTemp
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateBarcode]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[GetInventoryLocationDetails] ***********/

/*********** Start [dbo].[UpdateBarcode] ***********/
CREATE PROCEDURE [dbo].[UpdateBarcode]
(
	
	@Barcode NVARCHAR(1200),
	@PartNumber NVARCHAR(1200),
	@IsBarcodeSelected BIT
)

AS
BEGIN
	IF @IsBarcodeSelected = 1
	BEGIN
		UPDATE tblInv SET strBarCode = @Barcode, dteLastUpdated = GetDate() WHERE strPartNumber = @PartNumber
	END
	ELSE
	BEGIN
		UPDATE tblInv SET strBarCode2 = @Barcode, dteLastUpdated = GetDate() WHERE strPartNumber = @PartNumber
	END
END

GO
/****** Object:  StoredProcedure [dbo].[UpdateBICube]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/************************** End [UpdateBIUserCubeView] ****************/

/************************** Start [UpdateBICube] ****************/


Create PROCEDURE [dbo].[UpdateBICube]
(
	 @SQstrCubeName nvarchar(200),
	 @SQstrViewName nvarchar(200),
	 @SQbitCustomCube bit,
	 @SQstrViewDefinition nvarchar(Max)
)
AS
begin
Update tblCubes set strViewDefinition=@SQstrViewDefinition where strViewName=@SQstrViewName and strCubeName=@SQstrCubeName
end
GO
/****** Object:  StoredProcedure [dbo].[UpdatebitStockTransferredFlag]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[UpdatebitStockTransferredFlag]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[UpdatebitStockTransferredFlag]
 	@strPkTkDocID nvarchar(50)
AS
BEGIN
	SET NOCOUNT ON;
	UPDATE tblPickTickets SET bitStockTransferred = 1 WHERE strPkTkDocID = @strPkTkDocID
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateBIUserCubeView]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************** End [InsertBICubeTrancking] ****************/

/************************** Start [UpdateBIUserCubeView] ****************/


Create Procedure [dbo].[UpdateBIUserCubeView]
(
@UserName nvarchar(40),
@CubeName nvarchar(200),
@ViewName nvarchar(200),
@ViewDefinition nvarchar(Max)
)
as
begin
 UPDATE tblUsersCubeViews SET strViewDefinition = @ViewDefinition WHERE strCubeName = @CubeName and strUserName = @UserName
end
GO
/****** Object:  StoredProcedure [dbo].[UpdateClearedForDeliveryAdvice]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetGLNumberCountForLY] ***********/

/*********** Start [UpdateClearedForDeliveryAdvice] ***********/
CREATE PROCEDURE [dbo].[UpdateClearedForDeliveryAdvice]  
(  
 @DocNumber As nvarchar(50)  
)  
AS  
BEGIN  
 UPDATE tblOrderDocDA SET bitCleared = 1 WHERE strOrdDADocID IN (
					SELECT *
					FROM fnSplitStringAsTable(@DocNumber, ',')
					)
END  
GO
/****** Object:  StoredProcedure [dbo].[UpdateCompanyOnClosePeriod]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateCompanyOnClosePeriod]
(
	@dteEarliestTran DATETIME,
	@dtePeriodClose DATETIME
)
AS
UPDATE tblCompany SET dteEarliestTran = @dteEarliestTran, dtePeriodClose = @dtePeriodClose
GO
/****** Object:  StoredProcedure [dbo].[UpdateCompanyTable]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateCompanyTable]
(
	@dtStartDate datetime
)
AS

UPDATE tblCompany SET dteLYStarted = @dtStartDate

INSERT INTO tblAccountsLY SELECT intGLNumber, strDesc, intAccType, intGroupCode, intAccClass, bitInactive, 0, 0, 0, 0, bitBank, bitRecon, bitInventory, 
bitBudget, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, strField1, strField2, strField3, strField4, strField5, strField6, 0, bitAllowCenters, intCheqNumber, 
strCurrency, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,0, 0, 0, 0, 0 FROM tblAccounts WHERE intGLNumber NOT IN (SELECT intGLNumber FROM tblAccountsLY)
GO
/****** Object:  StoredProcedure [dbo].[UpdateContractBillDTData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetContractBillingDTData] ***********/

/*********** Start [UpdateContractBillDTData] ***********/
CREATE PROCEDURE [dbo].[UpdateContractBillDTData]
	@NextInvoiceDate AS DATETIME,
	@ContDocID NVARCHAR(50),
	@ProcessDate AS DATETIME	
AS
BEGIN
	UPDATE tblContractBillDT SET dtpNextInvoiceDate = @NextInvoiceDate, dtpNextBillDate=@NextInvoiceDate WHERE strContDocID = @ContDocID

	declare @ProcessCount AS INT=0
	SET @ProcessCount= (SELECT ISNULL(intTotalProcessCount, 0) AS intTotalProcessCount
	FROM tblContractBill
	WHERE strContDocID = @ContDocID)

	UPDATE tblContractBill SET dtpLastProcessDate = @ProcessDate, intTotalProcessCount = @ProcessCount+1 WHERE strContDocID = @ContDocID
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateContractPrint]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********End [GetInventoryLocationsList]********************/

/**********Start [UpdateContractPrint]*****************/

CREATE PROCEDURE [dbo].[UpdateContractPrint]
@DocNumber AS NVARCHAR(50)
AS
BEGIN
	UPDATE tblContractBill Set bitPrinted = 1 WHERE strContDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateCRMActionCustomerNote]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [InsertCRMActionCustomerNote] (CRM)**********/

/********* Start [UpdateCRMActionCustomerNote] (CRM)**********/

CREATE PROCEDURE [dbo].[UpdateCRMActionCustomerNote] 
	 @ActivityID BIGINT
	,@ActivityActionId BIGINT
	,@IsRead bit
AS
BEGIN
	Update tblCRMActionsCustomerNoteLog Set
		IsRead=@IsRead
		,ReadTime=Getdate()
		Where ActivityID=@ActivityID and ActivityActionId=@ActivityActionId and Cast(NotePoupDate as Date)=Cast(GETDATE() as date)
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateCRMActivities]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [InsertCRMActionsDocuments] (CRM)**********/



/********* Start [UpdateCRMActivities] (CRM)**********/

CREATE Procedure [dbo].[UpdateCRMActivities]    
(    
 @ActivityID bigint    
,@ActivityName nvarchar(1000)    
,@ActivityDescription nvarchar(MAX)    
,@ActivityGroupName nvarchar(400)    
,@ActivityStatus nvarchar(400)  
,@ActivityPriority nvarchar(400)    
,@ActivityCreatedDate datetime   
,@ActivityDueDate  datetime   
,@IsNotifyOwnerofActions bit  
,@IsNotifyGroupofActivity bit
,@CustomerNumber nvarchar(MAX)    
,@VendorNumber nvarchar(MAX)    
,@InventoryItemNumber nvarchar(MAX)    
,@ProjectNumber nvarchar(MAX)    
,@CustomerContactNo nvarchar(100)    
,@VendorContactNo nvarchar(100)    
,@TransactionType nvarchar(MAX)    
,@TransactionNumber nvarchar(MAX)    
,@UpdatedUser nvarchar(400)    
,@UpdatedDate datetime    
,@IsInactive bit    
,@IsSalesGroup bit    
,@SalesPipelineText nvarchar(1000)    
,@SalesPipelinePercentage decimal(18,2)    
,@ActivityCreatedUser nvarchar(MAX)    
,@ValueText decimal(18,2)    
,@CustomerProspect int    
,@ProsCompanyName nvarchar(MAX)    
,@ProsContactNo nvarchar(100)=''    
,@ProsEmailId nvarchar(MAX)=''    
,@ProsAddress nvarchar(MAX)=''    
,@CustPhoneNo nvarchar(100)    
,@CustMobileNo nvarchar(100)    
,@CustEmailId nvarchar(MAX)    
,@CustAddress nvarchar(MAX)    
,@ProsName nvarchar(MAX)=''    
,@GeoCoord geography=null    
)    
As    
Begin    
 Update tblCRMActivities  Set    
    ActivityName=@ActivityName    
   ,ActivityDescription=@ActivityDescription    
   ,ActivityGroupName=@ActivityGroupName    
   ,ActivityStatus=@ActivityStatus    
   ,ActivityPriority=@ActivityPriority  
   ,ActivityCreatedDate=@ActivityCreatedDate    
   ,ActivityDueDate = @ActivityDueDate  
   ,IsNotifyOwnerofActions = @IsNotifyOwnerofActions  
   ,IsNotifyGroupofActivity = @IsNotifyGroupofActivity
   ,CustomerNumber=@CustomerNumber    
   ,VendorNumber=@VendorNumber    
   ,InventoryItemNumber=@InventoryItemNumber    
   ,ProjectNumber=@ProjectNumber    
   ,CustomerContactNo=@CustomerContactNo    
   ,VendorContactNo=@VendorContactNo    
   ,TransactionType=@TransactionType    
   ,TransactionNumber=@TransactionNumber    
   ,UpdatedUser=@UpdatedUser    
   ,UpdatedDate=@UpdatedDate    
   ,IsInactive=@IsInactive    
   ,IsSalesGroup=@IsSalesGroup    
   ,SalesPipelineText=@SalesPipelineText    
   ,SalesPipelinePercentage=@SalesPipelinePercentage    
   ,ActivityCreatedUser=@ActivityCreatedUser    
   ,ValueText=@ValueText    
   ,CustomerProspect=@CustomerProspect    
   ,ProsCompanyName=@ProsCompanyName    
   ,ProsContactNo=@ProsContactNo    
   ,ProsEmailId=@ProsEmailId    
   ,ProsAddress=@ProsAddress    
   ,CustPhoneNo=@CustPhoneNo    
   ,CustMobileNo=@CustMobileNo    
   ,CustEmailId=@CustEmailId    
   ,CustAddress=@CustAddress    
   ,ProsName=@ProsName    
   ,GeoCoord=@GeoCoord    
   output inserted.ActivityID    
 Where ActivityID=@ActivityID     
End    
GO
/****** Object:  StoredProcedure [dbo].[UpdateCRMActivitiesActions]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [DeleteCRMActivitiesActions] (CRM)**********/

CREATE PROCEDURE [dbo].[UpdateCRMActivitiesActions] @ActivityActionID BIGINT      
 ,@ActivityID BIGINT      
 ,@ActionDescription NVARCHAR(MAX)      
 ,@DueDate DATETIME      
 ,@AssignTo NVARCHAR(400)      
 ,@ActionStatus NVARCHAR(400)      
 ,@UpdatedDate DATETIME      
 ,@UpdatedUser NVARCHAR(400)      
 ,@IsInactive BIT      
 ,@ActionType NVARCHAR(1600)      
 ,@EmailId NVARCHAR(MAX)      
 ,@IsActionReopened BIT      
 ,@ActionReopenedUserName NVARCHAR(Max)      
 ,@IsNotifyOnSalesDocuments BIT      
 ,@SignText NVARCHAR(Max)     
 ,@IsCalendar BIT = Null    
 ,@StartTime Time = Null     
 ,@EndTime Time = Null     
AS      
BEGIN      
 UPDATE tblCRMActivityActions      
 SET ActionDescription = @ActionDescription      
  ,DueDate = @DueDate      
  ,AssignTo = @AssignTo      
  ,ActionStatus = @ActionStatus      
  ,UpdateDate = @UpdatedDate      
  ,UpdatedUser = @UpdatedUser      
  ,IsInactive = @IsInactive      
  ,ActionType = @ActionType      
  ,EmailId=@EmailId      
  ,IsActionReopened=@IsActionReopened      
  ,ActionReopenedUserName=@ActionReopenedUserName      
  ,IsNotifyOnSalesDocuments=@IsNotifyOnSalesDocuments      
  ,SignText=@SignText     
  ,IsCalendar=@IsCalendar    
  ,StartTime=@StartTime    
  ,EndTime=@EndTime     
 WHERE ActivityActionID = @ActivityActionID      
  AND ActivityID = @ActivityID      
      
 BEGIN      
  DECLARE @ActivityCount INT = (      
    SELECT Count(*)      
    FROM tblCRMActivityActions      
    WHERE ActivityID = @ActivityID      
    )      
  DECLARE @ActivityNewCount INT = (      
    SELECT Count(*)      
    FROM tblCRMActivityActions inner join tblCRMActivityActionsStatus on tblCRMActivityActions.ActionStatus=tblCRMActivityActionsStatus.StatusType      
    WHERE ActivityID = @ActivityID      
     AND tblCRMActivityActionsStatus.StatusGroup = 1      
    )      
  DECLARE @ActivityNotCompletedCount INT = (      
    SELECT Count(DueDate)      
    FROM tblCRMActivityActions inner join tblCRMActivityActionsStatus on tblCRMActivityActions.ActionStatus=tblCRMActivityActionsStatus.StatusType      
    WHERE ActivityID = @ActivityID      
     AND tblCRMActivityActionsStatus.StatusGroup <> 3      
    )      
      
  UPDATE tblCRMActivities      
  SET ActivityStatus = (      
    CASE       
     WHEN @ActivityCount = @ActivityNewCount      
      THEN (Select tblCRMActivityStatus.StatusType from tblCRMActivityStatus Where tblCRMActivityStatus.StatusGroup= 1 and tblCRMActivityStatus.IsPredefined=1)  --New      
     WHEN @ActivityNotCompletedCount = 0      
      THEN (Select tblCRMActivityStatus.StatusType from tblCRMActivityStatus Where tblCRMActivityStatus.StatusGroup= 3 and tblCRMActivityStatus.IsPredefined=1)  --Completed      
     ELSE (Select tblCRMActivityStatus.StatusType from tblCRMActivityStatus Where tblCRMActivityStatus.StatusGroup= 2 and tblCRMActivityStatus.IsPredefined=1)   --In Progress      
     END      
    )      
  WHERE ActivityID = @ActivityID      
 END      
END 
GO
/****** Object:  StoredProcedure [dbo].[UpdateCRMActivitiesActionsStatus]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/********* End [GetActivityActionsListFilter] (CRM)**********/

/********* Start [UpdateCRMActivitiesActionsStatus] (CRM)**********/

CREATE PROCEDURE [dbo].[UpdateCRMActivitiesActionsStatus] @ActivityActionID BIGINT
	,@ActivityID BIGINT
	,@ActionStatus NVARCHAR(400)
	,@UpdatedDate DATETIME
	,@UpdatedUser NVARCHAR(400)
AS
BEGIN
	UPDATE tblCRMActivityActions
	SET ActionStatus = @ActionStatus
		,UpdateDate = @UpdatedDate
		,UpdatedUser = @UpdatedUser
	WHERE ActivityActionID = @ActivityActionID
		AND ActivityID = @ActivityID

	BEGIN
		DECLARE @ActivityCount INT = (
				SELECT Count(*)
				FROM tblCRMActivityActions
				WHERE ActivityID = @ActivityID
				)
		DECLARE @ActivityNewCount INT = (
				SELECT Count(*)
				FROM tblCRMActivityActions inner join tblCRMActivityActionsStatus on tblCRMActivityActions.ActionStatus=tblCRMActivityActionsStatus.StatusType
				WHERE ActivityID = @ActivityID
					AND tblCRMActivityActionsStatus.StatusGroup = 1
				)
		DECLARE @ActivityNotCompletedCount INT = (
				SELECT Count(DueDate)
				FROM tblCRMActivityActions inner join tblCRMActivityActionsStatus on tblCRMActivityActions.ActionStatus=tblCRMActivityActionsStatus.StatusType
				WHERE ActivityID = @ActivityID
					AND tblCRMActivityActionsStatus.StatusGroup <> 3
				)

		UPDATE tblCRMActivities
		SET ActivityStatus = (
				CASE 
					WHEN @ActivityCount = @ActivityNewCount
						THEN (Select tblCRMActivityStatus.StatusType from tblCRMActivityStatus Where tblCRMActivityStatus.StatusGroup= 1 and tblCRMActivityStatus.IsPredefined=1)  --New
					WHEN @ActivityNotCompletedCount = 0
						THEN (Select tblCRMActivityStatus.StatusType from tblCRMActivityStatus Where tblCRMActivityStatus.StatusGroup= 3 and tblCRMActivityStatus.IsPredefined=1)  --Completed
					ELSE (Select tblCRMActivityStatus.StatusType from tblCRMActivityStatus Where tblCRMActivityStatus.StatusGroup= 2 and tblCRMActivityStatus.IsPredefined=1)   --In Progress
					END
				)
		WHERE ActivityID = @ActivityID
	END
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateCRMActivitiesUserFields]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** END StoredProcedure [dbo].[GetActivityListbyUser]  ******/

/************************START [UpdateCRMActivitiesUserFields]***********************************/

CREATE PROCEDURE [dbo].[UpdateCRMActivitiesUserFields] 
	 @FieldId	bigint
	,@ActivityID	bigint
	,@FieldType	int	
	,@FieldName	nvarchar(100)
	,@Description	nvarchar(300)
	,@IsMandatory	bit
	,@DisplayOrder	smallint
	,@ItemList	nvarchar(Max)
	,@UpdatedDate	datetime
	,@UpdatedBy	nvarchar(100)
	,@Value nvarchar(Max)
AS
BEGIN
	Update tblCRMUserActivityFields set 
	 FieldType=@FieldType
	,FieldName=@FieldName
	,Description=@Description
	,IsMandatory=@IsMandatory
	,DisplayOrder=@DisplayOrder
	,ItemList=@ItemList
	,UpdatedDate=@UpdatedDate
	,UpdatedBy=@UpdatedBy
	,Value=@Value
	Where FieldId =@FieldId and ActivityID=@ActivityID
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateCRMActivityGroupUserFields]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************END [GetCRMActivityGroupUserFields]***********************************/

/************************START [UpdateCRMActivityGroupUserFields]***********************************/


CREATE procedure [dbo].[UpdateCRMActivityGroupUserFields]
@FieldId bigint
,@ActivityGroupName nvarchar(Max)
,@FieldType int
,@FieldName nvarchar(100)
,@Description nvarchar(300)	
,@IsMandatory bit
,@DisplayOrder int
,@ItemList nvarchar(Max)
,@UpdatedDate datetime
,@UpdatedBy nvarchar(100)
AS
BEGIN
	
	Update tblCRMActivityGroupUserFields set 
	FieldType=@FieldType,
	FieldName=@FieldName,
	Description=@Description,
	IsMandatory=@IsMandatory,
	DisplayOrder=@DisplayOrder,
	ItemList=@ItemList,
	UpdatedDate=@UpdatedDate,
	UpdatedBy=@UpdatedBy
	Where FieldId=@FieldId and ActivityGroupName= @ActivityGroupName

END
GO
/****** Object:  StoredProcedure [dbo].[UpdateCRMDocumentDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************END [GetCustomerDetailsbyNumber]***********************************/

/************************START [UpdateCRMDocumentDetails]***********************************/

CREATE PROCEDURE [dbo].[UpdateCRMDocumentDetails] 
     @TransactionNumber NVARCHAR(Max)
	,@TransactionType NVARCHAR(Max)
	,@CustomerNumber NVARCHAR(Max)
	,@UpdatedUser NVARCHAR(400)
	,@OldTransactionNumber NVARCHAR(Max)
AS
BEGIN
	UPDATE tblCRMActivities
	SET TransactionNumber = @TransactionNumber
		,TransactionType = @TransactionType
		,CustomerNumber = @CustomerNumber
		,UpdatedDate = GETDATE()
		,UpdatedUser = @UpdatedUser
		,CustomerProspect=0
	WHERE TransactionNumber = @OldTransactionNumber

	BEGIN
		INSERT INTO tblCRMActivitiesTracking (
			ActivityID
			,ActivityName
			,ActivityDescription
			,ActivityGroupName
			,ActivityStatus
			,ActivityCreatedDate
			,CustomerNumber
			,VendorNumber
			,InventoryItemNumber
			,ProjectNumber
			,CustomerContactNo
			,VendorContactNo
			,TransactionType
			,TransactionNumber
			,CreatedUser
			,UpdatedUser
			,CreatedDate
			,UpdatedDate
			,IsInactive
			,IsSalesGroup
			,SalesPipelineText
			,SalesPipelinePercentage
			,ActivityCreatedUser
			,LogDate
			,LogUserName
			,LogType
			,ValueText
			,CustomerProspect
			,ProsCompanyName
			,ProsContactNo
			,ProsEmailId
			,ProsAddress
			,CustPhoneNo
			,CustMobileNo
			,CustEmailId
			,CustAddress
			,ProsName
			)
		SELECT tblCRMActivities.ActivityID
			,tblCRMActivities.ActivityName
			,tblCRMActivities.ActivityDescription
			,tblCRMActivities.ActivityGroupName
			,tblCRMActivities.ActivityStatus
			,tblCRMActivities.ActivityCreatedDate
			,tblCRMActivities.CustomerNumber
			,tblCRMActivities.VendorNumber
			,tblCRMActivities.InventoryItemNumber
			,tblCRMActivities.ProjectNumber
			,tblCRMActivities.CustomerContactNo
			,tblCRMActivities.VendorContactNo
			,tblCRMActivities.TransactionType
			,tblCRMActivities.TransactionNumber
			,tblCRMActivities.CreatedUser
			,tblCRMActivities.UpdatedUser
			,tblCRMActivities.CreatedDate
			,tblCRMActivities.UpdatedDate
			,tblCRMActivities.IsInactive
			,tblCRMActivities.IsSalesGroup
			,tblCRMActivities.SalesPipelineText
			,tblCRMActivities.SalesPipelinePercentage
			,tblCRMActivities.ActivityCreatedUser
			,GETDATE()
			,@UpdatedUser
			,'Update'
			,tblCRMActivities.ValueText
			,tblCRMActivities.CustomerProspect
			,tblCRMActivities.ProsCompanyName
			,tblCRMActivities.ProsContactNo
			,tblCRMActivities.ProsEmailId
			,tblCRMActivities.ProsAddress
			,tblCRMActivities.CustPhoneNo
			,tblCRMActivities.CustMobileNo
			,tblCRMActivities.CustEmailId
			,tblCRMActivities.CustAddress
			,tblCRMActivities.ProsName
		FROM tblCRMActivities
		WHERE tblCRMActivities.ActivityID IN (
				SELECT a.ActivityID
				FROM tblCRMActivities a
				WHERE a.TransactionNumber = @TransactionNumber
				)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateCRMNotificationFields]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/************************** END [GetAllCRMNotificationFieldLists] ****************/

/************************** START [UpdateCRMNotificationFields] ****************/

CREATE procedure [dbo].[UpdateCRMNotificationFields]
@bitActivateCRMNotification bit,
@strActivityNotification nvarchar(Max),
@strActionNotification nvarchar(Max),
@strActionAssignedNotification nvarchar(Max),
@strEmailActionNotification nvarchar(Max)
As
Begin

	Update tblCRMNotification Set 
	bitActivateCRMNotification=@bitActivateCRMNotification,
	strActivityNotification=@strActivityNotification,
	strActionNotification=@strActionNotification,
	strActionAssignedNotification=@strActionAssignedNotification,
	strEmailActionNotification=@strEmailActionNotification

End
GO
/****** Object:  StoredProcedure [dbo].[UpdateCustDefault]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateCustDefault] 
AS
BEGIN 
	UPDATE tblCustomers SET strTaxCode = (SELECT strTaxCode FROM tblTaxCodes WHERE bitDefCustomers = 1)
	SELECT @@ROWCOUNT
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateCustomerBalance]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateCustomerBalance]
(
	@decBalance decimal,
	@decCurrBalance decimal,
	@strCustomer nvarchar(100)	
)
AS
UPDATE tblCustomers SET decBalDue = @decBalance, decYTDPurch = @decBalance, decBalDueF = @decCurrBalance, decYTDPurchF = @decCurrBalance WHERE strCustName = @strCustomer
GO
/****** Object:  StoredProcedure [dbo].[UpdateCustomerCategories]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateCustomerCategories] (
	@Loc AS NVARCHAR(20)
	,@OldName AS NVARCHAR(20)
	,@Desc AS VARCHAR(100)
	,@Inactive AS BIT
	,@IsHP AS BIT
	,@DefDep AS MONEY
	,@DefIns AS MONEY
	,@DefFinChrge AS MONEY
	,@ArrPenalty AS MONEY
	,@InstallSaleFC AS NVARCHAR(100)
	,@InstallSaleTaxCode AS NVARCHAR(4)
	)
AS
BEGIN
	UPDATE tblCustomerCat
	SET strCustCategory = @Loc
		,strDesc = @Desc
		,bitInactive = @Inactive
		,bitIsHP = @IsHP
		,decISDefDep = @DefDep
		,decISDefIns = @DefIns
		,decISDefFinChrge = @DefFinChrge
		,strInstallSaleFC = @InstallSaleFC
		,strInstallSaleTaxCode = @InstallSaleTaxCode
		,decArrPenalty = @ArrPenalty
	WHERE strCustCategory = @OldName

	If @IsHP = 1 
	BEGIN
		UPDATE 
			tblPaymentPlan 
		SET 
			decPenaltyInterestRate = @ArrPenalty 
		FROM (SELECT INV.strInvDocID 
				FROM tblCustomers CUST 
					INNER JOIN tblInvoiceDoc INV ON CUST.strCustName = INV.strCustName 
					INNER JOIN tblPaymentPlan PP ON INV.strInvDocID = PP.strInvDocID 
					LEFT JOIN tblCustTrans CT ON INV.strInvDocID = CT.strInvDocID 
				WHERE (CUST.strCustCategory = @Loc) 
						AND (ISNULL(CT.bitSettled,0) = 0) AND (PP.decPenaltyInterestRate <> @ArrPenalty)) Z 
		WHERE tblPaymentPlan.strInvDocID = Z.strInvDocID
	END
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateCustomerInfo]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetISCatSetting] ***********/

/*********** Start [UpdateCustomerInfo] ***********/
CREATE PROCEDURE [dbo].[UpdateCustomerInfo]
(
	@CreditLimit AS MONEY,
	@BalDue AS MONEY,
	@BitInactive AS BIT,
	@CustomerName AS VARCHAR(50)
)
AS
BEGIN
	UPDATE tblCustomers SET decCreditLimit = @CreditLimit, decBalDue = @BalDue, bitInactive = @BitInactive WHERE strCustName = @CustomerName
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateCustomers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateOrderDocument] ***********/

/*********** Start [UpdateCustomers] ***********/
CREATE PROCEDURE [dbo].[UpdateCustomers] (
	@Customer1 NVARCHAR(50)
	,@Customer2 NVARCHAR(50)
	)
AS
BEGIN
	UPDATE 
		tblCustomers
	SET 
		decOpenOrders = ISNULL((
				SELECT SUM(ROUND((DTL.decLineTotExc / DTL.decQty) * DTL.decQtyRemaining, 2))
				FROM tblOrderDoc HDR
				INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
				WHERE HDR.strCustName = @Customer1
					AND (HDR.bitCleared = 0)
					AND (HDR.intDocType = 1)
				), 0)
		,decOpenOrdersF = ISNULL((
				SELECT SUM(ROUND((DTL.decLineTotExcF / DTL.decQty) * DTL.decQtyRemaining, 2))
				FROM tblOrderDoc HDR
				INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
				WHERE HDR.strCustName = @Customer1
					AND (HDR.bitCleared = 0)
					AND (HDR.intDocType = 1)
				), 0)
	WHERE strCustName = @Customer2
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateCustomersAdjustingSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateCustomersAdjustingSales] (
	@CustName VARCHAR(50)
	,@CurrentYrStarts DATETIME
	)
AS
BEGIN
	UPDATE tblCustomers
	SET decBalDue = (
			SELECT SUM(decAmount)
			FROM (
				SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) AS decAmount
				FROM tblCustTrans
				INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
				WHERE tblCustTrans.strCustName = tblCustomers.strCustName
					AND tblCustTransDT.bitReversed = 0
					AND (
						tblCustTrans.strOrdDocID IS NULL
						OR (
							tblCustTrans.strInvDocID IS NOT NULL
							AND tblCustTrans.strOrdDocID IS NOT NULL
							)
						OR (
							tblCustTrans.strOrdDocID IS NOT NULL
							AND tblCustTransDT.lngCustPayID IS NOT NULL
							)
						)
				) AS decAmount
			)
		,decYTDPurch = (
			SELECT ISNULL(SUM(decTotal), 0)
			FROM tblInvoiceDoc
			WHERE strCustName = tblCustomers.strCustName
				AND bitHistoryTrans = 0
				AND dteJournalDate >= @CurrentYrStarts
			)
		,decBalDueF = (
			SELECT SUM(decAmountF)
			FROM (
				SELECT ISNULL(SUM(tblCustTransDT.decAmountF), 0) AS decAmountF
				FROM tblCustTrans
				INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
				WHERE tblCustTrans.strCustName = tblCustomers.strCustName
					AND tblCustTransDT.bitReversed = 0
					AND (
						tblCustTrans.strOrdDocID IS NULL
						OR (
							tblCustTrans.strInvDocID IS NOT NULL
							AND tblCustTrans.strOrdDocID IS NOT NULL
							)
						OR (
							tblCustTrans.strOrdDocID IS NOT NULL
							AND tblCustTransDT.lngCustPayID IS NOT NULL
							)
						)
				) AS decAmountF
			)
		,decYTDPurchF = (
			SELECT ISNULL(SUM(decTotalF), 0)
			FROM tblInvoiceDoc
			WHERE strCustName = tblCustomers.strCustName
				AND bitHistoryTrans = 0
				AND dteJournalDate >= @CurrentYrStarts
			)
		,dteUpdated = GetDate()
	WHERE strCustName = @CustName
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateCustomersData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateCustomersData]
(
	@CustomerName nvarchar(50),
	@CurrentYrStarts datetime,
	@IsYTDPurchSet bit
)
AS
BEGIN
	IF (@IsYTDPurchSet = 1)
	BEGIN
		UPDATE tblCustomers
	SET decYTDPurch = (
			SELECT ISNULL(SUM(decTotal), 0)
			FROM tblInvoiceDoc
			WHERE strCustName = @CustomerName
				AND bitHistoryTrans = 0
				AND dteJournalDate >= @CurrentYrStarts
			)
		,decBalDueF = (
			SELECT ISNULL(SUM(tblCustTransDT.decAmountF), 0)
			FROM tblCustTrans
			INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
			WHERE tblCustTrans.strCustName = @CustomerName
				AND tblCustTransDT.bitReversed = 0
			)
		,decYTDPurchF = (
			SELECT ISNULL(SUM(decTotalF), 0)
			FROM tblInvoiceDoc
			WHERE strCustName = @CustomerName
				AND bitHistoryTrans = 0
				AND dteJournalDate >= @CurrentYrStarts
			)
	WHERE strCustName = @CustomerName
	END
	ELSE
	BEGIN
		UPDATE tblCustomers
		SET decBalDue = (
				SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0)
				FROM tblCustTrans
				INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
				WHERE tblCustTrans.strCustName = @CustomerName
					AND tblCustTransDT.bitReversed = 0
					AND (
						tblCustTrans.strOrdDocID IS NULL
						OR (
							tblCustTrans.strInvDocID IS NOT NULL
							AND tblCustTrans.strOrdDocID IS NOT NULL
							)
						OR (
							tblCustTrans.strOrdDocID IS NOT NULL
							AND tblCustTransDT.lngCustPayID IS NOT NULL
							)
						)
				)
			,decYTDPurch = (
				SELECT ISNULL(SUM(decTotal), 0)
				FROM tblInvoiceDoc
				WHERE strCustName = @CustomerName
					AND bitHistoryTrans = 0
					AND dteJournalDate >= @CurrentYrStarts
				)
			,decBalDueF = (
				SELECT ISNULL(SUM(tblCustTransDT.decAmountF), 0)
				FROM tblCustTrans
				INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
				WHERE tblCustTrans.strCustName = @CustomerName
					AND tblCustTransDT.bitReversed = 0
					AND (
						tblCustTrans.strOrdDocID IS NULL
						OR (
							tblCustTrans.strInvDocID IS NOT NULL
							AND tblCustTrans.strOrdDocID IS NOT NULL
							)
						OR (
							tblCustTrans.strOrdDocID IS NOT NULL
							AND tblCustTransDT.lngCustPayID IS NOT NULL
							)
						)
				)
			,decYTDPurchF = (
				SELECT ISNULL(SUM(decTotalF), 0)
				FROM tblInvoiceDoc
				WHERE strCustName = @CustomerName
					AND bitHistoryTrans = 0
					AND dteJournalDate >= @CurrentYrStarts
				)
			,dteUpdated = GetDate()
		WHERE strCustName = @CustomerName
	END

END
GO
/****** Object:  StoredProcedure [dbo].[UpdateCustomersNumbers]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [PaymentPlanDepositInsert] ***********/

/*********** Start [UpdateCustomersNumbers] ***********/
CREATE PROCEDURE [dbo].[UpdateCustomersNumbers] @CustomerNumber AS NVARCHAR(50)
	,@OldCustomerNumber AS NVARCHAR(50)
	,@IsCustomerChanged AS BIT
AS
BEGIN
	UPDATE tblCustomers
	SET decOpenOrders = ISNULL((
				SELECT SUM(ROUND((DTL.decLineTotExc / DTL.decQty) * DTL.decQtyRemaining, 2))
				FROM tblOrderDoc HDR
				INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
				WHERE HDR.strCustName = @CustomerNumber
					AND (HDR.bitCleared = 0)
					AND (HDR.intDocType = 1)
				), 0)
		,decOpenOrdersF = ISNULL((
				SELECT SUM(ROUND((DTL.decLineTotExcF / DTL.decQty) * DTL.decQtyRemaining, 2))
				FROM tblOrderDoc HDR
				INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
				WHERE HDR.strCustName = @CustomerNumber
					AND (HDR.bitCleared = 0)
					AND (HDR.intDocType = 1)
				), 0)
	WHERE strCustName = @CustomerNumber

	IF (@IsCustomerChanged = 1)
		UPDATE tblCustomers
		SET decOpenOrders = ISNULL((
					SELECT SUM(ROUND((DTL.decLineTotExc / DTL.decQty) * DTL.decQtyRemaining, 2))
					FROM tblOrderDoc HDR
					INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
					WHERE HDR.strCustName = @OldCustomerNumber
						AND (HDR.bitCleared = 0)
						AND (HDR.intDocType = 1)
					), 0)
			,decOpenOrdersF = ISNULL((
					SELECT SUM(ROUND((DTL.decLineTotExcF / DTL.decQty) * DTL.decQtyRemaining, 2))
					FROM tblOrderDoc HDR
					INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
					WHERE HDR.strCustName = @OldCustomerNumber
						AND (HDR.bitCleared = 0)
						AND (HDR.intDocType = 1)
					), 0)
		WHERE strCustName = @OldCustomerNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateCustomersOnOpenSO]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateCustomersOnOpenSO]
(
	@strCust1 nvarchar(50),
	@strCust2 nvarchar(50)
)
AS
UPDATE tblCustomers SET decOpenOrders = (SELECT ISNULL(SUM(decTotal),0) FROM tblOrderDoc WHERE strCustName = @strCust1 AND bitCleared = 0 AND intDocType = 1), 
decOpenOrdersF = (SELECT ISNULL(SUM(decTotalF),0) FROM tblOrderDoc WHERE strCustName = @strCust1 AND bitCleared = 0 AND intDocType = 1) WHERE strCustName = @strCust2
GO
/****** Object:  StoredProcedure [dbo].[UpdateCustTranDetailTable]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [GetInvoiceDoctDtForCreditNote] ***********/

/*********** Start [UpdateCustTranDetailTable] ***********/
CREATE PROCEDURE [dbo].[UpdateCustTranDetailTable] (
	@SQlngCustTrID AS BIGINT
	,@SQTotal AS MONEY
	,@SQSubTotal AS MONEY
	,@SQExchange AS DECIMAL(20, 6)
	,@SQDiscount AS MONEY
	,@SQVAT AS MONEY
	,@SQCrCnAmount AS MONEY
	)
AS
BEGIN
	DECLARE @lngCustPayID BIGINT
	DECLARE @lngID BIGINT
	DECLARE @bitIsForeign BIT
	DECLARE @decAmount MONEY
	DECLARE @decAmountF MONEY

	DECLARE UpdateCustTranDtTable CURSOR LOCAL STATIC READ_ONLY FORWARD_ONLY
	FOR
	SELECT lngID
		,lngCustPayID
		,bitIsForeign
		,decAmount
		,decAmountF
	FROM tblCustTransDT
	WHERE lngCustTrID = @SQlngCustTrID
	ORDER BY lngID

	OPEN UpdateCustTranDtTable

	FETCH NEXT
	FROM UpdateCustTranDtTable
	INTO @lngID
		,@lngCustPayID
		,@bitIsForeign
		,@decAmount
		,@decAmountF

	WHILE @@FETCH_STATUS = 0
	BEGIN
		DECLARE @totalAmount MONEY = 0

		IF @lngCustPayID IS NULL
		BEGIN
			IF @bitIsForeign = 0
			BEGIN
				UPDATE tblCustTransDT
				SET decAmount = @SQTotal
					,decAmtOwingAtTime = @SQTotal
					,decAmountF = 0
					,decAmtOwingAtTimeF = 0
				WHERE lngID = @lngID

				SET @totalAmount = @totalAmount + @SQTotal
			END
			ELSE
			BEGIN
				DECLARE @decSubF MONEY = 0

				SET @decSubF = @SQSubTotal * @SQExchange

				DECLARE @decDiscF MONEY = 0

				SET @decDiscF = @SQDiscount * @SQExchange

				DECLARE @decVATF MONEY = 0

				SET @decVATF = @SQVAT * @SQExchange

				DECLARE @decTotalF MONEY = 0

				SET @decTotalF = @decSubF + @decDiscF + @decVATF

				UPDATE tblCustTransDT
				SET decAmount = @decTotalF
					,decAmtOwingAtTime = @decTotalF
					,decAmountF = @SQTotal
					,decAmtOwingAtTimeF = @SQTotal
				WHERE lngID = @lngID

				SET @totalAmount = @totalAmount + @decTotalF
			END
		END
		ELSE
		BEGIN
			IF @bitIsForeign = 0
			BEGIN
				UPDATE tblCustTransDT
				SET decAmount = @SQCrCnAmount
					,decAmtOwingAtTime = @totalAmount
					,decAmountF = 0
					,decAmtOwingAtTimeF = 0
				WHERE lngID = @lngID

				SET @totalAmount = @totalAmount + @decAmount
			END
			ELSE
			BEGIN
				DECLARE @totalF MONEY = 0

				SET @totalF = @totalAmount * @SQExchange

				UPDATE tblCustTransDT
				SET decAmount = @decAmountF
					,decAmtOwingAtTime = @totalF
					,decAmountF = @SQCrCnAmount
					,decAmtOwingAtTimeF = @SQCrCnAmount
				WHERE lngID = @lngID

				SET @totalAmount = @totalAmount + @decAmountF
			END
		END

		FETCH NEXT
		FROM UpdateCustTranDtTable
		INTO @lngID
			,@lngCustPayID
			,@bitIsForeign
			,@decAmount
			,@decAmountF
	END

	CLOSE UpdateCustTranDtTable

	DEALLOCATE UpdateCustTranDtTable
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateCustTranDtTableForApplyToCreditNote]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [UpdateCustTranDetailTable] ***********/

/*********** Start [UpdateCustTranDtTableForApplyToCreditNote] ***********/
CREATE PROCEDURE [dbo].[UpdateCustTranDtTableForApplyToCreditNote] (
	@SQstrCRDocID AS NVARCHAR(50)
	,@SQstrCRReference AS NVARCHAR(50)
	,@SQstrCNDocID AS NVARCHAR(50)
	,@SQlngCustTrIDCR AS BIGINT
	,@SQlngCustTrIDCN AS BIGINT
	)
AS
BEGIN
	UPDATE tblInvoiceDoc
	SET strOrdDocID = @SQstrCRDocID
		,strReference = CASE 
			WHEN LEN(ISNULL(strReference, '')) = 0
				THEN CASE 
						WHEN LEN(@SQstrCRReference) > 0
							THEN @SQstrCRReference
						ELSE @SQstrCRDocID
						END
			ELSE strReference
			END
		,bitFromSO = 1
	WHERE strInvDocID = @SQstrCNDocID

	UPDATE tblOrderDoc
	SET strReference = CASE 
			WHEN LEN(ISNULL(strReference, '')) = 0
				THEN @SQstrCNDocID
			ELSE strReference
			END
		,bitCleared = 1
	WHERE strOrdDocID = @SQstrCRDocID

	UPDATE tblCustTransDT
	SET lngCustTrID = @SQlngCustTrIDCN
	WHERE lngCustTrID = @SQlngCustTrIDCR
		AND lngCustPayID IS NOT NULL

	DELETE tblCustTrans
	WHERE lngCustTrID = @SQlngCustTrIDCR
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateCustTransDTTable]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [GetVendorLocalPriceFHQ] (FHQ) **********/

/********* Start [UpdateCustTransDTTable] (Receipts) **********/


CREATE PROCEDURE [dbo].[UpdateCustTransDTTable] (
	@VendTransID BIGINT
	,@TransType TINYINT
	)
AS
BEGIN
	--DECLARE @decAddAmount As money = null;
	--SET @decAddAmount = 'SELECT decAmount FROM tblCustTransDT WHERE lngCustTrID = '+ @VendTransID + 'AND intTransType =' + @TransType;
	--IF(@decAddAmount is not null)
	--BEGIN
	--	UPDATE tblCustTrans SET decDiscAvail = decDiscAvail + (@decAddAmount*-1) WHERE lngCustTrID = @VendTransID
	--END
	SELECT decAmount
	FROM tblCustTransDT
	WHERE lngCustTrID = @VendTransID
		AND intTransType = @TransType;

	IF @@ROWCOUNT > 0
	BEGIN
		UPDATE tblCustTrans
		SET decDiscAvail = decDiscAvail + (
				SELECT decAmount * - 1
				FROM tblCustTransDT
				WHERE lngCustTrID = @VendTransID
					AND intTransType = @TransType
				)
		WHERE lngCustTrID = @VendTransID
	END
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateCustTransForWrongDiscount]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [BulkInsertForCustTransDT] ***********/

/*********** Start [UpdateCustTransForWrongDiscount] ***********/
CREATE PROCEDURE [dbo].[UpdateCustTransForWrongDiscount] (@IsForeign BIT)
AS
BEGIN
	UPDATE tblCustTrans
	SET decDiscAvail = 0
	WHERE (
			decDiscAvail < 0
			AND decInvAmount > 0
			)
		OR (
			decDiscAvail > 0
			AND decInvAmount < 0
			)

	IF (@IsForeign = 1)
	BEGIN
		UPDATE tblCustTrans
		SET decDiscAvailF = 0
		WHERE (
				decDiscAvailF < 0
				AND decInvAmountF > 0
				)
			OR (
				decDiscAvailF > 0
				AND decInvAmountF < 0
				)
	END
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateCustTransSettledAdjustingSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[UpdateCustTransSettledAdjustingSales]    Script Date: 07-11-2019 10:38:47 ******/
CREATE PROCEDURE [dbo].[UpdateCustTransSettledAdjustingSales] (
	@CustTrID BIGINT
)
AS
BEGIN
	UPDATE tblCustTrans
	SET bitSettled = 1
	WHERE bitSettled = 0
		AND lngCustTrID IN (
			SELECT lngCustTrID
			FROM tblCustTransDT
			WHERE bitReversed = 0
				AND lngCustTrID = @CustTrID
			GROUP BY lngCustTrID
			HAVING SUM(decAmount) = 0
				AND SUM(decAmountF) = 0
			)

	UPDATE tblCustTrans
	SET bitSettled = 0
	WHERE bitSettled = 1
		AND lngCustTrID IN (
			SELECT lngCustTrID
			FROM tblCustTransDT
			WHERE bitReversed = 0
				AND lngCustTrID = @CustTrID
			GROUP BY lngCustTrID
			HAVING SUM(decAmount) <> 0
				OR SUM(decAmountF) <> 0
			)
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateCustTranTableForApplyToCreditNote]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [UpdateCustTranDtTableForApplyToCreditNote] ***********/

/*********** Start [UpdateCustTranTableForApplyToCreditNote] ***********/
CREATE PROCEDURE [dbo].[UpdateCustTranTableForApplyToCreditNote] (
	@SQstrCRDocID AS NVARCHAR(50)
	,@SQstrCRReference AS NVARCHAR(50)
	,@SQstrCNDocID AS NVARCHAR(50)
	,@SQlngCustTrIDCR AS BIGINT
	)
AS
BEGIN
	UPDATE tblInvoiceDoc
	SET strOrdDocID = @SQstrCRDocID
		,strReference = CASE 
			WHEN LEN(ISNULL(strReference, '')) = 0
				THEN CASE 
						WHEN LEN(@SQstrCRReference) > 0
							THEN @SQstrCRReference
						ELSE @SQstrCRDocID
						END
			ELSE strReference
			END
		,bitFromSO = 1
	WHERE strInvDocID = @SQstrCNDocID

	UPDATE tblOrderDoc
	SET strReference = CASE 
			WHEN LEN(ISNULL(strReference, '')) = 0
				THEN @SQstrCNDocID
			ELSE strReference
			END
		,bitCleared = 1
	WHERE strOrdDocID = @SQstrCRDocID

	UPDATE tblCustTrans
	SET strSoNumber = @SQstrCRDocID
	WHERE strInvDocID = @SQstrCNDocID

	DELETE tblCustTrans
	WHERE lngCustTrID = @SQlngCustTrIDCR
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateDefNotifications]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

---------------------------------
CREATE PROCEDURE [dbo].[UpdateDefNotifications] @DefaultEmail AS NVARCHAR(max)
	,@DefaultSMS AS NVARCHAR(max)
	,@ApproverType AS INT
	,@NotificationType AS INT
AS
BEGIN
	IF (
			SELECT COUNT(1)
			FROM tblApprovalsNotifications(NOLOCK)
			WHERE intApproverType = @ApproverType
			AND intNotificationType = @NotificationType
			) <> 0
	BEGIN
		UPDATE tblApprovalsNotifications
		SET NotificationSMS = @DefaultSMS
			,NotificationEMAIL = @DefaultEmail
		WHERE intApproverType = @ApproverType
		AND intNotificationType = @NotificationType
	END
	ELSE
		INSERT INTO tblApprovalsNotifications
		VALUES (
			@DefaultSMS
			,@DefaultEmail
			,@ApproverType
			,@NotificationType
			)
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateDiscountsAvailableVendTrans]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateDiscountsAvailableVendTrans]
AS
BEGIN
UPDATE tblVendTrans SET decDiscAvail = 0 WHERE (decDiscAvail < 0 AND decInvAmount > 0) OR (decDiscAvail > 0 AND decInvAmount < 0)
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateDocumentChangeSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [UpdateDocumentChangeSales] ***********/
CREATE PROCEDURE [dbo].[UpdateDocumentChangeSales] (
	@IsInvoice BIT
	,@DocumentId AS VARCHAR(50)
	,@Reference AS VARCHAR(50)
	,@Notes AS VARCHAR(MAX)
	,@SalesName AS VARCHAR(50)
	,@AddInfo AS VARCHAR(50)
	,@StatusTypeCode AS VARCHAR(20)
	,@CNReasonCode AS VARCHAR(20)
	,@Field1 AS VARCHAR(100)
	,@Field2 AS VARCHAR(100)
	,@Field3 AS VARCHAR(100)
	,@Field4 AS VARCHAR(100)
	,@Field5 AS VARCHAR(100)
	,@Field6 AS VARCHAR(100)
	,@Field7 AS VARCHAR(100)
	,@Field8 AS VARCHAR(100)
	,@Field9 AS VARCHAR(100)
	,@Field10 AS VARCHAR(100)
	,@Field11 AS VARCHAR(100)
	,@Field12 AS VARCHAR(100)
	,@Field13 AS VARCHAR(100)
	,@Field14 AS VARCHAR(100)
	,@IsBookmark AS BIT
	,@IsNoPODRequired AS BIT
	)
AS
BEGIN
	IF (@IsInvoice = 1)
	BEGIN
		UPDATE tblInvoiceDoc
		SET strReference = @Reference
			,strNotes = @Notes
			,strSalesName = @SalesName
			,strAddInfo = @AddInfo
			,strStatusTypeCode = @StatusTypeCode
			,strCNReasonCode = @CNReasonCode
			,strField1 = @Field1
			,strField2 = @Field2
			,strField3 = @Field3
			,strField4 = @Field4
			,strField5 = @Field5
			,strField6 = @Field6
			,strField7 = @Field7
			,strField8 = @Field8
			,strField9 = @Field9
			,strField10 = @Field10
			,strField11 = @Field11
			,strField12 = @Field12
			,dteField13 = @Field13
			,dteField14 = @Field14
			,bitBookmark = @IsBookmark
			,bitNoPODRequired = @IsNoPODRequired
		WHERE strInvDocID = @DocumentId

		UPDATE tblCustTrans
		SET strInvDepNumber = @Reference
		WHERE strInvDocID = @DocumentId
	END
	ELSE
	BEGIN
		UPDATE tblOrderDoc
		SET strReference = @Reference
			,strNotes = @Notes
			,strSalesName = @SalesName
			,strAddInfo = @AddInfo
			,strStatusTypeCode = @StatusTypeCode
			,strField1 = @Field1
			,strField2 = @Field2
			,strField3 = @Field3
			,strField4 = @Field4
			,strField5 = @Field5
			,strField6 = @Field6
			,strField7 = @Field7
			,strField8 = @Field8
			,strField9 = @Field9
			,strField10 = @Field10
			,strField11 = @Field11
			,strField12 = @Field12
			,dteField13 = @Field13
			,dteField14 = @Field14
			,bitBookmark = @IsBookmark
			,strCNReasonCode = @CNReasonCode
		WHERE strOrdDocID = @DocumentId
	END
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateDocumentsEmailDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[UpdateDocumentsEmailDetails]    Script Date: 04-02-2020 06:39:00 AM ******/
CREATE PROCEDURE [dbo].[UpdateDocumentsEmailDetails]  
@DocNumber AS NVARCHAR(50),  
@Email nvarchar(100),  
@NewsSubscribed bit,  
@DocumentType AS TINYINT  
AS  
BEGIN  
    IF @DocumentType =  0  
      UPDATE tblInvoiceDoc SET bitEmailed = 1,strEmail = @Email,bitNewsSubscribed = @NewsSubscribed  
   WHERE strInvDocID = @DocNumber  
 ELSE  
    UPDATE tblOrderDoc SET bitEmailed = 1,strEmail = @Email,bitNewsSubscribed = @NewsSubscribed  
     WHERE strOrdDocID = @DocNumber  
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateEmailBatch]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvoiceOrderDetailsForEmail] ***********/

/*********** Start [UpdateEmailBatch] ***********/
CREATE PROCEDURE [dbo].[UpdateEmailBatch]
(
	@EmailBatchIDParameter AS InvoiceOrderDetailsTableType READONLY,
	@DocumentType AS TINYINT
)
AS
BEGIN
	IF @DocumentType = 	0
		UPDATE  tblInvoiceDoc
        SET     bitEmailed = 1
        FROM    @EmailBatchIDParameter t
        WHERE   tblInvoiceDoc.strInvDocID = t.InvDocID
	ELSE
		UPDATE  tblOrderDoc
        SET     bitEmailed = 1
        FROM    @EmailBatchIDParameter t
        WHERE   tblOrderDoc.strOrdDocID = t.InvDocID
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateForecastingInformation]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[GetWarehouseData] ***********/

/*********** Start [dbo].[UpdateForecastingInformation] ***********/
CREATE PROCEDURE [dbo].[UpdateForecastingInformation]
    (
      @tblForecastingInfo CommonTableType READONLY		
    )
AS
    BEGIN
        DECLARE @IsCompany AS BIT = ( SELECT TOP 1 CONVERT(BIT, ISNULL(COL30,0))
                                      FROM      @tblForecastingInfo
                                    ); 
        IF ( @IsCompany = 1 )
            BEGIN
		
                UPDATE  tblInv
                SET     intReorderQty = (CASE WHEN CONVERT(INT,ISNULL(CONVERT(MONEY,ISNULL(FI.COL28,0)),0)) > 0 THEN  CONVERT(INT,ISNULL(CONVERT(MONEY,ISNULL(FI.COL28,0)),0)) ELSE  CONVERT(INT,ISNULL(CONVERT(MONEY,ISNULL(FI.COL04,0)),0)) END),
                        decNewDailySales = ROUND(CONVERT(MONEY,ISNULL(FI.COL06,0)),0),
                        decOldMinLevel = ROUND(CONVERT(MONEY,ISNULL(FI.COL26,0)),0) ,
                        decMinimumLevel = ROUND(CONVERT(MONEY,ISNULL(FI.COL26,0)),0) ,
                        decOldMaxLevel = ROUND(CONVERT(MONEY,ISNULL(FI.COL28,0)),0) ,
                        decMaxLevel = ROUND(CONVERT(MONEY,ISNULL(FI.COL28,0)),0) ,
                        decDaysSalesinStock = CONVERT(MONEY,ISNULL(FI.COL15,0))
                FROM    dbo.tblInv
                        INNER JOIN @tblForecastingInfo FI ON CONVERT(NVARCHAR(100),ISNULL(FI.COL02,'')) = strPartNumber
                WHERE   CONVERT(BIT,ISNULL(FI.COL01,0)) = 1
                        AND  CONVERT(INT,ISNULL(CONVERT(MONEY,ISNULL(FI.COL28,0)),0)) <>  CONVERT(INT,ISNULL(CONVERT(MONEY,ISNULL(FI.COL17,0)),0));
            END
        ELSE
            BEGIN
                UPDATE  tblInv
                SET     decDaysSalesinStock = CONVERT(MONEY,ISNULL(FI.COL15,0))
                FROM    dbo.tblInv
                        INNER JOIN @tblForecastingInfo FI ON CONVERT(NVARCHAR(100),ISNULL(FI.COL02,'')) = strPartNumber
                WHERE   CONVERT(BIT,ISNULL(FI.COL01,0)) = 1
                        AND  CONVERT(INT,ISNULL(CONVERT(MONEY,ISNULL(FI.COL28,0)),0)) <>  CONVERT(INT,ISNULL(CONVERT(MONEY,ISNULL(FI.COL17,0)),0));

                UPDATE  tblInvExt
                SET     intReorderPoint =  CONVERT(INT,ISNULL(CONVERT(MONEY,ISNULL(FI.COL24,0)),0)) ,
                        decMaxLevel = ROUND(CONVERT(MONEY,ISNULL(FI.COL28,0)),0) ,
                        decMinimumLevel = ROUND(CONVERT(MONEY,ISNULL(FI.COL26,0)),0)
                FROM    tblInvExt
                        INNER JOIN @tblForecastingInfo FI ON CONVERT(NVARCHAR(100),ISNULL(FI.COL02,'')) = strPartNumber
                WHERE   strLocName = CONVERT(NVARCHAR(20),ISNULL(FI.COL31,''));
				
            END
    END

GO
/****** Object:  StoredProcedure [dbo].[UpdateGRVLastIDs]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-----------------------------------------------------------------
Create Procedure [dbo].[UpdateGRVLastIDs]
(
@NextGRNumber bigint 
)
As
BEGIN
UPDATE tblLastIDs SET lngGVNumber = @NextGRNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateGRVOrderDocDetails]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateGRVOrderDocDetails]    
(    
 @GRVDocDTData AS GRVDocDTTableType_Update READONLY,    
 @GRVDocDTSerialData AS GRVDocDTSerialTableType_Update READONLY  
)    
AS    
BEGIN    
    
 DECLARE @OrdPGDocID NVARCHAR(MAX)   
 DECLARE @LineNo INT    
 DECLARE @PartNumber NVARCHAR(MAX)      
 DECLARE @PutAwayQty INT       
 DECLARE @SerialNumber NVARCHAR(MAX)  
 DECLARE @GRVDocID NVARCHAR(MAX) = NULL   
    
 IF EXISTS (SELECT * FROM @GRVDocDTData)    
 BEGIN   
  SET @GRVDocID = (Select Top 1 OrdPGDocID from @GRVDocDTData)  
  
  DECLARE CURSOR1 CURSOR      
  KEYSET scroll      
  FOR      
  SELECT  OrdPGDocID ,[LineNo],PartNumber,PutAwayQty FROM @GRVDocDTData      
  OPEN CURSOR1      
  IF @@CURSOR_ROWS > 0      
  BEGIN       
   FETCH NEXT FROM CURSOR1 INTO  @OrdPGDocID,@LineNo,@PartNumber,@PutAwayQty  
   WHILE @@FETCH_STATUS = 0      
   BEGIN     
       
    UPDATE tblOrderDocPGDT  
    SET decPutAwayQty = decPutAwayQty + @PutAwayQty  
    WHERE strOrdPGDocID = @OrdPGDocID AND strPartNumber = @PartNumber AND intLineNo = @LineNo    
         
    FETCH NEXT FROM CURSOR1 INTO  @OrdPGDocID,@LineNo,@PartNumber,@PutAwayQty  
       
   END      
   CLOSE CURSOR1      
   DEALLOCATE CURSOR1      
  END    
 END    
  
 IF EXISTS (SELECT * FROM @GRVDocDTSerialData)    
 BEGIN   
    
  DECLARE CURSOR1 CURSOR      
  KEYSET scroll      
  FOR      
  SELECT  OrdPGDocID ,[LineNo],SerialNumber,PutAwayQty FROM @GRVDocDTSerialData      
  OPEN CURSOR1      
  IF @@CURSOR_ROWS > 0      
  BEGIN       
   FETCH NEXT FROM CURSOR1 INTO  @OrdPGDocID,@LineNo,@SerialNumber,@PutAwayQty  
   WHILE @@FETCH_STATUS = 0      
   BEGIN    
       
    UPDATE tblOrderDocPGDTSerial  
    SET decPutAwayQty = decPutAwayQty + @PutAwayQty  
    WHERE strOrdPGDocID = @OrdPGDocID AND strSerialNumber = @SerialNumber AND intLineNo = @LineNo    
         
    FETCH NEXT FROM CURSOR1 INTO  @OrdPGDocID,@LineNo,@SerialNumber,@PutAwayQty  
       
   END      
   CLOSE CURSOR1      
   DEALLOCATE CURSOR1      
  END    
 END    
      
 IF NOT EXISTS (SELECT * FROM tblOrderDocPGDT WHERE strOrdPGDocID = @GRVDocID AND decBuyQty <> decPutAwayQty)  
 BEGIN  
  UPDATE tblOrderDocPG  
  SET bitPutAwayCompleted = 1  
  WHERE strOrdPGDocID = @GRVDocID  
 END  
END 
GO
/****** Object:  StoredProcedure [dbo].[UpdateHistory]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateHistory]
AS
UPDATE tblHistoryOn SET blnHistoryOn = 0
GO
/****** Object:  StoredProcedure [dbo].[UpdateIDs]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateIDs]
@NextQuoteNumber AS BIGINT= NULL,
@NextCRNumber AS BIGINT= NULL,
@NextSONumber AS BIGINT= NULL,
@IsQuote AS BIT= NULL,
@IsNextCRNumber AS BIT= NULL,
@IsQuoteToSo AS BIT= NULL,
@IsSalesFreehandQuotes AS BIT= NULL,
@IsSalesOrder AS BIT= NULL,
@Date AS DATETIME= NULL,
@User AS NVARCHAR(20)= NULL,
@ExistingQuoteNumber AS NVARCHAR(50)= NULL,
@SalesFQDocNumber AS NVARCHAR(50)= NULL,
@IsLayby AS BIT= NULL,
@NextLBNumber AS BIGINT= NULL,
@NextPONumber AS BIGINT = NULL,
@NextRQNumber AS BIGINT = NULL
AS

BEGIN
	BEGIN TRY	
			IF(@IsQuote =1)
			Begin
				UPDATE tblLastIDs SET lngQuoteNumber = @NextQuoteNumber
			End
			IF(@IsNextCRNumber =1)
			Begin
				UPDATE tblLastIDs SET lngCRNumber = @NextCRNumber
			End
			IF(@IsLayby =1)
			Begin
				UPDATE tblLastIDs SET lngLBNumber = @NextLBNumber
			End
			IF(@IsSalesOrder = 1)
			Begin
				UPDATE tblLastIDs SET lngSONumber = @NextSONumber	
			End
	END TRY
	BEGIN CATCH
	END CATCH

	BEGIN TRY
		IF(@IsQuoteToSo=1)
			UPDATE tblOrderDoc SET dteSystemDate = @Date, strUserName = @User, bitCleared = 1 WHERE strOrdDocID = @ExistingQuoteNumber
		END TRY
	BEGIN CATCH
			SELECT ERROR_MESSAGE() AS ErrorMessage 
			GOTO lblEnd
	END CATCH
	IF(@IsSalesFreehandQuotes =1)
	begin
		UPDATE tblOrderDocQ SET bitCleared = 1 WHERE strOrdDocID = @SalesFQDocNumber
	End


	IF @NextPONumber IS NOT NULL AND @NextPONumber > 0
	BEGIN
		UPDATE tblLastIDs SET lngPONumber = @NextPONumber
	END

	IF @NextRQNumber IS NOT NULL AND @NextRQNumber > 0
	BEGIN
		UPDATE tblLastIDs SET lngRQNumber = @NextRQNumber
	END

	SELECT 'Success'
lblEnd:

END
GO
/****** Object:  StoredProcedure [dbo].[UpdateInvCostData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[UpdateBarcode] ***********/

/*********** Start [dbo].[UpdateInvCostData] ***********/
CREATE PROCEDURE [dbo].[UpdateInvCostData] (@tblCostUpdater [InvCostUpdaterTableType] READONLY)
AS
BEGIN
	--UPDATE tblInv SET decCostOnPO = CU.decCostOnPO  , dteLastUpdated = GetDate() WHERE strPartNumber = @SQPart  
	UPDATE Inv
	SET Inv.decCostOnPO = CU.decCostOnPO
		,dteLastUpdated = GetDate()
	FROM dbo.tblInv Inv
	INNER JOIN @tblCostUpdater CU ON CU.strPartNumber = Inv.strPartNumber
END

	SELECT * FROM dbo.tblInv
GO
/****** Object:  StoredProcedure [dbo].[UpdateInventoryServiceSales]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvLocSecData] ***********/
/*********** Start [UpdateInventoryServiceSales] ***********/
CREATE PROCEDURE [dbo].[UpdateInventoryServiceSales]
(
	@DateLastSale SMALLDATETIME,
	@SumAmtSoldYTD DECIMAL,
	@SumQtySoldYTD DECIMAL,
	@SumNumTransYTD INT,
	@LastUpdated DATETIME,
	@PartNumber VARCHAR(50)
)
AS
BEGIN
	UPDATE tblInv
	SET dteDateLastSale = @DateLastSale
		,decSumAmtSoldYTD = @SumAmtSoldYTD
		,decSumQtySoldYTD = @SumQtySoldYTD
		,intSumNumTransYTD = @SumNumTransYTD
		,dteLastUpdated = @LastUpdated
	WHERE strPartNumber = @PartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateInventoryTracking]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------
Create PROCEDURE [dbo].[UpdateInventoryTracking]
	@Source varchar(50)
AS
BEGIN	
	UPDATE tblInvTracking SET intModule = 8 WHERE intModule = 2 AND strSource = @Source
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateInvExt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[UpdateInvExt]    Script Date: 16/08/2019 13:50:55 ******/
CREATE procedure [dbo].[UpdateInvExt]
(
@PartNumber nvarchar(100),
@LocName nvarchar(50),
@Avail money,
@OnHand money,
@Value money
)
as

UPDATE tblInvExt WITH (updlock) SET decAvail = @Avail, decOnHand = @OnHand ,decValue = @Value 
 WHERE strPartNumber = @PartNumber AND strLocName = @LocName

GO
/****** Object:  StoredProcedure [dbo].[UpdateInvExtBin]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [PickTicketsDTBin_Save] ***********/

/*********** Start [UpdateInvExtBin] ***********/
CREATE PROCEDURE [dbo].[UpdateInvExtBin] 
( 
	@Avail decimal,
	@OH decimal,
	@PartNumber NVARCHAR(50),
	@Location NVARCHAR(80), 
	@BinId NVARCHAR(50),
	@IsRemovingBin bit
)
AS
BEGIN
	if(@IsRemovingBin <> 1)
	BEGIN
		UPDATE tblInvExtBin
		SET 
			decAvail = decAvail + @Avail
		   ,decOnHand = decOnHand + @OH
		WHERE
			strPartNumber = @PartNumber
			AND strLocName = @Location
			AND lngBinID = @BinId
	END
	ELSE
	BEGIN
		UPDATE tblInvExtBin 
		SET 
			decAvail = decAvail - @Avail, 
			decOnHand = decOnHand - @OH 
		WHERE 
			strPartNumber = @PartNumber 
			AND strLocName = @Location 
			AND lngBinId = @BinId
	END
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateInvExtSerialForReturnWS]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************End  [KillSleepingConnection] *****************************/ 

/*****************Start  [UpdateInvExtSerialForReturnWS] *****************************/

CREATE PROCEDURE [dbo].[UpdateInvExtSerialForReturnWS]
(
	@InvSerialExtUpdateData InvSerialExtTableType READONLY
)
AS
BEGIN
	UPDATE 
		tblInvSerialExt
	SET 
		--strLocName = inSerialExt.LocName
		decQty = inSerialExt.Qty
		,intStatus = inSerialExt.[Status]
		,strDocID = inSerialExt.DocID
		,dteUpdatedDate = inSerialExt.UpdatedDate
	FROM
		@InvSerialExtUpdateData inSerialExt
	WHERE 
		strPartNumber = inSerialExt.PartNumber
		AND strSerialNumber = inSerialExt.SerialNumber
		AND strLocName = inSerialExt.LocName
		AND lngBinID=inSerialExt.BinID
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateInvFromInterestBilling]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateInvFromInterestBilling] (
	@strDOCID NVARCHAR(100)
	,@bitEmailed BIT = 0
	,@bitPrinted BIT = 0
	,@dteSystemDate SMALLDATETIME = getdate
	,@dteIntFromDate SMALLDATETIME = NULL
	,@dteIntRunDate SMALLDATETIME = getdate
	,@strCustName NVARCHAR(50) = ''
	,@strUserName NVARCHAR(20) = ''
	,@decIntRate MONEY
	,@decIntSubTotal MONEY
	,@decIntVAT MONEY
	,@decIntTotal MONEY
	,@strTaxCode NVARCHAR(2) = ''
	,@strPartNumber NVARCHAR(50) = ''
	,@bitInvDueDate BIT = 0
	,@bitCompoundedInt BIT = 0
	,@bitCustom BIT = 0
	,@tblInterestItem CommonTableType readonly
	)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	IF @bitEmailed = 1
	BEGIN
		UPDATE tblInvoiceDoc
		SET bitEmailed = 1
		WHERE strInvDocID = @strDOCID
	END

	IF @bitPrinted = 1
	BEGIN
		UPDATE tblInvoiceDoc
		SET bitPrinted = 1
		WHERE strInvDocID = @strDOCID
	END
	
	UPDATE tblInvoiceDoc 
	SET bitNoPODRequired = 1 
	WHERE strInvDocID = @strDOCID

	DECLARE @lngIntBillTrackID BIGINT = 0

	SET @lngIntBillTrackID = (
			SELECT ISNULL(MAX(lngIntBillTrackID), 0) + 1
			FROM tblIntBillTracking
			)

	INSERT INTO [dbo].[tblIntBillTracking] (
		lngIntBillTrackID
		,dteSystemDate
		,dteIntFromDate
		,dteIntRunDate
		,strCustName
		,strUserName
		,decIntRate
		,decIntSubTotal
		,decIntVAT
		,decIntTotal
		,strTaxCode
		,strPartNumber
		,bitInvDueDate
		,bitCompoundedInt
		,bitCustom
		)
	VALUES (
		@lngIntBillTrackID
		,CONVERT(SMALLDATETIME, isnull(@dteSystemDate, getdate()))
		,CONVERT(SMALLDATETIME, isnull(@dteIntFromDate, getdate()))
		,CONVERT(SMALLDATETIME, isnull(@dteIntRunDate, getdate()))
		,CONVERT(NVARCHAR(50), isnull(@strCustName, ''))
		,CONVERT(NVARCHAR(20), isnull(@strUserName, ''))
		,CONVERT(MONEY, @decIntRate)
		,CONVERT(MONEY, @decIntSubTotal)
		,CONVERT(MONEY, @decIntVAT)
		,CONVERT(MONEY, @decIntTotal)
		,CONVERT(NVARCHAR(2), isnull(@strTaxCode, ''))
		,CONVERT(NVARCHAR(50), isnull(@strPartNumber, ''))
		,CONVERT(BIT, isnull(@bitInvDueDate, 0))
		,CONVERT(BIT, isnull(@bitCompoundedInt, 0))
		,CONVERT(BIT, isnull(@bitCustom, 0))
		)

	DECLARE @InterestItem AS TABLE (
		ID INT identity(1, 1)
		,RunDate SMALLDATETIME
		,DTID BIGINT
		,lngIntBillTrackID BIGINT
		,dteIntFromDate SMALLDATETIME
		,strDocNumber NVARCHAR(200)
		,decDocAmount MONEY
		,intIntDays INT
		,decIntAmtExcl MONEY
		,decIntAmtTax MONEY
		,decIntAmtIncl MONEY
		)

	INSERT INTO @InterestItem (
		RunDate
		,DTID
		,lngIntBillTrackID
		,dteIntFromDate
		,strDocNumber
		,decDocAmount
		,intIntDays
		,decIntAmtExcl
		,decIntAmtTax
		,decIntAmtIncl
		)
	SELECT CONVERT(SMALLDATETIME, isnull(COL10, getdate()))
		,CONVERT(BIGINT, COL09)
		,@lngIntBillTrackID
		,CONVERT(SMALLDATETIME, isnull(COL02, getdate()))
		,CONVERT(NVARCHAR(200), isnull(COL03, ''))
		,CONVERT(MONEY, COL04)
		,CONVERT(INT, COL05)
		,CONVERT(MONEY, COL06)
		,CONVERT(MONEY, COL07)
		,CONVERT(MONEY, COL08)
	FROM @tblInterestItem

	DECLARE @intMinID AS INT = (
			SELECT min(ID)
			FROM @InterestItem
			)
	DECLARE @intMaxID AS INT = (
			SELECT max(ID)
			FROM @InterestItem
			)
	DECLARE @RunDate SMALLDATETIME
	DECLARE @DTID BIGINT
	DECLARE @lngIntBillTrackID1 BIGINT
	DECLARE @dteIntFromDate1 SMALLDATETIME
	DECLARE @strDocNumber NVARCHAR(200)
	DECLARE @decDocAmount MONEY
	DECLARE @intIntDays INT
	DECLARE @decIntAmtExcl MONEY
	DECLARE @decIntAmtTax MONEY
	DECLARE @decIntAmtIncl MONEY
	DECLARE @decIntAmtExclSum MONEY
	DECLARE @decIntAmtTaxSum MONEY
	DECLARE @decIntAmtInclSum MONEY
	
	set @decIntAmtExclSum =0
	set @decIntAmtTaxSum =0
	set @decIntAmtInclSum =0

	WHILE 1 = 1
	BEGIN
	
		SELECT @RunDate = RunDate
			,@DTID = DTID
			,@lngIntBillTrackID1 = lngIntBillTrackID
			,@dteIntFromDate1 = dteIntFromDate
			,@strDocNumber = strDocNumber
			,@decDocAmount = decDocAmount
			,@intIntDays = intIntDays
			,@decIntAmtExcl = decIntAmtExcl
			,@decIntAmtTax = decIntAmtTax
			,@decIntAmtIncl = decIntAmtIncl
		FROM @InterestItem
		WHERE ID = @intMinID

		

		UPDATE tblCustTransDT
		SET dteIntDate = @RunDate
		WHERE lngID = @DTID

		INSERT INTO tblIntBillTrackingDT (
			lngIntBillTrackID
			,dteIntFromDate
			,strDocNumber
			,decDocAmount
			,intIntDays
			,decIntAmtExcl
			,decIntAmtTax
			,decIntAmtIncl
			)
		VALUES (
			@lngIntBillTrackID1
			,@dteIntFromDate1
			,@strDocNumber
			,@decDocAmount
			,@intIntDays
			,@decIntAmtExcl
			,@decIntAmtTax
			,@decIntAmtIncl
			)

		SET @decIntAmtExclSum += @decIntAmtExcl
		SET @decIntAmtTaxSum += @decIntAmtTax
		SET @decIntAmtInclSum += @decIntAmtIncl

		IF @intMinID = @intMaxID
			BREAK

		SET @intMinID += 1
	END

	UPDATE tblIntBillTracking
	SET decIntSubTotal = @decIntAmtExclSum
		,decIntVAT = @decIntAmtTaxSum
		,decIntTotal = @decIntAmtInclSum
	WHERE lngIntBillTrackID = @lngIntBillTrackID
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateInvoiceDocDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateInvoiceDocDT]
(
	@strInvDocID nvarchar(500),
	@intLineNo int,
	@strPartDesc nvarchar(500)
)
AS
UPDATE tblInvoiceDocDT SET strPartDesc = @strPartDesc WHERE strInvDocID = @strInvDocID AND intLineNo = @intLineNo
GO
/****** Object:  StoredProcedure [dbo].[UpdateInvoiceDocNoPODRequired]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/******************* End [GetInvLocBinSecData] ********************/

/********* Start [UpdateInvoiceDocNoPODRequired] **********/


---------------------------------

Create PROCEDURE [dbo].[UpdateInvoiceDocNoPODRequired]
(
@ContDocID NVARCHAR(50)
)
	
AS
BEGIN
	UPDATE tblInvoiceDoc SET bitNoPODRequired = 1 WHERE strInvDocID = @ContDocID	
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateInvoiceDocPDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateInvoiceDocPDT]
(
	@strInvDocID nvarchar(500),
	@intLineNo int,
	@strPartDesc nvarchar(500)
)
AS
UPDATE tblInvoiceDocPDT SET strPartDesc = @strPartDesc WHERE strInvPDocID = @strInvDocID AND intLineNo = @intLineNo
GO
/****** Object:  StoredProcedure [dbo].[UpdateInvoiceDocWithCloseJobJournalID]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetRepairAccountForInternalAsset] ***********/

/*********** Start [UpdateInvoiceDocWithCloseJobJournalID] ***********/
CREATE PROCEDURE [dbo].[UpdateInvoiceDocWithCloseJobJournalID]
(
  @DocNumber NVARCHAR(50),
  @JournalIDFromCloseJob bigint	
)
AS
BEGIN
	Update tblInvoiceDoc set lngJourID = @JournalIDFromCloseJob where strInvDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateInvoiceLastIds]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[UpdateInvoiceLastIds]    Script Date: 16/08/2019 13:50:55 ******/
CREATE PROCEDURE [dbo].[UpdateInvoiceLastIds]
(
@NextNumber BIGINT, 
@IsNextCNNumber BIT
) 
AS 
  BEGIN  
        BEGIN 
            --Update our IDs table (only if NOT using reserved doc number) 
            IF @IsNextCNNumber = 1 
              BEGIN 
                  UPDATE tbllastids 
                  SET    lngcnnumber = @NextNumber 
              END 
            ELSE 
              BEGIN 
                  UPDATE tbllastids 
                  SET    lnginvnumber = @NextNumber 
              END 
        END
  END 
GO
/****** Object:  StoredProcedure [dbo].[UpdateInvoicePrint]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/************************End Cycle billing CREATE Procedure************************************/

/*****************Start [UpdateInvoicePrint]*****************************/

Create PROCEDURE [dbo].[UpdateInvoicePrint]
@DocNumber AS NVARCHAR(50)
AS
BEGIN
	UPDATE tblInvoiceDoc SET bitPrinted = 1 WHERE strInvDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateInvOpenItem]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateInvOpenItem]
(
	@decLastPPUnit decimal,
	@dteLastPurchase date,
	@dteLastSale date,
	@strPartNumber nvarchar(50)
)
AS
UPDATE tblInv SET decLastPPUnit = @decLastPPUnit, dteLastPurchase = @dteLastPurchase, dteDateLastSale = @dteLastSale WHERE strPartNumber = @strPartNumber
GO
/****** Object:  StoredProcedure [dbo].[UpdateInvTracing]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[UpdateInvTracing]    Script Date: 14/08/2019 14:57:01 ******/
CREATE PROCEDURE [dbo].[UpdateInvTracing]
(

	@InvDocID AS nvarchar(50),
	@InvTrackID AS bigint	
)
AS
BEGIN
	
	update tblInvTracking set strSource = @InvDocID where lngInvTrackID = @InvTrackID;
	update tblInvTrackingDT set strSource = @InvDocID where lngInvTrackID = @InvTrackID;

	declare @lngJornalId AS bigint = (SELECT TOP 1 lngJourID FROM tblInvoiceDoc WHERE strInvDocID = @InvDocID)

	IF(@lngJornalId > 0)
	BEGIN

	UPDATE tblJournal SET strSource = @InvDocID WHERE lngJourID = @lngJornalId
	UPDATE tblJournalEnt SET strComment = @InvDocID WHERE lngJourID = @lngJornalId
    
	END
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateJobDocument]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [dbo].[UpdateJobDocument] ***********/
CREATE PROCEDURE [dbo].[UpdateJobDocument]
(
	--@SystemDate smalldatetime,
	@UserName nvarchar(20),
	@SOReasonCode nvarchar(20),
	@DocNumber nvarchar(50)
)
AS
BEGIN
	UPDATE 
		tblWSProcessDoc 
	SET 
		SystemDate = GETDATE(), 
		UpdatedBy = @UserName, 
		UpdatedDate = GETDATE(),
		Cleared = 1,
		SOReasonCode = @SOReasonCode 
	WHERE ProcessDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UPDATEJournalEnt]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------------------------------------------------
create procedure [dbo].[UPDATEJournalEnt]
@lngJourID bigint
as
UPDATE tblJournalEnt SET decAllocatedAmtToDate = (decAmount - decAmountF) * -1, decUnAllocatedAmt = 0 WHERE lngJourID = @lngJourID

GO
/****** Object:  StoredProcedure [dbo].[UpdateLastIDs]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [ContractBillDTInsert] ***********/

/*********** Start [UpdateLastIDs] ***********/
CREATE PROCEDURE [dbo].[UpdateLastIDs]
@CBNumber BIGINT 
AS
BEGIN
	UPDATE tblLastIDs SET lngCBNumber = @CBNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateLastIdsForLayby]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateLastIdsForLayby]
	@SQNum BigInt
AS
BEGIN
	  BEGIN
	   UPDATE tblLastIDs SET lngLBNumber = @SQNum
	   END
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateLastIdsForOrderAndQuote]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[UpdateLastIdsForOrderAndQuote]    Script Date: 10-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[UpdateLastIdsForOrderAndQuote]
	@SQNum BigInt,
	@IsSONumber bit
AS
BEGIN
  IF(@IsSONumber = 1)
	  BEGIN
	   UPDATE tblLastIDs SET lngSONumber = @SQNum
	   END
   ELSE
	   BEGIN
	   UPDATE tblLastIDs SET lngQuoteNumber = @SQNum
	   END
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateLastIDsForTerminal]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateLastIDsForTerminal]
@NextInvNumber AS BIGINT,
@NextQuoteNumber AS BIGINT,
@NextCNNumber AS BIGINT,
@NextSONumber AS BIGINT,
@NextLBNumber AS BIGINT,
@NextRCNumber AS BIGINT = 0
AS
BEGIN
	UPDATE tblLastIDs SET lngInvNumber = @NextInvNumber
    	,lngQuoteNumber = @NextQuoteNumber
	,lngCNNumber = @NextCNNumber
	,lngSONumber = @NextSONumber 
	,lngLBNumber = @NextLBNumber
	,lngRCNumber = @NextRCNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateLastMSNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateLastMSNumber]
(
	@MSNumber AS BIGINT
)
AS
BEGIN
	UPDATE tblLastIDs SET lngMSNumber = @MSNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateLastSHNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------------------------------------'
CREATE PROCEDURE [dbo].[UpdateLastSHNumber]
(
	@SHNumber AS BIGINT
)
AS
BEGIN
	UPDATE tblLastIDs SET lngSHNumber = @SHNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateMobileUserToken]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[UpdateMobileUserToken]    Script Date: 2020-05-16 ******/
CREATE PROCEDURE [dbo].[UpdateMobileUserToken]
@MobileUserToken VARCHAR(MAX),
@UserName VARCHAR(50),
@DeviceType VARCHAR(50) = 'Android'
AS 
BEGIN 
   UPDATE tblUsers SET strMobileUserToken = @MobileUserToken, strDeviceType = @DeviceType
                   WHERE strUserName = @UserName
END
GO
/****** Object:  StoredProcedure [dbo].[UpdatenOnCustWithTransAndLastID]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdatenOnCustWithTransAndLastID] (
	@NextRCNumber BIGINT
	,@CustUpdateForReceiptEntityData CustUpdateForReceiptEntityDataTableType Readonly
	)
AS
BEGIN
	DECLARE @CustName VARCHAR(50)
	DECLARE @CurrentYrStarts DATETIME

	DECLARE db_cursor CURSOR
	FOR
	SELECT CustName
		,CurrentYrStarts
	FROM @CustUpdateForReceiptEntityData

	OPEN db_cursor

	FETCH NEXT
	FROM db_cursor
	INTO @CustName
		,@CurrentYrStarts

	WHILE @@FETCH_STATUS = 0
	BEGIN
		--SET @fileName = @path + @name + '_' + @fileDate + '.BAK'   
		--BACKUP DATABASE @name TO DISK = @fileName   
		UPDATE tblCustomers
		SET decBalDue = (
				SELECT SUM(decAmount)
				FROM (
					SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) AS decAmount
					FROM tblCustTrans
					INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
					WHERE tblCustTrans.strCustName = tblCustomers.strCustName
						AND tblCustTransDT.bitReversed = 0
						AND (
							tblCustTrans.strOrdDocID IS NULL
							OR (
								tblCustTrans.strInvDocID IS NOT NULL
								AND tblCustTrans.strOrdDocID IS NOT NULL
								)
							OR (
								tblCustTrans.strOrdDocID IS NOT NULL
								AND tblCustTransDT.lngCustPayID IS NOT NULL
								)
							)
					) AS decAmount
				)
			,decYTDPurch = (
				SELECT ISNULL(SUM(decTotal), 0)
				FROM tblInvoiceDoc
				WHERE strCustName = tblCustomers.strCustName
					AND bitHistoryTrans = 0
					AND dteJournalDate >= @CurrentYrStarts
				)
			,decBalDueF = (
				SELECT SUM(decAmountF)
				FROM (
					SELECT ISNULL(SUM(tblCustTransDT.decAmountF), 0) AS decAmountF
					FROM tblCustTrans
					INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
					WHERE tblCustTrans.strCustName = tblCustomers.strCustName
						AND tblCustTransDT.bitReversed = 0
						AND (
							tblCustTrans.strOrdDocID IS NULL
							OR (
								tblCustTrans.strInvDocID IS NOT NULL
								AND tblCustTrans.strOrdDocID IS NOT NULL
								)
							OR (
								tblCustTrans.strOrdDocID IS NOT NULL
								AND tblCustTransDT.lngCustPayID IS NOT NULL
								)
							)
					) AS decAmountF
				)
			,decYTDPurchF = (
				SELECT ISNULL(SUM(decTotalF), 0)
				FROM tblInvoiceDoc
				WHERE strCustName = tblCustomers.strCustName
					AND bitHistoryTrans = 0
					AND dteJournalDate >= @CurrentYrStarts
				)
			,dteUpdated = GetDate()
		WHERE strCustName = @CustName

		FETCH NEXT
		FROM db_cursor
		INTO @CustName
			,@CurrentYrStarts
	END

	CLOSE db_cursor

	DEALLOCATE db_cursor

	UPDATE tblCustTrans
	SET bitSettled = 1
	WHERE bitSettled = 0
		AND lngCustTrID IN (
			SELECT lngCustTrID
			FROM tblCustTransDT
			WHERE bitReversed = 0
			GROUP BY lngCustTrID
			HAVING SUM(decAmount) = 0
				AND SUM(decAmountF) = 0
			)

	UPDATE tblCustTrans
	SET bitSettled = 0
	WHERE bitSettled = 1
		AND lngCustTrID IN (
			SELECT lngCustTrID
			FROM tblCustTransDT
			WHERE bitReversed = 0
			GROUP BY lngCustTrID
			HAVING SUM(decAmount) <> 0
				OR SUM(decAmountF) <> 0
			)

	UPDATE tblLastIDs
	SET lngRCNumber = @NextRCNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateOderDocCleared]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [CustTransDTUpdate] ***********/

/*********** Start [UpdateOderDocCleared] ***********/
CREATE PROCEDURE [dbo].[UpdateOderDocCleared]
(
	@Date SMALLDATETIME,
	@User VARCHAR(20),
	@DocNumber VARCHAR(50)	
)
AS
BEGIN
	UPDATE tblOrderDoc
	SET dteSystemDate = @Date
		,strUserName = @User
		,bitCleared = 1
	WHERE strOrdDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateOderDocDTRemaining]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateOderDocCleared] ***********/

/*********** Start [UpdateOderDocDTRemaining] ***********/
CREATE PROCEDURE [dbo].[UpdateOderDocDTRemaining]
(
	@DocNumber VARCHAR(50)	
)
AS
BEGIN
	UPDATE tblOrderDocDT
	SET decQtyRemaining = 0
		,decStockQtyRemain = 0
	WHERE strOrdDocID = @DocNumber
		AND bitDelCost = 1
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateOderDocDTRemainingForDA]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateOderDocDTRemainingForDA]
    (
      @DocNumber AS NVARCHAR(50) ,
      @RecalcSOStockRemaining AS BIT
    )
AS
    BEGIN

        UPDATE  tblOrderDocDT
        SET     decQtyRemaining = 0 ,
                decStockQtyRemain = 0
        WHERE   strOrdDocID = @DocNumber
                AND bitDelCost = 1;

        IF @RecalcSOStockRemaining = 1
            BEGIN
                UPDATE  tblOrderDocDT
                SET     decQtyRemaining = Z.decQtyRemaining ,
                        decStockQtyRemain = Z.decStockQtyRemain
                FROM    ( SELECT    tblOrderDocDT.strPartNumber ,
                                    tblOrderDocDT.strLocation ,
                                    tblOrderDocDT.decQty
                                    - ISNULL(SUM(tblOrderDocDADT.decQty), 0) AS decQtyRemaining ,
                                    tblOrderDocDT.decStockQty
                                    - ISNULL(SUM(tblOrderDocDADT.decStockQty),
                                             0) AS decStockQtyRemain
                          FROM      tblOrderDocDT
                                    INNER JOIN tblOrderDocDA ON tblOrderDocDT.strOrdDocID = tblOrderDocDA.strOrdDocID
                                    LEFT JOIN tblOrderDocDADT ON tblOrderDocDA.strOrdDADocID = tblOrderDocDADT.strOrdDADocID
                                                              AND tblOrderDocDT.strPartNumber = tblOrderDocDADT.strPartNumber
                                                              AND tblOrderDocDT.strLocation = tblOrderDocDADT.strLocation
                          WHERE     tblOrderDocDA.bitFromSO = 1
                                    AND tblOrderDocDT.strOrdDocID = @DocNumber
                          GROUP BY  tblOrderDocDT.strPartNumber ,
                                    tblOrderDocDT.strLocation ,
                                    tblOrderDocDT.decQty ,
                                    tblOrderDocDT.decStockQty ,
                                    tblOrderDocDT.decQtyRemaining ,
                                    tblOrderDocDT.decStockQtyRemain
                          HAVING    ( tblOrderDocDT.decQtyRemaining <> ( tblOrderDocDT.decQty
                                                              - ISNULL(SUM(tblOrderDocDADT.decQty),
                                                              0) )
                                      OR tblOrderDocDT.decStockQtyRemain <> ( tblOrderDocDT.decStockQty
                                                              - ISNULL(SUM(tblOrderDocDADT.decStockQty),
                                                              0) )
                                    )
                        ) Z
                WHERE   tblOrderDocDT.strOrdDocID = @DocNumber
                        AND tblOrderDocDT.strPartNumber = Z.strPartNumber
                        AND tblOrderDocDT.strLocation = Z.strLocation;
            END
    END

GO
/****** Object:  StoredProcedure [dbo].[UpdateOfflineChangeUserDTSyncStatus]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[UpdateOfflineChangeUserDTSyncStatus]    Script Date: 24-06-2020 22:59:00 ******/
CREATE PROCEDURE [dbo].[UpdateOfflineChangeUserDTSyncStatus] @Status INT
	,@Id INT
	,@ErrorMessage [nvarchar] (max)
AS
BEGIN
	UPDATE tblOfflineChangeUserDT
	SET IsSync = @Status
		,ErrorMessage = @ErrorMessage
	WHERE Id = @Id
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateOfflineCustomerDTSyncStatus]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[UpdateOfflineCustomerDTSyncStatus]    Script Date: 06-01-2020 08:25:00 AM ******/
CREATE PROCEDURE [dbo].[UpdateOfflineCustomerDTSyncStatus] @Status INT
	,@Id INT
	,@ErrorMessage [nvarchar] (max)
AS
BEGIN
	UPDATE tblOfflineCustomerDT
	SET IsSync = @Status
		,ErrorMessage = @ErrorMessage
	WHERE Id = @Id
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateOfflineInvoiceDTSyncAttemptAndError]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateOfflineInvoiceDTSyncAttemptAndError]
   @Id int,
   @SyncError nvarchar(max) = null,
   @SyncErrorCode int =null,
   @SyncDocID nvarchar(100)=null,
   @SyncErrorType int =null,
   @RequiredAdminAction bit = null,
   @DisplayErrorMessage nvarchar(max) = null
AS
BEGIN
    UPDATE tblOfflineInvoiceDT SET SyncAttempt = (ISNULL(SyncAttempt,0) + 1) , 
    IsSync = 0  
    ,SyncError = @SyncError
	,SyncErrorCode = @SyncErrorCode
	,SyncDocID = @SyncDocID
	,SyncErrorType = @SyncErrorType
	,RequiredAdminAction = @RequiredAdminAction
	,DisplayErrorMessage=@DisplayErrorMessage
	 where Id = @Id 
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateOfflineInvoiceDTSyncStatus]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateOfflineInvoiceDTSyncStatus] 
    @Status int,
    @InvoiceId int
AS
BEGIN 

   Update tblOfflineInvoiceDT set IsSync = @Status
   ,SyncError = NULL
	,SyncErrorCode = NULL
	,SyncDocID = NULL
	,SyncErrorType = NULL
	,RequiredAdminAction = NULL
	,DisplayErrorMessage=NULL
    where Id = @InvoiceId

END
GO
/****** Object:  StoredProcedure [dbo].[UpdateOfflineOrderAndQuoteDTSyncAttemptAndError]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateOfflineOrderAndQuoteDTSyncAttemptAndError]
   @Id int,
   @SyncError nvarchar(max) = null,
   @SyncErrorCode int =null,
   @SyncDocID nvarchar(100)=null,
   @SyncErrorType int =null,
   @RequiredAdminAction bit = null,
   @DisplayErrorMessage nvarchar(max) = null
AS
BEGIN
    UPDATE tblOfflineOrderAndQuoteDT SET SyncAttempt = (ISNULL(SyncAttempt,0) + 1) , 
    IsSync = 0  
    ,SyncError = @SyncError
	,SyncErrorCode = @SyncErrorCode
	,SyncDocID = @SyncDocID
	,SyncErrorType = @SyncErrorType
	,RequiredAdminAction = @RequiredAdminAction
	,DisplayErrorMessage=@DisplayErrorMessage
	 where Id = @Id 
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateOfflineOrderAndQuoteDTSyncStatus]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateOfflineOrderAndQuoteDTSyncStatus] 
    @Status int,
    @Id int
AS
BEGIN 

   Update tblOfflineOrderAndQuoteDT set IsSync = @Status where Id = @Id

END
GO
/****** Object:  StoredProcedure [dbo].[UpdateOfflineReceiptsDTSyncStatus]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[UpdateOfflineReceiptsDTSyncStatus]    Script Date: 06-01-2020 08:25:00 AM ******/
CREATE PROCEDURE [dbo].[UpdateOfflineReceiptsDTSyncStatus] @Status INT
	,@Id INT
	,@ErrorMessage [nvarchar] (max)
AS
BEGIN
	UPDATE tblOfflineReceiptsDT
	SET IsSync = @Status
		,ErrorMessage = @ErrorMessage
	WHERE Id = @Id
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateOpenOrdersAndPickTickets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateQuoteAsRemoved] ***********/

/*********** Start [UpdateOpenOrdersAndPickTickets] ***********/
CREATE PROCEDURE [dbo].[UpdateOpenOrdersAndPickTickets] (
	@CustomerNumber AS NVARCHAR(50)
	,@DocNumber AS NVARCHAR(50)
	)
AS
BEGIN
	BEGIN
		UPDATE tblCustomers
		SET decOpenOrders = ISNULL((
					SELECT SUM(ROUND((DTL.decLineTotExc / DTL.decQty) * DTL.decQtyRemaining, 2))
					FROM tblOrderDoc HDR
					INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
					WHERE HDR.strCustName = @CustomerNumber
						AND (HDR.bitCleared = 0)
						AND (HDR.intDocType = 1)
					), 0)
			,decOpenOrdersF = ISNULL((
					SELECT SUM(ROUND((DTL.decLineTotExcF / DTL.decQty) * DTL.decQtyRemaining, 2))
					FROM tblOrderDoc HDR
					INNER JOIN tblOrderDocDT DTL ON HDR.strOrdDocID = DTL.strOrdDocID
					WHERE HDR.strCustName = @CustomerNumber
						AND (HDR.bitCleared = 0)
						AND (HDR.intDocType = 1)
					), 0)
		WHERE strCustName = @CustomerNumber

		UPDATE tblPickTickets
		SET bitCleared = 1
		WHERE strOrdDocID = @DocNumber
	END
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateOpenOrdersAndPickTicketsForDA]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateOpenOrdersAndPickTicketsForDA]
    (
      @CustomerNumber AS NVARCHAR(50) ,
      @DocNumber AS NVARCHAR(50) ,
      @NextDANumber AS BIGINT
    )
AS
    BEGIN

        UPDATE  tblCustomers
        SET     decOpenOrders = ( SELECT    ISNULL(SUM(decTotal), 0)
                                            - ( SELECT  ISNULL(SUM(decTotal),
                                                              0)
                                                FROM    tblInvoiceDoc
                                                WHERE   strOrdDocID IN (
                                                        SELECT
                                                              strOrdDocID
                                                        FROM  tblOrderDoc
                                                        WHERE strCustName = @CustomerNumber
                                                              AND bitCleared = 0
                                                              AND intDocType = 1 )
                                              )
                                  FROM      tblOrderDoc
                                  WHERE     strCustName = @CustomerNumber
                                            AND bitCleared = 0
                                            AND intDocType = 1
                                ) ,
                decOpenOrdersF = ( SELECT   ISNULL(SUM(decTotalF), 0)
                                            - ( SELECT  ISNULL(SUM(decTotalF),
                                                              0)
                                                FROM    tblInvoiceDoc
                                                WHERE   strOrdDocID IN (
                                                        SELECT
                                                              strOrdDocID
                                                        FROM  tblOrderDoc
                                                        WHERE strCustName = @CustomerNumber
                                                              AND bitCleared = 0
                                                              AND intDocType = 1 )
                                              )
                                   FROM     tblOrderDoc
                                   WHERE    strCustName = @CustomerNumber
                                            AND bitCleared = 0
                                            AND intDocType = 1
                                 )
        WHERE   strCustName = @CustomerNumber;

        UPDATE  tblLastIDs
        SET     lngDANumber = @NextDANumber;

		

        UPDATE  tblPickTickets
        SET     bitDA = 1
        WHERE   strOrdDocID = @DocNumber;
    END
GO
/****** Object:  StoredProcedure [dbo].[UpdateOpenOrdersForWorkshop]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetWSWIPCompSerialDataForLoadDocConversion] ***********/

/*********** Start [UpdateOpenOrdersForWorkshop] ***********/
CREATE PROCEDURE [dbo].[UpdateOpenOrdersForWorkshop]
(
	@CustomerNumber AS NVARCHAR(50)
)
AS
BEGIN
	BEGIN
		--Workshop
		UPDATE tblCustomers
		SET decOpenOrders = (
				SELECT ISNULL(SUM(Total), 0) - (
						SELECT ISNULL(SUM(decTotal), 0)
						FROM tblInvoiceDoc
						INNER JOIN tblWSInvoiceDoc ON tblInvoiceDoc.strInvDocID = tblWSInvoiceDoc.strInvDocID
						WHERE tblWSInvoiceDoc.ProcessDocID IN (
								SELECT ProcessDocID
								FROM tblWSProcessDoc
								WHERE CustomerCode = @CustomerNumber
									AND Cleared = 0
									AND DocType = 2 --ProcessJob = 2
								)
						)
				FROM tblWSProcessDoc
				WHERE CustomerCode = @CustomerNumber
					AND Cleared = 0
					AND DocType = 2 --ProcessJob = 2
				)
			,decOpenOrdersF = (
				SELECT ISNULL(SUM(TotalF), 0) - (
						SELECT ISNULL(SUM(decTotalF), 0)
						FROM tblInvoiceDoc
						INNER JOIN tblWSInvoiceDoc ON tblInvoiceDoc.strInvDocID = tblWSInvoiceDoc.strInvDocID
						WHERE tblWSInvoiceDoc.ProcessDocID IN (
								SELECT ProcessDocID
								FROM tblWSProcessDoc
								WHERE CustomerCode = @CustomerNumber
									AND Cleared = 0
									AND DocType = 2 --ProcessJob = 2
								)
						)
				FROM tblWSProcessDoc
				WHERE CustomerCode = @CustomerNumber
					AND Cleared = 0
					AND DocType = 2  --ProcessJob = 2
				)
		WHERE strCustName = @CustomerNumber

	END
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateOrderDocDAPrint]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End Create/Drop [SerailNumberForDAReport_SubReportData] ***********/

/*********** Start Create/Drop [UpdateOrderDocDAPrint] ***********/

CREATE PROCEDURE [dbo].[UpdateOrderDocDAPrint]
@DocNumber AS NVARCHAR(50)
AS
BEGIN
	UPDATE tblOrderDocDA SET bitPrinted = 1 WHERE strOrdDADocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateOrderDocDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateOrderDocDT]
(
	@strInvDocID nvarchar(500),
	@intLineNo int,
	@strPartDesc nvarchar(500)
)
AS
UPDATE tblOrderDocDT SET strPartDesc = @strPartDesc WHERE strOrdDocID = @strInvDocID AND intLineNo = @intLineNo
GO
/****** Object:  StoredProcedure [dbo].[UpdateOrderDocForQuoteToInvoice]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[UpdateOrderDocForQuoteToInvoice]    Script Date: 09-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[UpdateOrderDocForQuoteToInvoice]  
	@Date AS DATETIME,
  @User AS NVARCHAR(20), 
  @DocNumber AS NVARCHAR(50)
AS
BEGIN
	UPDATE tblOrderDoc SET dteSystemDate = @Date, strUserName = @User, bitCleared = 1 WHERE strOrdDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateOrderDocPDT]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateOrderDocPDT]
(
	@strInvDocID nvarchar(500),
	@intLineNo int,
	@strPartDesc nvarchar(500)
)
AS
UPDATE tblOrderDocPDT SET strPartDesc = @strPartDesc WHERE strOrdPDocID = @strInvDocID AND intLineNo = @intLineNo
GO
/****** Object:  StoredProcedure [dbo].[UpdateOrderDocQ]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [NavigateQuotesByNumber] ***********/

/*********** Start [UpdateOrderDocQ] ***********/
CREATE PROCEDURE [dbo].[UpdateOrderDocQ]
(
	@UserName AS NVARCHAR(20),
	@DocNumber AS NVARCHAR (50),
	@IsApprove AS BIT
)
AS
BEGIN

IF(@IsApprove=1)
	BEGIN
	UPDATE tblOrderDocQ SET bitDeclined = 0, bitApproved = 1, strApprovedBy = @UserName, dteApprovedDate = GETDATE() WHERE strOrdDocID = @DocNumber	
	END
	
ELSE
	BEGIN
	UPDATE tblOrderDocQ SET bitDeclined = 1, bitApproved = 0, strApprovedBy = @UserName, dteApprovedDate = GETDATE() WHERE strOrdDocID = @DocNumber	
	END
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateOrderDocument]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetCustomerTransactionCount] ***********/

/*********** Start [UpdateOrderDocument] ***********/
Create PROCEDURE [dbo].[UpdateOrderDocument]
(
	@SystemDate smalldatetime,
	@UserName nvarchar(20),
	@SOReasonCode nvarchar(20),
	@DocNumber nvarchar(50)
)
AS
BEGIN
	UPDATE 
		tblOrderDoc 
	SET 
		dteSystemDate = @SystemDate, 
		strUserName = @UserName, 
		bitCleared = 1, 
		strSOReasonCode = case when rtrim(ISNULL(@SOReasonCode ,'')) ='' then null else @SOReasonCode end
	WHERE strOrdDocID = @DocNumber
END

GO
/****** Object:  StoredProcedure [dbo].[UpdateOrderPrint]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****************End [UpdateInvoicePrint]******************************/

/*****************Start [UpdateOrderPrint]*****************************/ 

CREATE PROCEDURE [dbo].[UpdateOrderPrint]
@DocNumber AS NVARCHAR(50)
AS
BEGIN
	UPDATE tblOrderDoc SET bitPrinted = 1 WHERE strOrdDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateOrderQDocument]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvUpsellList] ***********/

/*********** Start [UpdateOrderQDocument] ***********/
CREATE PROCEDURE [dbo].[UpdateOrderQDocument]
(
 @SystemDate AS DATETIME,
 @UserName AS NVARCHAR(20),
 @SOReasonCode AS NVARCHAR(20),
 @DocNumber AS NVARCHAR(50)
)
AS
BEGIN
UPDATE tblOrderDocQ
SET dteSystemDate = @SystemDate
	,strUserName = @UserName
	,bitCleared = 1
	,strSOReasonCode = @SOReasonCode
WHERE strOrdDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UpdatePaymentDocLastIds]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdatePaymentDocLastIds]
@Num bigint
AS
BEGIN
UPDATE tblLastIDs SET lngPYNumber =  @Num
END
GO
/****** Object:  StoredProcedure [dbo].[UpdatePickTickets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateCustomers] ***********/

/*********** Start [UpdatePickTickets] ***********/
CREATE PROCEDURE [dbo].[UpdatePickTickets]
(
	@OrderDocId nvarchar(50)
)
AS
BEGIN
	UPDATE tblPickTickets SET bitCleared = 1 WHERE strOrdDocID = @OrderDocId
END
GO
/****** Object:  StoredProcedure [dbo].[UpdatePickTicketsInvTrackId]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********************** End [UpdatePickTicketsStockTransferred] **********************/

/********* Start [UpdatePickTicketsInvTrackId] **********/

CREATE PROCEDURE [dbo].[UpdatePickTicketsInvTrackId]
	@InvTrackId varchar(50)
   ,@PkTkDocID varchar(50)
AS
BEGIN	
	UPDATE tblPickTickets SET lngInvTrackId = @InvTrackId WHERE strPkTkDocID = @PkTkDocID
END
GO
/****** Object:  StoredProcedure [dbo].[UpdatePickTicketsStockTransferred]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********************End [UpdatePrintedFlagForShipmentContainer]*****************************************/


/********************** Start [UpdatePickTicketsStockTransferred] **********************/

CREATE PROCEDURE [dbo].[UpdatePickTicketsStockTransferred]
	@PkTkDocID varchar(50)
   ,@IsStockTransferred BIT
AS
BEGIN	
	UPDATE tblPickTickets SET bitStockTransferred = @IsStockTransferred WHERE strPkTkDocID = @PkTkDocID
END
GO
/****** Object:  StoredProcedure [dbo].[UpdatePOClear]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-----------------------------------------------------------------
Create Procedure [dbo].[UpdatePOClear]
(
@DocNumber nvarchar(100)
)
as
Begin
UPDATE tblOrderDocP SET bitCleared = 1 WHERE strOrdPDocID = @DocNumber
End
GO
/****** Object:  StoredProcedure [dbo].[UpdatePODocDTforGRVByPOClear]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-----------------------------------------------------------------
Create Procedure [dbo].[UpdatePODocDTforGRVByPOClear]
(
@POClearDTData as POClearTableType Readonly
)
as
Begin
Update tblOrderDocPDT 
Set 
decBuyQtyRemain = pc.BuyRemain,
decStockQtyRemain = pc.StockRemain,
strOrdPDocID = pc.PONumber,
intLineNo = pc.[LineNo]
From @POClearDTData pc
where tblOrderDocPDT.strOrdPDocID = pc.PONumber and tblOrderDocPDT.intLineNo = pc.[LineNo]

End
GO
/****** Object:  StoredProcedure [dbo].[UpdatePOOnBackOrder]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-----------------------------------------------------------------
Create Procedure [dbo].[UpdatePOOnBackOrder]
(
@DocNumber nvarchar(100),
@UserName nvarchar(50),
@SystemDate datetime
)
as
Begin
UPDATE tblOrderDocP 
SET dteSystemDate = @SystemDate, strUserName = @UserName, bitCleared = 1 WHERE strOrdPDocID = @DocNumber
End
GO
/****** Object:  StoredProcedure [dbo].[UpdatePOSDrawerUserName]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[UpdatePOSDrawerUserName]    Script Date: 2020-06-17 ******/
CREATE PROCEDURE [dbo].[UpdatePOSDrawerUserName]
	@ChangeUser nvarchar(100),
	@Session uniqueidentifier
AS
BEGIN
	
UPDATE [tblPOSDrs]
   SET [strAssignedUser] = @ChangeUser
 WHERE uidSessionID = @Session
END
GO
/****** Object:  StoredProcedure [dbo].[UpdatePOSDrsDropBal]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdatePOSDrsDropBal] 
   @Drop money,
   @Session uniqueidentifier
AS
BEGIN
	UPDATE tblPOSDrs SET decCashBal = decCashBal - @Drop, decTotalDrops = decTotalDrops + @Drop WHERE uidSessionID = @Session
END
GO
/****** Object:  StoredProcedure [dbo].[UpdatePOSDrsHeader]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[UpdatePOSDrsHeader]    Script Date: 09-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[UpdatePOSDrsHeader] 
   @CashBal money,
   @CkBal money,
   @CCBal money,
   @GiftCouBal money,
   @AccountBal money,
   @TotalSales money,
   @CurrentVal money,
   @uidSessionID uniqueidentifier
AS
BEGIN
	UPDATE tblPOSDrs SET
	 decCashBal = decCashBal + @CashBal,
	 decCkBal = decCkBal + @CkBal,
	 decCCBal = decCCBal + @CCBal,
	 decGiftCouBal = decGiftCouBal + @GiftCouBal
	 ,decAccountBal = decAccountBal + @AccountBal,
	 decTotalSales = decTotalSales + @TotalSales,
	 decCurrentVal = decCurrentVal + @CurrentVal
	  WHERE uidSessionID = @uidSessionID
END
GO
/****** Object:  StoredProcedure [dbo].[UpdatePOSDrsStatusAndSession]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[UpdatePOSDrsStatusAndSession]    Script Date: 10-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[UpdatePOSDrsStatusAndSession]
  @Status int,
  @OfflineTerminalId int,
  @SessionID uniqueidentifier
AS
BEGIN
		UPDATE tblPOSDrs SET 
		intStatus = @Status,dteCashedOut = GetDate(),
		decCloseVal = decCurrentVal 
		WHERE uidSessionID = @SessionID 
END
GO
/****** Object:  StoredProcedure [dbo].[UpdatePOSDrsStatusAndTerminal]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object:  StoredProcedure [dbo].[UpdatePOSDrsStatusAndTerminal]    Script Date: 10-10-2018 13:35:07 ******/
CREATE PROCEDURE [dbo].[UpdatePOSDrsStatusAndTerminal]
  @Status int = 0,
   @Terminal varchar(50),
  @SessionID uniqueidentifier
AS
BEGIN
   IF(@Status = 0)
   BEGIN
    UPDATE tblPOSDrs SET  strTerminal = @Terminal WHERE uidSessionID = @SessionID
   END
   IF(@Status = 2)
   BEGIN
    UPDATE tblPOSDrs SET  intStatus = @Status, strTerminal = @Terminal, decCloseVal = decCurrentVal WHERE uidSessionID = @SessionID
   END
   ELSE
    BEGIN
	 UPDATE tblPOSDrs SET intStatus = @Status, strTerminal = @Terminal WHERE uidSessionID = @SessionID
   END
  
END
GO
/****** Object:  StoredProcedure [dbo].[UpdatePrintBatch]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateEmailBatch] ***********/

/*********** Start [UpdatePrintBatch] ***********/
CREATE PROCEDURE [dbo].[UpdatePrintBatch]
(
	@PrintBatchIDParameter AS InvoiceOrderDetailsTableType READONLY,
	@DocumentType AS TINYINT
)
AS
BEGIN
	IF @DocumentType = 	0
		UPDATE  tblInvoiceDoc
        SET     bitPrinted = 1
        FROM    @PrintBatchIDParameter t
        WHERE   tblInvoiceDoc.strInvDocID = t.InvDocID
	ELSE IF @DocumentType = 1 OR @DocumentType = 2
		UPDATE  tblOrderDoc
        SET     bitPrinted = 1
        FROM    @PrintBatchIDParameter t
        WHERE   tblOrderDoc.strOrdDocID = t.InvDocID
	ELSE
		UPDATE  tblOrderDocQ 
        SET     bitPrinted = 1
        FROM    @PrintBatchIDParameter t
        WHERE   tblOrderDocQ.strOrdDocID = t.InvDocID
END
GO
/****** Object:  StoredProcedure [dbo].[UpdatePrintedFlag]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********************End [GetNegativeStockitemsData]*****************************************/

/*********************Start [UpdatePrintedFlag]*****************************************/

CREATE PROCEDURE [dbo].[UpdatePrintedFlag] (@OrderDocQ AS NVARCHAR(50))
AS
BEGIN
	UPDATE tblOrderDocQ
	SET bitPrinted = 1
	WHERE strOrdDocID = @OrderDocQ
END
GO
/****** Object:  StoredProcedure [dbo].[UpdatePrintedFlagForShipmentContainer]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********************End [UpdatePrintedFlagForShipments]*****************************************/

/*********************Start [UpdatePrintedFlagForShipmentContainer]*****************************************/


CREATE PROCEDURE [dbo].[UpdatePrintedFlagForShipmentContainer] (
	@DocID AS NVARCHAR(50)
	,@IsEmail AS BIT
	)
AS
BEGIN
	IF (@IsEmail = 0)
	BEGIN
		UPDATE tblContainers
		SET bitPrinted = 1
		WHERE strCntDocID = @DocID
	END
	ELSE
	BEGIN
		UPDATE tblContainers
		SET bitEmailed = 1
		WHERE strCntDocID = @DocID
	END
END
GO
/****** Object:  StoredProcedure [dbo].[UpdatePrintedFlagForShipments]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********************End [DocumentsSearch]*****************************************/

/*********************Start [UpdatePrintedFlagForShipments]*****************************************/

CREATE PROCEDURE [dbo].[UpdatePrintedFlagForShipments] (
	@DocID AS NVARCHAR(50)
	,@IsEmail AS BIT
	)
AS
BEGIN
	IF (@IsEmail = 0)
	BEGIN
		UPDATE tblShipments
		SET bitPrinted = 1
		WHERE strShpDocID = @DocID
	END
	ELSE
	BEGIN
		UPDATE tblShipments
		SET bitEmailed = 1
		WHERE strShpDocID = @DocID
	END
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateProcessDocData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetInvValuesFromType] ***********/

/*********** Start [UpdateProcessDocData] ***********/
CREATE PROCEDURE [dbo].[UpdateProcessDocData]
(
	@Reference nvarchar(100) = NULL,
	@Notes nvarchar(MAX) = '',
	@SalesName nvarchar(100) = NULL,
	@AddInfo nvarchar(100) = NULL,
	@ProcessDocID nvarchar(100),
	@StatusTypeCode nvarchar(40) = '',
	@Technician nvarchar(100) = Null
)
AS
BEGIN
	UPDATE tblInvoiceDoc 
	SET 
		strReference = @Reference, 
		strNotes = @Notes,
		strSalesName = @SalesName,
		strAddInfo = @AddInfo,
		strStatusTypeCode = @StatusTypeCode
	WHERE 
		strInvDocID = @ProcessDocID

	UPDATE tblWSInvoiceDoc 
	SET 
		Technician = @Technician
	WHERE 
		strInvDocID = @ProcessDocID

	UPDATE 
	  tblCustTrans 
	SET 
	  strInvDepNumber = @Reference 
	WHERE 
	  strInvDocID = @ProcessDocID

END
GO
/****** Object:  StoredProcedure [dbo].[UpdateProcessInvoiceForPOS]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateProcessInvoiceForPOS] (
	@CustomerName NVARCHAR(50)
	,@CurrentYearBegan DATETIME
	,@SelectedSalesPersonIndex INT
	,@SelectedSalesPerson NVARCHAR(50)
	,@NextNumber BIGINT
	,@IsNextCNNumber BIT
	,@IsSync BIT = 0
	)
AS
BEGIN
	--Update Customer YTD purch and balance due amounts 
	BEGIN
		UPDATE tblcustomers
		SET decbaldue = (
				SELECT Isnull(Sum(tblcusttransdt.decamount), 0)
				FROM tblcusttrans
				INNER JOIN tblcusttransdt ON tblcusttrans.lngcusttrid = tblcusttransdt.lngcusttrid
				WHERE tblcusttrans.strcustname = @CustomerName
					AND tblcusttransdt.bitreversed = 0
					AND (
						tblCustTrans.strOrdDocID IS NULL
						OR (
							tblCustTrans.strInvDocID IS NOT NULL
							AND tblCustTrans.strOrdDocID IS NOT NULL
							)
						OR (
							tblCustTrans.strOrdDocID IS NOT NULL
							AND tblCustTransDT.lngCustPayID IS NOT NULL
							)
						)
				)
			,decytdpurch = (
				SELECT Isnull(Sum(dectotal), 0)
				FROM tblinvoicedoc
				WHERE strcustname = @CustomerName
					AND bithistorytrans = 0
					AND dtejournaldate >= @CurrentYearBegan
				)
			,decbalduef = (
				SELECT Isnull(Sum(tblcusttransdt.decamountf), 0)
				FROM tblcusttrans
				INNER JOIN tblcusttransdt ON tblcusttrans.lngcusttrid = tblcusttransdt.lngcusttrid
				WHERE tblcusttrans.strcustname = @CustomerName
					AND tblcusttransdt.bitreversed = 0
					AND (
						tblCustTrans.strOrdDocID IS NULL
						OR (
							tblCustTrans.strInvDocID IS NOT NULL
							AND tblCustTrans.strOrdDocID IS NOT NULL
							)
						OR (
							tblCustTrans.strOrdDocID IS NOT NULL
							AND tblCustTransDT.lngCustPayID IS NOT NULL
							)
						)
				)
			,decytdpurchf = (
				SELECT Isnull(Sum(dectotalf), 0)
				FROM tblinvoicedoc
				WHERE strcustname = @CustomerName
					AND bithistorytrans = 0
					AND dtejournaldate >= @CurrentYearBegan
				)
			,dteupdated = Getdate()
		WHERE strcustname = @CustomerName
	END

	--Update Sales Persons YTD sales 
	IF @SelectedSalesPersonIndex >= 0
	BEGIN
		UPDATE tblsalespersons
		SET decytdsales = (
				SELECT Isnull(Sum(dectotal), 0)
				FROM tblinvoicedoc
				WHERE strsalesname = @SelectedSalesPerson
					AND bithistorytrans = 0
					AND dtejournaldate >= @CurrentYearBegan
				)
		WHERE strsalesname = @SelectedSalesPerson
	END

	IF (@IsSync = 0)
	BEGIN
		--Update our IDs table (only if NOT using reserved doc number) 
		IF @IsNextCNNumber = 1
		BEGIN
			UPDATE tbllastids
			SET lngcnnumber = @NextNumber
		END
		ELSE
		BEGIN
			UPDATE tbllastids
			SET lnginvnumber = @NextNumber
		END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateProcessQuoteEmail]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*****************End  [GetPriceBasedIDForCustomerPriceListReportData] *****************************/

/**************************Start [UpdateProcessQuoteEmail] *******************************************/

CREATE PROCEDURE [dbo].[UpdateProcessQuoteEmail]
@DocNumber AS NVARCHAR(50)
AS
BEGIN
	UPDATE tblWSProcessDoc SET Emailed = 1 WHERE ProcessDocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateQuoteAsRemoved]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetPaymentDetail] ***********/

/*********** Start [UpdateQuoteAsRemoved] ***********/
CREATE PROCEDURE [dbo].[UpdateQuoteAsRemoved]
(
	@Date AS DATETIME,
	@User AS NVARCHAR(50),
	@QuoteDocNumber AS NVARCHAR(50)
)
AS
BEGIN
	BEGIN
		UPDATE tblOrderDoc
		SET dteSystemDate = @Date,
		    strUserName = @User,
		    bitCleared = 1
		WHERE strOrdDocID = @QuoteDocNumber
	END
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateQuSysNumberId]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateQuSysNumberId]
@NextQuoteSysNumber AS BIGINT
AS
BEGIN
UPDATE tblLastIDs SET lngQuSysNumber = @NextQuoteSysNumber
SELECT 'Success'
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateReceiptOnSalesOrder]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateReceiptOnSalesOrder]
AS  
BEGIN
       UPDATE tblCoOpts SET bitARReceiptsOnSalesOrder = 1
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateRemainPOQty]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-----------------------------------------------------------------
Create Procedure [dbo].[UpdateRemainPOQty]
(
@DocNumber nvarchar(100)
)
as
Begin
UPDATE tblOrderDocPDT 
SET decBuyQtyRemain = Z.decBuyQtyRemain, decStockQtyRemain = Z.decStockQtyRemain 
FROM (SELECT 
			tblOrderDocPDT.strPartNumber,	
			tblOrderDocPDT.strLocation, 
			tblOrderDocPDT.decBuyQty - ISNULL(SUM(tblOrderDocPGDT.decBuyQty),0) AS decBuyQtyRemain, 
			tblOrderDocPDT.decStockQty - ISNULL(SUM(tblOrderDocPGDT.decStockQty),0) AS decStockQtyRemain 
			FROM tblOrderDocPDT 
			INNER JOIN tblOrderDocPG ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPG.strOrdPDocID 
			LEFT JOIN tblOrderDocPGDT ON tblOrderDocPG.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID AND tblOrderDocPDT.strPartNumber = tblOrderDocPGDT.strPartNumber AND tblOrderDocPDT.strLocation = tblOrderDocPGDT.strLocation 
			WHERE tblOrderDocPG.bitFromPO = 1 AND tblOrderDocPDT.strOrdPDocID = @DocNumber 
			GROUP BY tblOrderDocPDT.strPartNumber, tblOrderDocPDT.strLocation, tblOrderDocPDT.decBuyQty, tblOrderDocPDT.decStockQty, tblOrderDocPDT.decBuyQtyRemain, tblOrderDocPDT.decStockQtyRemain 
			HAVING (tblOrderDocPDT.decBuyQtyRemain <> (tblOrderDocPDT.decBuyQty - ISNULL(SUM(tblOrderDocPGDT.decBuyQty),0)) OR tblOrderDocPDT.decStockQtyRemain <> (tblOrderDocPDT.decStockQty - ISNULL(SUM(tblOrderDocPGDT.decStockQty),0)))) Z 
WHERE tblOrderDocPDT.strOrdPDocID = @DocNumber AND tblOrderDocPDT.strPartNumber = Z.strPartNumber AND tblOrderDocPDT.strLocation = Z.strLocation
End
GO
/****** Object:  StoredProcedure [dbo].[UpdateReminders]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------

CREATE PROCEDURE [dbo].[UpdateReminders]
	@strCustName nvarchar(50),
	@intFreq int,
	@dteNextSend datetime,
	@dstrMessage nvarchar(160),
	@lngID bigint
AS
BEGIN
	
UPDATE [tblReminders]
   SET [strCustName] = @strCustName
      ,[intFreq] = @intFreq
      ,[dteNextSend] = @dteNextSend
	  ,[strMessage] = @dstrMessage
 WHERE lngID = @lngID
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateSalesCycleLastRun]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [UpdateSalesCycleLastRun] ***********/
CREATE PROCEDURE [dbo].[UpdateSalesCycleLastRun]
( 
	@CycName VARCHAR(50)
)
AS
BEGIN
	UPDATE tblCycles 
	SET 
		dteLastProcDate = CONVERT(SMALLDATETIME,GETDATE()) 
	WHERE 
		strCycName = @CycName
END 
GO
/****** Object:  StoredProcedure [dbo].[UpdateSalesCycleRunDeliveryMethod]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** Start [UpdateSalesCycleRunDeliveryMethod] ***********/
CREATE PROCEDURE [dbo].[UpdateSalesCycleRunDeliveryMethod]
( 
	@DocID VARCHAR(50),
	@Method BIT
)
AS
BEGIN
	IF(@Method = 1)
	BEGIN
		UPDATE tblInvoiceDoc 
		SET 
			bitEmailed = 1 
		WHERE 
			strInvDocID = @DocID;
	END
	ELSE
	BEGIN
		UPDATE tblInvoiceDoc 
		SET 
			bitPrinted = 1 
		WHERE 
			strInvDocID = @DocID;
	END
END 
GO
/****** Object:  StoredProcedure [dbo].[UpdateSalesOrderEDIOrders]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetContractBillInvoice] ***********/

/*********** Start [UpdateSalesOrderEDIOrders] ***********/
CREATE PROCEDURE [dbo].[UpdateSalesOrderEDIOrders] 
@ID BIGINT
AS
BEGIN
	UPDATE tblSalesOrderEDIOrders 
	SET 
		blnUTrans = 1 
	WHERE 
		lngID = @ID;
END 
GO
/****** Object:  StoredProcedure [dbo].[UpdateSalesPersonForLine]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** End: StoredProcedure [dbo].[AdjustSalesPerson]   ******/


/****** Start:  StoredProcedure [dbo].[UpdateSalesPersonForLine] ******/

----------------------------------------------

CREATE PROCEDURE [dbo].[UpdateSalesPersonForLine]
(
	@SalesPerson nvarchar(50),	
	@DocNumber nvarchar(50)	
)
AS
BEGIN	        
		UPDATE tblSalesPersons SET decYTDSales = (decYTDSales + (select ISNULL(SUM(decLineTotInc + decLineTaxAmt),0) FROM tblInvoiceDocDT  WHERE strSalesName = @SalesPerson and strInvDocID = @DocNumber  )) 
		WHERE strSalesName = @SalesPerson;		
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateSalesPersonToLines]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [UpdateDocumentChangeSales] ***********/

/*********** Start [UpdateSalesPersonToLines] ***********/
CREATE PROCEDURE [dbo].[UpdateSalesPersonToLines]
(
	@DocumentId AS VARCHAR(50),
	@SalesName AS VARCHAR(50)
)
AS
BEGIN
	UPDATE tblInvoiceDocDT SET strSalesName = @SalesName WHERE strInvDocID = @DocumentId 
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateShipmentAuditTrailData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [TradeDiscMatrixSave] ***********/

/*********** Start [UpdateShipmentAuditTrailData] ***********/
CREATE PROCEDURE [dbo].[UpdateShipmentAuditTrailData]
(
	@InvoiceIDListData InvoiceOrderDetailsTableType READONLY,
	@OrderIDListData InvoiceOrderDetailsTableType READONLY
)
AS
BEGIN
	
	update 
		tblInvoiceDoc 
	set
		bitShipmentsAuditTrail = 1 
	FROM
		@InvoiceIDListData invoiceIDData
	where 
	    strInvDocID=invoiceIDData.InvDocID


	update 
		tblOrderDoc 
	set
		bitShipmentsAuditTrail = 1 
	FROM
		@OrderIDListData orderIDData
	where 
	    strOrdDocId=orderIDData.InvDocID

END
GO
/****** Object:  StoredProcedure [dbo].[UpdateStatusAndID]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [dbo].[GetInvValues] ***********/

/*********** Start [dbo].[UpdateStatusAndID] ***********/
CREATE PROCEDURE [dbo].[UpdateStatusAndID]
(
	@JobNumber nvarchar(30),
	@JobStatus int,
	@IRNumber nvarchar(30)
)
AS
BEGIN
	UPDATE tblWSProcessDoc SET JobStatusType = @JobStatus WHERE ProcessDocID = @JobNumber

	UPDATE tblLastIDs SET lngIRNumber = @IRNumber
END

GO
/****** Object:  StoredProcedure [dbo].[UpdateTableInEditMode]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateTableInEditMode] (
	@SQstrSalesName NVARCHAR(100)
	,@SQOldName NVARCHAR(50)
	)
AS
BEGIN
	UPDATE tblInvoiceDocDT
	SET strSalesName = @SQstrSalesName
	WHERE strSalesName = @SQOldName

	UPDATE tblInvoiceDocREVDT
	SET strSalesName = @SQstrSalesName
	WHERE strSalesName = @SQOldName

	UPDATE tblOrderDocDT
	SET strSalesName = @SQstrSalesName
	WHERE strSalesName = @SQOldName

	UPDATE tblOrderDocQDT
	SET strSalesName = @SQstrSalesName
	WHERE strSalesName = @SQOldName

	UPDATE tblSalesREDT
	SET strSalesName = @SQstrSalesName
	WHERE strSalesName = @SQOldName
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateTablesForProcessInvoice]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateTablesForProcessInvoice]
(
	@REName nvarchar(50),
	@DocNumber nvarchar(50),
	@IsNextCNNumber bit,
	@NextNumber BigInt,

	@IsYTDPurch bit,
	@CustomerNumber Nvarchar(50),
	@CurrentYearBegan DateTime,

	@SelectedSalesPersonIndex Int,
	@SelectedSalesPerson Nvarchar(50),

	@IsSalesFreehandQuotes bit,
	@SalesFQDocNumber Nvarchar(50),
	@IsInvoiceCondition As bit
)
AS
BEGIN
	--If recalled, set last processed date
	IF (@REName IS NOT NULL) OR (LEN(@REName) > 0)
	BEGIN  
		UPDATE tblSalesRE SET dteLastProcDate = GetDate() WHERE strREName = @REName
	END

	--Update our IDs table (only if NOT using reserved doc number)
	IF @IsInvoiceCondition = 1
	BEGIN
		IF @IsNextCNNumber = 1
	BEGIN
		UPDATE tblLastIDs SET lngCNNumber = @NextNumber
	END
	ELSE
	BEGIN
		UPDATE tblLastIDs SET lngInvNumber = @NextNumber
	END
	END
	
	--Update Customer YTD purch and balance due amounts
	IF @IsYTDPurch = 1
	BEGIN
		UPDATE tblCustomers
		SET decYTDPurch =
		  (SELECT ISNULL(SUM(decTotal),0)
		   FROM tblInvoiceDoc
		   WHERE strCustName = @CustomerNumber
		     AND bitHistoryTrans = 0
		     AND dteJournalDate >= @CurrentYearBegan),
		    decBalDueF =
		  (SELECT ISNULL(SUM(tblCustTransDT.decAmountF),0)
		   FROM tblCustTrans
		   INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
		   WHERE tblCustTrans.strCustName = @CustomerNumber
		     AND tblCustTransDT.bitReversed = 0),
		    decYTDPurchF =
		  (SELECT ISNULL(SUM(decTotalF),0)
		   FROM tblInvoiceDoc
		   WHERE strCustName = @CustomerNumber
		     AND bitHistoryTrans = 0
		     AND dteJournalDate >= @CurrentYearBegan)
		WHERE strCustName = @CustomerNumber
	END
	ELSE
	BEGIN
		UPDATE tblCustomers
		SET decBalDue =
		  (SELECT ISNULL(SUM(tblCustTransDT.decAmount),0)
		   FROM tblCustTrans
		   INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
		   WHERE tblCustTrans.strCustName = @CustomerNumber
		     AND tblCustTransDT.bitReversed = 0
			 AND (
				tblCustTrans.strOrdDocID IS NULL
				OR (
					tblCustTrans.strInvDocID IS NOT NULL
					AND tblCustTrans.strOrdDocID IS NOT NULL
					)
				OR (
					tblCustTrans.strOrdDocID IS NOT NULL
					AND tblCustTransDT.lngCustPayID IS NOT NULL
					)
				)
			),
		    decYTDPurch =
		  (SELECT ISNULL(SUM(decTotal),0)
		   FROM tblInvoiceDoc
		   WHERE strCustName = @CustomerNumber
		     AND bitHistoryTrans = 0
		     AND dteJournalDate >= @CurrentYearBegan),
		    decBalDueF =
		  (SELECT ISNULL(SUM(tblCustTransDT.decAmountF),0)
		   FROM tblCustTrans
		   INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
		   WHERE tblCustTrans.strCustName = @CustomerNumber
		     AND tblCustTransDT.bitReversed = 0
			 AND (
				tblCustTrans.strOrdDocID IS NULL
				OR (
					tblCustTrans.strInvDocID IS NOT NULL
					AND tblCustTrans.strOrdDocID IS NOT NULL
					)
				OR (
					tblCustTrans.strOrdDocID IS NOT NULL
					AND tblCustTransDT.lngCustPayID IS NOT NULL
					)
				)
			),
		    decYTDPurchF =
		  (SELECT ISNULL(SUM(decTotalF),0)
		   FROM tblInvoiceDoc
		   WHERE strCustName = @CustomerNumber
		     AND bitHistoryTrans = 0
		     AND dteJournalDate >= @CurrentYearBegan)
			 ,dteUpdated = GETDATE()
		WHERE strCustName = @CustomerNumber
	END

	--Update Sales Persons YTD sales
	IF @SelectedSalesPersonIndex >= 0
	BEGIN
		--UPDATE tblSalesPersons
		--SET decYTDSales =
		--  (SELECT ISNULL(SUM(decTotal),0)
		--   FROM tblInvoiceDoc
		--   WHERE strSalesName = @SelectedSalesPerson
		--     AND bitHistoryTrans = 0
		--     AND dteJournalDate >= @CurrentYearBegan)
		--WHERE strSalesName = @SelectedSalesPerson

		UPDATE tblSalesPersons
		SET decYTDSales =ISNULL(decYTDSales +
		  (SELECT ISNULL(decTotal,0)
		   FROM tblInvoiceDoc
		   WHERE strInvDocID = @DocNumber
		     AND bitHistoryTrans = 0
		     AND dteJournalDate >= @CurrentYearBegan), 0)
		WHERE strSalesName = @SelectedSalesPerson
	END

	--SET FREEHAND QUOTES DOC AS CLEARED
	IF @IsSalesFreehandQuotes = 1
	BEGIN
		UPDATE tblOrderDocQ SET bitCleared = 1 WHERE strOrdDocID = @SalesFQDocNumber
	END

END
GO
/****** Object:  StoredProcedure [dbo].[UpdateTaskStatus]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [SaveUpdateTask] ***********/

/*********** Start [UpdateTaskStatus] ***********/
CREATE PROCEDURE [dbo].[UpdateTaskStatus]
	
	@TaskId bigint,
	@TaskStatus int

AS
BEGIN
	UPDATE tblToDo SET intStatus = CONVERT(tinyint, @TaskStatus) WHERE lngId = @TaskId
END

GO
/****** Object:  StoredProcedure [dbo].[UpdatetblCoOptsbitAllowBin]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********* End [ImportInvBinLocation] (Control panel) **********/

/********* Start [UpdatetblCoOptsbitAllowBin] (Control panel) **********/

CREATE PROCEDURE [dbo].[UpdatetblCoOptsbitAllowBin]
(
	 @PartNumber AS NVARCHAR(100)
	 ,@IsPLBinAllow As Bit
)
AS
BEGIN
	SELECT COUNT(strPartNumber)
	FROM tblInv
    WHERE strPartNumber = @PartNumber

	IF @@ROWCOUNT <> 0
	BEGIN
	   IF(@IsPLBinAllow = 0)
	   BEGIn
			UPDATE tblCoOpts SET bitAllowBin = 1
	   END
	END
END
GO
/****** Object:  StoredProcedure [dbo].[UpdatetblDimensionProfiles]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdatetblDimensionProfiles] (
	@strDimProCode NVARCHAR(40) = NULL
	,@strDescription NVARCHAR(200) = NULL
	,@bitAutoInvoke BIT = NULL
	,@intRoundingDecimals INT = NULL
	,@bitInactive BIT = NULL
	)
AS
UPDATE [tblDimensionProfiles]
SET [strDimProCode] = @strDimProCode
	,[strDescription] = @strDescription
	,[bitAutoInvoke] = @bitAutoInvoke
	,[intRoundingDecimals] = @intRoundingDecimals
	,[bitInactive] = @bitInactive
	
GO
/****** Object:  StoredProcedure [dbo].[UpdatetblDimProLines]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdatetblDimProLines] (
	@intLineNo INT = NULL
	,@strDimProCode NVARCHAR(40) = NULL
	,@strLineDesc NVARCHAR(200) = NULL
	,@decDefaultValue MONEY = NULL
	,@bitReadOnly BIT = NULL
	,@bitVisible BIT = NULL
	)
AS
UPDATE [tblDimProLines]
SET [intLineNo] = @intLineNo
	,[strDimProCode] = @strDimProCode
	,[strLineDesc] = @strLineDesc
	,[decDefaultValue] = @decDefaultValue
	,[bitReadOnly] = @bitReadOnly
	,[bitVisible] = @bitVisible
	
GO
/****** Object:  StoredProcedure [dbo].[UpdatetblInv]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[UpdatetblInv] 
(@strPartNumber nvarchar(50) = NULL ,
@strDesc nvarchar(500) = NULL ,
@intType tinyint = NULL ,
@strCategory nvarchar(20) = NULL ,
@intExpAcct nvarchar(30) = NULL ,
@decCostOnPO money = NULL ,
@bitUseLPPOnPO bit = NULL ,
@intReorderQty int = NULL ,
@strBuyUnit nvarchar(15) = NULL ,
@strStockUnit nvarchar(15) = NULL ,
@decBuyToStock smallmoney = NULL ,
@bitAllowPriceChg bit = NULL ,
@dteDateLastSale smalldatetime = NULL ,
@dteLastPurchase smalldatetime = NULL ,
@decLastPPUnit money = NULL ,
@dteLastUpdated smalldatetime = NULL ,
@bitUseBOM bit = NULL ,
@intBOMQty int = NULL ,
@strAddInfo nvarchar(200) = NULL ,
@bitInactive bit = NULL ,
@decSumAvail money = NULL ,
@decSumAlloc money = NULL ,
@decSumOnHand money = NULL ,
@decSumValue money = NULL ,
@decSumOnOrder money = NULL ,
@decSumOpenQty money = NULL ,
@decSumOpenValue money = NULL ,
@decSumValYearStart money = NULL ,
@decSumQtyYearStart money = NULL ,
@decSumAmtSoldYTD money = NULL ,
@decSumAmtSoldLY money = NULL ,
@decSumQtySoldYTD money = NULL ,
@decSumQtySoldLY money = NULL ,
@decSumCOGSYTD money = NULL ,
@decSumCOGSLY money = NULL ,
@intSumNumTransYTD bigint = NULL ,
@intSumNumTransLY bigint = NULL ,
@bitAutoBuild bit = NULL ,
@strField1 nvarchar(100) = NULL ,
@strField2 nvarchar(100) = NULL ,
@strField3 nvarchar(100) = NULL ,
@strField4 nvarchar(100) = NULL ,
@strField5 nvarchar(100) = NULL ,
@strField6 nvarchar(100) = NULL ,
@strBarCode nvarchar(300) = NULL ,
@decStandardCost money = NULL ,
@bitItemNumConvUsed bit = NULL ,
@strSellUnit nvarchar(15) = NULL ,
@strSellStockUnit nvarchar(15) = NULL ,
@decSellFromStock smallmoney = NULL ,
@strItemSegment1 nvarchar(50) = NULL ,
@strItemSegment2 nvarchar(50) = NULL ,
@strItemSegment3 nvarchar(50) = NULL ,
@strItemSegment4 nvarchar(50) = NULL ,
@strInvNumConv nvarchar(50) = NULL ,
@bitInvSerialType bit = NULL ,
@strInvSerialType nvarchar(20) = NULL ,
@decRepairCharge money = NULL ,
@strBarCode2 nvarchar(300) = NULL ,
@bitVoucherEnabled bit = NULL ,
@strVoucherCode nvarchar(50) = NULL ,
@decDefSaleQty money = NULL ,
@strExtendedDesc nvarchar(max) = NULL ,
@bitInvExtDescOnSI bit = NULL ,
@bitInvExtDescOnSO bit = NULL ,
@bitInvExtDescOnSQ bit = NULL ,
@bitInvExtDescOnSFHQ bit = NULL ,
@bitInvExtDescOnCR bit = NULL ,
@bitInvExtDescOnPI bit = NULL ,
@bitInvExtDescOnPO bit = NULL ,
@bitInvExtDescOnPQ bit = NULL ,
@bitWebstoreItem bit = NULL ,
@bitInvExtDescOnBRQ bit = NULL ,
@decSumManuf money = NULL)
 As Update [tblInv] set 
[strPartNumber] = @strPartNumber,
[strDesc] = @strDesc,
[intType] = @intType,
[strCategory] = @strCategory,
[intExpAcct] = @intExpAcct,
[decCostOnPO] = @decCostOnPO,
[bitUseLPPOnPO] = @bitUseLPPOnPO,
[intReorderQty] = @intReorderQty,
[strBuyUnit] = @strBuyUnit,
[strStockUnit] = @strStockUnit,
[decBuyToStock] = @decBuyToStock,
[bitAllowPriceChg] = @bitAllowPriceChg,
[dteDateLastSale] = @dteDateLastSale,
[dteLastPurchase] = @dteLastPurchase,
[decLastPPUnit] = @decLastPPUnit,
[dteLastUpdated] = @dteLastUpdated,
[bitUseBOM] = @bitUseBOM,
[intBOMQty] = @intBOMQty,
[strAddInfo] = @strAddInfo,
[bitInactive] = @bitInactive,
[decSumAvail] = @decSumAvail,
[decSumAlloc] = @decSumAlloc,
[decSumOnHand] = @decSumOnHand,
[decSumValue] = @decSumValue,
[decSumOnOrder] = @decSumOnOrder,
[decSumOpenQty] = @decSumOpenQty,
[decSumOpenValue] = @decSumOpenValue,
[decSumValYearStart] = @decSumValYearStart,
[decSumQtyYearStart] = @decSumQtyYearStart,
[decSumAmtSoldYTD] = @decSumAmtSoldYTD,
[decSumAmtSoldLY] = @decSumAmtSoldLY,
[decSumQtySoldYTD] = @decSumQtySoldYTD,
[decSumQtySoldLY] = @decSumQtySoldLY,
[decSumCOGSYTD] = @decSumCOGSYTD,
[decSumCOGSLY] = @decSumCOGSLY,
[intSumNumTransYTD] = @intSumNumTransYTD,
[intSumNumTransLY] = @intSumNumTransLY,
[bitAutoBuild] = @bitAutoBuild,
[strField1] = @strField1,
[strField2] = @strField2,
[strField3] = @strField3,
[strField4] = @strField4,
[strField5] = @strField5,
[strField6] = @strField6,
[strBarCode] = @strBarCode,
[decStandardCost] = @decStandardCost,
[bitItemNumConvUsed] = @bitItemNumConvUsed,
[strSellUnit] = @strSellUnit,
[strSellStockUnit] = @strSellStockUnit,
[decSellFromStock] = @decSellFromStock,
[strItemSegment1] = @strItemSegment1,
[strItemSegment2] = @strItemSegment2,
[strItemSegment3] = @strItemSegment3,
[strItemSegment4] = @strItemSegment4,
[strInvNumConv] = @strInvNumConv,
[bitInvSerialType] = @bitInvSerialType,
[strInvSerialType] = @strInvSerialType,
[decRepairCharge] = @decRepairCharge,
[strBarCode2] = @strBarCode2,
[bitVoucherEnabled] = @bitVoucherEnabled,
[strVoucherCode] = @strVoucherCode,
[decDefSaleQty] = @decDefSaleQty,
[strExtendedDesc] = @strExtendedDesc,
[bitInvExtDescOnSI] = @bitInvExtDescOnSI,
[bitInvExtDescOnSO] = @bitInvExtDescOnSO,
[bitInvExtDescOnSQ] = @bitInvExtDescOnSQ,
[bitInvExtDescOnSFHQ] = @bitInvExtDescOnSFHQ,
[bitInvExtDescOnCR] = @bitInvExtDescOnCR,
[bitInvExtDescOnPI] = @bitInvExtDescOnPI,
[bitInvExtDescOnPO] = @bitInvExtDescOnPO,
[bitInvExtDescOnPQ] = @bitInvExtDescOnPQ,
[bitWebstoreItem] = @bitWebstoreItem,
[bitInvExtDescOnBRQ] = @bitInvExtDescOnBRQ,
[decSumManuf] = @decSumManuf
GO
/****** Object:  StoredProcedure [dbo].[UpdatetblInvCat]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[UpdatetblInvCat] 
(@strCategory nvarchar(20) = NULL ,
@strDesc nvarchar(100) = NULL ,
@bitInactive bit = NULL ,
@decMinMarginPerc decimal = NULL ,
@bitUseMinMarginPerc bit = NULL ,
@intAlertOnMinMarginPerc int = NULL )
 As Update [tblInvCat] set 
[strCategory] = @strCategory,
[strDesc] = @strDesc,
[bitInactive] = @bitInactive,
[decMinMarginPerc] = @decMinMarginPerc,
[bitUseMinMarginPerc] = @bitUseMinMarginPerc,
[intAlertOnMinMarginPerc] = @intAlertOnMinMarginPerc
GO
/****** Object:  StoredProcedure [dbo].[UpdatetblInvVend]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE  [dbo].[UpdatetblInvVend] 
(@strPartNumber nvarchar(50) = NULL ,
@strVendName nvarchar(50) = NULL ,
@lngID bigint = NULL ,
@strItemCode nvarchar(50) = NULL ,
@strItemDesc nvarchar(500) = NULL ,
@intWarrantyDays int = NULL ,
@decPrice money = NULL ,
@bitPreferred bit = NULL ,
@decDiscPerc money = NULL ,
@decLocalPrice money = NULL ,
@decLandedCostFactor money = NULL )
 As Update [tblInvVend] set 
[strPartNumber] = @strPartNumber,
[strVendName] = @strVendName,
[strItemCode] = @strItemCode,
[strItemDesc] = @strItemDesc,
[intWarrantyDays] = @intWarrantyDays,
[decPrice] = @decPrice,
[bitPreferred] = @bitPreferred,
[decDiscPerc] = @decDiscPerc,
[decLocalPrice] = @decLocalPrice,
[decLandedCostFactor] = @decLandedCostFactor
 Where [lngID] =  @lngID
GO
/****** Object:  StoredProcedure [dbo].[UpdateTenderTypes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateTenderTypes]
	@strNameNew nvarchar(20),
	@strDescription nvarchar(100),
	@strNameOld nvarchar(20)
AS
BEGIN
	
UPDATE [tblTenderTypes]
   SET [strName] = @strNameNew,
	   [strDescription] = @strDescription
 WHERE strName = @strNameOld
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateTenderTypesPastel]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateTenderTypesPastel]
AS
UPDATE tblTenderTypes SET intGLNumber = (SELECT intGLNumber FROM tblAccounts WHERE bitIsLinkedAccount = 1 AND bitDefBank = 1) WHERE ISNULL(intGLNumber,'') <> ''
GO
/****** Object:  StoredProcedure [dbo].[UpdateToSalesPerson]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateToSalesPerson] (
	@SQstrSalesName NVARCHAR(50)
	,@SQstrOldSalesName  NVARCHAR(50)
	,@SQstrStreet1 NVARCHAR(50)
	,@SQstrStreet2 NVARCHAR(50)
	,@SQstrCity NVARCHAR(50)
	,@SQstrProvince NVARCHAR(50)
	,@SQstrPostal NVARCHAR(50)
	,@SQstrPhone NVARCHAR(50)
	,@SQstrCellPhone NVARCHAR(50)
	,@SQstrFax NVARCHAR(50)
	,@SQstrEmail NVARCHAR(50)
	,@SQdecYTDSales MONEY
	,@SQbitInactive BIT
	,@SQdteSince DATETIME
	,@SQstrNotes NVARCHAR(max)
	,@SQstrCountry NVARCHAR(50)
	,@SQstrCountryCode NVARCHAR(10)
	,@SQstrFacebook NVARCHAR(100)
	,@SQstrLinkedIn NVARCHAR(100)
	,@SQstrSkype NVARCHAR(100)
	,@SQimgPicture IMAGE 
	,@SQbitGrossProfit BIT
	,@SQbitPaidInvoices BIT
	,@SQIsWorkshopTechnician BIT 
	,@SQUID uniqueidentifier
	)
AS
BEGIN
	UPDATE tblSalesPersons
		SET
		     strSalesName=@SQstrSalesName
			,strStreet1 = @SQstrStreet1
			,strStreet2 = @SQstrStreet2
			,strCity = @SQstrCity
			,strProvince = @SQstrProvince
			,strPostal = @SQstrPostal
			,strPhone = @SQstrPhone
			,strCellPhone = @SQstrCellPhone
			,strFax = @SQstrFax
			,strEmail = @SQstrEmail
			,decYTDSales = @SQdecYTDSales
			,bitInactive = @SQbitInactive
			,dteUpdated = GetDate()
			,dteSince = @SQdteSince
			,strNotes = @SQstrNotes
			,uID = @SQUID
			,strCountry = @SQstrCountry
			,strCountryCode = @SQstrCountryCode
			,strFacebook = @SQstrFacebook
			,strLinkedIn = @SQstrLinkedIn
			,strSkype = @SQstrSkype
			,imgPicture = case when convert(varbinary(max),@SQimgPicture)  =0x then null else @SQimgPicture end			
			,bitIsWorkshopTechnician=isnull(@SQIsWorkshopTechnician ,0)	
			,bitGrossProfit=@SQbitGrossProfit
			,bitPaidInvoices=@SQbitPaidInvoices
	WHERE strSalesName = @SQstrOldSalesName;
END;
/*********** End [UpdateToSalesPerson] ***********/

/*********** Start [InsertToSalesPerson] ***********/
SET ANSI_NULLS ON
GO
/****** Object:  StoredProcedure [dbo].[UpdateTradeDiscMatrixTypes]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateTradeDiscMatrixTypes]
(
	@StartDate AS DATETIME,
	@EndDate AS DATETIME
)
AS
BEGIN
	SELECT COUNT(strMatrixType) FROM tblTradeDiscMatrixTypes WHERE dteStartDate = dteFinishDate
	IF(@@ROWCOUNT = 1)
	BEGIN
		UPDATE tblTradeDiscMatrixTypes SET dteStartDate = @StartDate, dteFinishDate = @EndDate WHERE strMatrixType = 'DEFAULT'
	END
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateTranferAR]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End[GetOrderDocQDT] ***********/

/*********** Start [UpdateTranferAR] ***********/
CREATE PROCEDURE [dbo].[UpdateTranferAR]
(
	@OrdDocID AS NVARCHAR(50),
	@CustName AS NVARCHAR(50),
	@SoldTo AS NVARCHAR(500)
)	
AS
BEGIN
	UPDATE tblOrderDocQ SET strCustName = @CustName, strSoldTo = @SoldTo WHERE strOrdDocID = @OrdDocID
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateUserEditData]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/*********** End [SaveFiles] ***********/

/*********** Start [UpdateUserEditData] ***********/

CREATE PROCEDURE [dbo].[UpdateUserEditData] 
	 @Name NVARCHAR(100)
	,@Cell NVARCHAR(100)
	,@Email NVARCHAR(200)
	,@Password NVARCHAR(4000)
	,@User NVARCHAR(40)
AS
BEGIN
	UPDATE tblUsers
	SET strName = @Name
		,strCellNumber = @Cell
		,strEmail = @Email
		,strPassword = @Password
	WHERE strUserName = @User
END

GO
/****** Object:  StoredProcedure [dbo].[UpdateUsersSets]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateUsersSets]
	@strNameChequeNew nvarchar(500),
	@strNameChequeOld nvarchar(500)
AS
BEGIN	
UPDATE [tblUsersSets]
   SET [strSetting] = @strNameChequeNew
 WHERE strKey = 'm_SalesPayVia' AND strSetting = @strNameChequeOld
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateVendBitSettleeFlag]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateVendBitSettleeFlag]

AS
BEGIN
UPDATE tblVendTrans SET bitSettled = 1 WHERE bitSettled = 0 AND lngVendTrID IN (SELECT lngVendTrID FROM tblVendTransDT WHERE bitReversed = 0 GROUP BY lngVendTrID HAVING SUM(decAmount) = 0 AND SUM(decAmountF) = 0)
UPDATE tblVendTrans SET bitSettled = 0 WHERE bitSettled = 1 AND lngVendTrID IN (SELECT lngVendTrID FROM tblVendTransDT WHERE bitReversed = 0 GROUP BY lngVendTrID HAVING SUM(decAmount) <> 0 OR SUM(decAmountF) <> 0)
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateVendorBalance]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateVendorBalance]
(
	@decBalance decimal,
	@decCurrBalance decimal,
	@strVendor nvarchar(100)	
)
AS
UPDATE tblVendors SET decBalDue = @decBalance, decYTDPurch = @decBalance, decBalDueF = @decCurrBalance, decYTDPurchF = @decCurrBalance WHERE strVendName = @strVendor
GO
/****** Object:  StoredProcedure [dbo].[UpdateVendorInfo]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [GetFreehandGridData] ***********/

/*********** Start [UpdateVendorInfo] ***********/
CREATE PROCEDURE [dbo].[UpdateVendorInfo] (
	@Cost AS MONEY
	,@VendorName AS NVARCHAR(50)
	,@PartNumber AS NVARCHAR(50)
	)
AS
BEGIN
	--UPDATE tblInvVend SET decPrice = @Cost WHERE strVendName = @VendorName AND strPartNumber = @PartNumber
	UPDATE tblInvVend
	SET decPrice = @Cost
		,decLocalPrice = ROUND(@Cost * (decLocalPrice / decPrice), 2)
	WHERE strVendName = @VendorName
		AND strPartNumber = @PartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateVendorsDefault]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateVendorsDefault] 
AS
BEGIN 
	UPDATE tblVendors SET strTaxCode = (SELECT strTaxCode FROM tblTaxCodes WHERE bitDefVendors = 1)
	SELECT @@ROWCOUNT
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateVendorsOnOpenPO]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateVendorsOnOpenPO]
(
@strCust1 nvarchar(50),
@strCust2 nvarchar(50)
)
AS
UPDATE tblVendors SET decOpenOrders = ISNULL((SELECT SUM(ROUND(((DTL.decLineTotExc + DTL.decLineTaxAmt) / DTL.decBuyQty) * DTL.decBuyQtyRemain, 2)) FROM tblOrderDocP HDR INNER JOIN tblOrderDocPDT DTL ON HDR.strOrdPDocID = DTL.strOrdPDocID WHERE HDR.strVendName = @strCust1 AND (HDR.bitCleared = 0) AND (HDR.intDocType = 1)), 0), decOpenOrdersF = ISNULL((SELECT SUM(ROUND(((DTL.decLineTotExcF + DTL.decLineTaxAmtF) / DTL.decBuyQty) * DTL.decBuyQtyRemain, 2)) FROM tblOrderDocP HDR INNER JOIN tblOrderDocPDT DTL ON HDR.strOrdPDocID = DTL.strOrdPDocID WHERE HDR.strVendName = @strCust1 AND (HDR.bitCleared = 0) AND (HDR.intDocType = 1)), 0) WHERE strVendName = @strCust2
GO
/****** Object:  StoredProcedure [dbo].[UpdateVendorsOpenOrders]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-----------------------------------------------------------------
Create  Procedure [dbo].[UpdateVendorsOpenOrders]
(
@Vend1 nvarchar(50),
@Vend2 nvarchar(50)
)
as
Begin
UPDATE tblVendors 
SET decOpenOrders = (SELECT ISNULL(SUM(decTotal),0) FROM tblOrderDocP WHERE strVendName = @Vend1 AND bitCleared = 0 AND intDocType = 1), decOpenOrdersF = (SELECT ISNULL(SUM(decTotalF),0) FROM tblOrderDocP WHERE strVendName = @Vend1 AND bitCleared = 0 AND intDocType = 1) 
WHERE strVendName = @Vend2
End
GO
/****** Object:  StoredProcedure [dbo].[UpdateVendYTDBal]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UpdateVendYTDBal]
@Vendor nvarchar(100),
@CurrentYrStarts datetime
AS
BEGIN
UPDATE tblVendors SET decBalDue = (SELECT ISNULL(SUM(tblVendTransDT.decAmount),0) FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID WHERE tblVendTrans.strVendName = @Vendor AND tblVendTransDT.bitReversed = 0), decYTDPurch = (SELECT ISNULL(SUM(decTotal),0) FROM tblInvoiceDocP WHERE strVendName = @Vendor AND bitHistoryTrans = 0 AND dteJournalDate >= @CurrentYrStarts), decBalDueF = (SELECT ISNULL(SUM(tblVendTransDT.decAmountF),0) FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID WHERE tblVendTrans.strVendName = @Vendor AND tblVendTransDT.bitReversed = 0), decYTDPurchF = (SELECT ISNULL(SUM(decTotalF),0) FROM tblInvoiceDocP WHERE strVendName = @Vendor AND bitHistoryTrans = 0 AND dteJournalDate >= @CurrentYrStarts), dteLastUpdated = GetDate() WHERE strVendName = @Vendor
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateXMLRXNumber]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object:  StoredProcedure [dbo].[UpdateXMLRXNumber]    Script Date: 2019-09-03 15:20:12 ******/
CREATE PROCEDURE [dbo].[UpdateXMLRXNumber]
	@SQInvTransRXNumber bigint
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	UPDATE tblLastIDs SET lngXMLRXNumber = @SQInvTransRXNumber
END
GO
/****** Object:  StoredProcedure [dbo].[UserDataByUserName]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UserDataByUserName]  
(@UserName NVARCHAR(50))    
AS    
BEGIN    
 SELECT tblUsers.strUserName AS 'UserName'    
  ,strName AS 'Name'    
  ,strCellNumber AS 'CellNumber'    
  ,strEmail AS 'Email'    
  ,strPassword AS 'Password'    
  ,blnIsAdmin AS 'IsAdmin'    
  ,blnIsLockedOut AS 'IsLockedOut'    
  ,blnMustChange AS 'MustChange'    
  ,blnCompany AS 'Company'    
  ,blnCoFileHandle AS 'CoFileHandle'    
  ,blnGL AS 'GL'    
  ,blnPayables AS 'Payables'    
  ,blnPayPayments AS 'PayPayments'    
  ,blnReceivables AS 'Receivables'    
  ,blnRecReceipts AS 'RecReceipts'    
  ,blnInventory AS 'Inventory'    
  ,blnInvAdjust AS 'InvAdjust'    
  ,blnInvCount AS 'InvCount'    
  ,blnSMS AS 'SMS'    
  ,blnBusMgr AS 'BusMgr'    
  ,blnPOS AS 'POS'    
  ,blnProjects AS 'Projects'    
  ,dteLastLogin AS 'LastLogin'    
  ,blnCashBook AS 'CashBook'    
  ,blnReminders AS 'Reminders'    
  ,blnMarketing AS 'Marketing'    
  ,blnCollection AS 'Collection'    
  ,blnPOSCash AS 'POSCash'    
  ,blnCoAdmin AS 'CoAdmin'    
  ,blnMainSum AS 'MainSum'    
  ,blnAcctSets AS 'AcctSets'    
  ,blnJournal AS 'Journal'    
  ,blnBankTrans AS 'BankTrans'    
  ,blnBankRecon AS 'BankRecon'    
  ,blnAPPurch AS 'APPurch'    
  ,blnAPTax AS 'APTax'    
  ,blnARCredit AS 'ARCredit'    
  ,blnARSales AS 'ARSales'    
  ,blnARBatch AS 'ARBatch'    
  ,blnInvPricelists AS 'InvPricelists'    
  ,blnInvLoc AS 'InvLoc'    
  ,blnInvCats AS 'InvCats'    
  ,blnInvAssbly AS 'InvAssbly'    
  ,blnInvTrans AS 'InvTrans'    
  ,blnSMSCredits AS 'SMSCredits'    
  ,blnPOSDrop AS 'POSDrop'    
  ,blnPOSTerminalSetup AS 'POSTerminalSetup'    
  ,blnPOSTerminalSetupList AS 'POSTerminalSetupList'    
  ,blnPOSProfileMenu AS 'POSProfileMenu'    
  ,blnBulkSMS AS 'BulkSMS'    
  ,blnGLExpense AS 'GLExpense'    
  ,blnDeposits AS 'Deposits'    
  ,blnInvPDT AS 'InvPDT'    
  ,blnARPersons AS 'ARPersons'    
  ,blnAPBatch AS 'APBatch'    
  ,blnAPBrowser AS 'APBrowser'    
  ,blnARBrowser AS 'ARBrowser'    
  ,blnTemplates AS 'Templates'    
  ,blnAREmail AS 'AREmail'    
  ,blnWHRec AS 'WHRec'    
  ,blnWHPick AS 'WHPick'    
  ,blnWHBatch AS 'WHBatch'    
  ,uID AS 'uid'    
  ,blnFiles AS 'Files'    
  ,strLocName AS 'LocName'    
  ,blnCycle AS 'Cycle'    
  ,blnInterest AS 'Interest'    
  ,blnAPOrders AS 'APOrders'    
  ,blnAPReq AS 'APReq'    
  ,blnAROrders AS 'AROrders'    
  ,blnARQuotes AS 'ARQuotes'    
  ,blnARQuSys AS 'ARQuSys'    
  ,blnWHStPick AS 'WHStPick'    
  ,blnInvBrowser AS 'InvBrowser'    
  ,blnWHShp AS 'WHShp'    
  ,blnWHPrPack AS 'WHPrPack'    
  ,blnWHCont AS 'WHCont'    
  ,blnWHMani AS 'WHMani'    
  ,blnWHShBrow AS 'WHShBrow'    
  ,blnJobCost AS 'JobCost'    
  ,blnDept AS 'Dept'    
  ,blnSubLedger AS 'SubLedger'    
  ,blnCLetters AS 'CLetters'    
  ,blnTop20 AS 'Top20'    
  ,blnTransTab AS 'TransTab'    
  ,blnRecPayJournal AS 'RecPayJournal'    
  ,blnARCats AS 'ARCats'    
  ,blnInvDiscMatrix AS 'InvDiscMatrix'    
  ,blnARBlockDesc AS 'ARBlockDesc'    
  ,blnARBlockUnit AS 'ARBlockUnit'    
  ,blnARBlockDiscount AS 'ARBlockDiscount'    
  ,blnAPBlockDesc AS 'APBlockDesc'    
  ,blnAPBlockUnit AS 'APBlockUnit'    
  ,blnAPBlockDiscount AS 'APBlockDiscount'    
  ,blnWHDelDriver AS 'WHDelDriver'    
  ,blnWHDelVehicle AS 'WHDelVehicle'    
  ,blnWHDelRoute AS 'WHDelRoute'    
  ,blnARCreditRequests AS 'ARCreditRequests'    
  ,blnBITab AS 'BITab'    
  ,blnBICubeAdd AS 'BICubeAdd'    
  ,blnBICubeEdit AS 'BICubeEdit'    
  ,blnBICubeDelete AS 'BICubeDelete'    
  ,blnBIViewAdd AS 'BIViewAdd'    
  ,blnBIViewEdit AS 'BIViewEdit'    
  ,blnBIViewDelete AS 'BIViewDelete'    
  ,blnARSendPricelists AS 'ARSendPricelists'    
  ,blnInvNumConv AS 'InvNumConv'    
  ,blnInvSerialTypes AS 'InvSerialTypes'    
  ,blnAPCats AS 'APCats'    
  ,blnARPrintPreview AS 'ARPrintPreview'    
  ,blnARCNChangesAllowed AS 'ARCNChangesAllowed'    
  ,blnARPriceChangeAllowed AS 'ARPriceChangeAllowed'    
  ,blnAPPriceChangeAllowed AS 'APPriceChangeAllowed'    
  ,blnAPDNChangesAllowed AS 'APDNChangesAllowed'    
  ,blnARInvoiceAdjAllowed AS 'ARInvoiceAdjAllowed'    
  ,blnARAllowCreditNotesAndRequestItems AS 'ARAllowCreditNotesAndRequestItems'    
  ,blnAPPaymentApprovals AS 'APPaymentApprovals'    
  ,blnInvForecasting AS 'InvForecasting'    
  ,blnInvBarcode AS 'InvBarcode'    
  ,blnInvItemCostUpdater AS 'InvItemCostUpdater'    
  ,blnInvItemRenaming AS 'InvItemRenaming'    
  ,blnAPECOMSettings AS 'APECOMSettings'    
  ,blnAPShowStatsOnDocs AS 'APShowStatsOnDocs'    
  ,blnARShowStatsOnDocs AS 'ARShowStatsOnDocs'    
  ,blnGLOpenItemAlloc AS 'GLOpenItemAlloc'    
  ,blnGLLR AS 'GLLR'    
  ,blnGLLRFin AS 'GLLRFin'    
  ,blnGLLRFinBalSheetStd AS 'GLLRFinBalSheetStd'    
  ,blnGLLRFinBalSheetComp AS 'GLLRFinBalSheetComp'    
  ,blnGLLRFinIncomeStd AS 'GLLRFinIncomeStd'    
  ,blnGLLRFinIncomeComp AS 'GLLRFinIncomeComp'    
  ,blnGLLRFinIncomeMulti AS 'GLLRFinIncomeMulti'    
  ,blnGLLRFinIncomeGP AS 'GLLRFinIncomeGP'    
  ,blnGLLRFinIncomeMini AS 'GLLRFinIncomeMini'    
  ,blnGLLRFinTrialBal AS 'GLLRFinTrialBal'    
  ,blnGLLRFinPerMovement AS 'GLLRFinPerMovement'    
  ,blnGLLRFinMultiCompany AS 'GLLRFinMultiCompany'    
  ,blnGLLRTran AS 'GLLRTran'    
  ,blnGLLRTranLedger AS 'GLLRTranLedger'    
  ,blnGLLRTranEntryType AS 'GLLRTranEntryType'    
  ,blnGLLRTranTax AS 'GLLRTranTax'    
  ,blnGLLRTranDocTran AS 'GLLRTranDocTran'    
  ,blnGLLRBudgets AS 'GLLRBudgets'    
  ,blnGLLRBudgetsAmounts AS 'GLLRBudgetsAmounts'    
  ,blnGLLRBudgetsCompIncome AS 'GLLRBudgetsCompIncome'    
  ,blnGLLRBudgetsCompIncomeF AS 'GLLRBudgetsCompIncomeF'    
  ,blnGLLRBudgetsCompBalSheet AS 'GLLRBudgetsCompBalSheet'    
  ,blnGLLRDept AS 'GLLRDept'    
  ,blnGLLRDeptBalSheetStd AS 'GLLRDeptBalSheetStd'    
  ,blnGLLRDeptIncomeStd AS 'GLLRDeptIncomeStd'    
  ,blnGLLRDeptIncomeComp AS 'GLLRDeptIncomeComp'    
  ,blnGLLRDeptTrialBal AS 'GLLRDeptTrialBal'    
  ,blnGLLRDeptLedger AS 'GLLRDeptLedger'    
  ,blnGLLRDeptBudgetAmounts AS 'GLLRDeptBudgetAmounts'    
  ,blnGLLRDeptCompIncome AS 'GLLRDeptCompIncome'    
  ,blnGLLRLists AS 'GLLRLists'    
  ,blnGLLRListsAccounts AS 'GLLRListsAccounts'    
  ,blnGLLRListsAccountSets AS 'GLLRListsAccountSets'    
  ,blnGLLRListsJournalCodes AS 'GLLRListsJournalCodes'    
  ,blnGLCR AS 'GLCR'    
  ,blnGLCRFin AS 'GLCRFin'    
  ,blnGLCRFinIncome AS 'GLCRFinIncome'    
  ,blnGLCRFinIncomeMulti AS 'GLCRFinIncomeMulti'    
  ,blnGLCRTran AS 'GLCRTran'    
  ,blnGLCRTranAlloc AS 'GLCRTranAlloc'    
  ,blnGLCRTranAllocMissing AS 'GLCRTranAllocMissing'    
  ,blnGLCRBudget AS 'GLCRBudget'    
  ,blnGLCRBudgetCompBudget AS 'GLCRBudgetCompBudget'    
  ,blnGLCRLists AS 'GLCRLists'    
  ,blnGLCRListsProfitCenters AS 'GLCRListsProfitCenters'    
  ,blnAPPR AS 'APPR'    
  ,blnAPPRFin AS 'APPRFin'    
  ,blnAPPRFinVendorAged AS 'APPRFinVendorAged'    
  ,blnAPPRTran AS 'APPRTran'    
  ,blnAPPRTranVendorPurchases AS 'APPRTranVendorPurchases'    
  ,blnAPPRTranPendingPurchaseOrders AS 'APPRTranPendingPurchaseOrders'    
  ,blnAPPRTranPendingPurchaseReq AS 'APPRTranPendingPurchaseReq'    
  ,blnAPPRTranVendorTran AS 'APPRTranVendorTran'
  ,blnAPETIMSPurchasesTrans AS 'APETIMSPurchasesTrans'
  ,blnAPPRLists AS 'APPRLists'    
  ,blnAPPRListsVendors AS 'APPRListsVendors'    
  ,blnAPPRListsContacts AS 'APPRListsContacts'    
  ,blnARRR AS 'ARRR'    
  ,blnARRRFin AS 'ARRRFin'    
  ,blnARRRFinCustAged AS 'ARRRFinCustAged'    
  ,blnARRRFinCallSheet AS 'ARRRFinCallSheet'    
  ,blnARRRFinCustStatements AS 'ARRRFinCustStatements'    
  ,blnARRRFinSalesStatements AS 'ARRRFinSalesStatements'    
  ,blnARRRFinInvoiceGP AS 'ARRRFinInvoiceGP'    
  ,blnARRRFinCustProfiability AS 'ARRRFinCustProfiability'    
  ,blnARRRFinCustSalesTargets AS 'ARRRFinCustSalesTargets'    
  ,blnARRRFinCustSalesTrends AS 'ARRRFinCustSalesTrends'    
  ,blnARRRFinSPPerf AS 'ARRRFinSPPerf'    
  ,blnARRRFinSPTargets AS 'ARRRFinSPTargets'    
  ,blnARRRTran AS 'ARRRTran'    
  ,blnARRRTranCustSales AS 'ARRRTranCustSales'    
  ,blnARRRTranSPSales AS 'ARRRTranSPSales'    
  ,blnARRRTranSPMissing AS 'ARRRTranSPMissing'    
  ,blnARRRTranInvoiceDocs AS 'ARRRTranInvoiceDocs'    
  ,blnARRRTranCashUp AS 'ARRRTranCashUp'    
  ,blnARRRTranPendingSalesOrders AS 'ARRRTranPendingSalesOrders'    
  ,blnARRRTranClosedSalesOrders AS 'ARRRTranClosedSalesOrders'    
  ,blnARRRTranCredits AS 'ARRRTranCredits'    
  ,blnARRRTranCustTran AS 'ARRRTranCustTran'    
  ,blnARRRTranOpenQuotes AS 'ARRRTranOpenQuotes'    
  ,blnARRRLists AS 'ARRRLists'    
  ,blnARRRListsPricelist AS 'ARRRListsPricelist'    
  ,blnARRRListsCustomers AS 'ARRRListsCustomers'    
  ,blnARRRListsSalesPersons AS 'ARRRListsSalesPersons'    
  ,blnARRRListsContactsList AS 'ARRRListsContactsList'    
  ,blnIR AS 'IR'    
  ,blnIRFin AS 'IRFin'    
  ,blnIRFinInvAged AS 'IRFinInvAged'    
  ,blnIRFinInvValuation AS 'IRFinInvValuation'    
  ,blnIRFinLocSum AS 'IRFinLocSum'    
  ,blnIRFinInvLoc AS 'IRFinInvLoc'    
  ,blnIRFinQuantity AS 'IRFinQuantity'    
  ,blnIRFinQuantityLoc AS 'IRFinQuantityLoc'    
  ,blnIRFinInvSalesTargets AS 'IRFinInvSalesTargets'    
  ,blnIRTran AS 'IRTran'    
  ,blnIRTranInvSales AS 'IRTranInvSales'    
  ,blnIRTranInvTran AS 'IRTranInvTran'    
  ,blnIRTranInvLedger AS 'IRTranInvLedger'    
  ,blnIRTranInvLedgerLoc AS 'IRTranInvLedgerLoc'    
  ,blnIRTranNegInvCorrections AS 'IRTranNegInvCorrections'    
  ,blnIRTranPricelistChangeLog AS 'IRTranPricelistChangeLog'    
  ,blnIRTranSegInvMovement AS 'IRTranSegInvMovement'    
  ,blnIRTranSegInvSales AS 'IRTranSegInvSales'    
  ,blnIRTranSerializedItemTracking AS 'IRTranSerializedItemTracking'    
  ,blnIRLists AS 'IRLists'    
  ,blnIRListsPricing AS 'IRListsPricing'    
  ,blnIRListsInventory AS 'IRListsInventory'    
  ,blnIRListsStockCountSheets AS 'IRListsStockCountSheets'    
  ,blnIRListsAdjustments AS 'IRListsAdjustments'    
  ,blnWR AS 'WR'    
  ,blnWROrders AS 'WROrders'    
  ,blnWROrdersPendingPurchaseOrders AS 'WROrdersPendingPurchaseOrders'    
  ,blnWROrdersPendingSalesOrders AS 'WROrdersPendingSalesOrders'    
  ,blnPOSR AS 'POSR'    
  ,blnPOSRFin AS 'POSRFin'    
  ,blnPOSRFinDrawerClosing AS 'POSRFinDrawerClosing'    
  ,blnPOSRFinCashierVariance AS 'POSRFinCashierVariance'    
  ,blnPOSRLists AS 'POSRLists'    
  ,blnPOSRListsCashDrawers AS 'POSRListsCashDrawers'    
  ,blnBR AS 'BR'    
  ,blnBRProj AS 'BRProj'    
  ,blnBRProjTender AS 'BRProjTender'    
  ,blnBRProjAlloc AS 'BRProjAlloc'    
  ,blnBRProjMissingAllow AS 'BRProjMissingAllow'    
  ,blnBRProjSalesMatrix AS 'BRProjSalesMatrix'    
  ,blnBRProjPurchMatrix AS 'BRProjPurchMatrix'    
  ,blnBRProjCombinedMatrix AS 'BRProjCombinedMatrix'    
  ,blnBRProjActvsBudget AS 'BRProjActvsBudget'    
  ,blnBRAdmin AS 'BRAdmin'    
  ,blnBRAdminHistory AS 'BRAdminHistory'    
  ,blnSMSRLog AS 'SMSRLog'    
  ,blnGLJournalReports AS 'GLJournalReports'    
  ,blnGLTransactionReports AS 'GLTransactionReports'    
  ,blnAPPaymentsReports AS 'APPaymentsReports'    
  ,blnAPTransactionsReports AS 'APTransactionsReports'    
  ,blnARReceiptsReports AS 'ARReceiptsReports'    
  ,blnARTransactionsReports AS 'ARTransactionsReports'    
  ,blnISalesReports AS 'ISalesReports'    
  ,blnITransactionsReports AS 'ITransactionsReports'    
  ,blnSMSR AS 'SMSR'    
  ,blnFHQCanApprove AS 'FHQCanApprove'    
  ,blnFHQCreatePurchaseOrder AS 'FHQCreatePurchaseOrder'    
  ,blnARViewMarginPercentage AS 'ARViewMarginPercentage'    
  ,blnAPPendingPayApprovals AS 'APPendingPayApprovals'    
  ,blnGLLRTranCashBook AS 'GLLRTranCashBook'    
  ,blnAPPRTranVendAccrual AS 'APPRTranVendAccrual'    
  ,blnIRListsItemWhereUsed AS 'IRListsItemWhereUsed'    
  ,blnIRTranBillOfMaterials AS 'IRTranBillOfMaterials'    
  ,blnAPBulkRFQ AS 'APBulkRFQ'    
  ,blnInvProdSchedule AS 'InvProdSchedule'    
  ,blnInvWorkCentres AS 'InvWorkCentres'    
  ,blnIRListsProductionSchedule AS 'IRListsProductionSchedule'    
  ,blnAPPRTranBulkRFQ AS 'APPRTranBulkRFQ'    
  ,blnRecReceiptsReversal AS 'RecReceiptsReversal'    
  ,blnARRRTranSalesSummary AS 'ARRRTranSalesSummary'    
  ,blnDashMain AS 'DashMain'    
  ,blnDashBusiness AS 'DashBusiness'    
  ,blnDashAR AS 'DashAR'    
  ,blnARChangeCustOnSO AS 'ARChangeCustOnSO'    
  ,blnARChangeCustOnSQ AS 'ARChangeCustOnSQ'    
  ,blnAPOrdersRemove AS 'APOrdersRemove'    
  ,blnAPReqRemove AS 'APReqRemove'    
  ,blnAROrdersRemove AS 'AROrdersRemove'    
  ,blnARQuotesRemove AS 'ARQuotesRemove'    
  ,blnARCreditRequestsRemove AS 'ARCreditRequestsRemove'    
  ,blnAPBlockTax AS 'APBlockTax'    
  ,blnARBlockTax AS 'ARBlockTax'    
  ,blnAPBulkRFQRemove AS 'APBulkRFQRemove'    
  ,blnARQuSysRemove AS 'ARQuSysRemove'    
  ,blnWHStPickRemove AS 'WHStPickRemove'    
  ,blnWHRecRemove AS 'WHRecRemove'    
  ,blnWHShpRemove AS 'WHShpRemove'    
  ,blnWHContRemove AS 'WHContRemove'    
  ,blnARMatrixType AS 'ARMatrixType'    
  ,blnARMatrixTypeEdit AS 'ARMatrixTypeEdit'    
  ,blnARMatrixTypeRemove AS 'ARMatrixTypeRemove'    
  ,blnIRTranInvEfficiency AS 'IRTranInvEfficiency'    
  ,blnInvLotNumExpiryDates AS 'InvLotNumExpiryDates'    
  ,blnARRRTranMatrixTypeChangeLog AS 'ARRRTranMatrixTypeChangeLog'    
  ,blnInvBulkLabelPrinting AS 'InvBulkLabelPrinting'    
  ,bitInvVoucher AS 'InvVoucher'    
  ,blnInvShowItemCost AS 'InvShowItemCost'    
  ,bitInvWebstoreSync AS 'InvWebstoreSync'    
  ,strSalesName AS 'SalesName'    
  ,IsNull(intARDept, 0) AS 'ARDept'    
  ,IsNUll(intAPDept, 0) AS 'APDept'    
  ,bitARVoucerReprint AS 'ARVoucerReprint'    
  ,blnARChangeDocInfo AS 'ARChangeDocInfo'    
  ,blnAPChangeDocInfo AS 'APChangeDocInfo'    
  ,blnFADepreciateAsset AS 'FADepreciateAsset'    
  ,blnFAAssets AS 'FAAssets'    
  ,blnFAAssetTypes AS 'FAAssetTypes'    
  ,blnFADepreciationMethods AS 'FADepreciationMethods'    
  ,blnFACostTypes AS 'FACostTypes'    
  ,blnFADisposalMethods AS 'FADisposalMethods'    
  ,blnFAR AS 'FAR'    
  ,blnFARSummary AS 'FARSummary'    
  ,blnFARAssetListing AS 'FARAssetListing'    
  ,blnFARDisposals AS 'FARDisposals'    
  ,blnFARDepreciationListing AS 'FARDepreciationListing'    
  ,blnFARAssetPurchases AS 'FARAssetPurchases'    
  ,blnFARAssetEfficiency AS 'FARAssetEfficiency'    
  --blnFARAssetClass As 'FARAssetClass',          
  ,blnInvDimensions AS 'InvDimensions'    
  ,blnInvValueBasedPrice AS 'InvValueBasedPrice'    
  ,blnInvValueBasedPriceEdit AS 'InvValueBasedPriceEdit'    
  ,blnInvValueBasedPriceRemove AS 'InvValueBasedPriceRemove'    
  ,blnFARTran AS 'FARTran'    
  ,blnFARLists AS 'FARLists'    
  ,blnARSOAdjAllowed AS 'ARSOAdjAllowed'    
  ,blnARSQAdjAllowed AS 'ARSQAdjAllowed'    
  ,blnARFHQAdjAllowed AS 'ARFHQAdjAllowed'    
  ,blnARCNAdjAllowed AS 'ARCNAdjAllowed'    
  ,blnARCRAdjAllowed AS 'ARCRAdjAllowed'    
  ,blnARCreditNotes AS 'ARCreditNotes'    
  ,blnARChangeDept AS 'ARChangeDept'    
  ,blnAPInvoiceAdjAllowed AS 'APInvoiceAdjAllowed'    
  ,blnAPPOAdjAllowed AS 'APPOAdjAllowed'    
  ,blnAPPRAdjAllowed AS 'APPRAdjAllowed'    
  ,blnARChangeCenter AS 'ARChangeCenter'    
  ,bitPOSEnableEditDiscount AS 'POSEnableEditDiscount'    
  ,blnPOSOrders AS 'POSOrders'    
  ,blnPOSQuotes AS 'POSQuotes'    
  ,blnPOSConvertOrders AS 'POSConvertOrders'    
  ,blnPOSConvertQuotes AS 'POSConvertQuotes'    
  ,blnPOSAuthPayByAccount AS 'POSAuthPayByAccount'    
  ,blnPOSAuthoriseRefunds AS 'POSAuthoriseRefunds'    
  ,blnARCreditBlockSI AS 'ARCreditBlockSI'    
  ,blnARCreditBlockSO AS 'ARCreditBlockSO'    
  ,blnARDeliveryAdvice AS 'ARDeliveryAdvice'    
  ,blnARDeliveryAdviceRemove AS 'ARDeliveryAdviceRemove'    
  ,blnInvCanChangeSellingPrice AS 'InvCanChangeSellingPrice'    
  ,blnARSalesPersonChangeApproval AS 'ARSalesPersonChangeApproval'    
  ,blnIRFinInvCostAnalysis AS 'IRFinInvCostAnalysis'    
  ,blnMFWorkOrders AS 'MFWorkOrders'    
  ,blnMFJobs AS 'MFJobs'    
  ,blnMFJobAdjustApproval AS 'MFJobAdjustApproval'    
  ,blnMFProductionSchedule AS 'MFProductionSchedule'    
  ,blnMFPostWIP AS 'MFPostWIP'    
  ,blnMFBillOfMaterial AS 'MFBillOfMaterial'    
  ,blnMFBOMAdjustApproval AS 'MFBOMAdjustApproval'    
  ,blnMFWorkCentres AS 'MFWorkCentres'    
  ,blnMFLabour AS 'MFLabour'    
  ,blnMFMachinery AS 'MFMachinery'    
  ,blnMFTransferJobs AS 'MFTransferJobs'    
  ,blnMFR AS 'MFR'    
  ,blnMFRTran AS 'MFRTran'    
  ,blnMFRWorkInProgress AS 'MFRWorkInProgress'    
  --,0 AS 'MFRVariance'            
  --,0 AS 'MFREfficiency'            
  ,blnMFRLists AS 'MFRLists'    
  ,blnMFRBillOfMaterial AS 'MFRBillOfMaterial'    
  ,blnMFRResource AS 'MFRResource'    
  ,blnMFRItemWhereUsed AS 'MFRItemWhereUsed'    
  ,blnMFRSerialLotOutOfSeq AS 'MFRSerialLotOutOfSeq'    
  ,blnMFRMRP AS 'MFRMRP'    
  --,0 AS 'MFRResEfficiency'            
  ,blnInvWorkOrder AS 'InvWorkOrder'    
  ,blnInvIntReq AS 'InvIntReq'    
  ,blnInvIssReq AS 'InvIssReq'    
  ,blnARRRTranCustAccrual AS 'ARRRTranCustAccrual'    
  ,blnARRRFinOrderStatement AS 'ARRRFinOrderStatement'    
  ,blnIRListsInvIntReq AS 'IRListsInvIntReq'    
  ,blnMFCloseJobs AS 'MFCloseJobs'    
  ,blnFAAssetsDisposal AS 'FAAssetsDisposal'    
  ,blnFAAssetsLocations AS 'FAAssetsLocations'    
  ,blnFARAssetRegister AS 'FARAssetRegister'    
  ,blnDashAP AS 'DashAP'    
  ,blnDashInventory AS 'DashInventory'    
  ,blnDashWarehouse AS 'DashWarehouse'    
  ,blnAPSetupPOApprovers AS 'APSetupPOApprovers'    
  ,blnApprovePurchaseOrders AS 'ApprovePurchaseOrders'    
  ,blnMFRWCTransfer AS 'MFRWCTransfer'    
  ,blnInvCatMarginApproval AS 'InvCatMarginApproval'    
  ,blnMobSa AS 'MobSa'    
  ,blnMobSaOrdProcess AS 'MobSaOrdProcess'    
  ,blnMobSaGeoTrack AS 'MobSaGeoTrack'    
  ,blnMobPhDash AS 'MobPhDash'    
  ,blnMobPhDashBankBal AS 'MobPhDashBankBal'    
  ,blnMobPhDashSalesItemComp AS 'MobPhDashSalesItemComp'    
  ,blnMobPhDashSalesCustCat AS 'MobPhDashSalesCustCat'    
  ,blnMobPhDashOutCustCat AS 'MobPhDashOutCustCat'    
  ,blnMobPhDashCustVendBal AS 'MobPhDashCustVendBal'    
  ,blnMobPhDashInvQty AS 'MobPhDashInvQty'    
  ,blnMobPhDashSalesPerf AS 'MobPhDashSalesPerf'    
  ,blnMobPhPOApproval AS 'MobPhPOApproval'    
  ,blnMobPhDashTimesheet AS 'MobPhDashTimesheet'    
  ,blnBRProjClaimStatement AS 'BRProjClaimStatement'    
  ,blnARRRTranCancelSalesDocs AS 'ARRRTranCancelSalesDocs'    
  ,blnAREditDeliveryMethod AS 'AREditDeliveryMethod'    
  ,blnInvIsRepackaging AS 'InvIsRepackaging'    
  ,blnIRRepackaging AS 'IRRepackaging'    
  ,blnContractBilling AS 'ContractBilling'    
  ,blnContractBillingType AS 'ContractBillingType'    
  ,blnProcessContractBilling AS 'ProcessContractBilling'    
  ,blnARRRecurringInvoice AS 'ARRRecurringInvoice'    
  ,blnARRContractExpiry AS 'ARRContractExpiry'    
  ,blnARRContractReconciliation AS 'ARRContractReconciliation'    
  ,blnAPReOrders AS 'APReOrders'    
  ,blnARShipmentsAuditTrail AS 'ARShipmentsAuditTrail'    
  ,blnARSalesOrderEDI AS 'ARSalesOrderEDI'    
  ,blnAPGRVAdjustmentApproval AS 'WHRecAdjust'    
  ,blnAPReturnSelection AS 'APReturn'    
  ,blnAPReturnAdjustmentApproval AS 'RetAprAdjust'    
  ,blnARDAAdjustmentApproval AS 'ARDeliveryAdviceAdjustApproval'    
  ,blnWHDelMethod AS WHDelMethod    
  ,tblUsersDocs.strUserName    
  ,strInvNumber AS 'InvNumber'    
  ,strSONumber AS 'SONumber'    
  ,strQuoteNumber AS 'QuoteNumber'    
  ,strPINumber AS 'PINumber'    
  ,strPONumber AS 'PONumber'    
  ,strRCNumber AS 'RCNumber'    
  ,strDPNumber AS 'DPNumber'    
  ,strJENumber AS 'JENumber'    
  ,strCNNumber AS 'CNNumber'    
  ,strDNNumber AS 'DNNumber'    
  ,strRQNumber AS 'RQNumber'    
  ,strQuSysNumber AS 'QuSysNumber'    
  ,strGRVNumber AS 'GRVNumber'    
  ,strTKNumber AS 'TKNumber'    
  ,strSHNumber AS 'SHNumber'    
  ,strMSNumber AS 'MSNumber'    
  ,strCRNumber AS 'CRNumber'    
  ,strRFQNumber AS 'RFQNumber'    
  ,strPSNumber AS 'PSNumber'    
  ,strDANumber AS 'DANumber'    
  ,strWONumber AS 'WONumber'    
  ,strJBNumber AS 'JBNumber'    
  ,strWPNumber AS 'WPNumber'    
  ,strIWONumber AS 'IWONumber'    
  ,strPYNumber AS 'PYNumber'    
  ,strCBNumber AS 'CBNumber'    
  ,strPRONumber AS 'PRONumber'    
  ,strBMNumber AS 'BMNumber'    
  ,strWSQuoteNumber AS 'WSQuoteNumber'    
  ,strWSPJBNumber AS 'WSPJBNumber'    
  ,strWSIJBNumber AS 'WSIJBNumber'    
  ,strWSWIPNumber AS 'WSWIPNumber'    
  ,blnIRTranLotNumMovement AS 'IRTranLotNumberMovement'    
  ,blnBankManager AS 'BankManager'    
  ,blnAPPRTranInvoiceDocs AS 'APPRTranInvoiceDocs'    
  ,blnMFRJobStatus AS 'MFRJobStatus'    
  ,blnDashManage AS 'DashManage'    
  ,blnGLMergeAccounts AS 'MergeAcct'    
  ,blnWSWorkshop AS 'WSWorkshop'    
  ,blnWSBrowser AS 'WSBrowser'    
  ,blnWSInvoice AS 'WSInvoice'    
  ,blnWSInvoiceAdjAllowed AS 'WSInvoiceAdjAllowed'    
  ,blnWSPrintPreview AS 'WSPrintPreview'    
  ,blnWSProcessJob AS 'WSProcessJob'    
  ,blnWSProcessJobRemove AS 'WSProcessJobRemove'    
  ,blnWSProcessJobAdjAllowed AS 'WSProcessJobAdjAllowed'    
  ,blnWSQuote AS 'WSQuote'    
  ,blnWSQuoteRemove AS 'WSQuoteRemove'    
  ,blnWSQuoteAdjAllowed AS 'WSQuoteAdjAllowed'    
  ,blnWSCreditNote AS 'WSCreditNote'    
  ,blnWSCNChangesAllowed AS 'WSCNChangesAllowed'    
  ,blnWSCNAdjAllowed AS 'WSCNAdjAllowed'    
  ,blnWSCreditRequest AS 'WSCreditRequest'    
  ,blnWSCreditRequestsRemove AS 'WSCreditRequestsRemove'    
  ,blnWSCRAdjAllowed AS 'WSCRAdjAllowed'    
  ,blnWSAllowCreditNotesAndRequestItems AS 'WSAllowCreditNotesAndRequestItems'    
  ,blnWSReceipts AS 'WSReceipts'    
  ,blnWSReceiptsReversal AS 'WSReceiptsReversal'    
  ,blnWSServiceableItem AS 'WSServiceableItem'    
  ,blnWSServiceableItemType AS 'WSServiceableItemType'    
  ,blnWSJobTemplate AS 'WSJobTemplate'    
  ,blnWSSetupTechnician AS 'WSSetupTechnician'    
  ,blnWSSchedule AS 'WSSchedule'    
  ,blnWSInventoryIssue AS 'WSInventoryIssue'    
  ,blnworkshop0 AS 'workshop0'    
  ,blnWSTran AS 'WSTran'    
  ,blnWSWorkInProgress AS 'WSWorkInProgress'    
  ,blnWSJobProfitability AS 'WSJobProfitability'    
  ,blnWSResourceUsage AS 'WSResourceUsage'    
  ,blnWSJobCostVariance AS 'WSJobCostVariance'    
  ,blnWSLists AS 'WSLists'    
  ,blnWSJobTemplateList AS 'WSJobTemplateList'    
  ,blnWSProcDocuments AS 'WSProcDocuments'    
  ,blnWSViewMarginPercentage AS 'WSViewMarginPercentage'    
  ,blnWSCreditBlockIJB AS 'WSCreditBlockIJB'    
  ,blnWSCreditBlockPJB AS 'WSCreditBlockPJB'    
  ,blnARConfirmDeliveryAllowed AS 'ARConfirmDeliveryAllowed'    
  ,blnGLContracts AS 'GLContracts'    
  ,blnGLLRContracts AS 'GLLRContracts'    
  ,blnGLLRContractsMonthly AS 'GLLRContractsMonthly'    
  ,blnGLLRContractsIncomeStatement AS 'GLLRContractsIncomeStatement'    
  ,blnPOSPayouts AS 'POSPayouts'    
  ,blnARLayby AS 'ARLayby'    
  ,blnARChangeCustOnLB AS 'ARChangeCustOnLB'    
  ,blnARLaybyRemove AS 'ARLaybyRemove'    
  ,blnARLBAdjAllowed AS 'ARLBAdjAllowed'    
  ,blnARCreditBlockLB AS 'ARCreditBlockLB'    
  ,blnPOSLayby AS 'POSLayby'    
  ,blnPOSConvertLayby AS 'POSConvertLayby'    
  ,blnAPVenRecon AS 'APVenRecon'    
  ,blnAPVenReconWorksheet AS 'APVenReconWorksheet'    
  ,blnAPBuyers AS 'APBuyers'    
  ,blnAPVenReconTypes AS 'APVenReconTypes'    
  ,blnBRProjResources AS 'BRProjResources'    
  ,blnBRProjFinInfo AS 'BRProjFinInfo'    
  ,blnBRProjChecklist AS 'BRProjChecklist'    
  ,blnBRProjCashFlow AS 'BRProjCashFlow'    
  ,blnARPODManagement AS 'ARPODManagement'    
  ,blnInvEmployee AS 'InvEmployee'    
  ,blnApproveInventoryRequistion AS 'ApproveInventoryRequistion'    
  ,blnAPSetupIRApprovers AS 'APSetupIRApprovers'    
  ,strLBNumber AS 'LBNumber'    
  ,blnPOSAuthoriseReturn AS 'POSAuthoriseReturn'    
  --,blnSwitchCmp  AS 'SwitchCompanies'            
  ,blnIBTBranchTransOrder AS 'IBTBranchTransferOrder'    
  ,blnIBTBranchTrans AS 'IBTBranchTransfer'    
  ,blnIBTBranchTransReceipt AS 'IBTBranchTransferReceipt'    
  ,blnIBTGoodInTransitRpt AS 'IBTGoodsInTransitReport'    
  ,blnARSoftBOMConfiguration AS 'ARSoftBOMConfiguration'    
  ,blnPOSFormsSetup AS 'POSFormsSetup'    
  ,blnBinTransfer AS 'BinTransfer'    
  ,blnIRFinInvPurchaseTargets AS 'IRFinInvPurchaseTargets'    
  ,blnAPPRBudOnPRApproval AS 'APPRBudOnPRApproval'    
  ,blnAPBudgetAnalysis AS 'APBudgetAnalysis'    
  ,blnAPZRAPurchasesTrans AS 'APZRAPurchasesTrans'
  ,blnGLZRAVatTrans AS 'GLZRAVatTrans'
  ,blnPOSCreateCustomer AS 'POSCreateCustomer'    
  ,blnPOSSync AS 'POSSync'    
  ,blnMFBlockDesc AS 'MFBOMBlockDesc'    
  ,blnTrackUser AS 'TrackUser'    
  ,blnMobPerformanceDashboard AS 'MobPerformanceDashboard'    
  ,blnOverBudgetReq AS 'OverBudgetReq'    
  ,blnNonBudgetReq AS 'NonBudgetReq'    
  ,blnMaterialProfile AS 'MaterialProfile'    
  ,blnPOSReinstallStoredProcedures AS 'POSReinstallStoredProcedures'    
  ,blnPOSRePrintLastInvoice AS 'POSRePrintLastInvoice'    
  ,blnCRMTaskListing AS 'CRMTaskListing'    
  ,blnCRMOverdueTask AS 'CRMOverdueTask'    
  ,blnCRMStatusGroups AS 'CRMStatusGroups'    
  ,blnCRMProductivity AS 'CRMProductivity'    
  ,blnDashCRM AS 'DashCRM'    
  ,blnPOSOpenCashDrawer AS 'POSOpenCashDrawer'    
  ,blnESDSetupRegistration AS 'ESDSetupRegistration'    
  ,bitMobileUserLoginHistory AS 'MobileUserLoginHistory'    
  ,blnPOSReprintInvoiceFromHistory AS 'POSReprintInvoiceFromHistory'    
  ,blnPOSOpenPreviousReceipts AS 'POSOpenPreviousReceipts'    
  ,blnPOSReversePreviousReceipts AS 'POSReversePreviousReceipts'    
  ,blnUserRegDetails AS 'UserRegDetails'    
  ,blnIsMobileUser AS 'IsMobileUser'    
  ,blnIsMonitorSalespersonsTracking AS 'IsMonitorSalespersonsTracking'    
  ,blnIsMobileSalesOrder AS 'IsMobileSalesOrder'    
  ,blnIsMobileSalesQuote AS 'IsMobileSalesQuote'    
  ,blnIsMobileFreehandQuote AS 'IsMobileFreehandQuote'    
  ,blnIsMobileCRMActivities AS 'IsMobileCRMActivities'    
  ,blnIsMobileCapturePOD AS 'IsMobileCapturePOD'    
  ,blnIsMobileCustomers AS 'IsMobileCustomers'    
  ,blnIsMobileExpenseClaims AS 'IsMobileExpenseClaims'    
  ,blnIsMobileDeliveryAdvice AS 'IsMobileDeliveryAdvice'    
  ,blnIsMobileEnuiriesByItem AS 'IsMobileEnuiriesByItem'    
  ,blnIsMobileEnuiriesByLocation AS 'IsMobileEnuiriesByLocation'    
  ,blnIsMobileWarehouseTransfer AS 'IsMobileWarehouseTransfer'    
  ,blnIsMobileBinTransfer AS 'IsMobileBinTransfer'    
  ,blnIsMobileGoodsReceiving AS 'IsMobileGoodsReceiving'    
  ,blnIsMobileStockCount AS 'IsMobileStockCount'    
  ,blnIsMobilePutAway AS 'IsMobilePutAway'    
  ,blnIsMobileStockPick AS 'IsMobileStockPick'    
  ,blnIsMobileJobWorkCentreTransfer AS 'IsMobileJobWorkCentreTransfer'    
  ,blnIsMobileInventoryIssue AS 'IsMobileInventoryIssue'    
  ,strVendName AS 'VendName'    
  ,blnIsMobileWSCreateQuotation AS 'IsMobileWSCreateQuotation'    
  ,blnIsMobileWSProcessJob AS 'IsMobileWSProcessJob'    
  ,blnIsMobileWSSchedule AS 'IsMobileWSSchedule'    
  ,blnIsMobileWSInventoryIssue AS 'IsMobileWSInventoryIssue'    
  ,blnIsMobileProcuPurchaseRequisitions AS 'IsMobileProcuPurchaseRequisitions'    
  ,blnIsMobileProcuPurchaseOrder AS 'IsMobileProcuPurchaseOrder'    
  ,blnIsMobileWSServiceableItem AS 'IsMobileWSServiceableItem'    
  ,blnWSServiceHistory AS 'WSServiceHistory'    
  ,blnMFReverseJobs AS 'MFReverseJobs'    
  ,blnMFReverseJobEditQty AS 'MFReverseJobEditQty'    
  ,blnWRShipment AS 'WRShipmentReport'    
  ,blnIsMobileSalesInvoice AS 'IsMobileSalesInvoice'    
  ,blnIsMobileCreditNoteApproval AS 'IsMobileCreditNoteApproval'    
  ,bitIsEditComponentCost AS 'IsEditComponentCost'    
  ,blnIsMobileFinance AS 'IsMobileFinance'    
  ,blnIsDispensingCashOnCashGuard AS 'IsDispensingCashOnCashGuard'    
  ,blnMFBOMItemCostsOnReport AS 'MFBOMItemCostsOnReport'    
  ,blnInvInventoryActive AS 'InvInventoryActive'    
  ,blnInvIncompatibleItems AS 'InvIncompatibleItems'    
  ,blnAPRebateSetup AS 'APRebateSetup'    
  ,blnAPProcessRebate AS 'APProcessRebate'    
  ,blnAPRebateReport AS 'APRebateReport'    
  ,blnARRRFinSPCOMM AS 'ARRRFinSPCOMM'    
  ,strDefaultLanguage AS 'DefaultLanguage'    
  ,blnInvCats AS 'InvCategories'    
  ,blnGLApprovalAdjusment AS 'IsGLApprovalAdjusment'    
  ,blnPOSDrawerGroups AS 'POSDrawerGroups'    
  ,blnCRMMyActivities AS 'CRMMyActivities'  
  ,blnCRMMyActions AS 'CRMMyActions'  
  ,blnCRMUnassignedActivities AS 'CRMUnassignedActivities'  
  ,blnCRMNotifications AS 'CRMNotifications'  
  ,blnCRMAllActivities AS 'CRMAllActivities'  
  ,blnCRMAllActions AS 'CRMAllActions'  
  ,blnCRMReports AS 'CRMReports'  
  ,blnCRMDashboard AS 'CRMDashboard'  
 FROM tblUsers(NOLOCK)    
 LEFT JOIN tblUsersDocs(NOLOCK) ON tblUsers.strUserName = tblUsersDocs.strUserName    
 WHERE (tblUsers.strUserName = @UserName)    
END    
GO
/****** Object:  StoredProcedure [dbo].[UserDocInsert]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UserDocInsert]

@UserName NVARCHAR(20),
@InvNumber NVARCHAR(3),
@SONumber NVARCHAR(3),
@QuoteNumber NVARCHAR(3),
@PINumber NVARCHAR(3),
@PONumber NVARCHAR(3),
@RCNumber NVARCHAR(3),
@DPNumber NVARCHAR(3),
@JENumber NVARCHAR(3),
@CNNumber NVARCHAR(3),
@DNNumber NVARCHAR(3),
@RQNumber NVARCHAR(3),
@QuSysNumber NVARCHAR(3),
@GRVNumber NVARCHAR(3),
@TKNumber NVARCHAR(3),
@SHNumber NVARCHAR(3),
@MSNumber NVARCHAR(3),
@CRNumber NVARCHAR(3),
@RFQNumber NVARCHAR(3),
@PSNumber NVARCHAR(3),
@DANumber NVARCHAR(3),
@WONumber NVARCHAR(3),
@JBNumber NVARCHAR(3),
@WPNumber NVARCHAR(3),
@IWONumber NVARCHAR(3),
@PYNumber NVARCHAR(3),
@CBNumber NVARCHAR(3),
@PRONumber NVARCHAR(3),
@BMNumber NVARCHAR(3),
@LBNumber NVARCHAR(3),
@WSQuoteNumber NVARCHAR(3),
@WSPJBNumber NVARCHAR(3),
@WSIJBNumber NVARCHAR(3),
@WSWIPNumber NVARCHAR(3)
AS
BEGIN	
	Insert into tblUsersDocs (strUserName ,strInvNumber,strSONumber,strQuoteNumber,strPINumber,strPONumber,strRCNumber,strDPNumber,strJENumber,strCNNumber,strDNNumber,
	strRQNumber,strQuSysNumber,strGRVNumber,strTKNumber ,strSHNumber,strMSNumber,strCRNumber,strRFQNumber,strPSNumber,strDANumber,strWONumber,strJBNumber,strWPNumber,strIWONumber,strPYNumber,strCBNumber,strPRONumber,strBMNumber,strLBNumber,
	strWSQuoteNumber, strWSPJBNumber, strWSIJBNumber, strWSWIPNumber)
    VALUES (@UserName ,@InvNumber,@SONumber,@QuoteNumber,@PINumber,@PONumber,@RCNumber,@DPNumber,@JENumber,@CNNumber,@DNNumber,
	@RQNumber,@QuSysNumber,@GRVNumber,@TKNumber ,@SHNumber,@MSNumber,@CRNumber,@RFQNumber,@PSNumber,@DANumber,@WONumber,@JBNumber,@WPNumber,@IWONumber,@PYNumber,@CBNumber,@PRONumber,@BMNumber,@LBNumber,
	@WSQuoteNumber, @WSPJBNumber, @WSIJBNumber, @WSWIPNumber)
END							  
GO
/****** Object:  StoredProcedure [dbo].[UserListTrackingPreference]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UserListTrackingPreference]
	 @UserEmail NVARCHAR(100)
	AS
	BEGIN
	DECLARE @Query NVARCHAR(MAX)=''
	DECLARE @Count int = 0

	IF EXISTS (select name,* from tempdb.sys.tables where name like '#UserDataT%')
	BEGIN
		DROP table  #UserDataT
	END
	CREATE TABLE #UserDataT(	
		[UserEmail] [nvarchar](100) NOT NULL,	
		[IsAdmin] [bit] NOT NULL,	
	)

	IF EXISTS (select name,* from tempdb.sys.tables where name like '#DataT%')
	BEGIN
		DROP table  #DataT
	END
	CREATE TABLE #DataT(	
		[UserEmail] [nvarchar](100) NOT NULL,		
	)

	Set @Query = 'SELECT distinct u.strUserName,blnIsAdmin 
	FROM tblUsers as u
	join tblTrackUsersLocation as t on u.strUserName = t.strUserName
	 Where blnIsAdmin=1 and u.strEmail=@UserEmail' 
	Insert into #UserDataT  EXEC sp_executesql @Query, N'@UserEmail NVARCHAR(50)', @UserEmail
	Select @Count = (select COUNT(UserEmail) from #UserDataT)

	--select @Count AS Data

	IF(@Count = 0)
	  begin
		Set @Query = 'SELECT distinct strUserName FROM tblTrackUsersLocation Where strEmail = @UserEmail'
		Insert into #DataT  EXEC sp_executesql @Query, N'@UserEmail NVARCHAR(50)', @UserEmail
	  end
	ELSE
	  begin
		Set @Query = 'SELECT distinct strUserName FROM tblTrackUsersLocation WHERE strEmail is not null'
		Insert into #DataT  EXEC sp_executesql @Query
	  end

	select * from #DataT

	END 
GO
/****** Object:  StoredProcedure [dbo].[UsersList]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UsersList]
AS
BEGIN
	SELECT tblUsers.strUserName AS 'UserName'
		,strName AS 'Name'
		,strCellNumber AS 'CellNumber'
		,strEmail AS 'Email'
		,strPassword AS 'Password'
		,blnIsAdmin AS 'IsAdmin'
		,blnIsLockedOut AS 'IsLockedOut'
		,blnMustChange AS 'IsMustChange'
		,blnCompany AS 'Company'
		,blnCoFileHandle AS 'CoFileHandle'
		,blnGL AS 'GL'
		,blnPayables AS 'Payables'
		,blnPayPayments AS 'PayPayments'
		,blnReceivables AS 'Receivables'
		,blnRecReceipts AS 'RecReceipts'
		,blnInventory AS 'Inventory'
		,blnInvAdjust AS 'InvAdjust'
		,blnInvCount AS 'InvCount'
		,blnSMS AS 'SMS'
		,blnBusMgr AS 'BusMgr'
		,blnPOS AS 'POS'
		,blnProjects AS 'Projects'
		,dteLastLogin AS 'LastLogin'
		,blnCashBook AS 'CashBook'
		,blnReminders AS 'Reminders'
		,blnMarketing AS 'Marketing'
		,blnCollection AS 'Collection'
		,blnPOSCash AS 'POSCash'
		,blnCoAdmin AS 'CoAdmin'
		,blnMainSum AS 'MainSum'
		,blnAcctSets AS 'AcctSets'
		,blnJournal AS 'Journal'
		,blnBankTrans AS 'BankTrans'
		,blnBankRecon AS 'BankRecon'
		,blnAPPurch AS 'APPurch'
		,blnAPTax AS 'APTax'
		,blnARCredit AS 'ARCredit'
		,blnARSales AS 'ARSales'
		,blnARBatch AS 'ARBatch'
		,blnInvPricelists AS 'InvPricelists'
		,blnInvLoc AS 'InvLoc'
		,blnInvCats AS 'InvCats'
		,blnInvAssbly AS 'InvAssbly'
		,blnInvTrans AS 'InvTrans'
		,blnSMSCredits AS 'SMSCredits'
		,blnPOSDrop AS 'POSDrop'
		,blnPOSTerminalSetup AS 'POSTerminalSetup'
		,blnPOSTerminalSetupList AS 'POSTerminalSetupList'
		,blnPOSProfileMenu AS 'POSProfileMenu'
		,blnBulkSMS AS 'BulkSMS'
		,blnGLExpense AS 'GLExpense'
		,blnDeposits AS 'Deposits'
		,blnInvPDT AS 'InvPDT'
		,blnARPersons AS 'ARPersons'
		,blnAPBatch AS 'APBatch'
		,blnAPBrowser AS 'APBrowser'
		,blnARBrowser AS 'ARBrowser'
		,blnTemplates AS 'Templates'
		,blnAREmail AS 'AREmail'
		,blnWHRec AS 'WHRec'
		,blnWHPick AS 'WHPick'
		,blnWHBatch AS 'WHBatch'
		,uID AS 'uid'
		,blnFiles AS 'Files'
		,strLocName AS 'LocName'
		,blnCycle AS 'Cycle'
		,blnInterest AS 'Interest'
		,blnAPOrders AS 'APOrders'
		,blnAPReq AS 'APReq'
		,blnAROrders AS 'AROrders'
		,blnARQuotes AS 'ARQuotes'
		,blnARQuSys AS 'ARQuSys'
		,blnWHStPick AS 'WHStPick'
		,blnInvBrowser AS 'InvBrowser'
		,blnWHShp AS 'WHShp'
		,blnWHPrPack AS 'WHPrPack'
		,blnWHCont AS 'WHCont'
		,blnWHMani AS 'WHMani'
		,blnWHShBrow AS 'WHShBrow'
		,blnJobCost AS 'JobCost'
		,blnDept AS 'Dept'
		,blnSubLedger AS 'SubLedger'
		,blnCLetters AS 'CLetters'
		,blnTop20 AS 'Top20'
		,blnTransTab AS 'TransTab'
		,blnRecPayJournal AS 'RecPayJournal'
		,blnARCats AS 'ARCats'
		,blnInvDiscMatrix AS 'InvDiscMatrix'
		,blnARBlockDesc AS 'ARBlockDesc'
		,blnARBlockUnit AS 'ARBlockUnit'
		,blnARBlockDiscount AS 'ARBlockDiscount'
		,blnAPBlockDesc AS 'APBlockDesc'
		,blnAPBlockUnit AS 'APBlockUnit'
		,blnAPBlockDiscount AS 'APBlockDiscount'
		,blnWHDelDriver AS 'WHDelDriver'
		,blnWHDelVehicle AS 'WHDelVehicle'
		,blnWHDelRoute AS 'WHDelRoute'
		,blnARCreditRequests AS 'ARCreditRequests'
		,blnBITab AS 'BITab'
		,blnBICubeAdd AS 'BICubeAdd'
		,blnBICubeEdit AS 'BICubeEdit'
		,blnBICubeDelete AS 'BICubeDelete'
		,blnBIViewAdd AS 'BIViewAdd'
		,blnBIViewEdit AS 'BIViewEdit'
		,blnBIViewDelete AS 'BIViewDelete'
		,blnARSendPricelists AS 'ARSendPricelists'
		,blnInvNumConv AS 'InvNumConv'
		,blnInvSerialTypes AS 'InvSerialTypes'
		,blnAPCats AS 'APCats'
		,blnARPrintPreview AS 'ARPrintPreview'
		,blnARCNChangesAllowed AS 'ARCNChangesAllowed'
		,blnARPriceChangeAllowed AS 'ARPriceChangeAllowed'
		,blnAPDNChangesAllowed AS 'APDNChangesAllowed'
		,blnARInvoiceAdjAllowed AS 'ARInvoiceAdjAllowed'
		,blnARAllowCreditNotesAndRequestItems AS 'ARAllowCreditNotesAndRequestItems'
		,blnAPPaymentApprovals AS 'APPaymentApprovals'
		,blnInvForecasting AS 'InvForecasting'
		,blnInvBarcode AS 'InvBarcode'
		,blnInvItemCostUpdater AS 'InvItemCostUpdater'
		,blnInvItemRenaming AS 'InvItemRenaming'
		,blnAPECOMSettings AS 'APECOMSettings'
		,blnAPShowStatsOnDocs AS 'APShowStatsOnDocs'
		,blnARShowStatsOnDocs AS 'ARShowStatsOnDocs'
		,blnGLOpenItemAlloc AS 'GLOpenItemAlloc'
		,blnGLLR AS 'GLLR'
		,blnGLLRFin AS 'GLLRFin'
		,blnGLLRFinBalSheetStd AS 'GLLRFinBalSheetStd'
		,blnGLLRFinBalSheetComp AS 'GLLRFinBalSheetComp'
		,blnGLLRFinIncomeStd AS 'GLLRFinIncomeStd'
		,blnGLLRFinIncomeComp AS 'GLLRFinIncomeComp'
		,blnGLLRFinIncomeMulti AS 'GLLRFinIncomeMulti'
		,blnGLLRFinIncomeGP AS 'GLLRFinIncomeGP'
		,blnGLLRFinIncomeMini AS 'GLLRFinIncomeMini'
		,blnGLLRFinTrialBal AS 'GLLRFinTrialBal'
		,blnGLLRFinPerMovement AS 'GLLRFinPerMovement'
		,blnGLLRFinMultiCompany AS 'GLLRFinMultiCompany'
		,blnGLLRTran AS 'GLLRTran'
		,blnGLLRTranLedger AS 'GLLRTranLedger'
		,blnGLLRTranEntryType AS 'GLLRTranEntryType'
		,blnGLLRTranTax AS 'GLLRTranTax'
		,blnGLLRTranDocTran AS 'GLLRTranDocTran'
		,blnGLLRBudgets AS 'GLLRBudgets'
		,blnGLLRBudgetsAmounts AS 'GLLRBudgetsAmounts'
		,blnGLLRBudgetsCompIncome AS 'GLLRBudgetsCompIncome'
		,blnGLLRBudgetsCompIncomeF AS 'GLLRBudgetsCompIncomeF'
		,blnGLLRBudgetsCompBalSheet AS 'GLLRBudgetsCompBalSheet'
		,blnGLLRDept AS 'GLLRDept'
		,blnGLLRDeptBalSheetStd AS 'GLLRDeptBalSheetStd'
		,blnGLLRDeptIncomeStd AS 'GLLRDeptIncomeStd'
		,blnGLLRDeptIncomeComp AS 'GLLRDeptIncomeComp'
		,blnGLLRDeptTrialBal AS 'GLLRDeptTrialBal'
		,blnGLLRDeptLedger AS 'GLLRDeptLedger'
		,blnGLLRDeptBudgetAmounts AS 'GLLRDeptBudgetAmounts'
		,blnGLLRDeptCompIncome AS 'GLLRDeptCompIncome'
		,blnGLLRLists AS 'GLLRLists'
		,blnGLLRListsAccounts AS 'GLLRListsAccounts'
		,blnGLLRListsAccountSets AS 'GLLRListsAccountSets'
		,blnGLLRListsJournalCodes AS 'GLLRListsJournalCodes'
		,blnGLCR AS 'GLCR'
		,blnGLCRFin AS 'GLCRFin'
		,blnGLCRFinIncome AS 'GLCRFinIncome'
		,blnGLCRFinIncomeMulti AS 'GLCRFinIncomeMulti'
		,blnGLCRTran AS 'GLCRTran'
		,blnGLCRTranAlloc AS 'GLCRTranAlloc'
		,blnGLCRTranAllocMissing AS 'GLCRTranAllocMissing'
		,blnGLCRBudget AS 'GLCRBudget'
		,blnGLCRBudgetCompBudget AS 'GLCRBudgetCompBudget'
		,blnGLCRLists AS 'GLCRLists'
		,blnGLCRListsProfitCenters AS 'GLCRListsProfitCenters'
		,blnAPPR AS 'APPR'
		,blnAPPRFin AS 'APPRFin'
		,blnAPPRFinVendorAged AS 'APPRFinVendorAged'
		,blnAPPRTran AS 'APPRTran'
		,blnAPPRTranVendorPurchases AS 'APPRTranVendorPurchases'
		,blnAPPRTranPendingPurchaseOrders AS 'APPRTranPendingPurchaseOrders'
		,blnAPPRTranPendingPurchaseReq AS 'APPRTranPendingPurchaseReq'
		,blnAPPRTranVendorTran AS 'APPRTranVendorTran'
		,blnAPETIMSPurchasesTrans AS 'APETIMSPurchasesTrans'
		,blnAPPRLists AS 'APPRLists'
		,blnAPPRListsVendors AS 'APPRListsVendors'
		,blnAPPRListsContacts AS 'APPRListsContacts'
		,blnARRR AS 'ARRR'
		,blnARRRFin AS 'ARRRFin'
		,blnARRRFinCustAged AS 'ARRRFinCustAged'
		,blnARRRFinCallSheet AS 'ARRRFinCallSheet'
		,blnARRRFinCustStatements AS 'ARRRFinCustStatements'
		,blnARRRFinSalesStatements AS 'ARRRFinSalesStatements'
		,blnARRRFinInvoiceGP AS 'ARRRFinInvoiceGP'
		,blnARRRFinCustProfiability AS 'ARRRFinCustProfiability'
		,blnARRRFinCustSalesTargets AS 'ARRRFinCustSalesTargets'
		,blnARRRFinCustSalesTrends AS 'ARRRFinCustSalesTrends'
		,blnARRRFinSPPerf AS 'ARRRFinSPPerf'
		,blnARRRFinSPTargets AS 'ARRRFinSPTargets'
		,blnARRRTran AS 'ARRRTran'
		,blnARRRTranCustSales AS 'ARRRTranCustSales'
		,blnARRRTranSPSales AS 'ARRRTranSPSales'
		,blnARRRTranSPMissing AS 'ARRRTranSPMissing'
		,blnARRRTranInvoiceDocs AS 'ARRRTranInvoiceDocs'
		,blnARRRTranCashUp AS 'ARRRTranCashUp'
		,blnARRRTranPendingSalesOrders AS 'ARRRTranPendingSalesOrders'
		,blnARRRTranClosedSalesOrders AS 'ARRRTranClosedSalesOrders'
		,blnARRRTranCredits AS 'ARRRTranCredits'
		,blnARRRTranCustTran AS 'ARRRTranCustTran'
		,blnARRRTranOpenQuotes AS 'ARRRTranOpenQuotes'
		,blnARRRLists AS 'ARRRLists'
		,blnARRRListsPricelist AS 'ARRRListsPricelist'
		,blnARRRListsCustomers AS 'ARRRListsCustomers'
		,blnARRRListsSalesPersons AS 'ARRRListsSalesPersons'
		,blnARRRListsContactsList AS 'ARRRListsContactsList'
		,blnIR AS 'IR'
		,blnIRFin AS 'IRFin'
		,blnIRFinInvAged AS 'IRFinInvAged'
		,blnIRFinInvValuation AS 'IRFinInvValuation'
		,blnIRFinLocSum AS 'IRFinLocSum'
		,blnIRFinInvLoc AS 'IRFinInvLoc'
		,blnIRFinInvBin AS 'IRFinInvBin'
		,blnIRFinQuantity AS 'IRFinQuantity'
		,blnIRFinQuantityLoc AS 'IRFinQuantityLoc'
		,blnIRFinInvSalesTargets AS 'IRFinInvSalesTargets'
		,blnIRTran AS 'IRTran'
		,blnIRTranInvSales AS 'IRTranInvSales'
		,blnIRTranInvTran AS 'IRTranInvTran'
		,blnIRTranInvLedger AS 'IRTranInvLedger'
		,blnIRTranInvLedgerLoc AS 'IRTranInvLedgerLoc'
		,blnIRTranNegInvCorrections AS 'IRTranNegInvCorrections'
		,blnIRTranPricelistChangeLog AS 'IRTranPricelistChangeLog'
		,blnIRTranSegInvMovement AS 'IRTranSegInvMovement'
		,blnIRTranSegInvSales AS 'IRTranSegInvSales'
		,blnIRTranSerializedItemTracking AS 'IRTranSerializedItemTracking'
		,blnIRLists AS 'IRLists'
		,blnIRListsPricing AS 'IRListsPricing'
		,blnIRListsInventory AS 'IRListsInventory'
		,blnIRListsStockCountSheets AS 'IRListsStockCountSheets'
		,blnIRListsAdjustments AS 'IRListsAdjustments'
		,blnWR AS 'WR'
		,blnWROrders AS 'WROrders'
		,blnWROrdersPendingPurchaseOrders AS 'WROrdersPendingPurchaseOrders'
		,blnWROrdersPendingSalesOrders AS 'WROrdersPendingSalesOrders'
		,blnPOSR AS 'POSR'
		,blnPOSRFin AS 'POSRFin'
		,blnPOSRFinDrawerClosing AS 'POSRFinDrawerClosing'
		,blnPOSRFinCashierVariance AS 'POSRFinCashierVariance'
		,blnPOSRLists AS 'POSRLists'
		,blnPOSRListsCashDrawers AS 'POSRListsCashDrawers'
		,blnBR AS 'BR'
		,blnBRProj AS 'BRProj'
		,blnBRProjTender AS 'BRProjTender'
		,blnBRProjAlloc AS 'BRProjAlloc'
		,blnBRProjMissingAllow AS 'BRProjMissingAllow'
		,blnBRProjSalesMatrix AS 'BRProjSalesMatrix'
		,blnBRProjPurchMatrix AS 'BRProjPurchMatrix'
		,blnBRProjCombinedMatrix AS 'BRProjCombinedMatrix'
		,blnBRProjActvsBudget AS 'BRProjActvsBudget'
		,blnBRAdmin AS 'BRAdmin'
		,blnBRAdminHistory AS 'BRAdminHistory'
		,blnSMSRLog AS 'SMSRLog'
		,blnGLJournalReports AS 'GLJournalReports'
		,blnGLTransactionReports AS 'GLTransactionReports'
		,blnAPPaymentsReports AS 'APPaymentsReports'
		,blnAPTransactionsReports AS 'APTransactionsReports'
		,blnARReceiptsReports AS 'ARReceiptsReports'
		,blnARTransactionsReports AS 'ARTransactionsReports'
		,blnISalesReports AS 'ISalesReports'
		,blnITransactionsReports AS 'ITransactionsReports'
		,blnSMSR AS 'SMSR'
		,blnFHQCanApprove AS 'FHQCanApprove'
		,blnFHQCreatePurchaseOrder AS 'FHQCreatePurchaseOrder'
		,blnARViewMarginPercentage AS 'ARViewMarginPercentage'
		,blnAPPendingPayApprovals AS 'APPendingPayApprovals'
		,blnGLLRTranCashBook AS 'GLLRTranCashBook'
		,blnAPPRTranVendAccrual AS 'APPRTranVendAccrual'
		,blnIRListsItemWhereUsed AS 'IRListsItemWhereUsed'
		,blnIRTranBillOfMaterials AS 'IRTranBillOfMaterials'
		,blnAPBulkRFQ AS 'APBulkRFQ'
		,blnInvProdSchedule AS 'InvProdSchedule'
		,blnInvWorkCentres AS 'InvWorkCentres'
		,blnIRListsProductionSchedule AS 'IRListsProductionSchedule'
		,blnAPPRTranBulkRFQ AS 'APPRTranBulkRFQ'
		,blnRecReceiptsReversal AS 'RecReceiptsReversal'
		,blnARRRTranSalesSummary AS 'ARRRTranSalesSummary'
		,blnDashMain AS 'DashMain'
		,blnDashBusiness AS 'DashBusiness'
		,blnDashAR AS 'DashAR'
		,blnARChangeCustOnSO AS 'ARChangeCustOnSO'
		,blnARChangeCustOnSQ AS 'ARChangeCustOnSQ'
		,blnAPOrdersRemove AS 'APOrdersRemove'
		,blnAPReqRemove AS 'APReqRemove'
		,blnAROrdersRemove AS 'AROrdersRemove'
		,blnARQuotesRemove AS 'ARQuotesRemove'
		,blnARCreditRequestsRemove AS 'ARCreditRequestsRemove'
		,blnAPBlockTax AS 'APBlockTax'
		,blnARBlockTax AS 'ARBlockTax'
		,blnAPBulkRFQRemove AS 'APBulkRFQRemove'
		,blnARQuSysRemove AS 'ARQuSysRemove'
		,blnWHStPickRemove AS 'WHStPickRemove'
		,blnWHRecRemove AS 'WHRecRemove'
		,blnWHShpRemove AS 'WHShpRemove'
		,blnWHContRemove AS 'WHContRemove'
		,blnARMatrixType AS 'ARMatrixType'
		,blnARMatrixTypeEdit AS 'ARMatrixTypeEdit'
		,blnARMatrixTypeRemove AS 'ARMatrixTypeRemove'
		,blnIRTranInvEfficiency AS 'IRTranInvEfficiency'
		,blnInvLotNumExpiryDates AS 'InvLotNumExpiryDates'
		,blnARRRTranMatrixTypeChangeLog AS 'ARRRTranMatrixTypeChangeLog'
		,blnInvBulkLabelPrinting AS 'InvBulkLabelPrinting'
		,bitInvVoucher AS 'InvVoucher'
		,blnInvShowItemCost AS 'InvShowItemCost'
		,bitInvWebstoreSync AS 'InvWebstoreSync'
		,strSalesName AS 'SalesName'
		,IsNull(intARDept, 0) AS 'ARDept'
		,IsNUll(intAPDept, 0) AS 'APDept'
		,bitARVoucerReprint AS 'ARVoucerReprint'
		,blnARChangeDocInfo AS 'ARChangeDocInfo'
		,blnAPChangeDocInfo AS 'APChangeDocInfo'
		,blnFADepreciateAsset AS 'FADepreciateAsset'
		,blnFAAssets AS 'FAAssets'
		,blnFAAssetTypes AS 'FAAssetTypes'
		,blnFADepreciationMethods AS 'FADepreciationMethods'
		,blnFACostTypes AS 'FACostTypes'
		,blnFADisposalMethods AS 'FADisposalMethods'
		,blnFAR AS 'FAR'
		,blnFARSummary AS 'FARSummary'
		,blnFARAssetListing AS 'FARAssetListing'
		,blnFARDisposals AS 'FARDisposals'
		,blnFARDepreciationListing AS 'FARDepreciationListing'
		,blnFARAssetPurchases AS 'FARAssetPurchases'
		,blnFARAssetEfficiency AS 'FARAssetEfficiency'
		,
		--0 As 'FARAssetClass',          
		blnInvDimensions AS 'InvDimensions'
		,blnInvValueBasedPrice AS 'InvValueBasedPrice'
		,blnInvValueBasedPriceEdit AS 'InvValueBasedPriceEdit'
		,blnInvValueBasedPriceRemove AS 'InvValueBasedPriceRemove'
		,blnFARTran AS 'FARTran'
		,blnFARLists AS 'FARLists'
		,blnARSOAdjAllowed AS 'ARSOAdjAllowed'
		,blnARSQAdjAllowed AS 'ARSQAdjAllowed'
		,blnARFHQAdjAllowed AS 'ARFHQAdjAllowed'
		,blnARCNAdjAllowed AS 'ARCNAdjAllowed'
		,blnARCRAdjAllowed AS 'ARCRAdjAllowed'
		,blnARCreditNotes AS 'ARCreditNotes'
		,blnARChangeDept AS 'ARChangeDept'
		,blnAPInvoiceAdjAllowed AS 'APInvoiceAdjAllowed'
		,blnAPPOAdjAllowed AS 'APPOAdjAllowed'
		,blnAPPRAdjAllowed AS 'APPRAdjAllowed'
		,blnARChangeCenter AS 'ARChangeCenter'
		,bitPOSEnableEditDiscount AS 'POSEnableEditDiscount'
		,blnPOSOrders AS 'POSOrders'
		,blnPOSQuotes AS 'POSQuotes'
		,blnPOSConvertOrders AS 'POSConvertOrders'
		,blnPOSConvertQuotes AS 'POSConvertQuotes'
		,blnPOSAuthPayByAccount AS 'POSAuthPayByAccount'
		,blnPOSAuthoriseRefunds AS 'POSAuthoriseRefunds'
		,blnARCreditBlockSI AS 'ARCreditBlockSI'
		,blnARCreditBlockSO AS 'ARCreditBlockSO'
		,blnARDeliveryAdvice AS 'ARDeliveryAdvice'
		,blnARDeliveryAdviceRemove AS 'ARDeliveryAdviceRemove'
		,blnInvCanChangeSellingPrice AS 'InvCanChangeSellingPrice'
		,blnARSalesPersonChangeApproval AS 'ARSalesPersonChangeApproval'
		,blnIRFinInvCostAnalysis AS 'IRFinInvCostAnalysis'
		,blnMFWorkOrders AS 'MFWorkOrders'
		,blnMFJobs AS 'MFJobs'
		,blnMFJobAdjustApproval AS 'MFJobAdjustApproval'
		,blnMFProductionSchedule AS 'MFProductionSchedule'
		,blnMFPostWIP AS 'MFPostWIP'
		,blnMFBillOfMaterial AS 'MFBillOfMaterial'
		,blnMFBOMAdjustApproval AS 'MFBOMAdjustApproval'
		,blnMFWorkCentres AS 'MFWorkCentres'
		,blnMFLabour AS 'MFLabour'
		,blnMFMachinery AS 'MFMachinery'
		,blnMFTransferJobs AS 'MFTransferJobs'
		,blnMFR AS 'MFR'
		,blnMFRTran AS 'MFRTran'
		,blnMFRWorkInProgress AS 'MFRWorkInProgress'
		,blnMFRLists AS 'MFRLists'
		,blnMFRBillOfMaterial AS 'MFRBillOfMaterial'
		,blnMFRResource AS 'MFRResource'
		,blnMFRItemWhereUsed AS 'MFRItemWhereUsed'
		,blnMFRSerialLotOutOfSeq AS 'MFRSerialLotOutOfSeq'
		,blnMFRMRP AS 'MFRMRP'
		,blnInvWorkOrder AS 'InvWorkOrder'
		,blnInvIntReq AS 'InvIntReq'
		,blnInvIssReq AS 'InvIssReq'
		,blnARRRTranCustAccrual AS 'ARRRTranCustAccrual'
		,blnARRRFinOrderStatement AS 'ARRRFinOrderStatement'
		,blnIRListsInvIntReq AS 'IRListsInvIntReq'
		,blnMFCloseJobs AS 'MFCloseJobs'
		,blnFAAssetsDisposal AS 'FAAssetsDisposal'
		,blnFAAssetsLocations AS 'FAAssetsLocations'
		,blnFARAssetRegister AS 'FARAssetRegister'
		,blnDashAP AS 'DashAP'
		,blnDashInventory AS 'DashInventory'
		,blnDashWarehouse AS 'DashWarehouse'
		,blnAPSetupPOApprovers AS 'APSetupPQApprovers'
		,blnApprovePurchaseOrders AS 'ApprovePurchaseQuotes'
		,blnMFRWCTransfer AS 'MFRWCTransfer'
		,blnInvCatMarginApproval AS 'InvCatMarginApproval'
		,blnMobSa AS 'MobSa'
		,blnMobSaOrdProcess AS 'MobSaOrdProcess'
		,blnMobSaGeoTrack AS 'MobSaGeoTrack'
		,blnMobPhDash AS 'MobPhDash'
		,blnMobPhDashBankBal AS 'MobPhDashBankBal'
		,blnMobPhDashSalesItemComp AS 'MobPhDashSalesItemComp'
		,blnMobPhDashSalesCustCat AS 'MobPhDashSalesCustCat'
		,blnMobPhDashOutCustCat AS 'MobPhDashOutCustCat'
		,blnMobPhDashCustVendBal AS 'MobPhDashCustVendBal'
		,blnMobPhDashInvQty AS 'MobPhDashInvQty'
		,blnMobPhDashSalesPerf AS 'MobPhDashSalesPerf'
		,blnMobPhPOApproval AS 'MobPhPOApproval'
		,blnMobPhDashTimesheet AS 'MobPhDashTimesheet'
		,blnBRProjClaimStatement AS 'BRProjClaimStatement'
		,blnARRRTranCancelSalesDocs AS 'ARRRTranCancelSalesDocs'
		,blnAREditDeliveryMethod AS 'AREditDeliveryMethod'
		,blnInvIsRepackaging AS 'InvIsRepackaging'
		,blnIRRepackaging AS 'IRRepackaging'
		,blnContractBilling AS 'ContractBilling'
		,blnContractBillingType AS 'ContractBillingType'
		,blnProcessContractBilling AS 'ProcessContractBilling'
		,blnARRRecurringInvoice AS 'ARRRecurringInvoice'
		,blnARRContractExpiry AS 'ARRContractExpiry'
		,blnARRContractReconciliation AS 'ARRContractReconciliation'
		,blnAPReOrders AS 'APReOrders'
		,blnARShipmentsAuditTrail AS 'ARShipmentsAuditTrail'
		,blnARSalesOrderEDI AS 'ARSalesOrderEDI'
		,blnAPGRVAdjustmentApproval AS 'WHRecAdjust'
		,blnAPReturnSelection AS 'APReturn'
		,blnAPReturnAdjustmentApproval AS 'RetAprAdjust'
		,blnARDAAdjustmentApproval AS 'ARDeliveryAdviceAdjustApproval'
		,blnWHDelMethod AS WHDelMethod
		,tblUsersDocs.strUserName
		,strInvNumber AS 'InvNumber'
		,strSONumber AS 'SONumber'
		,strQuoteNumber AS 'QuoteNumber'
		,strPINumber AS 'PINumber'
		,strPONumber AS 'PONumber'
		,strRCNumber AS 'RCNumber'
		,strDPNumber AS 'DPNumber'
		,strJENumber AS 'JENumber'
		,strCNNumber AS 'CNNumber'
		,strDNNumber AS 'DNNumber'
		,strRQNumber AS 'RQNumber'
		,strQuSysNumber AS 'QuSysNumber'
		,strGRVNumber AS 'GRVNumber'
		,strTKNumber AS 'TKNumber'
		,strSHNumber AS 'SHNumber'
		,strMSNumber AS 'MSNumber'
		,strCRNumber AS 'CRNumber'
		,strRFQNumber AS 'RFQNumber'
		,strPSNumber AS 'PSNumber'
		,strDANumber AS 'DANumber'
		,strWONumber AS 'WONumber'
		,strJBNumber AS 'JBNumber'
		,strWPNumber AS 'WPNumber'
		,strIWONumber AS 'IWONumber'
		,strPYNumber AS 'PYNumber'
		,strCBNumber AS 'CBNumber'
		,strPRONumber AS 'PRONumber'
		,strBMNumber AS 'BMNumber'
		,strWSQuoteNumber AS 'WSQuoteNumber'
		,strWSPJBNumber AS 'WSPJBNumber'
		,strWSIJBNumber AS 'WSIJBNumber'
		,strWSWIPNumber AS 'WSWIPNumber'
		,blnIRTranLotNumMovement AS 'IRTranLotNumberMovement'
		,blnBankManager AS 'BankManager'
		,blnAPPRTranInvoiceDocs AS 'APPRTranInvoiceDocs'
		,blnMFRJobStatus AS 'MFRJobStatus'
		,blnMFRProdVariance AS 'MFRProdVariance'
		,blnMFRManVariance AS 'MFRManVariance'
		,blnAPPriceChangeAllowed AS 'APPriceChangeAllowed'
		,blnDashManage AS 'DashManage'
		,blnGLMergeAccounts AS 'MergeAcct'
		,blnWSWorkshop AS 'WSWorkshop'
		,blnWSBrowser AS 'WSBrowser'
		,blnWSInvoice AS 'WSInvoice'
		,blnWSInvoiceAdjAllowed AS 'WSInvoiceAdjAllowed'
		,blnWSPrintPreview AS 'WSPrintPreview'
		,blnWSProcessJob AS 'WSProcessJob'
		,blnWSProcessJobRemove AS 'WSProcessJobRemove'
		,blnWSProcessJobAdjAllowed AS 'WSProcessJobAdjAllowed'
		,blnWSQuote AS 'WSQuote'
		,blnWSQuoteRemove AS 'WSQuoteRemove'
		,blnWSQuoteAdjAllowed AS 'WSQuoteAdjAllowed'
		,blnWSCreditNote AS 'WSCreditNote'
		,blnWSCNChangesAllowed AS 'WSCNChangesAllowed'
		,blnWSCNAdjAllowed AS 'WSCNAdjAllowed'
		,blnWSCreditRequest AS 'WSCreditRequest'
		,blnWSCreditRequestsRemove AS 'WSCreditRequestsRemove'
		,blnWSCRAdjAllowed AS 'WSCRAdjAllowed'
		,blnWSAllowCreditNotesAndRequestItems AS 'WSAllowCreditNotesAndRequestItems'
		,blnWSReceipts AS 'WSReceipts'
		,blnWSReceiptsReversal AS 'WSReceiptsReversal'
		,blnWSServiceableItem AS 'WSServiceableItem'
		,blnWSServiceableItemType AS 'WSServiceableItemType'
		,blnWSJobTemplate AS 'WSJobTemplate'
		,blnWSSetupTechnician AS 'WSSetupTechnician'
		,blnWSSchedule AS 'WSSchedule'
		,blnWSInventoryIssue AS 'WSInventoryIssue'
		,blnworkshop0 AS 'workshop0'
		,blnWSTran AS 'WSTran'
		,blnWSWorkInProgress AS 'WSWorkInProgress'
		,blnWSJobProfitability AS 'WSJobProfitability'
		,blnWSResourceUsage AS 'WSResourceUsage'
		,blnWSJobCostVariance AS 'WSJobCostVariance'
		,blnWSLists AS 'WSLists'
		,blnWSJobTemplateList AS 'WSJobTemplateList'
		,blnWSProcDocuments AS 'WSProcDocuments'
		,blnWSViewMarginPercentage AS 'WSViewMarginPercentage'
		,blnWSCreditBlockIJB AS 'WSCreditBlockIJB'
		,blnWSCreditBlockPJB AS 'WSCreditBlockPJB'
		,blnARConfirmDeliveryAllowed AS 'ARConfirmDeliveryAllowed'
		,blnGLContracts AS 'GLContracts'
		,blnGLLRContracts AS 'GLLRContracts'
		,blnGLLRContractsMonthly AS 'GLLRContractsMonthly'
		,blnGLLRContractsIncomeStatement AS 'GLLRContractsIncomeStatement'
		,blnPOSPayouts AS 'POSPayouts'
		,blnARLayby AS 'ARLayby'
		,blnARChangeCustOnLB AS 'ARChangeCustOnLB'
		,blnARLaybyRemove AS 'ARLaybyRemove'
		,blnARLBAdjAllowed AS 'ARLBAdjAllowed'
		,blnARCreditBlockLB AS 'ARCreditBlockLB'
		,blnPOSLayby AS 'POSLayby'
		,blnPOSConvertLayby AS 'POSConvertLayby'
		,blnAPVenRecon AS 'APVenRecon'
		,blnAPVenReconWorksheet AS 'APVenReconWorksheet'
		,blnAPBuyers AS 'APBuyers'
		,blnAPVenReconTypes AS 'APVenReconTypes'
		,blnBRProjResources AS 'BRProjResources'
		,blnBRProjFinInfo AS 'BRProjFinInfo'
		,blnBRProjChecklist AS 'BRProjChecklist'
		,blnBRProjCashFlow AS 'BRProjCashFlow'
		,blnARPODManagement AS 'ARPODManagement'
		,blnInvEmployee AS 'InvEmployee'
		,blnApproveInventoryRequistion AS 'ApproveInventoryRequistion'
		,blnAPSetupIRApprovers AS 'APSetupIRApprovers'
		,strLBNumber AS 'LBNumber'
		,blnPOSAuthoriseReturn AS 'POSAuthoriseReturn'
		--,blnSwitchCmp AS 'SwitchCompanies'          
		,blnIBTBranchTransOrder AS 'IBTBranchTransferOrder'
		,blnIBTBranchTrans AS 'IBTBranchTransfer'
		,blnIBTBranchTransReceipt AS 'IBTBranchTransferReceipt'
		,blnIBTGoodInTransitRpt AS 'IBTGoodsInTransitReport'
		,blnARSoftBOMConfiguration AS 'ARSoftBOMConfiguration'
		,blnPOSFormsSetup AS 'POSFormsSetup'
		,blnBinTransfer AS 'BinTransfer'
		,blnIRFinInvPurchaseTargets AS 'IRFinInvPurchaseTargets'
		,blnAPPRBudOnPRApproval AS 'APPRBudOnPRApproval'
		,blnAPBudgetAnalysis AS 'APBudgetAnalysis'
		,blnPOSCreateCustomer AS 'POSCreateCustomer'
		,blnPOSSync AS 'POSSync'
		,blnMFBlockDesc AS 'MFBOMBlockDesc'
		,blnTrackUser AS 'TrackUser'
		,blnMobPerformanceDashboard AS 'MobPerformanceDashboard'
		,blnOverBudgetReq AS 'OverBudgetReq'
		,blnNonBudgetReq AS 'NonBudgetReq'
		,blnMaterialProfile AS 'MaterialProfile'
		,blnPOSReinstallStoredProcedures AS 'POSReinstallStoredProcedures'
		,blnPOSRePrintLastInvoice AS 'POSRePrintLastInvoice'
		,blnCRMTaskListing AS 'CRMTaskListing'
		,blnCRMOverdueTask AS 'CRMOverdueTask'
		,blnCRMStatusGroups AS 'CRMStatusGroups'
		,blnCRMProductivity AS 'CRMProductivity'
		,blnDashCRM AS 'DashCRM'
		,blnPOSOpenCashDrawer AS 'POSOpenCashDrawer'
		,blnESDSetupRegistration AS 'ESDSetupRegistration'
		,blnWSChangeCenter AS 'WSChangeCenter'
		,bitMobileUserLoginHistory AS 'MobileUserLoginHistory'
		,blnPOSReprintInvoiceFromHistory AS 'POSReprintInvoiceFromHistory'
		,blnPOSOpenPreviousReceipts AS 'POSOpenPreviousReceipts'
		,blnPOSReversePreviousReceipts AS 'POSReversePreviousReceipts'
		,blnUserRegDetails AS 'UserRegDetails'
		,blnIsMobileUser AS 'IsMobileUser'
		,blnIsMonitorSalespersonsTracking AS 'IsMonitorSalespersonsTracking'
		,blnIsMobileSalesOrder AS 'IsMobileSalesOrder'
		,blnIsMobileSalesQuote AS 'IsMobileSalesQuote'
		,blnIsMobileFreehandQuote AS 'IsMobileFreehandQuote'
		,blnIsMobileCRMActivities AS 'IsMobileCRMActivities'
		,blnIsMobileCapturePOD AS 'IsMobileCapturePOD'
		,blnIsMobileCustomers AS 'IsMobileCustomers'
		,blnIsMobileExpenseClaims AS 'IsMobileExpenseClaims'
		,blnIsMobileDeliveryAdvice AS 'IsMobileDeliveryAdvice'
		,blnIsMobileEnuiriesByItem AS 'IsMobileEnuiriesByItem'
		,blnIsMobileEnuiriesByLocation AS 'IsMobileEnuiriesByLocation'
		,blnIsMobileWarehouseTransfer AS 'IsMobileWarehouseTransfer'
		,blnIsMobileBinTransfer AS 'IsMobileBinTransfer'
		,blnIsMobileGoodsReceiving AS 'IsMobileGoodsReceiving'
		,blnIsMobileStockCount AS 'IsMobileStockCount'
		,blnIsMobilePutAway AS 'IsMobilePutAway'
		,blnIsMobileStockPick AS 'IsMobileStockPick'
		,blnIsMobileJobWorkCentreTransfer AS 'IsMobileJobWorkCentreTransfer'
		,blnIsMobileInventoryIssue AS 'IsMobileInventoryIssue'
		,strVendName AS 'VendName'
		,blnIsMobileWSCreateQuotation AS 'IsMobileWSCreateQuotation'
		,blnIsMobileWSProcessJob AS 'IsMobileWSProcessJob'
		,blnIsMobileWSSchedule AS 'IsMobileWSSchedule'
		,blnIsMobileWSInventoryIssue AS 'IsMobileWSInventoryIssue'
		,blnIsMobileProcuPurchaseRequisitions AS 'IsMobileProcuPurchaseRequisitions'
		,blnIsMobileProcuPurchaseOrder AS 'IsMobileProcuPurchaseOrder'
		,blnIsMobileWSServiceableItem AS 'IsMobileWSServiceableItem'
		,blnWSServiceHistory AS 'WSServiceHistory'
		,blnMFReverseJobs AS 'MFReverseJobs'
		,blnMFReverseJobEditQty AS 'MFReverseJobEditQty'
		,blnWRShipment AS 'WRShipmentReport'
		,blnIsMobileSalesInvoice AS 'IsMobileSalesInvoice'
		,blnIsMobileCreditNoteApproval AS 'IsMobileCreditNoteApproval'
		,bitIsEditComponentCost AS 'IsEditComponentCost'
		,blnIsMobileFinance AS 'IsMobileFinance'
		,blnIsDispensingCashOnCashGuard AS 'IsDispensingCashOnCashGuard'
		,blnMFBOMItemCostsOnReport AS 'MFBOMItemCostsOnReport'
		,blnInvInventoryActive AS 'InvInventoryActive'
		,blnInvIncompatibleItems AS 'InvIncompatibleItems'
		,blnAPRebateSetup AS 'APRebateSetup'
		,blnAPProcessRebate AS 'APProcessRebate'
		,blnAPRebateReport AS 'APRebateReport'
		,blnARRRFinSPCOMM AS 'ARRRFinSPCOMM'
		,strDefaultLanguage AS 'DefaultLanguage'
		,blnGLApprovalAdjusment AS 'IsGLApprovalAdjusment'
		,blnPOSDrawerGroups AS 'POSDrawerGroups'
		,blnCRMMyActivities AS 'CRMMyActivities'
		,blnCRMMyActions AS 'CRMMyActions'
		,blnCRMUnassignedActivities AS 'CRMUnassignedActivities'
		,blnCRMNotifications AS 'CRMNotifications'
		,blnCRMAllActivities AS 'CRMAllActivities'
		,blnCRMAllActions AS 'CRMAllActions'
		,blnCRMReports AS 'CRMReports'
		,blnCRMDashboard AS 'CRMDashboard'
	FROM tblUsers(NOLOCK)
	LEFT JOIN tblUsersDocs ON tblUsers.strUserName = tblUsersDocs.strUserName
END
GO

/****** Object:  StoredProcedure [dbo].[ValidateUser]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[ValidateUser]											    
(                                                                                  
@UserName VARCHAR(MAX),                                                            
@Password VARCHAR(MAX),                                                            
@SQLUserName VARCHAR(20) = NULL                                                    
)                                                                                  
AS                                                                                 
BEGIN                                                                              
 SET NOCOUNT ON;                                                                   
                                                                                   
 IF EXISTS (select name,* from tempdb.sys.tables where name like'#DatabaseT%')     
	DROP table  #DatabaseT                                                          
                                                                                   
 CREATE TABLE #DatabaseT (                                                         
	RowID INT IDENTITY(1, 1) NOT NULL,                                              
	DatabaseName sysname NOT NULL,                                                  
	user_access tinyint NULL                                                        
 )                                                                                 
                                                                                   
 IF ISNULL(@SQLUserName, '') = ''                                                  
 BEGIN                                                                             
	INSERT INTO #DatabaseT (DatabaseName, user_access)                              
	SELECT sys.databases.name AS DatabaseName,user_access from sys.databases WHERE is_in_standby = 0 AND sys.databases.state = 0 AND is_read_only = 0 AND HAS_DBACCESS(name) = 1 AND sys.databases.name LIKE 'paldb%'  
 END                                                                               
 ELSE                                                                              
 BEGIN                                                                             
	EXECUTE AS LOGIN = @SQLUserName                                                 
		INSERT INTO #DatabaseT (DatabaseName, user_access)                          
		SELECT sys.databases.name AS DatabaseName,user_access from sys.databases WHERE is_in_standby = 0 AND sys.databases.state = 0 AND is_read_only = 0 AND HAS_DBACCESS(name) = 1 AND sys.databases.name LIKE 'paldb%'   
  REVERT                                                                           
 END                                                                               
                                                                                   
 DECLARE @NumberRecords INT, @RowCount INT                                         
 DECLARE @DatabaseName VARCHAR(200)                                                
 DECLARE @Query NVARCHAR(MAX)=''                                                   
 DECLARE @CompanyExists INT = 0                                                    
 DECLARE @CoSerial VARCHAR(200)                                                    
 DECLARE @CloudUsername VARCHAR(200)                                               
 DECLARE @CloudPassword VARCHAR(200)                                               
 DECLARE @UserExists INT = 0                                                       
 DECLARE @CompanyID VARCHAR(10)                                                    
                                                                                   
IF EXISTS (select name,* from tempdb.sys.tables where name like'#CompanyT%')       
 DROP table  #CompanyT                                                             
                                                                                   
CREATE TABLE #CompanyT(                                                            
 CompanyId int IDENTITY(1,1) not null,                                             
 CompanyName varchar(MAx) null,                                                    
 DatabaseName varchar(MAx) null,                                                   
 LYStarted DATE null,
 LYEnded DATE null,
 YearStarts DATE null,                                                             
 YearEnds DATE null,                                                               
 [CompanyLogo] image null                                                            
)                                                                                  
                                                                                   
                                                                                   
IF EXISTS (select name,* from tempdb.sys.tables where name like'#VersionT%')       
 DROP table  #VersionT                                                             
                                                                                   
CREATE TABLE #VersionT(                                                            
 [CompanyId] [int] NOT NULL,                                                       
 [Version] [int] NOT NULL,                                                         
 [OrigVersion] [int] NOT NULL,                                                     
 [Year] [int] NOT NULL,                                                            
 [SoftVersion] [nvarchar](50) NOT NULL,                                            
 [DBVersion] [int] NOT NULL,                                                       
 [DBGuid] [uniqueidentifier] NOT NULL,                                             
 [RSTVersion] [int] NOT NULL,                                                      
 [IsServerRunning] [bit] NOT NULL,                                                 
)                                                                                  
                                                                                   
IF EXISTS (select name,* from tempdb.sys.tables where name like'#UserT%')          
 DROP table  #UserT                                                                
                                                                                   
CREATE TABLE #UserT(                                                               
 [CompanyId] [int] NOT NULL,                                                       
 [UserName] [nvarchar](20) NOT NULL,                                               
 [Name] [nvarchar](50) NOT NULL,                                                   
 [CellNumber] [nvarchar](50) NOT NULL,                                             
 [Email] [nvarchar](100) NOT NULL,                                                 
 [Password] [nvarchar](2000) NOT NULL,                                             
 [IsAdmin] [bit] NOT NULL,                                                         
 [IsLockedOut] [bit] NOT NULL,                                                     
 [LastLogin] [datetime] NOT NULL,                                                  
 [IsMobileUser] [bit] NOT NULL                                                     
)                                                                                  
                                                                                   
                                                                                   
IF EXISTS (select name,* from tempdb.sys.tables where name like'#UserTemp%')       
 DROP table  #UserTemp                                                             
CREATE TABLE #UserTemp(                                                            
 --[CompanyId] [int] NOT NULL, --This column should not exists in this table       
 [UserName] [nvarchar](20) NOT NULL,                                               
 [Name] [nvarchar](50) NOT NULL,                                                   
 [CellNumber] [nvarchar](50) NOT NULL,                                             
 [Email] [nvarchar](100) NOT NULL,                                                 
 [Password] [nvarchar](2000) NOT NULL,                                             
 [IsAdmin] [bit] NOT NULL,                                                         
 [IsLockedOut] [bit] NOT NULL,                                                     
 [LastLogin] [datetime] NOT NULL,                                                  
 [IsMobileUser] [bit] NOT NULL                                                     
)                                                                                  
                                                                                   
--#DatabaseT : Display list of database                                            
 SELECT @NumberRecords = COUNT(*) from #DatabaseT                                  
 SET @RowCount = 1                                                                 
                                                                                   
 WHILE @RowCount <= @NumberRecords                                                 
 BEGIN                                                                             
                                                                                   
  BEGIN TRY                                                                        
   SELECT @DatabaseName = DatabaseName  FROM #DatabaseT WHERE RowID = @RowCount    
    																				
   SET @Query ='SELECT @CompanyExist = COUNT(sysobjects.id) FROM '+ @DatabaseName + '.sys.sysobjects, '+ @DatabaseName + '.sys.syscolumns WHERE sysobjects.id = syscolumns.id AND sysobjects.name = N''tblCompany'' AND syscolumns.name = N''strCoSerial'''   
      exec sp_executesql @Query, N'@CompanyExist nvarchar out', @CompanyExists out  
                                                                                    
   DECLARE @displayThisdb bit = 1                                                   
   IF CHARINDEX('testdb',@DatabaseName) > 0                                         
   BEGIN                                                                            
   SET @displayThisdb = 0                                                           
   IF @UserName = 'zadmin' OR @UserName = 'zadam'                                   
   BEGIN                                                                            
    SET @displayThisdb = 1                                                          
   END                                                                              
   END                                                                              
   --If Company found then execute below code.                                      
   if (@CompanyExists > 0 AND @displayThisdb = 1)                                   
   BEGIN                                                                            
    SET @Query ='SELECT @CS = ISNULL(strCoSerial, ''''),@CU = ISNULL(strCloudUsername, ''''),@CP = ISNULL(strCloudPassword,'''') FROM '+ @DatabaseName + '.dbo.tblCompany'   
    exec sp_executesql @Query, N'@CS nvarchar out, @CU nvarchar out, @CP nvarchar out', @CoSerial out, @CloudUsername out, @CloudPassword out  
  																				 				    
    --If above three output parameter empty then execute, parameter return from dbo.tblCompany  	
    if(@CoSerial = '' AND @CloudUsername='' AND @CloudPassword='')  								
    BEGIN  																						
     SET @Query ='SELECT @UserCount = Count(*) FROM [' + @DatabaseName + '].[dbo].[tblUsers] where strEmail = '''+ @UserName + ''' AND strPassWord= ''' + @Password + ''''   
     IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tblUsers' AND column_name = 'blnIsMobileUser')                                                   
     BEGIN	                                                                                                                                                               
          SET @Query = @Query + ' AND blnIsMobileUser = 1 '                                                                                                                  
     END                                                                                                                                                                     
     exec sp_executesql @Query, N'@UserCount nvarchar out', @UserExists out 
                                                                                                   
                                                                                                   
                                                                                                   
     if (@UserExists > 0)                                                                          
      BEGIN                                                                                        
      SET @Query = 'SELECT '''+ REPLACE(''+ @DatabaseName + '', 'paldb', '') + ''', strName,dteLYStarted,dteLYEnded,dteYearStarts,dteYearEnds,imgLogo from [' + @DatabaseName + '].[dbo].[tblCompany]'   
                                                                                                   
      Insert into #CompanyT ( DatabaseName, CompanyName, LYStarted, LYEnded, YearStarts, YearEnds, [CompanyLogo]) EXEC sp_executesql @Query      --SELECT @CompanyID As CompanyID   
      SET @CompanyID = SCOPE_IDENTITY()                                                            
                                                                                                   
                                                                                                   
      SET @Query = 'SELECT ' + @CompanyID + ', intVersion,intOrigVersion,intYear,strSoftVersion,intDBVersion,uidDBGuid,intRSTVersion,bitServerRunning from [' + @DatabaseName + '].[dbo].[tblVersion]'   
      Insert into #VersionT ( [CompanyId], [Version], [OrigVersion],[Year],[SoftVersion],[DBVersion],[DBGuid],[RSTVersion],[IsServerRunning]) EXEC sp_executesql @Query   
        																										
                                                                                                               
                                                                                                               
      SET @Query = 'EXEC  [' + @DatabaseName + '].[dbo].[Mobile_UserDataByUserName] ''' + @UserName + ''''     
                                                                                                               
      Insert INTO #UserTemp EXEC sp_executesql @Query                                                          
                                                                                                               
      SET @Query = 'SELECT ' + @CompanyID + ', * from #UserTemp'                                               
      Insert into #UserT  EXEC sp_executesql @Query                                                            
                                                                                                               
      DELETE FROM #UserTemp                                                                                    
                                                                                                               
      END                                                                                                      
                                                                                                               
    END                                                                                                        
                                                                                                               
   END                                                                                                         
                                                                                                               
  END TRY                                                                                                      
 BEGIN CATCH                                                                                                   
    --Print @DatabaseName                                                                                      
    --SELECT ERROR_MESSAGE() AS ErrorMessage;                                                                  
 END CATCH                                                                                                     
  SET @RowCount += 1                                                                                           
 END                                                                                                           
                                                                                                               
 SELECT * FROM #CompanyT AS CompanyDetails                                                                     
 SELECT * FROM #VersionT                                                                                       
 SELECT * FROM #UserT                                                                                          
                                                                                                               
                                                                                                               
 Drop table #DatabaseT                                                                                         
 Drop table #CompanyT                                                                                          
 Drop table #VersionT                                                                                          
 Drop table #UserT                                                                                             
 Drop table #UserTemp                                                                                          
END
GO
/****** Object:  StoredProcedure [dbo].[VendorContactsGet]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[VendorContactsGet]
AS
BEGIN
	SELECT [strName] AS Name,[strVendName] AS VendorName, ISNULL([strJobTitle],'') AS JobTitleName, [strEmail] AS Email, [strTel] AS Telephone, [strFax] AS Fax, [strCell] AS CellPhone, [strStreet1] AS Street1, [strStreet2] AS Street2, [strCity] AS City, [strProvince] AS Province, [strPostal] AS Postal, [strNotes] AS Notes, [strFacebook] AS Facebook, [strLinkedIn] AS LinkedIn, [strSkype] AS Skype
	FROM [tblVendorContacts] LEFT OUTER JOIN [tblJobTitles] ON [tblVendorContacts].[intJobTitle] = [tblJobTitles].[lngID] 
	ORDER BY [strVendName], [strName]
END
GO
/****** Object:  StoredProcedure [dbo].[YearEndAcctHistUpdate]    Script Date: 26/06/2020 08:45:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[YearEndAcctHistUpdate]
(
	@intFiscalYear varchar(100),
	@dteLYStarted date,
	@dteLYEnded date
)
AS

BEGIN TRANSACTION            
	BEGIN TRY

declare @intHistCount int,@uid uniqueidentifier

SELECT @intHistCount = COUNT(intFiscalYr) FROM tblAcctHist WHERE intFiscalYr LIKE @intFiscalYear

if @intHistCount > 0
BEGIN
	SET @intFiscalYear = DATEPART(YY,@dteLYEnded) +  @intHistCount  
END
ELSE
BEGIN
	SET @intFiscalYear = DATEPART(YY,@dteLYEnded)
END

SELECT @uid = NEWID()

---Make Entry into History Master Table
INSERT INTO tblAcctHist
VALUES (@uid,@intFiscalYear,@dteLYStarted,@dteLYEnded)

---Copy Accounts LY to Hist
INSERT INTO tblAccountsHist
Select @uid,* from tblAccountsLY

---Copy JournalLY to Hist
--INSERT INTO tblJournalHist 
--SELECT @uid,* from tblJournalLY
INSERT INTO tblJournalHist 
SELECT @uid,lngJourID
,strUserName
,dteSystemDate
,dteJournalDate
,intModule
,intEntryType
,strSource
,strComment
,strCuVeGeInID
,intPayType
 from tblJournalLY

---Copy JournalEntLY to Hist
INSERT INTO tblJournalEntHist
SELECT @uid,* from tblJournalEntLY

---Copy tblAccountsDeptLY to Hist
INSERT INTO tblAccountsDeptHist
SELECT @uid,* from tblAccountsDeptLY

IF @@TRANCOUNT > 0
		    COMMIT TRANSACTION
END TRY
BEGIN CATCH
	IF @@TRANCOUNT > 0
	    ROLLBACK TRANSACTION
	
	DECLARE @ErrMsg          NVARCHAR(4000),
	        @ErrSeverity     INT
	
	SELECT @ErrMsg = ERROR_MESSAGE(),
	       @ErrSeverity = ERROR_SEVERITY()
	
	RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
GO

/****** Object:  StoredProcedure [dbo].[UpdatenOnCustWithTrans]    Script Date: 10/07/2020 07:20:00 ******/
CREATE PROCEDURE [dbo].[UpdatenOnCustWithTrans] (
	@CustUpdateForReceiptEntityData CustUpdateForReceiptEntityDataTableType Readonly
	)
AS
BEGIN
	DECLARE @CustName VARCHAR(50)
	DECLARE @CurrentYrStarts DATETIME

	DECLARE db_cursor CURSOR
	FOR
	SELECT CustName
		,CurrentYrStarts
	FROM @CustUpdateForReceiptEntityData

	OPEN db_cursor

	FETCH NEXT
	FROM db_cursor
	INTO @CustName
		,@CurrentYrStarts

	WHILE @@FETCH_STATUS = 0
	BEGIN
		--SET @fileName = @path + @name + '_' + @fileDate + '.BAK'   
		--BACKUP DATABASE @name TO DISK = @fileName   
		UPDATE tblCustomers
		SET decBalDue = (
				SELECT SUM(decAmount)
				FROM (
					SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) AS decAmount
					FROM tblCustTrans
					INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
					WHERE tblCustTrans.strCustName = tblCustomers.strCustName
						AND tblCustTransDT.bitReversed = 0
						AND (
							tblCustTrans.strOrdDocID IS NULL
							OR (
								tblCustTrans.strInvDocID IS NOT NULL
								AND tblCustTrans.strOrdDocID IS NOT NULL
								)
							OR (
								tblCustTrans.strOrdDocID IS NOT NULL
								AND tblCustTransDT.lngCustPayID IS NOT NULL
								)
							)
					) AS decAmount
				)
			,decYTDPurch = (
				SELECT ISNULL(SUM(decTotal), 0)
				FROM tblInvoiceDoc
				WHERE strCustName = tblCustomers.strCustName
					AND bitHistoryTrans = 0
					AND dteJournalDate >= @CurrentYrStarts
				)
			,decBalDueF = (
				SELECT SUM(decAmountF)
				FROM (
					SELECT ISNULL(SUM(tblCustTransDT.decAmountF), 0) AS decAmountF
					FROM tblCustTrans
					INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
					WHERE tblCustTrans.strCustName = tblCustomers.strCustName
						AND tblCustTransDT.bitReversed = 0
						AND (
							tblCustTrans.strOrdDocID IS NULL
							OR (
								tblCustTrans.strInvDocID IS NOT NULL
								AND tblCustTrans.strOrdDocID IS NOT NULL
								)
							OR (
								tblCustTrans.strOrdDocID IS NOT NULL
								AND tblCustTransDT.lngCustPayID IS NOT NULL
								)
							)
					) AS decAmountF
				)
			,decYTDPurchF = (
				SELECT ISNULL(SUM(decTotalF), 0)
				FROM tblInvoiceDoc
				WHERE strCustName = tblCustomers.strCustName
					AND bitHistoryTrans = 0
					AND dteJournalDate >= @CurrentYrStarts
				)
			,dteUpdated = GetDate()
		WHERE strCustName = @CustName

		FETCH NEXT
		FROM db_cursor
		INTO @CustName
			,@CurrentYrStarts
	END

	CLOSE db_cursor

	DEALLOCATE db_cursor

	UPDATE tblCustTrans
	SET bitSettled = 1
	WHERE bitSettled = 0
		AND lngCustTrID IN (
			SELECT lngCustTrID
			FROM tblCustTransDT
			WHERE bitReversed = 0
			GROUP BY lngCustTrID
			HAVING SUM(decAmount) = 0
				AND SUM(decAmountF) = 0
			)

	UPDATE tblCustTrans
	SET bitSettled = 0
	WHERE bitSettled = 1
		AND lngCustTrID IN (
			SELECT lngCustTrID
			FROM tblCustTransDT
			WHERE bitReversed = 0
			GROUP BY lngCustTrID
			HAVING SUM(decAmount) <> 0
				OR SUM(decAmountF) <> 0
			)
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateNextRCNumberForTerminal]    Script Date: 10/07/2020 07:20:00 ******/
CREATE PROCEDURE [dbo].[UpdateNextRCNumberForTerminal]
(
@NextRCNumber BIGINT
) 
AS 
  BEGIN  
        BEGIN 
                  UPDATE tbllastids 
                  SET    lngRCNumber = @NextRCNumber 
        END
  END
GO

/****** Object:  StoredProcedure [dbo].[GetNextCRMActivityID]    Script Date: 15-07-2020 12:57:27 ******/
CREATE Procedure [dbo].[GetNextCRMActivityID]
AS
Begin
	if ((Select Count(*) from tblCRMActivities)=0 and IDENT_CURRENT('tblCRMActivities') = 1)
	begin
	SELECT IDENT_CURRENT('tblCRMActivities'); 
	end
	else
	begin
	SELECT IDENT_CURRENT('tblCRMActivities')+1; 
	end 
End
GO

/****** Object:  StoredProcedure [dbo].[prGLSegmentSetup_All]    Script Date: 2020-06-03 ******/
CREATE PROCEDURE [dbo].[prGLSegmentSetup_All] 
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT 
        [intSegmentSetupId],
        [intSegmentId],
        [strCode],
        [strDescription],
		[bitIsPrimary],
		[intAccType],
        [intAccClass],
        [intGroupCode]
    FROM 
        [tblGLSegmentSetup]
END
GO

/****** Object:  StoredProcedure [dbo].[GetFinancialMonths]    Script Date: 2020-06-18 ******/
CREATE PROCEDURE [dbo].[GetFinancialMonths]
AS
BEGIN
	SET NOCOUNT ON;

	SELECT STUFF(
		(SELECT ',' + DATENAME(MONTH,dteYearStarts)
			,',' + DATENAME(MONTH,DATEADD(MONTH,1,dteYearStarts)) 
			,',' + DATENAME(MONTH,DATEADD(MONTH,2,dteYearStarts)) 
			,',' + DATENAME(MONTH,DATEADD(MONTH,3,dteYearStarts)) 
			,',' + DATENAME(MONTH,DATEADD(MONTH,4,dteYearStarts)) 
			,',' + DATENAME(MONTH,DATEADD(MONTH,5,dteYearStarts)) 
			,',' + DATENAME(MONTH,DATEADD(MONTH,6,dteYearStarts)) 
			,',' + DATENAME(MONTH,DATEADD(MONTH,7,dteYearStarts)) 
			,',' + DATENAME(MONTH,DATEADD(MONTH,8,dteYearStarts)) 
			,',' + DATENAME(MONTH,DATEADD(MONTH,9,dteYearStarts)) 
			,',' + DATENAME(MONTH,DATEADD(MONTH,10,dteYearStarts))
			,',' + DATENAME(MONTH,DATEADD(MONTH,11,dteYearStarts))
		FROM tblCompany
		FOR XML PATH(''))
	,1,1,'')
END
GO

/****** Object:  StoredProcedure [dbo].[IsTenderTypeAssignedInPOSDrs]    Script Date: 2020-07-27 ******/
CREATE PROCEDURE [dbo].[IsTenderTypeAssignedInPOSDrs] 
@TenderTypeName NVARCHAR(100)
AS
BEGIN
 SELECT CASE WHEN EXISTS (
    SELECT *
    FROM tblPOSDrTenderTypes
    WHERE strTenderTypeName = @TenderTypeName and bitUsed = 1
)
THEN CAST(1 AS BIT)
ELSE CAST(0 AS BIT) END
END
GO

/****** Object:  StoredProcedure [dbo].[UpdatePOSDrsStatusByTerminalId]    Script Date: 07/07/2020 11:20:00 ******/
CREATE PROCEDURE [dbo].[UpdatePOSDrsStatusByTerminalId]
  @Status int,
  @OfflineTerminalId int
AS
BEGIN
		UPDATE tblPOSDrs SET 
		intStatus = @Status,dteCashedOut = GetDate(),
		decCloseVal = decCurrentVal 
		WHERE intOfflineTerminalId = @OfflineTerminalId and intStatus in (0,1)
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblAutoComplete]    Script Date: 2020-08-01 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblAutoComplete]
    @tblData AS AutoCompleteTableType READONLY
AS
BEGIN

BEGIN
	UPDATE  tblAutoComplete SET
	intField = table2.intField, 
	strValue = table2.strValue, 
	intModule = table2.intModule
	FROM tblAutoComplete as table1
	INNER JOIN @tblData as table2
	ON table1.intField=table2.intField AND table1.strValue=table2.strValue  AND table1.intModule=table2.intModule
END

BEGIN
   INSERT INTO tblAutoComplete 
	   (
	   intField,strValue,intModule
	   ) 
	   SELECT  
	 intField, strValue,intModule
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblAutoComplete WHERE intField= t.intField and strValue = t.strValue  and intModule = t.intModule)
END

END
GO
/****** Object:  StoredProcedure [dbo].[GetInvTrackingDTBinDataFromStockPick]    Script Date: 2020-10-14 ******/
CREATE PROCEDURE [dbo].[GetInvTrackingDTBinDataFromStockPick]
(@DocNumber AS NVARCHAR(50)) as
SELECT tblinvtrackingdt.strpartnumber as PartNumber, 
       tblinvtrackingdt.strlocname as LocName, 
       tblinvtrackingdtbin.decqty as Qty, 
       tblinvtrackingdt.intlineno as [LineNo], 
       tblinvtrackingdtbin.lngbinid as BinId 
FROM   tblinvtrackingdtbin 
       INNER JOIN tblinvtrackingdt 
               ON tblinvtrackingdtbin.lnginvtrackid = 
                  tblinvtrackingdt.lnginvtrackid 
                  AND tblinvtrackingdtbin.intlineno = tblinvtrackingdt.intlineno 
       INNER JOIN tblinvtracking 
               ON tblinvtracking.lnginvtrackid = tblinvtrackingdt.lnginvtrackid 
                  AND Sign(tblinvtrackingdtbin.decqty) = Sign( 
                      tblinvtrackingdt.decqty) 
       INNER JOIN tblpicktickets 
               ON tblpicktickets.lnginvtrackid = tblinvtracking.lnginvtrackid 
WHERE  tblpicktickets.strpktkdocid = @DocNumber
GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocLoadSOForGRV] **********/
CREATE PROCEDURE [dbo].[GetOrderDocLoadSOForGRV]         
 (         
 @DocNum NVARCHAR(MAX),
 @GRVDocNumber NVARCHAR(MAX)      
 )        
AS        
    BEGIN        
        
        SELECT  tblOrderDoc.strOrdDocID AS DocumentNumber ,        
                tblOrderDoc.strOrdFQDocID AS OrdFQDocID ,        
                tblOrderDoc.dteSystemDate AS SystemDate ,        
                tblOrderDoc.dteJournalDate AS JournalDate ,        
                tblOrderDoc.dteRequired AS [Required] ,        
                tblOrderDoc.strUserName AS UserName ,        
                tblOrderDoc.strSoldTo AS SoldTo ,        
                tblOrderDoc.strShipTo AS ShipTo ,        
                tblOrderDoc.strReference AS Reference ,        
                tblOrderDoc.decSubTotal AS SubTotal ,        
                tblOrderDoc.decVAT AS VAT ,        
                tblOrderDoc.decTotal AS Total ,        
                tblOrderDoc.decSubTotalF AS SubTotalF ,        
                tblOrderDoc.decVATF AS VATF ,        
                tblOrderDoc.decTotalF AS TotalF ,        
                tblOrderDoc.strNotes AS Notes ,        
                tblOrderDoc.bitPrinted AS Printed ,        
                tblOrderDoc.bitEmailed AS Emailed ,        
                tblOrderDoc.bitCleared AS IsCleared ,        
                tblOrderDoc.strSalesName AS SalesName ,        
                tblOrderDoc.strAddInfo AS AdditionalInfo ,        
                tblOrderDoc.strCurrency AS CurrencyCode ,        
                tblOrderDoc.bitIsForeign AS IsForeign ,        
                tblOrderDoc.decSubTotalF AS SubTotalForeign ,        
                tblOrderDoc.decVATF AS VATForeign ,        
                tblOrderDoc.decTotalF AS TotalForeign ,        
                tblOrderDoc.decExchange AS ExchangeRate ,        
                tblOrderDoc.strTerm AS Term ,        
                tblOrderDoc.intDept AS Dept ,        
                tblOrderDoc.strField1 AS Field1 ,        
                tblOrderDoc.strField2 AS Field2 ,        
                tblOrderDoc.strField3 AS Field3 ,        
                tblOrderDoc.strField4 AS Field4 ,        
                tblOrderDoc.strField5 AS Field5 ,        
                tblOrderDoc.strField6 AS Field6 ,        
                tblOrderDoc.strField7 AS Field7 ,        
                tblOrderDoc.strField8 AS Field8 ,        
                tblOrderDoc.strField9 AS Field9 ,        
                tblOrderDoc.strField10 AS Field10 ,        
                tblOrderDoc.strField11 AS Field11 ,        
                tblOrderDoc.strField12 AS Field12 ,        
				tblOrderDoc.dteField13 AS Field13 ,        
				tblOrderDoc.dteField14 AS Field14 ,        
                tblOrderDoc.strSubFormated AS SubFormatted ,        
                tblOrderDoc.strVATFormatted AS VATFormatted ,        
                tblOrderDoc.strTotFormatted AS TotalFormatted ,        
                tblOrderDoc.decDiscPerc AS DiscountPercentage ,        
                tblOrderDoc.decDiscAmt AS DiscountAmount ,        
                tblOrderDoc.decDiscAmtF AS DiscountAmountForeign ,        
                tblOrderDoc.strDiscFormatted AS DiscountFormatted ,        
                tblOrderDoc.strStatusTypeCode AS StatusTypeCode ,        
                tblOrderDoc.decTotalWeight AS TotalWeight ,        
                tblOrderDoc.decTotalVolWeight AS TotalVolWeight ,        
                tblOrderDoc.strSOReasonCode AS SOReasonCode ,        
                tblOrderDoc.decDeliveryCost AS DeliveryCost ,        
                tblOrderDoc.decDeliveryCostF AS DeliveryCostForeign ,        
                tblOrderDoc.strDeliveryCostFormatted AS DeliveryCostFormatted ,        
                tblOrderDoc.strDelMethodCode AS DelMethodCode ,        
                tblOrderDoc.strStoreNumber AS StoreNumber ,        
                tblOrderDoc.strEDI AS EDI ,        
				tblOrderDoc.strCustName AS CustomerName  ,      
				--C.strCustDesc AS CustomerDescription,       
               tblOrderDocPGDT.strLocation AS LocationGRV,
			    tblOrderDocPGDT.intLineNo as IntGRVLineNo,
				 tblOrderDocPGDT.decStockQty AS decStockQtyGRV,
				  tblOrderDocPGDT.decStockQtyRemain AS StockGRVQtyRemain,
				    tblOrderDocPGDT.intType AS intTypeGRV,
					 tblOrderDocPGDT.strTaxCode AS TaxCodeGRV,
					  tblOrderDocPGDT.decEaIncTax AS decEaIncTaxGRV,
					   tblOrderDocPGDT.decEaIncTaxF AS EaIncTaxFGRV ,
					    tblOrderDocPGDT.decLineTaxAmt AS decLineTaxAmtGRV , 
						tblOrderDocPGDT.decLineTaxAmtF AS  decLineTaxAmtFGRV,
						 tblOrderDocPGDT.decTotIncTaxF AS  decTotIncTaxFGRV,
						  tblOrderDocPGDT.imgTaxObj AS imgTaxObjGRV,
						   ISNULL(STUFF((SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX)) FROM tblInvLocBin WHERE tblInvLocBin.lngId IN (SELECT lngBinId FROM tblOrderDocPGDTBin WHERE tblOrderDocPGDTBin.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID AND tblOrderDocPGDTBin.intLineNo = tblOrderDocPGDT.intLineNo) FOR XML PATH('') ), 1, 1, ''), '') AS BinCodeGRV,
						    ISNULL(STUFF((SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(MAX)) FROM tblInvLocBin WHERE tblInvLocBin.lngId IN (SELECT lngBinId FROM tblOrderDocPGDTBin WHERE tblOrderDocPGDTBin.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID AND tblOrderDocPGDTBin.intLineNo = tblOrderDocPGDT.intLineNo) FOR XML PATH('') ), 1, 1, ''), '') AS BinIdGRV,
							tblOrderDocPGDT.decBuyGRVQtyRemain,tblOrderDocPGDT.decStockGRVQtyRemain,tblOrderDocPGDT.decBuyQtyRemain,tblOrderDocPGDT.decStockQtyRemain,tblOrderDocPGDT.decBuyQty,tblOrderDocPGDT.decStockQty  FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID INNER JOIN tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType INNER JOIN tblOrderDocPGDT ON tblOrderDocPGDT.strOrdSODocID=tblOrderDoc.strOrdDocID And tblOrderDocPGDT.strPartNumber=tblOrderDocDT.strPartNumber AND tblOrderDocDT.intLineNo = tblOrderDocPGDT.intSODocItemLineNo WHERE tblOrderDoc.strOrdDocID = @DocNum AND tblOrderDocDT.decStockQtyRemain <> 0 AND tblOrderDocPGDT.decBuyGRVQtyRemain <> 0 AND tblOrderDocDT.bitDiscountTax = 0   AND tblOrderDocPGDT.strOrdPGDocID=@GRVDocNumber ORDER BY tblOrderDocDT.intLineNo   
        
END 
GO
/****** Object:  StoredProcedure [dbo].[BOMForDAReport_SubReportData] **********/
CREATE PROCEDURE [dbo].[BOMForDAReport_SubReportData]
	@DocumentNumber AS VARCHAR(50)
	,@PartNumber AS VARCHAR(50)
AS
BEGIN
	SELECT BOM.strPartNumber,INV2.strDesc,COMP.strPartNumber AS strCompNumber,INV.strDesc AS strCompDesc,DTL.intLineNo,ROUND((COMP.decQty * (DTL.decQty / BOM.decQty)), 4) AS decQty,INV.strStockUnit AS strUnit FROM tblOrderDocDA HDR INNER JOIN tblOrderDocDADT DTL ON HDR.strOrdDADocID = DTL.strOrdDADocID INNER JOIN tblManBOM BOM ON DTL.strPartNumber = BOM.strPartNumber AND DTL.strLocation = BOM.strLocation INNER JOIN tblManBOMCompInv COMP ON BOM.lngManBOMID = COMP.lngManBOMID INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber INNER JOIN tblInv INV2 ON BOM.strPartNumber = INV2.strPartNumber LEFT JOIN tblInvBOM ON tblInvBOM.strPartNumber = DTL.strPartNumber WHERE (DTL.strOrdDADocID = @DocumentNumber) AND (BOM.bitInactive = 0) AND (BOM.bitPrintSO = 1) AND tblInvBOM.strPartNumber IS NULL  UNION ALL SELECT tblOrderDocDADT.strPartNumber,Inv2.strDesc,tblOrderDocDADTBOM.strPartItemNumber AS strCompNumber,tblInv.strDesc AS strCompDesc,tblOrderDocDADT.intLineNo,SUM(tblOrderDocDADTBOM.decQty) AS intQtyToUse,tblInv.strUnitOfMeasure FROM tblOrderDocDADTBOM INNER JOIN tblOrderDocDADT ON tblOrderDocDADTBOM.strOrdDocDAID = tblOrderDocDADT.strOrdDADocID AND tblOrderDocDADTBOM.intMainLineNo = tblOrderDocDADT.intLineNo INNER JOIN tblInv ON tblOrderDocDADTBOM.strPartItemNumber = tblInv.strPartNumber INNER JOIN tblInv Inv2 ON tblOrderDocDADT.strPartNumber = Inv2.strPartNumber WHERE tblOrderDocDADT.strOrdDADocID = @DocumentNumber AND Inv2.bitAutoBuild = 1 AND Inv2.bitPrintComp = 1 GROUP BY tblOrderDocDADT.strPartNumber,Inv2.strDesc,tblOrderDocDADTBOM.strPartItemNumber,tblInv.strDesc,tblOrderDocDADT.intLineNo,tblInv.strUnitOfMeasure ORDER BY BOM.strPartNumber ,COMP.strPartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetQtyOfInvoiceDocDTBin] **********/
CREATE PROCEDURE [dbo].[GetQtyOfInvoiceDocDTBin] (
	@InvDocID VARCHAR(200)
	,@LineNo INT
	,@BinId BIGINT
	)
AS
BEGIN
	SELECT decQty
	FROM tblInvoiceDocDTBin
	WHERE strInvDocID = @InvDocID
		AND intLineNo = @LineNo
		AND lngBinId = @BinId
END
GO
/****** Object:  StoredProcedure [dbo].[GetOrderDocDTForLoadDocGRV] **********/
CREATE PROCEDURE [dbo].[GetOrderDocDTForLoadDocGRV] (
	@ExistingSOSQNumber AS NVARCHAR(50)
	,@SQstrLineNos AS NVARCHAR(50) = NULL
	,@GPCalcInvLevel AS INT
	,@GPCalcLPP AS INT
	,@DefaultInvLocation AS NVARCHAR(5)
	,@DocGRVNumber AS NVARCHAR(50)
	)
AS
BEGIN
	SET @ExistingSOSQNumber = REPLACE(@ExistingSOSQNumber, '''', '')

	SELECT tblOrderDocDT.strOrdDocID AS OrdDocID
		,tblOrderDocDT.intLineNo AS [LineNo]
		,tblOrderDocDT.strPartNumber AS PartNumber
		,tblOrderDocDT.strLocation AS Location
		,tblOrderDocDT.strPartDesc AS PartDesc
		,tblOrderDocDT.decQty AS Qty
		,tblOrderDocDT.decQtyRemaining AS QtyRemaining
		,tblOrderDocDT.strUnit AS Unit
		,tblOrderDocDT.intType AS Type
		,tblOrderDocDT.decPriceEaExc AS PriceEaExc
		,tblOrderDocDT.decLineTotExc AS LineTotExc
		,tblOrderDocDT.decLineTaxAmt AS LineTaxAmt
		,tblOrderDocDT.decPriceEaInc AS PriceEaInc
		,tblOrderDocDT.decLineTotInc AS LineTotInc
		,tblOrderDocDT.strTaxCode AS TaxCode
		,tblOrderDocDT.imgTaxObj AS TaxObj
		,tblOrderDocDT.strCurrency AS Currency
		,tblOrderDocDT.bitIsForeign AS IsForeign
		,tblOrderDocDT.decPriceEaExcF AS PriceEaExcF
		,tblOrderDocDT.decLineTotExcF AS LineTotExcF
		,tblOrderDocDT.decLineTaxAmtF AS LineTaxAmtF
		,tblOrderDocDT.decEaIncTaxF AS EaIncTaxF
		,tblOrderDocDT.decTotIncTaxF AS TotIncTaxF
		,tblOrderDocDT.strInvField1 AS InvField1
		,tblOrderDocDT.strInvField2 AS InvField2
		,tblOrderDocDT.strInvField3 AS InvField3
		,tblOrderDocDT.strInvField4 AS InvField4
		,tblOrderDocDT.strInvField5 AS InvField5
		,tblOrderDocDT.strInvField6 AS InvField6
		,tblOrderDocDT.strLineField1 AS LineField1
		,tblOrderDocDT.strLineField2 AS LineField2
		,tblOrderDocDT.strLineField3 AS LineField3
		,tblOrderDocDT.strLineField4 AS LineField4
		,tblOrderDocDT.strLineField5 AS LineField5
		,tblOrderDocDT.strLineField6 AS LineField6
		,tblOrderDocDT.strLineField7 AS LineField7
		,tblOrderDocDT.strLineField8 AS LineField8
		,tblOrderDocDT.strLineField9 AS LineField9
		,tblOrderDocDT.strLineField10 AS LineField10
		,tblOrderDocDT.strLineField11 AS LineField11
		,tblOrderDocDT.strLineField12 AS LineField12
		,tblOrderDocDT.decLineDiscPerc AS LineDiscPerc
		,tblOrderDocDT.decLineDiscAmt AS LineDiscAmt
		,tblOrderDocDT.decLineDiscAmtF AS LineDiscAmtF
		,tblOrderDocDT.bitDiscountTax AS DiscountTax
		,tblOrderDocDT.decStockQty AS StockQty
		,tblOrderDocDT.strStockUnit AS StockUnit
		,tblOrderDocDT.decStockQtyRemain AS StockQtyRemain
		,tblOrderDocDT.strSalesName AS SalesName
		,tblOrderDocDT.strPartExtendedDesc AS PartExtendedDesc
		,tblOrderDocDT.decBuyoutCost AS BuyoutCost
		,tblOrderDocDT.decItemWeight AS ItemWeight
		,tblOrderDocDT.decVolumetricWeight AS VolumetricWeight
		,tblOrderDocDT.bitContainerItem AS ContainerItem
		,tblOrderDocDT.bitDelCost AS DelCost
		,tblOrderDocDT.intBillingMethod AS BillingMethod
		,tblOrderDocDT.uidTransactionFieldID AS TransactionFieldGUID
		,tblOrderDocDT.[uidContainerItem] AS ContainerItemGUID
		,ISNULL(tblOrderDocDTPrj.strProjNumber, '') AS ProjNumber
		,tblInv.bitInvSerialType AS IsInvSerialType
		,CASE 
			WHEN tblInv.intType = 4
				THEN tblInv.decStandardCost
			ELSE CASE @GPCalcLPP
					WHEN 0
						THEN tblInv.decLastPPUnit
					WHEN 1
						THEN tblInv.decStandardCost
					WHEN 2
						THEN CASE @GPCalcInvLevel
								WHEN 0
									THEN CASE 
											WHEN tblInv.decLastPPUnit > ISNULL((
														SELECT CASE EXT.decOnHand
																WHEN 0
																	THEN 0
																ELSE EXT.decValue / EXT.decOnHand
																END
														FROM tblInvExt EXT
														WHERE EXT.strPartNumber = tblInv.strPartNumber
															AND EXT.strLocName = tblOrderDocDT.strLocation
														), 0)
												THEN tblInv.decLastPPUnit
											ELSE CASE 
													WHEN tblInv.decLastPPUnit < ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = tblOrderDocDT.strLocation
																), 0)
														THEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblOrderDocDT.strLocation
																	), 0)
													ELSE CASE 
															WHEN ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt EXT
																		WHERE EXT.strPartNumber = tblInv.strPartNumber
																			AND EXT.strLocName = tblOrderDocDT.strLocation
																		), 0) = 0
																THEN tblInv.decLastPPUnit
															ELSE ISNULL((
																		SELECT CASE EXT.decOnHand
																				WHEN 0
																					THEN 0
																				ELSE EXT.decValue / EXT.decOnHand
																				END
																		FROM tblInvExt EXT
																		WHERE EXT.strPartNumber = tblInv.strPartNumber
																			AND EXT.strLocName = tblOrderDocDT.strLocation
																		), 0)
															END
													END
											END
								WHEN 1
									THEN CASE 
											WHEN tblInv.decLastPPUnit > ISNULL((
														CASE tblInv.decSumOnHand
															WHEN 0
																THEN 0
															ELSE tblInv.decSumValue / tblInv.decSumOnHand
															END
														), 0)
												THEN tblInv.decLastPPUnit
											ELSE CASE 
													WHEN tblInv.decLastPPUnit < ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
														THEN ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
													ELSE CASE 
															WHEN CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END = 0
																THEN tblInv.decLastPPUnit
															ELSE ISNULL((
																		CASE tblInv.decSumOnHand
																			WHEN 0
																				THEN 0
																			ELSE tblInv.decSumValue / tblInv.decSumOnHand
																			END
																		), 0)
															END
													END
											END
								ELSE tblInv.decLastPPUnit
								END
					WHEN 3
						THEN CASE @GPCalcInvLevel
								WHEN 0
									THEN CASE 
											WHEN ISNULL((
														SELECT CASE EXT.decOnHand
																WHEN 0
																	THEN 0
																ELSE EXT.decValue / EXT.decOnHand
																END
														FROM tblInvExt EXT
														WHERE EXT.strPartNumber = tblInv.strPartNumber
															AND EXT.strLocName = tblOrderDocDT.strLocation
														), 0) = 0
												THEN tblInv.decLastPPUnit
											ELSE ISNULL((
														SELECT CASE EXT.decOnHand
																WHEN 0
																	THEN 0
																ELSE EXT.decValue / EXT.decOnHand
																END
														FROM tblInvExt EXT
														WHERE EXT.strPartNumber = tblInv.strPartNumber
															AND EXT.strLocName = tblOrderDocDT.strLocation
														), 0)
											END
								WHEN 1
									THEN CASE 
											WHEN CASE tblInv.decSumOnHand
													WHEN 0
														THEN 0
													ELSE tblInv.decSumValue / tblInv.decSumOnHand
													END = 0
												THEN tblInv.decLastPPUnit
											ELSE ISNULL((
														CASE tblInv.decSumOnHand
															WHEN 0
																THEN 0
															ELSE tblInv.decSumValue / tblInv.decSumOnHand
															END
														), 0)
											END
								ELSE tblInv.decLastPPUnit
								END
					ELSE tblInv.decLastPPUnit
					END
			END AS GPCalc
		--NEWLY ADDED
		,tblInv.bitVoucherEnabled AS IsVoucherEnabled
		,ISNULL(tblInv.strVoucherCode, '') AS VoucherCode
		,ISNULL(tblInv.strUnitOfMeasure, '') AS UnitOfMeasure
		,tblInv.strDimProCode AS DimProCode
		,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist
		,tblInv.bitAutoBuild AS IsAutoBuild
		,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT SUM(INV.decLastPPUnit)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						WHERE BOM.strPartNumber = tblInv.strPartNumber
						), 0)
			END AS AutoBuildLRC
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT SUM(INV.decStandardCost)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						WHERE BOM.strPartNumber = tblInv.strPartNumber
						), 0)
			END AS AutoBuildSC
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT ISNULL(SUM(CASE EXT.decOnHand
										WHEN 0
											THEN 0
										ELSE EXT.decValue / EXT.decOnHand
										END), 0)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
						WHERE BOM.strPartNumber = tblInv.strPartNumber
							AND EXT.strLocName = @DefaultInvLocation
						), 0)
			END AS AutoBuildMALocDef
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT ISNULL(SUM(CASE EXT.decOnHand
										WHEN 0
											THEN 0
										ELSE EXT.decValue / EXT.decOnHand
										END), 0)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
							AND BOM.strLocName = EXT.strLocName
						WHERE BOM.strPartNumber = tblInv.strPartNumber
						), 0)
			END AS AutoBuildMALocation
		,CASE 
			WHEN tblInv.bitAutoBuild = 0
				THEN 0
			ELSE ISNULL((
						SELECT ISNULL(SUM(CASE INV.decSumOnHand
										WHEN 0
											THEN 0
										ELSE INV.decSumValue / INV.decSumOnHand
										END), 0)
						FROM tblInvBOM BOM
						INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
						WHERE BOM.strPartNumber = tblInv.strPartNumber
						), 0)
			END AS AutoBuildMAMain
		,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod

	FROM tblOrderDocDT
	INNER JOIN tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
		AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblOrderDocDT.strOrdDocID = @DocGRVNumber
		AND tblOrderDocDT.decQtyRemaining <> 0
	ORDER BY tblOrderDocDT.intLineNo
END
GO

/****** Object:  StoredProcedure [dbo].[GetOrderDocDTForConversionGRV] **********/
CREATE PROCEDURE [dbo].[GetOrderDocDTForConversionGRV] (
	@DocNumber AS NVARCHAR(100)
	,@DocLineNumber AS INT
	,@IsPurchases AS BIT = 0
	)
AS
BEGIN
	IF (@IsPurchases = 0)
	BEGIN
		SELECT tblOrderDocPGDTSerial.[strOrdPGDocID] AS OrdDocID
			,tblOrderDocPGDTSerial.[intLineNo] AS [LineNo]
			,tblOrderDocPGDTSerial.[strSerialNumber] AS SerialNumber
			,tblOrderDocPGDTSerial.[decQty] AS Qty
			,tblOrderDocPGDTSerial.[strUnit] AS Unit
			,tblOrderDocPGDTSerial.[lngID] AS ID
			,tblOrderDocPGDTSerial.[bitExpiryDate] AS IsExpiryDate
			,tblOrderDocPGDTSerial.[bitExpiryDate] AS IsExpiry
			,tblOrderDocPGDTSerial.[dteExpiryDate] AS ExpiryDate
			,tblOrderDocPGDTSerial.[intSerialLotType] AS SerialLotType
			,ISNULL((
					SELECT DISTINCT TYP.strInvSerialType
					FROM tblOrderDocPGDTSerial SRL
					INNER JOIN tblOrderDocPGDT DTL ON SRL.strOrdPGDocID = DTL.strOrdPGDocID
						AND SRL.intLineNo = DTL.intLineNo
					INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber
					INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType
					WHERE SRL.strOrdPGDocID = tblOrderDocPGDTSerial.strOrdPGDocID
						AND SRL.intLineNo = tblOrderDocPGDTSerial.intLineNo
					), '') AS SerialType
			,CASE 
				WHEN tblOrderDocPGDTSerial.intSerialLotType = 0
					THEN CONVERT(BIT, (ISNULL(tblInvSerialExt.bitDimensionExist, 0)), 0)
				ELSE CONVERT(BIT, 0)
					--THEN ISNULL(tblInvSerialExt.bitDimensionExist, 0)
					--ELSE 0
				END AS IsDimensionExist
			,CASE 
				WHEN tblOrderDocPGDTSerial.intSerialLotType = 0
					THEN ISNULL(tblInvSerialExt.strDimension, '')
				ELSE ''
				END AS Dimension
			,tblOrderDocPGDTSerial.lngBinID AS BinID
			,ISNULL((
					SELECT strBinCode
					FROM tblInvLocBin
					WHERE lngID = tblOrderDocPGDTSerial.lngBinID
					), '') AS BinCode
		FROM tblOrderDocPGDT
		INNER JOIN tblOrderDocPGDTSerial ON tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPGDTSerial.strOrdPGDocID
			AND tblOrderDocPGDT.intLineNo = tblOrderDocPGDTSerial.intLineNo
		LEFT JOIN tblInvSerialExt ON tblOrderDocPGDT.strPartNumber = tblInvSerialExt.strPartNumber
			AND tblOrderDocPGDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
		WHERE tblOrderDocPGDTSerial.strOrdPGDocID = @DocNumber
			AND tblOrderDocPGDTSerial.intLineNo = @DocLineNumber
		ORDER BY tblOrderDocPGDTSerial.lngID
	END
	ELSE
	BEGIN
		SELECT tblOrderDocPGDTSerial.[strOrdPGDocID] AS OrdDocID
			,tblOrderDocPGDTSerial.[intLineNo] AS [LineNo]
			,tblOrderDocPGDTSerial.[strSerialNumber] AS SerialNumber
			,tblOrderDocPGDTSerial.[decQty] AS Qty
			,tblOrderDocPGDTSerial.[strUnit] AS Unit
			,tblOrderDocPGDTSerial.[lngID] AS ID
			,tblOrderDocPGDTSerial.[bitExpiryDate] AS IsExpiryDate
			,tblOrderDocPGDTSerial.[bitExpiryDate] AS IsExpiry
			,tblOrderDocPGDTSerial.[dteExpiryDate] AS ExpiryDate
			,tblOrderDocPGDTSerial.[intSerialLotType] AS SerialLotType
			,ISNULL((
					SELECT DISTINCT TYP.strInvSerialType
					FROM tblOrderDocPGDTSerial SRL
					INNER JOIN tblOrderDocPGDT DTL ON SRL.strOrdPGDocID = DTL.strOrdPGDocID
						AND SRL.intLineNo = DTL.intLineNo
					INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber
					INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType
					WHERE SRL.strOrdPGDocID = tblOrderDocPGDTSerial.strOrdPGDocID
						AND SRL.intLineNo = tblOrderDocPGDTSerial.intLineNo
					), '') AS SerialType
			,CASE 
				WHEN tblOrderDocPGDTSerial.intSerialLotType = 0
					THEN CONVERT(INT, (ISNULL(tblInvSerialExt.bitDimensionExist, 0)), 0)
				ELSE CONVERT(INT, 0)
					--THEN ISNULL(tblInvSerialExt.bitDimensionExist, 0)
					--ELSE 0
				END AS IsDimensionExist
			,CASE 
				WHEN tblOrderDocPGDTSerial.intSerialLotType = 0
					THEN ISNULL(tblInvSerialExt.strDimension, '')
				ELSE ''
				END AS Dimension
			,tblOrderDocPGDTSerial.lngBinID AS BinIDLong
			,ISNULL((
					SELECT strBinCode
					FROM tblInvLocBin
					WHERE lngID = tblOrderDocPGDTSerial.lngBinID
					), '') AS BinCode
			,CASE 
				WHEN tblOrderDocPGDTSerial.intSerialLotType = 0
					THEN ISNULL(CAST(tblInvSerialExt.intStatus AS CHAR(1)) + tblInvSerialExt.strDocID, '')
				ELSE ''
				END AS [Status]
		FROM tblOrderDocPGDT
		INNER JOIN tblOrderDocPGDTSerial ON tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPGDTSerial.strOrdPGDocID
			AND tblOrderDocPGDT.intLineNo = tblOrderDocPGDTSerial.intLineNo
		LEFT JOIN tblInvSerialExt ON tblOrderDocPGDT.strPartNumber = tblInvSerialExt.strPartNumber
			AND tblOrderDocPGDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
		WHERE tblOrderDocPGDTSerial.strOrdPGDocID = @DocNumber
			AND tblOrderDocPGDTSerial.intLineNo = @DocLineNumber
		ORDER BY tblOrderDocPGDTSerial.lngID
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetPickTicketsDTGRVData] **********/
CREATE PROCEDURE [dbo].[GetPickTicketsDTGRVData] (@DocID NVARCHAR(50))
AS
BEGIN
	SELECT strPartNumber AS PartNumber
		,SUM(decQtyPicked) AS QuantityPicked
	FROM tblPickTicketsDT
	WHERE strPkTkDocID IN (
			SELECT strPkTkDocID
			FROM tblPickTickets
			WHERE strOrdDocID = @DocID
				AND bitCleared = 0
				AND bitPicked = 1
				AND bitDA = 0
			)
	GROUP BY strPartNumber
	HAVING strPartNumber IN (
			SELECT strPartNumber
			FROM tblOrderDocDT
			WHERE strOrdDocID IN (
					SELECT strOrdDocID
					FROM tblOrderDoc
					WHERE strOrdDocID = @DocID
					)
			)
	ORDER BY strPartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetPickedItemsForDocConversionGRV] **********/
CREATE PROCEDURE [dbo].[GetPickedItemsForDocConversionGRV] (@DocID AS NVARCHAR(50))
AS
BEGIN
	SELECT intLineNo AS [LineNo]
		,strPartNumber AS PartNumber
		,SUM(decQtyPicked) AS QuantityPicked
		,STUFF((
				SELECT ',' + A.strPkTkDocID
				FROM (
					SELECT intLineNo
						,strPartNumber
						,strPkTkDocID
					FROM tblPickTickets
					WHERE strOrdDocID = @DocID
						AND bitCleared = 0
						AND bitPicked = 1
						AND bitDA = 0
					) A
				WHERE A.intLineNo = B.intLineNo
					AND A.strPartNumber = B.strPartNumber
				FOR XML PATH('')
				), 1, 1, '') AS PkTkDocID
		,ROW_NUMBER() OVER (
			ORDER BY strPartNumber ASC
			) AS LineNoGRV
	FROM tblPickTicketsDT B
	WHERE strPkTkDocID IN (
			SELECT strPkTkDocID
			FROM tblPickTickets
			WHERE strOrdDocID = @DocID
				AND bitCleared = 0
				AND bitPicked = 1
				AND bitDA = 0
			)
	GROUP BY intLineNo
		,strPartNumber
	HAVING strPartNumber IN (
			SELECT strPartNumber
			FROM tblOrderDocDT
			WHERE strOrdDocID IN (
					SELECT strOrdDocID
					FROM tblOrderDoc
					WHERE strOrdDocID = @DocID
					)
			)
END
GO
/****** Object:  StoredProcedure [dbo].[GetPickTicketDTGRVData] **********/
CREATE PROCEDURE [dbo].[GetPickTicketDTGRVData] (@DocumentID AS NVARCHAR(50))
AS
BEGIN
	SELECT intLineNo AS [LineNo]
		,strPartNumber AS PartNumber
		,SUM(decQtyPicked) AS QuantityPicked
		,STUFF((
				SELECT ',' + A.strPkTkDocID
				FROM (
					SELECT intLineNo
						,strPartNumber
						,strPkTkDocID
					FROM tblPickTickets
					WHERE strOrdDocID = @DocumentID
						AND bitPicked = 1
						AND bitDA = 0
					) A
				WHERE A.intLineNo = B.intLineNo
					AND A.strPartNumber = B.strPartNumber
				FOR XML PATH('')
				), 1, 1, '') AS PkTkDocID
		,ROW_NUMBER() OVER (
			ORDER BY strPartNumber ASC
			) AS LineNoGRV
	FROM tblPickTicketsDT B
	WHERE strPkTkDocID IN (
			SELECT strPkTkDocID
			FROM tblPickTickets
			WHERE strOrdDocID = @DocumentID
				AND bitPicked = 1
				AND bitDA = 0
			)
	GROUP BY intLineNo
		,strPartNumber
	HAVING strPartNumber IN (
			SELECT strPartNumber
			FROM tblOrderDocDT
			WHERE strOrdDocID IN (
					SELECT strOrdDocID
					FROM tblOrderDoc
					WHERE strOrdDocID = @DocumentID
					)
			)
END
GO
/****** Object:  StoredProcedure [dbo].[GetBOMInvEntries] **********/
CREATE PROCEDURE [dbo].[GetBOMInvEntries]
(
	@DocumentId VARCHAR(50)
)
AS
BEGIN

SELECT tblInvoiceDocDT.strPartNumber AS PartNumber
	,tblInvoiceDocDTBOM.strPartItemNumber AS PartItemNumber
	,strPartDesc AS 'Desc'
	,decBOMQty	AS BOMQty
	,tblInv.strUnitOfMeasure AS UOM
	,tblInvoiceDocDTBOM.decQty AS Qty
	,tblInvoiceDocDTBOM.intLineNo AS 'LineNo'
	,tblInvoiceDocDTBOM.intMainLineNo AS MainLineNo
	,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc
	,tblInv.strDesc AS ItemPartNumberDesc
	,tblInvoiceDocDTBOM.strLocation	AS LocName
FROM tblInvoiceDocDTBOM
INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocId = tblInvoiceDocDTBOM.strInvDocId
	AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTBOM.intMainLineNo
INNER JOIN tblInv ON tblInv.strPartNumber = tblInvoiceDocDTBOM.strPartItemNumber
WHERE tblInvoiceDocDTBOM.strInvDocID = @DocumentId
END
GO
/****** Object:  StoredProcedure [dbo].[UPDATEOrderDocDADT] **********/
CREATE PROCEDURE [dbo].[UPDATEOrderDocDADT] @QtyRemain DECIMAL
	,@StockQtyRemain DECIMAL
	,@OrdDADocID NVARCHAR(50)
	,@POline INT
AS
BEGIN
	UPDATE tblOrderDocDADT
	SET decDAQtyRemain = @QtyRemain
		,decStockDAQtyRemain = @StockQtyRemain
	WHERE strOrdDADocID = @OrdDADocID
		AND intLineNo = @POline
END
GO
/****** Object:  StoredProcedure [dbo].[UPDATEOrderDocDA] **********/
CREATE PROCEDURE [dbo].[UPDATEOrderDocDA] @DocNumber NVARCHAR(50)
AS
BEGIN
	UPDATE tblOrderDocDA
	SET bitCleared = 1
	WHERE strOrdDADocID = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetBOMOrderDocDAEntries] **********/
CREATE PROCEDURE [dbo].[GetBOMOrderDocDAEntries]
(
	@DocumentId AS NVARCHAR(50)
)
AS
BEGIN
	SELECT tblOrderDocDADT.strPartNumber AS PartNumber,tblOrderDocDADTBOM.strPartItemNumber as PartItemNumber ,tblOrderDocDADTBOM.strPartItemNumber AS ItemPartNumber ,strPartDesc AS [Desc] ,decBOMQty AS BOMQty ,tblInv.strUnitOfMeasure AS UOM ,tblOrderDocDADTBOM.decQty AS Qty,tblOrderDocDADTBOM.intLineNo AS 'LineNo',tblOrderDocDADTBOM.intMainLineNo AS MainLineNo,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc ,tblInv.strDesc AS ItemPartNumberDesc ,tblOrderDocDADTBOM.strLocName as LocName
	 FROM tblOrderDocDADTBOM 
	 INNER JOIN tblOrderDocDADT ON tblOrderDocDADT.strOrdDADocID = tblOrderDocDADTBOM.strOrdDocDAID AND tblOrderDocDADT.intLineNo = tblOrderDocDADTBOM.intMainLineNo INNER JOIN tblInv ON tblInv.strPartNumber = tblOrderDocDADTBOM.strPartItemNumber
	 WHERE tblOrderDocDADTBOM.strOrdDocDAID = @DocumentId
END
GO
/****** Object:  StoredProcedure [dbo].[GetDAAmount] **********/
CREATE PROCEDURE [dbo].[GetDAAmount]
@OrdDADocID AS NVARCHAR(50),
@LineNo AS INT
AS
BEGIN	
SELECT CASE WHEN tblOrderDocDA.bitIsForeign = 0 THEN tblOrderDocDADT.decPriceEaExc ELSE tblOrderDocDADT.decPriceEaExcF END AS Price,  tblOrderDocDADT.decQty AS Qty,  tblOrderDocDADT.decDAQtyRemain AS DAQtyRemain,   tblOrderDocDADT.decStockDAQtyRemain As decStockDAQtyRemain  FROM tblOrderDocDA INNER JOIN tblOrderDocDADT ON tblOrderDocDA.strOrdDADocID = tblOrderDocDADT.strOrdDADocID WHERE tblOrderDocDA.strOrdDADocID = @OrdDADocID AND tblOrderDocDADT.intLineNo = @LineNo
END
GO
/****** Object:  StoredProcedure [dbo].[OrderDocDADTUpdate] **********/
CREATE PROCEDURE [dbo].[OrderDocDADTUpdate]    
(    
 @OrderDocDADTDataForUpdate As OrderDocDADTUpdateTableType ReadOnly,    
 @OrdDADocID AS NVARCHAR(50)    
)    
AS    
BEGIN    
  UPDATE tblOrderDocDADT SET    
  decDAQtyRemain = r.QtyRemaining,     
   decStockDAQtyRemain = r.StockQtyRemain     
 FROM @OrderDocDADTDataForUpdate r   
 WHERE strOrdDADocID IN (  
     SELECT *  
     FROM fnSplitStringAsTable(@OrdDADocID, ',')  
     )  
 AND intLineNo = r.[LineNo]    
END 
GO
/****** Object:  StoredProcedure [dbo].[GetVarianceAccount] **********/
CREATE PROCEDURE [dbo].[GetVarianceAccount] @InvLocation NVARCHAR(500)
	,@PartNumber NVARCHAR(50)
AS
BEGIN
	SELECT intGLRevenue AS GLRevenue
		,intGLExpCOGS AS GLExpCOGS
	FROM tblAccountSets
	WHERE strAcctSet = dbo.fnAcctSetLocation(@PartNumber, @InvLocation)
END
GO
/****** Object:  StoredProcedure [dbo].[GetQtyAndUseCountFromOrderDocDADTBin] **********/
CREATE PROCEDURE [dbo].[GetQtyAndUseCountFromOrderDocDADTBin]
AS
BEGIN
	SELECT decQty AS Qty
		,strOrdDADocID AS OrdDADocID
		,intLineNo AS [LineNo]
		,lngBinID AS BinID
		,Isnull((
				SELECT Sum(InvDTBin.decQty)
				FROM tblInvoiceDocDT AS InvDT
				INNER JOIN tblInvoiceDocDTBin AS InvDTBin ON InvDT.strInvDocID = InvDTBin.strInvDocID
					AND InvDT.intLineNo = InvDTBin.intLineNo
				WHERE InvDT.strOrdDADocID = tblOrderDocDADTBin.strOrdDADocID
					AND InvDT.intDALineNo = tblOrderDocDADTBin.intLineNo
					AND InvDTBin.lngBinID = tblOrderDocDADTBin.lngBinId
				), 0) AS UseCount
	FROM tblOrderDocDADTBin
END
GO
/****** Object:  StoredProcedure [dbo].[GetPickedInvDocNumber] **********/
CREATE PROCEDURE GetPickedInvDocNumber
	@DocNumber NVARCHAR(50)
AS
BEGIN
	SET NOCOUNT ON;
	SELECT ISNULL(strOrigDocID,'') AS strOrigDocID FROM tblOrderDocDT WHERE strOrdDocID=@DocNumber GROUP BY strOrdDocID, strOrigDocID
END
GO
/****** Object:  StoredProcedure [dbo].[CheckTenderTypeCash] **********/
CREATE PROCEDURE [dbo].[CheckTenderTypeCash]
(
	@TenderType NVARCHAR(100)  
) 
AS  
BEGIN  
	SELECT bitCash FROM dbo.tblTenderTypes WHERE UPPER(strName)=@TenderType
END
GO
/****** Object:  StoredProcedure [dbo].[GetPartItemNumberAlternate] **********/
CREATE PROCEDURE [dbo].[GetPartItemNumberAlternate]
(
	@PartNumbers VARCHAR(MAX)
)
AS
BEGIN
	SELECT COUNT(strPartItemNumber) FROM tblInvAlternate WHERE strPartNumber IN (SELECT VALUE FROM fnSplitStringAsTable(@PartNumbers, '~'))
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryAlternateData] **********/
CREATE PROCEDURE [dbo].[GetInventoryAlternateData] (
	@PartNumber NVARCHAR(MAX)
	,@CustomerName NVARCHAR(50)=null
	,@Location NVARCHAR(50)	
	)
AS
BEGIN
	SELECT tblInvAlternate.strPartNumber AS PartNumber
		,tblInvAlternate.strPartItemNumber AS PartItemNumber
		,tblInv.strDesc AS [Desc]
		,Isnull(tblInvPrice.strUnit,tblinv.strStockUnit) AS Unit
		,tblInvAlternate.intQtyToUse AS QtyToUse
		,tblInvPrice.decSelling AS Selling
		,(tblInv.decSumOnHand * (ISNULL(CASE strConversionType WHEN 'Multiply' THEN decConversionFactor ELSE 1/decConversionFactor END,tblInv.decSellFromStock))) AS SumOnHand
		,(tblInv.decSumAvail * (ISNULL(CASE strConversionType WHEN 'Multiply' THEN decConversionFactor ELSE 1/decConversionFactor END,tblInv.decSellFromStock))) AS SumAvail
		,(tblInvExt.decOnHand * (ISNULL(CASE strConversionType WHEN 'Multiply' THEN decConversionFactor ELSE 1/decConversionFactor END,tblInv.decSellFromStock))) AS OnHand
		,(tblInvExt.decAvail * (ISNULL(CASE strConversionType WHEN 'Multiply' THEN decConversionFactor ELSE 1/decConversionFactor END,tblInv.decSellFromStock))) AS decAvail
	FROM tblInvAlternate
	LEFT JOIN tblInv ON tblInvAlternate.strPartItemNumber = tblInv.strPartNumber
	LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber and tblInvAlternate.strUnit=tblInvPrice.strUnit
	LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit AND tblInvUOMs.bitInactive = 0 AND tblInvUOMs.strUseFor in ('Both','Sales')
	INNER JOIN tblInvExt ON tblInvExt.strPartNumber = tblInv.strPartNumber
		AND tblInvExt.strLocName = @Location
	WHERE (
			tblInvPrice.strPricelist IN (
				SELECT strPriceList
				FROM tblCustomers
				WHERE strCustName = @CustomerName
				)
			)
		AND (tblInvAlternate.strPartNumber = @PartNumber)		
	ORDER BY tblInvAlternate.strPartItemNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvOnHandFreeHandQuote] **********/
Create PROCEDURE [dbo].[GetInvOnHandFreeHandQuote]
	@SQPartNumber Varchar(100),
	@SQLocation Varchar(20)
AS
BEGIN	
	SET NOCOUNT ON;
	SELECT CONVERT(int,ISNULL(tblInvExt.decOnHand,0) )FROM tblInvExt INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber WHERE tblInvExt.strPartNumber = @SQPartNumber AND tblInvExt.strLocName = @SQLocation
END
GO
/****** Object:  StoredProcedure [dbo].[UpdateInventoryExt] **********/
CREATE PROCEDURE UpdateInventoryExt 
AS
BEGIN
	SET NOCOUNT ON;
    UPDATE tblInvExt SET bitDefault = 1 WHERE strPartNumber NOT IN (SELECT strPartNumber FROM tblInvExt WHERE bitDefault = 1) AND strLocName = 'DEFAULT'
END
GO
/****** Object:  StoredProcedure [dbo].[GetIsCashPrice] **********/
CREATE PROCEDURE [dbo].[GetIsCashPrice] (
	@CustomerName NVARCHAR(50)
	,@DocDate DATETIME
	,@PartNumber NVARCHAR(MAX)
	)
AS
BEGIN
	SELECT ISNULL(tblInvPrice.bitCashPricing, 0) AS IsCashPricing
	FROM tblInvPrice
	INNER JOIN tblPriceListsByDate ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
	INNER JOIN tblCustomers ON tblPriceListsByDate.strPricelist = tblCustomers.strPricelist
	WHERE tblCustomers.strCustName = @CustomerName
		AND @DocDate >= tblPriceListsByDate.dteStartDate
		AND @DocDate <= tblPriceListsByDate.dteFinishDate
		AND tblPriceListsByDate.bitInactive = 0
		AND tblInvPrice.strPartNumber = @PartNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetOnHandQty] **********/
CREATE PROCEDURE [dbo].[GetOnHandQty] (
	@PartNumber NVARCHAR(MAX)
	,@Location NVARCHAR(50)
	)
AS
BEGIN
	SELECT tblInvExt.decOnHand AS OnHand
	FROM tblInvExt
	INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber
	WHERE tblInvExt.strPartNumber = @PartNumber
		AND tblInvExt.strLocName = @Location
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvPriceforResetSalesOnTenderType] **********/
CREATE PROCEDURE [dbo].[GetInvPriceforResetSalesOnTenderType]
(
	@PartNumbers VARCHAR(MAX),
	@DocNumber varchar(max)
)
AS
BEGIN
	SELECT     dbo.tblinvoicedocdt.strinvdocid, 
           dbo.tblinvoicedocdt.strpartnumber, 
           dbo.tblinvprice.decselling, 
           dbo.tblinvoicedocdt.blniscashprice, 
           dbo.tblinvoicedocdt.declinediscperc 
FROM       tblinvprice 
INNER JOIN dbo.tblinvoicedocdt 
ON         tblinvoicedocdt.strpartnumber = dbo.tblinvprice.strpartnumber 
WHERE      dbo.tblinvoicedocdt.strinvdocid=@DocNumber 
AND        dbo.tblinvprice.strpartnumber IN  
           ( 
                  SELECT value 
                  FROM   fnsplitstringastable(@PartNumbers, '~'))
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvCashPriceData] **********/
Create procedure [dbo].[GetInvCashPriceData] (
@CustName as varchar(50),
@DocDate as datetime )as
BEGIN
SELECT tblinvprice.strpartnumber as PartNumber, 
       tblinvprice.bitcashpricing as IsCashPriceing, 
       Isnull(tblinvprice.deccashprice ,0) as CashPrice
FROM   tblinvprice 
       INNER JOIN tblpricelistsbydate 
               ON tblinvprice.uidpricebasedid = 
                  tblpricelistsbydate.uidpricebasedid 
       INNER JOIN tblcustomers 
               ON tblpricelistsbydate.strpricelist = tblcustomers.strpricelist 
WHERE  tblcustomers.strcustname = @CustName 
       AND tblinvprice.bitcashpricing = 1 
       AND @DocDate >= tblpricelistsbydate.dtestartdate 
       AND @DocDate <= tblpricelistsbydate.dtefinishdate 
       AND tblpricelistsbydate.bitinactive = 0 
	   end
GO
/****** Object:  StoredProcedure [dbo].[GetListOfItems] **********/
CREATE PROCEDURE [dbo].[GetListOfItems] (
	@Location NVARCHAR(50)
	,@BinCode NVARCHAR(50)
	,@Number NVARCHAR(50)
	)
AS
BEGIN
	SELECT IEB.strPartNumber AS Number
		,inv.strCategory AS Category
		,inv.strSubCategory AS SubCategory
	FROM tblInvExtBin IEB
	INNER JOIN tblInvLocBin LB ON IEB.lngBinID = LB.lngID
	INNER JOIN tblInv inv ON IEB.strPartNumber = inv.strPartNumber
	WHERE IEB.strLocName = @Location
		AND LB.strBinCode = @BinCode
		AND inv.intType = 1
		AND IEB.decOnHand > 0
		AND IEB.strPartNumber <> @Number
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvEntriesContraForReq] **********/
CREATE PROCEDURE [dbo].[GetInvEntriesContraForReq]
(
	@ReqDocID nvarchar(100)
)
AS
BEGIN
	SELECT tblInvIssReqDocDT.strPartNumber AS PartNumber,
       tblInvIssReqDoc.strLocName AS Location,
       tblInvIssReqDocDT.decQty As StockQty,
       tblInvIssReqDocDT.intLineNo As [LineNo],
       tblInvIssReqDocDT.decAmount AS COGS
	FROM tblInvIssReqDoc
	INNER JOIN tblInvIssReqDocDT ON tblInvIssReqDoc.strInvIssReqDocID = tblInvIssReqDocDT.strInvIssReqDocID
	WHERE (tblInvIssReqDoc.strInvIssReqDocID = @ReqDocID)
	ORDER BY tblInvIssReqDocDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvTrackingDTBinDataConvertReq] **********/
CREATE PROCEDURE [dbo].[GetInvTrackingDTBinDataConvertReq]
@DocNumber AS NVARCHAR(50)
AS
BEGIN	
SELECT tblInvTrackingDT.strPartNumber AS PartNumber
	,tblInvTrackingDT.strLocName AS LocName
	,tblInvTrackingDTBin.decQty AS Qty
	,tblInvTrackingDT.intLineNo AS [LineNo]
	,tblInvTrackingDTBin.lngBinId AS BinId
FROM tblInvTrackingDTBin
INNER JOIN tblInvTrackingDT ON tblInvTrackingDTBin.lngInvTrackId = tblInvTrackingDT.lngInvTrackID
	AND tblInvTrackingDTBin.intLineNo = tblInvTrackingDT.intLineNo
	  
INNER JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
INNER JOIN tblinvissreqdoc 
               ON tblinvissreqdoc.lnginvtrackid = tblinvtracking.lnginvtrackid 
WHERE  tblinvissreqdoc.strinvissreqdocid = @DocNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvEntriesFromReqDT] **********/
CREATE PROCEDURE [dbo].[GetInvEntriesFromReqDT]
(
	@ExistingReqNumber AS nvarchar(100)
)
AS	
	BEGIN
		SELECT tblinvissreqdocdt.strpartnumber  AS PartNumber, 
       tblinvissreqdoc.strlocname  AS Location, 
       tblinvissreqdocdt.decqty AS StockQty, 
       tblinvissreqdocdt.decunitcost AS PriceEaExc, 
       tblinvissreqdocdt.decamount AS LineTotExc, 
       tblinv.inttype AS [Type]
FROM   tblinvissreqdoc 
       INNER JOIN tblinvissreqdocdt 
               ON tblinvissreqdoc.strinvissreqdocid = 
                  tblinvissreqdocdt.strinvissreqdocid 
       INNER JOIN tblinv 
               ON tblinv.strpartnumber = tblinvissreqdocdt.strpartnumber 
WHERE  ( tblinvissreqdoc.strinvissreqdocid = @ExistingReqNumber ) 
	END
GO
/****** Object:  StoredProcedure [dbo].[UpdateInternalIssueRequisition] **********/
Create Procedure UpdateInternalIssueRequisition
@ExistingReqNumber as varchar(max)
as
begin
UPDATE tblInvIssReqDoc SET bitCleared = 1 WHERE strInvIssReqDocID IN ( 
 ( 
                  SELECT value 
                  FROM   fnsplitstringastable(@ExistingReqNumber, '~')))
end
GO
/****** Object:  StoredProcedure [dbo].[GetInvIssReqDocData] **********/
CREATE PROCEDURE [dbo].[GetInvIssReqDocData] (@DocNum NVARCHAR(max))
AS
BEGIN
	SELECT TOP 1 tblInvIssReqDoc.strInvIssReqDocID AS InvIssReqDocID
		,tblInvIssReqDoc.intInvIssReqDocID AS InvIssReqDocIDInt
		,tblInvIssReqDoc.lngInvTrackID AS InvTrackID
		,tblInvIssReqDoc.lngJourID AS JourID
		,tblInvIssReqDoc.dteSystemDate AS SystemDate
		,tblInvIssReqDoc.dteJournalDate AS JournalDate
		,tblInvIssReqDoc.strUserName AS UserName
		,tblInvIssReqDoc.strLocName AS LocName
		,tblInvIssReqDoc.strComment AS Comment
		,tblInvIssReqDoc.intAccount AS Account
		,tblInvIssReqDoc.decTotal AS Total
		,tblInvIssReqDoc.intDept AS Dept
		,tblInvIssReqDoc.strEmpNumber AS EmpNumber
		,tblInvIssReqDoc.strIssueType AS IssueType
		,tblInvIssReqDoc.strReasonCode AS ReasonCode
		,tblInvIssReqDoc.bitCleared AS IsCleared
		,strCustNumber AS CustNumber
		,strCustDesc AS CustDesc
		,strStreet1 AS Street1
		,strStreet2 AS Street2
		,strSuburb AS Suburb
		,strCity AS City
		,strProvince AS Province
		,strPostal AS Postal
		,strCountry AS Country
		,strTenderType AS TenderType
	FROM tblInvIssReqDoc
	INNER JOIN tblEmployees ON tblInvIssReqDoc.strEmpNumber = tblEmployees.strEmpNumber
	INNER JOIN tblCustomers ON tblEmployees.strCustNumber = tblCustomers.strCustName
	WHERE strInvIssReqDocID IN (
			(
				SELECT *
				FROM fnSplitStringAsTable(@DocNum, ',')
				)
			)
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvIssReqDocDT] **********/
CREATE PROCEDURE [dbo].[GetInvIssReqDocDT] @DocNumber AS NVARCHAR(MAX)
AS
BEGIN
	SELECT tblInvIssReqDocDT.strInvIssReqDocID AS InvIssReqDocID
		,tblInvIssReqDocDT.intLineNo AS [LineNo]
		,tblInvIssReqDocDT.strPartNumber AS PartNumber
		,tblInv.strDesc AS PartDesc
		,tblInvIssReqDoc.strLocName AS LocName
		,decQty AS Qty
		,decUnitCost AS UnitCost
		,decAmount AS Amount
		,decReqQty AS ReqQty
		,tblInvIssReqDoc.strEmpNumber AS EmpNumber
		,ISNULL(tblInvIssReqDocDTPrj.strProjNumber, '') AS ProjNumber
		,tblInv.bitInvSerialType AS IsInvSerialType
		,tblInv.strDimProCode AS DimProCode
		,tblInv.strUnitOfMeasure AS UnitOfMeasure
		,tblInv.strStockUnit AS StockUnit
		,tblInv.intType AS [Type]
		,strExtendedDesc AS ExtendedDesc
		,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist
		,ISNULL(STUFF((
					SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(max))
					FROM tblInvLocBin
					WHERE tblInvLocBin.lngId IN (
							SELECT lngBinId
							FROM tblInvIssReqDocDTBin
							WHERE tblInvIssReqDocDTBin.strInvIssReqDocID = tblInvIssReqDocDT.strInvIssReqDocID
								AND tblInvIssReqDocDT.intLineNo = tblInvIssReqDocDTBin.intLineNo
							)
					FOR XML PATH('')
					), 1, 1, ''), '') AS BinCode
		,ISNULL(STUFF((
					SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(max))
					FROM tblInvLocBin
					WHERE tblInvLocBin.lngId IN (
							SELECT lngBinId
							FROM tblInvIssReqDocDTBin
							WHERE tblInvIssReqDocDTBin.strInvIssReqDocID = tblInvIssReqDocDT.strInvIssReqDocID
								AND tblInvIssReqDocDT.intLineNo = tblInvIssReqDocDTBin.intLineNo
							)
					FOR XML PATH('')
					), 1, 1, ''), '') AS BinIdString
	FROM tblInvIssReqDocDT
	INNER JOIN tblInvIssReqDoc ON tblInvIssReqDoc.strInvIssReqDocID = tblInvIssReqDocDT.strInvIssReqDocID
	INNER JOIN tblInv ON tblInvIssReqDocDT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblInvIssReqDocDTPrj ON tblInvIssReqDocDT.strInvIssReqDocID = tblInvIssReqDocDTPrj.strInvIssReqDocID
		AND tblInvIssReqDocDT.intLineNo = tblInvIssReqDocDTPrj.intLineNo
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblInvIssReqDocDT.strInvIssReqDocID IN (
			(
				SELECT *
				FROM fnSplitStringAsTable(@DocNumber, ',')
				)
			)
	ORDER BY tblInvIssReqDocDT.strInvIssReqDocID
	,tblInvIssReqDocDT.intLineNo
END
GO
/****** Object:  StoredProcedure [dbo].[GetInvIssReqDTSerialData] **********/
CREATE PROCEDURE [dbo].[GetInvIssReqDTSerialData] @DocNumber AS NVARCHAR(50)
	--@LineNumber AS INT  
AS
BEGIN
	SELECT tblInvIssReqDocDTSerial.strInvIssReqDocID AS InvIssReqDocID
		,tblInvIssReqDocDTSerial.intLineNo AS [LineNo]
		,tblInvIssReqDocDTSerial.strSerialNumber AS SerialNumber
		,tblInvIssReqDocDTSerial.decQty AS Qty
		,tblInvIssReqDocDTSerial.strUnit AS Unit
		,tblInvIssReqDocDTSerial.lngID AS ID
		,tblInvIssReqDocDTSerial.bitExpiryDate AS IsExpiryDate
		,tblInvIssReqDocDTSerial.dteExpiryDate AS ExpiryDate
		,tblInvIssReqDocDTSerial.intSerialLotType AS SerialLotType
		,tblInvIssReqDocDTSerial.lngBinID AS BinID
		,CASE 
			WHEN tblInvIssReqDocDTSerial.intSerialLotType = 0
				THEN ISNULL(CAST(tblInvSerialExt.intStatus AS CHAR(1)) + tblInvSerialExt.strDocID, '')
			ELSE ''
			END AS [Status]
		,CASE 
			WHEN tblInvIssReqDocDTSerial.intSerialLotType = 0
				THEN Convert(BIT, ISNULL(tblInvSerialExt.bitDimensionExist, 0))
			ELSE Convert(BIT, 0)
			END AS IsDimensionExist
		,CASE 
			WHEN tblInvIssReqDocDTSerial.intSerialLotType = 0
				THEN ISNULL(tblInvSerialExt.strDimension, '')
			ELSE ''
			END AS Dimension
		,ISNULL((
				SELECT strBinCode
				FROM tblInvLocBin
				WHERE lngID = tblInvIssReqDocDTSerial.lngBinId
				), '') AS BinCode
	FROM tblInvIssReqDocDT
	INNER JOIN tblInvIssReqDocDTSerial ON tblInvIssReqDocDT.strInvIssReqDocID = tblInvIssReqDocDTSerial.strInvIssReqDocID
		AND tblInvIssReqDocDT.intLineNo = tblInvIssReqDocDTSerial.intLineNo
	LEFT JOIN tblInvSerialExt ON tblInvIssReqDocDT.strPartNumber = tblInvSerialExt.strPartNumber
		AND tblInvIssReqDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
	WHERE tblInvIssReqDocDT.strInvIssReqDocID IN (
			SELECT *
			FROM fnSplitStringAsTable(@DocNumber, ',')
			)
	--WHERE tblOrderDocDADT.strOrdDADocID = @DocNumber
	-- AND tblOrderDocDADT.intLineNo = @LineNumber  
	ORDER BY lngID
END
GO
/****** Object:  StoredProcedure [dbo].[GetQtyFromInvIssReqDocDTBin] **********/
CREATE PROCEDURE [dbo].[GetQtyFromInvIssReqDocDTBin]
AS
BEGIN
	SELECT decQty AS Qty
		,strInvIssReqDocID AS InvIssReqDocID
		,intLineNo AS [LineNo]
		,lngBinID AS BinID	
	FROM tblInvIssReqDocDTBin
END
GO
/****** Object:  StoredProcedure [dbo].[InvIssReqDTBin_List] **********/
CREATE PROCEDURE [dbo].[InvIssReqDTBin_List] @InvIssReqDocID NVARCHAR(500)
AS
BEGIN
	SELECT DISTINCT strInvIssReqDocID  AS 'DocId'
		,lngID AS 'Id'
		,intLineNo	AS 'LineNo'
		,lngBinID AS 'BinId'
		,decQty	 AS 'Qty'
		,ISNULL((
				SELECT strBinCode
				FROM tblInvLocBin
				WHERE lngId = tblInvIssReqDocDTBin.lngBinId
				), '') AS 'BinCode'
	FROM tblInvIssReqDocDTBin
	WHERE strInvIssReqDocID IN (
			SELECT VALUE
			FROM dbo.fnSplitStringAsTable(@InvIssReqDocID, ',')
			)
END 
GO
/****** Object:  StoredProcedure [dbo].[GetInvEmployeeList] **********/
CREATE PROCEDURE [dbo].[GetInvEmployeeList]
AS
BEGIN
	SELECT DISTINCT strEmpNumber as EmployeeNumber, (SELECT strEmpName FROM tblEmployees WHERE strEmpNumber = tblEmpItemBudgetDT.strEmpNumber)AS EmployeeName FROM tblEmpItemBudgetDT ORDER BY strEmpNumber
END
GO
/****** Object:  StoredProcedure [dbo].[GetInventoryEmployee] **********/
CREATE PROCEDURE [dbo].[GetInventoryEmployee]
AS
BEGIN
	SELECT tblEmpItemBudgetDT.strPartNumber AS PartNumber
		,tblEmpItemBudgetDT.strEmpNumber AS CustVendName
	FROM tblEmpItemBudgetDT
	LEFT JOIN tblInv ON tblEmpItemBudgetDT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblEmployees ON tblEmpItemBudgetDT.strEmpNumber = tblEmployees.strEmpNumber
END
GO
/****** Object:  StoredProcedure [dbo].[InsertContraSerialLotTrackingForReq] **********/
CREATE PROCEDURE [dbo].[InsertContraSerialLotTrackingForReq] (
	@DocID AS NVARCHAR(MAX)
	,@Type AS TINYINT
	,@Status AS TINYINT
	,@UserName AS NVARCHAR(20)
	,@DocNumber AS NVARCHAR(100)
	)
AS
BEGIN
	--Exception Handling
	BEGIN TRY
		DECLARE @ERR_MSG AS NVARCHAR(4000)
			,@Err_Severity INT
			,@ERR_STA AS SMALLINT
		--Create Table Variable
		DECLARE @DetailsTable TABLE (
			RowNumber INT IDENTITY(0, 1)
			,PartNumber NVARCHAR(100)
			,SerialNumber NVARCHAR(200)
			,InvIssReqDocID NVARCHAR(100)
			,[LineNo] INT
			,Qty MONEY
			,Location NVARCHAR(20)
			,IsExpiryDate BIT
			,ExpiryDate SMALLDATETIME
			,BinID BIGINT
			,SerialLotType INT
			,IsDimensionExist BIT
			,Dimension NVARCHAR(MAX)
			)

		--Inserting Contra Serial / Lot Number Tracking (Out)
		INSERT INTO @DetailsTable
		SELECT tblInvIssReqDocDT.strPartNumber AS 'PartNumber'
			,tblInvIssReqDocDTSerial.strSerialNumber AS 'SerialNumber'
			,tblInvIssReqDocDTSerial.strInvIssReqDocID AS 'InvIssReqDocID'
			,tblInvIssReqDocDTSerial.intLineNo AS 'LineNo'
			,tblInvIssReqDocDTSerial.decQty * - 1 AS 'Qty'
			,tblInvIssReqDoc.strLocName AS 'Location'
			,tblInvIssReqDocDTSerial.bitExpiryDate AS 'IsExpiryDate'
			,tblInvIssReqDocDTSerial.dteExpiryDate AS 'ExpiryDate'
			,tblInvIssReqDocDTSerial.lngBinID AS 'BinID'
			,tblInvIssReqDocDTSerial.intSerialLotType AS 'SerialLotType'
			,CASE 
				WHEN tblInvIssReqDocDTSerial.intSerialLotType = 0
					THEN ISNULL(ISE.bitDimensionExist, 0)
				ELSE 0
				END AS 'IsDimensionExist'
			,CASE 
				WHEN tblInvIssReqDocDTSerial.intSerialLotType = 0
					THEN ISNULL(ISE.strDimension, '')
				ELSE 0
				END AS 'Dimension'
		FROM tblInvIssReqDocDTSerial
		INNER JOIN tblInvIssReqDocDT ON tblInvIssReqDocDTSerial.strInvIssReqDocID = tblInvIssReqDocDT.strInvIssReqDocID
			AND tblInvIssReqDocDTSerial.intLineNo = tblInvIssReqDocDT.intLineNo
		INNER JOIN tblInvIssReqDoc ON tblInvIssReqDocDT.strInvIssReqDocID = tblInvIssReqDoc.strInvIssReqDocID
		INNER JOIN tblSerialNumberTracking ON tblInvIssReqDocDT.intLineNo = tblSerialNumberTracking.intLineNo
			AND tblInvIssReqDocDTSerial.strSerialNumber = tblSerialNumberTracking.strSerialNumber
			AND tblSerialNumberTracking.lngID = (
				SELECT MAX(SNT.lngID)
				FROM tblSerialNumberTracking SNT
				WHERE (SNT.intLineNo = tblSerialNumberTracking.intLineNo)
					AND (SNT.strSerialNumber = tblSerialNumberTracking.strSerialNumber)
					AND (SNT.strDocID = tblInvIssReqDocDTSerial.strInvIssReqDocID)
					AND (SNT.intType = @Type)
				)
		LEFT JOIN tblInvSerialExt ISE ON tblInvIssReqDocDT.strPartNumber = ISE.strPartNumber
			AND tblInvIssReqDoc.strLocName = ISE.strLocName
			AND tblInvIssReqDocDTSerial.strSerialNumber = ISE.strSerialNumber
		WHERE tblInvIssReqDocDTSerial.strInvIssReqDocID  IN (
			SELECT VALUE
			FROM dbo.fnSplitStringAsTable(@DocID, ',')
			) 
			AND tblSerialNumberTracking.intType = @Type
			AND tblSerialNumberTracking.intStatus <> @Status

		-- Loop Through Table variable 
		SET NOCOUNT ON;

		DECLARE @NumberofIntType INT
			,@RowCount INT

		-- get the number of items
		SET @NumberofIntType = (
				SELECT count(*)
				FROM @DetailsTable
				)
		SET @RowCount = 0 -- set the first row to 0

		-- loop through the records 
		-- loop until the rowcount = number of records in your table
		WHILE @RowCount < @NumberofIntType
		BEGIN
			-- do your process here
			-- Declare All Columns
			DECLARE @PartNumber NVARCHAR(100)
			DECLARE @SerialNumber NVARCHAR(200)
			DECLARE @InvIssReqDocID NVARCHAR(100)
			DECLARE @LineNo INT
			DECLARE @Qty MONEY
			DECLARE @Location NVARCHAR(20)
			DECLARE @IsExpiryDate BIT
			DECLARE @ExpiryDate SMALLDATETIME
			DECLARE @BinID BIGINT
			DECLARE @SerialLotType INT
			DECLARE @IsDimensionExist BIT
			DECLARE @Dimension NVARCHAR(MAX)

			-- Set All Columns
			SELECT @PartNumber = PartNumber
				,@SerialNumber = SerialNumber
				,@InvIssReqDocID = InvIssReqDocID
				,@LineNo = [LineNo]
				,@Qty = Qty
				,@Location = Location
				,@IsExpiryDate = IsExpiryDate
				,@ExpiryDate = ExpiryDate
				,@BinID = BinID
				,@SerialLotType = SerialLotType
				,@IsDimensionExist = IsDimensionExist
				,@Dimension = Dimension
			FROM @DetailsTable
			WHERE RowNumber = @RowCount

			-- Conditional Logic
			IF @Qty < 0
			BEGIN
				SET @Status = 2 --PL_SerialNumberStatus.StatusOut
			END
			ELSE
			BEGIN
				SET @Status = 1 --PL_SerialNumberStatus.StatusIn
			END

			IF @SerialLotType = 0 --PL_SerialLotType.Serial Number
			BEGIN
				DECLARE @InvSerialExtStatus TINYINT
				DECLARE @InvSerialExtLocName NVARCHAR(20)

				SELECT @InvSerialExtStatus = intStatus
					,@InvSerialExtLocName = strLocName
				FROM tblInvSerialExt
				WHERE strPartNumber = @PartNumber
					AND strSerialNumber = @SerialNumber

				IF @InvSerialExtStatus = @Status
					OR @InvSerialExtLocName <> @Location
				BEGIN
					--Exeception Raised
					--SET @ERR_MSG = 'Cant Adjust Serial Items that Contain Subsequent Movement' --+ @SerialNumber							

					--RAISERROR (
					--		@ERR_MSG
					--		,@Err_Severity
					--		,@ERR_STA
					--		);

					--RETURN 1

					SET @RowCount = @RowCount + 1
					CONTINUE
				END
			END

			DECLARE @SerialLotQty MONEY = 0

			IF @Qty < 0
			BEGIN
				IF @SerialLotType = 1 --PL_SerialLotType.LotControl
				BEGIN
					SET @SerialLotQty = @Qty * (- 1)
				END
				ELSE
				BEGIN
					SET @SerialLotQty = 0
				END
			END
			ELSE
			BEGIN
				SET @SerialLotQty = @Qty
			END

			IF @IsExpiryDate = 0 --False 
			BEGIN
				SET @ExpiryDate = NULL
			END

			INSERT INTO tblSerialNumberTracking (
				strPartNumber
				,strSerialNumber
				,strUserName
				,dteUpdatedDate
				,intType
				,strDocID
				,intLineNo
				,decQty
				,strLocation
				,intStatus
				,bitExpiryDate
				,dteExpiryDate
				,lngBinID
				)
			VALUES (
				@PartNumber
				,@SerialNumber
				,@UserName
				,GETDATE()
				,@Type
				,@DocID
				,@LineNo
				,@Qty
				,@Location
				,@Status
				,@IsExpiryDate
				,@ExpiryDate
				,@BinID
				)

			IF @SerialLotType = 1 --PL_SerialLotType.LotControl
			BEGIN
				DECLARE @LotNumberCount BIGINT

				SELECT @LotNumberCount = COUNT(strLotNumber)
				FROM tblInvLotExt
				WHERE strPartNumber = @PartNumber
					AND strLotNumber = @SerialNumber
					AND strLocName = @Location
					AND lngBinId = @BinID

				IF @IsExpiryDate = 0 -- false
				BEGIN
					SET @ExpiryDate = NULL
				END

				IF @LotNumberCount > 0
				BEGIN
					UPDATE tblInvLotExt
					SET decQty = decQty + @SerialLotQty
						,dteUpdatedDate = GETDATE()
					WHERE strPartNumber = @PartNumber
						AND strLotNumber = @SerialNumber
						AND strLocName = @Location
						AND lngBinId = @BinId
				END
				ELSE
				BEGIN
					INSERT INTO tblInvLotExt
					VALUES (
						@PartNumber
						,@SerialNumber
						,@Location
						,@SerialLotQty
						,@IsExpiryDate
						,@ExpiryDate
						,GETDATE()
						,@BinID
						,GETDATE()
						)
				END
			END
			ELSE
			BEGIN
				DECLARE @SerialNumberCount BIGINT

				SELECT @SerialNumberCount = COUNT(strSerialNumber)
				FROM tblInvSerialExt
				WHERE strPartNumber = @PartNumber
					AND strSerialNumber = @SerialNumber
					AND lngBinId = @BinId

				IF @IsDimensionExist = 0 -- false
				BEGIN
					SET @Dimension = ''
				END

				IF @SerialNumberCount > 0
				BEGIN
					UPDATE tblInvSerialExt
					SET strLocName = @Location
						,decQty = @SerialLotQty
						,intStatus = @Status
						,strDocID = @InvIssReqDocID
						,dteUpdatedDate = GETDATE()
					WHERE strPartNumber = @PartNumber
						AND strSerialNumber = @SerialNumber
						AND lngBinId = @BinId
				END
				ELSE
				BEGIN
					INSERT INTO tblInvSerialExt
					VALUES (
						@PartNumber
						,@SerialNumber
						,@Location
						,@SerialLotQty
						,@Status
						,@DocNumber
						,GETDATE()
						,@IsDimensionExist
						,@Dimension
						,@BinId
						,GETDATE()
						)
				END
			END

			SET @RowCount = @RowCount + 1
		END

		SELECT 'Success'
	END TRY

	BEGIN CATCH
		IF LEN(@ERR_MSG) > 0
			SELECT @ERR_MSG
		ELSE
		BEGIN
			SELECT @ERR_MSG = ERROR_MESSAGE()
				,@Err_Severity = ERROR_SEVERITY()
				,@ERR_STA = ERROR_STATE()

			RAISERROR (
					@ERR_MSG
					,@Err_Severity
					,@ERR_STA
					);
		END
	END CATCH
END
GO

/****** Object:  StoredProcedure [dbo].[GetPOSRePrintLastInvoiceDetails]    Script Date: 2020-08-11 ******/
CREATE PROCEDURE [dbo].[GetPOSRePrintLastInvoiceDetails]
@DocumentNumber as varchar(50)
AS
BEGIN
	SELECT TOP 1 InvoiceDoc.strInvDocID AS DocNumber,
	InvoiceDoc.strCustName AS CustomerName,
	InvoiceDoc.decTotal AS Total,
	(SELECT ISNULL(SUM(decLineDiscAmt),0)  from tblInvoiceDocDT where strInvDocID = InvoiceDoc.strInvDocID and blnIsCashPrice =1) as SavingOnCashOnTender
	FROM tblInvoiceDoc as InvoiceDoc
	WHERE InvoiceDoc.strInvDocID = @DocumentNumber 
	Order by dteSystemDateTime desc
END
GO

/****** Object:  StoredProcedure [dbo].[IsDrawerSessionIdAvailable]    Script Date: 2020-08-17 ******/
CREATE PROCEDURE [dbo].[IsDrawerSessionIdAvailable] 
@SessionID uniqueidentifier
AS
BEGIN
   SELECT CASE WHEN EXISTS (
    SELECT *
 FROM tblPOSDrs WHERE uidSessionID = @SessionID
)
THEN CAST(1 AS BIT)
ELSE CAST(0 AS BIT) 
END
END
GO

/****** Object:  StoredProcedure [dbo].[GetPOSUnsyncDocuments]    Script Date: 2020-08-17 ******/
CREATE PROCEDURE [dbo].[GetPOSUnsyncDocuments]

AS
BEGIN
  SELECT [InvoiceData] as DocumentData, [SyncDate], 'Invoice' as DocType, SyncDocID, DisplayErrorMessage,SyncErrorType,SyncErrorCode,RequiredAdminAction FROM tblOfflineInvoiceDT
WHERE IsSync = 0 And SyncError Is NOt NUll
Union
SELECT [InvoiceData] as DocumentData, [SyncDate], 
CASE WHEN DocumentType = 1 Then 'SalesOrder' WHEN  DocumentType = 2 Then 'Quote' WHEN  DocumentType = 3 Then 'Layby' END as DocType, SyncDocID, DisplayErrorMessage,SyncErrorType,SyncErrorCode,RequiredAdminAction  FROM tblOfflineOrderAndQuoteDT
WHERE IsSync = 0 And SyncError Is NOt NUll
Union
SELECT [ReceiptsData] as DocumentData, [SyncDate], 'Receipt' as DocType, SyncDocID, DisplayErrorMessage,SyncErrorType,SyncErrorCode,RequiredAdminAction  FROM tblOfflineReceiptsDT
WHERE IsSync = 0 And ErrorMessage Is NOt NUll
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateOfflineReceiptsDTSyncError]    Script Date: 2020-08-17 ******/
CREATE PROCEDURE [dbo].[UpdateOfflineReceiptsDTSyncError]
   @Id int,
   @SyncError nvarchar(max) = null,
   @SyncErrorCode int =null,
   @SyncDocID nvarchar(100)=null,
   @SyncErrorType int =null,
   @RequiredAdminAction bit = null,
   @DisplayErrorMessage nvarchar(max) = null
AS
BEGIN
    UPDATE tblOfflineReceiptsDT SET  
    IsSync = 0  
    ,ErrorMessage = @SyncError
	,SyncErrorCode = @SyncErrorCode
	,SyncDocID = @SyncDocID
	,SyncErrorType = @SyncErrorType
	,RequiredAdminAction = @RequiredAdminAction
	,DisplayErrorMessage=@DisplayErrorMessage
	 where Id = @Id 
END
GO

/****** Object:  StoredProcedure [dbo].[InsertPOSDrs]    Script Date: 2020-08-17 ******/
CREATE PROCEDURE [dbo].[InsertPOSDrs]
   @DrawerName nvarchar(16),
   @SessionId nvarchar(MAX),
   @Status int,
   @AssignedUser nvarchar(50),
   @SessionDate datetime,
   @CreateUser nvarchar(50),
   @OpenVal decimal,
   @CashBal decimal,
   @CurrentVal decimal,
   @OfflineTerminalId int,
   @ProfileMenuId nvarchar(4000),
   @CashTender nvarchar(40)
AS
BEGIN
  INSERT INTO tblPOSDrs([strDrawerName], [uidSessionID], [intStatus], [strAssignedUser], [dteSessionDate], [strCreateUser], [dteCreated], [dteCashedOut], [strClosedUser], [dteClosed], [strTerminal], [decOpenVal], [decCashBal], [decCkBal], [decCCBal], [decGiftCouBal], [decAccountBal], [decTotalDrops], [decTotalSales], [decCurrentVal], [decCloseVal], [decOvSht], [decActCloseVal], [strOvShtReason], [intOfflineTerminalId], [intProfileMenuId], [strCashTender])
   VALUES (@DrawerName,CONVERT(uniqueidentifier, @SessionId),@Status,@AssignedUser,@SessionDate,@CreateUser,GETDATE(),GETDATE(),NULL,GETDATE(),'Not Used',@OpenVal,@CashBal,0,0,0,0,0,0,@CurrentVal,0,0,0,'''',@OfflineTerminalId,@ProfileMenuId,@CashTender)
END
GO

/****** Object:  StoredProcedure [dbo].[GetAllDocsForApprovalMultiLevel]    Script Date: 2020-09-14 ******/
CREATE PROCEDURE [dbo].[GetAllDocsForApprovalMultiLevel] (
	@UserName NVARCHAR(50)
	,@ApprovePurchaseOrders BIT = 1
	,@ApproveInvRequisitions BIT = 0
	,@ApproveCreditRequest BIT = 0
	,@GeneralLedgerJournalApprovalsActivated BIT = 0
	)
AS
BEGIN
	IF @UserName = 'all'
	BEGIN
		SELECT DISTINCT 'Purchase Requisition' AS [Type]
			,ODP.[strOrdPDocID] AS DocumentID
			,ODP.[strOrdPDocID] AS OrdPDocID
			,ODP.[dteSystemDate] AS [Date]
			,ODP.[dteJournalDate] AS JournalDate
			,ODP.[strUserName] AS UserName
			,ODP.[strVendName] AS Number
			,ODP.[strVendName] AS VendName
			,ODP.[strBoughtFrom] AS NAME
			,ODP.[strBoughtFrom] AS BoughtFrom
			,ODP.[strAddInfo] AS AddInfo
			,Cast(ODP.strTotFormatted AS VARCHAR(50)) AS DocumentTotal
			,Cast(ODP.strTotFormatted AS VARCHAR(50)) AS decTotal
			,ODP.[strReference] AS Reference
			,tblPQApprovalsGroup.strGroupName as GroupName
			,tv.[strVendDesc] AS VendDesc
		FROM tblOrderDocP ODP
		LEFT JOIN tblVendors tv ON ODP.strVendName = tv.strVendName
		Left Join tblOrdersDocP_POApprovals on ODP.strOrdPDocID = tblOrdersDocP_POApprovals.strOrdPDocID 
		Inner join tblPQApprovalsGroup on tblPQApprovalsGroup.ID=  tblOrdersDocP_POApprovals.intGroupId 
		WHERE bitcleared = 0
			AND intdoctype = 2
			AND @ApprovePurchaseOrders = 1
		
		UNION
		
		SELECT DISTINCT 'Inventory Requisition' AS [Type]
			,odp.strInvIntReqDocID AS DocumentID
			,odp.strInvIntReqDocID AS OrdPDocID
			,dteSystemDate AS [Date]
			,dteJournalDate AS JournalDate
			,odp.strUserName AS UserName
			,Isnull(odp.strEmpNumber, '') AS Number
			,Isnull(odp.strEmpNumber, '') AS VendName
			,Isnull(strEmpName, '') AS NAME
			,Isnull(strEmpName, '') AS BoughtFrom
			,'' AS AddInfo
			,Cast(decTotal AS VARCHAR(50)) AS DocumentTotal
			,Cast(decTotal AS VARCHAR(50)) AS decTotal
			,'' AS Reference
			,poa.strSelectedApproverUserName as GroupName
			,'' AS VendDesc
		FROM tblInvIntReqDoc odp
		Left JOIN tblInvIntReqDoc_IRApprovals poa ON odp.strInvIntReqDocID = poa.strInvIntReqDocID
		LEFT JOIN tblEmployees ON tblEmployees.strEmpNumber = odp.strEmpNumber
		inner join tblApprovalsDocLimit doc on doc.strUserName = poa.strSelectedApproverUserName
		WHERE bitCleared = 0
			AND @ApproveInvRequisitions = 1
			AND doc.intApproverType = 1
		
		UNION
		
		SELECT DISTINCT 'Credit Request' AS [Type]
			,ODP.[strOrdDocID] AS DocumentID
			,ODP.[strOrdDocID] AS strdocIDs
			,ODP.dteSystemDate as [Date]
			,ODP.dteJournalDate AS JournalDate
			,ODP.strUserName AS UserName
			,ODP.strCustName AS Number
			,ODP.strCustName AS VendName
			,ODP.strSoldTo AS NAME
			,ODP.strSoldTo AS BoughtFrom
			,ODP.[strAddInfo] AS AddInfo
			,CAST(ODP.strTotFormatted AS VARCHAR(50)) AS DocumentTotal
			,CAST(ODP.strTotFormatted AS VARCHAR(50)) AS decTotal
			,ODP.strReference AS Reference
			,g.strGroupName as GroupName
			,'' AS VendDesc
		FROM tblOrderDoc ODP
		Left JOIN tblOrdersDoc_CNApprovals poa ON odp.strOrdDocID = poa.strOrdDocID
		INNER JOIN tblPQApprovalsGroup g ON g.ID= poa.intGroupId
		INNER JOIN tblApprovalsDocLimit dl ON g.ID = dl.intApproverGroupId
		INNER JOIN tblCNApprovalsUserTracking ut ON poa.strOrdDocID = ut.strOrdDocID
			AND g.ID = ut.intGroupId
			AND dl.strUserName = ut.strUserName
		WHERE odp.bitCleared = 0
			AND ODP.intDocType = 1
			AND ODP.strOrdDocID like 'CR-%'  
			AND @ApproveCreditRequest = 1
			--AND ut.strUserName = @UserName			
			--AND ut.intApprovalStatus = 0
			--AND dl.priorityLevel = (
			--	SELECT MIN(priorityLevel)
			--	FROM tblApprovalsDocLimit l
			--	INNER JOIN tblCNApprovalsUserTracking t ON l.strUserName = t.strUserName
			--		AND l.intApproverGroupId = t.intGroupId
			--		AND poa.strOrdDocID = t.strOrdDocID
			--	WHERE t.intApprovalStatus = 0
			--	)
		
		UNION
		
		SELECT DISTINCT 'Journal Entry' AS [Type]
			,odp.strJENo AS DocumentID
			,odp.strJENo AS stringDocID
			,ODP.dteDateCreated AS [Date]
			,ODP.dteJournalDate AS JournalDate
			,ODP.strUserName AS UserName
			,'' AS Number
			,'' AS VendName
			,ODP.strComment AS Name
			,ODP.strComment AS BoughtFrom
			,CAST((

					SELECT SUM(z.temp ) from(select SUM(DT.decCredits) as temp from tblJournalEntryDocApprovalPendingDT DT where strJENo = odp.strJENo
					UNION 
                    SELECT SUM(DT.decDebits) as temp from tblJournalEntryDocApprovalPendingDT DT
					WHERE DT.strJENo = odp.strJENo) z)  AS VARCHAR(50)) AS decTotal
			,CAST((	
					SELECT SUM(z.temp ) from(select SUM(DT.decCredits) as temp from tblJournalEntryDocApprovalPendingDT DT where strJENo = odp.strJENo
					UNION 
					SELECT SUM(DT.decDebits) as temp from tblJournalEntryDocApprovalPendingDT DT where strJENo = odp.strJENo
					) z)  AS VARCHAR(50)) AS DocumentTotal
			,'' AS Reference
			,'' AS AddInfo
			,g.strGroupName as GroupName
			,ODP.strComment AS VendDesc
		FROM tblJournalEntryDocApprovalPending ODP
		Left JOIN tblJournalEntryDoc_GLApprovals poa ON odp.strJENo = poa.strJEno
		INNER JOIN tblPQApprovalsGroup g ON poa.intGroupId = g.ID
		INNER JOIN tblApprovalsDocLimit dl ON g.ID = dl.intApproverGroupId
		INNER JOIN tblGLApprovalsUserTracking ut ON poa.strJEno = ut.strOrdGLDocID
			AND g.ID = ut.intGroupId
			AND dl.strUserName = ut.strUserName
		WHERE odp.bitPosted = 0
			AND @GeneralLedgerJournalApprovalsActivated = 1
			--AND ut.strUserName = @UserName			
			--AND ut.intApprovalStatus = 0
			--AND dl.priorityLevel = (
			--	SELECT MIN(priorityLevel)
			--	FROM tblApprovalsDocLimit l
			--	INNER JOIN tblGLApprovalsUserTracking t ON l.strUserName = t.strUserName
			--		AND l.intApproverGroupId = t.intGroupId
			--		AND poa.strJEno = t.strOrdGLDocID
			--	WHERE t.intApprovalStatus = 0
			--	)
	END
	ELSE
	BEGIN
		SELECT DISTINCT 'Purchase Requisition' AS [Type]
			,ODP.[strOrdPDocID] AS DocumentID
			,ODP.[strOrdPDocID] AS OrdPDocID
			,ODP.dteSystemDate AS [Date]
			,ODP.dteJournalDate AS JournalDate
			,ODP.strUserName AS UserName
			,ODP.strVendName AS Number
			,ODP.strVendName AS VendName
			,ODP.strBoughtFrom AS NAME
			,ODP.strBoughtFrom AS BoughtFrom
			,Cast(ODP.strTotFormatted AS VARCHAR(50)) AS DocumentTotal
			,Cast(ODP.strTotFormatted AS VARCHAR(50)) AS decTotal
			,ODP.strReference AS Reference
			,ODP.[strAddInfo] AS AddInfo
			,g.strGroupName AS GroupName
			,tv.[strVendDesc] AS VendDesc
		FROM tblOrderDocP ODP
		INNER JOIN tblOrdersDocP_POApprovals poa ON odp.strOrdPDocID = poa.strOrdPDocID
		INNER JOIN tblPQApprovalsGroup g ON poa.intGroupId = g.id
		INNER JOIN tblApprovalsDocLimit dl ON g.id = dl.intApproverGroupId
		INNER JOIN tblPQApprovalsUserTracking ut ON poa.strOrdPDocID = ut.strOrdPDocID
			AND g.id = ut.intGroupId
			AND dl.strUserName = ut.strUserName
		LEFT JOIN tblVendors tv ON ODP.strVendName = TV.strVendName
		WHERE odp.bitCleared = 0
			AND ODP.intDocType = 2
			AND ut.strUserName = @UserName
			AND @ApprovePurchaseOrders = 1
			AND ut.intApprovalStatus = 0
			AND (
					(
					g.intNotificationOrder = 2
					AND dl.priorityLevel = (
						SELECT MIN(priorityLevel)
						FROM tblApprovalsDocLimit(NOLOCK) l
						INNER JOIN tblPQApprovalsUserTracking(NOLOCK) t ON l.strUserName = t.strUserName
							AND l.intApproverGroupId = t.intGroupId
							AND poa.strOrdPDocID = t.strOrdPDocID
						WHERE t.intApprovalStatus = 0
						)
					)
				OR g.intNotificationOrder = 1
				)
		
		UNION
		
		SELECT DISTINCT 'Inventory Requisition' AS [Type]
			,ODP.strInvIntReqDocID AS DocumentID
			,ODP.strInvIntReqDocID AS OrdPDocID
			,ODP.dteSystemDate AS [Date]
			,ODP.dteSystemDate AS JournalDate
			,ODP.strUserName AS UserName
			,Isnull(ODP.strEmpNumber, '') AS Number
			,Isnull(ODP.strEmpNumber, '') AS VendName
			,Isnull(tblEmployees.strEmpName, '') AS NAME
			,Isnull(tblEmployees.strEmpName, '') AS BoughtFrom
			,Cast(ODP.decTotal AS VARCHAR(50)) AS DocumentTotal
			,Cast(ODP.decTotal AS VARCHAR(50)) AS decTotal
			,'' AS Reference			
			,'' AS AddInfo
			,poa.strSelectedApproverUserName as GroupName
			,'' AS VendDesc
		FROM tblInvIntReqDoc ODP
		INNER JOIN tblInvIntReqDoc_IRApprovals poa ON odp.strInvIntReqDocID = poa.strInvIntReqDocID
		LEFT OUTER JOIN tblEmployees ON tblEmployees.strEmpNumber = ODP.strEmpNumber
		WHERE ODP.bitCleared = 0
			AND poa.strSelectedApproverUserName = @UserName
			AND @ApproveInvRequisitions = 1
		
		UNION
		
		SELECT DISTINCT 'Credit Request' AS [Type]
			,ODP.strOrdDocID AS DocumentID
			,ODP.strOrdDocID AS strdocIDs			
			,ODP.dteSystemDate as [Date]
			,ODP.dteJournalDate AS JournalDate
			,ODP.strUserName AS UserName
			,odp.strCustName AS Number
			,odp.strCustName AS VendName
			,ODP.strSoldTo AS NAME
			,ODP.strSoldTo AS BoughtFrom
			,CAST(ODP.strTotFormatted AS VARCHAR(50)) AS DocumentTotal
			,CAST(ODP.strTotFormatted AS VARCHAR(50)) AS decTotal
			,ODP.strReference AS Reference
			,ODP.[strAddInfo] AS AddInfo
			,g.strGroupName as GroupName
			,'' AS VendDesc
		FROM tblOrderDoc ODP
		INNER JOIN tblOrdersDoc_CNApprovals poa ON odp.strOrdDocID = poa.strOrdDocID
		INNER JOIN tblPQApprovalsGroup g ON poa.intGroupId = g.ID
		INNER JOIN tblApprovalsDocLimit dl ON g.ID = dl.intApproverGroupId
		INNER JOIN tblCNApprovalsUserTracking ut ON poa.strOrdDocID = ut.strOrdDocID
			AND g.ID = ut.intGroupId
			AND dl.strUserName = ut.strUserName
		WHERE odp.bitCleared = 0
			AND ODP.intDocType = 1
			AND ut.strUserName = @UserName
			AND @ApproveCreditRequest = 1
			AND ut.intApprovalStatus = 0
			AND dl.priorityLevel = (
				SELECT MIN(priorityLevel)
				FROM tblApprovalsDocLimit l
				INNER JOIN tblCNApprovalsUserTracking t ON l.strUserName = t.strUserName
					AND l.intApproverGroupId = t.intGroupId
					AND poa.strOrdDocID = t.strOrdDocID
				WHERE t.intApprovalStatus = 0
				)
		
		UNION
		
SELECT DISTINCT 'Journal Entry' AS [Type]
			,odp.strJENo AS DocumentID
			,odp.strJENo AS stringDocID
			,ODP.dteDateCreated AS [Date]
			,ODP.dteJournalDate AS JournalDate
			,ODP.strUserName AS UserName
			,'' AS Number
			,'' AS VendName
			,ODP.strComment AS Name
			,ODP.strComment AS BoughtFrom
			,CAST((
					SELECT SUM(z.temp ) from(select SUM(DT.decCredits) as temp from tblJournalEntryDocApprovalPendingDT DT where strJENo = odp.strJENo
					UNION 
                    SELECT SUM(DT.decDebits) as temp from tblJournalEntryDocApprovalPendingDT DT
					WHERE DT.strJENo = odp.strJENo ) z)  AS VARCHAR(50)) AS decTotal
			,CAST((	
					SELECT SUM(z.temp ) from(select SUM(DT.decCredits) as temp from tblJournalEntryDocApprovalPendingDT DT where strJENo = odp.strJENo
					UNION 
					SELECT SUM(DT.decDebits) as temp from tblJournalEntryDocApprovalPendingDT DT where strJENo = odp.strJENo
					) z)  AS VARCHAR(50)) AS DocumentTotal
			--,ODP.strComment 
			,'' AS Reference
			,'' AS AddInfo
			,g.strGroupName as GroupName
			,ODP.strComment AS VendDesc
		FROM tblJournalEntryDocApprovalPending ODP
		INNER JOIN tblJournalEntryDoc_GLApprovals poa ON odp.strJENo = poa.strJEno
		INNER JOIN tblPQApprovalsGroup g ON poa.intGroupId = g.ID
		INNER JOIN tblApprovalsDocLimit dl ON g.ID = dl.intApproverGroupId
		INNER JOIN tblGLApprovalsUserTracking ut ON poa.strJEno = ut.strOrdGLDocID
			AND g.ID = ut.intGroupId
			AND dl.strUserName = ut.strUserName
		WHERE odp.bitPosted = 0
			AND ut.strUserName = @UserName
			AND @GeneralLedgerJournalApprovalsActivated = 1
			AND ut.intApprovalStatus = 0
			AND (
			intNotificationOrder  = 1
			OR (
			(intNotificationOrder = 2)
			AND (
				dl.priorityLevel = (
					SELECT MIN(priorityLevel)
					FROM tblApprovalsDocLimit(NOLOCK) l
					INNER JOIN tblGLApprovalsUserTracking(NOLOCK) t ON l.strUserName = t.strUserName
						AND l.intApproverGroupId = t.intGroupId
						AND poa.strJEno = t.strOrdGLDocID
					WHERE t.intApprovalStatus = 0
					)
				)
			)
		)
	END
END
GO

/****** Object:  StoredProcedure [dbo].[Getapproverlistbydocnumber]    Script Date: 2020-09-14 ******/
CREATE PROCEDURE [dbo].[Getapproverlistbydocnumber] @strOrdPDocID VARCHAR(20) 
AS 
  BEGIN 
      SET nocount ON; 

      SELECT tblapprovalsdoclimit.strusername 
      FROM   tblapprovalsdoclimit 
             INNER JOIN tblordersdocp_poapprovals 
                     ON tblapprovalsdoclimit.intapprovergroupid = 
                        tblordersdocp_poapprovals.intgroupid 
      WHERE  tblordersdocp_poapprovals.strordpdocid = @strOrdPDocID 
  END 
GO

/****** Object:  StoredProcedure [dbo].[UpdateApproverStatus]    Script Date: 2020-09-14 ******/
CREATE PROCEDURE [dbo].[UpdateApproverStatus]
	@SqlDocNumber Varchar(20),	
	@SqlGroupId int,
	@SqlUserName varchar(50),
	@SqlStatus int
AS
BEGIN
	SET NOCOUNT ON;
	
	UPDATE tblPQApprovalsUserTracking set intApprovalStatus=@SqlStatus, rowUpdated=GETDATE() 
	where strOrdPDocID=@SqlDocNumber and intApprovalStatus=0 and intGroupId=@SqlGroupId and strUserName=@SqlUserName	
END
GO

/****** Object:  StoredProcedure [dbo].[Getapprovalsdoclimitdetailsbydocnumber]    Script Date: 2020-09-14 ******/
CREATE PROCEDURE [dbo].[Getapprovalsdoclimitdetailsbydocnumber] @strOrdPDocID 
VARCHAR(20) 
AS 
  BEGIN 
      SET nocount ON; 
	  --
      DECLARE @CurrentUserPriority INT 
      DECLARE @GroupId INT 
      DECLARE @LastUserPriority INT 
      DECLARE @DocLimitIncl DECIMAL 

      SELECT @CurrentUserPriority = Min(tblapprovalsdoclimit.prioritylevel), 
             @GroupId = tblpqapprovalsusertracking.intgroupid, 
             @DocLimitIncl = tblapprovalsdoclimit.doclimitincl 
      FROM   tblpqapprovalsusertracking 
             INNER JOIN tblapprovalsdoclimit 
                     ON tblpqapprovalsusertracking.intgroupid = 
                        tblapprovalsdoclimit.intapprovergroupid 
                        AND tblapprovalsdoclimit.strusername = 
                            tblpqapprovalsusertracking.strusername 
      WHERE  strordpdocid = @strOrdPDocID 
             AND intapprovalstatus = 0 
      GROUP  BY tblpqapprovalsusertracking.intgroupid, 
                tblapprovalsdoclimit.doclimitincl 

      SELECT @LastUserPriority = Max(prioritylevel) 
      FROM   tblapprovalsdoclimit 
             INNER JOIN tblordersdocp_poapprovals 
                     ON tblapprovalsdoclimit.intapprovergroupid = 
                        tblordersdocp_poapprovals.intgroupid 
             INNER JOIN tblpqapprovalsusertracking 
                     ON tblapprovalsdoclimit.strusername = 
                        tblpqapprovalsusertracking.strusername 
      WHERE  tblordersdocp_poapprovals.strordpdocid = @strOrdPDocID 
             AND tblpqapprovalsusertracking.intapprovalstatus = 0 
             AND tblpqapprovalsusertracking.strordpdocid = @strOrdPDocID 

      SELECT @CurrentUserPriority AS 'CurrentUserPriority', 
             @GroupId             AS 'GroupId', 
             @LastUserPriority    AS 'LastUserPriority', 
             @DocLimitIncl        AS 'DocLimitIncl' 
  END 
GO

/****** Object:  StoredProcedure [dbo].[Getpurchaserequisitionnotificationtype]    Script Date: 2020-09-14 ******/
CREATE PROCEDURE [dbo].[Getpurchaserequisitionnotificationtype] @intGroupID 
VARCHAR(20) 
AS 
  BEGIN 
      SET nocount ON; 

      SELECT intnotificationorder 
      FROM   tblpqapprovalsgroup 
      WHERE  id = @intGroupID 
  END 
GO

/****** Object:  StoredProcedure [dbo].[Getpreferrednotificationmode]    Script Date: 2020-09-14 ******/
CREATE PROCEDURE [dbo].[Getpreferrednotificationmode] @intGroupID   INT, 
                                                      @strOrdPDocID VARCHAR(20) 
AS 
  BEGIN 
      SET nocount ON; 

      SELECT preferrednotification
      FROM   tblapprovalsdoclimit 
      WHERE  prioritylevel = (SELECT Min(tblapprovalsdoclimit.prioritylevel) 
                              FROM   tblapprovalsdoclimit 
                                     INNER JOIN tblpqapprovalsusertracking 
                                             ON 
                                     tblapprovalsdoclimit.intapprovergroupid = 
                                     tblpqapprovalsusertracking.intgroupid 
                                     AND tblapprovalsdoclimit.strusername = 
                                         tblpqapprovalsusertracking.strusername 
                                     INNER JOIN tblorderdocp 
                                             ON 
      tblpqapprovalsusertracking.strordpdocid = 
      tblorderdocp.strordpdocid 
                              WHERE 
             tblpqapprovalsusertracking.strordpdocid = @strOrdPDocID 
             AND 
                    tblapprovalsdoclimit.intapprovergroupid = @intGroupID 
                                     AND 
             tblpqapprovalsusertracking.intapprovalstatus = 0 
                                     AND tblorderdocp.bitcleared = 0 
                                     AND tblorderdocp.intdoctype = 2) 
             AND intapprovergroupid = @intGroupID 
             AND intapprovertype = 0 
  END 
GO

/****** Object:  StoredProcedure [dbo].[Getnotificationmessages]    Script Date: 2020-09-14 ******/
CREATE PROCEDURE [dbo].[Getnotificationmessages] @intApproverType INT, 
                                                @IsEmail         BIT 
AS 
  BEGIN 
      SET nocount ON; 

      IF @IsEmail = 1 
        BEGIN 
            SELECT notificationemail 
            FROM   tblapprovalsnotifications 
            WHERE  intapprovertype = @intApproverType 
        END 
      ELSE 
        BEGIN 
            SELECT notificationsms 
            FROM   tblapprovalsnotifications 
            WHERE  intapprovertype = @intApproverType 
        END 
  END 
GO

/****** Object:  StoredProcedure [dbo].[SendSMSNotificationForPOApproval]    Script Date: 2020-09-14 ******/
CREATE PROCEDURE [dbo].[SendSMSNotificationForPOApproval] 
	@strCellNumber varchar(50),
	@strMessage VARCHAR(MAX)

AS 
  BEGIN 
      SET nocount ON; 

      INSERT INTO tblSMSMessages (strCellNumber,strMessage,strSentBy,dteEntered,dteSent,strServerID,bitProcessed,bitReply) VALUES (@strCellNumber,@strMessage,'System',GetDate(),NULL,NULL,0,0)
  END 
GO

/****** Object:  StoredProcedure [dbo].[GetApproverCellOrEmail]    Script Date: 2020-09-14 ******/
CREATE PROCEDURE [dbo].[Getapprovercelloremail] @intApproverGroupId INT, 
                                                @nextPriorityLevel  INT, 
                                                @IsEmail            BIT 
AS 
  BEGIN 
      SET nocount ON; 

      IF @IsEmail = 1 
        BEGIN 
            SELECT tu.stremail 
            FROM   tblpqapprovalsgroup PQG 
                   INNER JOIN tblapprovalsdoclimit ADC 
                           ON PQG.id = ADC.intapprovergroupid 
                   INNER JOIN tblusers tu 
                           ON ADC.strusername = tu.strusername 
            WHERE  ADC.intapprovergroupid = @intApproverGroupId 
                   AND ADC.prioritylevel = @nextPriorityLevel 
        END 
      ELSE 
        BEGIN 
            SELECT tu.strCellNumber 
            FROM   tblpqapprovalsgroup PQG 
                   INNER JOIN tblapprovalsdoclimit ADC 
                           ON PQG.id = ADC.intapprovergroupid 
                   INNER JOIN tblusers tu 
                           ON ADC.strusername = tu.strusername 
            WHERE  ADC.intapprovergroupid = @intApproverGroupId 
                   AND ADC.prioritylevel = @nextPriorityLevel 
        END 
  END 
GO

/****** Object:  StoredProcedure [dbo].[GetRequisitionCreateUserName]    Script Date: 2020-09-14 ******/
CREATE PROCEDURE [dbo].[GetRequisitionCreateUserName] @strOrdPDocID VARCHAR(20) 
AS 
  BEGIN 
      SET nocount ON; 

      SELECT strusername 
      FROM   tblorderdocp 
      WHERE  strordpdocid = @strOrdPDocID 
  END 
GO

/****** Object:  StoredProcedure [dbo].[GetNextApproverName]    Script Date: 2020-09-14 ******/
CREATE PROCEDURE [dbo].[GetNextApproverName] @intApproverGroupId INT, 
                                                @nextPriorityLevel  INT 
AS 
  BEGIN 
      SET nocount ON; 
	  BEGIN 
            SELECT tu.strUserName 
            FROM   tblpqapprovalsgroup PQG 
                   INNER JOIN tblapprovalsdoclimit ADC 
                           ON PQG.id = ADC.intapprovergroupid 
                   INNER JOIN tblusers tu 
                           ON ADC.strusername = tu.strusername 
            WHERE  ADC.intapprovergroupid = @intApproverGroupId 
                   AND ADC.prioritylevel = @nextPriorityLevel 
        END 
  END 
GO

/****** Object:  StoredProcedure [dbo].[GetLocationBinsList]    Script Date: 2020-09-14 ******/
CREATE PROCEDURE [dbo].[GetLocationBinsList]
 @SQstrLocationName nvarchar(10),
 @SQstrPartNumber nvarchar(50),
 @SQstrSearchText nvarchar(100) = NULL,
 @SQstrBinIds nvarchar(100) = NULL,
 @SQblnZeroOnHand BIT = NULL,
 @SQstrUserName nvarchar(20) = NULL
AS
BEGIN
 SET NOCOUNT ON;

	IF @SQblnZeroOnHand = 0
	BEGIN		
		SELECT 
		ILB.strBinCode
		FROM 
		tblInvExtBin IBE
		INNER JOIN tblInvLocBin ILB ON ILB.strLocName = IBE.strLocName AND ILB.lngId = IBE.lngBinId AND bitInactive = 0
		LEFT JOIN tblInvLocBinSec ON ILB.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = ILB.strLocName AND tblInvLocBinSec.strUserName = @SQstrUserName
		LEFT JOIN tblInv INV ON INV.strPartNumber = IBE.strPartNumber  
		WHERE
		IBE.strLocName = @SQstrLocationName AND IBE.strPartNumber = @SQstrPartNumber AND 
		(ILB.strBinCode = @SQstrSearchText OR @SQstrSearchText IS NULL) AND
		(ILB.lngId IN (Select CAST(Value AS bigint) From dbo.fnSplitStringAsTable(@SQstrBinIds,',')) OR @SQstrBinIds IS NULL)
		ORDER BY
		IBE.bitDefault, IBE.decOnHand desc
	END
	ELSE
	BEGIN	
		SELECT
		ILB.strBinCode
		FROM 
		tblInvExtBin IBE
		INNER JOIN tblInvLocBin ILB ON ILB.strLocName = IBE.strLocName AND ILB.lngId = IBE.lngBinId AND bitInactive = 0
		LEFT JOIN tblInvLocBinSec ON ILB.strBinCode = tblInvLocBinSec.strBinCode AND tblInvLocBinSec.strLocName = ILB.strLocName AND tblInvLocBinSec.strUserName = @SQstrUserName
		LEFT JOIN tblInv INV ON INV.strPartNumber = IBE.strPartNumber  
		WHERE
		IBE.strLocName = @SQstrLocationName AND IBE.strPartNumber = @SQstrPartNumber AND 
		(ILB.strBinCode = @SQstrSearchText OR @SQstrSearchText IS NULL) AND
		(ILB.lngId IN (Select CAST(Value AS bigint) From dbo.fnSplitStringAsTable(@SQstrBinIds,',')) OR @SQstrBinIds IS NULL) AND IBE.decOnHand = 0
		ORDER BY
		IBE.bitDefault, IBE.decOnHand desc
	END 	
END
GO

/****** Object:  StoredProcedure [dbo].[GetDeliveryMethodList]    Script Date: 04-01-2021 13:34:00 ******/
CREATE PROCEDURE [dbo].[GetDeliveryMethodList]  --Magento SP
AS 
  BEGIN 
      SELECT dm.strdelmethodcode AS DelMethod, 
             dmr.decmincharge    AS DelCost 
      FROM   tbldeliverymethods dm 
             INNER JOIN tbldeliverymethodratesservices dmr 
                     ON dm.strdelmethodcode = dmr.strdelmethodcode 
      WHERE  dm.bitinactive = 0 
      ORDER  BY dm.strdelmethodcode ASC 
  END
GO

/****** Object:  StoredProcedure [dbo].[prManageBankManagerBatch]    Script Date: 2020-08-24 ******/
CREATE PROCEDURE [dbo].[prManageBankManagerBatch]
(
	 @strBMDocIDH     nvarchar(50)=NULL
	,@intGLNumberH    nvarchar(100)=NULL
	,@dteDateH        datetime=NULL
	,@dteSystemDateH  datetime=NULL
	,@strUserNameH    nvarchar(100)=NULL
	,@strCommentH     nvarchar(100)=NULL
	,@intUpdateBankH  int=NULL
	,@strCurrencyH    nvarchar(100)=NULL
	,@decExchangeH    decimal(20,6)=NULL
)
AS

BEGIN

IF NOT EXISTS (
		SELECT 1
		FROM tblBankManagerBatch
		WHERE strBMDocID = @strBMDocIDH
		)
BEGIN
	INSERT INTO tblBankManagerBatch (
		strBMDocID
		,dteDate
		,intGLNumber
		,dteSystemDate
		,strUserName
		,strComment
		,intUpdateBank
		,strCurrency
		,decExchange
		)
	VALUES (
		@strBMDocIDH
		,@dteDateH
		,@intGLNumberH
		,@dteSystemDateH
		,@strUserNameH
		,@strCommentH
		,@intUpdateBankH
		,@strCurrencyH
		,@decExchangeH
		)
END
ELSE
BEGIN
	UPDATE tblBankManagerBatch
	SET dteDate = @dteDateH
		,intGLNumber = @intGLNumberH
		,strComment = @strCommentH
		,intUpdateBank = @intUpdateBankH
		,strCurrency = @strCurrencyH
		,decExchange = @decExchangeH
	WHERE strBMDocID = @strBMDocIDH
END

END
GO

/****** Object:  StoredProcedure [dbo].[prManageBankManagerBatchDT]    Script Date: 2020-08-24 ******/
CREATE PROCEDURE [dbo].[prManageBankManagerBatchDT]
(
		 @strBMDocID nvarchar(100)
		,@intLineNo nvarchar(100)
		,@lngJourID nvarchar(100)
		,@strUserName nvarchar(100)
		,@dteJournalDate nvarchar(100)
		,@strDocumentType nvarchar(100)
		,@strAccountType nvarchar(100)
		,@strCuVeGeInID nvarchar(100)=NULL
		,@intDept bigInt=NULL 
		,@strLineComment nvarchar(100) =NULL 
		,@strLineReference nvarchar(100)=NULL 
		,@lngGroupId  bigInt=NULL 
		,@strSource nvarchar(100)=NULL 
		,@decDebits money=NULL 
		,@decCredits  money=NULL
		,@decLineTotExc  money=NULL
		,@decLineTaxAmt  money=NULL
		,@decLineTotInc  money=NULL
		,@strTaxCode nvarchar(100)=NULL
		,@imgTaxObj image=NULL
		,@strCurrency nvarchar(100)=NULL
		,@decExchange decimal(20,6)=NULL
		,@bitIsForeign bit=NULL
		,@decDebitsF money=NULL
		,@decCreditsF money=NULL
		,@decLineTotExcF money=NULL
		,@decLineTaxAmtF money=NULL
		,@decLineTotIncF money=NULL
		,@bitPosted bit=NULL
)
AS

BEGIN

IF NOT EXISTS (
		SELECT 1
		FROM tblBankManagerBatchDT
		WHERE strBMDocID = @strBMDocID
			AND intLineNo = @intLineNo
		)
BEGIN
	INSERT INTO tblBankManagerBatchDT (
		strBMDocID
		,intLineNo
		,lngJourID
		,strUserName
		,dteJournalDate
		,strDocumentType
		,strAccountType
		,strCuVeGeInID
		,intDept
		,strLineComment
		,strLineReference
		,lngGroupId
		,strSource
		,decDebits
		,decCredits
		,decLineTotExc
		,decLineTaxAmt
		,decLineTotInc
		,strTaxCode
		,imgTaxObj
		,strCurrency
		,decExchange
		,bitIsForeign
		,decDebitsF
		,decCreditsF
		,decLineTotExcF
		,decLineTaxAmtF
		,decLineTotIncF
		,bitPosted
		)
	VALUES (
		@strBMDocID
		,@intLineNo
		,@lngJourID
		,@strUserName
		,@dteJournalDate
		,@strDocumentType
		,@strAccountType
		,@strCuVeGeInID
		,@intDept
		,@strLineComment
		,@strLineReference
		,@lngGroupId
		,@strSource
		,@decDebits
		,@decCredits
		,@decLineTotExc
		,@decLineTaxAmt
		,@decLineTotInc
		,@strTaxCode
		,@imgTaxObj
		,@strCurrency
		,@decExchange
		,@bitIsForeign
		,@decDebitsF
		,@decCreditsF
		,@decLineTotExcF
		,@decLineTaxAmtF
		,@decLineTotIncF
		,@bitPosted
		)
END
ELSE
BEGIN
	UPDATE tblBankManagerBatchDT
	SET lngJourID = @lngJourID
		,strUserName = @strUserName
		,dteJournalDate = @dteJournalDate
		,strDocumentType = @strDocumentType
		,strAccountType = @strAccountType
		,strCuVeGeInID = @strCuVeGeInID
		,intDept = @intDept
		,strLineComment = @strLineComment
		,strLineReference = @strLineReference
		,lngGroupId = @lngGroupId
		,strSource = @strSource
		,decDebits = @decDebits
		,decCredits = @decCredits
		,decLineTotExc = @decLineTotExc
		,decLineTaxAmt = @decLineTaxAmt
		,decLineTotInc = @decLineTotInc
		,strTaxCode = @strTaxCode
		,imgTaxObj = @imgTaxObj
		,strCurrency = @strCurrency
		,decExchange = @decExchange
		,bitIsForeign = @bitIsForeign
		,decDebitsF = @decDebitsF
		,decCreditsF = @decCreditsF
		,decLineTotExcF = @decLineTotExcF
		,decLineTaxAmtF = @decLineTaxAmtF
		,decLineTotIncF = @decLineTotIncF
		,bitPosted = @bitPosted
	WHERE intLineNo = @intLineNo
		AND strBMDocID = @strBMDocID
END

END
GO

/****** Object:  StoredProcedure [dbo].[GetCustomerName]    Script Date: 2020-09-02 ******/
CREATE PROCEDURE [dbo].[GetCustomerName]
(@isStartWith AS BIT, @StartWith AS NVARCHAR(MAX), @length AS INT)
AS
BEGIN
IF @isStartWith = 1
	BEGIN
		SELECT TOP 1 strCustName FROM tblCustomers WHERE strCustName LIKE @StartWith + '%' AND LEN(strCustName) = @Length ORDER BY strCustName DESC
	END
ELSE
	BEGIN
		SELECT TOP 1 strCustName FROM tblCustomers WHERE strCustName LIKE '%' + @StartWith AND LEN(strCustName) = @Length ORDER BY strCustName DESC
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetCustomersCount]    Script Date: 2020-09-02 ******/
CREATE PROCEDURE [dbo].[GetCustomersCount]
@CustomerName Nvarchar(50)
AS
BEGIN
	SELECT COUNT(strCustName) FROM tblCustomers where strCustName = @CustomerName
END
GO

/****** Object:  StoredProcedure [dbo].[GetAllTenderTypes]    Script Date: 2020-09-02 ******/
CREATE PROCEDURE [dbo].[GetAllTenderTypes]
AS
    BEGIN
        SELECT 
    [Extent1].[intDisplayOrder] AS [DisplayOrder], 
    [Extent1].[strName] AS [Name], 
    [Extent1].[strDescription] AS [Description], 
    [Extent1].[intGLNumber] AS [GLNumber], 
    [Extent1].[bitAccount] AS [IsAccount], 
    [Extent1].[bitInActive] AS [InActive], 
    [Extent1].[bitCashbookIntegration] AS [IsCashbookIntegration], 
    [Extent1].[strIPAddress] AS [IPAddress], 
    [Extent1].[intPortNum] AS [PortNumber], 
    [Extent2].[strDesc] AS [AccountDesc], 
    [Extent1].[bitSalesInvoice] AS [IsSalesInvoice], 
    [Extent1].[bitLayBy] AS [IsLayBy], 
    [Extent1].[bitPOS] AS [IsPOS], 
    [Extent1].[bitCash] AS [IsCash], 
    [Extent1].[bitEFTIntegration] AS [IsEFTIntegration], 
    [Extent1].[strMerchantId] AS [MerchantId], 
    [Extent1].[strTradeRootServer] AS [TradeRootServer], 
    [Extent1].[intEFTPort] AS [EFTPort], 
    [Extent1].[strPEDId] AS [PEDIdList]
    FROM  [dbo].[tblTenderTypes] AS [Extent1]
    LEFT OUTER JOIN [dbo].[tblAccounts] AS [Extent2] ON [Extent1].[intGLNumber] = [Extent2].[intGLNumber]
    ORDER BY [Extent1].[intDisplayOrder] ASC
    END
GO

/****** Object:  StoredProcedure [dbo].[GetAllCategoriesData]    Script Date: 04-01-2021 13:34:00 ******/
CREATE PROCEDURE [dbo].[GetAllCategoriesData]  --Magento SP
AS
BEGIN
 if not exists (Select 1 from tblOptFields where strInv1='Store Main')
	 begin
	 --print 'test'
	  SELECT distinct strCategory AS Category,
			strDesc AS Description,
			bitInactive AS InActive,
			decMinMarginPerc AS MinMarginPerc,
			bitUseMinMarginPerc AS IsUseMinMarginperc,
			intAlertOnMinMarginPerc AS AlertOnMinMarginPerc,
			strAcctSetInv AS AcctSetInv,
			strAcctSetSvc AS AcctSetSvc,
			strAcctSetBO AS AcctSetBO,
			getdate() AS RowUpdated,
			cast(0 as bit) AS IsDefault
	   FROM tblInvCat
	   WHERE bitInactive = 0 AND 
	   strCategory IN (SELECT strCategory FROM tblInv WHERE bitInactive = 0 AND bitWebstoreItem = 1)
	 end
 else
	   begin
	  -- print 'first'
	   SELECT distinct ltrim(rtrim(strField1)) as Category,
			cast(0 as bit)  as InActive,
			0.0 AS MinMarginPerc,
			cast(0 as bit) AS IsUseMinMarginperc,
			0 AS AlertOnMinMarginPerc,
			'' AS AcctSetInv,
			'' AS AcctSetSvc,
			'' AS AcctSetBO,
			getdate() AS RowUpdated,
			cast(0 as bit) AS IsDefault
	   FROM tblInv
	   WHERE isnull(strField1,'') <> ''
	   AND bitInactive = 0 AND bitWebstoreItem = 1
	   end
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvSubCatMagento]    Script Date: 04-01-2021 13:34:00 ******/
CREATE PROCEDURE [dbo].[GetInvSubCatMagento]  --Magento SP
@Category nvarchar(40)
as 
 if not exists (Select 1 from tblOptFields where strInv1='Store Main')
 begin
select distinct strSubCategory as SubCategory
 from tblinv where bitInactive=0 and strCategory=@Category
 and strSubCategory is not null and bitWebstoreItem=1
 end
 else

 begin
  select distinct strField2  as SubCategory 
    from tblInv where strField1=@Category  and strField2 <>''
	AND bitInactive = 0 and bitWebstoreItem = 1
 end
GO

/****** Object:  StoredProcedure [dbo].[GetInvSubCatGroupMagento]    Script Date: 04-01-2021 13:34:00 ******/
CREATE PROCEDURE [dbo].[GetInvSubCatGroupMagento]  --Magento SP
@Category nvarchar(40)
as 
if not exists (Select 1 from tblOptFields where strInv1='Store Main')
 begin
select distinct strSubCategoryGroup as SubCategoryGroup
 from tblinv where bitInactive=0 and strCategory=@Category
 and strSubCategoryGroup is not null and bitWebstoreItem=1
 end
 else
 begin
  select '' as SubCategoryGroup where 1=2
 end
GO

/****** Object:  StoredProcedure [dbo].[GetYodleeAccountVirctualOpeningBalance]    Script Date: 16-Jul-20 11:50:56 AM ******/
CREATE PROCEDURE [dbo].[GetYodleeAccountVirctualOpeningBalance]  
  
@PalladiumAccountNumber as nvarchar(100)=NULL,  
@FromDate As Datetime=NULL  
AS   
Begin  
    
 --DECLARE @OpeningBalance decimal(18,2)=0  
 --  SET @OpeningBalance=( SELECT TOP  1 ISNULL(tblYodleeOpeningBalance.OpeningBalance,0) AS OpeningBalance   
 --      FROM tblStatementImported  
 --      LEFT JOIN tblYodleeOpeningBalance ON  tblStatementImported.PalladiumAccountNumber=tblYodleeOpeningBalance.PalladiumAccountNumber  
 --      WHERE tblStatementImported.PalladiumAccountNumber=@PalladiumAccountNumber );  
  
  
 --Select Top 1 ISNULL(RunningBalance,0) AS RunningBalance From (Select Id,(RunningBalance+@OpeningBalance)  RunningBalance   
 --FROM (Select ROW_NUMBER() over (order by TransactionDate asc)  as Rowid,  
 --    Id,  
 --   SUM(Amount) OVER (ORDER BY TransactionDate asc) AS RunningBalance  
 --  From tblStatementImported  
 --  Where  (PalladiumAccountNumber=@PalladiumAccountNumber) AND (IsProcessed=1) AND (TransactionDate <=DateAdd(day,-1,@FromDate))  
 --) As T1  
 --) AS T2  
 --Order By Id desc  
  
  
 DECLARE @OpeningBalance decimal(18,2)=0  
   SET @OpeningBalance=( SELECT TOP  1 ISNULL(tblYodleeOpeningBalance.OpeningBalance,0) AS OpeningBalance   
       FROM tblStatementImported  
       LEFT JOIN tblYodleeOpeningBalance ON  tblStatementImported.PalladiumAccountNumber=tblYodleeOpeningBalance.PalladiumAccountNumber  
       WHERE tblStatementImported.PalladiumAccountNumber=@PalladiumAccountNumber );  
  
  
 Select Top 1 ISNULL(RunningBalance,0) AS RunningBalance,PalladiumAccountNumber,TransactionType From (  
 Select Id,(RunningBalance+@OpeningBalance)  RunningBalance ,PalladiumAccountNumber,TransactionType FROM (  
    SELECT ROW_NUMBER() over (order by id asc)  as Rowid,  
        Id,  
     PalladiumAccountNumber,  
     SUM(Amount) OVER (ORDER BY Id) AS RunningBalance,
	 TransactionType  
    FROM tblStatementImported  
    WHERE  (PalladiumAccountNumber=@PalladiumAccountNumber) AND (IsProcessed=1) AND (TransactionDate <=Dateadd(day,-1,@FromDate))  
  ) As T1  
 ) AS T2  
 Order By Id DESC  
      
END
GO

/****** Object:  StoredProcedure [dbo].[GetYodleeBankBalance]    Script Date: 16-Jul-20 11:51:19 AM ******/
CREATE PROCEDURE [dbo].[GetYodleeBankBalance]

@PalladiumAccountNumber as nvarchar(100)

AS 
Begin
	Select 
	ISNULL(tblAccounts.decBalance,0) As BankBalance,
	tblAccounts.strCurrency  As CurrencySymbol 
	from tblAccounts 
	Where intGLNumber=@PalladiumAccountNumber
END
GO

/****** Object:  StoredProcedure [dbo].[GetYodleeBankConfig]    Script Date: 16-Jul-20 11:51:32 AM ******/
CREATE Procedure [dbo].[GetYodleeBankConfig]  
As  
BEGIN  
  Select T2.*,tblYodleeBanks.CountryISOCode from (SELECT * FROM (SELECT Id  
     ,BankName  
     ,IsInactive  
     ,CreatedDate  
     ,UpdatedDate  
     ,CreatedBy  
     ,UpdatedBy  
     ,IdBank  
     ,LastStatementDate  
     ,ROW_NUMBER() over (partition by IdBank Order by IdBank ) As RowNum  
  FROM tblYodleeBankConfig ) T1   
  Where RowNum=1) T2 Inner join tblYodleeBanks On T2.IdBank=tblYodleeBanks.BankId and tblYodleeBanks.IsManual=0  
END  
GO

/****** Object:  StoredProcedure [dbo].[GetYodleeBankConfigAccount]    Script Date: 16-Jul-20 11:51:45 AM ******/
CREATE Procedure [dbo].[GetYodleeBankConfigAccount]
@BankId as Int
As
Begin

 Select Id,
		BankName,
		IdBank,
		LastStatementDate,
		AccountNumber,
		AccountId,
		PalladiumBankAccount,
		ISNULL(InactiveAccount,1) AS InactiveAccount,
		ProviderAccountId,
		LastStatementDate AS FirstImportDate 
   from tblYodleeBankConfig 
   Where IdBank=@BankId 

End
GO

/****** Object:  StoredProcedure [dbo].[GetYodleeBankImportStatement]    Script Date: 16-Jul-20 11:51:56 AM ******/
CREATE PROCEDURE [dbo].[GetYodleeBankImportStatement]    
 @YodleeAccountNumber as nvarchar(100),    
 @PalladiumAccountNumber as nvarchar(100),    
 @IsProcessed as int,    
 @FromDate as datetime,    
 @ToDate as datetime,    
 @OpeningBalance2 as decimal(18,2)    
AS     
Begin    
   
  DECLARE @OpeningBalance decimal(18,2)=0    
   SET @OpeningBalance=    
   (    
     SELECT TOP  1 ISNULL(tblYodleeOpeningBalance.OpeningBalance,0) AS OpeningBalance     
     FROM tblStatementImported    
     LEFT JOIN tblYodleeOpeningBalance ON  tblStatementImported.PalladiumAccountNumber=tblYodleeOpeningBalance.PalladiumAccountNumber    
     WHERE tblStatementImported.PalladiumAccountNumber=@PalladiumAccountNumber    
   );    
    
   DECLARE @FirstImportDate date=Null    
   SET @FirstImportDate=(SELECT Top  1 LastStatementDate FROM tblYodleeBankConfig WHERE PalladiumBankAccount=@PalladiumAccountNumber)    
    
      
 IF (@IsProcessed=1)    
 BEGIN    
     
 IF (@OpeningBalance2<>0)     
 BEGIN    
  SET @OpeningBalance=@OpeningBalance2;    
  SET @FirstImportDate=@FromDate    
 END    
 Select *  from (    
 Select  Top 1 0 AS Id,    
  'Opening Balance' As StatementDescription,    
  DATEADD(DAY,-1,@FirstImportDate) AS TransactionDate,    
  '' AS DocumentType,    
  '' AS AccountType,    
  0 AS Amount,    
  ''  AS Reference,    
  @YodleeAccountNumber AS YodleeAccountNumber,    
  @PalladiumAccountNumber  AS PalladiumAccountNumber,    
  @FirstImportDate AS RetrivedDate,    
  CAST(1 as bit) AS IsProcessed,    
  ISNULL(@OpeningBalance,0) AS  RunningBalance,    
  TransactionType,  
  0 AS Payment,  
  0 AS Receipt,  
  CAST(0 as bit) AS [FirstRow]    
 From tblStatementImported    
     
     
     
 UNION ALL    
    
   Select    
    Id,    
    StatementDescription,    
    TransactionDate,    
    DocumentType,    
    AccountType,    
    Amount,    
    Reference,    
    YodleeAccountNumber,    
    PalladiumAccountNumber,    
    RetrivedDate,    
    IsProcessed,    
    --Cast(ID as decimal) as RunningBalance    
    (ISNULL(RunningBalance,0)+ISNULL(@OpeningBalance,0))  RunningBalance,   
	TransactionType ,  
	Payment,  
	Receipt,   
    CAST(1 as bit) AS [FirstRow]     
   FROM (Select    
      ROW_NUMBER() over (order by TransactionDate asc,id)  as Rowid,    
      Id,    
      StatementDescription,    
      TransactionDate,    
      DocumentType,    
      AccountType,    
      Amount,    
      Reference,    
      YodleeAccountNumber,    
      PalladiumAccountNumber,    
      RetrivedDate,    
      IsProcessed,    
      SUM(ISNULL(Amount,0)) OVER (ORDER BY TransactionDate asc,id) AS RunningBalance,  
 TransactionType,  
 CASE WHEN TransactionType = 'DEBIT' THEN Amount ELSE 0 END AS Payment,  
   CASE WHEN TransactionType = 'CREDIT' THEN Amount ELSE 0 END AS Receipt     
     From tblStatementImported    
     Where (YodleeAccountNumber=@YodleeAccountNumber) AND     
        (PalladiumAccountNumber=@PalladiumAccountNumber) AND    
        (IsProcessed=@IsProcessed) AND    
        (TransactionDate BETWEEN @FromDate AND @ToDate)    
  ) As T1) AS t2 Order by RunningBalance    
      
    
      
 END    
ELSE    
 BEGIN    
    
     
    
  Select *  from (    
   Select    
    Id,    
    StatementDescription,    
    TransactionDate,    
    DocumentType,    
    AccountType,    
    Amount,    
    Reference,    
    YodleeAccountNumber,    
    PalladiumAccountNumber,    
    RetrivedDate,    
    IsProcessed,    
    --Cast(ID as decimal) as RunningBalance    
    (ISNULL(RunningBalance,0)+ISNULL(@OpeningBalance,0))  RunningBalance,  
 TransactionType,   
 Payment,  
 Receipt,   
    CAST(1 as bit) AS [FirstRow]    
   FROM (Select    
      ROW_NUMBER() over (order by TransactionDate asc,id)  as Rowid,    
      Id,    
      StatementDescription,    
      TransactionDate,    
      DocumentType,    
      AccountType,    
      Amount,    
      Reference,    
      YodleeAccountNumber,    
      PalladiumAccountNumber,    
      RetrivedDate,    
      IsProcessed,    
      SUM(ISNULL(Amount,0)) OVER (ORDER BY TransactionDate asc,Id) AS RunningBalance,  
   TransactionType,  
   CASE WHEN TransactionType = 'DEBIT' THEN Amount ELSE 0 END AS Payment,  
   CASE WHEN TransactionType = 'CREDIT' THEN Amount ELSE 0 END AS Receipt  
     From tblStatementImported    
     Where (YodleeAccountNumber=@YodleeAccountNumber) AND     
        (PalladiumAccountNumber=@PalladiumAccountNumber) AND    
        (IsProcessed=@IsProcessed) AND    
        (TransactionDate BETWEEN @FromDate AND @ToDate)    
  ) As T1) AS t2 Order by RunningBalance    
    
 END          
END 
GO

/****** Object:  StoredProcedure [dbo].[GetYodleeBankLastImportStatement]    Script Date: 16-Jul-20 11:52:11 AM ******/
CREATE Procedure [dbo].[GetYodleeBankLastImportStatement]
@YodleeAccountNumber as nvarchar(100),
@PalladiumAccountNumber as nvarchar(100)
AS
Begin
	--SELECT MAX(T1.TransactionDate),T2.IdBank AS TransactionDate
	--FROM tblStatementImported AS T1
	--INNER JOIN tblYodleeBankConfig AS T2 ON ((T1.YodleeAccountNumber=T2.AccountNumber) AND  (T1.PalladiumAccountNumber=T2.PalladiumBankAccount))
	--WHERE YodleeAccountNumber=@YodleeAccountNumber AND PalladiumAccountNumber=@PalladiumAccountNumber
	--Group By T1.TransactionDate,T2.IdBank

	--SELECT Top 1 MAX(T1.TransactionDate) AS TransactionDate,T2.IdBank ,T2.AccountId 
	--FROM tblStatementImported AS T1
	--INNER JOIN tblYodleeBankConfig AS T2 ON ((T1.YodleeAccountNumber=T2.AccountNumber) AND  (T1.PalladiumAccountNumber=T2.PalladiumBankAccount))
	--WHERE YodleeAccountNumber=@YodleeAccountNumber AND PalladiumAccountNumber=@PalladiumAccountNumber
	--Group By  T2.IdBank,T2.AccountId 

	--Select Top 1 ISNULL(Max(TI.TransactionDate),BL.LastStatementDate)AS TransactionDate ,Cast(BL.IdBank as nvarchar(Max)) as bankId ,BL.AccountId from tblYodleeBankConfig AS BL 
	--LEFT Join tblStatementImported AS TI on TI.YodleeAccountNumber=BL.AccountNumber AND  TI.PalladiumAccountNumber=BL.PalladiumBankAccount
	--WHERE BL.AccountNumber=@YodleeAccountNumber AND BL.PalladiumBankAccount=@PalladiumAccountNumber and LastStatementDate is not null
	--Group By  BL.IdBank,BL.AccountId,BL.LastStatementDate

	Select Top 1 ISNULL(Max(TI.TransactionDate),ISNULL(BL.LastStatementDate,GETDATE()))AS TransactionDate ,Cast(BL.IdBank as nvarchar(Max)) as bankId ,BL.AccountId,ISNULL(TI.RetrivedDate,ISNULL(BL.LastStatementDate,GETDATE())) AS RetrivedDate from tblYodleeBankConfig AS BL 
	LEFT Join tblStatementImported AS TI on TI.YodleeAccountNumber=BL.AccountNumber AND  TI.PalladiumAccountNumber=BL.PalladiumBankAccount
	WHERE BL.AccountNumber=@YodleeAccountNumber AND BL.PalladiumBankAccount=@PalladiumAccountNumber-- and LastStatementDate is not null
	Group By  BL.IdBank,BL.AccountId,BL.LastStatementDate,TI.RetrivedDate
END
GO

/****** Object:  StoredProcedure [dbo].[GetYodleeBanks]    Script Date: 16-Jul-20 11:52:23 AM ******/
CREATE Procedure [dbo].[GetYodleeBanks]
@CountryISOCode as nvarchar(10)='ZA'
As
BEGIN
		SELECT Id,BankName,BankId,IsManual
		FROM tblYodleeBanks WHERE IsManual=0  and CountryISOCode=@CountryISOCode
		Order By BankName asc
END
GO

/****** Object:  StoredProcedure [dbo].[GetYodleeBanksByCountry]    Script Date: 16-Jul-20 11:52:36 AM ******/
CREATE Procedure [dbo].[GetYodleeBanksByCountry]
@CountryISOCode as nvarchar(10)='ZA'
As
BEGIN
		SELECT Id,BankName,BankId,IsManual
		FROM tblYodleeBanks WHERE IsManual=0 and CountryISOCode=@CountryISOCode
		Order By BankName
END
GO

/****** Object:  StoredProcedure [dbo].[GetYodleeDeveloperConfig]    Script Date: 16-Jul-20 11:53:04 AM ******/
CREATE PROCEDURE [dbo].[GetYodleeDeveloperConfig]
	-- Add the parameters for the stored procedure here
	
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	
	SELECT Id
		   ,Username
		   ,[Password]
		   ,AdminloginName
		   ,ClientID
		   ,ClientSecret
		   ,APIVersion
	FROM tblYodleeDeveloperConfig
    
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateYodleeProcessedPending]    Script Date: 16-Jul-20 11:53:17 AM ******/

CREATE PROCEDURE [dbo].[UpdateYodleeProcessedPending] 
	
	@StrIds nvarchar(max)=null,
	@PalladiumAccountNumber nvarchar(100)=null,
	@IsActiveTab int=0
AS
BEGIN
	
	SET NOCOUNT ON;

	Update tblStatementImported
	SET IsProcessed=CASE WHEN @IsActiveTab=0 THEN 1 ELSe 0 END
	Where ID IN (Select Data from dbo.Split(@StrIds,',')) AND PalladiumAccountNumber=@PalladiumAccountNumber
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdateDeletetblYodleeBankConfig]    Script Date: 08-04-2020 07:48:00 ******/
CREATE PROCEDURE [dbo].[AddUpdateDeletetblYodleeBankConfig]
 @Id int=NULL
,@BankName nvarchar(500)=NULL
,@AccountId  nvarchar(500)=NULL
,@AccountNumber  nvarchar(500)=NULL
,@IsInactive bit=NULL
,@CreatedDate datetime=NULL
,@UpdatedDate datetime=NULL
,@CreatedBy nvarchar(250)=NULL
,@UpdatedBy nvarchar(250)=NULL
,@strAction varchar(50)=NULL
,@IdBank INT=NULL
,@LastStatementDate DATETIME=NULL
,@PalladiumBankAccount nvarchar(250)=NULL
,@InactiveAccount bit=NULL
,@ProviderAccountId nvarchar(500)=NULL
AS
BEGIN

IF @strAction='I' 
  BEGIN

  IF (NOT EXISTS(SELECT TOP 1 * FROM [tblYodleeBankConfig] WHERE (AccountId=@AccountId  and [AccountNumber]=@AccountNumber and [IdBank]=@IdBank)))
  BEGIN

  INSERT INTO [dbo].[tblYodleeBankConfig]
           ([BankName]
		   ,[AccountId]
		   ,[AccountNumber]
           ,[IsInactive]
           ,[CreatedDate]
           ,[UpdatedDate]
           ,[CreatedBy]
           ,[UpdatedBy]
		   ,[IdBank]
		   ,[LastStatementDate]
		   ,[PalladiumBankAccount]
		   ,[InactiveAccount]
		   ,[ProviderAccountId])
     VALUES
           (@BankName
           ,@AccountId
		   ,@AccountNumber
		   ,@IsInactive
           ,@CreatedDate
           ,NULL
           ,@CreatedBy
           ,NULL
		   ,@IdBank
		   ,@LastStatementDate
		   ,@PalladiumBankAccount
		   ,@InactiveAccount
		   ,@ProviderAccountId)
	END
  
 END		

IF @strAction='U' 
  BEGIN


   IF (NOT EXISTS(SELECT TOP 1 * FROM [tblYodleeBankConfig] WHERE AccountId=@AccountId  and [AccountNumber]=@AccountNumber and [IdBank]=@IdBank))
  BEGIN

  INSERT INTO [dbo].[tblYodleeBankConfig]
           ([BankName]
		   ,[AccountId]
		   ,[AccountNumber]
           ,[IsInactive]
           ,[CreatedDate]
           ,[UpdatedDate]
           ,[CreatedBy]
           ,[UpdatedBy]
		   ,[IdBank]
		   ,[LastStatementDate]
		   ,[PalladiumBankAccount]
		   ,[InactiveAccount]
		   ,[ProviderAccountId])
     VALUES
           (@BankName
           ,@AccountId
		   ,@AccountNumber
		   ,@IsInactive
           ,@CreatedDate
           ,NULL
           ,@CreatedBy
           ,NULL
		   ,@IdBank
		   ,@LastStatementDate
		   ,@PalladiumBankAccount
		   ,@InactiveAccount
		   ,@ProviderAccountId)
	END
  
  

   UPDATE [dbo].[tblYodleeBankConfig]
   SET  [IsInactive] = @IsInactive , 
	    PalladiumBankAccount =@PalladiumBankAccount,
		InactiveAccount=@InactiveAccount,
		LastStatementDate=@LastStatementDate
   WHERE [IdBank]=@IdBank and Id=@Id

   --UPDATE [dbo].[tblYodleeBankConfig]
   --SET [BankName] = @BankName
	  --,[AccountId]= @AccountId
	  --,[AccountNumber]= @AccountNumber
   --   ,[IsInactive] = @IsInactive 
   --   ,[UpdatedDate] = @UpdatedDate
   --   ,[UpdatedBy] = GETDATE()
	  --,[IdBank]=@IdBank
   --   WHERE Id=@Id
  END
	
IF @strAction='D' 
	  BEGIN
			DELETE FROM  [dbo].[tblYodleeBankConfig]
			WHERE IdBank =(Select IdBank From [dbo].[tblYodleeBankConfig] Where Id=@Id)
	  END
		
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdateYodleeOpeningBalance]    Script Date: 16-Jul-20 11:48:57 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AddUpdateYodleeOpeningBalance]
	@PalladiumAccountNumber nvarchar(100)=null,
	@OpeningBalance decimal(18,2)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

   
   IF EXISTS(Select 1 from tblYodleeOpeningBalance Where PalladiumAccountNumber=@PalladiumAccountNumber)
		BEGIN
				Update tblYodleeOpeningBalance
				SET OpeningBalance=@OpeningBalance
				Where PalladiumAccountNumber=@PalladiumAccountNumber
		END
   Else
	   	BEGIN
				Insert INTO tblYodleeOpeningBalance(PalladiumAccountNumber,OpeningBalance)
				VALUES (@PalladiumAccountNumber,@OpeningBalance)
		END
END
GO

/****** Object:  StoredProcedure [dbo].[GetYodleeAccountOpeningBalance]    Script Date: 16-Jul-20 11:50:35 AM ******/
CREATE Procedure [dbo].[GetYodleeAccountOpeningBalance]

@PalladiumAccountNumber as nvarchar(100)

AS 
Begin
		--SELECT TOP  1 
		--tblStatementImported.PalladiumAccountNumber,
		--ISNULL(tblYodleeOpeningBalance.OpeningBalance,0) AS Amount, 
		--ISNULL((Select Top 1 tblYodleeBankConfig.LastStatementDate  from tblYodleeBankConfig where tblYodleeBankConfig.PalladiumBankAccount=@PalladiumAccountNumber),GetDate()) as RetrivedDate
		--FROM tblStatementImported
		--LEFT JOIN tblYodleeOpeningBalance ON  tblStatementImported.PalladiumAccountNumber=tblYodleeOpeningBalance.PalladiumAccountNumber
		--WHERE tblStatementImported.PalladiumAccountNumber=@PalladiumAccountNumber

		SELECT TOP  1 
		tblYodleeBankConfig.PalladiumBankAccount,
		ISNULL(tblYodleeOpeningBalance.OpeningBalance,0) AS Amount, 
		ISNULL(tblYodleeBankConfig.LastStatementDate,GetDate()) as RetrivedDate
	--	ISNULL((Select Top 1 tblYodleeBankConfig.LastStatementDate  from tblYodleeBankConfig where tblYodleeBankConfig.PalladiumBankAccount=@PalladiumAccountNumber),GetDate()) as RetrivedDate
		FROM tblStatementImported
		LEFT JOIN tblYodleeOpeningBalance ON  tblStatementImported.PalladiumAccountNumber=tblYodleeOpeningBalance.PalladiumAccountNumber
		RIGHT JOIN tblYodleeBankConfig ON tblYodleeBankConfig.PalladiumBankAccount=tblStatementImported.PalladiumAccountNumber 
		WHERE tblYodleeBankConfig.PalladiumBankAccount=@PalladiumAccountNumber
END
GO

/****** Object:  StoredProcedure [dbo].[GetCountryList]    Script Date: 20-Jul-20 11:50:35 AM ******/
CREATE Procedure [dbo].[GetCountryList]
AS
BEGIN
SELECT strCountryCode as CountryISOCode,tblCountries.strDisplayName as Country,
CAST(ISNULL((Select Count(*) from tblCompany where tblCompany.strCountryCode=tblCountries.strCountryCode),0) as bit) as IsHome
 FROM tblCountries 
 --Need to remove below code
 Union ALL

 Select 'TEMP','Temp Bank',Cast (0 as bit)

Order By tblCountries.strDisplayName  asc
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdateDeletetblStatementImport]    Script Date: 21-07-2020 07:48:00 ******/
CREATE PROCEDURE [dbo].[AddUpdateDeletetblStatementImport]  
 @StatementDescription nvarchar(500)  
,@TransactionDate datetime  
,@DocumentType nvarchar(250)  
,@AccountType nvarchar(500)  
,@Amount decimal(18,2)  
,@Reference nvarchar(500)  
,@YodleeAccountNumber nvarchar(100)  
,@PalladiumAccountNumber nvarchar(100)  
,@RetrivedDate datetime  
,@IsProcessed bit  
,@strAction nvarchar(10)
,@TransactionType nvarchar(10)  
AS  
BEGIN  
  
IF @strAction='I'   
  BEGIN  
  IF NOT EXISTS(SELECT TOP 1 * FROM tblStatementImported WHERE Reference=@Reference)  
  BEGIN  
    
  INSERT INTO [dbo].[tblStatementImported]  
           ([StatementDescription]  
           ,[TransactionDate]  
           ,[DocumentType]  
           ,[AccountType]  
           ,[Amount]  
           ,[Reference]  
           ,[YodleeAccountNumber]  
           ,[PalladiumAccountNumber]  
           ,[RetrivedDate]  
           ,[IsProcessed]
		   ,[TransactionType])  
     VALUES  
           (@StatementDescription  
           ,@TransactionDate  
           ,@DocumentType  
           ,@AccountType  
           ,@Amount  
           ,@Reference  
           ,@YodleeAccountNumber  
           ,@PalladiumAccountNumber  
           ,@RetrivedDate  
           ,@IsProcessed
		   ,@TransactionType)  
  END  
    
 END    
  
--IF @strAction='U'   
--  BEGIN  
  
  
    
--  END  
   
--IF @strAction='D'   
--   BEGIN  
--   DELETE FROM  [dbo].[tblYodleeBankConfig]  
--   WHERE IdBank =(Select IdBank From [dbo].[tblYodleeBankConfig] Where Id=@Id)  
--   END  
    
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateYodleeUser]    Script Date: 04/08/2020 8:04:17 PM ******/
CREATE Procedure [dbo].[UpdateYodleeUser]
	@StrYodleeUser nvarchar(100)=NULL
As
BEGIN

	UPDATE tblCompany
	SET strYodleeUser=@StrYodleeUser

END
GO

/****** Object:  StoredProcedure [dbo].[GetYodleeUser]    Script Date: 04/08/2020 8:04:17 PM ******/
CREATE Procedure [dbo].[GetYodleeUser]
As
BEGIN

	 SELECT Top  1 ISNULL(strName,'') AS strName,
	   ISNULL(strYodleeUser,'') AS strYodleeUser,
	   ISNULL(strEmail,'') AS strEmail,
	   ISNULL(strStreet1,'') AS strStreet1,
	   ISNULL(strCity,'') AS strCity,
	   ISNULL(strProvince,'') AS strProvince,
	   ISNULL(strPostal,'') AS strPostal,
	   ISNULL(strCountryCode,'')  AS strCountryCode
	FROM tblCompany

END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblCenters]    Script Date: 2020-09-08 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblCenters]
    @tblData AS CentersTableType READONLY
AS
BEGIN

BEGIN
	UPDATE  tblCenters SET
	        [strLvl1]		  = table2.[strLvl1]
           ,[strLvl2]		  = table2.[strLvl2]
           ,[strLvl3]		  = table2.[strLvl3]
           ,[strLvl4]		  = table2.[strLvl4]
           ,[strLvl5]		  = table2.[strLvl5]
           ,[decOpenBalanceR] = table2.[decOpenBalanceR]
           ,[decOpenBalanceE] = table2.[decOpenBalanceE]
           ,[decBudProfit]	  = table2.[decBudProfit]
           ,[bitBudgetR]	  = table2.[bitBudgetR]
           ,[decPeriod1R]	  = table2.[decPeriod1R]
           ,[decPeriod2R]	  = table2.[decPeriod2R]
           ,[decPeriod3R]	  = table2.[decPeriod3R]
           ,[decPeriod4R]	  = table2.[decPeriod4R]
           ,[decPeriod5R]	  = table2.[decPeriod5R]
           ,[decPeriod6R]	  = table2.[decPeriod6R]
           ,[decPeriod7R]	  = table2.[decPeriod7R]
           ,[decPeriod8R]	  = table2.[decPeriod8R]
           ,[decPeriod9R]	  = table2.[decPeriod9R]
           ,[decPeriod10R]	  = table2.[decPeriod10R]
           ,[decPeriod11R]	  = table2.[decPeriod11R]
           ,[decPeriod12R]	  = table2.[decPeriod12R]
           ,[bitBudgetE]	  = table2.[bitBudgetE]
           ,[decPeriod1E]	  = table2.[decPeriod1E]
           ,[decPeriod2E]	  = table2.[decPeriod2E]
           ,[decPeriod3E]	  = table2.[decPeriod3E]
           ,[decPeriod4E]	  = table2.[decPeriod4E]
           ,[decPeriod5E]	  = table2.[decPeriod5E]
           ,[decPeriod6E]	  = table2.[decPeriod6E]
           ,[decPeriod7E]	  = table2.[decPeriod7E]
           ,[decPeriod8E]	  = table2.[decPeriod8E]
           ,[decPeriod9E]	  = table2.[decPeriod9E]
           ,[decPeriod10E]	  = table2.[decPeriod10E]
           ,[decPeriod11E]	  = table2.[decPeriod11E]
           ,[decPeriod12E]	  = table2.[decPeriod12E]
           ,[bitInactive]	  = table2.[bitInactive]
           ,[uidCenterID]     = table2.[uidCenterID]
	FROM tblCenters as table1
	INNER JOIN @tblData as table2
	ON table1.uidCenterID=table2.uidCenterID
END

BEGIN
   INSERT INTO [dbo].[tblCenters]
           ([strLvl1]
           ,[strLvl2]
           ,[strLvl3]
           ,[strLvl4]
           ,[strLvl5]
           ,[decOpenBalanceR]
           ,[decOpenBalanceE]
           ,[decBudProfit]
           ,[bitBudgetR]
           ,[decPeriod1R]
           ,[decPeriod2R]
           ,[decPeriod3R]
           ,[decPeriod4R]
           ,[decPeriod5R]
           ,[decPeriod6R]
           ,[decPeriod7R]
           ,[decPeriod8R]
           ,[decPeriod9R]
           ,[decPeriod10R]
           ,[decPeriod11R]
           ,[decPeriod12R]
           ,[bitBudgetE]
           ,[decPeriod1E]
           ,[decPeriod2E]
           ,[decPeriod3E]
           ,[decPeriod4E]
           ,[decPeriod5E]
           ,[decPeriod6E]
           ,[decPeriod7E]
           ,[decPeriod8E]
           ,[decPeriod9E]
           ,[decPeriod10E]
           ,[decPeriod11E]
           ,[decPeriod12E]
           ,[bitInactive]
           ,[uidCenterID]) 
	   SELECT  
	 [strLvl1]
           ,[strLvl2]
           ,[strLvl3]
           ,[strLvl4]
           ,[strLvl5]
           ,[decOpenBalanceR]
           ,[decOpenBalanceE]
           ,[decBudProfit]
           ,[bitBudgetR]
           ,[decPeriod1R]
           ,[decPeriod2R]
           ,[decPeriod3R]
           ,[decPeriod4R]
           ,[decPeriod5R]
           ,[decPeriod6R]
           ,[decPeriod7R]
           ,[decPeriod8R]
           ,[decPeriod9R]
           ,[decPeriod10R]
           ,[decPeriod11R]
           ,[decPeriod12R]
           ,[bitBudgetE]
           ,[decPeriod1E]
           ,[decPeriod2E]
           ,[decPeriod3E]
           ,[decPeriod4E]
           ,[decPeriod5E]
           ,[decPeriod6E]
           ,[decPeriod7E]
           ,[decPeriod8E]
           ,[decPeriod9E]
           ,[decPeriod10E]
           ,[decPeriod11E]
           ,[decPeriod12E]
           ,[bitInactive]
           ,[uidCenterID]
	  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblCenters WHERE uidCenterID= t.uidCenterID )
END

END
GO


/****** Object:  StoredProcedure [dbo].[prInvUOMs_Search]    Script Date: 03-07-2018 09:54:00 AM ******/
CREATE PROCEDURE [dbo].[prInvUOMs_Search]          
 @SQstrPartNumber nvarchar(50) = NULL        
AS          
BEGIN          
 SET NOCOUNT ON;

 SELECT strPartNumber, strFromUnit, strConversionType, decConversionFactor, strToUnit, decPricePercentage, lngUOMId, strUseFor, strBarCode, strBarCode2, bitInactive, bitDefaultUOM 
 FROM tblInvUOMs 
 WHERE ((strPartNumber = @SQstrPartNumber) OR (@SQstrPartNumber IS NULL))

END
GO

/****** Object:  StoredProcedure [dbo].[GetSalesPriceDataForUOM]    Script Date: 01-01-2019 04:24:00 AM ******/
CREATE Procedure [dbo].[GetSalesPriceDataForUOM]
@Part NVARCHAR(900),
@TransactionType NVARCHAR(900)
As
begin
SELECT tblInvPrice.strPricelist Pricelist, tblInvPrice.decSelling Selling, tblPricelists.intPriceListType PriceListType,
 CONVERT(DATE, tblPriceListsByDate.dteStartDate) StartDate, CONVERT(DATE, tblPriceListsByDate.dteFinishDate) FinishDate, 
 tblInvPrice.strUnit Unit, ISNULL(tblInvUOMs.decConversionFactor,1) ConversionFactor, ISNULL(tblInvUOMs.strConversionType,'Multiply') ConversionType,
  ISNULL(CASE strConversionType WHEN 'Multiply' THEN decConversionFactor ELSE 1/decConversionFactor END,tblInv.decSellFromStock) SellFromStock 
  FROM tblInv 
  INNER JOIN tblInvPrice 
  ON tblInv.strPartNumber = tblInvPrice.strPartNumber INNER JOIN tblPricelists 
  ON tblInvPrice.strPricelist = tblPricelists.strPricelist AND tblInvPrice.uidPriceBasedID = tblPricelists.uidPriceBasedID INNER JOIN tblPriceListsByDate 
  ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit AND tblInvUOMs.bitInactive = 0 
  WHERE (tblInvPrice.strPartNumber = @Part) AND ((tblInvUOMs.strUseFor = @TransactionType OR tblInvUOMs.strUseFor = 'Both') OR tblInvPrice.bitStockUnit = 1) 
  ORDER BY tblInvPrice.strPricelist, tblPriceListsByDate.uidPriceBasedID, tblInvPrice.bitStockUnit DESC, tblInvPrice.strUnit
end
GO

/****** Object:  StoredProcedure [dbo].[GetSalesHiddenColumns]    Script Date: 01-01-2019 04:24:00 AM ******/
CREATE PROCEDURE [dbo].[GetSalesHiddenColumns] @Part NVARCHAR(900)
	,@Unit NVARCHAR(900)
AS
BEGIN
	SELECT intType AS Type
		,bitAllowPriceChg AS AllowPriceChg
		,ISNULL(CASE strConversionType
				WHEN 'Multiply'
					THEN decConversionFactor
				ELSE 1 / decConversionFactor
				END, decSellFromStock) AS SellFromStock
		,bitAutoBuild AS AutoBuild
	FROM tblInv
	LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
		AND strFromUnit = @Unit
	WHERE tblInv.strPartNumber = @Part
END
GO

/****** Object:  StoredProcedure [dbo].[PrGetRebateAP]    Script Date: 03-01-2019 06:34:00 PM ******/
CREATE PROCEDURE [dbo].[PrGetRebateAP]
	@strVendName varchar(20)
AS
BEGIN

	SET NOCOUNT ON;

	SELECT tblRebateSetup.strRebateName
	,tblRebateSetup.strPartNumber
	,tblRebateSetup.dtRebateStartDate
	,tblRebateSetup.dtRebateEndDate
	,ISNULL(tblRebateSetup.decRebateVal,0) AS decRebateVal
	,tblRebateSetup.intRebateOrder
	,CASE 
		WHEN tblRebateSetup.intRebateOrder = 0	THEN 'Debit Note'
		WHEN tblRebateSetup.intRebateOrder = 1 	THEN 'Sales Invoice'
		WHEN tblRebateSetup.intRebateOrder = 2	THEN 'Sales Order'
	 END AS strRebateOrder
	,tblRebateSetup.strCustName
	,CASE 
		WHEN tblRebateSetup.intRebateOrder = 0
			THEN ISNULL((
						SELECT TOP 1 tblVendors.strVendDesc
						FROM tblVendors
						WHERE tblVendors.strVendName = tblRebateSetup.strCustName
						), '')
		WHEN tblRebateSetup.intRebateOrder IN (1,2)
			THEN ISNULL((
						SELECT TOP 1 tblCustomers.strCustDesc
						FROM tblCustomers
						WHERE tblCustomers.strCustName = tblRebateSetup.strCustName
						), '')
		END AS strCustDesc
		,tblRebateSetup.intRebateId
FROM tblRebateSetup
WHERE tblRebateSetup.strVendName = @strVendName

END
GO

/****** Object:  StoredProcedure [dbo].[PrGetRebateSummaryAP]    Script Date: 23-01-2020 06:34:00 PM ******/
CREATE PROCEDURE [dbo].[PrGetRebateSummaryAP]
	@strVendName varchar(20)
	,@dteStartDate datetime
	,@dteEndDate datetime

AS
BEGIN

	SET NOCOUNT ON;

	SELECT RS.strRebateName
	,RS.strPartNumber
	,RS.dtRebateStartDate
	,RS.dtRebateEndDate
	,ISNULL(RS.decRebateVal,0) AS decRebateVal
	,RS.intRebateOrder
	,CASE 
		WHEN RS.intRebateOrder = 0
			THEN 'Debit Note'
		WHEN RS.intRebateOrder = 1
			THEN 'Sales Order'
		WHEN RS.intRebateOrder = 2
			THEN 'Sales Invoice'
		END AS strRebateOrder
	,RS.strCustName
	,CASE 
		WHEN RS.intRebateOrder = 0
			THEN ISNULL((
						SELECT TOP 1 tblVendors.strVendDesc
						FROM tblVendors
						WHERE tblVendors.strVendName = RS.strCustName
						), '')
		WHEN RS.intRebateOrder = 1
			THEN ISNULL((
						SELECT TOP 1 tblCustomers.strCustDesc
						FROM tblCustomers
						WHERE tblCustomers.strCustName = RS.strCustName
						), '')
		END AS strCustDesc
		,RS.intRebateId
		,RP.dteInvoiceDate
		,RP.decInvoiceAmount
		,RP.strInvoiceNumber
		,RP.strProcessDocument
		,RP.intRebateProcessId
		,RPI.strItemCode
		,RPI.decRebateValue AS RebateInvoiceItemValue
		,RPI.strDocNumber AS RebateInvoiceDOCItemValue
		,RPI.strRebateItemCode
FROM tblRebateSetup RS
INNER JOIN tblRebateProcesses RP on (RS.intRebateId= RP.intRebateId)
INNER JOIN tblRebateProcessItems RPI on (RP.intRebateProcessId= RPI.intRebateProcessId)
WHERE RS.strVendName = @strVendName and RP.dteInvoiceDate between @dteStartDate and @dteEndDate

END
GO

/****** Object:  StoredProcedure [dbo].[LoadRebates]    Script Date: 07-01-2019 04:24:00 AM ******/
CREATE PROCEDURE [dbo].[LoadRebates] (
	@IsCheckedSearch BIT
	,@SearchText NVARCHAR(max)
	,@VendorList NVARCHAR(max)
	)
AS
BEGIN
	IF (@IsCheckedSearch = 1)
	BEGIN
		IF (@SearchText <> '')
		BEGIN
			SELECT DISTINCT tblRebateSetup.strPartNumber as [PartNumber]
			,tblInv.strDesc as [PartDesc]
			FROM tblRebateSetup
			INNER JOIN tblInv ON tblRebateSetup.strPartNumber = tblInv.strPartNumber
			WHERE (
					(tblRebateSetup.strPartNumber LIKE @SearchText or tblInv.strDesc like @SearchText)
					AND strVendName  IN (SELECT * FROM fnSplitStringAsTable(@VendorList, ',')) )
			ORDER BY tblRebateSetup.strPartNumber
		END
	END
	ELSE
	BEGIN
		SELECT DISTINCT tblRebateSetup.strPartNumber as [PartNumber]
			,tblInv.strDesc as [PartDesc]
		FROM tblRebateSetup
		INNER JOIN tblInv ON tblRebateSetup.strPartNumber = tblInv.strPartNumber
		WHERE strVendName  IN (SELECT * FROM fnSplitStringAsTable(@VendorList, ',')) 
		ORDER BY tblRebateSetup.strPartNumber
	END
END
GO


/****** Object:  StoredProcedure [dbo].[GetRebateIncomeReportData]    Script Date: 07-01-2019 04:24:00 AM ******/
CREATE PROCEDURE [dbo].[GetRebateIncomeReportData] (
	 @StartDate SMALLDATETIME
	,@FinishDate SMALLDATETIME
	,@IsSummary BIT
	,@RebateList NVARCHAR(max)
	,@VendorList NVARCHAR(MAX)
	)
AS
BEGIN
	IF (@IsSummary = 1) --Summary Report
	BEGIN
		SELECT dteInvoiceDate AS [JournalDate]
			,strProcessDocument AS [DocumentID]
			,tblRebateSetup.strPartNumber AS [PartNumber]
			,tblInv.strDesc AS [PartDesc]
			,tblRebateSetup.strVendName AS [SupplierCode]
			,tblVendors.strVendDesc AS [SupplierDesc]
			,tblRebateSetup.strRebateName AS [RebateName]
			,tblRebateSetup.intRebateId AS [RebateId]
			,Sum(tblRebateProcessItems.decInvoiceQty) AS Qty
			,Sum(tblRebateProcessItems.decInvoiceCost) AS Cost
			,tblRebateSetup.decRebateVal AS [RebatePerc]
			,tblRebateProcesses.decInvoiceAmount AS [RebateVal]
			,tblRebateProcesses.decInvoiceTaxAmount AS decInvoiceLineTaxAmount
			,(tblRebateProcesses.decInvoiceAmount + tblRebateProcesses.decInvoiceTaxAmount) AS decAmount

		FROM tblRebateProcesses
		INNER JOIN tblRebateSetup ON tblRebateProcesses.intRebateId = tblRebateSetup.intRebateId
		INNER JOIN tblRebateProcessItems ON tblRebateProcesses.intRebateProcessId = tblRebateProcessItems.intRebateProcessId
		INNER JOIN tblInv ON tblInv.strPartNumber = tblRebateSetup.strPartNumber
		INNER JOIN tblVendors ON tblVendors.strVendName = tblRebateSetup.strVendName
		WHERE tblVendors.strVendName IN (
				SELECT *
				FROM fnSplitStringAsTable(@VendorList, ',')
				)
			AND tblRebateSetup.strPartNumber IN (
				SELECT *
				FROM fnSplitStringAsTable(@RebateList, ',')
				)
			AND tblRebateProcesses.dteInvoiceDate BETWEEN @StartDate
				AND @FinishDate
		GROUP BY dteInvoiceDate
			,strProcessDocument
			,tblRebateSetup.strPartNumber
			,tblInv.strDesc
			,tblRebateSetup.strVendName
			,tblRebateSetup.intRebateId
			,tblVendors.strVendDesc
			,tblRebateSetup.strRebateName
			,tblRebateSetup.decRebateVal
			,tblRebateProcesses.decInvoiceAmount
			,tblRebateProcesses.decInvoiceTaxAmount
		ORDER BY [JournalDate]
			,[PartNumber]
			,[DocumentID]
	END
	ELSE
	BEGIN
		SELECT dteInvoiceDate AS [JournalDate]
			,strProcessDocument AS [DocumentID]
			,tblRebateSetup.strPartNumber AS [PartNumber]
			,tblInv.strDesc AS [PartDesc]
			,tblRebateSetup.strVendName AS [SupplierCode]
			,tblVendors.strVendDesc AS [SupplierDesc]
			,tblRebateSetup.strRebateName AS [RebateName]
			,tblRebateSetup.intRebateId AS [RebateId]
			,Sum(tblRebateProcessItems.decInvoiceQty) AS Qty
		    ,Sum(tblRebateProcessItems.decInvoiceCost) AS Cost
			,tblRebateProcessItems.strDocNumber AS strInvoiceNumber
			,(Select strVendInvNo from tblInvoiceDocP where tblInvoiceDocp.strInvPDocID=tblRebateProcessItems.strDocNumber) as strVendInv
			,tblRebateSetup.decRebateVal AS [RebatePerc]
			--,tblRebateProcesses.decInvoiceAmount AS [RebateVal]
			,Case when tblRebateProcesses.strProcessDocument Like '%DN%' then  Sum(-tblRebateProcessItems.decRebateValue) else Sum(tblRebateProcessItems.decRebateValue) end AS [RebateVal]
			,tblRebateProcesses.decInvoiceTaxAmount AS decInvoiceLineTaxAmount
			,(tblRebateProcesses.decInvoiceAmount + tblRebateProcesses.decInvoiceTaxAmount) AS decAmount
		FROM tblRebateProcesses
		INNER JOIN tblRebateSetup ON tblRebateProcesses.intRebateId = tblRebateSetup.intRebateId
		INNER JOIN tblRebateProcessItems ON tblRebateProcesses.intRebateProcessId = tblRebateProcessItems.intRebateProcessId
		INNER JOIN tblInv ON tblInv.strPartNumber = tblRebateSetup.strPartNumber
		INNER JOIN tblVendors ON tblVendors.strVendName = tblRebateSetup.strVendName
		WHERE tblVendors.strVendName IN (
				SELECT *
				FROM fnSplitStringAsTable(@VendorList, ',')
				)
			AND tblRebateSetup.strPartNumber IN (
				SELECT *
				FROM fnSplitStringAsTable(@RebateList, ',')
				)
			AND tblRebateProcesses.dteInvoiceDate BETWEEN @StartDate
				AND @FinishDate
		GROUP BY dteInvoiceDate
			,strProcessDocument
			,tblRebateSetup.strPartNumber
			,tblInv.strDesc
			,tblRebateSetup.strVendName
			,tblRebateSetup.intRebateId
			,tblVendors.strVendDesc
			,tblRebateSetup.strRebateName
			,tblRebateSetup.decRebateVal
			,tblRebateProcesses.decInvoiceAmount
			,tblRebateProcesses.decInvoiceTaxAmount
			,tblRebateProcessItems.strDocNumber
		ORDER BY [PartNumber]
			,[SupplierCode]
			,[JournalDate]
			,[DocumentID]
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetRebateProcessData]    Script Date: 23-01-2020 04:24:00 AM ******/
CREATE PROCEDURE [dbo].[GetRebateProcessData] 
	 @SQVendorNumber AS NVARCHAR(max)
	,@SQStartDate AS DATETIME
	,@SQEndDate AS DATETIME
AS
BEGIN
	SELECT tblInvoiceDocPDT.strPartNumber AS [Item_Code]
		,tblInvoiceDocPDT.strPartDesc AS [Item_Description]
		,tblInvoiceDocP.dteJournalDate AS [Transaction_Date]
		,tblInvoiceDocP.strInvPDocID AS [Document_Number]
		,ISNULL(tblInvTracking.lngJourID, 0) AS [lngJourID]
		,tblInvoiceDocPDT.decBuyQty AS [Qty]
		,CAST(ISNULL(tblInvTrackingDT.decRevenue, 0) AS NUMERIC(16, 2)) AS Revenue
		,CAST(CASE 
				WHEN ISNULL(tblInvTrackingDT.decCOGS, 0) = 0
					THEN ISNULL(tblInvTrackingDT.decValue, 0)
				ELSE ISNULL(tblInvTrackingDT.decCOGS, 0)
				END AS NUMERIC(16, 2)) AS Cost
		,CAST(ISNULL(tblInvTrackingDT.decRevenue - tblInvTrackingDT.decCOGS, 0) AS NUMERIC(16, 2)) AS PROFIT
		,CASE 
			WHEN (tblInvoiceDocPDT.intType = 1)
				THEN 'Stock Item'
			WHEN (tblInvoiceDocPDT.intType = 4)
				THEN 'Service Item'
			ELSE CASE 
					WHEN (tblInvoiceDocPDT.intType = 11)
						THEN 'Buyout Item'
					ELSE 'Journal Code'
					END
			END AS [Item_Type]
		,ISNULL(tblInv.strCategory, '') AS [Item_Category]
		,ISNULL(tblInv.strAcctSet, '') AS [Account_Set]
		,tblInvoiceDocP.strUserName AS [User_Name]
		,CASE 
			WHEN (tblInvTrackingDT.decRevenue <> 0)
				THEN (CAST(((tblInvTrackingDT.decRevenue - tblInvTrackingDT.decCOGS) / tblInvTrackingDT.decRevenue * 100) AS NUMERIC(16, 2)))
			ELSE 0
			END AS Margin
		,tblRebateSetup.strPartNumber
		,tblRebateSetup.intRebateId
		,tblRebateSetup.intRebateOrder
		,tblRebateSetup.strRebateName
		,tblRebateSetup.strCustName
		,tblRebateSetup.decRebateVal
		,tblRebateSetup.dtRebateStartDate
		,tblRebateSetup.dtRebateEndDate
		,CAST((((CASE 
				WHEN ISNULL(tblInvTrackingDT.decCOGS, 0) = 0
					THEN ISNULL(tblInvTrackingDT.decValue, 0)
				ELSE ISNULL(tblInvTrackingDT.decCOGS, 0)
				END) * tblRebateSetup.decRebateVal)/100) AS NUMERIC(16, 2)) AS InvoiceRebateVal
		,tblInvoiceDocP.strVendInvNo
		,tblInvoiceDocPDT.intLineNo AS [intLineNo]
		,(Select Max(isnull(tblRebateProcessItems.dteRowUpdate,'')) from tblRebateProcessItems inner join tblRebateProcesses on tblRebateProcessItems.intRebateProcessId=tblRebateProcesses.intRebateProcessId 
		and tblRebateProcesses.intRebateId=tblRebateSetup.intRebateId
		AND  tblRebateProcessItems.strItemCode=tblInvoiceDocPDT.strPartNumber
		AND  tblRebateProcessItems.strDocNumber=tblInvoiceDocP.strInvPDocID) as LastProcessDate
	FROM tblInvoiceDocPDT
	INNER JOIN tblInvoiceDocP ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocP.strInvPDocID
	INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber
		AND tblInvoiceDocPDT.strLocation = tblInv.strLocName
	LEFT JOIN tblInvTrackingDT ON tblInvTrackingDT.strPartNumber = tblInvoiceDocPDT.strPartNumber
		AND tblInvTrackingDT.strSource = tblInvoiceDocPDT.strInvPDocID
		AND tblInvTrackingDT.intLineNo = tblInvoiceDocPDT.intLineNo
		AND tblInvTrackingDT.lngInvTrackID = (
			SELECT MAX(lngInvTrackID)
			FROM tblInvTrackingDT
			WHERE strSource = tblInvoiceDocP.strInvPDocID
			)
	LEFT JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
	Inner join tblRebateSetupItems on tblRebateSetupItems.strPartNumber= tblInvoiceDocPDT.strPartNumber
	Inner join tblRebateSetup On tblRebateSetupItems.intRebateId=tblRebateSetup.intRebateId and tblRebateSetup.strVendName =tblInvoiceDocP.strVendName
	WHERE tblInvoiceDocP.strVendName = @SQVendorNumber
		AND tblInvoiceDocP.dteJournalDate BETWEEN @SQStartDate
		AND @SQEndDate	
		AND tblRebateSetup.dtRebateStartDate<= tblInvoiceDocP.dteJournalDate and tblRebateSetup.dtRebateEndDate>=tblInvoiceDocP.dteJournalDate
	ORDER BY [Transaction_Date]
		,[Item_Code]
		,[Document_Number]

END
GO

/****** Object:  StoredProcedure [dbo].[AddRebateHeader]    Script Date: 14-10-2020 04:24:00 AM ******/
CREATE Procedure [dbo].[AddRebateHeader]
 @SQintRebateId int
,@SQstrSupplierCode nvarchar(50)
,@SQstrSupplierName nvarchar(50)
,@SQdteInvoiceDate datetime
,@SQstrInvoiceNumber nvarchar(Max)
,@SQdecInvoiceAmount money
,@SQstrProcessDocument nvarchar(50)
,@SQdecInvoiceTaxAmount money
,@SQdteProcessDate datetime
,@SQstrUserName nvarchar(20)
As
BEGIN
	INSERT INTO tblRebateProcesses
	OUTPUT Inserted.intRebateProcessId
	VALUES (
		@SQintRebateId
		,@SQstrSupplierCode
		,@SQstrSupplierName
		,@SQdteInvoiceDate
		,@SQstrInvoiceNumber
		,@SQdecInvoiceAmount
		,@SQstrProcessDocument
		,@SQdecInvoiceTaxAmount
		,@SQdteProcessDate
		,@SQstrUserName
		)
END
GO

/****** Object:  StoredProcedure [dbo].[AddRebateDetails]    Script Date: 14-10-2020 04:24:00 AM ******/
CREATE Procedure [dbo].[AddRebateDetails]
	@SQintRebateProcessId int
	,@SQstrItemCode nvarchar(50)
	,@SQdecRebateValue money
	,@SQstrDocNumber nvarchar(100)
	,@SQstrRebateItemCode  nvarchar(50) 
	,@SQdecInvoiceQty money
	,@SQdecInvoiceCost money
	,@SQintInvoiceLineNo int
	,@SQdteProcessDate datetime
	,@SQstrUserName nvarchar(20)
As
BEGIN
	INSERT INTO tblRebateProcessItems (
		intRebateProcessId
		,strItemCode
		,decRebateValue
		,strDocNumber
		,strRebateItemCode
		,decInvoiceQty
		,decInvoiceCost
		,intInvoiceLineNo
		,dteRowUpdate
		,strUserName
		)
	VALUES (
		@SQintRebateProcessId
		,@SQstrItemCode
		,@SQdecRebateValue
		,@SQstrDocNumber
		,@SQstrRebateItemCode
		,@SQdecInvoiceQty
		,@SQdecInvoiceCost
		,@SQintInvoiceLineNo
		,@SQdteProcessDate
		,@SQstrUserName
		)
END
GO

/****** Object:  StoredProcedure [dbo].[GetInventoryDataForPartNumber]    Script Date: 14-10-2020 04:24:00 AM ******/
CREATE Procedure [dbo].[GetInventoryDataForPartNumber]
@SQPart as nvarchar(Max),
@SQUnit as nvarchar(Max)
AS

BEGIN

SELECT ISNULL(CASE strConversionType
			WHEN 'Multiply'
				THEN decConversionFactor
			ELSE 1 / decConversionFactor
			END, decSellFromStock) AS SellFromStock,
			intType AS Type,
            bitAllowPriceChg AS AllowPriceChg,
            decStandardCost AS StandardCost,
            decLastPPUnit AS LastPPUnit,
            tblInv.strPartNumber AS PartNumber,
            strCategory AS Category,
            strSubCategory AS SubCategory
FROM tblInv
LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
	AND strFromUnit = @SQUnit
WHERE tblInv.strPartNumber = @SQPart

END
GO

/****** Object:  StoredProcedure [dbo].[GetInvSellFromStock]    Script Date: 14-10-2020 04:24:00 AM ******/
CREATE PROCEDURE GetInvSellFromStock
	@FromUnit nvarchar(15), 
	@PartNumber nvarchar(50)
AS
BEGIN
	SELECT ISNULL(CASE strConversionType
				WHEN 'Multiply'
					THEN decConversionFactor
				ELSE 1 / decConversionFactor
				END, decSellFromStock) AS decSellFromStock
	FROM tblInv
	LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber AND strFromUnit = @FromUnit
	WHERE tblInv.strPartNumber = @PartNumber
END
GO

/****** Object:  StoredProcedure [dbo].[SaveUserLiveLocation]    Script Date: 2020-09-14 ******/
CREATE PROCEDURE [dbo].[SaveUserLiveLocation]
@Latitude float,
@Longitude float,
@UserName nvarchar(40),
@Email nvarchar(100) = null
AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @g geography;
	DECLARE @point nvarchar(50)  =''
	SET @point = (select 'POINT('+CONVERT(varchar(10), @Longitude)+ '  ' +CONVERT(varchar(10), @Latitude)+')')
	SET @g = geography::STGeomFromText(@point, 4326);

	UPDATE tblUsers set geoCoord = @g, dteLocationDateTime = GETUTCDATE() where strUserName = @UserName and strEmail = @Email
END
GO

/****** Object:  StoredProcedure [dbo].[GetInventoryCount]    Script Date: 2020-10-14 ******/
CREATE   PROCEDURE [dbo].[GetInventoryCount]
	@MinimumUpdatedDate DateTime = null
AS
BEGIN
	SET NOCOUNT ON;	
	
	SELECT COUNT(*) 
	FROM tblInv	LEFT OUTER JOIN tblInvImg ON tblInv.strPartNumber = tblInvImg.strPartNumber 
	WHERE intType <> 5 AND (dbo.tblInv.bitInactive = 0) AND (@MinimumUpdatedDate IS NULL OR dteLastUpdated > @MinimumUpdatedDate)
		AND (tblInvImg.bitDefaultImage IS NULL OR tblInvImg.bitDefaultImage = 1);
END
GO

/****** Object:  StoredProcedure [dbo].[DeleteExistingOpenLayby]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[DeleteExistingOpenLayby] @DocNumber NVARCHAR(100)
AS
BEGIN
	DECLARE @CustTransId NVARCHAR(100)
	DECLARE @CustPayIds NVARCHAR(500)

	SELECT @CustTransId = lngCustTrID
	FROM tblCustTrans
	WHERE strOrdDocID = @DocNumber

	SELECT @CustPayIds = COALESCE(@CustPayIds + ',', '') + CAST(lngCustPayID AS VARCHAR(5))
	FROM tblCustTransDt
	WHERE lngCustTrID = @CustTransId

	DELETE
	FROM tblJournal
	WHERE lngJourID IN (
			SELECT lngJourID
			FROM tblCustPay
			WHERE lngCustPayID IN (
					SELECT *
					FROM [dbo].[fnSplitStringAsTable](@CustPayIds, ',')
					)
			)

	DELETE
	FROM tblBankRecTrans
	WHERE lngJourID IN (
			SELECT lngJourID
			FROM tblCustPay
			WHERE lngCustPayID IN (
					SELECT *
					FROM [dbo].[fnSplitStringAsTable](@CustPayIds, ',')
					)
			)

	DELETE
	FROM tblCustTrans
	WHERE strOrdDocID = @DocNumber

	DELETE
	FROM tblCustTransDt
	WHERE lngCustTrID = @CustTransId

	DELETE
	FROM tblCustPay
	WHERE lngCustPayID IN (
			SELECT *
			FROM [dbo].[fnSplitStringAsTable](@CustPayIds, ',')
			)

	DELETE
	FROM tblOrderDocDT
	WHERE strOrdDocID = @DocNumber

	DELETE
	FROM tblOrderDoc
	WHERE strOrdDocID = @DocNumber

	DELETE
	FROM tblInvoiceDocREV
	WHERE strInvDocID = @DocNumber
END
GO

/****** Object:  StoredProcedure [dbo].[InsertCustTransData]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[InsertCustTransData] @tblData
AS
CustTransTableType READONLY AS

BEGIN
	INSERT INTO [dbo].[tblCustTrans] (
		[lngCustTrID]
		,[strCustName]
		,[dteSystemDate]
		,[dteJournalDate]
		,[strUserName]
		,[strInvDocID]
		,[strInvDepNumber]
		,[strSoNumber]
		,[intTransType]
		,[decInvAmount]
		,[decInvAmountF]
		,[strCurrency]
		,[bitIsForeign]
		,[decExchange]
		,[bitDocReRated]
		,[dteReRated]
		,[decReRateCumltveValue]
		,[bitSettled]
		,[decDiscAvail]
		,[decDiscAvailF]
		,[dteDiscExpires]
		,[dteDueDate]
		,[strJEDocID]
		,[strOrdDocID]
		)
	SELECT [lngCustTrID]
		,[strCustName]
		,[dteSystemDate]
		,[dteJournalDate]
		,[strUserName]
		,[strInvDocID]
		,[strInvDepNumber]
		,[strSoNumber]
		,[intTransType]
		,[decInvAmount]
		,[decInvAmountF]
		,[strCurrency]
		,[bitIsForeign]
		,[decExchange]
		,[bitDocReRated]
		,[dteReRated]
		,[decReRateCumltveValue]
		,[bitSettled]
		,[decDiscAvail]
		,[decDiscAvailF]
		,[dteDiscExpires]
		,[dteDueDate]
		,[strJEDocID]
		,[strOrdDocID]
	FROM @tblData
END
GO

/****** Object:  StoredProcedure [dbo].[InsertCustPayData]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[InsertCustPayData] @tblData
AS
CustPayTableType READONLY AS

BEGIN
	INSERT INTO [dbo].[tblCustPay] (
		[lngCustPayID]
		,[dteSystemDate]
		,[dteJournalDate]
		,[strUserName]
		,[lngJourID]
		,[strCustName]
		,[strSource]
		,[intBankAcct]
		,[decAmount]
		,[bitReversed]
		,[bitReversal]
		,[strComment]
		,[intPayBy]
		,[decDeposit]
		,[intDept]
		,[strCurrency]
		,[bitIsForeign]
		,[decExchange]
		,[decAmountF]
		,[decDepositF]
		,[bitFromInvPaymt]
		,[blnForeignBank]
		,[decBankExchange]
		,[strBankCurrency]
		,[decBankAmount]
		,[decBankAmountF]
		,[strWHTaxCode]
		,[decWHPerc]
		,[decWHAmt]
		,[decWHAmtF]
		,[strPaidBy]
		)
	SELECT [lngCustPayID]
		,[dteSystemDate]
		,[dteJournalDate]
		,[strUserName]
		,[lngJourID]
		,[strCustName]
		,[strSource]
		,[intBankAcct]
		,[decAmount]
		,[bitReversed]
		,[bitReversal]
		,[strComment]
		,[intPayBy]
		,[decDeposit]
		,[intDept]
		,[strCurrency]
		,[bitIsForeign]
		,[decExchange]
		,[decAmountF]
		,[decDepositF]
		,[bitFromInvPaymt]
		,[blnForeignBank]
		,[decBankExchange]
		,[strBankCurrency]
		,[decBankAmount]
		,[decBankAmountF]
		,[strWHTaxCode]
		,[decWHPerc]
		,[decWHAmt]
		,[decWHAmtF]
		,[strPaidBy]
	FROM @tblData
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblOrderDoc]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblOrderDoc] @tblData
AS
OrderDocTableType READONLY AS

BEGIN
	INSERT INTO [dbo].[tblOrderDoc] (
		[strOrdDocID]
		,[intDocType]
		,[dteSystemDate]
		,[dteJournalDate]
		,[dteRequired]
		,[strUserName]
		,[strCustName]
		,[strSoldTo]
		,[strShipTo]
		,[strReference]
		,[decSubTotal]
		,[decVAT]
		,[decTotal]
		,[strNotes]
		,[bitPrinted]
		,[bitEmailed]
		,[bitCleared]
		,[strSalesName]
		,[strAddInfo]
		,[strCurrency]
		,[bitIsForeign]
		,[decSubTotalF]
		,[decVATF]
		,[decTotalF]
		,[decExchange]
		,[strTerm]
		,[intDept]
		,[strField1]
		,[strField2]
		,[strField3]
		,[strField4]
		,[strField5]
		,[strField6]
		,[strField7]
		,[strField8]
		,[strField9]
		,[strField10]
		,[strField11]
		,[strField12]
		,[strSubFormated]
		,[strVATFormatted]
		,[strTotFormatted]
		,[dteField13]
		,[dteField14]
		,[decDiscPerc]
		,[decDiscAmt]
		,[decDiscAmtF]
		,[strDiscFormatted]
		,[strOrdFQDocID]
		,[strStatusTypeCode]
		,[bitBookmark]
		,[strCNReasonCode]
		,[bitIsRepair]
		,[strDelMethodCode]
		,[decTotalWeight]
		,[decTotalVolWeight]
		,[strSOReasonCode]
		,[decDeliveryCost]
		,[decDeliveryCostF]
		,[strDeliveryCostFormatted]
		,[bitShipmentsAuditTrail]
		,[intRevisionNumber]
		,[bitIsLayby]
		,[strStoreNumber]
		,[strEDI]
		,[CustomerSignature]
		,[bitIsFromWorkshop]
		,[bitNewsSubscribed]
		,[strEmail]
		,[uidSessionID]
		,[dteRowUpdated]
		)
	SELECT [strOrdDocID]
		,[intDocType]
		,[dteSystemDate]
		,[dteJournalDate]
		,[dteRequired]
		,[strUserName]
		,[strCustName]
		,[strSoldTo]
		,[strShipTo]
		,[strReference]
		,[decSubTotal]
		,[decVAT]
		,[decTotal]
		,[strNotes]
		,[bitPrinted]
		,[bitEmailed]
		,[bitCleared]
		,[strSalesName]
		,[strAddInfo]
		,[strCurrency]
		,[bitIsForeign]
		,[decSubTotalF]
		,[decVATF]
		,[decTotalF]
		,[decExchange]
		,[strTerm]
		,[intDept]
		,[strField1]
		,[strField2]
		,[strField3]
		,[strField4]
		,[strField5]
		,[strField6]
		,[strField7]
		,[strField8]
		,[strField9]
		,[strField10]
		,[strField11]
		,[strField12]
		,[strSubFormated]
		,[strVATFormatted]
		,[strTotFormatted]
		,[dteField13]
		,[dteField14]
		,[decDiscPerc]
		,[decDiscAmt]
		,[decDiscAmtF]
		,[strDiscFormatted]
		,[strOrdFQDocID]
		,[strStatusTypeCode]
		,[bitBookmark]
		,[strCNReasonCode]
		,[bitIsRepair]
		,[strDelMethodCode]
		,[decTotalWeight]
		,[decTotalVolWeight]
		,[strSOReasonCode]
		,[decDeliveryCost]
		,[decDeliveryCostF]
		,[strDeliveryCostFormatted]
		,[bitShipmentsAuditTrail]
		,[intRevisionNumber]
		,[bitIsLayby]
		,[strStoreNumber]
		,[strEDI]
		,[CustomerSignature]
		,[bitIsFromWorkshop]
		,[bitNewsSubscribed]
		,[strEmail]
		,[uidSessionID]
		,[dteRowUpdated]
	FROM @tblData
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblOrderDocDT]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblOrderDocDT] @tblData
AS
OrderDocDTTableTypeForPOS READONLY AS

BEGIN
	INSERT INTO [dbo].[tblOrderDocDT] (
		[strOrdDocID]
		,[intLineNo]
		,[strPartNumber]
		,[strLocation]
		,[strPartDesc]
		,[decQty]
		,[decQtyRemaining]
		,[strUnit]
		,[intType]
		,[decPriceEaExc]
		,[decLineTotExc]
		,[decLineTaxAmt]
		,[decPriceEaInc]
		,[decLineTotInc]
		,[strTaxCode]
		,[imgTaxObj]
		,[strCurrency]
		,[bitIsForeign]
		,[decPriceEaExcF]
		,[decLineTotExcF]
		,[decLineTaxAmtF]
		,[decEaIncTaxF]
		,[decTotIncTaxF]
		,[strInvField1]
		,[strInvField2]
		,[strInvField3]
		,[strInvField4]
		,[strInvField5]
		,[strInvField6]
		,[strLineField1]
		,[strLineField2]
		,[strLineField3]
		,[strLineField4]
		,[strLineField5]
		,[strLineField6]
		,[strLineField7]
		,[strLineField8]
		,[strLineField9]
		,[strLineField10]
		,[strLineField11]
		,[strLineField12]
		,[decLineDiscPerc]
		,[decLineDiscAmt]
		,[decLineDiscAmtF]
		,[bitDiscountTax]
		,[decStockQty]
		,[strStockUnit]
		,[decStockQtyRemain]
		,[strSalesName]
		,[strPartExtendedDesc]
		,[decBuyoutCost]
		,[decItemWeight]
		,[decVolumetricWeight]
		,[bitContainerItem]
		,[bitDelCost]
		,[intBillingMethod]
		,[uidTransactionFieldID]
		,[uidContainerItem]
		)
	SELECT [strOrdDocID]
		,[intLineNo]
		,[strPartNumber]
		,[strLocation]
		,[strPartDesc]
		,[decQty]
		,[decQtyRemaining]
		,[strUnit]
		,[intType]
		,[decPriceEaExc]
		,[decLineTotExc]
		,[decLineTaxAmt]
		,[decPriceEaInc]
		,[decLineTotInc]
		,[strTaxCode]
		,[imgTaxObj]
		,[strCurrency]
		,[bitIsForeign]
		,[decPriceEaExcF]
		,[decLineTotExcF]
		,[decLineTaxAmtF]
		,[decEaIncTaxF]
		,[decTotIncTaxF]
		,[strInvField1]
		,[strInvField2]
		,[strInvField3]
		,[strInvField4]
		,[strInvField5]
		,[strInvField6]
		,[strLineField1]
		,[strLineField2]
		,[strLineField3]
		,[strLineField4]
		,[strLineField5]
		,[strLineField6]
		,[strLineField7]
		,[strLineField8]
		,[strLineField9]
		,[strLineField10]
		,[strLineField11]
		,[strLineField12]
		,[decLineDiscPerc]
		,[decLineDiscAmt]
		,[decLineDiscAmtF]
		,[bitDiscountTax]
		,[decStockQty]
		,[strStockUnit]
		,[decStockQtyRemain]
		,[strSalesName]
		,[strPartExtendedDesc]
		,[decBuyoutCost]
		,[decItemWeight]
		,[decVolumetricWeight]
		,[bitContainerItem]
		,[bitDelCost]
		,[intBillingMethod]
		,[uidTransactionFieldID]
		,[uidContainerItem]
	FROM @tblData
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblCustTransDT]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblCustTransDT] @tblData
AS
CustTransDTTableType READONLY AS

BEGIN
	INSERT INTO [dbo].[tblCustTransDT] (
		[dteJournalDate]
		,[lngCustTrID]
		,[lngCustPayID]
		,[decAmount]
		,[intTransType]
		,[decAmtOwingAtTime]
		,[bitReversed]
		,[dteIntDate]
		,[decAmountF]
		,[decAmtOwingAtTimeF]
		,[bitIsForeign]
		)
	SELECT [dteJournalDate]
		,[lngCustTrID]
		,[lngCustPayID]
		,[decAmount]
		,[intTransType]
		,[decAmtOwingAtTime]
		,[bitReversed]
		,[dteIntDate]
		,[decAmountF]
		,[decAmtOwingAtTimeF]
		,[bitIsForeign]
	FROM @tblData
END
GO

/****** Object:  StoredProcedure [dbo].[InsertJournal]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[InsertJournal] @tblData
AS
JournalTableType READONLY AS

BEGIN
	INSERT INTO [dbo].[tblJournal] (
		[lngJourID]
		,[strUserName]
		,[dteSystemDate]
		,[dteJournalDate]
		,[intModule]
		,[intEntryType]
		,[strSource]
		,[strComment]
		,[strCuVeGeInID]
		,[intPayType]
		,[bitIsTobeReversed]
		,[dteReverseDate]
		,[bitIsReversed]
		)
	SELECT [lngJourID]
		,[strUserName]
		,[dteSystemDate]
		,[dteJournalDate]
		,[intModule]
		,[intEntryType]
		,[strSource]
		,[strComment]
		,[strCuVeGeInID]
		,[intPayType]
		,[bitIsTobeReversed]
		,[dteReverseDate]
		,[bitIsReversed]
	FROM @tblData
END
GO

/****** Object:  StoredProcedure [dbo].[InsertJournalEnt]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[InsertJournalEnt] @tblData
AS
JournalEntTableType READONLY AS

BEGIN
	INSERT INTO [dbo].[tblJournalEnt] (
		[lngJourID]
		,[intLineNum]
		,[intGLNumber]
		,[decAmount]
		,[decDebits]
		,[decCredits]
		,[strComment]
		,[intDept]
		,[decAmountF]
		,[decDebitsF]
		,[decCreditsF]
		,[strCurrency]
		,[decExchange]
		,[bitForeignAcct]
		,[decAllocatedAmtToDate]
		,[decUnAllocatedAmt]
		,[strFormula]
		,[bitVerified]
		)
	SELECT [lngJourID]
		,[intLineNum]
		,[intGLNumber]
		,[decAmount]
		,[decDebits]
		,[decCredits]
		,[strComment]
		,[intDept]
		,[decAmountF]
		,[decDebitsF]
		,[decCreditsF]
		,[strCurrency]
		,[decExchange]
		,[bitForeignAcct]
		,[decAllocatedAmtToDate]
		,[decUnAllocatedAmt]
		,[strFormula]
		,[bitVerified]
	FROM @tblData
END
GO

/****** Object:  StoredProcedure [dbo].[GetLaybyForSync]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[GetLaybyForSync] @SyncDate AS DATETIME = NULL
AS
BEGIN
	DECLARE @SQL NVARCHAR(Max)
	DECLARE @AllColumns VARCHAR(MAX);

	SELECT @AllColumns = COALESCE(@AllColumns + ',', '') + c.name
	FROM sys.table_types tt
	INNER JOIN sys.columns c ON c.object_id = tt.type_table_object_id
		AND tt.name = 'OrderDocTableType'

	SET @SQL = 'SELECT ' + @AllColumns + '  
		FROM tblOrderDoc 
		WHERE  tblOrderDoc.intDocType = 3'

	IF (@SyncDate IS NOT NULL)
	BEGIN
		SET @SQL = @SQL + ' AND dteRowUpdated >= ''' + convert(VARCHAR, @SyncDate, 20) + ''''
	END

	EXECUTE SP_EXECUTESQL @SQL
END
GO

/****** Object:  StoredProcedure [dbo].[DownloadOrderDocDtData]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[DownloadOrderDocDtData] @DocNumber NVARCHAR(100)
AS
BEGIN
	DECLARE @SQL NVARCHAR(Max)
	DECLARE @AllColumns VARCHAR(MAX);

	SELECT @AllColumns = COALESCE(@AllColumns + ',', '') + c.name
	FROM sys.table_types tt
	INNER JOIN sys.columns c ON c.object_id = tt.type_table_object_id
		AND tt.name = 'OrderDocDTTableTypeForPOS'

	SET @SQL = 'SELECT ' + @AllColumns + '  
		FROM tblOrderDocDT 
		WHERE strOrdDocID = ''' + @DocNumber + ''''

	EXECUTE SP_EXECUTESQL @SQL
END
GO

/****** Object:  StoredProcedure [dbo].[DownloadCustTransData]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[DownloadCustTransData] @DocNumber NVARCHAR(100)
AS
BEGIN
	DECLARE @SQL NVARCHAR(Max)
	DECLARE @AllColumns VARCHAR(MAX);

	SELECT @AllColumns = COALESCE(@AllColumns + ',', '') + c.name
	FROM sys.table_types tt
	INNER JOIN sys.columns c ON c.object_id = tt.type_table_object_id
		AND tt.name = 'CustTransTableType'

	SET @SQL = 'SELECT ' + @AllColumns + '  
		FROM tblCustTrans 
		WHERE strOrdDocID = ''' + @DocNumber + ''''

	EXECUTE SP_EXECUTESQL @SQL
END
GO

/****** Object:  StoredProcedure [dbo].[DownloadCustTransDTData]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[DownloadCustTransDTData] @CustTransId BIGINT
AS
BEGIN
	DECLARE @SQL NVARCHAR(Max)
	DECLARE @AllColumns VARCHAR(MAX);

	SELECT @AllColumns = COALESCE(@AllColumns + ',', '') + c.name
	FROM sys.table_types tt
	INNER JOIN sys.columns c ON c.object_id = tt.type_table_object_id
		AND tt.name = 'CustTransDTTableType'

	SET @SQL = 'SELECT ' + @AllColumns + '  
		FROM tblCustTransDt  
		WHERE lngCustTrID  = ''' + cast(@CustTransId AS VARCHAR) + ''''

	EXECUTE SP_EXECUTESQL @SQL
END
GO

/****** Object:  StoredProcedure [dbo].[DownloadCustPayData]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[DownloadCustPayData] @CustPayIds NVARCHAR(500)
AS
BEGIN
	DECLARE @SQL NVARCHAR(Max)
	DECLARE @AllColumns VARCHAR(MAX);

	SELECT @AllColumns = COALESCE(@AllColumns + ',', '') + c.name
	FROM sys.table_types tt
	INNER JOIN sys.columns c ON c.object_id = tt.type_table_object_id
		AND tt.name = 'CustPayTableType'

	SET @SQL = 'SELECT ' + @AllColumns + '  
		FROM tblCustPay where lngCustPayID  IN (SELECT *
            FROM [dbo].[fnSplitStringAsTable](''' + @CustPayIds + ''', '',''))'

	EXECUTE SP_EXECUTESQL @SQL
END
GO

/****** Object:  StoredProcedure [dbo].[DownloadJournalData]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[DownloadJournalData] @JournalIds NVARCHAR(500)
AS
BEGIN
	DECLARE @SQL NVARCHAR(Max)
	DECLARE @AllColumns VARCHAR(MAX);

	SELECT @AllColumns = COALESCE(@AllColumns + ',', '') + c.name
	FROM sys.table_types tt
	INNER JOIN sys.columns c ON c.object_id = tt.type_table_object_id
		AND tt.name = 'JournalTableType'

	SET @SQL = 'SELECT ' + @AllColumns + '  
		FROM tblJournal  where lngJourID  IN (SELECT *
            FROM [dbo].[fnSplitStringAsTable](''' + @JournalIds + ''', '',''))'

	EXECUTE SP_EXECUTESQL @SQL
END
GO

/****** Object:  StoredProcedure [dbo].[DownloadJournalEntData]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[DownloadJournalEntData] @JournalIds NVARCHAR(500)
AS
BEGIN
	DECLARE @SQL NVARCHAR(Max)
	DECLARE @AllColumns VARCHAR(MAX);

	SELECT @AllColumns = COALESCE(@AllColumns + ',', '') + c.name
	FROM sys.table_types tt
	INNER JOIN sys.columns c ON c.object_id = tt.type_table_object_id
		AND tt.name = 'JournalEntTableType'

	SET @SQL = 'SELECT ' + @AllColumns + '  
		FROM tblJournalEnt  where lngJourID   IN (SELECT *
            FROM [dbo].[fnSplitStringAsTable](''' + @JournalIds + ''', '',''))'

	EXECUTE SP_EXECUTESQL @SQL
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblJournalEnt]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblJournalEnt] @tblData
AS
JournalEntTableType READONLY AS

BEGIN
	INSERT INTO [dbo].[tblJournalEnt] (
		[lngJourID]
		,[intLineNum]
		,[intGLNumber]
		,[decAmount]
		,[decDebits]
		,[decCredits]
		,[strComment]
		,[intDept]
		,[decAmountF]
		,[decDebitsF]
		,[decCreditsF]
		,[strCurrency]
		,[decExchange]
		,[bitForeignAcct]
		,[decAllocatedAmtToDate]
		,[decUnAllocatedAmt]
		,[strFormula]
		,[bitVerified]
		)
	SELECT [lngJourID]
		,[intLineNum]
		,[intGLNumber]
		,[decAmount]
		,[decDebits]
		,[decCredits]
		,[strComment]
		,[intDept]
		,[decAmountF]
		,[decDebitsF]
		,[decCreditsF]
		,[strCurrency]
		,[decExchange]
		,[bitForeignAcct]
		,[decAllocatedAmtToDate]
		,[decUnAllocatedAmt]
		,[strFormula]
		,[bitVerified]
	FROM @tblData
END
GO

/****** Object:  StoredProcedure [dbo].[GetOrderDocIdByUid]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[GetOrderDocIdByUid] @uidSessionID UNIQUEIDENTIFIER
AS
BEGIN
	SELECT strOrdDocID
	FROM tblOrderDoc
	WHERE uidSessionID = @uidSessionID
END
GO

/****** Object:  StoredProcedure [dbo].[GetCustTransIDByDocNumber]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[GetCustTransIDByDocNumber] (@DocNumber NVARCHAR(50))
AS
BEGIN
	SELECT lngCustTrID
	FROM tblcusttrans
	WHERE strSoNumber = @DocNumber
		OR strInvDocID = @DocNumber
END
GO

/****** Object:  StoredProcedure [dbo].[IsOpenDocument]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[IsOpenDocument] @DocNumber NVARCHAR(100)
AS
BEGIN
	SELECT bitCleared
	FROM tblOrderDoc
	WHERE strOrdDocID = @DocNumber
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateLaybyBitClearedFlag]    Script Date: 2020-10-01 ******/
CREATE PROCEDURE [dbo].[UpdateLaybyBitClearedFlag] @DocNumber NVARCHAR(100)
AS
BEGIN
	UPDATE tblOrderDoc
	SET bitCleared = 1
	WHERE strOrdDocID = @DocNumber

	UPDATE tblCustTrans
	SET bitSettled = 1
	WHERE strOrdDocID = @DocNumber

	UPDATE tblCustTransDT
	SET decAmount = 0
		,decAmountF = 0
	WHERE lngCustTrID IN (
			SELECT lngCustTrID
			FROM tblCustTrans
			WHERE strOrdDocID = @DocNumber
			)
END
GO

/****** Object:  StoredProcedure [dbo].[PricelistDataAvailableOnTerminal]    Script Date: 2020-10-09 ******/
CREATE PROCEDURE [dbo].[PricelistDataAvailableOnTerminal] @PriceList NVARCHAR(50)
AS
BEGIN
	SELECT TOP 1 tblPriceListsByDate.strPricelist AS Pricelist
	FROM tblPriceListsByDate
	INNER JOIN dbo.tblInvPrice ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
	WHERE tblPriceListsByDate.strPricelist = @PriceList
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateWSProcessDocDT]    Script Date: 2020-10-27 ******/
CREATE PROCEDURE [dbo].[UpdateWSProcessDocDT]  
(  
	@ExistingJobNumber nvarchar(30),
	@tblProcessDoc ProcessDocTableType READONLY,
    @tblProcessDocDT CommonTableTypeBig READONLY
)  
AS  
BEGIN  
 
  UPDATE tblWSProcessDoc  
  SET   
   --ProcessDocID   = t.ProcessDocID  
   ServiceableItemCode = t.ServiceableItemCode  
   ,JobTemplateID = CASE t.JobTemplateID WHEN 0 THEN null ELSE t.JobTemplateID END  
   ,OwnerCode = t.OwnerCode  
   ,CustomerCode = t.CustomerCode  
   ,CustomerDetails = t.CustomerDetails  
   --,SystemDate = t.SystemDate  
   ,DocumentDate = t.DocumentDate  
   ,RequiredDate = t.RequiredDate  
   ,ReferenceNumber = (SELECT ProcessDocID FROM @tblProcessDoc)  
   ,AddInfo = t.AddInfo  
   ,Technician = CASE t.Technician WHEN '' THEN null ELSE t.Technician END  
   ,SalesName = CASE t.SalesName WHEN '' THEN null ELSE t.SalesName END  
   ,Dept = CASE t.Dept when 0 THEN null ELSE t.Dept END  
   ,DocType = 2
   ,InventoryTotal = t.InventoryTotal  
   ,LabourTotal = t.LabourTotal  
   ,BuyOutsTotal = t.BuyOutsTotal  
   ,RecoveryTotal = t.RecoveryTotal  
   ,InventoryTotalF = t.InventoryTotalF  
   ,LabourTotalF = t.LabourTotalF  
   ,BuyOutsTotalF = t.BuyOutsTotalF  
   ,RecoveryTotalF = t.RecoveryTotalF  
   ,Term = CASE t.Term WHEN '' THEN null ELSE t.Term END   
   ,SubTotal = t.SubTotal  
   ,VAT = t.VAT  
   ,Total = t.Total  
   ,IsForeign = t.IsForeign  
   ,SubTotalF = t.SubTotalF  
   ,VATF = t.VATF  
   ,TotalF = t.TotalF  
   ,IsFromQuote = 1 --,IsFromQuote  
   ,QuoteDocID = (SELECT ProcessDocID FROM @tblProcessDoc) --,QuoteDocID  
   ,Notes = t.Notes  
   --,Printed = t.Printed  
   --,Emailed = t.Emailed  
   --,Cleared = t.Cleared  
   ,Currency = t.Currency  
   ,DiscPerc = t.DiscPerc  
   ,DiscAmt = t.DiscAmt  
   ,DiscAmtF = t.DiscAmtF  
   ,RevisionNumber = t.RevisionNumber  
   ,Exchange = t.Exchange  
   ,SubFormated = t.SubFormated  
   ,VATFormatted = t.VATFormatted  
   ,TotFormatted = t.TotFormatted  
   ,DiscFormatted = t.DiscFormatted  
   ,UpdatedDate = GETDATE()  
   ,UpdatedBy = t.UpdatedBy  
   ,SOReasonCode = t.SOReasonCode  
   ,DelMethodCode = CASE t.DelMethodCode WHEN '' THEN null ELSE t.DelMethodCode END      
   ,TotalWeight = t.TotalWeight  
   ,TotalVolWeight = t.TotalVolWeight  
   ,DeliveryCost = t.DeliveryCost  
   ,DeliveryCostF = t.DeliveryCostF  
   ,DeliveryCostFormatted = t.DeliveryCostFormatted  
   ,StatusTypeCode = NULL
   ,VATNo = t.VATNo  
   ,ShipTo = t.ShipTo
  FROM   
   @tblProcessDoc t  
  WHERE  
   tblWSProcessDoc.ProcessDocID = @ExistingJobNumber;  
  
 DELETE FROM tblWSProcessDocDT WHERE ProcessDocID = @ExistingJobNumber
  
 INSERT INTO tblWSProcessDocDT  
  (  
    ProcessDocID  
   ,[LineNo]  
   ,PartNumber  
   ,Location  
   ,PartDesc  
   ,QuotedQty  
   ,JobQty  
   ,Unit  
   ,ItemType  
   ,TaxCode  
   ,Currency  
   ,IsForeign  
   ,LineDiscPerc  
   ,LineDiscAmt  
   ,LineDiscAmtF  
   ,IsDiscountTax  
   ,StockQty  
   ,StockUnit  
   ,StockQtyRemain  
   ,PriceEaExc  
   ,LineTotExc  
   ,LineTaxAmt  
   ,PriceEaInc  
   ,LineTotInc  
   ,PriceEaExcF  
   ,LineTotExcF  
   ,LineTaxAmtF  
   ,EaIncTaxF  
   ,TotIncTaxF  
   ,CreatedDate  
   ,UpdatedDate  
   ,CreatedBy  
   ,UpdatedBy  
   ,IsDelCost  
   ,BillingMethod  
   ,QtyRemaining  
   ,TaxObj  
   ,SalesName  
   ,PartExtendedDesc  
   ,BuyoutCost  
   ,ItemWeight  
   ,VolumetricWeight  
   ,TransactionFieldID  
   --,LastPPUnit  
   --,StandardCost  
  )  
  SELECT  
   @ExistingJobNumber
   ,CONVERT(INT, ISNULL(COL03, ''))--,COL03 --,[LineNo]  
   ,CONVERT(NVARCHAR(50), ISNULL(COL04, ''))--,COL04 --,PartNumber  
   ,CONVERT(NVARCHAR(50), ISNULL(COL05, ''))--,COL05 --,Location  
   ,CONVERT(NVARCHAR(100), ISNULL(COL06, ''))--,COL06 --,PartDesc  
   ,CONVERT(MONEY, ISNULL(COL07, ''))--,COL07 --,QuotedQty  
   ,CONVERT(MONEY, ISNULL(COL08, ''))--,COL08 --,JobQty  
   ,CONVERT(NVARCHAR(15), ISNULL(COL09, ''))--,COL09 --,Unit  
   ,CONVERT(tinyint, ISNULL(COL10, ''))--,COL10 --,ItemType  
   ,CONVERT(NVARCHAR(2), ISNULL(COL11, ''))--,COL11 --,TaxCode  
   ,CONVERT(NVARCHAR(3), ISNULL(COL12, ''))--,COL12 --,Currency  
   ,CONVERT(BIT, ISNULL(COL13, ''))--,COL13 --,IsForeign  
   ,CONVERT(MONEY, ISNULL(COL14, ''))--,COL14 --,LineDiscPerc  
   ,CONVERT(MONEY, ISNULL(COL15, ''))--,COL15 --,LineDiscAmt  
   ,CONVERT(MONEY, ISNULL(COL16, ''))--,COL16 --,LineDiscAmtF  
   ,CONVERT(BIT, ISNULL(COL17, ''))--,COL17 --,IsDiscountTax  
   ,CONVERT(MONEY, ISNULL(COL18, ''))--,COL18 --,StockQty  
   ,CONVERT(NVARCHAR(15), ISNULL(COL19, ''))--,COL19 --,StockUnit  
   ,CONVERT(MONEY, ISNULL(COL20, ''))--,COL20 --,StockQtyRemain  
   ,CONVERT(MONEY, ISNULL(COL21, ''))--,COL21 --,PriceEaExc  
   ,CONVERT(MONEY, ISNULL(COL22, ''))--,COL22 --,LineTotExc  
   ,CONVERT(MONEY, ISNULL(COL23, ''))--,COL23 --,LineTaxAmt  
   ,CONVERT(MONEY, ISNULL(COL24, ''))--,COL24 --,PriceEaInc  
   ,CONVERT(MONEY, ISNULL(COL25, ''))--,COL25 --,LineTotInc  
   ,CONVERT(MONEY, ISNULL(COL26, ''))--,COL26 --,PriceEaExcF  
   ,CONVERT(MONEY, ISNULL(COL27, ''))--,COL27 --,LineTotExcF  
   ,CONVERT(MONEY, ISNULL(COL28, ''))--,COL28 --,LineTaxAmtF  
   ,CONVERT(MONEY, ISNULL(COL29, ''))--,COL29 --,EaIncTaxF  
   ,CONVERT(MONEY, ISNULL(COL30, ''))--,COL30 --,TotIncTaxF  
   ,GETDATE() --,CreatedDate  
   ,GETDATE()--,UpdatedDate  
   ,CONVERT(NVARCHAR(50), ISNULL(COL33, ''))--,COL33 --,CreatedBy  
   ,CONVERT(NVARCHAR(50), ISNULL(COL34, ''))--,COL34 --,UpdatedBy  
   ,CONVERT(BIT, ISNULL(COL35, ''))--,COL35 --IsDelCost  
   ,CONVERT(INT, ISNULL(COL36, ''))--,COL36 --BillingMethod  
   ,CONVERT(MONEY, ISNULL(COL37, ''))--,COL37 --QtyRemaining  
   ,CONVERT(image, ISNULL(IMAGE1, ''))--,IMAGE1 --TaxObj  
   ,CONVERT(NVARCHAR(50), ISNULL(COL38, ''))--,COL38 --SalesName  
   ,CONVERT(NVARCHAR(MAX), ISNULL(COL39, ''))--,COL39 --PartExtendedDesc  
   ,CONVERT(MONEY, ISNULL(COL40, '')) --,COL40 --BuyoutCost  
   ,CONVERT(MONEY, ISNULL(COL41, '')) --,COL41 --ItemWeight  
   ,CONVERT(MONEY, ISNULL(COL42, '')) --,COL42 --VolumetricWeight  
   ,CONVERT(uniqueidentifier, ISNULL(COL43, '')) --,COL43 --TransactionFieldID  
   --,CONVERT(MONEY, ISNULL(COL44, '')) --,COL44 LastPPUnit   
   --,CONVERT(MONEY, ISNULL(COL45, '')) --,COL45 StandardCost  
  FROM @tblProcessDocDT  
 
END
GO

/****** Object:  StoredProcedure [dbo].[GetLastReceivedCostForItems]    Script Date: 2020-10-27 ******/
CREATE PROCEDURE [dbo].[GetLastReceivedCostForItems]
(
	@PartNumbers nvarchar(MAX)
)
AS
BEGIN
	SELECT CASE 
			WHEN decQty = 0
				THEN 0
			ELSE CASE 
					WHEN (decCOGS / decQty) < 0
						THEN (decCOGS / decQty) * - 1
					ELSE (decCOGS / decQty)
					END
			END AS COGS,
		lngID AS ID,
		strPartNumber AS PartNumber,
		strLocName AS Location
	FROM tblInvTrackingDT WHERE strPartNumber IN (@PartNumbers)
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvValuesFromCriteria]    Script Date: 2020-10-27 ******/
CREATE PROCEDURE [dbo].[GetInvValuesFromCriteria]  
(  
 @Type int,
 @PartNumber nvarchar(50),
 @Location nvarchar(50)
)  
AS  
BEGIN  
 SELECT tblInv.decLastPPUnit as LastPPUnit,  
        tblInv.decBuyToStock as BuyToStock ,  
        tblInvExt.decValue As Value,  
        tblInvExt.decOnHand AS OnHand,  
     tblInv.strBarCode as BarCode,  
     tblInv.strBarCode2 as BarCode2,  
     tblInv.strPartNumber as PartNumber,  
     tblInvExt.strLocName as Location  
 FROM tblInv  
 INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber  
 --AND tblInvExt.strLocName = @Location  
 --WHERE (tblInv.strPartNumber = @PartNumber  
 --       OR tblInv.strBarCode = @BarCode  
 --       OR tblInv.strBarCode2 = @BarCode)  
   WHERE tblInv.intType = @Type  AND tblInvExt.strLocName = @Location  AND tblInv.strPartNumber = @PartNumber  
END
GO

/****** Object:  StoredProcedure [dbo].[GetStandardCostForPartNumbers]    Script Date: 2020-10-30 ******/
CREATE PROCEDURE [dbo].[GetStandardCostForPartNumbers]  
(  
 @PartNumbers AS VARCHAR(MAX)  
)  
AS  
BEGIN  
 SELECT strPartNumber AS PartNumber,ISNULL(decStandardCost,0) AS StandardCost FROM tblInv 
 WHERE strPartNumber IN (SELECT Data FROM dbo.Split(@PartNumbers,','))
END
GO

/****** Object:  StoredProcedure [dbo].[GetInventoryDataForPartNumbers]    Script Date: 2020-10-30 ******/
CREATE PROCEDURE [dbo].[GetInventoryDataForPartNumbers]
(	@Part AS NVARCHAR(MAX),
	@BarCode AS NVARCHAR(MAX),
	@PriceList AS VARCHAR(20),
	@GPCalcInvLevel AS INT,
	@GPCalcLPP AS INT,
	@LocName AS NVARCHAR(50),
	@UserName AS NVARCHAR(20),
	@IsBPToolsMode AS BIT
)
AS
BEGIN

SELECT tblInv.strDesc  AS [Desc]
	,tblInv.strStockUnit AS StockUnit
	,tblInv.intType AS [Type]
	,tblInv.bitAllowPriceChg AS AllowPriceChg
	,ISNULL(tblInvPrice.decSelling, 0) AS Selling
	,tblInv.strPartNumber AS PartNumber
	,tblInv.strField1 AS Field1
	,tblInv.strField2 AS Field2
	,tblInv.strField3 AS Field3
	,tblInv.strField4 AS Field4
	,tblInv.strField5 AS Field5
	,tblInv.strField6 AS Field6
	,tblInv.decSumAvail AS SumAvail
	,ISNULL(tblPricelists.bitShowZeroSellingPrice, 0) AS ShowZeroSellingPrice
	,tblInv.strSellUnit AS SellUnit
	,tblInv.strSellStockUnit AS SellStockUnit
	,tblInv.decSellFromStock AS SellFromStock
	,tblInv.bitInvSerialType AS IsSerialType	
	,CASE 
		WHEN tblInv.intType = 4
			THEN tblInv.decStandardCost
		ELSE CASE @GPCalcLPP
				WHEN 0
					THEN tblInv.decLastPPUnit
				WHEN 1
					THEN tblInv.decStandardCost
				WHEN 2
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = @LocName
															), 0)
													THEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
												ELSE CASE 
														WHEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0) = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0)
														END
												END
										END
							WHEN 1
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
												ELSE CASE 
														WHEN CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
														END
												END
										END
							ELSE tblInv.decLastPPUnit
							END
				WHEN 3
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0) = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0)
										END
							WHEN 1
								THEN CASE 
										WHEN CASE tblInv.decSumOnHand
												WHEN 0
													THEN 0
												ELSE tblInv.decSumValue / tblInv.decSumOnHand
												END = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
										END
							ELSE tblInv.decLastPPUnit
							END
				ELSE tblInv.decLastPPUnit
				END
		END AS GPCalc
	,tblInv.decDefSaleQty AS DefaultSaleQty
	,tblInv.bitVoucherEnabled AS IsVoucherEnabled
	,ISNULL(tblInv.strVoucherCode, '') AS VoucherCode
	,tblInv.strDimProCode AS DimProCode
	,tblInv.strExtendedDesc AS ExtendedDesc
	,tblInv.strUnitOfMeasure AS UnitOfMeasure
	,tblInv.decMass AS Mass
	,tblInv.decVolumetricWeight AS VolumetricWeight
	,CAST((
			SELECT COUNT(tblInvUpsell.strPartItemNumber)
			FROM tblInvUpsell
			WHERE tblInvUpsell.strPartNumber = tblInv.strPartNumber
			) AS BIT) AS IsUpsellItem
	,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimension	
	,tblInv.bitAutoBuild AS AutoBuild
	,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT SUM(INV.decLastPPUnit)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildLRC
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT SUM(INV.decStandardCost)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildSC
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE EXT.decOnHand
									WHEN 0
										THEN 0
									ELSE EXT.decValue / EXT.decOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
						AND EXT.strLocName = @LocName
					), 0)
		END AS AutoBuildMALocDef
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE EXT.decOnHand
									WHEN 0
										THEN 0
									ELSE EXT.decValue / EXT.decOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
						AND BOM.strLocName = EXT.strLocName
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildMALocation
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE INV.decSumOnHand
									WHEN 0
										THEN 0
									ELSE INV.decSumValue / INV.decSumOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildMAMain
FROM tblInv
LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
LEFT JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE (
		tblInv.strPartNumber IN (SELECT Data FROM dbo.Split(@Part,','))
		OR tblInv.strBarCode IN (SELECT Data FROM dbo.Split(@BarCode,','))
		OR tblInv.strBarCode2 IN (SELECT Data FROM dbo.Split(@BarCode,','))
		)
	AND (
		tblInvPrice.strPricelist = @PriceList
		OR tblInvPrice.strPricelist IS NULL
		)
	AND (tblInv.bitInactive = 0)

	AND (@IsBPToolsMode = 1 OR tblInv.strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = @UserName)) OR tblInv.intType = 5)
END
GO

/****** Object:  StoredProcedure [dbo].[GetPriceListByDateForPartNumbers]    Script Date: 2020-10-30 ******/
CREATE PROCEDURE [dbo].[GetPriceListByDateForPartNumbers] (  
 @PartNumbers AS NVARCHAR(MAX)  
 ,@PriceList AS NVARCHAR(20)  
 )  
AS  
BEGIN  
 SELECT tblPriceListsByDate.uidPriceBasedID AS PriceBasedId  
  ,tblPriceListsByDate.strPricelist AS PriceList  
  ,tblPriceListsByDate.dteStartDate AS StartDate  
  ,tblPriceListsByDate.dteFinishDate AS EndDate  
  ,tblInvPrice.decSelling AS Price
  ,tblInvPrice.strPartNumber  AS PartNumber
  ,Isnull(tblInvPrice.bitPromotionalPricing,0) AS IsPromotionalPricing  
  ,Isnull(tblInvPrice.decPromotionalPrice,0) AS PromotionalPrice  
  ,Isnull(tblInvPrice.dtePromotionalStartDate,tblPriceListsByDate.dteStartDate) AS PromotionalStartDate  
  ,Isnull(tblInvPrice.dtePromotionalEndDate,tblPriceListsByDate.dteFinishDate) AS PromotionalEndDate  
 FROM tblPriceListsByDate  
 INNER JOIN tblInvPrice ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID  
 WHERE tblInvPrice.strPartNumber IN ( SELECT Data FROM dbo.Split(@PartNumbers,','))
  AND tblInvPrice.strPricelist = @PriceList  
 ORDER BY tblPriceListsByDate.dteStartDate  
END
GO

/****** Object:  StoredProcedure [dbo].[GetDiscountMatrixForPartNumbers]    Script Date: 2020-10-30 ******/
CREATE PROCEDURE [dbo].[GetDiscountMatrixForPartNumbers]  
( 
	@CustomerName AS NVARCHAR(50),  
	@PartNumbers AS NVARCHAR(MAX)  
)  
AS  
BEGIN  
 SELECT tblInv.strPartNumber AS PartNumber, decDiscount AS Discount 
 FROM tblDiscountMatrix 
 INNER JOIN tblCustomers ON tblDiscountMatrix.strCustCategory = tblCustomers.strCustCategory 
 INNER JOIN tblInv ON tblDiscountMatrix.strInvCategory = tblInv.strCategory 
 WHERE tblCustomers.strCustName = @CustomerName 
 AND tblInv.strPartNumber IN ( SELECT Data FROM dbo.Split(@PartNumbers,','))  
END
GO

/****** Object:  StoredProcedure [dbo].[GetPickerCentersBySearchString]    Script Date: 2020-11-04 ******/
CREATE Procedure [dbo].[GetPickerCentersBySearchString]
 @SQUseLastYear as bit=0
,@SQGLNumber nvarchar(50)=NULL
,@SQSearch nvarchar(Max)=NULL
AS
BEGIN
	If(@SQSearch is null)
	Begin
		if(@SQUseLastYear=0)
		Begin
			if(@SQGLNumber is null)
			Begin
				SELECT strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID,1 
				FROM tblCenters 
				WHERE (bitInactive = 0) 
				AND strLvl1 IN (SELECT strLvl1 FROM tblCenters WHERE (strLvl2 IS NULL) AND (bitInactive = 0)) 
				ORDER BY strLvl1, strLvl2, strLvl3, strLvl4, strLvl5
			end
			else
			begin
				SELECT strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, tblCenters.uidCenterID
				,ISEnabled=CASE WHEN tblCenterAccts.lngId IS NULL THEN 0 ELSE 1 END 
				FROM tblCenters LEFT JOIN tblCenterAccts ON tblCenterAccts.uidCenterID=tblCenters.uidCenterID AND intGLNumber=@SQGLNumber 
				WHERE (bitInactive = 0) AND strLvl1 IN (SELECT strLvl1 FROM tblCenters WHERE (strLvl2 IS NULL) AND (bitInactive = 0)) ORDER BY strLvl1, strLvl2, strLvl3, strLvl4, strLvl5
			end
		end
		else
		Begin
			if(@SQGLNumber is null)
			Begin
				SELECT strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID,1 
				FROM tblCentersLY 
				WHERE (bitInactive = 0) 
				AND strLvl1 IN (SELECT strLvl1 FROM tblCentersLY WHERE (strLvl2 IS NULL) AND (bitInactive = 0)) 
				ORDER BY strLvl1, strLvl2, strLvl3, strLvl4, strLvl5
			end
			else
			begin
				SELECT strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, tblCentersLY.uidCenterID
				,ISEnabled=CASE WHEN tblCenterAcctsLY.lngId IS NULL THEN 0 ELSE 1 END 
				FROM tblCentersLY LEFT JOIN tblCenterAcctsLY ON tblCenterAcctsLY.uidCenterID=tblCentersLY.uidCenterID AND intGLNumber=@SQGLNumber 
				WHERE (bitInactive = 0) AND strLvl1 IN (SELECT strLvl1 FROM tblCentersLY WHERE (strLvl2 IS NULL) AND (bitInactive = 0)) 
				ORDER BY strLvl1, strLvl2, strLvl3, strLvl4, strLvl5
			end
		end

	END
	ELSE
	BEGIN
		CREATE TABLE #TempCenter (          
		[strLvl1] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
		[strLvl2] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
		[strLvl3] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
		[strLvl4] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
		[strLvl5] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,     
		[uidCenterID] [uniqueidentifier] ROWGUIDCOL NULL)  
		
		
		CREATE TABLE #TempCenterMain (          
		[strLvl1] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
		[strLvl2] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
		[strLvl3] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
		[strLvl4] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
		[strLvl5] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,     
		[uidCenterID] [uniqueidentifier] ROWGUIDCOL NULL
		)  
		
		Declare @strLvl1 [nvarchar](200)
		Declare @strLvl2 [nvarchar](200)
		Declare @strLvl3 [nvarchar](200)
		Declare @strLvl4 [nvarchar](200)
		Declare @strLvl5 [nvarchar](200)
		Declare @uidCenterID uniqueidentifier
		
		if(@SQUseLastYear=0)
		Begin
			Insert into #TempCenter 
			SELECT strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID FROM tblCenters 
			Where (strLvl1 Like '%'+@SQSearch+'%' or strLvl2 Like '%'+@SQSearch+'%' or strLvl3 Like '%'+@SQSearch+'%' or strLvl4 Like '%'+@SQSearch+'%' or strLvl5 Like '%'+@SQSearch+'%')
			AND (bitInactive = 0)
			
			Insert into #TempCenterMain 
			SELECT strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID FROM #TempCenter
			
			While((Select Count(*) from #TempCenter)>0)
			Begin
				Select top 1 @uidCenterID=uidCenterID, @strLvl1=strLvl1, @strLvl2=strLvl2, @strLvl3=strLvl3, @strLvl4=strLvl4, @strLvl5=strLvl5	from #TempCenter
				if(@strLvl5 Is not Null)
				Begin
					INSERT INTO #TempCenterMain
					Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCenters 
					Where strLvl1=@strLvl1 and  strLvl2=@strLvl2 and strLvl3=@strLvl3 and strLvl4=@strLvl4 and strLvl5=@strLvl5
					and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)
					AND (bitInactive = 0)
				END
				if(@strLvl4 Is not Null)
				Begin
					INSERT INTO #TempCenterMain
					Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCenters 
					Where strLvl1=@strLvl1 and  strLvl2=@strLvl2 and strLvl3=@strLvl3 and strLvl4=@strLvl4 and strLvl5 IS NULL
					and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)
					AND (bitInactive = 0)
				END
				if(@strLvl3 Is not Null)
				Begin
					INSERT INTO #TempCenterMain
					Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCenters 
					Where strLvl1=@strLvl1 and  strLvl2=@strLvl2 and strLvl3=@strLvl3 and strLvl4 IS NULL and strLvl5 IS NULL
					and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)
					AND (bitInactive = 0)
				END
				if(@strLvl2 Is not Null)
				Begin
					INSERT INTO #TempCenterMain
					Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCenters 
					Where strLvl1=@strLvl1 and  strLvl2=@strLvl2 and strLvl3 IS NULL  and strLvl4 IS NULL and strLvl5 IS NULL
					and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)
					AND (bitInactive = 0)
				END
				if(@strLvl1 Is not Null)
				Begin
					INSERT INTO #TempCenterMain
					Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCenters 
					Where strLvl1=@strLvl1 and  strLvl2 IS NULL  and strLvl3 IS NULL  and strLvl4 IS NULL and strLvl5 IS NULL
					and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)
					AND (bitInactive = 0)
				END
			
				Delete from #TempCenter where uidCenterID=@uidCenterID
			End
		End
		Else
		Begin
			Insert into #TempCenter 
			SELECT strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID FROM tblCentersLY 
			Where (strLvl1 Like '%'+@SQSearch+'%' or strLvl2 Like '%'+@SQSearch+'%' or strLvl3 Like '%'+@SQSearch+'%' or strLvl4 Like '%'+@SQSearch+'%' or strLvl5 Like '%'+@SQSearch+'%')
			AND (bitInactive = 0)
			
			Insert into #TempCenterMain 
			SELECT strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID FROM #TempCenter
			
			While((Select Count(*) from #TempCenter)>0)
			Begin
				Select top 1 @uidCenterID=uidCenterID, @strLvl1=strLvl1, @strLvl2=strLvl2, @strLvl3=strLvl3, @strLvl4=strLvl4, @strLvl5=strLvl5	from #TempCenter
				if(@strLvl5 Is not Null)
				Begin
					INSERT INTO #TempCenterMain
					Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCentersLY 
					Where strLvl1=@strLvl1 and  strLvl2=@strLvl2 and strLvl3=@strLvl3 and strLvl4=@strLvl4 and strLvl5=@strLvl5
					and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)
					AND (bitInactive = 0)
				END
				if(@strLvl4 Is not Null)
				Begin
					INSERT INTO #TempCenterMain
					Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCentersLY 
					Where strLvl1=@strLvl1 and  strLvl2=@strLvl2 and strLvl3=@strLvl3 and strLvl4=@strLvl4 and strLvl5 IS NULL
					and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)
					AND (bitInactive = 0)
				END
				if(@strLvl3 Is not Null)
				Begin
					INSERT INTO #TempCenterMain
					Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCentersLY 
					Where strLvl1=@strLvl1 and  strLvl2=@strLvl2 and strLvl3=@strLvl3 and strLvl4 IS NULL and strLvl5 IS NULL
					and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)
					AND (bitInactive = 0)
				END
				if(@strLvl2 Is not Null)
				Begin
					INSERT INTO #TempCenterMain
					Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCentersLY 
					Where strLvl1=@strLvl1 and  strLvl2=@strLvl2 and strLvl3 IS NULL  and strLvl4 IS NULL and strLvl5 IS NULL
					and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)
					AND (bitInactive = 0)
				END
				if(@strLvl1 Is not Null)
				Begin
					INSERT INTO #TempCenterMain
					Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCentersLY 
					Where strLvl1=@strLvl1 and  strLvl2 IS NULL  and strLvl3 IS NULL  and strLvl4 IS NULL and strLvl5 IS NULL
					and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)
					AND (bitInactive = 0)
				END
			
				Delete from #TempCenter where uidCenterID=@uidCenterID
			End
		end
		
		if(@SQUseLastYear=0)
		Begin
			if(@SQGLNumber is null)
			Begin
				SELECT strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID,1 
				FROM #TempCenterMain 
				WHERE strLvl1 IN (SELECT strLvl1 FROM tblCenters WHERE (strLvl2 IS NULL) AND (bitInactive = 0)) 
				ORDER BY strLvl1, strLvl2, strLvl3, strLvl4, strLvl5
			end
			else
			begin
				SELECT strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, #TempCenterMain.uidCenterID
				,ISEnabled=CASE WHEN tblCenterAccts.lngId IS NULL THEN 0 ELSE 1 END 
				FROM #TempCenterMain LEFT JOIN tblCenterAccts ON tblCenterAccts.uidCenterID=#TempCenterMain.uidCenterID AND intGLNumber=@SQGLNumber 
				WHERE  strLvl1 IN (SELECT strLvl1 FROM tblCenters WHERE (strLvl2 IS NULL) AND (bitInactive = 0)) ORDER BY strLvl1, strLvl2, strLvl3, strLvl4, strLvl5
			end
		end
		else
		Begin
			if(@SQGLNumber is null)
			Begin
				SELECT strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID,1 
				FROM #TempCenterMain 
				WHERE strLvl1 IN (SELECT strLvl1 FROM tblCentersLY WHERE (strLvl2 IS NULL) AND (bitInactive = 0)) 
				ORDER BY strLvl1, strLvl2, strLvl3, strLvl4, strLvl5
			end
			else
			begin
				SELECT strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, #TempCenterMain.uidCenterID
				,ISEnabled=CASE WHEN tblCenterAcctsLY.lngId IS NULL THEN 0 ELSE 1 END 
				FROM #TempCenterMain LEFT JOIN tblCenterAcctsLY ON tblCenterAcctsLY.uidCenterID=#TempCenterMain.uidCenterID AND intGLNumber=@SQGLNumber 
				WHERE strLvl1 IN (SELECT strLvl1 FROM tblCentersLY WHERE (strLvl2 IS NULL) AND (bitInactive = 0)) 
				ORDER BY strLvl1, strLvl2, strLvl3, strLvl4, strLvl5
			end
		end


		Drop table #TempCenter
		Drop table #TempCenterMain
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetCentersBySearchString]    Script Date: 2020-11-04 ******/
CREATE Procedure [dbo].[GetCentersBySearchString]
@SQSearch nvarchar(Max)=NULL
AS
BEGIN
	If(@SQSearch is null)
	Begin
		SELECT strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID FROM tblCenters 
		order by strLvl1, strLvl2, strLvl3, strLvl4, strLvl5
	END
	ELSE
	BEGIN
		CREATE TABLE #TempCenter (          
		[strLvl1] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
		[strLvl2] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
		[strLvl3] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
		[strLvl4] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
		[strLvl5] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,     
		[uidCenterID] [uniqueidentifier] ROWGUIDCOL NULL)  
		
		
		CREATE TABLE #TempCenterMain (          
		[strLvl1] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
		[strLvl2] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
		[strLvl3] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
		[strLvl4] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,    
		[strLvl5] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,     
		[uidCenterID] [uniqueidentifier] ROWGUIDCOL NULL,
		)  
		
		Declare @strLvl1 [nvarchar](200)
		Declare @strLvl2 [nvarchar](200)
		Declare @strLvl3 [nvarchar](200)
		Declare @strLvl4 [nvarchar](200)
		Declare @strLvl5 [nvarchar](200)
		Declare @uidCenterID uniqueidentifier
		
		
		Insert into #TempCenter 
		SELECT strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID FROM tblCenters 
		Where strLvl1 Like '%'+@SQSearch+'%' or strLvl2 Like '%'+@SQSearch+'%' or strLvl3 Like '%'+@SQSearch+'%' or strLvl4 Like '%'+@SQSearch+'%' or strLvl5 Like '%'+@SQSearch+'%'
		
		Insert into #TempCenterMain 
		SELECT strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID FROM #TempCenter
		
		While((Select Count(*) from #TempCenter)>0)
		Begin
			Select top 1 @uidCenterID=uidCenterID, @strLvl1=strLvl1, @strLvl2=strLvl2, @strLvl3=strLvl3, @strLvl4=strLvl4, @strLvl5=strLvl5	from #TempCenter
			if(@strLvl5 Is not Null)
			Begin
			INSERT INTO #TempCenterMain
			Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCenters 
			Where strLvl1=@strLvl1 and  strLvl2=@strLvl2 and strLvl3=@strLvl3 and strLvl4=@strLvl4 and strLvl5=@strLvl5
			and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)
			END
			if(@strLvl4 Is not Null)
			Begin
			INSERT INTO #TempCenterMain
			Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCenters 
			Where strLvl1=@strLvl1 and  strLvl2=@strLvl2 and strLvl3=@strLvl3 and strLvl4=@strLvl4 and strLvl5 IS NULL
			and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)
			END
			if(@strLvl3 Is not Null)
			Begin
			INSERT INTO #TempCenterMain
			Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCenters 
			Where strLvl1=@strLvl1 and  strLvl2=@strLvl2 and strLvl3=@strLvl3 and strLvl4 IS NULL and strLvl5 IS NULL
			and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)
			END
			if(@strLvl2 Is not Null)
			Begin
			INSERT INTO #TempCenterMain
			Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCenters 
			Where strLvl1=@strLvl1 and  strLvl2=@strLvl2 and strLvl3 IS NULL  and strLvl4 IS NULL and strLvl5 IS NULL
			and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)
			END
			if(@strLvl1 Is not Null)
			Begin
			INSERT INTO #TempCenterMain
			Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCenters 
			Where strLvl1=@strLvl1 and  strLvl2 IS NULL  and strLvl3 IS NULL  and strLvl4 IS NULL and strLvl5 IS NULL
			and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)
			END
		
			Delete from #TempCenter where uidCenterID=@uidCenterID
		End
		
		Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from #TempCenterMain order by strLvl1, strLvl2, strLvl3, strLvl4, strLvl5
		
		Drop table #TempCenter
		Drop table #TempCenterMain
	END
END
GO

/****** Object:  StoredProcedure [dbo].[RptGetCenterLogicOnLoaded]    Script Date: 2020-11-04 ******/
CREATE PROCEDURE [dbo].[RptGetCenterLogicOnLoaded]
	
	@optCurrentYear_IsChecked AS BIT,
	@chkInactive_IsChecked AS BIT,
	@strSplit_Length AS INT,
	@txtLoc_Text AS NVARCHAR(MAX),
	@strSplit_0 AS NVARCHAR(MAX),
	@strSplit_1 AS NVARCHAR(MAX),
	@strSplit_2 AS NVARCHAR(MAX),
	@strSplit_3 AS NVARCHAR(MAX),
	@strSearch AS NVARCHAR(MAX)

AS
BEGIN
	DECLARE @QueryCommand AS NVARCHAR(MAX)
	DECLARE @ParameterDefinition AS NVARCHAR(MAX) 	
	DECLARE @SQLevel1 AS NVARCHAR(200)
	DECLARE @SQLevel2 AS NVARCHAR(200)
	DECLARE @SQLevel3 AS NVARCHAR(200)
	DECLARE @SQLevel4 AS NVARCHAR(200)
		DECLARE @txtLoc_Length AS INT = LEN(@txtLoc_Text)		

		IF @txtLoc_Length = 0
		BEGIN
			
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl1 FROM tblCenters WHERE bitInactive = 0 and strLvl1 Like  ''%'+@strSearch+'%'' ORDER BY strLvl1'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl1 FROM tblCenters WHERE  strLvl1 Like  ''%'+@strSearch+'%''  ORDER BY strLvl1'
				END						
			END

			ELSE
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl1 FROM tblCentersLY WHERE bitInactive = 0 and strLvl1 Like  ''%'+@strSearch+'%'' ORDER BY strLvl1'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl1 FROM tblCentersLY WHERE  strLvl1 Like  ''%'+@strSearch+'%''   ORDER BY strLvl1'
				END
			END

		END

		ELSE IF @strSplit_Length = 1	
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl2 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 IS NOT NULL) AND (strLvl2 NOT IN (SELECT strLvl2 FROM tblCenters WHERE strLvl1 = @SQLevel1 AND bitInactive = 1)) and strLvl2 Like  ''%'+@strSearch+'%'' ORDER BY strLvl2'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl2 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 IS NOT NULL) and strLvl2 Like  ''%'+@strSearch+'%''  ORDER BY strLvl2'
				END						
			END

			ELSE
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl2 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 IS NOT NULL) AND (strLvl2 NOT IN (SELECT strLvl2 FROM tblCentersLY WHERE strLvl1 = @SQLevel1 AND bitInactive = 1)) and strLvl2 Like  ''%'+@strSearch+'%''  ORDER BY strLvl2'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl2 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 IS NOT NULL) and strLvl2 Like  ''%'+@strSearch+'%''  ORDER BY strLvl2'
				END	
			END

			SET @SQLevel1 = @txtLoc_Text

		END

		ELSE IF @strSplit_Length = 2	
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl3 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 IS NOT NULL) AND (strLvl3 NOT IN (SELECT strLvl3 FROM tblCenters WHERE strLvl1 = @SQLevel1 AND strLvl2 = @SQLevel2 AND bitInactive = 1)) and strLvl3 Like  ''%'+@strSearch+'%''  ORDER BY strLvl3'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl3 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 IS NOT NULL) and strLvl3 Like  ''%'+@strSearch+'%''  ORDER BY strLvl3'
				END						
			END

			ELSE
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl3 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 IS NOT NULL) AND (strLvl3 NOT IN (SELECT strLvl3 FROM tblCentersLY WHERE strLvl1 = @SQLevel1 AND strLvl2 = @SQLevel2 AND bitInactive = 1)) and strLvl3 Like  ''%'+@strSearch+'%''  ORDER BY strLvl3'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl3 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 IS NOT NULL) and strLvl3 Like  ''%'+@strSearch+'%''  ORDER BY strLvl3'
				END	
			END

			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
		END

		ELSE IF @strSplit_Length = 3	
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl4 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 IS NOT NULL) AND (strLvl4 NOT IN (SELECT strLvl4 FROM tblCenters WHERE strLvl1 = @SQLevel1 AND strLvl2 = @SQLevel2 AND strLvl3 = @SQLevel3 AND bitInactive = 1)) and strLvl4 Like  ''%'+@strSearch+'%''  ORDER BY strLvl4'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl4 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 IS NOT NULL) and strLvl4 Like  ''%'+@strSearch+'%'' ORDER BY strLvl4'
				END						
			END

			ELSE
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl4 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 IS NOT NULL) AND (strLvl4 NOT IN (SELECT strLvl4 FROM tblCentersLY WHERE strLvl1 = @SQLevel1 AND strLvl2 = @SQLevel2 AND strLvl3 = @SQLevel3 AND bitInactive = 1)) and strLvl4 Like  ''%'+@strSearch+'%'' ORDER BY strLvl4'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl4 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 IS NOT NULL) and strLvl4 Like  ''%'+@strSearch+'%'' ORDER BY strLvl4'
				END		
			END

			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strSplit_2
			
		END

		ELSE
		BEGIN
			IF @optCurrentYear_IsChecked = 1
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl5 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 = @SQLevel4) AND (strLvl5 IS NOT NULL) AND (strLvl5 NOT IN (SELECT strLvl5 FROM tblCenters WHERE strLvl1 = @SQLevel1 AND strLvl2 = @SQLevel2 AND strLvl3 = @SQLevel3 AND strLvl4 = @SQLevel4 AND bitInactive = 1)) and strLvl5 Like  ''%'+@strSearch+'%'' ORDER BY strLvl5'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl5 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 = @SQLevel4) AND (strLvl5 IS NOT NULL) and strLvl5 Like  ''%'+@strSearch+'%'' ORDER BY strLvl5'
				END						
			END

			ELSE
			BEGIN
				IF @chkInactive_IsChecked = 0
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl5 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 = @SQLevel4) AND (strLvl5 IS NOT NULL) AND (strLvl5 NOT IN (SELECT strLvl5 FROM tblCentersLY WHERE strLvl1 = @SQLevel1 AND strLvl2 = @SQLevel2 AND strLvl3 = @SQLevel3 AND strLvl4 = @SQLevel4 AND bitInactive = 1)) and strLvl5 Like  ''%'+@strSearch+'%'' ORDER BY strLvl5'
				END
				ELSE
				BEGIN
					SET @QueryCommand = 'SELECT DISTINCT strLvl5 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 = @SQLevel4) AND (strLvl5 IS NOT NULL) and strLvl5 Like  ''%'+@strSearch+'%'' ORDER BY strLvl5'
				END		
			END

			SET @SQLevel1 = @strSplit_0
			SET @SQLevel2 = @strSplit_1
			SET @SQLevel3 = @strSplit_2
			SET @SQLevel4 = @strSplit_3

		END
			Set @ParameterDefinition =' @SQLevel1 NVARCHAR(MAX),
				@SQLevel2 NVARCHAR(MAX),
				@SQLevel3 NVARCHAR(MAX),
				@SQLevel4 NVARCHAR(MAX)'

		EXECUTE SP_EXECUTESQL @QueryCommand, @ParameterDefinition, @SQLevel1, @SQLevel2, @SQLevel3, @SQLevel4
END
GO

/****** Object:  StoredProcedure [dbo].[GetBalanceDueByAccountType]    Script Date: 09-10-2020 06:39:00 AM ******/
CREATE PROCEDURE GetBalanceDueByAccountType
	@intAccountType INT = 0,
	@strAccount NVARCHAR(60) = NULL
AS
BEGIN
	SET NOCOUNT ON;

IF (@intAccountType = 8)	--Account Receivable
	BEGIN
		SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) AS decBalDue
		FROM tblCustTransDT
		INNER JOIN tblCustTrans ON tblCustTransDT.lngCustTrID = tblCustTrans.lngCustTrID
		INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName
		INNER JOIN tblAccounts ON tblAccounts.intGLNumber = ISNULL(tblCustomers.intGLNumberAR, (SELECT intGLNumber FROM tblAccounts WHERE bitLinkAR = 1))
		WHERE (tblCustTransDT.bitReversed = 0)
			AND (tblCustTrans.intTransType <> 2)
			AND (tblAccounts.intGLNumber = @strAccount)
	END
	ELSE IF (@intAccountType = 10)	--Deposit Account
	BEGIN
		SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0)  AS decBalDue
		FROM tblCustTransDT
		INNER JOIN tblCustTrans ON tblCustTransDT.lngCustTrID = tblCustTrans.lngCustTrID
		INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName
		INNER JOIN tblAccounts ON tblAccounts.intGLNumber = ISNULL(tblCustomers.intGLNumberDeposit, (SELECT intGLNumber FROM tblAccounts WHERE bitLinkDeposit = 1))
		WHERE (tblCustTransDT.bitReversed = 0)
			AND (tblCustTrans.intTransType = 2)
			AND (tblAccounts.intGLNumber = @strAccount)
	END
	ELSE IF (@intAccountType = 4)	--Account Payable
	BEGIN
		SELECT ISNULL(SUM(tblVendTransDT.decAmount), 0) AS decBalDue
		FROM tblVendTransDT
		INNER JOIN tblVendTrans ON tblVendTransDT.lngVendTrID = tblVendTrans.lngVendTrID
		INNER JOIN tblVendors ON tblVendTrans.strVendName = tblVendors.strVendName
		INNER JOIN tblAccounts ON tblAccounts.intGLNumber = ISNULL(tblVendors.intGLNumberAP, (SELECT intGLNumber FROM tblAccounts WHERE bitLinkAP = 1))
		WHERE (tblVendTransDT.bitReversed = 0)
			AND (tblVendTrans.intTransType <> 2)
			AND (tblAccounts.intGLNumber = @strAccount)
	END
	ELSE IF (@intAccountType = 6)	--Prepay Account
	BEGIN
		SELECT ISNULL(SUM(tblVendTransDT.decAmount), 0) AS decBalDue
		FROM tblVendTransDT
		INNER JOIN tblVendTrans ON tblVendTransDT.lngVendTrID = tblVendTrans.lngVendTrID
		INNER JOIN tblVendors ON tblVendTrans.strVendName = tblVendors.strVendName
		INNER JOIN tblAccounts ON tblAccounts.intGLNumber = ISNULL(tblVendors.intGLNumberPrePay, (SELECT intGLNumber FROM tblAccounts WHERE bitLinkPrePay = 1))
		WHERE (tblVendTransDT.bitReversed = 0)
			AND (tblVendTrans.intTransType = 2)
			AND (tblAccounts.intGLNumber = @strAccount)
	END
	ELSE
		SELECT 0
END
GO

/****** Object:  StoredProcedure [dbo].[GetBalanceDueByAccountType]    Script Date: 09-10-2020 06:39:00 AM ******/
CREATE PROCEDURE GetJournalDate 
	@strAccount NVARCHAR(60) = 0
AS
BEGIN
	SET NOCOUNT ON;

    SELECT MAX(tblJournal.dteJournalDate) 
	FROM tblJournal
	INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
	WHERE tblJournalEnt.intGLNumber = @strAccount
END
GO

/****** Object:  StoredProcedure [dbo].[GetPOSDrawers]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetPOSDrawers]
AS
BEGIN
	SELECT strDrawerName AS DrawerName
		,uidSessionID AS SessionID
		,intStatus AS [Status]
		,dteSessionDate AS SessionDate
		,strAssignedUser AS AssignedUser
		,strTerminal AS Terminal
		,decCashBal AS CashBal
		,decTotalSales AS TotalSales
		,intOfflineTerminalId AS OfflineTerminalId
		,decOpenVal AS OpenVal
		,strCashTender AS CashTender
		,decCkBal AS CkBal
		,decCCBal AS CCBal
		,decGiftCouBal AS GiftCouBal
		,decAccountBal AS AccountBal
		,decTotalDrops AS TotalDrops
		,decCurrentVal AS CurrentVal
		,decCloseVal AS CloseVal
		,decOvSht AS OvSht
		,decActCloseVal AS ActCloseVal
	FROM tblPOSDrs
	ORDER BY strDrawerName
END
GO

/****** Object:  StoredProcedure [dbo].[DeletePOSDrawer]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[DeletePOSDrawer] @DrawerName AS NVARCHAR(70)
AS
BEGIN
	DELETE
	FROM tblPOSDr
	WHERE strDrawerName = @DrawerName
END
GO

/****** Object:  StoredProcedure [dbo].[GetAllTenderTypesName]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetAllTenderTypesName]
AS
BEGIN
	SELECT strName
	FROM tblTenderTypes
	ORDER BY intDisplayOrder
END
GO

/****** Object:  StoredProcedure [dbo].[GetPOSDrsLocations]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetPOSDrsLocations] @UserName NVARCHAR(50)
AS
BEGIN
	SELECT tblInvLoc.strLocName AS LocName
		,tblInvLoc.bitDefault AS IsDefault
		,ISNULL((
				SELECT COUNT(tblInvLocSec.strLocName) AS LocCount
				FROM tblInvLocSec
				WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName
				), 0)
		,ISNULL(tblInvLocSec.strUserName, '')
	FROM tblInvLoc
	LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName
		AND tblInvLocSec.strUserName = @UserName
	WHERE tblInvLoc.intType = 0
	ORDER BY tblInvLoc.strLocName
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatePOSDr]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[AddUpdatePOSDr] @DrawerName NVARCHAR(70)
	,@OverShort NVARCHAR(60)
	,@PettyCash NVARCHAR(60)
	,@Dept INT
	,@CenterID UNIQUEIDENTIFIER
	,@AccReceipt NVARCHAR(60)
	,@CustName NVARCHAR(100)
	,@LocName NVARCHAR(1000)
	,@PEDID NVARCHAR(200)
	,@OfflineTerminalId INT
	,@DrawerGroupName NVARCHAR(100)

AS
BEGIN
	INSERT INTO tblPOSDr
	VALUES (
		@DrawerName
		,NULL
		,NULL
		,NULL
		,@OverShort
		,@PettyCash
		,@Dept
		,@CenterID
		,@AccReceipt
		,@CustName
		,@LocName
		,@PEDID
		,GetDate()
		,@OfflineTerminalId
		,@DrawerGroupName
		)
END
GO

/****** Object:  StoredProcedure [dbo].[GetPOSDrByDrName]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetPOSDrByDrName] @DrName NVARCHAR(500)
AS
BEGIN
	SELECT strDrawerName AS DrawerName
		,intCashCheq AS CashCheq
		,intCreditCard AS CreditCard
		,intCoupGift AS CoupGift
		,intOverShort AS OverShort
		,intPettyCash AS PettyCash
		,intDept AS Dept
		,uidCenterID AS CenterID
		,intAccReceipt AS AccReceipt
		,strCustName AS CustName
		,strLocName AS LocName
		,strPEDID AS PEDID
		,intOfflineTerminalId AS OfflineTerminalId
		,strDrawerGroup AS DrawerGroup
	FROM tblPOSDr
	WHERE strDrawerName = @DrName
END
GO

/****** Object:  StoredProcedure [dbo].[InsertPOSDrTenderTypes]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[InsertPOSDrTenderTypes] @tblData
AS
POSDrTenderTypesTableType READONLY AS

BEGIN
	INSERT INTO tblPOSDrTenderTypes (
		[strDrawerName]
		,[strTenderTypeName]
		,[bitUsed]
		)
	SELECT [strDrawerName]
		,[strTenderTypeName]
		,[bitUsed]
	FROM @tblData AS t
END
GO

/****** Object:  StoredProcedure [dbo].[UpdatePOSDrTenderTypes]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[UpdatePOSDrTenderTypes] @tblData
AS
POSDrTenderTypesTableType READONLY
	,@OldDrawerName AS [nvarchar](100) AS

BEGIN
	DELETE
	FROM tblPOSDrTenderTypes
	WHERE strDrawerName = @OldDrawerName

	INSERT INTO tblPOSDrTenderTypes (
		[strDrawerName]
		,[strTenderTypeName]
		,[bitUsed]
		)
	SELECT [strDrawerName]
		,[strTenderTypeName]
		,[bitUsed]
	FROM @tblData AS t
END
GO

/****** Object:  StoredProcedure [dbo].[DeletePOSDrsSplitPmtBySessionID]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[DeletePOSDrsSplitPmtBySessionID] @SessionID AS UNIQUEIDENTIFIER
AS
BEGIN
	DELETE
	FROM tblPOSDrsSplitPmt
	WHERE uidSessionID = @SessionID
END
GO

/****** Object:  StoredProcedure [dbo].[DeletePOSDrawerBySessionID]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[DeletePOSDrawerBySessionID] @SessionID AS UNIQUEIDENTIFIER
AS
BEGIN
	DELETE
	FROM tblPOSDrs
	WHERE uidSessionID = @SessionID
END
GO

/****** Object:  StoredProcedure [dbo].[UpdatePOSDrsStatus]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[UpdatePOSDrsStatus] @Status INT
	,@DrName NVARCHAR(70)
AS
BEGIN
	UPDATE tblPOSDrs
	SET intStatus = @Status
		,dteCashedOut = GetDate()
		,decCloseVal = decCurrentVal
	WHERE strDrawerName = @DrName
		AND intStatus = 1
END
GO

/****** Object:  StoredProcedure [dbo].[GetGLNumberFromTenderTypes]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetGLNumberFromTenderTypes] @Name NVARCHAR(40)
AS
BEGIN
	SELECT intGLNumber
	FROM tblTenderTypes
	WHERE strName = @Name
END
GO

/****** Object:  StoredProcedure [dbo].[GetAllPOSDrawerData]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetAllPOSDrawerData]
	@PageSize INT = 25
	,@PageNumber INT = 1
AS
BEGIN
DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)
	SELECT strDrawerName AS DrawerName
		,intCashCheq AS CashCheq
		,intCreditCard AS CreditCard
		,intCoupGift AS CoupGift
		,intOverShort AS OverShort
		,intPettyCash AS PettyCash
		,intDept AS Dept
		,uidCenterID AS CenterID
		,intAccReceipt AS AccReceipt
		,strCustName AS CustName
		,strLocName AS LocName
		,strPEDID AS PEDID
		,intOfflineTerminalId AS OfflineTerminalId
		,strDrawerGroup AS DrawerGroup
	FROM tblPOSDr
	ORDER BY strDrawerName OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

/****** Object:  StoredProcedure [dbo].[GetPOSAssignUsers]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetPOSAssignUsers] @DrName NVARCHAR(70)
AS
BEGIN
	DECLARE @SelectedDrawerGroup NVARCHAR(100)

	SELECT @SelectedDrawerGroup = tblPOSDr.strDrawerGroup
	FROM tblPOSDr
	INNER JOIN tblPOSDrsGroup ON tblPOSDr.strDrawerGroup = tblPOSDrsGroup.strDrawerGroup
	WHERE strDrawerName = @DrName
		AND bitInactive = 0

	SELECT strUserName
	FROM tblUsers
	WHERE (
			blnIsAdmin = 1
			OR (
				blnPOS = 1
				OR blnPOSCash = 1
				)
			)
		AND strUserName NOT IN (
			SELECT strAssignedUser
			FROM tblPOSDrs
			WHERE intStatus <> 3
			)
		AND (
			@SelectedDrawerGroup IS NULL
			OR (
				SELECT TOP 1 strUserName
				FROM tblPOSDrsGroupSec
				WHERE strDrawerGroup = @SelectedDrawerGroup
				) IS NULL
			OR (
				strUserName IN (
					SELECT strUserName
					FROM tblPOSDrsGroupSec
					WHERE strDrawerGroup = @SelectedDrawerGroup
					)
				)
			)
		AND (blnIsLockedOut = 0)
END
GO

/****** Object:  StoredProcedure [dbo].[GetTerminalIds]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetTerminalIds]
AS
BEGIN
	SELECT intTerminalId AS TerminalId
		,strTerminalCode AS TerminalCode
	FROM tblTerminalSetup
	WHERE intTerminalId NOT IN (
			SELECT IsNull(intOfflineTerminalId, 0)
			FROM tblPOSdrs
			WHERE intStatus != 3
			)
END
GO

/****** Object:  StoredProcedure [dbo].[GetPOSDrsProfileMenuItems]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetPOSDrsProfileMenuItems]
AS
BEGIN
	SELECT ProfileID
		,ScreenName
		,IsDefault
		,IsShortcutsbar
	FROM tblProfileMenu
END
GO

/****** Object:  StoredProcedure [dbo].[GetPOSDrsAssignAllocation]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetPOSDrsAssignAllocation] @SQDrawerName NVARCHAR(100)
AS
BEGIN
	SELECT strName AS [Name]
		,intGLNumber AS GLNumber
	FROM tblPOSDrTenderTypes
	INNER JOIN tblTenderTypes ON tblPOSDrTenderTypes.strTenderTypeName = tblTenderTypes.strName
	WHERE strDrawerName = @SQDrawerName
		AND bitUsed = 1
		AND bitCash = 1
END
GO

/****** Object:  StoredProcedure [dbo].[GetTenderTypesBySeesionID]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetTenderTypesBySeesionID] @SessionID NVARCHAR(50)
AS
BEGIN
	SELECT tblTenderTypes.strName AS [Name]
	FROM tblTenderTypes
	INNER JOIN tblPOSDrTenderTypes ON tblTenderTypes.strName = tblPOSDrTenderTypes.strTenderTypeName
	INNER JOIN tblPOSDrs ON tblPOSDrTenderTypes.strDrawerName = tblPOSDrs.strDrawerName
	WHERE tblPOSDrs.uidSessionID = @SessionID
		AND tblPOSDrTenderTypes.bitUsed = 1
		AND tblTenderTypes.bitCash = 1
END
GO

/****** Object:  StoredProcedure [dbo].[GetCashSaleVal]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetCashSaleVal] @SessionID NVARCHAR(50)
	,@PaymentTypeName NVARCHAR(40)
AS
BEGIN
	SELECT Isnull(SUM(decTotal), 0)
	FROM tblPOSDrsSplitPmt AS split
	INNER JOIN tblTenderTypes AS tt ON split.strPaymentTypeName = tt.strName
	WHERE uidSessionID = @SessionID
		AND split.strPaymentTypeName = @PaymentTypeName
		AND split.intGLNumber IS NOT NULL
	GROUP BY strPaymentTypeName
		,split.uidSessionID
END
GO

/****** Object:  StoredProcedure [dbo].[GetTotalPOSDrsCash]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetTotalPOSDrsCash] @SessionID NVARCHAR(50)
	,@PaymentTypeName NVARCHAR(40)
AS
BEGIN
	SELECT Isnull(SUM(decCash), 0) * - 1
	FROM tblPOSDrsDT
	WHERE uidSessionID = @SessionID
		AND strPaymentTypeName = @PaymentTypeName
END
GO

/****** Object:  StoredProcedure [dbo].[UpdatePOSDrsAfterDrop]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[UpdatePOSDrsAfterDrop] @Drop DECIMAL
	,@SessionID NVARCHAR(50)
AS
BEGIN
	UPDATE tblPOSDrs
	SET decCashBal = decCashBal - @Drop
		,decTotalDrops = decTotalDrops + @Drop
	WHERE uidSessionID = @SessionID
END
GO

/****** Object:  StoredProcedure [dbo].[GetProfitCentersByCenterId]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetProfitCentersByCenterId] (@CenterID VARCHAR(100) = NULL)
AS
BEGIN
	SELECT CENT.strLvl1 AS Level1
		,CENT.strLvl2 AS Level2
		,CENT.strLvl3 AS Level3
		,CENT.strLvl4 AS Level4
		,CENT.strLvl5 AS Level5
	FROM tblCenters CENT
	WHERE CENT.uidCenterID = @CenterID;
END
GO

/****** Object:  StoredProcedure [dbo].[GetPEDIdByTenderType]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetPEDIdByTenderType] (@TenderType NVARCHAR(100))
AS
BEGIN
	SELECT strPEDId
	FROM tblTenderTypes
	WHERE bitEFTIntegration = 1
		AND strName = @TenderType
END
GO

/****** Object:  StoredProcedure [dbo].[GetPOSDrTenderTypesByDrawerName]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetPOSDrTenderTypesByDrawerName] @DrawerName AS NVARCHAR(70)
AS
BEGIN
	SELECT strTenderTypeName AS TenderTypeName
		,bitUsed AS IsUsed
	FROM tblPOSDrTenderTypes
	WHERE strDrawerName = @DrawerName
END
GO

/****** Object:  StoredProcedure [dbo].[GetPOSDrsSplitPmtData]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetPOSDrsSplitPmtData] @DrawerName AS NVARCHAR(70)
AS
BEGIN
	SELECT split.strPaymentTypeName AS strPaymentTypeName
		,split.intGLNumber AS intGLNumber
		,SUM(decTotal) AS decTotal
		,SUM(CASE
    WHEN (Isnull(split.bitIsForeign,0) = 1) THEN decTotalF
    ELSE decTotal
END) - (ISNULL((
				SELECT ABS(SUM(decCash))
				FROM tblPOSDrsDT
				WHERE uidSessionID = split.uidSessionID
					AND strPaymentTypeName = split.strPaymentTypeName
				), 0) /
				CASE 
					WHEN ISNULL(split.bitIsForeign,0) = 1 AND ISNULL(split.decExchange, 0) > 0
					THEN ISNULL(split.decExchange, 0) 
					ELSE 1
				END
		) AS DrawerAmount
		,tt.bitCash AS IsCash
		,Isnull(split.bitIsForeign,0) As bitIsForeign
		,split.strCurrency
		,Isnull(split.decExchange,0) AS decExchange
	FROM tblPOSDrsSplitPmt AS split
	INNER JOIN tblTenderTypes AS tt ON split.strPaymentTypeName = tt.strName
	WHERE uidSessionID = (
			SELECT uidSessionID
			FROM tblPOSDrs
			WHERE (strDrawerName = @DrawerName)
				AND (intStatus = 2)
			)
		AND split.intGLNumber IS NOT NULL
	GROUP BY strPaymentTypeName
		,split.intGLNumber
		,tt.bitCash
		,split.uidSessionID
		,Isnull(split.bitIsForeign,0)
		,split.strCurrency
		,Isnull(split.decExchange,0)
END
GO

/****** Object:  StoredProcedure [dbo].[UpdatePOSDrsData]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[UpdatePOSDrsData] @Status INT
	,@ClosedUser NVARCHAR(40)
	,@OvSht MONEY
	,@ActCloseVal MONEY
	,@OvShtReason NVARCHAR(600)
	,@SessionID NVARCHAR(50)
AS
BEGIN
	UPDATE tblPOSDrs
	SET intStatus = @Status
		,strClosedUser = @ClosedUser
		,dteClosed = GetDate()
		,decOvSht = @OvSht
		,decActCloseVal = @ActCloseVal
		,strOvShtReason = @OvShtReason
	WHERE uidSessionID = @SessionID
END
GO

/****** Object:  StoredProcedure [dbo].[InsertPOSDrsCLSP]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[InsertPOSDrsCLSP] @SessionID NVARCHAR(50)
	,@PaymentTypeName NVARCHAR(40)
	,@Value MONEY
	,@Actual MONEY
	,@Variance MONEY
AS
BEGIN
	INSERT INTO tblPOSDrsCLSP (
		uidSessionID
		,strPaymentTypeName
		,decValue
		,decActual
		,decVariance
		)
	VALUES (
		@SessionID
		,@PaymentTypeName
		,@Value
		,@Actual
		,@Variance
		)
END
GO

/****** Object:  StoredProcedure [dbo].[InserttblPOSDrsCA]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[InserttblPOSDrsCA] @SessionID NVARCHAR(50)
	,@Count INT
	,@DenomName NVARCHAR(100)
	,@Denom MONEY
	,@Amount MONEY
	,@Currency NVARCHAR(12)
	,@IsForeign BIT
	,@Exchange MONEY
	,@AmountF MONEY
AS
BEGIN
	INSERT INTO tblPOSDrsCA (
		uidSessionID
		,intCount
		,strDenom
		,decAmount
		,decDenom
		,strCurrency
		,bitIsForeign
		,decExchange
		,decAmountF
		)
	VALUES (
		@SessionID
		,@Count
		,@DenomName
		,@Amount
		,@Denom
		,@Currency
		,@IsForeign
		,@Exchange
		,@AmountF
		)
END
GO

/****** Object:  StoredProcedure [dbo].[AddPOSDrs]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[AddPOSDrs] @DrawerName NVARCHAR(70)
	,@SessionId NVARCHAR(MAX)
	,@Status INT
	,@AssignedUser NVARCHAR(50)
	,@SessionDate DATETIME
	,@CreateUser NVARCHAR(50)
	,@OpenVal DECIMAL
	,@CashBal DECIMAL
	,@CurrentVal DECIMAL
	,@OfflineTerminalId INT
	,@ProfileMenuId NVARCHAR(4000)
	,@CashTender NVARCHAR(40)
	,@AllowChangeUsers BIT
		,@ShortcutbarId INT
AS
BEGIN
	INSERT INTO tblPOSDrs
	VALUES (
		@DrawerName
		,@SessionID
		,@Status
		,@AssignedUser
		,@SessionDate
		,@CreateUser
		,GETDATE()
		,NULL
		,NULL
		,NULL
		,'Not Used'
		,@OpenVal
		,@CashBal
		,0
		,0
		,0
		,0
		,0
		,0
		,@CurrentVal
		,0
		,0
		,0
		,''
		,@OfflineTerminalId
		,@ProfileMenuId
		,@CashTender
		,GetDate()
		,@AllowChangeUsers
		,@ShortcutbarId
		)
END
GO

/****** Object:  StoredProcedure [dbo].[GetPOSDrawersForStats]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetPOSDrawersForStats] @SQDrName NVARCHAR(50)
AS
BEGIN
	SELECT strDrawerName AS DrawerName
		,uidSessionID AS SessionID
		,intStatus AS [Status]
		,dteSessionDate AS SessionDate
		,strAssignedUser AS AssignedUser
		,strTerminal AS Terminal
		,decCashBal AS CashBal
		,decTotalSales AS TotalSales
		,intOfflineTerminalId AS OfflineTerminalId
		,decOpenVal AS OpenVal
		,strCashTender AS CashTender
		,decCkBal AS CkBal
		,decCCBal AS CCBal
		,decGiftCouBal AS GiftCouBal
		,decAccountBal AS AccountBal
		,decTotalDrops AS TotalDrops
		,decCurrentVal AS CurrentVal
	FROM tblPOSDrs
	WHERE (strDrawerName = @SQDrName)
		AND (intStatus <> 3)
END
GO

/****** Object:  StoredProcedure [dbo].[UpdatePOSDrawerData]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[UpdatePOSDrawerData] (
	@DrawerName NVARCHAR(70)
	,@OverShort NVARCHAR(60)
	,@PettyCash NVARCHAR(60)
	,@Dept INT
	,@CenterID UNIQUEIDENTIFIER
	,@AccReceipt NVARCHAR(60)
	,@CustName NVARCHAR(100)
	,@LocName NVARCHAR(1000)
	,@PEDID NVARCHAR(200)
	,@OfflineTerminalId INT
	,@DrawerGroupName NVARCHAR(100)
	)
AS
BEGIN
	UPDATE tblPOSDr
	SET strDrawerName = @DrawerName
		,intOverShort = @OverShort
		,intPettyCash = @PettyCash
		,intDept = @Dept
		,uidCenterID = @CenterID
		,intAccReceipt = @AccReceipt
		,strCustName = @CustName
		,strLocName = @LocName
		,strPEDID = @PEDID
		,intOfflineTerminalId = @OfflineTerminalId
		,strDrawerGroup = @DrawerGroupName
	WHERE strDrawerName = @DrawerName
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateOfflineDrawersDTSyncStatus]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[UpdateOfflineDrawersDTSyncStatus] @Status INT
	,@Id INT
AS
BEGIN
	UPDATE tblOfflineDrawersDT
	SET IsSync = @Status
		,SyncError = NULL
		,SyncErrorCode = NULL
		,SyncDrawerName = NULL
		,SyncErrorType = NULL
		,RequiredAdminAction = NULL
		,DisplayErrorMessage = NULL
	WHERE Id = @Id
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateOfflineDrawersDTSyncAttemptAndError]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[UpdateOfflineDrawersDTSyncAttemptAndError] @Id INT
	,@SyncError NVARCHAR(max) = NULL
	,@SyncErrorCode INT = NULL
	,@SyncDrawerName NVARCHAR(100) = NULL
	,@SyncErrorType INT = NULL
	,@RequiredAdminAction BIT = NULL
	,@DisplayErrorMessage NVARCHAR(max) = NULL
AS
BEGIN
	UPDATE tblOfflineDrawersDT
	SET SyncAttempt = (ISNULL(SyncAttempt, 0) + 1)
		,IsSync = 0
		,SyncError = @SyncError
		,SyncErrorCode = @SyncErrorCode
		,SyncDrawerName = @SyncDrawerName
		,SyncErrorType = @SyncErrorType
		,RequiredAdminAction = @RequiredAdminAction
		,DisplayErrorMessage = @DisplayErrorMessage
	WHERE Id = @Id
END
GO

/****** Object:  StoredProcedure [dbo].[]    Script Date: 30-11-2020 17:36:00 AM ******/
CREATE PROCEDURE [dbo].[GetPOSDrTerminalIds]
AS
BEGIN
	SELECT intTerminalId AS TerminalId
		,strTerminalCode AS TerminalCode
	FROM tblTerminalSetup
	WHERE intTerminalId NOT IN (
			SELECT IsNull(intOfflineTerminalId, 0)
			FROM tblPOSdr 
			)
END
GO

/****** Object:  StoredProcedure [dbo].[GetGeoCoordByCRMActivityId]    Script Date: 2020-09-18 ******/
CREATE PROCEDURE GetGeoCoordByCRMActivityId 
	@ActivityId bigint = 0
AS
BEGIN
	SET NOCOUNT ON;
	SELECT ISNULL(GeoCoord.Lat, 0) AS  'Latitude', ISNULL(GeoCoord.Long, 0) AS 'Longitude'  FROM [dbo].[tblCRMActivities] WHERE [ActivityID]=@ActivityId 
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblInvItemTax]    Script Date: 2020-10-12 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblInvItemTax] @tblData
AS
InvItemTaxTableType READONLY AS
BEGIN
    BEGIN
        INSERT INTO tblInvItemTax (strPartNumber, bitOverrideTax, strOverridingTaxCode, bitUseMTV,decMinTaxAmount,strAffectedTaxCodes,dteRowInserted,dteRowUpdated, strKenyaItemTaxCode,strZambiaItemTaxCode)
        SELECT 
             strPartNumber, bitOverrideTax, strOverridingTaxCode, bitUseMTV,decMinTaxAmount,strAffectedTaxCodes,dteRowInserted,dteRowUpdated, strKenyaItemTaxCode,strZambiaItemTaxCode
        FROM @tblData AS t
        WHERE NOT EXISTS ( SELECT 1 FROM tblInvItemTax WHERE strPartNumber = t.strPartNumber )
    END

    BEGIN
        UPDATE tblInvItemTax
        SET strPartNumber = table2.strPartNumber
        , bitOverrideTax = table2.bitOverrideTax
        , strOverridingTaxCode = table2.strOverridingTaxCode 
        , bitUseMTV = table2.bitUseMTV
        , decMinTaxAmount = table2.decMinTaxAmount
        , strAffectedTaxCodes = table2.strAffectedTaxCodes
        , dteRowInserted = table2.dteRowInserted
        , dteRowUpdated = table2.dteRowUpdated
		,strKenyaItemTaxCode = table2.strKenyaItemTaxCode
        ,strZambiaItemTaxCode = table2.strZambiaItemTaxCode
        FROM tblInvItemTax AS table1
        INNER JOIN @tblData AS table2 ON (table1.strPartNumber = table2.strPartNumber)
    END
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvItemTax]    Script Date: 2020-10-12 ******/
CREATE PROCEDURE [dbo].[GetInvItemTax]
AS
BEGIN
	SELECT intInvItemTaxId AS InvItemTaxId
		,strPartNumber AS PartNumber
		,bitOverrideTax AS IsOverrideTax
		,strOverridingTaxCode AS OverridingTaxCode
		,bitUseMTV AS IsUseMTV
		,decMinTaxAmount AS MinTaxAmount
		,strAffectedTaxCodes AS AffectedTaxCodes
		,dteRowInserted AS RowInserted
		,dteRowUpdated AS RowUpdated
	FROM tblInvItemTax
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblEFDRegisterConfig]    Script Date: 2020-10-12 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblEFDRegisterConfig] @tblData  
AS  
EFDRegisterConfigTableType READONLY AS  
BEGIN  
 SET IDENTITY_INSERT tblEFDRegisterConfig ON  
 BEGIN  
  INSERT INTO tblEFDRegisterConfig   
   ( intEFDRegisterConfigID, strPosSerialNumber, strPosVendor, strPosSoftVersion, strPosModel, strIPAddress, intPort ,intID)  
  SELECT   
     intEFDRegisterConfigID, strPosSerialNumber, strPosVendor, strPosSoftVersion, strPosModel, strIPAddress, intPort,intID  
  FROM @tblData AS t  
  WHERE NOT EXISTS ( SELECT 1 FROM tblEFDRegisterConfig WHERE intID = t.intID )  
 END  
  
 BEGIN  
  UPDATE tblEFDRegisterConfig  
  SET strPosSerialNumber = table2.strPosSerialNumber, strPosVendor = table2.strPosVendor, strPosSoftVersion = table2.strPosSoftVersion, strPosModel = table2.strPosModel, strIPAddress = table2.strIPAddress, intPort = table2.intPort  
  FROM tblEFDRegisterConfig AS table1  
  INNER JOIN @tblData AS table2 ON (table1.intID = table2.intID)  
 END  
 SET IDENTITY_INSERT tblEFDRegisterConfig OFF  
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdateEFDRegisterConfig]    Script Date: 2020-10-12 ******/
CREATE PROCEDURE [dbo].[AddUpdateEFDRegisterConfig]     
   @PosSerialNumber AS NVARCHAR(100)    
 , @PosVendor AS NVARCHAR(100)    
 , @PosSoftVersion AS NVARCHAR(50)    
 , @PosModel AS NVARCHAR(50)    
 , @IPAddress AS NVARCHAR(20)    
 , @Port AS INT    
 ,@intID as int = null  
AS    
BEGIN    
 --IF (SELECT count(intEFDRegisterConfigID) FROM tblEFDRegisterConfig) >= 1    
 If @intID > 0  
 BEGIN    
  UPDATE [dbo].[tblEFDRegisterConfig]    
  SET [strPosSerialNumber] = @PosSerialNumber    
   , [strPosVendor] = @PosVendor    
   , [strPosSoftVersion] = @PosSoftVersion    
   , [strPosModel] = @PosModel    
   , [strIPAddress] = @IPAddress    
   , [intPort] = @Port    
   , [dteRowUpdated] = GETDATE()    
   where intID = @intID  
 END    
 ELSE    
 BEGIN    
  INSERT INTO [dbo].[tblEFDRegisterConfig] (    
     [intEFDRegisterConfigID]    
   , [strPosSerialNumber]    
   , [strPosVendor]    
   , [strPosSoftVersion]    
   , [strPosModel]    
   , [strIPAddress]    
   , [intPort]    
   , [dteRowUpdated]     
   )    
  VALUES (    
 null  
  ,@PosSerialNumber    
   , @PosVendor    
   , @PosSoftVersion    
   , @PosModel    
   , @IPAddress    
   , @Port    
   , GETDATE()    
   )    
END    
END
GO

/****** Object:  StoredProcedure [dbo].[GetEFDRegisterConfig]    Script Date: 2020-10-12 ******/
CREATE PROCEDURE [dbo].[GetEFDRegisterConfig]
AS
BEGIN
	SELECT 
       [strPosSerialNumber] AS PosSerialNumber
      ,[strPosVendor] AS PosVendor
      ,[strPosSoftVersion] As PosSoftVersion
      ,[strPosModel] AS PosModel
      ,[strIPAddress] AS IPAddress
      ,[intPort] AS [Port]
  FROM [dbo].[tblEFDRegisterConfig]
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblEFDInvoiceDoc]    Script Date: 2020-10-12 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblEFDInvoiceDoc] 
@tblData AS EFDInvoiceDocTableType READONLY AS
BEGIN
	BEGIN
		INSERT INTO tblEFDInvoiceDoc
			(strInvDocID, intTransactionType, strRequestData, strResponseData,rcptNumber,strsdcId)
		SELECT 
			 strInvDocID, intTransactionType, strRequestData, strResponseData,rcptNumber,strsdcId
		FROM @tblData AS t
		WHERE NOT EXISTS ( SELECT 1 FROM tblEFDInvoiceDoc WHERE strInvDocID = t.strInvDocID )
	END

	BEGIN
		UPDATE tblEFDInvoiceDoc
		SET strInvDocID = table2.strInvDocID, intTransactionType = table2.intTransactionType, strRequestData = table2.strRequestData, strResponseData = table2.strResponseData
		,rcptNumber = table2.rcptNumber
		,strsdcId = table2.strsdcId
		FROM tblEFDInvoiceDoc AS table1
		INNER JOIN @tblData AS table2 ON (table1.strInvDocID = table2.strInvDocID)
	END
END
GO

/****** Object:  StoredProcedure [dbo].[AddEFDInvoiceDetails]    Script Date: 2020-10-12 ******/
CREATE PROCEDURE [dbo].[AddEFDInvoiceDetails]
(	@InvoiceDoc VARCHAR(50)
	,@TransactionType INT
	,@RequestData NVARCHAR(MAX)
	,@ResponseData NVARCHAR(MAX)
	,@RcptNo NVARCHAR(MAX)
	,@StrsdcId NVARCHAR(MAX)
	)
AS
BEGIN
	INSERT INTO [dbo].[tblEFDInvoiceDoc] (
		[strInvDocID]
		,[intTransactionType]
		,[strRequestData]
		,[strResponseData]
		,[dteRowUpdated]
		,[rcptNumber]
		,[strsdcId]
		)
	VALUES(
		@InvoiceDoc
		,@TransactionType
		,@RequestData
		,@ResponseData
		,GETDATE()
		,@RcptNo
		,@StrsdcId
		)
END
GO

/****** Object:  StoredProcedure [dbo].[GetEFDSigninvoiceResponseDetails]    Script Date: 2020-10-12 ******/
CREATE PROCEDURE [dbo].[GetEFDSigninvoiceResponseDetails] (@DocNumber VARCHAR(20))
AS
DECLARE @HomeCurrency NVARCHAR(10)
	,@ForeignCurrency NVARCHAR(25)
	,@ZRARef NVARCHAR(50) = ''
	,@ExRate DECIMAL(18, 4) = 0;

SELECT @ZRARef = CASE 
		WHEN JSON_VALUE(strRequestData, '$.orgSdcId') IS NOT NULL
			AND JSON_VALUE(strRequestData, '$.orgInvcNo') <> '0'
			THEN CONCAT (
					REPLACE(JSON_VALUE(strRequestData, '$.orgSdcId'), 'SDC', 'INV')
					,'/'
					,JSON_VALUE(strRequestData, '$.orgInvcNo')
					)
		ELSE ''
		END
FROM tblEFDInvoiceDoc
WHERE strInvDocID = @DocNumber
	AND intTransactionType = 0;

SELECT @HomeCurrency = strCurrency
FROM tblCurrency
WHERE bitHome = 1

SELECT @ExRate = CAST(decExchange AS DECIMAL(18, 4))
FROM tblInvoiceDoc
WHERE strInvDocID = @DocNumber

SELECT @ForeignCurrency = CONCAT (
		strCurrency
		,' 1'
		)
FROM tblInvoiceDoc
WHERE strInvDocID = @DocNumber

BEGIN
	DECLARE @JsonResponse NVARCHAR(MAX);
	DECLARE @intType INT;

	SET @JsonResponse = (
			SELECT TOP 1 strResponseData
			FROM tblEFDInvoiceDoc
			WHERE strInvDocID = @DocNumber
				AND intTransactionType = 0
			)
	SET @intType = (
			SELECT TOP 1 intTransactionType
			FROM tblEFDInvoiceDoc
			WHERE strInvDocID = @DocNumber
				AND intTransactionType = 0
			)

	PRINT @JsonResponse

	SELECT *
	INTO #Main
	FROM (
		SELECT max(CASE 
					WHEN name = 'qrCodeUrl'
						THEN CONVERT(VARCHAR(max), StringValue)
					ELSE ''
					END) AS [QRCodeUrl]
			,max(CASE 
					WHEN name = 'rcptSign'
						THEN CONVERT(VARCHAR(50), StringValue)
					ELSE ''
					END) AS [FiscalSignature]
			,max(CASE 
					WHEN name = 'sdcId'
						THEN CONVERT(VARCHAR(100), StringValue)
					ELSE ''
					END) AS [SDCID]
			,max(CASE 
					WHEN name = 'vsdcRcptPbctDate'
						THEN CONVERT(VARCHAR(50), StringValue)
					ELSE ''
					END) AS [VSDCDate]
			,max(CASE 
					WHEN name = 'intrlData'
						THEN CONVERT(VARCHAR(50), StringValue)
					ELSE ''
					END) AS [InternalData]
			,max(CASE 
					WHEN name = 'rcptNo'
						THEN CONVERT(VARCHAR(50), StringValue)
					ELSE ''
					END) AS [RcptNo]
			,REPLACE(MAX(CASE 
						WHEN name = 'sdcId'
							THEN CONVERT(VARCHAR(100), StringValue)
						ELSE ''
						END), 'SDC', CASE 
					WHEN @DocNumber LIKE '%CN-%'
						THEN 'CRN'
					ELSE 'INV'
					END) + '/' + MAX(CASE 
					WHEN name = 'rcptNo'
						THEN CONVERT(VARCHAR(50), StringValue)
					ELSE ''
					END) AS [InvoiceNumber]
			,@HomeCurrency + ' ' + CAST(@ExRate AS NVARCHAR(10)) + ' : ' + @ForeignCurrency AS [ExchangeRate]
			,@ZRARef AS [ZRARef]
		FROM parseJSON(ISNULL(@JsonResponse, '{}'))
		WHERE ValueType = 'string'
			OR ValueType = 'boolean'
			OR ValueType = 'int'
			OR ValueType = 'real'
		GROUP BY parent_ID
		) AS tbl

	SELECT @intType AS InvoiceType
		,QRCodeUrl
		,FiscalSignature
		,SDCID
		,VSDCDate
		,InternalData
		,RcptNo
		,InvoiceNumber
		,ExchangeRate
		,ZRARef
	FROM #Main
	WHERE SDCID <> ''
END
GO

/****** Object:  StoredProcedure [dbo].[GetEFDInvoiceDoc]    Script Date: 2020-10-12 ******/
CREATE PROCEDURE [dbo].[GetEFDInvoiceDoc]
@InvoiceDoc NVARCHAR(20) = '',
@Type int = 0

AS
BEGIN
	SELECT TOP 1 strInvDocID AS InvoiceDoc
		,intTransactionType AS TransactionType
		,strRequestData AS RequestData
		,strResponseData AS ResponseData
	FROM tblEFDInvoiceDoc
	WHERE strInvDocID = @InvoiceDoc AND intTransactionType = @Type
END
GO

/****** Object:  StoredProcedure [dbo].[GetEFDSigninvoiceResponseDetailsForAR]    Script Date: 2020-10-12 ******/
CREATE PROCEDURE [dbo].[GetEFDSigninvoiceResponseDetailsForAR]     
( @SQDocNumber varchar(20)    
)    
AS    
BEGIN    
 DECLARE @JsonResponse NVARCHAR(MAX);    
 SET @JsonResponse = (SELECT TOP 1 strResponseData from tblEFDInvoiceDoc WHERE strInvDocID = @SQDocNumber)    
 SELECT *    
 INTO #Main    
 FROM (    
  SELECT     
     max(CASE WHEN name = 'TPIN' THEN CONVERT(VARCHAR(50), StringValue) ELSE '' END) AS [TPIN],     
     max(CASE WHEN name = 'ESDTime' THEN CONVERT(VARCHAR(50), StringValue) ELSE '' END) AS [ESDTime],     
     max(CASE WHEN name = 'TerminalID' THEN CONVERT(VARCHAR(100), StringValue) ELSE '' END) AS [TerminalID],     
     max(CASE WHEN name = 'BuyerTPIN' THEN CONVERT(VARCHAR(50), StringValue) ELSE '' END) AS [BuyerTPIN],     
     max(CASE WHEN name = 'BuyerName' THEN CONVERT(VARCHAR(50), StringValue) ELSE '' END) AS [BuyerName],     
     max(CASE WHEN name = 'TotalAmount' THEN CONVERT(VARCHAR(50), StringValue) ELSE '' END) AS [TotalAmount],     
     max(CASE WHEN name = 'VerificationUrl' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE '' END) AS [VerificationUrl],     
     max(CASE WHEN name = 'InvoiceCode' THEN CONVERT(VARCHAR(50), StringValue) ELSE '' END) AS [InvoiceCode],     
     max(CASE WHEN name = 'InvoiceNumber' THEN CONVERT(VARCHAR(50), StringValue) ELSE '' END) AS [InvoiceNumber],     
     max(CASE WHEN name = 'TaxLabel' THEN CONVERT(VARCHAR(50), StringValue) ELSE '' END) AS [TaxLabel],     
     max(CASE WHEN name = 'CategoryName' THEN CONVERT(VARCHAR(50), StringValue) ELSE '' END) AS [CategoryName],     
     max(CASE WHEN name = 'Rate' THEN CONVERT(REAl, StringValue) ELSE '' END) AS [Rate],     
     max(CASE WHEN name = 'TaxAmount' THEN CONVERT(VARCHAR(50), StringValue) ELSE ''END) AS [TaxAmount],     
     max(CASE WHEN name = 'FiscalCode' THEN CONVERT(VARCHAR(80), StringValue) ELSE '' END) AS [FiscalCode]    
  FROM parseJSON(    
    ISNULL(@JsonResponse, '{}')    
   )    
  WHERE ValueType = 'string'    
   OR ValueType = 'boolean'    
   OR ValueType = 'int'    
   OR ValueType = 'real'    
  GROUP BY parent_ID    
  ) AS tbl    
    
      
 SELECT * INTO #Parent FROM #Main WHERE ESDTime <> ''    
    
 SELECT * INTO #Child FROM #Main WHERE [ESDTime] = ''    
    
 -- Update #Parent table to seperate date and time    
 ALTER TABLE #Parent ADD ESDCDate DATE, ESDCTime CHAR(8)    
    
 DECLARE @strDate VARCHAR(15) = (SELECT TOP 1 #Parent.ESDTime FROM #Parent)    
    
 DECLARE @TimeValue CHAR(6), @Date DATE, @Time CHAR(8)    
    
 SET @TimeValue = SUBSTRING(@strDate, 9, 6)    
    
 SET @Date = CONVERT(DATE, SUBSTRING(@strDate, 1, 8))    
    
 SET @Time = SUBSTRING(@TimeValue, 1, 2) + ':' + SUBSTRING(@TimeValue, 3, 2) + ':' + SUBSTRING(@TimeValue, 5, 2)    
     
 UPDATE #Parent SET ESDCDate = @Date, ESDCTime = @Time    
     
 SELECT #Parent.TPIN,   
  #Parent.ESDTime,   
  #Parent.InvoiceCode,   
  #Parent.InvoiceNumber,   
  #Parent.BuyerName,   
  #Parent.BuyerTPIN,   
  #Parent.TerminalID,   
  CONVERT(varchar(50),#Parent.TotalAmount) AS TotalAmount,   
  convert(varbinary(MAX), #Parent.VerificationUrl) AS VerificationUrl,   
  convert(varchar(MAX), #Parent.VerificationUrl) AS VerificationUrlPlain,   
  #Parent.FiscalCode,   
  #Child.TaxLabel,   
  #Child.CategoryName,   
  CONVERT(varchar(50),#Child.Rate) AS Rate,   
  CONVERT(varchar(50),#Child.TaxAmount) AS TaxAmount,  
  CONVERT(varchar(50), #Parent.ESDCDate) AS ESDCDate,   
  CONVERT(varchar(50),#Parent.ESDCTime) AS ESDCTime  
  FROM #Parent, #Child    
END 
GO

/****** Object:  StoredProcedure [dbo].[AddUpdateEFDRegisterSettings]    Script Date: 2020-10-12 ******/
CREATE PROCEDURE [dbo].[AddUpdateEFDRegisterSettings] 
	@IsZambiaCustomerVATRequired AS BIT
	,@ZambiaCustomerVATLength AS INT
AS
BEGIN
	IF (
			SELECT count(*)
			FROM tblEFDRegisterSettings
			) >= 1
	BEGIN
		UPDATE [dbo].[tblEFDRegisterSettings]
		SET [bitZambiaCustomerVATRequired] = @IsZambiaCustomerVATRequired
			,[intZambiaCustomerVATLength] = @ZambiaCustomerVATLength
			,[dteRowUpdated] = GETDATE()
	END
	ELSE
	BEGIN
		INSERT INTO [dbo].[tblEFDRegisterSettings] (
			[bitZambiaCustomerVATRequired]
			,[intZambiaCustomerVATLength]
			,[dteRowUpdated]
			)
		VALUES (
			@IsZambiaCustomerVATRequired
			,@ZambiaCustomerVATLength
			,GETDATE()
			)
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetEFDRegisterSettings]    Script Date: 2020-10-12 ******/
CREATE PROCEDURE [dbo].[GetEFDRegisterSettings]
AS
BEGIN
	SELECT [bitZambiaCustomerVATRequired] AS IsZambiaCustomerVATRequired
		,[intZambiaCustomerVATLength] AS ZambiaCustomerVATLength
		,[dteRowUpdated] AS RowUpdated
	FROM [dbo].[tblEFDRegisterSettings]
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblEFDRegisterSettings]    Script Date: 2020-10-12 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblEFDRegisterSettings] @tblData
AS
EFDRegisterSettingsTableType READONLY AS
BEGIN
	BEGIN
		INSERT INTO tblEFDRegisterSettings(bitZambiaCustomerVATRequired,intZambiaCustomerVATLength,dteRowUpdated)
		SELECT 
			 bitZambiaCustomerVATRequired,intZambiaCustomerVATLength,dteRowUpdated
		FROM @tblData AS t
		WHERE NOT EXISTS ( SELECT 1 FROM tblEFDRegisterSettings)
	END

	BEGIN
		UPDATE tblEFDRegisterSettings
		SET bitZambiaCustomerVATRequired = table1.bitZambiaCustomerVATRequired
		, intZambiaCustomerVATLength = table1.intZambiaCustomerVATLength
		, dteRowUpdated = table1.dteRowUpdated 
		FROM @tblData AS table1
	END
END
GO

/****** Object:  StoredProcedure [dbo].[IsOpenCashDrawerTenderType]    Script Date: 06-01-2021 13:34:00 ******/
CREATE PROCEDURE [dbo].[IsOpenCashDrawerTenderType] 
@TenderTypeName NVARCHAR(100)
AS
BEGIN
   SELECT CASE WHEN EXISTS (
    SELECT *
 FROM tblTenderTypes WHERE strName = @TenderTypeName and bitOpenCashDrawer = 1
)
THEN CAST(1 AS BIT)
ELSE CAST(0 AS BIT) 
END
END
GO

/****** Object:  StoredProcedure [dbo].[InsertOfflineDrawersData]    Script Date: 2020-12-22 ******/
CREATE PROCEDURE [dbo].[InsertOfflineDrawersData]
 @DrawerData NVARCHAR(Max)
 ,@DrawerActionType int
AS
BEGIN
	-- Insert statements for procedure here
	INSERT INTO tblOfflineDrawersDT (
		DrawerData
		,IsSync
		,SyncDate
	,DrawerActionType
		)
	VALUES (
		@DrawerData
		,0
		,GETDATE()
		,@DrawerActionType
		)
END
GO

/****** Object:  StoredProcedure [dbo].[GetOfflineDrawersDT]    Script Date: 2020-12-22 ******/
CREATE PROCEDURE [dbo].[GetOfflineDrawersDT]
AS
BEGIN
   select * from tblOfflineDrawersDT where IsSync = 0
END
GO

/****** Object:  StoredProcedure [dbo].[GetPOSDrsTerminalIds]    Script Date: 2020-12-22 ******/
CREATE PROCEDURE [dbo].[GetPOSDrsTerminalIds]
AS
BEGIN
	SELECT intTerminalId AS TerminalId
		,strTerminalCode AS TerminalCode
	FROM tblTerminalSetup
END
GO

/****** Object:  StoredProcedure [dbo].[SPRptListTrialBalDept_LoadQuery_1]    Script Date: 27-12-2020 15:30:00 ******/
CREATE PROCEDURE [dbo].[SPRptListTrialBalDept_LoadQuery_1]
@SQDept NVARCHAR(MAX),
@SQuidYearID UNIQUEIDENTIFIER,
@optCurrentYear_IsChecked BIT,
@optPreviousYear_IsChecked BIT,
@optHistoryYear_IsChecked BIT,
@dteAsAtDate AS DATETIME,
@decExchange MONEY
AS
BEGIN

CREATE TABLE #Temp_Dept (
[intDept] [int] NOT NULL,
[strDeptDesc] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL)

INSERT INTO #Temp_Dept ([intDept])
SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(','))

UPDATE #Temp_Dept
SET strDeptDesc = DEPT.strDesc
FROM tblDepartments DEPT
WHERE #Temp_Dept.intDept = DEPT.intDept 

UPDATE #Temp_Dept
SET strDeptDesc = 'Unallocated'
WHERE intDept = 0

CREATE TABLE #Temp_DS (
[intGLNumber] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, 
[strDesc] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, 
[decDebits_Dept] [money] NULL,
[decCredits_Dept] [money] NULL,
[decDebits_NoAlloc] [money] NULL,
[decCredits_NoAlloc] [money] NULL,
[decDebits_Main] [money] NULL,
[decCredits_Main] [money] NULL,
[intAccType] [int] NULL,
[intGLNumber_Main] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, 
[intDept] [int] NULL,
[bitIsCreditAccType] [bit] NULL)

/*
IF (SELECT COUNT(intDept) FROM #Temp_Dept) > 1
BEGIN 

	IF @optCurrentYear_IsChecked = 1
	BEGIN

		INSERT INTO #Temp_DS
		SELECT	intGLNumber,
				strDesc,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN 0
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN SUM(decOpenBalance_Dept) * -1
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN SUM(decOpenBalance_Dept)
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN 0
										 ELSE 0
									END
						  END
				END AS decDebits_Dept,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN SUM(decOpenBalance_Dept)
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN 0
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN 0
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN SUM(decOpenBalance_Dept) * -1
										 ELSE 0
									END
						  END
				END AS decCredits_Dept,
				0 AS decDebits_NoAlloc,
				0 AS decCredits_NoAlloc,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN decOpenBalance_Main > 0
							   THEN 0
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN decOpenBalance_Main * -1
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN decOpenBalance_Main > 0
							   THEN decOpenBalance_Main
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN 0
										 ELSE 0
									END
						  END
				END AS decDebits_Main,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN decOpenBalance_Main > 0
							   THEN decOpenBalance_Main
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN 0
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN decOpenBalance_Main > 0
							   THEN 0
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN decOpenBalance_Main * -1
										 ELSE 0
									END
						  END
				END AS decCredits_Main,
				intAccType,
				intGLNumber AS intGLNumber_Main,
				intDept,
				bitIsCreditAccType
		FROM (SELECT intGLNumber, 
					 strDesc, 
					 0 AS decOpenBalance_Dept,
					 (decOpenBalance / @decExchange) AS decOpenBalance_Main, 
					 intAccType, 
					 DEPT.intDept,
					 CASE WHEN intAccType BETWEEN 2 AND 4 THEN 1 ELSE 0 END AS bitIsCreditAccType
			  FROM tblAccounts 
			  CROSS JOIN #Temp_Dept DEPT
			  WHERE (intGroupCode < 3) 
			  AND (bitLinkCEarnings = 0)
			  AND (DEPT.intDept = 0)
			  UNION ALL
			  SELECT tblAccounts.intGLNumber, 
					 tblAccounts.strDesc, 
					 (ISNULL(tblAccountsDept.decOpenBalance, 0) / @decExchange) AS decOpenBalance_Dept,
					 (tblAccounts.decOpenBalance / @decExchange) AS decOpenBalance_Main, 
					 tblAccounts.intAccType,
					 0 AS intDept,
					 CASE WHEN tblAccounts.intAccType BETWEEN 2 AND 4 THEN 1 ELSE 0 END AS bitIsCreditAccType
			  FROM tblAccounts 
			  INNER JOIN tblAccountsDept ON tblAccounts.intGLNumber = tblAccountsDept.intGLNumber 
			  INNER JOIN #Temp_Dept ON tblAccountsDept.intDept = #Temp_Dept.intDept 
			  WHERE (tblAccounts.intGroupCode < 3) 
			  AND (tblAccounts.bitLinkCEarnings = 0)) AS T 
		GROUP BY intGLNumber,
				 strDesc,
				 decOpenBalance_Main,
				 intAccType,
				 intDept,
				 bitIsCreditAccType
		ORDER BY intAccType, 
				 intGLNumber

	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN

		INSERT INTO #Temp_DS
		SELECT	intGLNumber,
				strDesc,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN 0
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN SUM(decOpenBalance_Dept) * -1
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN SUM(decOpenBalance_Dept)
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN 0
										 ELSE 0
									END
						  END
				END AS decDebits_Dept,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN SUM(decOpenBalance_Dept)
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN 0
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN 0
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN SUM(decOpenBalance_Dept) * -1
										 ELSE 0
									END
						  END
				END AS decCredits_Dept,
				0 AS decDebits_NoAlloc,
				0 AS decCredits_NoAlloc,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN decOpenBalance_Main > 0
							   THEN 0
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN decOpenBalance_Main * -1
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN decOpenBalance_Main > 0
							   THEN decOpenBalance_Main
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN 0
										 ELSE 0
									END
						  END
				END AS decDebits_Main,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN decOpenBalance_Main > 0
							   THEN decOpenBalance_Main
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN 0
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN decOpenBalance_Main > 0
							   THEN 0
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN decOpenBalance_Main * -1
										 ELSE 0
									END
						  END
				END AS decCredits_Main,
				intAccType,
				intGLNumber AS intGLNumber_Main,
				intDept,
				bitIsCreditAccType
		FROM (SELECT intGLNumber, 
					 strDesc, 
					 0 AS decOpenBalance_Dept,
					 (decOpenBalance / @decExchange) AS decOpenBalance_Main, 
					 intAccType, 
					 DEPT.intDept,
					 CASE WHEN intAccType BETWEEN 2 AND 4 THEN 1 ELSE 0 END AS bitIsCreditAccType
			  FROM tblAccountsLY 
			  CROSS JOIN #Temp_Dept DEPT
			  WHERE (intGroupCode < 3) 
			  AND (bitLinkCEarnings = 0)
			  AND (DEPT.intDept = 0)
			  UNION ALL
			  SELECT tblAccountsLY.intGLNumber, 
					 tblAccountsLY.strDesc, 
					 (ISNULL(tblAccountsDeptLY.decOpenBalance, 0) / @decExchange) AS decOpenBalance_Dept,
					 (tblAccountsLY.decOpenBalance / @decExchange) AS decOpenBalance_Main, 
					 tblAccountsLY.intAccType,
					 0 AS intDept,
					 CASE WHEN tblAccountsLY.intAccType BETWEEN 2 AND 4 THEN 1 ELSE 0 END AS bitIsCreditAccType
			  FROM tblAccountsLY 
			  INNER JOIN tblAccountsDeptLY ON tblAccountsLY.intGLNumber = tblAccountsDeptLY.intGLNumber 
			  INNER JOIN #Temp_Dept ON tblAccountsDeptLY.intDept = #Temp_Dept.intDept 
			  WHERE (tblAccountsLY.intGroupCode < 3) 
			  AND (tblAccountsLY.bitLinkCEarnings = 0)) AS T 
		GROUP BY intGLNumber,
				 strDesc,
				 decOpenBalance_Main,
				 intAccType,
				 intDept,
				 bitIsCreditAccType
		ORDER BY intAccType, 
				 intGLNumber

	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN	

		INSERT INTO #Temp_DS
		SELECT	intGLNumber,
				strDesc,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN 0
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN SUM(decOpenBalance_Dept) * -1
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN SUM(decOpenBalance_Dept)
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN 0
										 ELSE 0
									END
						  END
				END AS decDebits_Dept,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN SUM(decOpenBalance_Dept)
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN 0
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN 0
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN SUM(decOpenBalance_Dept) * -1
										 ELSE 0
									END
						  END
				END AS decCredits_Dept,
				0 AS decDebits_NoAlloc,
				0 AS decCredits_NoAlloc,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN decOpenBalance_Main > 0
							   THEN 0
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN decOpenBalance_Main * -1
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN decOpenBalance_Main > 0
							   THEN decOpenBalance_Main
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN 0
										 ELSE 0
									END
						  END
				END AS decDebits_Main,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN decOpenBalance_Main > 0
							   THEN decOpenBalance_Main
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN 0
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN decOpenBalance_Main > 0
							   THEN 0
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN decOpenBalance_Main * -1
										 ELSE 0
									END
						  END
				END AS decCredits_Main,
				intAccType,
				intGLNumber AS intGLNumber_Main,
				intDept,
				bitIsCreditAccType
		FROM (SELECT intGLNumber, 
					 strDesc, 
					 0 AS decOpenBalance_Dept,
					 (decOpenBalance / @decExchange) AS decOpenBalance_Main, 
					 intAccType, 
					 DEPT.intDept,
					 CASE WHEN intAccType BETWEEN 2 AND 4 THEN 1 ELSE 0 END AS bitIsCreditAccType
			  FROM tblAccountsHist 
			  CROSS JOIN #Temp_Dept DEPT
			  WHERE (uidYearID = @SQuidYearID) 
			  AND (intGroupCode < 3) 
			  AND (bitLinkCEarnings = 0)
			  AND (DEPT.intDept = 0)
			  UNION ALL
			  SELECT tblAccountsHist.intGLNumber, 
					 tblAccountsHist.strDesc, 
					 (ISNULL(tblAccountsDeptHist.decOpenBalance, 0) / @decExchange) AS decOpenBalance_Dept,
					 (tblAccountsHist.decOpenBalance / @decExchange) AS decOpenBalance_Main, 
					 tblAccountsHist.intAccType,
					 0 AS intDept,
					 CASE WHEN tblAccountsHist.intAccType BETWEEN 2 AND 4 THEN 1 ELSE 0 END AS bitIsCreditAccType
			  FROM tblAccountsHist 
			  INNER JOIN tblAccountsDeptHist ON tblAccountsHist.uidYearID = tblAccountsDeptHist.uidYearID AND tblAccountsHist.intGLNumber = tblAccountsDeptHist.intGLNumber 
			  INNER JOIN #Temp_Dept ON tblAccountsDeptHist.intDept = #Temp_Dept.intDept 
			  WHERE (tblAccountsHist.uidYearID = @SQuidYearID) 
			  AND (tblAccountsHist.intGroupCode < 3) 
			  AND (tblAccountsHist.bitLinkCEarnings = 0)) AS T 
		GROUP BY intGLNumber,
				 strDesc,
				 decOpenBalance_Main,
				 intAccType,
				 intDept,
				 bitIsCreditAccType
		ORDER BY intAccType, 
				 intGLNumber

	END

	IF @optCurrentYear_IsChecked = 1 
	BEGIN

		UPDATE #Temp_DS
		SET decDebits_Main = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
								  THEN CASE WHEN JE.decAmount > 0
											THEN decDebits_Main
											ELSE CASE WHEN JE.decAmount < 0
													  THEN decDebits_Main + (JE.decAmount * -1)
													  ELSE decDebits_Main
												 END
									   END
								  ELSE CASE WHEN JE.decAmount > 0
											THEN decDebits_Main + JE.decAmount
											ELSE decDebits_Main
									   END
							 END,
			decCredits_Main = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
								   THEN CASE WHEN JE.decAmount > 0
											 THEN decCredits_Main + JE.decAmount
											 ELSE decCredits_Main
										END
								   ELSE CASE WHEN JE.decAmount > 0
											 THEN decCredits_Main
											 ELSE CASE WHEN JE.decAmount < 0
													   THEN decCredits_Main + (JE.decAmount * -1)
													   ELSE decCredits_Main
												  END
										END
							  END
		FROM (SELECT tblJournalEnt.intGLNumber, 
					 (SUM(tblJournalEnt.decAmount) / @decExchange) AS decAmount
			  FROM tblJournalEnt 
			  INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
			  INNER JOIN #Temp_Dept ON ISNULL(tblJournalEnt.intDept, 0) = #Temp_Dept.intDept 
			  WHERE (tblJournal.dteJournalDate <= @dteAsAtDate) 
			  GROUP BY tblJournalEnt.intGLNumber) JE
		WHERE #Temp_DS.intGLNumber = JE.intGLNumber 

	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
	
		UPDATE #Temp_DS
		SET decDebits_Main = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
								  THEN CASE WHEN JE.decAmount > 0
											THEN decDebits_Main
											ELSE CASE WHEN JE.decAmount < 0
													  THEN decDebits_Main + (JE.decAmount * -1)
													  ELSE decDebits_Main
												 END
									   END
								  ELSE CASE WHEN JE.decAmount > 0
											THEN decDebits_Main + JE.decAmount
											ELSE decDebits_Main
									   END
							 END,
			decCredits_Main = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
								   THEN CASE WHEN JE.decAmount > 0
											 THEN decCredits_Main + JE.decAmount
											 ELSE decCredits_Main
										END
								   ELSE CASE WHEN JE.decAmount > 0
											 THEN decCredits_Main
											 ELSE CASE WHEN JE.decAmount < 0
													   THEN decCredits_Main + (JE.decAmount * -1)
													   ELSE decCredits_Main
												  END
										END
							  END
		FROM (SELECT tblJournalEntLY.intGLNumber, 
					 (SUM(tblJournalEntLY.decAmount) / @decExchange) AS decAmount
			  FROM tblJournalEntLY 
			  INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
			  INNER JOIN #Temp_Dept ON ISNULL(tblJournalEntLY.intDept, 0) = #Temp_Dept.intDept 
			  WHERE (tblJournalLY.dteJournalDate <= @dteAsAtDate) 
			  GROUP BY tblJournalEntLY.intGLNumber) JE
		WHERE #Temp_DS.intGLNumber = JE.intGLNumber 

	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN

		UPDATE #Temp_DS
		SET decDebits_Main = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
								  THEN CASE WHEN JE.decAmount > 0
											THEN decDebits_Main
											ELSE CASE WHEN JE.decAmount < 0
													  THEN decDebits_Main + (JE.decAmount * -1)
													  ELSE decDebits_Main
												 END
									   END
								  ELSE CASE WHEN JE.decAmount > 0
											THEN decDebits_Main + JE.decAmount
											ELSE decDebits_Main
									   END
							 END,
			decCredits_Main = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
								   THEN CASE WHEN JE.decAmount > 0
											 THEN decCredits_Main + JE.decAmount
											 ELSE decCredits_Main
										END
								   ELSE CASE WHEN JE.decAmount > 0
											 THEN decCredits_Main
											 ELSE CASE WHEN JE.decAmount < 0
													   THEN decCredits_Main + (JE.decAmount * -1)
													   ELSE decCredits_Main
												  END
										END
							  END
		FROM (SELECT tblJournalEntHist.intGLNumber, 
					 (SUM(tblJournalEntHist.decAmount) / @decExchange) AS decAmount
			  FROM tblJournalEntHist 
			  INNER JOIN tblJournalHist ON tblJournalEntHist.uidYearID = tblJournalHist.uidYearID 
									    AND tblJournalEntHist.lngJourID = tblJournalHist.lngJourID 
			  INNER JOIN #Temp_Dept ON ISNULL(tblJournalEntHist.intDept, 0) = #Temp_Dept.intDept 
			  WHERE (tblJournalEntHist.uidYearID = @SQuidYearID) 
			  AND (tblJournalHist.dteJournalDate <= @dteAsAtDate) 
			  GROUP BY tblJournalEntHist.intGLNumber) JE
		WHERE #Temp_DS.intGLNumber = JE.intGLNumber 

	END

END
ELSE
BEGIN 
*/

	IF @optCurrentYear_IsChecked = 1
	BEGIN

		INSERT INTO #Temp_DS
		SELECT	intGLNumber,
				strDesc,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN 0
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN SUM(decOpenBalance_Dept) * -1
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN SUM(decOpenBalance_Dept)
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN 0
										 ELSE 0
									END
						  END
				END AS decDebits_Dept,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN SUM(decOpenBalance_Dept)
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN 0
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN 0
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN SUM(decOpenBalance_Dept) * -1
										 ELSE 0
									END
						  END
				END AS decCredits_Dept,
				0 AS decDebits_NoAlloc,
				0 AS decCredits_NoAlloc,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN decOpenBalance_Main > 0
							   THEN 0
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN decOpenBalance_Main * -1
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN decOpenBalance_Main > 0
							   THEN decOpenBalance_Main
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN 0
										 ELSE 0
									END
						  END
				END AS decDebits_Main,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN decOpenBalance_Main > 0
							   THEN decOpenBalance_Main
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN 0
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN decOpenBalance_Main > 0
							   THEN 0
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN decOpenBalance_Main * -1
										 ELSE 0
									END
						  END
				END AS decCredits_Main,
				intAccType,
				intGLNumber AS intGLNumber_Main,
				intDept,
				bitIsCreditAccType
		FROM (SELECT intGLNumber, 
					 strDesc, 
					 0 AS decOpenBalance_Dept,
					 (decOpenBalance / @decExchange) AS decOpenBalance_Main, 
					 intAccType, 
					 DEPT.intDept,
					 CASE WHEN intAccType BETWEEN 2 AND 4 THEN 1 ELSE 0 END AS bitIsCreditAccType
			  FROM tblAccounts 
			  CROSS JOIN #Temp_Dept DEPT
			  WHERE (intGroupCode < 3) 
			  AND (bitLinkCEarnings = 0)
			  AND (DEPT.intDept = 0)
			  UNION ALL
			  SELECT tblAccounts.intGLNumber, 
					 tblAccounts.strDesc, 
					 (ISNULL(tblAccountsDept.decOpenBalance, 0) / @decExchange) AS decOpenBalance_Dept,
					 (tblAccounts.decOpenBalance / @decExchange) AS decOpenBalance_Main, 
					 tblAccounts.intAccType,
					 #Temp_Dept.intDept,
					 CASE WHEN tblAccounts.intAccType BETWEEN 2 AND 4 THEN 1 ELSE 0 END AS bitIsCreditAccType
			  FROM tblAccounts 
			  INNER JOIN tblAccountsDept ON tblAccounts.intGLNumber = tblAccountsDept.intGLNumber 
			  INNER JOIN #Temp_Dept ON tblAccountsDept.intDept = #Temp_Dept.intDept 
			  WHERE (tblAccounts.intGroupCode < 3) 
			  AND (tblAccounts.bitLinkCEarnings = 0)) AS T 
		GROUP BY intGLNumber,
				 strDesc,
				 decOpenBalance_Main,
				 intAccType,
				 intDept,
				 bitIsCreditAccType
		ORDER BY intAccType, 
				 intGLNumber

	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN

		INSERT INTO #Temp_DS
		SELECT	intGLNumber,
				strDesc,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN 0
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN SUM(decOpenBalance_Dept) * -1
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN SUM(decOpenBalance_Dept)
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN 0
										 ELSE 0
									END
						  END
				END AS decDebits_Dept,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN SUM(decOpenBalance_Dept)
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN 0
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN 0
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN SUM(decOpenBalance_Dept) * -1
										 ELSE 0
									END
						  END
				END AS decCredits_Dept,
				0 AS decDebits_NoAlloc,
				0 AS decCredits_NoAlloc,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN decOpenBalance_Main > 0
							   THEN 0
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN decOpenBalance_Main * -1
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN decOpenBalance_Main > 0
							   THEN decOpenBalance_Main
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN 0
										 ELSE 0
									END
						  END
				END AS decDebits_Main,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN decOpenBalance_Main > 0
							   THEN decOpenBalance_Main
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN 0
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN decOpenBalance_Main > 0
							   THEN 0
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN decOpenBalance_Main * -1
										 ELSE 0
									END
						  END
				END AS decCredits_Main,
				intAccType,
				intGLNumber AS intGLNumber_Main,
				intDept,
				bitIsCreditAccType
		FROM (SELECT intGLNumber, 
					 strDesc, 
					 0 AS decOpenBalance_Dept,
					 (decOpenBalance / @decExchange) AS decOpenBalance_Main, 
					 intAccType, 
					 DEPT.intDept,
					 CASE WHEN intAccType BETWEEN 2 AND 4 THEN 1 ELSE 0 END AS bitIsCreditAccType
			  FROM tblAccountsLY
			  CROSS JOIN #Temp_Dept DEPT 
			  WHERE (intGroupCode < 3) 
			  AND (bitLinkCEarnings = 0)
			  AND (DEPT.intDept = 0)
			  UNION ALL
			  SELECT tblAccountsLY.intGLNumber, 
					 tblAccountsLY.strDesc, 
					 (ISNULL(tblAccountsDeptLY.decOpenBalance, 0) / @decExchange) AS decOpenBalance_Dept,
					 (tblAccountsLY.decOpenBalance / @decExchange) AS decOpenBalance_Main, 
					 tblAccountsLY.intAccType,
					 #Temp_Dept.intDept,
					 CASE WHEN tblAccountsLY.intAccType BETWEEN 2 AND 4 THEN 1 ELSE 0 END AS bitIsCreditAccType
			  FROM tblAccountsLY 
			  INNER JOIN tblAccountsDeptLY ON tblAccountsLY.intGLNumber = tblAccountsDeptLY.intGLNumber 
			  INNER JOIN #Temp_Dept ON tblAccountsDeptLY.intDept = #Temp_Dept.intDept 
			  WHERE (tblAccountsLY.intGroupCode < 3) 
			  AND (tblAccountsLY.bitLinkCEarnings = 0)) AS T 
		GROUP BY intGLNumber,
				 strDesc,
				 decOpenBalance_Main,
				 intAccType,
				 intDept,
				 bitIsCreditAccType
		ORDER BY intAccType, 
				 intGLNumber

	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN	

		INSERT INTO #Temp_DS
		SELECT	intGLNumber,
				strDesc,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN 0
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN SUM(decOpenBalance_Dept) * -1
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN SUM(decOpenBalance_Dept)
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN 0
										 ELSE 0
									END
						  END
				END AS decDebits_Dept,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN SUM(decOpenBalance_Dept)
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN 0
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN SUM(decOpenBalance_Dept) > 0
							   THEN 0
							   ELSE CASE WHEN SUM(decOpenBalance_Dept) < 0
										 THEN SUM(decOpenBalance_Dept) * -1
										 ELSE 0
									END
						  END
				END AS decCredits_Dept,
				0 AS decDebits_NoAlloc,
				0 AS decCredits_NoAlloc,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN decOpenBalance_Main > 0
							   THEN 0
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN decOpenBalance_Main * -1
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN decOpenBalance_Main > 0
							   THEN decOpenBalance_Main
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN 0
										 ELSE 0
									END
						  END
				END AS decDebits_Main,
				CASE WHEN bitIsCreditAccType = 1 
					 THEN CASE WHEN decOpenBalance_Main > 0
							   THEN decOpenBalance_Main
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN 0
										 ELSE 0
									END
						  END
					 ELSE CASE WHEN decOpenBalance_Main > 0
							   THEN 0
							   ELSE CASE WHEN decOpenBalance_Main < 0
										 THEN decOpenBalance_Main * -1
										 ELSE 0
									END
						  END
				END AS decCredits_Main,
				intAccType,
				intGLNumber AS intGLNumber_Main,
				intDept,
				bitIsCreditAccType
		FROM (SELECT intGLNumber, 
					 strDesc, 
					 0 AS decOpenBalance_Dept,
					 (decOpenBalance / @decExchange) AS decOpenBalance_Main, 
					 intAccType, 
					 DEPT.intDept,
					 CASE WHEN intAccType BETWEEN 2 AND 4 THEN 1 ELSE 0 END AS bitIsCreditAccType
			  FROM tblAccountsHist 
			  CROSS JOIN #Temp_Dept DEPT
			  WHERE (uidYearID = @SQuidYearID) 
			  AND (intGroupCode < 3) 
			  AND (bitLinkCEarnings = 0)
			  AND (DEPT.intDept = 0)
			  UNION ALL
			  SELECT tblAccountsHist.intGLNumber, 
					 tblAccountsHist.strDesc, 
					 (ISNULL(tblAccountsDeptHist.decOpenBalance, 0) / @decExchange) AS decOpenBalance_Dept,
					 (tblAccountsHist.decOpenBalance / @decExchange) AS decOpenBalance_Main, 
					 tblAccountsHist.intAccType,
					 #Temp_Dept.intDept,
					 CASE WHEN tblAccountsHist.intAccType BETWEEN 2 AND 4 THEN 1 ELSE 0 END AS bitIsCreditAccType
			  FROM tblAccountsHist 
			  INNER JOIN tblAccountsDeptHist ON tblAccountsHist.uidYearID = tblAccountsDeptHist.uidYearID AND tblAccountsHist.intGLNumber = tblAccountsDeptHist.intGLNumber 
			  INNER JOIN #Temp_Dept ON tblAccountsDeptHist.intDept = #Temp_Dept.intDept 
			  WHERE (tblAccountsHist.uidYearID = @SQuidYearID) 
			  AND (tblAccountsHist.intGroupCode < 3) 
			  AND (tblAccountsHist.bitLinkCEarnings = 0)) AS T 
		GROUP BY intGLNumber,
				 strDesc,
				 decOpenBalance_Main,
				 intAccType,
				 intDept,
				 bitIsCreditAccType
		ORDER BY intAccType, 
				 intGLNumber

	END

	IF @optCurrentYear_IsChecked = 1 
	BEGIN

		UPDATE #Temp_DS
		SET decDebits_Main = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
								  THEN CASE WHEN JE.decAmount > 0
											THEN decDebits_Main
											ELSE CASE WHEN JE.decAmount < 0
													  THEN decDebits_Main + (JE.decAmount * -1)
													  ELSE decDebits_Main
												 END
									   END
								  ELSE CASE WHEN JE.decAmount > 0
											THEN decDebits_Main + JE.decAmount
											ELSE decDebits_Main
									   END
							 END,
			decCredits_Main = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
								   THEN CASE WHEN JE.decAmount > 0
											 THEN decCredits_Main + JE.decAmount
											 ELSE decCredits_Main
										END
								   ELSE CASE WHEN JE.decAmount > 0
											 THEN decCredits_Main
											 ELSE CASE WHEN JE.decAmount < 0
													   THEN decCredits_Main + (JE.decAmount * -1)
													   ELSE decCredits_Main
												  END
										END
							  END
		FROM (SELECT tblJournalEnt.intGLNumber, 
					 (SUM(tblJournalEnt.decAmount) / @decExchange) AS decAmount,
					 ISNULL(tblJournalEnt.intDept, 0) AS intDept
			  FROM tblJournalEnt 
			  INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
			  INNER JOIN #Temp_Dept ON ISNULL(tblJournalEnt.intDept, 0) = #Temp_Dept.intDept 
			  WHERE (tblJournal.dteJournalDate <= @dteAsAtDate) 
			  GROUP BY tblJournalEnt.intGLNumber,
					   tblJournalEnt.intDept) JE
		WHERE (#Temp_DS.intGLNumber = JE.intGLNumber)
		AND (#Temp_DS.intDept = JE.intDept)

	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
	
		UPDATE #Temp_DS
		SET decDebits_Main = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
								  THEN CASE WHEN JE.decAmount > 0
											THEN decDebits_Main
											ELSE CASE WHEN JE.decAmount < 0
													  THEN decDebits_Main + (JE.decAmount * -1)
													  ELSE decDebits_Main
												 END
									   END
								  ELSE CASE WHEN JE.decAmount > 0
											THEN decDebits_Main + JE.decAmount
											ELSE decDebits_Main
									   END
							 END,
			decCredits_Main = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
								   THEN CASE WHEN JE.decAmount > 0
											 THEN decCredits_Main + JE.decAmount
											 ELSE decCredits_Main
										END
								   ELSE CASE WHEN JE.decAmount > 0
											 THEN decCredits_Main
											 ELSE CASE WHEN JE.decAmount < 0
													   THEN decCredits_Main + (JE.decAmount * -1)
													   ELSE decCredits_Main
												  END
										END
							  END
		FROM (SELECT tblJournalEntLY.intGLNumber, 
					 (SUM(tblJournalEntLY.decAmount) / @decExchange) AS decAmount,
					 ISNULL(tblJournalEntLY.intDept, 0) AS intDept
			  FROM tblJournalEntLY 
			  INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
			  INNER JOIN #Temp_Dept ON ISNULL(tblJournalEntLY.intDept, 0) = #Temp_Dept.intDept 
			  WHERE (tblJournalLY.dteJournalDate <= @dteAsAtDate) 
			  GROUP BY tblJournalEntLY.intGLNumber,
					   tblJournalEntLY.intDept) JE
		WHERE (#Temp_DS.intGLNumber = JE.intGLNumber)
		AND (#Temp_DS.intDept = JE.intDept)

	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN

		UPDATE #Temp_DS
		SET decDebits_Main = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
								  THEN CASE WHEN JE.decAmount > 0
											THEN decDebits_Main
											ELSE CASE WHEN JE.decAmount < 0
													  THEN decDebits_Main + (JE.decAmount * -1)
													  ELSE decDebits_Main
												 END
									   END
								  ELSE CASE WHEN JE.decAmount > 0
											THEN decDebits_Main + JE.decAmount
											ELSE decDebits_Main
									   END
							 END,
			decCredits_Main = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
								   THEN CASE WHEN JE.decAmount > 0
											 THEN decCredits_Main + JE.decAmount
											 ELSE decCredits_Main
										END
								   ELSE CASE WHEN JE.decAmount > 0
											 THEN decCredits_Main
											 ELSE CASE WHEN JE.decAmount < 0
													   THEN decCredits_Main + (JE.decAmount * -1)
													   ELSE decCredits_Main
												  END
										END
							  END
		FROM (SELECT tblJournalEntHist.intGLNumber, 
					 (SUM(tblJournalEntHist.decAmount) / @decExchange) AS decAmount,
					 ISNULL(tblJournalEntHist.intDept, 0) AS intDept
			  FROM tblJournalEntHist 
			  INNER JOIN tblJournalHist ON tblJournalEntHist.uidYearID = tblJournalHist.uidYearID 
									    AND tblJournalEntHist.lngJourID = tblJournalHist.lngJourID 
			  INNER JOIN #Temp_Dept ON ISNULL(tblJournalEntHist.intDept, 0) = #Temp_Dept.intDept 
			  WHERE (tblJournalEntHist.uidYearID = @SQuidYearID) 
			  AND (tblJournalHist.dteJournalDate <= @dteAsAtDate) 
			  GROUP BY tblJournalEntHist.intGLNumber,
					   tblJournalEntHist.intDept) JE
		WHERE (#Temp_DS.intGLNumber = JE.intGLNumber)
		AND (#Temp_DS.intDept = JE.intDept)

	END

--END

IF @optCurrentYear_IsChecked = 1 
BEGIN

	UPDATE #Temp_DS
	SET decDebits_Dept = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
							  THEN CASE WHEN JE.decAmount < 0
										THEN decDebits_Dept + (JE.decAmount * -1)
										ELSE decDebits_Dept
								   END
							  ELSE CASE WHEN JE.decAmount > 0
										THEN decDebits_Dept + JE.decAmount
										ELSE decDebits_Dept
								   END
						 END,
		decCredits_Dept = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
							   THEN CASE WHEN JE.decAmount > 0
										 THEN decCredits_Dept + JE.decAmount
										 ELSE decCredits_Dept
									END
							   ELSE CASE WHEN JE.decAmount < 0
										 THEN decCredits_Dept + (JE.decAmount * -1)
										 ELSE decCredits_Dept
									END
						  END
	FROM (SELECT tblJournalEnt.intGLNumber,
				 ISNULL(tblJournalEnt.intDept, 0) AS intDept,
				 (SUM(tblJournalEnt.decAmount) / @decExchange) AS decAmount
		  FROM tblJournalEnt 
		  INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
		  INNER JOIN #Temp_Dept ON ISNULL(tblJournalEnt.intDept, 0) = #Temp_Dept.intDept 
		  WHERE (tblJournal.dteJournalDate <= @dteAsAtDate) 
		  --AND (#Temp_Dept.intDept > 0)
		  GROUP BY tblJournalEnt.intGLNumber,
				   tblJournalEnt.intDept) JE
	WHERE #Temp_DS.intGLNumber = JE.intGLNumber
	AND #Temp_DS.intDept = JE.intDept 

/*
	UPDATE #Temp_DS
	SET decDebits_NoAlloc = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
								 THEN CASE WHEN JE.decAmount < 0
										   THEN decDebits_NoAlloc + (JE.decAmount * -1)
										   ELSE decDebits_NoAlloc
									  END
								 ELSE CASE WHEN JE.decAmount > 0
										   THEN decDebits_NoAlloc + JE.decAmount
										   ELSE decDebits_NoAlloc
									  END
							END,
		decCredits_NoAlloc = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
								  THEN CASE WHEN JE.decAmount > 0
											THEN decCredits_NoAlloc + JE.decAmount
											ELSE decCredits_NoAlloc
									   END
								  ELSE CASE WHEN JE.decAmount < 0
											THEN decCredits_NoAlloc + (JE.decAmount * -1)
											ELSE decCredits_NoAlloc
									   END
							 END
	FROM (SELECT tblJournalEnt.intGLNumber,
				 ISNULL(tblJournalEnt.intDept, 0) AS intDept,
				 (SUM(tblJournalEnt.decAmount) / @decExchange) AS decAmount
		  FROM tblJournalEnt 
		  INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
		  INNER JOIN #Temp_Dept ON ISNULL(tblJournalEnt.intDept, 0) = #Temp_Dept.intDept 
		  WHERE (tblJournal.dteJournalDate <= @dteAsAtDate) 
		  AND (#Temp_Dept.intDept = 0)
		  GROUP BY tblJournalEnt.intGLNumber,
				   tblJournalEnt.intDept) JE
	WHERE #Temp_DS.intGLNumber = JE.intGLNumber
	AND #Temp_DS.intDept = JE.intDept 
*/

END
ELSE IF @optPreviousYear_IsChecked = 1
BEGIN

	UPDATE #Temp_DS
	SET decDebits_Dept = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
							  THEN CASE WHEN JE.decAmount < 0
										THEN decDebits_Dept + (JE.decAmount * -1)
										ELSE decDebits_Dept
								   END
							  ELSE CASE WHEN JE.decAmount > 0
										THEN decDebits_Dept + JE.decAmount
										ELSE decDebits_Dept
								   END
						 END,
		decCredits_Dept = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
							   THEN CASE WHEN JE.decAmount > 0
										 THEN decCredits_Dept + JE.decAmount
										 ELSE decCredits_Dept
									END
							   ELSE CASE WHEN JE.decAmount < 0
										 THEN decCredits_Dept + (JE.decAmount * -1)
										 ELSE decCredits_Dept
									END
						  END
	FROM (SELECT tblJournalEntLY.intGLNumber, 
				 ISNULL(tblJournalEntLY.intDept, 0) AS intDept,
				 (SUM(tblJournalEntLY.decAmount) / @decExchange) AS decAmount
		  FROM tblJournalEntLY 
		  INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
		  INNER JOIN #Temp_Dept ON ISNULL(tblJournalEntLY.intDept, 0) = #Temp_Dept.intDept 
		  WHERE (tblJournalLY.dteJournalDate <= @dteAsAtDate) 
		  --AND (#Temp_Dept.intDept > 0)
		  GROUP BY tblJournalEntLY.intGLNumber,
				   tblJournalEntLY.intDept) JE
	WHERE #Temp_DS.intGLNumber = JE.intGLNumber
	AND #Temp_DS.intDept = JE.intDept 

/*
	UPDATE #Temp_DS
	SET decDebits_NoAlloc = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
								 THEN CASE WHEN JE.decAmount < 0
										   THEN decDebits_NoAlloc + (JE.decAmount * -1)
										   ELSE decDebits_NoAlloc
									  END
								 ELSE CASE WHEN JE.decAmount > 0
										   THEN decDebits_NoAlloc + JE.decAmount
										   ELSE decDebits_NoAlloc
									  END
							END,
		decCredits_NoAlloc = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
								  THEN CASE WHEN JE.decAmount > 0
											THEN decCredits_NoAlloc + JE.decAmount
											ELSE decCredits_NoAlloc
									   END
								  ELSE CASE WHEN JE.decAmount < 0
											THEN decCredits_NoAlloc + (JE.decAmount * -1)
											ELSE decCredits_NoAlloc
									   END
							 END
	FROM (SELECT tblJournalEntLY.intGLNumber, 
				 ISNULL(tblJournalEntLY.intDept, 0) AS intDept,
				 (SUM(tblJournalEntLY.decAmount) / @decExchange) AS decAmount
		  FROM tblJournalEntLY 
		  INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
		  INNER JOIN #Temp_Dept ON ISNULL(tblJournalEntLY.intDept, 0) = #Temp_Dept.intDept 
		  WHERE (tblJournalLY.dteJournalDate <= @dteAsAtDate) 
		  AND (#Temp_Dept.intDept = 0)
		  GROUP BY tblJournalEntLY.intGLNumber,
				   tblJournalEntLY.intDept) JE
	WHERE #Temp_DS.intGLNumber = JE.intGLNumber
	AND #Temp_DS.intDept = JE.intDept 
*/

END
ELSE IF @optHistoryYear_IsChecked = 1
BEGIN

	UPDATE #Temp_DS
	SET decDebits_Dept = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
							  THEN CASE WHEN JE.decAmount < 0
										THEN decDebits_Dept + (JE.decAmount * -1)
										ELSE decDebits_Dept
								   END
							  ELSE CASE WHEN JE.decAmount > 0
										THEN decDebits_Dept + JE.decAmount
										ELSE decDebits_Dept
								   END
						 END,
		decCredits_Dept = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
							   THEN CASE WHEN JE.decAmount > 0
										 THEN decCredits_Dept + JE.decAmount
										 ELSE decCredits_Dept
									END
							   ELSE CASE WHEN JE.decAmount < 0
										 THEN decCredits_Dept + (JE.decAmount * -1)
										 ELSE decCredits_Dept
									END
						  END
	FROM (SELECT tblJournalEntHist.intGLNumber,
				 ISNULL(tblJournalEntHist.intDept, 0) AS intDept,
				 (SUM(tblJournalEntHist.decAmount) / @decExchange) AS decAmount
		  FROM tblJournalEntHist 
		  INNER JOIN tblJournalHist ON tblJournalEntHist.uidYearID = tblJournalHist.uidYearID AND tblJournalEntHist.lngJourID = tblJournalHist.lngJourID 
		  INNER JOIN #Temp_Dept ON ISNULL(tblJournalEntHist.intDept, 0) = #Temp_Dept.intDept 
		  WHERE (tblJournalEntHist.uidYearID = @SQuidYearID) 
		  AND (tblJournalHist.dteJournalDate <= @dteAsAtDate) 
		  --AND (#Temp_Dept.intDept > 0)
		  GROUP BY tblJournalEntHist.intGLNumber,
				   tblJournalEntHist.intDept) JE
	WHERE #Temp_DS.intGLNumber = JE.intGLNumber
	AND #Temp_DS.intDept = JE.intDept 

/*
	UPDATE #Temp_DS
	SET decDebits_NoAlloc = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
								 THEN CASE WHEN JE.decAmount < 0
										   THEN decDebits_NoAlloc + (JE.decAmount * -1)
										   ELSE decDebits_NoAlloc
									  END
								 ELSE CASE WHEN JE.decAmount > 0
										   THEN decDebits_NoAlloc + JE.decAmount
										   ELSE decDebits_NoAlloc
									  END
							END,
		decCredits_NoAlloc = CASE WHEN #Temp_DS.bitIsCreditAccType = 1
								  THEN CASE WHEN JE.decAmount > 0
											THEN decCredits_NoAlloc + JE.decAmount
											ELSE decCredits_NoAlloc
									   END
								  ELSE CASE WHEN JE.decAmount < 0
											THEN decCredits_NoAlloc + (JE.decAmount * -1)
											ELSE decCredits_NoAlloc
									   END
							 END
	FROM (SELECT tblJournalEntHist.intGLNumber, 
				 ISNULL(tblJournalEntHist.intDept, 0) AS intDept,
				 (SUM(tblJournalEntHist.decAmount) / @decExchange) AS decAmount
		  FROM tblJournalEntHist 
		  INNER JOIN tblJournalHist ON tblJournalEntHist.uidYearID = tblJournalHist.uidYearID AND tblJournalEntHist.lngJourID = tblJournalHist.lngJourID 
		  INNER JOIN #Temp_Dept ON ISNULL(tblJournalEntHist.intDept, 0) = #Temp_Dept.intDept 
		  WHERE (tblJournalEntHist.uidYearID = @SQuidYearID) 
		  AND (tblJournalHist.dteJournalDate <= @dteAsAtDate) 
		  AND (#Temp_Dept.intDept = 0)
		  GROUP BY tblJournalEntHist.intGLNumber,
				   tblJournalEntHist.intDept) JE
	WHERE #Temp_DS.intGLNumber = JE.intGLNumber
	AND #Temp_DS.intDept = JE.intDept 
*/

END

UPDATE #Temp_DS
SET decDebits_Dept = CASE WHEN decDebits_Dept > decCredits_Dept
						  THEN decDebits_Dept - decCredits_Dept
						  ELSE 0
					 END,
	decCredits_Dept = CASE WHEN decDebits_Dept > decCredits_Dept
						   THEN 0
						   ELSE decCredits_Dept - decDebits_Dept
					  END
WHERE (decDebits_Dept > 0 AND decCredits_Dept > 0)

UPDATE #Temp_DS
SET decDebits_Main = CASE WHEN decDebits_Main > decCredits_Main
						  THEN decDebits_Main - decCredits_Main
						  ELSE 0
					 END,
	decCredits_Main = CASE WHEN decDebits_Main > decCredits_Main
						   THEN 0
						   ELSE decCredits_Main - decDebits_Main
					  END
WHERE (decDebits_Main > 0 AND decCredits_Main > 0)

UPDATE #Temp_DS
SET decDebits_NoAlloc = CASE WHEN decDebits_NoAlloc > decCredits_NoAlloc
							 THEN decDebits_NoAlloc + (decCredits_NoAlloc * -1)
							 ELSE 0
						END,
	decCredits_NoAlloc = CASE WHEN decDebits_NoAlloc > decCredits_NoAlloc
							  THEN 0
							  ELSE decCredits_NoAlloc + (decDebits_NoAlloc * -1)
						 END
WHERE (decDebits_NoAlloc < 0 AND decCredits_NoAlloc < 0)

UPDATE #Temp_DS
SET decDebits_NoAlloc = 0,
	decCredits_NoAlloc = decCredits_NoAlloc + (decDebits_NoAlloc * -1)
WHERE (decDebits_NoAlloc < 0)

UPDATE #Temp_DS
SET decDebits_NoAlloc = decDebits_NoAlloc + (decCredits_NoAlloc * -1),
	decCredits_NoAlloc = 0
WHERE (decCredits_NoAlloc < 0)

UPDATE #Temp_DS
SET decDebits_Main = CASE WHEN decDebits_Main > decCredits_Main
						  THEN decDebits_Main - decCredits_Main
						  ELSE 0
					 END,
	decCredits_Main = CASE WHEN decDebits_Main > decCredits_Main
						   THEN 0
						   ELSE decCredits_Main - decDebits_Main
					  END
WHERE (decDebits_Main > 0 AND decCredits_Main > 0)

DELETE FROM #Temp_DS
WHERE (decDebits_Dept = 0 AND decCredits_Dept = 0 AND decDebits_NoAlloc = 0 AND decCredits_NoAlloc = 0 AND decDebits_Main = 0 AND decCredits_Main = 0)

SELECT  DS.*,
		CAST(DEPT.intDept AS nvarchar) + ' - ' + DEPT.strDeptDesc AS DeptDesc
FROM #Temp_DS DS
INNER JOIN #Temp_Dept DEPT ON DS.intDept = DEPT.intDept
ORDER BY DS.intDept, 
		 DS.intAccType, 
		 DS.intGLNumber 

DROP TABLE #Temp_DS
DROP TABLE #Temp_Dept

END
GO

/****** Object:  StoredProcedure [dbo].[GetUOMBaceUnitPriceData]    Script Date: 05-01-2021 16:18:53 ******/
CREATE Procedure [dbo].[GetUOMBaceUnitPriceData]
@PartNumber nvarchar(Max),
@FromUnit nvarchar(Max)
AS
Begin

	SELECT strConversionType AS ConversionType,
	decConversionFactor AS ConversionFactor,
	strToUnit AS ToUnit
	FROM tblInvUOMs 
	WHERE strPartNumber = @PartNumber and strFromUnit = @FromUnit
end
GO

/***** Object: StoredProcedure [dbo].[WorkshopOrderDocDTPrjInsert] Script Date: 2020-12-21 *****/
CREATE PROCEDURE [dbo].[WorkshopOrderDocDTPrjInsert]  
 @WorkshopOrderDocDTPrjData InvOrderDocDTPrjTableType READONLY  
AS  
BEGIN  
 INSERT INTO [dbo].[tblWSOrderDocDTPrj]  
           ([strOrdDocID]  
           ,[intLineNo]  
           ,[strProjNumber])  
     SELECT * FROM @WorkshopOrderDocDTPrjData
END 
GO

/****** Object:  StoredProcedure [dbo].[UpdateAccountsFlagsARDeposit]    Script Date: 2020-12-17 ******/
CREATE PROCEDURE UpdateAccountsFlagsARDeposit 
	@ARAccCntTrue int = 0, 
	@DepositAccCntTrue int = 0,
	@NewARAccount NVARCHAR(60),
	@NewDepositAccount NVARCHAR(60),
	@ARAccCntFalse int = 0,
	@DepositAccCntFalse int = 0,
	@OldARAccount NVARCHAR(60),
	@OldDepositAccount NVARCHAR(60)
AS
BEGIN
    IF @ARAccCntTrue > 0
	BEGIN
		UPDATE tblAccounts SET bitLinkARCustMast = 1 WHERE intGLNumber = @NewARAccount AND bitLinkARCustMast = 0
	END

	IF @DepositAccCntTrue > 0
	BEGIN
		UPDATE tblAccounts SET bitLinkDepositCustMast = 1 WHERE intGLNumber = @NewDepositAccount AND bitLinkDepositCustMast = 0
	END

	IF @OldARAccount <> ''
	BEGIN
		IF @ARAccCntFalse = 0
		BEGIN
			UPDATE tblAccounts SET bitLinkARCustMast = 0 WHERE intGLNumber = @OldARAccount AND bitLinkARCustMast = 1
		END
	END

	IF @OldDepositAccount <> ''
	BEGIN
		IF @DepositAccCntFalse = 0
		BEGIN
			UPDATE tblAccounts SET bitLinkDepositCustMast = 0 WHERE intGLNumber = @OldDepositAccount AND bitLinkDepositCustMast = 1
		END
	END
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateAccountsFlagsAPPrepay]    Script Date: 2020-12-17 ******/
CREATE PROCEDURE [dbo].[UpdateAccountsFlagsAPPrepay] 
	@APAccCntTrue int = 0, 
	@PrepayAccCntTrue int = 0,
	@NewAPAccount NVARCHAR(60),
	@NewPrepayAccount NVARCHAR(60),
	@APAccCntFalse int = 0,
	@PrepayAccCntFalse int = 0,
	@OldAPAccount NVARCHAR(60),
	@OldPrepayAccount NVARCHAR(60)
AS
BEGIN
    IF @APAccCntTrue > 0
	BEGIN
		UPDATE tblAccounts SET bitLinkAPVendMast = 1 WHERE intGLNumber = @NewAPAccount AND bitLinkAPVendMast = 0
	END

	IF @PrepayAccCntTrue > 0
	BEGIN
		UPDATE tblAccounts SET bitLinkPrepayVendMast = 1 WHERE intGLNumber = @NewPrepayAccount AND bitLinkPrepayVendMast = 0
	END

	IF @OldAPAccount <> ''
	BEGIN
		IF @APAccCntFalse = 0
		BEGIN
			UPDATE tblAccounts SET bitLinkAPVendMast = 0 WHERE intGLNumber = @OldAPAccount AND bitLinkAPVendMast = 1
		END
	END

	IF @OldPrepayAccount <> ''
	BEGIN
		IF @PrepayAccCntFalse = 0
		BEGIN
			UPDATE tblAccounts SET bitLinkPrepayVendMast = 0 WHERE intGLNumber = @OldPrepayAccount AND bitLinkPrepayVendMast = 1
		END
	END
END
GO

/****** Object:  StoredProcedure [dbo].[CheckARDepositFlagUpdatedCorrectly]    Script Date: 2020-12-17 ******/
CREATE PROCEDURE CheckARDepositFlagUpdatedCorrectly 
	@DefaultARAccount NVARCHAR(60), 
	@DefaultDepositAccount NVARCHAR(60)
AS
BEGIN
	UPDATE tblAccounts
	SET bitLinkARCustMast = 0
	WHERE intGLNumber = (
		SELECT intGLNumber
		FROM tblAccounts
		WHERE intGLNumber NOT IN (
				SELECT intGLNumberAR
				FROM tblCustomers
				WHERE intGLNumberAR <> @DefaultARAccount
				)
			AND bitLinkARCustMast = 1
		)

	UPDATE tblAccounts
	SET bitLinkDepositCustMast = 0
	WHERE intGLNumber = (
		SELECT intGLNumber
		FROM tblAccounts
		WHERE intGLNumber NOT IN (
				SELECT intGLNumberDeposit
				FROM tblCustomers
				WHERE intGLNumberDeposit <> @DefaultDepositAccount
				)
			AND bitLinkDepositCustMast = 1
		)
END
GO

/****** Object:  StoredProcedure [dbo].[CheckAPPrepayFlagUpdatedCorrectly]    Script Date: 2020-12-17 ******/
CREATE PROCEDURE CheckAPPrepayFlagUpdatedCorrectly 
	@DefaultAPAccount NVARCHAR(60), 
	@DefaultPrepayAccount NVARCHAR(60)
AS
BEGIN
	UPDATE tblAccounts
	SET bitLinkAPVendMast = 0
	WHERE intGLNumber = (
		SELECT intGLNumber
		FROM tblAccounts
		WHERE intGLNumber NOT IN (
				SELECT intGLNumberAP
				FROM tblVendors
				WHERE intGLNumberAP <> @DefaultAPAccount
				)
			AND bitLinkAPVendMast = 1
		)

	UPDATE tblAccounts
	SET bitLinkPrepayVendMast = 0
	WHERE intGLNumber = (
		SELECT intGLNumber
		FROM tblAccounts
		WHERE intGLNumber NOT IN (
				SELECT intGLNumberPrePay
				FROM tblVendors
				WHERE intGLNumberPrePay <> @DefaultPrepayAccount
				)
			AND bitLinkPrepayVendMast = 1
		)
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateVendorsAccounts]    Script Date: 2020-12-22 ******/
CREATE PROCEDURE UpdateVendorsAccounts 
	@VendName NVARCHAR(100)='',
	@APAccount NVARCHAR(60)='',
	@PrepayAccount NVARCHAR(60)=''
AS
BEGIN
	UPDATE tblVendors SET intGLNumberAP = @APAccount, intGLNumberPrePay = @PrepayAccount WHERE strVendName = @VendName
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateCustomersAccounts]    Script Date: 2020-12-22 ******/
CREATE PROCEDURE UpdateCustomersAccounts 
	@CustName NVARCHAR(100)='',
	@ARAccount NVARCHAR(60)='',
	@DepositAccount NVARCHAR(60)=''
AS
BEGIN
	UPDATE tblCustomers SET intGLNumberAR = @ARAccount, intGLNumberDeposit = @DepositAccount WHERE strCustName = @CustName
END
GO

/****** Object:  StoredProcedure [dbo].[GetVendorJournalDate]    Script Date: 2020-12-22 ******/
CREATE PROCEDURE [dbo].[GetVendorJournalDate] 
 @VendName NVARCHAR(100),   
 @AccountType int = 0  
AS  
BEGIN  
 SET NOCOUNT ON;  
  
    IF (@AccountType = 4)  
 BEGIN  
  SELECT MAX(tblJournal.dteJournalDate)  
  FROM tblJournal  
  INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID  
  WHERE tblJournalEnt.intGLNumber IN (  
    SELECT intGLNumberAP  
    FROM tblVendors  
    WHERE strVendName = @VendName)  
 END  
  
 IF (@AccountType = 6)  
 BEGIN  
  SELECT MAX(tblJournal.dteJournalDate)  
  FROM tblJournal  
  INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID  
  WHERE tblJournalEnt.intGLNumber IN (  
    SELECT intGLNumberPrePay  
    FROM tblVendors  
    WHERE strVendName = @VendName)  
 END  
END
GO

/****** Object:  StoredProcedure [dbo].[GetCustomerJournalDate]    Script Date: 2020-12-22 ******/
CREATE PROCEDURE GetCustomerJournalDate 
	@CustName NVARCHAR(100)='', 
	@AccountType int = 0
AS
BEGIN
	SET NOCOUNT ON;

	IF (@AccountType = 8)
	BEGIN
		SELECT MAX(tblJournal.dteJournalDate)
		FROM tblJournal
		INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
		WHERE tblJournalEnt.intGLNumber IN (
					SELECT intGLNumberAR
					FROM tblCustomers
					WHERE strCustName = @CustName)
	END

	IF (@AccountType = 10)
	BEGIN
		SELECT MAX(tblJournal.dteJournalDate)
		FROM tblJournal
		INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
		WHERE tblJournalEnt.intGLNumber IN (
					SELECT intGLNumberDeposit
					FROM tblCustomers
					WHERE strCustName = @CustName)
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetVendorDueBalance]    Script Date: 2020-12-22 ******/
CREATE PROCEDURE GetVendorDueBalance 
	@VendName NVARCHAR(100), 
	@AccountType int = 0
AS
BEGIN
	SET NOCOUNT ON;

    IF (@AccountType = 4)
	BEGIN
		SELECT ISNULL(SUM(tblVendTransDT.decAmount), 0) AS decBalDue
		FROM tblVendTransDT
		INNER JOIN tblVendTrans ON tblVendTransDT.lngVendTrID = tblVendTrans.lngVendTrID
		INNER JOIN tblVendors ON tblVendTrans.strVendName = tblVendors.strVendName
		WHERE (tblVendTransDT.bitReversed = 0)
			AND (tblVendTrans.intTransType <> 2)
			AND (tblVendors.strVendName = @VendName)
	END

	IF (@AccountType = 6)
	BEGIN
		SELECT ISNULL(SUM(tblVendTransDT.decAmount), 0) AS decBalDue
		FROM tblVendTransDT
		INNER JOIN tblVendTrans ON tblVendTransDT.lngVendTrID = tblVendTrans.lngVendTrID
		INNER JOIN tblVendors ON tblVendTrans.strVendName = tblVendors.strVendName
		WHERE (tblVendTransDT.bitReversed = 0)
			AND (tblVendTrans.intTransType = 2)
			AND (tblVendors.strVendName = @VendName)
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetCustomerDueBalance]    Script Date: 2020-12-22 ******/
CREATE PROCEDURE GetCustomerDueBalance 
	@CustName NVARCHAR(100)='', 
	@AccountType int = 0
AS
BEGIN
	SET NOCOUNT ON;

	IF (@AccountType = 8)
	BEGIN
		SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) AS decBalDue
		FROM tblCustTransDT
		INNER JOIN tblCustTrans ON tblCustTransDT.lngCustTrID = tblCustTrans.lngCustTrID
		INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName
		WHERE (tblCustTransDT.bitReversed = 0)
			AND (tblCustTrans.intTransType <> 2)
			AND (tblCustomers.strCustName = @CustName)
	END

	IF (@AccountType = 10)
	BEGIN
		SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) AS decBalDue
		FROM tblCustTransDT
		INNER JOIN tblCustTrans ON tblCustTransDT.lngCustTrID = tblCustTrans.lngCustTrID
		INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName
		WHERE (tblCustTransDT.bitReversed = 0)
			AND (tblCustTrans.intTransType = 2)
			AND (tblCustomers.strCustName = @CustName)
	END
END
GO

/****** Object:  StoredProcedure [dbo].[SetVendorsAccountsToDefaultAccounts]    Script Date: 2020-12-22 ******/
CREATE PROCEDURE SetVendorsAccountsToDefaultAccounts 
	@VendName NVARCHAR(100) = '',
	@APAccount NVARCHAR(60) = '',
	@PrepayAccount NVARCHAR(60) = ''
AS
BEGIN
	UPDATE tblVendors set intGLNumberAP = @APAccount, 
							intGLNumberPrePay = @PrepayAccount
	WHERE strVendName = @VendName
END
GO

/****** Object:  StoredProcedure [dbo].[GetDefaultBinCode]    Script Date: 2020-12-22 ******/
CREATE PROCEDURE GetDefaultBinCode
	@PartNumber nvarchar(50),
	@Location nvarchar(10)
AS
BEGIN
	SELECT lngBinID as strBinCode
	FROM tblInvLocBin AS Locbin
	INNER JOIN tblInvExtBin AS Extbin ON Extbin.lngBinID = Locbin.lngID
	WHERE Extbin.strPartNumber = @PartNumber AND Extbin.strLocName = @Location AND Extbin.bitDefault = 1
END
GO

/****** Object:  StoredProcedure [dbo].[GetSerialLotTypeImportExport]    Script Date: 2020-12-22 ******/
CREATE PROCEDURE [dbo].[GetSerialLotTypeImportExport]
	@PartNumber nvarchar(50)
AS
BEGIN
	SELECT cast(ISNULL(tblInvSerialTypes.intType, 0) AS INT)
	FROM tblInv
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE strPartNumber = @PartNumber
END
GO

/****** Object:  StoredProcedure [dbo].[SetCustomersAccountsToDefaultAccounts]    Script Date: 2020-12-22 ******/
CREATE PROCEDURE SetCustomersAccountsToDefaultAccounts 
	@CustName NVARCHAR(100)='',
	@ARAccount NVARCHAR(60)='',
	@DepositAccount NVARCHAR(60)=''
AS
BEGIN
	UPDATE tblCustomers set intGLNumberAR = @ARAccount, 
							intGLNumberDeposit = @DepositAccount
	WHERE strCustName = @CustName
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateFileName_RX]    Script Date: 04-01-2021 13:34:00 ******/
CREATE PROCEDURE [dbo].[UpdateFileName_RX]  
@SQstrTrfDocID AS VARCHAR(250) = NULL,
@SQstrFileName AS VARCHAR(250) = null
AS  
BEGIN  
	UPDATE tblInvTrfDoc SET strFileName = @SQstrFileName WHERE strTrfDocID = @SQstrTrfDocID
END
GO

/****** Object:  StoredProcedure [dbo].[InsertFTPTracking_RX]    Script Date: 04-01-2021 13:34:00 ******/
CREATE PROCEDURE [dbo].[InsertFTPTracking_RX]  
@SQStatus AS VARCHAR(250) = NULL,
@SQFileName AS VARCHAR(250) = null,
@SQUserName AS VARCHAR(250) = null
AS  
BEGIN  
	INSERT INTO tblFTPTracking (dteSystemDateTime, strModule, strStatus, strFileName, strDesc, strUserName) VALUES (GetDate(), 'RX', @SQStatus, @SQFileName, 'Inventory Transfer', @SQUserName)
END
GO


/****** Object:  StoredProcedure [dbo].[AddEFTTransactionDetails]    Script Date: 2021-01-13 ******/
CREATE PROCEDURE [dbo].[AddEFTTransactionDetails] (
	@InvoiceDocID VARCHAR(50),
	@ModuleType INT,
	@EFTType INT,
	@RequestData NVARCHAR(MAX),
	@ResponseData NVARCHAR(MAX)
	)
AS
BEGIN
	INSERT INTO [dbo].[tblEFTTransactionDetails]    
		   (
		    [strInvDocID]
           ,[intModuleType]
           ,[intEFTType]
           ,[strRequestData]
           ,[strResponseData]
           ,[dteRowUpdated]
		   )
	VALUES (
		@InvoiceDocID,
		@ModuleType,
		@EFTType ,
		@RequestData,
		@ResponseData,
		GETDATE()
		)
END
GO

/****** Object:  StoredProcedure [dbo].[BinCheck_RX]    Script Date: 04-01-2021 13:34:00 ******/
CREATE PROCEDURE [dbo].[BinCheck_RX]  
@SQstrTrfDocID AS VARCHAR(250) = NULL
AS  
BEGIN  
	SELECT COUNT(lngToBinID) FROM tblInvTrfDocDT WHERE strTrfDocID = @SQstrTrfDocID AND lngToBinID IN 
(SELECT BIN.lngID FROM tblInvLocBin BIN CROSS JOIN tblCoOpts CO WHERE BIN.strLocName = CO.strManPromtekLoc AND BIN.strBinCode = CO.strManPromtekBinLoc)
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvDocPickerData]    Script Date: 2021-02-13 ******/
CREATE PROCEDURE [dbo].[GetInvDocPickerData] (    
 @StartDate AS DATETIME    
 ,@EndDate AS DATETIME    
 ,@InvtoFind AS INT    
 ,@SortField AS NVARCHAR(100)    
 ,@FromProductionSchedule AS BIT    
 ,@ShowAll AS BIT    
 ,@IsFromConvert AS BIT   
  ,@SelectionIndex AS int
 )    
AS    
BEGIN    
 IF @InvtoFind = 0 --'Adjustments'          
 BEGIN    
  SELECT strAdjDocID AS 'DocumentNumber'    
   ,dteJournalDate AS 'InvDate'    
   ,lngJourID AS 'JournalID'    
   ,decTotal AS 'Total'    
   ,@InvtoFind AS 'ImageIndex'    
  FROM tblInvAdjDoc    
  WHERE (    
    dteJournalDate BETWEEN @StartDate    
     AND @EndDate    
    )    
   AND bitStockCount = 0    
  ORDER BY CASE     
    WHEN @SortField = 'Document'    
     THEN strAdjDocID    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Date'    
     THEN dteJournalDate    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Journal'    
     THEN lngJourID    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Amount'    
     THEN decTotal    
    END ASC;    
 END    
 ELSE IF @InvtoFind = 1 --'Assembly'          
 BEGIN    
  IF @FromProductionSchedule = 1    
  BEGIN    
   SELECT strAsmDocID AS 'DocumentNumber'    
    ,dteJournalDate AS 'InvDate'    
    ,lngJourID AS 'JournalID'    
    ,decTotalCostCom AS 'Total'    
    ,@InvtoFind AS 'ImageIndex'    
   FROM tblInvAsmDoc    
   WHERE (    
     dteJournalDate BETWEEN @StartDate    
      AND @EndDate    
     )    
    AND strAsmDocID NOT IN (    
     SELECT strAsmDocID    
     FROM tblProductionSchedule    
     WHERE blnCompleted = 1    
     )    
   ORDER BY CASE     
     WHEN @SortField = 'Document'    
      THEN strAsmDocID    
     END DESC    
    ,CASE     
     WHEN @SortField = 'Date'    
      THEN dteJournalDate    
     END DESC    
    ,CASE     
     WHEN @SortField = 'Journal'    
      THEN lngJourID    
     END DESC    
    ,CASE     
     WHEN @SortField = 'Amount'    
      THEN decTotalCostCom    
     END ASC;    
  END    
  ELSE    
  BEGIN    
   SELECT strAsmDocID AS 'DocumentNumber'    
    ,dteJournalDate AS 'InvDate'    
    ,lngJourID AS 'JournalID'    
    ,decTotalCostCom AS 'Total'    
    ,@InvtoFind AS 'ImageIndex'    
   FROM tblInvAsmDoc    
   WHERE (    
     dteJournalDate BETWEEN @StartDate    
      AND @EndDate    
     )    
   ORDER BY CASE     
     WHEN @SortField = 'Document'    
      THEN strAsmDocID    
     END DESC    
    ,CASE     
     WHEN @SortField = 'Date'    
      THEN dteJournalDate    
     END DESC    
    ,CASE     
     WHEN @SortField = 'Journal'    
      THEN lngJourID    
     END DESC    
    ,CASE     
     WHEN @SortField = 'Amount'    
      THEN decTotalCostCom    
     END ASC;    
  END    
 END    
 ELSE IF @InvtoFind = 2 --'Transfer'          
 BEGIN    
  SELECT strTrfDocID AS 'DocumentNumber'    
   ,dteJournalDate AS 'InvDate'    
   ,lngJourID AS 'JournalID'    
   ,decTotal AS 'Total'    
   ,@InvtoFind AS 'ImageIndex'    
  FROM tblInvTrfDoc    
  WHERE (    
    dteJournalDate BETWEEN @StartDate    
     AND @EndDate    
    )    
  ORDER BY CASE     
    WHEN @SortField = 'Document'    
     THEN strTrfDocID    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Date'    
     THEN dteJournalDate    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Journal'    
     THEN lngJourID    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Amount'    
     THEN decTotal    
    END ASC;    
 END    
 ELSE IF @InvtoFind = 9 --'Branch Transfer'          
 BEGIN    
  IF @IsFromConvert = 0    
  BEGIN    
   SELECT strTrfDocID AS 'DocumentNumber'    
    ,dteJournalDate AS 'InvDate'    
    ,strFromLoc AS 'FromLocation'    
    ,strToLoc AS 'ToLocation'    
    ,strComment AS 'Comment'    
   ,@InvtoFind AS 'ImageIndex'   
   FROM tblInvTrfDoc    
   WHERE (    
     dteJournalDate BETWEEN @StartDate    
      AND @EndDate    
     )    
    AND (    
     strTrfDocID LIKE 'ITR%'    
     OR strTrfDocID LIKE 'IBT%'    
     )    
   ORDER BY CASE     
     WHEN @SortField = 'Document'    
      THEN strTrfDocID    
     END DESC    
    ,CASE     
     WHEN @SortField = 'Date'    
      THEN dteJournalDate    
     END DESC    
    ,CASE     
     WHEN @SortField = 'Journal'    
      THEN lngJourID    
     END DESC    
    ,CASE     
     WHEN @SortField = 'Amount'    
      THEN decTotal    
     END ASC;    
  END    
  ELSE    
  BEGIN    
   SELECT strTrfDocID AS 'DocumentNumber'    
    ,dteJournalDate AS 'InvDate'    
    ,strFromLoc AS 'FromLocation'    
    ,strToLoc AS 'ToLocation'    
    ,strComment AS 'Comment'    
   ,@InvtoFind AS 'ImageIndex'   
   FROM tblInvTrfDoc    
   WHERE (    
     dteJournalDate BETWEEN @StartDate    
      AND @EndDate    
     )    
    AND bitWarehouseTrf = 1    
    AND bitCleared = 0    
    AND intAccount IS NOT NULL    
   ORDER BY CASE     
     WHEN @SortField = 'Document'    
      THEN strTrfDocID    
     END DESC    
    ,CASE     
     WHEN @SortField = 'Date'    
      THEN dteJournalDate    
     END DESC    
    ,CASE     
     WHEN @SortField = 'Journal'    
      THEN lngJourID    
     END DESC    
    ,CASE     
     WHEN @SortField = 'Amount'    
      THEN decTotal    
     END ASC;    
  END    
 END    
 ELSE IF @InvtoFind = 8 --'Branch Transfer Order'          
 BEGIN    
  IF @IsFromConvert = 1 or @SelectionIndex = 0  
  BEGIN    
   SELECT strInvTrfOrdDocID AS 'DocumentNumber'    
    ,dteJournalDate AS 'InvDate'    
    ,strLocName AS 'FromLocation'    
    ,strToLocName AS 'ToLocation'    
    ,strComment AS 'Comment'    
   ,@InvtoFind AS 'ImageIndex'   
   FROM tblInvTrfOrdDoc    
   WHERE (    
     dteJournalDate BETWEEN @StartDate    
      AND @EndDate    
     )   
    AND bitCleared = 0    
   ORDER BY CASE     
     WHEN @SortField = 'Document'    
      THEN strInvTrfOrdDocID    
     END DESC    
    ,CASE     
     WHEN @SortField = 'Date'    
      THEN dteJournalDate    
     END DESC    
    ,CASE     
     WHEN @SortField = 'Amount'    
      THEN decTotal    
     END ASC    
  END    
  ELSE    
  BEGIN    
   SELECT strInvTrfOrdDocID AS 'DocumentNumber'    
    ,dteJournalDate AS 'InvDate'    
    ,strLocName AS 'FromLocation'    
    ,strToLocName AS 'ToLocation'    
    ,strComment AS 'Comment'    
   ,@InvtoFind AS 'ImageIndex'   
   FROM tblInvTrfOrdDoc    
   WHERE (    
     dteJournalDate BETWEEN @StartDate    
      AND @EndDate    
     )    
   ORDER BY CASE     
     WHEN @SortField = 'Document'    
      THEN strInvTrfOrdDocID    
     END DESC    
    ,CASE     
     WHEN @SortField = 'Date'    
      THEN dteJournalDate    
     END DESC    
    ,CASE     
     WHEN @SortField = 'Amount'    
      THEN decTotal    
     END ASC    
  END    
 END    
 ELSE IF @InvtoFind = 10 --'Branch Transfer Receipt'          
 BEGIN    
  SELECT strTrfDocID AS 'DocumentNumber'    
   ,dteJournalDate AS 'InvDate'    
   ,strFromLoc AS 'FromLocation'    
   ,strToLoc AS 'ToLocation'    
   ,strComment AS 'Comment'    
   ,@InvtoFind AS 'ImageIndex'   
  FROM tblInvTrfDoc    
  WHERE (    
    dteJournalDate BETWEEN @StartDate    
     AND @EndDate    
    )    
   AND strTrfDocID LIKE 'BRC-%'    
  ORDER BY CASE     
    WHEN @SortField = 'Document'    
     THEN strTrfDocID    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Date'    
     THEN dteJournalDate    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Amount'    
     THEN decTotal    
    END ASC    
 END    
 ELSE IF @InvtoFind = 7 -- BinTransfer        
 BEGIN    
  SELECT strTrfDocID AS 'DocumentNumber'    
   ,dteJournalDate AS 'InvDate'    
   ,lngJourID AS 'JournalID'    
   ,decTotal AS 'Total'   
   ,@InvtoFind AS 'ImageIndex'    
  FROM tblInvTrfDoc    
  WHERE (    
    dteJournalDate BETWEEN @StartDate    
     AND @EndDate    
    )    
   AND bitWarehouseTrf = 0    
   AND bitCleared = 0    
   AND strTrfDocID LIKE 'BTR%'    
 END    
 ELSE IF @InvtoFind = 3 --'ProductionSchedule'          
 BEGIN    
  IF @ShowAll = 1    
  BEGIN    
   SELECT strProdNumber AS 'DocumentNumber'    
    ,dteStartDate AS 'InvDate'    
    ,strPartNumber AS 'PartNumber'    
    ,decReqQty AS 'ReqQty'    
    ,@InvtoFind AS 'ImageIndex'    
   FROM tblProductionSchedule    
   WHERE (    
     dteStartDate >= @StartDate    
     AND dteDueDate <= @EndDate    
     )    
    AND bitCleared = 0    
   ORDER BY CASE     
     WHEN @SortField = 'Document'    
      THEN strProdNumber    
     END DESC    
    ,CASE     
     WHEN @SortField = 'Date'    
      THEN strProdNumber    
     END DESC;    
  END    
  ELSE    
  BEGIN    
   SELECT strProdNumber AS 'DocumentNumber'    
    ,dteStartDate AS 'InvDate'    
    ,strPartNumber AS 'PartNumber'    
    ,decReqQty AS 'ReqQty'    
    ,@InvtoFind AS 'ImageIndex'    
   FROM tblProductionSchedule    
   WHERE (    
     dteStartDate >= @StartDate    
     AND dteDueDate <= @EndDate    
     )    
    AND bitCleared = 0    
    AND blnCompleted = 0    
   ORDER BY CASE     
     WHEN @SortField = 'Document'    
      THEN strProdNumber    
     END DESC    
    ,CASE     
     WHEN @SortField = 'Date'    
      THEN strProdNumber    
     END DESC;    
  END    
 END    
 ELSE IF @InvtoFind = 4 --'InternalRequisition'          
 BEGIN    
 if(@IsFromConvert =1 Or @SelectionIndex=0)
 BEGIN
  SELECT strInvIntReqDocID AS 'DocumentNumber'    
   ,dteJournalDate AS 'InvDate'    
   ,decTotal AS 'Total'    
   ,@InvtoFind AS 'ImageIndex'    
   ,ISNULL(tblInvIntReqDoc.strEmpNumber, '') AS 'Employee'    
   ,strComment AS 'Comment'    
   ,ISNULL(strCustNumber, '') AS 'Customer'    
   ,ISNULL(strCustDesc, '') AS CustDesc    
  FROM tblInvIntReqDoc    
  LEFT JOIN tblEmployees ON tblEmployees.strEmpNumber = tblInvIntReqDoc.strEmpNumber    
  LEFT JOIN tblCustomers ON tblCustomers.strCustName = tblEmployees.strCustNumber    
  WHERE (    
    dteJournalDate BETWEEN @StartDate    
     AND @EndDate    
    )    
   AND bitCleared = 0    
  ORDER BY CASE     
    WHEN @SortField = 'Document'    
     THEN strInvIntReqDocID    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Date'    
     THEN dteJournalDate    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Amount'    
     THEN decTotal    
    END ASC;    
 END 
 Else
 BEGIN
 SELECT strInvIntReqDocID AS 'DocumentNumber'    
   ,dteJournalDate AS 'InvDate'    
   ,decTotal AS 'Total'    
   ,@InvtoFind AS 'ImageIndex'    
   ,ISNULL(tblInvIntReqDoc.strEmpNumber, '') AS 'Employee'    
   ,strComment AS 'Comment'    
   ,ISNULL(strCustNumber, '') AS 'Customer'    
   ,ISNULL(strCustDesc, '') AS CustDesc    
  FROM tblInvIntReqDoc    
  LEFT JOIN tblEmployees ON tblEmployees.strEmpNumber = tblInvIntReqDoc.strEmpNumber    
  LEFT JOIN tblCustomers ON tblCustomers.strCustName = tblEmployees.strCustNumber    
  WHERE (    
    dteJournalDate BETWEEN @StartDate    
     AND @EndDate    
    )    
  ORDER BY CASE     
    WHEN @SortField = 'Document'    
     THEN strInvIntReqDocID    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Date'    
     THEN dteJournalDate    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Amount'    
     THEN decTotal    
    END ASC;    
 END
 END
 ELSE IF @InvtoFind = 5 --'IssueRequisition'          
 BEGIN    
  SELECT strInvIssReqDocID AS 'DocumentNumber'    
   ,dteJournalDate AS 'InvDate'    
   ,lngJourID AS 'JournalID'    
   ,decTotal AS 'Total'    
   ,@InvtoFind AS 'ImageIndex'    
   ,ISNULL(tblInvIssReqDoc.strEmpNumber, '') AS 'Employee'    
   ,strComment AS 'Comment'    
  FROM tblInvIssReqDoc    
  WHERE (    
    dteJournalDate BETWEEN @StartDate    
     AND @EndDate    
    )    
  ORDER BY CASE     
    WHEN @SortField = 'Document'    
     THEN strInvIssReqDocID    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Date'    
     THEN dteJournalDate    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Journal'    
     THEN lngJourID    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Amount'    
     THEN decTotal    
    END ASC;    
 END    
 ELSE IF @InvtoFind = 11 --'StockCount'          
 BEGIN    
  SELECT strAdjDocID AS 'DocumentNumber'    
   ,dteJournalDate AS 'InvDate'    
   ,lngJourID AS 'JournalID'    
   ,decTotal AS 'Total'      
   ,@InvtoFind AS 'ImageIndex'   
  FROM tblInvAdjDoc    
  WHERE (    
    dteJournalDate BETWEEN @StartDate    
     AND @EndDate    
    )    
   AND bitStockCount = 1    
  ORDER BY CASE     
    WHEN @SortField = 'Document'    
     THEN strAdjDocID    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Date'    
     THEN dteJournalDate    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Journal'    
     THEN lngJourID    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Amount'    
     THEN decTotal    
    END ASC;    
 END    
 ELSE --Repacking          
 BEGIN    
  SELECT strRepackDocID AS 'DocumentNumber'    
   ,dteJournalDate AS 'InvDate'    
   ,lngJourID AS 'JournalID'    
   ,decTotalWeightRepackaged AS 'Total'    
   ,@InvtoFind AS 'ImageIndex'    
  FROM tblInvRepackDoc    
  WHERE (    
    dteJournalDate BETWEEN @StartDate    
     AND @EndDate    
    )    
  ORDER BY CASE     
    WHEN @SortField = 'Date'    
     THEN dteJournalDate    
    END DESC    
   ,CASE     
    WHEN @SortField = 'Journal'    
THEN lngJourID    
    END DESC;    
 END    
END    
GO

/****** Object:  StoredProcedure [dbo].[GetPriceList]    Script Date: 2021-02-13 ******/
CREATE PROCEDURE [dbo].[GetPriceList]
    @PriceList nvarchar(20),
    @UidPriceBasedID uniqueIdentifier,
    @SelectedStatus INT
AS
BEGIN
    SELECT 
        tblInv.strPartNumber AS PartNumber,
        tblInv.strDesc AS [Desc],
        tblInvPrice.strUnit AS unit,
        tblInvPrice.decSelling AS Selling,
        CASE 
            WHEN ISNULL(tblInvUOMs.strConversionType, '') = '' THEN tblInvPrice.decSelling
            ELSE 
                CASE 
                    WHEN tblInvUOMs.strConversionType = 'Multiply' THEN tblInvPrice.decSelling / tblInvUOMs.decConversionFactor
                    ELSE tblInvPrice.decSelling * tblInvUOMs.decConversionFactor
                END
        END AS SellFromStock,
        tblInvPrice.decEstLocalCost AS EstLocalCost,
        tblInvPrice.decEstImportCost AS EstImportCost,
        tblinv.strBarCode AS BarCode,
        tblInvPrice.uidPriceBasedID AS PriceBasedID,
        tblInvPrice.strPricelist AS PriceList 
    FROM tblInv
    INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
    LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber
        AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
    WHERE tblInv.intType <> 5
        AND tblInv.bitOtherCmp = 0
        AND tblInvPrice.strPricelist = @PriceList
        AND tblInvPrice.uidPriceBasedID = @UidPriceBasedID
        AND (
            @SelectedStatus = 0 -- show all
            OR (@SelectedStatus = 1 AND tblInv.bitInactive = 0) -- only active
            OR (@SelectedStatus = 2 AND tblInv.bitInactive = 1) -- only inactive
        )
END
GO

/****** Object:  StoredProcedure [dbo].[GetAllSalesDeposits]    Script Date: 2021-02-13 ******/
CREATE PROCEDURE [dbo].[GetAllSalesDeposits]  
AS  
BEGIN  
SELECT SUM(ISNULL(Z.decAmount, 0))
FROM (
	SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) * - 1 AS decAmount
	FROM tblCustTrans
	INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
	WHERE (tblCustTransDT.bitReversed = 0)
		AND (tblCustTrans.intTransType = 2)
		AND (
			tblCustTrans.strOrdDocID IS NULL
			OR (
				tblCustTrans.strInvDocID IS NOT NULL
				AND tblCustTrans.strOrdDocID IS NOT NULL
				)
			)
	
	UNION ALL
	
	SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) * - 1 AS decAmount
	FROM tblCustTrans
	INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
	WHERE (tblCustTransDT.bitReversed = 0)
		AND (tblCustTrans.intTransType = 2)
		AND (tblCustTrans.strOrdDocID IS NOT NULL)
		AND (tblCustTrans.strInvDocID IS NULL)
		AND (tblCustTransDT.lngCustPayID IS NOT NULL)
	) Z
END  
GO

/****** Object:  StoredProcedure [dbo].[GetAllPurchasePrePayments]    Script Date: 2021-02-13 ******/
CREATE PROCEDURE [dbo].[GetAllPurchasePrePayments]
AS
BEGIN
	SELECT ISNULL(SUM(tblVendTransDT.decAmount), 0) * - 1 AS decAmount
	FROM tblVendTrans
	INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
	WHERE (tblVendTransDT.bitReversed = 0)
		AND (tblVendTrans.intTransType = 2)
END
GO

/****** Object:  StoredProcedure [dbo].[GetVendPromoPriceByDate]    Script Date: 2021-02-13 ******/
Create procedure [dbo].[GetVendPromoPriceByDate]
@uidPriceBasedID uniqueidentifier
as
begin
	
	select strPartNumber as PartNumber,strVendName as VendorName,dtePromotionalStartDate, dtePromotionalEndDate,decPromotionalPrice,uidPriceBasedID,strUnit as Unit  from
	tblInvVendPromotionalPrice inner join tblInvVend 
	on tblInvVendPromotionalPrice.lngId = tblInvVend.lngID
	where uidPriceBasedID = @uidPriceBasedID

end
GO

/****** Object:  StoredProcedure [dbo].[GetVendPromoPriceByVendor]    Script Date: 2021-02-13 ******/
Create procedure [dbo].[GetVendPromoPriceByVendor]
@vendorName nvarchar(50) null
as
begin
	
	Select strPartNumber as PartNumber,strVendName as VendorName,dtePromotionalStartDate, dtePromotionalEndDate,decPromotionalPrice,uidPriceBasedID   from
	tblInvVendPromotionalPrice inner join tblInvVend 
	on tblInvVendPromotionalPrice.lngId = tblInvVend.lngID
	where strVendName = @vendorName

end
GO

/****** Object:  StoredProcedure [dbo].[GetDatesVendPriceList]    Script Date: 2021-02-13 ******/
Create procedure [dbo].[GetDatesVendPriceList]
@vendorName nvarchar(50) 
as
begin
	if @vendorName = ''
		select uidPriceBasedID as PriceBasedID,dteStartDate as StartDate,dteFinishDate as FinishDate
		from tblInvVendPriceListsByDate
	else
		select uidPriceBasedID as PriceBasedID,dteStartDate as StartDate,dteFinishDate as FinishDate
		from tblInvVendPriceListsByDate
		where strVendName = @vendorName

end
GO

/****** Object:  StoredProcedure [dbo].[GetDatesVendPriceList]    Script Date: 2021-02-13 ******/
CREATE PROCEDURE [dbo].[GetAmountLinkedToCustomer] @CustomerName AS NVARCHAR(50) = NULL
AS
BEGIN
	SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) AS BalDue
	FROM tblCustTransDT
	INNER JOIN tblCustTrans ON tblCustTransDT.lngCustTrID = tblCustTrans.lngCustTrID
	INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName
	WHERE (tblCustTransDT.bitReversed = 0)
		AND (tblCustTrans.intTransType <> 2)
		AND (tblCustomers.strCustName = @CustomerName)

END
GO

/****** Object:  StoredProcedure [dbo].[GetLastTransactionDate]    Script Date: 2021-02-13 ******/
CREATE PROCEDURE [dbo].[GetLastTransactionDate] @CustomerName AS NVARCHAR(50) = NULL
AS
BEGIN
	SELECT MAX(tblJournal.dteJournalDate)
	FROM tblJournal
	INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
	WHERE tblJournalEnt.intGLNumber IN (
			SELECT intGLNumberAR
			FROM tblCustomers
			WHERE strCustName = @CustomerName
			)
END
GO

/****** Object:  StoredProcedure [dbo].[GetDepositAmountLinkedToCustomer]    Script Date: 2021-02-13 ******/
CREATE PROCEDURE [dbo].[GetDepositAmountLinkedToCustomer] @CustomerName AS NVARCHAR(50) = NULL
AS
BEGIN
	SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) AS decBalDue
	FROM tblCustTransDT
	INNER JOIN tblCustTrans ON tblCustTransDT.lngCustTrID = tblCustTrans.lngCustTrID
	INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName
	WHERE (tblCustTransDT.bitReversed = 0)
		AND (tblCustTrans.intTransType = 2)
		AND (tblCustomers.strCustName = @CustomerName)
END
GO

/****** Object:  StoredProcedure [dbo].[GetDepositLastTransactionDate]    Script Date: 2021-02-13 ******/
CREATE PROCEDURE [dbo].[GetDepositLastTransactionDate] @CustomerName AS NVARCHAR(50) = NULL
AS
BEGIN
	SELECT MAX(tblJournal.dteJournalDate)
	FROM tblJournal
	INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
	WHERE tblJournalEnt.intGLNumber IN (
			SELECT intGLNumberDeposit
			FROM tblCustomers
			WHERE strCustName = @CustomerName
			)
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvDataForSalesREBulk]    Script Date: 2021-02-15 ******/
CREATE PROCEDURE [dbo].[GetInvDataForSalesREBulk]
AS
BEGIN
	SELECT tblInv.strPartNumber AS PartNumber
		,intType AS [Type]
		,bitAllowPriceChg AS IsAllowPriceChg
		,ISNULL(CASE strConversionType
				WHEN 'Multiply'
					THEN decConversionFactor
				ELSE 1 / decConversionFactor
				END, decSellFromStock) AS SellFromStock
		,strFromUnit AS FromUnit
	FROM tblInv
	LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
END
GO



/****** Object:  StoredProcedure [dbo].[GetESDSettingsByUser]    Script Date: 11/05/2021 10:06:00 ******/
CREATE PROCEDURE [dbo].[GetESDSettingsByUser]  
@username as nvarchar(20)  
as  
begin  
select intID as ID,strPosSerialNumber as PosSerialNumber,strPosVendor as PosVendor,strPosModel as PosModel,strPosSoftVersion as PosSoftVersion,strIPAddress as IPAddress,intPort as Port  from tblESDUserMapping  
inner join tblEFDRegisterConfig on intSettingID=intID  
where strUserName = @username  
end
GO

/****** Object:  StoredProcedure [dbo].[GetAllESDUserMappingList]    Script Date: 11/05/2021 10:06:00 ******/
CREATE PROCEDURE [dbo].[GetAllESDUserMappingList]  
as  
begin  
 select intMappingId as MappingID,strUserName as UserName,intSettingID as SettingID,tblEFDRegisterConfig.strPosSerialNumber as POSSerialNumber  from tblESDUserMapping  
 inner join tblEFDRegisterConfig on intSettingID = tblEFDRegisterConfig.intID  
end
GO

/****** Object:  StoredProcedure [dbo].[GetUserListForESD]    Script Date: 11/05/2021 10:06:00 ******/
CREATE PROCEDURE [dbo].[GetUserListForESD]  
as  
begin  
 select strUserName as UserName from tblUsers  
end
GO

/****** Object:  StoredProcedure [dbo].[DeleteEFDRegisterConfig]    Script Date: 11/05/2021 10:06:00 ******/
CREATE PROCEDURE [dbo].[DeleteEFDRegisterConfig]  
@intID as int  
as  
begin  
 delete tblEFDRegisterConfig  
 where intID = @intID  
  
 select @@ROWCOUNT as deletedRows  
end
GO

/****** Object:  StoredProcedure [dbo].[GetAllEFDRegisterConfig]    Script Date: 11/05/2021 10:06:00 ******/
CREATE PROCEDURE [dbo].[GetAllEFDRegisterConfig]  
as  
begin  
 select intID as ID,strPosSerialNumber as PosSerialNumber,strPosVendor as PosVendor,strPosSoftVersion as PosSoftVersion,strPosModel as PosModel,strIPAddress as IPAddress,intPort as Port from tblEFDRegisterConfig  
End
GO

/****** Object:  StoredProcedure [dbo].[GetUserTimeAndDistanceDetails]    Script Date: 21/05/2021 14:48:00 ******/
CREATE PROCEDURE [dbo].[GetUserTimeAndDistanceDetails] 
(
	@FromDate DATETIME
	,@ToDate DATETIME
	)
AS
BEGIN
	
CREATE TABLE #UserLocationTracking (
		RowId INT
		,LocId INT
		,Username VARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS
		,GeoCord GEOGRAPHY
		,[Day] DATE
		)

	CREATE TABLE #UserWiseDistance (
		Username VARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS
		,Distance DECIMAL(10, 2)
		)

	INSERT INTO #UserLocationTracking (
		RowId
		,LocId
		,Username
		,GeoCord
		,[Day]
		)
	SELECT RowId
		,LocationId
		,strUserName
		,geoCoord
		,[Day]
	FROM (
		SELECT ROW_NUMBER() OVER (
				ORDER BY dteCreatedDateTime ASC
				) AS RowId
			,ROW_NUMBER() OVER (
				PARTITION BY strUsername ORDER BY dteCreatedDateTime ASC
				) LocationId
			,strUserName
			,geoCoord
			,CONVERT(DATE, dteCreatedDateTime) AS [Day]
		FROM tblTrackUsersLocation
		WHERE strDocumentId IS NULL
			AND CONVERT(DATE, dteCreatedDateTime) >= CONVERT(DATE, @FromDate)
			AND CONVERT(DATE, dteCreatedDateTime) <= CONVERT(DATE, @ToDate)
		) AS RESULT

	DECLARE @totalRows INT = (
			SELECT count(*)
			FROM #UserLocationTracking
			)
	DECLARE @currentRow INT = 0
	DECLARE @CurrentUser VARCHAR(MAX)
	DECLARE @PrevUser VARCHAR(MAX)
	DECLARE @NextUser VARCHAR(MAX)
	DECLARE @Distance DECIMAL(10, 2) = 0.00

	WHILE @currentRow < @totalRows
	BEGIN
		IF EXISTS (
				SELECT *
				FROM #UserLocationTracking
				WHERE RowId = @currentRow
				)
		BEGIN
			SET @CurrentUser = (
					SELECT Username
					FROM #UserLocationTracking
					WHERE RowId = @currentRow
					)
			SET @NextUser = (
					SELECT Username
					FROM #UserLocationTracking
					WHERE RowId = @currentRow + 1
					)

			IF (@CurrentUser = @NextUser)
			BEGIN
				DECLARE @or GEOGRAPHY
					,@dest GEOGRAPHY

				SET @or = (
						SELECT GeoCord
						FROM #UserLocationTracking
						WHERE RowId = @currentRow
						)
				SET @dest = (
						SELECT GeoCord
						FROM #UserLocationTracking
						WHERE RowId = @currentRow + 1
						)
				--distance in km
				SET @Distance = @Distance + CONVERT(DECIMAL(10, 2), (
							SELECT @or.STDistance(@dest) / 1000
							))

				INSERT INTO #UserWiseDistance
				SELECT @CurrentUser
					,@Distance
			END
		END

		SET @currentRow = @currentRow + 1
	END;

	WITH cteUsers
	AS (
		SELECT lngID
			,strUserName
			,dteLoginDate
			,dteTimeIn
			,dteTimeOut
			,dteStartBreak
			,dteEndBreak
			,row_number() OVER (
				PARTITION BY strUserName ORDER BY dteLoginDate DESC
				) AS RowNum
		FROM tblLoginHisotry
		)
	SELECT ISNULL(lngId, 0) AS RowId
		,ISNULL(LH.strUserName, U.strUserName) AS Username,
		U.strName AS strUserName
		,dteLoginDate AS LastLoginDate
		,CASE 
			WHEN ((dteTimeOut) IS NULL)
				AND ((dteTimeIn) IS NOT NULL)
				AND (CONVERT(DATE, dteTimeIn) < CONVERT(DATE, GETDATE()))
				AND ((dteStartBreak) IS NULL)
				THEN 'CLOCKED OUT'
			WHEN ((dteTimeOut) IS NULL)
				AND ((dteTimeIn) IS NOT NULL)
				AND (CONVERT(DATE, dteStartBreak) < CONVERT(DATE, GETDATE()))
				AND ((dteStartBreak) IS NOT NULL)
				AND ((dteEndBreak) IS NULL)
				THEN 'CLOCKED OUT'
			WHEN ((dteTimeIn) IS NOT NULL)
				AND ((dteTimeOut) IS NULL)
				AND ((dteStartBreak) IS NULL)
				THEN 'LOGGED IN'
			WHEN ((dteTimeIn) IS NOT NULL)
				AND ((dteTimeOut) IS NULL)
				AND ((dteStartBreak) IS NOT NULL)
				AND ((dteEndBreak) IS NULL)
				THEN 'ON BREAK'
			WHEN ((dteTimeIn) IS NOT NULL)
				AND ((dteTimeOut) IS NOT NULL)
				THEN 'CLOCKED OUT'
			ELSE 
				(CASE WHEN ISNULL(RowNum, 0) = 0
					THEN 'CLOCKED OUT'
					ELSE 'LOGGED IN'
				END)
			END AS LoggedInStatus
		,dteTimeIn
		,dteTimeOut
		,dteStartBreak
		,dteEndBreak
		,ISNULL(SUM(D.Distance), 0.00) AS UserDistanceTravelled
	FROM cteUsers LH
	LEFT OUTER JOIN #UserWiseDistance AS D ON D.Username = LH.strUserName
	RIGHT JOIN tblUsers AS U ON U.strUserName = LH.strUserName
	WHERE ISNULL(RowNum, 1) = 1
	AND
	U.blnIsMobileUser=1 AND 
	 U.blnIsLockedOut=0
	GROUP BY LH.strUserName
		,U.strUserName
		,U.strName
		,dteLoginDate
		,dteTimeIn
		,dteTimeOut
		,dteStartBreak
		,dteEndBreak
		,lngID
		,RowNum


	DROP TABLE #UserLocationTracking

	DROP TABLE #UserWiseDistance

END
GO



SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[AddTblCentersTDT] (
@SQstrTemplate VARCHAR(100)
,@SQuidCenterID NVARCHAR(max)
,@SQdecPct DECIMAL(6, 3)
)
AS
BEGIN
INSERT INTO tblCentersTDT
VALUES (
@SQstrTemplate
,@SQuidCenterID
,@SQdecPct
)
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPGForGRV] (@DocNumber AS NVARCHAR(50))  
AS  
BEGIN  
SELECT tblOrderDocPG.strOrdPGDocID AS OrdPGDocID  
,tblOrderDocPG.lngInvTrackID AS InvTrackID  
,tblOrderDocPG.lngJourID AS JourID  
,tblOrderDocPG.dteSystemDate AS SystemDate  
,tblOrderDocPG.dteJournalDate AS JournalDate  
,tblOrderDocPG.dteRequired AS [Required]  
,tblOrderDocPG.strUserName AS UserName  
,tblOrderDocPG.strVendName AS VendName  
,tblOrderDocPG.strShipTo AS ShipTo  
,tblOrderDocPG.strDelNoteNo AS VendDesc  
,tblOrderDocPG.decSubTotal AS SubTotal  
,tblOrderDocPG.decVAT AS VAT  
,tblOrderDocPG.decTotal AS Total  
,tblOrderDocPG.bitFromPO AS IsFromPO  
,tblOrderDocPG.strOrdPDocID AS OrdPDocID  
,tblOrderDocPG.strNotes AS Notes  
,tblOrderDocPG.bitPrinted AS Printed  
,tblOrderDocPG.bitEmailed AS Emailed  
,tblOrderDocPG.bitCleared AS Cleared  
,tblOrderDocPG.strCurrency AS Currency  
,tblOrderDocPG.bitIsForeign AS IsForeign  
,tblOrderDocPG.decSubTotalF AS SubTotalF  
,tblOrderDocPG.decVATF AS VATF  
,tblOrderDocPG.decTotalF AS TotalF  
,tblOrderDocPG.decExchange AS Exchange  
,tblOrderDocPG.strTerm AS Term  
,tblOrderDocPG.intDept AS Dept  
,tblOrderDocPG.strField1 AS Field1  
,tblOrderDocPG.strField2 AS Field2  
,tblOrderDocPG.strField3 AS Field3  
,tblOrderDocPG.strField4 AS Field4  
,tblOrderDocPG.strField5 AS Field5  
,tblOrderDocPG.strField6 AS Field6  
,tblOrderDocPG.strField7 AS Field7  
,tblOrderDocPG.strField8 AS Field8  
,tblOrderDocPG.strField9 AS Field9  
,tblOrderDocPG.strField10 AS Field10  
,tblOrderDocPG.strField11 AS Field11  
,tblOrderDocPG.strField12 AS Field12  
,tblOrderDocPG.strSubFormated AS SubFormated  
,tblOrderDocPG.strVATFormatted AS VATFormatted  
,tblOrderDocPG.strTotFormatted AS TotFormatted  
,tblOrderDocPG.strBoughtFrom AS BoughtFrom  
,tblOrderDocPG.decDiscPerc AS DiscPerc  
,tblOrderDocPG.decDiscAmt AS DiscAmt  
,tblOrderDocPG.decDiscAmtF AS DiscAmtF  
,tblOrderDocPG.strDiscFormatted AS DiscFormatted  
,tblOrderDocPG.strOrdFQDocID AS OrdFQDocID  
,tblOrderDocPG.bitFQConvert AS FQConvert  
,tblOrderDocPG.bitSOCopy AS SOCopy  
,tblOrderDocPG.bitSOCopyMulti AS SOCopyMulti  
,tblOrderDocPG.strStatusTypeCode AS StatusTypeCode  
,tblOrderDocPG.bitBookmark AS Bookmark  
,tblOrderDocPG.strAddInfo AS AddInfo  
,tblOrderDocPG.strReference AS Reference  
,tblOrderDocPG.decTotalWeight AS NetItemWeight  
,tblOrderDocPG.decTotalVolWeight AS NetVolumetricWeight  
,ISNULL(tblOrderDocPG.intRevisionNumber,0) AS RevisionNumber  
,tblOrderDocPG.bitPutAwayCompleted AS PutAwayCompleted  
,ISNULL(tblCustomers.strCustName, '') AS CustName  
FROM tblOrderDocPG  
LEFT JOIN tblOrderDocQ ON tblOrderDocPG.strOrdFQDocID = tblOrderDocQ.strOrdDocID  
LEFT JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName  
WHERE tblOrderDocPG.strOrdPGDocID = @DocNumber  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPGDTForGRV] (@DocNumber AS NVARCHAR(50))
AS
BEGIN
SELECT tblOrderDocPGDT.[strOrdPGDocID] AS OrdPGDocID
,tblOrderDocPGDT.[intLineNo] AS LineNumber
,tblOrderDocPGDT.[strPartNumber] AS PartNumber
,tblOrderDocPGDT.[strLocation] AS Location
,tblOrderDocPGDT.[strPartDesc] AS PartDescription
,tblOrderDocPGDT.[decBuyQty] AS BuyQty
,tblOrderDocPGDT.[decBuyQtyRemain] AS BuyQtyRemain
,tblOrderDocPGDT.[strBuyUnit] AS BuyUnit
,tblOrderDocPGDT.[decStockQty] AS StockQty
,tblOrderDocPGDT.[decStockQtyRemain] AS StockQtyRemain
,tblOrderDocPGDT.[strStockUnit] AS StockUnit
,tblOrderDocPGDT.[intType] AS Type
,tblOrderDocPGDT.[decPriceEaExc] AS PriceEaExc
,tblOrderDocPGDT.[decLineTotExc] AS LineTotalExc
,tblOrderDocPGDT.[decLineTaxAmt] AS LineTaxAmount
,tblOrderDocPGDT.[strTaxCode] AS TaxCode
,tblOrderDocPGDT.[decEaIncTax] AS EaIncTax
,tblOrderDocPGDT.[decTotIncTax] AS TotalIncTax
,tblOrderDocPGDT.[imgTaxObj] AS TaxObj
,tblOrderDocPGDT.[strCurrency] AS Currency
,tblOrderDocPGDT.[bitIsForeign] AS IsForeign
,tblOrderDocPGDT.[decPriceEaExcF] AS PriceEaExcF
,tblOrderDocPGDT.[decLineTotExcF] AS LineTotalExcF
,tblOrderDocPGDT.[decLineTaxAmtF] AS LineTaxAmountF
,tblOrderDocPGDT.[decEaIncTaxF] AS EaIncTaxF
,tblOrderDocPGDT.[decTotIncTaxF] AS TotalIncTaxF
,tblOrderDocPGDT.[strInvField1] AS InvField1
,tblOrderDocPGDT.[strInvField2] AS InvField2
,tblOrderDocPGDT.[strInvField3] AS InvField3
,tblOrderDocPGDT.[strInvField4] AS InvField4
,tblOrderDocPGDT.[strInvField5] AS InvField5
,tblOrderDocPGDT.[strInvField6] AS InvField6
,tblOrderDocPGDT.[strLineField1] AS LineField1
,tblOrderDocPGDT.[strLineField2] AS LineField2
,tblOrderDocPGDT.[strLineField3] AS LineField3
,tblOrderDocPGDT.[strLineField4] AS LineField4
,tblOrderDocPGDT.[strLineField5] AS LineField5
,tblOrderDocPGDT.[strLineField6] AS LineField6
,tblOrderDocPGDT.[strLineField7] AS LineField7
,tblOrderDocPGDT.[strLineField8] AS LineField8
,tblOrderDocPGDT.[strLineField9] AS LineField9
,tblOrderDocPGDT.[strLineField10] AS LineField10
,tblOrderDocPGDT.[strLineField11] AS LineField11
,tblOrderDocPGDT.[strLineField12] AS LineField12
,tblOrderDocPGDT.[decLineDiscPerc] AS LineDiscountPercentage
,tblOrderDocPGDT.[decLineDiscAmt] AS DiscountAmount
,tblOrderDocPGDT.[decLineDiscAmtF] AS DiscountAmountF
,tblOrderDocPGDT.[bitDiscountTax] AS IsDiscountTax
,tblOrderDocPGDT.[strOrdSODocID] AS OrderSODocID
,tblOrderDocPGDT.[decItemWeight] AS ItemWeight
,tblOrderDocPGDT.[decVolumetricWeight] AS VolumetricWeight
,tblOrderDocPGDT.[uidTransactionFieldID] AS TransactionFieldID
,tblOrderDocPGDT.[strPartExtendedDesc] AS PartExtendedDesc
,tblOrderDocPGDT.[decBuyGRVQtyRemain] AS BuyGRVQtyRemain
,tblOrderDocPGDT.[decStockGRVQtyRemain] AS StockGRVQtyRemain
,tblOrderDocPGDT.[decPutAwayQty] AS PutAwayQty
,tblOrderDocPGDT.[intSODocItemLineNo] AS SODocItemLineNo
,ISNULL(tblOrderDocPGDTPrj.strProjNumber, '') AS ProjNumber
,ISNULL(tblOrderDoc.strCustName, '') AS CustName
,tblInv.bitInvSerialType AS IsInvSerialType
,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
,ISNULL(tblinv.strUnitOfMeasure, '') AS UnitOfMeasure
,tblInv.strDimProCode AS DimProCode
,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist
,ISNULL(STUFF((
SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX))
FROM tblInvLocBin
WHERE tblInvLocBin.lngId IN (
SELECT lngBinId
FROM tblOrderDocPGDTBin
WHERE tblOrderDocPGDTBin.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID
AND tblOrderDocPGDTBin.intLineNo = tblOrderDocPGDT.intLineNo
)
FOR XML PATH('')
), 1, 1, ''), '') AS BinCode
,ISNULL(STUFF((
SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(MAX))
FROM tblInvLocBin
WHERE tblInvLocBin.lngId IN (
SELECT lngBinId
FROM tblOrderDocPGDTBin
WHERE tblOrderDocPGDTBin.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID
AND tblOrderDocPGDTBin.intLineNo = tblOrderDocPGDT.intLineNo
)
FOR XML PATH('')
), 1, 1, ''), '') AS BinId
,ISNULL(CASE strConversionType
WHEN 'Multiply'
THEN decConversionFactor
ELSE 1 / decConversionFactor
END, decBuyToStock) AS BuyToStock
FROM tblOrderDocPGDT
INNER JOIN tblInv ON tblOrderDocPGDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
AND tblOrderDocPGDT.strBuyUnit = tblInvUOMs.strFromUnit
LEFT JOIN tblOrderDocPGDTPrj ON tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPGDTPrj.strOrdPGDocID
AND tblOrderDocPGDT.intLineNo = tblOrderDocPGDTPrj.intLineNo
LEFT JOIN tblOrderDoc ON tblOrderDocPGDT.strOrdSODocID = tblOrderDoc.strOrdDocID
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblOrderDocPGDT.strOrdPGDocID = @DocNumber
ORDER BY tblOrderDocPGDT.intLineNo
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendorSettings] (@VendorName AS NVARCHAR(50))
AS
BEGIN
	SELECT strTerm AS Term
		,intDept AS Department
		,strCurrency AS Currency
		,intDelMethod AS DelMethod
		,strTaxCode AS TaxCode
		,ISNULL(intExpAcct, 0) AS ExpAcct
		,strTenderType AS TenderType
		,decTradeDiscPerc AS TradeDiscPerc
		,decBalDue AS BalDue
		,decBalDueF AS BalDueF
		,decOpenOrders AS OpenOrders
		,decOpenOrdersF AS OpenOrdersF
		,ISNULL(strVendTPIN, '') AS VendTPIN
		,ISNULL((
				SELECT CASE bitIsForeign
						WHEN 0
							THEN SUM(decTotal)
						ELSE SUM(decTotalF)
						END
				FROM tblOrderDocP(NOLOCK)
				WHERE intDocType = 2
					AND bitCleared = 0
					AND strVendName = @VendorName
					AND strCurrency = (
						SELECT strCurrency
						FROM tblVendors(NOLOCK)
						WHERE strVendName = @VendorName
						)
				GROUP BY bitIsForeign
				), 0) AS OpenQuotes
		,strVendDesc AS [Description]
		,strStreet1 AS Street1
		,strStreet2 AS Street2
		,strCity AS City
		,strProvince AS Province
		,strPostal AS Postal
		,strCountry AS Country
		,bitInvWorkflowGRV AS IsInvWorkflowGRV
		,strDocPassword AS DocPassword
		,bitWithholdTax AS WithholdTax
		,strWithholdTaxCode AS WithholdTaxCode
	FROM tblVendors(NOLOCK)
	WHERE tblVendors.strVendName = @VendorName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[WHReceivingOptDocLinesUpdate] (@tblOrderDocPGDT AS CommonTableType READONLY)
AS
BEGIN
UPDATE tblOrderDocPGDT
SET strLineField1 = CONVERT(NVARCHAR(50), ISNULL(tt.COL02, ''))
,strLineField2 = CONVERT(NVARCHAR(50), ISNULL(tt.COL03, ''))
,strLineField3 = CONVERT(NVARCHAR(50), ISNULL(tt.COL04, ''))
,strLineField4 = CONVERT(NVARCHAR(50), ISNULL(tt.COL05, ''))
,strLineField5 = CONVERT(NVARCHAR(50), ISNULL(tt.COL06, ''))
,strLineField6 = CONVERT(NVARCHAR(50), ISNULL(tt.COL07, ''))
,strLineField7 = CONVERT(NVARCHAR(50), ISNULL(tt.COL08, ''))
,strLineField8 = CONVERT(NVARCHAR(50), ISNULL(tt.COL09, ''))
,strLineField9 = CONVERT(NVARCHAR(50), ISNULL(tt.COL10, ''))
,strLineField10 = CONVERT(NVARCHAR(50), ISNULL(tt.COL11, ''))
,strLineField11 = CONVERT(NVARCHAR(50), ISNULL(tt.COL12, ''))
,strLineField12 = CONVERT(NVARCHAR(50), ISNULL(tt.COL13, ''))
FROM @tblOrderDocPGDT tt
WHERE tblOrderDocPGDT.strOrdPGDocID = CONVERT(NVARCHAR(50), ISNULL(tt.COL15, ''))
AND tblOrderDocPGDT.[intLineNo] = CONVERT(INT, ISNULL(tt.COL16, 0))
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvWorkFlow] (@OrdDocID AS NVARCHAR(max))
AS
BEGIN
SELECT tblCustomers.bitInvWorkflowNew AS IsInvWorkflowNew
,tblCustomers.bitInvWorkflowDA AS IsInvWorkflowDA
,tblCustomers.bitInvWorkflowSO AS IsInvWorkflowSO
FROM tblCustomers
INNER JOIN tblOrderDoc ON tblCustomers.strCustName = tblOrderDoc.strCustName
WHERE tblOrderDoc.strOrdDocID = @OrdDocID
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPGDTData] (@DocumentId VARCHAR(50))
AS
BEGIN
SELECT tblOrderDocPGDT.strPartNumber AS PartNumber
,tblOrderDocPGDT.strLocation AS [Location]
,tblOrderDocPGDT.decStockQty AS Qty
,tblOrderDocPGDT.intLineNo AS [LineNo]
,tblOrderDocPGDT.decLineTotExc AS LineTotExc
,tblOrderDocPGDT.decLineTotExc AS LineValue
FROM tblOrderDocPG
INNER JOIN tblOrderDocPGDT ON tblOrderDocPG.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID
WHERE (tblOrderDocPG.strOrdPGDocID = @DocumentId)
ORDER BY tblOrderDocPGDT.intLineNo
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteOrderDocPGDTData] @DocNumber AS NVARCHAR(50)
AS
BEGIN
DELETE
FROM tblOrderDocPG
WHERE strOrdPGDocID = @DocNumber
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertOrderHeader] (
@OrdPGDocID AS NVARCHAR(50)
,@InvTrackID AS BIGINT
,@JourID AS BIGINT
,@SystemDate AS DATETIME
,@JournalDate AS DATETIME
,@Required AS DATETIME
,@UserName AS NVARCHAR(20)
,@VendName AS NVARCHAR(50)
,@ShipTo AS NVARCHAR(500)
,@DelNoteNo AS NVARCHAR(50)
,@DiscountPercentage AS MONEY
,@SubTotal AS MONEY
,@DiscountAmount AS MONEY
,@VAT AS MONEY
,@Total AS MONEY
,@IsFromPO AS BIT
,@OrdPDocID AS NVARCHAR(50)
,@Notes AS NVARCHAR(MAX)
,@IsPrinted AS BIT
,@IsEmailed AS BIT
,@IsCleared AS BIT
,@Currency AS NVARCHAR(3)
,@SubTotalF AS MONEY
,@DiscountAmountF AS MONEY
,@VATF AS MONEY
,@TotalF AS MONEY
,@Exchange AS MONEY
,@IsForeign AS BIT
,@Term AS NVARCHAR(50)
,@Dept AS INT
,@Field1 AS NVARCHAR(100)
,@Field2 AS NVARCHAR(100)
,@Field3 AS NVARCHAR(100)
,@Field4 AS NVARCHAR(100)
,@Field5 AS NVARCHAR(100)
,@Field6 AS NVARCHAR(100)
,@Field7 AS NVARCHAR(100)
,@Field8 AS NVARCHAR(100)
,@Field9 AS NVARCHAR(100)
,@Field10 AS NVARCHAR(100)
,@Field11 AS NVARCHAR(100)
,@Field12 AS NVARCHAR(100)
,@SubFormatted AS NVARCHAR(50)
,@DiscountFormatted AS NVARCHAR(50)
,@VATFormatted AS NVARCHAR(50)
,@TotalFormatted AS NVARCHAR(50)
,@BoughtFrom AS NVARCHAR(50)
,@OrdFQDocID AS NVARCHAR(50)
,@IsFQConvert AS BIT
,@IsSOCopy AS BIT
,@IsSOCopyMulti AS BIT
,@StatusTypeCode AS NVARCHAR(20)
,@IsBookmark AS BIT
,@AddInfo AS NVARCHAR(50)
,@Reference AS NVARCHAR(50)
,@NetWeight AS MONEY
,@NetVolWeight AS MONEY
,@RevisionNumber AS INT
,@IsPutAwayCompleted AS BIT = NULL
)
AS
BEGIN
INSERT INTO [dbo].[tblOrderDocPG] (
[strOrdPGDocID]
,[lngInvTrackID]
,[lngJourID]
,[dteSystemDate]
,[dteJournalDate]
,[dteRequired]
,[strUserName]
,[strVendName]
,[strShipTo]
,[strDelNoteNo]
,[decSubTotal]
,[decVAT]
,[decTotal]
,[bitFromPO]
,[strOrdPDocID]
,[strNotes]
,[bitPrinted]
,[bitEmailed]
,[bitCleared]
,[strCurrency]
,[bitIsForeign]
,[decSubTotalF]
,[decVATF]
,[decTotalF]
,[decExchange]
,[strTerm]
,[intDept]
,[strField1]
,[strField2]
,[strField3]
,[strField4]
,[strField5]
,[strField6]
,[strField7]
,[strField8]
,[strField9]
,[strField10]
,[strField11]
,[strField12]
,[strSubFormated]
,[strVATFormatted]
,[strTotFormatted]
,[strBoughtFrom]
,[decDiscPerc]
,[decDiscAmt]
,[decDiscAmtF]
,[strDiscFormatted]
,[strOrdFQDocID]
,[bitFQConvert]
,[bitSOCopy]
,[bitSOCopyMulti]
,[strStatusTypeCode]
,[bitBookmark]
,[strAddInfo]
,[strReference]
,[decTotalWeight]
,[decTotalVolWeight]
,[intRevisionNumber]
,[bitPutAwayCompleted]
)
VALUES (
@OrdPGDocID
,@InvTrackID
,@JourID
,@SystemDate
,@JournalDate
,@Required
,@UserName
,@VendName
,@ShipTo
,@DelNoteNo
,@SubTotal
,@VAT
,@Total
,@IsFromPO
,@OrdPDocID
,@Notes
,@IsPrinted
,@IsEmailed
,@IsCleared
,@Currency
,@IsForeign
,@SubTotalF
,@VATF
,@TotalF
,@Exchange
,@Term
,@Dept
,@Field1
,@Field2
,@Field3
,@Field4
,@Field5
,@Field6
,@Field7
,@Field8
,@Field9
,@Field10
,@Field11
,@Field12
,@SubFormatted
,@VATFormatted
,@TotalFormatted
,@BoughtFrom
,@DiscountPercentage
,@DiscountAmount
,@DiscountAmountF
,@DiscountFormatted
,@OrdFQDocID
,@IsFQConvert
,@IsSOCopy
,@IsSOCopyMulti
,@StatusTypeCode
,@IsBookmark
,@AddInfo
,@Reference
,@NetWeight
,@NetVolWeight
,@RevisionNumber
,@IsPutAwayCompleted
)
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE GetWHReceivingDataForESubmit @DocNumber AS NVARCHAR(50)
AS
BEGIN
SELECT tblOrderDocPG.strOrdPGDocID
,'GR' strType
,tblOrderDocPG.strOrdPDocID
,tblOrderDocPG.dteJournalDate
,tblOrderDocPG.strUserName
,'' strLocation
FROM tblOrderDocPG
WHERE strOrdPGDocID = @DocNumber
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE GetWHReceivingDTForESubmit @DocNumber AS NVARCHAR(50)
AS
BEGIN
SELECT tblOrderDocPGDT.strOrdPGDocID
,tblOrderDocPGDT.intLineNo
,tblOrderDocPGDT.strPartNumber
,tblOrderDocPGDT.decBuyQty
,tblOrderDocPDT.decBuyQtyRemain
FROM tblOrderDocPGDT
INNER JOIN tblOrderDocPDT ON tblOrderDocPGDT.intLineNo = tblOrderDocPDT.intLineNo
AND tblOrderDocPDT.strOrdPDocID = (
SELECT strOrdPDocID
FROM tblOrderDocPG
WHERE strOrdPGDocID = @DocNumber
)
WHERE tblOrderDocPGDT.bitDiscountTax = 0
AND strOrdPGDocID = @DocNumber
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE GetOrderDocPGDTSerialData @DocNumber AS NVARCHAR(50)
AS
BEGIN
SELECT tblOrderDocPGDTSerial.strOrdPGDocID
,tblOrderDocPGDTSerial.intLineNo
,tblOrderDocPGDT.strPartNumber
,tblOrderDocPGDTSerial.strSerialNumber
,tblOrderDocPGDTSerial.decQty
,tblOrderDocPDT.decBuyQtyRemain
FROM tblOrderDocPGDTSerial
INNER JOIN tblOrderDocPGDT ON tblOrderDocPGDTSerial.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID
AND tblOrderDocPGDTSerial.intLineNo = tblOrderDocPGDT.intLineNo
INNER JOIN tblOrderDocPDT ON tblOrderDocPGDT.intLineNo = tblOrderDocPDT.intLineNo
AND tblOrderDocPDT.strOrdPDocID = (
SELECT strOrdPDocID
FROM tblOrderDocPG
WHERE strOrdPGDocID = @DocNumber
)
WHERE tblOrderDocPGDTSerial.strOrdPGDocID = @DocNumber
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InvBinReceiving_Search] @LocationName NVARCHAR(10) = NULL
,@BinCode NVARCHAR(50) = NULL
,@UserName NVARCHAR(50) = NULL
,@PartNumber NVARCHAR(50) = NULL
,@SearchText NVARCHAR(100) = NULL
,@IsAllowed BIT = NULL
,@IsDefault BIT = NULL
AS
BEGIN
SET NOCOUNT ON;
IF @LocationName IS NOT NULL
BEGIN
DECLARE @ReceivingBinId BIGINT = 0
SET @ReceivingBinId = ISNULL((
SELECT TOP 1 tblInvLocBin.lngID
FROM tblInvLocBin
WHERE tblInvLocBin.strLocName = @LocationName
AND (
bitReceivingBin = 1
OR bitStockingBin = 1
)
), 0)
DECLARE @Count INT
SET @Count = (
SELECT Count(1)
FROM tblInvLocSec
WHERE strLocName = @LocationName
)
IF @Count = 0
BEGIN
SET @UserName = NULL
END
IF @IsAllowed = 1
BEGIN
SELECT tblInvExtBin.strPartNumber	as PartNumber
,tblInvExtBin.strLocName  as LocName
,tblInvExtBin.lngBinID	 as BinId
,tblInvExtBin.decOnHand AS Avail
,tblInvExtBin.decAlloc	  as Alloc
,tblInvExtBin.decOnHand	 as OnHand
,tblInvExtBin.decMaximumQty	 as MaximumQty
,tblInvExtBin.bitAllowed  as IsAllowed
,tblInvExtBin.bitDefault  as IsDefault
,strDescription	   as [Description]
,tblInvLocBin.strBinCode   as BinCode
,IsAllowEditing = CAST(1 AS BIT)
,ItemType = tblInv.intType
,(
SELECT TOP 1 dteExpiryDate
FROM tblInvLotExt
WHERE tblInvLotExt.decQty > 0
AND tblInvLotExt.lngBinID = tblInvExtBin.lngBinID
AND tblInvLotExt.strLocName = tblInvExtBin.strLocName
AND tblInvLotExt.strPartNumber = tblInvExtBin.strPartNumber
ORDER BY dteExpiryDate ASC
) AS ExpiryDate
,tblInvLocBin.bitPickingBin AS PickingBin
,ISNULL(tblInvLocBin.bitReceivingBin, 0) AS ReceivingBin
,ISNULL(tblInvLocBin.bitStockingBin, 0) AS StockingBin
,@ReceivingBinId
FROM tblInvExtBin
INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId
AND tblInvLocBin.strLocName = tblInvExtBin.strLocName
AND bitInactive = 0
INNER JOIN tblInv ON tblInv.strPartNumber = tblInvExtBin.strPartNumber
LEFT JOIN tblInvLocBinSec ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode
AND tblInvLocBinSec.strLocName = tblInvExtBin.strLocName
AND (
(tblInvLocBinSec.strUserName = @UserName)
OR (@UserName IS NULL)
)
WHERE (
(tblInvExtBin.strLocName = @LocationName)
OR (@LocationName IS NULL)
)
AND (
(tblInvLocBin.strBinCode = @BinCode)
OR (@BinCode IS NULL)
)
AND (
(tblInvExtBin.strPartNumber = @PartNumber)
OR (@PartNumber IS NULL)
)
AND (
(
tblInvExtBin.strLocName LIKE '%' + @SearchText + '%'
OR tblInvLocBin.strBinCode LIKE '%' + @SearchText + '%'
OR tblInvExtBin.strPartNumber LIKE '%' + @SearchText + '%'
)
OR (@SearchText IS NULL)
)
ORDER BY ExpiryDate
,BinCode
END
ELSE
BEGIN
SELECT ISNULL(tblInvExtBin.strPartNumber, @PartNumber) as PartNumber
,ISNULL(tblInvExtBin.strLocName, tblInvLocBin.strLocName) as LocName
,ISNULL(tblInvExtBin.lngBinId, tblInvLocBin.lngId) as BinId
,ISNULL(decOnHand, 0) as Avail
,ISNULL(decAlloc, 0) as Alloc
,ISNULL(decOnHand, 0) as OnHand
,ISNULL(decMaximumQty, 0) as MaximumQty
,ISNULL(bitAllowed, 0) as IsAllowed
,ISNULL(bitDefault, 0) as IsDefault
,strDescription	   as [Description]
,tblInvLocBin.strBinCode as BinCode
,IsAllowEditing = CAST(1 AS BIT)
,ItemType = ISNULL(tblInv.intType, 1)
,(
SELECT TOP 1 dteExpiryDate
FROM tblInvLotExt
WHERE tblInvLotExt.decQty > 0
AND tblInvLotExt.lngBinID = tblInvExtBin.lngBinID
AND tblInvLotExt.strLocName = tblInvExtBin.strLocName
AND tblInvLotExt.strPartNumber = tblInvExtBin.strPartNumber
ORDER BY dteExpiryDate ASC
) AS ExpiryDate
,tblInvLocBin.bitPickingBin AS PickingBin
,ISNULL(tblInvLocBin.bitReceivingBin, 0) AS ReceivingBin
,ISNULL(tblInvLocBin.bitStockingBin, 0) AS StockingBin
,@ReceivingBinId
FROM tblInvLocBin
LEFT JOIN tblInvExtBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId
AND tblInvLocBin.strLocName = tblInvExtBin.strLocName
AND tblInvExtBin.strPartNumber = @PartNumber
LEFT JOIN tblInv ON tblInv.strPartNumber = ISNULL(tblInvExtBin.strPartNumber, @PartNumber)
LEFT JOIN tblInvLocBinSec ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode
AND tblInvLocBinSec.strLocName = tblInvLocBin.strLocName
AND (
(tblInvLocBinSec.strUserName = @UserName)
OR (@UserName IS NULL)
)
WHERE (
(tblInvLocBin.strLocName = @LocationName)
OR (@LocationName IS NULL)
)
AND tblInvLocBin.bitInactive = 0
AND (
(tblInvLocBin.strBinCode = @BinCode)
OR (@BinCode IS NULL)
)
AND (
(
tblInvLocBin.strLocName LIKE '%' + @SearchText + '%'
OR tblInvLocBin.strBinCode LIKE '%' + @SearchText + '%'
)
OR (@SearchText IS NULL)
)
ORDER BY ExpiryDate
,BinCode
END
END
ELSE
BEGIN
IF @IsAllowed = 1
BEGIN
;
WITH CTE
AS (
SELECT tblInvExtBin.strPartNumber AS 'PartNumber'
,tblInvExtBin.strLocName AS 'LocName'
,tblInvExtBin.lngBinID AS 'BinId'
,tblInvExtBin.decOnHand AS 'Avail'
,tblInvExtBin.decAlloc AS 'Alloc'
,tblInvExtBin.decOnHand AS 'OnHand'
,tblInvExtBin.decMaximumQty AS 'MaximumQty'
,tblInvExtBin.bitAllowed AS 'IsAllowed'
,tblInvExtBin.bitDefault AS 'IsDefault'
,strDescription AS 'Description'
,tblInvLocBin.strBinCode AS 'BinCode'
,IsAllowEditing = CAST((
CASE 
WHEN (
SELECT count(*)
FROM tblInvTrackingDTBin
INNER JOIN tblInvTrackingDT ON tblInvTrackingDT.lngInvTrackID = tblInvTrackingDTBin.lngInvTrackID
AND tblInvTrackingDT.intLineNo = tblInvTrackingDTBin.intLineNo
WHERE lngBinID = tblInvLocBin.lngId
AND tblInvTrackingDT.strPartNumber = ISNULL(tblInvExtBin.strPartNumber, @PartNumber)
) > 0
THEN 0
ELSE 1
END
) AS BIT)
,ItemType = tblInv.intType
,(
SELECT TOP 1 dteExpiryDate
FROM tblInvLotExt
WHERE tblInvLotExt.decQty > 0
AND tblInvLotExt.lngBinID = tblInvExtBin.lngBinID
AND tblInvLotExt.strLocName = tblInvExtBin.strLocName
AND tblInvLotExt.strPartNumber = tblInvExtBin.strPartNumber
ORDER BY dteExpiryDate ASC
) AS ExpiryDate
,tblInvLocBin.bitPickingBin AS 'PickingBin'
,ISNULL(tblInvLocBin.bitReceivingBin, 0) AS 'ReceivingBin'
,ISNULL(tblInvLocBin.bitStockingBin, 0) AS 'StockingBin'
FROM tblInvExtBin
INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId
AND tblInvLocBin.strLocName = tblInvExtBin.strLocName
AND bitInactive = 0
INNER JOIN tblInv ON tblInv.strPartNumber = tblInvExtBin.strPartNumber
LEFT JOIN tblInvLocBinSec ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode
AND tblInvLocBinSec.strLocName = tblInvExtBin.strLocName
AND (
(tblInvLocBinSec.strUserName = @UserName)
OR (@UserName IS NULL)
)
WHERE (
(tblInvExtBin.strLocName = @LocationName)
OR (@LocationName IS NULL)
)
AND (
(tblInvLocBin.strBinCode = @BinCode)
OR (@BinCode IS NULL)
)
AND (
(tblInvExtBin.strPartNumber = @PartNumber)
OR (@PartNumber IS NULL)
)
AND (
(
tblInvExtBin.strLocName LIKE '%' + @SearchText + '%'
OR tblInvLocBin.strBinCode LIKE '%' + @SearchText + '%'
OR tblInvExtBin.strPartNumber LIKE '%' + @SearchText + '%'
)
OR (@SearchText IS NULL)
)
)
SELECT DISTINCT CTE.BinId
,*
,ISNULL((
SELECT TOP 1 tblInvLocBin.lngID
FROM tblInvLocBin
WHERE CTE.LocName = tblInvLocBin.strLocName
AND (
bitReceivingBin = 1
OR bitStockingBin = 1
)
), 0) AS ReceivingBinId
FROM CTE
ORDER BY ExpiryDate
,BinCode
END
ELSE
BEGIN
;
WITH CTE
AS (
SELECT ISNULL(tblInvExtBin.strPartNumber, @PartNumber) AS 'PartNumber'
,ISNULL(tblInvExtBin.strLocName, tblInvLocBin.strLocName) AS 'LocName'
,ISNULL(tblInvExtBin.lngBinId, tblInvLocBin.lngId) AS 'BinId'
,ISNULL(decOnHand, 0) AS 'Avail'
,ISNULL(decAlloc, 0) AS 'Alloc'
,ISNULL(decOnHand, 0) AS 'OnHand'
,ISNULL(decMaximumQty, 0) AS 'MaximumQty'
,ISNULL(bitAllowed, 0) AS 'IsAllowed'
,ISNULL(bitDefault, 0) AS 'IsDefault'
,strDescription AS 'Description'
,tblInvLocBin.strBinCode AS 'BinCode'
,IsAllowEditing = CAST(IsNull((
CASE 
WHEN (
SELECT count(*)
FROM tblInvExtBin
WHERE strPartNumber = @PartNumber
) > 0
THEN (
CASE 
WHEN (
SELECT count(*)
FROM tblInvTrackingDTBin
INNER JOIN tblInvTrackingDT ON tblInvTrackingDT.lngInvTrackID = tblInvTrackingDTBin.lngInvTrackID
AND tblInvTrackingDT.intLineNo = tblInvTrackingDTBin.intLineNo
WHERE lngBinID = tblInvLocBin.lngId
AND tblInvTrackingDT.strPartNumber = ISNULL(tblInvExtBin.strPartNumber, @PartNumber)
) > 0
THEN 0
ELSE 1
END
)
ELSE 1
END
), 1) AS BIT)
,ItemType = ISNULL(tblInv.intType, 1)
,(
SELECT TOP 1 dteExpiryDate
FROM tblInvLotExt
WHERE tblInvLotExt.decQty > 0
AND tblInvLotExt.lngBinID = tblInvExtBin.lngBinID
AND tblInvLotExt.strLocName = tblInvExtBin.strLocName
AND tblInvLotExt.strPartNumber = tblInvExtBin.strPartNumber
ORDER BY dteExpiryDate ASC
) AS ExpiryDate
,tblInvLocBin.bitPickingBin AS 'PickingBin'
,ISNULL(tblInvLocBin.bitReceivingBin, 0) AS 'ReceivingBin'
,ISNULL(tblInvLocBin.bitStockingBin, 0) AS 'StockingBin'
FROM tblInvLocBin
LEFT JOIN tblInvExtBin ON tblInvExtBin.lngBinId = tblInvLocBin.lngId
AND tblInvLocBin.strLocName = tblInvExtBin.strLocName
AND tblInvExtBin.strPartNumber = @PartNumber
LEFT JOIN tblInv ON tblInv.strPartNumber = ISNULL(tblInvExtBin.strPartNumber, @PartNumber)
LEFT JOIN tblInvLocBinSec ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode
AND tblInvLocBinSec.strLocName = tblInvLocBin.strLocName
AND (
(tblInvLocBinSec.strUserName = @UserName)
OR (@UserName IS NULL)
)
WHERE (
(tblInvLocBin.strLocName = @LocationName)
OR (@LocationName IS NULL)
)
AND tblInvLocBin.bitInactive = 0
AND (
(tblInvLocBin.strBinCode = @BinCode)
OR (@BinCode IS NULL)
)
AND (
(
tblInvLocBin.strLocName LIKE '%' + @SearchText + '%'
OR tblInvLocBin.strBinCode LIKE '%' + @SearchText + '%'
)
OR (@SearchText IS NULL)
)
)
SELECT DISTINCT CTE.BinId
,*
,ISNULL((
SELECT TOP 1 tblInvLocBin.lngID
FROM tblInvLocBin
WHERE CTE.LocName = tblInvLocBin.strLocName
AND (
bitReceivingBin = 1
OR bitStockingBin = 1
)
), 0) AS ReceivingBinId
FROM CTE
ORDER BY ExpiryDate
,BinCode
END
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertToInvoiceREVAndInvoiceREVDTForReceiving] (@DocNumber AS VARCHAR)
AS
BEGIN
INSERT INTO [dbo].[tblInvoiceDocREV] (
[lngEntID]
,[strInvDocID]
,[lngInvTrackID]
,[lngJourID]
,[dteSystemDate]
,[dteJournalDate]
,[dteRequired]
,[strUsername]
,[strCustName]
,[strSoldTo]
,[strShipTo]
,[strReference]
,[decSubTotal]
,[decVAT]
,[decTotal]
,[bitFromSO]
,[strOrdDocID]
,[bitHistoryTrans]
,[strNotes]
,[bitPrinted]
,[bitEmailed]
,[intPaidBy]
,[intAccount]
,[strSalesName]
,[strAddInfo]
,[bitReserved]
,[strCurrency]
,[bitIsForeign]
,[decSubTotalF]
,[decVATF]
,[decTotalF]
,[decExchange]
,[strTerm]
,[intDept]
,[strField1]
,[strField2]
,[strField3]
,[strField4]
,[strField5]
,[strField6]
,[strField7]
,[strField8]
,[strField9]
,[strField10]
,[strField11]
,[strField12]
,[strSubFormated]
,[strVATFormatted]
,[strTotFormatted]
,[dteField13]
,[dteField14]
,[decDiscPerc]
,[decDiscAmt]
,[decDiscAmtF]
,[strDiscFormatted]
,[strOrdFQDocID]
,[strStatusTypeCode]
,[strCNReasonCode]
,[bitBookmark]
,[dteSystemDateTime]
,[strPaidBy]
,[intSentDoc]
,[strVAT]
,[strDelMethodCode]
,[decTotalWeight]
,[decTotalVolWeight]
,[decDeliveryCost]
,[decDeliveryCostF]
,[strDeliveryCostFormatted]
,[intRevisionNumber]
,[dteRevisionDate]
,[strUserCreated]
,[bitIsRepair]
,[strVendName]
,[strBoughtFrom]
,[bitFQConvert]
,[bitSOCopy]
,[bitSOCopyMulti]
,[strVendInvNo]
,[bitFromPO]
,[decNetItemWeight]
,[decNetVolumetricWeight]
,[strSourceMOP]
,[bitCleared]
,[strOrdRFQDocID]
,[bitRFQConvert]
,[strOrdPDocID]
,[intModule]
,[strSOReasonCode]
,[strDelNoteNo]
)
SELECT (
SELECT ISNULL(MAX([lngEntID]), 0)
FROM [dbo].[tblInvoiceDocREV]
) + (
row_number() OVER (
ORDER BY (
SELECT NULL
)
)
)
,[strOrdPGDocID]
,[lngInvTrackID]
,[lngJourID]
,[dteSystemDate]
,[dteJournalDate]
,[dteRequired]
,[strUserName]
,NULL
,NULL
,[strShipTo]
,[strReference]
,[decSubTotal]
,[decVAT]
,[decTotal]
,NULL
,NULL
,NULL
,[strNotes]
,[bitPrinted]
,[bitEmailed]
,NULL
,NULL
,NULL
,[strAddInfo]
,NULL
,[strCurrency]
,[bitIsForeign]
,[decSubTotalF]
,[decVATF]
,[decTotalF]
,[decExchange]
,[strTerm]
,[intDept]
,[strField1]
,[strField2]
,[strField3]
,[strField4]
,[strField5]
,[strField6]
,[strField7]
,[strField8]
,[strField9]
,[strField10]
,[strField11]
,[strField12]
,[strSubFormated]
,[strVATFormatted]
,[strTotFormatted]
,NULL
,NULL
,[decDiscPerc]
,[decDiscAmt]
,[decDiscAmtF]
,[strDiscFormatted]
,[strOrdFQDocID]
,[strStatusTypeCode]
,NULL
,[bitBookmark]
,NULL
,NULL
,NULL
,NULL
,NULL
,[decTotalWeight]
,[decTotalVolWeight]
,0
,0
,NULL
,1
,[dteSystemDate]
,[strUserName]
,NULL
,[strVendName]
,[strBoughtFrom]
,[bitFQConvert]
,[bitSOCopy]
,[bitSOCopyMulti]
,NULL
,[bitFromPO]
,NULL
,NULL
,NULL
,[bitCleared]
,NULL
,NULL
,[strOrdPDocID]
,11
,NULL
,[strDelNoteNo]
FROM [dbo].[tblOrderDocPG]
WHERE [strOrdPGDocID] = @DocNumber
INSERT INTO [dbo].[tblInvoiceDocREVDT] (
[lngEntID]
,[strInvDocID]
,[intLineNo]
,[strPartNumber]
,[strLocation]
,[strPartDesc]
,[decQty]
,[strUnit]
,[intType]
,[decPriceEaExc]
,[decLineTotExc]
,[decLineTaxAmt]
,[decPriceEaInc]
,[decLineTotInc]
,[strTaxCode]
,[imgTaxObj]
,[strCurrency]
,[bitIsForeign]
,[decPriceEaExcF]
,[decLineTotExcF]
,[decLineTaxAmtF]
,[decEaIncTaxF]
,[decTotIncTaxF]
,[strInvField1]
,[strInvField2]
,[strInvField3]
,[strInvField4]
,[strInvField5]
,[strInvField6]
,[strLineField1]
,[strLineField2]
,[strLineField3]
,[strLineField4]
,[strLineField5]
,[strLineField6]
,[strLineField7]
,[strLineField8]
,[strLineField9]
,[strLineField10]
,[strLineField11]
,[strLineField12]
,[decLineDiscPerc]
,[decLineDiscAmt]
,[decLineDiscAmtF]
,[bitDiscountTax]
,[decStockQty]
,[strStockUnit]
,[decStandardCost]
,[decLastPPUnit]
,[strSalesName]
,[decCOGS]
,[decSOQty]
,[decSOQtyRemain]
,[strPartExtendedDesc]
,[decItemWeight]
,[decVolumetricWeight]
,[bitContainerItem]
,[decBuyQty]
,[decBuyQtyRemain]
,[strBuyUnit]
,[decEaIncTax]
,[decTotIncTax]
,[strOrdSODocID]
,[decStockQtyRemain]
,[decBuyoutCost]
,[decQtyRemaining]
,[intStatus]
,[uidTransactionFieldID]
)
SELECT rev.[lngEntID]
,dt.[strOrdPGDocID]
,[intLineNo]
,[strPartNumber]
,[strLocation]
,[strPartDesc]
,NULL
,NULL
,[intType]
,[decPriceEaExc]
,[decLineTotExc]
,[decLineTaxAmt]
,NULL
,NULL
,[strTaxCode]
,[imgTaxObj]
,dt.[strCurrency]
,dt.[bitIsForeign]
,[decPriceEaExcF]
,[decLineTotExcF]
,[decLineTaxAmtF]
,[decEaIncTaxF]
,[decTotIncTaxF]
,[strInvField1]
,[strInvField2]
,[strInvField3]
,[strInvField4]
,[strInvField5]
,[strInvField6]
,[strLineField1]
,[strLineField2]
,[strLineField3]
,[strLineField4]
,[strLineField5]
,[strLineField6]
,[strLineField7]
,[strLineField8]
,[strLineField9]
,[strLineField10]
,[strLineField11]
,[strLineField12]
,[decLineDiscPerc]
,[decLineDiscAmt]
,[decLineDiscAmtF]
,[bitDiscountTax]
,[decStockQty]
,[strStockUnit]
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,[decItemWeight]
,[decVolumetricWeight]
,NULL
,[decBuyQty]
,[decBuyQtyRemain]
,[strBuyUnit]
,[decEaIncTax]
,[decTotIncTax]
,[strOrdSODocID]
,[decStockQtyRemain]
,NULL
,NULL
,1
,dt.[uidTransactionFieldID]
FROM [dbo].[tblOrderDocPGDT] dt
INNER JOIN [dbo].[tblInvoiceDocREV] rev ON dt.[strOrdPGDocID] = rev.[strInvDocID]
WHERE dt.[strOrdPGDocID] = @DocNumber
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[ReceivingInsertOrderDetails] (
@OrderDocPGDTData AS OrderDocPGDTTableType READONLY
,@OrderDocPGDTPrjData AS OrderDocPGDTPrjTableType READONLY
,@OrderDocPGDTSerialData AS OrderDocPGDTSerialTableType READONLY
,@SerialNumberTrackingData AS SerialNumberTrackingTableType READONLY
,@InvLotExtUpdateData AS InvLotExtTableType READONLY
,@InvLotExtInsertData AS InvLotExtTableType READONLY
,@InvSerialExtUpdateData AS InvSerialExtTableType READONLY
,@InvSerialExtInsertData AS InvSerialExtTableType READONLY
)
AS
BEGIN
INSERT INTO [dbo].[tblOrderDocPGDT] (
[strOrdPGDocID]
,[intLineNo]
,[strPartNumber]
,[strLocation]
,[strPartDesc]
,[decBuyQty]
,[decBuyQtyRemain]
,[strBuyUnit]
,[decStockQty]
,[decStockQtyRemain]
,[strStockUnit]
,[intType]
,[decPriceEaExc]
,[decLineTotExc]
,[decLineTaxAmt]
,[strTaxCode]
,[decEaIncTax]
,[decTotIncTax]
,[imgTaxObj]
,[strCurrency]
,[bitIsForeign]
,[decPriceEaExcF]
,[decLineTotExcF]
,[decLineTaxAmtF]
,[decEaIncTaxF]
,[decTotIncTaxF]
,[strInvField1]
,[strInvField2]
,[strInvField3]
,[strInvField4]
,[strInvField5]
,[strInvField6]
,[strLineField1]
,[strLineField2]
,[strLineField3]
,[strLineField4]
,[strLineField5]
,[strLineField6]
,[strLineField7]
,[strLineField8]
,[strLineField9]
,[strLineField10]
,[strLineField11]
,[strLineField12]
,[decLineDiscPerc]
,[decLineDiscAmt]
,[decLineDiscAmtF]
,[bitDiscountTax]
,[strOrdSODocID]
,[decItemWeight]
,[decVolumetricWeight]
,[uidTransactionFieldID]
,[strPartExtendedDesc]
,[decBuyGRVQtyRemain]
,[decStockGRVQtyRemain]
,[decPutAwayQty]
,[intSODocItemLineNo]
)
SELECT [OrdPGDocID]
,[LineNo]
,[PartNumber]
,[Location]
,[PartDesc]
,[BuyQty]
,[BuyQtyRemain]
,[BuyUnit]
,[StockQty]
,[StockQtyRemain]
,[StockUnit]
,[Type]
,[PriceEaExc]
,[LineTotExc]
,[LineTaxAmt]
,[TaxCode]
,[EaIncTax]
,[TotIncTax]
,[TaxObj]
,[Currency]
,[IsForeign]
,PriceEaExcF
,LineTotExcF
,LineTaxAmtF
,EaIncTaxF
,TotIncTaxF
,InvField1
,InvField2
,InvField3
,InvField4
,InvField5
,InvField6
,LineField1
,LineField2
,LineField3
,LineField4
,LineField5
,LineField6
,LineField7
,LineField8
,LineField9
,LineField10
,LineField11
,LineField12
,LineDiscPerc
,LineDiscAmt
,LineDiscAmtF
,DiscountTax
,[OrdSODocID]
,ItemWeight
,VolumetricWeight
,TransactionFieldID
,PartExtendedDesc
,[BuyGRVQtyRemain]
,[StockGRVQtyRemain]
,[PutAwayQty]
,[SODocItemLineNo]
FROM @OrderDocPGDTData
INSERT INTO tblOrderDocPGDTPrj (
strOrdPGDocID
,intLineNo
,strProjNumber
--,lngID
,strStage
)
SELECT [OrdPGDocID]
,[LineNo]
,ProjNumber
--,ID
,Stage
FROM @OrderDocPGDTPrjData
INSERT INTO tblOrderDocPGDTSerial (
[strOrdPGDocID]
,[intLineNo]
,[strSerialNumber]
,[decQty]
,[strUnit]
--,[lngID]
,[bitExpiryDate]
,[dteExpiryDate]
,[intSerialLotType]
,[lngBinID]
,[decPutAwayQty]
)
SELECT [OrdPGDocID]
,[LineNo]
,[SerialNumber]
,[Qty]
,[Unit]
--,[ID]
,[IsExpiryDate]
,[ExpiryDate]
,[SerialLotType]
,[BinID]
,[PutAwayQty]
FROM @OrderDocPGDTSerialData
IF EXISTS (
SELECT *
FROM @SerialNumberTrackingData
)
BEGIN
INSERT INTO tblSerialNumberTracking (
strPartNumber
,strSerialNumber
,strUserName
,dteUpdatedDate
,intType
,strDocID
,intLineNo
,decQty
,strLocation
,intStatus
,bitExpiryDate
,dteExpiryDate
,lngBinID
)
SELECT PartNumber
,SerialNumber
,UserName
,UpdatedDate
,SerialLotType
,DocID
,[LineNo]
,Qty
,Location
,[Status]
,IsExpiryDate
,ExpiryDate
,BinID
FROM @SerialNumberTrackingData
END
IF EXISTS (
SELECT *
FROM @InvLotExtUpdateData
)
BEGIN
UPDATE tblInvLotExt
SET decQty = decQty + t.Qty
,dteUpdatedDate = t.UpdatedDate
FROM (
SELECT PartNumber
,LotNumber
,LocName
,BinID
,UpdatedDate
,Sum(isnull(Qty, 0)) AS Qty
FROM @InvLotExtUpdateData
GROUP BY PartNumber
,LotNumber
,LocName
,BinID
,UpdatedDate
) t
WHERE strPartNumber = t.PartNumber
AND strLotNumber = t.LotNumber
AND strLocName = t.LocName
AND lngBinID = t.BinID
END
IF EXISTS (
SELECT *
FROM @InvLotExtInsertData
)
BEGIN
INSERT INTO tblInvLotExt
SELECT *
,GETDATE()
FROM @InvLotExtInsertData
END
IF EXISTS (
SELECT *
FROM @InvSerialExtUpdateData
)
BEGIN
UPDATE tblInvSerialExt
SET strLocName = t.LocName
,decQty = t.Qty
,intStatus = t.[Status]
,strDocID = t.DocID
,dteUpdatedDate = t.UpdatedDate
,lngBinID = t.BinID
FROM @InvSerialExtUpdateData t
WHERE strPartNumber = t.PartNumber
AND strSerialNumber = t.SerialNumber
END
IF EXISTS (
SELECT *
FROM @InvSerialExtInsertData
)
BEGIN
INSERT INTO tblInvSerialExt
SELECT *
,GETDATE()
FROM @InvSerialExtInsertData
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateLastGVNumber] (@GVNumber AS BIGINT)
AS
BEGIN
UPDATE tblLastIDs
SET lngGVNumber = @GVNumber
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvoiceDocREVAndREVDTREceiving] (
@DocumentNumber AS NVARCHAR(50)
,@RevID AS BIGINT
,@ReferenceNumber AS NVARCHAR(50)
,@Module AS INT
,@RevisionNumberStatus AS INT
)
AS
BEGIN
INSERT INTO tblInvoiceDocREV (
lngEntID
,strInvDocID
,lngInvTrackID
,lngJourID
,dteSystemDate
,dteJournalDate
,dteRequired
,strUserName
,strCustName
,strSoldTo
,strShipTo
,strReference
,decSubTotal
,decVAT
,decTotal
,bitFromSO
,strOrdDocID
,bitHistoryTrans
,strNotes
,bitPrinted
,bitEmailed
,intPaidBy
,intAccount
,strSalesName
,strAddInfo
,bitReserved
,strCurrency
,bitIsForeign
,decSubTotalF
,decVATF
,decTotalF
,decExchange
,strTerm
,intDept
,strField1
,strField2
,strField3
,strField4
,strField5
,strField6
,strField7
,strField8
,strField9
,strField10
,strField11
,strField12
,strSubFormated
,strVATFormatted
,strTotFormatted
,dteField13
,dteField14
,decDiscPerc
,decDiscAmt
,decDiscAmtF
,strDiscFormatted
,strOrdFQDocID
,strStatusTypeCode
,strCNReasonCode
,bitBookmark
,dteSystemDateTime
,strPaidBy
,intSentDoc
,strVAT
,strDelMethodCode
,decTotalWeight
,decTotalVolWeight
,intRevisionNumber
,dteRevisionDate
,strUserCreated
,bitIsRepair
,strVendName
,strBoughtFrom
,bitFQConvert
,bitSOCopy
,bitSOCopyMulti
,strVendInvNo
,bitFromPO
,decNetItemWeight
,decNetVolumetricWeight
,strSourceMOP
,bitCleared
,strOrdRFQDocID
,bitRFQConvert
,strOrdPDocID
,intModule
,strSOReasonCode
,strDelNoteNo
,strContractTo
,strContBillType
,blnAllowAnnualIncrease
,intContractPriceIncrease
,dtpIncreaseStartDate
,bitInactive
,strStoreNumber
,strEDI
)
SELECT @RevID
,strOrdPGDocID
,lngInvTrackID
,lngJourID
,dteSystemDate
,dteJournalDate
,dteRequired
,strUserName
,NULL
,NULL
,strShipTo
,strReference
,decSubTotal
,decVAT
,decTotal
,NULL
,NULL
,NULL
,strNotes
,bitPrinted
,bitEmailed
,NULL
,NULL
,NULL
,strAddInfo
,NULL
,strCurrency
,bitIsForeign
,decSubTotalF
,decVATF
,decTotalF
,decExchange
,strTerm
,intDept
,strField1
,strField2
,strField3
,strField4
,strField5
,strField6
,strField7
,strField8
,strField9
,strField10
,strField11
,strField12
,strSubFormated
,strVATFormatted
,strTotFormatted
,NULL
,NULL
,decDiscPerc
,decDiscAmt
,decDiscAmtF
,strDiscFormatted
,strOrdFQDocID
,strStatusTypeCode
,NULL
,bitBookmark
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,@ReferenceNumber
,dteSystemDate
,strUserName
,NULL
,strVendName
,strBoughtFrom
,bitFQConvert
,bitSOCopy
,bitSOCopyMulti
,NULL
,bitFromPO
,NULL
,NULL
,NULL
,bitCleared
,NULL
,NULL
,strOrdPDocID
,@Module
,NULL
,strDelNoteNo
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
FROM tblOrderDocPG
WHERE strOrdPGDocID = @DocumentNumber
INSERT INTO tblInvoiceDocREVDT (
lngEntID
,strInvDocID
,intLineNo
,strPartNumber
,strLocation
,strPartDesc
,decQty
,strUnit
,intType
,decPriceEaExc
,decLineTotExc
,decLineTaxAmt
,decPriceEaInc
,decLineTotInc
,strTaxCode
,imgTaxObj
,strCurrency
,bitIsForeign
,decPriceEaExcF
,decLineTotExcF
,decLineTaxAmtF
,decEaIncTaxF
,decTotIncTaxF
,strInvField1
,strInvField2
,strInvField3
,strInvField4
,strInvField5
,strInvField6
,strLineField1
,strLineField2
,strLineField3
,strLineField4
,strLineField5
,strLineField6
,strLineField7
,strLineField8
,strLineField9
,strLineField10
,strLineField11
,strLineField12
,decLineDiscPerc
,decLineDiscAmt
,decLineDiscAmtF
,bitDiscountTax
,decStockQty
,strStockUnit
,decStandardCost
,decLastPPUnit
,strSalesName
,decCOGS
,decSOQty
,decSOQtyRemain
,strPartExtendedDesc
,decItemWeight
,decVolumetricWeight
,bitContainerItem
,decBuyQty
,decBuyQtyRemain
,strBuyUnit
,decEaIncTax
,decTotIncTax
,strOrdSODocID
,decStockQtyRemain
,decBuyoutCost
,decQtyRemaining
,intStatus
,uidTransactionFieldID
,strContBillType
,blnAllowAnnualIncrease
,intContractPriceIncrease
,dtpIncreaseStartDate
,dtpSetUpDate
,dtpActivationDate
,dtpTerminationDate
,dtpExpirationDate
,dtpBillingSchduleStart
,strBillingFrequncy
,dtpLastBillDate
,dtpNextBillDate
,dtpNextInvoiceDate
,decUsedQty
)
SELECT @RevID
,strOrdPGDocID
,intLineNo
,strPartNumber
,strLocation
,strPartDesc
,NULL
,NULL
,intType
,decPriceEaExc
,decLineTotExc
,decLineTaxAmt
,NULL
,NULL
,strTaxCode
,imgTaxObj
,strCurrency
,bitIsForeign
,decPriceEaExcF
,decLineTotExcF
,decLineTaxAmtF
,decEaIncTaxF
,decTotIncTaxF
,strInvField1
,strInvField2
,strInvField3
,strInvField4
,strInvField5
,strInvField6
,strLineField1
,strLineField2
,strLineField3
,strLineField4
,strLineField5
,strLineField6
,strLineField7
,strLineField8
,strLineField9
,strLineField10
,strLineField11
,strLineField12
,decLineDiscPerc
,decLineDiscAmt
,decLineDiscAmtF
,bitDiscountTax
,decStockQty
,strStockUnit
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,decItemWeight
,decVolumetricWeight
,NULL
,decBuyQty
,decBuyQtyRemain
,strBuyUnit
,decEaIncTax
,decTotIncTax
,strOrdSODocID
,decStockQtyRemain
,NULL
,NULL
,@RevisionNumberStatus
,uidTransactionFieldID
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
FROM tblOrderDocPGDT
WHERE strOrdPGDocID = @DocumentNumber
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[CheckPOOpenData] (@DocNumber AS NVARCHAR(50))
AS
BEGIN
SELECT bitCleared AS IsCleared
,ISNULL((
SELECT COUNT(Z.strOrdPDocID)
FROM (
SELECT tblOrderDocPDT.strOrdPDocID
FROM tblOrderDocPDT
INNER JOIN tblOrderDocPG ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPG.strOrdPDocID
LEFT JOIN tblOrderDocPGDT ON tblOrderDocPG.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID
AND tblOrderDocPDT.strPartNumber = tblOrderDocPGDT.strPartNumber
AND tblOrderDocPDT.strLocation = tblOrderDocPGDT.strLocation
WHERE tblOrderDocPG.bitFromPO = 1
AND tblOrderDocPDT.strOrdPDocID = tblOrderDocP.strOrdPDocID
GROUP BY tblOrderDocPDT.strOrdPDocID
,tblOrderDocPDT.strPartNumber
,tblOrderDocPDT.strLocation
,tblOrderDocPDT.decBuyQty
,tblOrderDocPDT.decStockQty
,tblOrderDocPDT.decBuyQtyRemain
,tblOrderDocPDT.decStockQtyRemain
HAVING (
tblOrderDocPDT.decBuyQtyRemain <> (tblOrderDocPDT.decBuyQty - ISNULL(SUM(tblOrderDocPGDT.decBuyQty), 0))
OR tblOrderDocPDT.decStockQtyRemain <> (tblOrderDocPDT.decStockQty - ISNULL(SUM(tblOrderDocPGDT.decStockQty), 0))
)
) Z
), 0) AS POQtyDiff
FROM tblOrderDocP
WHERE strOrdPDocID = @DocNumber
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdatePOStockRemain] (@DocNumber AS NVARCHAR(50))
AS
BEGIN
UPDATE tblOrderDocPDT
SET decBuyQtyRemain = Z.decBuyQtyRemain
,decStockQtyRemain = Z.decStockQtyRemain
FROM (
SELECT tblOrderDocPDT.strPartNumber
,tblOrderDocPDT.strLocation
,tblOrderDocPDT.decBuyQty - ISNULL(SUM(tblOrderDocPGDT.decBuyQty), 0) AS decBuyQtyRemain
,tblOrderDocPDT.decStockQty - ISNULL(SUM(tblOrderDocPGDT.decStockQty), 0) AS decStockQtyRemain
FROM tblOrderDocPDT
INNER JOIN tblOrderDocPG ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPG.strOrdPDocID
LEFT JOIN tblOrderDocPGDT ON tblOrderDocPG.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID
AND tblOrderDocPDT.strPartNumber = tblOrderDocPGDT.strPartNumber
AND tblOrderDocPDT.strLocation = tblOrderDocPGDT.strLocation
WHERE tblOrderDocPG.bitFromPO = 1
AND tblOrderDocPDT.strOrdPDocID = @DocNumber
GROUP BY tblOrderDocPDT.strPartNumber
,tblOrderDocPDT.strLocation
,tblOrderDocPDT.decBuyQty
,tblOrderDocPDT.decStockQty
,tblOrderDocPDT.decBuyQtyRemain
,tblOrderDocPDT.decStockQtyRemain
HAVING (
tblOrderDocPDT.decBuyQtyRemain <> (tblOrderDocPDT.decBuyQty - ISNULL(SUM(tblOrderDocPGDT.decBuyQty), 0))
OR tblOrderDocPDT.decStockQtyRemain <> (tblOrderDocPDT.decStockQty - ISNULL(SUM(tblOrderDocPGDT.decStockQty), 0))
)
) Z
WHERE tblOrderDocPDT.strOrdPDocID = @DocNumber
AND tblOrderDocPDT.strPartNumber = Z.strPartNumber
AND tblOrderDocPDT.strLocation = Z.strLocation
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPGData] (@DocNumber AS NVARCHAR(50))
AS
BEGIN
SELECT [strOrdPGDocID] AS OrdPGDocID
,[intLineNo] AS LineNumber
,[strPartNumber] AS PartNumber
,[strLocation] AS Location
,[strPartDesc] AS PartDescription
,[decBuyQty] AS BuyQty
,[decBuyQtyRemain] AS BuyQtyRemain
,[strBuyUnit] AS BuyUnit
,[decStockQty] AS StockQty
,[decStockQtyRemain] AS StockQtyRemain
,[strStockUnit] AS StockUnit
,[intType] AS Type
,[decPriceEaExc] AS PriceEaExc
,[decLineTotExc] AS LineTotalExc
,[decLineTaxAmt] AS LineTaxAmount
,[strTaxCode] AS TaxCode
,[decEaIncTax] AS EaIncTax
,[decTotIncTax] AS TotalIncTax
,[imgTaxObj] AS TaxObj
,[strCurrency] AS Currency
,[bitIsForeign] AS IsForeign
,[decPriceEaExcF] AS PriceEaExcF
,[decLineTotExcF] AS LineTotalExcF
,[decLineTaxAmtF] AS LineTaxAmountF
,[decEaIncTaxF] AS EaIncTaxF
,[decTotIncTaxF] AS TotalIncTaxF
,[strInvField1] AS InvField1
,[strInvField2] AS InvField2
,[strInvField3] AS InvField3
,[strInvField4] AS InvField4
,[strInvField5] AS InvField5
,[strInvField6] AS InvField6
,[strLineField1] AS LineField1
,[strLineField2] AS LineField2
,[strLineField3] AS LineField3
,[strLineField4] AS LineField4
,[strLineField5] AS LineField5
,[strLineField6] AS LineField6
,[strLineField7] AS LineField7
,[strLineField8] AS LineField8
,[strLineField9] AS LineField9
,[strLineField10] AS LineField10
,[strLineField11] AS LineField11
,[strLineField12] AS LineField12
,[decLineDiscPerc] AS LineDiscountPercentage
,[decLineDiscAmt] AS DiscountAmount
,[decLineDiscAmtF] AS DiscountAmountF
,[bitDiscountTax] AS IsDiscountTax
,[strOrdSODocID] AS OrderSODocID
,[decItemWeight] AS ItemWeight
,[decVolumetricWeight] AS VolumetricWeight
,[uidTransactionFieldID] AS TransactionFieldID
,[strPartExtendedDesc] AS PartExtendedDesc
,[decBuyGRVQtyRemain] AS BuyGRVQtyRemain
,[decStockGRVQtyRemain] AS StockGRVQtyRemain
,[decPutAwayQty] AS PutAwayQty
,[intSODocItemLineNo] AS SODocItemLineNo
FROM [dbo].[tblOrderDocPGDT]
WHERE (strOrdPGDocID = @DocNumber)
AND (
(decBuyQty <> decBuyQtyRemain)
OR (decStockQty <> decStockQtyRemain)
)
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[CheckDupPartNoLocation] (@DocNumber AS NVARCHAR(50))
AS
BEGIN
SELECT COUNT(tblOrderDocPDT.strOrdPDocID) AS NoOfOrdPDocID
,tblOrderDocPDT.strPartNumber AS PartNumber
,tblOrderDocPDT.strLocation AS [Location]
FROM tblOrderDocPG
INNER JOIN tblOrderDocP ON tblOrderDocPG.strOrdPDocID = tblOrderDocP.strOrdPDocID
INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
WHERE tblOrderDocPG.strOrdPGDocID = @DocNumber
AND tblOrderDocPG.bitFromPO = 1
GROUP BY tblOrderDocPDT.strPartNumber
,tblOrderDocPDT.strLocation
HAVING COUNT(tblOrderDocPDT.strOrdPDocID) > 1
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[OrderDocPGDTSerialDataList] (
@DocNumber AS NVARCHAR(50)
,@LineNo AS INT
)
AS
BEGIN
SELECT tblOrderDocPGDTSerial.[strOrdPGDocID] AS OrderDocID
,tblOrderDocPGDTSerial.[intLineNo] AS [LineNo]
,tblOrderDocPGDTSerial.[strSerialNumber] AS SerialNumber
,tblOrderDocPGDTSerial.[decQty] AS Qty
,tblOrderDocPGDTSerial.[strUnit] AS Unit
,tblOrderDocPGDTSerial.[lngID] AS ID
,tblOrderDocPGDTSerial.[bitExpiryDate] AS IsExpiryDate
,tblOrderDocPGDTSerial.[dteExpiryDate] AS ExpiryDate
,tblOrderDocPGDTSerial.[intSerialLotType] AS SerialLotType
,tblOrderDocPGDTSerial.[lngBinID] AS BinID
,tblOrderDocPGDTSerial.[decPutAwayQty] AS PutAwayQty
,CASE 
WHEN tblOrderDocPGDTSerial.intSerialLotType = 0
THEN ISNULL(CAST(tblInvSerialExt.intStatus AS CHAR(1)) + tblInvSerialExt.strDocID, '')
ELSE ''
END AS STATUS
,CASE 
WHEN tblOrderDocPGDTSerial.intSerialLotType = 0
THEN ISNULL(tblInvSerialExt.bitDimensionExist, 0)
ELSE Cast(0 as bit)
END AS IsDimensionExist
,CASE 
WHEN tblOrderDocPGDTSerial.intSerialLotType = 0
THEN ISNULL(tblInvSerialExt.strDimension, '')
ELSE ''
END AS Dimension
,ISNULL((
SELECT strBinCode
FROM tblInvLocBin
WHERE lngID = tblOrderDocPGDTSerial.lngBinId
), '') AS BinCode
FROM tblOrderDocPGDT
INNER JOIN tblOrderDocPGDTSerial ON tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPGDTSerial.strOrdPGDocID
AND tblOrderDocPGDT.intLineNo = tblOrderDocPGDTSerial.intLineNo
LEFT JOIN tblInvSerialExt ON tblOrderDocPGDT.strPartNumber = tblInvSerialExt.strPartNumber
AND tblOrderDocPGDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
WHERE tblOrderDocPGDT.strOrdPGDocID = @DocNumber
AND tblOrderDocPGDT.intLineNo = @LineNo
ORDER BY lngID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RemoveDocumentReceiving] (
@userName NVARCHAR(50) = ''
,@DocumentNumber NVARCHAR(100) = ''
,@SerialType TINYINT
,@SerialLotControlType TINYINT
,@CurrentTime DATETIME
,@SerialNumberTrackingData SerialNumberTrackingTableType READONLY
)
AS
BEGIN
UPDATE tblOrderDocPG
SET dteSystemDate = @CurrentTime
,strUserName = @userName
,bitCleared = 1
WHERE strOrdPGDocID = @DocumentNumber
DECLARE @PartNumber AS VARCHAR(50)
DECLARE @SerialNumber AS VARCHAR(100)
DECLARE @SerialLotType AS TINYINT
DECLARE @SerialLotQty AS MONEY
DECLARE @DocID AS VARCHAR(50)
DECLARE @Location AS VARCHAR(10)
DECLARE @Status AS TINYINT
DECLARE @IsExpiryDate AS BIT
DECLARE @ExpiryDate AS SMALLDATETIME
DECLARE @IsDimensionExist AS BIT
DECLARE @Dimension AS NVARCHAR(max)
DECLARE @LocationTemp AS VARCHAR(50)
DECLARE @StatusTemp AS INT
DECLARE @ItemCount AS INT
DECLARE @TotalCount AS INT
DECLARE @Result AS VARCHAR(50)
DECLARE @Index AS INT
DECLARE @BinId AS BIGINT
SELECT @TotalCount = COUNT(1)
FROM @SerialNumberTrackingData
SELECT ROW_NUMBER() OVER (
ORDER BY PartNumber
) AS Row#
,*
INTO #tblTempSerialNumberTracking
FROM @SerialNumberTrackingData
SET @Index = 1
WHILE (@Index <= @TotalCount)
BEGIN
SELECT @PartNumber = PartNumber
,@SerialNumber = SerialNumber
,@SerialLotType = SerialLotType
,
--@SerialLotQty = SerialLotQty,
@SerialLotQty = CASE Isnull(Qty, 0)
WHEN 0
THEN SerialLotQty
ELSE qty
END
,@DocID = DocID
,@Location = Location
,@IsExpiryDate = IsExpiryDate
,@ExpiryDate = ExpiryDate
,@IsDimensionExist = IsDimensionExist
,@Dimension = ''
,@Status = [Status]
,@BinId = BinID
FROM #tblTempSerialNumberTracking
WHERE Row# = @Index
SELECT @StatusTemp = intStatus
,@LocationTemp = strLocName
FROM tblInvSerialExt
WHERE strPartNumber = @PartNumber
AND strSerialNumber = @SerialNumber
IF (@@ROWCOUNT > 0)
BEGIN
IF (
@Status = @StatusTemp
OR @Location <> @LocationTemp
)
BEGIN
SET @Result = 'Subsequent Movement Error'
GOTO lblEnd
END
END
IF (@SerialLotType = @SerialLotControlType) --To check Lot Type 
BEGIN
SELECT @ItemCount = COUNT(strLotNumber)
FROM tblInvLotExt
WHERE strPartNumber = @PartNumber
AND strLotNumber = @SerialNumber
AND strLocName = @Location
AND lngBinID = @BinId
IF (@ItemCount > 0)
BEGIN
UPDATE tblInvLotExt
SET decQty = decQty + @SerialLotQty
,dteUpdatedDate = @CurrentTime
,bitExpiryDate = @IsExpiryDate
,dteExpiryDate = @ExpiryDate
WHERE strPartNumber = @PartNumber
AND strLotNumber = @SerialNumber
AND strLocName = @Location
AND lngBinID = @BinId
END
ELSE
BEGIN
INSERT INTO [dbo].[tblInvLotExt] (
[strPartNumber]
,[strLotNumber]
,[strLocName]
,[decQty]
,[bitExpiryDate]
,[dteExpiryDate]
,[dteUpdatedDate]
,[lngBinID]
,[dteRowUpdated]
)
VALUES (
@PartNumber
,@SerialNumber
,@Location
,@SerialLotQty
,@IsExpiryDate
,@ExpiryDate
,@CurrentTime
,@BinId
,GetDate()
)
END
END
ELSE
BEGIN
SELECT @ItemCount = COUNT(strSerialNumber)
FROM tblInvSerialExt
WHERE strPartNumber = @PartNumber
AND strSerialNumber = @SerialNumber
IF (@ItemCount > 0)
BEGIN
UPDATE tblInvSerialExt
SET strLocName = @Location
,decQty = @SerialLotQty
,intStatus = @Status
,strDocID = @DocumentNumber
,dteUpdatedDate = @CurrentTime
,lngBinId = @BinId
WHERE strPartNumber = @PartNumber
AND strSerialNumber = @SerialNumber
--AND strLocName = @Location
END
ELSE
BEGIN
INSERT INTO [dbo].[tblInvSerialExt] (
[strPartNumber]
,[strSerialNumber]
,[strLocName]
,[decQty]
,[intStatus]
,[strDocID]
,[dteUpdatedDate]
,[bitDimensionExist]
,[strDimension]
,[lngBinID]
,[dteRowUpdated]
)
VALUES (
@PartNumber
,@SerialNumber
,@Location
,@SerialLotQty
,@Status
,@DocID
,@CurrentTime
,@IsDimensionExist
,@Dimension
,@BinId
,GetDate()
)
END
END
SET @Index = @Index + 1
END
INSERT INTO [dbo].[tblSerialNumberTracking] (
[strPartNumber]
,[strSerialNumber]
,[strUserName]
,[dteUpdatedDate]
,[intType]
,[strDocID]
,[intLineNo]
,[decQty]
,[strLocation]
,[intStatus]
,[bitExpiryDate]
,[dteExpiryDate]
,[lngBinID]
)
SELECT PartNumber
,SerialNumber
,UserName
,@CurrentTime
,@SerialType
,DocID
,[LineNo]
,Qty
,Location
,[Status]
,IsExpiryDate
,ExpiryDate
,BinId
FROM @SerialNumberTrackingData
SET @Result = 'Success'
lblEnd:
SELECT @Result
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPForLoadDocReceiving] (@DocNumber AS NVARCHAR(50))
AS
BEGIN
SELECT tblOrderDocP.strOrdPDocID AS OrdPDocID
,tblOrderDocP.dteSystemDate AS SystemDate
,tblOrderDocP.dteJournalDate AS JournalDate
,tblOrderDocP.dteRequired AS [Required]
,tblOrderDocP.strUserName AS UserName
,tblOrderDocP.strVendName AS VendName
,tblOrderDocP.strShipTo AS ShipTo
,tblOrderDocP.decSubTotal AS SubTotal
,tblOrderDocP.decVAT AS VAT
,tblOrderDocP.decTotal AS Total
,tblOrderDocP.strNotes AS Notes
,tblOrderDocP.bitPrinted AS Printed
,tblOrderDocP.bitEmailed AS Emailed
,tblOrderDocP.bitCleared AS Cleared
,tblOrderDocP.intDocType AS DocType
,tblOrderDocP.strBoughtFrom AS BoughtFrom
,tblOrderDocP.strCurrency AS Currency
,tblOrderDocP.bitIsForeign AS IsForeign
,tblOrderDocP.decSubTotalF AS SubTotalF
,tblOrderDocP.decVATF AS VATF
,tblOrderDocP.decTotalF AS TotalF
,tblOrderDocP.decExchange AS Exchange
,tblOrderDocP.strTerm AS Term
,tblOrderDocP.intDept AS Dept
,tblOrderDocP.strField1 AS Field1
,tblOrderDocP.strField2 AS Field2
,tblOrderDocP.strField3 AS Field3
,tblOrderDocP.strField4 AS Field4
,tblOrderDocP.strField5 AS Field5
,tblOrderDocP.strField6 AS Field6
,tblOrderDocP.strField7 AS Field7
,tblOrderDocP.strField8 AS Field8
,tblOrderDocP.strField9 AS Field9
,tblOrderDocP.strField10 AS Field10
,tblOrderDocP.strField11 AS Field11
,tblOrderDocP.strField12 AS Field12
,tblOrderDocP.strSubFormated AS SubFormated
,tblOrderDocP.strVATFormatted AS VATFormatted
,tblOrderDocP.strTotFormatted AS TotFormatted
,tblOrderDocP.decDiscPerc AS DiscPerc
,tblOrderDocP.decDiscAmt AS DiscAmt
,tblOrderDocP.decDiscAmtF AS DiscAmtF
,tblOrderDocP.strDiscFormatted AS DiscFormatted
,tblOrderDocP.strOrdFQDocID AS OrdFQDocID
,tblOrderDocP.bitFQConvert AS FQConvert
,tblOrderDocP.bitSOCopy AS SOCopy
,tblOrderDocP.bitSOCopyMulti AS SOCopyMulti
,tblOrderDocP.strStatusTypeCode AS StatusTypeCode
,tblOrderDocP.bitBookmark AS Bookmark
,tblOrderDocP.strAddInfo AS AddInfo
,tblOrderDocP.strReference AS Reference
,tblOrderDocP.strOrdRFQDocID AS OrdRFQDocID
,tblOrderDocP.bitRFQConvert AS RFQConvert
,tblOrderDocP.decNetItemWeight AS NetItemWeight
,tblOrderDocP.decNetVolumetricWeight AS NetVolumetricWeight
,tblOrderDocP.intRevisionNumber AS RevisionNumber
,tblOrderDocP.strBuyerName AS BuyerName
,tblOrderDocP.strSalesDocNo AS SalesDocNo
,ISNULL(tblCustomers.strCustName, '') AS CustName
FROM tblOrderDocP (NOLOCK)
LEFT JOIN tblOrderDocQ (NOLOCK) ON tblOrderDocP.strOrdFQDocID = tblOrderDocQ.strOrdDocID
LEFT JOIN tblCustomers (NOLOCK) ON tblOrderDocQ.strCustName = tblCustomers.strCustName
WHERE tblOrderDocP.strOrdPDocID = @DocNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPDTForLoadDocReceiving] (@DocNumber AS NVARCHAR(50))
AS
BEGIN
SELECT tblOrderDocPDT.strOrdPDocID AS OrdPDocID
,tblOrderDocPDT.intLineNo AS [LineNo]
,tblOrderDocPDT.strPartNumber AS PartNumber
,tblOrderDocPDT.strLocation AS [Location]
,tblOrderDocPDT.strPartDesc AS PartDesc
,tblOrderDocPDT.decBuyQty AS BuyQty
,tblOrderDocPDT.decBuyQtyRemain AS BuyQtyRemain
,tblOrderDocPDT.strBuyUnit AS BuyUnit
,tblOrderDocPDT.decStockQty AS StockQty
,tblOrderDocPDT.decStockQtyRemain AS StockQtyRemain
,tblOrderDocPDT.strStockUnit AS StockUnit
,tblOrderDocPDT.intType AS [Type]
,tblOrderDocPDT.decPriceEaExc AS PriceEaExc
,tblOrderDocPDT.decLineTotExc AS LineTotExc
,tblOrderDocPDT.decLineTaxAmt AS LineTaxAmt
,tblOrderDocPDT.strTaxCode AS TaxCode
,tblOrderDocPDT.decEaIncTax AS EaIncTax
,tblOrderDocPDT.decTotIncTax AS TotIncTax
,tblOrderDocPDT.imgTaxObj AS TaxObj
,tblOrderDocPDT.strCurrency AS Currency
,tblOrderDocPDT.bitIsForeign AS IsForeign
,tblOrderDocPDT.decPriceEaExcF AS PriceEaExcF
,tblOrderDocPDT.decLineTotExcF AS LineTotExcF
,tblOrderDocPDT.decLineTaxAmtF AS LineTaxAmtF
,tblOrderDocPDT.decEaIncTaxF AS EaIncTaxF
,tblOrderDocPDT.decTotIncTaxF AS TotIncTaxF
,tblOrderDocPDT.strInvField1 AS InvField1
,tblOrderDocPDT.strInvField2 AS InvField2
,tblOrderDocPDT.strInvField3 AS InvField3
,tblOrderDocPDT.strInvField4 AS InvField4
,tblOrderDocPDT.strInvField5 AS InvField5
,tblOrderDocPDT.strInvField6 AS InvField6
,tblOrderDocPDT.strLineField1 AS LineField1
,tblOrderDocPDT.strLineField2 AS LineField2
,tblOrderDocPDT.strLineField3 AS LineField3
,tblOrderDocPDT.strLineField4 AS LineField4
,tblOrderDocPDT.strLineField5 AS LineField5
,tblOrderDocPDT.strLineField6 AS LineField6
,tblOrderDocPDT.strLineField7 AS LineField7
,tblOrderDocPDT.strLineField8 AS LineField8
,tblOrderDocPDT.strLineField9 AS LineField9
,tblOrderDocPDT.strLineField10 AS LineField10
,tblOrderDocPDT.strLineField11 AS LineField11
,tblOrderDocPDT.strLineField12 AS LineField12
,tblOrderDocPDT.decLineDiscPerc AS LineDiscPerc
,tblOrderDocPDT.decLineDiscAmt AS LineDiscAmt
,tblOrderDocPDT.decLineDiscAmtF AS LineDiscAmtF
,tblOrderDocPDT.bitDiscountTax AS DiscountTax
,tblOrderDocPDT.strOrdSODocID AS OrdSODocID
,tblOrderDocPDT.strPartExtendedDesc AS PartExtendedDesc
,tblOrderDocPDT.decItemWeight AS ItemWeight
,tblOrderDocPDT.decVolumetricWeight AS VolumetricWeight
,tblOrderDocPDT.uidTransactionFieldID AS TransactionFieldID
,tblOrderDocPDT.intSODocItemLineNo AS SODocItemLineNo
,ISNULL(tblOrderDoc.strCustName, '') AS CustName
,ISNULL(tblOrderDocPDTPrj.strProjNumber, '') AS ProjNumber
,tblInv.bitInvSerialType AS InvSerialType
,ISNULL(tblInvSerialTypes.bitMethod, 0) AS Method
,ISNULL(tblInv.strUnitOfMeasure, '') AS UnitOfMeasure
,tblInv.strDimProCode AS DimProCode
,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS DimensionExist
FROM tblOrderDocPDT (NOLOCK)
INNER JOIN tblInv (NOLOCK) ON tblOrderDocPDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblOrderDocPDTPrj (NOLOCK) ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTPrj.strOrdPDocID
AND tblOrderDocPDT.intLineNo = tblOrderDocPDTPrj.intLineNo
LEFT JOIN tblOrderDoc (NOLOCK) ON tblOrderDocPDT.strOrdSODocID = tblOrderDoc.strOrdDocID
LEFT JOIN tblInvSerialTypes (NOLOCK) ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblOrderDocPDT.strOrdPDocID = @DocNumber
AND tblOrderDocPDT.decStockQtyRemain <> 0
AND tblOrderDocPDT.bitDiscountTax = 0
ORDER BY tblOrderDocPDT.intLineNo
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPGDTSerialDataForGRV] @DocNumber AS NVARCHAR(50)
,@LineNo AS INT
AS
BEGIN
SELECT tblOrderDocPGDTSerial.[strOrdPGDocID] AS OrderDocID
,tblOrderDocPGDTSerial.[intLineNo] AS [LineNo]
,tblOrderDocPGDTSerial.[strSerialNumber] AS SerialNumber
,tblOrderDocPGDTSerial.[decQty] AS Qty
,tblOrderDocPGDTSerial.[strUnit] AS Unit
,tblOrderDocPGDTSerial.[lngID] AS ID
,tblOrderDocPGDTSerial.[bitExpiryDate] AS IsExpiryDate
,tblOrderDocPGDTSerial.[dteExpiryDate] AS ExpiryDate
,tblOrderDocPGDTSerial.[intSerialLotType] AS SerialLotType
,tblOrderDocPGDTSerial.[lngBinID] AS BinID
,tblOrderDocPGDTSerial.[decPutAwayQty] AS PutAwayQty
,CASE 
WHEN tblOrderDocPGDTSerial.intSerialLotType = 0
THEN ISNULL(CAST(tblInvSerialExt.intStatus AS CHAR(1)) + tblInvSerialExt.strDocID, '')
ELSE ''
END AS STATUS
,ISNULL((
SELECT DISTINCT TYP.strInvSerialType
FROM tblOrderDocPGDTSerial SRL
INNER JOIN tblOrderDocPGDT DTL ON SRL.strOrdPGDocID = DTL.strOrdPGDocID
AND SRL.intLineNo = DTL.intLineNo
INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber
INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType
WHERE SRL.strOrdPGDocID = tblOrderDocPGDTSerial.strOrdPGDocID
AND SRL.intLineNo = tblOrderDocPGDTSerial.intLineNo
), '') AS InvSerialType
,CASE 
WHEN tblOrderDocPGDTSerial.intSerialLotType = 0
THEN ISNULL(tblInvSerialExt.bitDimensionExist, 0)
ELSE Cast(0 as Bit)
END AS IsDimensionExist
,CASE 
WHEN tblOrderDocPGDTSerial.intSerialLotType = 0
THEN ISNULL(tblInvSerialExt.strDimension, '')
ELSE ''
END AS Dimension
,ISNULL((
SELECT strBinCode
FROM tblInvLocBin
WHERE lngID = tblOrderDocPGDTSerial.lngBinId
), '') AS BinCode
FROM tblOrderDocPGDT
INNER JOIN tblOrderDocPGDTSerial ON tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPGDTSerial.strOrdPGDocID
AND tblOrderDocPGDT.intLineNo = tblOrderDocPGDTSerial.intLineNo
LEFT JOIN tblInvSerialExt ON tblOrderDocPGDT.strPartNumber = tblInvSerialExt.strPartNumber
AND tblOrderDocPGDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
WHERE tblOrderDocPGDT.strOrdPGDocID = @DocNumber
AND tblOrderDocPGDT.intLineNo = @LineNo
ORDER BY lngID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPDTSerialForGRV] @DocNumber AS NVARCHAR(50)
,@LineNo AS INT
AS
BEGIN
SELECT tblOrderDocPDTSerial.[strOrdPDocID] AS OrderDocID
,tblOrderDocPDTSerial.[intLineNo] AS [LineNo]
,tblOrderDocPDTSerial.[strSerialNumber] AS SerialNumber
,tblOrderDocPDTSerial.[decQty] AS Qty
,tblOrderDocPDTSerial.[strUnit] AS Unit
,tblOrderDocPDTSerial.[lngID] AS ID
,tblOrderDocPDTSerial.[bitExpiryDate] AS IsExpiryDate
,tblOrderDocPDTSerial.[dteExpiryDate] AS ExpiryDate
,tblOrderDocPDTSerial.[intSerialLotType] AS SerialLotType
,CASE 
WHEN intSerialLotType = 0
THEN ISNULL((
SELECT CAST(tblInvSerialExt.intStatus AS CHAR(1)) + tblInvSerialExt.strDocID
FROM tblInvSerialExt
WHERE tblInvSerialExt.strPartNumber = tblOrderDocPDT.strPartNumber
AND tblInvSerialExt.strSerialNumber = tblOrderDocPDTSerial.strSerialNumber
), '')
ELSE ''
END AS STATUS
,ISNULL((
SELECT DISTINCT TYP.strInvSerialType
FROM tblOrderDocPDTSerial SRL
INNER JOIN tblOrderDocPDT DTL ON SRL.strOrdPDocID = DTL.strOrdPDocID
AND SRL.intLineNo = DTL.intLineNo
INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber
INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType
WHERE SRL.strOrdPDocID = tblOrderDocPDTSerial.strOrdPDocID
AND SRL.intLineNo = tblOrderDocPDTSerial.intLineNo
), '') AS InvSerialType
FROM tblOrderDocPDT
INNER JOIN tblOrderDocPDTSerial ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTSerial.strOrdPDocID
AND tblOrderDocPDT.intLineNo = tblOrderDocPDTSerial.intLineNo
WHERE tblOrderDocPDT.strOrdPDocID = @DocNumber
AND tblOrderDocPDT.intLineNo = @LineNo
ORDER BY lngID
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateReceivingPrint] @DocNumber AS NVARCHAR(50)
,@isEmailed AS BIT
AS
BEGIN
IF (@isEmailed = 0)
UPDATE tblOrderDocPG
SET bitPrinted = 1
WHERE strOrdPGDocID = @DocNumber
ELSE
UPDATE tblOrderDocPG
SET bitEmailed = 1
WHERE strOrdPGDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[FillReceivingReportData] (
@isPrintCheck AS BIT
,@DocNumber AS NVARCHAR(50)
,@isVendStockCodes AS BIT
,@Vendor AS NVARCHAR(20)
,@LocationCriteria AS NVARCHAR(20)
,@isDisplayLogo AS BIT
)
AS
BEGIN
SELECT *
,@isPrintCheck AS bitPrintAddInfo
FROM tblOrderDocPG
WHERE strOrdPGDocID = @DocNumber
IF (@isVendStockCodes = 1)
BEGIN
;
WITH tbtempInvVend
AS (
SELECT tblInvVend.strVendName
,tblInvVendPriceListsByDate.dteStartDate
,tblInvVend.strItemCode
,tblInvVend.strItemDesc
,tblInvVendPriceListsByDate.dteFinishDate
,tblInvVend.strPartNumber
,tblInvVend.strUnit
,tblInvVend.decPrice
,tblInvVend.bitPromotionalPricing
FROM tblInvVend
INNER JOIN tblInvVendPriceListsByDate ON tblInvVend.strVendName = tblInvVendPriceListsByDate.strVendName
AND tblInvVend.uidPriceBasedID = tblInvVendPriceListsByDate.uidPriceBasedID
)
SELECT tblOrderDocPGDT.*
,ISNULL(tbtempInvVend.strItemCode, '') AS strItemCode
,ISNULL(tbtempInvVend.strItemDesc, '') AS strItemDesc
,tblInv.strBarCode
,tblInv.strBarCode2
FROM tblOrderDocPGDT
INNER JOIN tblOrderDocPG ON tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPG.strOrdPGDocID
INNER JOIN tblInv ON tblOrderDocPGDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tbtempInvVend ON tblOrderDocPGDT.strPartNumber = tbtempInvVend.strPartNumber
AND tblOrderDocPG.strVendName = tbtempInvVend.strVendName
AND tblOrderDocPGDT.strBuyUnit = tbtempInvVend.strUnit
AND tblOrderDocPG.dteJournalDate BETWEEN tbtempInvVend.dteStartDate
AND tbtempInvVend.dteFinishDate
WHERE tblOrderDocPGDT.strOrdPGDocID = @DocNumber
ORDER BY tblOrderDocPGDT.intLineNo
END
ELSE
BEGIN
SELECT tblOrderDocPGDT.*
,'' AS strItemCode
,'' AS strItemDesc
,tblInv.strBarCode
,tblInv.strBarCode2
FROM tblOrderDocPGDT
INNER JOIN tblInv ON tblOrderDocPGDT.strPartNumber = tblInv.strPartNumber
WHERE tblOrderDocPGDT.strOrdPGDocID = @DocNumber
ORDER BY tblOrderDocPGDT.intLineNo
END
SELECT *
FROM tblVendors
WHERE strVendName = @Vendor
SELECT *
FROM dbo.fnTblInvLocations(@LocationCriteria) tblInv
WHERE strPartNumber IN (
SELECT DISTINCT strPartNumber
FROM tblOrderDocPGDT
WHERE strOrdPGDocID = @DocNumber
)
SELECT strInvPDocID AS strOrdPGDocID
,intDocLineNo
,intDimLineNo
,intDimColNo
,decValue
,strDimColHeading
,bitVisible
FROM tblInvoiceDocPDimensions
WHERE strInvPDocID = @DocNumber
SELECT [imgLogo]
,@isDisplayLogo AS [bitDisplayLogo]
FROM tblCompany
SELECT strOrdPGDocId
,intLineNo
,lngBinId
,strBinCode = (
SELECT strBinCode
FROM tblInvLocBin
WHERE lngId = tblOrderDocPGDTBin.lngBinId
)
,decQty
FROM tblOrderDocPGDTBin
WHERE strOrdPGDocId = @DocNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCountPartNo] 
(@PartNumber AS NVARCHAR(50))
AS
BEGIN
SELECT CAST(COUNT(tblInv.strPartNumber) as nvarchar(MAX))
FROM tblInv
INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblInv.strPartNumber = @PartNumber
AND tblInvSerialTypes.bitPrintInv = 1
END
GO

----------------------------------------------------
/*********** Start [SelectBuyersFile]***********/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SelectBuyersFile] (@strBuyerName NVARCHAR(50))
AS
SELECT strBuyerName AS BuyerName
,strFileName AS FileName
,dteModified AS Modified
,strType AS Type
,intSize AS Size
,strUserName AS UserName
,bitEnc AS Enc
,imgFile AS ImageFile
FROM tblBuyersF
WHERE strBuyerName = @strBuyerName
GO
/*********** End [SelectBuyersFile]***********/
/*********** Start [DeleteFromBuyers] ***********/

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteFromBuyers] (@strBuyerName NVARCHAR(50))
AS
BEGIN
DELETE
FROM tblBuyers
WHERE strBuyerName = @strBuyerName
END
GO
/*********** End [DeleteFromBuyers] ***********/
/*********** Start [BuyersFUpdateWithTableType] ***********/

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[BuyersFUpdateWithTableType] (@buyersFUpdateTableType AS SalesPerosnFUpdatesTableType READONLY)
AS
BEGIN
INSERT INTO tblBuyersF (
strBuyerName
,strFileName
,dteModified
,strType
,intSize
,strUserName
,bitEnc
,imgFile
)
SELECT *
FROM @buyersFUpdateTableType
END;
GO
/*********** End [BuyersFUpdateWithTableType] ***********/
/*********** Start [UpdateToBuyers] ***********/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateToBuyers] (
@BuyerName NVARCHAR(50)
,@OldBuyerName NVARCHAR(50)
,@Street1 NVARCHAR(50)
,@Street2 NVARCHAR(50)
,@City NVARCHAR(50)
,@Province NVARCHAR(50)
,@Postal NVARCHAR(50)
,@Phone NVARCHAR(50)
,@CellPhone NVARCHAR(50)
,@Fax NVARCHAR(50)
,@Email NVARCHAR(50)
,@YTDPurchases MONEY
,@Inactive BIT
,@Since DATETIME
,@Notes NVARCHAR(max)
,@Country NVARCHAR(50)
,@CountryCode NVARCHAR(10)
,@Facebook NVARCHAR(100)
,@LinkedIn NVARCHAR(100)
,@Skype NVARCHAR(100)
,@Picture IMAGE
,@UID UNIQUEIDENTIFIER
)
AS
BEGIN
UPDATE tblBuyers
SET strBuyerName = @BuyerName
,strStreet1 = @Street1
,strStreet2 = @Street2
,strCity = @City
,strProvince = @Province
,strPostal = @Postal
,strPhone = @Phone
,strCellPhone = @CellPhone
,strFax = @Fax
,strEmail = @Email
,decYTDPurchases = @YTDPurchases
,bitInactive = @Inactive
,dteUpdated = GetDate()
,dteSince = @Since
,strNotes = @Notes
,uID = @UID
,strCountry = @Country
,strCountryCode = @CountryCode
,strFacebook = @Facebook
,strLinkedIn = @LinkedIn
,strSkype = @Skype
,imgPicture = CASE 
WHEN convert(VARBINARY(max), @Picture) = 0x
THEN NULL
ELSE @Picture
END
WHERE strBuyerName = @OldBuyerName;
END;
/*********** End [UpdateToBuyers] ***********/
/*********** Start [InsertToBuyers] ***********/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertToBuyers] (
@BuyersName NVARCHAR(50)
,@Street1 NVARCHAR(50)
,@Street2 NVARCHAR(50)
,@City NVARCHAR(50)
,@Province NVARCHAR(50)
,@Postal NVARCHAR(50)
,@Phone NVARCHAR(50)
,@CellPhone NVARCHAR(50)
,@Fax NVARCHAR(50)
,@Email NVARCHAR(50)
,@YTDSales MONEY
,@Inactive BIT
,@Since DATETIME
,@Notes NVARCHAR(max)
,@Country NVARCHAR(50)
,@CountryCode NVARCHAR(10)
,@Facebook NVARCHAR(100)
,@LinkedIn NVARCHAR(100)
,@Skype NVARCHAR(100)
,@Picture IMAGE = NULL
,@UID UNIQUEIDENTIFIER
)
AS
BEGIN
INSERT INTO tblBuyers
VALUES (
@BuyersName
,@Street1
,@Street2
,@City
,@Province
,@Postal
,@Phone
,@CellPhone
,@Fax
,@Email
,@YTDSales
,@Inactive
,GetDate()
,@Since
,@Notes
,@UID
,@Country
,@CountryCode
,@Facebook
,@LinkedIn
,@Skype
,CASE 
WHEN convert(VARBINARY(max), @Picture) = 0x
THEN NULL
ELSE @Picture
END
)
END
GO
/*********** End [InsertToBuyers] ***********/
/*********** Start [DeleteFileFromBuyers] ***********/

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteFileFromBuyers] (@strBuyerName NVARCHAR(50))
AS
BEGIN
DELETE
FROM tblBuyersF
WHERE strBuyerName = @strBuyerName
END
GO
/*********** End [DeleteFileFromBuyers] ***********/
/*********** Start [SelectBuyers] ***********/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[SelectBuyers] (
	@InActive BIT = 0
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@Search AS NVARCHAR(Max) = ''
	)
AS
BEGIN
	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT strBuyerName AS BuyerName
		,strStreet1 AS Street1
		,strStreet2 AS Street2
		,strCity AS City
		,strProvince AS Province
		,strPostal AS Postal
		,strPhone AS Phone
		,strCellPhone AS CellPhone
		,strFax AS Fax
		,strEmail AS Email
		,decYTDPurchases AS YTDPurchases
		,bitInactive AS Inactive
		,dteUpdated AS Updated
		,dteSince AS Since
		,strNotes AS Notes
		,uID AS ID
		,strCountry AS Country
		,strCountryCode AS CountryCode
		,strFacebook AS Facebook
		,strLinkedIn AS LinkedIn
		,strSkype AS Skype
		,imgPicture AS Picture
	FROM tblBuyers
	WHERE bitInactive IN (0,ISNULL(@InActive, 1))
		AND (
			ISNULL(strBuyerName, '') LIKE '%' + ISNULL(@search, strBuyerName) + '%'
			OR ISNULL(decYTDPurchases, '') LIKE '%' + ISNULL(@search, decYTDPurchases) + '%'
			)
	ORDER BY BuyerName OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO
/*********** End [SelectBuyers] ***********/
/*********** Start [SelectActiveBuyers] ***********/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[SelectActiveBuyers] (@strBuyerName NVARCHAR(30))
AS
SELECT strBuyerName AS BuyerName
,strStreet1 AS Street1
,strStreet2 AS Street2
,strCity AS City
,strProvince AS Province
,strPostal AS Postal
,strPhone AS Phone
,strCellPhone AS CellPhone
,strFax AS Fax
,strEmail AS Email
,decYTDPurchases AS YTDPurchases
,bitInactive AS Inactive
,dteUpdated AS Updated
,dteSince AS Since
,strNotes AS Notes
,uID AS ID
,strCountry AS Country
,strCountryCode AS CountryCode
,strFacebook AS Facebook
,strLinkedIn AS LinkedIn
,strSkype AS Skype
,imgPicture AS Picture
FROM tblBuyers
WHERE strBuyerName = @strBuyerName
GO
/*********** End [SelectActiveBuyers] ***********/

GO
----------------------------------------------------

GO
/****** Object:  StoredProcedure [dbo].[GetCustomersListByCriteria]    Script Date: 22-11-2021 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetCustomersListByCriteria]
	@IsActive BIT
	,@IsInactive BIT
	,@IsAll BIT
	,@FilterType INT
	,@BPToolsMode BIT
	,@SQSalesName VARCHAR(100) = ''
	,@SQUserName VARCHAR(100) = ''
AS
BEGIN
	DECLARE @command AS NVARCHAR(max) = ''

	SET @command = 'SELECT * FROM tblCustomers'

	IF (@FilterType = 2)
		SET @command = @command + ' WHERE (decBalDue <> 0)'
	ELSE IF (@FilterType = 1)
		SET @command = @command + ' WHERE (bitCreditHold = 1)'
	ELSE IF (@FilterType = 4)
		SET @command = @command + ' WHERE (decOpenOrders <> 0)'
	ELSE IF (@FilterType = 3)
		SET @command = @command + ' WHERE (decYTDPurch = 0)'
	ELSE IF (@FilterType = 0)
		SET @command = @command + ' WHERE (decYTDPurch <> 0)'
	ELSE IF (@FilterType = 6)
		SET @command = @command + ' WHERE (strCustName IN (SELECT strCustName FROM tblCustomerSales WHERE strSalesName = ''' + @SQSalesName + '''))'

	IF (@IsAll = 0)
	BEGIN
		IF (@FilterType = 5)
		BEGIN
			IF (@IsActive = 1)
				SET @command = @command + ' WHERE (bitInactive = 0)'
			ELSE IF (@IsInactive = 1)
				SET @command = @command + ' WHERE (bitInactive = 1)'
		END
		ELSE
		BEGIN
			IF (@IsActive = 1)
				SET @command = @command + ' AND (bitInactive = 0)'
			ELSE IF (@IsInactive = 1)
				SET @command = @command + ' AND (bitInactive = 1)'
		END
	END

	IF (@BPToolsMode = 1)
	BEGIN
		SET @command = @command + ' AND strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
	END

	SET @command = @command + ' ORDER BY strCustName'

	EXEC sp_executesql @command
END
GO

/****** Object:  StoredProcedure [dbo].[GetRptContractReconciliationReportData]    Script Date: 25-11-2021 16:33:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetRptContractReconciliationReportData] (
	@StartDate SMALLDATETIME
	,@FinishDate SMALLDATETIME
	,@StartDate2 SMALLDATETIME
	,@FinishDate2 SMALLDATETIME
	)
AS
BEGIN
	SELECT M.strContBillType AS ContractType
		,D.strContDocID AS ContractNumber
		,M.strCustName AS CustomerNumber
		,C.strCustDesc AS CustomerName
		,D.strPartNumber AS ItemCode
		,D.strPartDesc AS ItemDescription
		,M.strReference AS Reference
		,ISNULL((
				SELECT SUM(tblContractBill.decTotal)
				FROM tblContractBillDT
				INNER JOIN tblContractBill ON tblContractBill.strContDocID = tblContractBillDT.strContDocID
				WHERE (tblContractBill.dteJournalDate >= @StartDate)
					AND (tblContractBill.dteJournalDate <= @FinishDate)
					AND tblContractBillDT.strContDocID = D.strContDocID
				), 0) AS Period1
		,ISNULL((
				SELECT SUM(tblContractBill.decTotal)
				FROM tblContractBillDT
				INNER JOIN tblContractBill ON tblContractBill.strContDocID = tblContractBillDT.strContDocID
				WHERE (tblContractBill.dteJournalDate >= @StartDate2)
					AND (tblContractBill.dteJournalDate <= @FinishDate2)
					AND tblContractBillDT.strContDocID = D.strContDocID
				), 0) AS Period2
	FROM tblContractBillDT D
	INNER JOIN tblContractBill M ON D.strContDocID = M.strContDocID
	INNER JOIN tblCustomers C ON M.strCustName = C.strCustName
	ORDER BY D.strContDocID
END
GO

----------------------------------------------------

GO
/****** Object:  StoredProcedure [dbo].[GetSalesPersonList]    Script Date: 22-11-2021 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetSalesPersonList]
AS
BEGIN
	SELECT strSalesName AS SalesName
	FROM tblSalesPersons
	WHERE bitInactive = 0
		AND bitIsWorkshopTechnician = 0
	ORDER BY strSalesName
END
GO
----------------------------------------------------
/*********** Start [UpdateDefaultInvCategory] ***********/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateDefaultInvCategory] (@Category NVARCHAR(50))
AS
BEGIN
UPDATE tblInvCat
SET bitDefault = 0
UPDATE tblInvCat
SET bitDefault = 1
WHERE strCategory = @Category
END
GO
/*********** End [UpdateDefaultInvCategory] ***********/
/*********** Start [SelectAccountSets] ***********/
SET ANSI_NULLS ON
GO
/*********** End [UpdateDefaultInvCategory] ***********/
/*********** Start [SelectAccountSets] ***********/
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[SelectAccountSets]
AS
BEGIN
SELECT strAcctSet AS AcctSet
,blnService AS Service
,blnBuyout AS Buyout
FROM tblAccountSets
ORDER BY strAcctSet
END
GO

----------------------------------------------------



SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvSubCategory] (@ParentCategory NVARCHAR(20))
AS
SELECT strCategory AS Category
,strDesc AS Description
,strParentCategory AS ParentCategory
FROM tblInvSubCat
WHERE strParentCategory = @ParentCategory
ORDER BY strCategory
GO
/*********** End[dbo].[GetInvSubCategory] ***********/
/*********** Start[dbo].[GetInvSubCategoryGroup] ***********/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------

CREATE PROCEDURE [dbo].[GetInvSubCategoryGroup] (
	@ParentCategory NVARCHAR(20)
	,@ParentSubCategory NVARCHAR(20)
	)
AS
SELECT strCategory AS Category
	,strCategory AS OldCategory
	,strDesc AS Description
	,strParentSubCategory AS ParentSubCategory
	,strParentCategory AS ParentCategory
	,CAST(1 AS BIT) AS IsFlag
FROM tblInvGroupSubCat
WHERE strParentCategory = @ParentCategory
	AND strParentSubCategory = @ParentSubCategory
ORDER BY strCategory
GO

/*********** End[dbo].[GetInvSubCategoryGroup] ***********/
/*********** End[dbo].[GetInvSubCategoryitems] ***********/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvSubCategoryitems] (@SubCategory NVARCHAR(20))
AS
SELECT ISNULL(COUNT(strPartNumber), 0)
FROM tblInv
WHERE strSubCategory = @SubCategory
AND bitOtherCmp = 0
GO
/*********** End[dbo].[GetInvSubCategoryitems] ***********/
/*********** Start [dbo].[DeleteIncompatibleStorageSubCat] ***********/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteIncompatibleStorageSubCat] (
@SubCategory NVARCHAR(20)
,@Category NVARCHAR(20)
)
AS
DELETE
FROM tblIncompatibleStorageSubCat
WHERE strParentCategory = @Category
AND strSubCategory = @SubCategory
GO
/*********** End[dbo].[DeleteIncompatibleStorageSubCat] ***********/
/****************Start[dbo].[InsertUpdateInvCategoryGroup]**********/

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertUpdateInvCategoryGroup] (
@Category NVARCHAR(20)
,@Description NVARCHAR(100)
,@ParentCategory NVARCHAR(20)
,@ParentSubCategory NVARCHAR(20)
,@OldCategory NVARCHAR(20)
,@OldGroupCategory NVARCHAR(20)
,@IsEdit BIT
,@IsSubCatGroup BIT
)
AS
BEGIN
IF @IsEdit = 0
BEGIN
INSERT INTO tblInvSubCat
VALUES (
@Category
,@Description
,@ParentCategory
,GetDate()
);
INSERT INTO tblInvGroupSubCat
VALUES (
@Category
,@Description
,@ParentSubCategory
,@ParentCategory
,GETDATE()
);
END
ELSE
BEGIN
UPDATE tblInvSubCat
SET strCategory = @Category
,strDesc = @Description
,dteRowUpdated = GetDate()
WHERE strParentCategory = @ParentCategory
AND strCategory = @OldCategory;
UPDATE tblInv
SET strSubCategory = @Category
WHERE strCategory = @ParentCategory
AND strSubCategory = @OldCategory;
IF @IsSubCatGroup = 0
INSERT INTO tblInvGroupSubCat
VALUES (
@Category
,@Description
,@ParentSubCategory
,@ParentCategory
,GETDATE()
);
ELSE
UPDATE tblInvGroupSubCat
SET strCategory = @Category
,strDesc = @Description
WHERE strParentCategory = @ParentCategory
AND strCategory = @OldCategory
AND strParentSubCategory = @ParentSubCategory;
UPDATE tblInv
SET strSubCategoryGroup = @Category
WHERE strCategory = @ParentCategory
AND strSubCategory = @ParentSubCategory
AND strSubCategoryGroup = @OldGroupCategory
END
END
GO
/**************** End[dbo].[InsertUpdateInvCategoryGroup]**********/
/****************Start[dbo].[InsertInvSubCat] **********/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvSubCat] (
@Category NVARCHAR(20)
,@Description NVARCHAR(100)
,@ParentCategory NVARCHAR(20)
)
AS
INSERT INTO tblInvSubCat
VALUES (
@Category
,@Description
,@ParentCategory
,GetDate()
);
GO
SET ANSI_NULLS ON
GO
/*********** End[dbo].[DeleteIncompatibleStorageSubCat] ***********/
/********** Start [dbo].[UpdateInvSubCat] **********/
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateInvSubCat] (
@Category NVARCHAR(20)
,@Description NVARCHAR(100)
,@ParentCategory NVARCHAR(20)
,@OldCategory NVARCHAR(20)
)
AS
UPDATE tblInvSubCat
SET strCategory = @Category
,strDesc = @Description
,dteRowUpdated = GetDate()
WHERE strParentCategory = @ParentCategory
AND strCategory = @OldCategory;
UPDATE tblInv
SET strSubCategory = @Category
WHERE strCategory = @ParentCategory
AND strSubCategory = @OldCategory;
GO
/********** End [dbo].[UpdateInvSubCat] **********/
/********** Start [dbo].[InsertUpdateInvSubCatGroup] **********/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertUpdateInvSubCatGroup] (
@Category NVARCHAR(20)
,@Description NVARCHAR(100)
,@ParentCategory NVARCHAR(20)
,@ParentSubCategory NVARCHAR(20)
,@OldGroupCategory NVARCHAR(20)
,@IsEdit BIT
)
AS
BEGIN
IF @IsEdit = 0
INSERT INTO tblInvGroupSubCat
VALUES (
@Category
,@Description
,@ParentSubCategory
,@ParentCategory
,GETDATE()
)
ELSE
UPDATE tblInvGroupSubCat
SET strCategory = @Category
,strDesc = @Description
WHERE strParentCategory = @ParentCategory
AND strCategory = @OldGroupCategory
AND strParentSubCategory = @ParentSubCategory
END
GO
/*******End [dbo].[InsertUpdateInvSubCatGroup] *************/

GO
----------------------------------------------------
create procedure [dbo].[GetInvCountPDTLocation] @UserName AS NVARCHAR(20)
AS
BEGIN
SELECT tblInvLoc.strLocName AS Location
,ISNULL((
SELECT COUNT(tblInvLocSec.strLocName)
FROM tblInvLocSec
WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName
), 0) AS CountLoc
,ISNULL(tblInvLocSec.strUserName, '') AS UserName
FROM tblInvLoc
LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName
AND tblInvLocSec.strUserName = @UserName
WHERE tblInvLoc.intType = 0
ORDER BY tblInvLoc.strLocName
END
GO

GO
----------------------------------------------------
create procedure [dbo].[GetStockCountPDTInvData] @BarCode AS NVARCHAR(100)
,@LocName AS NVARCHAR(100)
AS
BEGIN
SELECT INV.strPartNumber AS PartNumber
,INV.intType AS Type
,IE.bitInactive AS IsInactive
FROM tblInv INV
INNER JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber
WHERE (INV.strBarCode = @BarCode)
AND (IE.strLocName = @LocName)
END
GO

GO
----------------------------------------------------


create  procedure [dbo].[InvStockCountPDTInsertUpdate]
@ImportQty as decimal,
@Part as nvarchar(100),
@Location as nvarchar(100),
@BinCode as nvarchar = null,
@IsUpdate as bit
as
Begin
if(@IsUpdate =1)
UPDATE tblInvCountPDT SET decQty = decQty + @ImportQty WHERE strPartNumber = @Part 
AND strLocName = @Location
else

INSERT INTO [dbo].[tblInvCountPDT]
           ([strPartNumber]
           ,[strLocName]
           ,[decQty]
           ,[strBinCode])
     VALUES
           (@Part
           ,@Location
           ,@ImportQty
           ,@BinCode)
end

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvStockCountPDTBinLoc] @Bin NVARCHAR(50)
,@Loc AS  NVARCHAR(50)
AS
BEGIN
SELECT TOP 1  CAST(lngID AS NVARCHAR(50)) AS lngBinID
FROM tblInvLocBin
WHERE strBinCode = @Bin
AND strLocName = @Loc
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteInvCountPDT] @Loc AS NVARCHAR(100)
AS
BEGIN
DELETE
FROM tblInvCountPDT
WHERE strLocName = @Loc
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvCountPDTListData] @Loc AS NVARCHAR(max)
	,@IsSortDesc AS BIT
	,@IsScannedOnly AS BIT
AS
BEGIN
	IF (@IsScannedOnly = 1)
	BEGIN
		IF (@IsSortDesc = 0)
		BEGIN
			SELECT tblInvCountPDT.strPartNumber AS PartNumber
				,tblInv.strDesc AS [Description]
				,tblInvExt.decAvail AS CurrentAvail
				,tblInvExt.decOnHand AS CurrentOnHand
				,tblInvCountPDT.decQty AS Scanned
				,tblInvCountPDT.decQty - tblInvExt.decOnHand AS Variance
				,(
					CASE 
						WHEN LEN(tblInvCountPDT.strBinCode) > 0
							THEN tblInvCountPDT.strBinCode
						ELSE (
								SELECT strBinCode
								FROM tblInvLocBin
								WHERE lngID = (
										SELECT lngBinID
										FROM tblInvExtBin
										WHERE strPartNumber = tblInv.strPartNumber
											AND strLocName = @Loc
										)
								)
						END
					) AS Bin
			FROM tblInv
			INNER JOIN tblInvCountPDT ON tblInv.strPartNumber = tblInvCountPDT.strPartNumber
			INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
			WHERE (tblInvCountPDT.strLocName = @Loc)
				AND (tblInvExt.strLocName = @Loc)
				AND bitOtherCmp = 0
			ORDER BY tblInvCountPDT.strPartNumber
		END
		ELSE
		BEGIN
			SELECT tblInvCountPDT.strPartNumber AS PartNumber
				,tblInv.strDesc AS [Description]
				,tblInvExt.decAvail AS CurrentAvail
				,tblInvExt.decOnHand AS CurrentOnHand
				,tblInvCountPDT.decQty AS Scanned
				,tblInvCountPDT.decQty - tblInvExt.decOnHand AS Variance
				,(
					CASE 
						WHEN LEN(tblInvCountPDT.strBinCode) > 0
							THEN tblInvCountPDT.strBinCode
						ELSE (
								SELECT strBinCode
								FROM tblInvLocBin
								WHERE lngID = (
										SELECT lngBinID
										FROM tblInvExtBin
										WHERE strPartNumber = tblInv.strPartNumber
											AND strLocName = @Loc
										)
								)
						END
					) AS Bin
			FROM tblInv
			INNER JOIN tblInvCountPDT ON tblInv.strPartNumber = tblInvCountPDT.strPartNumber
			INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
			WHERE (tblInvCountPDT.strLocName = @Loc)
				AND (tblInvExt.strLocName = @Loc)
				AND bitOtherCmp = 0
			ORDER BY tblInv.strDesc
		END
	END
	ELSE
	BEGIN
		IF (@IsSortDesc = 0)
		BEGIN
			SELECT tblInv.strPartNumber AS PartNumber
				,tblInv.strDesc AS [Description]
				,tblInvExt.decAvail AS CurrentAvail
				,tblInvExt.decOnHand AS CurrentOnHand
			FROM tblInv
			INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
			WHERE (tblInv.intType = 1)
				AND bitOtherCmp = 0
				AND (tblInvExt.strLocName = @Loc)
			ORDER BY tblInv.strPartNumber
		END
		ELSE
		BEGIN
			SELECT tblInv.strPartNumber AS PartNumber
				,tblInv.strDesc AS [Description]
				,tblInvExt.decAvail AS CurrentAvail
				,tblInvExt.decOnHand AS CurrentOnHand
			FROM tblInv
			INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
			WHERE (tblInv.intType = 1)
				AND bitOtherCmp = 0
				AND (tblInvExt.strLocName = @Loc)
			ORDER BY tblInv.strDesc
		END
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE GetInvStockCountPDTReportData @JourID AS BIGINT
	,@LocationCriteria AS NVARCHAR(max)
	,@Criteria AS NVARCHAR(max)
	,@JournalDate AS DATE
	,@IsNew AS BIT
	,@Module AS INT
AS
BEGIN
	IF (@JourID = 0)
	BEGIN
		SELECT *
		FROM dbo.fnTblInvLocations(@LocationCriteria) tblInv
		WHERE strPartNumber IN (
				SELECT DISTINCT *
				FROM dbo.fnSplitStringAsTable(@Criteria, ',')
				)
	END
	ELSE
	BEGIN
		SELECT tblInvTrackingDT.intLineNo
			,tblInvTrackingDT.strPartNumber AS PartNumber
			,tblInv.strDesc AS Description
			,(tblInvTrackingDT.decOnHand + tblInvTrackingDT.decQty) AS Available
			,tblInvTrackingDT.decOnHand AS OnHand
			,tblInvTrackingDT.decQty AS Variance
			,ISNULL(tblInvTrackingDT.decValue / tblInvTrackingDT.decQty, 0) AS ValueEa
			,tblInvTrackingDT.decValue AS ValueTotal
			,tblInvTracking.lngInvTrackID
			,tblInvTracking.strSource
			,CONVERT(VARCHAR(20), tblInvTracking.dteJournalDate, 103) AS dteJournalDate
			,tblInvTracking.strComment
			,tblInvTracking.strUserName
		FROM tblInvTrackingDT
		INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
		INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
		WHERE tblInvTracking.lngJourID = @JourID
			AND tblInvTracking.intModule = @Module
			AND tblInvTracking.dteJournalDate = @JournalDate
		ORDER BY tblInvTrackingDT.intLineNo

		SELECT *
		FROM dbo.fnTblInvLocations(@LocationCriteria) tblInv
		WHERE strPartNumber IN (
				SELECT DISTINCT tblInvTrackingDT.strPartNumber
				FROM tblInvTracking
				INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
				WHERE tblInvTracking.lngJourID = @JourID
					AND tblInvTracking.intModule = @Module
					AND tblInvTracking.dteJournalDate = @JournalDate
				)
	END
END
GO

----------------------------------------------------
create procedure [dbo].[GetBarcodeData] @BarCode AS NVARCHAR(20)
AS
BEGIN
SELECT tblInv.strPartNumber AS PartNumber
,CASE 
WHEN tblInv.strBarCode = @BarCode
OR tblInv.strBarCode2 = @BarCode
THEN tblInv.strStockUnit
ELSE ISNULL(tblInvUOMs.strFromUnit, '')
END AS Unit
FROM tblInv
LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
WHERE (
tblInv.strBarCode = @BarCode
OR tblInv.strBarCode2 = @BarCode
OR tblInvUOMs.strBarCode = @BarCode
OR tblInvUOMs.strBarCode2 = @BarCode
)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvData] @PartNumber AS NVARCHAR(50)
	,@Desc AS NVARCHAR(500)
	,@Type AS INT
	,@Category AS NVARCHAR(20)
	,@ExpAcct AS NVARCHAR(30)
	,@CostOnPO AS DECIMAL
	,@UseLPPOnPO AS BIT
	,@ReorderQty AS INT
	,@BuyUnit AS NVARCHAR(50)
	,@StockUnit AS NVARCHAR(15)
	,@BuyToStock AS DECIMAL
	,@AllowPriceChg AS BIT
	,@DateLastSale AS SMALLDATETIME
	,@LastPurchase AS SMALLDATETIME
	,@UseBOM AS BIT
	,@BOMQty AS INT
	,@AddInfo AS NVARCHAR(MAX)
	,@Inactive AS BIT
	,@AutoBuild AS BIT
	,@Field1 AS NVARCHAR(100)
	,@Field2 AS NVARCHAR(100)
	,@Field3 AS NVARCHAR(100)
	,@Field4 AS NVARCHAR(100)
	,@Field5 AS NVARCHAR(100)
	,@Field6 AS NVARCHAR(100)
	,@BarCode AS NVARCHAR(300)
	,@StandardCost AS DECIMAL
	,@ItemNumConvUsed AS BIT
	,@SellUnit AS NVARCHAR(50)
	,@SellStockUnit AS NVARCHAR(50)
	,@SellFromStock AS DECIMAL
	,@ItemSegment1 AS NVARCHAR(50)
	,@ItemSegment2 AS NVARCHAR(50)
	,@ItemSegment3 AS NVARCHAR(50)
	,@ItemSegment4 AS NVARCHAR(50)
	,@InvNumConv AS NVARCHAR(50)
	,@InvSerialType AS BIT
	,@SerialType AS NVARCHAR(20)
	,@RepairCharge AS DECIMAL
	,@BarCode2 AS NVARCHAR(300)
	,@VoucherEnabled AS BIT
	,@VoucherCode AS NVARCHAR(50)
	,@DefSaleQty AS DECIMAL
	,@ExtendedDesc AS NVARCHAR(MAX)
	,@InvExtDescOnSI AS BIT
	,@InvExtDescOnSO AS BIT
	,@InvExtDescOnSQ AS BIT
	,@InvExtDescOnSFHQ AS BIT
	,@InvExtDescOnCR AS BIT
	,@InvExtDescOnPI AS BIT
	,@InvExtDescOnPO AS BIT
	,@InvExtDescOnPQ AS BIT
	,@DimProCode AS NVARCHAR(40)
	,@RSTTerminalSync AS NVARCHAR(MAX)
	,@DecimalQuantity AS INT
	,@BOMNotes AS NVARCHAR(MAX)
	,@InvExtDescOnBRQ AS BIT
	,@Mass AS MONEY
	,@VolumetricWeight AS MONEY
	,@UnitOfMeasure AS NVARCHAR(50)
	,@W AS MONEY
	,@H AS MONEY
	,@D AS MONEY
	,@Cube AS MONEY
	,@Factor AS MONEY
	,@MaxLevel AS DECIMAL
	,@OrderLeadTime AS DECIMAL
	,@SafetyFactorPer AS DECIMAL
	,@DaysSalesinStock AS DECIMAL
	,@MinimumOrderQuantity AS DECIMAL
	,@MinLevel AS DECIMAL
	,@EconomicOrderQty AS DECIMAL
	,@Pallet AS BIT
	,@InclInvForecast AS BIT
	,@DimProSales AS BIT
	,@DimProPurchases AS BIT
	,@InvWCCode AS NVARCHAR(20)
	,@AutoBuildSameLoc AS BIT
	,@SubCategory AS NVARCHAR(20)
	,@SubCategoryGroup AS NVARCHAR(40)
	,@POSDesc AS NVARCHAR(50)
	,@PrintComp AS BIT
	,@SumComp AS BIT
	,@IsAllowAdjustKitCompOnDoc BIT
	,@HSCode AS NVARCHAR(500)
	,@HSDescription AS NVARCHAR(500)
	,@Density AS MONEY
	,@IsSuperseded AS BIT
	,@SupersededBy AS NVARCHAR(50)
	,@SupersededDescription AS NVARCHAR(500)
	,@supersessiondate AS DATETIME
	,@PendingApproval AS BIT
	,@DefaultUOM AS BIT
	,@URACode AS NVARCHAR(200)
	,@KenyaItemCode AS NVARCHAR(200)
	,@KenyaItemCodeCounter AS NVARCHAR(MAX)
	,@KenyaItemClassificationName AS NVARCHAR(MAX)
	,@KenyaItemCountryCode AS NVARCHAR(MAX)
	,@CommodityCode AS NVARCHAR(500)
	,@ZmbCounter AS NVARCHAR(500)
	,@ZmbDefaultCode AS NVARCHAR(500)
	,@ZmbClsName AS NVARCHAR(500)
	,@ZmbItemType AS INT
	,@ZmbItemCountryOriginCode AS NVARCHAR(6)
AS
BEGIN
	INSERT INTO [dbo].[tblInv] (
		[strPartNumber]
		,[strDesc]
		,[intType]
		,[strCategory]
		,[intExpAcct]
		,[decCostOnPO]
		,[bitUseLPPOnPO]
		,[intReorderQty]
		,[strBuyUnit]
		,[strStockUnit]
		,[decBuyToStock]
		,[bitAllowPriceChg]
		,[dteDateLastSale]
		,[dteLastPurchase]
		,[decLastPPUnit]
		,[dteLastUpdated]
		,[bitUseBOM]
		,[intBOMQty]
		,[strAddInfo]
		,[bitInactive]
		,[decSumAvail]
		,[decSumAlloc]
		,[decSumOnHand]
		,[decSumValue]
		,[decSumOnOrder]
		,[decSumOpenQty]
		,[decSumOpenValue]
		,[decSumValYearStart]
		,[decSumQtyYearStart]
		,[decSumAmtSoldYTD]
		,[decSumAmtSoldLY]
		,[decSumQtySoldYTD]
		,[decSumQtySoldLY]
		,[decSumCOGSYTD]
		,[decSumCOGSLY]
		,[intSumNumTransYTD]
		,[intSumNumTransLY]
		,[bitAutoBuild]
		,[strField1]
		,[strField2]
		,[strField3]
		,[strField4]
		,[strField5]
		,[strField6]
		,[strBarCode]
		,[decStandardCost]
		,[bitItemNumConvUsed]
		,[strSellUnit]
		,[strSellStockUnit]
		,[decSellFromStock]
		,[strItemSegment1]
		,[strItemSegment2]
		,[strItemSegment3]
		,[strItemSegment4]
		,[strInvNumConv]
		,[bitInvSerialType]
		,[strInvSerialType]
		,[decRepairCharge]
		,[strBarCode2]
		,[bitVoucherEnabled]
		,[strVoucherCode]
		,[decDefSaleQty]
		,[strExtendedDesc]
		,[bitInvExtDescOnSI]
		,[bitInvExtDescOnSO]
		,[bitInvExtDescOnSQ]
		,[bitInvExtDescOnSFHQ]
		,[bitInvExtDescOnCR]
		,[bitInvExtDescOnPI]
		,[bitInvExtDescOnPO]
		,[bitInvExtDescOnPQ]
		,[bitWebstoreItem]
		,[strDimProCode]
		,[strRSTTerminalSync]
		,[intDecimalQuantity]
		,[strBOMNotes]
		,[bitInvExtDescOnBRQ]
		,[decMass]
		,[decVolumetricWeight]
		,[strUnitOfMeasure]
		,[decW]
		,[decH]
		,[decD]
		,[decCube]
		,[decFactor]
		,[decMaxLevel]
		,[decOrderLeadTime]
		,[decSafetyFactorPer]
		,[decDaysSalesinStock]
		,[decMinimumOrderQuantity]
		,[decNewDailySales]
		,[decOldMinLevel]
		,[decMinimumLevel]
		,[decOldMaxLevel]
		,[decEconomicOrderQty]
		,[bitPallet]
		,[bitInclInvForecast]
		,[bitDimProSales]
		,[bitDimProPurchases]
		,[strInvWCCode]
		,[decLastManCost]
		,[bitAutoBuildSameLoc]
		,[strFileName]
		,[strSubCategory]
		,[decSumManuf]
		,[strSubCategoryGroup]
		,[bitExclCommission]
		,[strPOSDesc]
		,[bitOtherCmp]
		,[bitPrintComp]
		,[dteRowUpdated]
		,[bitSumComp]
		,[dteWebStoreItemUpdated]
		,[bitAllowAdjustKitCompOnDoc]
		,[strHSCode]
		,[strHSDesc]
		,[strURACode]
		,[decDensity]
		,[bitIsSuperseded]
		,[strSupersededBy]
		,[strSupersededDescription]
		,[dtesupersessiondate]
		,[bitPendingApproval]
		,[bitDefaultUOM]
		,[strKenyaItemCode]
		,[strKenyaItemCodeCounter]
		,[strKenyaItemClassificationName]
		,[strKenyaItemCountryCode]
		,[strCommodityCode]
		,strZMBItemCodeCounter
		,strZambiaItemCode
		,strZambiaItemClassificationName
		,intZambiaItemType
		,strZambiaInvCountryOriginCode
		)
	VALUES (
		@PartNumber
		,@Desc
		,@Type
		,@Category
		,@ExpAcct
		,@CostOnPO
		,@UseLPPOnPO
		,@ReorderQty
		,@BuyUnit
		,@StockUnit
		,@BuyToStock
		,@AllowPriceChg
		,@DateLastSale
		,@LastPurchase
		,0
		,GetDate()
		,@UseBOM
		,@BOMQty
		,@AddInfo
		,@Inactive
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,0
		,@AutoBuild
		,@Field1
		,@Field2
		,@Field3
		,@Field4
		,@Field5
		,@Field6
		,@BarCode
		,@StandardCost
		,@ItemNumConvUsed
		,@SellUnit
		,@SellStockUnit
		,@SellFromStock
		,@ItemSegment1
		,@ItemSegment2
		,@ItemSegment3
		,@ItemSegment4
		,@InvNumConv
		,@InvSerialType
		,@SerialType
		,@RepairCharge
		,@BarCode2
		,@VoucherEnabled
		,@VoucherCode
		,@DefSaleQty
		,@ExtendedDesc
		,@InvExtDescOnSI
		,@InvExtDescOnSO
		,@InvExtDescOnSQ
		,@InvExtDescOnSFHQ
		,@InvExtDescOnCR
		,@InvExtDescOnPI
		,@InvExtDescOnPO
		,@InvExtDescOnPQ
		,0
		,@DimProCode
		,@RSTTerminalSync
		,@DecimalQuantity
		,@BOMNotes
		,@InvExtDescOnBRQ
		,@Mass
		,@VolumetricWeight
		,@UnitOfMeasure
		,@W
		,@H
		,@D
		,@Cube
		,@Factor
		,@MaxLevel
		,@OrderLeadTime
		,@SafetyFactorPer
		,@DaysSalesinStock
		,@MinimumOrderQuantity
		,0
		,0
		,@MinLevel
		,0
		,@EconomicOrderQty
		,@Pallet
		,@InclInvForecast
		,@DimProSales
		,@DimProPurchases
		,@InvWCCode
		,0
		,@AutoBuildSameLoc
		,NULL
		,@SubCategory
		,0
		,@SubCategoryGroup
		,0
		,@POSDesc
		,0
		,@PrintComp
		,GetDate()
		,@SumComp
		,NULL
		,@IsAllowAdjustKitCompOnDoc
		,@HSCode
		,@HSDescription
		,@URACode
		,@Density
		,@IsSuperseded
		,@SupersededBy
		,@SupersededDescription
		,@supersessiondate
		,@PendingApproval
		,@DefaultUOM
		,@KenyaItemCode
		,@KenyaItemCodeCounter
		,@KenyaItemClassificationName
		,@KenyaItemCountryCode
		,@CommodityCode
		,@ZmbCounter
		,@ZmbDefaultCode
		,@ZmbClsName
		,@ZmbItemType
		,@ZmbItemCountryOriginCode
		)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvTarget] @PartNumber AS NVARCHAR(50)
,@Per1 AS money
,@Per2 AS money
,@Per3 AS money
,@Per4 AS money
,@Per5 AS money
,@Per6 AS money
,@Per7 AS money
,@Per8 AS money
,@Per9 AS money
,@Per10 AS money
,@Per11 AS money
,@Per12 AS money
AS
BEGIN
INSERT INTO tblInvT
VALUES (
@PartNumber
,@Per1
,@Per2
,@Per3
,@Per4
,@Per5
,@Per6
,@Per7
,@Per8
,@Per9
,@Per10
,@Per11
,@Per12
)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvPurchaseTarget] @PartNumber AS NVARCHAR(50)
,@Per1 AS money
,@Per2 AS money
,@Per3 AS money
,@Per4 AS money
,@Per5 AS money
,@Per6 AS money
,@Per7 AS money
,@Per8 AS money
,@Per9 AS money
,@Per10 AS money
,@Per11 AS money
,@Per12 AS money
AS
BEGIN
INSERT INTO tblInvPurchaseTarget
VALUES (
@PartNumber
,@Per1
,@Per2
,@Per3
,@Per4
,@Per5
,@Per6
,@Per7
,@Per8
,@Per9
,@Per10
,@Per11
,@Per12
)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvItemTax] @PartNumber AS NVARCHAR(50)
,@OverrideTax AS BIT
,@OverridingTaxCode AS NVARCHAR(100)
,@UseMTV AS BIT
,@MinTaxAmount AS DECIMAL
,@AffectedTaxCodes AS NVARCHAR(MAX)
,@ZambiaTaxCode as nvarchar(200)
AS
BEGIN
INSERT INTO tblInvItemTax (
strPartNumber
,bitOverrideTax
,strOverridingTaxCode
,bitUseMTV
,decMinTaxAmount
,strAffectedTaxCodes
,dteRowInserted
,dteRowUpdated
,strZambiaItemTaxCode
)
VALUES (
@PartNumber
,@OverrideTax
,@OverridingTaxCode
,@UseMTV
,@MinTaxAmount
,@AffectedTaxCodes
,GETDATE()
,GETDATE()
,@ZambiaTaxCode
)
END
GO
--------------------------------------------------------------------------------------------------------------------------------------------------

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvItemData] @PartNumber AS NVARCHAR(50)
AS
BEGIN
SELECT tblInvPrice.strPartNumber AS PartNumber
,tblInvPrice.strPricelist AS Pricelist
,tblInvPrice.decSelling AS Selling
,CONVERT(DATE, tblPriceListsByDate.dteStartDate) AS StartDate
,CONVERT(DATE, tblPriceListsByDate.dteFinishDate) AS EndDate
,tblPriceListsByDate.uidPriceBasedID AS GuidData
,tblInvPrice.decEstLocalCost AS EstLocalCost
,tblInvPrice.decEstImportCost AS EstImportCost
,tblInvPrice.strUnit AS Unit
,tblInvPrice.bitStockUnit AS IsStockUnit
FROM tblInvPrice
INNER JOIN tblPriceListsByDate ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber
AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
WHERE tblInvPrice.strPartNumber = @PartNumber
ORDER BY tblInvPrice.strPricelist
,tblPriceListsByDate.uidPriceBasedID
,tblInvPrice.bitStockUnit DESC
END
GO
--------------------------------------------------------------------------------------------------------------------------------------------------

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvItemVendorData] @PartNumber AS NVARCHAR(50)
AS
BEGIN
SELECT tblVendors.strVendName AS VendorNumber
,tblVendors.strVendDesc AS VendorName
,tblVendors.strVendDesc AS VendorDescription
,strItemCode AS ItemCode
,strItemDesc AS ItemDescription
,intWarrantyDays AS WarrantyDays
,decPrice AS Price
,decLocalPrice AS LocalPrice
,decDiscPerc AS DiscountPercentage
,decLandedCostFactor AS LandedCostFactor
,bitPreferred AS Preferred
,lngID AS ID
,tblVendors.strCurrency AS Currency
,tblInvVend.strUnit AS Unit
,ISNULL(dteStartDate, '') AS StartDate
,ISNULL(dteFinishDate, '') AS FinishDate
,tblInvVend.uidPriceBasedID AS PriceBasedID
FROM tblInvVend
INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName
INNER JOIN tblInvVendPriceListsByDate ON tblInvVendPriceListsByDate.strVendName = tblInvVend.strVendName
AND tblInvVend.uidPriceBasedID = tblInvVendPriceListsByDate.uidPriceBasedID
WHERE strPartNumber = @PartNumber
ORDER BY tblInvVend.strVendName
END
GO
--------------------------------------------------------------------------------------------------------------------------------------------------

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateInvExtData] @PartNumber AS NVARCHAR(50)
,@ActSet AS NVARCHAR(100)
,@BinCode AS NVARCHAR(100)
,@Inactive AS BIT
,@Default AS BIT
,@LocName AS NVARCHAR(100)
AS
BEGIN
UPDATE tblInvExt
SET strAcctSet = @ActSet
,strBinLoc = @BinCode
,bitInactive = @Inactive
,bitDefault = @Default
WHERE strLocName = @LocName
AND strPartNumber = @PartNumber
END
GO

-----------------------------------------------------------------------------------------------------------------------------------------

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvItemSumValue] @PartNumber AS NVARCHAR(50)
AS
BEGIN
SELECT decSumValue
FROM tblInv
WHERE strPartNumber = @PartNumber
END
GO
-----------------------------------------------------------------------------------------------------------------------------------------

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetAcctSetsData] @IsItem AS BIT
,@IsService AS BIT
,@IsBuyOut AS BIT
AS
BEGIN
IF (@IsItem = 1)
BEGIN
SELECT strAcctSet
FROM tblAccountSets
WHERE blnService = 0
AND blnBuyout = 0
AND blnInactive = 0
END
IF (@IsService = 1)
BEGIN
SELECT strAcctSet
FROM tblAccountSets
WHERE blnService = 1
AND blnInactive = 0
END
IF (@IsBuyOut = 1)
BEGIN
SELECT strAcctSet
FROM tblAccountSets
WHERE blnBuyout = 1
AND blnInactive = 0
END
END
GO
------------------------------------------------------------------------------------------------------------------------------------------

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCountPartNumber] @PartNumber AS NVARCHAR(50)
AS
BEGIN
SELECT COUNT(strPartNumber) AS NoPartNumber
FROM tblInvExt
WHERE strPartNumber = @PartNumber
END
GO
---------------------------------------------------------------------------------------------------------------------------------------------

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetUserCountData]
AS
BEGIN
SELECT COUNT(1)
FROM tblUsers
END
GO
--------------------------------------------------------------------------------------------------------------------------------------------

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvItemDataList] @PartNumber AS NVARCHAR(50)
AS
BEGIN
	SELECT t1.strPartNumber AS [PartNumber]
		,t2.strLocName AS [LocationName]
		,t3.strDesc AS [LocationDescription]
		,t3.intType AS [LocationType]
		,t2.[strAcctSet] AS [AccountSet]
		,ISNULL((
				SELECT strBinCode
				FROM tblInvLocBin
				WHERE lngID = t4.lngBinID
				), '') AS [BinLocation]
		,t2.decAlloc AS Allocated
		,t2.decOnHand AS OnHand
		,t2.decOnOrder AS PurchaseOrder
		,t2.bitInactive AS Inactive
		,t2.bitDefault AS [Default]
		,t2.decManuf AS [Manufacture]
		,Isnull(t4.bitAllowed, 0) AS IsAllowed
	FROM tblInv t1
	INNER JOIN tblInvExt t2 ON t1.strPartNumber = t2.strPartNumber
	INNER JOIN tblInvLoc t3 ON t2.strLocName = t3.strLocName
	LEFT JOIN tblInvExtBin AS t4 ON t3.strLocName = t4.strLocName
		AND t1.strPartNumber = t4.strPartNumber
		--AND t4.bitDefault = 1
	WHERE t1.strPartNumber = @PartNumber
	ORDER BY t2.strLocName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvItemSubCategoryList] @Parentcat AS NVARCHAR(MAX)
,@cat AS NVARCHAR(MAX)
AS
BEGIN
SELECT ISCI.strIncompatibilityReason AS Reason
,ISCI.strIncompatibleParentCategory AS Category
,ISCI.strIncompatibleSubCategory AS ParentSubCategory
,SC.strDesc AS Description
FROM tblIncompatibleStorageSubCat ISCI
INNER JOIN tblInvSubCat SC ON ISCI.strIncompatibleParentCategory = sc.strParentCategory
WHERE ISCI.strIncompatibleSubCategory = SC.strCategory
AND ISCI.strParentCategory = @Parentcat
AND ISCI.strSubCategory = @cat
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCountVendorName] 
@VendName AS NVARCHAR(50)
AS
BEGIN
SELECT Count(strVendName)
FROM tblInvVendPriceListsByDate
WHERE strVendName = @VendName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvVendPriceListByDate] @VendName AS NVARCHAR(20)
AS
BEGIN
SELECT dteStartDate as StartDate
,dteFinishDate as FinishDate
,uidPriceBasedID as PriceBasedID
FROM tblInvVendPriceListsByDate 
WHERE strVendName = @VendName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvVendPriceListsByDate] @VendName AS NVARCHAR(20)
,@PriceBasedID AS UNIQUEIDENTIFIER
,@StartDate AS DATETIME
,@FinishDate AS DATETIME
,@Inactive AS BIT
,@UserName AS NVARCHAR(100)
AS
BEGIN
INSERT INTO tblInvVendPriceListsByDate (
uidPriceBasedID
,strVendName
,dteStartDate
,dteFinishDate
,bitInactive
,CreatedDate
,CreatedBy
,UpdatedDate
,UpdatedBy
)
VALUES (
@PriceBasedID
,@VendName
,@StartDate
,@FinishDate
,@Inactive
,GetDate()
,@UserName
,GetDate()
,@UserName
)
END
GO

/*********************************************[GetPriceLists]****************************************************************/
CREATE PROCEDURE [dbo].[GetPriceLists] @SearchText AS NVARCHAR(20)
AS
BEGIN
SELECT *
FROM tblPriceData
WHERE strPricelist LIKE @SearchText
ORDER BY strPricelist
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCopyPriceListData]
AS
BEGIN
SELECT DISTINCT tblPriceData.strPricelist AS Pricelist
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.strPricelist = tblPriceData.strPricelist
WHERE tblPriceData.bitInactive = 0
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateInvPrice] (
	@SQSell MONEY
	,@SQPart VARCHAR(100)
	,@SQPricelist VARCHAR(40)
	,@SQuidPriceBasedID UNIQUEIDENTIFIER
	)
AS
BEGIN
	UPDATE tblInvPrice
	SET decSelling = @SQSell
	WHERE strPartNumber = @SQPart
		AND strPricelist = @SQPricelist
		AND uidPriceBasedID = @SQuidPriceBasedID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetSellingPrice] (
	@SQPriceList AS VARCHAR(40)
	,@SQuidPriceBasedID AS UNIQUEIDENTIFIER
	)
AS
BEGIN
	SELECT tblInv.strPartNumber AS PartNumber
		,tblInv.strDesc AS PartDescription
		,tblInvPrice.decSelling AS Selling
		,tblInv.strCategory AS Category
		,tblInv.decSellFromStock AS SellFromStock
		,tblInvPrice.strUnit AS Unit
	FROM tblInv
	INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
	WHERE (tblInv.intType <> 5)
		AND (tblInv.bitInactive = 0)
		AND (tblInvPrice.strPricelist = @SQPriceList)
		AND (Lower(tblInvPrice.uidPriceBasedID) = @SQuidPriceBasedID)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchasePriceData] (
@SQstrPartNumber VARCHAR(100)
,@SQstrUnit VARCHAR(100)
)
AS
BEGIN
SELECT tblInvVend.strPartNumber
,tblInvVend.strVendName AS VendName
,tblInvVend.decLandedCostFactor AS LandedfactorCost
,tblInvVend.decDiscPerc AS DiscPerc
,tblInvVend.decLocalPrice AS LocalPrice
,tblVendors.strVendDesc AS VendDesc
,tblInvVend.bitPreferred AS Preferred
FROM tblInvVend
INNER JOIN tblInv ON tblInvVend.strPartNumber = tblInv.strPartNumber
INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName
WHERE tblInvVend.strPartNumber = @SQstrPartNumber
AND tblInvVend.strUnit = @SQstrUnit
ORDER BY tblInvVend.strPartNumber
END
GO
/****************************************[DeletePriceListsData]**********************************************/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[DeletePriceListsData] @PricelistName AS NVARCHAR(20)
AS
BEGIN
DELETE
FROM tblPriceData
WHERE strPricelist = @PricelistName;
DELETE
FROM tblPricelists
WHERE strPricelist = @PricelistName;
DELETE
FROM tblPricelistsCat
WHERE strPricelist = @PricelistName;
DELETE
FROM tblPricelistsCatBuyout
WHERE strPricelist = @PricelistName;
DELETE
FROM tblInvPrice
WHERE strPricelist = @PricelistName;
DELETE
FROM tblPriceListsByDate
WHERE strPricelist = @PricelistName;
END
----------------------------------------------------------------------------------------
SET ANSI_NULLS ON
GO
/****************************************[GetInvPriceListsByDate]**********************************************/
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvPriceListsByDate] @Pricelist AS NVARCHAR(20)
,@Search AS NVARCHAR(20) = ''
AS
BEGIN
IF @Search = ''
SELECT pd.uidPriceBasedID AS uidPriceBasedID
,pd.dteStartDate AS StartDate 
,pd.dteFinishDate AS FinishDate
,pd.bitInactive AS Inactive
FROM tblPriceListsByDate pd
INNER JOIN tblPricelists pl ON pd.uidPriceBasedID = pl.uidPriceBasedID
WHERE pl.strPricelist = @Pricelist
ORDER BY dteStartDate
ELSE
SELECT pd.uidPriceBasedID
,pd.dteStartDate
,pd.dteFinishDate
,pd.bitInactive
FROM tblPriceListsByDate pd
INNER JOIN tblPricelists pl ON pd.uidPriceBasedID = pl.uidPriceBasedID
WHERE pl.strPricelist = @Pricelist
AND (
CONVERT(NVARCHAR(20), dteStartDate, 103) LIKE '%' + @Search + '%'
OR CONVERT(NVARCHAR(20), dteFinishDate, 103) LIKE '%' + @Search + '%'
OR CASE 
WHEN bitInactive = 1
THEN 'Inactive'
ELSE 'Active'
END LIKE '%' + @Search + '%'
)
ORDER BY dteStartDate
END
GO

/********************************************[GetInvPriceListsData]****************************************/
SET QUOTED_IDENTIFIER ON
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvPriceListsData] @CatName AS NVARCHAR(20)
,@uidPriceBasedID AS UNIQUEIDENTIFIER
AS
BEGIN
SELECT pl.intPriceListType AS PriceListType
,pl.decPercentage
,pl.intRoundPrices AS RoundPrices
,pl.bitUpdateSellingPrice
,pl.bitOnlySellingPriceIncrease
,pl.bitShowZeroSellingPrice
,pl.uidLinkPricelistId AS LinkPricelistId
FROM tblPricelists pl
INNER JOIN tblPriceData pd ON pl.strPricelist = pd.strPricelist
WHERE pl.strPricelist = @CatName
AND pl.uidPriceBasedID = @uidPriceBasedID
END
GO

--------------------------------------------------------------------------------------
SET ANSI_NULLS ON
GO
/******************************[GetInvPricelistsItemsMasterData]****************************************/
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
Create PROCEDURE [dbo].[GetInvPricelistsItemsMasterData] 
@uidPriceBasedID AS UNIQUEIDENTIFIER
AS
BEGIN
SELECT intType AS Type
,strPriceLevelType AS PriceLevelType
,strPriceLevel AS PriceLevel
,ISNULL(decMarkupPrice, 0) AS MarkupPrice
FROM tblPricelistsItemsMaster
WHERE uidPriceBasedID = @uidPriceBasedID
END
GO

/*******************************************[GetInvPricelistPricing]***************************************/



CREATE PROCEDURE [dbo].[GetInvPricelistPricing] (
	@PriceList AS NVARCHAR(20)
	,@uidPriceBasedID AS UNIQUEIDENTIFIER
	,@TransactionType AS NVARCHAR(20)
	,@IsInvSortDescription AS BIT
	)
AS
BEGIN
	IF @IsInvSortDescription = 0
		SELECT tblInv.strPartNumber
			,tblInv.strDesc
			,tblInv.decLastPPUnit
			,ISNULL(tblInvPrice.decSelling, 0) AS decSelling
			,tblInv.strCategory
			,ISNULL(CASE strConversionType
					WHEN 'Multiply'
						THEN decConversionFactor
					ELSE 1 / decConversionFactor
					END, tblInv.decSellFromStock) AS SellUnit
			,ISNULL(tblInvPrice.decEstLocalCost, 0) AS decEstLocalCost
			,ISNULL(tblInvPrice.decEstImportCost, 0) AS decEstImportCost
			,tblInvPrice.strUnit
			,tblInvPrice.bitStockUnit
			,ISNULL(tblInvUOMs.decPricePercentage, 0) AS decPricePercentage
			,tblInvPrice.bitPromotionalPricing bitPromotionalPricing
			,tblInvPrice.dtePromotionalStartDate
			,tblInvPrice.dtePromotionalEndDate
			,tblInvPrice.decPromotionalPrice AS decPromotionalPrice
			,tblInvPrice.bitCashPricing AS Inactive
			,tblInvPrice.decCashPrice
			,1 AS SellUnit
		FROM tblInv
		LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
			AND tblInvPrice.strPricelist = @PriceList
			AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
		LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
			AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
			AND tblInvUOMs.bitInactive = 0
		WHERE (tblInv.intType <> 5)
			AND (tblInv.bitInactive = 0)
			AND (
				(
					tblInvUOMs.strUseFor = @TransactionType
					OR tblInvUOMs.strUseFor = 'Both'
					)
				OR tblInvPrice.bitStockUnit = 1
				)
		ORDER BY tblInv.strPartNumber
			,tblInvPrice.bitStockUnit DESC
			,tblInvPrice.strUnit
	ELSE
		SELECT tblInv.strPartNumber
			,tblInv.strDesc
			,tblInv.decLastPPUnit
			,ISNULL(tblInvPrice.decSelling, 0) AS decSelling
			,tblInv.strCategory
			,ISNULL(CASE strConversionType
					WHEN 'Multiply'
						THEN decConversionFactor
					ELSE 1 / decConversionFactor
					END, tblInv.decSellFromStock) AS SellUnit
			,ISNULL(tblInvPrice.decEstLocalCost, 0) AS decEstLocalCost
			,ISNULL(tblInvPrice.decEstImportCost, 0) AS decEstImportCost
			,tblInvPrice.strUnit
			,tblInvPrice.bitStockUnit
			,ISNULL(tblInvUOMs.decPricePercentage, 0) AS decPricePercentage
			,1 AS SellUnit
		FROM tblInv
		LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
			AND tblInvPrice.strPricelist = @PriceList
			AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
		LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
			AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
			AND tblInvUOMs.bitInactive = 0
		WHERE (tblInv.intType <> 5)
			AND (tblInv.bitInactive = 0)
			AND (
				(
					tblInvUOMs.strUseFor = @TransactionType
					OR tblInvUOMs.strUseFor = 'Both'
					)
				OR tblInvPrice.bitStockUnit = 1
				)
		ORDER BY tblInv.strDesc
			,tblInvPrice.bitStockUnit DESC
			,tblInvPrice.strUnit
END
GO

--------------------------------------------------------------------------------------------
SET ANSI_NULLS ON
GO
/******************************************[GetInvPricelistCategory]*********************************************/
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
Create PROCEDURE [dbo].[GetInvPricelistCategory] @PriceList AS NVARCHAR(20)
,@uidPriceBasedID AS UNIQUEIDENTIFIER
AS
BEGIN
SELECT tblPricelistsCat.strCategory
FROM tblPricelistsCat
INNER JOIN tblInvCat ON tblPricelistsCat.strCategory = tblInvCat.strCategory
INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblPricelistsCat.uidPriceBasedID
WHERE tblInvCat.bitInactive = 0
AND tblPriceListsByDate.strPricelist = @PriceList
AND tblPricelistsCat.uidPriceBasedID = @uidPriceBasedID
ORDER BY tblPricelistsCat.strCategory
END
GO
------------------------------------------------------------------------------------------------
SET ANSI_NULLS ON
GO
/*******************************************[GetInvPricelistCatBuyOut]*************************************/
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvPricelistCatBuyOut] @PriceList AS NVARCHAR(20)
,@uidPriceBasedID AS UNIQUEIDENTIFIER
AS
BEGIN
SELECT tblPricelistsCatBuyout.strCategory
,tblInvCat.strDesc
,tblPricelistsCatBuyout.decBuyoutMarkup
FROM tblPricelistsCatBuyout
INNER JOIN tblInvCat ON tblPricelistsCatBuyout.strCategory = tblInvCat.strCategory
INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblPricelistsCatBuyout.uidPriceBasedID
WHERE tblInvCat.bitInactive = 0
AND tblPriceListsByDate.strPricelist = @PriceList
AND tblPricelistsCatBuyout.uidPriceBasedID = @uidPriceBasedID
ORDER BY tblPricelistsCatBuyout.strCategory
END
GO
-----------------------------------------------------------------------------------------------
SET ANSI_NULLS ON
GO
/***********************************************[GetInvPricelistCatData]**************************************************/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
create procedure [dbo].[GetInvPricelistCatData]
AS
BEGIN
SELECT tblInvCat.strCategory
,tblInvCat.strDesc
FROM tblInvCat
WHERE bitInactive = 0
ORDER BY strCategory
END
GO
/**********************************************[GetInvSpecialPricing]***********************************************/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvSpecialPricing](
@PriceList AS NVARCHAR(20)
,@uidPriceBasedID AS UNIQUEIDENTIFIER
,@IsInvSortDescription bit
)
AS
BEGIN
	IF(@IsInvSortDescription = 0)
	BEGIN
		SELECT tblInv.strPartNumber
		,tblInv.strDesc
		,tblInvPrice.decSelling
		,tblInvPrice.bitPromotionalPricing bitPromotionalPricing
		,tblInvPrice.dtePromotionalStartDate
		,tblInvPrice.dtePromotionalEndDate
		,tblInvPrice.decPromotionalPrice AS decPromotionalPrice
		,tblInvPrice.strUnit
		FROM tblInv
		INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
		LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
		AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
		AND tblInvUOMs.bitInactive = 0
		WHERE (tblInv.intType <> 5)
		AND (tblInv.bitInactive = 0)
		AND (tblInvPrice.strPricelist = @PriceList)
		AND (tblInvPrice.uidPriceBasedID = @uidPriceBasedID)
		AND (
		(
		tblInvUOMs.strUseFor = 'Sales'
		OR tblInvUOMs.strUseFor = 'Both'
		)
		OR tblInvPrice.bitStockUnit = 1
		)
		ORDER BY tblInv.strPartNumber
	END
	ELSE
	BEGIN
		SELECT tblInv.strPartNumber
		,tblInv.strDesc
		,tblInvPrice.decSelling
		,tblInvPrice.bitPromotionalPricing bitPromotionalPricing
		,tblInvPrice.dtePromotionalStartDate
		,tblInvPrice.dtePromotionalEndDate
		,tblInvPrice.decPromotionalPrice AS decPromotionalPrice
		,tblInvPrice.strUnit
		FROM tblInv
		INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
		LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
		AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
		AND tblInvUOMs.bitInactive = 0
		WHERE (tblInv.intType <> 5)
		AND (tblInv.bitInactive = 0)
		AND (tblInvPrice.strPricelist = @PriceList)
		AND (tblInvPrice.uidPriceBasedID = @uidPriceBasedID)
		AND (
		(
		tblInvUOMs.strUseFor = 'Sales'
		OR tblInvUOMs.strUseFor = 'Both'
		)
		OR tblInvPrice.bitStockUnit = 1
		)
		ORDER BY tblInv.strDesc
	END
END
GO
/***********************************[GetInvPriceListCashOnTender]**************************/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvPriceListCashOnTender](
@PriceList AS NVARCHAR(20)
,@uidPriceBasedID AS UNIQUEIDENTIFIER
,@IsInvSortDescription bit
)
AS
BEGIN
	IF(@IsInvSortDescription = 0)
	BEGIN
		SELECT tblInv.strPartNumber
		,tblInv.strDesc
		,tblInvPrice.decSelling
		,tblInvPrice.bitCashPricing
		,tblInvPrice.decCashPrice
		,tblInvPrice.strUnit
		FROM tblInv
		INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
		LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
		AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
		AND tblInvUOMs.bitInactive = 0
		WHERE (tblInv.intType <> 5)
		AND (tblInv.bitInactive = 0)
		AND (tblInvPrice.strPricelist = @PriceList)
		AND (tblInvPrice.uidPriceBasedID = @uidPriceBasedID)
		AND (
		(
		tblInvUOMs.strUseFor = 'Sales'
		OR tblInvUOMs.strUseFor = 'Both'
		)
		OR tblInvPrice.bitStockUnit = 1
		)
		ORDER BY tblInv.strPartNumber
	END
	ELSE
	BEGIN
		SELECT tblInv.strPartNumber
		,tblInv.strDesc
		,tblInvPrice.decSelling
		,tblInvPrice.bitCashPricing
		,tblInvPrice.decCashPrice
		,tblInvPrice.strUnit
		FROM tblInv
		INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
		LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
		AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
		AND tblInvUOMs.bitInactive = 0
		WHERE (tblInv.intType <> 5)
		AND (tblInv.bitInactive = 0)
		AND (tblInvPrice.strPricelist = @PriceList)
		AND (tblInvPrice.uidPriceBasedID = @uidPriceBasedID)
		AND (
		(
		tblInvUOMs.strUseFor = 'Sales'
		OR tblInvUOMs.strUseFor = 'Both'
		)
		OR tblInvPrice.bitStockUnit = 1
		)
		ORDER BY tblInv.strDesc
	END
END
GO

/****************************************[GetDefaultInvPriceListPricing]********************************************/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetDefaultInvPriceListPricing] @PriceList AS NVARCHAR(20)  
,@TransactionType AS NVARCHAR(20)  
,@IsInvSortDescription AS BIT  
AS  
BEGIN  
  IF @IsInvSortDescription = 0
    SELECT DISTINCT tblInv.strPartNumber
      ,tblInv.strDesc
      ,tblInv.strCategory
      ,ISNULL(CASE strConversionType
          WHEN 'Multiply'
            THEN decConversionFactor
          ELSE 1 / decConversionFactor
          END, decSellFromStock) as decSellFromStock
      ,tblInv.decLastPPUnit
	,tblInvPrice.strUnit as strUnit
      ,0.00 AS decPricePercentage
      ,0.00 as decSelling
      ,cast(0 as bit) AS bitPromotionalPricing
      ,null as dtePromotionalStartDate
      ,null as dtePromotionalEndDate
      ,null as decPromotionalPrice
      ,cast((case when tblInvUOMs.strFromUnit is null then 1 else 
        (case when tblInvUOMs.strFromUnit = tblInv.strStockUnit then 1 else 0 end)
        end) as bit) as bitStockUnit
      ,cast(0 as bit) as bitCashPricing
      ,null as decCashPrice
    FROM tblInv
    INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
	AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
	AND tblInvUOMs.bitInactive = 0
WHERE (tblInv.intType <> 5)
	AND (tblInv.bitInactive = 0)
	AND (tblInvPrice.strPricelist = @PriceList)
	AND (
		(
			tblInvUOMs.strUseFor = @TransactionType
			OR tblInvUOMs.strUseFor = 'Both'
			)
		OR tblInvPrice.bitStockUnit = 1
		)ORDER BY tblInv.strPartNumber
  ELSE
    SELECT DISTINCT tblInv.strPartNumber
      ,tblInv.strDesc
      ,tblInv.strCategory
      ,ISNULL(CASE strConversionType
          WHEN 'Multiply'
            THEN decConversionFactor
          ELSE 1 / decConversionFactor
          END, decSellFromStock) as decSellFromStock
      ,tblInv.decLastPPUnit
 , tblInvPrice.strUnit as strUnit
      ,0.00 AS decPricePercentage
      ,0.00 as decSelling
      ,cast(0 as bit) AS bitPromotionalPricing
      ,null as dtePromotionalStartDate
      ,null as dtePromotionalEndDate
      ,null as decPromotionalPrice
      ,cast((case when tblInvUOMs.strFromUnit is null then 1 else 
        (case when tblInvUOMs.strFromUnit = tblInv.strStockUnit then 1 else 0  end)
        end) as bit) as bitStockUnit
      ,cast(0 as bit) as bitCashPricing
      ,null as decCashPrice
    FROM tblInv
   INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
	AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
	AND tblInvUOMs.bitInactive = 0
WHERE (tblInv.intType <> 5)
	AND (tblInv.bitInactive = 0)
	AND (tblInvPrice.strPricelist = @PriceList)
	AND (
		(
			tblInvUOMs.strUseFor = @TransactionType
			OR tblInvUOMs.strUseFor = 'Both'
			)
		OR tblInvPrice.bitStockUnit = 1
		)
    ORDER BY tblInv.strDesc
END
GO

/**************************************************[GetDefaultInvSpecialPricing]******************************************************/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetDefaultInvSpecialPricing] @PriceList AS NVARCHAR(20)
,@IsInvSortDescription AS BIT
AS
BEGIN
IF @IsInvSortDescription = 0
SELECT tblInv.strPartNumber
,tblInv.strDesc
,tblInvPrice.decSelling
,tblInvPrice.bitPromotionalPricing bitPromotionalPricing
,tblInvPrice.dtePromotionalStartDate
,tblInvPrice.dtePromotionalEndDate
,tblInvPrice.decPromotionalPrice AS decPromotionalPrice
,tblInvPrice.bitStockUnit
,tblInvPrice.strUnit
FROM tblInv
INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
AND tblInvUOMs.bitInactive = 0
WHERE (tblInv.intType <> 5)
AND (tblInv.bitInactive = 0)
AND (tblInvPrice.strPricelist = @PriceList)
AND (
(
tblInvUOMs.strUseFor = 'Sales'
OR tblInvUOMs.strUseFor = 'Both'
)
OR tblInvPrice.bitStockUnit = 1
)
ORDER BY tblInv.strPartNumber
,tblInvPrice.bitStockUnit DESC
,tblInvPrice.strUnit
ELSE
SELECT tblInv.strPartNumber
,tblInv.strDesc
,tblInvPrice.decSelling
,tblInvPrice.bitPromotionalPricing bitPromotionalPricing
,tblInvPrice.dtePromotionalStartDate
,tblInvPrice.dtePromotionalEndDate
,tblInvPrice.decPromotionalPrice AS decPromotionalPrice
,tblInvPrice.bitStockUnit
,tblInvPrice.strUnit
FROM tblInv
INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
AND tblInvUOMs.bitInactive = 0
WHERE (tblInv.intType <> 5)
AND (tblInv.bitInactive = 0)
AND (tblInvPrice.strPricelist = @PriceList)
AND (
(
tblInvUOMs.strUseFor = 'Sales'
OR tblInvUOMs.strUseFor = 'Both'
)
OR tblInvPrice.bitStockUnit = 1
)
ORDER BY tblInv.strDesc
,tblInvPrice.bitStockUnit DESC
,tblInvPrice.strUnit
END
GO
/********************************************[GetDefaultInvCashOnTender]********************************************************/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetDefaultInvCashOnTender] @PriceList AS NVARCHAR(20)
,@IsInvSortDescription AS BIT
AS
BEGIN
IF @IsInvSortDescription = 0
SELECT tblInv.strPartNumber
,tblInv.strDesc
,tblInvPrice.decSelling
,tblInvPrice.bitCashPricing
,tblInvPrice.decCashPrice
,tblInvPrice.bitStockUnit
,tblInvPrice.strUnit
FROM tblInv
INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
AND tblInvUOMs.bitInactive = 0
WHERE (tblInv.intType <> 5)
AND (tblInv.bitInactive = 0)
AND (tblInvPrice.strPricelist = @PriceList)
AND (
(
tblInvUOMs.strUseFor = 'Sales'
OR tblInvUOMs.strUseFor = 'Both'
)
OR tblInvPrice.bitStockUnit = 1
)
ORDER BY tblInv.strPartNumber
,tblInvPrice.bitStockUnit DESC
,tblInvPrice.strUnit
ELSE
SELECT tblInv.strPartNumber
,tblInv.strDesc
,tblInvPrice.decSelling
,tblInvPrice.bitCashPricing
,tblInvPrice.decCashPrice
,tblInvPrice.bitStockUnit
,tblInvPrice.strUnit
FROM tblInv
INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
AND tblInvUOMs.bitInactive = 0
WHERE (tblInv.intType <> 5)
AND (tblInv.bitInactive = 0)
AND (tblInvPrice.strPricelist = @PriceList)
AND (
(
tblInvUOMs.strUseFor = 'Sales'
OR tblInvUOMs.strUseFor = 'Both'
)
OR tblInvPrice.bitStockUnit = 1
)
ORDER BY tblInv.strDesc
,tblInvPrice.bitStockUnit DESC
,tblInvPrice.strUnit
END
GO
/*************************************************[GetMarkupByCategoryData]******************************************************/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetMarkupByCategoryData] @PriceList AS NVARCHAR(20) = null,
@uidPriceBasedID AS UNIQUEIDENTIFIER = null,
@IsWithMarkUpByCat AS BIT
AS
BEGIN
IF @IsWithMarkUpByCat = 0
SELECT tblInvCat.strCategory
,tblInvCat.strDesc
FROM tblInvCat
WHERE bitInactive = 0
ORDER BY strCategory
ELSE
SELECT tblPricelistsCat.strCategory
,tblInvCat.strDesc
,tblPricelistsCat.decMarkup AS Markup
FROM tblPricelistsCat
INNER JOIN tblInvCat ON tblPricelistsCat.strCategory = tblInvCat.strCategory
INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblPricelistsCat.uidPriceBasedID
WHERE tblInvCat.bitInactive = 0
AND tblPriceListsByDate.strPricelist = @PriceList
AND tblPricelistsCat.uidPriceBasedID = @uidPriceBasedID
ORDER BY tblPricelistsCat.strCategory
END
GO

/*************************************************[GetInvDefaultItemData]*****************************************************/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvDefaultItemData] (
	@PriceList NVARCHAR(20)
	,@IsInvSortDescription BIT
	,@uidPriceBasedID UNIQUEIDENTIFIER = NULL
	)
AS
BEGIN
	IF EXISTS (
			SELECT 1
			FROM tblInvPrice
			WHERE strPricelist = @PriceList
			)
	BEGIN
		SELECT tblInv.strPartNumber AS strPartNumber
			,tblInv.strDesc AS strDesc
			,
			--ISNULL(tblInvPrice.strUnit, tblInv.strStockUnit) AS strUnit
			ISNULL(CASE 
					WHEN tblInvPrice.strUnit = ''
						THEN NULL
					ELSE tblInvPrice.strUnit
					END, tblInv.strStockUnit) AS strUnit
		FROM tblInv
		LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
		LEFT JOIN tblPricelistsItemsMaster ON tblInvPrice.uidPriceBasedID = tblPricelistsItemsMaster.uidPriceBasedID
		WHERE tblInvPrice.strPricelist = @PriceList
			AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
			AND tblInv.intType <> 5
		ORDER BY CASE 
				WHEN @IsInvSortDescription = 1
					THEN tblInv.strDesc
				ELSE tblInv.strPartNumber
				END
	END
	ELSE
	BEGIN
		SELECT DISTINCT tblInv.strPartNumber AS strPartNumber
			,tblInv.strDesc AS strDesc
			,
			--ISNULL(tblInvPrice.strUnit, tblInv.strStockUnit) AS strUnit
			ISNULL(CASE 
					WHEN tblInvPrice.strUnit = ''
						THEN NULL
					ELSE tblInvPrice.strUnit
					END, tblInv.strStockUnit) AS strUnit
		FROM tblInv
		LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
		LEFT JOIN tblPricelistsItemsMaster ON tblInvPrice.uidPriceBasedID = tblPricelistsItemsMaster.uidPriceBasedID
		WHERE tblInv.intType <> 5
		ORDER BY tblInv.strPartNumber
	END
END
GO

/***************************************************[GetInvPricelistByItemSetup]***************************************************/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvPricelistByItemSetup] @PriceList AS NVARCHAR(20)
,@uidPriceBaseId UNIQUEIDENTIFIER
AS
BEGIN
SELECT intPricelistMasterId AS PricelistMasterId
,intType AS Type
FROM tblPricelistsItemsMaster
WHERE strPricelist = @Pricelist
AND uidPriceBasedID = @uidPriceBaseId
END
GO
/*******************************************[Added Column In tblPricelistsItems]***********************************************************/
/**************************************************[GetInvPricelistLinkByItems]****************************************************/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvPricelistLinkByItems](
@PricelistMasterId AS NVARCHAR(20)
,@uidPriceBaseId UNIQUEIDENTIFIER
,@IsNotAllItemsFixedPer BIT
,@IsInvSortDescription BIT
)
AS
BEGIN
IF(@IsInvSortDescription = 0)
BEGIN
	IF(@IsNotAllItemsFixedPer = 1)
	BEGIN
		SELECT tblInv.strPartNumber
		,tblInv.strDesc
		,(
		CASE 
		WHEN ISNULL(tblPricelistsItems.decMarkupPrice, 0) = 0
		THEN CONVERT(BIT, 0)
		ELSE CONVERT(BIT, 1)
		END
		) AS IsMarkup
		,ISNULL(tblPricelistsItems.decMarkupPrice, 0) AS Markup
		,ISNULL(tblPricelistsItems.strPriceLevel, '') AS PriceLevel
		,ISNULL(tblInvPrice.strUnit, tblInv.strStockUnit) AS strUnit
		FROM tblInv
		LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
		LEFT JOIN tblPricelistsItems ON tblInvPrice.strPartNumber = tblPricelistsItems.strPartNumber
		AND tblPricelistsItems.intPricelistMasterId = @PricelistMasterId
		AND tblPricelistsItems.strUnit = tblInvPrice.strUnit
		WHERE tblInvPrice.uidPriceBasedID = @uidPriceBaseId
		ORDER BY tblInv.strPartNumber
	END
	ELSE
	BEGIN
		SELECT tblInv.strPartNumber
		,tblInv.strDesc
		,CONVERT(BIT, 1) AS IsMarkup
		,tblPricelistsItemsMaster.decMarkupPrice AS Markup
		,tblPricelistsItemsMaster.strPriceLevel AS PriceLevel
		,ISNULL(tblInvPrice.strUnit, tblInv.strStockUnit) AS strUnit
		FROM tblInv
		LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
		INNER JOIN tblPricelistsItemsMaster ON tblInvPrice.uidPriceBasedID = tblPricelistsItemsMaster.uidPriceBasedID
		WHERE tblInvPrice.uidPriceBasedID = @uidPriceBaseId
		ORDER BY tblInv.strPartNumber
	END
END
ELSE
BEGIN
	IF(@IsNotAllItemsFixedPer = 1)
	BEGIN
		SELECT tblInv.strPartNumber
		,tblInv.strDesc
		,(
		CASE 
		WHEN ISNULL(tblPricelistsItems.decMarkupPrice, 0) = 0
		THEN CONVERT(BIT, 0)
		ELSE CONVERT(BIT, 1)
		END
		) AS IsMarkup
		,ISNULL(tblPricelistsItems.decMarkupPrice, 0) AS Markup
		,ISNULL(tblPricelistsItems.strPriceLevel, '') AS PriceLevel
		,ISNULL(tblInvPrice.strUnit, tblInv.strStockUnit) AS strUnit
		FROM tblInv
		LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
		LEFT JOIN tblPricelistsItems ON tblInvPrice.strPartNumber = tblPricelistsItems.strPartNumber
		AND tblPricelistsItems.intPricelistMasterId = @PricelistMasterId
		AND tblPricelistsItems.strUnit = tblInvPrice.strUnit
		WHERE tblInvPrice.uidPriceBasedID = @uidPriceBaseId
		ORDER BY tblInv.strDesc
	END
	ELSE
	BEGIN
		SELECT tblInv.strPartNumber
		,tblInv.strDesc
		,CONVERT(BIT, 1) AS IsMarkup
		,tblPricelistsItemsMaster.decMarkupPrice AS Markup
		,tblPricelistsItemsMaster.strPriceLevel AS PriceLevel
		,ISNULL(tblInvPrice.strUnit, tblInv.strStockUnit) AS strUnit
		FROM tblInv
		LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
		INNER JOIN tblPricelistsItemsMaster ON tblInvPrice.uidPriceBasedID = tblPricelistsItemsMaster.uidPriceBasedID
		WHERE tblInvPrice.uidPriceBasedID = @uidPriceBaseId
		ORDER BY tblInv.strDesc
	END
END
END
GO
----------------------------------------------------------------------------------------------------
SET ANSI_NULLS ON
GO
/**************************************************[GetInvPricelistLinkByCategory]**********************************************/
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvPricelistLinkByCategory] @Pricelist AS NVARCHAR(20)
,@uidPriceBaseId AS UNIQUEIDENTIFIER
AS
BEGIN
SELECT tblInvCat.strCategory
,tblInvCat.strDesc
,(
CASE 
WHEN tblPricelistsLinkCategory.decMarkupPrice = 0
THEN CONVERT(BIT, 0)
ELSE CONVERT(BIT, 1)
END
) AS IsMarkup
,(
CASE 
WHEN tblPricelistsLinkCategory.decMarkupPrice = 0
THEN NULL
ELSE tblPricelistsLinkCategory.strPriceLevel
END
) AS PriceLevel
,tblPricelistsLinkCategory.decMarkupPrice AS Markup
FROM tblPricelistsLinkCategory
INNER JOIN tblInvCat ON tblPricelistsLinkCategory.strCategory = tblInvCat.strCategory
INNER JOIN tblPricelistsItemsMaster ON tblPricelistsLinkCategory.intPricelistMasterId = tblPricelistsItemsMaster.intPricelistMasterId
WHERE tblPricelistsItemsMaster.uidPriceBasedID = @uidPriceBaseId
AND tblPricelistsItemsMaster.strPricelist = @Pricelist
END
GO
----------------------------------------------------------------------------------------------
SET ANSI_NULLS ON
GO
/********************************************[GetInvBasePricelistData]********************************************************/
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvBasePricelistData] @Pricelist AS NVARCHAR(20)  
,@StartDate AS DATETIME  
,@EndDate AS DATETIME  
AS  
BEGIN  
SELECT tblPriceListsByDate.uidPriceBasedID  as uidPriceBaseId
,tblPriceListsByDate.uidPriceBasedID
,tblPriceListsByDate.strPricelist  
,tblPriceListsByDate.dteStartDate AS dtStartDate  
,tblPriceListsByDate.dteFinishDate AS dtEndDate  
FROM tblPriceData  
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist  
WHERE tblPriceListsByDate.dteStartDate >= @StartDate  
AND tblPriceListsByDate.dteFinishDate <= @EndDate  
AND tblPriceData.strPricelist != @Pricelist  
AND tblPriceData.bitInactive = 0  
END  
GO

/*************************************************[GetInvBasePricelist]********************************************************************/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvBasePricelist] @uidBasePricelistId AS UNIQUEIDENTIFIER
AS
BEGIN
SELECT strPricelist
FROM tblPriceListsByDate
WHERE uidPriceBasedID = @uidBasePricelistId
END
GO
/**********************************************[GetPriceListByItem]************************************************/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetPriceListByItem] (
	@Pricelist AS NVARCHAR(20)
	,@IsInvSortDescription BIT
	)
AS
BEGIN
	IF (@IsInvSortDescription = 0)
	BEGIN
		SELECT tblInv.strPartNumber
			,tblInv.strDesc
			,CONVERT(BIT, 0) AS IsMarkup
			,CONVERT(MONEY, 0) AS Markup
			,CONVERT(NVARCHAR(20), '') AS PriceLevel
			,tblInv.strStockUnit AS strUnit
		FROM tblInv
		--LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber  
		--LEFT JOIN tblPricelistsItemsMaster ON tblInvPrice.uidPriceBasedID = tblPricelistsItemsMaster.uidPriceBasedID  
		WHERE intType <> 5
		ORDER BY tblInv.strPartNumber
	END
	ELSE
	BEGIN
		SELECT tblInv.strPartNumber
			,tblInv.strDesc
			,CONVERT(BIT, 0) AS IsMarkup
			,CONVERT(MONEY, 0) AS Markup
			,CONVERT(NVARCHAR(20), '') AS PriceLevel
			,tblInv.strStockUnit AS strUnit
		FROM tblInv
		--LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber  
		--LEFT JOIN tblPricelistsItemsMaster ON tblInvPrice.uidPriceBasedID = tblPricelistsItemsMaster.uidPriceBasedID  
		WHERE intType <> 5
		ORDER BY tblInv.strDesc
	END
END
GO

/*********************************************[GetInvPricelistByItemData]******************************************/

CREATE PROCEDURE [dbo].[GetInvPricelistByItemData](
@PricelistMasterId AS NVARCHAR(20)
,@uidPriceBaseId UNIQUEIDENTIFIER
,@IsNotAllItemsFixedPer BIT
,@IsInvSortDescription BIT
)
AS
BEGIN
IF(@IsInvSortDescription = 0)
BEGIN
	IF(@IsNotAllItemsFixedPer = 1)
	BEGIN
		SELECT tblInv.strPartNumber
		,tblInv.strDesc
		,(
		CASE 
		WHEN ISNULL(tblPricelistsItems.decMarkupPrice, 0) = 0
		THEN CONVERT(BIT, 0)
		ELSE CONVERT(BIT, 1)
		END
		) AS IsMarkup
		,ISNULL(tblPricelistsItems.decMarkupPrice, 0) AS Markup
		,ISNULL(tblPricelistsItems.strPriceLevel, '') AS PriceLevel
		,ISNULL(tblInvPrice.strUnit, tblInv.strStockUnit) AS strUnit
		FROM tblInv
		LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
		LEFT JOIN tblPricelistsItems ON tblInvPrice.strPartNumber = tblPricelistsItems.strPartNumber
		AND tblPricelistsItems.intPricelistMasterId = @PricelistMasterId
		AND tblPricelistsItems.strUnit = tblInvPrice.strUnit
		WHERE tblInvPrice.uidPriceBasedID = @uidPriceBaseId
		ORDER BY tblInv.strPartNumber
	END
	ELSE
	BEGIN
		SELECT tblInv.strPartNumber
		,tblInv.strDesc
		,CONVERT(BIT, 1) AS IsMarkup
		,tblPricelistsItemsMaster.decMarkupPrice AS Markup
		,tblPricelistsItemsMaster.strPriceLevel AS PriceLevel
		,ISNULL(tblInvPrice.strUnit, tblInv.strStockUnit) AS strUnit
		FROM tblInv
		LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
		INNER JOIN tblPricelistsItemsMaster ON tblInvPrice.uidPriceBasedID = tblPricelistsItemsMaster.uidPriceBasedID
		WHERE tblInvPrice.uidPriceBasedID = @uidPriceBaseId
		ORDER BY tblInv.strPartNumber
	END
END
ELSE
BEGIN
	IF(@IsNotAllItemsFixedPer = 1)
	BEGIN
		SELECT tblInv.strPartNumber
		,tblInv.strDesc
		,(
		CASE 
		WHEN ISNULL(tblPricelistsItems.decMarkupPrice, 0) = 0
		THEN CONVERT(BIT, 0)
		ELSE CONVERT(BIT, 1)
		END
		) AS IsMarkup
		,ISNULL(tblPricelistsItems.decMarkupPrice, 0) AS Markup
		,ISNULL(tblPricelistsItems.strPriceLevel, '') AS PriceLevel
		,ISNULL(tblInvPrice.strUnit, tblInv.strStockUnit) AS strUnit
		FROM tblInv
		LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
		LEFT JOIN tblPricelistsItems ON tblInvPrice.strPartNumber = tblPricelistsItems.strPartNumber
		AND tblPricelistsItems.intPricelistMasterId = @PricelistMasterId
		AND tblPricelistsItems.strUnit = tblInvPrice.strUnit
		WHERE tblInvPrice.uidPriceBasedID = @uidPriceBaseId
		ORDER BY tblInv.strDesc
	END
	ELSE
	BEGIN
		SELECT tblInv.strPartNumber
		,tblInv.strDesc
		,CONVERT(BIT, 1) AS IsMarkup
		,tblPricelistsItemsMaster.decMarkupPrice AS Markup
		,tblPricelistsItemsMaster.strPriceLevel AS PriceLevel
		,ISNULL(tblInvPrice.strUnit, tblInv.strStockUnit) AS strUnit
		FROM tblInv
		LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
		INNER JOIN tblPricelistsItemsMaster ON tblInvPrice.uidPriceBasedID = tblPricelistsItemsMaster.uidPriceBasedID
		WHERE tblInvPrice.uidPriceBasedID = @uidPriceBaseId
		ORDER BY tblInv.strDesc
	END
END
END
GO
------------------------------------------------------------------------------------------------

CREATE PROCEDURE [dbo].[DeletePriceListData] @uidPriceBasedID UNIQUEIDENTIFIER
AS
BEGIN
DELETE
FROM tblPricelists
WHERE uidPriceBasedID = @uidPriceBasedID
DELETE
FROM tblPricelistsCat
WHERE uidPriceBasedID = @uidPriceBasedID
DELETE
FROM tblPricelistsCatBuyout
WHERE uidPriceBasedID = @uidPriceBasedID
DELETE
FROM tblInvPrice
WHERE uidPriceBasedID = @uidPriceBasedID
DELETE
FROM tblPriceListsByDate
WHERE uidPriceBasedID = @uidPriceBasedID
END
GO
/******************************************[InsertInvPriceData]**************************************************************/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvPriceData] @Pricelist AS NVARCHAR(20)  
,@Description AS NVARCHAR(20)  
,@InactiveAll AS BIT  
,@PriceIncl AS BIT  
,@TaxCode AS NVARCHAR(200)  
AS  
BEGIN  
INSERT INTO tblPriceData  
VALUES (  
@Pricelist  
,@Description  
,@InactiveAll  
,@PriceIncl  
,@TaxCode  
,GetDate()  
)  
END  
GO
--------------------------------------------------------------------------------------------------
SET ANSI_NULLS ON
GO
/***********************************[InvPriceListInsertUpdateQuery]*************************************************/
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InvPriceListInsertUpdateQuery] @IsInsert AS BIT
,@Pricelist AS NVARCHAR(20)
,@Description AS NVARCHAR(20)
,@InactiveAll AS BIT
,@PriceIncl AS BIT
,@TaxCode AS NVARCHAR
,@uidPriceBasedID AS UNIQUEIDENTIFIER
,@FinishDate AS DATETIME
,@StartDate AS DATETIME
,@Inactive AS BIT
,@IsNotLinkToOtherPriceListByCategoryOrItem AS BIT
,@PricelistType AS INT
,@Percentage AS DECIMAL
,@RoundPrices AS INT
,@UpdateSellingPrice AS BIT
,@OnlySellingPriceIncrease AS BIT
,@ShowZeroSellingPrice AS BIT
,@uidLinkPricelistId AS UNIQUEIDENTIFIER
,@OldPricelist AS NVARCHAR(20)
,@PartNumber AS NVARCHAR(20)
,@Selling AS DECIMAL
,@EstLocalCost AS DECIMAL
,@EstImportCost AS DECIMAL
,@PromotionalPricing AS BIT
,@PromotionalStartDate AS DATETIME
,@PromotionalEndDate AS DATETIME
,@PromotionalPrice AS DECIMAL
,@CashPricing AS BIT
,@CashPrice AS DECIMAL
,@Unit AS NVARCHAR(20)
,@StockUnit AS BIT
,@IsPromotionalDataAvailable AS BIT
,@IsCashOnTenderDataAvailable AS BIT
AS
BEGIN
IF (@IsInsert = 1)
BEGIN
INSERT INTO tblPriceListsByDate
VALUES (
@uidPriceBasedID
,@Pricelist
,@StartDate
,@FinishDate
,@Inactive
,GetDate()
)
BEGIN
IF @IsNotLinkToOtherPriceListByCategoryOrItem = 1
INSERT INTO tblPricelists (
uidPriceBasedID
,strPricelist
,intPriceListType
,decPercentage
,intRoundPrices
,bitUpdateSellingPrice
,bitOnlySellingPriceIncrease
,bitShowZeroSellingPrice
,dteRowUpdated
)
VALUES (
@uidPriceBasedID
,@Pricelist
,@PricelistType
,@Percentage
,@RoundPrices
,@UpdateSellingPrice
,@OnlySellingPriceIncrease
,@ShowZeroSellingPrice
,GetDate()
)
ELSE
INSERT INTO tblPricelists (
uidPriceBasedID
,strPricelist
,intPriceListType
,decPercentage
,intRoundPrices
,bitUpdateSellingPrice
,bitOnlySellingPriceIncrease
,bitShowZeroSellingPrice
,dteRowUpdated
,uidLinkPricelistId
)
VALUES (
@uidPriceBasedID
,@Pricelist
,@PricelistType
,@Percentage
,@RoundPrices
,@UpdateSellingPrice
,@OnlySellingPriceIncrease
,@ShowZeroSellingPrice
,GetDate()
,@uidLinkPricelistId
)
END
INSERT INTO tblInvPrice
VALUES (
@uidPriceBasedID
,@PartNumber
,@PriceList
,@Selling
,@EstLocalCost
,@EstImportCost
,@PromotionalPricing
,@PromotionalStartDate
,@PromotionalEndDate
,@PromotionalPrice
,GetDate()
,@CashPricing
,@CashPrice
,@Unit
,@StockUnit
);
END
ELSE
BEGIN
UPDATE tblPriceData
SET strPricelist = @Pricelist
,strDesc = @Description
,bitInactive = @InactiveAll
,bitPriceIncl = @PriceIncl
,strTaxCode = @TaxCode
WHERE strPricelist = @OldPricelist;
UPDATE tblPriceListsByDate
SET strPricelist = @Pricelist
,dteStartDate = @StartDate
,dteFinishDate = @FinishDate
,bitInactive = @Inactive
WHERE strPricelist = @OldPricelist
AND uidPriceBasedID = @uidPriceBasedID
IF @IsNotLinkToOtherPriceListByCategoryOrItem = 1
UPDATE tblPricelists
SET strPricelist = @Pricelist
,intPricelistType = @PricelistType
,decPercentage = @Percentage
,intRoundPrices = @RoundPrices
,bitUpdateSellingPrice = @UpdateSellingPrice
,bitOnlySellingPriceIncrease = @OnlySellingPriceIncrease
,bitShowZeroSellingPrice = @ShowZeroSellingPrice
WHERE strPricelist = @OldPricelist
AND uidPriceBasedID = @uidPriceBasedID
ELSE
UPDATE tblPricelists
SET strPricelist = @Pricelist
,intPricelistType = @PricelistType
,decPercentage = @Percentage
,intRoundPrices = @RoundPrices
,bitUpdateSellingPrice = @UpdateSellingPrice
,bitOnlySellingPriceIncrease = @OnlySellingPriceIncrease
,bitShowZeroSellingPrice = @ShowZeroSellingPrice
,uidLinkPricelistId = @uidLinkPricelistId
WHERE strPricelist = @OldPricelist
AND uidPriceBasedID = @uidPriceBasedID
IF (
@IsPromotionalDataAvailable = 1
OR @IsCashOnTenderDataAvailable = 1
)
BEGIN
IF (
@IsPromotionalDataAvailable = 1
AND @IsCashOnTenderDataAvailable = 1
)
UPDATE tblInvPrice
SET decSelling = @Selling
,decEstLocalCost = @EstLocalCost
,decEstImportCost = @EstImportCost
,strPricelist = @Pricelist
,bitPromotionalPricing = @PromotionalPricing
,dtePromotionalStartDate = @PromotionalStartDate
,dtePromotionalEndDate = @PromotionalEndDate
,decPromotionalPrice = @PromotionalPrice
,bitCashPricing = @CashPricing
,decCashPrice = @CashPrice
WHERE strPartNumber = @PartNumber
AND strPricelist = @OldPricelist
AND uidPriceBasedID = @uidPriceBasedID
AND strUnit = @Unit
ELSE IF (@IsPromotionalDataAvailable = 1)
UPDATE tblInvPrice
SET decSelling = @Selling
,decEstLocalCost = @EstLocalCost
,decEstImportCost = @EstImportCost
,strPricelist = @Pricelist
,bitPromotionalPricing = @PromotionalPricing
,dtePromotionalStartDate = @PromotionalStartDate
,dtePromotionalEndDate = @PromotionalEndDate
,decPromotionalPrice = @PromotionalPrice
WHERE strPartNumber = @PartNumber
AND strPricelist = @OldPricelist
AND uidPriceBasedID = @uidPriceBasedID
AND strUnit = @Unit
ELSE
UPDATE tblInvPrice
SET decSelling = @Selling
,decEstLocalCost = @EstLocalCost
,decEstImportCost = @EstImportCost
,strPricelist = @Pricelist
,bitCashPricing = @CashPricing
,decCashPrice = @CashPrice
WHERE strPartNumber = @PartNumber
AND strPricelist = @OldPricelist
AND uidPriceBasedID = @uidPriceBasedID
AND strUnit = @Unit
END
ELSE
UPDATE tblInvPrice
SET decSelling = @Selling
,decEstLocalCost = @EstLocalCost
,decEstImportCost = @EstImportCost
,strPricelist = @Pricelist
WHERE strPartNumber = @PartNumber
AND strPricelist = @OldPricelist
AND uidPriceBasedID = @uidPriceBasedID
AND strUnit = @Unit
END
END
GO
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


----------------------------------------------------
/*********** Start [GetInvItems] ***********/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetInvItems]
AS
SELECT bitWebstoreItem AS IsWebstoreItem
	,strPartNumber AS PartNumber
	,strDesc AS 'Desc'
	,strCategory AS Category
	,Isnull(strSubCategory, '') AS SubCategory
	,Isnull(strSubCategoryGroup, '') AS SubCategoryGroup
FROM tblInv
WHERE bitInactive = 0
	AND intType <> 5
	AND tblInv.bitOtherCmp = 0
ORDER BY PartNumber DESC
GO

/*********** Start [GetInvItems] ***********/
/*********** Start [UpdateInvItems] ***********/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateInvItems] (
@WebstoreItem [bit]
,@PartNumber NVARCHAR(50)
)
AS
BEGIN
UPDATE tblInv
SET bitWebstoreItem = @WebstoreItem
,dteLastUpdated = Getdate()
WHERE strPartNumber = @PartNumber
END
GO
/*********** End [UpdateInvItems] ***********/


/************************************[GetAllDimensionProfiles]**************************************************/
CREATE PROCEDURE [dbo].[GetAllDimensionProfiles]
AS
BEGIN
SELECT [tblDimensionProfiles].[strDimProCode] AS DimProCode
,[tblDimensionProfiles].[strDescription] AS Description
,[tblDimensionProfiles].[bitAutoInvoke] AS IsAutoInvoke
,[tblDimensionProfiles].[intRoundingDecimals] AS RoundingDecimals
,[tblDimensionProfiles].[bitInactive] AS IsInactive
FROM [tblDimensionProfiles]
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetDimProLinesByDimProCode] (
--@DimProCode AS nvarchar(MAX)
@DimProCode AS NVARCHAR(50)
)
AS
BEGIN
SELECT intLineNo AS LineNumber
,strDimProCode AS DimProCode
,strLineDesc AS LineDesc
,decDefaultValue AS DefaultValue
,bitReadOnly AS IsReadOnly
,~ bitVisible AS IsVisible
FROM tblDimProLines
WHERE strDimProCode = @DimProCode
ORDER BY LineNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateINVTableFromInvDimension] (
@DimProCode AS NVARCHAR(50)
,@RoundingDecimals AS INT
)
AS
BEGIN
UPDATE tblinv
SET intDecimalQuantity = @RoundingDecimals
WHERE strDimProCode = @DimProCode
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateToDimensionProfiles] (
@DimProCode NVARCHAR(50)
,@Description NVARCHAR(250)
,@IsAutoInvoke BIT
,@RoundingDecimals INT
,@IsInactive BIT
,@OldDimProCode NVARCHAR(50)
)
AS
BEGIN
UPDATE tblDimensionProfiles
SET strDimProCode = @DimProCode
,strDescription = @Description
,bitAutoInvoke = @IsAutoInvoke
,intRoundingDecimals = @RoundingDecimals
,bitInactive = @IsInactive
WHERE strDimProCode = @OldDimProCode;
END;
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateToDimProLines] (
@LineNo INT
,@DimProCode NVARCHAR(50)
,@LineDesc NVARCHAR(250)
,@DefaultValue DECIMAL(19, 6)
,@IsReadOnly BIT
,@IsVisible BIT
)
AS
BEGIN
UPDATE tblDimProLines
SET strLineDesc = @LineDesc
,decDefaultValue = @DefaultValue
,bitReadOnly = @IsReadOnly
,bitVisible = @IsVisible
WHERE intLineNo = @LineNo
AND strDimProCode = @DimProCode;
END;
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertToDimProLines] (
@LineNo INT
,@DimProCode NVARCHAR(50)
,@LineDesc NVARCHAR(250)
,@DefaultValue DECIMAL(19, 6)
,@IsReadOnly BIT
,@IsVisible BIT
)
AS
BEGIN
INSERT INTO tblDimProLines (
intLineNo
,strDimProCode
,strLineDesc
,decDefaultValue
,bitReadOnly
,bitVisible
)
VALUES (
@LineNo
,@DimProCode
,@LineDesc
,@DefaultValue
,@IsReadOnly
,@IsVisible
)
END;
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertToDimensionProfiles] (
@DimProCode NVARCHAR(50)
,@Description NVARCHAR(250)
,@IsAutoInvoke BIT
,@RoundingDecimals INT
,@IsInactive BIT
)
AS
BEGIN
INSERT INTO tblDimensionProfiles (
strDimProCode
,strDescription
,bitAutoInvoke
,intRoundingDecimals
,bitInactive
)
VALUES (
@DimProCode
,@Description
,@IsAutoInvoke
,@RoundingDecimals
,@IsInactive
)
END;
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCategoryFromInvCat]
AS
BEGIN
SELECT strCategory
FROM tblInvCat
WHERE bitInactive = 0
ORDER BY strCategory
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetMaxAdjDoc]
AS
BEGIN
SELECT ISNULL(MAX(intAdjDocID), 0) + 1
FROM tblInvAdjDoc
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBinComboForLocation] @UserName AS NVARCHAR(20)
,@LocName AS NVARCHAR(50)
AS
BEGIN
SELECT tblInvLocBin.strBinCode AS BinCode
,ISNULL((
SELECT COUNT(tblInvLocBinSec.strBinCode)
FROM tblInvLocBinSec
WHERE tblInvLocBinSec.strBinCode = tblInvLocBin.strBinCode
AND tblInvLocBinSec.strLocName = tblInvLocBin.strLocName
), 0) AS BinCount
,ISNULL(tblInvLocBinSec.strUserName, '') AS UserName
FROM tblInvLocBin
LEFT JOIN tblInvLocBinSec ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode
AND tblInvLocBinSec.strLocName = tblInvLocBin.strLocName
AND tblInvLocBinSec.strUserName = @UserName
WHERE tblInvLocBin.strLocName = @LocName
ORDER BY tblInvLocBin.strBinCode
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetMinMaxAdjDocID] @DocNumber AS VARCHAR(50)
,@IsPrev AS BIT
AS
BEGIN
IF (@IsPrev = 1)
BEGIN
SELECT MAX(strAdjDocID)
FROM tblInvAdjDoc
WHERE strAdjDocID < @DocNumber
AND bitStockCount <> 0
END
ELSE
BEGIN
SELECT MIN(strAdjDocID)
FROM tblInvAdjDoc
WHERE strAdjDocID > @DocNumber
AND bitStockCount <> 0
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetStockCountItemList] (  
@LocName AS VARCHAR(50)  
,@CategoryIndex AS INT  
,@BinIndex AS INT  
,@IsQtyGreaterZero AS BIT  
,@IsShowAllActive AS BIT  
,@IsInactive AS BIT  
,@IsSortDescription AS BIT  
,@Category AS VARCHAR(50)  
,@Bin AS VARCHAR(50)  
)  
AS  
BEGIN  
DECLARE @Query AS NVARCHAR(Max) = ''  
SET @Query =   
'SELECT tblInv.strPartNumber as PartNumber  
, tblInv.strDesc as [Description]  
, tblInvExtBin.decAvail as Avail  
, tblInvExtBin.decOnHand as OnHand  
, CASE WHEN ISNULL(tblInvSerialTypes.bitMethod,0) = 0 THEN ISNULL(tblInvSerialTypes.bitMethod,0) ELSE tblInv.bitInvSerialType END as InvSerialType   
, CASE WHEN tblInvExt.decOnHand = 0 THEN 0 ELSE (tblInvExt.decValue / tblInvExt.decOnHand) END as UnitCost   
, CAST(ISNULL(tblInvSerialTypes.intType, 0) AS INT) as SerialLotType  
, ISNULL(tblInvSerialTypes.bitDimensionExist,0) as IsDimensionExist  
,strBinCode as BinLocation   
,lngBinID as BinId  
, ISNULL(strStockUnit, '''') AS Unit   
FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber=tblInvExt.strPartNumber   
INNER JOIN tblInvExtBin ON tblInv.strPartNumber = tblInvExtBin.strPartNumber AND tblInvExt.strLocName=tblInvExtBin.strLocName  
INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID=tblInvLocBin.lngID   
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType    
WHERE (tblInvExtBin.strLocName ='''   
+ @LocName + ''') AND (tblInv.intType = 1) AND (tblInvExt.bitInactive = 0) AND (bitAllowed=1) AND bitOtherCmp = 0'  
IF (@CategoryIndex > 0)  
BEGIN  
SET @Query += ' AND (tblInv.strCategory = ''' + @Category + ''')'  
END  
IF (@BinIndex > 0)  
BEGIN  
SET @Query += ' AND (strBinCode = ''' + @Bin + ''')'  
END  
IF (@IsQtyGreaterZero = 1)  
BEGIN  
SET @Query += ' AND (tblInvExtBin.decOnHand > 0)'  
END  
IF (@IsShowAllActive = 1)  
BEGIN  
IF (@IsInactive = 0)  
BEGIN  
SET @Query += ' AND (tblInv.bitInactive = 0)'  
END  
END  
ELSE  
BEGIN  
IF (@IsQtyGreaterZero = 0)  
BEGIN  
SET @Query += ' AND (tblInvExtBin.decOnHand != 0)'  
END  
IF (@IsInactive = 0)  
BEGIN  
SET @Query += ' AND (tblInv.bitInactive = 0)'  
END  
END  
IF (@IsSortDescription = 0)  
BEGIN  
SET @Query += ' ORDER BY tblInv.strPartNumber'  
END  
ELSE  
BEGIN  
SET @Query += ' ORDER BY tblInv.strDesc'  
END  
EXEC (@Query)  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetSerialTypesDetailsForPartNumber] (@PartNumber AS VARCHAR(50))  
AS  
BEGIN  
SELECT 
tblInv.bitInvSerialType AS IsInvSerialType  
,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod  
,ISNULL(tblInvSerialTypes.intMin, 0) AS [Min]  
,ISNULL(tblInvSerialTypes.intMax, 0) AS [Max]  
,ISNULL(tblInvSerialTypes.intFormat, 0) AS [Format]  
,Cast(ISNULL(tblInvSerialTypes.intType, 0) as int) AS intType  
,ISNULL(tblInvSerialTypes.bitTrackExpiryDate, 0) AS IsTrackExpiryDate  
,tblInv.strBuyUnit AS Unit  
,ISNULL(tblInvSerialTypes.intExpiryDateAuthAD, 0) AS ExpiryDateAuthAD  
,ISNULL(tblInvSerialTypes.strDimProCode, '') AS DimProCode  
,ISNULL(tblInvSerialTypes.strInvSerialType, '') AS InventorySerialType  
,ISNULL(tblInvSerialTypes.bitAutoCreateLotNumber, 0) AS IsAutoCreateLotNumber  
,ISNULL(tblInvSerialTypes.intLotNumberStartsFrom, 0) AS LotNumberStartsFrom  
,ISNULL(tblInvSerialTypes.intNextLotNumber, 1) AS NextLotNumber  
,ISNULL(tblInvSerialTypes.intDaysExpire, 0) AS intDaysExpire  
FROM tblInv  
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType  
WHERE tblInv.strPartNumber = @PartNumber  
END  
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInventoryAdjustmentDetails] (@DocNumber AS VARCHAR(50))
AS
BEGIN
SELECT strAdjDocID AS DocIDText
,lngJourID AS DocID
,dteJournalDate AS JournalDate
,strLocName AS LocName
,strComment AS Comment
,intAccount AS Account
,ISNULL((
SELECT strDesc
FROM tblAccounts
WHERE intGLNumber = tblInvAdjDoc.intAccount
), '') AS [Description]
,decTotal AS Total
,intDept AS Dept
,bitRevaluation AS IsRevaluation
,bitActual AS IsActual
,bitSetQtyZero AS IsSetQtyZero
FROM tblInvAdjDoc
WHERE strAdjDocID = @DocNumber
AND bitStockCount = 1
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInventoryAdjustmentDocDetails] (@DocNumber AS VARCHAR(50))
AS
BEGIN
SELECT tblInvAdjDocDT.strPartNumber AS PartNumber
,tblInv.strDesc AS [Description]
,tblInvAdjDocDT.decQty AS Qty
,tblInvAdjDocDT.decUnitCost AS UnitCost
,tblInvAdjDocDT.decAmount AS Amount
,tblInv.bitInvSerialType AS InvSerialType
,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
,tblInvLocBin.strBinCode AS BinCode
,tblInvAdjDocDT.lngBinId AS BinId
,tblInvAdjDocDT.decOnHand AS OnHand
,tblInvAdjDocDT.decValue AS Value
,tblInvAdjDocDT.decNewValue AS NewValue
,tblInvAdjDoc.lngInvTrackID AS InvTrackID
,tblInvTrackingDT.decOnHand AS CurrOnHand
,tblInvTrackingDT.decNewOnHand AS Actual
,tblInvTrackingDT.decQty AS Variance
,ISNULL(tblInv.strStockUnit, '') AS Unit
FROM tblInvAdjDocDT
INNER JOIN tblInv ON tblInvAdjDocDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
LEFT JOIN tblInvLocBin ON tblInvLocBin.lngID = tblInvAdjDocDT.lngBinID
INNER JOIN tblInvAdjDoc ON tblInvAdjDocDT.strAdjDocID = tblInvAdjDoc.strAdjDocID
INNER JOIN tblInvTrackingDT ON tblInvAdjDoc.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
AND tblInvAdjDocDT.intLineNo = tblInvTrackingDT.intLineNo
WHERE tblInvAdjDocDT.strAdjDocID = @DocNumber
ORDER BY tblInvAdjDocDT.intLineNo
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvAdjDocDTSerial] (
@DocNumber AS VARCHAR(50)
,@Row AS INT
)
AS
BEGIN
SELECT tblInvAdjDocDTSerial.strAdjDocID
,tblInvAdjDocDTSerial.intLineNo
,tblInvAdjDocDTSerial.strSerialNumber AS PartNumber
,tblInvAdjDocDTSerial.decQty AS Qty
,tblInvAdjDocDTSerial.strUnit AS Unit
,tblInvAdjDocDTSerial.lngID AS BinId
,tblInvAdjDocDTSerial.bitExpiryDate AS IsExpiryDateExits
,tblInvAdjDocDTSerial.dteExpiryDate AS dteExpiryDate
,tblInvAdjDocDTSerial.intSerialLotType AS [Type]
,tblInvAdjDocDTSerial.lngBinID AS BinId
,ISNULL((
SELECT DISTINCT TYP.strInvSerialType AS SerialLot
FROM tblInvAdjDocDTSerial SRL
INNER JOIN tblInvAdjDocDT DTL ON SRL.strAdjDocID = DTL.strAdjDocID
AND SRL.intLineNo = DTL.intLineNo
INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber
INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType
WHERE SRL.strAdjDocID = tblInvAdjDocDTSerial.strAdjDocID
AND SRL.intLineNo = tblInvAdjDocDTSerial.intLineNo
), '') AS SerialLot
,CASE 
WHEN tblInvAdjDocDTSerial.intSerialLotType = 0
THEN ISNULL(tblInvSerialExt.bitDimensionExist, 0)
ELSE cast(0 as bit)
END AS IsDimensionExist
,CASE 
WHEN tblInvAdjDocDTSerial.intSerialLotType = 0
THEN ISNULL(tblInvSerialExt.strDimension, '')
ELSE ''
END AS Dimension
,ISNULL(tblInvLocBin.strBinCode, '') AS BinCode
FROM tblInvAdjDocDT
INNER JOIN tblInvAdjDocDTSerial ON tblInvAdjDocDT.strAdjDocID = tblInvAdjDocDTSerial.strAdjDocID
AND tblInvAdjDocDT.intLineNo = tblInvAdjDocDTSerial.intLineNo
LEFT JOIN tblInvSerialExt ON tblInvAdjDocDT.strPartNumber = tblInvSerialExt.strPartNumber
AND tblInvAdjDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
LEFT JOIN tblInvLocBin ON tblInvLocBin.lngId = tblInvAdjDocDTSerial.lngBinId
WHERE tblInvAdjDocDTSerial.strAdjDocID = @DocNumber
ORDER BY tblInvAdjDocDTSerial.lngID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[FillDataProdLabels] (
@Location AS VARCHAR(100)
,@IsPrintPrice AS BIT
,@Price AS NVARCHAR(50)
,@PriceBasedID AS NVARCHAR(50)
,@PartNumber AS VARCHAR(50)
)
AS
BEGIN
IF (@Location != '<<ALL Locations>>')
BEGIN
IF (@IsPrintPrice = 1)
BEGIN
SELECT tblInv.*
,ISNULL((
SELECT strCurrSymbol
FROM tblCurrency
WHERE bitHome = 1
), '') + CONVERT(VARCHAR, CONVERT(MONEY, tblInvPrice.decSelling), 1) AS decSelling
,tblInvPrice.decSelling AS decSellPrice
,(
SELECT dteStartDate
FROM tblPriceListsByDate where uidPriceBasedID = @PriceBasedID
) AS dteFromPrice
,(
SELECT dteFinishDate
FROM tblPriceListsByDate
WHERE uidPriceBasedID = @PriceBasedID
) AS dteToPrice
,@Price AS strPriceList
FROM dbo.fnTblInvForLocJoin() tblInv
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
AND tblInv.strLocName = tblInvExt.strLocName
INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
WHERE (tblInvPrice.strPricelist = @Price)
AND (tblInv.strPartNumber = @PartNumber)
AND (tblInvExt.strLocName = @Location)
AND (tblInvPrice.uidPriceBasedID = @PriceBasedID)
END
ELSE
BEGIN
SELECT *
FROM dbo.fnTblInvForLocJoin() tblInv
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
AND tblInv.strLocName = tblInvExt.strLocName
WHERE (tblInv.strPartNumber = @PartNumber)
AND (
IsNull(tblInvExt.strLocName, '') = CASE 
WHEN (
@Location = '<<ALL Locations>>'
OR @Location = ''
)
THEN IsNull(tblInvExt.strLocName, '')
ELSE @Location
END
)
END
END
ELSE
BEGIN
IF (@IsPrintPrice = 1)
BEGIN
SELECT tblInv.*
,ISNULL((
SELECT strCurrSymbol
FROM tblCurrency
WHERE bitHome = 1
), '') + CONVERT(VARCHAR, CONVERT(MONEY, tblInvPrice.decSelling), 1) AS decSelling
,tblInvPrice.decSelling AS decSellPrice
,(
SELECT dteStartDate
FROM tblPriceListsByDate
WHERE uidPriceBasedID = @PriceBasedID
) AS dteFromPrice
,(
SELECT dteFinishDate
FROM tblPriceListsByDate
WHERE uidPriceBasedID = @PriceBasedID
) AS dteToPrice
,@Price AS strPriceList
FROM tblInv
INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
WHERE (tblInvPrice.strPricelist = @Price)
AND (tblInv.strPartNumber = @PartNumber)
AND (tblInvPrice.uidPriceBasedID = @PriceBasedID)
END
ELSE
BEGIN
SELECT *
FROM tblInv
WHERE (tblInv.strPartNumber = @PartNumber)
END
END
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBulkLabelPrintingItems] @SQDate SMALLDATETIME = NULL
,@SQApply BIT = 0
,@SQCategory NVARCHAR(Max) = ''
,@SQSubCategory NVARCHAR(Max) = ''
,@SQLocation NVARCHAR(Max) = ''
,@SQSearch NVARCHAR(100) = ''
,@SQWithPrice BIT = 0
,@SQPricelist NVARCHAR(100) = 'REGULAR'
,@SQuidPriceBasedID NVARCHAR(100) = 0
,@SQPriceSince DATETIME
,@SQShowPrices BIT = 0
,@SQShowOnHandQtyOnly BIT = 0
,@SQBinCode NVARCHAR(Max) = ''
,@PageSize INT = 25
,@PageNum INT = 1
WITH RECOMPILE
AS
BEGIN
DECLARE @Offset INT
SET @Offset = @PageSize * (@PageNum - 1)
DECLARE @SplitWord TABLE (
wordRank INT
,word VARCHAR(200)
)
SET @SQSearch = LTRIM(RTRIM(@SQSearch)) -- Remove white space
DECLARE @WordSeperator VARCHAR(1) = ' '
DECLARE @TotalWord INT = 0
DECLARE @WordCount INT = 1
DECLARE @Keyword1 VARCHAR(100) = ''
DECLARE @Keyword2 VARCHAR(100) = ''
DECLARE @Keyword3 VARCHAR(100) = ''
DECLARE @Keyword4 VARCHAR(100) = ''
DECLARE @Keyword5 VARCHAR(100) = ''
DECLARE @Keyword6 VARCHAR(100) = ''
DECLARE @Keyword7 VARCHAR(100) = ''
DECLARE @Keyword8 VARCHAR(100) = ''
DECLARE @Keyword9 VARCHAR(100) = ''
DECLARE @Keyword10 VARCHAR(100) = ''
IF (CHARINDEX(',', @SQSearch)) > 0
BEGIN
SET @WordSeperator = ','
END
INSERT INTO @SplitWord
SELECT Id
,[Data]
FROM dbo.split(@SQSearch, @WordSeperator)
SET @TotalWord = (
SELECT COUNT(*)
FROM @SplitWord
)
WHILE (@WordCount <= @TotalWord)
BEGIN
IF @WordCount = 1
BEGIN
SET @Keyword1 = (
SELECT Word
FROM @SplitWord
WHERE wordRank = @WordCount
)
END
IF @WordCount = 2
BEGIN
SET @Keyword2 = (
SELECT Word
FROM @SplitWord
WHERE wordRank = @WordCount
)
END
IF @WordCount = 3
BEGIN
SET @Keyword3 = (
SELECT Word
FROM @SplitWord
WHERE wordRank = @WordCount
)
END
IF @WordCount = 4
BEGIN
SET @Keyword4 = (
SELECT Word
FROM @SplitWord
WHERE wordRank = @WordCount
)
END
IF @WordCount = 5
BEGIN
SET @Keyword5 = (
SELECT Word
FROM @SplitWord
WHERE wordRank = @WordCount
)
END
IF @WordCount = 6
BEGIN
SET @Keyword6 = (
SELECT Word
FROM @SplitWord
WHERE wordRank = @WordCount
)
END
IF @WordCount = 7
BEGIN
SET @Keyword7 = (
SELECT Word
FROM @SplitWord
WHERE wordRank = @WordCount
)
END
IF @WordCount = 8
BEGIN
SET @Keyword8 = (
SELECT Word
FROM @SplitWord
WHERE wordRank = @WordCount
)
END
IF @WordCount = 9
BEGIN
SET @Keyword9 = (
SELECT Word
FROM @SplitWord
WHERE wordRank = @WordCount
)
END
IF @WordCount = 10
BEGIN
SET @Keyword10 = (
SELECT Word
FROM @SplitWord
WHERE wordRank = @WordCount
)
END
SET @WordCount = @WordCount + 1
END
DECLARE @uidPriceBasedID AS UNIQUEIDENTIFIER
SET @uidPriceBasedID = NULL
IF ISNULL(@SQPricelist, '') <> ''
AND ISNULL(@SQDate, '') <> ''
AND isnull(@SQuidPriceBasedID, '') = ''
BEGIN
SELECT TOP 1 @uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
FROM tblPriceListsByDate
INNER JOIN dbo.tblInvPrice ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
WHERE @SQDate BETWEEN dbo.tblPriceListsByDate.dteStartDate
AND dbo.tblPriceListsByDate.dteFinishDate
AND tblPriceListsByDate.strPricelist = @SQPricelist
END
ELSE
BEGIN
SELECT TOP 1 @uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
FROM tblPriceListsByDate
INNER JOIN dbo.tblInvPrice ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
WHERE @SQDate BETWEEN dbo.tblPriceListsByDate.dteStartDate
AND dbo.tblPriceListsByDate.dteFinishDate
AND tblPriceListsByDate.strPricelist = 'REGULAR'
END
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF (@SQShowOnHandQtyOnly = 0)
BEGIN
IF (@SQShowPrices = 0)
BEGIN
IF @SQWithPrice = 0
BEGIN
SELECT 0 AS bitSelect
,*
,CASE 
WHEN @SQApply = 0
THEN 0
ELSE Cast(decSumOnHand AS INT)
END AS intAmount
FROM (
SELECT tblInv.strPartNumber
,tblInv.strDesc
,tblInv.strCategory
,tblInv.strSubCategory
--,tblInvExt.strLocName
,(
SELECT TOP 1 t.decSelling
FROM tblInvPrice t
WHERE t.strPartNumber = tblInv.strPartNumber
AND t.strPricelist = 'Regular'
AND t.uidPriceBasedID = @uidPriceBasedID
) AS decSelling
,isnull((
SELECT CASE 
WHEN Sum(tblInvExtBin.decOnHand) = 0
THEN 0
ELSE (
CASE 
WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '') = ''
THEN Sum(tblInvExtBin.decOnHand)
ELSE CASE dbo.tblInvUOMs.strConversionType
WHEN 'Multiply'
THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor
ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor
END
END
)
END AS decSumOnHand
FROM tblInvExt
INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
AND tblInvExtBin.strLocName = tblInvExt.strLocName
INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
AND (
[tblInvLocBin].strBinCode = CASE 
WHEN (
@SQBinCode = ''
OR @SQBinCode = '<<All Bin Locations>>'
)
THEN IsNull([tblInvLocBin].strBinCode, '')
ELSE @SQBinCode
END
)
AND (
IsNull(tblInvLocBin.strLocName, '') = CASE 
WHEN (
@SQLocation = '<<All Locations>>'
OR @SQLocation = ''
)
THEN IsNull(tblInvLocBin.strLocName, '')
ELSE @SQLocation
END
)
AND tblInvExt.bitInactive = 0
), 0) AS decSumOnHand
,(
SELECT dteUpdatedDate
FROM dbo.tblInvPriceTracking
WHERE dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber
AND tblInvPriceTracking.lngInvPriceTrackID IN (
SELECT Max(a.lngInvPriceTrackID)
FROM tblInvPriceTracking a
GROUP BY a.strPartNumber
)
) AS dteUpdatedDate
,COUNT(*) OVER () AS intRowCount
,ROW_NUMBER() OVER (
ORDER BY tblInv.strCategory
) AS RowNumber
,tblInvPrice.strUnit
FROM [tblInvExt]
INNER JOIN [tblInv] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
INNER JOIN dbo.tblInvPrice(NOLOCK) ON (
dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID
OR @uidPriceBasedID IS NULL
)
AND tblInvPrice.strPartNumber = [tblInv].strPartNumber
LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber
AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
AND dbo.tblInvUOMS.bitInactive = 0
WHERE (
tblInv.intType IN (
1
,11
)
)
AND (tblInvPrice.strPricelist = 'REGULAR')
--AND (
--	@SQDate BETWEEN tblPriceListsByDate.dteStartDate
--		AND tblPriceListsByDate.dteFinishDate
--	)
AND (
IsNull(tblInv.strCategory, '') = CASE 
WHEN (
@SQCategory = ''
OR @SQCategory = '<<ALL Categories>>'
)
THEN IsNull(tblInv.strCategory, '')
ELSE @SQCategory
END
)
AND (
IsNull(tblInv.strSubCategory, '') = CASE 
WHEN (
@SQSubCategory = '<<ALL Sub Categories>>'
OR @SQSubCategory = ''
)
THEN IsNull(tblInv.strSubCategory, '')
ELSE @SQSubCategory
END
)
AND (
IsNull(tblInvExt.strLocName, '') = CASE 
WHEN (
@SQLocation = '<<All Locations>>'
OR @SQLocation = ''
)
THEN IsNull(tblInvExt.strLocName, '')
ELSE @SQLocation
END
)
AND (tblInvExt.bitInactive = 0)
AND (tblInv.bitInactive = 0)
AND (
tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
OR (
(
@Keyword1 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
)
AND (
@Keyword2 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
)
AND (
@Keyword3 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
)
AND (
@Keyword4 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
)
AND (
@Keyword5 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
)
AND (
@Keyword6 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
)
AND (
@Keyword7 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
)
AND (
@Keyword8 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
)
AND (
@Keyword9 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
)
AND (
@Keyword10 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
)
)
OR (
(
@Keyword1 = ''
OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
)
AND (
@Keyword2 = ''
OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
)
AND (
@Keyword3 = ''
OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
)
AND (
@Keyword4 = ''
OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
)
AND (
@Keyword5 = ''
OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
)
AND (
@Keyword6 = ''
OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
)
AND (
@Keyword7 = ''
OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
)
AND (
@Keyword8 = ''
OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
)
AND (
@Keyword9 = ''
OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
)
AND (
@Keyword10 = ''
OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
)
)
OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
)
GROUP BY tblInv.strPartNumber
,tblInv.strDesc
,tblInv.strCategory
,tblInv.strSubCategory
,tblInvPrice.strUnit
,tblInvUOMs.decConversionFactor
,tblInvUOMs.strConversionType
,dbo.tblInvUOMs.strPartNumber
) AS result
WHERE RowNumber >= (@Offset + 1)
AND RowNumber <= (@Offset + @PageSize)
ORDER BY RowNumber
END
ELSE
BEGIN
SELECT 0 AS bitSelect
,*
,CASE 
WHEN @SQApply = 0
THEN 0
ELSE Cast(decSumOnHand AS INT)
END AS intAmount
FROM (
SELECT tblInv.strPartNumber
,tblInv.strDesc
,tblInv.strCategory
,tblInv.strSubCategory
--,tblInvExt.strLocName
,(
SELECT TOP 1 t.decSelling
FROM tblInvPrice t
WHERE t.strPartNumber = tblInv.strPartNumber
AND t.strPricelist = @SQPricelist
AND t.uidPriceBasedID = @SQuidPriceBasedID
) AS decSelling
,isnull((
SELECT CASE 
WHEN Sum(tblInvExtBin.decOnHand) = 0
THEN 0
ELSE (
CASE 
WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '') = ''
THEN Sum(tblInvExtBin.decOnHand)
ELSE CASE dbo.tblInvUOMs.strConversionType
WHEN 'Multiply'
THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor
ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor
END
END
)
END AS decSumOnHand
FROM tblInvExt
INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
AND tblInvExtBin.strLocName = tblInvExt.strLocName
INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
AND (
[tblInvLocBin].strBinCode = CASE 
WHEN (
@SQBinCode = ''
OR @SQBinCode = '<<All Bin Locations>>'
)
THEN IsNull([tblInvLocBin].strBinCode, '')
ELSE @SQBinCode
END
)
AND (
IsNull(tblInvLocBin.strLocName, '') = CASE 
WHEN (
@SQLocation = '<<All Locations>>'
OR @SQLocation = ''
)
THEN IsNull(tblInvLocBin.strLocName, '')
ELSE @SQLocation
END
)
AND tblInvExt.bitInactive = 0
), 0) AS decSumOnHand
,(
SELECT dteUpdatedDate
FROM dbo.tblInvPriceTracking
WHERE dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber
AND tblInvPriceTracking.lngInvPriceTrackID IN (
SELECT Max(a.lngInvPriceTrackID)
FROM tblInvPriceTracking a
WHERE (a.uidPriceBasedID = @SQuidPriceBasedID)
GROUP BY a.strPartNumber
)
) AS dteUpdatedDate
,COUNT(*) OVER () AS intRowCount
,ROW_NUMBER() OVER (
ORDER BY tblInv.strCategory
) AS RowNumber
,tblInvPrice.strUnit
FROM [tblInvExt]
INNER JOIN [tblInv] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
INNER JOIN dbo.tblInvPrice(NOLOCK) ON (
dbo.tblInvPrice.uidPriceBasedID = @SQuidPriceBasedID
OR @SQuidPriceBasedID IS NULL
)
AND tblInvPrice.strPartNumber = [tblInv].strPartNumber
LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber
AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
AND dbo.tblInvUOMS.bitInactive = 0
--and tblinv.strPartNumber=tblInvPrice.strPartNumber
WHERE (
tblInv.intType IN (
1
,11
)
)
AND (tblInvPrice.strPricelist = @SQPricelist)
AND (
IsNull(tblInv.strCategory, '') = CASE 
WHEN (
@SQCategory = ''
OR @SQCategory = '<<ALL Categories>>'
)
THEN IsNull(tblInv.strCategory, '')
ELSE @SQCategory
END
)
AND (
IsNull(tblInv.strSubCategory, '') = CASE 
WHEN (
@SQSubCategory = '<<ALL Sub Categories>>'
OR @SQSubCategory = ''
)
THEN IsNull(tblInv.strSubCategory, '')
ELSE @SQSubCategory
END
)
AND (
IsNull(tblInvExt.strLocName, '') = CASE 
WHEN (
@SQLocation = '<<All Locations>>'
OR @SQLocation = ''
)
THEN IsNull(tblInvExt.strLocName, '')
ELSE @SQLocation
END
)
AND (tblInvExt.bitInactive = 0)
AND (tblInv.bitInactive = 0)
AND (
tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
OR (
(
@Keyword1 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
)
AND (
@Keyword2 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
)
AND (																											
@Keyword3 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
)
AND (
@Keyword4 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
)
AND (
@Keyword5 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
)
AND (
@Keyword6 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
)
AND (
@Keyword7 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
)
AND (
@Keyword8 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
)
AND (
@Keyword9 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
)
AND (
@Keyword10 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
)
)
OR (
(
@Keyword1 = ''
OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
)
AND (
@Keyword2 = ''
OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
)
AND (
@Keyword3 = ''
OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
)
AND (
@Keyword4 = ''
OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
)
AND (
@Keyword5 = ''
OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
)
AND (
@Keyword6 = ''
OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
)
AND (
@Keyword7 = ''
OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
)
AND (
@Keyword8 = ''
OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
)
AND (
@Keyword9 = ''
OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
)
AND (
@Keyword10 = ''
OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
)
)
OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
)
GROUP BY tblInv.strPartNumber
,tblInv.strDesc
,tblInv.strCategory
,tblInv.strSubCategory
,tblInvPrice.strUnit
,tblInvUOMs.decConversionFactor
,tblInvUOMs.strConversionType
,dbo.tblInvUOMs.strPartNumber
) AS result
WHERE RowNumber >= (@Offset + 1)
AND RowNumber <= (@Offset + @PageSize)
ORDER BY RowNumber
END
END
ELSE
BEGIN
IF @SQWithPrice = 0
BEGIN
SELECT 0 AS bitSelect
,*
,CASE 
WHEN @SQApply = 0
THEN 0
ELSE Cast(decSumOnHand AS INT)
END AS intAmount
FROM (
SELECT tblInv.strPartNumber
,tblInv.strDesc
,tblInv.strCategory
,tblInv.strSubCategory
--,tblInvExt.strLocName
,(
SELECT TOP 1 t.decSelling
FROM tblInvPrice t
WHERE t.strPartNumber = tblInv.strPartNumber
AND t.strPricelist = 'Regular'
AND t.uidPriceBasedID = @uidPriceBasedID
) AS decSelling
,isnull((
SELECT CASE 
WHEN Sum(tblInvExtBin.decOnHand) = 0
THEN 0
ELSE (
CASE 
WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '') = ''
THEN Sum(tblInvExtBin.decOnHand)
ELSE CASE dbo.tblInvUOMs.strConversionType
WHEN 'Multiply'
THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor
ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor
END
END
)
END AS decSumOnHand
FROM tblInvExt
INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
AND tblInvExtBin.strLocName = tblInvExt.strLocName
INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
AND (
[tblInvLocBin].strBinCode = CASE 
WHEN (
@SQBinCode = ''
OR @SQBinCode = '<<All Bin Locations>>'
)
THEN IsNull([tblInvLocBin].strBinCode, '')
ELSE @SQBinCode
END
)
AND (
IsNull(tblInvLocBin.strLocName, '') = CASE 
WHEN (
@SQLocation = '<<All Locations>>'
OR @SQLocation = ''
)
THEN IsNull(tblInvLocBin.strLocName, '')
ELSE @SQLocation
END
)
AND tblInvExt.bitInactive = 0
), 0) AS decSumOnHand
,(
SELECT dteUpdatedDate
FROM dbo.tblInvPriceTracking
WHERE dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber
AND tblInvPriceTracking.lngInvPriceTrackID IN (
SELECT Max(a.lngInvPriceTrackID)
FROM tblInvPriceTracking a
WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
AND a.uidPriceBasedID = @uidPriceBasedID
GROUP BY a.strPartNumber
)
) AS dteUpdatedDate
--,tblInvPriceTracking.decPriceFrom
--,tblInvPriceTracking.decPriceTo
,COUNT(*) OVER () AS intRowCount
,ROW_NUMBER() OVER (
ORDER BY tblInv.strCategory
) AS RowNumber
,tblInvPrice.strUnit
FROM [tblInvExt]
INNER JOIN [tblInv] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
INNER JOIN dbo.tblInvPrice(NOLOCK) ON (
dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID
OR @uidPriceBasedID IS NULL
)
AND tblInvPrice.strPartNumber = [tblInv].strPartNumber
LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber
AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
AND dbo.tblInvUOMS.bitInactive = 0
WHERE (
tblInv.intType IN (
1
,11
)
)
AND (tblInvPrice.strPricelist = 'REGULAR')
AND (
IsNull(tblInv.strCategory, '') = CASE 
WHEN (
@SQCategory = ''
OR @SQCategory = '<<ALL Categories>>'
)
THEN IsNull(tblInv.strCategory, '')
ELSE @SQCategory
END
)
AND (
IsNull(tblInv.strSubCategory, '') = CASE 
WHEN (
@SQSubCategory = '<<ALL Sub Categories>>'
OR @SQSubCategory = ''
)
THEN IsNull(tblInv.strSubCategory, '')
ELSE @SQSubCategory
END
)
AND (
IsNull(tblInvExt.strLocName, '') = CASE 
WHEN (
@SQLocation = '<<All Locations>>'
OR @SQLocation = ''
)
THEN IsNull(tblInvExt.strLocName, '')
ELSE @SQLocation
END
)
AND (tblInvExt.bitInactive = 0)
AND (tblInv.bitInactive = 0)
AND (
tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
OR (
(
@Keyword1 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
)
AND (
@Keyword2 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
)
AND (
@Keyword3 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
)
AND (
@Keyword4 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
)
AND (
@Keyword5 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
)
AND (
@Keyword6 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
)
AND (
@Keyword7 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
)
AND (
@Keyword8 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
)
AND (
@Keyword9 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
)
AND (
@Keyword10 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
)
)
OR (
(
@Keyword1 = ''
OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
)
AND (
@Keyword2 = ''
OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
)
AND (
@Keyword3 = ''
OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
)
AND (
@Keyword4 = ''
OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
)
AND (
@Keyword5 = ''
OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
)
AND (
@Keyword6 = ''
OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
)
AND (
@Keyword7 = ''
OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
)
AND (
@Keyword8 = ''
OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
)
AND (
@Keyword9 = ''
OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
)
AND (
@Keyword10 = ''
OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
)
)
OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
)
--AND tblInvPriceTracking.lngInvPriceTrackID IN (
--	SELECT Max(a.lngInvPriceTrackID)
--	FROM tblInvPriceTracking a
--	INNER JOIN tblPriceListsByDate b ON a.uidPriceBasedID = b.uidPriceBasedID
--	WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
--		AND (
--			@SQDate BETWEEN b.dteStartDate
--				AND b.dteFinishDate
--			)
--		AND (a.strPricelist = 'REGULAR')
--	GROUP BY a.strPartNumber
--	)
GROUP BY tblInv.strPartNumber
,tblInv.strDesc
,tblInv.strCategory
,tblInv.strSubCategory
,tblInvPrice.strUnit
,tblInvUOMs.decConversionFactor
,tblInvUOMs.strConversionType
,dbo.tblInvUOMs.strPartNumber
) AS result
WHERE RowNumber >= (@Offset + 1)
AND RowNumber <= (@Offset + @PageSize)
ORDER BY RowNumber
END
ELSE
BEGIN
SELECT 0 AS bitSelect
,*
,CASE 
WHEN @SQApply = 0
THEN 0
ELSE Cast(decSumOnHand AS INT)
END AS intAmount
FROM (
SELECT tblInv.strPartNumber
,tblInv.strDesc
,tblInv.strCategory
,tblInv.strSubCategory
--,tblInvExt.strLocName
,(
SELECT TOP 1 t.decSelling
FROM tblInvPrice t
WHERE t.strPartNumber = tblInv.strPartNumber
AND t.strPricelist = @SQPricelist
AND t.uidPriceBasedID = @SQuidPriceBasedID
) AS decSelling
,isnull((
SELECT CASE 
WHEN Sum(tblInvExtBin.decOnHand) = 0
THEN 0
ELSE (
CASE 
WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '') = ''
THEN Sum(tblInvExtBin.decOnHand)
ELSE CASE dbo.tblInvUOMs.strConversionType
WHEN 'Multiply'
THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor
ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor
END
END
)
END AS decSumOnHand
FROM tblInvExt
INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
AND tblInvExtBin.strLocName = tblInvExt.strLocName
INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
AND (
[tblInvLocBin].strBinCode = CASE 
WHEN (
@SQBinCode = ''
OR @SQBinCode = '<<All Bin Locations>>'
)
THEN IsNull([tblInvLocBin].strBinCode, '')
ELSE @SQBinCode
END
)
AND (
IsNull(tblInvLocBin.strLocName, '') = CASE 
WHEN (
@SQLocation = '<<All Locations>>'
OR @SQLocation = ''
)
THEN IsNull(tblInvLocBin.strLocName, '')
ELSE @SQLocation
END
)
AND tblInvExt.bitInactive = 0
), 0) AS decSumOnHand
,tblInvPriceTracking.dteUpdatedDate
,COUNT(*) OVER () AS intRowCount
,ROW_NUMBER() OVER (
ORDER BY tblInv.strCategory
) AS RowNumber
,tblInvPrice.strUnit
FROM [tblInvExt]
INNER JOIN [tblInv] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
AND tblInvPrice.strPartNumber = [tblInv].strPartNumber
INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
INNER JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber
AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
AND dbo.tblInvUOMS.bitInactive = 0
WHERE (
tblInv.intType IN (
1
,11
)
)
AND (tblInvPrice.strPricelist = @SQPricelist)
AND (tblPriceListsByDate.uidPriceBasedID = @SQuidPriceBasedID)
AND tblInvPriceTracking.lngInvPriceTrackID IN (
SELECT Max(a.lngInvPriceTrackID)
FROM tblInvPriceTracking a
WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
AND a.uidPriceBasedID = @SQuidPriceBasedID
GROUP BY a.strPartNumber
)
AND (
IsNull(tblInv.strCategory, '') = CASE 
WHEN (
@SQCategory = ''
OR @SQCategory = '<<ALL Categories>>'
)
THEN IsNull(tblInv.strCategory, '')
ELSE @SQCategory
END
)
AND (
IsNull(tblInv.strSubCategory, '') = CASE 
WHEN (
@SQSubCategory = '<<ALL Sub Categories>>'
OR @SQSubCategory = ''
)
THEN IsNull(tblInv.strSubCategory, '')
ELSE @SQSubCategory
END
)
AND (
IsNull(tblInvExt.strLocName, '') = CASE 
WHEN (
@SQLocation = '<<All Locations>>'
OR @SQLocation = ''
)
THEN IsNull(tblInvExt.strLocName, '')
ELSE @SQLocation
END
)
AND (tblInvExt.bitInactive = 0)
AND (tblInv.bitInactive = 0)
AND (
tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
OR (
(
@Keyword1 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
)
AND (
@Keyword2 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
)
AND (
@Keyword3 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
)
AND (
@Keyword4 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
)
AND (
@Keyword5 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
)
AND (
@Keyword6 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
)
AND (
@Keyword7 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
)
AND (
@Keyword8 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
)
AND (
@Keyword9 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
)
AND (
@Keyword10 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
)
)
OR (
(
@Keyword1 = ''
OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
)
AND (
@Keyword2 = ''
OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
)
AND (
@Keyword3 = ''
OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
)
AND (
@Keyword4 = ''
OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
)
AND (
@Keyword5 = ''
OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
)
AND (
@Keyword6 = ''
OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
)
AND (
@Keyword7 = ''
OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
)
AND (
@Keyword8 = ''
OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
)
AND (
@Keyword9 = ''
OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
)
AND (
@Keyword10 = ''
OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
)
)
OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
)
GROUP BY tblInv.strPartNumber
,tblInv.strDesc
,tblInv.strCategory
,tblInv.strSubCategory
,tblInvPriceTracking.dteUpdatedDate
,tblInvPrice.strUnit
,tblInvUOMs.decConversionFactor
,tblInvUOMs.strConversionType
,dbo.tblInvUOMs.strPartNumber
) AS result
WHERE dteUpdatedDate IS NOT NULL
AND RowNumber >= (@Offset + 1)
AND RowNumber <= (@Offset + @PageSize)
ORDER BY RowNumber
END
END
END
ELSE
BEGIN
IF (@SQShowPrices = 0)
BEGIN
IF @SQWithPrice = 0
BEGIN
SELECT *
FROM (
SELECT 0 AS bitSelect
,*
,CASE 
WHEN @SQApply = 0
THEN 0
ELSE Cast(decSumOnHand AS INT)
END AS intAmount
,ROW_NUMBER() OVER (
ORDER BY strCategory
) AS RowNumber
,COUNT(*) OVER () AS intRowCount
FROM (
SELECT tblInv.strPartNumber
,tblInv.strDesc
,tblInv.strCategory
,tblInv.strSubCategory
--,tblInvExt.strLocName
,(
SELECT TOP 1 t.decSelling
FROM tblInvPrice t
WHERE t.strPartNumber = tblInv.strPartNumber
AND t.strPricelist = 'REGULAR'
AND t.uidPriceBasedID = @uidPriceBasedID
) AS decSelling
,isnull((
SELECT CASE 
WHEN Sum(tblInvExtBin.decOnHand) = 0
THEN 0
ELSE (
CASE 
WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '') = ''
THEN Sum(tblInvExtBin.decOnHand)
ELSE CASE dbo.tblInvUOMs.strConversionType
WHEN 'Multiply'
THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor
ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor
END
END
)
END AS decSumOnHand
FROM tblInvExt
INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
AND tblInvExtBin.strLocName = tblInvExt.strLocName
INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
AND (
[tblInvLocBin].strBinCode = CASE 
WHEN (
@SQBinCode = ''
OR @SQBinCode = '<<All Bin Locations>>'
)
THEN IsNull([tblInvLocBin].strBinCode, '')
ELSE @SQBinCode
END
)
AND (
IsNull(tblInvLocBin.strLocName, '') = CASE 
WHEN (
@SQLocation = '<<All Locations>>'
OR @SQLocation = ''
)
THEN IsNull(tblInvLocBin.strLocName, '')
ELSE @SQLocation
END
)
AND tblInvExt.bitInactive = 0
), 0) AS decSumOnHand
,(
SELECT dteUpdatedDate
FROM dbo.tblInvPriceTracking
WHERE dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber
AND tblInvPriceTracking.lngInvPriceTrackID IN (
SELECT Max(a.lngInvPriceTrackID)
FROM tblInvPriceTracking a
GROUP BY a.strPartNumber
)
) AS dteUpdatedDate
,tblInvPrice.strUnit
--,tblInvPriceTracking.decPriceFrom
--,tblInvPriceTracking.decPriceTo
--,COUNT(*) over () AS intRowCount 
FROM [tblInvExt]
INNER JOIN [tblInv] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
INNER JOIN dbo.tblInvPrice(NOLOCK) ON (
dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID
OR @uidPriceBasedID IS NULL
)
AND tblInvPrice.strPartNumber = [tblInv].strPartNumber
LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber
AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
AND dbo.tblInvUOMS.bitInactive = 0
WHERE (
tblInv.intType IN (
1
,11
)
)
AND (tblInvPrice.strPricelist = 'REGULAR')
--AND (
--	@SQDate BETWEEN tblPriceListsByDate.dteStartDate
--		AND tblPriceListsByDate.dteFinishDate
--	)
AND (
IsNull(tblInv.strCategory, '') = CASE 
WHEN (
@SQCategory = ''
OR @SQCategory = '<<ALL Categories>>'
)
THEN IsNull(tblInv.strCategory, '')
ELSE @SQCategory
END
)
AND (
IsNull(tblInv.strSubCategory, '') = CASE 
WHEN (
@SQSubCategory = '<<ALL Sub Categories>>'
OR @SQSubCategory = ''
)
THEN IsNull(tblInv.strSubCategory, '')
ELSE @SQSubCategory
END
)
AND (
IsNull(tblInvExt.strLocName, '') = CASE 
WHEN (
@SQLocation = '<<All Locations>>'
OR @SQLocation = ''
)
THEN IsNull(tblInvExt.strLocName, '')
ELSE @SQLocation
END
)
AND (tblInvExt.bitInactive = 0)
AND (tblInv.bitInactive = 0)
AND (
tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
OR (
(
@Keyword1 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
)
AND (
@Keyword2 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
)
AND (
@Keyword3 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
)
AND (
@Keyword4 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
)
AND (
@Keyword5 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
)
AND (
@Keyword6 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
)
AND (
@Keyword7 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
)
AND (
@Keyword8 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
)
AND (
@Keyword9 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
)
AND (
@Keyword10 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
)
)
OR (
(
@Keyword1 = ''
OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
)
AND (
@Keyword2 = ''
OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
)
AND (
@Keyword3 = ''
OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
)
AND (
@Keyword4 = ''
OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
)
AND (
@Keyword5 = ''
OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
)
AND (
@Keyword6 = ''
OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
)
AND (
@Keyword7 = ''
OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
)
AND (
@Keyword8 = ''
OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
)
AND (
@Keyword9 = ''
OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
)
AND (
@Keyword10 = ''
OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
)
)
OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
)
GROUP BY tblInv.strPartNumber
,tblInv.strDesc
,tblInv.strCategory
,tblInv.strSubCategory
,decSumOnHand
,tblInvPrice.strUnit
,tblInvUOMs.decConversionFactor
,tblInvUOMs.strConversionType
,dbo.tblInvUOMs.strPartNumber
) AS tblTemp1
WHERE tblTemp1.decSumOnHand <> 0
) AS Result
WHERE RowNumber >= (@Offset + 1)
AND RowNumber <= (@Offset + @PageSize)
ORDER BY RowNumber
END
ELSE
BEGIN
SELECT *
FROM (
SELECT 0 AS bitSelect
,*
,CASE 
WHEN @SQApply = 0
THEN 0
ELSE Cast(decSumOnHand AS INT)
END AS intAmount
,ROW_NUMBER() OVER (
ORDER BY strCategory
) AS RowNumber
,COUNT(*) OVER () AS intRowCount
FROM (
SELECT tblInv.strPartNumber
,tblInv.strDesc
,tblInv.strCategory
,tblInv.strSubCategory
--,tblInvExt.strLocName
,(
SELECT TOP 1 t.decSelling
FROM tblInvPrice t
WHERE t.strPartNumber = tblInv.strPartNumber
AND t.strPricelist = @SQPricelist
AND t.uidPriceBasedID = @SQuidPriceBasedID
) AS decSelling
,isnull((
SELECT CASE 
WHEN Sum(tblInvExtBin.decOnHand) = 0
THEN 0
ELSE (
CASE 
WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '') = ''
THEN Sum(tblInvExtBin.decOnHand)
ELSE CASE dbo.tblInvUOMs.strConversionType
WHEN 'Multiply'
THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor
ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor
END
END
)
END AS decSumOnHand
FROM tblInvExt
INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
AND tblInvExtBin.strLocName = tblInvExt.strLocName
INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
AND (
[tblInvLocBin].strBinCode = CASE 
WHEN (
@SQBinCode = ''
OR @SQBinCode = '<<All Bin Locations>>'
)
THEN IsNull([tblInvLocBin].strBinCode, '')
ELSE @SQBinCode
END
)
AND (
IsNull(tblInvLocBin.strLocName, '') = CASE 
WHEN (
@SQLocation = '<<All Locations>>'
OR @SQLocation = ''
)
THEN IsNull(tblInvLocBin.strLocName, '')
ELSE @SQLocation
END
)
AND tblInvExt.bitInactive = 0
), 0) AS decSumOnHand
,(
SELECT dteUpdatedDate
FROM dbo.tblInvPriceTracking
WHERE dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber
AND tblInvPriceTracking.lngInvPriceTrackID IN (
SELECT Max(a.lngInvPriceTrackID)
FROM tblInvPriceTracking a
WHERE (a.uidPriceBasedID = @SQuidPriceBasedID)
GROUP BY a.strPartNumber
)
) AS dteUpdatedDate
,tblInvPrice.strUnit
--,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
FROM [tblInvExt]
INNER JOIN [tblInv] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
INNER JOIN dbo.tblInvPrice(NOLOCK) ON (
dbo.tblInvPrice.uidPriceBasedID = @SQuidPriceBasedID
OR @SQuidPriceBasedID IS NULL
)
AND tblInvPrice.strPartNumber = [tblInv].strPartNumber
LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber
AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
AND dbo.tblInvUOMS.bitInactive = 0
WHERE (
tblInv.intType IN (
1
,11
)
)
AND (tblInvPrice.strPricelist = @SQPricelist)
AND (
IsNull(tblInv.strCategory, '') = CASE 
WHEN (
@SQCategory = ''
OR @SQCategory = '<<ALL Categories>>'
)
THEN IsNull(tblInv.strCategory, '')
ELSE @SQCategory
END
)
AND (
IsNull(tblInv.strSubCategory, '') = CASE 
WHEN (
@SQSubCategory = '<<ALL Sub Categories>>'
OR @SQSubCategory = ''
)
THEN IsNull(tblInv.strSubCategory, '')
ELSE @SQSubCategory
END
)
AND (
IsNull(tblInvExt.strLocName, '') = CASE 
WHEN (
@SQLocation = '<<All Locations>>'
OR @SQLocation = ''
)
THEN IsNull(tblInvExt.strLocName, '')
ELSE @SQLocation
END
)
AND (tblInvExt.bitInactive = 0)
AND (tblInv.bitInactive = 0)
AND (
tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
OR (
(
@Keyword1 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
)
AND (
@Keyword2 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
)
AND (
@Keyword3 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
)
AND (
@Keyword4 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
)
AND (
@Keyword5 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
)
AND (
@Keyword6 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
)
AND (
@Keyword7 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
)
AND (
@Keyword8 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
)
AND (
@Keyword9 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
)
AND (
@Keyword10 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
)
)
OR (
(
@Keyword1 = ''
OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
)
AND (
@Keyword2 = ''
OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
)
AND (
@Keyword3 = ''
OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
)
AND (
@Keyword4 = ''
OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
)
AND (
@Keyword5 = ''
OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
)
AND (
@Keyword6 = ''
OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
)
AND (
@Keyword7 = ''
OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
)
AND (
@Keyword8 = ''
OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
)
AND (
@Keyword9 = ''
OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
)
AND (
@Keyword10 = ''
OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
)
)
OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
)
GROUP BY tblInv.strPartNumber
,tblInv.strDesc
,tblInv.strCategory
,tblInv.strSubCategory
,tblInvPrice.strUnit
,tblInvUOMs.decConversionFactor
,tblInvUOMs.strConversionType
,dbo.tblInvUOMs.strPartNumber
) AS tblTemp2
WHERE tblTemp2.decSumOnHand <> 0
) AS results
WHERE RowNumber >= (@Offset + 1)
AND RowNumber <= (@Offset + @PageSize)
ORDER BY RowNumber
END
END
ELSE
BEGIN
IF @SQWithPrice = 0
BEGIN
SELECT *
FROM (
SELECT 0 AS bitSelect
,tblInv.strPartNumber
,tblInv.strDesc
,tblInv.strCategory
,tblInv.strSubCategory
--,tblInvExt.strLocName
,tblInvPrice.decSelling
,isnull((
SELECT CASE 
WHEN Sum(tblInvExtBin.decOnHand) = 0
THEN 0
ELSE (
CASE 
WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '') = ''
THEN Sum(tblInvExtBin.decOnHand)
ELSE CASE dbo.tblInvUOMs.strConversionType
WHEN 'Multiply'
THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor
ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor
END
END
)
END AS decSumOnHand
FROM tblInvExt
INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
AND tblInvExtBin.strLocName = tblInvExt.strLocName
INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
AND (
[tblInvLocBin].strBinCode = CASE 
WHEN (
@SQBinCode = ''
OR @SQBinCode = '<<All Bin Locations>>'
)
THEN IsNull([tblInvLocBin].strBinCode, '')
ELSE @SQBinCode
END
)
AND (
IsNull(tblInvLocBin.strLocName, '') = CASE 
WHEN (
@SQLocation = '<<All Locations>>'
OR @SQLocation = ''
)
THEN IsNull(tblInvLocBin.strLocName, '')
ELSE @SQLocation
END
)
AND tblInvExt.bitInactive = 0
), 0) AS decSumOnHand
,(
CASE 
WHEN @SQApply = 0
THEN 0
ELSE CAST(isnull((
SELECT Sum(tblInvExtBin.decOnHand)
FROM tblInvExt
INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
AND tblInvExtBin.strLocName = tblInvExt.strLocName
INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
AND (
[tblInvLocBin].strBinCode = CASE 
WHEN (
@SQBinCode = ''
OR @SQBinCode = '<<All Bin Locations>>'
)
THEN IsNull([tblInvLocBin].strBinCode, '')
ELSE @SQBinCode
END
)
AND (
IsNull(tblInvLocBin.strLocName, '') = CASE 
WHEN (
@SQLocation = '<<All Locations>>'
OR @SQLocation = ''
)
THEN IsNull(tblInvLocBin.strLocName, '')
ELSE @SQLocation
END
)
AND tblInvExt.bitInactive = 0
), 0) AS INT)
END
) AS intAmount
,tblInvPriceTracking.dteUpdatedDate
--,tblInvPriceTracking.decPriceFrom
--,tblInvPriceTracking.decPriceTo
,COUNT(*) OVER () AS intRowCount
,ROW_NUMBER() OVER (
ORDER BY tblInv.strCategory
) AS RowNumber
,tblInvPrice.strUnit
FROM tblInv
INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
AND tblInvPrice.strPartNumber = [tblInv].strPartNumber
INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
INNER JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber
AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
AND dbo.tblInvUOMS.bitInactive = 0
--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
WHERE (
tblInv.intType IN (
1
,11
)
)
AND (tblInvPrice.strPricelist = 'REGULAR')
AND (
@SQDate BETWEEN tblPriceListsByDate.dteStartDate
AND tblPriceListsByDate.dteFinishDate
)
AND (
IsNull(tblInv.strCategory, '') = CASE 
WHEN (
@SQCategory = ''
OR @SQCategory = '<<ALL Categories>>'
)
THEN IsNull(tblInv.strCategory, '')
ELSE @SQCategory
END
)
AND (
IsNull(tblInv.strSubCategory, '') = CASE 
WHEN (
@SQSubCategory = '<<ALL Sub Categories>>'
OR @SQSubCategory = ''
)
THEN IsNull(tblInv.strSubCategory, '')
ELSE @SQSubCategory
END
)
AND (
IsNull(tblInvExt.strLocName, '') = CASE 
WHEN (
@SQLocation = '<<All Locations>>'
OR @SQLocation = ''
)
THEN IsNull(tblInvExt.strLocName, '')
ELSE @SQLocation
END
)
AND (tblInvExt.bitInactive = 0)
AND (tblInv.bitInactive = 0)
AND (
tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
OR (
(
@Keyword1 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
)
AND (
@Keyword2 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
)
AND (
@Keyword3 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
)
AND (
@Keyword4 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
)
AND (
@Keyword5 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
)
AND (
@Keyword6 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
)
AND (
@Keyword7 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
)
AND (
@Keyword8 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
)
AND (
@Keyword9 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
)
AND (
@Keyword10 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
)
)
OR (
(
@Keyword1 = ''
OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
)
AND (
@Keyword2 = ''
OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
)
AND (
@Keyword3 = ''
OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
)
AND (
@Keyword4 = ''
OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
)
AND (
@Keyword5 = ''
OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
)
AND (
@Keyword6 = ''
OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
)
AND (
@Keyword7 = ''
OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
)
AND (
@Keyword8 = ''
OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
)
AND (
@Keyword9 = ''
OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
)
AND (
@Keyword10 = ''
OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
)
)
OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
)
AND tblInvPriceTracking.lngInvPriceTrackID IN (
SELECT Max(a.lngInvPriceTrackID)
FROM tblInvPriceTracking a
INNER JOIN tblPriceListsByDate b ON a.uidPriceBasedID = b.uidPriceBasedID
WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
AND (
@SQDate BETWEEN b.dteStartDate
AND b.dteFinishDate
)
AND (a.strPricelist = 'REGULAR')
GROUP BY a.strPartNumber
)
--AND (tblInvExtBin.decOnHand <> 0)
GROUP BY tblInv.strPartNumber
,tblInv.strDesc
,tblInv.strCategory
,tblInv.strSubCategory
,tblInvPrice.decSelling
,tblInvPriceTracking.dteUpdatedDate
,tblInvPrice.strUnit
,tblInvUOMs.decConversionFactor
,tblInvUOMs.strConversionType
,dbo.tblInvUOMs.strPartNumber
--	,tblInvPriceTracking.decPriceFrom
--,tblInvPriceTracking.decPriceTo
--	Having decSumOnHand <> 0
--ORDER BY tblInv.strPartNumber
) AS tblTemp3
WHERE tblTemp3.decSumOnHand <> 0
AND RowNumber >= (@Offset + 1)
AND RowNumber <= (@Offset + @PageSize)
ORDER BY RowNumber
END
ELSE
BEGIN
SELECT *
FROM (
SELECT 0 AS bitSelect
,tblInv.strPartNumber
,tblInv.strDesc
,tblInv.strCategory
,tblInv.strSubCategory
--,tblInvExt.strLocName
,tblInvPrice.decSelling
,isnull((
SELECT CASE 
WHEN Sum(tblInvExtBin.decOnHand) = 0
THEN 0
ELSE (
CASE 
WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '') = ''
THEN Sum(tblInvExtBin.decOnHand)
ELSE CASE dbo.tblInvUOMs.strConversionType
WHEN 'Multiply'
THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor
ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor
END
END
)
END AS decSumOnHand
FROM tblInvExt
INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
AND tblInvExtBin.strLocName = tblInvExt.strLocName
INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
AND (
[tblInvLocBin].strBinCode = CASE 
WHEN (
@SQBinCode = ''
OR @SQBinCode = '<<All Bin Locations>>'
)
THEN IsNull([tblInvLocBin].strBinCode, '')
ELSE @SQBinCode
END
)
AND (
IsNull(tblInvLocBin.strLocName, '') = CASE 
WHEN (
@SQLocation = '<<All Locations>>'
OR @SQLocation = ''
)
THEN IsNull(tblInvLocBin.strLocName, '')
ELSE @SQLocation
END
)
AND tblInvExt.bitInactive = 0
), 0) AS decSumOnHand
,(
CASE 
WHEN @SQApply = 0
THEN 0
ELSE CAST(isnull((
SELECT CASE 
WHEN Sum(tblInvExtBin.decOnHand) = 0
THEN 0
ELSE (
CASE 
WHEN ISNULL(dbo.tblInvUOMs.strPartNumber, '') = ''
THEN Sum(tblInvExtBin.decOnHand)
ELSE CASE dbo.tblInvUOMs.strConversionType
WHEN 'Multiply'
THEN Sum(tblInvExtBin.decOnHand) / dbo.tblInvUOMs.decConversionFactor
ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor
END
END
)
END AS decSumOnHand
FROM tblInvExt
INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
AND tblInvExtBin.strLocName = tblInvExt.strLocName
INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
AND (
[tblInvLocBin].strBinCode = CASE 
WHEN (
@SQBinCode = ''
OR @SQBinCode = '<<All Bin Locations>>'
)
THEN IsNull([tblInvLocBin].strBinCode, '')
ELSE @SQBinCode
END
)
AND (
IsNull(tblInvLocBin.strLocName, '') = CASE 
WHEN (
@SQLocation = '<<All Locations>>'
OR @SQLocation = ''
)
THEN IsNull(tblInvLocBin.strLocName, '')
ELSE @SQLocation
END
)
AND tblInvExt.bitInactive = 0
), 0) AS INT)
END
) AS intAmount
,tblInvPriceTracking.dteUpdatedDate
--	,tblInvPriceTracking.decPriceFrom
--,tblInvPriceTracking.decPriceTo
,COUNT(*) OVER () AS intRowCount
,ROW_NUMBER() OVER (
ORDER BY tblInv.strCategory
) AS RowNumber
,tblInvPrice.strUnit
FROM tblInv
INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
AND tblInvPrice.strPartNumber = [tblInv].strPartNumber
INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
INNER JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
LEFT JOIN dbo.tblInvUOMs(NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber
AND dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
AND dbo.tblInvUOMS.bitInactive = 0
--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
WHERE (
tblInv.intType IN (
1
,11
)
)
AND (tblInvPrice.strPricelist = @SQPricelist)
AND (tblPriceListsByDate.uidPriceBasedID = @SQuidPriceBasedID)
AND (
IsNull(tblInv.strCategory, '') = CASE 
WHEN (
@SQCategory = ''
OR @SQCategory = '<<ALL Categories>>'
)
THEN IsNull(tblInv.strCategory, '')
ELSE @SQCategory
END
)
AND (
IsNull(tblInv.strSubCategory, '') = CASE 
WHEN (
@SQSubCategory = '<<ALL Sub Categories>>'
OR @SQSubCategory = ''
)
THEN IsNull(tblInv.strSubCategory, '')
ELSE @SQSubCategory
END
)
AND (
IsNull(tblInvExt.strLocName, '') = CASE 
WHEN (
@SQLocation = '<<All Locations>>'
OR @SQLocation = ''
)
THEN IsNull(tblInvExt.strLocName, '')
ELSE @SQLocation
END
)
AND (tblInvExt.bitInactive = 0)
AND (tblInv.bitInactive = 0)
AND (
tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
OR (
(
@Keyword1 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword1 + '%'
)
AND (
@Keyword2 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword2 + '%'
)
AND (
@Keyword3 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword3 + '%'
)
AND (
@Keyword4 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword4 + '%'
)
AND (
@Keyword5 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword5 + '%'
)
AND (
@Keyword6 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword6 + '%'
)
AND (
@Keyword7 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword7 + '%'
)
AND (
@Keyword8 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword8 + '%'
)
AND (
@Keyword9 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword9 + '%'
)
AND (
@Keyword10 = ''
OR tblInv.strPartNumber LIKE '%' + @Keyword10 + '%'
)
)
OR (
(
@Keyword1 = ''
OR tblInv.strDesc LIKE '%' + @Keyword1 + '%'
)
AND (
@Keyword2 = ''
OR tblInv.strDesc LIKE '%' + @Keyword2 + '%'
)
AND (
@Keyword3 = ''
OR tblInv.strDesc LIKE '%' + @Keyword3 + '%'
)
AND (
@Keyword4 = ''
OR tblInv.strDesc LIKE '%' + @Keyword4 + '%'
)
AND (
@Keyword5 = ''
OR tblInv.strDesc LIKE '%' + @Keyword5 + '%'
)
AND (
@Keyword6 = ''
OR tblInv.strDesc LIKE '%' + @Keyword6 + '%'
)
AND (
@Keyword7 = ''
OR tblInv.strDesc LIKE '%' + @Keyword7 + '%'
)
AND (
@Keyword8 = ''
OR tblInv.strDesc LIKE '%' + @Keyword8 + '%'
)
AND (
@Keyword9 = ''
OR tblInv.strDesc LIKE '%' + @Keyword9 + '%'
)
AND (
@Keyword10 = ''
OR tblInv.strDesc LIKE '%' + @Keyword10 + '%'
)
)
OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
)
AND tblInvPriceTracking.lngInvPriceTrackID IN (
SELECT Max(a.lngInvPriceTrackID)
FROM tblInvPriceTracking a
WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
AND a.uidPriceBasedID = @SQuidPriceBasedID
GROUP BY a.strPartNumber
)
--AND (tblInvExtBin.decOnHand <> 0)
GROUP BY tblInv.strPartNumber
,tblInv.strDesc
,tblInv.strCategory
,tblInv.strSubCategory
,tblInvPrice.decSelling
,tblInvPriceTracking.dteUpdatedDate
,tblInvPrice.strUnit
,tblInvUOMs.decConversionFactor
,tblInvUOMs.strConversionType
,dbo.tblInvUOMs.strPartNumber
--	,tblInvPriceTracking.decPriceFrom
--,tblInvPriceTracking.decPriceTo
--Having decSumOnHand <> 0
--ORDER BY tblInv.strPartNumber
) AS tblTemp4
WHERE tblTemp4.decSumOnHand <> 0
AND RowNumber >= (@Offset + 1)
AND RowNumber <= (@Offset + @PageSize)
ORDER BY RowNumber
END
END
END
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBinLocation] @Location AS VARCHAR(Max)
AS
BEGIN
SELECT '<<ALL Bin Locations>>' AS BinCode
,'All' AS [Description]
UNION
SELECT strBinCode
,strDescription
FROM tblInvLocBin
WHERE strLocName = @Location
ORDER BY BinCode
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetLocationForBulkPrinting]
AS
BEGIN
SELECT '<<ALL Locations>>' AS LocName
,'<<ALL Locations>>' [Description]
UNION
SELECT strLocName
,strDesc
FROM tblInvLoc
ORDER BY LocName
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCategoryForBulkPrinting] @UserName AS NVARCHAR(max)
AS
BEGIN
SELECT tblInvCat.strCategory AS CatName
,ISNULL((
SELECT COUNT(tblInvCatSec.strCategory)
FROM tblInvCatSec
WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
), 0) AS [Count]
,ISNULL(tblInvCatSec.strUserName, '') AS UserName
FROM tblInvCat
LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
AND tblInvCatSec.strUserName = @UserName
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetSubCategory] @Category AS NVARCHAR(20) 
AS
BEGIN
SELECT strCategory AS Category
,strDesc AS Description
,strParentCategory AS ParentCategory
FROM tblInvSubCat
WHERE strParentCategory = @Category
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetSerialTypesDetails] @SerialType AS NVARCHAR(20)
AS
BEGIN
SELECT strBCFlag AS BCFlag
	,bitBC1Enabled AS IsBC1Enabled
	,strBC1Type AS BC1Type
	,CAST(ISNULL(intBC1StartPos, 0) AS int) AS BC1StartPos
	,CAST(ISNULL(intBC1EndPos, 0) AS int) AS BC1EndPos
	,bitBC2Enabled AS IsBC2Enabled
	,strBC2Type AS BC2Type
	,CAST(ISNULL(intBC2StartPos, 0) as int) AS BC2StartPos
	,CAST(ISNULL(intBC2EndPos, 0) as int) AS BC2EndPos
	,bitBC3Enabled AS IsBC3Enabled
	,strBC3Type AS BC3Type
	,CAST(ISNULL(intBC3StartPos, 0) as int) AS BC3StartPos
	,CAST(ISNULL(intBC3EndPos, 0) as int) AS BC3EndPos
	,bitBC4Enabled AS IsBC4Enabled
	,strBC4Type AS BC4Type
	,CAST(ISNULL(intBC4StartPos, 0) as int) AS BC4StartPos
	,CAST(ISNULL(intBC4EndPos, 0) as int) AS BC4EndPos
	,bitBC5Enabled AS IsBC5Enabled
	,strBC5Type AS BC5Type
	,CAST(ISNULL(intBC5StartPos, 0) as int) AS BC5StartPos
	,CAST(ISNULL(intBC5EndPos, 0) as int) AS BC5EndPos
	,bitBCFormat AS IsBCFormat
FROM tblInvSerialTypes
WHERE bitBCBreakdown = 1
AND strInvSerialType = @SerialType
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCompanyDataForCompany] @CompanyName AS NVARCHAR(50)
AS
BEGIN
SELECT [strName] AS Name
,[strStreet1] AS Street1
,[strStreet2] AS Street2
,[strCity] AS City
,[strProvince] AS Province
,[strPostal] AS Postal
,[strCountry] AS Country
,[strPhone1] AS Phone1
,[strPhone2] AS Phone2
,[strFax] AS Fax
,[strEmail] AS Email
,[strCK] AS CK
,[strVAT] AS VAT
,[dteLYStarted] AS LYStarted
,[dteLYEnded] AS LYEnded
,[dteYearStarts] AS YearStarts
,[dteYearEnds] AS YearEnds
,[dteEarliestTran] AS EarliestTran
,[dtePeriodClose] AS PeriodClose
,[strCountryCode] AS CountryCode
,[imgLogo] AS [Logo]
,[strCoSerial] AS CoSerial
,[strCloudUsername] AS CloudUserName
,[strCloudPassword] AS CloudPassword
FROM [dbo].[tblCompany]
WHERE [strName] = @CompanyName
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvAsmDocDetails] @DocNumber AS VARCHAR(50)
AS
BEGIN
	SELECT intAsmDocID AS AsmDocID
		,strAsmDocID AS DocNumber
		,lngJourID AS JournalID
		,dteJournalDate AS JournalDate
		,strComment AS Comment
		,intAccount AS Account
		,ISNULL((
				SELECT strDesc 
				FROM tblAccounts
				WHERE intGLNumber = tblInvAsmDoc.intAccount
				), '') AS [Description]
		,decAddCost AS AddCost
		,decTotalCostCom AS TotalCostCom
		,decTotalCostFin AS TotalCostFin
		,isnull(intDept, 0) AS Department
	FROM tblInvAsmDoc
	WHERE strAsmDocID = @DocNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateProductionJobForAssembly] (
@CompletedDate AS SMALLDATETIME
,@ManQty AS DECIMAL
,@ProdNumber AS VARCHAR(50)
)
AS
BEGIN
UPDATE tblProductionSchedule
SET blnCompleted = 1
,dteCompletedDate = @CompletedDate
,decManQty = @ManQty
WHERE strProdNumber = @ProdNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateWorkForAssembly] (@DocNumber AS VARCHAR(50))
AS
BEGIN
UPDATE tblInvWorkOrder
SET bitCleared = CASE 
WHEN ISNULL((
SELECT COUNT(blnCompleted)
FROM tblProductionSchedule
WHERE strInvWODocID = tblInvWorkOrder.strInvWODocID
AND blnCompleted = 0
), 0) = 0
THEN 1
ELSE 0
END
WHERE strInvWODocID = @DocNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvDetailsByPartNumber] (@PartNumber AS NVARCHAR(50))
AS
BEGIN
SELECT strPartNumber AS PartNumber
,strCategory AS Category
,strSubCategory AS SubCategory
FROM tblinv
WHERE strPartNumber = @PartNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvExtBinItems] (
	@Location NVARCHAR(50)
	,@BinCode NVARCHAR(50)
	,@Number NVARCHAR(50)
	)
AS
BEGIN
	SELECT IEB.strPartNumber AS PartNumber
		,inv.strCategory AS Category
		,inv.strSubCategory AS SubCategory
	FROM tblInvExtBin IEB
	INNER JOIN tblInvLocBin LB ON IEB.lngBinID = LB.lngID
	INNER JOIN tblInv inv ON IEB.strPartNumber = inv.strPartNumber
	WHERE IEB.strLocName = @Location
		AND LB.strBinCode = @BinCode
		AND inv.intType = 1
		AND IEB.decOnHand > 0
		AND IEB.strPartNumber <> @Number
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvLocBinUserCount] (
@Location AS VARCHAR(50)
,@BinCode AS VARCHAR(50)
,@UserName AS VARCHAR(50)
,@UserCountOnUserID AS BIT
)
AS
BEGIN
IF (@UserCountOnUserID = 0)
BEGIN
SELECT COUNT(strUserName)
FROM tblInvLocBinSec
WHERE strLocName = @Location
AND strBinCode = @BinCode
END
ELSE
BEGIN
SELECT COUNT(strUserName)
FROM tblInvLocBinSec
WHERE strLocName = @Location
AND strUserName = @UserName
AND strBinCode = @BinCode
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetProductionScheduleDetailsForAssemblyJobs] (@ProdNumber AS NVARCHAR(50))
AS
BEGIN
SELECT PS.strPartNumber AS PartNumber
,PS.decReqQty AS RequiredQty
,PS.strLocName AS LocName
,PS.blnDisassemble AS Disassemble
,INV.strDesc AS [Description]
,INV.intBOMQty AS BOMQty
,INV.bitInvSerialType AS SerialType
,ISNULL((
SELECT tblInvExt.decOnHand
FROM tblInvExt
WHERE tblInvExt.strPartNumber = PS.strPartNumber
AND tblInvExt.strLocName = PS.strLocName
), 0) AS OnHandQty
,ISNULL(IST.bitDimensionExist, 0) AS DimensionExist
,ISNULL((
SELECT tblInvExt.decAvail
FROM tblInvExt
WHERE tblInvExt.strPartNumber = PS.strPartNumber
AND tblInvExt.strLocName = PS.strLocName
), 0) AS decAvail
FROM tblProductionSchedule PS
INNER JOIN tblInv INV ON INV.strPartNumber = PS.strPartNumber
LEFT JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType
WHERE strProdNumber = @ProdNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetAssemblyComponentListForWorkOrder] (@PartNumber AS NVARCHAR(50))
AS
BEGIN
SELECT tblInvBOM.strPartItemNumber AS PartNumber
,tblInv.strDesc AS [Description]
,tblInvBOM.intQtyToUse AS UsedQty
,tblInv.bitInvSerialType AS InventorySerialNumber
,tblInvBOM.strLocName AS LocName
,tblInvExt.decOnHand AS OnHandQty
,tblInvExt.decAvail AS decAvail
,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS DimensionExist
FROM tblInvBOM
INNER JOIN tblInv ON tblInvBOM.strPartItemNumber = tblInv.strPartNumber
INNER JOIN tblInvExt ON tblInvBOM.strPartItemNumber = tblInvExt.strPartNumber
AND tblInvBOM.strLocName = tblInvExt.strLocName
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblInvBOM.strPartNumber = @PartNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetAssemblyListForWorkOrder] (@ProdNumber AS NVARCHAR(50))
AS
BEGIN
SELECT PS.strPartNumber AS PartNumber
,PS.strLocName AS LocName
,PS.decReqQty AS RequiredQty
,INV.strDesc AS [Description]
,PS.strProdNumber AS ProdNumber
,INV.intBOMQty AS BOMQty
,INV.bitInvSerialType AS InventorySerialNumber
,INV.decSumOnHand AS SumOnHand
,INV.decSumAvail AS decAvail
,ISNULL(IST.bitDimensionExist, 0) AS DimensionExist
FROM tblInvWorkOrder WO
INNER JOIN tblProductionSchedule PS ON WO.strInvWODocID = PS.strInvWODocID
INNER JOIN tblInv INV ON INV.strPartNumber = PS.strPartNumber
LEFT JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType
WHERE WO.strInvWODocID = @ProdNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCountOfInvAsmDocDT] @DocNumber NVARCHAR(50)  
AS  
BEGIN  
SELECT cast(ISNULL(COUNT(*), 0)  as bigint)
FROM tblInvAsmDocDT  
WHERE bitComponents = 0  
AND strAsmDocID = @DocNumber  
END  
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[FillDataStockList] (@DocNumber NVARCHAR(MAX))
AS
BEGIN
SELECT strAsmDocID
,dteJournalDate
,strComment
FROM tblInvAsmDoc
WHERE tblInvAsmDoc.strAsmDocID = @DocNumber
SELECT tblInvAsmDocDT.strAsmDocID
,tblInvAsmDocDT.intLineNo
,tblInvAsmDocDT.strPartNumber
,tblInv.strDesc
,tblInvAsmDocDT.decQty
,tblInv.strSellUnit
,tblInvAsmDocDT.strLocName
FROM tblInvAsmDocDT
INNER JOIN tblInv ON tblInvAsmDocDT.strPartNumber = tblInv.strPartNumber
WHERE tblInvAsmDocDT.strAsmDocID = @DocNumber
AND tblInvAsmDocDT.bitComponents = 1
ORDER BY tblInvAsmDocDT.intLineNo
SELECT tblInvAsmDocDTSerial.*
,ISNULL(tblInvSerialExt.bitDimensionExist, 0) AS bitDimensionExist
,ISNULL(tblInvSerialExt.strDimension, '') AS strDimension
FROM tblInvAsmDocDTSerial
INNER JOIN tblInvAsmDocDT ON tblInvAsmDocDTSerial.strAsmDocID = tblInvAsmDocDT.strAsmDocID
AND tblInvAsmDocDTSerial.intLineNo = tblInvAsmDocDT.intLineNo
LEFT JOIN tblInvSerialExt ON tblInvAsmDocDT.strPartNumber = tblInvSerialExt.strPartNumber
AND tblInvAsmDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
INNER JOIN tblInv ON tblInvAsmDocDT.strPartNumber = tblInv.strPartNumber
AND tblInvAsmDocDT.bitComponents = 1
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblInvAsmDocDTSerial.strAsmDocID = @DocNumber
AND tblInvSerialTypes.bitPrintInv = 1
ORDER BY tblInvAsmDocDTSerial.intLineNo
SELECT DISTINCT tblInv.*
FROM tblInvAsmDocDT
INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvAsmDocDT.strPartNumber = tblInv.strPartNumber
AND tblInvAsmDocDT.strLocName = tblInv.strLocName
WHERE strAsmDocID = @DocNumber
AND bitComponents = 1
SELECT strAsmDocID
,intLineNo
,lngBinId
,strBinCode = (
SELECT strBinCode
FROM tblInvLocBin
WHERE lngId = tblInvAsmDocDTBin.lngBinId
)
,decQty
FROM tblInvAsmDocDTBin
WHERE strAsmDocID = @DocNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[FillDataInvAssembly] (@DocNumber NVARCHAR(MAX))
AS
BEGIN
DECLARE @Count bigint;
Select @Count = cast(ISNULL(COUNT(*), 0)  as bigint)
FROM tblInvAsmDocDT  
WHERE bitComponents = 0  
AND strAsmDocID = @DocNumber 
SELECT tblInvAsmDocDT.strAsmDocID
,tblInvAsmDocDT.intLineNo
,tblInvAsmDocDT.strPartNumber AS PartNumber
,tblInvAsmDocDT.decQty AS Quantity
,tblInv.strDesc AS Description
,tblInvAsmDocDT.decUnitCost AS UnitCost
,tblInvAsmDocDT.decAmount AS Amount
,CASE 
WHEN tblInvAsmDocDT.bitComponents = 1
THEN 'Assembly Components'
ELSE 'Assembled Items'
END AS ItemType
,tblInvAsmDocDT.strLocName AS LocName
FROM tblInvAsmDocDT
INNER JOIN tblInv ON tblInvAsmDocDT.strPartNumber = tblInv.strPartNumber
WHERE tblInvAsmDocDT.strAsmDocID = @DocNumber
ORDER BY tblInvAsmDocDT.intLineNo
SELECT tblInvAsmDocDTSerial.*
,ISNULL(tblInvSerialExt.bitDimensionExist, 0) AS bitDimensionExist
,ISNULL(tblInvSerialExt.strDimension, '') AS strDimension
FROM tblInvAsmDocDTSerial
INNER JOIN tblInvAsmDocDT ON tblInvAsmDocDTSerial.strAsmDocID = tblInvAsmDocDT.strAsmDocID
AND tblInvAsmDocDTSerial.intLineNo = tblInvAsmDocDT.intLineNo
LEFT JOIN tblInvSerialExt ON tblInvAsmDocDT.strPartNumber = tblInvSerialExt.strPartNumber
AND tblInvAsmDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
INNER JOIN tblInv ON tblInvAsmDocDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblInvAsmDocDTSerial.strAsmDocID = @DocNumber
AND tblInvSerialTypes.bitPrintInv = 1
ORDER BY tblInvAsmDocDTSerial.intLineNo
if(@Count=1)
BEGIN
SELECT tblInvAsmDocDT.strAsmDocID
,tblInvAsmDocDT.intLineNo
,tblInvAsmDocDT.strPartNumber AS PartNumber
,tblInv.strDesc AS [Description]
,CASE 
WHEN tblInvAsmDocDT.bitComponents = 1
THEN 'Assembly Components'
ELSE 'Assembled Items'
END AS ItemType
,ISNULL(tblInvBOM.intQtyToUse, 0) AS EcoQuantity
,tblInvAsmDocDT.decUnitCost AS EcoUnitCost
,ISNULL((tblInvBOM.intQtyToUse * tblInvAsmDocDT.decUnitCost), 0) AS EcoAmount
,ISNULL(tblInvBOM.intQtyToUse, 0) / (
SELECT intBOMQty
FROM tblInv
WHERE strPartNumber = (
SELECT strPartNumber
FROM tblInvAsmDocDT
WHERE bitComponents = 0
AND strAsmDocID = @DocNumber
)
) AS BaseQuantity
,tblInvAsmDocDT.decUnitCost AS BaseUnitCost
,ISNULL((tblInvBOM.intQtyToUse * tblInvAsmDocDT.decUnitCost), 0) / (
SELECT intBOMQty
FROM tblInv
WHERE strPartNumber = (
SELECT strPartNumber
FROM tblInvAsmDocDT
WHERE bitComponents = 0
AND strAsmDocID = @DocNumber
)
) AS BaseAmount
,(
SELECT intBOMQty
FROM tblInv
WHERE strPartNumber = (
SELECT strPartNumber
FROM tblInvAsmDocDT
WHERE bitComponents = 0
AND strAsmDocID = @DocNumber
)
) AS BOMQty
FROM tblInvAsmDocDT
INNER JOIN tblInv ON tblInvAsmDocDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblInvBOM ON tblInvAsmDocDT.strPartNumber = tblInvBOM.strPartItemNumber
AND tblInvBOM.strPartNumber = (
SELECT strPartNumber
FROM tblInvAsmDocDT
WHERE bitComponents = 0
AND strAsmDocID = @DocNumber
)
WHERE tblInvAsmDocDT.strAsmDocID = @DocNumber
ORDER BY tblInvAsmDocDT.intLineNo
END

SELECT *
FROM tblInv
WHERE strPartNumber IN (
SELECT DISTINCT strPartNumber
FROM tblInvAsmDocDT
WHERE strAsmDocID = @DocNumber
)
SELECT strAsmDocID
,intLineNo
,lngBinId
,strBinCode = (
SELECT strBinCode
FROM tblInvLocBin
WHERE lngId = tblInvAsmDocDTBin.lngBinId
)
,decQty
FROM tblInvAsmDocDTBin
WHERE strAsmDocID = @DocNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetAssemblyTopList] @PartNumber AS NVARCHAR(50)
AS
BEGIN
SELECT tblInvBOM.strPartItemNumber AS PartNumber
,tblInv.strDesc AS [Description]
,tblInvBOM.intQtyToUse AS Quantity
,tblInv.bitInvSerialType AS SerialType
,tblInvBOM.strLocName AS LocName
,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS DimensionExist
FROM tblInvBOM
INNER JOIN tblInv ON tblInvBOM.strPartItemNumber = tblInv.strPartNumber
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblInvBOM.strPartNumber = @PartNumber
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOnHandQtyFromInvExt] @PartNumber AS NVARCHAR(50)
,@DefaultLocation AS NVARCHAR(50)
AS
BEGIN
SELECT decOnHand
FROM tblInvExt
WHERE strPartNumber = @PartNumber
AND strLocName = @DefaultLocation
END
GO
----------------------------------------------------
CREATE PROCEDURE GetARDefDeptFromCompanyOption
AS
BEGIN
SELECT bitARDefDept AS ARDefDept
FROM tblCoOpts
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetMinMaxASMDocID] @DocNumber AS VARCHAR(50)
,@IsPrev AS BIT
AS
BEGIN
IF (@IsPrev = 1)
BEGIN
SELECT MAX(strAsmDocID)
FROM tblInvAsmDoc
WHERE strAsmDocID < @DocNumber
END
ELSE
BEGIN
SELECT MIN(strAsmDocID)
FROM tblInvAsmDoc
WHERE strAsmDocID > @DocNumber
END
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetSerialTypes] @PartNumber AS NVARCHAR(50)
AS
BEGIN
SELECT tblInv.bitInvSerialType AS SerialType
,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS DimensionExist
FROM tblInv
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblInv.strPartNumber = @PartNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvExtDetails] (
	@Part NVARCHAR(100)
	,@Loc NVARCHAR(100)
	)
AS
BEGIN
	SELECT decValue AS 'Value'
		,decOnHand AS 'OnHand'
		,decAvail AS 'Avail'
	FROM tblInvExt
	WHERE strPartNumber = @Part
		AND strLocName = @Loc
END
GO

----------------------------------------------------
CREATE PROCEDURE GetSOUnavailable
AS
BEGIN
SELECT intSOUnavailable
FROM tblCoOpts
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetMinMaxWODocID] @DocNumber AS VARCHAR(50)
,@IsPrev AS BIT
AS
BEGIN
IF (@IsPrev = 1)
BEGIN
SELECT MAX(strInvWODocID)
FROM tblInvWorkOrder
WHERE strInvWODocID < @DocNumber
AND bitCleared = 0
END
ELSE
BEGIN
SELECT MIN(strInvWODocID)
FROM tblInvWorkOrder
WHERE strInvWODocID > @DocNumber
AND bitCleared = 0
END
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBOMNotes] @PartNumber AS NVARCHAR(50)
AS
BEGIN
SELECT ISNULL(strBOMNotes, '')
FROM tblInv
WHERE strPartNumber = @PartNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE GetWOListDetails @DocNumber AS NVARCHAR(50)
AS
BEGIN
SELECT strProdNumber AS JobNumber
,ISNULL(tblProductionSchedule.strOrdDocID, '') AS OrdDocID
,dteDueDate AS ReqDate
,ISNULL(tblOrderDoc.strCustName, '') AS CustName
,ISNULL(strCustDesc, '') AS CustDesc
,tblProductionSchedule.strPartNumber AS PartNumber
,tblInv.strDesc AS PartDesc
,strLocName AS Location
,decReqQty AS ReqQty
,ISNULL(tblProductionSchedule.strNotes, '') AS Notes
,tblProductionSchedule.blnCompleted AS Completed
,tblProductionSchedule.bitCleared AS IsCleared
,ISNULL(tblProductionSchedule.strInvWCCode, '') AS WorkCentre
FROM tblProductionSchedule
INNER JOIN tblInv ON tblProductionSchedule.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblOrderDoc ON tblProductionSchedule.strOrdDocID = tblOrderDoc.strOrdDocID
LEFT JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
WHERE strInvWODocID = @DocNumber
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetWOComponentList] @DocNumber AS NVARCHAR(50)
AS
BEGIN
SELECT tblProductionSchedule.strProdNumber AS JobNumber
,tblProductionScheduleDT.strPartNumber AS PartNumber
,tblInv.strDesc AS ItemPartNumberDesc
,tblProductionScheduleDT.strLocName AS LocName
,tblProductionScheduleDT.decReqQty AS Qty
,tblProductionSchedule.blnCompleted AS Completed
,tblProductionSchedule.bitCleared AS UseBOM
,tblProductionScheduleDT.lngID as ScheduleID
FROM tblProductionSchedule
INNER JOIN tblProductionScheduleDT ON tblProductionSchedule.strProdNumber = tblProductionScheduleDT.strProdNumber
INNER JOIN tblInv ON tblProductionScheduleDT.strPartNumber = tblInv.strPartNumber
WHERE tblProductionSchedule.strInvWODocID = @DocNumber
ORDER BY tblProductionScheduleDT.strProdNumber
,tblProductionScheduleDT.strPartNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetComponentList] @PartNumber AS NVARCHAR(50)
AS
BEGIN
SELECT BOM.strPartItemNumber AS PartItemNumber
,INV2.strDesc AS [Desc]
,BOM.intQtyToUse AS QtyToUse
,BOM.strLocName AS LocName
,INV.intBOMQty AS QtyBOM
,ISNULL((
SELECT decAvail
FROM tblInvExt
WHERE strPartNumber = BOM.strPartItemNumber
AND strLocName = BOM.strLocName
), 0) AS StockAvail
,INV2.bitUseBOM AS UseBOM
FROM tblInvBOM BOM
INNER JOIN tblInv INV ON BOM.strPartNumber = INV.strPartNumber
INNER JOIN tblInv INV2 ON BOM.strPartItemNumber = INV2.strPartNumber
WHERE BOM.strPartNumber = @PartNumber
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetWorkOrderDetailsForProductionJob] @DocNumber AS NVARCHAR(50)
AS
BEGIN
SELECT strProdNumber AS ProdNumber
,dteDueDate AS DueDate
,tblProductionSchedule.strPartNumber AS PartNumber
,tblInv.strDesc AS PartDesc
,strLocName AS Location
,decReqQty AS ReqQty
,tblInv.strBOMNotes AS Notes
,ISNULL(tblProductionSchedule.strInvWCCode, '') AS InvWCCode
FROM tblProductionSchedule
INNER JOIN tblInv ON tblProductionSchedule.strPartNumber = tblInv.strPartNumber
WHERE strProdNumber = @DocNumber
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetComponentDetailsForProductionJob] @DocNumber AS NVARCHAR(50)
AS
BEGIN
SELECT strProdNumber AS ProdNumber
,tblProductionScheduleDT.strPartNumber AS PartNumber
,tblInv.strDesc AS ItemPartNumberDesc
,strLocName AS LocName
,decReqQty AS ReqQty
,ISNULL((
SELECT decAvail
FROM tblInvExt
WHERE strPartNumber = tblProductionScheduleDT.strPartNumber
AND strLocName = tblProductionScheduleDT.strLocName
), 0) AS StockAvail
,bitUseBOM AS UseBOM
,tblProductionScheduleDT.lngID as ScheduleID
FROM tblProductionScheduleDT
INNER JOIN tblInv ON tblProductionScheduleDT.strPartNumber = tblInv.strPartNumber
WHERE strProdNumber = @DocNumber
ORDER BY tblProductionScheduleDT.strPartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[FillWorkOrderData] (
@DocNumber AS NVARCHAR(MAX)
,@LocationCriteria AS NVARCHAR(max)
)
AS
BEGIN
SELECT strInvWODocID
,dteSystemDate
,dteJournalDate
,dteStartDate
,dteDueDate
,strUserName
,strReference
,strNotes
,bitCleared
FROM tblInvWorkOrder
WHERE strInvWODocID = @DocNumber
SELECT tblProductionSchedule.strProdNumber
,tblProductionSchedule.strPartNumber
,tblInv.strDesc AS strPartDesc
,tblProductionSchedule.decReqQty AS intReqQty
,tblProductionSchedule.strLocName
,tblProductionSchedule.dteStartDate
,tblProductionSchedule.dteDueDate
,tblProductionSchedule.strInvWODocID
,tblProductionSchedule.strOrdDocID
,tblProductionSchedule.strNotes
,ISNULL(tblProductionSchedule.strInvWCCode, '<< None >>') AS strInvWCCode
,ISNULL(tblInvWorkCentre.strDesc, 'No Work Centre') AS strInvWCDesc
FROM tblProductionSchedule
INNER JOIN tblInv ON tblProductionSchedule.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblInvWorkCentre ON tblProductionSchedule.strInvWCCode = tblInvWorkCentre.strInvWCCode
WHERE tblProductionSchedule.strInvWODocID = @DocNumber
ORDER BY tblProductionSchedule.strProdNumber
,tblProductionSchedule.strPartNumber
SELECT tblProductionScheduleDT.strProdNumber
,tblProductionScheduleDT.strPartNumber
,tblInv.strDesc AS strPartDesc
,tblProductionScheduleDT.strLocName
,tblProductionScheduleDT.decReqQty
,tblProductionScheduleDT.bitExploded
FROM tblProductionSchedule
INNER JOIN tblProductionScheduleDT ON tblProductionSchedule.strProdNumber = tblProductionScheduleDT.strProdNumber
INNER JOIN tblInv ON tblProductionScheduleDT.strPartNumber = tblInv.strPartNumber
WHERE tblProductionSchedule.strInvWODocID = @DocNumber
ORDER BY tblProductionScheduleDT.strProdNumber
,tblProductionScheduleDT.strPartNumber
SELECT *
FROM dbo.fnTblInvLocations(@LocationCriteria) tblInv
WHERE strPartNumber IN (
SELECT DISTINCT tblProductionSchedule.strPartNumber
FROM tblInvWorkOrder
INNER JOIN tblProductionSchedule ON tblInvWorkOrder.strInvWODocID = tblProductionSchedule.strInvWODocID
WHERE tblProductionSchedule.strInvWODocID = @DocNumber
UNION ALL
SELECT DISTINCT tblProductionScheduleDT.strPartNumber
FROM tblInvWorkOrder
INNER JOIN tblProductionSchedule ON tblInvWorkOrder.strInvWODocID = tblProductionSchedule.strInvWODocID
INNER JOIN tblProductionScheduleDT ON tblProductionSchedule.strProdNumber = tblProductionScheduleDT.strProdNumber
WHERE tblProductionSchedule.strInvWODocID = @DocNumber
)
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvWCCodeForPartNumber] @PartNumber AS NVARCHAR(50)
AS
BEGIN
SELECT strInvWCCode AS InvWCCode
FROM tblInv
WHERE (ISNULL(strInvWCCode, '') <> '')
AND (strPartNumber = @PartNumber)
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetProductionScheduleDetails]
    @WorkCentre VARCHAR(50),
    @JobFilter VARCHAR(50),
    @WorkCentreCodeList VARCHAR(50),
    @WCSelected VARCHAR(20),
    @IsJob BIT,
    @SQStartDate VARCHAR(19)
AS
BEGIN
    DECLARE @Query AS NVARCHAR(Max) = ''

    IF (@IsJob = 1)
    BEGIN
        SET @Query = 'SELECT strProdNumber AS ProdNumber, strPartNumber AS PartNumber, decReqQty AS ReqQty, dteStartDate AS StartDate, dteDueDate AS DueDate FROM tblProductionSchedule WHERE bitCleared = 0'

        IF (@JobFilter = 'Open Jobs')
            SET @Query = @Query + ' AND blnCompleted = 0'
        ELSE IF (@JobFilter = 'Completed Jobs')
            SET @Query = @Query + ' AND blnCompleted = 1'

        IF (@WorkCentre = 'No Work Centres')
            SET @Query = @Query + ' AND ISNULL(strInvWCCode,'''') = '''' '
        ELSE IF (
                @WorkCentre != ''
                AND @WorkCentre != 'All Work Centres'
                )
            SET @Query = @Query + ' AND strInvWCCode = ''' + @WorkCentreCodeList + ''' '
    END
    ELSE
    BEGIN
        DECLARE @afterQuery AS NVARCHAR(Max) = ''

        IF (@JobFilter = 'Open Works Orders')
        BEGIN
            IF (@WorkCentre = 'No Work Centres')
                SET @WCSelected = ''
            ELSE IF (
                    @WorkCentre != ''
                    AND @WorkCentre != 'All Work Centres'
                    )
                SET @WCSelected = @WorkCentreCodeList
            SET @afterQuery = @afterQuery + ' AND bitCleared = 0'
        END
        ELSE
        BEGIN
            IF (@WorkCentre = 'No Work Centres')
                SET @WCSelected = ''
            ELSE IF (
                    @WorkCentre != ''
                    OR @WorkCentre != 'All Work Centres'
                    )
                SET @WCSelected = @WorkCentreCodeList
        END

        SET @Query = 'SELECT strInvWODocID AS InvWODocID, strInvWODocID , ISNULL((SELECT COUNT(tblProductionSchedule.strProdNumber) FROM tblProductionSchedule   
WHERE tblProductionSchedule.strInvWODocID = tblInvWorkOrder.strInvWODocID AND ISNULL(tblProductionSchedule.strInvWCCode,'''') LIKE ''' + @WCSelected + '''),0) AS intJobCount,   
dteStartDate AS dteStart, dteDueDate AS dteEnd FROM tblInvWorkOrder WHERE strInvWODocID IN (SELECT strInvWODocID   
FROM tblProductionSchedule WHERE ISNULL(strInvWCCode,'''') LIKE ''' + @WCSelected + ''' )'
        SET @Query = @Query + @afterQuery
    END

    SET @Query += ' AND dteStartDate >= ''' + @SQStartDate + ''''

    EXEC (@Query)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteProductionDocument] @DocumentNumber AS VARCHAR(50)
AS
BEGIN
UPDATE tblInvWorkOrder
SET bitCleared = CASE 
WHEN ISNULL((
SELECT COUNT(blnCompleted)
FROM tblProductionSchedule
WHERE strInvWODocID = tblInvWorkOrder.strInvWODocID
AND blnCompleted = 0
), 0) = 0
THEN 1
ELSE 0
END
WHERE strInvWODocID IN (
SELECT ISNULL(strInvWODocID, '')
FROM tblProductionSchedule
WHERE strProdNumber = @DocumentNumber
)
AND ISNULL(strInvWODocID, '') <> ''
UPDATE tblProductionSchedule
SET bitCleared = 1
WHERE strProdNumber = @DocumentNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvBOMDetails] 
@PartNumber VARCHAR(50)
,@ReqQty VARCHAR(100)
AS
BEGIN
SELECT BOM.strPartItemNumber AS PartNumber
, INV.strDesc as [Desc]
, ((BOM.intQtyToUse / INV.intBOMQty) * @ReqQty) AS Amount
, BOM.strLocName as LocName
, IE.decOnHand as OnHand
, IE.decAlloc as Alloc
FROM tblInvBOM BOM 
INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber 
INNER JOIN tblInvExt IE ON BOM.strPartItemNumber = IE.strPartNumber AND BOM.strLocName = IE.strLocName 
WHERE BOM.strPartNumber = @PartNumber
END
GO
----------------------------------------------------

CREATE PROCEDURE [dbo].[GetInvWOExplode] (@PartLocQty NVARCHAR(MAX) = '')
AS
BEGIN
	CREATE TABLE #Temp1 (
		[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[strLocName] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[decQty] [money] NOT NULL
		)

	INSERT INTO #Temp1
	SELECT SUBSTRING(Value, 0, CHARINDEX('#L#', Value))
		,SUBSTRING(REPLACE(Value, SUBSTRING(Value, 0, CHARINDEX('#L#', Value) + 3), ''), 0, CHARINDEX('#Q#', REPLACE(Value, SUBSTRING(Value, 0, CHARINDEX('#L#', Value) + 3), '')))
		,REPLACE(Value, SUBSTRING(Value, 0, CHARINDEX('#Q#', Value) + 3), '')
	FROM [fnSplitStringAsTable]((@PartLocQty), (','))

	CREATE TABLE #Temp2 (
		[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[strPartDesc] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[strLocName] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[strInvWCCode] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[decQty] [money] NOT NULL
		,[decBOMQty] [money] NOT NULL
		,[strBOMNotes] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[lngID] [bigint] IDENTITY(1, 1) NOT NULL
		)

	CREATE TABLE #Temp3 (
		[strASMPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[strASMPartDesc] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[strASMLocName] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[strASMInvWCCode] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[decASMQty] [money] NOT NULL
		,[decASMBOMQty] [money] NOT NULL
		,[strASMBOMNotes] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		)

	INSERT INTO #Temp2
	SELECT T1.strPartNumber
		,INV.strDesc
		,T1.strLocName
		,ISNULL(INV.strInvWCCode, '')
		,T1.decQty
		,INV.intBOMQty
		,ISNULL(INV.strBOMNotes, '')
	FROM #Temp1 T1
	INNER JOIN tblInv INV ON T1.strPartNumber = INV.strPartNumber

	WHILE EXISTS (
			SELECT *
			FROM #Temp2
			)
	BEGIN
		DECLARE @ASMPartNumber AS NVARCHAR(50)
			,@ASMPartDesc AS NVARCHAR(500)
			,@ASMLocName AS NVARCHAR(10)
			,@ASMInvWCCode AS NVARCHAR(20)
			,@ASMQty AS MONEY
			,@ASMBOMQty AS MONEY
			,@ASMQtyCalc AS MONEY
			,@ASMBOMNotes AS NVARCHAR(MAX)
			,@lngID AS BIGINT

		SELECT @ASMPartNumber = strPartNumber
			,@ASMPartDesc = strPartDesc
			,@ASMLocName = strLocName
			,@ASMInvWCCode = strInvWCCode
			,@ASMQty = decQty
			,@ASMBOMQty = decBOMQty
			,@ASMBOMNotes = strBOMNotes
			,@lngID = lngID
		FROM #Temp2

		IF (@ASMBOMQty = 0)
		BEGIN
			SET @ASMBOMQty = 1
		END

		SET @ASMQtyCalc = ROUND(@ASMQty / @ASMBOMQty, 4)

		INSERT INTO #Temp3
		VALUES (
			@ASMPartNumber
			,@ASMPartDesc
			,@ASMLocName
			,@ASMInvWCCode
			,@ASMQty
			,@ASMBOMQty
			,@ASMBOMNotes
			)

		INSERT INTO #Temp2
		SELECT BOM.strPartItemNumber
			,INV2.strDesc
			,BOM.strLocName
			,ISNULL(INV2.strInvWCCode, '')
			,ROUND((BOM.intQtyToUse * @ASMQtyCalc), 4)
			,INV2.intBOMQty
			,INV2.strBOMNotes
		FROM tblInv INV
		INNER JOIN tblInvBOM BOM ON INV.strPartNumber = BOM.strPartNumber
		INNER JOIN tblInv INV2 ON BOM.strPartItemNumber = INV2.strPartNumber
		WHERE INV.strPartNumber = @ASMPartNumber
			AND INV2.bitUseBOM = 1

		DELETE
		FROM #Temp2
		WHERE lngID = @lngID
	END

	SELECT strASMPartNumber AS ASMPartNumber
		,strASMPartDesc AS ASMPartDesc
		,strASMLocName AS ASMLocName
		,strASMInvWCCode AS ASMInvWCCode
		,SUM(decASMQty) AS ASMQty
		,decASMBOMQty AS ASMBOMQty
		,strASMBOMNotes AS ASMBOMNotes
	FROM #Temp3
	GROUP BY strASMPartNumber
		,strASMPartDesc
		,strASMLocName
		,strASMInvWCCode
		,decASMBOMQty
		,strASMBOMNotes

	DROP TABLE #Temp1

	DROP TABLE #Temp2

	DROP TABLE #Temp3
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvCategoryList]
AS
BEGIN
SELECT tblInvCat.strCategory AS Category
,tblInvCat.strDesc AS [Desc]
FROM tblInvCat
WHERE bitInactive = 0
ORDER BY strCategory
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetAllPriceList]
AS
BEGIN
SELECT DISTINCT tblPriceData.strPricelist AS Pricelist
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.strPricelist = tblPriceData.strPricelist
WHERE tblPriceData.bitInactive = 0
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPriceListsByDate] @IsUpdateMultiple AS BIT
,@Pricelist AS VARCHAR(20)
AS
IF (@IsUpdateMultiple = 'false')
BEGIN
SELECT uidPriceBasedID AS PriceBasedID
,dteStartDate AS StartDate
,dteFinishDate AS FinishDate
FROM tblPriceListsByDate
WHERE (
strPricelist = @Pricelist
OR @Pricelist = '<UPDATE MULTIPLE>'
)
ORDER BY dteStartDate
END
ELSE
BEGIN
SELECT dteStartDate AS DATE
,dteStartDate AS StartDate
,dteFinishDate AS FinishDate
FROM tblPriceListsByDate
GROUP BY dteStartDate
,dteFinishDate
ORDER BY dteStartDate
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPriceListsByDateByDate] @StartDate SMALLDATETIME
,@FinishDate SMALLDATETIME
AS
BEGIN
SELECT strPricelist AS Pricelist
,dteStartDate AS StartDate
,dteFinishDate AS EndDate
,uidPriceBasedID AS GuidData
FROM tblPriceListsByDate
WHERE bitInactive = 0
AND dteStartDate = @StartDate
AND dteFinishDate = @FinishDate
ORDER BY dteStartDate
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetFlxSellingCopyList] @SQPriceList VARCHAR(50)
,@uidPriceBasedID VARCHAR(100)
,@SQDateSelected VARCHAR(20)
,@SQStart SMALLDATETIME
,@SQFinish SMALLDATETIME
,@InvSortDescription BIT
AS
IF (@InvSortDescription = 0)
BEGIN
SELECT tblInv.strPartNumber AS PartNumber
,tblInv.strDesc AS Description
,tblInv.decLastPPUnit AS LastPPUnit
,tblInv.decBuyToStock AS BuyToStock
,tblInvPrice.decSelling AS Selling
,tblInvPrice.decEstLocalCost AS OldLocalCost
,tblInvPrice.decEstImportCost AS OldImportCost
,tblInv.strCategory AS Category
,tblInv.decSellFromStock AS SellFromStock
,(ISNULL(tblInvVend.decLocalPrice, 0) * ((ISNULL(tblInvVend.decLandedCostFactor, 0) + 100) / 100)) AS Markup
,(
SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) * - 1
FROM tblInvTrackingDT
INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
WHERE (tblInvTrackingDT.strPartNumber = tblInv.strPartNumber)
AND (tblInvTracking.intModule = 2)
AND (
tblInvTracking.dteJournalDate BETWEEN @SQStart
AND @SQFinish
)
) AS sales
,(
SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) * - 1
FROM tblInvTrackingDT
INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
INNER JOIN tblInvoiceDoc ON tblInvTracking.strSource = tblInvoiceDoc.strInvDocID
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
WHERE (tblInvTrackingDT.strPartNumber = tblInv.strPartNumber)
AND (tblInvTracking.intModule = 2)
AND (
tblInvTracking.dteJournalDate BETWEEN @SQStart
AND @SQFinish
)
AND (tblCustomers.strPricelist = @SQPriceList)
) AS PricelistUsage
,CASE 
WHEN EXISTS (
SELECT TOP 1 tblPriceListsByDate.uidPriceBasedID
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
AND tblPriceListsByDate.dteStartDate = (
SELECT max(dteStartDate)
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
)
)
THEN (
SELECT TOP 1 decEstLocalCost AS oldLocalCost
FROM tblInvPrice
WHERE tblInvPrice.strPricelist = @SQPriceList
AND tblInvPrice.strPartNumber = tblInv.strPartNumber
AND tblInvPrice.uidPriceBasedID = (
SELECT tblPriceListsByDate.uidPriceBasedID
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
AND tblPriceListsByDate.dteStartDate = (
SELECT max(dteStartDate)
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
)
)
)
ELSE (
SELECT 0 AS oldLocalCost
)
END AS oldLocalCost
,CASE 
WHEN EXISTS (
SELECT TOP 1 tblPriceListsByDate.uidPriceBasedID
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
AND tblPriceListsByDate.dteStartDate = (
SELECT max(dteStartDate)
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
)
)
THEN (
SELECT TOP 1 decEstImportCost AS oldImportCost
FROM tblInvPrice
WHERE tblInvPrice.strPricelist = @SQPriceList
AND tblInvPrice.strPartNumber = tblInv.strPartNumber
AND tblInvPrice.uidPriceBasedID = (
SELECT tblPriceListsByDate.uidPriceBasedID
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
AND tblPriceListsByDate.dteStartDate = (
SELECT max(dteStartDate)
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
)
)
)
ELSE (
SELECT 0 AS oldImportCost
)
END AS oldImportCost
,CASE 
WHEN EXISTS (
SELECT TOP 1 tblPriceListsByDate.uidPriceBasedID
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
AND tblPriceListsByDate.dteStartDate = (
SELECT MAX(dteStartDate)
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
)
)
THEN (
SELECT TOP 1 decSelling
FROM tblInvPrice
WHERE tblInvPrice.strPricelist = @SQPriceList
AND tblInvPrice.strPartNumber = tblInv.strPartNumber
AND tblInvPrice.uidPriceBasedID = (
SELECT tblPriceListsByDate.uidPriceBasedID
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
AND tblPriceListsByDate.dteStartDate = (
SELECT MAX(dteStartDate)
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
)
)
)
ELSE 0
END AS decSellingOld
,tblInvPrice.strUnit AS Unit
FROM tblInv
INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
LEFT JOIN tblInvVend ON tblInv.strPartNumber = tblInvVend.strPartNumber
AND tblInvPrice.strUnit = tblInvVend.strUnit
WHERE (tblInv.intType <> 5)
AND (tblInvPrice.strPricelist = @SQPriceList)
AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
AND (tblInv.bitInactive = 0)
AND ISNULL(tblInvVend.bitPreferred, 1) = 1
ORDER BY tblInv.strPartNumber
END
ELSE
BEGIN
SELECT tblInv.strPartNumber AS PartNumber
,tblInv.strDesc AS Description
,tblInv.decLastPPUnit AS LastPPUnit
,tblInv.decBuyToStock AS BuyToStock
,tblInvPrice.decSelling AS Selling
,tblInvPrice.decEstLocalCost AS OldLocalCost
,tblInvPrice.decEstImportCost AS OldImportCost
,tblInv.strCategory AS Category
,tblInv.decSellFromStock AS SellFromStock
,(ISNULL(tblInvVend.decLocalPrice, 0) * ((ISNULL(tblInvVend.decLandedCostFactor, 0) + 100) / 100)) AS Markup
,(
SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) * - 1
FROM tblInvTrackingDT
INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
WHERE (tblInvTrackingDT.strPartNumber = tblInv.strPartNumber)
AND (tblInvTracking.intModule = 2)
AND (
tblInvTracking.dteJournalDate BETWEEN @SQStart
AND @SQFinish
)
) AS sales
,(
SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) * - 1
FROM tblInvTrackingDT
INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
INNER JOIN tblInvoiceDoc ON tblInvTracking.strSource = tblInvoiceDoc.strInvDocID
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
WHERE (tblInvTrackingDT.strPartNumber = tblInv.strPartNumber)
AND (tblInvTracking.intModule = 2)
AND (
tblInvTracking.dteJournalDate BETWEEN @SQStart
AND @SQFinish
)
AND (tblCustomers.strPricelist = @SQPriceList)
) AS PricelistUsage
,CASE 
WHEN EXISTS (
SELECT TOP 1 tblPriceListsByDate.uidPriceBasedID
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
AND tblPriceListsByDate.dteStartDate = (
SELECT max(dteStartDate)
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
)
)
THEN (
SELECT TOP 1 decEstLocalCost AS oldLocalCost
FROM tblInvPrice
WHERE tblInvPrice.strPricelist = @SQPriceList
AND tblInvPrice.strPartNumber = tblInv.strPartNumber
AND tblInvPrice.uidPriceBasedID = (
SELECT tblPriceListsByDate.uidPriceBasedID
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
AND tblPriceListsByDate.dteStartDate = (
SELECT max(dteStartDate)
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
)
)
)
ELSE (
SELECT 0 AS oldLocalCost
)
END AS oldLocalCost
,CASE 
WHEN EXISTS (
SELECT TOP 1 tblPriceListsByDate.uidPriceBasedID
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
AND tblPriceListsByDate.dteStartDate = (
SELECT max(dteStartDate)
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
)
)
THEN (
SELECT TOP 1 decEstImportCost AS oldImportCost
FROM tblInvPrice
WHERE tblInvPrice.strPricelist = @SQPriceList
AND tblInvPrice.strPartNumber = tblInv.strPartNumber
AND tblInvPrice.uidPriceBasedID = (
SELECT tblPriceListsByDate.uidPriceBasedID
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
AND tblPriceListsByDate.dteStartDate = (
SELECT max(dteStartDate)
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
)
)
)
ELSE (
SELECT 0 AS oldImportCost
)
END AS oldImportCost
,CASE 
WHEN EXISTS (
SELECT TOP 1 tblPriceListsByDate.uidPriceBasedID
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
AND tblPriceListsByDate.dteStartDate = (
SELECT MAX(dteStartDate)
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
)
)
THEN (
SELECT TOP 1 decSelling
FROM tblInvPrice
WHERE tblInvPrice.strPricelist = @SQPriceList
AND tblInvPrice.strPartNumber = tblInv.strPartNumber
AND tblInvPrice.uidPriceBasedID = (
SELECT tblPriceListsByDate.uidPriceBasedID
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
AND tblPriceListsByDate.dteStartDate = (
SELECT MAX(dteStartDate)
FROM tblPriceData
INNER JOIN tblPriceListsByDate ON tblPriceData.strPricelist = tblPriceListsByDate.strPricelist
WHERE tblPriceData.strPricelist = @SQPriceList
AND tblPriceListsByDate.dteStartDate < @SQDateSelected
)
)
)
ELSE 0
END AS decSellingOld
,tblInvPrice.strUnit AS Unit
FROM tblInv
INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
LEFT JOIN tblInvVend ON tblInv.strPartNumber = tblInvVend.strPartNumber
AND tblInvPrice.strUnit = tblInvVend.strUnit
WHERE (tblInv.intType <> 5)
AND (tblInvPrice.strPricelist = @SQPriceList)
AND tblInvPrice.uidPriceBasedID = @uidPriceBasedID
AND (tblInv.bitInactive = 0)
AND ISNULL(tblInvVend.bitPreferred, 1) = 1
ORDER BY tblInv.strDesc
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetFlxPLSellingCopyList](
@SQPriceList AS VARCHAR(100)
,@SQDateFrom AS SMALLDATETIME
,@SQDateTo AS SMALLDATETIME
,@PriceListCondition AS VARCHAR(200)
,@PriceListDataOrder AS VARCHAR(200)
)
AS
BEGIN
SELECT tblInvPrice.strPartNumber AS PartNumber
,tblInv.strDesc AS Description
,tblInv.decLastPPUnit AS LastPPUnit
,tblInv.decBuyToStock AS BuyToStock
,tblInvPrice.decSelling AS Selling
,tblInv.strCategory AS Category
,tblInvPrice.strPricelist AS PriceList
,tblInv.decSellFromStock AS SellFromStock
,(ISNULL(tblInvVend.decLocalPrice, 0) * ((ISNULL(tblInvVend.decLandedCostFactor, 0) + 100) / 100)) AS Markup
,tblInvPrice.uidPriceBasedID AS Uid
,tblInvPrice.decEstLocalCost AS EstLocalCost
,tblInvPrice.decEstImportCost AS EstImportCost
,ISNULL((
SELECT decEstLocalCost AS oldLocalCost
FROM tblInvPrice t
WHERE t.strPricelist = tblInvPrice.strPricelist
AND t.strPartNumber = tblInv.strPartNumber
AND t.uidPriceBasedID = (
SELECT TOP 1 uidPriceBasedID
FROM tblPriceListsByDate
WHERE dteStartDate < (
SELECT TOP 1 dteStartDate
FROM tblPriceListsByDate
WHERE uidPriceBasedID = tblInvPrice.uidPriceBasedID
ORDER BY dteStartDate DESC
)
AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist
ORDER BY dteStartDate DESC
)
), 0) 'oldLocalCost'
,ISNULL((
SELECT decEstImportCost AS oldImportCost
FROM tblInvPrice t
WHERE t.strPricelist = tblInvPrice.strPricelist
AND t.strPartNumber = tblInv.strPartNumber
AND t.uidPriceBasedID = (
SELECT TOP 1 uidPriceBasedID
FROM tblPriceListsByDate
WHERE dteStartDate < (
SELECT TOP 1 dteStartDate
FROM tblPriceListsByDate
WHERE uidPriceBasedID = tblInvPrice.uidPriceBasedID
ORDER BY dteStartDate DESC
)
AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist
ORDER BY dteStartDate DESC
)
), 0) 'oldImportCost'
,ISNULL((
SELECT decSelling
FROM tblInvPrice t
WHERE t.strPricelist = tblInvPrice.strPricelist
AND t.strPartNumber = tblInv.strPartNumber
AND t.uidPriceBasedID = (
SELECT TOP 1 uidPriceBasedID
FROM tblPriceListsByDate
WHERE dteStartDate < (
SELECT TOP 1 dteStartDate
FROM tblPriceListsByDate
WHERE uidPriceBasedID = tblInvPrice.uidPriceBasedID
ORDER BY dteStartDate DESC
)
AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist
ORDER BY dteStartDate DESC
)
), 0) decSellingOld
,tblInvPrice.strUnit
FROM tblInvPrice
INNER JOIN tblInv ON tblInv.strPartNumber = tblInvPrice.strPartNumber
INNER JOIN tblPriceData ON tblInvPrice.strPricelist = tblPriceData.strPricelist
INNER JOIN tblPriceListsByDate ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
LEFT JOIN tblInvVend ON tblInv.strPartNumber = tblInvVend.strPartNumber
AND tblInvVend.strUnit = tblInvPrice.strUnit
WHERE (tblInv.intType <> 5)
AND (tblPriceData.bitInactive = 0)
AND (tblInv.bitInactive = 0)
AND ISNULL(tblInvVend.bitPreferred, 1) = 1
AND (
tblPriceListsByDate.dteStartDate >= @SQDateFrom
AND tblPriceListsByDate.dteFinishDate <= @SQDateTo
)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateInvPriceAndInvData] (
@NewSell DECIMAL
,@NewLocalCost DECIMAL
,@NewImportCost DECIMAL
,@PartNumber VARCHAR(50)
,@PriceList VARCHAR(50)
,@PriceBasedID VARCHAR(100)
)
AS
BEGIN
UPDATE tblInvPrice
SET decSelling = @NewSell
,decEstLocalCost = @NewLocalCost
,decEstImportCost = @NewImportCost
WHERE strPartNumber = @PartNumber
AND strPricelist = @PriceList
AND uidPriceBasedID = @PriceBasedID
UPDATE tblInv
SET dteLastUpdated = GETDATE()
WHERE strPartNumber = @PartNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPriceListDataForUpdatePriceList] (@PartNumber VARCHAR(50))
AS
BEGIN
SELECT tblInvPrice.strPricelist AS Pricelist
,tblPricelists.intPricelistType AS PricelistType
,tblInvPrice.decSelling AS SellingPrice
,ISNULL((
SELECT decMarkup
FROM tblPricelistsCat
WHERE strPricelist = tblPricelists.strPricelist
AND strCategory = tblInv.strCategory
AND uidPriceBasedID = tblPricelists.uidPriceBasedID
), 0) AS MarkupPer
,tblPricelists.intRoundPrices AS RoundPrices
,tblPricelists.bitUpdateSellingPrice AS IsUpdateSellingPrice
,tblPricelists.bitOnlySellingPriceIncrease AS IsOnlySellingPriceIncrease
,tblInv.decSellFromStock AS SellFromStock
,tblInvPrice.uidPriceBasedID AS PriceBaseId
,tblPriceData.bitPriceIncl AS IsPriceIncl
,ISNULL(tblTaxCodeExt.decRate, 0) AS TaxRate
,ISNULL(uidLinkPricelistId, CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER)) AS uidLinkPricelisId
FROM tblInvPrice
INNER JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist
AND tblInvPrice.uidPriceBasedID = tblPricelists.uidPriceBasedID
INNER JOIN tblPriceData ON tblPricelists.strPricelist = tblPriceData.strPricelist
INNER JOIN tblInv ON tblInvPrice.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblTaxCodeExt ON tblPriceData.strTaxCode = tblTaxCodeExt.strTaxCode
WHERE tblInvPrice.strPartNumber = @PartNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateInvPriceBasedOnPricelistTracking] @PriceList VARCHAR(50)
,@PriceGUID VARCHAR(100)
,@PartNumber VARCHAR(50)
,@PriceTo money
AS
BEGIN
UPDATE tblInvPrice
SET decSelling = @PriceTo
WHERE strPricelist = @PriceList
AND uidPriceBasedID = @PriceGUID
AND strPartNumber = @PartNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPricelistsLinkDetails] @PriceList VARCHAR(50)
,@PriceGUID VARCHAR(100)
,@PartNumber VARCHAR(50)
,@AllItemsFixedPer INT
,@SpecificItemsFixedPer INT
,@PriceLevelTypeFixed VARCHAR(50)
,@IsLinkToOtherPriceListByCategory BIT
AS
BEGIN
IF (@IsLinkToOtherPriceListByCategory = 1)
SELECT intPricelistMasterId as PricelistMasterId
,uidPriceBasedID as PriceBaseId
,strPricelist as Pricelist
,intType as PricelistType
,strPriceLevelType as PriceLevelTypeFixed
,(
CASE 
WHEN (
intType = @SpecificItemsFixedPer
OR intType = @AllItemsFixedPer
)
AND strPriceLevelType = @PriceLevelTypeFixed
THEN decMarkupPrice
ELSE (
SELECT Top 1 tblPricelistsLinkCategory.decMarkupPrice
FROM tblPricelistsLinkCategory
INNER JOIN tblPricelistsItemsMaster ON tblPricelistsItemsMaster.intPricelistMasterId = tblPricelistsLinkCategory.intPricelistMasterId
INNER JOIN tblInv ON tblPricelistsLinkCategory.strCategory = tblInv.strCategory
AND tblInv.strPartNumber = @PartNumber
AND tblPricelistsItemsMaster.uidPriceBasedID = @PriceGUID
AND tblPricelistsItemsMaster.strPricelist = @PriceList
)
END
) AS MarkupPrice
,(
CASE 
WHEN (
intType = @SpecificItemsFixedPer
OR intType = @AllItemsFixedPer
)
AND strPriceLevelType = @PriceLevelTypeFixed
THEN strPriceLevel
ELSE (
SELECT Top 1  tblPricelistsLinkCategory.strPriceLevel
FROM tblPricelistsLinkCategory
INNER JOIN tblPricelistsItemsMaster ON tblPricelistsItemsMaster.intPricelistMasterId = tblPricelistsLinkCategory.intPricelistMasterId
INNER JOIN tblInv ON tblPricelistsLinkCategory.strCategory = tblInv.strCategory
AND tblInv.strPartNumber = @PartNumber
AND tblPricelistsItemsMaster.uidPriceBasedID = @PriceGUID
AND tblPricelistsItemsMaster.strPricelist = @PriceList
)
END
) AS PriceLevel
FROM tblPricelistsItemsMaster
WHERE uidPriceBasedID = @PriceGUID
AND strPricelist = @PriceList
ELSE
SELECT intPricelistMasterId as PricelistMasterId
,uidPriceBasedID as PriceBaseId
,strPricelist as Pricelist
,intType as PricelistType
,strPriceLevelType as PriceLevelTypeFixed
,(
CASE 
WHEN (
intType = @SpecificItemsFixedPer
OR intType = @AllItemsFixedPer
)
AND strPriceLevelType = @PriceLevelTypeFixed
THEN decMarkupPrice
ELSE (
SELECT Top 1  tblPricelistsItems.decMarkupPrice
FROM tblPricelistsItems
INNER JOIN tblPricelistsItemsMaster ON tblPricelistsItemsMaster.intPricelistMasterId = tblPricelistsItems.intPricelistMasterId
AND tblPricelistsItems.strPartNumber = @PartNumber
AND tblPricelistsItemsMaster.uidPriceBasedID = @PriceGUID
AND tblPricelistsItemsMaster.strPricelist = @PriceList
)
END
) AS MarkupPrice
,(
CASE 
WHEN (
intType = @SpecificItemsFixedPer
OR intType = @AllItemsFixedPer
)
AND strPriceLevelType = @PriceLevelTypeFixed
THEN strPriceLevel
ELSE (
SELECT Top 1  tblPricelistsItems.strPriceLevel
FROM tblPricelistsItems
INNER JOIN tblPricelistsItemsMaster ON tblPricelistsItemsMaster.intPricelistMasterId = tblPricelistsItems.intPricelistMasterId
AND tblPricelistsItems.strPartNumber = @PartNumber
AND tblPricelistsItemsMaster.uidPriceBasedID = @PriceGUID
AND tblPricelistsItemsMaster.strPricelist = @PriceList
)
END
) AS PriceLevel
FROM tblPricelistsItemsMaster
WHERE uidPriceBasedID = @PriceGUID
AND strPricelist = @PriceList
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPriceDataForPriceList] (@PriceListArray AS VARCHAR(300))
AS
BEGIN
SELECT strPricelist AS Pricelist
,strDesc AS [Desc]
,bitInactive AS Inactive
FROM tblPriceData
WHERE bitInactive = 0
AND tblPriceData.strPricelist IN (@PriceListArray)
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCoOptDetailsForVoucherCode]
AS
BEGIN
SELECT intAirProvider AS AirProvider
,strAirURL AS AirURL
,strAirUsername AS AirUsername
,strAirPassword AS AirPassword
FROM tblCoOpts
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVoucherCodeList]
AS
BEGIN
SELECT tblVoucherCodes.strVoucherCode AS VoucherCode
,tblVoucherCodes.strDescription AS Description
,tblVoucherCodes.strWindow AS Window
,tblVoucherCodes.strValue AS Value
,tblVoucherCodes.decRetailValue AS RetailValue
,ISNULL(tblInv.strPartNumber, '') AS SelectedVoucherCode
FROM tblVoucherCodes
LEFT JOIN tblInv ON tblVoucherCodes.strVoucherCode = tblInv.strVoucherCode
ORDER BY VoucherCode
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateInvVoucherCode] (
@IsVoucherEnable AS BIT
,@VoucherCode AS NVARCHAR(50)
,@PartNumber AS NVARCHAR(50)
)
AS
BEGIN
UPDATE tblInv
SET bitVoucherEnabled = @IsVoucherEnable
,strVoucherCode = @VoucherCode
WHERE strPartNumber = @PartNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[SaveVoucherCodes] @tblVoucherCodes VoucherCodesTableType READONLY
AS
BEGIN
INSERT INTO [dbo].[tblVoucherCodes] (
strVoucherCode
,strDescription
,strWindow
,strValue
,decRetailValue
,strVendorName
)
SELECT *
FROM @tblVoucherCodes
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GettblValueBasedData] (  
 @InActive BIT = 0  
 ,@PageSize INT = 25  
 ,@PageNumber INT = 1  
 ,@Search AS NVARCHAR(Max) = ''  
 )  
AS  
BEGIN  
	DECLARE @skip INT  
  SET @skip = @PageSize * (@PageNumber - 1)  

 IF (@InActive = 0)  
 BEGIN  
  SELECT strValueBased AS ValueBased  
   ,strDesc AS [Description]  
   ,bitInactive AS Inactive  
   ,bitApplyItem AS bitApplyItem  
   ,bitApplyTax AS bitApplyTax  
   ,CASE   
    WHEN bitInactive = 0  
     THEN 'Active'  
    ELSE 'Inactive'  
    END AS STATUS  
   ,CASE   
    WHEN bitApplyItem = 0  
     THEN 'Value Based'  
    ELSE 'Volume Based'  
    END AS ApplyItem  
   ,CASE   
    WHEN bitApplyTax = 0  
     THEN 'Inclusive'  
    ELSE 'Exclusive'  
    END AS ApplyTax  
  FROM tblValueBased  
  WHERE bitInactive = @InActive  
   AND (  
    ISNULL(strValueBased, '') LIKE '%' + ISNULL(@search, strValueBased) + '%'  
    OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'  
    )  
  ORDER BY strValueBased OFFSET(@Skip) ROWS  
  
  FETCH NEXT (@PageSize) ROWS ONLY  
 END  
 ELSE
  SELECT strValueBased AS ValueBased  
   ,strDesc AS [Description]  
   ,bitInactive AS Inactive  
   ,bitApplyItem AS bitApplyItem  
   ,bitApplyTax AS bitApplyTax  
   ,CASE   
    WHEN bitInactive = 0  
     THEN 'Active'  
    ELSE 'Inactive'  
    END AS STATUS  
   ,CASE   
    WHEN bitApplyItem = 0  
     THEN 'Value Based'  
    ELSE 'Volume Based'  
    END AS ApplyItem  
   ,CASE   
    WHEN bitApplyTax = 0  
     THEN 'Inclusive'  
    ELSE 'Exclusive'  
    END AS ApplyTax  
  FROM tblValueBased  
  WHERE (  
    ISNULL(strValueBased, '') LIKE '%' + ISNULL(@search, strValueBased) + '%'  
    OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'  
    )  
  ORDER BY strValueBased OFFSET(@Skip) ROWS  
  
  FETCH NEXT (@PageSize) ROWS ONLY  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvSerialNumberCount] @Type VARCHAR(50)
AS
BEGIN
SELECT COUNT(tblSerialNumberTracking.strSerialNumber) AS CNT
FROM tblInv
INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
INNER JOIN tblSerialNumberTracking ON tblInv.strPartNumber = tblSerialNumberTracking.strPartNumber
WHERE tblInv.bitInvSerialType = 1
AND tblInv.strInvSerialType = @Type
GROUP BY tblSerialNumberTracking.strSerialNumber
END

GO
----------------------------------------------------


CREATE PROCEDURE [dbo].[GetSingleInvSerialNumberType] (@Number NVARCHAR(20))  
AS  
BEGIN  
 SELECT tblInvSerialTypes.strInvSerialType AS InvSerialType  
  ,tblInvSerialTypes.strDesc AS [Description]  
  ,tblInvSerialTypes.bitMethod AS IsMethod  
  ,tblInvSerialTypes.intMin AS [Min]  
  ,tblInvSerialTypes.intMax AS [Max]  
  ,tblInvSerialTypes.intFormat AS [Format]  
  ,tblInvSerialTypes.bitPrintInv AS IsPrintInv  
  ,tblInvSerialTypes.bitInactive AS Inactive  
  ,tblInvSerialTypes.intType AS [Type]  
  ,tblInvSerialTypes.bitTrackExpiryDate AS IsTrackExpiryDate  
  ,tblInvSerialTypes.intExpiryDateAuthGRV AS ExpiryDateAuthGRV  
  ,tblInvSerialTypes.intExpiryDateAuthPI AS ExpiryDateAuthPI  
  ,tblInvSerialTypes.intExpiryDateAuthDN AS ExpiryDateAuthDN  
  ,tblInvSerialTypes.intExpiryDateAuthSI AS ExpiryDateAuthSI  
  ,tblInvSerialTypes.intExpiryDateAuthCN AS ExpiryDateAuthCN  
  ,tblInvSerialTypes.intExpiryDateAuthAD AS ExpiryDateAuthAD  
  ,tblInvSerialTypes.intExpiryDateAuthAS AS ExpiryDateAuthAS  
  ,tblInvSerialTypes.intExpiryDateAuthTR AS ExpiryDateAuthTR  
  ,tblInvSerialTypes.bitBCBreakdown AS IsBCBreakdown  
  ,tblInvSerialTypes.strBCFlag AS BCFlag  
  ,tblInvSerialTypes.bitBC1Enabled AS IsBC1Enabled  
  ,tblInvSerialTypes.strBC1Type AS BC1Type  
  ,tblInvSerialTypes.intBC1StartPos AS BC1StartPos  
  ,tblInvSerialTypes.intBC1EndPos AS BC1EndPos  
  ,tblInvSerialTypes.bitBC2Enabled AS IsBC2Enabled  
  ,tblInvSerialTypes.strBC2Type AS BC2Type  
  ,tblInvSerialTypes.intBC2StartPos AS BC2StartPos  
  ,tblInvSerialTypes.intBC2EndPos AS BC2EndPos  
  ,tblInvSerialTypes.bitBC3Enabled AS IsBC3Enabled  
  ,tblInvSerialTypes.strBC3Type AS BC3Type  
  ,tblInvSerialTypes.intBC3StartPos AS BC3StartPos  
  ,tblInvSerialTypes.intBC3EndPos AS BC3EndPos  
  ,tblInvSerialTypes.bitBC4Enabled AS IsBC4Enabled  
  ,tblInvSerialTypes.strBC4Type AS BC4Type  
  ,tblInvSerialTypes.intBC4StartPos AS BC4StartPos  
  ,tblInvSerialTypes.intBC4EndPos AS BC4EndPos  
  ,tblInvSerialTypes.bitBC5Enabled AS IsBC5Enabled  
  ,tblInvSerialTypes.strBC5Type AS BC5Type  
  ,tblInvSerialTypes.intBC5StartPos AS BC5StartPos  
  ,tblInvSerialTypes.intBC5EndPos AS BC5EndPos  
  ,tblInvSerialTypes.intExpiryDateAuthDA AS ExpiryDateAuthDA  
  ,tblInvSerialTypes.bitDimensionExist AS IsDimensionExist  
  ,tblInvSerialTypes.strDimProCode AS DimProCode  
  ,tblInvSerialTypes.bitDPSingleSN AS DPSingleSN  
  ,tblInvSerialTypes.bitAutoCreateLotNumber AS AutoCreateLotNumber  
  ,tblInvSerialTypes.intDaysExpire AS ExpiryDaysNumber  
  ,ISNULL((  
    SELECT COUNT(tblInv.strPartNumber) AS PartNumberCount  
    FROM tblInv  
    INNER JOIN tblSerialNumberTracking ON tblInv.strPartNumber = tblSerialNumberTracking.strPartNumber  
    WHERE tblInv.strInvSerialType = @Number  
    ), 0)  ,
	intNextLotNumber  as NextLotNumber
 FROM tblInvSerialTypes  
 WHERE tblInvSerialTypes.strInvSerialType = @Number  
END  
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteInventorySerialType] (@InvSerialType AS VARCHAR(50))
AS
BEGIN
DELETE
FROM tblInvSerialTypes
WHERE strInvSerialType = @InvSerialType
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvLotExtData] @PartNumber VARCHAR(100)
,@ItemSearch VARCHAR(100)
AS
IF (@ItemSearch IS NOT NULL)
BEGIN
SELECT strLotNumber AS LotNumber
,SUM(decQty) AS Qty
,ISNULL(dteExpiryDate, GETDATE()) AS ExpiryDate
FROM tblInvLotExt
WHERE (decQty <> 0)
AND (bitExpiryDate = 1)
AND (strPartNumber = @PartNumber)
AND (strLotNumber LIKE @ItemSearch)
GROUP BY strLotNumber
,dteExpiryDate
ORDER BY strLotNumber
END
ELSE
BEGIN
SELECT strLotNumber AS LotNumber
,SUM(decQty) AS Qty
,ISNULL(dteExpiryDate, GETDATE()) AS ExpiryDate
FROM tblInvLotExt
WHERE (decQty <> 0)
AND (bitExpiryDate = 1)
AND (strPartNumber = @PartNumber)
GROUP BY strLotNumber
,dteExpiryDate
ORDER BY strLotNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateSerialNumberExpiryDateTables] @PartNumber VARCHAR(50)
,@SerialNumber VARCHAR(50)
,@ExpiryDate SMALLDATETIME
AS
BEGIN
UPDATE tblSerialNumberTracking
SET dteExpiryDate = @ExpiryDate
WHERE strPartNumber = @PartNumber
AND strSerialNumber = @SerialNumber
UPDATE tblInvoiceDocDTSerial
SET dteExpiryDate = @ExpiryDate
FROM tblInvoiceDocDT
WHERE tblInvoiceDocDTSerial.strInvDocID = tblInvoiceDocDT.strInvDocID
AND tblInvoiceDocDTSerial.intLineNo = tblInvoiceDocDT.intLineNo
AND tblInvoiceDocDT.strPartNumber = @PartNumber
AND tblInvoiceDocDTSerial.strSerialNumber = @SerialNumber
UPDATE tblInvoiceDocPDTSerial
SET dteExpiryDate = @ExpiryDate
FROM tblInvoiceDocPDT
WHERE tblInvoiceDocPDTSerial.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
AND tblInvoiceDocPDTSerial.intLineNo = tblInvoiceDocPDT.intLineNo
AND tblInvoiceDocPDT.strPartNumber = @PartNumber
AND tblInvoiceDocPDTSerial.strSerialNumber = @SerialNumber
UPDATE tblOrderDocDTSerial
SET dteExpiryDate = @ExpiryDate
FROM tblOrderDocDT
WHERE tblOrderDocDTSerial.strOrdDocID = tblOrderDocDT.strOrdDocID
AND tblOrderDocDTSerial.intLineNo = tblOrderDocDT.intLineNo
AND tblOrderDocDT.strPartNumber = @PartNumber
AND tblOrderDocDTSerial.strSerialNumber = @SerialNumber
UPDATE tblOrderDocPDTSerial
SET dteExpiryDate = @ExpiryDate
FROM tblOrderDocPDT
WHERE tblOrderDocPDTSerial.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
AND tblOrderDocPDTSerial.intLineNo = tblOrderDocPDT.intLineNo
AND tblOrderDocPDT.strPartNumber = @PartNumber
AND tblOrderDocPDTSerial.strSerialNumber = @SerialNumber
UPDATE tblOrderDocPGDTSerial
SET dteExpiryDate = @ExpiryDate
FROM tblOrderDocPGDT
WHERE tblOrderDocPGDTSerial.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID
AND tblOrderDocPGDTSerial.intLineNo = tblOrderDocPGDT.intLineNo
AND tblOrderDocPGDT.strPartNumber = @PartNumber
AND tblOrderDocPGDTSerial.strSerialNumber = @SerialNumber
UPDATE tblInvAdjDocDTSerial
SET dteExpiryDate = @ExpiryDate
FROM tblInvAdjDocDT
WHERE tblInvAdjDocDTSerial.strAdjDocID = tblInvAdjDocDT.strAdjDocID
AND tblInvAdjDocDTSerial.intLineNo = tblInvAdjDocDT.intLineNo
AND tblInvAdjDocDT.strPartNumber = @PartNumber
AND tblInvAdjDocDTSerial.strSerialNumber = @SerialNumber
UPDATE tblInvAsmDocDTSerial
SET dteExpiryDate = @ExpiryDate
FROM tblInvAsmDocDT
WHERE tblInvAsmDocDTSerial.strAsmDocID = tblInvAsmDocDT.strAsmDocID
AND tblInvAsmDocDTSerial.intLineNo = tblInvAsmDocDT.intLineNo
AND tblInvAsmDocDT.strPartNumber = @PartNumber
AND tblInvAsmDocDTSerial.strSerialNumber = @SerialNumber
UPDATE tblInvTrfDocDTSerial
SET dteExpiryDate = @ExpiryDate
FROM tblInvTrfDocDT
WHERE tblInvTrfDocDTSerial.strTrfDocID = tblInvTrfDocDT.strTrfDocID
AND tblInvTrfDocDTSerial.intLineNo = tblInvTrfDocDT.intLineNo
AND tblInvTrfDocDT.strPartNumber = @PartNumber
AND tblInvTrfDocDTSerial.strSerialNumber = @SerialNumber
UPDATE tblInvLotExt
SET dteExpiryDate = @ExpiryDate
WHERE strPartNumber = @PartNumber
AND strLotNumber = @SerialNumber
UPDATE tblInvIssReqDocDTSerial
SET dteExpiryDate = @ExpiryDate
FROM tblInvIssReqDocDT
WHERE tblInvIssReqDocDTSerial.strInvIssReqDocID = tblInvIssReqDocDT.strInvIssReqDocID
AND tblInvIssReqDocDTSerial.intLineNo = tblInvIssReqDocDT.intLineNo
AND tblInvIssReqDocDT.strPartNumber = @PartNumber
AND tblInvIssReqDocDTSerial.strSerialNumber = @SerialNumber
UPDATE tblInvRepackDocDTSerial
SET dteExpiryDate = @ExpiryDate
FROM tblInvRepackDocDT
WHERE tblInvRepackDocDTSerial.strRepackDocID = tblInvRepackDocDT.strRepackDocID
AND tblInvRepackDocDTSerial.intLineNo = tblInvRepackDocDT.intLineNo
AND tblInvRepackDocDT.strPartNumber = @PartNumber
AND tblInvRepackDocDTSerial.strSerialNumber = @SerialNumber
UPDATE tblManJobByProdSerial
SET dteExpiryDate = @ExpiryDate
WHERE strPartNumber = @PartNumber
AND strSerialNumber = @SerialNumber
UPDATE tblManWIPCompInvSerial
SET dteExpiryDate = @ExpiryDate
FROM tblManWIPCompInv
WHERE tblManWIPCompInvSerial.strWIPDocID = tblManWIPCompInv.strWIPDocID
AND tblManWIPCompInvSerial.intLineNo = tblManWIPCompInv.intLineNo
AND tblManWIPCompInv.strPartNumber = @PartNumber
AND tblManWIPCompInvSerial.strSerialNumber = @SerialNumber
UPDATE tblManWIPCompInvSerialOutSeq
SET dteExpiryDate = @ExpiryDate
WHERE strPartNumber = @PartNumber
AND strSerialNumber = @SerialNumber
UPDATE tblOrderDocDADTSerial
SET dteExpiryDate = @ExpiryDate
FROM tblOrderDocDADT
WHERE tblOrderDocDADTSerial.strOrdDADocID = tblOrderDocDADT.strOrdDADocID
AND tblOrderDocDADTSerial.intLineNo = tblOrderDocDADT.intLineNo
AND tblOrderDocDADT.strPartNumber = @PartNumber
AND tblOrderDocDADTSerial.strSerialNumber = @SerialNumber
UPDATE tblPickTicketsDTSerial
SET dteExpiryDate = @ExpiryDate
FROM tblPickTicketsDT
WHERE tblPickTicketsDTSerial.strPkTkDocID = tblPickTicketsDT.strPkTkDocID
AND tblPickTicketsDTSerial.intLineNo = tblPickTicketsDT.intLineNo
AND tblPickTicketsDT.strPartNumber = @PartNumber
AND tblPickTicketsDTSerial.strSerialNumber = @SerialNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvItemForNumberRename] @Type INT
,@ItemSearch VARCHAR(100)
AS
IF (@ItemSearch IS NOT NULL)
BEGIN
SELECT strPartNumber
,strDesc
FROM tblInv
WHERE (intType = @Type)
AND (bitInactive = 0)
AND bitOtherCmp = 0
AND (
strPartNumber LIKE CONCAT (
'%'
,@ItemSearch
,'%'
)
OR strDesc LIKE CONCAT (
'%'
,@ItemSearch
,'%'
)
)
END
ELSE
BEGIN
SELECT strPartNumber
,strDesc
FROM tblInv
WHERE (intType = @Type)
AND (bitInactive = 0)
AND bitOtherCmp = 0
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvItemNumConvForNumberRename] @Type INT
,@TypeBoth INT
AS
BEGIN
SELECT strInvNumConv AS InvNumConv
,strDesc AS [Desc]
,bitDefault AS IsDefault
,(strInvNumConv + ' (' + strDesc + ')') AS DisplayText
,intNumberType AS NumberType
FROM tblInvNumConv
WHERE bitInactive = 0
AND (
intType = @Type
OR intType = @TypeBoth
)
ORDER BY strInvNumConv
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdatetblInvData] @Items VARCHAR(50)
,@ItemRename VARCHAR(50)
,@UseItemBuild BIT
,@ItemSegment1 VARCHAR(50)
,@ItemSegment2 VARCHAR(50)
,@ItemSegment3 VARCHAR(50)
,@ItemSegment4 VARCHAR(50)
,@InvNumConv VARCHAR(50)
AS
BEGIN
UPDATE tblInv
SET strPartNumber = @ItemRename
,dteLastUpdated = GetDate()
,bitItemNumConvUsed = @UseItemBuild
,strItemSegment1 = @ItemSegment1
,strItemSegment2 = @ItemSegment2
,strItemSegment3 = @ItemSegment3
,strItemSegment4 = @ItemSegment4
,strInvNumConv = @InvNumConv
WHERE strPartNumber = @Items
UPDATE tblInvBOM
SET strPartItemNumber = @ItemRename
WHERE strPartItemNumber = @Items
UPDATE tblValueBasedPricingDT
SET strPartNumber = @ItemRename
WHERE strPartNumber = @Items
UPDATE tblManBOMCompInv
SET strPartNumber = @ItemRename
WHERE strPartNumber = @Items
UPDATE tblManJobCompInv
SET strBOMNumber = @ItemRename
WHERE strBOMNumber = @Items
UPDATE tblManJobCompInv
SET strPartNumber = @ItemRename
WHERE strPartNumber = @Items
UPDATE tblManWIPCompInv
SET strPartNumber = @ItemRename
WHERE strPartNumber = @Items
UPDATE tblInvUpsell
SET strPartItemNumber = @ItemRename
WHERE strPartItemNumber = @Items
UPDATE tblInvContainers
SET strPartItemNumber = @ItemRename
WHERE strPartItemNumber = @Items
UPDATE tblInvExtBin
SET strPartNumber = @ItemRename
WHERE strPartNumber = @Items
UPDATE tblProfileMenuItems
SET ItemID = @ItemRename
WHERE ItemID = @Items
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvNumConvForInvNumConv] @InvNumConv AS NVARCHAR(100)
AS
BEGIN
SELECT (
CAST((
CASE 
WHEN intSeg1Type = 2
THEN 1
ELSE 0
END
) AS INT) + CAST((
CASE 
WHEN intSeg2Type = 2
THEN 1
ELSE 0
END
) AS INT) + CAST((
CASE 
WHEN intSeg3Type = 2
THEN 1
ELSE 0
END
) AS INT) + CAST((
CASE 
WHEN intSeg4Type = 2
THEN 1
ELSE 0
END
) AS INT)
) AS Seg4Type
FROM tblInvNumConv
WHERE strInvNumConv = @InvNumConv
END
GO

----------------------------------------------------
CREATE PROCEDURE GetAllSegmentList @Seg1Checked AS BIT
	,@Seg2Checked AS BIT
	,@Seg3Checked AS BIT
	,@Seg4Checked AS BIT
	,@Seg1 AS BIT
	,@Seg2 AS BIT
	,@Seg3 AS BIT
	,@Seg4 AS BIT
	,@SQstrInvNumConv AS VARCHAR(50)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(Max) = ''
	DECLARE @Query1 AS NVARCHAR(Max) = ''
	DECLARE @Query2 AS NVARCHAR(Max) = ''
	DECLARE @Query3 AS NVARCHAR(Max) = ''

	IF (
			@Seg1Checked = 1
			AND @Seg1 = 1
			)
	BEGIN
		SET @Query1 = @Query1 + 'a.strCode '
		SET @Query2 = @Query2 + ' (select strCode from tblItemSegmentSetup where intSegmentId =1 and strInvNumConv=''' + @SQstrInvNumConv + ''') a ';
		SET @Query3 = @Query3 + 'a.strCode '
	END

	IF (
			@Seg2Checked = 1
			AND @Seg2 = 1
			)
	BEGIN
		IF (Len(@Query1) > 0)
			SET @Query1 = @Query1 + '+' + '''-''' + '+ b.strCode '
		ELSE
			SET @Query1 = @Query1 + ' b.strCode '

		IF (Len(@Query2) > 0)
			SET @Query2 = @Query2 + + ' cross join (select strCode from tblItemSegmentSetup where intSegmentId =2 and strInvNumConv=''' + @SQstrInvNumConv + ''') b '
		ELSE
			SET @Query2 = @Query2 + ' (select strCode from tblItemSegmentSetup where intSegmentId =2 and strInvNumConv=''' + @SQstrInvNumConv + ''') b '

		IF (Len(@Query3) > 0)
			SET @Query3 = @Query3 + + ', b.strCode '
		ELSE
			SET @Query3 = @Query3 + ' b.strCode '
	END
	IF (
			@Seg3Checked = 1
			AND @Seg3 = 1
			)
	BEGIN
		IF (Len(@Query1) > 0)
			SET @Query1 = @Query1 + '+' + '''-''' + '+ c.strCode '
		ELSE
			SET @Query1 = @Query1 + ' c.strCode '

		IF (Len(@Query2) > 0)
			SET @Query2 = @Query2 + + ' cross join (select strCode from tblItemSegmentSetup where intSegmentId =3 and strInvNumConv=''' + @SQstrInvNumConv + ''') c '
		ELSE
			SET @Query2 = @Query2 + ' (select strCode from tblItemSegmentSetup where intSegmentId =3 and strInvNumConv=''' + @SQstrInvNumConv + ''') c '

		IF (Len(@Query3) > 0)
			SET @Query3 = @Query3 + + ', c.strCode '
		ELSE
			SET @Query3 = @Query3 + ' c.strCode '
	END

	IF (
			@Seg4Checked = 1
			AND @Seg4 = 1
			)
	BEGIN
		IF (Len(@Query1) > 0)
			SET @Query1 = @Query1 + '+' + '''-''' + ' + d.strCode '
		ELSE
			SET @Query1 = @Query1 + ' d.strCode '

		IF (Len(@Query2) > 0)
			SET @Query2 = @Query2 + + ' cross join (select strCode from tblItemSegmentSetup where intSegmentId =4 and strInvNumConv=''' + @SQstrInvNumConv + ''') d '
		ELSE
			SET @Query2 = @Query2 + ' (select strCode from tblItemSegmentSetup where intSegmentId =4 and strInvNumConv=''' + @SQstrInvNumConv + ''') d '

		IF (Len(@Query3) > 0)
			SET @Query3 = @Query3 + ', d.strCode '
		ELSE
			SET @Query3 = @Query3 + 'd.strCode '
	END
	IF (
			Len(@Query1) > 0
			AND Len(@Query2) > 0
			AND Len(@Query3) > 0
			)
	BEGIN
		SET @Query = ' Select ' + @Query1 + ' FROM ' + @Query2 + ' order by ' + @Query3;
		EXEC (@Query)
	END
	ELSE
		SELECT ''
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetItemSegmentFormatSetupSelect] @InvNumConv AS NVARCHAR(100)
AS
BEGIN
SELECT [strInvNumConv] AS InvNumConv
,[strDesc] AS [Desc]
,cast([intType] AS INT) AS [intType]
,[bitAllowHyphens] AS [Desc]
,[bitSeg1Enabled] AS Seg1Enabled
,[bitSeg1Checked] AS Seg1Checked
,[strSeg1Name] AS Seg1Name
,[intSeg1Attribute] AS Seg1Attribute
,[intSeg1Places] AS Seg1Places
,[bitSeg2Enabled] AS Seg2Enabled
,[bitSeg2Checked] AS Seg2Checked
,[strSeg2Name] AS Seg2Name
,[intSeg2Attribute] AS Seg2Attribute
,[intSeg2Places] AS Seg2Places
,[bitSeg3Enabled] AS Seg3Enabled
,[bitSeg3Checked] AS Seg3Checked
,[strSeg3Name] AS Seg3Name
,[intSeg3Attribute] AS Seg3Attribute
,[intSeg3Places] AS Seg3Places
,[bitSeg4Enabled] AS Seg4Enabled
,[bitSeg4Checked] AS Seg4Checked
,[strSeg4Name] AS Seg4Name
,[intSeg4Attribute] AS Seg4Attribute
,[intSeg4Places] AS Seg4Places
,[bitInactive] AS Inactive
,[bitDefault] AS [Default]
,[intNumberType] AS NumberType
,[intSeg4Type] AS Seg4Type
,[strSeg4StartAt] AS Seg4StartAt
,[intSeg1Type] AS Seg1Type
,[strSeg1StartAt] AS Seg1StartAt
,[intSeg2Type] AS Seg2Type
,[strSeg2StartAt] AS Seg2StartAt
,[intSeg3Type] AS Seg3Type
,[strSeg3StartAt] AS Seg3StartAt
FROM tblInvNumConv
WHERE strInvNumConv = @InvNumConv
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetItemSegmentSetupSearch] (
@SegmentSetupId INT = NULL
,@SegmentId INT = NULL
,@Code NVARCHAR(50) = NULL
,@Description NVARCHAR(200) = NULL
,@InvNumConv NVARCHAR(50) = NULL
)
AS
BEGIN
SET NOCOUNT ON
SELECT [intSegmentSetupId] AS SegmentSetupId
,[intSegmentId] AS SegmentId
,[strCode] AS Code
,[strDescription] AS Description
,[strInvNumConv] AS InvNumConv
FROM [tblItemSegmentSetup]
WHERE (
([intSegmentSetupId] = @SegmentSetupId)
OR (@SegmentSetupId IS NULL)
)
AND (
([intSegmentId] = @SegmentId)
OR (@SegmentId IS NULL)
)
AND (
([strCode] = @Code)
OR (@Code IS NULL)
)
AND (
([strDescription] = @Description)
OR (@Description IS NULL)
)
AND (
([strInvNumConv] = @InvNumConv)
OR (@InvNumConv IS NULL)
)
ORDER BY strCode
END
GO

----------------------------------------------------
CREATE PROCEDURE GetAllItemIntItemNumber
AS
BEGIN
SELECT strPartNumber AS PartNumber
FROM tblInv
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetMaxItemSegment] (
    @InvNumConv AS VARCHAR(50),
    @StartText AS VARCHAR(50),
    @Seg1Checked AS BIT,
    @Seg2Checked AS BIT,
    @Seg3Checked AS BIT,
    @LastActiveSegment AS INT
)
AS
BEGIN
    DECLARE @Query NVARCHAR(MAX) = '';
    DECLARE @Query1 NVARCHAR(MAX) = '';

    SET @Query = 'SELECT ISNULL(MAX(CAST(ISNULL(strItemSegment' +
 CAST(@LastActiveSegment AS NVARCHAR(10)) + ', 0) AS INT)), 0) AS MaxNumber ' +
     'FROM tblInv WHERE bitItemNumConvUsed = 1 AND strInvNumConv = ''' + @InvNumConv + '''';

    IF (@Seg1Checked = 1 AND @LastActiveSegment > 1)
    BEGIN
        SET @Query1 = ' AND (strItemSegment1';
    END

    IF (@Seg2Checked = 1 AND @LastActiveSegment > 2)
    BEGIN
        IF (LEN(@Query1) > 0)
            SET @Query1 += ' + ''-'' + strItemSegment2';
        ELSE
            SET @Query1 = ' AND (strItemSegment2';
    END

    IF (@Seg3Checked = 1 AND @LastActiveSegment > 3)
    BEGIN
        IF (LEN(@Query1) > 0)
            SET @Query1 += ' + ''-'' + strItemSegment3';
        ELSE
            SET @Query1 = ' AND (strItemSegment3';
    END

    IF (@LastActiveSegment > 1)
    BEGIN
        SET @Query += @Query1 + ') = @StartText';
    END

    EXEC sp_executesql @Query, 
        N'@InvNumConv NVARCHAR(50), @StartText NVARCHAR(50)', 
        @InvNumConv = @InvNumConv, 
        @StartText = @StartText;
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[EmpMaterialProfileSave] @Id BIGINT
,@Name NVARCHAR(50)
,@Description NVARCHAR(200)
,@Inactive BIT
AS
BEGIN
IF (
(
SELECT COUNT(*)
FROM tblEmpMaterialIssueProfile
WHERE lngId = @Id
) = 0
)
BEGIN
INSERT INTO tblEmpMaterialIssueProfile (
strName
,strDescription
,bitInactive
)
VALUES (
@Name
,@Description
,@Inactive
)
SELECT @Id = @@IDENTITY
END
ELSE
BEGIN
UPDATE tblEmpMaterialIssueProfile
SET strName = @Name
,strDescription = @Description
,bitInactive = @Inactive
WHERE lngId = @Id
DELETE
FROM tblEmpMaterialIssueProfileDT
WHERE lngProfileId = @Id
END
SELECT @Id
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetEmpMaterialIssueProfileList] (
	@SearchText NVARCHAR(50) = NULL
	,@IsInactive BIT = NULL
	,@PageSize INT = 25
	,@PageNumber INT = 1
	)
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT strName AS Name
		,bitInactive AS bitInactive
		,lngId AS ID
		,strDescription AS Description
	FROM [dbo].[tblEmpMaterialIssueProfile]
	WHERE (
			strName LIKE '%' + @SearchText + '%'
			OR @SearchText IS NULL
			)
		AND (
			bitInactive = 0
			OR bitInactive = @IsInactive
			)
	ORDER BY strName OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetEmpProfileCount] (@ID NVARCHAR(30) = NULL)
AS
BEGIN
SET NOCOUNT ON;
SELECT COUNT(strEmpName)
FROM tblEmployees
WHERE lngProfileId = @ID
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteEmpMaterialProfile] (@ID BIGINT)
AS
BEGIN
SET NOCOUNT ON;
DELETE
FROM [tblEmpMaterialIssueProfile]
WHERE [lngID] = @ID
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetEmpMaterialProfile] (@ProfileId BIGINT)
AS
BEGIN
SET NOCOUNT ON
SELECT lngId AS ID
,strName AS Name
,strDescription AS Description
,bitInactive AS bitInactive
FROM tblEmpMaterialIssueProfile
WHERE lngId = @ProfileId
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetEmpMaterialIssueProfileDT] (@ProfileId BIGINT)
AS
BEGIN
SET NOCOUNT ON
SELECT lngId AS Id
,lngProfileId AS ProfileId
,tblEmpMaterialIssueProfileDT.strPartNumber AS PartNumber
,tblInv.strDesc AS Description
,tblInv.strCategory AS Category
,strUnitOfMeasure AS Unit
,intBudgetFrequency AS BudgetFrequency
,decBudgetQty AS BudgetQty
FROM tblEmpMaterialIssueProfileDT
INNER JOIN tblInv ON tblInv.strPartNumber = tblEmpMaterialIssueProfileDT.strPartNumber
WHERE lngProfileId = @ProfileId
ORDER BY lngId DESC
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertEmpMaterialIssueProfileDT] @tblEmpMaterialIssueProfileDT SaveEmpMaterialIssueProfileDTTableType READONLY
AS
BEGIN
INSERT INTO [dbo].[tblEmpMaterialIssueProfileDT] (
[lngProfileId]
,[strPartNumber]
,[intBudgetFrequency]
,[decBudgetQty]
)
SELECT *
FROM @tblEmpMaterialIssueProfileDT
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteItemNumConv] @ItemNumConv VARCHAR(50)
AS
BEGIN
DELETE
FROM tblItemSegmentSetup
WHERE strInvNumConv = @ItemNumConv
DELETE
FROM tblInvNumConv
WHERE strInvNumConv = @ItemNumConv
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateInvNumConv] @Type INT
AS
BEGIN
UPDATE tblInvNumConv
SET bitDefault = 0
WHERE intType = @Type
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvNumConv] (
@InvNumConv NVARCHAR(50)
,@Description NVARCHAR(100)
,@Type INT
,@IsAutoInvokeChecked BIT
,@IsSegment1Enable BIT
,@IsSegment1Checked BIT
,@Segment1Name NVARCHAR(15)
,@SelectedSegment1Attribute INT
,@Seg1PlacesValue INT
,@IsSegment2Enable BIT
,@IsSegment2Checked BIT
,@Segment2Name NVARCHAR(15)
,@SelectedSegment2Attribute INT
,@Seg2PlacesValue INT
,@IsSegment3Enable BIT
,@IsSegment3Checked BIT
,@Segment3Name NVARCHAR(15)
,@SelectedSegment3Attribute INT
,@Seg3PlacesValue INT
,@IsSegment4Enable BIT
,@IsSegment4Checked BIT
,@Segment4Name NVARCHAR(15)
,@SelectedSegment4Attribute INT
,@Seg4PlacesValue INT
,@IsInactiveCheck BIT
,@IsAllowHyphensChecked BIT
,@NumberType INT
,@Seg4Type INT
,@Seg4StartAtValue NVARCHAR(50)
,@Seg1Type INT
,@Seg1StartAtValue NVARCHAR(50)
,@Seg2Type INT
,@Seg2StartAtValue NVARCHAR(50)
,@Seg3Type INT
,@Seg3StartAtValue NVARCHAR(50)
,@RowUpdateDate DATETIME
)
AS
BEGIN
INSERT INTO tblInvNumConv (
strInvNumConv
,strDesc
,intType
,bitAllowHyphens
,bitSeg1Enabled
,bitSeg1Checked
,strSeg1Name
,intSeg1Attribute
,intSeg1Places
,bitSeg2Enabled
,bitSeg2Checked
,strSeg2Name
,intSeg2Attribute
,intSeg2Places
,bitSeg3Enabled
,bitSeg3Checked
,strSeg3Name
,intSeg3Attribute
,intSeg3Places
,bitSeg4Enabled
,bitSeg4Checked
,strSeg4Name
,intSeg4Attribute
,intSeg4Places
,bitInactive
,bitDefault
,intNumberType
,intSeg4Type
,strSeg4StartAt
,intSeg1Type
,strSeg1StartAt
,intSeg2Type
,strSeg2StartAt
,intSeg3Type
,strSeg3StartAt
,dteRowUpdated
)
VALUES (
@InvNumConv
,@Description
,@Type
,@IsAutoInvokeChecked
,@IsSegment1Enable
,@IsSegment1Checked
,@Segment1Name
,@SelectedSegment1Attribute
,@Seg1PlacesValue
,@IsSegment2Enable
,@IsSegment2Checked
,@Segment2Name
,@SelectedSegment2Attribute
,@Seg2PlacesValue
,@IsSegment3Enable
,@IsSegment3Checked
,@Segment3Name
,@SelectedSegment3Attribute
,@Seg3PlacesValue
,@IsSegment4Enable
,@IsSegment4Checked
,@Segment4Name
,@SelectedSegment4Attribute
,@Seg4PlacesValue
,@IsInactiveCheck
,@IsAllowHyphensChecked
,@NumberType
,@Seg4Type
,@Seg4StartAtValue
,@Seg1Type
,@Seg1StartAtValue
,@Seg2Type
,@Seg2StartAtValue
,@Seg3Type
,@Seg3StartAtValue
,GetDate()
)
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteItemSegmentSetup] (
@GUidTempNumber NVARCHAR(50)
,@SegmentId INT
)
AS
BEGIN
DELETE
FROM tblItemSegmentSetup
WHERE strInvNumConv = @GUidTempNumber
AND intSegmentId = @SegmentId
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[updateItemSegmentSetup] (
@InvNumConv NVARCHAR(50)
,@GUidTempNumber NVARCHAR(50)
)
AS
BEGIN
UPDATE tblItemSegmentSetup
SET strInvNumConv = @InvNumConv
WHERE strInvNumConv = @GUidTempNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteSegmentSetup] @InvNumSegNo NVARCHAR(50)
,@SegmentNo INT
AS
BEGIN
DELETE
FROM tblItemSegmentSetup
WHERE strInvNumConv = @InvNumSegNo
AND intSegmentId = @SegmentNo
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvNumConvCount] @Type INT
AS
BEGIN
SELECT COUNT(strInvNumConv)
FROM tblInvNumConv
WHERE bitInactive = 0
AND intType = @Type
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvCount] @Type VARCHAR(50)
AS
BEGIN
SELECT COUNT(strInvNumConv)
FROM tblInv
WHERE strInvNumConv = @Type
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvNumConvList] @IsInactiveCheck BIT
AS
BEGIN
IF (@IsInactiveCheck = 0)
BEGIN
SELECT intType AS intType
,strInvNumConv AS InvNumConv
,strDesc AS strDesc
,bitInactive AS Inactive
,bitDefault AS IsDefault
FROM tblInvNumConv
WHERE bitInactive = 0
ORDER BY strInvNumConv
END
ELSE
BEGIN
SELECT intType AS intType
,strInvNumConv AS InvNumConv
,strDesc AS strDesc
,bitInactive AS Inactive
,bitDefault AS IsDefault
FROM tblInvNumConv
ORDER BY strInvNumConv
END
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetItemSegmentFormatSetupSelectAllList]
AS
BEGIN
SET NOCOUNT ON
SELECT [strInvNumConv]
,[strDesc]
,cast([intType] AS INT) AS [intType]
,[bitAllowHyphens]
,[bitSeg1Enabled]
,[bitSeg1Checked]
,[strSeg1Name]
,[intSeg1Attribute]
,[intSeg1Places]
,[bitSeg2Enabled]
,[bitSeg2Checked]
,[strSeg2Name]
,[intSeg2Attribute]
,[intSeg2Places]
,[bitSeg3Enabled]
,[bitSeg3Checked]
,[strSeg3Name]
,[intSeg3Attribute]
,[intSeg3Places]
,[bitSeg4Enabled]
,[bitSeg4Checked]
,[strSeg4Name]
,[intSeg4Attribute]
,[intSeg4Places]
,[bitInactive]
,[bitDefault]
,[intNumberType]
,[intSeg4Type]
,[strSeg4StartAt]
,[intSeg1Type]
,[strSeg1StartAt]
,[intSeg2Type]
,[strSeg2StartAt]
,[intSeg3Type]
,[strSeg3StartAt]
FROM tblInvNumConv
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetItemSegmentSetupSearchBinding] (
@SegmentSetupId INT = NULL
,@SegmentId INT = NULL
,@Code NVARCHAR(50) = NULL
,@Description NVARCHAR(200) = NULL
,@InvNumConv NVARCHAR(50) = NULL
)
AS
BEGIN
SET NOCOUNT ON
SELECT [intSegmentSetupId] AS SegmentSetupId
,[intSegmentId] AS SegmentId
,[strCode] AS Code
,[strDescription] AS Description
,[strInvNumConv] AS InvNumConv
FROM [tblItemSegmentSetup]
WHERE (
([intSegmentSetupId] = @SegmentSetupId)
OR (@SegmentSetupId IS NULL)
)
AND (
([intSegmentId] = @SegmentId)
OR (@SegmentId IS NULL)
)
AND (
([strCode] = @Code)
OR (@Code IS NULL)
)
AND (
([strDescription] = @Description)
OR (@Description IS NULL)
)
AND (
([strInvNumConv] = @InvNumConv)
OR (@InvNumConv IS NULL)
)
ORDER BY strCode
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InvItemSegmentSetupSave] (
@SegmentSetupId INT = NULL
,@SegmentId INT = NULL
,@Code NVARCHAR(50) = NULL
,@Description NVARCHAR(200) = NULL
,@InvNumConv NVARCHAR(50) = NULL
,@OldInvNumConv NVARCHAR(50) = NULL
)
AS
BEGIN
SET NOCOUNT ON
IF (
(
SELECT COUNT(*)
FROM tblItemSegmentSetup
WHERE intSegmentSetupId = @SegmentSetupId
AND strInvNumConv = @OldInvNumConv
) = 0
)
BEGIN
INSERT INTO [tblItemSegmentSetup] (
[intSegmentId]
,[strCode]
,[strDescription]
,[strInvNumConv]
)
VALUES (
@SegmentId
,@Code
,@Description
,@InvNumConv
)
SELECT @SegmentSetupId
END
ELSE
BEGIN
UPDATE [tblItemSegmentSetup]
SET [intSegmentId] = ISNULL(@SegmentId, [intSegmentId])
,[strCode] = ISNULL(@Code, [strCode])
,[strDescription] = ISNULL(@Description, [strDescription])
,[strInvNumConv] = ISNULL(@InvNumConv, [strInvNumConv])
WHERE [intSegmentSetupId] = @SegmentSetupId
AND strInvNumConv = @OldInvNumConv
SELECT @SegmentSetupId
END
RETURN 1
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCategoryFromIncompatibleStorageSubCat]
AS
BEGIN
SELECT strParentCategory AS ParentCategory
,strSubCategory AS SubCategory
FROM tblIncompatibleStorageSubCat
GROUP BY strParentCategory
,strSubCategory
ORDER BY strParentCategory
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteIncompatibleStorageSubCatDetails] (
@Category AS VARCHAR(20)
,@SubCategory AS VARCHAR(20)
)
AS
BEGIN
DELETE
FROM tblIncompatibleStorageSubCat
WHERE strParentCategory = @Category
AND strSubCategory = @SubCategory
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetIncompatibleStorageSubCatDetails] (
@Category AS VARCHAR(20)
,@SubCategory AS VARCHAR(20)
)
AS
BEGIN
SELECT strParentCategory AS ParentCategory
,strSubCategory AS SubCategory
,strIncompatibleParentCategory AS IncompatibleParentCategory
,strIncompatibleSubCategory AS IncompatibleSubCategory
,strIncompatibilityReason AS IncompatibilityReason
FROM tblIncompatibleStorageSubCat
WHERE strSubCategory = @SubCategory
AND strParentCategory = @Category
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetSubCategoryForCategory] (@Category AS VARCHAR(20))
AS
BEGIN
SELECT strCategory
FROM tblInvSubCat
WHERE strParentCategory = @Category
ORDER BY strCategory
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvSubCat] (
@Category AS VARCHAR(20)
,@SubCategory AS VARCHAR(20)
)
AS
BEGIN
SELECT strParentCategory AS IncompatibleParentCategory
,strCategory AS IncompatibleSubCategory
FROM tblInvSubCat
WHERE strCategory <> @SubCategory
OR strParentCategory <>  @Category
END
GO

CREATE PROCEDURE [dbo].[GetInvItemIncompatibleStorageSubCat] (
@ParentCategory AS VARCHAR(20)
,@SubCategory AS VARCHAR(20)
)
AS
BEGIN
SELECT ISCI.strIncompatibilityReason as Reason
	,ISCI.strIncompatibleParentCategory as ParentCategory
	,ISCI.strIncompatibleSubCategory as ParentSubCategory
	,SC.strDesc as [Description]
FROM tblIncompatibleStorageSubCat ISCI
INNER JOIN tblInvSubCat SC ON ISCI.strIncompatibleParentCategory = sc.strParentCategory
WHERE ISCI.strIncompatibleSubCategory = SC.strCategory
	AND ISCI.strParentCategory = @ParentCategory
	AND ISCI.strSubCategory = @SubCategory
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SaveIncompatibleItemDetails] (
@ParentCategory AS VARCHAR(20)
,@SubCategory AS VARCHAR(50)
,@IncompatibleParentCategory AS VARCHAR(20)
,@IncompatibleSubCategory AS VARCHAR(50)
,@IncompatibilityReason AS VARCHAR(50)
)
AS
BEGIN
INSERT INTO tblIncompatibleStorageSubCat (
strParentCategory
,strSubCategory
,strIncompatibleParentCategory
,strIncompatibleSubCategory
,strIncompatibilityReason
)
VALUES (
@ParentCategory
,@SubCategory
,@IncompatibleParentCategory
,@IncompatibleSubCategory
,@IncompatibilityReason
)
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvVendPriceListsByDate] 
(
	@VendorName AS NVARCHAR(50),
	@SQSearch AS NVARCHAR(100) = NULL
)
AS
BEGIN
	SELECT pd.uidPriceBasedID AS PriceBasedID, 
		   pd.dteStartDate AS StartDate, 
		   pd.dteFinishDate AS FinishDate, 
		   pd.bitInactive AS Inactive,
		   case when pd.bitInactive = 0 then 'Active' else 'Inactive' END AS [Status]
	FROM tblInvVendPriceListsByDate pd 
	WHERE pd.strVendName = @VendorName
	AND ((ISNULL(@SQSearch, '') = '') OR (CONVERT(nvarchar(20), dteStartDate, 103) LIKE '%' + @SQSearch + '%' OR CONVERT(nvarchar(20), dteFinishDate, 103) LIKE '%' + @SQSearch + '%' OR CASE WHEN bitInactive = 1 THEN 'Inactive' ELSE 'Active' END LIKE '%' + @SQSearch + '%'))
	ORDER BY pd.dteStartDate
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRebateAP] (@VendorName AS VARCHAR(20))
AS
BEGIN
SET NOCOUNT ON;
SELECT tblRebateSetup.strRebateName AS RebateName
,tblRebateSetup.strPartNumber AS PartNumber
,tblRebateSetup.dtRebateStartDate AS StartDate
,tblRebateSetup.dtRebateEndDate AS EndDate
,ISNULL(tblRebateSetup.decRebateVal, 0) AS RebateValue
,tblRebateSetup.intRebateOrder
,CASE 
WHEN tblRebateSetup.intRebateOrder = 0
THEN 'Debit Note'
WHEN tblRebateSetup.intRebateOrder = 1
THEN 'Sales Invoice'
WHEN tblRebateSetup.intRebateOrder = 2
THEN 'Sales Order'
END AS [Order]
,tblRebateSetup.strCustName AS CustName
,CASE 
WHEN tblRebateSetup.intRebateOrder = 0
THEN ISNULL((
SELECT TOP 1 tblVendors.strVendDesc
FROM tblVendors
WHERE tblVendors.strVendName = tblRebateSetup.strCustName
), '')
WHEN tblRebateSetup.intRebateOrder IN (
1
,2
)
THEN ISNULL((
SELECT TOP 1 tblCustomers.strCustDesc
FROM tblCustomers
WHERE tblCustomers.strCustName = tblRebateSetup.strCustName
), '')
END AS CustDesc
,tblRebateSetup.intRebateId AS RebateId
FROM tblRebateSetup
WHERE tblRebateSetup.strVendName = @VendorName
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRebateSummaryAP] @VendorName VARCHAR(20)
,@FromDate DATETIME
,@ToDate DATETIME
AS
BEGIN
SET NOCOUNT ON;
SELECT RS.strRebateName AS RebateName
,RS.strPartNumber AS PartNumber
,RS.dtRebateStartDate AS StartDate
,RS.dtRebateEndDate AS EndDate
,ISNULL(RS.decRebateVal, 0) AS RebateValue
,RS.intRebateOrder AS OrderType
,CASE 
WHEN RS.intRebateOrder = 0
THEN 'Debit Note'
WHEN RS.intRebateOrder = 1
THEN 'Sales Order'
WHEN RS.intRebateOrder = 2
THEN 'Sales Invoice'
END AS [Order]
,RS.strCustName AS CustName
,CASE 
WHEN RS.intRebateOrder = 0
THEN ISNULL((
SELECT TOP 1 tblVendors.strVendDesc
FROM tblVendors
WHERE tblVendors.strVendName = RS.strCustName
), '')
WHEN RS.intRebateOrder = 1
THEN ISNULL((
SELECT TOP 1 tblCustomers.strCustDesc
FROM tblCustomers
WHERE tblCustomers.strCustName = RS.strCustName
), '')
END AS CustDesc
,RS.intRebateId AS RebateId
,RP.dteInvoiceDate AS InvoiceDate
,RP.decInvoiceAmount AS InvoiceAmount
,RP.strInvoiceNumber AS InvoiceDocNo
,RP.strProcessDocument AS ProcessDocument
,RP.intRebateProcessId AS rebateProcessid
,RPI.strItemCode AS RebateItem
,RPI.decRebateValue AS RebateInvoiceItemValue
,RPI.strDocNumber AS RebateInvoiceDOCItemValue
,RPI.strRebateItemCode AS RebateItemCode
FROM tblRebateSetup RS
INNER JOIN tblRebateProcesses RP ON (RS.intRebateId = RP.intRebateId)
INNER JOIN tblRebateProcessItems RPI ON (RP.intRebateProcessId = RPI.intRebateProcessId)
WHERE RS.strVendName = @VendorName
AND RP.dteInvoiceDate BETWEEN @FromDate
AND @ToDate
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendorInformation] (
@VendorNumber AS NVARCHAR(50)
,@IsForeign AS BIT
)
AS
BEGIN
-- Optional Fields
DECLARE @Field1 NVARCHAR(40)
,@Field2 NVARCHAR(40)
,@Field3 NVARCHAR(40)
,@Field4 NVARCHAR(40)
,@Field5 NVARCHAR(40)
,@Field6 NVARCHAR(40)
,@Field7 NVARCHAR(40)
,@Field8 NVARCHAR(40)
,@Field9 NVARCHAR(40)
,@Field10 NVARCHAR(40)
,@Field11 NVARCHAR(40)
,@Field12 NVARCHAR(40)
SELECT @Field1 = CASE 
WHEN strRec1 <> ''
THEN strRec1
ELSE 'Field 1'
END
,@Field2 = CASE 
WHEN strRec2 <> ''
THEN strRec2
ELSE 'Field 2'
END
,@Field3 = CASE 
WHEN strRec3 <> ''
THEN strRec3
ELSE 'Field 3'
END
,@Field4 = CASE 
WHEN strRec4 <> ''
THEN strRec4
ELSE 'Field 4'
END
,@Field5 = CASE 
WHEN strRec5 <> ''
THEN strRec5
ELSE 'Field 5'
END
,@Field6 = CASE 
WHEN strRec6 <> ''
THEN strRec6
ELSE 'Field 6'
END
,@Field7 = CASE 
WHEN strRec7 <> ''
THEN strRec7
ELSE 'Field 7'
END
,@Field8 = CASE 
WHEN strRec8 <> ''
THEN strRec8
ELSE 'Field 8'
END
,@Field9 = CASE 
WHEN strRec9 <> ''
THEN strRec9
ELSE 'Field 9'
END
,@Field10 = CASE 
WHEN strRec10 <> ''
THEN strRec10
ELSE 'Field 10'
END
,@Field11 = CASE 
WHEN strRec11 <> ''
THEN strRec11
ELSE 'Field 11'
END
,@Field12 = CASE 
WHEN strRec12 <> ''
THEN strRec12
ELSE 'Field 12'
END
FROM tblOptFields;
-------------------------------------------------
PRINT @IsForeign;
SELECT CAST(strNotes AS NVARCHAR(MAX)) AS 'Notes'
,CAST(T1.strVendName AS NVARCHAR(MAX)) AS 'Vendor Number'
,CAST(T1.strVendDesc AS NVARCHAR(MAX)) AS 'Vendor Name'
,CAST(strContact AS NVARCHAR(MAX)) AS 'Contact Person'
,'Address' = CAST(CASE 
WHEN strStreet1 IS NULL
OR strStreet1 = ''
THEN ''
ELSE strStreet1
END + CASE 
WHEN strStreet2 IS NULL
OR strStreet2 = ''
THEN ''
ELSE CASE 
WHEN strStreet1 <> ''
THEN ', '
ELSE ''
END + strStreet2
END + CASE 
WHEN strCity IS NULL
OR strCity = ''
THEN ''
ELSE CASE 
WHEN coalesce(strStreet1, strStreet2) IS NOT NULL
THEN ', '
ELSE ''
END + strCity
END + CASE 
WHEN strProvince IS NULL
OR strProvince = ''
THEN ''
ELSE CASE 
WHEN coalesce(strStreet1, strStreet2, strCity) IS NOT NULL
THEN ', '
ELSE ''
END + strProvince
END + CASE 
WHEN strPostal IS NULL
OR strPostal = ''
THEN ''
ELSE CASE 
WHEN coalesce(strStreet1, strStreet2, strCity, strProvince) IS NOT NULL
THEN ', '
ELSE ''
END + strPostal
END + CASE 
WHEN strCountry IS NULL
OR strCountry = ''
THEN ''
ELSE CASE 
WHEN coalesce(strStreet1, strStreet2, strCity, strProvince, strPostal) IS NOT NULL
THEN ', '
ELSE ''
END + strCountry
END AS NVARCHAR(MAX))
,CAST(strPhone AS NVARCHAR(MAX)) AS 'Phone Number'
,CAST(strCellPhone AS NVARCHAR(MAX)) AS 'Mobile Number'
,CAST(strFax AS NVARCHAR(MAX)) AS 'Fax Number'
,CAST(strEmail AS NVARCHAR(MAX)) AS 'E-Mail Address'
,CAST(strTerm AS NVARCHAR(MAX)) AS 'Terms'
,CAST(CASE 
WHEN CAST(intDelMethod AS INT) = 0
THEN CAST('Print' AS NVARCHAR(MAX))
WHEN CAST(intDelMethod AS INT) = 1
THEN CAST('E-Mail' AS NVARCHAR(MAX))
END AS NVARCHAR(MAX)) AS 'Other Method'
,CAST(strCurrName AS NVARCHAR(MAX)) AS 'Currency'
,CAST(strVendCategory AS NVARCHAR(MAX)) AS 'Category'
,CAST(ISNULL(CONVERT(NVARCHAR(MAX), T1.intDept) + ' ' + CONVERT(NVARCHAR(MAX), T5.strDesc), '') AS NVARCHAR(MAX)) AS 'Department'
,CAST(strCK AS NVARCHAR(MAX)) AS 'Company Registration No.'
,CAST(strVAT AS NVARCHAR(MAX)) AS 'Tax Number'
,CAST(ISNULL(T3.strDescription, '') AS NVARCHAR(MAX)) AS 'Tax'
,CAST(ISNULL(strTenderType, '') AS NVARCHAR(MAX)) AS 'Default Tender Type'
,CASE 
WHEN @IsForeign = 0
THEN CAST(T2.strCurrSymbol + ' ' + CAST(decBalDue AS NVARCHAR(MAX)) AS NVARCHAR(MAX))
ELSE CAST(T2.strCurrSymbol + ' ' + CAST(decBalDueF AS NVARCHAR(MAX)) AS NVARCHAR(MAX))
END AS 'Balance Due'
,CASE 
WHEN @IsForeign = 0
THEN CAST(T2.strCurrSymbol + ' ' + CAST(decYTDPurch AS NVARCHAR(MAX)) AS NVARCHAR(MAX))
ELSE CAST(T2.strCurrSymbol + ' ' + CAST(decYTDPurchF AS NVARCHAR(MAX)) AS NVARCHAR(MAX))
END AS 'Year-To-Date Purchases'
,CASE 
WHEN @IsForeign = 0
THEN CAST(T2.strCurrSymbol + ' ' + CAST(decOpenOrders AS NVARCHAR(MAX)) AS NVARCHAR(MAX))
ELSE CAST(T2.strCurrSymbol + ' ' + CAST(decOpenOrdersF AS NVARCHAR(MAX)) AS NVARCHAR(MAX))
END AS 'Open Orders'
,CAST(CASE 
WHEN (T1.bitInactive = 1)
THEN CAST('Inactive' AS NVARCHAR(MAX))
ELSE CAST('Active' AS NVARCHAR(MAX))
END AS NVARCHAR(MAX)) AS 'Status'
,CAST(ISNULL(strField1, '') AS NVARCHAR(MAX)) AS 'Field 1'
,CAST(ISNULL(strField2, '') AS NVARCHAR(MAX)) AS 'Field 2'
,CAST(ISNULL(strField3, '') AS NVARCHAR(MAX)) AS 'Field 3'
,CAST(ISNULL(strField4, '') AS NVARCHAR(MAX)) AS 'Field 4'
,CAST(ISNULL(strField5, '') AS NVARCHAR(MAX)) AS 'Field 5'
,CAST(ISNULL(strField6, '') AS NVARCHAR(MAX)) AS 'Field 6'
,CAST(ISNULL(strField7, '') AS NVARCHAR(MAX)) AS 'Field 7'
,CAST(ISNULL(strField8, '') AS NVARCHAR(MAX)) AS 'Field 8'
,CAST(ISNULL(strField9, '') AS NVARCHAR(MAX)) AS 'Field 9'
,CAST(ISNULL(strField10, '') AS NVARCHAR(MAX)) AS 'Field 10'
,CAST(ISNULL(strField11, '') AS NVARCHAR(MAX)) AS 'Field 11'
,CAST(ISNULL(strField12, '') AS NVARCHAR(MAX)) AS 'Field 12'
INTO #tmpVendors
FROM tblVendors T1
LEFT JOIN tblCurrency T2 ON T1.strCurrency = T2.strCurrency
LEFT JOIN tblTaxCodes T3 ON T1.strTaxCode = T3.strTaxCode
LEFT JOIN tblDepartments T5 ON T1.intDept = T5.intDept
WHERE T1.strVendName = @VendorNumber
SELECT *
INTO #tmpVendorsUnpivot
FROM #tmpVendors
UNPIVOT(Information FOR Vendor IN (
[Notes]
,[Vendor Number]
,[Vendor Name]
,[Contact Person]
,[Address]
,[Phone Number]
,[Mobile Number]
,[Fax Number]
,[E-Mail Address]
,[Terms]
,[Other Method]
,[Currency]
,[Category]
,[Department]
,[Company Registration No.]
,[Tax Number]
,[Tax]
,[Default Tender Type]
,[Balance Due]
,[Year-To-Date Purchases]
,[Open Orders]
,[Status]
,[Field 1]
,[Field 2]
,[Field 3]
,[Field 4]
,[Field 5]
,[Field 6]
,[Field 7]
,[Field 8]
,[Field 9]
,[Field 10]
,[Field 11]
,[Field 12]
)) AS u
DECLARE @strTypeVendor AS NVARCHAR(50) = (
SELECT TOP 1 strVendors
FROM tblCoOptsN
)
UPDATE #tmpVendorsUnpivot
SET Vendor = CASE @strTypeVendor
WHEN ''
THEN Vendor
ELSE REPLACE(Vendor, 'Vendor', @strTypeVendor)
END
WHERE Vendor IN (
'Vendor Number'
,'Vendor Name'
)
--Dynamic Field Set For Header
UPDATE #tmpVendorsUnpivot
SET Vendor = @Field1
WHERE Vendor = 'Field 1';
UPDATE #tmpVendorsUnpivot
SET Vendor = @Field2
WHERE Vendor = 'Field 2';
UPDATE #tmpVendorsUnpivot
SET Vendor = @Field3
WHERE Vendor = 'Field 3';
UPDATE #tmpVendorsUnpivot
SET Vendor = @Field4
WHERE Vendor = 'Field 4';
UPDATE #tmpVendorsUnpivot
SET Vendor = @Field5
WHERE Vendor = 'Field 5';
UPDATE #tmpVendorsUnpivot
SET Vendor = @Field6
WHERE Vendor = 'Field 6';
UPDATE #tmpVendorsUnpivot
SET Vendor = @Field7
WHERE Vendor = 'Field 7';
UPDATE #tmpVendorsUnpivot
SET Vendor = @Field8
WHERE Vendor = 'Field 8';
UPDATE #tmpVendorsUnpivot
SET Vendor = @Field9
WHERE Vendor = 'Field 9';
UPDATE #tmpVendorsUnpivot
SET Vendor = @Field10
WHERE Vendor = 'Field 10';
UPDATE #tmpVendorsUnpivot
SET Vendor = @Field11
WHERE Vendor = 'Field 11';
UPDATE #tmpVendorsUnpivot
SET Vendor = @Field12
WHERE Vendor = 'Field 12';
SELECT Vendor
,Information
FROM #tmpVendorsUnpivot
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendorItemPricing] (
@VendorNumber AS VARCHAR(50)
,@StartDate AS SMALLDATETIME
,@FinishDate AS SMALLDATETIME
,@EffectiveDateIndex AS INT
)
AS
BEGIN
IF (@EffectiveDateIndex >= 0)
BEGIN
SELECT tblInvVend.strPartNumber AS PartNumber
,tblInv.strDesc AS [Desc]
,strItemCode AS strItemCode
,strItemDesc AS strItemDesc
,intWarrantyDays AS intWarrantyDays
,decPrice AS decPrice
,decLocalPrice AS decLocalPrice
,decDiscPerc AS decDiscPerc
,decLandedCostFactor AS LandedCostFactor
,bitPreferred AS Preferred
,lngID AS lngID
,tblInvVend.strUnit AS Unit
FROM tblInvVend
INNER JOIN tblInv ON tblInvVend.strPartNumber = tblInv.strPartNumber
INNER JOIN tblInvVendPriceListsByDate ON tblInvVendPriceListsByDate.strVendName = tblInvVend.strVendName
WHERE tblInvVend.strVendName = @VendorNumber
AND tblInvVend.uidPriceBasedID = tblInvVendPriceListsByDate.uidPriceBasedID
AND Cast(tblInvVendPriceListsByDate.dteStartDate AS DATE) = Cast(@StartDate AS DATE)
AND CAST(tblInvVendPriceListsByDate.dteFinishDate AS DATE) = cast(@FinishDate AS DATE)
ORDER BY tblInvVend.strPartNumber
END
ELSE
BEGIN
SELECT tblInvVend.strPartNumber AS PartNumber
,tblInv.strDesc AS strItemDesc
,strItemCode AS strItemCode
,strItemDesc AS strVendDesc
,intWarrantyDays AS intWarrantyDays
,decPrice AS decPrice
,decLocalPrice AS decLocalPrice
,decDiscPerc AS decDiscPerc
,decLandedCostFactor AS LandedCostFactor
,bitPreferred AS bitPreferred
,lngID AS lngID
,tblInvVend.strUnit AS Unit
FROM tblInvVend
INNER JOIN tblInv ON tblInvVend.strPartNumber = tblInv.strPartNumber
INNER JOIN tblInvVendPriceListsByDate ON tblInvVendPriceListsByDate.strVendName = tblInvVend.strVendName
WHERE tblInvVend.strVendName = @VendorNumber
ORDER BY tblInvVend.strPartNumber
END
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendorQuotesInfo] (
@VendorNumber NVARCHAR(50)
,@IsShowQuotes BIT
,@FromDate DATETIME
,@ToDate DATETIME
)
AS
BEGIN
IF (@IsShowQuotes = 1)
BEGIN
SELECT T4.strVendDesc AS VendDesc
,T1.strOrdPDocID AS DocumentNumber
,T1.dteJournalDate AS JournalDate
,T1.dteRequired AS Required
,T1.strUserName AS UserName
,'Quotes' AS METHOD
,T1.decTotal AS Total
,T1.strStatusTypeCode AS StatusTypeCode
,T1.bitIsForeign AS IsForeign
,T1.decTotalF AS TotalForeign
,T4.strCurrency AS CurrencyCode
FROM tblOrderDocP T1
INNER JOIN tblVendors T4 ON T1.strVendName = T4.strVendName
INNER JOIN tblCurrency T5 ON T4.strCurrency = T5.strCurrency
WHERE T1.intDocType = 2
AND T1.strVendName = @VendorNumber
AND CONVERT(DATE, T1.dteJournalDate) BETWEEN CONVERT(DATE, @FromDate)
AND CONVERT(DATE, @ToDate)
ORDER BY T1.dteSystemDate
,strOrdPDocID
END
ELSE
BEGIN
SELECT T4.strVendDesc AS VendDesc
,T1.strOrdPDocID AS DocumentNumber
,T1.dteJournalDate AS JournalDate
,T1.dteRequired AS Required
,T1.strUserName AS UserName
,'Quotes' AS METHOD
,T1.decTotal AS Total
,T1.strStatusTypeCode AS StatusTypeCode
,T1.bitIsForeign AS IsForeign
,T1.decTotalF AS TotalForeign
,T4.strCurrency AS CurrencyCode
FROM tblOrderDocP T1
INNER JOIN tblVendors T4 ON T1.strVendName = T4.strVendName
INNER JOIN tblCurrency T5 ON T4.strCurrency = T5.strCurrency
WHERE T1.intDocType = 2
AND T1.strVendName = @VendorNumber
AND T1.bitCleared = 0
ORDER BY T1.dteSystemDate
,strOrdPDocID
END
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendorOpenOrdersInfo] (
@VendorNumber NVARCHAR(50)
,@IsShowOrders BIT
,@FromDate DATETIME
,@ToDate DATETIME
)
AS
BEGIN
IF (@IsShowOrders = 1)
BEGIN
SELECT T3.strPartNumber AS PartNumber
,T2.strBuyUnit AS Unit
,T2.strPartDesc AS PartDescription
,T1.strOrdPDocID AS OrdDocID
,T2.decBuyQty AS Qty
,T2.decBuyQtyRemain AS QtyRemaining
,T3.decSumOnOrder AS SumOnOrder
,CASE 
WHEN T2.bitIsForeign = 0
THEN T2.decPriceEaExc
ELSE T2.decPriceEaExcF
END AS UnitPrice
,ISNULL(T4.strTaxCode, '') AS TaxCode
,CASE 
WHEN T2.bitIsForeign = 0
THEN CASE 
WHEN ISNULL(T4.decRate, 0) = 0
THEN T2.decBuyQtyRemain * T2.decPriceEaExc
ELSE ((T2.decBuyQtyRemain * T2.decPriceEaExc) + ((T2.decBuyQtyRemain * T2.decPriceEaExc) * (T4.decRate / 100)))
END
ELSE CASE 
WHEN ISNULL(T4.decRate, 0) = 0
THEN T2.decBuyQtyRemain * T2.decPriceEaExcF
ELSE ((T2.decBuyQtyRemain * T2.decPriceEaExcF) + ((T2.decBuyQtyRemain * T2.decPriceEaExcF) * (T4.decRate / 100)))
END
END AS RemainingOrderValue
,CASE 
WHEN T2.bitIsForeign = 0
THEN T1.decTotal
ELSE T1.decTotalF
END AS TotalOrderValue
,T2.strLocation AS Location
,T1.dteJournalDate AS [Date]
,T1.strStatusTypeCode AS StatusTypeCode
,T1.dteRequired AS ReqDate
FROM tblOrderDocP T1
INNER JOIN tblOrderDocPDT T2 ON T1.strOrdPDocID = T2.strOrdPDocID
INNER JOIN tblInv T3 ON T2.strPartNumber = T3.strPartNumber
LEFT JOIN tblTaxCodeExt T4 ON T2.strTaxCode = T4.strTaxCode
WHERE T1.strVendName = @VendorNumber
AND T1.intDocType = 1
AND CONVERT(DATE, T1.dteJournalDate) BETWEEN CONVERT(DATE, @FromDate)
AND CONVERT(DATE, @ToDate)
ORDER BY T1.dteJournalDate
,T1.strOrdPDocID
END
ELSE
BEGIN
SELECT T3.strPartNumber AS PartNumber
,T2.strBuyUnit AS Unit
,T2.strPartDesc AS PartDescription
,T1.strOrdPDocID AS OrdDocID
,T2.decBuyQty AS Qty
,T2.decBuyQtyRemain AS QtyRemaining
,T3.decSumOnOrder AS SumOnOrder
,CASE 
WHEN T2.bitIsForeign = 0
THEN T2.decPriceEaExc
ELSE T2.decPriceEaExcF
END AS UnitPrice
,ISNULL(T4.strTaxCode, '') AS TaxCode
,CASE 
WHEN T2.bitIsForeign = 0
THEN CASE 
WHEN ISNULL(T4.decRate, 0) = 0
THEN T2.decBuyQtyRemain * T2.decPriceEaExc
ELSE ((T2.decBuyQtyRemain * T2.decPriceEaExc) + ((T2.decBuyQtyRemain * T2.decPriceEaExc) * (T4.decRate / 100)))
END
ELSE CASE 
WHEN ISNULL(T4.decRate, 0) = 0
THEN T2.decBuyQtyRemain * T2.decPriceEaExcF
ELSE ((T2.decBuyQtyRemain * T2.decPriceEaExcF) + ((T2.decBuyQtyRemain * T2.decPriceEaExcF) * (T4.decRate / 100)))
END
END AS RemainingOrderValue
,CASE 
WHEN T2.bitIsForeign = 0
THEN T1.decTotal
ELSE T1.decTotalF
END AS TotalOrderValue
,T2.strLocation AS Location
,T1.dteJournalDate AS [Date]
,T1.strStatusTypeCode AS StatusTypeCode
,T1.dteRequired AS ReqDate
FROM tblOrderDocP T1
INNER JOIN tblOrderDocPDT T2 ON T1.strOrdPDocID = T2.strOrdPDocID
INNER JOIN tblInv T3 ON T2.strPartNumber = T3.strPartNumber
LEFT JOIN tblTaxCodeExt T4 ON T2.strTaxCode = T4.strTaxCode
WHERE T1.strVendName = @VendorNumber
AND T1.intDocType = 1
ORDER BY T1.dteJournalDate
,T1.strOrdPDocID
END
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendorTrendsData] (
@VendorNumber NVARCHAR(50)
,@FromDate DATETIME
,@ToDate DATETIME
)
AS
BEGIN
SELECT DATEPART(yyyy, dteJournalDate) AS [Year]
,DATEPART(M, dteJournalDate) AS [Month]
,ISNULL(SUM(CASE 
WHEN bitIsForeign = 0
THEN decSubTotal
ELSE decSubTotalF
END), 0) AS TotalPurchases
FROM tblInvoiceDocP
WHERE (strVendName = @VendorNumber)
AND (
dteJournalDate BETWEEN CONVERT(DATE, @FromDate)
AND CONVERT(DATE, @ToDate)
)
AND (bitHistoryTrans = 0)
GROUP BY DATEPART(yyyy, dteJournalDate)
,DATEPART(M, dteJournalDate)
ORDER BY DATEPART(yyyy, dteJournalDate)
,DATEPART(M, dteJournalDate)
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseData] (
@VendorNumber NVARCHAR(50)
,@FromDate DATETIME
,@ToDate DATETIME
)
AS
BEGIN
SELECT tblInvoiceDocPDT.strPartNumber AS PartNumber
,tblInvoiceDocPDT.strPartDesc AS [Description]
,tblInvoiceDocP.dteJournalDate AS [TransactionDate]
,tblInvoiceDocP.strInvPDocID AS [DocumentNumber]
,ISNULL(tblInvTracking.lngJourID, 0) AS [JourID]
,tblInvoiceDocPDT.decBuyQty AS [Qty]
,CAST(ISNULL(tblInvTrackingDT.decRevenue, 0) AS NUMERIC(16, 2)) AS Revenue
,CAST(CASE 
WHEN ISNULL(tblInvTrackingDT.decCOGS, 0) = 0
THEN ISNULL(tblInvTrackingDT.decValue, 0)
ELSE ISNULL(tblInvTrackingDT.decCOGS, 0)
END AS NUMERIC(16, 2)) AS Cost
,CAST(ISNULL(tblInvTrackingDT.decRevenue - tblInvTrackingDT.decCOGS, 0) AS NUMERIC(16, 2)) AS PROFIT
,CASE 
WHEN (tblInvoiceDocPDT.intType = 1)
THEN 'Stock Item'
WHEN (tblInvoiceDocPDT.intType = 4)
THEN 'Service Item'
ELSE CASE 
WHEN (tblInvoiceDocPDT.intType = 11)
THEN 'Buyout Item'
ELSE 'Journal Code'
END
END AS ItemType
,ISNULL(tblInv.strCategory, '') AS ItemCategory
,ISNULL(tblInv.strAcctSet, '') AS [AccountSet]
,tblInvoiceDocP.strUserName AS UserName
,CASE 
WHEN (tblInvTrackingDT.decRevenue <> 0)
THEN (CAST(((tblInvTrackingDT.decRevenue - tblInvTrackingDT.decCOGS) / tblInvTrackingDT.decRevenue * 100) AS NUMERIC(16, 2)))
ELSE 0
END AS Margin
,tblInvoiceDocPDT.strBuyUnit AS Unit
FROM tblInvoiceDocPDT
INNER JOIN tblInvoiceDocP ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocP.strInvPDocID
INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber
AND tblInvoiceDocPDT.strLocation = tblInv.strLocName
LEFT JOIN tblInvTrackingDT ON tblInvTrackingDT.strPartNumber = tblInvoiceDocPDT.strPartNumber
AND tblInvTrackingDT.strSource = tblInvoiceDocPDT.strInvPDocID
AND tblInvTrackingDT.intLineNo = tblInvoiceDocPDT.intLineNo
AND tblInvTrackingDT.lngInvTrackID = (
SELECT MAX(lngInvTrackID)
FROM tblInvTrackingDT
WHERE strSource = tblInvoiceDocP.strInvPDocID
)
LEFT JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
WHERE tblInvoiceDocP.strVendName = @VendorNumber
AND tblInvoiceDocP.dteJournalDate BETWEEN CONVERT(DATE, @FromDate)
AND CONVERT(DATE, @ToDate)
ORDER BY [TransactionDate]
,[PartNumber]
,[DocumentNumber]
END

GO
----------------------------------------------------
CREATE PROCEDURE GetCurrencyDetailsForVendor (@VendorNumber NVARCHAR(50))
AS
BEGIN
SELECT strCurrency AS CurrencyCode
,strCurrName AS CurrencyName
FROM tblCurrency
WHERE strCurrency IN (
SELECT strCurrency
FROM tblVendors
WHERE strVendName = @VendorNumber
)
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendorAgeAnalysisData] (
@VendorNumber NVARCHAR(50)
,@TransType INT
,@CurrentYearEnds DATETIME
,@IncludePaidInDate DATETIME
)
AS
BEGIN
SELECT CASE ISNULL(T3.strSource, '')
WHEN ''
THEN T1.strInvDepNumber
ELSE CASE 
WHEN T1.intTransType = @TransType
THEN ISNULL(T1.strJEDocID, '')
ELSE ISNULL(T1.strInvPDocID, '')
END
END AS InvDepNumber
,CASE ISNULL(T3.strSource, '')
WHEN ''
THEN CASE 
WHEN T1.intTransType = @TransType
THEN ISNULL(T1.strJEDocID, '')
ELSE ISNULL(T1.strInvPDocID, '')
END
ELSE T3.strSource
END AS Invoice
,T2.dteJournalDate AS DTTransDate
,T1.intTransType AS TransType
,T2.intTransType AS TransTypeDT
,T2.decAmount AS InvAmount
,T2.decAmountF AS InvAmountF
,T1.dteDueDate AS DueDate
,T2.lngVendPayID AS VendPayID
FROM tblVendTrans T1
INNER JOIN tblVendTransDT T2 ON T1.lngVendTrID = T2.lngVendTrID
LEFT JOIN tblVendPay T3 ON T2.lngVendPayID = T3.lngVendPayID
WHERE (T1.strVendName = @VendorNumber)
AND (T2.bitReversed = 0)
AND (T2.dteJournalDate <= CONVERT(DATE, @CurrentYearEnds))
AND (
T2.lngVendTrID NOT IN (
SELECT T2.lngVendTrID
FROM tblVendTrans T1
INNER JOIN tblVendTransDT T2 ON T1.lngVendTrID = T2.lngVendTrID
WHERE (T2.bitReversed = 0)
AND (T2.dteJournalDate <= CONVERT(DATE, @IncludePaidInDate))
GROUP BY T2.lngVendTrID
HAVING SUM(T2.decAmount) = 0
AND SUM(T2.decAmountF) = 0
)
)
ORDER BY T2.dteJournalDate
,invoice
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendPayAndTransData] (
@VendorNumber NVARCHAR(50)
,@intTransType AS INT
,@FromDate DATETIME
,@ToDate DATETIME
)
AS
BEGIN
SELECT T1.strInvDepNumber AS InvDepNumber
,CASE 
WHEN T1.intTransType = @intTransType
THEN ISNULL(T1.strJEDocID, '')
END AS JEDocID
,CASE 
WHEN T1.intTransType <> @intTransType
THEN ISNULL(T1.strInvPDocID, '')
END AS InvPDocID
,T2.dteJournalDate AS JournalDate
,cast(T1.intTransType as int) AS TransTypeInt
,cast(T2.intTransType as int)  AS TransTypeDTInt
,T2.decAmount AS InvAmount
,T2.decAmountF AS InvAmountF
,T1.dteDueDate AS DueDate
,T2.lngVendPayID AS VendPayID
,T1.dteSystemDate AS SystemDate
FROM tblVendTrans T1
INNER JOIN tblVendTransDT T2 ON T1.lngVendTrID = T2.lngVendTrID
WHERE T1.strVendName = @VendorNumber
AND T2.bitReversed = 0
AND ISNULL(T2.lngVendPayID, 0) = 0
AND T1.dteJournalDate BETWEEN CONVERT(DATE, @FromDate)
AND CONVERT(DATE, @ToDate)
UNION ALL
SELECT ISNULL(T3.strComment, '') AS InvDepNumber
,ISNULL(T3.strSource, '') AS InvPDocID
,ISNULL(T3.strSource, '') AS JEDocID
,T3.dteJournalDate AS JournalDate
,1 AS TransType
,2 AS [Transaction]
,SUM(ISNULL(T4.decAmount, 0)) AS InvAmount
,SUM(ISNULL(T4.decAmountF, 0)) AS InvAmountF
,T3.dteJournalDate AS DueDate
,T3.lngVendPayID AS VendPayID
,T3.dteSystemDate AS SystemDate
FROM tblVendPay T3
INNER JOIN tblVendTransDT T4 ON T3.lngVendPayID = T4.lngVendPayID
INNER JOIN tblVendTrans T5 ON T4.lngVendTrID = T5.lngVendTrID
WHERE T3.strVendName = @VendorNumber
AND T3.bitReversed = 0
AND T3.dteJournalDate BETWEEN CONVERT(DATE, @FromDate)
AND CONVERT(DATE, @ToDate)
AND (T4.bitReversed = 0)
GROUP BY ISNULL(T3.strSource, '')
,T3.dteJournalDate
,T3.dteSystemDate
,T3.lngVendPayID
,ISNULL(T3.strComment, '')
ORDER BY dteSystemDate
,JournalDate
,InvPDocID
,JEDocID
END

GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendTransDataOpenBal] (
@VendorNumber NVARCHAR(50)
,@intTransType AS INT
,@ToDate DATETIME
)
AS
BEGIN
SELECT CASE ISNULL(T3.strSource, '')
WHEN ''
THEN T1.strInvDepNumber
ELSE T3.strSource
END AS InvDepNumber
,CASE ISNULL(T3.strSource, '')
WHEN ''
THEN CASE 
WHEN T1.intTransType = @intTransType
THEN ISNULL(T1.strJEDocID, '')
ELSE ISNULL(T1.strInvPDocID, '')
END
ELSE T3.strSource
END AS InvPDocID
,T2.dteJournalDate AS JournalDate
,cast(T1.intTransType  as int) AS TransTypeInt
,cast(T2.intTransType  as int) AS TransTypeDTInt
,T2.decAmount AS InvAmount
,T2.decAmountF AS InvAmountF
,T1.dteDueDate AS DueDate
FROM tblVendTrans T1
INNER JOIN tblVendTransDT T2 ON T1.lngVendTrID = T2.lngVendTrID
LEFT JOIN tblVendPay T3 ON T2.lngVendPayID = T3.lngVendPayID
WHERE T1.strVendName = @VendorNumber
AND T2.bitReversed = 0
AND T2.dteJournalDate < CONVERT(DATE, @ToDate)
ORDER BY T1.dteJournalDate
,InvPDocID
END
GO

/********* End [CRMLoadActivityStatus] (CRM)**********/
----------------------------------------------------
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetDiscountMatrixList]
AS
BEGIN
SELECT strCustCategory AS CustomerCat
,strInvCategory AS InventoryCat
,decDiscount AS DiscountValue
FROM tblDiscountMatrix
WHERE strCustCategory IN (
SELECT strCustCategory
FROM tblCustomerCat
WHERE bitInactive = 0
)
AND strInvCategory IN (
SELECT strCategory
FROM tblInvCat
WHERE bitInactive = 0
)
ORDER BY strInvCategory
,strCustCategory
END
GO
----------------------------------------------------
CREATE PROCEDURE GetInvDocDetails @Type AS NVARCHAR(50)  
 ,@SelectionField AS NVARCHAR(50)  
 ,@AssemblyLaunched AS BIT  
 ,@WorkCentre AS NVARCHAR(50)  
 ,@WorkCentreCode AS NVARCHAR(50)  
 ,@StartDate AS NVARCHAR(50)  
 ,@EndDate AS NVARCHAR(50)  
 ,@Sort AS NVARCHAR(50)  
AS  
BEGIN  
 DECLARE @Query AS NVARCHAR(Max) = ''  
  
 IF (@Type = 'WorkOrder')  
 BEGIN  
  SET @Query = 'SELECT strInvWODocID AS DocNumber, dteJournalDate AS JournalDate, dteStartDate AS StartDate, dteDueDate AS DueDate, strReference AS Reference, ISNULL((SELECT COUNT(tblProductionSchedule.strProdNumber) FROM tblProductionSchedule   
WHERE tblProductionSchedule.strInvWODocID = tblInvWorkOrder.strInvWODocID),0) AS JobCount, '''' FROM tblInvWorkOrder WHERE (dteJournalDate BETWEEN ''' + @StartDate + ''' AND ''' + @EndDate + ''')'  

  IF (  
    (  
     @SelectionField = 'Open Works Orders Only'  
     OR @SelectionField = 'Production Jobs'  
     )  
    OR @AssemblyLaunched = 1  
    )  
  BEGIN  
   SET @Query = @Query + '' + ' AND bitCleared = 0'  
  END  
  ELSE  
  BEGIN  
   IF (@WorkCentre = 'No Work Centres')  
   BEGIN  
    SET @Query = @Query + ' AND ISNULL(tblInvWorkCentre.strInvWCCode,'') = '''''  
   END  
   ELSE IF (  
     @WorkCentre != ''  
     AND @WorkCentre != 'All Work Centres'  
     AND @WorkCentre != 'No Work Centres'  
     )  
   BEGIN  
    SET @Query = @Query + ' AND tblInvWorkCentre.strInvWCCode = ''' + @WorkCentreCode + ''''  
   END  
  END  
 END  
 ELSE IF (@Type = 'ProductionJob')  
 BEGIN  
  IF (@AssemblyLaunched = 1)  
  BEGIN  
   SET @Query = 'SELECT strProdNumber AS DocNumber, dteSystemDate AS JournalDate, dteStartDate AS StartDate , dteDueDate AS DueDate, strPartNumber AS Reference, decReqQty AS ReqQty, ISNULL(tblInvWorkCentre.strDesc,'''') AS WorkCentre FROM tblProductionSchedule LEFT JOIN tblInvWorkCentre ON tblProductionSchedule.strInvWCCode = tblInvWorkCentre.strInvWCCode WHERE (dteStartDate >= ''' + @StartDate + ''' AND dteDueDate <= ''' + @EndDate + ''') AND bitCleared = 0 AND blnCompleted = 0 AND blnDisassemble = 0'  
  END  
  ELSE  
  BEGIN  
   SET @Query = 'SELECT strProdNumber AS DocNumber, dteSystemDate AS JournalDate, dteStartDate AS StartDate, dteDueDate AS DueDate, strPartNumber AS Reference, decReqQty AS ReqQty, ISNULL(tblInvWorkCentre.strDesc,'''') AS WorkCentre FROM tblProductionSchedule LEFT JOIN tblInvWorkCentre ON tblProductionSchedule.strInvWCCode = tblInvWorkCentre.strInvWCCode WHERE (dteStartDate >= ''' + @StartDate + ''' AND dteDueDate <= ''' + @EndDate + ''') AND bitCleared = 0 AND blnCompleted = 0 AND blnDisassemble = 0 AND ISNULL(strInvWODocID,'''') = '''''  
  END  
  
  IF (@WorkCentre = 'No Work Centres')  
  BEGIN  
   SET @Query = @Query + ' AND ISNULL(tblInvWorkCentre.strInvWCCode,'''') = '''''  
  END  
  ELSE IF (  
    @WorkCentre != ''  
    AND @WorkCentre != 'All Work Centres'  
    AND @WorkCentre != 'No Work Centres'  
    )  
  BEGIN  
   SET @Query = @Query + ' AND tblInvWorkCentre.strInvWCCode = ''' + @WorkCentreCode + ''''  
  END  
 END  
  
 IF (@Sort = 'Document')  
 BEGIN  
  IF (@Type = 'WorkOrder')  
  BEGIN  
   SET @Query = @Query + ' ORDER BY strInvWODocID DESC'  
  END  
  ELSE IF (@Type = 'ProductionJob')  
  BEGIN  
   SET @Query = @Query + ' ORDER BY strProdNumber DESC'  
  END  
 END  
 ELSE IF (@Sort = 'Date')  
 BEGIN  
  IF (@Type = 'WorkOrder')  
  BEGIN  
   SET @Query = @Query + ' ORDER BY dteJournalDate DESC'  
  END  
  ELSE IF (@Type = 'ProductionJob')  
  BEGIN  
   SET @Query = @Query + ' ORDER BY dteSystemDate DESC'  
  END  
 END  
 ELSE IF (@Sort = 'Start Date')  
 BEGIN  
  IF (@Type = 'WorkOrder')  
  BEGIN  
   SET @Query = @Query + ' ORDER BY dteStartDate DESC'  
  END  
  ELSE IF (@Type = 'ProductionJob')  
  BEGIN  
   SET @Query = @Query + ' ORDER BY dteDueDate DESC'  
  END  
 END  
 ELSE IF (@Sort = 'Reference')  
 BEGIN  
  IF (@Type = 'WorkOrder')  
  BEGIN  
   SET @Query = @Query + ' ORDER BY strReference DESC'  
  END  
  ELSE IF (@Type = 'ProductionJob')  
  BEGIN  
   SET @Query = @Query + ' ORDER BY strPartNumber DESC'  
  END  
 END  
 ELSE IF (@Sort = 'Total Jobs')  
 BEGIN  
  IF (@Type = 'WorkOrder')  
  BEGIN  
   SET @Query = @Query + ' ORDER BY intJobCount DESC'  
  END  
  ELSE IF (@Type = 'ProductionJob')  
  BEGIN  
   SET @Query = @Query + ' ORDER BY intReqQty DESC'  
  END  
 END  

 EXEC (@Query)  
END  
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvWorkCentre]
AS
BEGIN
SELECT strInvWCCode AS InvWCCode
,strDesc AS [Desc]
FROM tblInvWorkCentre
WHERE bitInactive = 0
ORDER BY strInvWCCode
END
GO

----------------------------------------------------

/****** Object:  StoredProcedure [dbo].[GetPasswordPolicies]    Script Date: 30-06-2021 17:48:00 ******/
CREATE PROCEDURE [dbo].[GetPasswordPolicies] @SQpageNumber INT = NULL
	,@SQpageSize INT = NULL
AS
BEGIN
	IF @SQpageNumber is not NULL
	BEGIN
		DECLARE @skip INT

		SET @skip = @SQpageSize * (@SQpageNumber - 1)
		SELECT *
		FROM tblPasswordPolicy
		ORDER BY PolicyName OFFSET(@Skip) ROWS
		FETCH NEXT (@SQpageSize) ROWS ONLY
	END
	ELSE
	BEGIN
		SELECT *
		FROM tblPasswordPolicy
	END
END
GO

----------------------------------------------

CREATE PROCEDURE GetPasswordChangeDate @username AS NVARCHAR(20)
AS
BEGIN
	SELECT dteLastPasswordChanged
	FROM tblUsers
	WHERE strUserName = @username
END
GO

/****** Object:  StoredProcedure [dbo].[AuthenticateToken]    Script Date: 22-06-2021 17:48:00 ******/
CREATE PROCEDURE AuthenticateToken
	 @userName NVARCHAR(20)
	,@token NVARCHAR(2000)
AS
BEGIN
	DECLARE @TokenGenerationTime AS DATETIME = (
			SELECT dteTokenGenerationTime
			FROM tblUsers
			WHERE strUserName = @userName
			)
	DECLARE @diff AS INTEGER = (
			SELECT datediff(minute, @TokenGenerationTime, getutcdate())
			)

	IF @diff > 15
	BEGIN
		SELECT 'tokentimeover'
	END
	ELSE
	BEGIN
		declare @count as integer = (SELECT count(*)
		FROM tblUsers
		WHERE strUserName = @userName
			AND strToken = @token)

		select iif(@count = 1,'validtoken','invalidtoken')
		
	END
END
GO

CREATE PROCEDURE GetFullUsername 
@username AS NVARCHAR(20)
AS
BEGIN
SELECT strName
FROM tblUsers
WHERE strUserName = @username
END
GO

----------------------------------------------------
Create Procedure [dbo].[InsertUpdateGLAccounts]
@intGLNumber as nvarchar(Max),
@strDesc as nvarchar(Max),
@intAccType as int,
@intGroupCode as int,
@intAccClass as int,
@bitAllowCenters as bit,
@strCurrency as nvarchar(10),
@isUpdate as bit
As
begin
if(@isUpdate = 1)
begin
UPDATE tblAccounts SET strDesc = @strDesc, intAccType = @intAccType, intGroupCode = @intGroupCode, intAccClass = @intAccClass WHERE intGLNumber = @intGLNumber
end
else
begin
INSERT INTO tblAccounts VALUES (@intGLNumber,@strDesc,@intAccType,@intGroupCode,@intAccClass,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'','','','','','',0,@bitAllowCenters,1,@strCurrency,0,0,0,0,0,0,0,0,0,0,0,GetDate(),0,0,0,0)
end
end
GO

----------------------------------------------------
create procedure UpdateGLAccountsLY
as
begin
INSERT INTO tblAccountsLY
SELECT intGLNumber, strDesc, intAccType, intGroupCode, intAccClass, bitInactive, 0, 0, 0, 0, bitBank, bitRecon, bitInventory, bitBudget, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, strField1, strField2, strField3, strField4, strField5, strField6, 0, bitAllowCenters, intCheqNumber, strCurrency, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 
FROM tblAccounts
end
go

----------------------------------------------------
CREATE PROCEDURE LoadAccountLegend   
AS  
BEGIN  
SELECT intAccType as AccType,
strAcctType as AccTypeDesc,
intGLNumberFrom as GLNumberFrom,
intGLNumberTo as GLNumberTo
FROM tblAccountType inner join tblAccountsLegend on tblAccountType.intAcctTypeID = tblAccountsLegend.intAccType  
END  
go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetAccountClassData]
AS
BEGIN
SELECT tblAccountType.strAcctType AS AccountType
,strCustomLabel AS CustomLabel
,tblAccountType.intAcctTypeID AS AcctTypeID
,tblAccountClass.intAcctClassID AS AcctClassID
,strDefaultLabel AS DefaultLabel
FROM tblAccountClass
INNER JOIN tblAccountType ON tblAccountClass.intAcctTypeID = tblAccountType.intAcctTypeID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GLSegmentSetup_Search] (
@intSegmentSetupId INT = NULL
,@intSegmentId INT = NULL
,@strCode NVARCHAR(30) = NULL
,@strDescription NVARCHAR(100) = NULL
,@bitIsPrimary BIT = NULL
,@intAccType INT = NULL
,@intAccClass INT = NULL
,@intGroupCode INT = NULL
)
AS
SET NOCOUNT ON
SELECT intSegmentSetupId AS SegmentSetupId
,intSegmentId AS SegmentId
,strCode AS Code
,strDescription AS Description
,bitIsPrimary AS IsPrimary
,intAccType AS AccType
,intAccClass AS AccClass
,intGroupCode AS GroupCode
FROM [tblGLSegmentSetup]
WHERE (
([intSegmentSetupId] = @intSegmentSetupId)
OR (@intSegmentSetupId IS NULL)
)
AND (
([intSegmentId] = @intSegmentId)
OR (@intSegmentId IS NULL)
)
AND (
([strCode] = @strCode)
OR (@strCode IS NULL)
)
AND (
([strDescription] = @strDescription)
OR (@strDescription IS NULL)
)
AND (
([bitIsPrimary] = @bitIsPrimary)
OR (@bitIsPrimary IS NULL)
)
AND (
([intAccType] = @intAccType)
OR (@intAccType IS NULL)
)
AND (
([intAccClass] = @intAccClass)
OR (@intAccClass IS NULL)
)
AND (
([intGroupCode] = @intGroupCode)
OR (@intGroupCode IS NULL)
)
ORDER BY strCode
go

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GLSegmentSetup_SelectAll_WHSegmentId] @segmentId AS INT
AS
BEGIN
SELECT [intSegmentSetupId] AS SegmentSetupId
,[intSegmentId] AS SegmentId
,[strCode] AS Code
,[strDescription] AS Description
,[bitIsPrimary] AS IsPrimary
FROM [tblGLSegmentSetup]
WHERE intSegmentId <> @segmentId
ORDER BY intSegmentId
,strCode
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetLabourByCode] @labourCode AS NVARCHAR(40)
AS
BEGIN
SELECT tblManLabour.strLabCode AS LabourCode
,tblManLabour.strDesc AS Description
,tblManLabour.decVariableHourly AS VariableHourly
,tblManLabour.decFixedSetup AS FixedSetup
,tblManLabour.decFixedBreakdown AS FixedBreakdown
,tblManLabour.bitInactive AS Inactive
,tblManLabour.intGLNumber AS GLNumber
,ISNULL((
SELECT tblAccounts.strDesc
FROM tblAccounts
WHERE tblAccounts.intGLNumber = tblManLabour.intGLNumber
), '') AS GLNumberDesc
,tblManLabour.intDept AS Dept
,tblManLabour.uidCenterID AS CenterID
,tblCenters.strLvl1 As Lvl1
,tblCenters.strLvl2 As Lvl2
,tblCenters.strLvl3 As Lvl3
,tblCenters.strLvl4 As Lvl4
,tblCenters.strLvl5 As Lvl5
FROM tblManLabour
LEFT JOIN tblCenters ON tblManLabour.uidCenterID = tblCenters.uidCenterID
WHERE tblManLabour.strLabCode = @labourCode
END
GO

----------------------------------------------------
CREATE PROCEDURE AddUpdateLabour @LabourCode AS NVARCHAR(40)
,@Description AS NVARCHAR(200)
,@VariableHourly AS MONEY
,@FixedSetup AS MONEY
,@FixedBreakdown AS MONEY
,@Inactive AS BIT
,@GLNumber AS NVARCHAR(60)
,@Dept AS INT = NULL
,@CenterID AS UNIQUEIDENTIFIER = NULL
,@IsEdit AS BIT
,@OldLabourCode AS NVARCHAR(40)
AS
BEGIN
IF @IsEdit = 1
BEGIN
UPDATE tblManLabour
SET strLabCode = @LabourCode
,strDesc = @Description
,decVariableHourly = @VariableHourly
,decFixedSetup = @FixedSetup
,decFixedBreakdown = @FixedBreakdown
,bitInactive = @Inactive
,intGLNumber = @GLNumber
,intDept = @Dept
,uidCenterID = @CenterID
WHERE strLabCode = @OldLabourCode
END
ELSE
BEGIN
INSERT INTO tblManLabour
VALUES (
@LabourCode
,@Description
,@VariableHourly
,@FixedSetup
,@FixedBreakdown
,@Inactive
,@GLNumber
,@Dept
,@CenterID
)
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetLabours] (
    @InActive BIT = 0
    ,@PageSize INT = 25
    ,@PageNumber INT = 1
    ,@Search AS NVARCHAR(Max) = ''
    )
AS
BEGIN
    DECLARE @skip INT

    SET @skip = @PageSize * (@PageNumber - 1)

    IF @InActive = 0
    BEGIN
    SELECT strLabCode AS LabourCode
        ,strDesc AS [Description]
        ,decVariableHourly AS VariableHourly
        ,decFixedSetup AS FixedSetup
        ,decFixedBreakdown AS FixedBreakdown
        ,bitInactive AS Inactive
        ,ISNULL(intGLNumber, 0) AS GLNumber
        ,ISNULL(intDept, 0) AS Dept
        ,uidCenterID AS CenterID
    FROM tblManLabour
    WHERE bitInactive = @InActive
        AND (
            ISNULL(strLabCode, '') LIKE '%' + ISNULL(@search, strLabCode) + '%'
            OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
            )
    ORDER BY strLabCode OFFSET(@Skip) ROWS

 

    FETCH NEXT (@PageSize) ROWS ONLY
    END
    ELSE
    BEGIN
    SELECT strLabCode AS LabourCode
        ,strDesc AS [Description]
        ,decVariableHourly AS VariableHourly
        ,decFixedSetup AS FixedSetup
        ,decFixedBreakdown AS FixedBreakdown
        ,bitInactive AS Inactive
        ,ISNULL(intGLNumber, 0) AS GLNumber
        ,ISNULL(intDept, 0) AS Dept
        ,uidCenterID AS CenterID
    FROM tblManLabour
    WHERE (
            ISNULL(strLabCode, '') LIKE '%' + ISNULL(@search, strLabCode) + '%'
            OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
            )
    ORDER BY strLabCode OFFSET(@Skip) ROWS

    FETCH NEXT (@PageSize) ROWS ONLY
    END

END
GO

----------------------------------------------------
CREATE PROCEDURE DeleteLabour @LabourCode NVARCHAR(40)
AS
BEGIN
DELETE
FROM tblManLabour
WHERE strLabCode = @LabourCode
END
GO




----------------------------------------------------
CREATE PROCEDURE GetWorkCentreByCode @WCCode AS NVARCHAR(40)
AS
BEGIN
SELECT strWCCode AS WorkCentreCode
,strDesc AS Description
,bitInactive AS Inactive
FROM tblManWorkCentre
WHERE strWCCode = @WCCode
END
GO

----------------------------------------------------
CREATE PROCEDURE GetWorkCentreLaboursByCode @WCCode AS NVARCHAR(40)    
AS    
BEGIN    
SELECT WC.strLabCode AS LabourCode    
,LAB.strDesc AS Description    
,WC.decVariableHourly AS VariableHourly    
,WC.decFixedSetup AS FixedSetup    
,WC.decFixedBreakdown AS FixedBreakdown    
,CASE    
	WHEN Isnull(tblCenters.strLvl5,'') != '' THEN tblCenters.strLvl1 + '\' + tblCenters.strLvl2 + '\' + tblCenters.strLvl3 + '\' + tblCenters.strLvl4 + '\' + tblCenters.strLvl5  
	WHEN Isnull(tblCenters.strLvl4,'') != '' THEN tblCenters.strLvl1 + '\' + tblCenters.strLvl2 + '\' + tblCenters.strLvl3 + '\' + tblCenters.strLvl4  
	WHEN Isnull(tblCenters.strLvl3,'') != '' THEN tblCenters.strLvl1 + '\' + tblCenters.strLvl2 + '\' + tblCenters.strLvl3  
	WHEN Isnull(tblCenters.strLvl2,'') != '' THEN tblCenters.strLvl1 + '\' + tblCenters.strLvl2  
	WHEN Isnull(tblCenters.strLvl1,'') != '' THEN tblCenters.strLvl1   
END as ProfitCenter   
FROM tblManWorkCentreLab WC    
INNER JOIN tblManLabour LAB ON WC.strLabCode = LAB.strLabCode    
LEFT JOIN tblCenters ON LAB.uidCenterID = tblCenters.uidCenterID    
WHERE WC.strWCCode = @WCCode    
ORDER BY WC.lngID    
END 
GO

----------------------------------------------------
CREATE PROCEDURE GetWorkCentreMachineryByCode @WCCode AS NVARCHAR(40)  
AS  
BEGIN  
SELECT WC.strMachCode AS MAchCode  
,MACH.strDesc AS MachDesc  
,WC.decVariableHourly AS VariableHourly  
,WC.decFixedSetup AS FixedSetup  
,WC.decFixedBreakdown AS FixedBreakdown  
,CASE    
	WHEN Isnull(tblCenters.strLvl5,'') != '' THEN tblCenters.strLvl1 + '\' + tblCenters.strLvl2 + '\' + tblCenters.strLvl3 + '\' + tblCenters.strLvl4 + '\' + tblCenters.strLvl5  
	WHEN Isnull(tblCenters.strLvl4,'') != '' THEN tblCenters.strLvl1 + '\' + tblCenters.strLvl2 + '\' + tblCenters.strLvl3 + '\' + tblCenters.strLvl4  
	WHEN Isnull(tblCenters.strLvl3,'') != '' THEN tblCenters.strLvl1 + '\' + tblCenters.strLvl2 + '\' + tblCenters.strLvl3  
	WHEN Isnull(tblCenters.strLvl2,'') != '' THEN tblCenters.strLvl1 + '\' + tblCenters.strLvl2  
	WHEN Isnull(tblCenters.strLvl1,'') != '' THEN tblCenters.strLvl1   
END as ProfitCenter   
FROM tblManWorkCentreMach WC  
INNER JOIN tblManMachinery MACH ON WC.strMachCode = MACH.strMachCode  
LEFT JOIN tblCenters ON MACH.uidCenterID = tblCenters.uidCenterID  
WHERE WC.strWCCode = @WCCode  
ORDER BY WC.lngID  
END  
GO

----------------------------------------------------
CREATE PROCEDURE GetWorkCentreCapacityByCode @WCCode AS NVARCHAR(40)
AS
BEGIN
SELECT Sunday
,Monday
,Tuesday
,Wednesday
,Thursday
,Friday
,Saturday
FROM tblManWorkCapacity
WHERE strWCCode = @WCCode
END
GO

----------------------------------------------------
CREATE PROCEDURE AddUpdateWorkCentre 
@WCCode AS NVARCHAR(200)
,@Desc AS NVARCHAR(200)
,@Inactive AS BIT
,@OldWCCode AS NVARCHAR(40)
,@Sun AS NVARCHAR(40)
,@Mon AS NVARCHAR(40)
,@Tues AS NVARCHAR(40)
,@Wed AS NVARCHAR(40)
,@Thu AS NVARCHAR(40)
,@Fri AS NVARCHAR(40)
,@Sat AS NVARCHAR(40)
,@IsEdit AS BIT
AS
BEGIN
IF @IsEdit = 1
BEGIN
UPDATE tblManWorkCentre
SET strWCCode = @WCCode
,strDesc = @Desc
,bitInactive = @Inactive
WHERE strWCCode = @OldWCCode
UPDATE tblManWorkCapacity
SET strWCCode = @WCCode
,Sunday = @Sun
,Monday = @Mon
,Tuesday = @Tues
,Wednesday = @Wed
,Thursday = @Thu
,Friday = @Fri
,Saturday = @Sat
WHERE strWCCode = @OldWCCode
END
ELSE
BEGIN
INSERT INTO tblManWorkCentre
VALUES (
@WCCode
,@Desc
,@Inactive
)
INSERT INTO tblManWorkCapacity (
strWCCode
,Sunday
,Monday
,Tuesday
,Wednesday
,Thursday
,Friday
,Saturday
)
VALUES (
@WCCode
,@Sun
,@Mon
,@Tues
,@Wed
,@Thu
,@Fri
,@Sat
)
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[AddUpdateWCLabour] @WCCode AS NVARCHAR(40)
,@LabCode AS NVARCHAR(40)
,@VariableHourly AS MONEY
,@FixedSetup AS MONEY
,@FixedBreakdown AS MONEY
,@IsEdit AS BIT
,@OldWCCode AS NVARCHAR(40)
AS
BEGIN
IF @IsEdit = 1
BEGIN
INSERT INTO tblManWorkCentreLab (
[strWCCode]
,[strLabCode]
,[decVariableHourly]
,[decFixedSetup]
,[decFixedBreakdown]
)
VALUES (
@WCCode
,@LabCode
,@VariableHourly
,@FixedSetup
,@FixedBreakdown
)
END
ELSE
BEGIN
INSERT INTO tblManWorkCentreLab (
[strWCCode]
,[strLabCode]
,[decVariableHourly]
,[decFixedSetup]
,[decFixedBreakdown]
)
VALUES (
@WCCode
,@LabCode
,@VariableHourly
,@FixedSetup
,@FixedBreakdown
)
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[AddUpdateWCMachinery] @WCCode AS NVARCHAR(40)
,@MachCode AS NVARCHAR(40)
,@VariableHourly AS MONEY
,@FixedSetup AS MONEY
,@FixedBreakdown AS MONEY
,@IsEdit AS BIT
,@OldWCCode AS NVARCHAR(40)
AS
BEGIN
IF @IsEdit = 1
BEGIN
INSERT INTO tblManWorkCentreMach (
[strWCCode]
,[strMachCode]
,[decVariableHourly]
,[decFixedSetup]
,[decFixedBreakdown]
)
VALUES (
@WCCode
,@MachCode
,@VariableHourly
,@FixedSetup
,@FixedBreakdown
)
END
ELSE
BEGIN
INSERT INTO tblManWorkCentreMach (
[strWCCode]
,[strMachCode]
,[decVariableHourly]
,[decFixedSetup]
,[decFixedBreakdown]
)
VALUES (
@WCCode
,@MachCode
,@VariableHourly
,@FixedSetup
,@FixedBreakdown
)
END
END
GO

----------------------------------------------------
CREATE PROCEDURE DeleteWorkCentre @WorkCentreCode AS NVARCHAR(40)
AS
BEGIN
DELETE
FROM tblManWorkCentre
WHERE strWCCode = @WorkCentreCode
DELETE
FROM tblManWorkCapacity
WHERE strWCCode = @WorkCentreCode
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManufactureMachineryList] @ShowInactive AS BIT
AS
BEGIN
SET NOCOUNT ON;
SELECT strMachCode AS MachCode
,strDesc AS MachDesc
,decVariableHourly AS VariableHourly
,decFixedSetup AS FixedSetup
,decFixedBreakdown AS FixedBreakdown
,bitInactive AS Inactive
,ISNULL(intGLNumber, 0) AS GLNumber
,ISNULL(intDept, 0) AS Dept
,uidCenterID AS CenterID
FROM tblManMachinery
WHERE (
bitInactive = 0
OR bitInactive = @ShowInactive
)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetMachineryByCode] @MachCode AS NVARCHAR(40)
AS
BEGIN
SELECT tblManMachinery.strMachCode AS MAchCode
,tblManMachinery.strDesc AS MachDesc
,tblManMachinery.decVariableHourly AS VariableHourly
,tblManMachinery.decFixedSetup AS FixedSetup
,tblManMachinery.decFixedBreakdown AS FixedBreakdown
,tblManMachinery.bitInactive AS Inactive
,tblManMachinery.intGLNumber AS GLNumber
,ISNULL((
SELECT tblAccounts.strDesc
FROM tblAccounts
WHERE tblAccounts.intGLNumber = tblManMachinery.intGLNumber
), '') AS GLNumberDesc
,tblManMachinery.intDept AS Dept
,tblManMachinery.uidCenterID AS CenterID
,tblCenters.strLvl1 As Lvl1
,tblCenters.strLvl2 As Lvl2
,tblCenters.strLvl3 As Lvl3
,tblCenters.strLvl4 As Lvl4
,tblCenters.strLvl5 As Lvl5
FROM tblManMachinery
LEFT JOIN tblCenters ON tblManMachinery.uidCenterID = tblCenters.uidCenterID
WHERE tblManMachinery.strMachCode = @MachCode
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[AddUpdateMachinery] @MachCode AS NVARCHAR(40)
,@MachDesc AS NVARCHAR(200)
,@VariableHourly AS DECIMAL(19,4)
,@FixedSetup AS DECIMAL(19,4)
,@FixedBreakdown AS DECIMAL(19,4)
,@Inactive AS BIT
,@GLNumber AS NVARCHAR(60)
,@Dept AS INT
,@CenterID AS UNIQUEIDENTIFIER
,@IsEdit AS BIT
,@OldMachCode AS NVARCHAR(40)
AS
BEGIN
IF (@IsEdit = 1)
BEGIN
UPDATE tblManMachinery
SET strMachCode = @MachCode
,strDesc = @MachDesc
,decVariableHourly = @VariableHourly
,decFixedSetup = @FixedSetup
,decFixedBreakdown = @FixedBreakdown
,bitInactive = @Inactive
,intGLNumber = @GLNumber
,intDept = @Dept
,uidCenterID = @CenterID
WHERE strMachCode = @OldMachCode
END
ELSE
BEGIN
INSERT INTO tblManMachinery
VALUES (
@MachCode
,@MachDesc
,@VariableHourly
,@FixedSetup
,@FixedBreakdown
,@Inactive
,@GLNumber
,@Dept
,@CenterID
)
END
END
GO

----------------------------------------------------
CREATE PROCEDURE DeleteMachinery @MachCode AS NVARCHAR(40)
AS
BEGIN
DELETE
FROM tblManMachinery
WHERE strMachCode = @MachCode
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManufactureBOMID](  
@SQstrPartNumber VARCHAR(100),  
@SQstrLocation VARCHAR(20),  
@SQdteRevDate DateTime
)  
AS    
BEGIN   
SELECT cast(lngManBOMID as varchar(20))
FROM tblManBOM   
WHERE strPartNumber = @SQstrPartNumber AND strLocation = @SQstrLocation   
AND dteRevDate = @SQdteRevDate  
ORDER BY lngManBOMID DESC  
END 
go

----------------------------------------------------
create PROCEDURE [dbo].[GetUserData] (    
@lngManBOMID bigint
)
as
begin
SELECT dteSystemDate, strUserName FROM tblManBOM WHERE lngManBOMID = @lngManBOMID
end
go
-------------------------------------------------------------------------------------------------
-------------------------------------Get Location Name-------------------------------------------
CREATE  PROCEDURE [dbo].[GetLocationName] ( 
@SQUserName varchar(40),
@SQPartNumber varchar(100)
)
as
begin
SELECT tblInvExt.strLocName--, tblInvExt.bitDefault 
FROM tblInvExt 
INNER JOIN tblInvLoc ON tblInvExt.strLocName = tblInvLoc.strLocName 
LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName 
AND tblInvLocSec.strUserName = @SQUserName WHERE (tblInvLoc.intType = 0) 
AND (tblInvExt.bitInactive = 0) 
AND (tblInvExt.strPartNumber = @SQPartNumber) 
ORDER BY tblInvExt.strLocName
end
go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBOMWorkCenterData](  
@SQManBOMID int  
)  
AS  
BEGIN  
SELECT   
tblManBOMOp.strWCCode as WorkCentreCode,   
tblManWorkCentre.strDesc as Description,   
tblManBOMOp.strNotes  as Notes 
FROM tblManBOMOp   
INNER JOIN tblManWorkCentre ON tblManBOMOp.strWCCode = tblManWorkCentre.strWCCode   
WHERE tblManBOMOp.lngManBOMID = @SQManBOMID   
ORDER BY tblManBOMOp.lngID  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBOMLabours](  
@SQManBOMID int  
)  
AS  
BEGIN  
SELECT   
tblManBOMCompLab.strWCCode as WCCode,   
tblManBOMCompLab.strLabCode as LabourCode,   
tblManLabour.strDesc as Description,   
tblManBOMCompLab.decVariableHours as VariableHourly,   
tblManBOMCompLab.decVariableRate as VariableRate,   
tblManBOMCompLab.decSetupHours as SetupHours,   
tblManBOMCompLab.decSetupRate as SetupRate,   
tblManBOMCompLab.decBreakdownHours as BreakdownHours,   
tblManBOMCompLab.decBreakdownRate as BreakdownRate   
FROM tblManBOMCompLab   
INNER JOIN tblManLabour ON tblManBOMCompLab.strLabCode = tblManLabour.strLabCode   
WHERE tblManBOMCompLab.lngManBOMID = @SQManBOMID   
ORDER BY tblManBOMCompLab.intLineNo  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBOMRecoveryCostData] (    
@SQManBOMID int  
)  
AS  
BEGIN  
SELECT   
tblManBOMCompOverhead.strWCCode as WCCode,   
tblManBOMCompOverhead.intGLNumber as GLNumber,   
tblAccounts.strDesc as [Description],
ISNULL(tblManBOMCompOverhead.intDept,0) as DeparmentID,   
tblManBOMCompOverhead.uidCenterID as CenterID,   
tblManBOMCompOverhead.decAmount as Balance,   
tblCenters.strLvl1 as CenterLv1,   
tblCenters.strLvl2 as CenterLv2,   
tblCenters.strLvl3 as CenterLv3,   
tblCenters.strLvl4 as CenterLv4,   
tblCenters.strLvl5 as CenterLv5,   
tblManBOMCompOverhead.intDept as DeptID
FROM tblManBOMCompOverhead   
INNER JOIN tblAccounts ON tblManBOMCompOverhead.intGLNumber = tblAccounts.intGLNumber   
LEFT JOIN tblCenters ON tblManBOMCompOverhead.uidCenterID = tblCenters.uidCenterID   
WHERE tblManBOMCompOverhead.lngManBOMID = @SQManBOMID   
ORDER BY tblManBOMCompOverhead.intLineNo  
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBOMMachineryData] (    
@SQManBOMID int  
)  
AS  
BEGIN  
SELECT   
tblManBOMCompMach.strWCCode as WCCode,   
tblManBOMCompMach.strMachCode as MachCode,   
tblManMachinery.strDesc as MachDesc,   
tblManBOMCompMach.decVariableHours as VariableHourly,   
tblManBOMCompMach.decVariableRate as VariableRate,   
tblManBOMCompMach.decSetupHours as SetupHours,   
tblManBOMCompMach.decSetupRate as SetupRate,   
tblManBOMCompMach.decBreakdownHours as BreakdownHours,   
tblManBOMCompMach.decBreakdownRate as BreakdownRate  
FROM tblManBOMCompMach   
INNER JOIN tblManMachinery ON tblManBOMCompMach.strMachCode = tblManMachinery.strMachCode   
WHERE tblManBOMCompMach.lngManBOMID = @SQManBOMID   
ORDER BY tblManBOMCompMach.intLineNo  
END
go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBOMInventoryData] (    
@SQManBOMID int  
)  
AS  
BEGIN  
SELECT   
tblManBOMCompInv.strWCCode as WCCode,   
tblManBOMCompInv.strPartNumber as PartNumber,   
tblManBOMCompInv.strDesc as Description,   
tblManBOMCompInv.strLocation as Location,   
tblManBOMCompInv.decQty as BOMQty,   --cast in int is changed
tblInv.strStockUnit   as StockUnit 
FROM tblManBOMCompInv   
INNER JOIN tblInv ON tblManBOMCompInv.strPartNumber = tblInv.strPartNumber   
WHERE tblManBOMCompInv.lngManBOMID = @SQManBOMID   
ORDER BY tblManBOMCompInv.intLineNo  
END
GO

----------------------------------------------------
Create PROCEDURE [dbo].[GetBOMItems](  
@SQManBOMID int  
)  
AS  
BEGIN  
SELECT   
tblManBOM.lngManBOMID as ManBOMID,
tblManBOM.strPartNumber as PartNumber,   
tblManBOM.strDesc  as [Desc]  ,
tblManBOM.strLocation as Location,   
tblManBOM.dteRevDate as RevDate,
tblInv.strStockUnit as Unit,   
tblManBOM.decQty as Qty,   
tblManBOM.bitInactive as Inactive, 
tblManBOM.bitPrintInv as PrintInv,   
tblManBOM.bitPrintSO as PrintSO,   
tblManBOM.bitPrintDN as PrintDN   
FROM tblManBOM   
INNER JOIN tblInv ON tblManBOM.strPartNumber = tblInv.strPartNumber   
WHERE tblManBOM.lngManBOMID = @SQManBOMID  
END 
GO

----------------------------------------------------
create procedure [dbo].[GetBOMAllData]
as
begin
select 
lngManBOMID	 as ManBOMID,
strPartNumber as PartNumber,
strDesc	 as [Desc],
strLocation	 as Location,
dteRevDate as RevDate,	
decQty	 as Qty,
bitInactive	 as  Inactive,
dteSystemDate	 as SystemDate,
strUserName	 as UserName,
bitRevision as Revision,	
bitPrintInv as PrintInv,	
bitPrintSO as PrintSO,	
bitPrintDN as PrintDN,	
strFileName as FileName
from tblManBOM
end
go

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertBOMInventoryData] (  
@SQlngManBOMID bigint,  
@SQstrWCCode varchar(50),  
@SQintLineNo int = 0,  
@SQstrPartNumber varchar(50),  
@SQstrLocation varchar(50),  
@SQdecQty money,  
@SQstrDesc varchar(50)  
)  
AS  
BEGIN  
INSERT INTO tblManBOMCompInv 
VALUES (@SQlngManBOMID,@SQstrWCCode,@SQintLineNo,@SQstrPartNumber,@SQstrLocation,@SQdecQty,@SQstrDesc)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertBOMItem] (
	@SQlngManBOMID BIGINT
	,@SQstrPartNumber VARCHAR(100)
	,@SQstrDesc VARCHAR(1000)
	,@SQstrLocation NVARCHAR(20)
	,@SQdteRevDate SMALLDATETIME = NULL
	,@SQdecQty money = NULL
	,@SQbitInactive BIT = 0
	,@SQdteSystemDate DATETIME
	,@SQstrUserName VARCHAR(40)
	,@SQbitRevision BIT = 0
	,@SQbitPrintInv BIT = 0
	,@SQbitPrintSO BIT = 0
	,@SQbitPrintDN BIT = 0
	,@SQstrFileName VARCHAR(500) = NULL
	)
AS
BEGIN
	INSERT INTO [dbo].[tblManBOM]
           ([lngManBOMID]
           ,[strPartNumber]
           ,[strDesc]
           ,[strLocation]
           ,[dteRevDate]
           ,[decQty]
           ,[bitInactive]
           ,[dteSystemDate]
           ,[strUserName]
           ,[bitRevision]
           ,[bitPrintInv]
           ,[bitPrintSO]
           ,[bitPrintDN]
           ,[strFileName])
	VALUES (
		@SQlngManBOMID
		,@SQstrPartNumber
		,@SQstrDesc
		,@SQstrLocation
		,@SQdteRevDate
		,@SQdecQty
		,@SQbitInactive
		,@SQdteSystemDate
		,@SQstrUserName
		,@SQbitRevision
		,@SQbitPrintInv
		,@SQbitPrintSO
		,@SQbitPrintDN
		,@SQstrFileName
		)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertBOMWorkCentreData] (  
@SQlngManBOMID bigint,
@SQstrWCCode varchar(50),
@SQstrNotes varchar(50)
)  
AS  
BEGIN  
INSERT INTO tblManBOMOp (lngManBOMID, strWCCode, strNotes) 
VALUES (@SQlngManBOMID,@SQstrWCCode,@SQstrNotes)
END  
go

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertLabourData] (  
@SQlngManBOMID bigint,
@SQstrWCCode VARCHAR(50) = NULL,
@SQintLineNo int,
@SQstrLabCode VARCHAR(50) = NULL,
@SQdecVariableHours VARCHAR(50) = NULL,
@SQdecVariableRate VARCHAR(50) = NULL,
@SQdecSetupHours VARCHAR(50) = NULL,
@SQdecSetupRate VARCHAR(50) = NULL,
@SQdecBreakdownHours VARCHAR(50) = NULL,
@SQdecBreakdownRate VARCHAR(50) = NULL
)  
AS  
BEGIN  
INSERT INTO tblManBOMCompLab 
VALUES (@SQlngManBOMID,@SQstrWCCode,@SQintLineNo,@SQstrLabCode,@SQdecVariableHours,@SQdecVariableRate,@SQdecSetupHours,@SQdecSetupRate,@SQdecBreakdownHours,@SQdecBreakdownRate)
END  
go

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertMachineryData] (  
@SQlngManBOMID bigint,
@SQstrWCCode VARCHAR(50) = NULL,
@SQintLineNo int,
@SQstrMachCode VARCHAR(50) = NULL,
@SQdecVariableHours VARCHAR(50) = NULL,
@SQdecVariableRate VARCHAR(50) = NULL,
@SQdecSetupHours VARCHAR(50) = NULL,
@SQdecSetupRate VARCHAR(50) = NULL,
@SQdecBreakdownHours VARCHAR(50) = NULL,
@SQdecBreakdownRate VARCHAR(50) = NULL
)  
AS  
BEGIN  
INSERT INTO tblManBOMCompMach 
VALUES (@SQlngManBOMID,@SQstrWCCode,@SQintLineNo,@SQstrMachCode,@SQdecVariableHours,@SQdecVariableRate,@SQdecSetupHours,@SQdecSetupRate,@SQdecBreakdownHours,@SQdecBreakdownRate)
END  
go

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertRecoveryCostData] (  
@SQlngManBOMID bigint,
@SQstrWCCode VARCHAR(40) = NULL,
@SQintLineNo int = 0, 
@SQintGLNumber VARCHAR(60) = NULL,
@SQintDept int,
@SQuidCenterID VARCHAR(50) = NULL,
@SQdecAmount money
)  
AS  
BEGIN  
INSERT INTO tblManBOMCompOverhead (lngManBOMID,strWCCode,intLineNo,intGLNumber,intDept,uidCenterID,decAmount)
                        VALUES (@SQlngManBOMID,@SQstrWCCode,@SQintLineNo,@SQintGLNumber,@SQintDept,@SQuidCenterID,@SQdecAmount)
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateBOMItemStatus] (    
@SQlngManBOMID bigint,  
@SQstrPartNumber VARCHAR(50),  
@SQstrLocation VARCHAR(50) 
)    
AS    
BEGIN    
UPDATE tblManBOM 
Set bitInactive = 1, bitRevision = 1 
WHERE strPartNumber = @SQstrPartNumber And strLocation = @SQstrLocation And 
lngManBOMID <> @SQlngManBOMID And bitInactive = 0 And bitRevision = 0
END
go

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteBOMItem] (    
@SQPartNumber VARCHAR(50),  
@SQLocation VARCHAR(50)  
)    
AS    
BEGIN    
DELETE FROM tblManBOM WHERE strPartNumber = @SQPartNumber And strLocation = @SQLocation
END
go

----------------------------------------------------
CREATE PROCEDURE SPManBOMReport @SQManBOMID AS BIGINT = NULL
AS
BEGIN
SELECT tblManBOM.lngManBOMID
,tblManBOM.strPartNumber
,tblManBOM.strDesc
,tblManBOM.strLocation
,tblManBOM.dteRevDate
,tblManBOM.decQty
,tblManBOM.bitInactive
,tblInv.strStockUnit AS strUnit
,tblInv.decStandardCost
FROM tblManBOM
INNER JOIN tblInv ON tblManBOM.strPartNumber = tblInv.strPartNumber
WHERE tblManBOM.lngManBOMID = @SQManBOMID
END
GO

----------------------------------------------------
CREATE PROCEDURE SPManBOMOpReport @SQManBOMID AS BIGINT = NULL
AS
BEGIN
SELECT tblManBOMOp.lngManBOMID
,tblManBOMOp.strWCCode
,tblManWorkCentre.strDesc
,tblManBOMOp.strNotes
,tblManBOMOp.lngID
FROM tblManBOMOp
INNER JOIN tblManWorkCentre ON tblManBOMOp.strWCCode = tblManWorkCentre.strWCCode
WHERE tblManBOMOp.lngManBOMID = @SQManBOMID
ORDER BY tblManBOMOp.lngID
END
GO

----------------------------------------------------
CREATE PROCEDURE SPManBOMCompInvReport @SQManBOMID AS BIGINT = NULL
AS
BEGIN
SELECT tblManBOMCompInv.lngManBOMID
,tblManBOMCompInv.strWCCode
,tblManBOMCompInv.intLineNo
,tblManBOMCompInv.strPartNumber
,tblManBOMCompInv.strDesc
,tblManBOMCompInv.strLocation
,tblManBOMCompInv.decQty
,tblInv.strStockUnit AS strUnit
,ISNULL((
SELECT CASE 
WHEN tblInvExt.decOnHand = 0
THEN ROUND((tblInv.decLastPPUnit / tblInv.decBuyToStock), 2)
ELSE ROUND((tblInvExt.decValue / tblInvExt.decOnHand), 2)
END
FROM tblInv
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
AND tblInvExt.strLocName = tblManBOMCompInv.strLocation
WHERE tblInv.strPartNumber = tblManBOMCompInv.strPartNumber
AND tblInv.intType = 1
), 0) AS decPPUnit
FROM tblManBOMCompInv
INNER JOIN tblInv ON tblManBOMCompInv.strPartNumber = tblInv.strPartNumber
WHERE tblManBOMCompInv.lngManBOMID = @SQManBOMID
ORDER BY tblManBOMCompInv.strWCCode
,tblManBOMCompInv.intLineNo
END
GO

----------------------------------------------------
CREATE PROCEDURE SPManBOMCompLabReport @SQManBOMID AS BIGINT = NULL
AS
BEGIN
SELECT tblManBOMCompLab.lngManBOMID
,tblManBOMCompLab.strWCCode
,tblManBOMCompLab.intLineNo
,tblManBOMCompLab.strLabCode
,tblManLabour.strDesc
,tblManBOMCompLab.decVariableHours
,tblManBOMCompLab.decVariableRate
,tblManBOMCompLab.decSetupHours
,tblManBOMCompLab.decSetupRate
,tblManBOMCompLab.decBreakdownHours
,tblManBOMCompLab.decBreakdownRate
FROM tblManBOMCompLab
INNER JOIN tblManLabour ON tblManBOMCompLab.strLabCode = tblManLabour.strLabCode
WHERE tblManBOMCompLab.lngManBOMID = @SQManBOMID
ORDER BY tblManBOMCompLab.strLabCode
END
GO

----------------------------------------------------
CREATE PROCEDURE SPManBOMCompMachReport @SQManBOMID AS BIGINT = NULL
AS
BEGIN
SELECT tblManBOMCompMach.lngManBOMID
,tblManBOMCompMach.strWCCode
,tblManBOMCompMach.intLineNo
,tblManBOMCompMach.strMachCode
,tblManMachinery.strDesc
,tblManBOMCompMach.decVariableHours
,tblManBOMCompMach.decVariableRate
,tblManBOMCompMach.decSetupHours
,tblManBOMCompMach.decSetupRate
,tblManBOMCompMach.decBreakdownHours
,tblManBOMCompMach.decBreakdownRate
FROM tblManBOMCompMach
INNER JOIN tblManMachinery ON tblManBOMCompMach.strMachCode = tblManMachinery.strMachCode
WHERE tblManBOMCompMach.lngManBOMID = @SQManBOMID
ORDER BY tblManBOMCompMach.strMachCode
END
GO

----------------------------------------------------
CREATE PROCEDURE SPManBOMCompOverheadReport @SQManBOMID AS BIGINT = NULL
AS
BEGIN
SELECT tblManBOMCompOverhead.lngManBOMID
,tblManBOMCompOverhead.strWCCode
,tblManBOMCompOverhead.intLineNo
,tblManBOMCompOverhead.intGLNumber
,tblAccounts.strDesc AS strAccDesc
,ISNULL(tblManBOMCompOverhead.intDept, 0) AS intDept
,ISNULL(tblDepartments.strDesc, '') AS strDeptDesc
,tblManBOMCompOverhead.uidCenterID
,CASE 
WHEN ISNULL(tblCenters.strLvl1, '') <> ''
THEN tblCenters.strLvl1 + CASE 
WHEN ISNULL(tblCenters.strLvl2, '') = ''
THEN ''
ELSE '\' + ISNULL(tblCenters.strLvl2, '') + CASE 
WHEN ISNULL(tblCenters.strLvl3, '') = ''
THEN ''
ELSE '\' + ISNULL(tblCenters.strLvl3, '') + CASE 
WHEN ISNULL(tblCenters.strLvl4, '') = ''
THEN ''
ELSE '\' + ISNULL(tblCenters.strLvl4, '') + CASE 
WHEN ISNULL(tblCenters.strLvl5, '') = ''
THEN ''
ELSE '\' + ISNULL(tblCenters.strLvl4, '')
END
END
END
END
ELSE ''
END strCenter
,tblManBOMCompOverhead.decAmount
FROM tblManBOMCompOverhead
INNER JOIN tblAccounts ON tblManBOMCompOverhead.intGLNumber = tblAccounts.intGLNumber
LEFT JOIN tblDepartments ON tblManBOMCompOverhead.intDept = tblDepartments.intDept
LEFT JOIN tblCenters ON tblManBOMCompOverhead.uidCenterID = tblCenters.uidCenterID
WHERE tblManBOMCompOverhead.lngManBOMID = @SQManBOMID
ORDER BY tblManBOMCompOverhead.intGLNumber
END
GO

----------------------------------------------------

CREATE PROCEDURE GetInvManAllDetails @bitUseDataSet AS BIT
,@strPartNumber AS NVARCHAR(100)
,@strDocID AS NVARCHAR(100)
,@intTypePartClosed AS INT
,@intTypeWIP AS INT
,@intTypeOpen AS INT
,@intTypeWIPReturn AS INT
,@intAllocationSource AS INT
AS
BEGIN
IF @bitUseDataSet = 1
BEGIN
SELECT Z.strPartNumber
,Z.strLocation
,SUM(Z.decQty)
FROM (
SELECT tblManJobCompInv.strPartNumber
,tblManJobCompInv.strLocation
,SUM(tblManJobCompInv.decManQty) AS decQty
FROM tblManJob
INNER JOIN tblManJobCompInv ON tblManJob.strJBDocID = tblManJobCompInv.strJBDocID
WHERE tblManJobCompInv.strPartNumber = @strPartNumber
AND (
tblManJob.intType = @intTypePartClosed
OR tblManJob.intType = @intTypeWIP
OR tblManJob.intType = @intTypeOpen
)
AND (
tblManJobCompInv.strPartNumber IN (
SELECT strPartNumber FROM tblInv WHERE intType = 1 AND bitOtherCmp = 0
)
)
GROUP BY tblManJobCompInv.strPartNumber
,tblManJobCompInv.strLocation
UNION ALL
SELECT tblProductionScheduleDT.strPartNumber
,tblProductionScheduleDT.strLocName AS strLocation
,SUM(tblProductionScheduleDT.decReqQty) AS decQty
FROM tblProductionScheduleDT
INNER JOIN tblProductionSchedule ON tblProductionScheduleDT.strProdNumber = tblProductionSchedule.strProdnumber
WHERE tblProductionScheduleDT.strPartNumber = @strPartNumber
AND (tblProductionSchedule.bitCleared = 0)
AND (tblProductionSchedule.blnCompleted = 0)
GROUP BY tblProductionScheduleDT.strPartNumber
,tblProductionScheduleDT.strLocName
) Z
GROUP BY Z.strPartNumber,Z.strLocation
END
ELSE
BEGIN
CREATE TABLE #tempAllocationtbl (strPartNumber NVARCHAR(100))
IF @intAllocationSource = 1
BEGIN
INSERT INTO #tempAllocationtbl
SELECT strPartNumber
FROM tblProductionScheduleDT
WHERE strProdNumber = @strDocID
END
IF @intAllocationSource = 3
BEGIN
INSERT INTO #tempAllocationtbl
SELECT strPartNumber
FROM tblManJobCompInv
WHERE strJBDocID = @strDocID
END
IF @intAllocationSource = 4
BEGIN
INSERT INTO #tempAllocationtbl
SELECT strPartNumber
FROM tblManWIPCompInv
WHERE strWIPDocID = @strDocID
END
SELECT Z.strPartNumber
,Z.strLocation
,SUM(Z.decQty)
FROM (
SELECT tblProductionScheduleDT.strPartNumber
,tblProductionScheduleDT.strLocName AS strLocation
,SUM(tblProductionScheduleDT.decReqQty) AS decQty
FROM tblProductionScheduleDT
INNER JOIN tblProductionSchedule ON tblProductionScheduleDT.strProdNumber = tblProductionSchedule.strProdnumber
WHERE (
tblProductionScheduleDT.strPartNumber IN (
SELECT strPartNumber
FROM #tempAllocationtbl
)
)
AND (tblProductionSchedule.bitCleared = 0)
AND (tblProductionSchedule.blnCompleted = 0)
GROUP BY tblProductionScheduleDT.strPartNumber
,tblProductionScheduleDT.strLocName
UNION ALL
SELECT tblManJobCompInv.strPartNumber
,tblManJobCompInv.strLocation
,SUM(tblManJobCompInv.decManQty) AS decQty
FROM tblManJobCompInv
INNER JOIN tblManJob ON tblManJobCompInv.strJBDocID = tblManJob.strJBDocID
WHERE (
tblManJobCompInv.strPartNumber IN (
SELECT strPartNumber
FROM #tempAllocationtbl
)
)
AND (
tblManJob.intType = @intTypePartClosed
OR tblManJob.intType = @intTypeWIP
OR tblManJob.intType = @intTypeOpen
)
GROUP BY tblManJobCompInv.strPartNumber
,tblManJobCompInv.strLocation
UNION ALL
SELECT tblManWIPCompInv.strPartNumber
,tblManWIPCompInv.strLocation
,CASE 
WHEN SUM(CASE 
WHEN tblManWIPCompInv.intType = @intTypeWIPReturn
THEN tblManWIPCompInv.decReturnQty
ELSE tblManWIPCompInv.decPostQty * - 1
END) > ISNULL(tblManJobCompInv.decManQty, 0) * - 1
OR SUM(CASE 
WHEN tblManWIPCompInv.intType = @intTypeWIPReturn
THEN tblManWIPCompInv.decReturnQty
ELSE tblManWIPCompInv.decPostQty * - 1
END) < 0
THEN ISNULL(tblManJobCompInv.decManQty, 0) * - 1
ELSE SUM(CASE 
WHEN tblManWIPCompInv.intType = @intTypeWIPReturn
THEN tblManWIPCompInv.decReturnQty
ELSE tblManWIPCompInv.decPostQty * - 1
END)
END AS decQty
FROM tblManWIPCompInv
INNER JOIN tblManWIP ON tblManWIPCompInv.strWIPDocID = tblManWIP.strWIPDocID
LEFT JOIN tblManJobCompInv ON tblManWIP.strJBDocID = tblManJobCompInv.strJBDocID
AND tblManWIPCompInv.strPartNumber = tblManJobCompInv.strPartNumber
AND tblManWIPCompInv.intLineNo = tblManJobCompInv.intLineNo
WHERE (
tblManWIPCompInv.strPartNumber IN (
SELECT strPartNumber
FROM #tempAllocationtbl
)
)
AND (
tblManWIP.intType = @intTypePartClosed
OR tblManWIP.intType = @intTypeWIP
OR tblManWIP.intType = @intTypeOpen
)
GROUP BY tblManWIPCompInv.strPartNumber
,tblManWIPCompInv.strLocation
,tblManJobCompInv.decManQty
) Z
GROUP BY Z.strPartNumber
,Z.strLocation
Drop table #tempAllocationtbl
END
END
GO

----------------------------------------------------

CREATE PROCEDURE SetAllocationInvExtManuf
@Manuf AS DECIMAL
,@PartNumber AS NVARCHAR(100)
,@Location AS NVARCHAR(20)
AS
BEGIN
UPDATE tblInvExt
SET decManuf = @Manuf
WHERE strPartNumber = @PartNumber
AND strLocName = @Location
END
GO

----------------------------------------------------

CREATE PROCEDURE SetAllocationInvExtAvail
@bitUseDataSet AS BIT
,@strPartNumber AS NVARCHAR(max)
,@strDocID AS NVARCHAR(max)
,@intAllocationSource AS INT
AS
BEGIN
IF @bitUseDataSet = 1
BEGIN
UPDATE tblInvExt
SET decAvail = (decOnHand - decAlloc) - decManuf
WHERE strPartNumber IN (
SELECT strPartNumber
FROM tblManJobCompInv
WHERE tblManJobCompInv.strPartNumber = @strPartNumber
UNION ALL
SELECT strPartNumber
FROM tblProductionScheduleDT
WHERE tblProductionScheduleDT.strPartNumber = @strPartNumber
)
END
ELSE
BEGIN
IF @intAllocationSource = 1
BEGIN
UPDATE tblInvExt
SET decAvail = (decOnHand - decAlloc) - decManuf
WHERE strPartNumber IN (
SELECT strPartNumber
FROM tblProductionScheduleDT
WHERE strProdNumber = @strDocID
)
END
IF @intAllocationSource = 3
BEGIN
UPDATE tblInvExt
SET decAvail = (decOnHand - decAlloc) - decManuf
WHERE strPartNumber IN (
SELECT strPartNumber
FROM tblManJobCompInv
WHERE strJBDocID = @strDocID
)
END
IF @intAllocationSource = 4
BEGIN
UPDATE tblInvExt
SET decAvail = (decOnHand - decAlloc) - decManuf
WHERE strPartNumber IN (
SELECT strPartNumber
FROM tblManWIPCompInv
WHERE strWIPDocID = @strDocID
)
END
END
END
GO

------------------------------------------------------
CREATE PROCEDURE GetInvManDetails
@bitUseDataSet AS BIT
,@strPartNumber AS NVARCHAR(100)
,@strDocID AS NVARCHAR(100)
,@intTypePartClosed AS INT
,@intTypeWIP AS INT
,@intTypeOpen AS INT
,@intTypeWIPReturn AS INT
,@intAllocationSource AS INT
AS
BEGIN
IF @bitUseDataSet = 1
BEGIN
SELECT z.strPartNumber
,SUM(z.decQty)
FROM (
SELECT tblManJobCompInv.strPartNumber
,SUM(tblManJobCompInv.decManQty) AS decQty
FROM tblManJob
INNER JOIN tblManJobCompInv ON tblManJob.strJBDocID = tblManJobCompInv.strJBDocID
WHERE tblManJobCompInv.strPartNumber = @strPartNumber
AND (
tblManJob.intType = @intTypePartClosed
OR tblManJob.intType = @intTypeWIP
OR tblManJob.intType = @intTypeOpen
)
AND (
tblManJobCompInv.strPartNumber IN (
SELECT strPartNumber
FROM tblInv
WHERE intType = 1
AND bitOtherCmp = 0
)
)
GROUP BY tblManJobCompInv.strPartNumber
UNION ALL
SELECT tblProductionScheduleDT.strPartNumber
,SUM(tblProductionScheduleDT.decReqQty) AS decQty
FROM tblProductionScheduleDT
INNER JOIN tblProductionSchedule ON tblProductionScheduleDT.strProdNumber = tblProductionSchedule.strProdnumber
WHERE tblProductionScheduleDT.strPartNumber = @strPartNumber
AND (tblProductionSchedule.bitCleared = 0)
AND (tblProductionSchedule.blnCompleted = 0)
GROUP BY tblProductionScheduleDT.strPartNumber
) Z
GROUP BY Z.strPartNumber
END
ELSE
BEGIN
CREATE TABLE #tempAllocationtbl (strPartNumber NVARCHAR(100))
IF @intAllocationSource = 1
BEGIN
INSERT INTO #tempAllocationtbl
SELECT strPartNumber
FROM tblProductionScheduleDT
WHERE strProdNumber = @strDocID
END
IF @intAllocationSource = 3
BEGIN
INSERT INTO #tempAllocationtbl
SELECT strPartNumber
FROM tblManJobCompInv
WHERE strJBDocID = @strDocID
END
IF @intAllocationSource = 4
BEGIN
INSERT INTO #tempAllocationtbl
SELECT strPartNumber
FROM tblManWIPCompInv
WHERE strWIPDocID = @strDocID
END
SELECT Z.strPartNumber
,SUM(Z.decQty)
FROM (
SELECT tblProductionScheduleDT.strPartNumber
,SUM(tblProductionScheduleDT.decReqQty) AS decQty
FROM tblProductionSchedule
INNER JOIN tblProductionScheduleDT ON tblProductionSchedule.strProdNumber = tblProductionScheduleDT.strProdNumber
WHERE (
tblProductionScheduleDT.strPartNumber IN (
SELECT strPartNumber
FROM #tempAllocationtbl
)
)
AND (tblProductionSchedule.bitCleared = 0)
AND (tblProductionSchedule.blnCompleted = 0)
GROUP BY tblProductionScheduleDT.strPartNumber
UNION ALL
SELECT tblManJobCompInv.strPartNumber
,SUM(tblManJobCompInv.decManQty) AS decQty
FROM tblManJobCompInv
INNER JOIN tblManJob ON tblManJobCompInv.strJBDocID = tblManJob.strJBDocID
WHERE (
tblManJobCompInv.strPartNumber IN (
SELECT strPartNumber
FROM #tempAllocationtbl
)
)
AND (
tblManJob.intType = @intTypePartClosed
OR tblManJob.intType = @intTypeWIP
OR tblManJob.intType = @intTypeOpen
)
GROUP BY tblManJobCompInv.strPartNumber
UNION ALL
SELECT tblManWIPCompInv.strPartNumber
,CASE 
WHEN SUM(CASE 
WHEN tblManWIPCompInv.intType = @intTypeWIPReturn
THEN tblManWIPCompInv.decReturnQty
ELSE tblManWIPCompInv.decPostQty * - 1
END) > ISNULL(tblManJobCompInv.decManQty, 0) * - 1
OR SUM(CASE 
WHEN tblManWIPCompInv.intType = @intTypeWIPReturn
THEN tblManWIPCompInv.decReturnQty
ELSE tblManWIPCompInv.decPostQty * - 1
END) < 0
THEN ISNULL(tblManJobCompInv.decManQty, 0) * - 1
ELSE SUM(CASE 
WHEN tblManWIPCompInv.intType = @intTypeWIPReturn
THEN tblManWIPCompInv.decReturnQty
ELSE tblManWIPCompInv.decPostQty * - 1
END)
END AS decQty
FROM tblManWIPCompInv
INNER JOIN tblManWIP ON tblManWIPCompInv.strWIPDocID = tblManWIP.strWIPDocID
LEFT JOIN tblManJobCompInv ON tblManWIP.strJBDocID = tblManJobCompInv.strJBDocID
AND tblManWIPCompInv.strPartNumber = tblManJobCompInv.strPartNumber
AND tblManWIPCompInv.intLineNo = tblManJobCompInv.intLineNo
WHERE (
tblManWIPCompInv.strPartNumber IN (
SELECT strPartNumber
FROM #tempAllocationtbl
)
)
AND (
tblManWIP.intType = @intTypePartClosed
OR tblManWIP.intType = @intTypeWIP
OR tblManWIP.intType = @intTypeOpen
)
GROUP BY tblManWIPCompInv.strPartNumber
,tblManJobCompInv.decManQty
) Z
GROUP BY Z.strPartNumber
END
DROP TABLE #tempAllocationtbl
END
GO

----------------------------------------------------
CREATE PROCEDURE SetAllocationInvSumManuf 
@SumManuf AS DECIMAL
,@PartNumber AS NVARCHAR(100)
AS
BEGIN
UPDATE tblInv SET decSumManuf = @SumManuf, dteLastUpdated = GetDate() WHERE strPartNumber = @PartNumber
END
GO
--sp8
CREATE PROCEDURE SetAllocationInvAvail
@bitUseDataSet AS BIT
,@strPartNumber AS NVARCHAR(max)
,@strDocID AS NVARCHAR(max)
,@intAllocationSource AS INT
AS
BEGIN
IF @bitUseDataSet = 1
BEGIN
UPDATE tblInv SET decSumAvail = (decSumOnHand - decSumAlloc) - decSumManuf, dteLastUpdated = GetDate()
WHERE strPartNumber IN (
SELECT strPartNumber
FROM tblManJobCompInv
WHERE tblManJobCompInv.strPartNumber = @strPartNumber
UNION ALL
SELECT strPartNumber
FROM tblProductionScheduleDT
WHERE tblProductionScheduleDT.strPartNumber = @strPartNumber
)
END
ELSE
BEGIN
IF @intAllocationSource = 1
BEGIN
UPDATE tblInv SET decSumAvail = (decSumOnHand - decSumAlloc) - decSumManuf, dteLastUpdated = GetDate()
WHERE strPartNumber IN (
SELECT strPartNumber
FROM tblProductionScheduleDT
WHERE strProdNumber = @strDocID
)
END
IF @intAllocationSource = 3
BEGIN
UPDATE tblInv SET decSumAvail = (decSumOnHand - decSumAlloc) - decSumManuf, dteLastUpdated = GetDate()
WHERE strPartNumber IN (
SELECT strPartNumber
FROM tblManJobCompInv
WHERE strJBDocID = @strDocID
)
END
IF @intAllocationSource = 4
BEGIN
UPDATE tblInv SET decSumAvail = (decSumOnHand - decSumAlloc) - decSumManuf, dteLastUpdated = GetDate()
WHERE strPartNumber IN (
SELECT strPartNumber
FROM tblManWIPCompInv
WHERE strWIPDocID = @strDocID
)
END
END
END
GO

----------------------------------------------------
CREATE PROCEDURE UpdateManInvAndInvExt 
@bitUseDataSet AS BIT
,@PartNumber AS NVARCHAR(100)
,@Location AS NVARCHAR(20)
AS
BEGIN
IF @bitUseDataSet = 1
BEGIN
UPDATE tblInvExt SET decManuf = 0, decAvail = decOnHand - decAlloc WHERE strPartNumber = @PartNumber AND strLocName = @Location
UPDATE tblInv SET decSumManuf = 0, decSumAvail = decSumOnHand - decSumAlloc, dteLastUpdated = GetDate() WHERE strPartNumber = @PartNumber
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SyncManufactured]
      @strDocID             NVARCHAR(100)
    , @intTypePartClosed    INT
    , @intTypeWIP           INT
    , @intTypeOpen          INT
    , @intTypeWIPReturn     INT
    , @intAllocationSource  INT
    , @SQCriteria           NVARCHAR(100)
AS
BEGIN
    SET NOCOUNT ON;
    SET XACT_ABORT ON;

    CREATE TABLE #AffectedParts (
        strPartNumber NVARCHAR(100) COLLATE DATABASE_DEFAULT NOT NULL PRIMARY KEY
    );

    IF @intAllocationSource = 1
    BEGIN
        INSERT INTO #AffectedParts(strPartNumber)
        SELECT DISTINCT UPPER(LTRIM(RTRIM(dt.strPartNumber))) COLLATE DATABASE_DEFAULT
        FROM dbo.tblProductionScheduleDT dt
        WHERE dt.strProdNumber COLLATE DATABASE_DEFAULT = @strDocID COLLATE DATABASE_DEFAULT
          AND dt.strPartNumber IS NOT NULL AND dt.strPartNumber <> N'';
    END
    ELSE IF @intAllocationSource = 3
    BEGIN
        INSERT INTO #AffectedParts(strPartNumber)
        SELECT DISTINCT UPPER(LTRIM(RTRIM(ci.strPartNumber))) COLLATE DATABASE_DEFAULT
        FROM dbo.tblManJobCompInv ci
        WHERE ci.strJBDocID COLLATE DATABASE_DEFAULT = @strDocID COLLATE DATABASE_DEFAULT
          AND ci.strPartNumber IS NOT NULL AND ci.strPartNumber <> N'';

        INSERT INTO #AffectedParts(strPartNumber)
        SELECT DISTINCT UPPER(LTRIM(RTRIM(bp.strPartNumber))) COLLATE DATABASE_DEFAULT
        FROM dbo.tblManJobByProd bp
        WHERE bp.strJBDocID COLLATE DATABASE_DEFAULT = @strDocID COLLATE DATABASE_DEFAULT
          AND bp.strPartNumber IS NOT NULL AND bp.strPartNumber <> N''
          AND UPPER(LTRIM(RTRIM(bp.strPartNumber))) COLLATE DATABASE_DEFAULT NOT IN (
                SELECT strPartNumber FROM #AffectedParts
          );
    END
    ELSE IF @intAllocationSource = 4
    BEGIN
        INSERT INTO #AffectedParts(strPartNumber)
        SELECT DISTINCT UPPER(LTRIM(RTRIM(wi.strPartNumber))) COLLATE DATABASE_DEFAULT
        FROM dbo.tblManWIPCompInv wi
        WHERE wi.strWIPDocID COLLATE DATABASE_DEFAULT = @strDocID COLLATE DATABASE_DEFAULT
          AND wi.strPartNumber IS NOT NULL AND wi.strPartNumber <> N'';
    END
    ELSE
    BEGIN
        RETURN;
    END

;WITH comp_src AS (
    SELECT
          UPPER(LTRIM(RTRIM(dt.strPartNumber))) COLLATE DATABASE_DEFAULT AS Part,
          UPPER(LTRIM(RTRIM(
              CASE WHEN dt.strLocName IS NULL OR dt.strLocName = N'' THEN N'DEFAULT' ELSE dt.strLocName END
          ))) COLLATE DATABASE_DEFAULT AS Loc,
          SUM(dt.decReqQty) AS Qty
    FROM dbo.tblProductionScheduleDT dt
    INNER JOIN dbo.tblProductionSchedule hd
        ON hd.strProdNumber COLLATE DATABASE_DEFAULT = dt.strProdNumber COLLATE DATABASE_DEFAULT
    WHERE @intAllocationSource = 1
      AND dt.strProdNumber COLLATE DATABASE_DEFAULT = @strDocID COLLATE DATABASE_DEFAULT
      AND dt.strPartNumber IS NOT NULL AND dt.strPartNumber <> N''
      AND hd.bitCleared = 0 AND hd.blnCompleted = 0
      AND UPPER(LTRIM(RTRIM(dt.strPartNumber))) COLLATE DATABASE_DEFAULT IN (
            SELECT strPartNumber FROM #AffectedParts
      )
    GROUP BY
          UPPER(LTRIM(RTRIM(dt.strPartNumber))) COLLATE DATABASE_DEFAULT,
          UPPER(LTRIM(RTRIM(
              CASE WHEN dt.strLocName IS NULL OR dt.strLocName = N'' THEN N'DEFAULT' ELSE dt.strLocName END
          ))) COLLATE DATABASE_DEFAULT

    UNION ALL

    SELECT
          UPPER(LTRIM(RTRIM(ci.strPartNumber))) COLLATE DATABASE_DEFAULT AS Part,
          UPPER(LTRIM(RTRIM(
              CASE WHEN ci.strLocation IS NULL OR ci.strLocation = N'' THEN N'DEFAULT' ELSE ci.strLocation END
          ))) COLLATE DATABASE_DEFAULT AS Loc,
          SUM(ci.decManQty) AS Qty
    FROM dbo.tblManJobCompInv ci
    INNER JOIN dbo.tblManJob j
        ON j.strJBDocID COLLATE DATABASE_DEFAULT = ci.strJBDocID COLLATE DATABASE_DEFAULT
    WHERE @intAllocationSource = 3
      AND ci.strJBDocID COLLATE DATABASE_DEFAULT = @strDocID COLLATE DATABASE_DEFAULT
      AND ci.strPartNumber IS NOT NULL AND ci.strPartNumber <> N''
      AND j.intType IN (@intTypeOpen, @intTypeWIP, @intTypePartClosed)
      AND UPPER(LTRIM(RTRIM(ci.strPartNumber))) COLLATE DATABASE_DEFAULT IN (
            SELECT strPartNumber FROM #AffectedParts
      )
    GROUP BY
          UPPER(LTRIM(RTRIM(ci.strPartNumber))) COLLATE DATABASE_DEFAULT,
          UPPER(LTRIM(RTRIM(
              CASE WHEN ci.strLocation IS NULL OR ci.strLocation = N'' THEN N'DEFAULT' ELSE ci.strLocation END
          ))) COLLATE DATABASE_DEFAULT

    UNION ALL

    SELECT
          UPPER(LTRIM(RTRIM(wi.strPartNumber))) COLLATE DATABASE_DEFAULT AS Part,
          UPPER(LTRIM(RTRIM(
              CASE WHEN wi.strLocation IS NULL OR wi.strLocation = N'' THEN N'DEFAULT' ELSE wi.strLocation END
          ))) COLLATE DATABASE_DEFAULT AS Loc,
          SUM(CASE WHEN wi.intType = @intTypeWIPReturn THEN wi.decReturnQty ELSE wi.decPostQty END) AS Qty
    FROM dbo.tblManWIPCompInv wi
    INNER JOIN dbo.tblManWIP w
        ON w.strWIPDocID COLLATE DATABASE_DEFAULT = wi.strWIPDocID COLLATE DATABASE_DEFAULT
    WHERE @intAllocationSource = 4
      AND wi.strWIPDocID COLLATE DATABASE_DEFAULT = @strDocID COLLATE DATABASE_DEFAULT
      AND wi.strPartNumber IS NOT NULL AND wi.strPartNumber <> N''
      AND w.intType IN (@intTypeOpen, @intTypeWIP, @intTypePartClosed)
      AND UPPER(LTRIM(RTRIM(wi.strPartNumber))) COLLATE DATABASE_DEFAULT IN (
            SELECT strPartNumber FROM #AffectedParts
      )
    GROUP BY
          UPPER(LTRIM(RTRIM(wi.strPartNumber))) COLLATE DATABASE_DEFAULT,
          UPPER(LTRIM(RTRIM(
              CASE WHEN wi.strLocation IS NULL OR wi.strLocation = N'' THEN N'DEFAULT' ELSE wi.strLocation END
          ))) COLLATE DATABASE_DEFAULT
)
SELECT Part, Loc, SUM(CASE WHEN Qty < 0 THEN 0 ELSE Qty END) AS comp_qty
INTO #comp_agg
FROM comp_src
GROUP BY Part, Loc;

SELECT
      UPPER(LTRIM(RTRIM(bp.strPartNumber))) COLLATE DATABASE_DEFAULT AS Part,
      UPPER(LTRIM(RTRIM(
          CASE WHEN bp.strLocation IS NULL OR bp.strLocation = N'' THEN N'DEFAULT' ELSE bp.strLocation END
      ))) COLLATE DATABASE_DEFAULT AS Loc,
      SUM(bp.decManQty) AS fin_qty
INTO #fin_agg
FROM dbo.tblManJobByProd bp
INNER JOIN dbo.tblManJob j
    ON j.strJBDocID COLLATE DATABASE_DEFAULT = bp.strJBDocID COLLATE DATABASE_DEFAULT
WHERE @intAllocationSource = 3
  AND bp.strJBDocID COLLATE DATABASE_DEFAULT = @strDocID COLLATE DATABASE_DEFAULT
  AND bp.strPartNumber IS NOT NULL AND bp.strPartNumber <> N''
  AND j.intType IN (@intTypeOpen, @intTypeWIP, @intTypePartClosed)
  AND UPPER(LTRIM(RTRIM(bp.strPartNumber))) COLLATE DATABASE_DEFAULT IN (
        SELECT strPartNumber FROM #AffectedParts
  )
GROUP BY
      UPPER(LTRIM(RTRIM(bp.strPartNumber))) COLLATE DATABASE_DEFAULT,
      UPPER(LTRIM(RTRIM(
          CASE WHEN bp.strLocation IS NULL OR bp.strLocation = N'' THEN N'DEFAULT' ELSE bp.strLocation END
      ))) COLLATE DATABASE_DEFAULT;

CREATE TABLE #PerLoc (
    strPartNumber NVARCHAR(100) COLLATE DATABASE_DEFAULT NOT NULL,
    strLocation   NVARCHAR(20)  COLLATE DATABASE_DEFAULT NOT NULL,
    decQty        DECIMAL(19,6) NOT NULL,
    PRIMARY KEY (strPartNumber, strLocation)
);

INSERT INTO #PerLoc(strPartNumber, strLocation, decQty)
SELECT
    COALESCE(f.Part, c.Part) AS strPartNumber,
    COALESCE(f.Loc,  c.Loc)  AS strLocation,
    COALESCE(f.fin_qty, 0) - COALESCE(c.comp_qty, 0) AS decQty
FROM #fin_agg f
FULL OUTER JOIN #comp_agg c
  ON c.Part COLLATE DATABASE_DEFAULT = f.Part COLLATE DATABASE_DEFAULT
 AND c.Loc  COLLATE DATABASE_DEFAULT = f.Loc  COLLATE DATABASE_DEFAULT
WHERE COALESCE(f.fin_qty, 0) - COALESCE(c.comp_qty, 0) <> 0;


    UPDATE e
       SET e.decManuf = 0
    FROM dbo.tblInvExt e
    WHERE UPPER(LTRIM(RTRIM(e.strPartNumber))) COLLATE DATABASE_DEFAULT IN (
          SELECT strPartNumber FROM #AffectedParts
    );

    UPDATE e
       SET e.decManuf = pl.decQty
    FROM dbo.tblInvExt e
    INNER JOIN #PerLoc pl
      ON UPPER(LTRIM(RTRIM(e.strPartNumber))) COLLATE DATABASE_DEFAULT = pl.strPartNumber COLLATE DATABASE_DEFAULT
     AND UPPER(LTRIM(RTRIM(e.strLocName)))    COLLATE DATABASE_DEFAULT = pl.strLocation COLLATE DATABASE_DEFAULT;

    UPDATE e
       SET e.decAvail = (e.decOnHand - e.decAlloc) - e.decManuf
    FROM dbo.tblInvExt e
    WHERE UPPER(LTRIM(RTRIM(e.strPartNumber))) COLLATE DATABASE_DEFAULT IN (
          SELECT strPartNumber FROM #AffectedParts
    );

    CREATE TABLE #PerPart (
        strPartNumber NVARCHAR(100) COLLATE DATABASE_DEFAULT NOT NULL PRIMARY KEY,
        decQty        DECIMAL(19,6) NOT NULL
    );

    INSERT INTO #PerPart (strPartNumber, decQty)
    SELECT UPPER(LTRIM(RTRIM(e.strPartNumber))) COLLATE DATABASE_DEFAULT, SUM(e.decManuf)
    FROM dbo.tblInvExt e
    WHERE UPPER(LTRIM(RTRIM(e.strPartNumber))) COLLATE DATABASE_DEFAULT IN (
          SELECT strPartNumber FROM #AffectedParts
    )
    GROUP BY UPPER(LTRIM(RTRIM(e.strPartNumber))) COLLATE DATABASE_DEFAULT;

    UPDATE i
       SET i.decSumManuf    = 0,
           i.dteLastUpdated = GETDATE()
    FROM dbo.tblInv i
    WHERE UPPER(LTRIM(RTRIM(i.strPartNumber))) COLLATE DATABASE_DEFAULT IN (
          SELECT strPartNumber FROM #AffectedParts
    );

    UPDATE i
       SET i.decSumManuf    = pp.decQty,
           i.decSumAvail    = (i.decSumOnHand - i.decSumAlloc) - pp.decQty,
           i.dteLastUpdated = GETDATE()
    FROM dbo.tblInv i
    INNER JOIN #PerPart pp
      ON UPPER(LTRIM(RTRIM(i.strPartNumber))) COLLATE DATABASE_DEFAULT = pp.strPartNumber COLLATE DATABASE_DEFAULT;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SyncManufacturedDataSet]
      @strDocID             NVARCHAR(100)
    , @intTypePartClosed    INT
    , @intTypeWIP           INT
    , @intTypeOpen          INT
    , @intTypeWIPReturn     INT
    , @intAllocationSource  INT
    , @listPartNumber       NVARCHAR(MAX)
    , @listLocations        NVARCHAR(MAX)
AS
BEGIN
    SET NOCOUNT ON;
    SET XACT_ABORT ON;

    DECLARE @tblPartNumberTemp TABLE (PartNumber NVARCHAR(100) COLLATE Latin1_General_CI_AS PRIMARY KEY);
    DECLARE @tblLocationTemp   TABLE (InvLocation NVARCHAR(100) COLLATE Latin1_General_CI_AS PRIMARY KEY);

    IF NULLIF(LTRIM(RTRIM(@listPartNumber)), N'') IS NOT NULL
    BEGIN
        INSERT INTO @tblPartNumberTemp (PartNumber)
        SELECT DISTINCT UPPER(LTRIM(RTRIM(value))) COLLATE Latin1_General_CI_AS
        FROM dbo.fnSplitStringAsTable(@listPartNumber, N',');
    END

    IF NULLIF(LTRIM(RTRIM(@listLocations)), N'') IS NOT NULL
    BEGIN
        INSERT INTO @tblLocationTemp (InvLocation)
        SELECT DISTINCT UPPER(LTRIM(RTRIM(value))) COLLATE Latin1_General_CI_AS
        FROM dbo.fnSplitStringAsTable(@listLocations, N',');
    END

    IF NOT EXISTS (SELECT 1 FROM @tblPartNumberTemp)
    BEGIN
        IF @intAllocationSource = 1
        BEGIN
            INSERT INTO @tblPartNumberTemp(PartNumber)
            SELECT DISTINCT UPPER(LTRIM(RTRIM(dt.strPartNumber))) COLLATE Latin1_General_CI_AS
            FROM dbo.tblProductionScheduleDT dt
            WHERE dt.strProdNumber COLLATE Latin1_General_CI_AS = @strDocID COLLATE Latin1_General_CI_AS
              AND dt.strPartNumber IS NOT NULL AND dt.strPartNumber <> N'';
        END
        ELSE IF @intAllocationSource = 3
        BEGIN
            INSERT INTO @tblPartNumberTemp(PartNumber)
            SELECT DISTINCT UPPER(LTRIM(RTRIM(ci.strPartNumber))) COLLATE Latin1_General_CI_AS
            FROM dbo.tblManJobCompInv ci
            WHERE ci.strJBDocID COLLATE Latin1_General_CI_AS = @strDocID COLLATE Latin1_General_CI_AS
              AND ci.strPartNumber IS NOT NULL AND ci.strPartNumber <> N'';

            INSERT INTO @tblPartNumberTemp(PartNumber)
            SELECT DISTINCT UPPER(LTRIM(RTRIM(fi.strPartNumber))) COLLATE Latin1_General_CI_AS
            FROM dbo.tblManJobInv fi
            WHERE fi.strJBDocID COLLATE Latin1_General_CI_AS = @strDocID COLLATE Latin1_General_CI_AS
              AND fi.strPartNumber IS NOT NULL AND fi.strPartNumber <> N''
              AND UPPER(LTRIM(RTRIM(fi.strPartNumber))) COLLATE Latin1_General_CI_AS NOT IN (
                    SELECT PartNumber FROM @tblPartNumberTemp
              );
        END
        ELSE IF @intAllocationSource = 4
        BEGIN
            INSERT INTO @tblPartNumberTemp(PartNumber)
            SELECT DISTINCT UPPER(LTRIM(RTRIM(wi.strPartNumber))) COLLATE Latin1_General_CI_AS
            FROM dbo.tblManWIPCompInv wi
            WHERE wi.strWIPDocID COLLATE Latin1_General_CI_AS = @strDocID COLLATE Latin1_General_CI_AS
              AND wi.strPartNumber IS NOT NULL AND wi.strPartNumber <> N'';
        END
        ELSE
        BEGIN
            RETURN;
        END
    END

    DECLARE @HasByProducts BIT = 0;
    IF @intAllocationSource = 3
       AND EXISTS (SELECT 1 FROM dbo.tblManJobByProd WHERE strJBDocID COLLATE Latin1_General_CI_AS = @strDocID COLLATE Latin1_General_CI_AS)
       SET @HasByProducts = 1;

    ;WITH comp_src AS (
        SELECT
              UPPER(LTRIM(RTRIM(dt.strPartNumber))) COLLATE Latin1_General_CI_AS AS Part,
              UPPER(LTRIM(RTRIM(CASE WHEN dt.strLocName IS NULL OR dt.strLocName = N'' THEN N'DEFAULT' ELSE dt.strLocName END))) COLLATE Latin1_General_CI_AS AS Loc,
              SUM(dt.decReqQty) AS Qty
        FROM dbo.tblProductionScheduleDT dt
        INNER JOIN dbo.tblProductionSchedule hd ON hd.strProdNumber COLLATE Latin1_General_CI_AS = dt.strProdNumber COLLATE Latin1_General_CI_AS
        WHERE @intAllocationSource = 1
          AND dt.strProdNumber COLLATE Latin1_General_CI_AS = @strDocID COLLATE Latin1_General_CI_AS
          AND dt.strPartNumber IS NOT NULL AND dt.strPartNumber <> N''
          AND hd.bitCleared = 0
          AND hd.blnCompleted = 0
          AND UPPER(LTRIM(RTRIM(dt.strPartNumber))) COLLATE Latin1_General_CI_AS IN (SELECT PartNumber FROM @tblPartNumberTemp)
          AND (NOT EXISTS (SELECT 1 FROM @tblLocationTemp) OR
               UPPER(LTRIM(RTRIM(CASE WHEN dt.strLocName IS NULL OR dt.strLocName = N'' THEN N'DEFAULT' ELSE dt.strLocName END))) COLLATE Latin1_General_CI_AS IN (SELECT InvLocation FROM @tblLocationTemp))
        GROUP BY
              UPPER(LTRIM(RTRIM(dt.strPartNumber))) COLLATE Latin1_General_CI_AS,
              UPPER(LTRIM(RTRIM(CASE WHEN dt.strLocName IS NULL OR dt.strLocName = N'' THEN N'DEFAULT' ELSE dt.strLocName END))) COLLATE Latin1_General_CI_AS

        UNION ALL

        SELECT
              UPPER(LTRIM(RTRIM(ci.strPartNumber))) COLLATE Latin1_General_CI_AS,
              UPPER(LTRIM(RTRIM(CASE WHEN ci.strLocation IS NULL OR ci.strLocation = N'' THEN N'DEFAULT' ELSE ci.strLocation END))) COLLATE Latin1_General_CI_AS,
              SUM(ci.decManQty)
        FROM dbo.tblManJobCompInv ci
        INNER JOIN dbo.tblManJob j ON j.strJBDocID COLLATE Latin1_General_CI_AS = ci.strJBDocID COLLATE Latin1_General_CI_AS
        WHERE @intAllocationSource = 3
          AND ci.strJBDocID COLLATE Latin1_General_CI_AS = @strDocID COLLATE Latin1_General_CI_AS
          AND ci.strPartNumber IS NOT NULL AND ci.strPartNumber <> N''
          AND j.intType IN (@intTypeOpen, @intTypeWIP, @intTypePartClosed)
          AND UPPER(LTRIM(RTRIM(ci.strPartNumber))) COLLATE Latin1_General_CI_AS IN (SELECT PartNumber FROM @tblPartNumberTemp)
          AND (NOT EXISTS (SELECT 1 FROM @tblLocationTemp) OR
               UPPER(LTRIM(RTRIM(CASE WHEN ci.strLocation IS NULL OR ci.strLocation = N'' THEN N'DEFAULT' ELSE ci.strLocation END))) COLLATE Latin1_General_CI_AS IN (SELECT InvLocation FROM @tblLocationTemp))
        GROUP BY
              UPPER(LTRIM(RTRIM(ci.strPartNumber))) COLLATE Latin1_General_CI_AS,
              UPPER(LTRIM(RTRIM(CASE WHEN ci.strLocation IS NULL OR ci.strLocation = N'' THEN N'DEFAULT' ELSE ci.strLocation END))) COLLATE Latin1_General_CI_AS

        UNION ALL

        SELECT
              UPPER(LTRIM(RTRIM(wi.strPartNumber))) COLLATE Latin1_General_CI_AS,
              UPPER(LTRIM(RTRIM(CASE WHEN wi.strLocation IS NULL OR wi.strLocation = N'' THEN N'DEFAULT' ELSE wi.strLocation END))) COLLATE Latin1_General_CI_AS,
              SUM(CASE WHEN wi.intType = @intTypeWIPReturn THEN wi.decReturnQty ELSE wi.decPostQty END)
        FROM dbo.tblManWIPCompInv wi
        INNER JOIN dbo.tblManWIP w ON w.strWIPDocID COLLATE Latin1_General_CI_AS = wi.strWIPDocID COLLATE Latin1_General_CI_AS
        WHERE @intAllocationSource = 4
          AND wi.strWIPDocID COLLATE Latin1_General_CI_AS = @strDocID COLLATE Latin1_General_CI_AS
          AND wi.strPartNumber IS NOT NULL AND wi.strPartNumber <> N''
          AND w.intType IN (@intTypeOpen, @intTypeWIP, @intTypePartClosed)
          AND UPPER(LTRIM(RTRIM(wi.strPartNumber))) COLLATE Latin1_General_CI_AS IN (SELECT PartNumber FROM @tblPartNumberTemp)
          AND (NOT EXISTS (SELECT 1 FROM @tblLocationTemp) OR
               UPPER(LTRIM(RTRIM(CASE WHEN wi.strLocation IS NULL OR wi.strLocation = N'' THEN N'DEFAULT' ELSE wi.strLocation END))) COLLATE Latin1_General_CI_AS IN (SELECT InvLocation FROM @tblLocationTemp))
        GROUP BY
              UPPER(LTRIM(RTRIM(wi.strPartNumber))) COLLATE Latin1_General_CI_AS,
              UPPER(LTRIM(RTRIM(CASE WHEN wi.strLocation IS NULL OR wi.strLocation = N'' THEN N'DEFAULT' ELSE wi.strLocation END))) COLLATE Latin1_General_CI_AS
    ),
    comp_agg AS (
        SELECT Part, Loc, SUM(CASE WHEN Qty < 0 THEN 0 ELSE Qty END) AS comp_qty
        FROM comp_src
        GROUP BY Part, Loc
    ),
    fin_agg AS (
        SELECT
              UPPER(LTRIM(RTRIM(src.strPartNumber))) COLLATE Latin1_General_CI_AS AS Part,
              UPPER(LTRIM(RTRIM(CASE WHEN src.strLocation IS NULL OR src.strLocation = N'' THEN N'DEFAULT' ELSE src.strLocation END))) COLLATE Latin1_General_CI_AS AS Loc,
              SUM(src.decManQty) AS fin_qty
        FROM (
            SELECT fi.strPartNumber, fi.strLocation, fi.decManQty
            FROM dbo.tblManJobInv fi
            INNER JOIN dbo.tblManJob j ON j.strJBDocID COLLATE Latin1_General_CI_AS = fi.strJBDocID COLLATE Latin1_General_CI_AS
            WHERE @intAllocationSource = 3 AND @HasByProducts = 0
              AND fi.strJBDocID COLLATE Latin1_General_CI_AS = @strDocID COLLATE Latin1_General_CI_AS
              AND j.intType IN (@intTypeOpen, @intTypeWIP, @intTypePartClosed)

            UNION ALL

            SELECT bp.strPartNumber, bp.strLocation, bp.decManQty
            FROM dbo.tblManJobByProd bp
            INNER JOIN dbo.tblManJob j ON j.strJBDocID COLLATE Latin1_General_CI_AS = bp.strJBDocID COLLATE Latin1_General_CI_AS
            WHERE @intAllocationSource = 3 AND @HasByProducts = 1
              AND bp.strJBDocID COLLATE Latin1_General_CI_AS = @strDocID COLLATE Latin1_General_CI_AS
              AND j.intType IN (@intTypeOpen, @intTypeWIP, @intTypePartClosed)
        ) AS src
        WHERE UPPER(LTRIM(RTRIM(src.strPartNumber))) COLLATE Latin1_General_CI_AS IN (SELECT PartNumber FROM @tblPartNumberTemp)
          AND (NOT EXISTS (SELECT 1 FROM @tblLocationTemp) OR
               UPPER(LTRIM(RTRIM(CASE WHEN src.strLocation IS NULL OR src.strLocation = N'' THEN N'DEFAULT' ELSE src.strLocation END))) COLLATE Latin1_General_CI_AS IN (SELECT InvLocation FROM @tblLocationTemp))
        GROUP BY
              UPPER(LTRIM(RTRIM(src.strPartNumber))) COLLATE Latin1_General_CI_AS,
              UPPER(LTRIM(RTRIM(CASE WHEN src.strLocation IS NULL OR src.strLocation = N'' THEN N'DEFAULT' ELSE src.strLocation END))) COLLATE Latin1_General_CI_AS
    )

    SELECT
        COALESCE(f.Part, c.Part) AS strPartNumber,
        COALESCE(f.Loc,  c.Loc)  AS strLocation,
        COALESCE(f.fin_qty, 0) - COALESCE(c.comp_qty, 0) AS decQty
    INTO #PerLoc
    FROM fin_agg f
    FULL OUTER JOIN comp_agg c
      ON c.Part COLLATE Latin1_General_CI_AS = f.Part COLLATE Latin1_General_CI_AS
     AND c.Loc COLLATE Latin1_General_CI_AS = f.Loc COLLATE Latin1_General_CI_AS
    WHERE COALESCE(f.fin_qty, 0) - COALESCE(c.comp_qty, 0) <> 0;

    UPDATE e
       SET e.decManuf = 0
    FROM dbo.tblInvExt e
    WHERE UPPER(LTRIM(RTRIM(e.strPartNumber))) COLLATE Latin1_General_CI_AS IN (SELECT PartNumber FROM @tblPartNumberTemp)
      AND (NOT EXISTS (SELECT 1 FROM @tblLocationTemp) OR
           UPPER(LTRIM(RTRIM(e.strLocName))) COLLATE Latin1_General_CI_AS IN (SELECT InvLocation FROM @tblLocationTemp));

    UPDATE e
       SET e.decManuf = pl.decQty
    FROM dbo.tblInvExt e
    INNER JOIN #PerLoc pl
      ON UPPER(LTRIM(RTRIM(e.strPartNumber))) COLLATE Latin1_General_CI_AS = pl.strPartNumber COLLATE Latin1_General_CI_AS
     AND UPPER(LTRIM(RTRIM(e.strLocName))) COLLATE Latin1_General_CI_AS = pl.strLocation COLLATE Latin1_General_CI_AS;

    UPDATE e
       SET e.decAvail = (e.decOnHand - e.decAlloc) - e.decManuf
    FROM dbo.tblInvExt e
    WHERE UPPER(LTRIM(RTRIM(e.strPartNumber))) COLLATE Latin1_General_CI_AS IN (SELECT PartNumber FROM @tblPartNumberTemp)
      AND (NOT EXISTS (SELECT 1 FROM @tblLocationTemp) OR
           UPPER(LTRIM(RTRIM(e.strLocName))) COLLATE Latin1_General_CI_AS IN (SELECT InvLocation FROM @tblLocationTemp));

    SELECT
        UPPER(LTRIM(RTRIM(e.strPartNumber))) COLLATE Latin1_General_CI_AS AS strPartNumber,
        SUM(e.decManuf) AS decQty
    INTO #PerPart
    FROM dbo.tblInvExt e
    WHERE UPPER(LTRIM(RTRIM(e.strPartNumber))) COLLATE Latin1_General_CI_AS IN (SELECT PartNumber FROM @tblPartNumberTemp)
      AND (NOT EXISTS (SELECT 1 FROM @tblLocationTemp) OR
           UPPER(LTRIM(RTRIM(e.strLocName))) COLLATE Latin1_General_CI_AS IN (SELECT InvLocation FROM @tblLocationTemp))
    GROUP BY UPPER(LTRIM(RTRIM(e.strPartNumber))) COLLATE Latin1_General_CI_AS;

    UPDATE i
       SET i.decSumManuf    = 0,
           i.dteLastUpdated = GETDATE()
    FROM dbo.tblInv i
    WHERE UPPER(LTRIM(RTRIM(i.strPartNumber))) COLLATE Latin1_General_CI_AS IN (SELECT PartNumber FROM @tblPartNumberTemp);

    UPDATE i
       SET i.decSumManuf    = pp.decQty,
           i.decSumAvail    = (i.decSumOnHand - i.decSumAlloc) - pp.decQty,
           i.dteLastUpdated = GETDATE()
    FROM dbo.tblInv i
    INNER JOIN #PerPart pp
      ON UPPER(LTRIM(RTRIM(i.strPartNumber))) COLLATE Latin1_General_CI_AS = pp.strPartNumber COLLATE Latin1_General_CI_AS;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBranchTransferOrderDetails] (
@Part NVARCHAR(100)
,@BarCode NVARCHAR(100)
,@Location NVARCHAR(20)
,@ToLocation NVARCHAR(20)
,@Unit NVARCHAR(20) = ''

)
AS
BEGIN
SELECT tblInv.strPartNumber AS PartNumber
,tblInv.strDesc AS Description
,tblInv.decLastPPUnit AS LastPPUnit
,tblInv.decBuyToStock AS BuyToStock
,tblInv.bitInvSerialType AS IsInvSerialType
,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimensionExist
,ISNULL(ext2.decAvail, 0) AS Avail
,ISNULL(ext2.decOnHand, 0) AS OnHand
,ISNULL(ext2.decOnOrder, 0) AS OnOrder
,ISNULL(ext1.decMaxLevel, 0) AS MaxLevel
,ISNULL(ext2.decValue, 0) AS Value
,ISNULL(tblInvUOMs.strFromUnit, tblInv.strStockUnit) AS StockUnit
,ISNULL(CASE tblInvUOMs.strConversionType
WHEN 'Multiply'
THEN tblInvUOMs.decConversionFactor
ELSE 1 / tblInvUOMs.decConversionFactor
END, 1) AS ConversionFactor
,ISNULL(tblInvUOMs.strConversionType, 'Multiply') AS ConversionType
,ISNULL(tblInvUOMs.decConversionFactor, 1) AS ConversionFactorActual
,cast(tblInv.intType AS INT) AS Type
,tblInv.strStockUnit AS StockUnitDefault
FROM tblInv
INNER JOIN tblInvExt ext1 ON tblInv.strPartNumber = ext1.strPartNumber
INNER JOIN tblInvExt ext2 ON tblInv.strPartNumber = ext2.strPartNumber
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
AND tblInvUOMs.bitInactive = 0
AND tblInvUOMs.strFromUnit = (
CASE LEN(@Unit)
WHEN 0
THEN (
SELECT TOP 1 Invsub.strStockUnit
FROM tblInv Invsub
WHERE Invsub.strPartNumber = @Part
)
ELSE @Unit
END
)
WHERE (
tblInv.strPartNumber = @Part
OR tblInv.strBarCode = @BarCode
OR tblInv.strBarCode2 = @BarCode
)
AND tblInv.intType = 1
AND tblInv.bitInactive = 0
AND ext1.bitInactive = 0
AND ext1.strLocName = @Location
AND ext2.strLocName = @ToLocation
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetApprovalsDocLimitByLimit] @Limit MONEY
AS
BEGIN
SELECT strUSername AS UserName,
ID 
FROM tblApprovalsDocLimit
WHERE intApproverType = 1
AND (
DocLimitIncl IS NULL
OR DocLimitIncl >= @Limit
)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetEmployeesData]
AS
BEGIN
SELECT strEmpNumber AS EmpNumber
,strEmpName AS EmpName
FROM tblEmployees
WHERE bitInactive = 0
ORDER BY strEmpName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetStatusTypeData]
AS
BEGIN
SELECT strStatusTypeCode AS StatusTypeCode
,strStatusTypeDesc AS StatusTypeDesc
FROM tblStatusTypes
WHERE bitInactive = 0
ORDER BY strStatusTypeCode
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetIssueRequisitionDetails] (
	@Part NVARCHAR(100)
	,@BarCode NVARCHAR(100)
	,@Location NVARCHAR(20)
	,@ToLocation NVARCHAR(20)
	,@Unit NVARCHAR(20) = ''
	,@EmpNumber NVARCHAR(20) = ''
	)
AS
IF (Isnull(@EmpNumber, '') = '')
BEGIN
	SELECT tblInv.strPartNumber AS PartNumber
		,tblInv.strDesc AS Description
		,tblInv.decLastPPUnit AS LastPPUnit
		,tblInv.decBuyToStock AS BuyToStock
		,tblInv.bitInvSerialType AS IsInvSerialType
		,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
		,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimensionExist
		,ISNULL(ext2.decAvail, 0) AS Avail
		,ISNULL(ext2.decOnHand, 0) AS OnHand
		,ISNULL(ext2.decOnOrder, 0) AS OnOrder
		,ISNULL(ext1.decMaxLevel, 0) AS MaxLevel
		,ISNULL(ext2.decValue, 0) AS Value
		,ISNULL(tblInvUOMs.strFromUnit, tblInv.strStockUnit) AS StockUnit
		,ISNULL(CASE tblInvUOMs.strConversionType
				WHEN 'Multiply'
					THEN tblInvUOMs.decConversionFactor
				ELSE 1 / tblInvUOMs.decConversionFactor
				END, 1) AS ConversionFactor
		,ISNULL(tblInvUOMs.strConversionType, 'Multiply') AS ConversionType
		,ISNULL(tblInvUOMs.decConversionFactor, 1) AS ConversionFactorActual
		,cast(tblInv.intType AS INT) AS Type
		,tblInv.strStockUnit AS StockUnitDefault
	FROM tblInv
	INNER JOIN tblInvExt ext1 ON tblInv.strPartNumber = ext1.strPartNumber
	INNER JOIN tblInvExt ext2 ON tblInv.strPartNumber = ext2.strPartNumber
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
		AND tblInvUOMs.bitInactive = 0
	WHERE (
			tblInv.strPartNumber = @Part
			OR tblInv.strBarCode = @BarCode
			OR tblInv.strBarCode2 = @BarCode
			)
		AND tblInv.intType = 1
		AND tblInv.bitInactive = 0
		AND ext1.bitInactive = 0
		AND ext1.strLocName = @Location
		AND ext2.strLocName = @ToLocation
END
ELSE
BEGIN
	SELECT tblInv.strPartNumber AS PartNumber
		,tblInv.strDesc AS Description
		,tblInv.decLastPPUnit AS LastPPUnit
		,tblInv.decBuyToStock AS BuyToStock
		,tblInv.bitInvSerialType AS IsInvSerialType
		,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
		,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimensionExist
		,ISNULL(tblInvExt.decOnHand, 0) AS OnHand
		,ISNULL(tblInvExt.decValue, 0) AS Value
		,ISNULL(tblEmpItemBudgetDT.decBudgetQty, 0) AS BudgetQty
		,ISNULL(tblEmpItemBudgetDT.intBudgetFrequency, 5) AS BudgetFrequency
		,ISNULL(tblInvUOMs.strFromUnit, tblInv.strStockUnit) AS StockUnit
		,CASE 
			WHEN tblEmpItemBudgetDT.intBudgetFrequency IS NULL
				THEN cast(0 AS BIT)
			ELSE cast(1 AS BIT)
			END AS IsBudgetedItem
		,ISNULL(CASE tblInvUOMs.strConversionType
				WHEN 'Multiply'
					THEN tblInvUOMs.decConversionFactor
				ELSE 1 / tblInvUOMs.decConversionFactor
				END, tblInv.decBuyToStock) AS ConversionFactor
		,ISNULL(tblInvUOMs.strConversionType, 'Multiply') AS ConversionType
		,ISNULL(tblInvUOMs.decConversionFactor, tblInv.decBuyToStock) AS ConversionFactorActual
		,cast(tblInv.intType AS INT) AS [Type]
		,tblEmployees.bitNonBudgetRefNo AS bitNonBudgetRefNo
		,tblInv.strStockUnit AS StockUnitDefault
	FROM tblInv
	INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
	LEFT JOIN tblEmpItemBudgetDT ON tblInv.strPartNumber = tblEmpItemBudgetDT.strPartNumber
		AND (tblEmpItemBudgetDT.strEmpNumber = @EmpNumber)
	LEFT JOIN tblEmployees ON tblEmployees.strEmpNumber = @EmpNumber
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
		AND tblInvUOMs.bitInactive = 0
		AND tblInvUOMs.strFromUnit = (
			CASE LEN(@Unit)
				WHEN 0
					THEN (
							SELECT TOP 1 Invsub.strStockUnit
							FROM tblInv Invsub
							WHERE Invsub.strPartNumber = @Part
							)
				ELSE @Unit
				END
			)
	WHERE (
			tblInv.strPartNumber = @Part
			OR tblInv.strBarCode = @BarCode
			OR tblInv.strBarCode2 = @BarCode
			)
		AND (tblInv.intType = 1)
		AND (tblInv.bitInactive = 0)
		AND (tblInvExt.bitInactive = 0)
		AND (tblInvExt.strLocName = @Location)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPOApprovalsSettings]  
AS  
BEGIN
	select [blnPOApprovalsEnable] as IsPOApprovalsEnable, [blnPOApprovalsEnable] as IsUseApprovals,[blnPOApprovalsDocLimitEnable] as IsPOApprovalsDocLimitEnable, 
	[blnPOApprovalsVenLimitEnable] as IsPOApprovalsDocLimitEnable, [bitIsCreditNoteApprovalsActivated] as IsCreditNoteApprovalsActivated, [bitIsGeneralLedgerJournalApprovalsActivated] as IsGeneralLedgerJournalApprovalsActivated  from tblCoOpts(NOLOCK)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetIRApprovalsSettings]  
AS  
BEGIN  
SELECT [blnIRApprovalsEnable] AS IsUseApprovals  
,[blnIRApprovalsDocLimitEnable] IsIRApprovalsDocLimitEnable  
,[blnIRApprovalsEmpLimitEnable] AS   IsIRApprovalsEmpLimitEnable
FROM tblCoOpts(NOLOCK)  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[CheckIRRequisitionAlreadyApproved] (@Number AS NVARCHAR(50))
AS
BEGIN
SELECT strDeclineReasonCodeText
FROM tblIRApprovalTracking(NOLOCK)
WHERE strReqInvDocID = @Number
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[TurnBitClearedOff] (@DocId AS NVARCHAR(50))
AS
BEGIN
UPDATE tblOrderDocP
SET [bitCleared] = 'false'
WHERE strOrdPdocID = @DocId
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[IsIREnforceSecurity]
AS
BEGIN
SELECT bitIREnforceSecurity
FROM tblCoOpts
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[EmpFingerprintsCount] (@EmpNumber NVARCHAR(50))
AS
BEGIN
SELECT Count(*)
FROM tblEmpFingerprints
WHERE strEmpNumber = @EmpNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetEmployeesPinNo] (@EmpNumber NVARCHAR(50))
AS
BEGIN
SELECT ISNULL(strPinNo, '') AS PinNo
FROM tblEmployees
WHERE strEmpNumber = @EmpNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvAdjustmentsDetails] (
	@DocNumber AS NVARCHAR(100)
	,@AdjustmentType AS INT
	,@IsConversion AS BIT
	)
AS
BEGIN
	IF (@IsConversion = 1)
	BEGIN
		SELECT strInvIntReqDocID AS 'DocIDText'
			,cast(0 AS BIGINT) AS 'JourID'
			,dteJournalDate AS 'JournalDate'
			,strLocName AS 'LocName'
			,strComment AS 'Comment'
			,intAccount AS 'Account'
			,ISNULL((
					SELECT strDesc
					FROM tblAccounts
					WHERE intGLNumber = tblInvIntReqDoc.intAccount
					), '') AS 'Description'
			,decTotal AS 'Total'
			,intDept AS 'Dept'
			,strEmpNumber AS 'EmpNumber'
			,strIssueType AS 'IssueType'
			,strReasonCode AS 'ReasonCode'
		FROM tblInvIntReqDoc
		WHERE strInvIntReqDocID = @DocNumber
	END
	ELSE
	BEGIN
		IF (@AdjustmentType = 2) --InternalRequisition  
		BEGIN
			SELECT strInvIntReqDocID AS 'DocIDText'
				,cast(0 AS BIGINT) AS 'JourID'
				,dteJournalDate AS 'JournalDate'
				,strLocName AS 'LocName'
				,strComment AS 'Comment'
				,intAccount AS 'Account'
				,ISNULL((
						SELECT strDesc
						FROM tblAccounts
						WHERE intGLNumber = tblInvIntReqDoc.intAccount
						), '') AS 'Description'
				,decTotal AS 'Total'
				,intDept AS 'Dept'
				,bitCleared AS 'IsCleared'
				,strEmpNumber AS 'EmpNumber'
				,strIssueType AS 'IssueType'
				,strReasonCode AS 'ReasonCode'
			FROM tblInvIntReqDoc
			WHERE strInvIntReqDocID = @DocNumber
		END
		ELSE IF (@AdjustmentType = 3) --IssueRequisition  
		BEGIN
			SELECT strInvIssReqDocID AS 'DocIDText'
				,lngJourID AS 'JourID'
				,dteJournalDate AS 'JournalDate'
				,strLocName AS 'LocName'
				,strComment AS 'Comment'
				,intAccount AS 'Account'
				,ISNULL((
						SELECT strDesc
						FROM tblAccounts
						WHERE intGLNumber = tblInvIssReqDoc.intAccount
						), '') AS 'Description'
				,decTotal AS 'Total'
				,intDept AS 'Dept'
				,strEmpNumber AS 'EmpNumber'
				,strIssueType AS 'IssueType'
				,strReasonCode AS 'ReasonCode'
			FROM tblInvIssReqDoc
			WHERE strInvIssReqDocID = @DocNumber
		END
		ELSE IF (@AdjustmentType = 4) --BranchTransferOrder  
		BEGIN
			SELECT strInvTrfOrdDocID AS 'DocIDText'
				,cast(0 AS BIGINT) AS 'JourID'
				,dteJournalDate AS 'JournalDate'
				,strLocName AS 'LocName'
				,strComment AS 'Comment'
				,intAccount AS 'Account'
				,ISNULL((
						SELECT strDesc
						FROM tblAccounts
						WHERE intGLNumber = tblInvTrfOrdDoc.intAccount
						), '') AS 'Description'
				,decTotal AS 'Total'
				,intDept AS 'Dept'
				,bitCleared AS 'IsCleared'
				,ISNULL((strDelMethodCode), '') AS DelMethodCode
				,ISNULL((strToLocName), '') AS ToLocName
				,dteReceivingDate AS ReceivingDate
			FROM tblInvTrfOrdDoc
			WHERE strInvTrfOrdDocID = @DocNumber
		END
		ELSE --Adjustments  
		BEGIN
			SELECT strAdjDocID AS 'DocIDText'
				,lngJourID AS 'JourID'
				,dteJournalDate AS 'JournalDate'
				,strLocName AS 'LocName'
				,strComment AS 'Comment'
				,intAccount AS 'Account'
				,ISNULL((
						SELECT strDesc
						FROM tblAccounts
						WHERE intGLNumber = tblInvAdjDoc.intAccount
						), '') AS 'Description'
				,decTotal AS 'Total'
				,intDept AS 'Dept'
				,bitRevaluation AS 'IsRevaluation'
			FROM tblInvAdjDoc
			WHERE strAdjDocID = @DocNumber
		END
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetEmpNameByEmpNumber] (@EmpNumber AS NVARCHAR(100))
AS
BEGIN
SELECT ISNull(dteBudgetDate,'') AS BudgetDate
,strEmpName AS EmpName
FROM tblEmployees
WHERE strEmpNumber = @EmpNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvAdjustmentsGridData] (
@DocNumber AS NVARCHAR(100)
,@AdjustmentType AS INT
,@IsConversion AS BIT
,@LocNumber AS NVARCHAR(100) = ''
,@ToLocNumber AS NVARCHAR(100) = ''
)
AS
BEGIN
IF (@IsConversion = 1)
BEGIN
SELECT tblInvIntReqDocDT.strPartNumber AS 'Number'
,tblInv.strDesc AS 'Desc'
,tblInvIntReqDocDT.decQty AS 'Qty'
,tblInvIntReqDocDT.decUnitCost AS 'Cost'
,tblInvIntReqDocDT.decAmount AS 'Amount'
,tblInv.bitInvSerialType AS 'InventorySerialNumber'
,ISNULL(tblInvSerialTypes.bitMethod, 0) AS 'IsMethod'
,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS 'IsDimensionExist'
,tblInv.decLastPPUnit AS 'LastPPUnit'
,tblInv.decBuyToStock AS 'BuyToStock'
,ISNULL(tblInvExt.decValue, 0) AS 'Value'
,ISNULL(tblInvExt.decOnHand, 0) AS 'OnHand'
,'' AS BinCode
,'' AS BinId
,tblEmployees.strEmpName AS EmpName
,tblInvIntReqDocDT.strFromUnit AS FromUnit
,tblInvIntReqDocDT.strConversionType AS ConversionType
,tblInvIntReqDocDT.decConversionFactor AS ConversionFactor
,tblInvIntReqDocDT.strStockUnit AS StockUnit
FROM tblInvIntReqDoc
INNER JOIN tblInvIntReqDocDT ON tblInvIntReqDoc.strInvIntReqDocID = tblInvIntReqDocDT.strInvIntReqDocID
INNER JOIN tblInv ON tblInvIntReqDocDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblEmployees ON tblInvIntReqDocDT.strEmpNumber = tblEmployees.strEmpNumber
LEFT JOIN tblInvExt ON tblInvIntReqDocDT.strPartNumber = tblInvExt.strPartNumber
AND tblInvIntReqDoc.strLocName = tblInvExt.strLocName
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblInvIntReqDocDT.strInvIntReqDocID = @DocNumber
ORDER BY tblInvIntReqDocDT.intLineNo
END
ELSE
BEGIN
IF (@AdjustmentType = 2) --InternalRequisition
BEGIN
SELECT tblInvIntReqDocDT.strPartNumber AS 'Number'
,tblInv.strDesc AS 'Desc'
,tblInvIntReqDocDT.decQty AS 'Qty'
,tblInvIntReqDocDT.decUnitCost AS 'Cost'
,tblInvIntReqDocDT.decAmount AS 'Amount'
,tblInv.bitInvSerialType AS 'InventorySerialNumber'
,tblEmployees.strEmpName AS EmpName
,tblInvIntReqDocDT.strFromUnit AS FromUnit
,tblInvIntReqDocDT.strConversionType AS ConversionType
,tblInvIntReqDocDT.decConversionFactor AS ConversionFactor
,tblInvIntReqDocDT.strStockUnit AS StockUnit
FROM tblInvIntReqDocDT
INNER JOIN tblInv ON tblInvIntReqDocDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblEmployees ON tblInvIntReqDocDT.strEmpNumber = tblEmployees.strEmpNumber
WHERE tblInvIntReqDocDT.strInvIntReqDocID = @DocNumber
ORDER BY tblInvIntReqDocDT.intLineNo
END
ELSE IF (@AdjustmentType = 3) --IssueRequisition
BEGIN
SELECT tblInvIssReqDocDT.strPartNumber AS 'Number'
,tblInv.strDesc AS 'Desc'
,tblInvIssReqDocDT.decQty AS 'Qty'
,tblInvIssReqDocDT.decUnitCost AS 'Cost'
,tblInvIssReqDocDT.decAmount AS 'Amount'
,tblInv.bitInvSerialType AS 'InventorySerialNumber'
,ISNULL(tblInvSerialTypes.bitMethod, 0) AS 'IsMethod'
,decReqQty AS 'ReqQty'
,ISNULL(STUFF((
SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX))
FROM tblInvLocBin
WHERE tblInvLocBin.lngId IN (
SELECT lngBinID
FROM tblInvIssReqDocDTBin
WHERE tblInvIssReqDocDTBin.strInvIssReqDocID = tblInvIssReqDocDT.strInvIssReqDocID
AND tblInvIssReqDocDTBin.intLineNo = tblInvIssReqDocDT.intLineNo
)
FOR XML PATH('')
), 1, 1, ''), '') AS BinCode
,ISNULL(STUFF((
SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(MAX))
FROM tblInvLocBin
WHERE tblInvLocBin.lngID IN (
SELECT lngBinID
FROM tblInvIssReqDocDTBin
WHERE tblInvIssReqDocDTBin.strInvIssReqDocID = tblInvIssReqDocDT.strInvIssReqDocID
AND tblInvIssReqDocDTBin.intLineNo = tblInvIssReqDocDT.intLineNo
)
FOR XML PATH('')
), 1, 1, ''), '') AS BinId
,tblEmployees.strEmpName AS EmpName
,tblInvIssReqDocDT.strFromUnit AS FromUnit
,tblInvIssReqDocDT.strConversionType AS ConversionType
,tblInvIssReqDocDT.decConversionFactor AS ConversionFactor
,tblInvIssReqDocDT.strStockUnit AS StockUnit
FROM tblInvIssReqDocDT
INNER JOIN tblInv ON tblInvIssReqDocDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblEmployees ON tblInvIssReqDocDT.strEmpNumber = tblEmployees.strEmpNumber
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblInvIssReqDocDT.strInvIssReqDocID = @DocNumber
ORDER BY tblInvIssReqDocDT.intLineNo
END
ELSE IF (@AdjustmentType = 4) -- BranchTransferOrder
BEGIN
SELECT tblInvTrfOrdDocDT.strPartNumber AS Number
,tblInv.strDesc AS 'Desc'
,tblInvTrfOrdDocDT.decQty AS Qty
,tblInvTrfOrdDocDT.decUnitCost AS Cost
,tblInvTrfOrdDocDT.decAmount AS Amount
,tblInv.bitInvSerialType AS InventorySerialNumber
,ext2.decOnHand AS OnHand
,ext2.decAvail AS Avail
,ext1.decMaxLevel AS MaxLevel
,ext2.decOnOrder AS OnOrder
,tblInvTrfOrdDocDT.decQtyRemaining AS QtyRemaining
,tblInvTrfOrdDocDT.intLineNo AS 'LineNo'
,tblInvTrfOrdDocDT.strFromUnit AS FromUnit
,tblInvTrfOrdDocDT.strConversionType AS ConversionType
,tblInvTrfOrdDocDT.decConversionFactor AS ConversionFactor
,tblInvTrfOrdDocDT.strStockUnit AS StockUnit
FROM tblInvTrfOrdDocDT
INNER JOIN tblInv ON tblInvTrfOrdDocDT.strPartNumber = tblInv.strPartNumber
INNER JOIN tblInvExt ext1 ON tblInv.strPartNumber = ext1.strPartNumber
INNER JOIN tblInvExt ext2 ON tblInv.strPartNumber = ext2.strPartNumber
WHERE tblInvTrfOrdDocDT.strInvTrfOrdDocID = @DocNumber
AND ext1.strLocName = @LocNumber
AND ext2.strLocName = @ToLocNumber
ORDER BY tblInvTrfOrdDocDT.intLineNo
END
ELSE --Adjustments
BEGIN
SELECT tblInvAdjDocDT.strPartNumber AS 'Number'
,tblInv.strDesc AS 'Desc'
,tblInvAdjDocDT.decQty AS 'Qty'
,tblInvAdjDocDT.decUnitCost AS 'Cost'
,tblInvAdjDocDT.decAmount AS 'Amount'
,tblInv.bitInvSerialType AS 'InventorySerialNumber'
,ISNULL(tblInvSerialTypes.bitMethod, 0) AS 'IsMethod'
,tblInvLocBin.strBinCode AS BinCode
,tblInvAdjDocDT.lngBinId AS BinId
,tblInvAdjDocDT.decOnHand AS OnHand
,tblInvAdjDocDT.decValue AS Value
,tblInvAdjDocDT.decNewValue AS NewValue
,tblInvAdjDocDT.strFromUnit AS FromUnit
,tblInvAdjDocDT.strConversionType AS ConversionType
,tblInvAdjDocDT.decConversionFactor AS ConversionFactor
,tblInvAdjDocDT.strStockUnit AS StockUnit
FROM tblInvAdjDocDT
INNER JOIN tblInv ON tblInvAdjDocDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
LEFT JOIN tblInvLocBin ON tblInvLocBin.lngID = tblInvAdjDocDT.lngBinID
WHERE tblInvAdjDocDT.strAdjDocID = @DocNumber
ORDER BY tblInvAdjDocDT.intLineNo
END
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvSelectedApproverUserName] (@DocNumber AS NVARCHAR(100))
AS
BEGIN
SELECT strSelectedApproverUserName AS SelectedApproverUserName
FROM tblInvIntReqDoc_IRApprovals
WHERE strInvIntReqDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetEmpItemBudgetDT] (
	@EmpNumber AS NVARCHAR(100)
	,@Part AS NVARCHAR(100)
	,@Date AS DATETIME
	,@BarCode AS NVARCHAR(100)
	)
AS
BEGIN
	SELECT ISNULL(tblEmpItemBudgetDT.decBudgetQty, 0) AS BudgetQty
		,ISNULL(tblEmpItemBudgetDT.intBudgetFrequency, 5) AS BudgetFrequency
		,ISNULL(decUsedQty, 0) AS UsedQty
		,tblEmployees.bitNonBudgetRefNo AS bitNonBudgetRefNo
		,CASE 
			WHEN tblEmpItemBudgetDT.intBudgetFrequency IS NULL
				THEN CAST(0 AS BIT)
			ELSE CAST(1 AS BIT)
			END AS IsBudgetedItem
	FROM tblInv
	LEFT JOIN tblEmpItemBudgetDT ON tblInv.strPartNumber = tblEmpItemBudgetDT.strPartNumber
		AND (tblEmpItemBudgetDT.strEmpNumber = @EmpNumber)
	LEFT JOIN tblEmployees ON tblEmployees.strEmpNumber = @EmpNumber
	LEFT JOIN (
		SELECT tblInvIssReqDocDT.strPartNumber
			,decUsedQty = CASE ISNULL(tblEmpItemBudgetDT.intBudgetFrequency, 5)
				WHEN 5
					THEN 0
				ELSE SUM(decQty)
				END
		FROM tblInvIssReqDocDT
		INNER JOIN tblInvIssReqDoc ON tblInvIssReqDoc.strInvIssReqDocID = tblInvIssReqDocDT.strInvIssReqDocID
		INNER JOIN tblEmpItemBudgetDT ON tblEmpItemBudgetDT.strEmpNumber = tblInvIssReqDoc.strEmpNumber
			AND tblEmpItemBudgetDT.strPartNumber = tblInvIssReqDocDT.strPartNumber
		WHERE tblInvIssReqDoc.strEmpNumber = @EmpNumber
			AND tblInvIssReqDocDT.strPartNumber = @Part
			AND dteJournalDate BETWEEN CASE ISNULL(tblEmpItemBudgetDT.intBudgetFrequency, 5)
						WHEN 5
							THEN @Date
						WHEN 0
							THEN DATEADD(YEAR, - 1, @Date)
						WHEN 1
							THEN DATEADD(Month, - 6, @Date)
						WHEN 2
							THEN DATEADD(Month, - 3, @Date)
						WHEN 3
							THEN DATEADD(Month, - 1, @Date)
						WHEN 4
							THEN DATEADD(WEEK, - 1, @Date)
						END
				AND @Date
		GROUP BY tblInvIssReqDocDT.strPartNumber
			,tblEmpItemBudgetDT.intBudgetFrequency
		) AS Z ON Z.strPartNumber = tblInv.strPartNumber
	WHERE (
			tblInv.strPartNumber = @Part
			OR tblInv.strBarCode = @BarCode
			OR tblInv.strBarCode2 = @BarCode
			)
		AND (tblInv.intType = 1)
		AND (tblInv.bitInactive = 0)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateOrderDocPBitClearedOff] @DocId NVARCHAR(50)
AS
BEGIN
UPDATE tblOrderDocP
SET [bitCleared] = 'false'
WHERE strOrdPdocID = @DocId
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateInvIntReqDocBitCleared] @DocId NVARCHAR(50)
AS
BEGIN
UPDATE tblInvIntReqDoc
SET bitCleared = 1
WHERE strInvIntReqDocID = @DocId
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertIRApproverAssignment] @DocID NVARCHAR(100)
,@ApproverUsername VARCHAR(100)
,@POstatus INT
AS
BEGIN
INSERT INTO tblInvIntReqDoc_IRApprovals
VALUES (
@DocID
,@ApproverUsername
,@POstatus
)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetIRLimitCalculations] @EmpNumber VARCHAR(100)
AS
BEGIN
SELECT *
FROM vw_IR_Limit_Calculations
WHERE strVendorEmpName = @EmpNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetNotificationMessagesDT] @ApproverType VARCHAR(100) ,@NotificationType int
AS
BEGIN
SELECT NotificationSMS AS NotificationSMS
,NotificationEMAIL AS NotificationEMAIL
,intApproverType AS ApproverType
FROM tblApprovalsNotifications(NOLOCK)
WHERE intApproverType = @ApproverType and intNotificationType = @NotificationType
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvAdjHeader] (
@DocID NVARCHAR(100)
,@AdjDocID BIGINT
,@InvTrackID BIGINT
,@JourID BIGINT
,@SystemDate SMALLDATETIME
,@JournalDate SMALLDATETIME
,@UserName NVARCHAR(40)
,@LocName NVARCHAR(20)
,@Comment NVARCHAR(100)
,@Account NVARCHAR(60)
,@Total MONEY
,@Dept INT
,@FileName NVARCHAR(500)
,@Revaluation BIT
,@StockCount BIT
,@Actual BIT
,@SetQtyZero BIT
)
AS
BEGIN
INSERT INTO tblInvAdjDoc
VALUES (
@DocID
,@AdjDocID
,@InvTrackID
,@JourID
,@SystemDate
,@JournalDate
,@UserName
,@LocName
,@Comment
,@Account
,@Total
,@Dept
,@FileName
,@Revaluation
,@StockCount
,@Actual
,@SetQtyZero
)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvAdjDocDT] (
@InvAdjDocDTTableType InvAdjDocDTTableType READONLY
,@InvAdjDocDTPrjTableType InvAdjDocDTPrjTableType READONLY
)
AS
BEGIN
INSERT INTO [dbo].[tblInvAdjDocDT] (
[strAdjDocID]
,[intLineNo]
,[strPartNumber]
,[decQty]
,[decUnitCost]
,[decAmount]
,[lngBinID]
,[decOnHand]
,[decValue]
,[decNewValue]
,[strFromUnit]
,[strConversionType]
,[decConversionFactor]
,[strStockUnit]
)
SELECT [AdjDocID]
,[LineNo]
,[PartNumber]
,[Qty]
,[UnitCost]
,[Amount]
,[BinID]
,[OnHand]
,[Value]
,[NewValue]
,[FromUnit]
,[ConversionType]
,[ConversionFactor]
,[StockUnit]
FROM @InvAdjDocDTTableType;
INSERT INTO [dbo].[tblInvAdjDocDTPrj] (
[strAdjDocID]
,[intLineNo]
,[strProjNumber]
,[strStage]
)
SELECT [AdjDocID]
,[LineNo]
,[ProjNumber]
,NULL
FROM @InvAdjDocDTPrjTableType
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetLatestNextLotNumber] (
	@InvSerialType AS NVARCHAR(100)
	,@PartNumber AS NVARCHAR(100)
	)
AS
BEGIN
	IF (
			len(@InvSerialType) = 0
			AND len(@PartNumber) > 0
			)
	BEGIN
		SET @InvSerialType = (
				SELECT TOP 1 tblInv.strInvSerialType
				FROM tblInv
				WHERE strPartNumber = @PartNumber
				)
	END

	SELECT intFormat AS [Format]
		,cast(intType AS INTEGER) AS [Type]
		,bitAutoCreateLotNumber AS IsAutoCreateLotNumber
		,intNextLotNumber AS NextLotNumber
	FROM tblInvSerialTypes
	WHERE strInvSerialType = @InvSerialType
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateInvSerialTypes] (
@NextLotNumber INT
,@InvSerialType VARCHAR(50)
)
AS
BEGIN
UPDATE tblInvSerialTypes
SET intNextLotNumber = @NextLotNumber
WHERE strInvSerialType = @InvSerialType
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SetInternalRequisitionProjects] (
@InvIntReqDocID NVARCHAR(100)
,@adjustmentNr NVARCHAR(100)
)
AS
BEGIN
INSERT INTO tblInvIssReqDocDTPrj (
strInvIssReqDocID
,intLineNo
,strProjNumber
)
SELECT @adjustmentNr
,intLineNo
,strProjNumber
FROM tblInvIntReqDocDTPrj
WHERE strInvIntReqDocID = @InvIntReqDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SetRequisitionIssued] (  
@IsCleared BIT  
,@InvIssReqDocID NVARCHAR(100)  
,@InvIntReqDocID NVARCHAR(100)  
)  
AS  
BEGIN  
UPDATE tblInvIntReqDoc  
SET bitCleared = @IsCleared  
,strInvIssReqDocID = @InvIssReqDocID  
WHERE strInvIntReqDocID = @InvIntReqDocID
END  
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCustomerCenterIdByEmpNumber] @EmpNumber AS NVARCHAR(300)
AS
BEGIN
SELECT uidCenterID
FROM tblEmployeeCenter
WHERE strEmpNumber = @EmpNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvIssReqDocHeader] (
@DocID NVARCHAR(100)
,@InvIssReqDocID BIGINT
,@InvTrackID BIGINT
,@JourID BIGINT
,@SystemDate SMALLDATETIME
,@JournalDate SMALLDATETIME
,@UserName NVARCHAR(40)
,@LocName NVARCHAR(20)
,@Comment NVARCHAR(100)
,@Account NVARCHAR(60)
,@Total MONEY
,@Dept INT
,@FileName NVARCHAR(500)
,@Revaluation BIT
,@StockCount BIT
,@Actual BIT
,@SetQtyZero BIT
,@EmpNumber NVARCHAR(100)
,@IssueType NVARCHAR(100)
,@ReasonCode NVARCHAR(100)
)
AS
BEGIN
INSERT INTO tblInvIssReqDoc
VALUES (
@DocID
,@InvIssReqDocID
,@InvTrackID
,@JourID
,@SystemDate
,@JournalDate
,@UserName
,@LocName
,@Comment
,@Account
,@Total
,@Dept
,@EmpNumber
,@IssueType
,@ReasonCode
,0
)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertIssReqDocDT] (
@InvIssReqDocDTTableType InvIssReqDocDTTableType READONLY
,@InvIssReqDocDTPrjTableType InvIssReqDocDTPrjTableType READONLY
)
AS
BEGIN
INSERT INTO tblInvIssReqDocDT
SELECT InvIssReqDocID
,[LineNo]
,PartNumber
,Qty
,UnitCost
,Amount
,ReqQty
,EmpNumber
,BudgetQty
,BudgetFrequency
,ReferenceNo
,NonBudgetRefNo
,FromUnit
,ConversionType
,ConversionFactor
,StockUnit
FROM @InvIssReqDocDTTableType
INSERT INTO [dbo].[tblInvIssReqDocDTPrj] (
[strInvIssReqDocID]
,[intLineNo]
,[strProjNumber]
,[strStage]
)
SELECT [InvIssReqDocID]
,[LineNo]
,[ProjNumber]
,NULL
FROM @InvIssReqDocDTPrjTableType
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InvAdjDocDTSerialInsert] (@InvAdjDocDTSerialData InvAdjDocDTSerialTableType READONLY)
AS
BEGIN
INSERT INTO [dbo].[tblInvAdjDocDTSerial] (
[strAdjDocID]
,[intLineNo]
,[strSerialNumber]
,[decQty]
,[strUnit]
,[bitExpiryDate]
,[dteExpiryDate]
,[intSerialLotType]
,[lngBinID]
)
SELECT [AdjDocID]
,[LineNo]
,[SerialNumber]
,[Qty]
,[Unit]
,[IsExpiryDate]
,[ExpiryDate]
,[SerialLotType]
,[BinID]
FROM @InvAdjDocDTSerialData
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InvIssReqDocDTSerialInsert] (@InvIssReqDocDTSerialData InvIssReqDocDTSerialTableType READONLY)
AS
BEGIN
INSERT INTO [dbo].[tblInvIssReqDocDTSerial] (
[strInvIssReqDocID]
,[intLineNo]
,[strSerialNumber]
,[decQty]
,[strUnit]
,[bitExpiryDate]
,[dteExpiryDate]
,[intSerialLotType]
,[lngBinID]
)
SELECT [InvIssReqDocID]
,[LineNo]
,[SerialNumber]
,[Qty] * (-1)
,[Unit]
,[IsExpiryDate]
,[ExpiryDate]
,[SerialLotType]
,[BinID]
FROM @InvIssReqDocDTSerialData
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvIntReqDoc] (
@IsAdjustment BIT
,@IntReqDocID BIGINT
,@InvIssReqDocID NVARCHAR(100)
,@TrfDocID BIGINT
,@InvIntReqDocID NVARCHAR(40)
,@SystemDate SMALLDATETIME
,@JournalDate SMALLDATETIME
,@UserName NVARCHAR(40)
,@LocName NVARCHAR(20)
,@Comment NVARCHAR(100)
,@Account NVARCHAR(60)
,@Total MONEY
,@Dept INT
,@EmpNumber NVARCHAR(500)
,@IssueType NVARCHAR(100)
,@ReasonCode NVARCHAR(100)
)
AS
BEGIN
IF (@IsAdjustment = 1)
BEGIN
UPDATE tblInvIntReqDoc
SET dteSystemDate = @SystemDate
,dteJournalDate = @JournalDate
,strUserName = @UserName
,strLocName = @LocName
,strComment = @Comment
,intAccount = @Account
,decTotal = @Total
,intDept = @Dept
,strEmpNumber = @EmpNumber
,strIssueType = @IssueType
,strReasonCode = @ReasonCode
WHERE strInvIntReqDocID = @InvIntReqDocID
END
ELSE
BEGIN
INSERT INTO tblInvIntReqDoc
VALUES (
@InvIntReqDocID
,@IntReqDocID
,@SystemDate
,@JournalDate
,@UserName
,@LocName
,@Comment
,@Account
,@Total
,@Dept
,0
,@InvIssReqDocID
,@EmpNumber
,@IssueType
,@ReasonCode
)
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvIntReqDocDT] (
@InvIntReqDocDTTableType InvIntReqDocDTTableType READONLY
,@InvIntReqDocDTPrjTableType InvIntReqDocDTPrjTableType READONLY
)
AS
BEGIN
INSERT INTO [dbo].[tblInvIntReqDocDT] (
[strInvIntReqDocID]
,[intLineNo]
,[strPartNumber]
,[decQty]
,[decUnitCost]
,[decAmount]
,[strEmpNumber]
,[strFromUnit]
,[strConversionType]
,[decConversionFactor]
,[strStockUnit]
)
SELECT [InvIntReqDocID]
,[LineNo]
,[PartNumber]
,[Qty]
,[UnitCost]
,[Amount]
,[EmpNumber]
,[FromUnit]
,[ConversionType]
,[ConversionFactor]
,[StockUnit]
FROM @InvIntReqDocDTTableType;
INSERT INTO [dbo].[tblInvIntReqDocDTPrj] (
[strInvIntReqDocID]
,[intLineNo]
,[strProjNumber]
,[strStage]
)
SELECT InvIntReqDocID
,[LineNo]
,[ProjNumber]
,NULL
FROM @InvIntReqDocDTPrjTableType
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteInvTrfOrdDocIDInfo] (@InvTrfOrdDocID NVARCHAR(100))
AS
BEGIN
DELETE
FROM tblInvTrfOrdDocDT
WHERE strInvTrfOrdDocID = @InvTrfOrdDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvTrfOrdDocDT] (@InvTrfOrdDocID NVARCHAR(100))
AS
BEGIN
SELECT DISTINCT tblInvTrfOrdDocDT.strPartNumber
,tblInvTrfOrdDoc.strLocName
FROM tblInvTrfOrdDoc
INNER JOIN tblInvTrfOrdDocDT ON tblInvTrfOrdDoc.strInvTrfOrdDocID = tblInvTrfOrdDocDT.strInvTrfOrdDocID
WHERE tblInvTrfOrdDoc.strInvTrfOrdDocID = @InvTrfOrdDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvIntReqDocDT] (@InvIntReqDocID NVARCHAR(100))
AS
BEGIN
SELECT DISTINCT tblInvIntReqDocDT.strPartNumber
,tblInvIntReqDoc.strLocName
FROM tblInvIntReqDoc
INNER JOIN tblInvIntReqDocDT ON tblInvIntReqDoc.strInvIntReqDocID = tblInvIntReqDocDT.strInvIntReqDocID
WHERE tblInvIntReqDoc.strInvIntReqDocID = @InvIntReqDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvTrfOrdDoc] (
@IsAdjustment BIT
,@InvTrfOrdDocID NVARCHAR(100)
,@TrfOrdDocID BIGINT
,@SystemDate SMALLDATETIME
,@JournalDate SMALLDATETIME
,@UserName NVARCHAR(40)
,@LocName NVARCHAR(20)
,@Comment NVARCHAR(100)
,@Account NVARCHAR(60)
,@Total MONEY
,@Dept INT
,@DelMethodCode NVARCHAR(100)
,@ToLocName NVARCHAR(20)
,@ReceivingDate SMALLDATETIME
,@TrfDocID NVARCHAR(100)
,@BTOReasonCode NVARCHAR(80)
)
AS
BEGIN
IF (@IsAdjustment = 1)
BEGIN
UPDATE tblInvTrfOrdDoc
SET dteSystemDate = @SystemDate
,dteJournalDate = @JournalDate
,strUserName = @UserName
,strLocName = @LocName
,strComment = @Comment
,intAccount = @Account
,decTotal = @Total
,intDept = @Dept
,strDelMethodCode = @DelMethodCode
,strToLocName = @ToLocName
,dteReceivingDate = @ReceivingDate
WHERE strInvTrfOrdDocID = @InvTrfOrdDocID
END
ELSE
BEGIN
INSERT INTO tblInvTrfOrdDoc
VALUES (
@InvTrfOrdDocID
,@TrfOrdDocID
,@SystemDate
,@JournalDate
,@UserName
,@LocName
,@Comment
,@Account
,@Total
,@Dept
,0
,@DelMethodCode
,@ToLocName
,@TrfDocID
,@ReceivingDate
,@BTOReasonCode
)
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InvTrfOrdDocDTInsert] (@InvTrfOrdDocDTTableType InvTrfOrdDocDTTableType READONLY)
AS
BEGIN
INSERT INTO [dbo].[tblInvTrfOrdDocDT] (
[strInvTrfOrdDocID]
,[intLineNo]
,[strPartNumber]
,[decQty]
,[decUnitCost]
,[decAmount]
,[decQtyRemaining]
,[strFromUnit]
,[strConversionType]
,[decConversionFactor]
,[strStockUnit]
)
SELECT [InvTrfOrdDocID]
,[LineNo]
,[PartNumber]
,[Qty]
,[UnitCost]
,[Amount]
,[QtyRemaining]
,[FromUnit]
,[ConversionType]
,[ConversionFactor]
,[StockUnit]
FROM @InvTrfOrdDocDTTableType
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteRequisitionInfo] (@InvIntReqDocID NVARCHAR(100))
AS
BEGIN
DELETE
FROM tblInvIntReqDocDT
WHERE strInvIntReqDocID = @InvIntReqDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvAdjustGridDetails] (
	@Part NVARCHAR(100)
	,@BarCode NVARCHAR(100)
	,@Location NVARCHAR(20)
	,@ToLocation NVARCHAR(20)
	,@Unit NVARCHAR(20) = ''
	)
AS
BEGIN
	SELECT tblInv.strPartNumber AS PartNumber
		,tblInv.strDesc AS Description
		,tblInv.decLastPPUnit AS LastPPUnit
		,tblInv.decBuyToStock AS BuyToStock
		,tblInv.bitInvSerialType AS IsInvSerialType
		,ISNULL(ext2.strLocName, 0) AS Location
		,ISNULL(ext2.decOnHand, 0) AS OnHand
		,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
		,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimensionExist
		,ISNULL(ext2.decAvail, 0) AS Avail
		,ISNULL(ext2.decOnHand, 0) AS OnHand
		,ISNULL(ext2.decOnOrder, 0) AS OnOrder
		,ISNULL(ext1.decMaxLevel, 0) AS MaxLevel
		,ISNULL(ext2.decValue, 0) AS Value
		,ISNULL(tblInvUOMs.strFromUnit, tblInv.strStockUnit) AS StockUnit
		,ISNULL(CASE tblInvUOMs.strConversionType
				WHEN 'Multiply'
					THEN tblInvUOMs.decConversionFactor
				ELSE 1 / tblInvUOMs.decConversionFactor
				END, 1) AS ConversionFactor
		,ISNULL(tblInvUOMs.strConversionType, 'Multiply') AS ConversionType
		,ISNULL(tblInvUOMs.decConversionFactor, 1) AS ConversionFactorActual
		,cast(tblInv.intType AS INT) AS Type
		,tblInv.strStockUnit AS StockUnitDefault
		,ext1.decValue AS SumValue
	FROM tblInv
	INNER JOIN tblInvExt ext1 ON tblInv.strPartNumber = ext1.strPartNumber
	INNER JOIN tblInvExt ext2 ON tblInv.strPartNumber = ext2.strPartNumber
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
		AND tblInvUOMs.bitInactive = 0
		AND tblInvUOMs.strFromUnit = (
			CASE LEN(@Unit)
				WHEN 0
					THEN (
							SELECT TOP 1 Invsub.strStockUnit
							FROM tblInv Invsub
							WHERE Invsub.strPartNumber = @Part
							)
				ELSE @Unit
				END
			)
	WHERE (
			tblInv.strPartNumber = @Part
			OR tblInv.strBarCode = @BarCode
			OR tblInv.strBarCode2 = @BarCode
			)
		AND tblInv.intType = 1
		AND tblInv.bitInactive = 0
		AND ext1.bitInactive = 0
		AND ext1.strLocName = @Location
		AND ext2.strLocName = @Location
END
GO

----------------------------------------------------
Create PROCEDURE [dbo].[GetNextDocNumberInvAdjustments]
(
@AdjustmentType AS INT
)
AS
BEGIN
IF(@AdjustmentType = 2)
BEGIN
SELECT ISNULL(MAX(intIntReqDocID), 0) + 1 FROM tblInvIntReqDoc;
END
ELSE IF(@AdjustmentType = 3)
BEGIN
SELECT ISNULL(MAX(intInvIssReqDocID), 0) + 1 FROM tblInvIssReqDoc
END
ELSE IF(@AdjustmentType = 4)
BEGIN
SELECT ISNULL(MAX(intTrfOrdDocID), 0) + 1 FROM tblInvTrfOrdDoc
END
ELSE
BEGIN
SELECT ISNULL(MAX(intAdjDocID), 0) + 1 FROM tblInvAdjDoc
END
END
GO

----------------------------------------------------
--Account Payable Module
/****** Object:  StoredProcedure [dbo].[prBudgetAnalysis_Select]    Script Date: 06-04-2022 09:21:06 ******/

CREATE PROCEDURE [dbo].[prBudgetAnalysis_Select]
(
	@periodStartDate DATETIME,
	@periodEndDate DATETIME
)

AS
BEGIN
							
	DECLARE
	@tempDate DATETIME,
	@month INT,
	@totalMonths NVARCHAR(MAX) = ' (',
	@sqlFinal NVARCHAR(MAX) = '',
	@sqlItems NVARCHAR(MAX) = '',
	@sqlInvItems NVARCHAR(MAX) = '',
	@sqlGeneralLedgerItems NVARCHAR(MAX) = '',
	@sqlSpent NVARCHAR(MAX) = '',
	@sqlCommitted NVARCHAR(MAX) = '',
	@sqlRequired NVARCHAR(MAX) = ''

	SET @tempDate = @periodStartDate

	--Total Month Budget for Inventory Items
	WHILE @tempDate <= @periodEndDate
	BEGIN

		SET @month = (SELECT DATEPART(MONTH, @tempDate))
		
		IF @month = 1 
			SET @totalMonths = @totalMonths + 'tblInvPurchaseTarget.decPeriod11'
		ELSE IF @month = 2 
			SET @totalMonths = @totalMonths + 'tblInvPurchaseTarget.decPeriod12'
		ELSE IF @month = 3  
			SET @totalMonths = @totalMonths + 'tblInvPurchaseTarget.decPeriod1'
		ELSE IF @month = 4  
			SET @totalMonths = @totalMonths + 'tblInvPurchaseTarget.decPeriod2'
		ELSE IF @month = 5  
			SET @totalMonths = @totalMonths + 'tblInvPurchaseTarget.decPeriod3'
		ELSE IF @month = 6  
			SET @totalMonths = @totalMonths + 'tblInvPurchaseTarget.decPeriod4'
		ELSE IF @month = 7  
			SET @totalMonths = @totalMonths + 'tblInvPurchaseTarget.decPeriod5'
		ELSE IF @month = 8  
			SET @totalMonths = @totalMonths + 'tblInvPurchaseTarget.decPeriod6'
		ELSE IF @month = 9  
			SET @totalMonths = @totalMonths + 'tblInvPurchaseTarget.decPeriod7'
		ELSE IF @month = 10 
			SET @totalMonths = @totalMonths + 'tblInvPurchaseTarget.decPeriod8'
		ELSE IF @month = 11 
			SET @totalMonths = @totalMonths + 'tblInvPurchaseTarget.decPeriod9'
		ELSE IF @month = 12 
			SET @totalMonths = @totalMonths + 'tblInvPurchaseTarget.decPeriod10'
				
		SET @totalMonths = @totalMonths + ' + '

		SET @tempDate = DATEADD(MONTH, 1, DATEFROMPARTS(DATEPART(YEAR, @tempDate), DATEPART(MONTH, @tempDate), 1))
	END
	
	IF LEN(@totalMonths) >= 1	
	BEGIN
		SET @totalMonths = LEFT(@totalMonths, LEN(@totalMonths) - 1)
		
		SEt @sqlInvItems = 'SELECT tblInv.strPartNumber, tblInv.strDesc,' + @totalMonths + ') AS decBudget
							FROM tblInvPurchaseTarget
							INNER JOIN 
							tblInv ON tblInvPurchaseTarget.strPartNumber = tblInv.strPartNumber
							WHERE '+@totalMonths+') > 0'
	END		

	--Total Month Budget for General Ledger
	SET @tempDate = @periodStartDate
	SET @totalMonths = ' ('
	WHILE @tempDate <= @periodEndDate
	BEGIN

		SET @month = (SELECT DATEPART(MONTH, @tempDate))
		
		IF @month = 1 
			SET @totalMonths = @totalMonths + 'tblAcctBudgets.decPeriod11'
		ELSE IF @month = 2 
			SET @totalMonths = @totalMonths + 'tblAcctBudgets.decPeriod12'
		ELSE IF @month = 3  
			SET @totalMonths = @totalMonths + 'tblAcctBudgets.decPeriod1'
		ELSE IF @month = 4  
			SET @totalMonths = @totalMonths + 'tblAcctBudgets.decPeriod2'
		ELSE IF @month = 5  
			SET @totalMonths = @totalMonths + 'tblAcctBudgets.decPeriod3'
		ELSE IF @month = 6  
			SET @totalMonths = @totalMonths + 'tblAcctBudgets.decPeriod4'
		ELSE IF @month = 7  
			SET @totalMonths = @totalMonths + 'tblAcctBudgets.decPeriod5'
		ELSE IF @month = 8  
			SET @totalMonths = @totalMonths + 'tblAcctBudgets.decPeriod6'
		ELSE IF @month = 9  
			SET @totalMonths = @totalMonths + 'tblAcctBudgets.decPeriod7'
		ELSE IF @month = 10 
			SET @totalMonths = @totalMonths + 'tblAcctBudgets.decPeriod8'
		ELSE IF @month = 11 
			SET @totalMonths = @totalMonths + 'tblAcctBudgets.decPeriod9'
		ELSE IF @month = 12 
			SET @totalMonths = @totalMonths + 'tblAcctBudgets.decPeriod10'
				
		SET @totalMonths = @totalMonths + ' + '

		SET @tempDate = DATEADD(MONTH, 1, DATEFROMPARTS(DATEPART(YEAR, @tempDate), DATEPART(MONTH, @tempDate), 1))
	END
	
	IF LEN(@totalMonths) >= 1	
	BEGIN
		SET @totalMonths = left(@totalMonths, LEN(@totalMonths) - 1)
		
		SET @sqlGeneralLedgerItems = 'SELECT tblInv.strPartNumber, tblInv.strDesc,' + @totalMonths + ') AS decBudget
									FROM tblAcctBudgets
									INNER JOIN 
									tblInv ON tblAcctBudgets.intGLNumber = tblInv.intExpAcct
									WHERE '+@totalMonths+') > 0'
	END

	SET @sqlItems = @sqlInvItems + ' UNION ' + @sqlGeneralLedgerItems
	
	SET @sqlFinal = 'SELECT tblItems.strPartNumber, tblItems.strDesc, ISNULL(tblItems.decBudget,0) AS decBudget, 
					ISNULL(decSpent,0) AS decSpent, ISNULL(decCommitted,0) AS decCommitted,  
					ISNULL(decBudget,0) - ISNULL(decSpent,0) - ISNULL(decCommitted,0) AS decAvailable, 
					ISNULL(tblRequired.decRequired, 0) AS decRequired
					FROM ('

	SET @sqlFinal = @sqlFinal + @sqlItems

	SET @sqlFinal = @sqlFinal + ') AS tblItems
								LEFT JOIN
								('

	SET @sqlSpent = 'SELECT tblInvTrackingDT.strPartNumber, ISNULL(SUM(tblInvTrackingDT.decValue), 0) AS decSpent
					FROM tblInvTracking
					INNER JOIN
					tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
					WHERE dteJournalDate BETWEEN ''' + CAST(@periodStartDate AS NVARCHAR(MAX)) + ''' AND ''' + CAST(@periodEndDate AS NVARCHAR(MAX)) + ''' AND intModule = 1
					GROUP BY tblInvTrackingDT.strPartNumber'

	SET @sqlFinal = @sqlFinal + @sqlSpent

	SET @sqlFinal = @sqlFinal + ') AS tblSpent ON tblItems.strPartNumber = tblSpent.strPartNumber
								LEFT JOIN
								('

	SET @sqlCommitted = 'SELECT tblOrderDocPDT.strPartNumber, ISNULL(SUM(decBuyQtyRemain * decPriceEaExc), 0) AS decCommitted
						FROM tblOrderDocPDT
						INNER JOIN
						tblOrderDocP ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
						WHERE dteJournalDate BETWEEN ''' + CAST(@periodStartDate AS NVARCHAR(MAX)) + ''' AND ''' + CAST(@periodEndDate AS NVARCHAR(MAX)) + ''' AND tblOrderDocP.bitCleared = 0 AND tblOrderDocP.intDocType = 1
						GROUP BY tblOrderDocPDT.strPartNumber'

	SET @sqlFinal = @sqlFinal + @sqlCommitted

	SET @sqlFinal = @sqlFinal + ') AS tblCommitted ON tblItems.strPartNumber = tblCommitted.strPartNumber
								LEFT JOIN
								('

	SET @sqlRequired = 'SELECT tblOrderDocPDT.strPartNumber, ISNULL(SUM(decBuyQtyRemain * decPriceEaExc), 0) AS decRequired
						FROM tblOrderDocPDT
						INNER JOIN
						tblOrderDocP ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
						WHERE dteJournalDate BETWEEN ''' + CAST(@periodStartDate AS NVARCHAR(MAX)) + ''' AND ''' + CAST(@periodEndDate AS NVARCHAR(MAX)) + ''' AND tblOrderDocP.bitCleared = 0 AND tblOrderDocP.intDocType = 2
						GROUP BY tblOrderDocPDT.strPartNumber'
						
	SET @sqlFinal = @sqlFinal + @sqlRequired

	SET @sqlFinal = @sqlFinal + ') AS tblRequired ON tblItems.strPartNumber = tblRequired.strPartNumber
								ORDER BY tblItems.strPartNumber'

	EXEC(@sqlFinal)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptBulkReqQuotationServiceGird]
-- Add the parameters for the stored procedure here
@chkInactiveItems  bit = Null,
@blnBPToolsMode bit NULL,
@PL_InvSortDescription bit NULL,
@SQUserName varchar(Max) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
IF(@chkInactiveItems = 0)
BEGIN
SET @sql = 'SELECT strPartNumber, strDesc, intType FROM tblInv WHERE (intType = 4) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0 '
END
ELSE
BEGIN
SET @sql = 'SELECT strPartNumber, strDesc, intType FROM tblInv WHERE (intType = 4) AND tblInv.bitOtherCmp = 0 '
END
IF(@blnBPToolsMode = 0)
BEGIN			
IF Charindex('WHERE', @sql) > 0
BEGIN
SET @sql = @sql + ' AND '
END
ELSE
BEGIN
SET @sql = @sql + ' WHERE '
END
SET @sql = @sql + '  strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = '''+@SQUserName+''')) '
END
IF(@PL_InvSortDescription = 0)
BEGIN
SET @sql += ' ORDER BY strPartNumber '
END
ELSE
BEGIN
SET @sql += ' ORDER BY strDesc '
END
PRINT(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptBulkReqQuotationAllGird]
-- Add the parameters for the stored procedure here
@chkInactiveItems  bit = Null,
@blnBPToolsMode bit NULL,
@PL_InvSortDescription bit NULL,
@SQUserName varchar(Max) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
IF(@chkInactiveItems = 0)
BEGIN
SET @sql = ' SELECT strPartNumber, strDesc, intType FROM tblInv WHERE (bitInactive = 0) AND (intType <> 5) AND tblInv.bitOtherCmp = 0 '
END
ELSE
BEGIN
SET @sql = 'SELECT strPartNumber, strDesc, intType FROM tblInv WHERE (intType <> 5) AND tblInv.bitOtherCmp = 0 '
END
IF(@blnBPToolsMode = 0)
BEGIN			
IF Charindex('WHERE', @sql) > 0
BEGIN
SET @sql = @sql + ' AND '
END
ELSE
BEGIN
SET @sql = @sql + ' WHERE '
END
SET @sql = @sql + ' strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = '''+@SQUserName+''')) '
END
IF(@PL_InvSortDescription = 0)
BEGIN
SET @sql += ' ORDER BY strPartNumber '
END
ELSE
BEGIN
SET @sql += ' ORDER BY strDesc '
END
PRINT(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptBulkReqQuotationItemsGird]
-- Add the parameters for the stored procedure here
@chkInactiveItems  bit = Null,
@blnBPToolsMode bit NULL,
@PL_InvSortDescription bit NULL,
@SQUserName varchar(Max) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
IF(@chkInactiveItems = 0)
BEGIN
SET @sql = 'SELECT strPartNumber, strDesc, intType FROM tblInv WHERE (intType = 1) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0 '
END
ELSE
BEGIN
SET @sql = 'SELECT strPartNumber, strDesc, intType FROM tblInv WHERE (intType = 1) AND tblInv.bitOtherCmp = 0 '
END
IF(@blnBPToolsMode = 0)
BEGIN			
IF Charindex('WHERE', @sql) > 0
BEGIN
SET @sql = @sql + ' AND '
END
ELSE
BEGIN
SET @sql = @sql + ' WHERE '
END
SET @sql = @sql + ' strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = '''+@SQUserName+''')) '
END
IF(@PL_InvSortDescription = 0)
BEGIN
SET @sql += ' ORDER BY strPartNumber '
END
ELSE
BEGIN
SET @sql += ' ORDER BY strDesc '
END
PRINT(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptBulkReqQuotationCategoryGird]
-- Add the parameters for the stored procedure here
@chkInactiveItems  bit = Null,
@blnBPToolsMode bit NULL,
@SQUserName varchar(Max) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
IF(@chkInactiveItems = 0)
BEGIN
SET @sql = ' SELECT strCategory As strPartNumber, strDesc FROM tblInvCat WHERE (bitInactive = 0) '
END
ELSE
BEGIN
SET @sql = 'SELECT strCategory As strPartNumber, strDesc FROM tblInvCat '
END
IF(@blnBPToolsMode = 0)
BEGIN			
IF Charindex('WHERE', @sql) > 0
BEGIN
SET @sql = @sql + ' AND '
END
ELSE
BEGIN
SET @sql = @sql + ' WHERE '
END
SET @sql = @sql + ' strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = '''+@SQUserName+''')) '
END
SET @sql += ' ORDER BY strCategory'
PRINT(@sql)
EXEC(@sql)
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[RptAPVendorTranGridLoad] @SQSearchBy VARCHAR(MAX) = NULL
	,@optSearch BIT = NULL
	,@chkInactive BIT = NULL
	,@SQUserName VARCHAR(MAX) = NULL
	,@blnBPToolsMode BIT = 0
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @sql VARCHAR(max) = ''

	IF (@optSearch = 1)
	BEGIN
		IF (LEN(@SQSearchBy) > 2)
		BEGIN
			IF (@chkInactive = 1)
			BEGIN
				SET @sql = 'SELECT strVendName, strVendDesc FROM tblVendors WHERE (strVendName LIKE ''%' + @SQSearchBy + '%'' OR strVendDesc LIKE ''%' + @SQSearchBy + '%'') '
			END
			ELSE
			BEGIN
				SET @sql = 'SELECT strVendName, strVendDesc FROM tblVendors WHERE bitInactive = 0 AND (strVendName LIKE ''%' + @SQSearchBy + '%'' OR strVendDesc LIKE ''%' + @SQSearchBy + '%'')'
			END
		END
		ELSE
		BEGIN
			IF (@chkInactive = 1)
			BEGIN
				SET @sql = 'SELECT strVendName, strVendDesc FROM tblVendors WHERE (strVendName LIKE  ''%'' OR strVendDesc LIKE ''%'') '
			END
			ELSE
			BEGIN
				SET @sql = 'SELECT strVendName, strVendDesc FROM tblVendors WHERE bitInactive = 0 AND (strVendName LIKE  ''%'' OR strVendDesc LIKE ''%'')'
			END
		END
	END
	ELSE
	BEGIN
		IF (@chkInactive = 1)
		BEGIN
			SET @sql = ' SELECT strVendName, strVendDesc FROM tblVendors '
		END
		ELSE
		BEGIN
			SET @sql = ' SELECT strVendName, strVendDesc FROM tblVendors WHERE bitInactive = 0 '
		END
	END

	IF (@blnBPToolsMode = 0)
	BEGIN
		IF CHARINDEX('WHERE', @sql) > 0
		BEGIN
			SET @sql = @sql + ' AND '
		END
		ELSE
		BEGIN
			SET @sql = @sql + ' WHERE '
		END

		SET @sql = @sql + ' strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = ''' + @SQUserName + '''))  ORDER BY strVendName'
	END
END

EXEC (@sql) 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptAPVendorTranReport1]
-- Add the parameters for the stored procedure here
@SQVendorNumber VARCHAR(MAX) 
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT strCurrency, strCurrName 
FROM tblCurrency 
WHERE strCurrency IN 
(SELECT strCurrency FROM tblVendors 
WHERE strVendName = @SQVendorNumber)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptAPVendorTranReport2]
-- Add the parameters for the stored procedure here
@SQVendorNumber VARCHAR(MAX) ,
@SQintTransType int,
@SQStart DateTime , 
@SQEnd DateTime
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT CASE WHEN T1.intTransType = @SQintTransType THEN ISNULL((SELECT JE.strComment FROM tblJournalEntryDoc JE WHERE JE.strJEDocID = T1.strJEDocID), '') ELSE T1.strInvDepNumber END AS strInvDepNumber, 
CASE WHEN T1.intTransType = @SQintTransType THEN ISNULL(T1.strJEDocID, '') ELSE ISNULL(T1.strInvPDocID, '') END ASinvoice, T2.dteJournalDate AS DTTransDate, 
T1.intTransType AS TransType, T2.intTransType, T2.decAmount, T2.decAmountF, T1.dteDueDate, T2.lngVendPayID 
FROM tblVendTrans T1 
INNER JOIN tblVendTransDT T2 ON T1.lngVendTrID = T2.lngVendTrID 
WHERE T1.strVendName = @SQVendorNumber 
AND T2.bitReversed = 0 
AND ISNULL(T2.lngVendPayID,0) = 0 
AND T1.dteJournalDate BETWEEN @SQStart AND @SQEnd
UNION ALL 
SELECT ISNULL(T3.strComment, '') AS strInvDepNumber, ISNULL(T3.strSource, '') AS invoice, T3.dteJournalDate ASDTTransDate, 
1 AS TransType, 2 AS intTransType, 
SUM(ISNULL(T4.decAmount,0)) AS decAmount, SUM(ISNULL(T4.decAmountF,0)) AS decAmountF, 
T3.dteJournalDate AS dteDueDate, T3.lngVendPayID 
FROM tblVendPay T3 
INNER JOIN tblVendTransDT T4 ON T3.lngVendPayID = T4.lngVendPayID 
INNER JOIN tblVendTrans T5 ON T4.lngVendTrID = T5.lngVendTrID 
WHERE T3.strVendName = @SQVendorNumber 
AND T3.bitReversed = 0 
AND T3.dteJournalDate BETWEEN @SQStart AND @SQEnd 
AND (T4.bitReversed = 0) 
GROUP BY ISNULL(T3.strSource, ''), T3.dteJournalDate, T3.dteJournalDate, T3.lngVendPayID, ISNULL(T3.strComment, '') 
HAVING SUM(ISNULL(T4.decAmount, 0)) <> 0 
OR SUM(ISNULL(T4.decAmountF, 0)) <> 0 
ORDER BY DTTransDate, ASinvoice
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptAPVendorTranReport3]
-- Add the parameters for the stored procedure here
@SQVendorNumber VARCHAR(MAX) ,
@SQintTransType int,
@SQStart DateTime 
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT CASE ISNULL(T3.strSource,'') WHEN '' THEN T1.strInvDepNumber ELSE T3.strSource END AS strInvDepNumber, 
CASE ISNULL(T3.strSource,'') WHEN '' THEN CASE WHEN T1.intTransType = @SQintTransType THEN ISNULL(T1.strJEDocID, '')ELSE ISNULL(T1.strInvPDocID, '') END ELSE T3.strSource END AS invoice, T2.dteJournalDate AS DTTransDate, 
T1.intTransType AS TransType, T2.intTransType, T2.decAmount, T2.decAmountF, T1.dteDueDate 
FROM tblVendTrans T1 
INNER JOIN tblVendTransDT T2 ON T1.lngVendTrID = T2.lngVendTrID 
LEFT JOIN tblVendPay T3 ON T2.lngVendPayID = T3.lngVendPayID 
WHERE T1.strVendName = @SQVendorNumber 
AND T2.bitReversed = 0 
AND T2.dteJournalDate < @SQStart
ORDER BY T1.dteJournalDate, invoice
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARCallSheetAllCustomers]
-- Add the parameters for the stored procedure here
--@SQTxtSearch   VARCHAR(MAX) = NULL,
--@SQOptSearch BIT = NULL,
@SQSearchBy VARCHAR(MAX) = NULL,
@SQUserName VARCHAR(MAX) = NULL,
@SQBitCondition BIT =NULL
AS
BEGIN
SET nocount ON;
IF(@SQBitCondition = 1)
BEGIN
SELECT strCustName, strCustDesc FROM tblCustomers WHERE (@SQSearchBy IS NULL OR @SQSearchBy = '' OR 
   (strCustName LIKE '%' + @SQSearchBy + '%' OR strCustDesc LIKE '%' + @SQSearchBy + '%')) AND  strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) ORDER BY strCustName
END
ELSE
BEGIN
SELECT strCustName, strCustDesc FROM tblCustomers WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) ORDER BY strCustName
END				
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARCallSheetCategory]
-- Add the parameters for the stored procedure here
--@SQTxtSearch   VARCHAR(MAX) = NULL,
--@SQOptSearch BIT = NULL,
@SQSearchBy VARCHAR(MAX) = NULL,
@SQUserName VARCHAR(MAX) = NULL,
@SQBitCondition BIT =NULL
AS
BEGIN
SET nocount ON;
IF(@SQBitCondition = 1)
BEGIN
SELECT strCustCategory, strDesc FROM tblCustomerCat WHERE (strCustCategory LIKE +'%'+ @SQSearchBy +'%' OR strDesc LIKE+'%'+ @SQSearchBy +'%') AND bitInactive = 0 AND  strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) ORDER BY strCustCategory
END
ELSE
BEGIN
SELECT strCustCategory, strDesc FROM tblCustomerCat WHERE  strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)) ORDER BY strCustCategory
END				
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARCallSheetDeptartments]
-- Add the parameters for the stored procedure here
--@SQTxtSearch   VARCHAR(MAX) = NULL,
--@SQOptSearch BIT = NULL,
@SQSearchBy VARCHAR(MAX) = NULL,
@SQBitCondition BIT =NULL
AS
BEGIN
SET nocount ON;
IF(@SQBitCondition = 1)
BEGIN
SELECT intDept, strDesc FROM tblDepartments WHERE (intDept LIKE +'%'+@SQSearchBy+'%') OR (strDesc LIKE +'%'+@SQSearchBy+'%') ORDER BY intDept
END
ELSE
BEGIN
SELECT intDept, strDesc FROM tblDepartments ORDER BY intDept
END				
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARCallSheetSalesPersons]
-- Add the parameters for the stored procedure here
--@SQTxtSearch   VARCHAR(MAX) = NULL,
--@SQOptSearch BIT = NULL,
@SQSearchBy VARCHAR(MAX) = NULL,
@SQBitCondition BIT =NULL
AS
BEGIN
SET nocount ON;
IF(@SQBitCondition = 1)
BEGIN
SELECT strSalesName FROM tblSalesPersons WHERE strSalesName LIKE +'%'+@SQSearchBy+'%' AND bitIsWorkshopTechnician = 0 ORDER BY strSalesName
END
ELSE
BEGIN
SELECT strSalesName FROM tblSalesPersons WHERE bitIsWorkshopTechnician = 0 ORDER BY strSalesName
END				
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ExecuteStetement]
-- Add the parameters for the stored procedure here
@sqlquery varchar(MAX) = 'SELECT 1'
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
PRINT @sqlquery
EXEC (@sqlquery)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARCallSheetPeriod]
AS
BEGIN
SET nocount ON;
SELECT intRecPeriod1, intRecPeriod2, intRecPeriod3 FROM tblCoOpts
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARCallSheetFilterByCategory]
@SQOptNetValue   BIT = NULL,
@SQOptAll BIT = NULL,
@SQUserName  VARCHAR(50) = NULL,
@SQAsAt    DATE = NULL,
@SQPaidIn  DATE = NULL,
@SQintTransType int = NULL,
@SQOldItem VARCHAR(MAX) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF(@SQOptNetValue = 1)
BEGIN
SET @sql = 'SELECT MASTERTABLE.strCustName As CustName, tblCustomers.strCustDesc AS CustDesc, tblCustomers.strTerm AS Term, MASTERTABLE.strInvDepNumber AS InvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END AS DocID, MASTERTABLE.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, Convert( TINYINT ,1 ) AS intTransType, tblCustTransDT.lngCustTrID AS CustTrID, SUM(tblCustTransDT.decAmount) AS decAmount , MASTERTABLE.dteDueDate AS DueDate, tblCustomers.strPhone AS Phone, tblCustomers.strCellPhone AS CellPhone, tblCustomers.strFax AS Fax, tblCustomers.strEmail AS Email, tblCustomers.strContact As Contact, tblCustomers.bitCreditCtrl AS CreditCtrl, tblCustomers.decCreditLimit AS CreditLimit, tblCustomers.bitCreditHold AS CreditHold, tblCustomers.decOpenOrders AS OpenOrders, tblCustomers.decYTDPurch AS YTDPurch, ISNULL(tblCustomers.strCustCategory,'''') AS strCustCategory, (SELECT ISNULL(strCNReasonCode, '''') AS strCNReasonCode  FROM tblInvoiceDoc	WHERE strInvDocID = MASTERTABLE.strInvDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE '
END
ELSE 
BEGIN
SET @sql = 'SELECT MASTERTABLE.strCustName As CustName, tblCustomers.strCustDesc AS CustDesc, tblCustomers.strTerm AS Term, MASTERTABLE.strInvDepNumber AS InvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END AS DocID, tblCustTransDT.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType AS intTransType, tblCustTransDT.lngCustTrID AS CustTrID, tblCustTransDT.decAmount AS decAmount, MASTERTABLE.dteDueDate AS DueDate, tblCustomers.strPhone AS Phone, tblCustomers.strCellPhone AS CellPhone, tblCustomers.strFax AS Fax, tblCustomers.strEmail AS Email, tblCustomers.strContact AS Contact, tblCustomers.bitCreditCtrl AS CreditCtrl, tblCustomers.decCreditLimit AS CreditLimit, tblCustomers.bitCreditHold AS CreditHold, tblCustomers.decOpenOrders AS OpenOrders, tblCustomers.decYTDPurch AS YTDPurch, ISNULL(tblCustomers.strCustCategory,'''') AS strCustCategory, (SELECT ISNULL(strCNReasonCode, '''') AS strCNReasonCode  FROM tblInvoiceDoc	WHERE strInvDocID = MASTERTABLE.strInvDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '
END
PRINT 'Fist IF Over '+@sql
--197
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+' ) AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND'
END
PRINT 'Second IF Over '+@sql
--214
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) '
--215,216,217,218 mix
IF(@SQOptNetValue = 1)
BEGIN
SET @sql += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, MASTERTABLE.strJEDocID, MASTERTABLE.strInvDocID, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, tblCustomers.strCustCategory  UNION SELECT MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType AS TransType, Convert( TINYINT ,1 ) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, ISNULL(tblCustomers.strCustCategory,'''') AS strCustCategory,(SELECT ISNULL(strCNReasonCode, '''') FROM tblOrderDoc WHERE strOrdDocID = MASTERTABLE.strOrdDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
--237,238
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))  GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, tblCustomers.strCustCategory,strOrdDocID '
PRINT 'Third inner IF Over '+@sql
END	
--239
ELSE
BEGIN
--240,241
SET @sql += ' UNION SELECT MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END, tblCustTransDT.dteJournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, ISNULL(tblCustomers.strCustCategory,'''') AS strCustCategory, (SELECT ISNULL(strCNReasonCode, '''') FROM tblOrderDoc WHERE strOrdDocID = MASTERTABLE.strOrdDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND '
END
ELSE
--254,256
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))  ORDER BY MASTERTABLE.strCustName, tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType '
PRINT 'Third else Over '+@sql
END
--select @sql
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARCallSheetFilterByCategoryR]
@SQOptNetValue   BIT = NULL,
@SQOptAll BIT = NULL,
@SQUserName  VARCHAR(MAX) = NULL,
@SQAsAt    DATE = NULL,
@SQPaidIn  DATE = NULL,
@SQintTransType int = NULL,
@SQOldItem VARCHAR(MAX) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF(@SQOptNetValue = 1)
BEGIN
SET @sql = 'SELECT MASTERTABLE.strCustName AS CustName, tblCustomers.strCustDesc AS CustDesc, tblCustomers.strTerm AS Term, MASTERTABLE.strInvDepNumber AS InvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END AS DocID, MASTERTABLE.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, Convert(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID AS CustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteDueDate AS DueDate, tblCustomers.strPhone AS Phone, tblCustomers.strCellPhone AS CellPhone, tblCustomers.strFax AS Fax, tblCustomers.strEmail AS Email, tblCustomers.strContact AS Contact, tblCustomers.bitCreditCtrl AS CreditCtrl, tblCustomers.decCreditLimit AS CreditLimit, tblCustomers.bitCreditHold AS CreditHold, tblCustomers.decOpenOrders AS OpenOrders, tblCustomers.decYTDPurch AS YTDPurch, ISNULL(tblCustomers.strCustCategory,'''') AS strCustCategory, (SELECT ISNULL(strCNReasonCode, '''') AS strCNReasonCode FROM tblInvoiceDoc	WHERE strInvDocID = MASTERTABLE.strInvDocID) AS strCNReasonCode   ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE '
END
ELSE
BEGIN
SET @sql = 'SELECT MASTERTABLE.strCustName AS CustName , tblCustomers.strCustDesc CustDesc, tblCustomers.strTerm AS Term, MASTERTABLE.strInvDepNumber AS InvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END AS DocID, tblCustTransDT.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType AS intTransType, tblCustTransDT.lngCustTrID AS CustTrID, tblCustTransDT.decAmount AS decAmount, MASTERTABLE.dteDueDate AS DueDate, tblCustomers.strPhone AS Phone, tblCustomers.strCellPhone AS CellPhone, tblCustomers.strFax AS Fax, tblCustomers.strEmail AS Email, tblCustomers.strContact AS Contact, tblCustomers.bitCreditCtrl AS CreditCtrl, tblCustomers.decCreditLimit AS CreditLimit, tblCustomers.bitCreditHold AS CreditHold, tblCustomers.decOpenOrders AS OpenOrders, tblCustomers.decYTDPurch AS YTDPurch, ISNULL(tblCustomers.strCustCategory,'''') AS strCustCategory, (SELECT ISNULL(strCNReasonCode, '''') AS strCNReasonCode FROM tblInvoiceDoc	WHERE strInvDocID = MASTERTABLE.strInvDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '
END
--710
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
--727
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) '
--728,729,730,731
IF(@SQOptNetValue = 1)
BEGIN
SET @sql += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, tblCustomers.strCustCategory,strInvDocID UNION SELECT MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType AS TransType, Convert(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, ISNULL(tblCustomers.strCustCategory,'''') AS strCustCategory,(SELECT ISNULL(strCNReasonCode, '''') FROM tblOrderDoc AS MASTERTABLE WHERE strOrdDocID = MASTERTABLE.strOrdDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE '
--733
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
--750,751,752,753
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))  GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, tblCustomers.strCustCategory,strOrdDocID UNION  SELECT MASTERTABLE.strCustName,tblCustomers.strCustDesc,tblCustomers.strTerm, MASTERTABLE.strReference AS strInvDepNumber,MASTERTABLE.strOrdDocID,MASTERTABLE.dteJournalDate, Convert(TINYINT, 1) AS TransType, Convert(TINYINT, 1) AS intTransType,0 AS lngCustTrID,MASTERTABLE.decTotal,MASTERTABLE.dteRequired,tblCustomers.strPhone,tblCustomers.strCellPhone,tblCustomers.strFax,tblCustomers.strEmail,tblCustomers.strContact,tblCustomers.bitCreditCtrl,tblCustomers.decCreditLimit,tblCustomers.bitCreditHold,tblCustomers.decOpenOrders,tblCustomers.decYTDPurch,ISNULL(tblCustomers.strCustCategory, '''') AS strCustCategory,ISNULL(MASTERTABLE.strCNReasonCode, '''') AS strCNReasonCode ,'''' ,'''' FROM tblOrderDoc AS MASTERTABLE INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE '
IF(@SQOptAll = 0)
BEGIN 
SET @sql += ' ('+@SQOldItem+') AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
--770
SET @sql += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID	FROM tblCustTrans	WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') '
END
ELSE
BEGIN
--772,773
SET @sql += ' UNION SELECT MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, tblCustTransDT.dteJournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, ISNULL(tblCustomers.strCustCategory,'''') AS strCustCategory, (SELECT ISNULL(strCNReasonCode, '''') FROM tblOrderDoc AS MASTERTABLE WHERE strOrdDocID = MASTERTABLE.strOrdDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE '
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' (' + @SQOldItem+') AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
--792,793,794
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))  UNION  SELECT MASTERTABLE.strCustName,tblCustomers.strCustDesc,tblCustomers.strTerm, MASTERTABLE.strReference AS strInvDepNumber,MASTERTABLE.strOrdDocID,MASTERTABLE.dteJournalDate, Convert(TINYINT, 1) AS TransType, Convert(TINYINT, 1) AS intTransType,0 AS lngCustTrID,MASTERTABLE.decTotal,MASTERTABLE.dteRequired,tblCustomers.strPhone,tblCustomers.strCellPhone,tblCustomers.strFax,tblCustomers.strEmail,tblCustomers.strContact,tblCustomers.bitCreditCtrl,tblCustomers.decCreditLimit,tblCustomers.bitCreditHold,tblCustomers.decOpenOrders,tblCustomers.decYTDPurch,ISNULL(tblCustomers.strCustCategory, '''') AS strCustCategory, ISNULL(MASTERTABLE.strCNReasonCode, '''') AS strCNReasonCode ,'''' ,'''' FROM tblOrderDoc AS MASTERTABLE INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE '
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
SET @sql += ' intDocType = 1	AND bitCleared = 0	AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)	AND (MASTERTABLE.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''')  ORDER BY MASTERTABLE.strCustName, tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType '
END
--Select @sql
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARCallSheetFilterByCustomer]
@SQOptNetValue   BIT = NULL,
@SQOptAll BIT = NULL,
@SQUserName  VARCHAR(MAX) = NULL,
@SQAsAt    DATE = NULL,
@SQPaidIn  DATE = NULL,
@SQintTransType int = NULL,
@SQOldItem VARCHAR(MAX) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF(@SQOptNetValue = 1)
BEGIN
SET @sql = 'SELECT tblCustomers.strCustName As CustName , tblCustomers.strCustDesc AS CustDesc, tblCustomers.strTerm AS Term, MASTERTABLE.strInvDepNumber AS InvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END AS DocID, MASTERTABLE.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType,  Convert(Tinyint, 1) AS intTransType, tblCustTransDT.lngCustTrID AS CustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteDueDate AS DueDate, tblCustomers.strPhone AS Phone, tblCustomers.strCellPhone AS CellPhone, tblCustomers.strFax AS Fax, tblCustomers.strEmail AS Email, tblCustomers.strContact AS Contact, tblCustomers.bitCreditCtrl AS CreditCtrl, tblCustomers.decCreditLimit AS CreditLimit, tblCustomers.bitCreditHold AS CreditHold, tblCustomers.decOpenOrders AS OpenOrders, tblCustomers.decYTDPurch AS YTDPurch, '''' AS strCustCategory, (SELECT ISNULL(strCNReasonCode, '''') AS strCNReasonCode FROM tblInvoiceDoc WHERE strInvDocID = MASTERTABLE.strInvDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE '
END
ELSE
BEGIN
SET @sql = 'SELECT tblCustomers.strCustName As CustName, tblCustomers.strCustDesc AS CustDesc, tblCustomers.strTerm AS Term, MASTERTABLE.strInvDepNumber AS InvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END AS DocID, tblCustTransDT.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType AS intTransType, tblCustTransDT.lngCustTrID AS CustTrID, tblCustTransDT.decAmount AS decAmount, MASTERTABLE.dteDueDate AS DueDate, tblCustomers.strPhone AS Phone, tblCustomers.strCellPhone AS CellPhone, tblCustomers.strFax AS Fax, tblCustomers.strEmail AS Email, tblCustomers.strContact AS Contact, tblCustomers.bitCreditCtrl AS CreditCtrl, tblCustomers.decCreditLimit AS CreditLimit, tblCustomers.bitCreditHold AS CreditHold, tblCustomers.decOpenOrders AS OpenOrders, tblCustomers.decYTDPurch AS YTDPurch, ''''AS strCustCategory, (SELECT ISNULL(strCNReasonCode, '''') AS strCNReasonCode  FROM tblInvoiceDoc WHERE strInvDocID = MASTERTABLE.strInvDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '
END
IF(@SQOptAll = 0)
BEGIN
SET @sql +=  '( '+@SQOldItem+') AND'
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))'
IF(@SQOptNetValue = 1)
BEGIN
SET @sql += ' GROUP BY tblCustomers.strCustName, MASTERTABLE.strCustName,tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, MASTERTABLE.strJEDocID, MASTERTABLE.strInvDocID, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch  UNION  SELECT tblCustomers.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType AS TransType, Convert(Tinyint, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, '''',(SELECT ISNULL(strCNReasonCode, '''') FROM tblOrderDoc WHERE strOrdDocID = MASTERTABLE.strOrdDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '
IF(@SQOptAll = 0)
BEGIN 
SET @sql += ' ( '+@SQOldItem+') AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
SET	@sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))  GROUP BY tblCustomers.strCustName, MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, strOrdDocID '
END
Else
BEGIN
SET @sql += ' UNION SELECT tblCustomers.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END, tblCustTransDT.dteJournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType AS intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, '''',(SELECT ISNULL(strCNReasonCode, '''') FROM tblOrderDoc WHERE strOrdDocID = MASTERTABLE.strOrdDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) ORDER BY tblCustomers.strCustName, tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType '
END
--select @sql
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARCallSheetFilterByCustomerR]
@SQOptNetValue   BIT = NULL,
@SQOptAll BIT = NULL,
@SQUserName  VARCHAR(MAX) = NULL,
@SQAsAt    DATE = NULL,
@SQPaidIn  DATE = NULL,
@SQintTransType int = NULL,
@SQOldItem VARCHAR(MAX) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF(@SQOptNetValue = 1)
BEGIN
SET @sql = 'SELECT MASTERTABLE.strCustName AS CustName, tblCustomers.strCustDesc AS CustDesc, tblCustomers.strTerm AS Term, MASTERTABLE.strInvDepNumber AS InvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END AS DocID , MASTERTABLE.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, Convert(Tinyint, 1) AS intTransType, tblCustTransDT.lngCustTrID AS CustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteDueDate AS DueDate, tblCustomers.strPhone AS Phone, tblCustomers.strCellPhone AS CellPhone, tblCustomers.strFax As Fax , tblCustomers.strEmail As Email, tblCustomers.strContact As Contact, tblCustomers.bitCreditCtrl AS CreditCtrl, tblCustomers.decCreditLimit AS CreditLimit, tblCustomers.bitCreditHold AS CreditHold, tblCustomers.decOpenOrders AS OpenOrders, tblCustomers.decYTDPurch AS YTDPurch, '''' AS strCustCategory,(SELECT ISNULL(strCNReasonCode, '''') AS strCNReasonCode FROM tblInvoiceDoc	WHERE strInvDocID = MASTERTABLE.strInvDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE '
END
ELSE 
BEGIN
SET @sql = 'SELECT MASTERTABLE.strCustName AS CustName, tblCustomers.strCustDesc AS CustDesc, tblCustomers.strTerm AS Term, MASTERTABLE.strInvDepNumber AS InvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END AS DocID, tblCustTransDT.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType AS intTransType, tblCustTransDT.lngCustTrID AS CustTrID, tblCustTransDT.decAmount AS decAmount, MASTERTABLE.dteDueDate AS DueDate, tblCustomers.strPhone AS Phone, tblCustomers.strCellPhone AS CellPhone, tblCustomers.strFax As Fax, tblCustomers.strEmail AS Email, tblCustomers.strContact AS Contact, tblCustomers.bitCreditCtrl AS CreditCtrl, tblCustomers.decCreditLimit AS CreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch AS YTDPurch, '''' AS strCustCategory ,(SELECT ISNULL(strCNReasonCode, '''') AS strCNReasonCode FROM tblInvoiceDoc	WHERE strInvDocID = MASTERTABLE.strInvDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '
END
--597
IF(@SQOptAll = 0)
BEGIN 
SET @sql += ' ('+@SQOldItem+') AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
--614
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) '
--615,616,617
IF(@SQOptNetValue = 1)
BEGIN
SET @sql += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch,strInvDocID  UNION SELECT MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType AS TransType, Convert(Tinyint, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, '''',(SELECT ISNULL(strCNReasonCode, '''') FROM tblOrderDoc AS MASTERTABLE WHERE strOrdDocID = MASTERTABLE.strOrdDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE '
--620
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
--637,638,639,640
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))  GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, strOrdDocID  UNION  SELECT tblCustomers.strCustName,tblCustomers.strCustDesc,tblCustomers.strTerm, MASTERTABLE.strReference AS strInvDepNumber,MASTERTABLE.strOrdDocID,MASTERTABLE.dteJournalDate AS JournalDate, Convert(Tinyint, 1) AS TransType, Convert(Tinyint, 1) AS intTransType,0 AS lngCustTrID,MASTERTABLE.decTotal,MASTERTABLE.dteRequired,tblCustomers.strPhone,tblCustomers.strCellPhone,tblCustomers.strFax,tblCustomers.strEmail,tblCustomers.strContact,tblCustomers.bitCreditCtrl,tblCustomers.decCreditLimit,tblCustomers.bitCreditHold,tblCustomers.decOpenOrders,tblCustomers.decYTDPurch,'''',ISNULL(MASTERTABLE.strCNReasonCode, ''''),'''','''' FROM tblOrderDoc AS MASTERTABLE INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE '
--642
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND '
END
ELSE
BEGIN 
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
--657
SET @sql += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') '
END
ELSE
--659,660
BEGIN
SET @sql += ' UNION SELECT MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber AS InvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, tblCustTransDT.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, '''',(SELECT ISNULL(strCNReasonCode, '''') FROM tblOrderDoc AS MASTERTABLE WHERE strOrdDocID = MASTERTABLE.strOrdDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE '
--662
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
--679,680,681
SET @sql+= ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))  UNION  SELECT tblCustomers.strCustName,tblCustomers.strCustDesc,tblCustomers.strTerm, MASTERTABLE.strReference AS strInvDepNumber,MASTERTABLE.strOrdDocID,MASTERTABLE.dteJournalDate AS JournalDate, Convert(Tinyint, 1) AS TransType, Convert(Tinyint, 1) AS intTransType,0 AS lngCustTrID,MASTERTABLE.decTotal,MASTERTABLE.dteRequired,tblCustomers.strPhone,tblCustomers.strCellPhone,tblCustomers.strFax,tblCustomers.strEmail,tblCustomers.strContact,tblCustomers.bitCreditCtrl,tblCustomers.decCreditLimit,tblCustomers.bitCreditHold,tblCustomers.decOpenOrders,tblCustomers.decYTDPurch,'''',ISNULL(MASTERTABLE.strCNReasonCode, ''''),'''','''' FROM tblOrderDoc AS MASTERTABLE INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE '
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
--700,701
SET @sql += ' intDocType = 1	AND bitCleared = 0	AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)	AND (MASTERTABLE.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''')  ORDER BY MASTERTABLE.strCustName, tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType '
END
--select @sql
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARCallSheetFilterByDept]
@SQOptNetValue   BIT = NULL,
@SQOptAll BIT = NULL,
@SQAsAt    DATE = NULL,
@SQPaidIn  DATE = NULL,
@SQintTransType int = NULL,
@SQOldItem VARCHAR(max) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF(@SQOptNetValue = 1)
BEGIN
SET @sql = 'SELECT MASTERTABLE.strCustName AS CustName, tblCustomers.strCustDesc AS CustDesc, tblCustomers.strTerm AS Term, MASTERTABLE.strInvDepNumber AS InvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END AS DocID, MASTERTABLE.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, Convert(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID AS CustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteDueDate AS DueDate, tblCustomers.strPhone AS Phone, tblCustomers.strCellPhone AS CellPhone, tblCustomers.strFax AS Fax, tblCustomers.strEmail AS Email, tblCustomers.strContact AS Contact, tblCustomers.bitCreditCtrl AS CreditCtrl, tblCustomers.decCreditLimit AS CreditLimit, tblCustomers.bitCreditHold AS CreditHold, tblCustomers.decOpenOrders AS OpenOrders, tblCustomers.decYTDPurch AS YTDPurch, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc AS strCustCategory FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') AS strCustCategory, (SELECT ISNULL(strCNReasonCode, '''') AS strCNReasonCode FROM tblInvoiceDoc WHERE strInvDocID = MASTERTABLE.strInvDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE'
END
ELSE
BEGIN
SET @sql = 'SELECT MASTERTABLE.strCustName AS CustName , tblCustomers.strCustDesc AS CustDesc, tblCustomers.strTerm AS Term, MASTERTABLE.strInvDepNumber AS InvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END AS DocID, tblCustTransDT.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID AS CustTrID, tblCustTransDT.decAmount AS decAmount, MASTERTABLE.dteDueDate AS DueDate, tblCustomers.strPhone AS Phone, tblCustomers.strCellPhone AS CellPhone, tblCustomers.strFax AS Fax, tblCustomers.strEmail AS Email, tblCustomers.strContact AS Contact, tblCustomers.bitCreditCtrl AS CreditCtrl, tblCustomers.decCreditLimit AS CreditLimit, tblCustomers.bitCreditHold AS CreditHold, tblCustomers.decOpenOrders AS OpenOrders, tblCustomers.decYTDPurch AS YTDPurch, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4))   + '' '' + tblDepartments.strDesc AS strCustCategory FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') AS strCustCategory, (SELECT ISNULL(strCNReasonCode, '''') AS strCNReasonCode FROM tblInvoiceDoc WHERE strInvDocID = MASTERTABLE.strInvDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '
END
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' (' +@SQOldItem+') AND'
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))'
IF(@SQOptNetValue = 1)
BEGIN
SET @sql += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, MASTERTABLE.strJEDocID, MASTERTABLE.strInvDocID, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, tblCustomers.intDept  UNION SELECT MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType AS TransType, Convert(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') AS intDept, (SELECT ISNULL(strCNReasonCode, '''') FROM tblOrderDoc WHERE strOrdDocID = MASTERTABLE.strOrdDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND'
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))  GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, tblCustomers.intDept, strOrdDocID'
END
ELSE
BEGIN
SET @sql += ' UNION SELECT MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END, tblCustTransDT.dteJournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') AS intDept, (SELECT ISNULL(strCNReasonCode, '''') FROM tblOrderDoc WHERE strOrdDocID = MASTERTABLE.strOrdDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE ' 
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND'
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))  ORDER BY MASTERTABLE.strCustName, tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType '
END
--select(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARCallSheetFilterByDeptR]
-- Add the parameters for the stored procedure here
-- @SQOptFilterByCustomer  BIT = NULL,
@SQOptNetValue   BIT = NULL,
@SQOptAll BIT = NULL,
@SQAsAt    DATE = NULL,
@SQPaidIn  DATE = NULL,
@SQintTransType int = NULL,
@SQOldItem VARCHAR(50) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF(@SQOptNetValue = 1)
BEGIN
SET @sql = 'SELECT tblCustomers.strCustName As CustName, tblCustomers.strCustDesc AS CustDesc, tblCustomers.strTerm AS Term, MASTERTABLE.strInvDepNumber AS InvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END AS DocID, MASTERTABLE.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, 1 AS intTransType, tblCustTransDT.lngCustTrID AS CustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteDueDate AS DueDate, tblCustomers.strPhone AS Phone, tblCustomers.strCellPhone AS CellPhone, tblCustomers.strFax AS Fax, tblCustomers.strEmail AS Email, tblCustomers.strContact AS Contact, tblCustomers.bitCreditCtrl AS CreditCtrl, tblCustomers.decCreditLimit AS CreditLimit, tblCustomers.bitCreditHold AS CreditHold, tblCustomers.decOpenOrders As OpenOrders, tblCustomers.decYTDPurch AS YTDPurch, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc AS intDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') AS intDept, (SELECT ISNULL(strCNReasonCode, '''') FROM tblInvoiceDoc WHERE strInvDocID = MASTERTABLE.strInvDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE '
END
ELSE
BEGIN
SET @sql = 'SELECT tblCustomers.strCustName As CustName, tblCustomers.strCustDesc AS CustDesc, tblCustomers.strTerm AS Term, MASTERTABLE.strInvDepNumber AS InvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END AS DocID, tblCustTransDT.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType AS intTransType, tblCustTransDT.lngCustTrID  AS CustTrID, tblCustTransDT.decAmount AS decAmount, MASTERTABLE.dteDueDate AS DueDate, tblCustomers.strPhone AS Phone, tblCustomers.strCellPhone AS CellPhone, tblCustomers.strFax AS Fax, tblCustomers.strEmail AS Email, tblCustomers.strContact AS Contact, tblCustomers.bitCreditCtrl AS CreditCtrl, tblCustomers.decCreditLimit AS CreditLimit, tblCustomers.bitCreditHold AS CreditHold, tblCustomers.decOpenOrders As OpenOrders, tblCustomers.decYTDPurch AS YTDPurch, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc  AS intDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') AS intDept, (SELECT ISNULL(strCNReasonCode, '''') FROM tblInvoiceDoc WHERE strInvDocID = MASTERTABLE.strInvDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '
END
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) '
IF(@SQOptAll = 1)
BEGIN
SET @sql += ' GROUP BY tblCustomers.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, tblCustomers.intDept, strInvDocID UNION SELECT tblCustomers.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType AS TransType, 1 AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') AS intDept, (SELECT ISNULL(strCNReasonCode, '''') FROM tblOrderDoc WHERE strOrdDocID = MASTERTABLE.strOrdDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE '
IF(@SQOptAll = 0)
BEGIN 
SET @sql = ' ('+ @SQOldItem+') AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))  GROUP BY tblCustomers.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, tblCustomers.intDept, strOrdDocID  UNION  SELECT tblCustomers.strCustName,tblCustomers.strCustDesc,tblCustomers.strTerm, tblOrderDoc.strReference AS strInvDepNumber,tblOrderDoc.strOrdDocID,tblOrderDoc.dteJournalDate,1 AS TransType,1 AS intTransType,0 AS lngCustTrID,tblOrderDoc.decTotal,tblOrderDoc.dteRequired,tblCustomers.strPhone,tblCustomers.strCellPhone,tblCustomers.strFax,tblCustomers.strEmail,tblCustomers.strContact,tblCustomers.bitCreditCtrl,tblCustomers.decCreditLimit,tblCustomers.bitCreditHold,tblCustomers.decOpenOrders,tblCustomers.decYTDPurch,ISNULL((SELECT CAST(tblDepartments.intDept AS NVARCHAR(4)) + '' '' + tblDepartments.strDesc	FROM tblDepartments	WHERE tblDepartments.intDept = tblCustomers.intDept	), ''<<No Department>>'') AS intDept, ISNULL(strCNReasonCode, '''') AS strCNReasonCode ,'''' ,'''' FROM tblOrderDoc INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName WHERE '
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND '
END
SET @sql += ' intDocType = 1 AND bitCleared = 0 AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID	FROM tblCustTrans	WHERE strOrdDocID IS NOT NULL) AND (tblOrderDoc.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') '
END
ELSE
BEGIN
SET @sql += ' UNION SELECT tblCustomers.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, tblCustTransDT.dteJournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') AS intDept, (SELECT ISNULL(strCNReasonCode, '''') FROM tblOrderDoc WHERE strOrdDocID = MASTERTABLE.strOrdDocID) AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE '
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) UNION  SELECT tblCustomers.strCustName,tblCustomers.strCustDesc,tblCustomers.strTerm,tblOrderDoc.strReference AS strInvDepNumber,tblOrderDoc.strOrdDocID,tblOrderDoc.dteJournalDate,1 AS TransType,1 AS intTransType,0 AS lngCustTrID,tblOrderDoc.decTotal,tblOrderDoc.dteRequired,tblCustomers.strPhone,tblCustomers.strCellPhone,tblCustomers.strFax,tblCustomers.strEmail,tblCustomers.strContact,tblCustomers.bitCreditCtrl,tblCustomers.decCreditLimit,tblCustomers.bitCreditHold,tblCustomers.decOpenOrders,tblCustomers.decYTDPurch,ISNULL((SELECT CAST(tblDepartments.intDept AS NVARCHAR(4)) + '' '' + tblDepartments.strDesc	FROM tblDepartments	WHERE tblDepartments.intDept = tblCustomers.intDept), ''<<No Department>>'') AS intDept, ISNULL(tblOrderDoc.strCNReasonCode, '''') AS strCNReasonCode ,'''' ,'''' FROM tblOrderDoc INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName WHERE '
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND '
END
SET @sql += ' intDocType = 1 AND bitCleared = 0 AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID	FROM tblCustTrans	WHERE strOrdDocID IS NOT NULL) AND (tblOrderDoc.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''')  ORDER BY tblCustomers.strCustName, tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType '
END
PRINT(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARCallSheetFilterBySalesPersons]
@SQOptNetValue   BIT = NULL,
@SQOptAll BIT = NULL,
@SQUserName  VARCHAR(MAX) = NULL,
@SQAsAt    DATE = NULL,
@SQPaidIn  DATE = NULL,
@SQintTransType int = NULL,
@SQOldItem VARCHAR(MAX) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF(@SQOptNetValue = 1)
BEGIN
SET @sql = 'SELECT MASTERTABLE.strCustName AS CustName, tblCustomers.strCustDesc AS CustDesc, tblCustomers.strTerm AS Term, MASTERTABLE.strInvDepNumber AS InvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END AS DocID, MASTERTABLE.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, CONVERT(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID AS CustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteDueDate AS DueDate, tblCustomers.strPhone AS Phone, tblCustomers.strCellPhone AS CellPhone, tblCustomers.strFax AS Fax, tblCustomers.strEmail AS Email, tblCustomers.strContact AS Contact, tblCustomers.bitCreditCtrl AS CreditCtrl, tblCustomers.decCreditLimit AS CreditLimit, tblCustomers.bitCreditHold AS CreditHold, tblCustomers.decOpenOrders AS OpenOrders, tblCustomers.decYTDPurch AS YTDPurch, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') AS strSalesName, ISNULL(tblInvoiceDoc.strCNReasonCode, '''') AS strCNReasonCode  ,(select ISNULL(dteSystemDate, '''') AS dteSystemDate from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblInvoiceDoc ON tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID LEFT JOIN tblCustomerSales ON tblCustomers.strCustName = tblCustomerSales.strCustName WHERE 
'
END
ELSE
BEGIN
SET @sql = 'SELECT MASTERTABLE.strCustName AS CustName, tblCustomers.strCustDesc AS CustDesc, tblCustomers.strTerm AS Term, MASTERTABLE.strInvDepNumber AS InvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END AS DocID, tblCustTransDT.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType AS intTransType, tblCustTransDT.lngCustTrID AS CustTrID, tblCustTransDT.decAmount AS decAmount, MASTERTABLE.dteDueDate AS DueDate, tblCustomers.strPhone AS Phone, tblCustomers.strCellPhone AS CellPhone, tblCustomers.strFax AS Fax, tblCustomers.strEmail AS Email, tblCustomers.strContact AS Contact, tblCustomers.bitCreditCtrl AS CreditCtrl, tblCustomers.decCreditLimit AS CreditLimit, tblCustomers.bitCreditHold AS CreditHold, tblCustomers.decOpenOrders AS OpenOrders, tblCustomers.decYTDPurch AS YTDPurch, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') AS strSalesName, ISNULL(tblInvoiceDoc.strCNReasonCode, '''') AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') AS dteSystemDate  from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblInvoiceDoc ON tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID LEFT JOIN tblCustomerSales ON tblCustomers.strCustName = tblCustomerSales.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE 
'
END
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND 
'
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) 
'
IF(@SQOptNetValue = 1)
BEGIN
SET @sql += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, MASTERTABLE.strJEDocID, MASTERTABLE.strInvDocID, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, tblCustomerSales.strSalesName, tblInvoiceDoc.strCNReasonCode  UNION SELECT MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType AS TransType, CONVERT(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), ISNULL(tblOrderDoc.strCNReasonCode, '''') AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblOrderDoc ON tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID LEFT JOIN tblCustomerSales ON tblCustomers.strCustName = tblCustomerSales.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE 
'
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND 
'
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))  GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, tblCustomerSales.strSalesName, ISNULL(tblOrderDoc.strCNReasonCode, '''')
'
END
ELSE
BEGIN
SET @sql += ' UNION SELECT MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END, tblCustTransDT.dteJournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), ISNULL(tblOrderDoc.strCNReasonCode, '''') AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblOrderDoc ON tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID LEFT JOIN tblCustomerSales ON tblCustomers.strCustName = tblCustomerSales.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE 
'
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND 
'
END
SET @sql += ' 
(tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))  ORDER BY MASTERTABLE.strCustName, tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType '
END
--select @sql
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARCallSheetFilterBySalesPersonsR]
@SQOptNetValue   BIT = NULL,
@SQOptAll BIT = NULL,
@SQUserName  VARCHAR(max) = NULL,
@SQAsAt    DATE = NULL,
@SQPaidIn  DATE = NULL,
@SQintTransType int = NULL,
@SQOldItem VARCHAR(max) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF(@SQOptNetValue = 1)
BEGIN
SET @sql = 'SELECT MASTERTABLE.strCustName AS CustName, tblCustomers.strCustDesc AS CustDesc, tblCustomers.strTerm AS Term, MASTERTABLE.strInvDepNumber AS InvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END AS DocID, MASTERTABLE.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, Convert(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID AS CustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteDueDate AS DueDate, tblCustomers.strPhone AS Phone, tblCustomers.strCellPhone AS CellPhone, tblCustomers.strFax AS Fax, tblCustomers.strEmail AS Email, tblCustomers.strContact AS Contact, tblCustomers.bitCreditCtrl AS CreditCtrl, tblCustomers.decCreditLimit AS CreditLimit, tblCustomers.bitCreditHold AS CreditHold, tblCustomers.decOpenOrders AS OpenOrders, tblCustomers.decYTDPurch AS YTDPurch, ISNULL(tblCustomerSales.strSalesName , ''<<No Sales Person>>'') AS strSalesName, ISNULL(tblInvoiceDoc.strCNReasonCode, '''') AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') AS dteSystemDate from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblInvoiceDoc ON tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID LEFT JOIN tblCustomerSales ON tblCustomers.strCustName = tblCustomerSales.strCustName WHERE '
END
ELSE
BEGIN
SET @sql = 'SELECT MASTERTABLE.strCustName AS CustName, tblCustomers.strCustDesc AS CustDesc, tblCustomers.strTerm AS Term, MASTERTABLE.strInvDepNumber AS InvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource,'''') END END AS DocID, tblCustTransDT.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType AS intTransType, tblCustTransDT.lngCustTrID AS CustTrID, tblCustTransDT.decAmount AS decAmount, MASTERTABLE.dteDueDate AS DueDate, tblCustomers.strPhone AS Phone, tblCustomers.strCellPhone AS CellPhone, tblCustomers.strFax AS Fax, tblCustomers.strEmail AS Email, tblCustomers.strContact AS Contact, tblCustomers.bitCreditCtrl AS CreditCtrl, tblCustomers.decCreditLimit AS CreditLimit, tblCustomers.bitCreditHold AS CreditHold, tblCustomers.decOpenOrders AS OpenOrders, tblCustomers.decYTDPurch AS YTDPurch, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') AS strSalesName, ISNULL(tblInvoiceDoc.strCNReasonCode, '''') AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') AS dteSystemDate from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblInvoiceDoc ON tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID LEFT JOIN tblCustomerSales ON tblCustomers.strCustName = tblCustomerSales.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '
END
IF(@SQOptAll = 0)
BEGIN 
SET @sql += ' ('+@SQOldItem+') AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) '
IF(@SQOptNetValue = 1)
BEGIN 
SET @sql += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, tblCustomerSales.strSalesName, tblInvoiceDoc.strCNReasonCode  UNION SELECT MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType AS TransType, Convert(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), ISNULL(tblOrderDoc.strCNReasonCode, '''') AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblOrderDoc ON tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID LEFT JOIN tblCustomerSales ON tblCustomers.strCustName = tblCustomerSales.strCustName WHERE '
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+' ) AND'
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))  GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteJournalDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, tblCustomerSales.strSalesName, ISNULL(tblOrderDoc.strCNReasonCode, '''')  UNION  SELECT MASTERTABLE.strCustName,tblCustomers.strCustDesc,tblCustomers.strTerm, MASTERTABLE.strReference AS strInvDepNumber,MASTERTABLE.strOrdDocID,MASTERTABLE.dteJournalDate,Convert(TINYINT, 1) AS TransType, Convert(TINYINT, 1) AS intTransType,0 AS lngCustTrID,MASTERTABLE.decTotal,MASTERTABLE.dteRequired,tblCustomers.strPhone,tblCustomers.strCellPhone,tblCustomers.strFax,tblCustomers.strEmail,tblCustomers.strContact,tblCustomers.bitCreditCtrl,tblCustomers.decCreditLimit,tblCustomers.bitCreditHold,tblCustomers.decOpenOrders,tblCustomers.decYTDPurch,ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), ISNULL(MASTERTABLE.strCNReasonCode, '''') AS strCNReasonCode ,'''' ,'''' FROM tblOrderDoc AS MASTERTABLE INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustomerSales ON tblCustomers.strCustName = tblCustomerSales.strCustName WHERE '
IF(@SQOptAll = 0)
BEGIN 
SET @sql += ' ('+@SQOldItem+') AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
SET @sql += ' intDocType = 1	AND bitCleared = 0	AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID	FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') '
END
ELSE
BEGIN
SET @sql += ' UNION SELECT MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, tblCustTransDT.dteJournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteDueDate, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail, tblCustomers.strContact, tblCustomers.bitCreditCtrl, tblCustomers.decCreditLimit, tblCustomers.bitCreditHold, tblCustomers.decOpenOrders, tblCustomers.decYTDPurch, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), ISNULL(tblOrderDoc.strCNReasonCode, '''') AS strCNReasonCode ,(select ISNULL(dteSystemDate, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptDate ,(select ISNULL(decAmount, '''') from tblCustPay where strCustName = MASTERTABLE.strCustName and lngCustPayID = (select max(lngCustPayID) from tblCustPay where strCustName = MASTERTABLE.strCustName and decAmount > 0)) AS LastReceiptAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblOrderDoc ON tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID LEFT JOIN tblCustomerSales ON tblCustomers.strCustName = tblCustomerSales.strCustName WHERE '
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+') AND '
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))  UNION  SELECT MASTERTABLE.strCustName,tblCustomers.strCustDesc,tblCustomers.strTerm, MASTERTABLE.strReference AS strInvDepNumber,MASTERTABLE.strOrdDocID,MASTERTABLE.dteJournalDate,Convert(TINYINT, 1) AS TransType, Convert(TINYINT, 1) AS intTransType,0 AS lngCustTrID,MASTERTABLE.decTotal,MASTERTABLE.dteRequired,tblCustomers.strPhone,tblCustomers.strCellPhone,tblCustomers.strFax,tblCustomers.strEmail,tblCustomers.strContact,tblCustomers.bitCreditCtrl,tblCustomers.decCreditLimit,tblCustomers.bitCreditHold,tblCustomers.decOpenOrders,tblCustomers.decYTDPurch,ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), ISNULL(MASTERTABLE.strCNReasonCode, '''') AS strCNReasonCode ,'''' ,'''' FROM tblOrderDoc as MASTERTABLE INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustomerSales ON tblCustomers.strCustName = tblCustomerSales.strCustName WHERE '
IF(@SQOptAll = 0)
BEGIN
SET @sql += ' ('+@SQOldItem+' ) AND'
END
ELSE
BEGIN
SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+''')) AND '
END
SET @sql += ' intDocType = 1	AND bitCleared = 0	AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID	FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''')  ORDER BY MASTERTABLE.strCustName, tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
END
--select @sql
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARContactExpiryLoad]
-- Add the parameters for the stored procedure here
@SQStart DateTime , 
@SQEnd DateTime
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT ( SELECT TOP 1 D.dtpLastBillDate	FROM tblContractBillDT D WHERE D.strContDocID = M.strContDocID AND D.dtpLastBillDate BETWEEN @SQStart AND @SQEnd ) AS ContractExpiryDate, M.dtpLastProcessDate AS LastInvoiceDate, M.strContBillType AS ContractType, M.strContDocID AS ContractNumber, M.strCustName AS CustomerNumber, ( SELECT strCustDesc	FROM tblCustomers WHERE strCustName = M.strCustName) AS CustomerName, M.strReference AS Reference, M.decSubTotal AS PriceExcl, M.decVAT AS TAX, M.decTotal AS PriceIncl FROM tblContractBill M INNER JOIN tblCustomers C ON M.strCustName = C.strCustName WHERE ( SELECT TOP 1 D.dtpLastBillDate FROM tblContractBillDT D WHERE D.strContDocID = M.strContDocID AND D.dtpLastBillDate BETWEEN @SQStart AND @SQEnd ) Is Not Null ORDER BY M.strContBillType 
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARSearchContact]
-- Add the parameters for the stored procedure here
@SQSearchBy varchar(Max) = NULL, 
@BitInactive bit = NULL,
@SQUserName varchar(Max) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
IF(@SQSearchBy IS NOT NULL) 
BEGIN
IF(LEN(@SQSearchBy)>2) 
BEGIN
IF(@BitInactive = 1)
BEGIN
SET @sql = 'SELECT strCustName, strCustDesc FROM tblCustomers WHERE (strCustName LIKE ''%'+@SQSearchBy+'%'' OR strCustDesc LIKE ''%'+@SQSearchBy+'%'')'
END
ELSE
BEGIN
SET @sql = 'SELECT strCustName, strCustDesc FROM tblCustomers WHERE (strCustName LIKE ''%'+@SQSearchBy+'%'' OR strCustDesc LIKE ''%'+@SQSearchBy+'%'') AND (bitInactive = 0)'
END
END
ELSE
BEGIN
IF(@BitInactive = 1)
BEGIN
SET @sql = 'SELECT strCustName, strCustDesc FROM tblCustomers'
END
ELSE
BEGIN
SET @sql = 'SELECT strCustName, strCustDesc FROM tblCustomers WHERE (bitInactive = 0)'
END
END
END
ELSE
BEGIN
IF(@BitInactive = 1)
BEGIN
SET @sql = 'SELECT strCustName, strCustDesc FROM tblCustomers'
END
ELSE
BEGIN
SET @sql = 'SELECT strCustName, strCustDesc FROM tblCustomers WHERE (bitInactive = 0)'
END
END
IF CHARINDEX('WHERE', @sql) > 0
BEGIN
SET @sql = @sql + ' AND '
END
ELSE
BEGIN
SET @sql = @sql + ' WHERE '
END
SET @sql = @sql + ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+'''))'
SET @sql = @sql + ' ORDER BY strCustName'
print @sql
EXEC (@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARListContactsJobTitles]
-- Add the parameters for the stored procedure here
@JobTitle varchar(50) = ''
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF @JobTitle=''
BEGIN
SELECT strJobTitle FROM tblJobTitles ORDER BY strJobTitle
END
ELSE
BEGIN
SELECT CONVERT(varchar(50),lngID) FROM tblJobTitles WHERE strJobTitle = @JobTitle
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARSearchContactReport]
-- Add the parameters for the stored procedure here
@Cust varchar(MAX) = NULL, 
@SQintJobTitle bigint = 0
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
IF(@SQintJobTitle > 0) 
BEGIN
SET @sql = 'SELECT cc.strName, c.strCustName, c.strCustDesc, jt.strJobTitle, cc.strEmail, cc.strTel, cc.strFax, cc.strCell, cc.strStreet1, cc.strStreet2, cc.strCity, cc.strProvince, cc.strPostal, cc.imgPicture FROM tblCustomerContacts cc INNER JOIN	tblCustomers c ON c.strCustName = cc.strCustName INNER JOIN	tblJobTitles jt ON cc.intJobTitle = jt.lngID WHERE cc.strCustName IN (' + @Cust + ') AND cc.intJobTitle = '+CONVERT(VARCHAR(50),@SQintJobTitle)
END
Else
BEGIN
SET @sql = 'SELECT cc.strName, c.strCustName, c.strCustDesc, jt.strJobTitle, cc.strEmail, cc.strTel, cc.strFax, cc.strCell, cc.strStreet1, cc.strStreet2, cc.strCity, cc.strProvince, cc.strPostal, cc.imgPicture FROM tblCustomerContacts cc INNER JOIN	tblCustomers c ON c.strCustName = cc.strCustName INNER JOIN	tblJobTitles jt ON cc.intJobTitle = jt.lngID WHERE cc.strCustName IN (' + @Cust + ')'
END
PRINT @sql
EXEC (@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptMultiLevelMArketingGird]
-- Add the parameters for the stored procedure here
@txtSearch varchar(Max) = NULL, 
@SQBalance decimal = NULL,
@blnCriteria  bit = Null,
@optOmitZero bit = Null,
@optOmitLesser bit NULL,
@optSearch bit NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
SET @sql = 'SELECT strCustName, strCustDesc, strCurrency, SUM(nsalesdisc) As total FROM tblCustomers INNER JOIN rbtmlm ON tblCustomers.strCustName = rbtmlm.csponsor GROUP BY strCustName, strCustDesc, strCurrency '
IF(@optOmitZero = 1)
BEGIN
SET @sql += ' HAVING SUM(nsalesdisc) <> 0'
END
ELSE IF(@optOmitLesser = 1)
BEGIN
SET @sql += ' HAVING SUM(nsalesdisc) > '+CONVERT(VARCHAR(5), @SQBalance)+''
END
IF(@optSearch = 1)
BEGIN
IF(LEN(@txtSearch) > 2)
BEGIN
IF(@blnCriteria = 0)
BEGIN
SET @sql += ' AND  (strCustName LIKE ''%'+@txtSearch+'%'' OR strCustDesc LIKE ''%'+@txtSearch+'%'') '
END
ELSE
BEGIN
SET @sql += '  HAVING  (strCustName LIKE ''%'+@txtSearch+'%'' OR strCustDesc LIKE ''%'+@txtSearch+'%'')'
END
END
END
SET @sql += ' ORDER BY strCustName'
PRINT(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARMultiLevelMarketingReport1]
-- Add the parameters for the stored procedure here
@SQCustName VARCHAR(MAX) 
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT * FROM tblCustomers WHERE strCustName = @SQCustName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARSearchLocation]
@SQSearchBy   VARCHAR(MAX) = NULL,
@SQUserName   VARCHAR(MAX) = NULL,
@RbtAllOrders BIT = NULL,
@RbtCustOrder BIT = NULL,
@RbtIBTOrder  BIT = NULL,
@RbtSearch    BIT = NULL,
@RbtAll       BIT = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF( @RbtAllOrders = 0 )
BEGIN
IF( @RbtCustOrder = 1 )
BEGIN
SET @sql = 'SELECT DISTINCT tblOrderDoc.strCustName as CustName, strCustDesc as CustDesc FROM tblOrderDoc INNER JOIN tblCustomers ON tblCustomers.strCustName		= tblOrderDoc.strCustName WHERE (intDocType = 1) AND (bitCleared = 0)'
IF Charindex('WHERE', @sql) > 0
BEGIN
SET @sql = @sql + ' AND '
END
ELSE
BEGIN
SET @sql = @sql + ' WHERE '
END
SET @sql = @sql
+
'strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory AND tblCustomerCatSec.strUserName = '''
+ @SQUserName + '''), 0) > 0 ))'
SET @sql = @sql + ' ORDER BY tblOrderDoc.strCustName'
END
ELSE IF( @RbtIBTOrder = 1 )
BEGIN
IF( @RbtSearch = 1 )
BEGIN

SET @sql =
'SELECT DISTINCT strLocName as CustName,strDesc as CustDesc from tblInvLoc WHERE (strLocName LIKE ''%'
+ @SQSearchBy + '%'' OR strDesc LIKE ''%'
+ @SQSearchBy + '%'')'
END

ELSE
BEGIN
SET @sql =
'SELECT DISTINCT strLocName as CustName,strDesc as CustDesc from tblInvLoc'
END
END
END
ELSE IF( @RbtAllOrders = 1 AND @RbtAll = 1 )
BEGIN
SET @sql =
'SELECT DISTINCT strLocName as CustName,strDesc as CustDesc from tblInvLoc'
END
ELSE
BEGIN
SET @sql = 'SELECT ''A'' as CustName, ''B'' as CustDesc WHERE 1=2'
END
PRINT @sql
EXEC (@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[OpenSalesAllOrdersSummary]
-- Add the parameters for the stored procedure here
@SQCustomer VARCHAR(MAX) = NULL,
@BitCustomer BIT = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF @BitCustomer = 0 
BEGIN
-- Insert statements for procedure here
SELECT tblOrderDoc.strOrdDocID as OrdDocID,tblOrderDoc.dteJournalDate as JournalDate,tblOrderDoc.dteRequired as DateRequired,tblOrderDoc.decTotal as Total,SUM(ISNULL(( CASE tblOrderDocDT.decQty WHEN tblOrderDocDT.decQtyRemaining THEN (tblOrderDocDT.decLineTotExc) ELSE ((tblOrderDocDT.decLineTotExc) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining END), 0)) AS Remain1,SUM(tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineDiscAmt) AS Remain2,SUM(tblOrderDocDT.decLineDiscAmt) AS DocumentDisc,SUM(tblOrderDocDT.decLineTaxAmt) AS Tax,tblOrderDoc.strCustName AS CustLocName,tblCustomers.strCustDesc as CustDesc FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID INNER JOIN tblCustomers ON tblCustomers.strCustName = tblOrderDoc.strCustName WHERE (tblOrderDoc.intDocType = 1) AND (tblOrderDoc.bitCleared = 0) GROUP BY tblOrderDoc.strOrdDocID,tblOrderDoc.dteJournalDate,tblOrderDoc.dteRequired,tblOrderDoc.decTotal,tblOrderDoc.strCustName,tblCustomers.strCustDesc UNION ALL SELECT strInvTrfOrdDocID as OrdDocID,dteJournalDate,dteReceivingDate,'','','','','',tblInvTrfOrdDoc.strLocName AS CustLocName,'' FROM tblInvTrfOrdDoc WHERE bitCleared = 0 ORDER BY CustLocName,dteJournalDate,OrdDocID
END
ELSE
BEGIN
SELECT tblOrderDoc.strOrdDocID as OrdDocID, tblOrderDoc.dteJournalDate as JournalDate, tblOrderDoc.dteRequired as DateRequired, tblOrderDoc.decTotal as Total, SUM(ISNULL((CASE tblOrderDocDT.decQty WHEN tblOrderDocDT.decQtyRemaining THEN (tblOrderDocDT.decLineTotExc) ELSE ((tblOrderDocDT.decLineTotExc) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining END),0)) AS Remain1,SUM(tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineDiscAmt) AS Remain2,SUM(tblOrderDocDT.decLineDiscAmt) AS DocumentDisc,SUM(tblOrderDocDT.decLineTaxAmt) AS Tax, '' as CustLocName, '' as CustDesc FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID WHERE (tblOrderDoc.intDocType = 1) AND (tblOrderDoc.bitCleared = 0) AND (strCustName = @SQCustomer) GROUP BY tblOrderDoc.strOrdDocID, tblOrderDoc.dteJournalDate, tblOrderDoc.dteRequired, tblOrderDoc.decTotal ORDER BY tblOrderDoc.dteJournalDate,tblOrderDoc.strOrdDocID
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[OpenSalesOrdersIBTSummary]
-- Add the parameters for the stored procedure here
@SQstrLocation VARCHAR(MAX) = NULL,
@BitCustomer BIT = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF @BitCustomer = 0 
BEGIN
SELECT strInvTrfOrdDocID as InvTrfOrdDocID,dteJournalDate as JournalDate,dteReceivingDate as ReceivingDate,tblInvTrfOrdDoc.strLocName as LocName FROM tblInvTrfOrdDoc WHERE bitCleared = 0 ORDER BY strLocName,strInvTrfOrdDocID
END
Else
BEGIN
SELECT strInvTrfOrdDocID as InvTrfOrdDocID,dteJournalDate as JournalDate,dteReceivingDate as ReceivingDate, '' as LocName  FROM tblInvTrfOrdDoc WHERE bitCleared = 0 AND strLocName = @SQstrLocation
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[OpenSalesAllOrderDetail]
-- Add the parameters for the stored procedure here
@SQCustomer VARCHAR(MAX) = NULL,
@BitCustomer BIT = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF @BitCustomer = 0 
BEGIN
SELECT tblOrderDoc.strOrdDocID as OrdDocID,tblOrderDoc.dteJournalDate as JournalDate,tblOrderDoc.dteRequired as DateRequired,tblOrderDoc.decSubTotal as SubTotal,CASE tblOrderDocDT.decQty WHEN tblOrderDocDT.decQtyRemaining THEN tblOrderDocDT.decLineTotExc ELSE (tblOrderDocDT.decLineTotExc / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining END as SubTotal1,tblOrderDocDT.strPartNumber as PartNumber,tblOrderDocDT.decQty as Qty,tblOrderDocDT.decQtyRemaining as QtyRemaining,tblOrderDocDT.strPartDesc as PartDesc ,tblInv.decSumOnHand as SumOnHand,tblOrderDoc.strCustName AS CustLocName,tblCustomers.strCustDesc as CustDesc FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID INNER JOIN tblInv ON tblInv.strPartNumber = tblOrderDocDT.strPartNumber INNER JOIN tblCustomers ON tblCustomers.strCustName = tblOrderDoc.strCustName WHERE (tblOrderDoc.intDocType = 1) AND (tblOrderDoc.bitCleared = 0) 
UNION ALL 
SELECT tblInvTrfOrdDoc.strInvTrfOrdDocID as OrdDocID,tblInvTrfOrdDoc.dteJournalDate  as JournalDate,tblInvTrfOrdDoc.dteReceivingDate as DateRequired, 0 SubTotal, 0 SubTotal1, tblInvTrfOrdDocDT.strPartNumber as PartNumber, tblInvTrfOrdDocDT.decQty as Qty, tblInvTrfOrdDocDT.decQtyRemaining as QtyRemaining, tblInv.strDesc as PartDesc, tblInv.decSumOnHand as SumOnHand, tblInvTrfOrdDoc.strLocName AS CustLocName, '' as CustDesc FROM tblInvTrfOrdDoc INNER JOIN tblInvTrfOrdDocDT ON tblInvTrfOrdDoc.strInvTrfOrdDocID = tblInvTrfOrdDocDT.strInvTrfOrdDocID INNER JOIN tblInv ON tblInv.strPartNumber = tblInvTrfOrdDocDT.strPartNumber WHERE bitCleared = 0 ORDER BY CustLocName, dteJournalDate,OrdDocID
END
ELSE
BEGIN
SELECT tblOrderDoc.strOrdDocID as OrdDocID, tblOrderDoc.dteJournalDate as JournalDate, tblOrderDoc.dteRequired as DateRequired, tblOrderDoc.decSubTotal as SubTotal, CASE tblOrderDocDT.decQty WHEN tblOrderDocDT.decQtyRemaining THEN tblOrderDocDT.decLineTotExc ELSE (tblOrderDocDT.decLineTotExc / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining END as SubTotal1 , tblOrderDocDT.strPartNumber  as PartNumber, tblOrderDocDT.decQty as Qty, tblOrderDocDT.decQtyRemaining as QtyRemaining, tblOrderDocDT.strPartDesc  as PartDesc, tblInv.decSumOnHand as SumOnHand,'' AS CustLocName,'' as CustDesc  FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID INNER JOIN tblInv ON tblInv.strPartNumber = tblOrderDocDT.strPartNumber WHERE (tblOrderDoc.intDocType = 1) AND (tblOrderDoc.bitCleared = 0) AND (strCustName = @SQCustomer)
ORDER BY tblOrderDoc.dteJournalDate,OrdDocID
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[OpenSaleOrdersIBTDetail]
-- Add the parameters for the stored procedure here
@SQstrLocation VARCHAR(MAX) = NULL,
@BitCustomer BIT = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF @BitCustomer = 0 
BEGIN
SELECT tblInvTrfOrdDoc.strInvTrfOrdDocID as InvTrfOrdDocID,tblInvTrfOrdDoc.dteJournalDate as JournalDate,tblInvTrfOrdDoc.dteReceivingDate as ReceivingDate,tblInvTrfOrdDocDT.strPartNumber as PartNumber,tblInvTrfOrdDocDT.decQty as Qty,tblInvTrfOrdDocDT.decQtyRemaining as QtyRemaining,tblInv.decSumOnHand as SumOnHand,tblInv.strDesc as Descriptions,tblInvTrfOrdDoc.strLocName as LocName FROM tblInvTrfOrdDoc INNER JOIN tblInvTrfOrdDocDT ON tblInvTrfOrdDoc.strInvTrfOrdDocID = tblInvTrfOrdDocDT.strInvTrfOrdDocID INNER JOIN tblInv ON tblInv.strPartNumber = tblInvTrfOrdDocDT.strPartNumber WHERE bitCleared = 0 ORDER BY tblInvTrfOrdDoc.strLocName,tblInvTrfOrdDoc.dteJournalDate,tblInvTrfOrdDoc.strInvTrfOrdDocID
END
ELSE
BEGIN
SELECT tblInvTrfOrdDoc.strInvTrfOrdDocID as InvTrfOrdDocID,tblInvTrfOrdDoc.dteJournalDate as JournalDate,tblInvTrfOrdDoc.dteReceivingDate as ReceivingDate,tblInvTrfOrdDocDT.strPartNumber as PartNumber,tblInvTrfOrdDocDT.decQty as Qty,tblInvTrfOrdDocDT.decQtyRemaining as QtyRemaining,tblInv.decSumOnHand as SumOnHand,tblInv.strDesc as Descriptions, '' as LocName FROM tblInvTrfOrdDoc INNER JOIN tblInvTrfOrdDocDT ON tblInvTrfOrdDoc.strInvTrfOrdDocID = tblInvTrfOrdDocDT.strInvTrfOrdDocID INNER JOIN tblInv ON tblInv.strPartNumber = tblInvTrfOrdDocDT.strPartNumber WHERE bitCleared=0 AND strLocName = @SQstrLocation ORDER BY tblInvTrfOrdDoc.dteJournalDate,tblInvTrfOrdDoc.strInvTrfOrdDocID
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptAROrderStatementGridLoad]
-- Add the parameters for the stored procedure here
@SQSearch BIT = NULL,
@SQSearchText VARCHAR(MAX) = Null,
@SQInActive BIT = Null,
@SQUserName VARCHAR(MAX) = NULL,
@SQConsolidated INT = NULL
AS
BEGIN
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF(@SQSearch = 1)
BEGIN
IF(@SQInActive = 1)
BEGIN
SET @sql = 'SELECT DISTINCT CASE WHEN PCUST.intNAPrintMethod = '+CONVERT(VARCHAR(5), @SQConsolidated)+' THEN PCUST.strCustName ELSE tblCustomers.strCustName END As CustName, CASE WHEN PCUST.intNAPrintMethod = '+CONVERT(VARCHAR(5), @SQConsolidated)+' THEN PCUST.strCustDesc ELSE tblCustomers.strCustDesc END As CustDesc, CASE WHEN PCUST.intNAPrintMethod = '+CONVERT(VARCHAR(5), @SQConsolidated)+' THEN PCUST.strEmailOso ELSE tblCustomers.strEmailOso END As EmailOso FROM tblOrderDoc INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName LEFT JOIN tblCustomers PCUST ON tblCustomers.strParentCust = PCUST.strCustName WHERE (intDocType = 1) AND (bitCleared = 0) AND (tblCustomers.strCustName LIKE ''%'+@SQSearchText+'%'' OR tblCustomers.strCustDesc LIKE ''%'+@SQSearchText+'%'')'
END
ELSE
BEGIN
SET @sql = 'SELECT DISTINCT CASE WHEN PCUST.intNAPrintMethod = '+CONVERT(VARCHAR(5), @SQConsolidated)+' THEN PCUST.strCustName ELSE tblCustomers.strCustName END As CustName, CASE WHEN PCUST.intNAPrintMethod = '+CONVERT(VARCHAR(5), @SQConsolidated)+' THEN PCUST.strCustDesc ELSE tblCustomers.strCustDesc END As CustDesc, CASE WHEN PCUST.intNAPrintMethod = '+CONVERT(VARCHAR(5), @SQConsolidated)+' THEN PCUST.strEmailOso ELSE tblCustomers.strEmailOso END As EmailOso FROM tblOrderDoc INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName LEFT JOIN tblCustomers PCUST ON tblCustomers.strParentCust = PCUST.strCustName WHERE (tblCustomers.bitInactive = 0) AND (intDocType = 1) AND (bitCleared = 0) AND (tblCustomers.strCustName LIKE ''%'+@SQSearchText+'%'' OR tblCustomers.strCustDesc LIKE ''%'+@SQSearchText+'%'')'
END
END

ELSE
BEGIN
IF(@SQInActive = 1)
BEGIN
SET @sql = 'SELECT DISTINCT CASE WHEN PCUST.intNAPrintMethod = '+CONVERT(VARCHAR(5), @SQConsolidated)+' THEN PCUST.strCustName ELSE tblCustomers.strCustName END As CustName, CASE WHEN PCUST.intNAPrintMethod = '+CONVERT(VARCHAR(5), @SQConsolidated)+' THEN PCUST.strCustDesc ELSE tblCustomers.strCustDesc END As CustDesc, CASE WHEN PCUST.intNAPrintMethod = '+CONVERT(VARCHAR(5), @SQConsolidated)+' THEN PCUST.strEmailOso ELSE tblCustomers.strEmailOso END As EmailOso FROM tblOrderDoc INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName LEFT JOIN tblCustomers PCUST ON tblCustomers.strParentCust = PCUST.strCustName WHERE (intDocType = 1) AND (bitCleared = 0)'
END
ELSE
BEGIN
SET @sql = 'SELECT DISTINCT CASE WHEN PCUST.intNAPrintMethod = '+CONVERT(VARCHAR(5), @SQConsolidated)+' THEN PCUST.strCustName ELSE tblCustomers.strCustName END As CustName, CASE WHEN PCUST.intNAPrintMethod = '+CONVERT(VARCHAR(5), @SQConsolidated)+' THEN PCUST.strCustDesc ELSE tblCustomers.strCustDesc END As CustDesc, CASE WHEN PCUST.intNAPrintMethod = '+CONVERT(VARCHAR(5), @SQConsolidated)+' THEN PCUST.strEmailOso ELSE tblCustomers.strEmailOso END As EmailOso FROM tblOrderDoc INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName LEFT JOIN tblCustomers PCUST ON tblCustomers.strParentCust = PCUST.strCustName WHERE (tblCustomers.bitInactive = 0) AND (intDocType = 1) AND (bitCleared = 0)'
END
END
SET @sql += ' AND tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@SQUserName+'''))'
SET @sql += ' ORDER BY CASE WHEN PCUST.intNAPrintMethod = '+CONVERT(VARCHAR(5), @SQConsolidated)+' THEN PCUST.strCustName ELSE tblCustomers.strCustName END'
print @sql
EXEC (@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPCustStatOrdersOpt1]
(
@SQConsolidated INT=0,
@SQCustomer AS VARCHAR(100) = NULL
)
AS
BEGIN
SELECT 
tblOrderDoc.strOrdDocID, 
tblOrderDoc.dteJournalDate, 
tblOrderDoc.dteRequired, 
tblOrderDoc.decSubTotal, 
CASE tblOrderDocDT.decQty WHEN tblOrderDocDT.decQtyRemaining THEN tblOrderDocDT.decLineTotExc ELSE (tblOrderDocDT.decLineTotExc / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining END AS decTotal, 
tblOrderDocDT.strPartNumber, 
tblOrderDocDT.decQty, 
tblOrderDocDT.decQtyRemaining, 
tblOrderDocDT.strPartDesc, 
tblInv.decSumOnHand 
FROM 
tblOrderDoc 
INNER JOIN 
tblOrderDocDT 
ON 
tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID 
INNER JOIN 
tblInv 
ON 
tblInv.strPartNumber = tblOrderDocDT.strPartNumber 
WHERE 
(tblOrderDoc.intDocType = 1) AND (tblOrderDoc.bitCleared = 0) 
AND 
(tblOrderDoc.strCustName = @SQCustomer OR tblOrderDoc.strCustName IN (SELECT CUST1.strCustName FROM tblCustomers CUST1 WHERE CUST1.strParentCust = (SELECT CUST2.strCustName FROM tblCustomers CUST2 WHERE CUST2.strCustName = @SQCustomer AND CUST2.intNAPrintMethod = @SQConsolidated))) 
ORDER BY 
tblOrderDoc.dteJournalDate
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPCustStatOrdersOpt4]
(
@SQConsolidated INT=0,
@SQCustomer AS VARCHAR(100) = NULL
)
as
begin
SELECT 
tblOrderDoc.strOrdDocID, 
tblOrderDoc.strReference, 
tblOrderDoc.strAddInfo, 
tblOrderDoc.dteJournalDate, 
tblOrderDoc.dteRequired, 
tblOrderDoc.decTotal, 
SUM((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) * ((tblOrderDocDT.decQty - tblOrderDocDT.decQtyRemaining)/tblOrderDocDT.decQty)) AS decInvoiced ,
SUM((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) * (tblOrderDocDT.decQtyRemaining/tblOrderDocDT.decQty)) AS decOutstanding
FROM 
tblOrderDoc 
INNER JOIN 
tblOrderDocDT 
ON 
tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
WHERE 
(tblOrderDoc.intDocType = 1) AND (tblOrderDoc.bitCleared = 0) AND (tblOrderDoc.strCustName = @SQCustomer OR tblOrderDoc.strCustName IN (SELECT CUST1.strCustName FROM tblCustomers CUST1 WHERE CUST1.strParentCust = (SELECT CUST2.strCustName FROM tblCustomers CUST2 WHERE CUST2.strCustName = @SQCustomer AND CUST2.intNAPrintMethod = @SQConsolidated)))
GROUP BY 
tblOrderDoc.strOrdDocID, tblOrderDoc.strReference, tblOrderDoc.strAddInfo, tblOrderDoc.dteJournalDate, tblOrderDoc.dteRequired, tblOrderDoc.decTotal ORDER BY tblOrderDoc.dteJournalDate
END
GO

----------------------------------------------------
CREATE Procedure [dbo].[SPCustStatOrdersOpt5]
AS
BEGIN
SELECT * FROM tblCompany
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARSalesPersonPerfSumUnGroup]
	-- Add the parameters for the stored procedure here
	@SQRef VARCHAR(MAX) = NULL
	,@SQStart DATETIME = NULL
	,@SQEnd DATETIME = NULL
	,@SQLineLevel BIT = NULL
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @sql VARCHAR(max) = ''
	IF(@SQLineLevel = 1)
	BEGIN
		SET @sql = 'SELECT Z.strSalesName AS SalesPerson, SUM(Z.TotalSales) AS TotalSales, SUM(Z.Revenue) AS Revenue, SUM(Z.COGS) AS COGS, SUM(Z.GP) AS GP FROM (SELECT ISNULL(DTL.strSalesName,''<< No Sales Person >>'') AS strSalesName, ISNULL(DTL.decLineTotExc + DTL.decLineTaxAmt,0) AS TotalSales ,ISNULL(tblInvTrackingDT.decRevenue, DTL.decLineTotExc) AS Revenue ,ISNULL(tblInvTrackingDT.decCOGS, DTL.decCOGS) AS COGS ,ISNULL(tblInvTrackingDT.decRevenue, DTL.decLineTotExc) - ISNULL(tblInvTrackingDT.decCOGS, DTL.decCOGS) AS GP FROM tblInvoiceDoc AS MASTERTABLE INNER JOIN tblInvoiceDocDT DTL ON MASTERTABLE.strInvDocID = DTL.strInvDocID LEFT JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = MASTERTABLE.lngInvTrackID AND tblInvTracking.intModule = 2 LEFT JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID AND tblInvTrackingDT.intLineNo = DTL.intLineNo WHERE (MASTERTABLE.dteJournalDate BETWEEN ''' + CONVERT(VARCHAR(30), @SQStart) + ''' AND ''' + CONVERT(VARCHAR(30), @SQEnd) + ''') AND (tblInvTracking.intModule = 2)) Z  WHERE (' + @SQRef + ')  GROUP BY Z.strSalesName ORDER BY Z.strSalesName'
	END
	ELSE
	BEGIN
		SET @sql = 'SELECT ISNULL(MASTERTABLE.strSalesName,''<< No Sales Person >>'') AS SalesPerson, ISNULL((SELECT SUM(decTotal) AS TotalSales FROM tblInvoiceDoc WHERE (dteJournalDate BETWEEN ''' + CONVERT(VARCHAR(30), @SQStart) + ''' AND ''' + CONVERT(VARCHAR(30), @SQEnd) + ''') AND ISNULL(strSalesName,'''') = ISNULL(MASTERTABLE.strSalesName,'''')),0) AS TotalSales, SUM(DTL.decLineTotExc) AS Revenue, SUM(DTL.decCOGS) AS COGS, SUM(DTL.decLineTotExc) - SUM(DTL.decCOGS) AS GP FROM tblInvoiceDoc AS MASTERTABLE INNER JOIN tblInvoiceDocDT DTL ON MASTERTABLE.strInvDocID = DTL.strInvDocID WHERE (MASTERTABLE.dteJournalDate BETWEEN ''' + CONVERT(VARCHAR(30), @SQStart) + ''' AND ''' + CONVERT(VARCHAR(30), @SQEnd) + ''')  AND (' + @SQRef + ') GROUP BY MASTERTABLE.strSalesName ORDER BY MASTERTABLE.strSalesName'
	END
	PRINT @sql
	EXEC (@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARSalesPersonPerfSumGrpInvCatgory]
-- Add the parameters for the stored procedure here
@SQRef   VARCHAR(MAX) = NULL,
@SQStart DateTime = Null,
@SQEnd DateTime = Null,
@SQLineLevel BIT = NULL
AS
BEGIN
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF(@SQLineLevel = 1)
BEGIN
	SET @sql ='SELECT Z.strSalesName AS SalesPerson, Z.strCategory AS Category, SUM(Z.Revenue) AS Revenue, SUM(Z.COGS) AS COGS, SUM(Z.GP) AS GP FROM (SELECT ISNULL(DTL.strSalesName,''<< No Sales Person >>'') AS strSalesName, ISNULL(tblInv.strCategory,'''') AS strCategory, ISNULL(tblInvTrackingDT.decRevenue, DTL.decLineTotExc) AS Revenue, ISNULL(tblInvTrackingDT.decCOGS, DTL.decCOGS) AS COGS, ISNULL(tblInvTrackingDT.decRevenue, DTL.decLineTotExc) - ISNULL(tblInvTrackingDT.decCOGS, DTL.decCOGS) AS GP FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT DTL ON tblInvoiceDoc.strInvDocID = DTL.strInvDocID LEFT JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvoiceDoc.lngInvTrackID AND tblInvTracking.intModule = 2 LEFT JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID AND tblInvTrackingDT.intLineNo = DTL.intLineNo INNER JOIN tblInv ON DTL.strPartNumber = tblInv.strPartNumber WHERE (tblInvoiceDoc.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''')) Z  WHERE  (' + @SQRef + ')  GROUP BY Z.strSalesName, Z.strCategory ORDER BY Z.strSalesName, Z.strCategory'
END
ELSE
BEGIN
	SET @sql = 'SELECT ISNULL(tblInvoiceDoc.strSalesName,''<< No Sales Person >>'') AS SalesPerson, ISNULL(tblInv.strCategory,'''') AS Category, SUM(DTL.decLineTotExc) AS Revenue, SUM(DTL.decCOGS) AS COGS, SUM(DTL.decLineTotExc) - SUM(DTL.decCOGS) AS GP FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT DTL ON tblInvoiceDoc.strInvDocID = DTL.strInvDocID INNER JOIN tblInv ON DTL.strPartNumber = tblInv.strPartNumber WHERE (tblInvoiceDoc.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''')  ' +  'AND (' + @SQRef + ')  GROUP BY tblInvoiceDoc.strSalesName, tblInv.strCategory ORDER BY tblInvoiceDoc.strSalesName, tblInv.strCategory'
END
PRINT @sql
EXEC (@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARSalesPersonPerfDetailUnGrpInv]
@SQRef   VARCHAR(MAX) = NULL,
@SQStart DateTime = Null,
@SQEnd DateTime = Null,
@SQLineLevel BIT = NULL
AS
BEGIN
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF(@SQLineLevel = 1)
BEGIN
 SET @sql = 'SELECT Z.strSalesName AS SalesPerson, Z.strCustDesc AS CustomerDesc, Z.dteJournalDate AS Dates, Z.strInvDocID AS Document, Z.strCustName AS Customer, SUM(Z.TotalSales) AS TotalSales, SUM(Z.Revenue) AS Revenue, SUM(Z.COGS) AS COGS, SUM(Z.Revenue - Z.COGS) AS GP FROM (SELECT ISNULL(DTL.strSalesName,''<< No Sales Person >>'') AS strSalesName, tblCustomers.strCustDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, tblInvoiceDoc.strCustName, DTL.decLineTotExc + DTL.decLineTaxAmt AS TotalSales, CASE WHEN DTL.bitDiscountTax = 0 THEN DTL.decLineTotExc ELSE 0 END AS Revenue, ISNULL(tblInvTrackingDT.decCOGS, DTL.decCOGS) AS COGS FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT DTL ON tblInvoiceDoc.strInvDocID = DTL.strInvDocID LEFT JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvoiceDoc.lngInvTrackID AND tblInvTracking.intModule = 2 LEFT JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID AND tblInvTrackingDT.intLineNo = DTL.intLineNo INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName WHERE (tblInvoiceDoc.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''')) Z   WHERE (' + @SQRef + ')  GROUP BY Z.strSalesName, Z.strCustDesc, Z.strInvDocID, Z.dteJournalDate, Z.strCustName ORDER BY Z.strSalesName, Z.dteJournalDate, Z.strInvDocID'
END
ELSE
BEGIN
SET @sql = 'SELECT ISNULL(tblInvoiceDoc.strSalesName,''<< No Sales Person >>'') AS SalesPerson, (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblInvoiceDoc.strCustName) AS CustomerDesc, tblInvoiceDoc.dteJournalDate AS Dates, tblInvoiceDoc.strInvDocID AS Document, tblInvoiceDoc.strCustName AS Customer, tblInvoiceDoc.decTotal AS TotalSales, (tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt) AS Revenue, SUM(DTL.decCOGS) AS COGS, (tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt) - SUM(DTL.decCOGS) AS GP FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT DTL ON tblInvoiceDoc.strInvDocID = DTL.strInvDocID WHERE (tblInvoiceDoc.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''')  AND (' + @SQRef + ')  GROUP BY tblInvoiceDoc.strSalesName, tblInvoiceDoc.strInvDocID, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strCustName, tblInvoiceDoc.decTotal, tblInvoiceDoc.decSubTotal, tblInvoiceDoc.decDiscAmt ORDER BY tblInvoiceDoc.strSalesName, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID'
END
PRINT @sql
EXEC (@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARSalesPersonPerfDetailGrpInvCategory]
-- Add the parameters for the stored procedure here
@SQRef   VARCHAR(MAX) = NULL,
@SQStart DateTime = Null,
@SQEnd DateTime = Null,
@SQLineLevel BIT = NULL
AS
BEGIN
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF(@SQLineLevel = 1)
BEGIN
SET @sql = 'SELECT Z.strSalesName As SalesPerson, Z.strCategory As Category, Z.strCustDesc As CustDesc, Z.dteJournalDate As Dates, Z.strInvDocID As Document, Z.strCustName As Customer, Z.Revenue AS Revenue, Z.COGS AS COGS, Z.Revenue - Z.COGS AS GP FROM (SELECT ISNULL(DTL.strSalesName,''<< No Sales Person >>'') AS strSalesName, ISNULL(tblInv.strCategory,'''') AS strCategory, tblCustomers.strCustDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, tblInvoiceDoc.strCustName, DTL.decLineTotExc AS Revenue, ISNULL(tblInvTrackingDT.decCOGS, DTL.decCOGS) AS COGS FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT DTL ON tblInvoiceDoc.strInvDocID = DTL.strInvDocID LEFT JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvoiceDoc.lngInvTrackID AND tblInvTracking.intModule = 2 LEFT JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID AND tblInvTrackingDT.intLineNo = DTL.intLineNo INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName INNER JOIN tblInv ON DTL.strPartNumber = tblInv.strPartNumber WHERE (tblInvoiceDoc.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''')) Z '
END
ELSE
BEGIN
SET @sql = 'SELECT ISNULL(tblInvoiceDoc.strSalesName,''<< No Sales Person >>'') AS SalesPerson, ISNULL(tblInv.strCategory,'''') AS Category, (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblInvoiceDoc.strCustName) AS CustDesc, tblInvoiceDoc.dteJournalDate Dates, tblInvoiceDoc.strInvDocID As Document, tblInvoiceDoc.strCustName As Customer, (tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt) AS Revenue, DTL.decCOGS AS COGS, (tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt) - DTL.decCOGS AS GP FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT DTL ON tblInvoiceDoc.strInvDocID = DTL.strInvDocID INNER JOIN tblInv ON DTL.strPartNumber = tblInv.strPartNumber WHERE (tblInvoiceDoc.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') '
END
PRINT @sql
EXEC (@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARSalesPersonPerfDetailAC]
-- Add the parameters for the stored procedure here
@SQRef   VARCHAR(MAX) = NULL,
@SQStart DateTime = Null,
@SQEnd DateTime = Null,
@SQLineLevel BIT = NULL
AS
BEGIN
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF(@SQLineLevel = 1)
BEGIN
SET @sql = 'SELECT Z.strSalesName As SalesPerson, Z.dteJournalDate As Dates, Z.strInvDocID As Document, Z.strPartNumber As Number, Z.QtySold, Z.OnHand, Z.TotalShort, Z.Revenue AS Revenue, Z.COGS AS COGS, Z.Revenue - Z.COGS AS GP FROM (SELECT ISNULL(DTL.strSalesName,''<< No Sales Person >>'') AS strSalesName, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, DTL.strPartNumber, ISNULL(tblInvTrackingDT.decQty, DTL.decQty) * -1 AS QtySold, ISNULL(tblInvTrackingDT.decOnHand, 0) AS OnHand, ISNULL(CASE WHEN tblInvTrackingDT.bitNegTrans = 0 THEN 0 WHEN tblInvTrackingDT.decQty > 0 THEN 0 WHEN tblInvTrackingDT.decQty + tblInvTrackingDT.decOnHand > 0 THEN 0 WHEN tblInvTrackingDT.decOnHand <= 0 THEN tblInvTrackingDT.decQty * -1 ELSE tblInvTrackingDT.decQty + tblInvTrackingDT.decOnHand END, 0) AS TotalShort, DTL.decLineTotExc AS Revenue, ISNULL(tblInvTrackingDT.decCOGS, DTL.decCOGS) AS COGS FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT DTL ON tblInvoiceDoc.strInvDocID = DTL.strInvDocID LEFT JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvoiceDoc.lngInvTrackID AND tblInvTracking.intModule = 2 LEFT JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID AND tblInvTrackingDT.intLineNo = DTL.intLineNo WHERE (tblInvoiceDoc.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''')) Z '
END
ELSE
BEGIN
SET @sql = 'SELECT ISNULL(tblInvoiceDoc.strSalesName,''<< No Sales Person >>'') AS SalesPerson, tblInvoiceDoc.dteJournalDate As Dates, tblInvoiceDoc.strInvDocID As Document, DTL.strPartNumber As Number, ISNULL(tblInvTrackingDT.decQty, DTL.decQty) * -1 AS QtySold, ISNULL(tblInvTrackingDT.decOnHand, 0) AS OnHand, ISNULL(CASE WHEN tblInvTrackingDT.bitNegTrans = 0 THEN 0 WHEN tblInvTrackingDT.decQty > 0 THEN 0 WHEN tblInvTrackingDT.decQty + tblInvTrackingDT.decOnHand > 0 THEN 0 WHEN tblInvTrackingDT.decOnHand <= 0 THEN tblInvTrackingDT.decQty * -1 ELSE tblInvTrackingDT.decQty + tblInvTrackingDT.decOnHand END, 0) AS TotalShort, ISNULL(tblInvTrackingDT.decRevenue, DTL.decLineTotExc) AS Revenue, ISNULL(tblInvTrackingDT.decCOGS, DTL.decCOGS) AS COGS, ISNULL(tblInvTrackingDT.decRevenue, DTL.decLineTotExc) - ISNULL(tblInvTrackingDT.decCOGS, DTL.decCOGS) AS GP FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT DTL ON tblInvoiceDoc.strInvDocID = DTL.strInvDocID LEFT JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvoiceDoc.lngInvTrackID AND tblInvTracking.intModule = 2 LEFT JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID AND tblInvTrackingDT.intLineNo = DTL.intLineNo WHERE (tblInvoiceDoc.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') '
END
PRINT @sql
EXEC (@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARSalesPersonPerfIFDrillDown]
-- Add the parameters for the stored procedure here
@SQRef   VARCHAR(MAX) = NULL,
@SQStart DateTime = Null,
@SQEnd DateTime = Null,
@SQLineLevel BIT = NULL
AS
BEGIN
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
SET
@sql = 'SELECT ISNULL(tblInvoiceDoc.strSalesName,''<< No Sales Person >>'') AS strSalesName, tblCustomers.strCustDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, tblInvoiceDoc.strCustName, tblInvoiceDoc.decTotal AS TotalSales, tblInvoiceDoc.decSubTotal AS Revenue, SUM(tblInvTrackingDT.decCOGS) AS COGS, tblInvoiceDoc.decSubTotal - SUM(tblInvTrackingDT.decCOGS) AS GP FROM tblInvoiceDoc INNER JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvoiceDoc.lngInvTrackID INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName WHERE (tblInvTracking.intModule = 2) AND (tblInvTracking.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''')  AND (ISNULL(tblInvoiceDoc.strSalesName, ''<< No Sales Person >>'') = '+@SQRef+') GROUP BY tblInvoiceDoc.strSalesName, tblCustomers.strCustDesc, tblInvoiceDoc.strInvDocID, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strCustName, tblInvoiceDoc.decTotal, tblInvoiceDoc.decSubTotal ORDER BY tblInvoiceDoc.strSalesName, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID'
PRINT @sql
EXEC (@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARSalesPersonPerfelseDrillDown]
-- Add the parameters for the stored procedure here
@SQRef   VARCHAR(MAX) = NULL,
@SQStart DateTime = Null,
@SQEnd DateTime = Null,
@SQLineLevel BIT = NULL
AS
BEGIN
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
SET
@sql = 'SELECT ISNULL(tblInvoiceDoc.strSalesName,''<< No Sales Person >>'') AS strSalesName, ISNULL(tblInv.strCategory,'''') AS strCategory, tblCustomers.strCustDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, tblInvoiceDoc.strCustName, tblInvTrackingDT.decRevenue, tblInvTrackingDT.decCOGS, tblInvTrackingDT.decRevenue - tblInvTrackingDT.decCOGS AS GP FROM tblInvoiceDoc INNER JOIN tblInvTracking ON tblInvoiceDoc.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName WHERE (tblInvoiceDoc.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''')  AND (ISNULL(tblInvoiceDoc.strSalesName, ''<< No Sales Person >>'') = '+@SQRef+') ORDER BY tblInvoiceDoc.strSalesName, tblInv.strCategory, tblInvoiceDoc.strCustName, tblInvoiceDoc.strInvDocID'
PRINT @sql
EXEC (@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARSalesPersonSalesDetail]
	-- Add the parameters for the stored procedure here  
	@RbtLineLevel BIT = NULL
	,@RbtAccountSets BIT = NULL
	,@RbtAssets BIT = NULL
	,@RbtItem BIT = NULL
	,@RbtService BIT = NULL
	,@RbtAll BIT = NULL
	,@SQStart DATETIME = NULL
	,@SQEnd DATETIME = NULL
	,@SQSalesName VARCHAR(MAX) = NULL
	,@SQSalesDocName VARCHAR(MAX) = NULL
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @sql VARCHAR(max) = ''

	IF (@RbtLineLevel = 1)
	BEGIN
		SET @sql = 'SELECT ISNULL(tblInvoiceDocDT.strSalesName , ''<< No Sales Person >>'')  as Name, tblInvoiceDoc.dteJournalDate as Date, tblInvoiceDocDT.strPartNumber as PartNumber, tblInvoiceDocDT.strPartDesc as PartDesc, tblInvoiceDoc.strInvDocID as DocNumber, tblInvoiceDoc.strReference as Reference, tblInvoiceDoc.lngJourID as Journal, tblInvoiceDocDT.decQty as Qty, tblInvoiceDocDT.decPriceEaExc as UnitCost, tblInvoiceDocDT.decLineTotExc as TotalCost, tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID WHERE'
	END
	ELSE
	BEGIN
		SET @sql = 'SELECT ISNULL(tblInvoiceDoc.strSalesName, ''<< No Sales Person >>'')  as Name, tblInvoiceDoc.dteJournalDate as Date, tblInvoiceDocDT.strPartNumber as PartNumber, tblInvoiceDocDT.strPartDesc  as PartDesc, tblInvoiceDoc.strInvDocID as DocNumber,
 tblInvoiceDoc.strReference as Reference, tblInvoiceDoc.lngJourID as Journal, tblInvoiceDocDT.decQty as Qty, tblInvoiceDocDT.decPriceEaExc as UnitCost, tblInvoiceDocDT.decLineTotExc as TotalCost, tblInvoiceDocDT.strUnit AS Unit FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID WHERE'
	END

	IF (@RbtAccountSets = 1)
	BEGIN
		SET @sql += ' (tblInvoiceDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInvExt WHERE strAcctSet IN (SELECT * FROM fnSplitStringAsTable(''' + @SQSalesName + ''','',''))))'
	END
	ELSE IF (@RbtAssets = 1)
	BEGIN
		SET @sql += ' (tblInvoiceDocDT.strPartNumber IN (SELECT tblInvExt.strPartNumber FROM tblInvExt INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(''' + @SQSalesName + ''','',''))))'
	END
	ELSE IF (@RbtItem = 1)
	BEGIN
		SET @sql += ' (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''' + @SQSalesName + ''', '','')))'
	END
	ELSE IF (@RbtService = 1)
	BEGIN
		SET @sql += ' (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''' + @SQSalesName + ''', '','')))'
	END
	ELSE IF (@RbtAll = 1)
	BEGIN
		SET @sql += ' (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''' + @SQSalesName + ''', '','')) OR (tblInvoiceDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 5)))'
	END

	IF (@RbtLineLevel = 1)
	BEGIN
		SET @sql += ' AND (ISNULL(tblInvoiceDocDT.strSalesName, ''<< No Sales Person >>'') IN (SELECT * FROM fnSplitStringAsTable(''' + @SQSalesDocName + ''', '','')))'
	END
	ELSE
	BEGIN
		SET @sql += ' AND (ISNULL(tblInvoiceDoc.strSalesName, ''<< No Sales Person >>'') IN (SELECT * FROM fnSplitStringAsTable(''' + @SQSalesDocName + ''', '','')))'
	END

	IF (@RbtLineLevel = 1)
	BEGIN
		SET @sql += ' AND (tblInvoiceDoc.dteJournalDate BETWEEN ''' + CONVERT(VARCHAR(30), @SQStart) + ''' AND ''' + CONVERT(VARCHAR(30), @SQEnd) + ''') ORDER BY tblInvoiceDocDT.strSalesName, tblInvoiceDoc.dteJournalDate, tblInvoiceDocDT.strPartNumber'
	END
	ELSE
	BEGIN
		SET @sql += ' AND (tblInvoiceDoc.dteJournalDate BETWEEN ''' + CONVERT(VARCHAR(30), @SQStart) + ''' AND ''' + CONVERT(VARCHAR(30), @SQEnd) + ''') ORDER BY tblInvoiceDoc.strSalesName, tblInvoiceDoc.dteJournalDate, tblInvoiceDocDT.strPartNumber'
	END

	PRINT @sql

	EXEC (@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARSalesPersonSalesSummary]
	-- Add the parameters for the stored procedure here  
	--@RbtSummary   BIT = NULL,  
	@RbtLineLevel BIT = NULL
	,@RbtAccountSets BIT = NULL
	,@RbtAssets BIT = NULL
	,@RbtItem BIT = NULL
	,@RbtService BIT = NULL
	,@RbtAll BIT = NULL
	,@SQStart DATETIME = NULL
	,@SQEnd DATETIME = NULL
	,@SQSalesName VARCHAR(MAX) = NULL
	,@SQSalesDocName VARCHAR(MAX) = NULL
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @sql VARCHAR(max) = ''

	IF (@RbtLineLevel = 1)
	BEGIN
		SET @sql = 'SELECT ISNULL(tblInvoiceDocDT.strSalesName, ''<< No Sales Person >>'') as Name, tblInvoiceDocDT.strPartNumber as PartNumber, tblInv.strDesc as PartDesc, COUNT(tblInvoiceDocDT.strPartNumber) as NumTrans, SUM(tblInvoiceDocDT.decQty) as Qty, CASE
 WHEN SUM(tblInvoiceDocDT.decQty) = 0 THEN SUM(tblInvoiceDocDT.decLineTotExc) ELSE SUM(tblInvoiceDocDT.decLineTotExc) / SUM(tblInvoiceDocDT.decQty) END as UnitCost, SUM(tblInvoiceDocDT.decLineTotExc) as TotalCost,tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber WHERE'
	END
	ELSE
	BEGIN
		SET @sql = 'SELECT ISNULL(tblInvoiceDoc.strSalesName, ''<< No Sales Person >>'') as Name, tblInvoiceDocDT.strPartNumber as PartNumber, tblInv.strDesc as PartDesc, COUNT(tblInvoiceDocDT.strPartNumber) as NumTrans, SUM(tblInvoiceDocDT.decQty) as Qty, CASE WHEN SUM(tblInvoiceDocDT.decQty) = 0 THEN SUM(tblInvoiceDocDT.decLineTotExc) ELSE SUM(tblInvoiceDocDT.decLineTotExc) / SUM(tblInvoiceDocDT.decQty) END as UnitCost, SUM(tblInvoiceDocDT.decLineTotExc) as TotalCost, tblInvoiceDocDT.strUnit AS Unit FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber WHERE'
	END

	IF (@RbtAccountSets = 1)
	BEGIN
		SET @sql += ' (tblInvoiceDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInvExt WHERE strAcctSet IN (SELECT * FROM fnSplitStringAsTable(''' + @SQSalesName + ''','',''))))'
	END
	ELSE IF (@RbtAssets = 1)
	BEGIN
		SET @sql += ' (tblInvoiceDocDT.strPartNumber IN (SELECT tblInvExt.strPartNumber FROM tblInvExt INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(''' + @SQSalesName + ''','',''))))'
	END
	ELSE IF (@RbtItem = 1)
	BEGIN
		SET @sql += ' (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''' + @SQSalesName + ''', '','')))'
	END
	ELSE IF (@RbtService = 1)
	BEGIN
		SET @sql += ' (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''' + @SQSalesName + ''', '','')))'
	END
	ELSE IF (@RbtAll = 1)
	BEGIN
		SET @sql += '(tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''' + @SQSalesName + ''', '','')) OR (tblInvoiceDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 5)))'
	END

	IF (@RbtLineLevel = 1)
	BEGIN
		SET @sql += ' AND (ISNULL(tblInvoiceDocDT.strSalesName, ''<< No Sales Person >>'') IN (SELECT * FROM fnSplitStringAsTable(''' + @SQSalesDocName + ''', '','')))'
	END
	ELSE
	BEGIN
		SET @sql += ' AND (ISNULL(tblInvoiceDoc.strSalesName, ''<< No Sales Person >>'') IN (SELECT * FROM fnSplitStringAsTable(''' + @SQSalesDocName + ''', '','')))'
	END

	IF (@RbtLineLevel = 1)
	BEGIN
		SET @sql += ' AND (tblInvoiceDoc.bitHistoryTrans = 0) AND (tblInvoiceDoc.dteJournalDate BETWEEN ''' + CONVERT(VARCHAR(30), @SQStart) + ''' AND ''' + CONVERT(VARCHAR(30), @SQEnd) + ''') GROUP BY tblInvoiceDocDT.strSalesName, tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInvoiceDocDT.strUnit  HAVING (SUM(tblInvoiceDocDT.decQty) <> 0 OR (SUM(tblInvoiceDocDT.decQty) = 0 AND SUM(tblInvoiceDocDT.decLineTotExc) <> 0)) ORDER BY tblInvoiceDocDT.strSalesName, tblInvoiceDocDT.strPartNumber'
	END
	ELSE
	BEGIN
		SET @sql += ' AND (tblInvoiceDoc.bitHistoryTrans = 0) AND (tblInvoiceDoc.dteJournalDate BETWEEN ''' + CONVERT(VARCHAR(30), @SQStart) + ''' AND ''' + CONVERT(VARCHAR(30), @SQEnd) + ''') GROUP BY tblInvoiceDoc.strSalesName, tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInvoiceDocDT.strUnit HAVING (SUM(tblInvoiceDocDT.decQty) <> 0 OR (SUM(tblInvoiceDocDT.decQty) = 0 AND SUM(tblInvoiceDocDT.decLineTotExc) <> 0)) ORDER BY tblInvoiceDoc.strSalesName, tblInvoiceDocDT.strPartNumber'
	END

	PRINT @sql

	EXEC (@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptBusinessCheckListLoad]
	-- Add the parameters for the stored procedure here
	@SQSearchBy VARCHAR(MAX) = NULL
	,@optSearch BIT = NULL
	,@chkInactive BIT = NULL
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	DECLARE @sql VARCHAR(max) = ''

	IF (@optSearch = 1)
	BEGIN
		IF (@chkInactive = 1)
		BEGIN
			SELECT strProjNumber
				,strProjName
			FROM tblProjects
			WHERE (
					(@SQSearchBy = '')
					OR (strProjNumber LIKE '%' + @SQSearchBy + '%')
					OR (strProjName LIKE '%' + @SQSearchBy + '%')
					)
			ORDER BY strProjNumber
		END
		ELSE
		BEGIN
			SELECT strProjNumber
				,strProjName
			FROM tblProjects
			WHERE (
					(@SQSearchBy = '')
					OR (strProjNumber LIKE '%' + @SQSearchBy + '%')
					OR (strProjName LIKE '%' + @SQSearchBy + '%')
					)
				AND (intStatus < 20)
			ORDER BY strProjNumber;
		END
	END
	ELSE
	BEGIN
		IF (@chkInactive = 1)
		BEGIN
			SELECT strProjNumber
				,strProjName
			FROM tblProjects
			ORDER BY strProjNumber
		END
		ELSE
		BEGIN
			SELECT strProjNumber
				,strProjName
			FROM tblProjects
			WHERE intStatus < 20
			ORDER BY strProjNumber
		END
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptBusinessCheckListReport]
-- Add the parameters for the stored procedure here
@SQRef varchar(Max) = NULL,
@optAll BIT = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
SET @sql = 'SELECT tblProjectsResources.lngID, tblProjectsResources.strProjNumber, tblProjects.strProjName, tblProjectsResources.strAssetCode, tblAssets.strAssetDesc, tblProjectsResources.strReference, tblProjectsResources.dteAssignedDate, tblProjectsResources.dteLeftDate FROM tblProjectsResources INNER JOIN tblAssets ON tblProjectsResources.strAssetCode = tblAssets.strAssetCode INNER JOIN tblProjects ON tblProjectsResources.strProjNumber = tblProjects.strProjNumber WHERE 1 = 1 '
IF(@optAll = 0)
BEGIN
SET @sql += ' AND ('+ @SQRef +') '
END
SET @sql += ' ORDER BY strProjNumber, lngID'
PRINT(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptBusinessCompHistoryGrid]
-- Add the parameters for the stored procedure here
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
--DECLARE @sql varchar(MAX) = ''
SELECT DISTINCT strUserName FROM tblDBHist ORDER BY strUserName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptBusinessCompHistoryReport]
-- Add the parameters for the stored procedure here
@SQRef varchar(Max) = NULL,
@SQStart Date = NULL,
@SQEnd Date = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
SET @sql = 'SELECT strUserName, dteLocal, dteServer, dteSession, strMachineName FROM tblDBHist WHERE (dteLocal BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') AND  ('+ @SQRef +')  ORDER BY strUserName, dteLocal DESC '
PRINT(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptBusinessMissingAllocations]
-- Add the parameters for the stored procedure here
@SQStart DateTime, 
@SQFinish DateTime,
@SQPayType int,
@SQRecType int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT strOrdDocID
	,dteJournalDate
	,strUserName
	,strCustName
	,(
		SELECT strCustDesc
		FROM tblCustomers
		WHERE strCustName = tblOrderDoc.strCustName
		)
	,decTotal
FROM tblOrderDoc
WHERE strOrdDocID NOT IN (
		SELECT strOrdDocID
		FROM tblOrderDocDTPrj
		)
	AND (
		dteJournalDate BETWEEN @SQStart
			AND @SQFinish
		)

UNION ALL

SELECT ProcessDocID
	,DocumentDate
	,CreatedBy AS strUserName
	,CustomerCode
	,(
		SELECT strCustDesc
		FROM tblCustomers
		WHERE strCustName = tblWSProcessDoc.CustomerCode
		) AS strCustName
	,Total
FROM tblWSProcessDoc
WHERE ProcessDocID NOT IN (
		SELECT strOrdDocID
		FROM tblWSOrderDocDTPrj
		)
	AND (
		DocumentDate BETWEEN @SQStart
			AND @SQFinish
		)

UNION ALL

SELECT strInvDocID
	,dteJournalDate
	,strUserName
	,strCustName
	,(
		SELECT strCustDesc
		FROM tblCustomers
		WHERE strCustName = tblInvoiceDoc.strCustName
		)
	,decTotal
FROM tblInvoiceDoc
WHERE strInvDocID NOT IN (
		SELECT strInvDocID
		FROM tblInvoiceDocDTPrj
		)
	AND (bitHistoryTrans = 0)
	AND (bitReserved = 0)
	AND (
		dteJournalDate BETWEEN @SQStart
			AND @SQFinish
		)

UNION ALL

SELECT strOrdPDocID
	,dteJournalDate
	,strUserName
	,strVendName
	,(
		SELECT strVendDesc
		FROM tblVendors
		WHERE strVendName = tblOrderDocP.strVendName
		)
	,decTotal
FROM tblOrderDocP
WHERE strOrdPDocID NOT IN (
		SELECT strOrdPDocID
		FROM tblOrderDocPDTPrj
		)
	AND (
		dteJournalDate BETWEEN @SQStart
			AND @SQFinish
		)

UNION ALL

SELECT strOrdPGDocID
	,dteJournalDate
	,strUserName
	,strVendName
	,(
		SELECT strVendDesc
		FROM tblVendors
		WHERE strVendName = tblOrderDocPG.strVendName
		)
	,decTotal
FROM tblOrderDocPG
WHERE strOrdPGDocID NOT IN (
		SELECT strOrdPGDocID
		FROM tblOrderDocPGDTPrj
		)
	AND (
		dteJournalDate BETWEEN @SQStart
			AND @SQFinish
		)

UNION ALL

SELECT strInvPDocID
	,dteJournalDate
	,strUserName
	,strVendName
	,(
		SELECT strVendDesc
		FROM tblVendors
		WHERE strVendName = tblInvoiceDocP.strVendName
		)
	,decTotal
FROM tblInvoiceDocP
WHERE strInvPDocID NOT IN (
		SELECT strInvPDocID
		FROM tblInvoiceDocPDTPrj
		)
	AND (bitHistoryTrans = 0)
	AND (
		dteJournalDate BETWEEN @SQStart
			AND @SQFinish
		)

UNION ALL

SELECT strOrdDocID
	,dteJournalDate
	,strUserName
	,ISNULL(strCustName, '') AS strCustName
	,ISNULL((
			SELECT strCustDesc
			FROM tblCustomers
			WHERE strCustName = tblOrderDocQ.strCustName
			), '')
	,decTotal
FROM tblOrderDocQ
WHERE strOrdDocID NOT IN (
		SELECT strOrdDocID
		FROM tblOrderDocQDTPrj
		)
	AND (
		dteJournalDate BETWEEN @SQStart
			AND @SQFinish
		)

UNION ALL

SELECT strJEDocID AS strOrdDocID
	,dteJournalDate
	,strUserName
	,ISNULL(CONVERT(NVARCHAR(50), intGLNumber), '') AS strCustName
	,'Payment Journal - ' + strComment
	,decCredits AS decTotal
FROM tblJournalEntryDocCB
WHERE strJEDocID NOT IN (
		SELECT strJEDocID
		FROM tblJournalEntryDocCBDTPrj
		WHERE intType = @SQPayType
		)
	AND (
		dteJournalDate BETWEEN @SQStart
			AND @SQFinish
		)

UNION ALL

SELECT strJEDocID AS strOrdDocID
	,dteJournalDate
	,strUserName
	,ISNULL(CONVERT(NVARCHAR(50), intGLNumber), '') AS strCustName
	,'Receipt Journal - ' + strComment
	,(decDebits * - 1) AS decTotal
FROM tblJournalEntryDocCB
WHERE strJEDocID NOT IN (
		SELECT strJEDocID
		FROM tblJournalEntryDocCBDTPrj
		WHERE intType = @SQRecType
		)
	AND (
		dteJournalDate BETWEEN @SQStart
			AND @SQFinish
		)

UNION ALL

SELECT tblJournalEntryDoc.strJEDocID AS strOrdDocID
	,dteJournalDate
	,strUserName
	,'' AS strCustName
	,'Journal Entry - ' + strComment
	,SUM(decDebits - decCredits) AS decTotal
FROM tblJournalEntryDoc
INNER JOIN tblJournalEntryDocDT ON tblJournalEntryDoc.strJEDocID = tblJournalEntryDocDT.strJEDocID
WHERE tblJournalEntryDoc.strJEDocID NOT IN (
		SELECT strJEDocID
		FROM tblJournalEntryDocDTPrj
		)
	AND (
		dteJournalDate BETWEEN @SQStart
			AND @SQFinish
		)
GROUP BY tblJournalEntryDoc.strJEDocID
	,dteJournalDate
	,strUserName
	,strComment

UNION ALL

SELECT strOrdDADocID
	,dteJournalDate
	,strUserName
	,strCustName
	,(
		SELECT strCustDesc
		FROM tblCustomers
		WHERE strCustName = tblOrderDocDA.strCustName
		)
	,decTotal
FROM tblOrderDocDA
WHERE strOrdDADocID NOT IN (
		SELECT strOrdDADocID
		FROM tblOrderDocDADTPrj
		)
	AND (
		dteJournalDate BETWEEN @SQStart
			AND @SQFinish
		)

UNION ALL

SELECT strAdjDocID
	,dteJournalDate
	,strUserName
	,'' AS strCustName
	,'Stock Adjustment - ' + strComment
	,decTotal
FROM tblInvAdjDoc
WHERE strAdjDocID NOT IN (
		SELECT strAdjDocID
		FROM tblInvAdjDocDTPrj
		)
	AND (
		dteJournalDate BETWEEN @SQStart
			AND @SQFinish
		)

UNION ALL

SELECT strInvIssReqDocID
	,dteJournalDate
	,strUserName
	,'' AS strCustName
	,'Stock Issue - ' + strComment
	,decTotal
FROM tblInvIssReqDoc
WHERE strInvIssReqDocID NOT IN (
		SELECT strInvIssReqDocID
		FROM tblInvIssReqDocDTPrj
		)
	AND (
		dteJournalDate BETWEEN @SQStart
			AND @SQFinish
		)

UNION ALL

SELECT strRepackDocID
	,dteJournalDate
	,strUserName
	,'' AS strCustName
	,'Stock Repack - ' + strComment
	,decTotalCostRepackaged
FROM tblInvRepackDoc
WHERE strRepackDocID NOT IN (
		SELECT strRepackDocID
		FROM tblInvRepackDocDTPrj
		)
	AND (
		dteJournalDate BETWEEN @SQStart
			AND @SQFinish
		)

UNION ALL

SELECT tblManJob.strJBDocID
	,dteJournalDate
	,strUserName
	,ISNULL(strCustName, '') AS strCustName
	,'Process Job - ' + tblManJob.strReference
	,MA.decManAmount AS decTotal
FROM tblManJob
INNER JOIN (
	SELECT T1.strJBDocID
		,SUM(T1.decManAmount) AS decManAmount
	FROM (
		SELECT tblManJob.strJBDocID
			,tblManJobCompInv.decManAmount
		FROM tblManJob
		INNER JOIN tblManJobCompInv ON tblManJob.strJBDocID = tblManJobCompInv.strJBDocID
		WHERE (
				tblManJob.dteJournalDate BETWEEN @SQStart
					AND @SQFinish
				)
		
		UNION ALL
		
		SELECT tblManJob.strJBDocID
			,tblManJobCompLab.decManAmount
		FROM tblManJob
		INNER JOIN tblManJobCompLab ON tblManJob.strJBDocID = tblManJobCompLab.strJBDocID
		WHERE (
				tblManJob.dteJournalDate BETWEEN @SQStart
					AND @SQFinish
				)
		
		UNION ALL
		
		SELECT tblManJob.strJBDocID
			,tblManJobCompMach.decManAmount
		FROM tblManJob
		INNER JOIN tblManJobCompMach ON tblManJob.strJBDocID = tblManJobCompMach.strJBDocID
		WHERE (
				tblManJob.dteJournalDate BETWEEN @SQStart
					AND @SQFinish
				)
		
		UNION ALL
		
		SELECT tblManJob.strJBDocID
			,tblManJobCompOverhead.decManAmount
		FROM tblManJob
		INNER JOIN tblManJobCompOverhead ON tblManJob.strJBDocID = tblManJobCompOverhead.strJBDocID
		WHERE (
				tblManJob.dteJournalDate BETWEEN @SQStart
					AND @SQFinish
				)
		) T1
	GROUP BY T1.strJBDocID
	) MA ON tblManJob.strJBDocID = MA.strJBDocID
WHERE (
		tblManJob.strJBDocID NOT IN (
			SELECT strJBDocID
			FROM tblManJobPrj
			)
		)
	AND (
		dteJournalDate BETWEEN @SQStart
			AND @SQFinish
		)

UNION ALL

SELECT strWIPDocID
	,tblManWIP.dteJournalDate
	,tblManWIP.strUserName
	,ISNULL(tblManJob.strCustName, '') AS strCustName
	,CASE 
		WHEN ISNULL(tblManJob.strCustName, '') = ''
			THEN 'Issue Work In Progress - ' + tblManJob.strReference
		ELSE ISNULL((
					SELECT strCustDesc
					FROM tblCustomers
					WHERE strCustName = tblManJob.strCustName
					), '')
		END
	,(
		SELECT SUM(decPostAmount)
		FROM tblManWIPCompInv
		WHERE tblManWIPCompInv.strWIPDocID = tblManWIP.strWIPDocID
		) AS decTotal
FROM tblManWIP
INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID
WHERE strWIPDocID NOT IN (
		SELECT strWIPDocID
		FROM tblManWIPPrj
		)
	AND (
		tblManWIP.dteJournalDate BETWEEN @SQStart
			AND @SQFinish
		)

UNION ALL

SELECT tblManJobClose.strJBDocID
	,tblManJobClose.dteJournalDate
	,tblManJobClose.strUserName
	,ISNULL(tblManJob.strCustName, '') AS strCustName
	,'Close Job - ' + tblManJob.strReference
	,decManAmount AS decTotal
FROM tblManJobClose
INNER JOIN tblManJob ON tblManJobClose.strJBDocID = tblManJob.strJBDocID
WHERE tblManJobClose.strJBDocID NOT IN (
		SELECT strJBDocID
		FROM tblManJobClosePrj
		)
	AND (
		tblManJobClose.dteJournalDate BETWEEN @SQStart
			AND @SQFinish
		)
ORDER BY strOrdDocID
	,dteJournalDate
	,strCustName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptProjectMatrixGrid]
	-- Add the parameters for the stored procedure here
	@SQSearchBy VARCHAR(MAX) = NULL
	,@OptSearch BIT = NULL
	,@ChkInactive BIT = NULL
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	DECLARE @sql VARCHAR(max) = ''

	IF (@OptSearch = 1)
	BEGIN
		IF (@ChkInactive = 1)
		BEGIN
			SELECT strProjNumber
				,strProjName
			FROM tblProjects
			WHERE (
					(@SQSearchBy = '')
					OR (strProjNumber LIKE '%' + @SQSearchBy + '%')
					OR (strProjName LIKE '%' + @SQSearchBy + '%')
					)
			ORDER BY strProjNumber
		END
		ELSE
		BEGIN
			SELECT strProjNumber
				,strProjName
			FROM tblProjects
			WHERE (
					(@SQSearchBy = '')
					OR (strProjNumber LIKE '%' + @SQSearchBy + '%')
					OR (strProjName LIKE '%' + @SQSearchBy + '%')
					)
				AND (intStatus < 20)
			ORDER BY strProjNumber;
		END
	END
	ELSE
	BEGIN
		IF (@ChkInactive = 1)
		BEGIN
			SELECT strProjNumber
				,strProjName
			FROM tblProjects
			ORDER BY strProjNumber
		END
		ELSE
		BEGIN
			SELECT strProjNumber
				,strProjName
			FROM tblProjects
			WHERE intStatus < 20
			ORDER BY strProjNumber
		END
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptBusinessComMatrixReport]
	-- Add the parameters for the stored procedure here
	@SQAsAt DATE = NULL
	,@SQProjNum VARCHAR(Max) = NULL
	,@SQPayType INT = NULL
	,@SQRecType INT = NULL
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	--DECLARE @sql varchar(MAX) = ''
	SELECT Z.SeqNo
		, Z.strPartNumber
		, Z.strPartDesc
		, ISNULL(SUM(Z.decQty), 0) AS decQty
		, ISNULL(SUM(Z.decLineTotExc), 0) AS decLineTotExc
	FROM (
		SELECT 1 AS SeqNo
			, tblOrderDocDT.strPartNumber
			, tblOrderDocDT.strPartDesc
			, ISNULL(SUM(tblOrderDocDT.decQty), 0) AS decQty
			, ISNULL(SUM(tblOrderDocDT.decLineTotExc), 0) AS decLineTotExc
		FROM tblOrderDoc
		INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
		INNER JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
			AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
		WHERE (tblOrderDoc.dteJournalDate <= @SQAsAt)
			AND (tblOrderDocDTPrj.strProjNumber = @SQProjNum)
			AND (tblOrderDoc.intDocType = 2)
		GROUP BY strPartNumber
			, strPartDesc
		
		UNION ALL
		
		SELECT 1 AS SeqNo
			, tblOrderDocQDT.strPartNumber
			, tblOrderDocQDT.strPartDesc
			, ISNULL(SUM(tblOrderDocQDT.decQty), 0) AS decQty
			, ISNULL(SUM(tblOrderDocQDT.decLineTotExc), 0) AS decLineTotExc
		FROM tblOrderDocQ
		INNER JOIN tblOrderDocQDT ON tblOrderDocQ.strOrdDocID = tblOrderDocQDT.strOrdDocID
		INNER JOIN tblOrderDocQDTPrj ON tblOrderDocQDT.strOrdDocID = tblOrderDocQDTPrj.strOrdDocID
			AND tblOrderDocQDT.intLineNo = tblOrderDocQDTPrj.intLineNo
		WHERE (tblOrderDocQ.dteJournalDate <= @SQAsAt)
			AND (tblOrderDocQDTPrj.strProjNumber = @SQProjNum)
		GROUP BY strPartNumber
			, strPartDesc
		) Z
	GROUP BY Z.SeqNo
		, Z.strPartNumber
		, Z.strPartDesc
	
	UNION ALL
	
	SELECT 2 AS SeqNo
		, tblInvoiceDocDT.strPartNumber
		, tblInvoiceDocDT.strPartDesc
		, ISNULL(SUM(tblInvoiceDocDT.decQty), 0) AS decQty
		, ISNULL(SUM(tblInvoiceDocDT.decLineTotExc), 0) AS decLineTotExc
	FROM tblInvoiceDoc
	INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
	INNER JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
		AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
	WHERE (tblInvoiceDoc.dteJournalDate <= @SQAsAt)
		AND (tblInvoiceDocDTPrj.strProjNumber = @SQProjNum)
	GROUP BY strPartNumber
		, strPartDesc
	
	UNION ALL
	
	SELECT 3 AS SeqNo
		, tblOrderDocPDT.strPartNumber
		, tblOrderDocPDT.strPartDesc
		, ISNULL(SUM(tblOrderDocPDT.decStockQty), 0) AS decQty
		, ISNULL(SUM(tblOrderDocPDT.decLineTotExc), 0) AS decLineTotExc
	FROM tblOrderDocP
	INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
	INNER JOIN tblOrderDocPDTPrj ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTPrj.strOrdPDocID
		AND tblOrderDocPDT.intLineNo = tblOrderDocPDTPrj.intLineNo
	WHERE (tblOrderDocP.dteJournalDate <= @SQAsAt)
		AND (tblOrderDocPDTPrj.strProjNumber = @SQProjNum)
		AND (tblOrderDocP.intDocType = 2)
	GROUP BY strPartNumber
		, strPartDesc
	
	UNION ALL
	
	SELECT 4 AS SeqNo
		, tblInvoiceDocPDT.strPartNumber
		, tblInvoiceDocPDT.strPartDesc
		, ISNULL(SUM(tblInvoiceDocPDT.decStockQty), 0) AS decQty
		, ISNULL(SUM(tblInvoiceDocPDT.decLineTotExc), 0) AS decLineTotExc
	FROM tblInvoiceDocP
	INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
	INNER JOIN tblInvoiceDocPDTPrj ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocPDTPrj.strInvPDocID
		AND tblInvoiceDocPDT.intLineNo = tblInvoiceDocPDTPrj.intLineNo
	WHERE (tblInvoiceDocP.dteJournalDate <= @SQAsAt)
		AND (tblInvoiceDocPDTPrj.strProjNumber = @SQProjNum)
	GROUP BY strPartNumber
		, strPartDesc
	
	UNION ALL
	
	SELECT 5 AS SeqNo
		, tblJournalEntryDocCBDT.intGLNumber AS strPartNumber
		, tblJournalEntryDocCBDT.strDesc
		, ISNULL(COUNT(tblJournalEntryDocCBDT.intGLNumber), 0) AS decQty
		, ISNULL(SUM(tblJournalEntryDocCBDT.decLineTotExc), 0) AS decLineTotExc
	FROM tblJournalEntryDocCB
	INNER JOIN tblJournalEntryDocCBDT ON tblJournalEntryDocCB.strJEDocID = tblJournalEntryDocCBDT.strJEDocID 
	INNER JOIN tblJournalEntryDocCBDTPrj ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCBDTPrj.strJEDocID
		AND tblJournalEntryDocCBDT.intType = tblJournalEntryDocCBDTPrj.intType
		AND tblJournalEntryDocCBDT.intGLNumber = tblJournalEntryDocCBDTPrj.intGLNumber
		AND tblJournalEntryDocCBDT.intLineNo = tblJournalEntryDocCBDTPrj.intLineNo
	WHERE (tblJournalEntryDocCB.dteJournalDate <= @SQAsAt)
		AND (tblJournalEntryDocCBDTPrj.strProjNumber = @SQProjNum)
		AND (tblJournalEntryDocCBDT.intType = @SQPayType)
	GROUP BY tblJournalEntryDocCBDT.intGLNumber
		, tblJournalEntryDocCBDT.strDesc
	
	UNION ALL
	
	SELECT 6 AS SeqNo
		, tblJournalEntryDocCBDT.intGLNumber AS strPartNumber
		, tblJournalEntryDocCBDT.strDesc
		, ISNULL(COUNT(tblJournalEntryDocCBDT.intGLNumber), 0) AS decQty
		, (ISNULL(SUM(tblJournalEntryDocCBDT.decLineTotExc), 0) * - 1) AS decLineTotExc
	FROM tblJournalEntryDocCB
	INNER JOIN tblJournalEntryDocCBDT ON tblJournalEntryDocCB.strJEDocID = tblJournalEntryDocCBDT.strJEDocID
	INNER JOIN tblJournalEntryDocCBDTPrj ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCBDTPrj.strJEDocID
		AND tblJournalEntryDocCBDT.intType = tblJournalEntryDocCBDTPrj.intType
		AND tblJournalEntryDocCBDT.intGLNumber = tblJournalEntryDocCBDTPrj.intGLNumber
		AND tblJournalEntryDocCBDT.intLineNo = tblJournalEntryDocCBDTPrj.intLineNo
	WHERE (tblJournalEntryDocCB.dteJournalDate <= @SQAsAt)
		AND (tblJournalEntryDocCBDTPrj.strProjNumber = @SQProjNum)
		AND (tblJournalEntryDocCBDT.intType = @SQRecType)
	GROUP BY tblJournalEntryDocCBDT.intGLNumber
		, tblJournalEntryDocCBDT.strDESC
	
	UNION ALL
	
	SELECT 7 AS SeqNo
		, CASE WHEN tblJournalEntryDocDT.intModule <> 0 THEN ISNULL(tblJournalEntryDocDT.intGLNumber, '') ELSE tblJournalEntryDocDT.strCuVeGeID END AS strPartNumber
		, CASE WHEN tblJournalEntryDocDT.intModule <> 0 THEN ISNULL(tblJournalEntryDocDT.strDesc, '') ELSE tblJournalEntryDocDT.strCuVeGeDesc END AS strCuVeGeDesc
		, ISNULL(COUNT(tblJournalEntryDocDT.strCuVeGeID), 0) AS decQty
		, ISNULL(SUM(tblJournalEntryDocDT.decDebits), 0) AS decLineTotExc
	FROM tblJournalEntryDoc
	INNER JOIN tblJournalEntryDocDT ON tblJournalEntryDoc.strJEDocID = tblJournalEntryDocDT.strJEDocID
	INNER JOIN tblJournalEntryDocDTPrj ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDocDTPrj.strJEDocID
		AND CASE WHEN tblJournalEntryDocDT.intModule <> 0 THEN tblJournalEntryDocDT.intGLNumber ELSE tblJournalEntryDocDT.strCuVeGeID END = tblJournalEntryDocDTPrj.intGLNumber
		AND tblJournalEntryDocDT.intLineNo = tblJournalEntryDocDTPrj.intLineNo
	WHERE (tblJournalEntryDoc.dteJournalDate <= @SQAsAt)
		AND (tblJournalEntryDocDTPrj.strProjNumber = @SQProjNum)
		AND tblJournalEntryDocDT.decDebits > 0
	GROUP BY tblJournalEntryDocDT.intModule
		, tblJournalEntryDocDT.strCuVeGeID
		, tblJournalEntryDocDT.strCuVeGeDesc
		, tblJournalEntryDocDT.intGLNumber
		, tblJournalEntryDocDT.strDesc
	
	UNION ALL
	
	SELECT 8 AS SeqNo
		, CASE WHEN tblJournalEntryDocDT.intModule <> 0 THEN ISNULL(tblJournalEntryDocDT.intGLNumber, '') ELSE tblJournalEntryDocDT.strCuVeGeID END AS strPartNumber
		, CASE WHEN tblJournalEntryDocDT.intModule <> 0 THEN ISNULL(tblJournalEntryDocDT.strDesc, '
') ELSE tblJournalEntryDocDT.strCuVeGeDesc END AS strCuVeGeDesc
		, ISNULL(COUNT(tblJournalEntryDocDT.strCuVeGeID), 0) AS decQty
		, (ISNULL(SUM(tblJournalEntryDocDT.decCredits), 0) * - 1) AS decLineTotExc
	FROM tblJournalEntryDoc
	INNER JOIN tblJournalEntryDocDT ON tblJournalEntryDoc.strJEDocID = tblJournalEntryDocDT.strJEDocID
	INNER JOIN tblJournalEntryDocDTPrj ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDocDTPrj.strJEDocID
		AND CASE WHEN tblJournalEntryDocDT.intModule <> 0 THEN tblJournalEntryDocDT.intGLNumber ELSE tblJournalEntryDocDT.strCuVeGeID END = tblJournalEntryDocDTPrj.intGLNumber
		AND tblJournalEntryDocDT.intLineNo = tblJournalEntryDocDTPrj.intLineNo
	WHERE (tblJournalEntryDoc.dteJournalDate <= @SQAsAt)
		AND (tblJournalEntryDocDTPrj.strProjNumber = @SQProjNum)
		AND tblJournalEntryDocDT.decCredits > 0
	GROUP BY tblJournalEntryDocDT.intModule
		, tblJournalEntryDocDT.strCuVeGeID
		, tblJournalEntryDocDT.strCuVeGeDesc
		, tblJournalEntryDocDT.intGLNumber
		, tblJournalEntryDocDT.strDesc
	
	UNION ALL
	
	SELECT 9
		, tblInvAdjDocDT.strPartNumber AS strPartNumber
		, tblInv.strDesc AS strDesc
		, SUM(tblInvAdjDocDT.decQty)
		, (ISNULL(SUM(tblInvAdjDocDT.decAmount), 0))
	FROM tblInvAdjDoc
	INNER JOIN tblInvAdjDocDT ON tblInvAdjDoc.strAdjDocID = tblInvAdjDocDT.strAdjDocID
	INNER JOIN tblInv ON tblInvAdjDocDT.strPartNumber = tblInv.strPartNumber
	INNER JOIN tblInvAdjDocDTPrj ON tblInvAdjDocDT.strAdjDocID = tblInvAdjDocDTPrj.strAdjDocID
		AND tblInvAdjDocDT.intLineNo = tblInvAdjDocDTPrj.intLineNo
	WHERE (tblInvAdjDoc.dteJournalDate <= @SQAsAt)
		AND (tblInvAdjDocDTPrj.strProjNumber = @SQProjNum)
		AND tblInvAdjDocDT.decQty > 0
	GROUP BY tblInvAdjDocDT.strPartNumber
	, tblInv.strDesc
	
	UNION ALL
	
	SELECT 10
		, tblInvIssReqDocDT.strPartNumber AS strPartNumber
		, tblInv.strDesc  AS strDesc
		, SUM(tblInvIssReqDocDT.decQty)
		, (ISNULL(SUM(tblInvIssReqDocDT.decAmount), 0))
	FROM tblInvIssReqDoc
	INNER JOIN tblInvIssReqDocDT ON tblInvIssReqDoc.strInvIssReqDocID = tblInvIssReqDocDT.strInvIssReqDocID
	INNER JOIN tblInv ON tblInvIssReqDocDT.strPartNumber = tblInv.strPartNumber
	INNER JOIN tblInvIssReqDocDTPrj ON tblInvIssReqDocDT.strInvIssReqDocID = tblInvIssReqDocDTPrj.strInvIssReqDocID
		AND tblInvIssReqDocDT.intLineNo = tblInvIssReqDocDTPrj.intLineNo
	WHERE (tblInvIssReqDoc.dteJournalDate <= @SQAsAt)
		AND (tblInvIssReqDocDTPrj.strProjNumber = @SQProjNum)
		AND tblInvIssReqDocDT.decQty > 0
	GROUP BY tblInvIssReqDocDT.strPartNumber
	, tblInv.strDesc
	UNION ALL
	
	SELECT 11 AS SeqNo
		, tblInvoiceDocDT.strPartNumber
		, tblInvoiceDocDT.strPartDesc
		, ISNULL(SUM(tblInvoiceDocDT.decQty), 0) AS decQty
		, ISNULL(SUM(tblInvoiceDocDT.decCOGS), 0) AS decCOGS
	FROM tblInvoiceDoc
	INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
	INNER JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
		AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
	WHERE (tblInvoiceDoc.dteJournalDate <= @SQAsAt)
		AND (tblInvoiceDocDTPrj.strProjNumber = @SQProjNum)
	GROUP BY strPartNumber
		, strPartDesc
	
	UNION ALL
	
	SELECT 12
		, tblInvRepackDocDT.strPartNumber AS strPartNumber
		, tblInv.strDesc AS strDesc
		, SUM(tblInvRepackDocDT.decQty)
		, (ISNULL(SUM(tblInvRepackDocDT.decAmount), 0))
	FROM tblInvRepackDoc
	INNER JOIN tblInvRepackDocDT ON tblInvRepackDoc.strRepackDocID = tblInvRepackDocDT.strRepackDocID
	INNER JOIN tblInv ON tblInvRepackDocDT.strPartNumber = tblInv.strPartNumber
	INNER JOIN tblInvRepackDocDTPrj ON tblInvRepackDocDT.strRepackDocID = tblInvRepackDocDTPrj.strRepackDocID
		AND tblInvRepackDocDT.intLineNo = tblInvRepackDocDTPrj.intLineNo
	WHERE (tblInvRepackDoc.dteJournalDate <= @SQAsAt)
		AND (tblInvRepackDocDTPrj.strProjNumber = @SQProjNum)
		AND tblInvRepackDocDT.bitOriginalItem = 0
	GROUP BY tblInvRepackDocDT.strPartNumber
	, tblInv.strDesc

	UNION ALL

	SELECT 13
		,tblManJobClose.strPartNumber
		,tblInv.strDesc AS strDesc
		,SUM(tblManJobClose.decManQtyClosed)
		,(ISNULL(SUM(tblManJobClose.decManAmount), 0))
	FROM tblManJobClose
	INNER JOIN tblInv ON tblManJobClose.strPartNumber = tblInv.strPartNumber
	INNER JOIN tblManJobClosePrj ON tblManJobClose.strJBDocID = tblManJobClosePrj.strJBDocID
		AND tblManJobClose.lngID = tblManJobClosePrj.lngJBID
	WHERE (tblManJobClose.dteJournalDate <= @SQAsAt)
		AND (tblManJobClosePrj.strProjNumber = @SQProjNum)
	GROUP BY tblManJobClose.strPartNumber
	,tblInv.strDesc

	ORDER BY strPartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptFixedAssetsGridLoad]
-- Add the parameters for the stored procedure here
@SQSearchBy   VARCHAR(MAX) = NULL,
@optSearch BIT = NULL, 
@chkInactive BIT = NULL,
@optSortNumber  BIT = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF(@optSearch = 1)
BEGIN
IF(Len(@SQSearchBy) > 2 )
BEGIN
IF(@chkInactive = 1)
BEGIN
SET @sql = 'SELECT strAssetCode, strAssetDesc FROM tblAssets WHERE (strAssetCode LIKE ''%'
+ @SQSearchBy + '%'' OR strAssetDesc LIKE ''%'
+ @SQSearchBy + '%'') '
END
ELSE
BEGIN
SET @sql = 'SELECT strAssetCode, strAssetDesc FROM tblAssets WHERE (strAssetCode LIKE ''%'
+ @SQSearchBy + '%'' OR strAssetDesc LIKE ''%'
+ @SQSearchBy + '%'') AND bitInactive = 0 '
END
END
END
ELSE
BEGIN
IF(@chkInactive = 1)
BEGIN
SET @sql = 'SELECT strAssetCode, strAssetDesc FROM tblAssets '
END
ELSE
BEGIN
SET @sql = 'SELECT strAssetCode, strAssetDesc FROM tblAssets WHERE bitInactive = 0 '
END
END
IF(@optSortNumber = 1)
BEGIN
SET @sql += ' ORDER BY strAssetCode'
END
ELSE
BEGIN
SET @sql += ' ORDER BY strAssetDesc'
END
PRINT(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptBudgets_MultiGL_WPF] (
@SQBudgetName NVARCHAR(100)
,@bitoptInActive BIT = NULL
)
AS
BEGIN
IF @bitoptInActive = 0
BEGIN
SELECT tblAcctMultiBudgets.intGLNumber
,strDesc
FROM tblAcctMultiBudgets
INNER JOIN tblAccounts ON tblAcctMultiBudgets.intGLNumber = tblAccounts.intGLNumber
WHERE BudgetName = @SQBudgetName
AND bitInactive = 0
ORDER BY intGLNumber
END
ELSE
BEGIN
SELECT tblAcctMultiBudgets.intGLNumber
,strDesc
FROM tblAcctMultiBudgets
INNER JOIN tblAccounts ON tblAcctMultiBudgets.intGLNumber = tblAccounts.intGLNumber
WHERE BudgetName = @SQBudgetName
ORDER BY intGLNumber
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptFilterSubAccountsBusinessLogic_MultiGL_WPF] 
(@SQAcct nvarchar(MAX) = NULL
,@SQBudgetName nvarchar(100)
)
AS
BEGIN
SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, tblAcctMultiBudgets.decPeriod1, tblAcctMultiBudgets.decPeriod2, tblAcctMultiBudgets.decPeriod3, 
tblAcctMultiBudgets.decPeriod4, tblAcctMultiBudgets.decPeriod5, tblAcctMultiBudgets.decPeriod6, tblAcctMultiBudgets.decPeriod7, tblAcctMultiBudgets.decPeriod8, tblAcctMultiBudgets.decPeriod9, 
tblAcctMultiBudgets.decPeriod10, tblAcctMultiBudgets.decPeriod11, tblAcctMultiBudgets.decPeriod12
FROM tblAccounts INNER JOIN tblAcctMultiBudgets ON tblAccounts.intGLNumber = tblAcctMultiBudgets.intGLNumber WHERE (tblAccounts.intGLNumber in
( SELECT Value FROM [fnSplitStringAsTable]((@SQAcct),(',')))) ANd tblAcctMultiBudgets.BudgetName = @SQBudgetName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptCashBookRefreshForm_1_WPF] 
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@optHistoryYear_IsChecked AS BIT,
@oAcctSec_GLAccountAccess AS BIT,
@chkInactive_IsChecked AS BIT,
@SQstrUserName AS NVARCHAR(200),
@SQSearchBy AS NVARCHAR(MAX),
@SQuidYearID AS UNIQUEIDENTIFIER
AS
BEGIN
IF @optCurrentYear_IsChecked = 1 
BEGIN
IF @oAcctSec_GLAccountAccess = 1
BEGIN
IF @chkInactive_IsChecked = 0
BEGIN
SELECT intGLNumber, strDesc, 0 As strintglnumber1, '' As strintglnumber2 
FROM tblAccounts
WHERE bitBank = 1 AND bitLinkCEarnings = 0 AND intGroupCode < 3 AND bitInactive = 0 AND (ISNULL(intGLNumber, '') LIKE '%' + ISNULL(@SQSearchBy, intGLNumber) + '%' OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@SQSearchBy, strDesc) + '%') 
ORDER BY intGLNumber
END
ELSE
BEGIN
SELECT intGLNumber, strDesc, 0 As strintglnumber1, '' As strintglnumber2 
FROM tblAccounts 
WHERE bitBank = 1 AND bitLinkCEarnings = 0 AND intGroupCode < 3 AND (ISNULL(intGLNumber, '') LIKE '%' + ISNULL(@SQSearchBy, intGLNumber) + '%' OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@SQSearchBy, strDesc) + '%')  
ORDER BY intGLNumber
END
END
ELSE
BEGIN
IF @chkInactive_IsChecked = 0
BEGIN
SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber)
 FROM tblAccountsSec 
WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0) as strintglnumber1, ISNULL(tblAccountsSec.strUserName,'') as strintglnumber2
 FROM tblAccounts LEFT JOIN tblAccountsSec ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQstrUserName  
 WHERE tblAccounts.bitBank = 1 AND tblAccounts.bitLinkCEarnings = 0 AND tblAccounts.intGroupCode < 3 AND tblAccounts.bitInactive = 0 AND (ISNULL(tblAccounts.intGLNumber, '') LIKE '%' + ISNULL(@SQSearchBy, tblAccounts.intGLNumber) + '%' OR ISNULL(tblAccounts.strDesc, '') LIKE '%' + ISNULL(@SQSearchBy, tblAccounts.strDesc) + '%')
  ORDER BY tblAccounts.intGLNumber
END
ELSE
BEGIN
SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0) as strintglnumber1, ISNULL(tblAccountsSec.strUserName,'') as strintglnumber2 
FROM tblAccounts
LEFT JOIN tblAccountsSec ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQstrUserName 
WHERE tblAccounts.bitBank = 1 AND tblAccounts.bitLinkCEarnings = 0 AND tblAccounts.intGroupCode < 3 AND (ISNULL(tblAccounts.intGLNumber, '') LIKE '%' + ISNULL(@SQSearchBy, tblAccounts.intGLNumber) + '%' OR ISNULL(tblAccounts.strDesc, '') LIKE '%' + ISNULL(@SQSearchBy, tblAccounts.strDesc) + '%')
ORDER BY tblAccounts.intGLNumber
END
END
END
ELSE IF @optPreviousYear_IsChecked = 1
BEGIN
IF @oAcctSec_GLAccountAccess = 1
BEGIN
IF @chkInactive_IsChecked = 0
BEGIN
SELECT intGLNumber, strDesc, 0 as strintglnumber1, '' as strintglnumber2 
FROM tblAccountsLY 
WHERE bitBank = 1 AND bitLinkCEarnings = 0 AND intGroupCode < 3 AND bitInactive = 0 AND (intGLNumber LIKE @SQSearchBy OR strDesc LIKE @SQSearchBy) 
ORDER BY intGLNumber
END
ELSE
BEGIN
SELECT intGLNumber, strDesc, 0 as strintglnumber1, '' as strintglnumber2 FROM tblAccountsLY WHERE bitBank = 1 AND bitLinkCEarnings = 0 AND intGroupCode < 3 AND (ISNULL(intGLNumber, '') LIKE '%' + ISNULL(@SQSearchBy, intGLNumber) + '%' OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@SQSearchBy, strDesc) + '%')  
 ORDER BY intGLNumber
END
END
ELSE
BEGIN
IF @chkInactive_IsChecked = 0
BEGIN
SELECT tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) 
FROM tblAccountsSec 
WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) as strintglnumber1, ISNULL(tblAccountsSec.strUserName,'') as strintglnumber2 
FROM tblAccountsLY LEFT JOIN tblAccountsSec ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQstrUserName 
WHERE tblAccountsLY.bitBank = 1 AND tblAccountsLY.bitLinkCEarnings = 0 AND tblAccountsLY.intGroupCode < 3 AND tblAccountsLY.bitInactive = 0 AND (ISNULL(tblAccountsLY.intGLNumber, '') LIKE '%' + ISNULL(@SQSearchBy, tblAccountsLY.intGLNumber) + '%' OR ISNULL(tblAccountsLY.strDesc, '') LIKE '%' + ISNULL(@SQSearchBy, tblAccountsLY.strDesc) + '%')
ORDER BY tblAccountsLY.intGLNumber
END
ELSE
BEGIN
SELECT tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber)
 FROM tblAccountsSec 
 WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber),0) as strintglnumber1, ISNULL(tblAccountsSec.strUserName,'') as strintglnumber2 
 FROM tblAccountsLY 
 LEFT JOIN tblAccountsSec ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQstrUserName
  WHERE tblAccountsLY.bitBank = 1 AND tblAccountsLY.bitLinkCEarnings = 0 AND tblAccountsLY.intGroupCode < 3 AND (ISNULL(tblAccountsLY.intGLNumber, '') LIKE '%' + ISNULL(@SQSearchBy, tblAccountsLY.intGLNumber) + '%' OR ISNULL(tblAccountsLY.strDesc, '') LIKE '%' + ISNULL(@SQSearchBy, tblAccountsLY.strDesc) + '%')
  ORDER BY tblAccountsLY.intGLNumber
END
END
END
ELSE IF @optHistoryYear_IsChecked = 1
BEGIN
IF @oAcctSec_GLAccountAccess = 1
BEGIN
IF @chkInactive_IsChecked = 0
BEGIN
SELECT intGLNumber, strDesc, 0 as strintglnumber1, '' as strintglnumber2 FROM tblAccountsHist WHERE bitBank = 1 AND bitLinkCEarnings = 0 AND intGroupCode < 3 AND uidYearID = @SQuidYearID AND bitInactive = 0 AND 
(ISNULL(intGLNumber, '') LIKE '%' + ISNULL(@SQSearchBy, intGLNumber) + '%' OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@SQSearchBy, strDesc) + '%')  
ORDER BY intGLNumber
END
ELSE
BEGIN
SELECT intGLNumber, strDesc, 0 as strintglnumber1, '' as strintglnumber2 
FROM tblAccountsHist 
WHERE bitBank = 1 AND bitLinkCEarnings = 0 AND intGroupCode < 3 AND uidYearID = @SQuidYearID AND (ISNULL(intGLNumber, '') LIKE '%' + ISNULL(@SQSearchBy, intGLNumber) + '%' OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@SQSearchBy, strDesc) + '%')   
ORDER BY intGLNumber                
END
END
ELSE
BEGIN
IF @chkInactive_IsChecked = 0
BEGIN
SELECT tblAccountsHist.intGLNumber, tblAccountsHist.strDesc, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) 
FROM tblAccountsSec 
WHERE tblAccountsSec.intGLNumber = tblAccountsHist.intGLNumber),0) as strintglnumber1, ISNULL(tblAccountsSec.strUserName,'') 
 as strintglnumber2 
 FROM tblAccountsHist 
 LEFT JOIN tblAccountsSec ON tblAccountsHist.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQstrUserName 
 WHERE tblAccountsHist.bitBank = 1 AND tblAccountsHist.bitLinkCEarnings = 0 AND tblAccountsHist.intGroupCode < 3 AND tblAccountsHist.uidYearID = @SQuidYearID AND tblAccountsHist.bitInactive = 0 AND
  (ISNULL(tblAccountsHist.intGLNumber, '') LIKE '%' + ISNULL(@SQSearchBy, tblAccountsHist.intGLNumber) + '%' OR ISNULL(tblAccountsHist.strDesc, '') LIKE '%' + ISNULL(@SQSearchBy, tblAccountsHist.strDesc) + '%')  
 ORDER BY tblAccountsHist.intGLNumber
END
ELSE
BEGIN
SELECT tblAccountsHist.intGLNumber, tblAccountsHist.strDesc, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) 
FROM tblAccountsSec 
WHERE tblAccountsSec.intGLNumber = tblAccountsHist.intGLNumber),0) as strintglnumber1, ISNULL(tblAccountsSec.strUserName,'') 
as strintglnumber2 
FROM tblAccountsHist 
LEFT JOIN tblAccountsSec ON tblAccountsHist.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQstrUserName 
WHERE tblAccountsHist.bitBank = 1 AND tblAccountsHist.bitLinkCEarnings = 0 AND tblAccountsHist.intGroupCode < 3 AND tblAccountsHist.uidYearID = @SQuidYearID AND
 (ISNULL(tblAccountsHist.intGLNumber, '') LIKE '%' + ISNULL(@SQSearchBy, tblAccountsHist.intGLNumber) + '%' OR ISNULL(tblAccountsHist.strDesc, '') LIKE '%' + ISNULL(@SQSearchBy, tblAccountsHist.strDesc) + '%') 
ORDER BY tblAccountsHist.intGLNumber
END
END
END
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptBusinessLogic_Loaded_1_WPF]
AS
BEGIN
SELECT MAX(dteJournalDate) as dteJournalDate FROM tblJournal
END
GO
/****** Object:  StoredProcedure [dbo].[SPRptBusinessLogic_Loaded_2_WPF]    Script Date: 06-04-2022 11:51:10 ******/

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptBusinessLogic_Loaded_2_WPF]
AS
BEGIN
SELECT MAX(dteJournalDate) as dteJournalDate FROM tblJournalLY
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptBudgetBalanceSheetLoadQuery_2_WPF]
(
@SQStartDate date = NULL,
@SQFinishDate date = NULL,
@SQintoAccountLegendExp_GLNumberFrom INT = NULL,
@SQintoAccountLegendRev_GLNumberTo  INT = NULL,
@SQintoAccountLegendRev_GLNumberFrom  INT = NULL,
@SQintoAccountLegendExp_GLNumberTo  INT = NULL 
)
AS
BEGIN
DECLARE @decRevenue DECIMAL(18,4)
DECLARE @decExpense DECIMAL(18,4) 
DECLARE @decOpenRevenue DECIMAL(18,4) 
DECLARE @decOpenExpense DECIMAL(18,4) 
DECLARE @intCurrEarnAcct NVARCHAR(200)
SELECT @intCurrEarnAcct = intGLNumber FROM tblAccounts WHERE bitLinkCEarnings = 1   --- cmdEarn
--SELECT intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength
SELECT @decRevenue = ISNULL(SUM(tblJournalEnt.decAmount),0) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
WHERE (tblJournal.dteJournalDate BETWEEN @SQStartDate AND @SQFinishDate) AND SUBSTRING(tblJournalEnt.intGLNumber, 0, (SELECT intSeg1Length from tblGLSegmentFormatSetup) + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
AND SUBSTRING(tblJournalEnt.intGLNumber, 0, (SELECT intSeg1Length from tblGLSegmentFormatSetup) + 1) <= @SQintoAccountLegendRev_GLNumberTo   --- cmdRev
SELECT @decExpense = ISNULL(SUM(tblJournalEnt.decAmount),0) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
WHERE (tblJournal.dteJournalDate BETWEEN @SQStartDate AND @SQFinishDate) AND SUBSTRING(tblJournalEnt.intGLNumber, 0, (SELECT intSeg1Length from tblGLSegmentFormatSetup) + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
AND SUBSTRING(tblJournalEnt.intGLNumber, 0, (SELECT intSeg1Length from tblGLSegmentFormatSetup) + 1) <= @SQintoAccountLegendExp_GLNumberTo   --- cmdExp
SELECT @decOpenRevenue = SUM(decOpenBalance) FROM tblAccounts WHERE SUBSTRING(intGLNumber, 0, (SELECT intSeg1Length from tblGLSegmentFormatSetup) + 1) >= @SQintoAccountLegendRev_GLNumberFrom AND SUBSTRING(intGLNumber, 0, (SELECT intSeg1Length from tblGLSegmentFormatSetup) + 1) <= @SQintoAccountLegendRev_GLNumberTo   --cmdRevOpen
SELECT @decOpenExpense = SUM(decOpenBalance) FROM tblAccounts WHERE SUBSTRING(intGLNumber, 0, (SELECT intSeg1Length from tblGLSegmentFormatSetup) + 1) >= @SQintoAccountLegendExp_GLNumberFrom AND SUBSTRING(intGLNumber, 0, (SELECT intSeg1Length from tblGLSegmentFormatSetup) + 1) <= @SQintoAccountLegendExp_GLNumberTo   ---cmdExpOpen
SELECT @intCurrEarnAcct as intCurrEarnAcct,@decRevenue as decRevenue,@decExpense as decExpense,@decOpenRevenue as decOpenRevenue,@decOpenExpense as decOpenExpense
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptFilterOptYearBusinessLogic_1_WPF] 
(	@SQStartDate date = NULL,
@SQFinishDate date = NULL
)
AS
BEGIN
SELECT tblJournalEnt.intGLNumber as intGLNumber, SUM(tblJournalEnt.decAmount) as decAmount FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate BETWEEN @SQStartDate AND @SQFinishDate) GROUP BY tblJournalEnt.intGLNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptListBudgetsDeptLoadQuery_MultiDept_WPF] @SQBudgetName NVARCHAR(100)
,@SQDept AS NVARCHAR(MAX)
AS
BEGIN
SELECT tblAccounts.intGLNumber
,tblAccounts.strDesc
,tblAccounts.intAccType
,tblDeptMultiBudgets.decPeriod1
,tblDeptMultiBudgets.decPeriod2
,tblDeptMultiBudgets.decPeriod3
,tblDeptMultiBudgets.decPeriod4
,tblDeptMultiBudgets.decPeriod5
,tblDeptMultiBudgets.decPeriod6
,tblDeptMultiBudgets.decPeriod7
,tblDeptMultiBudgets.decPeriod8
,tblDeptMultiBudgets.decPeriod9
,tblDeptMultiBudgets.decPeriod10
,tblDeptMultiBudgets.decPeriod11
,tblDeptMultiBudgets.decPeriod12
FROM tblAccounts
INNER JOIN tblAccountsDept ON tblAccounts.intGLNumber = tblAccountsDept.intGLNumber
INNER JOIN tblDeptMultiBudgets ON tblAccountsDept.intGLNumber = tblDeptMultiBudgets.intGLNumber
AND tblAccountsDept.intDept = tblDeptMultiBudgets.intDept
WHERE (
tblAccountsDept.intDept IN (
SELECT CAST(Value AS INT)
FROM [fnSplitStringAsTable]((@SQDept), (','))
)
)	 ANd tblDeptMultiBudgets.DeptBudgetName = @SQBudgetName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptListDeptOnLoadedBusinessLogic_1_WPF]
AS
BEGIN
SELECT intDept as intDept2,strDesc as strDesc2  FROM tblDepartments WHERE bitInactive = 0 ORDER BY intDept
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptListIncomeDeptCLoadQuery_2_WPF] 
@optCurrentYear_IsChecked BIT,
@optPreviousYear_IsChecked BIT,
@optHistoryYear_IsChecked BIT,
@SQuidYearID UNIQUEIDENTIFIER,
@SQStart DATETIME,
@SQFinish DATETIME
AS
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SELECT tblJournalEnt.intGLNumber, tblJournalEnt.intDept, SUM(tblJournalEnt.decAmount) As decAmount FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate >= @SQStart) AND (tblJournal.dteJournalDate <= @SQFinish) AND (tblJournalEnt.intDept IS NOT NULL) GROUP BY tblJournalEnt.intGLNumber, tblJournalEnt.intDept
END
ELSE IF @optPreviousYear_IsChecked = 1
BEGIN
SELECT tblJournalEntLY.intGLNumber, tblJournalEntLY.intDept, SUM(tblJournalEntLY.decAmount) As decAmount FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate >= @SQStart) AND (tblJournalLY.dteJournalDate <= @SQFinish) AND (tblJournalEntLY.intDept IS NOT NULL) GROUP BY tblJournalEntLY.intGLNumber, tblJournalEntLY.intDept
END
ELSE IF @optHistoryYear_IsChecked = 1
BEGIN
SELECT tblJournalEntHist.intGLNumber, tblJournalEntHist.intDept, SUM(tblJournalEntHist.decAmount) As decAmount FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate >= @SQStart) AND (tblJournalHist.dteJournalDate <= @SQFinish) AND (tblJournalEntHist.intDept IS NOT NULL) AND (tblJournalEntHist.uidYearID = @SQuidYearID) GROUP BY tblJournalEntHist.intGLNumber, tblJournalEntHist.intDept
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptListIncomeDeptCLoadQuery_1_WPF] 
@optCurrentYear_IsChecked BIT,
@optPreviousYear_IsChecked BIT,
@optHistoryYear_IsChecked BIT,
@SQuidYearID UNIQUEIDENTIFIER
AS
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SELECT tblAccounts.intGLNumber, tblAccountsDept.intDept, tblAccounts.strDesc, tblAccounts.intAccType, ISNULL(tblAccountsDept.decOpenBalance,0) As decOpenBalance, tblAccounts.intAccClass FROM tblAccounts INNER JOIN tblAccountsDept ON tblAccounts.intGLNumber = tblAccountsDept.intGLNumber WHERE (tblAccounts.intAccType >= 4) AND (tblAccounts.intGroupCode <= 2) ORDER BY tblAccounts.intGLNumber,tblAccountsDept.intDept
END
ELSE IF @optPreviousYear_IsChecked = 1
BEGIN
SELECT tblAccountsLY.intGLNumber, tblAccountsDeptLY.intDept, tblAccountsLY.strDesc, tblAccountsLY.intAccType, ISNULL(tblAccountsDeptLY.decOpenBalance,0) As decOpenBalance, tblAccountsLY.intAccClass FROM tblAccountsLY INNER JOIN tblAccountsDeptLY ON tblAccountsLY.intGLNumber = tblAccountsDeptLY.intGLNumber WHERE (tblAccountsLY.intAccType >= 4) AND (tblAccountsLY.intGroupCode <= 2) ORDER BY tblAccountsLY.intGLNumber, tblAccountsDeptLY.intDept
END
ELSE IF @optHistoryYear_IsChecked = 1
BEGIN
SELECT tblAccountsHist.intGLNumber, tblAccountsDeptHist.intDept, tblAccountsHist.strDesc, tblAccountsHist.intAccType, ISNULL(tblAccountsDeptHist.decOpenBalance,0) As decOpenBalance, tblAccountsHist.intAccClass FROM tblAccountsHist INNER JOIN tblAccountsDeptHist ON tblAccountsHist.intGLNumber = tblAccountsDeptHist.intGLNumber AND tblAccountsHist.uidYearID = tblAccountsDeptHist.uidYearID WHERE (tblAccountsHist.intAccType >= 4) AND (tblAccountsHist.intGroupCode <= 2) AND (tblAccountsHist.uidYearID = @SQuidYearID) ORDER BY tblAccountsHist.intGLNumber, tblAccountsDeptHist.intDept
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptListIncomeDeptCLoadQuery_3_WPF] 
@optCurrentYear_IsChecked BIT,
@optPreviousYear_IsChecked BIT,
@optHistoryYear_IsChecked BIT,
@SQuidYearID UNIQUEIDENTIFIER
AS
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SELECT DISTINCT tblAccountsDept.intDept FROM tblAccounts INNER JOIN tblAccountsDept ON tblAccounts.intGLNumber = tblAccountsDept.intGLNumber WHERE (tblAccounts.intAccType >= 4) AND (tblAccounts.intGroupCode <= 2) ORDER BY tblAccountsDept.intDept
END
ELSE IF @optPreviousYear_IsChecked = 1
BEGIN
SELECT DISTINCT tblAccountsDeptLY.intDept FROM tblAccountsLY INNER JOIN tblAccountsDeptLY ON tblAccountsLY.intGLNumber = tblAccountsDeptLY.intGLNumber WHERE (tblAccountsLY.intAccType >= 4) AND (tblAccountsLY.intGroupCode <= 2) ORDER BY tblAccountsDeptLY.intDept
END
ELSE IF @optHistoryYear_IsChecked = 1
BEGIN
SELECT DISTINCT tblAccountsDeptHist.intDept FROM tblAccountsHist INNER JOIN tblAccountsDeptHist ON tblAccountsHist.intGLNumber = tblAccountsDeptHist.intGLNumber AND tblAccountsHist.uidYearID = tblAccountsDeptHist.uidYearID WHERE (tblAccountsHist.intAccType >= 4) AND (tblAccountsHist.intGroupCode <= 2) AND (tblAccountsHist.uidYearID = @SQuidYearID) ORDER BY tblAccountsDeptHist.intDept
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptIncomeMiniLoadQuery_2_WPF]
@optCurrentYear_IsChecked  bit,
@optPreviousYear_IsChecked bit,
@optHistoryYear_IsChecked bit,
@SQuidYearID uniqueidentifier,
@SQStart date,
@SQFinish date
AS
BEGIN
IF @optCurrentYear_IsChecked = 1 
BEGIN
SELECT tblJournalEnt.intGLNumber, SUM(tblJournalEnt.decAmount) As decAmount FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate >= @SQStart) AND (tblJournal.dteJournalDate <= @SQFinish) GROUP BY tblJournalEnt.intGLNumber
END
ELSE IF @optPreviousYear_IsChecked = 1
BEGIN
SELECT tblJournalEntLY.intGLNumber, SUM(tblJournalEntLY.decAmount) As decAmount FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate >= @SQStart) AND (tblJournalLY.dteJournalDate <= @SQFinish) GROUP BY tblJournalEntLY.intGLNumber
END
ELSE IF @optHistoryYear_IsChecked = 1
BEGIN
SELECT tblJournalEntHist.intGLNumber, SUM(tblJournalEntHist.decAmount) As decAmount FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate >= @SQStart) AND (tblJournalHist.dteJournalDate <= @SQFinish) AND (tblJournalEntHist.uidYearID = @SQuidYearID) GROUP BY tblJournalEntHist.intGLNumber
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptContractIncomeSetupLoadQuery_1_1_WPF]
(	@CostOfGoodsSold INT = NULL,
@InterestExpense INT = NULL,
@IncomeTaxExpense INT = NULL,
@Revenue INT = NULL,
@Expense INT = NULL,
@OperatingRevenue INT = NULL,
@intOINum nvarchar(200) = NULL
)
AS
BEGIN
SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass, 
CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 WHEN intAccClass = @InterestExpense THEN 4 
WHEN intAccClass = @IncomeTaxExpense THEN 5 
WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0 
WHEN intAccType = @Revenue THEN @intOINum
WHEN intAccType = @Expense THEN 3 
ELSE NULL END as GroupSeq FROM tblAccounts WHERE (intAccType >= 4) ORDER BY GroupSeq, intGLNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptContractIncomeSetupLoadQuery_1_2_WPF]
(	@CostOfGoodsSold INT = NULL,
@InterestExpense INT = NULL,
@IncomeTaxExpense INT = NULL,
@Revenue INT = NULL,
@Expense INT = NULL,
@OperatingRevenue INT = NULL,
@intOINum nvarchar(200) = NULL
)
AS
BEGIN
SELECT intGLNumber, strDesc, intAccType, intGroupCode, decOpenBalance, intAccClass, 
CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 WHEN intAccClass = @InterestExpense THEN 4 
WHEN intAccClass = @IncomeTaxExpense THEN 5 
WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0 
WHEN intAccType = @Revenue THEN @intOINum
WHEN intAccType = @Expense THEN 3 
ELSE NULL END as GroupSeq 
FROM tblAccountsLY WHERE (intAccType >= 4) ORDER BY GroupSeq, intGLNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptFilterOptYearBusinessLogicContract_1_WPF] 
(	@SQStartDate date = NULL,
@SQFinishDate date = NULL
)
AS
BEGIN
SELECT tblJournalEnt.intGLNumber, SUM(tblJournalEnt.decAmount) As decAmount
FROM tblJournalEnt 
INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
WHERE (tblJournal.dteJournalDate BETWEEN @SQStartDate AND @SQFinishDate) 
GROUP BY tblJournalEnt.intGLNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptFilterOptYearBusinessLogicContract_2_WPF] 
(
@SQStartDate date = NULL,
@SQFinishDate date = NULL
)
AS
BEGIN
SELECT tblJournalEntLY.intGLNumber, SUM(tblJournalEntLY.decAmount) As decAmount
FROM tblJournalEntLY 
INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
WHERE (tblJournalLY.dteJournalDate BETWEEN @SQStartDate AND @SQFinishDate) 
GROUP BY tblJournalEntLY.intGLNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptFilterSubAccountsBusinessLogicContracts_1_WPF]   
(  
@SQGLNumber nvarchar(MAX) = NULL,  
@SQStartDate datetime,  
@SQFinishDate datetime  
)  
AS  
BEGIN  
SET @SQStartDate = DATEADD(month, DATEDIFF(month, 0, @SQStartDate), 0)  
SET @SQFinishDate = DATEADD(month,1 + DATEDIFF(month, 0, @SQFinishDate), -1)  
SELECT C.intGLNumber,  
CDT.decAmount  
FROM tblContractsDT AS CDT   
INNER JOIN tblContracts AS C ON CDT.lngContractId = C.lngId   
WHERE  C.intGLNumber IN ( SELECT Value FROM [fnSplitStringAsTable]((@SQGLNumber),(',')))   
AND ((CDT.dteFromDate BETWEEN @SQStartDate AND @SQFinishDate) OR (CDT.dteToDate BETWEEN @SQStartDate AND @SQFinishDate))
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptCenterAllocSetupLoadQuery_1_WPF]
@strLevels AS NVARCHAR(MAX),
@optCurrentYear_IsChecked AS BIT,
@chkIncLower_IsChecked AS BIT,
@strSplit_Length AS INT,
@SQStartDate AS DATE,
@SQFinishDate AS DATE,
@txtLoc_Length AS INT,
@strSplit_0 AS NVARCHAR(MAX),
@strSplit_1 AS NVARCHAR(MAX),
@strSplit_2 AS NVARCHAR(MAX),
@strSplit_3 AS NVARCHAR(MAX)
AS
BEGIN 
DECLARE @TmpTable TABLE
(
[strCOL01] NVARCHAR(MAX),
[strCOL02] NVARCHAR(MAX),
[strCOL03] DECIMAL(18,2),
[strCOL04] NVARCHAR(MAX)
)
DECLARE @strLevelTemp AS NVARCHAR(MAX)
DECLARE db_cursor CURSOR FOR  
SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@strLevels, '~')
OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @strLevelTemp
WHILE @@FETCH_STATUS = 0   
BEGIN 
DECLARE @SQLevel1 AS NVARCHAR(MAX)
DECLARE @SQLevel2 AS NVARCHAR(MAX)
DECLARE @SQLevel3 AS NVARCHAR(MAX)
DECLARE @SQLevel4 AS NVARCHAR(MAX)
DECLARE @SQLevel5 AS NVARCHAR(MAX)
DECLARE @QueryCommand AS NVARCHAR(MAX)		
DECLARE @ParameterDefinition AS NVARCHAR(MAX) 	
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand = 'SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, SUM(tblCenterEnt.decAmount) AS Expr1, @strLevelTemp FROM tblAccounts INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber INNER JOIN tblCenterEnt ON tblJournalEnt.lngJourID = tblCenterEnt.lngJourID AND tblJournalEnt.intLineNum = tblCenterEnt.intLineNum INNER JOIN tblCenters ON tblCenterEnt.uidCenterID = tblCenters.uidCenterID INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate >= @SQStartDate AND tblJournal.dteJournalDate <= @SQFinishDate)'
END
ELSE
BEGIN
SET @QueryCommand = 'SELECT tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, SUM(tblCenterEntLY.decAmount) AS Expr1, @strLevelTemp FROM tblAccountsLY INNER JOIN tblJournalEntLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber INNER JOIN tblCenterEntLY ON tblJournalEntLY.lngJourID = tblCenterEntLY.lngJourID AND tblJournalEntLY.intLineNum = tblCenterEntLY.intLineNum INNER JOIN tblCentersLY ON tblCenterEntLY.uidCenterID = tblCentersLY.uidCenterID INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate >= @SQStartDate AND tblJournalLY.dteJournalDate <= @SQFinishDate)'
END
IF @txtLoc_Length = 0
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1)'
IF @chkIncLower_IsChecked = 0
BEGIN	SET @QueryCommand +=' AND (tblCenters.strLvl2 IS NULL)'	END
SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.strDesc'
END
ELSE 
BEGIN
SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1)'
IF @chkIncLower_IsChecked = 0
BEGIN	SET @QueryCommand +=' AND (tblCentersLY.strLvl2 IS NULL)'	END
SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.strDesc'
END	
SET @SQLevel1 = @strLevelTemp		
END
ELSE IF @strSplit_Length = 1	
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2)'
IF @chkIncLower_IsChecked = 0
BEGIN	SET @QueryCommand +=' AND (tblCenters.strLvl3 IS NULL)'	END
SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.strDesc'
END
ELSE 
BEGIN
SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2)'
IF @chkIncLower_IsChecked = 0
BEGIN	SET @QueryCommand +=' AND (tblCentersLY.strLvl3 IS NULL)'	END
SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.strDesc'
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strLevelTemp
END
ELSE IF @strSplit_Length = 2
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3)'
IF @chkIncLower_IsChecked = 0
BEGIN	SET @QueryCommand +=' AND (tblCenters.strLvl4 IS NULL)'	END
SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.strDesc'				
END
ELSE 
BEGIN
SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3)'
IF @chkIncLower_IsChecked = 0
BEGIN	SET @QueryCommand +=' AND (tblCentersLY.strLvl4 IS NULL)'	END
SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.strDesc'
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strSplit_1
SET @SQLevel3 = @strLevelTemp
END
ELSE IF @strSplit_Length = 3
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4)'
IF @chkIncLower_IsChecked = 0
BEGIN	SET @QueryCommand +=' AND (tblCenters.strLvl5 IS NULL)'	END
SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.strDesc'
END
ELSE 
BEGIN
SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4)'
IF @chkIncLower_IsChecked = 0
BEGIN	SET @QueryCommand +=' AND (tblCentersLY.strLvl5 IS NULL)'	END
SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.strDesc'
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strSplit_1
SET @SQLevel3 = @strSplit_2
SET @SQLevel4 = @strLevelTemp
END
ELSE
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4) AND (tblCenters.strLvl5 = @SQLevel5)'
SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.strDesc'
END
ELSE 
BEGIN
SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4) AND (tblCentersLY.strLvl5 = @SQLevel5)'
SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.strDesc'
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strSplit_1
SET @SQLevel3 = @strSplit_2
SET @SQLevel4 = @strSplit_3
SET @SQLevel5 = @strLevelTemp
END
Set @ParameterDefinition =' @strLevelTemp NVARCHAR(MAX),
@SQStartDate DATE,
@SQFinishDate DATE,
@SQLevel1 NVARCHAR(MAX),
@SQLevel2 NVARCHAR(MAX),
@SQLevel3 NVARCHAR(MAX),
@SQLevel4 NVARCHAR(MAX),
@SQLevel5 NVARCHAR(MAX)'
INSERT INTO @TmpTable EXECUTE sp_executesql @QueryCommand, @ParameterDefinition, @strLevelTemp, @SQStartDate, @SQFinishDate, @SQLevel1, @SQLevel2, @SQLevel3, @SQLevel4, @SQLevel5
FETCH NEXT FROM db_cursor INTO @strLevelTemp
END   
CLOSE db_cursor   
DEALLOCATE db_cursor
SELECT * FROM @TmpTable
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptCenterAllocSetupLoadQuery_2_WPF]
@strLevels AS NVARCHAR(MAX),
@optCurrentYear_IsChecked AS BIT,
@chkIncLower_IsChecked AS BIT,
@strSplit_Length AS INT,
@SQStartDate AS DATE,
@SQFinishDate AS DATE,
@txtLoc_Length AS INT,
@strSplit_0 AS NVARCHAR(MAX),
@strSplit_1 AS NVARCHAR(MAX),
@strSplit_2 AS NVARCHAR(MAX),
@strSplit_3 AS NVARCHAR(MAX)
AS
BEGIN 
DECLARE @TmpTable TABLE
(
strLevel NVARCHAR(MAX),
intGLNumber NVARCHAR(MAX),
strDesc NVARCHAR(MAX),	
dteJournalDate DATE,
strSource NVARCHAR(MAX),
strComment NVARCHAR(MAX),
lngJourID BIGINT,			
decAmount MONEY
)	
DECLARE @strLevelTemp AS NVARCHAR(MAX)
DECLARE db_cursor CURSOR FOR  
SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@strLevels, '~')
OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @strLevelTemp
WHILE @@FETCH_STATUS = 0   
BEGIN 
DECLARE @SQLevel1 AS NVARCHAR(MAX)
DECLARE @SQLevel2 AS NVARCHAR(MAX)
DECLARE @SQLevel3 AS NVARCHAR(MAX)
DECLARE @SQLevel4 AS NVARCHAR(MAX)
DECLARE @SQLevel5 AS NVARCHAR(MAX)
DECLARE @QueryCommand1 AS NVARCHAR(MAX)
DECLARE @QueryCommand2 AS NVARCHAR(MAX)
DECLARE @ParameterDefinition AS NVARCHAR(MAX) 
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand1 = 'SELECT @strLevelTemp, tblJournalEnt.intGLNumber, tblAccounts.strDesc, @SQStartDate, ''Balance Forward'', '' '', 0, ISNULL(SUM(tblCenterEnt.decAmount), 0) AS Expr1 FROM tblCenterEnt INNER JOIN tblJournalEnt ON tblCenterEnt.lngJourID = tblJournalEnt.lngJourID AND tblCenterEnt.intLineNum = tblJournalEnt.intLineNum INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID INNER JOIN tblCenters ON tblCenterEnt.uidCenterID = tblCenters.uidCenterID INNER JOIN tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber WHERE (tblJournal.dteJournalDate < @SQStartDate)'
SET @QueryCommand2 = 'SELECT @strLevelTemp, tblAccounts.intGLNumber, tblAccounts.strDesc, tblJournal.dteJournalDate, tblJournal.strSource, tblJournal.strComment, tblJournal.lngJourID, tblCenterEnt.decAmount FROM tblAccounts INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber INNER JOIN tblCenterEnt ON tblJournalEnt.lngJourID = tblCenterEnt.lngJourID AND tblJournalEnt.intLineNum = tblCenterEnt.intLineNum INNER JOIN tblCenters ON tblCenterEnt.uidCenterID = tblCenters.uidCenterID INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate >= @SQStartDate AND tblJournal.dteJournalDate <= @SQFinishDate)'
END
ELSE
BEGIN
SET @QueryCommand1 = 'SELECT @strLevelTemp, tblJournalEntLY.intGLNumber, tblAccountsLY.strDesc, @SQStartDate, ''Balance Forward'', '' '', 0, ISNULL(SUM(tblCenterEntLY.decAmount), 0) AS Expr1 FROM tblCenterEntLY INNER JOIN tblJournalEntLY ON tblCenterEntLY.lngJourID = tblJournalEntLY.lngJourID AND tblCenterEntLY.intLineNum = tblJournalEntLY.intLineNum INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID INNER JOIN tblCentersLY ON tblCenterEntLY.uidCenterID = tblCentersLY.uidCenterID INNER JOIN tblAccountsLY ON tblJournalEntLY.intGLNumber = tblAccountsLY.intGLNumber WHERE (tblJournalLY.dteJournalDate < @SQStartDate)'
SET @QueryCommand2 = 'SELECT @strLevelTemp, tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, tblJournalLY.dteJournalDate, tblJournalLY.strSource, tblJournalLY.strComment, tblJournalLY.lngJourID, tblCenterEntLY.decAmount FROM tblAccountsLY INNER JOIN tblJournalEntLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber INNER JOIN tblCenterEntLY ON tblJournalEntLY.lngJourID = tblCenterEntLY.lngJourID AND tblJournalEntLY.intLineNum = tblCenterEntLY.intLineNum INNER JOIN tblCentersLY ON tblCenterEntLY.uidCenterID = tblCentersLY.uidCenterID INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate >= @SQStartDate AND tblJournalLY.dteJournalDate <= @SQFinishDate)'
END
IF @txtLoc_Length = 0
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1)'
SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1)'
IF @chkIncLower_IsChecked = 0
BEGIN	
SET @QueryCommand1 +=' AND (tblCenters.strLvl2 IS NULL)'
SET @QueryCommand2 +=' AND (tblCenters.strLvl2 IS NULL)'
END
SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber, tblAccounts.strDesc ORDER BY tblAccounts.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccounts.strDesc'
END
ELSE 
BEGIN
SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1)'
SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1)'
IF @chkIncLower_IsChecked = 0
BEGIN	
SET @QueryCommand1 +=' AND (tblCentersLY.strLvl2 IS NULL)'
SET @QueryCommand2 +=' AND (tblCentersLY.strLvl2 IS NULL)'
END
SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber, tblAccountsLY.strDesc ORDER BY tblAccountsLY.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccountsLY.strDesc'
END	
SET @SQLevel1 = @strLevelTemp		
END
ELSE IF @strSplit_Length = 1	
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2)'
SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2)'
IF @chkIncLower_IsChecked = 0
BEGIN	
SET @QueryCommand1 +=' AND (tblCenters.strLvl3 IS NULL)'
SET @QueryCommand2 +=' AND (tblCenters.strLvl3 IS NULL)'
END
SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber, tblAccounts.strDesc ORDER BY tblAccounts.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccounts.strDesc'
END
ELSE 
BEGIN
SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2)'
SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2)'
IF @chkIncLower_IsChecked = 0
BEGIN	
SET @QueryCommand1 +=' AND (tblCentersLY.strLvl3 IS NULL)'
SET @QueryCommand2 +=' AND (tblCentersLY.strLvl3 IS NULL)'
END
SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber, tblAccountsLY.strDesc ORDER BY tblAccountsLY.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccountsLY.strDesc'
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strLevelTemp
END
ELSE IF @strSplit_Length = 2
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3)'
SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3)'
IF @chkIncLower_IsChecked = 0
BEGIN	
SET @QueryCommand1 +=' AND (tblCenters.strLvl4 IS NULL)'
SET @QueryCommand2 +=' AND (tblCenters.strLvl4 IS NULL)'
END
SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber, tblAccounts.strDesc ORDER BY tblAccounts.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccounts.strDesc'
END
ELSE 
BEGIN
SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3)'
SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3)'
IF @chkIncLower_IsChecked = 0
BEGIN	
SET @QueryCommand1 +=' AND (tblCentersLY.strLvl4 IS NULL)'
SET @QueryCommand2 +=' AND (tblCentersLY.strLvl4 IS NULL)'
END
SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber, tblAccountsLY.strDesc ORDER BY tblAccountsLY.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccountsLY.strDesc'
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strSplit_1
SET @SQLevel3 = @strLevelTemp
END
ELSE IF @strSplit_Length = 3
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4)'
SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4)'
IF @chkIncLower_IsChecked = 0
BEGIN	
SET @QueryCommand1 +=' AND (tblCenters.strLvl5 IS NULL)'
SET @QueryCommand2 +=' AND (tblCenters.strLvl5 IS NULL)'
END
SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber, tblAccounts.strDesc ORDER BY tblAccounts.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccounts.strDesc'
END
ELSE 
BEGIN
SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4)'
SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4)'
IF @chkIncLower_IsChecked = 0
BEGIN	
SET @QueryCommand1 +=' AND (tblCentersLY.strLvl5 IS NULL)'
SET @QueryCommand2 +=' AND (tblCentersLY.strLvl5 IS NULL)'
END
SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber, tblAccountsLY.strDesc ORDER BY tblAccountsLY.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccountsLY.strDesc'
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strSplit_1
SET @SQLevel3 = @strSplit_2
SET @SQLevel4 = @strLevelTemp
END
ELSE
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4) AND (tblCenters.strLvl5 = @SQLevel5)'
SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4) AND (tblCenters.strLvl5 = @SQLevel5)'
SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber, tblAccounts.strDesc ORDER BY tblAccounts.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccounts.strDesc'
END
ELSE 
BEGIN
SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4) AND (tblCentersLY.strLvl5 = @SQLevel5)'
SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4) AND (tblCentersLY.strLvl5 = @SQLevel5)'
SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber, tblAccountsLY.strDesc ORDER BY tblAccountsLY.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccountsLY.strDesc'
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strSplit_1
SET @SQLevel3 = @strSplit_2
SET @SQLevel4 = @strSplit_3
SET @SQLevel5 = @strLevelTemp
END
Set @ParameterDefinition =' @strLevelTemp NVARCHAR(MAX),
@SQStartDate DATE,
@SQFinishDate DATE,
@SQLevel1 NVARCHAR(MAX),
@SQLevel2 NVARCHAR(MAX),
@SQLevel3 NVARCHAR(MAX),
@SQLevel4 NVARCHAR(MAX),
@SQLevel5 NVARCHAR(MAX)'
INSERT INTO @TmpTable EXECUTE sp_executesql @QueryCommand1, @ParameterDefinition, @strLevelTemp, @SQStartDate, @SQFinishDate, @SQLevel1, @SQLevel2, @SQLevel3, @SQLevel4, @SQLevel5
INSERT INTO @TmpTable EXECUTE sp_executesql @QueryCommand2, @ParameterDefinition, @strLevelTemp, @SQStartDate, @SQFinishDate, @SQLevel1, @SQLevel2, @SQLevel3, @SQLevel4, @SQLevel5
FETCH NEXT FROM db_cursor INTO @strLevelTemp
END   
CLOSE db_cursor   
DEALLOCATE db_cursor
SELECT strLevel
,intGLNumber
,strDesc
,dteJournalDate
,(CASE WHEN strSource = 'Stock Count'
THEN 
(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = T.lngJourID) = 0
THEN T.strSource
ELSE (SELECT ISNULL(CONCAT('SC/',strAdjDocID), T.strSource) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = T.lngJourID)
END)
ELSE strSource
END) AS strSource
,strComment
,lngJourID
,decAmount 
FROM @TmpTable AS T 
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptCenterIncomeSetupLoadQuery_1_WPF]
@strLevels AS NVARCHAR(MAX),
@optCurrentYear_IsChecked AS BIT,
@chkIncLower_IsChecked AS BIT,
@strSplit_Length AS INT,
@SQStartDate AS DATE,
@SQFinishDate AS DATE,
@txtLoc_Length AS INT,
@strSplit_0 AS NVARCHAR(MAX),
@strSplit_1 AS NVARCHAR(MAX),
@strSplit_2 AS NVARCHAR(MAX),
@strSplit_3 AS NVARCHAR(MAX)
AS
BEGIN 
DECLARE @TmpTable TABLE
(
intGLNumber NVARCHAR(MAX),
intAccType INT,
strDesc NVARCHAR(MAX),
sum_decAmount MONEY,
strLevel NVARCHAR(MAX)
)	
DECLARE @strLevelTemp AS NVARCHAR(MAX)
DECLARE db_cursor CURSOR FOR  
SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@strLevels, '~')
OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @strLevelTemp
WHILE @@FETCH_STATUS = 0   
BEGIN 
DECLARE @SQLevel1 AS NVARCHAR(MAX)
DECLARE @SQLevel2 AS NVARCHAR(MAX)
DECLARE @SQLevel3 AS NVARCHAR(MAX)
DECLARE @SQLevel4 AS NVARCHAR(MAX)
DECLARE @SQLevel5 AS NVARCHAR(MAX)
DECLARE @QueryCommand AS NVARCHAR(MAX)		
DECLARE @ParameterDefinition AS NVARCHAR(MAX) 	
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand = 'SELECT tblAccounts.intGLNumber, tblAccounts.intAccType, tblAccounts.strDesc, SUM(tblCenterEnt.decAmount) AS Expr1, @strLevelTemp FROM tblAccounts INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber INNER JOIN tblCenterEnt ON tblJournalEnt.lngJourID = tblCenterEnt.lngJourID AND tblJournalEnt.intLineNum = tblCenterEnt.intLineNum INNER JOIN tblCenters ON tblCenterEnt.uidCenterID = tblCenters.uidCenterID INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate >= @SQStartDate AND tblJournal.dteJournalDate <= @SQFinishDate)'
END
ELSE
BEGIN
SET @QueryCommand = 'SELECT tblAccountsLY.intGLNumber, tblAccountsLY.intAccType, tblAccountsLY.strDesc, SUM(tblCenterEntLY.decAmount) AS Expr1, @strLevelTemp FROM tblAccountsLY INNER JOIN tblJournalEntLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber INNER JOIN tblCenterEntLY ON tblJournalEntLY.lngJourID = tblCenterEntLY.lngJourID AND tblJournalEntLY.intLineNum = tblCenterEntLY.intLineNum INNER JOIN tblCentersLY ON tblCenterEntLY.uidCenterID = tblCentersLY.uidCenterID INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate >= @SQStartDate AND tblJournalLY.dteJournalDate <= @SQFinishDate)'
END
IF @txtLoc_Length = 0
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1)'
IF @chkIncLower_IsChecked = 0
BEGIN	SET @QueryCommand +=' AND (tblCenters.strLvl2 IS NULL)'	END
SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.intAccType, tblAccounts.strDesc'
SET @QueryCommand +=' ORDER BY tblAccounts.intGLNumber'
END
ELSE 
BEGIN
SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1)'
IF @chkIncLower_IsChecked = 0
BEGIN	SET @QueryCommand +=' AND (tblCentersLY.strLvl2 IS NULL)'	END
SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.intAccType, tblAccountsLY.strDesc'
SET @QueryCommand +=' ORDER BY tblAccountsLY.intGLNumber'		
END	
SET @SQLevel1 = @strLevelTemp		
END
ELSE IF @strSplit_Length = 1	
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2)'
IF @chkIncLower_IsChecked = 0
BEGIN	SET @QueryCommand +=' AND (tblCenters.strLvl3 IS NULL)'	END
SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.intAccType, tblAccounts.strDesc'
SET @QueryCommand +=' ORDER BY tblAccounts.intGLNumber'
END
ELSE 
BEGIN
SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2)'
IF @chkIncLower_IsChecked = 0
BEGIN	SET @QueryCommand +=' AND (tblCentersLY.strLvl3 IS NULL)'	END
SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.intAccType, tblAccountsLY.strDesc'
SET @QueryCommand +=' ORDER BY tblAccountsLY.intGLNumber'		
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strLevelTemp
END
ELSE IF @strSplit_Length = 2
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3)'
IF @chkIncLower_IsChecked = 0
BEGIN	SET @QueryCommand +=' AND (tblCenters.strLvl4 IS NULL)'	END
SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.intAccType, tblAccounts.strDesc'
SET @QueryCommand +=' ORDER BY tblAccounts.intGLNumber'
END
ELSE 
BEGIN
SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3)'
IF @chkIncLower_IsChecked = 0
BEGIN	SET @QueryCommand +=' AND (tblCentersLY.strLvl4 IS NULL)'	END
SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.intAccType, tblAccountsLY.strDesc'
SET @QueryCommand +=' ORDER BY tblAccountsLY.intGLNumber'		
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strSplit_1
SET @SQLevel3 = @strLevelTemp
END
ELSE IF @strSplit_Length = 3
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4)'
IF @chkIncLower_IsChecked = 0
BEGIN	SET @QueryCommand +=' AND (tblCenters.strLvl5 IS NULL)'	END
SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.intAccType, tblAccounts.strDesc'
SET @QueryCommand +=' ORDER BY tblAccounts.intGLNumber'
END
ELSE 
BEGIN
SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4)'
IF @chkIncLower_IsChecked = 0
BEGIN	SET @QueryCommand +=' AND (tblCentersLY.strLvl5 IS NULL)'	END
SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.intAccType, tblAccountsLY.strDesc'
SET @QueryCommand +=' ORDER BY tblAccountsLY.intGLNumber'		
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strSplit_1
SET @SQLevel3 = @strSplit_2
SET @SQLevel4 = @strLevelTemp
END
ELSE
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4) AND (tblCenters.strLvl5 = @SQLevel5)'
SET @QueryCommand +=' GROUP BY tblAccounts.intGLNumber, tblAccounts.intAccType, tblAccounts.strDesc'
SET @QueryCommand +=' ORDER BY tblAccounts.intGLNumber'
END
ELSE 
BEGIN
SET @QueryCommand +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4) AND (tblCentersLY.strLvl5 = @SQLevel5)'
SET @QueryCommand +=' GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.intAccType, tblAccountsLY.strDesc'
SET @QueryCommand +=' ORDER BY tblAccountsLY.intGLNumber'		
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strSplit_1
SET @SQLevel3 = @strSplit_2
SET @SQLevel4 = @strSplit_3
SET @SQLevel5 = @strLevelTemp
END
Set @ParameterDefinition =' @strLevelTemp NVARCHAR(MAX),
@SQStartDate DATE,
@SQFinishDate DATE,
@SQLevel1 NVARCHAR(MAX),
@SQLevel2 NVARCHAR(MAX),
@SQLevel3 NVARCHAR(MAX),
@SQLevel4 NVARCHAR(MAX),
@SQLevel5 NVARCHAR(MAX)'
INSERT INTO @TmpTable EXECUTE sp_executesql @QueryCommand, @ParameterDefinition, @strLevelTemp, @SQStartDate, @SQFinishDate, @SQLevel1, @SQLevel2, @SQLevel3, @SQLevel4, @SQLevel5
FETCH NEXT FROM db_cursor INTO @strLevelTemp
END   
CLOSE db_cursor   
DEALLOCATE db_cursor
SELECT * FROM @TmpTable 
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptCenterIncomeSetupLoadQuery_2_WPF]
@strLevels AS NVARCHAR(MAX),
@optCurrentYear_IsChecked AS BIT,
@chkIncLower_IsChecked AS BIT,
@strSplit_Length AS INT,
@SQStartDate AS DATE,
@SQFinishDate AS DATE,
@txtLoc_Length AS INT,
@strSplit_0 AS NVARCHAR(MAX),
@strSplit_1 AS NVARCHAR(MAX),
@strSplit_2 AS NVARCHAR(MAX),
@strSplit_3 AS NVARCHAR(MAX)
AS
BEGIN 
DECLARE @TmpTable TABLE
(
strLevel NVARCHAR(MAX),
intAccType INT,
intGLNumber NVARCHAR(MAX),
strDesc NVARCHAR(MAX),	
dteJournalDate DATE,
strSource NVARCHAR(MAX),
strComment NVARCHAR(MAX),
lngJourID BIGINT,			
decAmount MONEY
)	
DECLARE @strLevelTemp AS NVARCHAR(MAX)
DECLARE db_cursor CURSOR FOR  
SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@strLevels, '~')
OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @strLevelTemp
WHILE @@FETCH_STATUS = 0   
BEGIN 
DECLARE @SQLevel1 AS NVARCHAR(MAX)
DECLARE @SQLevel2 AS NVARCHAR(MAX)
DECLARE @SQLevel3 AS NVARCHAR(MAX)
DECLARE @SQLevel4 AS NVARCHAR(MAX)
DECLARE @SQLevel5 AS NVARCHAR(MAX)
DECLARE @QueryCommand1 AS NVARCHAR(MAX)
DECLARE @QueryCommand2 AS NVARCHAR(MAX)
DECLARE @ParameterDefinition AS NVARCHAR(MAX) 
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand1 = 'SELECT @strLevelTemp, tblAccounts.intAccType, tblJournalEnt.intGLNumber, tblAccounts.strDesc, @SQStartDate, ''Balance Forward'', '' '', 0, ISNULL(SUM(tblCenterEnt.decAmount), 0) AS Expr1 FROM tblCenterEnt INNER JOIN tblJournalEnt ON tblCenterEnt.lngJourID = tblJournalEnt.lngJourID AND tblCenterEnt.intLineNum = tblJournalEnt.intLineNum INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID INNER JOIN tblCenters ON tblCenterEnt.uidCenterID = tblCenters.uidCenterID INNER JOIN tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber WHERE (tblJournal.dteJournalDate < @SQStartDate)'
SET @QueryCommand2 = 'SELECT @strLevelTemp, tblAccounts.intAccType, tblAccounts.intGLNumber, tblAccounts.strDesc, tblJournal.dteJournalDate, tblJournal.strSource, tblJournal.strComment, tblJournal.lngJourID, tblCenterEnt.decAmount FROM tblAccounts INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber INNER JOIN tblCenterEnt ON tblJournalEnt.lngJourID = tblCenterEnt.lngJourID AND tblJournalEnt.intLineNum = tblCenterEnt.intLineNum INNER JOIN tblCenters ON tblCenterEnt.uidCenterID = tblCenters.uidCenterID INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate >= @SQStartDate AND tblJournal.dteJournalDate <= @SQFinishDate)'
END
ELSE
BEGIN
SET @QueryCommand1 = 'SELECT @strLevelTemp, tblAccountsLY.intAccType, tblJournalEntLY.intGLNumber, tblAccountsLY.strDesc, @SQStartDate, ''Balance Forward'', '' '', 0, ISNULL(SUM(tblCenterEntLY.decAmount), 0) AS Expr1 FROM tblCenterEntLY INNER JOIN tblJournalEntLY ON tblCenterEntLY.lngJourID = tblJournalEntLY.lngJourID AND tblCenterEntLY.intLineNum = tblJournalEntLY.intLineNum INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID INNER JOIN tblCentersLY ON tblCenterEntLY.uidCenterID = tblCentersLY.uidCenterID INNER JOIN tblAccountsLY ON tblJournalEntLY.intGLNumber = tblAccountsLY.intGLNumber WHERE (tblJournalLY.dteJournalDate < @SQStartDate)'
SET @QueryCommand2 = 'SELECT @strLevelTemp, tblAccountsLY.intAccType, tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, tblJournalLY.dteJournalDate, tblJournalLY.strSource, tblJournalLY.strComment, tblJournalLY.lngJourID, tblCenterEntLY.decAmount FROM tblAccountsLY INNER JOIN tblJournalEntLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber INNER JOIN tblCenterEntLY ON tblJournalEntLY.lngJourID = tblCenterEntLY.lngJourID AND tblJournalEntLY.intLineNum = tblCenterEntLY.intLineNum INNER JOIN tblCentersLY ON tblCenterEntLY.uidCenterID = tblCentersLY.uidCenterID INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate >= @SQStartDate AND tblJournalLY.dteJournalDate <= @SQFinishDate)'
END
IF @txtLoc_Length = 0
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1)'
SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1)'
IF @chkIncLower_IsChecked = 0
BEGIN	
SET @QueryCommand1 +=' AND (tblCenters.strLvl2 IS NULL)'
SET @QueryCommand2 +=' AND (tblCenters.strLvl2 IS NULL)'
END
SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber,tblAccounts.intAccType,tblAccounts.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccounts.intGLNumber, tblJournal.dteJournalDate, tblJournal.strSource'
END
ELSE 
BEGIN
SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1)'
SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1)'
IF @chkIncLower_IsChecked = 0
BEGIN	
SET @QueryCommand1 +=' AND (tblCentersLY.strLvl2 IS NULL)'
SET @QueryCommand2 +=' AND (tblCentersLY.strLvl2 IS NULL)'
END
SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber,tblAccountsLY.intAccType,tblAccountsLY.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccountsLY.intGLNumber, tblJournalLY.dteJournalDate, tblJournalLY.strSource'
END	
SET @SQLevel1 = @strLevelTemp		
END
ELSE IF @strSplit_Length = 1	
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2)'
SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2)'
IF @chkIncLower_IsChecked = 0
BEGIN	
SET @QueryCommand1 +=' AND (tblCenters.strLvl3 IS NULL)'
SET @QueryCommand2 +=' AND (tblCenters.strLvl3 IS NULL)'
END
SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber,tblAccounts.intAccType,tblAccounts.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccounts.intGLNumber, tblJournal.dteJournalDate, tblJournal.strSource'
END
ELSE 
BEGIN
SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2)'
SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2)'
IF @chkIncLower_IsChecked = 0
BEGIN	
SET @QueryCommand1 +=' AND (tblCentersLY.strLvl3 IS NULL)'
SET @QueryCommand2 +=' AND (tblCentersLY.strLvl3 IS NULL)'
END
SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber,tblAccountsLY.intAccType,tblAccountsLY.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccountsLY.intGLNumber, tblJournalLY.dteJournalDate, tblJournalLY.strSource'
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strLevelTemp
END
ELSE IF @strSplit_Length = 2
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3)'
SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3)'
IF @chkIncLower_IsChecked = 0
BEGIN	
SET @QueryCommand1 +=' AND (tblCenters.strLvl4 IS NULL)'
SET @QueryCommand2 +=' AND (tblCenters.strLvl4 IS NULL)'
END
SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber,tblAccounts.intAccType,tblAccounts.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccounts.intGLNumber, tblJournal.dteJournalDate, tblJournal.strSource'
END
ELSE 
BEGIN
SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3)'
SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3)'
IF @chkIncLower_IsChecked = 0
BEGIN	
SET @QueryCommand1 +=' AND (tblCentersLY.strLvl4 IS NULL)'
SET @QueryCommand2 +=' AND (tblCentersLY.strLvl4 IS NULL)'
END
SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber,tblAccountsLY.intAccType,tblAccountsLY.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccountsLY.intGLNumber, tblJournalLY.dteJournalDate, tblJournalLY.strSource'
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strSplit_1
SET @SQLevel3 = @strLevelTemp
END
ELSE IF @strSplit_Length = 3
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4)'
SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4)'
IF @chkIncLower_IsChecked = 0
BEGIN	
SET @QueryCommand1 +=' AND (tblCenters.strLvl5 IS NULL)'
SET @QueryCommand2 +=' AND (tblCenters.strLvl5 IS NULL)'
END
SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber,tblAccounts.intAccType,tblAccounts.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccounts.intGLNumber, tblJournal.dteJournalDate, tblJournal.strSource'
END
ELSE 
BEGIN
SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4)'
SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4)'
IF @chkIncLower_IsChecked = 0
BEGIN	
SET @QueryCommand1 +=' AND (tblCentersLY.strLvl5 IS NULL)'
SET @QueryCommand2 +=' AND (tblCentersLY.strLvl5 IS NULL)'
END
SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber,tblAccountsLY.intAccType,tblAccountsLY.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccountsLY.intGLNumber, tblJournalLY.dteJournalDate, tblJournalLY.strSource'
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strSplit_1
SET @SQLevel3 = @strSplit_2
SET @SQLevel4 = @strLevelTemp
END
ELSE
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @QueryCommand1 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4) AND (tblCenters.strLvl5 = @SQLevel5)'
SET @QueryCommand2 +=' AND (tblCenters.strLvl1 = @SQLevel1) AND (tblCenters.strLvl2 = @SQLevel2) AND (tblCenters.strLvl3 = @SQLevel3) AND (tblCenters.strLvl4 = @SQLevel4) AND (tblCenters.strLvl5 = @SQLevel5)'
SET @QueryCommand1 +=' GROUP BY tblJournalEnt.intGLNumber,tblAccounts.intAccType,tblAccounts.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccounts.intGLNumber, tblJournal.dteJournalDate, tblJournal.strSource'
END
ELSE 
BEGIN
SET @QueryCommand1 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4) AND (tblCentersLY.strLvl5 = @SQLevel5)'
SET @QueryCommand2 +=' AND (tblCentersLY.strLvl1 = @SQLevel1) AND (tblCentersLY.strLvl2 = @SQLevel2) AND (tblCentersLY.strLvl3 = @SQLevel3) AND (tblCentersLY.strLvl4 = @SQLevel4) AND (tblCentersLY.strLvl5 = @SQLevel5)'
SET @QueryCommand1 +=' GROUP BY tblJournalEntLY.intGLNumber,tblAccountsLY.intAccType,tblAccountsLY.strDesc'
SET @QueryCommand2 +=' ORDER BY tblAccountsLY.intGLNumber, tblJournalLY.dteJournalDate, tblJournalLY.strSource'
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strSplit_1
SET @SQLevel3 = @strSplit_2
SET @SQLevel4 = @strSplit_3
SET @SQLevel5 = @strLevelTemp
END
Set @ParameterDefinition =' @strLevelTemp NVARCHAR(MAX),
@SQStartDate DATE,
@SQFinishDate DATE,
@SQLevel1 NVARCHAR(MAX),
@SQLevel2 NVARCHAR(MAX),
@SQLevel3 NVARCHAR(MAX),
@SQLevel4 NVARCHAR(MAX),
@SQLevel5 NVARCHAR(MAX)'
INSERT INTO @TmpTable EXECUTE sp_executesql @QueryCommand1, @ParameterDefinition, @strLevelTemp, @SQStartDate, @SQFinishDate, @SQLevel1, @SQLevel2, @SQLevel3, @SQLevel4, @SQLevel5
INSERT INTO @TmpTable EXECUTE sp_executesql @QueryCommand2, @ParameterDefinition, @strLevelTemp, @SQStartDate, @SQFinishDate, @SQLevel1, @SQLevel2, @SQLevel3, @SQLevel4, @SQLevel5
FETCH NEXT FROM db_cursor INTO @strLevelTemp
END   
CLOSE db_cursor   
DEALLOCATE db_cursor
SELECT * FROM @TmpTable 
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptCenterBusinessLogicOnLoaded_1_WPF]
@optCurrentYear_IsChecked AS BIT,
@chkInactive_IsChecked AS BIT,
@strSplit_Length AS INT,
@txtLoc_Text AS NVARCHAR(MAX),
@strSplit_0 AS NVARCHAR(MAX),
@strSplit_1 AS NVARCHAR(MAX),
@strSplit_2 AS NVARCHAR(MAX),
@strSplit_3 AS NVARCHAR(MAX)
AS
BEGIN
DECLARE @QueryCommand AS NVARCHAR(MAX)
DECLARE @ParameterDefinition AS NVARCHAR(MAX) 	
DECLARE @SQLevel1 AS NVARCHAR(200)
DECLARE @SQLevel2 AS NVARCHAR(200)
DECLARE @SQLevel3 AS NVARCHAR(200)
DECLARE @SQLevel4 AS NVARCHAR(200)
DECLARE @txtLoc_Length AS INT = LEN(@txtLoc_Text)		
IF @txtLoc_Length = 0
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
IF @chkInactive_IsChecked = 0
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl1 as strLvl1 FROM tblCenters WHERE bitInactive = 0 ORDER BY strLvl1'
END
ELSE
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl1 as strLvl1 FROM tblCenters ORDER BY strLvl1'
END						
END
ELSE
BEGIN
IF @chkInactive_IsChecked = 0
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl1 as strLvl1 FROM tblCentersLY WHERE bitInactive = 0 ORDER BY strLvl1'
END
ELSE
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl1 as strLvl1 FROM tblCentersLY ORDER BY strLvl1'
END
END
END
ELSE IF @strSplit_Length = 1	
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
IF @chkInactive_IsChecked = 0
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl2 as strLvl1 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 IS NOT NULL) AND (strLvl2 NOT IN (SELECT strLvl2 FROM tblCenters WHERE strLvl1 = @SQLevel1 AND bitInactive = 1)) ORDER BY strLvl2'
END
ELSE
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl2 as strLvl1 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 IS NOT NULL) ORDER BY strLvl2'
END						
END
ELSE
BEGIN
IF @chkInactive_IsChecked = 0
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl2 as strLvl1 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 IS NOT NULL) AND (strLvl2 NOT IN (SELECT strLvl2 FROM tblCentersLY WHERE strLvl1 = @SQLevel1 AND bitInactive = 1)) ORDER BY strLvl2'
END
ELSE
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl2 as strLvl1 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 IS NOT NULL) ORDER BY strLvl2'
END	
END
SET @SQLevel1 = @txtLoc_Text
END
ELSE IF @strSplit_Length = 2	
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
IF @chkInactive_IsChecked = 0
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl3 as strLvl1 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 IS NOT NULL) AND (strLvl3 NOT IN (SELECT strLvl3 FROM tblCenters WHERE strLvl1 = @SQLevel1 AND strLvl2 = @SQLevel2 AND bitInactive = 1)) ORDER BY strLvl3'
END
ELSE
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl3 as strLvl1 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 IS NOT NULL) ORDER BY strLvl3'
END						
END
ELSE
BEGIN
IF @chkInactive_IsChecked = 0
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl3 as strLvl1 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 IS NOT NULL) AND (strLvl3 NOT IN (SELECT strLvl3 FROM tblCentersLY WHERE strLvl1 = @SQLevel1 AND strLvl2 = @SQLevel2 AND bitInactive = 1)) ORDER BY strLvl3'
END
ELSE
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl3 as strLvl1 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 IS NOT NULL) ORDER BY strLvl3'
END	
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strSplit_1
END
ELSE IF @strSplit_Length = 3	
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
IF @chkInactive_IsChecked = 0
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl4 as strLvl1 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 IS NOT NULL) AND (strLvl4 NOT IN (SELECT strLvl4 FROM tblCenters WHERE strLvl1 = @SQLevel1 AND strLvl2 = @SQLevel2 AND strLvl3 = @SQLevel3 AND bitInactive = 1)) ORDER BY strLvl4'
END
ELSE
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl4 as strLvl1 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 IS NOT NULL) ORDER BY strLvl4'
END						
END
ELSE
BEGIN
IF @chkInactive_IsChecked = 0
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl4 as strLvl1 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 IS NOT NULL) AND (strLvl4 NOT IN (SELECT strLvl4 FROM tblCentersLY WHERE strLvl1 = @SQLevel1 AND strLvl2 = @SQLevel2 AND strLvl3 = @SQLevel3 AND bitInactive = 1)) ORDER BY strLvl4'
END
ELSE
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl4 as strLvl1 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 IS NOT NULL) ORDER BY strLvl4'
END		
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strSplit_1
SET @SQLevel3 = @strSplit_2
END
ELSE
BEGIN
IF @optCurrentYear_IsChecked = 1
BEGIN
IF @chkInactive_IsChecked = 0
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl5 as strLvl1 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 = @SQLevel4) AND (strLvl5 IS NOT NULL) AND (strLvl5 NOT IN (SELECT strLvl5 FROM tblCenters WHERE strLvl1 = @SQLevel1 AND strLvl2 = @SQLevel2 AND strLvl3 = @SQLevel3 AND strLvl4 = @SQLevel4 AND bitInactive = 1)) ORDER BY strLvl5'
END
ELSE
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl5 as strLvl1 FROM tblCenters WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 = @SQLevel4) AND (strLvl5 IS NOT NULL) ORDER BY strLvl5'
END						
END
ELSE
BEGIN
IF @chkInactive_IsChecked = 0
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl5 as strLvl1 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 = @SQLevel4) AND (strLvl5 IS NOT NULL) AND (strLvl5 NOT IN (SELECT strLvl5 FROM tblCentersLY WHERE strLvl1 = @SQLevel1 AND strLvl2 = @SQLevel2 AND strLvl3 = @SQLevel3 AND strLvl4 = @SQLevel4 AND bitInactive = 1)) ORDER BY strLvl5'
END
ELSE
BEGIN
SET @QueryCommand = 'SELECT DISTINCT strLvl5 as strLvl1 FROM tblCentersLY WHERE (strLvl1 = @SQLevel1) AND (strLvl2 = @SQLevel2) AND (strLvl3 = @SQLevel3) AND (strLvl4 = @SQLevel4) AND (strLvl5 IS NOT NULL) ORDER BY strLvl5'
END		
END
SET @SQLevel1 = @strSplit_0
SET @SQLevel2 = @strSplit_1
SET @SQLevel3 = @strSplit_2
SET @SQLevel4 = @strSplit_3
END
Set @ParameterDefinition =' @SQLevel1 NVARCHAR(MAX),
@SQLevel2 NVARCHAR(MAX),
@SQLevel3 NVARCHAR(MAX),
@SQLevel4 NVARCHAR(MAX)'
EXECUTE SP_EXECUTESQL @QueryCommand, @ParameterDefinition, @SQLevel1, @SQLevel2, @SQLevel3, @SQLevel4
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptInvTranGird]
-- Add the parameters for the stored procedure here
@txtSearch varchar(Max) = NULL, 
@optAcctSets  bit = Null,
@chkInactiveItems bit = Null,
@optAssets bit NULL,
@optCategory bit NULL,
@blnBPToolsMode bit NULL,
@optItem bit NULL,
@PL_InvSortDescription bit NULL,
@optService bit NULL,
@optAll bit NULL,
@SQUserName varchar(Max) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
IF(@optAcctSets = 1)
BEGIN
IF(@chkInactiveItems = 0)
BEGIN
SET @sql ='SELECT strAcctSet AS strPartNumber, strDesc FROM tblAccountSets WHERE (blnInactive = 0) AND (blnBuyout = 0) '
IF(LEN(@txtSearch) > 3)
BEGIN
SET @sql += ' AND (strAcctSet LIKE ''%'+@txtSearch+'%'' OR strDesc LIKE ''%'+@txtSearch+'%'')'
END
END
ELSE
BEGIN
SET @sql += ' SELECT strAcctSet AS strPartNumber, strDesc FROM tblAccountSets WHERE (blnBuyout = 0) '
IF(LEN(@txtSearch) > 3)
BEGIN
SET @sql += ' AND (strAcctSet LIKE ''%'+@txtSearch+'%'' OR strDesc LIKE ''%'+@txtSearch+'%'')'
END
END
SET @sql += ' ORDER BY strAcctSet'
END
ELSE IF(@optAssets = 1)
BEGIN
IF(@chkInactiveItems = 0)
BEGIN
SET @sql = 'SELECT intGLNumber AS strPartNumber, strDesc FROM tblAccounts WHERE (bitInventory = 1) AND (bitInactive = 0) AND (intGLNumber NOT IN (SELECT DISTINCT intGLAsset FROM tblAccountSets WHERE blnBuyout = 1)) '
IF(LEN(@txtSearch) > 3)
BEGIN
SET @sql += ' AND (intGLNumber LIKE ''%'+@txtSearch+'%'' OR strDesc LIKE ''%'+@txtSearch+'%'')'
END
END
ELSE
BEGIN
SET @sql = 'SELECT intGLNumber AS strPartNumber, strDesc FROM tblAccounts WHERE (bitInventory = 1) AND (intGLNumber NOT IN (SELECT DISTINCT intGLAsset FROM tblAccountSets WHERE blnBuyout = 1)) '
IF(LEN(@txtSearch) > 3)
BEGIN
SET @sql += ' AND (intGLNumber LIKE ''%'+@txtSearch+'%'' OR strDesc LIKE ''%'+@txtSearch+'%'')'
END
END
SET @sql += ' ORDER BY intGLNumber'
END
ELSE IF(@optCategory = 1)
BEGIN
IF(@chkInactiveItems = 0)
BEGIN
SET @sql = 'SELECT strCategory AS strPartNumber, strDesc FROM tblInvCat WHERE (bitInactive = 0) '
IF(LEN(@txtSearch) > 3)
BEGIN
SET @sql += 'AND (strCategory LIKE ''%'+@txtSearch+'%'' OR strDesc LIKE ''%'+@txtSearch+'%'')'
END
END
ELSE
BEGIN
SET @sql = 'SELECT strCategory AS strPartNumber, strDesc FROM tblInvCat '
IF(LEN(@txtSearch) > 3)
BEGIN
SET @sql += 'WHERE (strCategory LIKE ''%'+@txtSearch+'%'' OR strDesc LIKE ''%'+@txtSearch+'%'')'
END
END
IF(@blnBPToolsMode = 0)
BEGIN
IF Charindex('WHERE', @sql) > 0
BEGIN
SET @sql = @sql + ' AND '
END
ELSE
BEGIN
SET @sql = @sql + ' WHERE '
END
SET @sql = @sql + ' strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = '''+@SQUserName+'''))'
END
SET @sql += ' ORDER BY strCategory'
END
ELSE IF(@optItem = 1)
BEGIN
IF(@chkInactiveItems = 0)
BEGIN
SET @sql = 'SELECT strPartNumber AS strPartNumber, strDesc, intType FROM tblInv WHERE (intType = 1) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0 '
IF(LEN(@txtSearch) > 3)
BEGIN
SET @sql += ' AND (strPartNumber LIKE ''%'+@txtSearch+'%'' OR strDesc LIKE ''%'+@txtSearch+'%'')'
END
END
ELSE
BEGIN
SET @sql = 'SELECT strPartNumber, strDesc, intType FROM tblInv WHERE (intType = 1) AND tblInv.bitOtherCmp = 0 '
IF(LEN(@txtSearch) > 3)
BEGIN
SET @sql += ' AND (strPartNumber LIKE ''%'+@txtSearch+'%'' OR strDesc LIKE ''%'+@txtSearch+'%'')'
END
END
IF(@blnBPToolsMode = 0)
BEGIN
IF Charindex('WHERE', @sql) > 0
BEGIN
SET @sql = @sql + ' AND '
END
ELSE
BEGIN
SET @sql = @sql + ' WHERE '
END
SET @sql = @sql + ' strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = '''+@SQUserName+'''))'
END
IF(@PL_InvSortDescription = 0)
BEGIN
SET @sql += ' ORDER BY strPartNumber'
END
ELSE
BEGIN
SET @sql += ' ORDER BY strDesc'
END
END
ELSE IF(@optService = 1)
BEGIN
IF(@chkInactiveItems = 0)
BEGIN
SET @sql = 'SELECT strPartNumber, strDesc, intType FROM tblInv WHERE (intType = 4) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0 '
IF(LEN(@txtSearch) > 3)
BEGIN
SET @sql += ' AND (strPartNumber LIKE ''%'+@txtSearch+'%'' OR strDesc LIKE ''%'+@txtSearch+'%'')'
END
END
ELSE
BEGIN
SET @sql = 'SELECT strPartNumber, strDesc, intType FROM tblInv WHERE (intType = 4) AND tblInv.bitOtherCmp = 0 '
IF(LEN(@txtSearch) > 3)
BEGIN
SET @sql += ' AND (strPartNumber LIKE ''%'+@txtSearch+'%'' OR strDesc LIKE ''%'+@txtSearch+'%'')'
END
END
IF(@blnBPToolsMode = 0)
BEGIN
IF Charindex('WHERE', @sql) > 0
BEGIN
SET @sql = @sql + ' AND '
END
ELSE
BEGIN
SET @sql = @sql + ' WHERE '
END
SET @sql = @sql + ' strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = '''+@SQUserName+'''))'
END
IF(@PL_InvSortDescription = 0)
BEGIN
SET @sql += ' ORDER BY strPartNumber'
END
ELSE
BEGIN	
SET @sql += ' ORDER BY strDesc'
END
END
ELSE IF(@optAll = 1)
BEGIN
IF(@chkInactiveItems = 0)
BEGIN
SET @sql = 'SELECT strPartNumber, strDesc, intType FROM tblInv WHERE (bitInactive = 0) AND (intType <> 5) AND tblInv.bitOtherCmp = 0 '
IF(LEN(@txtSearch) > 3)
BEGIN
SET @sql += ' AND (strPartNumber LIKE ''%'+@txtSearch+'%'' OR strDesc LIKE ''%'+@txtSearch+'%'')'
END
END
ELSE
BEGIN
SET @sql = 'SELECT strPartNumber, strDesc, intType FROM tblInv WHERE (intType <> 5) AND tblInv.bitOtherCmp = 0 '
IF(LEN(@txtSearch) > 3)
BEGIN
SET @sql += ' AND (strPartNumber LIKE ''%'+@txtSearch+'%'' OR strDesc LIKE ''%'+@txtSearch+'%'')'
END
END
IF(@blnBPToolsMode = 0)
BEGIN
IF Charindex('WHERE', @sql) > 0
BEGIN
SET @sql = @sql + ' AND '
END
ELSE
BEGIN
SET @sql = @sql + ' WHERE '
END
SET @sql = @sql + ' strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = '''+@SQUserName+'''))'
END
IF(@PL_InvSortDescription = 0)
BEGIN
SET @sql += ' ORDER BY strPartNumber'
END
ELSE
BEGIN	
SET @sql += ' ORDER BY strDesc'
END
END
PRINT(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptInvTransactionReporDetails]
-- Add the parameters for the stored procedure here
@optAcctSets  bit = Null,
@SQAcctSet varchar(MAX) = NULL,
@optActiveItems bit = NULL,
@PL_InvSortDescription bit = NULL,
@optAssets bit = NULL,
@SQGLNumber varchar(MAX) = NULL,
@optInactiveItems bit = NULL,
@optCategory bit = NULL,
@SQCategory varchar(MAX) = NULL,
@SQPartNumber varchar(MAX) = NULL,
@optItem bit = NULL,
@optService bit = NULL,
@optAll bit = NULL,
@blnDTItemExists bit = NULL,
@SQStart Date = NULL,
@SQEnd Date = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
IF(@optAcctSets = 1)
BEGIN 
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, INV.dteJournalDate, INV.intModule, INV.lngJourID, (CASE WHEN INV.strSource = ''Stock Count'' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) = 0 THEN INV.strSource ELSE (SELECT ISNULL(CONCAT(''SC/'', strAdjDocID), INV.strSource) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) END) ELSE INV.strSource END) AS strSource, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decQtyOut, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decValueOut, tblInv.strAcctSet AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking INV ON tblInvTrackingDT.lngInvTrackID = INV.lngInvTrackID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName WHERE (tblInv.strAcctSet IN (SELECT * FROM fnSplitStringAsTable('''+@SQAcctSet+''', '',''))) AND (INV.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') '
IF(@optActiveItems = 1)
BEGIN	
SET @sql += ' AND tblInv.bitInactive = 0 '
END
ELSE IF(@optInactiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 1 '
END
END
ELSE IF(@optAssets = 1)
BEGIN
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, INV.dteJournalDate, INV.intModule, INV.lngJourID, (CASE WHEN INV.strSource = ''Stock Count'' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) = 0 THEN INV.strSource ELSE (SELECT ISNULL(CONCAT(''SC/'', strAdjDocID), INV.strSource) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) END) ELSE INV.strSource END) AS strSource, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decQtyOut, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decValueOut, (CAST(tblAccounts.intGLNumber AS varchar(20)) + '' '' + tblAccounts.strDesc) AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking INV ON tblInvTrackingDT.lngInvTrackID = INV.lngInvTrackID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber  WHERE (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable('''+@SQGLNumber+''', '',''))) AND (INV.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') '
IF(@optActiveItems = 1)
BEGIN	
SET @sql += ' AND tblInv.bitInactive = 0 '
END
ELSE IF(@optInactiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 1 '
END
END
ELSE IF(@optCategory = 1)
BEGIN
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, INV.dteJournalDate, INV.intModule, INV.lngJourID, (CASE WHEN INV.strSource = ''Stock Count'' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) = 0 THEN INV.strSource ELSE (SELECT ISNULL(CONCAT(''SC/'', strAdjDocID), INV.strSource) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) END) ELSE INV.strSource END) AS strSource, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decQtyOut, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decValueOut, tblInv.strCategory AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking INV ON tblInvTrackingDT.lngInvTrackID = INV.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber  WHERE (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable('''+@SQCategory+''', '',''))) AND (INV.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') '
IF(@optActiveItems = 1)
BEGIN	
SET @sql += ' AND tblInv.bitInactive = 0 '
END
ELSE IF(@optInactiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 1 '
END
END
ELSE IF(@optItem = 1)
BEGIN
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, INV.dteJournalDate, INV.intModule, INV.lngJourID, (CASE WHEN INV.strSource = ''Stock Count'' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) = 0 THEN INV.strSource ELSE (SELECT ISNULL(CONCAT(''SC/'', strAdjDocID), INV.strSource) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) END) ELSE INV.strSource END) AS strSource, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decQtyOut, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decValueOut, '''' AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking INV ON tblInvTrackingDT.lngInvTrackID = INV.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber  WHERE (tblInvTrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable('''+@SQPartNumber+''', '',''))) AND (INV.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') '
END
ELSE IF(@optService = 1)
BEGIN
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, INV.dteJournalDate, INV.intModule, INV.lngJourID, (CASE WHEN INV.strSource = ''Stock Count'' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) = 0 THEN INV.strSource ELSE (SELECT ISNULL(CONCAT(''SC/'', strAdjDocID), INV.strSource) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) END) ELSE INV.strSource END) AS strSource, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decQtyOut, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decValueOut, '''' AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking INV ON tblInvTrackingDT.lngInvTrackID = INV.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber WHERE (tblInvTrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable('''+@SQPartNumber+''', '',''))) AND (INV.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') '
END
ELSE IF(@optAll = 1)
BEGIN
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, INV.dteJournalDate, INV.intModule, INV.lngJourID, (CASE WHEN INV.strSource = ''Stock Count'' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) = 0 THEN INV.strSource ELSE (SELECT ISNULL(CONCAT(''SC/'', strAdjDocID), INV.strSource) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) END) ELSE INV.strSource END) AS strSource, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decQtyOut, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decValueOut, '''' AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking INV ON tblInvTrackingDT.lngInvTrackID = INV.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber WHERE (tblInvTrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable('''+@SQPartNumber+''', '',''))) AND (INV.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') '
END
IF(@blnDTItemExists = 1)
BEGIN 
SET @sql += ' AND '
END
ELSE
BEGIN
SET @sql += ' WHERE '
END
SET @sql += ' (INV.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''')'
IF(@PL_InvSortDescription = 0)
BEGIN
SET @sql += ' ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber, INV.dteJournalDate, tblInvTrackingDT.lngInvTrackID'
END
ELSE
BEGIN
SET @sql += ' ORDER BY OrderbyCol,tblInv.strDesc, tblInvTrackingDT.strPartNumber, INV.dteJournalDate, tblInvTrackingDT.lngInvTrackID'
END
PRINT(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptInvTransactionReportSummary]
-- Add the parameters for the stored procedure here
@optAcctSets  bit = Null,
@SQAcctSet varchar(MAX) = NULL,
@optActiveItems bit = NULL,
@PL_InvSortDescription bit = NULL,
@optAssets bit = NULL,
@SQGLNumber varchar(MAX) = NULL,
@optInactiveItems bit = NULL,
@optCategory bit = NULL,
@SQCategory varchar(MAX) = NULL,
@SQPartNumber varchar(MAX) = NULL,
@optItem bit = NULL,
@optService bit = NULL,
@optAll bit = NULL,
@SQStart Date = NULL,
@SQEnd Date = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
IF(@optAcctSets = 1)
BEGIN 
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber AS PartNumber, tblInv.strDesc AS Descriptions, tblInvTracking.intModule AS Module, COUNT(tblInvTrackingDT.strPartNumber) as NoTrans, SUM(tblInvTrackingDT.decQtyIn) as QtyIn, SUM(tblInvTrackingDT.decQtyOut) as QtyOut, SUM(tblInvTrackingDT.decValueIn) as ValueIn, SUM(tblInvTrackingDT.decValueOut) as ValueOut, tblInv.strAcctSet AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName WHERE (tblInv.strAcctSet IN (SELECT * FROM fnSplitStringAsTable('''+@SQAcctSet+''', '',''))) AND (tblInvTracking.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''')'
IF(@optActiveItems = 1)
BEGIN	
SET @sql += ' AND tblInv.bitInactive = 0 '
END
ELSE IF(@optInactiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 1 '
END
SET @sql += ' GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, tblInv.strAcctSet'
END
ELSE IF(@optAssets = 1)
--ASSETS
BEGIN
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber AS PartNumber, tblInv.strDesc AS Descriptions, tblInvTracking.intModule AS Module, COUNT(tblInvTrackingDT.strPartNumber) as NoTrans, SUM(tblInvTrackingDT.decQtyIn) as QtyIn, SUM(tblInvTrackingDT.decQtyOut)  as QtyOut, SUM(tblInvTrackingDT.decValueIn) as ValueIn, SUM(tblInvTrackingDT.decValueOut) as ValueOut, (CAST(tblAccounts.intGLNumber AS varchar(20)) + '' '' + tblAccounts.strDesc) AS OrderbyCol  FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber  WHERE (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable('''+@SQGLNumber+''', '',''))) AND (tblInvTracking.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''')'
IF(@optActiveItems = 1)
BEGIN	
SET @sql += ' AND tblInv.bitInactive = 0 '
END
ELSE IF(@optInactiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 1 '
END
SET @sql += ' GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, (CAST(tblAccounts.intGLNumber AS varchar(20)) + '' '' + tblAccounts.strDesc)'
END
ELSE IF(@optCategory = 1)
--CATEGORY
BEGIN
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber AS PartNumber, tblInv.strDesc AS Descriptions, tblInvTracking.intModule AS Module, COUNT(tblInvTrackingDT.strPartNumber) as NoTrans, SUM(tblInvTrackingDT.decQtyIn) as QtyIn, SUM(tblInvTrackingDT.decQtyOut)  as QtyOut, SUM(tblInvTrackingDT.decValueIn) as ValueIn, SUM(tblInvTrackingDT.decValueOut) as ValueOut, tblInv.strCategory AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber  WHERE (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable('''+@SQCategory+''', '',''))) AND (tblInvTracking.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') '
IF(@optActiveItems = 1)
BEGIN	
SET @sql += ' AND tblInv.bitInactive = 0 '
END
ELSE IF(@optInactiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 1 '
END
SET @sql += ' GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, tblInv.strCategory'
END
ELSE IF(@optItem = 1)
BEGIN
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber AS PartNumber, tblInv.strDesc AS Descriptions, tblInvTracking.intModule AS Module, COUNT(tblInvTrackingDT.strPartNumber) as NoTrans, SUM(tblInvTrackingDT.decQtyIn) as QtyIn, SUM(tblInvTrackingDT.decQtyOut) as QtyOut, SUM(tblInvTrackingDT.decValueIn) as ValueIn, SUM(tblInvTrackingDT.decValueOut) as ValueOut, '''' AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber  WHERE (tblInvTrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable('''+@SQPartNumber+''', '',''))) AND (tblInvTracking.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''')'
IF(@optActiveItems = 1)
BEGIN	
SET @sql += ' AND tblInv.bitInactive = 0 '
END
ELSE IF(@optInactiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 1 '
END
SET @sql += ' GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, strCategory'
END
ELSE IF(@optService = 1)
BEGIN	
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber AS PartNumber, tblInv.strDesc AS Descriptions, tblInvTracking.intModule AS Module, COUNT(tblInvTrackingDT.strPartNumber) as NoTrans, SUM(tblInvTrackingDT.decQtyIn) as QtyIn, SUM(tblInvTrackingDT.decQtyOut) as QtyOut, SUM(tblInvTrackingDT.decValueIn) as ValueIn, SUM(tblInvTrackingDT.decValueOut) as ValueOut, '''' AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber WHERE (tblInvTrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable('''+@SQPartNumber+''', '',''))) AND (tblInvTracking.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''')'
IF(@optActiveItems = 1)
BEGIN	
SET @sql += ' AND tblInv.bitInactive = 0 '
END
ELSE IF(@optInactiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 1 '
END
SET @sql += ' GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, strCategory'
END
ELSE IF(@optAll = 1)
BEGIN
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber AS PartNumber, tblInv.strDesc AS Descriptions, tblInvTracking.intModule AS Module, COUNT(tblInvTrackingDT.strPartNumber) as NoTrans, SUM(tblInvTrackingDT.decQtyIn) as QtyIn, SUM(tblInvTrackingDT.decQtyOut) as QtyOut, SUM(tblInvTrackingDT.decValueIn) as ValueIn, SUM(tblInvTrackingDT.decValueOut) as ValueOut, '''' AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber WHERE (tblInvTrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable('''+@SQPartNumber+''', '',''))) AND (tblInvTracking.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''')'
IF(@optActiveItems = 1)
BEGIN	
SET @sql += ' AND tblInv.bitInactive = 0 '
END
ELSE IF(@optInactiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 1 '
END
SET @sql += ' GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, strCategory'
END
IF(@PL_InvSortDescription = 0)
BEGIN
SET @sql += ' ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber, tblInvTracking.intModule'
END
ELSE
BEGIN
SET @sql += ' ORDER BY OrderbyCol,tblInv.strDesc, tblInvTrackingDT.strPartNumber, tblInvTracking.intModule'
END
PRINT(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
Create PROCEDURE [dbo].[rptInvMRPGridLoad](
@SQSearchBy varchar(max) = NULL, 
@chkInactiveItems bit = NULL,
@SQUserName varchar(max) = NULL,
@BPToolsMode bit)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
IF(@chkInactiveItems = 1)
BEGIN
SET @sql = 'SELECT DISTINCT tblInv.strPartNumber, tblInv.strDesc FROM tblInvBOM INNER JOIN tblInv ON tblInv.strPartNumber = tblInvBOM.strPartNumber '
IF(LEN(@SQSearchBy)>0) 
BEGIN 
SET @sql += ' WHERE (tblInvBOM.strPartNumber LIKE ''%'+@SQSearchBy+'%''  OR strDesc LIKE ''%'+@SQSearchBy+'%'')'
END
END
ELSE
BEGIN
SET @sql = 'SELECT DISTINCT tblInv.strPartNumber, tblInv.strDesc FROM tblInvBOM INNER JOIN tblInv ON tblInv.strPartNumber = tblInvBOM.strPartNumber WHERE tblInv.bitInactive = 0 '
IF(LEN(@SQSearchBy)>0) 
BEGIN 
SET @sql += ' AND (tblInvBOM.strPartNumber LIKE ''%'+@SQSearchBy+'%'' OR strDesc LIKE ''%'+@SQSearchBy+'%'')'
END
END

IF(@BPToolsMode = 0)
BEGIN
IF CHARINDEX('WHERE', @sql) > 0
BEGIN
SET @sql = @sql + ' AND '
END
ELSE
BEGIN
SET @sql = @sql + ' WHERE '
END
SET @sql += ' strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = '''+@SQUserName+'''))'
END
print @sql
EXEC (@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvMRPSetSummaryOfComponents]
-- Add the parameters for the stored procedure here
@xmlData VARCHAR(MAX) = '',
@PL_InvSortDescription bit = null
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @tblTempBOM TABLE (strPartNumber nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, 
strCompDesc nvarchar(500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, 
strCompNumber nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, 
strWarehouse nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, 
strUnit nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,  
intEconAmount Integer NOT NULL, 
decEconQty Decimal(18,4) NOT NULL, 
intReqAmount Integer NOT NULL, 
decMovAveCost Decimal(18,4) NOT NULL)
Declare @xmlHandle int
EXEC sp_xml_preparedocument @xmlHandle output, @xmlData
INSERT INTO @tblTempBOM   
SELECT	  strPartNumber,  
strCompDesc,  
strCompNumber,
strWarehouse,
strUnit,
intEconAmount,
decEconQty,
intReqAmount,
decMovAveCost
FROM  OPENXML (@xmlHandle, '/NewDataSet/DataTable',1)  
WITH ([strPartNumber] nvarchar(50) '@strPartNumber',
[strCompDesc]  nvarchar(100) '@strCompDesc',
[strCompNumber] nvarchar(50) '@strCompNumber',
[strWarehouse] nvarchar(50) '@strWarehouse',
[strUnit] nvarchar(50) '@strUnit',
[intEconAmount] Integer '@intEconAmount',
[decEconQty] decimal(18,4) '@decEconQty',
[intReqAmount] Integer '@intReqAmount',
[decMovAveCost] decimal(18,4) '@decMovAveCost'
)  
IF(@PL_InvSortDescription = 0)
BEGIN
SELECT t1.strCompNumber, t1.strCompDesc, t1.strWarehouse, t1.strUnit, SUM(CASE WHEN t1.intEconAmount = 0 THEN 0 ELSE t1.decEconQty/t1.intEconAmount * t1.intReqAmount END) As decCompQty, SUM(t1.decEconQty/t1.intEconAmount * t1.intReqAmount * t1.decMovAveCost) As decCompCost, t2.decOnHand As decOnHand, t2.decOnOrder As [decPurchaseOrder], t2.decAlloc As decSalesOrder, t2.intReorderPoint As decReorder, CASE WHEN ((t2.decOnHand - t2.decAlloc - t2.decManuf + t2.decOnOrder) - ISNULL(SUM(CASE WHEN t1.intEconAmount = 0 THEN 0 ELSE (t1.decEconQty / t1.intEconAmount) * t1.intReqAmount END),0)) < t2.intReorderPoint THEN CASE WHEN t2.decMaxLevel - ((t2.decOnHand - t2.decAlloc - t2.decManuf + t2.decOnOrder) - ISNULL(SUM(CASE WHEN t1.intEconAmount = 0 THEN 0 ELSE (t1.decEconQty / t1.intEconAmount) * t1.intReqAmount END),0)) < 0 THEN 0 ELSE t2.decMaxLevel - ((t2.decOnHand - t2.decAlloc - t2.decManuf + t2.decOnOrder) - ISNULL(SUM(CASE WHEN t1.intEconAmount = 0 THEN 0 ELSE (t1.decEconQty / t1.intEconAmount) * t1.intReqAmount END),0)) END ELSE 0 END AS decToOrder, t2.decManuf As decManufacture FROM @tblTempBOM t1 LEFT JOiN tblinvext t2 ON t1.strCompNumber = t2.strpartnumber And t1.strWarehouse = t2.strLocName GROUP BY strCompDesc, strCompNumber, strWarehouse, strUnit, t2.decOnHand, t2.decOnOrder, t2.decAlloc, t2.intReorderPoint, t2.decMaxLevel, t2.decManuf ORDER BY strCompNumber, strCompDesc
END
ELSE
BEGIN
SELECT t1.strCompNumber, t1.strCompDesc, t1.strWarehouse, t1.strUnit, SUM(CASE WHEN t1.intEconAmount = 0 THEN 0 ELSE t1.decEconQty/t1.intEconAmount * t1.intReqAmount END) As decCompQty, SUM(t1.decEconQty/t1.intEconAmount * t1.intReqAmount * t1.decMovAveCost) As decCompCost, t2.decOnHand As decOnHand, t2.decOnOrder As [decPurchaseOrder], t2.decAlloc As decSalesOrder, t2.intReorderPoint As decReorder, CASE WHEN ((t2.decOnHand - t2.decAlloc - t2.decManuf + t2.decOnOrder) - ISNULL(SUM(CASE WHEN t1.intEconAmount = 0 THEN 0 ELSE (t1.decEconQty / t1.intEconAmount) * t1.intReqAmount END),0)) < t2.intReorderPoint THEN CASE WHEN t2.decMaxLevel - ((t2.decOnHand - t2.decAlloc - t2.decManuf + t2.decOnOrder) - ISNULL(SUM(CASE WHEN t1.intEconAmount = 0 THEN 0 ELSE (t1.decEconQty / t1.intEconAmount) * t1.intReqAmount END),0)) < 0 THEN 0 ELSE t2.decMaxLevel - ((t2.decOnHand - t2.decAlloc - t2.decManuf + t2.decOnOrder) - ISNULL(SUM(CASE WHEN t1.intEconAmount = 0 THEN 0 ELSE (t1.decEconQty / t1.intEconAmount) * t1.intReqAmount END),0)) END ELSE 0 END AS decToOrder, t2.decManuf As decManufacture FROM @tblTempBOM t1 LEFT JOiN tblinvext t2 ON t1.strCompNumber = t2.strpartnumber And t1.strWarehouse = t2.strLocName GROUP BY strCompDesc, strCompNumber, strWarehouse, strUnit, t2.decOnHand, t2.decOnOrder, t2.decAlloc, t2.intReorderPoint, t2.decMaxLevel, t2.decManuf ORDER BY strCompDesc, strCompNumber
END
END
GO

----------------------------------------------------
Create PROCEDURE [dbo].[rptInvMRPRefresh]
@SQPartNumber varchar(max) = NULL,
@PL_InvSortDescription bit = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
SET @sql = 'SELECT	BOM.strPartNumber, INV.strDesc, BOM.strPartItemNumber, INV2.strDesc as strCompDesc, BOM.strLocName, INV2.strSellUnit, INV.intBOMQty, 
BOM.intQtyToUse, (INV2.decLastPPUnit * BOM.intQtyToUse) AS Cost, 
cast(isnull((dbo.fn_MovingAverageCost(BOM.strPartItemNumber, BOM.strLocName)),''0'') as money) As decMovAveCost FROM tblInvBOM BOM INNER JOIN tblInv INV ON INV.strPartNumber = BOM.strPartNumber INNER JOIN tblInv INV2 ON INV2.strPartNumber = BOM.strPartItemNumber '
SET @sql += ' WHERE ( BOM.strPartNumber = '''+@SQPartNumber+''' ) '
IF(@PL_InvSortDescription = 0)
BEGIN
SET @sql += ' ORDER BY INV.strPartNumber, INV2.strPartNumber'
END
ELSE
BEGIN
SET @sql += ' ORDER BY INV.strDesc, INV.strPartNumber, INV2.strDesc, INV2.strPartNumber'
END
PRINT(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptInvNegativeInvCorGird_1]
-- Add the parameters for the stored procedure here
@txtSearch varchar(Max) = NULL, 
@optAcctSets  bit = Null,
@chkInactiveItems bit = Null
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
IF(@optAcctSets = 1)
BEGIN
IF(@chkInactiveItems = 0)
BEGIN
SET @sql = 'SELECT strAcctSet AS strAcctSet, strDesc AS strDesc FROM tblAccountSets WHERE (blnInactive = 0)'
IF(LEN(@txtSearch) > 0)
BEGIN
SET @sql += ' AND (strAcctSet LIKE ''%'+@txtSearch+'%'' OR strDesc LIKE ''%'+@txtSearch+'%'')'
END
END
ELSE
BEGIN
SET @sql = 'SELECT strAcctSet AS strAcctSet, strDesc AS strDesc FROM tblAccountSets'
IF(LEN(@txtSearch) > 0)
BEGIN
SET @sql += ' WHERE (strAcctSet LIKE ''%'+@txtSearch+'%'' OR strDesc LIKE ''%'+@txtSearch+'%'')'
END
END
SET @sql += ' ORDER BY strAcctSet'
END
PRINT(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptInvNegativeInvCorGird_2]
-- Add the parameters for the stored procedure here
@txtSearch varchar(Max) = NULL, 
@optAssets  bit = Null,
@chkInactiveItems bit = Null
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
IF(@optAssets = 1)
BEGIN
IF(@chkInactiveItems = 0)
BEGIN
SET @sql = 'SELECT intGLNumber AS strAcctSet, strDesc AS strDesc  FROM tblAccounts WHERE (bitInventory = 1) AND (bitInactive = 0)'
END
ELSE
BEGIN
SET @sql = 'SELECT intGLNumber AS strAcctSet, strDesc AS strDesc FROM tblAccounts WHERE (bitInventory = 1)'
END
IF(LEN(@txtSearch) > 0)
BEGIN
SET @sql += ' AND (intGLNumber LIKE ''%'+@txtSearch+'%'' OR strDesc LIKE ''%'+@txtSearch+'%'')'
END
SET @sql += ' ORDER BY intGLNumber'
END
PRINT(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptInvNegativeInvCorGird_3]
-- Add the parameters for the stored procedure here
@txtSearch varchar(Max) = NULL, 
@optCategory  bit = Null,
@chkInactiveItems bit = Null,
@SQUserName varchar(Max) = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
IF(@optCategory = 1)
BEGIN
IF(@chkInactiveItems = 0)
BEGIN
SET @sql = 'SELECT strCategory AS strAcctSet, strDesc AS strDesc FROM tblInvCat WHERE (bitInactive = 0)'
IF(LEN(@txtSearch) > 0)
BEGIN
SET @sql += ' AND (strCategory LIKE ''%'+@txtSearch+'%'' OR strDesc LIKE ''%'+@txtSearch+'%'')'
END
END
ELSE
BEGIN
SET @sql = 'SELECT strCategory AS strAcctSet, strDesc AS strDesc FROM tblInvCat'
IF(LEN(@txtSearch) > 0)
BEGIN
SET @sql += ' WHERE (strCategory LIKE ''%'+@txtSearch+'%'' OR strDesc LIKE ''%'+@txtSearch+'%'')'
END
END
IF Charindex('WHERE', @sql) > 0
BEGIN
SET @sql = @sql + ' AND '
END
ELSE
BEGIN
SET @sql = @sql + ' WHERE '
END
SET @sql = @sql
+ ' strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = '''+@SQUserName+'''))  ORDER BY strCategory'
END
PRINT(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptInvNegativeInvCorGird_4]
-- Add the parameters for the stored procedure here
@txtSearch varchar(Max) = NULL, 
@optItem  bit = Null,
@chkInactiveItems bit = Null,
@SQUserName varchar(Max) = NULL,
@PL_InvSortDescription bit = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
IF(@optItem = 1)
BEGIN
IF(@chkInactiveItems = 0)
BEGIN
SET @sql = 'SELECT strPartNumber AS strAcctSet, strDesc AS strDesc, intType FROM tblInv WHERE (intType = 1) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0'
END
ELSE
BEGIN
SET @sql = 'SELECT strPartNumber AS strAcctSet, strDesc AS strDesc, intType FROM tblInv WHERE (intType = 1) AND tblInv.bitOtherCmp = 0'
END
IF(LEN(@txtSearch) > 0)
BEGIN
SET @sql += ' AND (strPartNumber LIKE ''%'+@txtSearch+'%'' OR strDesc LIKE ''%'+@txtSearch+'%'')'
END
IF Charindex('WHERE', @sql) > 0
BEGIN
SET @sql = @sql + ' AND '
END
ELSE
BEGIN
SET @sql = @sql + ' WHERE '
END
SET @sql = @sql + ' strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = '''+@SQUserName+'''))'
IF(@PL_InvSortDescription = 0)
BEGIN
SET @sql += ' ORDER BY strPartNumber'
END
ELSE
BEGIN
SET @sql += ' ORDER BY strDesc'
END
END
PRINT(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptInvNegativeInvCorReportDetail]
@optAcctSets  bit = Null,
@AcctSetTableType ItemListTableType READONLY,
@optAssets bit = NULL,
@GLNumberTableType ItemListTableType READONLY,
@optCategory bit = NULL,
@CategoryTableType ItemListTableType READONLY,
@PartNumberTableType ItemListTableType READONLY,
@SQStart Date = NULL,
@SQEnd Date = NULL,
@optActiveItems bit = NULL,
@optInactiveItems bit = NULL
AS
BEGIN

SET NOCOUNT ON;
DECLARE @sql nvarchar(MAX) = ''
IF(@optAcctSets = 1)
BEGIN 
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber,(SELECT strDesc FROM tblInv WHERE strPartNumber = tblInvTrackingDT.strPartNumber) AS INVDESC, tblInvTracking.dteJournalDate, tblInvTracking.strSource, tblInvTrackingDT.strLocName, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decCOGS, tblInv.strAcctSet AS OrderbyCol FROM tblInvTracking INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName WHERE (tblInvTracking.intModule <> 2) AND (tblInvTracking.intModule <> 7) AND (tblInvTracking.intModule <> 8) AND (tblInvTrackingDT.decCOGS <> 0) AND (tblInvTrackingDT.bitService = 0) AND (tblInvTracking.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') AND  (tblInv.strAcctSet IN (Select Item from @AcctSetTableType))'
IF(@optActiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 0'
END
ELSE IF(@optInactiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 1'
END
END
ELSE IF(@optAssets = 1)
BEGIN
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber,(SELECT strDesc FROM tblInv WHERE strPartNumber = tblInvTrackingDT.strPartNumber) AS INVDESC, tblInvTracking.dteJournalDate, tblInvTracking.strSource, tblInvTrackingDT.strLocName, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decCOGS, (CAST(tblAccounts.intGLNumber AS varchar(20)) + '' '' + tblAccounts.strDesc) AS OrderbyCol FROM tblInvTracking INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInv.strPartNumber = tblInvTrackingDT.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInvTracking.intModule <> 2) AND (tblInvTracking.intModule <> 7) AND (tblInvTracking.intModule <> 8) AND (tblInvTrackingDT.decCOGS <> 0) AND (tblInvTrackingDT.bitService = 0) AND (tblInvTracking.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') AND (tblAccounts.intGLNumber IN (Select Item from @GLNumberTableType))'
IF(@optActiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 0 '
END
ELSE IF(@optInactiveItems = 1)
BEGIN 
SET @sql += ' AND tblInv.bitInactive = 1 '
END
END
ELSE IF(@optCategory = 1)
BEGIN
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber,(SELECT strDesc FROM tblInv WHERE strPartNumber = tblInvTrackingDT.strPartNumber) AS INVDESC, tblInvTracking.dteJournalDate, tblInvTracking.strSource, tblInvTrackingDT.strLocName, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decCOGS, tblInv.strCategory AS OrderbyCol FROM tblInvTracking INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID INNER JOIN tblInv ON tblInv.strPartNumber = tblInvTrackingDT.strPartNumber WHERE (tblInvTracking.intModule <> 2) AND (tblInvTracking.intModule <> 7) AND (tblInvTracking.intModule <> 8) AND (tblInvTrackingDT.decCOGS <> 0) AND (tblInvTrackingDT.bitService = 0) AND (tblInvTracking.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') AND (tblInv.strCategory IN (Select Item from @CategoryTableType))'
IF(@optActiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 0 '
END
ELSE IF(@optInactiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 1 '
END
END
ELSE
BEGIN
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber,(SELECT strDesc FROM tblInv WHERE strPartNumber = tblInvTrackingDT.strPartNumber) AS INVDESC, tblInvTracking.dteJournalDate, tblInvTracking.strSource, tblInvTrackingDT.strLocName, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decCOGS, '''' AS OrderbyCol FROM tblInvTracking INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID WHERE (tblInvTracking.intModule <> 2) AND (tblInvTracking.intModule <> 7) AND (tblInvTracking.intModule <> 8) AND (tblInvTrackingDT.decCOGS <> 0) AND (tblInvTrackingDT.bitService = 0) AND (tblInvTracking.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') AND  (tblInvTrackingDT.strPartNumber IN (Select Item from @PartNumberTableType))'
END
SET @sql += ' ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber, tblInvTracking.dteJournalDate, tblInvTracking.strSource'
--PRINT(@sql)
EXEC sp_Executesql @sql, N'@AcctSetTableType [ItemListTableType] READONLY, @GLNumberTableType [ItemListTableType] READONLY,@CategoryTableType [ItemListTableType] READONLY,@PartNumberTableType [ItemListTableType] READONLY', @AcctSetTableType = @AcctSetTableType, @GLNumberTableType = @GLNumberTableType, @CategoryTableType = @CategoryTableType, @PartNumberTableType = @PartNumberTableType
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptInvNegativeInvCorReportSummary]
@optAcctSets  bit = Null,
@AcctSetTableType ItemListTableType READONLY,
@optAssets bit = NULL,
@GLNumberTableType ItemListTableType READONLY,
@optCategory bit = NULL,
@CategoryTableType ItemListTableType READONLY,
@PartNumberTableType ItemListTableType READONLY,
@SQStart Date = NULL,
@SQEnd Date = NULL,
@optActiveItems bit = NULL,
@optInactiveItems bit = NULL,
@PL_InvSortDescription bit = NULL

AS
BEGIN

SET NOCOUNT ON;
DECLARE @sql nvarchar(MAX) = ''
IF(@optAcctSets = 1)
BEGIN 
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber,(SELECT strDesc FROM tblInv WHERE strPartNumber = tblInvTrackingDT.strPartNumber) AS INVDESC, ISNULL(SUM(tblInvTrackingDT.decQtyIn),0) AS decQtyIn,ISNULL(SUM(tblInvTrackingDT.decValueIn),0) AS decValueIn, ISNULL(SUM(tblInvTrackingDT.decCOGS),0) AS decCOGS, tblInv.strAcctSet AS OrderbyCol FROM tblInvTracking INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName WHERE (tblInvTracking.intModule <> 2) AND (tblInvTracking.intModule <> 7) AND (tblInvTracking.intModule <> 8) AND (tblInvTrackingDT.decCOGS <> 0) AND (tblInvTrackingDT.bitService = 0) AND (tblInvTracking.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') AND  (tblInv.strAcctSet IN (Select Item from @AcctSetTableType))'
IF(@optActiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 0 '
END
ELSE IF(@optInactiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 1 '
END
SET @sql += ' GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strAcctSet'
IF(@PL_InvSortDescription = 0)
BEGIN
SET @sql += ' ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber'
END
ELSE
BEGIN
SET @sql += ' ORDER BY OrderbyCol,INVDESC, tblInvTrackingDT.strPartNumber'
END
END
ELSE IF(@optAssets = 1)
BEGIN
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber,(SELECT strDesc FROM tblInv WHERE strPartNumber = tblInvTrackingDT.strPartNumber) AS INVDESC, ISNULL(SUM(tblInvTrackingDT.decQtyIn),0) AS decQtyIn,ISNULL(SUM(tblInvTrackingDT.decValueIn),0) AS decValueIn, ISNULL(SUM(tblInvTrackingDT.decCOGS),0) AS decCOGS, (CAST(tblAccounts.intGLNumber AS varchar(20)) + '' '' + tblAccounts.strDesc) AS OrderbyCol FROM tblInvTracking INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInvTracking.intModule <> 2) AND (tblInvTracking.intModule <> 7) AND (tblInvTracking.intModule <> 8) AND (tblInvTrackingDT.decCOGS <> 0) AND (tblInvTrackingDT.bitService = 0) AND (tblInvTracking.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') AND  (tblAccounts.intGLNumber IN (Select Item from @GLNumberTableType)) '
IF(@optActiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 0 '
END
ELSE IF(@optInactiveItems = 1)
BEGIN	
SET @sql += ' AND tblInv.bitInactive = 1 '
END
SET @sql += ' GROUP BY tblInvTrackingDT.strPartNumber, (CAST(tblAccounts.intGLNumber AS varchar(20)) + '' '' + tblAccounts.strDesc)'
IF(@PL_InvSortDescription = 0)
BEGIN
SET @sql += ' ORDER BY OrderbyCol, tblInvTrackingDT.strPartNumber'
END
ELSE
BEGIN
SET @sql += ' ORDER BY OrderbyCol,  INVDESC, tblInvTrackingDT.strPartNumber'
END
END
ELSE IF(@optCategory = 1)
BEGIN
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber,(SELECT strDesc FROM tblInv WHERE strPartNumber = tblInvTrackingDT.strPartNumber) AS INVDESC, ISNULL(SUM(tblInvTrackingDT.decQtyIn),0) AS decQtyIn ,ISNULL(SUM(tblInvTrackingDT.decValueIn),0) AS decValueIn, ISNULL(SUM(tblInvTrackingDT.decCOGS),0)  AS decCOGS, tblInv.strCategory AS OrderbyCol FROM tblInvTracking INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber WHERE (tblInvTracking.intModule <> 2) AND (tblInvTracking.intModule <> 7) AND (tblInvTracking.intModule <> 8) AND (tblInvTrackingDT.decCOGS <> 0) AND (tblInvTrackingDT.bitService = 0) AND (tblInvTracking.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') AND  (tblInv.strCategory IN (Select Item from @CategoryTableType))'
IF(@optActiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 0 '
END
ELSE IF(@optInactiveItems = 1)
BEGIN
SET @sql += ' AND tblInv.bitInactive = 1 '
END
SET @sql += ' GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strCategory'
IF(@PL_InvSortDescription = 0)
BEGIN
SET @sql += ' ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber'
END
ELSE
BEGIN
SET @sql += ' ORDER BY OrderbyCol,INVDESC, tblInvTrackingDT.strPartNumber'
END
END
ELSE
BEGIN
SET @sql = 'SELECT tblInvTrackingDT.strPartNumber,(SELECT strDesc FROM tblInv WHERE strPartNumber = tblInvTrackingDT.strPartNumber) AS INVDESC, ISNULL(SUM(tblInvTrackingDT.decQtyIn),0) AS decQtyIn,ISNULL(SUM(tblInvTrackingDT.decValueIn),0) AS decValueIn, ISNULL(SUM(tblInvTrackingDT.decCOGS),0)  AS decCOGS, '''' AS OrderbyCol FROM tblInvTracking INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID WHERE (tblInvTracking.intModule <> 2) AND (tblInvTracking.intModule <> 7) AND (tblInvTracking.intModule <> 8) AND (tblInvTrackingDT.decCOGS <> 0) AND (tblInvTrackingDT.bitService = 0) AND (tblInvTracking.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') AND (tblInvTrackingDT.strPartNumber IN (Select Item from @PartNumberTableType))  GROUP BY tblInvTrackingDT.strPartNumber'
IF(@PL_InvSortDescription = 0)
BEGIN
SET @sql += ' ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber'
END
ELSE
BEGIN
SET @sql += ' ORDER BY OrderbyCol,INVDESC, tblInvTrackingDT.strPartNumber'
END
END
--PRINT(@sql)
--EXEC(@sql)
EXEC sp_Executesql @sql, N'@AcctSetTableType [ItemListTableType] READONLY, @GLNumberTableType [ItemListTableType] READONLY,@CategoryTableType [ItemListTableType] READONLY,@PartNumberTableType [ItemListTableType] READONLY', @AcctSetTableType = @AcctSetTableType, @GLNumberTableType = @GLNumberTableType, @CategoryTableType = @CategoryTableType, @PartNumberTableType = @PartNumberTableType
END
GO

----------------------------------------------------
CREATE PROCEDURE dbo.RptSerialLotReport1
@OptAllItems BIT = NULL,
@OptAllSN BIT = NULL,
@ChkLocationAll BIT = NULL,
@OptFilterOptItem BIT = NULL,
@SQType1 int = NULL,
@SQType2 int = NULL,
@SQType3 int = NULL,
@SQType4 int = NULL,
@SQStart DATETIME2(0) = NULL,
@SQFinish DATETIME2(0)= NULL,
@SQstrLocation  VARCHAR(Max) = NULL,
@SQstrSerialNumber VARCHAR(Max) = NULL,
@SQstrPartNumber VARCHAR(Max) = NULL,
@SQSerialLotType int = NULL,
@SQSerialLotStatus int = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
SET @sql = 'SELECT tblSerialNumberTracking.lngID, tblSerialNumberTracking.strPartNumber, tblInv.strDesc, tblSerialNumberTracking.strSerialNumber, tblSerialNumberTracking.strUserName, tblSerialNumberTracking.dteUpdatedDate, tblSerialNumberTracking.intType, tblSerialNumberTracking.strDocID, tblSerialNumberTracking.intLineNo, CASE WHEN tblSerialNumberTracking.intStatus = '+ CONVERT(VARCHAR(10),@SQSerialLotStatus) +' THEN tblSerialNumberTracking.decQty * -1 ELSE tblSerialNumberTracking.decQty END AS decQty, tblSerialNumberTracking.strLocation, tblSerialNumberTracking.intStatus, CASE tblSerialNumberTracking.intType WHEN '+ CONVERT(VARCHAR(10),@SQType1) +' THEN ISNULL((SELECT tblVendors.strVendName + ''-'' + tblVendors.strVendDesc FROM tblOrderDocPG INNER JOIN tblVendors ON tblOrderDocPG.strVendName = tblVendors.strVendName WHERE tblOrderDocPG.strOrdPGDocID = tblSerialNumberTracking.strDocID),'''') WHEN '+ CONVERT(VARCHAR(10),@SQType2) +' THEN ISNULL((SELECT tblVendors.strVendName + ''-'' + tblVendors.strVendDesc FROM tblInvoiceDocP INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName WHERE tblInvoiceDocP.strInvPDocID = tblSerialNumberTracking.strDocID),'''') WHEN '+ CONVERT(VARCHAR(10),@SQType3) +' THEN ISNULL((SELECT tblCustomers.strCustName + ''-'' + tblCustomers.strCustDesc FROM tblInvoiceDoc INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName WHERE tblInvoiceDoc.strInvDocID = tblSerialNumberTracking.strDocID),'''') WHEN '+ CONVERT(VARCHAR(10),@SQType4) +' THEN ISNULL((SELECT tblCustomers.strCustName + ''-'' + tblCustomers.strCustDesc FROM tblOrderDocDA INNER JOIN tblCustomers ON tblOrderDocDA.strCustName = tblCustomers.strCustName WHERE tblOrderDocDA.strOrdDADocID = tblSerialNumberTracking.strDocID),'''') ELSE '''' END AS CustVendName,tblSerialNumberTracking.dteExpiryDate,tblSerialNumberTracking.bitExpiryDate FROM tblSerialNumberTracking INNER JOIN tblInv ON tblSerialNumberTracking.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType WHERE (tblInvSerialTypes.intType = '+CONVERT(VARCHAR(10),@SQSerialLotType)+') AND (tblSerialNumberTracking.dteUpdatedDate >= '''+CONVERT(VARCHAR(50),@SQStart)+''') AND (tblSerialNumberTracking.dteUpdatedDate <= '''+CONVERT(VARCHAR(50),@SQFinish)+''') '
IF(@OptAllItems = 0)
BEGIN
SET @sql += ' AND (tblSerialNumberTracking.strPartNumber IN (SELECT * FROM fnSplitStringAsTable('''+@SQstrPartNumber+''', '','')))'
END
IF(@OptAllSN = 0)
BEGIN
SET @sql +=  ' AND (tblSerialNumberTracking.strSerialNumber IN (SELECT * FROM fnSplitStringAsTable('''+@SQstrSerialNumber+''', '',''))) '
END
IF(@ChkLocationAll = 0)
BEGIN
SET @sql += ' AND (tblSerialNumberTracking.strLocation = '''+@SQstrLocation+''')'
END
IF(@ChkLocationAll = 0)
BEGIN	
IF(@OptFilterOptItem = 1)
BEGIN
SET @sql += ' ORDER BY tblSerialNumberTracking.strPartNumber, tblSerialNumberTracking.strSerialNumber, tblSerialNumberTracking.lngID'
END
ELSE
BEGIN
SET @sql += ' ORDER BY tblSerialNumberTracking.strSerialNumber, tblSerialNumberTracking.strPartNumber, tblSerialNumberTracking.lngID'
END
END
ELSE
BEGIN
IF(@OptFilterOptItem = 1)
BEGIN 
SET @sql += ' ORDER BY tblSerialNumberTracking.strLocation, tblSerialNumberTracking.strPartNumber, tblSerialNumberTracking.strSerialNumber, tblSerialNumberTracking.lngID'
END
ELSE
BEGIN
SET @sql += ' ORDER BY tblSerialNumberTracking.strLocation, tblSerialNumberTracking.strSerialNumber, tblSerialNumberTracking.strPartNumber, tblSerialNumberTracking.lngID'
END
END
PRINT(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptManuMRPGridLoad]
-- Add the parameters for the stored procedure here
@SQSearchBy varchar(max) = NULL, 
@chkInactiveItems bit = NULL,
@SQUserName varchar(max) = NULL,
@blnBPToolsMode bit =NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
IF(@chkInactiveItems = 1)
BEGIN
SET @sql = 'SELECT tblManBOM.strPartNumber, tblManBOM.strDesc, tblManBOM.strLocation, tblManBOM.dteRevDate, tblManBOM.lngManBOMID FROM tblManBOM INNER JOIN tblInv ON tblInv.strPartNumber = tblManBOM.strPartNumber '
IF(LEN(@SQSearchBy)>0) 
BEGIN 
SET @sql += ' WHERE (tblManBOM.strPartNumber LIKE ''%'+@SQSearchBy+'%'' OR tblManBOM.strDesc LIKE ''%'+@SQSearchBy+'%'' OR tblManBOM.strLocation LIKE ''%'+@SQSearchBy+'%'' OR tblManBOM.dteRevDate LIKE ''%'+@SQSearchBy+'%'')'
END
END
ELSE
BEGIN
SET @sql = 'SELECT tblManBOM.strPartNumber, tblManBOM.strDesc, tblManBOM.strLocation, tblManBOM.dteRevDate, tblManBOM.lngManBOMID FROM tblManBOM INNER JOIN tblInv ON tblInv.strPartNumber = tblManBOM.strPartNumber WHERE tblManBOM.bitInactive = 0 '
IF(LEN(@SQSearchBy)>0) 
BEGIN 
SET @sql += ' AND (tblManBOM.strPartNumber LIKE ''%'+@SQSearchBy+'%'' OR tblManBOM.strDesc LIKE ''%'+@SQSearchBy+'%'' OR tblManBOM.strLocation LIKE ''%'+@SQSearchBy+'%'' OR tblManBOM.dteRevDate LIKE ''%'+@SQSearchBy+'%'')'
END
END
IF(@blnBPToolsMode = 0)
BEGIN
IF CHARINDEX('WHERE', @sql) > 0
BEGIN
SET @sql = @sql + ' AND '
END
ELSE
BEGIN
SET @sql = @sql + ' WHERE '
END
SET @sql += '  tblManBOM.strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = '''+@SQUserName+'''))'
END
print @sql
EXEC (@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptManuMRPSetSummaryOfComponents] 
    @xmlData VARCHAR(MAX) = ''
	,@PL_InvSortDescription BIT = NULL
AS
BEGIN
	SET NOCOUNT ON;
 
	DECLARE @tblTempManBOM TABLE (
		strPartNumber NVARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,strCompDesc NVARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,strCompNumber NVARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,intType INTEGER NOT NULL
		,strWCCode NVARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,strWareHouse NVARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,decEconAmount DECIMAL(18, 4) NOT NULL
		,decEconQty DECIMAL(18, 4) NOT NULL
		,decReqAmount DECIMAL(18, 4) NOT NULL
		,decMovAveCost DECIMAL(18, 4) NOT NULL
		,decMACAmount DECIMAL(18, 4) NOT NULL
		)
	DECLARE @xmlHandle INT
 
	EXEC sp_xml_preparedocument @xmlHandle OUTPUT
		,@xmlData
 
	INSERT INTO @tblTempManBOM (
		strPartNumber
		,strCompDesc
		,strCompNumber
		,intType
		,strWCCode
		,strWareHouse
		,decEconAmount
		,decEconQty
		,decReqAmount
		,decMovAveCost
		,decMACAmount
		)
	SELECT strPartNumber
		,strCompDesc
		,strCompNumber
		,intType
		,strWCCode
		,strLocation
		,-- Assuming strLocation corresponds to strWareHouse column
		decEconAmount
		,decEconQty
		,decReqAmount
		,decMovAveCost
		,decMACAmount
	FROM OPENXML(@xmlHandle, '/NewDataSet/DataTable', 2) WITH (
			strPartNumber NVARCHAR(50) '@strPartNumber'
			,strCompDesc NVARCHAR(500) '@strCompDesc'
			,strCompNumber NVARCHAR(50) '@strCompNumber'
			,intType INT '@intType'
			,strWCCode NVARCHAR(50) '@strWCCode'
			,strLocation NVARCHAR(50) '@strLocation'
			,decEconAmount DECIMAL(18, 4) '@decEconAmount'
			,decEconQty DECIMAL(18, 4) '@decReqQty'
			,decReqAmount DECIMAL(18, 4) '@decReqAmount'
			,decMovAveCost DECIMAL(18, 4) '@decMovAveCost'
			,decMACAmount DECIMAL(18, 4) '@decMACAmountReq' --Change
			)
 
	IF (@PL_InvSortDescription = 0)
	BEGIN
		SELECT Z.intType AS intType
			,Z.strCompNumber AS strCompNumber
			,Z.strCompDesc AS strCompDesc
			,Z.strWCCode AS strWCCode
			,Z.strWareHouse AS strWareHouse
			,Z.decCompQty AS decCompQty
			,Z.decCompCost AS decCompCost
			,Z.decOnHand AS decOnHand
			,Z.decPurchaseOrder AS decPurchaseOrder
			,Z.decSalesOrder AS decSalesOrder
			,Z.decMaxLevel AS decMaxLevel
			,CASE 
				WHEN Z.intType = 0
					THEN CASE 
							WHEN ((Z.decOnHand - Z.decSalesOrder - Z.decManufacture + Z.decPurchaseOrder) - Z.decCompQty) < Z.decMinLevel
								THEN CASE 
										WHEN Z.decMaxLevel - ((Z.decOnHand - Z.decSalesOrder - Z.decManufacture + Z.decPurchaseOrder) - Z.decCompQty) < 0
											THEN 0
										ELSE Z.decMaxLevel - ((Z.decOnHand - Z.decSalesOrder - Z.decManufacture + Z.decPurchaseOrder) - Z.decCompQty)
										END
							ELSE 0
							END
				ELSE 0
				END AS decToOrder
			,Z.decMinLevel AS decMinLevel
			,Z.decWarehouseOnHand AS decWarehouseOnHand
			,Z.decManufacture AS decManufacture
		FROM (
			SELECT T1.intType
				,T1.strCompNumber
				,T1.strCompDesc
				,T1.strWCCode
				,T1.strWareHouse
				,SUM(ISNULL(T1.decEconQty, 0)) AS decCompQty
				,SUM(ISNULL(T1.decMACAmount, 0)) AS decCompCost
				,ISNULL(T2.decSumOnHand, 0) AS decOnHand
				,ISNULL(T2.decSumOnOrder, 0) AS decPurchaseOrder
				,ISNULL(T2.decSumAlloc, 0) AS decSalesOrder
				,ISNULL(T2.intReorderQty, 0) AS decMaxLevel
				,ISNULL(T2.decMinimumLevel, 0) AS decMinLevel
				,ISNULL((
						SELECT IE.decOnHand
						FROM tblInvExt IE
						WHERE IE.strPartNumber = T1.strCompNumber
							AND IE.strLocName = T1.strWareHouse
						), 0) AS decWarehouseOnHand
				,ISNULL(T2.decSumManuf, 0) AS decManufacture
			FROM @tblTempManBOM T1
			LEFT JOIN tblInv T2 ON T1.strCompNumber = T2.strPartNumber
			GROUP BY T1.intType
				,T1.strCompNumber
				,T1.strCompDesc
				,T1.strWCCode
				,T1.strWareHouse
				--,T1.decEconQty
				--,T1.decEconAmount
				,T2.decSumOnHand
				,T2.decSumOnOrder
				,T2.decSumAlloc
				,T2.intReorderQty
				,T2.decMinimumLevel
				,T2.decSumManuf
				--,T1.decMACAmount
			) Z
		ORDER BY Z.strCompNumber
			,Z.strCompDesc
	END
	ELSE
	BEGIN
		SELECT Z.intType AS intType
			,Z.strCompNumber AS strCompNumber
			,Z.strCompDesc AS strCompDesc
			,Z.strWCCode AS strWCCode
			,Z.strWareHouse AS strWareHouse
			,Z.decCompQty AS decCompQty
			,Z.decCompCost AS decCompCost
			,Z.decOnHand AS decOnHand
			,Z.decPurchaseOrder AS decPurchaseOrder
			,Z.decSalesOrder AS decSalesOrder
			,Z.decMaxLevel AS decMaxLevel
			,CASE 
				WHEN Z.intType = 0
					THEN CASE 
							WHEN ((Z.decOnHand - Z.decSalesOrder - Z.decManufacture + Z.decPurchaseOrder) - Z.decCompQty) < Z.decMinLevel
								THEN CASE 
										WHEN Z.decMaxLevel - ((Z.decOnHand - Z.decSalesOrder - Z.decManufacture + Z.decPurchaseOrder) - Z.decCompQty) < 0
											THEN 0
										ELSE Z.decMaxLevel - ((Z.decOnHand - Z.decSalesOrder - Z.DECManufacture + Z.decPurchaseOrder) - Z.decCompQty)
										END
							ELSE 0
							END
				ELSE 0
				END AS decToOrder
			,Z.decMinLevel AS decMinLevel
			,Z.decWarehouseOnHand AS decWarehouseOnHand
			,Z.decManufacture AS decManufacture
		FROM (
			SELECT T1.intType
			,T1.strCompNumber
			,T1.strCompDesc
			,T1.strWCCode
			,T1.strWareHouse
			,SUM(ISNULL(T1.decEconQty, 0)) AS decCompQty
			,SUM(ISNULL(T1.decMACAmount, 0)) AS decCompCost
			,ISNULL(T2.decSumOnHand, 0) AS decOnHand
			,ISNULL(T2.decSumOnOrder, 0) AS decPurchaseOrder
			,ISNULL(T2.decSumAlloc, 0) AS decSalesOrder
			,ISNULL(T2.intReorderQty, 0) AS decMaxLevel
			,ISNULL(T2.decMinimumLevel, 0) AS decMinLevel
			,ISNULL((
					SELECT IE.decOnHand
					FROM tblInvExt IE
					WHERE IE.strPartNumber = T1.strCompNumber
						AND IE.strLocName = T1.strWareHouse
					), 0) AS decWarehouseOnHand
			,ISNULL(T2.decSumManuf, 0) AS decManufacture FROM @tblTempManBOM T1
			LEFT JOIN tblInv T2 ON T1.strCompNumber = T2.strPartNumber
			GROUP BY T1.intType
				,T1.strCompNumber
				,T1.strCompDesc
				,T1.strWCCode
				,T1.strWareHouse
				--,T1.decEconQty
				--,T1.decEconAmount
				,T2.decSumOnHand
				,T2.decSumOnOrder
				,T2.decSumAlloc
				,T2.intReorderQty
				,T2.decMinimumLevel
				,T2.decSumManuf
				--,T1.decMACAmount
 
			) Z
		ORDER BY Z.strCompDesc
			,Z.strCompNumber
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptManuSearchContactGrid]
@SQSearchBy Varchar(Max) = NULL, 
@optSearch Bit = NULL,
@SQStart Date = NULL,
@SQEnd Date = NULL
AS
BEGIN

SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
IF(@optSearch = 1) 
BEGIN 
SELECT strJBDocID, strReference FROM tblManJob WHERE (strJBDocID LIKE '%' + @SQSearchBy+'%' OR strReference LIKE '%'+@SQSearchBy+'%') AND (tblManJob.dteJournalDate BETWEEN @SQStart AND @SQEnd) ORDER BY strJBDocID
END
ELSE
BEGIN	
SELECT strJBDocID, strReference FROM tblManJob WHERE (tblManJob.dteJournalDate BETWEEN @SQStart AND @SQEnd)  ORDER BY strJBDocID
END

END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptManuReport]
-- Add the parameters for the stored procedure here
@SQJobNumber varchar(MAX) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql varchar(MAX) = ''
SET @sql = 'SELECT strWIPDocID, strJBDocID, strWCCode, dteSystemDate, strUserName, intType, intLineNo, strPartNumber, strLocName, strSerialNumber, decQty, bitExpiryDate, dteExpiryDate, lngID FROM tblManWIPCompInvSerialOutSeq WHERE (strJBDocID IN (SELECT * FROM fnSplitStringAsTable('''+@SQJobNumber+''', '',''))) ORDER BY strJBDocID, lngID'
PRINT(@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptPOSPrint]
-- Add the parameters for the stored procedure here
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT strDrawerName, ISNULL(intCashCheq,0) As intCashCheq, ISNULL((SELECT strDesc FROM tblAccounts WHERE intGLNumber = intCashCheq),'') As strDesc2, ISNULL(intCreditCard,0) As intCreditCard , ISNULL((SELECT strDesc FROM tblAccounts WHERE intGLNumber = intCreditCard),'') As strDesc4 , ISNULL(intCoupGift,0) As intCoupGift , ISNULL((SELECT strDesc FROM tblAccounts WHERE intGLNumber = intCoupGift),'') As strDesc6, intOverShort, ISNULL((SELECT strDesc FROM tblAccounts WHERE intGLNumber = intOverShort),'') As strDesc8, intPettyCash, ISNULL((SELECT strDesc FROM tblAccounts WHERE intGLNumber = intPettyCash),'') As strDesc10 , intDept FROM tblPOSDr ORDER BY strDrawerName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptSMSLogReport]
-- Add the parameters for the stored procedure here
@OptHide bit = NULL,
@SQStart DateTime = Null,
@SQEnd DateTime = Null
AS
BEGIN
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
SET @sql = ' SELECT strSentBy, dteEntered, strCellNumber, strMessage, bitReply FROM tblSMSMessages WHERE '
IF(@OptHide = 1)
BEGIN
SET @sql += ' (bitReply = 0) AND '
END
SET @sql += ' (Convert(smalldatetime, Convert(varchar(10), dteEntered, 103), 103) BETWEEN '''+CONVERT(VARCHAR(30), @SQStart)+''' AND '''+CONVERT(VARCHAR(30), @SQEnd)+''') ORDER BY strSentBy,dteEntered,strCellNumber '
PRINT(@sql)
EXEC (@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptWarehouseOSOSearchLocation]
	-- Add the parameters for the stored procedure here  
	@SQSearchBy VARCHAR(MAX) = NULL
	,@SQUserName VARCHAR(MAX) = NULL
	,@rbtAllOrders BIT = NULL
	,@rbtCustomerOrders BIT = NULL
	,@rbtIBTOrders BIT = NULL
	,@rbtSearch BIT = NULL
	,@rbtAll BIT = NULL
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from  
	-- interfering with SELECT statements.  
	SET NOCOUNT ON;

	DECLARE @sql VARCHAR(max) = ''

	IF (@rbtAllOrders = 0)
	BEGIN
		IF (@rbtCustomerOrders = 1)
		BEGIN
			SET @sql = 'SELECT DISTINCT tblOrderDoc.strCustName AS strLocName, strCustDesc AS strDesc FROM tblOrderDoc INNER JOIN tblCustomers ON tblCustomers.strCustName = tblOrderDoc.strCustName WHERE (intDocType = 1) AND (bitCleared = 0) '

			IF Charindex('WHERE', @sql) > 0
			BEGIN
				SET @sql = @sql + ' AND '
			END
			ELSE
			BEGIN
				SET @sql = @sql + ' WHERE '
			END

			SET @sql = @sql + ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''), 0) > 0 ))  ORDER BY tblOrderDoc.strCustName'
		END
		ELSE IF (@rbtIBTOrders = 1)
		BEGIN
			IF (@rbtSearch = 1)
			BEGIN
				IF (Len(@SQSearchBy) > 2)
				BEGIN
					SET @sql = 'SELECT DISTINCT strLocName,strDesc from tblInvLoc WHERE (strLocName LIKE ''%' + @SQSearchBy + '%'' OR strDesc LIKE ''%' + @SQSearchBy + '%'') '
				END
				ELSE
				BEGIN
					SET @sql = ' SELECT DISTINCT strLocName,strDesc from tblInvLoc '
				END
			END
			ELSE
			BEGIN
				SET @sql = ' SELECT DISTINCT strLocName,strDesc from tblInvLoc '
			END
		END
	END
	ELSE IF (
			@rbtAllOrders = 1
			AND @rbtAll = 1
			)
	BEGIN
		SET @sql = ' SELECT DISTINCT strLocName,strDesc from tblInvLoc '
	END

	PRINT (@sql)

	EXEC (@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[BulkRequestForQuotations1]
-- Add the parameters for the stored procedure here
@SQDocNumber VARCHAR(MAX) = NULL
AS
BEGIN
SET nocount ON;
SELECT * FROM tblOrderDocRFQ WHERE strOrdRFQDocID = @SQDocNumber			
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[BulkRequestForQuotations2]
-- Add the parameters for the stored procedure here
@SQDocNumber VARCHAR(MAX) = NULL
AS
BEGIN
SET nocount ON;
SELECT tblOrderDocRFQDT.*, tblInv.strDimProCode FROM tblOrderDocRFQDT INNER JOIN tblInv ON tblOrderDocRFQDT.strPartNumber = tblInv.strPartNumber WHERE tblOrderDocRFQDT.strOrdRFQDocID = @SQDocNumber ORDER BY tblOrderDocRFQDT.intLineNo			
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[BulkRequestForQuotationsAfterEditItems]
-- Add the parameters for the stored procedure here
@SQDocNumber VARCHAR(MAX) = NULL
AS
BEGIN
SET nocount ON;
select TI.bitIsSuperseded,TIE.decOnHand,TIE.decAvail,TI.strSupersededBy,TI.strSupersededDescription,TI.dtesupersessiondate from tblInv TI INNER JOIN tblInvExt TIE on TI.strPartNumber = TIE.strPartNumber WHERE TI.strPartNumber = @SQDocNumber	
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[BulkRequestForQuotationsAfterEditItems2]
-- Add the parameters for the stored procedure here
@SQDocNumber VARCHAR(MAX) = NULL
AS
BEGIN
SET nocount ON;
SELECT strPartNumber, strDesc, intType, strExtendedDesc, tblInv.strDimProCode FROM tblInv WHERE (strPartNumber = @SQDocNumber OR strBarCode = @SQDocNumber OR strBarCode2 = @SQDocNumber) AND (intType <> 5)
END
GO

----------------------------------------------------
create PROCEDURE [dbo].[BulkRequestForQuotationsAfterEditItems3]
-- Add the parameters for the stored procedure here
@SQDocNumber VARCHAR(MAX) = NULL
AS
BEGIN
SET nocount ON;
SELECT bitAutoInvoke FROM tblDimensionProfiles WHERE strDimProCode = @SQDocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[BulkRequestForQuotations3]
-- Add the parameters for the stored procedure here
@SQDocNumber VARCHAR(MAX) = NULL
AS
BEGIN
SET nocount ON;
SELECT strOrdRFQDocID as OrdRFQDocID 
	  ,intLineNo as [LineNo]
	  ,strVendName as VendorName 
	  ,strVendDesc as VendorDescription
	  ,strCurrency as Currency
	  ,strEmail as Email
	  ,ISNULL((SELECT COUNT(tblOrderDocRFQDT.strVendName) FROM tblOrderDocRFQDT WHERE tblOrderDocRFQDT.strOrdRFQDocID = tblOrderDocRFQVend.strOrdRFQDocID AND 
	  tblOrderDocRFQDT.strVendName = tblOrderDocRFQVend.strVendName),0) as VendName2  
FROM tblOrderDocRFQVend 
WHERE tblOrderDocRFQVend.strOrdRFQDocID = @SQDocNumber 
ORDER BY tblOrderDocRFQVend.strVendName			
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[BulkRequestForQuotationsAfterEditVendor]
-- Add the parameters for the stored procedure here
@SQDocNumber VARCHAR(MAX) = NULL
AS
BEGIN
SET nocount ON;
SELECT strVendName as VendorName 
   ,strVendDesc as VendorDescription
   ,strCurrency as Currency
   ,strEmail as Email FROM tblVendors WHERE (strVendName = @SQDocNumber)		
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[BulkRequestForQuotationsLoadDimensions1]
-- Add the parameters for the stored procedure here
@SQDocNumber VARCHAR(MAX) = NULL
AS
BEGIN
SET nocount ON;
SELECT bitDimProPurchases FROM tblInv WHERE strPartNumber = @SQDocNumber			
END
GO

----------------------------------------------------
create PROCEDURE [dbo].[BulkRequestForQuotationsLoadDimensions2]
-- Add the parameters for the stored procedure here
@SQDocNumber VARCHAR(MAX) = NULL
AS
BEGIN
SET nocount ON;
SELECT COUNT(intLineNo) as intLineNo FROM tblDimProLines WHERE strDimProCode = @SQDocNumber AND bitVisible = 1		
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[BulkRequestForQuotations4]
-- Add the parameters for the stored procedure here
@SQstrInvPDocID VARCHAR(MAX) = NULL,
@SQintDocLineNo Int = NULL
AS
BEGIN
SET nocount ON;
SELECT intDimLineNo, intDimColNo, decValue, strDimColHeading, bitVisible, bitAllowEditing FROM tblInvoiceDocPDimensions WHERE strInvPDocID = @SQstrInvPDocID AND intDocLineNo = @SQintDocLineNo		
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[BulkRequestForQuotationsLoad]
-- Add the parameters for the stored procedure here
AS
BEGIN
SET nocount ON;
SELECT ISNULL(MAX(lngRFQNumber), 0) + 1 AS lngRFQNumber FROM tblLastIDs	
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[CustomerInfo]
-- Add the parameters for the stored procedure here
AS
BEGIN
SET nocount ON;
SELECT strName, strStreet1, strStreet2, strCity, strProvince, strPostal, strCountry FROM tblCompany			
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[CustomerInfo2]
-- Add the parameters for the stored procedure here
@SQDocNumber VARCHAR(MAX) = NULL
AS
BEGIN
SET nocount ON;
SELECT strLocName, strStreet1, strStreet2, strCity, strProvince, strPostal, strCountry FROM tblCompanyLoc WHERE strLocName = @SQDocNumber		
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBulkRequestUserData2]
-- Add the parameters for the stored procedure here
@SQDocNumber VARCHAR(MAX) = NULL
AS
BEGIN
SET nocount ON;
SELECT dteSystemDate, strUserName FROM tblOrderDocRFQ WHERE strOrdRFQDocID = @SQDocNumber		
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[BulkReqforQuotationUFillData2]
-- Add the parameters for the stored procedure here
-- @SQOptFilterByCustomer  BIT = NULL,
@blnEmail   BIT = NULL,
@SQDocNumber VARCHAR(MAX) = NULL,
@SQOldItem VARCHAR(MAX) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
SET @sql = 'SELECT tblOrderDocRFQDT.strOrdRFQDocID, tblOrderDocRFQDT.intLineNo, tblOrderDocRFQDT.strPartNumber, tblOrderDocRFQDT.strPartDesc, tblOrderDocRFQDT.decQty, tblOrderDocRFQDT.intType, tblOrderDocRFQVend.strVendName, tblOrderDocRFQDT.bitApproved, tblOrderDocRFQVend.strCurrency, tblOrderDocRFQDT.decLinePriceEa, tblOrderDocRFQDT.decLineDiscPerc, tblOrderDocRFQDT.decLineDiscAmt, tblOrderDocRFQDT.decLineTotAmt, tblInv.strBuyUnit AS strUnit, tblOrderDocRFQDT.strPartExtendedDesc AS strExtendedDesc, tblInv.bitInvExtDescOnBRQ AS bitShowExtendedDesc, (SELECT bitInvImgOnBRQ FROM tblCoOpts) AS bitShowImage, tblInvImg.imgData AS imgImage FROM tblOrderDocRFQDT INNER JOIN tblInv ON tblOrderDocRFQDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblInvImg ON tblOrderDocRFQDT.strPartNumber = tblInvImg.strPartNumber AND tblInvImg.bitDefaultImage = 1 CROSS JOIN tblOrderDocRFQVend WHERE (tblOrderDocRFQDT.strOrdRFQDocID = '''+@SQDocNumber+''') AND (tblOrderDocRFQDT.bitApproved = 0) AND (tblOrderDocRFQDT.strOrdRFQDocID = tblOrderDocRFQVend.strOrdRFQDocID) '
IF(@blnEmail = 1)
BEGIN
SET
@sql += '  AND ('+@SQOldItem+') '
END
SET @sql += ' ORDER BY tblOrderDocRFQDT.intLineNo'
PRINT (@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[BulkReqforQuotationUFillData3]
-- Add the parameters for the stored procedure here
-- @SQOptFilterByCustomer  BIT = NULL,
@blnEmail   BIT = NULL,
@SQDocNumber VARCHAR(MAX) = NULL,
@SQVendName VARCHAR(MAX) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
SET @sql = 'SELECT tblOrderDocRFQVend.*, SUBSTRING((CASE WHEN LEN(tblVendors.strVendDesc) > 0 THEN tblVendors.strVendDesc + CHAR(13) ELSE '''' END + CASE WHEN LEN(tblVendors.strStreet1) > 0 THEN tblVendors.strStreet1 + CHAR(13) ELSE '''' END + CASE WHEN LEN(tblVendors.strStreet2) > 0 THEN tblVendors.strStreet2 + CHAR(13) ELSE '''' END + CASE WHEN LEN(tblVendors.strCity) > 0 THEN tblVendors.strCity + ''  '' ELSE '''' END + CASE WHEN LEN(tblVendors.strProvince) > 0 THEN tblVendors.strProvince + ''  '' ELSE '''' END + CASE WHEN LEN(tblVendors.strPostal) > 0 THEN tblVendors.strPostal ELSE '''' END + CASE WHEN LEN(tblVendors.strCountry) > 0 THEN CHAR(13) + tblVendors.strCountry ELSE '''' END),1,500) AS strBoughtFrom FROM tblOrderDocRFQVend INNER JOIN tblVendors ON tblOrderDocRFQVend.strVendName = tblVendors.strVendName WHERE (tblOrderDocRFQVend.strOrdRFQDocID = '''+@SQDocNumber+''') '
IF(@blnEmail = 1)
BEGIN
SET
@sql += 'AND tblOrderDocRFQVend.strVendName = '''+@SQVendName+''' '
END
SET @sql += ' ORDER BY tblOrderDocRFQVend.intLineNo'
PRINT (@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
create PROCEDURE [dbo].[BulkReqforQuotationUFillData4]
-- Add the parameters for the stored procedure here
-- @SQOptFilterByCustomer  BIT = NULL,
@SQbitDisplayLogo bit = null
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET nocount ON;
SELECT imgLogo, @SQbitDisplayLogo AS bitDisplayLogo FROM tblCompany
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[BulkReqforQuotationUFillData5]
-- Add the parameters for the stored procedure here
-- @SQOptFilterByCustomer  BIT = NULL,
@SQDocNumber varchar(max) = null
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET nocount ON;
SELECT * FROM tblInv WHERE strPartNumber IN (SELECT DISTINCT strPartNumber FROM tblOrderDocRFQDT WHERE strOrdRFQDocID = @SQDocNumber AND bitApproved = 0)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[BulkReqforQuotationUFillData6]
-- Add the parameters for the stored procedure here
-- @SQOptFilterByCustomer  BIT = NULL,
@SQDocNumber varchar(max) = null
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET nocount ON;
SELECT strInvPDocID AS strOrdRFQDocID, intDocLineNo, intDimLineNo As intDimLineNo2, intDimColNo, decValue, strDimColHeading, bitVisible FROM tblInvoiceDocPDimensions WHERE strInvPDocID = @SQDocNumber
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateApprovalsCleared1]
@SQDocNumber as nvarchar(100) = Null
AS
BEGIN
SELECT COUNT(strOrdRFQDocID) as strOrdRFQDocIDcount  FROM tblOrderDocRFQDT WHERE strOrdRFQDocID = @SQDocNumber 
AND ISNULL(strVendName,'') = ''
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateApprovalsCleared2]
@SQDocNumber as nvarchar(100) = Null
AS
BEGIN
UPDATE tblOrderDocRFQ SET bitCleared = 1 WHERE strOrdRFQDocID = @SQDocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateApprovals1]
@SQstrVendName as varchar(MAX) = Null,
@SQbitApproved as bit = Null,
@SQstrCurrency as varchar(MAX) = Null,
@SQdecLinePriceEa as decimal = Null,
@SQdecLineDiscPerc as decimal = Null,
@SQdecLineDiscAmt as decimal = Null,
@SQdecLineTotAmt as decimal = Null,
@SQstrOrdRFQDocID as varchar(MAX) = Null,
@SQintLineNo as int = Null
AS
BEGIN
UPDATE tblOrderDocRFQDT SET strVendName = @SQstrVendName,bitApproved = @SQbitApproved,strCurrency = @SQstrCurrency,decLinePriceEa = @SQdecLinePriceEa,decLineDiscPerc = @SQdecLineDiscPerc,decLineDiscAmt = @SQdecLineDiscAmt,decLineTotAmt = @SQdecLineTotAmt WHERE strOrdRFQDocID = @SQstrOrdRFQDocID AND intLineNo = @SQintLineNo
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProcessDocumnet1]
@SQdteSystemDate Date = NULL,
@SQdteJournalDate DATE = NULL,
@SQdteRequired DATE = NULL,
@SQstrUserName VARCHAR(MAX) = NULL,
@SQstrShipTo VARCHAR(MAX) = NULL,
@SQstrNotes VARCHAR(MAX) = NULL,
@SQintDept INT = NULL,
@SQstrAddInfo VARCHAR(MAX) = NULL,
@SQstrReference VARCHAR(MAX) = NULL,
@SQstrOrdRFQDocID VARCHAR(MAX) = NULL
AS
BEGIN
UPDATE tblOrderDocRFQ SET dteSystemDate = @SQdteSystemDate,dteJournalDate = @SQdteJournalDate,dteRequired = @SQdteRequired,strUserName = @SQstrUserName,strShipTo = @SQstrShipTo,strNotes = @SQstrNotes,intDept = @SQintDept,strAddInfo = @SQstrAddInfo,strReference = @SQstrReference WHERE strOrdRFQDocID = @SQstrOrdRFQDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProcessDocumnet4]
@SQdteSystemDate Date = NULL,
@SQdteJournalDate DATE = NULL,
@SQdteRequired DATE = NULL,
@SQstrUserName VARCHAR(MAX) = NULL,
@SQstrShipTo VARCHAR(MAX) = NULL,
@SQstrNotes VARCHAR(MAX) = NULL,
@SQbitPrinted BIT = NULL,
@SQbitEmailed BIT = NULL,
@SQbitCleared BIT = NULL,
@SQintDept INT = NULL,
@SQstrAddInfo VARCHAR(MAX) = NULL,
@SQstrReference VARCHAR(MAX) = NULL,
@SQstrOrdRFQDocID VARCHAR(MAX) = NULL
AS
BEGIN
INSERT INTO tblOrderDocRFQ VALUES (@SQstrOrdRFQDocID,@SQdteSystemDate,@SQdteJournalDate,@SQdteRequired,@SQstrUserName,@SQstrShipTo,@SQstrNotes,@SQbitPrinted,@SQbitEmailed,@SQbitCleared,@SQintDept,@SQstrAddInfo,@SQstrReference)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProcessDocumnet5]
@SQstrOrdRFQDocID NVARCHAR(MAX) = NULL,
@SQintLineNo INT = NULL,
@SQstrPartNumber NVARCHAR(MAX) = NULL,
@SQstrPartDesc NVARCHAR(MAX) = NULL,
@SQdecQty DECIMAL = NULL,
@SQintType INT = NULL,
@SQstrVendName NVARCHAR(MAX) = NULL,
@SQbitApproved BIT = NULL,
@SQstrCurrency NVARCHAR(MAX) = NULL,
@SQdecLinePriceEa DECIMAL =NULL,
@SQdecLineDiscPerc DECIMAL = NULL,
@SQdecLineDiscAmt DECIMAL = NULL,
@SQdecLineTotAmt DECIMAL = NULL,
@SQstrPartExtendedDesc NVARCHAR(MAX)
AS
BEGIN
INSERT INTO tblOrderDocRFQDT VALUES (@SQstrOrdRFQDocID,@SQintLineNo,@SQstrPartNumber,@SQstrPartDesc,@SQdecQty,@SQintType,@SQstrVendName,@SQbitApproved,@SQstrCurrency,@SQdecLinePriceEa,@SQdecLineDiscPerc,@SQdecLineDiscAmt,@SQdecLineTotAmt,@SQstrPartExtendedDesc)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProcessDocumnet6]
@SQstrOrdRFQDocID NVARCHAR(MAX) = NULL,
@SQintLineNo INT = NULL,
@SQstrVendName NVARCHAR(MAX) = NULL,
@SQstrVendDesc NVARCHAR(MAX) = NULL,
@SQstrCurrency NVARCHAR(MAX) = NULL,
@SQstrEmail NVARCHAR(MAX)
AS
BEGIN
INSERT INTO tblOrderDocRFQVend VALUES (@SQstrOrdRFQDocID,@SQintLineNo,@SQstrVendName,@SQstrVendDesc,@SQstrCurrency,@SQstrEmail)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProcessDocumnet7]
@SQstrInvPDocID NVARCHAR(MAX) = NULL
AS
BEGIN
DELETE FROM tblInvoiceDocPDimensions WHERE strInvPDocID = @SQstrInvPDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProcessDocumnet8]
@SQNum bigint = NULL
AS
BEGIN
UPDATE tblLastIDs SET lngRFQNumber = @SQNum
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProcessDocumnet2]
@SQstrOrdRFQDocID VARCHAR(MAX) = NULL
AS
BEGIN
DELETE FROM tblOrderDocRFQDT WHERE strOrdRFQDocID = @SQstrOrdRFQDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProcessDocumnet3]
@SQstrOrdRFQDocID VARCHAR(MAX) = NULL
AS
BEGIN
DELETE FROM tblOrderDocRFQVend WHERE strOrdRFQDocID = @SQstrOrdRFQDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[BulkRequestForQuotationsLoad1]
-- Add the parameters for the stored procedure here
AS
BEGIN
SET nocount ON;
SELECT strLocName FROM tblCompanyLoc ORDER BY strLocName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[BulkRequestForQuotationsLoad2]
-- Add the parameters for the stored procedure here
AS
BEGIN
SET nocount ON;
SELECT strAutoRQ, intReqPay, intPDepartmentReq, intAPRefReq, bitAPDefDept FROM tblCoOpts
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[BulkRequestForQuotationsLoad3]
-- Add the parameters for the stored procedure here
AS
BEGIN
SET nocount ON;
SELECT intDept, strDesc FROM tblDepartments
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[NavigateShipmentByNumber2]
(	
@DocumentID NVARCHAR(100),
@IsPrevious BIT
)
AS
BEGIN
IF (@IsPrevious = 1)
SELECT MAX(strOrdRFQDocID) FROM tblOrderDocRFQ WHERE strOrdRFQDocID < @DocumentID AND bitCleared = 0
ELSE
SELECT MIN(strOrdRFQDocID) FROM tblOrderDocRFQ WHERE strOrdRFQDocID > @DocumentID AND bitCleared = 0
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RemoveDocumentDelete1]
(
@SQDate Datetime = null,
@SQUser NVARCHAR(Max) = null,
@SQDocNumber NVARCHAR(Max) = null
)
AS
BEGIN
UPDATE tblOrderDocRFQ SET dteSystemDate = @SQDate, strUserName = @SQUser, bitCleared = 1 WHERE strOrdRFQDocID = @SQDocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdatePrintedFlagForShipments1] (
@DocID AS NVARCHAR(50)
,@IsEmail AS BIT
)
AS
BEGIN
IF (@IsEmail = 0)
BEGIN
UPDATE tblOrderDocRFQ
SET bitPrinted = 1
WHERE strOrdRFQDocID = @DocID
END
ELSE
BEGIN
UPDATE tblOrderDocRFQ
SET bitEmailed = 1
WHERE strOrdRFQDocID = @DocID
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCustomerInfoForEmail1]
-- Add the parameters for the stored procedure here
AS
BEGIN
SET nocount ON;
select strOrdRFQDocID as OrdRFQDocID 
	,intLineNo as [LineNo]
	,strVendName as VendorName 
   ,strVendDesc as VendorDescription
   ,strCurrency as Currency
   ,strEmail as Email from tblOrderDocRFQVend
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipNavigateNumber]
(	
@DocumentID NVARCHAR(100),
@IsPrevious BIT
)
AS
BEGIN
IF (@IsPrevious = 1)
SELECT MAX(strDepDocID) FROM tblDeposits WHERE (strDepDocID < @DocumentID)
ELSE
SELECT MAX(strDepDocID) FROM tblDeposits WHERE (strDepDocID > @DocumentID)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetDepositSlipUserData]
-- Add the parameters for the stored procedure here
@SQDocNumber VARCHAR(MAX) = NULL
AS
BEGIN
SET nocount ON;
SELECT dteSystemDate,strUserName FROM tblDeposits WHERE strDepDocID = @SQDocNumber
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipDailySalesAmount]
(	
@SQdteJournalDate NVARCHAR(100)
)
AS
BEGIN
SELECT ISNULL(SUM(decTotal), 0) AS Total FROM tblInvoiceDoc WHERE bitHistoryTrans = 0 AND strPaidBy <> 'On Account' AND dteJournalDate = @SQdteJournalDate
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipAccountCurrency]
(	
@intGLNumber NVARCHAR(MAX)
)
AS
BEGIN
SELECT strCurrency FROM tblAccounts WHERE intGLNumber = @intGLNumber
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipExchangeRate]
(	
@SQCurrency NVARCHAR(100),
@SQTransDate Date
)
AS
BEGIN
SELECT decRate FROM tblCurrencyExc WHERE strCurrency = @SQCurrency AND dteDate = (SELECT MAX(dteDate) FROM tblCurrencyExc WHERE strCurrency = @SQCurrency AND dteDate <= @SQTransDate)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipLoadDocument1]
(	
@SQDepDocID VARCHAR(MAX)
)
AS
BEGIN
SELECT tblDeposits.dteJournalDate, tblDeposits.strComment, tblDeposits.intGLNumber, tblAccounts.strDesc, CASE WHEN tblDeposits.decAmountF = 0 THEN tblDeposits.decAmount ELSE tblDeposits.decAmountF END AS decAmount, tblDeposits.decCashTotal, tblDeposits.decCheqTotal, tblDeposits.lngJourID, tblDeposits.intDept, tblDeposits.strCurrency, tblDeposits.decExchange FROM tblAccounts INNER JOIN tblDeposits ON tblAccounts.intGLNumber = tblDeposits.intGLNumber WHERE (tblDeposits.strDepDocID = @SQDepDocID)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipsAfterEdit1]
@SQGLNumber NVARCHAR(MAX) = NULL,
@SQHomeCurrency NVARCHAR(MAX) = NULL
AS
BEGIN
SELECT intGLNumber, strDesc FROM tblAccountsLY WHERE bitInactive = 0 AND bitLinkAP = 0 AND bitLinkAR = 0 AND bitLinkDeposit = 0 AND bitLinkPrePay = 0 AND bitInventory = 0 AND (intGroupCode = 1 OR intGroupCode = 2) AND (intAccClass = 1 OR intAccClass = 2 OR intAccClass = 11 OR intAccClass = 12) AND intGLNumber = @SQGLNumber AND strCurrency = @SQHomeCurrency
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipsAfterEdit2]
@SQGLNumber NVARCHAR(MAX) = NULL,
@SQHomeCurrency NVARCHAR(MAX) = NULL
AS
BEGIN
SELECT intGLNumber, strDesc FROM tblAccounts WHERE bitInactive = 0 AND bitLinkAP = 0 AND bitLinkAR = 0 AND bitLinkDeposit = 0 AND bitLinkPrePay = 0 AND bitInventory = 0 AND (intGroupCode = 1 OR intGroupCode = 2) AND (intAccClass = 1 OR intAccClass = 2 OR intAccClass = 11 OR intAccClass = 12) AND intGLNumber = @SQGLNumber AND strCurrency = @SQHomeCurrency
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipsAfterEdit3]
@SQAccount NVARCHAR(MAX) = NULL,
@SQDept INT = NULL
AS
BEGIN
SELECT COUNT(intGLNumber) as intGLNumber2 FROM tblAccountsDeptLY WHERE intGLNumber = @SQAccount AND intDept = @SQDept
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipsAfterEdit4]
@SQAccount NVARCHAR(MAX) = NULL,
@SQDept INT = NULL
AS
BEGIN
SELECT COUNT(intGLNumber) as intGLNumber2 FROM tblAccountsDept WHERE intGLNumber = @SQAccount AND intDept = @SQDept
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipLoadDocument2]
(	
@SQDepDocID VARCHAR(MAX)
)
AS
BEGIN
SELECT tblDepositsA.intGLNumber, tblAccounts.strDesc, tblDepositsA.decAmount, tblDepositsA.intDept FROM tblAccounts INNER JOIN tblDepositsA ON tblAccounts.intGLNumber = tblDepositsA.intGLNumber WHERE tblDepositsA.strDepDocID = @SQDepDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipLoadDocument3]
(	
@SQDepDocID VARCHAR(MAX)
)
AS
BEGIN
SELECT * FROM tblDepositsCK WHERE strDepDocID = @SQDepDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipLoadDocument4]
(	
@SQDepDocID VARCHAR(MAX)
)
AS
BEGIN
SELECT * FROM tblDepositsCA WHERE strDepDocID = @SQDepDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipClearForm1]
AS
BEGIN
SELECT ISNULL(MAX(lngDPNumber), 0) + 1 As lngDPNumber FROM tblLastIDs
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipClearForm2]
AS
BEGIN
SELECT * FROM tblDepositSlipsD ORDER BY decDemon
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipLoadData1]
AS
BEGIN
SELECT TOP 1 ISNULL(bitEnableDSeSubmit, 0) AS bitEnableDSeSubmit FROM tblVendECom
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipLoadData2]
AS
BEGIN
SELECT bitDSValidateDailySales, bitDSAutoPrintInv FROM tblCoOpts
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipFileRecord1]
AS
BEGIN
SELECT ISNULL(MAX(lngDPNumber), 0) + 1 AS DPNumber FROM tblLastIDs
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipsFileRecord1]
@SQDocNumber VARCHAR(MAX) = NULL
AS
BEGIN
DELETE FROM tblDeposits WHERE strDepDocID = @SQDocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipsFileRecord2]
@SQJourID bigint = NULL
AS
BEGIN
UPDATE tblJournalEnt SET decAllocatedAmtToDate = (decAmount - decAmountF) * -1, decUnAllocatedAmt = 0 WHERE lngJourID = @SQJourID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipsFileRecord3]
@SQJourID bigint = NULL
AS
BEGIN
UPDATE tblJournalEnt SET decAllocatedAmtToDate = (decAmount - decAmountF) * -1, decUnAllocatedAmt = 0 WHERE lngJourID = @SQJourID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipsFileRecord4]
@SQstrDepDocID VARCHAR(MAX) = NULL,
@SQdteJournalDate DATETIME = NULL,
@SQdteSystemDate DATETIME = NULL,
@SQstrUserName VARCHAR(MAX) = NULL,
@SQlngJourID BIGINT = NULL,
@SQstrComment VARCHAR(MAX) = NULL,
@SQintGLNumber VARCHAR(MAX) = NULL,
@SQdecAmount DECIMAL = NULL,
@SQstrCurrency VARCHAR(MAX) = NULL,
@SQbitIsForeign BIT = NULL,
@SQdecExchange DECIMAL = NULL,
@SQdecAmountF DECIMAL = NULL,
@SQdecCashTotal DECIMAL = NULL,
@SQdecCheqTotal DECIMAL = NULL,
@SQintDept INT NULL
AS
BEGIN
INSERT INTO tblDeposits (strDepDocID,dteSystemDate,dteJournalDate,strUserName,lngJourID,strComment,intGLNumber,decAmount,decCashTotal,decCheqTotal,intDept,strCurrency,bitIsForeign,decExchange,decAmountF) VALUES (@SQstrDepDocID,@SQdteSystemDate,@SQdteJournalDate,@SQstrUserName,@SQlngJourID,@SQstrComment,@SQintGLNumber,@SQdecAmount,@SQdecCashTotal,@SQdecCheqTotal,@SQintDept,@SQstrCurrency,@SQbitIsForeign,@SQdecExchange,@SQdecAmountF)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipsFileRecord5]
@SQstrDepDocID VARCHAR(MAX) = NULL,
@SQintGLNumber VARCHAR(MAX) = NULL,
@SQdecAmount DECIMAL = NULL,
@SQintDept INT NULL,
@SQstrCurrency VARCHAR(MAX) = NULL,
@SQbitIsForeign BIT = NULL,
@SQdecExchange DECIMAL = NULL,
@SQdecAmountF DECIMAL = NULL
AS
BEGIN
INSERT INTO tblDepositsA (strDepDocID,intGLNumber,decAmount,intDept,strCurrency,bitIsForeign,decExchange,decAmountF) VALUES (@SQstrDepDocID,@SQintGLNumber,@SQdecAmount,@SQintDept,@SQstrCurrency,@SQbitIsForeign,@SQdecExchange,@SQdecAmountF)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipsFileRecord6]  
@SQstrDepDocID VARCHAR(MAX) = NULL,  
@SQstrChequeNo VARCHAR(500) = NULL,  
@SQstrDescription VARCHAR(MAX) = NULL,  
@SQdecAmount DECIMAL = NULL,  
@SQstrCurrency VARCHAR(MAX) = NULL,  
@SQbitIsForeign BIT = NULL,  
@SQdecExchange DECIMAL = NULL,  
@SQdecAmountF DECIMAL = NULL  
AS  
BEGIN  
INSERT INTO tblDepositsCK (strDepDocID,strChequeNo,strDescription,decAmount,strCurrency,bitIsForeign,decExchange,decAmountF) VALUES (@SQstrDepDocID,@SQstrChequeNo,@SQstrDescription,@SQdecAmount,@SQstrCurrency,@SQbitIsForeign,@SQdecExchange,@SQdecAmountF) 
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipsFileRecord7]
@SQstrDepDocID VARCHAR(MAX) = NULL,
@SQintCount BIGINT = NULL,
@SQstrDenom VARCHAR(MAX) = NULL,
@SQdecAmount DECIMAL = NULL,
@SQdecDenom DECIMAL = NULL,
@SQstrCurrency VARCHAR(MAX) = NULL,
@SQbitIsForeign BIT = NULL,
@SQdecExchange DECIMAL = NULL,
@SQdecAmountF DECIMAL = NULL
AS
BEGIN
INSERT INTO tblDepositsCA (strDepDocID,intCount,strDenom,decAmount,decDenom,strCurrency,bitIsForeign,decExchange,decAmountF) VALUES (@SQstrDepDocID,@SQintCount,@SQstrDenom,@SQdecAmount,@SQdecDenom,@SQstrCurrency,@SQbitIsForeign,@SQdecExchange,@SQdecAmountF)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipsFileRecord8]
@SQNum BIGINT = NULL
AS
BEGIN
UPDATE tblLastIDs SET lngDPNumber = @SQNum
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipsSubmit1]
AS
BEGIN
SELECT COUNT(*) AS submit FROM tblInvoiceDoc WHERE intSentDoc = 0 AND bitHistoryTrans = 0
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipsSubmit3]
@SQDepDocID NVARCHAR(MAX) = NULL
AS
BEGIN
SELECT tblDepositsA.intGLNumber, tblAccounts.strDesc, tblDepositsA.decAmount, tblDepositsA.intDept, tblAccounts.strField1 FROM tblAccounts INNER JOIN tblDepositsA ON tblAccounts.intGLNumber = tblDepositsA.intGLNumber WHERE tblDepositsA.strDepDocID = @SQDepDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipsSubmit2]
AS
BEGIN
SELECT TOP 1 strURL, strERPAccountNo, strERPPassword,strCustPassword FROM tblVendECom
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DepositeSlipsSubmit4]
@SQDepDocID NVARCHAR(MAX) = NULL
AS
BEGIN
SELECT COUNT(*) ImportCnt FROM tblAccounts INNER JOIN tblDepositsA ON tblAccounts.intGLNumber = tblDepositsA.intGLNumber WHERE tblDepositsA.strDepDocID = @SQDepDocID
END
GO

----------------------------------------------------
--------------Employee Form conversation--------------
CREATE PROCEDURE [dbo].[GetEmployeeData] (@InActive AS BIT)
AS
BEGIN
	SELECT strEmpNumber AS 'EmployeeNumber'
		,strEmpName AS 'EmployeeName'
		,ISNULL(strSurname, '') AS 'Surname'
		,ISNULL(strTelNo, '') AS 'TelNo'
		,ISNULL(strEmail, '') AS 'Email'
		,bitInactive AS 'IsInactive'
	FROM tblEmployees
	WHERE (
			bitInactive = 0
			OR bitInactive = @InActive
			)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[CheckEmployeeRecordExist] (@EmpNo AS NVARCHAR(100))
AS
BEGIN
SELECT sum(counts)
FROM (
SELECT count(*) AS counts
FROM tblInvIntReqDoc
WHERE strEmpNumber = @EmpNo
UNION
SELECT count(*) AS counts
FROM tblInvIssReqDoc
WHERE strEmpNumber = @EmpNo
) referencesCount
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteEmployee] (@EmpNo AS NVARCHAR(100))
AS
BEGIN
DELETE
FROM tblEmployees
WHERE strEmpNumber = @EmpNo
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetEmployeeAdvanceSearchData] (
@FieldName NVARCHAR(MAX) = NULL
,@SearchText NVARCHAR(MAX) = NULL
,@PageIndex int = 1
,@PageSize int = 0
)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Sql nvarchar(MAX)
DECLARE @Where nvarchar(MAX)
DECLARE @Query nvarchar(MAX)
DECLARE @TotalRows INT
DECLARE @TotalPages INT
DECLARE @StartRowIndex INT
,@EndRowIndex INT;
DECLARE @EmailFieldName Varchar(5)
SET @TotalRows = 0
SET @TotalPages = 0
IF ISNULL(@FieldName,'') = ''
BEGIN
SET @FieldName = 'NoNameSurnameTagNo'
SET @EmailFieldName = 'Email'
END
SET @Query = 'SELECT ROW_NUMBER() OVER(ORDER BY strEmpNumber) AS RowNumber
,strEmpNumber AS EmployeeNumber
,strEmpName	AS EmployeeName
,strSurname AS Surname
,strTagNo AS TagNo
,strTelNo AS TelNo
,strEmail AS Email
,strDefaultApprover AS Approver
,strField1 AS Field1
,strField2 AS Field2
,strField3 AS Field3
,strField4 AS Field4
,strField5 AS Field5
,strField6 AS Field6
,strField7 AS Field7
,strField8 AS Field8
,strField9 AS Field9
,strField10 AS Field10
,strField11 AS Field11
,strField12 AS Field12
FROM tblEmployees';
SET @Where = 'bitInactive = 0
AND (
(
@SearchText IS NULL
OR @SearchText = ''''
OR (
tblEmployees.strEmpNumber LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''NoNameSurnameTagNo''
)
OR (
tblEmployees.strEmpName LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''NoNameSurnameTagNo''
)
OR (
tblEmployees.strSurname LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''NoNameSurnameTagNo''
)
OR (
tblEmployees.strTagNo LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''NoNameSurnameTagNo''
)
)
OR (
(
tblEmployees.strTelNo LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''PhoneEmail''
)
OR (
tblEmployees.strEmail LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''PhoneEmail''
)
)
OR (
tblEmployees.strDefaultApprover LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''Approver''
)
OR (
tblEmployees.strField1 LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''strField1''
)
OR (
tblEmployees.strField2 LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''strField2''
)
OR (
tblEmployees.strField3 LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''strField3''
)
OR (
tblEmployees.strField4 LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''strField4''
)
OR (
tblEmployees.strField5 LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''strField5''
)
OR (
tblEmployees.strField6 LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''strField6''
)
OR (
tblEmployees.strField7 LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''strField7''
)
OR (
tblEmployees.strField8 LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''strField8''
)
OR (
tblEmployees.strField9 LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''strField9''
)
OR (
tblEmployees.strField10 LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''strField10''
)
OR (
tblEmployees.strField11 LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''strField11''
)
OR (
tblEmployees.strField12 LIKE ''%'' + @SearchText + ''%''
AND @FieldName = ''strField12''
)
)'
SET @Sql = ';WITH CTE AS('+@Query+' WHERE '+@Where+')'
IF(@PageSize = 0)
BEGIN
SET @Sql = @Sql + ' SELECT * FROM CTE;'
END
ELSE
BEGIN
SELECT @StartRowIndex = ((@PageIndex - 1) * @PageSize) + 1;
SELECT @EndRowIndex = @StartRowIndex + @PageSize - 1;
DECLARE @TotalRecords NVARCHAR(MAX) = 'SELECT @temp = COUNT(1) FROM tblEmployees WHERE ' + @Where + ''
EXEC sp_executesql @TotalRecords, 
N'@SearchText NVARCHAR(MAX), @FieldName NVARCHAR(MAX),@EmailFieldName NVARCHAR(5), @temp int out'
,@SearchText=@SearchText,@FieldName=@FieldName,@EmailFieldName=@EmailFieldName,@temp=@TotalRows OUTPUT
SELECT @TotalPages = CEILING(@TotalRows / @PageSize)
IF @TotalRows > @TotalPages * @PageSize
SET @TotalPages = @TotalPages + 1
SET @Sql = @Sql + ' SELECT *,'+ CAST(@TotalRows AS VARCHAR) + ' AS TotalRows,'+CAST(@TotalPages AS VARCHAR)+' AS TotalPages FROM CTE WHERE RowNumber BETWEEN ' + cast(@StartRowIndex AS VARCHAR) + ' AND ' + cast(@EndRowIndex AS VARCHAR) + ' ;'
END
exec sp_executesql @Sql, 
N'@SearchText NVARCHAR(MAX), @FieldName NVARCHAR(MAX),@EmailFieldName NVARCHAR(5)', 
@SearchText=@SearchText,@FieldName=@FieldName,@EmailFieldName=@EmailFieldName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetEmpMaterialProfiles]
AS
BEGIN
SET NOCOUNT ON;
SELECT lngId AS [Id]
,strName AS [Name]
,strDescription AS [Description]
,bitInactive AS [Inactive]
FROM tblEmpMaterialIssueProfile
WHERE bitInactive = 0
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetEmpIRApproverList]
AS
BEGIN
SET NOCOUNT ON;
SELECT U.strUserName AS [UserName]
FROM tblUsers U
INNER JOIN tblApprovalsDocLimit ADL ON ADL.strUserName = U.strUserName
WHERE ADL.intApproverType = 1
AND U.blnApproveInventoryRequistion = 1
ORDER BY U.strUserName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetEmployeeDataByEmpNumber] (@EmpNumber AS NVARCHAR(100))
AS
BEGIN
SELECT strEmpNumber AS EmployeeNumber
,strEmpName AS EmployeeName
,strTitle AS Title
,strSurname AS Surname
,strTagNo AS TagNo
,strTelNo AS TelNo
,strEmail AS Email
,intDept AS DepartmentID
,strDefaultApprover AS Approver
,bitInactive AS IsInactive
,dteLastUpdated AS LastUpdated
,dteSince AS Since
,[uID] AS Id
,dteInactiveDate AS InactiveDate
,strField1 AS Field1
,strField2 AS Field2
,strField3 AS Field3
,strField4 AS Field4
,strField5 AS Field5
,strField6 AS Field6
,strField7 AS Field7
,strField8 AS Field8
,strField9 AS Field9
,strField10 AS Field10
,strField11 AS Field11
,strField12 AS Field12
,ISNULL((
SELECT strCustDesc
FROM tblCustomers
WHERE strCustName = strCustNumber
), '') AS CustName
,strCustNumber AS CustNumber
,imgEmpPhoto AS EmpPhoto
,lngProfileId AS ProfileId
,dteBudgetDate AS BudgetDate
,bitNonBudgetRefNo AS IsNonBudgetRefNo
,strPinNo AS PinNo
FROM tblEmployees
WHERE strEmpNumber = @EmpNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[EmpFingerprintsDetails] 
(
@EmpNumber nvarchar(50) 
)
AS  
BEGIN
SElect [Image_ID] AS ImageID
,[strEmpNumber] AS EmpNumber
,[imgData] AS ImgData
,Cast([bitDefaultImage] AS bit) AS  IsDefaultImage
,[dteRowUpdated] AS RowUpdated
,[imgTemplateData1] AS TemplateData1
,[imgTemplateData2] AS TemplateData2 from tblEmpFingerprints where strEmpNumber=@EmpNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetEmployeeCenters] (@EmpNumber NVARCHAR(100) = NULL)
AS
BEGIN
SET NOCOUNT ON;
SELECT EMP.uidCenterID AS CenterID
,CENT.strLvl1 AS Level1
,CENT.strLvl2 AS Level2
,CENT.strLvl3 AS Level3
,CENT.strLvl4 AS Level4
,CENT.strLvl5 AS Level5
FROM tblEmployeeCenter EMP
INNER JOIN tblCenters CENT ON EMP.uidCenterID = CENT.uidCenterID
WHERE EMP.strEmpNumber = @EmpNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInventoryItemsBudget] @Id BIGINT = NULL
,@EmpNumber NVARCHAR(50) = NULL
AS
BEGIN
SET NOCOUNT ON;
IF @Id IS NOT NULL
BEGIN
IF @EmpNumber IS NOT NULL
BEGIN
IF (
(
SELECT ISNULL(lngProfileId, 0)
FROM tblEmployees
WHERE strEmpNumber = @EmpNumber
)
) <> @Id
BEGIN
SELECT 1 AS [Selected]
,tblEmpMaterialIssueProfileDT.lngId
,tblEmpMaterialIssueProfileDT.strPartNumber	 AS PartNumber
,tblInv.strDesc	 AS [Desc]
,intType
,strCategory AS Category
,strUnitOfMeasure AS UnitOfMeasure
,decBudgetQty  AS BudgetQty
,intBudgetFrequency
,(CASE intBudgetFrequency
WHEN 5
THEN 'No Budget'
WHEN 0
THEN 'Yearly'
WHEN 1
THEN 'Half Yearly'
WHEN 2
THEN 'Quarterly'
WHEN 3
THEN 'Monthly'
WHEN 4
THEN 'Weekly'
END	 ) AS BudgetFrequency
FROM tblEmpMaterialIssueProfile
INNER JOIN tblEmpMaterialIssueProfileDT ON tblEmpMaterialIssueProfile.lngId = tblEmpMaterialIssueProfileDT.lngProfileId
INNER JOIN tblInv ON tblInv.strPartNumber = tblEmpMaterialIssueProfileDT.strPartNumber
AND (intType = 1)
WHERE tblEmpMaterialIssueProfile.lngId = @Id
ORDER BY tblInv.strPartNumber
END
ELSE
BEGIN
SELECT 1 AS [Selected]
,lngId = 0
,tblInv.strPartNumber AS PartNumber
,tblInv.strDesc	AS [Desc]
,intType
,strCategory  AS Category
,strUnitOfMeasure AS  UnitOfMeasure
,ISNULL(decBudgetQty, 0) AS BudgetQty
,ISNULL(intBudgetFrequency, 5) AS intBudgetFrequency
,(CASE ISNULL(intBudgetFrequency, 5)
WHEN 5
THEN 'No Budget'
WHEN 0
THEN 'Yearly'
WHEN 1
THEN 'Half Yearly'
WHEN 2
THEN 'Quarterly'
WHEN 3
THEN 'Monthly'
WHEN 4
THEN 'Weekly'
END	) AS BudgetFrequency
FROM tblInv
INNER JOIN tblEmpItemBudgetDT ON tblInv.strPartNumber = tblEmpItemBudgetDT.strPartNumber
AND strEmpNumber = @EmpNumber
WHERE (intType = 1)
ORDER BY tblInv.strPartNumber
END
END
ELSE
BEGIN
SELECT 1 AS [Selected]
,tblEmpMaterialIssueProfileDT.lngId
,tblEmpMaterialIssueProfileDT.strPartNumber	AS PartNumber
,tblInv.strDesc	AS [Desc]
,intType
,strCategory AS Category
,strUnitOfMeasure AS UnitOfMeasure
,decBudgetQty AS BudgetQty
,intBudgetFrequency
,(CASE intBudgetFrequency
WHEN 5
THEN 'No Budget'
WHEN 0
THEN 'Yearly'
WHEN 1
THEN 'Half Yearly'
WHEN 2
THEN 'Quarterly'
WHEN 3
THEN 'Monthly'
WHEN 4
THEN 'Weekly'
END) AS BudgetFrequency
FROM tblEmpMaterialIssueProfile
INNER JOIN tblEmpMaterialIssueProfileDT ON tblEmpMaterialIssueProfile.lngId = tblEmpMaterialIssueProfileDT.lngProfileId
INNER JOIN tblInv ON tblInv.strPartNumber = tblEmpMaterialIssueProfileDT.strPartNumber
AND (intType = 1)
WHERE tblEmpMaterialIssueProfile.lngId = @Id
ORDER BY tblInv.strPartNumber
END
END
ELSE
BEGIN
SELECT 1 AS [Selected]
,lngId = 0
,tblInv.strPartNumber AS PartNumber
,tblInv.strDesc	AS [Desc]
,intType
,strCategory AS Category
,strUnitOfMeasure AS UnitOfMeasure
,ISNULL(decBudgetQty, 0) AS BudgetQty
,ISNULL(intBudgetFrequency, 5) AS intBudgetFrequency
,(CASE ISNULL(intBudgetFrequency, 5)
WHEN 5
THEN 'No Budget'
WHEN 0
THEN 'Yearly'
WHEN 1
THEN 'Half Yearly'
WHEN 2
THEN 'Quarterly'
WHEN 3
THEN 'Monthly'
WHEN 4
THEN 'Weekly'
END	  ) AS BudgetFrequency
FROM tblInv
INNER JOIN tblEmpItemBudgetDT ON tblInv.strPartNumber = tblEmpItemBudgetDT.strPartNumber
AND strEmpNumber = @EmpNumber
WHERE (intType = 1)
ORDER BY tblInv.strPartNumber
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SearchInvDataByPartNumber] @PartNumber NVARCHAR(100) = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT tblInv.strDesc AS [Desc]
,tblInv.strPartNumber AS PartNumber
,strUnitOfMeasure AS UnitOfMeasure
,strCategory AS Category
FROM tblInv
WHERE (
tblInv.strPartNumber LIKE '%' + @PartNumber + '%'
OR tblInv.strBarCode LIKE '%' + @PartNumber + '%'
OR tblInv.strBarCode2 LIKE '%' + @PartNumber + '%'
)
AND (tblInv.intType = 1)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertUpdateEmployees] (
	@IsEdit BIT
	,@EmployeeNumber NVARCHAR(50)
	,@EmployeeName NVARCHAR(200)
	,@Title NVARCHAR(5)
	,@Surname NVARCHAR(50)
	,@TagNo NVARCHAR(20)
	,@TelNo NVARCHAR(50)
	,@Email NVARCHAR(250)
	,@DepartmentID INT
	,@Approver NVARCHAR(50)
	,@IsInactive BIT
	,@Since DATETIME
	,@Field1 NVARCHAR(100)
	,@Field2 NVARCHAR(100)
	,@Field3 NVARCHAR(100)
	,@Field4 NVARCHAR(100)
	,@Field5 NVARCHAR(100)
	,@Field6 NVARCHAR(100)
	,@Field7 NVARCHAR(100)
	,@Field8 NVARCHAR(100)
	,@Field9 NVARCHAR(100)
	,@Field10 NVARCHAR(100)
	,@Field11 NVARCHAR(100)
	,@Field12 NVARCHAR(100)
	,@InactiveDate DATETIME
	,@CustNumber NVARCHAR(50)
	,@EmpPhoto IMAGE = NULL
	,@ProfileId BIGINT
	,@BudgetDate DATETIME
	,@IsNonBudgetRefNo BIT
	,@PinNo NVARCHAR(max)
	)
AS
BEGIN
	SET NOCOUNT ON;

	IF @IsEdit = 0
	BEGIN
		INSERT INTO [dbo].[tblEmployees] (
			[strEmpNumber]
			,[strEmpName]
			,[strTitle]
			,[strSurname]
			,[strTagNo]
			,[strTelNo]
			,[strEmail]
			,[intDept]
			,[strDefaultApprover]
			,[bitInactive]
			,[dteLastUpdated]
			,[dteSince]
			,[uID]
			,[dteInactiveDate]
			,[strField1]
			,[strField2]
			,[strField3]
			,[strField4]
			,[strField5]
			,[strField6]
			,[strField7]
			,[strField8]
			,[strField9]
			,[strField10]
			,[strField11]
			,[strField12]
			,[strCustNumber]
			,[imgEmpPhoto]
			,[lngProfileId]
			,[dteBudgetDate]
			,[bitNonBudgetRefNo]
			,[strPinNo]
			)
		VALUES (
			@EmployeeNumber
			,@EmployeeName
			,@Title
			,@Surname
			,@TagNo
			,@TelNo
			,@Email
			,@DepartmentID
			,@Approver
			,@IsInactive
			,GETDATE()
			,@Since
			,NEWID()
			,@InactiveDate
			,@Field1
			,@Field2
			,@Field3
			,@Field4
			,@Field5
			,@Field6
			,@Field7
			,@Field8
			,@Field9
			,@Field10
			,@Field11
			,@Field12
			,@CustNumber
			,@EmpPhoto
			,@ProfileId
			,@BudgetDate
			,@IsNonBudgetRefNo
			,@PinNo
			)
	END
	ELSE
	BEGIN
		UPDATE tblEmployees
		SET strEmpName = @EmployeeName
			,strTitle = @Title
			,strSurname = @Surname
			,strTagNo = @TagNo
			,strTelNo = @TelNo
			,strEmail = @Email
			,bitInactive = @IsInactive
			,dteSince = @Since
			,intDept = @DepartmentID
			,strDefaultApprover = @Approver
			,dteInactiveDate = @InactiveDate
			,dteLastUpdated = GetDate()
			,strField1 = @Field1
			,strField2 = @Field2
			,strField3 = @Field3
			,strField4 = @Field4
			,strField5 = @Field5
			,strField6 = @Field6
			,strField7 = @Field7
			,strField8 = @Field8
			,strField9 = @Field9
			,strField10 = @Field10
			,strField11 = @Field11
			,strField12 = @Field12
			,strCustNumber = @CustNumber
			,imgEmpPhoto = @EmpPhoto
			,lngProfileId = @ProfileId
			,dteBudgetDate = @BudgetDate
			,bitNonBudgetRefNo = @IsNonBudgetRefNo
			,strPinNo = @PinNo
		WHERE strEmpNumber = @EmployeeNumber
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertEmployeeCenterData] (
@EmployeeNumber NVARCHAR(50)
,@CenterID UNIQUEIDENTIFIER = NULL
)
AS
BEGIN
SET NOCOUNT ON;
DELETE
FROM tblEmployeeCenter
WHERE strEmpNumber = @EmployeeNumber
IF @CenterID IS NOT NULL
BEGIN
INSERT INTO [dbo].[tblEmployeeCenter] (
[strEmpNumber]
,[uidCenterID]
)
VALUES (
@EmployeeNumber
,@CenterID
)
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteEmployeeItemBudgetData] (@EmployeeNumber NVARCHAR(50))
AS
BEGIN
SET NOCOUNT ON;
DELETE
FROM tblEmpItemBudgetDT
WHERE strEmpNumber = @EmployeeNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertEmployeeItemBudgetData] (
@EmployeeNumber NVARCHAR(50)
,@ProfileId BIGINT
,@PartNumber NVARCHAR(50)
,@BudgetFrequency INT
,@BudgetQty MONEY
)
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [dbo].[tblEmpItemBudgetDT] (
[strEmpNumber]
,[lngProfileId]
,[strPartNumber]
,[intBudgetFrequency]
,[decBudgetQty]
)
VALUES (
@EmployeeNumber
,@ProfileId
,@PartNumber
,@BudgetFrequency
,@BudgetQty
)
END
GO
--------------------------------------------------
CREATE PROCEDURE [dbo].[InsertEmployeeFingerprintsData] (
@EmployeeNumber NVARCHAR(50)
,@ImgData IMAGE
,@IsDefaultImage BIT
)
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [dbo].[tblEmpFingerprints] (
[strEmpNumber]
,[imgData]
,[bitDefaultImage]
,[dteRowUpdated]
,[imgTemplateData1]
,[imgTemplateData2]
)
VALUES (
@EmployeeNumber
,@ImgData
,@IsDefaultImage
,GETDATE()
,NULL
,NULL
)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteEmployeeFingerprintsData] (
@EmployeeNumber NVARCHAR(50)
)
AS
BEGIN
SET NOCOUNT ON;
DELETE
FROM tblEmpFingerprints
WHERE strEmpNumber = @EmployeeNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[NavigatePurchasesByVendor]
(
@IsAPReturnIcon BIT,
@TransactionType TINYINT,
@VendorName NVARCHAR(100),
@DocumentID NVARCHAR(100),
@IsPrevious BIT
)
AS
BEGIN
IF (@IsPrevious = 1)
BEGIN
IF (@TransactionType = 0) --Invoice
IF(@IsAPReturnIcon = 1)
SELECT MAX(strInvPDocID) FROM tblInvoiceDocP WHERE strVendName = @VendorName AND strInvPDocID < @DocumentID AND strInvPDocID NOT LIKE 'DN%' AND bitHistoryTrans = 0
ELSE
SELECT MAX(strInvPDocID) FROM tblInvoiceDocP WHERE strVendName = @VendorName AND strInvPDocID < @DocumentID AND bitHistoryTrans = 0
ELSE IF (@TransactionType = 3 ) --RETURNS
SELECT MAX(strInvPDocID) FROM tblInvoiceDocP WHERE strVendName = @VendorName AND strInvPDocID < @DocumentID AND bitHistoryTrans = 0 AND strInvPDocID LIKE 'DN%'
ELSE IF (@TransactionType = 1 ) --PurchaseOrder			
SELECT MAX(strOrdPDocID) FROM tblOrderDocP WHERE strVendName = @VendorName AND strOrdPDocID < @DocumentID AND intDocType = 1 and bitCleared = 0
ELSE IF (@TransactionType = 2 ) --Requisition
SELECT MAX(strOrdPDocID) FROM tblOrderDocP WHERE strVendName = @VendorName AND strOrdPDocID < @DocumentID AND intDocType = 2 and bitCleared = 0
END
ELSE
BEGIN
IF (@TransactionType = 0) --Invoice
IF(@IsAPReturnIcon = 1)
SELECT MIN(strInvPDocID) FROM tblInvoiceDocP WHERE strVendName = @VendorName AND strInvPDocID > @DocumentID AND strInvPDocID NOT LIKE 'DN%' AND bitHistoryTrans = 0
ELSE
SELECT MIN(strInvPDocID) FROM tblInvoiceDocP WHERE strVendName = @VendorName AND strInvPDocID > @DocumentID AND bitHistoryTrans = 0
ELSE IF (@TransactionType = 3 ) --PurchaseReturns
SELECT MIN(strInvPDocID) FROM tblInvoiceDocP WHERE strVendName = @VendorName AND strInvPDocID > @DocumentID AND bitHistoryTrans = 0 AND strInvPDocID LIKE 'DN%'
ELSE IF (@TransactionType = 1 ) --PurchaseOrder
SELECT MIN(strOrdPDocID) FROM tblOrderDocP WHERE strVendName = @VendorName AND strOrdPDocID > @DocumentID AND intDocType = 1 and bitCleared = 0
ELSE IF (@TransactionType = 2 ) --Requisition
SELECT MIN(strOrdPDocID) FROM tblOrderDocP WHERE strVendName = @VendorName AND strOrdPDocID > @DocumentID AND intDocType = 2 and bitCleared = 0
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[NavigatePurchasesByNumber] (  
 @IsAPReturnIcon BIT  
 ,@TransactionType TINYINT  
 ,@DocumentID NVARCHAR(100)  
 ,@IsPrevious BIT  
 ,@IsBPToolsMode BIT  
 ,@UserName AS NVARCHAR(100)  
 ,@IsUsingPOApprovals AS BIT  
 ,@IsUserPOApprover AS BIT  
 )  
AS  
BEGIN  
 IF (@IsPrevious = 1)  
 BEGIN  
  IF (@TransactionType = 0) --Invoice  
   IF (@IsAPReturnIcon = 1)  
    SELECT MAX(strInvPDocID)  
    FROM tblInvoiceDocP  
    INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName  
    WHERE strInvPDocID < @DocumentID  
     AND strInvPDocID NOT LIKE 'DN%'  
     AND bitHistoryTrans = 0  
     AND (  
      @IsBPToolsMode = 1  
      OR (  
       tblVendors.strVendCategory IN (  
        SELECT tblVendorCat.strVendCategory  
        FROM tblVendorCat  
        LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory  
        WHERE ISNULL((  
           SELECT COUNT(tblVendorCatSec.strVendCategory)  
           FROM tblVendorCatSec  
           WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
           ), 0) = 0  
         OR (  
          ISNULL((  
            SELECT COUNT(tblVendorCatSec.strVendCategory)  
            FROM tblVendorCatSec  
            WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
            ), 0) > 0  
          AND tblVendorCatSec.strUserName = @UserName  
          )  
        )  
       )  
      )  
   ELSE  
    SELECT MAX(strInvPDocID)  
    FROM tblInvoiceDocP  
    INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName  
    WHERE strInvPDocID < @DocumentID  
     AND bitHistoryTrans = 0  
     AND (  
      @IsBPToolsMode = 1  
      OR (  
       tblVendors.strVendCategory IN (  
        SELECT tblVendorCat.strVendCategory  
        FROM tblVendorCat  
        LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory  
        WHERE ISNULL((  
           SELECT COUNT(tblVendorCatSec.strVendCategory)  
           FROM tblVendorCatSec  
           WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
           ), 0) = 0  
         OR (  
          ISNULL((  
            SELECT COUNT(tblVendorCatSec.strVendCategory)  
            FROM tblVendorCatSec  
            WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
            ), 0) > 0  
          AND tblVendorCatSec.strUserName = @UserName  
          )  
        )  
       )  
      )  
  ELSE IF (@TransactionType = 3) --RETURNS  
   SELECT MAX(strInvPDocID)  
   FROM tblInvoiceDocP  
   INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName  
   WHERE strInvPDocID < @DocumentID  
    AND bitHistoryTrans = 0  
    AND strInvPDocID LIKE 'DN%'  
    AND (  
     @IsBPToolsMode = 1  
     OR (  
      tblVendors.strVendCategory IN (  
       SELECT tblVendorCat.strVendCategory  
       FROM tblVendorCat  
       LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory  
       WHERE ISNULL((  
          SELECT COUNT(tblVendorCatSec.strVendCategory)  
          FROM tblVendorCatSec  
          WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
          ), 0) = 0  
        OR (  
         ISNULL((  
           SELECT COUNT(tblVendorCatSec.strVendCategory)  
           FROM tblVendorCatSec  
           WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
           ), 0) > 0  
         AND tblVendorCatSec.strUserName = @UserName  
         )  
       )  
      )  
     )  
  ELSE IF (@TransactionType = 1) --PurchaseOrder   
   IF (  
     @IsUsingPOApprovals = 1  
     AND @IsUserPOApprover = 0  
     )  
   BEGIN  
    SELECT MAX(strOrdPDocID)  
    FROM tblOrderDocP  
    INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName  
    WHERE (  
      tblOrderDocP.strOrdPDocID IN (  
       SELECT MIN(strNewPODocID)  
       FROM tblPOApprovalTracking  
       WHERE (strDocCreatorUserName = @UserName)  
        AND (strNewPODocID < @DocumentID)  
       )  
      )  
     AND (bitCleared = 0)  
     AND (intDocType = 1)  
     AND (  
      @IsBPToolsMode = 1  
      OR (  
       tblVendors.strVendCategory IN (  
        SELECT tblVendorCat.strVendCategory  
        FROM tblVendorCat  
        LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory  
        WHERE ISNULL((  
           SELECT COUNT(tblVendorCatSec.strVendCategory)  
           FROM tblVendorCatSec  
           WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
           ), 0) = 0  
         OR (  
          ISNULL((  
            SELECT COUNT(tblVendorCatSec.strVendCategory)  
            FROM tblVendorCatSec  
            WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
            ), 0) > 0  
          AND tblVendorCatSec.strUserName = @UserName  
          )  
        )  
       )  
      )  
   END  
   ELSE  
   BEGIN  
    SELECT MAX(strOrdPDocID)  
    FROM tblOrderDocP  
    INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName  
    WHERE (tblOrderDocP.strOrdPDocID < @DocumentID)  
     AND (bitCleared = 0)  
     AND (intDocType = 1)  
     AND (  
      @IsBPToolsMode = 1  
      OR (  
       tblVendors.strVendCategory IN (  
        SELECT tblVendorCat.strVendCategory  
        FROM tblVendorCat  
        LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory  
        WHERE ISNULL((  
           SELECT COUNT(tblVendorCatSec.strVendCategory)  
           FROM tblVendorCatSec  
           WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
           ), 0) = 0  
         OR (  
          ISNULL((  
            SELECT COUNT(tblVendorCatSec.strVendCategory)  
            FROM tblVendorCatSec  
            WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
            ), 0) > 0  
          AND tblVendorCatSec.strUserName = @UserName  
          )  
        )  
       )  
      )  
   END  
  ELSE IF (@TransactionType = 2) --Requisition  
   SELECT MAX(strOrdPDocID)  
   FROM tblOrderDocP  
   INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName  
   WHERE strOrdPDocID < @DocumentID  
    AND intDocType = 2  
    AND bitCleared = 0  
    AND (  
     @IsBPToolsMode = 1  
     OR (  
      tblVendors.strVendCategory IN (  
       SELECT tblVendorCat.strVendCategory  
       FROM tblVendorCat  
       LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory  
       WHERE ISNULL((  
          SELECT COUNT(tblVendorCatSec.strVendCategory)  
          FROM tblVendorCatSec  
          WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
          ), 0) = 0  
        OR (  
         ISNULL((  
           SELECT COUNT(tblVendorCatSec.strVendCategory)  
           FROM tblVendorCatSec  
           WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
           ), 0) > 0  
         AND tblVendorCatSec.strUserName = @UserName  
         )  
       )  
      )  
     )  
 END  
 ELSE --NextNumber  
 BEGIN  
  IF (@TransactionType = 0) --Invoice  
   IF (@IsAPReturnIcon = 1)  
    SELECT MIN(strInvPDocID)  
    FROM tblInvoiceDocP  
    INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName  
    WHERE strInvPDocID > @DocumentID  
     AND strInvPDocID NOT LIKE 'DN%'  
     AND bitHistoryTrans = 0  
     AND (  
      @IsBPToolsMode = 1  
      OR (  
       tblVendors.strVendCategory IN (  
        SELECT tblVendorCat.strVendCategory  
        FROM tblVendorCat  
        LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory  
        WHERE ISNULL((  
           SELECT COUNT(tblVendorCatSec.strVendCategory)  
           FROM tblVendorCatSec  
           WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
           ), 0) = 0  
         OR (  
          ISNULL((  
            SELECT COUNT(tblVendorCatSec.strVendCategory)  
            FROM tblVendorCatSec  
            WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
            ), 0) > 0  
          AND tblVendorCatSec.strUserName = @UserName  
          )  
        )  
       )  
      )  
   ELSE  
    SELECT MIN(strInvPDocID)  
    FROM tblInvoiceDocP  
    INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName  
    WHERE strInvPDocID > @DocumentID  
     AND bitHistoryTrans = 0  
     AND (  
      @IsBPToolsMode = 1  
      OR (  
       tblVendors.strVendCategory IN (  
        SELECT tblVendorCat.strVendCategory  
        FROM tblVendorCat  
        LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory  
        WHERE ISNULL((  
           SELECT COUNT(tblVendorCatSec.strVendCategory)  
           FROM tblVendorCatSec  
           WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
           ), 0) = 0  
         OR (  
          ISNULL((  
            SELECT COUNT(tblVendorCatSec.strVendCategory)  
            FROM tblVendorCatSec  
            WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
            ), 0) > 0  
          AND tblVendorCatSec.strUserName = @UserName  
          )  
        )  
       )  
      )  
  ELSE IF (@TransactionType = 3) --RETURNS  
   SELECT MIN(strInvPDocID)  
   FROM tblInvoiceDocP  
   INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName  
   WHERE strInvPDocID > @DocumentID  
    AND bitHistoryTrans = 0  
    AND strInvPDocID LIKE 'DN%'  
    AND (  
     @IsBPToolsMode = 1  
     OR (  
      tblVendors.strVendCategory IN (  
       SELECT tblVendorCat.strVendCategory  
       FROM tblVendorCat  
       LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory  
       WHERE ISNULL((  
          SELECT COUNT(tblVendorCatSec.strVendCategory)  
          FROM tblVendorCatSec  
          WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
          ), 0) = 0  
        OR (  
         ISNULL((  
           SELECT COUNT(tblVendorCatSec.strVendCategory)  
           FROM tblVendorCatSec  
           WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
           ), 0) > 0  
         AND tblVendorCatSec.strUserName = @UserName  
         )  
       )  
      )  
     )  
  ELSE IF (@TransactionType = 1) --PurchaseOrder   
   IF (  
     @IsUsingPOApprovals = 1  
     AND @IsUserPOApprover = 0  
     )  
   BEGIN  
    SELECT MIN(strOrdPDocID)  
    FROM tblOrderDocP  
    INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName  
    WHERE (  
      tblOrderDocP.strOrdPDocID IN (  
       SELECT MIN(strNewPODocID)  
       FROM tblPOApprovalTracking  
       WHERE (strDocCreatorUserName = @UserName)  
        AND (strNewPODocID > @DocumentID)  
       )  
      )  
     AND (bitCleared = 0)  
     AND (intDocType = 1)  
     AND (  
      @IsBPToolsMode = 1  
      OR (  
       tblVendors.strVendCategory IN (  
        SELECT tblVendorCat.strVendCategory  
        FROM tblVendorCat  
        LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory  
        WHERE ISNULL((  
           SELECT COUNT(tblVendorCatSec.strVendCategory)  
           FROM tblVendorCatSec  
           WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
           ), 0) = 0  
         OR (  
          ISNULL((  
            SELECT COUNT(tblVendorCatSec.strVendCategory)  
            FROM tblVendorCatSec  
            WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
            ), 0) > 0  
          AND tblVendorCatSec.strUserName = @UserName  
          )  
        )  
       )  
      )  
   END  
   ELSE  
   BEGIN  
    SELECT MIN(strOrdPDocID)  
    FROM tblOrderDocP  
    INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName  
    WHERE (tblOrderDocP.strOrdPDocID > @DocumentID)  
     AND (bitCleared = 0)  
     AND (intDocType = 1)  
     AND (  
      @IsBPToolsMode = 1  
      OR (  
       tblVendors.strVendCategory IN (  
        SELECT tblVendorCat.strVendCategory  
        FROM tblVendorCat  
        LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory  
        WHERE ISNULL((  
           SELECT COUNT(tblVendorCatSec.strVendCategory)  
           FROM tblVendorCatSec  
           WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
           ), 0) = 0  
         OR (  
          ISNULL((  
            SELECT COUNT(tblVendorCatSec.strVendCategory)  
            FROM tblVendorCatSec  
            WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
            ), 0) > 0  
          AND tblVendorCatSec.strUserName = @UserName  
          )  
        )  
       )  
      )  
   END  
  ELSE IF (@TransactionType = 2) --Requisition  
   SELECT MIN(strOrdPDocID)  
   FROM tblOrderDocP  
   INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName  
   WHERE strOrdPDocID > @DocumentID  
    AND intDocType = 2  
    AND bitCleared = 0  
    AND (  
     @IsBPToolsMode = 1  
     OR (  
      tblVendors.strVendCategory IN (  
       SELECT tblVendorCat.strVendCategory  
       FROM tblVendorCat  
       LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory  
       WHERE ISNULL((  
          SELECT COUNT(tblVendorCatSec.strVendCategory)  
          FROM tblVendorCatSec  
          WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
          ), 0) = 0  
        OR (  
         ISNULL((  
           SELECT COUNT(tblVendorCatSec.strVendCategory)  
           FROM tblVendorCatSec  
           WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory  
           ), 0) > 0  
         AND tblVendorCatSec.strUserName = @UserName  
         )  
       )  
      )  
     )  
 END  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseOrderDataForESubmit] (@DocNumber NVARCHAR(100))
AS
BEGIN
SET NOCOUNT ON;
BEGIN
SELECT tblOrderDocP.strOrdPDocID AS OrdPDocID
,tblOrderDocP.dteJournalDate AS JournalDate
,tblOrderDocP.dteRequired AS [Required]
,tblOrderDocP.strShipTo AS ShipTo
,(
CASE 
WHEN tblOrderDocP.bitSOCopyMulti = 1
THEN '001'
ELSE CASE 
WHEN tblOrderDocP.bitSOCopy = 0
AND tblOrderDocP.bitSOCopyMulti = 0
THEN '001'
ELSE ISNULL((
SELECT TOP 1 tblOrderDoc.strCustName
FROM tblOrderDocPDT
LEFT JOIN tblOrderDoc ON tblOrderDocPDT.strOrdSODocID = tblOrderDoc.strOrdDocID
WHERE tblOrderDocPDT.strOrdPDocID = tblOrderDocP.strOrdPDocID
AND LEN(tblOrderDocPDT.strOrdSODocID) > 0
), '001')
END
END
) AS AcctNo
,tblVendECom.strCustName AS CustName
,tblOrderDocP.strVendName AS VendName
,tblOrderDocP.strNotes AS Notes
,tblOrderDocP.decTotal AS Total
,tblOrderDocP.strCurrency AS Currency
,tblOrderDocP.decTotalF AS TotalF
,tblOrderDocP.decExchange AS Exchange
,tblOrderDocP.strTerm AS Term
,ISNULL((
SELECT COUNT(intLineNo)
FROM tblOrderDocPDT
WHERE strOrdPDocID = @DocNumber
), 0) AS LineCount
FROM tblOrderDocP
LEFT JOIN tblVendECom ON tblOrderDocP.strVendName = tblVendECom.strVendName
WHERE tblOrderDocP.strOrdPDocID = @DocNumber
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseOrderDocDTForESubmit] (@DocNumber NVARCHAR(100))
AS
BEGIN
SET NOCOUNT ON;
BEGIN
WITH tbtempInvVend
AS (
SELECT tblInvVend.strVendName
,tblInvVendPriceListsByDate.dteStartDate
,tblInvVend.strItemCode
,tblInvVend.strItemDesc
,tblInvVendPriceListsByDate.dteFinishDate
,tblInvVend.strPartNumber
,tblInvVend.strUnit
,tblInvVend.decPrice
,tblInvVend.bitPromotionalPricing
FROM tblInvVend
INNER JOIN tblInvVendPriceListsByDate ON tblInvVend.strVendName = tblInvVendPriceListsByDate.strVendName
AND tblInvVend.uidPriceBasedID = tblInvVendPriceListsByDate.uidPriceBasedID
)
SELECT tblOrderDocPDT.intLineNo AS [LineNo]
,tblOrderDocPDT.strPartNumber AS PartNumber
,CASE 
WHEN ISNULL(tbtempInvVend.strItemCode, '') = ''
THEN tblOrderDocPDT.strPartNumber
ELSE ISNULL(tbtempInvVend.strItemCode, '')
END AS ItemCode
,CASE 
WHEN ISNULL(tbtempInvVend.strItemDesc, '') = ''
THEN tblOrderDocPDT.strPartNumber
ELSE ISNULL(tbtempInvVend.strItemDesc, '')
END AS ItemDesc
,tblOrderDocPDT.decBuyQty AS BuyQty
,tblOrderDocPDT.strBuyUnit AS BuyUnit
,tblOrderDocPDT.decEaIncTax AS EaIncTax
,tblOrderDocP.strOrdPDocID AS OrdPDocID
FROM tblOrderDocP
INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
LEFT JOIN tbtempInvVend ON tblOrderDocPDT.strPartNumber = tbtempInvVend.strPartNumber
AND tblOrderDocP.strVendName = tbtempInvVend.strVendName
AND tblOrderDocPDT.strBuyUnit = tbtempInvVend.strUnit
AND tblOrderDocP.dteJournalDate BETWEEN tbtempInvVend.dteStartDate
AND tbtempInvVend.dteFinishDate
WHERE tblOrderDocPDT.strOrdPDocID = @DocNumber
AND tblOrderDocPDT.bitDiscountTax = 0
ORDER BY tblOrderDocPDT.intLineNo
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateSalesDocNo] (
@DocNumber NVARCHAR(50)
,@SalesDocNo NVARCHAR(50)
)
AS
BEGIN
UPDATE tblOrderDocP
SET strSalesDocNo = @SalesDocNo
WHERE strOrdPDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseInvoiceDataForESubmit] (@DocNumber NVARCHAR(100))
AS
BEGIN
SET NOCOUNT ON;
SELECT tblInvoiceDocP.strInvPDocID AS InvPDocID
,'PR' AS [Type]
,ISNULL(tblInvoiceDocP.strOrdPDocID, '') AS OrdPDocID
,tblInvoiceDocP.dteJournalDate AS JournalDate
,tblInvoiceDocP.strUserName AS UserName
,'' AS [Location]
FROM tblInvoiceDocP
WHERE strInvPDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseInvoiceDocDTForESubmit] (@DocNumber NVARCHAR(100))
AS
BEGIN
SET NOCOUNT ON;
SELECT tblInvoiceDocPDT.strInvPDocID AS InvPDocID
,tblInvoiceDocPDT.intLineNo AS [LineNo]
,tblInvoiceDocPDT.strPartNumber AS PartNumber
,tblInvoiceDocPDT.decBuyQty AS BuyQty
FROM tblInvoiceDocPDT
WHERE tblInvoiceDocPDT.bitDiscountTax = 0
AND strInvPDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetserialInvoiceDocPDTData] (@DocNumber NVARCHAR(100))
AS
BEGIN
SET NOCOUNT ON;
SELECT tblInvoiceDocPDTSerial.strInvPDocID AS InvPDocID
,tblInvoiceDocPDTSerial.intLineNo AS [LineNo]
,tblInvoiceDocPDT.strPartNumber AS PartNumber
,tblInvoiceDocPDTSerial.strSerialNumber AS SerialNumber
,tblInvoiceDocPDTSerial.decQty AS Qty
FROM tblInvoiceDocPDTSerial
INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocPDTSerial.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
AND tblInvoiceDocPDTSerial.intLineNo = tblInvoiceDocPDT.intLineNo
WHERE tblInvoiceDocPDTSerial.strInvPDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetJournalIdAP] (@DocNumber AS NVARCHAR(50) = NULL)
AS
BEGIN
DECLARE @AdjJournalID INT = 0
SET @AdjJournalID = (
SELECT lngJourID
FROM tblInvoiceDocP
WHERE strInvPDocID = @DocNumber
)
SELECT tblVendPay.lngJourID AS JournalId
,tblVendTrans.bitDocReRated AS IsDocReRated
,tblVendTransDT.bitReversed AS IsReversed
FROM tblVendTrans
INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
INNER JOIN tblVendPay ON tblVendTransDT.lngVendPayID = tblVendPay.lngVendPayID
WHERE (tblVendTrans.strInvPDocID = @DocNumber)
AND (tblVendPay.bitReversed = 0)
AND (tblVendTransDT.bitReversed = 0)
AND (tblVendPay.lngJourID <> @AdjJournalID)
UNION ALL
SELECT tblVendPay.lngJourID AS JournalId
,tblVendTrans.bitDocReRated AS IsDocReRated
,tblVendTransDT.bitReversed AS IsReversed
FROM tblVendTrans
INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
INNER JOIN tblVendPay ON tblVendTransDT.lngVendPayID = tblVendPay.lngVendPayID
WHERE (tblVendTrans.strInvPDocID = @DocNumber)
AND (tblVendTransDT.bitReversed = 1)
AND (tblVendPay.lngJourID = @AdjJournalID)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseInvoiceDocDTSerialData] @DocNumber AS NVARCHAR(50)
,@LineNumber AS INT
AS
BEGIN
SELECT tblInvoiceDocPDTSerial.strInvPDocID AS InvPDocID
,tblInvoiceDocPDTSerial.[intLineNo] AS [LineNo]
,tblInvoiceDocPDTSerial.[strSerialNumber] AS SerialNumber
,tblInvoiceDocPDTSerial.[decQty] AS Qty
,tblInvoiceDocPDTSerial.[strUnit] AS Unit
,tblInvoiceDocPDTSerial.[lngID] AS ID
,tblInvoiceDocPDTSerial.[bitExpiryDate] AS IsExpiryDate
,tblInvoiceDocPDTSerial.[dteExpiryDate] AS ExpiryDate
,tblInvoiceDocPDTSerial.[intSerialLotType] AS SerialLotType
,tblInvoiceDocPDTSerial.[lngBinID] AS BinIDLong
,CONVERT(NVARCHAR(52), CASE 
WHEN tblInvoiceDocPDTSerial.intSerialLotType = 0
THEN ISNULL(CAST(tblInvSerialExt.intStatus AS CHAR(1)) + tblInvSerialExt.strDocID, '')
ELSE ''
END) AS [Status]
,CONVERT(BIT, CASE 
WHEN tblInvoiceDocPDTSerial.intSerialLotType = 0
THEN ISNULL(tblInvSerialExt.bitDimensionExist, 0)
ELSE 0
END) AS IsDimensionExist
,CONVERT(NVARCHAR(MAX), CASE 
WHEN tblInvoiceDocPDTSerial.intSerialLotType = 0
THEN ISNULL(tblInvSerialExt.strDimension, '')
ELSE ''
END) AS Dimension
,ISNULL((
SELECT strBinCode
FROM tblInvLocBin
WHERE lngID = tblInvoiceDocPDTSerial.lngBinId
), '') AS BinCode
FROM tblInvoiceDocPDT
INNER JOIN tblInvoiceDocPDTSerial ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocPDTSerial.strInvPDocID
AND tblInvoiceDocPDT.intLineNo = tblInvoiceDocPDTSerial.intLineNo
LEFT JOIN tblInvSerialExt ON tblInvoiceDocPDT.strPartNumber = tblInvSerialExt.strPartNumber
AND tblInvoiceDocPDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
WHERE tblInvoiceDocPDT.strInvPDocID = @DocNumber
AND tblInvoiceDocPDT.intLineNo = @LineNumber
ORDER BY lngID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseHiddenColumns] @Part NVARCHAR(900)
,@Unit NVARCHAR(900)
AS
BEGIN
SELECT ISNULL(CASE strConversionType
WHEN 'Multiply'
THEN decConversionFactor
ELSE 1 / decConversionFactor
END, decBuyToStock) AS BuyToStock
,decLastPPUnit AS LastPPUnit
,decCostOnPO AS CostOnPO
,bitUseLPPOnPO AS UseLPPOnPO
FROM tblInv
LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
AND strFromUnit = @Unit
WHERE tblInv.strPartNumber = @Part
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateInventoryLastPPUnit] @PartNumber NVARCHAR(50)
,@LastPPUnit DECIMAL
AS
BEGIN
UPDATE tblInv
SET decLastPPUnit = @LastPPUnit
WHERE strPartNumber = @PartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertAdditionalCost] @InvPDocID VARCHAR(50)
,@LineNo INT
,@StockQty money
,@TotUnitCost money
,@AddCost money
,@TotLandedUnitCost money
,@Comment NVARCHAR(50)
,@UserName NVARCHAR(50)
,@SystemDate DATETIME
,@JournalDate DATETIME
AS
BEGIN
INSERT INTO tblInvoiceDocPDTAddCosts (
strInvPDocID
,intLineNo
,decStockQty
,decTotUnitCost
,decAddCost
,decTotLandedUnitCost
,strComment
,strUserName
,dteSystemDate
,dteJournalDate
)
VALUES (
@InvPDocID
,@LineNo
,@StockQty
,@TotUnitCost
,@AddCost
,@TotLandedUnitCost
,@Comment
,@UserName
,@SystemDate
,@JournalDate
)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateDocumentChangePurchases] (
@IsInvoice BIT
,@DocumentId AS VARCHAR(50)
,@Reference AS VARCHAR(50)
,@Notes AS VARCHAR(MAX)
,@VendInvNo AS VARCHAR(50)
,@AddInfo AS VARCHAR(50)
,@StatusTypeCode AS VARCHAR(20)
,@Field1 AS VARCHAR(100)
,@Field2 AS VARCHAR(100)
,@Field3 AS VARCHAR(100)
,@Field4 AS VARCHAR(100)
,@Field5 AS VARCHAR(100)
,@Field6 AS VARCHAR(100)
,@Field7 AS VARCHAR(100)
,@Field8 AS VARCHAR(100)
,@Field9 AS VARCHAR(100)
,@Field10 AS VARCHAR(100)
,@Field11 AS VARCHAR(100)
,@Field12 AS VARCHAR(100)
,@IsBookmark AS BIT
)
AS
BEGIN
IF (@IsInvoice = 1)
BEGIN
UPDATE tblInvoiceDocP
SET strNotes = @Notes
,strStatusTypeCode = @StatusTypeCode
,strField1 = @Field1
,strField2 = @Field2
,strField3 = @Field3
,strField4 = @Field4
,strField5 = @Field5
,strField6 = @Field6
,strField7 = @Field7
,strField8 = @Field8
,strField9 = @Field9
,strField10 = @Field10
,strField11 = @Field11
,strField12 = @Field12
,bitBookmark = @IsBookmark
,strAddInfo = @AddInfo
,strReference = @Reference
,strVendInvNo = @VendInvNo
WHERE strInvPDocID = @DocumentId
END
ELSE
BEGIN
UPDATE tblOrderDocP
SET strNotes = @Notes
,strStatusTypeCode = @StatusTypeCode
,strField1 = @Field1
,strField2 = @Field2
,strField3 = @Field3
,strField4 = @Field4
,strField5 = @Field5
,strField6 = @Field6
,strField7 = @Field7
,strField8 = @Field8
,strField9 = @Field9
,strField10 = @Field10
,strField11 = @Field11
,strField12 = @Field12
,bitBookmark = @IsBookmark
,strAddInfo = @AddInfo
,strReference = @Reference
WHERE strOrdPDocID = @DocumentId
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdatePurchasesPrint] (
@IsInvoice BIT
,@DocNumber AS VARCHAR(50)
)
AS
BEGIN
IF (@IsInvoice = 1)
BEGIN
UPDATE tblInvoiceDocP
SET bitPrinted = 1
WHERE strInvPDocID = @DocNumber
END
ELSE
BEGIN
UPDATE tblOrderDocP
SET bitPrinted = 1
WHERE strOrdPDocID = @DocNumber
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdatePurchasesEmail] (
@IsInvoice BIT
,@DocNumber AS VARCHAR(50)
)
AS
BEGIN
IF (@IsInvoice = 1)
BEGIN
UPDATE tblInvoiceDocP
SET bitEmailed = 1
WHERE strInvPDocID = @DocNumber
END
ELSE
BEGIN
UPDATE tblOrderDocP
SET bitEmailed = 1
WHERE strOrdPDocID = @DocNumber
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertToInvoiceREVAndInvoiceREVDTForPurchase] (
@DocNumber AS VARCHAR
,@tarnsactionType AS INT = NULL
)
AS
BEGIN
IF @tarnsactionType = 0
BEGIN
INSERT INTO [dbo].[tblInvoiceDocREV] (
[lngEntID]
,[strInvDocID]
,[lngInvTrackID]
,[lngJourID]
,[dteSystemDate]
,[dteJournalDate]
,[dteRequired]
,[strUsername]
,[strCustName]
,[strSoldTo]
,[strShipTo]
,[strReference]
,[decSubTotal]
,[decVAT]
,[decTotal]
,[bitFromSO]
,[strOrdDocID]
,[bitHistoryTrans]
,[strNotes]
,[bitPrinted]
,[bitEmailed]
,[intPaidBy]
,[intAccount]
,[strSalesName]
,[strAddInfo]
,[bitReserved]
,[strCurrency]
,[bitIsForeign]
,[decSubTotalF]
,[decVATF]
,[decTotalF]
,[decExchange]
,[strTerm]
,[intDept]
,[strField1]
,[strField2]
,[strField3]
,[strField4]
,[strField5]
,[strField6]
,[strField7]
,[strField8]
,[strField9]
,[strField10]
,[strField11]
,[strField12]
,[strSubFormated]
,[strVATFormatted]
,[strTotFormatted]
,[dteField13]
,[dteField14]
,[decDiscPerc]
,[decDiscAmt]
,[decDiscAmtF]
,[strDiscFormatted]
,[strOrdFQDocID]
,[strStatusTypeCode]
,[strCNReasonCode]
,[bitBookmark]
,[dteSystemDateTime]
,[strPaidBy]
,[intSentDoc]
,[strVAT]
,[strDelMethodCode]
,[decTotalWeight]
,[decTotalVolWeight]
,[decDeliveryCost]
,[decDeliveryCostF]
,[strDeliveryCostFormatted]
,[intRevisionNumber]
,[dteRevisionDate]
,[strUserCreated]
,[bitIsRepair]
,[strVendName]
,[strBoughtFrom]
,[bitFQConvert]
,[bitSOCopy]
,[bitSOCopyMulti]
,[strVendInvNo]
,[bitFromPO]
,[decNetItemWeight]
,[decNetVolumetricWeight]
,[strSourceMOP]
,[bitCleared]
,[strOrdRFQDocID]
,[bitRFQConvert]
,[strOrdPDocID]
,[intModule]
)
SELECT (
SELECT ISNULL(MAX([lngEntID]), 0)
FROM [dbo].[tblInvoiceDocREV]
) + (
row_number() OVER (
ORDER BY (
SELECT NULL
)
)
)
,[strInvPDocID]
,[lngInvTrackID]
,[lngJourID]
,[dteSystemDate]
,[dteJournalDate]
,[dteRequired]
,[strUserName]
,NULL
,NULL
,[strShipTo]
,[strReference]
,[decSubTotal]
,[decVAT]
,[decTotal]
,NULL
,NULL
,[bitHistoryTrans]
,[strNotes]
,[bitPrinted]
,[bitEmailed]
,[intPaidBy]
,[intAccount]
,NULL
,NULL
,NULL
,[strCurrency]
,[bitIsForeign]
,[decSubTotalF]
,[decVATF]
,[decTotalF]
,[decExchange]
,[strTerm]
,[intDept]
,[strField1]
,[strField2]
,[strField3]
,[strField4]
,[strField5]
,[strField6]
,[strField7]
,[strField8]
,[strField9]
,[strField10]
,[strField11]
,[strField12]
,[strSubFormated]
,[strVATFormatted]
,[strTotFormatted]
,NULL
,NULL
,[decDiscPerc]
,[decDiscAmt]
,[decDiscAmtF]
,[strDiscFormatted]
,[strOrdFQDocID]
,[strStatusTypeCode]
,NULL
,[bitBookmark]
,[dteSystemDate]
,[strPaidBy]
,NULL
,NULL
,NULL
,NULL
,NULL
,0
,0
,NULL
,1
,[dteSystemDate]
,[strUserName]
,NULL
,[strVendName]
,NULL
,[bitFQConvert]
,[bitSOCopy]
,[bitSOCopyMulti]
,[strVendInvNo]
,[bitFromPO]
,[decNetItemWeight]
,[decNetVolumetricWeight]
,[strSourceMOP]
,NULL
,NULL
,NULL
,[strOrdPDocID]
,4
FROM [dbo].[tblInvoiceDocP]
WHERE [strInvPDocID] = @DocNumber
INSERT INTO [dbo].[tblInvoiceDocREVDT] (
[lngEntID]
,[strInvDocID]
,[intLineNo]
,[strPartNumber]
,[strLocation]
,[strPartDesc]
,[decQty]
,[strUnit]
,[intType]
,[decPriceEaExc]
,[decLineTotExc]
,[decLineTaxAmt]
,[decPriceEaInc]
,[decLineTotInc]
,[strTaxCode]
,[imgTaxObj]
,[strCurrency]
,[bitIsForeign]
,[decPriceEaExcF]
,[decLineTotExcF]
,[decLineTaxAmtF]
,[decEaIncTaxF]
,[decTotIncTaxF]
,[strInvField1]
,[strInvField2]
,[strInvField3]
,[strInvField4]
,[strInvField5]
,[strInvField6]
,[strLineField1]
,[strLineField2]
,[strLineField3]
,[strLineField4]
,[strLineField5]
,[strLineField6]
,[strLineField7]
,[strLineField8]
,[strLineField9]
,[strLineField10]
,[strLineField11]
,[strLineField12]
,[decLineDiscPerc]
,[decLineDiscAmt]
,[decLineDiscAmtF]
,[bitDiscountTax]
,[decStockQty]
,[strStockUnit]
,[decStandardCost]
,[decLastPPUnit]
,[strSalesName]
,[decCOGS]
,[decSOQty]
,[decSOQtyRemain]
,[strPartExtendedDesc]
,[decItemWeight]
,[decVolumetricWeight]
,[bitContainerItem]
,[decBuyQty]
,[decBuyQtyRemain]
,[strBuyUnit]
,[decEaIncTax]
,[decTotIncTax]
,[strOrdSODocID]
,[decStockQtyRemain]
,[decBuyoutCost]
,[decQtyRemaining]
,[intStatus]
,[uidTransactionFieldID]
)
SELECT rev.[lngEntID]
,[strInvPDocID]
,[intLineNo]
,[strPartNumber]
,[strLocation]
,[strPartDesc]
,NULL
,NULL
,[intType]
,[decPriceEaExc]
,[decLineTotExc]
,[decLineTaxAmt]
,NULL
,NULL
,[strTaxCode]
,[imgTaxObj]
,dt.[strCurrency]
,dt.[bitIsForeign]
,[decPriceEaExcF]
,[decLineTotExcF]
,[decLineTaxAmtF]
,[decEaIncTaxF]
,[decTotIncTaxF]
,[strInvField1]
,[strInvField2]
,[strInvField3]
,[strInvField4]
,[strInvField5]
,[strInvField6]
,[strLineField1]
,[strLineField2]
,[strLineField3]
,[strLineField4]
,[strLineField5]
,[strLineField6]
,[strLineField7]
,[strLineField8]
,[strLineField9]
,[strLineField10]
,[strLineField11]
,[strLineField12]
,[decLineDiscPerc]
,[decLineDiscAmt]
,[decLineDiscAmtF]
,[bitDiscountTax]
,[decStockQty]
,[strStockUnit]
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,[strPartExtendedDesc]
,[decItemWeight]
,[decVolumetricWeight]
,NULL
,[decBuyQty]
,NULL
,[strBuyUnit]
,[decEaIncTax]
,[decTotIncTax]
,[strOrdSODocID]
,NULL
,NULL
,NULL
,1
,dt.[uidTransactionFieldID]
FROM [dbo].[tblInvoiceDocPDT] dt
INNER JOIN [dbo].[tblInvoiceDocREV] rev ON dt.[strInvPDocID] = rev.[strInvDocID]
WHERE dt.[strInvPDocID] = @DocNumber
END
IF @tarnsactionType = 1
BEGIN
INSERT INTO [dbo].[tblInvoiceDocREV] (
[lngEntID]
,[strInvDocID]
,[lngInvTrackID]
,[lngJourID]
,[dteSystemDate]
,[dteJournalDate]
,[dteRequired]
,[strUsername]
,[strCustName]
,[strSoldTo]
,[strShipTo]
,[strReference]
,[decSubTotal]
,[decVAT]
,[decTotal]
,[bitFromSO]
,[strOrdDocID]
,[bitHistoryTrans]
,[strNotes]
,[bitPrinted]
,[bitEmailed]
,[intPaidBy]
,[intAccount]
,[strSalesName]
,[strAddInfo]
,[bitReserved]
,[strCurrency]
,[bitIsForeign]
,[decSubTotalF]
,[decVATF]
,[decTotalF]
,[decExchange]
,[strTerm]
,[intDept]
,[strField1]
,[strField2]
,[strField3]
,[strField4]
,[strField5]
,[strField6]
,[strField7]
,[strField8]
,[strField9]
,[strField10]
,[strField11]
,[strField12]
,[strSubFormated]
,[strVATFormatted]
,[strTotFormatted]
,[dteField13]
,[dteField14]
,[decDiscPerc]
,[decDiscAmt]
,[decDiscAmtF]
,[strDiscFormatted]
,[strOrdFQDocID]
,[strStatusTypeCode]
,[strCNReasonCode]
,[bitBookmark]
,[dteSystemDateTime]
,[strPaidBy]
,[intSentDoc]
,[strVAT]
,[strDelMethodCode]
,[decTotalWeight]
,[decTotalVolWeight]
,[decDeliveryCost]
,[decDeliveryCostF]
,[strDeliveryCostFormatted]
,[intRevisionNumber]
,[dteRevisionDate]
,[strUserCreated]
,[bitIsRepair]
,[strVendName]
,[strBoughtFrom]
,[bitFQConvert]
,[bitSOCopy]
,[bitSOCopyMulti]
,[strVendInvNo]
,[bitFromPO]
,[decNetItemWeight]
,[decNetVolumetricWeight]
,[strSourceMOP]
,[bitCleared]
,[strOrdRFQDocID]
,[bitRFQConvert]
,[strOrdPDocID]
,[intModule]
)
SELECT (
SELECT ISNULL(MAX([lngEntID]), 0)
FROM [dbo].[tblInvoiceDocREV]
) + (
row_number() OVER (
ORDER BY (
SELECT NULL
)
)
)
,[strOrdPDocID]
,NULL
,NULL
,[dteSystemDate]
,[dteJournalDate]
,[dteRequired]
,[strUserName]
,NULL
,NULL
,[strShipTo]
,[strReference]
,[decSubTotal]
,[decVAT]
,[decTotal]
,NULL
,NULL
,NULL
,[strNotes]
,[bitPrinted]
,[bitEmailed]
,NULL
,NULL
,NULL
,[strAddInfo]
,NULL
,[strCurrency]
,[bitIsForeign]
,[decSubTotalF]
,[decVATF]
,[decTotalF]
,[decExchange]
,[strTerm]
,[intDept]
,[strField1]
,[strField2]
,[strField3]
,[strField4]
,[strField5]
,[strField6]
,[strField7]
,[strField8]
,[strField9]
,[strField10]
,[strField11]
,[strField12]
,[strSubFormated]
,[strVATFormatted]
,[strTotFormatted]
,NULL
,NULL
,[decDiscPerc]
,[decDiscAmt]
,[decDiscAmtF]
,[strDiscFormatted]
,[strOrdFQDocID]
,[strStatusTypeCode]
,NULL
,[bitBookmark]
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,0
,0
,NULL
,1
,[dteSystemDate]
,[strUserName]
,NULL
,[strVendName]
,[strBoughtFrom]
,[bitFQConvert]
,[bitSOCopy]
,[bitSOCopyMulti]
,NULL
,NULL
,[decNetItemWeight]
,[decNetVolumetricWeight]
,NULL
,[bitCleared]
,[strOrdRFQDocID]
,[bitRFQConvert]
,NULL
,5
FROM [dbo].[tblOrderDocP]
WHERE [strOrdPDocID] = @DocNumber
INSERT INTO [dbo].[tblInvoiceDocREVDT] (
[lngEntID]
,[strInvDocID]
,[intLineNo]
,[strPartNumber]
,[strLocation]
,[strPartDesc]
,[decQty]
,[strUnit]
,[intType]
,[decPriceEaExc]
,[decLineTotExc]
,[decLineTaxAmt]
,[decPriceEaInc]
,[decLineTotInc]
,[strTaxCode]
,[imgTaxObj]
,[strCurrency]
,[bitIsForeign]
,[decPriceEaExcF]
,[decLineTotExcF]
,[decLineTaxAmtF]
,[decEaIncTaxF]
,[decTotIncTaxF]
,[strInvField1]
,[strInvField2]
,[strInvField3]
,[strInvField4]
,[strInvField5]
,[strInvField6]
,[strLineField1]
,[strLineField2]
,[strLineField3]
,[strLineField4]
,[strLineField5]
,[strLineField6]
,[strLineField7]
,[strLineField8]
,[strLineField9]
,[strLineField10]
,[strLineField11]
,[strLineField12]
,[decLineDiscPerc]
,[decLineDiscAmt]
,[decLineDiscAmtF]
,[bitDiscountTax]
,[decStockQty]
,[strStockUnit]
,[decStandardCost]
,[decLastPPUnit]
,[strSalesName]
,[decCOGS]
,[decSOQty]
,[decSOQtyRemain]
,[strPartExtendedDesc]
,[decItemWeight]
,[decVolumetricWeight]
,[bitContainerItem]
,[decBuyQty]
,[decBuyQtyRemain]
,[strBuyUnit]
,[decEaIncTax]
,[decTotIncTax]
,[strOrdSODocID]
,[decStockQtyRemain]
,[decBuyoutCost]
,[decQtyRemaining]
,[intStatus]
,[uidTransactionFieldID]
)
SELECT rev.[lngEntID]
,dt.[strOrdPDocID]
,[intLineNo]
,[strPartNumber]
,[strLocation]
,[strPartDesc]
,NULL
,NULL
,[intType]
,[decPriceEaExc]
,[decLineTotExc]
,[decLineTaxAmt]
,NULL
,NULL
,[strTaxCode]
,[imgTaxObj]
,dt.[strCurrency]
,dt.[bitIsForeign]
,[decPriceEaExcF]
,[decLineTotExcF]
,[decLineTaxAmtF]
,[decEaIncTaxF]
,[decTotIncTaxF]
,[strInvField1]
,[strInvField2]
,[strInvField3]
,[strInvField4]
,[strInvField5]
,[strInvField6]
,[strLineField1]
,[strLineField2]
,[strLineField3]
,[strLineField4]
,[strLineField5]
,[strLineField6]
,[strLineField7]
,[strLineField8]
,[strLineField9]
,[strLineField10]
,[strLineField11]
,[strLineField12]
,[decLineDiscPerc]
,[decLineDiscAmt]
,[decLineDiscAmtF]
,[bitDiscountTax]
,[decStockQty]
,[strStockUnit]
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,[strPartExtendedDesc]
,[decItemWeight]
,[decVolumetricWeight]
,NULL
,[decBuyQty]
,[decBuyQtyRemain]
,[strBuyUnit]
,[decEaIncTax]
,[decTotIncTax]
,[strOrdSODocID]
,[decStockQtyRemain]
,NULL
,NULL
,1
,dt.[uidTransactionFieldID]
FROM [dbo].[tblOrderDocPDT] dt
INNER JOIN [dbo].[tblInvoiceDocREV] rev ON dt.[strOrdPDocID] = rev.[strInvDocID]
WHERE dt.[strOrdPDocID] = @DocNumber
END
IF @tarnsactionType = 2
BEGIN
INSERT INTO [dbo].[tblInvoiceDocREV] (
[lngEntID]
,[strInvDocID]
,[lngInvTrackID]
,[lngJourID]
,[dteSystemDate]
,[dteJournalDate]
,[dteRequired]
,[strUsername]
,[strCustName]
,[strSoldTo]
,[strShipTo]
,[strReference]
,[decSubTotal]
,[decVAT]
,[decTotal]
,[bitFromSO]
,[strOrdDocID]
,[bitHistoryTrans]
,[strNotes]
,[bitPrinted]
,[bitEmailed]
,[intPaidBy]
,[intAccount]
,[strSalesName]
,[strAddInfo]
,[bitReserved]
,[strCurrency]
,[bitIsForeign]
,[decSubTotalF]
,[decVATF]
,[decTotalF]
,[decExchange]
,[strTerm]
,[intDept]
,[strField1]
,[strField2]
,[strField3]
,[strField4]
,[strField5]
,[strField6]
,[strField7]
,[strField8]
,[strField9]
,[strField10]
,[strField11]
,[strField12]
,[strSubFormated]
,[strVATFormatted]
,[strTotFormatted]
,[dteField13]
,[dteField14]
,[decDiscPerc]
,[decDiscAmt]
,[decDiscAmtF]
,[strDiscFormatted]
,[strOrdFQDocID]
,[strStatusTypeCode]
,[strCNReasonCode]
,[bitBookmark]
,[dteSystemDateTime]
,[strPaidBy]
,[intSentDoc]
,[strVAT]
,[strDelMethodCode]
,[decTotalWeight]
,[decTotalVolWeight]
,[decDeliveryCost]
,[decDeliveryCostF]
,[strDeliveryCostFormatted]
,[intRevisionNumber]
,[dteRevisionDate]
,[strUserCreated]
,[bitIsRepair]
,[strVendName]
,[strBoughtFrom]
,[bitFQConvert]
,[bitSOCopy]
,[bitSOCopyMulti]
,[strVendInvNo]
,[bitFromPO]
,[decNetItemWeight]
,[decNetVolumetricWeight]
,[strSourceMOP]
,[bitCleared]
,[strOrdRFQDocID]
,[bitRFQConvert]
,[strOrdPDocID]
,[intModule]
)
SELECT (
SELECT ISNULL(MAX([lngEntID]), 0)
FROM [dbo].[tblInvoiceDocREV]
) + (
row_number() OVER (
ORDER BY (
SELECT NULL
)
)
)
,[strOrdPDocID]
,NULL
,NULL
,[dteSystemDate]
,[dteJournalDate]
,[dteRequired]
,[strUserName]
,NULL
,NULL
,[strShipTo]
,[strReference]
,[decSubTotal]
,[decVAT]
,[decTotal]
,NULL
,NULL
,NULL
,[strNotes]
,[bitPrinted]
,[bitEmailed]
,NULL
,NULL
,NULL
,[strAddInfo]
,NULL
,[strCurrency]
,[bitIsForeign]
,[decSubTotalF]
,[decVATF]
,[decTotalF]
,[decExchange]
,[strTerm]
,[intDept]
,[strField1]
,[strField2]
,[strField3]
,[strField4]
,[strField5]
,[strField6]
,[strField7]
,[strField8]
,[strField9]
,[strField10]
,[strField11]
,[strField12]
,[strSubFormated]
,[strVATFormatted]
,[strTotFormatted]
,NULL
,NULL
,[decDiscPerc]
,[decDiscAmt]
,[decDiscAmtF]
,[strDiscFormatted]
,[strOrdFQDocID]
,[strStatusTypeCode]
,NULL
,[bitBookmark]
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,0
,0
,NULL
,1
,[dteSystemDate]
,[strUserName]
,NULL
,[strVendName]
,[strBoughtFrom]
,[bitFQConvert]
,[bitSOCopy]
,[bitSOCopyMulti]
,NULL
,NULL
,[decNetItemWeight]
,[decNetVolumetricWeight]
,NULL
,[bitCleared]
,[strOrdRFQDocID]
,[bitRFQConvert]
,NULL
,6
FROM [dbo].[tblOrderDocP]
WHERE [strOrdPDocID] = @DocNumber
INSERT INTO [dbo].[tblInvoiceDocREVDT] (
[lngEntID]
,[strInvDocID]
,[intLineNo]
,[strPartNumber]
,[strLocation]
,[strPartDesc]
,[decQty]
,[strUnit]
,[intType]
,[decPriceEaExc]
,[decLineTotExc]
,[decLineTaxAmt]
,[decPriceEaInc]
,[decLineTotInc]
,[strTaxCode]
,[imgTaxObj]
,[strCurrency]
,[bitIsForeign]
,[decPriceEaExcF]
,[decLineTotExcF]
,[decLineTaxAmtF]
,[decEaIncTaxF]
,[decTotIncTaxF]
,[strInvField1]
,[strInvField2]
,[strInvField3]
,[strInvField4]
,[strInvField5]
,[strInvField6]
,[strLineField1]
,[strLineField2]
,[strLineField3]
,[strLineField4]
,[strLineField5]
,[strLineField6]
,[strLineField7]
,[strLineField8]
,[strLineField9]
,[strLineField10]
,[strLineField11]
,[strLineField12]
,[decLineDiscPerc]
,[decLineDiscAmt]
,[decLineDiscAmtF]
,[bitDiscountTax]
,[decStockQty]
,[strStockUnit]
,[decStandardCost]
,[decLastPPUnit]
,[strSalesName]
,[decCOGS]
,[decSOQty]
,[decSOQtyRemain]
,[strPartExtendedDesc]
,[decItemWeight]
,[decVolumetricWeight]
,[bitContainerItem]
,[decBuyQty]
,[decBuyQtyRemain]
,[strBuyUnit]
,[decEaIncTax]
,[decTotIncTax]
,[strOrdSODocID]
,[decStockQtyRemain]
,[decBuyoutCost]
,[decQtyRemaining]
,[intStatus]
,[uidTransactionFieldID]
)
SELECT rev.[lngEntID]
,dt.[strOrdPDocID]
,[intLineNo]
,[strPartNumber]
,[strLocation]
,[strPartDesc]
,NULL
,NULL
,[intType]
,[decPriceEaExc]
,[decLineTotExc]
,[decLineTaxAmt]
,NULL
,NULL
,[strTaxCode]
,[imgTaxObj]
,dt.[strCurrency]
,dt.[bitIsForeign]
,[decPriceEaExcF]
,[decLineTotExcF]
,[decLineTaxAmtF]
,[decEaIncTaxF]
,[decTotIncTaxF]
,[strInvField1]
,[strInvField2]
,[strInvField3]
,[strInvField4]
,[strInvField5]
,[strInvField6]
,[strLineField1]
,[strLineField2]
,[strLineField3]
,[strLineField4]
,[strLineField5]
,[strLineField6]
,[strLineField7]
,[strLineField8]
,[strLineField9]
,[strLineField10]
,[strLineField11]
,[strLineField12]
,[decLineDiscPerc]
,[decLineDiscAmt]
,[decLineDiscAmtF]
,[bitDiscountTax]
,[decStockQty]
,[strStockUnit]
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,[strPartExtendedDesc]
,[decItemWeight]
,[decVolumetricWeight]
,NULL
,[decBuyQty]
,[decBuyQtyRemain]
,[strBuyUnit]
,[decEaIncTax]
,[decTotIncTax]
,[strOrdSODocID]
,[decStockQtyRemain]
,NULL
,NULL
,1
,dt.[uidTransactionFieldID]
FROM [dbo].[tblOrderDocPDT] dt
INNER JOIN [dbo].[tblInvoiceDocREV] rev ON dt.[strOrdPDocID] = rev.[strInvDocID]
WHERE dt.[strOrdPDocID] = @DocNumber
END
IF @tarnsactionType = 3
BEGIN
INSERT INTO [dbo].[tblInvoiceDocREV] (
[lngEntID]
,[strInvDocID]
,[lngInvTrackID]
,[lngJourID]
,[dteSystemDate]
,[dteJournalDate]
,[dteRequired]
,[strUsername]
,[strCustName]
,[strSoldTo]
,[strShipTo]
,[strReference]
,[decSubTotal]
,[decVAT]
,[decTotal]
,[bitFromSO]
,[strOrdDocID]
,[bitHistoryTrans]
,[strNotes]
,[bitPrinted]
,[bitEmailed]
,[intPaidBy]
,[intAccount]
,[strSalesName]
,[strAddInfo]
,[bitReserved]
,[strCurrency]
,[bitIsForeign]
,[decSubTotalF]
,[decVATF]
,[decTotalF]
,[decExchange]
,[strTerm]
,[intDept]
,[strField1]
,[strField2]
,[strField3]
,[strField4]
,[strField5]
,[strField6]
,[strField7]
,[strField8]
,[strField9]
,[strField10]
,[strField11]
,[strField12]
,[strSubFormated]
,[strVATFormatted]
,[strTotFormatted]
,[dteField13]
,[dteField14]
,[decDiscPerc]
,[decDiscAmt]
,[decDiscAmtF]
,[strDiscFormatted]
,[strOrdFQDocID]
,[strStatusTypeCode]
,[strCNReasonCode]
,[bitBookmark]
,[dteSystemDateTime]
,[strPaidBy]
,[intSentDoc]
,[strVAT]
,[strDelMethodCode]
,[decTotalWeight]
,[decTotalVolWeight]
,[decDeliveryCost]
,[decDeliveryCostF]
,[strDeliveryCostFormatted]
,[intRevisionNumber]
,[dteRevisionDate]
,[strUserCreated]
,[bitIsRepair]
,[strVendName]
,[strBoughtFrom]
,[bitFQConvert]
,[bitSOCopy]
,[bitSOCopyMulti]
,[strVendInvNo]
,[bitFromPO]
,[decNetItemWeight]
,[decNetVolumetricWeight]
,[strSourceMOP]
,[bitCleared]
,[strOrdRFQDocID]
,[bitRFQConvert]
,[strOrdPDocID]
,[intModule]
)
SELECT (
SELECT ISNULL(MAX([lngEntID]), 0)
FROM [dbo].[tblInvoiceDocREV]
) + (
row_number() OVER (
ORDER BY (
SELECT NULL
)
)
)
,[strInvPDocID]
,[lngInvTrackID]
,[lngJourID]
,[dteSystemDate]
,[dteJournalDate]
,[dteRequired]
,[strUserName]
,NULL
,NULL
,[strShipTo]
,[strReference]
,[decSubTotal]
,[decVAT]
,[decTotal]
,NULL
,[bitHistoryTrans]
,NULL
,[strNotes]
,[bitPrinted]
,[bitEmailed]
,[intPaidBy]
,[intAccount]
,NULL
,NULL
,NULL
,[strCurrency]
,[bitIsForeign]
,[decSubTotalF]
,[decVATF]
,[decTotalF]
,[decExchange]
,[strTerm]
,[intDept]
,[strField1]
,[strField2]
,[strField3]
,[strField4]
,[strField5]
,[strField6]
,[strField7]
,[strField8]
,[strField9]
,[strField10]
,[strField11]
,[strField12]
,[strSubFormated]
,[strVATFormatted]
,[strTotFormatted]
,NULL
,NULL
,[decDiscPerc]
,[decDiscAmt]
,[decDiscAmtF]
,[strDiscFormatted]
,[strOrdFQDocID]
,[strStatusTypeCode]
,NULL
,[bitBookmark]
,[dteSystemDate]
,[strPaidBy]
,NULL
,NULL
,NULL
,NULL
,NULL
,0
,0
,NULL
,1
,[dteSystemDate]
,[strUserName]
,NULL
,[strVendName]
,NULL
,[bitFQConvert]
,[bitSOCopy]
,[bitSOCopyMulti]
,[strVendInvNo]
,[bitFromPO]
,[decNetItemWeight]
,[decNetVolumetricWeight]
,[strSourceMOP]
,NULL
,NULL
,NULL
,[strOrdPDocID]
,9
FROM [dbo].[tblInvoiceDocP]
WHERE [strInvPDocID] = @DocNumber
INSERT INTO [dbo].[tblInvoiceDocREVDT] (
[lngEntID]
,[strInvDocID]
,[intLineNo]
,[strPartNumber]
,[strLocation]
,[strPartDesc]
,[decQty]
,[strUnit]
,[intType]
,[decPriceEaExc]
,[decLineTotExc]
,[decLineTaxAmt]
,[decPriceEaInc]
,[decLineTotInc]
,[strTaxCode]
,[imgTaxObj]
,[strCurrency]
,[bitIsForeign]
,[decPriceEaExcF]
,[decLineTotExcF]
,[decLineTaxAmtF]
,[decEaIncTaxF]
,[decTotIncTaxF]
,[strInvField1]
,[strInvField2]
,[strInvField3]
,[strInvField4]
,[strInvField5]
,[strInvField6]
,[strLineField1]
,[strLineField2]
,[strLineField3]
,[strLineField4]
,[strLineField5]
,[strLineField6]
,[strLineField7]
,[strLineField8]
,[strLineField9]
,[strLineField10]
,[strLineField11]
,[strLineField12]
,[decLineDiscPerc]
,[decLineDiscAmt]
,[decLineDiscAmtF]
,[bitDiscountTax]
,[decStockQty]
,[strStockUnit]
,[decStandardCost]
,[decLastPPUnit]
,[strSalesName]
,[decCOGS]
,[decSOQty]
,[decSOQtyRemain]
,[strPartExtendedDesc]
,[decItemWeight]
,[decVolumetricWeight]
,[bitContainerItem]
,[decBuyQty]
,[decBuyQtyRemain]
,[strBuyUnit]
,[decEaIncTax]
,[decTotIncTax]
,[strOrdSODocID]
,[decStockQtyRemain]
,[decBuyoutCost]
,[decQtyRemaining]
,[intStatus]
,[uidTransactionFieldID]
)
SELECT rev.[lngEntID]
,[strInvPDocID]
,[intLineNo]
,[strPartNumber]
,[strLocation]
,[strPartDesc]
,NULL
,NULL
,[intType]
,[decPriceEaExc]
,[decLineTotExc]
,[decLineTaxAmt]
,NULL
,NULL
,[strTaxCode]
,[imgTaxObj]
,dt.[strCurrency]
,dt.[bitIsForeign]
,[decPriceEaExcF]
,[decLineTotExcF]
,[decLineTaxAmtF]
,[decEaIncTaxF]
,[decTotIncTaxF]
,[strInvField1]
,[strInvField2]
,[strInvField3]
,[strInvField4]
,[strInvField5]
,[strInvField6]
,[strLineField1]
,[strLineField2]
,[strLineField3]
,[strLineField4]
,[strLineField5]
,[strLineField6]
,[strLineField7]
,[strLineField8]
,[strLineField9]
,[strLineField10]
,[strLineField11]
,[strLineField12]
,[decLineDiscPerc]
,[decLineDiscAmt]
,[decLineDiscAmtF]
,[bitDiscountTax]
,[decStockQty]
,[strStockUnit]
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,[strPartExtendedDesc]
,[decItemWeight]
,[decVolumetricWeight]
,NULL
,[decBuyQty]
,NULL
,[strBuyUnit]
,[decEaIncTax]
,[decTotIncTax]
,[strOrdSODocID]
,NULL
,NULL
,NULL
,1
,dt.[uidTransactionFieldID]
FROM [dbo].[tblInvoiceDocPDT] dt
INNER JOIN [dbo].[tblInvoiceDocREV] rev ON dt.[strInvPDocID] = rev.[strInvDocID]
WHERE dt.[strInvPDocID] = @DocNumber
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchasesPriceData] (
@Part AS NVARCHAR(100)
,@VendName AS NVARCHAR(50)
,@Date DATETIME
,@TransactionType NVARCHAR(100)
)
AS
BEGIN
;
WITH data1
AS (
SELECT TOP 1 tblInvVend.strPartNumber
,tblInvVend.strVendName
,tblInvVend.strUnit
,tblInvVend.lngID
,tblInvVend.decPrice
,tblInvVend.bitPromotionalPricing
,tblInvVendPromotionalPrice.dtePromotionalStartDate
,tblInvVendPromotionalPrice.dtePromotionalEndDate
,tblInvVendPromotionalPrice.decPromotionalPrice
FROM tblInvVend
INNER JOIN tblInvVendPriceListsByDate ON tblInvVend.uidPriceBasedID = tblInvVendPriceListsByDate.uidPriceBasedID
AND @Date BETWEEN tblInvVendPriceListsByDate.dteStartDate
AND tblInvVendPriceListsByDate.dteFinishDate
AND tblInvVendPriceListsByDate.bitInactive = 0
AND tblInvVend.strPartNumber = @Part
AND tblInvVend.strVendName = @VendName
LEFT JOIN tblInvVendPromotionalPrice ON tblInvVend.lngID = tblInvVendPromotionalPrice.lngId
AND Cast(@Date AS DATE) BETWEEN Cast(tblInvVendPromotionalPrice.dtePromotionalStartDate AS DATE)
AND Cast(tblInvVendPromotionalPrice.dtePromotionalEndDate AS DATE)
AND tblInvVendPromotionalPrice.decPromotionalPrice IN (
SELECT Max(prom.decPromotionalPrice)
FROM tblInvVendPromotionalPrice prom
WHERE prom.lngID = tblInvVendPromotionalPrice.lngId
AND Cast(@Date AS DATE) BETWEEN Cast(prom.dtePromotionalStartDate AS DATE)
AND Cast(prom.dtePromotionalEndDate AS DATE)
)
)
SELECT tblInvPrice.strPricelist	as Pricelist
,CASE 
WHEN data1.decPrice IS NULL
THEN CASE 
WHEN tblInv.bitUseLPPOnPO = 1
THEN tblInv.decLastPPUnit
ELSE 0
END
ELSE data1.decPrice
END AS Selling
,CONVERT(DATE, tblPriceListsByDate.dteStartDate) AS StartDate
,CONVERT(DATE, tblPriceListsByDate.dteFinishDate) AS EndDate
,tblInvPrice.strUnit as Unit
,ISNULL(tblInvUOMs.decConversionFactor, 1)	as ConversionFactor
,ISNULL(tblInvUOMs.strConversionType, 'Multiply') as ConversionType
,ISNULL(CASE strConversionType
WHEN 'Multiply'
THEN decConversionFactor
ELSE 1 / decConversionFactor
END, tblInv.decSellFromStock)
,tblInvPrice.bitStockUnit
,data1.bitPromotionalPricing	as IsPromotionalPrice
,data1.decPromotionalPrice	  as PromotionalPrice
,data1.dtePromotionalStartDate	 as PromotionalStartDate
,data1.dtePromotionalEndDate   as PromotionalEndDate
FROM tblInv
INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
INNER JOIN tblPriceListsByDate ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber
AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
AND tblInvUOMs.bitInactive = 0
LEFT JOIN data1 ON data1.strPartNumber = tblInv.strPartNumber
AND tblInvPrice.strUnit = data1.strUnit
WHERE (tblInvPrice.strPartNumber = @Part)
AND (
(
tblInvUOMs.strUseFor = @TransactionType
OR tblInvUOMs.strUseFor = 'Both'
)
OR tblInvPrice.bitStockUnit = 1
)
AND (tblInvPrice.strPricelist = 'REGULAR')
AND (
@Date BETWEEN tblPriceListsByDate.dteStartDate
AND tblPriceListsByDate.dteFinishDate
)
UNION ALL
SELECT NULL AS Pricelist
,CASE 
WHEN data1.decPrice IS NULL
THEN CASE 
WHEN tblInv.bitUseLPPOnPO = 1
THEN tblInv.decLastPPUnit
ELSE 0
END
ELSE data1.decPrice
END AS Selling
,Convert(Date,getdate()) AS StartDate
,Convert(Date,getdate()) EndDate
,tblInvUOMs.strFromUnit AS  Unit
,ISNULL(tblInvUOMs.decConversionFactor, 1)	as ConversionFactor
,ISNULL(tblInvUOMs.strConversionType, 'Multiply')	as ConversionType
,ISNULL(CASE strConversionType
WHEN 'Multiply'
THEN decConversionFactor
ELSE 1 / decConversionFactor
END, tblInv.decSellFromStock)
,0 AS bitStockUnit
,data1.bitPromotionalPricing as IsPromotionalPrice
,data1.decPromotionalPrice as PromotionalPrice
,data1.dtePromotionalStartDate as PromotionalStartDate
,data1.dtePromotionalEndDate  as PromotionalEndDate
FROM tblInv
INNER JOIN tblInvUOMs(NOLOCK) ON tblInvUOMs.strPartNumber = tblInv.strPartNumber
AND tblInvUOMS.bitInactive = 0
LEFT JOIN data1 ON data1.strPartNumber = tblInvUOMs.strPartNumber
AND tblInvUOMS.strFromUnit = data1.strUnit
WHERE (tblInv.strPartNumber = @Part)
AND (tblInvUOMs.strUseFor = @TransactionType)
ORDER BY Pricelist DESC
,StartDate DESC
,bitStockUnit DESC
,Unit
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchasesPriceDataList] (@Part AS NVARCHAR(100))
AS
BEGIN
SELECT tblInvPrice.strPricelist AS Pricelist
,tblInvPrice.decSelling AS Selling
,tblPricelists.intPriceListType AS PriceListType
,tblPriceListsByDate.dteStartDate AS StartDate
,tblPriceListsByDate.dteFinishDate AS EndDate
,tblInvPrice.uidPriceBasedID AS PriceBasedID
FROM tblInvPrice
INNER JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist
AND tblInvPrice.uidPriceBasedID = tblPricelists.uidPriceBasedID
INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblPricelists.uidPriceBasedID
INNER JOIN tblPriceData ON tblPriceData.strPricelist = tblPricelists.strPricelist
WHERE (tblInvPrice.strPartNumber = @Part)
AND tblPriceData.bitInactive = 0
ORDER BY tblInvPrice.strPricelist
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchasesInvSerialTypeData] (
	@PartNumber AS NVARCHAR(100)
	,@Quantity AS MONEY
	,@IsDimension AS BIT
	)
AS
BEGIN
	SELECT tblInv.bitInvSerialType AS IsInvSerialType
		,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
		,ISNULL(tblInvSerialTypes.intMin, 0) AS [Min]
		,ISNULL(tblInvSerialTypes.intMax, 0) AS [Max]
		,ISNULL(tblInvSerialTypes.intFormat, 0) AS [Format]
		,ISNULL(tblInvSerialTypes.intType, 0) AS [Type]
		,ISNULL(tblInvSerialTypes.bitTrackExpiryDate, 0) AS IsTrackExpiryDate
		,ISNULL(tblInvSerialTypes.intExpiryDateAuthGRV, 0) AS ExpiryDateAuthGRV
		,ISNULL(tblInvSerialTypes.strInvSerialType, '') AS InvSerialType
		,CASE 
			WHEN (@IsDimension = 1)
				THEN ISNULL(tblInvSerialTypes.strDimProCode, '')
			ELSE ''
			END AS DimProCode
		,CASE 
			WHEN (@Quantity < 0)
				THEN ISNULL(tblInvSerialTypes.intExpiryDateAuthDN, 0)
			ELSE ISNULL(tblInvSerialTypes.intExpiryDateAuthPI, 0)
			END AS ExpiryDateAuthDN
		,ISNULL(tblInvSerialTypes.strInvSerialType, '') AS InvSerialType
		,ISNULL(tblInvSerialTypes.bitAutoCreateLotNumber, 0) AS IsAutoCreateLotNumber
		,ISNULL(tblInvSerialTypes.intLotNumberStartsFrom, 0) AS LotNumberStartsFrom
		,ISNULL(tblInvSerialTypes.intNextLotNumber, 1) AS NextLotNumber
		,ISNULL(tblInvSerialTypes.intDaysExpire, 0) AS DaysExpire
	FROM tblInv(NOLOCK)
	LEFT JOIN tblInvSerialTypes(NOLOCK) ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblInv.strPartNumber = @PartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchasesPopulateResult] 
	(@PartNumber AS NVARCHAR(100),
	@Location AS NVARCHAR(100))
AS
BEGIN
SELECT TI.bitIsSuperseded AS IsSuperseded
,TIE.decOnHand AS OnHand
,TIE.decAvail AS Avail
,TI.strSupersededBy AS SupersededBy
,TI.strSupersededDescription AS SupersededDescription
,TI.dtesupersessiondate AS Supersessiondate
FROM tblInv TI
INNER JOIN tblInvExt TIE ON TI.strPartNumber = TIE.strPartNumber
WHERE TI.strPartNumber = @PartNumber and TIE.strLocName = @Location
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchasePriceListByDocDate]
(
@PartNumber AS NVARCHAR(100)
,@DocDate AS DATETIME
,@VendName AS NVARCHAR(100)
,@Unit AS NVARCHAR(20)
)
AS
BEGIN
SELECT TOP 1 tblInvVendPriceListsByDate.uidPriceBasedID AS PriceBasedId
,tblInvVendPriceListsByDate.strVendName AS VendName
,tblInvVendPriceListsByDate.dteStartDate AS StartDate
,tblInvVendPriceListsByDate.dteFinishDate AS EndDate
,tblInvVend.decPrice AS Selling
,ISNULL(tblInvVend.bitPromotionalPricing, 0) AS IsPromotionalPricing
,ISNULL(tblInvVendPromotionalPrice.decPromotionalPrice, 0) AS PromotionalPrice
,tblInvVendPromotionalPrice.dtePromotionalStartDate AS PromotionalStartDate
,tblInvVendPromotionalPrice.dtePromotionalEndDate AS PromotionalEndDate
,tblInvVend.strUnit AS Unit
FROM tblInvVendPriceListsByDate
INNER JOIN tblInvVend ON tblInvVend.uidPriceBasedID = tblInvVendPriceListsByDate.uidPriceBasedID
LEFT JOIN tblInvVendPromotionalPrice ON tblInvVend.lngID = tblInvVendPromotionalPrice.lngId
AND Cast(@DocDate AS DATE) BETWEEN Cast(tblInvVendPromotionalPrice.dtePromotionalStartDate AS DATE)
AND Cast(tblInvVendPromotionalPrice.dtePromotionalEndDate AS DATE)
AND tblInvVendPromotionalPrice.decPromotionalPrice IN (
SELECT Max(prom.decPromotionalPrice)
FROM tblInvVendPromotionalPrice prom
WHERE prom.lngID = tblInvVendPromotionalPrice.lngId
AND Cast(@DocDate AS DATE) BETWEEN Cast(prom.dtePromotionalStartDate AS DATE)
AND Cast(prom.dtePromotionalEndDate AS DATE)
)
WHERE tblInvVend.strPartNumber = @PartNumber
AND tblInvVendPriceListsByDate.strVendName = @VendName
AND Cast(@DocDate AS DATE) BETWEEN Cast(tblInvVendPriceListsByDate.dteStartDate AS DATE)
AND Cast(tblInvVendPriceListsByDate.dteFinishDate AS DATE)
AND tblInvVendPriceListsByDate.bitInactive = 0
AND tblInvVend.strUnit = @Unit
ORDER BY tblInvVendPriceListsByDate.dteStartDate
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchasesInventoryData] (
	@Part AS NVARCHAR(100)
	,@SelectedDate AS NVARCHAR(100)
	,@VendName AS NVARCHAR(100)
	,@TransactionType AS NVARCHAR(100)
	,@Unit AS NVARCHAR(100)
	,@BarCode AS NVARCHAR(100)
	,@UserName AS NVARCHAR(100)
	,@IsPOSync AS BIT
	,@IsBPToolsMode AS BIT
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(Max) = '';
	DECLARE @Query1 AS NVARCHAR(Max) = '';
	DECLARE @Query2 AS NVARCHAR(Max) = '';
	DECLARE @Query3 AS NVARCHAR(Max) = '';

	SET @Query = ' ;WITH data1 AS ( SELECT tblInvVend.strPartNumber as PartNumber ,tblInvVend.decDiscPerc as DiscPerc ,tblInvVend.strVendName as VendorName ,  
tblInvVend.strUnit ,tblInvVend.decPrice as Price ,
tblInvVend.lngID ,
tblInvVend.bitPromotionalPricing ,
tblInvVendPromotionalPrice.dtePromotionalStartDate ,  
tblInvVendPromotionalPrice.dtePromotionalEndDate ,
tblInvVendPromotionalPrice.decPromotionalPrice 
FROM tblInvVend (NOLOCK) INNER JOIN tblInvVendPriceListsByDate   
ON tblInvVend.uidPriceBasedID = tblInvVendPriceListsByDate.uidPriceBasedID AND CAST(''' + @SelectedDate + ''' as date) BETWEEN   
CAST(tblInvVendPriceListsByDate.dteStartDate as date) AND CAST(tblInvVendPriceListsByDate.dteFinishDate as date) AND  
tblInvVendPriceListsByDate.strVendName = ''' + @VendName + ''' AND tblInvVendPriceListsByDate.bitInactive=0 LEFT JOIN  
tblInvVendPromotionalPrice ON tblInvVendPromotionalPrice.lngId=tblInvVend.lngID AND CAST(''' + @SelectedDate + 
		''' as date) BETWEEN   
CAST(tblInvVendPromotionalPrice.dtePromotionalStartDate as date) AND CAST(tblInvVendPromotionalPrice.dtePromotionalEndDate as date)   
AND tblInvVendPromotionalPrice.decPromotionalPrice  IN  (Select Max(prom.decPromotionalPrice) FROM tblInvVendPromotionalPrice  prom   
Where prom.lngID = tblInvVendPromotionalPrice.lngId AND Cast(''' + @SelectedDate + ''' AS DATE) BETWEEN Cast(prom.dtePromotionalStartDate AS DATE)   
AND Cast(prom.dtePromotionalEndDate AS DATE) ) )  '

	IF (@IsPOSync = 1)
	BEGIN
		SET @Query += 'Select CASE WHEN tblInv.strBarCode = ''' + @Part + ''' OR tblInv.strBarCode2 = ''' + @Part + ''' THEN tblInv.strBuyUnit ELSE  
ISNULL(tblInvUOMs.strFromUnit, tblInv.strBuyUnit) END AS BuyUnit, tblInv.strStockUnit as SellStockUnit,ISNULL(CASE tblInvUOMs.strConversionType WHEN  
''Multiply'' THEN tblInvUOMs.decConversionFactor ELSE 1 / tblInvUOMs.decConversionFactor END, tblInv.decBuyToStock)  as BuyToStock, tblInv.decLastPPUnit as LastPPUnit,  
tblInv.decCostOnPO as CostOnPO, tblInv.bitUseLPPOnPO as UseLPPOnPO, tblInv.intType as Type, tblInv.strDesc as [Desc], tblInv.strPartNumber as PartNumber, tblInv.strField1 as Field1, 
tblInv.strField2 as Field2, tblInv.strField3 as Field3,  tblInv.strField4 as Field4, tblInv.strField5 as Field5, tblInv.strField6 as Field6, tblInv.bitInvSerialType as IsSerialType, 
ISNULL(tblInvSerialTypes.bitMethod,0) as IsMethod, (Select data1.Price from data1 where data1.PartNumber=tblInv.strPartNumber and strUnit=(CASE WHEN tblInv.strBarCode = ''' + 
			@Part + ''' OR tblInv.strBarCode2 = ''' + @Part + '''   
THEN tblInv.strBuyUnit ELSE ISNULL( tblInvUOMs.strFromUnit, tblInv.strBuyUnit) END )) AS Price,
(Select data1.DiscPerc from data1 where  data1.PartNumber=tblInv.strPartNumber and strUnit=(CASE WHEN tblInv.strBarCode = ''' + @Part + ''' OR tblInv.strBarCode2 = ''' + @Part + ''' THEN tblInv.strBuyUnit   
ELSE ISNULL(tblInvUOMs.strFromUnit, tblInv.strBuyUnit) END )) AS DiscPerc, tblInv.strExtendedDesc as ExtendedDesc, tblInv.decMass as Mass, tblInv.decVolumetricWeight as VolumetricWeight,  
tblInv.strUnitOfMeasure as UnitOfMeasure, tblInv.strDimProCode as DimProCode, ISNULL(tblInvSerialTypes.bitDimensionExist,0)  as IsSerialDimension  
FROM tblInv (NOLOCK) LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber AND tblInvUOMs.bitInactive = 0 AND  
(tblInvUOMs.strUseFor = ''' + @TransactionType + ''' OR tblInvUOMs.strUseFor = ''Both'')'
	END
	ELSE
	BEGIN
		SET @Query += ' Select CASE WHEN tblInv.strBarCode = ''' + @Part + ''' OR tblInv.strBarCode2 = ''' + @Part + 
			''' THEN tblInv.strBuyUnit ELSE ISNULL(tblInvUOMs.strFromUnit,   
tblInv.strBuyUnit) END AS BuyUnit, tblInv.strStockUnit as SellStockUnit,ISNULL(CASE tblInvUOMs.strConversionType WHEN ''Multiply'' THEN tblInvUOMs.decConversionFactor  
ELSE 1 / tblInvUOMs.decConversionFactor END, tblInv.decBuyToStock)  as BuyToStock, tblInv.decLastPPUnit as LastPPUnit, tblInv.decCostOnPO as CostOnPO, tblInv.bitUseLPPOnPO as UseLPPOnPO, 
tblInv.intType as Type,  tblInv.strDesc as [Desc], tblInv.strPartNumber as PartNumber, tblInv.strField1 as Field1, tblInv.strField2 as Field2, tblInv.strField3 as Field3, 
tblInv.strField4 as Field4, tblInv.strField5 as Field5, tblInv.strField6 as Field6,  
tblInv.bitInvSerialType as IsSerialType, ISNULL(tblInvSerialTypes.bitMethod,0) as IsMethod, (Select data1.Price from data1 where data1.PartNumber=tblInv.strPartNumber   
and strUnit=(CASE WHEN tblInv.strBarCode = ''' + @Part + ''' OR tblInv.strBarCode2 = ''' + @Part + 
			''' THEN tblInv.strBuyUnit ELSE ISNULL( tblInvUOMs.strFromUnit,  
tblInv.strBuyUnit) END )) AS Price,(Select data1.DiscPerc from data1 where data1.PartNumber=tblInv.strPartNumber and strUnit=(CASE WHEN  
tblInv.strBarCode = ''' + @Part + ''' OR tblInv.strBarCode2 = ''' + @Part + ''' THEN tblInv.strBuyUnit ELSE ISNULL(tblInvUOMs.strFromUnit, tblInv.strBuyUnit) END ))  
AS DiscPerc, tblInv.strExtendedDesc as ExtendedDesc, tblInv.decMass as Mass, tblInv.decVolumetricWeight as VolumetricWeight, tblInv.strUnitOfMeasure as UnitOfMeasure, tblInv.strDimProCode as DimProCode,   
ISNULL(tblInvSerialTypes.bitDimensionExist,0) as IsSerialDimension    FROM tblInv (NOLOCK) LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber   
AND tblInvUOMs.bitInactive = 0 AND (tblInvUOMs.strUseFor = ''' + @TransactionType + ''' OR tblInvUOMs.strUseFor = ''Both'')'
	END

	IF (@Unit != '')
	BEGIN
		SET @Query1 = ' AND (tblInvUOMs.strFromUnit = ''' + @Unit + ''')'
	END
	ELSE
	BEGIN
		SET @Query1 = ' AND (CASE WHEN tblInv.strPartNumber = ''' + @Part + ''' THEN tblInvUOMs.bitDefaultUOM ELSE 1 END = 1)'
	END

	SET @Query2 = ' LEFT JOIN tblInvSerialTypes (NOLOCK) ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType  
WHERE (tblInv.strPartNumber = ''' + @Part + ''' OR tblInv.strBarCode = ''' + @BarCode + ''' OR tblInv.strBarCode2 = ''' + @BarCode + ''' OR  
tblInvUOMs.strBarCode = ''' + @BarCode + ''' OR tblInvUOMs.strBarCode2 = ''' + @BarCode + ''')'

	IF (@IsPOSync = 0)
	BEGIN
		SET @Query2 += ' AND (tblInv.bitInactive = 0)'
	END

	IF (@IsBPToolsMode = 0)
	BEGIN
		SET @Query3 = ' AND (tblInv.strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat (NOLOCK) LEFT JOIN tblInvCatSec ON   
tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec  (NOLOCK)   
WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM   
tblInvCatSec (NOLOCK) WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''' + @UserName + ''')) OR tblInv.intType = 5)'
	END

	EXEC (@Query + @Query1 + @Query2 + @Query3)
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseBudgetInfoData] (@docNumber AS NVARCHAR(100))
AS
BEGIN
SELECT [strPartNumber] AS PartNumber
,[strDesc] AS 'Description'
,[intLineNo] AS 'LineNo'
,[strTransactionType] AS TransactionType
,[strDocNumber] AS DocNumber
,[dteDate] AS DATE
,[decPeriodBudget] AS PeriodBudget
,[decPeriodCommitment] AS PeriodCommitment
,[decPeriodVariance] AS PeriodVariance
,[decYearToDateBudget] AS YearToDateBudget
,[decYearToDateCommitment] AS YearToDateCommitment
,[decYearToDateVariance] AS YearToDateVariance
,[strVendName] AS VendorName
,[decAmount] AS Amount
,[strReference] AS Reference
,[strApprovedBy] AS ApprovedBy
,[dteDateofApproval] AS DateofApproval
,[strReasonCode] AS Reason
FROM [dbo].[tblInvPurchaseTargetBudgetInfo]
WHERE strTransactionType = 'PURQ'
AND strDocNumber = @docNumber
ORDER BY intLineNo
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchasesCenters] (@CenterID AS NVARCHAR(MAX))
AS
BEGIN
SELECT strLvl1 AS Level1
,strLvl2 AS Level2
,strLvl3 AS Level3
,strLvl4 AS Level4
,strLvl5 AS Level5
FROM tblCenters
WHERE uidCenterID = @CenterID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocQData] (@DocNumber AS NVARCHAR(50))
AS
BEGIN
SELECT tblOrderDocQ.[strOrdDocID] AS OrdPDocID
,[dteSystemDate] AS SystemDate
,[dteJournalDate] AS JournalDate
,[dteRequired] AS [Required]
,[strUserName] AS UserName
,[strSoldTo] AS SoldTo
,[strShipTo] AS ShipTo
,[strReference] AS Reference
,[decSubTotal] AS SubTotal
,[decVAT] AS VAT
,[decTotal] AS Total
,tblOrderDocQ.[strNotes] AS Notes
,[bitPrinted] AS Printed
,[bitEmailed] AS Emailed
,[bitCleared] AS Cleared
,tblOrderDocQ.[strSalesName] AS SalesName
,[strAddInfo] AS AddInfo
,tblOrderDocQ.[strCurrency] AS Currency
,tblOrderDocQ.[bitIsForeign] AS IsForeign
,[decSubTotalF] AS SubTotalF
,[decVATF] AS VATF
,[decTotalF] AS TotalF
,[decExchange] AS Exchange
,tblOrderDocQ.[strTerm] AS Term
,tblOrderDocQ.[intDept] AS Dept
,tblOrderDocQ.[strField1] AS Field1
,tblOrderDocQ.[strField2] AS Field2
,tblOrderDocQ.[strField3] AS Field3
,tblOrderDocQ.[strField4] AS Field4
,tblOrderDocQ.[strField5] AS Field5
,tblOrderDocQ.[strField6] AS Field6
,tblOrderDocQ.[strField7] AS Field7
,tblOrderDocQ.[strField8] AS Field8
,tblOrderDocQ.[strField9] AS Field9
,tblOrderDocQ.[strField10] AS Field10
,tblOrderDocQ.[strField11] AS Field11
,tblOrderDocQ.[strField12] AS Field12
,[strSubFormated] AS SubFormated
,[strVATFormatted] AS VATFormatted
,[strTotFormatted] AS TotFormatted
,tblOrderDocQ.[decTotalCost] AS TotalCost
,[decTotalMarkup] AS TotalMarkup
,tblOrderDocQ.[strCustName] AS CustName
,[decDiscPerc] AS DiscPerc
,[decDiscAmt] AS DiscAmt
,[decDiscAmtF] AS DiscAmtF
,[strDiscFormatted] AS DiscFormatted
,[strStatusTypeCode] AS StatusTypeCode
,[bitDeclined] AS IsDeclined
,[bitApproved] AS IsApproved
,[strApprovedBy] AS ApprovedBy
,[dteApprovedDate] AS ApprovedDate
,[decTotalWeight] AS TotalWeight
,[decTotalVolWeight] AS TotalVolWeight
,[strSOReasonCode] AS SOReasonCode
,[decDeliveryCost] AS DeliveryCost
,[decDeliveryCostF] AS DeliveryCostF
,[strDeliveryCostFormatted] AS DeliveryCostFormatted
,tblOrderDocQ.[strDelMethodCode] AS DelMethodCode
,[intRevisionNumber] AS RevisionNumber
,ISNULL(tblCustomers.strCustDesc, '') AS CustDesc
,tblOrderDocQDT.strVendName AS VendorName
FROM tblOrderDocQ
LEFT JOIN tblOrderDocQDT ON tblOrderDocQ.strOrdDocID = tblOrderDocQDT.strOrdDocID
LEFT JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName
WHERE tblOrderDocQ.strOrdDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocQDTPurchaseData] (
@DocNumber AS NVARCHAR(50)
,@VendNumber AS NVARCHAR(50)
,@Date AS DATETIME
)
AS
BEGIN
;
WITH tbtempInvVend
AS (
SELECT tblInvVend.strVendName
,tblInvVendPriceListsByDate.dteStartDate
,tblInvVend.strItemCode
,tblInvVend.strItemDesc
,tblInvVendPriceListsByDate.dteFinishDate
,tblInvVend.strPartNumber
,tblInvVend.strUnit
,tblInvVend.decPrice
,tblInvVend.bitPromotionalPricing
,tblInvVendPromotionalPrice.decPromotionalPrice
,tblInvVendPromotionalPrice.dtePromotionalStartDate
,tblInvVendPromotionalPrice.dtePromotionalEndDate
FROM tblInvVend
INNER JOIN tblInvVendPriceListsByDate ON tblInvVend.strVendName = tblInvVendPriceListsByDate.strVendName
AND tblInvVend.uidPriceBasedID = tblInvVendPriceListsByDate.uidPriceBasedID
AND CAST(@Date AS DATE) BETWEEN Cast(tblInvVendPriceListsByDate.dteStartDate AS DATE)
AND Cast(tblInvVendPriceListsByDate.dteFinishDate AS DATE)
AND tblInvVendPriceListsByDate.bitInactive = 0
LEFT JOIN tblInvVendPromotionalPrice ON tblInvVendPromotionalPrice.lngId = tblInvVend.lngID
AND CAST(@Date AS DATE) BETWEEN Cast(tblInvVendPromotionalPrice.dtePromotionalStartDate AS DATE)
AND Cast(tblInvVendPromotionalPrice.dtePromotionalEndDate AS DATE)
AND tblInvVendPromotionalPrice.decPromotionalPrice IN (
SELECT Max(prom.decPromotionalPrice)
FROM tblInvVendPromotionalPrice prom
WHERE prom.lngID = tblInvVendPromotionalPrice.lngId
AND Cast(@Date AS DATE) BETWEEN Cast(prom.dtePromotionalStartDate AS DATE)
AND Cast(prom.dtePromotionalEndDate AS DATE)
)
)
SELECT tblOrderDocQDT.[strOrdDocID] AS OrdPDocID
,tblOrderDocQDT.[intLineNo] AS [LineNo]
,tblOrderDocQDT.[strPartNumber] AS PartNumber
,[strLocation] AS [Location]
,[strPartDesc] AS PartDesc
,[decQty] AS BuyQty
--,tblOrderDocQDT.[strUnit]	  as BuyUnit
,[decCost] AS Cost
,[decPriceEaExc] AS PriceEaExc
,[decLineTotExc] AS LineTotExc
,[decLineTaxAmt] AS LineTaxAmt
,[decPriceEaInc] AS PriceEaInc
,[decLineTotInc] AS LineTotInc
,[strTaxCode] AS TaxCode
,[imgTaxObj] AS TaxObj
,tblOrderDocQDT.[strCurrency] AS Currency
,tblOrderDocQDT.[bitIsForeign] AS IsForeign
,[decPriceEaExcF] AS PriceEaExcF
,[decLineTotExcF] AS LineTotExcF
,[decLineTaxAmtF] AS LineTaxAmtF
,[decEaIncTaxF] AS EaIncTaxF
,[decTotIncTaxF] AS TotIncTaxF
,tblOrderDocQDT.[decTotalCost] AS TotalCost
,[strInvField1] AS InvField1
,[strInvField2] AS InvField2
,[strInvField3] AS InvField3
,[strInvField4] AS InvField4
,[strInvField5] AS InvField5
,[strInvField6] AS InvField6
,[strLineField1] AS LineField1
,[strLineField2] AS LineField2
,[strLineField3] AS LineField3
,[strLineField4] AS LineField4
,[strLineField5] AS LineField5
,[strLineField6] AS LineField6
,[strLineField7] AS LineField7
,[strLineField8] AS LineField8
,[strLineField9] AS LineField9
,[strLineField10] AS LineField10
,[strLineField11] AS LineField11
,[strLineField12] AS LineField12
,[decLineDiscPerc] AS LineDiscPerc
,[decLineDiscAmt] AS LineDiscAmt
,[decLineDiscAmtF] AS LineDiscAmtF
,tblOrderDocQDT.[strVendName] AS VendName
,[bitDiscountTax] AS DiscountTax
,tblOrderDocQDT.[strSalesName] AS SalesName
,[strPartExtendedDesc] AS PartExtendedDesc
,[decItemWeight] AS ItemWeight
,tblOrderDocQDT.[decVolumetricWeight] AS VolumetricWeight
,tblInv.strBuyUnit AS BuyUnit
,tblInv.strStockUnit AS StockUnit
,tblInv.decBuyToStock AS BuyToStock
,ISNULL(tblOrderDocQDTPrj.strProjNumber, '') AS ProjNumber
,(
CASE 
WHEN (
tbtempInvVend.bitPromotionalPricing = 1
AND CAST(tblOrderDocQ.dteJournalDate AS DATE) BETWEEN Cast(tbtempInvVend.dtePromotionalStartDate AS DATE)
AND CAST(tbtempInvVend.dtePromotionalEndDate AS DATE)
)
THEN tbtempInvVend.decPromotionalPrice
ELSE tbtempInvVend.decPrice
END
) AS Price
,ISNULL(tblInv.strUnitOfMeasure, '') AS UnitOfMeasure
,tblInv.intType AS [Type]
,tblInv.strDimProCode AS DimProCode
,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS bitDimensionExist
FROM tblOrderDocQDT
INNER JOIN tblOrderDocQ ON tblOrderDocQDT.strOrdDocID = tblOrderDocQ.strOrdDocID
INNER JOIN tblInv ON tblOrderDocQDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblOrderDocQDTPrj ON tblOrderDocQDT.strOrdDocID = tblOrderDocQDTPrj.strOrdDocID
AND tblOrderDocQDT.intLineNo = tblOrderDocQDTPrj.intLineNo
LEFT JOIN tbtempInvVend ON tblOrderDocQDT.strPartNumber = tbtempInvVend.strPartNumber
AND tblOrderDocQDT.strVendName = tbtempInvVend.strVendName
AND tblOrderDocQDT.strUnit = tbtempInvVend.strUnit
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblOrderDocQDT.strOrdDocID = @DocNumber
AND tblOrderDocQDT.strVendName = @VendNumber
ORDER BY tblOrderDocQDT.intLineNo
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPurchaseData] (@DocNumber AS NVARCHAR(50))
AS
BEGIN
SELECT [strOrdPDocID] AS OrdPDocID
,tblOrderDocP.[dteSystemDate] AS SystemDate
,tblOrderDocP.[dteJournalDate] AS JournalDate
,tblOrderDocP.[dteRequired] AS [Required]
,tblOrderDocP.[strUserName] AS UserName
,tblOrderDocP.[strVendName] AS VendName
,tblOrderDocP.[strShipTo] AS ShipTo
,tblOrderDocP.[decSubTotal] AS SubTotal
,tblOrderDocP.[decVAT] AS VAT
,tblOrderDocP.[decTotal] AS Total
,tblOrderDocP.[strNotes] AS Notes
,tblOrderDocP.[bitPrinted] AS Printed
,tblOrderDocP.[bitEmailed] AS Emailed
,tblOrderDocP.[bitCleared] AS Cleared
,tblOrderDocP.[intDocType] AS DocType
,tblOrderDocP.[strBoughtFrom] AS BoughtFrom
,tblOrderDocP.[strCurrency] AS Currency
,tblOrderDocP.[bitIsForeign] AS IsForeign
,tblOrderDocP.[decSubTotalF] AS SubTotalF
,tblOrderDocP.[decVATF] AS VATF
,tblOrderDocP.[decTotalF] AS TotalF
,tblOrderDocP.[decExchange] AS Exchange
,tblOrderDocP.[strTerm] AS Term
,tblOrderDocP.[intDept] AS Dept
,tblOrderDocP.[strField1] AS Field1
,tblOrderDocP.[strField2] AS Field2
,tblOrderDocP.[strField3] AS Field3
,tblOrderDocP.[strField4] AS Field4
,tblOrderDocP.[strField5] AS Field5
,tblOrderDocP.[strField6] AS Field6
,tblOrderDocP.[strField7] AS Field7
,tblOrderDocP.[strField8] AS Field8
,tblOrderDocP.[strField9] AS Field9
,tblOrderDocP.[strField10] AS Field10
,tblOrderDocP.[strField11] AS Field11
,tblOrderDocP.[strField12] AS Field12
,tblOrderDocP.[strSubFormated] AS SubFormated
,tblOrderDocP.[strVATFormatted] AS VATFormatted
,tblOrderDocP.[strTotFormatted] AS TotFormatted
,tblOrderDocP.[decDiscPerc] AS DiscPerc
,tblOrderDocP.[decDiscAmt] AS DiscAmt
,tblOrderDocP.[decDiscAmtF] AS DiscAmtF
,tblOrderDocP.[strDiscFormatted] AS DiscFormatted
,tblOrderDocP.[strOrdFQDocID] AS OrdFQDocID
,tblOrderDocP.[bitFQConvert] AS FQConvert
,tblOrderDocP.[bitSOCopy] AS SOCopy
,tblOrderDocP.[bitSOCopyMulti] AS SOCopyMulti
,tblOrderDocP.[strStatusTypeCode] AS StatusTypeCode
,tblOrderDocP.[bitBookmark] AS Bookmark
,tblOrderDocP.[strAddInfo] AS AddInfo
,tblOrderDocP.[strReference] AS Reference
,tblOrderDocP.[strOrdRFQDocID] AS OrdRFQDocID
,tblOrderDocP.[bitRFQConvert] AS RFQConvert
,tblOrderDocP.[decNetItemWeight] AS NetItemWeight
,tblOrderDocP.[decNetVolumetricWeight] AS NetVolumetricWeight
,tblOrderDocP.[intRevisionNumber] AS RevisionNumber
,tblOrderDocP.[strBuyerName] AS BuyerName
,tblOrderDocP.[strSalesDocNo] AS SalesDocNo
,ISNULL(tblCustomers.strCustDesc, '') AS CustDesc
FROM tblOrderDocP
LEFT JOIN tblOrderDocQ ON tblOrderDocP.strOrdFQDocID = tblOrderDocQ.strOrdDocID
LEFT JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName
WHERE tblOrderDocP.strOrdPDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPurchaseDTData] (@DocNumber AS NVARCHAR(50))
AS
BEGIN
SELECT tblOrderDocPDT.[strOrdPDocID] AS OrdPDocID
,tblOrderDocPDT.[intLineNo] AS [LineNo]
,tblOrderDocPDT.[strPartNumber] AS PartNumber
,[strLocation] AS [Location]
,[strPartDesc] AS PartDesc
,[decBuyQty] AS BuyQty
,[decBuyQtyRemain] AS BuyQtyRemain
,tblOrderDocPDT.[strBuyUnit] AS BuyUnit
,[decStockQty] AS StockQty
,[decStockQtyRemain] AS StockQtyRemain
,tblOrderDocPDT.[strStockUnit] AS StockUnit
,tblOrderDocPDT.[intType] AS [Type]
,[decPriceEaExc] AS PriceEaExc
,[decLineTotExc] AS LineTotExc
,[decLineTaxAmt] AS LineTaxAmt
,tblOrderDocPDT.[strTaxCode] AS TaxCode
,[decEaIncTax] AS EaIncTax
,[decTotIncTax] AS TotIncTax
,[imgTaxObj] AS TaxObj
,tblOrderDocPDT.[strCurrency] AS Currency
,tblOrderDocPDT.[bitIsForeign] AS IsForeign
,[decPriceEaExcF] AS PriceEaExcF
,[decLineTotExcF] AS LineTotExcF
,[decLineTaxAmtF] AS LineTaxAmtF
,[decEaIncTaxF] AS EaIncTaxF
,[decTotIncTaxF] AS TotIncTaxF
,[strInvField1] AS InvField1
,[strInvField2] AS InvField2
,[strInvField3] AS InvField3
,[strInvField4] AS InvField4
,[strInvField5] AS InvField5
,[strInvField6] AS InvField6
,[strLineField1] AS LineField1
,[strLineField2] AS LineField2
,[strLineField3] AS LineField3
,[strLineField4] AS LineField4
,[strLineField5] AS LineField5
,[strLineField6] AS LineField6
,[strLineField7] AS LineField7
,[strLineField8] AS LineField8
,[strLineField9] AS LineField9
,[strLineField10] AS LineField10
,[strLineField11] AS LineField11
,[strLineField12] AS LineField12
,[decLineDiscPerc] AS LineDiscPerc
,[decLineDiscAmt] AS LineDiscAmt
,[decLineDiscAmtF] AS LineDiscAmtF
,[bitDiscountTax] AS DiscountTax
,[strOrdSODocID] AS OrdSODocID
,[strPartExtendedDesc] AS PartExtendedDesc
,[decItemWeight] AS ItemWeight
,tblOrderDocPDT.[decVolumetricWeight] AS VolumetricWeight
,[uidTransactionFieldID] AS TransactionFieldID
,[intSODocItemLineNo] AS SODocItemLineNo
,ISNULL(tblCustomers.strCustDesc, '') AS CustDesc
,ISNULL(tblOrderDocPDTPrj.strProjNumber, '') AS ProjNumber
,tblInv.decBuyToStock AS BuyToStock
,ISNULL(tblInv.strUnitOfMeasure, '') AS UnitOfMeasure
,tblInv.strDimProCode AS DimProCode
,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist
FROM tblOrderDocPDT
INNER JOIN tblInv ON tblOrderDocPDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblOrderDoc ON tblOrderDocPDT.strOrdSODocID = tblOrderDoc.strOrdDocID
LEFT JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
LEFT JOIN tblOrderDocPDTPrj ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTPrj.strOrdPDocID
AND tblOrderDocPDT.intLineNo = tblOrderDocPDTPrj.intLineNo
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblOrderDocPDT.strOrdPDocID = @DocNumber
ORDER BY tblOrderDocPDT.intLineNo
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPQApprovalsGroupData] (@DocNumber AS NVARCHAR(100))
AS
BEGIN
SELECT tblPQApprovalsGroup.ID AS Id
,tblPQApprovalsGroup.strGroupName AS GroupName
,tblPQApprovalsGroup.docLimitIncFrom AS LimitIncFrom
,tblPQApprovalsGroup.docLimitIncTo AS LimitIncTo
,tblPQApprovalsGroup.intNotificationOrder AS NotificationOrder
FROM tblOrdersDocP_POApprovals
INNER JOIN tblPQApprovalsGroup ON tblOrdersDocP_POApprovals.intGroupId = tblPQApprovalsGroup.ID
WHERE tblOrdersDocP_POApprovals.strOrdPDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetDimensionListForPurchase] @DocNumber AS NVARCHAR(100)
AS
BEGIN
SELECT intDimLineNo AS DimLineNo
,intDimColNo AS DimColNo
,decValue AS Value
,strDimColHeading AS DimColHeading
,bitVisible AS IsVisible
,bitAllowEditing AS IsAllowEditing
FROM tblInvoiceDocPDimensions
WHERE strInvPDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPDTSerialData] @DocNumber AS NVARCHAR(50)
,@LineNumber AS INT
AS
BEGIN
SELECT tblOrderDocPDTSerial.[strOrdPDocID] AS OrderDocID
,tblOrderDocPDTSerial.[intLineNo] AS [LineNo]
,tblOrderDocPDTSerial.[strSerialNumber] AS SerialNumber
,tblOrderDocPDTSerial.[decQty] AS Qty
,tblOrderDocPDTSerial.[strUnit] AS Unit
,[lngID] AS ID
,[bitExpiryDate] AS IsExpiryDate
,[dteExpiryDate] AS ExpiryDate
,[intSerialLotType] AS SerialLotType
,ISNULL((
SELECT DISTINCT TYP.strInvSerialType
FROM tblOrderDocPDTSerial SRL
INNER JOIN tblOrderDocPDT DTL ON SRL.strOrdPDocID = DTL.strOrdPDocID
AND SRL.intLineNo = DTL.intLineNo
INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber
INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType
WHERE SRL.strOrdPDocID = tblOrderDocPDTSerial.strOrdPDocID
AND SRL.intLineNo = tblOrderDocPDTSerial.intLineNo
), '') AS InvSerialType
,CASE 
WHEN tblOrderDocPDTSerial.intSerialLotType = 0
THEN ISNULL(tblInvSerialExt.bitDimensionExist, 0)
ELSE 0
END AS IsDimensionExist
,CASE 
WHEN tblOrderDocPDTSerial.intSerialLotType = 0
THEN ISNULL(tblInvSerialExt.strDimension, '')
ELSE ''
END AS Dimension
FROM tblOrderDocPDT
INNER JOIN tblOrderDocPDTSerial ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTSerial.strOrdPDocID
AND tblOrderDocPDT.intLineNo = tblOrderDocPDTSerial.intLineNo
LEFT JOIN tblInvSerialExt ON tblOrderDocPDT.strPartNumber = tblInvSerialExt.strPartNumber
AND tblOrderDocPDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
WHERE tblOrderDocPDTSerial.strOrdPDocID = @DocNumber
AND tblOrderDocPDTSerial.intLineNo = @LineNumber
ORDER BY tblOrderDocPDTSerial.lngID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseDataList] (
	@IsSalesFreehandQuotes AS BIT
	,@DocNumber AS NVARCHAR(50)
	,@Date AS DATETIME
	,@VendName AS NVARCHAR(100)
	)
AS
BEGIN
	IF (@IsSalesFreehandQuotes = 0)
	BEGIN
		SELECT [tblInvoiceDocPDT].[strInvPDocID] AS InvPDocID
			,[tblInvoiceDocPDT].[intLineNo] AS 'LineNo'
			,[tblInvoiceDocPDT].[strPartNumber] AS PartNumber
			,[tblInvoiceDocPDT].[strLocation] AS 'Location'
			,[tblInvoiceDocPDT].[strPartDesc] AS PartDesc
			,[tblInvoiceDocPDT].[decBuyQty] AS BuyQty
			,[tblInvoiceDocPDT].[strBuyUnit] AS BuyUnit
			,[tblInvoiceDocPDT].[decStockQty] AS StockQty
			,[tblInvoiceDocPDT].[strStockUnit] AS StockUnit
			,[tblInvoiceDocPDT].[intType] AS 'Type'
			,[tblInvoiceDocPDT].[decPriceEaExc] AS PriceEaExc
			,[tblInvoiceDocPDT].[decLineTotExc] AS LineTotExc
			,[tblInvoiceDocPDT].[decLineTaxAmt] AS LineTaxAmt
			,[tblInvoiceDocPDT].[strTaxCode] AS TaxCode
			,[tblInvoiceDocPDT].[decEaIncTax] AS EaIncTax
			,[tblInvoiceDocPDT].[decTotIncTax] AS TotIncTax
			,ISNULL(tblInvoiceDocPDT.imgTaxObj, '') AS TaxObj
			,[tblInvoiceDocPDT].[strCurrency] AS Currency
			,[tblInvoiceDocPDT].[bitIsForeign] AS IsForeign
			,[tblInvoiceDocPDT].[decPriceEaExcF] AS PriceEaExcF
			,[tblInvoiceDocPDT].[decLineTotExcF] AS LineTotExcF
			,[tblInvoiceDocPDT].[decLineTaxAmtF] AS LineTaxAmtF
			,[tblInvoiceDocPDT].[decEaIncTaxF] AS EaIncTaxF
			,[tblInvoiceDocPDT].[decTotIncTaxF] AS TotIncTaxF
			,[tblInvoiceDocPDT].[strInvField1] AS InvField1
			,[tblInvoiceDocPDT].[strInvField2] AS InvField2
			,[tblInvoiceDocPDT].[strInvField3] AS InvField3
			,[tblInvoiceDocPDT].[strInvField4] AS InvField4
			,[tblInvoiceDocPDT].[strInvField5] AS InvField5
			,[tblInvoiceDocPDT].[strInvField6] AS InvField6
			,[tblInvoiceDocPDT].[strLineField1] AS LineField1
			,[tblInvoiceDocPDT].[strLineField2] AS LineField2
			,[tblInvoiceDocPDT].[strLineField3] AS LineField3
			,[tblInvoiceDocPDT].[strLineField4] AS LineField4
			,[tblInvoiceDocPDT].[strLineField5] AS LineField5
			,[tblInvoiceDocPDT].[strLineField6] AS LineField6
			,[tblInvoiceDocPDT].[strLineField7] AS LineField7
			,[tblInvoiceDocPDT].[strLineField8] AS LineField8
			,[tblInvoiceDocPDT].[strLineField9] AS LineField9
			,[tblInvoiceDocPDT].[strLineField10] AS LineField10
			,[tblInvoiceDocPDT].[strLineField11] AS LineField11
			,[tblInvoiceDocPDT].[strLineField12] AS LineField12
			,[tblInvoiceDocPDT].[decLineDiscPerc] AS LineDiscPerc
			,[tblInvoiceDocPDT].[decLineDiscAmt] AS LineDiscAmt
			,[tblInvoiceDocPDT].[decLineDiscAmtF] AS LineDiscAmtF
			,[tblInvoiceDocPDT].[bitDiscountTax] AS DiscountTax
			,[tblInvoiceDocPDT].[strOrdSODocID] AS OrdSODocID
			,[tblInvoiceDocPDT].[strPartExtendedDesc] AS PartExtendedDesc
			,[tblInvoiceDocPDT].[decItemWeight] AS ItemWeight
			,[tblInvoiceDocPDT].[decVolumetricWeight] AS VolumetricWeight
			,[tblInvoiceDocPDT].[uidTransactionFieldID] AS TransactionFieldID
			,[tblInvoiceDocPDT].[bitFrom] AS 'From'
			,[tblInvoiceDocPDT].[strOrdPGDocID] AS OrdPGDocID
			,ISNULL(tblCustomers.strCustDesc, '') AS CustDesc
			,ISNULL(tblInvoiceDocPDTPrj.strProjNumber, '') AS ProjNumber
			,tblInv.bitInvSerialType AS IsInvSerialType
			,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
			,ISNULL(tblInv.strUnitOfMeasure, '') AS UnitOfMeasure
			,tblInv.strDimProCode AS DimProCode
			,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist
			,ISNULL(STUFF((
						SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX))
						FROM tblInvLocBin
						WHERE tblInvLocBin.lngId IN (
								SELECT lngBinId
								FROM tblInvoiceDocPDTBin
								WHERE tblInvoiceDocPDTBin.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
									AND tblInvoiceDocPDTBin.intLineNo = tblInvoiceDocPDT.intLineNo
								)
						FOR XML PATH('')
						), 1, 1, ''), '') AS BinCode
			,ISNULL(STUFF((
						SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(MAX))
						FROM tblInvLocBin
						WHERE tblInvLocBin.lngId IN (
								SELECT lngBinId
								FROM tblInvoiceDocPDTBin
								WHERE tblInvoiceDocPDTBin.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
									AND tblInvoiceDocPDTBin.intLineNo = tblInvoiceDocPDT.intLineNo
								)
						FOR XML PATH('')
						), 1, 1, ''), '') AS BinId
			,[tblInvoiceDocPDT].[intOrdPGDocItemLineNo] AS OrdPGDocItemLineNo
		FROM tblInvoiceDocPDT
		INNER JOIN tblInv ON tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblOrderDoc ON tblInvoiceDocPDT.strOrdSODocID = tblOrderDoc.strOrdDocID
		LEFT JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
		LEFT JOIN tblInvoiceDocPDTPrj ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocPDTPrj.strInvPDocID
			AND tblInvoiceDocPDT.intLineNo = tblInvoiceDocPDTPrj.intLineNo
		LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
		WHERE tblInvoiceDocPDT.strInvPDocID = @DocNumber
		ORDER BY tblInvoiceDocPDT.intLineNo
	END
	ELSE
	BEGIN
			;

		WITH tbtempInvVend
		AS (
			SELECT tblInvVend.strVendName
				,tblInvVendPriceListsByDate.dteStartDate
				,tblInvVend.strItemCode
				,tblInvVend.strItemDesc
				,tblInvVendPriceListsByDate.dteFinishDate
				,tblInvVend.strPartNumber
				,tblInvVend.strUnit
				,tblInvVend.decPrice
				,tblInvVend.bitPromotionalPricing
				,tblInvVendPromotionalPrice.decPromotionalPrice
				,tblInvVendPromotionalPrice.dtePromotionalStartDate
				,tblInvVendPromotionalPrice.dtePromotionalEndDate
			FROM tblInvVend
			INNER JOIN tblInvVendPriceListsByDate ON tblInvVend.strVendName = tblInvVendPriceListsByDate.strVendName
				AND tblInvVend.uidPriceBasedID = tblInvVendPriceListsByDate.uidPriceBasedID
				AND CAST(@Date AS DATE) BETWEEN Cast(tblInvVendPriceListsByDate.dteStartDate AS DATE)
					AND Cast(tblInvVendPriceListsByDate.dteFinishDate AS DATE)
				AND tblInvVendPriceListsByDate.bitInactive = 0
			LEFT JOIN tblInvVendPromotionalPrice ON tblInvVendPromotionalPrice.lngId = tblInvVend.lngID
				AND CAST(@Date AS DATE) BETWEEN Cast(tblInvVendPromotionalPrice.dtePromotionalStartDate AS DATE)
					AND Cast(tblInvVendPromotionalPrice.dtePromotionalEndDate AS DATE)
				AND tblInvVendPromotionalPrice.decPromotionalPrice IN (
					SELECT Max(prom.decPromotionalPrice)
					FROM tblInvVendPromotionalPrice prom
					WHERE prom.lngID = tblInvVendPromotionalPrice.lngId
						AND Cast(@Date AS DATE) BETWEEN Cast(prom.dtePromotionalStartDate AS DATE)
							AND Cast(prom.dtePromotionalEndDate AS DATE)
					)
			)
		SELECT [tblOrderDocQDT].[strOrdDocID] AS OrdDocID
			,[tblOrderDocQDT].[intLineNo] AS 'LineNo'
			,[tblOrderDocQDT].[strPartNumber] AS PartNumber
			,[tblOrderDocQDT].[strLocation] AS 'Location'
			,[tblOrderDocQDT].[strPartDesc] AS PartDesc
			,[tblOrderDocQDT].[decQty] AS Qty
			,[tblOrderDocQDT].[strUnit] AS Unit
			,[tblOrderDocQDT].[decCost] AS Cost
			,[tblOrderDocQDT].[decMarkUp] AS MarkUp
			,[tblOrderDocQDT].[decPriceEaExc] AS PriceEaExc
			,[tblOrderDocQDT].[decLineTotExc] AS LineTotExc
			,[tblOrderDocQDT].[decLineTaxAmt] AS LineTaxAmt
			,[tblOrderDocQDT].[decPriceEaInc] AS PriceEaInc
			,[tblOrderDocQDT].[decLineTotInc] AS LineTotInc
			,[tblOrderDocQDT].[strTaxCode] AS TaxCode
			,[tblOrderDocQDT].[imgTaxObj] AS TaxObj
			,[tblOrderDocQDT].[strCurrency] AS Currency
			,[tblOrderDocQDT].[bitIsForeign] AS IsForeign
			,[tblOrderDocQDT].[decPriceEaExcF] AS PriceEaExcF
			,[tblOrderDocQDT].[decLineTotExcF] AS LineTotExcF
			,[tblOrderDocQDT].[decLineTaxAmtF] AS LineTaxAmtF
			,[tblOrderDocQDT].[decEaIncTaxF] AS EaIncTaxF
			,[tblOrderDocQDT].[decTotIncTaxF] AS TotIncTaxF
			,[tblOrderDocQDT].[decTotalCost] AS TotalCost
			,[tblOrderDocQDT].[strInvField1] AS InvField1
			,[tblOrderDocQDT].[strInvField2] AS InvField2
			,[tblOrderDocQDT].[strInvField3] AS InvField3
			,[tblOrderDocQDT].[strInvField4] AS InvField4
			,[tblOrderDocQDT].[strInvField5] AS InvField5
			,[tblOrderDocQDT].[strInvField6] AS InvField6
			,[tblOrderDocQDT].[strLineField1] AS LineField1
			,[tblOrderDocQDT].[strLineField2] AS LineField2
			,[tblOrderDocQDT].[strLineField3] AS LineField3
			,[tblOrderDocQDT].[strLineField4] AS LineField4
			,[tblOrderDocQDT].[strLineField5] AS LineField5
			,[tblOrderDocQDT].[strLineField6] AS LineField6
			,[tblOrderDocQDT].[strLineField7] AS LineField7
			,[tblOrderDocQDT].[strLineField8] AS LineField8
			,[tblOrderDocQDT].[strLineField9] AS LineField9
			,[tblOrderDocQDT].[strLineField10] AS LineField10
			,[tblOrderDocQDT].[strLineField11] AS LineField11
			,[tblOrderDocQDT].[strLineField12] AS LineField12
			,[tblOrderDocQDT].[decLineDiscPerc] AS LineDiscPerc
			,[tblOrderDocQDT].[decLineDiscAmt] AS LineDiscAmt
			,[tblOrderDocQDT].[decLineDiscAmtF] AS LineDiscAmtF
			,[tblOrderDocQDT].[strVendName] AS VendorName
			,[tblOrderDocQDT].[bitDiscountTax] AS DiscountTax
			,[tblOrderDocQDT].[strSalesName] AS SalesName
			,[tblOrderDocQDT].[strPartExtendedDesc] AS PartExtendedDesc
			,[tblOrderDocQDT].[decItemWeight] AS ItemWeight
			,[tblOrderDocQDT].[decVolumetricWeight] AS VolumetricWeight
			,[tblOrderDocQDT].[bitContainerItem] AS ContainerItem
			,[tblOrderDocQDT].[bitDelCost] AS DelCost
			,[tblOrderDocQDT].[intBillingMethod] AS BillingMethod
			,[tblOrderDocQDT].[uidTransactionFieldID] AS TransactionFieldGUID
			,[tblOrderDocQDT].[uidContainerItem] AS ContainerItemGUID
			,tblInv.strBuyUnit AS BuyUnit
			,tblInv.strStockUnit AS StockUnit
			,tblInv.decBuyToStock AS BuyToStock
			,ISNULL(tblOrderDocQDTPrj.strProjNumber, '') AS ProjNumber
			,tblInv.bitInvSerialType AS IsInvSerialType
			,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
			,(
				CASE 
					WHEN (
							tbtempInvVend.bitPromotionalPricing = 1
							AND Cast(tblOrderDocQ.dteJournalDate AS DATE) BETWEEN cast(tbtempInvVend.dtePromotionalStartDate AS DATE)
								AND Cast(tbtempInvVend.dtePromotionalEndDate AS DATE)
							)
						THEN tbtempInvVend.decPromotionalPrice
					ELSE tbtempInvVend.decPrice
					END
				) AS CashPrice
			,ISNULL(tblInv.strUnitOfMeasure, '') AS UnitOfMeasure
			,tblInv.intType AS 'Type'
			,tblInv.strDimProCode AS DimProCode
			,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist
		FROM tblOrderDocQDT
		INNER JOIN tblOrderDocQ ON tblOrderDocQDT.strOrdDocID = tblOrderDocQ.strOrdDocID
		INNER JOIN tblInv ON tblOrderDocQDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblOrderDocQDTPrj ON tblOrderDocQDT.strOrdDocID = tblOrderDocQDTPrj.strOrdDocID
			AND tblOrderDocQDT.intLineNo = tblOrderDocQDTPrj.intLineNo
		LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
		LEFT JOIN tbtempInvVend ON tblOrderDocQDT.strPartNumber = tbtempInvVend.strPartNumber
			AND tblOrderDocQDT.strVendName = tbtempInvVend.strVendName
			AND tbtempInvVend.strUnit = tblOrderDocQDT.strUnit
		WHERE tblOrderDocQDT.strOrdDocID = @DocNumber
			AND tblOrderDocQDT.strVendName = @VendName
		ORDER BY tblOrderDocQDT.intLineNo
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseDimensionList] 
@DocNumber AS NVARCHAR(100)
AS
BEGIN
SELECT intDimLineNo AS DimLineNo
,intDimColNo AS DimColNo
,decValue AS Value
,strDimColHeading AS DimColHeading
,bitVisible AS IsVisible
,bitAllowEditing AS IsAllowEditing
FROM tblInvoiceDocPDimensions
WHERE strInvPDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[AddUpdatePurchaseOrderDocument] (
@OrdPDocID AS NVARCHAR(50)
,@SystemDate AS DATETIME
,@JournalDate AS DATETIME
,@Required AS DATETIME
,@UserName AS VARCHAR(20)
,@VendName AS VARCHAR(50)
,@ShipTo AS VARCHAR(500)
,@DiscountPercentage AS MONEY
,@SubTotal AS MONEY
,@DiscountAmount AS MONEY
,@VAT AS MONEY
,@Total AS MONEY
,@Notes AS NVARCHAR(MAX)
,@IsPrinted AS BIT
,@IsEmailed AS BIT
,@IsCleared AS BIT
,@DocType AS TINYINT
,@BoughtFrom AS VARCHAR(500)
,@Currency AS NVARCHAR(3)
,@IsForeign AS BIT
,@SubTotalF AS MONEY
,@DiscAmtF AS MONEY
,@VATF AS MONEY
,@TotalF AS MONEY
,@ExchangeRate AS MONEY
,@Term AS NVARCHAR(50)
,@Dept AS INT
,@Field1 AS NVARCHAR(100)
,@Field2 AS NVARCHAR(100)
,@Field3 AS NVARCHAR(100)
,@Field4 AS NVARCHAR(100)
,@Field5 AS NVARCHAR(100)
,@Field6 AS NVARCHAR(100)
,@Field7 AS NVARCHAR(100)
,@Field8 AS NVARCHAR(100)
,@Field9 AS NVARCHAR(100)
,@Field10 AS NVARCHAR(100)
,@Field11 AS NVARCHAR(100)
,@Field12 AS NVARCHAR(100)
,@SubFormatted AS NVARCHAR(50)
,@DiscountFormatted AS NVARCHAR(50)
,@VATFormatted AS NVARCHAR(50)
,@TotalFormatted AS NVARCHAR(50)
,@OrdFQDocID AS NVARCHAR(50)
,@IsFQConvert AS BIT
,@IsSalesOrderCopy AS BIT
,@IsSalesOrderCopyMulti AS BIT
,@StatusTypeCode AS NVARCHAR(20)
,@IsBookmark AS BIT
,@AdditionalInfo AS NVARCHAR(50)
,@Reference AS VARCHAR(50)
,@OrdRFQDocID AS NVARCHAR(50)
,@IsRFQConvert AS BIT
,@TotalWeight AS MONEY
,@TotalVolWeight AS MONEY
,@RevisionNumber AS INT
,@BuyerName AS NVARCHAR(50)
,@SalesDocNo AS NVARCHAR(50)
,@IsAdjusting AS BIT
)
AS
BEGIN
IF (@IsAdjusting = 0)
INSERT INTO tblOrderDocP (
[strOrdPDocID]
,[dteSystemDate]
,[dteJournalDate]
,[dteRequired]
,[strUserName]
,[strVendName]
,[strShipTo]
,[decSubTotal]
,[decVAT]
,[decTotal]
,[strNotes]
,[bitPrinted]
,[bitEmailed]
,[bitCleared]
,[intDocType]
,[strBoughtFrom]
,[strCurrency]
,[bitIsForeign]
,[decSubTotalF]
,[decVATF]
,[decTotalF]
,[decExchange]
,[strTerm]
,[intDept]
,[strField1]
,[strField2]
,[strField3]
,[strField4]
,[strField5]
,[strField6]
,[strField7]
,[strField8]
,[strField9]
,[strField10]
,[strField11]
,[strField12]
,[strSubFormated]
,[strVATFormatted]
,[strTotFormatted]
,[decDiscPerc]
,[decDiscAmt]
,[decDiscAmtF]
,[strDiscFormatted]
,[strOrdFQDocID]
,[bitFQConvert]
,bitSOCopy
,bitSOCopyMulti
,[strStatusTypeCode]
,[bitBookmark]
,strAddInfo
,strReference
,strOrdRFQDocID
,bitRFQConvert
,decNetItemWeight
,decNetVolumetricWeight
,intRevisionNumber
,strBuyerName
,strSalesDocNo
)
VALUES (
@OrdPDocID
,@SystemDate
,@JournalDate
,@Required
,@UserName
,@VendName
,@ShipTo
,@SubTotal
,@VAT
,@Total
,@Notes
,@IsPrinted
,@IsEmailed
,@IsCleared
,@DocType
,@BoughtFrom
,@Currency
,@IsForeign
,@SubTotalF
,@VATF
,@TotalF
,@ExchangeRate
,@Term
,@Dept
,@Field1
,@Field2
,@Field3
,@Field4
,@Field5
,@Field6
,@Field7
,@Field8
,@Field9
,@Field10
,@Field11
,@Field12
,@SubFormatted
,@VATFormatted
,@TotalFormatted
,@DiscountPercentage
,@DiscountAmount
,@DiscAmtF
,@DiscountFormatted
,@OrdFQDocID
,@IsFQConvert
,@IsSalesOrderCopy
,@IsSalesOrderCopyMulti
,@StatusTypeCode
,@IsBookmark
,@AdditionalInfo
,@Reference
,@OrdRFQDocID
,@IsRFQConvert
,@TotalWeight
,@TotalVolWeight
,@RevisionNumber
,@BuyerName
,@SalesDocNo
)
ELSE
UPDATE tblOrderDocP
SET strVendName = @VendName
,dteSystemDate = @SystemDate
,dteJournalDate = @JournalDate
,dteRequired = @Required
,strUserName = @UserName
,strShipTo = @ShipTo
,decSubTotal = @SubTotal
,decVAT = @VAT
,decTotal = @Total
,strNotes = @Notes
,strBoughtFrom = @BoughtFrom
,strCurrency = @Currency
,bitIsForeign = @IsForeign
,decSubTotalF = @SubTotalF
,decVATF = @VATF
,decTotalF = @TotalF
,decExchange = @ExchangeRate
,strTerm = @Term
,intDept = @Dept
,strField1 = @Field1
,strField2 = @Field2
,strField3 = @Field3
,strField4 = @Field4
,strField5 = @Field5
,strField6 = @Field6
,strField7 = @Field7
,strField8 = @Field8
,strField9 = @Field9
,strField10 = @Field10
,strField11 = @Field11
,strField12 = @Field12
,strSubFormated = @SubFormatted
,strVATFormatted = @VATFormatted
,strTotFormatted = @TotalFormatted
,decDiscPerc = @DiscountPercentage
,decDiscAmt = @DiscountAmount
,decDiscAmtF = @DiscAmtF
,strDiscFormatted = @DiscountFormatted
,bitSOCopy = @IsSalesOrderCopy
,bitSOCopyMulti = @IsSalesOrderCopyMulti
,strStatusTypeCode = @StatusTypeCode
,bitBookmark = @IsBookmark
,strAddInfo = @AdditionalInfo
,strReference = @Reference
,decNetItemWeight = @TotalWeight
,decNetVolumetricWeight = @TotalVolWeight
,intRevisionNumber = @RevisionNumber
,strBuyerName = @BuyerName
WHERE strOrdPDocID = @OrdPDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertPOApprovalTrackingData] (
@ReqQuoteDocID AS NVARCHAR(50)
,@NewPODocID AS NVARCHAR(50)
,@DocTotalIncl AS DECIMAL
,@DocCreatorUsername AS NVARCHAR(50)
,@ApproverUsername AS NVARCHAR(50)
,@DocCreationDate AS DATETIME
,@DateofApproval AS DATETIME
,@DeclineReasonCodeText AS VARCHAR(max)
,@IsShowStatus AS BIT
)
AS
BEGIN
INSERT INTO tblPOApprovalTracking (
[strReqQuoteDocID]
,[strNewPODocID]
,[decDocTotalIncl]
,[strDocCreatorUsername]
,[strApproverUsername]
,[dteDocCreationDate]
,[dteDateofApproval]
,[strDeclineReasonCodeText]
,[blnShowStatus]
)
VALUES (
@ReqQuoteDocID
,@NewPODocID
,@DocTotalIncl
,@DocCreatorUsername
,@ApproverUsername
,@DocCreationDate
,@DateofApproval
,@DeclineReasonCodeText
,@IsShowStatus
)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteOrderDocPDTData] @DocNumber AS NVARCHAR(50)
AS
BEGIN
DELETE
FROM tblOrderDocPDT
WHERE strOrdPDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertOrderDocPDTData]
@OrderDocDTData OrderDocPDTTableType READONLY
AS
BEGIN
INSERT INTO [dbo].[tblOrderDocPDT]
([strOrdPDocID]
,[intLineNo]
,[strPartNumber]
,[strLocation]
,[strPartDesc]
,[decBuyQty]
,[decBuyQtyRemain]
,[strBuyUnit]
,[decStockQty]
,[decStockQtyRemain]
,[strStockUnit]
,[intType]
,[decPriceEaExc]
,[decLineTotExc]
,[decLineTaxAmt]
,[strTaxCode]
,[decEaIncTax]
,[decTotIncTax]
,[imgTaxObj]
,[strCurrency]
,[bitIsForeign]
,[decPriceEaExcF]
,[decLineTotExcF]
,[decLineTaxAmtF]
,[decEaIncTaxF]
,[decTotIncTaxF]
,[strInvField1]
,[strInvField2]
,[strInvField3]
,[strInvField4]
,[strInvField5]
,[strInvField6]
,[strLineField1]
,[strLineField2]
,[strLineField3]
,[strLineField4]
,[strLineField5]
,[strLineField6]
,[strLineField7]
,[strLineField8]
,[strLineField9]
,[strLineField10]
,[strLineField11]
,[strLineField12]
,[decLineDiscPerc]
,[decLineDiscAmt]
,[decLineDiscAmtF]
,[bitDiscountTax]
,[strOrdSODocID]
,[strPartExtendedDesc]
,[decItemWeight]
,[decVolumetricWeight]
,[uidTransactionFieldID]
,[intSODocItemLineNo]
,[strProcessJobDocID]
,[intPJDocItemLineNo])
SELECT * FROM @OrderDocDTData             
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertOrderDocPDTPrj] @OrderDocDTPrjData InvOrderDocDTPrjTableType READONLY
AS
BEGIN
INSERT INTO [dbo].[tblOrderDocPDTPrj] (
[strOrdPDocID]
,[intLineNo]
,[strProjNumber]
)
SELECT *
FROM @OrderDocDTPrjData
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertOrderDocPDTSerial] @OrderDocDTSerialData OrderDocDTSerialTableType READONLY
AS
BEGIN
INSERT INTO [dbo].[tblOrderDocPDTSerial] (
[strOrdPDocID]
,[intLineNo]
,[strSerialNumber]
,[decQty]
,[strUnit]
,[bitExpiryDate]
,[dteExpiryDate]
,[intSerialLotType]
)
SELECT *
FROM @OrderDocDTSerialData
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvoiceDocPDimensions] (
@InvoiceDocDimensionsData InvoiceDocDimensionsTableType READONLY
,@IsDeleteRecordFirst AS BIT
,@DocumentNumber AS NVARCHAR(50)
)
AS
BEGIN
IF @IsDeleteRecordFirst = 1
BEGIN
DELETE
FROM tblInvoiceDocPDimensions
WHERE strInvPDocID = @DocumentNumber
END
INSERT INTO [dbo].[tblInvoiceDocPDimensions] (
[strInvPDocID]
,[intDocLineNo]
,[intDimLineNo]
,[intDimColNo]
,[decValue]
,[strDimColHeading]
,[bitVisible]
,[bitAllowEditing]
)
SELECT *
FROM @InvoiceDocDimensionsData
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertPurchaseTargetBudgetInfo] (
@PurchaseTargetBudgetInfoData InvPurchaseTargetBudgetInfoTableType READONLY
,@TransactionType AS NVARCHAR(50)
,@DocumentNumber AS NVARCHAR(50)
)
AS
BEGIN
DELETE
FROM tblInvPurchaseTargetBudgetInfo
WHERE strTransactionType = @TransactionType
AND strDocNumber = @DocumentNumber
INSERT INTO [dbo].[tblInvPurchaseTargetBudgetInfo] (
[strPartNumber]
,[strDesc]
,[intLineNo]
,[strTransactionType]
,[strDocNumber]
,[dteDate]
,[decPeriodBudget]
,[decPeriodCommitment]
,[decPeriodVariance]
,[decYearToDateBudget]
,[decYearToDateCommitment]
,[decYearToDateVariance]
,[strVendName]
,[decAmount]
,[strReference]
,[strApprovedBy]
,[dteDateofApproval]
,[strReasonCode]
)
SELECT *
FROM @PurchaseTargetBudgetInfoData
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InvoiceDocREVInsertForPurchase]	
@Module AS INT,
@DocNumber AS NVARCHAR(50)
AS
DECLARE @RevisionId AS BIGINT
DECLARE @RevisioNumber AS BIGINT
BEGIN	
SELECT @RevisionId = ISNULL(MAX(lngEntID),0) + 1 FROM tblInvoiceDocREV
SELECT @RevisioNumber = ISNULL(MAX(intRevisionNumber),0) + 1 FROM tblInvoiceDocREV WHERE strInvDocID = @DocNumber
INSERT INTO tblInvoiceDocREV (
lngEntID
,strInvDocID
,lngInvTrackID
,lngJourID
,dteSystemDate
,dteJournalDate
,dteRequired
,strUserName
,strCustName
,strSoldTo
,strShipTo
,strReference
,decSubTotal
,decVAT
,decTotal
,bitFromSO
,strOrdDocID
,bitHistoryTrans
,strNotes
,bitPrinted
,bitEmailed
,intPaidBy
,intAccount
,strSalesName
,strAddInfo
,bitReserved
,strCurrency
,bitIsForeign
,decSubTotalF
,decVATF
,decTotalF
,decExchange
,strTerm
,intDept
,strField1
,strField2
,strField3
,strField4
,strField5
,strField6
,strField7
,strField8
,strField9
,strField10
,strField11
,strField12
,strSubFormated
,strVATFormatted
,strTotFormatted
,dteField13
,dteField14
,decDiscPerc
,decDiscAmt
,decDiscAmtF
,strDiscFormatted
,strOrdFQDocID
,strStatusTypeCode
,strCNReasonCode
,bitBookmark
,dteSystemDateTime
,strPaidBy
,intSentDoc
,strVAT
,strDelMethodCode
,decTotalWeight
,decTotalVolWeight
,intRevisionNumber
,dteRevisionDate
,strUserCreated
,bitIsRepair
,strVendName
,strBoughtFrom
,bitFQConvert
,bitSOCopy
,bitSOCopyMulti
,strVendInvNo
,bitFromPO
,decNetItemWeight
,decNetVolumetricWeight
,strSourceMOP
,bitCleared
,strOrdRFQDocID
,bitRFQConvert
,strOrdPDocID
,intModule
,strSOReasonCode
,strDelNoteNo
,strContractTo
,strContBillType
,blnAllowAnnualIncrease
,intContractPriceIncrease
,dtpIncreaseStartDate
,bitInactive
,strStoreNumber
,strEDI
)
SELECT @RevisionId
,strOrdPDocID
,NULL
,NULL
,dteSystemDate
,dteJournalDate
,dteRequired
,strUserName
,NULL
,NULL
,strShipTo
,strReference
,decSubTotal
,decVAT
,decTotal
,NULL
,NULL
,NULL
,strNotes
,bitPrinted
,bitEmailed
,NULL
,NULL
,NULL
,strAddInfo
,NULL
,strCurrency
,bitIsForeign
,decSubTotalF
,decVATF
,decTotalF
,decExchange
,strTerm
,intDept
,strField1
,strField2
,strField3
,strField4
,strField5
,strField6
,strField7
,strField8
,strField9
,strField10
,strField11
,strField12
,strSubFormated
,strVATFormatted
,strTotFormatted
,NULL
,NULL
,decDiscPerc
,decDiscAmt
,decDiscAmtF
,strDiscFormatted
,strOrdFQDocID
,strStatusTypeCode
,NULL
,bitBookmark
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,@RevisioNumber
,dteSystemDate
,strUserName
,NULL
,strVendName
,strBoughtFrom
,bitFQConvert
,bitSOCopy
,bitSOCopyMulti
,NULL
,NULL
,decNetItemWeight
,decNetVolumetricWeight
,NULL
,bitCleared
,strOrdRFQDocID
,bitRFQConvert
,NULL
,@Module
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
FROM tblOrderDocP
WHERE strOrdPDocID = @DocNumber
BEGIN TRY  
INSERT INTO tblInvoiceDocREVDT (
lngEntID
,strInvDocID
,intLineNo
,strPartNumber
,strLocation
,strPartDesc
,decQty
,strUnit
,intType
,decPriceEaExc
,decLineTotExc
,decLineTaxAmt
,decPriceEaInc
,decLineTotInc
,strTaxCode
,imgTaxObj
,strCurrency
,bitIsForeign
,decPriceEaExcF
,decLineTotExcF
,decLineTaxAmtF
,decEaIncTaxF
,decTotIncTaxF
,strInvField1
,strInvField2
,strInvField3
,strInvField4
,strInvField5
,strInvField6
,strLineField1
,strLineField2
,strLineField3
,strLineField4
,strLineField5
,strLineField6
,strLineField7
,strLineField8
,strLineField9
,strLineField10
,strLineField11
,strLineField12
,decLineDiscPerc
,decLineDiscAmt
,decLineDiscAmtF
,bitDiscountTax
,decStockQty
,strStockUnit
,decStandardCost
,decLastPPUnit
,strSalesName
,decCOGS
,decSOQty
,decSOQtyRemain
,strPartExtendedDesc
,decItemWeight
,decVolumetricWeight
,bitContainerItem
,decBuyQty
,decBuyQtyRemain
,strBuyUnit
,decEaIncTax
,decTotIncTax
,strOrdSODocID
,decStockQtyRemain
,decBuyoutCost
,decQtyRemaining
,intStatus
,uidTransactionFieldID
,strContBillType
,blnAllowAnnualIncrease
,intContractPriceIncrease
,dtpIncreaseStartDate
,dtpSetUpDate
,dtpActivationDate
,dtpTerminationDate
,dtpExpirationDate
,dtpBillingSchduleStart
,strBillingFrequncy
,dtpLastBillDate
,dtpNextBillDate
,dtpNextInvoiceDate
,decUsedQty
)
SELECT @RevisionId
,strOrdPDocID
,intLineNo
,strPartNumber
,strLocation
,strPartDesc
,NULL
,NULL
,intType
,decPriceEaExc
,decLineTotExc
,decLineTaxAmt
,NULL
,NULL
,strTaxCode
,imgTaxObj
,strCurrency
,bitIsForeign
,decPriceEaExcF
,decLineTotExcF
,decLineTaxAmtF
,decEaIncTaxF
,decTotIncTaxF
,strInvField1
,strInvField2
,strInvField3
,strInvField4
,strInvField5
,strInvField6
,strLineField1
,strLineField2
,strLineField3
,strLineField4
,strLineField5
,strLineField6
,strLineField7
,strLineField8
,strLineField9
,strLineField10
,strLineField11
,strLineField12
,decLineDiscPerc
,decLineDiscAmt
,decLineDiscAmtF
,bitDiscountTax
,decStockQty
,strStockUnit
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,strPartExtendedDesc
,decItemWeight
,decVolumetricWeight
,NULL
,decBuyQty
,decBuyQtyRemain
,strBuyUnit
,decEaIncTax
,decTotIncTax
,strOrdSODocID
,decStockQtyRemain
,NULL
,NULL
,1
,uidTransactionFieldID
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
FROM tblOrderDocPDT
WHERE strOrdPDocID = @DocNumber
END TRY
BEGIN CATCH
END CATCH
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateVendorsNumbers] @VendorNumber AS NVARCHAR(50)
	,@OldVendorNumber AS NVARCHAR(50)
	,@IsVendorChanged AS BIT
AS
BEGIN
	UPDATE tblVendors
	SET decOpenOrders = ISNULL((
				SELECT SUM(ROUND(((DTL.decLineTotExc + DTL.decLineTaxAmt) / DTL.decBuyQty) * DTL.decBuyQtyRemain, 2))
				FROM tblOrderDocP HDR
				INNER JOIN tblOrderDocPDT DTL ON HDR.strOrdPDocID = DTL.strOrdPDocID
				WHERE HDR.strVendName = @VendorNumber
					AND (HDR.bitCleared = 0)
					AND (HDR.intDocType = 1)
				), 0)
		,decOpenOrdersF = ISNULL((
				SELECT SUM(ROUND(((DTL.decLineTotExcF + DTL.decLineTaxAmtF) / DTL.decBuyQty) * DTL.decBuyQtyRemain, 2))
				FROM tblOrderDocP HDR
				INNER JOIN tblOrderDocPDT DTL ON HDR.strOrdPDocID = DTL.strOrdPDocID
				WHERE HDR.strVendName = @VendorNumber
					AND (HDR.bitCleared = 0)
					AND (HDR.intDocType = 1)
				), 0)
	WHERE strVendName = @VendorNumber

	IF (@IsVendorChanged = 1)
		UPDATE tblVendors
		SET decOpenOrders = ISNULL((
					SELECT SUM(ROUND(((DTL.decLineTotExc + DTL.decLineTaxAmt) / DTL.decBuyQty) * DTL.decBuyQtyRemain, 2))
					FROM tblOrderDocP HDR
					INNER JOIN tblOrderDocPDT DTL ON HDR.strOrdPDocID = DTL.strOrdPDocID
					WHERE HDR.strVendName = @OldVendorNumber
						AND (HDR.bitCleared = 0)
						AND (HDR.intDocType = 1)
					), 0)
			,decOpenOrdersF = ISNULL((
					SELECT SUM(ROUND(((DTL.decLineTotExcF + DTL.decLineTaxAmtF) / DTL.decBuyQty) * DTL.decBuyQtyRemain, 2))
					FROM tblOrderDocP HDR
					INNER JOIN tblOrderDocPDT DTL ON HDR.strOrdPDocID = DTL.strOrdPDocID
					WHERE HDR.strVendName = @OldVendorNumber
						AND (HDR.bitCleared = 0)
						AND (HDR.intDocType = 1)
					), 0)
		WHERE strVendName = @OldVendorNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateOrderDocPClearedFlag] @DocNumber AS NVARCHAR(50)
AS
BEGIN
UPDATE tblOrderDocP
SET bitCleared = 1
WHERE strOrdPDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateIDsForPurchases] @NextPONumber AS BIGINT = NULL
,@NextRQNumber AS BIGINT = NULL
,@IsRequisition AS BIT = NULL
AS
BEGIN
IF (@IsRequisition = 1)
BEGIN
UPDATE tblLastIDs
SET lngRQNumber = @NextRQNumber
END
ELSE
BEGIN
UPDATE tblLastIDs
SET lngPONumber = @NextPONumber
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [UpdateInvPriceData] 
@SQdecSelling as money,
@SQstrPricelist as nvarchar(20),
@SqlPriceBaseId as uniqueidentifier,
@SQstrPartNumber as nvarchar(50)
AS
BEGIN
UPDATE tblInvPrice
SET decSelling = @SQdecSelling
WHERE strPricelist = @SQstrPricelist
AND uidPriceBasedID = @SqlPriceBaseId
AND strPartNumber = @SQstrPartNumber;
END
GO

----------------------------------------------------
Create PROCEDURE [dbo].[InsertInvPriceTrackingData] @PartNumber AS NVARCHAR(50) = NULL  
,@UserName AS NVARCHAR(50) = NULL  
,@Source AS NVARCHAR(50) = NULL  
,@Pricelist AS NVARCHAR(50) = NULL  
,@PriceFrom AS MONEY = NULL  
,@PriceTo AS MONEY = NULL  
,@UId AS UNIQUEIDENTIFIER = NULL  
,@PromotionalPriceOld AS MONEY = NULL  
,@PromotionalStartDateOld AS DATETIME = NULL  
,@PromotionalEndDateOld AS DATETIME = NULL  
,@IsPromotionalStatusOld AS BIT = NULL  
,@PromotionalPriceNew AS MONEY = NULL  
,@PromotionalStartDateNew AS DATETIME = NULL  
,@PromotionalEndDateNew AS DATETIME = NULL  
,@IsPromotionalStatusNew AS BIT = NULL  
AS  
BEGIN  
DECLARE @InvPriceTrackID AS MONEY  
SELECT @InvPriceTrackID = (ISNULL(MAX(lngInvPriceTrackID), 0) + 1)  
FROM tblInvPriceTracking  
INSERT INTO tblInvPriceTracking (  
lngInvPriceTrackID  
,strPartNumber  
,dteUpdatedDate  
,strUserName  
,strSource  
,strPricelist  
,uidPriceBasedID  
,decPriceFrom  
,decPriceTo  
,decpromotionalPriceFrom  
,decpromotionalPriceTo  
,dtepromotionalPriceStartDateFrom  
,dtepromotionalPriceStartDateTo  
,dtepromotionalPriceEndDateFrom  
,dtepromotionalPriceEndDateTo  
,bitpromotionalPriceStatusFrom  
,bitpromotionalPriceStatusTo  
)  
VALUES (  
@InvPriceTrackID  
,@PartNumber  
,GetDate()  
,@UserName  
,@Source  
,@Pricelist  
,@UId  
,@PriceFrom  
,@PriceTo  
,@PromotionalPriceOld  
,@PromotionalPriceNew  
,@PromotionalStartDateOld  
,@PromotionalStartDateNew  
,@PromotionalEndDateOld  
,@PromotionalEndDateNew  
,@IspromotionalStatusOld  
,@IspromotionalStatusNew  
)  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetApprovalsDocLimitData] (
	@DocNumber NVARCHAR(100)
	,@GroupId INT
	)
AS
BEGIN
	SET NOCOUNT ON;

	BEGIN
		IF (@DocNumber LIKE 'CR-%')
		BEGIN
			SELECT strUserName AS UserName
				,PreferredNotification AS PreferredNotification
				,intApproverGroupId AS ApproverGroupId
			FROM tblApprovalsDocLimit(NOLOCK)
			WHERE priorityLevel = (
					SELECT MIN(tblApprovalsDocLimit.priorityLevel)
					FROM tblApprovalsDocLimit(NOLOCK)
					INNER JOIN tblCNApprovalsUserTracking(NOLOCK) ON tblApprovalsDocLimit.intApproverGroupId = tblCNApprovalsUserTracking.intGroupId
						AND tblApprovalsDocLimit.strUserName = tblCNApprovalsUserTracking.strUserName
					INNER JOIN tblOrderDoc(NOLOCK) ON tblCNApprovalsUserTracking.strOrdDocID = tblOrderDoc.strOrdDocID
					WHERE tblCNApprovalsUserTracking.strOrdDocID = @DocNumber
						AND tblApprovalsDocLimit.intApproverGroupId = @GroupId
						AND tblCNApprovalsUserTracking.intApprovalStatus = 0
						AND tblOrderDoc.bitCleared = 0
						AND tblOrderDoc.intDocType = 1
					)
				AND intApproverGroupId = @GroupId
				AND intApproverType = 2
		END
		ELSE
		BEGIN
			SELECT strUserName AS UserName
				,PreferredNotification AS PreferredNotification
				,intApproverGroupId AS ApproverGroupId
			FROM tblApprovalsDocLimit(NOLOCK)
			WHERE priorityLevel = (
					SELECT MIN(tblApprovalsDocLimit.priorityLevel)
					FROM tblApprovalsDocLimit(NOLOCK)
					INNER JOIN tblPQApprovalsUserTracking(NOLOCK) ON tblApprovalsDocLimit.intApproverGroupId = tblPQApprovalsUserTracking.intGroupId
						AND tblApprovalsDocLimit.strUserName = tblPQApprovalsUserTracking.strUserName
					INNER JOIN tblOrderDocP(NOLOCK) ON tblPQApprovalsUserTracking.strOrdPDocID = tblOrderDocP.strOrdPDocID
					WHERE tblPQApprovalsUserTracking.strOrdPDocID = @DocNumber
						AND tblApprovalsDocLimit.intApproverGroupId = @GroupId
						AND tblPQApprovalsUserTracking.intApprovalStatus = 0
						AND tblOrderDocP.bitCleared = 0
						AND tblOrderDocP.intDocType = 2
					)
				AND intApproverGroupId = @GroupId
				AND intApproverType = 0
		END
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetApproversList] (@DocNumber NVARCHAR(100))
AS
BEGIN
SET NOCOUNT ON;
BEGIN
SELECT tblPQApprovalsUserTracking.ID AS ApprovalStatusId
,tblPQApprovalsGroup.strGroupName AS GroupName
,tblUsers.strName AS ApproverName
,tblPQApprovalsUserTracking.intApprovalStatus AS IntApprovalStatus
,tblPQApprovalsUserTracking.rowUpdated AS RowUpdated
,(
SELECT tblApprovalsDocLimit.PreferredNotification
FROM tblApprovalsDocLimit
WHERE intApproverGroupId = tblPQApprovalsGroup.ID
AND tblApprovalsDocLimit.strUserName = tblPQApprovalsUserTracking.strUserName
) AS [Notification]
FROM tblOrdersDocP_POApprovals
INNER JOIN tblPQApprovalsGroup ON tblPQApprovalsGroup.ID = tblOrdersDocP_POApprovals.intGroupId
INNER JOIN tblPQApprovalsUserTracking ON tblOrdersDocP_POApprovals.strOrdPDocID = tblPQApprovalsUserTracking.strOrdPDocID
INNER JOIN tblUsers ON tblPQApprovalsUserTracking.strUserName = tblUsers.strUserName
WHERE tblOrdersDocP_POApprovals.strOrdPDocID = @DocNumber
END
END
GO

----------------------------------------------------
Create PROCEDURE [dbo].[GetInvoiceDocPData]
(
@DocNumber AS NVARCHAR(50) 
)
AS
BEGIN
SELECT lngJourID as JourID,dteJournalDate as JournalDate,ISNULL((CASE WHEN bitIsForeign = 1 THEN decTotalF ELSE decTotal END),0) as Total
FROM tblInvoiceDocP WHERE strInvPDocID = @DocNumber
end
Go

----------------------------------------------------
Create PROCEDURE [dbo].[UPDATEOrderDocPGDT]
@QtyRemain DECIMAL
,@StockQtyRemain DECIMAL
,@OrdPGDocID NVARCHAR(50)
,@POline INT
AS
BEGIN
UPDATE tblOrderDocPGDT
SET decBuyGRVQtyRemain = @QtyRemain
,decStockGRVQtyRemain = @StockQtyRemain
WHERE strOrdPGDocID  = @OrdPGDocID
AND intLineNo = @POline
END
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvoiceDocPDTData]
(
@DocumentId VARCHAR(50)
)
AS
BEGIN
SELECT tblInvoiceDocPDT.strPartNumber AS PartNumber
,tblInvoiceDocPDT.strLocation AS Location
,tblInvoiceDocPDT.decStockQty AS Qty
,tblInvoiceDocPDT.intLineNo AS [LineNo]
,tblInvoiceDocPDT.decLineTotExc AS LineValue
,tblInvoiceDocPDT.bitDiscountTax AS IsDiscountTax
FROM tblInvoiceDocP
INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
WHERE (tblInvoiceDocP.strInvPDocID = @DocumentId)	
ORDER BY [LineNo]
END
GO

----------------------------------------------------
CREATE PROCEDURE GetInvTrackingBinDataPurchases
@DocNumber AS NVARCHAR(50)
AS
BEGIN	
SELECT tblInvTrackingDT.strPartNumber AS PartNumber
,tblInvTrackingDT.strLocName AS LocName
,tblInvTrackingDTBin.decQty AS Qty
,tblInvTrackingDT.intLineNo AS [LineNo]
,tblInvTrackingDTBin.lngBinId AS BinId
FROM tblInvTrackingDTBin
INNER JOIN tblInvTrackingDT ON tblInvTrackingDTBin.lngInvTrackId = tblInvTrackingDT.lngInvTrackID
AND tblInvTrackingDTBin.intLineNo = tblInvTrackingDT.intLineNo
INNER JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
INNER JOIN tblInvoiceDocP ON tblInvoiceDocP.lngInvTrackID = tblInvTracking.lngInvTrackID
WHERE tblInvoiceDocP.strInvPDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UPDATEOrderDocPG] @DocNumber NVARCHAR(50)
AS
BEGIN
UPDATE tblOrderDocPG
SET bitCleared = 1
WHERE strOrdPGDocID = @DocNumber
END
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdatePurchaseInventoryTracking]
@Source varchar(50)
AS
BEGIN	
UPDATE tblInvTracking SET intModule = 7 WHERE intModule = 2 AND strSource = @Source
END
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPGAmount]
@OrdPGDocID AS NVARCHAR(50),
@LineNo AS INT
AS
BEGIN	
SELECT CASE WHEN 
tblOrderDocPG.bitIsForeign = 0 THEN
tblOrderDocPGDT.decPriceEaExc ELSE tblOrderDocPGDT.decPriceEaExcF 
END AS Price,  tblOrderDocPGDT.decBuyQty AS BuyQty, 
tblOrderDocPGDT.decBuyGRVQtyRemain AS BuyGRVQtyRemain,  
tblOrderDocPGDT.decStockGRVQtyRemain As StockGRVQtyRemain 
FROM tblOrderDocPG INNER JOIN tblOrderDocPGDT
ON tblOrderDocPG.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID  
WHERE tblOrderDocPG.strOrdPGDocID = @OrdPGDocID AND
tblOrderDocPGDT.intLineNo = @LineNo
END
GO

----------------------------------------------------
create procedure [dbo].[GetPurchasesVarianceAccount] 
@InvLocation NVARCHAR(500)
,@PartNumber NVARCHAR(50)
,@Type as int
AS
BEGIN
if(@Type = 5)
Begin
SELECT intExpAcct as VarianceAccount 
FROM tblInv WHERE strPartNumber = @PartNumber
end
else
Begin
SELECT Case When @Type = 1 
then intGLVariance else intGLExpCOGS End as VarianceAccount
FROM tblAccountSets
WHERE strAcctSet = dbo.fnAcctSetLocation(@PartNumber, @InvLocation)
END
End
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertPurchaseInvoiceHeader]
(  
@InvPDocID AS nvarchar(50),  
@InvTrackID AS bigint,  
@JourID AS bigint,  
@SystemDate AS datetime,  
@JournalDate AS datetime,  
@Required AS datetime,  
@UserName AS nvarchar(20),  
@VendName AS nvarchar(50),  
@ShipTo AS nvarchar(500),  
@VendInvNo as nvarchar(100),
@SubTotal AS money,  
@VAT AS money,  
@Total AS money,  
@IsFromPO AS bit,  
@OrdPDocID AS nvarchar(50), 
@SourceMOP AS nvarchar(100), 
@IsHistoryTrans as bit,
@Notes AS nvarchar(MAX), 
@IsPrinted AS bit, 
@IsEmailed AS bit,
@PaidBy AS int,  
@Account AS nvarchar(30),  
@Currency AS nvarchar(3),  
@IsForeign AS bit,  
@SubTotalF AS money,  
@VATF AS money,  
@TotalF AS money,  
@Exchange AS MONEY,  
@Term AS nvarchar(50),  
@Dept AS int,  
@Field1 AS nvarchar(100),  
@Field2 AS nvarchar(100),  
@Field3 AS nvarchar(100),  
@Field4 AS nvarchar(100),  
@Field5 AS nvarchar(100),  
@Field6 AS nvarchar(100),  
@Field7 AS nvarchar(100),  
@Field8 AS nvarchar(100),  
@Field9 AS nvarchar(100),  
@Field10 AS nvarchar(100),  
@Field11 AS nvarchar(100),  
@Field12 AS nvarchar(100),  
@SubFormatted AS nvarchar(50),  
@VATFormatted AS nvarchar(50),  
@TotalFormatted AS nvarchar(50), 
@DiscountPercentage AS money, 
@DiscountAmount AS money,  
@DiscountAmountF AS money,  
@DiscountFormatted AS nvarchar(50),  
@OrdFQDocID AS nvarchar(50),
@IsFQConvert AS bit,
@IsSOCopy  AS bit,
@IsSOCopyMulti AS bit,
@StatusTypeCode AS nvarchar(20),  
@IsBookmark AS bit,  
@AddInfo AS nvarchar(50),  
@Reference AS nvarchar(50),
@PaidByString AS nvarchar(20),  
@NetWeight AS money,  
@NetVolWeight AS money,  
@RevisionNumber AS int,  
@AccrualProcess int = 1,
@BuyerName as nvarchar(100)
)  
AS  
BEGIN  
INSERT INTO [dbo].[tblInvoiceDocP]
([strInvPDocID]
,[lngInvTrackID]
,[lngJourID]
,[dteSystemDate]
,[dteJournalDate]
,[dteRequired]
,[strUserName]
,[strVendName]
,[strShipTo]
,[strVendInvNo]
,[decSubTotal]
,[decVAT]
,[decTotal]
,[bitFromPO]
,[strOrdPDocID]
,[strSourceMOP]
,[bitHistoryTrans]
,[strNotes]
,[bitPrinted]
,[bitEmailed]
,[intPaidBy]
,[intAccount]
,[strCurrency]
,[bitIsForeign]
,[decSubTotalF]
,[decVATF]
,[decTotalF]
,[decExchange]
,[strTerm]
,[intDept]
,[strField1]
,[strField2]
,[strField3]
,[strField4]
,[strField5]
,[strField6]
,[strField7]
,[strField8]
,[strField9]
,[strField10]
,[strField11]
,[strField12]
,[strSubFormated]
,[strVATFormatted]
,[strTotFormatted]
,[decDiscPerc]
,[decDiscAmt]
,[decDiscAmtF]
,[strDiscFormatted]
,[strOrdFQDocID]
,[bitFQConvert]
,[bitSOCopy]
,[bitSOCopyMulti]
,[strStatusTypeCode]
,[bitBookmark]
,[strAddInfo]
,[strReference]
,[strPaidBy]
,[decNetItemWeight]
,[decNetVolumetricWeight]
,[intRevisionNumber]
,[intAccrualProcess]
,[strBuyerName])
VALUES
(@InvPDocID
,@InvTrackID
,@JourID
,@SystemDate
,@JournalDate
,@Required
,@UserName
,@VendName
,@ShipTo
,@VendInvNo
,@SubTotal
,@VAT
,@Total
,@IsFromPO
,@OrdPDocID
,@SourceMOP
,@IsHistoryTrans
,@Notes
,@IsPrinted
,@IsEmailed
,@PaidBy
,@Account
,@Currency
,@IsForeign
,@SubTotalF
,@VATF
,@TotalF
,@Exchange
,@Term
,@Dept
,@Field1
,@Field2
,@Field3
,@Field4
,@Field5
,@Field6
,@Field7
,@Field8
,@Field9
,@Field10
,@Field11
,@Field12
,@SubFormatted
,@VATFormatted
,@TotalFormatted
,@DiscountPercentage
,@DiscountAmount
,@DiscountAmountF
,@DiscountFormatted
,@OrdFQDocID
,@IsFQConvert
,@IsSOCopy
,@IsSOCopyMulti
,@StatusTypeCode
,@IsBookmark
,@AddInfo
,@Reference
,@PaidByString
,@NetWeight
,@NetVolWeight
,@RevisionNumber
,@AccrualProcess
,@BuyerName)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[PurchasesInsertContraSerialLotTracking] (
	@DocID AS NVARCHAR(MAX)
	,--strExistingDANumber  
	@IsMultipleGRV AS BIT
	,@Type AS TINYINT
	,--PL_SerialNumberTypes.DeliveryAdvice  
	@Status AS TINYINT
	,--PL_SerialNumberStatus.StatusIn  
	@UserName AS NVARCHAR(20)
	,--PL_oCurrentUser.UserName  
	@DocNumber AS NVARCHAR(100) --txtDocNumber.Text  
	)
AS
BEGIN
	--Exception Handling  
	BEGIN TRY
		DECLARE @ERR_MSG AS NVARCHAR(4000)
			,@Err_Severity INT
			,@ERR_STA AS SMALLINT
		--Create Table Variable  
		DECLARE @DetailsTable TABLE (
			RowNumber INT IDENTITY(0, 1)
			,PartNumber NVARCHAR(100)
			,SerialNumber NVARCHAR(200)
			,OrdPGDocID NVARCHAR(100)
			,[LineNo] INT
			,Qty MONEY
			,Location NVARCHAR(20)
			,IsExpiryDate BIT
			,ExpiryDate SMALLDATETIME
			,BinID BIGINT
			,SerialLotType INT
			,IsDimensionExist BIT
			,Dimension NVARCHAR(MAX)
			)

		--Inserting Contra Serial / Lot Number Tracking (Out)  
		IF (@IsMultipleGRV = 0)
		BEGIN
			INSERT INTO @DetailsTable
			SELECT z.strPartNumber AS 'PartNumber'
				,z.strSerialNumber AS 'SerialNumber'
				,z.strOrdPGDocID AS 'OrdPGDocID'
				,z.intLineNo AS 'LineNo'
				,z.decQty AS 'Qty'
				,z.strLocation AS 'Location'
				,z.bitExpiryDate AS 'IsExpiryDate'
				,z.dteExpiryDate AS 'ExpiryDate'
				,z.lngBinID AS 'BinID'
				,z.intSerialLotType AS 'SerialLotType'
				,Z.bitDimensionExist AS 'IsDimensionExist'
				,Z.strDimension 'Dimension'
			FROM (
				SELECT tblOrderDocPGDT.strPartNumber
					,tblOrderDocPGDTSerial.strSerialNumber
					,tblOrderDocPGDTSerial.strOrdPGDocID
					,tblOrderDocPGDTSerial.intLineNo
					,tblOrderDocPGDTSerial.decQty
					,tblOrderDocPGDT.strLocation
					,tblOrderDocPGDTSerial.bitExpiryDate
					,tblOrderDocPGDTSerial.dteExpiryDate
					,tblOrderDocPGDTSerial.lngBinID
					,tblOrderDocPGDTSerial.intSerialLotType
					,CASE 
						WHEN tblOrderDocPGDTSerial.intSerialLotType = 0
							THEN ISNULL(ISE.bitDimensionExist, 0)
						ELSE 0
						END AS bitDimensionExist
					,CASE 
						WHEN tblOrderDocPGDTSerial.intSerialLotType = 0
							THEN ISNULL(ISE.strDimension, '')
						ELSE '0'
						END AS strDimension
					,ISNULL((
							SELECT MAX(SNT.lngID)
							FROM tblSerialNumberTracking SNT
							WHERE (SNT.intLineNo = tblOrderDocPGDTSerial.intLineNo)
								AND (SNT.strSerialNumber = tblOrderDocPGDTSerial.strSerialNumber)
								AND (SNT.strDocID = tblOrderDocPGDTSerial.strOrdPGDocID)
								AND (SNT.intType = @Type)
							), 0) AS lngID
				FROM tblOrderDocPGDTSerial
				INNER JOIN tblOrderDocPGDT ON tblOrderDocPGDTSerial.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID
					AND tblOrderDocPGDTSerial.intLineNo = tblOrderDocPGDT.intLineNo
				LEFT JOIN tblInvSerialExt ISE ON tblOrderDocPGDT.strPartNumber = ISE.strPartNumber
					AND tblOrderDocPGDT.strLocation = ISE.strLocName
					AND tblOrderDocPGDTSerial.strSerialNumber = ISE.strSerialNumber
				WHERE tblOrderDocPGDTSerial.strOrdPGDocID = @DocID
				) Z
			INNER JOIN tblSerialNumberTracking ON tblSerialNumberTracking.strDocID = Z.strOrdPGDocID
				AND tblSerialNumberTracking.intLineNo = Z.intLineNo
				AND tblSerialNumberTracking.strSerialNumber = Z.strSerialNumber
				AND tblSerialNumberTracking.lngID = Z.lngID
			WHERE (tblSerialNumberTracking.intType = @Type)
				AND (tblSerialNumberTracking.intStatus <> @Status)
		END
		ELSE
		BEGIN
			INSERT INTO @DetailsTable
			SELECT z.strPartNumber AS 'PartNumber'
				,z.strSerialNumber AS 'SerialNumber'
				,z.strOrdPGDocID AS 'OrdPGDocID'
				,z.intLineNo AS 'LineNo'
				,z.decQty AS 'Qty'
				,z.strLocation AS 'Location'
				,z.bitExpiryDate AS 'IsExpiryDate'
				,z.dteExpiryDate AS 'ExpiryDate'
				,z.lngBinID AS 'BinID'
				,z.intSerialLotType AS 'SerialLotType'
				,Z.bitDimensionExist AS 'IsDimensionExist'
				,Z.strDimension 'Dimension'
			FROM (
				SELECT tblOrderDocPGDT.strPartNumber
					,tblOrderDocPGDTSerial.strSerialNumber
					,tblOrderDocPGDTSerial.strOrdPGDocID
					,tblOrderDocPGDTSerial.intLineNo
					,tblOrderDocPGDTSerial.decQty
					,tblOrderDocPGDT.strLocation
					,tblOrderDocPGDTSerial.bitExpiryDate
					,tblOrderDocPGDTSerial.dteExpiryDate
					,tblOrderDocPGDTSerial.lngBinID
					,tblOrderDocPGDTSerial.intSerialLotType
					,CASE 
						WHEN tblOrderDocPGDTSerial.intSerialLotType = 0
							THEN ISNULL(ISE.bitDimensionExist, 0)
						ELSE 0
						END AS bitDimensionExist
					,CASE 
						WHEN tblOrderDocPGDTSerial.intSerialLotType = 0
							THEN ISNULL(ISE.strDimension, '')
						ELSE '0'
						END AS strDimension
					,ISNULL((
							SELECT MAX(SNT.lngID)
							FROM tblSerialNumberTracking SNT
							WHERE (SNT.intLineNo = tblOrderDocPGDTSerial.intLineNo)
								AND (SNT.strSerialNumber = tblOrderDocPGDTSerial.strSerialNumber)
								AND (SNT.strDocID = tblOrderDocPGDTSerial.strOrdPGDocID)
								AND (SNT.intType = @Type)
							), 0) AS lngID
				FROM tblOrderDocPGDTSerial
				INNER JOIN tblOrderDocPGDT ON tblOrderDocPGDTSerial.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID
					AND tblOrderDocPGDTSerial.intLineNo = tblOrderDocPGDT.intLineNo
				LEFT JOIN tblInvSerialExt ISE ON tblOrderDocPGDT.strPartNumber = ISE.strPartNumber
					AND tblOrderDocPGDT.strLocation = ISE.strLocName
					AND tblOrderDocPGDTSerial.strSerialNumber = ISE.strSerialNumber
				WHERE tblOrderDocPGDTSerial.strOrdPGDocID IN (@DocID)
				) Z
			INNER JOIN tblSerialNumberTracking ON tblSerialNumberTracking.strDocID = Z.strOrdPGDocID
				AND tblSerialNumberTracking.intLineNo = Z.intLineNo
				AND tblSerialNumberTracking.strSerialNumber = Z.strSerialNumber
				AND tblSerialNumberTracking.lngID = Z.lngID
			WHERE (tblSerialNumberTracking.intType = @Type)
				AND (tblSerialNumberTracking.intStatus <> @Status)
		END

		-- Loop Through Table variable   
		SET NOCOUNT ON;

		DECLARE @NumberofIntType INT
			,@RowCount INT

		-- get the number of items  
		SET @NumberofIntType = (
				SELECT count(*)
				FROM @DetailsTable
				)
		SET @RowCount = 0 -- set the first row to 0  
			-- loop through the records   
			-- loop until the rowcount = number of records in your table  

		WHILE @RowCount < @NumberofIntType
		BEGIN
			-- do your process here  
			-- Declare All Columns  
			DECLARE @PartNumber NVARCHAR(100)
			DECLARE @SerialNumber NVARCHAR(200)
			DECLARE @OrdPGDocID NVARCHAR(100)
			DECLARE @LineNo INT
			DECLARE @Qty MONEY
			DECLARE @Location NVARCHAR(20)
			DECLARE @IsExpiryDate BIT
			DECLARE @ExpiryDate SMALLDATETIME
			DECLARE @BinID BIGINT
			DECLARE @SerialLotType INT
			DECLARE @IsDimensionExist BIT
			DECLARE @Dimension NVARCHAR(MAX)

			-- Set All Columns  
			SELECT @PartNumber = PartNumber
				,@SerialNumber = SerialNumber
				,@OrdPGDocID = OrdPGDocID
				,@LineNo = [LineNo]
				,@Qty = Qty
				,@Location = Location
				,@IsExpiryDate = IsExpiryDate
				,@ExpiryDate = ExpiryDate
				,@BinID = BinID
				,@SerialLotType = SerialLotType
				,@IsDimensionExist = IsDimensionExist
				,@Dimension = Dimension
			FROM @DetailsTable
			WHERE RowNumber = @RowCount

			-- Conditional Logic  
			IF @Qty < 0
			BEGIN
				SET @Status = 1 --PL_SerialNumberStatus.StatusIn  
			END
			ELSE
			BEGIN
				SET @Status = 2 --PL_SerialNumberStatus.StatusOut  
			END

			IF @SerialLotType = 0 --PL_SerialLotType.Serial Number  
			BEGIN
				DECLARE @InvSerialExtStatus TINYINT
				DECLARE @InvSerialExtLocName NVARCHAR(20)

				SELECT @InvSerialExtStatus = intStatus
					,@InvSerialExtLocName = strLocName
				FROM tblInvSerialExt
				WHERE strPartNumber = @PartNumber
					AND strSerialNumber = @SerialNumber

				IF @InvSerialExtStatus = @Status
					OR @InvSerialExtLocName <> @Location
				BEGIN
					--Exeception Raised  
					--SET @ERR_MSG = 'Cant Adjust Serial Items that Contain Subsequent Movement' --+ @SerialNumber         

					--RAISERROR (
					--		@ERR_MSG
					--		,@Err_Severity
					--		,@ERR_STA
					--		);

					--RETURN 1
					SET @RowCount = @RowCount + 1
					CONTINUE
				END
			END

			DECLARE @SerialLotQty MONEY = 0

			IF @Qty < 0
			BEGIN
				SET @SerialLotQty = @Qty
			END
			ELSE
			BEGIN
				IF @SerialLotType = 1 --PL_SerialLotType.LotControl  
				BEGIN
					SET @SerialLotQty = @Qty * (- 1)
				END
				ELSE
				BEGIN
					SET @SerialLotQty = 0
				END
			END

			IF @IsExpiryDate = 0 --False   
			BEGIN
				SET @ExpiryDate = NULL
			END

			INSERT INTO tblSerialNumberTracking (
				strPartNumber
				,strSerialNumber
				,strUserName
				,dteUpdatedDate
				,intType
				,strDocID
				,intLineNo
				,decQty
				,strLocation
				,intStatus
				,bitExpiryDate
				,dteExpiryDate
				,lngBinID
				)
			VALUES (
				@PartNumber
				,@SerialNumber
				,@UserName
				,GETDATE()
				,@Type
				,@DocID
				,@LineNo
				,@Qty
				,@Location
				,@Status
				,@IsExpiryDate
				,@ExpiryDate
				,@BinID
				)

			IF @SerialLotType = 1 --PL_SerialLotType.LotControl  
			BEGIN
				DECLARE @LotNumberCount BIGINT

				SELECT @LotNumberCount = COUNT(strLotNumber)
				FROM tblInvLotExt
				WHERE strPartNumber = @PartNumber
					AND strLotNumber = @SerialNumber
					AND strLocName = @Location
					AND lngBinId = @BinID

				IF @IsExpiryDate = 0 -- false  
				BEGIN
					SET @ExpiryDate = NULL
				END

				IF @LotNumberCount > 0
				BEGIN
					UPDATE tblInvLotExt
					SET decQty = decQty + @SerialLotQty
						,dteUpdatedDate = GETDATE()
					WHERE strPartNumber = @PartNumber
						AND strLotNumber = @SerialNumber
						AND strLocName = @Location
						AND lngBinId = @BinId
				END
				ELSE
				BEGIN
					INSERT INTO tblInvLotExt
					VALUES (
						@PartNumber
						,@SerialNumber
						,@Location
						,@SerialLotQty
						,@IsExpiryDate
						,@ExpiryDate
						,GETDATE()
						,@BinID
						,GETDATE()
						)
				END
			END
			ELSE
			BEGIN
				DECLARE @SerialNumberCount BIGINT

				SELECT @SerialNumberCount = COUNT(strSerialNumber)
				FROM tblInvSerialExt
				WHERE strPartNumber = @PartNumber
					AND strSerialNumber = @SerialNumber
					AND lngBinId = @BinId

				IF @IsDimensionExist = 0 -- false  
				BEGIN
					SET @Dimension = ''
				END

				IF @SerialNumberCount > 0
				BEGIN
					UPDATE tblInvSerialExt
					SET strLocName = @Location
						,decQty = @SerialLotQty
						,intStatus = @Status
						,strDocID = @OrdPGDocID
						,dteUpdatedDate = GETDATE()
					WHERE strPartNumber = @PartNumber
						AND strSerialNumber = @SerialNumber
						AND lngBinId = @BinId
				END
				ELSE
				BEGIN
					INSERT INTO tblInvSerialExt
					VALUES (
						@PartNumber
						,@SerialNumber
						,@Location
						,@SerialLotQty
						,@Status
						,@DocNumber
						,GETDATE()
						,@IsDimensionExist
						,@Dimension
						,@BinId
						,GETDATE()
						)
				END
			END

			SET @RowCount = @RowCount + 1
		END

		SELECT 'Success'
	END TRY

	BEGIN CATCH
		IF LEN(@ERR_MSG) > 0
			SELECT @ERR_MSG
		ELSE
		BEGIN
			SELECT @ERR_MSG = ERROR_MESSAGE()
				,@Err_Severity = ERROR_SEVERITY()
				,@ERR_STA = ERROR_STATE()

			RAISERROR (
					@ERR_MSG
					,@Err_Severity
					,@ERR_STA
					);
		END
	END CATCH
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertVendTransAndVendTransDT]
@VendTrID AS BIGINT,
@VendID AS NVARCHAR(50),
@SystemDate AS SMALLDATETIME,
@JournalDate AS SMALLDATETIME,
@UserName AS NVARCHAR(20),
@InvPDocID AS NVARCHAR(50),
@InvDepartment AS NVARCHAR(50),
@PoNumber AS NVARCHAR(50),
@TransType AS TINYINT,
@TransTypeDT AS TINYINT,
@InvAmount AS MONEY,
@InvAmountF AS MONEY,
@Currency AS NVARCHAR(3),
@Exchange AS MONEY,
@DiscAvail AS MONEY,
@DiscAvailF AS MONEY,
@IsForeign AS BIT,
@IsDocReRated AS BIT,
@ReRated AS DATETIME,
@ReRateCumltveValue AS MONEY,
@IsSettled AS BIT,
@DiscExpires AS DATETIME,
@DueDate AS DATETIME,
@JEDocID AS NVARCHAR(50),
@VendPayID AS BIGINT,
@AmtOwingAtTime AS MONEY,
@AmtOwingAtTimeF AS MONEY,
@IsReversed AS bit
AS
BEGIN
INSERT INTO [dbo].[tblVendTrans]
([lngVendTrID]
,[strVendName]
,[dteSystemDate]
,[dteJournalDate]
,[strUserName]
,[strInvPDocID]
,[strInvDepNumber]
,[strPoNumber]
,[intTransType]
,[decInvAmount]
,[decInvAmountF]
,[strCurrency]
,[bitIsForeign]
,[decExchange]
,[bitDocReRated]
,[dteReRated]
,[decReRateCumltveValue]
,[bitSettled]
,[decDiscAvail]
,[decDiscAvailF]
,[dteDiscExpires]
,[dteDueDate]
,[strJEDocID])
VALUES
( @VendTrID
,@VendID
,@SystemDate
,@JournalDate
,@UserName
,@InvPDocID
,@InvDepartment
,@PoNumber
,@TransType
,@InvAmount
,@InvAmountF
,@Currency
,@IsForeign
,@Exchange
,@IsDocReRated
,@ReRated
,@ReRateCumltveValue
,@IsSettled
,@DiscAvail
,@DiscAvailF
,@DiscExpires
,@DueDate
,@JEDocID
)
INSERT INTO [dbo].[tblVendTransDT]
([dteJournalDate]
,[lngVendTrID]
,[lngVendPayID]
,[decAmount]
,[intTransType]
,[decAmtOwingAtTime]
,[bitReversed]
,[decAmountF]
,[decAmtOwingAtTimeF]
,[bitIsForeign])
VALUES
(
@JournalDate
,@VendTrID
,@VendPayID
,@InvAmount
,@TransTypeDT
,@AmtOwingAtTime
,@IsReversed
,@InvAmountF
,@AmtOwingAtTimeF
,@IsForeign
)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[PurchasesInsertInvoiceDetails] (
	@InvoiceDocPDTData AS InvoiceDocPDTTableType READONLY
	,@InvoiceDocDTPrjData AS InvOrderDocPDTPrjTableType READONLY
	,@InvoiceDocDTSerialData AS InvoiceDocPDTSerialTableType READONLY
	,@SerialNumberTrackingData AS SerialNumberTrackingTableType READONLY
	,@InvLotExtUpdateData AS InvLotExtTableType READONLY
	,@InvLotExtInsertData AS InvLotExtTableType READONLY
	,@InvSerialExtUpdateData AS InvSerialExtTableType READONLY
	,@InvSerialExtInsertData AS InvSerialExtTableType READONLY
	,@IsInvoiceConvert AS BIT
	,@IsFromWorkshop AS BIT = 0
	)
AS
BEGIN
	INSERT INTO [dbo].[tblInvoiceDocPDT] (
		[strInvPDocID]
		,[intLineNo]
		,[strPartNumber]
		,[strLocation]
		,[strPartDesc]
		,[decBuyQty]
		,[strBuyUnit]
		,[decStockQty]
		,[strStockUnit]
		,[intType]
		,[decPriceEaExc]
		,[decLineTotExc]
		,[decLineTaxAmt]
		,[strTaxCode]
		,[decEaIncTax]
		,[decTotIncTax]
		,[imgTaxObj]
		,[strCurrency]
		,[bitIsForeign]
		,[decPriceEaExcF]
		,[decLineTotExcF]
		,[decLineTaxAmtF]
		,[decEaIncTaxF]
		,[decTotIncTaxF]
		,[strInvField1]
		,[strInvField2]
		,[strInvField3]
		,[strInvField4]
		,[strInvField5]
		,[strInvField6]
		,[strLineField1]
		,[strLineField2]
		,[strLineField3]
		,[strLineField4]
		,[strLineField5]
		,[strLineField6]
		,[strLineField7]
		,[strLineField8]
		,[strLineField9]
		,[strLineField10]
		,[strLineField11]
		,[strLineField12]
		,[decLineDiscPerc]
		,[decLineDiscAmt]
		,[decLineDiscAmtF]
		,[bitDiscountTax]
		,[strOrdSODocID]
		,[strPartExtendedDesc]
		,[decItemWeight]
		,[decVolumetricWeight]
		,[uidTransactionFieldID]
		,[bitFrom]
		,[strOrdPGDocID]
		,[intOrdPGDocItemLineNo]
		)
	SELECT [InvPDocID]
		,[LineNo]
		,[PartNumber]
		,[Location]
		,[PartDesc]
		,[BuyQty]
		,[BuyUnit]
		,[StockQty]
		,[StockUnit]
		,[Type]
		,[PriceEaExc]
		,[LineTotExc]
		,[LineTaxAmt]
		,[TaxCode]
		,[EaIncTax]
		,[TotIncTax]
		,[TaxObj]
		,[Currency]
		,[IsForeign]
		,PriceEaExcF
		,LineTotExcF
		,LineTaxAmtF
		,EaIncTaxF
		,TotIncTaxF
		,InvField1
		,InvField2
		,InvField3
		,InvField4
		,InvField5
		,InvField6
		,LineField1
		,LineField2
		,LineField3
		,LineField4
		,LineField5
		,LineField6
		,LineField7
		,LineField8
		,LineField9
		,LineField10
		,LineField11
		,LineField12
		,LineDiscPerc
		,LineDiscAmt
		,LineDiscAmtF
		,DiscountTax
		,[OrdSODocID]
		,PartExtendedDesc
		,ItemWeight
		,VolumetricWeight
		,TransactionFieldID
		,[From]
		,[OrdPGDocID]
		,[OrdPGDocItemLineNo]
	FROM @InvoiceDocPDTData

	IF EXISTS (
			SELECT *
			FROM @InvoiceDocDTPrjData
			)
	BEGIN
		INSERT INTO tblInvoiceDocPDTPrj (
			strInvPDocID
			,intLineNo
			,strProjNumber
			)
		SELECT [InvPDocID]
			,[LineNo]
			,ProjNumber
		FROM @InvoiceDocDTPrjData
	END

	IF EXISTS (
			SELECT *
			FROM @InvoiceDocDTSerialData
			)
	BEGIN
		INSERT INTO tblInvoiceDocPDTSerial (
			[strInvPDocID]
			,[intLineNo]
			,[strSerialNumber]
			,[decQty]
			,[strUnit]
			,[bitExpiryDate]
			,[dteExpiryDate]
			,[intSerialLotType]
			,[lngBinID]
			)
		SELECT [InvPDocID]
			,[LineNo]
			,[SerialNumber]
			,[Qty]
			,[Unit]
			,[IsExpiryDate]
			,[ExpiryDate]
			,[SerialLotType]
			,[BinID]
		FROM @InvoiceDocDTSerialData
	END

	IF @IsFromWorkshop = 0
	BEGIN
		IF EXISTS (
				SELECT *
				FROM @SerialNumberTrackingData
				)
		BEGIN
			INSERT INTO tblSerialNumberTracking (
				strPartNumber
				,strSerialNumber
				,strUserName
				,dteUpdatedDate
				,intType
				,strDocID
				,intLineNo
				,decQty
				,strLocation
				,intStatus
				,bitExpiryDate
				,dteExpiryDate
				,lngBinID
				)
			SELECT PartNumber
				,SerialNumber
				,UserName
				,UpdatedDate
				,SerialLotType
				,DocID
				,[LineNo]
				,Qty
				,Location
				,[Status]
				,IsExpiryDate
				,ExpiryDate
				,BinID
			FROM @SerialNumberTrackingData
		END

		IF EXISTS (
				SELECT *
				FROM @InvLotExtUpdateData
				)
		BEGIN
			UPDATE tblInvLotExt
			SET decQty = decQty + t.Qty
				,dteUpdatedDate = t.UpdatedDate
			FROM (
				SELECT PartNumber
					,LotNumber
					,LocName
					,BinID
					,UpdatedDate
					,Sum(isnull(Qty, 0)) AS Qty
				FROM @InvLotExtUpdateData
				GROUP BY PartNumber
					,LotNumber
					,LocName
					,BinID
					,UpdatedDate
				) t
			WHERE strPartNumber = t.PartNumber
				AND strLotNumber = t.LotNumber
				AND strLocName = t.LocName
				AND lngBinID = t.BinID
		END

		IF EXISTS (
				SELECT *
				FROM @InvLotExtInsertData
				)
		BEGIN
			INSERT INTO tblInvLotExt
			SELECT *
				,GETDATE()
			FROM @InvLotExtInsertData
		END

		IF EXISTS (
				SELECT *
				FROM @InvSerialExtUpdateData
				)
		BEGIN
			UPDATE tblInvSerialExt
			SET strLocName = t.LocName
				,decQty = t.Qty
				,intStatus = t.[Status]
				,strDocID = t.DocID
				,dteUpdatedDate = t.UpdatedDate
				,lngBinID = t.BinID
			FROM @InvSerialExtUpdateData t
			WHERE strPartNumber = t.PartNumber
				AND strSerialNumber = t.SerialNumber
		END

		IF EXISTS (
				SELECT *
				FROM @InvSerialExtInsertData
				)
		BEGIN
			INSERT INTO tblInvSerialExt
			SELECT *
				,GETDATE()
			FROM @InvSerialExtInsertData
		END
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertVendPay] (
@VendPayID as bigInt
,@SystemDate as DateTime
,@JournalDate as DateTime
,@UserName as nvarchar(20)
,@JourID  as bigint
,@VendName as nvarchar(50)
,@Source  as nvarchar(100)
,@BankAcct as nvarchar(30)
,@Amount as money
,@Reversed as bit
,@Reversal as bit
,@Comment as nvarchar(200)
,@PayBy as int
,@Deposit as money
,@Dept as int
,@Currency as nvarchar(3)
,@IsForeign as bit
,@Exchange as money
,@AmountF as money
,@DepositF as money
,@FromInvPaymt as bit
,@BankCurrency as nvarchar(3)
,@BankAmount as money
,@PaidBy as nvarchar(20)
,@Reference as nvarchar(100)
)
AS
BEGIN
INSERT INTO [dbo].[tblVendPay]
([lngVendPayID]
,[dteSystemDate]
,[dteJournalDate]
,[strUserName]
,[lngJourID]
,[strVendName]
,[strSource]
,[intBankAcct]
,[decAmount]
,[bitReversed]
,[bitReversal]
,[strComment]
,[intPayBy]
,[decDeposit]
,[intDept]
,[strCurrency]
,[bitIsForeign]
,[decExchange]
,[decAmountF]
,[decDepositF]
,[bitFromInvPaymt]
,[strWHTaxCode]
,[decWHPerc]
,[decWHAmt]
,[decWHAmtF]
,[blnForeignBank]
,[decBankExchange]
,[strBankCurrency]
,[decBankAmount]
,[decBankAmountF]
,[strPaidBy]
,[strReference])
VALUES
(@VendPayID
,@SystemDate
,@JournalDate
,@UserName
,@JourID
,@VendName
,@Source
,@BankAcct
,@Amount
,@Reversed
,@Reversal
,@Comment
,@PayBy
,@Deposit
,@Dept
,@Currency
,@IsForeign
,@Exchange
,@AmountF
,@DepositF
,@FromInvPaymt
,null
,0
,0
,0
,0
,1
,@BankCurrency
,@BankAmount
,0
,@PaidBy
,@Reference)
End
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdatePurchRE] @REName AS NVARCHAR(50)
AS
BEGIN
	UPDATE tblPurchRE
	SET dteLastProcDate = GetDate()
	WHERE strREName = @REName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateLastIDForDNandPI]
@Num as bigint,
@IsDocNumWithDN as bit
as begin
if(@IsDocNumWithDN = 1)
Begin
UPDATE tblLastIDs SET lngDNNumber = @Num
end
else
Begin
UPDATE tblLastIDs SET lngPINumber = @Num
End
end
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateAccountsForCheqNum]
@GLNumber as nvarchar
as Begin
UPDATE tblAccounts SET intCheqNumber = intCheqNumber + 1 WHERE intGLNumber =@GLNumber
end
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateAllocatCenters]
@JournalOld as bigint,
@Journal as bigint,
@IsCurrentYearAdj as bit
as Begin
if(@IsCurrentYearAdj = 1)
Begin
UPDATE tblCenterEnt SET lngJourID = @Journal WHERE lngJourID = @JournalOld
End
else
Begin
UPDATE tblCenterEntLY SET lngJourID = @Journal WHERE lngJourID = @JournalOld
End
End
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateBuyersYTDPurchases]
@BuyerName as nvarchar(100),
@CurrentYrStarts as datetime
as
Begin
UPDATE tblBuyers SET decYTDPurchases = (SELECT ISNULL(SUM(decTotal),0)
FROM tblInvoiceDocP WHERE strBuyerName = @BuyerName AND 
bitHistoryTrans = 0 AND dteJournalDate >= @CurrentYrStarts) 
WHERE strBuyerName = @BuyerName
End
GO

----------------------------------------------------
create procedure [dbo].[GETOrderDocPGDTList]
@IsMultipleGRV as bit,
@OrdPGDocID as nvarchar
as
Begin
if(@IsMultipleGRV =0)
Begin
SELECT tblOrderDocPGDT.strPartNumber as PartNumber
, tblOrderDocPGDT.strLocation as Location 
, tblOrderDocPGDT.decStockQty as StockQty
, tblOrderDocPGDT.decPriceEaExc as PriceEaExc
, tblOrderDocPGDT.decLineTotExc as LineTotExc
, tblOrderDocPGDT.intType  as Type 
FROM tblOrderDocPG  INNER JOIN tblOrderDocPGDT 
ON tblOrderDocPG.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID 
WHERE (tblOrderDocPG.strOrdPGDocID = @OrdPGDocID) ORDER BY tblOrderDocPGDT.intLineNo
end
else
Begin
SELECT tblOrderDocPGDT.strPartNumber as PartNumber
, tblOrderDocPGDT.strLocation as Location
, tblOrderDocPGDT.decStockQty as StockQty
, tblOrderDocPGDT.decPriceEaExc as PriceEaExc
, tblOrderDocPGDT.decLineTotExc as LineTotExc
, tblOrderDocPGDT.intType  as Type 
FROM tblOrderDocPG INNER JOIN tblOrderDocPGDT ON tblOrderDocPG.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID 
WHERE (tblOrderDocPG.strOrdPGDocID IN (@OrdPGDocID)) ORDER BY tblOrderDocPGDT.strOrdPGDocID, tblOrderDocPGDT.intLineNo
End
End
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateOrderDocPDTData]
@BuyRem as money,
@StockRem as money,
@PONumber as nvarchar(200),
@POline  as int
as
Begin
UPDATE tblOrderDocPDT SET decBuyQtyRemain = @BuyRem,
decStockQtyRemain = @StockRem WHERE strOrdPDocID = @PONumber AND intLineNo = @POline
end
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateOrderDocPGDTData]
@BuyRem as money,
@StockRem as money,
@PONumber as nvarchar(200),
@POline  as int
as
Begin
UPDATE tblOrderDocPGDT SET decBuyGRVQtyRemain = @BuyRem,
decStockGRVQtyRemain = @StockRem WHERE strOrdPGDocID = @PONumber AND intLineNo = @POline
end
GO

----------------------------------------------------
create procedure [dbo].[RptOrigInvNewPurchase]
(
@InvDocID AS NVARCHAR(200),	
@IsBPToolsMode AS BIT,
@UserName AS NVARCHAR(200)	
)
AS
BEGIN
DECLARE @iterator AS INT
DECLARE @rowcount as int 
DECLARE @rowiterator as int = 1
DECLARE @doc as NVARCHAR(200)
DECLARE @maxRev AS INT
CREATE TABLE #Temp
(
ROWID INT IDENTITY(1,1),
strDocNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS, 
)
CREATE TABLE #Temp1
(
ROWID INT IDENTITY(1,1),
strDocNumber NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
intRevisionNumber INT, 
)
CREATE TABLE #Temp2
(
EntID BIGINT,
InvDocID  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
JourID BIGINT,
SystemDate DATETIME,
JournalDate DATETIME,
UserName  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
CustName  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
Total Money,
CustDesc  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
RevisionNumber INT,
Module INT
)
IF @IsBPToolsMode = 0 
BEGIN
INSERT INTO #Temp SELECT DISTINCT strInvDocID FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName WHERE strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = @UserName)) AND strInvDocID = @InvDocID  --ORDER BY strInvDocID, lngEntID
INSERT INTO #Temp1 SELECT DISTINCT strInvDocID, tblInvoiceDocREV.intRevisionNumber FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName WHERE strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = @UserName)) AND strInvDocID = @InvDocID  --ORDER BY strInvDocID, lngEntID
INSERT INTO #Temp2
SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strVendName, decTotal, strVendDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName WHERE strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = @UserName)) AND strInvDocID = @InvDocID  ORDER BY strInvDocID, lngEntID
END 
ELSE
BEGIN
INSERT INTO #Temp SELECT DISTINCT strInvDocID FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName --ORDER BY strInvDocID, lngEntID
INSERT INTO #Temp1 SELECT DISTINCT strInvDocID, tblInvoiceDocREV.intRevisionNumber FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName --ORDER BY strInvDocID, lngEntID
INSERT INTO #Temp2
SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strVendName, decTotal, strVendDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName ORDER BY strInvDocID, lngEntID
END
SELECT @rowcount = COUNT(DISTINCT(strDocNumber))  from #Temp
WHILE @rowiterator <= @rowcount
BEGIN
SELECT @doc = strDocNumber from #Temp WHERE ROWID = @rowiterator
PRINT @doc
SELECT @maxRev = MAX(intRevisionNumber) from #Temp1 WHERE strDocNumber = @doc
PRINT @maxRev
SET @iterator = @maxRev
WHILE @iterator <= @maxRev AND @iterator>=0
BEGIN
IF NOT EXISTS (SELECT * from #Temp1 WHERE strDocNumber = @doc AND intRevisionNumber = @iterator) 
BEGIN
INSERT INTO #Temp2 SELECT lngEntID, strInvDocID, lngJourID, dteSystemDate, dteJournalDate, strUserName, tblInvoiceDocREV.strVendName, decTotal, strVendDesc,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.intModule FROM tblInvoiceDocREV INNER JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName
WHERE tblInvoiceDocREV.strInvDocID = @doc AND intRevisionNumber = @iterator
END
SET @iterator = @iterator - 1
END
SET @rowiterator = @rowiterator + 1
END 
SELECT * FROM #Temp2
DROP TABLE #Temp
DROP TABLE #Temp1
DROP TABLE #Temp2
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptOrigInvNewDTPurchse]
(
@Modules AS NVARCHAR(200),
@DocID AS NVARCHAR(200)
)
AS
BEGIN
DECLARE @iterator AS INT
DECLARE @rowcount as int 
DECLARE @rowiterator as int = 1
DECLARE @doc as NVARCHAR(200)
DECLARE @maxRev AS INT
CREATE TABLE #Temp
(
ROWID INT IDENTITY(1,1),
strDocNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS, 
)
CREATE TABLE #Temp1
(
ROWID INT IDENTITY(1,1),
strDocNumber NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
intRevisionNumber INT, 
)
CREATE TABLE #Temp2
(
EntID BIGINT,
[LineNo]  INT,
PartNumber  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
Location  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
PartDesc  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
Qty  Money,
Unit  NVARCHAR(MAX)  COLLATE SQL_Latin1_General_CP1_CI_AS,
Price  Money,
Discount  Money,
TaxCode  NVARCHAR(100)  COLLATE SQL_Latin1_General_CP1_CI_AS,
TaxAmount  Money,
LineTotInc  Money,
RevisionNumber  INT,
RevisionDate DATETIME,
TransactionFieldID  UNIQUEIDENTIFIER,
InvDocID  NVARCHAR(200)  COLLATE SQL_Latin1_General_CP1_CI_AS,
)
INSERT INTO #TEMP SELECT DISTINCT tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@Modules),(',')))) AND tblInvoiceDocREV.strInvDocID = @DocID --ORDER BY intRevisionNumber
INSERT INTO #Temp1 SELECT DISTINCT tblInvoiceDocREV.strInvDocID,intRevisionNumber FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@Modules),(',')))) AND tblInvoiceDocREV.strInvDocID = @DocID --ORDER BY intRevisionNumber
INSERT INTO #Temp2 SELECT tblInvoiceDocREV.lngEntID, intLineNo, strPartNumber, strLocation, strPartDesc,decBuyQty, strBuyUnit as Unit ,decEaIncTax as Price ,decLineDiscPerc as Discount ,strTaxCode as TaxCode,decLineTaxAmt as TaxAmount,decTotIncTax,tblInvoiceDocREV.intRevisionNumber, dteRevisionDate, uidTransactionFieldID, tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID WHERE tblInvoiceDocREV.lngEntID  IN (SELECT lngEntID FROM tblInvoiceDocREV WHERE tblInvoiceDocREV.intModule IN (SELECT Value FROM [fnSplitStringAsTable]((@Modules),(',')))) AND tblInvoiceDocREV.strInvDocID = @DocID ORDER BY intRevisionNumber
SELECT @rowcount = COUNT(DISTINCT(strDocNumber))  from #Temp
WHILE @rowiterator <= @rowcount
BEGIN
SELECT @doc = strDocNumber from #Temp WHERE ROWID = @rowiterator
PRINT @doc
SELECT @maxRev = MAX(intRevisionNumber) from #Temp1 WHERE strDocNumber = @doc
PRINT @maxRev
SET @iterator = @maxRev
WHILE @iterator <= @maxRev AND @iterator>=0
BEGIN
IF NOT EXISTS (SELECT * from #Temp1 WHERE strDocNumber = @doc AND intRevisionNumber = @iterator) 
BEGIN
INSERT INTO #Temp2 SELECT tblInvoiceDocREV.lngEntID, intLineNo, strPartNumber, strLocation, strPartDesc,decBuyQty, strBuyUnit as Unit ,decEaIncTax as Price ,decLineDiscPerc as Discount ,strTaxCode as TaxCode,decLineTaxAmt as TaxAmount,decTotIncTax,tblInvoiceDocREV.intRevisionNumber, dteRevisionDate, uidTransactionFieldID, tblInvoiceDocREV.strInvDocID FROM tblInvoiceDocREVDT INNER JOIN  tblInvoiceDocREV on tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID 
WHERE tblInvoiceDocREV.strInvDocID = @doc AND intRevisionNumber = @iterator
END
SET @iterator = @iterator - 1
END
SET @rowiterator = @rowiterator + 1
END 
SELECT * FROM #Temp2 ORDER BY InvDocID, RevisionNumber, EntID, [LineNo] ASC
DROP TABLE #Temp
DROP TABLE #Temp1
DROP TABLE #Temp2
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseOrderDocData]  
@DocNumber nvarchar(50)  
AS  
BEGIN
SELECT tblOrderDocQ.[strOrdDocID] as DocumentNumber
,tblOrderDocQ.[dteSystemDate] as SystemDate
,tblOrderDocQ.[dteJournalDate] as JournalDate
,tblOrderDocQ.[dteRequired] as Required
,tblOrderDocQ.[strUserName] as UserName
,tblOrderDocQ.[strSoldTo] as SoldTo
,tblOrderDocQ.[strShipTo] as ShipTo
,tblOrderDocQ.[strReference] as Reference
,tblOrderDocQ.[decSubTotal] as SubTotal
,tblOrderDocQ.[decVAT] as VAT
,tblOrderDocQ.[decTotal] as Total
,tblOrderDocQ.[strNotes] as Notes
,tblOrderDocQ.[bitPrinted] as Printed
,tblOrderDocQ.[bitEmailed] as Emailed
,tblOrderDocQ.[bitCleared] as IsCleared
,tblOrderDocQ.[strSalesName] as SalesName
,tblOrderDocQ.[strAddInfo] as AdditionalInfo
,tblOrderDocQ.[strCurrency] as CurrencyCode
,tblOrderDocQ.[bitIsForeign] as IsForeign
,tblOrderDocQ.[decSubTotalF] as SubTotalForeign
,tblOrderDocQ.[decVATF] as VATForeign
,tblOrderDocQ.[decTotalF] as TotalForeign
,tblOrderDocQ.[decExchange] as ExchangeRate
,tblOrderDocQ.[strTerm] as Term
,tblOrderDocQ.[intDept] as Dept
,tblOrderDocQ.[strField1] as Field1
,tblOrderDocQ.[strField2]  as Field2
,tblOrderDocQ.[strField3]	 as Field3
,tblOrderDocQ.[strField4]	 as Field4
,tblOrderDocQ.[strField5]	 as Field5
,tblOrderDocQ.[strField6]	 as Field6
,tblOrderDocQ.[strField7]	 as Field7
,tblOrderDocQ.[strField8]	 as Field8
,tblOrderDocQ.[strField9]	 as Field9
,tblOrderDocQ.[strField10] as Field10
,tblOrderDocQ.[strField11] as Field11
,tblOrderDocQ.[strField12] as Field12
,tblOrderDocQ.[strSubFormated] as SubFormatted
,tblOrderDocQ.[strVATFormatted] as VATFormatted
,tblOrderDocQ.[strTotFormatted] as TotFormatted
,tblOrderDocQ.[decTotalCost] as TotalCost
,tblOrderDocQ.[decTotalMarkup] as TotalMarkup
,tblOrderDocQ.[strCustName] as CustomerNumber
,tblOrderDocQ.[decDiscPerc] as DiscountPercentage
,tblOrderDocQ.[decDiscAmt] as DiscountAmount
,tblOrderDocQ.[decDiscAmtF] as DiscountAmountForeign
,tblOrderDocQ.[strDiscFormatted] as DiscountFormatted
,tblOrderDocQ.[strStatusTypeCode] as StatusTypeCode
,tblOrderDocQ.[bitDeclined] as IsDeclined
,tblOrderDocQ.[bitApproved] as IsApproved
,tblOrderDocQ.[strApprovedBy] as ApprovedBy
,tblOrderDocQ.[dteApprovedDate] as ApprovedDate
,tblOrderDocQ.[decTotalWeight] as TotalWeight
,tblOrderDocQ.[decTotalVolWeight] as TotalVolWeight
,tblOrderDocQ.[strSOReasonCode] as SOReasonCode
,tblOrderDocQ.[decDeliveryCost] as DeliveryCost
,tblOrderDocQ.[decDeliveryCostF] as DeliveryCostForeign
,tblOrderDocQ.[strDeliveryCostFormatted] as DeliveryCostFormatted
,tblOrderDocQ.[strDelMethodCode] as DelMethodCode
,tblOrderDocQ.[intRevisionNumber] as RevisionNumber
,tblOrderDocQ.[strStoreNumber] as StoreNumber
,tblOrderDocQ.[strEDI] as EDI
,tblOrderDocQ.[dteRowUpdated] as RowUpdated
,tblOrderDocQ.[varDocumentSignature] as DocumentSignature
,ISNULL(tblCustomers.strCustDesc, '') AS CustDesc
FROM tblOrderDocQ
LEFT JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName
WHERE tblOrderDocQ.strOrdDocID = @DocNumber
end
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseInvoiceDocData]  
@DocNumber nvarchar(50)  
AS  
BEGIN
SELECT tblInvoiceDocP.[strInvPDocID] as InvPDocID
,tblInvoiceDocP.[lngInvTrackID] as InvTrackID
,tblInvoiceDocP.[lngJourID] as JourID
,tblInvoiceDocP.[dteSystemDate] as SystemDate
,tblInvoiceDocP.[dteJournalDate] as JournalDate
,tblInvoiceDocP.[dteRequired] as Required
,tblInvoiceDocP.[strUserName] as UserName
,tblInvoiceDocP.[strVendName] as VendName
,tblInvoiceDocP.[strShipTo] as ShipTo
,tblInvoiceDocP.[strVendInvNo] as VendInvNo
,tblInvoiceDocP.[decSubTotal] as SubTotal
,tblInvoiceDocP.[decVAT] as VAT
,tblInvoiceDocP.[decTotal] as Total
,tblInvoiceDocP.[bitFromPO] as FromPO
,tblInvoiceDocP.[strOrdPDocID] as OrdPDocID
,tblInvoiceDocP.[strSourceMOP] as SourceMOP
,tblInvoiceDocP.[bitHistoryTrans] as HistoryTrans
,tblInvoiceDocP.[strNotes] as Notes
,tblInvoiceDocP.[bitPrinted] as Printed
,tblInvoiceDocP.[bitEmailed] as Emailed
,tblInvoiceDocP.[intPaidBy] as PaidBy
,tblInvoiceDocP.[intAccount] as Account
,tblInvoiceDocP.[strCurrency] as Currency
,tblInvoiceDocP.[bitIsForeign] as IsForeign
,tblInvoiceDocP.[decSubTotalF] as SubTotalF
,tblInvoiceDocP.[decVATF] as VATF
,tblInvoiceDocP.[decTotalF] as TotalF
,tblInvoiceDocP.[decExchange] as Exchange
,tblInvoiceDocP.[strTerm] as Term
,tblInvoiceDocP.[intDept] as Dept
,tblInvoiceDocP.[strField1] as Field1
,tblInvoiceDocP.[strField2] as Field2
,tblInvoiceDocP.[strField3] as Field3
,tblInvoiceDocP.[strField4] as Field4
,tblInvoiceDocP.[strField5] as Field5
,tblInvoiceDocP.[strField6] as Field6
,tblInvoiceDocP.[strField7] as Field7
,tblInvoiceDocP.[strField8] as Field8
,tblInvoiceDocP.[strField9] as Field9
,tblInvoiceDocP.[strField10]as Field10
,tblInvoiceDocP.[strField11]as Field11
,tblInvoiceDocP.[strField12]as Field12
,tblInvoiceDocP.[strSubFormated] as SubFormated
,tblInvoiceDocP.[strVATFormatted] as VATFormatted
,tblInvoiceDocP.[strTotFormatted] as TotFormatted
,tblInvoiceDocP.[decDiscPerc] as DiscPerc
,tblInvoiceDocP.[decDiscAmt] as DiscAmt
,tblInvoiceDocP.[decDiscAmtF] as  DiscAmtF
,tblInvoiceDocP.[strDiscFormatted] as DiscFormatted
,tblInvoiceDocP.[strOrdFQDocID] as OrdFQDocID
,tblInvoiceDocP.[bitFQConvert] as FQConvert
,tblInvoiceDocP.[bitSOCopy] as SOCopy
,tblInvoiceDocP.[bitSOCopyMulti] as SOCopyMulti
,tblInvoiceDocP.[strStatusTypeCode] as StatusTypeCode
,tblInvoiceDocP.[bitBookmark] as Bookmark
,tblInvoiceDocP.[strAddInfo] as AddInfo
,tblInvoiceDocP.[strReference] as Reference
,tblInvoiceDocP.[strPaidBy] as PaidBy
,tblInvoiceDocP.[decNetItemWeight] as NetItemWeight
,tblInvoiceDocP.[decNetVolumetricWeight] as NetVolumetricWeight
,tblInvoiceDocP.[intRevisionNumber] as RevisionNumber
,tblInvoiceDocP.[intAccrualProcess] as AccrualProcess
,tblInvoiceDocP.[strBuyerName] as BuyerName
,tblCustomers.strCustDesc as CustDesc
FROM tblInvoiceDocP
LEFT JOIN tblOrderDocQ ON tblInvoiceDocP.strOrdFQDocID = tblOrderDocQ.strOrdDocID
LEFT JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName
WHERE tblInvoiceDocP.strInvPDocID = @DocNumber
end
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPaymentsData] (
	@VendName AS NVARCHAR(50)
	,@Type AS INT
	,@JournalDate AS DATETIME
	)
AS
BEGIN
	SELECT tblVendTrans.strInvDepNumber AS InvDepNumber
		,CASE 
			WHEN tblVendTrans.intTransType = @Type
				THEN ISNULL(tblVendTrans.strJEDocID, '')
			ELSE ISNULL(tblVendTrans.strInvPDocID, '')
			END AS JEDocID
		,tblVendTrans.dteJournalDate AS JournalDate
		,tblVendTrans.strPoNumber AS PONumber
		,tblVendTrans.decInvAmount AS InvAmount
		,tblVendTrans.decInvAmountF AS InvAmountF
		,SUM(tblVendTransDT.decAmount) AS Amount
		,SUM(tblVendTransDT.decAmountF) AS AmountF
		,tblVendTrans.intTransType AS TransactionType
		,tblVendTrans.decDiscAvail AS DiscAvailable
		,tblVendTrans.decDiscAvailF AS DiscAvailF
		,tblVendTrans.dteDiscExpires AS DiscExpires
		,tblVendTrans.lngVendTrID AS VendTrID
		,ISNULL(tblInvoiceDocP.decVAT, 0) AS VAT
		,ISNULL(tblInvoiceDocP.decVATF, 0) AS VATF
		,'VEND' AS VENDCUSTTYPE
	FROM tblVendTrans
	INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
	LEFT JOIN tblInvoiceDocP ON tblVendTrans.strInvPDocID = tblInvoiceDocP.strInvPDocID
	WHERE tblVendTrans.strVendName = @VendName
		AND tblVendTransDT.bitReversed = 0
		AND tblVendTrans.bitSettled = 0
		AND tblVendTrans.dteJournalDate <= (
			SELECT DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, @JournalDate) + 1, 0))
			)
	GROUP BY tblVendTrans.lngVendTrID
		,tblVendTrans.strInvDepNumber
		,tblVendTrans.dteJournalDate
		,CASE 
			WHEN tblVendTrans.intTransType = @Type
				THEN ISNULL(tblVendTrans.strJEDocID, '')
			ELSE ISNULL(tblVendTrans.strInvPDocID, '')
			END
		,tblVendTrans.strPoNumber
		,tblVendTrans.decInvAmount
		,tblVendTrans.decInvAmountF
		,tblVendTrans.intTransType
		,tblVendTrans.decDiscAvail
		,tblVendTrans.decDiscAvailF
		,tblVendTrans.dteDiscExpires
		,tblInvoiceDocP.decVAT
		,tblInvoiceDocP.decVATF
	ORDER BY tblVendTrans.intTransType
		,tblVendTrans.strInvDepNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateBitSettledOnVendTrans] @AdjJournalID BIGINT NULL
,@JourIDAdj BIGINT NULL
AS
BEGIN
UPDATE tblVendTrans
SET bitSettled = 1
WHERE bitSettled = 0
AND lngVendTrID IN (
SELECT lngVendTrID
FROM tblVendTransDT
WHERE bitReversed = 0
GROUP BY lngVendTrID
HAVING SUM(decAmount) = 0
AND SUM(decAmountF) = 0
)
UPDATE tblVendTrans
SET bitSettled = 0
WHERE bitSettled = 1
AND lngVendTrID IN (
SELECT lngVendTrID
FROM tblVendTransDT
WHERE bitReversed = 0
GROUP BY lngVendTrID
HAVING SUM(decAmount) <> 0
OR SUM(decAmountF) <> 0
)
IF (@JourIDAdj <> NULL)
BEGIN
UPDATE tblJournalEnt
SET decAllocatedAmtToDate = (decAmount - decAmountF) * - 1
,decUnAllocatedAmt = 0
WHERE lngJourID = @AdjJournalID
END
IF (@JourIDAdj <> NULL)
BEGIN
UPDATE tblJournalEnt
SET decAllocatedAmtToDate = (decAmount - decAmountF) * - 1
,decUnAllocatedAmt = 0
WHERE lngJourID = @JourIDAdj
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[VendPayInsert] (
@VendPayID BIGINT
,@SystemDate SMALLDATETIME
,@DocumentDate SMALLDATETIME
,@CurrentUser NVARCHAR(20)
,@jourID BIGINT
,@VendNumber NVARCHAR(50)
,@SourceDoc NVARCHAR(100)
,@Account NVARCHAR(30)
,@Amount MONEY
,@Reversed BIT
,@Reversal BIT
,@Comment NVARCHAR(200)
,@PayBy INT
,@PrePayment MONEY
,@Dept INT
,@Currency NVARCHAR(3)
,@IsForeign BIT
,@Exchange DECIMAL(18, 6)
,@AmountF MONEY
,@PrePaymentF MONEY
,@FromInvPaymt BIT
,@ForeignBank BIT
,@BankExchange DECIMAL(18, 6)
,@BankCurrency NVARCHAR(3)
,@BankAmount MONEY
,@BankAmountF MONEY
,@WHTaxCode NVARCHAR(2)
,@WHPer MONEY
,@WHAmt MONEY
,@WHAmtF MONEY
,@PaidBy NVARCHAR(20)
,@Reference NVARCHAR(200)
)
AS
BEGIN
INSERT INTO [dbo].[tblVendPay] (
[lngVendPayID]
,[dteSystemDate]
,[dteJournalDate]
,[strUserName]
,[lngJourID]
,[strVendName]
,[strSource]
,[intBankAcct]
,[decAmount]
,[bitReversed]
,[bitReversal]
,[strComment]
,[intPayBy]
,[decDeposit]
,[intDept]
,[strCurrency]
,[bitIsForeign]
,[decExchange]
,[decAmountF]
,[decDepositF]
,[bitFromInvPaymt]
,[blnForeignBank]
,[decBankExchange]
,[strBankCurrency]
,[decBankAmount]
,[decBankAmountF]
,[strWHTaxCode]
,[decWHPerc]
,[decWHAmt]
,[decWHAmtF]
,[strPaidBy]
,[strReference]
)
VALUES (
@VendPayID
,@SystemDate
,@DocumentDate
,@CurrentUser
,@jourID
,@VendNumber
,@SourceDoc
,@Account
,@Amount
,@Reversed
,@Reversal
,@Comment
,@PayBy
,@PrePayment
,@Dept
,@Currency
,@IsForeign
,@Exchange
,@AmountF
,@PrePaymentF
,@FromInvPaymt
,@ForeignBank
,@BankExchange
,@BankCurrency
,@BankAmount
,@BankAmountF
,@WHTaxCode
,@WHPer
,@WHAmt
,@WHAmtF
,@PaidBy
,@Reference
)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[VendTransDTInsert] (
@VendTrID BIGINT
,@VendID NVARCHAR(50)
,@SystemDate SMALLDATETIME
,@JournalDate SMALLDATETIME
,@UserName NVARCHAR(20)
,@InvDocPID NVARCHAR(50)
,@InvDepNumber NVARCHAR(50)
,@PoNumber NVARCHAR(50)
,@TransType TINYINT
,@InvAmount MONEY
,@InvAmountF MONEY
,@Currency NVARCHAR(3)
,@IsForeign BIT
,@Exchange DECIMAL(18, 6)
,@AmtOwingAtTime MONEY
,@AmountF MONEY
,@AmtOwingAtTimeF MONEY
,@DocReRated BIT
,@ReRated DATETIME
,@ReRateCumltveValue MONEY
,@Settled BIT
,@DiscAvail MONEY
,@DiscAvailF MONEY
,@DiscExpires DATETIME
,@DueDate DATETIME
,@JEDocID NVARCHAR(50)
,@CustPayID BIGINT
,@TransTypeDT TINYINT
,@Reversed BIT
)
AS
BEGIN
INSERT INTO [dbo].[tblVendTrans] (
[lngVendTrID]
,[strVendName]
,[dteSystemDate]
,[dteJournalDate]
,[strUserName]
,[strInvPDocID]
,[strInvDepNumber]
,[strPoNumber]
,[intTransType]
,[decInvAmount]
,[decInvAmountF]
,[strCurrency]
,[bitIsForeign]
,[decExchange]
,[bitDocReRated]
,[dteReRated]
,[decReRateCumltveValue]
,[bitSettled]
,[decDiscAvail]
,[decDiscAvailF]
,[dteDiscExpires]
,[dteDueDate]
,[strJEDocID]
)
VALUES (
@VendTrID
,@VendID
,@SystemDate
,@JournalDate
,@UserName
,@InvDocPID
,@InvDepNumber
,@PoNumber
,@TransType
,@InvAmount
,@InvAmountF
,@Currency
,@IsForeign
,@Exchange
,@DocReRated
,@ReRated
,@ReRateCumltveValue
,@Settled
,@DiscAvail
,@DiscAvailF
,@DiscExpires
,@DueDate
,@JEDocID
)
INSERT INTO [dbo].[tblVendTransDT] (
[dteJournalDate]
,[lngVendTrID]
,[lngVendPayID]
,[decAmount]
,[intTransType]
,[decAmtOwingAtTime]
,[bitReversed]
,[decAmountF]
,[decAmtOwingAtTimeF]
,[bitIsForeign]
)
VALUES (
@JournalDate
,@VendTrID
,@CustPayID
,@InvAmount
,@TransTypeDT
,@AmtOwingAtTime
,@Reversed
,@AmountF
,@AmtOwingAtTimeF
,@IsForeign
)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdatePrepaymentUsedFlag] @VendPayApprovalID BIGINT
AS
BEGIN
UPDATE tblVendPayApproval
SET bitPrepaymentUsed = 1
WHERE lngVendPayApprovalID = @VendPayApprovalID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[BulkInsertForVendTransDT] (
@VendorTransactionData AS VendorTransactionTableType READONLY
,@VendorTransactionDTData AS VendorTransactionDTTableType READONLY
)
AS
BEGIN
IF (SELECT COUNT(*) FROM @VendorTransactionDTData) > 0
BEGIN
INSERT INTO [dbo].[tblVendTransDT] (
[dteJournalDate]
,[lngVendTrID]
,[lngVendPayID]
,[decAmount]
,[intTransType]
,[decAmtOwingAtTime]
,[bitReversed]
,[decAmountF]
,[decAmtOwingAtTimeF]
,[bitIsForeign]
)
SELECT JournalDate
,VendTrID
,VendPayID
,Amount
,TransType
,AmtOwingAtTime
,Reversed
,AmountF
,AmtOwingAtTimeF
,IsForeign
FROM @VendorTransactionDTData
END
IF (SELECT COUNT(*) FROM @VendorTransactionData) > 0
BEGIN
UPDATE tct
SET tct.decDiscAvail = tct.decDiscAvail - ctd.DiscAvail
,tct.decDiscAvailF = tct.decDiscAvailF - ctd.DiscAvailF
FROM tblVendTrans tct
INNER JOIN @VendorTransactionData ctd ON tct.lngVendTrID = ctd.VendTrID
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateIsPaidFlag] @VendPayApprovalLineID BIGINT
AS
BEGIN
UPDATE tblVendPayApprovalDT
SET bitPaid = 1
WHERE lngVendPayApprovalLineID = @VendPayApprovalLineID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateVendTransForWrongDiscount] (@IsForeign BIT)
AS
BEGIN
UPDATE tblVendTrans
SET decDiscAvail = 0
WHERE (
decDiscAvail < 0
AND decInvAmount > 0
)
OR (
decDiscAvail > 0
AND decInvAmount < 0
)
IF (@IsForeign = 1)
BEGIN
UPDATE tblVendTrans
SET decDiscAvailF = 0
WHERE (
decDiscAvailF < 0
AND decInvAmountF > 0
)
OR (
decDiscAvailF > 0
AND decInvAmountF < 0
)
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendPayDataForPaymentPicker] @StartDate AS SMALLDATETIME
,@EndDate AS SMALLDATETIME
,@SortIndex AS INT
,@VendName AS NVARCHAR(max) = ''
,@GLNumber AS NVARCHAR(max) = ''
AS
BEGIN
SELECT tblVendPay.dteJournalDate as JournalDate
,tblVendPay.strVendName as VendorName
,tblVendors.strVendDesc as VendorDesc
,tblVendPay.strSource as [Source]
,tblVendPay.lngJourID as JourId
,tblVendPay.decAmount as Amount
,tblVendPay.lngVendPayID as VendTrID
,tblVendPay.bitIsForeign as IsForeign
,tblVendPay.decAmountF as AmountF
,tblVendPay.strCurrency as Currency
,ISNULL(tblVendPay.strReference, '') AS Reference
FROM tblVendPay
INNER JOIN tblVendors ON tblVendPay.strVendName = tblVendors.strVendName
WHERE (tblVendPay.bitReversed = 0)
AND (tblVendPay.bitReversal = 0)
AND (
tblVendPay.dteJournalDate BETWEEN @StartDate
AND @EndDate
)
AND ((LEN(@VendName) = 0)
OR (tblVendPay.strVendName = @VendName))
AND ((len(@GLNumber) = 0)
OR (tblVendPay.intBankAcct = @GLNumber))
ORDER BY CASE
WHEN @SortIndex = 0
THEN tblVendPay.dteJournalDate
END DESC
,CASE
WHEN @SortIndex = 1
THEN tblVendPay.strVendName
END ASC
,CASE
WHEN @SortIndex = 2
THEN tblVendors.strVendDesc
END ASC
,CASE
WHEN @SortIndex = 3
THEN tblVendPay.strSource
END DESC
,CASE
WHEN @SortIndex = 4
THEN tblVendPay.lngJourID
END DESC
,CASE
WHEN @SortIndex = 5
THEN tblVendPay.decAmount
END DESC
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendTrJNumber] @PayID AS DECIMAL
AS
BEGIN
SELECT lngJourID
FROM tblVendPay
WHERE lngVendPayID IN (
SELECT lngVendPayID
FROM tblVendTransDT
WHERE lngVendPayID <> @PayID
AND lngVendTrID IN (
SELECT lngVendTrID
FROM tblVendTransDT
WHERE lngVendPayID = @PayID
AND bitReversed = 0
AND intTransType = 1
)
AND bitReversed = 0
)
AND bitReversed = 0
AND bitReversal = 0
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[FilltblVendorsData] (@Vendor NVARCHAR(50))
AS
BEGIN
SELECT *
FROM tblVendors
WHERE strVendName = @Vendor
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendTransData] @PayID AS BIGINT
,@Type AS INT
AS
BEGIN
SELECT tblVendTrans.strInvDepNumber AS InvDepNumber
,CASE 
WHEN tblVendTrans.intTransType = @Type
THEN ISNULL(tblVendTrans.strJEDocID, '')
ELSE ISNULL(tblVendTrans.strInvPDocID, '')
END AS JEDocID
,tblVendTrans.dteJournalDate AS JournalDate
,tblVendTrans.strPoNumber AS PoNumber
,tblVendTrans.bitIsForeign AS IsForeign
,tblVendTrans.decInvAmount AS InvAmount
,tblVendTrans.decInvAmountF AS InvAmountF
,tblVendTransDT.decAmtOwingAtTime AS AmountOwingExcl
,tblVendTransDT.decAmtOwingAtTimeF AS AmountOwingIncl
,SUM(CASE tblVendTransDT.intTransType
WHEN 3
THEN tblVendTransDT.decAmount
ELSE 0
END) AS Amount
,SUM(CASE tblVendTransDT.intTransType
WHEN 3
THEN tblVendTransDT.decAmountF
ELSE 0
END) AS AmountF
,SUM(CASE tblVendTransDT.intTransType
WHEN 2
THEN tblVendTransDT.decAmount
ELSE 0
END) AS Amount2
,SUM(CASE tblVendTransDT.intTransType
WHEN 2
THEN tblVendTransDT.decAmountF
ELSE 0
END) AS AmountF2
,tblVendTrans.lngVendTrID AS VendTrID
,tblVendTrans.intTransType AS TransType
,ISNULL(tblInvoiceDocP.decVAT, 0) AS VAT
,ISNULL(tblInvoiceDocP.decVATF, 0) AS VATF
FROM tblVendTrans
INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
LEFT JOIN tblInvoiceDocP ON tblVendTrans.strInvPDocID = tblInvoiceDocP.strInvPDocID
WHERE (tblVendTransDT.lngVendPayID = @PayID)
AND (
tblVendTransDT.lngVendTrID NOT IN (
SELECT lngVendTrID
FROM tblVendTransDT
WHERE lngVendPayID = @PayID
AND intTransType = 1
)
)
GROUP BY tblVendTrans.strInvDepNumber
,CASE 
WHEN tblVendTrans.intTransType = @Type
THEN ISNULL(tblVendTrans.strJEDocID, '')
ELSE ISNULL(tblVendTrans.strInvPDocID, '')
END
,tblVendTrans.dteJournalDate
,tblVendTrans.strPoNumber
,tblVendTrans.bitIsForeign
,tblVendTrans.decInvAmount
,tblVendTrans.decInvAmountF
,tblVendTransDT.decAmtOwingAtTime
,tblVendTransDT.decAmtOwingAtTimeF
,tblVendTrans.lngVendTrID
,tblVendTrans.intTransType
,tblInvoiceDocP.decVAT
,tblInvoiceDocP.decVATF
ORDER BY tblVendTrans.intTransType
,tblVendTrans.strInvDepNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendPayData] @PayID AS BIGINT
AS
BEGIN
SELECT dteJournalDate AS JournalDate
,strVendName AS VendName
,strSource AS [Source]
,intBankAcct AS BankAcct
,strComment AS Comment
,strPaidBy AS PaidBy
,decDeposit AS Deposit
,decDepositF AS DepositF
,intDept AS Dept
,bitIsForeign AS IsForeign
,decExchange AS Exchange
,strCurrency AS Currency
,decAmount AS Amount
,blnForeignBank AS IsForeignBank
,decBankExchange AS BankExchange
,strBankCurrency AS BankCurrency
,decBankAmount AS BankAmount
,decBankAmountF AS BankAmountF
,strReference AS Reference
,strWHTaxCode AS WHTaxCode
,decWHPerc AS WHPerc
,decWHAmt AS WHAmt
,decWHAmtF AS WHAmtF
FROM tblVendPay
WHERE lngVendPayID = @PayID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendPayApprovalData] @PayID AS BIGINT
AS
BEGIN
SELECT [lngVendPayApprovalID] AS VendPayApprovalID
,[dteSystemDate] AS SystemDate
,[dteJournalDate] AS JournalDate
,[strUserName] AS UserName
,[strVendName] AS VendName
,[strCurrency] AS Currency
,[bitIsForeign] AS IsForeign
,[decAmount] AS Amount
,[decExchange] AS Exchange
,[decAmountF] AS AmountF
,[decPrepayment] AS Prepayment
,[decPrepaymentF] AS PrepaymentF
,[bitPrepaymentUsed] AS PrepaymentUsed
,[strWHTaxCode] AS WHTaxCode
,[decWHPerc] AS WHPerc
,[decWHAmt] AS WHAmt
,[decWHAmtF] AS WHAmtF
,[strComment] AS Comment
FROM [dbo].[tblVendPayApproval]
WHERE [lngVendPayApprovalID] = @PayID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendPayApprovalDetailData] @VendNumber AS NVARCHAR(100)
,@VendPayApprovalID AS BIGINT
AS
BEGIN
SELECT tblVendTrans.strInvDepNumber AS InvDepNumber
,tblVendTrans.strInvPDocID AS InvPDocID
,tblVendTrans.dteJournalDate AS JournalDate
,tblVendTrans.strPoNumber AS PoNumber
,tblVendTrans.decInvAmount AS InvAmount
,tblVendTrans.decInvAmountF AS InvAmountF
,SUM(tblVendTransDT.decAmount) AS Amount
,SUM(tblVendTransDT.decAmountF) AS AmountF
,tblVendTrans.intTransType AS TransType
,tblVendTrans.decDiscAvail AS DiscAvailable
,tblVendTrans.decDiscAvailF AS DiscAvailF
,tblVendTrans.dteDiscExpires AS DiscExpires
,tblVendTrans.lngVendTrID AS ID
,tblVendPayApprovalDT.decAmount AS PendingApproval
,tblVendPayApprovalDT.decAmountF AS PendingApprovalF
,tblVendPayApprovalDT.lngVendPayApprovalLineID AS VendPayApprovalLineID
,tblVendPayApprovalDT.decDiscount AS Discount
,tblVendPayApprovalDT.decDiscountF AS DiscountF
,ISNULL(tblInvoiceDocP.decVAT, 0) AS VAT
,ISNULL(tblInvoiceDocP.decVATF, 0) AS VATF
FROM tblVendTrans
INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
INNER JOIN tblVendPayApprovalDT ON tblVendPayApprovalDT.lngID = tblVendTransDT.lngID
AND tblVendPayApprovalDT.lngVendPayApprovalID = @VendPayApprovalID
AND tblVendPayApprovalDT.bitPaid = 0
LEFT JOIN tblInvoiceDocP ON tblVendTrans.strInvPDocID = tblInvoiceDocP.strInvPDocID
WHERE tblVendTrans.strVendName = @VendNumber
AND tblVendTransDT.bitReversed = 0
AND tblVendTrans.bitSettled = 0
GROUP BY tblVendTrans.lngVendTrID
,tblVendTrans.strInvDepNumber
,tblVendTrans.dteJournalDate
,tblVendTrans.strInvPDocID
,tblVendTrans.strPoNumber
,tblVendTrans.decInvAmount
,tblVendTrans.decInvAmountF
,tblVendTrans.intTransType
,tblVendTrans.decDiscAvail
,tblVendTrans.decDiscAvailF
,tblVendTrans.dteDiscExpires
,tblVendPayApprovalDT.decAmount
,tblVendPayApprovalDT.decAmountF
,tblVendPayApprovalDT.lngVendPayApprovalLineID
,tblVendPayApprovalDT.decDiscount
,tblVendPayApprovalDT.decDiscountF
,tblInvoiceDocP.decVAT
,tblInvoiceDocP.decVATF
ORDER BY tblVendTrans.intTransType
,tblVendTrans.strInvDepNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseDocData] @Location AS NVARCHAR(MAX) = ''
	,@IsDept AS BIT
	,@Dept AS NVARCHAR(MAX) = ''
	,@Start AS NVARCHAR(50)
	,@End AS NVARCHAR(50)
	,@IsShowQuotes AS BIT
	,@IsFilter AS BIT
	,@IsBookmarks AS BIT
	,@IsCriteriaWorkflow AS BIT
	,@IsAPCreateReturn AS BIT
	,@IsToType AS INT
	,@IsPOUsingApprovals AS BIT
	,@Vendor AS NVARCHAR(100)
	,@Sort AS NVARCHAR(MAX)
	,@IsBPToolsMode AS BIT
	,@UserName AS NVARCHAR(100)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(Max) = '';
	DECLARE @Query1 AS NVARCHAR(Max) = '';
	DECLARE @Query2 AS NVARCHAR(Max) = '';

	IF (@IsToType = 1)
	BEGIN
		IF (@IsFilter = 1)
		BEGIN
			IF (@IsShowQuotes = 0)
			BEGIN
				SET @Query = 
					'SELECT tblOrderDocP.strVendName as VendName, tblVendors.strVendDesc as VendDesc, tblOrderDocP.dteJournalDate as JournalDate,       
					tblOrderDocP.strOrdPDocID as OrdPDocID, tblOrderDocP.strReference as Reference  , tblOrderDocP.decTotal as Total, tblOrderDocP.bitIsForeign as IsForeign,       
					tblOrderDocP.decTotalF as TotalF, tblOrderDocP.strCurrency as Currency, CASE WHEN (SELECT COUNT(Z.strLocation) FROM (SELECT strLocation FROM tblOrderDocPDT WHERE (strOrdPDocID = tblOrderDocP.strOrdPDocID) GROUP BY strLocation) Z) > 1 THEN ''<MULTIPLE>'' ELSE ISNULL((SELECT strLocation FROM tblOrderDocPDT WHERE (strOrdPDocID = tblOrderDocP.strOrdPDocID) GROUP BY strLocation),'''') END AS Location, ISNULL((SELECT CAST(intDept AS NVarchar(4)) + '' '' + strDesc FROM tblDepartments WHERE (intDept = tblOrderDocP.intDept)),'''') AS Department,   
					CASE WHEN @Location = ''%%'' THEN 1 ELSE ISNULL((SELECT COUNT(strLocation) FROM tblOrderDocPDT WHERE (strOrdPDocID = tblOrderDocP.strOrdPDocID) AND (strLocation = ''' + @Location + ''') GROUP BY strLocation),0) as Exclude END       
					FROM tblOrderDocP INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName       
					WHERE (tblOrderDocP.bitCleared = 0) AND (tblOrderDocP.intDocType = 1) AND (tblOrderDocP.dteJournalDate BETWEEN ''' + @Start + ''' AND ''' + @End + ''')'
				
				IF (@IsDept = 1)
				BEGIN
					SET @Query += 'AND tblOrderDocP.intDept = ' + @Dept
				END
				ELSE
					SET @Query = 'SELECT tblOrderDocP.strVendName as VendName, tblVendors.strVendDesc as as VendDesc, tblOrderDocP.dteJournalDate as JournalDate,
					tblOrderDocP.strOrdPDocID as OrdPDocID, tblOrderDocP.strReference as Reference ,      
					tblOrderDocP.decTotal as Total, tblOrderDocP.bitIsForeign as IsForeign, tblOrderDocP.decTotalF as TotalF, tblOrderDocP.strCurrency as Currency, CASE WHEN (SELECT COUNT(Z.strLocation)       
					FROM (SELECT strLocation FROM tblOrderDocPDT WHERE (strOrdPDocID = tblOrderDocP.strOrdPDocID) GROUP BY strLocation) Z) > 1 THEN ''<MULTIPLE>''       
					ELSE ISNULL((SELECT strLocation FROM tblOrderDocPDT WHERE (strOrdPDocID = tblOrderDocP.strOrdPDocID) GROUP BY strLocation),'''') END AS Location,      
					ISNULL((SELECT CAST(intDept AS NVarchar(4)) + '' '' + strDesc FROM tblDepartments WHERE (intDept = tblOrderDocP.intDept)),'''') AS Department, CASE       
					WHEN ''' + @Location + ''' = ''%%'' THEN 1 ELSE ISNULL((SELECT COUNT(strLocation) FROM tblOrderDocPDT WHERE (strOrdPDocID = tblOrderDocP.strOrdPDocID) AND       
					(strLocation = ''' + @Location + ''') GROUP BY strLocation),0) END as Exclude FROM tblOrderDocP INNER JOIN tblVendors ON       
					tblOrderDocP.strVendName = tblVendors.strVendName WHERE (tblOrderDocP.intDocType = 1) AND (tblOrderDocP.dteJournalDate BETWEEN ''' + @Start + '''  AND ''' + @End + ''')'
			END
		END
		ELSE
		BEGIN
			IF (@IsShowQuotes = 0)
				SET @Query = 'SELECT tblOrderDocP.strVendName as VendName, tblVendors.strVendDesc as VendDesc, tblOrderDocP.dteJournalDate as JournalDate,      
				tblOrderDocP.strOrdPDocID as OrdPDocID,tblOrderDocP.strReference as Reference, tblOrderDocP.decTotal as Total,      
				tblOrderDocP.bitIsForeign as IsForeign, tblOrderDocP.decTotalF as TotalF, tblOrderDocP.strCurrency as Currency       
				FROM tblOrderDocP INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName WHERE (tblOrderDocP.bitCleared = 0)      
				AND (tblOrderDocP.intDocType = 1) AND (tblOrderDocP.dteJournalDate BETWEEN ''' + @Start + '''  AND ''' + @End + ''')'
			ELSE
				SET @Query = 'SELECT tblOrderDocP.strVendName as VendName, tblVendors.strVendDesc as VendDesc, tblOrderDocP.dteJournalDate  as JournalDate,      
				tblOrderDocP.strOrdPDocID as OrdPDocID, tblOrderDocP.strReference as Reference, tblOrderDocP.decTotal as Total,       
				tblOrderDocP.bitIsForeign as IsForeign, tblOrderDocP.decTotalF, tblOrderDocP.strCurrency       
				FROM tblOrderDocP INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName WHERE (tblOrderDocP.intDocType = 1)       
				AND (tblOrderDocP.dteJournalDate BETWEEN ''' + @Start + '''  AND ''' + @End + ''')'
		END

		IF (@IsBookmarks = 1)
		BEGIN
			SET @Query += ' AND (bitBookmark = 1)'
		END

		IF (@IsCriteriaWorkflow = 1)
			SET @Query += ' AND (bitInvWorkflowGRV = 1)'
	END

	IF (@IsToType = 2)
	BEGIN
		IF (@IsAPCreateReturn = 1)
			SET @Query = 'SELECT tblInvoiceDocP.strVendName as VendName, tblVendors.strVendDesc as VendDesc, tblInvoiceDocP.dteJournalDate as JournalDate, tblInvoiceDocP.strInvPDocID as OrdPDocID, tblInvoiceDocP.strReference as Reference,      
			tblInvoiceDocP.decTotal as Total, tblInvoiceDocP.bitIsForeign as IsForeign,tblInvoiceDocP.decTotalF as TotalF, tblInvoiceDocP.strCurrency as Currency, tblInvoiceDocP.strVendInvNo  as VendInvNo       
			FROM tblInvoiceDocP INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName       
			WHERE (tblInvoiceDocP.strInvPDocID NOT LIKE ''DN%'') AND (tblInvoiceDocP.bitHistoryTrans = 0) AND (tblInvoiceDocP.dteJournalDate BETWEEN ''' + @Start + ''' AND ''' + @End + ''')'
		ELSE
			SET @Query = 'SELECT tblInvoiceDocP.strVendName as VendName, tblVendors.strVendDesc as VendDesc, tblInvoiceDocP.dteJournalDate as JournalDate, tblInvoiceDocP.strInvPDocID as OrdPDocID, tblInvoiceDocP.strReference  as Reference,      
			tblInvoiceDocP.decTotal as Total, tblInvoiceDocP.bitIsForeign as IsForeign, tblInvoiceDocP.decTotalF as TotalF, tblInvoiceDocP.strCurrency as Currency, tblInvoiceDocP.strVendInvNo  as VendInvNo FROM tblInvoiceDocP       
			INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName WHERE (tblInvoiceDocP.bitHistoryTrans = 0) AND (tblInvoiceDocP.dteJournalDate BETWEEN ''' + @Start + ''' AND ''' + @End + ''')'

		IF (@IsBookmarks = 1)
			SET @Query += ' AND bitBookmark = 1'
	END

	IF (@IsToType = 3)
	BEGIN
		IF (@IsShowQuotes = 0)
			SET @Query = 'SELECT tblOrderDocP.strVendName as VendName, tblVendors.strVendDesc  as VendDesc, tblOrderDocP.dteJournalDate as JournalDate, tblOrderDocP.strOrdPDocID as OrdPDocID, tblOrderDocP.strReference as Reference,       
			tblOrderDocP.decTotal as Total, tblOrderDocP.bitIsForeign as IsForeign, tblOrderDocP.decTotalF as TotalF, tblOrderDocP.strCurrency  as Currency FROM tblOrderDocP INNER JOIN tblVendors ON      
			tblOrderDocP.strVendName = tblVendors.strVendName WHERE (tblOrderDocP.bitCleared = 0) AND (tblOrderDocP.intDocType = 2) AND (tblOrderDocP.dteJournalDate BETWEEN ''' + @Start + ''' AND ''' + @End + ''')'
		ELSE
			SET @Query = 'SELECT tblOrderDocP.strVendName as VendName, tblVendors.strVendDesc as VendDesc, tblOrderDocP.dteJournalDate as JournalDate, tblOrderDocP.strOrdPDocID as OrdPDocID, tblOrderDocP.strReference as Reference,      
			tblOrderDocP.decTotal as Total, tblOrderDocP.bitIsForeign as IsForeign, tblOrderDocP.decTotalF as TotalF, tblOrderDocP.strCurrency  as Currency      
			FROM tblOrderDocP INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName WHERE (tblOrderDocP.intDocType = 2) AND (tblOrderDocP.dteJournalDate BETWEEN ''' + @Start + ''' AND ''' + @End + ''')'
		
		IF (@IsBookmarks = 1)
			SET @Query += ' AND bitBookmark = 1'
	END

	IF (@IsToType = 4)
	BEGIN
		SET @Query = 'SELECT tblOrderDocP.strVendName as VendName, tblVendors.strVendDesc as VendDesc, tblOrderDocP.dteJournalDate as JournalDate, tblOrderDocP.strOrdPDocID as OrdPDocID, tblOrderDocP.strReference as Reference,      
		tblOrderDocP.decTotal as Total, tblOrderDocP.bitIsForeign as IsForeign, tblOrderDocP.decTotalF as TotalF, tblOrderDocP.strCurrency as Currency, tblOrderDocP.decDiscPerc  as DiscPerc       
		FROM tblOrderDocP INNER JOIN tblVendors ON tblOrderDocP.strVendName = tblVendors.strVendName WHERE (tblOrderDocP.bitCleared = 0) AND      
		(tblOrderDocP.dteJournalDate BETWEEN ''' + @Start + ''' AND ''' + @End + ''') AND (tblVendors.bitInvWorkflowPO = 1)'

		IF (@IsBookmarks = 1)
			SET @Query += ' AND bitBookmark = 1'

		IF (@IsPOUsingApprovals = 1)
			SET @Query += ' AND (tblOrderDocP.intDocType = 1)'
	END

	IF (@IsToType = 5)
	BEGIN
		IF (@IsShowQuotes = 0)
			SET @Query = 'SELECT tblOrderDocPG.strVendName as VendName, tblVendors.strVendDesc as VendDesc, tblOrderDocPG.dteJournalDate as JournalDate, tblOrderDocPG.strOrdPGDocID as  OrdPDocID,      
			tblOrderDocPG.strReference as Reference, tblOrderDocPG.decTotal as Total, tblOrderDocPG.bitIsForeign as IsForeign, tblOrderDocPG.decTotalF as TotalF, tblOrderDocPG.strCurrency as Currency,      
			tblOrderDocPG.decDiscPerc  as DiscPerc FROM      
			tblOrderDocPG INNER JOIN tblVendors ON tblOrderDocPG.strVendName = tblVendors.strVendName WHERE (tblOrderDocPG.bitCleared = 0) AND (tblOrderDocPG.dteJournalDate BETWEEN ''' + @Start + ''' AND ''' + @End + ''')'
		ELSE
			SET @Query = 'SELECT tblOrderDocPG.strVendName as VendName, tblVendors.strVendDesc as VendDesc, tblOrderDocPG.dteJournalDate as JournalDate, tblOrderDocPG.strOrdPGDocID as OrdPDocID, tblOrderDocPG.strReference as Reference,      
			tblOrderDocPG.decTotal as Total, tblOrderDocPG.bitIsForeign as IsForeign, tblOrderDocPG.decTotalF as TotalF, tblOrderDocPG.strCurrency as Currency, tblOrderDocPG.decDiscPerc  as DiscPerc       
			FROM tblOrderDocPG INNER JOIN tblVendors ON tblOrderDocPG.strVendName = tblVendors.strVendName WHERE (tblOrderDocPG.dteJournalDate BETWEEN ''' + @Start + ''' AND ''' + @End + ''')'
	END

	IF (@IsToType = 6)
	BEGIN
		SET @Query = 'SELECT tblInvoiceDocP.strVendName as VendName, tblVendors.strVendDesc as VendDesc, tblInvoiceDocP.dteJournalDate as JournalDate, tblInvoiceDocP.strInvPDocID as OrdPDocID, tblInvoiceDocP.strReference as Reference,      
		tblInvoiceDocP.decTotal as Total, tblInvoiceDocP.bitIsForeign as IsForeign, tblInvoiceDocP.decTotalF as TotalF, tblInvoiceDocP.strCurrency as Currency, tblInvoiceDocP.strVendInvNo  as VendInvNo       
		FROM tblInvoiceDocP INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName WHERE (tblInvoiceDocP.bitHistoryTrans = 0) AND (tblInvoiceDocP.dteJournalDate BETWEEN ''' + @Start + ''' AND ''' + @End + ''')'

		IF (@IsBookmarks = 1)
			SET @Query += ' AND bitBookmark = 1'
	END

	IF (@Vendor <> '')
		SET @Query1 += ' AND (tblVendors.strVendName = ''' + @Vendor + ''')'

	IF (@IsBPToolsMode = 0)
	BEGIN
		SET @Query += 'AND (tblVendors.strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName =''' + @UserName + ''')))'
	END

	IF (@Sort = 0)
		SET @Query2 = ' ORDER BY tblVendors.strVendName ASC'
	ELSE IF (@Sort = 1)
		SET @Query2 = ' ORDER BY tblVendors.strVendDesc ASC'
	ELSE IF (@Sort = 2)
		SET @Query2 = ' ORDER BY dteJournalDate DESC'
	ELSE IF (@Sort = 3)
		IF (@IsToType = 2)
			SET @Query2 = ' ORDER BY strInvPDocID DESC'
		ELSE IF (@IsToType = 5)
			SET @Query2 = ' ORDER BY strOrdPGDocID DESC'
		ELSE
			SET @Query2 = ' ORDER BY strOrdPDocID DESC'
	ELSE IF (@Sort = 4)
		IF (@IsToType = 2)
			SET @Query2 = ' ORDER BY strVendInvNo ASC'
		ELSE
			SET @Query2 = ' ORDER BY tblVendors.strVendName ASC'
	ELSE IF (@Sort = 5)
		SET @Query2 = '  ORDER BY decTotal DESC'

	EXEC (@Query + @Query1 + @Query2);
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetDeclineResaonCodes] AS
BEGIN
SELECT strAuthReasonCode FROM tblAuthorizeReasons WHERE bitInactive = 0 ORDER BY strAuthReasonCode
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateApproverStatusFromWPF]  
@DocNumber Varchar(20),   
@GroupId int,  
@UserName varchar(50),  
@Status int  
AS  
BEGIN  
SET NOCOUNT ON;  
UPDATE tblPQApprovalsUserTracking set intApprovalStatus=@Status, rowUpdated=GETDATE()   
where strOrdPDocID=@DocNumber and intApprovalStatus=0 and intGroupId=@GroupId and strUserName=@UserName   
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeclineTrackingDatarecord]  
@SQDocID Varchar(100),   
@SQdteDateofApproval datetime,  
@SQdecDocTotalIncl decimal(10), 
@SQstrDocCreatorUsername varchar(50), 
@SQstrApproverUsername varchar(50), 
@SQdteDocCreationDate DateTime, 
@SQstrDeclineReasonCodeText Nvarchar(MAX), 
@SQblnShowStatus bit
AS  
BEGIN  
SET NOCOUNT ON;  
UPDATE tblOrderDocP SET bitCleared = 1 WHERE strOrdPDocID = @SQDocID
INSERT INTO tblPOApprovalTracking VALUES (@SQDocID, 
REPLACE(CONVERT(varchar, @SQdteDateofApproval, 101), '/', '') + REPLACE(CONVERT(varchar, @SQdteDateofApproval, 108), ':', ''), 
@SQdecDocTotalIncl, @SQstrDocCreatorUsername, @SQstrApproverUsername, @SQdteDocCreationDate, @SQdteDateofApproval, @SQstrDeclineReasonCodeText, @SQblnShowStatus)
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchasesREData] @IsBPToolsMode AS BIT
	,@UserName AS NVARCHAR(100)
AS
BEGIN
	IF (@IsBPToolsMode = 0)
	BEGIN
		SELECT tblPurchRE.strREName AS REName
			,tblPurchRE.dteLastProcDate AS LastProcDate
			,tblVendors.strVendName AS VendName
		FROM tblPurchRE
		INNER JOIN tblVendors ON tblPurchRE.strVendName = tblVendors.strVendName
		ORDER BY tblPurchRE.strREName
	END
	ELSE
	BEGIN
		SELECT tblPurchRE.strREName AS REName
			,tblPurchRE.dteLastProcDate AS LastProcDate
			,tblVendors.strVendName AS VendName
		FROM tblPurchRE
		INNER JOIN tblVendors ON tblPurchRE.strVendName = tblVendors.strVendName
			AND (
				tblVendors.strVendCategory IN (
					SELECT tblVendorCat.strVendCategory
					FROM tblVendorCat
					LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
					WHERE ISNULL((
								SELECT COUNT(tblVendorCatSec.strVendCategory)
								FROM tblVendorCatSec
								WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblVendorCatSec.strVendCategory)
									FROM tblVendorCatSec
									WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
									), 0) > 0
							AND tblVendorCatSec.strUserName = @UserName
							)
					)
				)
		ORDER BY tblPurchRE.strREName
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchasePriceListData](
@SQPart NVARCHAR(200)
)  
AS  
BEGIN  
SELECT tblInvPrice.strPricelist ,tblInvPrice.decSelling ,tblPricelists.intPriceListType ,tblPriceListsByDate.dteStartDate ,tblPriceListsByDate.dteFinishDate,tblInvPrice.uidPriceBasedID 
FROM tblInvPrice INNER JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist AND tblInvPrice.uidPriceBasedID = tblPricelists.uidPriceBasedID 
INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblPricelists.uidPriceBasedID 
INNER JOIN tblPriceData ON tblPriceData.strPricelist = tblPricelists.strPricelist WHERE(tblInvPrice.strPartNumber = ''+@SQPart+'') 
AND tblPriceData.bitInactive = 0 ORDER BY tblInvPrice.strPricelist
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseHistoryData](
@SQPartNumber NVARCHAR(200)
)  
AS  
BEGIN 
SELECT top 10 tblInvoiceDocP.strInvPDocID as Document, tblInvoiceDocP.dteJournalDate as Date, tblInvoiceDocP.strVendName as VendorNumber, tblVendors.strVendDesc as VendorName, 
tblInvoiceDocP.strVendInvNo as VendorInv, tblInvoiceDocP.strReference, 
CASE WHEN (tblInv.intType = 1) THEN 'Stock Item' ELSE 'Service Item' END AS Type, tblInv.strCategory, tblInv.strAcctSet, tblInvoiceDocPDT.strLocation, 
tblInvoiceDocPDT.decBuyQty as Qty, tblInvoiceDocPDT.decEaIncTax as UnitPrice, tblInvoiceDocPDT.decLineDiscAmt as DiscAmt, 
CASE WHEN ABS(tblInvoiceDocPDT.decLineDiscAmt) >0 THEN tblInvoiceDocPDT.decPriceEaExc ELSE 0 END AS PriceDisc, 
tblInvoiceDocPDT.decLineTaxAmt, tblInvoiceDocPDT.decLineTotExc, tblInvoiceDocPDT.decTotIncTax 
FROM tblInvoiceDocPDT  
INNER JOIN tblInvoiceDocP ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocP.strInvPDocID 
INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName 
INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber AND tblInvoiceDocPDT.strLocation = tblInv.strLocName 
WHERE tblInvoiceDocPDT.strPartNumber = ''+@SQPartNumber +''
ORDER BY dteJournalDate DESC,tblInvoiceDocP.strInvPDocID DESC
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetAllLocations] @SQUserName NVARCHAR(MAX)  
AS    
BEGIN    
SELECT tblInvLoc.strLocName,   
ISNULL((SELECT COUNT(tblInvLocSec.strLocName) FROM tblInvLocSec WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName),0),   
ISNULL(tblInvLocSec.strUserName,'')   
FROM tblInvLoc LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName AND tblInvLocSec.strUserName = ''+@SQUserName+'' WHERE tblInvLoc.intType = 0 ORDER BY tblInvLoc.strLocName  
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseOrderDetails] (
	@SQLocation NVARCHAR(200)
	,@SQStart1 NVARCHAR(19)
	,@SQEnd1 NVARCHAR(19)
	,@SQStart2 NVARCHAR(19)
	,@SQEnd2 NVARCHAR(19)
	,@SQStart3 NVARCHAR(19)
	,@SQEnd3 NVARCHAR(19)
	,@SQstrTransactionType NVARCHAR(200)
	,@SQPricelist NVARCHAR(200)
	,@SQVendName NVARCHAR(200)
	,@SQCategory NVARCHAR(200)
	,@IsVendorSelected BIT
	,@IsCategorySelected BIT
	,@IsInvSortDescription BIT
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)

	SET @Query = 
		'SELECT MASTERTABLE.strPartNumber ,MASTERTABLE.strDesc ,tblInvExt.decAvail ,tblInvExt.decOnOrder ,tblInvExt.decMinimumLevel ,( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) * - 1 AS Qty FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTrackingDT.strPartNumber = MASTERTABLE.strPartNumber) AND (tblInvTrackingDT.strLocName = @SQLocation) AND (tblInvTracking.intModule = 2) AND ( tblInvTracking.dteJournalDate BETWEEN @SQStart1 AND @SQEnd1 ) ) ,( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) * - 1 AS Qty FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTrackingDT.strPartNumber = MASTERTABLE.strPartNumber) AND (tblInvTrackingDT.strLocName = @SQLocation) AND (tblInvTracking.intModule = 2) AND ( tblInvTracking.dteJournalDate BETWEEN @SQStart2 AND @SQEnd2 ) ) ,( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) * - 1 AS Qty FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTrackingDT.strPartNumber = MASTERTABLE.strPartNumber) AND (tblInvTrackingDT.strLocName = @SQLocation) AND (tblInvTracking.intModule = 2) AND ( tblInvTracking.dteJournalDate BETWEEN @SQStart3 AND @SQEnd3 ) ) ,MASTERTABLE.decLastPPUnit ,MASTERTABLE.decBuyToStock ,( SELECT tblInvPrice.decSelling FROM tblPriceListsByDate INNER JOIN tblInvPrice ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID INNER JOIN tblInv ON tblInvPrice.strPartNumber = tblInv.strPartNumber LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit AND tblInvUOMs.bitInactive = 0 AND ( tblInvUOMs.strUseFor = @SQstrTransactionType OR tblInvUOMs.strUseFor = ''Both'' ) WHERE (tblInvPrice.strPartNumber = MASTERTABLE.strPartNumber) AND (tblInvPrice.strPricelist = @SQPricelist) AND ( @SQEnd3 BETWEEN tblPriceListsByDate.dteStartDate AND tblPriceListsByDate.dteFinishDate ) AND ( CASE WHEN tblInvPrice.bitStockUnit = 1 THEN tblInv.bitDefaultUOM ELSE 0 END = 1 OR ISNULL(tblInvUOMs.bitDefaultUOM, 0) = 1 ) ) AS Selling ,ISNULL(( SELECT TOP 1 decPrice FROM tblInvVend WHERE strPartNumber = MASTERTABLE.strPartNumber AND strVendName = @SQVendName ), 0) AS VendorPrice ,ISNULL(( SELECT TOP 1 decLocalPrice FROM tblInvVend WHERE strPartNumber = MASTERTABLE.strPartNumber AND strVendName = @SQVendName ), 0) AS LocalPrice ,ISNULL(( SELECT TOP 1 decLocalPrice * ((decLandedCostFactor + 100) / 100) FROM tblInvVend WHERE strPartNumber = MASTERTABLE.strPartNumber AND strVendName = @SQVendName ), 0) AS EstLandedCost ,tblInvExt.decMaxLevel AS MaxLevel FROM tblInv AS MASTERTABLE INNER JOIN tblInvExt ON MASTERTABLE.strPartNumber = tblInvExt.strPartNumber WHERE (MASTERTABLE.bitInactive = 0) AND (MASTERTABLE.intType = 1) AND (tblInvExt.strLocName = @SQLocation) AND (tblInvExt.bitInactive = 0) AND (MASTERTABLE.bitOtherCmp = 0) '

	IF (@IsVendorSelected = 1)
	BEGIN
		SET @Query += ' AND (MASTERTABLE.strPartNumber IN (SELECT strPartNumber FROM tblInvVend WHERE strVendName = @SQVendName))'
	END

	IF (@IsCategorySelected = 1)
	BEGIN
		SET @Query += ' AND (MASTERTABLE.strCategory = @SQCategory)'
	END

	IF (@IsInvSortDescription = 0)
	BEGIN
		SET @Query += ' ORDER BY MASTERTABLE.strPartNumber'
	END
	ELSE
	BEGIN
		SET @Query += ' ORDER BY MASTERTABLE.strDesc'
	END


	EXEC sp_Executesql @Query
		,N'@SQLocation NVARCHAR(200), @SQStart1 NVARCHAR(19),@SQEnd1 NVARCHAR(19),@SQStart2 NVARCHAR(19),@SQEnd2 NVARCHAR(19),@SQStart3 NVARCHAR(19),@SQEnd3 NVARCHAR(19),@SQstrTransactionType NVARCHAR(200),@SQPricelist NVARCHAR(200),@SQVendName NVARCHAR(200),@SQCategory NVARCHAR(200),@IsVendorSelected bit,@IsCategorySelected bit,@IsInvSortDescription bit'
		,@SQLocation
		,@SQStart1
		,@SQEnd1
		,@SQStart2
		,@SQEnd2
		,@SQStart3
		,@SQEnd3
		,@SQstrTransactionType
		,@SQPricelist
		,@SQVendName
		,@SQCategory
		,@IsVendorSelected
		,@IsCategorySelected
		,@IsInvSortDescription
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOpenOrdersByVendor] @SQstrVendName AS VARCHAR(50)  
AS  
BEGIN  
SELECT HDR.strOrdPDocID AS DocumentNumber , 
HDR.dteJournalDate AS JournalDate, 
HDR.dteRequired AS [Required], 
ISNULL(HDR.strReference, '') AS Reference, 
DTL.strPartNumber AS PartNumber, 
DTL.strPartDesc AS PartDesc, 
DTL.decBuyQty AS Qty, 
CASE HDR.bitIsForeign WHEN 0 THEN DTL.decPriceEaExc ELSE DTL.decPriceEaExcF END AS PriceEaExc, 
DTL.strTaxCode AS TaxCode, 
CASE HDR.bitIsForeign WHEN 0 THEN DTL.decLineTaxAmt ELSE DTL.decLineTaxAmtF END AS [LineTaxAmt], 
CASE HDR.bitIsForeign WHEN 0 THEN DTL.decLineTotExc + DTL.decLineTaxAmt ELSE DTL.decLineTotExcF + DTL.decLineTaxAmtF END AS [LineTotInc], 
CASE HDR.bitIsForeign WHEN 0 THEN ROUND(((DTL.decLineTotExc + DTL.decLineTaxAmt) / decBuyQty) * DTL.decBuyQtyRemain, 2) ELSE 
ROUND(((DTL.decLineTotExcF + DTL.decLineTaxAmtF) / decBuyQty) * DTL.decBuyQtyRemain, 2) END AS [Outstanding], 
DTL.intLineNo AS [LineNo]
FROM tblOrderDocP HDR 
INNER JOIN tblOrderDocPDT DTL ON HDR.strOrdPDocID = DTL.strOrdPDocID WHERE (HDR.decTotal <> 0) AND (bitCleared = 0) AND (intDocType = 1) 
AND (HDR.strVendName = @SQstrVendName) AND (DTL.decBuyQtyRemain <> 0) ORDER BY HDR.strOrdPDocID, HDR.dteJournalDate, DTL.intLineNo
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetQuotesByVendor]  
@SQstrVendName AS VARCHAR(50)  
AS  
BEGIN  
SELECT HDR.strOrdPDocID AS DocumentNumber, 
HDR.dteJournalDate AS JournalDate , 
HDR.dteRequired AS [Required], 
ISNULL(HDR.strReference, '') AS [Reference], 
DTL.strPartNumber  AS PartNumber, 
DTL.strPartDesc AS PartDesc, 
DTL.decBuyQty AS Qty, 
CASE HDR.bitIsForeign WHEN 0 THEN DTL.decPriceEaExc ELSE DTL.decPriceEaExcF END AS [PriceEaExc], 
DTL.strTaxCode AS TaxCode, 
CASE HDR.bitIsForeign WHEN 0 THEN DTL.decLineTaxAmt ELSE DTL.decLineTaxAmtF END AS [LineTaxAmt], 
CASE HDR.bitIsForeign WHEN 0 THEN DTL.decLineTotExc + DTL.decLineTaxAmt ELSE DTL.decTotIncTaxF + DTL.decLineTaxAmtF END AS [LineTotInc], 
DTL.intLineNo  AS [LineNo]
FROM tblOrderDocP HDR 
INNER JOIN tblOrderDocPDT DTL ON HDR.strOrdPDocID = DTL.strOrdPDocID 
WHERE HDR.decTotal <> 0 AND HDR.bitCleared = 0 AND HDR.intDocType = 2 AND HDR.strVendName = @SQstrVendName 
ORDER BY HDR.strOrdPDocID, HDR.dteJournalDate, DTL.intLineNo
END  
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOverdueInvoicesByVendor]
@VendName AS VARCHAR(50)
AS
BEGIN
	SELECT ISNULL(tblVendTrans.strJEDocID, tblInvoiceDocP.strInvPDocID) AS Document
		,ISNULL(tblInvoiceDocP.strReference, '') Reference
		,tblVendTrans.dteJournalDate as DocumentDate
		,ISNULL(tblInvoiceDocP.dteRequired, tblVendTrans.dteDueDate) AS RequiredDate
		,CASE tblVendTrans.bitIsForeign
			WHEN 0
				THEN tblVendTrans.decInvAmount
			ELSE tblVendTrans.decInvAmountF
			END as Total
		,CASE tblVendTrans.bitIsForeign
			WHEN 0
				THEN SUM(tblVendTransDT.decAmount)
			ELSE SUM(tblVendTransDT.decAmountF)
			END as AmountDue
	FROM tblVendTrans
	INNER JOIN tblVendTransDT ON tblVendTransDT.lngVendTrID = tblVendTrans.lngVendTrID
	LEFT JOIN tblInvoiceDocP ON tblVendTrans.strInvPDocID = tblInvoiceDocP.strInvPDocID
	WHERE tblVendTrans.decInvAmount <> 0
		AND tblVendTrans.bitSettled = 0
		AND tblVendTrans.strVendName = @VendName
	GROUP BY tblInvoiceDocP.strInvPDocID
		,tblVendTrans.strJEDocID
		,tblInvoiceDocP.strReference
		,tblVendTrans.dteJournalDate
		,tblInvoiceDocP.dteRequired
		,tblVendTrans.dteDueDate
		,tblVendTrans.bitIsForeign
		,tblVendTrans.decInvAmount
		,tblVendTrans.decInvAmountF
	ORDER BY tblInvoiceDocP.strInvPDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchasesLandedData]  
@SQDocNumber AS VARCHAR(200)  
AS  
BEGIN 
SELECT strPartNumber as PartNumber, 
strLocation as Location, 
decStockQty as StockQty, 
strPartDesc as Desctiption, 
decLineTotExc as Amount 
FROM tblInvoiceDocPDT 
WHERE (strInvPDocID = @SQDocNumber) AND (decStockQty > 0)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchasesPreAddCostData]  
@SQDocNumber AS VARCHAR(200) ,
@SQLineNo int
AS  
BEGIN 
SELECT 
decStockQty as StockQty, 
decTotUnitCost as UnitCost , 
decAddCost as AdditionalCosts, 
decTotLandedUnitCost as LandedUnit, 
strComment as Desctiption, 
strUserName as PartNumber, 
dteSystemDate as SystemDate, 
dteJournalDate  as JournalDate 
FROM tblInvoiceDocPDTAddCosts 
WHERE strInvPDocID = @SQDocNumber AND intLineNo = @SQLineNo 
ORDER BY lngID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[AssetsWithAssetRepairCostSearch](
@strDocID NVARCHAR(200),
@strVendID NVARCHAR(200),
@strPartNumber NVARCHAR(200),
@intLineNo int 
)
AS
BEGIN
SELECT tblAssets.strAssetCode as AssetCode, tblAssets.strAssetDesc as AssetDesc, tblassets.strAssetTypeCode as AssetTypeCode
,ISNULL((SELECT decCost FROM tblAssetRepairs WHERE tblAssetRepairs.strAssetCode = tblAssets.strAssetCode 
AND tblAssetRepairs.strInvPDocID = @strDocID 
AND tblAssetRepairs.strVendNumber = @strVendID 
AND tblAssetRepairs.strPartNumber = @strPartNumber 
AND tblAssetRepairs.intLineNo = (CASE  WHEN @intLineNo <> NULL THEN @intLineNo WHEN   @intLineNo <> 0 THEN @intLineNo ELSE 0 END)
), 0) AS AssetRepairCost 
FROM tblAssets 
Order by AssetRepairCost desc 
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseViewVendorData](
@SQVendID NVARCHAR(100)
)
AS
BEGIN
SELECT strTerm, intDept, strCurrency, intDelMethod, strTaxCode, ISNULL(intExpAcct,0), strTenderType, decTradeDiscPerc, decBalDue, decBalDueF, decOpenOrders, decOpenOrdersF, 
ISNULL((SELECT CASE bitIsForeign WHEN 0 THEN SUM(decTotal) ELSE SUM(decTotalF) END 
FROM tblOrderDocP WHERE intDocType = 2 AND bitCleared = 0 AND strVendName = ''+@SQVendID+'' AND strCurrency = (SELECT strCurrency FROM tblVendors WHERE strVendName = ''+@SQVendID+'') 
GROUP BY bitIsForeign), 0) AS decOpenQuotes 
FROM tblVendors 
WHERE tblVendors.strVendName = ''+@SQVendID+''
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseViewUserData](
@SQDocID NVARCHAR(100),
@SQRevisionNumber int
)
AS
BEGIN
SELECT dteSystemDate,strUserName FROM tblInvoiceDocREV WHERE strInvDocID = ''+@SQDocID+'' And intRevisionNumber = @SQRevisionNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseViewRecDocData] AS
BEGIN
SELECT strRecDoc1, strRecDoc2, strRecDoc3, strRecDoc4, strRecDoc5, strRecDoc6, strRecDoc7, strRecDoc8, strRecDoc9, strRecDoc10, strRecDoc11, strRecDoc12, strRecDoc13, strRecDoc14, bitRecDoc1, bitRecDoc2, bitRecDoc3, bitRecDoc4, bitRecDoc5, bitRecDoc6, bitRecDoc7, bitRecDoc8, bitRecDoc9, bitRecDoc10, bitRecDoc11, bitRecDoc12, bitRecDoc13, bitRecDoc14 FROM tblOptFields
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetDocViewData](
@SQDocNumber NVARCHAR(100),
@SQRevisionNumber int
)
AS
BEGIN
select 
dteJournalDate, dteRequired, strVendName,strSoldTo, strShipTo,decSubTotal,decVAT,decTotal,decDiscPerc,decDiscAmt,strTerm,decTotalWeight,decTotalVolWeight, strBoughtFrom 
from tblInvoiceDocREV 
where strInvDocID = @SQDocNumber and intRevisionNumber = @SQRevisionNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseViewGrid](
@SQDocNumber NVARCHAR(100),
@SQRevisionNumber int,
@SQModule int
)
AS
BEGIN
select * from tblInvoiceDocREV where strInvDocID = @SQDocNumber and intRevisionNumber = @SQRevisionNumber and intModule = @SQModule
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseViewDepartment] AS
BEGIN
select * from tblDepartments
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseOrderDocRevData](
@SQDocNumber NVARCHAR(200),
@SQGPCalcLPP int,
@SQGPCalcInvLevel int,
@SQRevisionNumber int
)
AS
BEGIN
SELECT tblInvoiceDocREVDT.strPartNumber	,tblInvoiceDocREVDT.strLocation	,tblInvoiceDocREVDT.strPartDesc	,tblInvoiceDocREVDT.decBuyQty ,tblInvoiceDocREVDT.decBuyQtyRemain,
tblInvoiceDocREVDT.strBuyUnit,tblInvoiceDocREVDT.decEaIncTax	,tblInvoiceDocREVDT.decLineDiscPerc	,tblInvoiceDocREVDT.strTaxCode,tblInvoiceDocREVDT.decLineTaxAmt,
tblInvoiceDocREVDT.decTotIncTax,tblInvoiceDocREVDT.intType,tblInvoiceDocREVDT.imgTaxObj,tblInvoiceDocREVDT.decLastPPUnit,
CASE 
WHEN tblInv.intType = 4 THEN tblInv.decStandardCost 
ELSE 
CASE  @SQGPCalcLPP  
WHEN 0 THEN tblInv.decLastPPUnit 
WHEN 1 THEN tblInv.decStandardCost 
WHEN 2 THEN 
CASE  @SQGPCalcInvLevel  
WHEN 0 THEN CASE  
WHEN tblInv.decLastPPUnit > ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblInvoiceDocREVDT.strLocation ), 0) 
THEN tblInv.decLastPPUnit 
ELSE CASE  
WHEN tblInv.decLastPPUnit < ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblInvoiceDocREVDT.strLocation ), 0) 
THEN ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblInvoiceDocREVDT.strLocation ), 0) 
ELSE CASE  
WHEN ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblInvoiceDocREVDT.strLocation ), 0) = 0 
THEN tblInv.decLastPPUnit 
ELSE ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblInvoiceDocREVDT.strLocation ), 0) 
END END END 
WHEN 1 THEN CASE 
WHEN tblInv.decLastPPUnit > ISNULL(( CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) 
THEN tblInv.decLastPPUnit 
ELSE CASE  
WHEN tblInv.decLastPPUnit < ISNULL(( CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) 
THEN ISNULL(( CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) 
ELSE CASE 
WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0 THEN tblInv.decLastPPUnit 
ELSE ISNULL(( CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) 
END END END 
ELSE tblInv.decLastPPUnit END 
WHEN 3 THEN 
CASE 0 
WHEN 0 THEN 
CASE WHEN ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblInvoiceDocREVDT.strLocation ), 0) = 0 THEN tblInv.decLastPPUnit ELSE ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblInvoiceDocREVDT.strLocation ), 0) END 
WHEN 1 THEN 
CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0 THEN tblInv.decLastPPUnit ELSE ISNULL(( CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) END ELSE tblInv.decLastPPUnit 
END 
ELSE tblInv.decLastPPUnit END 
END AS GPCalc 
FROM tblInvoiceDocREVDT 
INNER JOIN tblInv ON tblInvoiceDocREVDT.strPartNumber = tblInv.strPartNumber 
LEFT JOIN tblInvoiceDocDTPrj ON tblInvoiceDocREVDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID AND tblInvoiceDocREVDT.intLineNo = tblInvoiceDocDTPrj.intLineNo 
WHERE tblInvoiceDocREVDT.strInvDocID = @SQDocNumber AND tblInvoiceDocREVDT.strPartNumber != @SQDocNumber 
AND tblInvoiceDocREVDT.lngEntID = ( SELECT lngEntID FROM tblInvoiceDocREV WHERE strInvDocID = @SQDocNumber AND intRevisionNumber = @SQRevisionNumber ) 
ORDER BY tblInvoiceDocREVDT.intLineNo
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseInvoiceDocRevData](
@SQDocNumber NVARCHAR(200),
@SQGPCalcLPP int,
@SQGPCalcInvLevel int,
@SQRevisionNumber int
)
AS
BEGIN
SELECT tblInvoiceDocREVDT.strPartNumber	,tblInvoiceDocREVDT.strLocation	,tblInvoiceDocREVDT.strPartDesc	,tblInvoiceDocREVDT.decBuyQty ,tblInvoiceDocREVDT.strBuyUnit,
tblInvoiceDocREVDT.decEaIncTax	,tblInvoiceDocREVDT.decLineDiscPerc	,tblInvoiceDocREVDT.strTaxCode,tblInvoiceDocREVDT.decLineTaxAmt,tblInvoiceDocREVDT.decTotIncTax,
tblInvoiceDocREVDT.intType,tblInvoiceDocREVDT.imgTaxObj,tblInvoiceDocREVDT.decLastPPUnit,
CASE 
WHEN tblInv.intType = 4 THEN tblInv.decStandardCost ELSE 
CASE  @SQGPCalcLPP  WHEN 0 THEN tblInv.decLastPPUnit WHEN 1 THEN tblInv.decStandardCost WHEN 2 THEN CASE  @SQGPCalcInvLevel  WHEN 0 THEN CASE  WHEN tblInv.decLastPPUnit > ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblInvoiceDocREVDT.strLocation ), 0) THEN tblInv.decLastPPUnit ELSE CASE  WHEN tblInv.decLastPPUnit < ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblInvoiceDocREVDT.strLocation ), 0) THEN ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblInvoiceDocREVDT.strLocation ), 0) ELSE CASE  WHEN ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblInvoiceDocREVDT.strLocation ), 0) = 0 THEN tblInv.decLastPPUnit ELSE ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblInvoiceDocREVDT.strLocation ), 0) END END END WHEN 1 THEN CASE WHEN tblInv.decLastPPUnit > ISNULL(( CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) THEN tblInv.decLastPPUnit ELSE CASE  WHEN tblInv.decLastPPUnit < ISNULL(( CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) THEN ISNULL(( CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) ELSE CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0 THEN tblInv.decLastPPUnit ELSE ISNULL(( CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) END END END ELSE tblInv.decLastPPUnit END WHEN 3 THEN CASE 0 WHEN 0 THEN CASE WHEN ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblInvoiceDocREVDT.strLocation ), 0) = 0 THEN tblInv.decLastPPUnit ELSE ISNULL(( SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = tblInvoiceDocREVDT.strLocation ), 0) END WHEN 1 THEN CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0 THEN tblInv.decLastPPUnit ELSE ISNULL(( CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END ), 0) END ELSE tblInv.decLastPPUnit END ELSE tblInv.decLastPPUnit END 
END AS GPCalc 
FROM tblInvoiceDocREVDT 
INNER JOIN tblInv ON tblInvoiceDocREVDT.strPartNumber = tblInv.strPartNumber 
LEFT JOIN tblInvoiceDocDTPrj ON tblInvoiceDocREVDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID AND tblInvoiceDocREVDT.intLineNo = tblInvoiceDocDTPrj.intLineNo 
WHERE tblInvoiceDocREVDT.strInvDocID = @SQDocNumber AND tblInvoiceDocREVDT.strPartNumber != @SQDocNumber 
AND tblInvoiceDocREVDT.lngEntID = ( SELECT lngEntID FROM tblInvoiceDocREV WHERE strInvDocID = @SQDocNumber AND intRevisionNumber = @SQRevisionNumber ) 
ORDER BY tblInvoiceDocREVDT.intLineNo 
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseInvoiceLoadDocInv](
@SQDocNumber NVARCHAR(200),
@SQModule int,
@SQRevisionNumber int
)
AS
BEGIN
SELECT tblInvoiceDocREV.strInvDocID,tblInvoiceDocREV.dteSystemDate,tblInvoiceDocREV.dteJournalDate,tblInvoiceDocREV.dteRequired,tblInvoiceDocREV.strUserName,tblInvoiceDocREV.strVendName,tblInvoiceDocREV.strSoldTo,tblInvoiceDocREV.strShipTo,tblInvoiceDocREV.strReference,tblInvoiceDocREV.decSubTotal,tblInvoiceDocREV.decVAT,tblInvoiceDocREV.decTotal,tblInvoiceDocREV.strNotes,tblInvoiceDocREV.bitPrinted,tblInvoiceDocREV.bitEmailed,tblInvoiceDocREV.bitCleared,tblInvoiceDocREV.strSalesName,tblInvoiceDocREV.strAddInfo,tblInvoiceDocREV.strCurrency,tblInvoiceDocREV.bitIsForeign,tblInvoiceDocREV.decSubTotalF,tblInvoiceDocREV.decVATF,tblInvoiceDocREV.decTotalF,tblInvoiceDocREV.decExchange,tblInvoiceDocREV.strTerm,tblInvoiceDocREV.intDept,tblInvoiceDocREV.strField1,tblInvoiceDocREV.strField2,tblInvoiceDocREV.strField3,tblInvoiceDocREV.strField4,tblInvoiceDocREV.strField5,tblInvoiceDocREV.strField6,tblInvoiceDocREV.strField7,tblInvoiceDocREV.strField8,tblInvoiceDocREV.strField9,tblInvoiceDocREV.strField10,tblInvoiceDocREV.strField11,tblInvoiceDocREV.strField12,tblInvoiceDocREV.strSubFormated,tblInvoiceDocREV.strVATFormatted,tblInvoiceDocREV.strTotFormatted,tblInvoiceDocREV.dteField13,tblInvoiceDocREV.dteField14,tblInvoiceDocREV.decDiscPerc,tblInvoiceDocREV.decDiscAmt,tblInvoiceDocREV.decDiscAmtF,tblInvoiceDocREV.strDiscFormatted,tblInvoiceDocREV.strOrdFQDocID,tblInvoiceDocREV.strStatusTypeCode,tblInvoiceDocREV.bitBookmark,tblInvoiceDocREV.strCNReasonCode,tblInvoiceDocREV.bitIsRepair,tblInvoiceDocREV.strDelMethodCode,tblInvoiceDocREV.decTotalWeight,tblInvoiceDocREV.decTotalVolWeight,tblInvoiceDocREV.intRevisionNumber, tblInvoiceDocREV.strVendInvNo,tblVendors.strVendDesc + char(13) + tblVendors.strStreet1 + char(13) + tblVendors.strCity + ' ' + tblVendors.strPostal + char(13) + tblVendors.strCountry,tblInvoiceDocREV.bitFQConvert, tblInvoiceDocREV.bitSOCopy, tblInvoiceDocREV.bitSOCopyMulti, tblInvoiceDocREV.strStatusTypeCode, tblInvoiceDocREV.strOrdFQDocID, tblInvoiceDocREV.strPaidBy 
FROM tblInvoiceDocREV 
LEFT JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName  
WHERE tblInvoiceDocREV.strInvDocID = @SQDocNumber and tblInvoiceDocREV.intModule = @SQModule and tblInvoiceDocREV.intRevisionNumber = @SQRevisionNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseInvoiceLoadDocVen](
@SQDocNumber NVARCHAR(200),
@SQModule int,
@SQRevisionNumber int
)
AS
BEGIN
SELECT tblInvoiceDocREV.*,tblVendors.strVendDesc + char(13) + tblVendors.strStreet1 + char(13) + tblVendors.strCity + ' ' + tblVendors.strPostal + char(13) + tblVendors.strCountry as VendorInfo 
FROM tblInvoiceDocREV 
LEFT JOIN tblVendors ON tblInvoiceDocREV.strVendName = tblVendors.strVendName  
WHERE tblInvoiceDocREV.strInvDocID = @SQDocNumber and tblInvoiceDocREV.intModule = @SQModule and tblInvoiceDocREV.intRevisionNumber = @SQRevisionNumber
END
GO

----------------------------------------------------
CREATE Procedure [dbo].[GetPurchasesHiddenColumns]  
@Part NVARCHAR(900),  
@Unit NVARCHAR(900)  
As  
begin
SELECT ISNULL(CASE strConversionType WHEN 'Multiply' THEN decConversionFactor ELSE 1/decConversionFactor END,decBuyToStock) AS SellFromStock, 
decLastPPUnit as LastPPUnit, decCostOnPO as CostOnPO, bitUseLPPOnPO as UseLPPOnPO 
FROM tblInv LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber AND strFromUnit = @Unit WHERE tblInv.strPartNumber = @Part
end  
go

----------------------------------------------------
CREATE Procedure [dbo].[GetPurchasesInvBinExt]  
@SQstrInvPDocID NVARCHAR(900)
As  
begin
Select tblInvoiceDocPDTBin.lngID,tblInvoiceDocPDTBin.decQty as IssueQty,tblInvoiceDocPDTBin.intLineNo as RowId,tblInvoiceDocPDTBin.lngBinID as BinId,
tblInvoiceDocPDTBin.strInvPDocID as DocId,tblInvLocBin.strLocName as LocName,strBinCode as BinCode from tblInvoiceDocPDTBin inner join tblInvLocBin on tblInvoiceDocPDTBin.lngBinID=tblInvLocBin.lngID 
Where strInvPDocID=@SQstrInvPDocID
end
GO

----------------------------------------------------
Create Procedure [dbo].[GetPurchasesREDataFromPickedRE]  
@SQDocID NVARCHAR(900)
As  
begin
SELECT strREName as REName	
,dteLastProcDate	 as LastProcDate	
,strVendName	as VendName	
,strShipTo as ShipTo	
,decSubTotal	as SubTotal	
,decVAT as VAT	
,decTotal	as Total	
,strNotes	as Notes	
,intPaidBy	as intPaidBy	
,intAccount	as Account	
,decDiscPerc	as DiscPerc	
,decDiscAmt as DiscAmt	
,strAddInfo	as AddInfo	
,strReference	as Reference
,strPaidBy as PaidBy
FROM tblPurchRE WHERE strREName = @SQDocID
end
go

----------------------------------------------------
CREATE Procedure [dbo].[GetPurchasesREDTEntity]  
@SQDocID NVARCHAR(900)
As  
begin
SELECT
strREName	as REName	
,intLineNo	as [LineNo]
,tblPurchREDT.strPartNumber	 as  PartNumber	
,strLocation	as Location	
,strPartDesc	as PartDesc	
,decBuyQty as BuyQty	
,tblPurchREDT.strBuyUnit as BuyUnit	
,decStockQty as StockQty	
,tblPurchREDT.strStockUnit	as StockUnit	
,decEaIncTax	as EaIncTax	--9
,strTaxCode	as TaxCode	
,decLineTaxAmt as LineTaxAmt
,decTotIncTax as TotIncTax	
,imgTaxObj as imgTaxObj	--13
,tblPurchREDT.decBuyToStock	as BuyToStock	
,declppbuy	as lppbuy	
,decFixed	as Fixed	
,bitUseLLp	as UseLLp	
,tblPurchREDT.intType	as Type	--18
,strInvField1	as InvField1	
,strInvField2	as InvField2	
,strInvField3	as InvField3	
,strInvField4	as InvField4	
,strInvField5	as InvField5	
,strInvField6	as InvField6	
,strLineField1 as LineField1	
,strLineField2 as LineField2
,strLineField3 as LineField3
,strLineField4 as LineField4
,strLineField5 as LineField5
,strLineField6 as LineField6
,strLineField7 as LineField7
,strLineField8 as LineField8
,strLineField9 as LineField9
,strLineField10 as LineField10	
,strLineField11 as LineField11	
,strLineField12 as LineField12	
,decLineDiscPerc as LineDiscPerc--37	
,decLineDiscAmt as LineDiscAmt	
,tblInv.bitInvSerialType as InvSerialType	
,tblInv.strDimProCode as DimProCode	
,ISNULL(tblInvSerialTypes.bitDimensionExist,0)  as bitDimensionExist
FROM tblPurchREDT 
INNER JOIN tblInv ON tblPurchREDT.strPartNumber = tblInv.strPartNumber 
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
WHERE tblPurchREDT.strREName = @SQDocID ORDER BY tblPurchREDT.intLineNo
end
go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchasesDimensionList] ( 
@DocNumber AS NVARCHAR(100), 
@DocLineNumber AS INT
)
AS  
BEGIN  
SELECT intDimLineNo AS DimLineNo  
,intDimColNo AS DimColNo  
,decValue AS Value  
,strDimColHeading AS DimColHeading  
,bitVisible AS IsVisible  
,bitAllowEditing AS IsAllowEditing  
FROM tblInvoiceDocPDimensions
WHERE strInvPDocID = @DocNumber AND intDocLineNo = @DocLineNumber
END  
go

----------------------------------------------------
CREATE PROCEDURE [dbo].[PurchasesSaveData]  
@tblPurchREDT SavePurchasesREDTTableType READONLY,  
@tblInvoiceDocDimensions AS SaveInvoiceDocDimensionsTableType READONLY,  
@strREName nvarchar(50),  
@dteLastProcDate smalldatetime = null,  
@strVendName nvarchar(50) = NULL,  
@strShipTo nvarchar(500) ,  
@decSubTotal money ,  
@decVAT money ,  
@decTotal money ,  
@strNotes nvarchar(max) ,  
@intPaidBy int ,  
@intAccount nvarchar(30) =NULL,
@decDiscPerc money ,  
@decDiscAmt money ,  
@strPaidBy nvarchar(20) ,
@strReference nvarchar(50) ,  
@strAddInfo nvarchar(50)  
AS  
BEGIN  
DELETE FROM [tblPurchRE] WHERE strREName = @strREName  
INSERT INTO [dbo].[tblPurchRE]
([strREName]
,[dteLastProcDate]
,[strVendName]
,[strShipTo]
,[decSubTotal]
,[decVAT]
,[decTotal]
,[strNotes]
,[intPaidBy]
,[intAccount]
,[decDiscPerc]
,[decDiscAmt]
,[strAddInfo]
,[strReference]
,[strPaidBy])
VALUES 
(@strREName
,@dteLastProcDate
,@strVendName
,@strShipTo
,@decSubTotal
,@decVAT
,@decTotal
,@strNotes
,@intPaidBy
,@intAccount
,@decDiscPerc
,@decDiscAmt
,@strAddInfo
,@strReference
,@strPaidBy)
IF EXISTS (SELECT * FROM @tblPurchREDT)  
BEGIN   
INSERT INTO tblPurchREDT   
Select * from @tblPurchREDT   
END  
DELETE FROM tblInvoiceDocDimensions WHERE strInvDocID = @strREName  
IF EXISTS (SELECT * FROM @tblInvoiceDocDimensions)  
BEGIN     
INSERT INTO tblInvoiceDocDimensions  
Select * from @tblInvoiceDocDimensions   
end  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCurrentUserLimitsNoVendor] @userName NVARCHAR(200)
AS
BEGIN
SELECT [DocLimitIncl] ,[MonthlyDeptLimitIncl] ,[PreferredNotification] ,[strVendorName] FROM tblPOApprovers(NOLOCK) where Username = @userName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCurrentUserLimits](
@userName NVARCHAR(200),
@vendor NVARCHAR(200)
)
AS
BEGIN
SELECT [DocLimitIncl]     ,[MonthlyDeptLimitIncl] ,[PreferredNotification] ,[strVendorName] FROM tblPOApprovers(NOLOCK) where strvendorname = @vendor and Username = @username 
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendorNamePurchases]  
(  
@SQVendor AS VARCHAR(50)  
)  
AS  
BEGIN  
Select COUNT(tblOrderDocPG.strVendName) FROM tblOrderDocPG (NOLOCK) INNER JOIN tblVendors (NOLOCK) On tblOrderDocPG.strVendName = tblVendors.strVendName 
WHERE (tblOrderDocPG.bitCleared = 0) And (tblVendors.strVendName = @SQVendor)
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetMinVendorDatePurchases]  
(  
@SQVendor AS VARCHAR(50)  
)  
AS  
BEGIN  
Select ISNULL(MIN(tblOrderDocPG.dteJournalDate), GETDATE()) FROM tblOrderDocPG (NOLOCK) INNER JOIN tblVendors (NOLOCK) On tblOrderDocPG.strVendName = tblVendors.strVendName 
WHERE (tblOrderDocPG.bitCleared = 0) And (tblVendors.strVendName = @SQVendor)
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetApprovalTrackingPurchases]  
(  
@RequisiotionNO AS VARCHAR(100)  
)  
AS  
BEGIN 
SELECT * 
FROM tblPOApprovalTracking(NOLOCK) POT 
left  outer join tblRequisitionReasons AR on POT.strDeclineReasonCodeText = AR.strIRReasonCode 
where POT.strReqQuoteDocID = @RequisiotionNO
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPGDTBinList]  
@DocID nvarchar(50)  
AS  
BEGIN  
SET NOCOUNT ON;  
SELECT   
lngID as ID,
strOrdPGDocID as DocId,
intLineNo as [LineNo],
lngBinID as BinId,
decQty as Qty,
ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblOrderDocPGDTBin.lngBinId),'') AS BinCode  
FROM  tblOrderDocPGDTBin  
WHERE strOrdPGDocID IN (SELECT VALUE FROM dbo.fnSplitStringAsTable(@DocID,','))  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvoiceDocPDTBinList]  
@DocID nvarchar(50)  
AS  
BEGIN  
SET NOCOUNT ON;  
SELECT   
lngID as ID,
strInvPDocID as DocId,
intLineNo as [LineNo],
lngBinID as BinId,
decQty as Qty, 
ISNULL((SELECT strBinCode FROM tblInvLocBin WHERE lngId = tblInvoiceDocPDTBin.lngBinId),'') AS BinCode  
FROM tblInvoiceDocPDTBin  
WHERE strInvPDocID IN (SELECT VALUE FROM dbo.fnSplitStringAsTable(@DocID,','))  
END  
GO

----------------------------------------------------
Create PROCEDURE [dbo].[UpdatePurchasesOrderDocument]  
(  
@SystemDate smalldatetime,  
@UserName nvarchar(20),  
@DocNumber nvarchar(50)  
)  
AS  
BEGIN  
UPDATE   
tblOrderDocP   
SET   
dteSystemDate = @SystemDate,   
strUserName = @UserName,   
bitCleared = 1
WHERE strOrdPDocID = @DocNumber  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateVendors] (
@Vendor1 NVARCHAR(50)
,@Vendor2 NVARCHAR(50)
)
AS
BEGIN
UPDATE tblVendors
SET decOpenOrders = ISNULL((
SELECT SUM(ROUND(((DTL.decLineTotExc + DTL.decLineTaxAmt) / DTL.decBuyQty) * DTL.decBuyQtyRemain, 2))
FROM tblOrderDocP HDR
INNER JOIN tblOrderDocPDT DTL ON HDR.strOrdPDocID = DTL.strOrdPDocID
WHERE HDR.strVendName = @Vendor1
AND (HDR.bitCleared = 0)
AND (HDR.intDocType = 1)
), 0)
,decOpenOrdersF = ISNULL((
SELECT SUM(ROUND(((DTL.decLineTotExcF + DTL.decLineTaxAmtF) / DTL.decBuyQty) * DTL.decBuyQtyRemain, 2))
FROM tblOrderDocP HDR
INNER JOIN tblOrderDocPDT DTL ON HDR.strOrdPDocID = DTL.strOrdPDocID
WHERE HDR.strVendName = @Vendor1
AND (HDR.bitCleared = 0)
AND (HDR.intDocType = 1)
), 0)
WHERE strVendName = @Vendor2
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteInvPurchasesBudget]  
(  
@TransactionType nvarchar(50),  
@DocNumber nvarchar(50)  
)  
AS  
BEGIN 
DELETE FROM tblInvPurchaseTargetBudgetInfo WHERE strTransactionType = @TransactionType AND strDocNumber = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvoiceDocPDT]  
(  
@PartNumber nvarchar(50) 
)  
AS  
BEGIN 
SELECT TOP 1 
inv.strPartNumber as PartNumber,
decSumOnHand as SumOnHand,
decSumValue as SumValue,
decStandardCost as StandardCost,
decPriceEaExc as Price
FROM tblInv (NOLOCK) inv  
LEFT JOIN tblInvoiceDocPDT (NOLOCK) dt  ON dt.strPartNumber=inv.strPartNumber 
inner join tblInvoiceDocP (NOLOCK) as dp ON dt.strInvPDocID = dp.strInvPDocID 
WHERE inv.strPartNumber= @PartNumber and dp.strInvPDocID   NOT LIKE ('%CN%') 
ORDER BY dp.strInvPDocID DESC,Convert(DATE,dteJournalDate ) DESC
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvoiceDocPDTVendor]  
(  
@VendorNumber nvarchar(50) 
)  
AS  
BEGIN 
SELECT COUNT(tblOrderDocPG.strVendName), ISNULL(MIN(tblOrderDocPG.dteJournalDate),GETDATE()) 
FROM tblOrderDocPG 
INNER JOIN tblVendors ON tblOrderDocPG.strVendName = tblVendors.strVendName 
WHERE(tblOrderDocPG.bitCleared = 0) AND(tblVendors.strVendName = @VendorNumber)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvVendorDetails]  
(  
@Unit nvarchar(100) ,
@VendName nvarchar(100) ,
@Part nvarchar(100) ,
@BarCode nvarchar(100) ,
@Date DateTime
)  
AS  
BEGIN 
WITH tbVendInv AS ( 
SELECT CASE WHEN Cast(@Date as date) BETWEEN Cast(dtePromotionalStartDate as date) AND cast(dtePromotionalEndDate as date) 
THEN decPromotionalPrice 
ELSE tblInvVend.decPrice END AS decFinalPrice ,
tblInvVend.decPrice ,
tblInvVend.decDiscPerc ,
tblInvVend.strPartNumber ,
bitPromotionalPricing ,
dtePromotionalStartDate ,
dtePromotionalEndDate ,
decPromotionalPrice 
FROM tblInvVend 
INNER JOIN tblInvVendPriceListsByDate ON tblInvVend.strVendName = tblInvVendPriceListsByDate.strVendName 
AND tblInvVend.uidPriceBasedID = tblInvVendPriceListsByDate.uidPriceBasedID 
AND CAST(@Date AS Date) BETWEEN CAST(tblInvVendPriceListsByDate.dteStartDate AS Date) AND CAST(tblInvVendPriceListsByDate.dteFinishDate AS Date) 
AND tblInvVendPriceListsByDate.bitInactive=0 AND tblInvVend.strVendName = @VendName AND tblInvVend.strPartNumber = @Part 
AND tblInvVend.strUnit = @Unit 
LEFT Join tblInvVendPromotionalPrice ON tblInvVendPromotionalPrice.lngId=tblInvVend.lngID 
AND CAST(@Date AS Date) between Cast(tblInvVendPromotionalPrice.dtePromotionalStartDate as Date) and Cast(tblInvVendPromotionalPrice.dtePromotionalEndDate as Date) 
AND tblInvVendPromotionalPrice.decPromotionalPrice  IN  (Select Max(prom.decPromotionalPrice) FROM tblInvVendPromotionalPrice  prom Where prom.lngID = tblInvVendPromotionalPrice.lngId AND Cast(@Date AS DATE) BETWEEN Cast(prom.dtePromotionalStartDate AS DATE) AND Cast(prom.dtePromotionalEndDate AS DATE) ) 
)
SELECT ISNULL(tbVendInv.decPrice,tblInv.decLastPPUnit) AS decPrice, 
tbVendInv.decDiscPerc,
ISNULL(decFinalPrice,tblInv.decLastPPUnit) AS decFinalPrice,
bitPromotionalPricing,
dtePromotionalStartDate,
dtePromotionalEndDate,
decPromotionalPrice 
FROM tblInv 
LEFT JOIN tbVendInv ON tbVendInv.strPartNumber = tblInv.strPartNumber 
WHERE (tblInv.strPartNumber = @Part OR tblInv.strBarCode = @BarCode OR tblInv.strBarCode2 = @BarCode) AND tblInv.bitInactive = 0
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateApproverAssignment]  
(  
@ApproverUsername nvarchar(100) ,
@Docid nvarchar(100)
)  
AS  
BEGIN 
UPDATE tblOrdersDocP_POApprovals SET strSelectedApproverUserName = @ApproverUsername WHERE strOrdPDocID = @Docid
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertApproverAssignment]  
(  
@DocId nvarchar(100),
@ApproverUsername nvarchar(100) ,
@POstatus int
)  
AS  
BEGIN 
insert into tblOrdersDocP_POApprovals  values (@DocId, @ApproverUsername, @POstatus,null)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPOVendorLimitCalculation]  
(  
@venderName nvarchar(100)
)  
AS  
BEGIN
Select * from vw_PO_Limit_Calculations where strVendorEmpName = @venderName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetApprovalsDocLimit] (@DocNumber NVARCHAR(100))
AS
BEGIN
	IF (@DocNumber LIKE 'CR-%')
	BEGIN
		SELECT tblApprovalsDocLimit.*
		FROM tblApprovalsDocLimit(NOLOCK)
		INNER JOIN tblOrdersDoc_CNApprovals ON tblApprovalsDocLimit.intApproverGroupId = tblOrdersDoc_CNApprovals.intGroupId
		WHERE tblOrdersDoc_CNApprovals.strOrdDocID = @DocNumber
	END
	ELSE
	BEGIN
		SELECT tblApprovalsDocLimit.*
		FROM tblApprovalsDocLimit(NOLOCK)
		INNER JOIN tblOrdersDocP_POApprovals ON tblApprovalsDocLimit.intApproverGroupId = tblOrdersDocP_POApprovals.intGroupId
		WHERE tblOrdersDocP_POApprovals.strOrdPDocID = @DocNumber
	END 
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCurrentUserPriority] 
(  
@DocNumber nvarchar(100)
)
AS
  BEGIN
      SELECT MIN(tblApprovalsDocLimit.priorityLevel) AS CurrentUserPriority,
             tblPQApprovalsUserTracking.intGroupId   AS GroupId
      FROM   tblPQApprovalsUserTracking(NOLOCK)
             INNER JOIN tblApprovalsDocLimit(NOLOCK)
                     ON tblPQApprovalsUserTracking.intGroupId =
                        tblApprovalsDocLimit.intApproverGroupId
                        AND tblApprovalsDocLimit.strUserName =
                            tblPQApprovalsUserTracking.strUserName
      WHERE  strOrdPDocID = @DocNumber
             AND intApprovalStatus = 0
      GROUP BY tblPQApprovalsUserTracking.intGroupId
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetLastUserPriority](
@DocNumber NVARCHAR(100)
)
AS
  BEGIN
      SELECT CASE WHEN Count(priorityLevel) = 0 THEN '0' ELSE Max(priorityLevel) END AS LastUserPriority
      FROM   tblApprovalsDocLimit(NOLOCK)
             INNER JOIN tblOrdersDocP_POApprovals(NOLOCK)
                     ON tblApprovalsDocLimit.intApproverGroupId =
                        tblOrdersDocP_POApprovals.intGroupId
             INNER JOIN tblPQApprovalsUserTracking(NOLOCK)
                     ON tblApprovalsDocLimit.strUserName =
                        tblPQApprovalsUserTracking.strUserName
      WHERE  tblOrdersDocP_POApprovals.strOrdPDocID = @DocNumber
             AND tblPQApprovalsUserTracking.intApprovalStatus = 0
             AND tblPQApprovalsUserTracking.strOrdPDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetNotificationOrderByGroup]  
(  
	@GroupId int
)  
AS  
BEGIN
	SELECT intNotificationOrder 
	FROM tblPQApprovalsGroup(NOLOCK) 
	WHERE ID=@GroupId
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[FillPurchasesData] (
	@DocNumber NVARCHAR(100)
	,@IsVendStockCodes BIT
	,@TransactionType NVARCHAR(50)
	,@Vendor NVARCHAR(50)
	,@BitDisplayLogo BIT
	,@LocationCriteria NVARCHAR(50)
	)
AS
BEGIN
	SELECT *
	FROM tblOrderDocP
	WHERE strOrdPDocID = @DocNumber

	IF (@isVendStockCodes = 1)
	BEGIN
		IF (@transactionType = 'Requisition')
			SELECT tblOrderDocPDT.*
				,ISNULL(tblInvVend.strItemCode, '') AS strItemCode
				,ISNULL(tblInvVend.strItemDesc, '') AS strItemDesc
				,tblInv.strBarCode
				,tblInv.strBarCode2
				,(
					SELECT (
							SELECT bitInvImgOnPQ
							FROM tblCoOpts
							)
					FROM tblCoOpts
					) AS bitShowImage
				,tblInvImg.imgData AS imgImage
				,tblOrderDocPDT.strPartExtendedDesc AS strExtendedDesc
				,tblInv.bitInvExtDescOnPQ AS bitShowExtendedDesc
				,tblOrderDocPDTPrj.strProjNumber
				,tblProjects.strProjName
			FROM tblOrderDocPDT
			INNER JOIN tblOrderDocP ON tblOrderDocPDT.strOrdPDocID = tblOrderDocP.strOrdPDocID
			INNER JOIN tblInv ON tblOrderDocPDT.strPartNumber = tblInv.strPartNumber
			LEFT JOIN tblOrderDocPDTPrj ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTPrj.strOrdPDocID
				AND tblOrderDocPDT.intLineNo = tblOrderDocPDTPrj.intLineNo
			LEFT JOIN tblProjects ON tblOrderDocPDTPrj.strProjNumber = tblProjects.strProjNumber
			LEFT JOIN tblInvVend ON tblOrderDocPDT.strPartNumber = tblInvVend.strPartNumber
				AND tblOrderDocP.strVendName = tblInvVend.strVendName
				AND tblInvVend.uidPriceBasedID IS NOT NULL
				AND tblInvVend.bitPreferred = 1
			LEFT JOIN tblInvImg ON tblOrderDocPDT.strPartNumber = tblInvImg.strPartNumber
				AND tblInvImg.bitDefaultImage = 1
			WHERE tblOrderDocPDT.strOrdPDocID = @DocNumber
				AND tblOrderDocPDT.bitDiscountTax = 0
			ORDER BY tblOrderDocPDT.intLineNo
		ELSE IF (@transactionType = 'PurchaseOrder')
			SELECT tblOrderDocPDT.*
				,ISNULL(tblInvVend.strItemCode, '') AS strItemCode
				,ISNULL(tblInvVend.strItemDesc, '') AS strItemDesc
				,tblInv.strBarCode
				,tblInv.strBarCode2
				,(
					SELECT (
							SELECT bitInvImgOnPO
							FROM tblCoOpts
							)
					FROM tblCoOpts
					) AS bitShowImage
				,tblInvImg.imgData AS imgImage
				,tblOrderDocPDT.strPartExtendedDesc AS strExtendedDesc
				,tblInv.bitInvExtDescOnPO AS bitShowExtendedDesc
				,tblOrderDocPDTPrj.strProjNumber
				,tblProjects.strProjName
			FROM tblOrderDocPDT
			INNER JOIN tblOrderDocP ON tblOrderDocPDT.strOrdPDocID = tblOrderDocP.strOrdPDocID
			INNER JOIN tblInv ON tblOrderDocPDT.strPartNumber = tblInv.strPartNumber
			LEFT JOIN tblOrderDocPDTPrj ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTPrj.strOrdPDocID
				AND tblOrderDocPDT.intLineNo = tblOrderDocPDTPrj.intLineNo
			LEFT JOIN tblProjects ON tblOrderDocPDTPrj.strProjNumber = tblProjects.strProjNumber
			LEFT JOIN tblInvVend ON tblOrderDocPDT.strPartNumber = tblInvVend.strPartNumber
				AND tblOrderDocP.strVendName = tblInvVend.strVendName
				AND tblInvVend.uidPriceBasedID IS NOT NULL
				AND tblInvVend.bitPreferred = 1
			LEFT JOIN tblInvImg ON tblOrderDocPDT.strPartNumber = tblInvImg.strPartNumber
				AND tblInvImg.bitDefaultImage = 1
			WHERE tblOrderDocPDT.strOrdPDocID = @DocNumber
				AND tblOrderDocPDT.bitDiscountTax = 0
			ORDER BY tblOrderDocPDT.intLineNo
	END
	ELSE
	BEGIN
		IF (@transactionType = 'Requisition')
			SELECT tblOrderDocPDT.*
				,'' AS strItemCode
				,'' AS strItemDesc
				,tblInv.strBarCode
				,tblInv.strBarCode2
				,(
					SELECT (
							SELECT bitInvImgOnPQ
							FROM tblCoOpts
							)
					FROM tblCoOpts
					) AS bitShowImage
				,tblInvImg.imgData AS imgImage
				,tblOrderDocPDT.strPartExtendedDesc AS strExtendedDesc
				,tblInv.bitInvExtDescOnPQ AS bitShowExtendedDesc
				,tblOrderDocPDTPrj.strProjNumber
				,tblProjects.strProjName
			FROM tblOrderDocPDT
			INNER JOIN tblOrderDocP ON tblOrderDocPDT.strOrdPDocID = tblOrderDocP.strOrdPDocID
			INNER JOIN tblInv ON tblOrderDocPDT.strPartNumber = tblInv.strPartNumber
			LEFT JOIN tblOrderDocPDTPrj ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTPrj.strOrdPDocID
				AND tblOrderDocPDT.intLineNo = tblOrderDocPDTPrj.intLineNo
			LEFT JOIN tblProjects ON tblOrderDocPDTPrj.strProjNumber = tblProjects.strProjNumber
			LEFT JOIN tblInvImg ON tblOrderDocPDT.strPartNumber = tblInvImg.strPartNumber
				AND tblInvImg.bitDefaultImage = 1
			WHERE tblOrderDocPDT.strOrdPDocID = @DocNumber
				AND tblOrderDocPDT.bitDiscountTax = 0
			ORDER BY tblOrderDocPDT.intLineNo
		ELSE IF (@transactionType = 'PurchaseOrder')
			SELECT tblOrderDocPDT.*
				,ISNULL(tblInvVend.strItemCode, '') AS strItemCode
				,ISNULL(tblInvVend.strItemDesc, '') AS strItemDesc
				,tblInv.strBarCode
				,tblInv.strBarCode2
				,(
					SELECT (
							SELECT bitInvImgOnPO
							FROM tblCoOpts
							)
					FROM tblCoOpts
					) AS bitShowImage
				,tblInvImg.imgData AS imgImage
				,tblOrderDocPDT.strPartExtendedDesc AS strExtendedDesc
				,tblInv.bitInvExtDescOnPO AS bitShowExtendedDesc
				,tblOrderDocPDTPrj.strProjNumber
				,tblProjects.strProjName
			FROM tblOrderDocPDT
			INNER JOIN tblOrderDocP ON tblOrderDocPDT.strOrdPDocID = tblOrderDocP.strOrdPDocID
			INNER JOIN tblInv ON tblOrderDocPDT.strPartNumber = tblInv.strPartNumber
			LEFT JOIN tblInvVend ON tblOrderDocPDT.strPartNumber = tblInvVend.strPartNumber
				AND tblOrderDocP.strVendName = tblInvVend.strVendName
				AND tblInvVend.uidPriceBasedID IS NOT NULL
				AND tblInvVend.bitPreferred = 1
			LEFT JOIN tblOrderDocPDTPrj ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTPrj.strOrdPDocID
				AND tblOrderDocPDT.intLineNo = tblOrderDocPDTPrj.intLineNo
			LEFT JOIN tblProjects ON tblOrderDocPDTPrj.strProjNumber = tblProjects.strProjNumber
			LEFT JOIN tblInvImg ON tblOrderDocPDT.strPartNumber = tblInvImg.strPartNumber
				AND tblInvImg.bitDefaultImage = 1
			WHERE tblOrderDocPDT.strOrdPDocID = @DocNumber
				AND tblOrderDocPDT.bitDiscountTax = 0
			ORDER BY tblOrderDocPDT.intLineNo
	END

	SELECT *
	FROM tblVendors
	WHERE strVendName = @Vendor

	SELECT [imgLogo]
		,@bitDisplayLogo AS [bitDisplayLogo]
	FROM tblCompany

	SELECT *
	FROM dbo.fnTblInvLocations(@LocationCriteria) tblInv
	WHERE strPartNumber IN (
			SELECT DISTINCT strPartNumber
			FROM tblOrderDocPDT
			WHERE strOrdPDocID = @DocNumber
				AND bitDiscountTax = 0
			)

	SELECT strInvPDocID AS strOrdPDocID
		,intDocLineNo
		,intDimLineNo
		,intDimColNo
		,decValue
		,strDimColHeading
		,bitVisible
	FROM tblInvoiceDocPDimensions
	WHERE strInvPDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[FillPurchasesInvoiceData] (
	@DocNumber NVARCHAR(100)
	,@IsVendStockCodes BIT
	,@Vendor NVARCHAR(50)
	,@BitDisplayLogo BIT
	)
AS
BEGIN
	SELECT *
	FROM tblInvoiceDocP
	WHERE strInvPDocID = @DocNumber

	IF (@isVendStockCodes = 1)
		SELECT tblInvoiceDocPDT.*
			,ISNULL(tblInvVend.strItemCode, '') AS strItemCode
			,ISNULL(tblInvVend.strItemDesc, '') AS strItemDesc
			,tblInv.strBarCode
			,tblInv.strBarCode2
			,(
				SELECT bitInvImgOnPI
				FROM tblCoOpts
				) AS bitShowImage
			,tblInvImg.imgData AS imgImage
			,tblInvoiceDocPDT.strPartExtendedDesc AS strExtendedDesc
			,tblInv.bitInvExtDescOnPI AS bitShowExtendedDesc
		FROM tblInvoiceDocPDT
		INNER JOIN tblInvoiceDocP ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocP.strInvPDocID
		INNER JOIN tblInv ON tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvVend ON tblInvoiceDocPDT.strPartNumber = tblInvVend.strPartNumber
			AND tblInvoiceDocP.strVendName = tblInvVend.strVendName
			AND tblInvVend.uidPriceBasedID IS NOT NULL
			AND tblInvVend.bitPreferred = 1
		LEFT JOIN tblInvImg ON tblInvoiceDocPDT.strPartNumber = tblInvImg.strPartNumber
			AND tblInvImg.bitDefaultImage = 1
		WHERE tblInvoiceDocPDT.strInvPDocID = @DocNumber
		ORDER BY tblInvoiceDocPDT.intLineNo
	ELSE
		SELECT tblInvoiceDocPDT.*
			,ISNULL(tblInvVend.strItemCode, '') AS strItemCode
			,ISNULL(tblInvVend.strItemDesc, '') AS strItemDesc
			,tblInv.strBarCode
			,tblInv.strBarCode2
			,(
				SELECT bitInvImgOnPI
				FROM tblCoOpts
				) AS bitShowImage
			,tblInvImg.imgData AS imgImage
			,tblInvoiceDocPDT.strPartExtendedDesc AS strExtendedDesc
			,tblInv.bitInvExtDescOnPI AS bitShowExtendedDesc
		FROM tblInvoiceDocPDT
		INNER JOIN tblInvoiceDocP ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocP.strInvPDocID
		INNER JOIN tblInv ON tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvVend ON tblInvoiceDocPDT.strPartNumber = tblInvVend.strPartNumber
			AND tblInvoiceDocP.strVendName = tblInvVend.strVendName
			AND tblInvVend.uidPriceBasedID IS NOT NULL
			AND tblInvVend.bitPreferred = 1
		LEFT JOIN tblInvImg ON tblInvoiceDocPDT.strPartNumber = tblInvImg.strPartNumber
			AND tblInvImg.bitDefaultImage = 1
		WHERE tblInvoiceDocPDT.strInvPDocID = @DocNumber
		ORDER BY tblInvoiceDocPDT.intLineNo

	SELECT tblInvoiceDocPDTSerial.*
		,ISNULL(tblInvSerialExt.bitDimensionExist, 0) AS bitDimensionExist
		,ISNULL(tblInvSerialExt.strDimension, '') AS strDimension
	FROM tblInvoiceDocPDTSerial
	INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocPDTSerial.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
		AND tblInvoiceDocPDTSerial.intLineNo = tblInvoiceDocPDT.intLineNo
	LEFT JOIN tblInvSerialExt ON tblInvoiceDocPDT.strPartNumber = tblInvSerialExt.strPartNumber
		AND tblInvoiceDocPDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
	INNER JOIN tblInv ON tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblInvoiceDocPDTSerial.strInvPDocID = @DocNumber
		AND tblInvSerialTypes.bitPrintInv = 1
	ORDER BY tblInvoiceDocPDTSerial.intLineNo

	SELECT *
	FROM tblVendors
	WHERE strVendName = @Vendor

	SELECT *
	FROM tblInv
	WHERE strPartNumber IN (
			SELECT DISTINCT strPartNumber
			FROM tblInvoiceDocPDT
			WHERE strInvPDocID = @DocNumber
			)

	SELECT *
	FROM tblInvoiceDocPDTAddCosts
	WHERE strInvPDocID = @DocNumber
	ORDER BY intLineNo

	SELECT *
	FROM tblInvoiceDocPDimensions
	WHERE strInvPDocID = @DocNumber

	SELECT [imgLogo]
		,@bitDisplayLogo AS [bitDisplayLogo]
	FROM tblCompany

	SELECT strInvPDocId
		,intLineNo
		,lngBinId
		,strBinCode = (
			SELECT strBinCode
			FROM tblInvLocBin
			WHERE lngId = tblInvoiceDocPDTBin.lngBinId
			)
		,decQty
	FROM tblInvoiceDocPDTBin
	WHERE strInvPDocId = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPForLoadDoc] (  
@DocNumber AS NVARCHAR(50)
)  
AS  
BEGIN  
SELECT 
tblOrderDocP.strOrdPDocID as OrdPDocID
,tblOrderDocP.dteSystemDate as SystemDate
,tblOrderDocP.dteJournalDate as JournalDate
,tblOrderDocP.dteRequired as [Required]
,tblOrderDocP.strUserName as UserName
,tblOrderDocP.strVendName as VendName
,tblOrderDocP.strShipTo as ShipTo
,tblOrderDocP.decSubTotal as SubTotal
,tblOrderDocP.decVAT as VAT
,tblOrderDocP.decTotal as Total
,tblOrderDocP.strNotes as Notes
,tblOrderDocP.bitPrinted as Printed
,tblOrderDocP.bitEmailed as Emailed
,tblOrderDocP.bitCleared as Cleared
,tblOrderDocP.intDocType as DocType
,tblOrderDocP.strBoughtFrom as BoughtFrom
,tblOrderDocP.strCurrency as Currency
,tblOrderDocP.bitIsForeign as IsForeign
,tblOrderDocP.decSubTotalF as SubTotalF
,tblOrderDocP.decVATF as VATF
,tblOrderDocP.decTotalF as TotalF
,tblOrderDocP.decExchange as Exchange
,tblOrderDocP.strTerm as Term
,tblOrderDocP.intDept as Dept
,tblOrderDocP.strField1 as Field1
,tblOrderDocP.strField2 as Field2
,tblOrderDocP.strField3 as Field3
,tblOrderDocP.strField4 as Field4
,tblOrderDocP.strField5 as Field5
,tblOrderDocP.strField6 as Field6
,tblOrderDocP.strField7 as Field7
,tblOrderDocP.strField8 as Field8
,tblOrderDocP.strField9 as Field9
,tblOrderDocP.strField10 as Field10
,tblOrderDocP.strField11 as Field11
,tblOrderDocP.strField12 as Field12
,tblOrderDocP.strSubFormated as SubFormated
,tblOrderDocP.strVATFormatted as VATFormatted
,tblOrderDocP.strTotFormatted as TotFormatted
,tblOrderDocP.decDiscPerc as DiscPerc
,tblOrderDocP.decDiscAmt as DiscAmt
,tblOrderDocP.decDiscAmtF as DiscAmtF
,tblOrderDocP.strDiscFormatted as DiscFormatted
,tblOrderDocP.strOrdFQDocID as OrdFQDocID
,tblOrderDocP.bitFQConvert as FQConvert
,tblOrderDocP.bitSOCopy as SOCopy
,tblOrderDocP.bitSOCopyMulti as SOCopyMulti
,tblOrderDocP.strStatusTypeCode as StatusTypeCode
,tblOrderDocP.bitBookmark as Bookmark
,tblOrderDocP.strAddInfo as AddInfo
,tblOrderDocP.strReference as Reference
,tblOrderDocP.strOrdRFQDocID as OrdRFQDocID
,tblOrderDocP.bitRFQConvert as RFQConvert
,tblOrderDocP.decNetItemWeight as NetItemWeight
,tblOrderDocP.decNetVolumetricWeight as NetVolumetricWeight
,tblOrderDocP.intRevisionNumber as RevisionNumber
,tblOrderDocP.strBuyerName as BuyerName
,tblOrderDocP.strSalesDocNo as SalesDocNo
,ISNULL(tblCustomers.strCustDesc,'') AS CustName 
FROM tblOrderDocP 
LEFT JOIN tblOrderDocQ ON tblOrderDocP.strOrdFQDocID = tblOrderDocQ.strOrdDocID 
LEFT JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName 
WHERE tblOrderDocP.strOrdPDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPDTForLoadDoc] (  
@DocNumber AS NVARCHAR(50)
)  
AS  
BEGIN  
SELECT 
tblOrderDocPDT.strOrdPDocID as OrdPDocID
,tblOrderDocPDT.intLineNo as [LineNo]
,tblOrderDocPDT.strPartNumber as PartNumber
,tblOrderDocPDT.strLocation as [Location]
,tblOrderDocPDT.strPartDesc as PartDesc
,tblOrderDocPDT.decBuyQty as BuyQty
,tblOrderDocPDT.decBuyQtyRemain as BuyQtyRemain
,tblOrderDocPDT.strBuyUnit as BuyUnit
,tblOrderDocPDT.decStockQty as StockQty
,tblOrderDocPDT.decStockQtyRemain as StockQtyRemain
,tblOrderDocPDT.strStockUnit as StockUnit
,tblOrderDocPDT.intType as [Type]
,tblOrderDocPDT.decPriceEaExc as PriceEaExc
,tblOrderDocPDT.decLineTotExc as LineTotExc
,tblOrderDocPDT.decLineTaxAmt as LineTaxAmt
,tblOrderDocPDT.strTaxCode as TaxCode
,tblOrderDocPDT.decEaIncTax as EaIncTax
,tblOrderDocPDT.decTotIncTax as TotIncTax
,tblOrderDocPDT.imgTaxObj as TaxObj
,tblOrderDocPDT.strCurrency as Currency
,tblOrderDocPDT.bitIsForeign as IsForeign
,tblOrderDocPDT.decPriceEaExcF as PriceEaExcF
,tblOrderDocPDT.decLineTotExcF as LineTotExcF
,tblOrderDocPDT.decLineTaxAmtF as LineTaxAmtF
,tblOrderDocPDT.decEaIncTaxF as EaIncTaxF
,tblOrderDocPDT.decTotIncTaxF as TotIncTaxF
,tblOrderDocPDT.strInvField1 as InvField1
,tblOrderDocPDT.strInvField2 as InvField2
,tblOrderDocPDT.strInvField3 as InvField3
,tblOrderDocPDT.strInvField4 as InvField4
,tblOrderDocPDT.strInvField5 as InvField5
,tblOrderDocPDT.strInvField6 as InvField6
,tblOrderDocPDT.strLineField1 as LineField1
,tblOrderDocPDT.strLineField2 as LineField2
,tblOrderDocPDT.strLineField3 as LineField3
,tblOrderDocPDT.strLineField4 as LineField4
,tblOrderDocPDT.strLineField5 as LineField5
,tblOrderDocPDT.strLineField6 as LineField6
,tblOrderDocPDT.strLineField7 as LineField7
,tblOrderDocPDT.strLineField8 as LineField8
,tblOrderDocPDT.strLineField9 as LineField9
,tblOrderDocPDT.strLineField10 as LineField10
,tblOrderDocPDT.strLineField11 as LineField11
,tblOrderDocPDT.strLineField12 as LineField12
,tblOrderDocPDT.decLineDiscPerc as LineDiscPerc
,tblOrderDocPDT.decLineDiscAmt as LineDiscAmt
,tblOrderDocPDT.decLineDiscAmtF as LineDiscAmtF
,tblOrderDocPDT.bitDiscountTax as DiscountTax
,tblOrderDocPDT.strOrdSODocID as OrdSODocID
,tblOrderDocPDT.strPartExtendedDesc as PartExtendedDesc
,tblOrderDocPDT.decItemWeight as ItemWeight
,tblOrderDocPDT.decVolumetricWeight as VolumetricWeight
,tblOrderDocPDT.uidTransactionFieldID as TransactionFieldID
,tblOrderDocPDT.intSODocItemLineNo as SODocItemLineNo
,ISNULL(tblCustomers.strCustDesc,'') AS CustDesc
,ISNULL(tblOrderDocPDTPrj.strProjNumber,'') AS ProjNumber
,tblInv.bitInvSerialType as InvSerialType
,ISNULL(tblInvSerialTypes.bitMethod,0) AS Method
,ISNULL(tblInv.strUnitOfMeasure,'') AS UnitOfMeasure
,tblInv.strDimProCode as DimProCode
,ISNULL(tblInvSerialTypes.bitDimensionExist,0) AS DimensionExist 
FROM tblOrderDocPDT INNER JOIN tblInv ON tblOrderDocPDT.strPartNumber = tblInv.strPartNumber 
LEFT JOIN tblOrderDoc ON tblOrderDocPDT.strOrdSODocID = tblOrderDoc.strOrdDocID 
LEFT JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName 
LEFT JOIN tblOrderDocPDTPrj ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTPrj.strOrdPDocID AND tblOrderDocPDT.intLineNo = tblOrderDocPDTPrj.intLineNo 
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
WHERE tblOrderDocPDT.strOrdPDocID = @DocNumber AND tblOrderDocPDT.decBuyQtyRemain <> 0 
ORDER BY tblOrderDocPDT.intLineNo
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPDTForConversion]  
(  
@DocNumber AS NVARCHAR(100)  
,@DocLineNumber AS INT  
)  
AS  
BEGIN  
SELECT tblOrderDocPDTSerial.[strOrdPDocID] AS PurchaseOrderDocID  
,tblOrderDocPDTSerial.[intLineNo] AS [LineNo]  
,tblOrderDocPDTSerial.[strSerialNumber] AS SerialNumber  
,tblOrderDocPDTSerial.[decQty] AS Qty  
,tblOrderDocPDTSerial.[strUnit] AS Unit  
,tblOrderDocPDTSerial.[lngID] AS ID  
,tblOrderDocPDTSerial.[bitExpiryDate] AS IsExpiryDate  
,tblOrderDocPDTSerial.[dteExpiryDate] AS ExpiryDate  
,tblOrderDocPDTSerial.[intSerialLotType] AS SerialLotType   
,ISNULL((SELECT DISTINCT TYP.strInvSerialType FROM tblOrderDocPDTSerial SRL INNER JOIN tblOrderDocPDT DTL ON SRL.strOrdPDocID = DTL.strOrdPDocID AND SRL.intLineNo = DTL.intLineNo INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType WHERE SRL.strOrdPDocID = tblOrderDocPDTSerial.strOrdPDocID AND SRL.intLineNo = tblOrderDocPDTSerial.intLineNo),'') as SerialType
,CASE WHEN tblOrderDocPDTSerial.intSerialLotType = 0 THEN ISNULL(tblInvSerialExt.bitDimensionExist,0) ELSE 0 END AS IsDimensionExist 
,CASE WHEN tblOrderDocPDTSerial.intSerialLotType = 0 THEN ISNULL(tblInvSerialExt.strDimension,'') ELSE '' END  AS Dimension
FROM tblOrderDocPDT 
INNER JOIN tblOrderDocPDTSerial ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTSerial.strOrdPDocID 
AND tblOrderDocPDT.intLineNo = tblOrderDocPDTSerial.intLineNo 
LEFT JOIN tblInvSerialExt ON tblOrderDocPDT.strPartNumber = tblInvSerialExt.strPartNumber 
AND tblOrderDocPDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber 
WHERE tblOrderDocPDTSerial.strOrdPDocID = @DocNumber AND tblOrderDocPDTSerial.intLineNo = @DocLineNumber 
ORDER BY tblOrderDocPDTSerial.lngID
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPDTForLoadDocGRV](
@DocNumber NVARCHAR(100)
)
AS
BEGIN
SELECT 
tblOrderDocPGDT.strOrdPGDocID AS OrdPDocID 
,tblOrderDocPGDT.intLineNo as [LineNo]
,tblOrderDocPGDT.strPartNumber as PartNumber
,tblOrderDocPGDT.strLocation as [Location]
,tblOrderDocPGDT.strPartDesc as PartDesc
,tblOrderDocPGDT.decBuyQty as BuyQty
,tblOrderDocPGDT.decBuyQtyRemain as BuyQtyRemain
,tblOrderDocPGDT.strBuyUnit as BuyUnit
,tblOrderDocPGDT.decStockQty as StockQty
,tblOrderDocPGDT.decStockQtyRemain as StockQtyRemain
,tblOrderDocPGDT.strStockUnit as StockUnit
,tblOrderDocPGDT.intType as [Type]
,tblOrderDocPGDT.decPriceEaExc as PriceEaExc
,tblOrderDocPGDT.decLineTotExc as LineTotExc
,tblOrderDocPGDT.decLineTaxAmt as LineTaxAmt
,tblOrderDocPGDT.strTaxCode as TaxCode
,tblOrderDocPGDT.decEaIncTax as EaIncTax
,tblOrderDocPGDT.decTotIncTax as TotIncTax
,tblOrderDocPGDT.imgTaxObj as TaxObj
,tblOrderDocPGDT.strCurrency as Currency
,tblOrderDocPGDT.bitIsForeign as IsForeign
,tblOrderDocPGDT.decPriceEaExcF as PriceEaExcF
,tblOrderDocPGDT.decLineTotExcF as LineTotExcF
,tblOrderDocPGDT.decLineTaxAmtF as LineTaxAmtF
,tblOrderDocPGDT.decEaIncTaxF as EaIncTaxF
,tblOrderDocPGDT.decTotIncTaxF as TotIncTaxF
,tblOrderDocPGDT.strInvField1 as InvField1
,tblOrderDocPGDT.strInvField2 as InvField2
,tblOrderDocPGDT.strInvField3 as InvField3
,tblOrderDocPGDT.strInvField4 as InvField4
,tblOrderDocPGDT.strInvField5 as InvField5
,tblOrderDocPGDT.strInvField6 as InvField6
,tblOrderDocPGDT.strLineField1 as LineField1
,tblOrderDocPGDT.strLineField2 as LineField2
,tblOrderDocPGDT.strLineField3 as LineField3
,tblOrderDocPGDT.strLineField4 as LineField4
,tblOrderDocPGDT.strLineField5 as LineField5
,tblOrderDocPGDT.strLineField6 as LineField6
,tblOrderDocPGDT.strLineField7 as LineField7
,tblOrderDocPGDT.strLineField8 as LineField8
,tblOrderDocPGDT.strLineField9 as LineField9
,tblOrderDocPGDT.strLineField10 as LineField10
,tblOrderDocPGDT.strLineField11 as LineField11
,tblOrderDocPGDT.strLineField12 as LineField12
,tblOrderDocPGDT.decLineDiscPerc as LineDiscPerc
,tblOrderDocPGDT.decLineDiscAmt as LineDiscAmt
,tblOrderDocPGDT.decLineDiscAmtF as LineDiscAmtF
,tblOrderDocPGDT.bitDiscountTax as DiscountTax
,tblOrderDocPGDT.strOrdSODocID as OrdSODocID
,tblOrderDocPGDT.decItemWeight as ItemWeight
,tblOrderDocPGDT.decVolumetricWeight as VolumetricWeight
,tblOrderDocPGDT.uidTransactionFieldID as TransactionFieldID
,tblOrderDocPGDT.strPartExtendedDesc as PartExtendedDesc
,tblOrderDocPGDT.decBuyGRVQtyRemain as BuyGRVQtyRemain
,tblOrderDocPGDT.decStockGRVQtyRemain as StockGRVQtyRemain
,tblOrderDocPGDT.decPutAwayQty as PutAwayQty
,tblOrderDocPGDT.intSODocItemLineNo as SODocItemLineNo
,ISNULL(tblCustomers.strCustDesc,'') AS strCustDesc
,ISNULL(tblOrderDocPGDTPrj.strProjNumber,'') AS ProjNumber, 
tblInv.bitInvSerialType as InvSerialType
,ISNULL(tblInvSerialTypes.bitMethod,0) AS Method
,ISNULL(tblinv.strUnitOfMeasure,'') AS UnitOfMeasure
,tblInv.strDimProCode as DimProCode
,ISNULL(tblInvSerialTypes.bitDimensionExist,0) AS DimensionExist
,ISNULL(STUFF((
				SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX))
				FROM tblInvLocBin
				WHERE tblInvLocBin.lngId IN (
						SELECT lngBinId
						FROM tblOrderDocPGDTBin
						WHERE tblOrderDocPGDTBin.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID
							AND tblOrderDocPGDTBin.intLineNo = tblOrderDocPGDT.intLineNo
						)
				FOR XML PATH('')
				), 1, 1, ''), '')  AS BinCode, 
ISNULL(STUFF((
				SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(MAX))
				FROM tblInvLocBin
				WHERE tblInvLocBin.lngId IN (
						SELECT lngBinId
						FROM tblOrderDocPGDTBin
						WHERE tblOrderDocPGDTBin.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID
							AND tblOrderDocPGDTBin.intLineNo = tblOrderDocPGDT.intLineNo
						)
				FOR XML PATH('')
				), 1, 1, ''), '') AS BinId  
FROM tblOrderDocPGDT 
INNER JOIN tblInv ON tblOrderDocPGDT.strPartNumber = tblInv.strPartNumber 
LEFT JOIN tblOrderDoc ON tblOrderDocPGDT.strOrdSODocID = tblOrderDoc.strOrdDocID 
LEFT JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName 
LEFT JOIN tblOrderDocPGDTPrj ON tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPGDTPrj.strOrdPGDocID
AND tblOrderDocPGDT.intLineNo = tblOrderDocPGDTPrj.intLineNo 
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
WHERE tblOrderDocPGDT.strOrdPGDocID = @DocNumber AND tblOrderDocPGDT.decStockGRVQtyRemain <> 0 
ORDER BY tblOrderDocPGDT.intLineNo
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPGForLoadDocGRV] (  
@DocNumber AS NVARCHAR(50)
)  
AS  
BEGIN  
SELECT 
tblOrderDocPG.strOrdPGDocID as OrdPGDocID
,tblOrderDocPG.lngInvTrackID as InvTrackID
,tblOrderDocPG.lngJourID as JourID
,tblOrderDocPG.dteSystemDate as SystemDate
,tblOrderDocPG.dteJournalDate as JournalDate
,tblOrderDocPG.dteRequired as [Required]
,tblOrderDocPG.strUserName as UserName
,tblOrderDocPG.strVendName as VendName
,tblOrderDocPG.strShipTo as ShipTo
,tblOrderDocPG.strDelNoteNo as VendDesc
,tblOrderDocPG.decSubTotal as SubTotal
,tblOrderDocPG.decVAT as VAT
,tblOrderDocPG.decTotal as Total
,tblOrderDocPG.bitFromPO as IsFromPO
,tblOrderDocPG.strOrdPDocID as OrdPDocID
,tblOrderDocPG.strNotes as Notes
,tblOrderDocPG.bitPrinted as Printed
,tblOrderDocPG.bitEmailed as Emailed
,tblOrderDocPG.bitCleared as Cleared
,tblOrderDocPG.strCurrency as Currency
,tblOrderDocPG.bitIsForeign as IsForeign
,tblOrderDocPG.decSubTotalF as SubTotalF
,tblOrderDocPG.decVATF as VATF
,tblOrderDocPG.decTotalF as TotalF
,tblOrderDocPG.decExchange as Exchange
,tblOrderDocPG.strTerm as Term
,tblOrderDocPG.intDept as Dept
,tblOrderDocPG.strField1 as Field1
,tblOrderDocPG.strField2 as Field2
,tblOrderDocPG.strField3 as Field3
,tblOrderDocPG.strField4 as Field4
,tblOrderDocPG.strField5 as Field5
,tblOrderDocPG.strField6 as Field6
,tblOrderDocPG.strField7 as Field7
,tblOrderDocPG.strField8 as Field8
,tblOrderDocPG.strField9 as Field9
,tblOrderDocPG.strField10 as Field10
,tblOrderDocPG.strField11 as Field11
,tblOrderDocPG.strField12 as Field12
,tblOrderDocPG.strSubFormated as SubFormated
,tblOrderDocPG.strVATFormatted as VATFormatted
,tblOrderDocPG.strTotFormatted as TotFormatted
,tblOrderDocPG.strBoughtFrom as BoughtFrom
,tblOrderDocPG.decDiscPerc as DiscPerc
,tblOrderDocPG.decDiscAmt as DiscAmt
,tblOrderDocPG.decDiscAmtF as DiscAmtF
,tblOrderDocPG.strDiscFormatted as DiscFormatted
,tblOrderDocPG.strOrdFQDocID as OrdFQDocID
,tblOrderDocPG.bitFQConvert as FQConvert
,tblOrderDocPG.bitSOCopy as SOCopy
,tblOrderDocPG.bitSOCopyMulti as SOCopyMulti
,tblOrderDocPG.strStatusTypeCode as StatusTypeCode
,tblOrderDocPG.bitBookmark as Bookmark
,tblOrderDocPG.strAddInfo as AddInfo
,tblOrderDocPG.strReference as Reference
,tblOrderDocPG.decTotalWeight as NetItemWeight
,tblOrderDocPG.decTotalVolWeight as NetVolumetricWeight
,tblOrderDocPG.intRevisionNumber as RevisionNumber
,tblOrderDocPG.bitPutAwayCompleted as PutAwayCompleted
,ISNULL(tblCustomers.strCustDesc,'') AS CustName 
FROM tblOrderDocPG 
LEFT JOIN tblOrderDocQ ON tblOrderDocPG.strOrdFQDocID = tblOrderDocQ.strOrdDocID 
LEFT JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName 
WHERE tblOrderDocPG.strOrdPGDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPDTForConversionGRV]  
(  
@DocNumber AS NVARCHAR(100)  
,@DocLineNumber AS INT  
)  
AS  
BEGIN  
SELECT 
tblOrderDocPGDTSerial.strOrdPGDocID AS PurchaseOrderDocID  
,tblOrderDocPGDTSerial.intLineNo  AS [LineNo]
,tblOrderDocPGDTSerial.strSerialNumber  AS SerialNumber  
,tblOrderDocPGDTSerial.decQty AS Qty
,tblOrderDocPGDTSerial.strUnit AS Unit 
,tblOrderDocPGDTSerial.lngID AS ID 
,tblOrderDocPGDTSerial.bitExpiryDate AS IsExpiryDate 
,tblOrderDocPGDTSerial.dteExpiryDate AS ExpiryDate 
,tblOrderDocPGDTSerial.intSerialLotType AS SerialLotType--8
,tblOrderDocPGDTSerial.lngBinID as BinIDLong
,tblOrderDocPGDTSerial.decPutAwayQty as PutAwayQty
,CASE WHEN tblOrderDocPGDTSerial.intSerialLotType = 0 THEN ISNULL(CAST(tblInvSerialExt.intStatus AS CHAR(1)) + tblInvSerialExt.strDocID,'') ELSE '' END   as [Status]
,CASE WHEN tblOrderDocPGDTSerial.intSerialLotType = 0 THEN ISNULL(tblInvSerialExt.bitDimensionExist,0) ELSE 0 END AS IsDimensionExist 
,CASE WHEN tblOrderDocPGDTSerial.intSerialLotType = 0 THEN ISNULL(tblInvSerialExt.strDimension,'') ELSE '' END  AS Dimension
,ISNULL((SELECT DISTINCT TYP.strInvSerialType FROM tblOrderDocPGDTSerial SRL INNER JOIN tblOrderDocPGDT DTL ON SRL.strOrdPGDocID = DTL.strOrdPGDocID AND SRL.intLineNo = DTL.intLineNo INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType WHERE SRL.strOrdPGDocID = tblOrderDocPGDTSerial.strOrdPGDocID AND SRL.intLineNo = tblOrderDocPGDTSerial.intLineNo),'') as SerialType
,strBinCode  as BinCode
FROM tblOrderDocPGDT 
INNER JOIN tblOrderDocPGDTSerial ON tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPGDTSerial.strOrdPGDocID 
AND tblOrderDocPGDT.intLineNo = tblOrderDocPGDTSerial.intLineNo 
INNER JOIN tblInvLocBin ON tblOrderDocPGDTSerial.lngBinID = tblInvLocBin.lngID 
LEFT JOIN tblInvSerialExt ON tblOrderDocPGDT.strPartNumber = tblInvSerialExt.strPartNumber 
AND tblOrderDocPGDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber 
WHERE tblOrderDocPGDT.strOrdPGDocID = @DocNumber AND tblOrderDocPGDT.intLineNo = @DocLineNumber 
ORDER BY ID
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPGForLoadDocMultiGRV] (@DocNumber AS NVARCHAR(MAX))
AS
BEGIN
	SELECT tblOrderDocPG.strOrdPGDocID AS OrdPGDocID
		,tblOrderDocPG.lngInvTrackID AS InvTrackID
		,tblOrderDocPG.lngJourID AS JourID
		,tblOrderDocPG.dteSystemDate AS SystemDate
		,tblOrderDocPG.dteJournalDate AS JournalDate
		,tblOrderDocPG.dteRequired AS [Required]
		,tblOrderDocPG.strUserName AS UserName
		,tblOrderDocPG.strVendName AS VendName
		,tblOrderDocPG.strShipTo AS ShipTo
		,tblOrderDocPG.strDelNoteNo AS VendDesc
		,tblOrderDocPG.decSubTotal AS SubTotal
		,tblOrderDocPG.decVAT AS VAT
		,tblOrderDocPG.decTotal AS Total
		,tblOrderDocPG.bitFromPO AS IsFromPO
		,tblOrderDocPG.strOrdPDocID AS OrdPDocID
		,tblOrderDocPG.strNotes AS Notes
		,tblOrderDocPG.bitPrinted AS Printed
		,tblOrderDocPG.bitEmailed AS Emailed
		,tblOrderDocPG.bitCleared AS Cleared
		,tblOrderDocPG.strCurrency AS Currency
		,tblOrderDocPG.bitIsForeign AS IsForeign
		,tblOrderDocPG.decSubTotalF AS SubTotalF
		,tblOrderDocPG.decVATF AS VATF
		,tblOrderDocPG.decTotalF AS TotalF
		,tblOrderDocPG.decExchange AS Exchange
		,tblOrderDocPG.strTerm AS Term
		,tblOrderDocPG.intDept AS Dept
		,tblOrderDocPG.strField1 AS Field1
		,tblOrderDocPG.strField2 AS Field2
		,tblOrderDocPG.strField3 AS Field3
		,tblOrderDocPG.strField4 AS Field4
		,tblOrderDocPG.strField5 AS Field5
		,tblOrderDocPG.strField6 AS Field6
		,tblOrderDocPG.strField7 AS Field7
		,tblOrderDocPG.strField8 AS Field8
		,tblOrderDocPG.strField9 AS Field9
		,tblOrderDocPG.strField10 AS Field10
		,tblOrderDocPG.strField11 AS Field11
		,tblOrderDocPG.strField12 AS Field12
		,tblOrderDocPG.strSubFormated AS SubFormated
		,tblOrderDocPG.strVATFormatted AS VATFormatted
		,tblOrderDocPG.strTotFormatted AS TotFormatted
		,tblOrderDocPG.strBoughtFrom AS BoughtFrom
		,tblOrderDocPG.decDiscPerc AS DiscPerc
		,tblOrderDocPG.decDiscAmt AS DiscAmt
		,tblOrderDocPG.decDiscAmtF AS DiscAmtF
		,tblOrderDocPG.strDiscFormatted AS DiscFormatted
		,tblOrderDocPG.strOrdFQDocID AS OrdFQDocID
		,tblOrderDocPG.bitFQConvert AS FQConvert
		,tblOrderDocPG.bitSOCopy AS SOCopy
		,tblOrderDocPG.bitSOCopyMulti AS SOCopyMulti
		,tblOrderDocPG.strStatusTypeCode AS StatusTypeCode
		,tblOrderDocPG.bitBookmark AS Bookmark
		,tblOrderDocPG.strAddInfo AS AddInfo
		,tblOrderDocPG.strReference AS Reference
		,tblOrderDocPG.decTotalWeight AS NetItemWeight
		,tblOrderDocPG.decTotalVolWeight AS NetVolumetricWeight
		,tblOrderDocPG.intRevisionNumber AS RevisionNumber
		,tblOrderDocPG.bitPutAwayCompleted AS PutAwayCompleted
		,ISNULL(tblCustomers.strCustDesc, '') AS CustName
	FROM tblOrderDocPG
	LEFT JOIN tblOrderDocQ ON tblOrderDocPG.strOrdFQDocID = tblOrderDocQ.strOrdDocID
	LEFT JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName
	WHERE tblOrderDocPG.strOrdPGDocID IN (
			(
				SELECT *
				FROM fnSplitStringAsTable(@DocNumber, ',')
				)
			)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetMultipleDocPORQsForConversion] (  
@DocNumber AS NVARCHAR(max)
)  
AS  
BEGIN 
SET @DocNumber = REPLACE(@DocNumber, '''','')
SELECT TOP 1 
tblOrderDocP.strOrdPDocID as OrdPDocID
,tblOrderDocP.dteSystemDate as SystemDate
,tblOrderDocP.dteJournalDate as JournalDate
,tblOrderDocP.dteRequired as [Required]
,tblOrderDocP.strUserName as UserName
,tblOrderDocP.strVendName as VendName
,tblOrderDocP.strShipTo as ShipTo
,tblOrderDocP.decSubTotal as SubTotal
,tblOrderDocP.decVAT as VAT
,tblOrderDocP.decTotal as Total
,tblOrderDocP.strNotes as Notes
,tblOrderDocP.bitPrinted as Printed
,tblOrderDocP.bitEmailed as Emailed
,tblOrderDocP.bitCleared as Cleared
,tblOrderDocP.intDocType as DocType
,tblOrderDocP.strBoughtFrom as BoughtFrom
,tblOrderDocP.strCurrency as Currency
,tblOrderDocP.bitIsForeign as IsForeign
,tblOrderDocP.decSubTotalF as SubTotalF
,tblOrderDocP.decVATF as VATF
,tblOrderDocP.decTotalF as TotalF
,tblOrderDocP.decExchange as Exchange
,tblOrderDocP.strTerm as Term
,tblOrderDocP.intDept as Dept
,tblOrderDocP.strField1 as Field1
,tblOrderDocP.strField2 as Field2
,tblOrderDocP.strField3 as Field3
,tblOrderDocP.strField4 as Field4
,tblOrderDocP.strField5 as Field5
,tblOrderDocP.strField6 as Field6
,tblOrderDocP.strField7 as Field7
,tblOrderDocP.strField8 as Field8
,tblOrderDocP.strField9 as Field9
,tblOrderDocP.strField10 as Field10
,tblOrderDocP.strField11 as Field11
,tblOrderDocP.strField12 as Field12
,tblOrderDocP.strSubFormated as SubFormated
,tblOrderDocP.strVATFormatted as VATFormatted
,tblOrderDocP.strTotFormatted as TotFormatted
,tblOrderDocP.decDiscPerc as DiscPerc
,tblOrderDocP.decDiscAmt as DiscAmt
,tblOrderDocP.decDiscAmtF as DiscAmtF
,tblOrderDocP.strDiscFormatted as DiscFormatted
,tblOrderDocP.strOrdFQDocID as OrdFQDocID
,tblOrderDocP.bitFQConvert as FQConvert
,tblOrderDocP.bitSOCopy as SOCopy
,tblOrderDocP.bitSOCopyMulti as SOCopyMulti
,tblOrderDocP.strStatusTypeCode as StatusTypeCode
,tblOrderDocP.bitBookmark as Bookmark
,tblOrderDocP.strAddInfo as AddInfo
,tblOrderDocP.strReference as Reference
,tblOrderDocP.strOrdRFQDocID as OrdRFQDocID
,tblOrderDocP.bitRFQConvert as RFQConvert
,tblOrderDocP.decNetItemWeight as NetItemWeight
,tblOrderDocP.decNetVolumetricWeight as NetVolumetricWeight
,tblOrderDocP.intRevisionNumber as RevisionNumber
,tblOrderDocP.strBuyerName as BuyerName
,tblOrderDocP.strSalesDocNo as SalesDocNo
,ISNULL(tblCustomers.strCustDesc,'') AS CustName 
FROM tblOrderDocP 
LEFT JOIN tblOrderDocQ ON tblOrderDocP.strOrdFQDocID = tblOrderDocQ.strOrdDocID 
LEFT JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName 
WHERE tblOrderDocP.strOrdPDocID IN (SELECT * FROM fnSplitStringAsTable(@DocNumber, ','))
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetMultipleDocDTPORQsForConversion] (  
@DocNumber AS NVARCHAR(max)
)  
AS  
BEGIN 
SET @DocNumber = REPLACE(@DocNumber, '''','')
SELECT 
tblOrderDocPDT.strOrdPDocID as OrdPDocID
,tblOrderDocPDT.intLineNo as [LineNo]
,tblOrderDocPDT.strPartNumber as PartNumber
,tblOrderDocPDT.strLocation as [Location]
,tblOrderDocPDT.strPartDesc as PartDesc
,tblOrderDocPDT.decBuyQty as BuyQty
,tblOrderDocPDT.decBuyQtyRemain as BuyQtyRemain
,tblOrderDocPDT.strBuyUnit as BuyUnit
,tblOrderDocPDT.decStockQty as StockQty
,tblOrderDocPDT.decStockQtyRemain as StockQtyRemain
,tblOrderDocPDT.strStockUnit as StockUnit
,tblOrderDocPDT.intType as [Type]
,tblOrderDocPDT.decPriceEaExc as PriceEaExc
,tblOrderDocPDT.decLineTotExc as LineTotExc
,tblOrderDocPDT.decLineTaxAmt as LineTaxAmt
,tblOrderDocPDT.strTaxCode as TaxCode
,tblOrderDocPDT.decEaIncTax as EaIncTax
,tblOrderDocPDT.decTotIncTax as TotIncTax
,tblOrderDocPDT.imgTaxObj as TaxObj
,tblOrderDocPDT.strCurrency as Currency
,tblOrderDocPDT.bitIsForeign as IsForeign
,tblOrderDocPDT.decPriceEaExcF as PriceEaExcF
,tblOrderDocPDT.decLineTotExcF as LineTotExcF
,tblOrderDocPDT.decLineTaxAmtF as LineTaxAmtF
,tblOrderDocPDT.decEaIncTaxF as EaIncTaxF
,tblOrderDocPDT.decTotIncTaxF as TotIncTaxF
,tblOrderDocPDT.strInvField1 as InvField1
,tblOrderDocPDT.strInvField2 as InvField2
,tblOrderDocPDT.strInvField3 as InvField3
,tblOrderDocPDT.strInvField4 as InvField4
,tblOrderDocPDT.strInvField5 as InvField5
,tblOrderDocPDT.strInvField6 as InvField6
,tblOrderDocPDT.strLineField1 as LineField1
,tblOrderDocPDT.strLineField2 as LineField2
,tblOrderDocPDT.strLineField3 as LineField3
,tblOrderDocPDT.strLineField4 as LineField4
,tblOrderDocPDT.strLineField5 as LineField5
,tblOrderDocPDT.strLineField6 as LineField6
,tblOrderDocPDT.strLineField7 as LineField7
,tblOrderDocPDT.strLineField8 as LineField8
,tblOrderDocPDT.strLineField9 as LineField9
,tblOrderDocPDT.strLineField10 as LineField10
,tblOrderDocPDT.strLineField11 as LineField11
,tblOrderDocPDT.strLineField12 as LineField12
,tblOrderDocPDT.decLineDiscPerc as LineDiscPerc
,tblOrderDocPDT.decLineDiscAmt as LineDiscAmt
,tblOrderDocPDT.decLineDiscAmtF as LineDiscAmtF
,tblOrderDocPDT.bitDiscountTax as DiscountTax
,tblOrderDocPDT.strOrdSODocID as OrdSODocID
,tblOrderDocPDT.strPartExtendedDesc as PartExtendedDesc
,tblOrderDocPDT.decItemWeight as ItemWeight
,tblOrderDocPDT.decVolumetricWeight as VolumetricWeight
,tblOrderDocPDT.uidTransactionFieldID as TransactionFieldID
,tblOrderDocPDT.intSODocItemLineNo as SODocItemLineNo
,ISNULL(tblCustomers.strCustDesc,'') AS CustDesc
,ISNULL(tblOrderDocPDTPrj.strProjNumber,'') AS ProjNumber
,tblInv.bitInvSerialType as InvSerialType
,ISNULL(tblInvSerialTypes.bitMethod,0) AS Method
,ISNULL(tblInv.strUnitOfMeasure,'') AS UnitOfMeasure
,tblInv.strDimProCode as DimProCode
,ISNULL(tblInvSerialTypes.bitDimensionExist,0) AS DimensionExist 
FROM tblOrderDocPDT INNER JOIN tblInv ON tblOrderDocPDT.strPartNumber = tblInv.strPartNumber 
LEFT JOIN tblOrderDoc ON tblOrderDocPDT.strOrdSODocID = tblOrderDoc.strOrdDocID 
LEFT JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName 
LEFT JOIN tblOrderDocPDTPrj ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTPrj.strOrdPDocID AND tblOrderDocPDT.intLineNo = tblOrderDocPDTPrj.intLineNo 
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
WHERE tblOrderDocPDT.strOrdPDocID IN (SELECT * FROM fnSplitStringAsTable(@DocNumber, ',')) AND tblOrderDocPDT.decBuyQtyRemain <> 0 AND tblOrderDocPDT.bitDiscountTax = 0 
ORDER BY tblOrderDocPDT.strOrdPDocID, tblOrderDocPDT.intLineNo
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvExtPartNumberList](
@Location NVARCHAR(100),
@BinCode NVARCHAR(100)
)
AS
BEGIN
select IEB.strPartNumber 
from tblInvExtBin IEB 
inner join tblInvLocBin LB ON IEB.lngBinID = LB.lngID 
INNER JOIN tblInv inv on IEB.strPartNumber = inv.strPartNumber 
where IEB.strLocName = @Location AND LB.strBinCode = @BinCode AND inv.intType = 1 AND IEB.decOnHand > 0
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetApprovalsDocLimitByApprovalGroupID](
@GroupId int
)
AS
BEGIN
SELECT 
ID,
strUserName as UserName,
DocLimitIncl as DocLimitIncl,
PreferredNotification as PreferredNotification,
intApproverType as ApproverType,
intApproverGroupId as ApproverGroupId,
PriorityLevel AS PriorityLevel
from tblApprovalsDocLimit(NOLOCK)
WHERE intApproverGroupId = @GroupId
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DocumentSave](  
@DocumentID bigint = Null,  
@DocumentNumber varchar(50) = Null,  
@FileName nvarchar(200) = Null,  
@Description nvarchar(200) = Null,  
@Extension varchar(10) = Null,  
@File varbinary(MAX) = Null,  
@Modified datetime = Null,  
@Type nvarchar(100) = Null,  
@Size bigint = Null,  
@UserName nvarchar(20) = Null,  
@IsEnc bit = Null,  
@AttachOn int = Null,  
@IsItemLine bit = Null,  
@LineNo int = Null,  
@IsPosted bit = NULL  
)  
AS 
BEGIN
IF (@DocumentID IS NULL)  
BEGIN  
INSERT INTO [tblDocuments]  
(  
[strDocumentNumber],  
[strFileName],  
[strDescription],  
[strExtension],  
[varFile],  
[dteModified],  
[strType],  
[intSize],  
[strUserName],  
[bitEnc],  
[intAttachOn],  
[bitItemLine],  
[intLineNo],  
[bitPosted]  
)  
VALUES  
(  
@DocumentNumber,  
@FileName,  
@Description,  
@Extension,  
@File,  
@Modified,  
@Type,  
@Size,  
@UserName,  
@IsEnc,  
@AttachOn,  
@IsItemLine,  
@LineNo,  
@IsPosted  
)  
SELECT @DocumentID = SCOPE_IDENTITY()  
SELECT @DocumentID  
END  
ELSE  
BEGIN  
UPDATE [tblDocuments] SET   
[strDocumentNumber] = ISNULL(@DocumentNumber, [strDocumentNumber]),  
[strFileName] = ISNULL(@FileName, [strFileName]),  
[strDescription] = ISNULL(@Description, [strDescription]),  
[strExtension] = ISNULL(@Extension, [strExtension]),  
[varFile] = ISNULL(@File, [varFile]),  
[dteModified] = ISNULL(@Modified, [dteModified]),  
[strType] = ISNULL(@Type, [strType]),  
[intSize] = ISNULL(@Size, [intSize]),  
[strUserName] = ISNULL(@UserName, [strUserName]),  
[bitEnc] = ISNULL(@IsEnc, [bitEnc]),  
[intAttachOn] = ISNULL(@AttachOn, [intAttachOn]),  
[bitItemLine] = ISNULL(@IsItemLine, [bitItemLine]),  
[intLineNo] = ISNULL(@LineNo, [intLineNo]),  
[bitPosted] = ISNULL(@IsPosted,[bitPosted])  
WHERE  
[lngDocumentID] = @DocumentID  
SELECT @DocumentID  
END  
RETURN @DocumentID  
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPQApprovalsUserTracking](
@ID int
)
AS
BEGIN
SELECT strUserName FROM tblPQApprovalsUserTracking WHERE ID = @ID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrdersDocPPOApprovals](
@DocNumber NVARCHAR(200)
)
AS
BEGIN
SELECT * FROM tblOrdersDocP_POApprovals WHERE strOrdPDocID=@DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertPQApprovalsUserTrackingData](
@DocNumber NVARCHAR(200),
@GroupId int,
@UserName NVARCHAR(200),
@Status int,
@Date DateTime
)
AS
BEGIN
INSERT INTO tblPQApprovalsUserTracking (strOrdPDocID,intGroupId,strUserName,intApprovalStatus,rowUpdated) VALUES (@DocNumber,@GroupId,@UserName,@Status,@Date)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertOrdersDocPPOApprovals](
@DocNumber NVARCHAR(200),
@GroupId int
)
AS
BEGIN
INSERT INTO tblOrdersDocP_POApprovals (strOrdPDocID,numPOApprovalStatus,intGroupId) VALUES (@DocNumber,0,@GroupId)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateOrdersDocPPOApprovals](
@DocNumber NVARCHAR(200),
@GroupId int
)
AS
BEGIN
UPDATE tblOrdersDocP_POApprovals set intGroupId=@GroupId where strOrdPDocID=@DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeletePQApprovalsUserTracking](
@DocNumber NVARCHAR(200),
@GroupId int
)
AS
BEGIN
DELETE FROM tblPQApprovalsUserTracking where strOrdPDocID=@DocNumber AND intGroupId=@GroupId
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetApprovalPurchases]  
(  
@DocumenTotal AS VARCHAR(50)  
)  
AS  
BEGIN  
SELECT 
ID,
strGroupName as GroupName,
docLimitIncFrom,
docLimitIncTo,
intNotificationOrder as NotificationOrder
from tblPQApprovalsGroup 
where CAST(@DocumenTotal as money)>= docLimitIncFrom and CAST(@DocumenTotal AS MONEY)<= docLimitIncTo
and bitInactive = 0 and intApproverType = 0

END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOrderDocPDTMultiGRV] (@DocNumber AS NVARCHAR(MAX))
AS
BEGIN
	SELECT tblOrderDocPGDT.strOrdPGDocID AS OrdPDocID
		,tblOrderDocPGDT.intLineNo AS [LineNo]
		,tblOrderDocPGDT.strPartNumber AS PartNumber
		,tblOrderDocPGDT.strLocation AS [Location]
		,tblOrderDocPGDT.strPartDesc AS PartDesc
		,tblOrderDocPGDT.decBuyQty AS BuyQty
		,tblOrderDocPGDT.decBuyQtyRemain AS BuyQtyRemain
		,tblOrderDocPGDT.strBuyUnit AS BuyUnit
		,tblOrderDocPGDT.decStockQty AS StockQty
		,tblOrderDocPGDT.decStockQtyRemain AS StockQtyRemain
		,tblOrderDocPGDT.strStockUnit AS StockUnit
		,tblOrderDocPGDT.intType AS [Type]
		,tblOrderDocPGDT.decPriceEaExc AS PriceEaExc
		,tblOrderDocPGDT.decLineTotExc AS LineTotExc
		,tblOrderDocPGDT.decLineTaxAmt AS LineTaxAmt
		,tblOrderDocPGDT.strTaxCode AS TaxCode
		,tblOrderDocPGDT.decEaIncTax AS EaIncTax
		,tblOrderDocPGDT.decTotIncTax AS TotIncTax
		,tblOrderDocPGDT.imgTaxObj AS TaxObj
		,tblOrderDocPGDT.strCurrency AS Currency
		,tblOrderDocPGDT.bitIsForeign AS IsForeign
		,tblOrderDocPGDT.decPriceEaExcF AS PriceEaExcF
		,tblOrderDocPGDT.decLineTotExcF AS LineTotExcF
		,tblOrderDocPGDT.decLineTaxAmtF AS LineTaxAmtF
		,tblOrderDocPGDT.decEaIncTaxF AS EaIncTaxF
		,tblOrderDocPGDT.decTotIncTaxF AS TotIncTaxF
		,tblOrderDocPGDT.strInvField1 AS InvField1
		,tblOrderDocPGDT.strInvField2 AS InvField2
		,tblOrderDocPGDT.strInvField3 AS InvField3
		,tblOrderDocPGDT.strInvField4 AS InvField4
		,tblOrderDocPGDT.strInvField5 AS InvField5
		,tblOrderDocPGDT.strInvField6 AS InvField6
		,tblOrderDocPGDT.strLineField1 AS LineField1
		,tblOrderDocPGDT.strLineField2 AS LineField2
		,tblOrderDocPGDT.strLineField3 AS LineField3
		,tblOrderDocPGDT.strLineField4 AS LineField4
		,tblOrderDocPGDT.strLineField5 AS LineField5
		,tblOrderDocPGDT.strLineField6 AS LineField6
		,tblOrderDocPGDT.strLineField7 AS LineField7
		,tblOrderDocPGDT.strLineField8 AS LineField8
		,tblOrderDocPGDT.strLineField9 AS LineField9
		,tblOrderDocPGDT.strLineField10 AS LineField10
		,tblOrderDocPGDT.strLineField11 AS LineField11
		,tblOrderDocPGDT.strLineField12 AS LineField12
		,tblOrderDocPGDT.decLineDiscPerc AS LineDiscPerc
		,tblOrderDocPGDT.decLineDiscAmt AS LineDiscAmt
		,tblOrderDocPGDT.decLineDiscAmtF AS LineDiscAmtF
		,tblOrderDocPGDT.bitDiscountTax AS DiscountTax
		,tblOrderDocPGDT.strOrdSODocID AS OrdSODocID
		,tblOrderDocPGDT.decItemWeight AS ItemWeight
		,tblOrderDocPGDT.decVolumetricWeight AS VolumetricWeight
		,tblOrderDocPGDT.uidTransactionFieldID AS TransactionFieldID
		,tblOrderDocPGDT.strPartExtendedDesc AS PartExtendedDesc
		,tblOrderDocPGDT.decBuyGRVQtyRemain AS BuyGRVQtyRemain
		,tblOrderDocPGDT.decStockGRVQtyRemain AS StockGRVQtyRemain
		,tblOrderDocPGDT.decPutAwayQty AS PutAwayQty
		,tblOrderDocPGDT.intSODocItemLineNo AS SODocItemLineNo
		,ISNULL(tblCustomers.strCustDesc, '') AS CustDesc
		,ISNULL(tblOrderDocPGDTPrj.strProjNumber, '') AS ProjNumber
		,tblInv.bitInvSerialType AS InvSerialType
		,ISNULL(tblInvSerialTypes.bitMethod, 0) AS Method
		,tblInv.strDimProCode AS DimProCode
		,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist
		,ISNULL(STUFF((
					SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX))
					FROM tblInvLocBin
					WHERE tblInvLocBin.lngId IN (
							SELECT lngBinId
							FROM tblOrderDocPGDTBin
							WHERE tblOrderDocPGDTBin.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID
								AND tblOrderDocPGDTBin.intLineNo = tblOrderDocPGDT.intLineNo
							)
					FOR XML PATH('')
					), 1, 1, ''), '') AS BinCode
		,ISNULL(STUFF((
					SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(MAX))
					FROM tblInvLocBin
					WHERE tblInvLocBin.lngId IN (
							SELECT lngBinId
							FROM tblOrderDocPGDTBin
							WHERE tblOrderDocPGDTBin.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID
								AND tblOrderDocPGDTBin.intLineNo = tblOrderDocPGDT.intLineNo
							)
					FOR XML PATH('')
					), 1, 1, ''), '') AS BinId
	FROM tblOrderDocPGDT
	INNER JOIN tblInv ON tblOrderDocPGDT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblOrderDoc ON tblOrderDocPGDT.strOrdSODocID = tblOrderDoc.strOrdDocID
	LEFT JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
	LEFT JOIN tblOrderDocPGDTPrj ON tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPGDTPrj.strOrdPGDocID
		AND tblOrderDocPGDT.intLineNo = tblOrderDocPGDTPrj.intLineNo
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblOrderDocPGDT.strOrdPGDocID IN (
			(
				SELECT *
				FROM fnSplitStringAsTable(@DocNumber, ',')
				)
			)
		AND tblOrderDocPGDT.decStockGRVQtyRemain <> 0
	ORDER BY tblOrderDocPGDT.strOrdPGDocID
		,tblOrderDocPGDT.intLineNo
END
GO

----------------------------------------------------

CREATE PROCEDURE [dbo].[RptARGetClosedSOData](
@blnBPToolsMode bit,
@SQUserName VARCHAR(40)
)    
AS    
BEGIN  
SELECT DISTINCT tblOrderDoc.strCustName as CustomerName, strCustDesc as Description FROM tblOrderDoc INNER JOIN tblCustomers ON tblCustomers.strCustName = tblOrderDoc.strCustName WHERE (intDocType = 1) AND (bitCleared = 1)
and ((@blnBPToolsMode = 0) and (strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory AND tblCustomerCatSec.strUserName = ''+@SQUserName+''), 0) > 0 ))))
ORDER BY tblOrderDoc.strCustName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetClosedSOReportData] (
	@IsOptSummaryChecked BIT
	,@SQCustomer VARCHAR(30)
	,@SQStart DATETIME
	,@SQEnd DATETIME
	)
AS
BEGIN
	IF (@IsOptSummaryChecked = 1)
		SELECT tblOrderDoc.strOrdDocID AS OrdDocID
			,tblOrderDoc.dteSystemDate AS SystemDate
			,tblOrderDoc.strUserName AS UserName
			,tblOrderDoc.dteJournalDate AS JournalDate
			,tblOrderDoc.dteRequired AS Required
			,tblOrderDoc.decTotal AS Total
			,CASE SUM(tblOrderDocDT.decQty)
				WHEN SUM(tblOrderDocDT.decQtyRemaining)
					THEN (SUM(tblOrderDocDT.decLineTotExc) + SUM(tblOrderDocDT.decLineTaxAmt))
				ELSE ((SUM(tblOrderDocDT.decLineTotExc) + SUM(tblOrderDocDT.decLineTaxAmt)) / SUM(tblOrderDocDT.decQty)) * SUM(tblOrderDocDT.decQtyRemaining)
				END AS Remain
				,tblOrderDoc.strCustName AS CustName
		FROM tblOrderDoc
		INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
		WHERE (tblOrderDoc.intDocType = 1)
			AND (tblOrderDoc.bitCleared = 1)
			AND (
				tblOrderDoc.dteJournalDate BETWEEN @SQStart
					AND @SQEnd
				)
			AND (tblOrderDoc.strCustName = @SQCustomer)
		GROUP BY tblOrderDoc.strOrdDocID
			,tblOrderDoc.dteSystemDate
			,tblOrderDoc.strUserName
			,tblOrderDoc.dteJournalDate
			,tblOrderDoc.dteRequired
			,tblOrderDoc.decTotal
			,tblOrderDoc.strCustName
		ORDER BY tblOrderDoc.dteJournalDate
	ELSE
		SELECT tblOrderDoc.strOrdDocID AS OrdDocID
			,tblOrderDoc.dteSystemDate AS SystemDate
			,tblOrderDoc.strUserName AS UserName
			,tblOrderDoc.dteJournalDate AS JournalDate
			,tblOrderDoc.dteRequired AS Required
			,tblOrderDoc.decTotal AS Total
			,CASE tblOrderDocDT.decQty
				WHEN tblOrderDocDT.decQtyRemaining
					THEN (tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt)
				ELSE ((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining
				END AS Remain
			,tblOrderDoc.strCustName AS CustName
			,tblOrderDocDT.strPartNumber AS PartNumber
			,tblOrderDocDT.decQty AS Qty
			,tblOrderDocDT.decQtyRemaining AS QtyRemaining
		FROM tblOrderDoc
		INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
		WHERE (tblOrderDoc.intDocType = 1)
			AND (tblOrderDoc.bitCleared = 1)
			AND (strCustName = @SQCustomer)
			AND (
				tblOrderDoc.dteJournalDate BETWEEN @SQStart
					AND @SQEnd
				)
		ORDER BY tblOrderDoc.dteJournalDate
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCreditNoteReasonData] (
	@IsOptRCSearch BIT
	,@RCSearchText NVARCHAR(MAX)
	,@IsCheckedRCInActive BIT
	)
AS
BEGIN
	IF (@IsOptRCSearch = 1)
	BEGIN
		IF (@IsCheckedRCInActive = 1)
			SELECT strCNReasonCode AS CNReasonCode
				,strCNReasonDesc AS CNReasonDesc
			FROM tblCreditNoteReasons
			WHERE (
					strCNReasonCode LIKE '%' + @RCSearchText + '%'
					OR strCNReasonDesc LIKE '%' + @RCSearchText + '%'
					)
			ORDER BY strCNReasonCode
		ELSE
			SELECT strCNReasonCode AS CNReasonCode
				,strCNReasonDesc AS CNReasonDesc
			FROM tblCreditNoteReasons
			WHERE bitInactive = 0
				AND (
					strCNReasonCode LIKE '%' + @RCSearchText + '%'
					OR strCNReasonDesc LIKE '%' + @RCSearchText + '%'
					)
			ORDER BY strCNReasonCode
	END
	ELSE IF (@IsCheckedRCInActive = 1)
	BEGIN
		SELECT strCNReasonCode AS CNReasonCode
			,strCNReasonDesc AS CNReasonDesc
		FROM tblCreditNoteReasons
		ORDER BY strCNReasonCode
	END
	ELSE
		SELECT strCNReasonCode AS CNReasonCode
			,strCNReasonDesc AS CNReasonDesc
		FROM tblCreditNoteReasons
		WHERE bitInactive = 0
		ORDER BY strCNReasonCode
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCreditNoteReasonCustData] (
	@IsOptCSSearch BIT
	,@CSSearchText NVARCHAR(MAX)
	,@blnBPToolsMode BIT
	,@SQUserName NVARCHAR(MAX)
	)
AS
BEGIN
	IF (@IsOptCSSearch = 1)
	BEGIN
		SELECT strCustName AS CustomerName
			,strCustDesc AS Description
		FROM tblCustomers
		WHERE (strCustName LIKE '%' + @CSSearchText + '%' OR strCustDesc LIKE '%' + @CSSearchText + '%')
			AND (
				(
					@blnBPToolsMode = 0
					AND (
						strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = '' + @SQUserName + ''
									)
							)
						)
					)
				)
		ORDER BY strCustName
	END
	ELSE
		SELECT strCustName AS CustomerName
			,strCustDesc AS Description
		FROM tblCustomers
		WHERE (
				(
					@blnBPToolsMode = 0
					AND (
						strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = '' + @SQUserName + ''
									)
							)
						)
					)
				)
		ORDER BY strCustName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCreditNoteReasonReportData] (
	@IsSelectedRCItem BIT
	,@RCItems VARCHAR(max)
	,@IsIncludeBlankCNReason BIT
	,@IsOptAllCS BIT
	,@IsSelectedCSItem BIT
	,@CSItems VARCHAR(max)
	,@SQStart VARCHAR(19)
	,@SQEnd VARCHAR(19)
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)

	SET @Query = 'SELECT tblInvoiceDoc.strInvDocID as InvDocID, tblInvoiceDoc.dteJournalDate as JournalDate, tblInvoiceDoc.strUserName as UserName, tblCustomers.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, tblInvoiceDoc.strReference as Reference, tblInvoiceDoc.decSubTotal as SubTotal, tblInvoiceDoc.decVAT as VAT, tblInvoiceDoc.decTotal as Total, ISNULL(tblInvoiceDoc.strCNReasonCode,'''') AS CNReasonCode, ISNULL(tblInvoiceDoc.strSalesName,'''') AS SalesName FROM tblInvoiceDoc INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName WHERE (LEFT(tblInvoiceDoc.strInvDocID,2) = ''CN'') '
	SET @Query += ' AND ('
	SET @Query += 'tblInvoiceDoc.strCNReasonCode IN (' + @RCItems + ') OR '

	IF (@IsIncludeBlankCNReason = 1)
		SET @Query += 'tblInvoiceDoc.strCNReasonCode IS NULL'
	ELSE
		SET @Query += 'tblInvoiceDoc.strCNReasonCode IS NOT NULL'

	SET @Query += ') '

	IF (
			@IsOptAllCS = 0
			AND @IsSelectedCSItem = 1
			)
	BEGIN
		SET @Query += ' AND (tblInvoiceDoc.strCustName IN (' + @CSItems + ')) '
	END

	SET @Query += 'AND (tblInvoiceDoc.bitHistoryTrans = 0) AND (tblInvoiceDoc.dteJournalDate BETWEEN ''' + @SQStart + ''' AND ''' + @SQEnd + ''') ORDER BY tblInvoiceDoc.strCNReasonCode, tblInvoiceDoc.strInvDocID'

	EXEC sp_Executesql @Query
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustAgedData] (
	@IsOptFilterByCustomer BIT
	,@IsOptFilterByCategory BIT
	,@IsOptFilterBySalesPersons BIT
	,@IsOptFilterByDept BIT
	,@IsOptSearch BIT
	,@SearchText NVARCHAR(MAX)
	,@blnBPToolsMode BIT
	,@SQUserName NVARCHAR(MAX)
	,@IsOptSortName BIT
	)
AS
BEGIN
	IF (@IsOptFilterByCustomer = 1)
	BEGIN
		IF (@IsOptSearch = 1)
		BEGIN
			IF (@IsOptSortName = 1)
				SELECT strCustName AS CustomerName
					,strCustDesc AS Description
				FROM tblCustomers
				WHERE (
                (@SearchText IS NULL OR @SearchText = '') 
                OR (strCustName LIKE '%' + @SearchText + '%') 
                OR (strCustDesc LIKE '%' + @SearchText + '%')
            )
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCustCategory IN (
									SELECT tblCustomerCat.strCustCategory
									FROM tblCustomerCat
									LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
									WHERE ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblCustomerCatSec.strCustCategory)
													FROM tblCustomerCatSec
													WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
													), 0) > 0
											AND tblCustomerCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strCustDesc
			ELSE
				SELECT strCustName AS CustomerName
					,strCustDesc AS Description
				FROM tblCustomers
				WHERE (
                (@SearchText IS NULL OR @SearchText = '') 
                OR (strCustName LIKE '%' + @SearchText + '%') 
                OR (strCustDesc LIKE '%' + @SearchText + '%')
            )
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCustCategory IN (
									SELECT tblCustomerCat.strCustCategory
									FROM tblCustomerCat
									LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
									WHERE ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblCustomerCatSec.strCustCategory)
													FROM tblCustomerCatSec
													WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
													), 0) > 0
											AND tblCustomerCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strCustName
		END
		ELSE
		BEGIN
			IF (@IsOptSortName = 1)
				SELECT strCustName AS CustomerName
					,strCustDesc AS Description
				FROM tblCustomers
				WHERE (
						(
							@blnBPToolsMode = 0
							AND (
								strCustCategory IN (
									SELECT tblCustomerCat.strCustCategory
									FROM tblCustomerCat
									LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
									WHERE ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblCustomerCatSec.strCustCategory)
													FROM tblCustomerCatSec
													WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
													), 0) > 0
											AND tblCustomerCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strCustDesc
			ELSE
				SELECT strCustName AS CustomerName
					,strCustDesc AS Description
				FROM tblCustomers
				WHERE (
						(
							@blnBPToolsMode = 0
							AND (
								strCustCategory IN (
									SELECT tblCustomerCat.strCustCategory
									FROM tblCustomerCat
									LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
									WHERE ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblCustomerCatSec.strCustCategory)
													FROM tblCustomerCatSec
													WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
													), 0) > 0
											AND tblCustomerCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strCustName
		END
	END

	IF (@IsOptFilterByCategory = 1)
	BEGIN
		IF (@IsOptSearch = 1)
		BEGIN
			SELECT strCustCategory AS CustomerName
				,strDesc AS Description
			FROM tblCustomerCat
			WHERE strCustCategory LIKE '%' + @SearchText + '%'
				OR strDesc LIKE '%' + @SearchText + '%'
				AND (
					(
						@blnBPToolsMode = 0
						AND (
							strCustCategory IN (
								SELECT tblCustomerCat.strCustCategory
								FROM tblCustomerCat
								LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
								WHERE ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) > 0
										AND tblCustomerCatSec.strUserName = '' + @SQUserName + ''
										)
								)
							)
						)
					)
			ORDER BY strCustCategory
		END
		ELSE
			SELECT strCustCategory AS CustomerName
				,strDesc AS Description
			FROM tblCustomerCat
			WHERE (
					(
						@blnBPToolsMode = 0
						AND (
							strCustCategory IN (
								SELECT tblCustomerCat.strCustCategory
								FROM tblCustomerCat
								LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
								WHERE ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) > 0
										AND tblCustomerCatSec.strUserName = '' + @SQUserName + ''
										)
								)
							)
						)
					)
			ORDER BY strCustCategory
	END

	IF (@IsOptFilterBySalesPersons = 1)
	BEGIN
		IF (@IsOptSearch = 1)
		BEGIN
			SELECT strSalesName AS CustomerName
			FROM tblSalesPersons
			WHERE strSalesName LIKE '%' + @SearchText + '%'
				AND bitIsWorkshopTechnician = 0
			ORDER BY strSalesName
		END
		ELSE
			SELECT strSalesName AS CustomerName
			FROM tblSalesPersons
			WHERE bitIsWorkshopTechnician = 0
			ORDER BY strSalesName
	END

	IF (@IsOptFilterByDept = 1)
	BEGIN
		IF (@IsOptSearch = 1)
		BEGIN
			SELECT cast(intDept AS VARCHAR(20)) AS CustomerName
				,strDesc AS Description
			FROM tblDepartments
			WHERE (intDept LIKE '%' + @SearchText + '%')
				OR (strDesc LIKE '%' + @SearchText + '%')
			ORDER BY intDept
		END
		ELSE
			SELECT cast(intDept AS VARCHAR(20)) AS CustomerName
				,strDesc AS Description
			FROM tblDepartments
			ORDER BY intDept
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustAgedWithHomeAmountSummaryReportData] (
	@IsOptFilterByCustomer BIT
	,@IsOptFilterByCategory BIT
	,@IsOptFilterBySalesPersons BIT
	,@IsOptFilterByDept BIT
	,@IsChkGroupByTerms BIT
	,@IsOptAll BIT
	,@SQCustomer VARCHAR(max)
	,@blnBPToolsMode BIT
	,@IsOptSortNumber BIT
	,@SQUserName NVARCHAR(MAX)
	,@SQstrTerm VARCHAR(100)
	,@SQAsAt VARCHAR(19)
	,@SQPaidIn VARCHAR(19)
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)

	SET @Query = ''

	IF (@IsOptFilterByCustomer = 1)
	BEGIN
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, SUM(tblCustTransDT.decAmount) as decAmount, MASTERTABLE.dteJournalDate as JournalDate, '''' as Grouping FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

		IF(@IsOptAll = 0)
		SET @Query += ' (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (' + @SQCustomer + ')) AND'
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''' AND tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''') GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate '
		SET @Query += ' UNION ALL '
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc  as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, SUM(tblCustTransDT.decAmount) as decAmount, MASTERTABLE.dteJournalDate as JournalDate, '''' as Grouping FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''' AND tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''') GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate '

		IF (@IsOptSortNumber = 1)
		BEGIN
			SET @Query += ' ORDER BY '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' LTRIM(RTRIM(MASTERTABLE.strCustName))'
		END
		ELSE
		BEGIN
			SET @Query += ' ORDER BY '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName))'
		END
	END
	ELSE IF (@IsOptFilterByCategory = 1)
	BEGIN
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, SUM(tblCustTransDT.decAmount) as decAmount, MASTERTABLE.dteJournalDate as JournalDate, ISNULL(tblCustomers.strCustCategory,'''') as Grouping FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''' AND tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''') GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory '
		SET @Query += ' UNION ALL '
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, SUM(tblCustTransDT.decAmount) as decAmount, MASTERTABLE.dteJournalDate as JournalDate, ISNULL(tblCustomers.strCustCategory,'''') as Grouping FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''' AND tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''') GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory '

		IF (@IsOptSortNumber = 1)
		BEGIN
			SET @Query += ' ORDER BY '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' ISNULL(tblCustomers.strCustCategory, ''''), LTRIM(RTRIM(MASTERTABLE.strCustName))'
		END
		ELSE
		BEGIN
			SET @Query += ' ORDER BY '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' ISNULL(tblCustomers.strCustCategory, ''''), tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName))'
		END
	END
	ELSE IF (@IsOptFilterBySalesPersons = 1)
	BEGIN
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, SUM(tblCustTransDT.decAmount) as decAmount, MASTERTABLE.dteJournalDate as JournalDate, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, tblCustomerSales.strSalesName FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''' AND tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''') GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName'
		SET @Query += ' UNION ALL '
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, SUM(tblCustTransDT.decAmount) as decAmount, MASTERTABLE.dteJournalDate as JournalDate, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, tblCustomerSales.strSalesName FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''' AND tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''') GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName '

		IF (@IsOptSortNumber = 1)
		BEGIN
			SET @Query += ' ORDER BY '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomerSales.strSalesName'
		END
		ELSE
		BEGIN
			SET @Query += ' ORDER BY '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomerSales.strSalesName'
		END
	END
	ELSE IF (@IsOptFilterByDept = 1)
	BEGIN
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, SUM(tblCustTransDT.decAmount) as decAmount, MASTERTABLE.dteJournalDate as JournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') as Grouping ,ISNULL(tblCustomers.intDept, 0) FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'
		ELSE IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''' AND tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''') GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomers.intDept '
		SET @Query += ' UNION ALL '
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate  as DueDate, SUM(tblCustTransDT.decAmount) as decAmount, MASTERTABLE.dteJournalDate as JournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') as Grouping ,ISNULL(tblCustomers.intDept, 0) FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''' AND tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''') GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomers.intDept '

		IF (@IsOptSortNumber = 1)
		BEGIN
			SET @Query += ' ORDER BY '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' ISNULL(tblCustomers.intDept, 0), LTRIM(RTRIM(MASTERTABLE.strCustName))'
		END
		ELSE
		BEGIN
			SET @Query += ' ORDER BY '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' ISNULL(tblCustomers.intDept, 0), tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName))'
		END
	END

	SET @Query += ''

	EXEC sp_Executesql @Query
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustAgedWithHomeAmountDetailReportData] (
	@IsOptFilterByCustomer BIT
	,@IsOptFilterByCategory BIT
	,@IsOptFilterBySalesPersons BIT
	,@IsOptFilterByDept BIT
	,@IsChkGroupByTerms BIT
	,@IsOptAll BIT
	,@SQCustomer VARCHAR(max)
	,@blnBPToolsMode BIT
	,@IsOptSortNumber BIT
	,@SQUserName NVARCHAR(MAX)
	,@SQstrTerm VARCHAR(100)
	,@SQAsAt VARCHAR(19)
	,@SQPaidIn VARCHAR(19)
	,@IsOptNetValue BIT
	,@SQintTransType VARCHAR(5)
	,@SQCriteria NVARCHAR(MAX)
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)

	SET @Query = ''

	IF (@IsOptFilterByCustomer = 1)
	BEGIN
		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, tblCustomers.strCustDesc AS CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE  ISNULL(MASTERTABLE.strInvDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, CONVERT(TINYINT, 1)  intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteJournalDate as JournalDate,     MASTERTABLE.dteJournalDate, '''' as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN     tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName))  = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE'
		END
		ELSE
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, tblCustomers.strCustDesc AS CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += ' tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += '  CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE     CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''')     END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType,     tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, '''' as Grouping,     CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID     INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay  ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '
		END

		IF (@blnBPToolsMode = 0)
		BEGIN
			SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory =  tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
		SET @Query += ' AND (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '',''))) '

		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm,  CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteJournalDate, strInvDepNumber'
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, tblCustomers.strCustDesc AS CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE   ISNULL(MASTERTABLE.strOrdDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, CONVERT(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteJournalDate as JournalDate,     MASTERTABLE.dteJournalDate, '''' as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON     LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

			IF (@blnBPToolsMode = 0)
			BEGIN
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')))  GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm,  CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteJournalDate, strInvDepNumber '
		END
		ELSE
		BEGIN
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, tblCustomers.strCustDesc AS CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term, '
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN     ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType,     tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, '''' as Grouping,     CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'

			IF (@blnBPToolsMode = 0)
			BEGIN
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''')) '

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += 'AND (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')))'
		END
	END

	IF (@IsOptFilterByCategory = 1)
	BEGIN
		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, tblCustomers.strCustDesc AS CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END as  JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, CONVERT(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount,     MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL(tblCustomers.strCustCategory, '''') AS Grouping,     (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER     JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE'
		END
		ELSE
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, tblCustomers.strCustDesc AS CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += '  CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL    (tblCustTransDT.lngCustPayID,0)     = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate,     MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount AS decAmount, MASTERTABLE.dteJournalDate as JournalDate,     tblCustTransDT.dteJournalDate, ISNULL(tblCustomers.strCustCategory, '''') AS Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN     (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber,tblCustomers.strCustCategory FROM tblCustTrans AS MASTERTABLE INNER     JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'
		END

		IF (@IsOptAll = 0)
			SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
		SET @Query += ' AND (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '',''))) '

		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm,  CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN     ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID,     MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory, strInvDepNumber'
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, tblCustomers.strCustDesc AS CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += '  CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END as JEDocID,     MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, CONVERT(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount,     MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL(tblCustomers.strCustCategory, '''') AS Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON     LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE'

			IF (@IsOptAll = 0)
				SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''')) '

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')))'
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm,  CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN     ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID,     MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory, strInvDepNumber'

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' Grouping, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' Grouping, tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID'
			END
		END
		ELSE
		BEGIN
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, tblCustomers.strCustDesc AS CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += '  CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN     ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType,     tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate,     ISNULL(tblCustomers.strCustCategory, '''') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber ,    tblCustomers.strCustCategory FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON     LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'

			IF (@IsOptAll = 0)
				SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL)  AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''')) '

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '',''))) '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += 'tblCustomers.strCustCategory, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' tblCustomers.strCustCategory, tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
		END
	END

	IF (@IsOptFilterBySalesPersons = 1)
	BEGIN
		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, tblCustomers.strCustDesc AS CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += '   CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, CONVERT(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE'
		END
		ELSE
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, tblCustomers.strCustDesc AS CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += '  CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN     ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID =     tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'
		END

		IF (@IsOptAll = 0)
			SET @Query += ' (ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
		SET @Query += ' AND (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '',''))) '

		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN     ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, tblCustomers.strCustDesc AS CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += '  CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END as JEDocID,     MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, CONVERT(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE'

			IF (@IsOptAll = 0)
				SET @Query += ' (ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ')) AND'
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')))  GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName, strInvDepNumber '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''),  LTRIM(RTRIM(MASTERTABLE.strCustName)) , tblCustTransDT.lngCustTrID'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), tblCustomers.strCustDesc,  LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID'
			END
		END
		ELSE
		BEGIN
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE     ISNULL(tblCustPay.strSource, '''') END END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteJournalDate,tblCustTransDT.dteJournalDate, tblCustomerSales.strSalesName, tblCustTransDT.lngCustPayID, tblCustPay.strComment, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, tblCustomers.strCustDesc AS CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += '  CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0     THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType,    tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount), MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID     INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName =     tblCustomerSales.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'

			IF (@IsOptAll = 0)
				SET @Query += ' (ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'')IN (' + @SQCustomer + ')) AND'
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')))  GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN     ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE     ISNULL(tblCustPay.strSource, '''') END END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID,     MASTERTABLE.dteJournalDate, tblCustTransDT.dteJournalDate, tblCustomerSales.strSalesName, tblCustTransDT.lngCustPayID, tblCustPay.strComment, strInvDepNumber '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), tblCustomers.strCustDesc,  LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
		END
	END

	IF (@IsOptFilterByDept = 1)
	BEGIN
		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, tblCustomers.strCustDesc AS CustDesc , '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += '  CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END as JEDocID,     MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, CONVERT(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount,     MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL((SELECT     CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'')    as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID =     tblCustTransDT.lngCustTrID     INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE'
		END
		ELSE
		BEGIN
			SET @Query += 'SELECT tblCustomers.strCustName AS CustName, tblCustomers.strCustDesc AS CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += '  CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0)     = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType,     tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount  AS decAmount, MASTERTABLE.dteJournalDate as JournalDate , tblCustTransDT.dteJournalDate,     ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept =     tblCustomers.intDept),''<<No Department>>'') AS Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE     ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber, ISNULL(tblCustomers.intDept, 0) FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON     MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName))     LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'
		END

		IF (@IsOptAll = 0)
			SET @Query += ' (ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'
		
		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <=''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
		SET @Query += ' AND (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '',''))) '

		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm,  CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN     ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID,     MASTERTABLE.dteJournalDate, tblCustomers.intDept, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, tblCustomers.strCustDesc AS CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += '  CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END as JEDocID,     MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, CONVERT(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount,     MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc     FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'')  as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID)  as strInvDepNumber FROM tblCustTrans   AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) =     LTRIM(RTRIM(tblCustomers.strCustName)) WHERE'

			IF (@IsOptAll = 0)
				SET @Query += ' (ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'
			
			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')))  GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm,  CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN     ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID,    MASTERTABLE.dteJournalDate, tblCustomers.intDept, strInvDepNumber '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'Term,'
				SET @Query += ' strInvDepNumber, CustName, tblCustTransDT.lngCustTrID'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'Term,'
				SET @Query += ' strInvDepNumber, CustDesc,  strCustName, tblCustTransDT.lngCustTrID'
			END
		END
		ELSE
		BEGIN
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT  LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, tblCustomers.strCustDesc AS CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += '  CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0     THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType,    tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate,     ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') as Grouping,     CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber, ISNULL(tblCustomers.intDept, 0)     FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) =     LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'

			IF (@IsOptAll = 0)
				SET @Query += ' (ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'
			
			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '',''))) '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'Term,'
				SET @Query += ' ISNULL(tblCustomers.intDept, 0),  CustName, tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'Term,'
				SET @Query += ' ISNULL(tblCustomers.intDept, 0), CustDesc, CustName, tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
		END
	END

	SET @Query += ''

	--select @Query
	EXEC sp_Executesql @Query
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustAgedWithForeignAmountSummaryReportData] (
	@IsOptFilterByCustomer BIT
	,@IsOptFilterByCategory BIT
	,@IsOptFilterBySalesPersons BIT
	,@IsOptFilterByDept BIT
	,@IsChkGroupByTerms BIT
	,@IsOptAll BIT
	,@SQCustomer VARCHAR(max)
	,@blnBPToolsMode BIT
	,@IsOptSortNumber BIT
	,@SQUserName NVARCHAR(MAX)
	,@SQstrTerm VARCHAR(100)
	,@SQAsAt VARCHAR(19)
	,@SQPaidIn VARCHAR(19)
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)

	SET @Query = ''

	IF (@IsOptFilterByCustomer = 1)
	BEGIN
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency) AS strCurrName, MASTERTABLE.dteJournalDate as JournalDate, '''' as Grouping FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> ''
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> 'All'
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + 
			''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate'
		SET @Query += ' UNION ALL '
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency)  AS strCurrName, MASTERTABLE.dteJournalDate as JournalDate, '''' as Grouping FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> ''
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> 'All'
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + 
			''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate'

		IF (@IsOptSortNumber = 1)
		BEGIN
			SET @Query += ' ORDER BY tblCustomers.strCurrency, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' LTRIM(RTRIM(MASTERTABLE.strCustName))'
		END
		ELSE
		BEGIN
			SET @Query += ' ORDER BY tblCustomers.strCurrency, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName))'
		END
	END
	ELSE IF (@IsOptFilterByCategory = 1)
	BEGIN
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency)  AS strCurrName, MASTERTABLE.dteJournalDate as JournalDate, ISNULL(tblCustomers.strCustCategory, '''') as Grouping ,tblCustomers.strCustCategory FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> ''
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> 'All'
			SET @Query += ' tblCustomers.strTerm = ''%' + @SQstrTerm + '%'' AND'
		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + 
			''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory'
		SET @Query += ' UNION ALL '
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency)  AS strCurrName, MASTERTABLE.dteJournalDate as JournalDate, ISNULL(tblCustomers.strCustCategory, '''') as Grouping ,tblCustomers.strCustCategory FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> ''
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> 'All'
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + 
			''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory'

		IF (@IsOptSortNumber = 1)
		BEGIN
			SET @Query += ' ORDER BY tblCustomers.strCurrency, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' tblCustomers.strCustCategory, LTRIM(RTRIM(MASTERTABLE.strCustName))'
		END
		ELSE
		BEGIN
			SET @Query += ' ORDER BY tblCustomers.strCurrency, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += 'tblCustomers.strCustCategory, tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName))'
		END
	END
	ELSE IF (@IsOptFilterBySalesPersons = 1)
	BEGIN
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency)  AS strCurrName, MASTERTABLE.dteJournalDate as JournalDate, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, tblCustomerSales.strSalesName FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> ''
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> 'All'
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + 
			''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName'
		SET @Query += ' UNION ALL '
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency)  AS strCurrName, MASTERTABLE.dteJournalDate as JournalDate, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, tblCustomerSales.strSalesName FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> ''
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> 'All'
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + 
			''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName'

		IF (@IsOptSortNumber = 1)
		BEGIN
			SET @Query += ' ORDER BY tblCustomers.strCurrency, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomerSales.strSalesName'
		END
		ELSE
		BEGIN
			SET @Query += ' ORDER BY tblCustomers.strCurrency, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomerSales.strSalesName'
		END
	END
	ELSE IF (@IsOptFilterByDept = 1)
	BEGIN
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency)  AS strCurrName, MASTERTABLE.dteJournalDate as JournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') as Grouping, ISNULL(tblCustomers.intDept, 0) FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'
		ELSE IF @SQstrTerm <> ''
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> 'All'
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + 
			''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomers.intDept'
		SET @Query += ' UNION ALL '
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency)  AS strCurrName, MASTERTABLE.dteJournalDate as JournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') as Grouping, ISNULL(tblCustomers.intDept, 0) FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'

		IF @SQstrTerm <> ''
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> 'All'
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + 
			''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomers.intDept'

		IF (@IsOptSortNumber = 1)
		BEGIN
			SET @Query += ' ORDER BY tblCustomers.strCurrency, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' ISNULL(tblCustomers.intDept, 0), LTRIM(RTRIM(MASTERTABLE.strCustName))'
		END
		ELSE
		BEGIN
			SET @Query += ' ORDER BY tblCustomers.strCurrency, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' ISNULL(tblCustomers.intDept, 0), tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName))'
		END
	END

	SET @Query += ''
	EXEC sp_Executesql @Query
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustAgedWithForeignAmountDetailReportData] (
	@IsOptFilterByCustomer BIT
	,@IsOptFilterByCategory BIT
	,@IsOptFilterBySalesPersons BIT
	,@IsOptFilterByDept BIT
	,@IsChkGroupByTerms BIT
	,@IsOptAll BIT
	,@SQCustomer VARCHAR(max)
	,@blnBPToolsMode BIT
	,@IsOptSortNumber BIT
	,@SQUserName NVARCHAR(MAX)
	,@SQstrTerm VARCHAR(100)
	,@SQAsAt VARCHAR(19)
	,@SQPaidIn VARCHAR(19)
	,@IsOptNetValue BIT
	,@SQintTransType VARCHAR(10)
	,@SQCriteria NVARCHAR(MAX)
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)

	SET @Query = ''

	IF (@IsOptFilterByCustomer = 1)
	BEGIN
		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, CONVERT(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END) AS decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency) AS strCurrName, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, '''' as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE'
		END
		ELSE
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency) AS strCurrName, MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, '''' as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'
		END

		IF (@blnBPToolsMode = 0)
		BEGIN
			SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomercat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

		IF @SQstrTerm <> ''
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> 'All'
			SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
		SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '

		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, MASTERTABLE.dteJournalDate, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, CONVERT(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END) AS decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency) AS strCurrName, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, '''' as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE'

			IF (@blnBPToolsMode = 0)
			BEGIN
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomercat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''')) '

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, MASTERTABLE.dteJournalDate, strInvDepNumber '
		END
		ELSE
		BEGIN
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'
			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency) AS strCurrName,MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, '''' as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '

			IF (@blnBPToolsMode = 0)
			BEGIN
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomercat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '
		END
	END

	IF (@IsOptFilterByCategory = 1)
	BEGIN
		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, CONVERT(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END) AS decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency) AS strCurrName , MASTERTABLE.dteJournalDate AS JournalDate , MASTERTABLE.dteJournalDate, ISNULL(tblCustomers.strCustCategory,'''') as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE'
		END
		ELSE
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency) AS strCurrName, MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL(tblCustomers.strCustCategory,'''') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber, tblCustomers.strCustCategory FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'
		END

		IF (@IsOptAll = 0)
			SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

		IF @SQstrTerm <> ''
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> 'All'
			SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
		SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '

		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, CONVERT(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END) AS decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency) AS strCurrName, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL(tblCustomers.strCustCategory,'''') as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE'

			IF (@IsOptAll = 0)
				SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomercat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @QUERY += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory, strInvDepNumber '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomers.strCustCategory,''''), LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomers.strCustCategory,''''), tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID'
			END
		END
		ELSE
		BEGIN
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency) AS strCurrName,MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL(tblCustomers.strCustCategory,'''') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber, tblCustomers.strCustCategory FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'

			IF (@IsOptAll = 0)
				SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomercat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' tblCustomers.strCustCategory, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' tblCustomers.strCustCategory, tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
		END
	END

	IF (@IsOptFilterBySalesPersons = 1)
	BEGIN
		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc,'

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, CONVERT(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency) AS strCurrName, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL(tblCustomerSales.strSalesName,''<<No Sales Person>>'') as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE'
		END
		ELSE
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency) AS strCurrName,MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL(tblCustomerSales.strSalesName,''<<No Sales Person>>'') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'
		END

		IF (@IsOptAll = 0)
			SET @Query += ' (ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomercat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

		IF @SQstrTerm <> ''
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> 'All'
			SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
		SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '

		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, CONVERT(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency) AS strCurrName, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL(tblCustomerSales.strSalesName,''<<No Sales Person>>'') as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE'

			IF (@IsOptAll = 0)
				SET @Query += ' (ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ')) AND'
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomercat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName, strInvDepNumber '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID'
			END
		END
		ELSE
		BEGIN
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustTransDT.dteJournalDate, tblCustomerSales.strSalesName, tblCustTransDT.lngCustPayID, tblCustPay.strComment, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency) AS strCurrName, MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL(tblCustomerSales.strSalesName,''<<No Sales Person>>'') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'

			IF (@IsOptAll = 0)
				SET @Query += ' (ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'')IN (' + @SQCustomer + ')) AND'
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomercat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustTransDT.dteJournalDate, tblCustomerSales.strSalesName, tblCustTransDT.lngCustPayID, tblCustPay.strComment, tblCustTransDT.lngCustPayID, tblCustPay.strComment, strInvDepNumber  '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
		END
	END

	IF (@IsOptFilterByDept = 1)
	BEGIN
	 IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, CONVERT(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END) AS decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency) AS strCurrName, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') AS Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE'
		END
		ELSE
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency) AS strCurrName,MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber, ISNULL(tblCustomers.intDept, 0) FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'
		END

		IF (@IsOptAll = 0)
			SET @Query += ' (ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'
		
		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

		IF @SQstrTerm <> ''
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> 'All'
			SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
		SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '

		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, MASTERTABLE.dteJournalDate, tblCustomers.intDept, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, CONVERT(TINYINT, 1) AS intTransType, tblCustTransDT.lngCustTrID, SUM(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END) AS decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency) AS strCurrName, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') AS Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE'

			IF (@IsOptAll = 0)
				SET @Query += ' (ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'
			
			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, MASTERTABLE.dteJournalDate, tblCustomers.intDept, strInvDepNumber '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' strInvDepNumber, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' strInvDepNumber, tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID'
			END
		END
		ELSE
		BEGIN
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency) AS strCurrName,MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber , ISNULL(tblCustomers.intDept, 0) FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'

			IF (@IsOptAll = 0)
				SET @Query += ' (ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'
			
			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomers.intDept, 0), LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomers.intDept, 0), tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
		END
	END

	SET @Query += ''
	--select @Query
	EXEC sp_Executesql @Query
END
GO

CREATE PROCEDURE [dbo].[RptARGetCustAgedHomeAmountDrillDownReportData] (
	@blnNetValueDD BIT
	,@strCustomerDD VARCHAR(max)
	,@strTermDD VARCHAR(200)
	,@blnSortNumberDD BIT
	,@SQCustomer VARCHAR(max)
	,@SQintTransType VARCHAR(10)
	,@SQAsAt VARCHAR(19)
	,@SQPaidIn VARCHAR(19)
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(MAX) = '';

	IF (@blnNetValueDD = 1)
		SET @Query += 'SELECT MASTERTABLE.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, tblCustomers.strTerm as Term, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, 1 AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, '''' as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE' 
	ELSE 
		SET @Query += 'SELECT MASTERTABLE.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, tblCustomers.strTerm as Term, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, '''' as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'

	SET @Query += ' (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (''' + @strCustomerDD + ''')) AND'
	SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

	IF @strTermDD <> 'All'
		SET @Query += ' AND tblCustomers.strTerm = ''' + @strTermDD + ''

	IF (@blnNetValueDD = 1)
	BEGIN
		SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteJournalDate, strInvDepNumber '
		SET @Query += 'UNION ALL '
		SET @Query += 'SELECT MASTERTABLE.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, tblCustomers.strTerm as Term, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, 1 AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, '''' as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'
		SET @Query += ' (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (' + @SQCustomer + ')) AND'
		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

		IF @strTermDD <> 'All'
			SET @Query += ' AND tblCustomers.strTerm = ''' + @strTermDD + ''
		SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteJournalDate, strInvDepNumber '
	END
	ELSE
	BEGIN
		SET @Query += 'UNION ALL '
		SET @Query += 'SELECT MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteJournalDate, tblCustTransDT.dteJournalDate, '''', CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '
		SET @Query += ' (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (' + @SQCustomer + ')) AND'
		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''')) '

		IF @strTermDD <> 'All'
			SET @Query += ' AND tblCustomers.strTerm = ''' + @strTermDD + ''
		SET @Query += 'AND (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))'
	END

	EXEC sp_Executesql @Query
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustAgedForeignAmountDrillDownReportData] (
	@blnNetValueDD BIT
	,@strCustomerDD VARCHAR(max)
	,@strTermDD VARCHAR(200)
	,@blnSortNumberDD BIT
	,@SQCustomer VARCHAR(max)
	,@SQintTransType VARCHAR(10)
	,@SQAsAt VARCHAR(19)
	,@SQPaidIn VARCHAR(19)
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)

	SET @Query = ''

	IF (@blnNetValueDD = 1)
		SET @Query += 'SELECT MASTERTABLE.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, tblCustomers.strTerm as Term, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, 1 AS intTransType, tblCustTransDT.lngCustTrID, SUM(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END) AS decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, '''' as Grouping , CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'
	ELSE
		SET @Query += 'SELECT MASTERTABLE.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, tblCustomers.strTerm as Term, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency),MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, '''' as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'

	SET @Query += ' (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (' + @strCustomerDD + ')) AND'
	SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

	IF @strTermDD <> 'All'
		SET @Query += ' AND tblCustomers.strTerm = ''' + @strTermDD + ''

	IF (@blnNetValueDD = 1)
	BEGIN
		SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, MASTERTABLE.dteJournalDate, strInvDepNumber '
		SET @Query += 'UNION ALL '
		SET @Query += 'SELECT MASTERTABLE.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, tblCustomers.strTerm as Term, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, 1 AS intTransType, tblCustTransDT.lngCustTrID, SUM(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END) AS decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, '''' as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'
		SET @Query += ' (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (' + @SQCustomer + ')) AND'
		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''')) '

		IF @strTermDD <> 'All'
			SET @Query += ' AND tblCustomers.strTerm = ''' + @strTermDD + ''
		SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, MASTERTABLE.dteJournalDate, strInvDepNumber '
	END
	ELSE
	BEGIN
		SET @Query += 'UNION ALL '
		SET @Query += 'SELECT MASTERTABLE.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, tblCustomers.strTerm as Term, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency),MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, '''' as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'
		SET @Query += ' (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (' + @SQCustomer + ')) AND'
		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

		IF @strTermDD <> 'All'
			SET @Query += ' AND tblCustomers.strTerm = ''' + @strTermDD + ''
		SET @Query += '(tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))'
	END

	SET @Query += ''

	EXEC sp_Executesql @Query
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustAgedWithHomeAmountSummaryReportDataUsingParameter] (
	@IsOptFilterByCustomer BIT
	,@IsOptFilterByCategory BIT
	,@IsOptFilterBySalesPersons BIT
	,@IsOptFilterByDept BIT
	,@IsChkGroupByTerms BIT
	,@IsOptAll BIT
	,@SQCustomer VARCHAR(max)
	,@blnBPToolsMode BIT
	,@IsOptSortNumber BIT
	,@SQUserName NVARCHAR(MAX)
	,@SQstrTerm VARCHAR(100)
	,@SQAsAt VARCHAR(19)
	,@SQPaidIn VARCHAR(19)
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)

	SET @Query = ''

	IF (@IsOptFilterByCustomer = 1)
	BEGIN
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, SUM(tblCustTransDT.decAmount) as decAmount, MASTERTABLE.dteJournalDate as JournalDate, '''' as Grouping FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''' AND tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''') GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate '
		SET @Query += ' UNION ALL '
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, SUM(tblCustTransDT.decAmount) as decAmount, MASTERTABLE.dteJournalDate as JournalDate, '''' as Grouping FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''' AND tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''') GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate '
		SET @Query += ' UNION ALL '
		SET @Query += ' SELECT LTRIM(RTRIM(tblCustomers.strCustName)),tblCustomers.strCustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' tblOrderDoc.dteRequired as DueDate,tblOrderDoc.decTotal as decAmount,tblOrderDoc.dteJournalDate as JournalDate,'''' as Grouping FROM tblOrderDoc INNER JOIN tblCustomers ON LTRIM(RTRIM(tblOrderDoc.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

		IF (@IsOptAll = 0)
			SET @Query += ' (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' intDocType = 1 AND bitCleared = 0 AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (tblOrderDoc.dteJournalDate <= ''' + @SQAsAt + ''') '

		IF (@IsOptSortNumber = 1)
		BEGIN
			SET @Query += ' ORDER BY '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' LTRIM(RTRIM(MASTERTABLE.strCustName))'
		END
		ELSE
		BEGIN
			SET @Query += ' ORDER BY '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName))'
		END
	END
	ELSE IF (@IsOptFilterByCategory = 1)
	BEGIN
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, SUM(tblCustTransDT.decAmount) as decAmount, MASTERTABLE.dteJournalDate as JournalDate, ISNULL(tblCustomers.strCustCategory,'''') as Grouping FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''' AND tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''') GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory '
		SET @Query += ' UNION ALL '
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, SUM(tblCustTransDT.decAmount) as decAmount, MASTERTABLE.dteJournalDate as JournalDate, ISNULL(tblCustomers.strCustCategory,'''') as Grouping FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''' AND tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''') GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory '
		SET @Query += ' UNION ALL '
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteRequired as DueDate,MASTERTABLE.decTotal as decAmount,MASTERTABLE.dteJournalDate as JournalDate,ISNULL(tblCustomers.strCustCategory, '''') as Grouping FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

		IF (@IsOptAll = 0)
			SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '

		IF (@IsOptSortNumber = 1)
		BEGIN
			SET @Query += ' ORDER BY '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' ISNULL(tblCustomers.strCustCategory, ''''), LTRIM(RTRIM(MASTERTABLE.strCustName))'
		END
		ELSE
		BEGIN
			SET @Query += ' ORDER BY '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' ISNULL(tblCustomers.strCustCategory, ''''), tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName))'
		END
	END
	ELSE IF (@IsOptFilterBySalesPersons = 1)
	BEGIN
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, SUM(tblCustTransDT.decAmount) as decAmount, MASTERTABLE.dteJournalDate as JournalDate, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, tblCustomerSales.strSalesName FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''' AND tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''') GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName'
		SET @Query += ' UNION ALL '
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, SUM(tblCustTransDT.decAmount) as decAmount, MASTERTABLE.dteJournalDate as JournalDate, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, tblCustomerSales.strSalesName FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''' AND tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''') GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName '
		SET @Query += ' UNION ALL '
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteRequired as DueDate,MASTERTABLE.decTotal as decAmount,MASTERTABLE.dteJournalDate as JournalDate, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping ,tblCustomerSales.strSalesName FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE '

		IF (@IsOptAll = 0)
			SET @Query += ' (ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '

		IF (@IsOptSortNumber = 1)
		BEGIN
			SET @Query += ' ORDER BY '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomerSales.strSalesName'
		END
		ELSE
		BEGIN
			SET @Query += ' ORDER BY '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomerSales.strSalesName'
		END
	END
	ELSE IF (@IsOptFilterByDept = 1)
	BEGIN
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, SUM(tblCustTransDT.decAmount) as decAmount, MASTERTABLE.dteJournalDate as JournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') as Grouping ,ISNULL(tblCustomers.intDept, 0) FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'
		ELSE IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''' AND tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''') GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomers.intDept '
		SET @Query += ' UNION ALL '
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteDueDate as DueDate, SUM(tblCustTransDT.decAmount) as decAmount, MASTERTABLE.dteJournalDate as JournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') as Grouping ,ISNULL(tblCustomers.intDept, 0) FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

		IF (@IsOptAll = 0)
			SET @Query += ' (ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''' AND tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''') GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomers.intDept '
		SET @Query += ' UNION ALL '
		SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '

		IF (@IsChkGroupByTerms = 1)
			SET @Query += 'tblCustomers.strTerm as Term,'
		ELSE
			SET @Query += ''''' as Term,'

		SET @Query += ' MASTERTABLE.dteRequired as DueDate,MASTERTABLE.decTotal as decAmount,MASTERTABLE.dteJournalDate as JournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS NVARCHAR(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept), ''<<No Department>>'') as Grouping,ISNULL(tblCustomers.intDept, 0) FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

		IF (@IsOptAll = 0)
			SET @Query += ' (ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' tblCustomers.strTerm = ''' + @SQstrTerm + ''' AND'
		SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '

		IF (@IsOptSortNumber = 1)
		BEGIN
			SET @Query += ' ORDER BY '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' ISNULL(tblCustomers.intDept, 0), LTRIM(RTRIM(MASTERTABLE.strCustName))'
		END
		ELSE
		BEGIN
			SET @Query += ' ORDER BY '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm,'
			SET @Query += ' ISNULL(tblCustomers.intDept, 0), tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName))'
		END
	END

	SET @Query += ''

	EXEC sp_Executesql @Query
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustAgedWithHomeAmountDetailReportDataUsingParameter] (
	@IsOptFilterByCustomer BIT
	,@IsOptFilterByCategory BIT
	,@IsOptFilterBySalesPersons BIT
	,@IsOptFilterByDept BIT
	,@IsChkGroupByTerms BIT
	,@IsOptAll BIT
	,@SQCustomer VARCHAR(max)
	,@blnBPToolsMode BIT
	,@IsOptSortNumber BIT
	,@SQUserName NVARCHAR(MAX)
	,@SQstrTerm VARCHAR(100)
	,@SQAsAt VARCHAR(19)
	,@SQPaidIn VARCHAR(19)
	,@IsOptNetValue BIT
	,@SQintTransType VARCHAR(5)
	,@SQCriteria NVARCHAR(MAX)
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)

	SET @Query = ''

	IF (@IsOptFilterByCustomer = 1)
	BEGIN
		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, cast(1 as tinyint) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, '''' as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '
		END
		ELSE
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += ' tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, '''' as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '
		END

		IF (@blnBPToolsMode = 0)
		BEGIN
			SET @Query += ' (tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))) '
		END

		SET @Query += ' AND (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''')) '

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
		SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '

		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteJournalDate, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, cast(1 as tinyint) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, '''' as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

			IF (@blnBPToolsMode = 0)
			BEGIN
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND '
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteJournalDate, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' MASTERTABLE.strOrdDocID as JEDocID,MASTERTABLE.dteRequired AS DueDate,cast(1 as tinyint) AS TransType,cast(1 as tinyint) AS intTransType,cast(0 as bigint) AS lngCustTrID,MASTERTABLE.decTotal AS decAmount,MASTERTABLE.dteJournalDate as JournalDate,MASTERTABLE.dteJournalDate,'''' as Grouping, MASTERTABLE.strReference AS strInvDepNumber FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

			IF (@blnBPToolsMode = 0)
			BEGIN
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND '
			END

			SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '
		END
		ELSE
		BEGIN
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term, '
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, '''' as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '

			IF (@blnBPToolsMode = 0)
			BEGIN
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND '
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''')) '

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' MASTERTABLE.strOrdDocID as JEDocID,MASTERTABLE.dteRequired AS DueDate,cast(1 as tinyint) AS TransType,cast(1 as tinyint) AS intTransType,cast(0 as bigint) AS lngCustTrID,MASTERTABLE.decTotal AS decAmount, MASTERTABLE.dteJournalDate as JournalDate,MASTERTABLE.dteJournalDate,'''' as Grouping, MASTERTABLE.strReference AS InvDepNumber FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

			IF (@blnBPToolsMode = 0)
			BEGIN
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND '
			END

			SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
		END

		SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '
	END

	IF (@IsOptFilterByCategory = 1)
	BEGIN
		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, cast(1 as tinyint) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL(tblCustomers.strCustCategory, '''') AS Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '
		END
		ELSE
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL (tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL(tblCustomers.strCustCategory, '''') AS Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber,tblCustomers.strCustCategory FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '
		END

		IF (@IsOptAll = 0)
			SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND '
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND '
		END

		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''')) '

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
		SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '

		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, cast(1 as tinyint) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL(tblCustomers.strCustCategory, '''') AS Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

			IF (@IsOptAll = 0)
				SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND '
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND '
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) , tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' MASTERTABLE.strOrdDocID as JEDocID,MASTERTABLE.dteRequired AS DueDate,cast(1 as tinyint) AS TransType,cast(1 as tinyint) AS intTransType,cast(0 as bigint) AS lngCustTrID,MASTERTABLE.decTotal AS decAmount, MASTERTABLE.dteJournalDate as JournalDate,MASTERTABLE.dteJournalDate,ISNULL(tblCustomers.strCustCategory, '''') as Grouping, MASTERTABLE.strReference AS InvDepNumber,tblCustomers.strCustCategory FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

			IF (@IsOptAll = 0)
				SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND '
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND '
			END

			SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory, strInvDepNumber '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' strCustCategory, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' strCustCategory, tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID'
			END
		END
		ELSE
		BEGIN
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL(tblCustomers.strCustCategory, '''') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber , tblCustomers.strCustCategory FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '

			IF (@IsOptAll = 0)
				SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND '
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND '
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''')) '

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' MASTERTABLE.strOrdDocID as JEDocID,MASTERTABLE.dteRequired AS DueDate,cast(1 as tinyint) AS TransType,cast(1 as tinyint) AS intTransType,cast(0 as bigint) AS lngCustTrID, MASTERTABLE.decTotal AS decAmount, MASTERTABLE.dteJournalDate as JournalDate,MASTERTABLE.dteJournalDate,ISNULL(tblCustomers.strCustCategory, '''') as Grouping, MASTERTABLE.strReference AS InvDepNumber,tblCustomers.strCustCategory FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

			IF (@IsOptAll = 0)
				SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND '
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND '
			END

			SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += 'tblCustomers.strCustCategory, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' tblCustomers.strCustCategory, tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
		END
	END

	IF (@IsOptFilterBySalesPersons = 1)
	BEGIN
		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, cast(1 as tinyint) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE '
		END
		ELSE
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '
		END

		IF (@IsOptAll = 0)
			SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ') AND '
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND '
		END

		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
		SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '

		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, cast(1 as tinyint) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE '

			IF (@IsOptAll = 0)
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ') AND '
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND '
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' MASTERTABLE.strOrdDocID as JEDocID,MASTERTABLE.dteRequired AS DueDate,cast(1 as tinyint) AS TransType,cast(1 as tinyint) AS intTransType,cast(0 as bigint) AS lngCustTrID,MASTERTABLE.decTotal AS decAmount, MASTERTABLE.dteJournalDate as JournalDate,MASTERTABLE.dteJournalDate,ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, MASTERTABLE.strReference AS InvDepNumber FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE '

			IF (@IsOptAll = 0)
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ') AND '
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND '
			END

			SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), tblCustomers.strCustDesc,LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID'
			END
		END
		ELSE
		BEGIN
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteJournalDate, tblCustTransDT.dteJournalDate, tblCustomerSales.strSalesName, tblCustTransDT.lngCustPayID, tblCustPay.strComment, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '

			IF (@IsOptAll = 0)
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'')IN (' + @SQCustomer + ')) AND '
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND '
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteJournalDate, tblCustTransDT.dteJournalDate, tblCustomerSales.strSalesName, tblCustTransDT.lngCustPayID, tblCustPay.strComment, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' MASTERTABLE.strOrdDocID as JEDocID,MASTERTABLE.dteRequired AS DueDate,cast(1 as tinyint) AS TransType,cast(1 as tinyint) AS intTransType,cast(0 as bigint) AS lngCustTrID,MASTERTABLE.decTotal AS decAmount, MASTERTABLE.dteJournalDate as JournalDate,MASTERTABLE.dteJournalDate,ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, MASTERTABLE.strReference AS InvDepNumber FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE '

			IF (@IsOptAll = 0)
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'')IN (' + @SQCustomer + ')) AND '
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND '
			END

			SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
		END
	END

	IF (@IsOptFilterByDept = 1)
	BEGIN
		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, cast(1 as tinyint) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '
		END
		ELSE
		BEGIN
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteJournalDate, tblCustTransDT.dteJournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') AS strDepartment, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber, ISNULL(tblCustomers.intDept, 0) FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE ' 
		END

		IF (@IsOptAll = 0)
			SET @Query += ' ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND '
		ELSE
			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

		IF @SQstrTerm <> 'All'
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> ''
			SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
		SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '

		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteJournalDate, tblCustomers.intDept, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, cast(1 as tinyint) AS intTransType, tblCustTransDT.lngCustTrID, SUM(tblCustTransDT.decAmount) AS decAmount, MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

			IF (@IsOptAll = 0)
				SET @Query += ' ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND '
			ELSE
				SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + ''')) '

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '
			SET @Query += ' GROUP BY MASTERTABLE.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, MASTERTABLE.dteJournalDate, tblCustomers.intDept, strInvDepNumber '
			SET @Query += ' UNION ALL'
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' MASTERTABLE.strOrdDocID as JEDocID,MASTERTABLE.dteRequired AS DueDate,cast(1 as tinyint) AS TransType,cast(1 as tinyint) AS intTransType,cast(0 as bigint) AS lngCustTrID,MASTERTABLE.decTotal AS decAmount, MASTERTABLE.dteJournalDate as JournalDate,MASTERTABLE.dteJournalDate,ISNULL((SELECT CAST(tblDepartments.intDept AS NVARCHAR(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept), ''<<No Department>>'') as Grouping, MASTERTABLE.strReference AS InvDepNumber, ISNULL(tblCustomers.intDept, 0) FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

			IF (@IsOptAll = 0)
				SET @Query += ' ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND '
			ELSE
				SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' strDepartment, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' strDepartment, tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID'
			END
		END
		ELSE
		BEGIN
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount, MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber, ISNULL(tblCustomers.intDept, 0) FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '

			IF (@IsOptAll = 0)
				SET @Query += ' ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND '
			ELSE
				SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= ''' + @SQPaidIn + '''))'

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' MASTERTABLE.strOrdDocID as JEDocID,MASTERTABLE.dteRequired AS DueDate,cast(1 as tinyint) AS TransType,cast(1 as tinyint) AS intTransType,cast(0 as bigint) AS lngCustTrID,MASTERTABLE.decTotal AS decAmount ,MASTERTABLE.dteJournalDate as JournalDate,MASTERTABLE.dteJournalDate,ISNULL((SELECT CAST(tblDepartments.intDept AS NVARCHAR(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept), ''<<No Department>>'') as Grouping, MASTERTABLE.strReference AS InvDepNumber,ISNULL(tblCustomers.intDept, 0) FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

			IF (@IsOptAll = 0)
				SET @Query += ' ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND '
			ELSE
				SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '

			IF @SQstrTerm <> 'All'
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> ''
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''' '
			SET @Query += ' AND LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''', '','')) '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomers.intDept, 0), LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomers.intDept, 0), tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
		END
	END

	SET @Query += ''

	EXEC sp_Executesql @Query
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustAgedWithForeignAmountSummaryReportDataUsingParameter](
@IsOptFilterByCustomer bit,
@IsOptFilterByCategory bit,
@IsOptFilterBySalesPersons bit,
@IsOptFilterByDept bit,
@IsChkGroupByTerms bit,
@IsOptAll bit,
@SQCustomer varchar(max),
@blnBPToolsMode bit,
@IsOptSortNumber bit,
@SQUserName NVARCHAR(MAX),
@SQstrTerm varchar(100),
@SQAsAt varchar(19),
@SQPaidIn varchar(19)
)  
AS  
BEGIN  
Declare @Query as NVARCHAR(max)    
SET  @Query = ''
IF(@IsOptFilterByCustomer = 1)
BEGIN
SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '
IF (@IsChkGroupByTerms = 1)    
SET @Query += 'tblCustomers.strTerm as Term,'
ELSE
SET @Query += ''''' as Term,'
SET @Query += ' MASTERTABLE.dteDueDate as DueDate, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, 
tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate, 
'''' as Grouping FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) 
INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'
IF(@IsOptAll = 0)
SET @Query += ' (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (' + @SQCustomer + ')) AND'
ELSE 
BEGIN 
IF(@blnBPToolsMode = 0)
SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'  
END
IF @SQstrTerm  <> '' AND Len(@SQstrTerm) >0 AND @SQstrTerm  <> 'All'
SET @Query += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND'
SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= '''+@SQAsAt+''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= '''+@SQPaidIn+''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate'
SET @Query += ' UNION ALL '
SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc  as CustDesc, '
IF(@IsChkGroupByTerms = 1)
SET @Query += 'tblCustomers.strTerm as Term,'
ELSE
SET @Query += ''''' as Term,'
SET @Query += '  MASTERTABLE.dteDueDate as DueDate, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, 
tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate, '''' as Grouping FROM 
tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON 
MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'
IF(@IsOptAll = 0)
SET @Query += ' (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (' + @SQCustomer + ')) AND'
ELSE 
BEGIN 
IF(@blnBPToolsMode = 0)
SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
IF @SQstrTerm  <> '' AND Len(@SQstrTerm) >0 AND @SQstrTerm  <> 'All'
SET @Query += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND'
SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= '''+@SQAsAt+''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= '''+@SQPaidIn+''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate'
SET @Query += ' UNION ALL '
SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc  as CustDesc, '
IF(@IsChkGroupByTerms = 1)
SET @Query += 'tblCustomers.strTerm as Term,'
ELSE
SET @Query += ''''' as Term,'
SET @Query += ' MASTERTABLE.dteRequired as DueDate,CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal ELSE MASTERTABLE.decTotalF END as decAmount,tblCustomers.strCurrency ,
(SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency),MASTERTABLE.dteJournalDate as JournalDate,'''' as Grouping FROM tblOrderDoc MASTERTABLE INNER JOIN 
tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE  '
IF(@IsOptAll = 0)
SET @Query += ' (LTRIM(RTRIM(MASTERTABLE.strCustName)) IN (' + @SQCustomer + ')) AND'
ELSE 
BEGIN 
IF(@blnBPToolsMode = 0)
SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
IF @SQstrTerm  <> '' AND Len(@SQstrTerm) >0 AND @SQstrTerm  <> 'All'
SET @Query += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND'
SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND 
(MASTERTABLE.dteJournalDate <= '''+@SQAsAt+''') '
IF(@IsOptSortNumber = 1)
BEGIN
SET @Query += ' ORDER BY tblCustomers.strCurrency, ' 
IF(@IsChkGroupByTerms = 1)
SET @Query += 'tblCustomers.strTerm,'
SET @Query += ' LTRIM(RTRIM(MASTERTABLE.strCustName))'
END
ELSE
BEGIN
SET @Query += ' ORDER BY tblCustomers.strCurrency, ' 
IF(@IsChkGroupByTerms = 1)
SET @Query += 'tblCustomers.strTerm,'
SET @Query += ' tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName))'
END
END
ELSE IF(@IsOptFilterByCategory = 1)
BEGIN
SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '
IF (@IsChkGroupByTerms = 1)    
SET @Query += 'tblCustomers.strTerm as Term,'
ELSE
SET @Query += ''''' as Term,'
SET @Query += '  MASTERTABLE.dteDueDate as DueDate, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, 
tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate, 
ISNULL(tblCustomers.strCustCategory, '''') as Grouping ,tblCustomers.strCustCategory FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'
IF(@IsOptAll = 0)
SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
ELSE 
BEGIN 
IF(@blnBPToolsMode = 0)
SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
IF @SQstrTerm  <> '' AND Len(@SQstrTerm) >0 AND @SQstrTerm  <> 'All'
SET @Query += ' tblCustomers.strTerm = ''%'+ @SQstrTerm + '%'' AND'
SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= '''+@SQAsAt+''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= '''+@SQPaidIn+''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory'
SET @Query += ' UNION ALL '
SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '
IF(@IsChkGroupByTerms = 1)
SET @Query += 'tblCustomers.strTerm as Term,'
ELSE
SET @Query += ''''' as Term,'
SET @Query += '  MASTERTABLE.dteDueDate as DueDate, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, 
tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate  as JournalDate, 
ISNULL(tblCustomers.strCustCategory, '''') as Grouping ,tblCustomers.strCustCategory FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'
IF(@IsOptAll = 0)
SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
ELSE 
BEGIN 
IF(@blnBPToolsMode = 0)
SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
IF @SQstrTerm  <> '' AND Len(@SQstrTerm) >0 AND @SQstrTerm  <> 'All'
SET @Query += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND'
SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= '''+@SQAsAt+''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= '''+@SQPaidIn+''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory'
SET @Query += ' UNION ALL '
SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '
IF(@IsChkGroupByTerms = 1)
SET @Query += 'tblCustomers.strTerm as Term,'
ELSE
SET @Query += ''''' as Term,'
SET @Query += '  MASTERTABLE.dteRequired as DueDate,CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal ELSE MASTERTABLE.decTotalF END as decAmount ,tblCustomers.strCurrency ,
(SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency),MASTERTABLE.dteJournalDate as JournalDate,ISNULL(tblCustomers.strCustCategory, '''') as Grouping,tblCustomers.strCustCategory FROM 
tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '
IF(@IsOptAll = 0)
SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
ELSE 
BEGIN 
IF(@blnBPToolsMode = 0)
SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
IF @SQstrTerm  <> '' AND Len(@SQstrTerm) >0 AND @SQstrTerm  <> 'All'
SET @Query += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND'
SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND 
(MASTERTABLE.dteJournalDate <= '''+@SQAsAt+''') '
IF(@IsOptSortNumber = 1)
BEGIN
SET @Query += ' ORDER BY tblCustomers.strCurrency, ' 
IF(@IsChkGroupByTerms = 1)
SET @Query += 'tblCustomers.strTerm,'
SET @Query += ' tblCustomers.strCustCategory, LTRIM(RTRIM(MASTERTABLE.strCustName))'
END
ELSE
BEGIN
SET @Query += '  ORDER BY tblCustomers.strCurrency, ' 
IF(@IsChkGroupByTerms = 1)
SET @Query += 'tblCustomers.strTerm,'
SET @Query += 'tblCustomers.strCustCategory, tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName))'
END
END
ELSE IF(@IsOptFilterBySalesPersons = 1)
BEGIN
SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '
IF (@IsChkGroupByTerms = 1)    
SET @Query += 'tblCustomers.strTerm as Term,'
ELSE
SET @Query += ''''' as Term,'
SET @Query += '  MASTERTABLE.dteDueDate as DueDate, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, 
tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate, 
ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'')  as Grouping, tblCustomerSales.strSalesName FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON 
LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID LEFT JOIN 
tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE'
IF(@IsOptAll = 0)
SET @Query += ' (ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ')) AND'
ELSE 
BEGIN 
IF(@blnBPToolsMode = 0)
SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
IF @SQstrTerm  <> '' AND Len(@SQstrTerm) >0 AND @SQstrTerm  <> 'All'
SET @Query += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND'
SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= '''+@SQAsAt+''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= '''+@SQPaidIn+''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName '
SET @Query += ' UNION ALL '
SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '
IF(@IsChkGroupByTerms = 1)
SET @Query += 'tblCustomers.strTerm as Term,'
ELSE
SET @Query += ''''' as Term,'
SET @Query += '  MASTERTABLE.dteDueDate as DueDate, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, 
tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate, 
ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, tblCustomerSales.strSalesName FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON 
LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE'
IF(@IsOptAll = 0)
SET @Query += ' (ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ')) AND'
ELSE 
BEGIN 
IF(@blnBPToolsMode = 0)
SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
IF @SQstrTerm  <> '' AND Len(@SQstrTerm) >0 AND @SQstrTerm  <> 'All'
SET @Query += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND'
SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= '''+@SQAsAt+''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= '''+@SQPaidIn+''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName'
SET @Query += ' UNION ALL '
SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '
IF(@IsChkGroupByTerms = 1)
SET @Query += 'tblCustomers.strTerm as Term,'
ELSE
SET @Query += ''''' as Term,'
SET @Query += ' MASTERTABLE.dteRequired as DueDate,CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal ELSE MASTERTABLE.decTotalF END as decAmount,tblCustomers.strCurrency,
(SELECT strCurrName FROM tblCurrency	WHERE strCurrency = tblCustomers.strCurrency),MASTERTABLE.dteJournalDate as JournalDate,ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping,
tblCustomerSales.strSalesName FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN 
tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE '
IF(@IsOptAll = 0)
SET @Query += ' (ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ')) AND'
ELSE 
BEGIN 
IF(@blnBPToolsMode = 0)
SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
IF @SQstrTerm  <> '' AND Len(@SQstrTerm) >0 AND @SQstrTerm  <> 'All'
SET @Query += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND'
SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= '''+@SQAsAt+''') '
IF(@IsOptSortNumber = 1)
BEGIN
SET @Query += ' ORDER BY tblCustomers.strCurrency, ' 
IF(@IsChkGroupByTerms = 1)
SET @Query += 'tblCustomers.strTerm,'
SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomerSales.strSalesName'
END
ELSE
BEGIN
SET @Query += ' ORDER BY tblCustomers.strCurrency, ' 
IF(@IsChkGroupByTerms = 1)
SET @Query += 'tblCustomers.strTerm,'
SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomerSales.strSalesName'
END
END
ELSE IF(@IsOptFilterByDept = 1)
BEGIN
SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '
IF (@IsChkGroupByTerms = 1)    
SET @Query += 'tblCustomers.strTerm as Term,'
ELSE
SET @Query += ''''' as Term,'
SET @Query += '  MASTERTABLE.dteDueDate as DueDate, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, 
tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate, 
ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments 
WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') as Grouping, ISNULL(tblCustomers.intDept, 0) FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers 
ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'
IF(@IsOptAll = 0)
SET @Query += ' (ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'
ELSE 
IF @SQstrTerm  <> '' AND Len(@SQstrTerm) >0 AND @SQstrTerm  <> 'All'
SET @Query += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND'
SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= '''+@SQAsAt+''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= '''+@SQPaidIn+''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomers.intDept'
SET @Query += ' UNION ALL '
SET @Query += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '
IF(@IsChkGroupByTerms = 1)
SET @Query += 'tblCustomers.strTerm as Term,'
ELSE
SET @Query += ''''' as Term,'
SET @Query += '  MASTERTABLE.dteDueDate as DueDate, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, 
tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate, 
ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments 
WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'')  as Grouping, ISNULL(tblCustomers.intDept, 0) FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'
IF(@IsOptAll = 0)
SET @Query += ' (ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'
IF @SQstrTerm  <> '' AND Len(@SQstrTerm) >0 AND @SQstrTerm  <> 'All'
SET @Query += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND'
SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= '''+ @SQAsAt + ''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= '''+@SQPaidIn+''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomers.intDept '
SET @Query += ' UNION ALL '
SET @Query += ' SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) as CustName, tblCustomers.strCustDesc as CustDesc, '
IF(@IsChkGroupByTerms = 1)
SET @Query += 'tblCustomers.strTerm as Term,'
ELSE
SET @Query += ''''' as Term,'
SET @Query += ' MASTERTABLE.dteRequired as DueDate,CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal	ELSE MASTERTABLE.decTotalF END as decAmount,tblCustomers.strCurrency ,
(SELECT strCurrName FROM tblCurrency	WHERE strCurrency = tblCustomers.strCurrency),MASTERTABLE.dteJournalDate as JournalDate,ISNULL((SELECT 
CAST(tblDepartments.intDept AS NVARCHAR(4)) + '' '' + tblDepartments.strDesc	FROM tblDepartments	WHERE tblDepartments.intDept = tblCustomers.intDept), ''<<No Department>>'') as Grouping,
ISNULL(tblCustomers.intDept, 0) FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '
IF(@IsOptAll = 0)
SET @Query += ' (ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'
IF @SQstrTerm  <> '' AND Len(@SQstrTerm) >0 AND @SQstrTerm  <> 'All'
SET @Query += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND'
SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND 
(MASTERTABLE.dteJournalDate <= '''+@SQAsAt+''') '
IF(@IsOptSortNumber = 1)
BEGIN
SET @Query += ' ORDER BY tblCustomers.strCurrency, ' 
IF(@IsChkGroupByTerms = 1)
SET @Query += 'tblCustomers.strTerm,'
SET @Query += ' ISNULL(tblCustomers.intDept, 0), LTRIM(RTRIM(MASTERTABLE.strCustName))'
END
ELSE
BEGIN
SET @Query += ' ORDER BY tblCustomers.strCurrency, ' 
IF(@IsChkGroupByTerms = 1)
SET @Query += 'tblCustomers.strTerm,'
SET @Query += ' ISNULL(tblCustomers.intDept, 0), tblCustomers.strCustDesc, LTRIM(RTRIM(MASTERTABLE.strCustName))'
END
END
SET @Query +=''
EXEC sp_Executesql @Query  
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustAgedWithForeignAmountDetailReportDataUsingParameter] (
	@IsOptFilterByCustomer BIT
	,@IsOptFilterByCategory BIT
	,@IsOptFilterBySalesPersons BIT
	,@IsOptFilterByDept BIT
	,@IsChkGroupByTerms BIT
	,@IsOptAll BIT
	,@SQCustomer VARCHAR(max)
	,@blnBPToolsMode BIT
	,@IsOptSortNumber BIT
	,@SQUserName NVARCHAR(MAX)
	,@SQstrTerm VARCHAR(100)
	,@SQAsAt VARCHAR(19)
	,@SQPaidIn VARCHAR(19)
	,@IsOptNetValue BIT
	,@SQintTransType VARCHAR(10)
	,@SQCriteria NVARCHAR(MAX)
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)

	SET @Query = ''

	IF (@IsOptFilterByCustomer = 1)
	BEGIN
		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += 'SELECT tblCustomers.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, cast(1 as tinyint) AS intTransType, tblCustTransDT.lngCustTrID,SUM(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END) AS decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, '''' as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE'
		END
		ELSE
		BEGIN
			SET @Query += 'SELECT tblCustomers.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency),MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, '''' as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'
		END

		IF (@blnBPToolsMode = 0)
		BEGIN
			SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))'

		IF @SQstrTerm <> ''
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> 'All'
			SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
		SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '

		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += ' GROUP BY tblCustomers.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, MASTERTABLE.dteJournalDate, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT tblCustomers.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, cast(1 as tinyint) AS intTransType, tblCustTransDT.lngCustTrID, SUM(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END) AS decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, '''' as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE'

			IF (@blnBPToolsMode = 0)
			BEGIN
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))'

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '
			SET @Query += ' GROUP BY tblCustomers.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, MASTERTABLE.dteJournalDate, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT tblCustomers.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' MASTERTABLE.strOrdDocID as JEDocID,MASTERTABLE.dteRequired AS DueDate,cast(1 as tinyint) AS TransType,cast(1 as tinyint) AS intTransType,cast(0 as bigint) AS lngCustTrID,CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal ELSE MASTERTABLE.decTotalF END AS decAmount,tblCustomers.strCurrency,(SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate,MASTERTABLE.dteJournalDate ,'''' as Grouping, MASTERTABLE.strReference AS strInvDepNumber FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

			IF (@blnBPToolsMode = 0)
			BEGIN
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '
		END
		ELSE
		BEGIN
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT tblCustomers.strCustName, tblCustomers.strCustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency),MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, '''' as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE '

			IF (@blnBPToolsMode = 0)
			BEGIN
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))'

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT tblCustomers.strCustName, tblCustomers.strCustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' MASTERTABLE.strOrdDocID as JEDocID,MASTERTABLE.dteRequired AS DueDate,cast(1 as tinyint) AS TransType,cast(1 as tinyint) AS intTransType,cast(0 as bigint) AS lngCustTrID,CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal ELSE MASTERTABLE.decTotalF END AS decAmount,tblCustomers.strCurrency,(SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate,MASTERTABLE.dteJournalDate,'''' as Grouping, MASTERTABLE.strReference AS strInvDepNumber FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

			IF (@blnBPToolsMode = 0)
			BEGIN
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '
		END
	END

	IF (@IsOptFilterByCategory = 1)
	BEGIN
		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += 'SELECT tblCustomers.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, cast(1 as tinyint) AS intTransType, tblCustTransDT.lngCustTrID, SUM(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END) AS decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency) , MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL(tblCustomers.strCustCategory,'''') as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE'
		END
		ELSE
		BEGIN
			SET @Query += 'SELECT tblCustomers.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL(tblCustomers.strCustCategory,'''') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber, tblCustomers.strCustCategory FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'
		END

		IF (@IsOptAll = 0)
			SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))'

		IF @SQstrTerm <> ''
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> 'All'
			SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
		SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '

		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += ' GROUP BY tblCustomers.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT tblCustomers.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, cast(1 as tinyint) AS intTransType, tblCustTransDT.lngCustTrID, SUM(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END) AS decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL(tblCustomers.strCustCategory,'''') as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE'

			IF (@IsOptAll = 0)
				SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))'

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '
			SET @Query += ' GROUP BY tblCustomers.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT tblCustomers.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' MASTERTABLE.strOrdDocID as JEDocID,MASTERTABLE.dteRequired AS DueDate,cast(1 as tinyint) AS TransType,cast(1 as tinyint) AS intTransType,cast(0 as bigint) AS lngCustTrID,CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal ELSE MASTERTABLE.decTotalF END AS decAmount,tblCustomers.strCurrency,( SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate,MASTERTABLE.dteJournalDate,ISNULL(tblCustomers.strCustCategory, '''') as Grouping, MASTERTABLE.strReference AS strInvDepNumber FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

			IF (@IsOptAll = 0)
				SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomers.strCustCategory,''), tblCustomers.strCustName, tblCustTransDT.lngCustTrID'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomers.strCustCategory,''), tblCustomers.strCustDesc, tblCustomers.strCustName, tblCustTransDT.lngCustTrID'
			END
		END
		ELSE
		BEGIN
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT tblCustomers.strCustName, tblCustomers.strCustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency),MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL(tblCustomers.strCustCategory,'''') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber, tblCustomers.strCustCategory FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'

			IF (@IsOptAll = 0)
				SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))'

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT tblCustomers.strCustName, tblCustomers.strCustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' MASTERTABLE.strOrdDocID as JEDocID,MASTERTABLE.dteRequired AS DueDate,cast(1 as tinyint) AS TransType,cast(1 as tinyint) AS intTransType,cast(0 as bigint) AS lngCustTrID, CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal ELSE MASTERTABLE.decTotalF END AS decAmount,tblCustomers.strCurrency,(SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate,MASTERTABLE.dteJournalDate,ISNULL(tblCustomers.strCustCategory, '''') as Grouping, MASTERTABLE.strReference AS strInvDepNumber,tblCustomers.strCustCategory FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

			IF (@IsOptAll = 0)
				SET @Query += ' (tblCustomers.strCustCategory IN (' + @SQCustomer + ')) AND'
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' tblCustomers.strCustCategory, tblCustomers.strCustName, tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' tblCustomers.strCustCategory, tblCustomers.strCustDesc, tblCustomers.strCustName, tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
		END
	END

	IF (@IsOptFilterBySalesPersons = 1)
	BEGIN
		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += 'SELECT tblCustomers.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, cast(1 as tinyint) AS intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL(tblCustomerSales.strSalesName,''<<No Sales Person>>'') as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE'
		END
		ELSE
		BEGIN
			SET @Query += 'SELECT tblCustomers.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency),MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL(tblCustomerSales.strSalesName,''<<No Sales Person>>'') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tbl Customers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'
		END

		IF (@IsOptAll = 0)
			SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ')) AND'
		ELSE
		BEGIN
			IF (@blnBPToolsMode = 0)
				SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
		END

		SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))'

		IF @SQstrTerm <> ''
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> 'All'
			SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
		SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '

		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += ' GROUP BY tblCustomers.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT tblCustomers.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, cast(1 as tinyint) AS intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL(tblCustomerSales.strSalesName,''<<No Sales Person>>'') as Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE'

			IF (@IsOptAll = 0)
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ')) AND'
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))'

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '
			SET @Query += ' GROUP BY tblCustomers.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT tblCustomers.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' MASTERTABLE.strOrdDocID as JEDocID,MASTERTABLE.dteRequired AS DueDate,cast(1 as tinyint) AS TransType,cast(1 as tinyint) AS intTransType,cast(0 as bigint) AS lngCustTrID,CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal ELSE MASTERTABLE.decTotalF END AS decAmount,tblCustomers.strCurrency,( SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate ,MASTERTABLE.dteJournalDate,ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, MASTERTABLE.strReference AS strInvDepNumber FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE '

			IF (@IsOptAll = 0)
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') IN (' + @SQCustomer + ')) AND'
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), tblCustomers.strCustName, tblCustTransDT.lngCustTrID'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), tblCustomers.strCustDesc, tblCustomers.strCustName, tblCustTransDT.lngCustTrID'
			END
		END
		ELSE
		BEGIN
			SET @Query += ' GROUP BY tblCustomers.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustTransDT.dteJournalDate, tblCustomerSales.strSalesName, tblCustTransDT.lngCustPayID, tblCustPay.strComment, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT tblCustomers.strCustName, tblCustomers.strCustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL(tblCustomerSales.strSalesName,''<<No Sales Person>>'') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'

			IF (@IsOptAll = 0)
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'')IN (' + @SQCustomer + ')) AND'
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))'

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '
			SET @Query += ' GROUP BY tblCustomers.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustTransDT.dteJournalDate, tblCustomerSales.strSalesName, tblCustTransDT.lngCustPayID, tblCustPay.strComment, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT tblCustomers.strCustName, tblCustomers.strCustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' MASTERTABLE.strOrdDocID as JEDocID,MASTERTABLE.dteRequired AS DueDate,cast(1 as tinyint) AS TransType,cast(1 as tinyint) AS intTransType,cast(0 as bigint) AS lngCustTrID,CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal ELSE MASTERTABLE.decTotalF END AS decAmount,tblCustomers.strCurrency,(SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate,MASTERTABLE.dteJournalDate,ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'') as Grouping, MASTERTABLE.strReference AS strInvDepNumber FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE '

			IF (@IsOptAll = 0)
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>'')IN (' + @SQCustomer + ')) AND'
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
					SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''')) AND'
			END

			SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), tblCustomers.strCustName, tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomerSales.strSalesName, ''<<No Sales Person>>''), tblCustomers.strCustDesc, tblCustomers.strCustName, tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
		END
	END

	IF (@IsOptFilterByDept = 1)
	BEGIN
		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += 'SELECT tblCustomers.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, cast(1 as tinyint) AS intTransType, tblCustTransDT.lngCustTrID, SUM(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END) AS decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') AS Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE'
		END
		ELSE
		BEGIN
			SET @Query += 'SELECT tblCustomers.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency),MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber, ISNULL(tblCustomers.intDept, 0) FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'
		END

		IF (@IsOptAll = 0)
			SET @Query += ' ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'
		ELSE
			SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))'

		IF @SQstrTerm <> ''
			AND Len(@SQstrTerm) > 0
			AND @SQstrTerm <> 'All'
			SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
		SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '

		IF (@IsOptNetValue = 1)
		BEGIN
			SET @Query += ' GROUP BY tblCustomers.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strInvDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, MASTERTABLE.dteJournalDate, tblCustomers.intDept, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT tblCustomers.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, cast(1 as tinyint) AS intTransType, tblCustTransDT.lngCustTrID, SUM(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END) AS decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate, MASTERTABLE.dteJournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') AS Grouping, (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) as strInvDepNumber FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE'

			IF (@IsOptAll = 0)
				SET @Query += ' ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'
			ELSE
				SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))'

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '
			SET @Query += ' GROUP BY tblCustomers.strCustName, tblCustomers.strCustDesc, tblCustomers.strTerm, CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + ''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE ISNULL(MASTERTABLE.strOrdDocID, '''') END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType, tblCustTransDT.lngCustTrID, tblCustomers.strCurrency, MASTERTABLE.dteJournalDate, tblCustomers.intDept, strInvDepNumber '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT tblCustomers.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' MASTERTABLE.strOrdDocID as JEDocID,MASTERTABLE.dteRequired AS DueDate,cast(1 as tinyint) AS TransType,cast(1 as tinyint) AS intTransType,cast(0 as bigint) AS lngCustTrID,CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal ELSE MASTERTABLE.decTotalF END AS decAmount,tblCustomers.strCurrency,(SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate,MASTERTABLE.dteJournalDate,ISNULL((SELECT CAST(tblDepartments.intDept AS NVARCHAR(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept), ''<<No Department>>'') as Grouping, MASTERTABLE.strReference AS strInvDepNumber, ISNULL(tblCustomers.intDept, 0) FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

			IF (@IsOptAll = 0)
				SET @Query += ' ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'
			ELSE
				SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' intDept, tblCustomers.strCustName, tblCustTransDT.lngCustTrID'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' intDept, tblCustomers.strCustDesc, tblCustomers.strCustName, tblCustTransDT.lngCustTrID'
			END
		END
		ELSE
		BEGIN
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT tblCustomers.strCustName, tblCustomers.strCustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' CASE WHEN MASTERTABLE.intTransType = ''' + @SQintTransType + 
				''' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '''') ELSE ISNULL(tblCustPay.strSource, '''') END END as JEDocID, MASTERTABLE.dteDueDate as DueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END as decAmount, tblCustomers.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency),MASTERTABLE.dteJournalDate as JournalDate, tblCustTransDT.dteJournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept),''<<No Department>>'') as Grouping, CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN (SELECT CT.strInvDepNumber FROM tblCustTrans CT WHERE CT.lngCustTrID = tblCustTransDT.lngCustTrID) ELSE ISNULL(tblCustPay.strComment,'''') END AS strInvDepNumber , ISNULL(tblCustomers.intDept, 0) FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON LTRIM(RTRIM(MAST ERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE'

			IF (@IsOptAll = 0)
				SET @Query += ' ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'
			ELSE
				SET @Query += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt + ''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= ''' + @SQPaidIn + ''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))'

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '
			SET @Query += ' UNION ALL '
			SET @Query += 'SELECT tblCustomers.strCustName, tblCustomers.strCustDesc, '

			IF (@IsChkGroupByTerms = 1)
				SET @Query += 'tblCustomers.strTerm as Term,'
			ELSE
				SET @Query += ''''' as Term,'

			SET @Query += ' MASTERTABLE.strOrdDocID as JEDocID,MASTERTABLE.dteRequired AS DueDate,cast(1 as tinyint) AS TransType,cast(1 as tinyint) AS intTransType,cast(0 as bigint) AS lngCustTrID,CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal ELSE MASTERTABLE.decTotalF END AS decAmount,tblCustomers.strCurrency,(SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency), MASTERTABLE.dteJournalDate as JournalDate,MASTERTABLE.dteJournalDate,ISNULL((SELECT CAST(tblDepartments.intDept AS NVARCHAR(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblCustomers.intDept), ''<<No Department>>'') as Grouping, MASTERTABLE.strReference AS strInvDepNumber,ISNULL(tblCustomers.intDept, 0) FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '

			IF (@IsOptAll = 0)
				SET @Query += ' ISNULL(tblCustomers.intDept, 0) IN (' + @SQCustomer + ')) AND'
			ELSE
				SET @Query += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= ''' + @SQAsAt + ''') '

			IF @SQstrTerm <> ''
				AND Len(@SQstrTerm) > 0
				AND @SQstrTerm <> 'All'
				SET @Query += ' AND tblCustomers.strTerm = ''' + @SQstrTerm + ''''
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCriteria + ''' , '','')) '

			IF (@IsOptSortNumber = 1)
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomers.intDept, 0), tblCustomers.strCustName, tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
			ELSE
			BEGIN
				SET @Query += ' ORDER BY tblCustomers.strCurrency, '

				IF (@IsChkGroupByTerms = 1)
					SET @Query += 'tblCustomers.strTerm,'
				SET @Query += ' ISNULL(tblCustomers.intDept, 0), tblCustomers.strCustDesc, tblCustomers.strCustName, tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType'
			END
		END
	END

	SET @Query += ''

	EXEC sp_Executesql @Query
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustomerAccrualCustData](
@IsOptSearch bit,    
@SearchText NVARCHAR(MAX),
@IsCheckedInActive bit,
@blnBPToolsMode bit,
@SQUserName NVARCHAR(MAX)    
)    
AS    
BEGIN    
IF (@IsOptSearch = 1)    
BEGIN    
IF @SearchText  <> '' AND Len(@SearchText) >0     
BEGIN
IF (@IsCheckedInActive = 1) 
SELECT strCustName AS CustomerName, strCustDesc AS Description FROM tblCustomers WHERE (strCustName LIKE '%'+@SearchText+'%' OR strCustDesc LIKE '%'+@SearchText+'%') AND ((@blnBPToolsMode = 0 AND (strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''+@SQUserName+''))))) ORDER BY strCustName
ELSE
SELECT strCustName AS CustomerName, strCustDesc AS Description FROM tblCustomers WHERE bitInactive = 0 AND (strCustName LIKE '%'+@SearchText+'%' OR strCustDesc LIKE '%'+@SearchText+'%') AND ((@blnBPToolsMode = 0 AND (strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''+@SQUserName+''))))) ORDER BY strCustName
END
ELSE
BEGIN
IF (@IsCheckedInActive = 1)
SELECT strCustName AS CustomerName, strCustDesc AS Description FROM tblCustomers WHERE ((@blnBPToolsMode = 0 AND (strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''+@SQUserName+''))))) ORDER BY strCustName
ELSE
SELECT strCustName AS CustomerName, strCustDesc AS Description FROM tblCustomers WHERE bitInactive = 0 AND ((@blnBPToolsMode = 0 AND (strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''+@SQUserName+''))))) ORDER BY strCustName
END
END
ELSE
IF (@IsCheckedInActive = 1)
SELECT strCustName AS CustomerName, strCustDesc AS Description FROM tblCustomers WHERE ((@blnBPToolsMode = 0 AND (strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''+@SQUserName+''))))) ORDER BY strCustName
ELSE
SELECT strCustName AS CustomerName, strCustDesc AS Description FROM tblCustomers WHERE bitInactive = 0 AND ((@blnBPToolsMode = 0 AND (strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''+@SQUserName+''))))) ORDER BY strCustName
END    
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustomerAccrualItemData](
@IsOptSearch bit,    
@SearchText NVARCHAR(MAX),
@IsCheckedInActive bit   
)    
AS    
BEGIN    
IF (@IsOptSearch = 1)    
BEGIN    
IF @SearchText  <> '' AND Len(@SearchText) >0     
BEGIN
IF (@IsCheckedInActive = 1) 
SELECT strPartNumber as PartNumber, strDesc as Description FROM tblInv WHERE (strPartNumber LIKE '%'+@SearchText+'%' OR strDesc LIKE '%'+@SearchText+'%') ORDER BY strPartNumber
ELSE
SELECT strPartNumber as PartNumber, strDesc as Description FROM tblInv WHERE bitInactive = 0 AND (strPartNumber LIKE '%'+@SearchText+'%' OR strDesc LIKE '%'+@SearchText+'%') ORDER BY strPartNumber
END
ELSE
BEGIN
IF (@IsCheckedInActive = 1)
SELECT strPartNumber as PartNumber, strDesc as Description FROM tblInv WHERE tblInv.bitOtherCmp = 0 ORDER BY strPartNumber
ELSE
SELECT strPartNumber as PartNumber, strDesc as Description FROM tblInv WHERE bitInactive = 0 AND tblInv.bitOtherCmp = 0 ORDER BY strPartNumber
END
END
ELSE
IF (@IsCheckedInActive = 1)
SELECT strPartNumber as PartNumber, strDesc as Description FROM tblInv WHERE tblInv.bitOtherCmp = 0 ORDER BY strPartNumber
ELSE
SELECT strPartNumber as PartNumber, strDesc as Description FROM tblInv WHERE bitInactive = 0 AND tblInv.bitOtherCmp = 0 ORDER BY strPartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustomerAccrualReportData] (
	@IsOptByCust BIT
	,@IsOptByItem BIT
	,@IsOptAllChecked BIT
	,@SQCustName VARCHAR(max)
	,@AsAtDate VARCHAR(19)
	)
AS
BEGIN
	IF (@IsOptByCust = 1)
	BEGIN
		IF (@IsOptAllChecked = 1)
		BEGIN
			SELECT tblOrderDocDA.strCustName AS CustomerName
				,tblCustomers.strCustDesc AS Description
				,tblOrderDocDA.dteJournalDate AS JournalDate
				,tblOrderDocDA.strOrdDADocID AS OrdDADocID
				,tblOrderDocDA.strOrdDocID AS OrdDocID
				,tblOrderDocDA.strReference AS Reference
				,tblOrderDocDADT.strPartNumber AS PartNumber
				,tblOrderDocDADT.strPartDesc AS PartDesc
				,tblOrderDocDADT.strLocation AS Location
				,tblOrderDocDADT.decStockDAQtyRemain AS StockQtyRemain
				,tblOrderDocDADT.strStockUnit AS StockUnit
				,CASE WHEN tblOrderDocDADT.decLineTotExc = 0 OR tblOrderDocDADT.decStockQtyRemain = 0 THEN 0 ELSE ROUND((tblOrderDocDADT.decLineTotExc / tblOrderDocDADT.decStockQtyRemain) * tblOrderDocDADT.decStockDAQtyRemain, 2) END AS LineTotExc
				,tblOrderDocDADT.decPriceEaExc AS PriceEaExc
			FROM tblOrderDocDA
			INNER JOIN tblCustomers ON tblOrderDocDA.strCustName = tblCustomers.strCustName
			INNER JOIN tblOrderDocDADT ON tblOrderDocDADT.strOrdDADocID = tblOrderDocDA.strOrdDADocID
			WHERE (tblOrderDocDA.bitCleared = 0)
				AND (tblOrderDocDA.dteJournalDate <= @AsAtDate)
			ORDER BY tblOrderDocDA.strCustName
				,tblOrderDocDA.dteJournalDate
		END
		ELSE
		BEGIN
			SELECT tblOrderDocDA.strCustName AS CustomerName
				,tblCustomers.strCustDesc AS Description
				,tblOrderDocDA.dteJournalDate AS JournalDate
				,tblOrderDocDA.strOrdDADocID AS OrdDADocID
				,tblOrderDocDA.strOrdDocID AS OrdDocID
				,tblOrderDocDA.strReference AS Reference
				,tblOrderDocDADT.strPartNumber AS PartNumber
				,tblOrderDocDADT.strPartDesc AS PartDesc
				,tblOrderDocDADT.strLocation AS Location
				,tblOrderDocDADT.decStockDAQtyRemain AS StockQtyRemain
				,tblOrderDocDADT.strStockUnit AS StockUnit
				,CASE WHEN tblOrderDocDADT.decLineTotExc = 0 OR tblOrderDocDADT.decStockQtyRemain = 0 THEN 0 ELSE ROUND((tblOrderDocDADT.decLineTotExc / tblOrderDocDADT.decStockQtyRemain) * tblOrderDocDADT.decStockDAQtyRemain, 2) END AS LineTotExc
				,tblOrderDocDADT.decPriceEaExc AS PriceEaExc
			FROM tblOrderDocDA
			INNER JOIN tblCustomers ON tblOrderDocDA.strCustName = tblCustomers.strCustName
			INNER JOIN tblOrderDocDADT ON tblOrderDocDADT.strOrdDADocID = tblOrderDocDA.strOrdDADocID
			WHERE (
					tblOrderDocDA.strCustName IN (
						SELECT *
						FROM fnSplitStringAsTable(@SQCustName, ',')
						)
					)
				AND (tblOrderDocDA.bitCleared = 0)
				AND (tblOrderDocDA.dteJournalDate <= @AsAtDate)
			ORDER BY tblOrderDocDA.strCustName
				,tblOrderDocDA.dteJournalDate
		END
	END

	IF (@IsOptByItem = 1)
	BEGIN
		IF (@IsOptAllChecked = 1)
		BEGIN
			SELECT tblOrderDocDA.strCustName AS CustomerName
				,tblCustomers.strCustDesc AS Description
				,tblOrderDocDA.dteJournalDate AS JournalDate
				,tblOrderDocDA.strOrdDADocID AS OrdDADocID
				,tblOrderDocDA.strOrdDocID AS OrdDocID
				,tblOrderDocDA.strReference AS Reference
				,tblOrderDocDADT.strPartNumber AS PartNumber
				,tblOrderDocDADT.strPartDesc AS PartDesc
				,tblOrderDocDADT.strLocation AS Location
				,tblOrderDocDADT.decStockDAQtyRemain AS StockQtyRemain
				,tblOrderDocDADT.strStockUnit AS StockUnit
				,CASE WHEN tblOrderDocDADT.decLineTotExc = 0 OR tblOrderDocDADT.decStockQtyRemain = 0 THEN 0 ELSE ROUND((tblOrderDocDADT.decLineTotExc / tblOrderDocDADT.decStockQtyRemain) * tblOrderDocDADT.decStockDAQtyRemain, 2) END AS LineTotExc
				,tblOrderDocDADT.decPriceEaExc AS PriceEaExc
			FROM tblOrderDocDA
			INNER JOIN tblCustomers ON tblOrderDocDA.strCustName = tblCustomers.strCustName
			INNER JOIN tblOrderDocDADT ON tblOrderDocDADT.strOrdDADocID = tblOrderDocDA.strOrdDADocID
			WHERE (tblOrderDocDA.bitCleared = 0)
				AND (tblOrderDocDA.dteJournalDate <= @AsAtDate)
			ORDER BY tblOrderDocDADT.strPartNumber
				,tblOrderDocDA.dteJournalDate
		END
		ELSE
		BEGIN
			SELECT tblOrderDocDA.strCustName AS CustomerName
				,tblCustomers.strCustDesc AS Description
				,tblOrderDocDA.dteJournalDate AS JournalDate
				,tblOrderDocDA.strOrdDADocID AS OrdDADocID
				,tblOrderDocDA.strOrdDocID AS OrdDocID
				,tblOrderDocDA.strReference AS Reference
				,tblOrderDocDADT.strPartNumber AS PartNumber
				,tblOrderDocDADT.strPartDesc AS PartDesc
				,tblOrderDocDADT.strLocation AS Location
				,tblOrderDocDADT.decStockDAQtyRemain AS StockQtyRemain
				,tblOrderDocDADT.strStockUnit AS StockUnit
				,CASE WHEN tblOrderDocDADT.decLineTotExc = 0 OR tblOrderDocDADT.decStockQtyRemain = 0 THEN 0 ELSE ROUND((tblOrderDocDADT.decLineTotExc / tblOrderDocDADT.decStockQtyRemain) * tblOrderDocDADT.decStockDAQtyRemain, 2) END AS LineTotExc
				,tblOrderDocDADT.decPriceEaExc AS PriceEaExc
			FROM tblOrderDocDA
			INNER JOIN tblCustomers ON tblOrderDocDA.strCustName = tblCustomers.strCustName
			INNER JOIN tblOrderDocDADT ON tblOrderDocDADT.strOrdDADocID = tblOrderDocDA.strOrdDADocID
			WHERE (
					tblOrderDocDADT.strPartNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@SQCustName, ',')
						)
					)
				AND (tblOrderDocDA.bitCleared = 0)
				AND (tblOrderDocDA.dteJournalDate <= @AsAtDate)
			ORDER BY tblOrderDocDADT.strPartNumber
				,tblOrderDocDA.dteJournalDate
		END
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARCustSalesGetCustomerData] (
	@IsOptRCSearch BIT
	,@SearchText NVARCHAR(MAX)
	,@IsCheckedInActive BIT
	,@blnBPToolsMode BIT
	,@SQUserName NVARCHAR(MAX)
	)
AS
BEGIN
	IF (@IsOptRCSearch = 1)
	BEGIN
		SELECT strCustName AS CustomerName
			,strCustDesc AS Description
		FROM tblCustomers
		WHERE (
				strCustName LIKE '%' + @SearchText + '%'
				OR strCustDesc LIKE '%' + @SearchText + '%'
				)
			AND (
				(
					@blnBPToolsMode = 0
					AND (
						strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = '' + @SQUserName + ''
									)
							)
						)
					)
				)
			AND (
				bitinactive = CASE 
					WHEN @IsCheckedInActive = 0
						THEN 0
					ELSE bitinactive
					END
				)
		ORDER BY strCustName
	END
	ELSE
	BEGIN
		SELECT strCustName AS CustomerName
			,strCustDesc AS [Description]
		FROM tblCustomers
		WHERE (
				(
					@blnBPToolsMode = 0
					AND (
						strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = '' + @SQUserName + ''
									)
							)
						)
					)
				)
			AND (
				bitinactive = CASE 
					WHEN @IsCheckedInActive = 0
						THEN 0
					ELSE bitinactive
					END
				)
		ORDER BY strCustName
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARCustSalesGetItemData](  
@IsOptAcctSets bit,   
@IsOptAllItems bit,  
@IsOptAssets bit,  
@IsOptItem bit,  
@IsOptService bit,  
@IsOptBuyout bit,       
@SearchText NVARCHAR(MAX),   
@SQUserName NVARCHAR(MAX) ,  
@IsCheckedInActive bit,  
@blnBPToolsMode bit,  
@PLInvSortDescription bit   
)    
AS    
BEGIN    
Declare @Query as NVARCHAR(max)      
Declare @IsParamExist as Bit    
IF(@IsOptAcctSets = 1)  
BEGIN  
IF(@IsCheckedInActive = 0)  
SET @Query = 'SELECT strAcctSet as PartNumber, strDesc as Description FROM tblAccountSets WHERE (blnInactive = 0)'  
ELSE  
SET @Query = 'SELECT strAcctSet as PartNumber, strDesc as Description FROM tblAccountSets'  
IF @SearchText  <> '' AND Len(@SearchText) > 0
SET @Query += ' AND (strAcctSet LIKE ''%'+@SearchText+'%'' OR strDesc LIKE ''%'+@SearchText+'%'')'  
SET @Query += ' ORDER BY strAcctSet'  
END  
IF(@IsOptAllItems = 1)  
BEGIN  
IF(@IsCheckedInActive = 0)  
SET @Query = 'SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type  FROM tblInv WHERE (bitInactive = 0) AND (intType <> 5) AND tblInv.bitOtherCmp = 0'  
ELSE  
SET @Query = 'SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (intType <> 5) AND tblInv.bitOtherCmp = 0'  
IF @SearchText  <> '' AND Len(@SearchText) > 0 
SET @Query += ' AND (strPartNumber LIKE ''%'+@SearchText+'%'' OR strDesc LIKE ''%'+@SearchText+'%'')'  
IF(@blnBPToolsMode = 0)  
SET @Query += ' AND strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''%'+ @SQUserName + '%''))'  
IF(@PLInvSortDescription = 0)  
SET @Query += ' ORDER BY strPartNumber'  
ELSE  
SET @Query += ' ORDER BY strDesc'  
END  
IF(@IsOptAssets = 1)  
BEGIN  
IF(@IsCheckedInActive = 0)  
SET @Query = 'SELECT intGLNumber as PartNumber, strDesc as Description FROM tblAccounts WHERE (bitInventory = 1) AND (bitInactive = 0)'  
ELSE  
SET @Query = 'SELECT intGLNumber as PartNumber, strDesc as Description FROM tblAccounts WHERE (bitInventory = 1)'  
IF @SearchText  <> '' AND Len(@SearchText) > 0  
SET @Query += ' AND (intGLNumber LIKE ''%'+@SearchText+'%'' OR strDesc LIKE ''%'+@SearchText+'%'')'  
SET @Query += ' ORDER BY intGLNumber'  
END  
IF(@IsOptItem = 1)  
BEGIN  
IF(@IsCheckedInActive = 0)  
SET @Query = 'SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (intType = 1) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0'  
ELSE  
SET @Query = 'SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (intType = 1) AND tblInv.bitOtherCmp = 0'  
IF @SearchText  <> '' AND Len(@SearchText) > 0 
SET @Query += ' AND (strPartNumber LIKE ''%'+@SearchText+'%'' OR strDesc LIKE ''%'+@SearchText+'%'')'  
IF(@blnBPToolsMode = 0)  
SET @Query += ' AND strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName =  ''%'+ @SQUserName + '%''))'  
IF(@PLInvSortDescription = 0)  
SET @Query += ' ORDER BY strPartNumber'  
ELSE  
SET @Query += ' ORDER BY strDesc'  
END  
IF(@IsOptService = 1)  
BEGIN  
IF(@IsCheckedInActive = 0)  
SET @Query = 'SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (intType = 4) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0'  
ELSE  
SET @Query = 'SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (intType = 4) AND tblInv.bitOtherCmp = 0'  
IF @SearchText  <> '' AND Len(@SearchText) > 0 
SET @Query += ' AND (strPartNumber LIKE ''%'+@SearchText+'%'' OR strDesc LIKE ''%'+@SearchText+'%'')'  
IF(@blnBPToolsMode = 0)  
SET @Query += ' AND strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''%'+ @SQUserName + '%''))'  
IF(@PLInvSortDescription = 0)  
SET @Query += ' ORDER BY strPartNumber'  
ELSE  
SET @Query += ' ORDER BY strDesc'  
END  
IF(@IsOptBuyout = 1)  
BEGIN  
IF(@IsCheckedInActive = 0)  
SET @Query = 'SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (intType = 11) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0'  
ELSE  
SET @Query = 'SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (intType = 11) AND tblInv.bitOtherCmp = 0'  
IF @SearchText  <> '' AND Len(@SearchText) > 0 
SET @Query += ' AND (strPartNumber LIKE ''%'+@SearchText+'%'' OR strDesc LIKE ''%'+@SearchText+'%'')'  
IF(@blnBPToolsMode = 0)  
SET @Query += ' AND strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''%'+ @SQUserName + '%''))'  
IF(@PLInvSortDescription = 0)  
SET @Query += ' ORDER BY strPartNumber'  
ELSE  
SET @Query += ' ORDER BY strDesc'  
END  
EXEC sp_Executesql @Query  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustomerSalesReportData] (
	@IsOptSummaryChecked BIT
	,@SQStart VARCHAR(19)
	,@SQEnd VARCHAR(19)
	,@IsOptAcctSets BIT
	,@SQAcctSet VARCHAR(max)
	,@IsOptAssets BIT
	,@SQGLNumber VARCHAR(max)
	,@IsOptAllItems BIT
	,@SQPartNumber VARCHAR(max)
	,@IsOptAll BIT
	,@SelectedItems BIT
	,@SQCustomer VARCHAR(max)
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)

	SET @Query = ''

	IF (@IsOptSummaryChecked = 1)
	BEGIN
		SET @Query = 'SELECT tblInvoiceDoc.strCustName as CustomerName,       
      (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblInvoiceDoc.strCustName) as Description,       
      tblInvoiceDocDT.strPartNumber as PartNumber, tblInvoiceDocDT.strPartDesc as PartDesc, COUNT(tblInvoiceDocDT.strPartNumber) as NumTrans,       
      SUM(tblInvoiceDocDT.decQty) as Qty,       
      CASE WHEN SUM(tblInvoiceDocDT.decLineTotExc) = 0 OR SUM(tblInvoiceDocDT.decQty) = 0 THEN 0 ELSE SUM(tblInvoiceDocDT.decLineTotExc) / SUM(tblInvoiceDocDT.decQty) END as UnitCost,       
      SUM(tblInvoiceDocDT.decLineTotExc) as TotalCost,
	  tblInvoiceDocDT.strUnit as Unit  
      FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID WHERE (tblInvoiceDoc.bitHistoryTrans = 0)       
      AND (tblInvoiceDoc.dteJournalDate BETWEEN ''' + @SQStart + ''' AND ''' + @SQEnd + ''')'

		IF (@IsOptAcctSets = 1)
			SET @Query += ' AND (tblInvoiceDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInvExt WHERE strAcctSet IN (SELECT * FROM fnSplitStringAsTable( @SQAcctSet ,'',''))))'
		ELSE IF (@IsOptAssets = 1)
			SET @Query += '  AND (tblInvoiceDocDT.strPartNumber IN (SELECT tblInvExt.strPartNumber FROM tblInvExt INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber       
        WHERE tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable( @SQGLNumber ,'',''))))'
		ELSE
		BEGIN
			IF (@IsOptAllItems = 1)
				SET @Query += ' AND (tblInvoiceDocDT.strPartNumber IN (SELECT Replace(Value,''@;@'','','') FROM fnSplitStringAsTable(@SQPartNumber , '','')) OR (tblInvoiceDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 5)))'
			ELSE
				SET @Query += ' AND (tblInvoiceDocDT.strPartNumber IN (SELECT Replace(Value,''@;@'','','') FROM fnSplitStringAsTable( @SQPartNumber , '','')))'
		END

		IF (@IsOptAll = 1)
			IF (@SelectedItems = 1)
				SET @Query += ' AND (tblInvoiceDoc.strCustName IN (SELECT * FROM fnSplitStringAsTable( @SQCustomer , '','')))'
		SET @Query += ' GROUP BY tblInvoiceDoc.strCustName, tblInvoiceDocDT.strPartNumber, tblInvoiceDocDT.strPartDesc, tblInvoiceDocDT.strUnit HAVING (SUM(tblInvoiceDocDT.decQty) <> 0 OR SUM(tblInvoiceDocDT.decLineTotExc) <> 0) ORDER BY tblInvoiceDoc.strCustName, tblInvoiceDocDT.strPartNumber'
	END
	ELSE
	BEGIN
		SET @Query += 'SELECT tblInvoiceDoc.strCustName as CustomerName,       
      (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblInvoiceDoc.strCustName) as Description,       
      tblInvoiceDoc.dteJournalDate as JournalDate, tblInvoiceDocDT.strPartNumber as PartNumber, tblInvoiceDocDT.strPartDesc as PartDesc,       
      tblInvoiceDoc.strInvDocID as InvDocID,       
      tblInvoiceDoc.strReference as Reference, ISNULL(tblInvoiceDoc.lngJourID,0) as lngJourID, tblInvoiceDocDT.decQty as Qty,       
      tblInvoiceDocDT.decPriceEaExc as UnitCost,       
      tblInvoiceDocDT.decLineTotExc as TotalCost,  
      tblInvoiceDocDT.strUnit as Unit  
      FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID WHERE (tblInvoiceDoc.bitHistoryTrans = 0)       
      AND (tblInvoiceDoc.dteJournalDate BETWEEN ''' + @SQStart + ''' AND ''' + @SQEnd + ''')'

		IF (@IsOptAcctSets = 1)
			SET @Query += ' AND (tblInvoiceDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInvExt WHERE strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet ,'',''))))'
		ELSE IF (@IsOptAssets = 1)
			SET @Query += '  AND (tblInvoiceDocDT.strPartNumber IN (SELECT tblInvExt.strPartNumber FROM tblInvExt INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber       
       WHERE tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable( @SQGLNumber ,'',''))))'
		ELSE
		BEGIN
			IF (@IsOptAllItems = 1)
				SET @Query += ' AND (tblInvoiceDocDT.strPartNumber IN (SELECT Replace(Value,''@;@'','','') FROM fnSplitStringAsTable(@SQPartNumber , '','')) OR (tblInvoiceDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 5)))'
			ELSE
				SET @Query += ' AND (tblInvoiceDocDT.strPartNumber IN (SELECT Replace(Value,''@;@'','','') FROM fnSplitStringAsTable( @SQPartNumber , '','')))'
		END

		SET @Query += '  AND (tblInvoiceDoc.strCustName IN (SELECT * FROM fnSplitStringAsTable(@SQCustomer, '','')))'
		SET @Query += ' ORDER BY tblInvoiceDoc.strCustName, tblInvoiceDoc.dteJournalDate, tblInvoiceDocDT.strPartNumber'
	END

	SET @Query += ''

	EXEC sp_Executesql @Query
		,N'@SQAcctSet nvarchar(max),@SQGLNumber nvarchar(max) ,@SQPartNumber nvarchar(max) ,@SQCustomer nvarchar(max) '
		,@SQAcctSet
		,@SQGLNumber
		,@SQPartNumber
		,@SQCustomer
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustomerSalesDrillDownReportData] (
	@SQStart VARCHAR(19)
	,@SQEnd VARCHAR(19)
	,@blnAcctSets BIT
	,@SQAcctSet VARCHAR(max)
	,@blnAssets BIT
	,@SQGLNumber VARCHAR(max)
	,@blnAllItems BIT
	,@SQPartNumber VARCHAR(max)
	,@SQCustomer VARCHAR(max)
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)

	SET @Query = 'SELECT tblInvoiceDoc.strCustName as CustomerName, 
(SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblInvoiceDoc.strCustName) as Description, 
tblInvoiceDoc.dteJournalDate as JournalDate, tblInvoiceDocDT.strPartNumber as PartNumber, tblInvoiceDocDT.strPartDesc as PartDesc, 
tblInvoiceDoc.strInvDocID as InvDocID, 
tblInvoiceDoc.strReference as Reference, ISNULL(tblInvoiceDoc.lngJourID,0) as lngJourID, tblInvoiceDocDT.decQty as Qty, 
tblInvoiceDocDT.decPriceEaExc as UnitCost, 
tblInvoiceDocDT.decLineTotExc as TotalCost,
tblInvoiceDocDT.strUnit as Unit
FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID WHERE (tblInvoiceDoc.bitHistoryTrans = 0) 
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''' + @SQStart + ''' AND ''' + @SQEnd + ''')'

	IF (@blnAcctSets = 1)
		SET @Query += ' AND (tblInvoiceDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInvExt WHERE strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet ,'',''))))'
	ELSE IF (@blnAssets = 1)
		SET @Query += '  AND (tblInvoiceDocDT.strPartNumber IN (SELECT tblInvExt.strPartNumber FROM tblInvExt INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
							WHERE tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable( @SQGLNumber ,'',''))))'
	ELSE
	BEGIN
		IF (@blnAllItems = 1)
			SET @Query += ' AND (tblInvoiceDocDT.strPartNumber IN (SELECT Replace(Value,''@;@'','','') FROM fnSplitStringAsTable(@SQPartNumber , '','')) OR (tblInvoiceDocDT.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE intType = 5)))'
		ELSE
			SET @Query += ' AND (tblInvoiceDocDT.strPartNumber IN (SELECT Replace(Value,''@;@'','','') FROM fnSplitStringAsTable( @SQPartNumber , '','')))'
	END

	SET @Query += '  AND (tblInvoiceDoc.strCustName IN (SELECT * FROM fnSplitStringAsTable(@SQCustomer, '','')))'
	SET @Query += ' ORDER BY tblInvoiceDoc.strCustName, tblInvoiceDoc.dteJournalDate, tblInvoiceDocDT.strPartNumber'

	EXEC sp_Executesql @Query
		,N'@SQAcctSet nvarchar(max),@SQGLNumber nvarchar(max) ,@SQPartNumber nvarchar(max) ,@SQCustomer nvarchar(max) '
		,@SQAcctSet
		,@SQGLNumber
		,@SQPartNumber
		,@SQCustomer

END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustomerSalesTargetReportData](
@SQStart varchar(19),
@SQEnd varchar(19),
@blnBPToolsMode bit,
@SQUserName varchar(50)
)
AS
BEGIN
SELECT tblCustomers.strCustName as CustName, tblCustomers.strCustDesc as CustDesc, tblCustomers.strContact as Contact, 
tblCustomers.strPhone as Phone,tblCustomersT.decPeriod1 as Period1, tblCustomersT.decPeriod2 as Period2, tblCustomersT.decPeriod3  as Period3, 
tblCustomersT.decPeriod4  as Period4, tblCustomersT.decPeriod5 as Period5,tblCustomersT.decPeriod6 as Period6,
tblCustomersT.decPeriod7 as Period7, tblCustomersT.decPeriod8 as Period8, tblCustomersT.decPeriod9 as Period9, 
tblCustomersT.decPeriod10 as Period10, tblCustomersT.decPeriod11 as Period11, tblCustomersT.decPeriod12  as Period12,
(SELECT ISNULL(SUM(tblInvoiceDoc.decSubTotal),0) FROM tblInvoiceDoc WHERE (tblInvoiceDoc.bitHistoryTrans) = 0 AND (strCustName = tblCustomers.strCustName) 
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+ @SQStart +'' AND ''+ @SQEnd +'')) as Target,
(SELECT ISNULL(SUM(tblInvoiceDoc.decTotal),0) FROM tblInvoiceDoc WHERE (tblInvoiceDoc.bitHistoryTrans) = 0 
AND (strCustName = tblCustomers.strCustName) AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+ @SQStart +'' AND ''+ @SQEnd +'')) as Variance 
FROM tblCustomers 
INNER JOIN tblCustomersT ON tblCustomers.strCustName = tblCustomersT.strCustName 
WHERE (tblCustomers.bitInactive) = 0 AND ((@blnBPToolsMode = 0 AND (strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''+@SQUserName+'')))))
ORDER BY tblCustomers.strCustName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustStatSalesCustData] (
	@IsOptSearch BIT
	,@SearchText NVARCHAR(MAX)
	,@SQConsolidated VARCHAR(10)
	,@IsCheckedInActive BIT
	,@blnBPToolsMode BIT
	,@SQUserName NVARCHAR(MAX)
	)
AS
BEGIN
	IF (@IsOptSearch = 1)
	BEGIN
		IF (@IsCheckedInActive = 1)
			SELECT strCustName AS CustomerName
				,strCustDesc AS Description
			FROM tblCustomers
			WHERE (
					strCustName LIKE '%' + @SearchText + '%'
					OR strCustDesc LIKE '%' + @SearchText + '%'
					)
				AND (
					strCustName NOT IN (
						SELECT CUST1.strCustName
						FROM tblCustomers CUST1
						WHERE strParentCust IN (
								SELECT CUST2.strCustName
								FROM tblCustomers CUST2
								WHERE CUST2.intNAPrintMethod = '' + @SQConsolidated + ''
								)
						)
					)
				AND (
					(
						@blnBPToolsMode = 0
						AND (
							strCustCategory IN (
								SELECT tblCustomerCat.strCustCategory
								FROM tblCustomerCat
								LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
								WHERE ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) > 0
										AND tblCustomerCatSec.strUserName = '' + @SQUserName + ''
										)
								)
							)
						)
					)
			ORDER BY strCustName
		ELSE
			SELECT strCustName AS CustomerName
				,strCustDesc AS Description
			FROM tblCustomers
			WHERE bitInactive = 0
				AND (
					strCustName LIKE '%' + @SearchText + '%'
					OR strCustDesc LIKE '%' + @SearchText + '%'
					)
				AND (
					strCustName NOT IN (
						SELECT CUST1.strCustName
						FROM tblCustomers CUST1
						WHERE strParentCust IN (
								SELECT CUST2.strCustName
								FROM tblCustomers CUST2
								WHERE CUST2.intNAPrintMethod = '' + @SQConsolidated + ''
								)
						)
					)
				AND (
					(
						@blnBPToolsMode = 0
						AND (
							strCustCategory IN (
								SELECT tblCustomerCat.strCustCategory
								FROM tblCustomerCat
								LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
								WHERE ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) > 0
										AND tblCustomerCatSec.strUserName = '' + @SQUserName + ''
										)
								)
							)
						)
					)
			ORDER BY strCustName
	END
	ELSE
	BEGIN
		IF (@IsCheckedInActive = 1)
			SELECT strCustName AS CustomerName
				,strCustDesc AS Description
			FROM tblCustomers
			WHERE (
					strCustName NOT IN (
						SELECT CUST1.strCustName
						FROM tblCustomers CUST1
						WHERE strParentCust IN (
								SELECT CUST2.strCustName
								FROM tblCustomers CUST2
								WHERE CUST2.intNAPrintMethod = '' + @SQConsolidated + ''
								)
						)
					)
				AND (
					(
						@blnBPToolsMode = 0
						AND (
							strCustCategory IN (
								SELECT tblCustomerCat.strCustCategory
								FROM tblCustomerCat
								LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
								WHERE ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) > 0
										AND tblCustomerCatSec.strUserName = '' + @SQUserName + ''
										)
								)
							)
						)
					)
			ORDER BY strCustName
		ELSE
			SELECT strCustName AS CustomerName
				,strCustDesc AS Description
			FROM tblCustomers
			WHERE bitInactive = 0
				AND (
					strCustName NOT IN (
						SELECT CUST1.strCustName
						FROM tblCustomers CUST1
						WHERE strParentCust IN (
								SELECT CUST2.strCustName
								FROM tblCustomers CUST2
								WHERE CUST2.intNAPrintMethod = '' + @SQConsolidated + ''
								)
						)
					)
				AND (
					(
						@blnBPToolsMode = 0
						AND (
							strCustCategory IN (
								SELECT tblCustomerCat.strCustCategory
								FROM tblCustomerCat
								LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
								WHERE ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) > 0
										AND tblCustomerCatSec.strUserName = '' + @SQUserName + ''
										)
								)
							)
						)
					)
			ORDER BY strCustName
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetPricelist]
AS
BEGIN
SELECT DISTINCT tblPriceData.strPricelist  as Pricelist 
FROM tblPriceData 
INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.strPricelist = tblPriceData.strPricelist 
WHERE tblPriceData.bitInactive = 0
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetPricelistByCustName] @SQCustName varchar(100)
AS
BEGIN
SELECT strPriceList FROM tblCustomers WHERE strCustName = @SQCustName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustomerInfoByUsername](
@IsCheckedInActive bit,  
@SearchText NVARCHAR(MAX),  
@SQUserName NVARCHAR(MAX)  
)  
AS  
BEGIN  
IF (@IsCheckedInActive = 0)  
SELECT strCustName AS CustomerName, strCustDesc AS Description FROM tblCustomers WHERE (bitInactive = 0)
AND (strCustName LIKE '%'+@SearchText+'%' OR strCustDesc LIKE '%'+@SearchText+'%') AND ((Len(@SQUserName) > 0) AND (strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON  tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0  OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)  FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0  AND tblCustomerCatSec.strUserName = ''+ @SQUserName + '')))) ORDER BY strCustName
ELSE
SELECT strCustName AS CustomerName, strCustDesc AS Description FROM tblCustomers
Where (strCustName LIKE '%'+@SearchText+'%' OR strCustDesc LIKE '%'+@SearchText+'%') AND ((Len(@SQUserName) > 0) AND (strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON  tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0  OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)  FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0  AND tblCustomerCatSec.strUserName = ''+ @SQUserName + '')))) ORDER BY strCustName
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetAllItem](
@blnBPToolsMode bit,  
@PLInvSortDescription bit,
@SQUserName NVARCHAR(MAX)  
)  
AS  
BEGIN 
IF(@PLInvSortDescription = 0)
SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (bitInactive = 0) AND (intType <> 5) AND tblInv.bitOtherCmp = 0 AND ((@blnBPToolsMode = 0 AND ( strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+ @SQUserName + ''))))) ORDER BY strPartNumber
ELSE
SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (bitInactive = 0) AND (intType <> 5) AND tblInv.bitOtherCmp = 0 AND ((@blnBPToolsMode = 0 AND ( strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+ @SQUserName + ''))))) ORDER BY strDesc
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetItemsByCategory](
@IsCheckedInActive bit,
@blnBPToolsMode bit,  
@SQUserName NVARCHAR(MAX)  
)  
AS  
BEGIN 
IF (@IsCheckedInActive = 0)  
SELECT strCategory as PartNumber, strDesc as Description FROM tblInvCat WHERE (bitInactive = 0) AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+ @SQUserName + '')))))
ELSE
SELECT strCategory as PartNumber, strDesc as Description FROM tblInvCat WHERE ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+ @SQUserName + '')))))
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetItem](
@blnBPToolsMode bit,  
@PLInvSortDescription bit,
@SQUserName NVARCHAR(MAX)  
)  
AS  
BEGIN 
IF(@PLInvSortDescription = 0)
SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (intType = 1) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0  AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+ @SQUserName + ''))))) ORDER BY strPartNumber
ELSE
SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (intType = 1) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0  AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+ @SQUserName + ''))))) ORDER BY strDesc
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetItemService](
@blnBPToolsMode bit,  
@PLInvSortDescription bit,
@SQUserName NVARCHAR(MAX)  
)  
AS  
BEGIN 
IF(@PLInvSortDescription = 0)
SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (intType = 4) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0 AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+ @SQUserName + ''))))) ORDER BY strPartNumber
ELSE
SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (intType = 4) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0 AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+ @SQUserName + ''))))) ORDER BY strDesc
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetItemBuyOut](
@blnBPToolsMode bit,  
@PLInvSortDescription bit,
@SQUserName NVARCHAR(MAX)  
)  
AS  
BEGIN 
IF(@PLInvSortDescription = 0)
SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (intType = 11) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0 AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+ @SQUserName +''))))) ORDER BY strPartNumber
ELSE
SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (intType = 11) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0 AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+ @SQUserName +''))))) ORDER BY strDesc
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustPricelistByPriceID] @uidPriceBasedID uniqueidentifier
AS
BEGIN
SELECT uidPriceBasedID, dteStartDate as StartDate, dteFinishDate as FinishDate FROM tblPriceListsByDate WHERE uidPriceBasedID = @uidPriceBasedID order by dteStartDate
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptARGetCustPricelistReportData] (
	@ItemListTableType ItemListTableType READONLY
	,@OptCategory BIT
	,@chkInactiveItems BIT
	,@isSelectedItem BIT
	,@optItem BIT
	,@optService BIT
	,@optBuyOut BIT
	,@optAllItem BIT
	,@chkIncludeZeroPrices BIT
	,@SQPriceList VARCHAR(100)
	,@SQCustName VARCHAR(100)
	,@uidPriceBasedID UNIQUEIDENTIFIER
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)
	DECLARE @IsParamExist AS BIT

	--SET @Query = 'SELECT tblInv.strPartNumber as PartNumber, tblInv.strDesc as Description, tblInv.strCategory as Category, tblInvPrice.decSelling as Price, tblInv.strSellUnit as Unit,ISNULL((SELECT decDiscount FROM tblDiscountMatrix INNER JOIN tblCustomers ON tblDiscountMatrix.strCustCategory = tblCustomers.strCustCategory WHERE tblCustomers.strCustName like ''%' + @SQCustName + '%'' AND tblDiscountMatrix.strInvCategory = tblInv.strCategory), 0) AS Discount, tblInv.strSellStockUnit as SellUnit, tblInvPrice.decSelling / tblInv.decSellFromStock as PriceStockUnit FROM tblInv INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblInvPrice.uidPriceBasedID AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist WHERE (tblInvPrice.strPricelist like ''%' + @SQPriceList + '%'') AND (tblInv.bitInactive = 0) AND tblInv.bitOtherCmp = 0'
	SET @Query = 'SELECT tblInv.strPartNumber as PartNumber, tblInv.strDesc as Description, tblInv.strCategory as Category, tblInvPrice.decSelling as Price, tblInv.strSellUnit as Unit, ISNULL((SELECT decDiscount FROM tblDiscountMatrix INNER JOIN tblCustomers ON tblDiscountMatrix.strCustCategory = tblCustomers.strCustCategory WHERE tblCustomers.strCustName =  ''' + @SQCustName + ''' AND tblDiscountMatrix.strInvCategory = tblInv.strCategory), 0) AS Discount, tblInv.strSellStockUnit as SellUnit, tblInvPrice.decSelling / tblInv.decSellFromStock as PriceStockUnit FROM tblInv INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblInvPrice.uidPriceBasedID AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist WHERE (tblInvPrice.strPricelist = ''' + @SQPriceList + ''') AND (tblInv.bitInactive = 0) AND tblInv.bitOtherCmp = 0 '

	IF (@OptCategory = 1)
	BEGIN
		SET @Query += ' AND ('

		IF (@isSelectedItem = 1)
			SET @Query += 'strCategory IN (Select Item from @ItemListTableType )'
		ELSE
		BEGIN
			IF (@chkInactiveItems = 0)
				SET @Query += ' strCategory IN (SELECT strCategory FROM tblInvCat WHERE (bitInactive = 0))'
			ELSE
				SET @Query += ' strCategory IN (SELECT strCategory FROM tblInvCat)'
		END

		SET @Query += ') '
		SET @IsParamExist = 1;
	END

	IF (@optItem = 1)
	BEGIN
		SET @Query += ' AND ('

		IF (@isSelectedItem = 1)
			SET @Query += 'tblInv.strPartNumber IN (Select Item from @ItemListTableType)'
		ELSE
			SET @Query += 'tblInv.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE (intType = 1) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0)'

		SET @Query += ') '
		SET @IsParamExist = 1;
	END

	IF (@optService = 1)
	BEGIN
		SET @Query += ' AND ('

		IF (@isSelectedItem = 1)
			SET @Query += 'tblInv.strPartNumber  IN (Select Item from @ItemListTableType)'
		ELSE
			SET @Query += 'tblInv.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE (intType = 4) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0)'

		SET @Query += ') '
		SET @IsParamExist = 1;
	END

	IF (@optBuyOut = 1)
	BEGIN
		SET @Query += ' AND ('

		IF (@isSelectedItem = 1)
			SET @Query += 'tblInv.strPartNumber IN (Select Item from @ItemListTableType )'
		ELSE
			SET @Query += 'tblInv.strPartNumber IN (SELECT strPartNumber FROM tblInv WHERE (intType = 11) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0)'

		SET @Query += ') '
		SET @IsParamExist = 1;
	END

	IF (@optAllItem = 1)
	BEGIN
		IF (@isSelectedItem = 1)
		BEGIN
			SET @Query += ' AND ('
			SET @Query += 'tblInv.strPartNumber IN (Select Item from  @ItemListTableType )'
			SET @Query += ') '
		END

		SET @IsParamExist = 1;
	END

	IF (@chkIncludeZeroPrices = 0)
	BEGIN
		SET @Query += ' AND (tblInvPrice.decSelling <> 0)'
		SET @IsParamExist = 1;
	END

	SET @Query += ' AND tblPriceListsByDate.uidPriceBasedID = ''' + convert(NVARCHAR(100), @uidPriceBasedID) + ''''
	SET @Query += ' ORDER BY tblInv.strCategory, tblInv.strPartNumber'

	PRINT @Query

	EXEC sp_Executesql @Query
		,N'@ItemListTableType [ItemListTableType] READONLY'
		,@ItemListTableType = @ItemListTableType
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvAgedGetLocationData](
@IsOptSearch bit,
@SQUserName varchar(200),
@SQSearchBy varchar(200)
)
AS  
BEGIN  
IF(@IsOptSearch = 1)
SELECT tblInvLoc.strLocName, tblInvLoc.strDesc , 
ISNULL((SELECT COUNT(tblInvLocSec.strLocName) FROM tblInvLocSec WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName),0), 
ISNULL(tblInvLocSec.strUserName,'') 
FROM tblInvLoc LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName AND tblInvLocSec.strUserName = ''+@SQUserName+'' 
WHERE (tblInvLoc.strLocName LIKE '%'+@SQSearchBy+'%' OR strDesc LIKE '%'+@SQSearchBy+'%') ORDER BY tblInvLoc.strLocName
ELSE
SELECT tblInvLoc.strLocName, tblInvLoc.strDesc , 
ISNULL((SELECT COUNT(tblInvLocSec.strLocName) FROM tblInvLocSec WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName),0), 
ISNULL(tblInvLocSec.strUserName,'') 
FROM tblInvLoc LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName AND tblInvLocSec.strUserName = ''+@SQUserName+'' ORDER BY tblInvLoc.strLocName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvCAGetLocationData] (
	@IsOptSearch BIT
	,@SQUserName NVARCHAR(200)
	,@SearchText NVARCHAR(MAX)
	)
AS
BEGIN
	IF (@IsOptSearch = 1 and Len(@SearchText) > 0)
	BEGIN
			SELECT tblInvLoc.strLocName
				,tblInvLoc.strDesc
				,ISNULL((
						SELECT COUNT(tblInvLocSec.strLocName)
						FROM tblInvLocSec
						WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName
						), 0)
				,ISNULL(tblInvLocSec.strUserName, '')
			FROM tblInvLoc
			LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName
				AND tblInvLocSec.strUserName = '' + @SQUserName + ''
			WHERE (
					tblInvLoc.strLocName LIKE '%' + @SearchText + '%'
					OR strDesc LIKE '%' + @SearchText + '%'
					)
			ORDER BY tblInvLoc.strLocName
		
	END
	ELSE
		SELECT tblInvLoc.strLocName
			,tblInvLoc.strDesc
			,ISNULL((
					SELECT COUNT(tblInvLocSec.strLocName)
					FROM tblInvLocSec
					WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName
					), 0)
			,ISNULL(tblInvLocSec.strUserName, '')
		FROM tblInvLoc
		LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName
			AND tblInvLocSec.strUserName = '' + @SQUserName + ''
		ORDER BY tblInvLoc.strLocName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvCAGetItemData] (
	@IsOptAcctSets BIT
	,@IsOptAssets BIT
	,@IsOptCategory BIT
	,@IsOptItems BIT
	,@IsChkInactive BIT
	,@SearchText NVARCHAR(MAX)
	,@blnBPToolsMode BIT
	,@SQUserName VARCHAR(200)
	,@PLInvSortDescription BIT
	)
AS
BEGIN
	IF (@IsOptAcctSets = 1)
	BEGIN
		IF (@ISChkInactive = 0)
			SELECT strAcctSet AS PartNumber
				,strDesc AS Description
			FROM tblAccountSets
			WHERE (blnInactive = 0)
				AND (blnService = 0)
				AND (
					(Len(@SearchText) > 3)
					AND (
						strAcctSet LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							strAcctSet LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY strAcctSet
		ELSE
			SELECT strAcctSet AS PartNumber
				,strDesc AS Description
			FROM tblAccountSets
			WHERE (blnService = 0)
				AND (
					(Len(@SearchText) > 0)
					AND (
						strAcctSet LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							strAcctSet LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY strAcctSet
	END

	IF (@IsOptAssets = 1)
	BEGIN
		IF (@ISChkInactive = 0)
			SELECT intGLNumber AS PartNumber
				,strDesc AS Description
			FROM tblAccounts
			WHERE (bitInventory = 1)
				AND (bitInactive = 0)
				AND (
					intGLNumber NOT IN (
						SELECT DISTINCT intGLAsset
						FROM tblAccountSets
						WHERE blnBuyout = 1
						)
					)
				AND (
					(Len(@SearchText) > 0)
					AND (
						intGLNumber LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							intGLNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY intGLNumber
		ELSE
			SELECT intGLNumber AS PartNumber
				,strDesc AS Description
			FROM tblAccounts
			WHERE (bitInventory = 1)
				AND (
					intGLNumber NOT IN (
						SELECT DISTINCT intGLAsset
						FROM tblAccountSets
						WHERE blnBuyout = 1
						)
					)
				AND (
					(Len(@SearchText) > 0)
					AND (
						intGLNumber LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							intGLNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY intGLNumber
	END

	IF (@IsOptCategory = 1)
	BEGIN
		IF (@ISChkInactive = 0)
			SELECT strCategory AS PartNumber
				,strDesc AS Description
			FROM tblInvCat
			WHERE (bitInactive = 0)
				AND (
					(Len(@SearchText) > 0)
					AND (
						strCategory LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							strCategory LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					(
						@blnBPToolsMode = 0
						AND (
							strCategory IN (
								SELECT tblInvCat.strCategory
								FROM tblInvCat
								LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(tblInvCatSec.strCategory)
											FROM tblInvCatSec
											WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) > 0
										AND tblInvCatSec.strUserName = '' + @SQUserName + ''
										)
								)
							)
						)
					)
			ORDER BY strCategory
		ELSE
			SELECT strCategory AS PartNumber
				,strDesc AS Description
			FROM tblInvCat
			WHERE (
					(Len(@SearchText) > 0)
					AND (
						strCategory LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							strCategory LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					(
						@blnBPToolsMode = 0
						AND (
							strCategory IN (
								SELECT tblInvCat.strCategory
								FROM tblInvCat
								LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(tblInvCatSec.strCategory)
											FROM tblInvCatSec
											WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) > 0
										AND tblInvCatSec.strUserName = '' + @SQUserName + ''
										)
								)
							)
						)
					)
			ORDER BY strCategory
	END

	IF (@IsOptItems = 1)
	BEGIN
		IF (@PLInvSortDescription = 0)
		BEGIN
			IF (@ISChkInactive = 0)
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 1)
					AND (bitInactive = 0)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strPartNumber
			ELSE
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 1)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strPartNumber
		END
		ELSE
		BEGIN
			IF (@ISChkInactive = 0)
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 1)
					AND (bitInactive = 0)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strDesc
			ELSE
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 1)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strDesc
		END
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvCAGetCurrentReportData](
@IsOptAcctSets bit,
@IsOptAssets bit,
@IsOptCategory bit,
@IsOptItems bit,
@IsOptAll bit,
@IsOptActiveItems bit,
@IsOptInActiveItems bit,
@IsOptAllItems bit,
@SQstrLocName NVARCHAR(MAX),
@SQAcctSet NVARCHAR(MAX),
@PLInvSortDescription bit
)  
AS  
BEGIN 
IF(@IsOptAcctSets = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInv.strPartNumber , tblInv.strDesc , tblInvExt.decAvail , tblInvExt.decAlloc , tblInvExt.decOnHand , tblInvExt.decValue , tblInvExt.strLocName , tblInvExt.strAcctSet, tblInv.decLastPPUnit, tblInv.decStandardCost, tblInvExt.strAcctSet AS OrderByCol FROM tblInvExt INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber 
WHERE ( tblInv.intType = 1 ) AND ( tblInvExt.decOnHand <> 0 ) AND ( tblInvExt.strAcctSet IN ( SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',') ) ) AND ((@IsOptAll = 0) AND (tblInvExt.strLocName IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',',')))) AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1)) 
ORDER BY OrderByCol, tblInvExt.strLocName, tblInv.strPartNumber
ELSE
SELECT tblInv.strPartNumber , tblInv.strDesc , tblInvExt.decAvail , tblInvExt.decAlloc , tblInvExt.decOnHand , tblInvExt.decValue , tblInvExt.strLocName , tblInvExt.strAcctSet, tblInv.decLastPPUnit, tblInv.decStandardCost, tblInvExt.strAcctSet AS OrderByCol
 FROM tblInvExt INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber WHERE ( tblInv.intType = 1 ) AND ( tblInvExt.decOnHand <> 0 ) AND ( tblInvExt.strAcctSet IN ( SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',') ) )
  AND ((@IsOptAll = 0) AND (tblInvExt.strLocName IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',',')))) AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1)) 
  ORDER BY OrderByCol, tblInvExt.strLocName,  tblInv.strDesc
END
IF(@IsOptAssets = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInv.strPartNumber , tblInv.strDesc , tblInvExt.decAvail , tblInvExt.decAlloc , tblInvExt.decOnHand , tblInvExt.decValue , tblInvExt.strLocName , CAST(tblAccounts.intGLNumber AS VARCHAR(50)) + ' ' + tblAccounts.strDesc, tblInv.decLastPPUnit, tblInv.decStandardCost, CAST(tblAccounts.intGLNumber AS VARCHAR(50)) + ' ' + tblAccounts.strDesc AS OrderByCol FROM tblInvExt 
INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
WHERE ( tblInv.intType = 1 ) AND ( tblInvExt.decOnHand <> 0 ) AND ( tblAccounts.intGLNumber IN ( SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',') ) ) 
AND ((@IsOptAll != 1) or ((@IsOptAll = 1) AND (tblInvExt.strLocName IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))))) 
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1)) ORDER BY OrderByCol, tblInvExt.strLocName, tblInv.strPartNumber  
ELSE
SELECT tblInv.strPartNumber , tblInv.strDesc , tblInvExt.decAvail , tblInvExt.decAlloc , tblInvExt.decOnHand , tblInvExt.decValue , tblInvExt.strLocName , CAST(tblAccounts.intGLNumber AS VARCHAR(50)) + ' ' + tblAccounts.strDesc, tblInv.decLastPPUnit, tblInv.decStandardCost, CAST(tblAccounts.intGLNumber AS VARCHAR(50)) + ' ' + tblAccounts.strDesc AS OrderByCol FROM tblInvExt 
INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet 
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE ( tblInv.intType = 1 ) AND ( tblInvExt.decOnHand <> 0 ) AND ( tblAccounts.intGLNumber IN ( SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',') ) ) AND ((@IsOptAll != 1) or ((@IsOptAll = 1) AND (tblInvExt.strLocName IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))))) 
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1)) ORDER BY 
OrderByCol, tblInvExt.strLocName,  tblInv.strDesc
END
IF(@IsOptCategory = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInv.strPartNumber , tblInv.strDesc , tblInvExt.decAvail , tblInvExt.decAlloc , tblInvExt.decOnHand , tblInvExt.decValue , tblInvExt.strLocName , tblInv.strCategory, tblInv.decLastPPUnit, tblInv.decStandardCost, tblInv.strCategory AS OrderByCol 
FROM tblInvExt INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber WHERE ( tblInv.intType = 1 ) AND ( tblInvExt.decOnHand <> 0 ) AND ( strCategory IN ( SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',') ) ) AND ((@IsOptAll != 1) or ((@IsOptAll = 1) AND (tblInvExt.strLocName IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))))) 
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))  ORDER BY OrderByCol, tblInvExt.strLocName, tblInv.strPartNumber
ELSE
SELECT tblInv.strPartNumber , tblInv.strDesc , tblInvExt.decAvail , tblInvExt.decAlloc , tblInvExt.decOnHand , tblInvExt.decValue , tblInvExt.strLocName , tblInv.strCategory, tblInv.decLastPPUnit, tblInv.decStandardCost, tblInv.strCategory AS OrderByCol
 FROM tblInvExt INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber WHERE ( tblInv.intType = 1 ) AND ( tblInvExt.decOnHand <> 0 ) AND ( strCategory IN ( SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',') ) ) AND ((@IsOptAll != 1) or ((@IsOptAll = 1) AND (tblInvExt.strLocName IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))))) 
  AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))  ORDER BY OrderByCol, tblInvExt.strLocName, 
 tblInv.strDesc
END
IF(@IsOptItems = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInv.strPartNumber , tblInv.strDesc , tblInvExt.decAvail , tblInvExt.decAlloc , tblInvExt.decOnHand , tblInvExt.decValue , tblInvExt.strLocName , '', tblInv.decLastPPUnit, tblInv.decStandardCost, '' AS OrderByCol FROM tblInvExt INNER JOIN tblInv 
ON tblInvExt.strPartNumber = tblInv.strPartNumber WHERE ( tblInv.intType = 1 ) AND ( tblInvExt.decOnHand <> 0 ) AND ( tblInv.strPartNumber IN ( SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',') ) )  AND ((@IsOptAll != 1) or ((@IsOptAll = 1) AND (tblInvExt.strLocName IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))))) 
 AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))  ORDER BY OrderByCol, tblInvExt.strLocName, tblInv.strPartNumber
ELSE
SELECT tblInv.strPartNumber , tblInv.strDesc , tblInvExt.decAvail , tblInvExt.decAlloc , tblInvExt.decOnHand , tblInvExt.decValue , tblInvExt.strLocName , '', tblInv.decLastPPUnit, tblInv.decStandardCost, '' AS OrderByCol FROM tblInvExt INNER JOIN tblInv 
ON tblInvExt.strPartNumber = tblInv.strPartNumber WHERE ( tblInv.intType = 1 ) AND ( tblInvExt.decOnHand <> 0 ) AND ( tblInv.strPartNumber IN ( SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',') ) ) AND  ((@IsOptAll != 1) or ((@IsOptAll = 1) AND (tblInvExt.strLocName IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))))) 
 AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))  ORDER BY OrderByCol, tblInvExt.strLocName,  tblInv.strDesc
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvCAGetAsAtReportData](
@IsOptAcctSets bit,
@IsOptAssets bit,
@IsOptCategory bit,
@IsOptItems bit,
@IsOptAll bit,
@IsOptActiveItems bit,
@IsOptInActiveItems bit,
@IsOptAllItems bit,
@SQstrLocName NVARCHAR(MAX),
@SQAcctSet NVARCHAR(MAX),
@PLInvSortDescription bit,
@SQAsAtDate NVARCHAR(19)
)  
AS  
BEGIN 
IF(@IsOptAcctSets = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT MasterTable.strPartNumber , MasterTable.strDesc , SlaveTable.decOpenQty + ( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) , SlaveTable.decOpenValue + ( SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) , SlaveTable.strLocName , SlaveTable.strAcctSet, MasterTable.decLastPPUnit, MasterTable.decStandardCost, SlaveTable.strAcctSet AS OrderByCol FROM tblInv AS MasterTable INNER JOIN tblInvExt AS SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber WHERE ( MasterTable.intType = 1 ) AND ( SlaveTable.decOpenQty + ( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) + SlaveTable.decOpenValue + ( SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) <> 0 ) AND ( SlaveTable.strAcctSet IN ( SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',') ) ) AND ((@IsOptAll = 0) AND (SlaveTable.strLocName IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',',')))) AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(MasterTable.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(MasterTable.bitInactive = 1))  ORDER BY OrderByCol, SlaveTable.strLocName, MasterTable.strPartNumber
ELSE
SELECT MasterTable.strPartNumber , MasterTable.strDesc , SlaveTable.decOpenQty + ( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) , SlaveTable.decOpenValue + ( SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) , SlaveTable.strLocName , SlaveTable.strAcctSet, MasterTable.decLastPPUnit, MasterTable.decStandardCost, SlaveTable.strAcctSet AS OrderByCol FROM tblInv AS MasterTable INNER JOIN tblInvExt AS SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber WHERE ( MasterTable.intType = 1 ) AND ( SlaveTable.decOpenQty + ( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) + SlaveTable.decOpenValue + ( SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) <> 0 ) AND ( SlaveTable.strAcctSet IN ( SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',') ) ) AND ((@IsOptAll = 0) AND (SlaveTable.strLocName IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',',')))) AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(MasterTable.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(MasterTable.bitInactive = 1))  ORDER BY OrderByCol, SlaveTable.strLocName, MasterTable.strDesc
END
IF(@IsOptAssets = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT MasterTable.strPartNumber , MasterTable.strDesc , SlaveTable.decOpenQty + ( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) , SlaveTable.decOpenValue + ( SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) , SlaveTable.strLocName , CAST(tblAccounts.intGLNumber AS VARCHAR(50)) + ' ' + tblAccounts.strDesc, MasterTable.decLastPPUnit, MasterTable.decStandardCost, CAST(tblAccounts.intGLNumber AS VARCHAR(50)) + ' ' + tblAccounts.strDesc AS OrderByCol FROM tblInvExt SlaveTable LEFT JOIN tblInv AS MasterTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber INNER JOIN tblAccountSets ON SlaveTable.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE ( MasterTable.intType = 1 ) AND ( SlaveTable.decOpenQty + ( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) + SlaveTable.decOpenValue + ( SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) <> 0 ) AND ( tblAccounts.intGLNumber IN ( SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',') ) ) AND ((@IsOptAll = 0) AND (SlaveTable.strLocName IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',',')))) AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(MasterTable.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(MasterTable.bitInactive = 1))  ORDER BY OrderByCol, SlaveTable.strLocName, MasterTable.strPartNumber
ELSE
SELECT MasterTable.strPartNumber , MasterTable.strDesc , SlaveTable.decOpenQty + ( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) , SlaveTable.decOpenValue + ( SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) , SlaveTable.strLocName , CAST(tblAccounts.intGLNumber AS VARCHAR(50)) + ' ' + tblAccounts.strDesc, MasterTable.decLastPPUnit, MasterTable.decStandardCost, CAST(tblAccounts.intGLNumber AS VARCHAR(50)) + ' ' + tblAccounts.strDesc AS OrderByCol FROM tblInvExt SlaveTable LEFT JOIN tblInv AS MasterTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber INNER JOIN tblAccountSets ON SlaveTable.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE ( MasterTable.intType = 1 ) AND ( SlaveTable.decOpenQty + ( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) + SlaveTable.decOpenValue + ( SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) <> 0 ) AND ( tblAccounts.intGLNumber IN ( SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',') ) ) AND ((@IsOptAll = 0) AND (SlaveTable.strLocName IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',',')))) AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(MasterTable.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(MasterTable.bitInactive = 1))  ORDER BY OrderByCol, SlaveTable.strLocName, MasterTable.strDesc
END
IF(@IsOptCategory = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT MasterTable.strPartNumber , MasterTable.strDesc , SlaveTable.decOpenQty + ( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) , SlaveTable.decOpenValue + ( SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) , SlaveTable.strLocName , MasterTable.strCategory, MasterTable.decLastPPUnit, MasterTable.decStandardCost, MasterTable.strCategory AS OrderByCol FROM tblInv AS MasterTable INNER JOIN tblInvExt AS SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber WHERE ( MasterTable.intType = 1 ) AND ( SlaveTable.decOpenQty + ( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) + SlaveTable.decOpenValue + ( SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) <> 0 ) AND ( MasterTable.strCategory IN ( SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',') ) ) AND ((@IsOptAll = 0) AND (SlaveTable.strLocName IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',',')))) AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(MasterTable.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(MasterTable.bitInactive = 1))  ORDER BY OrderByCol, SlaveTable.strLocName, MasterTable.strPartNumber
ELSE
SELECT MasterTable.strPartNumber , MasterTable.strDesc , SlaveTable.decOpenQty + ( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) , SlaveTable.decOpenValue + ( SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) , SlaveTable.strLocName , MasterTable.strCategory, MasterTable.decLastPPUnit, MasterTable.decStandardCost, MasterTable.strCategory AS OrderByCol FROM tblInv AS MasterTable INNER JOIN tblInvExt AS SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber WHERE ( MasterTable.intType = 1 ) AND ( SlaveTable.decOpenQty + ( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) + SlaveTable.decOpenValue + ( SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) <> 0 ) AND ( MasterTable.strCategory IN ( SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',') ) ) AND ((@IsOptAll = 0) AND (SlaveTable.strLocName IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',',')))) AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(MasterTable.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(MasterTable.bitInactive = 1))  ORDER BY OrderByCol, SlaveTable.strLocName, MasterTable.strDesc
END
IF(@IsOptItems = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT MasterTable.strPartNumber , MasterTable.strDesc , SlaveTable.decOpenQty + ( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= ''+@SQAsAtDate+'' ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) , SlaveTable.decOpenValue + ( SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) , SlaveTable.strLocName , '' , MasterTable.decLastPPUnit, MasterTable.decStandardCost, '' AS OrderByCol FROM tblInv AS MasterTable INNER JOIN tblInvExt AS SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber WHERE ( MasterTable.intType = 1 ) AND ( SlaveTable.decOpenQty + ( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) + SlaveTable.decOpenValue + ( SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= ''+@SQAsAtDate+'' ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) <> 0 ) AND ( MasterTable.strPartNumber IN ( SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',') ) ) AND ((@IsOptAll = 0) AND (SlaveTable.strLocName IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',',')))) AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(MasterTable.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(MasterTable.bitInactive = 1))  ORDER BY OrderByCol, SlaveTable.strLocName, MasterTable.strPartNumber
ELSE
SELECT MasterTable.strPartNumber , MasterTable.strDesc , SlaveTable.decOpenQty + ( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= ''+@SQAsAtDate+'' ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) , SlaveTable.decOpenValue + ( SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) , SlaveTable.strLocName , '' , MasterTable.decLastPPUnit, MasterTable.decStandardCost, '' AS OrderByCol FROM tblInv AS MasterTable INNER JOIN tblInvExt AS SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber WHERE ( MasterTable.intType = 1 ) AND ( SlaveTable.decOpenQty + ( SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= @SQAsAtDate ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) + SlaveTable.decOpenValue + ( SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE ( tblInvTracking.dteJournalDate <= ''+@SQAsAtDate+'' ) AND ( tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber ) AND ( tblInvTrackingDT.strLocName = SlaveTable.strLocName ) ) <> 0 ) AND ( MasterTable.strPartNumber IN ( SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',') ) ) AND ((@IsOptAll = 0) AND (SlaveTable.strLocName IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',',')))) AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(MasterTable.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(MasterTable.bitInactive = 1))  ORDER BY OrderByCol, SlaveTable.strLocName, MasterTable.strDesc
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvGetLocationData] @SQUserName NVARCHAR(MAX)
AS  
BEGIN  
SELECT tblInvLoc.strLocName, 
ISNULL((SELECT COUNT(tblInvLocSec.strLocName) FROM tblInvLocSec WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName),0), ISNULL(tblInvLocSec.strUserName,'') 
FROM tblInvLoc LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName AND tblInvLocSec.strUserName = ''+@SQUserName+'' WHERE tblInvLoc.intType = 0 ORDER BY tblInvLoc.strLocName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvGetItemData]
(
    @IsOptAcctSets          bit,
    @IsOptAssets            bit,
    @IsOptCategory          bit,
    @IsOptItems             bit,
    @IsChkInactiveItems     bit,
    @SearchText             NVARCHAR(MAX),
    @blnBPToolsMode         bit,
    @SQUserName             NVARCHAR(MAX),
    @SQstrLocName           NVARCHAR(100),
    @PLInvSortDescription   bit
)
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @s NVARCHAR(MAX) = NULLIF(LTRIM(RTRIM(@SearchText)), '');

    IF (@IsOptAcctSets = 1)
    BEGIN
        IF (@IsChkInactiveItems = 0)
        BEGIN
            SELECT
                strAcctSet AS PartNumber,
                strDesc    AS Description
            FROM tblAccountSets
            WHERE blnInactive = 0
              AND blnService  = 0
              AND blnBuyout   = 0
              AND (
                    (@s IS NOT NULL AND (strAcctSet LIKE @s + '%' OR strDesc LIKE @s + '%'))
                    OR (@s IS NULL OR LEN(@s) <= 2)
                  )
            ORDER BY strAcctSet;
        END
        ELSE
        BEGIN
            SELECT
                strAcctSet AS PartNumber,
                strDesc    AS Description
            FROM tblAccountSets
            WHERE blnService  = 0
              AND (
                    (@s IS NOT NULL AND (strAcctSet LIKE @s + '%' OR strDesc LIKE @s + '%'))
                    OR (@s IS NULL OR LEN(@s) <= 2)
                  )
            ORDER BY strAcctSet;
        END
    END

    IF (@IsOptAssets = 1)
    BEGIN
        IF (@IsChkInactiveItems = 0)
        BEGIN
            SELECT
                intGLNumber AS PartNumber,
                strDesc     AS Description
            FROM tblAccounts
            WHERE bitInventory = 1
              AND bitInactive = 0
              AND (
                    (@s IS NOT NULL AND (CAST(intGLNumber AS NVARCHAR(50)) LIKE @s + '%' OR strDesc LIKE @s + '%'))
                    OR (@s IS NULL OR LEN(@s) <= 3)
                  )
            ORDER BY intGLNumber;
        END
        ELSE
        BEGIN
            SELECT
                intGLNumber AS PartNumber,
                strDesc     AS Description
            FROM tblAccounts
            WHERE bitInventory = 1
              AND (
                    (@s IS NOT NULL AND (CAST(intGLNumber AS NVARCHAR(50)) LIKE @s + '%' OR strDesc LIKE @s + '%'))
                    OR (@s IS NULL OR LEN(@s) <= 3)
                  )
            ORDER BY intGLNumber;
        END
    END

    IF (@IsOptCategory = 1)
    BEGIN
        IF (@IsChkInactiveItems = 0)
        BEGIN
            SELECT
                c.strCategory AS PartNumber,
                c.strDesc     AS Description
            FROM tblInvCat AS c
            WHERE c.bitInactive = 0
              AND (
                    (@s IS NOT NULL AND (c.strCategory LIKE @s + '%' OR c.strDesc LIKE @s + '%'))
                    OR (@s IS NULL OR LEN(@s) <= 3)
                  )
              AND (
                    @blnBPToolsMode = 1
                    OR NOT EXISTS (SELECT 1 FROM tblInvCatSec s WHERE s.strCategory = c.strCategory)
                    OR EXISTS (SELECT 1 FROM tblInvCatSec s WHERE s.strCategory = c.strCategory AND s.strUserName = @SQUserName)
                  )
            ORDER BY c.strCategory;
        END
        ELSE
        BEGIN
            SELECT
                c.strCategory AS PartNumber,
                c.strDesc     AS Description
            FROM tblInvCat AS c
            WHERE
                  (
                    (@s IS NOT NULL AND (c.strCategory LIKE @s + '%' OR c.strDesc LIKE @s + '%'))
                    OR (@s IS NULL OR LEN(@s) <= 3)
                  )
              AND (
                    @blnBPToolsMode = 1
                    OR NOT EXISTS (SELECT 1 FROM tblInvCatSec s WHERE s.strCategory = c.strCategory)
                    OR EXISTS (SELECT 1 FROM tblInvCatSec s WHERE s.strCategory = c.strCategory AND s.strUserName = @SQUserName)
                  )
            ORDER BY c.strCategory;
        END
    END

    IF (@IsOptItems = 1)
    BEGIN
        IF (@IsChkInactiveItems = 0)
        BEGIN
            IF (@PLInvSortDescription = 0)
            BEGIN
                SELECT
                    i.strPartNumber AS PartNumber,
                    i.strDesc       AS Description,
                    i.intType       AS Type
                FROM tblInv AS i
                INNER JOIN tblInvExt AS x
                    ON i.strPartNumber = x.strPartNumber
                WHERE i.intType      = 1
                  AND i.bitOtherCmp  = 0
                  AND i.bitInactive  = 0
                  AND x.strLocName   = @SQstrLocName
                  AND x.bitInactive  = 0
                  AND (
                        (@s IS NOT NULL AND (i.strPartNumber LIKE @s + '%' OR i.strDesc LIKE @s + '%'))
                        OR (@s IS NULL OR LEN(@s) <= 3)
                      )
                  AND (
                        @blnBPToolsMode = 1
                        OR NOT EXISTS (SELECT 1 FROM tblInvCatSec s WHERE s.strCategory = i.strCategory)
                        OR EXISTS (SELECT 1 FROM tblInvCatSec s WHERE s.strCategory = i.strCategory AND s.strUserName = @SQUserName)
                      )
                ORDER BY i.strPartNumber;
            END
            ELSE
            BEGIN
                SELECT
                    i.strPartNumber AS PartNumber,
                    i.strDesc       AS Description,
                    i.intType       AS Type
                FROM tblInv AS i
                INNER JOIN tblInvExt AS x
                    ON i.strPartNumber = x.strPartNumber
                WHERE i.intType      = 1
                  AND i.bitOtherCmp  = 0
                  AND i.bitInactive  = 0
                  AND x.strLocName   = @SQstrLocName
                  AND x.bitInactive  = 0
                  AND (
                        (@s IS NOT NULL AND (i.strPartNumber LIKE @s + '%' OR i.strDesc LIKE @s + '%'))
                        OR (@s IS NULL OR LEN(@s) <= 3)
                      )
                  AND (
                        @blnBPToolsMode = 1
                        OR NOT EXISTS (SELECT 1 FROM tblInvCatSec s WHERE s.strCategory = i.strCategory)
                        OR EXISTS (SELECT 1 FROM tblInvCatSec s WHERE s.strCategory = i.strCategory AND s.strUserName = @SQUserName)
                      )
                ORDER BY i.strDesc;
            END
        END
        ELSE
        BEGIN
            IF (@PLInvSortDescription = 0)
            BEGIN
                SELECT
                    i.strPartNumber AS PartNumber,
                    i.strDesc       AS Description,
                    i.intType       AS Type
                FROM tblInv AS i
                INNER JOIN tblInvExt AS x
                    ON i.strPartNumber = x.strPartNumber
                WHERE i.intType      = 1
                  AND i.bitOtherCmp  = 0
                  AND x.strLocName   = @SQstrLocName
                  AND x.bitInactive  = 0
                  AND (
                        (@s IS NOT NULL AND (i.strPartNumber LIKE @s + '%' OR i.strDesc LIKE @s + '%'))
                        OR (@s IS NULL OR LEN(@s) <= 3)
                      )
                  AND (
                        @blnBPToolsMode = 1
                        OR NOT EXISTS (SELECT 1 FROM tblInvCatSec s WHERE s.strCategory = i.strCategory)
                        OR EXISTS (SELECT 1 FROM tblInvCatSec s WHERE s.strCategory = i.strCategory AND s.strUserName = @SQUserName)
                      )
                ORDER BY i.strPartNumber;
            END
            ELSE
            BEGIN
                SELECT
                    i.strPartNumber AS PartNumber,
                    i.strDesc       AS Description,
                    i.intType       AS Type
                FROM tblInv AS i
                INNER JOIN tblInvExt AS x
                    ON i.strPartNumber = x.strPartNumber
                WHERE i.intType      = 1
                  AND i.bitOtherCmp  = 0
                  AND x.strLocName   = @SQstrLocName
                  AND x.bitInactive  = 0
                  AND (
                        (@s IS NOT NULL AND (i.strPartNumber LIKE @s + '%' OR i.strDesc LIKE @s + '%'))
                        OR (@s IS NULL OR LEN(@s) <= 3)
                      )
                  AND (
                        @blnBPToolsMode = 1
                        OR NOT EXISTS (SELECT 1 FROM tblInvCatSec s WHERE s.strCategory = i.strCategory)
                        OR EXISTS (SELECT 1 FROM tblInvCatSec s WHERE s.strCategory = i.strCategory AND s.strUserName = @SQUserName)
                      )
                ORDER BY i.strDesc;
            END
        END
    END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvGetInvCountReportData] (
	@IsOptAcctSets BIT
	,@IsOptAssets BIT
	,@IsOptCategory BIT
	,@IsOptItems BIT
	,@SQintStatus NVARCHAR(200)
	,@SQAcctSet NVARCHAR(MAX)
	,@SQstrLocName NVARCHAR(100)
	,@IsChkIncludeZeroQty BIT
	,@IsOptActiveItems BIT
	,@IsOptInactiveItems BIT
	,@PLInvSortDescription BIT
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)
	DECLARE @IsParamExist AS BIT

	SET @Query = ''

	IF (@IsOptAcctSets = 1)
	BEGIN
		SET @Query += 'SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decAvail, tblInvExt.decOnHand, (''Account Set: '' + tblAccountSets.strDesc) AS [Group], ISNULL((SELECT ST.intType FROM tblInvSerialTypes ST WHERE ST.strInvSerialType = tblInv.strInvSerialType),0), CASE WHEN ISNULL((SELECT ST.intType FROM tblInvSerialTypes ST WHERE ST.strInvSerialType = tblInv.strInvSerialType),0) = 1 THEN ISNULL((SELECT COUNT(Y.strSerialNumber) FROM (SELECT SNT.strSerialNumber FROM tblSerialNumberTracking SNT WHERE SNT.strLocation = tblInvExt.strLocName AND SNT.strPartNumber = tblInv.strPartNumber GROUP BY SNT.strPartNumber, SNT.strSerialNumber HAVING SUM(CASE WHEN SNT.intStatus = ''' + @SQintStatus + 
			''' THEN SNT.decQty ELSE SNT.decQty * -1 END) > 0) Y),0) ELSE 0 END AS LotCount, tblInvExt.strBinLoc, tblInv.strStockUnit FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocName AND (tblInv.intType = 1) INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet  WHERE (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, '','')))'
	END

	IF (@IsOptAssets = 1)
	BEGIN
		SET @Query += 'SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decAvail, tblInvExt.decOnHand, (''Asset: '' + CAST(tblAccounts.intGLNumber AS varchar(10)) + '' '' + tblAccounts.strDesc) AS [Group], ISNULL((SELECT ST.intType FROM tblInvSerialTypes ST WHERE ST.strInvSerialType = tblInv.strInvSerialType),0), CASE WHEN ISNULL((SELECT ST.intType FROM tblInvSerialTypes ST WHERE ST.strInvSerialType = tblInv.strInvSerialType),0) = 1 THEN ISNULL((SELECT COUNT(Y.strSerialNumber) FROM (SELECT SNT.strSerialNumber FROM tblSerialNumberTracking SNT WHERE SNT.strLocation = tblInvExt.strLocName AND SNT.strPartNumber = tblInv.strPartNumber GROUP BY SNT.strPartNumber, SNT.strSerialNumber HAVING SUM(CASE WHEN SNT.intStatus = ''' + @SQintStatus + 
			''' THEN SNT.decQty ELSE SNT.decQty * -1 END) > 0) Y),0) ELSE 0 END AS LotCount, tblInvExt.strBinLoc, tblInv.strStockUnit  FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocName AND (tblInv.intType = 1) INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet  INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, '','')))'
	END

	IF (@IsOptCategory = 1)
	BEGIN
		SET @Query += 'SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decAvail, tblInvExt.decOnHand, (''Category: '' + tblInvCat.strDesc) AS [Group], ISNULL((SELECT ST.intType FROM tblInvSerialTypes ST WHERE ST.strInvSerialType = tblInv.strInvSerialType),0), CASE WHEN ISNULL((SELECT ST.intType FROM tblInvSerialTypes ST WHERE ST.strInvSerialType = tblInv.strInvSerialType),0) = 1 THEN ISNULL((SELECT COUNT(Y.strSerialNumber) FROM (SELECT SNT.strSerialNumber FROM tblSerialNumberTracking SNT WHERE SNT.strLocation = tblInvExt.strLocName AND SNT.strPartNumber = tblInv.strPartNumber GROUP BY SNT.strPartNumber, SNT.strSerialNumber HAVING SUM(CASE WHEN SNT.intStatus = ''' + @SQintStatus + 
			''' THEN SNT.decQty ELSE SNT.decQty * -1 END) > 0) Y),0) ELSE 0 END AS LotCount, tblInvExt.strBinLoc, tblInv.strStockUnit FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber INNER JOIN tblInvCat ON tblInv.strCategory = tblInvCat.strCategory WHERE (tblInv.intType = 1)  AND tblInv.bitOtherCmp = 0 AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, '','')))'
	END

	IF (@IsOptItems = 1)
	BEGIN
		SET @Query += 'SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decAvail, tblInvExt.decOnHand, ''''  AS [Group], ISNULL((SELECT ST.intType FROM tblInvSerialTypes ST WHERE ST.strInvSerialType = tblInv.strInvSerialType),0), CASE WHEN ISNULL((SELECT ST.intType FROM tblInvSerialTypes ST WHERE ST.strInvSerialType = tblInv.strInvSerialType),0) = 1 THEN ISNULL((SELECT COUNT(Y.strSerialNumber) FROM (SELECT SNT.strSerialNumber FROM tblSerialNumberTracking SNT WHERE SNT.strLocation = tblInvExt.strLocName AND SNT.strPartNumber = tblInv.strPartNumber GROUP BY SNT.strPartNumber, SNT.strSerialNumber HAVING SUM(CASE WHEN SNT.intStatus = ''' + @SQintStatus + 
			''' THEN SNT.decQty ELSE SNT.decQty * -1 END) > 0) Y),0) ELSE 0 END AS LotCount, tblInvExt.strBinLoc, tblInv.strStockUnit FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber WHERE (tblInv.intType = 1)  AND tblInv.bitOtherCmp = 0 AND (tblInv.strPartNumber IN (SELECT Replace(Value,''@;@'','','') FROM fnSplitStringAsTable(@SQAcctSet, '',''))) '
	END

	SET @Query += ' AND (tblInvExt.strLocName = ''' + @SQstrLocName + ''') AND (tblInvExt.bitInactive = 0) '

	IF (@IsChkIncludeZeroQty = 0)
		SET @Query += ' AND (tblInvExt.decOnHand <> 0) '

	IF (@IsOptActiveItems = 1)
		SET @Query += ' AND tblInv.bitInactive = 0 '
	ELSE IF (@IsOptInactiveItems = 1)
		SET @Query += ' AND tblInv.bitInactive = 1 '

	IF (@PLInvSortDescription = 0)
		SET @Query += ' ORDER BY [Group], tblInvExt.strBinLoc, tblInv.strPartNumber'
	ELSE
		SET @Query += ' ORDER BY [Group], tblInvExt.strBinLoc, tblInv.strDesc'

	SET @Query += ''

	EXEC sp_Executesql @Query
		,N'@SQAcctSet nvarchar(max)'
		,@SQAcctSet
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvGetInvCountReportLocationData](
@SQLocationCriteria NVARCHAR(200),
@SQCriteria NVARCHAR(200)
)  
AS  
BEGIN 
SELECT * FROM dbo.fnTblInvLocations(@SQLocationCriteria) tblInv WHERE strPartNumber IN (SELECT DISTINCT * FROM dbo.fnSplitStringAsTable(@SQCriteria, ','))
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvGetInvCountReportSerialLotData](
@SQLocName varchar(200),
@SQCriteria NVARCHAR(200),
@SQTypeLot int,
@SQTypeSN int
)
AS
BEGIN
SELECT ISE.strSerialNumber, ISE.decQty, Z.strUnit, ISE.strPartNumber, ISE.bitDimensionExist, ISE.strDimension FROM tblInvSerialExt ISE INNER JOIN (SELECT strPartNumber, strBuyUnit AS strUnit FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType WHERE (INV.strPartNumber IN (SELECT DISTINCT * FROM dbo.fnSplitStringAsTable(@SQCriteria, ','))) AND (INV.bitInvSerialType = 1) AND (IST.intType = @SQTypeSN)) Z ON ISE.strPartNumber = Z.strPartNumber WHERE (ISE.strLocName = @SQLocName) AND (ISE.decQty > 0) UNION ALL SELECT ILE.strLotNumber AS strSerialNumber, ILE.decQty, Z.strUnit, ILE.strPartNumber, 0 AS bitDimensionExist, '' AS strDimension FROM tblInvLotExt ILE INNER JOIN (SELECT strPartNumber, strBuyUnit AS strUnit FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType WHERE (INV.strPartNumber IN (SELECT DISTINCT * FROM dbo.fnSplitStringAsTable(@SQCriteria, ','))) AND (INV.bitInvSerialType = 1) AND (IST.intType = @SQTypeLot)) Z ON ILE.strPartNumber = Z.strPartNumber WHERE (ILE.strLocName = @SQLocName) AND (ILE.decQty > 0) ORDER BY strSerialNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvEfficiencyGetItemData] (
	@IsOptAcctSets BIT
	,@IsOptAssets BIT
	,@IsOptCategory BIT
	,@IsOptItems BIT
	,@IsChkInactive BIT
	,@SearchText NVARCHAR(MAX)
	,@blnBPToolsMode BIT
	,@SQUserName VARCHAR(200)
	,@PLInvSortDescription BIT
	)
AS
BEGIN
	IF (@IsOptAcctSets = 1)
	BEGIN
		IF (@ISChkInactive = 0)
			SELECT strAcctSet AS PartNumber
				,strDesc AS Description
			FROM tblAccountSets
			WHERE (blnInactive = 0)
				AND (
					(Len(@SearchText) > 0)
					AND (
						strAcctSet LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							strAcctSet LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY strAcctSet
		ELSE
			SELECT strAcctSet AS PartNumber
				,strDesc AS Description
			FROM tblAccountSets
			WHERE (
					(Len(@SearchText) > 0)
					AND (
						strAcctSet LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							strAcctSet LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY strAcctSet
	END

	IF (@IsOptAssets = 1)
	BEGIN
		IF (@ISChkInactive = 0)
			SELECT intGLNumber AS PartNumber
				,strDesc AS Description
			FROM tblAccounts
			WHERE (bitInventory = 1)
				AND (bitInactive = 0)
				AND (
					(Len(@SearchText) > 0)
					AND (
						intGLNumber LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							intGLNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY intGLNumber
		ELSE
			SELECT intGLNumber AS PartNumber
				,strDesc AS Description
			FROM tblAccounts
			WHERE (bitInventory = 1)
				AND (
					(Len(@SearchText) > 0)
					AND (
						intGLNumber LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							intGLNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY intGLNumber
	END

	IF (@IsOptCategory = 1)
	BEGIN
		IF (@ISChkInactive = 0)
			SELECT strCategory AS PartNumber
				,strDesc AS Description
			FROM tblInvCat
			WHERE (bitInactive = 0)
				AND (
					(Len(@SearchText) > 0)
					AND (
						strCategory LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							strCategory LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					(
						@blnBPToolsMode = 0
						AND (
							strCategory IN (
								SELECT tblInvCat.strCategory
								FROM tblInvCat
								LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(tblInvCatSec.strCategory)
											FROM tblInvCatSec
											WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) > 0
										AND tblInvCatSec.strUserName = '' + @SQUserName + ''
										)
								)
							)
						)
					)
			ORDER BY strCategory
		ELSE
			SELECT strCategory AS PartNumber
				,strDesc AS Description
			FROM tblInvCat
			WHERE (
					(Len(@SearchText) > 0)
					AND (
						strCategory LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							strCategory LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					(
						@blnBPToolsMode = 0
						AND (
							strCategory IN (
								SELECT tblInvCat.strCategory
								FROM tblInvCat
								LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(tblInvCatSec.strCategory)
											FROM tblInvCatSec
											WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) > 0
										AND tblInvCatSec.strUserName = '' + @SQUserName + ''
										)
								)
							)
						)
					)
			ORDER BY strCategory
	END

	IF (@IsOptItems = 1)
	BEGIN
		IF (@PLInvSortDescription = 0)
		BEGIN
			IF (@ISChkInactive = 0)
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 1)
					AND (bitInactive = 0)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strPartNumber
			ELSE
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 1)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strPartNumber
		END
		ELSE
		BEGIN
			IF (@ISChkInactive = 0)
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 1)
					AND (bitInactive = 0)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strDesc
			ELSE
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 1)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strDesc
		END
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvEfficiencyGetReportData](
@IsOptAcctSets bit,
@IsOptAssets bit,
@IsOptCategory bit,
@IsOptItems bit,
@SQAcctSet NVARCHAR(MAX),
@IsOptActiveItems bit,
@IsOptInactiveItems bit,
@IsOptAllItems bit,
@IsOptSortValue bit,
@SQStart NVARCHAR(19),
@SQFinish NVARCHAR(19)
)
AS
BEGIN
IF(@IsOptAcctSets = 1)
BEGIN
IF(@IsOptSortValue = 1)
SELECT Z.Number, Z.[Description], SUM(Z.QtyOpen) AS QtyOpen, SUM(Z.decSumOnOrder) AS decSumOnOrder, SUM(Z.decSumOnHand) AS decSumOnHand, SUM(Z.Sales) AS Sales, SUM(Z.intReorderQty) AS intReorderQty, SUM(Z.decSumValue) AS decSumValue, Z.OrderbyCol FROM (SELECT MasterTable.strPartNumber AS Number, MasterTable.strDesc AS [Description], SUM(tblInvExt.decOpenQty) + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate < ''+@SQStart+'') AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = tblInvExt.strLocName) AS QtyOpen, SUM(tblInvExt.decOnOrder) As decSumOnOrder, SUM(tblInvExt.decOnHand) As decSumOnHand, (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) * -1 FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQFinish+'') AND (tblInvTracking.intModule = 2) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = tblInvExt.strLocName)) AS Sales, SUM(tblInvExt.intReorderPoint) As intReorderQty, SUM(tblInvExt.decValue) AS decSumValue, tblInvExt.strAcctSet AS OrderbyCol FROM tblInv as MasterTable INNER JOIN tblInvExt ON MasterTable.strPartNumber = tblInvExt.strPartNumber WHERE (intType = 1) AND MasterTable.bitOtherCmp = 0 AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) 
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(MasterTable.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(MasterTable.bitInactive = 1)) GROUP BY MasterTable.strPartNumber, MasterTable.strDesc, tblInvExt.strLocName, tblInvExt.strAcctSet) Z GROUP BY Z.Number, Z.[Description], Z.OrderbyCol ORDER BY Z.OrderbyCol, SUM(Z.decSumValue)
ELSE
SELECT Z.Number, Z.[Description], SUM(Z.QtyOpen) AS QtyOpen, SUM(Z.decSumOnOrder) AS decSumOnOrder, SUM(Z.decSumOnHand) AS decSumOnHand, SUM(Z.Sales) AS Sales, SUM(Z.intReorderQty) AS intReorderQty, SUM(Z.decSumValue) AS decSumValue, Z.OrderbyCol FROM (SELECT MasterTable.strPartNumber AS Number, MasterTable.strDesc AS [Description], SUM(tblInvExt.decOpenQty) + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate < ''+@SQStart+'') AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = tblInvExt.strLocName) AS QtyOpen, SUM(tblInvExt.decOnOrder) As decSumOnOrder, SUM(tblInvExt.decOnHand) As decSumOnHand, (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) * -1 FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQFinish+'') AND (tblInvTracking.intModule = 2) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = tblInvExt.strLocName)) AS Sales, SUM(tblInvExt.intReorderPoint) As intReorderQty, SUM(tblInvExt.decValue) AS decSumValue, tblInvExt.strAcctSet AS OrderbyCol FROM tblInv as MasterTable INNER JOIN tblInvExt ON MasterTable.strPartNumber = tblInvExt.strPartNumber WHERE (intType = 1) AND MasterTable.bitOtherCmp = 0 AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) 
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(MasterTable.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(MasterTable.bitInactive = 1)) GROUP BY MasterTable.strPartNumber, MasterTable.strDesc, tblInvExt.strLocName, tblInvExt.strAcctSet) Z GROUP BY Z.Number, Z.[Description], Z.OrderbyCol ORDER BY Z.OrderbyCol, SUM(Z.decSumOnHand)
END
IF(@IsOptAssets = 1)
BEGIN
IF(@IsOptSortValue = 1)
SELECT Z.Number, Z.[Description], SUM(Z.QtyOpen) AS QtyOpen, SUM(Z.decSumOnOrder) AS decSumOnOrder, SUM(Z.decSumOnHand) AS decSumOnHand, SUM(Z.Sales) AS Sales, SUM(Z.intReorderQty) AS intReorderQty, SUM(Z.decSumValue) AS decSumValue, Z.OrderbyCol FROM (SELECT MasterTable.strPartNumber AS Number, MasterTable.strDesc AS [Description], SUM(tblInvExt.decOpenQty) + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate < ''+@SQStart+'') AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = tblInvExt.strLocName) AS QtyOpen, SUM(tblInvExt.decOnOrder) As decSumOnOrder, SUM(tblInvExt.decOnHand) As decSumOnHand, (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) * -1 FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQFinish+'') AND (tblInvTracking.intModule = 2) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = tblInvExt.strLocName)) AS Sales, SUM(tblInvExt.intReorderPoint) As intReorderQty, SUM(tblInvExt.decValue) AS decSumValue, tblAccounts.intGLNumber AS OrderbyCol FROM tblInv as MasterTable INNER JOIN tblInvExt ON MasterTable.strPartNumber = tblInvExt.strPartNumber INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (intType = 1) AND MasterTable.bitOtherCmp = 0 AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) 
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(MasterTable.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND (MasterTable.bitInactive = 1)) GROUP BY MasterTable.strPartNumber, MasterTable.strDesc, tblInvExt.strLocName, tblAccounts.intGLNumber) Z GROUP BY Z.Number, Z.[Description], Z.OrderbyCol  ORDER BY Z.OrderbyCol, SUM(Z.decSumValue)
ELSE
SELECT Z.Number, Z.[Description], SUM(Z.QtyOpen) AS QtyOpen, SUM(Z.decSumOnOrder) AS decSumOnOrder, SUM(Z.decSumOnHand) AS decSumOnHand, SUM(Z.Sales) AS Sales, SUM(Z.intReorderQty) AS intReorderQty, SUM(Z.decSumValue) AS decSumValue, Z.OrderbyCol FROM (SELECT MasterTable.strPartNumber AS Number, MasterTable.strDesc AS [Description], SUM(tblInvExt.decOpenQty) + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate < ''+@SQStart+'') AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = tblInvExt.strLocName) AS QtyOpen, SUM(tblInvExt.decOnOrder) As decSumOnOrder, SUM(tblInvExt.decOnHand) As decSumOnHand, (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) * -1 FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQFinish+'') AND (tblInvTracking.intModule = 2) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = tblInvExt.strLocName)) AS Sales, SUM(tblInvExt.intReorderPoint) As intReorderQty, SUM(tblInvExt.decValue) AS decSumValue, tblAccounts.intGLNumber AS OrderbyCol FROM tblInv as MasterTable INNER JOIN tblInvExt ON MasterTable.strPartNumber = tblInvExt.strPartNumber INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (intType = 1) AND MasterTable.bitOtherCmp = 0 AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) 
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(MasterTable.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND (MasterTable.bitInactive = 1)) GROUP BY MasterTable.strPartNumber, MasterTable.strDesc, tblInvExt.strLocName, tblAccounts.intGLNumber) Z GROUP BY Z.Number, Z.[Description], Z.OrderbyCol  ORDER BY Z.OrderbyCol, SUM(Z.decSumOnHand)
END
IF(@IsOptCategory = 1)
BEGIN
IF(@IsOptSortValue = 1)
SELECT MasterTable.strPartNumber AS Number, MasterTable.strDesc AS [Description], MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate < ''+@SQStart+'') AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AS QtyOpen, MasterTable.decSumOnOrder, MasterTable.decSumOnHand, (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) * -1 FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQFinish+'') AND (tblInvTracking.intModule = 2) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)) AS Sales,MasterTable.intReorderQty, MasterTable.decSumValue, MasterTable.strCategory AS OrderbyCol FROM tblInv as MasterTable WHERE (intType = 1) AND MasterTable.bitOtherCmp = 0 AND (MasterTable.strCategory IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) 
AND ((@IsOptActiveItems = 1  OR @IsOptAllItems = 1) AND(MasterTable.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(MasterTable.bitInactive = 1))
ORDER BY OrderbyCol,MasterTable.decSumValue
ELSE
SELECT MasterTable.strPartNumber AS Number, MasterTable.strDesc AS [Description], MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate < ''+@SQStart+'') AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AS QtyOpen, MasterTable.decSumOnOrder, MasterTable.decSumOnHand, (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) * -1 FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQFinish+'') AND (tblInvTracking.intModule = 2) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)) AS Sales,MasterTable.intReorderQty, MasterTable.decSumValue, MasterTable.strCategory AS OrderbyCol FROM tblInv as MasterTable WHERE (intType = 1) AND MasterTable.bitOtherCmp = 0 AND (MasterTable.strCategory IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) 
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(MasterTable.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(MasterTable.bitInactive = 1))
ORDER BY OrderbyCol,MasterTable.decSumOnHand
END
IF(@IsOptItems = 1)
BEGIN
IF(@IsOptSortValue = 1)
SELECT MasterTable.strPartNumber AS Number, MasterTable.strDesc AS [Description], MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate < ''+@SQStart+'') AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AS QtyOpen, MasterTable.decSumOnOrder, MasterTable.decSumOnHand, (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) * -1 FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQFinish+'') AND (tblInvTracking.intModule = 2) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)) AS Sales,MasterTable.intReorderQty, MasterTable.decSumValue, '' AS OrderbyCol FROM tblInv as MasterTable WHERE (intType = 1) AND MasterTable.bitOtherCmp = 0 AND (MasterTable.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) ORDER BY OrderbyCol,MasterTable.decSumValue
Else
SELECT MasterTable.strPartNumber AS Number, MasterTable.strDesc AS [Description], MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate < ''+@SQStart+'') AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AS QtyOpen, MasterTable.decSumOnOrder, MasterTable.decSumOnHand, (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) * -1 FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQFinish+'') AND (tblInvTracking.intModule = 2) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)) AS Sales,MasterTable.intReorderQty, MasterTable.decSumValue, '' AS OrderbyCol FROM tblInv as MasterTable WHERE (intType = 1) AND MasterTable.bitOtherCmp = 0 AND (MasterTable.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) ORDER BY OrderbyCol,MasterTable.decSumOnHand
END
END
Go

----------------------------------------------------

CREATE PROCEDURE [dbo].[RptInvGoodsInTransitGetLocationData] (
	@IsSearch BIT
	,@SearchText NVARCHAR(MAX)
	)
AS
BEGIN
	IF (
			@IsSearch = 1
			AND Len(@SearchText) > 2
			)
	BEGIN
		SELECT DISTINCT strLocName AS Location
			,strDesc AS Description
		FROM tblInvLoc
		WHERE (
				strLocName LIKE '%' + @SearchText + '%'
				OR strDesc LIKE '%' + @SearchText + '%'
				)
	END
	ELSE if @IsSearch = 0
	BEGIN
		SELECT DISTINCT strLocName AS Location
			,strDesc AS Description
		FROM tblInvLoc
	END
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvGoodsInTransitGetSummaryReportData](
@IsOptAll bit,
@SQStartDate NVARCHAR(19),
@SQFinishDate NVARCHAR(19),
@SQbitCleared NVARCHAR(5),
@SQstrLocation NVARCHAR(MAX)
)  
AS  
BEGIN 
IF(@IsOptAll = 1)
SELECT tblInvTrfDoc.strTrfDocID,tblInvTrfDoc.dteJournalDate,tblInvTrfDoc.dteRequiredDate,tblInvTrfDoc.strFromLoc,tblInvTrfDoc.strToLoc,SUM(tblInvTrfDocDT.decQty) AS decQty,SUM(tblInvTrfDocDT.decAmount) AS decAmount FROM tblInvTrfDoc INNER JOIN tblInvTrfDocDT ON tblInvTrfDoc.strTrfDocID = tblInvTrfDocDT.strTrfDocID INNER JOIN tblInvLocBin AS InvLocBin1 ON InvLocBin1.lngID = tblInvTrfDocDT.lngFromBinID INNER JOIN tblInvLocBin AS InvLocBin2 ON InvLocBin2.lngID = tblInvTrfDocDT.lngToBinID  WHERE (tblInvTrfDoc.dteRequiredDate BETWEEN ''+@SQStartDate+'' AND ''+@SQFinishDate+'') AND tblInvTrfDoc.intAccount IS NOT NULL AND bitCleared=''+@SQbitCleared+'' GROUP BY tblInvTrfDoc.strTrfDocID, tblInvTrfDoc.dteJournalDate, tblInvTrfDoc.dteRequiredDate, tblInvTrfDoc.strFromLoc, tblInvTrfDoc.strToLoc
ELSE
SELECT tblInvTrfDoc.strTrfDocID,tblInvTrfDoc.dteJournalDate,tblInvTrfDoc.dteRequiredDate,tblInvTrfDoc.strFromLoc,tblInvTrfDoc.strToLoc,SUM(tblInvTrfDocDT.decQty) AS decQty,SUM(tblInvTrfDocDT.decAmount) AS decAmount FROM tblInvTrfDoc INNER JOIN tblInvTrfDocDT ON tblInvTrfDoc.strTrfDocID = tblInvTrfDocDT.strTrfDocID INNER JOIN tblInvLocBin AS InvLocBin1 ON InvLocBin1.lngID = tblInvTrfDocDT.lngFromBinID INNER JOIN tblInvLocBin AS InvLocBin2 ON InvLocBin2.lngID = tblInvTrfDocDT.lngToBinID  WHERE (tblInvTrfDoc.dteRequiredDate BETWEEN ''+@SQStartDate+'' AND ''+@SQFinishDate+'') AND tblInvTrfDoc.intAccount IS NOT NULL AND bitCleared=''+@SQbitCleared+'' AND tblInvTrfDoc.strFromLoc IN (@SQstrLocation) GROUP BY tblInvTrfDoc.strTrfDocID, tblInvTrfDoc.dteJournalDate, tblInvTrfDoc.dteRequiredDate, tblInvTrfDoc.strFromLoc, tblInvTrfDoc.strToLoc
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvGoodsInTransitGetDetailsReportData](
@IsOptAll bit,
@SQStartDate NVARCHAR(19),
@SQFinishDate NVARCHAR(19),
@SQbitCleared NVARCHAR(5),
@SQstrLocation NVARCHAR(MAX)
)  
AS  
BEGIN 
IF(@IsOptAll = 1)
SELECT tblInvTrfDoc.strTrfDocID,tblInvTrfDoc.dteJournalDate,tblInvTrfDoc.dteRequiredDate,tblInvTrfDoc.strFromLoc,tblInvTrfDoc.strToLoc,tblInvTrfDocDT.decQty,tblInvTrfDocDT.decAmount,InvLocBin1.strBinCode AS strFromBinLoc,InvLocBin2.strBinCode AS strToBinLoc,tblInvTrfDocDT.strPartNumber,tblInv.strDesc FROM tblInvTrfDoc INNER JOIN tblInvTrfDocDT on tblInvTrfDoc.strTrfDocID = tblInvTrfDocDT.strTrfDocID INNER JOIN tblInvLocBin AS InvLocBin1 ON InvLocBin1.lngID = tblInvTrfDocDT.lngFromBinID INNER JOIN tblInvLocBin AS InvLocBin2 ON InvLocBin2.lngID = tblInvTrfDocDT.lngToBinID INNER JOIN tblInv on tblInvTrfDoc.strTrfDocID = tblInvTrfDocDT.strTrfDocID AND tblInvTrfDocDT.strPartNumber = tblInv.strPartNumber WHERE (tblInvTrfDoc.dteRequiredDate BETWEEN ''+@SQStartDate+'' AND ''+@SQFinishDate+'') AND tblInvTrfDoc.intAccount IS NOT NULL AND tblInvTrfDoc.bitCleared=''+@SQbitCleared+'' ORDER BY strPartNumber
ELSE
SELECT tblInvTrfDoc.strTrfDocID,tblInvTrfDoc.dteJournalDate,tblInvTrfDoc.dteRequiredDate,tblInvTrfDoc.strFromLoc,tblInvTrfDoc.strToLoc,tblInvTrfDocDT.decQty,tblInvTrfDocDT.decAmount,InvLocBin1.strBinCode AS strFromBinLoc,InvLocBin2.strBinCode AS strToBinLoc,tblInvTrfDocDT.strPartNumber,tblInv.strDesc FROM tblInvTrfDoc INNER JOIN tblInvTrfDocDT on tblInvTrfDoc.strTrfDocID = tblInvTrfDocDT.strTrfDocID INNER JOIN tblInvLocBin AS InvLocBin1 ON InvLocBin1.lngID = tblInvTrfDocDT.lngFromBinID INNER JOIN tblInvLocBin AS InvLocBin2 ON InvLocBin2.lngID = tblInvTrfDocDT.lngToBinID INNER JOIN tblInv on tblInvTrfDoc.strTrfDocID = tblInvTrfDocDT.strTrfDocID AND tblInvTrfDocDT.strPartNumber = tblInv.strPartNumber WHERE (tblInvTrfDoc.dteRequiredDate BETWEEN ''+@SQStartDate+'' AND ''+@SQFinishDate+'') AND tblInvTrfDoc.intAccount IS NOT NULL AND tblInvTrfDoc.bitCleared=''+@SQbitCleared+'' AND tblInvTrfDoc.strFromLoc IN (@SQstrLocation) ORDER BY strPartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvOpenReqGetData](
	@IsOptFilterByLocation BIT
	,@IsOptFilterByDept BIT
	,@IsOptFilterByEmp BIT
	,@IsOptFilterByApprover BIT
	,@IsOptFilterByItems BIT
	,@IsOptOpenReq BIT
	,@IsSearch BIT
	,@SearchText NVARCHAR(MAX)
	,@SQUserName NVARCHAR(200)
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)

	SET @Query = ''

	IF (@IsOptFilterByLocation = 1)
	BEGIN
		IF (@IsSearch = 1)
		BEGIN
			IF Len(@SearchText) > 2
				SET @Query += 'SELECT tblInvLoc.strLocName as PartNumber,tblInvLoc.strDesc as Description, ISNULL((SELECT COUNT(tblInvLocSec.strLocName) FROM tblInvLocSec WHERE tblInvLocSec.strLocName = 
tblInvLoc.strLocName),0), ISNULL(tblInvLocSec.strUserName,'''') FROM tblInvLoc LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName AND 
tblInvLocSec.strUserName = ''' + @SQUserName + ''' WHERE tblInvLoc.intType = 0 AND (tblInvLoc.strLocName LIKE ''%' + @SearchText + '%'') '
			ELSE
				RETURN NULL;
		END
		ELSE
			SET @Query += 'SELECT tblInvLoc.strLocName as PartNumber,tblInvLoc.strDesc as Description, ISNULL((SELECT COUNT(tblInvLocSec.strLocName) FROM tblInvLocSec WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName),0), ISNULL(tblInvLocSec.strUserName,'''') FROM tblInvLoc LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName AND tblInvLocSec.strUserName = ''' + @SQUserName + ''' WHERE tblInvLoc.intType = 0 '

		SET @Query += '  ORDER BY tblInvLoc.strLocName'
	END

	IF (@IsOptFilterByDept = 1)
	BEGIN
		IF (@IsSearch = 1)
		BEGIN
			IF Len(@SearchText) > 2
				SET @Query += 'Select cast(intDept as varchar(200)) as PartNumber, strDesc as Description FROM tblDepartments WHERE bitInactive = 0 AND ((strDesc LIKE ''%' + @SearchText + '%'') OR (intDept LIKE ''%' + @SearchText + '%'')) '
			ELSE
				RETURN NULL;
		END
		ELSE
			SET @Query += 'Select cast(intDept as varchar(200)) as PartNumber, strDesc as Description FROM tblDepartments WHERE bitInactive = 0  '

		SET @Query += '  ORDER BY strDesc'
	END

	IF (@IsOptFilterByEmp = 1)
	BEGIN
		IF (@IsSearch = 1)
		BEGIN
			IF Len(@SearchText) > 2
				SET @Query += 'SELECT strEmpNumber as PartNumber,strEmpName as Description FROM tblEmployees WHERE bitInactive = 0 AND ((strEmpNumber LIKE ''%' + @SearchText + '%'') OR (strEmpName LIKE ''%' + @SearchText + '%'')) '
			ELSE
				RETURN NULL;
		END
		ELSE
			SET @Query += 'SELECT strEmpNumber as PartNumber,strEmpName as Description FROM tblEmployees WHERE bitInactive = 0 '

		SET @Query += '  ORDER BY strEmpName'
	END

	IF (@IsOptFilterByApprover = 1)
	BEGIN
		IF (@IsSearch = 1)
		BEGIN
			IF Len(@SearchText) > 2
				SET @Query += 'Select strUSername as PartNumber from tblApprovalsDocLimit where intApproverType = 1 AND (strUSername LIKE ''%' + @SearchText + '%'')'
			ELSE
				RETURN NULL;
		END
		ELSE
			SET @Query += 'Select strUSername as PartNumber from tblApprovalsDocLimit where intApproverType = 1'

		SET @Query += '  ORDER BY strUSername'
	END

	IF (@IsOptFilterByItems = 1)
	BEGIN
		IF (@IsSearch = 1)
		BEGIN
			IF Len(@SearchText) > 2
				IF (@IsOptOpenReq = 1)
					SET @Query += 'SELECT distinct tblInv.strPartNumber as PartNumber,tblInv.strDesc as Description FROM tblInv inner join tblInvIntReqDocDT on tblInv.strPartNumber = tblInvIntReqDocDT.strPartNumber WHERE tblInv.bitInactive = 0 AND ((tblInv.strPartNumber LIKE ''%' + @SearchText + '%'') OR (strDesc LIKE ''%' + @SearchText + '%'')) AND tblInv.bitOtherCmp = 0  '
				ELSE
					SET @Query += 'SELECT distinct tblInv.strPartNumber as PartNumber,tblInv.strDesc as Description FROM tblInv inner join tblInvIssReqDocDT on tblInv.strPartNumber = tblInvIssReqDocDT.strPartNumber WHERE tblInv.bitInactive = 0 AND ((tblInv.strPartNumber LIKE ''%' + @SearchText + '%'') OR (strDesc LIKE ''%' + @SearchText + '%'')) AND tblInv.bitOtherCmp = 0  '
			ELSE
				RETURN NULL
					--SET  @Query += 'SELECT distinct tblInv.strPartNumber as PartNumber,tblInv.strDesc as Description FROM tblInv inner join tblInvIssReqDocDT on tblInv.strPartNumber = tblInvIssReqDocDT.strPartNumber WHERE tblInv.bitInactive = 0 AND ((tblInv.strPartNumber LIKE ''%'+@SearchText+'%'') OR (strDesc LIKE ''%'+@SearchText+'%'')) AND tblInv.bitOtherCmp = 0  '
		END
		ELSE
		BEGIN
			IF (@IsOptOpenReq = 1)
				SET @Query += 'SELECT distinct tblInv.strPartNumber as PartNumber,tblInv.strDesc as Description FROM tblInv inner join tblInvIntReqDocDT on tblInv.strPartNumber = tblInvIntReqDocDT.strPartNumber WHERE tblInv.bitInactive = 0 AND tblInv.bitOtherCmp = 0 '
			ELSE
				SET @Query += 'SELECT distinct tblInv.strPartNumber as PartNumber,tblInv.strDesc as Description FROM tblInv inner join tblInvIssReqDocDT on tblInv.strPartNumber = tblInvIssReqDocDT.strPartNumber WHERE tblInv.bitInactive = 0 AND tblInv.bitOtherCmp = 0 '
		END

		SET @Query += '  ORDER BY tblInv.strPartNumber'
	END

	EXEC sp_Executesql @Query
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvOpenReqGetReportData] (
	@IsOptIssueReq BIT
	,@IsOptOpenReq BIT
	,@IsOptFilterByLocation BIT
	,@IsOptFilterByDept BIT
	,@IsOptFilterByEmp BIT
	,@IsOptFilterByApprover BIT
	,@IsOptFilterByItems BIT
	,@IsOptFilterByProfitCenter BIT
	,@IsChkOverBudgetItems BIT
	,@SQStartDate VARCHAR(19)
	,@SQEndDate VARCHAR(19)
	,@SQReqNr VARCHAR(MAx)
	,@StrSplit INT
	,@strSplit_0 VARCHAR(20)
	,@strSplit_1 VARCHAR(20)
	,@strSplit_2 VARCHAR(20)
	,@strSplit_3 VARCHAR(20)
	)
AS
BEGIN
	DECLARE @strQuery AS NVARCHAR(max)
	DECLARE @strFrom AS NVARCHAR(max)
	DECLARE @strGroupBy AS NVARCHAR(max)
	DECLARE @strWhere AS NVARCHAR(max)
	DECLARE @tempCenterQuery AS NVARCHAR(max)
	DECLARE @strSQL AS NVARCHAR(max)

	SET @strQuery = ''
	SET @strFrom = ''
	SET @strGroupBy = ''
	SET @strWhere = ''
	SET @tempCenterQuery = ''
	SET @strSQL = ''

	IF (@IsOptIssueReq = 1)
	BEGIN
		SET @strQuery = 'SELECT tblInv.strPartNumber AS InvPartNumber,tblInvIssReqDoc.strInvIssReqDocID AS DocumentNumber,  tblInvIssReqDoc.strLocName AS [Location], tblInv.strDesc AS InvDescription, ISNULL(tblInvIssReqDocDT.decBudgetQty, 0) AS RequisitionQty, ISNULL(tblInvIssReqDocDT.decQty, 0) AS IssueQty, ISNULL(tblInvIssReqDocDT.decUnitCost, 0) AS UnitCost, ISNULL(tblInvIssReqDocDT.decAmount, 0) AS Amount, ISNULL(tblInvIssReqDocDT.strNonBudgetRefNo,'''') AS Reference '
		SET @strFrom = 'FROM tblInvIssReqDocDT INNER JOIN tblInvIssReqDoc ON tblInvIssReqDocDT.strInvIssReqDocID = tblInvIssReqDoc.strInvIssReqDocID INNER JOIN tblInv  ON tblInvIssReqDocDT.strPartNumber = tblInv.strPartNumber  '
		SET @strGroupBy = ' ,(CASE WHEN tblInvIssReqDoc.strEmpNumber IS NOT NULL THEN (SELECT strEmpName FROM tblEmployees WHERE strEmpNumber = tblInvIssReqDoc.strEmpNumber) WHEN tblInvIssReqDocDT.strEmpNumber IS NOT NULL THEN (SELECT strEmpName FROM tblEmployees WHERE strEmpNumber = tblInvIssReqDocDT.strEmpNumber)	ELSE ''<< No Employee >>'' END) AS GroupByName '
		SET @strWhere = ' WHERE (tblInvIssReqDoc.dteJournalDate BETWEEN ''' + @SQStartDate + ''' AND ''' + @SQEndDate + ''') '

		IF (@IsChkOverBudgetItems = 1)
			SET @strWhere += ' AND (ISNULL(tblInvIssReqDocDT.decBudgetQty, 0) <> 0 AND (ISNULL(tblInvIssReqDocDT.decQty, 0) - ISNULL(tblInvIssReqDocDT.decBudgetQty, 0)) > 0)'

		IF (@IsOptFilterByLocation = 1)
		BEGIN
			SET @strWhere += ' AND tblInvIssReqDoc.strLocName IN ( (SELECT * FROM fnSplitStringAsTable(''' + @SQReqNr + ''', '',''))) '
		END

		IF (@IsOptFilterByEmp = 1)
		BEGIN
			SET @strWhere += ' AND (ISNULL(tblInvIssReqDoc.strEmpNumber,''<< No Employee >>'') IN ( (SELECT * FROM fnSplitStringAsTable(''' + @SQReqNr + ''', '',''))) OR ISNULL(tblInvIssReqDocDT.strEmpNumber,''<< No Employee >>'') IN ( (SELECT * FROM fnSplitStringAsTable(''' + @SQReqNr + ''', '','')))) '
		END

		IF (@IsOptFilterByDept = 1)
		BEGIN
			SET @strWhere += 'AND tblInvIssReqDoc.intDept IN ( (SELECT * FROM fnSplitStringAsTable(''' + @SQReqNr + ''', '',''))) '
		END

		IF (@IsOptFilterByApprover = 1)
		BEGIN
			SET @strSQL += 'SELECT tblInv.strPartNumber AS InvPartNumber, tblInvIssReqDoc.strInvIssReqDocID AS DocumentNumber, tblInvIssReqDoc.strLocName AS Location, tblInv.strDesc AS InvDescription, ISNULL(tblInvIssReqDocDT.decReqQty,0) AS RequisitionQty, ISNULL(tblInvIssReqDocDT.decQty,0) AS IssueQty, ISNULL(tblInvIssReqDocDT.decUnitCost,0) AS UnitCost, ISNULL(tblInvIssReqDocDT.decAmount,0) AS Amount,tblIRApprovalTracking.strApproverUsername AS GroupByName 
FROM tblInvIssReqDocDT INNER JOIN tblInvIntReqDoc ON tblInvIntReqDoc.strInvIssReqDocID =  tblInvIssReqDocDT.strInvIssReqDocID INNER JOIN tblInv ON tblInvIssReqDocDT.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvIssReqDoc ON tblInvIssReqDocDT.strInvIssReqDocID = tblInvIssReqDoc.strInvIssReqDocID INNER JOIN tblIRApprovalTracking ON tblIRApprovalTracking.strReqInvDocID = tblInvIntReqDoc.strInvIntReqDocID 
WHERE (tblInvIssReqDoc.dteJournalDate BETWEEN ''' + @SQStartDate + ''' AND ''' + @SQEndDate + 
				''') AND tblIRApprovalTracking.strApproverUsername IN ( (SELECT * FROM fnSplitStringAsTable(''' + @SQReqNr + ''', '',''))) '
		END

		IF (@IsOptFilterByItems = 1)
		BEGIN
			SET @strWhere += 'AND tblInv.strPartNumber IN ( (SELECT * FROM fnSplitStringAsTable(''' + @SQReqNr + ''', '',''))) '
		END

		IF (@IsOptFilterByProfitCenter = 1)
		BEGIN
			IF @strSplit >= 0
			BEGIN
				IF @strSplit = 0
					SET @tempCenterQuery += ' AND tblCenters.strLvl1 IN ( (SELECT * FROM fnSplitStringAsTable(''' + @SQReqNr + ''', '',''))) '

				IF @strSplit = 1
				BEGIN
					SET @tempCenterQuery = ' AND tblCenters.strLvl1=''' + @strSplit_0 + ''' '
					SET @tempCenterQuery += ' AND tblCenters.strLvl2 IN ( (SELECT * FROM fnSplitStringAsTable(''' + @SQReqNr + ''', '',''))) '
				END

				IF @strSplit = 2
				BEGIN
					SET @tempCenterQuery = ' AND tblCenters.strLvl1=''' + @strSplit_0 + ''' AND tblCenters.strLvl2=''' + @strSplit_1 + ''' '
					SET @tempCenterQuery += ' AND tblCenters.strLvl3 IN ( (SELECT * FROM fnSplitStringAsTable(''' + @SQReqNr + ''', '',''))) '
				END

				IF @strSplit = 3
				BEGIN
					SET @tempCenterQuery = ' AND tblCenters.strLvl1=''' + @strSplit_0 + ''' AND tblCenters.strLvl2=''' + @strSplit_1 + ''' AND tblCenters.strLvl3=''' + @strSplit_2 + ''' AND tblCenters.strLvl4=''' + @strSplit_3 + ''' '
					SET @tempCenterQuery += ' AND tblCenters.strLvl5 IN ( (SELECT * FROM fnSplitStringAsTable(''' + @SQReqNr + ''', '',''))) '
				END
			END
			ELSE
				SET @tempCenterQuery += ' AND tblCenters.strLvl1 IN ( (SELECT * FROM fnSplitStringAsTable(''' + @SQReqNr + ''', '',''))) '

			SET @strQuery = ' SELECT tblInvIssReqDoc.strInvIssReqDocID AS DocumentNumber ,tblInvIssReqDoc.strLocName AS Location ,tblInvIssReqDoc.dteJournalDate AS Date ,ISNULL(TemptblCenterEnt.decAmount, 0) AS Amount ,tblInvIssReqDoc.strComment AS Comment ,(Select Top 1 tblAccounts.intGLNumber+''-''+tblAccounts.strDesc from tblAccounts where tblAccounts.intGLNumber= tblInvIssReqDoc.intAccount) as Account '
			SET @strFrom = ' FROM tblInvIssReqDoc INNER JOIN  (Select distinct tblCenterEnt.uidCenterID,tblCenterEnt.lngJourID,tblCenterEnt.decAmount from tblCenterEnt )as TemptblCenterEnt on tblInvIssReqDoc.lngJourID=TemptblCenterEnt.lngJourID Inner join tblCenters on TemptblCenterEnt.uidCenterID=tblCenters.uidCenterID '
			SET @strFrom += @tempCenterQuery
			SET @strGroupBy = ' ,(tblCenters.strLvl1+''''+CASE WHEN tblCenters.strLvl2 Is not Null Then ''/''+tblCenters.strLvl2 else '''' End +''''+CASE WHEN tblCenters.strLvl3 Is not Null Then ''/''+tblCenters.strLvl3 else '''' End +''''+CASE WHEN tblCenters.strLvl4 Is not Null Then ''/''+tblCenters.strLvl4 else '''' End +''''+CASE WHEN tblCenters.strLvl5 Is not Null Then ''/''+tblCenters.strLvl5 else '''' End) AS GroupByName '
		END

		IF Len(@strSQL) = 0
			SET @strSQL += @strQuery + @strGroupBy + @strFrom + @strWhere
	END

	IF (@IsOptOpenReq = 1)
	BEGIN
		SET @strQuery = ' SELECT	tblInv.strPartNumber AS InvPartNumber, tblInvIntReqDoc.strInvIntReqDocID AS DocumentNumber,	tblInvIntReqDoc.strLocName AS Location, tblInv.strDesc AS InvDescription, ISNULL(tblInvIntReqDocDT.decQty, 0) AS RequisitionQty, 0 AS IssueQty, ISNULL(tblInvIntReqDocDT.decUnitCost, 0) AS UnitCost, ISNULL(tblInvIntReqDocDT.decAmount, 0) AS Amount '
		SET @strFrom = '  FROM tblInvIntReqDoc INNER JOIN tblInvIntReqDocDT ON tblInvIntReqDoc.strInvIntReqDocID = tblInvIntReqDocDT.strInvIntReqDocID INNER JOIN tblInv ON tblInvIntReqDocDT.strPartNumber = tblInv.strPartNumber '
		SET @strGroupBy = ' , tblInv.strPartNumber '
		SET @strWhere = ' WHERE (bitCleared = 0) AND (tblInvIntReqDoc.dteJournalDate BETWEEN ''' + @SQStartDate + ''' AND ''' + @SQEndDate + ''') AND (strInvIssReqDocID IS NULL) '

		IF (@IsOptFilterByLocation = 1)
		BEGIN
			SET @strWhere += ' AND tblInvIntReqDoc.strLocName IN ( (SELECT * FROM fnSplitStringAsTable(''' + @SQReqNr + ''', '',''))) '
			SET @strGroupBy += ' ,tblInvIntReqDoc.strLocName AS GroupByName '
		END

		IF (@IsOptFilterByEmp = 1)
		BEGIN
			SET @strWhere += ' AND (ISNULL(tblInvIntReqDoc.strEmpNumber,''<< No Employee >>'') IN ( (SELECT * FROM fnSplitStringAsTable(''' + @SQReqNr + ''', '',''))) OR ISNULL(tblInvIntReqDocDT.strEmpNumber,''<< No Employee >>'') IN ( (SELECT * FROM fnSplitStringAsTable(''' + @SQReqNr + ''', '','')))) '
			SET @strGroupBy += ',(CASE WHEN tblInvIntReqDoc.strEmpNumber IS NOT NULL THEN (SELECT strEmpName FROM tblEmployees WHERE strEmpNumber = tblInvIntReqDoc.strEmpNumber) WHEN tblInvIntReqDocDT.strEmpNumber IS NOT NULL THEN (SELECT strEmpName FROM tblEmployees WHERE strEmpNumber = tblInvIntReqDocDT.strEmpNumber)	ELSE ''<< No Employee >>'' END) AS GroupByName '
		END

		IF (@IsOptFilterByDept = 1)
		BEGIN
			SET @strWhere += 'AND tblInvIntReqDoc.intDept IN ( (SELECT * FROM fnSplitStringAsTable(''' + @SQReqNr + ''', '',''))) '
			SET @strGroupBy += ',(CASE WHEN tblInvIntReqDoc.intDept IS NOT NULL THEN (SELECT strDesc FROM tblDepartments WHERE intDept = tblInvIntReqDoc.intDept) ELSE ''<< No Department >>''	END) AS GroupByName '
		END

		IF (@IsOptFilterByApprover = 1)
		BEGIN
			SET @strFrom += ' INNER JOIN tblIRApprovalTracking ON tblInvIntReqDoc.strInvIntReqDocID = tblIRApprovalTracking.strReqInvDocID '
			SET @strWhere += ' AND tblIRApprovalTracking.strApproverUsername IN ( (SELECT * FROM fnSplitStringAsTable(''' + @SQReqNr + ''', '',''))) '
			SET @strGroupBy += ',tblIRApprovalTracking.strApproverUsername AS GroupByName'
		END

		IF (@IsOptFilterByItems = 1)
		BEGIN
			SET @strWhere += 'AND tblInv.strPartNumber IN ( (SELECT * FROM fnSplitStringAsTable(''' + @SQReqNr + ''', '',''))) '
			SET @strGroupBy += ',tblInv.strPartNumber AS GroupByName'
		END

		SET @strSQL += @strQuery + @strGroupBy + @strFrom + @strWhere
	END

	IF (
			@IsOptIssueReq = 1
			AND @IsOptFilterByProfitCenter = 1
			)
		SET @strSQL += ' ORDER BY GroupByName,DocumentNumber,Location '
	ELSE
		SET @strSQL += ' ORDER BY GroupByName,InvPartNumber,DocumentNumber,Location '

		EXEC sp_Executesql @strSQL
END
GO

----------------------------------------------------

CREATE PROCEDURE [dbo].[RptInvSalesGetWarehouseData] (
	@IsOptWarehouse BIT
	,@IsOptDepartment BIT
	,@SearchText NVARCHAR(MAX)
	)
AS
BEGIN
	IF (@IsOptWarehouse = 1)
		SELECT strLocName AS Location
			,strDesc AS defLocation
		FROM tblInvLoc
		WHERE (
				(Len(@SearchText) > 0)
				AND (
					strLocName LIKE '%' + @SearchText + '%'
					OR strDesc LIKE '%' + @SearchText + '%'
					)
				OR (
					LEN(@SearchText) <= 3
					AND (
						strLocName LIKE '%'
						OR strDesc LIKE '%'
						)
					)
				)
		ORDER BY strLocName
	ELSE IF (@IsOptDepartment = 1)
		SELECT cast(intDept AS VARCHAR(200)) AS Location
			,strDesc AS defLocation
		FROM tblDepartments
		WHERE (bitInactive = 0)
			AND (
				(Len(@SearchText) > 0)
				AND (
					intDept LIKE '%' + @SearchText + '%'
					OR strDesc LIKE '%' + @SearchText + '%'
					)
				OR (
					LEN(@SearchText) <= 3
					AND (
						intDept LIKE '%'
						OR strDesc LIKE '%'
						)
					)
				)
		ORDER BY intDept
END
GO

----------------------------------------------------

CREATE PROCEDURE [dbo].[RptInvSalesGetItemData] (
	@IsOptAcctSets BIT
	,@IsOptAssets BIT
	,@IsOptCategory BIT
	,@IsOptItems BIT
	,@IsOptService BIT
	,@IsOptBuyout BIT
	,@IsOptAll BIT
	,@IsChkInactive BIT
	,@SearchText NVARCHAR(MAX)
	,@blnBPToolsMode BIT
	,@SQUserName VARCHAR(200)
	,@PLInvSortDescription BIT
	)
AS
BEGIN
	IF (@IsOptAcctSets = 1)
	BEGIN
		IF (@ISChkInactive = 0)
			SELECT strAcctSet AS PartNumber
				,strDesc AS Description
			FROM tblAccountSets
			WHERE (blnInactive = 0)
				AND (
					(Len(@SearchText) > 0)
					AND (
						strAcctSet LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							strAcctSet LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY strAcctSet
		ELSE
			SELECT strAcctSet AS PartNumber
				,strDesc AS Description
			FROM tblAccountSets
			WHERE (
					(Len(@SearchText) > 0)
					AND (
						strAcctSet LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							strAcctSet LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY strAcctSet
	END

	IF (@IsOptAssets = 1)
	BEGIN
		IF (@ISChkInactive = 0)
			SELECT intGLNumber AS PartNumber
				,strDesc AS Description
			FROM tblAccounts
			WHERE (bitInventory = 1)
				AND (bitInactive = 0)
				AND (
					intGLNumber NOT IN (
						SELECT DISTINCT intGLAsset
						FROM tblAccountSets
						WHERE blnBuyout = 1
						)
					)
				AND (
					(Len(@SearchText) > 0)
					AND (
						intGLNumber LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							intGLNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY intGLNumber
		ELSE
			SELECT intGLNumber AS PartNumber
				,strDesc AS Description
			FROM tblAccounts
			WHERE (bitInventory = 1)
				AND (
					intGLNumber NOT IN (
						SELECT DISTINCT intGLAsset
						FROM tblAccountSets
						WHERE blnBuyout = 1
						)
					)
				AND (
					(Len(@SearchText) > 0)
					AND (
						intGLNumber LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							intGLNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY intGLNumber
	END

	IF (@IsOptCategory = 1)
	BEGIN
		IF (@ISChkInactive = 0)
			SELECT strCategory AS PartNumber
				,strDesc AS Description
			FROM tblInvCat
			WHERE (bitInactive = 0)
				AND (
					(Len(@SearchText) > 0)
					AND (
						strCategory LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							strCategory LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					(
						@blnBPToolsMode = 0
						AND (
							strCategory IN (
								SELECT tblInvCat.strCategory
								FROM tblInvCat
								LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(tblInvCatSec.strCategory)
											FROM tblInvCatSec
											WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) > 0
										AND tblInvCatSec.strUserName = '' + @SQUserName + ''
										)
								)
							)
						)
					)
			ORDER BY strCategory
		ELSE
			SELECT strCategory AS PartNumber
				,strDesc AS Description
			FROM tblInvCat
			WHERE (
					(Len(@SearchText) > 0)
					AND (
						strCategory LIKE '%' + @SearchText + '%'
						OR strDesc LIKE '%' + @SearchText + '%'
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							strCategory LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					(
						@blnBPToolsMode = 0
						AND (
							strCategory IN (
								SELECT tblInvCat.strCategory
								FROM tblInvCat
								LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(tblInvCatSec.strCategory)
											FROM tblInvCatSec
											WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) > 0
										AND tblInvCatSec.strUserName = '' + @SQUserName + ''
										)
								)
							)
						)
					)
			ORDER BY strCategory
	END

	IF (@IsOptItems = 1)
	BEGIN
		IF (@PLInvSortDescription = 0)
		BEGIN
			IF (@ISChkInactive = 0)
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 1)
					AND (bitInactive = 0)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strPartNumber
			ELSE
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 1)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strPartNumber
		END
		ELSE
		BEGIN
			IF (@ISChkInactive = 0)
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 1)
					AND (bitInactive = 0)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strDesc
			ELSE
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 1)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strDesc
		END
	END

	IF (@IsOptService = 1)
	BEGIN
		IF (@PLInvSortDescription = 0)
		BEGIN
			IF (@ISChkInactive = 0)
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 4)
					AND (bitInactive = 0)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strPartNumber
			ELSE
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 4)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strPartNumber
		END
		ELSE
		BEGIN
			IF (@ISChkInactive = 0)
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 4)
					AND (bitInactive = 0)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strDesc
			ELSE
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 4)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strDesc
		END
	END

	IF (@IsOptBuyout = 1)
	BEGIN
		IF (@PLInvSortDescription = 0)
		BEGIN
			IF (@ISChkInactive = 0)
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 11)
					AND (bitInactive = 0)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strPartNumber
			ELSE
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 11)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strPartNumber
		END
		ELSE
		BEGIN
			IF (@ISChkInactive = 0)
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 11)
					AND (bitInactive = 0)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strDesc
			ELSE
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType
				FROM tblInv
				WHERE (intType = 11)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strDesc
		END
	END

	IF (@IsOptAll = 1)
	BEGIN
		IF (@PLInvSortDescription = 0)
		BEGIN
			IF (@ISChkInactive = 0)
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (bitInactive = 0)
					AND (intType <> 5)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strPartNumber
			ELSE
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType <> 5)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strPartNumber
		END
		ELSE
		BEGIN
			IF (@ISChkInactive = 0)
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (bitInactive = 0)
					AND (intType <> 5)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strDesc
			ELSE
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType <> 5)
					AND tblInv.bitOtherCmp = 0
					AND (
						(Len(@SearchText) > 0)
						AND (
							strPartNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						OR (
							LEN(@SearchText) <= 2
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strDesc
		END
	END
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvSalesGetSummaryReportData](
@IsOptWarehouse bit,
@IsOptAcctSets bit,
@IsOptAssets bit,
@IsOptCategory bit,
@IsOptItems bit,
@IsOptService bit,
@IsOptBuyout bit,
@IsOptAll bit,
@IsOptActiveItems bit,
@IsOptInActiveItems bit,
@IsOptAllItems bit,
@SQstrLocName NVARCHAR(100),
@SQAcctSet NVARCHAR(MAX),
@SQStart NVARCHAR(19),
@SQEnd NVARCHAR(19),
@PLInvSortDescription bit
)  
AS  
BEGIN 
IF(@IsOptWarehouse = 1 AND @IsOptItems = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, COUNT(tblInvoiceDocDT.strPartNumber), SUM(tblInvoiceDocDT.decQty) AS Qty, SUM(tblInvoiceDocDT.decLineTotExc), SUM(tblInvoiceDocDT.decCOGS), SUM(tblInvoiceDocDT.decLineTotExc) - SUM(tblInvoiceDocDT.decCOGS) AS PROFIT, ''  AS OrderByCol,tblInvoiceDocDT.strLocation, tblInvoiceDocDT.strUnit AS Unit FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber WHERE (tblInvoiceDocDT.strPartNumber in (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1)) 
AND (tblInvoiceDocDT.strLocation IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',',')))
GROUP BY tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInv.strCategory, tblInvoiceDocDT.strLocation, tblInvoiceDocDT.strUnit 
ORDER BY tblInvoiceDocDT.strLocation, OrderByCol, tblInvoiceDocDT.strPartNumber
ELSE
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, COUNT(tblInvoiceDocDT.strPartNumber), SUM(tblInvoiceDocDT.decQty) AS Qty, SUM(tblInvoiceDocDT.decLineTotExc), SUM(tblInvoiceDocDT.decCOGS), SUM(tblInvoiceDocDT.decLineTotExc) - SUM(tblInvoiceDocDT.decCOGS) AS PROFIT, ''  AS OrderByCol,tblInvoiceDocDT.strLocation, tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber WHERE (tblInvoiceDocDT.strPartNumber in (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1)) 
AND (tblInvoiceDocDT.strLocation IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',',')))
GROUP BY tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInv.strCategory, tblInvoiceDocDT.strLocation,tblInvoiceDocDT.strUnit 
ORDER BY tblInvoiceDocDT.strLocation, OrderByCol, tblInv.strDesc
END
ELSE
BEGIN
IF(@IsOptAcctSets = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, COUNT(tblInvoiceDocDT.strPartNumber), SUM(tblInvoiceDocDT.decQty) AS Qty, SUM(tblInvoiceDocDT.decLineTotExc), SUM(tblInvoiceDocDT.decCOGS), SUM(tblInvoiceDocDT.decLineTotExc) - SUM(tblInvoiceDocDT.decCOGS) AS PROFIT, tblInv.strAcctSet AS OrderByCol,Isnull(Cast(tbldepartments.intdept AS VARCHAR), '0') + ' ' + Isnull(tbldepartments.strdesc, '<<No Department>>') AS strDeptName, tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber AND tblInvoiceDocDT.strLocation = tblInv.strLocName LEFT JOIN tbldepartments ON tbldepartments.intdept = tblinvoicedoc.intdept WHERE (tblInv.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND ISNULL(tblInvoiceDoc.intDept, 0) IN (SELECT Data FROM dbo.Split(''+@SQstrLocName+'', ','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
GROUP BY tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInv.strAcctSet,tbldepartments.intdept,tbldepartments.strdesc,tblInvoiceDocDT.strUnit
ORDER BY tbldepartments.intdept,OrderByCol, tblInvoiceDocDT.strPartNumber
ELSE
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, COUNT(tblInvoiceDocDT.strPartNumber), SUM(tblInvoiceDocDT.decQty) AS Qty, SUM(tblInvoiceDocDT.decLineTotExc), SUM(tblInvoiceDocDT.decCOGS), SUM(tblInvoiceDocDT.decLineTotExc) - SUM(tblInvoiceDocDT.decCOGS) AS PROFIT, tblInv.strAcctSet AS OrderByCol,Isnull(Cast(tbldepartments.intdept AS VARCHAR), '0') + ' ' + Isnull(tbldepartments.strdesc, '<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber AND tblInvoiceDocDT.strLocation = tblInv.strLocName LEFT JOIN tbldepartments ON tbldepartments.intdept = tblinvoicedoc.intdept WHERE (tblInv.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND ISNULL(tblInvoiceDoc.intDept, 0) IN (SELECT Data FROM dbo.Split(''+@SQstrLocName+'', ','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
GROUP BY tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInv.strAcctSet,tbldepartments.intdept,tbldepartments.strdesc,tblInvoiceDocDT.strUnit
ORDER BY tbldepartments.intdept,OrderByCol, tblInv.strDesc
END
IF(@IsOptAssets = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, COUNT(tblInvoiceDocDT.strPartNumber), SUM(tblInvoiceDocDT.decQty) AS Qty, SUM(tblInvoiceDocDT.decLineTotExc), SUM(tblInvoiceDocDT.decCOGS), SUM(tblInvoiceDocDT.decLineTotExc) - SUM(tblInvoiceDocDT.decCOGS) AS PROFIT, CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc AS OrderByCol,Isnull(Cast(tbldepartments.intdept AS VARCHAR), '0') + ' ' + Isnull(tbldepartments.strdesc, '<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber AND tblInvoiceDocDT.strLocation = tblInv.strLocName INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber LEFT JOIN tbldepartments ON tbldepartments.intdept = tblinvoicedoc.intdept WHERE (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND ISNULL(tblInvoiceDoc.intDept, 0) IN (SELECT Data FROM dbo.Split(''+@SQstrLocName+'', ','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
GROUP BY tblInvoiceDocDT.strPartNumber, tblInv.strDesc, (CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc),tbldepartments.intdept,tbldepartments.strdesc,tblInvoiceDocDT.strUnit 
ORDER BY tbldepartments.intdept,OrderByCol, tblInvoiceDocDT.strPartNumber
ELSE
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, COUNT(tblInvoiceDocDT.strPartNumber), SUM(tblInvoiceDocDT.decQty) AS Qty, SUM(tblInvoiceDocDT.decLineTotExc), SUM(tblInvoiceDocDT.decCOGS), SUM(tblInvoiceDocDT.decLineTotExc) - SUM(tblInvoiceDocDT.decCOGS) AS PROFIT, CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc AS OrderByCol,Isnull(Cast(tbldepartments.intdept AS VARCHAR), '0') + ' ' + Isnull(tbldepartments.strdesc, '<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber AND tblInvoiceDocDT.strLocation = tblInv.strLocName INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber LEFT JOIN tbldepartments ON tbldepartments.intdept = tblinvoicedoc.intdept WHERE (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND ISNULL(tblInvoiceDoc.intDept, 0) IN (SELECT Data FROM dbo.Split(''+@SQstrLocName+'', ','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
GROUP BY tblInvoiceDocDT.strPartNumber, tblInv.strDesc, (CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc),tbldepartments.intdept,tbldepartments.strdesc,tblInvoiceDocDT.strUnit
ORDER BY tbldepartments.intdept,OrderByCol, tblInv.strDesc
END
IF(@IsOptCategory = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, COUNT(tblInvoiceDocDT.strPartNumber), SUM(tblInvoiceDocDT.decQty) AS Qty, SUM(tblInvoiceDocDT.decLineTotExc), SUM(tblInvoiceDocDT.decCOGS), SUM(tblInvoiceDocDT.decLineTotExc) - SUM(tblInvoiceDocDT.decCOGS) AS PROFIT, tblInv.strCategory AS OrderByCol,Isnull(Cast(tbldepartments.intdept AS VARCHAR), '0') + ' ' + Isnull(tbldepartments.strdesc, '<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tbldepartments ON tbldepartments.intdept = tblinvoicedoc.intdept WHERE (strCategory IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND ISNULL(tblInvoiceDoc.intDept, 0) IN (SELECT Data FROM dbo.Split(''+@SQstrLocName+'', ','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
GROUP BY tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInv.strCategory,tbldepartments.intdept,tbldepartments.strdesc,tblInvoiceDocDT.strUnit
ORDER BY tbldepartments.intdept,OrderByCol, tblInvoiceDocDT.strPartNumber
ELSE
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, COUNT(tblInvoiceDocDT.strPartNumber), SUM(tblInvoiceDocDT.decQty) AS Qty, SUM(tblInvoiceDocDT.decLineTotExc), SUM(tblInvoiceDocDT.decCOGS), SUM(tblInvoiceDocDT.decLineTotExc) - SUM(tblInvoiceDocDT.decCOGS) AS PROFIT, tblInv.strCategory AS OrderByCol,Isnull(Cast(tbldepartments.intdept AS VARCHAR), '0') + ' ' + Isnull(tbldepartments.strdesc, '<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tbldepartments ON tbldepartments.intdept = tblinvoicedoc.intdept WHERE (strCategory IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND ISNULL(tblInvoiceDoc.intDept, 0) IN (SELECT Data FROM dbo.Split(''+@SQstrLocName+'', ','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
GROUP BY tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInv.strCategory,tbldepartments.intdept,tbldepartments.strdesc,tblInvoiceDocDT.strUnit
ORDER BY tbldepartments.intdept,OrderByCol, tblInv.strDesc
END
IF(@IsOptItems = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, COUNT(tblInvoiceDocDT.strPartNumber), SUM(tblInvoiceDocDT.decQty) AS Qty, SUM(tblInvoiceDocDT.decLineTotExc), SUM(tblInvoiceDocDT.decCOGS), SUM(tblInvoiceDocDT.decLineTotExc) - SUM(tblInvoiceDocDT.decCOGS) AS PROFIT, ''  AS OrderByCol,Isnull(Cast(tbldepartments.intdept AS VARCHAR), '0') + ' ' + Isnull(tbldepartments.strdesc, '<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber   LEFT JOIN tbldepartments ON tbldepartments.intdept = tblinvoicedoc.intdept WHERE (tblInvoiceDocDT.strPartNumber in (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND ISNULL(tblInvoiceDoc.intDept, 0) IN (SELECT Data FROM dbo.Split(''+@SQstrLocName+'', ','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
GROUP BY tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInv.strCategory,tbldepartments.intdept,tbldepartments.strdesc,tblInvoiceDocDT.strUnit
ORDER BY tbldepartments.intdept,OrderByCol, tblInvoiceDocDT.strPartNumber
ELSE
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, COUNT(tblInvoiceDocDT.strPartNumber), SUM(tblInvoiceDocDT.decQty) AS Qty, SUM(tblInvoiceDocDT.decLineTotExc), SUM(tblInvoiceDocDT.decCOGS), SUM(tblInvoiceDocDT.decLineTotExc) - SUM(tblInvoiceDocDT.decCOGS) AS PROFIT, ''  AS OrderByCol,Isnull(Cast(tbldepartments.intdept AS VARCHAR), '0') + ' ' + Isnull(tbldepartments.strdesc, '<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber   LEFT JOIN tbldepartments ON tbldepartments.intdept = tblinvoicedoc.intdept WHERE (tblInvoiceDocDT.strPartNumber in (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND ISNULL(tblInvoiceDoc.intDept, 0) IN (SELECT Data FROM dbo.Split(''+@SQstrLocName+'', ','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
GROUP BY tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInv.strCategory,tbldepartments.intdept,tbldepartments.strdesc,tblInvoiceDocDT.strUnit
ORDER BY tbldepartments.intdept,OrderByCol, tblInv.strDesc
END
IF(@IsOptService = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, COUNT(tblInvoiceDocDT.strPartNumber), SUM(tblInvoiceDocDT.decQty) AS Qty, SUM(tblInvoiceDocDT.decLineTotExc), SUM(tblInvoiceDocDT.decCOGS), SUM(tblInvoiceDocDT.decLineTotExc) - SUM(tblInvoiceDocDT.decCOGS) AS PROFIT, ''  AS OrderByCol,Isnull(Cast(tbldepartments.intdept AS VARCHAR), '0') + ' ' + Isnull(tbldepartments.strdesc, '<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tbldepartments ON tbldepartments.intdept = tblinvoicedoc.intdept WHERE (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND ISNULL(tblInvoiceDoc.intDept, 0) IN (SELECT Data FROM dbo.Split(''+@SQstrLocName+'', ','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
GROUP BY tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInv.strCategory,tbldepartments.intdept,tbldepartments.strdesc,tblInvoiceDocDT.strUnit
ORDER BY tbldepartments.intdept,OrderByCol, tblInvoiceDocDT.strPartNumber
ELSE
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, COUNT(tblInvoiceDocDT.strPartNumber), SUM(tblInvoiceDocDT.decQty) AS Qty, SUM(tblInvoiceDocDT.decLineTotExc), SUM(tblInvoiceDocDT.decCOGS), SUM(tblInvoiceDocDT.decLineTotExc) - SUM(tblInvoiceDocDT.decCOGS) AS PROFIT, ''  AS OrderByCol,Isnull(Cast(tbldepartments.intdept AS VARCHAR), '0') + ' ' + Isnull(tbldepartments.strdesc, '<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tbldepartments ON tbldepartments.intdept = tblinvoicedoc.intdept WHERE (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND ISNULL(tblInvoiceDoc.intDept, 0) IN (SELECT Data FROM dbo.Split(''+@SQstrLocName+'', ','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
GROUP BY tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInv.strCategory,tbldepartments.intdept,tbldepartments.strdesc,tblInvoiceDocDT.strUnit
ORDER BY tbldepartments.intdept,OrderByCol, tblInv.strDesc
END
IF(@IsOptBuyout = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, COUNT(tblInvoiceDocDT.strPartNumber), SUM(tblInvoiceDocDT.decQty) AS Qty, SUM(tblInvoiceDocDT.decLineTotExc), SUM(tblInvoiceDocDT.decCOGS), SUM(tblInvoiceDocDT.decLineTotExc) - SUM(tblInvoiceDocDT.decCOGS) AS PROFIT, ''  AS OrderByCol,tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tbldepartments ON tbldepartments.intdept = tblinvoicedoc.intdept WHERE (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND ISNULL(tblInvoiceDoc.intDept, 0) IN (SELECT Data FROM dbo.Split(''+@SQstrLocName+'', ','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
GROUP BY tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInv.strCategory,tbldepartments.intdept,tbldepartments.strdesc,tblInvoiceDocDT.strUnit
ORDER BY tbldepartments.intdept,OrderByCol, tblInvoiceDocDT.strPartNumber
ELSE
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, COUNT(tblInvoiceDocDT.strPartNumber), SUM(tblInvoiceDocDT.decQty) AS Qty, SUM(tblInvoiceDocDT.decLineTotExc), SUM(tblInvoiceDocDT.decCOGS), SUM(tblInvoiceDocDT.decLineTotExc) - SUM(tblInvoiceDocDT.decCOGS) AS PROFIT, ''  AS OrderByCol,tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tbldepartments ON tbldepartments.intdept = tblinvoicedoc.intdept WHERE (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND ISNULL(tblInvoiceDoc.intDept, 0) IN (SELECT Data FROM dbo.Split(''+@SQstrLocName+'', ','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
GROUP BY tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInv.strCategory,tbldepartments.intdept,tbldepartments.strdesc,tblInvoiceDocDT.strUnit
ORDER BY tbldepartments.intdept,OrderByCol, tblInv.strDesc
END
IF(@IsOptAll = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, COUNT(tblInvoiceDocDT.strPartNumber), SUM(tblInvoiceDocDT.decQty) AS Qty, SUM(tblInvoiceDocDT.decLineTotExc), SUM(tblInvoiceDocDT.decCOGS), SUM(tblInvoiceDocDT.decLineTotExc) - SUM(tblInvoiceDocDT.decCOGS) AS PROFIT, ''  AS OrderByCol,Isnull(Cast(tbldepartments.intdept AS VARCHAR), '0') + ' ' + Isnull(tbldepartments.strdesc, '<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tbldepartments ON tbldepartments.intdept = tblinvoicedoc.intdept WHERE (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND ISNULL(tblInvoiceDoc.intDept, 0) IN (SELECT Data FROM dbo.Split(''+@SQstrLocName+'', ','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
GROUP BY tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInv.strCategory,tbldepartments.intdept,tbldepartments.strdesc,tblInvoiceDocDT.strUnit
ORDER BY tbldepartments.intdept,OrderByCol, tblInvoiceDocDT.strPartNumber
ELSE
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, COUNT(tblInvoiceDocDT.strPartNumber), SUM(tblInvoiceDocDT.decQty) AS Qty, SUM(tblInvoiceDocDT.decLineTotExc), SUM(tblInvoiceDocDT.decCOGS), SUM(tblInvoiceDocDT.decLineTotExc) - SUM(tblInvoiceDocDT.decCOGS) AS PROFIT, ''  AS OrderByCol,Isnull(Cast(tbldepartments.intdept AS VARCHAR), '0') + ' ' + Isnull(tbldepartments.strdesc, '<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tbldepartments ON tbldepartments.intdept = tblinvoicedoc.intdept WHERE (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND ISNULL(tblInvoiceDoc.intDept, 0) IN (SELECT Data FROM dbo.Split(''+@SQstrLocName+'', ','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
GROUP BY tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInv.strCategory,tbldepartments.intdept,tbldepartments.strdesc,tblInvoiceDocDT.strUnit
ORDER BY tbldepartments.intdept,OrderByCol, tblInv.strDesc
END
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvSalesGetDetailsReportData](
@IsOptWarehouse bit,
@IsOptAcctSets bit,
@IsOptAssets bit,
@IsOptCategory bit,
@IsOptItems bit,
@IsOptService bit,
@IsOptBuyout bit,
@IsOptAll bit,
@IsOptActiveItems bit,
@IsOptInActiveItems bit,
@IsOptAllItems bit,
@SQstrLocName NVARCHAR(100),
@SQAcctSet NVARCHAR(MAX),
@SQStart NVARCHAR(19),
@SQEnd NVARCHAR(19),
@PLInvSortDescription bit
)  
AS  
BEGIN 
IF(@IsOptWarehouse = 1 AND @IsOptItems = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, ISNULL(tblInvoiceDoc.lngJourID,0), tblInvoiceDocDT.decQty, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDT.decCOGS, (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS PROFIT, '' AS OrderByCol ,tblInvoiceDocDT.strLocation,tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
WHERE (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND (tblInvoiceDocDT.strLocation IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',',')))
ORDER BY tblInvoiceDocDT.strLocation, OrderByCol, tblInvoiceDocDT.strPartNumber, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID
ELSE
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, ISNULL(tblInvoiceDoc.lngJourID,0), tblInvoiceDocDT.decQty, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDT.decCOGS, (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS PROFIT, '' AS OrderByCol ,tblInvoiceDocDT.strLocation,tblInvoiceDocDT.strUnit AS Unit  FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
WHERE (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND (tblInvoiceDocDT.strLocation IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',',')))
ORDER BY tblInvoiceDocDT.strLocation, OrderByCol, tblInv.strDesc, tblInvoiceDocDT.strPartNumber,tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID
END
ELSE
BEGIN
IF(@IsOptAcctSets = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, ISNULL(tblInvoiceDoc.lngJourID,0), tblInvoiceDocDT.decQty, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDT.decCOGS, (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS PROFIT, tblInv.strAcctSet AS OrderByCol,ISNULL(cast(tblDepartments.intDept AS VARCHAR),'0')+' '+ISNULL(tblDepartments.strDesc,'<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit   FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber AND tblInvoiceDocDT.strLocation = tblInv.strLocName LEFT JOIN tblDepartments ON tblDepartments.intDept=tblInvoiceDoc.intDept
WHERE (tblInv.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND  ISNULL(tblInvoiceDoc.intDept,0) in (SELECT Data FROM dbo.Split(''+@SQstrLocName+'',','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
ORDER BY tblInvoiceDoc.intDept,OrderByCol, tblInvoiceDocDT.strPartNumber, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID
ELSE
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, ISNULL(tblInvoiceDoc.lngJourID,0), tblInvoiceDocDT.decQty, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDT.decCOGS, (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS PROFIT, tblInv.strAcctSet AS OrderByCol,ISNULL(cast(tblDepartments.intDept AS VARCHAR),'0')+' '+ISNULL(tblDepartments.strDesc,'<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit   FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber AND tblInvoiceDocDT.strLocation = tblInv.strLocName LEFT JOIN tblDepartments ON tblDepartments.intDept=tblInvoiceDoc.intDept
WHERE (tblInv.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND  ISNULL(tblInvoiceDoc.intDept,0) in (SELECT Data FROM dbo.Split(''+@SQstrLocName+'',','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
ORDER BY tblInvoiceDoc.intDept, OrderByCol, tblInv.strDesc, tblInvoiceDocDT.strPartNumber,tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID
END
IF(@IsOptAssets = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, ISNULL(tblInvoiceDoc.lngJourID,0), tblInvoiceDocDT.decQty, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDT.decCOGS, (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS PROFIT, (CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc) AS OrderByCol,ISNULL(cast(tblDepartments.intDept AS VARCHAR),'0')+' '+ISNULL(tblDepartments.strDesc,'<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit   FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber AND tblInvoiceDocDT.strLocation = tblInv.strLocName LEFT JOIN tblDepartments ON tblDepartments.intDept=tblInvoiceDoc.intDept  INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
WHERE (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND  ISNULL(tblInvoiceDoc.intDept,0) in (SELECT Data FROM dbo.Split(''+@SQstrLocName+'',','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
ORDER BY tblInvoiceDoc.intDept,OrderByCol, tblInvoiceDocDT.strPartNumber, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID
ELSE
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, ISNULL(tblInvoiceDoc.lngJourID,0), tblInvoiceDocDT.decQty, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDT.decCOGS, (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS PROFIT, (CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc) AS OrderByCol,ISNULL(cast(tblDepartments.intDept AS VARCHAR),'0')+' '+ISNULL(tblDepartments.strDesc,'<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit   FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber AND tblInvoiceDocDT.strLocation = tblInv.strLocName LEFT JOIN tblDepartments ON tblDepartments.intDept=tblInvoiceDoc.intDept  INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
WHERE (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND  ISNULL(tblInvoiceDoc.intDept,0) in (SELECT Data FROM dbo.Split(''+@SQstrLocName+'',','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
ORDER BY tblInvoiceDoc.intDept, OrderByCol, tblInv.strDesc, tblInvoiceDocDT.strPartNumber,tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID
END
IF(@IsOptCategory = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, ISNULL(tblInvoiceDoc.lngJourID,0), tblInvoiceDocDT.decQty, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDT.decCOGS, (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS PROFIT, tblInv.strCategory AS OrderByCol,ISNULL(cast(tblDepartments.intDept AS VARCHAR),'0')+' '+ISNULL(tblDepartments.strDesc,'<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit   FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblDepartments ON tblDepartments.intDept=tblInvoiceDoc.intDept
WHERE (strCategory IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND  ISNULL(tblInvoiceDoc.intDept,0) in (SELECT Data FROM dbo.Split(''+@SQstrLocName+'',','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
ORDER BY tblInvoiceDoc.intDept,OrderByCol, tblInvoiceDocDT.strPartNumber, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID
ELSE
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, ISNULL(tblInvoiceDoc.lngJourID,0), tblInvoiceDocDT.decQty, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDT.decCOGS, (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS PROFIT, tblInv.strCategory AS OrderByCol,ISNULL(cast(tblDepartments.intDept AS VARCHAR),'0')+' '+ISNULL(tblDepartments.strDesc,'<<No Department>>') AS strDeptName, tblInvoiceDocDT.strUnit AS Unit   FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblDepartments ON tblDepartments.intDept=tblInvoiceDoc.intDept
WHERE (strCategory IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND  ISNULL(tblInvoiceDoc.intDept,0) in (SELECT Data FROM dbo.Split(''+@SQstrLocName+'',','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
ORDER BY tblInvoiceDoc.intDept, OrderByCol, tblInv.strDesc, tblInvoiceDocDT.strPartNumber,tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID
END
IF(@IsOptItems = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, ISNULL(tblInvoiceDoc.lngJourID,0), tblInvoiceDocDT.decQty, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDT.decCOGS, (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS PROFIT, '' AS OrderByCol ,ISNULL(cast(tblDepartments.intDept AS VARCHAR),'0')+' '+ISNULL(tblDepartments.strDesc,'<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit   FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblDepartments ON tblDepartments.intDept=tblInvoiceDoc.intDept
WHERE (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND  ISNULL(tblInvoiceDoc.intDept,0) in (SELECT Data FROM dbo.Split(''+@SQstrLocName+'',','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
ORDER BY tblInvoiceDoc.intDept,OrderByCol, tblInvoiceDocDT.strPartNumber, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID
ELSE
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, ISNULL(tblInvoiceDoc.lngJourID,0), tblInvoiceDocDT.decQty, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDT.decCOGS, (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS PROFIT, '' AS OrderByCol ,ISNULL(cast(tblDepartments.intDept AS VARCHAR),'0')+' '+ISNULL(tblDepartments.strDesc,'<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit   FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblDepartments ON tblDepartments.intDept=tblInvoiceDoc.intDept
WHERE (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND  ISNULL(tblInvoiceDoc.intDept,0) in (SELECT Data FROM dbo.Split(''+@SQstrLocName+'',','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
ORDER BY tblInvoiceDoc.intDept, OrderByCol, tblInv.strDesc, tblInvoiceDocDT.strPartNumber,tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID
END
IF(@IsOptService = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, ISNULL(tblInvoiceDoc.lngJourID,0), tblInvoiceDocDT.decQty, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDT.decCOGS, (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS PROFIT, '' AS OrderByCol,ISNULL(cast(tblDepartments.intDept AS VARCHAR),'0')+' '+ISNULL(tblDepartments.strDesc,'<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblDepartments ON tblDepartments.intDept=tblInvoiceDoc.intDept
WHERE (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND  ISNULL(tblInvoiceDoc.intDept,0) in (SELECT Data FROM dbo.Split(''+@SQstrLocName+'',','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
ORDER BY tblInvoiceDoc.intDept,OrderByCol, tblInvoiceDocDT.strPartNumber, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID
ELSE
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, ISNULL(tblInvoiceDoc.lngJourID,0), tblInvoiceDocDT.decQty, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDT.decCOGS, (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS PROFIT, '' AS OrderByCol,ISNULL(cast(tblDepartments.intDept AS VARCHAR),'0')+' '+ISNULL(tblDepartments.strDesc,'<<No Department>>') AS strDeptName, tblInvoiceDocDT.strUnit AS Unit    FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblDepartments ON tblDepartments.intDept=tblInvoiceDoc.intDept
WHERE (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND  ISNULL(tblInvoiceDoc.intDept,0) in (SELECT Data FROM dbo.Split(''+@SQstrLocName+'',','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
ORDER BY tblInvoiceDoc.intDept, OrderByCol, tblInv.strDesc, tblInvoiceDocDT.strPartNumber,tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID
END
IF(@IsOptBuyout = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, ISNULL(tblInvoiceDoc.lngJourID,0), tblInvoiceDocDT.decQty, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDT.decCOGS, (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS PROFIT, '' AS OrderByCol,ISNULL(cast(tblDepartments.intDept AS VARCHAR),'0')+' '+ISNULL(tblDepartments.strDesc,'<<No Department>>') AS strDeptName ,tblInvoiceDocDT.strUnit AS Unit   FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblDepartments ON tblDepartments.intDept=tblInvoiceDoc.intDept
WHERE (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND  ISNULL(tblInvoiceDoc.intDept,0) in (SELECT Data FROM dbo.Split(''+@SQstrLocName+'',','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
ORDER BY tblInvoiceDoc.intDept,OrderByCol, tblInvoiceDocDT.strPartNumber, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID
ELSE
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, ISNULL(tblInvoiceDoc.lngJourID,0), tblInvoiceDocDT.decQty, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDT.decCOGS, (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS PROFIT, '' AS OrderByCol,ISNULL(cast(tblDepartments.intDept AS VARCHAR),'0')+' '+ISNULL(tblDepartments.strDesc,'<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit    FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblDepartments ON tblDepartments.intDept=tblInvoiceDoc.intDept
WHERE (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND  ISNULL(tblInvoiceDoc.intDept,0) in (SELECT Data FROM dbo.Split(''+@SQstrLocName+'',','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
ORDER BY tblInvoiceDoc.intDept, OrderByCol, tblInv.strDesc, tblInvoiceDocDT.strPartNumber,tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID
END
IF(@IsOptAll = 1)
BEGIN
IF(@PLInvSortDescription = 0)
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, ISNULL(tblInvoiceDoc.lngJourID,0), tblInvoiceDocDT.decQty, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDT.decCOGS, (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS PROFIT, '' AS OrderByCol,ISNULL(cast(tblDepartments.intDept AS VARCHAR),'0')+' '+ISNULL(tblDepartments.strDesc,'<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit   FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblDepartments ON tblDepartments.intDept=tblInvoiceDoc.intDept
WHERE (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND  ISNULL(tblInvoiceDoc.intDept,0) in (SELECT Data FROM dbo.Split(''+@SQstrLocName+'',','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
ORDER BY tblInvoiceDoc.intDept,OrderByCol, tblInvoiceDocDT.strPartNumber, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID
ELSE
SELECT tblInvoiceDocDT.strPartNumber, tblInv.strDesc, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, ISNULL(tblInvoiceDoc.lngJourID,0), tblInvoiceDocDT.decQty, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDT.decCOGS, (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS PROFIT, '' AS OrderByCol,ISNULL(cast(tblDepartments.intDept AS VARCHAR),'0')+' '+ISNULL(tblDepartments.strDesc,'<<No Department>>') AS strDeptName,tblInvoiceDocDT.strUnit AS Unit   FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblDepartments ON tblDepartments.intDept=tblInvoiceDoc.intDept
WHERE (tblInvoiceDocDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ',')))
AND (tblInvoiceDoc.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND  ISNULL(tblInvoiceDoc.intDept,0) in (SELECT Data FROM dbo.Split(''+@SQstrLocName+'',','))
AND (CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE tblJournal.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournal.lngJourID = tblInvoiceDoc.lngJourID AND tblJournal.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEnt.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE tblJournalLY.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalLY.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalLY.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntLY.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0 OR CASE WHEN SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'IN-' OR SUBSTRING(tblInvoiceDoc.strInvDocID,0,3) = 'CN-' THEN ISNULL((SELECT COUNT(ISNULL(intDept,0)) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID WHERE tblJournalHist.dteJournalDate = tblInvoiceDoc.dteJournalDate AND tblJournalHist.lngJourID = tblInvoiceDoc.lngJourID AND tblJournalHist.strSource = tblInvoiceDoc.strInvDocID AND ISNULL(tblJournalEntHist.intDept,0) IN (SELECT * FROM fnSplitStringAsTable(''+@SQstrLocName+'',','))),0) ELSE 1 END > 0)
ORDER BY tblInvoiceDoc.intDept, OrderByCol, tblInv.strDesc, tblInvoiceDocDT.strPartNumber,tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID
END
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvSegSalesGetSegmentData]
AS
BEGIN
SELECT strSeg1Name, strSeg2Name, strSeg3Name, strSeg4Name FROM tblInvNumConv
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvSegSalesGetCustomerData](
@IsOptSearch bit,
@IsChkInactive bit,
@SearchText NVARCHAR(MAX),
@blnBPToolsMode bit,
@SQUserName VARCHAR(200)
)  
AS  
BEGIN 
IF(@IsOptSearch = 1)
BEGIN
If Len(@SearchText) > 2
BEGIN
IF(@ISChkInactive = 1)
SELECT strCustName as CustomerName, strCustDesc as Description FROM tblCustomers WHERE (strCustName LIKE '%'+@SearchText+'%' OR strCustDesc LIKE '%'+@SearchText+'%')
AND ((@blnBPToolsMode = 0 AND (strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''+@SQUserName+'')))))
ORDER BY strCustName
Else
SELECT strCustName as CustomerName, strCustDesc as Description FROM tblCustomers WHERE bitInactive = 0 AND (strCustName LIKE '%'+@SearchText+'%' OR strCustDesc LIKE '%'+@SearchText+'%')
AND ((@blnBPToolsMode = 0 AND (strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''+@SQUserName+'')))))
ORDER BY strCustName
END   
ELSE 
return null;
END
ELSE
BEGIN
IF(@ISChkInactive = 1)
SELECT strCustName as CustomerName, strCustDesc as Description FROM tblCustomers
WHERE ((@blnBPToolsMode = 0 AND (strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''+@SQUserName+'')))))
ORDER BY strCustName
Else
SELECT strCustName as CustomerName, strCustDesc as Description FROM tblCustomers WHERE bitInactive = 0
AND ((@blnBPToolsMode = 0 AND (strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''+@SQUserName+'')))))
ORDER BY strCustName
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvSegSalesGetItemSeg1Data](
@IsChkInactiveSeg1 bit,
@IsOptBuyoutItems bit,
@IsOptAllItems bit,
@blnBPToolsMode bit,
@SQUserName VARCHAR(200)
)  
AS  
BEGIN  
IF(@IsChkInactiveSeg1 = 0)
SELECT DISTINCT strItemSegment1 as ItemSegment1 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment1,'') <> ''
AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+@SQUserName+'')))))
AND ((@IsOptBuyoutItems = 1 AND (intType = 11))  OR (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 1)) OR  (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 0) AND (intType <> 11 )))  ORDER BY strItemSegment1
ELSE
SELECT DISTINCT strItemSegment1 as ItemSegment1 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment1,'') <> ''
AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+@SQUserName+'')))))
AND ((@IsOptBuyoutItems = 1 AND (intType = 11))  OR (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 1)) OR  (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 0) AND (intType <> 11 )))  ORDER BY strItemSegment1
END	
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvSegSalesGetItemSeg2Data](
@IsChkInactiveSeg2 bit,
@IsOptBuyoutItems bit,
@IsOptAllItems bit,
@blnBPToolsMode bit,
@SQUserName VARCHAR(200)
)  
AS  
BEGIN  
IF(@IsChkInactiveSeg2 = 0)
SELECT DISTINCT strItemSegment2 as ItemSegment2 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment2,'') <> ''
AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+@SQUserName+'')))))
AND ((@IsOptBuyoutItems = 1 AND (intType = 11))  OR (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 1)) OR  (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 0) AND (intType <> 11 )))  ORDER BY strItemSegment2
ELSE
SELECT DISTINCT strItemSegment2 as ItemSegment2 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment2,'') <> ''
AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+@SQUserName+'')))))
AND ((@IsOptBuyoutItems = 1 AND (intType = 11))  OR (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 1)) OR  (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 0) AND (intType <> 11 )))  ORDER BY strItemSegment2
END	
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvSegSalesGetItemSeg3Data](
@IsChkInactiveSeg3 bit,
@IsOptBuyoutItems bit,
@IsOptAllItems bit,
@blnBPToolsMode bit,
@SQUserName VARCHAR(200)
)  
AS  
BEGIN  
IF(@IsChkInactiveSeg3 = 0)
SELECT DISTINCT strItemSegment3 as ItemSegment3 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment3,'') <> ''
AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+@SQUserName+'')))))
AND ((@IsOptBuyoutItems = 1 AND (intType = 11))  OR (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 1)) OR  (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 0) AND (intType <> 11 )))  ORDER BY strItemSegment3
ELSE
SELECT DISTINCT strItemSegment3 as ItemSegment3 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment3,'') <> ''
AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+@SQUserName+'')))))
AND ((@IsOptBuyoutItems = 1 AND (intType = 11))  OR (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 1)) OR  (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 0) AND (intType <> 11 )))  ORDER BY strItemSegment3
END	
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvSegSalesGetItemSeg4Data](
@IsChkInactiveSeg4 bit,
@IsOptBuyoutItems bit,
@IsOptAllItems bit,
@blnBPToolsMode bit,
@SQUserName VARCHAR(200)
)  
AS  
BEGIN  
IF(@IsChkInactiveSeg4 = 0)
SELECT DISTINCT strItemSegment4 as ItemSegment4 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment4,'') <> ''
AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+@SQUserName+'')))))
AND ((@IsOptBuyoutItems = 1 AND (intType = 11))  OR (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 1)) OR  (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 0) AND (intType <> 11 )))  ORDER BY strItemSegment4
ELSE
SELECT DISTINCT strItemSegment4 as ItemSegment4 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment4,'') <> ''
AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+@SQUserName+'')))))
AND ((@IsOptBuyoutItems = 1 AND (intType = 11))  OR (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 1)) OR  (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 0) AND (intType <> 11 )))  ORDER BY strItemSegment4
END	
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvSegSalesGetReportData] (
	@IsOptSummaryChecked BIT
	,@IsOptDetailChecked BIT
	,@IsSegment1 BIT
	,@IsChkInactiveSeg1 BIT
	,@SQItemSegment1 VARCHAR(max)
	,@IsSegment2 BIT
	,@IsChkInactiveSeg2 BIT
	,@SQItemSegment2 VARCHAR(max)
	,@IsSegment3 BIT
	,@IsChkInactiveSeg3 BIT
	,@SQItemSegment3 VARCHAR(max)
	,@IsSegment4 BIT
	,@IsChkInactiveSeg4 BIT
	,@SQItemSegment4 VARCHAR(max)
	,@IsCustSelect BIT
	,@IsChkInactive BIT
	,@SQCustName VARCHAR(max)
	,@IsOptBuyoutItems BIT
	,@IsOptAllItems BIT
	,@SQStart VARCHAR(19)
	,@SQEnd VARCHAR(19)
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)

	IF (@IsOptSummaryChecked = 1)
		SET @Query = 'SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, SUM(tblInvoiceDocDT.decQty), MAX(tblInvoiceDocDT.decPriceEaInc), SUM(tblInvoiceDocDT.decLineTotInc) FROM tblInvTracking INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID INNER JOIN tblInv ON tblInv.strPartNumber = tblInvTrackingDT.strPartNumber INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvTracking.strSource AND tblInvTrackingDT.strPartNumber = tblInvoiceDocDT.strPartNumber LEFT JOIN tblCustomers ON tblCustomers.strCustName = tblInvTracking.strComment'

	IF (@IsOptDetailChecked = 1)
		SET @Query = 'SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.strSource, tblInvTracking.dteJournalDate, tblInvoiceDocDT.decQty, tblInvoiceDocDT.decPriceEaInc, tblInvoiceDocDT.decLineTotInc, ISNULL(tblCustomers.strCustDesc, '''') FROM tblInvTracking INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID INNER JOIN tblInv ON tblInv.strPartNumber = tblInvTrackingDT.strPartNumber INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvTracking.strSource AND tblInvTrackingDT.strPartNumber = tblInvoiceDocDT.strPartNumber LEFT JOIN tblCustomers ON tblCustomers.strCustName = tblInvTracking.strComment'

	IF (@IsSegment1 = 1)
	BEGIN
		SET @Query += ' INNER JOIN tblInv T1 ON tblInvTrackingDT.strPartNumber = T1.strPartNumber AND T1.strItemSegment1 IN (SELECT strItemSegment1 FROM tblInv WHERE (T1.strItemSegment1 IN (SELECT * FROM fnSplitStringAsTable(''' + @SQItemSegment1 + ''', '',''))))'

		IF (@IsOptBuyoutItems = 1)
			SET @Query += 'AND T1.intType = 11'
		ELSE
		BEGIN
			IF (@IsOptAllItems = 0)
				SET @Query += ' AND T1.intType <> 11'
		END
	END
	ELSE
	BEGIN
		IF (@IsChkInactiveSeg1 = 0)
			SET @Query += ' INNER JOIN tblInv T1 ON tblInvTrackingDT.strPartNumber = T1.strPartNumber AND T1.strItemSegment1 IN (SELECT strItemSegment1 FROM tblInv WHERE (bitInactive = 0))'
		ELSE
			SET @Query += ' INNER JOIN tblInv T1 ON tblInvTrackingDT.strPartNumber = T1.strPartNumber AND T1.strItemSegment1 IN (SELECT strItemSegment1 FROM tblInv)'

		IF (@IsOptBuyoutItems = 1)
			SET @Query += 'AND T1.intType = 11'
		ELSE
		BEGIN
			IF (@IsOptAllItems = 0)
				SET @Query += ' AND T1.intType <> 11'
		END
	END

	IF (@IsSegment2 = 1)
	BEGIN
		SET @Query += ' INNER JOIN tblInv T2 ON tblInvTrackingDT.strPartNumber = T2.strPartNumber AND T2.strItemSegment2 IN (SELECT strItemSegment2 FROM tblInv WHERE (T2.strItemSegment2 IN (SELECT * FROM fnSplitStringAsTable(''' + @SQItemSegment2 + ''', '',''))))'

		IF (@IsOptBuyoutItems = 1)
			SET @Query += 'AND T2.intType = 11'
		ELSE
		BEGIN
			IF (@IsOptAllItems = 0)
				SET @Query += ' AND T2.intType <> 11'
		END
	END
	ELSE
	BEGIN
		IF (@IsChkInactiveSeg2 = 0)
			SET @Query += ' INNER JOIN tblInv T2 ON tblInvTrackingDT.strPartNumber = T2.strPartNumber AND T2.strItemSegment2 IN (SELECT strItemSegment2 FROM tblInv WHERE (bitInactive = 0))'
		ELSE
			SET @Query += ' INNER JOIN tblInv T2 ON tblInvTrackingDT.strPartNumber = T2.strPartNumber AND T2.strItemSegment2 IN (SELECT strItemSegment2 FROM tblInv)'

		IF (@IsOptBuyoutItems = 1)
			SET @Query += 'AND T2.intType = 11'
		ELSE
		BEGIN
			IF (@IsOptAllItems = 0)
				SET @Query += ' AND T2.intType <> 11'
		END
	END

	IF (@IsSegment3 = 1)
	BEGIN
		SET @Query += ' INNER JOIN tblInv T3 ON tblInvTrackingDT.strPartNumber = T3.strPartNumber AND T3.strItemSegment3 IN (SELECT strItemSegment3 FROM tblInv WHERE (T3.strItemSegment3 IN (SELECT * FROM fnSplitStringAsTable(''' + @SQItemSegment3 + ''', '',''))))'

		IF (@IsOptBuyoutItems = 1)
			SET @Query += 'AND T3.intType = 11'
		ELSE
		BEGIN
			IF (@IsOptAllItems = 0)
				SET @Query += ' AND T3.intType <> 11'
		END
	END
	ELSE
	BEGIN
		IF (@IsChkInactiveSeg3 = 0)
			SET @Query += ' INNER JOIN tblInv T3 ON tblInvTrackingDT.strPartNumber = T3.strPartNumber AND T3.strItemSegment3 IN (SELECT strItemSegment3 FROM tblInv WHERE (bitInactive = 0))'
		ELSE
			SET @Query += ' INNER JOIN tblInv T3 ON tblInvTrackingDT.strPartNumber = T3.strPartNumber AND T3.strItemSegment3 IN (SELECT strItemSegment3 FROM tblInv)'

		IF (@IsOptBuyoutItems = 1)
			SET @Query += 'AND T3.intType = 11'
		ELSE
		BEGIN
			IF (@IsOptAllItems = 0)
				SET @Query += ' AND T3.intType <> 11'
		END
	END

	IF (@IsSegment4 = 1)
	BEGIN
		SET @Query += ' INNER JOIN tblInv T4 ON tblInvTrackingDT.strPartNumber = T4.strPartNumber AND T4.strItemSegment4 IN (SELECT strItemSegment4 FROM tblInv WHERE (T3.strItemSegment4 IN (SELECT * FROM fnSplitStringAsTable(''' + @SQItemSegment4 + ''', '',''))))'

		IF (@IsOptBuyoutItems = 1)
			SET @Query += 'AND T4.intType = 11'
		ELSE
		BEGIN
			IF (@IsOptAllItems = 0)
				SET @Query += ' AND T4.intType <> 11'
		END
	END
	ELSE
	BEGIN
		IF (@IsChkInactiveSeg4 = 0)
			SET @Query += ' INNER JOIN tblInv T4 ON tblInvTrackingDT.strPartNumber = T4.strPartNumber AND T4.strItemSegment4 IN (SELECT strItemSegment4 FROM tblInv WHERE (bitInactive = 0))'
		ELSE
			SET @Query += ' INNER JOIN tblInv T4 ON tblInvTrackingDT.strPartNumber = T4.strPartNumber AND T4.strItemSegment4 IN (SELECT strItemSegment4 FROM tblInv)'

		IF (@IsOptBuyoutItems = 1)
			SET @Query += 'AND T4.intType = 11'
		ELSE
		BEGIN
			IF (@IsOptAllItems = 0)
				SET @Query += ' AND T4.intType <> 11'
		END
	END

	IF (@IsCustSelect = 1)
		SET @Query += ' WHERE tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCustName + ''', '',''))'
	ELSE
	BEGIN
		IF (@IsChkInactive = 0)
			SET @Query += ' WHERE tblCustomers.strCustName IN (SELECT strCustName FROM tblCustomers WHERE (bitInactive = 0))'
		ELSE
			SET @Query += ' WHERE tblCustomers.strCustName IN (SELECT strCustName FROM tblCustomers)'
	END

	IF (@IsOptSummaryChecked = 1)
		SET @Query += ' AND (tblInvTracking.dteJournalDate BETWEEN ''' + @SQStart + ''' AND ''' + @SQEnd + ''') AND tblInvTracking.intModule = 2 AND tblInv.bitItemNumConvUsed = 1 GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc ORDER BY tblInvTrackingDT.strPartNumber'

	IF (@IsOptDetailChecked = 1)
		SET @Query += ' AND (tblInvTracking.dteJournalDate BETWEEN ''' + @SQStart + ''' AND ''' + @SQEnd + ''') AND tblInvTracking.intModule = 2 AND tblInv.bitItemNumConvUsed = 1  ORDER BY tblInvTrackingDT.strPartNumber'

	PRINT @Query

	EXEC sp_Executesql @Query
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[prRptGetBinItemsForSetupFromWPF](   
@SQstrLocName nvarchar(100),    
@SQstrSearch nvarchar(100) = NULL,    
@SQbitIncludeInActive bit,    
@SQbitItem bit = 1    
)
AS    
BEGIN    
--SET NOCOUNT ON added to prevent extra result sets FROM    
--interfering with SELECT statements.    
SET NOCOUNT ON;    
IF @SQbitItem = 1    
BEGIN    
SELECT cast(0 as bigint) As BinId ,tblInvExt.strPartNumber As BinCode,tblInv.strDesc As Description    
FROM tblInvExt INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber    
WHERE strLocName = @SQstrLocName AND ((tblInvExt.strPartNumber LIKE '%' + @SQstrSearch + '%' OR tblInv.strDesc LIKE '%' + @SQstrSearch + '%') OR @SQstrSearch IS NULL)    
AND ((@SQbitIncludeInActive = 1 AND (tblInv.bitInactive = 0 OR tblInv.bitInactive = 1)) OR (@SQbitIncludeInActive = 0 AND tblInv.bitInactive = 0)) AND intType=1    
GROUP BY tblInvExt.strPartNumber,tblInv.strDesc ORDER BY tblInvExt.strPartNumber
END    
ELSE    
BEGIN    
SELECT lngID AS BinId,tblInvLocBin.strBinCode as BinCode,tblInvLocBin.strDescription as Description FROM tblInvLocBin     
WHERE tblInvLocBin.strLocName=@SQstrLocName AND ((tblInvLocBin.strBinCode LIKE '%' + @SQstrSearch + '%' OR tblInvLocBin.strDescription LIKE '%' + @SQstrSearch + '%') OR @SQstrSearch IS NULL)    
--AND ((@SQbitIncludeInActive = 1 AND (tblInv.bitInactive = 0 OR tblInv.bitInactive = 1)) OR (@SQbitIncludeInActive = 0 AND tblInv.bitInactive = 0))    
ORDER BY tblInvLocBin.strBinCode    
END    
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvSynBinGetReportData](
@IsOptItem bit,
@SQTypeSN varchar(10),
@SQPartNumber varchar(200),
@SQLocName varchar(200),
@SQTypeLot varchar(10)
)
AS 
BEGIN


IF(@IsOptItem = 1)
BEGIN
SELECT IE.strBinCode AS PartNumber, ISE.strSerialNumber AS SerialNumber, ISE.strLocName AS LocName, ISE.decQty, GETDATE() AS ExpiryDate, ISE.bitDimensionExist AS DimensionExist, ISE.strDimension AS Dimension,strBinCode =z.strPartNumber FROM tblInvSerialExt ISE INNER JOIN (SELECT INV.strPartNumber, IE.strLocName FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType INNER JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber WHERE (INV.bitInvSerialType = 1) AND (IST.intType = ''+@SQTypeSN+'')) Z ON ISE.strPartNumber = Z.strPartNumber  AND ISE.strLocName = Z.strLocName INNER JOIN tblInvLocBin IE ON ISE.lngBinId = IE.lngId And z.strLocName=Ie.strLocName
WHERE (ISE.decQty > 0) AND (ISE.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQPartNumber+'',','))) AND ISE.strLocName=''+@SQLocName+''
UNION ALL 
SELECT IE.strBinCode AS PartNumber, ILE.strLotNumber AS SerialNumber, ILE.strLocName AS LocName, ILE.decQty, ILE.dteExpiryDate AS ExpiryDate, 0 AS DimensionExist, '' AS Dimension,strBinCode =z.strPartNumber FROM tblInvLotExt ILE INNER JOIN (SELECT INV.strPartNumber, IE.strLocName FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType INNER JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber WHERE (INV.bitInvSerialType = 1) AND (IST.intType = ''+@SQTypeLot+'')) Z ON ILE.strPartNumber = Z.strPartNumber AND ILE.strLocName = Z.strLocName INNER JOIN tblInvLocBin IE ON ILE.lngBinId = IE.lngId And z.strLocName=Ie.strLocName
WHERE (ILE.decQty > 0) AND (ILE.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQPartNumber+'',','))) AND ILE.strLocName=''+@SQLocName+''
END
else
BEGIN  
SELECT ISE.strPartNumber AS PartNumber, ISE.strSerialNumber AS SerialNumber, ISE.strLocName AS LocName, ISE.decQty, GETDATE() AS ExpiryDate, ISE.bitDimensionExist AS DimensionExist, ISE.strDimension AS Dimension,strBinCode FROM tblInvSerialExt ISE INNER JOIN (SELECT INV.strPartNumber, IE.strLocName  FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType INNER JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber WHERE (INV.bitInvSerialType = 1) AND (IST.intType = ''+@SQTypeSN+'')) Z ON ISE.strPartNumber = Z.strPartNumber  AND ISE.strLocName = Z.strLocName INNER JOIN tblInvLocBin IE ON ISE.lngBinId = IE.lngId And z.strLocName=Ie.strLocName
WHERE (ISE.decQty > 0) AND (IE.lngId IN (SELECT * FROM fnSplitStringAsTable(''+@SQPartNumber+'',','))) AND ISE.strLocName=''+@SQLocName+'' 
UNION ALL 
SELECT ILE.strPartNumber AS PartNumber, ILE.strLotNumber AS SerialNumber, ILE.strLocName AS LocName, ILE.decQty, ILE.dteExpiryDate AS ExpiryDate, 0 AS DimensionExist, '' AS Dimension,strBinCode FROM tblInvLotExt ILE INNER JOIN (SELECT INV.strPartNumber, IE.strLocName FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType INNER JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber WHERE (INV.bitInvSerialType = 1) AND (IST.intType = ''+@SQTypeLot+'')) Z ON ILE.strPartNumber = Z.strPartNumber AND ILE.strLocName = Z.strLocName INNER JOIN tblInvLocBin IE ON ILE.lngBinId = IE.lngId And z.strLocName=Ie.strLocName
WHERE (ILE.decQty > 0) AND (IE.lngId IN (SELECT * FROM fnSplitStringAsTable(''+@SQPartNumber+'',','))) AND ILE.strLocName=''+@SQLocName+''
end
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvSynLocSumGetReportData](
@IsOptCurrent bit,
@SQAsAtDate varchar(19)
)
AS  
BEGIN 
IF(@IsOptCurrent = 1)
SELECT strLocName, SUM(decValue) FROM tblInvExt GROUP BY strLocName ORDER BY strLocName
ELSE
SELECT strLocName,(SELECT SUM(decOpenValue) FROM tblInvExt WHERE strLocName = MasterTable.strLocName) + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= ''+@SQAsAtDate+'') AND (tblInvTrackingDT.strLocName = MasterTable.strLocName)) FROM tblInvLoc as MasterTable
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvTransGetItemData] (
	@IsOptAcctSets BIT
	,@IsOptAssets BIT
	,@IsOptCategory BIT
	,@IsOptItems BIT
	,@IsOptServices BIT
	,@IsOptAll BIT
	,@IsChkInactiveItems BIT
	,@SearchText NVARCHAR(MAX)
	,@blnBPToolsMode BIT
	,@SQUserName NVARCHAR(MAX)
	,@PLInvSortDescription BIT
	)
AS
BEGIN
	IF (@IsOptAcctSets = 1)
	BEGIN
		IF (@IsChkInactiveItems = 0)
			SELECT strAcctSet AS PartNumber
				,strDesc AS Description
			FROM tblAccountSets
			WHERE (blnInactive = 0)
				AND (blnBuyout = 0)
				AND (
					(
						LEN(@SearchText) > 0
						AND (
							strAcctSet LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 3
						AND (
							strAcctSet LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY strAcctSet
		ELSE
			SELECT strAcctSet AS PartNumber
				,strDesc AS Description
			FROM tblAccountSets
			WHERE (blnBuyout = 0)
				AND (
					(
						LEN(@SearchText) > 0
						AND (
							strAcctSet LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 3
						AND (
							strAcctSet LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY strAcctSet
	END

	IF (@IsOptAssets = 1)
	BEGIN
		IF (@IsChkInactiveItems = 0)
			SELECT intGLNumber AS PartNumber
				,strDesc AS Description
			FROM tblAccounts
			WHERE (bitInventory = 1)
				AND (bitInactive = 0)
				AND (
					intGLNumber NOT IN (
						SELECT DISTINCT intGLAsset
						FROM tblAccountSets
						WHERE blnBuyout = 1
						)
					)
				AND (
					(
						LEN(@SearchText) > 0
						AND (
							intGLNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 3
						AND (
							intGLNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY intGLNumber
		ELSE
			SELECT intGLNumber AS PartNumber
				,strDesc AS Description
			FROM tblAccounts
			WHERE (bitInventory = 1)
				AND (
					intGLNumber NOT IN (
						SELECT DISTINCT intGLAsset
						FROM tblAccountSets
						WHERE blnBuyout = 1
						)
					)
				AND (
					(
						LEN(@SearchText) > 0
						AND (
							intGLNumber LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 3
						AND (
							intGLNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY intGLNumber
	END

	IF (@IsOptCategory = 1)
	BEGIN
		IF (@IsChkInactiveItems = 0)
			SELECT strCategory AS PartNumber
				,strDesc AS Description
			FROM tblInvCat
			WHERE (bitInactive = 0)
				AND (
					(
						LEN(@SearchText) > 0
						AND (
							strCategory LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 3
						AND (
							strCategory LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					(
						@blnBPToolsMode = 0
						AND (
							strCategory IN (
								SELECT tblInvCat.strCategory
								FROM tblInvCat
								LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(tblInvCatSec.strCategory)
											FROM tblInvCatSec
											WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) > 0
										AND tblInvCatSec.strUserName = '' + @SQUserName + ''
										)
								)
							)
						)
					)
			ORDER BY strCategory
		ELSE
		BEGIN
			SELECT strCategory AS PartNumber
				,strDesc AS Description
			FROM tblInvCat
			WHERE (
					(
						LEN(@SearchText) > 0
						AND (
							strCategory LIKE '%' + @SearchText + '%'
							OR strDesc LIKE '%' + @SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 3
						AND (
							strCategory LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					(
						@blnBPToolsMode = 0
						AND (
							strCategory IN (
								SELECT tblInvCat.strCategory
								FROM tblInvCat
								LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(tblInvCatSec.strCategory)
											FROM tblInvCatSec
											WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) > 0
										AND tblInvCatSec.strUserName = '' + @SQUserName + ''
										)
								)
							)
						)
					)
			ORDER BY strCategory
		END
	END

	IF (@IsOptItems = 1)
	BEGIN
		IF (@IsChkInactiveItems = 0)
		BEGIN
			IF (@PLInvSortDescription = 0)
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 1)
					AND (bitInactive = 0)
					AND tblInv.bitOtherCmp = 0
					AND (
						(
							LEN(@SearchText) > 0
							AND (
								strPartNumber LIKE '%' + @SearchText + '%'
								OR strDesc LIKE '%' + @SearchText + '%'
								)
							)
						OR (
							LEN(@SearchText) <= 3
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY tblInv.strPartNumber
			ELSE
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 1)
					AND (bitInactive = 0)
					AND tblInv.bitOtherCmp = 0
					AND (
						(
							LEN(@SearchText) > 0
							AND (
								strPartNumber LIKE '%' + @SearchText + '%'
								OR strDesc LIKE '%' + @SearchText + '%'
								)
							)
						OR (
							LEN(@SearchText) <= 3
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY tblInv.strDesc
		END
		ELSE
		BEGIN
			IF (@PLInvSortDescription = 0)
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 1)
					AND tblInv.bitOtherCmp = 0
					AND (
						(
							LEN(@SearchText) > 0
							AND (
								strPartNumber LIKE '%' + @SearchText + '%'
								OR strDesc LIKE '%' + @SearchText + '%'
								)
							)
						OR (
							LEN(@SearchText) <= 3
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY tblInv.strPartNumber
			ELSE
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 1)
					AND tblInv.bitOtherCmp = 0
					AND (
						(
							LEN(@SearchText) > 0
							AND (
								strPartNumber LIKE '%' + @SearchText + '%'
								OR strDesc LIKE '%' + @SearchText + '%'
								)
							)
						OR (
							LEN(@SearchText) <= 3
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY tblInv.strDesc
		END
	END

	IF (@IsOptServices = 1)
	BEGIN
		IF (@IsChkInactiveItems = 0)
		BEGIN
			IF (@PLInvSortDescription = 0)
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 4)
					AND (bitInactive = 0)
					AND tblInv.bitOtherCmp = 0
					AND (
						(
							LEN(@SearchText) > 0
							AND (
								strPartNumber LIKE '%' + @SearchText + '%'
								OR strDesc LIKE '%' + @SearchText + '%'
								)
							)
						OR (
							LEN(@SearchText) <= 3
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY tblInv.strPartNumber
			ELSE
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 4)
					AND (bitInactive = 0)
					AND tblInv.bitOtherCmp = 0
					AND (
						(
							LEN(@SearchText) > 0
							AND (
								strPartNumber LIKE '%' + @SearchText + '%'
								OR strDesc LIKE '%' + @SearchText + '%'
								)
							)
						OR (
							LEN(@SearchText) <= 3
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY tblInv.strDesc
		END
		ELSE
		BEGIN
			IF (@PLInvSortDescription = 0)
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 4)
					AND tblInv.bitOtherCmp = 0
					AND (
						(
							LEN(@SearchText) > 0
							AND (
								strPartNumber LIKE '%' + @SearchText + '%'
								OR strDesc LIKE '%' + @SearchText + '%'
								)
							)
						OR (
							LEN(@SearchText) <= 3
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY tblInv.strPartNumber
			ELSE
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType = 4)
					AND tblInv.bitOtherCmp = 0
					AND (
						(
							LEN(@SearchText) > 0
							AND (
								strPartNumber LIKE '%' + @SearchText + '%'
								OR strDesc LIKE '%' + @SearchText + '%'
								)
							)
						OR (
							LEN(@SearchText) <= 3
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY tblInv.strDesc
		END
	END

	IF (@IsOptAll = 1)
	BEGIN
		IF (@IsChkInactiveItems = 0)
		BEGIN
			IF (@PLInvSortDescription = 0)
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (bitInactive = 0)
					AND (intType <> 5)
					AND tblInv.bitOtherCmp = 0
					AND (
						(
							LEN(@SearchText) > 0
							AND (
								strPartNumber LIKE '%' + @SearchText + '%'
								OR strDesc LIKE '%' + @SearchText + '%'
								)
							)
						OR (
							LEN(@SearchText) <= 3
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY tblInv.strPartNumber
			ELSE
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (bitInactive = 0)
					AND (intType <> 5)
					AND tblInv.bitOtherCmp = 0
					AND (
						(
							LEN(@SearchText) > 0
							AND (
								strPartNumber LIKE '%' + @SearchText + '%'
								OR strDesc LIKE '%' + @SearchText + '%'
								)
							)
						OR (
							LEN(@SearchText) <= 3
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY tblInv.strDesc
		END
		ELSE
		BEGIN
			IF (@PLInvSortDescription = 0)
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType <> 5)
					AND tblInv.bitOtherCmp = 0
					AND (
						(
							LEN(@SearchText) > 0
							AND (
								strPartNumber LIKE '%' + @SearchText + '%'
								OR strDesc LIKE '%' + @SearchText + '%'
								)
							)
						OR (
							LEN(@SearchText) <= 3
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY tblInv.strPartNumber
			ELSE
				SELECT strPartNumber AS PartNumber
					,strDesc AS Description
					,intType AS Type
				FROM tblInv
				WHERE (intType <> 5)
					AND tblInv.bitOtherCmp = 0
					AND (
						(
							LEN(@SearchText) > 0
							AND (
								strPartNumber LIKE '%' + @SearchText + '%'
								OR strDesc LIKE '%' + @SearchText + '%'
								)
							)
						OR (
							LEN(@SearchText) <= 3
							AND (
								strPartNumber LIKE '%'
								OR strDesc LIKE '%'
								)
							)
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCategory IN (
									SELECT tblInvCat.strCategory
									FROM tblInvCat
									LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(tblInvCatSec.strCategory)
												FROM tblInvCatSec
												WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblInvCatSec.strCategory)
													FROM tblInvCatSec
													WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
													), 0) > 0
											AND tblInvCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY tblInv.strDesc
		END
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvTransSummaryGetReportData](
@IsOptAcctSets bit,
@IsOptAssets bit,
@IsOptCategory bit,
@IsOptItems bit,
@IsOptServices bit,
@IsOptAll bit,
@IsOptActiveItems bit,
@IsOptInActiveItems bit,
@IsOptAllItems bit,
@SQAcctSet NVARCHAR(MAX),
@PLInvSortDescription bit,
@SQStart VARCHAR(19),
@SQEnd VARCHAR(19)
)  
AS  
BEGIN  
IF(@IsOptAcctSets = 1)
BEGIN
If(@PLInvSortDescription = 0)
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, COUNT(tblInvTrackingDT.strPartNumber), SUM(tblInvTrackingDT.decQtyIn), SUM(tblInvTrackingDT.decQtyOut), SUM(tblInvTrackingDT.decValueIn), SUM(tblInvTrackingDT.decValueOut), tblInv.strAcctSet AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName
WHERE (tblInv.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, tblInv.strAcctSet
ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber, tblInvTracking.intModule
ELSE
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, COUNT(tblInvTrackingDT.strPartNumber), SUM(tblInvTrackingDT.decQtyIn), SUM(tblInvTrackingDT.decQtyOut), SUM(tblInvTrackingDT.decValueIn), SUM(tblInvTrackingDT.decValueOut), tblInv.strAcctSet AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName
WHERE (tblInv.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, tblInv.strAcctSet
ORDER BY OrderbyCol,tblInv.strDesc, tblInvTrackingDT.strPartNumber, tblInvTracking.intModule
END
IF(@IsOptAssets = 1)
BEGIN
If(@PLInvSortDescription = 0)
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, COUNT(tblInvTrackingDT.strPartNumber), SUM(tblInvTrackingDT.decQtyIn), SUM(tblInvTrackingDT.decQtyOut), SUM(tblInvTrackingDT.decValueIn), SUM(tblInvTrackingDT.decValueOut), (CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc) AS OrderbyCol  FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
WHERE (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))                        
GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, (CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc)
ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber, tblInvTracking.intModule
ELSE
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, COUNT(tblInvTrackingDT.strPartNumber), SUM(tblInvTrackingDT.decQtyIn), SUM(tblInvTrackingDT.decQtyOut), SUM(tblInvTrackingDT.decValueIn), SUM(tblInvTrackingDT.decValueOut), (CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc) AS OrderbyCol  FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
WHERE (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))                        
GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, (CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc)
ORDER BY OrderbyCol,tblInv.strDesc, tblInvTrackingDT.strPartNumber, tblInvTracking.intModule
END
IF(@IsOptCategory = 1)
BEGIN
If(@PLInvSortDescription = 0)
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, COUNT(tblInvTrackingDT.strPartNumber), SUM(tblInvTrackingDT.decQtyIn), SUM(tblInvTrackingDT.decQtyOut), SUM(tblInvTrackingDT.decValueIn), SUM(tblInvTrackingDT.decValueOut), tblInv.strCategory AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber 
WHERE (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))                        
GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, tblInv.strCategory
ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber, tblInvTracking.intModule
ELSE
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, COUNT(tblInvTrackingDT.strPartNumber), SUM(tblInvTrackingDT.decQtyIn), SUM(tblInvTrackingDT.decQtyOut), SUM(tblInvTrackingDT.decValueIn), SUM(tblInvTrackingDT.decValueOut), tblInv.strCategory AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber 
WHERE (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))                        
GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, tblInv.strCategory
ORDER BY OrderbyCol,tblInv.strDesc, tblInvTrackingDT.strPartNumber, tblInvTracking.intModule
END
IF(@IsOptItems = 1)
BEGIN
If(@PLInvSortDescription = 0)
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, COUNT(tblInvTrackingDT.strPartNumber), SUM(tblInvTrackingDT.decQtyIn), SUM(tblInvTrackingDT.decQtyOut), SUM(tblInvTrackingDT.decValueIn), SUM(tblInvTrackingDT.decValueOut), '' AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber 
WHERE (tblInvTrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))                        
GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, strCategory
ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber, tblInvTracking.intModule
ELSE
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, COUNT(tblInvTrackingDT.strPartNumber), SUM(tblInvTrackingDT.decQtyIn), SUM(tblInvTrackingDT.decQtyOut), SUM(tblInvTrackingDT.decValueIn), SUM(tblInvTrackingDT.decValueOut), '' AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber 
WHERE (tblInvTrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))                        
GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, strCategory
ORDER BY OrderbyCol,tblInv.strDesc, tblInvTrackingDT.strPartNumber, tblInvTracking.intModule
END
IF(@IsOptServices = 1)
BEGIN
If(@PLInvSortDescription = 0)
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, COUNT(tblInvTrackingDT.strPartNumber), SUM(tblInvTrackingDT.decQtyIn), SUM(tblInvTrackingDT.decQtyOut), SUM(tblInvTrackingDT.decValueIn), SUM(tblInvTrackingDT.decValueOut), '' AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber 
WHERE (tblInvTrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))                        
GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, strCategory
ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber, tblInvTracking.intModule
ELSE
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, COUNT(tblInvTrackingDT.strPartNumber), SUM(tblInvTrackingDT.decQtyIn), SUM(tblInvTrackingDT.decQtyOut), SUM(tblInvTrackingDT.decValueIn), SUM(tblInvTrackingDT.decValueOut), '' AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber 
WHERE (tblInvTrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))                        
GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, strCategory
ORDER BY OrderbyCol,tblInv.strDesc, tblInvTrackingDT.strPartNumber, tblInvTracking.intModule
END
IF(@IsOptAll = 1)
BEGIN
If(@PLInvSortDescription = 0)
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, COUNT(tblInvTrackingDT.strPartNumber), SUM(tblInvTrackingDT.decQtyIn), SUM(tblInvTrackingDT.decQtyOut), SUM(tblInvTrackingDT.decValueIn), SUM(tblInvTrackingDT.decValueOut), '' AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber 
WHERE (tblInvTrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))                        
GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, strCategory
ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber, tblInvTracking.intModule
ELSE
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, COUNT(tblInvTrackingDT.strPartNumber), SUM(tblInvTrackingDT.decQtyIn), SUM(tblInvTrackingDT.decQtyOut), SUM(tblInvTrackingDT.decValueIn), SUM(tblInvTrackingDT.decValueOut), '' AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber 
WHERE (tblInvTrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (tblInvTracking.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))                        
GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.intModule, strCategory
ORDER BY OrderbyCol,tblInv.strDesc, tblInvTrackingDT.strPartNumber, tblInvTracking.intModule
END
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvTransDetailsGetReportData](
@IsOptAcctSets bit,
@IsOptAssets bit,
@IsOptCategory bit,
@IsOptItems bit,
@IsOptServices bit,
@IsOptAll bit,
@IsOptActiveItems bit,
@IsOptInActiveItems bit,
@IsOptAllItems bit,
@SQAcctSet NVARCHAR(MAX),
@PLInvSortDescription bit,
@SQStart VARCHAR(19),
@SQEnd VARCHAR(19)
)  
AS  
BEGIN  
IF(@IsOptAcctSets = 1)
BEGIN
If(@PLInvSortDescription = 0)
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, INV.dteJournalDate, INV.intModule, INV.lngJourID, (CASE WHEN INV.strSource = 'Stock Count' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) = 0 THEN INV.strSource ELSE (SELECT ISNULL(CONCAT('SC/', strAdjDocID), INV.strSource) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) END) ELSE INV.strSource END) AS strSource, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decQtyOut, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decValueOut, tblInv.strAcctSet AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking INV ON tblInvTrackingDT.lngInvTrackID = INV.lngInvTrackID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName
WHERE (tblInv.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber, INV.dteJournalDate, tblInvTrackingDT.lngInvTrackID
ELSE
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, INV.dteJournalDate, INV.intModule, INV.lngJourID, (CASE WHEN INV.strSource = 'Stock Count' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) = 0 THEN INV.strSource ELSE (SELECT ISNULL(CONCAT('SC/', strAdjDocID), INV.strSource) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) END) ELSE INV.strSource END) AS strSource, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decQtyOut, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decValueOut, tblInv.strAcctSet AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking INV ON tblInvTrackingDT.lngInvTrackID = INV.lngInvTrackID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName
WHERE (tblInv.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))
AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
ORDER BY OrderbyCol,tblInv.strDesc, tblInvTrackingDT.strPartNumber, INV.dteJournalDate, tblInvTrackingDT.lngInvTrackID
END
IF(@IsOptAssets = 1)
BEGIN
If(@PLInvSortDescription = 0)
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, INV.dteJournalDate, INV.intModule, INV.lngJourID, (CASE WHEN INV.strSource = 'Stock Count' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) = 0 THEN INV.strSource ELSE (SELECT ISNULL(CONCAT('SC/', strAdjDocID), INV.strSource) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) END) ELSE INV.strSource END) AS strSource, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decQtyOut, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decValueOut, (CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc) AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking INV ON tblInvTrackingDT.lngInvTrackID = INV.lngInvTrackID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
WHERE (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))                        
AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber, INV.dteJournalDate, tblInvTrackingDT.lngInvTrackID
ELSE
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, INV.dteJournalDate, INV.intModule, INV.lngJourID, (CASE WHEN INV.strSource = 'Stock Count' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) = 0 THEN INV.strSource ELSE (SELECT ISNULL(CONCAT('SC/', strAdjDocID), INV.strSource) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) END) ELSE INV.strSource END) AS strSource, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decQtyOut, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decValueOut, (CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc) AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking INV ON tblInvTrackingDT.lngInvTrackID = INV.lngInvTrackID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
WHERE (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))                        
AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
ORDER BY OrderbyCol,tblInv.strDesc, tblInvTrackingDT.strPartNumber, INV.dteJournalDate, tblInvTrackingDT.lngInvTrackID
END
IF(@IsOptCategory = 1)
BEGIN
If(@PLInvSortDescription = 0)
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, INV.dteJournalDate, INV.intModule, INV.lngJourID, (CASE WHEN INV.strSource = 'Stock Count' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) = 0 THEN INV.strSource ELSE (SELECT ISNULL(CONCAT('SC/', strAdjDocID), INV.strSource) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) END) ELSE INV.strSource END) AS strSource, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decQtyOut, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decValueOut, tblInv.strCategory AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking INV ON tblInvTrackingDT.lngInvTrackID = INV.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
WHERE (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))                        
AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber, INV.dteJournalDate, tblInvTrackingDT.lngInvTrackID
ELSE
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, INV.dteJournalDate, INV.intModule, INV.lngJourID, (CASE WHEN INV.strSource = 'Stock Count' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) = 0 THEN INV.strSource ELSE (SELECT ISNULL(CONCAT('SC/', strAdjDocID), INV.strSource) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) END) ELSE INV.strSource END) AS strSource, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decQtyOut, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decValueOut, tblInv.strCategory AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking INV ON tblInvTrackingDT.lngInvTrackID = INV.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
WHERE (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND ((@IsOptActiveItems = 1 OR @IsOptAllItems = 1) AND(tblInv.bitInactive = 0) OR (@IsOptInActiveItems = 1) AND(tblInv.bitInactive = 1))                        
AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
ORDER BY OrderbyCol,tblInv.strDesc, tblInvTrackingDT.strPartNumber, INV.dteJournalDate, tblInvTrackingDT.lngInvTrackID
END
IF(@IsOptItems = 1)
BEGIN
If(@PLInvSortDescription = 0)
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, INV.dteJournalDate, INV.intModule, INV.lngJourID, (CASE WHEN INV.strSource = 'Stock Count' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) = 0 THEN INV.strSource ELSE (SELECT ISNULL(CONCAT('SC/', strAdjDocID), INV.strSource) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) END) ELSE INV.strSource END) AS strSource, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decQtyOut, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decValueOut, '' AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking INV ON tblInvTrackingDT.lngInvTrackID = INV.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
WHERE (tblInvTrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber, INV.dteJournalDate, tblInvTrackingDT.lngInvTrackID
ELSE
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, INV.dteJournalDate, INV.intModule, INV.lngJourID, (CASE WHEN INV.strSource = 'Stock Count' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) = 0 THEN INV.strSource ELSE (SELECT ISNULL(CONCAT('SC/', strAdjDocID), INV.strSource) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) END) ELSE INV.strSource END) AS strSource, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decQtyOut, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decValueOut, '' AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking INV ON tblInvTrackingDT.lngInvTrackID = INV.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
WHERE (tblInvTrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
ORDER BY OrderbyCol,tblInv.strDesc, tblInvTrackingDT.strPartNumber, INV.dteJournalDate, tblInvTrackingDT.lngInvTrackID
END
IF(@IsOptServices = 1)
BEGIN
If(@PLInvSortDescription = 0)
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, INV.dteJournalDate, INV.intModule, INV.lngJourID, (CASE WHEN INV.strSource = 'Stock Count' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) = 0 THEN INV.strSource ELSE (SELECT ISNULL(CONCAT('SC/', strAdjDocID), INV.strSource) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) END) ELSE INV.strSource END) AS strSource, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decQtyOut, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decValueOut, '' AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking INV ON tblInvTrackingDT.lngInvTrackID = INV.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
WHERE (tblInvTrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber, INV.dteJournalDate, tblInvTrackingDT.lngInvTrackID
ELSE
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, INV.dteJournalDate, INV.intModule, INV.lngJourID, (CASE WHEN INV.strSource = 'Stock Count' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) = 0 THEN INV.strSource ELSE (SELECT ISNULL(CONCAT('SC/', strAdjDocID), INV.strSource) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) END) ELSE INV.strSource END) AS strSource, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decQtyOut, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decValueOut, '' AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking INV ON tblInvTrackingDT.lngInvTrackID = INV.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
WHERE (tblInvTrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
ORDER BY OrderbyCol,tblInv.strDesc, tblInvTrackingDT.strPartNumber, INV.dteJournalDate, tblInvTrackingDT.lngInvTrackID
END
IF(@IsOptAll = 1)
BEGIN
If(@PLInvSortDescription = 0)
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, INV.dteJournalDate, INV.intModule, INV.lngJourID, (CASE WHEN INV.strSource = 'Stock Count' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) = 0 THEN INV.strSource ELSE (SELECT ISNULL(CONCAT('SC/', strAdjDocID), INV.strSource) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) END) ELSE INV.strSource END) AS strSource, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decQtyOut, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decValueOut, '' AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking INV ON tblInvTrackingDT.lngInvTrackID = INV.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
WHERE (tblInvTrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber, INV.dteJournalDate, tblInvTrackingDT.lngInvTrackID
ELSE
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, INV.dteJournalDate, INV.intModule, INV.lngJourID, (CASE WHEN INV.strSource = 'Stock Count' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) = 0 THEN INV.strSource ELSE (SELECT ISNULL(CONCAT('SC/', strAdjDocID), INV.strSource) FROM tblInvAdjDoc WHERE INV.lngJourID = tblInvAdjDoc.lngJourID AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID) END) ELSE INV.strSource END) AS strSource, tblInvTrackingDT.decQtyIn, tblInvTrackingDT.decQtyOut, tblInvTrackingDT.decValueIn, tblInvTrackingDT.decValueOut, '' AS OrderbyCol FROM tblInvTrackingDT INNER JOIN tblInvTracking INV ON tblInvTrackingDT.lngInvTrackID = INV.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
WHERE (tblInvTrackingDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(''+@SQAcctSet+'', ','))) AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
AND (INV.dteJournalDate BETWEEN ''+@SQStart+'' AND ''+@SQEnd+'')
ORDER BY OrderbyCol,tblInv.strDesc, tblInvTrackingDT.strPartNumber, INV.dteJournalDate, tblInvTrackingDT.lngInvTrackID
END
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptListInvSerGetItemData](  
@IsOptAcctSets bit,  
@IsOptAssets bit,  
@IsOptCategory bit,  
@IsOptItems bit,  
@IsOptServices bit,  
@IsOptAll bit,  
@IsChkInactiveItems bit,  
@SearchText NVARCHAR(MAX),  
@blnBPToolsMode bit,  
@SQUserName NVARCHAR(MAX),   
@PLInvSortDescription bit  
)    
AS    
BEGIN    
Declare @Query as NVARCHAR(max)      
Declare @IsParamExist as Bit    
SET  @Query = ''  
IF(@IsOptAcctSets = 1)  
BEGIN  
IF(@IsChkInactiveItems = 0)  
BEGIN  
SET  @Query += 'SELECT strAcctSet as PartNumber, strDesc as Description FROM tblAccountSets WHERE (blnInactive = 0) AND (blnBuyout = 0)'  
IF Len(@SearchText) > 0 
SET  @Query += ' AND (strAcctSet LIKE ''%'+@SearchText+'%'' OR strDesc LIKE ''%'+@SearchText+'%'')'  
END  
ELSE  
BEGIN  
SET  @Query += 'SELECT strAcctSet as PartNumber, strDesc as Description FROM tblAccountSets WHERE (blnBuyout = 0)'  
IF Len(@SearchText) > 0 
SET  @Query += ' AND (strAcctSet LIKE ''%'+@SearchText+'%'' OR strDesc LIKE ''%'+@SearchText+'%'')'  
END  
SET  @Query += ' ORDER BY strAcctSet'  
END  
IF(@IsOptAssets = 1)  
BEGIN  
IF(@IsChkInactiveItems = 0)  
SET  @Query += 'SELECT intGLNumber as PartNumber, strDesc as Description FROM tblAccounts WHERE (bitInventory = 1) AND (bitInactive = 0) AND (intGLNumber NOT IN (SELECT DISTINCT intGLAsset FROM tblAccountSets WHERE blnBuyout = 1))'  
ELSE  
SET  @Query += 'SELECT intGLNumber as PartNumber, strDesc as Description FROM tblAccounts WHERE (bitInventory = 1) AND (intGLNumber NOT IN (SELECT DISTINCT intGLAsset FROM tblAccountSets WHERE blnBuyout = 1))'  
IF Len(@SearchText) > 0 
SET  @Query += ' AND (intGLNumber LIKE ''%'+@SearchText+'%'' OR strDesc LIKE ''%'+@SearchText+'%'')'  
SET  @Query += ' ORDER BY intGLNumber'  
END  
IF(@IsOptCategory = 1)  
BEGIN  
IF(@IsChkInactiveItems = 0)  
BEGIN  
SET  @Query += 'SELECT strCategory as PartNumber, strDesc as Description FROM tblInvCat WHERE (bitInactive = 0)'  
SET @IsParamExist = 1  
IF Len(@SearchText) > 0  
SET  @Query += ' AND (strCategory LIKE ''%'+@SearchText+'%'' OR strDesc LIKE ''%'+@SearchText+'%'')'  
END  
ELSE  
BEGIN  
SET  @Query += 'SELECT strCategory as PartNumber, strDesc as Description FROM tblInvCat'  
IF Len(@SearchText) > 0 
BEGIN  
SET  @Query += ' WHERE (strCategory LIKE ''%'+@SearchText+'%'' OR strDesc LIKE ''%'+@SearchText+'%'')'  
SET @IsParamExist = 1  
END  
END  
IF(@blnBPToolsMode = 0)  
BEGIN  
IF(@IsParamExist = 1)  
SET @Query += ' AND '    
ELSE    
SET @Query += ' WHERE '    
SET @Query +=' strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory 
= tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = '''+@SQUserName+'''))'    
END  
SET @Query += ' ORDER BY strCategory'  
END  
IF(@IsOptItems = 1)  
BEGIN  
IF(@IsChkInactiveItems = 0)  
SET  @Query += 'SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (intType = 1) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0'  
ELSE  
SET  @Query += 'SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (intType = 1) AND tblInv.bitOtherCmp = 0'  
IF Len(@SearchText) > 0  
SET  @Query += ' AND (strPartNumber LIKE ''%'+@SearchText+'%'' OR strDesc LIKE ''%'+@SearchText+'%'')'  
IF(@blnBPToolsMode = 0)  
SET @Query +=' AND  strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = '''+@SQUserName+'''))'    
IF(@PLInvSortDescription = 0)  
SET  @Query += ' ORDER BY tblInv.strPartNumber'  
ELSE  
SET  @Query += ' ORDER BY tblInv.strDesc'  
END  
IF(@IsOptServices = 1)  
BEGIN  
IF(@IsChkInactiveItems = 0)  
SET  @Query += 'SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (intType = 4) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0'  
ELSE  
SET  @Query += 'SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (intType = 4) AND tblInv.bitOtherCmp = 0'  
IF Len(@SearchText) > 3  
SET  @Query += ' AND (strPartNumber LIKE ''%'+@SearchText+'%'' OR strDesc LIKE ''%'+@SearchText+'%'')'  
IF(@blnBPToolsMode = 0)  
SET @Query +=' AND strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = '''+@SQUserName+'''))'    
IF(@PLInvSortDescription = 0)  
SET  @Query += ' ORDER BY tblInv.strPartNumber'  
ELSE  
SET  @Query += ' ORDER BY tblInv.strDesc'  
END  
IF(@IsOptAll = 1)  
BEGIN  
IF(@IsChkInactiveItems = 0)  
SET  @Query += 'SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (bitInactive = 0) AND (intType NOT IN (5, 11)) AND tblInv.bitOtherCmp = 0'  
ELSE  
SET  @Query += 'SELECT strPartNumber as PartNumber, strDesc as Description, intType as Type FROM tblInv WHERE (intType NOT IN (5, 11)) AND tblInv.bitOtherCmp = 0'  
IF Len(@SearchText) > 0 
SET  @Query += ' AND (strPartNumber LIKE ''%'+@SearchText+'%'' OR strDesc LIKE ''%'+@SearchText+'%'')'  
IF(@blnBPToolsMode = 0)  
SET @Query +=' AND strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = '''+@SQUserName+'''))'    
IF(@PLInvSortDescription = 0)  
SET  @Query += ' ORDER BY tblInv.strPartNumber'  
ELSE  
SET  @Query += ' ORDER BY tblInv.strDesc'  
END  
SET @Query +=''  
EXEC sp_Executesql @Query    
END  
Print (@Query)
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptListInvSerGetReportData](
@IsOptAcctSets bit,
@IsOptAssets bit,
@IsOptCategory bit,
@IsOptItems bit,
@IsOptServices bit,
@IsOptAll bit,
@IsOptActiveItems bit,
@SQAcctSet NVARCHAR(MAX),
@PLInvSortDescription bit
)  
AS  
BEGIN  
IF(@IsOptAcctSets=1  AND @IsOptActiveItems = 0  AND @PLInvSortDescription = 0)
BEGIN
SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
 WHERE (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet,',')))
  AND (tblInv.bitInactive = 1)
  AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem
   ORDER BY tblInv.strPartNumber
	END
ELSE IF (@IsOptAcctSets=1  AND @IsOptActiveItems = 0  AND @PLInvSortDescription = 1)

SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
 WHERE (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
  AND (tblInv.bitInactive = 1)
   AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem
  ORDER BY tblInv.strDesc, tblInv.strPartNumber

ELSE IF (@IsOptAcctSets=1  AND @IsOptActiveItems = 1  AND @PLInvSortDescription = 0)
	
	SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
 WHERE (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
  AND (tblInv.bitInactive = 0)
   AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem
	 ORDER BY tblInv.strPartNumber

ELSE IF (@IsOptAcctSets=1  AND @IsOptActiveItems = 1  AND @PLInvSortDescription = 1)
	
	SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
 WHERE (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
  AND (tblInv.bitInactive = 0)
   AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem
	  ORDER BY tblInv.strDesc, tblInv.strPartNumber
 
 
 IF(@IsOptAssets=1  AND @IsOptActiveItems = 0  AND @PLInvSortDescription = 0)
 
 SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
  INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
  AND (tblInv.bitInactive = 1)
  AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem

 
 ELSE IF (@IsOptAssets=1  AND @IsOptActiveItems = 0  AND @PLInvSortDescription = 1)
 SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
  INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
  AND (tblInv.bitInactive = 0)
   AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem

   ELSE IF (@IsOptAssets=1  AND @IsOptActiveItems = 1  AND @PLInvSortDescription = 0)

 SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
  INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
	AND (tblInv.bitInactive = 0)
	AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem
	 ORDER BY tblInv.strPartNumber
	
	
	ELSE IF (@IsOptAssets=1  AND @IsOptActiveItems = 1  AND @PLInvSortDescription = 1)
	
 
 SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
  INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
AND (tblInv.bitInactive = 0)
   AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem
	  ORDER BY tblInv.strDesc, tblInv.strPartNumber
 
 
 ELSE IF (@IsOptCategory=1  AND @IsOptActiveItems = 0  AND @PLInvSortDescription = 1)
 
 SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
  WHERE (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ','))) AND (tblInv.intType <> 11)
  AND (tblInv.bitInactive = 1)
  AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem

 ELSE IF (@IsOptCategory=1  AND @IsOptActiveItems = 1  AND @PLInvSortDescription = 0)
  
   SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
  WHERE (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ','))) AND (tblInv.intType <> 11)
 AND (tblInv.bitInactive = 0)
	AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem
	 ORDER BY tblInv.strPartNumber
	 
	 
  ELSE IF (@IsOptCategory=1  AND @IsOptActiveItems = 0  AND @PLInvSortDescription = 0)
  SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
  WHERE (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ','))) AND (tblInv.intType <> 11)
AND (tblInv.bitInactive = 1)
  AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem
	ORDER BY tblInv.strPartNumber
  
  ELSE IF (@IsOptCategory=1  AND @IsOptActiveItems = 1  AND @PLInvSortDescription = 1)
  SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
  WHERE (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ','))) AND (tblInv.intType <> 11)
 AND (tblInv.bitInactive = 0)
   AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem
	  ORDER BY tblInv.strDesc, tblInv.strPartNumber
 
  
 ELSE IF (@IsOptItems=1  AND @IsOptActiveItems = 0  AND @PLInvSortDescription = 1)
 SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
  WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
  AND (tblInv.bitInactive = 1)
  AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem

 ELSE IF (@IsOptItems=1  AND @IsOptActiveItems = 1  AND @PLInvSortDescription = 0)
  
  SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
  WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
  AND (tblInv.bitInactive = 0)
	AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem
	 ORDER BY tblInv.strPartNumber
	 
	 ELSE IF (@IsOptItems=1  AND @IsOptActiveItems = 0  AND @PLInvSortDescription = 0)
 
  SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
  WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
  AND (tblInv.bitInactive = 1)
  AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem
	ORDER BY tblInv.strPartNumber
	
	ELSE IF (@IsOptItems=1  AND @IsOptActiveItems = 1  AND @PLInvSortDescription = 1)
  
  SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
  WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
  AND (tblInv.bitInactive = 0)
   AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem
	  ORDER BY tblInv.strDesc, tblInv.strPartNumber
  
  
  ELSE IF (@IsOptServices=1  AND @IsOptActiveItems = 0  AND @PLInvSortDescription = 1)
 
 SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
  WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
  AND (tblInv.bitInactive = 1)
  AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem

 
  ELSE IF (@IsOptServices=1  AND @IsOptActiveItems = 1  AND @PLInvSortDescription = 0)

  SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
  WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
  AND (tblInv.bitInactive = 0)
	AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem
	 ORDER BY tblInv.strPartNumber
	 
	 
  ELSE IF (@IsOptServices=1  AND @IsOptActiveItems = 0  AND @PLInvSortDescription = 0)
 
  SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
  WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
  AND (tblInv.bitInactive = 1)
  AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem
	ORDER BY tblInv.strPartNumber
	
  ELSE IF (@IsOptServices=1  AND @IsOptActiveItems = 1  AND @PLInvSortDescription = 1)
  
  SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
  WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
  AND (tblInv.bitInactive = 0)
   AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem
	  ORDER BY tblInv.strDesc, tblInv.strPartNumber
  
  
  
  ELSE IF (@IsOptAll=1  AND @IsOptActiveItems = 0  AND @PLInvSortDescription = 1)
  
  SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
   WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
   AND (tblInv.bitInactive = 1)
  AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem

 
   ELSE IF (@IsOptAll=1  AND @IsOptActiveItems = 1  AND @PLInvSortDescription = 0)
  
  SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
   WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
   AND (tblInv.bitInactive = 0)
	AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem
	 ORDER BY tblInv.strPartNumber
	 
	 
   
 
  ELSE IF (@IsOptAll=1  AND @IsOptActiveItems = 0  AND @PLInvSortDescription = 0)
  SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
   WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
   AND (tblInv.bitInactive = 1)
  AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem
	ORDER BY tblInv.strPartNumber
	
   ELSE IF (@IsOptAll=1  AND @IsOptActiveItems = 1  AND @PLInvSortDescription = 1)
  
  SELECT tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, SUM(tblInvExt.intReorderPoint) AS intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, SUM(tblInvExt.decAvail) AS decSumAvail, SUM(tblInvExt.decAlloc) AS decSumAlloc, SUM(tblInvExt.decOnHand) AS decSumOnHand, SUM(tblInvExt.decValue) AS decSumValue, SUM(tblInvExt.decOnOrder) AS decSumOnOrder, SUM(tblInvExt.decOpenQty) AS decSumOpenQty,	SUM(tblInvExt.decOpenValue) AS decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, SUM(tblInvExt.decManuf) AS decSumManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocname
   WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcctSet, ',')))
   AND (tblInv.bitInactive = 0)
   AND (tblInvExt.bitInactive = 0) GROUP BY tblInv.strPartNumber, tblInv.strDesc, intType, strCategory, tblInvExt.strAcctSet, intExpAcct, decCostOnPO, bitUseLPPOnPO, strBuyUnit, strStockUnit, decBuyToStock, bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, tblInv.bitInactive, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, tblInv.strField1, tblInv.strField2, tblInv.strField3, tblInv.strField4, tblInv.strField5, tblInv.strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem
	  ORDER BY tblInv.strDesc, tblInv.strPartNumber
 
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptManProdVarianceGetJobData](
@IsOptSearch bit,
@SQStart DateTime,
@SQEnd DateTime,
@SQTypeCL NVARCHAR(10),
@SearchText NVARCHAR(MAX)
)  
AS  
BEGIN  
IF(@IsOptSearch = 1 AND Len(@SearchText) >  0)
BEGIN
IF(Len(@SearchText) >  2)
SELECT strJBDocID as Code, strReference as [Description] FROM tblManJob WHERE (strJBDocID LIKE '%'+@SearchText+'%' OR strReference LIKE '%'+@SearchText+'%') 
AND (tblManJob.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (tblManJob.intType = ''+@SQTypeCL+'') ORDER BY strJBDocID
ELSE
return null
END
ELSE
SELECT strJBDocID as Code, strReference as [Description] FROM tblManJob WHERE (tblManJob.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (tblManJob.intType = ''+@SQTypeCL+'') ORDER BY strJBDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptManProdVarianceGetReportData](
@IsOptAllJobs bit,
@SQStartDate NVARCHAR(19),
@SQFinishDate NVARCHAR(19),
@SQTypeCL NVARCHAR(10),
@SQJobNumbers NVARCHAR(MAX)
)  
AS  
BEGIN 
Declare @Query as NVARCHAR(max)    
SET  @Query = 'SELECT Z.strJBDocID, Z.dteJournalDate, Z.strReference, Z.strWCCode, Z.strWCDesc, Z.strPartNumber, Z.strPartDesc, Z.strLocation, Z.decManQtyClosed, 
Z.decManAmountClosed, Z.decManQty, Z.decManAmount, (Z.decManQty - Z.decManQtyClosed) AS decManQtyVar,(Z.decManAmount - Z.decManAmountClosed) AS decManAmountVar 
FROM (SELECT MJ.strJBDocID, MJ.dteJournalDate, MJ.strReference, MJ.strWCCode, WC.strDesc AS strWCDesc, MJP.strPartNumber, MJP.strDesc AS strPartDesc, MJP.strLocation, 
SUM(MJC.decManQtyClosed) AS decManQtyClosed, SUM(MJC.decManAmount) AS decManAmountClosed, MJP.decManQty, 
ISNULL((SELECT SUM(INV.decAmount) AS decAmount FROM tblManWIP WIP INNER JOIN tblManWIPCompInv INV ON WIP.strWIPDocID = INV.strWIPDocID WHERE (WIP.strJBDocID = MJ.strJBDocID)), 0) + 
ISNULL((SELECT SUM(LAB.decAmount) AS decAmount FROM tblManWIP WIP INNER JOIN tblManWIPCompLab LAB ON WIP.strWIPDocID = LAB.strWIPDocID WHERE (WIP.strJBDocID = MJ.strJBDocID)), 0) + 
ISNULL((SELECT SUM(MACH.decAmount) AS decAmount FROM tblManWIP WIP INNER JOIN tblManWIPCompMach MACH ON WIP.strWIPDocID = MACH.strWIPDocID WHERE (WIP.strJBDocID = MJ.strJBDocID)), 0) + 
ISNULL((SELECT SUM(OH.decAmount) AS decAmount FROM tblManWIP WIP INNER JOIN tblManWIPCompOverhead OH ON WIP.strWIPDocID = OH.strWIPDocID WHERE (WIP.strJBDocID = MJ.strJBDocID)), 0) AS decManAmount 
FROM tblManJob MJ 
INNER JOIN tblManJobByProd MJP ON MJ.strJBDocID = MJP.strJBDocID 
INNER JOIN tblManJobClose MJC ON MJ.strJBDocID = MJC.strJBDocID AND MJP.strPartNumber = MJC.strPartNumber 
INNER JOIN tblManWorkCentre WC ON MJ.strWCCode = WC.strWCCode INNER JOIN tblInv INV ON MJP.strPartNumber = INV.strPartNumber
WHERE (MJ.dteJournalDate BETWEEN '''+@SQStartDate+''' AND '''+@SQFinishDate+''') AND (MJ.intType = '''+@SQTypeCL+''')'
IF(@IsOptAllJobs = 0)
SET  @Query += 'AND (MJ.strJBDocID IN (SELECT * FROM fnSplitStringAsTable('''+@SQJobNumbers+''','','')))'
SET  @Query += 'GROUP BY MJ.strJBDocID, MJ.dteJournalDate, MJ.strReference, MJ.strWCCode, WC.strDesc, MJP.strPartNumber, MJP.strDesc, MJP.strLocation, MJP.decManQty, INV.decLastManCost) Z ORDER BY Z.strJBDocID, Z.strWCCode, Z.strPartNumber'
EXEC sp_Executesql @Query  
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptManResourcesGetData](  
@IsOptLabour bit,  
@IsOptMachinery bit,  
@IsOptAll bit,  
@IsChkInactiveItems bit,  
@SearchText NVARCHAR(MAX)  
)    
AS    
BEGIN    
IF(@IsOptLabour = 1)  
BEGIN  
IF(@IsChkInactiveItems = 0)  
SELECT 'Labour' as Type, strLabCode as Code, strDesc as Description FROM tblManLabour WHERE (bitInactive = 0)  
AND (strLabCode LIKE '%' + @SearchText + '%' OR strDesc LIKE '%' + @SearchText + '%')  
ORDER BY strLabCode  
ELSE  
SELECT 'Labour' as Type, strLabCode as Code, strDesc as Description FROM tblManLabour  
WHERE (strLabCode LIKE '%' + @SearchText + '%' OR strDesc LIKE '%' + @SearchText + '%')   
ORDER BY strLabCode  
END  
IF(@IsOptMachinery = 1)  
BEGIN  
IF(@IsChkInactiveItems = 0)  
SELECT 'Machinery' as Type, strMachCode as Code, strDesc as Description FROM tblManMachinery WHERE (bitInactive = 0)  
AND (strMachCode LIKE '%' + @SearchText + '%' OR strDesc LIKE '%' + @SearchText + '%')
ORDER BY strMachCode  
ELSE  
SELECT 'Machinery' as Type, strMachCode as Code, strDesc as Description FROM tblManMachinery  
WHERE (strMachCode LIKE '%' + @SearchText + '%' OR strDesc LIKE '%' + @SearchText + '%')
ORDER BY strMachCode  
END  
IF(@IsOptAll = 1)  
BEGIN  
IF(@IsChkInactiveItems = 0)  
SELECT 'Labour' as Type, strLabCode as Code, strDesc as Description FROM tblManLabour WHERE (bitInactive = 0)  
AND (strLabCode LIKE '%' + @SearchText + '%' OR strDesc LIKE '%' + @SearchText + '%')   
UNION ALL  
SELECT 'Machinery' as strType, strMachCode as Code, strDesc as Description FROM tblManMachinery WHERE (bitInactive = 0)  
AND (strMachCode LIKE '%' + @SearchText + '%' OR strDesc LIKE '%' + @SearchText + '%')
ORDER BY Type, Code  
ELSE  
SELECT 'Labour' as Type, strLabCode as Code, strDesc as Description FROM tblManLabour    
WHERE (strLabCode LIKE '%' + @SearchText + '%' OR strDesc LIKE '%' + @SearchText + '%')   
UNION ALL  
SELECT 'Machinery' as strType, strMachCode as Code, strDesc as Description FROM tblManMachinery  
WHERE (strMachCode LIKE '%' + @SearchText + '%' OR strDesc LIKE '%' + @SearchText + '%')
ORDER BY Type, Code  
END  
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptManResourcesGetReportData](
@IsOptLabour bit,
@IsOptMachinery bit,
@IsOptAll bit,
@SQLabCode VARCHAR(MAX),
@SQMachCode VARCHAR(MAX)
)  
AS  
BEGIN  
IF(@IsOptLabour = 1)
SELECT 0 AS intType, tblManLabour.strLabCode AS strCode, tblManLabour.strDesc, tblManLabour.intGLNumber, tblAccounts.strDesc AS strAccDesc, tblManLabour.decVariableHourly, tblManLabour.decFixedSetup, tblManLabour.decFixedBreakdown, tblManLabour.bitInactive FROM tblManLabour INNER JOIN tblAccounts ON tblManLabour.intGLNumber = tblAccounts.intGLNumber
WHERE (tblManLabour.strLabCode IN (SELECT * FROM fnSplitStringAsTable(''+@SQLabCode+'', ',')))
ORDER BY intType, strCode
IF(@IsOptMachinery = 1)
SELECT 1 AS intType, tblManMachinery.strMachCode AS strCode, tblManMachinery.strDesc, tblManMachinery.intGLNumber, tblAccounts.strDesc AS strAccDesc, tblManMachinery.decVariableHourly, tblManMachinery.decFixedSetup, tblManMachinery.decFixedBreakdown, tblManMachinery.bitInactive FROM tblManMachinery INNER JOIN tblAccounts ON tblManMachinery.intGLNumber = tblAccounts.intGLNumber
WHERE (tblManMachinery.strMachCode IN (SELECT * FROM fnSplitStringAsTable(''+@SQMachCode+'', ',')))
ORDER BY intType, strCode
IF(@IsOptAll = 1)
SELECT 0 AS intType, tblManLabour.strLabCode AS strCode, tblManLabour.strDesc, tblManLabour.intGLNumber, tblAccounts.strDesc AS strAccDesc, tblManLabour.decVariableHourly, tblManLabour.decFixedSetup, tblManLabour.decFixedBreakdown, tblManLabour.bitInactive FROM tblManLabour INNER JOIN tblAccounts ON tblManLabour.intGLNumber = tblAccounts.intGLNumber
WHERE (tblManLabour.strLabCode IN (SELECT * FROM fnSplitStringAsTable(''+@SQLabCode+'', ',')))
UNION ALL 
SELECT 1 AS intType, tblManMachinery.strMachCode AS strCode, tblManMachinery.strDesc, tblManMachinery.intGLNumber, tblAccounts.strDesc AS strAccDesc, tblManMachinery.decVariableHourly, tblManMachinery.decFixedSetup, tblManMachinery.decFixedBreakdown, tblManMachinery.bitInactive FROM tblManMachinery INNER JOIN tblAccounts ON tblManMachinery.intGLNumber = tblAccounts.intGLNumber
WHERE (tblManMachinery.strMachCode IN (SELECT * FROM fnSplitStringAsTable(''+@SQMachCode+'', ',')))
ORDER BY intType, strCode
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptManWCTransferGetData] (
	@IsOptSearch BIT
	,@SQStart DATETIME
	,@SQFinish DATETIME
	,@SearchText NVARCHAR(MAX)
	)
AS
BEGIN
	IF (@IsOptSearch = 1)
	BEGIN
		IF (Len(@SearchText) > 0)
			SELECT tblManJob.strJBDocID AS Code
				,tblManWorkCentre.strDesc AS Description
			FROM tblManJob
			INNER JOIN tblManWorkCentre ON tblManJob.strWCCode = tblManWorkCentre.strWCCode
			WHERE (
					tblManJob.dteJournalDate BETWEEN @SQStart
						AND @SQFinish
					)
				AND (
					tblManJob.strJBDocID LIKE '%' + @SearchText + '%'
					OR tblManWorkCentre.strDesc LIKE '%' + @SearchText + '%'
					)
			ORDER BY tblManJob.strJBDocID
		ELSE
			RETURN NULL
	END
	ELSE
		SELECT strJBDocID AS Code
			,strDesc AS Description
		FROM tblManJob
		INNER JOIN tblManWorkCentre ON tblManJob.strWCCode = tblManWorkCentre.strWCCode
		WHERE dteJournalDate BETWEEN @SQStart
				AND @SQFinish
		ORDER BY strJBDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptManWCTransferGetReportData](
@SQJobs NVARCHAR(MAX)
)  
AS  
BEGIN  
SELECT * FROM tblManJob WHERE strJBDocID IN (SELECT * FROM fnSplitStringAsTable(''+@SQJobs+'', ',')) ORDER BY strJBDocID
SELECT strJBDocID, dteSystemDate, strUserName, strWCCodeFrom, WCF.strDesc AS strWCDescFrom, strWCCodeTo, WCT.strDesc AS strWCDescTo, intType, lngID 
FROM tblManJobTransfer 
INNER JOIN tblManWorkCentre WCF ON tblManJobTransfer.strWCCodeFrom = WCF.strWCCode INNER JOIN tblManWorkCentre WCT ON tblManJobTransfer.strWCCodeTo = WCT.strWCCode 
WHERE strJBDocID IN (SELECT * FROM fnSplitStringAsTable(''+@SQJobs+'', ',')) ORDER BY strJBDocID, lngID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptAssetDepreciationGetAssetData](
@IsOptSearch bit,
@IsChkInactive bit,
@IsOptSortNumber bit,
@SearchText NVARCHAR(MAX)
)  
AS  
BEGIN  
IF(@IsOptSearch = 1)
BEGIN
IF(Len(@SearchText) >  2)
BEGIN
IF(@IsChkInactive = 1)
BEGIN
IF(@IsOptSortNumber = 1)
SELECT strAssetCode as AssetCode, strAssetDesc as AssetDesc FROM tblAssets WHERE (strAssetCode LIKE '%'+@SearchText+'%' OR strAssetDesc LIKE '%'+@SearchText+'%') ORDER BY strAssetCode
ELSE
SELECT strAssetCode as AssetCode, strAssetDesc as AssetDesc FROM tblAssets WHERE (strAssetCode LIKE '%'+@SearchText+'%' OR strAssetDesc LIKE '%'+@SearchText+'%') ORDER BY strAssetDesc
END
ELSE
BEGIN
IF(@IsOptSortNumber = 1)
SELECT strAssetCode as AssetCode, strAssetDesc as AssetDesc FROM tblAssets WHERE (strAssetCode LIKE '%'+@SearchText+'%' OR strAssetDesc LIKE '%'+@SearchText+'%') AND bitInactive = 0 ORDER BY strAssetCode
ELSE
SELECT strAssetCode as AssetCode, strAssetDesc as AssetDesc FROM tblAssets WHERE (strAssetCode LIKE '%'+@SearchText+'%' OR strAssetDesc LIKE '%'+@SearchText+'%') AND bitInactive = 0 ORDER BY strAssetDesc
END
END
ELSE
return null
END
ELSE
BEGIN
IF(@IsChkInactive = 1)
BEGIN
IF(@IsOptSortNumber = 1)
SELECT strAssetCode as AssetCode, strAssetDesc as AssetDesc FROM tblAssets
ELSE
SELECT strAssetCode as AssetCode, strAssetDesc as AssetDesc FROM tblAssets
END
ELSE
BEGIN
IF(@IsOptSortNumber = 1)
SELECT strAssetCode as AssetCode, strAssetDesc as AssetDesc FROM tblAssets WHERE bitInactive = 0 ORDER BY strAssetCode
ELSE
SELECT strAssetCode as AssetCode, strAssetDesc as AssetDesc FROM tblAssets WHERE bitInactive = 0 ORDER BY strAssetDesc
END
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptDepreciationGetReportData](
@IsOptAll bit,
@IsChkInactive bit,
@IsSelectedAssets bit,
@IsOptSortNumber bit,
@SQCode NVARCHAR(MAX),
@SQStart NVARCHAR(19),
@SQEnd NVARCHAR(19)
)  
AS  
BEGIN 
Declare @Query as NVARCHAR(max)    
Declare @Query1 as NVARCHAR(max)    
Declare @Query2 as NVARCHAR(max) 
Declare @Parameter as Bit
SET @Query = 'SELECT RTRIM(tblAssets.strAssetTypeCode) + '' - '' + tblAssetTypes.strDescription AS strAssetType, tblAssets.strAssetCode, tblAssets.strAssetDesc, 
tblAssets.decQuantity, tblAssets.dteDepreciateFrom, tblAssets.decPurchasePrice, tblAssets.decInsuredValue, tblAssets.decSalvageValue, tblAssets.decReplacementValue 
FROM tblAssets INNER JOIN tblAssetTypes ON tblAssets.strAssetTypeCode = tblAssetTypes.strCode WHERE tblAssets.strAssetCode IN (SELECT strAssetCode FROM tblDepreciationHistory 
WHERE tblDepreciationHistory.dteDepreciationDate BETWEEN '''+@SQStart+''' AND '''+@SQEnd+''')  '
IF(@IsOptAll = 0)
BEGIN
IF(@IsSelectedAssets = 1)
SET @Query +=  ' AND (tblAssets.strAssetCode IN ('''+@SQCode+''')) '
END
ELSE IF(@IsChkInactive = 0)
SET @Query += ' AND tblAssets.bitInactive = 0 '      
If(@IsOptSortNumber = 1)
SET @Query += ' ORDER BY strAssetCode'
Else
SET @Query += ' ORDER BY strAssetDesc'
SET @Query1 = 'SELECT * FROM tblDepreciationHistory'
IF(@IsOptAll = 0)
BEGIN
IF(@IsSelectedAssets = 1)
BEGIN
SET @Query1 +=  ' WHERE (tblDepreciationHistory.strAssetCode IN ('''+@SQCode+''')) '
SET @Parameter = 1
END
END
IF(@Parameter = 1)
SET @Query1 += ' AND '
ELSE
SET @Query1 += ' WHERE '
SET @Query1 +=  'dteDepreciationDate BETWEEN '''+@SQStart+''' AND '''+@SQEnd+''' ORDER BY dteDepreciationDate'
SET @Query2 = 'SELECT strDepreciationMethod1, strDepreciationMethod2, strDepreciationMethod3, strDepreciationMethod4, strDepreciationMethod5 FROM tblCoOptsN'
EXEC sp_Executesql @Query  
EXEC sp_Executesql @Query1
EXEC sp_Executesql @Query2
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptAssetRegisterGetReportData](
@IsChkInactive bit,
@intMethodNo int,
@StartDate NVARCHAR(19),
@EndDate NVARCHAR(19)
)  
AS  
BEGIN 
IF(@IsChkInactive = 1)
BEGIN
SELECT tblAssets.strAssetCode AS Asset, 
tblAssets.strAssetTypeCode AS AssetType, 
ISNULL(OC.decPurchasePrice, 0) AS OpeningCost, ISNULL(A.decPurchasePrice, 0) AS Additions, ISNULL(D.decPurchasePrice, 0) AS Disposals,
ISNULL(OAD.OpeningAccDepre, 0) AS OpeningAccumulatedDepreciation, ISNULL(Dep.Depreciation, 0) AS Depreciation, ISNULL(DOD.DepreOnDisposal, 0) AS DepreciationOnDisposals,ISNULL(OC.decPurchasePrice - CASE WHEN ISNULL(ONBV2.intDeptCnt,0) <2 THEN CASE WHEN ( CASE WHEN @intMethodNo=1 THEN(Select Top 1 decOpeningAccumulatedDepreciation1 from tblAssets tsa1 Where tsa1.strAssetCode=tblAssets.strAssetCode) WHEN @intMethodNo=2 THEN (Select Top 1 decOpeningAccumulatedDepreciation2 from tblAssets tsa1 Where tsa1.strAssetCode=tblAssets.strAssetCode) WHEN @intMethodNo=3 THEN (Select Top 1 decOpeningAccumulatedDepreciation3 from tblAssets tsa1 Where tsa1.strAssetCode=tblAssets.strAssetCode) WHEN @intMethodNo=4 THEN (Select Top 1 decOpeningAccumulatedDepreciation4 from tblAssets tsa1 Where tsa1.strAssetCode=tblAssets.strAssetCode) WHEN @intMethodNo=5 THEN (Select Top 1 decOpeningAccumulatedDepreciation5 from tblAssets tsa1 Where tsa1.strAssetCode=tblAssets.strAssetCode) END ) > 0 THEN tblAssets.decResidualValue ELSE 0 END ELSE CASE WHEN ISNULL(OAD.OpeningAccDepre,0)>0 THEN tblAssets.decResidualValue ELSE 0  END END - OAD.OpeningAccDepre, 0) AS OpeningNBV, ISNULL(CNBV.ClosingNBV,0) AS ClosingNBV
FROM tblAssets 
LEFT OUTER JOIN (SELECT strAssetCode, (CASE WHEN (dtePurchaseDate < ''+ @StartDate + '' AND (dteDisposalDate IS NULL OR dteDisposalDate > ''+ @StartDate + '')) THEN decPurchasePrice ELSE 0.0 END) AS decPurchasePrice FROM tblAssets) AS OC ON tblAssets.strAssetCode = OC.strAssetCode 
LEFT OUTER JOIN (SELECT strAssetCode, (CASE WHEN (dtePurchaseDate >= ''+ @StartDate + '' AND dtePurchaseDate <= ''+ @EndDate + '') THEN decPurchasePrice ELSE 0.0 END) AS decPurchasePrice FROM tblAssets) AS A ON tblAssets.strAssetCode = A.strAssetCode 
LEFT OUTER JOIN (SELECT strAssetCode, (CASE WHEN (dteDisposalDate >= ''+ @StartDate + '' AND dteDisposalDate <= ''+ @EndDate + '') THEN decPurchasePrice ELSE 0.0 END) AS decPurchasePrice FROM tblAssets) AS D ON tblAssets.strAssetCode = D.strAssetCode 
LEFT OUTER JOIN (SELECT ta.strAssetCode, ISNULL(CASE  
WHEN @intMethodNo = 1 THEN (ta.decOpeningAccumulatedDepreciation1 + ISNULL((SELECT SUM(tdh.decOtherValue1)FROM tblDepreciationHistory tdh WHERE tdh.strAssetCode = ta.strAssetCode AND tdh.dteDepreciationDate < ''+ @StartDate + ''), 0))  
WHEN @intMethodNo = 2 THEN (ta.decOpeningAccumulatedDepreciation2 + ISNULL((SELECT SUM(tdh.decOtherValue2)FROM tblDepreciationHistory tdh WHERE tdh.strAssetCode = ta.strAssetCode AND tdh.dteDepreciationDate < ''+ @StartDate + ''), 0))  
WHEN @intMethodNo = 3 THEN (ta.decOpeningAccumulatedDepreciation3 + ISNULL((SELECT SUM(tdh.decOtherValue3)FROM tblDepreciationHistory tdh WHERE tdh.strAssetCode = ta.strAssetCode AND tdh.dteDepreciationDate < ''+ @StartDate + ''), 0))  
WHEN @intMethodNo = 4 THEN (ta.decOpeningAccumulatedDepreciation4 + ISNULL((SELECT SUM(tdh.decOtherValue4)FROM tblDepreciationHistory tdh WHERE tdh.strAssetCode = ta.strAssetCode AND tdh.dteDepreciationDate < ''+ @StartDate + ''), 0))  
WHEN @intMethodNo = 5 THEN (ta.decOpeningAccumulatedDepreciation5 + ISNULL((SELECT SUM(tdh.decOtherValue5)FROM tblDepreciationHistory tdh WHERE tdh.strAssetCode = ta.strAssetCode AND tdh.dteDepreciationDate < ''+ @StartDate + ''), 0)) END,  
0) AS OpeningAccDepre 
FROM tblAssets ta WHERE (ta.dtePurchaseDate  < ''+ @StartDate + '') AND (ta.dteDisposalDate IS NULL  OR ta.dteDisposalDate > ''+ @StartDate + '') 
GROUP BY ta.strAssetCode, ta.decOpeningAccumulatedDepreciation1, ta.decOpeningAccumulatedDepreciation2, ta.decOpeningAccumulatedDepreciation3, ta.decOpeningAccumulatedDepreciation4, ta.decOpeningAccumulatedDepreciation5) AS OAD ON tblAssets.strAssetCode = OAD.strAssetCode 
LEFT OUTER JOIN (SELECT tdh.strAssetCode, ISNULL(CASE  
WHEN @intMethodNo = 1 THEN (ISNULL((Select decOpeningAccumulatedDepreciation1 from tblAssets where dtePurchaseDate between ''+ @StartDate + '' AND ''+ @EndDate + '' AND strAssetCode = tdh.strAssetCode),0)  +  SUM(tdh.decOtherValue1))  
WHEN @intMethodNo = 2 THEN (ISNULL((Select decOpeningAccumulatedDepreciation2 from tblAssets where dtePurchaseDate between ''+ @StartDate + '' AND ''+ @EndDate + '' AND strAssetCode = tdh.strAssetCode),0)  + SUM(tdh.decOtherValue2)) 
WHEN @intMethodNo = 3 THEN (ISNULL((Select decOpeningAccumulatedDepreciation3 from tblAssets where dtePurchaseDate between ''+ @StartDate + '' AND ''+ @EndDate + '' AND strAssetCode = tdh.strAssetCode),0)  + SUM(tdh.decOtherValue3))  
WHEN @intMethodNo = 4 THEN (ISNULL((Select decOpeningAccumulatedDepreciation4 from tblAssets where dtePurchaseDate between ''+ @StartDate + '' AND ''+ @EndDate + '' AND strAssetCode = tdh.strAssetCode),0)  + SUM(tdh.decOtherValue4)) 
WHEN @intMethodNo = 5 THEN (ISNULL((Select decOpeningAccumulatedDepreciation5 from tblAssets where dtePurchaseDate between ''+ @StartDate + '' AND ''+ @EndDate + '' AND strAssetCode = tdh.strAssetCode),0)  + SUM(tdh.decOtherValue5)) END,  
0) AS Depreciation 
FROM tblDepreciationHistory AS tdh  WHERE (tdh.dteDepreciationDate BETWEEN ''+ @StartDate + '' AND ''+ @EndDate + '') 
GROUP BY tdh.strAssetCode) AS Dep ON tblAssets.strAssetCode = Dep.strAssetCode  
LEFT OUTER JOIN (SELECT ta.strAssetCode, ISNULL(CASE WHEN @intMethodNo = 1 THEN (ta.decOpeningAccumulatedDepreciation1 + SUM(tdh.decOtherValue1))  
WHEN @intMethodNo = 2 THEN (ta.decOpeningAccumulatedDepreciation2 + SUM(tdh.decOtherValue2)) WHEN @intMethodNo = 3 THEN (ta.decOpeningAccumulatedDepreciation3 + SUM(tdh.decOtherValue3))  
WHEN @intMethodNo = 4 THEN (ta.decOpeningAccumulatedDepreciation4 + SUM(tdh.decOtherValue4)) WHEN @intMethodNo = 5 THEN (ta.decOpeningAccumulatedDepreciation5 + SUM(tdh.decOtherValue5)) END, 
0) AS DepreOnDisposal 
FROM tblAssets AS ta LEFT OUTER JOIN tblDepreciationHistory AS tdh ON ta.strAssetCode = tdh.strAssetCode WHERE (ta.dteDisposalDate BETWEEN ''+ @StartDate + '' AND ''+ @EndDate + '') AND (ta.dteDisposalDate IS NOT NULL) 
GROUP BY ta.strAssetCode, ta.decOpeningAccumulatedDepreciation1, ta.decOpeningAccumulatedDepreciation2, ta.decOpeningAccumulatedDepreciation3, ta.decOpeningAccumulatedDepreciation4, ta.decOpeningAccumulatedDepreciation5) AS DOD ON tblAssets.strAssetCode = DOD.strAssetCode 
LEFT OUTER JOIN (SELECT ta.strAssetCode, ISNULL((SELECT CASE WHEN ta.bitIsRevaluationValueActive = 1 THEN ta.decRevaluationValue ELSE ta.decPurchasePrice END AS Expr1)  
-(CASE WHEN tdh.strAssetCode Is Not NULL And tdh.intDeptCnt >=1 Or CASE WHEN @intMethodNo = 1 THEN (SELECT ISNULL(decOpeningAccumulatedDepreciation1,0) FROM tblAssets tsa WHERE ta.strAssetCode= tsa.strAssetCode)When @intMethodNo = 2 Then (Select ISNULL(decOpeningAccumulatedDepreciation2,0) FROM tblAssets tsa WHERE ta.strAssetCode=tsa.strAssetCode)When @intMethodNo = 3 Then (Select ISNULL(decOpeningAccumulatedDepreciation3,0) FROM tblAssets tsa WHERE ta.strAssetCode=tsa.strAssetCode)When @intMethodNo = 4 Then (Select ISNULL(decOpeningAccumulatedDepreciation4,0) FROM tblAssets tsa WHERE ta.strAssetCode=tsa.strAssetCode)When @intMethodNo = 5 Then (Select ISNULL(decOpeningAccumulatedDepreciation5,0) FROM tblAssets tsa WHERE ta.strAssetCode=tsa.strAssetCode)End > 0 Then decResidualValue Else 0 End) 
-(SELECT ISNULL(SUM(ISNULL(CASE  
WHEN @intMethodNo = 1 THEN (tdh.decOtherValue1)  
WHEN @intMethodNo = 2 THEN (tdh.decOtherValue2) 
WHEN @intMethodNo = 3 THEN (tdh.decOtherValue3)  
WHEN @intMethodNo = 4 THEN (tdh.decOtherValue4)  
WHEN @intMethodNo = 5 THEN (tdh.decOtherValue5) 
END, 0)), 0) AS Expr1 
FROM tblDepreciationHistory AS tdh WHERE (dteDepreciationDate <= ''+ @EndDate + '') AND (tdh.strAssetCode = ta.strAssetCode))  
-ISNULL(CASE  
WHEN @intMethodNo = 1 THEN (decOpeningAccumulatedDepreciation1)  
WHEN @intMethodNo = 2 THEN (decOpeningAccumulatedDepreciation2)  
WHEN @intMethodNo = 3 THEN (decOpeningAccumulatedDepreciation3)
WHEN @intMethodNo = 4 THEN (decOpeningAccumulatedDepreciation4)
WHEN @intMethodNo = 5 THEN (decOpeningAccumulatedDepreciation5)
END, 0), 0) AS ClosingNBV 
FROM tblAssets ta 
LEFT JOIN (SELECT strAssetCode,CASE
WHEN @intMethodNo=1  THEN ISNULL(COUNT(decOtherValue1),0)
WHEN @intMethodNo=2  THEN ISNULL(COUNT(decOtherValue2),0)
WHEN @intMethodNo=3  THEN ISNULL(COUNT(decOtherValue3),0)
WHEN @intMethodNo=4  THEN ISNULL(COUNT(decOtherValue4),0)
WHEN @intMethodNo=5  THEN ISNULL(COUNT(decOtherValue5),0)
END AS intDeptCnt
FROM tblDepreciationHistory
WHERE dteDepreciationDate<=''+ @EndDate + '' and 
(CASE 
WHEN @intMethodNo=1 THEN decOtherValue1
WHEN @intMethodNo=2 THEN decOtherValue2
WHEN @intMethodNo=3 THEN decOtherValue3
WHEN @intMethodNo=4 THEN decOtherValue4
WHEN @intMethodNo=5 THEN decOtherValue5
END )>0 
GROUP BY strAssetCode) AS tdh  ON ta.strAssetCode = tdh.strAssetCode) AS CNBV ON tblAssets.strAssetCode = CNBV.strAssetCode
LEFT JOIN (SELECT strAssetCode,CASE WHEN @intMethodNo = 1 THEN ISNULL(COUNT(decOtherValue1), 0) WHEN @intMethodNo = 2 THEN ISNULL(COUNT(decOtherValue2), 0) WHEN @intMethodNo = 3 THEN ISNULL(COUNT(decOtherValue3), 0) WHEN @intMethodNo = 4 THEN ISNULL(COUNT(decOtherValue4), 0) WHEN @intMethodNo = 5 THEN ISNULL(COUNT(decOtherValue5), 0) END AS intDeptCnt FROM tblDepreciationHistory WHERE dteDepreciationDate <= ''+ @EndDate + '' AND ( CASE WHEN @intMethodNo = 1 THEN decOtherValue1 WHEN @intMethodNo = 2 THEN decOtherValue2 WHEN @intMethodNo = 3 THEN decOtherValue3 WHEN @intMethodNo = 4 THEN decOtherValue4 WHEN @intMethodNo = 5 THEN decOtherValue5 END ) > 0 GROUP BY strAssetCode) As ONBV2 ON tblAssets.strAssetCode=ONBV2.strAssetCode
WHERE tblAssets.bitInactive = 0  AND tblAssets.dtePurchaseDate <=''+ @EndDate + ''  AND ((cast(tblAssets.dteDisposalDate as datetime) IS NULL)  OR (cast(tblAssets.dteDisposalDate as datetime)>=''+ @StartDate + ''))
GROUP BY tblAssets.strAssetTypeCode, tblAssets.strAssetCode, OC.decPurchasePrice, A.decPurchasePrice, D.decPurchasePrice, OAD.OpeningAccDepre, Dep.Depreciation, DOD.DepreOnDisposal,CNBV.ClosingNBV,ONBV2.intDeptCnt,tblAssets.decResidualValue ORDER BY AssetType, Asset
END
ELSE
BEGIN
SELECT tblAssets.strAssetCode AS Asset, tblAssets.strAssetTypeCode AS AssetType, ISNULL(OC.decPurchasePrice, 0) AS OpeningCost, ISNULL(A.decPurchasePrice, 0) AS Additions, ISNULL(D.decPurchasePrice, 0) AS Disposals,
ISNULL(OAD.OpeningAccDepre, 0) AS OpeningAccumulatedDepreciation, ISNULL(Dep.Depreciation, 0) AS Depreciation, ISNULL(DOD.DepreOnDisposal, 0) AS DepreciationOnDisposals,ISNULL(OC.decPurchasePrice - CASE WHEN ISNULL(ONBV2.intDeptCnt,0) <2 THEN CASE WHEN ( CASE WHEN @intMethodNo=1 THEN(Select Top 1 decOpeningAccumulatedDepreciation1 from tblAssets tsa1 Where tsa1.strAssetCode=tblAssets.strAssetCode) WHEN @intMethodNo=2 THEN (Select Top 1 decOpeningAccumulatedDepreciation2 from tblAssets tsa1 Where tsa1.strAssetCode=tblAssets.strAssetCode) WHEN @intMethodNo=3 THEN (Select Top 1 decOpeningAccumulatedDepreciation3 from tblAssets tsa1 Where tsa1.strAssetCode=tblAssets.strAssetCode) WHEN @intMethodNo=4 THEN (Select Top 1 decOpeningAccumulatedDepreciation4 from tblAssets tsa1 Where tsa1.strAssetCode=tblAssets.strAssetCode) WHEN @intMethodNo=5 THEN (Select Top 1 decOpeningAccumulatedDepreciation5 from tblAssets tsa1 Where tsa1.strAssetCode=tblAssets.strAssetCode) END ) > 0 THEN tblAssets.decResidualValue ELSE 0 END ELSE CASE WHEN ISNULL(OAD.OpeningAccDepre,0)>0 THEN tblAssets.decResidualValue ELSE 0  END END - OAD.OpeningAccDepre, 0) AS OpeningNBV, ISNULL(CNBV.ClosingNBV,0) AS ClosingNBV
FROM tblAssets 
LEFT OUTER JOIN (SELECT strAssetCode, (CASE WHEN (dtePurchaseDate < ''+ @StartDate + '' AND (dteDisposalDate IS NULL OR dteDisposalDate > ''+ @StartDate + '')) THEN decPurchasePrice ELSE 0.0 END) AS decPurchasePrice FROM tblAssets) AS OC ON tblAssets.strAssetCode = OC.strAssetCode 
LEFT OUTER JOIN (SELECT strAssetCode, (CASE WHEN (dtePurchaseDate >= ''+ @StartDate + '' AND dtePurchaseDate <= ''+ @EndDate + '') THEN decPurchasePrice ELSE 0.0 END) AS decPurchasePrice FROM tblAssets) AS A ON tblAssets.strAssetCode = A.strAssetCode 
LEFT OUTER JOIN (SELECT strAssetCode, (CASE WHEN (dteDisposalDate >= ''+ @StartDate + '' AND dteDisposalDate <= ''+ @EndDate + '') THEN decPurchasePrice ELSE 0.0 END) AS decPurchasePrice FROM tblAssets) AS D ON tblAssets.strAssetCode = D.strAssetCode 
LEFT OUTER JOIN (SELECT ta.strAssetCode, ISNULL(CASE  
WHEN @intMethodNo = 1 THEN (ta.decOpeningAccumulatedDepreciation1 + ISNULL((SELECT SUM(tdh.decOtherValue1)FROM tblDepreciationHistory tdh WHERE tdh.strAssetCode = ta.strAssetCode AND tdh.dteDepreciationDate < ''+ @StartDate + ''), 0))  
WHEN @intMethodNo = 2 THEN (ta.decOpeningAccumulatedDepreciation2 + ISNULL((SELECT SUM(tdh.decOtherValue2)FROM tblDepreciationHistory tdh WHERE tdh.strAssetCode = ta.strAssetCode AND tdh.dteDepreciationDate < ''+ @StartDate + ''), 0))  
WHEN @intMethodNo = 3 THEN (ta.decOpeningAccumulatedDepreciation3 + ISNULL((SELECT SUM(tdh.decOtherValue3)FROM tblDepreciationHistory tdh WHERE tdh.strAssetCode = ta.strAssetCode AND tdh.dteDepreciationDate < ''+ @StartDate + ''), 0))  
WHEN @intMethodNo = 4 THEN (ta.decOpeningAccumulatedDepreciation4 + ISNULL((SELECT SUM(tdh.decOtherValue4)FROM tblDepreciationHistory tdh WHERE tdh.strAssetCode = ta.strAssetCode AND tdh.dteDepreciationDate < ''+ @StartDate + ''), 0))  
WHEN @intMethodNo = 5 THEN (ta.decOpeningAccumulatedDepreciation5 + ISNULL((SELECT SUM(tdh.decOtherValue5)FROM tblDepreciationHistory tdh WHERE tdh.strAssetCode = ta.strAssetCode AND tdh.dteDepreciationDate < ''+ @StartDate + ''), 0)) END,  
0) AS OpeningAccDepre 
FROM tblAssets ta WHERE (ta.dtePurchaseDate  < ''+ @StartDate + '') AND (ta.dteDisposalDate IS NULL  OR ta.dteDisposalDate > ''+ @StartDate + '') 
GROUP BY ta.strAssetCode, ta.decOpeningAccumulatedDepreciation1, ta.decOpeningAccumulatedDepreciation2, ta.decOpeningAccumulatedDepreciation3, ta.decOpeningAccumulatedDepreciation4, ta.decOpeningAccumulatedDepreciation5) AS OAD ON tblAssets.strAssetCode = OAD.strAssetCode 
LEFT OUTER JOIN (SELECT tdh.strAssetCode, ISNULL(CASE  
WHEN @intMethodNo = 1 THEN (ISNULL((Select decOpeningAccumulatedDepreciation1 from tblAssets where dtePurchaseDate between ''+ @StartDate + '' AND ''+ @EndDate + '' AND strAssetCode = tdh.strAssetCode),0)  +  SUM(tdh.decOtherValue1))  
WHEN @intMethodNo = 2 THEN (ISNULL((Select decOpeningAccumulatedDepreciation2 from tblAssets where dtePurchaseDate between ''+ @StartDate + '' AND ''+ @EndDate + '' AND strAssetCode = tdh.strAssetCode),0)  + SUM(tdh.decOtherValue2)) 
WHEN @intMethodNo = 3 THEN (ISNULL((Select decOpeningAccumulatedDepreciation3 from tblAssets where dtePurchaseDate between ''+ @StartDate + '' AND ''+ @EndDate + '' AND strAssetCode = tdh.strAssetCode),0)  + SUM(tdh.decOtherValue3))  
WHEN @intMethodNo = 4 THEN (ISNULL((Select decOpeningAccumulatedDepreciation4 from tblAssets where dtePurchaseDate between ''+ @StartDate + '' AND ''+ @EndDate + '' AND strAssetCode = tdh.strAssetCode),0)  + SUM(tdh.decOtherValue4)) 
WHEN @intMethodNo = 5 THEN (ISNULL((Select decOpeningAccumulatedDepreciation5 from tblAssets where dtePurchaseDate between ''+ @StartDate + '' AND ''+ @EndDate + '' AND strAssetCode = tdh.strAssetCode),0)  + SUM(tdh.decOtherValue5)) END,  
0) AS Depreciation 
FROM tblDepreciationHistory AS tdh  WHERE (tdh.dteDepreciationDate BETWEEN ''+ @StartDate + '' AND ''+ @EndDate + '') 
GROUP BY tdh.strAssetCode) AS Dep ON tblAssets.strAssetCode = Dep.strAssetCode  
LEFT OUTER JOIN (SELECT ta.strAssetCode, ISNULL(CASE WHEN @intMethodNo = 1 THEN (ta.decOpeningAccumulatedDepreciation1 + SUM(tdh.decOtherValue1))  
WHEN @intMethodNo = 2 THEN (ta.decOpeningAccumulatedDepreciation2 + SUM(tdh.decOtherValue2)) WHEN @intMethodNo = 3 THEN (ta.decOpeningAccumulatedDepreciation3 + SUM(tdh.decOtherValue3))  
WHEN @intMethodNo = 4 THEN (ta.decOpeningAccumulatedDepreciation4 + SUM(tdh.decOtherValue4)) WHEN @intMethodNo = 5 THEN (ta.decOpeningAccumulatedDepreciation5 + SUM(tdh.decOtherValue5)) END, 
0) AS DepreOnDisposal 
FROM tblAssets AS ta LEFT OUTER JOIN tblDepreciationHistory AS tdh ON ta.strAssetCode = tdh.strAssetCode WHERE (ta.dteDisposalDate BETWEEN ''+ @StartDate + '' AND ''+ @EndDate + '') AND (ta.dteDisposalDate IS NOT NULL) 
GROUP BY ta.strAssetCode, ta.decOpeningAccumulatedDepreciation1, ta.decOpeningAccumulatedDepreciation2, ta.decOpeningAccumulatedDepreciation3, ta.decOpeningAccumulatedDepreciation4, ta.decOpeningAccumulatedDepreciation5) AS DOD ON tblAssets.strAssetCode = DOD.strAssetCode 
LEFT OUTER JOIN (SELECT ta.strAssetCode, ISNULL((SELECT CASE WHEN ta.bitIsRevaluationValueActive = 1 THEN ta.decRevaluationValue ELSE ta.decPurchasePrice END AS Expr1)  
-(CASE WHEN tdh.strAssetCode Is Not NULL And tdh.intDeptCnt >=1 Or CASE WHEN @intMethodNo = 1 THEN (SELECT ISNULL(decOpeningAccumulatedDepreciation1,0) FROM tblAssets tsa WHERE ta.strAssetCode= tsa.strAssetCode)When @intMethodNo = 2 Then (Select ISNULL(decOpeningAccumulatedDepreciation2,0) FROM tblAssets tsa WHERE ta.strAssetCode=tsa.strAssetCode)When @intMethodNo = 3 Then (Select ISNULL(decOpeningAccumulatedDepreciation3,0) FROM tblAssets tsa WHERE ta.strAssetCode=tsa.strAssetCode)When @intMethodNo = 4 Then (Select ISNULL(decOpeningAccumulatedDepreciation4,0) FROM tblAssets tsa WHERE ta.strAssetCode=tsa.strAssetCode)When @intMethodNo = 5 Then (Select ISNULL(decOpeningAccumulatedDepreciation5,0) FROM tblAssets tsa WHERE ta.strAssetCode=tsa.strAssetCode)End > 0 Then decResidualValue Else 0 End) 
-(SELECT ISNULL(SUM(ISNULL(CASE  
WHEN @intMethodNo = 1 THEN (tdh.decOtherValue1)  
WHEN @intMethodNo = 2 THEN (tdh.decOtherValue2) 
WHEN @intMethodNo = 3 THEN (tdh.decOtherValue3)  
WHEN @intMethodNo = 4 THEN (tdh.decOtherValue4)  
WHEN @intMethodNo = 5 THEN (tdh.decOtherValue5) 
END, 0)), 0) AS Expr1 
FROM tblDepreciationHistory AS tdh WHERE (dteDepreciationDate <= ''+ @EndDate + '') AND (tdh.strAssetCode = ta.strAssetCode))  
-ISNULL(CASE  
WHEN @intMethodNo = 1 THEN (decOpeningAccumulatedDepreciation1)  
WHEN @intMethodNo = 2 THEN (decOpeningAccumulatedDepreciation2)  
WHEN @intMethodNo = 3 THEN (decOpeningAccumulatedDepreciation3)
WHEN @intMethodNo = 4 THEN (decOpeningAccumulatedDepreciation4)
WHEN @intMethodNo = 5 THEN (decOpeningAccumulatedDepreciation5)
END, 0), 0) AS ClosingNBV 
FROM tblAssets ta 
LEFT JOIN (SELECT strAssetCode,CASE
WHEN @intMethodNo=1  THEN ISNULL(COUNT(decOtherValue1),0)
WHEN @intMethodNo=2  THEN ISNULL(COUNT(decOtherValue2),0)
WHEN @intMethodNo=3  THEN ISNULL(COUNT(decOtherValue3),0)
WHEN @intMethodNo=4  THEN ISNULL(COUNT(decOtherValue4),0)
WHEN @intMethodNo=5  THEN ISNULL(COUNT(decOtherValue5),0)
END AS intDeptCnt
FROM tblDepreciationHistory
WHERE dteDepreciationDate<=''+ @EndDate + '' and 
(CASE 
WHEN @intMethodNo=1 THEN decOtherValue1
WHEN @intMethodNo=2 THEN decOtherValue2
WHEN @intMethodNo=3 THEN decOtherValue3
WHEN @intMethodNo=4 THEN decOtherValue4
WHEN @intMethodNo=5 THEN decOtherValue5
END )>0 
GROUP BY strAssetCode) AS tdh  ON ta.strAssetCode = tdh.strAssetCode) AS CNBV ON tblAssets.strAssetCode = CNBV.strAssetCode
LEFT JOIN (SELECT strAssetCode,CASE WHEN @intMethodNo = 1 THEN ISNULL(COUNT(decOtherValue1), 0) WHEN @intMethodNo = 2 THEN ISNULL(COUNT(decOtherValue2), 0) WHEN @intMethodNo = 3 THEN ISNULL(COUNT(decOtherValue3), 0) WHEN @intMethodNo = 4 THEN ISNULL(COUNT(decOtherValue4), 0) WHEN @intMethodNo = 5 THEN ISNULL(COUNT(decOtherValue5), 0) END AS intDeptCnt FROM tblDepreciationHistory WHERE dteDepreciationDate <= ''+ @EndDate + '' AND ( CASE WHEN @intMethodNo = 1 THEN decOtherValue1 WHEN @intMethodNo = 2 THEN decOtherValue2 WHEN @intMethodNo = 3 THEN decOtherValue3 WHEN @intMethodNo = 4 THEN decOtherValue4 WHEN @intMethodNo = 5 THEN decOtherValue5 END ) > 0 GROUP BY strAssetCode) As ONBV2 ON tblAssets.strAssetCode=ONBV2.strAssetCode
WHERE tblAssets.dtePurchaseDate <=''+ @EndDate + ''  AND ((cast(tblAssets.dteDisposalDate as datetime) IS NULL)  OR (cast(tblAssets.dteDisposalDate as datetime)>=''+ @StartDate + ''))
GROUP BY tblAssets.strAssetTypeCode, tblAssets.strAssetCode, OC.decPurchasePrice, A.decPurchasePrice, D.decPurchasePrice, OAD.OpeningAccDepre, Dep.Depreciation, DOD.DepreOnDisposal,CNBV.ClosingNBV,ONBV2.intDeptCnt,tblAssets.decResidualValue ORDER BY AssetType, Asset
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptAssetsGetAssetData](
@IsOptSearch bit,
@IsChkInactive bit,
@IsOptSortNumber bit,
@SearchText NVARCHAR(MAX)
)  
AS  
BEGIN  
IF(@IsOptSearch = 1)
BEGIN
IF(Len(@SearchText) >  2)
BEGIN
IF(@IsChkInactive = 1)
BEGIN
IF(@IsOptSortNumber = 1)
SELECT strAssetCode as AssetCode, strAssetDesc as AssetDesc FROM tblAssets WHERE (strAssetCode LIKE '%'+@SearchText+'%' OR strAssetDesc LIKE '%'+@SearchText+'%') ORDER BY strAssetCode
ELSE
SELECT strAssetCode as AssetCode, strAssetDesc as AssetDesc FROM tblAssets WHERE (strAssetCode LIKE '%'+@SearchText+'%' OR strAssetDesc LIKE '%'+@SearchText+'%') ORDER BY strAssetDesc
END
ELSE
BEGIN
IF(@IsOptSortNumber = 1)
SELECT strAssetCode as AssetCode, strAssetDesc as AssetDesc FROM tblAssets WHERE (strAssetCode LIKE '%'+@SearchText+'%' OR strAssetDesc LIKE '%'+@SearchText+'%') AND bitInactive = 0 ORDER BY strAssetCode
ELSE
SELECT strAssetCode as AssetCode, strAssetDesc as AssetDesc FROM tblAssets WHERE (strAssetCode LIKE '%'+@SearchText+'%' OR strAssetDesc LIKE '%'+@SearchText+'%') AND bitInactive = 0 ORDER BY strAssetDesc
END
END
ELSE
return null
END
ELSE
BEGIN
IF(@IsChkInactive = 1)
BEGIN
IF(@IsOptSortNumber = 1)
SELECT strAssetCode as AssetCode, strAssetDesc as AssetDesc FROM tblAssets
ELSE
SELECT strAssetCode as AssetCode, strAssetDesc as AssetDesc FROM tblAssets
END
ELSE
BEGIN
IF(@IsOptSortNumber = 1)
SELECT strAssetCode as AssetCode, strAssetDesc as AssetDesc FROM tblAssets WHERE bitInactive = 0 ORDER BY strAssetCode
ELSE
SELECT strAssetCode as AssetCode, strAssetDesc as AssetDesc FROM tblAssets WHERE bitInactive = 0 ORDER BY strAssetDesc
END
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptManAssetsGetReportSummaryData](
@IsOptAll bit,
@IsChkInactive bit,
@IsSelectedAssets bit,
@IsOptSortNumber bit,
@SQCode NVARCHAR(MAX)
)  
AS  
BEGIN 
Declare @Query as NVARCHAR(max)    
SET @Query = 'SELECT strAssetCode, strAssetDesc, strAssetTypeCode, uidCenterID, strProjNumber, decQuantity, dteDepreciateFrom, strSerialNumber, strTagNumber, ISNULL(dteDisposalDate, ''1990/01/01'') AS dteDisposalDate, ISNULL(strDisposalCode, '''') AS strDisposalCode, decDisposalAmount, strVendNumber, dtePurchaseDate, strFinanceMethod, decIntRate, intPeriod, strAccNumber, strCapexOrder, decPurchasePrice, decResidualValue, decInsuredValue, decSalvageValue, decReplacementValue, decDepreciableValue, ISNULL(dteLastDeprecationDate, ''1990/01/01'') AS dteLastDeprecationDate, ISNULL(decRemainingValue, decDepreciableValue) AS decRemainingValue, strField1, strField2, strField3, strField4, strField5, strField6, strField7, strField8, strField9, strField10, strField11, strField12, strNotes, bitInactive, bitIsSubAsset, ISNULL(lngJourID, 0) AS lngJourID FROM tblAssets'
IF(@IsOptAll = 0)
BEGIN
IF(@IsSelectedAssets = 1)
SET @Query +=  ' WHERE (tblAssets.strAssetCode IN ('''+@SQCode+''')) '
ELSE IF(@IsChkInactive = 0)
SET @Query += ' WHERE tblAssets.bitInactive = 0 '
END
ELSE IF(@IsChkInactive = 0)
SET @Query += ' WHERE tblAssets.bitInactive = 0 '      
If(@IsOptSortNumber = 1)
SET @Query += ' ORDER BY strAssetCode'
Else
SET @Query += ' ORDER BY strAssetDesc'
EXEC sp_Executesql @Query  
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptManAssetsGetReportDetailsData](
@IsOptSortNumber bit,
@SQCode NVARCHAR(MAX)
)  
AS  
BEGIN 
IF(@IsOptSortNumber = 1)
SELECT strAssetCode, strAssetDesc, strAssetTypeCode, uidCenterID, strProjNumber, decQuantity, dteDepreciateFrom, strSerialNumber, strTagNumber, ISNULL(dteDisposalDate, '1990/01/01') AS dteDisposalDate, ISNULL(strDisposalCode, '') AS strDisposalCode, decDisposalAmount, strVendNumber, dtePurchaseDate, strFinanceMethod, decIntRate, intPeriod, strAccNumber, strCapexOrder, decPurchasePrice, decResidualValue, decInsuredValue, decSalvageValue, decReplacementValue, decDepreciableValue, ISNULL(dteLastDeprecationDate, '1990/01/01') AS dteLastDeprecationDate, ISNULL(decRemainingValue, decDepreciableValue) AS decRemainingValue, strField1, strField2, strField3, strField4, strField5, strField6, strField7, strField8, strField9, strField10, strField11, strField12, strNotes, bitInactive, bitIsSubAsset, ISNULL(lngJourID, 0) AS lngJourID FROM tblAssets
WHERE strAssetCode IN ((SELECT VALUE FROM dbo.fnSplitStringAsTable(@SQCode,','))) ORDER BY strAssetCode
Else
SELECT strAssetCode, strAssetDesc, strAssetTypeCode, uidCenterID, strProjNumber, decQuantity, dteDepreciateFrom, strSerialNumber, strTagNumber, ISNULL(dteDisposalDate, '1990/01/01') AS dteDisposalDate, ISNULL(strDisposalCode, '') AS strDisposalCode, decDisposalAmount, strVendNumber, dtePurchaseDate, strFinanceMethod, decIntRate, intPeriod, strAccNumber, strCapexOrder, decPurchasePrice, decResidualValue, decInsuredValue, decSalvageValue, decReplacementValue, decDepreciableValue, ISNULL(dteLastDeprecationDate, '1990/01/01') AS dteLastDeprecationDate, ISNULL(decRemainingValue, decDepreciableValue) AS decRemainingValue, strField1, strField2, strField3, strField4, strField5, strField6, strField7, strField8, strField9, strField10, strField11, strField12, strNotes, bitInactive, bitIsSubAsset, ISNULL(lngJourID, 0) AS lngJourID FROM tblAssets
WHERE strAssetCode IN ((SELECT VALUE FROM dbo.fnSplitStringAsTable(@SQCode,','))) ORDER BY strAssetDesc

SELECT * FROM tblAssetRepairs WHERE strAssetCode IN ((SELECT VALUE FROM dbo.fnSplitStringAsTable(@SQCode,',')))  ORDER BY dteRepairDate
SELECT * FROM tblDepreciationHistory WHERE strAssetCode IN ((SELECT VALUE FROM dbo.fnSplitStringAsTable(@SQCode,',')))  ORDER BY dteDepreciationDate
SELECT strDepreciationMethod1, strDepreciationMethod2, strDepreciationMethod3, strDepreciationMethod4, strDepreciationMethod5 FROM tblCoOptsN
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetDocumentCount](  
@DocumentNumber nvarchar(100) = null,  
@IsItemLine bit = NULL,  
@Type nvarchar(100) = ''  
)  
AS  
BEGIN  
SET NOCOUNT ON;  
 SELECT 
    COUNT(strDocumentNumber) AS 'DocumentCount'
  FROM 
    tblDocuments 
  WHERE 
(strDocumentNumber in (@DocumentNumber) OR @DocumentNumber IS NULL)
AND bitItemLine IN (0,ISNULL(@IsItemLine,0))
    AND (strType = @Type OR (@Type = '' AND strType IS NULL))

END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchasesReOrderData](
@IsCompanyChecked bit,
@LocationName NVARCHAR(200)
)
AS
BEGIN
IF(@IsCompanyChecked = 1)
BEGIN
SELECT INV.strPartNumber as PartNumber,INV.strDesc Description ,
	( SELECT Top 1 (tblVendors.strVendName) FROM tblInvVend INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName WHERE strPartNumber = INV.strPartNumber AND bitPreferred = 1 ) AS VendName ,
	Isnull(Isnull(decEconomicOrderQty, 0) * ceiling(((((decSumOnHand + decSumOnOrder) - (intReorderQty + decSumAlloc + decSumManuf)) * - 1))) / decBuyToStock / ( SELECT CASE WHEN decEconomicOrderQty = 0 THEN NULL ELSE decEconomicOrderQty END ), 0) RequiredQty ,
	INV.strStockUnit as StockUnit,decOrderLeadTime as OrderLeadTime ,
	( CASE WHEN (inv.decMinimumLevel) > 0 THEN inv.decMinimumLevel ELSE (intReorderQty) END ) AS MinimumLevel ,
	INV.decSumOnHand OnHand ,INV.decSumAlloc SalesOrder ,INV.decSumOnOrder PurchaseOrder ,
	Isnull(Isnull(decEconomicOrderQty, 0) * ceiling(((((decSumOnHand + decSumOnOrder) - (intReorderQty + decSumAlloc + decSumManuf)) * - 1))) / decBuyToStock / ( SELECT CASE WHEN decEconomicOrderQty = 0 THEN NULL ELSE decEconomicOrderQty END ) * decBuyToStock, 0) ToOrderBuy ,
	INV.decMinimumOrderQuantity as MinimumOrderQuantity,
	ISNULL(CASE WHEN bitUseLPPOnPO = 0 THEN decCostOnPO ELSE ( SELECT CASE WHEN Max(decPrice) > 0 THEN Max(decPrice) ELSE Max(tblInv.decLastPPUnit) END FROM tblInvVend INNER JOIN tblInv ON tblInv.strPartNumber = tblInvVend.strPartNumber WHERE tblInv.strPartNumber = Inv.strPartNumber AND tblInvVend.bitPreferred = 1 ) END, 0) AS VendPrice ,
	ISNULL(( SELECT Max(decDiscPerc) FROM tblInvVend WHERE strPartNumber = INV.strPartNumber AND bitPreferred = 1 ), 0) AS VendDisc ,
	( SELECT Top 1(tblVendors.strTaxCode) FROM tblInvVend INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName WHERE strPartNumber = INV.strPartNumber AND bitPreferred = 1 ) AS TaxCode ,
	0.00  TaxRate ,0.00  Amount ,NULL TaxObject ,INV.decBuyToStock BuyRatio ,INV.intReorderQty ReorderQty ,
	0.00  PurchaseQty ,INV.decMaxLevel AS MaxLevel ,
	--(INV.decMinimumOrderQuantity) AS MinQty ,(INV.decEconomicOrderQty) AS EconomicOrderQty ,(INV.decMinimumOrderQuantity) AS MinimumOrderQuantity ,
	SUM((INV.decMaxLevel) - ((INV.decSumOnHand) - (INV.decSumAlloc) - (INV.decSumManuf) + (INV.decSumOnOrder))) ToOrder ,
	INV.decSumManuf AS Manufacture 
	FROM tblInv INV 
	WHERE (intType = 1) AND INV.bitInactive = 0 AND Inv.bitOtherCmp = 0 GROUP BY Inv.strPartNumber ,Inv.strDesc ,Inv.strStockUnit ,inv.decMinimumLevel ,INV.decSumOnHand ,INV.intReorderQty ,decOrderLeadTime ,INV.decSumOnOrder ,INV.intReorderQty ,INV.decSumAlloc ,INV.decBuyToStock ,Inv.decEconomicOrderQty ,INV.decMinimumOrderQuantity ,Inv.decMaxLevel ,bitUseLPPOnPO ,decCostOnPO ,INV.decSumManuf HAVING SUM((INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf) + INV.decSumOnOrder) < INV.decMinimumLevel ORDER BY INV.strPartNumber
END
ELSE
BEGIN
	SELECT INV.strPartNumber as PartNumber,
	INV.strDesc as Description,
	( SELECT Top 1 (tblVendors.strVendName) FROM tblInvVend INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName WHERE strPartNumber = INV.strPartNumber AND bitPreferred = 1 ) AS VendName ,
	Isnull(Isnull(decEconomicOrderQty, 0) * ceiling(((((decSumOnHand + decSumOnOrder) - (intReorderQty + decSumAlloc + decSumManuf)) * - 1))) / decBuyToStock / ( SELECT CASE WHEN decEconomicOrderQty = 0 THEN NULL ELSE decEconomicOrderQty END ), 0) RequiredQty ,
	INV.strStockUnit as StockUnit,decOrderLeadTime as OrderLeadTime,
	( CASE WHEN (inv.decMinimumLevel) > 0 THEN inv.decMinimumLevel ELSE (intReorderQty) END ) AS MinimumLevel ,
	INV.decSumOnHand OnHand ,
	INV.decSumAlloc SalesOrder ,INV.decSumOnOrder PurchaseOrder ,
	Isnull(Isnull(decEconomicOrderQty, 0) * ceiling(((((decSumOnHand + decSumOnOrder) - (intReorderQty + decSumAlloc + decSumManuf)) * - 1))) / decBuyToStock / ( SELECT CASE WHEN decEconomicOrderQty = 0 THEN NULL ELSE decEconomicOrderQty END ) * decBuyToStock, 0) ToOrderBuy ,
	INV.decMinimumOrderQuantity as MinimumOrderQuantity,
	ISNULL(CASE WHEN bitUseLPPOnPO = 0 THEN decCostOnPO ELSE ( SELECT CASE WHEN MAX(decPrice) > 0 THEN MAX(decPrice) ELSE MAX(tblInv.decLastPPUnit) END FROM tblInvVend INNER JOIN tblInv ON tblInv.strPartNumber = tblInvVend.strPartNumber WHERE tblInv.strPartNumber = Inv.strPartNumber AND tblInvVend.bitPreferred = 1 ) END, 0) AS VendPrice ,
	ISNULL(( SELECT Max(decDiscPerc) FROM tblInvVend WHERE strPartNumber = INV.strPartNumber AND bitPreferred = 1 ), 0) AS VendDisc ,
	( SELECT Top 1(tblVendors.strTaxCode) FROM tblInvVend INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName WHERE strPartNumber = INV.strPartNumber AND bitPreferred = 1 ) AS TaxCode ,
	0.00  TaxRate ,0.00  Amount ,
	NULL TaxObject ,INV.decBuyToStock BuyRatio ,INV.intReorderQty ReorderQty ,0.00  PurchaseQty ,tblInvExt.decMaxLevel AS MaxLevel ,(INV.decMinimumOrderQuantity) AS MinQty ,(INV.decEconomicOrderQty) AS EconomicOrderQty ,
	--(INV.decMinimumOrderQuantity) AS MinimumOrderQuantity ,
	SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) ToOrder ,
	INV.decSumManuf AS Manufacture 
	FROM tblInv INV INNER JOIN tblInvExt ON INV.strPartNumber = tblInvExt.strPartNumber 
	WHERE (intType = 1) AND (tblInvExt.strLocName = @LocationName) AND (INV.bitInactive = 0) AND (tblInvExt.bitInactive = 0) AND Inv.bitOtherCmp = 0 
	GROUP BY Inv.strPartNumber ,Inv.strDesc ,Inv.strStockUnit ,inv.decMinimumLevel ,INV.decSumOnHand ,INV.intReorderQty ,decOrderLeadTime ,INV.decSumOnOrder ,INV.intReorderQty ,INV.decSumAlloc ,INV.decBuyToStock ,Inv.decEconomicOrderQty ,INV.decMinimumOrderQuantity ,tblInvExt.decMaxLevel ,tblInvExt.strLocName ,tblInvExt.decMinimumLevel ,bitUseLPPOnPO ,decCostOnPO ,INV.decSumManuf HAVING SUM((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel 
	ORDER BY INV.strPartNumber
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[NavigatePurchaseReOrderByNumber](
@DocNumber NVARCHAR(200),
@IsPrevious BIT
)
AS
BEGIN
IF(@IsPrevious = 1)
SELECT MAX(strOrdDocID) FROM tblReOrderDoc WHERE strOrdDocID < @DocNumber AND bitCleared = 0 
ELSE
SELECT MIN(strOrdDocID) FROM tblReOrderDoc WHERE strOrdDocID > @DocNumber AND bitCleared = 0
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPROWarehouseDetails] (  
@PartNumber NVARCHAR(50),    
@Location NVARCHAR(10)    
)    
AS    
BEGIN    
SELECT tblInvExt.strLocName AS [Location]  
,tblInvExt.decAvail AS Available    
,tblInvExt.decOnHand AS OnHand    
,tblInvLoc.intType AS LocationType     
,ISNULL(( SELECT COUNT(tblInvLocSec.strLocName) FROM tblInvLocSec WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName), 0) as LocationCount
,ISNULL(tblInvLocSec.strUserName, '')
,tblInvExt.decAlloc AS Alloc    
,tblInvExt.decOnOrder AS OnOrder    
,tblInvExt.decManuf AS Manuf    
,( SELECT SUM(QTY) FROM ( SELECT (ISNULL(SUM(DT.decQtyRemaining), 0) * -1) AS QTY FROM tblInvTrfOrdDoc DOC INNER JOIN tblInvTrfOrdDocDT DT ON DOC.strInvTrfOrdDocID = DT.strInvTrfOrdDocID WHERE DOC.bitCleared = 0 AND DOC.strLocName = @Location AND DT.strPartNumber = @PartNumber UNION ALL SELECT ISNULL(SUM(DT.decQtyRemaining), 0) AS QTY FROM tblInvTrfOrdDoc DOC INNER JOIN tblInvTrfOrdDocDT DT ON DOC.strInvTrfOrdDocID = DT.strInvTrfOrdDocID WHERE DOC.bitCleared = 0 AND DOC.strToLocName = @Location AND DT.strPartNumber = @PartNumber ) AS Result1 ) AS SalesOrder
,( SELECT SUM(QTY) FROM ( SELECT (ISNULL(SUM(DT.decQty), 0) *-1) AS QTY FROM tblInvTrfDoc DOC INNER JOIN tblInvTrfDocDT DT ON DOC.strTrfDocID = DT.strTrfDocID WHERE bitWarehouseTrf = 1 AND bitCleared = 0 AND strFromLoc = @Location AND DT.strPartNumber = @PartNumber UNION ALL SELECT ISNULL(SUM(DT.decQty), 0) AS QTY FROM tblInvTrfDoc DOC INNER JOIN tblInvTrfDocDT DT ON DOC.strTrfDocID = DT.strTrfDocID WHERE bitWarehouseTrf = 1 AND bitCleared = 0 AND strToLoc = @Location AND DT.strPartNumber = @PartNumber ) AS Result2 ) AS Purchase
FROM tblInvExt   
INNER JOIN tblInvLoc ON tblInvExt.strLocName = tblInvLoc.strLocName   
LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName   
WHERE tblInvExt.strPartNumber = @PartNumber AND tblInvExt.strLocName = @Location  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseReOrderDocData] @OrdDocID NVARCHAR(100)  
AS  
BEGIN  
select distinct   
tblReOrderDoc.strOrdDocID as OrdPDocID  
,tblReOrderDoc.dteSystemDate as SystemDate  
,tblReOrderDoc.dteJournalDate as JournalDate  
,tblReOrderDoc.dteRequired as [Required]  
,tblReOrderDoc.strUserName as UserName  
,tblReOrderDoc.strShipTo as ShipTo  
,tblReOrderDoc.strReference as Reference  
,tblReOrderDoc.decSubTotal as SubTotal  
,tblReOrderDoc.decVAT as VAT  
,tblReOrderDoc.decTotal as Total  
,tblReOrderDoc.strNotes as Notes  
,tblReOrderDoc.bitPrinted as Printed  
,tblReOrderDoc.bitEmailed as Emailed  
,tblReOrderDoc.bitCleared as Cleared  
,tblReOrderDoc.strAddInfo as AddInfo  
,tblReOrderDoc.strCurrency as Currency  
,tblReOrderDoc.bitIsForeign as IsForeign  
,tblReOrderDoc.decSubTotalF as SubTotalF  
,tblReOrderDoc.decVATF as VATF  
,tblReOrderDoc.decTotalF as TotalF  
,tblReOrderDoc.decExchange as Exchange  
,tblReOrderDoc.intDept as Dept  
,tblReOrderDoc.strSubFormated as SubFormated  
,tblReOrderDoc.strVATFormatted as VATFormatted  
,tblReOrderDoc.strTotFormatted as TotFormatted  
,tblReOrderDoc.decTotalCost as TotalCost  
,tblReOrderDoc.decTotalMarkup as TotalMarkup  
,tblReOrderDoc.strCustName as CustName  
,tblReOrderDoc.decDiscPerc as DiscPerc  
,tblReOrderDoc.decDiscAmt as DiscAmt  
,tblReOrderDoc.decDiscAmtF as DiscAmtF  
,tblReOrderDoc.strDiscFormatted as DiscFormatted  
,tblReOrderDoc.strStatusTypeCode as StatusTypeCode  
,tblReOrderDocDT.strLocation as [Location]
,tblReOrderDocDT.intPJDocItemLineNo as PJDocItemLineNo 
,tblReOrderDocDT.strProcessJobDocID as ProcessJobDocID 
FROM tblReOrderDoc 
INNER JOIN tblReOrderDocDT on tblReOrderDocDT.strOrdDocID=tblReOrderDoc.strOrdDocID  
WHERE tblReOrderDoc.strOrdDocID = @OrdDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseReOrderDocDTData] @OrdDocID NVARCHAR(100)
AS
BEGIN
SELECT 
tblReOrderDocDT.strPartNumber as PartNumber,
INV.strDesc as [Description],
tblReOrderDocDT.strVendorName AS VendName ,
Isnull(Isnull(decEconomicOrderQty, 0) * ceiling(((((decSumOnHand + decSumOnOrder) - (intReorderQty + decSumAlloc + decSumManuf)) * - 1))) / INV.decBuyToStock / ( SELECT CASE WHEN decEconomicOrderQty = 0 THEN NULL ELSE decEconomicOrderQty END ), 0) as RequiredQty,
INV.strStockUnit as StockUnit,
INV.decOrderLeadTime as OrderLeadTime,
( CASE WHEN (inv.decMinimumLevel) > 0 THEN inv.decMinimumLevel ELSE (intReorderQty) END ) as MinimumLevel,
INV.decSumOnHand as OnHand,
INV.decSumAlloc as SalesOrder ,
INV.decSumOnOrder as PurchaseOrder ,
tblReOrderDocDT.decToOrderStockUnit as ToOrder ,
Isnull(Isnull(decEconomicOrderQty, 0) * ceiling(((((decSumOnHand + decSumOnOrder) - (intReorderQty + decSumAlloc + decSumManuf)) * - 1))) / INV.decBuyToStock / ( SELECT CASE WHEN decEconomicOrderQty = 0 THEN NULL ELSE decEconomicOrderQty END ) * INV.decBuyToStock, 0) as ToOrderBuy,
INV.decMinimumOrderQuantity as MinimumOrderQuantity ,
tblReOrderDocDT.decPrice as VendPrice ,
tblReOrderDocDT.decDiscountPer as VendDisc ,
tblReOrderDocDT.strLineTaxCode as TaxCode ,
tblReOrderDocDT.decLineTaxAmount as TaxRate ,
tblReOrderDocDT.decLineTotalCost as Amount, 
NULL as TaxObject , 
INV.decBuyToStock as BuyRatio ,
INV.intReorderQty as ReorderQty,
tblReOrderDocDT.decPurchaseQty as PurchaseQty 
FROM tblInv INV 
INNER JOIN tblReOrderDocDT on tblReOrderDocDT.strPartNumber = INV.strPartNumber and tblReOrderDocDT.strOrdDocID = @OrdDocID
INNER JOIN tblInvExt ON INV.strPartNumber = tblInvExt.strPartNumber 
WHERE tblInvExt.strLocName = tblReOrderDocDT.strLocation  AND INV.bitInactive = 0 AND Inv.bitOtherCmp = 0 
GROUP BY tblReOrderDocDT.strPartNumber ,Inv.strDesc ,INV.strStockUnit ,inv.decMinimumLevel ,INV.decSumOnHand ,INV.intReorderQty ,INV.decOrderLeadTime ,INV.decSumOnOrder ,INV.intReorderQty ,INV.decSumAlloc ,tblReOrderDocDT.decBuyToStock ,Inv.decEconomicOrderQty ,INV.decMinimumOrderQuantity,tblReOrderDocDT.strLineTaxCode,tblReOrderDocDT.decLineTaxAmount ,tblReOrderDocDT.decLineTotalCost,tblReOrderDocDT.strVendorName,INV.decBuyToStock ,tblReOrderDocDT.decToOrderStockUnit,tblReOrderDocDT.decPrice ,tblReOrderDocDT.decDiscountPer ,tblReOrderDocDT.strLineTaxCode ,tblReOrderDocDT.decLineTaxAmount ,tblReOrderDocDT.decLineTotalCost,tblReOrderDocDT.decPurchaseQty, INV.decSumManuf 
ORDER BY tblReOrderDocDT.strPartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseReOrderPrintDocDTData] @OrdDocID NVARCHAR(100)
AS
BEGIN
SELECT
cast(SUM(tblReOrderDocDT.decPrice * tblReOrderDocDT.decPurchaseQty) as VARCHAR(20)) as SubFormated,
cast(tblReOrderDoc.decDiscAmt as VARCHAR(20)) as DiscFormatted,
cast(SUM(decLineTaxAmount) as VARCHAR(20)) as VATFormatted	
FROM tblReOrderDocDT 
INNER JOIN tblReOrderDoc on tblReOrderDocDT.strOrdDocID =tblReOrderDoc.strOrdDocID 	 
WHERE tblReOrderDocDT.strOrdDocID =  @OrdDocID 
GROUP BY tblReOrderDoc.decDiscAmt
END
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseReOrderFillPrintData](
@DocNumber NVARCHAR(100),
@IsDisplayLogo bit,
@LocationCriteria NVARCHAR(200)
)
AS
BEGIN
SELECT * FROM tblReOrderDoc WHERE strOrdDocID = @DocNumber
SELECT tblReOrderDocDT.*, '' AS strItemCode, '' AS strItemDesc, tblInv.strBarCode, tblInv.strBarCode2, tblInvImg.imgData AS imgImage FROM tblReOrderDocDT INNER JOIN tblReOrderDoc ON tblReOrderDocDT.strOrdDocID = tblReOrderDoc.strOrdDocID INNER JOIN tblInv ON tblReOrderDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblInvImg ON tblReOrderDocDT.strPartNumber = tblInvImg.strPartNumber AND tblInvImg.bitDefaultImage = 1 WHERE tblReOrderDocDT.strOrdDocID = @DocNumber  ORDER BY tblReOrderDocDT.intLineNo
SELECT imgLogo, @IsDisplayLogo AS bitDisplayLogo FROM tblCompany
SELECT * FROM dbo.fnTblInvLocations(@LocationCriteria) tblInv WHERE strPartNumber IN (SELECT DISTINCT strPartNumber FROM tblReOrderDocDT WHERE strOrdDocID = @DocNumber )
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[PurchaseReOrderCheckItemValid](
@LocationName NVARCHAR(100),
@PartNumber NVARCHAR(100)
)
AS
BEGIN
SELECT 
INV.strPartNumber as PartNumber,
INV.strDesc as [Description],
(SELECT tblVendors.strVendName FROM tblInvVend INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName WHERE strPartNumber = INV.strPartNumber AND bitPreferred = 1 ) AS VendName,
Isnull(Isnull(decEconomicOrderQty, 0) * ceiling(((((decSumOnHand + decSumOnOrder) - (intReorderQty + decSumAlloc + decSumManuf)) * - 1))) / decBuyToStock / ( SELECT CASE WHEN decEconomicOrderQty = 0 THEN NULL ELSE decEconomicOrderQty END ), 0) as RequiredQty,
INV.strStockUnit as StockUnit,
decOrderLeadTime as OrderLeadTime,
( CASE WHEN (inv.decMinimumLevel) > 0 THEN inv.decMinimumLevel ELSE (intReorderQty) END ) as MinimumLevel,
INV.decSumOnHand as OnHand,
INV.decSumAlloc as SalesOrder,
INV.decSumOnOrder as PurchaseOrder,
((INV.decSumOnHand + INV.decSumOnOrder) - (INV.intReorderQty + INV.decSumAlloc + INV.decSumManuf)) * - 1 as ToOrder,
Isnull(Isnull(decEconomicOrderQty, 0) * ceiling(((((decSumOnHand + decSumOnOrder) - (intReorderQty + decSumAlloc + decSumManuf)) * - 1))) / decBuyToStock / ( SELECT CASE WHEN decEconomicOrderQty = 0 THEN NULL ELSE decEconomicOrderQty END ) * decBuyToStock, 0) as ToOrderBuy,
INV.decMinimumOrderQuantity as MinimumOrderQuantity ,
ISNULL((SELECT CASE WHEN (decPrice)>0 then decPrice else tblInv.decLastPPUnit  END  FROM tblInvVend  inner join tblInv on tblInv.strPartNumber=tblInvVend.strPartNumber  where tblInv.strPartNumber =Inv.strPartNumber and tblInvVend.bitPreferred=1),0) as VendPrice,
ISNULL(( SELECT decDiscPerc FROM tblInvVend WHERE strPartNumber = INV.strPartNumber AND bitPreferred = 1 ),0) as VendDisc, 
( SELECT tblVendors.strTaxCode  FROM tblInvVend INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName WHERE strPartNumber = INV.strPartNumber AND bitPreferred = 1 ) as TaxCode,
0.00 as TaxRate,
0.00 as Amount, 
NULL as TaxObject, 
INV.decBuyToStock as BuyRatio,
INV.intReorderQty as ReorderQty,
0.00 as PurchaseQty 
FROM tblInv INV 
INNER JOIN tblInvExt ON INV.strPartNumber = tblInvExt.strPartNumber 
WHERE  tblInvExt.strLocName=(case WHEN INV.intType=1 then @LocationName else 'DEFAULT' END ) AND INV.strPartNumber  =@PartNumber  AND INV.bitInactive = 0 AND Inv.bitOtherCmp = 0 
GROUP BY Inv.strPartNumber ,Inv.strDesc ,Inv.strStockUnit ,inv.decMinimumLevel ,INV.decSumOnHand ,INV.intReorderQty ,decOrderLeadTime ,INV.decSumOnOrder ,INV.intReorderQty ,INV.decSumAlloc ,INV.decBuyToStock ,Inv.decEconomicOrderQty ,INV.decMinimumOrderQuantity,INV.strPartNumber, INV.decSumManuf 
ORDER BY INV.strPartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchasesReOrderItem](
@IsCompanyChecked bit,
@PartNumber NVARCHAR(200),
@LocationName NVARCHAR(200)
)
AS
BEGIN
IF(@IsCompanyChecked = 1)
BEGIN
SELECT 
INV.strPartNumber as PartNumber ,
INV.strDesc as [Description],
( SELECT tblVendors.strVendName FROM tblInvVend INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName WHERE strPartNumber = INV.strPartNumber AND bitPreferred = 1 ) AS VendName,
Isnull(Isnull(decEconomicOrderQty, 0) * ceiling(((((decSumOnHand + decSumOnOrder) - (intReorderQty + decSumAlloc + decSumManuf)) * - 1))) / decBuyToStock / ( SELECT CASE WHEN decEconomicOrderQty = 0 THEN NULL ELSE decEconomicOrderQty END ), 0) as RequiredQty,
INV.strStockUnit as StockUnit,
decOrderLeadTime as OrderLeadTime,
( CASE WHEN (inv.decMinimumLevel) > 0 THEN inv.decMinimumLevel ELSE (intReorderQty) END ) as MinimumLevel,
INV.decSumOnHand as OnHand,
INV.decSumAlloc as SalesOrder,
INV.decSumOnOrder as PurchaseOrder,
Isnull(Isnull(decEconomicOrderQty, 0) * ceiling(((((decSumOnHand + decSumOnOrder) - (intReorderQty + decSumAlloc + decSumManuf)) * - 1))) / decBuyToStock / ( SELECT CASE WHEN decEconomicOrderQty = 0 THEN NULL ELSE decEconomicOrderQty END ) * decBuyToStock, 0) as ToOrderBuy,
INV.decMinimumOrderQuantity as MinimumOrderQuantity,
ISNULL(( SELECT CASE WHEN (decPrice) > 0 THEN decPrice ELSE tblInv.decLastPPUnit END FROM tblInvVend INNER JOIN tblInv ON tblInv.strPartNumber = tblInvVend.strPartNumber WHERE tblInv.strPartNumber = Inv.strPartNumber AND tblInvVend.bitPreferred = 1 ), 0) as VendPrice,
ISNULL(( SELECT decDiscPerc FROM tblInvVend WHERE strPartNumber = INV.strPartNumber AND bitPreferred = 1 ), 0) AS VendDisc ,( SELECT tblVendors.strTaxCode FROM tblInvVend INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName WHERE strPartNumber = INV.strPartNumber AND bitPreferred = 1 ) as TaxCode,
0.00 as TaxRate,
0.00 as Amount,
NULL as TaxObject,
INV.decBuyToStock as BuyRatio,
INV.intReorderQty as ReorderQty,
0.00 as PurchaseQty,
tblInvExt.decMaxLevel as MaxLevel,
(INV.decMinimumOrderQuantity) as MinQty,
(INV.decEconomicOrderQty) as EconomicOrderQty,
SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) as ToOrder,
INV.decSumManuf as Manufacture 
FROM tblInv INV 
INNER JOIN tblInvExt ON INV.strPartNumber = tblInvExt.strPartNumber 
WHERE INV.strPartNumber = @PartNumber AND INV.bitInactive = 0 AND Inv.bitOtherCmp = 0 
GROUP BY Inv.strPartNumber ,Inv.strDesc ,Inv.strStockUnit ,inv.decMinimumLevel ,INV.decSumOnHand ,INV.intReorderQty ,decOrderLeadTime ,INV.decSumOnOrder ,INV.intReorderQty ,INV.decSumAlloc ,INV.decBuyToStock ,Inv.decEconomicOrderQty ,INV.decMinimumOrderQuantity ,tblInvExt.decMaxLevel, INV.decSumManuf 
ORDER BY INV.strPartNumber
END
ELSE
BEGIN
SELECT 
INV.strPartNumber as PartNumber,
INV.strDesc as [Description],
( SELECT tblVendors.strVendName FROM tblInvVend INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName WHERE strPartNumber = INV.strPartNumber AND bitPreferred = 1 ) as VendName,
Isnull(Isnull(decEconomicOrderQty, 0) * ceiling(((((decSumOnHand + decSumOnOrder) - (intReorderQty + decSumAlloc + decSumManuf)) * - 1))) / decBuyToStock / ( SELECT CASE WHEN decEconomicOrderQty = 0 THEN NULL ELSE decEconomicOrderQty END ), 0) as RequiredQty,
INV.strStockUnit as StockUnit,
decOrderLeadTime as OrderLeadTime,
( CASE WHEN (inv.decMinimumLevel) > 0 THEN inv.decMinimumLevel ELSE (intReorderQty) END ) as MinimumLevel,
INV.decSumOnHand as OnHand,
INV.decSumAlloc as SalesOrder,
INV.decSumOnOrder as PurchaseOrder,
Isnull(Isnull(decEconomicOrderQty, 0) * ceiling(((((decSumOnHand + decSumOnOrder) - (intReorderQty + decSumAlloc + decSumManuf)) * - 1))) / decBuyToStock / ( SELECT CASE WHEN decEconomicOrderQty = 0 THEN NULL ELSE decEconomicOrderQty END ) * decBuyToStock, 0) as ToOrderBuy,
INV.decMinimumOrderQuantity as MinimumOrderQuantity,
ISNULL((SELECT CASE WHEN (decPrice)>0 then decPrice else tblInv.decLastPPUnit  END  FROM tblInvVend  inner join tblInv on tblInv.strPartNumber=tblInvVend.strPartNumber  where tblInv.strPartNumber =Inv.strPartNumber and tblInvVend.bitPreferred=1),0) as VendPrice,
ISNULL(( SELECT decDiscPerc FROM tblInvVend WHERE strPartNumber = INV.strPartNumber AND bitPreferred = 1 ),0) AS VendDisc ,( SELECT tblVendors.strTaxCode  FROM tblInvVend INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName WHERE strPartNumber = INV.strPartNumber AND bitPreferred = 1 ) as TaxCode, 
0.00 as TaxRate, 
0.00 as Amount, 
NULL as TaxObject, 
INV.decBuyToStock as BuyRatio,
INV.intReorderQty as ReorderQty,
0.00 as PurchaseQty,
tblInvExt.decMaxLevel as MaxLevel,
(INV.decMinimumOrderQuantity) as MinQty,
(INV.decEconomicOrderQty) as EconomicOrderQty,
SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) as ToOrder,
INV.decSumManuf as Manufacture 
FROM tblInv INV 
INNER JOIN tblInvExt ON INV.strPartNumber = tblInvExt.strPartNumber 
WHERE tblInvExt.strLocName=(case WHEN INV.intType=1 then @LocationName else 'DEFAULT' END ) AND INV.strPartNumber  = @PartNumber  AND INV.bitInactive = 0 AND Inv.bitOtherCmp = 0 
GROUP BY Inv.strPartNumber ,Inv.strDesc ,Inv.strStockUnit ,inv.decMinimumLevel ,INV.decSumOnHand ,INV.intReorderQty ,decOrderLeadTime ,INV.decSumOnOrder ,INV.intReorderQty ,INV.decSumAlloc ,INV.decBuyToStock ,Inv.decEconomicOrderQty ,INV.decMinimumOrderQuantity,tblInvExt.decMaxLevel,tblInvExt.strLocName, INV.decSumManuf 
ORDER BY INV.strPartNumber
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPORInvoiceDoc] (  
@PartNumber nvarchar(50)  = NUll
)  
AS  
BEGIN 
SELECT TOP 1 
inv.strPartNumber as PartNumber,
decSumOnHand as SumOnHand,
decSumValue as SumValue,
decStandardCost as StandardCost,
decPriceEaExc as Price, 
decCostOnPO as CostOnPO, 
bitUseLPPOnPO as UseLPPOnPO
FROM tblInv inv  
LEFT JOIN tblInvoiceDocPDT dt  ON dt.strPartNumber=inv.strPartNumber 
inner join tblInvoiceDocP as dp ON dt.strInvPDocID = dp.strInvPDocID
WHERE inv.strPartNumber= @PartNumber and dp.strInvPDocID   NOT LIKE ('%CN%') 
ORDER BY dp.strInvPDocID DESC,Convert(DATE,dteJournalDate ) DESC
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertPurchaseReOrderData](  
@OrdDocID NVARCHAR(100),  
@SystemDate DateTime,  
@JournalDate DateTime,  
@Required DateTime,  
@UserName NVARCHAR(100),  
@ShipTo NVARCHAR(100),  
@Reference NVARCHAR(100),  
@SubTotal decimal,  
@VAT decimal,  
@Total decimal,  
@Notes NVARCHAR(Max),  
@IsPrinted bit,  
@IsEmailed bit,  
@IsCleared bit,  
@AddInfo NVARCHAR(100),  
@Currency NVARCHAR(100),  
@IsForeign bit,  
@SubTotalF decimal,  
@VATF decimal,  
@TotalF decimal,  
@Exchange decimal,  
@Dept int,  
@SubFormated NVARCHAR(100),  
@VATFormatted NVARCHAR(100),  
@TotFormatted NVARCHAR(100),  
@TotalCost decimal,  
@TotalMarkup decimal,  
@DiscPerc decimal,  
@DiscAmt decimal,  
@DiscAmtF decimal,  
@DiscFormatted NVARCHAR(100),  
@StatusTypeCode NVARCHAR(100),
@IsFromProcessJob bit,
@ProcessJobDocID NVARCHAR(100)
)  
AS  
BEGIN  
INSERT INTO tblReOrderDoc(  
strOrdDocID,  
dteSystemDate,  
dteJournalDate,  
dteRequired,  
strUserName,  
strShipTo,  
strReference,  
decSubTotal,  
decVAT,  
decTotal,  
strNotes,  
bitPrinted,  
bitEmailed,  
bitCleared,  
strAddInfo,  
strCurrency,  
bitIsForeign,  
decSubTotalF,  
decVATF,  
decTotalF,  
decExchange,  
intDept,  
strSubFormated,  
strVATFormatted,  
strTotFormatted,  
decTotalCost,  
decTotalMarkup,  
decDiscPerc,  
decDiscAmt,  
decDiscAmtF,  
strDiscFormatted,  
strStatusTypeCode,
bitFromProcessJob,
strProcessJobDocID)  
VALUES (  
@OrdDocID,  
@SystemDate,  
@JournalDate,  
@Required,  
@UserName,  
@ShipTo,  
@Reference,  
@SubTotal,  
@VAT,  
@Total,  
@Notes,  
@IsPrinted,  
@IsEmailed,  
@IsCleared,  
@AddInfo,  
@Currency,  
@IsForeign,  
@SubTotalF,  
@VATF,  
@TotalF,  
@Exchange,  
@Dept,  
@SubFormated,  
@VATFormatted,  
@TotFormatted,  
@TotalCost,  
@TotalMarkup,  
@DiscPerc,  
@DiscAmt,  
@DiscAmtF,  
@DiscFormatted,  
@StatusTypeCode,
@IsFromProcessJob,
@ProcessJobDocID); SELECT SCOPE_IDENTITY();  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertPurchaseReOrderDTData](  
@OrdDocID NVARCHAR(100),  
@LineNo int,  
@PartNumber NVARCHAR(100),  
@Location NVARCHAR(100),  
@PartDesc NVARCHAR(100),  
@Unit NVARCHAR(100),  
@OnHand money,  
@OnSO money,  
@OnPO money,  
@ToOrderStockUnit money,  
@BuyToStock money,  
@PurchaseQty money,  
@ToOrderBuyUnit money,  
@VendorName NVARCHAR(100),  
@Price money,  
@DiscountPer money,  
@DiscountAmount money,  
@LineTaxCode NVARCHAR(100),  
@LineTaxPer money,  
@LineTaxAmount money,  
@LineTotalCost money,
@ProcessJobDocID NVARCHAR(200),
@PJDocItemLineNo int
)  
AS  
BEGIN  
INSERT INTO tblReOrderDocDT(  
strOrdDocID  
,intLineNo  
,strPartNumber  
,strLocation  
,strPartDesc  
,strUnit  
,decOnHand  
,decOnSO  
,decOnPO  
,decToOrderStockUnit  
,decBuyToStock  
,decPurchaseQty  
,decToOrderBuyUnit  
,strVendorName  
,decPrice  
,decDiscountPer  
,decDiscountAmount  
,strLineTaxCode  
,decLineTaxPer  
,decLineTaxAmount  
,decLineTotalCost
,strProcessJobDocID
,intPJDocItemLineNo)  
VALUES (  
@OrdDocID  
,@LineNo  
,@PartNumber  
,@Location  
,@PartDesc  
,@Unit  
,@OnHand  
,@OnSO  
,@OnPO  
,@ToOrderStockUnit  
,@BuyToStock  
,@PurchaseQty  
,@ToOrderBuyUnit  
,@VendorName  
,@Price  
,@DiscountPer  
,@DiscountAmount  
,@LineTaxCode  
,@LineTaxPer  
,@LineTaxAmount  
,@LineTotalCost
,@ProcessJobDocID
,@PJDocItemLineNo)  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateLastPRONumber] @PRONumber BIGINT
AS
BEGIN
UPDATE tblLastIDs SET lngPRONumber = @PRONumber 
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPurchaseReorderDocPickerData] (
	@IsFilter AS BIT
	,@IsShowQuotes AS BIT
	,@Location AS NVARCHAR = ''
	,@IsDept AS BIT
	,@Dept AS NVARCHAR = ''
	,@Start AS NVARCHAR(50)
	,@End AS NVARCHAR(50)
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(Max) = '';

	IF (@IsFilter = 1)
	BEGIN
		IF (@IsShowQuotes = 0)
			SET @Query = 'SELECT tblReOrderDoc.dteJournalDate as JournalDate, tblReOrderDoc.strOrdDocId as OrdPDocID, tblReOrderDoc.strReference as Reference,   
tblReOrderDoc.decTotal as Total, tblReOrderDoc.bitIsForeign as IsForeign, tblReOrderDoc.decTotalF as TotalF, tblReOrderDoc.strCurrency as Currency, tblReOrderDocDT.strVendorName as VendName,  
CASE WHEN (SELECT COUNT(Z.strLocation) FROM (SELECT strLocation FROM tblReOrderDocDT WHERE (strOrdDocId = tblReOrderDoc.strOrdDocId) GROUP BY strLocation) Z) > 1 THEN ''<MULTIPLE>''   
ELSE ISNULL((SELECT strLocation FROM tblReOrderDocDT WHERE (strOrdDocId = tblReOrderDoc.strOrdDocId) GROUP BY strLocation),'''') END as Location,   
ISNULL((SELECT CAST(intDept AS NVarchar(4)) + '' '' + strDesc FROM tblDepartments WHERE (intDept = tblReOrderDoc.intDept)),'''') as Department,   
CASE WHEN ''' + @Location + ''' = ''%%'' THEN 1 ELSE ISNULL((SELECT COUNT(strLocation) FROM tblReOrderDocDT WHERE (strOrdDocId = tblReOrderDoc.strOrdDocId) AND   
(strLocation = ''' + @Location + ''') GROUP BY strLocation),0) END   
FROM tblReOrderDoc JOIN tblReOrderDocDT ON tblReOrderDoc.strOrdDocId = tblReOrderDocDT.strOrdDocId  WHERE (tblReOrderDoc.bitCleared = 0)  AND (tblReOrderDoc.dteJournalDate BETWEEN ''' + @Start + ''' AND ''' + @End + ''')'
		ELSE
			SET @Query = 'SELECT tblReOrderDoc.dteJournalDate as JournalDate, tblReOrderDoc.strOrdDocId as OrdPDocID, tblReOrderDoc.strReference as Reference,   
tblReOrderDoc.decTotal as Total, tblReOrderDoc.bitIsForeign as IsForeign, tblReOrderDoc.decTotalF as TotalF, tblReOrderDoc.strCurrency as Currency, tblReOrderDocDT.strVendorName as VendName,  
CASE WHEN (SELECT COUNT(Z.strLocation) FROM (SELECT strLocation FROM tblReOrderDocDT WHERE (strOrdDocId = tblReOrderDoc.strOrdDocId) GROUP BY strLocation) Z) > 1 THEN ''<MULTIPLE>''   
ELSE ISNULL((SELECT strLocation FROM tblReOrderDocDT WHERE (strOrdDocId = tblReOrderDoc.strOrdDocId) GROUP BY strLocation),'''') END as Location,   
ISNULL((SELECT CAST(intDept AS NVarchar(4)) + '' '' + strDesc FROM tblDepartments WHERE (intDept = tblReOrderDoc.intDept)),'''') as Department,   
CASE WHEN ''' + @Location + ''' = ''%%'' THEN 1 ELSE ISNULL((SELECT COUNT(strLocation) FROM tblReOrderDocDT WHERE (strOrdDocId = tblReOrderDoc.strOrdDocId) AND   
(strLocation = ''' + @Location + ''') GROUP BY strLocation),0) END   
FROM tblReOrderDoc JOIN tblReOrderDocDT ON tblReOrderDoc.strOrdDocId = tblReOrderDocDT.strOrdDocId WHERE  (tblReOrderDoc.dteJournalDate BETWEEN ''' + @Start + ''' AND ''' + @End + ''')'

		IF (@IsDept = 1)
			SET @Query += ' AND tblReOrderDoc.intDept = ''' + @Dept + ''''
	END
	ELSE
	BEGIN
		IF (@IsShowQuotes = 0)
			SET @Query = 'SELECT tblReOrderDoc.dteJournalDate as JournalDate, tblReOrderDoc.strOrdDocId as OrdPDocID, tblReOrderDoc.strReference as Reference,   
tblReOrderDoc.decTotal as Total, tblReOrderDoc.bitIsForeign as IsForeign, tblReOrderDoc.decTotalF as TotalF, tblReOrderDoc.strCurrency as Currency  
FROM tblReOrderDoc WHERE (tblReOrderDoc.bitCleared = 0) AND (tblReOrderDoc.dteJournalDate BETWEEN ''' + @Start + ''' AND ''' + @End + ''')'
		ELSE
			SET @Query = 'SELECT tblReOrderDoc.dteJournalDate as JournalDate, tblReOrderDoc.strOrdDocId as OrdPDocID, tblReOrderDoc.strReference as Reference,   
tblReOrderDoc.decTotal as Total, tblReOrderDoc.bitIsForeign as IsForeign, tblReOrderDoc.decTotalF as TotalF, tblReOrderDoc.strCurrency as Currency
FROM tblReOrderDoc WHERE (tblReOrderDoc.dteJournalDate BETWEEN ''' + @Start + ''' AND ''' + @End + ''')'
	END

	SET @Query += ' ORDER BY  tblReOrderDoc.strOrdDocId DESC'

	EXEC (@Query)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetReOrderDocP](  
@DocNumber AS NVARCHAR(100)  
)  
AS  
BEGIN 
SELECT 
strOrdDocID as DocumentNumber,
dteSystemDate as SystemDate,
dteJournalDate as JournalDate,
dteRequired as [Required],
strUserName as UserName,
'' as SoldTo,
strShipTo as ShipTo,
strReference as Reference,
decSubTotal as SubTotal,
decVAT as VAT,
decTotal as Total,
tblReOrderDoc.strNotes as Notes,
bitPrinted as Printed,
bitEmailed as Emailed,
bitCleared as Cleared,
'' as SalesName,
strAddInfo as AddInfo,
tblReOrderDoc.strCurrency as CurrencyCode,
bitIsForeign as IsForeign,
decSubTotalF as SubTotalForeign,
decVATF as VATForeign,
decTotalF as TotalForeign,
decExchange as ExchangeRate,
'' as Term,--23
tblReOrderDoc.intDept as Dept,
'' as Field1,
'' as Field2,
'' as Field3,
'' as Field4,
'' as Field5,
'' as Field6,
'' as Field7,
'' as Field8,
'' as Field9,
'' as Field10,
'' as Field11,
'' as Field12,
strSubFormated as SubFormatted,--37
strVATFormatted as VATFormatted,
strTotFormatted as TotFormatted,
decTotalCost as TotalCost,
decTotalMarkup as TotalMarkup,
'' as CustomerNumber,
decDiscPerc as DiscountPercentage,
decDiscAmt as DiscountAmount,
decDiscAmtF as DiscountAmountForeign,
strDiscFormatted as DiscountFormatted,
strStatusTypeCode as StatusTypeCode,
cast(0 as bit) as IsDeclined,--48
cast(0 as bit) as IsApproved,
'' as ApprovedBy,
null as ApprovedDate, 
ISNULL(tblCustomers.strCustDesc,'')  as CustName
FROM tblReOrderDoc 
LEFT JOIN tblCustomers ON tblReOrderDoc.strCustName = tblCustomers.strCustName 
WHERE tblReOrderDoc.strOrdDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetReOrderDocPDT](  
@DocNumber AS NVARCHAR(100),
@VenderName AS NVARCHAR(100)
)  
AS  
BEGIN
SELECT 
tblReOrderDocDT.strOrdDocID as OrdDocID,
tblReOrderDocDT.intLineNo as [LineNo],
tblReOrderDocDT.strPartNumber as PartNumber,
strLocation as [Location],
strPartDesc as PartDesc,
decPurchaseQty as BuyQty,--5
tblReOrderDocDT.strUnit as Unit,
tblReOrderDocDT.decPrice as Price,
0 as MarkUp,
0.00 as PriceEaExc,
0.00 as LineTotExc,
0.00 as LineTaxAmt,
0.00 as PriceEaInc,
decLineTotalCost as TotIncTax,
strLineTaxCode as TaxCode,
null as TaxObj,
'' as Currency,
cast(0 as bit) as IsForeign,
0.00 as PriceEaExcF,
0.00 as LineTotExcF,
0.00 as LineTaxAmtF,
0.00 as EaIncTaxF,--21
0.00 as TotIncTaxF,
0.00 as TotalCost,
'' as InvField1,
'' as InvField2,
'' as InvField3,
'' as InvField4,
'' as InvField5,
'' as InvField6,--29
'' as LineField1,
'' as LineField2,
'' as LineField3,
'' as LineField4,
'' as LineField5,
'' as LineField6,
'' as LineField7,
'' as LineField8,
'' as LineField9,
'' as LineField10,
'' as LineField11,
'' as LineField12,
decDiscountPer as LineDiscPerc,
decDiscountAmount as LineDiscAmt,--43
0.00 as LineDiscAmtF,
tblReOrderDocDT.strVendorName as VendorName,
cast(0 as bit) as DiscountTax,
'' as SalesName,
'' as PartExtendedDesc, 
tblInv.strBuyUnit as BuyUnit, --49
tblInv.strStockUnit as StockUnit, 
tblInv.decBuyToStock as StockQty , 
ISNULL(tblOrderDocQDTPrj.strProjNumber,'') as ProjNumber, --52
tblInvVend.decPrice as VendPrice, 
ISNULL(tblInvSerialTypes.bitDimensionExist,cast(0 as bit)) as IsDimensionExist 
,tblReOrderDocDT.strProcessJobDocID AS ProcessJobDocID
,tblReOrderDocDT.intPJDocItemLineNo AS PJDocItemLineNo
FROM tblReOrderDocDT 
INNER JOIN tblInv ON tblReOrderDocDT.strPartNumber = tblInv.strPartNumber 
LEFT JOIN tblOrderDocQDTPrj ON tblReOrderDocDT.strOrdDocID = tblOrderDocQDTPrj.strOrdDocID 
AND tblReOrderDocDT .intLineNo = tblOrderDocQDTPrj.intLineNo 
LEFT JOIN tblINVVend ON tblReOrderDocDT .strPartNumber = tblInvVend.strPartNumber 
AND tblReOrderDocDT .strVendorName = tblInvVend.strVendName 
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
WHERE tblreOrderDocDT.strOrdDocID = @DocNumber AND tblReOrderDocDT.strVendorName = @VenderName 
ORDER BY tblReOrderDocDT .intLineNo 
END
GO

----------------------------------------------------
CREATE Procedure [dbo].[GetCentersBySearchStringFromWPF]  
@Search nvarchar(Max)=NULL  
AS  
BEGIN  
If(@Search is null)  
Begin  
SELECT strLvl1 as Lvl1, strLvl2 as Lvl2, strLvl3 as Lvl3, strLvl4 as Lvl4, strLvl5 as Lvl5, uidCenterID as CenterID FROM tblCenters   
order by strLvl1, strLvl2, strLvl3, strLvl4, strLvl5  
END  
ELSE  
BEGIN  
CREATE TABLE #TempCenter (            
[strLvl1] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,      
[strLvl2] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,      
[strLvl3] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,      
[strLvl4] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,      
[strLvl5] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,       
[uidCenterID] [uniqueidentifier] ROWGUIDCOL NULL)    
CREATE TABLE #TempCenterMain (            
[strLvl1] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,      
[strLvl2] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,      
[strLvl3] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,      
[strLvl4] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,      
[strLvl5] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,       
[uidCenterID] [uniqueidentifier] ROWGUIDCOL NULL,  
)    
Declare @strLvl1 [nvarchar](200)  
Declare @strLvl2 [nvarchar](200)  
Declare @strLvl3 [nvarchar](200)  
Declare @strLvl4 [nvarchar](200)  
Declare @strLvl5 [nvarchar](200)  
Declare @uidCenterID uniqueidentifier  
Insert into #TempCenter   
SELECT strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID FROM tblCenters   
Where strLvl1 Like '%'+@Search+'%' or strLvl2 Like '%'+@Search+'%' or strLvl3 Like '%'+@Search+'%' or strLvl4 Like '%'+@Search+'%' or strLvl5 Like '%'+@Search+'%'  
Insert into #TempCenterMain   
SELECT strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID FROM #TempCenter  
While((Select Count(*) from #TempCenter)>0)  
Begin  
Select top 1 @uidCenterID=uidCenterID, @strLvl1=strLvl1, @strLvl2=strLvl2, @strLvl3=strLvl3, @strLvl4=strLvl4, @strLvl5=strLvl5 from #TempCenter  
if(@strLvl5 Is not Null)  
Begin  
INSERT INTO #TempCenterMain  
Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCenters   
Where strLvl1=@strLvl1 and  strLvl2=@strLvl2 and strLvl3=@strLvl3 and strLvl4=@strLvl4 and strLvl5=@strLvl5  
and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)  
END  
if(@strLvl4 Is not Null)  
Begin  
INSERT INTO #TempCenterMain  
Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCenters   
Where strLvl1=@strLvl1 and  strLvl2=@strLvl2 and strLvl3=@strLvl3 and strLvl4=@strLvl4 and strLvl5 IS NULL  
and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)  
END  
if(@strLvl3 Is not Null)  
Begin  
INSERT INTO #TempCenterMain  
Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCenters   
Where strLvl1=@strLvl1 and  strLvl2=@strLvl2 and strLvl3=@strLvl3 and strLvl4 IS NULL and strLvl5 IS NULL  
and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)  
END  
if(@strLvl2 Is not Null)  
Begin  
INSERT INTO #TempCenterMain  
Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCenters   
Where strLvl1=@strLvl1 and  strLvl2=@strLvl2 and strLvl3 IS NULL  and strLvl4 IS NULL and strLvl5 IS NULL  
and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)  
END  
if(@strLvl1 Is not Null)  
Begin  
INSERT INTO #TempCenterMain  
Select strLvl1, strLvl2, strLvl3, strLvl4, strLvl5, uidCenterID from tblCenters   
Where strLvl1=@strLvl1 and  strLvl2 IS NULL  and strLvl3 IS NULL  and strLvl4 IS NULL and strLvl5 IS NULL  
and uidCenterID not in (Select #TempCenterMain.uidCenterID from #TempCenterMain)  
END  
Delete from #TempCenter where uidCenterID=@uidCenterID  
End  
Select strLvl1 as Lvl1, strLvl2 as Lvl2, strLvl3 as Lvl3, strLvl4 as Lvl4, strLvl5 as Lvl5, uidCenterID as CenterID from #TempCenterMain order by strLvl1, strLvl2, strLvl3, strLvl4, strLvl5  
Drop table #TempCenter  
Drop table #TempCenterMain  
END  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetAccountNumber]
AS
BEGIN
SELECT intGLNumber as GLNumber, strDesc as [Description] FROM tblAccounts WHERE (bitLinkREarnings = 0) AND (bitLinkCEarnings = 0) AND bitAllowCenters = 1 AND intAccType <> 3 ORDER BY intGLNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetAccountNumberByCenterID] @CenterID uniqueidentifier
AS
BEGIN
SELECT intGLNumber as GLNumber, strDesc as [Description], (SELECT COUNT(uidCenterID) FROM tblCenterAccts WHERE (intGLNumber = MASTERTABLE.intGLNumber) AND (uidCenterID = @CenterID)) as AccountSecCount FROM tblAccounts AS MASTERTABLE WHERE (bitLinkREarnings = 0) AND (bitLinkCEarnings = 0)  AND bitAllowCenters = 1 AND (intAccType <> 3) ORDER BY intGLNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertProfitCenterCurrentYearData](
@Lvl1 NVARCHAR(50),
@Lvl2 NVARCHAR(50),
@Lvl3 NVARCHAR(50),
@Lvl4 NVARCHAR(50),
@Lvl5 NVARCHAR(50),
@OpenBalanceR money,
@OpenBalanceE money,
@BudProfit money,
@IsBudgetR bit,
@Period1R money,
@Period2R money,
@Period3R money,
@Period4R money,
@Period5R money,
@Period6R money,
@Period7R money,
@Period8R money,
@Period9R money,
@Period10R money,
@Period11R money,
@Period12R money,
@IsBudgetE bit,
@Period1E money,
@Period2E money,
@Period3E money,
@Period4E money,
@Period5E money,
@Period6E money,
@Period7E money,
@Period8E money,
@Period9E money,
@Period10E money,
@Period11E money,
@Period12E money,
@IsInactive bit
)
AS
BEGIN
INSERT INTO tblCenters (
strLvl1,strLvl2,strLvl3,strLvl4,strLvl5,decOpenBalanceR,decOpenBalanceE,decBudProfit,bitBudgetR,decPeriod1R,decPeriod2R,decPeriod3R,decPeriod4R,decPeriod5R,decPeriod6R,decPeriod7R,decPeriod8R,decPeriod9R,
decPeriod10R,decPeriod11R,decPeriod12R,bitBudgetE,decPeriod1E,decPeriod2E,decPeriod3E,decPeriod4E,decPeriod5E,decPeriod6E,decPeriod7E,decPeriod8E,decPeriod9E,decPeriod10E,decPeriod11E,decPeriod12E,bitInactive) 
VALUES (
@Lvl1,
@Lvl2,
@Lvl3,
@Lvl4,
@Lvl5,
@OpenBalanceR,
@OpenBalanceE,
@BudProfit,
@IsBudgetR,
@Period1R,
@Period2R,
@Period3R,
@Period4R,
@Period5R,
@Period6R,
@Period7R,
@Period8R,
@Period9R,
@Period10R,
@Period11R,
@Period12R,
@IsBudgetE,
@Period1E,
@Period2E,
@Period3E,
@Period4E,
@Period5E,
@Period6E,
@Period7E,
@Period8E,
@Period9E,
@Period10E,
@Period11E,
@Period12E,
@IsInactive); 
SELECT UidCenterId as CenterId from tblCenters WHERE strLvl1=@Lvl1 AND strLvl2 IS NULL AND strLvl3 IS NULL AND strLvl4 IS NULL AND strLvl5 IS NULL
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCenterIDBasedOnName] @Lvl1 NVARCHAR(100)
AS
BEGIN
SELECT UidCenterId as CenterId from tblCenters WHERE strLvl1=@Lvl1 AND strLvl2 IS NULL AND strLvl3 IS NULL AND strLvl4 IS NULL AND strLvl5 IS NULL
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetProfitCenterDataByCenterID]  @CenterID uniqueidentifier
AS
BEGIN
SELECT
strLvl1 as Lvl1,
strLvl2 as Lvl2,
strLvl3 as Lvl3,
strLvl4 as Lvl4,
strLvl5 as Lvl5,
decOpenBalanceR as OpenBalanceR,
decOpenBalanceE as OpenBalanceE,
decBudProfit as BudProfit,
bitBudgetR as IsBudgetR,
decPeriod1R as Period1R,
decPeriod2R as Period2R,
decPeriod3R as Period3R,
decPeriod4R as Period4R,
decPeriod5R as Period5R,
decPeriod6R as Period6R,
decPeriod7R as Period7R,
decPeriod8R as Period8R,
decPeriod9R as Period9R,
decPeriod10R as Period10R,
decPeriod11R as Period11R,
decPeriod12R as Period12R,
bitBudgetE as IsBudgetE,
decPeriod1E as Period1E,
decPeriod2E as Period2E,
decPeriod3E as Period3E,
decPeriod4E as Period4E,
decPeriod5E as Period5E,
decPeriod6E as Period6E,
decPeriod7E as Period7E,
decPeriod8E as Period8E,
decPeriod9E as Period9E,
decPeriod10E as Period10E,
decPeriod11E as Period11E,
decPeriod12E as Period12E,
bitInactive as IsInactive,
uidCenterID as CenterId
FROM tblCenters where uidCenterID = @CenterID--'89a1f314-7450-477b-9bb9-63d9f100783e'
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteProfitCenterData] @CenterId uniqueidentifier
AS
BEGIN
DELETE FROM tblCenters WHERE uidCenterID = @CenterId
DELETE FROM tblCentersLY WHERE uidCenterID = @CenterId
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertProfitCenterLastYearData](
@Lvl1 NVARCHAR(50),
@Lvl2 NVARCHAR(50),
@Lvl3 NVARCHAR(50),
@Lvl4 NVARCHAR(50),
@Lvl5 NVARCHAR(50),
@OpenBalanceR decimal,
@OpenBalanceE decimal,
@BudProfit decimal,
@IsBudgetR bit,
@Period1R decimal,
@Period2R decimal,
@Period3R decimal,
@Period4R decimal,
@Period5R decimal,
@Period6R decimal,
@Period7R decimal,
@Period8R decimal,
@Period9R decimal,
@Period10R decimal,
@Period11R decimal,
@Period12R decimal,
@IsBudgetE bit,
@Period1E decimal,
@Period2E decimal,
@Period3E decimal,
@Period4E decimal,
@Period5E decimal,
@Period6E decimal,
@Period7E decimal,
@Period8E decimal,
@Period9E decimal,
@Period10E decimal,
@Period11E decimal,
@Period12E decimal,
@IsInactive bit,
@CenterId uniqueidentifier
)
AS
BEGIN
INSERT INTO tblCentersLY (
strLvl1,strLvl2,strLvl3,strLvl4,strLvl5,decOpenBalanceR,decOpenBalanceE,decBudProfit,bitBudgetR,decPeriod1R,decPeriod2R,decPeriod3R,decPeriod4R,decPeriod5R,decPeriod6R,decPeriod7R,decPeriod8R,decPeriod9R,decPeriod10R,decPeriod11R,decPeriod12R,bitBudgetE,decPeriod1E,decPeriod2E,decPeriod3E,decPeriod4E,decPeriod5E,decPeriod6E,decPeriod7E,decPeriod8E,decPeriod9E,decPeriod10E,decPeriod11E,decPeriod12E,bitInactive,uidCenterId) 
VALUES (
@Lvl1,
@Lvl2,
@Lvl3,
@Lvl4,
@Lvl5,
@OpenBalanceR,
@OpenBalanceE,
@BudProfit,
@IsBudgetR,
@Period1R,
@Period2R,
@Period3R,
@Period4R,
@Period5R,
@Period6R,
@Period7R,
@Period8R,
@Period9R,
@Period10R,
@Period11R,
@Period12R,
@IsBudgetE,
@Period1E,
@Period2E,
@Period3E,
@Period4E,
@Period5E,
@Period6E,
@Period7E,
@Period8E,
@Period9E,
@Period10E,
@Period11E,
@Period12E,
@IsInactive,
@CenterId)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertProfitCenterDataByUser](
@GLNumber NVARCHAR(60),
@CenterId uniqueidentifier
)
AS
BEGIN
INSERT INTO tblCenterAccts (intGLNumber,uidCenterId) VALUES (@GLNumber,@CenterId)
INSERT INTO tblCenterAcctsLY (intGLNumber,uidCenterId) VALUES (@GLNumber,@CenterId)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertProfitCenterSubItemDataByUser](
@GLNumber NVARCHAR(60),
@CenterId uniqueidentifier
)
AS
BEGIN
INSERT INTO tblCenterAccts (intGLNumber,uidCenterId) VALUES (@GLNumber,@CenterId)
UPDATE tblCenterAccts SET intGLNumber = @GLNumber WHERE intGLNumber = @GLNumber AND uidCenterId = @CenterId
INSERT INTO tblCenterAcctsLY (intGLNumber,uidCenterId) VALUES (@GLNumber,@CenterId)
UPDATE tblCenterAcctsLY SET intGLNumber = @GLNumber WHERE intGLNumber = @GLNumber AND uidCenterId = @CenterId
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateProfitCenterLevel](
@NewName NVARCHAR(100),
@OldName NVARCHAR(100)
)
AS
BEGIN
UPDATE tblCenters SET strLvl1 = @NewName WHERE strLvl1 = @OldName
UPDATE tblCenters SET strLvl2 = @NewName WHERE strLvl2 = @OldName
UPDATE tblCenters SET strLvl3 = @NewName WHERE strLvl3 = @OldName
UPDATE tblCenters SET strLvl4 = @NewName WHERE strLvl4 = @OldName
UPDATE tblCenters SET strLvl5 = @NewName WHERE strLvl5 = @OldName
UPDATE tblCentersLY SET strLvl1 = @NewName WHERE strLvl1 = @OldName
UPDATE tblCentersLY SET strLvl2 = @NewName WHERE strLvl2 = @OldName
UPDATE tblCentersLY SET strLvl3 = @NewName WHERE strLvl3 = @OldName
UPDATE tblCentersLY SET strLvl4 = @NewName WHERE strLvl4 = @OldName
UPDATE tblCentersLY SET strLvl5 = @NewName WHERE strLvl5 = @OldName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateProfitCenterdata](
@BudProfit money,
@IsBudgetR bit,
@Period1R money,
@Period2R money,
@Period3R money,
@Period4R money,
@Period5R money,
@Period6R money,
@Period7R money,
@Period8R money,
@Period9R money,
@Period10R money,
@Period11R money,
@Period12R money,
@IsBudgetE bit,
@Period1E money,
@Period2E money,
@Period3E money,
@Period4E money,
@Period5E money,
@Period6E money,
@Period7E money,
@Period8E money,
@Period9E money,
@Period10E money,
@Period11E money,
@Period12E money,
@IsInactive bit,
@CenterID uniqueidentifier
)
AS
BEGIN
UPDATE tblCenters SET decBudProfit = @BudProfit,bitBudgetR = @IsBudgetR,decPeriod1R = @Period1R,decPeriod2R = @Period2R,decPeriod3R = @Period3R,decPeriod4R = @Period4R,decPeriod5R = @Period5R,decPeriod6R = @Period6R,decPeriod7R = @Period7R,decPeriod8R = @Period8R,decPeriod9R = @Period9R,decPeriod10R = @Period10R,decPeriod11R = @Period11R,decPeriod12R = @Period12R,bitBudgetE = @IsBudgetE,decPeriod1E = @Period1E,decPeriod2E = @Period2E,decPeriod3E = @Period3E,decPeriod4E = @Period4E,decPeriod5E = @Period5E,
decPeriod6E = @Period6E,decPeriod7E = @Period7E,decPeriod8E = @Period8E,decPeriod9E = @Period9E,decPeriod10E = @Period10E,decPeriod11E = @Period11E,decPeriod12E = @Period12E,bitInactive = @IsInactive WHERE uidCenterID = @CenterID
UPDATE tblCentersLY SET decBudProfit = @BudProfit,bitBudgetR = @IsBudgetR,decPeriod1R = @Period1R,decPeriod2R = @Period2R,decPeriod3R = @Period3R,decPeriod4R = @Period4R,decPeriod5R = @Period5R,decPeriod6R = @Period6R,decPeriod7R = @Period7R,decPeriod8R =
 @Period8R,decPeriod9R = @Period9R,decPeriod10R = @Period10R,decPeriod11R = @Period11R,decPeriod12R = @Period12R,bitBudgetE = @IsBudgetE,decPeriod1E = @Period1E,decPeriod2E = @Period2E,decPeriod3E = @Period3E,decPeriod4E = @Period4E,decPeriod5E = @Period5E,decPeriod6E = @Period6E,decPeriod7E = @Period7E,decPeriod8E = @Period8E,decPeriod9E = @Period9E,decPeriod10E = @Period10E,decPeriod11E = @Period11E,decPeriod12E = @Period12E,bitInactive = @IsInactive WHERE uidCenterID = @CenterID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCenterIDBasedOnParent](
@ParentID int,
@Lvl1 NVARCHAR(100),
@Lvl2 NVARCHAR(100),
@Lvl3 NVARCHAR(100),
@Lvl4 NVARCHAR(100),
@Lvl5 NVARCHAR(100)
)
AS
BEGIN
DECLARE @Query NVARCHAR(MAX)
SET @Query = 'SELECT uidCenterId as CenterId from tblCenters (NOLOCK) WHERE '
IF(@ParentID = 0)
SET @Query += 'strLvl1='''+@Lvl1+''' AND strLvl2='''+@Lvl2+''' AND strLvl3 IS NULL AND strLvl4 IS NULL AND strLvl5 IS NULL'
IF(@ParentID = 1)
SET @Query += 'strLvl1='''+@Lvl1+''' AND strLvl2='''+@Lvl2+''' AND strLvl3='''+@Lvl3+''' AND strLvl4 IS NULL AND strLvl5 IS NULL'
IF(@ParentID = 2)
SET @Query += 'strLvl1='''+@Lvl1+''' AND strLvl2='''+@Lvl2+''' AND strLvl3='''+@Lvl3+''' AND strLvl4='''+@Lvl4+''' AND strLvl5 IS NULL'
IF(@ParentID = 3)
SET @Query += 'strLvl1='''+@Lvl1+''' AND strLvl2='''+@Lvl2+''' AND strLvl3='''+@Lvl3+''' AND strLvl4='''+@Lvl4+''' AND strLvl5='''+@Lvl5+''''
EXEC sp_Executesql @Query 
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertProfitCenterSubItemEditData](
@GLNumber NVARCHAR(60),
@CenterId uniqueidentifier,
@IsRowSelected bit
)
AS
BEGIN
DECLARE @ExistCurrent bit
DECLARE @ExistLast bit
IF(@IsRowSelected = 1)
BEGIN
UPDATE tblCenterAccts SET intGLNumber = @GLNumber WHERE intGLNumber = @GLNumber AND uidCenterId = @CenterId
if not exists(select * from tblCenterAccts WHERE intGLNumber = @GLNumber AND uidCenterId = @CenterId)
INSERT INTO tblCenterAccts (intGLNumber,uidCenterId) VALUES (@GLNumber,@CenterId)
END        
IF(@IsRowSelected = 1)
BEGIN
UPDATE tblCenterAcctsLY SET intGLNumber = @GLNumber WHERE intGLNumber = @GLNumber AND uidCenterId = @CenterId
if not exists(select * from tblCenterAcctsLY WHERE intGLNumber = @GLNumber AND uidCenterId = @CenterId)
INSERT INTO tblCenterAcctsLY (intGLNumber,uidCenterId) VALUES (@GLNumber,@CenterId)
END
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteAccountData](
@GLNumber NVARCHAR(100),
@CenterId uniqueidentifier
)
AS
BEGIN
DELETE FROM tblCenterAccts WHERE (intGLNumber = @GLNumber) AND (uidCenterId = @CenterId)
DELETE FROM tblCenterAcctsLY WHERE (intGLNumber = @GLNumber) AND (uidCenterId = @CenterId)
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCenterAccountData](
@GLNumber NVARCHAR(100),
@CenterId uniqueidentifier
)
AS
BEGIN
SELECT intGLNumber as GLNumber FROM tblCenterAccts WHERE (intGLNumber = @GLNumber) AND (uidCenterId = @CenterId)
END
GO
--General Ledger Module: Merge Account Screen

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetAccountsMergeValidateDept] (  
@GLNumberFrom nvarchar(30),  
@GLNumberTo nvarchar(30)  
)  
AS  
BEGIN  
SELECT count(*) as AccountSecCount FROM tblJournalEnt WHERE intGLNumber=@GLNumberFrom AND intDept NOT IN (Select intDept from tblAccountsDept WHERE tblAccountsDept.intGLNumber=@GLNumberTo) AND intDept IS NOT NULL  
END  
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[AccountsMerge](  
@GLNumberFrom nvarchar(30),  
@GLNumberTo nvarchar(30),  
@GLDescTo nvarchar(Max)  
)  
AS  
BEGIN  
DECLARE @dteStartDate DateTime,@dteEndDate DateTime  
SELECT @dteStartDate=dteYearStarts,@dteEndDate=dteYearEnds FROM tblCompany  
ALTER TABLE tblJournalEntryDocCBDTPrj  
Drop Constraint FK_tblJournalEntryDocCBDTPrj_tblJournalEntryDocCBDT  
--Update Transaction From All Tables From GL Account to To GL Account  
UPDATE [dbo].[tblJournalEnt] SET intGLNumber=@GLNumberTo FROM [dbo].[tblJournalEnt]   
INNER JOIN [dbo].[tblJournal] ON tblJournalEnt.lngJourID = tblJournal.lngJourID  
WHERE intGLNumber=@GLNumberFrom AND dteJournalDate BETWEEN @dteStartDate AND @dteEndDate  
UPDATE [dbo].[tblJournalEntryDocREDT] SET intGLNumber=@GLNumberTo WHERE intGLNumber=@GLNumberFrom  
UPDATE [dbo].[tblJournalEntryDocDT] SET intGLNumber=@GLNumberTo,strDesc=@GLDescTo FROM [dbo].[tblJournalEntryDocDT]   
INNER JOIN [dbo].[tblJournalEntryDoc] ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
WHERE intGLNumber=@GLNumberFrom AND dteJournalDate BETWEEN @dteStartDate AND @dteEndDate  
UPDATE [dbo].[tblJournalEntryDocDT] SET strCuVeGeID=@GLNumberTo,strCuVeGeDesc=@GLDescTo FROM [dbo].[tblJournalEntryDocDT]   
INNER JOIN [dbo].[tblJournalEntryDoc] ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
WHERE strCuVeGeID=@GLNumberFrom AND dteJournalDate BETWEEN @dteStartDate AND @dteEndDate  
UPDATE [dbo].[tblJournalEntryDocDTPrj] SET intGLNumber=@GLNumberTo FROM [dbo].[tblJournalEntryDocDTPrj]   
INNER JOIN [dbo].[tblJournalEntryDoc] ON tblJournalEntryDocDTPrj.strJEDocID = tblJournalEntryDoc.strJEDocID  
WHERE intGLNumber=@GLNumberFrom AND dteJournalDate BETWEEN @dteStartDate AND @dteEndDate  
UPDATE [dbo].[tblJournalEntryDocDTApplied] SET strCuVeID=@GLNumberTo WHERE strCuVeID=@GLNumberFrom AND dteJournalDate BETWEEN @dteStartDate AND @dteEndDate  
UPDATE [dbo].[tblJournalEntryDocCB] SET intGLNumber=@GLNumberTo,strDesc=@GLDescTo WHERE intGLNumber=@GLNumberFrom AND dteJournalDate BETWEEN @dteStartDate AND @dteEndDate  
UPDATE [dbo].[tblJournalEntryDocCBDT] SET intGLNumber=@GLNumberTo,strDesc=@GLDescTo FROM [dbo].[tblJournalEntryDocCBDT]   
INNER JOIN [dbo].[tblJournalEntryDocCB] ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCB.strJEDocID  
WHERE tblJournalEntryDocCBDT.intGLNumber=@GLNumberFrom AND dteJournalDate BETWEEN @dteStartDate AND @dteEndDate  
UPDATE [dbo].[tblJournalEntryDocCBDTPrj] SET intGLNumber=@GLNumberTo FROM [dbo].[tblJournalEntryDocCBDTPrj]   
INNER JOIN [dbo].[tblJournalEntryDocCB] ON tblJournalEntryDocCBDTPrj.strJEDocID = tblJournalEntryDocCB.strJEDocID  
WHERE tblJournalEntryDocCBDTPrj.intGLNumber=@GLNumberFrom AND dteJournalDate BETWEEN @dteStartDate AND @dteEndDate  
UPDATE [dbo].[tblJournalEntryDocCBRE] SET intGLNumber=@GLNumberTo WHERE intGLNumber=@GLNumberFrom  
UPDATE [dbo].[tblJournalEntryDocCBREDT] SET intGLNumber=@GLNumberTo WHERE intGLNumber=@GLNumberFrom  
UPDATE [dbo].[tblInvoiceDocSplitPmt] SET intGLNumber=@GLNumberTo WHERE intGLNumber=@GLNumberFrom  
ALTER TABLE [dbo].[tblJournalEntryDocCBDTPrj]  WITH CHECK ADD  CONSTRAINT [FK_tblJournalEntryDocCBDTPrj_tblJournalEntryDocCBDT] FOREIGN KEY([strJEDocID], [intType], [intGLNumber], [intLineNo])  
REFERENCES [dbo].[tblJournalEntryDocCBDT] ([strJEDocID], [intType], [intGLNumber], [intLineNo])  
ON DELETE CASCADE  
ALTER TABLE [dbo].[tblJournalEntryDocCBDTPrj] CHECK CONSTRAINT [FK_tblJournalEntryDocCBDTPrj_tblJournalEntryDocCBDT]  
--Update Balance for From GL Account  
UPDATE tblAccounts SET decBalance = tblAccounts.decOpenBalance + ISNULL(tblJournalEnt.decAmount,0)    
FROM [tblAccounts]   
LEFT JOIN (  
SELECT intGLNumber,  SUM(decAmount) decAmount   
FROM tblJournalEnt   
WHERE tblJournalEnt.intGLNumber=@GLNumberFrom   
GROUP BY  intGLNumber  
) tblJournalEnt ON tblJournalEnt.intGLNumber=tblAccounts.intGLNumber  
WHERE [tblAccounts].intGLNumber=@GLNumberFrom  
--Update Balance for To GL Account  
UPDATE tblAccounts SET decBalance = tblAccounts.decOpenBalance + ISNULL(tblJournalEnt.decAmount,0)   
FROM [tblAccounts]  
INNER JOIN (  
SELECT intGLNumber, SUM(decAmount) decAmount   
FROM tblJournalEnt   
WHERE tblJournalEnt.intGLNumber=@GLNumberTo  
GROUP BY  intGLNumber  
) tblJournalEnt ON tblJournalEnt.intGLNumber=tblAccounts.intGLNumber  
WHERE [tblAccounts].intGLNumber=@GLNumberTo  
--Update Balance for From GL Account Department  
UPDATE tblAccountsDept SET decBalance = tblAccountsDept.decOpenBalance + ISNULL(tblJournalEnt.decAmount,0)    
FROM [tblAccountsDept]   
LEFT JOIN (  
SELECT intGLNumber, intDept, SUM(decAmount) decAmount   
FROM tblJournalEnt   
WHERE tblJournalEnt.intGLNumber=@GLNumberFrom AND intDept IS NOT NULL  
GROUP BY  intGLNumber,intDept  
) tblJournalEnt ON tblJournalEnt.intGLNumber=tblAccountsDept.intGLNumber AND tblJournalEnt.intDept=tblAccountsDept.intDept  
WHERE tblAccountsDept.intGLNumber=@GLNumberFrom  
--Update Balance for To GL Account Department  
UPDATE tblAccountsDept SET decBalance = tblAccountsDept.decOpenBalance + ISNULL(tblJournalEnt.decAmount,0)   
FROM [tblAccountsDept]  
INNER JOIN (  
SELECT intGLNumber, intDept, SUM(decAmount) decAmount   
FROM tblJournalEnt   
WHERE tblJournalEnt.intGLNumber=@GLNumberTo AND intDept IS NOT NULL  
GROUP BY  intGLNumber, intDept  
) tblJournalEnt ON tblJournalEnt.intGLNumber=tblAccountsDept.intGLNumber AND tblJournalEnt.intDept=tblAccountsDept.intDept  
WHERE [tblAccountsDept].intGLNumber=@GLNumberTo  
END  
GO
--General Ledger Module: Receipt & Payment Journal Screen

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[NavigateCashBookBatchByDocNumber](
@DocNumber NVARCHAR(100),
@IsPrevious bit
)
AS
BEGIN
IF (@IsPrevious = 1)  
SELECT MAX(strJEDocID) FROM tblJournalEntryDocCB WHERE (strJEDocID < @DocNumber) AND (lngJourID <> 0)
ELSE
SELECT MIN(strJEDocID) FROM tblJournalEntryDocCB WHERE (strJEDocID > @DocNumber) AND (lngJourID <> 0)
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetLastYearAccountDetail](
@IsAllowLinkedJE bit,
@GLNumber NVARCHAR(200),
@HomeCurrency NVARCHAR(200),
@ForeignCurrency NVARCHAR(200)
)
AS
BEGIN
IF(@IsAllowLinkedJE = 0)
SELECT intGLNumber as Account, strDesc as [Description] FROM tblAccountsLY WHERE bitInactive = 0 AND bitLinkCEarnings = 0 AND bitLinkAR = 0 AND bitLinkAP = 0 AND bitLinkDeposit = 0 AND bitLinkPrePay = 0 AND intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets) AND bitInactive = 0 AND (intGroupCode = 1 OR intGroupCode = 2) AND intGLNumber = @GLNumber AND (strCurrency = @HomeCurrency OR strCurrency = @ForeignCurrency)
ELSE
SELECT intGLNumber as Account, strDesc as [Description] FROM tblAccountsLY WHERE bitInactive = 0 AND (intAccClass <> 28) AND (intGroupCode = 1 OR intGroupCode = 2) AND intGLNumber = @GLNumber AND (strCurrency = @HomeCurrency OR strCurrency = @ForeignCurrency)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCurrentYearAccountDetail](
@IsAllowLinkedJE bit,
@GLNumber NVARCHAR(200),
@HomeCurrency NVARCHAR(200),
@ForeignCurrency NVARCHAR(200)
)
AS
BEGIN
IF(@IsAllowLinkedJE = 0)
SELECT intGLNumber as Account, strDesc as [Description] FROM tblAccounts WHERE bitInactive = 0 AND bitLinkCEarnings = 0 AND bitLinkAR = 0 AND bitLinkAP = 0 AND bitLinkDeposit = 0 AND bitLinkPrePay = 0 AND intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets) AND bitInactive = 0 AND (intGroupCode = 1 OR intGroupCode = 2) AND intGLNumber = @GLNumber AND (strCurrency = @HomeCurrency OR strCurrency = @ForeignCurrency)
ELSE
SELECT intGLNumber as Account, strDesc as [Description] FROM tblAccounts WHERE bitInactive = 0 AND (intAccClass <> 28) AND (intGroupCode = 1 OR intGroupCode = 2) AND intGLNumber = @GLNumber AND (strCurrency = @HomeCurrency OR strCurrency = @ForeignCurrency)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdatePaymentTaxCodes] @TaxCode NVARCHAR(200)
AS
BEGIN
UPDATE tblTaxCodes SET bitDefCBPayments = 1 WHERE strTaxCode = @TaxCode
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateReceiptsTaxCodes] @TaxCode NVARCHAR(200)
AS
BEGIN
UPDATE tblTaxCodes SET bitDefCBReceipts = 1 WHERE strTaxCode = @TaxCode
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetJournalEntryTransferData](
@IsCurrentYearAdj bit,
@JourID bigint
)
AS
BEGIN
IF (@IsCurrentYearAdj = 1)
SELECT intGLNumber as GLNumber, decDebits as Debits, decCredits as Credits, ISNULL(intDept,0) as Dept FROM tblJournalEnt WHERE (lngJourID = @JourID) ORDER BY intLineNum
ELSE
SELECT intGLNumber as GLNumber, decDebits as Debits, decCredits as Credits, ISNULL(intDept,0) as Dept FROM tblJournalEntLY WHERE (lngJourID = @JourID) ORDER BY intLineNum
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteJournalEntryDoc](
@DocID NVARCHAR(200),
@JourDate DateTIme,
@JourID bigint,
@JourIDAdj bigint,
@IsMaintainCenters bit,
@IsCurrentYearAdj bit
)
AS
BEGIN
DELETE FROM tblJournalEntryDocCB WHERE strJEDocID = @DocID
DELETE FROM tblTax WHERE (dteJournalDate = @JourDate) AND (lngJournalID = @JourID)
IF(@IsMaintainCenters = 0)
BEGIN
IF(@IsCurrentYearAdj = 1)
DELETE FROM tblCenterEnt WHERE lngJourID = @JourID
ELSE
DELETE FROM tblCenterEntLY WHERE lngJourID = @JourID
END
UPDATE tblJournalEnt SET decAllocatedAmtToDate = (decAmount - decAmountF) * -1, decUnAllocatedAmt = 0 WHERE lngJourID = @JourID
UPDATE tblJournalEnt SET decAllocatedAmtToDate = (decAmount - decAmountF) * -1, decUnAllocatedAmt = 0 WHERE lngJourID = @JourIDAdj
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertJournalEntryDocCB](
@JEDocID NVARCHAR(200),
@GLNumber NVARCHAR(200),
@JourID bigint,
@JournalDate DateTIme,
@Desc NVARCHAR(200),
@UserName NVARCHAR(200),
@Comment NVARCHAR(200),
@Debits money,
@Credits money,
@UpdateBank int,
@Currency NVARCHAR(100),
@Exchange decimal
)
AS
BEGIN
INSERT INTO tblJournalEntryDocCB VALUES (@JEDocID,@GLNumber,@JourID,GetDate(),@JournalDate,@Desc,@UserName,@Comment,@Debits,@Credits,@UpdateBank,@Currency,@Exchange)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertAccountPaymentData](
@JEDocID NVARCHAR(200),
@GLNumber NVARCHAR(200),
@Desc NVARCHAR(200),
@LineComment NVARCHAR(200),
@LineTotExc money,
@LineTaxAmt money,
@LineTotInc money,
@TaxCode NVARCHAR(200),
@TaxObj image = null,
@Type tinyint,
@Dept int,
@LineNo int,
@Reference NVARCHAR(200)
)
AS
BEGIN
INSERT INTO tblJournalEntryDocCBDT 
([strJEDocID]
           ,[intGLNumber]
           ,[strDesc]
           ,[strLineComment]
           ,[decLineTotExc]
           ,[decLineTaxAmt]
           ,[decLineTotInc]
           ,[strTaxCode]
           ,[imgTaxObj]
           ,[intType]
           ,[intDept]
           ,[intLineNo]
           ,[strLineReference])
     VALUES
           (@JEDocID
           ,@GLNumber
           ,@Desc
           ,@LineComment
           ,@LineTotExc
           ,@LineTaxAmt
           ,@LineTotInc
           ,@TaxCode
           ,@TaxObj
           ,@Type 
           ,@Dept
           ,@LineNo
           ,@Reference)
End
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertJournalEntryDocCBDTPrj](
@JEDocID NVARCHAR(200),
@Type int,
@GLNumber NVARCHAR(200),
@LineNo int,
@ProjNumber NVARCHAR(200)
)
AS
BEGIN
INSERT INTO tblJournalEntryDocCBDTPrj (strJEDocID,intType,intGLNumber,intLineNo,strProjNumber,strStage) VALUES (@JEDocID,@Type,@GLNumber,@LineNo,@ProjNumber,'')
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertTaxData](
@TaxID bigint,
@SystemDate DateTime,
@JournalDate DateTime,
@UserName NVARCHAR(200),
@InvOrPayID NVARCHAR(200),
@JournalID bigint,
@VendCustName NVARCHAR(200),
@DocNumber NVARCHAR(200),
@Amount decimal,
@VAT decimal,
@Total decimal,
@Module int,
@Type int,
@Currency NVARCHAR(200),
@IsForeign bit,
@AmountF decimal,
@VATF decimal,
@TotalF decimal,
@Exchange decimal,
@Dept int
)
AS
BEGIN
INSERT INTO tblTax VALUES(@TaxID, @SystemDate, @JournalDate, @UserName, @InvOrPayID, @JournalID, @VendCustName, @DocNumber, @Amount, @VAT, @Total, @Module, @Type, @Currency, @IsForeign, @AmountF, @VATF, @TotalF, @Exchange, @Dept)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertTaxDTData](
@TaxID bigint,
@Line int,
@TaxCode NVARCHAR(200),
@TaxName NVARCHAR(200),
@Status int,
@Rate decimal,
@IsRefundable bit,
@Type int,
@AmtSubTax decimal,
@TaxAmt decimal,
@TotOthTax decimal,
@Currency NVARCHAR(200),
@IsForeign bit,
@AmtSubTaxF decimal,
@TaxAmtF decimal,
@TotOthTaxF decimal
)
AS
BEGIN
INSERT INTO tblTaxDT (lngTaxID,intLine,strTaxCode,strTaxName,intStatus,decRate,bitRefundable,intType,decAmtSubTax,decTaxAmt,decTotOthTax,strCurrency,bitIsForeign,decAmtSubTaxF,decTaxAmtF,decTotOthTaxF) 
VALUES (@TaxID,@Line,@TaxCode,@TaxName,@Status,@Rate,@IsRefundable,@Type,@AmtSubTax,@TaxAmt,@TotOthTax,@Currency,@IsForeign,@AmtSubTaxF,@TaxAmtF,@TotOthTaxF)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateJournalCenters](
@IsMaintainCenters bit,
@IsCurrentYearAdj bit,
@IsAdjustingEntry bit,
@REName NVARCHAR(200),
@Journal bigint,
@JournalOld bigint,
@NextJENumber bigint
)
AS
BEGIN
IF(@IsMaintainCenters = 1)
BEGIN
IF(@IsCurrentYearAdj = 1)
UPDATE tblCenterEnt SET lngJourID = @Journal WHERE lngJourID = @JournalOld
ELSE
UPDATE tblCenterEntLY SET lngJourID = @Journal WHERE lngJourID = @JournalOld
END
IF(Len(@REName) > 0)
UPDATE tblJournalEntryDocCBRE SET dteLastProcDate = GetDate() WHERE strREName = @REName
IF(@IsAdjustingEntry = 0)
UPDATE tblLastIDs SET lngJENumber = @NextJENumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetReceiptPaymentJournalData] @DocID NVARCHAR(200)
AS
BEGIN
SELECT 
tblJournalEntryDocCBDT.strJEDocID as DocNumber	
,tblJournalEntryDocCBDT.intGLNumber	 as Account
,tblJournalEntryDocCBDT.strDesc	 as [Description]
,tblJournalEntryDocCBDT.strLineComment as LineComment	
,tblJournalEntryDocCBDT.decLineTotExc	as LineTotExc	
,tblJournalEntryDocCBDT.decLineTaxAmt	as LineTaxAmt	
,tblJournalEntryDocCBDT.decLineTotInc	as LineTotInc	
,tblJournalEntryDocCBDT.strTaxCode	as TaxCode
,tblJournalEntryDocCBDT.imgTaxObj	as TaxObject
,cast(tblJournalEntryDocCBDT.intType as int)	as [Type]
,tblJournalEntryDocCBDT.intDept	as Dept
,tblJournalEntryDocCBDT.intLineNo	as [LineNo]
,tblJournalEntryDocCBDT.strLineReference as Reference
,ISNULL(tblJournalEntryDocCBDTPrj.strProjNumber,'')  as ProjNumber
FROM tblJournalEntryDocCBDT 
LEFT JOIN tblJournalEntryDocCBDTPrj ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCBDTPrj.strJEDocID AND tblJournalEntryDocCBDT.intType = tblJournalEntryDocCBDTPrj.intType AND tblJournalEntryDocCBDT.intGLNumber = tblJournalEntryDocCBDTPrj.intGLNumber AND tblJournalEntryDocCBDT.intLineNo = tblJournalEntryDocCBDTPrj.intLineNo 
WHERE tblJournalEntryDocCBDT.strJEDocID = @DocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetReceiptsPaymentJournalRecurringData] @IsReceiptPaymentJournal BIT
AS
BEGIN
	IF (@IsReceiptPaymentJournal = 1)
		SELECT strREName AS RecurringName
			,dteLastProcDate AS ProcDate
			,strComment AS Comment
			,CAST(0 AS BIT) AS IsPosted
		FROM tblJournalEntryDocCBRE
		ORDER BY strREName
	ELSE
		SELECT strREName AS RecurringName
			,dteLastProcDate AS ProcDate
			,strComment AS Comment
			,bitPosted AS IsPosted
		FROM tblJournalEntryDocRE
		ORDER BY strREName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteReceiptsPaymentJournalRecurringData](
@IsReceiptPaymentJournal bit ,
@REName NVARCHAR(200)
)
AS  
BEGIN  
IF(@IsReceiptPaymentJournal = 1)
DELETE FROM tblJournalEntryDocCBRE WHERE strREName = @REName
ELSE
DELETE FROM tblJournalEntryDocRE WHERE strREName = @REName
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SaveReceiptAndPaymentGeneral](
@REName NVARCHAR(200),
@GLNumber NVARCHAR(200),
@Desc NVARCHAR(200),
@Comment NVARCHAR(200),
@Debits money,
@Credits money,
@UpdateBank int,
@Currency  NVARCHAR(200)
)
AS
BEGIN 
DELETE FROM tblJournalEntryDocCBRE WHERE strREName = @REName
INSERT INTO tblJournalEntryDocCBRE VALUES (@REName,@GLNumber,NULL,@Desc,@Comment,@Debits,@Credits,@UpdateBank,@Currency)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SaveJournalEntryDocCBREDTData](
@REName NVARCHAR(200),
@GLNumber NVARCHAR(200),
@Desc NVARCHAR(200),
@LineComment NVARCHAR(200),
@LineTotExc money,
@LineTaxAmt money,
@LineTotInc money,
@TaxCode NVARCHAR(200),
@TaxObj image,
@Type int,
@Dept int,
@LineReference NVARCHAR(200)
)
AS
BEGIN
INSERT INTO tblJournalEntryDocCBREDT VALUES (@REName,@GLNumber,@Desc,@LineComment,@LineTotExc,@LineTaxAmt,@LineTotInc,@TaxCode,@TaxObj,@Type,@Dept,@LineReference)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetJournalEntryPickerData](
@IsReceiptPaymentJournal bit,
@Start DateTime,
@End DateTime,
@GLNumber NVARCHAR(200),
@Sort int
)
AS
BEGIN
IF(@IsReceiptPaymentJournal = 1)
BEGIN
IF(Len(@GLNumber) > 0)
SELECT dteJournalDate as JournalDate, strJEDocID as JEDocID, lngJourID as JournalID, strComment as Comment FROM tblJournalEntryDocCB WHERE (dteJournalDate BETWEEN @Start AND @End) AND (lngJourID <> 0) AND (intGLNumber = @GLNumber) 
Order by  CASE WHEN @Sort = 0 THEN dteJournalDate END DESC, CASE WHEN @Sort = 1 THEN strJEDocID END DESC, CASE WHEN @Sort = 2 THEN lngJourID END DESC, CASE WHEN @Sort = 3 THEN strComment END ASC
ELSE
SELECT dteJournalDate as JournalDate, strJEDocID as JEDocID, lngJourID as JournalID, strComment as Comment FROM tblJournalEntryDocCB WHERE (dteJournalDate BETWEEN @Start AND @End) AND (lngJourID <> 0)
Order by  CASE WHEN @Sort = 0 THEN dteJournalDate END DESC, CASE WHEN @Sort = 1 THEN strJEDocID END DESC, CASE WHEN @Sort = 2 THEN lngJourID END DESC, CASE WHEN @Sort = 3 THEN strComment END ASC
END	
ELSE
SELECT dteJournalDate as JournalDate, strJEDocID as JEDocID, lngJourID as JournalID, strComment as Comment FROM tblJournalEntryDoc WHERE (dteJournalDate BETWEEN @Start AND @End) AND (lngJourID <> 0)
Order by  CASE WHEN @Sort = 0 THEN dteJournalDate END DESC, CASE WHEN @Sort = 1 THEN strJEDocID END DESC, CASE WHEN @Sort = 2 THEN lngJourID END DESC, CASE WHEN @Sort = 3 THEN strComment END ASC
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetJournalEntryDocCB] @docNumber nvarchar(200)
AS
BEGIN
SELECT 
strJEDocID as DocNumber,
intGLNumber as Account	,
lngJourID	as JourID ,
dteSystemDate	as SystemDate,
dteJournalDate as JournalDate,
strDesc	as Description,
strUserName as UserName,
strComment	as LineComment,
decDebits	as Debits,
decCredits as Credits,
Cast(intUpdateBank as int)	as UpdateBank,
strCurrency as Currency,
decExchange as Exchange
FROM tblJournalEntryDocCB 
WHERE strJEDocID = @docNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [AddOrEditInvLotExt] 
@SQQty as money,
@SQUpdatedDate as smalldatetime,
@SQbitExpiryDate as bit,
@SQdteExpiryDate as smalldatetime,
@SQPartNumber as nvarchar(50),
@SQLotNumber as nvarchar(100),
@SQLocName as nvarchar(10),
@SQlngBinId as bigint,
@IsTag as int
AS
BEGIN
if(@IsTag = 1)
begin
UPDATE tblInvLotExt
SET decQty = decQty + @SQQty
,dteUpdatedDate = @SQUpdatedDate
,bitExpiryDate = @SQbitExpiryDate
,dteExpiryDate = @SQdteExpiryDate
WHERE strPartNumber = @SQPartNumber
AND strLotNumber = @SQLotNumber
AND strLocName = @SQLocName
AND lngBinId = @SQlngBinId;
end
else
begin
INSERT INTO tblInvLotExt
VALUES (
@SQPartNumber
,@SQLotNumber
,@SQLocName
,@SQQty
,@SQbitExpiryDate
,@SQdteExpiryDate
,@SQUpdatedDate
,@SQlngBinId
,GetDate()
);
end
END
GO

----------------------------------------------------
CREATE PROCEDURE [AddOrEditInvSerialExt] 
@SQQty as money,
@SQUpdatedDate as smalldatetime,
@SQPartNumber as nvarchar(50),
@SQLocName as nvarchar(10),
@SQlngBinId as bigint,
@SQStatus as int,
@SQDocID as nvarchar(50),
@SQSerialNumber as nvarchar(100),
@SQDimensionExist as bit,
@SQDimension as nvarchar(max),
@IsTag as int
AS
BEGIN
if(@IsTag = 1)
begin
UPDATE tblInvSerialExt
SET strLocName = @SQLocName
,decQty = @SQQty
,intStatus = @SQStatus
,strDocID = @SQDocID
,dteUpdatedDate = @SQUpdatedDate
,lngBinId = @SQlngBinId
WHERE strPartNumber = @SQPartNumber
AND strSerialNumber = @SQSerialNumber;
end
else
begin
INSERT INTO tblInvSerialExt
VALUES (
@SQPartNumber
,@SQSerialNumber
,@SQLocName
,@SQQty
,@SQStatus
,@SQDocID
,@SQUpdatedDate
,@SQDimensionExist
,@SQDimension
,@SQlngBinId
,GetDate()
);
end
END
GO

----------------------------------------------------
CREATE PROCEDURE [DeleteJournalCenterDataByJourID] 
@SQJournal as bigint
AS
BEGIN
	DELETE FROM tblCenterEntLY WHERE lngJourID = @SQJournal
END
GO

----------------------------------------------------
CREATE PROCEDURE [DeleteJournalCenterDataByJournalID] 
	@SQJournal as bigint
AS
BEGIN
	DELETE FROM tblCenterEnt WHERE lngJourID = @SQJournal;
END
GO

----------------------------------------------------
CREATE PROCEDURE [FetchInvLocationByPartNumber] 
@SQDefLocName as nvarchar(10),
@SQPartNumber as nvarchar(50)
AS
BEGIN
SELECT ISNULL(
CASE WHEN ISNULL((SELECT COUNT(strUserName) FROM tblUsers),0) = 0 
THEN ISNULL((SELECT EXT.strLocName FROM tblInvExt EXT WHERE EXT.strPartNumber = INV.strPartNumber AND EXT.bitDefault = 1),'') 
ELSE CASE WHEN ISNULL(IE.bitInactive,0) = 1 
THEN ISNULL((SELECT EXT.strLocName FROM tblInvExt EXT WHERE EXT.strPartNumber = INV.strPartNumber AND EXT.bitDefault = 1),'') 
ELSE IE.strLocName END END,'') 
FROM tblInv INV LEFT JOIN tblInvExt IE 
ON INV.strPartNumber = IE.strPartNumber AND IE.strLocName = @SQDefLocName 
WHERE (INV.strPartNumber = @SQPartNumber OR INV.strBarCode = @SQPartNumber OR INV.strBarCode2 = @SQPartNumber) AND (INV.intType = 1) AND (INV.bitInactive = 0)
END
GO

----------------------------------------------------
CREATE PROCEDURE [FetchInvSerialExtData] 
@SQstrPartNumber as nvarchar(50),
@SQstrSerialNumber as nvarchar(100)
AS
BEGIN
SELECT 
intStatus as Status, 
strLocName as LocationName 
FROM tblInvSerialExt 
WHERE strPartNumber = @SQstrPartNumber And strSerialNumber = @SQstrSerialNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [FetchStockUnitByPartNumber] 
@SQPartNumber as nvarchar(50)
AS
BEGIN
SELECT strStockUnit FROM tblInv WHERE strPartNumber = @SQPartNumber OR strBarCode = @SQPartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvLocBinData]
@SQstrPartNumber as nvarchar(50),
@SQstrLocName as nvarchar(10),
@IsTag as int
AS
BEGIN
if(@IsTag = 1)
SELECT tblInvLocBin.strBinCode AS BinCode, tblInvLocBin.lngId AS BinId 
FROM tblInvLocBin INNER JOIN tblInvExtBin ON tblInvLocBin.lngId = tblInvExtBin.lngBinId 
WHERE tblInvExtBin.strPartNumber = @SQstrPartNumber AND tblInvExtBin.strLocName = @SQstrLocName AND tblInvExtBin.bitDefault = 1;
else
SELECT tblInvLocBin.strBinCode AS BinCode, tblInvLocBin.lngId AS BinId 
FROM tblInvLocBin INNER JOIN tblInvExtBin ON tblInvLocBin.lngId = tblInvExtBin.lngBinId 
WHERE tblInvExtBin.strPartNumber = @SQstrPartNumber AND tblInvExtBin.strLocName = @SQstrLocName AND tblInvExtBin.bitAllowed = 1;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCoOptsRecords]
AS
BEGIN
SELECT 
bitManScaleRead as ManScaleRead,
strManScaleFolder as ManScaleFolder, 
bitManOverUnder as ManOverUnder,
bitPCInvIssReq as PCInvIssReq,
bitPCAllocPerc as PCAllocPerc,
bitProjMan as IsProjMan
FROM tblCoOpts;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetCountOfImage] 
@SQPartNumber as nvarchar(50)
AS
BEGIN
SELECT ISNULL(COUNT(*), 0)
FROM tblInvImg
WHERE strPartNumber = @SQPartNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetCountOfLotNumber] 
@SQPartNumber as nvarchar(50),
@SQLotNumber as nvarchar(100),
@SQLocName as nvarchar(10),
@SQlngBinId as bigint
AS
BEGIN
SELECT COUNT(strLotNumber) 
FROM tblInvLotExt 
WHERE strPartNumber = @SQPartNumber AND strLotNumber = @SQLotNumber AND strLocName = @SQLocName 
AND lngBinId = @SQlngBinId;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetCountOfSerialNumber] 
@SQPartNumber as nvarchar(50),
@SQSerialNumber as nvarchar(100)
AS
BEGIN
SELECT COUNT(strSerialNumber)
FROM tblInvSerialExt
WHERE strPartNumber = @SQPartNumber
AND strSerialNumber = @SQSerialNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetGLnumberByLabCode] 
@SQstrLabCode as nvarchar(20)
AS
BEGIN
SELECT uidCenterID as CenterID,intGLNumber as GLNumber FROM tblManLabour WHERE strLabCode = @SQstrLabCode;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetGLnumberByMachCode]
@SQstrMachCode as nvarchar(20)
AS
BEGIN
SELECT uidCenterID as CenterID,intGLNumber as GLNumber FROM tblManMachinery WHERE strMachCode = @SQstrMachCode;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetIncompatibleStorageSubCatData] 
@strParentCategory as nvarchar(20),
@strSubCategory as nvarchar(50),
@strIncompatibleParentCategory as nvarchar(20),
@strIncompatibleSubCategory as nvarchar(50)
AS
BEGIN
select 
strIncompatibleParentCategory as IncompatibleParentCategory,
strIncompatibleSubCategory as IncompatibleSubCategory,
strIncompatibilityReason as IncompatibilityReason 
from tblIncompatibleStorageSubCat 
where 
strParentCategory = @strParentCategory 
AND strSubCategory = @strSubCategory 
AND strIncompatibleParentCategory = @strIncompatibleParentCategory 
AND strIncompatibleSubCategory = @strIncompatibleSubCategory;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvDataByPartNumber] 
@SQstritem as nvarchar(50)
AS
BEGIN
select strPartNumber as PartNumber,strCategory as Category,strSubCategory as SubCategory from tblinv WHERE strPartNumber = @SQstritem;
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInventoryDataByDocID]
  @SQWIPDocID NVARCHAR(50)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT
        ci.intLineNo                         AS LineNumber,
        ci.strPartNumber                     AS PartNumber,
        ci.strDesc                           AS InvDescription,
        ci.strLocation                       AS InvLocation,
        ci.decBOMQty                         AS BOMQty,

        ISNULL((
            SELECT SUM(ISNULL(hc.decPostedQty,0) - ISNULL(hc.decReturnQty,0))
            FROM dbo.tblManWIPCompInv       AS hc
            JOIN dbo.tblManWIP              AS hh
              ON hh.strWIPDocID = hc.strWIPDocID
            WHERE hh.strJBDocID = h.strJBDocID
              AND (
                    (ci.strBOMNumber IS NOT NULL AND hc.strBOMNumber = ci.strBOMNumber)
                 OR (ci.strBOMNumber IS NULL     AND hc.strBOMNumber IS NULL
                                                  AND hc.strPartNumber = ci.strPartNumber)
                  )
        ), 0)                                 AS PostedQty,

        ci.decPostQty                        AS PostQty,
        ci.decPostedAmount                   AS PostedAmount,
        ci.decPostAmount                     AS PostAmount,
        i.bitInvSerialType                   AS IsInvSerialType,
        i.strStockUnit                       AS Unit,
        ci.strBOMNumber                      AS BOMNumber,
        ci.decReturnQty                      AS ReturnQty,
        ISNULL(st.bitMethod, 0)              AS Method,

        ISNULL(STUFF((
            SELECT ',' + CAST(b.strBinCode AS VARCHAR(MAX))
            FROM dbo.tblInvLocBin b
            WHERE b.lngId IN (
                SELECT ib.lngBinId
                FROM dbo.tblManWIPCompInvBin ib
                WHERE ib.strWIPDocID = ci.strWIPDocID
                  AND ib.intLineNo   = ci.intLineNo
            )
            FOR XML PATH(''), TYPE
        ).value('.', 'nvarchar(max)'), 1, 1, ''), '') AS Bin,

        ISNULL(STUFF((
            SELECT ',' + CAST(b.lngId AS VARCHAR(MAX))
            FROM dbo.tblInvLocBin b
            WHERE b.lngId IN (
                SELECT ib.lngId
                FROM dbo.tblManWIPCompInvBin ib
                WHERE ib.strWIPDocID = ci.strWIPDocID
                  AND ib.intLineNo   = ci.intLineNo
            )
            FOR XML PATH(''), TYPE
        ).value('.', 'nvarchar(max)'), 1, 1, ''), '') AS lngBinId

    FROM dbo.tblManWIPCompInv ci
    JOIN dbo.tblManWIP h
      ON h.strWIPDocID = ci.strWIPDocID
    JOIN dbo.tblInv i
      ON ci.strPartNumber = i.strPartNumber
    LEFT JOIN dbo.tblInvSerialTypes st
      ON i.strInvSerialType = st.strInvSerialType
    WHERE ci.strWIPDocID = @SQWIPDocID
    ORDER BY ci.intLineNo;
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInventoryDataByJobID] 
@SQJBDocID nvarchar(50),
@SQWCCode nvarchar(20)
AS
BEGIN

;WITH WIP_ByLine AS (
    SELECT w.strJBDocID,
           w.strWCCode,
           ci.intLineNo,
           SUM(ISNULL(ci.decPostQty,0)   - ISNULL(ci.decReturnQty,0)) AS Qty,
           SUM(ISNULL(ci.decPostAmount,0))                            AS Amt
    FROM dbo.tblManWIP w
    JOIN dbo.tblManWIPCompInv ci
      ON ci.strWIPDocID = w.strWIPDocID
    WHERE w.strJBDocID = @SQJBDocID
      AND w.strWCCode  = @SQWCCode
      AND ci.intLineNo <> -1
    GROUP BY w.strJBDocID, w.strWCCode, ci.intLineNo
),
WIP_AdHoc AS (
    SELECT w.strJBDocID,
           w.strWCCode,
           ci.strPartNumber,
           ci.strLocation,
           SUM(ISNULL(ci.decPostQty,0)   - ISNULL(ci.decReturnQty,0)) AS Qty,
           SUM(ISNULL(ci.decPostAmount,0))                            AS Amt
    FROM dbo.tblManWIP w
    JOIN dbo.tblManWIPCompInv ci
      ON ci.strWIPDocID = w.strWIPDocID
    WHERE w.strJBDocID = @SQJBDocID
      AND w.strWCCode  = @SQWCCode
      AND ci.intLineNo = -1
    GROUP BY w.strJBDocID, w.strWCCode, ci.strPartNumber, ci.strLocation
)

SELECT
    j.intLineNo                       AS LineNumber,
    j.strPartNumber                   AS PartNumber,
    j.strDesc                         AS InvDescription,
    j.strLocation                     AS InvLocation,
    j.decManQty                       AS ManufactureQty,
    ISNULL(bl.Qty,0) + ISNULL(ah.Qty,0)             AS IssuedQty,
    j.decManAmount                    AS ManAmount,
    ISNULL(bl.Amt,0) + ISNULL(ah.Amt,0)             AS PostedAmount,
    inv.bitInvSerialType              AS IsInvSerialType,
    inv.strStockUnit                  AS Unit,
    j.strBOMNumber                    AS BOMNumber,
    ISNULL(st.bitMethod,0)            AS Method,
    ISNULL(st.bitDimensionExist,0)    AS bitDimensionExist
FROM dbo.tblManJobCompInv j
JOIN dbo.tblInv inv
  ON j.strPartNumber = inv.strPartNumber
LEFT JOIN dbo.tblInvSerialTypes st
  ON inv.strInvSerialType = st.strInvSerialType
LEFT JOIN WIP_ByLine bl
  ON bl.strJBDocID = @SQJBDocID
 AND bl.strWCCode  = @SQWCCode
 AND bl.intLineNo  = j.intLineNo
LEFT JOIN WIP_AdHoc ah
  ON ah.strJBDocID   = @SQJBDocID
 AND ah.strWCCode    = @SQWCCode
 AND ah.strPartNumber= j.strPartNumber
 AND ah.strLocation  = j.strLocation
WHERE j.strJBDocID = @SQJBDocID
  AND j.strWCCode  = @SQWCCode
ORDER BY j.intLineNo;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvExtBinPartNumberByLocName] 
@SQstrloc as nvarchar(10),
@SQstrbin as nvarchar(50)
AS
BEGIN
select IEB.strPartNumber as PartNumber 
from tblInvExtBin IEB inner join tblInvLocBin LB 
ON IEB.lngBinID = LB.lngID INNER JOIN tblInv inv 
on IEB.strPartNumber = inv.strPartNumber 
where IEB.strLocName = @SQstrloc AND LB.strBinCode = @SQstrbin AND inv.intType = 1 AND IEB.decOnHand > 0
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvExtData] 
@SQPartNum as nvarchar(50),
@SQBarCode as nvarchar(300),
@SQLocName as nvarchar(10)
AS
BEGIN
SELECT 
tblInv.decLastPPUnit as LastPPUnit, 
tblInv.decBuyToStock as BuyToStock, 
tblInvExt.decValue as Value, 
tblInvExt.decOnHand as OnHand 
FROM tblInv INNER JOIN tblInvExt 
ON tblInv.strPartNumber = tblInvExt.strPartNumber And tblInvExt.strLocName = @SQLocName 
WHERE (tblInv.strPartNumber = @SQPartNum Or tblInv.strBarCode = @SQBarCode Or tblInv.strBarCode2 = @SQBarCode) 
And tblInv.intType = 1;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvLotExtDataByPartNumber] 
@SQPartNumber as nvarchar(50),
@SQLocName as nvarchar(10)
AS
BEGIN
SELECT strLotNumber as LotNumber, decQty as Qty, bitExpiryDate as ExpiryDateExists, dteExpiryDate as ExpiryDate 
FROM tblInvLotExt 
WHERE strPartNumber = @SQPartNumber AND strLocName = @SQLocName AND decQty > 0 
ORDER BY dteExpiryDate, dteUpdatedDate, strLotNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvLotExtQuantityByPartNum] 
@SQPartNumber as nvarchar(50),
@SQLotNumber as nvarchar(100),
@SQLocName as nvarchar(10),
@SQlngBinId as bigint
AS
BEGIN
SELECT decQty as Qty 
FROM tblInvLotExt 
WHERE strPartNumber = @SQPartNumber AND strLotNumber = @SQLotNumber AND strLocName = @SQLocName  
AND lngBinId = @SQlngBinId;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvSerialExtByPartNumber] 
@SQPartNumber as nvarchar(50),
@SQLocName as nvarchar(10)
AS
BEGIN
SELECT strSerialNumber as SerialNumber, decQty as Qty 
FROM tblInvSerialExt 
WHERE strPartNumber = @SQPartNumber AND strLocName = @SQLocName AND decQty > 0 
ORDER BY dteUpdatedDate, strSerialNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvSerialExtData] 
@SQPartNumber as nvarchar(50),
@SQSerialNumber as nvarchar(100)
AS
BEGIN
SELECT strDocID as DocID, intStatus as Status 
FROM tblInvSerialExt 
WHERE strPartNumber = @SQPartNumber AND strSerialNumber = @SQSerialNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvSerialTypesData] 
@SQPart as nvarchar(50)
AS
BEGIN
SELECT 
tblInv.strBuyUnit as Unit, 
tblInv.bitInvSerialType as InvSerialType, 
ISNULL(tblInvSerialTypes.intType,0) as SerialLotType, 
ISNULL(tblInvSerialTypes.bitTrackExpiryDate,0) as ISExpiryDate 
FROM tblInv LEFT JOIN tblInvSerialTypes 
ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
WHERE tblInv.strPartNumber = @SQPart;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvSerialTypesDataByBarCode] 
@SQPart as nvarchar(50),
@SQBarCode as nvarchar(300)
AS
BEGIN
SELECT 
tblInv.bitInvSerialType as IsInvSerialType, 
ISNULL(tblInvSerialTypes.bitMethod,0) as Method 
FROM tblInv LEFT JOIN tblInvSerialTypes 
ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
WHERE (tblInv.strPartNumber = @SQPart OR tblInv.strBarCode = @SQBarCode
OR tblInv.strBarCode2 = @SQBarCode) AND tblInv.intType = 1 AND tblInv.bitInactive = 0;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvSerialTypesDataByPartNumber] 
@SQPart as nvarchar(50)
AS
BEGIN
SELECT 
tblInv.bitInvSerialType as IsInvSerialType, 
ISNULL(tblInvSerialTypes.bitMethod,0) as IsMethod,
ISNULL(tblInvSerialTypes.intMin,0) as Min, 
ISNULL(tblInvSerialTypes.intMax,0) as Max, 
ISNULL(tblInvSerialTypes.intFormat,0) as Format, 
ISNULL(tblInvSerialTypes.intType,0) as Type, 
ISNULL(tblInvSerialTypes.bitTrackExpiryDate,0) as IsTrackExpiryDate, 
tblInv.strBuyUnit as BuyUnit,
tblInv.strBuyUnit as Unit,
ISNULL(tblInvSerialTypes.intExpiryDateAuthAD,0) as ExpiryDateAuthAD, 
ISNULL(tblInvSerialTypes.strInvSerialType,'') as InvSerialType, 
ISNULL(tblInvSerialTypes.strDimProCode,'') as DimProCode, 
ISNULL(tblInvSerialTypes.bitAutoCreateLotNumber,0) AS IsAutoCreateLotNumber,
ISNULL(tblInvSerialTypes.intLotNumberStartsFrom, 0) AS LotNumberStartsFrom, 
ISNULL(tblInvSerialTypes.intNextLotNumber, 1) AS NextLotNumber,
ISNULL(tblInvSerialTypes.intDaysExpire, 0) AS intDaysExpire,
ISNULL(tblInvSerialTypes.intDaysExpire, 0) AS DaysExpire 
FROM tblInv LEFT JOIN tblInvSerialTypes 
ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
WHERE tblInv.strPartNumber = @SQPart;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetJournalCenterDataByJournalID] 
@SQJournal as bigint
AS
BEGIN
SELECT DISTINCT a.intGLNumber as GLNumber, b.strDesc as Description FROM tblCenterEnt as c INNER JOIN tblJournalEnt as a 
ON c.lngJourID = a.lngJourID AND c.intLineNum = a.intLineNum INNER JOIN tblAccounts as b 
ON a.intGLNumber = b.intGLNumber WHERE (c.lngJourID = @SQJournal) AND (a.intGLNumber 
IN (SELECT intGLNumber FROM tblAccounts WHERE bitAllowCenters = 0 AND intAccType <> 3));
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetJournalDataByDocNumber] 
@SQDocID as nvarchar(50)
AS
BEGIN
SELECT lngJourID as JourID, dteJournalDate as JournalDate FROM tblManWIP WHERE strWIPDocID = @SQDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetJournalEntDataByJourID] 
@SQJournal as bigint,
@isTag as int
AS
BEGIN
if(@isTag = 1)
SELECT a.intLineNum as JournalLineNo,a.intGLNumber as AcctNumber,b.strDesc as AcctDescription,b.intAccType as AccountType,
a.decAmount as Amount
FROM tblJournalEnt as a INNER JOIN tblAccounts as b 
ON a.intGLNumber = b.intGLNumber 
WHERE (a.lngJourID = @SQJournal) AND (a.intGLNumber IN (SELECT intGLNumber FROM tblAccounts 
WHERE bitAllowCenters = 1 AND intAccType <> 3));
else
SELECT a.intLineNum as JournalLineNo,a.intGLNumber as AcctNumber,b.strDesc as AcctDescription,b.intAccType as AccountType,
a.decAmount as Amount
FROM tblJournalEntLY as a INNER JOIN tblAccountsLY as b 
ON a.intGLNumber = b.intGLNumber 
WHERE (a.lngJourID = @SQJournal) AND (a.intGLNumber IN (SELECT intGLNumber FROM tblAccountsLY 
WHERE bitAllowCenters = 1 AND intAccType <> 3));
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetLabNextLineNumber] 
@SQstrJBDocID as nvarchar(50)
AS
BEGIN
SELECT ISNULL(MAX(intLineNo),0) + 1 FROM tblManJobCompLab WHERE strJBDocID = @SQstrJBDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetLabourDataByDocId]   
@SQWIPDocID as nvarchar(50)  
AS  
BEGIN  
SELECT   
tblManWIPCompLab.strLabCode as LabourCode,   
tblManLabour.strDesc as [Description],  
tblManWIPCompLab.decVariableHours as ManVariableHourly,  
tblManWIPCompLab.decVariableRate as VariableRate, tblManWIPCompLab.decSetupHours as SetupHours,   
tblManWIPCompLab.decSetupRate as SetupRate,  
tblManWIPCompLab.decBreakdownHours as BreakdownHours, tblManWIPCompLab.decBreakdownRate as BreakdownRate,  
tblManWIPCompLab.decAmount as ManAmount,  
tblManWIPCompLab.decPostedVariableHours as PostedVariablesHours,   
tblManWIPCompLab.decPostedSetupHours as PostedSetupHours,   
tblManWIPCompLab.decPostedBreakdownHours as PostedBreakdownHours,  
tblManWIPCompLab.decPostedAmount as PostedAmount,   
tblManWIPCompLab.decPostVariableHours as PostVariableHours,   
tblManWIPCompLab.decPostSetupHours as PostSetupHours,  
tblManWIPCompLab.decPostBreakdownHours as PostBreakdownHours,  
tblManWIPCompLab.decPostAmount as PostAmount,   
tblManWIPCompLab.strBOMNumber as BOMNumber,  
tblManWIPCompLab.decReturnVariableHours as ReturnVariableHours,  
tblManWIPCompLab.decReturnSetupHours as ReturnSetupHours,  
tblManWIPCompLab.decReturnBreakdownHours as ReturnBreakdownHours  
FROM tblManWIPCompLab 
INNER JOIN tblManLabour ON tblManWIPCompLab.strLabCode = tblManLabour.strLabCode   
WHERE tblManWIPCompLab.strWIPDocID = @SQWIPDocID ORDER BY tblManWIPCompLab.intLineNo  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetLabourDataByJobID] 
@SQJBDocID nvarchar(50),
@SQWCCode nvarchar(20)
AS
BEGIN
SELECT tblManJobCompLab.intLineNo as LineNumber, tblManJobCompLab.strLabCode as LabourCode, 
tblManLabour.strDesc as Description, 
tblManJobCompLab.decManVariableHours as ManVariableHourly, 
tblManJobCompLab.decVariableRate as VariableRate, 
tblManJobCompLab.decSetupHours as SetupHours, 
tblManJobCompLab.decSetupRate as SetupRate, 
tblManJobCompLab.decBreakdownHours as BreakdownHours, 
tblManJobCompLab.decBreakdownRate as BreakdownRate, 
ISNULL(SUM(tblManWIPCompLab.decPostVariableHours), 0) - ISNULL(SUM(tblManWIPCompLab.decReturnVariableHours), 0) AS PostedVariablesHours,
ISNULL(SUM(tblManWIPCompLab.decPostSetupHours), 0) - ISNULL(SUM(tblManWIPCompLab.decReturnSetupHours), 0) AS PostedSetupHours,
ISNULL(SUM(tblManWIPCompLab.decPostBreakdownHours), 0) - ISNULL(SUM(tblManWIPCompLab.decReturnBreakdownHours), 0) AS PostedBreakdownHours,
tblManJobCompLab.decManAmount as ManAmount, 
ISNULL(SUM(tblManWIPCompLab.decPostAmount),0) as PostedAmount, 
tblManJobCompLab.strBOMNumber as BOMNumber 
FROM tblManJobCompLab INNER JOIN tblManLabour 
ON tblManJobCompLab.strLabCode = tblManLabour.strLabCode 
LEFT JOIN tblManWIP 
ON tblManJobCompLab.strJBDocID = tblManWIP.strJBDocID AND tblManJobCompLab.strWCCode = tblManWIP.strWCCode 
LEFT JOIN tblManWIPCompLab 
ON tblManWIP.strWIPDocID = tblManWIPCompLab.strWIPDocID AND tblManJobCompLab.intLineNo = tblManWIPCompLab.intLineNo 
WHERE tblManJobCompLab.strJBDocID = @SQJBDocID AND tblManJobCompLab.strWCCode = @SQWCCode 
GROUP BY tblManJobCompLab.intLineNo, tblManJobCompLab.strLabCode, 
tblManLabour.strDesc, tblManJobCompLab.decManVariableHours, 
tblManJobCompLab.decVariableRate, tblManJobCompLab.decSetupHours, 
tblManJobCompLab.decSetupRate, tblManJobCompLab.decBreakdownHours, 
tblManJobCompLab.decBreakdownRate, tblManJobCompLab.decManAmount, 
tblManJobCompLab.strBOMNumber 
ORDER BY tblManJobCompLab.intLineNo;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetLabourDataByLabCode] 
@SQLabCode as nvarchar(20)
AS
BEGIN
SELECT intGLNumber as GLNumber, intDept as Dept FROM tblManLabour WHERE strLabCode = @SQLabCode;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetLngIdCountByJobId] 
@SQJBDocID nvarchar(50),
@SQWCCode nvarchar(20)
AS
BEGIN
SELECT TOP 1 COUNT(lngID) FROM tblManJobOp WHERE strJBDocID = @SQJBDocID AND strWCCode = @SQWCCode;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetLoggedUserData]   
@SQDocID as nvarchar(50)  
AS  
BEGIN  
SELECT dteSystemDate as SystemDate, strUserName as UserName FROM tblManWIP WHERE strWIPDocID = @SQDocID  
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetMachDataByDocID] 
@SQWIPDocID as nvarchar(50)
AS
BEGIN
SELECT tblManWIPCompMach.strMachCode as MachCode, tblManMachinery.strDesc as MachDesc, 
tblManWIPCompMach.decVariableHours as ManVariableHourly, 
tblManWIPCompMach.decVariableRate as VariableRate, tblManWIPCompMach.decSetupHours as SetupHours, 
tblManWIPCompMach.decSetupRate as SetupRate, 
tblManWIPCompMach.decBreakdownHours as BreakdownHours, tblManWIPCompMach.decBreakdownRate as BreakdownRate, 
tblManWIPCompMach.decAmount as ManAmount, 
tblManWIPCompMach.decPostedVariableHours as PostedVariablesHours, 
tblManWIPCompMach.decPostedSetupHours as PostedSetupHours, 
tblManWIPCompMach.decPostedBreakdownHours as PostedBreakdownHours, 
tblManWIPCompMach.decPostedAmount as PostedAmount, 
tblManWIPCompMach.decPostVariableHours as PostVariableHours, 
tblManWIPCompMach.decPostSetupHours as PostSetupHours, 
tblManWIPCompMach.decPostBreakdownHours as PostBreakdownHours, 
tblManWIPCompMach.decPostAmount as PostAmount, tblManWIPCompMach.strBOMNumber as BOMNumber,
tblManWIPCompMach.decReturnVariableHours as ReturnVariableHours,
tblManWIPCompMach.decReturnSetupHours as ReturnSetupHours,
tblManWIPCompMach.decReturnBreakdownHours as ReturnBreakdownHours
FROM tblManWIPCompMach INNER JOIN tblManMachinery ON tblManWIPCompMach.strMachCode = tblManMachinery.strMachCode 
WHERE tblManWIPCompMach.strWIPDocID = @SQWIPDocID ORDER BY tblManWIPCompMach.intLineNo
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetMachDataByJobID] 
@SQJBDocID nvarchar(50),
@SQWCCode nvarchar(20)
AS
BEGIN
SELECT tblManJobCompMach.intLineNo as LineNumber, 
tblManJobCompMach.strMachCode as MachCode, 
tblManMachinery.strDesc as MachDesc, 
tblManJobCompMach.decManVariableHours as ManVariableHourly, 
tblManJobCompMach.decVariableRate as VariableRate, 
tblManJobCompMach.decSetupHours as SetupHours, 
tblManJobCompMach.decSetupRate as SetupRate, 
tblManJobCompMach.decBreakdownHours as BreakdownHours, 
tblManJobCompMach.decBreakdownRate as BreakdownRate, 
ISNULL(SUM(tblManWIPCompMach.decPostVariableHours), 0) - ISNULL(SUM(tblManWIPCompMach.decReturnVariableHours), 0) AS PostedVariablesHours,
ISNULL(SUM(tblManWIPCompMach.decPostSetupHours), 0) - ISNULL(SUM(tblManWIPCompMach.decReturnSetupHours), 0) AS PostedSetupHours,
ISNULL(SUM(tblManWIPCompMach.decPostBreakdownHours), 0) - ISNULL(SUM(tblManWIPCompMach.decReturnBreakdownHours), 0) AS PostedBreakdownHours,
tblManJobCompMach.decManAmount as ManAmount, 
ISNULL(SUM(tblManWIPCompMach.decPostAmount),0) as PostedAmount, 
tblManJobCompMach.strBOMNumber as BOMNumber		
FROM tblManJobCompMach INNER JOIN tblManMachinery 
ON tblManJobCompMach.strMachCode = tblManMachinery.strMachCode 
LEFT JOIN tblManWIP 
ON tblManJobCompMach.strJBDocID = tblManWIP.strJBDocID AND tblManJobCompMach.strWCCode = tblManWIP.strWCCode 
LEFT JOIN tblManWIPCompMach 
ON tblManWIP.strWIPDocID = tblManWIPCompMach.strWIPDocID AND tblManJobCompMach.intLineNo = tblManWIPCompMach.intLineNo 
WHERE tblManJobCompMach.strJBDocID = @SQJBDocID AND tblManJobCompMach.strWCCode = @SQWCCode 
GROUP BY tblManJobCompMach.intLineNo, tblManJobCompMach.strMachCode, tblManMachinery.strDesc, 
tblManJobCompMach.decManVariableHours, tblManJobCompMach.decVariableRate, 
tblManJobCompMach.decSetupHours, tblManJobCompMach.decSetupRate, 
tblManJobCompMach.decBreakdownHours, tblManJobCompMach.decBreakdownRate, 
tblManJobCompMach.decManAmount, tblManJobCompMach.strBOMNumber 
ORDER BY tblManJobCompMach.intLineNo;
END
GO


----------------------------------------------------
CREATE PROCEDURE [GetMachDataByMachCode] 
@SQMachCode as nvarchar(20)
AS
BEGIN
SELECT intGLNumber as GLNumber, intDept as Dept FROM tblManMachinery WHERE strMachCode = @SQMachCode;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetManJobPartNumberByDocID] 
@SQWIPDocID as nvarchar(50)
AS
BEGIN
SELECT strPartNumber as PartNumber FROM tblManJobByProd WHERE strJBDocID = @SQWIPDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetManJobPartNumberByJobID] 
@SQJBDocID nvarchar(50)
AS
BEGIN
SELECT strPartNumber FROM tblManJobByProd WHERE strJBDocID = @SQJBDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetManJobworkCentreCodeByJobID] 
@SQJBDocID nvarchar(50)
AS
BEGIN
SELECT strWCCode FROM tblManJob WHERE strJBDocID = @SQJBDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetManufactureWIPDataByDocID] 
@SQWIPDocID as nvarchar(50)
AS
BEGIN
SELECT 
strWIPDocID as WIPDocID, 
strJBDocID as JobDocID, 
strWCCode as WCCode, 
dteJournalDate as JournalDate, 
lngJourID as JournalID
FROM tblManWIP WHERE strWIPDocID = @SQWIPDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetManWIPCompInvMaxId] 
@SQstrWIPDocID as nvarchar(50),
@SQintLineNo as int
AS
BEGIN
SELECT MAX(lngID) as ID 
FROM tblManWIPCompInv 
WHERE strWIPDocID = @SQstrWIPDocID AND intLineNo = @SQintLineNo;
END
GO

----------------------------------------------------
create procedure [dbo].[GetManWIPCompLabData]
@SQJBDocID as nvarchar(50),
@SQWCCode as nvarchar(20),
@SQBOMNumber as nvarchar(50)
AS
BEGIN
SELECT intLineNo AS LineNumber
,LAB.strLabCode AS LabourCode
,ML.strDesc AS LabDescription
,decManVariableHours AS ManVariableHourly
,decVariableRate AS VariableRate
,decSetupHours AS SetupHours
,decSetupRate AS SetupRate
,decBreakdownHours AS BreakdownHours
,decBreakdownRate AS BreakdownRate
,decManAmount AS ManAmount
,ISNULL((
SELECT SUM(WIP_LAB.decPostVariableHours) AS PostVariableHours
FROM tblManWIP WIP
INNER JOIN tblManWIPCompLab WIP_LAB ON WIP.strWIPDocID = WIP_LAB.strWIPDocID
WHERE WIP.strJBDocID = LAB.strJBDocID
AND WIP.strWCCode = LAB.strWCCode
AND WIP_LAB.strLabCode = LAB.strLabCode
AND WIP_LAB.strBOMNumber = LAB.strBOMNumber
), 0) AS PostedVariablesHours
,ISNULL((
SELECT SUM(WIP_LAB.decPostSetupHours) AS PostSetupHours
FROM tblManWIP WIP
INNER JOIN tblManWIPCompLab WIP_LAB ON WIP.strWIPDocID = WIP_LAB.strWIPDocID
WHERE WIP.strJBDocID = LAB.strJBDocID
AND WIP.strWCCode = LAB.strWCCode
AND WIP_LAB.strLabCode = LAB.strLabCode
AND WIP_LAB.strBOMNumber = LAB.strBOMNumber
), 0) AS PostedSetupHours
,ISNULL((
SELECT SUM(WIP_LAB.decPostBreakdownHours) AS PostBreakdownHours
FROM tblManWIP WIP
INNER JOIN tblManWIPCompLab WIP_LAB ON WIP.strWIPDocID = WIP_LAB.strWIPDocID
WHERE WIP.strJBDocID = LAB.strJBDocID
AND WIP.strWCCode = LAB.strWCCode
AND WIP_LAB.strLabCode = LAB.strLabCode
AND WIP_LAB.strBOMNumber = LAB.strBOMNumber
), 0) AS PostedBreakdownHours
,ISNULL((
SELECT SUM(WIP_LAB.decPostAmount) AS PostAmount
FROM tblManWIP WIP
INNER JOIN tblManWIPCompLab WIP_LAB ON WIP.strWIPDocID = WIP_LAB.strWIPDocID
WHERE WIP.strJBDocID = LAB.strJBDocID
AND WIP.strWCCode = LAB.strWCCode
AND WIP_LAB.strLabCode = LAB.strLabCode
AND WIP_LAB.strBOMNumber = LAB.strBOMNumber
), 0) AS PostedAmount
,decManVariableHours AS ManVariableHourly
,decSetupHours AS PostSetupHours
,decBreakdownHours AS PostBreakdownHours
,decManAmount AS PostAmount
FROM tblManJobCompLab LAB
INNER JOIN tblManLabour ML ON LAB.strLabCode = ML.strLabCode
WHERE strJBDocID = @SQJBDocID
AND strWCCode = @SQWCCode
AND strBOMNumber = @SQBOMNumber
ORDER BY intLineNo
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManWIPFillDataSet] 
@SQWIPDocID as varchar(200),
@SQLocationCriteria varchar(200)
AS
BEGIN
SELECT tblManWIP.strWIPDocID, tblManWIP.strJBDocID, tblManWIP.strWCCode, tblManWorkCentre.strDesc, tblManWIP.dteSystemDate, tblManWIP.dteJournalDate, tblManWIP.strUserName, tblManWIP.intType, tblManWIP.dteRowUpdated FROM tblManWIP INNER JOIN tblManWorkCentre ON tblManWIP.strWCCode = tblManWorkCentre.strWCCode WHERE tblManWIP.strWIPDocID = @SQWIPDocID;
SELECT tblManWIPCompInv.strWIPDocID, tblManWIPCompInv.intLineNo, tblManWIPCompInv.strPartNumber, tblManWIPCompInv.strDesc, tblManWIPCompInv.strLocation, tblManWIPCompInv.decBOMQty, tblManWIPCompInv.decPostedQty, CASE WHEN tblManWIPCompInv.intType = 1 THEN tblManWIPCompInv.decReturnQty * -1 ELSE tblManWIPCompInv.decPostQty END AS decPostQty, tblManWIPCompInv.decAmount, tblManWIPCompInv.decPostedAmount, tblManWIPCompInv.decPostAmount, tblManWIPCompInv.lngID, tblInv.strStockUnit AS strUnit, tblManWIPCompInv.strBOMNumber, tblManWIPCompInv.intType, tblManWIPCompInv.decReturnQty FROM tblManWIPCompInv INNER JOIN tblInv ON tblManWIPCompInv.strPartNumber = tblInv.strPartNumber WHERE tblManWIPCompInv.strWIPDocID = @SQWIPDocID ORDER BY tblManWIPCompInv.intLineNo;
SELECT tblManWIPCompLab.strWIPDocID, tblManWIPCompLab.intLineNo, tblManWIPCompLab.strLabCode, tblManLabour.strDesc, tblManWIPCompLab.decVariableHours, tblManWIPCompLab.decVariableRate, tblManWIPCompLab.decSetupHours, tblManWIPCompLab.decSetupRate, tblManWIPCompLab.decBreakdownHours, tblManWIPCompLab.decBreakdownRate, tblManWIPCompLab.decAmount, tblManWIPCompLab.decPostedVariableHours, tblManWIPCompLab.decPostedSetupHours, tblManWIPCompLab.decPostedBreakdownHours, tblManWIPCompLab.decPostedAmount, CASE WHEN tblManWIPCompLab.intType = 1 THEN tblManWIPCompLab.decReturnVariableHours * -1 ELSE tblManWIPCompLab.decPostVariableHours END AS decPostVariableHours, CASE WHEN tblManWIPCompLab.intType = 1 THEN tblManWIPCompLab.decReturnSetupHours * -1 ELSE tblManWIPCompLab.decPostSetupHours END AS decPostSetupHours, CASE WHEN tblManWIPCompLab.intType = 1 THEN tblManWIPCompLab.decReturnBreakdownHours * -1 ELSE tblManWIPCompLab.decPostBreakdownHours END AS decPostBreakdownHours, tblManWIPCompLab.decPostAmount, tblManWIPCompLab.lngID, tblManWIPCompLab.strBOMNumber, tblManWIPCompLab.intType, tblManWIPCompLab.decReturnVariableHours, tblManWIPCompLab.decReturnSetupHours, tblManWIPCompLab.decReturnBreakdownHours FROM tblManWIPCompLab INNER JOIN tblManLabour ON tblManWIPCompLab.strLabCode = tblManLabour.strLabCode WHERE tblManWIPCompLab.strWIPDocID = @SQWIPDocID ORDER BY tblManWIPCompLab.intLineNo;
SELECT tblManWIPCompMach.strWIPDocID, tblManWIPCompMach.intLineNo, tblManWIPCompMach.strMachCode, tblManMachinery.strDesc, tblManWIPCompMach.decVariableHours, tblManWIPCompMach.decVariableRate, tblManWIPCompMach.decSetupHours, tblManWIPCompMach.decSetupRate, tblManWIPCompMach.decBreakdownHours, tblManWIPCompMach.decBreakdownRate, tblManWIPCompMach.decAmount, tblManWIPCompMach.decPostedVariableHours, tblManWIPCompMach.decPostedSetupHours, tblManWIPCompMach.decPostedBreakdownHours, tblManWIPCompMach.decPostedAmount, CASE WHEN tblManWIPCompMach.intType = 1 THEN tblManWIPCompMach.decReturnVariableHours * -1 ELSE tblManWIPCompMach.decPostVariableHours END AS decPostVariableHours, CASE WHEN tblManWIPCompMach.intType = 1 THEN tblManWIPCompMach.decReturnSetupHours * -1 ELSE tblManWIPCompMach.decPostSetupHours END AS decPostSetupHours, CASE WHEN tblManWIPCompMach.intType = 1 THEN tblManWIPCompMach.decReturnBreakdownHours * -1 ELSE tblManWIPCompMach.decPostBreakdownHours END AS decPostBreakdownHours, tblManWIPCompMach.decPostAmount, tblManWIPCompMach.lngID, tblManWIPCompMach.strBOMNumber, tblManWIPCompMach.intType, tblManWIPCompMach.decReturnVariableHours, tblManWIPCompMach.decReturnSetupHours, tblManWIPCompMach.decReturnBreakdownHours FROM tblManWIPCompMach INNER JOIN tblManMachinery ON tblManWIPCompMach.strMachCode = tblManMachinery.strMachCode WHERE tblManWIPCompMach.strWIPDocID = @SQWIPDocID ORDER BY tblManWIPCompMach.intLineNo;
SELECT tblManWIPCompOverhead.strWIPDocID, tblManWIPCompOverhead.intLineNo, tblManWIPCompOverhead.intGLNumber, tblAccounts.strDesc AS strAccDesc, ISNULL(tblManWIPCompOverhead.intDept,0) AS intDept, ISNULL(tblDepartments.strDesc,'') AS strDeptDesc, tblManWIPCompOverhead.uidCenterID, CASE WHEN ISNULL(tblCenters.strLvl1,'') <> '' THEN tblCenters.strLvl1 + CASE WHEN ISNULL(tblCenters.strLvl2,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl2,'') + CASE WHEN ISNULL(tblCenters.strLvl3,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl3,'') + CASE WHEN ISNULL(tblCenters.strLvl4,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') + CASE WHEN ISNULL(tblCenters.strLvl5,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') END END END END ELSE '' END strCenter, tblManWIPCompOverhead.decAmount, tblManWIPCompOverhead.decPostedAmount, tblManWIPCompOverhead.decPostAmount, tblManWIPCompOverhead.lngID, tblManWIPCompOverhead.strBOMNumber, tblManWIPCompOverhead.intType, tblManWIPCompOverhead.decIssueAmount, tblManWIPCompOverhead.decReturnAmount FROM tblManWIPCompOverhead INNER JOIN tblAccounts ON tblManWIPCompOverhead.intGLNumber = tblAccounts.intGLNumber LEFT JOIN tblDepartments ON tblManWIPCompOverhead.intDept = tblDepartments.intDept LEFT JOIN tblCenters ON tblManWIPCompOverhead.uidCenterID = tblCenters.uidCenterID WHERE tblManWIPCompOverhead.strWIPDocID = @SQWIPDocID ORDER BY tblManWIPCompOverhead.intGLNumber;
SELECT * FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN (SELECT DISTINCT strPartNumber, strLocation FROM tblManWIPCompInv WHERE strWIPDocID = @SQWIPDocID) Z ON tblInv.strPartNumber = Z.strPartNumber AND tblInv.strLocName = Z.strLocation;
SELECT tblManWIPCompInvSerial.*, ISNULL(tblInvSerialExt.bitDimensionExist,0) AS bitDimensionExist, ISNULL(tblInvSerialExt.strDimension,'') AS strDimension FROM tblManWIPCompInvSerial INNER JOIN tblManWIPCompInv ON tblManWIPCompInvSerial.strWIPDocID = tblManWIPCompInv.strWIPDocID AND tblManWIPCompInv.lngID = tblManWIPCompInvSerial.lngWIPID AND tblManWIPCompInvSerial.intLineNo = tblManWIPCompInv.intLineNo LEFT JOIN tblInvSerialExt ON tblManWIPCompInv.strPartNumber = tblInvSerialExt.strPartNumber AND tblManWIPCompInvSerial.strSerialNumber = tblInvSerialExt.strSerialNumber INNER JOIN tblInv ON tblManWIPCompInv.strPartNumber = tblInv.strPartNumber LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType WHERE tblManWIPCompInvSerial.strWIPDocID = @SQWIPDocID AND tblInvSerialTypes.bitPrintInv = 1 ORDER BY tblManWIPCompInvSerial.intLineNo;
SELECT SUM(tblManWIPCompInv.decBOMQty) AS decBOMQty, SUM(tblManWIPCompInv.decAmount) AS decAmount, SUM(tblManWIPCompInv.decPostedQty) AS decPostedQty, SUM(tblManWIPCompInv.decPostedAmount) AS decPostedAmount, SUM(tblManWIPCompInv.decPostQty) AS decPostQty, SUM(tblManWIPCompInv.decPostAmount) AS decPostAmount FROM tblManWIPCompInv WHERE tblManWIPCompInv.strWIPDocID = @SQWIPDocID;
SELECT strWIPDocID,intLineNo,lngBinId,strBinCode=(SELECT strBinCode FROM tblInvLocBin WHERE lngId=tblManWIPCompInvBin.lngBinId),decQty FROM tblManWIPCompInvBin WHERE strWIPDocID = @SQWIPDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetNavNextNumberData] 
@SQDocNumber as nvarchar(50),
@SQType as int
AS
BEGIN
SELECT MIN(strWIPDocID) FROM tblManWIP WHERE strWIPDocID > @SQDocNumber AND intType <> @SQType;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetNavPreviousNumberData] 
@SQDocNumber as nvarchar(50),
@SQType as int
AS
BEGIN
SELECT MAX(strWIPDocID) FROM tblManWIP WHERE strWIPDocID < @SQDocNumber AND intType <> @SQType;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetNegInvValue] 
AS
BEGIN
SELECT bitNegInv as NegInv FROM tblCoOpts;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetNextDocNumber] 
AS
BEGIN
SELECT ISNULL(MAX(lngWPNumber), 0) + 1 FROM tblLastIDs;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetNextLineNumber] 
@SQstrJBDocID as nvarchar(50)
AS
BEGIN
SELECT ISNULL(MAX(intLineNo),0) + 1 FROM tblManJobCompInv WHERE strJBDocID = @SQstrJBDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetNumberOfFileByFileName] 
@SQFileName as nvarchar(250)
AS
BEGIN
SELECT COUNT(lngID) FROM tblManWIP WHERE strFileName = @SQFileName;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetNumberOfUsersByLocName] 
@SQLocName as nvarchar(10),
@SQBinLocCode as nvarchar(50)
AS
BEGIN
SELECT COUNT(strUserName) FROM tblInvLocBinSec WHERE strLocName = @SQLocName AND strBinCode = @SQBinLocCode;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetNumberOfUsersByUserID] 
@SQLocName as nvarchar(10),
@SQBinLocCode as nvarchar(50),
@SQUserID as nvarchar(20)
AS
BEGIN
SELECT COUNT(strUserName) FROM tblInvLocBinSec WHERE strLocName = @SQLocName AND strUserName = @SQUserID AND strBinCode = @SQBinLocCode;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetPartNumberByLotNumber] 
@SQLotNumber as nvarchar(100)
AS
BEGIN
SELECT strPartNumber as PartNumber FROM tblInvLotExt WHERE strLotNumber = @SQLotNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetQuantityByLotNumber] 
@SQLotNumber as nvarchar(100),
@SQLocName as nvarchar(10)
AS
BEGIN
SELECT decQty as Qty FROM tblInvLotExt WHERE strLotNumber = @SQLotNumber AND strLocName = @SQLocName;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRecoveryCostDataByDocID] 
@SQWIPDocID as nvarchar(50)
AS
BEGIN
SELECT tblManWIPCompOverhead.intGLNumber as GLNumber, tblAccounts.strDesc as CostDesc, 
tblManWIPCompOverhead.intDept as DeptID, tblManWIPCompOverhead.uidCenterID as CenterID, 
tblManWIPCompOverhead.decAmount as ManAmount, tblManWIPCompOverhead.decPostedAmount as PostedAmount, 
tblManWIPCompOverhead.decPostAmount as PostAmount, tblCenters.strLvl1 as CenterLv1, tblCenters.strLvl2 as CenterLv2, 
tblCenters.strLvl3 as CenterLv3, tblCenters.strLvl4 as CenterLv4, tblCenters.strLvl5 as CenterLv5, 
tblManWIPCompOverhead.strBOMNumber as BOMNumber,
tblManWIPCompOverhead.decIssueAmount as IssueAmount,
tblManWIPCompOverhead.decReturnAmount as ReturnAmount 
FROM tblManWIPCompOverhead INNER JOIN tblAccounts 
ON tblManWIPCompOverhead.intGLNumber = tblAccounts.intGLNumber 
LEFT JOIN tblCenters 
ON tblManWIPCompOverhead.uidCenterID = tblCenters.uidCenterID 
WHERE tblManWIPCompOverhead.strWIPDocID = @SQWIPDocID ORDER BY tblManWIPCompOverhead.intLineNo;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRecoveryCostDataByJobID] 
@SQJBDocID nvarchar(50),
@SQWCCode nvarchar(20)
AS
BEGIN
SELECT tblManJobCompOverhead.intLineNo as LineNumber, 
tblManJobCompOverhead.intGLNumber as GLNumber, 
tblAccounts.strDesc as CostDesc, 
ISNULL(tblManJobCompOverhead.intDept,0) as DeparmentID, 
tblManJobCompOverhead.uidCenterID as CenterID, 
tblManJobCompOverhead.decManAmount as ManAmount, 
tblCenters.strLvl1 as CenterLv1, 
tblCenters.strLvl2 as CenterLv2, 
tblCenters.strLvl3 as CenterLv3, 
tblCenters.strLvl4 as CenterLv4, 
tblCenters.strLvl5 as CenterLv5, 
ISNULL(SUM(tblManWIPCompOverhead.decPostAmount),0) AS PostedAmount, 
tblManJobCompOverhead.strBOMNumber as BOMNumber,
tblManJobCompOverhead.intDept as DeptID
FROM tblManJobCompOverhead INNER JOIN tblAccounts 
ON tblManJobCompOverhead.intGLNumber = tblAccounts.intGLNumber 
LEFT JOIN tblManWIP 
ON tblManJobCompOverhead.strJBDocID = tblManWIP.strJBDocID  AND tblManJobCompOverhead.strWCCode = tblManWIP.strWCCode 
LEFT JOIN tblCenters 
ON tblManJobCompOverhead.uidCenterID = tblCenters.uidCenterID 
LEFT JOIN tblManWIPCompOverhead 
ON tblManWIP.strWIPDocID = tblManWIPCompOverhead.strWIPDocID AND tblManJobCompOverhead.intLineNo = tblManWIPCompOverhead.intLineNo 
WHERE tblManJobCompOverhead.strJBDocID = @SQJBDocID AND tblManJobCompOverhead.strWCCode = @SQWCCode 
GROUP BY tblManJobCompOverhead.intLineNo, tblManJobCompOverhead.intGLNumber, 
tblAccounts.strDesc, tblManJobCompOverhead.intDept, 
tblManJobCompOverhead.uidCenterID, tblManJobCompOverhead.decManAmount, 
tblCenters.strLvl1, tblCenters.strLvl2, tblCenters.strLvl3, tblCenters.strLvl4, 
tblCenters.strLvl5, tblManJobCompOverhead.strBOMNumber 
ORDER BY tblManJobCompOverhead.intLineNo;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetRecoveryNextLineNumber] 
@SQstrJBDocID as nvarchar(50)
AS
BEGIN
SELECT ISNULL(MAX(intLineNo), 0) + 1
FROM tblManJobCompOverhead
WHERE strJBDocID = @SQstrJBDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetSerialNumberTrackingIDCount] 
@SQPartNumber as nvarchar(50),
@SQSerialNumber as nvarchar(100)
AS
BEGIN
SELECT COUNT(lngID) FROM tblSerialNumberTracking WHERE strPartNumber = @SQPartNumber AND strSerialNumber = @SQSerialNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetTopOneLotNumberByPartNumber] 
@SQPartNumber as nvarchar(50),
@SQLocName as nvarchar(10)
AS
BEGIN
SELECT TOP 1 strLotNumber as LotNumber 
FROM tblInvLotExt 
WHERE strPartNumber = @SQPartNumber AND strLocName = @SQLocName AND decQty > 0 
ORDER BY dteExpiryDate, dteUpdatedDate, strLotNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetTopOneSerialNumberByPartNumber]
@SQPartNumber as nvarchar(50),
@SQLocName as nvarchar(10)
AS
BEGIN
SELECT TOP 1 strSerialNumber as SerialNumber 
FROM tblInvSerialExt 
WHERE strPartNumber = @SQPartNumber AND strLocName = @SQLocName AND decQty > 0 
ORDER BY dteUpdatedDate, strSerialNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetWIPInvSerialNumbers] 
@SQDocNumber as nvarchar(50),
@SQLineNo as int
AS
BEGIN
SELECT tblManWIPCompInvSerial.strSerialNumber as SerialNumber, tblManWIPCompInvSerial.decQty as Quantity, 
tblManWIPCompInvSerial.strUnit as Unit, 
tblManWIPCompInvSerial.bitExpiryDate as IsExpiryDateExists, 
tblManWIPCompInvSerial.dteExpiryDate as ExpiryDate, 
tblManWIPCompInvSerial.intSerialLotType as SerialLotType,
tblManWIPCompInvSerial.lngBinID as BinId,
ISNULL((SELECT DISTINCT TYP.strInvSerialType FROM tblManWIPCompInvSerial SRL INNER JOIN tblManWIPCompInv DTL 
ON SRL.strWIPDocID = DTL.strWIPDocID AND SRL.intLineNo = DTL.intLineNo INNER JOIN tblInv INV 
ON DTL.strPartNumber = INV.strPartNumber INNER JOIN tblInvSerialTypes TYP 
ON INV.strInvSerialType = TYP.strInvSerialType 
WHERE SRL.strWIPDocID = tblManWIPCompInvSerial.strWIPDocID AND SRL.intLineNo = tblManWIPCompInvSerial.intLineNo),'') 
FROM tblManWIPCompInvSerial 
WHERE strWIPDocID = @SQDocNumber AND intLineNo = @SQLineNo ORDER BY lngID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetWIPPickerData] 
@SQStart as DateTime,
@SQEnd as DateTime,
@SQWCCode as nvarchar(40)
AS
BEGIN
if(LEN(@SQWCCode)>0)
begin
SELECT 
strWIPDocID as WIPDocID, 
strJBDocID as JobDocID, 
strWCCode as WCCode, 
dteJournalDate as JournalDate 
FROM tblManWIP 
WHERE (dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (strWCCode = @SQWCCode)
ORDER BY strWIPDocID;
end
else
begin
SELECT 
strWIPDocID as WIPDocID, 
strJBDocID as JobDocID, 
strWCCode as WCCode, 
dteJournalDate as JournalDate
FROM tblManWIP 
WHERE dteJournalDate BETWEEN @SQStart AND @SQEnd
ORDER BY strWIPDocID;
end
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetWorkCenterCodeByDocNumber]
@SQJBDocID as nvarchar(50)
AS
BEGIN
SELECT strWCCode as WCCode
FROM tblManJobOp
WHERE strJBDocID = @SQJBDocID
ORDER BY strWCCode;
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveAllCenterData] 
@SQuidCenterID as uniqueidentifier,
@SQlngJourID as bigint,
@SQintLineNum as int,
@SQdecAmount as money,
@SQdecDebits as money,
@SQdecCredits as money,
@SQstrComment as nvarchar(200),
@isTag as int
AS
BEGIN
if(@isTag = 1)
INSERT INTO tblCenterEnt (uidCenterID,lngJourID,intLineNum,decAmount,decDebits,decCredits,strComment) 
VALUES (@SQuidCenterID,@SQlngJourID,@SQintLineNum,@SQdecAmount,@SQdecDebits,@SQdecCredits,@SQstrComment);
else
INSERT INTO tblCenterEntLY (uidCenterID,lngJourID,intLineNum,decAmount,decDebits,decCredits,strComment) 
VALUES (@SQuidCenterID,@SQlngJourID,@SQintLineNum,@SQdecAmount,@SQdecDebits,@SQdecCredits,@SQstrComment);
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveManWIPCompInvData] 
@SQstrWIPDocID as nvarchar(50),
@SQintLineNo as int,
@SQstrPartNumber as nvarchar(50),
@SQstrLocation as nvarchar(10),
@SQdecBOMQty as money,
@SQdecPostedQty as money,
@SQdecPostQty as money,
@SQdecAmount as money,
@SQdecPostedAmount as money,
@SQdecPostAmount as money,
@SQstrBOMNumber as nvarchar(50),
@SQintType as int,
@SQdecReturnQty as money,
@SQstrDesc as nvarchar(500)
AS
BEGIN
INSERT INTO tblManWIPCompInv 
(strWIPDocID,intLineNo,strPartNumber,strLocation,decBOMQty,decPostedQty,decPostQty,decAmount,decPostedAmount,
decPostAmount,strBOMNumber,intType,decReturnQty,strDesc) 
VALUES (@SQstrWIPDocID,@SQintLineNo,@SQstrPartNumber,@SQstrLocation,@SQdecBOMQty,@SQdecPostedQty,@SQdecPostQty,
@SQdecAmount,@SQdecPostedAmount,@SQdecPostAmount,@SQstrBOMNumber,@SQintType,@SQdecReturnQty,@SQstrDesc);
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveManWIPCompInvSerialData] 
@SQDocID as nvarchar(50),
@SQlngWIPID as bigint,
@SQintLineNo as int,
@SQstrSerialNumber as nvarchar(100),
@SQdecQty as money,
@SQstrUnit as nvarchar(15),
@SQbitExpiryDate as bit,
@SQdteExpiryDate as smalldatetime,
@SQintSerialLotType as int,
@SQlngBinId as bigint
AS
BEGIN
INSERT INTO tblManWIPCompInvSerial 
(strWIPDocID,lngWIPID,intLineNo,strSerialNumber,decQty,strUnit,bitExpiryDate,dteExpiryDate,
intSerialLotType,lngBinId) 
VALUES (@SQDocID,@SQlngWIPID,@SQintLineNo,@SQstrSerialNumber,@SQdecQty,@SQstrUnit,@SQbitExpiryDate,
@SQdteExpiryDate,@SQintSerialLotType,@SQlngBinId);
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveManWIPCompInvSerialOutSeqData] 
@SQstrWIPDocID as nvarchar(50)
,@SQstrJBDocID as nvarchar(50)
,@SQstrWCCode as nvarchar(20)
,@SQdteSystemDate as smalldatetime
,@SQstrUserName as nvarchar(20)
,@SQintType as int
,@SQintLineNo as int
,@SQstrPartNumber as nvarchar(50)
,@SQstrLocName as nvarchar(10)
,@SQstrSerialNumber as nvarchar(100)
,@SQdecQty as money
,@SQbitExpiryDate as bit
,@SQdteExpiryDate as smalldatetime
AS
BEGIN
INSERT INTO tblManWIPCompInvSerialOutSeq (
strWIPDocID
,strJBDocID
,strWCCode
,dteSystemDate
,strUserName
,intType
,intLineNo
,strPartNumber
,strLocName
,strSerialNumber
,decQty
,bitExpiryDate
,dteExpiryDate
)
VALUES (
@SQstrWIPDocID
,@SQstrJBDocID
,@SQstrWCCode
,@SQdteSystemDate
,@SQstrUserName
,@SQintType
,@SQintLineNo
,@SQstrPartNumber
,@SQstrLocName
,@SQstrSerialNumber
,@SQdecQty
,@SQbitExpiryDate
,@SQdteExpiryDate
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SaveManWIPCompLabData] 
@SQstrWIPDocID as nvarchar(50)
,@SQintLineNo as int
,@SQstrLabCode as nvarchar(20)
,@SQdecVariableHours as money
,@SQdecVariableRate as money
,@SQdecSetupHours as money
,@SQdecSetupRate as money
,@SQdecBreakdownHours as money
,@SQdecBreakdownRate as money
,@SQdecAmount as money
,@SQdecPostedVariableHours as money
,@SQdecPostedSetupHours as money
,@SQdecPostedBreakdownHours as money
,@SQdecPostedAmount as money
,@SQdecPostVariableHours as money
,@SQdecPostSetupHours as money
,@SQdecPostBreakdownHours as money
,@SQdecPostAmount as money
,@SQstrBOMNumber as nvarchar(50)
,@SQintType as int
,@SQdecReturnVariableHours as money
,@SQdecReturnSetupHours as money
,@SQdecReturnBreakdownHours as money
AS
BEGIN
INSERT INTO tblManWIPCompLab (
strWIPDocID
,intLineNo
,strLabCode
,decVariableHours
,decVariableRate
,decSetupHours
,decSetupRate
,decBreakdownHours
,decBreakdownRate
,decAmount
,decPostedVariableHours
,decPostedSetupHours
,decPostedBreakdownHours
,decPostedAmount
,decPostVariableHours
,decPostSetupHours
,decPostBreakdownHours
,decPostAmount
,strBOMNumber
,intType
,decReturnVariableHours
,decReturnSetupHours
,decReturnBreakdownHours
)
VALUES (
@SQstrWIPDocID
,@SQintLineNo
,@SQstrLabCode
,@SQdecVariableHours
,@SQdecVariableRate
,@SQdecSetupHours
,@SQdecSetupRate
,@SQdecBreakdownHours
,@SQdecBreakdownRate
,@SQdecAmount
,@SQdecPostedVariableHours
,@SQdecPostedSetupHours
,@SQdecPostedBreakdownHours
,@SQdecPostedAmount
,@SQdecPostVariableHours
,@SQdecPostSetupHours
,@SQdecPostBreakdownHours
,@SQdecPostAmount
,@SQstrBOMNumber
,@SQintType
,@SQdecReturnVariableHours
,@SQdecReturnSetupHours
,@SQdecReturnBreakdownHours
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SaveManWIPCompMachData] 
@SQstrWIPDocID as nvarchar(50)
,@SQintLineNo as int
,@SQstrMachCode as nvarchar(20)
,@SQdecVariableHours as money
,@SQdecVariableRate as money
,@SQdecSetupHours as money
,@SQdecSetupRate as money
,@SQdecBreakdownHours as money
,@SQdecBreakdownRate as money
,@SQdecAmount as money
,@SQdecPostedVariableHours as money
,@SQdecPostedSetupHours as money
,@SQdecPostedBreakdownHours as money
,@SQdecPostedAmount as money
,@SQdecPostVariableHours as money
,@SQdecPostSetupHours as money
,@SQdecPostBreakdownHours as money
,@SQdecPostAmount as money
,@SQstrBOMNumber as nvarchar(50)
,@SQintType as int
,@SQdecReturnVariableHours as money
,@SQdecReturnSetupHours as money
,@SQdecReturnBreakdownHours as money
AS
BEGIN
INSERT INTO tblManWIPCompMach (
strWIPDocID
,intLineNo
,strMachCode
,decVariableHours
,decVariableRate
,decSetupHours
,decSetupRate
,decBreakdownHours
,decBreakdownRate
,decAmount
,decPostedVariableHours
,decPostedSetupHours
,decPostedBreakdownHours
,decPostedAmount
,decPostVariableHours
,decPostSetupHours
,decPostBreakdownHours
,decPostAmount
,strBOMNumber
,intType
,decReturnVariableHours
,decReturnSetupHours
,decReturnBreakdownHours
)
VALUES (
@SQstrWIPDocID
,@SQintLineNo
,@SQstrMachCode
,@SQdecVariableHours
,@SQdecVariableRate
,@SQdecSetupHours
,@SQdecSetupRate
,@SQdecBreakdownHours
,@SQdecBreakdownRate
,@SQdecAmount
,@SQdecPostedVariableHours
,@SQdecPostedSetupHours
,@SQdecPostedBreakdownHours
,@SQdecPostedAmount
,@SQdecPostVariableHours
,@SQdecPostSetupHours
,@SQdecPostBreakdownHours
,@SQdecPostAmount
,@SQstrBOMNumber
,@SQintType
,@SQdecReturnVariableHours
,@SQdecReturnSetupHours
,@SQdecReturnBreakdownHours
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SaveManWIPCompOverhead] 
@SQstrWIPDocID as nvarchar(50)
,@SQintLineNo as int
,@SQintGLNumber as nvarchar(30)
,@SQintDept as int
,@SQuidCenterID as uniqueidentifier
,@SQdecAmount as money
,@SQdecPostedAmount as money
,@SQdecPostAmount as money
,@SQstrBOMNumber as nvarchar(50)
,@SQintType as int
,@SQdecIssueAmount as money
,@SQdecReturnAmount as money
AS
BEGIN
INSERT INTO tblManWIPCompOverhead (
strWIPDocID
,intLineNo
,intGLNumber
,intDept
,uidCenterID
,decAmount
,decPostedAmount
,decPostAmount
,strBOMNumber
,intType
,decIssueAmount
,decReturnAmount
)
VALUES (
@SQstrWIPDocID
,@SQintLineNo
,@SQintGLNumber
,@SQintDept
,@SQuidCenterID
,@SQdecAmount
,@SQdecPostedAmount
,@SQdecPostAmount
,@SQstrBOMNumber
,@SQintType
,@SQdecIssueAmount
,@SQdecReturnAmount
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveNewInventoryData] 
@SQstrJBDocID as nvarchar(50),
@SQstrWCCode as nvarchar(20),
@SQintLineNo as int,
@SQstrPartNumber as nvarchar(50),
@SQstrLocation as nvarchar(10),
@SQdecQty as money,
@SQdecManQty as money,
@SQdecPPUnit as money,
@SQdecManAmount as money,
@SQstrBOMNumber as nvarchar(50),
@SQstrDesc as nvarchar(500)
AS
BEGIN
INSERT INTO tblManJobCompInv 
VALUES (@SQstrJBDocID,@SQstrWCCode,@SQintLineNo,@SQstrPartNumber,@SQstrLocation,@SQdecQty,@SQdecManQty,
@SQdecPPUnit,@SQdecManAmount,@SQstrBOMNumber,@SQstrDesc);
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveNewLabourData] 
@SQstrJBDocID as nvarchar(50),
@SQstrWCCode as nvarchar(20),
@SQintLineNo as int,
@SQstrLabCode as nvarchar(20),
@SQdecVariableHours as money,
@SQdecVariableRate as money,
@SQdecSetupHours as money,
@SQdecSetupRate as money,
@SQdecBreakdownHours as money,
@SQdecBreakdownRate as money,
@SQdecManAmount as money,
@SQdecManVariableHours as money,
@SQstrBOMNumber as nvarchar(50)
AS
BEGIN
INSERT INTO tblManJobCompLab 
VALUES (@SQstrJBDocID,@SQstrWCCode,@SQintLineNo,@SQstrLabCode,@SQdecVariableHours,@SQdecVariableRate,
@SQdecSetupHours,@SQdecSetupRate,@SQdecBreakdownHours,@SQdecBreakdownRate,@SQdecManAmount,
@SQdecManVariableHours,@SQstrBOMNumber);
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SaveNewMachData] 
@SQstrJBDocID as nvarchar(50)
,@SQstrWCCode as nvarchar(20)
,@SQintLineNo as int
,@SQstrMachCode as nvarchar(20)
,@SQdecVariableHours as money
,@SQdecVariableRate as money
,@SQdecSetupHours as money
,@SQdecSetupRate as money
,@SQdecBreakdownHours as money
,@SQdecBreakdownRate as money
,@SQdecManAmount as money
,@SQdecManVariableHours as money
,@SQstrBOMNumber as nvarchar(50)
AS
BEGIN
INSERT INTO tblManJobCompMach
(strJBDocID 
,strWCCode
,intLineNo
,strMachCode
,decVariableHours
,decVariableRate
,decSetupHours
,decSetupRate
,decBreakdownHours
,decBreakdownRate
,decManAmount
,decManVariableHours
,strBOMNumber)
VALUES (
@SQstrJBDocID
,@SQstrWCCode
,@SQintLineNo
,@SQstrMachCode
,@SQdecVariableHours
,@SQdecVariableRate
,@SQdecSetupHours
,@SQdecSetupRate
,@SQdecBreakdownHours
,@SQdecBreakdownRate
,@SQdecManAmount
,@SQdecManVariableHours
,@SQstrBOMNumber
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveNewRecoveryCostData] 
@SQstrJBDocID as nvarchar(50)
,@SQstrWCCode as nvarchar(20)
,@SQintLineNo as int
,@SQintGLNumber as nvarchar(30)
,@SQintDept as int
,@SQuidCenterID as uniqueidentifier
,@SQdecAmount as money
,@SQdecManAmount as money
,@SQstrBOMNumber as nvarchar(50)
AS
BEGIN
INSERT INTO tblManJobCompOverhead
VALUES (
@SQstrJBDocID
,@SQstrWCCode
,@SQintLineNo
,@SQintGLNumber
,@SQintDept
,@SQuidCenterID
,@SQdecAmount
,@SQdecManAmount
,@SQstrBOMNumber
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveSerialNumberTrackingData] 
@SQstrPartNumber as nvarchar(50),
@SQstrSerialNumber as nvarchar(100),
@SQstrUserName as nvarchar(20),
@SQdteUpdatedDate as smalldatetime,
@SQintType as tinyint,
@SQstrDocID as nvarchar(50),
@SQintLineNo as int,
@SQdecQty as money,
@SQstrLocation as nvarchar(10),
@SQintStatus as tinyint,
@SQbitExpiryDate as bit,
@SQdteExpiryDate as smalldatetime,
@SQlngBinId as bigint
AS
BEGIN
INSERT INTO tblSerialNumberTracking 
(strPartNumber,strSerialNumber,strUserName,dteUpdatedDate,intType,strDocID,intLineNo,decQty,strLocation,
intStatus,bitExpiryDate,dteExpiryDate,lngBinId) 
VALUES (@SQstrPartNumber,@SQstrSerialNumber,@SQstrUserName,@SQdteUpdatedDate,@SQintType,@SQstrDocID,@SQintLineNo,
@SQdecQty,@SQstrLocation,@SQintStatus,@SQbitExpiryDate,@SQdteExpiryDate,@SQlngBinId);
END
GO

----------------------------------------------------
CREATE PROCEDURE [UpdateTypeByJobID] 
@SQJBDocID as nvarchar(50),
@SQType as int
AS
BEGIN
UPDATE tblManJob 
SET intType = @SQType 
WHERE strJBDocID = @SQJBDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateWIPNumber] 
AS
BEGIN
UPDATE tblLastIDs 
SET lngWPNumber = (SELECT ISNULL(MAX(lngWPNumber), 0) + 1 FROM tblLastIDs);
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManWorkCentres]
AS
BEGIN
SELECT strWCCode as WorkCentreCode from tblManWorkCentre where bitInactive = 0 Order By strWCCode;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetClosedManJobDataByDate](  
@SQTypeRV int,  
@SQStart DateTime,  
@SQEnd DateTime,  
@SQType1 int,  
@SQType2 int  
)  
AS  
BEGIN  
SELECT tblManJob.strJBDocID as JBDocID, 
tblManJob.dteJournalDate as JournalDate, 
CASE WHEN tblManJob.intType = @SQTypeRV THEN 'REV-' + tblManJobReversed.strJBDocID ELSE tblManJob.strReference END AS Reference, tblManJob.strCustName as CustomerNumber, 
tblManJob.strWCCode as WorkCenter, 
tblManJob.intType as [Type] 
FROM tblManJob LEFT JOIN tblManJobReversed ON tblManJob.strJBDocID = tblManJobReversed.strJBDocIDRev 
WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQEnd  
AND (tblManJob.intType = @SQType1 OR tblManJob.intType = @SQType2)  
ORDER BY tblManJob.strJBDocID  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [GetCountOfInvSerialLotType] 
AS
BEGIN
SELECT COUNT(strInvSerialType) FROM tblInvSerialTypes
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetCountOfJobID] 
@SQDocID as nvarchar(50),
@SQPartNumber as nvarchar(50)
AS
BEGIN
SELECT COUNT(strJBDocID)
FROM tblManJobByProd
WHERE strJBDocID = @SQDocID
AND strPartNumber = @SQPartNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetCountOflngIDByFileName] 
@SQFileName as nvarchar(250)
AS
BEGIN
SELECT COUNT(lngID) FROM tblManJobClose WHERE strFileName = @SQFileName
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetCountOfUserName] 
@SQLocName as nvarchar(10),
@SQBinLocCode as nvarchar(50)
AS
BEGIN
SELECT COUNT(strUserName)
FROM tblInvLocBinSec
WHERE strLocName = @SQLocName
AND strBinCode = @SQBinLocCode;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetCountOfUserNameByUserID]
@SQLocName as nvarchar(10),
@SQBinLocCode as nvarchar(50),
@SQUserID as nvarchar(20)
AS
BEGIN
SELECT COUNT(strUserName)
FROM tblInvLocBinSec
WHERE strLocName = @SQLocName
AND strUserName = @SQUserID
AND strBinCode = @SQBinLocCode;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvBinData] 
@SQstrInvDocID as nvarchar(50)
AS
BEGIN
SELECT tblManJobCloseBin.lngID as ID
,tblManJobCloseBin.decQty as IssueQty
,tblManJobCloseBin.intLineNo as LineNumber
,tblManJobCloseBin.lngBinID as BinId
,tblManJobCloseBin.strInvDocID as DocId
,tblInvLocBin.strLocName as LocName
,strBinCode as BinCode
FROM tblManJobCloseBin
INNER JOIN tblInvLocBin ON tblManJobCloseBin.lngBinID = tblInvLocBin.lngID
WHERE strInvDocID = @SQstrInvDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvBinDataByBinCode] 
@SQstrPartNumber as nvarchar(50),
@SQstrLocName as nvarchar(10),
@SQstrBinCode as nvarchar(50)
AS
BEGIN
SELECT tblInvLocBin.strBinCode AS BinCode
,tblInvLocBin.lngId AS BinId
FROM tblInvLocBin
INNER JOIN tblInvExtBin ON tblInvLocBin.lngId = tblInvExtBin.lngBinId
WHERE tblInvExtBin.strPartNumber = @SQstrPartNumber
AND tblInvExtBin.strLocName = @SQstrLocName
AND tblInvExtBin.lngBinID = (
SELECT BIN.lngID
FROM tblInvLocBin BIN
WHERE BIN.strLocName = @SQstrLocName
AND BIN.strBinCode = @SQstrBinCode
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvDataByPartNum]
@SQstritem as nvarchar(50)
AS
BEGIN
SELECT strPartNumber as PartNumber
,strCategory as Category
,strSubCategory as SubCategory
FROM tblinv
WHERE strPartNumber = @SQstritem;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvPriceListdata] 
@SQstrPartNumber as nvarchar(50)
AS
BEGIN
SELECT tblInvPrice.strPricelist AS Pricelist
,tblPricelists.intPricelistType AS PricelistType
,tblInvPrice.decSelling AS SellingPrice
,ISNULL((
SELECT decMarkup
FROM tblPricelistsCat
WHERE strPricelist = tblPricelists.strPricelist
AND strCategory = tblInv.strCategory
AND uidPriceBasedID = tblPricelists.uidPriceBasedID
), 0) AS MarkupPer
,tblPricelists.intRoundPrices AS RoundPrices
,tblPricelists.bitUpdateSellingPrice AS IsUpdateSellingPrice
,tblPricelists.bitOnlySellingPriceIncrease AS IsOnlySellingPriceIncrease
,tblInv.decSellFromStock AS SellFromStock
,tblInvPrice.uidPriceBasedID AS PriceBaseId
,tblPriceData.bitPriceIncl AS IsPriceIncl
,ISNULL(tblTaxCodeExt.decRate, 0) AS TaxRate
,ISNULL(uidLinkPricelistId, CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER)) AS uidLinkPricelistId
FROM tblInvPrice
INNER JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist
AND tblInvPrice.uidPriceBasedID = tblPricelists.uidPriceBasedID
INNER JOIN tblPriceData ON tblPricelists.strPricelist = tblPriceData.strPricelist
INNER JOIN tblInv ON tblInvPrice.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblTaxCodeExt ON tblPriceData.strTaxCode = tblTaxCodeExt.strTaxCode
WHERE tblInvPrice.strPartNumber = @SQstrPartNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvSerExtData] 
@SQstrPartNumber as nvarchar(50),
@SQstrSerialNumber as nvarchar(100)
AS
BEGIN
SELECT intStatus as [Status]
,strLocName as LocationName
FROM tblInvSerialExt
WHERE strPartNumber = @SQstrPartNumber
AND strSerialNumber = @SQstrSerialNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvSerTypesData] 
@SQPart as nvarchar(50),
@SQBarCode as nvarchar(300)
AS
BEGIN
SELECT bitInvSerialType as InventorySerialNumber
FROM tblInv
WHERE (
strPartNumber = @SQPart
OR strBarCode = @SQBarCode
OR strBarCode2 = @SQBarCode
)
AND intType = 1
AND bitOtherCmp = 0;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManJobByProdDataByJobID]   
@SQJBDocID as nvarchar(50)  
AS  
BEGIN  
SELECT tblManJobByProd.strPartNumber as PartNumber  
,tblManJobByProd.strDesc as [Desc]
,tblManJobByProd.strLocation as Location  
,tblManJobByProd.decManQty as ManQty  
,tblInv.strStockUnit as StockUnit  
,tblInv.decLastPPUnit as LastPPUnit  
,tblInv.decBuyToStock as BuyToStock  
,tblInvExt.decValue as InvValue  
,tblInvExt.decValue as [Value]  
,tblInvExt.decOnHand as OnHand  
,tblInv.decStandardCost as StandardCost  
,ISNULL((  
SELECT SUM(tblInvTrackingDT.decQty)  
FROM tblInvTrackingDT  
WHERE tblInvTrackingDT.strSource = @SQJBDocID  
AND tblInvTrackingDT.strPartNumber = tblInv.strPartNumber  
), 0)  as Qty
,tblInv.bitInvSerialType as IsSerialType  
,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) as IsSerialDimension  
,ISNULL(tblInvSerialTypes.bitMethod, 0) as IsMethod  
FROM tblManJobByProd  
INNER JOIN tblInvExt ON tblManJobByProd.strPartNumber = tblInvExt.strPartNumber  
AND tblManJobByProd.strLocation = tblInvExt.strLocName  
INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType  
WHERE strJBDocID = @SQJBDocID;  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManJobCloseDataByJobID] 
@SQstrJBDocId as nvarchar(50),
@SQlngJourID as bigint
AS
BEGIN
SELECT tblManJobClose.strJBDocID as JBDocID
,tblManJobClose.dteJournalDate as JournalDate
,tblManJobClose.intType as [Type]
,tblManJobClose.strPartNumber as PartNumber
,tblInv.strDesc as [Desc]
,tblManJobByProd.strLocation as [Location]
,tblInv.strStockUnit as Unit
,tblManJobClose.decManQty as ToManufacture
,tblManJobClose.decManQtyClosed as ManQtyClosed
,tblManJobClose.decManUnitCost as UnitCost
,tblManJobClose.decManAmount as ManufactureValue
,tblManJobClose.lngJourID as lngJourID
,tblManJobClose.decLRC as LastReceivedCost
,tblManJobClose.decActualCost as ActualCost
,tblManJobClose.decStandardCost as StandardCost
,tblManJobClose.bitManStandardCost as CloseJobStandardCost
,tblInv.bitInvSerialType as InventorySerialNumber
,ISNULL(tblInvSerialTypes.bitMethod, 0) as Method
,ISNULL(STUFF((
SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX))
FROM tblInvLocBin
WHERE tblInvLocBin.lngId IN (
SELECT lngBinId
FROM tblManJobCloseBin
WHERE tblManJobCloseBin.strInvDocID = tblManJobClose.strJBDocID
)
FOR XML PATH('')
), 1, 1, ''), '') AS BinCode
,ISNULL(STUFF((
SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(MAX))
FROM tblInvLocBin
WHERE tblInvLocBin.lngId IN (
SELECT lngBinId
FROM tblManJobCloseBin
WHERE tblManJobCloseBin.strInvDocID = tblManJobClose.strJBDocID
)
FOR XML PATH('')
), 1, 1, ''), '') AS BinId
FROM tblManJobClose
INNER JOIN tblManJobByProd ON tblManJobClose.strJBDocID = tblManJobByProd.strJBDocID
AND tblManJobClose.strPartNumber = tblManJobByProd.strPartNumber
INNER JOIN tblInv ON tblManJobClose.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblManJobClose.strJBDocId = @SQstrJBDocId
AND tblManJobClose.lngJourID = @SQlngJourID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetManJobCloseDataByJourID] 
@SQJournalID as bigint
AS
BEGIN
SELECT tblManJobClose.strJBDocID as JBDocID
,tblManJobClose.dteJournalDate as JournalDate
,tblManJobClose.intType as [Type]
,tblManJobClose.strPartNumber as PartNumber
,tblInv.strDesc as [Desc]
,tblManJobByProd.strLocation as [Location]
,tblInv.strStockUnit as Unit
,tblManJobClose.decManQty as ManQty
,tblManJobClose.decManQtyClosed as ManQtyClosed
,tblManJobClose.decManUnitCost as UnitCost
,tblManJobClose.decManAmount as ManufactureValue
,tblManJobClose.lngJourID as lngJourID
,tblManJobClose.decLRC as LastReceivedCost
,tblManJobClose.decActualCost as ActualCost
,tblManJobClose.decStandardCost as StandardCost
,tblManJobClose.bitManStandardCost as CloseJobStandardCost
,tblInv.bitInvSerialType as InventorySerialNumber
,ISNULL(tblInvSerialTypes.bitMethod, 0) as Method
,ISNULL(STUFF((
SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX))
FROM tblInvLocBin
WHERE tblInvLocBin.lngId IN (
SELECT lngBinId
FROM tblManJobCloseBin
WHERE tblManJobCloseBin.strInvDocID = tblManJobClose.strJBDocID
)
FOR XML PATH('')
), 1, 1, ''), '') AS BinCode
,ISNULL(STUFF((
SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(MAX))
FROM tblInvLocBin
WHERE tblInvLocBin.lngId IN (
SELECT lngBinId
FROM tblManJobCloseBin
WHERE tblManJobCloseBin.strInvDocID = tblManJobClose.strJBDocID
)
FOR XML PATH('')
), 1, 1, ''), '') AS BinId
FROM tblManJobClose
INNER JOIN tblManJobByProd ON tblManJobClose.strJBDocID = tblManJobByProd.strJBDocID
AND tblManJobClose.strPartNumber = tblManJobByProd.strPartNumber
INNER JOIN tblInv ON tblManJobClose.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE lngJourID = @SQJournalID;
END
GO


----------------------------------------------------
CREATE PROCEDURE [GetManJobTypeValue] 
@SQJBDocID as nvarchar(50)
AS
BEGIN
SELECT intType as Type
FROM tblManJob
WHERE strJBDocID = @SQJBDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetManPromtekIntegrationValue] 
AS
BEGIN
SELECT bitManPromtekRead FROM tblCoOpts
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManWIPCompInvAmountByJobID] 
@SQJBDocID as nvarchar(50)
AS
BEGIN
SELECT ISNULL(SUM(decManAmount), 0) as ManAmount
,ISNULL((
SELECT ISNULL(SUM(tblManWIPCompInv.decPostAmount), 0)
FROM tblManWIP
INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID
WHERE tblManWIP.strJBDocID = @SQJBDocID
), 0) as PostAmount
FROM tblManJobCompInv
WHERE strJBDocID = @SQJBDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManWIPCompLabAmountByJobID] 
@SQJBDocID as nvarchar(50)
AS
BEGIN
SELECT ISNULL(SUM(decManAmount), 0) as ManAmount
,ISNULL((
SELECT ISNULL(SUM(tblManWIPCompLab.decPostAmount), 0) 
FROM tblManWIP
INNER JOIN tblManWIPCompLab ON tblManWIP.strWIPDocID = tblManWIPCompLab.strWIPDocID
WHERE tblManWIP.strJBDocID = @SQJBDocID
), 0) as PostAmount
FROM tblManJobCompLab
WHERE strJBDocID = @SQJBDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManWIPCompMachAmountByJobID] 
@SQJBDocID as nvarchar(50)
AS
BEGIN
SELECT ISNULL(SUM(decManAmount), 0) as ManAmount
,ISNULL((
SELECT ISNULL(SUM(tblManWIPCompMach.decPostAmount), 0) 
FROM tblManWIP
INNER JOIN tblManWIPCompMach ON tblManWIP.strWIPDocID = tblManWIPCompMach.strWIPDocID
WHERE tblManWIP.strJBDocID = @SQJBDocID
), 0) as PostAmount
FROM tblManJobCompMach
WHERE strJBDocID = @SQJBDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManWIPCompOverheadAmountByJobID] 
@SQJBDocID as nvarchar(50)
AS
BEGIN
SELECT ISNULL(SUM(decManAmount), 0) as ManAmount
,ISNULL((
SELECT ISNULL(SUM(tblManWIPCompOverhead.decPostAmount), 0) 
FROM tblManWIP
INNER JOIN tblManWIPCompOverhead ON tblManWIP.strWIPDocID = tblManWIPCompOverhead.strWIPDocID
WHERE tblManWIP.strJBDocID = @SQJBDocID
), 0) as PostAmount
FROM tblManJobCompOverhead
WHERE strJBDocID = @SQJBDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetNavNextNumber]   
@SQJournalID as bigint  
AS  
BEGIN  
SELECT MIN(lngJourID) FROM tblManJobClose WHERE lngJourID < @SQJournalID;  
END 
GO

----------------------------------------------------
CREATE PROCEDURE [GetNavPreviousNumber]   
@SQJournalID as bigint  
AS  
BEGIN  
SELECT MAX(lngJourID) FROM tblManJobClose WHERE lngJourID > @SQJournalID  
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetPartNumberByLocName]
@SQstrloc as nvarchar(10),
@SQstrbin as nvarchar(50)
AS
BEGIN
SELECT IEB.strPartNumber as PartNumber
FROM tblInvExtBin IEB
INNER JOIN tblInvLocBin LB ON IEB.lngBinID = LB.lngID
INNER JOIN tblInv inv ON IEB.strPartNumber = inv.strPartNumber
WHERE IEB.strLocName = @SQstrloc
AND LB.strBinCode = @SQstrbin
AND inv.intType = 1
AND IEB.decOnHand > 0;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPostAmountByJobID] 
@SQJobNumber as nvarchar(50)
AS
BEGIN
SELECT ISNULL(SUM(Z.decPostAmount), 0) AS PostAmount
FROM (
SELECT SUM(tblManWIPCompInv.decPostAmount) AS decPostAmount
FROM tblManWIP
INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID
WHERE tblManWIP.strJBDocID = @SQJobNumber
UNION ALL
SELECT SUM(tblManWIPCompLab.decPostAmount) AS decPostAmount
FROM tblManWIP
INNER JOIN tblManWIPCompLab ON tblManWIP.strWIPDocID = tblManWIPCompLab.strWIPDocID
WHERE tblManWIP.strJBDocID = @SQJobNumber
UNION ALL
SELECT SUM(tblManWIPCompMach.decPostAmount) AS decPostAmount
FROM tblManWIP
INNER JOIN tblManWIPCompMach ON tblManWIP.strWIPDocID = tblManWIPCompMach.strWIPDocID
WHERE tblManWIP.strJBDocID = @SQJobNumber
UNION ALL
SELECT SUM(tblManWIPCompOverhead.decPostAmount) AS decPostAmount
FROM tblManWIP
INNER JOIN tblManWIPCompOverhead ON tblManWIP.strWIPDocID = tblManWIPCompOverhead.strWIPDocID
WHERE tblManWIP.strJBDocID = @SQJobNumber
UNION ALL
SELECT SUM(decManAmount * - 1)
FROM tblManJobClose
WHERE strJBDocID = @SQJobNumber
) Z;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetPostAmountByPartNumber]
@SQJobNumber as nvarchar(50),
@SQPartNumber as nvarchar(50)
AS
BEGIN
SELECT SUM(Z.decPostAmount) AS PostAmount
FROM (
SELECT SUM(tblManWIPCompInv.decPostAmount) AS decPostAmount
FROM tblManWIP
INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID
WHERE tblManWIP.strJBDocID = @SQJobNumber
AND strBOMNumber = @SQPartNumber
UNION ALL
SELECT SUM(tblManWIPCompLab.decPostAmount) AS decPostAmount
FROM tblManWIP
INNER JOIN tblManWIPCompLab ON tblManWIP.strWIPDocID = tblManWIPCompLab.strWIPDocID
WHERE tblManWIP.strJBDocID = @SQJobNumber
AND strBOMNumber = @SQPartNumber
UNION ALL
SELECT SUM(tblManWIPCompMach.decPostAmount) AS decPostAmount
FROM tblManWIP
INNER JOIN tblManWIPCompMach ON tblManWIP.strWIPDocID = tblManWIPCompMach.strWIPDocID
WHERE tblManWIP.strJBDocID = @SQJobNumber
AND strBOMNumber = @SQPartNumber
UNION ALL
SELECT SUM(tblManWIPCompOverhead.decPostAmount) AS decPostAmount
FROM tblManWIP
INNER JOIN tblManWIPCompOverhead ON tblManWIP.strWIPDocID = tblManWIPCompOverhead.strWIPDocID
WHERE tblManWIP.strJBDocID = @SQJobNumber
AND strBOMNumber = @SQPartNumber
UNION ALL
SELECT SUM(decManAmount * - 1)
FROM tblManJobClose
WHERE strJBDocID = @SQJobNumber
AND strPartNumber = @SQPartNumber
) Z;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetPricelistItemDetails] 
@SqlType2 as int,
@SqlType4 as int,
@SqlPriceLevelType as nvarchar(20),
@SqlPartNumber as nvarchar(50),
@SqlPriceBaseId as uniqueidentifier,
@SqlPricelist as nvarchar(50)
AS
BEGIN
SELECT intPricelistMasterId as PricelistMasterId
,uidPriceBasedID as PriceBasedID
,strPricelist as Pricelist
,intType as [Type]
,strPriceLevelType as PriceLevelType
,(
CASE 
WHEN (
intType = @SqlType2
OR intType = @SqlType4
)
AND strPriceLevelType = @SqlPriceLevelType
THEN decMarkupPrice
ELSE (
SELECT tblPricelistsItems.decMarkupPrice
FROM tblPricelistsItems
INNER JOIN tblPricelistsItemsMaster ON tblPricelistsItemsMaster.intPricelistMasterId = tblPricelistsItems.intPricelistMasterId
AND tblPricelistsItems.strPartNumber = @SqlPartNumber
AND tblPricelistsItemsMaster.uidPriceBasedID = @SqlPriceBaseId
AND tblPricelistsItemsMaster.strPricelist = @SqlPricelist
)
END
) AS MarkupPrice
,(
CASE 
WHEN (
intType = @SqlType2
OR intType = @SqlType4
)
AND strPriceLevelType = @SqlPriceLevelType
THEN strPriceLevel
ELSE (
SELECT tblPricelistsItems.strPriceLevel
FROM tblPricelistsItems
INNER JOIN tblPricelistsItemsMaster ON tblPricelistsItemsMaster.intPricelistMasterId = tblPricelistsItems.intPricelistMasterId
AND tblPricelistsItems.strPartNumber = @SqlPartNumber
AND tblPricelistsItemsMaster.uidPriceBasedID = @SqlPriceBaseId
AND tblPricelistsItemsMaster.strPricelist = @SqlPricelist
)
END
) AS PriceLevel
FROM tblPricelistsItemsMaster
WHERE uidPriceBasedID = @SqlPriceBaseId
AND strPricelist = @SqlPricelist;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPricelistItemDetailsData] 
@SqlType2 as int,
@SqlType4 as int,
@SqlPriceLevelType as nvarchar(20),
@SqlPartNumber as nvarchar(50),
@SqlPriceBaseId as uniqueidentifier,
@SqlPricelist as nvarchar(50),
@IsCategory as bit = 1
AS
BEGIN
if(@IsCategory=1)
BEGIN
SELECT intPricelistMasterId as PricelistMasterId
,uidPriceBasedID as PriceBasedID
,strPricelist as Pricelist
,intType as [Type]
,strPriceLevelType as PriceLevelType
,(
CASE 
WHEN (
intType = @SqlType2
OR intType = @SqlType4
)
AND strPriceLevelType = @SqlPriceLevelType
THEN decMarkupPrice
ELSE (
SELECT tblPricelistsLinkCategory.decMarkupPrice
FROM tblPricelistsLinkCategory
INNER JOIN tblPricelistsItemsMaster ON tblPricelistsItemsMaster.intPricelistMasterId = tblPricelistsLinkCategory.intPricelistMasterId
INNER JOIN tblInv ON tblPricelistsLinkCategory.strCategory = tblInv.strCategory
AND tblInv.strPartNumber = @SqlPartNumber
AND tblPricelistsItemsMaster.uidPriceBasedID = @SqlPriceBaseId
AND tblPricelistsItemsMaster.strPricelist = @SqlPricelist
)
END
) AS MarkupPrice
,(
CASE 
WHEN (
intType = @SqlType2
OR intType = @SqlType4
)
AND strPriceLevelType = @SqlPriceLevelType
THEN strPriceLevel
ELSE (
SELECT tblPricelistsLinkCategory.strPriceLevel
FROM tblPricelistsLinkCategory
INNER JOIN tblPricelistsItemsMaster ON tblPricelistsItemsMaster.intPricelistMasterId = tblPricelistsLinkCategory.intPricelistMasterId
INNER JOIN tblInv ON tblPricelistsLinkCategory.strCategory = tblInv.strCategory
AND tblInv.strPartNumber = @SqlPartNumber
AND tblPricelistsItemsMaster.uidPriceBasedID = @SqlPriceBaseId
AND tblPricelistsItemsMaster.strPricelist = @SqlPricelist
)
END
) AS PriceLevel
FROM tblPricelistsItemsMaster
WHERE uidPriceBasedID = @SqlPriceBaseId
AND strPricelist = @SqlPricelist;
END
Else
BEGIN
SELECT intPricelistMasterId as PricelistMasterId
,uidPriceBasedID as PriceBasedID
,strPricelist as Pricelist
,intType as [Type]
,strPriceLevelType as PriceLevelType
,(
CASE 
WHEN (
intType = @SqlType2
OR intType = @SqlType4
)
AND strPriceLevelType = @SqlPriceLevelType
THEN decMarkupPrice
ELSE (
SELECT tblPricelistsItems.decMarkupPrice 
FROM tblPricelistsItems INNER JOIN tblPricelistsItemsMaster 
ON tblPricelistsItemsMaster.intPricelistMasterId = tblPricelistsItems.intPricelistMasterId
AND tblPricelistsItems.strPartNumber = @SqlPartNumber AND 
tblPricelistsItemsMaster.uidPriceBasedID = @SqlPriceBaseId
AND tblPricelistsItemsMaster.strPricelist = @SqlPricelist)
END
) AS MarkupPrice
,(
CASE 
WHEN (
intType = @SqlType2
OR intType = @SqlType4
)
AND strPriceLevelType = @SqlPriceLevelType
THEN strPriceLevel
ELSE (
SELECT tblPricelistsItems.strPriceLevel 
FROM tblPricelistsItems INNER JOIN tblPricelistsItemsMaster 
ON tblPricelistsItemsMaster.intPricelistMasterId = 
tblPricelistsItems.intPricelistMasterId AND
tblPricelistsItems.strPartNumber= @SqlPartNumber
AND tblPricelistsItemsMaster.uidPriceBasedID = @SqlPriceBaseId
AND tblPricelistsItemsMaster.strPricelist = @SqlPricelist)
END
) AS PriceLevel
FROM tblPricelistsItemsMaster
WHERE uidPriceBasedID = @SqlPriceBaseId
AND strPricelist = @SqlPricelist;
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetQuantityByJobID] 
@SQJBDocID as nvarchar(50)
AS
BEGIN
SELECT ISNULL(SUM(decQty),0) as Qty FROM tblInvTrackingDT WHERE strSource = @SQJBDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetReferenceByJobID] 
@SQJBDocID as nvarchar(50)
AS
BEGIN
SELECT strReference FROM tblManJob WHERE strJBDocID = @SQJBDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetSerialNumberData]
@SQDocNumber as nvarchar(50),
@SQPartNumber as nvarchar(50)
AS
BEGIN
SELECT strJBDocID as JBDocID,
strPartNumber as PartNumber,
strSerialNumber as SerialNumber,
decQty as Quantity,
strUnit as Unit,
tblManJobByProdSerial.lngID as ID,
bitExpiryDate as IsExpiryDateExists,
dteExpiryDate as ExpiryDate,
intSerialLotType as SerialLotType,
lngBinID as BinID
,ISNULL((
SELECT DISTINCT TYP.strInvSerialType as InvSerialType
FROM tblManJobByProdSerial SRL
INNER JOIN tblManJobByProd DTL ON SRL.strJBDocID = DTL.strJBDocID
INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber
INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType
WHERE SRL.strJBDocID = tblManJobByProdSerial.strJBDocID
), '')
,ISNULL(tblInvLocBin.strBinCode, '') AS BinCode
FROM tblManJobByProdSerial
LEFT OUTER JOIN tblInvLocBin ON tblInvLocBin.lngId = tblManJobByProdSerial.lngBinId
WHERE strJBDocID = @SQDocNumber
AND strPartNumber = @SQPartNumber
ORDER BY tblManJobByProdSerial.lngID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetSerialNumberDataByPartNumber] 
@SQDocNumber as nvarchar(50),
@SQPartNumber as nvarchar(50)
AS
BEGIN
SELECT strJBDocID as JBDocID,
strPartNumber as PartNumber,
strSerialNumber as SerialNumber,
decQty as Quantity,
strUnit as Unit,
tblManJobByProdSerial.lngID as ID,
bitExpiryDate as IsExpiryDateExists,
dteExpiryDate as ExpiryDate,
intSerialLotType as SerialLotType,
lngBinID as BinID
,ISNULL((
SELECT DISTINCT TYP.strInvSerialType
FROM tblManJobByProdSerial SRL
INNER JOIN tblManJobByProd DTL ON SRL.strJBDocID = DTL.strJBDocID
INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber
INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType
WHERE SRL.strJBDocID = tblManJobByProdSerial.strJBDocID
), '')
FROM tblManJobByProdSerial
WHERE strJBDocID = @SQDocNumber
AND strPartNumber = @SQPartNumber
ORDER BY lngID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetUserEnteredData] 
@SQJournalID as bigint
AS
BEGIN
SELECT dteSystemDate as SystemDate, strUserName as UserName FROM tblManJobClose WHERE lngJourID = @SQJournalID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [InsertManJobByProdData] 
@SQPartNumber as nvarchar(50),
@SQLocation as nvarchar(10),
@SQQty as money,
@SQPartDesc as nvarchar(500),
@SQDocID as nvarchar(50)
AS
BEGIN
INSERT INTO tblManJobByProd
SELECT TOP 1 strJBDocID
,@SQPartNumber
,@SQLocation
,0
,@SQQty
,@SQPartDesc
,dteRevDate
,Null
FROM tblManJobByProd
WHERE strJBDocID = @SQDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [InsertManJobByProdSerialData] 
@SQDocID as nvarchar(50),
@SQstrPartNumber as nvarchar(50),
@SQstrSerialNumber as nvarchar(100),
@SQdecQty as money,
@SQstrUnit as nvarchar(15),
@SQbitExpiryDate as bit,
@SQdteExpiryDate as smalldatetime,
@SQintSerialLotType as int,
@SQlngBinID as bigint
AS
BEGIN
INSERT INTO tblManJobByProdSerial (
strJBDocID
,strPartNumber
,strSerialNumber
,decQty
,strUnit
,bitExpiryDate
,dteExpiryDate
,intSerialLotType
,lngBinID
)
VALUES (
@SQDocID
,@SQstrPartNumber
,@SQstrSerialNumber
,@SQdecQty
,@SQstrUnit
,@SQbitExpiryDate
,@SQdteExpiryDate
,@SQintSerialLotType
,@SQlngBinID
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [InsertManJobCloseData] 
@SQJBDocID as nvarchar(50),
@SQSystemDate as smalldatetime,
@SQUserName as nvarchar(20),
@SQType as int,
@SQPartNumber as nvarchar(50),
@SQManQty as money,
@SQManQtyClosed as money,
@SQManUnitCost as money,
@SQManAmount as money,
@SQJourID as bigint,
@SQLRC as money,
@SQActualCost as money,
@SQStandardCost as money,
@SQManStandardCost as bit,
@SQJournalDate as smalldatetime,
@SQstrFileName as nvarchar(250)
AS
BEGIN
INSERT INTO tblManJobClose (
strJBDocID
,dteSystemDate
,strUserName
,intType
,strPartNumber
,decManQty
,decManQtyClosed
,decManUnitCost
,decManAmount
,lngJourID
,decLRC
,decActualCost
,decStandardCost
,bitManStandardCost
,dteJournalDate
,strFileName
)
VALUES (
@SQJBDocID
,@SQSystemDate
,@SQUserName
,@SQType
,@SQPartNumber
,@SQManQty
,@SQManQtyClosed
,@SQManUnitCost
,@SQManAmount
,@SQJourID
,@SQLRC
,@SQActualCost
,@SQStandardCost
,@SQManStandardCost
,@SQJournalDate
,@SQstrFileName
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [InsertSerialNumberTrackingData] 
@SQstrPartNumber as nvarchar(50),
@SQstrSerialNumber as nvarchar(100),
@SQstrUserName as nvarchar(20),
@SQdteUpdatedDate as smalldatetime,
@SQintType as tinyint,
@SQstrDocID as nvarchar(50),
@SQintLineNo as int,
@SQdecQty as money,
@SQstrLocation as nvarchar(10),
@SQintStatus as tinyint,
@SQbitExpiryDate as bit,
@SQdteExpiryDate as smalldatetime,
@SQlngBinID as bigint
AS
BEGIN
INSERT INTO tblSerialNumberTracking (
strPartNumber
,strSerialNumber
,strUserName
,dteUpdatedDate
,intType
,strDocID
,intLineNo
,decQty
,strLocation
,intStatus
,bitExpiryDate
,dteExpiryDate
,lngBinID
)
VALUES (
@SQstrPartNumber
,@SQstrSerialNumber
,@SQstrUserName
,@SQdteUpdatedDate
,@SQintType
,@SQstrDocID
,@SQintLineNo
,@SQdecQty
,@SQstrLocation
,@SQintStatus
,@SQbitExpiryDate
,@SQdteExpiryDate
,@SQlngBinID
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [UpdateInvData] 
@SQLastPPUnit as money,
@SQPartNumber as nvarchar(50)
AS
BEGIN
UPDATE tblInv
SET decLastPPUnit = CASE WHEN @SQLastPPUnit = 0 THEN decLastPPUnit ELSE @SQLastPPUnit END
,decLastManCost = @SQLastPPUnit
WHERE strPartNumber = @SQPartNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [UpdateManJobDataByDocId] 
@SQType as int,
@SQJBDocID as nvarchar(50)
AS
BEGIN
UPDATE tblManJob
SET intType = @SQType
WHERE strJBDocID = @SQJBDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [UpdateManWIPData] 
@SQType as int,
@SQJBDocID as nvarchar(50)
AS
BEGIN
UPDATE tblManWIP
SET intType = @SQType
WHERE strJBDocID = @SQJBDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetWorkCentreList] 
AS
BEGIN
SELECT strWCCode as WCCode
FROM tblManWorkCentre
WHERE bitInactive = 0
ORDER BY strWCCode;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManufactureJobDataByWCCode] @SQWCCode NVARCHAR(20)
	,@SQType INT AS

BEGIN
	SELECT JOB.strJBDocID AS [Subject]
		,(ISNULL(BOM.decManQty, 0)) AS ManQty
		,JOB.dteRequired AS RequiredDate
		,JOB.intType AS [Type]
		,JOB.strCustName AS CustName
		,CASE 
			WHEN BOM.decItemCount > 1
				THEN '<<MULTIPLE>>'
			ELSE ISNULL((
						SELECT PROD.strPartNumber
						FROM tblManJobByProd PROD
						WHERE PROD.strJBDocID = JOB.strJBDocID
						), '')
			END PartNumber
	FROM tblManJob JOB
	INNER JOIN (
		SELECT strJBDocID
			,SUM(decManQty) AS decManQty
			,COUNT(strPartNumber) AS decItemCount
		FROM tblManJobByProd
		GROUP BY strJBDocID
		) BOM ON JOB.strJBDocID = BOM.strJBDocID
	WHERE JOB.intType = (
			CASE 
				WHEN @SQType = - 1
					THEN JOB.intType
				ELSE @SQType
				END
			)
		AND strWCCode = (
			CASE 
				WHEN @SQWCCode = 'ALL'
					THEN strWCCode
				ELSE @SQWCCode
				END
			)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManWorkCapacityData]
    @SQWCCode NVARCHAR(20),
    @IsWorkCentreCount BIT
AS
BEGIN
    IF (@IsWorkCentreCount > 0)
    BEGIN
        SELECT 
            tblManWorkCapacity.strWCCode AS 'WCCode',
            tblManWorkCapacity.Sunday,
            tblManWorkCapacity.Monday,
            tblManWorkCapacity.Tuesday,
            tblManWorkCapacity.Wednesday,
            tblManWorkCapacity.Thursday,
            tblManWorkCapacity.Friday,
            tblManWorkCapacity.Saturday
        FROM tblManWorkCapacity
        INNER JOIN tblManWorkCentre ON tblManWorkCapacity.strWCCode = tblManWorkCentre.strWCCode
        WHERE tblManWorkCapacity.strWCCode = @SQWCCode
            AND tblManWorkCentre.bitInactive = 0;
    END
    ELSE
    BEGIN
        SELECT 
            tblManWorkCapacity.strWCCode AS 'WCCode',
            tblManWorkCapacity.Sunday,
            tblManWorkCapacity.Monday,
            tblManWorkCapacity.Tuesday,
            tblManWorkCapacity.Wednesday,
            tblManWorkCapacity.Thursday,
            tblManWorkCapacity.Friday,
            tblManWorkCapacity.Saturday
        FROM tblManWorkCapacity
        INNER JOIN tblManWorkCentre ON tblManWorkCapacity.strWCCode = tblManWorkCentre.strWCCode
        WHERE tblManWorkCentre.bitInactive = 0;
    END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManJobDataByWCCode] 
@SQWCCode nvarchar(20),
@SQType int,
@IsWorkCentreCount bit,
@IsJobStatusCount bit
AS
BEGIN
if(@IsJobStatusCount > 0 and @IsWorkCentreCount > 0)
begin
SELECT sum(ti.decMass * MJP.decManQty) as ManQty
,MJ.dteRequired as RequiredDate
FROM tblManJob MJ
INNER JOIN tblManJobByProd MJP ON MJ.strJBDocID = MJP.strJBDocID
INNER JOIN tblinv ti ON ti.strPartNumber = MJP.strPartNumber
WHERE MJ.strWCCode = @SQWCCode
AND MJ.intType = @SQType
GROUP BY MJ.dteRequired;
end
else if(@IsJobStatusCount > 0)
begin
SELECT sum(ti.decMass * MJP.decManQty) as ManQty
,MJ.dteRequired as RequiredDate
FROM tblManJob MJ
INNER JOIN tblManJobByProd MJP ON MJ.strJBDocID = MJP.strJBDocID
INNER JOIN tblinv ti ON ti.strPartNumber = MJP.strPartNumber
WHERE MJ.intType = @SQType
GROUP BY MJ.dteRequired;
end
else if(@IsWorkCentreCount > 0)
begin
SELECT sum(ti.decMass * MJP.decManQty) as ManQty
,MJ.dteRequired as RequiredDate
FROM tblManJob MJ
INNER JOIN tblManJobByProd MJP ON MJ.strJBDocID = MJP.strJBDocID
INNER JOIN tblinv ti ON ti.strPartNumber = MJP.strPartNumber
WHERE MJ.strWCCode = @SQWCCode and MJ.intType not in (4,5)
GROUP BY MJ.dteRequired;
end
else
begin
SELECT sum(ti.decMass * MJP.decManQty) as ManQty
,MJ.dteRequired as RequiredDate
FROM tblManJob MJ
INNER JOIN tblManJobByProd MJP ON MJ.strJBDocID = MJP.strJBDocID
INNER JOIN tblinv ti ON ti.strPartNumber = MJP.strPartNumber
where MJ.intType not in (4,5)
GROUP BY MJ.dteRequired
end
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[AddUpdateVendorCat]
@strVendCategory as nvarchar(20),
@strDesc as nvarchar(100),
@bitInactive as bit,
@IsEdit AS bit,
@SQOldName As nvarchar(20) null
AS
BEGIN
IF @IsEdit = 1
BEGIN
UPDATE tblVendorCat 
SET strVendCategory = @strVendCategory,
strDesc = @strDesc,
bitInactive = @bitInactive
WHERE strVendCategory = @SQOldName;
END
ELSE
BEGIN
INSERT INTO tblVendorCat(strVendCategory, strDesc, bitInactive)
VALUES (@strVendCategory, @strDesc, @bitInactive);
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteVendorCat]
@strVendCategory as nvarchar(20)
AS
BEGIN
DELETE tblVendorCat WHERE strVendCategory = @strVendCategory;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendorCats]
@ShowInactive AS BIT
AS
BEGIN
Select 
strVendCategory as VendorCategory,
strDesc as VendorCatDescription,
bitInactive as Inactive
From tblVendorCat 
WHERE (bitInactive = 0 or bitInactive = @ShowInactive)
Order By strVendCategory;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetVendorCatByCatName]
@strVendCategory as nvarchar(20)
AS
BEGIN
Select 
strVendCategory as VendorCategory,
strDesc as VendorCatDescription,
bitInactive as Inactive
From tblVendorCat 
WHERE strVendCategory = @strVendCategory;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetUserDetails] 
AS
BEGIN
SELECT strUserName as UserName FROM tblUsers;
END
GO

----------------------------------------------------
CREATE PROCEDURE [DeleteVendorCatSecDataByCatName] 
@SQCatName as nvarchar(20)
AS
BEGIN
DELETE FROM tblVendorCatSec WHERE strVendCategory = @SQCatName;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetUserDataByCatName] 
@SQCatName as nvarchar(20)
AS
BEGIN
SELECT strUserName as UserName FROM tblVendorCatSec WHERE strVendCategory = @SQCatName;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetUserDataByCat] 
@SQCatName as nvarchar(20)
AS
BEGIN
SELECT 
strUserName as UserName
FROM tblUsers 
WHERE strUserName NOT IN (SELECT strUserName FROM tblVendorCatSec WHERE strVendCategory = @SQCatName);
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetChartDataByCatName] 
@SQCat nvarchar(20),
@SQStart smalldatetime,
@SQEnd smalldatetime
AS
BEGIN
SELECT DATEPART(yyyy, tblInvoiceDocP.dteJournalDate) as [Year]
,DATEPART(m, tblInvoiceDocP.dteJournalDate) AS [Month]
,ISNULL(SUM(tblInvoiceDocPDT.decLineTotExc), 0) AS TotalSales
FROM tblInvoiceDocP
INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
WHERE (
tblInvoiceDocP.strVendName IN (
SELECT strVendName
FROM tblVendors
WHERE strVendCategory = @SQCat
)
)
AND (
tblInvoiceDocP.dteJournalDate BETWEEN @SQStart
AND @SQEnd
)
AND (tblInvoiceDocP.bitHistoryTrans = 0)
GROUP BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate)
,DATEPART(m, tblInvoiceDocP.dteJournalDate)
ORDER BY DATEPART(yyyy, tblInvoiceDocP.dteJournalDate)
,DATEPART(m, tblInvoiceDocP.dteJournalDate);
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveVendorCatSecData] 
@SQCatName as nvarchar(20),
@SQstrUserName as nvarchar(20)
AS
BEGIN
INSERT INTO tblVendorCatSec VALUES (@SQCatName,@SQstrUserName);
END
GO

----------------------------------------------------
CREATE PROCEDURE [DeleteRebateProcessData]
@intRebateId as int
AS
BEGIN
DELETE
FROM tblRebateSetup
WHERE intRebateId = @intRebateId;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRabateProcessData] (@PageSize INT = 25
	,@PageNumber INT = 1
	,@Search AS NVARCHAR(Max) = '')
AS
BEGIN

DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)


SELECT RS.intRebateId as RebateId
,RS.strRebateName as RebateName
,RS.strVendName as VendorName
,RS.dtRebateStartDate as StartDate
,RS.dtRebateEndDate as EndDate
,RS.strCategory as Category
,RS.strPartNumber as PartNumber
,RS.decRebateVal as RebateValue
,RS.intRebateOrder as OrderType
,RS.strCustName as CustName
,V.strVendDesc as VendorDesc
FROM tblRebateSetup RS
INNER JOIN tblVendors V ON Rs.strVendName = V.strVendName

where ISNULL(strRebateName, '') LIKE '%' + ISNULL(@Search, strRebateName) + '%'
			ORDER BY RebateId OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetRebateNameByRebateName] 
@SQstrRebateName as nvarchar(50)
AS
BEGIN
SELECT strRebateName as RebateName
FROM tblRebateSetup
WHERE strRebateName = @SQstrRebateName;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetRebateProcessDataBySearchFilter] 
@SQstrSearch as nvarchar(50)
AS
BEGIN
SELECT RS.intRebateId as RebateId
,RS.strRebateName as RebateName
,RS.strVendName as VendorName
,RS.dtRebateStartDate as StartDate
,RS.dtRebateEndDate as EndDate
,RS.strCategory as Category
,RS.strPartNumber as PartNumber
,RS.decRebateVal as RebateValue
,RS.intRebateOrder as OrderType
,RS.strCustName as CustName
,V.strVendDesc as VendorDesc
FROM tblRebateSetup RS
INNER JOIN tblVendors V ON Rs.strVendName = V.strVendName
WHERE RS.strRebateName LIKE '%' + @SQstrSearch + '%'
OR RS.strVendName LIKE '%' + @SQstrSearch + '%'
OR V.strVendDesc LIKE '%' + @SQstrSearch + '%';
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetSummaryData] 
@SQintRebateId as int
AS
BEGIN
SELECT intRebateId as RebateId
,strSupplierCode as SupplierCode
,strSupplierName as SupplierName
,dteInvoiceDate as InvoiceDate
,strInvoiceNumber as InvoiceDocNo
,decInvoiceAmount as InvoiceAmount
,strProcessDocument as ProcessDocument
FROM tblRebateProcesses
WHERE intRebateId = @SQintRebateId;
END
GO

----------------------------------------------------
CREATE PROCEDURE [InsertRebateProcessData] 
@strRebateName as nvarchar(50)
,@strVendName as nvarchar(50)
,@dtRebateStartDate as datetime
,@dtRebateEndDate as datetime
,@strCategory as nvarchar(20) null
,@strPartNumber as nvarchar(50)
,@decRebateVal as money
,@intRebateOrder as int
,@strCustName as nvarchar(50)
AS
BEGIN
INSERT INTO tblRebateSetup (
strRebateName
,strVendName
,dtRebateStartDate
,dtRebateEndDate
,strCategory
,strPartNumber
,decRebateVal
,intRebateOrder
,strCustName
)
OUTPUT INSERTED.intRebateId as lastInsertedId
VALUES (
@strRebateName
,@strVendName
,@dtRebateStartDate
,@dtRebateEndDate
,@strCategory
,@strPartNumber
,@decRebateVal
,@intRebateOrder
,@strCustName
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetCategorySettingsData] 
AS
BEGIN
SELECT CONCAT (
strCategory
,' | '
,strDesc
) AS VendorCatDescription
,strCategory AS VendorCategory
FROM tblInvCat
WHERE bitInactive = 0
ORDER BY strCategory;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetVendorDataByName] 
@SQVendID as nvarchar(50)
AS
BEGIN
SELECT strVendDesc as [Description]
,strStreet1 as Street1
,strStreet2 as Street2
,strCity as City
,strProvince as Province
,strPostal as Postal
,strCountry as Country
FROM tblVendors
WHERE strVendName = @SQVendID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetVendorDescriptionByName] 
@SQstrName as nvarchar(50)
AS
BEGIN
SELECT isnull(strVendDesc, '') as [Description]
FROM tblVendors
WHERE strVendName = @SQstrName;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetSubCategoryData] 
@SQstrName as nvarchar(20)
AS
BEGIN
SELECT CONCAT (
strCategory
,' | '
,strDesc
) AS VendorCatDescription
,strCategory as VendorCategory
FROM tblInvSubCat
WHERE strParentCategory = @SQstrName
ORDER BY strCategory;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetSubCategoryGroupData] 
@SQstrParentCategory as nvarchar(20),
@SQstrParentSubCategory as nvarchar(20)
AS
BEGIN
SELECT CONCAT (
strCategory
,' | '
,strDesc
) AS VendorCatDescription
,strCategory as VendorCategory
FROM tblInvGroupSubCat
WHERE strParentCategory = @SQstrParentCategory
AND strParentSubCategory = @SQstrParentSubCategory
ORDER BY strCategory;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetCategoryInfoData]
@SQstrCategory as nvarchar(20)
AS
BEGIN
SELECT strCategory as VendorCategory
,strDesc as VendorCatDescription
FROM tblInvCat
WHERE strCategory = @SQstrCategory;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetSubCatData] 
@SQstrParentCategory as nvarchar(20),
@SQstrCategory as nvarchar(20)
AS
BEGIN
SELECT strCategory as VendorCategory
,strDesc as VendorCatDescription
FROM tblInvSubCat
WHERE strParentCategory = @SQstrParentCategory
AND strCategory = @SQstrCategory;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetSubCatGroupData]
@SQstrParentCategory as nvarchar(20),
@SQstrParentSubCategory as nvarchar(20),
@SQstrCategory as nvarchar(20)
AS
BEGIN
SELECT strCategory as VendorCategory
,strDesc as VendorCatDescription
FROM tblInvGroupSubCat
WHERE strParentCategory = @SQstrParentCategory
AND strParentSubCategory = @SQstrParentSubCategory
AND strCategory = @SQstrCategory;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvCatData] 
@blnIsEdit as bit,
@LineNo as int null,
@intRebateId as int,
@strCategory as nvarchar(50),
@strSubCategory as nvarchar(50) null,
@strSubCategoryGroup as nvarchar(50) null
AS
BEGIN
if(@blnIsEdit = 1 and @LineNo > 0) 
begin
SELECT Inv.strPartNumber as PartNumber
,Inv.strDesc as [Description]
,Inv.intType as [Type]
,CASE Inv.intType
WHEN 1
THEN 'Inventory'
WHEN 4
THEN 'Service'
WHEN 5
THEN 'Journal'
ELSE 'Buyout'
END AS strType
,ISNULL(Inv.strCategory, '') AS Category
,ISNULL(Inv.strSubCategory, '') AS SubCategory
,ISNULL(Inv.strSubCategoryGroup, '') AS SubCategoryGroup
,Inv.bitInactive as IsInactive
,CAST((
CASE 
WHEN Isnull(RebSI.strPartNumber, '') = ''
THEN 0
ELSE 1
END
) AS BIT) AS Selected
FROM tblInv AS Inv
LEFT JOIN tblRebateSetupItems RebSI ON Inv.strPartNumber = RebSI.strPartNumber
AND RebSI.intRebateId = @intRebateId
AND RebSI.intLineNo = @LineNo
LEFT JOIN tblRebateSetupCategory RebSC ON RebSC.intLineNo = @LineNo
AND RebSC.intRebateId = @intRebateId
WHERE (Inv.strCategory = @strCategory or @strCategory Is Null)
AND (Inv.strSubCategory = @strSubCategory OR @strSubCategory IS NULL)
AND (Inv.strSubCategoryGroup = @strSubCategoryGroup OR @strSubCategoryGroup IS NULL)
ORDER BY Inv.strPartNumber;
end
else 
begin
SELECT Inv.strPartNumber as PartNumber
,Inv.strDesc as [Description]
,Inv.intType as [Type]
,CASE Inv.intType
WHEN 1
THEN 'Inventory'
WHEN 4
THEN 'Service'
WHEN 5
THEN 'Journal'
ELSE 'Buyout'
END AS strType
,ISNULL(Inv.strCategory, '') AS Category
,ISNULL(Inv.strSubCategory, '') AS SubCategory
,ISNULL(Inv.strSubCategoryGroup, '') AS SubCategoryGroup
,Inv.bitInactive as IsInactive
, CAST(0 AS bit) AS Selected
FROM tblInv AS Inv
WHERE (Inv.strCategory = @strCategory or @strCategory Is Null)
AND (Inv.strSubCategory = @strSubCategory OR @strSubCategory IS NULL)
AND (Inv.strSubCategoryGroup = @strSubCategoryGroup OR @strSubCategoryGroup IS NULL)
ORDER BY Inv.strPartNumber;
end
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SaveRebateSetupCategoryData] 
@intRebateId as int = 0,
@strRebateName as nvarchar(50) = ''
,@strCategory as nvarchar(20)
,@strSubCategory as nvarchar(20) null
,@strSubCategoryGroup as nvarchar(20) null
,@intLineNo as int
AS
BEGIN

IF @intRebateId = 0
Begin

SELECT @intRebateId =intRebateId  FROM tblRebateSetup WHERE strRebateName = @strRebateName
 End

 IF NOT EXISTS (SELECT 1 FROM tblRebateSetupCategory WHERE intRebateId = @intRebateId AND strCategory = @strCategory AND intLineNo = @intLineNo)

	INSERT INTO tblRebateSetupCategory (
	intRebateId
	,strCategory
	,strSubCategory
	,strSubCategoryGroup
	,intLineNo
	)
	VALUES (
	@intRebateId
	,@strCategory
	,@strSubCategory
	,@strSubCategoryGroup
	,@intLineNo
	);
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SaveRebateSetupItemsData] 
@intRebateId as int = 0,
@strRebateName as nvarchar(50) = ''
,@strPartNumber as nvarchar(50) null
,@intLineNo as int
AS
BEGIN

IF @intRebateId = 0
Begin

SELECT @intRebateId =intRebateId  FROM tblRebateSetup WHERE strRebateName = @strRebateName
 End


		  IF NOT EXISTS (SELECT 1 FROM tblRebateSetupItems WHERE intRebateId = @intRebateId AND strPartNumber = @strPartNumber AND intLineNo = @intLineNo)
INSERT INTO tblRebateSetupItems (
intRebateId
,strPartNumber
,intLineNo
)
VALUES (
@intRebateId
,@strPartNumber
,@intLineNo
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetRebateSetupDataByRebateId] 
@SQintRebateId as int
AS
BEGIN
SELECT 
strRebateName as RebateName,
strVendName as VendorName,
dtRebateStartDate as StartDate,
dtRebateEndDate as EndDate,
strCategory as Category,
strPartNumber as PartNumber,
decRebateVal as RebateValue,
intRebateOrder as OrderType,
strCustName as CustName
FROM tblRebateSetup
WHERE intRebateId = @SQintRebateId;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetCustData]
@SQstrCustName as nvarchar(50)
AS
BEGIN
SELECT ISNULL(strCustDesc, '') as CustDesc
FROM tblCustomers
WHERE strCustName = @SQstrCustName;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetRebateSetupCategoryData] 
@intRebateId as int
AS
BEGIN
SELECT intRebateId as RebateId
,strCategory as Category
,strSubCategory as SubCategory
,strSubCategoryGroup as SubCategoryGroup
,intLineNo as LineNumber
FROM tblRebateSetupCategory
WHERE intRebateId = @intRebateId;
END
GO

----------------------------------------------------
CREATE PROCEDURE [UpdateRebateSetupData] 
@strRebateName as nvarchar(50)
,@strVendName as nvarchar(50)
,@dtRebateStartDate as datetime
,@dtRebateEndDate as datetime
,@strCategory as nvarchar(20) null
,@strPartNumber as nvarchar(50)
,@decRebateVal as money
,@intRebateOrder as int
,@strCustName as nvarchar(50)
,@intRebateId as int
AS
BEGIN
UPDATE tblRebateSetup
SET strRebateName = @strRebateName
,strVendName = @strVendName
,dtRebateStartDate = @dtRebateStartDate
,dtRebateEndDate = @dtRebateEndDate
,strCategory = @strCategory
,strPartNumber = @strPartNumber
,decRebateVal = @decRebateVal
,intRebateOrder = @intRebateOrder
,strCustName = @strCustName
WHERE intRebateId = @intRebateId;
END
GO

----------------------------------------------------
CREATE PROCEDURE [DeleteRebateSetupCategoryData] 
@intRebateId as int
AS
BEGIN
DELETE
FROM tblRebateSetupCategory
WHERE intRebateId = @intRebateId;
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [DeleteRebateSetupItemsData] 
@intRebateId as int
AS
BEGIN
DELETE
FROM tblRebateSetupItems
WHERE intRebateId = @intRebateId;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetRebateSetupItemsByRebateId] 
@RebateId as int
AS
BEGIN
select 
strPartNumber as PartNumber,
intLineNo as LineNumber
from tblRebateSetupItems 
where intRebateId = @RebateId;
END
GO

----------------------------------------------------
Create PROCEDURE [GetPrintBatchData] 
@SQStart as varchar(19),
@SQEnd as varchar(19),
@SelectedDocument as int,
@SelectedStatus as int,
@VendName as nvarchar(max) null
AS
Declare @Query nvarchar(max) = '';
BEGIN
if(@SelectedDocument = 0)
begin
Set @Query = 'SELECT strInvPDocID as PurchaseOrderDocID
,dteJournalDate as JournalDate
,dteRequired as RequiredDate
,strUserName as UserName
,strVendName as VendorName
,strVendInvNo as VendInvNo
,decTotal as Total
FROM tblInvoiceDocP
WHERE (bitHistoryTrans = 0)
AND (
dteJournalDate BETWEEN '''+@SQStart+'''
AND '''+@SQEnd+'''
)'
if(@SelectedStatus = 0)
begin
Set @Query += ' AND (bitPrinted = 0)'
end
if(LEN(@VendName) > 0)
begin
Set @Query += ' AND (strVendName = '''+@VendName+''')'
end
end
else if(@SelectedDocument = 1)
begin
Set @Query = 'SELECT strOrdPDocID as PurchaseOrderDocID
,dteJournalDate as JournalDate
,dteRequired as RequiredDate
,strUserName as UserName
,strVendName as VendorName
,'''' as VendInvNo
,decTotal as Total
FROM tblOrderDocP
WHERE (bitCleared = 0)
AND (
dteJournalDate BETWEEN '''+@SQStart+'''
AND '''+@SQEnd+'''
)
AND intDocType = 1'
if(@SelectedStatus = 0)
begin
Set @Query += ' AND (bitPrinted = 0)'
end
if(LEN(@VendName) > 0)
begin
Set @Query += ' AND (strVendName = '''+@VendName+''')'
end
end
else if(@SelectedDocument = 2)
begin
Set @Query = 'SELECT strOrdPDocID as PurchaseOrderDocID
,dteJournalDate as JournalDate
,dteRequired as RequiredDate
,strUserName as UserName
,strVendName as VendorName
,'''' as VendInvNo
,decTotal as Total
FROM tblOrderDocP
WHERE (bitCleared = 0)
AND (
dteJournalDate BETWEEN '''+@SQStart+'''
AND '''+@SQEnd+'''
)
AND intDocType = 2'
if(@SelectedStatus = 0)
begin
Set @Query += ' AND (bitPrinted = 0)'
end
if(LEN(@VendName) > 0)
begin
Set @Query += ' AND (strVendName = '''+@VendName+''')'
end
end
EXEC sp_executesql @Query;
END
GO

----------------------------------------------------
CREATE PROCEDURE [UpdateInvoiceDocPData] 
@SQDocID as nvarchar(50)
AS
BEGIN
UPDATE tblInvoiceDocP SET bitPrinted = 1 WHERE strInvPDocID = @SQDocID;
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [UpdateOrderDocPData]
@SQDocID as nvarchar(50)
AS
BEGIN
UPDATE tblOrderDocP SET bitPrinted = 1 WHERE strOrdPDocID = @SQDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetVendorReconData]
@strSearch nvarchar(50),
@dteStartDate datetime,
@dteFinishDate datetime
AS
BEGIN
IF LEN(@strSearch) > 0
BEGIN
SELECT	tblVendorRecon.strVendorNo AS VendName,
tblVendors.strVendDesc as VendDesc,
tblVendorRecon.dteReconDate as ReconDate,
tblVendorRecon.strComment as Comment,
tblVendorRecon.decLedgerBalance AS SystemBalance,
tblVendorRecon.decStatementBalance AS VendBalance,
tblVendorRecon.lngVenReconID as VenReconID
FROM tblVendorRecon
INNER JOIN tblVendors ON tblVendors.strVendName = tblVendorRecon.strVendorNo
WHERE (tblVendorRecon.strVendorNo LIKE '%' + @strSearch + '%'
OR tblVendors.strVendDesc LIKE '%' + @strSearch + '%'
OR tblVendorRecon.strComment LIKE '%' + @strSearch + '%')
AND (tblVendorRecon.dteReconDate BETWEEN @dteStartDate AND @dteFinishDate);
END
ELSE
BEGIN
SELECT	tblVendorRecon.strVendorNo AS VendName,
tblVendors.strVendDesc as VendDesc,
tblVendorRecon.dteReconDate as ReconDate,
tblVendorRecon.strComment as Comment,
tblVendorRecon.decLedgerBalance AS SystemBalance,
tblVendorRecon.decStatementBalance AS VendBalance,
tblVendorRecon.lngVenReconID as VenReconID
FROM tblVendorRecon
INNER JOIN tblVendors ON tblVendors.strVendName = tblVendorRecon.strVendorNo
WHERE (tblVendorRecon.dteReconDate BETWEEN @dteStartDate AND @dteFinishDate);
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetVendorReconREData] 
@strSearchText AS nvarchar(50) = NULL
AS
BEGIN
SELECT 
strREName as REName,
dteLastProcDate as LastProcDate,
strVendorNo as VendorNo
FROM 
[tblVendorReconRE] Where bitIsReconciled = 0 
AND (strREName Like ('%' + @strSearchText + '%') OR @strSearchText IS NULL);
END
GO

----------------------------------------------------
CREATE PROCEDURE [DeleteVendorReconREData] 
@strREName nvarchar(100) = null
AS
BEGIN
DELETE FROM [tblVendorReconRE] WHERE [strREName] = @strREName;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetVendorReconDataByVendorNo] 
@strVendorNo nvarchar(50),
@dteReconDate datetime
AS
BEGIN
Declare @lngVenReconId Bigint
SET @lngVenReconId=(SELECT TOP 1 lngVenReconID as VenReconID From [tblVendorRecon] WHERE strVendorNo = @strVendorNo AND dteReconDate = @dteReconDate)
SELECT 
lngVenReconID as VenReconID,
strVendorNo as VendorNo,
strVendDesc as VendorName,
decLedgerBalance as LedgerBalance,
decStatementBalance as StatementBalance,
dteReconDate as ReconDate,
strComment as Comment,
tblVendors.strCurrency as Currency
FROM 
[tblVendorRecon] 
INNER JOIN [tblVendors] ON tblVendors.strVendName = tblVendorRecon.strVendorNo
WHERE 
lngVenReconID=@lngVenReconId;
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveVendorReconREData]
@strREName nvarchar(100),
@strVendorNo nvarchar(100),
@dteReconDate datetime,
@decLedgerBalance money,
@decStatementBalance money,
@strComment nvarchar(500)
AS
BEGIN
IF ((SELECT COUNT(*) FROM [tblVendorReconRE] WHERE strREName = @strREName) = 0)
BEGIN
INSERT INTO [tblVendorReconRE]
(
strREName,
strVendorNo,
dteReconDate,
decLedgerBalance,
decStatementBalance,
strComment
)
VALUES
(
@strREName,
@strVendorNo,
@dteReconDate,
@decLedgerBalance,
@decStatementBalance,
@strComment
);
Select 1;
END
ELSE
BEGIN
UPDATE [tblVendorReconRE] SET 
strVendorNo=@strVendorNo,
dteReconDate=@dteReconDate,
decLedgerBalance=@decLedgerBalance,
decStatementBalance=@decStatementBalance,
strComment=@strComment
WHERE
strREName = @strREName
DELETE FROM [tblVendorReconREDT] WHERE strREName = @strREName;
END
SELECT 1;
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveVendorReconData] 
@lngVenReconId bigint,
@strVendorNo nvarchar(100),
@dteReconDate datetime,
@decLedgerBalance numeric(18,2),
@decStatementBalance numeric(18,2),
@strUserName nvarchar(50),
@strComment nvarchar(500)
AS
BEGIN
IF ((SELECT COUNT(*) FROM [tblVendorRecon] WHERE strVendorNo = @strVendorNo AND dteReconDate = @dteReconDate) = 0)
BEGIN
INSERT INTO [tblVendorRecon]
(
strVendorNo,
dteReconDate,
decLedgerBalance,
decStatementBalance,
dteSystemDate,
strUserName,
strComment
)
VALUES
(
@strVendorNo,
@dteReconDate,
@decLedgerBalance,
@decStatementBalance,
GetDate(),
@strUserName,
@strComment
);
Select @lngVenReconId = @@IDENTITY;
END
ELSE
BEGIN
UPDATE [tblVendorRecon] SET 
strVendorNo=@strVendorNo,
dteReconDate=@dteReconDate,
decLedgerBalance=@decLedgerBalance,
decStatementBalance=@decStatementBalance,
strUserName=@strUserName,
strComment=@strComment
WHERE
strVendorNo = @strVendorNo AND dteReconDate = @dteReconDate;
DELETE FROM [tblVendorReconDT] WHERE lngVenReconId = @lngVenReconId;
END
SELECT @lngVenReconId;
END
GO

----------------------------------------------------
CREATE PROCEDURE [UpdateVendorReconREData] 
@strName as nvarchar(100)
AS
BEGIN
UPDATE [tblVendorReconRE] SET bitIsReconciled=1 Where strREName = @strName;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetEmailAddressByVendorId]
@SQVendID as nvarchar(50)
AS
BEGIN
Select strEmail as Email FROM tblVendors WHERE strVendName = @SQVendID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetUserEnteredDetails] 
@SQDocID as bigint
AS
BEGIN
SELECT dteSystemDate as SystemDate,strUserName as UserName FROM tblVendorRecon where lngVenReconId = @SQDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetSystemBalanceValue] 
@HomeCurrency as nvarchar(3),
@SQVendorNo as nvarchar(50),
@SQReconDate as smalldatetime
AS
BEGIN
SELECT ISNULL(SUM(CASE 
WHEN strCurrency = @HomeCurrency
THEN tblVendTransDT.decAmount
ELSE tblVendTransDT.decAmountF
END), 0) AS SystemBalance
FROM tblVendTrans
INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
WHERE tblVendTrans.strVendName = @SQVendorNo
AND tblVendTransDT.bitReversed = 0
AND tblVendTransDT.dteJournalDate <= @SQReconDate;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetVendorReconDTDataByVenReconId] 
@lngVenReconId as bigint
AS
BEGIN
SELECT  
lngId as Id,
lngVenReconID as VenReconID,
intLineNo as [LineNo],
lngReconReason as ReconReason,
strSource as [Source],
dteDate as [Date],
strComment as Comment,
decDebit as Debit,
decCredit as Credit
FROM 
[tblVendorReconDT]
WHERE 
lngVenReconID=@lngVenReconId;
END
GO

----------------------------------------------------
Create PROCEDURE [GetAmountByAccountNumber] 
@SQAsAtDate as smalldatetime,
@SQGLNumber as nvarchar(30),
@IsCurrent as bit
AS
BEGIN
if(@IsCurrent = 0)
begin
SELECT ISNULL(SUM(tblJournalEntLY.decAmount), 0) as Amount
FROM tblJournalEntLY
INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate)
AND (tblJournalEntLY.intGLNumber = @SQGLNumber);
end
else
begin
SELECT ISNULL(SUM(tblJournalEnt.decAmount), 0) as Amount
FROM tblJournalEnt
INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
WHERE (tblJournal.dteJournalDate <= @SQAsAtDate)
AND (tblJournalEnt.intGLNumber = @SQGLNumber);
end
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetTaxTransactionsData] 
@SQAsAtDate as varchar(19),
@SQstrTaxName as nvarchar(10),
@IsCurrentYear as bit,
@ShowTransIndex as int
AS
Declare @Query nvarchar(max) = ''
BEGIN
if(@IsCurrentYear = 0)
begin
Set @Query = 'SELECT tblTax.strDocNumber as DocNumber
,tblTax.dteJournalDate as JournalDate
,tblJournalEntLY.decDebits as Debits
,tblJournalEntLY.decCredits as Credits
,tblJournalEntLY.decDebitsF as DebitsF
,tblJournalEntLY.decCreditsF as CreditsF
,tblTax.lngTaxID as TaxID
,ISNULL(tblTaxAllocations.decAllocatedAmtToDate, 0) as AllocatedAmtToDate
,tblTax.intType as [Type]
FROM tblJournalEntLY
INNER JOIN tblTax ON tblJournalEntLY.lngJourID = tblTax.lngJournalID
LEFT JOIN tblTaxAllocations ON tblTaxAllocations.lngTaxID = tblTax.lngTaxID
WHERE ((tblTax.dteJournalDate <= '''+@SQAsAtDate+''')
AND (
tblJournalEntLY.intGLNumber IN (
SELECT intSalesAcct
FROM tblTaxDef
WHERE strTaxName = '''+@SQstrTaxName+'''
UNION ALL
SELECT intPurchAcct
FROM tblTaxDef
WHERE strTaxName = '''+@SQstrTaxName+'''
)
))'
end
else 
begin
Set @Query = 'SELECT tblTax.strDocNumber as DocNumber
,tblTax.dteJournalDate as JournalDate
,tblJournalEnt.decDebits as Debits
,tblJournalEnt.decCredits as Credits
,tblJournalEnt.decDebitsF as DebitsF
,tblJournalEnt.decCreditsF as CreditsF
,tblTax.lngTaxID as TaxID
,ISNULL(tblTaxAllocations.decAllocatedAmtToDate, 0) as AllocatedAmtToDate
,tblTax.intType as [Type]
FROM tblJournalEnt
INNER JOIN tblTax ON tblJournalEnt.lngJourID = tblTax.lngJournalID
LEFT JOIN tblTaxAllocations ON tblTaxAllocations.lngTaxID = tblTax.lngTaxID
WHERE ((tblTax.dteJournalDate <= '''+@SQAsAtDate+''')
AND (
tblJournalEnt.intGLNumber IN (
SELECT intSalesAcct
FROM tblTaxDef
WHERE strTaxName = '''+@SQstrTaxName+'''
UNION ALL
SELECT intPurchAcct
FROM tblTaxDef
WHERE strTaxName = '''+@SQstrTaxName+'''
)
))'
end
if(@ShowTransIndex = 1)
begin
Set @Query += ' AND ISNULL(tblTaxAllocations.decUnAllocatedAmt, -1) = 0'
end
else if(@ShowTransIndex = 2)
begin
Set @Query += ' AND ISNULL(tblTaxAllocations.decUnAllocatedAmt, 0) <> 0'
end
EXEC sp_Executesql @Query 
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveTaxTransactionsData] 
@SQlngTaxID as bigint,
@SQdecAllocatedAmt as money,
@SQdecUnAllocatedAmt as money,
@Exists as bit
AS
BEGIN
if(@Exists = 1)
UPDATE tblTaxAllocations
SET decAllocatedAmtToDate = (
SELECT decAllocatedAmtToDate
FROM tblTaxAllocations
WHERE lngTaxID = @SQlngTaxID
) + @SQdecAllocatedAmt
,decUnAllocatedAmt = @SQdecUnAllocatedAmt
WHERE lngTaxID = @SQlngTaxID;
else
INSERT INTO tblTaxAllocations
VALUES (
@SQlngTaxID
,@SQdecAllocatedAmt
,@SQdecUnAllocatedAmt
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBalanceByAccountNumber] @SQGLNumber AS NVARCHAR(30)
AS
BEGIN
	SELECT decOpenBalance AS OpenBalance
		,decLYOpenBalance AS LYOpenBalance
		,decOpenBalanceF AS OpenBalanceF
		,decLYOpenBalanceF AS LYOpenBalanceF
	FROM tblAccounts
	WHERE intGLNumber = @SQGLNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetWithholdingTaxAPData] 
AS
BEGIN
SELECT bitWithholdingTaxAP as WithholdingTaxAP FROM tblCoOpts;
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [GetTaxCodeList] 
AS
BEGIN
SELECT strTaxCode as TaxCode FROM tblTaxCodes WHERE intAllowedJournals = 0 OR intAllowedJournals = 2 ORDER BY strTaxCode;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetPaymentApprovalHeaderData] 
@SQPayApprovalID as bigint
AS
BEGIN
SELECT lngVendPayApprovalID as VendPayApprovalID,
dteSystemDate as SystemDate,
dteJournalDate as JournalDate,
strUserName as UserName,
strVendName as VendName,
strCurrency as Currency,
bitIsForeign as IsForeign,
decAmount as Amount,
decExchange as Exchange,
decAmountF as AmountF,
decPrepayment as Prepayment,
decPrepaymentF as PrePaymentF,
bitPrepaymentUsed as PrepaymentUsed,
strWHTaxCode as WHTaxCode,
decWHPerc as WHPerc,
decWHAmt as WHAmt,
decWHAmtF as WHAmtF,
strComment as Comment
FROM tblVendPayApproval WHERE lngVendPayApprovalID = @SQPayApprovalID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetPaymentApprovalDetailsData]
@SQPayApprovalID as bigint
AS
BEGIN
SELECT lngVendPayApprovalLineID as VendPayApprovalLineID,
lngVendPayApprovalID as VendPayApprovalID, 
strInvDepNumber as InvDepNumber, 
strInvPDocID as InvPDocID, 
dteJournalDate as JournalDate, 
strPoNumber as PoNumber, 
decOrgAmount as OrgAmount, 
decOweAmount as OweAmount, 
decDiscAvailable as DiscAvailable, 
decAmount as Amount, 
decDiscount as Discount, 
bitIsForeign as IsForeign, 
decAmountF as AmountF, 
decDiscountF as DiscountF, 
bitPaid as Paid, 
lngID as ID
FROM tblVendPayApprovalDT WHERE lngVendPayApprovalID = @SQPayApprovalID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetVendorDetailData] 
@SQVendName as nvarchar(50)
AS
BEGIN
SELECT strCurrency as Currency, bitWithholdTax as WithholdTax, strWithholdTaxCode as WithholdTaxCode, strVendDesc as VendDesc FROM tblVendors WHERE strVendName = @SQVendName;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetExchangeRate] 
@SQCurrency as nvarchar(3),
@SQTransDate as datetime
AS
BEGIN
SELECT decRate as Rate 
FROM tblCurrencyExc 
WHERE strCurrency = @SQCurrency AND dteDate = (SELECT MAX(dteDate) 
FROM tblCurrencyExc 
WHERE strCurrency = @SQCurrency AND dteDate <= @SQTransDate);
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetTaxNameData] 
@SQVendName as nvarchar(50)
AS
BEGIN
SELECT strTaxName as TaxName FROM tblVendorExWT WHERE strVendName = @SQVendName;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetRateValue] 
@SQstrTaxCode as nvarchar(2)
AS
BEGIN
SELECT decRate as Rate FROM tblTaxCodeExt WHERE strTaxCode = @SQstrTaxCode;
END
GO

----------------------------------------------------
CREATE PROCEDURE [LoadPaymentsWindowData]  
@SQVendor as nvarchar(50)  
AS  
BEGIN  
SELECT tblVendTrans.strInvDepNumber as InvDepNumber  
,tblVendTrans.strInvPDocID as InvPDocID  
,(  
SELECT VT.dteJournalDate   
FROM tblVendTrans VT  
WHERE VT.lngVendTrID = tblVendTrans.lngVendTrID  
) as JournalDate  
,tblVendTrans.strPoNumber as PoNumber  
,tblVendTrans.decInvAmount as InvAmount  
,tblVendTrans.decInvAmountF as InvAmountF  
,SUM(tblVendTransDT.decAmount) as Amount  
,SUM(tblVendTransDT.decAmountF) as AmountF  
,tblVendTrans.intTransType as TransType  
,tblVendTrans.decDiscAvail as DiscAvailable  
,tblVendTrans.decDiscAvailF as DiscAvailF  
,tblVendTrans.dteDiscExpires as DiscExpires  
,MIN(tblVendTransDT.lngID) as ID  
,ISNULL((  
SELECT SUM(ISNULL(tblVendPayApprovalDT.decAmount, 0))  
FROM tblVendPayApprovalDT  
WHERE ISNULL(strInvPDocID, '') = ISNULL(tblVendTrans.strInvPDocID, '')  
AND lngID = MIN(tblVendTransDT.lngID)  
AND bitPaid = 0  
), 0) as PendingApproval  
,ISNULL((  
SELECT SUM(ISNULL(tblVendPayApprovalDT.decAmountF, 0))  
FROM tblVendPayApprovalDT  
WHERE ISNULL(strInvPDocID, '') = ISNULL(tblVendTrans.strInvPDocID, '')  
AND lngID = MIN(tblVendTransDT.lngID)  
AND bitPaid = 0  
), 0) as PendingApprovalF  
,ISNULL(tblInvoiceDocP.decVAT, 0) AS VAT  
,ISNULL(tblInvoiceDocP.decVATF, 0) AS VATF  
FROM tblVendTrans  
INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID  
LEFT JOIN tblInvoiceDocP ON tblVendTrans.strInvPDocID = tblInvoiceDocP.strInvPDocID  
WHERE tblVendTrans.strVendName = @SQVendor  
AND tblVendTransDT.bitReversed = 0  
AND tblVendTrans.bitSettled = 0  
GROUP BY tblVendTrans.lngVendTrID  
,tblVendTrans.strInvDepNumber  
,tblVendTrans.strInvPDocID  
,tblVendTrans.strPoNumber  
,tblVendTrans.decInvAmount  
,tblVendTrans.decInvAmountF  
,tblVendTrans.intTransType  
,tblVendTrans.decDiscAvail  
,tblVendTrans.decDiscAvailF  
,tblVendTrans.dteDiscExpires
,tblInvoiceDocP.decVAT  
,tblInvoiceDocP.decVATF 
ORDER BY (  
SELECT VT.dteJournalDate  
FROM tblVendTrans VT  
WHERE VT.lngVendTrID = tblVendTrans.lngVendTrID  
)  
,tblVendTrans.strInvDepNumber;  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [DeletePaymentApprovalData] 
@SQlngVendPayApprovalID as bigint
AS
BEGIN
DELETE FROM tblVendPayApproval WHERE lngVendPayApprovalID = @SQlngVendPayApprovalID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetCompanyImageLogo]
@SQbitDisplayLogo as bit
AS
BEGIN
SELECT imgLogo, @SQbitDisplayLogo AS bitDisplayLogo FROM tblCompany;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetVendorsData] 
@SQVendor as nvarchar(50)
AS
BEGIN
SELECT * FROM tblVendors WHERE strVendName = @SQVendor;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetVendPayApprovalID]
AS
BEGIN
SELECT ISNULL(MAX(lngVendPayApprovalID), 0) + 1 as VendPayApprovalID FROM tblVendPayApproval;
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveApprovedPaymentData] 
@SQlngVendPayApprovalID as bigint
,@SQdteSystemDate as smalldatetime
,@SQdteJournalDate as smalldatetime
,@SQstrUserName as nvarchar(20)
,@SQstrVendName as nvarchar(50)
,@SQstrCurrency as nvarchar(3)
,@SQbitIsForeign as bit
,@SQdecAmount as money
,@SQdecExchange as decimal(20,6)
,@SQdecAmountF as money
,@SQdecPrepayment as money
,@SQdecPrepaymentF as money
,@SQbitPrepaymentUsed as bit
,@SQstrWHTaxCode as nvarchar(2)
,@SQdecWHPerc as money
,@SQdecWHAmt as money
,@SQdecWHAmtF as money
,@SQstrComment as nvarchar(200)
,@ID as int
AS
BEGIN
if(@ID = 0)
INSERT INTO tblVendPayApproval
VALUES (
@SQlngVendPayApprovalID
,@SQdteSystemDate
,@SQdteJournalDate
,@SQstrUserName
,@SQstrVendName
,@SQstrCurrency
,@SQbitIsForeign
,@SQdecAmount
,@SQdecExchange
,@SQdecAmountF
,@SQdecPrepayment
,@SQdecPrepaymentF
,@SQbitPrepaymentUsed
,@SQstrWHTaxCode
,@SQdecWHPerc
,@SQdecWHAmt
,@SQdecWHAmtF
,@SQstrComment
);
else
UPDATE tblVendPayApproval
SET dteSystemDate = @SQdteSystemDate
,dteJournalDate = @SQdteJournalDate
,strUserName = @SQstrUserName
,strVendName = @SQstrVendName
,strCurrency = @SQstrCurrency
,bitIsForeign = @SQbitIsForeign
,decAmount = @SQdecAmount
,decExchange = @SQdecExchange
,decAmountF = @SQdecAmountF
,decPrepayment = @SQdecPrepayment
,decPrepaymentF = @SQdecPrepaymentF
,bitPrepaymentUsed = @SQbitPrepaymentUsed
,strWHTaxCode = @SQstrWHTaxCode
,decWHPerc = @SQdecWHPerc
,decWHAmt = @SQdecWHAmt
,decWHAmtF = @SQdecWHAmtF
,strComment = @SQstrComment
WHERE lngVendPayApprovalID = @SQlngVendPayApprovalID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetVendPayApprovalLineID] 
AS
BEGIN
SELECT ISNULL(MAX(lngVendPayApprovalLineID), 0) as VendPayApprovalLineID FROM tblVendPayApprovalDT;
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveVendPayApprovalDTData] 
@SQlngVendPayApprovalLineID as bigint
,@SQlngVendPayApprovalID as bigint
,@SQstrInvDepNumber as nvarchar(50)
,@SQstrInvPDocID as nvarchar(50)
,@SQdteJournalDate as smalldatetime
,@SQstrPoNumber as nvarchar(50)
,@SQdecOrgAmount as money
,@SQdecOweAmount as money
,@SQdecDiscAvailable as money
,@SQdecAmount as money
,@SQdecDiscount as money
,@SQbitIsForeign as bit
,@SQdecAmountF as money
,@SQdecDiscountF as money
,@SQbitPaid as bit
,@SQlngID as bigint
,@ID as int
AS
BEGIN
if(@ID = 0)
INSERT INTO tblVendPayApprovalDT
VALUES (
@SQlngVendPayApprovalLineID
,@SQlngVendPayApprovalID
,@SQstrInvDepNumber
,@SQstrInvPDocID
,@SQdteJournalDate
,@SQstrPoNumber
,@SQdecOrgAmount
,@SQdecOweAmount
,@SQdecDiscAvailable
,@SQdecAmount
,@SQdecDiscount
,@SQbitIsForeign
,@SQdecAmountF
,@SQdecDiscountF
,@SQbitPaid
,@SQlngID
);
else
UPDATE tblVendPayApprovalDT
SET strInvDepNumber = @SQstrInvDepNumber
,strInvPDocID = @SQstrInvPDocID
,dteJournalDate = @SQdteJournalDate
,strPoNumber = @SQstrPoNumber
,decOrgAmount = @SQdecOrgAmount
,decOweAmount = @SQdecOweAmount
,decDiscAvailable = @SQdecDiscAvailable
,decAmount = @SQdecAmount
,decDiscount = @SQdecDiscount
,bitIsForeign = @SQbitIsForeign
,decAmountF = @SQdecAmountF
,decDiscountF = @SQdecDiscountF
,bitPaid = @SQbitPaid
,lngID = @SQlngID
WHERE lngVendPayApprovalLineID = @SQlngVendPayApprovalLineID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [UpdateVendPayApprovalData] 
@SQApprovalID as bigint
AS
BEGIN
UPDATE tblVendPayApproval
SET decAmount = (
SELECT ISNULL(SUM(decAmount), 0)
FROM tblVendPayApprovalDT
WHERE lngVendPayApprovalID = @SQApprovalID
) + decPrepayment
,decAmountF = (
SELECT ISNULL(SUM(decAmountF), 0)
FROM tblVendPayApprovalDT
WHERE lngVendPayApprovalID = @SQApprovalID
) + decPrepaymentF
WHERE lngVendPayApprovalID = @SQApprovalID;
END
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetPaymentApprovalsPickerData] @SQStart AS SMALLDATETIME
	,@SQEnd AS SMALLDATETIME
	,@ShowAll AS BIT
	,@ShowIndex AS INT
	,@SortIndex AS INT
	,@VendName AS NVARCHAR(max) NULL
	,@IsVendor AS BIT
AS
BEGIN
	IF (@ShowAll = 0)
		SELECT Z.lngVendPayApprovalID AS VendPayApprovalID
			,Z.dteJournalDate AS JournalDate
			,Z.strVendName AS VendName
			,Z.strVendDesc AS VendDesc
			,Z.bitIsForeign AS IsForeign
			,Z.strCurrency AS Currency
			,Z.decAmount AS Amount
			,Z.decAmountF AS AmountF
		FROM (
			SELECT tblVendPayApproval.lngVendPayApprovalID
				,tblVendPayApproval.dteJournalDate
				,tblVendPayApproval.strVendName
				,(
					SELECT strVendDesc
					FROM tblVendors
					WHERE strVendName = tblVendPayApproval.strVendName
					) AS strVendDesc
				,tblVendPayApproval.bitIsForeign
				,tblVendPayApproval.strCurrency
				,tblVendPayApproval.decAmount
				,tblVendPayApproval.decAmountF
			FROM tblVendPayApproval
			INNER JOIN tblVendPayApprovalDT ON tblVendPayApprovalDT.lngVendPayApprovalID = tblVendPayApproval.lngVendPayApprovalID
			WHERE tblVendPayApprovalDT.bitPaid = 0
			GROUP BY tblVendPayApproval.lngVendPayApprovalID
				,tblVendPayApproval.dteJournalDate
				,tblVendPayApproval.strVendName
				,tblVendPayApproval.bitIsForeign
				,tblVendPayApproval.strCurrency
				,tblVendPayApproval.decAmount
				,tblVendPayApproval.decAmountF
			
			UNION ALL
			
			SELECT tblVendPayApproval.lngVendPayApprovalID
				,tblVendPayApproval.dteJournalDate
				,tblVendPayApproval.strVendName
				,(
					SELECT strVendDesc
					FROM tblVendors
					WHERE strVendName = tblVendPayApproval.strVendName
					) AS strVendDesc
				,tblVendPayApproval.bitIsForeign
				,tblVendPayApproval.strCurrency
				,tblVendPayApproval.decAmount
				,tblVendPayApproval.decAmountF
			FROM tblVendPayApproval
			LEFT JOIN tblVendPayApprovalDT ON tblVendPayApprovalDT.lngVendPayApprovalID = tblVendPayApproval.lngVendPayApprovalID
				AND tblVendPayApprovalDT.bitPaid = 0
			WHERE decPrepayment <> 0
				AND ISNULL(tblVendPayApprovalDT.bitPaid, 0) = 0
			GROUP BY tblVendPayApproval.lngVendPayApprovalID
				,tblVendPayApproval.dteJournalDate
				,tblVendPayApproval.strVendName
				,tblVendPayApproval.bitIsForeign
				,tblVendPayApproval.strCurrency
				,tblVendPayApproval.decAmount
				,tblVendPayApproval.decAmountF
			) Z
		WHERE Z.dteJournalDate BETWEEN @SQStart
				AND @SQEnd
			AND (
				(@IsVendor = 0)
				OR (
					@IsVendor = 1
					AND Z.strVendName = @VendName
					)
				)
		ORDER BY CASE 
				WHEN @SortIndex = 0
					THEN Z.dteJournalDate
				END DESC
			,CASE 
				WHEN @SortIndex = 1
					THEN Z.strVendName
				END ASC
			,CASE 
				WHEN @SortIndex = 2
					THEN Z.strVendDesc
				END ASC
			,CASE 
				WHEN @SortIndex = 3
					THEN Z.decAmount
				END DESC;
	ELSE IF (@ShowIndex = 0)
		SELECT Z.lngVendPayApprovalID AS VendPayApprovalID
			,Z.dteJournalDate AS JournalDate
			,Z.strVendName AS VendName
			,Z.strVendDesc AS VendDesc
			,Z.bitIsForeign AS IsForeign
			,Z.strCurrency AS Currency
			,Z.decAmount AS Amount
			,Z.decAmountF AS AmountF
		FROM (
			SELECT tblVendPayApproval.lngVendPayApprovalID
				,tblVendPayApproval.dteJournalDate
				,tblVendPayApproval.strVendName
				,(
					SELECT strVendDesc
					FROM tblVendors
					WHERE strVendName = tblVendPayApproval.strVendName
					) AS strVendDesc
				,tblVendPayApproval.bitIsForeign
				,tblVendPayApproval.strCurrency
				,tblVendPayApproval.decAmount
				,tblVendPayApproval.decAmountF
			FROM tblVendPayApproval
			INNER JOIN tblVendPayApprovalDT ON tblVendPayApprovalDT.lngVendPayApprovalID = tblVendPayApproval.lngVendPayApprovalID
			WHERE tblVendPayApprovalDT.bitPaid = 0
			GROUP BY tblVendPayApproval.lngVendPayApprovalID
				,tblVendPayApproval.dteJournalDate
				,tblVendPayApproval.strVendName
				,tblVendPayApproval.bitIsForeign
				,tblVendPayApproval.strCurrency
				,tblVendPayApproval.decAmount
				,tblVendPayApproval.decAmountF
			
			UNION ALL
			
			SELECT tblVendPayApproval.lngVendPayApprovalID
				,tblVendPayApproval.dteJournalDate
				,tblVendPayApproval.strVendName
				,(
					SELECT strVendDesc
					FROM tblVendors
					WHERE strVendName = tblVendPayApproval.strVendName
					) AS strVendDesc
				,tblVendPayApproval.bitIsForeign
				,tblVendPayApproval.strCurrency
				,tblVendPayApproval.decAmount
				,tblVendPayApproval.decAmountF
			FROM tblVendPayApproval
			LEFT JOIN tblVendPayApprovalDT ON tblVendPayApprovalDT.lngVendPayApprovalID = tblVendPayApproval.lngVendPayApprovalID
				AND ISNULL(tblVendPayApprovalDT.bitPaid, 0) = 0
			WHERE decPrepayment <> 0
				AND bitPrepaymentUsed = 0
			GROUP BY tblVendPayApproval.lngVendPayApprovalID
				,tblVendPayApproval.dteJournalDate
				,tblVendPayApproval.strVendName
				,tblVendPayApproval.bitIsForeign
				,tblVendPayApproval.strCurrency
				,tblVendPayApproval.decAmount
				,tblVendPayApproval.decAmountF
			) Z
		WHERE Z.dteJournalDate BETWEEN @SQStart
				AND @SQEnd
			AND (
				(@IsVendor = 0)
				OR (
					@IsVendor = 1
					AND Z.strVendName = @VendName
					)
				)
		ORDER BY CASE 
				WHEN @SortIndex = 0
					THEN Z.dteJournalDate
				END DESC
			,CASE 
				WHEN @SortIndex = 1
					THEN Z.strVendName
				END ASC
			,CASE 
				WHEN @SortIndex = 2
					THEN Z.strVendDesc
				END ASC
			,CASE 
				WHEN @SortIndex = 3
					THEN Z.decAmount
				END DESC;
	ELSE
		SELECT Z.lngVendPayApprovalID AS VendPayApprovalID
			,Z.dteJournalDate AS JournalDate
			,Z.strVendName AS VendName
			,Z.strVendDesc AS VendDesc
			,Z.bitIsForeign AS IsForeign
			,Z.strCurrency AS Currency
			,Z.decAmount AS Amount
			,Z.decAmountF AS AmountF
		FROM (
			SELECT DISTINCT lngVendPayApprovalID
				,dteJournalDate
				,strVendName
				,(
					SELECT strVendDesc
					FROM tblVendors
					WHERE strVendName = tblVendPayApproval.strVendName
					) AS strVendDesc
				,bitIsForeign
				,strCurrency
				,decAmount
				,decAmountF
			FROM tblVendPayApproval
			) Z
		WHERE Z.dteJournalDate BETWEEN @SQStart
				AND @SQEnd
			AND (
				(@IsVendor = 0)
				OR (
					@IsVendor = 1
					AND Z.strVendName = @VendName
					)
				)
		ORDER BY CASE 
				WHEN @SortIndex = 0
					THEN Z.dteJournalDate
				END DESC
			,CASE 
				WHEN @SortIndex = 1
					THEN Z.strVendName
				END ASC
			,CASE 
				WHEN @SortIndex = 2
					THEN Z.strVendDesc
				END ASC
			,CASE 
				WHEN @SortIndex = 3
					THEN Z.decAmount
				END DESC;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetCategoryData] 
AS
BEGIN
SELECT strCategory as Category FROM tblInvCat WHERE bitInactive = 0 ORDER BY strCategory;
END
GO
----------------------------------------------------
CREATE PROCEDURE [GetRebateProcessDataList] 
@SQVendName as nvarchar(50)
AS
BEGIN
SELECT intRebateId as RebateId
,strRebateName as RebateName
,strVendName as VendorName
,dtRebateStartDate as StartDate
,dtRebateEndDate as EndDate
,strCategory as Category
,strPartNumber as PartNumber
,decRebateVal as RebateValue
,intRebateOrder as OrderType
,strCustName as CustName
FROM tblRebateSetup
WHERE strVendName = @SQVendName;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRebateProcessList] 
@SQVendorNumber AS NVARCHAR(max)
,@SQStartDate AS DATETIME
,@SQEndDate AS DATETIME
AS
BEGIN
SELECT tblInvoiceDocPDT.strPartNumber AS ItemCode
,tblInvoiceDocPDT.strPartDesc AS ItemDescription
,tblInvoiceDocP.dteJournalDate AS JunDate
,tblInvoiceDocP.strInvPDocID AS Document
,ISNULL(tblInvTracking.lngJourID, 0) AS [lngJourID]
,tblInvoiceDocPDT.decBuyQty AS Qty
,CAST(ISNULL(tblInvTrackingDT.decRevenue, 0) AS NUMERIC(16, 2)) AS Revenue
,CAST(CASE 
WHEN ISNULL(tblInvTrackingDT.decCOGS, 0) = 0
THEN ISNULL(tblInvTrackingDT.decValue, 0)
ELSE ISNULL(tblInvTrackingDT.decCOGS, 0)
END AS NUMERIC(16, 2)) AS Cost
,CAST(ISNULL(tblInvTrackingDT.decRevenue - tblInvTrackingDT.decCOGS, 0) AS NUMERIC(16, 2)) AS PROFIT
,CASE 
WHEN (tblInvoiceDocPDT.intType = 1)
THEN 'Stock Item'
WHEN (tblInvoiceDocPDT.intType = 4)
THEN 'Service Item'
ELSE CASE 
WHEN (tblInvoiceDocPDT.intType = 11)
THEN 'Buyout Item'
ELSE 'Journal Code'
END
END AS [Item_Type]
,ISNULL(tblInv.strCategory, '') AS ItemCategory
,ISNULL(tblInv.strAcctSet, '') AS [Account_Set]
,tblInvoiceDocP.strUserName AS [User_Name]
,CASE 
WHEN (tblInvTrackingDT.decRevenue <> 0)
THEN (CAST(((tblInvTrackingDT.decRevenue - tblInvTrackingDT.decCOGS) / tblInvTrackingDT.decRevenue * 100) AS NUMERIC(16, 2)))
ELSE 0
END AS Margin
,tblRebateSetup.strPartNumber as RebateItemCode
,tblRebateSetup.intRebateId as RebateId
,tblRebateSetup.intRebateOrder as Ordertype
,tblRebateSetup.strRebateName as RebateName
,tblRebateSetup.strCustName as CustVendNumber
,tblRebateSetup.decRebateVal as RebatePecentage
,tblRebateSetup.dtRebateStartDate
,tblRebateSetup.dtRebateEndDate
,CAST((((CASE 
WHEN ISNULL(tblInvTrackingDT.decCOGS, 0) = 0
THEN ISNULL(tblInvTrackingDT.decValue, 0)
ELSE ISNULL(tblInvTrackingDT.decCOGS, 0)
END) * tblRebateSetup.decRebateVal)/100) AS NUMERIC(16, 2)) AS RebateValue
,tblInvoiceDocP.strVendInvNo as VendInv
,tblInvoiceDocPDT.intLineNo AS [LineNo]
,(Select Max(isnull(tblRebateProcessItems.dteRowUpdate,'')) from tblRebateProcessItems inner join tblRebateProcesses on tblRebateProcessItems.intRebateProcessId=tblRebateProcesses.intRebateProcessId 
and tblRebateProcesses.intRebateId=tblRebateSetup.intRebateId
AND  tblRebateProcessItems.strItemCode=tblInvoiceDocPDT.strPartNumber
AND  tblRebateProcessItems.strDocNumber=tblInvoiceDocP.strInvPDocID) as RowUpdate
FROM tblInvoiceDocPDT
INNER JOIN tblInvoiceDocP ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocP.strInvPDocID
INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber
AND tblInvoiceDocPDT.strLocation = tblInv.strLocName
LEFT JOIN tblInvTrackingDT ON tblInvTrackingDT.strPartNumber = tblInvoiceDocPDT.strPartNumber
AND tblInvTrackingDT.strSource = tblInvoiceDocPDT.strInvPDocID
AND tblInvTrackingDT.intLineNo = tblInvoiceDocPDT.intLineNo
AND tblInvTrackingDT.lngInvTrackID = (
SELECT MAX(lngInvTrackID)
FROM tblInvTrackingDT
WHERE strSource = tblInvoiceDocP.strInvPDocID
)
LEFT JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
Inner join tblRebateSetupItems on tblRebateSetupItems.strPartNumber= tblInvoiceDocPDT.strPartNumber
Inner join tblRebateSetup On tblRebateSetupItems.intRebateId=tblRebateSetup.intRebateId and tblRebateSetup.strVendName =tblInvoiceDocP.strVendName
WHERE tblInvoiceDocP.strVendName = @SQVendorNumber
AND tblInvoiceDocP.dteJournalDate BETWEEN @SQStartDate
AND @SQEndDate	
AND tblRebateSetup.dtRebateStartDate<= tblInvoiceDocP.dteJournalDate and tblRebateSetup.dtRebateEndDate>=tblInvoiceDocP.dteJournalDate
ORDER BY JunDate
,ItemCode
,Document;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvTypeData] 
@SQPart as nvarchar(50)
AS
BEGIN
SELECT intType as [Type] FROM tblInv WHERE strPartNumber = @SQPart;
END
GO

/****** Object:  StoredProcedure [dbo].[GetDepartments]    Script Date: 06-04-2022 11:52:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[AddAccountsDept]
(
@SQintGLNumber nvarchar(max),
@SQintDept int,
@SQstrAcctDept nvarchar(100)
)
AS
INSERT INTO tblAccountsDept VALUES (@SQintGLNumber,@SQintDept,@SQstrAcctDept,0,0,0,0,0,0,0,0,0,0,0)
GO

/****** Object:  StoredProcedure [dbo].[AddDepartment]    Script Date: 08-04-2022 17:40:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[AddDepartment]
(
@SQDept int,
@SQDesc nvarchar(max),
@SQInactive bit
)
AS
INSERT INTO tblDepartments VALUES (@SQDept,@SQDesc,@SQInactive,GetDate())
GO

/****** Object:  StoredProcedure [dbo].[LoadCustomers]    Script Date: 12-04-2022 17:30:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[AddTblCentersT]
(
@SQstrTemplate VARCHAR(100),
@SQstrDesc varchar(100),
@SQbitInactive bit
)
AS
BEGIN
INSERT INTO tblCentersT VALUES (@SQstrTemplate,@SQstrDesc,@SQbitInactive)
END
GO

/****** Object:  StoredProcedure [dbo].[GetCurrentAndRetainedEarningsAccounts]    Script Date: 07-04-2022 15:53:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[DeleteAccountsDept]
(
@SQGLNumber nvarchar(200),
@SQDept int
)
AS
BEGIN
DELETE FROM tblAccountsDept WHERE (intGLNumber = @SQGLNumber) AND (intDept = @SQDept)

END
GO

/****** Object:  StoredProcedure [dbo].[GetCurrentAndRetainedEarningsAccounts]    Script Date: 07-04-2022 15:53:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[DeleteDepartments]
(
@SQDeptNumber int
)
AS
DELETE FROM tblDepartments WHERE intDept = @SQDeptNumber

GO

/****** Object:  StoredProcedure [dbo].[DeleteFromTblAccountsSL]    Script Date: 15-04-2022 10:46:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[DeleteFromTblAccountsSL]
(
@SQGLNumber nvarchar(max)
)
AS
BEGIN
DELETE FROM tblAccountsSL WHERE intGLNumber = @SQGLNumber
END

GO

/****** Object:  StoredProcedure [dbo].[LoadCustomers]    Script Date: 12-04-2022 17:30:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[DeleteTblCentersTByTempName]
(
@SQTemName VARCHAR(100)
)
AS
BEGIN
DELETE FROM tblCentersT WHERE strTemplate = @SQTemName
END

GO

/****** Object:  StoredProcedure [dbo].[LoadCustomers]    Script Date: 12-04-2022 17:30:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[DeleteTblCentersTDT]
(
@SQTemplate VARCHAR(100)
)
AS
BEGIN
DELETE FROM tblCentersTDT WHERE strTemplate = @SQTemplate
END

GO

/****** Object:  StoredProcedure [dbo].[GetCurrentAndRetainedEarningsAccounts]    Script Date: 07-04-2022 15:53:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[EditAccountsDept]
(
@SQStrAcctDept varchar(100),
@SQGLNumber nvarchar(max),
@SQDeptNumber int
)
AS
UPDATE tblAccountsDept SET strAcctDept = @SQStrAcctDept WHERE intGLNumber = @SQGLNumber AND intDept = @SQDeptNumber

GO

/****** Object:  StoredProcedure [dbo].[GetCurrentAndRetainedEarningsAccounts]    Script Date: 07-04-2022 15:53:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[EditDepartment]
(
@SQDept int,
@SQDesc varchar(100),
@SQInactive bit,
@SQOldName varchar(100)
)
AS
UPDATE tblDepartments SET intDept = @SQDept,strDesc = @SQDesc,bitInactive = @SQInactive WHERE intDept = @SQOldName

GO

/****** Object:  StoredProcedure [dbo].[GetCurrentAndRetainedEarningsAccounts]    Script Date: 07-04-2022 15:53:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[EditManJobCompOverhead]
(
@SQDept int,
@SQOldDept varchar(100)
)
AS
UPDATE tblManJobCompOverhead SET intDept = @SQDept WHERE intDept = @SQOldDept

GO

/****** Object:  StoredProcedure [dbo].[GetCurrentAndRetainedEarningsAccounts]    Script Date: 07-04-2022 15:53:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[EditManLabour]
(
@SQDept int,
@SQOldDept varchar(100)
)
AS
UPDATE tblManLabour SET intDept = @SQDept WHERE intDept = @SQOldDept

GO

/****** Object:  StoredProcedure [dbo].[GetCurrentAndRetainedEarningsAccounts]    Script Date: 07-04-2022 15:53:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[EditManMachinery]
(
@SQDept int,
@SQOldDept varchar(100)
)
AS
UPDATE tblManMachinery SET intDept = @SQDept WHERE intDept = @SQOldDept

GO

/****** Object:  StoredProcedure [dbo].[GeRptInvLedgerLocDetailsSortReportData]    Script Date: 11-03-2022 13:13:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GeRptInvLedgerLocDetailsSortReportData]
(
@ItemList nvarchar(max),
@SQStart varchar(19),
@SQFinish varchar(19),
@SortChrono bit,
@SortJDate bit,
@SQLocation varchar(100)
)
AS

BEGIN

IF(@SortChrono = 1)
BEGIN
SELECT INV.dteJournalDate AS Journal
,(
CASE 
WHEN INV.strSource = ' Stock Count '
THEN (
CASE 
WHEN (
SELECT COUNT(strAdjDocID)
FROM tblInvAdjDoc
WHERE INV.lngJourID = tblInvAdjDoc.lngJourID
AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
) = 0
THEN INV.strSource
ELSE (
SELECT ISNULL(CONCAT (
' SC / '
,strAdjDocID
), INV.strSource)
FROM tblInvAdjDoc
WHERE INV.lngJourID = tblInvAdjDoc.lngJourID
AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
)
END
)
ELSE INV.strSource
END
) AS [Source]
,INV.lngJourID AS LngId
,SUM(ISNULL(tblInvTrackingDT.decQty, 0)) AS Quantity
,SUM(ISNULL(tblInvTrackingDT.decValue, 0)) AS Value
,SUM(dbo.tblInvTrackingDT.decRevenue) AS SellingPrice
,CASE 
WHEN INV.intModule = 2
OR INV.intModule = 8
THEN ISNULL((
SELECT TOP 1 tblInvoiceDoc.strCustName
FROM dbo.tblInvoiceDoc
WHERE dbo.tblInvoiceDoc.strInvDocID = INV.strSource
), '')
WHEN INV.intModule = 1
OR INV.intModule = 7
THEN ISNULL((
SELECT TOP 1 tblInvoiceDocP.strVendName
FROM dbo.tblInvoiceDocP
WHERE dbo.tblInvoiceDocP.strInvPDocID = INV.strSource
), '')
END CustVendNum
FROM tblInvTracking INV
INNER JOIN tblInvTrackingDT ON INV.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
WHERE (tblInvTrackingDT.strPartNumber In(''+@ItemList+''))
AND (
INV.dteJournalDate BETWEEN ''+@SQStart+''
AND ''+@SQFinish+''
)
AND (strLocName = ''+@SQLocation+'')
GROUP BY INV.dteJournalDate
,INV.strSource
,INV.lngJourID
,INV.lngInvTrackID
,INV.intModule

 ORDER BY INV.lngInvTrackID, INV.dteJournalDate, INV.lngJourID
 
END
ELSE IF(@SortJDate = 1)
BEGIN
 SELECT INV.dteJournalDate AS Journal
,(
CASE 
WHEN INV.strSource = ' Stock Count '
THEN (
CASE 
WHEN (
SELECT COUNT(strAdjDocID)
FROM tblInvAdjDoc
WHERE INV.lngJourID = tblInvAdjDoc.lngJourID
AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
) = 0
THEN INV.strSource
ELSE (
SELECT ISNULL(CONCAT (
' SC / '
,strAdjDocID
), INV.strSource)
FROM tblInvAdjDoc
WHERE INV.lngJourID = tblInvAdjDoc.lngJourID
AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
)
END
)
ELSE INV.strSource
END
) AS [Source]
,INV.lngJourID AS LngId
,SUM(ISNULL(tblInvTrackingDT.decQty, 0)) AS Quantity
,SUM(ISNULL(tblInvTrackingDT.decValue, 0)) AS Value
,SUM(dbo.tblInvTrackingDT.decRevenue) AS SellingPrice
,CASE 
WHEN INV.intModule = 2
OR INV.intModule = 8
THEN ISNULL((
SELECT TOP 1 tblInvoiceDoc.strCustName
FROM dbo.tblInvoiceDoc
WHERE dbo.tblInvoiceDoc.strInvDocID = INV.strSource
), '')
WHEN INV.intModule = 1
OR INV.intModule = 7
THEN ISNULL((
SELECT TOP 1 tblInvoiceDocP.strVendName
FROM dbo.tblInvoiceDocP
WHERE dbo.tblInvoiceDocP.strInvPDocID = INV.strSource
), '')
END CustVendNum
FROM tblInvTracking INV
INNER JOIN tblInvTrackingDT ON INV.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
WHERE (tblInvTrackingDT.strPartNumber In(''+@ItemList+''))
AND (
INV.dteJournalDate BETWEEN ''+@SQStart+''
AND ''+@SQFinish+''
)
AND (strLocName = ''+@SQLocation+'')
GROUP BY INV.dteJournalDate
,INV.strSource
,INV.lngJourID
,INV.lngInvTrackID
,INV.intModule

  ORDER BY INV.dteJournalDate, INV.lngJourID, INV.lngInvTrackID
END

END

GO
----------------------------------------------------

/****** Object:  StoredProcedure [dbo].[GeRptInvLedgerLocReportData]    Script Date: 11-03-2022 12:29:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GeRptInvLedgerLocReportData] (
	@ItemList NVARCHAR(max)
	,@Filter INT
	,@IsActive BIT
	,@IsInActive BIT
	,@SQStart VARCHAR(19)
	,@SQFinish VARCHAR(19)
	,@SQLocation VARCHAR(100)
	,@IsSummary BIT
	,@PL_InvSortDescription BIT
	)
AS
DECLARE @Query NVARCHAR(max) = ''

BEGIN
	--Summary
	IF (@IsSummary = 1)
	BEGIN
		IF (@Filter = 2) --Account Sets
		BEGIN
			IF (@PL_InvSortDescription = 0)
			BEGIN
				SELECT MasterTable.strPartNumber AS PartNumber
					,MasterTable.strDesc AS [Description]
					,SUM(tblInvExt.decOpenQty) + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS OpenQty
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decQtyIn), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS QtyIn
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decQtyOut), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS QtyOut
					,SUM(tblInvExt.decOpenValue) + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS OpenVal
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decValueIn), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS ValIn
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decValueOut), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS ValOut
					,tblInvExt.strAcctSet AS OrderByCol
				FROM tblInvExt AS tblInvExt
				INNER JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
				WHERE MasterTable.intType = 1
					AND tblInvExt.strLocName = @SQLocation
					AND (
						tblInvExt.strAcctSet IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND MasterTable.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
				GROUP BY MasterTable.strPartNumber
					,MasterTable.strDesc
					,tblInvExt.strAcctSet
					,tblInvExt.strLocName
				ORDER BY OrderByCol
					,MasterTable.strPartNumber
			END
			ELSE
			BEGIN
				SELECT MasterTable.strPartNumber AS PartNumber
					,MasterTable.strDesc AS [Description]
					,SUM(tblInvExt.decOpenQty) + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS OpenQty
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decQtyIn), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS QtyIn
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decQtyOut), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS QtyOut
					,SUM(tblInvExt.decOpenValue) + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS OpenVal
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decValueIn), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS ValIn
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decValueOut), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS ValOut
					,'' AS OrderByCol
				FROM tblInvExt
				LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
				WHERE MasterTable.intType = 1
					AND tblInvExt.strLocName = @SQLocation
					AND (
						MasterTable.strPartNumber IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND MasterTable.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
				GROUP BY MasterTable.strPartNumber
					,MasterTable.strDesc
					,tblInvExt.strLocName
				ORDER BY OrderByCol
					,[Description]
					,MasterTable.strPartNumber
			END
		END
		ELSE IF (@Filter = 0) --Assets
		BEGIN
			IF (@PL_InvSortDescription = 0)
			BEGIN
				SELECT MasterTable.strPartNumber AS PartNumber
					,MasterTable.strDesc AS [Description]
					,SUM(tblInvExt.decOpenQty) + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS OpenQty
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decQtyIn), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS QtyIn
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decQtyOut), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS QtyOut
					,SUM(tblInvExt.decOpenValue) + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS OpenVal
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decValueIn), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS ValIn
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decValueOut), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS ValOut
					,(CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc) AS OrderByCol
				FROM tblInvExt
				INNER JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
				INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
				INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
				WHERE MasterTable.intType = 1
					AND tblInvExt.strLocName = @SQLocation
					AND (
						tblAccounts.intGLNumber IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND MasterTable.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
				GROUP BY MasterTable.strPartNumber
					,MasterTable.strDesc
					,tblAccounts.strDesc
					,tblInvExt.strLocName
					,tblAccounts.intGLNumber
				ORDER BY OrderByCol
					,MasterTable.strPartNumber
			END
			ELSE
			BEGIN
				SELECT MasterTable.strPartNumber AS PartNumber
					,MasterTable.strDesc AS [Description]
					,SUM(tblInvExt.decOpenQty) + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS OpenQty
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decQtyIn), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS QtyIn
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decQtyOut), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS QtyOut
					,SUM(tblInvExt.decOpenValue) + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS OpenVal
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decValueIn), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS ValIn
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decValueOut), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS ValOut
					,'' AS OrderByCol
				FROM tblInvExt
				LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
				WHERE MasterTable.intType = 1
					AND tblInvExt.strLocName = @SQLocation
					AND (
						MasterTable.strPartNumber IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND MasterTable.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
				GROUP BY MasterTable.strPartNumber
					,MasterTable.strDesc
					,tblInvExt.strLocName
				ORDER BY OrderByCol
					,[Description]
					,MasterTable.strPartNumber
			END
		END
		ELSE IF (@Filter = 1) --Category
		BEGIN
			IF (@PL_InvSortDescription = 0)
			BEGIN
				SELECT MasterTable.strPartNumber AS PartNumber
					,MasterTable.strDesc AS [Description]
					,SUM(tblInvExt.decOpenQty) + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS OpenQty
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decQtyIn), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS QtyIn
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decQtyOut), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS QtyOut
					,SUM(tblInvExt.decOpenValue) + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS OpenVal
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decValueIn), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS ValIn
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decValueOut), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS ValOut
					,MasterTable.strCategory AS OrderByCol
				FROM tblInvExt
				LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
				WHERE MasterTable.intType = 1
					AND tblInvExt.strLocName = @SQLocation
					AND (
						MasterTable.strCategory IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND MasterTable.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
				GROUP BY MasterTable.strPartNumber
					,MasterTable.strDesc
					,MasterTable.strCategory
					,tblInvExt.strLocName
				ORDER BY OrderByCol
					,MasterTable.strPartNumber
			END
			ELSE
			BEGIN
				SELECT MasterTable.strPartNumber AS PartNumber
					,MasterTable.strDesc AS [Description]
					,SUM(tblInvExt.decOpenQty) + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS OpenQty
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decQtyIn), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS QtyIn
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decQtyOut), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS QtyOut
					,SUM(tblInvExt.decOpenValue) + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS OpenVal
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decValueIn), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS ValIn
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decValueOut), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS ValOut
					,'' AS OrderByCol
				FROM tblInvExt
				LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
				WHERE MasterTable.intType = 1
					AND tblInvExt.strLocName = @SQLocation
					AND (
						MasterTable.strPartNumber IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND MasterTable.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
				GROUP BY MasterTable.strPartNumber
					,MasterTable.strDesc
					,tblInvExt.strLocName
				ORDER BY OrderByCol
					,[Description]
					,MasterTable.strPartNumber
			END
		END
		ELSE IF (@Filter = 3) --Inventory Items
		BEGIN
			IF (@PL_InvSortDescription = 0)
			BEGIN
				SELECT MasterTable.strPartNumber AS PartNumber
					,MasterTable.strDesc AS [Description]
					,SUM(tblInvExt.decOpenQty) + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS OpenQty
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decQtyIn), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS QtyIn
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decQtyOut), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS QtyOut
					,SUM(tblInvExt.decOpenValue) + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS OpenVal
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decValueIn), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS ValIn
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decValueOut), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS ValOut
					,'' AS OrderByCol
				FROM tblInvExt
				LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
				WHERE MasterTable.intType = 1
					AND tblInvExt.strLocName = @SQLocation
					AND (
						MasterTable.strPartNumber IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND MasterTable.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
				GROUP BY MasterTable.strPartNumber
					,MasterTable.strDesc
					,tblInvExt.strLocName
				ORDER BY OrderByCol
					,MasterTable.strPartNumber
			END
			ELSE
			BEGIN
				SELECT MasterTable.strPartNumber AS PartNumber
					,MasterTable.strDesc AS [Description]
					,SUM(tblInvExt.decOpenQty) + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS OpenQty
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decQtyIn), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS QtyIn
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decQtyOut), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS QtyOut
					,SUM(tblInvExt.decOpenValue) + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS OpenVal
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decValueIn), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS ValIn
					,(
						SELECT ISNULL(SUM(tblInvTrackingDT.decValueOut), 0)
						FROM tblInvTrackingDT
						INNER JOIN dbo.fnGetInvTrackingAsTable(@SQStart, @SQFinish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
						WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
							AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
						) AS ValOut
					,'' AS OrderByCol
				FROM tblInvExt
				LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
				WHERE MasterTable.intType = 1
					AND tblInvExt.strLocName = @SQLocation
					AND (
						MasterTable.strPartNumber IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND MasterTable.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
				GROUP BY MasterTable.strPartNumber
					,MasterTable.strDesc
					,tblInvExt.strLocName
				ORDER BY OrderByCol
					,[Description]
					,MasterTable.strPartNumber
			END
		END
     END
		-- Details
	    ELSE IF (@Filter = 2) --Account Sets
	    BEGIN
		IF (@PL_InvSortDescription = 0)
		BEGIN
			SELECT MasterTable.strPartNumber AS PartNumber
				,MasterTable.strDesc AS [Description]
				,SUM(tblInvExt.decOpenQty) + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
					FROM tblInvTrackingDT
					INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
					WHERE
						 tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
					)
				,SUM(tblInvExt.decOpenValue) + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
					WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
					)
				,tblInvExt.strAcctSet AS OrderByCol
			FROM tblInvExt
			LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
			WHERE MasterTable.intType = 1
				AND tblInvExt.strLocName = @SQLocation
				AND (
					tblInvExt.strAcctSet IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND MasterTable.bitInactive = CASE 
					WHEN @IsInactive = 1
						THEN 1
					WHEN @IsActive = 1
						THEN 0
					END
			GROUP BY MasterTable.strPartNumber
				,MasterTable.strDesc
				,tblInvExt.strAcctSet
				,tblInvExt.strLocName
			ORDER BY OrderByCol
				,MasterTable.strPartNumber
		END
		ELSE
		BEGIN
			SELECT MasterTable.strPartNumber AS PartNumber
				,MasterTable.strDesc AS [Description]
				,SUM(tblInvExt.decOpenQty) + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
					FROM tblInvTrackingDT
					INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
					WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
					)
				,SUM(tblInvExt.decOpenValue) + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
					WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
					)
				,tblInvExt.strAcctSet AS OrderByCol
			FROM tblInvExt
			LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
			WHERE MasterTable.intType = 1
				AND tblInvExt.strLocName = @SQLocation
				AND (
					tblInvExt.strAcctSet IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND MasterTable.bitInactive = CASE 
					WHEN @IsInactive = 1
						THEN 1
					WHEN @IsActive = 1
						THEN 0
					END
			GROUP BY MasterTable.strPartNumber
				,MasterTable.strDesc
				,tblInvExt.strAcctSet
				,tblInvExt.strLocName
			ORDER BY OrderByCol
				,[Description]
				,MasterTable.strPartNumber
		END
	END
		ELSE IF (@Filter = 0) --Assets
	    BEGIN
		IF (@PL_InvSortDescription = 0)
		BEGIN
			SELECT MasterTable.strPartNumber AS PartNumber
				,MasterTable.strDesc AS [Description]
				,SUM(tblInvExt.decOpenQty) + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
					FROM tblInvTrackingDT
					INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
					WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
					)
				,SUM(tblInvExt.decOpenValue) + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
					WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
					)
				,(CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc) AS OrderByCol
			FROM tblInvExt
			LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
			INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
			INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
			WHERE MasterTable.intType = 1
				AND tblInvExt.strLocName = @SQLocation
				AND (
					tblAccounts.intGLNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND MasterTable.bitInactive = CASE 
					WHEN @IsInactive = 1
						THEN 1
					WHEN @IsActive = 1
						THEN 0
					END
			GROUP BY MasterTable.strPartNumber
				,MasterTable.strDesc
				,tblAccounts.strDesc
				,tblAccounts.intGLNumber
				,tblInvExt.strLocName
			ORDER BY OrderByCol
				,MasterTable.strPartNumber
		END
		ELSE
		BEGIN
			SELECT MasterTable.strPartNumber AS PartNumber
				,MasterTable.strDesc AS [Description]
				,SUM(tblInvExt.decOpenQty) + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
					FROM tblInvTrackingDT
					INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
					WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
					)
				,SUM(tblInvExt.decOpenValue) + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
					WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
					)
				,(CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc) AS OrderByCol
			FROM tblInvExt
			LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
			INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
			INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
			WHERE MasterTable.intType = 1
				AND tblInvExt.strLocName = @SQLocation
				AND (
					tblAccounts.intGLNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND MasterTable.bitInactive = CASE 
					WHEN @IsInactive = 1
						THEN 1
					WHEN @IsActive = 1
						THEN 0
					END
			GROUP BY MasterTable.strPartNumber
				,MasterTable.strDesc
				,tblAccounts.strDesc
				,tblAccounts.intGLNumber
				,tblInvExt.strLocName
			ORDER BY OrderByCol
				,[Description]
				,MasterTable.strPartNumber
		END
	END
	    ELSE IF (@Filter = 1) --Category
	    BEGIN
		IF (@PL_InvSortDescription = 0)
		BEGIN
			SELECT MasterTable.strPartNumber AS PartNumber
				,MasterTable.strDesc AS [Description]
				,SUM(tblInvExt.decOpenQty) + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
					FROM tblInvTrackingDT
					INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
					WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
					)
				,SUM(tblInvExt.decOpenValue) + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
					WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
					)
				,MasterTable.strCategory AS OrderByCol
			FROM tblInvExt
			LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
			WHERE MasterTable.intType = 1
				AND tblInvExt.strLocName = @SQLocation
				AND (
					MasterTable.strCategory IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND MasterTable.bitInactive = CASE 
					WHEN @IsInactive = 1
						THEN 1
					WHEN @IsActive = 1
						THEN 0
					END
			GROUP BY MasterTable.strPartNumber
				,MasterTable.strDesc
				,MasterTable.strCategory
				,tblInvExt.strLocName
			ORDER BY OrderByCol
				,MasterTable.strPartNumber
		END
		ELSE
		BEGIN
			SELECT MasterTable.strPartNumber AS PartNumber
				,MasterTable.strDesc AS [Description]
				,SUM(tblInvExt.decOpenQty) + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
					FROM tblInvTrackingDT
					INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
					WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
					)
				,SUM(tblInvExt.decOpenValue) + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
					WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
					)
				,MasterTable.strCategory AS OrderByCol
			FROM tblInvExt
			LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
			WHERE MasterTable.intType = 1
				AND tblInvExt.strLocName = @SQLocation
				AND (
					MasterTable.strCategory IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND MasterTable.bitInactive = CASE 
					WHEN @IsInactive = 1
						THEN 1
					WHEN @IsActive = 1
						THEN 0
					END
			GROUP BY MasterTable.strPartNumber
				,MasterTable.strDesc
				,MasterTable.strCategory
				,tblInvExt.strLocName
			ORDER BY OrderByCol
				,[Description]
				,MasterTable.strPartNumber
		END
	END
	    ELSE IF (@Filter = 3) --Inventory Items
	    BEGIN
		IF (@PL_InvSortDescription = 0)
		BEGIN
			SELECT MasterTable.strPartNumber AS PartNumber
				,MasterTable.strDesc AS [Description]
				,SUM(tblInvExt.decOpenQty) + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
					FROM tblInvTrackingDT
					INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
					WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
					)
				,SUM(tblInvExt.decOpenValue) + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
					WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
					)
				,'' AS OrderByCol
			FROM tblInvExt
			LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
			WHERE MasterTable.intType = 1
				AND tblInvExt.strLocName = @SQLocation
				AND (
					MasterTable.strPartNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND MasterTable.bitInactive = CASE 
					WHEN @IsInactive = 1
						THEN 1
					WHEN @IsActive = 1
						THEN 0
					END
			GROUP BY MasterTable.strPartNumber
				,MasterTable.strDesc
				,tblInvExt.strLocName
			ORDER BY OrderByCol
				,MasterTable.strPartNumber
		END
		ELSE
		BEGIN
			SELECT MasterTable.strPartNumber AS PartNumber
				,MasterTable.strDesc AS [Description]
				,SUM(tblInvExt.decOpenQty) + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
					FROM tblInvTrackingDT
					INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
					WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
					)
				,SUM(tblInvExt.decOpenValue) + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@SQStart) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
					WHERE tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber
						AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
					)
				,'' AS OrderByCol
			FROM tblInvExt
			LEFT JOIN tblInv AS MasterTable ON tblInvExt.strPartNumber = MasterTable.strPartNumber
			WHERE MasterTable.intType = 1
				AND tblInvExt.strLocName = @SQLocation
				AND (
					MasterTable.strPartNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND MasterTable.bitInactive = CASE 
					WHEN @IsInactive = 1
						THEN 1
					WHEN @IsActive = 1
						THEN 0
					END
			GROUP BY MasterTable.strPartNumber
				,MasterTable.strDesc
				,tblInvExt.strLocName
			ORDER BY OrderByCol
				,[Description]
				,MasterTable.strPartNumber
		END
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GeRptInvSynReportData]    Script Date: 11-03-2022 16:42:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GeRptInvSynReportData](
@IsCurrent bit,
@IsSummary bit,
@IsDetail bit,
@FilterItem int,
@IsActive bit,
@IsInactive bit,
@IsAll bit,
@PL_InvSortDescription bit,
@SQAsAtDate varchar(10),
@ItemList varchar(max) = ''
)
AS
DECLARE @Query nvarchar(max) = ''
BEGIN
	IF(@IsCurrent = 1)--current
	BEGIN
		IF(@IsSummary = 1)
		BEGIN
		IF(@PL_InvSortDescription = 0)
		BEGIN
			IF(@FilterItem = 2)--Account Sets
			BEGIN
			if(@IsAll =1)
			    SELECT tblInv.strPartNumber, strDesc, SUM(tblInvExt.decAvail) As decSumAvail, SUM(tblInvExt.decAlloc) As decSumAlloc, SUM(tblInvExt.decOnHand) As decSumOnHand, SUM(tblInvExt.decValue) As decSumValue, tblInvExt.strAcctSet AS OrderbyCol, 
				SUM(tblInvExt.decManuf) As decSumManuf 
				FROM tblInvExt 
				LEFT JOIN  tblInv ON tblInvExt.strPartNumber =  tblInv.strPartNumber 
				WHERE (tblInv.intType = 1) 
				AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				GROUP BY tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strAcctSet
				ORDER BY OrderbyCol,strPartNumber
			else
				SELECT tblInv.strPartNumber, strDesc, SUM(tblInvExt.decAvail) As decSumAvail, SUM(tblInvExt.decAlloc) As decSumAlloc, SUM(tblInvExt.decOnHand) As decSumOnHand, SUM(tblInvExt.decValue) As decSumValue, tblInvExt.strAcctSet AS OrderbyCol, 
				SUM(tblInvExt.decManuf) As decSumManuf 
				FROM tblInvExt 
				LEFT JOIN  tblInv ON tblInvExt.strPartNumber =  tblInv.strPartNumber 
				WHERE (tblInv.intType = 1) 
				AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END 
				GROUP BY tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strAcctSet
				ORDER BY OrderbyCol,strPartNumber
			end
			ELSE IF(@FilterItem = 0)--Assets
			BEGIN
			if(@IsAll =1)
				SELECT tblInv.strPartNumber, tblInv.strDesc, SUM(tblInvExt.decAvail) As decSumAvail, SUM(tblInvExt.decAlloc) As decSumAlloc, SUM(tblInvExt.decOnHand) As decSumOnHand, SUM(tblInvExt.decValue) As decSumValue, CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol, SUM(tblInvExt.decManuf) As decSumManuf 
				FROM tblInvExt 
				LEFT JOIN tblInv ON tblInv.strPartNumber = tblInvExt.strPartNumber 
				JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet 
				INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
				WHERE (tblInv.intType = 1) 
				AND ((decSumOnHand + decSumValue) <> 0) 
				AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				
				GROUP BY tblInv.strPartNumber, tblInv.strDesc, CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc
				ORDER BY OrderbyCol,strPartNumber
				else
				SELECT tblInv.strPartNumber, tblInv.strDesc, SUM(tblInvExt.decAvail) As decSumAvail, SUM(tblInvExt.decAlloc) As decSumAlloc, SUM(tblInvExt.decOnHand) As decSumOnHand, SUM(tblInvExt.decValue) As decSumValue, CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol, SUM(tblInvExt.decManuf) As decSumManuf 
				FROM tblInvExt 
				LEFT JOIN tblInv ON tblInv.strPartNumber = tblInvExt.strPartNumber 
				JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet 
				INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
				WHERE (tblInv.intType = 1) 
				AND ((decSumOnHand + decSumValue) <> 0) 
				AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				GROUP BY tblInv.strPartNumber, tblInv.strDesc, CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc
				ORDER BY OrderbyCol,strPartNumber
			End
			ELSE IF(@FilterItem = 1)--Category
			BEGIN
			if(@IsAll =1)
				SELECT strPartNumber, strDesc, decSumAvail, decSumAlloc, decSumOnHand, decSumValue, strCategory AS OrderbyCol, decSumManuf 
				FROM tblInv
				WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND ((decSumOnHand + decSumValue) <> 0) 
				AND (strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				ORDER BY OrderbyCol,strPartNumber
				else
				SELECT strPartNumber, strDesc, decSumAvail, decSumAlloc, decSumOnHand, decSumValue, strCategory AS OrderbyCol, decSumManuf 
				FROM tblInv
				WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND ((decSumOnHand + decSumValue) <> 0) 
				AND (strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol,strPartNumber
			ENd
			ELSE IF(@FilterItem = 3)--Items
			BEGIN
			if(@IsAll =1)
				SELECT strPartNumber, strDesc, decSumAvail, decSumAlloc, decSumOnHand, decSumValue, '' AS OrderbyCol, decSumManuf 
				FROM tblInv 
				WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND ((decSumOnHand + decSumValue) <> 0) 
				AND (strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				ORDER BY OrderbyCol,strPartNumber
		    else
				SELECT strPartNumber, strDesc, decSumAvail, decSumAlloc, decSumOnHand, decSumValue, '' AS OrderbyCol, decSumManuf 
				FROM tblInv 
				WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND ((decSumOnHand + decSumValue) <> 0) 
				AND (strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol,strPartNumber
			END
			END
		ELSE
		BEGIN
			IF(@FilterItem = 2)--Account Sets
			BEGIN
			   if(@IsAll =1)
			   SELECT tblInv.strPartNumber, strDesc, SUM(tblInvExt.decAvail) As decSumAvail, SUM(tblInvExt.decAlloc) As decSumAlloc, SUM(tblInvExt.decOnHand) As decSumOnHand, SUM(tblInvExt.decValue) As decSumValue, tblInvExt.strAcctSet AS OrderbyCol, 
				SUM(tblInvExt.decManuf) As decSumManuf 
				FROM tblInvExt 
				LEFT JOIN  tblInv ON tblInvExt.strPartNumber =  tblInv.strPartNumber 
				WHERE (tblInv.intType = 1) 
				AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				GROUP BY tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strAcctSet
				ORDER BY OrderbyCol,strDesc
			   else
			   SELECT tblInv.strPartNumber, strDesc, SUM(tblInvExt.decAvail) As decSumAvail, SUM(tblInvExt.decAlloc) As decSumAlloc, SUM(tblInvExt.decOnHand) As decSumOnHand, SUM(tblInvExt.decValue) As decSumValue, tblInvExt.strAcctSet AS OrderbyCol, 
				SUM(tblInvExt.decManuf) As decSumManuf 
				FROM tblInvExt 
				LEFT JOIN  tblInv ON tblInvExt.strPartNumber =  tblInv.strPartNumber 
				WHERE (tblInv.intType = 1) 
				AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				GROUP BY tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strAcctSet
				ORDER BY OrderbyCol,strDesc
			END
			ELSE IF(@FilterItem = 0)--Assets
			BEGIN
			if(@IsAll =1)
				SELECT tblInv.strPartNumber, tblInv.strDesc, SUM(tblInvExt.decAvail) As decSumAvail, SUM(tblInvExt.decAlloc) As decSumAlloc, SUM(tblInvExt.decOnHand) As decSumOnHand, SUM(tblInvExt.decValue) As decSumValue, CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol, SUM(tblInvExt.decManuf) As decSumManuf 
				FROM tblInvExt 
				LEFT JOIN tblInv ON tblInv.strPartNumber = tblInvExt.strPartNumber 
				JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet 
				INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
				WHERE (tblInv.intType = 1) 
				AND ((decSumOnHand + decSumValue) <> 0) 
				AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				GROUP BY tblInv.strPartNumber, tblInv.strDesc, CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc
				ORDER BY OrderbyCol,strDesc
				else
				SELECT tblInv.strPartNumber, tblInv.strDesc, SUM(tblInvExt.decAvail) As decSumAvail, SUM(tblInvExt.decAlloc) As decSumAlloc, SUM(tblInvExt.decOnHand) As decSumOnHand, SUM(tblInvExt.decValue) As decSumValue, CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol, SUM(tblInvExt.decManuf) As decSumManuf 
				FROM tblInvExt 
				LEFT JOIN tblInv ON tblInv.strPartNumber = tblInvExt.strPartNumber 
				JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet 
				INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
				WHERE (tblInv.intType = 1) 
				AND ((decSumOnHand + decSumValue) <> 0) 
				AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				GROUP BY tblInv.strPartNumber, tblInv.strDesc, CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc
				ORDER BY OrderbyCol,strDesc
			END
			ELSE IF(@FilterItem = 1)--Category
			BEGIN
			if(@IsAll =1)
				SELECT strPartNumber, strDesc, decSumAvail, decSumAlloc, decSumOnHand, decSumValue, strCategory AS OrderbyCol, decSumManuf 
				FROM tblInv
				WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND ((decSumOnHand + decSumValue) <> 0) 
				AND (strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				ORDER BY OrderbyCol,strDesc
				ELSE
				SELECT strPartNumber, strDesc, decSumAvail, decSumAlloc, decSumOnHand, decSumValue, strCategory AS OrderbyCol, decSumManuf 
				FROM tblInv
				WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND ((decSumOnHand + decSumValue) <> 0) 
				AND (strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol,strDesc
			END
			ELSE IF(@FilterItem = 3)--Items
			BEGIN
			if(@IsAll =1)
				SELECT strPartNumber, strDesc, decSumAvail, decSumAlloc, decSumOnHand, decSumValue, '' AS OrderbyCol, decSumManuf 
				FROM tblInv 
				WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND ((decSumOnHand + decSumValue) <> 0) 
				AND (strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				ORDER BY OrderbyCol,strDesc
			else
				SELECT strPartNumber, strDesc, decSumAvail, decSumAlloc, decSumOnHand, decSumValue, '' AS OrderbyCol, decSumManuf 
				FROM tblInv 
				WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND ((decSumOnHand + decSumValue) <> 0) 
				AND (strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol,strDesc
			END
		END
		END
		ELSE IF(@IsDetail = 1)
		BEGIN
		IF(@PL_InvSortDescription = 0)
		BEGIN
			IF(@FilterItem = 2)--Account Sets
			BEGIN
			if(@IsAll =1)
			SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strLocName, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, tblInvExt.strAcctSet AS OrderbyCol, tblInvExt.decManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocName WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0) AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				ORDER BY OrderbyCol,tblInv.strPartNumber, tblInvExt.strLocName
			else
				SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strLocName, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, tblInvExt.strAcctSet AS OrderbyCol, tblInvExt.decManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocName WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0) AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol,tblInv.strPartNumber, tblInvExt.strLocName
			END
			ELSE IF(@FilterItem = 0)--Assets
			BEGIN
			if(@IsAll =1)
				SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strLocName, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, CAST(tblAccounts.intGLNumber AS varchar(50)) + ' ' + tblAccounts.strDesc AS OrderbyCol, tblInvExt.decManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocName WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0) AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				ORDER BY OrderbyCol,tblInv.strPartNumber, tblInvExt.strLocName
			else
				SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strLocName, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, CAST(tblAccounts.intGLNumber AS varchar(50)) + ' ' + tblAccounts.strDesc AS OrderbyCol, tblInvExt.decManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocName WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0) AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol,tblInv.strPartNumber, tblInvExt.strLocName
			END
			ELSE IF(@FilterItem = 1)--Category
			BEGIN
			if(@IsAll =1)
			SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strLocName, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, tblInv.strCategory AS OrderbyCol, tblInvExt.decManuf FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0) AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				ORDER BY OrderbyCol,tblInv.strPartNumber, tblInvExt.strLocName
			else
				SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strLocName, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, tblInv.strCategory AS OrderbyCol, tblInvExt.decManuf FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0) AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol,tblInv.strPartNumber, tblInvExt.strLocName
			END
			ELSE IF(@FilterItem = 3)--Items
			BEGIN
			if(@IsAll =1)
				SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strLocName, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, '''' AS OrderbyCol, tblInvExt.decManuf FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0) AND (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				ORDER BY OrderbyCol,tblInv.strPartNumber, tblInvExt.strLocName
			else
				SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strLocName, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, '''' AS OrderbyCol, tblInvExt.decManuf FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0) AND (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol,tblInv.strPartNumber, tblInvExt.strLocName
			END
		END
		ELSE
		BEGIN
			IF(@FilterItem = 2)--Account Sets
			BEGIN
			if(@IsAll =1)
			SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strLocName, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, tblInvExt.strAcctSet AS OrderbyCol, tblInvExt.decManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocName WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0) AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				ORDER BY OrderbyCol,tblInv.strDesc, tblInv.strPartNumber, tblInvExt.strLocName
			else
				SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strLocName, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, tblInvExt.strAcctSet AS OrderbyCol, tblInvExt.decManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocName WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0) AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol,tblInv.strDesc, tblInv.strPartNumber, tblInvExt.strLocName
			END
			ELSE IF(@FilterItem = 0)--Assets
			BEGIN
			if(@IsAll =1)
				SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strLocName, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, CAST(tblAccounts.intGLNumber AS varchar(50)) + ' ' + tblAccounts.strDesc AS OrderbyCol, tblInvExt.decManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocName WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0) AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				ORDER BY OrderbyCol,tblInv.strDesc, tblInv.strPartNumber, tblInvExt.strLocName
			else
				SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strLocName, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, CAST(tblAccounts.intGLNumber AS varchar(50)) + ' ' + tblAccounts.strDesc AS OrderbyCol, tblInvExt.decManuf FROM dbo.fnTblInvForLocJoin() tblInv INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocName WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0) AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol,tblInv.strDesc, tblInv.strPartNumber, tblInvExt.strLocName
			END
			ELSE IF(@FilterItem = 1)--Category
			BEGIN
			if(@IsAll =1)
				SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strLocName, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, tblInv.strCategory AS OrderbyCol, tblInvExt.decManuf FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0) AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				ORDER BY OrderbyCol,tblInv.strDesc, tblInv.strPartNumber, tblInvExt.strLocName
			else
				SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strLocName, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, tblInv.strCategory AS OrderbyCol, tblInvExt.decManuf FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0) AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol,tblInv.strDesc, tblInv.strPartNumber, tblInvExt.strLocName
			END
			ELSE IF(@FilterItem = 3)--Items
			BEGIN
			if(@IsAll =1)
				SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strLocName, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, '' AS OrderbyCol, tblInvExt.decManuf FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0) AND (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				ORDER BY OrderbyCol,tblInv.strDesc, tblInv.strPartNumber, tblInvExt.strLocName
			else
				SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.strLocName, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, '' AS OrderbyCol, tblInvExt.decManuf FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0) AND (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
				AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol,tblInv.strDesc, tblInv.strPartNumber, tblInvExt.strLocName
			END
		END
	    END
	END
	ELSE --synopsisAsAt
	BEGIN
		IF(@IsSummary = 1)
		BEGIN
		IF(@PL_InvSortDescription = 0)
		BEGIN
			IF(@FilterItem = 2)--Account Sets
			BEGIN
			if(@IsAll =1)
			     SELECT Z.strPartNumber, Z.strDesc, SUM(Z.decQty) as decSumQty, SUM(Z.decValue) as decSumValue, Z.OrderbyCol FROM (SELECT MasterTable.strPartNumber, MasterTable.strDesc, ExtTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) 
				AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) AS decQty, ExtTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) as decValue, ExtTable.strAcctSet AS OrderbyCol 
				FROM tblInv AS MasterTable INNER JOIN tblInvExt AS ExtTable ON MasterTable.strPartNumber = ExtTable.strPartNumber WHERE (intType = 1) AND (ExtTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) 
				AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) + ExtTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) 
				AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) <> 0) AND (ExtTable.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				) Z GROUP BY Z.strPartNumber, Z.strDesc, Z.OrderbyCol
				ORDER BY OrderbyCol,strPartNumber
			ELSE
				SELECT Z.strPartNumber, Z.strDesc, SUM(Z.decQty) as decSumQty, SUM(Z.decValue) as decSumValue, Z.OrderbyCol FROM (SELECT MasterTable.strPartNumber, MasterTable.strDesc, ExtTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) 
				AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) AS decQty, ExtTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) as decValue, ExtTable.strAcctSet AS OrderbyCol 
				FROM tblInv AS MasterTable INNER JOIN tblInvExt AS ExtTable ON MasterTable.strPartNumber = ExtTable.strPartNumber WHERE (intType = 1) AND (ExtTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) 
				AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) + ExtTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) 
				AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) <> 0) AND (ExtTable.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				AND MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				) Z GROUP BY Z.strPartNumber, Z.strDesc, Z.OrderbyCol
				ORDER BY OrderbyCol,strPartNumber
			END
			ELSE IF(@FilterItem = 0)--Assets
			BEGIN
			if(@IsAll=1)
				SELECT Z.strPartNumber, Z.strDesc, SUM(Z.decQty) as decSumQty, SUM(Z.decValue) as decSumValue, Z.OrderbyCol FROM (SELECT MasterTable.strPartNumber, MasterTable.strDesc, ExtTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0)
				 FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) AS decQty, ExtTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <=@SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) as decValue, CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol 
				 FROM tblInv AS MasterTable INNER JOIN tblInvExt AS ExtTable ON MasterTable.strPartNumber = ExtTable.strPartNumber INNER JOIN tblAccountSets AS AccTable ON ExtTable.strAcctSet = AccTable.strAcctSet 
				 INNER JOIN tblAccounts ON AccTable.intGLAsset = tblAccounts.intGLNumber 
				 WHERE (intType = 1) AND (ExtTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) + ExtTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT
               INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) <> 0) AND
             (AccTable.intGLAsset IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
			  ) Z GROUP BY Z.strPartNumber, Z.strDesc, Z.OrderbyCol
				ORDER BY OrderbyCol,strPartNumber
		    ELSE
			SELECT Z.strPartNumber, Z.strDesc, SUM(Z.decQty) as decSumQty, SUM(Z.decValue) as decSumValue, Z.OrderbyCol FROM (SELECT MasterTable.strPartNumber, MasterTable.strDesc, ExtTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0)
				 FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) AS decQty, ExtTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <=@SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) as decValue, CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol 
				 FROM tblInv AS MasterTable INNER JOIN tblInvExt AS ExtTable ON MasterTable.strPartNumber = ExtTable.strPartNumber INNER JOIN tblAccountSets AS AccTable ON ExtTable.strAcctSet = AccTable.strAcctSet 
				 INNER JOIN tblAccounts ON AccTable.intGLAsset = tblAccounts.intGLNumber 
				 WHERE (intType = 1) AND (ExtTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) + ExtTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT
               INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) <> 0) AND
             (AccTable.intGLAsset IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
			  AND MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END) Z GROUP BY Z.strPartNumber, Z.strDesc, Z.OrderbyCol
				ORDER BY OrderbyCol,strPartNumber
			END
			ELSE IF(@FilterItem = 1)--Category
			BEGIN
			  if(@IsAll=1)
			      
				SELECT MasterTable.strPartNumber, MasterTable.strDesc, MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) as decSumQty, MasterTable.decSumOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) as decValue, MasterTable.strCategory AS OrderbyCol 
				FROM tblInv AS MasterTable WHERE (intType = 1) AND (MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) + MasterTable.decSumOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) <> 0) AND
				(MasterTable.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				ORDER BY OrderbyCol,strPartNumber
			  ELSE
				SELECT MasterTable.strPartNumber, MasterTable.strDesc, MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) as decSumQty, MasterTable.decSumOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) as decValue, MasterTable.strCategory AS OrderbyCol 
				FROM tblInv AS MasterTable WHERE (intType = 1) AND (MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) + MasterTable.decSumOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) <> 0) AND
				(MasterTable.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				AND MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol,strPartNumber
			END
			ELSE IF(@FilterItem = 3)--Items
			BEGIN
			  if(@IsAll=1)
			  	SELECT MasterTable.strPartNumber, MasterTable.strDesc, MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) as decSumQty, MasterTable.decSumOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) as decValue, '' AS OrderbyCol FROM tblInv AS MasterTable 
				WHERE (intType = 1) AND (MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) + MasterTable.decSumOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) <> 0) AND
				(MasterTable.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				ORDER BY OrderbyCol,strPartNumber
			  ELSE
				SELECT MasterTable.strPartNumber, MasterTable.strDesc, MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) as decSumQty, MasterTable.decSumOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) as decValue, '' AS OrderbyCol FROM tblInv AS MasterTable 
				WHERE (intType = 1) AND (MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) + MasterTable.decSumOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) <> 0) AND
				(MasterTable.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				AND MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol,strPartNumber
			END
		END
		ELSE
		BEGIN
			IF(@FilterItem = 2)--Account Sets
			BEGIN
			   IF(@IsAll =1)
			      SELECT Z.strPartNumber, Z.strDesc, SUM(Z.decQty) as decSumQty, SUM(Z.decValue) as decSumValue, Z.OrderbyCol FROM (SELECT MasterTable.strPartNumber, MasterTable.strDesc, ExtTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) 
				AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) AS decQty, ExtTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) as decValue, ExtTable.strAcctSet AS OrderbyCol 
				FROM tblInv AS MasterTable INNER JOIN tblInvExt AS ExtTable ON MasterTable.strPartNumber = ExtTable.strPartNumber WHERE (intType = 1) AND (ExtTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) 
				AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) + ExtTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) 
				AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) <> 0) AND (ExtTable.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				) Z GROUP BY Z.strPartNumber, Z.strDesc, Z.OrderbyCol
				ORDER BY OrderbyCol,strDesc
			   ELSE
				  SELECT Z.strPartNumber, Z.strDesc, SUM(Z.decQty) as decSumQty, SUM(Z.decValue) as decSumValue, Z.OrderbyCol FROM (SELECT MasterTable.strPartNumber, MasterTable.strDesc, ExtTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) 
				AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) AS decQty, ExtTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) as decValue, ExtTable.strAcctSet AS OrderbyCol 
				FROM tblInv AS MasterTable INNER JOIN tblInvExt AS ExtTable ON MasterTable.strPartNumber = ExtTable.strPartNumber WHERE (intType = 1) AND (ExtTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) 
				AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) + ExtTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) 
				AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) <> 0) AND (ExtTable.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				AND MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				) Z GROUP BY Z.strPartNumber, Z.strDesc, Z.OrderbyCol
				ORDER BY OrderbyCol,strDesc
			END
			ELSE IF(@FilterItem = 0)--Assets
			BEGIN
			  if(@IsAll =1)
			     SELECT Z.strPartNumber, Z.strDesc, SUM(Z.decQty) as decSumQty, SUM(Z.decValue) as decSumValue, Z.OrderbyCol FROM (SELECT MasterTable.strPartNumber, MasterTable.strDesc, ExtTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0)
				 FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) AS decQty, ExtTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <=@SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) as decValue, CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol 
				 FROM tblInv AS MasterTable INNER JOIN tblInvExt AS ExtTable ON MasterTable.strPartNumber = ExtTable.strPartNumber INNER JOIN tblAccountSets AS AccTable ON ExtTable.strAcctSet = AccTable.strAcctSet 
				 INNER JOIN tblAccounts ON AccTable.intGLAsset = tblAccounts.intGLNumber 
				 WHERE (intType = 1) AND (ExtTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) + ExtTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT
               INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) <> 0) AND
             (AccTable.intGLAsset IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
			  ) Z GROUP BY Z.strPartNumber, Z.strDesc, Z.OrderbyCol
				ORDER BY OrderbyCol,strDesc
			  ELSE
				SELECT Z.strPartNumber, Z.strDesc, SUM(Z.decQty) as decSumQty, SUM(Z.decValue) as decSumValue, Z.OrderbyCol FROM (SELECT MasterTable.strPartNumber, MasterTable.strDesc, ExtTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0)
				 FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) AS decQty, ExtTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <=@SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) as decValue, CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol 
				 FROM tblInv AS MasterTable INNER JOIN tblInvExt AS ExtTable ON MasterTable.strPartNumber = ExtTable.strPartNumber INNER JOIN tblAccountSets AS AccTable ON ExtTable.strAcctSet = AccTable.strAcctSet 
				 INNER JOIN tblAccounts ON AccTable.intGLAsset = tblAccounts.intGLNumber 
				 WHERE (intType = 1) AND (ExtTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) + ExtTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT
               INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) AND (tblInvTrackingDT.strLocName = ExtTable.strLocName)) <> 0) AND
             (AccTable.intGLAsset IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))
			  AND MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END) Z GROUP BY Z.strPartNumber, Z.strDesc, Z.OrderbyCol
				ORDER BY OrderbyCol,strDesc
			END
			ELSE IF(@FilterItem = 1)--Category
			BEGIN
			  if(@IsAll =1)
				SELECT MasterTable.strPartNumber, MasterTable.strDesc, MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) as decSumQty, MasterTable.decSumOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) as decValue, MasterTable.strCategory AS OrderbyCol FROM tblInv AS MasterTable 
				WHERE (intType = 1) AND (MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) + MasterTable.decSumOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) <> 0) AND
				(MasterTable.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				ORDER BY OrderbyCol,strDesc
              ELSE
			    SELECT MasterTable.strPartNumber, MasterTable.strDesc, MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) as decSumQty, MasterTable.decSumOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) as decValue, MasterTable.strCategory AS OrderbyCol FROM tblInv AS MasterTable 
				WHERE (intType = 1) AND (MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) + MasterTable.decSumOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) <> 0) AND
				(MasterTable.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				AND MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol,strDesc
			END
			ELSE IF(@FilterItem = 3)--Items
			BEGIN
			if(@IsAll =1)
				SELECT MasterTable.strPartNumber, MasterTable.strDesc, MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) as decSumQty, MasterTable.decSumOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) as decValue, '' AS OrderbyCol FROM tblInv AS MasterTable 
				WHERE (intType = 1) AND (MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) + MasterTable.decSumOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) <> 0) AND
				(MasterTable.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				ORDER BY OrderbyCol,strDesc
			 ELSE
			    SELECT MasterTable.strPartNumber, MasterTable.strDesc, MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) as decSumQty, MasterTable.decSumOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) as decValue, '' AS OrderbyCol FROM tblInv AS MasterTable 
				WHERE (intType = 1) AND (MasterTable.decSumOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) + MasterTable.decSumOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber) <> 0) AND
				(MasterTable.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				AND MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol,strDesc
			END
		END	
	END
		ELSE IF(@IsDetail = 1)
		BEGIN
		IF(@PL_InvSortDescription = 0)
		BEGIN
			IF(@FilterItem = 2)--Account Sets
			BEGIN
			  IF(@IsAll=1)
				SELECT MasterTable.strPartNumber, MasterTable.strDesc, SlaveTable.strLocName, SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumQty, 
				SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) 
				AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumValue, MasterTable.strAcctSet AS OrderbyCol 
				FROM dbo.fnTblInvForLocJoin() as MasterTable INNER JOIN tblInvExt as SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber AND MasterTable.strLocName = SlaveTable.strLocName WHERE (MasterTable.intType = 1) 
				AND (SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) 
				AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) + SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) 
				FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) 
				AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) <> 0) AND (SlaveTable.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				ORDER BY OrderbyCol, MasterTable.strPartNumber, SlaveTable.strLocName
			  ELSE
			    SELECT MasterTable.strPartNumber, MasterTable.strDesc, SlaveTable.strLocName, SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumQty, 
				SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) 
				AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumValue, MasterTable.strAcctSet AS OrderbyCol 
				FROM dbo.fnTblInvForLocJoin() as MasterTable INNER JOIN tblInvExt as SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber AND MasterTable.strLocName = SlaveTable.strLocName WHERE (MasterTable.intType = 1) 
				AND (SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) 
				AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) + SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) 
				FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) 
				AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) <> 0) AND (SlaveTable.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				AND MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol, MasterTable.strPartNumber, SlaveTable.strLocName
			END
			ELSE IF(@FilterItem = 0)--Assets
			BEGIN
			   IF(@IsAll=1)
				SELECT MasterTable.strPartNumber, MasterTable.strDesc, SlaveTable.strLocName, SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumQty, 
				SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumValue, 
				CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol FROM dbo.fnTblInvForLocJoin() as MasterTable INNER JOIN tblInvExt as SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber AND MasterTable.strLocName = SlaveTable.strLocName 
				INNER JOIN tblAccountSets AS AccTable ON SlaveTable.strAcctSet = AccTable.strAcctSet INNER JOIN tblAccounts ON AccTable.intGLAsset = tblAccounts.intGLNumber WHERE (MasterTable.intType = 1) AND (SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) 
				FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber 
				AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) + SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) <> 0) AND
				(SlaveTable.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				ORDER BY OrderbyCol, MasterTable.strPartNumber, SlaveTable.strLocName
			  ELSE
			    SELECT MasterTable.strPartNumber, MasterTable.strDesc, SlaveTable.strLocName, SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumQty, 
				SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumValue, 
				CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol FROM dbo.fnTblInvForLocJoin() as MasterTable INNER JOIN tblInvExt as SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber AND MasterTable.strLocName = SlaveTable.strLocName 
				INNER JOIN tblAccountSets AS AccTable ON SlaveTable.strAcctSet = AccTable.strAcctSet INNER JOIN tblAccounts ON AccTable.intGLAsset = tblAccounts.intGLNumber WHERE (MasterTable.intType = 1) AND (SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) 
				FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber 
				AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) + SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) <> 0) AND
				(SlaveTable.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				AND MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol, MasterTable.strPartNumber, SlaveTable.strLocName
			END
			ELSE IF(@FilterItem = 1)--Category
			BEGIN
			 IF(@IsAll=1)
				SELECT MasterTable.strPartNumber, MasterTable.strDesc, SlaveTable.strLocName, SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumQty, SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumValue, MasterTable.strCategory AS OrderbyCol 
				FROM dbo.fnTblInvForLocJoin() as MasterTable INNER JOIN tblInvExt as SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber AND MasterTable.strLocName = SlaveTable.strLocName WHERE (MasterTable.intType = 1) 
				AND (SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) 
				AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) + SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) <> 0) AND
				(MasterTable.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				ORDER BY OrderbyCol, MasterTable.strPartNumber, SlaveTable.strLocName
			ELSE
			    SELECT MasterTable.strPartNumber, MasterTable.strDesc, SlaveTable.strLocName, SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumQty, SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumValue, MasterTable.strCategory AS OrderbyCol 
				FROM dbo.fnTblInvForLocJoin() as MasterTable INNER JOIN tblInvExt as SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber AND MasterTable.strLocName = SlaveTable.strLocName WHERE (MasterTable.intType = 1) 
				AND (SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) 
				AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) + SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) <> 0) AND
				(MasterTable.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				AND MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol, MasterTable.strPartNumber, SlaveTable.strLocName
			END
			ELSE IF(@FilterItem = 3)--Items
			BEGIN
			IF(@IsAll=1)
				SELECT MasterTable.strPartNumber, MasterTable.strDesc, SlaveTable.strLocName, SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking 
				ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) 
				AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumQty, SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumValue, '' AS OrderbyCol 
				FROM dbo.fnTblInvForLocJoin() as MasterTable INNER JOIN tblInvExt as SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber AND MasterTable.strLocName = SlaveTable.strLocName WHERE (MasterTable.intType = 1) 
				AND (SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber 
				AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) + SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) <> 0) AND
				(MasterTable.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				ORDER BY OrderbyCol, MasterTable.strPartNumber, SlaveTable.strLocName
			ELSE
			    SELECT MasterTable.strPartNumber, MasterTable.strDesc, SlaveTable.strLocName, SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking 
				ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) 
				AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumQty, SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumValue, '' AS OrderbyCol 
				FROM dbo.fnTblInvForLocJoin() as MasterTable INNER JOIN tblInvExt as SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber AND MasterTable.strLocName = SlaveTable.strLocName WHERE (MasterTable.intType = 1) 
				AND (SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber 
				AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) + SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) <> 0) AND
				(MasterTable.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				AND MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol, MasterTable.strPartNumber, SlaveTable.strLocName
			END
		END
		ELSE
		BEGIN
			IF(@FilterItem = 2)--Account Sets
			BEGIN
			  if(@IsAll=1)
				SELECT MasterTable.strPartNumber, MasterTable.strDesc, SlaveTable.strLocName, SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumQty, 
				SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) 
				AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumValue, MasterTable.strAcctSet AS OrderbyCol 
				FROM dbo.fnTblInvForLocJoin() as MasterTable INNER JOIN tblInvExt as SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber AND MasterTable.strLocName = SlaveTable.strLocName WHERE (MasterTable.intType = 1) 
				AND (SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) 
				AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) + SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) 
				FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) 
				AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) <> 0) AND (SlaveTable.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				ORDER BY OrderbyCol, MasterTable.strDesc, MasterTable.strPartNumber, SlaveTable.strLocName
              ELSE
			    SELECT MasterTable.strPartNumber, MasterTable.strDesc, SlaveTable.strLocName, SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumQty, 
				SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) 
				AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumValue, MasterTable.strAcctSet AS OrderbyCol 
				FROM dbo.fnTblInvForLocJoin() as MasterTable INNER JOIN tblInvExt as SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber AND MasterTable.strLocName = SlaveTable.strLocName WHERE (MasterTable.intType = 1) 
				AND (SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) 
				AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) + SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) 
				FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) 
				AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) <> 0) AND (SlaveTable.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				AND MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol, MasterTable.strDesc, MasterTable.strPartNumber, SlaveTable.strLocName
			END
			ELSE IF(@FilterItem = 0)--Assets
			BEGIN
			  if(@IsAll=1)
				SELECT MasterTable.strPartNumber, MasterTable.strDesc, SlaveTable.strLocName, SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumQty, 
				SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumValue, 
				CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol FROM dbo.fnTblInvForLocJoin() as MasterTable INNER JOIN tblInvExt as SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber AND MasterTable.strLocName = SlaveTable.strLocName 
				INNER JOIN tblAccountSets AS AccTable ON SlaveTable.strAcctSet = AccTable.strAcctSet INNER JOIN tblAccounts ON AccTable.intGLAsset = tblAccounts.intGLNumber WHERE (MasterTable.intType = 1) AND (SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) 
				FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber 
				AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) + SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) <> 0) AND
				(SlaveTable.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				ORDER BY OrderbyCol, MasterTable.strDesc, MasterTable.strPartNumber, SlaveTable.strLocName
			  ELSE
			    SELECT MasterTable.strPartNumber, MasterTable.strDesc, SlaveTable.strLocName, SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumQty, 
				SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumValue, 
				CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol FROM dbo.fnTblInvForLocJoin() as MasterTable INNER JOIN tblInvExt as SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber AND MasterTable.strLocName = SlaveTable.strLocName 
				INNER JOIN tblAccountSets AS AccTable ON SlaveTable.strAcctSet = AccTable.strAcctSet INNER JOIN tblAccounts ON AccTable.intGLAsset = tblAccounts.intGLNumber WHERE (MasterTable.intType = 1) AND (SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) 
				FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber 
				AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) + SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) <> 0) AND
				(SlaveTable.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				AND MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol, MasterTable.strDesc, MasterTable.strPartNumber, SlaveTable.strLocName
			END
			ELSE IF(@FilterItem = 1)--Category
			BEGIN
			  if(@IsAll=1)
				SELECT MasterTable.strPartNumber, MasterTable.strDesc, SlaveTable.strLocName, SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumQty, SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumValue, MasterTable.strCategory AS OrderbyCol 
				FROM dbo.fnTblInvForLocJoin() as MasterTable INNER JOIN tblInvExt as SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber AND MasterTable.strLocName = SlaveTable.strLocName WHERE (MasterTable.intType = 1) 
				AND (SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) 
				AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) + SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) <> 0) AND
				(MasterTable.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				ORDER BY OrderbyCol, MasterTable.strDesc, MasterTable.strPartNumber, SlaveTable.strLocName
             ELSE
			    SELECT MasterTable.strPartNumber, MasterTable.strDesc, SlaveTable.strLocName, SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumQty, SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumValue, MasterTable.strCategory AS OrderbyCol 
				FROM dbo.fnTblInvForLocJoin() as MasterTable INNER JOIN tblInvExt as SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber AND MasterTable.strLocName = SlaveTable.strLocName WHERE (MasterTable.intType = 1) 
				AND (SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) 
				AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) + SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) <> 0) AND
				(MasterTable.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				AND MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol, MasterTable.strDesc, MasterTable.strPartNumber, SlaveTable.strLocName
			END
			ELSE IF(@FilterItem = 3)--Items
			BEGIN
			  IF(@IsAll=1)
				SELECT MasterTable.strPartNumber, MasterTable.strDesc, SlaveTable.strLocName, SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking 
				ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) 
				AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumQty, SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumValue, '' AS OrderbyCol 
				FROM dbo.fnTblInvForLocJoin() as MasterTable INNER JOIN tblInvExt as SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber AND MasterTable.strLocName = SlaveTable.strLocName WHERE (MasterTable.intType = 1) 
				AND (SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber 
				AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) + SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) <> 0) AND
				(MasterTable.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				ORDER BY OrderbyCol, MasterTable.strDesc, MasterTable.strPartNumber, SlaveTable.strLocName
			  ELSE
			    SELECT MasterTable.strPartNumber, MasterTable.strDesc, SlaveTable.strLocName, SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking 
				ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) 
				AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumQty, SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID 
				WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) as decSumValue, '' AS OrderbyCol 
				FROM dbo.fnTblInvForLocJoin() as MasterTable INNER JOIN tblInvExt as SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber AND MasterTable.strLocName = SlaveTable.strLocName WHERE (MasterTable.intType = 1) 
				AND (SlaveTable.decOpenQty + (SELECT ISNULL(SUM(tblInvTrackingDT.decQty),0) FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber 
				AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) + SlaveTable.decOpenValue + (SELECT ISNULL(SUM(tblInvTrackingDT.decValue),0) FROM tblInvTrackingDT 
				INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID WHERE (tblInvTracking.dteJournalDate <= @SQAsAtDate) AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber AND tblInvTrackingDT.strLocName = MasterTable.strLocName) AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)) <> 0) AND
				(MasterTable.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))
				AND MasterTable.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
				ORDER BY OrderbyCol, MasterTable.strDesc, MasterTable.strPartNumber, SlaveTable.strLocName
			END
		END
        END
	END
END
GO

/****** Object:  StoredProcedure [dbo].[LoadDepartments]    Script Date: 07-04-2022 10:31:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetAccountsByDeptNumber]
(
@SQDeptNumber int
)
AS
SELECT intGLNumber as GLNumber, strDesc as [Description] , (SELECT COUNT(intDept) as Dept FROM tblAccountsDept WHERE (intGLNumber = MASTERTABLE.intGLNumber) AND (intDept = @SQDeptNumber)) as DeptCount
FROM tblAccounts AS MASTERTABLE WHERE (bitLinkREarnings = 0) AND (bitLinkCEarnings = 0) AND (intGroupCode = 1 or intGroupCode = 2) 
ORDER BY GLNumber

GO

/****** Object:  StoredProcedure [dbo].[GetCurrentAndRetainedEarningsAccounts]    Script Date: 07-04-2022 15:53:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetAccountsDeptByDept]
(
@SQDept int
)
AS
SELECT COUNT(intDept) as Dept FROM tblAccountsDept WHERE (intDept = @SQDept) AND (decBalance <> 0) AND (bitUsed <> 0) AND (bitUsedLY <> 0)

GO

/****** Object:  StoredProcedure [dbo].[GetCurrentAndRetainedEarningsAccounts]    Script Date: 07-04-2022 15:53:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE procedure [dbo].[GetAccountsDept]
(
@SQGLNumber nvarchar(200),
@SQDept int
)
AS
BEGIN
SELECT decBalance as Balance, bitUsed as Used, bitUsedLY as UsedLY,intGLNumber as GLNumber, intDept as Dept FROM tblAccountsDept WHERE (intGLNumber = @SQGLNumber) AND (intDept = @SQDept)

END
GO

/****** Object:  StoredProcedure [dbo].[LoadItems]    Script Date: 30-03-2022 13:08:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetAccountSetsReportData]
AS
BEGIN
SELECT strAcctSet
,strDesc
,blnService
,blnInactive
,intGLAsset
,ISNULL((
SELECT strDesc
FROM tblAccounts
WHERE intGLNumber = intGLAsset
), '')
,intGLRevenue
,ISNULL((
SELECT strDesc
FROM tblAccounts
WHERE intGLNumber = intGLRevenue
), '')
,intGLExpCOGS
,ISNULL((
SELECT strDesc
FROM tblAccounts
WHERE intGLNumber = intGLExpCOGS
), '')
,intGLVariance
,ISNULL((
SELECT strDesc
FROM tblAccounts
WHERE intGLNumber = intGLVariance
), '')
,blnBuyout
FROM tblAccountSets
ORDER BY strAcctSet
END

GO

/****** Object:  StoredProcedure [dbo].[GetAccounts]    Script Date: 07-04-2022 15:44:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetAccounts]
AS
SELECT intGLNumber as GLNumber, strDesc as [Description]
FROM tblAccounts 
WHERE (bitLinkREarnings = 0) AND (bitLinkCEarnings = 0) AND (intGroupCode = 1 or intGroupCode = 2) 
ORDER BY intGLNumber

GO

/****** Object:  StoredProcedure [dbo].[GetAllByGLNumber]    Script Date: 15-04-2022 10:46:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetAllByGLNumber]
(
@SQGLNumber nvarchar(max)
)
AS
BEGIN
SELECT intGLNumber as GLNumber, dteEntDate as EntDate, strSource as [Source], strComment as Comment, strDesc as [Description], strAsset as Asset, decDebits as Debits, decCredits as Credits, decAmount as Amount, lngID as JourID  FROM tblAccountsSL WHERE intGLNumber = @SQGLNumber ORDER BY dteEntDate
END

GO

/****** Object:  StoredProcedure [dbo].[GetCancelledSalesDocumentsReportData]    Script Date: 03-03-2022 12:48:27 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetCancelledSalesDocumentsReportData] @StartDate DATETIME
	,@FinishDate DATETIME
	,@IsCustomerChecked BIT
	,@UserName NVARCHAR(Max) = ''
	,@CustomerName NVARCHAR(Max) = ''
	,@IsSummaryChecked BIT
	,@IsInActiveCustomers BIT
AS
BEGIN
	--summary
	IF (@IsSummaryChecked = 1)
	BEGIN
		SELECT *
		FROM (
			SELECT tblOrderDoc.strOrdDocID AS DocNumber
				,tblOrderDoc.dteSystemDate AS [Date]
				,tblOrderDoc.strUserName AS ClosedUser
				,tblOrderDoc.dteJournalDate AS ClosedDate
				,ISNULL(tblOrderDoc.dteRequired, '') AS [Required]
				,tblOrderDoc.decTotal AS Total
				,CASE SUM(tblOrderDocDT.decQty)
					WHEN SUM(ISNULL(tblOrderDocDT.decQtyRemaining, ''))
						THEN (SUM(tblOrderDocDT.decLineTotExc) + SUM(tblOrderDocDT.decLineTaxAmt))
					ELSE ((SUM(tblOrderDocDT.decLineTotExc) + SUM(tblOrderDocDT.decLineTaxAmt)) / SUM(tblOrderDocDT.decQty)) * SUM(ISNULL(tblOrderDocDT.decQtyRemaining, ''))
					END AS Remain
				,ISNULL(tblOrderDoc.strSOReasonCode, N'') AS strSOReasonCode
				,tblOrderDoc.strCustName
				,ISNULL(tblCustomers.strCustDesc, '') AS strCustDesc
			FROM tblOrderDoc
			INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
			LEFT OUTER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
			WHERE (
					tblOrderDoc.intDocType = 1
					OR tblOrderDoc.intDocType = 2
					)
				AND (tblOrderDoc.bitCleared = 1)
				AND (
					tblOrderDoc.dteJournalDate BETWEEN @StartDate
						AND @FinishDate
					)
			GROUP BY tblOrderDoc.strOrdDocID
				,tblOrderDoc.dteSystemDate
				,tblOrderDoc.strUserName
				,tblOrderDoc.dteJournalDate
				,tblOrderDoc.dteRequired
				,tblOrderDoc.decTotal
				,tblOrderDoc.strSOReasonCode
				,tblOrderDoc.strCustName
				,tblcustomers.strCustDesc
			
			UNION ALL
			
			SELECT tblOrderDocQ.strOrdDocID AS DocNumber
				,tblOrderDocQ.dteSystemDate AS [Date]
				,tblOrderDocQ.strUserName AS ClosedUser
				,tblOrderDocQ.dteJournalDate AS ClosedDate
				,ISNULL(tblOrderDocQ.dteRequired, '') AS [Required]
				,tblOrderDocQ.decTotal AS Total
				,CASE SUM(tblOrderDocQDT.decQty)
					WHEN 1
						THEN (SUM(tblOrderDocQDT.decLineTotExc) + SUM(tblOrderDocQDT.decLineTaxAmt))
					ELSE ((SUM(tblOrderDocQDT.decLineTotExc) + SUM(tblOrderDocQDT.decLineTaxAmt)) / SUM(tblOrderDocQDT.decQty)) * tblOrderDocQDT.decQty
					END AS Remain
				,ISNULL(tblOrderDocQ.strSOReasonCode, N'') AS strSOReasonCode
				,ISNULL(tblOrderDocQ.strCustName, '') AS strCustName
				,ISNULL(tblCustomers.strCustDesc, '') AS strCustDesc
			FROM tblOrderDocQ
			INNER JOIN tblOrderDocQDT ON tblOrderDocQ.strOrdDocID = tblOrderDocQDT.strOrdDocID
			LEFT OUTER JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName
			WHERE (tblOrderDocQ.bitCleared = 1)
				AND (
					tblOrderDocQ.dteJournalDate BETWEEN @StartDate
						AND @FinishDate
					)
			GROUP BY tblOrderDocQ.strOrdDocID
				,tblOrderDocQ.dteSystemDate
				,tblOrderDocQ.strUserName
				,tblOrderDocQ.dteJournalDate
				,tblOrderDocQ.dteRequired
				,tblOrderDocQ.decTotal
				,tblOrderDocQ.strSOReasonCode
				,tblOrderDocQ.strCustName
				,tblcustomers.strCustDesc
				,tblOrderDocQDT.decQty
			) z
		WHERE strSOReasonCode <> ''
			AND (
				strCustName IN (
					SELECT Value
					FROM [dbo].[fnSplitStringAsTable](@CustomerName, ',')
					)
				OR LEN(@CustomerName) < 1
				)
			AND (
				ClosedUser IN (
					SELECT Value
					FROM [dbo].[fnSplitStringAsTable](@UserName, ',')
					)
				OR LEN(@CustomerName) < 1
				)
		ORDER BY CASE 
				WHEN @IsCustomerChecked = 1
					THEN strCustName
				ELSE ClosedUser
				END
	END
			--detail
	ELSE
	BEGIN
		SELECT *
		FROM (
			SELECT tblOrderDoc.strOrdDocID AS DocNumber
				,tblOrderDoc.dteSystemDate AS [Date]
				,tblOrderDoc.strUserName AS ClosedUser
				,tblOrderDoc.dteJournalDate AS ClosedDate
				,ISNULL(tblOrderDoc.dteRequired, '') AS [Required]
				,tblOrderDoc.decTotal AS Total
				,CASE tblOrderDocDT.decQty
					WHEN ISNULL(tblOrderDocDT.decQtyRemaining, '')
						THEN (tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt)
					ELSE ((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) / tblOrderDocDT.decQty) * ISNULL(tblOrderDocDT.decQtyRemaining, '')
					END AS Remain
				,tblOrderDocDT.strPartNumber AS PartNumber
				,tblOrderDocDT.decQty AS Qty
				,ISNULL(tblOrderDocDT.decQtyRemaining, '') AS QtyRemaining
				,ISNULL(tblOrderDoc.strSOReasonCode, N'') AS 'strSOReasonCode'
				,tblOrderDoc.strCustName
				,tblCustomers.strCustDesc
			FROM tblOrderDoc
			INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
			LEFT OUTER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
			WHERE (
					tblOrderDoc.intDocType = 1
					OR tblOrderDoc.intDocType = 2
					)
				AND (tblOrderDoc.bitCleared = 1)
				AND (
					tblOrderDoc.dteJournalDate BETWEEN @StartDate
						AND @FinishDate
					)
			
			UNION ALL
			
			SELECT tblOrderDocQ.strOrdDocID AS DocNumber
				,tblOrderDocQ.dteSystemDate AS [Date]
				,tblOrderDocQ.strUserName AS ClosedUser
				,tblOrderDocQ.dteJournalDate AS ClosedDate
				,ISNULL(tblOrderDocQ.dteRequired, '') AS [Required]
				,tblOrderDocQ.decTotal AS Total
				,CASE tblOrderDocQDT.decQty
					WHEN 1
						THEN (tblOrderDocQDT.decLineTotExc + tblOrderDocQDT.decLineTaxAmt)
					ELSE ((tblOrderDocQDT.decLineTotExc + tblOrderDocQDT.decLineTaxAmt) / tblOrderDocQDT.decQty) * tblOrderDocQDT.decQty
					END AS Remain
				,tblOrderDocQDT.strPartNumber AS PartNumber
				,tblOrderDocQDT.decQty AS Qty
				,tblOrderDocQDT.decQty AS QtyRemaining
				,ISNULL(tblOrderDocQ.strSOReasonCode, N'') AS 'strSOReasonCode'
				,ISNULL(tblOrderDocQ.strCustName, '') AS strCustName
				,tblCustomers.strCustDesc
			FROM tblOrderDocQ
			INNER JOIN tblOrderDocQDT ON tblOrderDocQ.strOrdDocID = tblOrderDocQDT.strOrdDocID
			LEFT OUTER JOIN tblCustomers ON tblOrderDocQ.strCustName = tblCustomers.strCustName
			WHERE (tblOrderDocQ.bitCleared = 1)
				AND (
					tblOrderDocQ.dteJournalDate BETWEEN @StartDate
						AND @FinishDate
					)
			) z
		WHERE strSOReasonCode <> ''
			AND (
				strCustName IN (
					SELECT Value
					FROM [dbo].[fnSplitStringAsTable](@CustomerName, ',')
					)
				OR LEN(@CustomerName) < 1
				)
			AND (
				ClosedUser IN (
					SELECT Value
					FROM [dbo].[fnSplitStringAsTable](@UserName, ',')
					)
				OR LEN(@CustomerName) < 1
				)
		ORDER BY CASE 
				WHEN @IsCustomerChecked = 1
					THEN strCustName
				ELSE ClosedUser
				END
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetCurrencyByGLNumber]    Script Date: 15-04-2022 10:46:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetCurrencyByGLNumber]
(
@SQGLNumber nvarchar(max)
)
AS
BEGIN
SELECT strCurrency FROM tblAccounts WHERE intGLNumber = @SQGLNumber
END

GO

/****** Object:  StoredProcedure [dbo].[GetCurrentAndRetainedEarningsAccounts]    Script Date: 07-04-2022 15:53:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetCurrentAndRetainedEarningsAccounts]
AS
SELECT intGLNumber as GLNumber FROM tblAccounts WHERE bitLinkCEarnings = 1

GO

/****** Object:  StoredProcedure [dbo].[GetCurrentEarningsAccounts]    Script Date: 08-04-2022 17:20:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetCurrentEarningsAccounts]
AS
SELECT intGLNumber as GLNumber FROM tblAccounts WHERE bitLinkCEarnings = 1

GO

/****** Object:  StoredProcedure [dbo].[GetDepartments]    Script Date: 06-04-2022 11:52:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetDepartmentCount]
AS
SELECT COUNT(intDept) as Dept FROM tblDepartments

GO
----------------------------------------------------

GO
/****** Object:  StoredProcedure [dbo].[LoadDepartments]    Script Date: 07-04-2022 10:31:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetDepartmentsByDeptNumber]
(
@SQDeptNumber int
)
AS
SELECT intDept as Dept, strDesc as [Description], bitInactive as Inactive, dteRowUpdated FROM tblDepartments WHERE intDept = @SQDeptNumber

GO

/****** Object:  StoredProcedure [dbo].[GetDrillDownData]    Script Date: 15-02-2022 14:04:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetDrillDownData]  
(  
@IsCheckedDisplayForeignAmounts bit,  
@SQVendor varchar(100),  
@SQstrTerm varchar(100),  
@IsVendorNumberChecked bit,  
@SQAsAt varchar(19),  
@SQPaidIn varchar(19),  
@SQintTransType int  
)  
AS  
BEGIN  
IF(@IsCheckedDisplayForeignAmounts = 1)  
BEGIN  
	IF(@IsVendorNumberChecked = 0)  
	BEGIN
		IF(@SQstrTerm <> 'ALL')  
		BEGIN
			
			SELECT 
			v.strVendName, 
			v.strVendDesc, 
			v.strTerm, 
			CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvPDocID, '') END, 
			MASTERTABLE.dteDueDate, 
			MASTERTABLE.intTransType AS TransType, 
			vtdt.intTransType, 
			vtdt.lngVendTrID, 
			CASE vtdt.bitIsForeign WHEN 0 THEN vtdt.decAmount ELSE vtdt.decAmountF END, 
			v.strCurrency, 
			(SELECT strCurrName FROM tblCurrency WHERE strCurrency = v.strCurrency),
			MASTERTABLE.dteJournalDate, 
			vtdt.dteJournalDate, 
			'',
			MASTERTABLE.strInvDepNumber 
			FROM tblVendTrans AS MASTERTABLE 
			INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName)) 
			WHERE  (LTRIM(RTRIM(MASTERTABLE.strVendName)) = @SQVendor) AND
			(vtdt.bitReversed = 0) AND (vtdt.dteJournalDate <= @SQAsAt) AND (vtdt.lngVendTrID NOT IN (SELECT vtdt1.lngVendTrID FROM tblVendTrans vt1 INNER JOIN tblVendTransDT vtdt1 ON vt1.lngVendTrID = vtdt1.lngVendTrID WHERE LTRIM(RTRIM(vt1.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName)) AND vtdt1.bitReversed = 0 AND vtdt1.dteJournalDate <= @SQPaidIn GROUP BY vtdt1.lngVendTrID HAVING SUM(vtdt1.decAmount) = 0 AND SUM(vtdt1.decAmountF) = 0))
            AND v.strTerm = @SQstrTerm
			ORDER BY v.strCurrency, v.strTerm, v.strVendDesc, vtdt.lngVendTrID, vtdt.intTransType
		END  
		ELSE
		BEGIN
			SELECT 
			v.strVendName, 
			v.strVendDesc, 
			v.strTerm, 
			CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvPDocID, '') END, 
			MASTERTABLE.dteDueDate, 
			MASTERTABLE.intTransType AS TransType, 
			vtdt.intTransType, 
			vtdt.lngVendTrID, 
			CASE vtdt.bitIsForeign WHEN 0 THEN vtdt.decAmount ELSE vtdt.decAmountF END, 
			v.strCurrency, 
			(SELECT strCurrName FROM tblCurrency WHERE strCurrency = v.strCurrency),
			MASTERTABLE.dteJournalDate, 
			vtdt.dteJournalDate, 
			'',
			MASTERTABLE.strInvDepNumber 
			FROM tblVendTrans AS MASTERTABLE 
			INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName)) 
			WHERE  (LTRIM(RTRIM(MASTERTABLE.strVendName)) = @SQVendor) AND
			(vtdt.bitReversed = 0) AND (vtdt.dteJournalDate <= @SQAsAt) AND (vtdt.lngVendTrID NOT IN (SELECT vtdt1.lngVendTrID FROM tblVendTrans vt1 INNER JOIN tblVendTransDT vtdt1 ON vt1.lngVendTrID = vtdt1.lngVendTrID WHERE LTRIM(RTRIM(vt1.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName)) AND vtdt1.bitReversed = 0 AND vtdt1.dteJournalDate <= @SQPaidIn GROUP BY vtdt1.lngVendTrID HAVING SUM(vtdt1.decAmount) = 0 AND SUM(vtdt1.decAmountF) = 0))
			ORDER BY v.strCurrency, v.strTerm, v.strVendDesc, vtdt.lngVendTrID, vtdt.intTransType
		END
	END
	ELSE
	BEGIN
		IF(@SQstrTerm <> 'ALL')  
		BEGIN
			SELECT 
			v.strVendName, 
			v.strVendDesc, 
			v.strTerm, 
			CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvPDocID, '') END, 
			MASTERTABLE.dteDueDate, 
			MASTERTABLE.intTransType AS TransType, 
			vtdt.intTransType, 
			vtdt.lngVendTrID, 
			CASE vtdt.bitIsForeign WHEN 0 THEN vtdt.decAmount ELSE vtdt.decAmountF END, 
			v.strCurrency, 
			(SELECT strCurrName FROM tblCurrency WHERE strCurrency = v.strCurrency),
			MASTERTABLE.dteJournalDate, 
			vtdt.dteJournalDate, 
			'',
			MASTERTABLE.strInvDepNumber 
			FROM tblVendTrans AS MASTERTABLE 
			INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName)) 
			WHERE  (LTRIM(RTRIM(MASTERTABLE.strVendName)) = @SQVendor) AND
			(vtdt.bitReversed = 0) AND (vtdt.dteJournalDate <= @SQAsAt) AND (vtdt.lngVendTrID NOT IN (SELECT vtdt1.lngVendTrID FROM tblVendTrans vt1 INNER JOIN tblVendTransDT vtdt1 ON vt1.lngVendTrID = vtdt1.lngVendTrID WHERE LTRIM(RTRIM(vt1.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName)) AND vtdt1.bitReversed = 0 AND vtdt1.dteJournalDate <= @SQPaidIn GROUP BY vtdt1.lngVendTrID HAVING SUM(vtdt1.decAmount) = 0 AND SUM(vtdt1.decAmountF) = 0))
			 AND v.strTerm = @SQstrTerm
			 ORDER BY v.strCurrency, v.strTerm, v.strVendName, vtdt.lngVendTrID, vtdt.intTransType
		END  
		ELSE
		BEGIN
			SELECT 
			v.strVendName, 
			v.strVendDesc, 
			v.strTerm, 
			CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvPDocID, '') END, 
			MASTERTABLE.dteDueDate, 
			MASTERTABLE.intTransType AS TransType, 
			vtdt.intTransType, 
			vtdt.lngVendTrID, 
			CASE vtdt.bitIsForeign WHEN 0 THEN vtdt.decAmount ELSE vtdt.decAmountF END, 
			v.strCurrency, 
			(SELECT strCurrName FROM tblCurrency WHERE strCurrency = v.strCurrency),
			MASTERTABLE.dteJournalDate, 
			vtdt.dteJournalDate, 
			'',
			MASTERTABLE.strInvDepNumber 
			FROM tblVendTrans AS MASTERTABLE 
			INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName)) 
			WHERE  (LTRIM(RTRIM(MASTERTABLE.strVendName)) = @SQVendor) AND
			(vtdt.bitReversed = 0) AND (vtdt.dteJournalDate <= @SQAsAt) AND (vtdt.lngVendTrID NOT IN (SELECT vtdt1.lngVendTrID FROM tblVendTrans vt1 INNER JOIN tblVendTransDT vtdt1 ON vt1.lngVendTrID = vtdt1.lngVendTrID WHERE LTRIM(RTRIM(vt1.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName)) AND vtdt1.bitReversed = 0 AND vtdt1.dteJournalDate <= @SQPaidIn GROUP BY vtdt1.lngVendTrID HAVING SUM(vtdt1.decAmount) = 0 AND SUM(vtdt1.decAmountF) = 0))
			ORDER BY v.strCurrency, v.strTerm, v.strVendName, vtdt.lngVendTrID, vtdt.intTransType
		END
	END
END
ELSE  
BEGIN  
	IF(@IsVendorNumberChecked = 0)  
	BEGIN
		IF(@SQstrTerm <> 'ALL')  
		BEGIN
			SELECT v.strVendName, 
			v.strVendDesc, 
			v.strTerm,
			CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvPDocID, '') END, 
			MASTERTABLE.dteDueDate, --4
			MASTERTABLE.intTransType AS TransType, 
			vtdt.intTransType, 
			vtdt.lngVendTrID, 
			vtdt.decAmount, 
			MASTERTABLE.dteJournalDate, 
			vtdt.dteJournalDate, 
			'', MASTERTABLE.strInvDepNumber 
			FROM tblVendTrans AS MASTERTABLE 
			INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID 
			INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName))
			WHERE (LTRIM(RTRIM(MASTERTABLE.strVendName)) = @SQVendor) 
			AND (vtdt.bitReversed = 0) AND (vtdt.dteJournalDate <= @SQAsAt) 
			AND (vtdt.lngVendTrID NOT IN 
			(SELECT vtdt1.lngVendTrID FROM tblVendTrans vt1 INNER JOIN tblVendTransDT vtdt1 ON vt1.lngVendTrID = vtdt1.lngVendTrID 
			WHERE LTRIM(RTRIM(vt1.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName)) AND vtdt1.bitReversed = 0 AND vtdt1.dteJournalDate <= @SQPaidIn 
			GROUP BY vtdt1.lngVendTrID HAVING SUM(vtdt1.decAmount) = 0 AND SUM(vtdt1.decAmountF) = 0))
			AND v.strTerm = @SQstrTerm
			ORDER BY v.strTerm, v.strVendDesc, vtdt.lngVendTrID, vtdt.intTransType
		END
		ELSE
		BEGIN
			SELECT v.strVendName, 
			v.strVendDesc, 
			v.strTerm,
			CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvPDocID, '') END, 
			MASTERTABLE.dteDueDate, --4
			MASTERTABLE.intTransType AS TransType, 
			vtdt.intTransType, 
			vtdt.lngVendTrID, 
			vtdt.decAmount, 
			MASTERTABLE.dteJournalDate, 
			vtdt.dteJournalDate, 
			'', MASTERTABLE.strInvDepNumber 
			FROM tblVendTrans AS MASTERTABLE 
			INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID 
			INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName))
			WHERE (LTRIM(RTRIM(MASTERTABLE.strVendName)) = @SQVendor) 
			AND (vtdt.bitReversed = 0) AND (vtdt.dteJournalDate <= @SQAsAt) 
			AND (vtdt.lngVendTrID NOT IN 
			(SELECT vtdt1.lngVendTrID FROM tblVendTrans vt1 INNER JOIN tblVendTransDT vtdt1 ON vt1.lngVendTrID = vtdt1.lngVendTrID 
			WHERE LTRIM(RTRIM(vt1.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName)) AND vtdt1.bitReversed = 0 AND vtdt1.dteJournalDate <= @SQPaidIn 
			GROUP BY vtdt1.lngVendTrID HAVING SUM(vtdt1.decAmount) = 0 AND SUM(vtdt1.decAmountF) = 0))
			ORDER BY v.strTerm, v.strVendDesc, vtdt.lngVendTrID, vtdt.intTransType
		END
	END
	ELSE
	BEGIN
		IF(@SQstrTerm <> 'ALL')  
		BEGIN
			SELECT v.strVendName, 
			v.strVendDesc, 
			v.strTerm,
			CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvPDocID, '') END, 
			MASTERTABLE.dteDueDate, --4
			MASTERTABLE.intTransType AS TransType, 
			vtdt.intTransType, 
			vtdt.lngVendTrID, 
			vtdt.decAmount, 
			MASTERTABLE.dteJournalDate, 
			vtdt.dteJournalDate, 
			'', MASTERTABLE.strInvDepNumber 
			FROM tblVendTrans AS MASTERTABLE 
			INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID 
			INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName))
			WHERE (LTRIM(RTRIM(MASTERTABLE.strVendName)) = @SQVendor) 
			AND (vtdt.bitReversed = 0) AND (vtdt.dteJournalDate <= @SQAsAt) 
			AND (vtdt.lngVendTrID NOT IN 
			(SELECT vtdt1.lngVendTrID FROM tblVendTrans vt1 INNER JOIN tblVendTransDT vtdt1 ON vt1.lngVendTrID = vtdt1.lngVendTrID 
			WHERE LTRIM(RTRIM(vt1.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName)) AND vtdt1.bitReversed = 0 AND vtdt1.dteJournalDate <= @SQPaidIn 
			GROUP BY vtdt1.lngVendTrID HAVING SUM(vtdt1.decAmount) = 0 AND SUM(vtdt1.decAmountF) = 0))
			AND v.strTerm = @SQstrTerm
			ORDER BY v.strTerm, v.strVendName, vtdt.lngVendTrID, vtdt.intTransType
		END
		ELSE
		BEGIN
			SELECT v.strVendName, 
			v.strVendDesc, 
			v.strTerm,
			CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvPDocID, '') END, 
			MASTERTABLE.dteDueDate, --4
			MASTERTABLE.intTransType AS TransType, 
			vtdt.intTransType, 
			vtdt.lngVendTrID, 
			vtdt.decAmount, 
			MASTERTABLE.dteJournalDate, 
			vtdt.dteJournalDate, 
			'', MASTERTABLE.strInvDepNumber 
			FROM tblVendTrans AS MASTERTABLE 

			INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID 
			INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName))
			WHERE (LTRIM(RTRIM(MASTERTABLE.strVendName)) = @SQVendor) 
			AND (vtdt.bitReversed = 0) AND (vtdt.dteJournalDate <= @SQAsAt) 
			AND (vtdt.lngVendTrID NOT IN 
			(SELECT vtdt1.lngVendTrID FROM tblVendTrans vt1 INNER JOIN tblVendTransDT vtdt1 ON vt1.lngVendTrID = vtdt1.lngVendTrID 
			WHERE LTRIM(RTRIM(vt1.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName)) AND vtdt1.bitReversed = 0 AND vtdt1.dteJournalDate <= @SQPaidIn 
			GROUP BY vtdt1.lngVendTrID HAVING SUM(vtdt1.decAmount) = 0 AND SUM(vtdt1.decAmountF) = 0))
			ORDER BY v.strTerm, v.strVendName, vtdt.lngVendTrID, vtdt.intTransType
		END
	END
END  
END  
GO

/****** Object:  StoredProcedure [dbo].[LoadJobTitle]    Script Date: 22-12-2021 12:52:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetFnTblInvLocationsData]
(
@SQLocationCriteria nvarchar(max) = '',
@SQCriteria nvarchar(max) = ''
)
AS
BEGIN
SELECT * FROM dbo.fnTblInvLocations(@SQLocationCriteria) tblInv 
WHERE strPartNumber IN (SELECT DISTINCT * FROM dbo.fnSplitStringAsTable(@SQCriteria, ','))
END

GO

/****** Object:  StoredProcedure [dbo].[LoadJobTitle]    Script Date: 22-12-2021 12:52:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetItemPricingReportData]
(
@uidPriceBasedID nvarchar(max),
@SQPriceList nvarchar(max) = '',
@PL_InvSortDescription nvarchar(max),
@IsActive bit,
@IsInactive bit,
@IsAll bit,
@IsCategory bit,
@IsItemAll bit,
@IsItems bit,
@IsServices bit,
@SQCategory varchar(100),
@SQPartNumber varchar(100)
)
AS
BEGIN 
--category
if(@IsCategory = 1)
begin
SELECT 
tblInv.strPartNumber as PartNumber,
tblInv.strDesc as [Description],
(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As Pricelist,
tblInvPrice.decSelling as Price,
tblInv.strSellUnit as Unit,
(tblInv.decLastPPUnit / tblInv.decBuyToStock) as LastPP,
tblInv.strSellStockUnit as Margin,
(tblInvPrice.decSelling / tblInv.decSellFromStock) as SellUnit,
tblInv.strCategory AS PriceStockUnit 
FROM tblInv INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblInvPrice.uidPriceBasedID AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist 
WHERE (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@SQCategory, ','))) AND tblPriceListsByDate.strPricelist = @SQPriceList AND tblPriceListsByDate.uidPriceBasedID = @uidPriceBasedID 
end
--items
else if(@IsItems = 1)
begin
--SELECT tblInv.strPartNumber ,tblInv.strDesc ,(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As strPricelist ,tblInvPrice.decSelling ,tblInv.strSellUnit ,tblInv.decLastPPUnit / tblInv.decBuyToStock ,tblInv.strSellStockUnit ,tblInvPrice.decSelling / tblInv.decSellFromStock ,'' AS OrderbyCol 
SELECT 
tblInv.strPartNumber as PartNumber,
tblInv.strDesc as [Description],
(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As Pricelist,
tblInvPrice.decSelling as Price,
tblInv.strSellUnit as Unit,
(tblInv.decLastPPUnit / tblInv.decBuyToStock) as LastPP,
tblInv.strSellStockUnit as Margin,
(tblInvPrice.decSelling / tblInv.decSellFromStock) as SellUnit,
'' AS PriceStockUnit
FROM tblInv INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblInvPrice.uidPriceBasedID AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist 
WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQPartNumber, ','))) AND tblPriceListsByDate.strPricelist = @SQPriceList AND tblPriceListsByDate.uidPriceBasedID = @uidPriceBasedID 
end
----service
else if(@IsServices = 1)
begin
--SELECT tblInv.strPartNumber ,tblInv.strDesc ,(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As strPricelist ,tblInvPrice.decSelling ,tblInv.strSellUnit ,tblInv.decLastPPUnit / tblInv.decBuyToStock ,tblInv.strSellStockUnit ,tblInvPrice.decSelling / tblInv.decSellFromStock ,'' AS OrderbyCol 
SELECT 
tblInv.strPartNumber as PartNumber,
tblInv.strDesc as [Description],
(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As Pricelist,
tblInvPrice.decSelling as Price,
tblInv.strSellUnit as Unit,
(tblInv.decLastPPUnit / tblInv.decBuyToStock) as LastPP,
tblInv.strSellStockUnit as Margin,
(tblInvPrice.decSelling / tblInv.decSellFromStock) as SellUnit,
'' AS PriceStockUnit
FROM tblInv INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblInvPrice.uidPriceBasedID AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist 
WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQPartNumber, ','))) AND tblPriceListsByDate.strPricelist = @SQPriceList AND tblPriceListsByDate.uidPriceBasedID = @uidPriceBasedID 
end
----all
else if(@IsItemAll = 1)
begin
--SELECT tblInv.strPartNumber ,tblInv.strDesc ,(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As strPricelist ,tblInvPrice.decSelling ,tblInv.strSellUnit ,tblInv.decLastPPUnit / tblInv.decBuyToStock ,tblInv.strSellStockUnit ,tblInvPrice.decSelling / tblInv.decSellFromStock ,'' AS OrderbyCol 
SELECT 
tblInv.strPartNumber as PartNumber,
tblInv.strDesc as [Description],
(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As Pricelist,
tblInvPrice.decSelling as Price,
tblInv.strSellUnit as Unit,
(tblInv.decLastPPUnit / tblInv.decBuyToStock) as LastPP,
tblInv.strSellStockUnit as Margin,
(tblInvPrice.decSelling / tblInv.decSellFromStock) as SellUnit,
'' AS PriceStockUnit
FROM tblInv INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblInvPrice.uidPriceBasedID AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist 
WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQPartNumber, ','))) AND tblPriceListsByDate.strPricelist = @SQPriceList AND tblPriceListsByDate.uidPriceBasedID = @uidPriceBasedID 
end
--active/inactive
if(@IsActive = 1)
begin
--SELECT tblInv.strPartNumber ,tblInv.strDesc ,(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As strPricelist ,tblInvPrice.decSelling ,tblInv.strSellUnit ,tblInv.decLastPPUnit / tblInv.decBuyToStock ,tblInv.strSellStockUnit ,tblInvPrice.decSelling / tblInv.decSellFromStock ,tblInv.strCategory AS OrderbyCol 
SELECT 
tblInv.strPartNumber as PartNumber,
tblInv.strDesc as [Description],
(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As Pricelist,
tblInvPrice.decSelling as Price,
tblInv.strSellUnit as Unit,
(tblInv.decLastPPUnit / tblInv.decBuyToStock) as LastPP,
tblInv.strSellStockUnit as Margin,
(tblInvPrice.decSelling / tblInv.decSellFromStock) as SellUnit,
tblInv.strCategory AS PriceStockUnit
FROM tblInv INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblInvPrice.uidPriceBasedID AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist 
WHERE (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@SQCategory, ','))) AND tblPriceListsByDate.strPricelist = @SQPriceList AND tblPriceListsByDate.uidPriceBasedID = @uidPriceBasedID 
AND tblInv.bitInactive = 0 
end
else
begin
--SELECT tblInv.strPartNumber ,tblInv.strDesc ,(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As strPricelist ,tblInvPrice.decSelling ,tblInv.strSellUnit ,tblInv.decLastPPUnit / tblInv.decBuyToStock ,tblInv.strSellStockUnit ,tblInvPrice.decSelling / tblInv.decSellFromStock ,tblInv.strCategory AS OrderbyCol 
SELECT 
tblInv.strPartNumber as PartNumber,
tblInv.strDesc as [Description],
(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As Pricelist,
tblInvPrice.decSelling as Price,
tblInv.strSellUnit as Unit,
(tblInv.decLastPPUnit / tblInv.decBuyToStock) as LastPP,
tblInv.strSellStockUnit as Margin,
(tblInvPrice.decSelling / tblInv.decSellFromStock) as SellUnit,
tblInv.strCategory AS PriceStockUnit
FROM tblInv INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblInvPrice.uidPriceBasedID AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist 
WHERE (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@SQCategory, ','))) AND tblPriceListsByDate.strPricelist = @SQPriceList AND tblPriceListsByDate.uidPriceBasedID = @uidPriceBasedID 
AND tblInv.bitInactive = 1
end
--PL_InvSortDescription
--if(@PL_InvSortDescription = 0)
--begin
--	--SELECT tblInv.strPartNumber ,tblInv.strDesc ,(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As strPricelist ,tblInvPrice.decSelling ,tblInv.strSellUnit ,tblInv.decLastPPUnit / tblInv.decBuyToStock ,tblInv.strSellStockUnit ,tblInvPrice.decSelling / tblInv.decSellFromStock ,tblInv.strCategory AS OrderbyCol 
--	SELECT 
--		tblInv.strPartNumber as PartNumber,
--		tblInv.strDesc as [Description],
--		(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As Pricelist,
--		tblInvPrice.decSelling as Price,
--		tblInv.strSellUnit as Unit,
--		(tblInv.decLastPPUnit / tblInv.decBuyToStock) as LastPP,
--		tblInv.strSellStockUnit as Margin,
--		(tblInvPrice.decSelling / tblInv.decSellFromStock) as SellUnit,
--		tblInv.strCategory AS OrderbyCol
--	FROM tblInv INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblInvPrice.uidPriceBasedID AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist 
--	WHERE (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@SQCategory, ','))) AND tblPriceListsByDate.strPricelist = @SQPriceList AND tblPriceListsByDate.uidPriceBasedID = @uidPriceBasedID
--	ORDER BY OrderbyCol,tblInv.strPartNumber
--end
--else 
--begin
--	--SELECT tblInv.strPartNumber ,tblInv.strDesc ,(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As strPricelist ,tblInvPrice.decSelling ,tblInv.strSellUnit ,tblInv.decLastPPUnit / tblInv.decBuyToStock ,tblInv.strSellStockUnit ,tblInvPrice.decSelling / tblInv.decSellFromStock ,tblInv.strCategory AS OrderbyCol 
--	SELECT 
--		tblInv.strPartNumber as PartNumber,
--		tblInv.strDesc as [Description],
--		(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As Pricelist,
--		tblInvPrice.decSelling as Price,
--		tblInv.strSellUnit as Unit,
--		(tblInv.decLastPPUnit / tblInv.decBuyToStock) as LastPP,
--		tblInv.strSellStockUnit as Margin,
--		(tblInvPrice.decSelling / tblInv.decSellFromStock) as SellUnit,
--		tblInv.strCategory AS OrderbyCol
--	FROM tblInv INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblInvPrice.uidPriceBasedID AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist 
--	WHERE (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@SQCategory, ','))) AND tblPriceListsByDate.strPricelist = @SQPriceList AND tblPriceListsByDate.uidPriceBasedID = @uidPriceBasedID
--	ORDER BY OrderbyCol,tblInv.strDesc, tblInv.strPartNumber
--end
END

GO

/****** Object:  StoredProcedure [dbo].[LoadItems]    Script Date: 30-03-2022 13:08:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetJournalCodesReportData]
(
@PL_InvSortDescription bit
)
AS
DECLARE @Query nvarchar(max) = ''
BEGIN
SET @Query = 'SELECT tblInv.strPartNumber, tblInv.strDesc, tblInv.intExpAcct, tblAccounts.strDesc AS Expr1, tblInv.bitInactive FROM tblInv INNER JOIN tblAccounts ON tblInv.intExpAcct = tblAccounts.intGLNumber WHERE (tblInv.intType = 5) AND tblInv.bitOtherCmp = 0'
IF(@PL_InvSortDescription = 0)
BEGIN
SET @Query += ' ORDER BY tblInv.strPartNumber'
END
ELSE
BEGIN
SET @Query += ' ORDER BY tblInv.strDesc'
END
EXEC sp_Executesql @Query
--PRINT @Query
END

GO

/****** Object:  StoredProcedure [dbo].[GetMatrixTypeChangeFilterReportData]    Script Date: 30-11-2021 16:56:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetMatrixTypeChangeFilterReportData]
(
@SearchTextItem nvarchar(100) = '',
@IsCheckedInactiveItem bit,
@UserName nvarchar(100) = ''
)
AS
BEGIN
--declare @command as nvarchar(max) = ''
--set @command = ' SELECT strMatrixType, strDesc FROM tblTradeDiscMatrix'
	BEGIN
		IF(LEN(@SearchTextItem) > 0)
		BEGIN
			IF(@IsCheckedInactiveItem = 0)
			BEGIN
				SELECT strMatrixType as Code, strDesc as Description 
				FROM tblTradeDiscMatrix
				WHERE (strMatrixType LIKE '%' + @SearchTextItem + '%' OR strDesc LIKE '%' + @SearchTextItem + '%') AND bitInactive = 0
				ORDER BY strMatrixType
			END
			ELSE
			BEGIN
				SELECT strMatrixType as Code, strDesc as Description 
				FROM tblTradeDiscMatrix
				WHERE (strMatrixType LIKE '%' + @SearchTextItem + '%' OR strDesc LIKE '%' + @SearchTextItem + '%')
				ORDER BY strMatrixType
			END
		END
		BEGIN
			IF(@IsCheckedInactiveItem = 0)
			BEGIN
				SELECT strMatrixType as Code, strDesc as Description FROM tblTradeDiscMatrix WHERE bitInactive = 0
			END
			ELSE
			BEGIN
				SELECT strMatrixType as Code, strDesc as Description FROM tblTradeDiscMatrix
			END
		END
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetMatrixTypeChangeReportData]    Script Date: 30-11-2021 16:57:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetMatrixTypeChangeReportData] (@MatrixType NVARCHAR(max) = '')
AS
BEGIN
	SELECT TDT.lngTrackID AS TrackID
		,TDT.strMatrixType AS MatrixType
		,HDR.strDesc AS strDesc
		,TYP.dteStartDate AS StartDate
		,TYP.dteFinishDate AS FinishDate
		,TDT.dteUpdatedDate AS UpdatedDate
		,TDT.strUserName AS UserName
		,TDT.intType AS Type
		,TDT.decDiscValueFrom AS DiscValueFrom
		,TDT.decDiscValueTo AS DiscValueTo
		,TDT.decValueFrom AS ValueFrom
		,TDT.decValueTo AS ValueTo
		,TDT.uidMatrixID AS MatrixID
	FROM tblTradeDiscTracking TDT
	INNER JOIN tblTradeDiscMatrix HDR ON TDT.strMatrixType = HDR.strMatrixType
	INNER JOIN tblTradeDiscMatrixTypes TYP ON TDT.uidMatrixID = TYP.uidMatrixID
		AND TDT.strMatrixType = TYP.strMatrixType
	WHERE TDT.strMatrixType IN (
			SELECT *
			FROM Fnsplitstringastable(@MatrixType, ',')
			)
	ORDER BY TDT.strMatrixType
		,TYP.dteStartDate
		,TDT.lngTrackID
END
GO

----------------------------------------------
create procedure [dbo].[GetPayPeriodsData]
AS
BEGIN
SELECT intPayPeriod1, intPayPeriod2, intPayPeriod3 FROM tblCoOpts
END

GO

/****** Object:  StoredProcedure [dbo].[GetPersonsMissReportData]    Script Date: 06-12-2021 20:47:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetPersonsMissReportData] @SQStart DATETIME
	,@SQEnd DATETIME
AS
BEGIN
	SELECT strInvDocID AS Invoice
		,dteSystemDate AS ActualDate
		,dteJournalDate AS EntryDate
		,strUserName AS UserName
		,ISNULL(lngJourID, 0) AS Journal
		,strCustName AS CustomerName
		,decTotal AS Total
		,(
			SELECT strCustDesc
			FROM tblCustomers
			WHERE strCustName = tblInvoiceDoc.strCustName
			) AS CustomerDesc
	FROM tblInvoiceDoc
	WHERE (bitHistoryTrans = 0)
		AND (bitReserved = 0)
		AND (strSalesName IS NULL)
		AND (
			dteJournalDate BETWEEN @SQStart
				AND @SQEnd
			)
	ORDER BY strInvDocID
END
GO

/****** Object:  StoredProcedure [dbo].[GetRptPendingPOReportData]    Script Date: 06-02-2022 12:46:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--EXEC GetRptPendingPOReportData 1,'TST001,TST002'
CREATE PROCEDURE [dbo].[GetPOApprovalsData] @IsCheckedSearch BIT
	,@SearchText NVARCHAR(max) = ''
AS
BEGIN
	IF (@IsCheckedSearch = 1)
	BEGIN
		SELECT DISTINCT strGroupName AS [Name]
		FROM tblPQApprovalsGroup
		INNER JOIN tblOrdersDocP_POApprovals ON tblOrdersDocP_POApprovals.intGroupId = tblPQApprovalsGroup.ID
		INNER JOIN tblOrderDocP ON tblOrdersDocP_POApprovals.strOrdPDocID = tblOrderDocP.strOrdPDocID
		WHERE tblOrderDocP.bitCleared = 0
			AND strGroupName LIKE '%' + @SearchText + '%'
	END
	ELSE
	BEGIN
		SELECT DISTINCT strGroupName AS [Name]
		FROM tblPQApprovalsGroup
		INNER JOIN tblOrdersDocP_POApprovals ON tblOrdersDocP_POApprovals.intGroupId = tblPQApprovalsGroup.ID
		INNER JOIN tblOrderDocP ON tblOrdersDocP_POApprovals.strOrdPDocID = tblOrderDocP.strOrdPDocID
		WHERE tblOrderDocP.bitCleared = 0
	END
END
GO

/****** Object:  StoredProcedure [dbo].[LoadPOSClosingData]    Script Date: 14-03-2022 17:40:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--EXEC LoadPOSClosingData '2016/02/29','2016/02/29'
create procedure [dbo].[GetPOSDrsData]
(
@SQstrInvDocID varchar(100)
)
AS
BEGIN
if(@SQstrInvDocID like '%RC-%')
begin
SELECT strSource, strPaidBy, decAmount, strComment FROM tblCustPay WHERE strSource = @SQstrInvDocID
end
else if(@SQstrInvDocID like '%CN-%')
begin
SELECT strInvDocID, strPaymentTypeName, -decTotal, strReference FROM tblInvoiceDocSplitPmt WHERE strInvDocID = @SQstrInvDocID							
end
else
begin
SELECT strInvDocID, strPaymentTypeName, decTotal, strReference FROM tblInvoiceDocSplitPmt WHERE strInvDocID = @SQstrInvDocID
end
END

GO

/****** Object:  StoredProcedure [dbo].[GetManJobFillDataSet]    Script Date: 02-02-2022 19:11:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--EXEC GetPOSDrsDTData 'CN-'
create procedure [dbo].[GetPOSDrsDTData]
(
@SQstrInvDocID varchar(200)
)
AS
BEGIN
IF(@SQstrInvDocID LIKE '%RC-%')
BEGIN
SELECT strSource, strPaidBy, decAmount, strComment FROM tblCustPay WHERE strSource = @SQstrInvDocID
END
ELSE IF(@SQstrInvDocID LIKE '%CN-%')
BEGIN
SELECT strInvDocID, strPaymentTypeName, -decTotal, strReference FROM tblInvoiceDocSplitPmt WHERE strInvDocID = @SQstrInvDocID
END
ELSE
BEGIN
SELECT strInvDocID, strPaymentTypeName, decTotal, strReference FROM tblInvoiceDocSplitPmt WHERE strInvDocID = @SQstrInvDocID
END
END

GO

/****** Object:  StoredProcedure [dbo].[GetCurrencyByGLNumber]    Script Date: 22-04-2022 17:23:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetRateFromTblCurrencyExc]
(
@SQCurrency varchar(100),
@SQTransDate varchar(19)
)
AS
BEGIN
SELECT decRate FROM tblCurrencyExc WHERE strCurrency = @SQCurrency AND dteDate = (SELECT MAX(dteDate) 
FROM tblCurrencyExc 
WHERE strCurrency = @SQCurrency AND dteDate <= @SQTransDate)
END

GO
/****** Object:  StoredProcedure [dbo].[GetRetainedEarningsAccounts]    Script Date: 08-04-2022 17:19:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetRetainedEarningsAccounts]
AS
SELECT intGLNumber as GLNumber FROM tblAccounts WHERE bitLinkREarnings = 1
GO

/****** Object:  StoredProcedure [dbo].[LoadCustomers]    Script Date: 21-01-2022 10:47:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE procedure [dbo].[GetRptAssetEfficiencyReportData]  
(  
@SQStart varchar(19),  
@SQEnd varchar(19),  
@IsAssetChecked bit,  
@IsAssetTypeChecked bit,  
@IsCostTypeChecked bit,  
@IsSortNumberChecked bit,  
@IsInactive bit,  
@IsAll bit,  
@SQCode nvarchar(max),  
@ItemList nvarchar(max)  
)  
AS  
DECLARE @Query nvarchar(max) = 'SELECT RTRIM(tblAssets.strAssetTypeCode) + '' - '' + tblAssetTypes.strDescription AS strAssetType, tblAssets.strAssetCode, tblAssets.strAssetDesc, tblAssets.decQuantity, tblAssets.dteDepreciateFrom, tblAssets.decPurchasePrice, tblAssets.decInsuredValue, tblAssets.decSalvageValue, tblAssets.decReplacementValue FROM tblAssets INNER JOIN tblAssetTypes ON tblAssets.strAssetTypeCode = tblAssetTypes.strCode '  
DECLARE @Query1 nvarchar(max) = 'SELECT strAssetCode, 0 as intYear, 0 as intMonth, 0.00 as decCost, decTotal, strUnit, strCostType,strAssetDesc,( ISNULL(decTotal ,0)/ NULLIF(decUsageUOM,0)) AS decCostPerUnit,decUsageUOM,strUOM FROM ( SELECT tblAssetRepairs.strAssetCode, (SELECT  strAssetDesc FROM  tblAssets WHERE (strAssetCode = tblAssetRepairs.strAssetCode)) AS strAssetDesc, tblAssetRepairs.strCostCode AS strCostType, sum(tblAssetRepairs.decCost) as decTotal, ISNULL((SELECT TOP 1 strUnit FROM tblAssetUsage WHERE tblAssetUsage.strAssetCode = tblAssetRepairs.strAssetCode AND (intYear between CAST(DATEPART(YEAR, '''+@SQStart+''') AS int) AND CAST(DATEPART(YEAR, '''+@SQEnd+''') AS int) AND (intMonth between CAST(DATEPART(MONTH, '''+@SQStart+''')AS int) AND CAST(DATEPART(MONTH, '''+@SQEnd+''') AS int)))),'''') as strUnit, (SELECT SUM(decTotal) FROM tblAssetUsage WHERE tblAssetUsage.strAssetCode = tblAssetRepairs.strAssetCode AND (intYear between CAST(DATEPART(YEAR, '''+@SQStart+''') AS int) AND CAST(DATEPART(YEAR, '''+@SQEnd+''') AS int) AND (intMonth between CAST(DATEPART(MONTH, '''+@SQStart+''')AS int) AND CAST(DATEPART(MONTH, '''+@SQEnd+''') AS int)))) as decUsageUOM, (SELECT  strUOM FROM tblCostTypes WHERE (strCode = tblAssetRepairs.strCostCode)) AS strUOM FROM tblAssetRepairs inner join tblAssets on tblAssetRepairs.strAssetCode = tblAssets.strAssetCode'  
BEGIN  
--@Query  
IF(@IsAssetChecked = 1)  
BEGIN  
IF(@IsAll = 0)  
BEGIN  
IF(@ItemList is not null)  
BEGIN  
SET @Query += ' WHERE tblAssets.strAssetCode in (select strAssetCode from tblAssetRepairs where dteRepairDate between '''+@SQStart+''' and '''+@SQEnd+''') AND (tblAssets.strAssetCode IN (SELECT * FROM fnSplitStringAsTable(''' + @ItemList + ''', '','')))'
END  
ELSE  
BEGIN  
SET @Query += ' WHERE tblAssets.strAssetCode in (select strAssetCode from tblAssetRepairs where dteRepairDate between '''+@SQStart+''' and '''+@SQEnd+''') '  
END  
END  
ELSE  
BEGIN  
SET @Query += ' WHERE tblAssets.strAssetCode in (select strAssetCode from tblAssetRepairs where dteRepairDate between '''+@SQStart+''' and '''+@SQEnd+''') '  
END  
IF(@IsInactive = 0)  
BEGIN  
SET @Query += ' AND tblAssets.bitInactive = 0 '  
END  
IF(@IsSortNumberChecked = 1)  
BEGIN  
SET @Query += ' ORDER BY tblAssets.strAssetCode'  
END  
ELSE  
BEGIN  
SET @Query += ' ORDER BY tblAssets.strAssetDesc'  
END  
END  
ELSE IF(@IsAssetTypeChecked = 1)  
BEGIN  
IF(@IsAll = 0)  
BEGIN  
IF(@ItemList is not null)  
BEGIN  
SET @Query += ' WHERE tblAssets.strAssetCode in (select strAssetCode from tblAssetRepairs where dteRepairDate between '''+@SQStart+''' and '''+@SQEnd+''') AND ( tblAssetTypes.strCode IN (SELECT * FROM fnSplitStringAsTable(''' + @ItemList + ''', '','')))'
END  
ELSE  
BEGIN  
SET @Query += ' WHERE tblAssets.strAssetCode in (select strAssetCode from tblAssetRepairs where dteRepairDate between '''+@SQStart+''' and '''+@SQEnd+''') '  
END  
END  
ELSE  
BEGIN  
SET @Query += ' WHERE tblAssets.strAssetCode in (select strAssetCode from tblAssetRepairs where dteRepairDate between '''+@SQStart+''' and '''+@SQEnd+''') '  
END  
IF(@IsInactive = 0)  
BEGIN  
SET @Query += ' AND tblAssets.bitInactive = 0 '  
END  
IF(@IsSortNumberChecked = 1)  
BEGIN  
SET @Query += ' ORDER BY tblAssetTypes.strCode'  
END  
ELSE  
BEGIN  
SET @Query += ' ORDER BY tblAssetTypes.strDescription'  
END  
END  
ELSE IF(@IsCostTypeChecked = 1)  
BEGIN  
IF(@IsAll = 0)  
BEGIN  
IF(@ItemList is not null)  
BEGIN  
SET @Query += ' WHERE tblAssets.strAssetCode in (select strAssetCode from tblAssetRepairs where dteRepairDate between '''+@SQStart+''' and '''+@SQEnd+''' AND (strCostCode IN (SELECT * FROM fnSplitStringAsTable(''' + @ItemList + ''', '','')))'
END  
ELSE  
BEGIN  
SET @Query += ' WHERE tblAssets.strAssetCode in (select strAssetCode from tblAssetRepairs where dteRepairDate between '''+@SQStart+''' and '''+@SQEnd+''') '  
END  
END  
ELSE  
BEGIN  
SET @Query += ' WHERE tblAssets.strAssetCode in (select strAssetCode from tblAssetRepairs where dteRepairDate between '''+@SQStart+''' and '''+@SQEnd+''') '  
END  
IF(@IsInactive = 0)  
BEGIN  
SET @Query += ' AND tblAssets.bitInactive = 0 '  
END  
IF(@IsSortNumberChecked = 1)  
BEGIN  
SET @Query += ' ORDER BY tblAssetTypes.strCode'  
END  
ELSE  
BEGIN  
SET @Query += ' ORDER BY tblAssetTypes.strDescription'  
END  
END  
---@Query1  
IF(@IsAll = 0)  
BEGIN  
IF(@IsCostTypeChecked = 1)  
BEGIN  
IF(@ItemList is not null)  
BEGIN  
SET @Query1 += ' WHERE  dteRepairDate between '''+@SQStart+''' and '''+@SQEnd+''' AND (strCostCode IN (SELECT * FROM fnSplitStringAsTable(''' + @ItemList + ''', '','')))'
END  
END  
ELSE IF(@IsAssetChecked = 1)  
BEGIN  
IF(@ItemList is not null)  
BEGIN  
SET @Query1 += ' WHERE  dteRepairDate between '''+@SQStart+''' and '''+@SQEnd+'''  AND (tblAssetRepairs.strAssetCode IN (SELECT * FROM fnSplitStringAsTable(''' + @ItemList + ''', '','')))'
END  
END  
ELSE IF(@IsAssetTypeChecked = 1)  
BEGIN  
IF(@ItemList is not null)  
BEGIN  
SET @Query1 += ' WHERE  dteRepairDate between '''+@SQStart+''' and '''+@SQEnd+'''  AND ( tblAssets.strAssetTypeCode IN (SELECT * FROM fnSplitStringAsTable(''' + @ItemList + ''', '','')))'
END  
END  
END  
ELSE  
BEGIN  
SET @Query1 += ' WHERE dteRepairDate between '''+@SQStart+''' and '''+@SQEnd+''''   
END  
SET @Query1 += ' GROUP BY tblAssetRepairs.strAssetCode, tblAssetRepairs.strCostCode) z'  
EXEC sp_Executesql @Query  
EXEC sp_Executesql @Query1  
END
GO
----------------------------------------------------

GO
/****** Object:  StoredProcedure [dbo].[GetRptGPbyInvReportDBReportData]    Script Date: 14-12-2021 09:33:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetRptGPbyInvReportDBReportData]
@StartDate datetime,
@FinishDate datetime,
@IsCustomerChecked bit,
@CustomerName nvarchar(Max) = '',
@IsSummaryChecked bit,
@IsInActiveCustomers bit,
@IsAll bit,
@IsSearched bit
AS
BEGIN
--summary
if(@IsSummaryChecked = 1)
BEGIN
if(@IsAll = 0 and @IsCustomerChecked = 1 or @IsSearched = 1)
begin
SELECT tblInvoiceDoc.dteJournalDate AS [Date], tblInvoiceDoc.strInvDocID AS Document, tblInvoiceDoc.strCustName AS [Name], SUM(tblInvoiceDocDT.decLineTotExc) AS Revenue, SUM(tblInvoiceDocDT.decCOGS) AS Cost, (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblInvoiceDoc.strCustName) AS CustDesc
FROM tblInvoiceDoc 
INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID 
--INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
WHERE (tblInvoiceDoc.dteJournalDate BETWEEN @StartDate AND @FinishDate)
AND tblInvoiceDoc.strCustName IN (SELECT * FROM fnSplitStringAsTable(@CustomerName, ','))
GROUP BY tblInvoiceDoc.strInvDocID, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strCustName, tblInvoiceDoc.decSubTotal 
ORDER BY tblInvoiceDoc.strCustName, tblInvoiceDoc.strInvDocID
end
else
begin
if(@IsInActiveCustomers = 0)
begin
SELECT tblInvoiceDoc.dteJournalDate AS [Date], tblInvoiceDoc.strInvDocID AS Document, tblInvoiceDoc.strCustName AS [Name], SUM(tblInvoiceDocDT.decLineTotExc) AS Revenue, SUM(tblInvoiceDocDT.decCOGS) AS Cost, (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblInvoiceDoc.strCustName) AS CustDesc
FROM tblInvoiceDoc 
INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID 
--INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
WHERE (tblInvoiceDoc.dteJournalDate BETWEEN @StartDate AND @FinishDate)
AND tblInvoiceDoc.strCustName IN (SELECT strCustName FROM tblCustomers WHERE (bitInactive = 0))--changes
GROUP BY tblInvoiceDoc.strInvDocID, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strCustName, tblInvoiceDoc.decSubTotal 
ORDER BY tblInvoiceDoc.strCustName, tblInvoiceDoc.strInvDocID
end
else
begin
SELECT tblInvoiceDoc.dteJournalDate AS [Date], tblInvoiceDoc.strInvDocID AS Document, tblInvoiceDoc.strCustName AS [Name], SUM(tblInvoiceDocDT.decLineTotExc) AS Revenue, SUM(tblInvoiceDocDT.decCOGS) AS Cost, (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblInvoiceDoc.strCustName) AS CustDesc
FROM tblInvoiceDoc 
INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID 
--INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
WHERE (tblInvoiceDoc.dteJournalDate BETWEEN @StartDate AND @FinishDate)
AND tblInvoiceDoc.strCustName IN (SELECT strCustName FROM tblCustomers)--changes
GROUP BY tblInvoiceDoc.strInvDocID, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strCustName, tblInvoiceDoc.decSubTotal 
ORDER BY tblInvoiceDoc.strCustName, tblInvoiceDoc.strInvDocID
end
end
END
--details
ELSE
BEGIN
if(@IsAll = 0 and @IsCustomerChecked = 1 or @IsSearched = 1)
begin
SELECT tblInvoiceDoc.dteJournalDate AS [Date], tblInvoiceDoc.strInvDocID AS Document, tblInvoiceDoc.strCustName AS [Name], tblInvoiceDocDT.decQty AS Quantity, tblInvoiceDocDT.strPartNumber AS Part, tblInvoiceDocDT.decLineTotExc AS Revenue, tblInvoiceDocDT.decCOGS AS Cost, (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblInvoiceDoc.strCustName) AS CustDesc
FROM tblInvoiceDoc 
INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
--INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
WHERE (tblInvoiceDoc.dteJournalDate BETWEEN @StartDate AND @FinishDate)
AND tblInvoiceDoc.strCustName IN (SELECT * FROM fnSplitStringAsTable(@CustomerName, ','))
ORDER BY tblInvoiceDoc.strInvDocID
end
else
begin
if(@IsInActiveCustomers = 0)
begin
SELECT tblInvoiceDoc.dteJournalDate AS [Date], tblInvoiceDoc.strInvDocID AS Document, tblInvoiceDoc.strCustName AS [Name], tblInvoiceDocDT.decQty AS Quantity, tblInvoiceDocDT.strPartNumber AS Part, tblInvoiceDocDT.decLineTotExc AS Revenue, tblInvoiceDocDT.decCOGS AS Cost, (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblInvoiceDoc.strCustName) AS CustDesc
FROM tblInvoiceDoc 
INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
--INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
WHERE (tblInvoiceDoc.dteJournalDate BETWEEN @StartDate AND @FinishDate)
AND tblInvoiceDoc.strCustName IN (SELECT strCustName FROM tblCustomers WHERE (bitInactive = 0))--changes
ORDER BY tblInvoiceDoc.strInvDocID
end
else
begin
SELECT tblInvoiceDoc.dteJournalDate AS [Date], tblInvoiceDoc.strInvDocID AS Document, tblInvoiceDoc.strCustName AS [Name], tblInvoiceDocDT.decQty AS Quantity, tblInvoiceDocDT.strPartNumber AS Part, tblInvoiceDocDT.decLineTotExc AS Revenue, tblInvoiceDocDT.decCOGS AS Cost, (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblInvoiceDoc.strCustName) AS CustDesc
FROM tblInvoiceDoc 
INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
--INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
WHERE (tblInvoiceDoc.dteJournalDate BETWEEN @StartDate AND @FinishDate)
AND tblInvoiceDoc.strCustName IN (SELECT strCustName FROM tblCustomers)--changes
ORDER BY tblInvoiceDoc.strInvDocID
end
end
END
--exec (@command, @query)
END

GO

/****** Object:  StoredProcedure [dbo].[LoadJobTitle]    Script Date: 22-12-2021 12:52:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--exec GetRptInvCountStockReportData "'IAJ-00000005','IIR-000000001','IAJ-00000004','IAJ-00000003','IAJ-00000002','IAJ-00000001'"
--exec GetRptInvCountStockReportData '12,11'
CREATE PROCEDURE [dbo].[GetRptInvCountStockReportData]
(
@SQTrackID NVARCHAR(max) = ''
)
AS
BEGIN
	SELECT tblInvTrackingDT.intLineNo AS [LineNo]
		,--LineNo
		tblInvTrackingDT.strPartNumber AS PartNumber
		,--PartNumber
		tblInv.strDesc AS [Description]
		,--Description
		tblInvTrackingDT.decOnHand AS Available
		,--Available=>OnHand
		tblInvTrackingDT.decQty AS OnHand
		,--OnHand=>Qty
		tblInvTracking.lngJourID AS JourID
		,CASE 
		WHEN tblInvTrackingDT.decValue = 0
			OR tblInvTrackingDT.decQty = 0
			THEN 0
		ELSE ISNULL(tblInvTrackingDT.decValue / tblInvTrackingDT.decQty, 0)
		END
		 AS ValueEa
		,--ValueEa
		tblInvTrackingDT.decValue AS [ValueTotal]
		,--ValueTotal
		tblInvTracking.lngInvTrackID AS InvTrackID
		,--InvTrackID
		(
			CASE 
				WHEN tblInvTracking.strSource = 'Stock Count'
					THEN (
							CASE 
								WHEN (
										SELECT COUNT(strAdjDocID)
										FROM tblInvAdjDoc
									WHERE tblInvAdjDoc.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
										) = 0
									THEN tblInvTracking.strSource
								ELSE (
										SELECT ISNULL(CONCAT (
													'SC/'
													,strAdjDocID
													), tblInvTracking.strSource)
										FROM tblInvAdjDoc
									WHERE tblInvAdjDoc.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
									)
								END
							)
				ELSE tblInvTracking.strSource
				END
			) AS [Source]
		,--strSource
		tblInvTracking.dteJournalDate AS [Date]
		,--JournalDate
		tblInvTracking.strComment AS Comment
		,--comment
		tblInvTracking.strUserName AS UserName --Group
	FROM tblInvTrackingDT
	INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
	INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
	WHERE tblInvTrackingDT.lngInvTrackID IN (
			(
				SELECT *
				FROM fnSplitStringAsTable(@SQTrackID, ',')
				)
			)
	ORDER BY tblInvTrackingDT.intLineNo
END

GO

/****** Object:  StoredProcedure [dbo].[GetRptInvProductionScheduleReportDBReportData]    Script Date: 20-12-2021 10:26:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********** End [LoadServiceableItems] **********/
--exec GetRptInvProductionScheduleReportDBReportData 'Assemble','TEST'
/********** Start [LoadGPCustomers] **********/
create procedure [dbo].[GetRptInvProductionScheduleReportDBReportData]
(
@SQstrAsmDocID nvarchar (max) =  '',
@SQstrPartNumber nvarchar (max) = ''
)
AS
BEGIN
SELECT decQty as Qty, decAmount as Amount FROM tblInvAsmDocDT WHERE strAsmDocID = @SQstrAsmDocID AND strPartNumber = @SQstrPartNumber
END
GO


/****** Object:  StoredProcedure [dbo].[GetRptInvTargetsReportData]    Script Date: 03-01-2022 17:12:36 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetRptInvTargetsReportData]
@StartDate varchar(10),
@FinishDate varchar(10),
--@UserName nvarchar(Max)='',
--@BPToolsMode bit
--@SQStart varchar(19),
--@SQEnd varchar(19),
@blnBPToolsMode bit,
@SQUserName varchar(50)
AS
BEGIN
Declare @Query as NVARCHAR(max)
--SET @Query = 
--'SELECT tblSalesPersons.strSalesName as SalesName, tblSalesPersonsT.decPeriod1 as Period1, tblSalesPersonsT.decPeriod2 as Period2, tblSalesPersonsT.decPeriod3 as Period3, tblSalesPersonsT.decPeriod4 as Period4, tblSalesPersonsT.decPeriod5 as Period5, 
--		tblSalesPersonsT.decPeriod6 as Period6, tblSalesPersonsT.decPeriod7 as Period7, tblSalesPersonsT.decPeriod8 as Period8, tblSalesPersonsT.decPeriod9 as Period9, tblSalesPersonsT.decPeriod10 as Period10, tblSalesPersonsT.decPeriod11 as Period11, tblSalesPersonsT.decPeriod12 as Period12,
--(SELECT ISNULL(SUM(tblInvoiceDoc.decSubTotal),0) FROM tblInvoiceDoc 
--WHERE (tblInvoiceDoc.bitHistoryTrans) = 0 AND (strSalesName = tblSalesPersons.strSalesName) AND (tblInvoiceDoc.dteJournalDate BETWEEN '''+ @StartDate +''' AND '''+ @FinishDate +''')), 
--(SELECT ISNULL(SUM(tblInvoiceDoc.decTotal),0) FROM tblInvoiceDoc WHERE (tblInvoiceDoc.bitHistoryTrans) = 0 AND (strSalesName = tblSalesPersons.strSalesName) AND (tblInvoiceDoc.dteJournalDate BETWEEN '''+ @StartDate +''' AND '''+ @FinishDate +''')) 
--FROM tblSalesPersons INNER JOIN tblSalesPersonsT ON tblSalesPersons.strSalesName = tblSalesPersonsT.strSalesName WHERE (tblSalesPersons.bitInactive) = 0 AND tblSalesPersons.bitIsWorkshopTechnician = 0 ORDER BY tblSalesPersons.strSalesName'
SET @Query = 
'SELECT tblInv.strPartNumber as Number, tblInv.strDesc as Description, tblInvT.decPeriod1 as Period1, tblInvT.decPeriod2 as Period2, tblInvT.decPeriod3 as Period3, tblInvT.decPeriod4 as Period4, tblInvT.decPeriod5 as Period5, 
tblInvT.decPeriod6 as Period6, tblInvT.decPeriod7 as Period7, tblInvT.decPeriod8 as Period8, tblInvT.decPeriod9 as Period9, tblInvT.decPeriod10 as Period10, tblInvT.decPeriod11 as Period11, tblInvT.decPeriod12 as Period12, 
(SELECT ISNULL(SUM(tblInvoiceDocDT.decLineTotExc),0) FROM tblInvoiceDoc 
INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID 
WHERE (tblInvoiceDoc.bitHistoryTrans) = 0 AND (tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber) AND (tblInvoiceDoc.dteJournalDate BETWEEN '''+@StartDate+''' AND '''+@FinishDate+''')) 
FROM tblInv INNER JOIN tblInvT ON tblInv.strPartNumber = tblInvT.strPartNumber WHERE (tblInv.bitInactive) = 0 AND (tblInv.intType <> 5) AND tblInv.bitOtherCmp = 0'
if(@blnBPToolsMode = 0)
begin
set @Query += ' AND strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = '''+@SQUserName+'''))'
end
set @Query += ' ORDER BY tblInv.strPartNumber'
EXEC sp_Executesql @Query
END

GO

/****** Object:  StoredProcedure [dbo].[GetRptListVendorsData]    Script Date: 04-02-2022 11:16:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetRptListVendorsData]
(
@IsActiveChecked bit,
@IsInActiveChecked bit,
@IsAllChecked bit,
@blnBPToolsMode bit,
@SQUserName varchar(100)
)
AS
DECLARE @Query nvarchar(max) = ''
BEGIN
IF(@IsActiveChecked = 1)
BEGIN
SET @Query = 'SELECT * FROM tblVendors WHERE bitInactive = 0'
IF(@blnBPToolsMode = 0)
BEGIN
SET @Query += ' AND strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = '''+@SQUserName+'''))'
END
END
ELSE IF(@IsInActiveChecked = 1)
BEGIN
SET @Query = 'SELECT * FROM tblVendors WHERE bitInactive = 1'
IF(@blnBPToolsMode = 0)
BEGIN
SET @Query += ' AND strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = '''+@SQUserName+'''))'
END
END
ELSE IF(@IsAllChecked = 1)
BEGIN
SET @Query = 'SELECT * FROM tblVendors'
IF(@blnBPToolsMode = 0)
BEGIN
SET @Query += ' WHERE strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = '''+@SQUserName+'''))'
END
END
SET @Query = CONCAT(@Query,'  ORDER BY strVendName')
EXEC sp_Executesql @Query
--PRINT @Query
END

GO

/****** Object:  StoredProcedure [dbo].[LoadLocation]    Script Date: 13-01-2022 12:29:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetRptManBOMReportData]
@IsSummaryChecked bit,
@SQCode nvarchar(max)
AS
BEGIN
SELECT tblManBOM.lngManBOMID
	,tblManBOM.strPartNumber
	,tblManBOM.strDesc
	,tblManBOM.strLocation
	,tblManBOM.dteRevDate
	,tblManBOM.decQty
	,tblManBOM.bitInactive
	,tblInv.strStockUnit AS strUnit
	,tblInv.decStandardCost
	,tblManBOM.dteRowUpdated
FROM tblManBOM
INNER JOIN tblInv ON tblManBOM.strPartNumber = tblInv.strPartNumber
WHERE (tblManBOM.bitInactive = 0)
	AND (
		tblManBOM.strLocation IN (
			SELECT *
			FROM fnSplitStringAsTable(@SQCode, ',')
			)
		)
		Order By tblManBOM.strPartNumber 
IF(@IsSummaryChecked = 0)
BEGIN
SELECT tblManBOMOp.lngManBOMID
	,tblManBOMOp.strWCCode
	,tblManWorkCentre.strDesc
	,tblManBOMOp.strNotes
FROM tblManBOM
INNER JOIN tblManBOMOp ON tblManBOM.lngManBOMID = tblManBOMOp.lngManBOMID
INNER JOIN tblManWorkCentre ON tblManBOMOp.strWCCode = tblManWorkCentre.strWCCode
WHERE (tblManBOM.bitInactive = 0)
	AND (
		tblManBOM.strLocation IN (
			SELECT *
			FROM fnSplitStringAsTable(@SQCode, ',')
			)
		)
ORDER BY tblManBOMOp.strWCCode


SELECT tblManBOMCompInv.lngManBOMID
	,tblManBOMCompInv.strWCCode
	,tblManBOMCompInv.intLineNo
	,tblManBOMCompInv.strPartNumber
	,tblManBOMCompInv.strDesc
	,tblManBOMCompInv.strLocation
	,tblManBOMCompInv.decQty
	,tblInv.strStockUnit AS strUnit
FROM tblManBOM 
INNER JOIN tblManBOMCompInv ON tblManBOM.lngManBOMID = tblManBOMCompInv.lngManBOMID
INNER JOIN tblInv ON tblManBOMCompInv.strPartNumber = tblInv.strPartNumber
WHERE (tblManBOM.bitInactive = 0)
	AND (
		tblManBOM.strLocation IN (
			SELECT *
			FROM fnSplitStringAsTable(@SQCode, ',')
			)
		)
ORDER BY tblManBOMCompInv.strWCCode
	,tblManBOMCompInv.intLineNo

SELECT tblManBOMCompLab.lngManBOMID
	,tblManBOMCompLab.strWCCode
	,tblManBOMCompLab.intLineNo
	,tblManBOMCompLab.strLabCode
	,tblManLabour.strDesc
	,tblManBOMCompLab.decVariableHours
	,tblManBOMCompLab.decVariableRate
	,tblManBOMCompLab.decSetupHours
	,tblManBOMCompLab.decSetupRate
	,tblManBOMCompLab.decBreakdownHours
	,tblManBOMCompLab.decBreakdownRate
FROM tblManBOM
INNER JOIN tblManBOMCompLab ON tblManBOM.lngManBOMID = tblManBOMCompLab.lngManBOMID
INNER JOIN tblManLabour ON tblManBOMCompLab.strLabCode = tblManLabour.strLabCode
WHERE (tblManBOM.bitInactive = 0)
	AND (
		tblManBOM.strLocation IN (
			SELECT *
			FROM fnSplitStringAsTable(@SQCode, ',')
			)
		)
ORDER BY tblManBOMCompLab.strLabCode

SELECT tblManBOMCompMach.lngManBOMID
	,tblManBOMCompMach.strWCCode
	,tblManBOMCompMach.intLineNo
	,tblManBOMCompMach.strMachCode
	,tblManMachinery.strDesc
	,tblManBOMCompMach.decVariableHours
	,tblManBOMCompMach.decVariableRate
	,tblManBOMCompMach.decSetupHours
	,tblManBOMCompMach.decSetupRate
	,tblManBOMCompMach.decBreakdownHours
	,tblManBOMCompMach.decBreakdownRate
FROM tblManBOM
INNER JOIN tblManBOMCompMach ON tblManBOM.lngManBOMID = tblManBOMCompMach.lngManBOMID
INNER JOIN tblManMachinery ON tblManBOMCompMach.strMachCode = tblManMachinery.strMachCode
WHERE (tblManBOM.bitInactive = 0)
	AND (
		tblManBOM.strLocation IN (
			SELECT *
			FROM fnSplitStringAsTable(@SQCode, ',')
			)
		)
ORDER BY tblManBOMCompMach.strMachCode 

SELECT tblManBOMCompOverhead.lngManBOMID
	,tblManBOMCompOverhead.strWCCode
	,tblManBOMCompOverhead.intLineNo
	,tblManBOMCompOverhead.intGLNumber
	,tblAccounts.strDesc AS strAccDesc
	,ISNULL(tblManBOMCompOverhead.intDept, 0) AS intDept
	,ISNULL(tblDepartments.strDESC, '') AS strDeptDesc
	,tblManBOMCompOverhead.uidCenterID
	,CASE 
		WHEN ISNULL(tblCenters.strLvl1, '') <> ''
			THEN tblCenters.strLvl1 + CASE 
					WHEN ISNULL(tblCenters.strLvl2, '') = ''
						THEN ''
					ELSE '\' + ISNULL(tblCenters.strLvl2, '') + CASE 
							WHEN ISNULL(tblCenters.strLvl3, '') = ''
								THEN ''
							ELSE '\' + ISNULL(tblCenters.strLvl3, '') + CASE 
									WHEN ISNULL(tblCenters.strLvl4, '') = ''
										THEN ''
									ELSE '\' + ISNULL(tblCenters.strLvl4, '') + CASE 
											WHEN ISNULL(tblCenters.strLvl5, '') = ''
												THEN ''
											ELSE '\' + ISNULL(tblCenters.strLvl4, '')
											END
									END
							END
					END
		ELSE ''
		END strCenter
	,tblManBOMCompOverhead.decAmount
FROM tblManBOM
INNER JOIN tblManBOMCompOverhead ON tblManBOM.lngManBOMID = tblManBOMCompOverhead.lngManBOMID
INNER JOIN tblAccounts ON tblManBOMCompOverhead.intGLNumber = tblAccounts.intGLNumber
LEFT JOIN tblDepartments ON tblManBOMCompOverhead.intDept = tblDepartments.intDept
LEFT JOIN tblCenters ON tblManBOMCompOverhead.uidCenterID = tblCenters.uidCenterID
WHERE (tblManBOM.bitInactive = 0)
	AND (
		tblManBOM.strLocation IN (
			SELECT *
			FROM fnSplitStringAsTable(@SQCode, ',')
			)
		)
ORDER BY tblManBOMCompOverhead.intGLNumber

END
END
GO

/****** Object:  StoredProcedure [dbo].[GetRptManVarianceReportData]    Script Date: 19-01-2022 15:47:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetRptManVarianceReportData]

@SQStartDate varchar(19),
@SQFinishDate varchar(19),
@SQTypeCL int,
@IsInventoryChecked bit,
@IsLabourChecked bit,
@IsMachineryChecked bit,
@IsRecoveryCostChecked bit,
@SQJobNumbers nvarchar(max),
@IsAll bit
AS
DECLARE @Query1 nvarchar(max) = ''
DECLARE @Query2 nvarchar(max) = ''
DECLARE @Query3 nvarchar(max) = ''
DECLARE @Query4 nvarchar(max) = ''

BEGIN 
SET @Query1 = 'SELECT Z.strJBDocID, Z.dteJournalDate, Z.intType, Z.strWCCode, WC.strDesc AS strWCDesc, Z.intLineNo, Z.strCompNumber, Z.strCompDesc, Z.strLocation, Z.decManQtyClosed, Z.decManAmountClosed, Z.decManQty, Z.decManAmount, (Z.decManQty - Z.decManQtyClosed) AS decManQtyVar, (Z.decManAmount - Z.decManAmountClosed) AS decManAmountVar FROM ( '
IF(@IsInventoryChecked = 1)
BEGIN
SET @Query2 = 'SELECT WIP.strJBDocID, MJ.dteJournalDate, 0 AS intType, WIP.strWCCode, WIPI.intLineNo, WIPI.strPartNumber AS strCompNumber, WIPI.strDesc AS strCompDesc, WIPI.strLocation, Cast(SUM(WIPI.decPostQty - WIPI.decReturnQty) As decimal) AS decManQtyClosed, SUM(WIPI.decPostAmount) AS decManAmountClosed, WIPI.decBOMQty AS decManQty, WIPI.decAmount AS decManAmount '
SET @Query2 += 'FROM tblManWIP WIP INNER JOIN tblManWIPCompInv WIPI ON WIP.strWIPDocID = WIPI.strWIPDocID INNER JOIN tblManJob MJ ON WIP.strJBDocID = MJ.strJBDocID INNER JOIN tblInv INV ON WIPI.strPartNumber = INV.strPartNumber '
SET @Query2 += 'WHERE (MJ.dteJournalDate BETWEEN '''+@SQStartDate+''' AND '''+@SQFinishDate+''') AND (MJ.intType = '''+Cast(@SQTypeCL As varchar(10))+''') '
IF(@IsAll = 0)
BEGIN
SET @Query2 += ' AND (MJ.strJBDocID IN (SELECT * FROM fnSplitStringAsTable('''+@SQJobNumbers+''','',''))) '
END
SET @Query2 += 'GROUP BY WIP.strJBDocID, MJ.dteJournalDate, WIP.strWCCode, WIPI.intLineNo, WIPI.strPartNumber, WIPI.strDesc, WIPI.strLocation, WIPI.decBOMQty, WIPI.decAmount '
END
IF(@IsLabourChecked = 1)
BEGIN
IF(LEN(@Query2) > 0)
BEGIN
SET @Query2 += 'UNION ALL '
END
SET @Query2 += 'SELECT WIP.strJBDocID, MJ.dteJournalDate, 1 AS intType, WIP.strWCCode, WIPL.intLineNo, WIPL.strLabCode AS strCompNumber, LAB.strDesc AS strCompDesc, '''' AS strLocation, Cast(0 As decimal) AS decManQtyClosed, SUM(WIPL.decPostAmount) AS decManAmountClosed, Cast(0 As decimal) AS decManQty, WIPL.decAmount AS decManAmount '
SET @Query2 += 'FROM tblManWIP WIP INNER JOIN tblManWIPCompLab WIPL ON WIP.strWIPDocID = WIPL.strWIPDocID INNER JOIN tblManJob MJ ON WIP.strJBDocID = MJ.strJBDocID INNER JOIN tblManLabour LAB ON WIPL.strLabCode = LAB.strLabCode '
SET @Query2 += 'WHERE (MJ.dteJournalDate BETWEEN '''+@SQStartDate+''' AND '''+@SQFinishDate+''') AND (MJ.intType = '''+Cast(@SQTypeCL As varchar(10))+''')  '
IF(@IsAll = 0)
BEGIN
SET @Query2 += 'AND (MJ.strJBDocID IN (SELECT * FROM fnSplitStringAsTable('''+@SQJobNumbers+''','',''))) '
END
SET @Query2 += 'GROUP BY WIP.strJBDocID, MJ.dteJournalDate, WIP.strWCCode, WIPL.intLineNo, WIPL.strLabCode, LAB.strDesc, WIPL.decVariableHours, WIPL.decSetupHours, WIPL.decBreakdownHours, WIPL.decAmount '
END
IF(@IsMachineryChecked = 1)
BEGIN
IF(LEN(@Query2) > 0)
BEGIN
SET @Query2 += 'UNION ALL '
END
SET @Query2 += 'SELECT WIP.strJBDocID, MJ.dteJournalDate, 2 AS intType, WIP.strWCCode, WIPM.intLineNo, WIPM.strMachCode AS strCompNumber, MACH.strDesc AS strCompDesc, '''' AS strLocation, Cast(0 As decimal) AS decManQtyClosed, SUM(WIPM.decPostAmount) AS decManAmountClosed, Cast(0 As decimal) AS decManQty, WIPM.decAmount AS decManAmount '
SET @Query2 += 'FROM tblManWIP WIP INNER JOIN tblManWIPCompMach WIPM ON WIP.strWIPDocID = WIPM.strWIPDocID INNER JOIN tblManJob MJ ON WIP.strJBDocID = MJ.strJBDocID INNER JOIN tblManMachinery MACH ON WIPM.strMachCode = MACH.strMachCode '
SET @Query2 += 'WHERE (MJ.dteJournalDate BETWEEN '''+@SQStartDate+''' AND '''+@SQFinishDate+''') AND (MJ.intType = '''+Cast(@SQTypeCL As varchar(10))+''') '
IF(@IsAll = 0)
BEGIN
SET @Query2 += 'AND (MJ.strJBDocID IN (SELECT * FROM fnSplitStringAsTable('''+@SQJobNumbers+''','',''))) '
END
SET @Query2 += 'GROUP BY WIP.strJBDocID, MJ.dteJournalDate, WIP.strWCCode, WIPM.intLineNo, WIPM.strMachCode, MACH.strDesc, WIPM.decVariableHours, WIPM.decSetupHours, WIPM.decBreakdownHours, WIPM.decAmount '
END
IF(@IsRecoveryCostChecked = 1)
BEGIN
IF(LEN(@Query2) > 0)
BEGIN
SET @Query2 += 'UNION ALL '
END
SET @Query2 += 'SELECT WIP.strJBDocID, MJ.dteJournalDate, 3 AS intType, WIP.strWCCode, WIPO.intLineNo, WIPO.intGLNumber AS strCompNumber, ACC.strDesc AS strCompDesc, '''' AS strLocation, Cast(0 As decimal) AS decManQtyClosed, SUM(WIPO.decPostAmount) AS decManAmountClosed, Cast(0 As decimal) AS decManQty, WIPO.decAmount AS decManAmount '
SET @Query2 += 'FROM tblManWIP WIP INNER JOIN tblManWIPCompOverhead WIPO ON WIP.strWIPDocID = WIPO.strWIPDocID INNER JOIN tblManJob MJ ON WIP.strJBDocID = MJ.strJBDocID INNER JOIN tblAccounts ACC ON WIPO.intGLNumber = ACC.intGLNumber '
SET @Query2 += 'WHERE (MJ.dteJournalDate BETWEEN '''+@SQStartDate+''' AND '''+@SQFinishDate+''') AND (MJ.intType = '''+Cast(@SQTypeCL As varchar(10))+''') '
IF(@IsAll = 0)
BEGIN
SET @Query2 += 'AND (MJ.strJBDocID IN (SELECT * FROM fnSplitStringAsTable('''+@SQJobNumbers+''','',''))) '
END
SET @Query2 += 'GROUP BY WIP.strJBDocID, MJ.dteJournalDate, WIP.strWCCode, WIPO.intLineNo, WIPO.intGLNumber, ACC.strDesc, WIPO.decAmount '
END
SET @Query3 = ') Z INNER JOIN tblManWorkCentre WC ON Z.strWCCode = WC.strWCCode ORDER BY Z.strJBDocID, Z.intType, Z.strWCCode, Z.intLineNo'
set @Query4 = @Query1 + @Query2 + @Query3
print @Query4
EXECUTE sp_executesql  @Query4
END
GO

/****** Object:  StoredProcedure [dbo].[LoadCustVendors]    Script Date: 16-12-2021 18:42:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetRptPendingPayApprovalReportData] (
	@IsDrillDown BIT = 0
	,@SQVendor VARCHAR(100)
	,@UserName VARCHAR(100)
	)
AS
BEGIN
	IF (@IsDrillDown = 0)
	BEGIN
		SELECT tblVendors.strVendName
			,tblVendors.strVendDesc
			,ISNULL(tblVendTrans.strInvDepNumber, '') AS strInvDepNumber
			,ISNULL(tblVendPayApprovalDT.strInvPDocID, '') AS strInvPDocID
			,ISNULL(tblVendTransDT.dteJournalDate, tblVendPayApproval.dteJournalDate) AS dteJournalDate
			,ISNULL(tblVendPayApprovalDT.decOrgAmount, '') AS decOrgAmount
			,CASE tblVendPayApproval.bitIsForeign
				WHEN 0
					THEN ISNULL((
								SELECT ISNULL(SUM(tblVendTransDT.decAmount), 0)
								FROM tblVendTransDT
								WHERE tblVendTransDT.lngVendTrID = tblVendTrans.lngVendTrID
									AND tblVendTransDT.bitReversed = 0
								), 0)
				ELSE ISNULL((
							SELECT ISNULL(SUM(tblVendTransDT.decAmountF), 0)
							FROM tblVendTransDT
							WHERE tblVendTransDT.lngVendTrID = tblVendTrans.lngVendTrID
								AND tblVendTransDT.bitReversed = 0
							), 0)
				END AS decOweAmount
			,CASE tblVendPayApproval.bitIsForeign
				WHEN 0
					THEN ISNULL(tblVendPayApprovalDT.decDiscount, '')
				ELSE ISNULL(tblVendPayApprovalDT.decDiscountF, '')
				END AS decDiscount
			,CASE tblVendPayApproval.bitIsForeign
				WHEN 0
					THEN ISNULL(tblVendPayApprovalDT.decAmount, '')
				ELSE ISNULL(tblVendPayApprovalDT.decAmountF, '')
				END AS decAmount
		FROM tblVendPayApproval
		INNER JOIN tblVendPayApprovalDT ON tblVendPayApprovalDT.lngVendPayApprovalID = tblVendPayApproval.lngVendPayApprovalID
			AND tblVendPayApprovalDT.bitPaid = 0
		INNER JOIN tblVendors ON tblVendors.strVendName = tblVendPayApproval.strVendName
		LEFT JOIN tblVendTrans ON tblVendTrans.strInvPDocID = tblVendPayApprovalDT.strInvPDocID
			AND tblVendTrans.bitSettled = 0
		LEFT JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
			AND tblVendTransDT.bitReversed = 0
			AND tblVendPayApprovalDT.lngID = tblVendTransDT.lngID
		WHERE tblVendPayApproval.strVendName  IN (
						SELECT *
						FROM fnSplitStringAsTable(@SQVendor, ',')
						)
		ORDER BY tblVendors.strVendName
			,tblVendPayApprovalDT.strInvPDocID
			,ISNULL(tblVendTransDT.dteJournalDate, tblVendPayApproval.dteJournalDate)
	END
	ELSE
	BEGIN
		SELECT tblVendors.strVendName
			,tblVendors.strVendDesc
			,ISNULL(tblVendTrans.strInvDepNumber, '') AS strInvDepNumber
			,ISNULL(tblVendPayApprovalDT.strInvPDocID, '') AS strInvPDocID
			,ISNULL(tblVendTransDT.dteJournalDate, tblVendPayApproval.dteJournalDate) AS dteJournalDate
			,ISNULL(tblVendPayApprovalDT.decOrgAmount, '') AS decOrgAmount
			,CASE tblVendPayApproval.bitIsForeign
				WHEN 0
					THEN ISNULL((
								SELECT ISNULL(SUM(tblVendTransDT.decAmount), 0)
								FROM tblVendTransDT
								WHERE tblVendTransDT.lngVendTrID = tblVendTrans.lngVendTrID
									AND tblVendTransDT.bitReversed = 0
								), 0)
				ELSE ISNULL((
							SELECT ISNULL(SUM(tblVendTransDT.decAmountF), 0)
							FROM tblVendTransDT
							WHERE tblVendTransDT.lngVendTrID = tblVendTrans.lngVendTrID
								AND tblVendTransDT.bitReversed = 0
							), 0)
				END AS decOweAmount
			,CASE tblVendPayApproval.bitIsForeign
				WHEN 0
					THEN ISNULL(tblVendPayApprovalDT.decDiscount, '')
				ELSE ISNULL(tblVendPayApprovalDT.decDiscountF, '')
				END AS decDiscount
			,CASE tblVendPayApproval.bitIsForeign
				WHEN 0
					THEN ISNULL(tblVendPayApprovalDT.decAmount, '')
				ELSE ISNULL(tblVendPayApprovalDT.decAmountF, '')
				END AS decAmount
		FROM tblVendPayApproval
		INNER JOIN tblVendPayApprovalDT ON tblVendPayApprovalDT.lngVendPayApprovalID = tblVendPayApproval.lngVendPayApprovalID
			AND tblVendPayApprovalDT.bitPaid = 0
		INNER JOIN tblVendors ON tblVendors.strVendName = tblVendPayApproval.strVendName
		LEFT JOIN tblVendTrans ON tblVendTrans.strInvPDocID = tblVendPayApprovalDT.strInvPDocID
			AND tblVendTrans.bitSettled = 0
		LEFT JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
			AND tblVendTransDT.bitReversed = 0
			AND tblVendPayApprovalDT.lngID = tblVendTransDT.lngID
		WHERE tblVendPayApproval.strVendName  IN (
						SELECT *
						FROM fnSplitStringAsTable(@SQVendor, ',')
						)
		ORDER BY tblVendors.strVendName
			,tblVendPayApprovalDT.strInvPDocID
			,ISNULL(tblVendTransDT.dteJournalDate, tblVendPayApproval.dteJournalDate)
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetRptPendingPOReportData]    Script Date: 06-02-2022 12:46:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetRptPendingPOApprovalsReportData] (
	@IsAll BIT
	,@ItemList NVARCHAR(max)
	)
AS
DECLARE @Query NVARCHAR(max) = ''

BEGIN
	IF (@IsAll = 1)
	BEGIN
		SELECT tblPQApprovalsGroup.strGroupName AS [Name]
			,tblOrderDocP.strOrdPDocID AS [DocNumber]
			,tblOrderDocP.dteJournalDate AS [Date]
			,tblOrderDocP.dteRequired AS [Required]
			,tblOrderDocP.decTotal AS [Total]
			,tblPQApprovalsUserTracking.strUserName AS [Approver]
			,(
				ISNULL((
						CASE tblPQApprovalsUserTracking.intApprovalStatus
							WHEN 0
								THEN 'Pending'
							WHEN 1
								THEN 'Approved'
							WHEN 2
								THEN 'Declined'
							ELSE ''
							END
						), 0)
				) AS [ApprovalStatus]
			,tblPQApprovalsUserTracking.rowUpdated AS [ApprovedDate]
			,tblPQApprovalsGroup.ID
		FROM tblOrderDocP
		INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
		INNER JOIN tblOrdersDocP_POApprovals APP ON APP.strOrdPDocID = tblOrderDocP.strOrdPDocID
		INNER JOIN tblPQApprovalsGroup ON APP.intGroupId = tblPQApprovalsGroup.ID
		INNER JOIN tblPQApprovalsUserTracking ON tblPQApprovalsUserTracking.strOrdPDocID = APP.strOrdPDocID
		WHERE (tblOrderDocP.intDocType = 2)
			AND (tblOrderDocP.bitCleared = 0)
		GROUP BY tblPQApprovalsGroup.strGroupName
			,tblOrderDocP.strOrdPDocID
			,tblOrderDocP.dteJournalDate
			,tblOrderDocP.dteRequired
			,tblOrderDocP.decTotal
			,tblPQApprovalsUserTracking.strUserName
			,tblPQApprovalsUserTracking.intApprovalStatus
			,tblPQApprovalsUserTracking.rowUpdated
			,tblPQApprovalsGroup.ID
		ORDER BY tblPQApprovalsGroup.ID
			,tblOrderDocP.strOrdPDocID
	END
	ELSE
	BEGIN
		SELECT tblPQApprovalsGroup.strGroupName AS [Name]
			,tblOrderDocP.strOrdPDocID AS [DocNumber]
			,tblOrderDocP.dteJournalDate AS [Date]
			,tblOrderDocP.dteRequired AS [Required]
			,tblOrderDocP.decTotal AS [Total]
			,tblPQApprovalsUserTracking.strUserName AS [Approver]
			,(
				ISNULL((
						CASE tblPQApprovalsUserTracking.intApprovalStatus
							WHEN 0
								THEN 'Pending'
							WHEN 1
								THEN 'Approved'
							WHEN 2
								THEN 'Declined'
							ELSE ''
							END
						), 0)
				) AS [ApprovalStatus]
			,tblPQApprovalsUserTracking.rowUpdated AS [ApprovedDate]
			,tblPQApprovalsGroup.ID
		FROM tblOrderDocP
		INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
		INNER JOIN tblOrdersDocP_POApprovals APP ON APP.strOrdPDocID = tblOrderDocP.strOrdPDocID
		INNER JOIN tblPQApprovalsGroup ON APP.intGroupId = tblPQApprovalsGroup.ID
		INNER JOIN tblPQApprovalsUserTracking ON tblPQApprovalsUserTracking.strOrdPDocID = APP.strOrdPDocID
		WHERE (tblOrderDocP.intDocType = 2)
			AND (tblOrderDocP.bitCleared = 0)
			AND tblPQApprovalsGroup.strGroupName IN (
				SELECT *
				FROM fnSplitStringAsTable(@ItemList, ',')
				)
		GROUP BY tblPQApprovalsGroup.strGroupName
			,tblOrderDocP.strOrdPDocID
			,tblOrderDocP.dteJournalDate
			,tblOrderDocP.dteRequired
			,tblOrderDocP.decTotal
			,tblPQApprovalsUserTracking.strUserName
			,tblPQApprovalsUserTracking.intApprovalStatus
			,tblPQApprovalsUserTracking.rowUpdated
			,tblPQApprovalsGroup.ID
		ORDER BY tblPQApprovalsGroup.ID
			,tblOrderDocP.strOrdPDocID
	END
END
GO

/****** Object:  StoredProcedure [dbo].[LoadCustomers]    Script Date: 19-01-2022 10:00:43 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetRptPendingPOReportData] (
	@IsSummaryChecked BIT
	,@SQVendor NVARCHAR(max)
	)
AS
BEGIN
	IF (@IsSummaryChecked = 1)
	BEGIN
		SELECT tblOrderDocP.strOrdPDocID AS DocNumber
			,tblOrderDocP.dteJournalDate AS [Date]
			,tblOrderDocP.dteRequired AS [Required]
			,tblOrderDocP.decTotal AS Total
			,SUM(ISNULL((
						CASE tblOrderDocPDT.decBuyQty
							WHEN tblOrderDocPDT.decBuyQtyRemain
								THEN (tblOrderDocPDT.decLineTotExc + tblOrderDocPDT.decLineTaxAmt)
							ELSE ((tblOrderDocPDT.decLineTotExc + tblOrderDocPDT.decLineTaxAmt) / tblOrderDocPDT.decBuyQty) * tblOrderDocPDT.decBuyQtyRemain
							END
						), 0)) AS Remain
			,tblOrderDocP.intDocType AS [Name]
			,tblOrderDocP.strVendname AS strVendName	
			,tblVendors.strVendDesc AS strVendDesc	
		FROM tblOrderDocP
		INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
		INNER JOIN tblVendors on  tblOrderDocP.strVendName = tblVendors.strVendName
		WHERE (tblOrderDocP.intDocType = 1)
			AND (tblOrderDocP.bitCleared = 0)
			AND (
				tblOrderDocP.strVendname IN (
					SELECT *
					FROM fnSplitStringAsTable(@SQVendor, ',')
					)
				)
		GROUP BY tblOrderDocP.strOrdPDocID
			,tblOrderDocP.dteJournalDate
			,tblOrderDocP.dteRequired
			,tblOrderDocP.decTotal
			,tblOrderDocP.intDocType
			,tblOrderDocP.strVendName
			,tblVendors.strVendDesc
		ORDER BY tblOrderDocP.strVendname, tblOrderDocP.dteJournalDate
	END
	ELSE
	BEGIN
		SELECT tblOrderDocP.strOrdPDocID AS DocNumber
			,tblOrderDocP.dteJournalDate AS [Date]
			,tblOrderDocP.dteRequired AS [Required]
			,tblOrderDocP.decTotal AS Total
			,CASE tblOrderDocPDT.decBuyQty
				WHEN tblOrderDocPDT.decBuyQtyRemain
					THEN (tblOrderDocPDT.decLineTotExc + tblOrderDocPDT.decLineTaxAmt)
				ELSE ((tblOrderDocPDT.decLineTotExc + tblOrderDocPDT.decLineTaxAmt) / tblOrderDocPDT.decBuyQty) * tblOrderDocPDT.decBuyQtyRemain
				END AS Remain
			,tblOrderDocPDT.strPartNumber AS PartNumber
			,tblOrderDocPDT.strBuyUnit AS BuyUnit
			,tblOrderDocPDT.decBuyQty AS BuyQty
			,tblOrderDocPDT.decBuyQtyRemain AS QtyRemaining
			,tblOrderDocPDT.strPartDesc AS PartDesc
			,tblOrderDocP.intDocType AS [Name]
			,tblOrderDocP.strVendname AS strVendName	
			,tblVendors.strVendDesc AS strVendDesc	
		FROM tblOrderDocP
		INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
		INNER JOIN tblVendors on  tblOrderDocP.strVendName = tblVendors.strVendName
		WHERE (tblOrderDocP.intDocType = 1)
			AND (tblOrderDocP.bitCleared = 0)
			AND (
				tblOrderDocP.strVendname IN (
					SELECT *
					FROM fnSplitStringAsTable(@SQVendor, ',')
					)
				)
		ORDER BY tblOrderDocP.strVendname,  tblOrderDocP.dteJournalDate
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetManJobFillDataSet]    Script Date: 02-02-2022 19:11:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetRptPOSClosingData]
(
--@SQSession varchar(200),
@SQuidSessionID nvarchar(max)
)
AS
BEGIN
SELECT strDrawerName, uidSessionID, intStatus, strAssignedUser, dteSessionDate, strCreateUser, dteCreated, dteCashedOut, strClosedUser, dteClosed, strTerminal, decOpenVal, decCashBal, decCkBal, decCCBal, decGiftCouBal, decAccountBal, decTotalDrops, decTotalSales, decCurrentVal, (decCloseVal-decTotalDrops) as decCloseVal, decOvSht, (decActCloseVal-decTotalDrops-decOpenVal) as decActCloseVal, strOvShtReason FROM tblPOSDrs WHERE uidSessionID = @SQuidSessionID
SELECT uidSessionID, decCash, decCashAct, decCashVar, decDrops, decDropsAct, decDropsVar, decCK, decCKAct, decCKVar, decCC, decCCAct, decCCVar, decGiftCoup, decGiftCoupAct, decGiftCoupVar, decAccount, decAccountAct, decAccountVar, decTotal, decTotalAct, decTotalVar FROM tblPOSDrsCL WHERE uidSessionID = @SQuidSessionID
SELECT uidSessionID, dteTimeStamp, strInvDocID, strCustName, decCash, decCk, decCC, decGiftCoup, decAccount, decDrop, strDropUser, decOvSht, lngID FROM tblPOSDrsDT WHERE uidSessionID = @SQuidSessionID ORDER BY dteTimeStamp
SELECT uidSessionID, strPaymentTypeName, SUM(decVariance) AS decVariance FROM tblPOSDrsCLSP WHERE uidSessionID = @SQuidSessionID GROUP BY uidSessionID, strPaymentTypeName
SELECT strTenderTypeName FROM tblTenderTypes INNER JOIN tblPOSDrTenderTypes ON tblPOSDrTenderTypes.strTenderTypeName = tblTenderTypes.strName INNER JOIN tblPOSDrs ON tblPOSDrTenderTypes.strDrawerName = tblPOSDrs.strDrawerName WHERE uidSessionID = @SQuidSessionID AND bitUsed = 1 AND strName <> 'Split Payment' AND strName <> 'Installment Sale' ORDER BY intDisplayOrder ,strName
SELECT t10.*
FROM (
SELECT t5.uidSessionID
,t5.dteTimeStamp
,t5.strInvDocID
,SUM(CASE 
WHEN t5.strPaymentTypeName = 'Cash'
THEN ISNULL(t5.decValue, 0)
ELSE 0
END) AS decCashN
,SUM(CASE 
WHEN t5.strPaymentTypeName = 'Cheque'
THEN ISNULL(t5.decValue, 0)
ELSE 0
END) AS decChequeN
,SUM(CASE 
WHEN t5.strPaymentTypeName = 'Credit Card'
THEN ISNULL(t5.decValue, 0)
ELSE 0
END) AS decCreditCardN
,SUM(CASE 
WHEN t5.strPaymentTypeName = 'GiftCoup'
THEN ISNULL(t5.decValue, 0)
ELSE 0
END) AS decGiftCoupN
,SUM(CASE 
WHEN t5.strPaymentTypeName = 'On Account'
THEN ISNULL(t5.decValue, 0)
ELSE 0
END) AS decOnAccountN
,SUM(CASE 
WHEN t5.strPaymentTypeName IN (
'Cash'
,'Cheque'
,'Credit Card'
,'GiftCoup'
,'On Account'
)
THEN 0
ELSE ISNULL(t5.decValue, 0)
END) AS decOtherN
,SUM(CASE 
WHEN t5.strPaymentTypeName = 'Cash'
THEN ISNULL(t5.decVariance, 0)
ELSE 0
END) AS decCashNVar
,SUM(CASE 
WHEN t5.strPaymentTypeName = 'Cheque'
THEN ISNULL(t5.decVariance, 0)
ELSE 0
END) AS decChequeNVar
,SUM(CASE 
WHEN t5.strPaymentTypeName = 'Credit Card'
THEN ISNULL(t5.decVariance, 0)
ELSE 0
END) AS decCreditCardNVar
,SUM(CASE 
WHEN t5.strPaymentTypeName = 'GiftCoup'
THEN ISNULL(t5.decVariance, 0)
ELSE 0
END) AS decGiftCoupNVar
,SUM(CASE 
WHEN t5.strPaymentTypeName = 'On Account'
THEN ISNULL(t5.decVariance, 0)
ELSE 0
END) AS decOnAccountNVar
,SUM(CASE 
WHEN t5.strPaymentTypeName IN (
'Cash'
,'Cheque'
,'Credit Card'
,'GiftCoup'
,'On Account'
)
THEN 0
ELSE ISNULL(t5.decVariance, 0)
END) AS decOtherNVar
,0 AS decOvShtN
,0 AS [decDropN]
FROM (
SELECT t2.uidSessionID
,t1.strInvDocID
,t2.dteTimeStamp
,t1.strPaymentTypeName
,t1.intGLNumber
,t1.decTotal AS decValue
,t3.decVariance AS decVariance
FROM tblInvoiceDocSplitPmt t1
LEFT JOIN tblPOSDrsDt t2 ON t1.strInvDocID = t2.strInvDocID
LEFT JOIN (Select uidSessionID,strPaymentTypeName,SUM(decVariance) AS decVariance from tblPOSDrsCLSP GROUP BY uidSessionID, strPaymentTypeName) t3 ON t2.uidSessionID = t3.uidSessionID 
And t1.strPaymentTypeName = t3.strPaymentTypeName 
--LEFT JOIN tblPOSDrsCLSP t3 ON t2.uidSessionID = t3.uidSessionID
--AND t1.strPaymentTypeName = t3.strPaymentTypeName
UNION ALL
SELECT t11.uidSessionID
,t11.strInvDocID
,t11.dteTimeStamp
,t12.strPaidBy AS strPaymentTypeName
,t12.intBankAcct AS intGLNumber
,t12.decAmount AS decValue
,0 AS decVariance
FROM tblPOSDrsDt t11
INNER JOIN tblCustPay t12 ON t11.strInvDocID = t12.strSource
WHERE t11.strInvDocID LIKE '%RC-%'
) t5
GROUP BY t5.uidSessionID
,t5.dteTimeStamp
,t5.strInvDocID
UNION ALL
SELECT t7.uidSessionID
,t7.dteClosed
,'' AS strInvDocID
,- t7.decTotalDrops AS decCashN
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,t7.decOvSht AS decVariance
,t7.decTotalDrops AS decDrop
FROM tblPOSDrs t7
WHERE t7.decTotalDrops <> 0
OR t7.decOvSht <> 0
) t10
WHERE t10.uidSessionID = @SQuidSessionID
ORDER BY CASE 
WHEN t10.strInvDocID = ''
THEN 'ZZZZ'
ELSE t10.strInvDocID
END
END

GO

/****** Object:  StoredProcedure [dbo].[LoadRptPrject]    Script Date: 28-01-2022 12:10:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetRptPrjActualVSBudgetReportData]
(
@SQAsAt varchar(19),
@SQProjNum nvarchar(max),
@SQPayType int,
@SQRecType int,
@SQintModule int
)
AS
BEGIN
SELECT 1
,tblInvoiceDocDT.strPartNumber
,tblInvoiceDocDT.strPartDesc
,ISNULL(SUM(tblInvoiceDocDT.decQty), 0)
,ISNULL(SUM(tblInvoiceDocDT.decLineTotExc), 0)
,0
,tblInvoiceDocDTPrj.strStage
FROM tblInvoiceDoc
INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
INNER JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
WHERE (tblInvoiceDoc.dteJournalDate <= @SQAsAt)
AND (tblInvoiceDocDTPrj.strProjNumber in  (@SQProjNum))
GROUP BY tblInvoiceDocDT.strPartNumber
,tblInvoiceDocDT.strPartDesc
,tblInvoiceDocDTPrj.strStage
UNION ALL
SELECT 2
,tblInvoiceDocPDT.strPartNumber
,tblInvoiceDocPDT.strPartDesc
,ISNULL(SUM(tblInvoiceDocPDT.decStockQty), 0)
,ISNULL(SUM(tblInvoiceDocPDT.decLineTotExc), 0)
,0
,tblInvoiceDocPDTPrj.strStage
FROM tblInvoiceDocP
INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
INNER JOIN tblInvoiceDocPDTPrj ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocPDTPrj.strInvPDocID
AND tblInvoiceDocPDT.intLineNo = tblInvoiceDocPDTPrj.intLineNo
WHERE (tblInvoiceDocP.dteJournalDate <= @SQAsAt)
AND (tblInvoiceDocPDTPrj.strProjNumber in  (@SQProjNum))
GROUP BY tblInvoiceDocPDT.strPartNumber
,tblInvoiceDocPDT.strPartDesc
,tblInvoiceDocPDTPrj.strStage
UNION ALL
SELECT 3
,tblProjectsBudgets.strPartNumber
,tblInv.strDesc
,ISNULL(SUM(tblProjectsBudgets.decQty), 0)
,ISNULL(SUM(tblProjectsBudgets.decCost), 0)
,ISNULL(SUM(tblProjectsBudgets.decRevenue), 0)
,tblProjectsBudgets.strStage
FROM tblProjectsBudgets
INNER JOIN tblInv ON tblProjectsBudgets.strPartNumber = tblInv.strPartNumber
WHERE (tblProjectsBudgets.strProjNumber in  (@SQProjNum))
GROUP BY tblProjectsBudgets.strPartNumber
,tblInv.strDesc
,tblProjectsBudgets.strStage
UNION ALL
SELECT 4
,tblJournalEntryDocCBDT.intGLNumber AS strPartNumber
,tblJournalEntryDocCBDT.strDesc
,ISNULL(COUNT(tblJournalEntryDocCBDT.intGLNumber), 0)
,ISNULL(SUM(tblJournalEntryDocCBDT.decLineTotExc), 0)
,0
,tblJournalEntryDocCBDTPrj.strStage
FROM tblJournalEntryDocCB
INNER JOIN tblJournalEntryDocCBDT ON tblJournalEntryDocCB.strJEDocID = tblJournalEntryDocCBDT.strJEDocID
INNER JOIN tblJournalEntryDocCBDTPrj ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCBDTPrj.strJEDocID
AND tblJournalEntryDocCBDT.intType = tblJournalEntryDocCBDTPrj.intType
AND tblJournalEntryDocCBDT.intGLNumber = tblJournalEntryDocCBDTPrj.intGLNumber
AND tblJournalEntryDocCBDT.intLineNo = tblJournalEntryDocCBDTPrj.intLineNo
WHERE (tblJournalEntryDocCB.dteJournalDate <= @SQAsAt)
AND (tblJournalEntryDocCBDTPrj.strProjNumber in  (@SQProjNum))
AND (tblJournalEntryDocCBDT.intType = @SQPayType)
GROUP BY tblJournalEntryDocCBDT.intGLNumber
,tblJournalEntryDocCBDT.strDesc
,tblJournalEntryDocCBDTPrj.strStage
UNION ALL
SELECT 5
,tblJournalEntryDocCBDT.intGLNumber AS strPartNumber
,tblJournalEntryDocCBDT.strDesc
,ISNULL(COUNT(tblJournalEntryDocCBDT.intGLNumber), 0)
,(ISNULL(SUM(tblJournalEntryDocCBDT.decLineTotExc), 0) * - 1)
,0
,tblJournalEntryDocCBDTPrj.strStage
FROM tblJournalEntryDocCB
INNER JOIN tblJournalEntryDocCBDT ON tblJournalEntryDocCB.strJEDocID = tblJournalEntryDocCBDT.strJEDocID
INNER JOIN tblJournalEntryDocCBDTPrj ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCBDTPrj.strJEDocID
AND tblJournalEntryDocCBDT.intType = tblJournalEntryDocCBDTPrj.intType
AND tblJournalEntryDocCBDT.intGLNumber = tblJournalEntryDocCBDTPrj.intGLNumber
AND tblJournalEntryDocCBDT.intLineNo = tblJournalEntryDocCBDTPrj.intLineNo
WHERE (tblJournalEntryDocCB.dteJournalDate <= @SQAsAt)
AND (tblJournalEntryDocCBDTPrj.strProjNumber in  (@SQProjNum))
AND (tblJournalEntryDocCBDT.intType = @SQRecType)
GROUP BY tblJournalEntryDocCBDT.intGLNumber
,tblJournalEntryDocCBDT.strDesc
,tblJournalEntryDocCBDTPrj.strStage
UNION ALL
SELECT 6
,CASE 
WHEN tblJournalEntryDocDT.intModule <> 0
THEN ISNULL(tblJournalEntryDocDT.intGLNumber, '')
ELSE tblJournalEntryDocDT.strCuVeGeID
END AS strPartNumber
,CASE 
WHEN tblJournalEntryDocDT.intModule <> 0
THEN ISNULL(tblJournalEntryDocDT.strDesc, '')
ELSE tblJournalEntryDocDT.strCuVeGeDesc
END AS strDesc
,ISNULL(COUNT(tblJournalEntryDocDT.strCuVeGeID), 0)
,ISNULL(SUM(tblJournalEntryDocDT.decDebits), 0)
,0
,tblJournalEntryDocDTPrj.strStage
FROM tblJournalEntryDoc
INNER JOIN tblJournalEntryDocDT ON tblJournalEntryDoc.strJEDocID = tblJournalEntryDocDT.strJEDocID
INNER JOIN tblJournalEntryDocDTPrj ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDocDTPrj.strJEDocID
AND CASE 
WHEN tblJournalEntryDocDT.intModule <> 0
THEN tblJournalEntryDocDT.intGLNumber
ELSE tblJournalEntryDocDT.strCuVeGeID
END = tblJournalEntryDocDTPrj.intGLNumber
AND tblJournalEntryDocDT.intLineNo = tblJournalEntryDocDTPrj.intLineNo
WHERE (tblJournalEntryDoc.dteJournalDate <= @SQAsAt)
AND (tblJournalEntryDocDTPrj.strProjNumber in  (@SQProjNum))
AND tblJournalEntryDocDT.decDebits > 0
GROUP BY tblJournalEntryDocDT.intModule
,tblJournalEntryDocDT.strCuVeGeID
,tblJournalEntryDocDT.strCuVeGeDesc
,tblJournalEntryDocDT.intGLNumber
,tblJournalEntryDocDT.strDesc
,tblJournalEntryDocDTPrj.strStage
UNION ALL
SELECT 7
,CASE 
WHEN tblJournalEntryDocDT.intModule <> 0
THEN ISNULL(tblJournalEntryDocDT.intGLNumber, '')
ELSE tblJournalEntryDocDT.strCuVeGeID
END AS strPartNumber
,CASE 
WHEN tblJournalEntryDocDT.intModule <> 0
THEN ISNULL(tblJournalEntryDocDT.strDesc, '')
ELSE tblJournalEntryDocDT.strCuVeGeDesc
END AS strDesc
,ISNULL(COUNT(tblJournalEntryDocDT.strCuVeGeID), 0)
,(ISNULL(SUM(tblJournalEntryDocDT.decCredits), 0) * - 1)
,0
,tblJournalEntryDocDTPrj.strStage
FROM tblJournalEntryDoc
INNER JOIN tblJournalEntryDocDT ON tblJournalEntryDoc.strJEDocID = tblJournalEntryDocDT.strJEDocID
INNER JOIN tblJournalEntryDocDTPrj ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDocDTPrj.strJEDocID
AND CASE 
WHEN tblJournalEntryDocDT.intModule <> 0
THEN tblJournalEntryDocDT.intGLNumber
ELSE tblJournalEntryDocDT.strCuVeGeID
END = tblJournalEntryDocDTPrj.intGLNumber
AND tblJournalEntryDocDT.intLineNo = tblJournalEntryDocDTPrj.intLineNo
WHERE (tblJournalEntryDoc.dteJournalDate <= @SQAsAt)
AND (tblJournalEntryDocDTPrj.strProjNumber in  (@SQProjNum))
AND tblJournalEntryDocDT.decCredits > 0
GROUP BY tblJournalEntryDocDT.intModule
,tblJournalEntryDocDT.strCuVeGeID
,tblJournalEntryDocDT.strCuVeGeDesc
,tblJournalEntryDocDT.intGLNumber
,tblJournalEntryDocDT.strDesc
,tblJournalEntryDocDTPrj.strStage
UNION ALL
SELECT 8
,tblInvAdjDocDT.strPartNumber
,tblInv.strDesc AS strDesc
,SUM(tblInvAdjDocDT.decQty)
,(ISNULL(SUM(tblInvAdjDocDT.decAmount), 0))
,0
,tblInvAdjDocDTPrj.strStage
FROM tblInvAdjDoc
INNER JOIN tblInvAdjDocDT ON tblInvAdjDoc.strAdjDocID = tblInvAdjDocDT.strAdjDocID
INNER JOIN tblInv ON tblInvAdjDocDT.strPartNumber = tblInv.strPartNumber
INNER JOIN tblInvAdjDocDTPrj ON tblInvAdjDocDT.strAdjDocID = tblInvAdjDocDTPrj.strAdjDocID
AND tblInvAdjDocDT.intLineNo = tblInvAdjDocDTPrj.intLineNo
WHERE (tblInvAdjDoc.dteJournalDate <= @SQAsAt)
AND (tblInvAdjDocDTPrj.strProjNumber in  (@SQProjNum))
AND tblInvAdjDocDT.decQty > 0
GROUP BY tblInvAdjDocDT.strPartNumber
, tblInv.strDesc
,tblInvAdjDocDTPrj.strStage

UNION ALL

SELECT 9
,tblInvIssReqDocDT.strPartNumber
,tblInv.strDesc  AS strDesc
,SUM(tblInvIssReqDocDT.decQty)
,(ISNULL(SUM(tblInvIssReqDocDT.decAmount), 0))
,0
,tblInvIssReqDocDTPrj.strStage
FROM tblInvIssReqDoc
INNER JOIN tblInvIssReqDocDT ON tblInvIssReqDoc.strInvIssReqDocID = tblInvIssReqDocDT.strInvIssReqDocID
INNER JOIN tblInv ON tblInvIssReqDocDT.strPartNumber = tblInv.strPartNumber
INNER JOIN tblInvIssReqDocDTPrj ON tblInvIssReqDocDT.strInvIssReqDocID = tblInvIssReqDocDTPrj.strInvIssReqDocID
AND tblInvIssReqDocDT.intLineNo = tblInvIssReqDocDTPrj.intLineNo
WHERE (tblInvIssReqDoc.dteJournalDate <= @SQAsAt)
AND (tblInvIssReqDocDTPrj.strProjNumber in  (@SQProjNum))
AND tblInvIssReqDocDT.decQty > 0
GROUP BY tblInvIssReqDocDT.strPartNumber
, tblInv.strDesc
,tblInvIssReqDocDTPrj.strStage

UNION ALL

SELECT 10
,tblInvoiceDocDT.strPartNumber
,tblInvoiceDocDT.strPartDesc
,ISNULL(SUM(tblInvoiceDocDT.decQty), 0)
,ISNULL(SUM(tblInvoiceDocDT.decCOGS), 0)
,0
,tblInvoiceDocDTPrj.strStage
FROM tblInvoiceDoc
INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
INNER JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
WHERE (tblInvoiceDoc.dteJournalDate <= @SQAsAt)
AND (tblInvoiceDocDTPrj.strProjNumber in  (@SQProjNum))
GROUP BY strPartNumber
,strPartDesc
,tblInvoiceDocDTPrj.strStage

UNION ALL

SELECT 11
,tblInvRepackDocDT.strPartNumber
, tblInv.strDesc AS strDesc
,SUM(tblInvRepackDocDT.decQty)
,(ISNULL(SUM(tblInvRepackDocDT.decAmount), 0))
,0
,tblInvRepackDocDTPrj.strStage
FROM tblInvRepackDoc
INNER JOIN tblInvRepackDocDT ON tblInvRepackDoc.strRepackDocID = tblInvRepackDocDT.strRepackDocID
INNER JOIN tblInv ON tblInvRepackDocDT.strPartNumber = tblInv.strPartNumber
INNER JOIN tblInvRepackDocDTPrj ON tblInvRepackDocDT.strRepackDocID = tblInvRepackDocDTPrj.strRepackDocID
AND tblInvRepackDocDT.intLineNo = tblInvRepackDocDTPrj.intLineNo
WHERE (tblInvRepackDoc.dteJournalDate <= @SQAsAt)
AND (tblInvRepackDocDTPrj.strProjNumber in  (@SQProjNum))
AND tblInvRepackDocDT.bitOriginalItem = 0
GROUP BY tblInvRepackDocDT.strPartNumber
,tblInv.strDesc
,tblInvRepackDocDTPrj.strStage

UNION ALL 

SELECT 12, 
tblManJobClose.strPartNumber, 
tblInv.strDesc as strDesc, 
SUM(tblManJobClose.decManQtyClosed), 
(ISNULL(SUM(tblManJobClose.decManAmount),0)), 0, tblManJobClosePrj.strStage FROM tblManJobClose 
INNER JOIN tblInv ON tblManJobClose.strPartNumber = tblInv.strPartNumber 
INNER JOIN tblManJobClosePrj ON tblManJobClose.strJBDocID = tblManJobClosePrj.strJBDocID 
AND tblManJobClose.lngID = tblManJobClosePrj.lngJBID 
WHERE (tblManJobClose.dteJournalDate <= @SQAsAt) 
AND (tblManJobClosePrj.strProjNumber = @SQProjNum) 
GROUP BY tblManJobClose.strPartNumber, tblInv.strDesc, tblManJobClosePrj.strStage 

ORDER BY strPartNumber
,strStage
END
GO

/****** Object:  StoredProcedure [dbo].[LoadRptPrject]    Script Date: 16-02-2022 10:51:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetRptPrjFinInfoReportData]
(
@SQProjNum nvarchar(max),
@IsAll bit
)
AS
BEGIN
SELECT tblProjectsResources.lngID
,tblProjectsResources.strProjNumber
,tblProjects.strProjName
,tblProjectsResources.strAssetCode
,tblAssets.strAssetDesc
,tblProjectsResources.strReference
,tblProjectsResources.dteAssignedDate
,tblProjectsResources.dteLeftDate
FROM tblProjectsResources
INNER JOIN tblAssets ON tblProjectsResources.strAssetCode = tblAssets.strAssetCode
INNER JOIN tblProjects ON tblProjectsResources.strProjNumber = tblProjects.strProjNumber
WHERE 1 = 1
AND (
tblProjects.strProjNumber in  (SELECT * FROM fnSplitStringAsTable(@SQProjNum,','))
)
ORDER BY strProjNumber,lngID
END
GO

/****** Object:  StoredProcedure [dbo].[LoadRptPrject]    Script Date: 28-01-2022 12:10:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetRptPrjSalesMatrixReportData]
(
@SQAsAt varchar(19),
@SQProjNum nvarchar(max)
)
AS
BEGIN
SELECT Z.SeqNo
,Z.strPartNumber
,Z.strPartDesc
,ISNULL(SUM(Z.decQty), 0)
,ISNULL(SUM(Z.decLineTotExc), 0)
FROM (
SELECT 1 AS SeqNo
,tblOrderDocDT.strPartNumber
,tblOrderDocDT.strPartDesc
,ISNULL(SUM(tblOrderDocDT.decQty), 0) AS decQty
,ISNULL(SUM(tblOrderDocDT.decLineTotExc), 0) AS decLineTotExc
FROM tblOrderDoc
INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
INNER JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
WHERE (tblOrderDoc.dteJournalDate <= @SQAsAt)
	AND (tblOrderDocDTPrj.strProjNumber = @SQProjNum)
	AND (tblOrderDoc.intDocType = 2)
GROUP BY tblOrderDocDT.strPartNumber
,strPartDesc
UNION ALL
SELECT 1 AS SeqNo
,tblOrderDocQDT.strPartNumber
,tblOrderDocQDT.strPartDesc
,ISNULL(SUM(tblOrderDocQDT.decQty), 0) AS decQty
,ISNULL(SUM(tblOrderDocQDT.decLineTotExc), 0) AS decLineTotExc
FROM tblOrderDocQ
INNER JOIN tblOrderDocQDT ON tblOrderDocQ.strOrdDocID = tblOrderDocQDT.strOrdDocID
INNER JOIN tblOrderDocQDTPrj ON tblOrderDocQDT.strOrdDocID = tblOrderDocQDTPrj.strOrdDocID
AND tblOrderDocQDT.intLineNo = tblOrderDocQDTPrj.intLineNo
WHERE (tblOrderDocQ.dteJournalDate <= @SQAsAt)
AND (tblOrderDocQDTPrj.strProjNumber = @SQProjNum)
GROUP BY strPartNumber
,strPartDesc
) Z
GROUP BY Z.SeqNo
,Z.strPartNumber
,Z.strPartDesc
UNION ALL
SELECT 2 AS SeqNo
,tblOrderDocDT.strPartNumber
,tblOrderDocDT.strPartDesc
,ISNULL(SUM(tblOrderDocDT.decQty), 0) AS decQty
,ISNULL(SUM(tblOrderDocDT.decLineTotExc), 0) AS decLineTotExc
FROM tblOrderDoc
INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
INNER JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
WHERE (tblOrderDoc.dteJournalDate <= @SQAsAt)
AND (tblOrderDocDTPrj.strProjNumber = @SQProjNum)
AND (tblOrderDoc.intDocType = 1)
GROUP BY strPartNumber
,strPartDesc
UNION ALL
SELECT 3 AS SeqNo
,tblInvoiceDocDT.strPartNumber
,tblInvoiceDocDT.strPartDesc
,ISNULL(SUM(tblInvoiceDocDT.decQty), 0) AS decQty
,ISNULL(SUM(tblInvoiceDocDT.decLineTotExc), 0) AS decLineTotExc
FROM tblInvoiceDoc
INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
INNER JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
WHERE (tblInvoiceDoc.dteJournalDate <= @SQAsAt)
AND (tblInvoiceDocDTPrj.strProjNumber = @SQProjNum)
GROUP BY strPartNumber
,strPartDesc
ORDER BY strPartNumber
END
GO

/****** Object:  StoredProcedure [dbo].[LoadCustomers]    Script Date: 21-01-2022 10:47:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetRptPrjTendersReportData]
(
@IsAll bit,
@SQPrjNumber nvarchar(max)
)
AS
BEGIN
SELECT tblOrderDocDTPrj.strProjNumber as Project
,(
SELECT strProjName
FROM tblProjects
WHERE strProjNumber = tblOrderDocDTPrj.strProjNumber
) as ProjectName
,tblOrderDoc.strOrdDocID as Document
,tblOrderDoc.dteJournalDate as DocDate
,tblOrderDoc.strCustName as CustName
,(
SELECT strCustDesc
FROM tblCustomers
WHERE strCustName = tblOrderDoc.strCustName
) as CustNo
,tblOrderDoc.strReference as Reference
,tblOrderDocDT.strPartNumber as PartNumber
,tblOrderDocDT.strPartDesc as PartDesc
,tblOrderDocDT.decQty as Quantity
,tblOrderDocDT.strUnit as Unit
,tblOrderDocDT.decLineTotExc as LineTotExc
FROM tblOrderDoc
INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
INNER JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
WHERE (tblOrderDoc.intDocType = 2)
AND (
tblOrderDocDTPrj.strProjNumber in  (SELECT * FROM fnSplitStringAsTable(@SQPrjNumber,','))
)
UNION ALL
SELECT tblOrderDocQDTPrj.strProjNumber as Project
,(
SELECT strProjName
FROM tblProjects
WHERE strProjNumber = tblOrderDocQDTPrj.strProjNumber
) as ProjectName
,tblOrderDocQ.strOrdDocID as Document
,tblOrderDocQ.dteJournalDate as DocDate
,ISNULL(tblOrderDocQ.strCustName, '') as CustName
,ISNULL((
SELECT strCustDesc
FROM tblCustomers
WHERE strCustName = tblOrderDocQ.strCustName
), '') as CustNo
,tblOrderDocQ.strReference as Reference
,tblOrderDocQDT.strPartNumber as PartNumber
,tblOrderDocQDT.strPartDesc as PartDesc
,tblOrderDocQDT.decQty as Quantity
,tblOrderDocQDT.strUnit as Unit
,tblOrderDocQDT.decLineTotExc as LineTotExc
FROM tblOrderDocQ
INNER JOIN tblOrderDocQDT ON tblOrderDocQ.strOrdDocID = tblOrderDocQDT.strOrdDocID
INNER JOIN tblOrderDocQDTPrj ON tblOrderDocQDT.strOrdDocID = tblOrderDocQDTPrj.strOrdDocID
AND tblOrderDocQDT.intLineNo = tblOrderDocQDTPrj.intLineNo
AND (
tblOrderDocQDTPrj.strProjNumber in  (SELECT * FROM fnSplitStringAsTable(@SQPrjNumber,','))
)
ORDER BY Project
,Document
END
GO

/****** Object:  StoredProcedure [dbo].[GetRptSalesPersonsTargetsReportData]    Script Date: 08-12-2021 12:17:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetRptSalesPersonsTargetsReportData] @StartDate VARCHAR(19)
	,@FinishDate VARCHAR(19)
AS
BEGIN
	SELECT tblSalesPersons.strSalesName AS SalesName
		,tblSalesPersonsT.decPeriod1  AS Period1
		,tblSalesPersonsT.decPeriod2  AS Period2
		,tblSalesPersonsT.decPeriod3  AS Period3
		,tblSalesPersonsT.decPeriod4  AS Period4
		,tblSalesPersonsT.decPeriod5  AS Period5
		,tblSalesPersonsT.decPeriod6  AS Period6
		,tblSalesPersonsT.decPeriod7  AS Period7
		,tblSalesPersonsT.decPeriod8  AS Period8
		,tblSalesPersonsT.decPeriod9  AS Period9
		,tblSalesPersonsT.decPeriod10 AS Period10
		,tblSalesPersonsT.decPeriod11 AS Period11
		,tblSalesPersonsT.decPeriod12 AS Period12
		,(
			SELECT ISNULL(SUM(tblInvoiceDoc.decSubTotal), 0)
			FROM tblInvoiceDoc
			WHERE (tblInvoiceDoc.bitHistoryTrans) = 0
				AND (strSalesName = tblSalesPersons.strSalesName)
				AND (
					tblInvoiceDoc.dteJournalDate BETWEEN @StartDate
						AND @FinishDate
					)
			) AS ExclusiveAmounts
		,(
			SELECT ISNULL(SUM(tblInvoiceDoc.decTotal), 0)
			FROM tblInvoiceDoc
			WHERE (tblInvoiceDoc.bitHistoryTrans) = 0
				AND (strSalesName = tblSalesPersons.strSalesName)
				AND (
					tblInvoiceDoc.dteJournalDate BETWEEN @StartDate
						AND @FinishDate
					)
			) AS InclusiveAmounts
	FROM tblSalesPersons
	INNER JOIN tblSalesPersonsT ON tblSalesPersons.strSalesName = tblSalesPersonsT.strSalesName
	WHERE (tblSalesPersons.bitInactive) = 0
		AND tblSalesPersons.bitIsWorkshopTechnician = 0
	ORDER BY tblSalesPersons.strSalesName
END
GO

/****** Object:  StoredProcedure [dbo].[GetRptVendContactsReportDBReportData]    Script Date: 22-12-2021 13:52:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetRptVendContactsReportDBReportData] (
	@IsJobtitleEnable BIT
	,@SQintJobTitle NVARCHAR(max)
	,@VendorList NVARCHAR(max)
	)
AS
BEGIN
	IF (@IsJobtitleEnable = 1)
	BEGIN
		SELECT cc.strName AS [Name]
			,c.strVendName AS VendName
			,c.strVendDesc AS VendDesc
			,jt.strJobTitle AS JobTitle
			,cc.strEmail AS Email
			,cc.strTel AS Tel
			,cc.strFax AS Fax
			,cc.strCell AS Cell
			,cc.strStreet1 AS Street1
			,cc.strStreet2 AS Street2
			,cc.strCity AS City
			,cc.strProvince AS Province
			,cc.strPostal AS Postal
			,cc.imgPicture AS Picture
		FROM tblVendorContacts cc
		INNER JOIN tblVendors c ON c.strVendName = cc.strVendName
		INNER JOIN tblJobTitles jt ON cc.intJobTitle = jt.lngID
		WHERE cc.strVendName IN (SELECT *
					FROM fnSplitStringAsTable(@VendorList, ',')
					) 
			AND cc.intJobTitle = @SQintJobTitle
	END
	ELSE
	BEGIN
		SELECT cc.strName AS [Name]
			,c.strVendName AS VendName
			,c.strVendDesc AS VendDesc
			,jt.strJobTitle AS JobTitle
			,cc.strEmail AS Email
			,cc.strTel AS Tel
			,cc.strFax AS Fax
			,cc.strCell AS Cell
			,cc.strStreet1 AS Street1
			,cc.strStreet2 AS Street2
			,cc.strCity AS City
			,cc.strProvince AS Province
			,cc.strPostal AS Postal
			,cc.imgPicture AS Picture
		FROM tblVendorContacts cc
		INNER JOIN tblVendors c ON c.strVendName = cc.strVendName
		INNER JOIN tblJobTitles jt ON cc.intJobTitle = jt.lngID
		WHERE cc.strVendName IN (SELECT *
					FROM fnSplitStringAsTable(@VendorList, ',')
					) 
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetRptVendorAgedRReportData]    Script Date: 29-03-2022 10:30:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetRptVendorAgedRReportData]  
(  
@IsCheckedDisplayForeignAmounts bit,  
@IsSummaryChecked bit,   
@IsFilterByVendorChecked bit,  
@IsCategoryTypeChecked bit,  
@IsDeartmentTypeChecked bit,  
@IsCheckedGroupByTerms bit,  
@IsAll bit,  
@BPToolMode bit,  
@SQUserName varchar(100),  
@SQstrTerm varchar(100),  
@ItemList nvarchar(max),  
@IsVendorNumberChecked bit,  
@SQAsAt varchar(19),  
@SQPaidIn varchar(19),  
@SQintTransType varchar(20)  
)  
AS  
DECLARE @Query nvarchar(max) = ''  
BEGIN  
IF(@IsCheckedDisplayForeignAmounts = 0)  
BEGIN  
	IF(@IsSummaryChecked = 1)  
	BEGIN  
		IF(@IsFilterByVendorChecked = 1)  
		BEGIN  
			SET @Query = 'SELECT LTRIM(RTRIM(MASTERTABLE.strVendName)), v.strVendDesc, '  
			IF(@IsCheckedGroupByTerms = 1)  
			BEGIN  
				SET @Query += 'v.strTerm,'  
			END  
			ELSE  
			BEGIN  
			SET @Query += ''''','  
			END  
			SET @Query += ' MASTERTABLE.dteDueDate, SUM(vtdt.decAmount), MASTERTABLE.dteJournalDate, '''' FROM tblVendTrans AS MASTERTABLE INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName)) INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID WHERE'  
			IF(@IsAll = 0)  
			BEGIN  
				SET @Query += ' (LTRIM(RTRIM(MASTERTABLE.strVendName)) IN (SELECT * FROM fnSplitStringAsTable('''+@ItemList+''','',''))) AND'  
			END  
			ELSE  
			BEGIN  
				IF(@BPToolMode = 0)  
				BEGIN  
					SET @Query += ' v.strVendCategory IN (SELECT vc.strVendCategory FROM tblVendorCat vc LEFT JOIN tblVendorCatSec vcs ON vc.strVendCategory = vcs.strVendCategory WHERE ISNULL((SELECT COUNT(vcs1.strVendCategory) FROM tblVendorCatSec vcs1 WHERE vcs1.strVendCategory = vc.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(vcs2.strVendCategory) FROM tblVendorCatSec vcs2 WHERE vcs2.strVendCategory = vc.strVendCategory), 0) > 0 AND vcs.strUserName = '''+@SQUserName+''')) AND '  
				END  
			END  
			IF(@SQstrTerm <> 'All')  
			BEGIN  
				SET @Query += ' v.strTerm = '''+@SQstrTerm+''' AND'  
			END  
			SET @Query += ' vtdt.bitReversed = 0 AND vtdt.dteJournalDate <= '''+@SQAsAt+''' AND vtdt.lngVendTrID NOT IN (SELECT vtdt1.lngVendTrID FROM tblVendTrans vt1 INNER JOIN tblVendTransDT vtdt1 ON vt1.lngVendTrID = vtdt1.lngVendTrID WHERE LTRIM(RTRIM(vt1.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName)) AND vtdt1.bitReversed = 0 AND vtdt1.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY vtdt1.lngVendTrID HAVING SUM(vtdt1.decAmount) = 0 AND SUM(vtdt1.decAmountF) = 0) GROUP BY LTRIM(RTRIM(MASTERTABLE.strVendName)), v.strVendDesc, v.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate '  
			IF(@IsVendorNumberChecked = 1)  
			BEGIN  
				SET @Query += ' ORDER BY '  
				IF(@IsCheckedGroupByTerms = 1)  
				BEGIN  
					SET @Query += 'v.strTerm,'  
				END  
				SET @Query += ' LTRIM(RTRIM(MASTERTABLE.strVendName))'  
			END  
			ELSE  
			BEGIN  
				SET @Query += ' ORDER BY '  
				IF(@IsCheckedGroupByTerms = 1)  
				BEGIN  
					SET @Query += 'v.strTerm,'  
				END  
				SET @Query += ' v.strVendDesc'  
			END  
		END  
		ELSE IF(@IsCategoryTypeChecked = 1)  
		BEGIN  
			SET @Query = 'SELECT LTRIM(RTRIM(MASTERTABLE.strVendName)), v.strVendDesc, '  
			IF(@IsCheckedGroupByTerms = 1)  
			BEGIN  
				SET @Query += 'v.strTerm,'  
			END  
			ELSE  
			BEGIN  
				SET @Query += ''''','  
			END  
			SET @Query += 'MASTERTABLE.dteDueDate, SUM(vtdt.decAmount), MASTERTABLE.dteJournalDate, ISNULL(v.strVendCategory,'''') FROM 
			tblVendTrans AS MASTERTABLE INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName)) INNER JOIN tblVendTransDT vtdt
			ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID WHERE '
			IF(@IsAll = 0)  
			BEGIN  
				SET @Query += ' ( v.strVendCategory IN (SELECT * FROM fnSplitStringAsTable('''+@ItemList+''','',''))) AND'  
			END  
			ELSE  
			BEGIN  
				IF(@BPToolMode = 0)  
				BEGIN  
					SET @Query += ' v.strVendCategory IN (SELECT vc.strVendCategory FROM tblVendorCat vc LEFT JOIN tblVendorCatSec vcs ON vc.strVendCategory = vcs.strVendCategory WHERE ISNULL((SELECT COUNT(vcs1.strVendCategory) FROM tblVendorCatSec vcs1 WHERE vcs1.strVendCategory = vc.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(vcs2.strVendCategory) FROM tblVendorCatSec vcs2 WHERE vcs2.strVendCategory = vc.strVendCategory), 0) > 0 AND vcs.strUserName = '''+@SQUserName+''')) AND '  
				END  
			END  
			IF(@SQstrTerm <> 'All')  
			BEGIN  
				SET @Query += ' v.strTerm = '''+@SQstrTerm+''' AND'  
			END  
			SET @Query += ' vtdt.bitReversed = 0 AND vtdt.dteJournalDate <= '''+@SQAsAt+''' AND vtdt.lngVendTrID NOT IN (SELECT vtdt1.lngVendTrID FROM tblVendTrans vt1 INNER JOIN tblVendTransDT vtdt1 ON vt1.lngVendTrID = vtdt1.lngVendTrID WHERE LTRIM(RTRIM(vt1.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName)) AND vtdt1.bitReversed = 0 AND vtdt1.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY vtdt1.lngVendTrID HAVING SUM(vtdt1.decAmount) = 0 AND SUM(vtdt1.decAmountF) = 0) GROUP BY LTRIM(RTRIM(MASTERTABLE.strVendName)), v.strVendDesc, v.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, v.strVendCategory '  
			IF(@IsVendorNumberChecked = 1)  
			BEGIN  
				SET @Query += ' ORDER BY '  
				IF(@IsCheckedGroupByTerms = 1)  
				BEGIN  
					SET @Query += 'v.strTerm,'  
				END  
				SET @Query += ' v.strVendCategory, LTRIM(RTRIM(MASTERTABLE.strVendName))'  
			END  
			ELSE  
			BEGIN  
				SET @Query += ' ORDER BY '  
				IF(@IsCheckedGroupByTerms = 1)  
				BEGIN  
					SET @Query += 'v.strTerm,'  
				END  
				SET @Query += ' v.strVendCategory, v.strVendDesc'  
			END  
	END  
		ELSE IF(@IsDeartmentTypeChecked = 1)  
		BEGIN  
			SET @Query = 'SELECT LTRIM(RTRIM(MASTERTABLE.strVendName)), v.strVendDesc, '  
			IF(@IsCheckedGroupByTerms = 1)  
			BEGIN  
				SET @Query += 'v.strTerm,'  
			END  
			ELSE  
			BEGIN  
				SET @Query += ''''','  
			END  
			SET @Query += ' MASTERTABLE.dteDueDate, SUM(vtdt.decAmount), MASTERTABLE.dteJournalDate, 
			ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = v.intDept),
			''<<No Department>>'') FROM tblVendTrans AS MASTERTABLE INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName)) 
			INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID WHERE '  
			IF(@IsAll = 0)  
			BEGIN  
				SET @Query += ' ( ISNULL(v.intDept, 0) IN (SELECT * FROM fnSplitStringAsTable('''+@ItemList+''','',''))) AND'  
			END  
			IF(@SQstrTerm <> 'All')  
			BEGIN  
				SET @Query += ' v.strTerm = '''+@SQstrTerm+''' AND'  
			END  
			SET @Query += ' vtdt.bitReversed = 0 AND vtdt.dteJournalDate <= '''+@SQAsAt+''' AND vtdt.lngVendTrID NOT IN (SELECT 
			vtdt1.lngVendTrID FROM tblVendTrans vt1 INNER JOIN tblVendTransDT vtdt1 ON vt1.lngVendTrID = vtdt1.lngVendTrID WHERE 
			LTRIM(RTRIM(vt1.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName)) AND vtdt1.bitReversed = 0 AND 
			vtdt1.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY vtdt1.lngVendTrID HAVING SUM(vtdt1.decAmount) = 0 AND 
			SUM(vtdt1.decAmountF) = 0) GROUP BY LTRIM(RTRIM(MASTERTABLE.strVendName)), v.strVendDesc, v.strTerm, MASTERTABLE.dteDueDate, 
			MASTERTABLE.dteJournalDate, v.intDept '  
			IF(@IsVendorNumberChecked = 1)  
			BEGIN  
				SET @Query += ' ORDER BY '  
				IF(@IsCheckedGroupByTerms = 1)  
				BEGIN  
					SET @Query += 'v.strTerm,'  
				END  
				SET @Query += ' ISNULL(v.intDept, 0), LTRIM(RTRIM(MASTERTABLE.strVendName))'  
			END  
			ELSE  
			BEGIN  
				SET @Query += ' ORDER BY '  
				IF(@IsCheckedGroupByTerms = 1)  
				BEGIN  
					SET @Query += 'v.strTerm,'  
				END  
				SET @Query += ' ISNULL(v.intDept, 0), v.strVendDesc'  
			END  
		END  
	END  
	ELSE  
	BEGIN  
		IF(@IsFilterByVendorChecked = 1)  
		BEGIN  
SET @Query = 'SELECT v.strVendName, v.strVendDesc, '  
  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
  
END  
ELSE  
BEGIN  
SET @Query += ''''','  
  
END  
  
SET @Query += '  CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(vtdt.lngVendPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvPDocID, '''') ELSE ISNULL(vp.strSource,'''') END END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType AS TransType, vtdt.intTransType, vtdt.lngVendTrID, vtdt.decAmount, MASTERTABLE.dteJournalDate, vtdt.dteJournalDate, '''', CASE WHEN ISNULL(vtdt.lngVendPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(vp.strComment,'''') END AS strInvDepNumber FROM tblVendTrans AS MASTERTABLE INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName)) LEFT JOIN tblVendPay vp ON vtdt.lngVendPayID = vp.lngVendPayID WHERE'  
  
IF(@IsAll = 0)  
BEGIN  
  
SET @Query += ' ( LTRIM(RTRIM(MASTERTABLE.strVendName)) IN (SELECT * FROM fnSplitStringAsTable('''+@ItemList+''','',''))) AND'  
  
END  
ELSE  
BEGIN  
IF(@BPToolMode = 0)  
BEGIN  
SET @Query += ' v.strVendCategory IN (SELECT vc.strVendCategory FROM tblVendorCat vc LEFT JOIN tblVendorCatSec vcs ON vc.strVendCategory = vcs.strVendCategory WHERE ISNULL((SELECT COUNT(vcs1.strVendCategory) FROM tblVendorCatSec vcs1 WHERE vcs1.strVendCategory = vc.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(vcs2.strVendCategory) FROM tblVendorCatSec vcs2 WHERE vcs2.strVendCategory = vc.strVendCategory), 0) > 0 AND vcs.strUserName = '''+@SQUserName+''')) AND '  
END  
END  
SET @Query += ' (vtdt.bitReversed = 0) AND (vtdt.dteJournalDate <= '''+@SQAsAt+''') AND (vtdt.lngVendTrID NOT IN (SELECT vtdt1.lngVendTrID FROM tblVendTrans vt1 INNER JOIN tblVendTransDT vtdt1 ON vt1.lngVendTrID = vtdt1.lngVendTrID WHERE LTRIM(RTRIM(vt1.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName)) AND vtdt1.bitReversed = 0 AND vtdt1.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY vtdt1.lngVendTrID HAVING SUM(vtdt1.decAmount) = 0 AND SUM(vtdt1.decAmountF) = 0))'  
  
IF(@SQstrTerm <> 'All')  
BEGIN  
SET @Query += ' AND v.strTerm = '''+@SQstrTerm+''''  
  
END  
IF(@IsVendorNumberChecked = 1)  
BEGIN  
SET @Query += ' ORDER BY '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
SET @Query += ' v.strVendName, vtdt.lngVendTrID, vtdt.intTransType'  
END  
ELSE  
BEGIN  
SET @Query += ' ORDER BY '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
SET @Query += ' v.strVendDesc, vtdt.lngVendTrID, vtdt.intTransType'  
END  
END  
		ELSE IF(@IsCategoryTypeChecked = 1)  
		BEGIN  
SET @Query = 'SELECT v.strVendName, v.strVendDesc, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
ELSE  
BEGIN  
SET @Query += ''''','  
END  
SET @Query += '  CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(vtdt.lngVendPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvPDocID, '''') ELSE ISNULL(vp.strSource,'''') END END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType AS TransType, vtdt.intTransType, vtdt.lngVendTrID, vtdt.decAmount, MASTERTABLE.dteJournalDate, vtdt.dteJournalDate, ISNULL(v.strVendCategory, ''''), CASE WHEN ISNULL(vtdt.lngVendPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(vp.strComment,'''') END AS strInvDepNumber FROM tblVendTrans AS MASTERTABLE INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName)) LEFT JOIN tblVendPay vp ON vtdt.lngVendPayID = vp.lngVendPayID WHERE'  
IF(@IsAll = 0)  
BEGIN  
SET @Query += ' ( v.strVendCategory IN (SELECT * FROM fnSplitStringAsTable('''+@ItemList+''','',''))) AND'  
END  
ELSE  
BEGIN  
IF(@BPToolMode = 0)  
BEGIN  
SET @Query += ' v.strVendCategory IN (SELECT vc.strVendCategory FROM tblVendorCat vc LEFT JOIN tblVendorCatSec vcs ON vc.strVendCategory = vcs.strVendCategory WHERE ISNULL((SELECT COUNT(vcs1.strVendCategory) FROM tblVendorCatSec vcs1 WHERE vcs1.strVendCategory = vc.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(vcs2.strVendCategory) FROM tblVendorCatSec vcs2 WHERE vcs2.strVendCategory = vc.strVendCategory), 0) > 0 AND vcs.strUserName = '''+@SQUserName+''')) AND '  
END  
END  
SET @Query += ' (vtdt.bitReversed = 0) AND (vtdt.dteJournalDate <= '''+@SQAsAt+''') AND (vtdt.lngVendTrID NOT IN (SELECT vtdt.lngVendTrID FROM tblVendTrans INNER JOIN tblVendTransDT vtdt ON tblVendTrans.lngVendTrID = vtdt.lngVendTrID WHERE tblVendTrans.strVendName = MASTERTABLE.strVendName AND vtdt.bitReversed = 0 AND vtdt.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY vtdt.lngVendTrID HAVING SUM(vtdt.decAmount) = 0 AND SUM(vtdt.decAmountF) = 0))'  
  
IF(@SQstrTerm <> 'All')  
BEGIN  
SET @Query += ' AND v.strTerm = '''+@SQstrTerm+''''  
  
END  
IF(@IsVendorNumberChecked = 1)  
BEGIN  
SET @Query += ' ORDER BY '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
SET @Query += ' v.strVendCategory, v.strVendName, vtdt.lngVendTrID, vtdt.intTransType'  
END  
ELSE  
BEGIN  
SET @Query += ' ORDER BY '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
SET @Query += ' v.strVendCategory, v.strVendDesc, vtdt.lngVendTrID, vtdt.intTransType'  
END  
END  
		ELSE IF(@IsDeartmentTypeChecked = 1)  
BEGIN  
SET @Query = 'SELECT v.strVendName, v.strVendDesc, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
ELSE  
BEGIN  
SET @Query += ''''','  
END  
SET @Query += '  CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(vtdt.lngVendPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvPDocID, '''') ELSE ISNULL(vp.strSource,'''') END END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType AS TransType, vtdt.intTransType, vtdt.lngVendTrID, vtdt.decAmount, MASTERTABLE.dteJournalDate, vtdt.dteJournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = v.intDept),''<<No Department>>''), CASE WHEN ISNULL(vtdt.lngVendPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(vp.strComment,'''') END AS strInvDepNumber FROM tblVendTrans AS MASTERTABLE INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName)) LEFT JOIN tblVendPay vp ON vtdt.lngVendPayID = vp.lngVendPayID WHERE'  
IF(@IsAll = 0)  
BEGIN  
  
SET @Query += ' ISNULL(v.intDept, 0) IN (SELECT * FROM fnSplitStringAsTable('''+@ItemList+''','','')) AND'  
END  
SET @Query += ' (vtdt.bitReversed = 0) AND (vtdt.dteJournalDate <= '''+@SQAsAt+''') AND (vtdt.lngVendTrID NOT IN (SELECT vtdt.lngVendTrID FROM tblVendTrans INNER JOIN tblVendTransDT vtdt ON tblVendTrans.lngVendTrID = vtdt.lngVendTrID WHERE tblVendTrans.strVendName = MASTERTABLE.strVendName AND vtdt.bitReversed = 0 AND vtdt.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY vtdt.lngVendTrID HAVING SUM(vtdt.decAmount) = 0 AND SUM(vtdt.decAmountF) = 0))'  
  
IF(@SQstrTerm <> 'All')  
BEGIN  
SET @Query += ' AND v.strTerm = '''+@SQstrTerm+''''  
  
END  
IF(@IsVendorNumberChecked = 1)  
BEGIN  
SET @Query += ' ORDER BY '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
SET @Query += ' ISNULL(v.intDept, 0), v.strVendName, vtdt.lngVendTrID, vtdt.intTransType'  
END  
ELSE  
BEGIN  
SET @Query += ' ORDER BY '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
SET @Query += ' ISNULL(v.intDept, 0), v.strVendDesc, vtdt.lngVendTrID, vtdt.intTransType'  
END  
END  
		END  
	END  
ELSE  
BEGIN  
  
IF(@IsSummaryChecked = 1)  
BEGIN  
  
IF(@IsFilterByVendorChecked = 1)  
BEGIN  
SET @Query = 'SELECT LTRIM(RTRIM(MASTERTABLE.strVendName)), v.strVendDesc, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
ELSE  
BEGIN  
SET @Query += ''''','  
END  
SET @Query += ' MASTERTABLE.dteDueDate, CASE vtdt.bitIsForeign WHEN 0 THEN SUM(vtdt.decAmount) ELSE SUM(vtdt.decAmountF) END, v.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = v.strCurrency), MASTERTABLE.dteJournalDate, '''' FROM tblVendTrans AS MASTERTABLE INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName)) INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID WHERE'  
IF(@IsAll = 0)  
BEGIN  
  
SET @Query += ' LTRIM(RTRIM(MASTERTABLE.strVendName)) IN (SELECT * FROM fnSplitStringAsTable('''+@ItemList+''','','')) AND'  
END  
ELSE  
BEGIN  
IF(@BPToolMode = 0)  
BEGIN  
SET @Query += ' v.strVendCategory IN (SELECT vc.strVendCategory FROM tblVendorCat vc LEFT JOIN tblVendorCatSec vcs ON vc.strVendCategory = vcs.strVendCategory WHERE ISNULL((SELECT COUNT(vcs1.strVendCategory) FROM tblVendorCatSec vcs1 WHERE vcs1.strVendCategory = vc.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(vcs2.strVendCategory) FROM tblVendorCatSec vcs2 WHERE vcs2.strVendCategory = vc.strVendCategory), 0) > 0 AND vcs.strUserName = '''+@SQUserName+''')) AND '  
END  
END  
  
IF(@SQstrTerm <> 'All')  
BEGIN  
SET @Query += ' v.strTerm = '''+@SQstrTerm+''' AND'  
  
END  
SET @Query += ' (vtdt.bitReversed = 0) AND (vtdt.dteJournalDate <= '''+@SQAsAt+''') AND (vtdt.lngVendTrID NOT IN (SELECT vtdt1.lngVendTrID FROM tblVendTrans vt1 INNER JOIN tblVendTransDT vtdt1 ON vt1.lngVendTrID = vtdt1.lngVendTrID WHERE LTRIM(RTRIM(vt1.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName)) AND vtdt1.bitReversed = 0 AND vtdt1.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY vtdt1.lngVendTrID HAVING SUM(vtdt1.decAmount) = 0 AND SUM(vtdt1.decAmountF) = 0)) GROUP BY LTRIM(RTRIM(MASTERTABLE.strVendName)), v.strVendDesc, v.strTerm, MASTERTABLE.dteDueDate, v.strCurrency, vtdt.bitIsForeign, MASTERTABLE.dteJournalDate'  
IF(@IsVendorNumberChecked = 1)  
BEGIN  
SET @Query += ' ORDER BY v.strCurrency, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
SET @Query += ' LTRIM(RTRIM(MASTERTABLE.strVendName))'  
END  
ELSE  
BEGIN  
SET @Query += ' ORDER BY v.strCurrency, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
SET @Query += ' v.strVendDesc'  
END  
END  
ELSE IF(@IsCategoryTypeChecked = 1)  
BEGIN  
SET @Query = 'SELECT LTRIM(RTRIM(MASTERTABLE.strVendName)), v.strVendDesc, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
ELSE  
BEGIN  
SET @Query += ''''','  
END  
SET @Query += ' MASTERTABLE.dteDueDate, CASE vtdt.bitIsForeign WHEN 0 THEN SUM(vtdt.decAmount) ELSE SUM(vtdt.decAmountF) END, v.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = v.strCurrency), MASTERTABLE.dteJournalDate, ISNULL(v.strVendCategory, '''') FROM tblVendTrans AS MASTERTABLE INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName)) INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID WHERE'  
IF(@IsAll = 0)  
BEGIN  
  
SET @Query += ' ( v.strVendCategory IN (SELECT * FROM fnSplitStringAsTable('''+@ItemList+''','',''))) AND'  
END  
ELSE  
BEGIN  
IF(@BPToolMode = 0)  
BEGIN  
SET @Query += ' v.strVendCategory IN (SELECT vc.strVendCategory FROM tblVendorCat vc LEFT JOIN tblVendorCatSec vcs ON vc.strVendCategory = vcs.strVendCategory WHERE ISNULL((SELECT COUNT(vcs1.strVendCategory) FROM tblVendorCatSec vcs1 WHERE vcs1.strVendCategory = vc.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(vcs2.strVendCategory) FROM tblVendorCatSec vcs2 WHERE vcs2.strVendCategory = vc.strVendCategory), 0) > 0 AND vcs.strUserName = '''+@SQUserName+''')) AND '  
END  
END  
  
IF(@SQstrTerm <> 'All')  
BEGIN  
SET @Query += ' v.strTerm = '''+@SQstrTerm+''' AND'  
  
END  
SET @Query += ' (vtdt.bitReversed = 0) AND (vtdt.dteJournalDate <= '''+@SQAsAt+''') AND (vtdt.lngVendTrID NOT IN (SELECT vtdt1.lngVendTrID FROM tblVendTrans vt1 INNER JOIN tblVendTransDT vtdt1 ON vt1.lngVendTrID = vtdt1.lngVendTrID WHERE LTRIM(RTRIM(vt1.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName)) AND vtdt1.bitReversed = 0 AND vtdt1.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY vtdt1.lngVendTrID HAVING SUM(vtdt1.decAmount) = 0 AND SUM(vtdt1.decAmountF) = 0)) GROUP BY LTRIM(RTRIM(MASTERTABLE.strVendName)), v.strVendDesc, v.strTerm, MASTERTABLE.dteDueDate, v.strCurrency, vtdt.bitIsForeign, MASTERTABLE.dteJournalDate, v.strVendCategory'  
IF(@IsVendorNumberChecked = 1)  
BEGIN  
SET @Query += ' ORDER BY v.strCurrency, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
SET @Query += ' v.strVendCategory, LTRIM(RTRIM(MASTERTABLE.strVendName))'  
END  
ELSE  
BEGIN  
SET @Query += ' ORDER BY v.strCurrency, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
SET @Query += ' v.strVendCategory, v.strVendDesc'  
END  
END  
ELSE IF(@IsDeartmentTypeChecked = 1)  
BEGIN  
SET @Query = 'SELECT LTRIM(RTRIM(MASTERTABLE.strVendName)), v.strVendDesc, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
ELSE  
BEGIN  
SET @Query += ''''','  
END  
SET @Query += ' MASTERTABLE.dteDueDate, CASE vtdt.bitIsForeign WHEN 0 THEN SUM(vtdt.decAmount) ELSE SUM(vtdt.decAmountF) END, v.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = v.strCurrency), MASTERTABLE.dteJournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = tblVendors.intDept),''<<No Department>>'') FROM tblVendTrans AS MASTERTABLE INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName)) INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID WHERE'  
IF(@IsAll = 0)  
BEGIN  
  
SET @Query += ' ( ISNULL(v.intDept, 0) IN (SELECT * FROM fnSplitStringAsTable('''+@ItemList+''','',''))) AND'  
END  
  
IF(@SQstrTerm <> 'All')  
BEGIN  
SET @Query += ' v.strTerm = '''+@SQstrTerm+''' AND'  
  
END  
SET @Query += ' (vtdt.bitReversed = 0) AND (vtdt.dteJournalDate <= '''+@SQAsAt+''') AND (vtdt.lngVendTrID NOT IN (SELECT vtdt1.lngVendTrID FROM tblVendTrans vt1 INNER JOIN tblVendTransDT vtdt1 ON vt1.lngVendTrID = vtdt1.lngVendTrID WHERE LTRIM(RTRIM(vt1.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName)) AND vtdt1.bitReversed = 0 AND vtdt1.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY vtdt1.lngVendTrID HAVING SUM(vtdt1.decAmount) = 0 AND SUM(vtdt1.decAmountF) = 0)) GROUP BY LTRIM(RTRIM(MASTERTABLE.strVendName)), v.strVendDesc, v.strTerm, MASTERTABLE.dteDueDate, v.strCurrency, vtdt.bitIsForeign, MASTERTABLE.dteJournalDate, v.intDept'  
IF(@IsVendorNumberChecked = 1)  
BEGIN  
SET @Query += ' ORDER BY v.strCurrency, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
SET @Query += ' ISNULL(v.intDept, 0), LTRIM(RTRIM(MASTERTABLE.strVendName))'  
END  
ELSE  
BEGIN  
SET @Query += ' ORDER BY v.strCurrency, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
SET @Query += ' ISNULL(v.intDept, 0), v.strVendDesc'  
END  
END  
END  
ELSE  
BEGIN  
  
IF(@IsFilterByVendorChecked = 1)  
BEGIN  
SET @Query = 'SELECT v.strVendName, v.strVendDesc, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
  
END  
ELSE  
BEGIN  
SET @Query += ''''','  
END  
  
SET @Query += ' CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(vtdt.lngVendPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvPDocID, '''') ELSE ISNULL(vp.strSource,'''') END END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType AS TransType, vtdt.intTransType, vtdt.lngVendTrID, CASE vtdt.bitIsForeign WHEN 0 THEN vtdt.decAmount ELSE vtdt.decAmountF END, v.strCurrency, (SELECT strCurrName FROM tblCurrency WHERE strCurrency = v.strCurrency), MASTERTABLE.dteJournalDate, vtdt.dteJournalDate, '''', CASE WHEN ISNULL(vtdt.lngVendPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(vp.strComment,'''') END AS strInvDepNumber FROM tblVendTrans AS MASTERTABLE INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName)) LEFT JOIN tblVendPay vp ON vtdt.lngVendPayID = vp.lngVendPayID WHERE'  
  
IF(@IsAll = 0)  
BEGIN  
  
SET @Query += ' ( LTRIM(RTRIM(MASTERTABLE.strVendName)) IN (SELECT * FROM fnSplitStringAsTable('''+@ItemList+''','',''))) AND'  
END  
ELSE  
BEGIN  
IF(@BPToolMode = 0)  
BEGIN  
SET @Query += ' v.strVendCategory IN (SELECT vc.strVendCategory FROM tblVendorCat vc LEFT JOIN tblVendorCatSec vcs ON vc.strVendCategory = vcs.strVendCategory WHERE ISNULL((SELECT COUNT(vcs1.strVendCategory) FROM tblVendorCatSec vcs1 WHERE vcs1.strVendCategory = vc.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(vcs2.strVendCategory) FROM tblVendorCatSec vcs2 WHERE vcs2.strVendCategory = vc.strVendCategory), 0) > 0 AND vcs.strUserName = '''+@SQUserName+''')) AND '  
END  
END  
SET @Query += ' (vtdt.bitReversed = 0) AND (vtdt.dteJournalDate <= '''+@SQAsAt+''') AND (vtdt.lngVendTrID NOT IN (SELECT vtdt1.lngVendTrID FROM tblVendTrans vt1 INNER JOIN tblVendTransDT vtdt1 ON vt1.lngVendTrID = vtdt1.lngVendTrID WHERE LTRIM(RTRIM(vt1.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName)) AND vtdt1.bitReversed = 0 AND vtdt1.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY vtdt1.lngVendTrID HAVING SUM(vtdt1.decAmount) = 0 AND SUM(vtdt1.decAmountF) = 0))'  
  
IF(@SQstrTerm <> 'All')  
BEGIN  
SET @Query += ' AND v.strTerm = '''+@SQstrTerm+''''  
  
END  
IF(@IsVendorNumberChecked = 1)  
BEGIN  
SET @Query += ' ORDER BY v.strCurrency, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
SET @Query += ' v.strVendName, vtdt.lngVendTrID, vtdt.intTransType'  
END  
ELSE  
BEGIN  
SET @Query += ' ORDER BY v.strCurrency, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
SET @Query += ' v.strVendDesc, vtdt.lngVendTrID, vtdt.intTransType'  
END  
END  
ELSE IF(@IsCategoryTypeChecked = 1)  
BEGIN  
SET @Query = 'SELECT v.strVendName, v.strVendDesc, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
ELSE  
BEGIN  
SET @Query += ''''','  
END  
SET @Query += '  CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(vtdt.lngVendPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvPDocID, '''') ELSE ISNULL(vp.strSource,'''') END END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType AS TransType, vtdt.intTransType, vtdt.lngVendTrID, vtdt.decAmount, MASTERTABLE.dteJournalDate, vtdt.dteJournalDate, ISNULL(v.strVendCategory, ''''), CASE WHEN ISNULL(vtdt.lngVendPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(vp.strComment,'''') END AS strInvDepNumber FROM tblVendTrans AS MASTERTABLE INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName)) LEFT JOIN tblVendPay vp ON vtdt.lngVendPayID = vp.lngVendPayID WHERE'  
IF(@IsAll = 0)  
BEGIN  
  
SET @Query += ' ( v.strVendCategory IN (SELECT * FROM fnSplitStringAsTable('''+@ItemList+''','',''))) AND'  
END  
ELSE  
BEGIN  
IF(@BPToolMode = 0)  
BEGIN  
SET @Query += ' v.strVendCategory IN (SELECT vc.strVendCategory FROM tblVendorCat vc LEFT JOIN tblVendorCatSec vcs ON vc.strVendCategory = vcs.strVendCategory WHERE ISNULL((SELECT COUNT(vcs1.strVendCategory) FROM tblVendorCatSec vcs1 WHERE vcs1.strVendCategory = vc.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(vcs2.strVendCategory) FROM tblVendorCatSec vcs2 WHERE vcs2.strVendCategory = vc.strVendCategory), 0) > 0 AND vcs.strUserName = '''+@SQUserName+''')) AND '  
END  
END  
SET @Query += ' (vtdt.bitReversed = 0) AND (vtdt.dteJournalDate <= '''+@SQAsAt+''') AND (vtdt.lngVendTrID NOT IN (SELECT vtdt1.lngVendTrID FROM tblVendTrans vt1 INNER JOIN tblVendTransDT vtdt1 ON vt1.lngVendTrID = vtdt1.lngVendTrID WHERE vt1.strVendName = MASTERTABLE.strVendName AND vtdt1.bitReversed = 0 AND vtdt1.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY vtdt1.lngVendTrID HAVING SUM(vtdt1.decAmount) = 0 AND SUM(vtdt1.decAmountF) = 0))'  
  
IF(@SQstrTerm <> 'All')  
BEGIN  
SET @Query += ' AND v.strTerm = '''+@SQstrTerm+''''  
  
END  
IF(@IsVendorNumberChecked = 1)  
BEGIN  
SET @Query += ' ORDER BY v.strCurrency, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
SET @Query += ' v.strVendCategory, v.strVendName, vtdt.lngVendTrID, vtdt.intTransType'  
END  
ELSE  
BEGIN  
SET @Query += ' ORDER BY v.strCurrency, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
SET @Query += ' v.strVendCategory, v.strVendDesc, vtdt.lngVendTrID, vtdt.intTransType'  
END  
END  
ELSE IF(@IsDeartmentTypeChecked = 1)  
BEGIN  
SET @Query = 'SELECT v.strVendName, v.strVendDesc, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
ELSE  
BEGIN  
SET @Query += ''''','  
END  
SET @Query += '  CASE WHEN MASTERTABLE.intTransType = '+CONVERT(VARCHAR(20), @SQintTransType)+' THEN ISNULL(MASTERTABLE.strJEDocID, '''') ELSE CASE WHEN ISNULL(vtdt.lngVendPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvPDocID, '''') ELSE ISNULL(vp.strSource,'''') END END, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType AS TransType, vtdt.intTransType, vtdt.lngVendTrID, vtdt.decAmount, MASTERTABLE.dteJournalDate, vtdt.dteJournalDate, ISNULL((SELECT CAST(tblDepartments.intDept AS nVarchar(4)) + '' '' + tblDepartments.strDesc FROM tblDepartments WHERE tblDepartments.intDept = v.intDept),''<<No Department>>''), CASE WHEN ISNULL(vtdt.lngVendPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(vp.strComment,'''') END AS strInvDepNumber FROM tblVendTrans AS MASTERTABLE INNER JOIN tblVendTransDT vtdt ON MASTERTABLE.lngVendTrID = vtdt.lngVendTrID INNER JOIN tblVendors v ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(v.strVendName)) LEFT JOIN tblVendPay vp ON vtdt.lngVendPayID = vp.lngVendPayID WHERE'  
IF(@IsAll = 0)  
BEGIN  
  
SET @Query += ' ISNULL(v.intDept, 0) IN (SELECT * FROM fnSplitStringAsTable('''+@ItemList+''','','')) AND'  
END  
SET @Query += ' (vtdt.bitReversed = 0) AND (vtdt.dteJournalDate <= '''+@SQAsAt+''') AND (vtdt.lngVendTrID NOT IN (SELECT vtdt1.lngVendTrID FROM tblVendTrans vt1 INNER JOIN tblVendTransDT vtdt1 ON vt1.lngVendTrID = vtdt1.lngVendTrID WHERE vt1.strVendName = MASTERTABLE.strVendName AND vtdt1.bitReversed = 0 AND vtdt1.dteJournalDate <= '''+@SQPaidIn+''' GROUP BY vtdt1.lngVendTrID HAVING SUM(vtdt1.decAmount) = 0 AND SUM(vtdt1.decAmountF) = 0))'  
  
IF(@SQstrTerm <> 'All')  
BEGIN  
SET @Query += ' AND v.strTerm = '''+@SQstrTerm+''''  
  
END  
IF(@IsVendorNumberChecked = 1)  
BEGIN  
SET @Query += ' ORDER BY v.strCurrency, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
SET @Query += ' ISNULL(v.intDept, 0), v.strVendName, vtdt.lngVendTrID, vtdt.intTransType'  
END  
ELSE  
BEGIN  
SET @Query += ' ORDER BY v.strCurrency, '  
IF(@IsCheckedGroupByTerms = 1)  
BEGIN  
SET @Query += 'v.strTerm,'  
END  
SET @Query += ' ISNULL(v.intDept, 0), v.strVendDesc, vtdt.lngVendTrID, vtdt.intTransType'  
END  
END  
END  
END  
EXEC sp_sqlexec @Query  
END  
GO

/****** Object:  StoredProcedure [dbo].[LoadCustomers]    Script Date: 12-04-2022 17:30:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetTblCentersByTemplate]
(
@SQTempName varchar(100)
)
AS
BEGIN
SELECT tblCenters.strLvl1 as Lvl1, tblCenters.strLvl2 as Lvl2, tblCenters.strLvl3 as Lvl3, tblCenters.strLvl4 as Lvl4, tblCenters.strLvl5 as Lvl5, tblCentersTDT.decPct as Pct, tblCentersTDT.uidCenterID as CenterID 
FROM tblCenters INNER JOIN tblCentersTDT ON tblCenters.uidCenterID = tblCentersTDT.uidCenterID 
WHERE (tblCentersTDT.strTemplate = @SQTempName)
END

GO

/****** Object:  StoredProcedure [dbo].[LoadCustomers]    Script Date: 12-04-2022 17:30:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetTblCentersTByTemplate]
(
@SQTempName VARCHAR(100)
)
AS
BEGIN
SELECT strTemplate as Template, strDesc as [Desc], bitInactive as Inactive FROM tblCentersT WHERE strTemplate = @SQTempName
END

GO

/****** Object:  StoredProcedure [dbo].[LoadJobTitle]    Script Date: 22-12-2021 12:52:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

create procedure [dbo].[GetTblJournalEntData]
(
@SQDocID nvarchar(max) = ''
)
AS
BEGIN
SELECT tblJournalEnt.intGLNumber as GLNumber, tblAccounts.strDesc as [Description] 
FROM tblJournalEnt INNER JOIN tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber 
WHERE tblJournalEnt.lngJourID = @SQDocID
END

GO

/****** Object:  StoredProcedure [dbo].[LoadCustomers]    Script Date: 12-04-2022 17:30:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetTemplates](
@PageSize INT = 25
,@PageNumber INT = 1
,@Search AS NVARCHAR(Max) = ''

)
AS
BEGIN
DECLARE @skip INT
SET @skip = @PageSize * (@PageNumber - 1)

SELECT strTemplate as Template, strDesc as [Desc], bitInactive as Inactive FROM tblCentersT 

Where ( ISNULL(strTemplate, '') LIKE '%' + ISNULL(@search, strTemplate) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
			)
ORDER BY strTemplate OFFSET(@Skip) ROWS
FETCH NEXT (@PageSize) ROWS ONLY
END
GO

/****** Object:  StoredProcedure [dbo].[GetTransactionsInAccountByGLNumber]    Script Date: 15-04-2022 10:46:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetTransactionsInAccountByGLNumber] (@SQGLNumber NVARCHAR(max))
AS
BEGIN
	SELECT tblJournal.strSource AS [Source]
		,tblJournal.dteJournalDate AS EntDate
		,tblJournal.strComment AS Comment
		,tblJournalEnt.decDebits AS Debits
		,tblJournalEnt.decCredits AS Credits
		,tblJournal.intModule AS strAccountType
		,tblJournal.lngJourID AS JourID
		,tblJournalEnt.decAmount AS Amount
		,tblJournalEnt.decAmountF AS AmountF
		,tblJournalEnt.decDebitsF AS DebitsF
		,tblJournalEnt.decCreditsF AS CreditsF
	FROM tblJournal
	INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
	WHERE (tblJournalEnt.intGLNumber = @SQGLNumber)
	ORDER BY tblJournal.dteJournalDate
END
GO

/****** Object:  StoredProcedure [dbo].[InsertIntoTblAccountsSL]    Script Date: 21-04-2022 14:20:37 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[InsertIntoTblAccountsSL]
(
@SQintGLNumber nvarchar(max),
@SQdteEntDate varchar(19),
@SQstrSource nvarchar(max),
@SQstrComment nvarchar(max),
@SQstrDesc nvarchar(max),
@SQstrAsset nvarchar(max),
@SQdecDebits money,
@SQdecCredits money,
@SQdecAmount money
)
AS
BEGIN
INSERT INTO tblAccountsSL (intGLNumber,dteEntDate,strSource,strComment,strDesc,strAsset,decDebits,decCredits,decAmount) VALUES (@SQintGLNumber,@SQdteEntDate,@SQstrSource,@SQstrComment,@SQstrDesc,@SQstrAsset,@SQdecDebits,@SQdecCredits,@SQdecAmount)
END

GO

/****** Object:  StoredProcedure [dbo].[LoadCustomers]    Script Date: 21-01-2022 10:47:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*********** End [LoadServiceableItems] ***********/
--EXEC LoadAssetEfficiency 0,1,0,0,'',1,0
/*********** Start [LoadCustomers] ***********/
create procedure [dbo].[LoadAssetEfficiency]
(
@IsAssetsChecked bit,
@IsAssetTypeChecked bit,
@IsCostTypeChecked bit,
@IsSearchText bit,
@SQSearchBy nvarchar(max),
@IsSortNumberChecked bit,
@IsInactive bit
)
AS
DECLARE @Query nvarchar(max) = ''
BEGIN
IF(@IsAssetsChecked = 1)
BEGIN
IF(@IsSearchText = 1)
BEGIN
IF(LEN(@SQSearchBy) > 2)
BEGIN
IF(@IsInactive = 1)
BEGIN
SET @Query = 'SELECT strAssetCode as Code, strAssetDesc as [Description] FROM tblAssets WHERE (strAssetCode LIKE ''%'+@SQSearchBy+'%''  OR strAssetDesc LIKE ''%'+@SQSearchBy+'%'')'
END
ELSE
BEGIN
SET @Query = 'SELECT strAssetCode as Code, strAssetDesc as [Description] FROM tblAssets WHERE (strAssetCode LIKE ''%'+@SQSearchBy+'%'' OR strAssetDesc LIKE ''%'+@SQSearchBy+'%'') AND bitInactive = 0'
END
END
END
ELSE
BEGIN
IF(@IsInactive = 1)
BEGIN
SET @Query += 'SELECT strAssetCode as Code, strAssetDesc as [Description] FROM tblAssets'
END
ELSE
BEGIN
SET @Query += 'SELECT strAssetCode as Code, strAssetDesc as [Description] FROM tblAssets WHERE bitInactive = 0'
END
END
IF(@IsSortNumberChecked = 1)
BEGIN
SET @Query += ' ORDER BY strAssetCode'
END
ELSE
BEGIN
SET @Query += ' ORDER BY strAssetDesc'
END
END
ELSE IF(@IsAssetTypeChecked = 1)
BEGIN
IF(@IsSearchText = 1)
BEGIN
IF(LEN(@SQSearchBy) > 2)
BEGIN
IF(@IsInactive = 1)
BEGIN
SET @Query = 'SELECT strCode as Code, strDescription as [Description] FROM tblAssetTypes WHERE (strCode LIKE ''%'+@SQSearchBy+'%'' OR strDescription LIKE ''%'+@SQSearchBy+'%'')'
END
ELSE
BEGIN
SET @Query += 'SELECT strCode as Code, strDescription as [Description] FROM tblAssetTypes WHERE (strCode LIKE ''%'+@SQSearchBy+'%'' OR strDescription LIKE ''%'+@SQSearchBy+'%'') AND bitInactive = 0'
END
END
END
ELSE
BEGIN
IF(@IsInactive = 1)
BEGIN
SET @Query += 'SELECT strCode as Code, strDescription as [Description] FROM tblAssetTypes'
END
ELSE
BEGIN
SET @Query += 'SELECT strCode as Code, strDescription as [Description] FROM tblAssetTypes WHERE bitInactive = 0'
END
END
IF(@IsSortNumberChecked = 1)
BEGIN
SET @Query += ' ORDER BY strCode'
END
ELSE
BEGIN
SET @Query += ' ORDER BY strDescription'
END
END
ELSE IF(@IsCostTypeChecked = 1)
BEGIN
IF(@IsSearchText = 1)
BEGIN
IF(LEN(@SQSearchBy) > 2)
BEGIN
IF(@IsInactive = 1)
BEGIN
SET @Query = 'SELECT strCode as Code, strDescription as [Description] FROM tblCostTypes WHERE (strCode LIKE ''%'+@SQSearchBy+'%'' OR strDescription LIKE % ''%'+@SQSearchBy+'%'')'
END
ELSE
BEGIN
SET @Query += 'SELECT strCode as Code, strDescription as [Description] FROM tblCostTypes WHERE (strCode LIKE ''%'+@SQSearchBy+'%'' OR strDescription LIKE % ''%'+@SQSearchBy+'%'') AND bitInactive = 0'
END
END
END
ELSE
BEGIN
IF(@IsInactive = 1)
BEGIN
SET @Query += 'SELECT strCode as Code, strDescription as [Description] FROM tblCostTypes'
END
ELSE
BEGIN
SET @Query += 'SELECT strCode as Code, strDescription as [Description] FROM tblCostTypes WHERE bitInactive = 0'
END
END
IF(@IsSortNumberChecked = 1)
BEGIN
SET @Query += ' ORDER BY strCode'
END
ELSE
BEGIN
SET @Query += ' ORDER BY strDescription'
END
END
--PRINT @Query
EXEC sp_Executesql @Query 
END
GO
----------------------------------------------------


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[LoadCustCustomers] @UserName VARCHAR(100) = ''
	,@SearchText NVARCHAR(max) = ''
	,@IsInActiveCustomers BIT
	,@BPToolsMode BIT
AS
BEGIN
	IF (@IsInActiveCustomers = 1)
	BEGIN
		SELECT strCustName AS CustomerName
			,strCustDesc AS Description
		FROM tblCustomers
		WHERE (
				strCustName LIKE '%' + @SearchText + '%'
				OR strCustDesc LIKE '%' + @SearchText + '%'
				)
			AND (
				(@BPToolsMode = 0)
				AND (
					strCustCategory IN (
						SELECT tblCustomerCat.strCustCategory
						FROM tblCustomerCat
						LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
						WHERE ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) > 0
								AND tblCustomerCatSec.strUserName = '' + @UserName + ''
								)
						)
					)
				)
		ORDER BY strCustName
	END
	ELSE
	BEGIN
		SELECT strCustName AS CustomerName
			,strCustDesc AS Description
		FROM tblCustomers
		WHERE bitInactive = 0
			AND (
				strCustName LIKE '%' + @SearchText + '%'
				OR strCustDesc LIKE '%' + @SearchText + '%'
				)
			AND (
				(@BPToolsMode = 0)
				AND (
					strCustCategory IN (
						SELECT tblCustomerCat.strCustCategory
						FROM tblCustomerCat
						LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
						WHERE ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) > 0
								AND tblCustomerCatSec.strUserName = '' + @UserName + ''
								)
						)
					)
				)
		ORDER BY strCustName
	END
END
GO

/****** Object:  StoredProcedure [dbo].[LoadCustVendors]    Script Date: 16-12-2021 18:42:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********** Start [LoadGPCustomers] **********/
CREATE PROCEDURE [dbo].[LoadCustVendors] (
	@IsCheckedSearch BIT
	,@SearchText NVARCHAR(max) = ''
	,@IsInactive BIT = 0
	,@BPToolsMode BIT = 0
	,@UserName VARCHAR(100)
	)
AS
DECLARE @isExist BIT
DECLARE @Query NVARCHAR(max)

BEGIN
	IF (@IsCheckedSearch = 1)
	BEGIN

		IF(LEN(@SearchText) > 2) 
		BEGIN

			IF (@IsInactive = 1)
			BEGIN
				SET @Query = 'SELECT strVendName AS VendorName,strVendDesc AS [Description]FROM tblVendors WHERE (strVendName LIKE ''%' + @SearchText + '%'' OR strVendDesc LIKE ''%' + @SearchText + '%'')	'
				SET @isExist = 1
			END
			ELSE
			BEGIN
				SET @Query = 'SELECT strVendName AS VendorName,strVendDesc AS [Description]FROM tblVendors WHERE bitInactive = 0 AND (strVendName LIKE ''%' + @SearchText + '%'' OR strVendDesc LIKE ''%' + @SearchText + '%'')'
				SET @isExist = 1
			END
		END
		ELSE
		BEGIN
			IF (@IsInactive = 1)
			BEGIN
				SET @Query = 'SELECT strVendName AS VendorName, strVendDesc AS [Description] FROM tblVendors '
				SET @isExist = 1
			END
			ELSE
			BEGIN
				SET @Query = 'SELECT strVendName AS VendorName, strVendDesc AS [Description] FROM tblVendors WHERE (bitInactive = 0)'
				SET @isExist = 1
			END
		END
	END

	ELSE
	BEGIN
		IF (@IsInactive = 1)
		BEGIN
			SET @Query = 'SELECT strVendName AS VendorName,strVendDesc AS [Description]FROM tblVendors '
		END
		ELSE
		BEGIN
			SET @Query = 'SELECT strVendName AS VendorName,strVendDesc AS [Description]FROM tblVendors   WHERE bitInactive = 0'
			SET @isExist = 1
		END
	END

	IF (@BPToolsMode = 0)
	BEGIN
	    IF CHARINDEX('WHERE', @Query) > 0
        SET @Query += ' AND '
    ELSE
        SET @Query += ' WHERE '

		SET @Query += 'strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = ''' + @UserName + '''))'
	END

	SET @Query += 'ORDER BY strVendName'

	EXEC sp_Executesql @Query
END
GO
----------------------------------------------------

/****** Object:  StoredProcedure [dbo].[GetDepartments]    Script Date: 06-04-2022 11:52:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[LoadDepartments]
(
@ShowInactive bit
)
AS
IF(@ShowInactive =  0)
BEGIN
SELECT intDept as Dept, strDesc as [Description], bitInactive as Inactive, dteRowUpdated  FROM tblDepartments WHERE bitInactive = 0 ORDER BY intDept
END
ELSE 
BEGIN
SELECT intDept as Dept, strDesc as [Description], bitInactive as Inactive, dteRowUpdated FROM tblDepartments ORDER BY intDept
END

GO

/****** Object:  StoredProcedure [dbo].[LoadGPCustomers]    Script Date: 10-12-2021 12:22:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

create procedure [dbo].[LoadGPCustomers]
(
@IsCheckedSearch bit,
@SearchText nvarchar(max),
@IsInactive bit,
@blnBPToolsMode bit,
@UserName varchar(100)
)
AS
DECLARE @isExist bit
DECLARE @Query nvarchar(max)
BEGIN
IF(@IsCheckedSearch = 1)
BEGIN
IF(@SearchText <> '')
BEGIN
IF(@IsInactive = 1)
BEGIN
set @Query = 'SELECT
strCustName AS CustomerName
,strCustDesc AS [Description]
FROM
tblCustomers
WHERE
(strCustName LIKE '''+@SearchText+''' OR strCustDesc LIKE '''+@SearchText+''')'
set @isExist = 1
END
ELSE
BEGIN
set @Query = 'SELECT
strCustName AS CustomerName
,strCustDesc AS [Description]
FROM
tblCustomers
WHERE
bitInactive = 0 AND
(strCustName LIKE '''+@SearchText+''' OR strCustDesc LIKE '''+@SearchText+''')'
set @isExist = 1
END
END
END
ELSE
BEGIN
IF(@IsInactive = 1)
BEGIN
set @Query = 'SELECT
strCustName AS CustomerName
,strCustDesc AS [Description]
FROM
tblCustomers'
END
ELSE
BEGIN
set @Query = 'SELECT
strCustName AS CustomerName
,strCustDesc AS [Description]
FROM
tblCustomers
WHERE
bitInactive = 0'
set @isExist = 1
END
END
IF(@blnBPToolsMode =0)
BEGIN
IF(@isExist = 1)
SET @Query += 'AND ' ELSE SET @Query += 'WHERE '
SET @Query += 'strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)
FROM tblCustomerCatSec
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)
FROM tblCustomerCatSec
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+@UserName+'''))'
-- select @Query
END
set @Query += 'ORDER BY strCustName'
EXEC sp_Executesql @Query
END

GO

/****** Object:  StoredProcedure [dbo].[LoadJobTitle]    Script Date: 22-12-2021 12:52:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********** End [LoadServiceableItems] **********/
--exec LoadItemPricingFilterData 0,1,0,0,0,0,1,'',0,'Administrator',0
/********** Start [LoadGPCustomers] **********/
CREATE PROCEDURE [dbo].[LoadItemPricingFilterData]
(
@IsActive bit,
@IsInactive bit,
@IsAll bit,
@IsCategory bit,
@IsItemAll bit,
@IsItems bit,
@IsServices bit,
@SQstrSearch nvarchar(max),
@BPToolsMode bit = 0,
@SQUserName varchar(100) = '',
@PL_InvSortDescription bit = 0
)
AS
BEGIN 
--category
IF(@IsCategory = 1)
BEGIN
if(@IsInactive = 0)
BEGIN 

SELECT strCategory as Category, strDesc as [Description] FROM tblInvCat WHERE (bitInactive = 0) 
AND (strCategory LIKE '%' + @SQstrSearch + '%' OR strDesc LIKE '%' + @SQstrSearch + '%')
ORDER BY strCategory
END
ELSE
BEGIN 
SELECT strCategory as Category, strDesc as [Description] FROM tblInvCat  
WHERE (strCategory LIKE '%' + @SQstrSearch + '%' OR strDesc LIKE '%' + @SQstrSearch + '%')
ORDER BY strCategory
END
END
--items
ELSE IF(@IsItems = 1)
BEGIN
if(@BPToolsMode = 0)
begin
SELECT strPartNumber as Category, strDesc as [Description], intType FROM tblInv 
where strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = @SQUserName))  AND (strPartNumber LIKE '%' + @SQstrSearch + '%' OR strDesc LIKE '%' + @SQstrSearch + '%')
ORDER BY strPartNumber
end
ELSE
BEGIN
SELECT strPartNumber as Category, strDesc as [Description], intType FROM tblInv WHERE (intType = 1) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0
AND (strPartNumber LIKE '%' + @SQstrSearch + '%' OR strDesc LIKE '%' + @SQstrSearch + '%')
ORDER BY strPartNumber
end
END

--services
ELSE IF(@IsServices = 1)
BEGIN
if(@PL_InvSortDescription = 0)
begin
SELECT strPartNumber as Category, strDesc as [Description], intType FROM tblInv WHERE (intType = 4) AND (bitInactive = 0) AND tblInv.bitOtherCmp = 0 AND (strPartNumber LIKE '%' + @SQstrSearch + '%' OR strDesc LIKE '%' + @SQstrSearch + '%')
ORDER BY strPartNumber
end
else
begin
SELECT strPartNumber as Category, strDesc as [Description], intType FROM tblInv WHERE (intType = 4) AND tblInv.bitOtherCmp = 0 AND (strPartNumber LIKE '%' + @SQstrSearch + '%' OR strDesc LIKE '%' + @SQstrSearch + '%')
ORDER BY strDesc
end
--if(@BPToolsMode = 0 or @PL_InvSortDescription = 0)
--begin
--SELECT strPartNumber as Category, strDesc as [Description], intType FROM tblInv -- 'WHERE,AND' condition need to apply 'CASE WHEN'
--where strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = @SQUserName))
--ORDER BY strPartNumber
--end
--else
--begin
--SELECT strPartNumber as Category, strDesc as [Description], intType FROM tblInv -- 'WHERE,AND' condition need to apply 'CASE WHEN'
--where strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = @SQUserName))
--ORDER BY strDesc
--end
END

----ALL
ELSE IF(@IsItemAll = 1)
BEGIN
if(@BPToolsMode = 0)
begin
SELECT strPartNumber as Category, strDesc as [Description], intType FROM tblInv WHERE (intType <> 5) AND tblInv.bitOtherCmp = 0 AND (strPartNumber LIKE '%' + @SQstrSearch + '%' OR strDesc LIKE '%' + @SQstrSearch + '%')
ORDER BY strDesc
end
else
begin
SELECT strPartNumber as Category, strDesc as [Description], intType FROM tblInv -- 'WHERE,AND' condition need to apply 'CASE WHEN'
where strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = @SQUserName)) AND (strPartNumber LIKE '%' + @SQstrSearch + '%' OR strDesc LIKE '%' + @SQstrSearch + '%')
ORDER BY strPartNumber
end
--if(@PL_InvSortDescription = 0)
--begin
--end
END
END
GO


/****** Object:  StoredProcedure [dbo].[LoadJobTitle]    Script Date: 22-12-2021 12:52:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[LoadJobItems] @SQSearchBy NVARCHAR(max) = ''
	,@SQStart VARCHAR(19)
	,@SQEnd VARCHAR(19)
	,@SQTypeCL INT
AS
BEGIN
	IF (LEN(@SQSearchBy) > 0)
	BEGIN
		SELECT strJBDocID
			,strReference
		FROM tblManJob
		WHERE (
				strJBDocID LIKE '%' + @SQSearchBy + '%'
				OR strReference LIKE '%' + @SQSearchBy + '%'
				)
			AND (
				tblManJob.dteJournalDate BETWEEN @SQStart
					AND @SQEnd
				)
			AND (tblManJob.intType = @SQTypeCL)
		ORDER BY strJBDocID
	END
	ELSE
	BEGIN
		SELECT strJBDocID
			,strReference
		FROM tblManJob
		WHERE (
				tblManJob.dteJournalDate BETWEEN @SQStart
					AND @SQEnd
				)
			AND (tblManJob.intType = @SQTypeCL)
		ORDER BY strJBDocID
	END
END
GO


/****** Object:  StoredProcedure [dbo].[LoadJobTitle]    Script Date: 22-12-2021 12:52:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[LoadJobTitleId]
(
@SQstrJobTitle varchar(100)
)
AS
BEGIN 
SELECT lngID as ID FROM tblJobTitles WHERE strJobTitle = @SQstrJobTitle
END

GO

/****** Object:  StoredProcedure [dbo].[LoadJobTitle]    Script Date: 22-12-2021 12:52:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[LoadJobTitle]
AS
BEGIN 
SELECT strJobTitle as JobTitle, lngID as ID FROM tblJobTitles ORDER BY strJobTitle
END
GO

/****** Object:  StoredProcedure [dbo].[LoadLocation]    Script Date: 01-03-2022 17:48:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[LoadLocation] @IsSearchChecked BIT
	,@SQSearchBy VARCHAR(100)
	,@SQUserName VARCHAR(100)
AS
BEGIN
	IF (@IsSearchChecked = 1)
	BEGIN
		SELECT tblInvLoc.strLocName AS LocationName
			,tblInvLoc.strDesc AS [Description]
			,ISNULL((
					SELECT COUNT(tblInvLocSec.strLocName)
					FROM tblInvLocSec
					WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName
					), 0)
			,ISNULL(tblInvLocSec.strUserName, '')
		FROM tblInvLoc
		LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName
			AND tblInvLocSec.strUserName = @SQUserName
		WHERE (
				tblInvLoc.strLocName LIKE '%' + @SQSearchBy + '%'
				OR strDesc LIKE '%' + @SQSearchBy + '%'
				)
		ORDER BY tblInvLoc.strLocName
	END
	ELSE
	BEGIN
		SELECT tblInvLoc.strLocName AS LocationName
			,tblInvLoc.strDesc AS [Description]
			,ISNULL((
					SELECT COUNT(tblInvLocSec.strLocName)
					FROM tblInvLocSec
					WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName
					), 0)
			,ISNULL(tblInvLocSec.strUserName, '')
		FROM tblInvLoc
		LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName
			AND tblInvLocSec.strUserName = @SQUserName
		ORDER BY tblInvLoc.strLocName
	END
END
GO


/****** Object:  StoredProcedure [dbo].[LoadPOSClosingData]    Script Date: 14-03-2022 17:40:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[LoadPOSClosingData]
(
@SQStart varchar(19),
@SQEnd varchar(19)
)
AS
BEGIN
SELECT dteSessionDate
,strDrawerName
,strAssignedUser
,strTerminal
,dteClosed
,uidSessionID
FROM tblPOSDrs
WHERE (intStatus = 3)
AND (
dteSessionDate BETWEEN @SQStart
AND @SQEnd
)
ORDER BY dteSessionDate DESC
,strDrawerName
,strAssignedUser
,dteClosed DESC
END

GO

/****** Object:  StoredProcedure [dbo].[LoadJobTitle]    Script Date: 22-12-2021 12:52:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

create procedure [dbo].[LoadPricelistsDateBy]
(
@SQstrPricelist nvarchar(max) = ''
)
AS
BEGIN 
if(@SQstrPricelist is not null)
begin
SELECT uidPriceBasedID as PriceBasedID, dteStartDate as StartDate, dteFinishDate as FinishDate
FROM tblPriceListsByDate 
WHERE strPricelist = @SQstrPricelist 
order by dteStartDate
end
END

GO

/****** Object:  StoredProcedure [dbo].[LoadJobTitle]    Script Date: 22-12-2021 12:52:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

create procedure [dbo].[LoadPricelists]
AS
BEGIN 
SELECT DISTINCT tblPriceData.strPricelist as PriceList 
FROM tblPriceData INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.strPricelist = tblPriceData.strPricelist 
WHERE tblPriceData.bitInactive = 0
END

GO

/****** Object:  StoredProcedure [dbo].[LoadProductionSchedule]    Script Date: 20-12-2021 10:26:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[LoadProductionSchedule] (
	@SQStart DATETIME
	,@SQFinish DATETIME
	,@IsDetailChecked BIT
	,@IsSummaryChecked BIT
	,@FilterType INT
	)
AS
BEGIN
	-- details
	IF (@IsDetailChecked = 1)
	BEGIN
		IF (@FilterType = 3)
		BEGIN
			SELECT PS.strProdNumber AS ProdNumber
				,PS.strPartNumber AS PartNumber
				,INV.strDesc AS [Desc]
				,PS.decReqQty AS ReqQty
				,PS.strLocName AS LocName
				,PS.dteStartDate AS StartDate
				,PS.dteDueDate AS DueDate
				,(
					CASE 
						WHEN PS.blnDisassemble = 0
							THEN 'Assemble'
						ELSE 'Disassemble'
						END
					) AS Assemble
				,PS.blnCompleted AS IsCompleted
				,PS.decManQty AS ManQty
				,PS.strAsmDocID AS AsmDocID
				,PSDT.strPartNumber AS CompPartNumber
				,INV2.strDesc AS CompDesc
				,PSDT.strLocName AS CompLocName
				,(
					SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
					FROM tblInvTrackingDT ITDT
					WHERE ITDT.strPartNumber = INV2.strPartNumber
					) AS CompUnitCost
				,INV2.strSellUnit AS CompUnit
				,PSDT.decReqQty AS CompReqQty
				,(
					PSDT.decReqQty * (
						SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
						FROM tblInvTrackingDT ITDT
						WHERE ITDT.strPartNumber = INV2.strPartNumber
						)
					) AS CompReqCost
				,(
					CASE 
						WHEN PS.blnCompleted = 0
							THEN 0
						ELSE ((PSDT.decReqQty / PS.decReqQty) * PS.decManQty)
						END
					) AS CompUsedQty
				,(
					CASE 
						WHEN PS.blnCompleted = 0
							THEN 0
						ELSE (
								(
									(
										(
											SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
											FROM tblInvTrackingDT ITDT
											WHERE ITDT.strPartNumber = INV2.strPartNumber
											) * PSDT.decReqQty
										) / PS.decReqQty
									) * PS.decManQty
								)
						END
					) AS CompUsedCost
				,PS.dteCompletedDate AS CompletedDate
				,(
					PSDT.decReqQty - (
						CASE 
							WHEN PS.blnCompleted = 0
								THEN 0
							ELSE ((PSDT.decReqQty / PS.decReqQty) * PS.decManQty)
							END
						)
					) AS CompVarQty
				,(
					(
						PSDT.decReqQty * (
							SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
							FROM tblInvTrackingDT ITDT
							WHERE ITDT.strPartNumber = INV2.strPartNumber
							)
						) - (
						CASE 
							WHEN PS.blnCompleted = 0
								THEN 0
							ELSE (
									(
										(
											(
												SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
												FROM tblInvTrackingDT ITDT
												WHERE ITDT.strPartNumber = INV2.strPartNumber
												) * PSDT.decReqQty
											) / PS.decReqQty
										) * PS.decManQty
									)
							END
						)
					) AS CompVarCost
			FROM tblProductionSchedule PS
			INNER JOIN tblInv INV ON INV.strPartNumber = PS.strPartNumber
			INNER JOIN tblProductionScheduleDT PSDT ON PSDT.strProdNumber = PS.strProdNumber
			INNER JOIN tblInv INV2 ON INV2.strPartNumber = PSDT.strPartNumber
			WHERE (
					(
						PS.dteStartDate BETWEEN @SQStart
							AND @SQFinish
						)
					OR (
						PS.dteDueDate BETWEEN @SQStart
							AND @SQFinish
						)
					)
				--SELECT PS.strProdNumber, PS.strPartNumber, INV.strDesc, PS.decReqQty AS intReqQty, PS.strLocName, PS.dteStartDate, PS.dteDueDate, (CASE WHEN PS.blnDisassemble = 0 THEN 'Assemble' ELSE 'Disassemble' END) AS strAssemble, PS.blnCompleted, PS.decManQty AS intManQty, PS.strAsmDocID, PS.dteCompletedDate, (PS.decReqQty - PS.decManQty) AS intVariance 
				--FROM tblProductionSchedule PS INNER JOIN tblInv INV ON INV.strPartNumber = PS.strPartNumber 
				--WHERE ((PS.dteStartDate BETWEEN @SQStart AND @SQFinish) OR (PS.dteDueDate BETWEEN @SQStart AND @SQFinish)) 
		END

		IF (@FilterType = 0)
		BEGIN
			SELECT PS.strProdNumber AS ProdNumber
				,PS.strPartNumber AS PartNumber
				,INV.strDesc AS [Desc]
				,PS.decReqQty AS ReqQty
				,PS.strLocName AS LocName
				,PS.dteStartDate AS StartDate
				,PS.dteDueDate AS DueDate
				,(
					CASE 
						WHEN PS.blnDisassemble = 0
							THEN 'Assemble'
						ELSE 'Disassemble'
						END
					) AS Assemble
				,PS.blnCompleted AS IsCompleted
				,PS.decManQty AS ManQty
				,PS.strAsmDocID AS AsmDocID
				,PSDT.strPartNumber AS CompPartNumber
				,INV2.strDesc AS CompDesc
				,PSDT.strLocName AS CompLocName
				,(
					SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
					FROM tblInvTrackingDT ITDT
					WHERE ITDT.strPartNumber = INV2.strPartNumber
					) AS CompUnitCost
				,INV2.strSellUnit AS CompUnit
				,PSDT.decReqQty AS CompReqQty
				,(
					PSDT.decReqQty * (
						SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
						FROM tblInvTrackingDT ITDT
						WHERE ITDT.strPartNumber = INV2.strPartNumber
						)
					) AS CompReqCost
				,(
					CASE 
						WHEN PS.blnCompleted = 0
							THEN 0
						ELSE ((PSDT.decReqQty / PS.decReqQty) * PS.decManQty)
						END
					) AS CompUsedQty
				,(
					CASE 
						WHEN PS.blnCompleted = 0
							THEN 0
						ELSE (
								(
									(
										(
											SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
											FROM tblInvTrackingDT ITDT
											WHERE ITDT.strPartNumber = INV2.strPartNumber
											) * PSDT.decReqQty
										) / PS.decReqQty
									) * PS.decManQty
								)
						END
					) AS CompUsedCost
				,PS.dteCompletedDate AS CompletedDate
				,(
					PSDT.decReqQty - (
						CASE 
							WHEN PS.blnCompleted = 0
								THEN 0
							ELSE ((PSDT.decReqQty / PS.decReqQty) * PS.decManQty)
							END
						)
					) AS CompVarQty
				,(
					(
						PSDT.decReqQty * (
							SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
							FROM tblInvTrackingDT ITDT
							WHERE ITDT.strPartNumber = INV2.strPartNumber
							)
						) - (
						CASE 
							WHEN PS.blnCompleted = 0
								THEN 0
							ELSE (
									(
										(
											(
												SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
												FROM tblInvTrackingDT ITDT
												WHERE ITDT.strPartNumber = INV2.strPartNumber
												) * PSDT.decReqQty
											) / PS.decReqQty
										) * PS.decManQty
									)
							END
						)
					) AS CompVarCost
			FROM tblProductionSchedule PS
			INNER JOIN tblInv INV ON INV.strPartNumber = PS.strPartNumber
			INNER JOIN tblProductionScheduleDT PSDT ON PSDT.strProdNumber = PS.strProdNumber
			INNER JOIN tblInv INV2 ON INV2.strPartNumber = PSDT.strPartNumber
			WHERE (
					(
						PS.dteStartDate BETWEEN @SQStart
							AND @SQFinish
						)
					OR (
						PS.dteDueDate BETWEEN @SQStart
							AND @SQFinish
						)
					)
				AND PS.blnCompleted = 0
		END
		ELSE IF (@FilterType = 1)
		BEGIN
			SELECT PS.strProdNumber AS ProdNumber
				,PS.strPartNumber AS PartNumber
				,INV.strDesc AS [Desc]
				,PS.decReqQty AS ReqQty
				,PS.strLocName AS LocName
				,PS.dteStartDate AS StartDate
				,PS.dteDueDate AS DueDate
				,(
					CASE 
						WHEN PS.blnDisassemble = 0
							THEN 'Assemble'
						ELSE 'Disassemble'
						END
					) AS Assemble
				,PS.blnCompleted AS IsCompleted
				,PS.decManQty AS ManQty
				,PS.strAsmDocID AS AsmDocID
				,PSDT.strPartNumber AS CompPartNumber
				,INV2.strDesc AS CompDesc
				,PSDT.strLocName AS CompLocName
				,(
					SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
					FROM tblInvTrackingDT ITDT
					WHERE ITDT.strPartNumber = INV2.strPartNumber
					) AS CompUnitCost
				,INV2.strSellUnit AS CompUnit
				,PSDT.decReqQty AS CompReqQty
				,(
					PSDT.decReqQty * (
						SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
						FROM tblInvTrackingDT ITDT
						WHERE ITDT.strPartNumber = INV2.strPartNumber
						)
					) AS CompReqCost
				,(
					CASE 
						WHEN PS.blnCompleted = 0
							THEN 0
						ELSE ((PSDT.decReqQty / PS.decReqQty) * PS.decManQty)
						END
					) AS CompUsedQty
				,(
					CASE 
						WHEN PS.blnCompleted = 0
							THEN 0
						ELSE (
								(
									(
										(
											SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
											FROM tblInvTrackingDT ITDT
											WHERE ITDT.strPartNumber = INV2.strPartNumber
											) * PSDT.decReqQty
										) / PS.decReqQty
									) * PS.decManQty
								)
						END
					) AS CompUsedCost
				,PS.dteCompletedDate AS CompletedDate
				,(
					PSDT.decReqQty - (
						CASE 
							WHEN PS.blnCompleted = 0
								THEN 0
							ELSE ((PSDT.decReqQty / PS.decReqQty) * PS.decManQty)
							END
						)
					) AS CompVarQty
				,(
					(
						PSDT.decReqQty * (
							SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
							FROM tblInvTrackingDT ITDT
							WHERE ITDT.strPartNumber = INV2.strPartNumber
							)
						) - (
						CASE 
							WHEN PS.blnCompleted = 0
								THEN 0
							ELSE (
									(
										(
											(
												SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
												FROM tblInvTrackingDT ITDT
												WHERE ITDT.strPartNumber = INV2.strPartNumber
												) * PSDT.decReqQty
											) / PS.decReqQty
										) * PS.decManQty
									)
							END
						)
					) AS CompVarCost
			FROM tblProductionSchedule PS
			INNER JOIN tblInv INV ON INV.strPartNumber = PS.strPartNumber
			INNER JOIN tblProductionScheduleDT PSDT ON PSDT.strProdNumber = PS.strProdNumber
			INNER JOIN tblInv INV2 ON INV2.strPartNumber = PSDT.strPartNumber
			WHERE (
					(
						PS.dteStartDate BETWEEN @SQStart
							AND @SQFinish
						)
					OR (
						PS.dteDueDate BETWEEN @SQStart
							AND @SQFinish
						)
					)
				AND PS.blnCompleted = 0
				AND PS.dteDueDate < GETDATE()
		END
		ELSE IF (@FilterType = 2)
		BEGIN
			SELECT PS.strProdNumber AS ProdNumber
				,PS.strPartNumber AS PartNumber
				,INV.strDesc AS [Desc]
				,PS.decReqQty AS ReqQty
				,PS.strLocName AS LocName
				,PS.dteStartDate AS StartDate
				,PS.dteDueDate AS DueDate
				,(
					CASE 
						WHEN PS.blnDisassemble = 0
							THEN 'Assemble'
						ELSE 'Disassemble'
						END
					) AS Assemble
				,PS.blnCompleted AS IsCompleted
				,PS.decManQty AS ManQty
				,PS.strAsmDocID AS AsmDocID
				,PSDT.strPartNumber AS CompPartNumber
				,INV2.strDesc AS CompDesc
				,PSDT.strLocName AS CompLocName
				,(
					SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
					FROM tblInvTrackingDT ITDT
					WHERE ITDT.strPartNumber = INV2.strPartNumber
					) AS CompUnitCost
				,INV2.strSellUnit AS CompUnit
				,PSDT.decReqQty AS CompReqQty
				,(
					PSDT.decReqQty * (
						SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
						FROM tblInvTrackingDT ITDT
						WHERE ITDT.strPartNumber = INV2.strPartNumber
						)
					) AS CompReqCost
				,(
					CASE 
						WHEN PS.blnCompleted = 0
							THEN 0
						ELSE ((PSDT.decReqQty / PS.decReqQty) * PS.decManQty)
						END
					) AS CompUsedQty
				,(
					CASE 
						WHEN PS.blnCompleted = 0
							THEN 0
						ELSE (
								(
									(
										(
											SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
											FROM tblInvTrackingDT ITDT
											WHERE ITDT.strPartNumber = INV2.strPartNumber
											) * PSDT.decReqQty
										) / PS.decReqQty
									) * PS.decManQty
								)
						END
					) AS CompUsedCost
				,PS.dteCompletedDate AS CompletedDate
				,(
					PSDT.decReqQty - (
						CASE 
							WHEN PS.blnCompleted = 0
								THEN 0
							ELSE ((PSDT.decReqQty / PS.decReqQty) * PS.decManQty)
							END
						)
					) AS CompVarQty
				,(
					(
						PSDT.decReqQty * (
							SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
							FROM tblInvTrackingDT ITDT
							WHERE ITDT.strPartNumber = INV2.strPartNumber
							)
						) - (
						CASE 
							WHEN PS.blnCompleted = 0
								THEN 0
							ELSE (
									(
										(
											(
												SELECT SUM(ITDT.decValue) / SUM(ITDT.decQty)
												FROM tblInvTrackingDT ITDT
												WHERE ITDT.strPartNumber = INV2.strPartNumber
												) * PSDT.decReqQty
											) / PS.decReqQty
										) * PS.decManQty
									)
							END
						)
					) AS CompVarCost
			FROM tblProductionSchedule PS
			INNER JOIN tblInv INV ON INV.strPartNumber = PS.strPartNumber
			INNER JOIN tblProductionScheduleDT PSDT ON PSDT.strProdNumber = PS.strProdNumber
			INNER JOIN tblInv INV2 ON INV2.strPartNumber = PSDT.strPartNumber
			WHERE (
					(
						PS.dteStartDate BETWEEN @SQStart
							AND @SQFinish
						)
					OR (
						PS.dteDueDate BETWEEN @SQStart
							AND @SQFinish
						)
					)
				AND PS.blnCompleted = 1
		END
	END
			-- summary
	ELSE IF (@IsSummaryChecked = 1)
	BEGIN
		IF (@FilterType = 3)
		BEGIN
			SELECT PS.strProdNumber AS ProdNumber
				,PS.strPartNumber AS PartNumber
				,INV.strDesc AS [Desc]
				,PS.decReqQty AS ReqQty
				,PS.strLocName AS LocName
				,PS.dteStartDate AS StartDate
				,PS.dteDueDate AS DueDate
				,(
					CASE 
						WHEN PS.blnDisassemble = 0
							THEN 'Assemble'
						ELSE 'Disassemble'
						END
					) AS Assemble
				,PS.blnCompleted AS IsCompleted
				,PS.decManQty AS ManQty
				,PS.strAsmDocID AS AsmDocID
				,PS.dteCompletedDate AS CompletedDate
				,(PS.decReqQty - PS.decManQty) AS Variance
			FROM tblProductionSchedule PS
			INNER JOIN tblInv INV ON INV.strPartNumber = PS.strPartNumber
			WHERE (
					(
						PS.dteStartDate BETWEEN @SQStart
							AND @SQFinish
						)
					OR (
						PS.dteDueDate BETWEEN @SQStart
							AND @SQFinish
						)
					)
		END

		IF (@FilterType = 0)
		BEGIN
			--SELECT PS.strProdNumber, PS.strPartNumber, INV.strDesc, PS.decReqQty AS intReqQty, PS.strLocName, PS.dteStartDate, PS.dteDueDate, (CASE WHEN PS.blnDisassemble = 0 THEN 'Assemble' ELSE 'Disassemble' END) AS strAssemble, PS.blnCompleted, PS.decManQty AS intManQty, PS.strAsmDocID, PS.dteCompletedDate, (PS.decReqQty - PS.decManQty) AS intVariance 
			SELECT PS.strProdNumber AS ProdNumber
				,PS.strPartNumber AS PartNumber
				,INV.strDesc AS [Desc]
				,PS.decReqQty AS ReqQty
				,PS.strLocName AS LocName
				,PS.dteStartDate AS StartDate
				,PS.dteDueDate AS DueDate
				,(
					CASE 
						WHEN PS.blnDisassemble = 0
							THEN 'Assemble'
						ELSE 'Disassemble'
						END
					) AS Assemble
				,PS.blnCompleted AS IsCompleted
				,PS.decManQty AS ManQty
				,PS.strAsmDocID AS AsmDocID
				,PS.dteCompletedDate AS CompletedDate
				,(PS.decReqQty - PS.decManQty) AS Variance
			FROM tblProductionSchedule PS
			INNER JOIN tblInv INV ON INV.strPartNumber = PS.strPartNumber
			WHERE (
					(
						PS.dteStartDate BETWEEN @SQStart
							AND @SQFinish
						)
					OR (
						PS.dteDueDate BETWEEN @SQStart
							AND @SQFinish
						)
					)
				AND PS.blnCompleted = 0
		END
		ELSE IF (@FilterType = 1)
		BEGIN
			SELECT PS.strProdNumber AS ProdNumber
				,PS.strPartNumber AS PartNumber
				,INV.strDesc AS [Desc]
				,PS.decReqQty AS ReqQty
				,PS.strLocName AS LocName
				,PS.dteStartDate AS StartDate
				,PS.dteDueDate AS DueDate
				,(
					CASE 
						WHEN PS.blnDisassemble = 0
							THEN 'Assemble'
						ELSE 'Disassemble'
						END
					) AS Assemble
				,PS.blnCompleted AS IsCompleted
				,PS.decManQty AS ManQty
				,PS.strAsmDocID AS AsmDocID
				,PS.dteCompletedDate AS CompletedDate
				,(PS.decReqQty - PS.decManQty) AS Variance
			FROM tblProductionSchedule PS
			INNER JOIN tblInv INV ON INV.strPartNumber = PS.strPartNumber
			WHERE (
					(
						PS.dteStartDate BETWEEN @SQStart
							AND @SQFinish
						)
					OR (
						PS.dteDueDate BETWEEN @SQStart
							AND @SQFinish
						)
					)
				AND PS.blnCompleted = 0
				AND PS.dteDueDate < GETDATE()
		END
		ELSE IF (@FilterType = 2)
		BEGIN
			SELECT PS.strProdNumber AS ProdNumber
				,PS.strPartNumber AS PartNumber
				,INV.strDesc AS [Desc]
				,PS.decReqQty AS ReqQty
				,PS.strLocName AS LocName
				,PS.dteStartDate AS StartDate
				,PS.dteDueDate AS DueDate
				,(
					CASE 
						WHEN PS.blnDisassemble = 0
							THEN 'Assemble'
						ELSE 'Disassemble'
						END
					) AS Assemble
				,PS.blnCompleted AS IsCompleted
				,PS.decManQty AS ManQty
				,PS.strAsmDocID AS AsmDocID
				,PS.dteCompletedDate AS CompletedDate
				,(PS.decReqQty - PS.decManQty) AS Variance
			FROM tblProductionSchedule PS
			INNER JOIN tblInv INV ON INV.strPartNumber = PS.strPartNumber
			WHERE (
					(
						PS.dteStartDate BETWEEN @SQStart
							AND @SQFinish
						)
					OR (
						PS.dteDueDate BETWEEN @SQStart
							AND @SQFinish
						)
					)
				AND PS.blnCompleted = 1
		END
	END
END
GO

---------------------------------------------------

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[LoadRptPendingPayApprovalData]
(
@BPToolsMode bit = 0,
@SQUserName varchar(100)
)
AS
DECLARE @Query nvarchar(max) = ''
BEGIN
SET @Query = 'SELECT DISTINCT Z.strVendName, Z.strVendDesc FROM (SELECT tblVendPayApproval.strVendName, tblVendors.strVendDesc, tblVendors.strVendCategory FROM tblVendPayApproval INNER JOIN tblVendors ON tblVendPayApproval.strVendName = tblVendors.strVendName INNER JOIN tblVendPayApprovalDT ON tblVendPayApprovalDT.lngVendPayApprovalID = tblVendPayApproval.lngVendPayApprovalID AND tblVendPayApprovalDT.bitPaid = 0 GROUP BY tblVendPayApproval.strVendName, tblVendors.strVendDesc, tblVendPayApproval.lngVendPayApprovalID, tblVendors.strVendCategory HAVING SUM(decOrgAmount) <> 0 UNION ALL SELECT tblVendPayApproval.strVendName, tblVendors.strVendDesc, tblVendors.strVendCategory FROM tblVendPayApproval INNER JOIN tblVendors ON tblVendPayApproval.strVendName = tblVendors.strVendName LEFT JOIN tblVendPayApprovalDT ON tblVendPayApprovalDT.lngVendPayApprovalID = tblVendPayApproval.lngVendPayApprovalID AND tblVendPayApprovalDT.bitPaid = 0 WHERE decPrepayment <> 0 AND bitPrepaymentUsed = 0 GROUP BY tblVendPayApproval.strVendName, tblVendors.strVendDesc, tblVendPayApproval.lngVendPayApprovalID, tblVendors.strVendCategory HAVING SUM(decOrgAmount) <> 0) Z'
IF(@BPToolsMode = 0)
BEGIN
SET @Query += ' WHERE strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = '''+@SQUserName+'''))'
END
EXEC sp_Executesql @Query
END
GO

/****** Object:  StoredProcedure [dbo].[LoadCustomers]    Script Date: 19-01-2022 10:00:43 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[LoadRptPendingPO]
(
@BPToolsMode bit,
@SQUserName varchar(100)
)
AS
BEGIN
IF(@BPToolsMode = 0)
BEGIN
SELECT DISTINCT tblOrderDocP.strVendName
,strVendDesc
FROM tblOrderDocP
INNER JOIN tblVendors ON tblVendors.strVendName = tblOrderDocP.strVendName
WHERE (intDocType = 1)
AND (bitCleared = 0)
AND strVendCategory IN (
SELECT tblVendorCat.strVendCategory
FROM tblVendorCat
LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
WHERE ISNULL((
SELECT COUNT(tblVendorCatSec.strVendCategory)
FROM tblVendorCatSec
WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
), 0) = 0
OR (
ISNULL((
SELECT COUNT(tblVendorCatSec.strVendCategory)
FROM tblVendorCatSec
WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
), 0) > 0
AND tblVendorCatSec.strUserName = @SQUserName
)
)
ORDER BY tblOrderDocP.strVendName
END
END

GO

/****** Object:  StoredProcedure [dbo].[LoadRptPrject]    Script Date: 28-01-2022 17:30:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[LoadRptPrject] (
	@IsSearchText BIT
	,@SQSearchBy VARCHAR(100)
	,@IsInactive BIT
	)
AS
BEGIN
	IF (@IsSearchText = 1)
	BEGIN
		IF (@IsInactive = 1)
		BEGIN
			SELECT strProjNumber AS ProjNumber
				,strProjName AS ProjName
			FROM tblProjects
			WHERE (
					(@SQSearchBy = '')
					OR (strProjNumber LIKE '%' + @SQSearchBy + '%')
					OR (strProjName LIKE '%' + @SQSearchBy + '%')
					)
			ORDER BY strProjNumber
		END
		ELSE
		BEGIN
			SELECT strProjNumber AS ProjNumber
				,strProjName AS ProjName
			FROM tblProjects
			WHERE (
					(@SQSearchBy = '')
					OR (strProjNumber LIKE '%' + @SQSearchBy + '%')
					OR (strProjName LIKE '%' + @SQSearchBy + '%')
					)
				AND (intStatus < 20)
			ORDER BY strProjNumber;
		END
	END
	ELSE
	BEGIN
		IF (@IsInactive = 1)
		BEGIN
			SELECT strProjNumber AS ProjNumber
				,strProjName AS ProjName
			FROM tblProjects
			ORDER BY strProjNumber
		END
		ELSE
		BEGIN
			SELECT strProjNumber AS ProjNumber
				,strProjName AS ProjName
			FROM tblProjects
			WHERE intStatus < 20
			ORDER BY strProjNumber
		END
	END
END
GO


/****** Object:  StoredProcedure [dbo].[LoadJobTitle]    Script Date: 22-12-2021 12:52:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--exec GetRptInvCountStockReportData "'IAJ-00000005','IIR-000000001','IAJ-00000004','IAJ-00000003','IAJ-00000002','IAJ-00000001'"
--exec GetRptInvCountStockReportData '12,11'
create procedure [dbo].[LoadSegments1]
(
@SQSearchBy nvarchar(max) = '',
@SQUserName varchar(100) = '',
@IsInactiveSeg1Checked bit,
@IsSearchChecked bit,
@BPToolsMode bit,
@IsBuyoutItemsChecked bit,
@IsAllItemsChecked bit
)
AS
BEGIN
IF(@IsInactiveSeg1Checked = 0)
begin
IF(@IsBuyoutItemsChecked = 1)
begin
SELECT DISTINCT strItemSegment1 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment1,'') <> '' AND intType = 11 ORDER BY strItemSegment1
end
ELSE
begin
IF(@IsAllItemsChecked = 1)
begin
SELECT DISTINCT strItemSegment1 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment1,'') <> ''  ORDER BY strItemSegment1
end
ELSE
begin
SELECT DISTINCT strItemSegment1 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment1,'') <> '' AND intType <> 11 ORDER BY strItemSegment1
end
end
end
ELSE
begin
IF(@IsBuyoutItemsChecked = 1)
begin
SELECT DISTINCT strItemSegment1 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment1,'') <> '' AND intType = 11 ORDER BY strItemSegment1
end
ELSE
begin
IF(@IsAllItemsChecked = 1)
begin
SELECT DISTINCT strItemSegment1 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment1,'') <> '' ORDER BY strItemSegment1
end
ELSE
begin
SELECT DISTINCT strItemSegment1 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment1,'') <> '' AND intType <> 11 ORDER BY strItemSegment1
end
end
end
END

GO

/****** Object:  StoredProcedure [dbo].[LoadJobTitle]    Script Date: 22-12-2021 12:52:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

create procedure [dbo].[LoadSegments2]
(
@SQSearchBy nvarchar(max) = '',
@SQUserName varchar(100) = '',
@IsInactiveSeg2Checked bit,
@IsSearchChecked bit,
@BPToolsMode bit,
@IsBuyoutItemsChecked bit,
@IsAllItemsChecked bit
)
AS
BEGIN
IF(@IsInactiveSeg2Checked = 0)
begin
IF(@IsBuyoutItemsChecked = 1)
begin
SELECT DISTINCT strItemSegment2 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment2,'') <> '' AND intType = 11 ORDER BY strItemSegment2
end
ELSE
begin
IF(@IsAllItemsChecked = 1)
begin
SELECT DISTINCT strItemSegment2 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment2,'') <> '' ORDER BY strItemSegment2
end
ELSE
begin
SELECT DISTINCT strItemSegment2 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment2,'') <> '' AND intType <> 11 ORDER BY strItemSegment2
end
end
end
ELSE
begin
IF(@IsBuyoutItemsChecked = 1)
begin
SELECT DISTINCT strItemSegment2 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment2,'') <> '' AND intType = 11 ORDER BY strItemSegment2
end
ELSE
begin
IF(@IsAllItemsChecked = 1)
begin
SELECT DISTINCT strItemSegment2 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment2,'') <> '' ORDER BY strItemSegment2
end
ELSE
begin
SELECT DISTINCT strItemSegment2 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment2,'') <> '' AND intType <> 11 ORDER BY strItemSegment2
end
end
end
END

GO

/****** Object:  StoredProcedure [dbo].[LoadJobTitle]    Script Date: 22-12-2021 12:52:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

create procedure [dbo].[LoadSegments3]
(
@SQSearchBy nvarchar(max) = '',
@SQUserName varchar(100) = '',
@IsInactiveSeg3Checked bit,
@IsSearchChecked bit,
@BPToolsMode bit,
@IsBuyoutItemsChecked bit,
@IsAllItemsChecked bit
)
AS
BEGIN
IF(@IsInactiveSeg3Checked = 0)
begin
IF(@IsBuyoutItemsChecked = 1)
begin
SELECT DISTINCT strItemSegment3 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment3,'') <> '' AND intType = 11 ORDER BY strItemSegment3
end
ELSE
begin
IF(@IsAllItemsChecked = 1)
begin
SELECT DISTINCT strItemSegment3 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment3,'') <> '' ORDER BY strItemSegment3
end
ELSE
begin
SELECT DISTINCT strItemSegment3 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment3,'') <> '' AND intType <> 11 ORDER BY strItemSegment3
end
end
end
ELSE
begin
IF(@IsBuyoutItemsChecked = 1)
begin
SELECT DISTINCT strItemSegment3 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment3,'') <> '' AND intType = 11 ORDER BY strItemSegment3
end
ELSE
begin
IF(@IsAllItemsChecked = 1)
begin
SELECT DISTINCT strItemSegment3 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment3,'') <> '' ORDER BY strItemSegment3
end
ELSE
begin
SELECT DISTINCT strItemSegment3 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment3,'') <> '' AND intType <> 11 ORDER BY strItemSegment3
end
end
end
END

GO

/****** Object:  StoredProcedure [dbo].[LoadJobTitle]    Script Date: 22-12-2021 12:52:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

create procedure [dbo].[LoadSegments4]
(
@SQSearchBy nvarchar(max) = '',
@SQUserName varchar(100) = '',
@IsInactiveSeg4Checked bit,
@IsSearchChecked bit,
@BPToolsMode bit,
@IsBuyoutItemsChecked bit,
@IsAllItemsChecked bit
)
AS
BEGIN
IF(@IsInactiveSeg4Checked = 0)
begin
IF(@IsBuyoutItemsChecked = 1)
begin
SELECT DISTINCT strItemSegment4 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment4,'') <> '' AND intType = 11 ORDER BY strItemSegment4
end
ELSE
begin
IF(@IsAllItemsChecked = 1)
begin
SELECT DISTINCT strItemSegment4 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment4,'') <> '' ORDER BY strItemSegment4
end
ELSE
begin
SELECT DISTINCT strItemSegment4 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment4,'') <> '' AND intType <> 11 ORDER BY strItemSegment4
end
end
end
ELSE
begin
IF(@IsBuyoutItemsChecked = 1)
begin
SELECT DISTINCT strItemSegment4 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment4,'') <> '' AND intType = 11 ORDER BY strItemSegment4
end
ELSE
begin
IF(@IsAllItemsChecked = 1)
begin
SELECT DISTINCT strItemSegment4 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment4,'') <> '' ORDER BY strItemSegment4
end
ELSE
begin
SELECT DISTINCT strItemSegment4 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment4,'') <> '' AND intType <> 11 ORDER BY strItemSegment4
end
end
end
END

GO

/****** Object:  StoredProcedure [dbo].[LoadJobTitle]    Script Date: 22-12-2021 12:52:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

create procedure [dbo].[LoadSegments]
(
@SQSearchBy nvarchar(max) = '',
@SQUserName varchar(100) = '',
@IsInactiveChecked bit,
@IsSearchChecked bit,
@BPToolsMode bit
)
AS
BEGIN
IF(@IsSearchChecked = 1)
begin
IF(LEN(@SQSearchBy) > 2)
begin
IF(@IsInactiveChecked = 1)
begin
SELECT strCustName, strCustDesc FROM tblCustomers WHERE (strCustName LIKE @SQSearchBy OR strCustDesc LIKE @SQSearchBy)
ORDER BY strCustName
end
ELSE
begin
SELECT strCustName, strCustDesc FROM tblCustomers WHERE bitInactive = 0 AND (strCustName LIKE @SQSearchBy OR strCustDesc LIKE @SQSearchBy)
ORDER BY strCustName
end
end
end
ELSE
begin
IF(@IsInactiveChecked = 1)
begin
SELECT strCustName, strCustDesc FROM tblCustomers
ORDER BY strCustName
end
ELSE
begin
SELECT strCustName, strCustDesc FROM tblCustomers WHERE bitInactive = 0
ORDER BY strCustName
end
end
IF(@BPToolsMode = 0)
begin
SELECT strCustName, strCustDesc FROM tblCustomers
where strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName))
ORDER BY strCustName
end
END

GO

/****** Object:  StoredProcedure [dbo].[LoadJobTitle]    Script Date: 22-12-2021 12:52:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

create procedure [dbo].[LoadStockCounts]
(
@SQStartDate datetime = '',
@SQEndDate datetime = '',
@SQModule int,
@SQLocName varchar(100),
@IsStockCountVariancesChecked bit,
@IsBothChecked bit,
@IsInventoryAdjustmentsChecked bit
)
AS
BEGIN
IF(@IsStockCountVariancesChecked = 1)
begin
SELECT SC.lngInvTrackID as InvTrackID, SC.strSource as [Source], SC.dteJournalDate as [Date], SC.strComment as Comment FROM (SELECT lngInvTrackID,  strSource, dteJournalDate, strComment, ISNULL((SELECT TOP 1 strLocName FROM tblInvTrackingDT WHERE tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID),'') AS strLocName 
FROM tblInvTracking WHERE intModule = @SQModule AND strSource = 'Stock Count') SC WHERE SC.strLocName = @SQLocName AND SC.dteJournalDate >= @SQStartDate AND SC.dteJournalDate <= @SQEndDate ORDER BY SC.dteJournalDate DESC, SC.lngInvTrackID DESC
end
ELSE IF(@IsInventoryAdjustmentsChecked = 1)
begin
SELECT SC.lngInvTrackID as InvTrackID, SC.strSource as [Source], SC.dteJournalDate as [Date], SC.strComment as Comment FROM (SELECT lngInvTrackID,  strSource, dteJournalDate, strComment, ISNULL((SELECT TOP 1 strLocName FROM tblInvTrackingDT WHERE tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID),'') AS strLocName 
--SELECT SC.lngInvTrackID, SC.strSource, SC.dteJournalDate, SC.strComment FROM (SELECT lngInvTrackID,  strSource, dteJournalDate, strComment, ISNULL((SELECT TOP 1 strLocName FROM tblInvTrackingDT WHERE tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID),'') AS strLocName 
FROM tblInvTracking WHERE intModule = @SQModule AND strSource <> 'Stock Count') SC WHERE SC.strLocName = @SQLocName AND SC.dteJournalDate >= @SQStartDate AND SC.dteJournalDate <= @SQEndDate ORDER BY SC.dteJournalDate DESC, SC.lngInvTrackID DESC
end
ELSE
begin
SELECT SC.lngInvTrackID as InvTrackID, SC.strSource as [Source], SC.dteJournalDate as [Date], SC.strComment as Comment FROM (SELECT lngInvTrackID,  strSource, dteJournalDate, strComment, ISNULL((SELECT TOP 1 strLocName FROM tblInvTrackingDT WHERE tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID),'') AS strLocName 
--SELECT SC.lngInvTrackID, SC.strSource, SC.dteJournalDate, SC.strComment FROM (SELECT lngInvTrackID,  strSource, dteJournalDate, strComment, ISNULL((SELECT TOP 1 strLocName FROM tblInvTrackingDT WHERE tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID),'') AS strLocName 
FROM tblInvTracking WHERE intModule = @SQModule) SC WHERE SC.strLocName = @SQLocName AND SC.dteJournalDate >= @SQStartDate AND SC.dteJournalDate <= @SQEndDate ORDER BY SC.dteJournalDate DESC, SC.lngInvTrackID DESC
end
END

GO
----------------------------------------------------

create procedure [dbo].[LoadTermData]
AS
BEGIN
SELECT strTerm as Term FROM tblTerms ORDER BY strTerm
END

GO

/****** Object:  StoredProcedure [dbo].[LoadUsers]    Script Date: 02-12-2021 19:26:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[LoadUsers] @IsCheckedSearch BIT
	,@SearchTextUser NVARCHAR(max) = ''
AS
BEGIN
	IF (@IsCheckedSearch = 1)
	BEGIN
		SELECT DISTINCT *
		FROM (
			SELECT DISTINCT tblOrderDoc.strUserName AS UserName
			FROM tblOrderDoc
			WHERE (
					tblOrderDoc.intDocType = 1
					OR tblOrderDoc.intDocType = 2
					)
				AND (tblOrderDoc.bitCleared = 1)
			
			UNION ALL
			
			SELECT DISTINCT tblOrderDocQ.strUserName AS UserName
			FROM tblOrderDocQ
			WHERE (tblOrderDocQ.bitCleared = 1)
			) z
		WHERE UserName LIKE @SearchTextUser
	END
	ELSE
	BEGIN
		SELECT DISTINCT *
		FROM (
			SELECT DISTINCT tblOrderDoc.strUserName AS UserName
			FROM tblOrderDoc
			WHERE (
					tblOrderDoc.intDocType = 1
					OR tblOrderDoc.intDocType = 2
					)
				AND (tblOrderDoc.bitCleared = 1)
			
			UNION ALL
			
			SELECT DISTINCT tblOrderDocQ.strUserName AS UserName
			FROM tblOrderDocQ
			WHERE (tblOrderDocQ.bitCleared = 1)
			) z
	END
END
GO

/****** Object:  StoredProcedure [dbo].[LoadVendorData]    Script Date: 11-02-2022 19:27:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[LoadVendorData]
(
@IsFilterByVendorChecked bit,
@IsDeartmentTypeChecked bit,
@IsCategoryTypeChecked bit,
@IsSearch bit,
@SQSearchBy varchar(100),
@BPToolMode bit,
@SQUserName varchar(50)
)
AS
DECLARE @Query nvarchar(max) = ''
BEGIN
IF(@IsFilterByVendorChecked = 1)
BEGIN
IF(@IsSearch = 1)
BEGIN

SET @Query = 'SELECT strVendName as VendorName, strVendDesc as [Description] FROM tblVendors WHERE (strVendName LIKE ''%'+@SQSearchBy+'%'' OR strVendDesc LIKE ''%'+@SQSearchBy+'%'')'

END
ELSE
BEGIN
SET @Query = 'SELECT strVendName as VendorName, strVendDesc as [Description] FROM tblVendors'
IF(@BPToolMode = 0)
BEGIN	
SET @Query += ' WHERE strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = '''+@SQUserName+'''))'
END
SET @Query += ' ORDER BY strVendName'
END
END
ELSE IF(@IsCategoryTypeChecked = 1)
BEGIN
IF(@IsSearch = 1)
BEGIN

SET @Query = 'SELECT strVendCategory as VendCategory, strDesc as [Description] FROM tblVendorCat WHERE strVendCategory LIKE ''%'+@SQSearchBy+'%'' OR strDesc LIKE ''%'+@SQSearchBy+'%'''

END
ELSE
BEGIN
SET @Query = 'SELECT strVendCategory as VendCategory, strDesc as [Description] FROM tblVendorCat'
IF(@BPToolMode = 0)
BEGIN	
SET @Query += ' WHERE strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = '''+@SQUserName+'''))'
END
SET @Query += ' ORDER BY strVendCategory'
END
END
ELSE IF(@IsDeartmentTypeChecked = 1)
BEGIN
IF(@IsSearch = 1)
BEGIN

SET @Query = 'SELECT intDept as Department, strDesc as [Description] FROM tblDepartments WHERE (intDept LIKE ''%'+@SQSearchBy+'%'') OR (strDesc LIKE ''%'+@SQSearchBy+'%'') ORDER BY intDept'

END
ELSE
BEGIN
SET @Query = 'SELECT intDept as Department, strDesc as [Description] FROM tblDepartments ORDER BY intDept'
END
END
EXEC sp_sqlexec @Query
END
GO

/****** Object:  StoredProcedure [dbo].[RptInvSegMovementGetReportData]    Script Date: 31-12-2021 16:39:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[RptInvSegMovementGetReportData] (
	--@IsOptSummaryChecked bit,
	--@IsOptDetailChecked bit,
	@IsSegment1 BIT
	,@IsChkInactiveSeg1 BIT
	,@SQItemSegment1 NVARCHAR(max)
	,@IsSegment2 BIT
	,@IsChkInactiveSeg2 BIT
	,@SQItemSegment2 NVARCHAR(max)
	,@IsSegment3 BIT
	,@IsChkInactiveSeg3 BIT
	,@SQItemSegment3 NVARCHAR(max)
	,@IsSegment4 BIT
	,@IsChkInactiveSeg4 BIT
	,@SQItemSegment4 NVARCHAR(max)
	,@IsCustSelect BIT
	,@IsChkInactive BIT
	,@SQCustName NVARCHAR(max)
	,@SQUserName NVARCHAR(max)
	,@IsOptBuyoutItems BIT
	,@IsOptAllItems BIT
	,@SQStart VARCHAR(19)
	,@SQEnd VARCHAR(19)
	,@blnBPToolsMode BIT
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)

	SET @Query = 'SELECT tblInvTrackingDT.strPartNumber, tblInvTrackingDT.decQty, tblInvTracking.intModule, tblInvTracking.dteJournalDate, tblInvTrackingDT.decOnHand, tblInvTrackingDT.decNewOnHand, ISNULL(tblCustomers.strCustDesc, ''''), tblInvTracking.strSource AS OderbyCol FROM tblInvTracking INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID INNER JOIN tblInv ON tblInv.strPartNumber = tblInvTrackingDT.strPartNumber LEFT JOIN tblCustomers ON tblCustomers.strCustName = tblInvTracking.strComment AND tblInvTracking.intModule IN (2, 8)'

	IF (@IsCustSelect = 1)
	begin
		SET @Query += ' AND tblCustomers.strCustName IN (SELECT strCustName FROM tblCustomers WHERE (tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCustName + ''', '',''))))'

		IF (@blnBPToolsMode = 0)
		begin
			SET @Query += ' AND tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''' ))'
			end
		end
	ELSE
	BEGIN
		IF (@IsChkInactive = 0)
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT strCustName FROM tblCustomers WHERE (bitInactive = 0)'
		ELSE
			SET @Query += ' AND tblCustomers.strCustName IN (SELECT strCustName FROM tblCustomers)'

		IF (@blnBPToolsMode = 0)
		BEGIN
			IF (@IsChkInactive = 0)
				SET @Query += ' AND '
			ELSE
				SET @Query += ' WHERE '

			SET @Query += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''' ))'
		END

		SET @Query += ')'
	END

	IF (@IsSegment1 = 1)
	BEGIN
		SET @Query += ' INNER JOIN tblInv T1 ON tblInvTrackingDT.strPartNumber = T1.strPartNumber AND T1.strItemSegment1 IN (SELECT strItemSegment1 FROM tblInv WHERE (T1.strItemSegment1 IN (SELECT * FROM fnSplitStringAsTable(''' + @SQItemSegment1 + ''', '',''))))'

		IF (@IsOptBuyoutItems = 1)
			SET @Query += 'AND T1.intType = 11'
		ELSE
		BEGIN
			IF (@IsOptAllItems = 0)
				SET @Query += ' AND T1.intType <> 11'
		END
	END
	ELSE
	BEGIN
		IF (@IsChkInactiveSeg1 = 0)
			SET @Query += ' INNER JOIN tblInv T1 ON tblInvTrackingDT.strPartNumber = T1.strPartNumber AND T1.strItemSegment1 IN (SELECT strItemSegment1 FROM tblInv WHERE (bitInactive = 0))'
		ELSE
			SET @Query += ' INNER JOIN tblInv T1 ON tblInvTrackingDT.strPartNumber = T1.strPartNumber AND T1.strItemSegment1 IN (SELECT strItemSegment1 FROM tblInv)'

		IF (@IsOptBuyoutItems = 1)
			SET @Query += 'AND T1.intType = 11'
		ELSE
		BEGIN
			IF (@IsOptAllItems = 0)
				SET @Query += ' AND T1.intType <> 11'
		END
	END

	IF (@IsSegment2 = 1)
	BEGIN
		SET @Query += ' INNER JOIN tblInv T2 ON tblInvTrackingDT.strPartNumber = T2.strPartNumber AND T2.strItemSegment2 IN (SELECT strItemSegment2 FROM tblInv WHERE (T2.strItemSegment2 IN (SELECT * FROM fnSplitStringAsTable(''' + @SQItemSegment2 + ''', '',''))))'

		IF (@IsOptBuyoutItems = 1)
			SET @Query += 'AND T2.intType = 11'
		ELSE
		BEGIN
			IF (@IsOptAllItems = 0)
				SET @Query += ' AND T2.intType <> 11'
		END
	END
	ELSE
	BEGIN
		IF (@IsChkInactiveSeg2 = 0)
			SET @Query += ' INNER JOIN tblInv T2 ON tblInvTrackingDT.strPartNumber = T2.strPartNumber AND T2.strItemSegment2 IN (SELECT strItemSegment2 FROM tblInv WHERE (bitInactive = 0))'
		ELSE
			SET @Query += ' INNER JOIN tblInv T2 ON tblInvTrackingDT.strPartNumber = T2.strPartNumber AND T2.strItemSegment2 IN (SELECT strItemSegment2 FROM tblInv)'

		IF (@IsOptBuyoutItems = 1)
			SET @Query += 'AND T2.intType = 11'
		ELSE
		BEGIN
			IF (@IsOptAllItems = 0)
				SET @Query += ' AND T2.intType <> 11'
		END
	END

	IF (@IsSegment3 = 1)
	BEGIN
		SET @Query += ' INNER JOIN tblInv T3 ON tblInvTrackingDT.strPartNumber = T3.strPartNumber AND T3.strItemSegment3 IN (SELECT strItemSegment3 FROM tblInv WHERE (T3.strItemSegment3 IN (SELECT * FROM fnSplitStringAsTable(''' + @SQItemSegment3 + ''', '',''))))'

		IF (@IsOptBuyoutItems = 1)
			SET @Query += 'AND T3.intType = 11'
		ELSE
		BEGIN
			IF (@IsOptAllItems = 0)
				SET @Query += ' AND T3.intType <> 11'
		END
	END
	ELSE
	BEGIN
		IF (@IsChkInactiveSeg3 = 0)
			SET @Query += ' INNER JOIN tblInv T3 ON tblInvTrackingDT.strPartNumber = T3.strPartNumber AND T3.strItemSegment3 IN (SELECT strItemSegment3 FROM tblInv WHERE (bitInactive = 0))'
		ELSE
			SET @Query += ' INNER JOIN tblInv T3 ON tblInvTrackingDT.strPartNumber = T3.strPartNumber AND T3.strItemSegment3 IN (SELECT strItemSegment3 FROM tblInv)'

		IF (@IsOptBuyoutItems = 1)
			SET @Query += 'AND T3.intType = 11'
		ELSE
		BEGIN
			IF (@IsOptAllItems = 0)
				SET @Query += ' AND T3.intType <> 11'
		END
	END

	IF (@IsSegment4 = 1)
	BEGIN
		SET @Query += ' INNER JOIN tblInv T4 ON tblInvTrackingDT.strPartNumber = T4.strPartNumber AND T4.strItemSegment4 IN (SELECT strItemSegment4 FROM tblInv WHERE (T3.strItemSegment4 IN (SELECT * FROM fnSplitStringAsTable(''' + @SQItemSegment4 + ''', '',''))))'

		IF (@IsOptBuyoutItems = 1)
			SET @Query += 'AND T4.intType = 11'
		ELSE
		BEGIN
			IF (@IsOptAllItems = 0)
				SET @Query += ' AND T4.intType <> 11'
		END
	END
	ELSE
	BEGIN
		IF (@IsChkInactiveSeg4 = 0)
			SET @Query += ' INNER JOIN tblInv T4 ON tblInvTrackingDT.strPartNumber = T4.strPartNumber AND T4.strItemSegment4 IN (SELECT strItemSegment4 FROM tblInv WHERE (bitInactive = 0))'
		ELSE
			SET @Query += ' INNER JOIN tblInv T4 ON tblInvTrackingDT.strPartNumber = T4.strPartNumber AND T4.strItemSegment4 IN (SELECT strItemSegment4 FROM tblInv)'

		IF (@IsOptBuyoutItems = 1)
			SET @Query += 'AND T4.intType = 11'
		ELSE
		BEGIN
			IF (@IsOptAllItems = 0)
				SET @Query += ' AND T4.intType <> 11'
		END
	END

	

	SET @Query += ' WHERE (tblInvTracking.dteJournalDate BETWEEN '''+@SQStart+''' AND '''+@SQEnd+''') AND tblInv.bitItemNumConvUsed = 1 ORDER BY tblInvTrackingDT.strPartNumber'
	EXEC sp_Executesql @Query

	PRINT @Query
END
GO

/****** Object:  StoredProcedure [dbo].[LoadCustomers]    Script Date: 12-04-2022 17:30:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[UpdateTblCentersT]
(
@SQstrTemplate VARCHAR(100),
@SQstrDesc varchar(100),
@SQbitInactive bit,
@SQOLDTemplate varchar(100)
)
AS
BEGIN
UPDATE tblCentersT SET strTemplate = @SQstrTemplate,strDesc = @SQstrDesc,bitInactive = @SQbitInactive WHERE strTemplate = @SQOLDTemplate
END

GO

/****** Object:  StoredProcedure [dbo].[VendorReconWorksheet_SelectAll]    Script Date: 12-04-2022 10:59:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[VendorReconWorksheet_SelectAll]
(
@dteReconDate varchar(19),
@bitIsActive bit = 0
)
AS
BEGIN
DECLARE @cols AS NVARCHAR(MAX), @colsDef AS NVARCHAR(MAX),@colsSum AS NVARCHAR(MAX),
@query  AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(strName) 
from tblVendors
cross join tblVendorReconReasons
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)') 
,1,1,'')
select @colsDef = STUFF((SELECT distinct ',' + QUOTENAME(strName) +'=ISNULL(' + QUOTENAME(strName)+ ',0)' 
from tblVendors
cross join tblVendorReconReasons
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)') 
,1,1,'')
select @colsSum = STUFF((SELECT distinct '+ ISNULL(' + QUOTENAME(strName)+ ',0)' 
from tblVendors
cross join tblVendorReconReasons
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)') 
,1,1,'')
set @query = 'SELECT strVendName as VendName,strVendDesc as VendDesc,decBalDue as BalDue,decStatementBal =ISNULL(decStatementBalance,0) ,decDiff =decBalDue - ISNULL(decStatementBalance,0),
decReconcilied = '+@colsSum+',decVariance = (decBalDue - ISNULL(decStatementBalance,0)) - ( '+@colsSum+'),blnIsReconciled=CASE WHEN lngVenReconID IS NULL THEN 0 ELSE 1 END, strCurrency as Currency,' 
+ @colsDef + '
from 
(
select strName ,tblVendors.strVendName,strVendDesc, tblVendorRecon.lngVenReconID,
val = ISNULL(Case When decDebit > 0 then decDebit Else decCredit*-1 End,0),Isnull(tblBal.decBalDue,0) AS decBalDue,decStatementBalance,ISNULL(tblBal.strCurrency,tblVendors.strCurrency) AS strCurrency
from tblVendors
LEFT JOIN (SELECT ISNULL(SUM(CASE WHEN tblVendTransDT.bitIsForeign = 1 Then tblVendTransDT.decAmountF ELSE tblVendTransDT.decAmount END),0) AS decBalDue,strVendName,strCurrency FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID 
WHERE tblVendTransDT.bitReversed = 0 AND tblVendTransDT.dteJournalDate <= '''+CONVERT(Varchar(20),@dteReconDate)+''' Group BY strVendName,strCurrency) as tblBal ON tblVendors.strVendName = tblBal.strVendName
cross join tblVendorReconReasons
LEFT JOIN tblVendorRecon ON tblVendors.strVendName = tblVendorRecon.strVendorNo AND tblVendorRecon.dteReconDate = '''+CONVERT(Varchar(20),@dteReconDate)+'''
LEFT JOIN tblVendorReconDT ON tblVendorRecon.lngVenReconID = tblVendorReconDT.lngVenReconID AND tblVendorReconReasons.lngID = tblVendorReconDT.lngReconReason
WHERE tblVendors.bitInactive IN (0,'+ CONVERT(varchar(2),@bitIsActive) +')
) x
pivot 
(
SUM(val)
for strName in (' + @cols + ')
) p '
EXEC(@query)
END
GO

/****** Object:  StoredProcedure [dbo].[GetMinMaxDate]    Script Date: 30-11-2021 16:56:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetMinMaxDate]
AS
BEGIN
SELECT MIN(dteUpdatedDate) as mindate, MAX(dteUpdatedDate) as maxdate FROM tblInvPriceTracking 
END

GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetAccountTypeListOfString]
as
Begin
SELECT strAcctType  FROM tblAccountType
End
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetAccountClassList]
as
Begin
SELECT strCustomLabel FROM tblAccountClass
End
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetAccountsDataForYear](
@IsprevousYear as bit,
@IsInactive bit=0
)
AS
BEGIN
IF(@IsprevousYear=0)
BEGIN
IF(@IsInactive = 1)
BEGIN
SELECT 
intGLNumber as GLNumber
,strDesc as [Desc]
,intGroupCode as GroupCode
,decBalance as Balance
,intAccType as AccType
,intAccClass as AccClass
,strCurrency as Currency
,decBalanceF as  BalanceF
,tblAccountType.strAcctType as AcctType
,tblAccountClass.strCustomLabel as CustomLabel
,bitInactive as IsInactive
FROM tblAccounts
INNER JOIN tblAccountType ON tblAccountType.intAcctTypeID = tblAccounts.intAccType
INNER JOIN tblAccountClass ON tblAccountClass.intAcctClassID = tblAccounts.intAccClass
ORDER BY intAccType,intAccClass,intGLNumber
END
IF(@IsInactive = 0)
BEGIN
SELECT 
intGLNumber as GLNumber
,strDesc as [Desc]
,intGroupCode as GroupCode
,decBalance as Balance
,intAccType as AccType
,intAccClass as AccClass
,strCurrency as Currency
,decBalanceF as  BalanceF
,tblAccountType.strAcctType as AcctType
,tblAccountClass.strCustomLabel as CustomLabel
,bitInactive as IsInactive
FROM tblAccounts
INNER JOIN tblAccountType ON tblAccountType.intAcctTypeID = tblAccounts.intAccType
INNER JOIN tblAccountClass ON tblAccountClass.intAcctClassID = tblAccounts.intAccClass
WHERE bitInactive = 0
ORDER BY intAccType,intAccClass,intGLNumber
END
END
ELSE
BEGIN
IF(@IsInactive = 1)
BEGIN
SELECT 
intGLNumber as GLNumber
,strDesc as [Desc]
,intGroupCode as GroupCode
,decBalance as Balance
,intAccType as AccType
,intAccClass as AccClass
,strCurrency as Currency
,decBalanceF as  BalanceF
,tblAccountType.strAcctType as AcctType
,tblAccountClass.strCustomLabel as CustomLabel
FROM tblAccountsLY
INNER JOIN tblAccountType ON tblAccountType.intAcctTypeID = tblAccountsLY.intAccType
INNER JOIN tblAccountClass ON tblAccountClass.intAcctClassID = tblAccountsLY.intAccClass
ORDER BY intAccType,intAccClass,intGLNumber
END
IF(@IsInactive = 0)
BEGIN
SELECT 
intGLNumber as GLNumber
,strDesc as [Desc]
,intGroupCode as GroupCode
,decBalance as Balance
,intAccType as AccType
,intAccClass as AccClass
,strCurrency as Currency
,decBalanceF as  BalanceF
,tblAccountType.strAcctType as AcctType
,tblAccountClass.strCustomLabel as CustomLabel
FROM tblAccountsLY
INNER JOIN tblAccountType ON tblAccountType.intAcctTypeID = tblAccountsLY.intAccType
INNER JOIN tblAccountClass ON tblAccountClass.intAcctClassID = tblAccountsLY.intAccClass
WHERE bitInactive = 0
ORDER BY intAccType,intAccClass,intGLNumber
END
END
END
GO

----------------------------------------------------
Create PROCEDURE [dbo].[InsertInAccounts]
(
@GLNumber as nvarchar(60),
@Desc as nvarchar(Max),
@AccountType as integer,
@GroupCode as integer,
@Class as integer,
@IsInactive as bit,
@IsBank as bit,
@IsRecon as bit,
@IsBudget as bit,
@Field1 as nvarchar(100),
@Field2 as nvarchar(100),
@Field3 as nvarchar(100),
@Field4 as nvarchar(100),
@Field5 as nvarchar(100),
@Field6 as nvarchar(100),
@IsAllowCenters as bit,
@CheqNumber as bigint,
@Currency as nvarchar(3),
@OldNumber as nvarchar(30),
@IsNew as bit
)
as
Begin
if(@IsNew =1)
INSERT INTO [dbo].[tblAccounts]
([intGLNumber]
,[strDesc]
,[intAccType]
,[intGroupCode]
,[intAccClass]
,[bitInactive]
,[decOpenBalance]
,[decBalance]
,[decLYOpenBalance]
,[decLYEndBalance]
,[bitBank]
,[bitRecon]
,[bitInventory]
,[bitBudget]
,[bitUsed]
,[bitUsedLY]
,[bitLinkREarnings]
,[bitLinkCEarnings]
,[bitLinkAP]
,[bitLinkPurDisc]
,[bitLinkAR]
,[bitLinkSalesDisc]
,[bitLinkAssCosts]
,[bitLinkAdjWriteOff]
,[bitIsLinkedAccount]
,[bitDefBank]
,[bitLinkDeposit]
,[bitLinkPrePay]
,[strField1]
,[strField2]
,[strField3]
,[strField4]
,[strField5]
,[strField6]
,[bitLinkExc]
,[bitAllowCenters]
,[intCheqNumber]
,[strCurrency]
,[decOpenBalanceF]
,[decBalanceF]
,[decLYOpenBalanceF]
,[decLYEndBalanceF]
,[bitLinkGRV]
,[bitLinkAddCost]
,[bitLinkDelAdvice]
,[bitLinkWIP]
,[bitLinkManStandardCost]
,[bitLinkWorkshopWIP]
,[bitLinkGoodsInTransit]
,[dteRowUpdated]
,[bitLinkARCustMast]
,[bitLinkDepositCustMast]
,[bitLinkAPVendMast]
,[bitLinkPrepayVendMast])
VALUES
(@GLNumber
,@Desc
,@AccountType
,@GroupCode
,@Class
,@IsInactive
,0
,0
,0
,0
,@IsBank
,@IsRecon
,0
,@IsBudget
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
,@Field1
,@Field2
,@Field3
,@Field4
,@Field5
,@Field6
,0
,@IsAllowCenters
,@CheqNumber
,@Currency
,0
,0
,0
,0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
,GETDATE()
,0
,0
,0
,0)
else
UPDATE tblAccounts
SET intGLNumber = @GLNumber
,intGroupCode = @GroupCode
,intAccClass = @Class
,strDesc = @Desc
,bitInactive = @IsInactive
,bitBudget = @IsBudget
,bitRecon = @IsRecon
,strField1 = @Field1
,strField2 = @Field2
,strField3 = @Field3
,strField4 = @Field4
,strField5 = @Field5
,strField6 = @Field6
,bitBank = @IsBank
,bitAllowCenters = @IsAllowCenters
,intCheqNumber = @CheqNumber
,strCurrency = @Currency
WHERE intGLNumber = @OldNumber
End
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateGLSegmentFormatSetupIsUsed]
as
Begin
UPDATE tblGLSegmentFormatSetup SET bitIsUsed = 1
End
Go

----------------------------------------------------
Create PROCEDURE [dbo].[UpdateOpeningBalance]
(
@Open as money,
@Balance as money,
@OpenF as money,
@BalanceF as money,
@AcctNumber as nvarchar(50),
@IsReverse as bit
)
as
Begin
if(@IsReverse=1)
UPDATE tblAccountsLY
SET decOpenBalance = decOpenBalance + @Open
,decBalance = decBalance + @Balance
,decOpenBalanceF = decOpenBalanceF + @OpenF
,decBalanceF = decBalanceF + @BalanceF
,bitUsed = 1
WHERE intGLNumber = @AcctNumber
else
UPDATE tblAccountsLY
SET decOpenBalance = decOpenBalance - @Open
,decBalance = decBalance - @Balance
,decOpenBalanceF = decOpenBalanceF - @OpenF
,decBalanceF = decBalanceF - @BalanceF
WHERE intGLNumber = @AcctNumber
end
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateCurrentYearAccountTbl]
(
@AmtChange as money,
@AmtChange1 as money,
@AmtChange2 as money,
@AmtChange3 as money,
@AmtChangef as money,
@AmtChange1f as money,
@AmtChange2f as money,
@AmtChange3f as money,
@GLNumber as nvarchar(50),
@IsReverse as bit
)
as
Begin
if(@IsReverse = 1)
UPDATE tblAccounts
SET decOpenBalance = decOpenBalance + @AmtChange2
,decBalance = decBalance + @AmtChange
,decLYOpenBalance = decLYOpenBalance + @AmtChange3
,decLYEndBalance = decLYEndBalance + @AmtChange1
,decOpenBalanceF = decOpenBalanceF + @AmtChange2f
,decBalanceF = decBalanceF + @AmtChangef
,decLYOpenBalanceF = decLYOpenBalanceF + @AmtChange3f
,decLYEndBalanceF = decLYEndBalanceF + @AmtChange1f
,bitUsedLY = 1
WHERE intGLNumber = @GLNumber
else
UPDATE tblAccounts
SET decOpenBalance = decOpenBalance - @AmtChange2
,decBalance = decBalance - @AmtChange
,decLYOpenBalance = decLYOpenBalance - @AmtChange3
,decLYEndBalance = decLYEndBalance - @AmtChange1
,decOpenBalanceF = decOpenBalanceF - @AmtChange2f
,decBalanceF = decBalanceF - @AmtChangef
,decLYOpenBalanceF = decLYOpenBalanceF - @AmtChange3f
,decLYEndBalanceF = decLYEndBalanceF - @AmtChange1f
WHERE intGLNumber = @GLNumber
End
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertBankRecAcctsData]
@Acct as nvarchar(30),
@IntRev  as nvarchar(30),
@IntExp as nvarchar(30)
as 
Begin
INSERT INTO [dbo].[tblBankRecAccts]
([intGLNumber]
,[intInterestRev]
,[intInterestExp]
,[dteRowUpdated])
VALUES
(@Acct
,@IntRev
,@IntExp
,GetDate())
end
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertAcctBudgetsData]
(@Acct as nvarchar(30)
,@Per1 as money
,@Per2 as money
,@Per3 as money
,@Per4 as money
,@Per5 as money
,@Per6 as money
,@Per7 as money
,@Per8 as money
,@Per9 as money
,@Per10 as money
,@Per11 as money
,@Per12 as money
)
as Begin
INSERT INTO [dbo].[tblAcctBudgets]
([intGLNumber]
,[decPeriod1]
,[decPeriod2]
,[decPeriod3]
,[decPeriod4]
,[decPeriod5]
,[decPeriod6]
,[decPeriod7]
,[decPeriod8]
,[decPeriod9]
,[decPeriod10]
,[decPeriod11]
,[decPeriod12])
VALUES
(@Acct
,@Per1
,@Per2
,@Per3
,@Per4
,@Per5
,@Per6
,@Per7
,@Per8
,@Per9
,@Per10
,@Per11
,@Per12)
end
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInAccountsSec]
(
@GLNumber as nvarchar(30),
@UserName as nvarchar(50)
)
as
Begin
INSERT INTO tblAccountsSec VALUES (@GLNumber,@UserName)
End
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInAccountsDept]
@Dept as int
,@GLNumber as nvarchar(30)
,@AcctDept as nvarchar(Max)
as
Begin
INSERT INTO [dbo].[tblAccountsDept]
([intGLNumber]
,[intDept]
,[strAcctDept]
,[decOpenBalance]
,[decBalance]
,[decLYOpenBalance]
,[decLYEndBalance]
,[bitBudget]
,[bitUsed]
,[bitUsedLY]
,[decOpenBalanceF]
,[decBalanceF]
,[decLYOpenBalanceF]
,[decLYEndBalanceF])
VALUES
(@GLNumber
,@Dept
,@AcctDept
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0)
End
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInAccountsLY]
(@GLNumber as nvarchar(30))
as
Begin
INSERT INTO tblAccountsLY
SELECT intGLNumber
,strDesc
,intAccType
,intGroupCode
,intAccClass
,bitInactive
,0
,0
,0
,0
,bitBank
,bitRecon
,bitInventory
,bitBudget
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,strField1
,strField2
,strField3
,strField4
,strField5
,strField6
,0
,bitAllowCenters
,intCheqNumber
,strCurrency
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
FROM tblAccounts
WHERE intGLNumber = @GLNumber
End
Go

----------------------------------------------------
CREATE PROCEDURE InsertInAccountsHist
(@YearID as uniqueidentifier,
@GLNumber as nvarchar(30)
)
AS
BEGIN
declare @Count As int

SELECT @Count =  COUNT(intGLNumber) FROM tblAccountsHist WHERE uidYearID = @YearID And intGLNumber = @GLNumber
if(@Count = 0)
begin
INSERT INTO tblAccountsHist
SELECT @YearID
,intGLNumber
,strDesc
,intAccType
,intGroupCode
,intAccClass
,bitInactive
,0
,0
,0
,0
,bitBank
,bitRecon
,bitInventory
,bitBudget
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,strField1
,strField2
,strField3
,strField4
,strField5
,strField6
,0
,bitAllowCenters
,intCheqNumber
,strCurrency
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
,0
FROM tblAccounts
WHERE intGLNumber = @GLNumber
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[AccountsFUpdateWithTableType]
(
@accountsFUpdateTableType AS AccountFUpdatesTableType READONLY
)
AS
BEGIN  
Insert into tblAccountF(intGLNumber,strFileName,dteModified,strType,intSize,strUserName,bitEnc,imgFile)
select * from @accountsFUpdateTableType
END;
GO

----------------------------------------------------
CREATE Procedure [dbo].[GetBankRecAcctsData]
(@GLNumber as nvarchar(30))
as
Begin
SELECT [intGLNumber] as  GLNumber
,[intInterestRev] as  InterestRev
,[intInterestExp] as InterestExp
,[dteRowUpdated] as RowUpdated
FROM [dbo].[tblBankRecAccts]
where intGLNumber = @GLNumber
End
Go

----------------------------------------------------
CREATE Procedure [dbo].[GetAcctBudgetsData]
@GLNumber as nvarchar(30)
as
Begin
SELECT [intGLNumber] as GLNumber
,[decPeriod1] as Period1
,[decPeriod2]	as Period2
,[decPeriod3]	as Period3
,[decPeriod4]	as Period4
,[decPeriod5]	as Period5
,[decPeriod6]	as Period6
,[decPeriod7]	as Period7
,[decPeriod8]	as Period8
,[decPeriod9]	as Period9
,[decPeriod10] as Period10
,[decPeriod11] as Period11
,[decPeriod12] as Period12
FROM [dbo].[tblAcctBudgets]
where intGLNumber = @GLNumber
End
GO

----------------------------------------------------
Create PROCEDURE [dbo].[GetGLAccountDeptData]
(@GLNumber as nvarchar(30))
as
Begin
SELECT intDept as Dept
,strDesc as [Desc]
,(
SELECT COUNT(intGLNumber)
FROM tblAccountsDEPT
WHERE (intGLNumber = @GLNumber)
AND (intDept = MASTERTABLE.intDept)
) as NoOfGLNumber
FROM tblDepartments AS MASTERTABLE
ORDER BY MASTERTABLE.intDept
end
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetGLAccountsHistData]
@GLNumber as nvarchar(30)
as
Begin
SELECT tblAcctHist.intFiscalYr as FiscalYr
,tblAccountsHist.intGLNumber as GLNumber
,tblAccountsHist.strDesc as [Desc]
,tblAccountsHist.decOpenBalance as OpenBalance
,tblAccountsHist.decBalance as Balance
FROM tblAcctHist
INNER JOIN tblAccountsHist ON tblAcctHist.uidYearID = tblAccountsHist.uidYearID
WHERE (tblAccountsHist.intGLNumber = @GLNumber)
ORDER BY tblAcctHist.intFiscalYr
End
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateGLAccountsData]
(
@NewNumber as nvarchar(30)
,@AccType as int
,@Group as int
,@Desc as nvarchar(Max)
,@Field1 as nvarchar(100)
,@Field2 as nvarchar(100)
,@Field3 as nvarchar(100)
,@Field4 as nvarchar(100)
,@Field5 as nvarchar(100)
,@Field6 as nvarchar(100)
,@OldNumber as nvarchar(30)
)
as
Begin
UPDATE tblAccounts
SET intGLNumber = @NewNumber
,intAccType = @AccType
,intGroupCode = @Group
,strDesc = @Desc
,strField1 = @Field1
,strField2 = @Field2
,strField3 = @Field3
,strField4 = @Field4
,strField5 = @Field5
,strField6 = @Field6
WHERE intGLNumber = @OldNumber
End
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateGLAccountsLYData]
(@GLNumber as nvarchar(30),
@Desc as nvarchar(Max))
as
Begin
UPDATE tblAccountsLY SET strDesc = @Desc WHERE intGLNumber = @GLNumber
End
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateAccountsDept]
(
@AcctDept as nvarchar(Max)
,@GLNumber as nvarchar(30)
,@DeptNumber as int
)
as
Begin
UPDATE tblAccountsDept SET strAcctDept = @AcctDept WHERE intGLNumber = @GLNumber AND intDept = @DeptNumber
end
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetGLAccountsSetCount]
(@GLNumber  as nvarchar(30)
)
as
Begin
SELECT COUNT(strAcctSet) FROM tblAccountSets WHERE intGLAsset = @GLNumber OR 
intGLRevenue = @GLNumber OR intGLExpCOGS = @GLNumber OR intGLVariance = @GLNumber
end
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetGLExpAcctCount]
(@GLNumber as nvarchar(30))
as
begin
SELECT COUNT(intExpAcct) FROM tblInv WHERE intExpAcct = @GLNumber
end
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[LoadOptionalFieldNameData]
AS
BEGIN
	SELECT strGL1 AS GL1
		,strGL2 AS GL2
		,strGL3 AS GL3
		,strGL4 AS GL4
		,strGL5 AS GL5
		,strGL6 AS GL6
		,bitGL1 AS IsGL1
		,bitGL2 AS IsGL2
		,bitGL3 AS IsGL3
		,bitGL4 AS IsGL4
		,bitGL5 AS IsGL5
		,bitGL6 AS IsGL6
		,strInv1 AS Inv1
		,strInv2 AS Inv2
		,strInv3 AS Inv3
		,strInv4 AS Inv4
		,strInv5 AS Inv5
		,strInv6 AS Inv6
		,bitInv1 AS IsInv1
		,bitInv2 AS IsInv2
		,bitInv3 AS IsInv3
		,bitInv4 AS IsInv4
		,bitInv5 AS IsInv5
		,bitInv6 AS IsInv6
		,strRecDoc1 AS RecDoc1
		,strRecDoc2 AS RecDoc2
		,strRecDoc3 AS RecDoc3
		,strRecDoc4 AS RecDoc4
		,strRecDoc5 AS RecDoc5
		,strRecDoc6 AS RecDoc6
		,strRecDoc7 AS RecDoc7
		,strRecDoc8 AS RecDoc8
		,strRecDoc9 AS RecDoc9
		,strRecDoc10 AS RecDoc10
		,strRecDoc11 AS RecDoc11
		,strRecDoc12 AS RecDoc12
		,strRecDoc13 AS RecDoc13
		,strRecDoc14 AS RecDoc14
		,bitRecDoc1 AS IsRecDoc1 
		,bitRecDoc2 AS IsRecDoc2 
		,bitRecDoc3 AS IsRecDoc3 
		,bitRecDoc4 AS IsRecDoc4 
		,bitRecDoc5 AS IsRecDoc5 
		,bitRecDoc6 AS IsRecDoc6 
		,bitRecDoc7 AS IsRecDoc7 
		,bitRecDoc8 AS IsRecDoc8 
		,bitRecDoc9 AS IsRecDoc9 
		,bitRecDoc1 AS IsRecDoc10
		,bitRecDoc11 AS IsRecDoc11
		,bitRecDoc12 AS IsRecDoc12
		,bitRecDoc13 AS IsRecDoc13
		,bitRecDoc14 AS IsRecDoc14
		,strPayDoc1 AS PayDoc1 
		,strPayDoc2 AS PayDoc2 
		,strPayDoc3 AS PayDoc3 
		,strPayDoc4 AS PayDoc4 
		,strPayDoc5 AS PayDoc5 
		,strPayDoc6 AS PayDoc6 
		,strPayDoc7 AS PayDoc7 
		,strPayDoc8 AS PayDoc8 
		,strPayDoc9 AS PayDoc9
		,strPayDoc10 AS PayDoc10 
		,strPayDoc11 AS PayDoc11 
		,strPayDoc12 AS PayDoc12 
		,strPay1 AS Pay1 
		,strPay2 AS Pay2 
		,strPay3 AS Pay3 
		,strPay4 AS Pay4 
		,strPay5 AS Pay5 
		,strPay6 AS Pay6 
		,strPay7 AS Pay7 
		,strPay8 AS Pay8 
		,strPay9 AS Pay9 
		,strPay10 AS Pay10
		,strPay11 AS Pay11
		,strPay12 AS Pay12
	FROM tblOptFields
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetAccountsData] 
@SQstrUserName as nvarchar(20) null,
@GLAccountAccess as bit
AS
BEGIN
if(@GLAccountAccess = 1)
SELECT intGLNumber as GLNumber
,intAccType as AccType
,strDesc as [Desc]
,intGroupCode as GroupCode
,intAccClass as AccClass
,0 as GLNumberCount
,'' as UserName
FROM tblAccounts
ORDER BY intGLNumber;
else
SELECT tblAccounts.intGLNumber as GLNumber
,tblAccounts.intAccType as AccType
,tblAccounts.strDesc as [Desc]
,tblAccounts.intGroupCode as GroupCode
,tblAccounts.intAccClass as AccClass
,ISNULL((
SELECT COUNT(tblAccountsSec.intGLNumber)
FROM tblAccountsSec
WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber
), 0) as GLNumberCount
,ISNULL(tblAccountsSec.strUserName, '') as UserName 
FROM tblAccounts
LEFT JOIN tblAccountsSec ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber
AND tblAccountsSec.strUserName = @SQstrUserName
ORDER BY tblAccounts.intGLNumber;
END
GO

----------------------------------------------------


CREATE PROCEDURE [dbo].[GeneralTransaction]
@SQAcctEND NVARCHAR(MAX) = NULL
AS
BEGIN
SELECT decOpenBalance As  openBalance, intAccType As accType  FROM tblAccounts WHERE intGLNumber = @SQAcctEND
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GeneralTransactionFindEntry]
@SQAcct NVARCHAR(MAX) = NULL,
@SQStart Date = null
AS
BEGIN
SELECT ISNULL(SUM(tblJournalEnt.decAmount),0) As amount FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate < @SQStart) AND (tblJournalEnt.intGLNumber = @SQAcct)
END
GO
-----------------------------------------------
CREATE PROCEDURE [dbo].[GeneralTransactionPeriodReporting]
@SQAcct NVARCHAR(MAX) = NULL,
@SQStart Date = NULL,
@SQEnd Date NULL
AS
BEGIN
SELECT J.dteJournalDate As journalDate ,J.strComment As comment  ,(CASE WHEN strSource = 'Stock Count' THEN(CASE WHEN (SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = J.lngJourID) = 0 THEN J.strSource ELSE (SELECT ISNULL(CONCAT('SC/',strAdjDocID), J.strSource )  FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = J.lngJourID) END) ELSE strSource END) AS sources ,J.lngJourID As jourID  ,tblJournalEnt.decDebits As debits ,tblJournalEnt.decCredits as credits ,tblJournalEnt.decAmount as amount FROM tblJournal J INNER JOIN tblJournalEnt ON J.lngJourID = tblJournalEnt.lngJourID WHERE (J.dteJournalDate >= @SQStart) AND (J.dteJournalDate <= @SQEnd) AND (tblJournalEnt.intGLNumber = @SQAcct)  ORDER BY J.dteJournalDate
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[JournalItemActivate]
@SQJourNumber bigint = null
AS
BEGIN
SELECT tblJournal.dteJournalDate As journalDate, tblJournal.lngJourID as jourID, tblJournal.strSource As sources , tblJournal.strComment as comment, tblJournalEnt.intGLNumber As glNumber, tblAccounts.strDesc as descriptions, tblJournalEnt.decDebits as debits, tblJournalEnt.decCredits as credits FROM tblAccounts INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.lngJourID = @SQJourNumber) ORDER BY tblJournal.lngJourID, tblJournalEnt.intGLNumber
END
GO

----------------------------------------------------
CREATE Procedure [dbo].[GetARTransactionReportData]
(
@SQCustomer nvarchar(max),
@blnAllowReceiptOnSalesOrder bit,
@SQAsAt Datetime,
@SQPaidIn datetime
)
as 
begin
IF(@blnAllowReceiptOnSalesOrder = 0)
BEGIN
SELECT tblCustomers.strCustName, MASTERTABLE.strInvDepNumber, ISNULL(MASTERTABLE.strInvDocID, '') AS DocNumber, 
MASTERTABLE.dteJournalDate, tblCustTransDT.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, 
tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount 
FROM tblCustTrans AS MASTERTABLE 
INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID 
INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName 
WHERE (MASTERTABLE.strCustName = @SQCustomer) AND (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0) AND CT.dteJournalDate <= @SQPaidIn))
UNION
SELECT tblCustomers.strCustName, MASTERTABLE.strInvDepNumber, ISNULL(MASTERTABLE.strOrdDocID, '') AS DocNumber, MASTERTABLE.dteJournalDate, tblCustTransDT.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE (MASTERTABLE.strCustName = @SQCustomer) AND
(tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0) AND CT.dteJournalDate <= @SQPaidIn)) ORDER BY tblCustomers.strCustName, tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType
END
ELSE
BEGIN
SELECT tblCustomers.strCustName, MASTERTABLE.strInvDepNumber, ISNULL(MASTERTABLE.strInvDocID, '') AS DocNumber, MASTERTABLE.dteJournalDate, tblCustTransDT.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE (MASTERTABLE.strCustName = @SQCustomer) AND
 (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0) AND CT.dteJournalDate <= @SQPaidIn)) 
UNION
SELECT tblCustomers.strCustName, MASTERTABLE.strInvDepNumber, ISNULL(MASTERTABLE.strOrdDocID, '') AS DocNumber, MASTERTABLE.dteJournalDate, tblCustTransDT.dteJournalDate AS JournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, tblCustTransDT.decAmount FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE (MASTERTABLE.strCustName = @SQCustomer) AND
(tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0) AND CT.dteJournalDate <= @SQPaidIn)) 
UNION
SELECT tblOrderDoc.strCustName, '' AS strInvDepNumber,tblOrderDoc.strOrdDocID AS DocNumber,tblOrderDoc.dteJournalDate,tblOrderDoc.dteJournalDate AS JournalDate,1 AS TransType,1 AS intTransType,0 AS lngCustTrID,tblOrderDoc.decTotal FROM tblOrderDoc	WHERE intDocType = 1 AND bitCleared = 0 
AND tblOrderDoc.strCustName = @SQCustomer
AND tblOrderDoc.dteJournalDate <= @SQAsAt AND tblOrderDoc.strOrdDocID NOT IN ( SELECT strOrdDocID FROM tblCustTrans	WHERE strOrdDocID IS NOT NULL)
ORDER BY tblCustomers.strCustName, tblCustTransDT.lngCustTrID, tblCustTransDT.intTransType
END	
end
GO

----------------------------------------------------
create procedure GetAPTransactionReportData  
(  
@SQVendor nvarchar(max),  
@SQAsAt Datetime,  
@SQPaidIn datetime  
)  
as   
begin  
SELECT MASTERTABLE.strVendName, MASTERTABLE.strInvDepNumber,   
CASE WHEN ISNULL(MASTERTABLE.strJEDocID,'') = '' THEN CASE WHEN ISNULL(MASTERTABLE.strInvPDocID,'') = '' THEN 
CAST(MASTERTABLE.lngVendTrID AS nvarchar(50))   
ELSE MASTERTABLE.strInvPDocID END ELSE MASTERTABLE.strJEDocID END,  
MASTERTABLE.dteJournalDate ,tblVendTransDT.dteJournalDate, MASTERTABLE.intTransType AS TransType, tblVendTransDT.intTransType,   
tblVendTransDT.lngVendTrID, tblVendTransDT.decAmount   
FROM tblVendTrans AS MASTERTABLE   
INNER JOIN tblVendTransDT ON MASTERTABLE.lngVendTrID = tblVendTransDT.lngVendTrID   
WHERE (MASTERTABLE.strVendName = @SQVendor) AND   
(tblVendTransDT.bitReversed = 0) AND (tblVendTransDT.dteJournalDate <= @SQAsAt) AND (tblVendTransDT.lngVendTrID   
NOT IN (SELECT tblVendTransDT.lngVendTrID   
FROM tblVendTrans   
INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID   
WHERE tblVendTrans.strVendName = MASTERTABLE.strVendName AND tblVendTransDT.bitReversed = 0   
AND tblVendTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblVendTransDT.lngVendTrID HAVING SUM(tblVendTransDT.decAmount) = 0))   
ORDER BY MASTERTABLE.strVendName, tblVendTransDT.lngVendTrID, tblVendTransDT.intTransType  
end
GO

----------------------------------------------
CREATE PROCEDURE [dbo].[GetTabInventoryTransactions]
AS
BEGIN
	SELECT strPartNumber AS Part
		,strDesc AS [Description]
		,(
			CASE 
				WHEN (dteLastPurchase <> '1999-01-01 00:00:00')
					THEN dteLastPurchase
				ELSE NULL
				END
			) AS LastPurchase
		,(
			CASE 
				WHEN (dteDateLastSale <> '1999-01-01 00:00:00')
					THEN dteDateLastSale
				ELSE NULL
				END
			) AS LastSale
	FROM tblInv
	WHERE bitInactive = 0
		AND intType <> 5
		AND bitOtherCmp = 0
	ORDER BY strPartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetTabCustomerTransactions]
@SQBPTool BIT = 0,
@SQUsername VARCHAR(30)
AS
BEGIN
Declare @strSQL As Nvarchar(MAX) = '';
Declare @Customer Nvarchar(10)= ''
Declare @Contact1 Nvarchar(10)=''
Set @Contact1=case when((Select Top 1 strContact from tblCoOptsN)Is Not Null)then (Select Top 1 strContact from tblCoOptsN)Else 'Contact' End
Set @Customer=case when((Select Top 1 strCustomers from tblCoOptsN)Is Not Null)then (Select Top 1 strCustomers from tblCoOptsN)Else 'Customer' End
IF @SQBPTool = 0
Set @strSQL ='SELECT strCustName AS ['+@Customer+'], strContact AS ['+@Contact1+'], strPhone AS Phone, decBalDue AS [Balance Due], decYTDPurch AS [YTD Sales] FROM tblCustomers WHERE decYTDPurch <> 0 AND bitInactive = 0 AND strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName+''')) ORDER BY strCustName'
ELSE
Set @strSQL ='SELECT strCustName AS ['+@Customer+'], strContact AS ['+@Contact1+'], strPhone AS Phone, decBalDue AS [Balance Due], decYTDPurch AS [YTD Sales] FROM tblCustomers WHERE decYTDPurch <> 0 AND bitInactive = 0 ORDER BY strCustName'
END
Exec (@strSQL);
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetTabReceiptDue] @SQBPTool BIT = 0
	,@SQUsername VARCHAR(30)
	,@SQAsAt DATE
AS
BEGIN
	DECLARE @strSQL AS NVARCHAR(MAX) = '';
	DECLARE @Customer AS NVARCHAR(10) = '';
	DECLARE @SQBeforAsAt DATE;

	SET @SQBeforAsAt = dateadd(day, - 7, @SQAsAt)
	SET @strSQL = ''
	SET @Customer = CASE 
			WHEN (
					(
						SELECT TOP 1 strCustomers
						FROM tblCoOptsN
						) IS NOT NULL
					)
				THEN (
						SELECT TOP 1 strCustomers
						FROM tblCoOptsN
						)
			ELSE 'Customer'
			END

	IF @SQBPTool = 0
	BEGIN
		SET @strSQL = 'SELECT MASTERTABLE.strCustName AS [' + @Customer + ']'
		SET @strSQL = @strSQL + ' ,ISNULL(MASTERTABLE.strInvDocID, ISNULL(MASTERTABLE.strJEDocID, '''')) AS Document '
		SET @strSQL = @strSQL + ' ,MASTERTABLE.strInvDepNumber AS Reference '
		SET @strSQL = @strSQL + ' ,MASTERTABLE.dteJournalDate AS [Date] '
		SET @strSQL = @strSQL + ' ,MASTERTABLE.dteJournalDate AS DueDate '
		SET @strSQL = @strSQL + ' ,tblCustTransDT.decAmount AS Amount '
		SET @strSQL = @strSQL + ' FROM tblCustTrans AS MASTERTABLE '
		SET @strSQL = @strSQL + ' INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID '
		SET @strSQL = @strSQL + ' WHERE MASTERTABLE.intTransType = 1 '
		SET @strSQL = @strSQL + ' AND (MASTERTABLE.dteJournalDate) <=''' + Cast(Cast(@SQBeforAsAt AS DATE) AS NVARCHAR) + ''''
		SET @strSQL = @strSQL + ' AND tblCustTransDT.bitReversed = 0 '
		SET @strSQL = @strSQL + ' AND tblCustTransDT.dteJournalDate <= ''' + Cast(Cast(@SQAsAt AS DATE) AS NVARCHAR) + ''''
		SET @strSQL = @strSQL + ' AND tblCustTransDT.lngCustTrID  IN ( '
		SET @strSQL = @strSQL + ' SELECT tblCustTransDT.lngCustTrID '
		SET @strSQL = @strSQL + ' FROM tblCustTrans '
		SET @strSQL = @strSQL + ' INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID '
		SET @strSQL = @strSQL + ' WHERE tblCustTransDT.bitReversed = 0 '
		SET @strSQL = @strSQL + ' AND tblCustTransDT.dteJournalDate <= ''' + Cast(Cast(@SQAsAt AS DATE) AS NVARCHAR) + ''''
		SET @strSQL = @strSQL + ' GROUP BY tblCustTransDT.lngCustTrID '
		SET @strSQL = @strSQL + ' HAVING SUM(tblCustTransDT.decAmount) <> 0 '
		SET @strSQL = @strSQL + ' ) '
		SET @strSQL = @strSQL + ' AND MASTERTABLE.strCustName IN ( '
		SET @strSQL = @strSQL + ' SELECT strCustName '
		SET @strSQL = @strSQL + ' FROM tblCustomers '
		SET @strSQL = @strSQL + ' WHERE strCustCategory IN ( '
		SET @strSQL = @strSQL + ' SELECT tblCustomerCat.strCustCategory '
		SET @strSQL = @strSQL + ' FROM tblCustomerCat '
		SET @strSQL = @strSQL + ' LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory '
		SET @strSQL = @strSQL + ' WHERE ISNULL(( '
		SET @strSQL = @strSQL + ' SELECT COUNT(tblCustomerCatSec.strCustCategory) '
		SET @strSQL = @strSQL + ' FROM tblCustomerCatSec '
		SET @strSQL = @strSQL + ' WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory '
		SET @strSQL = @strSQL + ' ), 0) = 0 '
		SET @strSQL = @strSQL + ' OR ( '
		SET @strSQL = @strSQL + ' ISNULL(( '
		SET @strSQL = @strSQL + ' SELECT COUNT(tblCustomerCatSec.strCustCategory) '
		SET @strSQL = @strSQL + ' FROM tblCustomerCatSec '
		SET @strSQL = @strSQL + ' WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory '
		SET @strSQL = @strSQL + ' ), 0) > 0 '
		SET @strSQL = @strSQL + ' AND tblCustomerCatSec.strUserName = ''' + @SQUserName + ''''
		SET @strSQL = @strSQL + ' 					)'
		SET @strSQL = @strSQL + ' 			) '
		SET @strSQL = @strSQL + ' 	) '
		SET @strSQL = @strSQL + ' ORDER BY MASTERTABLE.dteJournalDate '
		SET @strSQL = @strSQL + ' ,MASTERTABLE.strCustName '
	END
	ELSE
	BEGIN
		SET @strSQL = 'SELECT MASTERTABLE.strCustName AS [' + @Customer + '] '
		SET @strSQL = @strSQL + ' 	,MASTERTABLE.strInvDocID AS Document '
		SET @strSQL = @strSQL + ' 	,MASTERTABLE.strInvDepNumber AS Reference '
		SET @strSQL = @strSQL + ' 	,MASTERTABLE.dteJournalDate AS [Date] '
		SET @strSQL = @strSQL + ' 	,MASTERTABLE.dteJournalDate AS DueDate '
		SET @strSQL = @strSQL + ' 	,tblCustTransDT.decAmount AS Amount '
		SET @strSQL = @strSQL + ' FROM tblCustTrans AS MASTERTABLE '
		SET @strSQL = @strSQL + ' INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID '
		SET @strSQL = @strSQL + ' WHERE MASTERTABLE.intTransType = 1 '
		SET @strSQL = @strSQL + ' 	AND (MASTERTABLE.dteJournalDate) <= ''' + Cast(Cast(@SQBeforAsAt AS DATE) AS NVARCHAR) + ''''
		SET @strSQL = @strSQL + ' 	AND tblCustTransDT.bitReversed = 0 '
		SET @strSQL = @strSQL + ' 	AND tblCustTransDT.dteJournalDate <= ''' + Cast(Cast(@SQAsAt AS DATE) AS NVARCHAR) + ''''
		SET @strSQL = @strSQL + ' 	AND tblCustTransDT.lngCustTrID  IN ( '
		SET @strSQL = @strSQL + ' 		SELECT tblCustTransDT.lngCustTrID '
		SET @strSQL = @strSQL + ' 		FROM tblCustTrans '
		SET @strSQL = @strSQL + ' 		INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID '
		SET @strSQL = @strSQL + ' 		WHERE  tblCustTransDT.bitReversed = 0 '
		SET @strSQL = @strSQL + ' 			AND tblCustTransDT.dteJournalDate <= ''' + Cast(Cast(@SQAsAt AS DATE) AS NVARCHAR) + ''''
		SET @strSQL = @strSQL + ' 		GROUP BY tblCustTransDT.lngCustTrID '
		SET @strSQL = @strSQL + ' 		HAVING SUM(tblCustTransDT.decAmount) <> 0 '
		SET @strSQL = @strSQL + ' 		) '
		SET @strSQL = @strSQL + ' ORDER BY MASTERTABLE.dteJournalDate '
		SET @strSQL = @strSQL + ' ,MASTERTABLE.strCustName '
	END
END

EXEC (@strSQL);
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetTabVendorTransactions]
@SQBPTool BIT = 0,
@SQUsername VARCHAR(30)
AS
BEGIN
Declare @strSQL As Nvarchar(MAX) = '';
Declare @Vendor as Nvarchar(10)='';
Set @Vendor =case when((Select Top 1 strVendors from tblCoOptsN)Is Not Null)then (Select Top 1 strVendors from tblCoOptsN)Else 'Vendor' End
IF @SQBPTool = 0
Set @strSQL = 'SELECT strVendName AS ['+ @Vendor+'], strContact AS Contact, strPhone AS Phone, decBalDue AS [Balance Due], decYTDPurch AS [YTD Purchases] FROM tblVendors WHERE decYTDPurch <> 0 AND bitInactive = 0  AND strVendCategory IN (SELECT tblVendorCat.strVendCategory FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = '''+@SQUsername+'''))  ORDER BY strVendName'
ELSE
Set @strSQL = 'SELECT strVendName AS ['+@Vendor+'], strContact AS Contact, strPhone AS Phone, decBalDue AS [Balance Due], decYTDPurch AS [YTD Purchases] FROM tblVendors WHERE decYTDPurch <> 0 AND bitInactive = 0  ORDER BY strVendName'
END
Exec (@strSQL);
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetTabPaymentDue] @SQBPTool BIT = 0
	,@SQUsername VARCHAR(30)
	,@SQAsAt DATE
AS
BEGIN
Declare @strSQL As Nvarchar(MAX) = '';
Declare @Vendor as Nvarchar(10)='';
Declare @VendorInv as Nvarchar(20) = '';
DECLARE @SQBeforAsAt DATE;
Set @SQBeforAsAt = dateadd(day,-7,@SQAsAt)
Set @strSQL=''
Set @VendorInv = case When ((Select Top 1 strVendInv from tblCoOptsN)Is Not Null)then (Select Top 1 strVendInv from tblCoOptsN)Else 'Vendor Invoice' End
Set @Vendor =case when((Select Top 1 strVendors from tblCoOptsN)Is Not Null)then (Select Top 1 strVendors from tblCoOptsN)Else 'Vendor' End
	IF @SQBPTool = 0
		BEGIN
		set @strSQL = 'SELECT MASTERTABLE.strVendName AS ['+@Vendor+'] '
		set	@strSQL = @strSQL+', MASTERTABLE.strInvPDocID AS Document'
		set	@strSQL = @strSQL+  ', MASTERTABLE.strInvDepNumber AS ['+@VendorInv +'] '
		set	@strSQL =@strSQL+  ', MASTERTABLE.dteJournalDate AS [DATE]'
		set	@strSQL =@strSQL+  ', MASTERTABLE.dteDueDate AS [Due Date]'
		set	@strSQL =@strSQL+  ', tblVendTransDT.decAmount AS Amount'
		set	@strSQL =@strSQL+ ' FROM tblVendTrans AS MASTERTABLE'
		set	@strSQL =@strSQL+  ' INNER JOIN tblVendTransDT ON MASTERTABLE.lngVendTrID = tblVendTransDT.lngVendTrID'
		set	@strSQL =@strSQL+  ' WHERE MASTERTABLE.intTransType = 1'
		set	@strSQL =@strSQL+  ' AND (MASTERTABLE.dteJournalDate) <= '''+ Cast(Cast(@SQBeforAsAt as Date) as Nvarchar)+''''
		set	@strSQL =@strSQL+  ' AND tblVendTransDT.bitReversed = 0'
		set	@strSQL =@strSQL+  ' AND tblVendTransDT.dteJournalDate <= '''+Cast(Cast(@SQAsAt  as Date) as Nvarchar)+''''
		set	@strSQL =@strSQL+  ' AND tblVendTransDT.lngVendTrID IN ('
		set	@strSQL =@strSQL+  ' SELECT tblVendTransDT.lngVendTrID'
		set	@strSQL =@strSQL+  ' FROM tblVendTrans'
		set	@strSQL =@strSQL+  ' INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID'
		set	@strSQL =@strSQL+  ' WHERE  tblVendTransDT.bitReversed = 0'
		set	@strSQL =@strSQL+  ' AND tblVendTransDT.dteJournalDate <= '''+Cast(Cast(@SQAsAt as Date) as Nvarchar)+''''
		set	@strSQL =@strSQL+  ' GROUP BY tblVendTransDT.lngVendTrID'
		set	@strSQL =@strSQL+  ' HAVING SUM(tblVendTransDT.decAmount) <> 0'
		set	@strSQL =@strSQL+  ' )'
		set	@strSQL =@strSQL+  ' AND MASTERTABLE.strVendName IN ('
		set	@strSQL =@strSQL+  ' SELECT strVendName'
		set	@strSQL =@strSQL+  ' FROM tblVendors'
		set	@strSQL =@strSQL+  ' WHERE strVendCategory IN ('
		set	@strSQL =@strSQL+  ' SELECT tblVendorCat.strVendCategory'
		set	@strSQL =@strSQL+  ' FROM tblVendorCat'
		set	@strSQL =@strSQL+  ' LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory'
		set	@strSQL =@strSQL+  ' WHERE ISNULL(('
		set	@strSQL =@strSQL+  ' SELECT COUNT(tblVendorCatSec.strVendCategory)'
		set	@strSQL =@strSQL+  ' FROM tblVendorCatSec'
		set	@strSQL =@strSQL+  ' WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory'
		set	@strSQL =@strSQL+  ' ), 0) = 0'
		set	@strSQL =@strSQL+  ' OR ('
		set	@strSQL =@strSQL+  ' ISNULL(('
		set	@strSQL =@strSQL+  ' SELECT COUNT(tblVendorCatSec.strVendCategory)'
		set	@strSQL =@strSQL+  ' FROM tblVendorCatSec'
		set	@strSQL =@strSQL+' WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory'
		set	@strSQL =@strSQL+  ' ), 0) > 0 '
		set	@strSQL =@strSQL+  ' AND tblVendorCatSec.strUserName = '''+@SQUserName+''''
		set	@strSQL =@strSQL+  ' ))) ORDER BY MASTERTABLE.dteJournalDate, MASTERTABLE.strVendName'
	   END 
	ELSE
        BEGIN
		set @strSQL ='SELECT MASTERTABLE.strVendName AS ['+@Vendor+']'
		set @strSQL =@strSQL+', MASTERTABLE.strInvPDocID AS Document'
		set @strSQL =@strSQL+ ', MASTERTABLE.strInvDepNumber AS ['+@VendorInv+']'
		set @strSQL =@strSQL+ ', MASTERTABLE.dteJournalDate AS DATE'
		set @strSQL =@strSQL+ ', MASTERTABLE.dteDueDate AS [Due Date]'
		set @strSQL =@strSQL+ ', tblVendTransDT.decAmount AS Amount'
		set @strSQL =@strSQL+ ' FROM tblVendTrans AS MASTERTABLE'
		set @strSQL =@strSQL+ ' INNER JOIN tblVendTransDT ON MASTERTABLE.lngVendTrID = tblVendTransDT.lngVendTrID'
		set @strSQL =@strSQL+ ' WHERE MASTERTABLE.intTransType = 1'
		set @strSQL =@strSQL+ ' AND (MASTERTABLE.dteJournalDate) <= '''+Cast(Cast((@SQBeforAsAt) as Date) as Nvarchar)+''''
		set @strSQL =@strSQL+ ' AND tblVendTransDT.bitReversed = 0'
		set @strSQL =@strSQL+ ' AND tblVendTransDT.dteJournalDate <= '''+Cast(Cast(@SQAsAt as 
		Date) as Nvarchar)+''''
		set @strSQL =@strSQL+ ' AND tblVendTransDT.lngVendTrID IN ('
		set @strSQL =@strSQL+ '	SELECT tblVendTransDT.lngVendTrID'
		set @strSQL =@strSQL+ '	FROM tblVendTrans'
		set @strSQL =@strSQL+ '	INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID'
		set @strSQL =@strSQL+ '	WHERE  tblVendTransDT.bitReversed = 0 '
		set @strSQL =@strSQL+ '		AND tblVendTransDT.dteJournalDate <= '''+Cast(Cast(@SQAsAt as Date)As Nvarchar)+''''
		set @strSQL =@strSQL+ '	GROUP BY tblVendTransDT.lngVendTrID'
		set @strSQL =@strSQL+ '	HAVING SUM(tblVendTransDT.decAmount) <> 0'
		set @strSQL =@strSQL+ '	)'
		set @strSQL =@strSQL+ ' ORDER BY MASTERTABLE.dteJournalDate'
		set @strSQL =@strSQL+ '	,MASTERTABLE.strVendName'
		END
END
Exec(@strSQL);
GO
----------------------------------------------------
CREATE PROCEDURE GetTabLedgerTransactions
@SQAccountAccess BIT = 0,
@SQUsername VARCHAR(30)
AS
BEGIN

	IF @SQAccountAccess = 1
		SELECT tblAccounts.intGLNumber AS Account, 
		--tblAccounts.intAccType, 
		tblAccounts.strDesc AS Description 
		--tblAccounts.intAccClass 
		--, 0, ''
		FROM tblAccounts WHERE bitLinkCEarnings = 0 AND intGroupCode < 3 AND bitInactive = 0 ORDER BY intGLNumber
	ELSE
		SELECT tblAccounts.intGLNumber AS Account,
		--, tblAccounts.intAccType,
		tblAccounts.strDesc AS Description
		--tblAccounts.intAccClass, ISNULL((SELECT COUNT(tblAccountsSec.intGLNumber) FROM tblAccountsSec WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber),0),
		--ISNULL(tblAccountsSec.strUserName,'') 
		FROM tblAccounts LEFT JOIN tblAccountsSec ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber AND tblAccountsSec.strUserName = @SQUsername WHERE bitLinkCEarnings = 0 AND intGroupCode < 3 AND bitInactive = 0 ORDER BY tblAccounts.intGLNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE GetTabJournalEntries
@SQStart datetime = NULL
AS
BEGIN
	SELECT J.dteJournalDate AS [Date],
			J.lngJourID AS Journal
		,(
			CASE 
				WHEN J.strSource = 'Stock Count'
					THEN (
							CASE 
								WHEN (
										SELECT COUNT(strAdjDocID)
										FROM tblInvAdjDoc
										WHERE tblInvAdjDoc.lngJourID = J.lngJourID
										) = 0
									THEN J.strSource
								ELSE (
										SELECT ISNULL(CONCAT (
													'SC/'
													,strAdjDocID
													), J.strSource)
										FROM tblInvAdjDoc
										WHERE tblInvAdjDoc.lngJourID = J.lngJourID
										)
								END
							)
				ELSE J.strSource
				END
			) AS [Source]
		,J.strComment AS Comment
	,J.intEntryType 
	FROM tblJournal J
	WHERE J.dteJournalDate > @SQStart
	ORDER BY lngJourID DESC
END
GO
----------------------------------------------------
CREATE PROCEDURE [InsertBankRecOTPData]
@lngBRSumID nvarchar(30), @SQGL nvarchar(30),@SQStatDate nvarchar(30)
AS
BEGIN
INSERT INTO tblBankRecOTP SELECT @lngBRSumID, intGLNumber, intModule, intTransType, strComment, dteJourDate, decDebits, decCredits, lngJourID, strSource, decEffectiveAmount FROM tblBankRecTrans WHERE (intGLNumber = @SQGL) AND (bitCleared = 0) AND (dteJourDate <= @SQStatDate)
END
GO

----------------------------------------------------
Create PROCEDURE [InsertBankTransaction]
@SQGLAcct nvarchar(30),@SQModule nvarchar(30),@SQTransType nvarchar(30),@SQComment nvarchar(30),@SQJourDate nvarchar(30),@SQDebits nvarchar(30),@SQCredits nvarchar(30),@SQJourID nvarchar(30),@SQSource nvarchar(30),@SQEffAmount nvarchar(30)
AS
BEGIN
INSERT INTO tblBankRecTrans (intGLNumber,bitCleared,bitSavedAsCleared,intModule,intTransType,strComment,dteJourDate,decDebits,decCredits,lngJourID,strSource,decEffectiveAmount,lngBRSumIDPostedTo,bitUserSaved,intLineNum) VALUES (@SQGLAcct,0,0,@SQModule,@SQTransType,@SQComment,@SQJourDate,@SQDebits,@SQCredits,@SQJourID,@SQSource,@SQEffAmount,0,0,0)
END
GO

----------------------------------------------------
CREATE PROCEDURE [SelectGLBankTransaction]
@SQGLNumber nvarchar(30)
AS
BEGIN
SELECT tblJournal.strSource as [Source]
, tblJournal.dteJournalDate as EndDate
, tblJournal.strComment as Comment
, tblJournalEnt.decDebits as Debits
, tblJournalEnt.decCredits as Credits
, tblJournal.intModule  as strAccountType
, tblJournal.lngJourID as JourID
, tblJournalEnt.decAmount as Amount
, tblJournalEnt.decAmountF as AmountF
, tblJournalEnt.decDebitsF as DebitsF
, tblJournalEnt.decCreditsF as CreditsF
, tblJournalEnt.intLineNum 
FROM tblJournal 

INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID WHERE (tblJournalEnt.intGLNumber = @SQGLNumber) AND (tblJournal.lngJourID NOT IN (SELECT lngJourID FROM tblBankRecTrans 
CROSS JOIN tblCompany
 WHERE (intGLNumber = @SQGLNumber) AND (dteJourDate BETWEEN dteYearStarts AND dteYearEnds))) UNION ALL SELECT tblJournalLY.strSource, tblJournalLY.dteJournalDate, tblJournalLY.strComment, tblJournalEntLY.decDebits, tblJournalEntLY
.decCredits, tblJournalLY.intModule, tblJournalLY.lngJourID, tblJournalEntLY.decAmount, tblJournalEntLY.decAmountF, tblJournalEntLY.decDebitsF, tblJournalEntLY.decCreditsF, tblJournalEntLY.intLineNum 
FROM tblJournalLY 
INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID 
WHERE (tblJournalEntLY.intGLNumber = @SQGLNumber) AND (tblJournalLY.lngJourID NOT IN (SELECT lngJourID FROM tblBankRecTrans CROSS JOIN tblCompany 
WHERE (intGLNumber = @SQGLNumber) AND (dteJourDate BETWEEN dteLYStarted AND dteLYEnded))) ORDER BY dteJournalDate
END
GO

----------------------------------------------------
Create PROCEDURE [InsertBankTransactionWithLineNO]
@SQGLAcct nvarchar(30),@SQModule nvarchar(30),@SQTransType nvarchar(30),@SQComment nvarchar(30),@SQJourDate nvarchar(30),@SQDebits nvarchar(30),@SQCredits nvarchar(30),@SQJourID nvarchar(30),@SQSource nvarchar(30),@SQEffAmount nvarchar(30), @SQintLineNum nvarchar(30)
AS
BEGIN
INSERT INTO tblBankRecTrans (intGLNumber,bitCleared,bitSavedAsCleared,intModule,intTransType,strComment,dteJourDate,decDebits,decCredits,lngJourID,strSource,decEffectiveAmount,lngBRSumIDPostedTo,bitUserSaved,intLineNum) VALUES (@SQGLAcct,0,0,@SQModule,@SQTransType,@SQComment,@SQJourDate,@SQDebits,@SQCredits,@SQJourID,@SQSource,@SQEffAmount,0,0,@SQintLineNum)
END
GO

----------------------------------------------------
Create PROCEDURE [dbo].[GetForeignBalanceCY]
@SQAsAtDate datetime, @SQGLNumber nvarchar(30)
AS
BEGIN
SELECT ISNULL(SUM(tblJournalEnt.decAmountF),0) FROM tblJournalEnt INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate <= @SQAsAtDate) AND (tblJournalEnt.intGLNumber = @SQGLNumber)
END
GO

----------------------------------------------------
Create PROCEDURE [dbo].[GetForeignBalanceLY]
@SQAsAtDate datetime, @SQGLNumber nvarchar(30)
AS
BEGIN
SELECT ISNULL(SUM(tblJournalEntLY.decAmountF),0) FROM tblJournalEntLY INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate <= @SQAsAtDate) AND (tblJournalEntLY.intGLNumber = @SQGLNumber)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvSalesReportData]
(
@SQPartNumber nvarchar(max),
@SQStart varchar(19),
@SQEnd varchar(19)
)
AS
BEGIN
SELECT tblInvTrackingDT.strPartNumber, tblInv.strDesc, tblInvTracking.dteJournalDate, tblInvTracking.strSource, tblInvTracking.lngJourID, (tblInvTrackingDT.decQty * -1), tblInvTrackingDT.decRevenue, tblInvTrackingDT.decCOGS, (tblInvTrackingDT.decRevenue - tblInvTrackingDT.decCOGS) AS PROFIT 
FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber 
WHERE (tblInvTrackingDT.strPartNumber = @SQPartNumber) AND (tblInvTracking.intModule = 2) AND (tblInvTracking.dteJournalDate BETWEEN @SQStart AND @SQEnd)
ORDER BY tblInvTrackingDT.strPartNumber, tblInvTracking.dteJournalDate, tblInvTracking.strSource
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvTransReportData]  
(  
@SQPartNumber nvarchar(max),  
@SQStart varchar(19),  
@SQEnd varchar(19)  
)  
AS  
BEGIN  
SELECT
  tblInvTrackingDT.strPartNumber,
  tblInv.strDesc,
  tblInvTracking.dteJournalDate,
  tblInvTracking.intModule,
  tblInvTracking.lngJourID,
  (
    CASE
      WHEN tblInvTracking.strSource = 'Stock Count'
      AND (
        SELECT
          ISNULL(
            CONCAT('SC/', strAdjDocID),
            tblInvTracking.strSource
          )
        FROM
          tblInvAdjDoc
        WHERE
          tblInvTracking.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
      ) IS NOT NULL THEN (
        SELECT
          ISNULL(
            CONCAT('SC/', strAdjDocID),
            tblInvTracking.strSource
          )
        FROM
          tblInvAdjDoc
        WHERE
          tblInvTracking.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
      )
      ELSE tblInvTracking.strSource
    END
  ) AS strSource,
  tblInvTrackingDT.decQtyIn,
  tblInvTrackingDT.decQtyOut,
  tblInvTrackingDT.decValueIn,
  tblInvTrackingDT.decValueOut
FROM
  tblInvTrackingDT
  INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
  INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
WHERE (tblInvTrackingDT.strPartNumber = @SQPartNumber) AND (tblInvTracking.dteJournalDate BETWEEN @SQStart AND @SQEnd)  
ORDER BY tblInvTrackingDT.strPartNumber, tblInvTracking.dteJournalDate, tblInvTracking.strSource  
END  
GO

-----------------------------------------------------

CREATE PROCEDURE [dbo].[GetVendorsGridData] (
	@InActive BIT = NULL
	,@BPToolsMode BIT = NULL
	,@UserName VARCHAR(50) = NULL
	,@Search AS NVARCHAR(Max) = ''
	)
AS
BEGIN
	SET NOCOUNT ON;

	IF (@InActive = 0)
	BEGIN
		IF (@BPToolsMode = 0)
		BEGIN
			SELECT strVendName AS VendorName
				,strVendDesc AS VendDesc
				,decOpenOrders AS OpenOrders
				,decBalDue AS BalDue
				,decYTDPurch AS YTDPurch
				,bitInactive AS IsInactive
				,strCurrency AS Currency
				,decOpenOrdersF AS OpenOrdersF
				,decBalDueF AS BalDueF
				,decYTDPurchF AS YTDPurchF
			FROM tblVendors
			WHERE bitInactive = 0
				AND strVendCategory IN (
					SELECT tblVendorCat.strVendCategory
					FROM tblVendorCat
					LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
					WHERE ISNULL((
								SELECT COUNT(tblVendorCatSec.strVendCategory)
								FROM tblVendorCatSec
								WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblVendorCatSec.strVendCategory)
									FROM tblVendorCatSec
									WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
									), 0) > 0
							AND (
								tblVendorCatSec.strUserName = CASE 
									WHEN isnull(@UserName, '') = ''
										THEN tblVendorCatSec.strUserName
									ELSE @UserName
									END
								)
							)
					)
				AND (
					ISNULL(strVendName, '') LIKE '%' + ISNULL(@search, strVendName) + '%'
					OR ISNULL(strVendDesc, '') LIKE '%' + ISNULL(@search, strVendDesc) + '%'
					);
		END;
		ELSE
		BEGIN
			SELECT strVendName AS VendorName
				,strVendDesc AS VendDesc
				,decOpenOrders AS OpenOrders
				,decBalDue AS BalDue
				,decYTDPurch AS YTDPurch
				,bitInactive AS IsInactive
				,strCurrency AS Currency
				,decOpenOrdersF AS OpenOrdersF
				,decBalDueF AS BalDueF
				,decYTDPurchF AS YTDPurchF
			FROM tblVendors
			WHERE bitInactive = 0
				AND (
					ISNULL(strVendName, '') LIKE '%' + ISNULL(@search, strVendName) + '%'
					OR ISNULL(strVendDesc, '') LIKE '%' + ISNULL(@search, strVendDesc) + '%'
					)
		END;
	END;
	ELSE
	BEGIN
		IF (@BPToolsMode = 0)
		BEGIN
			SELECT strVendName AS VendorName
				,strVendDesc AS VendDesc
				,decOpenOrders AS OpenOrders
				,decBalDue AS BalDue
				,decYTDPurch AS YTDPurch
				,bitInactive AS IsInactive
				,strCurrency AS Currency
				,decOpenOrdersF AS OpenOrdersF
				,decBalDueF AS BalDueF
				,decYTDPurchF AS YTDPurchF
			FROM tblVendors
			WHERE strVendCategory IN (
					SELECT tblVendorCat.strVendCategory
					FROM tblVendorCat
					LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
					WHERE ISNULL((
								SELECT COUNT(tblVendorCatSec.strVendCategory)
								FROM tblVendorCatSec
								WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblVendorCatSec.strVendCategory)
									FROM tblVendorCatSec
									WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
									), 0) > 0
							AND (
								tblVendorCatSec.strUserName = CASE 
									WHEN isnull(@UserName, '') = ''
										THEN tblVendorCatSec.strUserName
									ELSE @UserName
									END
								)
							)
					)
				AND (
					ISNULL(strVendName, '') LIKE '%' + ISNULL(@search, strVendName) + '%'
					OR ISNULL(strVendDesc, '') LIKE '%' + ISNULL(@search, strVendDesc) + '%'
					);
		END;
		ELSE
		BEGIN
			SELECT strVendName AS VendorName
				,strVendDesc AS VendDesc
				,decOpenOrders AS OpenOrders
				,decBalDue AS BalDue
				,decYTDPurch AS YTDPurch
				,bitInactive AS IsInactive
				,strCurrency AS Currency
				,decOpenOrdersF AS OpenOrdersF
				,decBalDueF AS BalDueF
				,decYTDPurchF AS YTDPurchF
			FROM tblVendors
			WHERE (
					ISNULL(strVendName, '') LIKE '%' + ISNULL(@search, strVendName) + '%'
					OR ISNULL(strVendDesc, '') LIKE '%' + ISNULL(@search, strVendDesc) + '%'
					)
		END;
	END;
END;
GO

----------------------------------------------------------------------

CREATE PROCEDURE [dbo].[VendorsSave] (  
 @strVendName NVARCHAR(50) = ''  
 ,@strStreet1 NVARCHAR(100) = ''  
 ,@strStreet2 NVARCHAR(100) = ''  
 ,@strCity NVARCHAR(50) = ''  
 ,@strProvince NVARCHAR(50) = ''  
 ,@strPostal NVARCHAR(20) = ''  
 ,@strPhone NVARCHAR(50) = ''  
 ,@strCellPhone NVARCHAR(50) = ''  
 ,@strFax NVARCHAR(50) = ''  
 ,@strEmail NVARCHAR(250) = ''  
 ,@strVAT NVARCHAR(50) = ''  
 ,@strCK NVARCHAR(50) = ''  
 ,@decBalDue MONEY = 0  
 ,@decYTDPurch MONEY = 0  
 ,@decOpenOrders MONEY = 0  
 ,@intDelMethod INT = 0
 ,@bitInventoryVendor BIT = 0
 ,@bitExpenseVendor BIT = 0
 ,@intExpAcct NVARCHAR(30) = NULL
 ,@bitInactive BIT = 0  
 ,@strContact NVARCHAR(100) = ''  
 ,@strField1 NVARCHAR(100) = ''  
 ,@strField2 NVARCHAR(100) = ''  
 ,@strField3 NVARCHAR(100) = ''  
 ,@strField4 NVARCHAR(100) = ''  
 ,@strField5 NVARCHAR(100) = ''  
 ,@strField6 NVARCHAR(100) = ''  
 ,@strTaxCode NVARCHAR(20) = NULL  
 ,@dteSince DATETIME = NULL  
 ,@strNotes NVARCHAR(MAX) = ''  
 ,@strPricelist NVARCHAR(20) = ''  
 ,@strVendDesc VARCHAR(200) = ''  
 ,@strCountry NVARCHAR(50) = ''  
 ,@strTerm NVARCHAR(50) = ''  
 ,@intDept INT = NULL  
 ,@strCurrency NVARCHAR(3) = ''  
 ,@decBalDueF MONEY = 0  
 ,@decYTDPurchF MONEY = 0  
 ,@decOpenOrdersF MONEY = 0  
 ,@strField7 NVARCHAR(100) = ''  
 ,@strField8 NVARCHAR(100) = ''  
 ,@strField9 NVARCHAR(100) = ''  
 ,@strField10 NVARCHAR(100) = ''  
 ,@strField11 NVARCHAR(100) = ''  
 ,@strField12 NVARCHAR(100) = ''  
 ,@strVendCategory NVARCHAR(20) = NULL  
 ,@strCountryCode NVARCHAR(10) = NULL  
 ,@strTenderType NVARCHAR(20) = ''  
 ,@decTradeDiscPerc MONEY = 0  
 ,@bitWithholdTax BIT = 0  
 ,@strWithholdTaxCode NVARCHAR(2) = NULL  
 ,--strWithholdTaxCode", SqlDbType.NVarChar,         
 @bitInvWorkflowNew BIT = 0  
 ,--bitInvWorkflowNew", SqlDbType.Bit) { Valu    
 @bitInvWorkflowDA BIT = 0  
 ,@bitInvWorkflowSO BIT = 0  
 ,@strWebsite NVARCHAR(200) = ''  
 ,--strWebsite", SqlDbType.NVarChar, 200) { V        
 @strMultipleCustName NVARCHAR(MAX) = ''  
 ,--strMultipleCustName", SqlDbType.NVarChar)        
 @strOldCust NVARCHAR(50)  
 ,--strOldCust", SqlDbType.NVarChar, 50) { Va        
 @PL_HistoryOn BIT = 0  
 ,--PL_HistoryOn", SqlDbType.Bit) { Value = c        
 @PL_HomeCurrencyCode NVARCHAR(3) = ''  
 ,--PL_HomeCurrencyCode", SqlDbType.NVarChar,        
 --@CurrentYrStarts SMALLDATETIME ,      --CurrentYrStarts", SqlDbType.SmallDateTime        
 @strSalesName NVARCHAR(100)  
 ,--strSalesName", SqlDbType.NVarChar, 100) {        
 @uidCenterID UNIQUEIDENTIFIER = NULL  
 ,--uidCenterID", SqlDbType.UniqueIdentifier)        
 @strOldName NVARCHAR(50) = ''  
 ,--strOldName", SqlDbType.NVarChar, 50) { Va        
 @strProfitCenters NVARCHAR(MAX) = ''  
 ,--strProfitCenters", SqlDbType.NVarChar, 50        
 @tblVendorEx CommonTableType READONLY  
 ,@tblVendorExWT CommonTableType READONLY  
 ,@tblVendorF CommonTableType READONLY  
 ,@tblInvoiceDoc InvoiceDocType READONLY  
 ,@tblVendTrans VendorTransactionTableType READONLY  
 ,@tblVendTransDT VendorTransactionDTTableType READONLY  
 ,@tblInvVendor CommonTableType READONLY  
 ,@tblVendEComm CommonTableType Readonly  
 ,@strGLNumberAP NVARCHAR(100) = ''  
 ,@strGLNumberDeposit NVARCHAR(100) = ''  
 ,@strBuyerName NVARCHAR(50) = NULL  
 ,@strDocPassword NVARCHAR(MAX) = ''  
 ,@TPIN NVARCHAR(10) = NULL  
 )  
AS  
BEGIN  
  IF EXISTS (  
    SELECT TOP 1 1  
    FROM [dbo].[tblVendors]  
    WHERE [strVendName] = @strOldName  
    )  
  BEGIN  
   UPDATE [dbo].[tblVendors]  
   SET strVendName = CONVERT(NVARCHAR(100), ISNULL(@strVendName, ''))  
    ,strStreet1 = CONVERT(NVARCHAR(100), ISNULL(@strStreet1, ''))  
    ,strStreet2 = CONVERT(NVARCHAR(100), ISNULL(@strStreet2, ''))  
    ,strCity = CONVERT(NVARCHAR(50), ISNULL(@strCity, ''))  
    ,strProvince = CONVERT(NVARCHAR(50), ISNULL(@strProvince, ''))  
    ,strPostal = CONVERT(NVARCHAR(20), ISNULL(@strPostal, ''))  
    ,strPhone = CONVERT(NVARCHAR(50), ISNULL(@strPhone, ''))  
    ,strCellPhone = CONVERT(NVARCHAR(50), ISNULL(@strCellPhone, ''))  
    ,strFax = CONVERT(NVARCHAR(50), ISNULL(@strFax, ''))  
    ,strEmail = CONVERT(NVARCHAR(250), ISNULL(@strEmail, ''))  
    ,strVAT = CONVERT(NVARCHAR(50), ISNULL(@strVAT, ''))  
    ,strCK = CONVERT(NVARCHAR(50), ISNULL(@strCK, ''))  
    ,decBalDue = CONVERT(MONEY, ISNULL(@decBalDue, 0))  
    ,decYTDPurch = CONVERT(MONEY, ISNULL(@decYTDPurch, 0))  
    ,decOpenOrders = CONVERT(MONEY, ISNULL(@decOpenOrders, 0))  
    ,intDelMethod = CONVERT(INT, ISNULL(@intDelMethod, 0))  
	,bitInventoryVendor = CONVERT(BIT, @bitInventoryVendor)
	,bitExpenseVendor = CONVERT(BIT, @bitExpenseVendor)
	,intExpAcct = CONVERT(NVARCHAR(30), ISNULL(@intExpAcct, NULL))
    ,bitInactive = CONVERT(BIT, ISNULL(@bitInactive, 0))  
    ,strContact = CONVERT(NVARCHAR(100), ISNULL(@strContact, ''))  
    ,strField1 = CONVERT(NVARCHAR(100), ISNULL(@strField1, ''))  
    ,strField2 = CONVERT(NVARCHAR(100), ISNULL(@strField2, ''))  
    ,strField3 = CONVERT(NVARCHAR(100), ISNULL(@strField3, ''))  
    ,strField4 = CONVERT(NVARCHAR(100), ISNULL(@strField4, ''))  
    ,strField5 = CONVERT(NVARCHAR(100), ISNULL(@strField5, ''))  
    ,strField6 = CONVERT(NVARCHAR(100), ISNULL(@strField6, ''))  
    ,strTaxCode = @strTaxCode  
    ,dteSince = CONVERT(DATETIME, ISNULL(@dteSince, GETDATE()), 103)  
    ,strNotes = CONVERT(NVARCHAR(MAX), ISNULL(@strNotes, ''))  
    ,  
    --[uID] = CONVERT(UNIQUEIDENTIFIER, @uID),        
    strVendDesc = CONVERT(VARCHAR(200), ISNULL(@strVendDesc, ''))  
    ,strCountry = CONVERT(NVARCHAR(50), ISNULL(@strCountry, ''))  
    ,strTerm = CONVERT(NVARCHAR(50), ISNULL(@strTerm, ''))  
    ,intDept = @intDept  
    ,strCurrency = CONVERT(NVARCHAR(3), ISNULL(@strCurrency, ''))  
    ,decBalDueF = CONVERT(MONEY, ISNULL(@decBalDueF, 0))  
    ,decYTDPurchF = CONVERT(MONEY, ISNULL(@decYTDPurchF, 0))  
    ,decOpenOrdersF = CONVERT(MONEY, ISNULL(@decOpenOrdersF, 0))  
    ,strField7 = CONVERT(NVARCHAR(100), ISNULL(@strField7, ''))  
    ,strField8 = CONVERT(NVARCHAR(100), ISNULL(@strField8, ''))  
    ,strField9 = CONVERT(NVARCHAR(100), ISNULL(@strField9, ''))  
    ,strField10 = CONVERT(NVARCHAR(100), ISNULL(@strField10, ''))  
    ,strField11 = CONVERT(NVARCHAR(100), ISNULL(@strField11, ''))  
    ,strField12 = CONVERT(NVARCHAR(100), ISNULL(@strField12, ''))  
    ,strVendCategory = CONVERT(NVARCHAR(20), ISNULL(@strVendCategory, ''))  
    ,strCountryCode = @strCountryCode  
    ,strTenderType = @strTenderType  
    ,decTradeDiscPerc = CONVERT(MONEY, ISNULL(@decTradeDiscPerc, 0))  
    ,bitWithholdTax = CONVERT(BIT, ISNULL(@bitWithholdTax, 0))  
    ,strWithholdTaxCode = @strWithholdTaxCode  
    ,bitInvWorkflowNew = CONVERT(BIT, ISNULL(@bitInvWorkflowNew, 0))  
    ,bitInvWorkflowGRV = CONVERT(BIT, ISNULL(@bitInvWorkflowDA, 0))  
    ,bitInvWorkflowPO = CONVERT(BIT, ISNULL(@bitInvWorkflowSO, 0))  
    ,strWebsite = CONVERT(NVARCHAR(100), ISNULL(@strWebsite, ''))  
    ,intGLNumberAP = CONVERT(NVARCHAR(100), Isnull(@strGLNumberAP, ''))  
    ,intGLNumberPrePay = CONVERT(NVARCHAR(100), Isnull(@strGLNumberDeposit, ''))  
    ,strBuyerName = @strBuyerName  
    ,strDocPassword = @strDocPassword  
    ,strVendTPIN = @TPIN  
   WHERE [strVendName] = @strOldName;  
    --UPDATE  tblVendors        
    --SET     strParentCust = N''        
    --WHERE   strParentCust = @strOldName;      
  END;  
  ELSE  
  BEGIN  
   INSERT INTO [dbo].[tblVendors] (  
    strVendName  
    ,strStreet1  
    ,strStreet2  
    ,strCity  
    ,strProvince  
    ,strPostal  
    ,strPhone  
    ,strCellPhone  
    ,strFax  
    ,strEmail  
    ,strVAT  
    ,strCK  
    ,decBalDue  
    ,decYTDPurch  
    ,decOpenOrders  
    ,intDelMethod
	,bitInventoryVendor
	,bitExpenseVendor
	,intExpAcct
    ,bitInactive  
    ,strContact  
    ,strField1  
    ,strField2  
    ,strField3  
    ,strField4  
    ,strField5  
    ,strField6  
    ,strTaxCode  
    ,dteSince  
    ,strNotes  
    ,[uID]  
    ,strVendDesc  
    ,strCountry  
    ,strTerm  
    ,intDept  
    ,strCurrency  
    ,decBalDueF  
    ,decYTDPurchF  
    ,decOpenOrdersF  
    ,strField7  
    ,strField8  
    ,strField9  
    ,strField10  
    ,strField11  
    ,strField12  
    ,strVendCategory  
    ,strCountryCode  
    ,strTenderType  
    ,decTradeDiscPerc  
    ,bitWithholdTax  
    ,strWithholdTaxCode  
    ,bitInvWorkflowNew  
    ,bitInvWorkflowGRV  
    ,bitInvWorkflowPO  
    ,strWebsite 
    ,dteLastUpdated  
    ,intGLNumberAP  
    ,intGLNumberPrePay  
    ,strBuyerName  
    ,strDocPassword  
    ,strVendTPIN  
    )  
   VALUES (  
    @strVendName  
    ,CONVERT(NVARCHAR(100), ISNULL(@strStreet1, ''))  
    ,CONVERT(NVARCHAR(100), ISNULL(@strStreet2, ''))  
    ,CONVERT(NVARCHAR(50), ISNULL(@strCity, ''))  
    ,CONVERT(NVARCHAR(50), ISNULL(@strProvince, ''))  
    ,CONVERT(NVARCHAR(20), ISNULL(@strPostal, ''))  
    ,CONVERT(NVARCHAR(50), ISNULL(@strPhone, ''))  
    ,CONVERT(NVARCHAR(50), ISNULL(@strCellPhone, ''))  
    ,CONVERT(NVARCHAR(50), ISNULL(@strFax, ''))  
    ,CONVERT(NVARCHAR(250), ISNULL(@strEmail, ''))  
    ,CONVERT(NVARCHAR(50), ISNULL(@strVAT, ''))  
    ,CONVERT(NVARCHAR(50), ISNULL(@strCK, ''))  
    ,CONVERT(MONEY, ISNULL(@decBalDue, 0))  
    ,CONVERT(MONEY, ISNULL(@decYTDPurch, 0))  
    ,CONVERT(MONEY, ISNULL(@decOpenOrders, 0))  
    ,CONVERT(INT, ISNULL(@intDelMethod, 0))
	,CONVERT(BIT, ISNULL(@bitInventoryVendor, 0))
	,CONVERT(BIT, ISNULL(@bitExpenseVendor, 0))
	,CONVERT(NVARCHAR(30), ISNULL(@intExpAcct, NULL))
    ,CONVERT(BIT, ISNULL(@bitInactive, 0))  
    ,CONVERT(NVARCHAR(100), ISNULL(@strContact, ''))  
    ,CONVERT(NVARCHAR(100), ISNULL(@strField1, ''))  
    ,CONVERT(NVARCHAR(100), ISNULL(@strField2, ''))  
    ,CONVERT(NVARCHAR(100), ISNULL(@strField3, ''))  
    ,CONVERT(NVARCHAR(100), ISNULL(@strField4, ''))  
    ,CONVERT(NVARCHAR(100), ISNULL(@strField5, ''))  
    ,CONVERT(NVARCHAR(100), ISNULL(@strField6, ''))  
    ,@strTaxCode  
    ,CONVERT(DATETIME, ISNULL(@dteSince, GETDATE()), 103)  
    ,CONVERT(NVARCHAR(MAX), ISNULL(@strNotes, ''))  
    ,NEWID()  
    ,CONVERT(VARCHAR(200), ISNULL(@strVendDesc, ''))  
    ,CONVERT(NVARCHAR(50), ISNULL(@strCountry, ''))  
    ,CONVERT(NVARCHAR(50), ISNULL(@strTerm, ''))  
    ,@intDept  
    ,CONVERT(NVARCHAR(3), ISNULL(@strCurrency, ''))  
    ,CONVERT(MONEY, ISNULL(@decBalDueF, 0))  
    ,CONVERT(MONEY, ISNULL(@decYTDPurchF, 0))  
    ,CONVERT(MONEY, ISNULL(@decOpenOrdersF, 0))  
    ,CONVERT(NVARCHAR(100), ISNULL(@strField7, ''))  
    ,CONVERT(NVARCHAR(100), ISNULL(@strField8, ''))  
    ,CONVERT(NVARCHAR(100), ISNULL(@strField9, ''))  
    ,CONVERT(NVARCHAR(100), ISNULL(@strField10, ''))  
    ,CONVERT(NVARCHAR(100), ISNULL(@strField11, ''))  
    ,CONVERT(NVARCHAR(100), ISNULL(@strField12, ''))  
    ,CONVERT(NVARCHAR(20), ISNULL(@strVendCategory, ''))  
    ,@strCountryCode  
    ,@strTenderType  
    ,--'On Account',--@strTenderType,        
    CONVERT(MONEY, ISNULL(@decTradeDiscPerc, 0))  
    ,CONVERT(BIT, ISNULL(@bitWithholdTax, 0))  
    ,@strWithholdTaxCode  
    ,CONVERT(BIT, ISNULL(@bitInvWorkflowNew, 0))  
    ,CONVERT(BIT, ISNULL(@bitInvWorkflowDA, 0))  
    ,CONVERT(BIT, ISNULL(@bitInvWorkflowSO, 0))  
    ,CONVERT(NVARCHAR(100), ISNULL(@strWebsite, '')) 
    ,GETDATE()  
    ,CONVERT(NVARCHAR(100), ISNULL(@strGLNumberAP, ''))  
    ,CONVERT(NVARCHAR(100), ISNULL(@strGLNumberDeposit, ''))  
    ,@strBuyerName  
    ,CONVERT(NVARCHAR(MAX), ISNULL(@strDocPassword, ''))  
    ,CONVERT(NVARCHAR(10), ISNULL(@TPIN, ''))  
    );  
  END;  
  
  DELETE  
  FROM tblVendorEx  
  WHERE strVendName = @strVendName;  
  
  IF (  
    SELECT COUNT(*)  
    FROM @tblVendorEx  
    ) > 0  
  BEGIN  
   INSERT INTO tblVendorEx (  
    strVendName  
    ,strTaxName  
    )  
   SELECT CONVERT(NVARCHAR(100), ISNULL(@strVendName, ''))  
    ,CONVERT(NVARCHAR(20), ISNULL(COL02, ''))  
   FROM @tblVendorEx;  
  END  
  
  DELETE  
  FROM tblVendorExWT  
  WHERE strVendName = @strVendName;  
  
  IF (  
    SELECT COUNT(*)  
    FROM @tblVendorExWT  
    ) > 0  
  BEGIN  
   INSERT INTO tblVendorExWT (  
    strVendName  
    ,strTaxName  
    )  
   SELECT CONVERT(NVARCHAR(100), ISNULL(@strVendName, ''))  
    ,CONVERT(NVARCHAR(20), ISNULL(COL02, ''))  
   FROM @tblVendorExWT;  
  END  
  
  --  Delete and Update tblVendorEcommerce  
  DELETE  
  FROM tblVendECom  
  WHERE strVendName = @strVendName;  
  
  IF (  
    SELECT COUNT(*)  
    FROM @tblVendEComm  
    ) > 0  
  BEGIN  
   INSERT INTO tblVendECom (  
    [strVendName]  
    ,[intERPSystem]  
    ,[strURL]  
    ,[strERPAccountNo]  
    ,[strERPPassword]  
    ,[strCustName]  
    ,[strCustPassword]  
    ,[bitSyncInventory]  
    ,[bitSyncInvBOM]  
    ,[bitSyncInvPrice]  
    ,[bitSyncCustomers]  
    ,[bitSyncPO]  
    ,[bitSyncAR]  
    ,[bitEnablePOeSubmit]  
    ,[bitEnableDSeSubmit]  
    ,[bitEnableGRVeSubmit]  
    ,[bitEnablePReSubmit]  
    ,[strCompanyName]  
    )  
   SELECT CONVERT(NVARCHAR(50), ISNULL(COL01, ''))  
    ,CONVERT(INT, ISNULL(COL02, ''))  
    ,CONVERT(NVARCHAR(MAX), ISNULL(COL03, ''))  
    ,CONVERT(NVARCHAR(50), ISNULL(COL04, ''))  
    ,CONVERT(NVARCHAR(MAX), ISNULL(COL05, ''))  
    ,CONVERT(NVARCHAR(50), ISNULL(COL06, ''))  
    ,CONVERT(NVARCHAR(MAX), ISNULL(COL07, ''))  
    ,CONVERT(BIT, ISNULL(COL08, ''))  
    ,CONVERT(BIT, ISNULL(COL09, ''))  
    ,CONVERT(BIT, ISNULL(COL10, ''))  
    ,CONVERT(BIT, ISNULL(COL11, ''))  
    ,CONVERT(BIT, ISNULL(COL12, ''))  
    ,CONVERT(BIT, ISNULL(COL13, ''))  
    ,CONVERT(BIT, ISNULL(COL14, ''))  
    ,CONVERT(BIT, ISNULL(COL15, ''))  
    ,CONVERT(BIT, ISNULL(COL16, ''))  
    ,CONVERT(BIT, ISNULL(COL17, ''))  
    ,CONVERT(NVARCHAR(100), ISNULL(COL18, ''))  
   FROM @tblVendEComm;  
  END  
  
  --IF EXISTS (select top 1 1 from [dbo].[tblVendors] where [strVendName] = @strVendName )        
  --BEGIN        
  --Make Target Entry and delete on update        
  UPDATE tblVendorContacts  
  SET strVendName = @strVendName  
  WHERE strVendName = @strOldCust;  
  
  DELETE  
  FROM [tblVendorF]  
  WHERE strVendName = @strVendName;  
  
  IF (  
    SELECT COUNT(*)  
    FROM @tblVendorF  
    ) > 0  
  BEGIN  
   INSERT INTO [dbo].[tblVendorF] (  
    strVendName  
    ,strFileName  
    ,dteModified  
    ,strType  
    ,intSize  
    ,strUserName  
    ,bitEnc  
    ,imgFile  
    )  
   SELECT CONVERT(NVARCHAR(200), ISNULL(COL01, ''))  
    ,CONVERT(NVARCHAR(800), ISNULL(COL02, ''))  
    ,CONVERT(DATETIME, ISNULL(COL03, GETDATE()))  
    ,CONVERT(NVARCHAR(1000), ISNULL(COL04, ''))  
    ,CONVERT(BIGINT, ISNULL(COL05, 0))  
    ,CONVERT(NVARCHAR(40), ISNULL(COL06, ''))  
    ,CONVERT(BIT, ISNULL(COL07, 0))  
    ,CONVERT(IMAGE, IMAGE1)  
   FROM @tblVendorF;  
  END;  
  
  -- Commented Below Code To Save Sales Person Name        
  --DELETE  FROM tblVendorsales        
  --WHERE   strVendName = @strVendName;        
  
   --declare @bIsFroign as bit = 0        
   --if @strCurrency <>  @PL_HomeCurrencyCode        
   -- set @bIsFroign = 1 
   
	DECLARE @PIcount BIGINT = 0
	IF (
			SELECT COUNT(*)
			FROM @tblInvoiceDoc
			) > 0
	BEGIN
		INSERT INTO [dbo].[tblInvoiceDocP] (
			[strInvPDocID]
			,[lngInvTrackID]
			,[lngJourID]
			,[dteSystemDate]
			,[dteJournalDate]
			,[dteRequired]
			,[strUserName]
			,[strVendName]
			,[strShipTo]
			,[strVendInvNo]
			,[decSubTotal]
			,[decVAT]
			,[decTotal]
			,[bitFromPO]
			,[strOrdPDocID]
			,[strSourceMOP]
			,[bitHistoryTrans]
			,[strNotes]
			,[bitPrinted]
			,[bitEmailed]
			,[intPaidBy]
			,[intAccount]
			,[strCurrency]
			,[bitIsForeign]
			,[decSubTotalF]
			,[decVATF]
			,[decTotalF]
			,[decExchange]
			,[strTerm]
			,[intDept]
			,[strField1]
			,[strField2]
			,[strField3]
			,[strField4]
			,[strField5]
			,[strField6]
			,[strField7]
			,[strField8]
			,[strField9]
			,[strField10]
			,[strField11]
			,[strField12]
			,[strSubFormated]
			,[strVATFormatted]
			,[strTotFormatted]
			,[decDiscPerc]
			,[decDiscAmt]
			,[decDiscAmtF]
			,[strDiscFormatted]
			,[strOrdFQDocID]
			,[bitFQConvert]
			,[bitSOCopy]
			,[bitSOCopyMulti]
			,[strStatusTypeCode]
			,[bitBookmark]
			,[strAddInfo]
			,[strReference]
			,[strPaidBy]
			,[decNetItemWeight]
			,[decNetVolumetricWeight]
			,[intRevisionNumber]
			,[intAccrualProcess]
			,[strBuyerName]
			)
		SELECT CONVERT(NVARCHAR(100), ISNULL(strInvDocID, ''))
			,lngInvTrackID
			,lngJourID
			,CONVERT(SMALLDATETIME, ISNULL(dteSystemDate, GETDATE()))
			,CONVERT(SMALLDATETIME, ISNULL(dteJournalDate, GETDATE()))
			,CONVERT(SMALLDATETIME, ISNULL(dteRequired, GETDATE()))
			,CONVERT(NVARCHAR(40), ISNULL(strUserName, ''))
			,strCustName
			,CONVERT(NVARCHAR(1000), ISNULL(strShipTo, ''))
			,CONVERT(NVARCHAR(100), ISNULL(strReference, ''))  --VENDOR inv number
			,CONVERT(MONEY, ISNULL(decSubTotal, 0))
			,CONVERT(MONEY, ISNULL(decVAT, 0))
			,CONVERT(MONEY, ISNULL(decTotal, 0))
			,CONVERT(BIT, ISNULL(bitFromSO, 0))
			,strOrdDocID
			,CONVERT(NVARCHAR(1000), ISNULL(strSoldTo,''))  --MOP
			,CONVERT(BIT, ISNULL(bitHistoryTrans, 0))
			,CONVERT(NVARCHAR(MAX), ISNULL(strNotes, ''))
			,CONVERT(BIT, ISNULL(bitPrinted, 0))
			,CONVERT(BIT, ISNULL(bitEmailed, 0))
			,CONVERT(INT, ISNULL(intPaidBy, 0))
			,intAccount
			,CONVERT(NVARCHAR(6), ISNULL(strCurrency, ''))
			,CONVERT(BIT, ISNULL(bitIsForeign, 0))
			,CONVERT(MONEY, ISNULL(decSubTotalF, 0))
			,CONVERT(MONEY, ISNULL(decVATF, 0))
			,CONVERT(MONEY, ISNULL(decTotalF, 0))
			,CONVERT(DECIMAL(20, 6), ISNULL(decExchange, 0))
			,CONVERT(NVARCHAR(100), ISNULL(strTerm, ''))
			,intDept
			,CONVERT(NVARCHAR(200), ISNULL(strField1, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField2, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField3, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField4, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField5, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField6, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField7, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField8, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField9, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField10, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField11, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField12, ''))
			,CONVERT(NVARCHAR(100), ISNULL(strSubFormated, ''))
			,CONVERT(NVARCHAR(100), ISNULL(strVATFormatted, ''))
			,CONVERT(NVARCHAR(100), ISNULL(strTotFormatted, ''))
			,0
			,0
			,0
			,''
			,NULL
			,0
			,0
			,0
			,NULL
			,0
			,''
			,''
			,CONVERT(NVARCHAR(40), ISNULL(strPaidBy, ''))
			,0
			,0
			,1
			,1
			,''
		FROM @tblInvoiceDoc;
	END

	    SELECT @PIcount = 
        CASE
            WHEN LEFT(strInvDocID, 3) = 'PI-' THEN CAST(SUBSTRING(strInvDocID, 4, LEN(strInvDocID)) AS BIGINT)
            ELSE NULL 
        END
    FROM @tblInvoiceDoc
    WHERE LEFT(strInvDocID, 3) = 'PI-'
    ORDER BY strInvDocID DESC
    OFFSET 0 ROWS
    FETCH NEXT 1 ROWS ONLY;

	if(@PIcount <> 0)
	Exec [UpdateLastIDForDNandPI] @PIcount,0

   IF @PL_HistoryOn = 1  
   BEGIN  
    DECLARE @lastCustTransId AS BIGINT = (  
      SELECT MAX(lngVendTrID)  
      FROM tblVendTrans  
      );  
  
    --Find Terms for this invoice        
    IF (  
      SELECT COUNT(*)  
      FROM @tblVendTrans  
      ) > 0  
    BEGIN  
     INSERT INTO [dbo].[tblVendTrans] (  
      lngVendTrID  
      ,strVendName  
      ,dteSystemDate  
      ,dteJournalDate  
      ,strUserName  
      ,strInvPDocID  
      ,strInvDepNumber  
      ,strPoNumber  
      ,intTransType  
      ,decInvAmount  
      ,decInvAmountF  
      ,strCurrency  
      ,bitIsForeign  
      ,decExchange  
      ,bitDocReRated  
      ,dteReRated  
      ,decReRateCumltveValue  
      ,bitSettled  
      ,decDiscAvail  
      ,decDiscAvailF  
      ,dteDiscExpires  
      ,dteDueDate  
      ,strJEDocID  
      )  
     SELECT ROW_NUMBER() OVER (  
       ORDER BY VendName  
       ) + CONVERT(BIGINT, ISNULL(@lastCustTransId, 0))  
      ,CONVERT(NVARCHAR(100), ISNULL(@strVendName, ''))  
      ,CONVERT(SMALLDATETIME, ISNULL(SystemDate, GETDATE()))  
      ,CONVERT(SMALLDATETIME, ISNULL(JournalDate, GETDATE()))  
      ,CONVERT(NVARCHAR(40), ISNULL(UserName, ''))  
      ,InvPDocID  
      ,CONVERT(NVARCHAR(100), ISNULL(InvDepNumber, ''))  
      ,CONVERT(NVARCHAR(100), ISNULL(PONumber, ''))  
      ,CONVERT(INT, ISNULL(TransType, 0))  
      ,CONVERT(MONEY, ISNULL(InvAmount, 0))  
      ,CONVERT(MONEY, ISNULL(InvAmountF, 0))  
      ,CONVERT(NVARCHAR(6), ISNULL(Currency, ''))  
      ,CONVERT(BIT, ISNULL(IsForeign, 0))  
      ,CONVERT(DECIMAL(20, 6), ISNULL(Exchange, 0)) 
      ,CONVERT(BIT, ISNULL(DocReRated, 0))  
      ,ReRated  
      ,CONVERT(MONEY, ISNULL(ReRateCumltveValue, 0))  
      ,CONVERT(BIT, ISNULL(Settled, 0))  
      ,CONVERT(MONEY, ISNULL(DiscAvail, 0))  
      ,CONVERT(MONEY, ISNULL(DiscAvailF, 0))  
      ,CONVERT(DATETIME, ISNULL(DiscExpires, GETDATE()))  
      ,CONVERT(DATETIME, ISNULL(DueDate, GETDATE()))  
      ,JEDocID  
     FROM @tblVendTrans;  
    END  
  
    IF (  
      SELECT COUNT(*)  
      FROM @tblVendTransDT  
      ) > 0  
    BEGIN  
     INSERT INTO [dbo].[tblVendTransDT] (  
      dteJournalDate  
      ,lngVendTrID  
      ,lngVendPayID  
      ,decAmount  
      ,intTransType  
      ,decAmtOwingAtTime  
      ,bitReversed  
      ,decAmountF  
      ,decAmtOwingAtTimeF  
      ,bitIsForeign  
      )  
     SELECT [JournalDate]  
      ,ROW_NUMBER() OVER (  
       ORDER BY [VendTrID]  
       ) + @lastCustTransId  
      ,[VendPayID]  
      ,CONVERT(MONEY, ISNULL(Amount, 0))  
      ,CONVERT(SMALLINT, ISNULL(TransType, 0))  
      ,CONVERT(MONEY, ISNULL(AmtOwingAtTime, 0))  
      ,CONVERT(BIT, ISNULL(Reversed, 0))  
      ,  
      --IntDate,--CONVERT(SMALLDATETIME, ISNULL(IntDate,GETDATE())) ,        
      CONVERT(MONEY, ISNULL(AmountF, 0))  
      ,CONVERT(MONEY, ISNULL(AmtOwingAtTimeF, 0))  
      ,CONVERT(BIT, ISNULL(IsForeign, 0))  
     FROM @tblVendTransDT;  
    END  
   END  
  
  --Update Vendor YTD purch and balance due amounts        
  UPDATE tblVendors  
  SET decBalDue = (  
    SELECT ISNULL(SUM(tblVendTransDT.decAmount), 0)  
    FROM tblVendTrans  
    INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID  
    WHERE tblVendTrans.strVendName = @strVendName  
     AND tblVendTransDT.bitReversed = 0  
    )  
   ,decYTDPurch = (  
    SELECT ISNULL(SUM(decTotal), 0)  
    FROM tblInvoiceDocP  
    WHERE strVendName = @strVendName  
     AND bitHistoryTrans = 0  
     --AND dteJournalDate >= @CurrentYrStarts        
    )  
   ,decBalDueF = (  
    SELECT ISNULL(SUM(tblVendTransDT.decAmountF), 0)  
    FROM tblVendTrans  
    INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID  
    WHERE tblVendTrans.strVendName = @strVendName  
     AND tblVendTransDT.bitReversed = 0  
    )  
   ,decYTDPurchF = (  
    SELECT ISNULL(SUM(decTotalF), 0)  
    FROM tblInvoiceDocP  
    WHERE strVendName = @strVendName  
     AND bitHistoryTrans = 0  
    ) --AND dteJournalDate >= @CurrentYrStarts        
  WHERE strVendName = @strVendName;  
  
  DECLARE @tblInvVendor_Temp AS TABLE (  
   ID INT IDENTITY(1, 1)  
   ,strPartNumber NVARCHAR(100)  
   ,strVendName NVARCHAR(100)  
   ,strItemCode NVARCHAR(100)  
   ,strItemDesc NVARCHAR(1000)  
   ,intWarrantyDays INT  
   ,decPrice MONEY  
   ,bitPreferred BIT  
   ,decDiscPerc MONEY  
   ,decLandedCostFactor MONEY  
   ,decLocalPrice MONEY  
   );  
  
  --SELECT * FROM @tblInvVendor  
  IF (  
    SELECT COUNT(*)  
    FROM @tblInvVendor  
    ) > 0  
  BEGIN  
   INSERT INTO @tblInvVendor_Temp (  
    strPartNumber  
    ,strVendName  
    ,strItemCode  
    ,strItemDesc  
    ,intWarrantyDays  
    ,decPrice  
    ,bitPreferred  
    ,decDiscPerc  
    ,decLandedCostFactor  
    ,decLocalPrice  
    )  
   SELECT CONVERT(NVARCHAR(100), COL02)  
    ,CONVERT(NVARCHAR(100), COL03)  
    ,CONVERT(NVARCHAR(100), COL04)  
    ,CONVERT(NVARCHAR(100), COL05)  
    ,CONVERT(INT, COL07)  
    ,CONVERT(MONEY, COL08)  
    ,CONVERT(BIT, COL09)  
    ,CONVERT(MONEY, COL10)  
    ,CONVERT(MONEY, COL11)  
    ,CONVERT(MONEY, COL12)  
   FROM @tblInvVendor;  
  
   DECLARE @intMinID AS INT = (  
     SELECT MIN(ID)  
     FROM @tblInvVendor_Temp  
     );  
   DECLARE @intMaxID AS INT = (  
     SELECT MAX(ID)  
     FROM @tblInvVendor_Temp  
     );  
   DECLARE @lngID AS BIGINT;  
   DECLARE @strPartNumber AS NVARCHAR(100);  
   DECLARE @VendName AS NVARCHAR(100)  
   DECLARE @strItemCode AS NVARCHAR(100);  
   DECLARE @strItemDesc AS NVARCHAR(1000);  
   DECLARE @intWarrantyDays INT;  
   DECLARE @decPrice MONEY;  
   DECLARE @bitPreferred BIT;  
   DECLARE @decDiscPerc MONEY;  
   DECLARE @decLandedCostFactor MONEY;  
   DECLARE @decLocalPrice MONEY;  
  
   WHILE 1 = 1  
   BEGIN  
    SELECT @strPartNumber = strPartNumber  
     ,@VendName = strVendName  
     ,@strItemCode = strItemCode  
     ,@strItemDesc = strItemDesc  
     ,@intWarrantyDays = intWarrantyDays  
     ,@decPrice = decPrice  
     ,@bitPreferred = bitPreferred  
     ,@decDiscPerc = decDiscPerc  
     ,@decLandedCostFactor = decLandedCostFactor  
     ,@decLocalPrice = decLocalPrice  
    FROM @tblInvVendor_Temp  
    WHERE ID = @intMinID;  
  
    IF NOT EXISTS (  
      SELECT TOP 1 1  
      FROM tblInvVend  
      WHERE lngID = @lngID  
      )  
    BEGIN  
     INSERT INTO tblInvVend (  
      strPartNumber  
      ,strVendName  
      ,strItemCode  
      ,strItemDesc  
      ,intWarrantyDays  
      ,decPrice  
      ,bitPreferred  
      ,decDiscPerc  
      ,decLandedCostFactor  
      ,decLocalPrice  
      ,decOnHand  
      ,decAvail  
      ,bitOtherCmp  
      ,strUnit  
      )  
     SELECT CONVERT(NVARCHAR(100), ISNULL(@strPartNumber, ''))  
      ,CONVERT(NVARCHAR(100), ISNULL(@strVendName, ''))  
      ,@strItemCode  
      ,@strItemDesc  
      ,@intWarrantyDays  
      ,@decPrice  
      ,@bitPreferred  
      ,@decDiscPerc  
      ,@decLandedCostFactor  
      ,@decLocalPrice  
      ,0  
      ,0  
      ,0  
      ,''  
    END;  
    ELSE  
    BEGIN  
     UPDATE tblInvVend  
     SET strPartNumber = @strPartNumber  
      ,strVendName = @strVendName  
      ,strItemCode = @strItemCode  
      ,strItemDesc = @strItemDesc  
      ,intWarrantyDays = @intWarrantyDays  
      ,decPrice = @decPrice  
      ,bitPreferred = @bitPreferred  
      ,decDiscPerc = @decDiscPerc  
      ,decLandedCostFactor = @decLandedCostFactor  
      ,decLocalPrice = @decLocalPrice  
     WHERE lngID = @lngID;  
    END;  
  
    UPDATE tblInv  
    SET dteLastUpdated = GETDATE()  
    WHERE strPartNumber = @strPartNumber  
  
    IF @intMinID = @intMaxID  
     BREAK  
  
    SET @intMinID += 1  
   END  
  END;

END
GO

CREATE PROCEDURE [dbo].[prGLSegmentSetup_Search_WPF] (@intSegmentId INT = NULL)
AS
SET NOCOUNT ON

SELECT [intSegmentSetupId]
	,[intSegmentId]
	,[strCode]
	,[strDescription]
	,[bitIsPrimary]
	,[intAccType]
	,[intAccClass]
	,[intGroupCode]
FROM [tblGLSegmentSetup]
WHERE intSegmentId = @intSegmentId
ORDER BY strCode
GO

CREATE PROCEDURE [dbo].[RptInvSegMovementGetCustomerData] (
	@IsOptSearch BIT
	,@IsChkInactive BIT
	,@SearchText NVARCHAR(MAX)
	,@blnBPToolsMode BIT
	,@SQUserName VARCHAR(200)
	)
AS
BEGIN
	IF (@IsOptSearch = 1)
	BEGIN
		IF Len(@SearchText) > 2
		BEGIN
			IF (@ISChkInactive = 1)
				SELECT strCustName AS CustomerName
					,strCustDesc AS Description
				FROM tblCustomers
				WHERE (
						strCustName LIKE '%' + @SearchText + '%'
						OR strCustDesc LIKE '%' + @SearchText + '%'
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCustCategory IN (
									SELECT tblCustomerCat.strCustCategory
									FROM tblCustomerCat
									LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
									WHERE ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblCustomerCatSec.strCustCategory)
													FROM tblCustomerCatSec
													WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
													), 0) > 0
											AND tblCustomerCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strCustName
			ELSE
				SELECT strCustName AS CustomerName
					,strCustDesc AS Description
				FROM tblCustomers
				WHERE bitInactive = 0
					AND (
						strCustName LIKE '%' + @SearchText + '%'
						OR strCustDesc LIKE '%' + @SearchText + '%'
						)
					AND (
						(
							@blnBPToolsMode = 0
							AND (
								strCustCategory IN (
									SELECT tblCustomerCat.strCustCategory
									FROM tblCustomerCat
									LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
									WHERE ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(tblCustomerCatSec.strCustCategory)
													FROM tblCustomerCatSec
													WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
													), 0) > 0
											AND tblCustomerCatSec.strUserName = '' + @SQUserName + ''
											)
									)
								)
							)
						)
				ORDER BY strCustName
		END
		ELSE
			RETURN NULL;
	END
	ELSE
	BEGIN
		IF (@ISChkInactive = 1)
			SELECT strCustName AS CustomerName
				,strCustDesc AS Description
			FROM tblCustomers
			WHERE (
					(
						@blnBPToolsMode = 0
						AND (
							strCustCategory IN (
								SELECT tblCustomerCat.strCustCategory
								FROM tblCustomerCat
								LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
								WHERE ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) > 0
										AND tblCustomerCatSec.strUserName = '' + @SQUserName + ''
										)
								)
							)
						)
					)
			ORDER BY strCustName
		ELSE
			SELECT strCustName AS CustomerName
				,strCustDesc AS Description
			FROM tblCustomers
			WHERE bitInactive = 0
				AND (
					(
						@blnBPToolsMode = 0
						AND (
							strCustCategory IN (
								SELECT tblCustomerCat.strCustCategory
								FROM tblCustomerCat
								LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
								WHERE ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(tblCustomerCatSec.strCustCategory)
												FROM tblCustomerCatSec
												WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
												), 0) > 0
										AND tblCustomerCatSec.strUserName = '' + @SQUserName + ''
										)
								)
							)
						)
					)
			ORDER BY strCustName
	END
END
GO

----------------------------------------------------

CREATE PROCEDURE [dbo].[RptInvSegMovementGetItemSeg1Data] (
	@IsChkInactiveSeg1 BIT
	,@IsOptBuyoutItems BIT
	,@IsOptAllItems BIT
	,@blnBPToolsMode BIT
	,@SQUserName VARCHAR(200)
	)
AS
BEGIN
	IF (@IsChkInactiveSeg1 = 0)
		SELECT DISTINCT strItemSegment1 AS ItemSegment1
		FROM tblInv
		WHERE bitItemNumConvUsed = 1
			AND bitInactive = 0
			AND ISNULL(strItemSegment1, '') <> ''
			AND (
				(
					@blnBPToolsMode = 0
					AND (
						strCategory IN (
							SELECT tblInvCat.strCategory
							FROM tblInvCat
							LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(tblInvCatSec.strCategory)
										FROM tblInvCatSec
										WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblInvCatSec.strCategory)
											FROM tblInvCatSec
											WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
											), 0) > 0
									AND tblInvCatSec.strUserName = '' + @SQUserName + ''
									)
							)
						)
					)
				)
			AND (
				(
					@IsOptBuyoutItems = 1
					AND (intType = 11)
					)
					OR (
					@IsOptBuyoutItems = 0
					AND (@IsOptAllItems = 1)
					)
				OR (
					@IsOptBuyoutItems = 0
					AND (@IsOptAllItems = 0)
					AND (intType <> 11)
					)
				)
		ORDER BY strItemSegment1
	ELSE
		SELECT DISTINCT strItemSegment1 AS ItemSegment1
		FROM tblInv
		WHERE bitItemNumConvUsed = 1
			AND ISNULL(strItemSegment1, '') <> ''
			AND (
				(
					@blnBPToolsMode = 0
					AND (
						strCategory IN (
							SELECT tblInvCat.strCategory
							FROM tblInvCat
							LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(tblInvCatSec.strCategory)
										FROM tblInvCatSec
										WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblInvCatSec.strCategory)
											FROM tblInvCatSec
											WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
											), 0) > 0
									AND tblInvCatSec.strUserName = '' + @SQUserName + ''
									)
							)
						)
					)
				)
			AND (
				(
					@IsOptBuyoutItems = 1
					AND (intType = 11)
					)
					OR (
					@IsOptBuyoutItems = 0
					AND (@IsOptAllItems = 1)
					)
				OR (
					@IsOptBuyoutItems = 0
					AND (@IsOptAllItems = 0)
					AND (intType <> 11)
					)
				)
		ORDER BY strItemSegment1
END
GO

----------------------------------------------------

CREATE PROCEDURE [dbo].[RptInvSegMovementGetItemSeg2Data](
@IsChkInactiveSeg2 bit,
@IsOptBuyoutItems bit,
@IsOptAllItems bit,
@blnBPToolsMode bit,
@SQUserName VARCHAR(200)
)  
AS  
BEGIN  
IF(@IsChkInactiveSeg2 = 0)
SELECT DISTINCT strItemSegment2 as ItemSegment2 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment2,'') <> ''
AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+@SQUserName+'')))))
AND ((@IsOptBuyoutItems = 1 AND (intType = 11)) OR (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 1)) OR  (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 0) AND (intType <> 11 )))  ORDER BY strItemSegment2
ELSE
SELECT DISTINCT strItemSegment2 as ItemSegment2 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment2,'') <> ''
AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+@SQUserName+'')))))
AND ((@IsOptBuyoutItems = 1 AND (intType = 11)) OR (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 1)) OR   (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 0) AND (intType <> 11 )))  ORDER BY strItemSegment2
END	
GO

----------------------------------------------------

CREATE PROCEDURE [dbo].[RptInvSegMovementGetItemSeg3Data](
@IsChkInactiveSeg3 bit,
@IsOptBuyoutItems bit,
@IsOptAllItems bit,
@blnBPToolsMode bit,
@SQUserName VARCHAR(200)
)  
AS  
BEGIN  
IF(@IsChkInactiveSeg3 = 0)
SELECT DISTINCT strItemSegment3 as ItemSegment3 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment3,'') <> ''
AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+@SQUserName+'')))))
AND ((@IsOptBuyoutItems = 1 AND (intType = 11)) OR (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 1)) OR  (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 0) AND (intType <> 11 )))  ORDER BY strItemSegment3
ELSE
SELECT DISTINCT strItemSegment3 as ItemSegment3 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment3,'') <> ''
AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+@SQUserName+'')))))
AND ((@IsOptBuyoutItems = 1 AND (intType = 11)) OR (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 1)) OR  (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 0) AND (intType <> 11 )))  ORDER BY strItemSegment3
END	
GO

----------------------------------------------------

CREATE PROCEDURE [dbo].[RptInvSegMovementGetItemSeg4Data](
@IsChkInactiveSeg4 bit,
@IsOptBuyoutItems bit,
@IsOptAllItems bit,
@blnBPToolsMode bit,
@SQUserName VARCHAR(200)
)  
AS  
BEGIN  
IF(@IsChkInactiveSeg4 = 0)
SELECT DISTINCT strItemSegment4 as ItemSegment4 FROM tblInv WHERE bitItemNumConvUsed = 1 AND bitInactive = 0 AND ISNULL(strItemSegment4,'') <> ''
AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+@SQUserName+'')))))
AND ((@IsOptBuyoutItems = 1 AND (intType = 11)) OR (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 1)) OR  (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 0) AND (intType <> 11 )))  ORDER BY strItemSegment4
ELSE
SELECT DISTINCT strItemSegment4 as ItemSegment4 FROM tblInv WHERE bitItemNumConvUsed = 1 AND ISNULL(strItemSegment4,'') <> ''
AND ((@blnBPToolsMode = 0 AND (strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''+@SQUserName+'')))))
AND ((@IsOptBuyoutItems = 1 AND (intType = 11)) OR (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 1)) OR  (@IsOptBuyoutItems = 0 AND (@IsOptAllItems = 0) AND (intType <> 11 )))  ORDER BY strItemSegment4
END	
GO

CREATE PROCEDURE [dbo].[GetCoOptData]
AS
BEGIN
	SELECT 
	bitTransFuture AS TransFuture,
	bitSortInvDesc AS SortInvDesc,
	bitUDFinCat AS UDFinCat,
	bitCreditRequestActive AS CreditRequestActive,
	bitItemNumConvActive AS ItemNumConvActive,
	intARCreateReturn AS ARCreateReturn,
	intAPCreateReturn AS APCreateReturn,
	intReportTimeoutVPN AS ReportTimeoutVPN,
	intReportTimeout AS ReportTimeout,
	bitDisableAirtime AS DisableAirtime,
	bitARCompoundedInt AS ARCompoundedInt,
	bitARDelAdvSO AS ARDelAdvSO,
	bitNonIntegrated AS NonIntegrated,
	bitWHAutoIssuePT AS WHAutoIssuePT,
	bitWHAutoPrintPT AS WHAutoPrintPT,
	bitManStandardCost AS ManStandardCost,
	bitAllowBin AS AllowBin,
	bitARLaybySO AS ARLaybySO,
	bitIREmpMandatory AS IREmpMandatory,
	bitIRIssueToInvoice AS IRIssueToInvoice,
	bitIsCreditNoteApprovalsActivated AS IsCreditNoteApprovalsActivated,
	bitIsGeneralLedgerJournalApprovalsActivated AS IsGeneralLedgerJournalApprovalsActivated,
	bitIsCustAttchEmailPassword AS PL_IsCustAttchEmailPassword,
	intWHOverPicking AS WHOverPicking,
	bitManScaleRead AS ManScaleRead,
	strManScaleFolder AS ManScaleFolder,
	strManScaleFolder,
	intSOUnavailable,
    strARLaybyPricelist as ARLaybyPricelist,
	bitIsVendAttchEmailPassword as IsVendAttchEmailPassword,
	bitIsZeroWorkshopItemInvoiced as IsZeroWorkshopItemInvoiced,
	intGLMode as GLMode,
	bitCurrencyHasDecimal as CurrencyHasDecimal,
	intDecimalQuantity as DecimalQuantity,
	bitProjMan AS IsProjMan
	FROM tblCoOpts
END
GO

CREATE PROCEDURE [dbo].[GetActualInvManValue] (
	@SQJBDocID VARCHAR(100)
	,@SQWCSearch VARCHAR(40)
	)
AS
BEGIN
	SELECT ISNULL(SUM(tblManWIPCompInv.decPostAmount), 0) AS AvailQty
	FROM tblManWIP
	INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID
	WHERE tblManWIP.strJBDocID = @SQJBDocID
		AND tblManWIP.strWCCode LIKE @SQWCSearch
END
GO

CREATE PROCEDURE [dbo].[FetchBOMItemRevDate] (
	@SQPartNumber VARCHAR(100)
	,@SQLocation VARCHAR(20)
	)
AS
BEGIN
	SELECT lngManBOMID AS ManBOMID
		,dteRevDate AS RevDate
		,decQty AS Qty
		,bitInactive AS Inactive
	FROM tblManBOM
	WHERE strPartNumber = @SQPartNumber
		AND strLocation = @SQLocation
	ORDER BY dteRevDate DESC
END
GO

CREATE PROCEDURE [dbo].[InsertJobRec] (
	@SQdteSystemDate DATETIME
	,@SQdteJournalDate DATETIME
	,@SQdteRequired DATETIME
	,@SQstrUserName VARCHAR(40)
	,@SQstrReference VARCHAR(100)
	,@SQstrCustName VARCHAR(100)
	,@SQstrWCCode VARCHAR(40)
	,@SQstrJBDocID VARCHAR(100)
	,@SQintType INT
	,@SQstrParentBOM VARCHAR(200)
	,@SQbitIsExploded BIT
	)
AS
BEGIN
	INSERT INTO [dbo].[tblManJob] (
		[strJBDocID]
		,[dteSystemDate]
		,[dteJournalDate]
		,[dteRequired]
		,[strUserName]
		,[strReference]
		,[strCustName]
		,[intType]
		,[strWCCode]
		,[decTotPartAmount]
		,[strFileName]
		,[strParentBOM]
		,[bitIsExploded]
		)
	VALUES (
		@SQstrJBDocID
		,@SQdteSystemDate
		,@SQdteJournalDate
		,@SQdteRequired
		,@SQstrUserName
		,@SQstrReference
		,@SQstrCustName
		,@SQintType
		,@SQstrWCCode
		,0
		,''
		,@SQstrParentBOM
		,@SQbitIsExploded
		)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertJobByProduct](  
@SQstrJBDocID varchar(100),  
@SQstrPartNumber varchar(100),  
@SQstrLocation varchar(20),  
@SQdecBOMQty money,  
@SQdecManQty money,  
@SQstrDesc varchar(1000),  
@SQdteRevDate DateTime,
@SONumber NVARCHAR(200)=''
)  
AS  
BEGIN  
INSERT INTO tblManJobByProd VALUES (@SQstrJBDocID,@SQstrPartNumber,@SQstrLocation,@SQdecBOMQty,@SQdecManQty,@SQstrDesc,@SQdteRevDate, @SONumber)  
END
GO

CREATE PROCEDURE [dbo].[InsertJobWorkCenter] (
	@SQstrJBDocID VARCHAR(100)
	,@SQstrWCCode VARCHAR(40)
	,@SQstrNotes VARCHAR(1000)
	)
AS
BEGIN
	INSERT INTO tblManJobOp (
		strJBDocID
		,strWCCode
		,strNotes
		)
	VALUES (
		@SQstrJBDocID
		,@SQstrWCCode
		,@SQstrNotes
		)
END
GO

CREATE PROCEDURE [dbo].[GetActualLabManValue] (
	@SQJBDocID VARCHAR(100)
	,@SQWCSearch VARCHAR(40)
	)
AS
BEGIN
	SELECT ISNULL(SUM(tblManWIPCompLab.decPostAmount), 0) AS AvailQty
	FROM tblManWIP
	INNER JOIN tblManWIPCompLab ON tblManWIP.strWIPDocID = tblManWIPCompLab.strWIPDocID
	WHERE tblManWIP.strJBDocID = @SQJBDocID
		AND tblManWIP.strWCCode LIKE @SQWCSearch
END
GO

CREATE PROCEDURE [dbo].[FetchStockUnitCoast] (@SQPartNumber VARCHAR(100))
AS
BEGIN
	SELECT strStockUnit AS StockUnit
		,decStandardCost AS StandardCost
	FROM tblInv
	WHERE strPartNumber = @SQPartNumber
		OR strBarCode = @SQPartNumber
END
GO


CREATE PROCEDURE [dbo].[GetActualMachManValue] (
	@SQJBDocID VARCHAR(100)
	,@SQWCSearch VARCHAR(40)
	)
AS
BEGIN
	SELECT ISNULL(SUM(tblManWIPCompMach.decPostAmount), 0) AS AvailQty
	FROM tblManWIP
	INNER JOIN tblManWIPCompMach ON tblManWIP.strWIPDocID = tblManWIPCompMach.strWIPDocID
	WHERE tblManWIP.strJBDocID = @SQJBDocID
		AND tblManWIP.strWCCode LIKE @SQWCSearch
END
GO

CREATE PROCEDURE [dbo].[GetActualOverheadManValue] (
	@SQJBDocID VARCHAR(100)
	,@SQWCSearch VARCHAR(40)
	)
AS
BEGIN
	SELECT ISNULL(SUM(tblManWIPCompOverhead.decPostAmount), 0) AS AvailQty
	FROM tblManWIP
	INNER JOIN tblManWIPCompOverhead ON tblManWIP.strWIPDocID = tblManWIPCompOverhead.strWIPDocID
	WHERE tblManWIP.strJBDocID = @SQJBDocID
		AND tblManWIP.strWCCode LIKE @SQWCSearch
END
GO



----------------------------------------------------
CREATE PROCEDURE [dbo].GetdteMaxJourDate        
AS        
BEGIN  
SELECT MAX(dteJournalDate) FROM tblJournal  
END
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].GetdteMaxJourDateLY       
AS        
BEGIN  
SELECT MAX(dteJournalDate) FROM tblJournalLY  
END
Go

----------------------------------------------------
create PROCEDURE [dbo].GetRptInvPurchaseBudgetReportData            
(            
@SQVendName nvarchar(max),            
@SQStart datetime ,   
@SQEnd datetime    
)            
AS            
BEGIN          
SELECT strPartNumber, strDesc, tblInvPurchaseTargetBudgetInfo.strVendName, dteDate, strDocNumber, decYearToDateBudget,   
decPeriodBudget, decPeriodCommitment, decPeriodVariance, decAmount, strReference, strApprovedBy, strReasonCode,  
tblVendors.strVendDesc as strVendDesc  
FROM tblInvPurchaseTargetBudgetInfo   
INNER JOIN tblVendors ON tblInvPurchaseTargetBudgetInfo.strVendName = tblVendors.strVendName   
WHERE strTransactionType = 'PUOR' AND (decPeriodVariance < 0 OR decYearToDateVariance < 0) AND decYearToDateBudget > 0   
AND dteDate BETWEEN @SQStart AND @SQEnd AND tblInvPurchaseTargetBudgetInfo.strVendName IN (SELECT * FROM fnSplitStringAsTable(@SQVendName, ','))  
ORDER BY dteDate, tblInvPurchaseTargetBudgetInfo.strVendName,strDocNumber  
END 
Go
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptPendingPQSummeryListReportData]    
(    
@ItemList nvarchar(max)  
)    
AS    
BEGIN   
SELECT tblOrderDocP.strOrdPDocID, tblOrderDocP.dteJournalDate, tblOrderDocP.dteRequired, tblOrderDocP.decTotal,  
SUM(ISNULL((CASE tblOrderDocPDT.decBuyQty WHEN tblOrderDocPDT.decBuyQtyRemain THEN (tblOrderDocPDT.decLineTotExc + tblOrderDocPDT.decLineTaxAmt)   
ELSE ((tblOrderDocPDT.decLineTotExc + tblOrderDocPDT.decLineTaxAmt) / tblOrderDocPDT.decBuyQty) * tblOrderDocPDT.decBuyQtyRemain END),0)) as decBuyQty,   
tblOrderDocP.intDocType   
FROM tblOrderDocP   
INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID   
WHERE (tblOrderDocP.intDocType = 2) AND (tblOrderDocP.bitCleared = 0) AND (strVendname IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
GROUP BY tblOrderDocP.strOrdPDocID, tblOrderDocP.dteJournalDate, tblOrderDocP.dteRequired, tblOrderDocP.decTotal, tblOrderDocP.intDocType   
ORDER BY tblOrderDocP.dteJournalDate  
END    
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptPendingPQListReportData]    
(    
@ItemList nvarchar(max)  
)    
AS    
BEGIN   
SELECT tblOrderDocP.strOrdPDocID, tblOrderDocP.dteJournalDate, tblOrderDocP.dteRequired, tblOrderDocP.decTotal,   
CASE tblOrderDocPDT.decBuyQty WHEN tblOrderDocPDT.decBuyQtyRemain THEN (tblOrderDocPDT.decLineTotExc + tblOrderDocPDT.decLineTaxAmt)   
ELSE ((tblOrderDocPDT.decLineTotExc + tblOrderDocPDT.decLineTaxAmt) / tblOrderDocPDT.decBuyQty) * tblOrderDocPDT.decBuyQtyRemain END as decRemain,   
tblOrderDocPDT.strPartNumber, tblOrderDocPDT.strBuyUnit, tblOrderDocPDT.decBuyQty, tblOrderDocPDT.decBuyQtyRemain, tblOrderDocPDT.strPartDesc,   
tblOrderDocP.intDocType   
FROM tblOrderDocP   
INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID   
WHERE (tblOrderDocP.intDocType = 2) AND (tblOrderDocP.bitCleared = 0) AND (strVendname IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
ORDER BY tblOrderDocP.dteJournalDate  
END 
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].GetRptVendorAccrualItems     
(      
@SearchText nvarchar(max),      
@IsInactive bit,      
@IsCheckedSearch bit      
)      
AS      
BEGIN      
IF(@IsCheckedSearch = 1)       
BEGIN      
SELECT strPartNumber as VendorName, strDesc as Description     
FROM tblInv WHERE  tblInv.bitOtherCmp = 0   
AND bitInactive = CASE WHEN @IsInactive = 0 THEN 0 ELSE bitInactive END    
AND (strPartNumber LIKE @SearchText + '%' OR strDesc LIKE @SearchText + '%')    
ORDER BY strPartNumber  
END     
ELSE    
BEGIN    
SELECT strPartNumber as VendorName, strDesc as Description   
FROM tblInv WHERE tblInv.bitOtherCmp = 0   
and bitInactive = CASE WHEN @IsInactive = 0 THEN 0 ELSE bitInactive END    
ORDER BY  strPartNumber    
END     
END   
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].GetRptVendorAccrualItemsReportData          
(          
@VendorList nvarchar(max),          
@SQEnd datetime  
)          
AS          
BEGIN        
SELECT tblOrderDocPG.strVendName, tblVendors.strVendDesc, tblOrderDocPG.dteJournalDate, tblOrderDocPG.strOrdPGDocID, tblOrderDocPG.strOrdPDocID,   
tblOrderDocPG.strDelNoteNo, tblOrderDocPGDT.strPartNumber, tblOrderDocPGDT.strPartDesc, tblOrderDocPGDT.strLocation,  
tblOrderDocPGDT.decStockQtyRemain, tblOrderDocPGDT.strStockUnit, tblOrderDocPGDT.decLineTotExc, tblOrderDocPGDT.decPriceEaExc   
FROM tblOrderDocPG   
INNER JOIN tblVendors ON tblOrderDocPG.strVendName = tblVendors.strVendName   
INNER JOIN tblOrderDocPGDT ON tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPG.strOrdPGDocID   
WHERE (tblOrderDocPGDT.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@VendorList, ',')))  
and (tblOrderDocPG.bitCleared = 0) AND (tblOrderDocPG.dteJournalDate <= @SQEnd)   
ORDER BY tblOrderDocPGDT.strPartNumber, tblOrderDocPG.dteJournalDate  
END 
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptVendorAccrualVendorReportData]          
(          
@VendorList nvarchar(max),          
@SQEnd datetime  
)          
AS          
BEGIN        
SELECT tblOrderDocPG.strVendName, tblVendors.strVendDesc, tblOrderDocPG.dteJournalDate, tblOrderDocPG.strOrdPGDocID, tblOrderDocPG.strOrdPDocID,   
tblOrderDocPG.strDelNoteNo, tblOrderDocPGDT.strPartNumber, tblOrderDocPGDT.strPartDesc, tblOrderDocPGDT.strLocation,   
tblOrderDocPGDT.decStockGRVQtyRemain, tblOrderDocPGDT.strStockUnit, 
CASE WHEN tblOrderDocPGDT.decLineTotExc = 0 OR tblOrderDocPGDT.decStockQtyRemain = 0 THEN 0 ELSE ROUND((tblOrderDocPGDT.decLineTotExc / tblOrderDocPGDT.decStockQtyRemain) * tblOrderDocPGDT.decStockGRVQtyRemain, 2) END AS decLineTotExc, tblOrderDocPGDT.decPriceEaExc   
FROM tblOrderDocPG   
INNER JOIN tblVendors ON tblOrderDocPG.strVendName = tblVendors.strVendName   
INNER JOIN tblOrderDocPGDT ON tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPG.strOrdPGDocID   
WHERE  (tblOrderDocPG.strVendName IN (SELECT * FROM fnSplitStringAsTable(@VendorList, ',')))  
AND (tblOrderDocPG.bitCleared = 0) AND (tblOrderDocPG.dteJournalDate <= @SQEnd)   
ORDER BY tblOrderDocPG.strVendName, tblOrderDocPG.dteJournalDate  
END   
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].GetAPRptRptVendorPurchDrilDownReportData    
(    
@SQPartNumber nvarchar(max),    
@SQVendName nvarchar(max),    
@SQStart datetime,    
@SQEnd datetime  
)    
AS    
BEGIN    
SELECT tblInvoiceDocP.strVendName, (SELECT strVendDesc FROM tblVendors WHERE strVendName   
= tblInvoiceDocP.strVendName) as strVendDesc, tblInvoiceDocP.dteJournalDate, tblInvoiceDocPDT.strPartNumber,  
tblInvoiceDocPDT.strPartDesc, tblInvoiceDocP.strInvPDocID, tblInvoiceDocP.strVendInvNo,  
tblInvoiceDocP.lngJourID, tblInvoiceDocPDT.decBuyQty, tblInvoiceDocPDT.strBuyUnit,  
tblInvoiceDocPDT.decStockQty, tblInvoiceDocPDT.strStockUnit, tblInvoiceDocPDT.decPriceEaExc,   
tblInvoiceDocPDT.decLineTotExc, tblVendTrans.intTransType  
FROM tblInvoiceDocP INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID  
INNER JOIN tblVendTrans ON tblInvoiceDocP.strInvPDocID = tblVendTrans.strInvPDocID  
WHERE (tblInvoiceDocPDT.strPartNumber = @SQPartNumber)  
AND (tblInvoiceDocP.strVendName = @SQVendName)  
AND(tblInvoiceDocP.bitHistoryTrans = 0) AND (tblInvoiceDocP.dteJournalDate BETWEEN @SQStart AND @SQEnd)  
ORDER BY tblInvoiceDocP.strVendName, tblInvoiceDocP.dteJournalDate, tblInvoiceDocPDT.strPartNumber  
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetAPRptRptVendorPurchReportData] (
	@ItemList NVARCHAR(max)
	,@VendorList NVARCHAR(max)
	,@Filter INT
	,@SQStart DATETIME
	,@SQEnd DATETIME
	,@IsInActive BIT
	,@blnBPToolsMode BIT
	,@SQUserName NVARCHAR(max)
	)
AS
BEGIN
	IF (@Filter = 0) --Assets          
	BEGIN
		SELECT tblInvoiceDocP.strVendName
			,strVendDesc
			,tblInvoiceDocP.dteJournalDate
			,tblInvoiceDocPDT.strPartNumber
			,tblInvoiceDocPDT.strPartDesc
			,tblInvoiceDocP.strInvPDocID
			,tblInvoiceDocP.strVendInvNo
			,ISNULL(tblInvoiceDocP.lngJourID, 0) AS lngJourID
			,tblInvoiceDocPDT.decBuyQty
			,tblInvoiceDocPDT.strBuyUnit
			,tblInvoiceDocPDT.decStockQty
			,tblInvoiceDocPDT.strStockUnit
			,tblInvoiceDocPDT.decPriceEaExc
			,tblInvoiceDocPDT.decLineTotExc
			,tblVendTrans.intTransType
		FROM tblInvoiceDocP
		INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName
		INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
		INNER JOIN tblVendTrans ON tblInvoiceDocP.strInvPDocID = tblVendTrans.strInvPDocID
		INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber
			AND tblInvoiceDocPDT.strLocation = tblInv.strLocName
		LEFT JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctset
		LEFT JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
		WHERE (
				tblAccounts.intGLNumber IN (
					SELECT *
					FROM fnSplitStringAsTable(@ItemList, ',')
					)
				)
			AND (
				tblInvoiceDocP.strVendName IN (
					SELECT *
					FROM fnSplitStringAsTable(@VendorList, ',')
					)
				)
			AND (
				tblAccounts.bitInactive = CASE 
					WHEN @IsInactive = 0
						THEN 0
					ELSE tblAccounts.bitInactive
					END
				)
			AND (tblInvoiceDocP.bitHistoryTrans = 0)
			AND (
				tblInvoiceDocP.dteJournalDate BETWEEN @SQStart
					AND @SQEnd
				)
		ORDER BY tblInvoiceDocP.strVendName
			,tblInvoiceDocP.dteJournalDate
			,tblInvoiceDocPDT.strPartNumber
	END
	ELSE IF (@Filter = 2) --AccountSets          
	BEGIN
		SELECT tblInvoiceDocP.strVendName
			,strVendDesc
			,tblInvoiceDocP.dteJournalDate
			,tblInvoiceDocPDT.strPartNumber
			,tblInvoiceDocPDT.strPartDesc
			,tblInvoiceDocP.strInvPDocID
			,tblInvoiceDocP.strVendInvNo
			,ISNULL(tblInvoiceDocP.lngJourID, 0) AS lngJourID
			,tblInvoiceDocPDT.decBuyQty
			,tblInvoiceDocPDT.strBuyUnit
			,tblInvoiceDocPDT.decStockQty
			,tblInvoiceDocPDT.strStockUnit
			,tblInvoiceDocPDT.decPriceEaExc
			,tblInvoiceDocPDT.decLineTotExc
			,tblVendTrans.intTransType
		FROM tblInvoiceDocP
		INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName
		INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
		INNER JOIN tblVendTrans ON tblInvoiceDocP.strInvPDocID = tblVendTrans.strInvPDocID
		INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber
			AND tblInvoiceDocPDT.strLocation = tblInv.strLocName
		LEFT JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctset
		LEFT JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
		WHERE (
				tblInv.strAcctSet IN (
					SELECT *
					FROM fnSplitStringAsTable(@ItemList, ',')
					)
				)
			AND (
				tblInvoiceDocP.strVendName IN (
					SELECT *
					FROM fnSplitStringAsTable(@VendorList, ',')
					)
				)
			AND (
				blnInactive = CASE 
					WHEN @IsInactive = 0
						THEN 0
					ELSE blnInactive
					END
				)
			AND (tblInvoiceDocP.bitHistoryTrans = 0)
			AND (
				tblInvoiceDocP.dteJournalDate BETWEEN @SQStart
					AND @SQEnd
				)
		ORDER BY tblInvoiceDocP.strVendName
			,tblInvoiceDocP.dteJournalDate
			,tblInvoiceDocPDT.strPartNumber
	END
	ELSE IF (@Filter = 3) --Items          
	BEGIN
		SELECT tblInvoiceDocP.strVendName
			,strVendDesc
			,tblInvoiceDocP.dteJournalDate
			,tblInvoiceDocPDT.strPartNumber
			,tblInvoiceDocPDT.strPartDesc
			,tblInvoiceDocP.strInvPDocID
			,tblInvoiceDocP.strVendInvNo
			,ISNULL(tblInvoiceDocP.lngJourID, 0) AS lngJourID
			,tblInvoiceDocPDT.decBuyQty
			,tblInvoiceDocPDT.strBuyUnit
			,tblInvoiceDocPDT.decStockQty
			,tblInvoiceDocPDT.strStockUnit
			,tblInvoiceDocPDT.decPriceEaExc
			,tblInvoiceDocPDT.decLineTotExc
			,tblVendTrans.intTransType
		FROM tblInvoiceDocP
		INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName
		INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
		INNER JOIN tblVendTrans ON tblInvoiceDocP.strInvPDocID = tblVendTrans.strInvPDocID
		INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber
			AND tblInvoiceDocPDT.strLocation = tblInv.strLocName
		LEFT JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctset
		LEFT JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
		WHERE (
				tblInvoiceDocPDT.strPartNumber IN (
					SELECT *
					FROM fnSplitStringAsTable(@ItemList, ',')
					)
				)
			AND (
				tblInvoiceDocP.strVendName IN (
					SELECT *
					FROM fnSplitStringAsTable(@VendorList, ',')
					)
				)
			AND (
				(
					tblInv.bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE tblInv.bitInactive
						END
					)
				--AND tblInv.bitOtherCmp = 0
				)
			AND (tblInvoiceDocP.bitHistoryTrans = 0)
			AND (
				tblInvoiceDocP.dteJournalDate BETWEEN @SQStart
					AND @SQEnd
				)
		ORDER BY tblInvoiceDocP.strVendName
			,tblInvoiceDocP.dteJournalDate
			,tblInvoiceDocPDT.strPartNumber
	END
	ELSE IF (@Filter = 4) --Service          
	BEGIN
		SELECT tblInvoiceDocP.strVendName
			,strVendDesc
			,tblInvoiceDocP.dteJournalDate
			,tblInvoiceDocPDT.strPartNumber
			,tblInvoiceDocPDT.strPartDesc
			,tblInvoiceDocP.strInvPDocID
			,tblInvoiceDocP.strVendInvNo
			,ISNULL(tblInvoiceDocP.lngJourID, 0) AS lngJourID
			,tblInvoiceDocPDT.decBuyQty
			,tblInvoiceDocPDT.strBuyUnit
			,tblInvoiceDocPDT.decStockQty
			,tblInvoiceDocPDT.strStockUnit
			,tblInvoiceDocPDT.decPriceEaExc
			,tblInvoiceDocPDT.decLineTotExc
			,tblVendTrans.intTransType
		FROM tblInvoiceDocP
		INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName
		INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
		INNER JOIN tblVendTrans ON tblInvoiceDocP.strInvPDocID = tblVendTrans.strInvPDocID
		INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber
			AND tblInvoiceDocPDT.strLocation = tblInv.strLocName
		LEFT JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctset
		LEFT JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
		WHERE (
				tblInvoiceDocPDT.strPartNumber IN (
					SELECT *
					FROM fnSplitStringAsTable(@ItemList, ',')
					)
				)
			AND (
				tblInvoiceDocP.strVendName IN (
					SELECT *
					FROM fnSplitStringAsTable(@VendorList, ',')
					)
				)
			AND (
				(
					tblInv.bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE tblInv.bitInactive
						END
					)
				--AND tblInv.bitOtherCmp = 0
				)
			AND (tblInvoiceDocP.bitHistoryTrans = 0)
			AND (
				tblInvoiceDocP.dteJournalDate BETWEEN @SQStart
					AND @SQEnd
				)
		ORDER BY tblInvoiceDocP.strVendName
			,tblInvoiceDocP.dteJournalDate
			,tblInvoiceDocPDT.strPartNumber
	END
	ELSE IF (@Filter = 6) --All          
	BEGIN
		IF (@blnBPToolsMode = 0)
		BEGIN
			SELECT tblInvoiceDocP.strVendName
				,strVendDesc
				,tblInvoiceDocP.dteJournalDate
				,tblInvoiceDocPDT.strPartNumber
				,tblInvoiceDocPDT.strPartDesc
				,tblInvoiceDocP.strInvPDocID
				,tblInvoiceDocP.strVendInvNo
				,ISNULL(tblInvoiceDocP.lngJourID, 0) AS lngJourID
				,tblInvoiceDocPDT.decBuyQty
				,tblInvoiceDocPDT.strBuyUnit
				,tblInvoiceDocPDT.decStockQty
				,tblInvoiceDocPDT.strStockUnit
				,tblInvoiceDocPDT.decPriceEaExc
				,tblInvoiceDocPDT.decLineTotExc
				,tblVendTrans.intTransType
			FROM tblInvoiceDocP
			INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName
			INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
			INNER JOIN tblVendTrans ON tblInvoiceDocP.strInvPDocID = tblVendTrans.strInvPDocID
			WHERE tblInvoiceDocPDT.strPartNumber IN (
					SELECT strPartNumber
					FROM tblInv
					WHERE strCategory IN (
							SELECT tblInvCat.strCategory
							FROM tblInvCat
							LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(tblInvCatSec.strCategory)
										FROM tblInvCatSec
										WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblInvCatSec.strCategory)
											FROM tblInvCatSec
											WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
											), 0) > 0
									AND tblInvCatSec.strUserName = @SQUserName
									)
							)
						OR (intType = 5)
					)
				AND (tblInvoiceDocP.bitHistoryTrans = 0)
				AND (
					tblInvoiceDocP.dteJournalDate BETWEEN @SQStart
						AND @SQEnd
					)
			ORDER BY tblInvoiceDocP.strVendName
				,tblInvoiceDocP.dteJournalDate
				,tblInvoiceDocPDT.strPartNumber
		END
		ELSE
		BEGIN
			SELECT tblInvoiceDocP.strVendName
				,strVendDesc
				,tblInvoiceDocP.dteJournalDate
				,tblInvoiceDocPDT.strPartNumber
				,tblInvoiceDocPDT.strPartDesc
				,tblInvoiceDocP.strInvPDocID
				,tblInvoiceDocP.strVendInvNo
				,ISNULL(tblInvoiceDocP.lngJourID, 0) AS lngJourID
				,tblInvoiceDocPDT.decBuyQty
				,tblInvoiceDocPDT.strBuyUnit
				,tblInvoiceDocPDT.decStockQty
				,tblInvoiceDocPDT.strStockUnit
				,tblInvoiceDocPDT.decPriceEaExc
				,tblInvoiceDocPDT.decLineTotExc
				,tblVendTrans.intTransType
			FROM tblInvoiceDocP
			INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName
			INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
			INNER JOIN tblVendTrans ON tblInvoiceDocP.strInvPDocID = tblVendTrans.strInvPDocID
			WHERE (
					tblInvoiceDocPDT.strPartNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND (
					tblInvoiceDocP.strVendName IN (
						SELECT *
						FROM fnSplitStringAsTable(@VendorList, ',')
						)
					)
				AND (tblInvoiceDocP.bitHistoryTrans = 0)
				AND (
					tblInvoiceDocP.dteJournalDate BETWEEN @SQStart
						AND @SQEnd
					)
			ORDER BY tblInvoiceDocP.strVendName
				,tblInvoiceDocP.dteJournalDate
				,tblInvoiceDocPDT.strPartNumber
		END
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetAPRptRptVendorPurchSummaryReportData] (
	@ItemList NVARCHAR(max)
	,@VendorList NVARCHAR(max)
	,@Filter INT
	,@SQStart DATETIME
	,@SQEnd DATETIME
	,@IsInActive BIT
	,@blnBPToolsMode BIT
	,@SQUserName NVARCHAR(max)
	)
AS
BEGIN
	IF (@Filter = 0) --Assets            
	BEGIN
		SELECT tblinvoicedocp.strvendname
			,strvenddesc
			,tblinvoicedocpdt.strpartnumber
			,tblinvoicedocpdt.strpartdesc
			,Cast(Count(tblinvoicedocpdt.strpartnumber) AS MONEY) AS decPartNumber
			,Sum(tblinvoicedocpdt.decbuyqty) AS decBuyQty
			,tblinvoicedocpdt.strbuyunit
			,Sum(tblinvoicedocpdt.decstockqty) AS decStockQty
			,tblinvoicedocpdt.strstockunit
			,CASE 
				WHEN Sum(tblinvoicedocpdt.declinetotexc) = 0
					OR Sum(tblinvoicedocpdt.decbuyqty) = 0
					THEN 0
				ELSE Sum(tblinvoicedocpdt.declinetotexc) / Sum(tblinvoicedocpdt.decbuyqty)
				END AS UnitCost
			,Sum(tblinvoicedocpdt.declinetotexc) AS decLineTotExc
		FROM tblinvoicedocp
		INNER JOIN tblvendors ON tblinvoicedocp.strvendname = tblvendors.strvendname
		INNER JOIN tblinvoicedocpdt ON tblinvoicedocp.strinvpdocid = tblinvoicedocpdt.strinvpdocid
		INNER JOIN dbo.Fntblinvforlocjoin() tblInv ON tblinvoicedocpdt.strpartnumber = tblInv.strpartnumber
			AND tblinvoicedocpdt.strlocation = tblInv.strlocname
		LEFT JOIN tblaccountsets ON tblInv.stracctset = tblaccountsets.stracctset
		LEFT JOIN tblaccounts ON tblaccountsets.intglasset = tblaccounts.intglnumber
		WHERE (
				tblaccounts.intglnumber IN (
					SELECT *
					FROM Fnsplitstringastable(@ItemList, ',')
					)
				)
			AND (
				tblinvoicedocp.strvendname IN (
					SELECT *
					FROM Fnsplitstringastable(@VendorList, ',')
					)
				)
			AND (
				tblaccounts.bitinactive = CASE 
					WHEN @IsInactive = 0
						THEN 0
					ELSE tblaccounts.bitinactive
					END
				)
			AND (tblinvoicedocp.bithistorytrans = 0)
			AND (
				tblinvoicedocp.dtejournaldate BETWEEN @SQStart
					AND @SQEnd
				)
		GROUP BY tblinvoicedocp.strvendname
			,tblvendors.strvenddesc
			,tblinvoicedocpdt.strpartnumber
			,tblinvoicedocpdt.strpartdesc
			,tblinvoicedocpdt.strbuyunit
			,tblinvoicedocpdt.strstockunit
		HAVING (
				Sum(tblinvoicedocpdt.decbuyqty) <> 0
				OR Sum(tblinvoicedocpdt.declinetotexc) <> 0
				)
		ORDER BY tblinvoicedocp.strvendname
			,tblinvoicedocpdt.strpartnumber
	END
	ELSE IF (@Filter = 2) --AccountSets            
	BEGIN
		SELECT tblinvoicedocp.strvendname
			,strvenddesc
			,tblinvoicedocpdt.strpartnumber
			,tblinvoicedocpdt.strpartdesc
			,Cast(Count(tblinvoicedocpdt.strpartnumber) AS MONEY) AS decPartNumber
			,Sum(tblinvoicedocpdt.decbuyqty) AS decBuyQty
			,tblinvoicedocpdt.strbuyunit
			,Sum(tblinvoicedocpdt.decstockqty) AS decStockQty
			,tblinvoicedocpdt.strstockunit
			,CASE 
				WHEN Sum(tblinvoicedocpdt.declinetotexc) = 0
					OR Sum(tblinvoicedocpdt.decbuyqty) = 0
					THEN 0
				ELSE Sum(tblinvoicedocpdt.declinetotexc) / Sum(tblinvoicedocpdt.decbuyqty)
				END AS UnitCost
			,Sum(tblinvoicedocpdt.declinetotexc) AS decLineTotExc
		FROM tblinvoicedocp
		INNER JOIN tblvendors ON tblinvoicedocp.strvendname = tblvendors.strvendname
		INNER JOIN tblinvoicedocpdt ON tblinvoicedocp.strinvpdocid = tblinvoicedocpdt.strinvpdocid
		INNER JOIN dbo.Fntblinvforlocjoin() tblInv ON tblinvoicedocpdt.strpartnumber = tblInv.strpartnumber
			AND tblinvoicedocpdt.strlocation = tblInv.strlocname
		LEFT JOIN tblaccountsets ON tblInv.stracctset = tblaccountsets.stracctset
		LEFT JOIN tblaccounts ON tblaccountsets.intglasset = tblaccounts.intglnumber
		WHERE (
				tblInv.stracctset IN (
					SELECT *
					FROM Fnsplitstringastable(@ItemList, ',')
					)
				)
			AND (
				tblinvoicedocp.strvendname IN (
					SELECT *
					FROM Fnsplitstringastable(@VendorList, ',')
					)
				)
			AND (
				tblaccountsets.blninactive = CASE 
					WHEN @IsInactive = 0
						THEN 0
					ELSE blninactive
					END
				)
			AND (tblinvoicedocp.bithistorytrans = 0)
			AND (
				tblinvoicedocp.dtejournaldate BETWEEN @SQStart
					AND @SQEnd
				)
		GROUP BY tblinvoicedocp.strvendname
			,tblvendors.strvenddesc
			,tblinvoicedocpdt.strpartnumber
			,tblinvoicedocpdt.strpartdesc
			,tblinvoicedocpdt.strbuyunit
			,tblinvoicedocpdt.strstockunit
		HAVING (
				Sum(tblinvoicedocpdt.decbuyqty) <> 0
				OR Sum(tblinvoicedocpdt.declinetotexc) <> 0
				)
		ORDER BY tblinvoicedocp.strvendname
			,tblinvoicedocpdt.strpartnumber
	END
	ELSE IF (@Filter = 3) --Items            
	BEGIN
		SELECT tblinvoicedocp.strvendname
			,strvenddesc
			,tblinvoicedocpdt.strpartnumber
			,tblinvoicedocpdt.strpartdesc
			,Cast(Count(tblinvoicedocpdt.strpartnumber) AS MONEY) AS decPartNumber
			,Sum(tblinvoicedocpdt.decbuyqty) AS decBuyQty
			,tblinvoicedocpdt.strbuyunit
			,Sum(tblinvoicedocpdt.decstockqty) AS decStockQty
			,tblinvoicedocpdt.strstockunit
			,CASE 
				WHEN Sum(tblinvoicedocpdt.declinetotexc) = 0
					OR Sum(tblinvoicedocpdt.decbuyqty) = 0
					THEN 0
				ELSE Sum(tblinvoicedocpdt.declinetotexc) / Sum(tblinvoicedocpdt.decbuyqty)
				END AS UnitCost
			,Sum(tblinvoicedocpdt.declinetotexc) AS decLineTotExc
		FROM tblinvoicedocp
		INNER JOIN tblvendors ON tblinvoicedocp.strvendname = tblvendors.strvendname
		INNER JOIN tblinvoicedocpdt ON tblinvoicedocp.strinvpdocid = tblinvoicedocpdt.strinvpdocid
		INNER JOIN dbo.Fntblinvforlocjoin() tblInv ON tblinvoicedocpdt.strpartnumber = tblInv.strpartnumber
			AND tblinvoicedocpdt.strlocation = tblInv.strlocname
		LEFT JOIN tblaccountsets ON tblInv.stracctset = tblaccountsets.stracctset
		LEFT JOIN tblaccounts ON tblaccountsets.intglasset = tblaccounts.intglnumber
		WHERE (
				tblinvoicedocpdt.strpartnumber IN (
					SELECT *
					FROM Fnsplitstringastable(@ItemList, ',')
					)
				)
			AND (
				tblinvoicedocp.strvendname IN (
					SELECT *
					FROM Fnsplitstringastable(@VendorList, ',')
					)
				)
			AND (
				(
					tblinv.bitinactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE tblinv.bitinactive
						END
					)
				--AND tblInv.bitothercmp = 0
				)
			AND (tblinvoicedocp.bithistorytrans = 0)
			AND (
				tblinvoicedocp.dtejournaldate BETWEEN @SQStart
					AND @SQEnd
				)
		GROUP BY tblinvoicedocp.strvendname
			,tblvendors.strvenddesc
			,tblinvoicedocpdt.strpartnumber
			,tblinvoicedocpdt.strpartdesc
			,tblinvoicedocpdt.strbuyunit
			,tblinvoicedocpdt.strstockunit
		HAVING (
				Sum(tblinvoicedocpdt.decbuyqty) <> 0
				OR Sum(tblinvoicedocpdt.declinetotexc) <> 0
				)
		ORDER BY tblinvoicedocp.strvendname
			,tblinvoicedocpdt.strpartnumber
	END
	ELSE IF (@Filter = 4) --Service            
	BEGIN
		SELECT tblinvoicedocp.strvendname
			,strvenddesc
			,tblinvoicedocpdt.strpartnumber
			,tblinvoicedocpdt.strpartdesc
			,Cast(Count(tblinvoicedocpdt.strpartnumber) AS MONEY) AS decPartNumber
			,Sum(tblinvoicedocpdt.decbuyqty) AS decBuyQty
			,tblinvoicedocpdt.strbuyunit
			,Sum(tblinvoicedocpdt.decstockqty) AS decStockQty
			,tblinvoicedocpdt.strstockunit
			,CASE 
				WHEN Sum(tblinvoicedocpdt.declinetotexc) = 0
					OR Sum(tblinvoicedocpdt.decbuyqty) = 0
					THEN 0
				ELSE Sum(tblinvoicedocpdt.declinetotexc) / Sum(tblinvoicedocpdt.decbuyqty)
				END AS UnitCost
			,Sum(tblinvoicedocpdt.declinetotexc) AS decLineTotExc
		FROM tblinvoicedocp
		INNER JOIN tblvendors ON tblinvoicedocp.strvendname = tblvendors.strvendname
		INNER JOIN tblinvoicedocpdt ON tblinvoicedocp.strinvpdocid = tblinvoicedocpdt.strinvpdocid
		INNER JOIN dbo.Fntblinvforlocjoin() tblInv ON tblinvoicedocpdt.strpartnumber = tblInv.strpartnumber
			AND tblinvoicedocpdt.strlocation = tblInv.strlocname
		LEFT JOIN tblaccountsets ON tblInv.stracctset = tblaccountsets.stracctset
		LEFT JOIN tblaccounts ON tblaccountsets.intglasset = tblaccounts.intglnumber
		WHERE (
				tblinvoicedocpdt.strpartnumber IN (
					SELECT *
					FROM Fnsplitstringastable(@ItemList, ',')
					)
				)
			AND (
				tblinvoicedocp.strvendname IN (
					SELECT *
					FROM Fnsplitstringastable(@VendorList, ',')
					)
				)
			AND (
				(
					tblinv.bitinactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE tblinv.bitinactive
						END
					)
				--AND  tblinv.bitothercmp = 0
				)
			AND (tblinvoicedocp.bithistorytrans = 0)
			AND (
				tblinvoicedocp.dtejournaldate BETWEEN @SQStart
					AND @SQEnd
				)
		GROUP BY tblinvoicedocp.strvendname
			,tblvendors.strvenddesc
			,tblinvoicedocpdt.strpartnumber
			,tblinvoicedocpdt.strpartdesc
			,tblinvoicedocpdt.strbuyunit
			,tblinvoicedocpdt.strstockunit
		HAVING (
				Sum(tblinvoicedocpdt.decbuyqty) <> 0
				OR Sum(tblinvoicedocpdt.declinetotexc) <> 0
				)
		ORDER BY tblinvoicedocp.strvendname
			,tblinvoicedocpdt.strpartnumber
	END
	ELSE IF (@Filter = 6) --All            
	BEGIN
		IF (@blnBPToolsMode = 0)
		BEGIN
			SELECT tblinvoicedocp.strvendname
				,strvenddesc
				,tblinvoicedocpdt.strpartnumber
				,tblinvoicedocpdt.strpartdesc
				,Cast(Count(tblinvoicedocpdt.strpartnumber) AS MONEY) AS decPartNumber
				,Sum(tblinvoicedocpdt.decbuyqty) AS decBuyQty
				,tblinvoicedocpdt.strbuyunit
				,Sum(tblinvoicedocpdt.decstockqty) AS decStockQty
				,tblinvoicedocpdt.strstockunit
				,CASE 
					WHEN Sum(tblinvoicedocpdt.declinetotexc) = 0
						OR Sum(tblinvoicedocpdt.decbuyqty) = 0
						THEN 0
					ELSE Sum(tblinvoicedocpdt.declinetotexc) / Sum(tblinvoicedocpdt.decbuyqty)
					END AS UnitCost
				,Sum(tblinvoicedocpdt.declinetotexc) AS decLineTotExc
			FROM tblinvoicedocp
			INNER JOIN tblvendors ON tblinvoicedocp.strvendname = tblvendors.strvendname
			INNER JOIN tblinvoicedocpdt ON tblinvoicedocp.strinvpdocid = tblinvoicedocpdt.strinvpdocid
			WHERE tblinvoicedocpdt.strpartnumber IN (
					SELECT strpartnumber
					FROM tblinv
					WHERE strcategory IN (
							SELECT tblinvcat.strcategory
							FROM tblinvcat
							LEFT JOIN tblinvcatsec ON tblinvcat.strcategory = tblinvcatsec.strcategory
							WHERE Isnull((
										SELECT Count(tblinvcatsec.strcategory)
										FROM tblinvcatsec
										WHERE tblinvcatsec.strcategory = tblinvcat.strcategory
										), 0) = 0
								OR (
									Isnull((
											SELECT Count(tblinvcatsec.strcategory)
											FROM tblinvcatsec
											WHERE tblinvcatsec.strcategory = tblinvcat.strcategory
											), 0) > 0
									AND tblinvcatsec.strusername = @SQUserName
									)
							)
						OR (inttype = 5)
					)
				AND (tblinvoicedocp.bithistorytrans = 0)
				AND (
					tblinvoicedocp.dtejournaldate BETWEEN @SQStart
						AND @SQEnd
					)
			GROUP BY tblinvoicedocp.strvendname
				,tblvendors.strvenddesc
				,tblinvoicedocpdt.strpartnumber
				,tblinvoicedocpdt.strpartdesc
				,tblinvoicedocpdt.strbuyunit
				,tblinvoicedocpdt.strstockunit
			HAVING (
					Sum(tblinvoicedocpdt.decbuyqty) <> 0
					OR Sum(tblinvoicedocpdt.declinetotexc) <> 0
					)
			ORDER BY tblinvoicedocp.strvendname
				,tblinvoicedocpdt.strpartnumber
		END
		ELSE
		BEGIN
			SELECT tblinvoicedocp.strvendname
				,strvenddesc
				,tblinvoicedocpdt.strpartnumber
				,tblinvoicedocpdt.strpartdesc
				,Cast(Count(tblinvoicedocpdt.strpartnumber) AS MONEY) AS decPartNumber
				,Sum(tblinvoicedocpdt.decbuyqty) AS decBuyQty
				,tblinvoicedocpdt.strbuyunit
				,Sum(tblinvoicedocpdt.decstockqty) AS decStockQty
				,tblinvoicedocpdt.strstockunit
				,CASE 
					WHEN Sum(tblinvoicedocpdt.declinetotexc) = 0
						OR Sum(tblinvoicedocpdt.decbuyqty) = 0
						THEN 0
					ELSE Sum(tblinvoicedocpdt.declinetotexc) / Sum(tblinvoicedocpdt.decbuyqty)
					END AS UnitCost
				,Sum(tblinvoicedocpdt.declinetotexc) AS decLineTotExc
			FROM tblinvoicedocp
			INNER JOIN tblvendors ON tblinvoicedocp.strvendname = tblvendors.strvendname
			INNER JOIN tblinvoicedocpdt ON tblinvoicedocp.strinvpdocid = tblinvoicedocpdt.strinvpdocid
			WHERE (
					tblinvoicedocpdt.strpartnumber IN (
						SELECT *
						FROM Fnsplitstringastable(@ItemList, ',')
						)
					)
				AND (
					tblinvoicedocp.strvendname IN (
						SELECT *
						FROM Fnsplitstringastable(@VendorList, ',')
						)
					)
				AND (tblinvoicedocp.bithistorytrans = 0)
				AND (
					tblinvoicedocp.dtejournaldate BETWEEN @SQStart
						AND @SQEnd
					)
			GROUP BY tblinvoicedocp.strvendname
				,tblvendors.strvenddesc
				,tblinvoicedocpdt.strpartnumber
				,tblinvoicedocpdt.strpartdesc
				,tblinvoicedocpdt.strbuyunit
				,tblinvoicedocpdt.strstockunit
			HAVING (
					Sum(tblinvoicedocpdt.decbuyqty) <> 0
					OR Sum(tblinvoicedocpdt.declinetotexc) <> 0
					)
			ORDER BY tblinvoicedocp.strvendname
				,tblinvoicedocpdt.strpartnumber
		END
	END
END
GO
----------------------------------------------------
CREATE PROCEDURE rptARGetCashUpSetUp       
AS        
BEGIN     
SELECT strName As Code, strDescription As Description, intGLNumber, bitInActive, bitAccount, intDisplayOrder   
FROM tblTenderTypes   
WHERE bitInActive = 0 AND bitAccount = 0   
ORDER BY intDisplayOrder  
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptAPGetCashUpReportData] 
(  
@StartDate DATETIME  
,@FinishDate DATETIME  
,@IsCheckedActualEntryDate BIT,  
@ItemList nvarchar(max)   
)  
AS  
BEGIN  
IF (@IsCheckedActualEntryDate = 1)  
BEGIN  
SELECT strPaidBy  
,strSource  
,dteSystemDate  
,dteJournalDate  
,strUserName  
,lngJourID  
,strCustName  
,decAmount  
,(  
SELECT strCustDesc  
FROM tblCustomers  
WHERE strCustName = tblCustPay.strCustName  
) AS strCustDesc  
,CASE   
WHEN ISNULL((  
SELECT COUNT(tblCustTransDT.lngCustTrID)   
FROM tblCustTransDT  
WHERE tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID  
), 0) > 1  
THEN '<MULTIPLE>'  
ELSE ISNULL((  
SELECT tblCustTrans.strInvDocID  
FROM tblCustTrans  
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID  
WHERE tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID  
) , '')  
END  
FROM tblCustPay  
WHERE dteSystemDate >= cast(@StartDate as date)  
AND dteSystemDate <= cast(@FinishDate as date)  
AND decAmount <> 0  
AND bitReversed = 0  
AND bitReversal = 0  AND strPaidBy IN (select * from fnSplitStringAsTable(@ItemList,','))          
ORDER BY strPaidBy  
,dteSystemDate  
,lngJourID  
END  
ELSE  
BEGIN  
SELECT strPaidBy  
,strSource  
,dteSystemDate  
,dteJournalDate  
,strUserName  
,lngJourID  
,strCustName  
,decAmount  
,(  
SELECT strCustDesc  
FROM tblCustomers  
WHERE strCustName = tblCustPay.strCustName  
) as strCustDesc  
,CASE   
WHEN ISNULL((  
SELECT COUNT(tblCustTransDT.lngCustTrID)  
FROM tblCustTransDT  
WHERE tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID  
), 0) > 1  
THEN '<MULTIPLE>'  
ELSE ISNULL((  
SELECT tblCustTrans.strInvDocID  
FROM tblCustTrans  
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID  
WHERE tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID  
), '')  
END  
FROM tblCustPay  
WHERE dteJournalDate >= cast(@StartDate as date)  
AND dteJournalDate <= cast(@FinishDate as date)  
AND decAmount <> 0  
AND bitReversed = 0  
AND bitReversal = 0  
AND strPaidBy IN (select * from fnSplitStringAsTable(@ItemList,','))          
ORDER BY strPaidBy  
,dteJournalDate  
,lngJourID  
END  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetCustomerTransactions] (
	@IsCheckedSearch BIT
	,@SearchText NVARCHAR(max)
	,@IsInactive BIT
	,@blnBPToolsMode BIT
	,@UserName VARCHAR(100)
	)
AS
DECLARE @isExist BIT
DECLARE @Query NVARCHAR(max)

BEGIN
	IF (@IsCheckedSearch = 1)
	BEGIN
		IF (@SearchText <> '')
		BEGIN
			IF (@IsInactive = 1)
			BEGIN
				SET @Query = 'SELECT       strCustName AS CustomerName      ,strCustDesc AS [Description]      FROM       tblCustomers       WHERE        (strCustName LIKE ''' + @SearchText + ''' OR strCustDesc LIKE ''' + @SearchText + ''')'
				SET @isExist = 1
			END
			ELSE
			BEGIN
				SET @Query = 'SELECT       strCustName AS CustomerName      ,strCustDesc AS [Description]      FROM       tblCustomers       WHERE       bitInactive = 0 AND       (strCustName LIKE ''' + @SearchText + ''' OR strCustDesc LIKE ''' + @SearchText + ''')'
				SET @isExist = 1
			END
		END
	END
	ELSE
	BEGIN
		IF (@IsInactive = 1)
		BEGIN
			SET @Query = 'SELECT strCustName AS CustomerName      ,strCustDesc AS [Description]      FROM       tblCustomers'
		END
		ELSE
		BEGIN
			SET @Query = 'SELECT strCustName AS CustomerName      ,strCustDesc AS [Description]      FROM       tblCustomers         WHERE       bitInactive = 0'
			SET @isExist = 1
		END
	END

	IF (@blnBPToolsMode = 0)
	BEGIN
		IF (@isExist = 1)
			SET @Query += 'AND '
		ELSE
			SET @Query += ' WHERE '

		SET @Query += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat   LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory  WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)   FROM tblCustomerCatSec   WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)   FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = ''' + @UserName + '''))'
	END

	SET @Query += 'ORDER BY strCustName'

	EXEC sp_Executesql @Query
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetCustomerCurrency]        
(        
@strCustName Varchar(100)      
)        
AS        
BEGIN        
SELECT strCurrency-- strCurrName      
FROM tblCurrency      
WHERE strCurrency IN       
(SELECT strCurrency FROM tblCustomers      
WHERE strCustName = @strCustName)       
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetCustomerReportData] (  
@SQintTransType VARCHAR(50)  
,@SQCustNumber VARCHAR(100)  
,@StartDate DATETIME  
,@FinishDate DATETIME  
,@chkZeroReceipt BIT  
)  
AS  
BEGIN  
DECLARE @Query VARCHAR(max)  
IF (@chkZeroReceipt = 0)  
BEGIN  
SELECT CASE   
WHEN T1.intTransType = @SQintTransType  
THEN ISNULL((  
SELECT JE.strComment  
FROM tblJournalEntryDoc JE  
WHERE JE.strJEDocID = T1.strJEDocID  
), '')  
ELSE T1.strInvDepNumber  
END AS strInvDepNumber  
,CASE   
WHEN T1.intTransType = @SQintTransType  
THEN ISNULL(T1.strJEDocID, '')  
ELSE ISNULL(T1.strInvDocID, '')  
END AS invoice  
,T2.dteJournalDate AS DTTransDate  
,T1.intTransType AS TransType  
,T2.intTransType  
,T2.decAmount  
,T2.decAmountF  
,T1.dteDueDate  
,T2.lngCustPayID  
FROM tblCustTrans T1  
INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID  
WHERE T1.strCustName = @SQCustNumber  
AND T2.bitReversed = 0  
AND (  
T1.strOrdDocID IS NULL  
OR (  
T1.strInvDocID IS NOT NULL  
AND T1.strOrdDocID IS NOT NULL  
)  
)  
AND ISNULL(T2.lngCustPayID, 0) = 0  
AND T1.dteJournalDate BETWEEN @StartDate  
AND @FinishDate  
UNION ALL  
SELECT ISNULL(T3.strComment, '') AS strInvDepNumber  
,ISNULL(T3.strSource, '') AS invoice  
,T3.dteJournalDate AS DTTransDate  
,1 AS TransType  
,2 AS intTransType  
,SUM(ISNULL(T4.decAmount, 0)) AS decAmount  
,SUM(ISNULL(T4.decAmountF, 0)) AS decAmountF  
,T3.dteJournalDate AS dteDueDate  
,T3.lngCustPayID  
FROM tblCustPay T3  
INNER JOIN tblCustTransDT T4 ON T3.lngCustPayID = T4.lngCustPayID  
INNER JOIN tblCustTrans T5 ON T4.lngCustTrID = T5.lngCustTrID  
WHERE T3.strCustName = @SQCustNumber  
AND T3.bitReversed = 0  
AND T3.dteJournalDate BETWEEN @StartDate  
AND @FinishDate  
AND (T4.bitReversed = 0)  
GROUP BY ISNULL(T3.strSource, '')  
,T3.dteJournalDate  
,T3.dteJournalDate  
,T3.lngCustPayID  
,ISNULL(T3.strComment, '')  
HAVING SUM(ISNULL(T4.decAmount, 0)) <> 0  
OR SUM(ISNULL(T4.decAmountF, 0)) <> 0  
ORDER BY DTTransDate  
,invoice  
END  
ELSE  
BEGIN  
SELECT CASE   
WHEN T1.intTransType = @SQintTransType  
THEN ISNULL((  
SELECT JE.strComment  
FROM tblJournalEntryDoc JE  
WHERE JE.strJEDocID = T1.strJEDocID  
), '')  
ELSE T1.strInvDepNumber  
END AS strInvDepNumber  
,CASE   
WHEN T1.intTransType = @SQintTransType  
THEN ISNULL(T1.strJEDocID, '')  
ELSE ISNULL(T1.strInvDocID, '')  
END AS invoice  
,T2.dteJournalDate AS DTTransDate  
,T1.intTransType AS TransType  
,T2.intTransType  
,T2.decAmount  
,T2.decAmountF  
,T1.dteDueDate  
,T2.lngCustPayID  
FROM tblCustTrans T1  
INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID  
WHERE T1.strCustName = @SQCustNumber  
AND T2.bitReversed = 0  
AND (  
T1.strOrdDocID IS NULL  
OR (  
T1.strInvDocID IS NOT NULL  
AND T1.strOrdDocID IS NOT NULL  
)  
)  
AND ISNULL(T2.lngCustPayID, 0) = 0  
AND T1.dteJournalDate BETWEEN @StartDate  
AND @FinishDate  
UNION ALL  
SELECT ISNULL(T3.strComment, '') AS strInvDepNumber  
,ISNULL(T3.strSource, '') AS invoice  
,T3.dteJournalDate AS DTTransDate  
,1 AS TransType  
,2 AS intTransType  
,SUM(ISNULL(T4.decAmount, 0)) AS decAmount  
,SUM(ISNULL(T4.decAmountF, 0)) AS decAmountF  
,T3.dteJournalDate AS dteDueDate  
,T3.lngCustPayID  
FROM tblCustPay T3  
INNER JOIN tblCustTransDT T4 ON T3.lngCustPayID = T4.lngCustPayID  
INNER JOIN tblCustTrans T5 ON T4.lngCustTrID = T5.lngCustTrID  
WHERE T3.strCustName = @SQCustNumber  
AND T3.bitReversed = 0  
AND T3.dteJournalDate BETWEEN @StartDate  
AND @FinishDate  
AND (T4.bitReversed = 0)  
GROUP BY ISNULL(T3.strSource, '')  
,T3.dteJournalDate  
,T3.dteJournalDate  
,T3.lngCustPayID  
,ISNULL(T3.strComment, '')  
ORDER BY DTTransDate  
,invoice  
END  
END
GO
----------------------------------------------------
CREATE PROCEDURE rptARGetCustomerProfitabilityList       
(        
@IsInactive bit        
)         
AS        
BEGIN        
IF(@IsInactive = 1)        
BEGIN      
SELECT strSalesName AS Description       
FROM tblSalesPersons       
WHERE bitIsWorkshopTechnician = 0       
ORDER BY strSalesName      
END      
ELSE      
BEGIN      
SELECT strSalesName AS Description      
FROM tblSalesPersons       
WHERE (bitInactive = 0) AND bitIsWorkshopTechnician = 0       
ORDER BY strSalesName        
END      
END      
GO

----------------------------------------------------
CREATE PROCEDURE rpAPGetCustomerProfiabilityReportData                  
(          
@IsLineLevel bit,      
@SQStart DateTime,          
@SQEnd Datetime,                   
@ItemList  nvarchar(max),         
@IsBPToolsMode bit,      
@SQUserName varchar(100)      
)                  
AS                  
BEGIN            
IF(@IsLineLevel = 1)      
BEGIN      
IF(@IsBPToolsMode = 0)      
BEGIN      
SELECT tblInvoiceDoc.strCustName,      
tblCustomers.strCustDesc, SUM(tblInvTrackingDT.decRevenue) AS Revenue, SUM(tblInvTrackingDT.decCOGS) AS Expense,      
SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS GP,       
SUM(tblInvTrackingDT.decLastPPUnit) AS LRC       
FROM tblInvoiceDoc       
INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID       
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName       
INNER JOIN tblInvTracking ON tblInvoiceDoc.lngInvTrackID = tblInvTracking.lngInvTrackID       
INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID       
AND tblInvoiceDocDT.intLineNo = tblInvTrackingDT.intLineNo       
WHERE (tblInvoiceDoc.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (tblInvTracking.intModule = 2)      
AND (strCustCategory IN (SELECT tblCustomerCat.strCustCategory       
FROM tblCustomerCat       
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory       
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)      
FROM tblCustomerCatSec       
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)       
FROM tblCustomerCatSec       
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)))      
AND (ISNULL(tblInvoiceDocDT.strSalesName, '<< No Sales Person >>') IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))      
GROUP BY tblInvoiceDoc.strCustName, tblCustomers.strCustDesc ORDER BY tblInvoiceDoc.strCustName      
END      
Else      
BEGIN      
SELECT tblInvoiceDoc.strCustName,      
tblCustomers.strCustDesc, SUM(tblInvTrackingDT.decRevenue) AS Revenue, SUM(tblInvTrackingDT.decCOGS) AS Expense,      
SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS GP,       
SUM(tblInvTrackingDT.decLastPPUnit) AS LRC       
FROM tblInvoiceDoc       
INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID       
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName       
INNER JOIN tblInvTracking ON tblInvoiceDoc.lngInvTrackID = tblInvTracking.lngInvTrackID       
INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID       
AND tblInvoiceDocDT.intLineNo = tblInvTrackingDT.intLineNo       
WHERE (tblInvoiceDoc.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (tblInvTracking.intModule = 2)      
AND (ISNULL(tblInvoiceDocDT.strSalesName, '<< No Sales Person >>') IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))      
GROUP BY tblInvoiceDoc.strCustName, tblCustomers.strCustDesc ORDER BY tblInvoiceDoc.strCustName         
END      
END      
ELSE      
BEGIN      
IF(@IsBPToolsMode = 0)      
BEGIN      
SELECT tblInvoiceDoc.strCustName, tblCustomers.strCustDesc,       
SUM(tblInvTrackingDT.decRevenue)AS Revenue, SUM(tblInvTrackingDT.decCOGS) AS Expense,       
SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS GP,       
SUM(tblInvTrackingDT.decLastPPUnit) AS LRC       
FROM tblInvoiceDoc       
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName       
INNER JOIN tblInvTracking ON tblInvoiceDoc.lngInvTrackID = tblInvTracking.lngInvTrackID        
INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID       
WHERE (tblInvoiceDoc.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (tblInvTracking.intModule = 2)      
AND (strCustCategory IN (SELECT tblCustomerCat.strCustCategory       
FROM tblCustomerCat       
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory       
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)       
FROM tblCustomerCatSec       
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0       
OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)       
FROM tblCustomerCatSec       
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = @SQUserName)))      
AND (ISNULL(tblInvoiceDoc.strSalesName, '<< No Sales Person >>') IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))      
GROUP BY tblInvoiceDoc.strCustName, tblCustomers.strCustDesc ORDER BY tblInvoiceDoc.strCustName      
END          
ELSE      
SELECT tblInvoiceDoc.strCustName, tblCustomers.strCustDesc,       
SUM(tblInvTrackingDT.decRevenue) AS Revenue, SUM(tblInvTrackingDT.decCOGS) AS Expense,       
SUM(tblInvTrackingDT.decRevenue) - SUM(tblInvTrackingDT.decCOGS) AS GP,       
SUM(tblInvTrackingDT.decLastPPUnit) AS LRC       
FROM tblInvoiceDoc       
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName       
INNER JOIN tblInvTracking ON tblInvoiceDoc.lngInvTrackID = tblInvTracking.lngInvTrackID       
INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID       
WHERE (tblInvoiceDoc.dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (tblInvTracking.intModule = 2)        
AND (ISNULL(tblInvoiceDoc.strSalesName, '<< No Sales Person >>') IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))      
GROUP BY tblInvoiceDoc.strCustName, tblCustomers.strCustDesc ORDER BY tblInvoiceDoc.strCustName      
END      
END         
GO

----------------------------------------------------
CREATE PROCEDURE rpAPGetCustomerProfiabilityGReportData                
(        
@IsLineLevel bit,    
@SQStart DateTime,        
@SQEnd Datetime,                 
@ItemList  nvarchar(max),       
@IsBPToolsMode bit,    
@SQUserName varchar(100)    
)                
AS                
BEGIN          
IF( @IsLineLevel = 1 )
BEGIN
IF( @IsBPToolsMode = 0 )
BEGIN
SELECT Isnull(tblinvoicedocdt.strsalesname, '<<No Sales Person>>')
AS
strSalesName
,
tblinvoicedoc.strcustname,
tblcustomers.strcustdesc,
Sum(tblinvtrackingdt.decrevenue)
AS
Revenue,
Sum(tblinvtrackingdt.deccogs)
AS
Expense,
Sum(tblinvtrackingdt.decrevenue) -
Sum(tblinvtrackingdt.deccogs) AS
GP,
Sum(tblinvtrackingdt.declastppunit)
AS
LRC
FROM   tblinvoicedoc
INNER JOIN tblinvoicedocdt
ON tblinvoicedoc.strinvdocid =
tblinvoicedocdt.strinvdocid
INNER JOIN tblcustomers
ON tblinvoicedoc.strcustname =
tblcustomers.strcustname
INNER JOIN tblinvtracking
ON tblinvoicedoc.lnginvtrackid =
tblinvtracking.lnginvtrackid
INNER JOIN tblinvtrackingdt
ON tblinvtracking.lnginvtrackid =
tblinvtrackingdt.lnginvtrackid
AND tblinvoicedocdt.intlineno =
tblinvtrackingdt.intlineno
WHERE  ( tblinvoicedoc.dtejournaldate BETWEEN
Cast(@SQStart AS DATE) AND Cast(
@SQEnd AS DATE) )
AND ( tblinvtracking.intmodule = 2 )
AND ( strcustcategory IN (SELECT
tblcustomercat.strcustcategory
FROM   tblcustomercat
LEFT JOIN tblcustomercatsec
ON
tblcustomercat.strcustcategory
=
tblcustomercatsec.strcustcategory
WHERE  Isnull((SELECT Count(
tblcustomercatsec.strcustcategory)
FROM   tblcustomercatsec
WHERE
tblcustomercatsec.strcustcategory =
tblcustomercat.strcustcategory), 0)
=
0
OR ( Isnull((SELECT Count(
tblcustomercatsec.strcustcategory)
FROM   tblcustomercatsec
WHERE
tblcustomercatsec.strcustcategory =
tblcustomercat.strcustcategory), 0) > 0
AND tblcustomercatsec.strusername =
@SQUserName
)) )
AND ( Isnull(tblinvoicedocdt.strsalesname, '<< No Sales Person >>') IN
(
SELECT *
FROM
Fnsplitstringastable(@ItemList, ',')) )
GROUP  BY tblinvoicedocdt.strsalesname,
tblinvoicedoc.strcustname,
tblcustomers.strcustdesc
ORDER  BY tblinvoicedoc.strcustname
END
ELSE
BEGIN
SELECT Isnull(tblinvoicedocdt.strsalesname, '<<No Sales Person>>')
AS
strSalesName
,
tblinvoicedoc.strcustname,
tblcustomers.strcustdesc,
Sum(tblinvtrackingdt.decrevenue)
AS
Revenue,
Sum(tblinvtrackingdt.deccogs)
AS
Expense,
Sum(tblinvtrackingdt.decrevenue) -
Sum(tblinvtrackingdt.deccogs) AS
GP,
Sum(tblinvtrackingdt.declastppunit)
AS
LRC
FROM   tblinvoicedoc
INNER JOIN tblinvoicedocdt
ON tblinvoicedoc.strinvdocid =
tblinvoicedocdt.strinvdocid
INNER JOIN tblcustomers
ON tblinvoicedoc.strcustname = tblcustomers.strcustname
INNER JOIN tblinvtracking
ON tblinvoicedoc.lnginvtrackid =
tblinvtracking.lnginvtrackid
INNER JOIN tblinvtrackingdt
ON tblinvtracking.lnginvtrackid =
tblinvtrackingdt.lnginvtrackid
AND tblinvoicedocdt.intlineno =
tblinvtrackingdt.intlineno
WHERE  ( tblinvoicedoc.dtejournaldate BETWEEN
Cast(@SQStart AS DATE) AND Cast(
@SQEnd AS DATE) )
AND ( tblinvtracking.intmodule = 2 )
AND ( Isnull(tblinvoicedocdt.strsalesname,
'<< No Sales Person >>')
IN (
SELECT *
FROM
Fnsplitstringastable(@ItemList, ',')) )
GROUP  BY tblinvoicedocdt.strsalesname,
tblinvoicedoc.strcustname,
tblcustomers.strcustdesc
ORDER  BY tblinvoicedoc.strcustname
END
END
ELSE
BEGIN
IF( @IsBPToolsMode = 0 )
BEGIN
SELECT Isnull(tblinvoicedocdt.strsalesname, '<<No Sales Person>>')
AS
strSalesName
,
tblinvoicedoc.strcustname,
tblcustomers.strcustdesc,
Sum(tblinvtrackingdt.decrevenue)
AS
Revenue,
Sum(tblinvtrackingdt.deccogs)
AS
Expense,
Sum(tblinvtrackingdt.decrevenue) -
Sum(tblinvtrackingdt.deccogs) AS
GP,
Sum(tblinvtrackingdt.declastppunit)
AS
LRC
FROM   tblinvoicedoc
INNER JOIN tblinvoicedocdt
ON tblinvoicedoc.strinvdocid =
tblinvoicedocdt.strinvdocid
INNER JOIN tblcustomers
ON tblinvoicedoc.strcustname =
tblcustomers.strcustname
INNER JOIN tblinvtracking
ON tblinvoicedoc.lnginvtrackid =
tblinvtracking.lnginvtrackid
INNER JOIN tblinvtrackingdt
ON tblinvtracking.lnginvtrackid =
tblinvtrackingdt.lnginvtrackid
AND tblinvoicedocdt.intlineno =
tblinvtrackingdt.intlineno
WHERE  ( tblinvoicedoc.dtejournaldate BETWEEN
Cast(@SQStart AS DATE) AND Cast(
@SQEnd AS DATE) )
AND ( tblinvtracking.intmodule = 2 )
AND ( Isnull(tblinvoicedocdt.strsalesname,
'<< No Sales Person >>')
IN (
SELECT *
FROM
Fnsplitstringastable(@ItemList, ',')) )
GROUP  BY tblinvoicedocdt.strsalesname,
tblinvoicedoc.strcustname,
tblcustomers.strcustdesc,
tblinvoicedocdt.strsalesname
ORDER  BY tblinvoicedoc.strcustname
END
ELSE
SELECT Isnull(tblinvoicedoc.strsalesname, '<<No Sales Person>>')
AS
strSalesName
,
tblinvoicedoc.strcustname,
tblcustomers.strcustdesc,
Sum(tblinvtrackingdt.decrevenue),
Sum(tblinvtrackingdt.deccogs),
Sum(tblinvtrackingdt.decrevenue) - Sum(tblinvtrackingdt.deccogs)
AS
GP,
Sum(tblinvtrackingdt.declastppunit)
AS
LRC
FROM   tblinvoicedoc
INNER JOIN tblcustomers
ON tblinvoicedoc.strcustname = tblcustomers.strcustname
INNER JOIN tblinvtracking
ON tblinvoicedoc.lnginvtrackid =
tblinvtracking.lnginvtrackid
INNER JOIN tblinvtrackingdt
ON tblinvtracking.lnginvtrackid =
tblinvtrackingdt.lnginvtrackid
WHERE  ( tblinvoicedoc.dtejournaldate BETWEEN @SQStart AND @SQEnd )
AND ( tblinvtracking.intmodule = 2 )
AND ( Isnull(tblinvoicedoc.strsalesname, '<< No Sales Person >>')
IN (
SELECT *
FROM
Fnsplitstringastable(@ItemList, ',')) )
GROUP  BY tblinvoicedoc.strcustname,
tblcustomers.strcustdesc,
tblinvoicedoc.strsalesname
ORDER  BY tblinvoicedoc.strcustname
END    
END       
GO

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetCustomerList]              
AS           
BEGIN        
SELECT * FROM tblCompany    
END 
GO

----------------------------------------------------
CREATE Procedure [dbo].[rptGetCustStatementsSetup]      
(      
@SQType int = 0,      
@SQDate smalldatetime = NULL,      
@SQBPTools bit = 0,      
@SQUserName nvarchar(20) = NULL,      
@SQInactive bit = 0,      
@SQIsHP bit = 0,      
@SQTerm nvarchar(50) = NULL,       
@SQOmit int = 0,      
@SQBalance money = 0,      
@SQSearch bit = 0,      
@SQSearchBy nvarchar(250) = NULL,      
@SQBalIncludeSO bit = 0,      
@SQOpenSalesOrders bit = 0,      
@SQSortType nvarchar(20) = NULL      
)      
AS      
BEGIN      
IF @SQType = 0      
BEGIN      
IF @SQSearch = 0      
BEGIN      
SELECT CONVERT(varchar(50),intDept) as Code,       
strDesc as Description       
FROM tblDepartments       
WHERE (bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE bitInactive END)       
ORDER BY intDept      
END      
IF @SQSearch = 1      
BEGIN      
SELECT CONVERT(varchar(50),intDept) as Code,       
strDesc  as Description       
FROM tblDepartments       
WHERE (bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE bitInactive END)       
AND (intDept LIKE @SQSearchBy       
OR strDesc LIKE @SQSearchBy)      
ORDER BY intDept      
END      
ELSE    
SELECT CONVERT(varchar(50),intDept) as Code,       
strDesc as Description       
FROM tblDepartments       
WHERE (bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE bitInactive END)       
ORDER BY intDept     
END      
IF @SQType = 1      
BEGIN      
CREATE TABLE #TempSec (      
[strCustCategory] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,      
[bitSecExists] [bit] NOT NULL,      
[bitSecUserExists] [bit] NOT NULL)      
INSERT INTO #TempSec      
SELECT strCustCategory,       
0,       
0      
FROM tblCustomerCat      
IF @SQBPTools = 0      
BEGIN      
UPDATE #TempSec      
SET [bitSecExists] = 1      
FROM (SELECT DISTINCT strCustCategory      
FROM tblCustomerCatSec) Z      
WHERE #TempSec.strCustCategory = Z.strCustCategory      
UPDATE #TempSec      
SET [bitSecUserExists] = 1      
FROM (SELECT strCustCategory      
FROM tblCustomerCatSec      
WHERE strUserName = @SQUserName) Z      
WHERE #TempSec.strCustCategory = Z.strCustCategory      
END      
CREATE TABLE #TempCust (      
[lngID] [bigint] IDENTITY(1,1) NOT NULL,      
[strCustName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,      
[strCustDesc] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,      
[strCurrency] [nvarchar](3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,      
[strCustCategory] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,      
[decAmount] [money] NOT NULL)      
IF @SQOmit = 0      
BEGIN      
IF @SQSearch = 0      
BEGIN      
IF @SQBalIncludeSO = 0      
BEGIN      
IF @SQOpenSalesOrders = 0      
BEGIN      
INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)      
SELECT Z.strCustName as Code,       
tblCustomers.strCustDesc as Description,       
tblCustomers.strCurrency,       
Z.strCustCategory,       
SUM(Z.decAmount) AS decAmount      
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,       
ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblCustTrans       
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID       
INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName 
AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
WHERE (tblCustTransDT.bitReversed = 0)       
AND (tblCustTransDT.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) 
OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))) Z      
INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName      
GROUP BY Z.strCustName,       
tblCustomers.strCustDesc,       
tblCustomers.strCurrency,       
Z.strCustCategory       
END      
ELSE      
BEGIN      
INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)      
SELECT Z.strCustName as Code,       
tblCustomers.strCustDesc as Description,       
tblCustomers.strCurrency,       
Z.strCustCategory,       
SUM(Z.decAmount) AS decAmount      
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,       
ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblCustTrans       
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID       
INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName 
AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
WHERE (tblCustTransDT.bitReversed = 0)       
AND (tblCustTransDT.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) 
OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))      
UNION ALL      
SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,      
0 AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblOrderDoc       
INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID       
INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName 
AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
CROSS JOIN tblCoOpts      
WHERE (intDocType = 1 OR intDocType =3)       
AND bitCleared = 0       
AND (tblOrderDoc.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
--AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)      
GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END, tblCustomerCat.strCustCategory) Z      
INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName      
GROUP BY Z.strCustName,       
tblCustomers.strCustDesc,       
tblCustomers.strCurrency,       
Z.strCustCategory       
END      
END      
IF @SQBalIncludeSO = 1      
BEGIN         
INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)      
SELECT Z.strCustName as Code,       
tblCustomers.strCustDesc as Description,       
tblCustomers.strCurrency,       
Z.strCustCategory,       
SUM(Z.decAmount) AS decAmount      
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,       
ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblCustTrans       
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID       
INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName 
AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
WHERE (tblCustTransDT.bitReversed = 0)       
AND (tblCustTransDT.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) 
OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))      
UNION ALL      
SELECT Y.strCustName,      
ISNULL(CASE Y.bitIsForeign WHEN 0 THEN Y.decAmount ELSE Y.decAmountF END,0) AS decAmount,      
Y.strCustCategory       
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,      
tblOrderDoc.bitIsForeign,      
SUM(ROUND(((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmount,      
SUM(ROUND(((tblOrderDocDT.decLineTotExcF + tblOrderDocDT.decLineTaxAmtF) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmountF,      
tblCustomerCat.strCustCategory      
FROM tblOrderDoc       
INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID       
INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName 
AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
CROSS JOIN tblCoOpts      
WHERE (intDocType = 1 OR intDocType =3)       
AND bitCleared = 0       
AND (tblOrderDoc.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
--AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)      
GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END, tblOrderDoc.bitIsForeign, tblCustomerCat.strCustCategory) Y) Z      
INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName      
GROUP BY Z.strCustName,       
tblCustomers.strCustDesc,       
tblCustomers.strCurrency,       
Z.strCustCategory       
END      
END      
IF @SQSearch = 1      
BEGIN      
IF @SQBalIncludeSO = 0      
BEGIN      
IF @SQOpenSalesOrders = 0      
BEGIN      
INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)      
SELECT Z.strCustName as Code,       
tblCustomers.strCustDesc as Description,       
tblCustomers.strCurrency,       
Z.strCustCategory,       
SUM(Z.decAmount) AS decAmount      
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,       
ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblCustTrans       
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID       
INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName 
AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
WHERE (tblCustTransDT.bitReversed = 0)       
AND (tblCustTransDT.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) 
OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))) Z      
INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName      
WHERE (Z.strCustName LIKE @SQSearchBy       
OR tblCustomers.strCustDesc LIKE @SQSearchBy)      
GROUP BY Z.strCustName,       
tblCustomers.strCustDesc,       
tblCustomers.strCurrency,       
Z.strCustCategory       
END      
ELSE      
BEGIN      
INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)      
SELECT Z.strCustName as Code,       
tblCustomers.strCustDesc as Description,       
tblCustomers.strCurrency,       
Z.strCustCategory,       
SUM(Z.decAmount) AS decAmount      
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,       
ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblCustTrans       
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID       
INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName 
AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
WHERE (tblCustTransDT.bitReversed = 0)       
AND (tblCustTransDT.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) 
OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))      
UNION ALL      
SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,      
0 AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblOrderDoc       
INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID       
INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName 
AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
CROSS JOIN tblCoOpts      
WHERE (intDocType = 1 OR intDocType =3)       
AND bitCleared = 0       
AND (tblOrderDoc.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
--AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)      
GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END, tblCustomerCat.strCustCategory) Z      
INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName      
WHERE (Z.strCustName LIKE @SQSearchBy       
OR tblCustomers.strCustDesc LIKE @SQSearchBy)      
GROUP BY Z.strCustName,       
tblCustomers.strCustDesc,       
tblCustomers.strCurrency,       
Z.strCustCategory       
END      
END      
IF @SQBalIncludeSO = 1      
BEGIN      
INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)      
SELECT Z.strCustName as Code,       
tblCustomers.strCustDesc as Description,       
tblCustomers.strCurrency,       
Z.strCustCategory,       
SUM(Z.decAmount) AS decAmount      
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,       
ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblCustTrans       
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID       
INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName 
AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
WHERE (tblCustTransDT.bitReversed = 0)       
AND (tblCustTransDT.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) 
OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))      
UNION ALL      
SELECT Y.strCustName,      
ISNULL(CASE Y.bitIsForeign WHEN 0 THEN Y.decAmount ELSE Y.decAmountF END,0) AS decAmount,      
Y.strCustCategory       
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,      
tblOrderDoc.bitIsForeign,      
SUM(ROUND(((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmount,      
SUM(ROUND(((tblOrderDocDT.decLineTotExcF + tblOrderDocDT.decLineTaxAmtF) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmountF,      
tblCustomerCat.strCustCategory      
FROM tblOrderDoc       
INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID       
INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
CROSS JOIN tblCoOpts      
WHERE (intDocType = 1 OR intDocType =3)       
AND bitCleared = 0       
AND (tblOrderDoc.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
--AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)      
GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END, tblOrderDoc.bitIsForeign, tblCustomerCat.strCustCategory) Y) Z      
INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName      
WHERE (Z.strCustName LIKE @SQSearchBy       
OR tblCustomers.strCustDesc LIKE @SQSearchBy)      
GROUP BY Z.strCustName,       
tblCustomers.strCustDesc,       
tblCustomers.strCurrency,       
Z.strCustCategory       
END      
END      
END      
IF @SQOmit = 1      
BEGIN      
IF @SQSearch = 0      
BEGIN      
IF @SQBalIncludeSO = 0      
BEGIN      
IF @SQOpenSalesOrders = 0      
BEGIN      
INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)      
SELECT Z.strCustName as Code,       
tblCustomers.strCustDesc as Description,       
tblCustomers.strCurrency,       
Z.strCustCategory,       
SUM(Z.decAmount) AS decAmount      
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,       
ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblCustTrans       
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID       
INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
WHERE (tblCustTransDT.bitReversed = 0)       
AND (tblCustTransDT.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) 
OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))) Z      
INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName      
GROUP BY Z.strCustName,       
tblCustomers.strCustDesc,       
tblCustomers.strCurrency,       
Z.strCustCategory       
HAVING SUM(Z.decAmount) <> 0       
END      
ELSE      
BEGIN      
INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)      
SELECT Z.strCustName as Code,       
tblCustomers.strCustDesc as Description,       
tblCustomers.strCurrency,       
Z.strCustCategory,       
SUM(Z.decAmount) AS decAmount      
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,       
ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblCustTrans       
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID       
INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
WHERE (tblCustTransDT.bitReversed = 0)       
AND (tblCustTransDT.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))      
UNION ALL      
SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,      
0 AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblOrderDoc       
INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID       
INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
CROSS JOIN tblCoOpts      
WHERE (intDocType = 1 OR intDocType =3)       
AND bitCleared = 0       
AND (tblOrderDoc.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
--AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)      
GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END, tblCustomerCat.strCustCategory) Z      
INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName      
GROUP BY Z.strCustName,       
tblCustomers.strCustDesc,       
tblCustomers.strCurrency,       
Z.strCustCategory       
HAVING SUM(Z.decAmount) <> 0       
END      
END      
IF @SQBalIncludeSO = 1      
BEGIN      
INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)      
SELECT Z.strCustName as Code,       
tblCustomers.strCustDesc as Description,       
tblCustomers.strCurrency,       
Z.strCustCategory,       
SUM(Z.decAmount) AS decAmount      
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,       
ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblCustTrans       
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID       
INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
WHERE (tblCustTransDT.bitReversed = 0)       
AND (tblCustTransDT.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))      
UNION ALL      
SELECT Y.strCustName,      
ISNULL(CASE Y.bitIsForeign WHEN 0 THEN Y.decAmount ELSE Y.decAmountF END,0) AS decAmount,      
Y.strCustCategory       
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,      
tblOrderDoc.bitIsForeign,      
SUM(ROUND(((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmount,      
SUM(ROUND(((tblOrderDocDT.decLineTotExcF + tblOrderDocDT.decLineTaxAmtF) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmountF,      
tblCustomerCat.strCustCategory      
FROM tblOrderDoc       
INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID       
INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
CROSS JOIN tblCoOpts      
WHERE (intDocType = 1 OR intDocType =3)       
AND bitCleared = 0       
AND (tblOrderDoc.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
--AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)      
GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END, 
tblOrderDoc.bitIsForeign, tblCustomerCat.strCustCategory) Y) Z      
INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName      
GROUP BY Z.strCustName,       
tblCustomers.strCustDesc,       
tblCustomers.strCurrency,       
Z.strCustCategory       
HAVING SUM(Z.decAmount) <> 0       
END      
END      
IF @SQSearch = 1      
BEGIN      
IF @SQBalIncludeSO = 0      
BEGIN      
IF @SQOpenSalesOrders = 0      
BEGIN      
INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)      
SELECT Z.strCustName as Code,       
tblCustomers.strCustDesc as Description,       
tblCustomers.strCurrency,       
Z.strCustCategory,       
SUM(Z.decAmount) AS decAmount      
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,       
ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblCustTrans       
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID       
INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
WHERE (tblCustTransDT.bitReversed = 0)       
AND (tblCustTransDT.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))) Z      
INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName      
WHERE (Z.strCustName LIKE @SQSearchBy       
OR tblCustomers.strCustDesc LIKE @SQSearchBy)      
GROUP BY Z.strCustName,       
tblCustomers.strCustDesc,       
tblCustomers.strCurrency,       
Z.strCustCategory       
HAVING SUM(Z.decAmount) <> 0       
END      
ELSE      
BEGIN      
INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)      
SELECT Z.strCustName as Code,       
tblCustomers.strCustDesc as Description,       
tblCustomers.strCurrency,       
Z.strCustCategory,       
SUM(Z.decAmount) AS decAmount      
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,       
ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblCustTrans       
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID       
INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
WHERE (tblCustTransDT.bitReversed = 0)       
AND (tblCustTransDT.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))      
UNION ALL      
SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,      
0 AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblOrderDoc       
INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID       
INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
CROSS JOIN tblCoOpts      
WHERE (intDocType = 1 OR intDocType =3)       
AND bitCleared = 0       
AND (tblOrderDoc.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
--AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)      
GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END, tblCustomerCat.strCustCategory) Z      
INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName      
WHERE (Z.strCustName LIKE @SQSearchBy       
OR tblCustomers.strCustDesc LIKE @SQSearchBy)      
GROUP BY Z.strCustName,       
tblCustomers.strCustDesc,       
tblCustomers.strCurrency,       
Z.strCustCategory       
HAVING SUM(Z.decAmount) <> 0       
END      
END      
IF @SQBalIncludeSO = 1      
BEGIN      
INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)      
SELECT Z.strCustName as Code,       
tblCustomers.strCustDesc as Description,       
tblCustomers.strCurrency,       
Z.strCustCategory,       
SUM(Z.decAmount) AS decAmount      
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,       
ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblCustTrans       
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID       
INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
WHERE (tblCustTransDT.bitReversed = 0)       
AND (tblCustTransDT.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))      
UNION ALL      
SELECT Y.strCustName,      
ISNULL(CASE Y.bitIsForeign WHEN 0 THEN Y.decAmount ELSE Y.decAmountF END,0) AS decAmount,      
Y.strCustCategory       
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,      
tblOrderDoc.bitIsForeign,      
SUM(ROUND(((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmount,      
SUM(ROUND(((tblOrderDocDT.decLineTotExcF + tblOrderDocDT.decLineTaxAmtF) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmountF,      
tblCustomerCat.strCustCategory      
FROM tblOrderDoc       
INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID       
INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
CROSS JOIN tblCoOpts      
WHERE (intDocType = 1 OR intDocType =3)       
AND bitCleared = 0       
AND (tblOrderDoc.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
--AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)      
GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END, tblOrderDoc.bitIsForeign, tblCustomerCat.strCustCategory) Y) Z      
INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName      
WHERE (Z.strCustName LIKE @SQSearchBy       
OR tblCustomers.strCustDesc LIKE @SQSearchBy)      
GROUP BY Z.strCustName,       
tblCustomers.strCustDesc,       
tblCustomers.strCurrency,       
Z.strCustCategory       
HAVING SUM(Z.decAmount) <> 0       
END      
END      
END      
IF @SQOmit = 2      
BEGIN      
IF @SQSearch = 0      
BEGIN      
IF @SQBalIncludeSO = 0      
BEGIN      
IF @SQOpenSalesOrders = 0      
BEGIN      
INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)      
SELECT Z.strCustName as Code,       
tblCustomers.strCustDesc as Description,       
tblCustomers.strCurrency,       
Z.strCustCategory,       
SUM(Z.decAmount) AS decAmount      
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,       
ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblCustTrans       
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID       
INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
WHERE (tblCustTransDT.bitReversed = 0)       
AND (tblCustTransDT.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))) Z      
INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName      
GROUP BY Z.strCustName,       
tblCustomers.strCustDesc,       
tblCustomers.strCurrency,       
Z.strCustCategory       
HAVING SUM(Z.decAmount) > @SQBalance        
END      
ELSE      
BEGIN      
INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)      
SELECT Z.strCustName as Code,       
tblCustomers.strCustDesc as Description,       
tblCustomers.strCurrency,       
Z.strCustCategory,       
SUM(Z.decAmount) AS decAmount      
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,       
ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblCustTrans       
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID       
INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
WHERE (tblCustTransDT.bitReversed = 0)       
AND (tblCustTransDT.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))      
UNION ALL      
SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,      
0 AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblOrderDoc       
INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID       
INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
CROSS JOIN tblCoOpts      
WHERE (intDocType = 1 OR intDocType =3)       
AND bitCleared = 0       
AND (tblOrderDoc.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
--AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)      
GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END, tblCustomerCat.strCustCategory) Z      
INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName      
GROUP BY Z.strCustName,       
tblCustomers.strCustDesc,       
tblCustomers.strCurrency,       
Z.strCustCategory       
HAVING SUM(Z.decAmount) > @SQBalance        
END      
END      
IF @SQBalIncludeSO = 1      
BEGIN      
INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)      
SELECT Z.strCustName as Code,       
tblCustomers.strCustDesc as Description,       
tblCustomers.strCurrency,       
Z.strCustCategory,       
SUM(Z.decAmount) AS decAmount      
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,       
ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblCustTrans       
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID       
INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
WHERE (tblCustTransDT.bitReversed = 0)       
AND (tblCustTransDT.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))      
UNION ALL      
SELECT Y.strCustName,      
ISNULL(CASE Y.bitIsForeign WHEN 0 THEN Y.decAmount ELSE Y.decAmountF END,0) AS decAmount,      
Y.strCustCategory       
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,      
tblOrderDoc.bitIsForeign,      
SUM(ROUND(((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmount,      
SUM(ROUND(((tblOrderDocDT.decLineTotExcF + tblOrderDocDT.decLineTaxAmtF) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmountF,      
tblCustomerCat.strCustCategory      
FROM tblOrderDoc       
INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID       
INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
CROSS JOIN tblCoOpts      
WHERE (intDocType = 1 OR intDocType =3)       
AND bitCleared = 0       
AND (tblOrderDoc.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
--AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)      
GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END, tblOrderDoc.bitIsForeign, tblCustomerCat.strCustCategory) Y) Z      
INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName      
GROUP BY Z.strCustName,       
tblCustomers.strCustDesc,       
tblCustomers.strCurrency,       
Z.strCustCategory       
HAVING SUM(Z.decAmount) > @SQBalance        
END      
END      
IF @SQSearch = 1      
BEGIN      
IF @SQBalIncludeSO = 0      
BEGIN      
IF @SQOpenSalesOrders = 0      
BEGIN      
INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)      
SELECT Z.strCustName as Code,       
tblCustomers.strCustDesc as Description,       
tblCustomers.strCurrency,       
Z.strCustCategory,       
SUM(Z.decAmount) AS decAmount      
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,       
ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblCustTrans       
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID       
INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
WHERE (tblCustTransDT.bitReversed = 0)       
AND (tblCustTransDT.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))) Z      
INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName      
WHERE (Z.strCustName LIKE @SQSearchBy       
OR tblCustomers.strCustDesc LIKE @SQSearchBy)      
GROUP BY Z.strCustName,       
tblCustomers.strCustDesc,       
tblCustomers.strCurrency,       
Z.strCustCategory       
HAVING SUM(Z.decAmount) > @SQBalance        
END      
ELSE      
BEGIN      
INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)      
SELECT Z.strCustName as Code,       
tblCustomers.strCustDesc as Description,       
tblCustomers.strCurrency,       
Z.strCustCategory,       
SUM(Z.decAmount) AS decAmount      
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,       
ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblCustTrans       
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID       
INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
WHERE (tblCustTransDT.bitReversed = 0)       
AND (tblCustTransDT.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))      
UNION ALL      
SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,      
0 AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblOrderDoc       
INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID       
INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
CROSS JOIN tblCoOpts      
WHERE (intDocType = 1 OR intDocType =3)       
AND bitCleared = 0       
AND (tblOrderDoc.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
--AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)      
GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END, tblCustomerCat.strCustCategory) Z      
INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName      
WHERE (Z.strCustName LIKE @SQSearchBy       
OR tblCustomers.strCustDesc LIKE @SQSearchBy)      
GROUP BY Z.strCustName,       
tblCustomers.strCustDesc,       
tblCustomers.strCurrency,       
Z.strCustCategory       
HAVING SUM(Z.decAmount) > @SQBalance        
END      
END      
IF @SQBalIncludeSO = 1      
BEGIN      
INSERT INTO #TempCust (strCustName, strCustDesc, strCurrency, strCustCategory, decAmount)      
SELECT Z.strCustName as Code,       
tblCustomers.strCustDesc as Description,       
tblCustomers.strCurrency,       
Z.strCustCategory,       
SUM(Z.decAmount) AS decAmount      
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,       
ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0) AS decAmount,      
tblCustomerCat.strCustCategory      
FROM tblCustTrans       
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID       
INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
WHERE (tblCustTransDT.bitReversed = 0)       
AND (tblCustTransDT.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))      
UNION ALL      
SELECT Y.strCustName,      
ISNULL(CASE Y.bitIsForeign WHEN 0 THEN Y.decAmount ELSE Y.decAmountF END,0) AS decAmount,      
Y.strCustCategory       
FROM (SELECT CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END AS strCustName,      
tblOrderDoc.bitIsForeign,      
SUM(ROUND(((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmount,      
SUM(ROUND(((tblOrderDocDT.decLineTotExcF + tblOrderDocDT.decLineTaxAmtF) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decAmountF,      
tblCustomerCat.strCustCategory      
FROM tblOrderDoc       
INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID       
INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName       
INNER JOIN tblCustomerCat ON tblCustomers.strCustCategory = tblCustomerCat.strCustCategory       
LEFT JOIN tblCustomers CUST ON tblCustomers.strParentCust = CUST.strCustName AND CUST.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE CUST.bitInactive END       
CROSS JOIN tblCoOpts      
WHERE (intDocType = 1 OR intDocType =3)       
AND bitCleared = 0       
AND (tblOrderDoc.dteJournalDate <= cast(@SQDate as date))       
AND (tblCustomers.bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE tblCustomers.bitInactive END)       
AND (tblCustomers.strTerm = CASE WHEN @SQTerm IS NULL THEN tblCustomers.strTerm ELSE @SQTerm END)      
AND (tblCustomerCat.bitIsHP = @SQIsHP)      
--AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)      
GROUP BY CASE WHEN ISNULL(CUST.intNAPrintMethod,0) = 0 THEN tblCustomers.strCustName ELSE CUST.strCustName END, tblOrderDoc.bitIsForeign, tblCustomerCat.strCustCategory) Y) Z      
INNER JOIN tblCustomers ON Z.strCustName = tblCustomers.strCustName      
WHERE (Z.strCustName LIKE @SQSearchBy       
OR tblCustomers.strCustDesc LIKE @SQSearchBy)      
GROUP BY Z.strCustName,       
tblCustomers.strCustDesc,       
tblCustomers.strCurrency,       
Z.strCustCategory       
HAVING SUM(Z.decAmount) > @SQBalance        
END      
END      
END      
SELECT #TempCust.strCustName as Code,      
#TempCust.strCustDesc as Description,      
#TempCust.strCurrency,      
#TempCust.decAmount       
FROM #TempCust       
INNER JOIN #TempSec ON #TempCust.strCustCategory = #TempSec.strCustCategory       
WHERE (bitSecExists = 0      
OR (bitSecExists = 1 AND bitSecUserExists = 1))      
ORDER BY CASE WHEN @SQSortType = 1 THEN strCustName else strCustDesc END;      
DROP TABLE #TempSec      
DROP TABLE #TempCust      
END      
IF @SQType = 2      
BEGIN      
IF @SQSearch = 0      
BEGIN      
SELECT strCustCategory as Code,       
strDesc as Description      
FROM tblCustomerCat       
WHERE (bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE bitInactive END)       
ORDER BY strCustCategory      
END      
IF @SQSearch = 1      
BEGIN      
SELECT strCustCategory as Code,       
strDesc  as Description     
FROM tblCustomerCat       
WHERE (bitInactive = CASE WHEN @SQInactive = 0 THEN 0 ELSE bitInactive END)       
AND (strCustCategory LIKE @SQSearchBy       
OR strDesc LIKE @SQSearchBy)      
ORDER BY strCustCategory      
END      
END      
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetDepartmentList] (
	@optOmitZero BIT
	,@optOmitLesser BIT
	,@nudOmitLess INT
	,@SQConsolidated INT
	,@SQFinish DATETIME
	,@cboTerms NVARCHAR(100)
	,@IsInactive BIT
	,@blnBPToolsMode BIT
	,@SQUserName NVARCHAR(max)
	,@ItemList NVARCHAR(max)
	)
AS
DECLARE @Query AS NVARCHAR(max)

SET @Query = ''

BEGIN
	IF (@optOmitZero = 1)
	BEGIN
		SET @Query += 'SELECT strCustName, strCustDesc, strCurrency,     ISNULL((SELECT SUM(ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0)) AS decAmount    FROM tblCustTrans     INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID     WHERE (tblCustTrans.strCustName = tblCustomers.strCustName OR tblCustTrans.strCustName     IN (SELECT CUST1.strCustName FROM tblCustomers CUST1     WHERE CUST1.strParentCust = (SELECT CUST2.strCustName FROM tblCustomers CUST2 WHERE CUST2.strCustName = tblCustomers.strCustName    AND CUST2.intNAPrintMethod = ''' + CONVERT(NVARCHAR(30), @SQConsolidated) + '''))) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= ''' + CONVERT(NVARCHAR(30), @SQFinish) + 
			''')),0)     FROM tblCustomers     WHERE ISNULL((SELECT SUM(ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0)) AS decAmount     FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID     WHERE (tblCustTrans.strCustName = tblCustomers.strCustName     OR tblCustTrans.strCustName IN (SELECT CUST1.strCustName     FROM tblCustomers CUST1     WHERE CUST1.strParentCust = (SELECT CUST2.strCustName     FROM tblCustomers CUST2 WHERE CUST2.strCustName = tblCustomers.strCustName AND CUST2.intNAPrintMethod = ''' + CONVERT(NVARCHAR(30), @SQConsolidated) + ''')))     AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= ''' + CONVERT(NVARCHAR(30), @SQFinish) + ''')),0) <> 0 AND (ISNULL(tblCustomers.intDept, 0)     IN (SELECT * FROM fnSplitStringAsTable(''' + @ItemList + ''', '','')))'

		IF (@cboTerms != NULL)
		BEGIN
			SET @Query += 'AND (tblCustomers.strTerm = ' + @cboTerms + ')'
		END

		IF (@IsInactive = 0)
		BEGIN
			--IF (
			--		@optOmitZero = 1
			--		OR @optOmitLesser = 1
			--		)
			--BEGIN
				SET @Query += 'AND bitInactive = 0'
			--END
			--ELSE
			--BEGIN
			--	SET @Query += 'WHERE bitInactive = 0'
			--END
		END

		--IF (@IsInactive = 0)
		--BEGIN
			IF (@blnBPToolsMode = 0)
			BEGIN
				SET @Query += 'AND strCustCategory IN (SELECT tblCustomerCat.strCustCategory     
FROM tblCustomerCat     
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory     
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0     
OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec     
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0     
AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
			END
		--END
--		ELSE
--		BEGIN
--			IF (
--					@optOmitZero = 1
--					OR @optOmitLesser = 1
--					)
--			BEGIN
--				SET @Query += 'AND strCustCategory IN (SELECT tblCustomerCat.strCustCategory     
--FROM tblCustomerCat     
--LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory     
--WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
--FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0     
--OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
--FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0     
--AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
--			END
--			ELSE
--			BEGIN
--				IF (@blnBPToolsMode = 0)
--				BEGIN
--					SET @Query += 'WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory     
--FROM tblCustomerCat     
--LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory     
--WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec     
--WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0     
--OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec     
--WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0     
--AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
--				END
--			END
--		END

		SET @Query += 'AND strParentCust NOT IN (SELECT strCustName FROM tblCustomers WHERE intNAPrintMethod = ''' + CONVERT(NVARCHAR(30), @SQConsolidated) + ''') ORDER BY strCustName'
	END
	ELSE IF (@optOmitLesser = 1)
	BEGIN
		SET @Query = 'SELECT strCustName, strCustDesc, strCurrency,     
ISNULL((SELECT SUM(ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0)) AS decAmount     
FROM tblCustTrans     
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID     
WHERE (tblCustTrans.strCustName = tblCustomers.strCustName OR tblCustTrans.strCustName     
IN (SELECT CUST1.strCustName FROM tblCustomers CUST1 WHERE CUST1.strParentCust = (SELECT CUST2.strCustName FROM tblCustomers CUST2     
WHERE CUST2.strCustName = tblCustomers.strCustName AND CUST2.intNAPrintMethod = ''' + CONVERT(NVARCHAR(30), @SQConsolidated) + '''))) AND (tblCustTransDT.bitReversed = 0)     
AND (tblCustTransDT.dteJournalDate <= ''' + CONVERT(NVARCHAR(30), @SQFinish) + 
			''')),0) FROM tblCustomers     
WHERE ISNULL((SELECT SUM(ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0)) AS decAmount     
FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID     
WHERE (tblCustTrans.strCustName = tblCustomers.strCustName OR tblCustTrans.strCustName IN (SELECT CUST1.strCustName FROM tblCustomers CUST1     
WHERE CUST1.strParentCust = (SELECT CUST2.strCustName FROM tblCustomers CUST2     
WHERE CUST2.strCustName = tblCustomers.strCustName AND CUST2.intNAPrintMethod = ''' + CONVERT(NVARCHAR(30), @SQConsolidated) + ''')))     
AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= ''' + CONVERT(NVARCHAR(30), @SQFinish) + ''')),0) > ' + @nudOmitLess + ' AND (ISNULL(tblCustomers.intDept, 0)     
IN (SELECT * FROM fnSplitStringAsTable(''' + @ItemList + ''', '','')))'

		IF (@cboTerms != NULL)
		BEGIN
			SET @Query += 'AND (tblCustomers.strTerm = ' + @cboTerms + ')'
		END

		IF (@IsInactive = 0)
		BEGIN
			IF (
					@optOmitZero = 1
					OR @optOmitLesser = 1
					)
			BEGIN
				SET @Query += 'AND bitInactive = 0'
			END
			ELSE
			BEGIN
				SET @Query += 'WHERE bitInactive = 0'
			END
		END

		IF (@IsInactive = 0)
		BEGIN
			IF (@blnBPToolsMode = 0)
			BEGIN
				SET @Query += 'AND strCustCategory IN (SELECT tblCustomerCat.strCustCategory     
FROM tblCustomerCat     
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory     
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0     
OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec     
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0     
AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
			END
		END
		ELSE
		BEGIN
			IF (
					@optOmitZero = 1
					OR @optOmitLesser = 1
					)
			BEGIN
				SET @Query += 'AND strCustCategory IN (SELECT tblCustomerCat.strCustCategory     
FROM tblCustomerCat     
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory     
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0     
OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0     
AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
			END
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
				BEGIN
					SET @Query += 'WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory     
FROM tblCustomerCat     
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory     
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec     
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0     
OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec     
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0     
AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
				END
			END
		END

		SET @Query += 'AND strParentCust NOT IN (SELECT strCustName FROM tblCustomers WHERE intNAPrintMethod = ''' + CONVERT(NVARCHAR(30), @SQConsolidated) + ''') ORDER BY strCustName'
	END
	ELSE
	BEGIN
		SET @Query = 'SELECT strCustName, strCustDesc, strCurrency,     
ISNULL((SELECT SUM(ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0)) AS decAmount     
FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID     
WHERE (tblCustTrans.strCustName = tblCustomers.strCustName OR tblCustTrans.strCustName IN (SELECT CUST1.strCustName FROM tblCustomers CUST1     
WHERE CUST1.strParentCust = (SELECT CUST2.strCustName FROM tblCustomers CUST2     
WHERE CUST2.strCustName = tblCustomers.strCustName AND CUST2.intNAPrintMethod = ''' + CONVERT(NVARCHAR(30), @SQConsolidated) + '''))) AND (tblCustTransDT.bitReversed = 0)     
AND (tblCustTransDT.dteJournalDate <= ''' + CONVERT(NVARCHAR(30), @SQFinish) + ''')),0) FROM tblCustomers     
WHERE (ISNULL(tblCustomers.intDept, 0) IN (SELECT * FROM fnSplitStringAsTable(''' + @ItemList + ''', '','')))'

		IF (@cboTerms != NULL)
		BEGIN
			SET @Query += 'AND (tblCustomers.strTerm = ' + @cboTerms + ')'
		END

		IF (@IsInactive = 0)
		BEGIN
			IF (
					@optOmitZero = 1
					OR @optOmitLesser = 1
					)
			BEGIN
				SET @Query += 'AND bitInactive = 0'
			END
			ELSE
			BEGIN
				SET @Query += 'WHERE bitInactive = 0'
			END
		END

		IF (@IsInactive = 0)
		BEGIN
			IF (@blnBPToolsMode = 0)
			BEGIN
				SET @Query += 'AND strCustCategory IN (SELECT tblCustomerCat.strCustCategory     
FROM tblCustomerCat     
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory     
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0     
OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec     
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0     
AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
			END
		END
		ELSE
		BEGIN
			IF (
					@optOmitZero = 1
					OR @optOmitLesser = 1
					)
			BEGIN
				SET @Query += 'AND strCustCategory IN (SELECT tblCustomerCat.strCustCategory     
FROM tblCustomerCat     
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory     
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0     
OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0     
AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
			END
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
				BEGIN
					SET @Query += 'WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory     
FROM tblCustomerCat     
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory     
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec     
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0     
OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec     
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0     
AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
				END
			END
		END

		SET @Query += 'AND strParentCust NOT IN (SELECT strCustName FROM tblCustomers WHERE intNAPrintMethod =  ''' + CONVERT(NVARCHAR(30), @SQConsolidated) + ''' ) ORDER BY strCustName'
	END

	SET @Query += ''

	EXEC sp_Executesql @Query
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetCatagoriesList] (
	@optOmitZero BIT
	,@optOmitLesser BIT
	,@nudOmitLess INT
	,@SQConsolidated INT
	,@SQFinish DATETIME
	,@cboTerms VARCHAR(100)
	,@IsInactive BIT
	,@blnBPToolsMode BIT
	,@SQUserName NVARCHAR(50)
	,@ItemList NVARCHAR(max)
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)

	SET @Query = ''

	IF (@optOmitZero = 1)
	BEGIN
		SET @Query = 'SELECT strCustName, strCustDesc, strCurrency,     
ISNULL((SELECT SUM(ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0)) AS decAmount    
FROM tblCustTrans     
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID     
WHERE (tblCustTrans.strCustName = tblCustomers.strCustName OR tblCustTrans.strCustName     
IN (SELECT CUST1.strCustName FROM tblCustomers CUST1     
WHERE CUST1.strParentCust = (SELECT CUST2.strCustName FROM tblCustomers CUST2 WHERE CUST2.strCustName = tblCustomers.strCustName    
AND CUST2.intNAPrintMethod = ''' + CONVERT(NVARCHAR(30), @SQConsolidated) + '''))) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= ''' + CONVERT(NVARCHAR(30), @SQFinish) + 
			''')),0)     
FROM tblCustomers     
WHERE ISNULL((SELECT SUM(ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0)) AS decAmount     
FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID     
WHERE (tblCustTrans.strCustName = tblCustomers.strCustName     
OR tblCustTrans.strCustName IN (SELECT CUST1.strCustName     
FROM tblCustomers CUST1     
WHERE CUST1.strParentCust = (SELECT CUST2.strCustName     
FROM tblCustomers CUST2 WHERE CUST2.strCustName = tblCustomers.strCustName AND CUST2.intNAPrintMethod = ''' + CONVERT(NVARCHAR(30), @SQConsolidated) + ''')))     
AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= ''' + CONVERT(NVARCHAR(30), @SQFinish) + ''') ),0) <> 0 AND (ISNULL(tblCustomers.strCustCategory, '''')     
IN (SELECT * FROM fnSplitStringAsTable(''' + @ItemList + ''', '','')))'

		IF (@cboTerms != NULL)
		BEGIN
			SET @Query += 'AND (tblCustomers.strTerm = ' + @cboTerms + ')'
		END

		IF (@IsInactive = 0)
		BEGIN
			IF (
					@optOmitZero = 1
					OR @optOmitLesser = 1
					)
			BEGIN
				SET @Query += 'AND bitInactive = 0'
			END
			ELSE
			BEGIN
				SET @Query += 'AND bitInactive = 0'
			END
		END

		IF (@IsInactive = 0)
		BEGIN
			IF (@blnBPToolsMode = 0)
			BEGIN
				SET @Query += 'AND strCustCategory IN (SELECT tblCustomerCat.strCustCategory     
FROM tblCustomerCat     
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory     
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0     
OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec     
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0     
AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
			END
		END
		ELSE
		BEGIN
			IF (
					@optOmitZero = 1
					OR @optOmitLesser = 1
					)
			BEGIN
				SET @Query += 'AND strCustCategory IN (SELECT tblCustomerCat.strCustCategory     
FROM tblCustomerCat     
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory     
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0     
OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0     
AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
			END
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
				BEGIN
					SET @Query += 'WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory     
FROM tblCustomerCat     
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory     
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec     
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0     
OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec     
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0     
AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
				END
			END
		END

		SET @Query += 'AND strParentCust NOT IN (SELECT strCustName FROM tblCustomers WHERE intNAPrintMethod = ''' + CONVERT(NVARCHAR(30), @SQConsolidated) + ''') ORDER BY strCustName'
	END
	ELSE IF (@optOmitLesser = 1)
	BEGIN
		SET @Query = 'SELECT strCustName, strCustDesc, strCurrency,     
ISNULL((SELECT SUM(ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0)) AS decAmount     
FROM tblCustTrans     
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID     
WHERE (tblCustTrans.strCustName = tblCustomers.strCustName OR tblCustTrans.strCustName     
IN (SELECT CUST1.strCustName FROM tblCustomers CUST1 WHERE CUST1.strParentCust = (SELECT CUST2.strCustName FROM tblCustomers CUST2     
WHERE CUST2.strCustName = tblCustomers.strCustName AND CUST2.intNAPrintMethod = ''' + CONVERT(NVARCHAR(30), @SQConsolidated) + '''))) AND (tblCustTransDT.bitReversed = 0)     
AND (tblCustTransDT.dteJournalDate <= ''' + CONVERT(NVARCHAR(30), @SQFinish) + 
			''')),0) FROM tblCustomers     
WHERE ISNULL((SELECT SUM(ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0)) AS decAmount     
FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID     
WHERE (tblCustTrans.strCustName = tblCustomers.strCustName OR tblCustTrans.strCustName IN (SELECT CUST1.strCustName FROM tblCustomers CUST1     
WHERE CUST1.strParentCust = (SELECT CUST2.strCustName FROM tblCustomers CUST2     
WHERE CUST2.strCustName = tblCustomers.strCustName AND CUST2.intNAPrintMethod = ''' + CONVERT(NVARCHAR(30), @SQConsolidated) + ''')))     
AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= ''' + CONVERT(NVARCHAR(30), @SQFinish) + ''')),0) >   @nudOmitLess AND (ISNULL(tblCustomers.strCustCategory, '''')     
IN (SELECT * FROM fnSplitStringAsTable(''' + @ItemList + ''', '','')))'

		IF (@cboTerms != NULL)
		BEGIN
			SET @Query += 'AND (tblCustomers.strTerm = ' + @cboTerms + ')'
		END

		IF (@IsInactive = 0)
		BEGIN
			IF (
					@optOmitZero = 1
					OR @optOmitLesser = 1
					)
			BEGIN
				SET @Query += 'AND bitInactive = 0'
			END
			ELSE
			BEGIN
				SET @Query += 'AND bitInactive = 0'
			END
		END

		IF (@IsInactive = 0)
		BEGIN
			IF (@blnBPToolsMode = 0)
			BEGIN
				SET @Query += 'AND strCustCategory IN (SELECT tblCustomerCat.strCustCategory     
FROM tblCustomerCat     
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory     
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0     
OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec     
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0     
AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
			END
		END
		ELSE
		BEGIN
			IF (
					@optOmitZero = 1
					OR @optOmitLesser = 1
					)
			BEGIN
				SET @Query += 'AND strCustCategory IN (SELECT tblCustomerCat.strCustCategory     
FROM tblCustomerCat     
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory     
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0     
OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0     
AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
			END
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
				BEGIN
					SET @Query += 'WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory     
FROM tblCustomerCat     
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory     
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec     
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0     
OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec     
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0     
AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
				END
			END
		END

		SET @Query += 'AND strParentCust NOT IN (SELECT strCustName FROM tblCustomers WHERE intNAPrintMethod = ''' + CONVERT(NVARCHAR(30), @SQConsolidated) + ''') ORDER BY strCustName'
	END
	ELSE
	BEGIN
		SET @Query = 'SELECT strCustName, strCustDesc, strCurrency,     
ISNULL((SELECT SUM(ISNULL(CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END,0)) AS decAmount     
FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID     
WHERE (tblCustTrans.strCustName = tblCustomers.strCustName OR tblCustTrans.strCustName IN (SELECT CUST1.strCustName FROM tblCustomers CUST1     
WHERE CUST1.strParentCust = (SELECT CUST2.strCustName FROM tblCustomers CUST2     
WHERE CUST2.strCustName = tblCustomers.strCustName AND CUST2.intNAPrintMethod = ''' + CONVERT(NVARCHAR(30), @SQConsolidated) + '''))) AND (tblCustTransDT.bitReversed = 0)     
AND (tblCustTransDT.dteJournalDate <= ''' + CONVERT(NVARCHAR(30), @SQFinish) + ''')),0) FROM tblCustomers     
WHERE (ISNULL(tblCustomers.strCustCategory, 0) IN (SELECT * FROM fnSplitStringAsTable(''' + @ItemList + ''', '','')))'

		IF (@cboTerms != NULL)
		BEGIN
			SET @Query += 'AND (tblCustomers.strTerm = ' + @cboTerms + ')'
		END

		IF (@IsInactive = 0)
		BEGIN
			IF (
					@optOmitZero = 1
					OR @optOmitLesser = 1
					)
			BEGIN
				SET @Query += 'AND bitInactive = 0'
			END
			ELSE
			BEGIN
				SET @Query += 'AND bitInactive = 0'
			END
		END

		IF (@IsInactive = 0)
		BEGIN
			IF (@blnBPToolsMode = 0)
			BEGIN
				SET @Query += 'AND strCustCategory IN (SELECT tblCustomerCat.strCustCategory     
FROM tblCustomerCat     
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory     
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0     
OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec     
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0     
AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
			END
		END
		ELSE
		BEGIN
			IF (
					@optOmitZero = 1
					OR @optOmitLesser = 1
					)
			BEGIN
				SET @Query += 'AND strCustCategory IN (SELECT tblCustomerCat.strCustCategory     
FROM tblCustomerCat     
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory     
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0     
OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory)     
FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0     
AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
			END
			ELSE
			BEGIN
				IF (@blnBPToolsMode = 0)
				BEGIN
					SET @Query += 'WHERE strCustCategory IN (SELECT tblCustomerCat.strCustCategory     
FROM tblCustomerCat     
LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory     
WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec     
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0     
OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec     
WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0     
AND tblCustomerCatSec.strUserName = ''' + @SQUserName + '''))'
				END
			END
		END

		SET @Query += 'AND strParentCust NOT IN (SELECT strCustName FROM tblCustomers WHERE intNAPrintMethod = ''' + CONVERT(NVARCHAR(30), @SQConsolidated) + ''') ORDER BY strCustName'
	END

	SET @Query += ''

	EXEC sp_Executesql @Query
		,N'@nudOmitLess INT'
		,@nudOmitLess = @nudOmitLess
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetCustomerStatReportDataList]              
(              
@chkOpenSalesOrder Bit,  
@chkUseCalAge bit,  
@chkAffectBalanceWithSOCR bit,  
@SQPeriod1 int,  
@SQPeriod2 int,  
@SQPeriod3 int,  
@SQStart Datetime,  
@SQFinish Datetime,  
@SQCustName nvarchar(max),  
@SQConsolidated int  
)              
AS           
BEGIN        
IF(@chkOpenSalesOrder = 0)  
BEGIN  
IF(@chkUseCalAge = 0)  
BEGIN  
SELECT SUM(decTotalBalance) AS decTotalBalance, SUM(decCurrent) AS decCurrent, SUM(decPeriod2) AS decPeriod2,   
SUM(decPeriod3) AS decPeriod3, SUM(decPeriod4) AS decPeriod4, SUM(decPeriod5) AS decPeriod5, strCustName, strCustDesc   
FROM (SELECT ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T2.dteJournalDate, @SQStart) > 0 THEN CASE T2.bitIsForeign WHEN 0   
THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decTotalBalance ,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < 0   
THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decCurrent ,ISNULL(SUM(CASE WHEN DATEDIFF(DAY,   
T1.dteDueDate, @SQFinish) >= 0 AND DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < @SQPeriod1 THEN CASE T2.bitIsForeign WHEN 0   
THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod2 ,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= @SQPeriod1   
AND DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < @SQPeriod2 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod3 ,  
ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= @SQPeriod2  AND DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < @SQPeriod3   
THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod4 ,  
ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= @SQPeriod3 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END   
ELSE 0 END), 0) AS decPeriod5 ,T1.strCustName,tblCustomers.strCustDesc FROM tblCustTrans T1  
INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID   
INNER JOIN tblCustomers ON T1.strCustName = tblCustomers.strCustName WHERE (T1.strCustName = @SQCustName OR T1.strCustName   
IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (  SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustName   
AND intNAPrintMethod = @SQConsolidated ))) AND T2.bitReversed = 0 AND T2.dteJournalDate <= @SQFinish   
AND (T1.strOrdDocID IS NULL OR (T1.strInvDocID IS NOT NULL AND T1.strOrdDocID IS NOT NULL))   
GROUP BY T1.strCustName ,tblCustomers.strCustDesc UNION SELECT ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T2.dteJournalDate, @SQStart) > 0   
THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decTotalBalance ,  
ISNULL(SUM(CASE  WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) <= 0 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0)   
AS decCurrent,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) > 0   
AND DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < @SQPeriod1 THEN CASE T2.bitIsForeign WHEN 0   
THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod2,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= @SQPeriod1   
AND DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < @SQPeriod2 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod3,  
ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= @SQPeriod2 AND DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < @SQPeriod3   
THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod4,  
ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= @SQPeriod3 THEN CASE T2.bitIsForeign WHEN 0   
THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod5 ,T1.strCustName ,tblCustomers.strCustDesc   
FROM tblCustTrans T1   
INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID   
INNER JOIN tblCustomers ON T1.strCustName = tblCustomers.strCustName WHERE (T1.strCustName = @SQCustName OR T1.strCustName   
IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName   
FROM tblCustomers WHERE strCustName = @SQCustName AND intNAPrintMethod = @SQConsolidated  )))   
AND T2.bitReversed = 0 AND T2.dteJournalDate <= @SQFinish AND (T1.strOrdDocID IS NOT NULL)   
AND (T1.strInvDocID IS NULL) AND (T2.lngCustPayID IS NOT NULL) GROUP BY T1.strCustName ,tblCustomers.strCustDesc ) AS A   
GROUP BY strCustName , strCustDesc  
END  
ELSE  
BEGIN  
SELECT SUM(decTotalBalance) AS decTotalBalance, SUM(decCurrent) AS decCurrent, SUM(decPeriod2) AS decPeriod2, SUM(decPeriod3) AS decPeriod3,   
SUM(decPeriod4) AS decPeriod4, SUM(decPeriod5) AS decPeriod5, strCustName, strCustDesc   
FROM (SELECT ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T2.dteJournalDate, @SQStart) > 0 THEN CASE T2.bitIsForeign   
WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decTotalBalance ,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) >= 0   
THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decCurrent ,  
ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 1 THEN CASE T2.bitIsForeign WHEN 0   
THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod2 ,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 2   
THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod3 ,  
ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 3 THEN CASE T2.bitIsForeign WHEN 0   
THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod4 ,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) <= - 4   
THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod5,T1.strCustName,tblCustomers.strCustDesc   
FROM tblCustTrans T1 INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID INNER JOIN tblCustomers ON T1.strCustName = tblCustomers.strCustName   
WHERE (T1.strCustName = @SQCustName OR T1.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = ( SELECT strCustName   
FROM tblCustomers WHERE strCustName = @SQCustName AND intNAPrintMethod = @SQConsolidated) )) AND T2.bitReversed = 0 AND T2.dteJournalDate <= @SQFinish   
AND (T1.strOrdDocID IS NULL OR (T1.strInvDocID IS NOT NULL AND T1.strOrdDocID IS NOT NULL)) GROUP BY T1.strCustName ,tblCustomers.strCustDesc UNION   
SELECT ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T2.dteJournalDate, @SQStart) > 0 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount   
ELSE T2.decAmountF END ELSE 0 END), 0) AS decTotalBalance ,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) >= 0 THEN CASE T2.bitIsForeign   
WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decCurrent ,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 1   
THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod2 ,  
ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 2 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount   
ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod3 ,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 3   
THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod4 ,  
ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) <= - 4 THEN CASE T2.bitIsForeign WHEN 0   
THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod5 ,T1.strCustName,tblCustomers.strCustDesc FROM tblCustTrans T1   
INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID   
INNER JOIN tblCustomers ON T1.strCustName = tblCustomers.strCustName WHERE (T1.strCustName = @SQCustName OR T1.strCustName   
IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = ( SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustName   
AND intNAPrintMethod = @SQConsolidated ))) AND T2.bitReversed = 0 AND T2.dteJournalDate <= @SQFinish AND (T1.strOrdDocID IS NOT NULL)   
AND (T1.strInvDocID IS NULL) AND (T2.lngCustPayID IS NOT NULL) GROUP BY T1.strCustName ,tblCustomers.strCustDesc ) AS A GROUP BY strCustName, strCustDesc  
END  
END  
ELSE  
BEGIN  
IF(@chkAffectBalanceWithSOCR = 1)  
BEGIN  
IF(@chkUseCalAge = 0)  
BEGIN  
SELECT SUM(decTotalBalance) AS decTotalBalance,SUM(decCurrent) AS decCurrent,SUM(decPeriod2) AS decPeriod2,SUM(decPeriod3) AS decPeriod3,  
SUM(decPeriod4) AS decPeriod4,SUM(decPeriod5) AS decPeriod5,strCustName,strCustDesc   
FROM(SELECT ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T2.dteJournalDate, @SQStart) > 0 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END   
ELSE 0 END), 0) AS decTotalBalance ,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < 0 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount   
ELSE T2.decAmountF END ELSE 0 END), 0) AS decCurrent,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= 0   
AND DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < @SQPeriod1 THEN CASE T2.bitIsForeign WHEN 0   
THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod2 ,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= @SQPeriod1   
AND DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < @SQPeriod2 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0)   
AS decPeriod3 ,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= @SQPeriod2 AND DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < @SQPeriod3   
THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod4 ,  
ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= @SQPeriod3 THEN CASE T2.bitIsForeign WHEN 0    
THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod5,T1.strCustName,tblCustomers.strCustDesc FROM tblCustTrans T1   
INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID   
INNER JOIN tblCustomers ON T1.strCustName = tblCustomers.strCustName WHERE (T1.strCustName = @SQCustName OR T1.strCustName   
IN ( SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustName   
AND intNAPrintMethod = @SQConsolidated ))) AND T2.bitReversed = 0 AND T2.dteJournalDate <= @SQFinish   
AND (T1.strOrdDocID IS NULL OR (T1.strInvDocID IS NOT NULL AND T1.strOrdDocID IS NOT NULL )) GROUP BY T1.strCustName ,tblCustomers.strCustDesc  
UNION ALL   
SELECT ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T2.dteJournalDate, @SQStart) > 0 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE   
T2.decAmountF END ELSE 0 END), 0) AS decTotalBalance ,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < 0 THEN CASE T2.bitIsForeign   
WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decCurrent,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= 0   
AND DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < @SQPeriod1 THEN CASE T2.bitIsForeign WHEN 0   
THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod2 ,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= @SQPeriod1   
AND DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < @SQPeriod2 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod3 ,  
ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= @SQPeriod2 AND DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < @SQPeriod3   
THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod4,  
ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= @SQPeriod3 THEN CASE T2.bitIsForeign WHEN 0   
THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod5 ,T1.strCustName,tblCustomers.strCustDesc FROM tblCustTrans T1   
INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID INNER JOIN tblCustomers ON T1.strCustName = tblCustomers.strCustName   
WHERE (T1.strCustName = @SQCustName OR T1.strCustName IN (SELECT strCustName FROM tblCustomers   
WHERE strParentCust = ( SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustName AND intNAPrintMethod = @SQConsolidated )))   
AND T2.bitReversed = 0 AND T2.dteJournalDate <= @SQFinish AND (T1.strOrdDocID IS NOT NULL) AND (T1.strInvDocID IS NULL) AND (T2.lngCustPayID IS NOT NULL)   
GROUP BY T1.strCustName ,tblCustomers.strCustDesc   
UNION ALL      
SELECT ISNULL(SUM(CASE  WHEN DATEDIFF(DAY, T1.dteJournalDate, @SQStart) > 0 THEN CASE T1.bitIsForeign WHEN 0 THEN T1.decTotal ELSE T1.decTotalF END ELSE 0 END), 0) AS decTotalBalance ,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteRequired, @SQFinish) < 0 THEN CASE T1.bitIsForeign WHEN 0 THEN T1.decTotal ELSE T1.decTotalF END ELSE 0 END), 0) AS decCurrent ,ISNULL(SUM(CASE  WHEN DATEDIFF(DAY, T1.dteRequired, @SQFinish) >= 0 AND DATEDIFF(DAY, T1.dteRequired, @SQFinish) < @SQPeriod1 THEN CASE T1.bitIsForeign WHEN 0 THEN T1.decTotal ELSE T1.decTotalF END ELSE 0 END), 0) AS decPeriod2,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteRequired, @SQFinish) >= @SQPeriod1 AND DATEDIFF(DAY, T1.dteRequired, @SQFinish) < @SQPeriod2 THEN CASE T1.bitIsForeign WHEN 0 THEN T1.decTotal ELSE T1.decTotalF END ELSE 0 END), 0) AS decPeriod3,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteRequired, @SQFinish) >= @SQPeriod2 AND DATEDIFF(DAY, T1.dteRequired, @SQFinish) < @SQPeriod3 THEN CASE T1.bitIsForeign WHEN 0 THEN T1.decTotal ELSE T1.decTotalF END ELSE 0 END), 0) AS decPeriod4,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteRequired, @SQFinish) >= @SQPeriod3 THEN CASE T1.bitIsForeign WHEN 0 THEN T1.decTotal ELSE T1.decTotalF END ELSE 0 END), 0) AS decPeriod5,T1.strCustName ,tblCustomers.strCustDesc
FROM tblOrderDoc T1 INNER JOIN tblCustomers ON T1.strCustName = tblCustomers.strCustName WHERE (intDocType = 1 OR intDocType =3) AND bitCleared = 0 AND (T1.strCustName = @SQCustName OR T1.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = 
(SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustName AND intNAPrintMethod = @SQConsolidated ))) AND T1.dteJournalDate <= @SQFinish 
GROUP BY T1.strCustName ,tblCustomers.strCustDesc) AS A GROUP BY strCustName,strCustDesc   
END  
ELSE  
BEGIN  
SELECT SUM(decTotalBalance) AS decTotalBalance,SUM(decCurrent) AS decCurrent,SUM(decPeriod2) AS decPeriod2,SUM(decPeriod3) AS decPeriod3,SUM(decPeriod4) AS decPeriod4,SUM(decPeriod5) AS decPeriod5,strCustName,strCustDesc 
FROM (SELECT ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T2.dteJournalDate, @SQStart) > 0 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decTotalBalance,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) >= 0 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decCurrent,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 1 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod2,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 2 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod3,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 3 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod4,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) <= - 4 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod5,T1.strCustName,tblCustomers.strCustDesc FROM tblCustTrans T1 INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID INNER JOIN tblCustomers ON T1.strCustName = tblCustomers.strCustName WHERE (T1.strCustName = @SQCustName OR T1.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustName AND intNAPrintMethod = @SQConsolidated))) AND T2.bitReversed = 0 AND T2.dteJournalDate <= @SQFinish AND (T1.strOrdDocID IS NULL OR (T1.strInvDocID IS NOT NULL AND T1.strOrdDocID IS NOT NULL )) GROUP BY T1.strCustName,tblCustomers.strCustDesc   
UNION ALL   
SELECT ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T2.dteJournalDate, @SQStart) > 0 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decTotalBalance,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) >= 0 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decCurrent,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 1 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod2,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 2 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod3,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 3 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod4,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) <= - 4 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod5,T1.strCustName ,tblCustomers.strCustDesc FROM tblCustTrans T1 INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID INNER JOIN tblCustomers ON T1.strCustName = tblCustomers.strCustName WHERE (T1.strCustName = @SQCustName OR T1.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustName AND intNAPrintMethod = @SQConsolidated ))) AND T2.bitReversed = 0 AND T2.dteJournalDate <= @SQFinish AND (T1.strOrdDocID IS NOT NULL) AND (T1.strInvDocID IS NULL) AND (T2.lngCustPayID IS NOT NULL) GROUP BY T1.strCustName,tblCustomers.strCustDesc   
UNION ALL  
SELECT ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteJournalDate, @SQStart) > 0 THEN CASE T1.bitIsForeign WHEN 0 THEN T1.decTotal ELSE T1.decTotalF END ELSE 0 END), 0) AS decTotalBalance,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) >= 0 THEN CASE T1.bitIsForeign WHEN 0 THEN T1.decTotal ELSE T1.decTotalF END ELSE 0 END), 0) AS decCurrent,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 1 THEN CASE T1.bitIsForeign WHEN 0 THEN T1.decTotal ELSE T1.decTotalF END ELSE 0 END), 0) AS decPeriod2 ,ISNULL(SUM(CASE  WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 2 THEN CASE T1.bitIsForeign WHEN 0 THEN T1.decTotal ELSE T1.decTotalF END ELSE 0 END), 0) AS decPeriod3,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 3 THEN CASE T1.bitIsForeign WHEN 0 THEN T1.decTotal ELSE T1.decTotalF END ELSE 0 END), 0) AS decPeriod4,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) <= - 4 THEN CASE T1.bitIsForeign WHEN 0 THEN T1.decTotal ELSE T1.decTotalF END ELSE 0 END), 0) AS decPeriod5,T1.strCustName,tblCustomers.strCustDesc FROM tblOrderDoc T1 INNER JOIN tblCustomers ON T1.strCustName = tblCustomers.strCustName WHERE (intDocType = 1 OR intDocType =3) AND bitCleared = 0 AND (T1.strCustName = @SQCustName OR T1.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustName AND intNAPrintMethod = @SQConsolidated))) AND T1.dteJournalDate <= @SQFinish GROUP BY T1.strCustName,tblCustomers.strCustDesc ) AS A GROUP BY strCustName,strCustDesc       
END  
END  
ELSE  
IF(@chkUseCalAge= 0)  
BEGIN  
SELECT SUM(decTotalBalance) AS decTotalBalance,SUM(decCurrent) AS decCurrent,SUM(decPeriod2) AS decPeriod2,SUM(decPeriod3) AS decPeriod3,SUM(decPeriod4) AS decPeriod4,SUM(decPeriod5) AS decPeriod5,strCustName,strCustDesc FROM (   
SELECT ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T2.dteJournalDate, @SQStart) > 0 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decTotalBalance ,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < 0 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decCurrent,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= 0 AND DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < @SQPeriod1 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod2 ,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= @SQPeriod1 AND DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < @SQPeriod2 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod3 ,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= @SQPeriod2  AND DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < @SQPeriod3 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod4 ,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= @SQPeriod3 THEN CASE T2.bitIsForeign WHEN 0  THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod5,T1.strCustName,tblCustomers.strCustDesc 
FROM tblCustTrans T1 INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID INNER JOIN tblCustomers ON T1.strCustName = tblCustomers.strCustName WHERE (T1.strCustName = @SQCustName OR T1.strCustName IN ( SELECT strCustName FROM tblCustomers 
WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustName AND intNAPrintMethod = @SQConsolidated ))) AND T2.bitReversed = 0 AND T2.dteJournalDate <= @SQFinish AND (T1.strOrdDocID IS NULL OR (T1.strInvDocID IS NOT NULL AND T1.strOrdDocID IS NOT NULL )) GROUP BY T1.strCustName ,tblCustomers.strCustDesc   
UNION ALL  
SELECT ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T2.dteJournalDate, @SQStart) > 0 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decTotalBalance ,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < 0 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decCurrent,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= 0 AND DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < @SQPeriod1 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod2 ,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= @SQPeriod1 AND DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < @SQPeriod2 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod3 ,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= @SQPeriod2 AND DATEDIFF(DAY, T1.dteDueDate, @SQFinish) < @SQPeriod3 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod4,ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T1.dteDueDate, @SQFinish) >= @SQPeriod3 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod5 ,T1.strCustName,tblCustomers.strCustDesc
FROM tblCustTrans T1 INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID INNER JOIN tblCustomers ON T1.strCustName = tblCustomers.strCustName WHERE (T1.strCustName = @SQCustName OR T1.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = ( SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustName AND intNAPrintMethod = @SQConsolidated ))) AND T2.bitReversed = 0 AND T2.dteJournalDate <= @SQFinish AND (T1.strOrdDocID IS NOT NULL) AND (T1.strInvDocID IS NULL) AND (T2.lngCustPayID IS NOT NULL) GROUP BY T1.strCustName ,tblCustomers.strCustDesc   ) AS A GROUP BY strCustName,strCustDesc  
END  
ELSE  
BEGIN  
SELECT SUM(decTotalBalance) AS decTotalBalance,SUM(decCurrent) AS decCurrent,SUM(decPeriod2) AS decPeriod2,SUM(decPeriod3) AS decPeriod3,SUM(decPeriod4) AS decPeriod4,SUM(decPeriod5) AS decPeriod5,strCustName,strCustDesc FROM (   
SELECT ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T2.dteJournalDate, @SQStart) > 0 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decTotalBalance,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) >= 0 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decCurrent,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 1 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod2,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 2 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod3,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 3 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod4,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) <= - 4 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod5,T1.strCustName,tblCustomers.strCustDesc FROM tblCustTrans T1 INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID INNER JOIN tblCustomers ON T1.strCustName = tblCustomers.strCustName WHERE (T1.strCustName = @SQCustName OR T1.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustName AND intNAPrintMethod = @SQConsolidated))) AND T2.bitReversed = 0 AND T2.dteJournalDate <= @SQFinish AND (T1.strOrdDocID IS NULL OR (T1.strInvDocID IS NOT NULL AND T1.strOrdDocID IS NOT NULL )) GROUP BY T1.strCustName,tblCustomers.strCustDesc   
UNION ALL   
SELECT ISNULL(SUM(CASE WHEN DATEDIFF(DAY, T2.dteJournalDate, @SQStart) > 0 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decTotalBalance,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) >= 0 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decCurrent,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 1 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod2,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 2 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod3,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) = - 3 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod4,ISNULL(SUM(CASE WHEN DATEDIFF(MONTH, @SQFinish, T1.dteJournalDate) <= - 4 THEN CASE T2.bitIsForeign WHEN 0 THEN T2.decAmount ELSE T2.decAmountF END ELSE 0 END), 0) AS decPeriod5,T1.strCustName ,tblCustomers.strCustDesc FROM tblCustTrans T1 INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID INNER JOIN tblCustomers ON T1.strCustName = tblCustomers.strCustName WHERE (T1.strCustName = @SQCustName OR T1.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustName AND intNAPrintMethod = @SQConsolidated ))) AND T2.bitReversed = 0 AND T2.dteJournalDate <= @SQFinish AND (T1.strOrdDocID IS NOT NULL) AND (T1.strInvDocID IS NULL) AND (T2.lngCustPayID IS NOT NULL) GROUP BY T1.strCustName,tblCustomers.strCustDesc) AS A GROUP BY strCustName,strCustDesc    
END  
END  
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetNotBroughForwardCustomerStatReportDataList]                
(                
@chkOpenSalesOrder Bit,    
@chkUseCalAge bit,    
@optShowDoc bit,    
@SQPeriod1 int,    
@SQPeriod2 int,    
@SQPeriod3 int,    
@SQAsAt Datetime,    
@SQCustID nvarchar(max),    
@SQConsolidated int,  
@SQintTransType int,  
@SQPaidIn Datetime,  
@SQAsAtCriteria Datetime    
)                
AS             
BEGIN    
IF(@chkOpenSalesOrder = 0)    
BEGIN    
IF(@chkUseCalAge = 0)    
BEGIN    
IF(@optShowDoc =0)  
BEGIN  
With data1 as (SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment,'') END AS strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '') ELSE ISNULL(tblCustPay.strSource, '') END END AS strDocNumber, MASTERTABLE.dteDueDate, tblCustTransDT.dteJournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS Amount, MASTERTABLE.dteJournalDate AS MasterdteJournalDate, ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID),'') AS Expr2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < 0 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= 0 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod1 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod1 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod2 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod2 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod4, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod5, ISNULL(tblCustPay.lngJourID, 0) AS lngJourID, MASTERTABLE.strCustName, tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID       WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated)))      AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= @SQPaidIn))    
UNION  
SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS strInvDepNumber ,CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE 	WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '') ELSE ISNULL(tblCustPay.strSource, '') END END AS strDocNumber ,tblCustTransDT.dteJournalDate ,MASTERTABLE.dteDueDate ,MASTERTABLE.intTransType AS TransType ,tblCustTransDT.intTransType ,tblCustTransDT.lngCustTrID ,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS Amount ,MASTERTABLE.dteJournalDate AS MasterdteJournalDate ,ISNULL((	SELECT tblOrderDoc.strSalesName FROM tblOrderDoc WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID ), '') AS Expr2 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < 0 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decCurrent ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= 0 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod1 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod2 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod1 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod2 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod3 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod2 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod4 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod5 ,ISNULL(tblCustPay.lngJourID, 0)  AS lngJourID ,tblCustomers.strCustName ,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE (	MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN ( SELECT strCustName FROM tblCustomers WHERE strParentCust = ( SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ))) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND ( tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= @SQPaidIn))),data2 as (Select *,IsMatch=1 from data1 where lngCustTrID in (Select lngCustTrID from data1 group By lngCustTrID having Count(lngCustTrID)>=2) Union all Select * ,IsMatch=2 from data1 where lngCustTrID not in (Select lngCustTrID from data1 
group By lngCustTrID having Count(lngCustTrID)>=2)) SELECT aa.*,(Select Min(bb.dteJournalDate) from data2 bb where bb.lngCustTrID=aa.lngCustTrID) as dateaa FROM data2 as aa ORDER BY dateaa , CASE WHEN IsMatch = 1 THEN lngCustTrID END ,strDocNumber  
END  
ELSE  
BEGIN  
with data1 as (SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment,'') END AS strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '') ELSE ISNULL(tblCustPay.strSource, '') END END AS strDocNumber, tblCustTransDT.dteJournalDate, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS Amount, MASTERTABLE.dteJournalDate AS MasterdteJournalDate, ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID),'') AS Expr2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < 0 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= 0 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod1 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod1 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod2 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod2 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod4, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod5, ISNULL(tblCustPay.lngJourID, 0)  AS lngJourID, tblCustomers.strCustName, tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID   
WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated)))  
AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= @SQPaidIn))  
UNION  
SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS strInvDepNumber ,CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '') ELSE ISNULL(tblCustPay.strSource, '') END END AS strDocNumber,tblCustTransDT.dteJournalDate ,MASTERTABLE.dteDueDate ,MASTERTABLE.intTransType AS TransType ,tblCustTransDT.intTransType ,tblCustTransDT.lngCustTrID ,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS Amount,MASTERTABLE.dteJournalDate AS MasterdteJournalDate ,ISNULL((SELECT tblOrderDoc.strSalesName FROM tblOrderDoc WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID ), '') AS Expr2 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) >= 0 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decCurrent ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 1 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod2 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 2 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod3 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 3 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod4 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) <= - 4 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod5 ,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID ,MASTERTABLE.strCustName ,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN ( SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ) ) ) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= @SQPaidIn))),data2 as (Select *,IsMatch=1 from data1 where lngCustTrID in (Select lngCustTrID from data1 group By lngCustTrID having Count(lngCustTrID)>=2) Union all Select * ,IsMatch=2 from data1 where lngCustTrID not in (Select lngCustTrID from data1 group By lngCustTrID having Count(lngCustTrID)>=2)) SELECT aa.*,(Select Min(bb.dteJournalDate) from data2 bb where bb.lngCustTrID=aa.lngCustTrID) as dateaa FROM data2 as aa ORDER BY dateaa , CASE WHEN IsMatch = 1 THEN lngCustTrID END ,strDocNumber  
END  
END    
ELSE    
BEGIN    
IF(@optShowDoc =0)  
BEGIN  
With data1 as (SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment,'') END AS strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '') ELSE ISNULL(tblCustPay.strSource, '') END END AS strDocNumber, MASTERTABLE.dteDueDate, tblCustTransDT.dteJournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS Amount, MASTERTABLE.dteJournalDate AS MasterdteJournalDate, ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID),'') AS Expr2, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) >= 0 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = -1 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod2, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = -2 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = -3 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod4, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) <= -4 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod5, ISNULL(tblCustPay.lngJourID, 0)  AS lngJourID, MASTERTABLE.strCustName, tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID       WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated)))      AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))   
UNION  
SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS strInvDepNumber ,CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '') ELSE ISNULL(tblCustPay.strSource, '') END END AS strDocNumber,MASTERTABLE.dteDueDate ,tblCustTransDT.dteJournalDate ,MASTERTABLE.intTransType AS TransType ,tblCustTransDT.intTransType ,tblCustTransDT.lngCustTrID ,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS Amount ,MASTERTABLE.dteJournalDate AS MasterdteJournalDate ,ISNULL((SELECT tblOrderDoc.strSalesName FROM tblOrderDoc WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID ), '') AS Expr2 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) >= 0 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decCurrent ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = - 1 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod2 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = - 2 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod3 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = - 3 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod4 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) <= - 4 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod5 ,ISNULL(tblCustPay.lngJourID, 0)  AS lngJourID ,MASTERTABLE.strCustName ,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN ( SELECT strCustName FROM tblCustomers WHERE strParentCust = ( SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ) ) ) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND ( tblCustTransDT.lngCustTrID NOT IN ( SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0 ))      ),data2 as (Select *,IsMatch=1 from data1 where lngCustTrID in (Select lngCustTrID from data1 group By lngCustTrID having Count(lngCustTrID)>=2) Union all Select * ,IsMatch=2 from data1 where lngCustTrID not in (Select lngCustTrID from data1 group By lngCustTrID having Count(lngCustTrID)>=2)) SELECT aa.*,(Select Min(bb.dteJournalDate) from data2 bb where bb.lngCustTrID=aa.lngCustTrID) as dateaa FROM data2 as aa ORDER BY dateaa , CASE WHEN IsMatch = 1 THEN lngCustTrID END ,strDocNumber  
END  
ELSE  
BEGIN  
With data1 as (SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment,'') END AS strInvDepNumber, CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strInvDocID, '') ELSE ISNULL(tblCustPay.strSource, '') END END AS strDocNumber, tblCustTransDT.dteJournalDate, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS Amount, MASTERTABLE.dteJournalDate AS MasterdteJournalDate, ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID),'') AS Expr2, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) >= 0 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = -1 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod2, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = -2 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = -3 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod4, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) <= -4 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod5, ISNULL(tblCustPay.lngJourID, 0) AS lngJourID, MASTERTABLE.strCustName, tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID   
WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated)))      AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0))      UNION  
SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS strInvDepNumber ,CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN ISNULL(MASTERTABLE.strOrdDocID, '') ELSE ISNULL(tblCustPay.strSource, '') END END AS strDocNumber,tblCustTransDT.dteJournalDate ,MASTERTABLE.dteDueDate ,MASTERTABLE.intTransType AS TransType ,tblCustTransDT.intTransType ,tblCustTransDT.lngCustTrID ,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS Amount,MASTERTABLE.dteJournalDate AS MasterdteJournalDate ,ISNULL((SELECT tblOrderDoc.strSalesName FROM tblOrderDoc WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID ), '') AS Expr2 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) >= 0 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decCurrent ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 1 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod2 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 2 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod3 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 3 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod4 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) <= - 4 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod5 ,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID ,MASTERTABLE.strCustName ,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID 
WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN ( SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ) ) ) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.lngCustTrID NOT IN ( SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0 ))      ),data2 as (Select *,IsMatch=1 from data1 where lngCustTrID in (Select lngCustTrID from data1 group By lngCustTrID having Count(lngCustTrID)>=2) Union all Select * ,IsMatch=2 from data1 where lngCustTrID not in (Select lngCustTrID from data1 group By lngCustTrID having Count(lngCustTrID)>=2)) SELECT aa.*,(Select Min(bb.dteJournalDate) from data2 bb where bb.lngCustTrID=aa.lngCustTrID) as dateaa FROM data2 as aa ORDER BY dateaa , CASE WHEN IsMatch = 1 THEN lngCustTrID END ,strDocNumber  
END  
END    
END    
ELSE    
BEGIN    
IF(@chkUseCalAge = 0)    
BEGIN    
IF(@optShowDoc = 0)    
BEGIN    
With data1 as (SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS strInvDepNumber ,CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END END AS strDocNumber,MASTERTABLE.dteDueDate ,tblCustTransDT.dteJournalDate ,MASTERTABLE.intTransType AS TransType ,tblCustTransDT.intTransType ,tblCustTransDT.lngCustTrID ,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS Amount,MASTERTABLE.dteJournalDate AS MasterdteJournalDate ,ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID), '') AS Expr2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < 0 THEN CASE tblCustTransDT.bitIsForeign	WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF	END ELSE 0 END, 0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= 0 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod1 THEN CASE tblCustTransDT.bitIsForeign WHEN 0	THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0	END, 0) AS decPeriod2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod1	AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod2 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount	ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod2 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod4 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod5 ,ISNULL(tblCustPay.lngJourID, 0)  AS lngJourID,MASTERTABLE.strCustName ,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ) ) )	AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL ))	AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= @SQPaidIn)) 
UNION
SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS strInvDepNumber ,CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(MASTERTABLE.strOrdDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE ISNULL(MASTERTABLE.strOrdDocID, '') END END AS strDocNumber,MASTERTABLE.dteDueDate ,tblCustTransDT.dteJournalDate ,MASTERTABLE.intTransType AS TransType ,tblCustTransDT.intTransType ,tblCustTransDT.lngCustTrID ,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS Amount,MASTERTABLE.dteJournalDate AS MasterdteJournalDate ,ISNULL((SELECT tblOrderDoc.strSalesName FROM tblOrderDoc WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID ), '') AS Expr2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < 0 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decCurrent ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= 0 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod1 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod2 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod1 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod2 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod3 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod2 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod4 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod5 ,ISNULL(tblCustPay.lngJourID, 0)  AS lngJourID,MASTERTABLE.strCustName ,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ) ) ) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL)	AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans	INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID	WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0	AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0	AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= @SQPaidIn))   
UNION  
SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS strInvDepNumber ,CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(MASTERTABLE.strOrdDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE ISNULL(MASTERTABLE.strOrdDocID, '') END END AS strDocNumber,MASTERTABLE.dteDueDate ,tblCustTransDT.dteJournalDate ,MASTERTABLE.intTransType AS TransType ,tblCustTransDT.intTransType ,tblCustTransDT.lngCustTrID ,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS Amount,MASTERTABLE.dteJournalDate AS MasterdteJournalDate ,ISNULL((SELECT tblOrderDoc.strSalesName FROM tblOrderDoc WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID ), '') AS Expr2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < 0 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decCurrent ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= 0 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod1 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod2 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod1 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod2 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod3 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod2 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod4 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod5 ,ISNULL(tblCustPay.lngJourID, 0)  AS lngJourID,MASTERTABLE.strCustName ,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ) ) ) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0 ) )    
UNION  
SELECT tblOrderDoc.strReference AS strInvDepNumber, tblOrderDoc.strOrdDocID AS strDocNumber, tblOrderDoc.dteRequired, tblOrderDoc.dteJournalDate, 1 AS TransType, 1 AS intTransType, 0 AS lngCustTrID, CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END, tblOrderDoc.dteJournalDate  AS MasterdteJournalDate , ISNULL(tblOrderDoc.strSalesName, '') AS Expr2, ISNULL(CASE WHEN DATEDIFF(DAY, tblOrderDoc.dteRequired, @SQAsAt) < 0 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(DAY, tblOrderDoc.dteRequired, @SQAsAt) >= 0 AND DATEDIFF(DAY, tblOrderDoc.dteRequired, @SQAsAt) < @SQPeriod1 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decPeriod2 ,ISNULL(CASE WHEN DATEDIFF(DAY, tblOrderDoc.dteRequired, @SQAsAt) >= @SQPeriod1 AND DATEDIFF(DAY, tblOrderDoc.dteRequired, @SQAsAt) < @SQPeriod2 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(DAY, tblOrderDoc.dteRequired, @SQAsAt) >= @SQPeriod2 AND DATEDIFF(DAY, tblOrderDoc.dteRequired, @SQAsAt) < @SQPeriod3 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0  END, 0) AS decPeriod4, ISNULL(CASE WHEN DATEDIFF(DAY, tblOrderDoc.dteRequired, @SQAsAt) >= @SQPeriod3 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decPeriod5, 0 AS lngJourID, tblCustomers.strCustName, tblCustomers.strCustDesc FROM tblOrderDoc INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName WHERE (intDocType = 1 OR intDocType =3) AND bitCleared = 0 AND (tblOrderDoc.strCustName = @SQCustID OR tblOrderDoc.strCustName IN ( SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated) )) AND (tblOrderDoc.dteJournalDate <= @SQAsAt) AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)      ),data2 as (Select *,IsMatch=1 from data1 where lngCustTrID in (Select lngCustTrID from data1 group By lngCustTrID having Count(lngCustTrID)>=2) Union all Select * ,IsMatch=2 from data1 where lngCustTrID not in (Select lngCustTrID from data1 group By lngCustTrID having Count(lngCustTrID)>=2)) SELECT aa.*,(Select Min(bb.dteJournalDate) from data2 bb where bb.lngCustTrID=aa.lngCustTrID) as dateaa FROM data2 as aa ORDER BY dateaa , CASE WHEN IsMatch = 1 THEN lngCustTrID END ,strDocNumber     
END    
ELSE    
BEGIN    
With data1 as (SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS strInvDepNumber ,CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '')	END	END	AS strDocNumber,tblCustTransDT.dteJournalDate ,MASTERTABLE.dteDueDate ,MASTERTABLE.intTransType AS TransType ,tblCustTransDT.intTransType ,tblCustTransDT.lngCustTrID ,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS Amount,MASTERTABLE.dteJournalDate AS MasterdteJournalDate ,ISNULL(( SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID ), '') AS Expr2 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < 0 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decCurrent ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= 0 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod1 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod2 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod1 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod2 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod3 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod2 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod4 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod5 ,ISNULL(tblCustPay.lngJourID, 0)  AS lngJourID,tblCustomers.strCustName ,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN ( SELECT strCustName FROM tblCustomers WHERE strParentCust = ( SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ) ) ) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL )) AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= @SQPaidIn))   
UNION  
SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS strInvDepNumber ,CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(MASTERTABLE.strOrdDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE ISNULL(MASTERTABLE.strOrdDocID, '') END END AS strDocNumber,tblCustTransDT.dteJournalDate ,MASTERTABLE.dteDueDate ,MASTERTABLE.intTransType AS TransType ,tblCustTransDT.intTransType ,tblCustTransDT.lngCustTrID ,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS Amount,MASTERTABLE.dteJournalDate AS MasterdteJournalDate ,ISNULL(( SELECT tblOrderDoc.strSalesName FROM tblOrderDoc WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID ), '') AS Expr2 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < 0 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decCurrent ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= 0 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod1 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod2 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod1 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod2 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod3 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod2 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod4 ,ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod5 ,ISNULL(tblCustPay.lngJourID, 0)  AS lngJourID,tblCustomers.strCustName ,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN ( SELECT strCustName FROM tblCustomers WHERE strParentCust = ( SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ) ) ) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= @SQPaidIn))       
UNION      
SELECT tblOrderDoc.strReference AS strInvDepNumber, tblOrderDoc.strOrdDocID AS strDocNumber, tblOrderDoc.dteJournalDate, tblOrderDoc.dteRequired, 1 AS TransType, 1 AS intTransType, 0 AS lngCustTrID, CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END, tblOrderDoc.dteJournalDate, ISNULL(tblOrderDoc.strSalesName, '') AS Expr2, ISNULL(CASE WHEN DATEDIFF(DAY, tblOrderDoc.dteJournalDate, @SQAsAtCriteria) < 0 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(DAY, tblOrderDoc.dteJournalDate, @SQAsAtCriteria) >= 0 AND DATEDIFF(DAY, tblOrderDoc.dteJournalDate, @SQAsAtCriteria) < @SQPeriod1 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decPeriod2, ISNULL(CASE WHEN DATEDIFF(DAY, tblOrderDoc.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod1 AND DATEDIFF(DAY, tblOrderDoc.dteJournalDate, @SQAsAtCriteria) < @SQPeriod2 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(DAY, tblOrderDoc.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod2 AND DATEDIFF(DAY, tblOrderDoc.dteJournalDate, @SQAsAtCriteria) < @SQPeriod3 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decPeriod4, ISNULL(CASE WHEN DATEDIFF(DAY, tblOrderDoc.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod3 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decPeriod5, 0 AS lngJourID, tblCustomers.strCustName, tblCustomers.strCustDesc FROM tblOrderDoc INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName WHERE (intDocType = 1 OR intDocType =3) AND bitCleared = 0 AND ( tblOrderDoc.strCustName = @SQCustID OR tblOrderDoc.strCustName IN ( SELECT strCustName FROM tblCustomers WHERE strParentCust = ( SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated))) AND (tblOrderDoc.dteJournalDate <= @SQAsAt) AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)       ),data2 as (Select *,IsMatch=1 from data1 where lngCustTrID in (Select lngCustTrID from data1 group By lngCustTrID having Count(lngCustTrID)>=2) Union all Select * ,IsMatch=2 from data1 where lngCustTrID not in (Select lngCustTrID from data1 group By lngCustTrID having Count(lngCustTrID)>=2)) SELECT aa.*,(Select Min(bb.dteJournalDate) from data2 bb where bb.lngCustTrID=aa.lngCustTrID) as dateaa FROM data2 as aa ORDER BY dateaa , CASE WHEN IsMatch = 1 THEN lngCustTrID END ,strDocNumber     
END   
END    
ELSE    
IF(@optShowDoc= 0)    
BEGIN    
With data1 as (SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS strInvDepNumber ,CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END END AS strDocNumber,MASTERTABLE.dteDueDate ,tblCustTransDT.dteJournalDate ,MASTERTABLE.intTransType AS TransType ,tblCustTransDT.intTransType ,tblCustTransDT.lngCustTrID ,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS Amount,MASTERTABLE.dteJournalDate AS MasterdteJournalDate ,ISNULL(( SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID ), '') AS Expr2 ,ISNULL(CASE  WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) >= 0 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decCurrent ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = - 1 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod2 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = - 2 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod3 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = - 3 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod4 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) <= - 4 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod5 ,ISNULL(tblCustPay.lngJourID, 0)  AS lngJourID ,MASTERTABLE.strCustName ,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN ( SELECT strCustName FROM tblCustomers WHERE strParentCust = ( SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ))) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL) ) AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= @SQPaidIn))   
UNION  
SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS strInvDepNumber ,CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(MASTERTABLE.strOrdDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE ISNULL(MASTERTABLE.strOrdDocID, '') END END AS strDocNumber,tblCustTransDT.dteJournalDate ,MASTERTABLE.dteDueDate ,MASTERTABLE.intTransType AS TransType ,tblCustTransDT.intTransType ,tblCustTransDT.lngCustTrID ,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS Amount,MASTERTABLE.dteJournalDate AS MasterdteJournalDate ,ISNULL((SELECT tblOrderDoc.strSalesName FROM tblOrderDoc WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID ), '') AS Expr2 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) >= 0 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decCurrent ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 1 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod2 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 2 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 	END, 0) AS decPeriod3 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 3 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod4 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) <= - 4 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod5 ,ISNULL(tblCustPay.lngJourID, 0)  AS lngJourID ,MASTERTABLE.strCustName ,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN ( SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ) ) ) AND (tblCustTransDT.bitReversed = 0)	AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= @SQPaidIn))   
UNION  
SELECT tblOrderDoc.strReference AS strInvDepNumber,tblOrderDoc.strOrdDocID AS strDocNumber,tblOrderDoc.dteRequired,tblOrderDoc.dteJournalDate,1 AS TransType,1 AS intTransType,0 AS lngCustTrID,CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ,tblOrderDoc.dteJournalDate AS MasterdteJournalDate,ISNULL(tblOrderDoc.strSalesName, '') AS Expr2,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, tblOrderDoc.dteRequired) >= 0 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decCurrent,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, tblOrderDoc.dteRequired) = - 1 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decPeriod2,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, tblOrderDoc.dteRequired) = - 2 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decPeriod3,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, tblOrderDoc.dteRequired) = - 3 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decPeriod4 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, tblOrderDoc.dteRequired) <= - 4 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decPeriod5,0 AS lngJourID,tblCustomers.strCustName,tblCustomers.strCustDesc FROM tblOrderDoc INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName WHERE (intDocType = 1 OR intDocType =3) AND bitCleared = 0 AND (tblOrderDoc.strCustName = @SQCustID OR tblOrderDoc.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = ( SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ))) AND (tblOrderDoc.dteJournalDate <= @SQAsAt) AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)      ),data2 as (Select *,IsMatch=1 from data1 where lngCustTrID in (Select lngCustTrID from data1 group By lngCustTrID having Count(lngCustTrID)>=2) Union all Select * ,IsMatch=2 from data1 where lngCustTrID not in (Select lngCustTrID from data1 group By lngCustTrID having Count(lngCustTrID)>=2)) SELECT aa.*,(Select Min(bb.dteJournalDate) from data2 bb where bb.lngCustTrID=aa.lngCustTrID) as dateaa FROM data2 as aa ORDER BY dateaa , CASE WHEN IsMatch = 1 THEN lngCustTrID END ,strDocNumber  
END    
ELSE    
BEGIN    
With data1 as (SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS strInvDepNumber ,CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END END AS strDocNumber,tblCustTransDT.dteJournalDate ,MASTERTABLE.dteDueDate ,MASTERTABLE.intTransType AS TransType ,tblCustTransDT.intTransType ,tblCustTransDT.lngCustTrID ,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS Amount ,MASTERTABLE.dteJournalDate AS MasterdteJournalDate ,ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID ), '') AS Expr2 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) >= 0 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decCurrent ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 1 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod2 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 2 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod3 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 3 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod4 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) <= - 4 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod5 ,ISNULL(tblCustPay.lngJourID, 0)  AS lngJourID,MASTERTABLE.strCustName ,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN ( SELECT strCustName FROM tblCustomers WHERE strParentCust = ( SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ) ) ) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL )) AND (tblCustTransDT.lngCustTrID NOT IN ( SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0 ) )       
UNION  
SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS strInvDepNumber ,CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE CASE WHEN ISNULL(MASTERTABLE.strOrdDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE ISNULL(MASTERTABLE.strOrdDocID, '') END END AS strDocNumber,tblCustTransDT.dteJournalDate ,MASTERTABLE.dteDueDate ,MASTERTABLE.intTransType AS TransType ,tblCustTransDT.intTransType ,tblCustTransDT.lngCustTrID ,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS Amount,MASTERTABLE.dteJournalDate AS MasterdteJournalDate ,ISNULL((SELECT tblOrderDoc.strSalesName FROM tblOrderDoc WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID ), '') AS Expr2 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) >= 0 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decCurrent ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 1 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod2 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 2 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0  END, 0) AS decPeriod3 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 3 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod4 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) <= - 4 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END, 0) AS decPeriod5 ,ISNULL(tblCustPay.lngJourID, 0)  AS lngJourID ,MASTERTABLE.strCustName ,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN ( SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ) ) ) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0 ) )       
UNION      
SELECT tblOrderDoc.strReference AS strInvDepNumber,tblOrderDoc.strOrdDocID AS strDocNumber ,tblOrderDoc.dteJournalDate,tblOrderDoc.dteRequired,1 AS TransType,1 AS intTransType,0 AS lngCustTrID,CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ,tblOrderDoc.dteJournalDate AS MasterdteJournalDate ,ISNULL(tblOrderDoc.strSalesName, '') AS Expr2 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, tblOrderDoc.dteJournalDate) >= 0 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decCurrent ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, tblOrderDoc.dteJournalDate) = - 1 THEN CASE tblOrderDoc.bitIsForeign WHEN 0  THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decPeriod2 ,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, tblOrderDoc.dteJournalDate) = - 2 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decPeriod3,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, tblOrderDoc.dteJournalDate) = - 3 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decPeriod4,ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, tblOrderDoc.dteJournalDate) <= - 4 THEN CASE tblOrderDoc.bitIsForeign WHEN 0 THEN tblOrderDoc.decTotal ELSE tblOrderDoc.decTotalF END ELSE 0 END, 0) AS decPeriod5,0 AS lngJourID,tblCustomers.strCustName,tblCustomers.strCustDesc FROM tblOrderDoc INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName WHERE (intDocType = 1 OR intDocType =3) AND bitCleared = 0 AND (tblOrderDoc.strCustName = @SQCustID OR tblOrderDoc.strCustName IN ( SELECT strCustName FROM tblCustomers WHERE strParentCust = ( SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ))) AND (tblOrderDoc.dteJournalDate <= @SQAsAt) AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL)       ),data2 as (Select *,IsMatch=1 from data1 where lngCustTrID in (Select lngCustTrID from data1 group By lngCustTrID having Count(lngCustTrID)>=2) Union all Select * ,IsMatch=2 from data1 where lngCustTrID not in (Select lngCustTrID from data1 group By lngCustTrID having Count(lngCustTrID)>=2)) SELECT aa.*,(Select Min(bb.dteJournalDate) from data2 bb where bb.lngCustTrID=aa.lngCustTrID) as dateaa FROM data2 as aa ORDER BY dateaa , CASE WHEN IsMatch = 1 THEN lngCustTrID END ,strDocNumber  
END    
END    
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetGetdsCustStatementsCustomerStatAllReportDataList]                  
(                  
@chkUseCalAge bit,      
@optShowDoc bit,      
@SQPeriod1 int,      
@SQPeriod2 int,      
@SQPeriod3 int,      
@SQAsAt Datetime,      
@SQCustID nvarchar(max),      
@SQConsolidated int,    
@SQintTransType int,    
@SQAsAtCriteria Datetime      
)                  
AS               
BEGIN      
IF(@chkUseCalAge = 0)      
BEGIN      
IF(@optShowDoc = 0)      
BEGIN      
SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment,'') END AS strInvDepNumber, CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END END, MASTERTABLE.dteDueDate, tblCustTransDT.dteJournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END, MASTERTABLE.dteJournalDate, ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID),'') AS Expr2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < 0 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= 0 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod1 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod1 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod2 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod2 AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod4, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod5, ISNULL(tblCustPay.lngJourID, 0), MASTERTABLE.strCustName, tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID   
WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated)))  
AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) ORDER BY tblCustTransDT.intTransType, tblCustTransDT.dteJournalDate  
END  
ELSE    
BEGIN    
SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment,'') END AS strInvDepNumber, CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END END, tblCustTransDT.dteJournalDate, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END, MASTERTABLE.dteJournalDate, ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID),'') AS Expr2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < 0 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= 0 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod1 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod2, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod1 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod2 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod2 AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod4, ISNULL(CASE WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod3 THEN CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod5, ISNULL(tblCustPay.lngJourID, 0), tblCustomers.strCustName, tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID   
WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated)))  
AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) ORDER BY tblCustTransDT.intTransType, tblCustTransDT.dteJournalDate    
END    
END      
ELSE      
BEGIN      
IF(@optShowDoc =0)    
BEGIN    
SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment,'') END AS strInvDepNumber, CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END END, MASTERTABLE.dteDueDate, tblCustTransDT.dteJournalDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END, MASTERTABLE.dteJournalDate, ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID),'') AS Expr2, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) >= 0 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = -1 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod2, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = -2 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = -3 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod4, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) <= -4 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod5, ISNULL(tblCustPay.lngJourID, 0), MASTERTABLE.strCustName, tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID   
WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated)))  
AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) ORDER BY tblCustTransDT.intTransType, tblCustTransDT.dteJournalDate    
END    
ELSE    
BEGIN    
SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID,0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment,'') END AS strInvDepNumber, CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END END, tblCustTransDT.dteJournalDate, MASTERTABLE.dteDueDate, MASTERTABLE.intTransType AS TransType, tblCustTransDT.intTransType, tblCustTransDT.lngCustTrID, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END, MASTERTABLE.dteJournalDate, ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID),'') AS Expr2, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) >= 0 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decCurrent, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = -1 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod2, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = -2 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod3, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = -3 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod4, ISNULL(CASE WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) <= -4 THEN CASE MASTERTABLE.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END ELSE 0 END,0) AS decPeriod5, ISNULL(tblCustPay.lngJourID, 0), MASTERTABLE.strCustName, tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID   
WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated)))  
AND (tblCustTransDT.bitReversed = 0) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = MASTERTABLE.strCustName AND tblCustTransDT.bitReversed = 0 GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) ORDER BY tblCustTransDT.intTransType, tblCustTransDT.dteJournalDate  
END    
END             
END 
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetCustomerStatDisplayDiscReportDataList]                
(                
@SQStart Datetime,    
@SQFinish Datetime,    
@SQCustID nvarchar(max),    
@SQConsolidated int    
)                
AS             
BEGIN          
SELECT strInvDepNumber,strInvDocID,dteJournalDateDTL,dteDueDate,TransType,intTransType,CustTrID,SUM(decAmount) AS decAmount,dteJournalDateHDR,strSalesName,lngJourID,    
strCustName,strCustDesc      
FROM (SELECT Z.strInvDepNumber,Z.strInvDocID,Z.dteJournalDateDTL,Z.dteDueDate,Z.TransType,Z.intTransType,Z.CustTrID,SUM(Z.decAmount)     
AS decAmount,Z.dteJournalDateHDR,Z.strSalesName,Z.lngJourID,Z.strCustName,Z.strCustDesc     
FROM (SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS strInvDepNumber,    
CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE     
ISNULL(MASTERTABLE.strInvDocID, '') END ELSE tblCustPay.strSource END AS strInvDocID,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0     
THEN MASTERTABLE.dteJournalDate ELSE tblCustPay.dteJournalDate END AS  dteJournalDateDTL ,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0     
THEN MASTERTABLE.dteDueDate ELSE tblCustPay.dteJournalDate END AS dteDueDate ,MASTERTABLE.intTransType AS TransType ,tblCustTransDT.intTransType ,1 AS CustTrID,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS decAmount,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.dteJournalDate ELSE tblCustPay.dteJournalDate END AS dteJournalDateHDR,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN ISNULL(( SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID ), '') ELSE '' END AS strSalesName,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID,MASTERTABLE.strCustName,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ))) AND (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate BETWEEN @SQStart AND @SQFinish)) Z GROUP BY Z.strInvDepNumber,Z.strInvDocID,Z.dteJournalDateDTL,Z.dteDueDate,Z.TransType,Z.intTransType,Z.CustTrID,Z.dteJournalDateHDR,Z.strSalesName,Z.lngJourID,Z.strCustName,Z.strCustDesc UNION SELECT Z.strInvDepNumber,Z.strInvDocID,Z.dteJournalDateDTL,Z.dteDueDate,Z.TransType,Z.intTransType,Z.CustTrID,SUM(Z.decAmount) AS decAmount,Z.dteJournalDateHDR,Z.strSalesName,Z.lngJourID,Z.strCustName,Z.strCustDesc FROM (SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS strInvDepNumber ,CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN CASE  WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END ELSE tblCustPay.strSource END AS strInvDocID,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.dteJournalDate ELSE tblCustPay.dteJournalDate END AS dteJournalDateDTL,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.dteDueDate ELSE tblCustPay.dteJournalDate END AS dteDueDate ,MASTERTABLE.intTransType AS TransType ,tblCustTransDT.intTransType,1 AS CustTrID,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS decAmount,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.dteJournalDate ELSE tblCustPay.dteJournalDate END AS dteJournalDateHDR,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN ISNULL(( SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID ), '') ELSE '' END AS strSalesName,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID,MASTERTABLE.strCustName,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN ( SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated))) AND (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate BETWEEN @SQStart AND @SQFinish)) Z GROUP BY Z.strInvDepNumber,Z.strInvDocID,Z.dteJournalDateDTL,Z.dteDueDate,Z.TransType,Z.intTransType,Z.CustTrID,Z.dteJournalDateHDR,Z.strSalesName,Z.lngJourID,Z.strCustName,Z.strCustDesc) AS A GROUP BY strInvDepNumber,strInvDocID,dteJournalDateDTL,dteDueDate,TransType,intTransType,CustTrID,dteJournalDateHDR,strSalesName,lngJourID,strCustName,strCustDesc ORDER BY strCustName,dteJournalDateDTL,intTransType,strInvDocID     
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetCustomerStatIsDisplayOpenSalesOrdersReportDataList]                
(                
@SQStart Datetime,    
@SQFinish Datetime,    
@SQCustID nvarchar(max),    
@SQConsolidated int  
)                
AS             
BEGIN          
SELECT strInvDepNumber,strInvDocID,dteJournalDateDTL,dteDueDate,TransType,intTransType,CustTrID,SUM(decAmount) AS decAmount,dteJournalDateHDR,strSalesName,lngJourID,strCustName,strCustDesc   
FROM(SELECT Z.strInvDepNumber,Z.strInvDocID,Z.dteJournalDateDTL,Z.dteDueDate,Z.TransType,Z.intTransType,Z.CustTrID,SUM(Z.decAmount) AS decAmount,Z.dteJournalDateHDR,Z.strSalesName,Z.lngJourID,Z.strCustName,Z.strCustDesc FROM (SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS strInvDepNumber,CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END ELSE tblCustPay.strSource END AS strInvDocID,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.dteJournalDate ELSE tblCustPay.dteJournalDate END AS  dteJournalDateDTL,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.dteDueDate ELSE tblCustPay.dteJournalDate END AS dteDueDate,MASTERTABLE.intTransType AS TransType,tblCustTransDT.intTransType,1 AS CustTrID,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS decAmount,MASTERTABLE.dteJournalDate AS dteJournalDateHDR,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN ISNULL(( SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID ), '') ELSE '' END AS strSalesName,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID,MASTERTABLE.strCustName,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated))) AND (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate BETWEEN @SQStart AND @SQFinish)) Z GROUP BY Z.strInvDepNumber,Z.strInvDocID ,Z.dteJournalDateDTL,Z.dteDueDate,Z.TransType,Z.intTransType,Z.CustTrID,Z.dteJournalDateHDR,Z.strSalesName,Z.lngJourID,Z.strCustName,Z.strCustDesc  
UNION  
SELECT Z.strInvDepNumber,Z.strInvDocID ,Z.dteJournalDateDTL,Z.dteDueDate,Z.TransType,Z.intTransType,Z.CustTrID,SUM(Z.decAmount) AS decAmount,Z.dteJournalDateHDR,Z.strSalesName,Z.lngJourID,Z.strCustName,Z.strCustDesc FROM (SELECT CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS strInvDepNumber,CASE WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0 THEN CASE WHEN ISNULL(MASTERTABLE.strInvDocID, '') = '' THEN ISNULL(tblCustPay.strSource, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END ELSE tblCustPay.strSource END AS strInvDocID ,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.dteJournalDate ELSE tblCustPay.dteJournalDate END AS dteJournalDateDTL,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.dteDueDate ELSE tblCustPay.dteJournalDate END AS dteDueDate,MASTERTABLE.intTransType AS TransType,tblCustTransDT.intTransType,1 AS CustTrID,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS decAmount ,MASTERTABLE.dteJournalDate AS dteJournalDateHDR ,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN ISNULL(( SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID ), '') ELSE '' END AS strSalesName ,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID,MASTERTABLE.strCustName,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ))) AND (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate BETWEEN @SQStart AND @SQFinish )) Z GROUP BY Z.strInvDepNumber,Z.strInvDocID,Z.dteJournalDateDTL,Z.dteDueDate,Z.TransType,Z.intTransType,Z.CustTrID,Z.dteJournalDateHDR,Z.strSalesName ,Z.lngJourID,Z.strCustName,Z.strCustDesc   
UNION  
SELECT Z.strInvDepNumber,Z.strInvDocID,Z.dteJournalDateDTL,Z.dteDueDate,Z.TransType,Z.intTransType,Z.CustTrID,SUM(Z.decAmount) AS decAmount,Z.dteJournalDateHDR,Z.strSalesName,Z.lngJourID,Z.strCustName,Z.strCustDesc FROM (SELECT MASTERTABLE.strReference AS strInvDepNumber,MASTERTABLE.strOrdDocID AS strInvDocID,MASTERTABLE.dteJournalDate AS dteJournalDateDTL,MASTERTABLE.dteRequired AS dteDueDate,1 AS TransType,1 AS intTransType,1 AS CustTrID,CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal ELSE MASTERTABLE.decTotalF END AS decAmount,MASTERTABLE.dteJournalDate AS dteJournalDateHDR,ISNULL((SELECT tblOrderDoc.strSalesName FROM tblOrderDoc WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID ), '') AS strSalesName,0 AS lngJourID,MASTERTABLE.strCustName,tblCustomers.strCustDesc FROM tblOrderDoc AS MASTERTABLE INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ))) AND (intDocType = 1 OR intDocType =3) AND bitCleared = 0 AND (MASTERTABLE.dteJournalDate BETWEEN @SQStart AND @SQFinish )) Z GROUP BY Z.strInvDepNumber ,Z.strInvDocID ,Z.dteJournalDateDTL,Z.dteDueDate,Z.TransType,Z.intTransType,Z.CustTrID,Z.dteJournalDateHDR,Z.strSalesName,Z.lngJourID,Z.strCustName,Z.strCustDesc) AS A    
GROUP BY strInvDepNumber,strInvDocID,dteJournalDateDTL,dteDueDate,TransType,intTransType,CustTrID,dteJournalDateHDR,strSalesName,lngJourID,strCustName,strCustDesc ORDER BY strCustName,dteJournalDateDTL,intTransType,strInvDocID    
END   
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetCustomerStatNotDisplayDiscReportDataList]                
(                
@SQStart Datetime,    
@SQFinish Datetime,    
@SQCustID nvarchar(max),    
@SQConsolidated int,    
@SQTransType int,    
@SQintTransType int  
)                
AS             
BEGIN          
SELECT Reference, strInvDocID, dteJournalDateDTL, dteDueDate, TransType, SUM(decAmount) AS decAmount, dteJournalDateHDR, strSalesName, strCustName, strCustDesc   
FROM ( SELECT Z.Reference ,Z.strInvDocID ,Z.dteJournalDateDTL ,Z.dteDueDate ,Z.TransType ,SUM(Z.decAmount) AS decAmount ,Z.dteJournalDateHDR ,Z.strSalesName ,Z.strCustName ,Z.strCustDesc   
FROM (SELECT CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS Reference,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END ELSE ISNULL(tblCustPay.strSource, '') END AS strInvDocID,tblCustTransDT.dteJournalDate AS dteJournalDateDTL ,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.dteDueDate ELSE tblCustPay.dteJournalDate END AS dteDueDate ,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.intTransType ELSE @SQTransType END AS TransType ,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS decAmount ,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.dteJournalDate ELSE tblCustPay.dteJournalDate END AS dteJournalDateHDR ,CASE  WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN ISNULL(( SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID ), '') ELSE '' END AS strSalesName ,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID ,MASTERTABLE.strCustName ,tblCustomers.strCustDesc   
FROM tblCustTrans AS MASTERTABLE   
INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID   
INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName   
LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID   
WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN ( SELECT strCustName FROM tblCustomers    
WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ) ))   
AND (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL))   
AND (tblCustTransDT.dteJournalDate BETWEEN @SQStart AND @SQFinish )) Z   
GROUP BY Z.Reference ,Z.strInvDocID ,Z.dteJournalDateDTL ,Z.dteDueDate ,Z.TransType ,Z.dteJournalDateHDR ,Z.strSalesName ,Z.strCustName ,Z.strCustDesc   
UNION   
SELECT Z.Reference ,Z.strInvDocID ,Z.dteJournalDateDTL ,Z.dteDueDate ,Z.TransType ,SUM(Z.decAmount) AS decAmount ,Z.dteJournalDateHDR ,Z.strSalesName ,Z.strCustName ,Z.strCustDesc   
FROM (SELECT CASE  WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS Reference ,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN CASE  WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END ELSE ISNULL(tblCustPay.strSource, '') END AS strInvDocID,tblCustTransDT.dteJournalDate AS dteJournalDateDTL ,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.dteDueDate ELSE tblCustPay.dteJournalDate END AS dteDueDate,CASE  WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.intTransType ELSE @SQTransType END AS TransType,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS decAmount,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.dteJournalDate ELSE tblCustPay.dteJournalDate END AS dteJournalDateHDR,CASE  WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID ), '') ELSE '' END AS strSalesName,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID ,MASTERTABLE.strCustName,tblCustomers.strCustDesc   
FROM tblCustTrans AS MASTERTABLE   
INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID   
INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName   
LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID   
WHERE ( MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName   
IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated) ) ) AND (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) 
AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate BETWEEN @SQStart AND @SQFinish )) Z GROUP BY Z.Reference ,Z.strInvDocID,Z.dteJournalDateDTL,Z.dteDueDate,Z.TransType,Z.dteJournalDateHDR,Z.strSalesName,Z.strCustName,Z.strCustDesc) AS A GROUP BY Reference,strInvDocID ,dteJournalDateDTL ,dteDueDate ,TransType ,dteJournalDateHDR ,strSalesName ,strCustName ,strCustDesc ORDER BY strCustName ,dteJournalDateDTL  ,TransType ,strInvDocID   
END 
GO

----------------------------------------------------
create PROCEDURE [dbo].[rptARGetCustomerStatIsNotDisplayOpenSalesOrdersReportDataList]                
(                
@SQStart Datetime,    
@SQFinish Datetime,    
@SQCustID nvarchar(max),    
@SQConsolidated int,    
@SQTransType int,    
@SQintTransType int  
)                
AS             
BEGIN          
SELECT Reference,strInvDocID,dteJournalDateDTL,dteDueDate,TransType,SUM(decAmount) AS decAmount,dteJournalDateHDR,strSalesName,strCustName,strCustDesc FROM (SELECT Z.Reference ,Z.strInvDocID ,Z.dteJournalDateDTL ,Z.dteDueDate ,Z.TransType ,SUM(Z.decAmount) AS decAmount ,Z.dteJournalDateHDR ,Z.strSalesName ,Z.strCustName ,Z.strCustDesc FROM (SELECT CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS Reference,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END ELSE ISNULL(tblCustPay.strSource, '') END AS strInvDocID,tblCustTransDT.dteJournalDate AS dteJournalDateDTL ,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.dteDueDate ELSE tblCustPay.dteJournalDate END AS dteDueDate,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.intTransType ELSE @SQTransType END AS TransType,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS decAmount,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.dteJournalDate ELSE tblCustPay.dteJournalDate END AS dteJournalDateHDR,CASE  WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID), '') ELSE '' END AS strSalesName ,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID,MASTERTABLE.strCustName,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = ( SELECT strCustName FROM tblCustomers 
WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ))) AND (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate BETWEEN @SQStart AND @SQFinish)) Z GROUP BY Z.Reference,Z.strInvDocID,Z.dteJournalDateDTL,Z.dteDueDate,Z.TransType,Z.dteJournalDateHDR,Z.strSalesName,Z.strCustName,Z.strCustDesc UNION SELECT Z.Reference,Z.strInvDocID,Z.dteJournalDateDTL,Z.dteDueDate,Z.TransType,SUM(Z.decAmount) AS decAmount,Z.dteJournalDateHDR,Z.strSalesName,Z.strCustName,Z.strCustDesc FROM (SELECT CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.strInvDepNumber ELSE ISNULL(tblCustPay.strComment, '') END AS Reference ,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN CASE WHEN MASTERTABLE.intTransType = @SQintTransType THEN ISNULL(MASTERTABLE.strJEDocID, '') ELSE ISNULL(MASTERTABLE.strInvDocID, '') END ELSE ISNULL(tblCustPay.strSource, '') END AS strInvDocID,tblCustTransDT.dteJournalDate AS dteJournalDateDTL,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.dteDueDate ELSE tblCustPay.dteJournalDate END AS dteDueDate,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.intTransType ELSE @SQTransType END AS TransType,CASE tblCustTransDT.bitIsForeign WHEN 0 THEN tblCustTransDT.decAmount ELSE tblCustTransDT.decAmountF END AS decAmount,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN MASTERTABLE.dteJournalDate ELSE tblCustPay.dteJournalDate END AS dteJournalDateHDR,CASE WHEN ISNULL(tblCustPay.lngCustPayID, 0) = 0 THEN ISNULL((SELECT tblInvoiceDoc.strSalesName FROM tblInvoiceDoc WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID), '') ELSE '' END AS strSalesName,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID,MASTERTABLE.strCustName,tblCustomers.strCustDesc FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName 
LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID WHERE (MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN (SELECT strCustName FROM tblCustomers WHERE strParentCust = (SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated ))) AND (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate BETWEEN @SQStart AND @SQFinish)) Z GROUP BY Z.Reference,Z.strInvDocID,Z.dteJournalDateDTL,Z.dteDueDate,Z.TransType,Z.dteJournalDateHDR,Z.strSalesName,Z.strCustName,Z.strCustDesc UNION SELECT Z.Reference,Z.strInvDocID,Z.dteJournalDateDTL ,Z.dteDueDate,Z.TransType,SUM(Z.decAmount) AS decAmount,Z.dteJournalDateHDR ,Z.strSalesName ,Z.strCustName ,Z.strCustDesc FROM (SELECT MASTERTABLE.strReference AS Reference,MASTERTABLE.strOrdDocID AS strInvDocID,MASTERTABLE.dteJournalDate AS dteJournalDateDTL,MASTERTABLE.dteRequired AS dteDueDate,1 AS TransType,CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal ELSE MASTERTABLE.decTotalF END AS decAmount,MASTERTABLE.dteJournalDate AS dteJournalDateHDR,ISNULL((SELECT tblOrderDoc.strSalesName FROM tblOrderDoc WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID), '') AS strSalesName,0  AS lngJourID,MASTERTABLE.strCustName,tblCustomers.strCustDesc FROM tblOrderDoc AS MASTERTABLE INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName WHERE ( MASTERTABLE.strCustName = @SQCustID OR MASTERTABLE.strCustName IN ( SELECT strCustName FROM tblCustomers WHERE strParentCust = ( SELECT strCustName FROM tblCustomers WHERE strCustName = @SQCustID AND intNAPrintMethod = @SQConsolidated))) AND (intDocType = 1 OR intDocType =3) AND bitCleared = 0 AND (MASTERTABLE.dteJournalDate BETWEEN @SQStart AND @SQFinish)) Z GROUP BY Z.Reference,Z.strInvDocID,Z.dteJournalDateDTL,Z.dteDueDate,Z.TransType,Z.dteJournalDateHDR,Z.strSalesName,Z.strCustName,Z.strCustDesc) AS A GROUP BY Reference,strInvDocID,dteJournalDateDTL,dteDueDate,TransType,dteJournalDateHDR,strSalesName,strCustName,strCustDesc 
ORDER BY strCustName,dteJournalDateDTL,TransType,strInvDocID  
END   
GO

----------------------------------------------------
create procedure NumAgingPeriodsValues  
As   
Begin  
SELECT intRecPeriod1, intRecPeriod2, intRecPeriod3 FROM tblCoOpts  
END  
GO

----------------------------------------------------
create PROCEDURE [dbo].[rptARGetContractList]                  
(                  
@SQstrCustName nvarchar(max)  
)                  
As  
Begin  
SELECT tblPaymentPlan.strInvDocId    
FROM tblPaymentPlan   
Left JOIN tblInvoiceDoc  ON tblPaymentPlan.strInvDocId = tblInvoiceDoc.strInvDocID    
Left JOIN tblOrderDoc ON tblPaymentPlan.strInvDocId=tblOrderDoc.strOrdDocID WHERE bitPmntContractAlive = 1   
AND( tblInvoiceDoc.strCustName = @SQstrCustName or tblOrderDoc.strCustName = @SQstrCustName)     
END
GO

----------------------------------------------------
CREATE PROCEDURE rptAPGetSalesSummaryReportData              
(      
@StartDate DateTime,      
@FinishDate Datetime,              
@IsCheckedGroupCustomer  bit = 0,       
@ItemList nvarchar(max)  
)              
AS              
BEGIN        
IF(@IsCheckedGroupCustomer = 1)        
BEGIN    
SELECT tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, tblInvoiceDoc.strCustName, tblInvoiceDoc.strReference,   
(tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt) AS decSubTotal  ,  
tblInvoiceDoc.decVat, tblInvoiceDoc.decTotal, tblCustomers.strCustDesc   
FROM tblInvoiceDoc   
INNER JOIN tblCustomers ON tblCustomers.strCustName = tblInvoiceDoc.strCustName   
WHERE (tblInvoiceDoc.bitHistoryTrans = 0) AND tblInvoiceDoc.strCustName IN (select * from fnSplitStringAsTable(@ItemList,','))  
AND tblInvoiceDoc.dteJournalDate BETWEEN cast(@StartDate as date)   AND cast(@FinishDate as date)    
ORDER BY tblInvoiceDoc.strCustName, tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID  
END          
ELSE  
BEGIN    
SELECT tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, tblInvoiceDoc.strCustName, tblInvoiceDoc.strReference,   
(tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt) AS decSubTotal  ,  
tblInvoiceDoc.decVat, tblInvoiceDoc.decTotal, tblCustomers.strCustDesc   
FROM tblInvoiceDoc   
INNER JOIN tblCustomers ON tblCustomers.strCustName = tblInvoiceDoc.strCustName   
WHERE (tblInvoiceDoc.bitHistoryTrans = 0) AND tblInvoiceDoc.strCustName IN (select * from fnSplitStringAsTable(@ItemList,','))  
AND tblInvoiceDoc.dteJournalDate BETWEEN cast(@StartDate as date)   AND cast(@FinishDate as date)     
ORDER BY tblInvoiceDoc.dteJournalDate, tblInvoiceDoc.strInvDocID, tblInvoiceDoc.strCustName  
END    
END     
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetSalesTrndsByCustomer]          
(          
@IsOptNoFilter bit,    
@IsOptIYTD  bit,    
@IsOptI90 bit,    
@IsOptI180 bit,    
@IsOptDYTD bit,    
@IsOptD90 bit,    
@IsOptD180 bit,    
@IsInactive bit,    
@SQStart1 Datetime,    
@SQEnd1 Datetime,    
@SQStart2 Datetime,    
@SQEnd2 Datetime,  
@IsBPToolsMode bit,  
@UserName varchar(100)    
)          
AS       
BEGIN    
IF(@IsOptNoFilter = 1)    
BEGIN    
IF(@IsInactive =0)    
BEGIN    
SELECT strCustName as CustomerName, strCustDesc as Description FROM tblCustomers WHERE bitInactive = 0    
END    
ELSE    
BEGIN    
SELECT strCustName as CustomerName, strCustDesc as Description FROM tblCustomers    
END    
END    
ELSE IF(@IsOptIYTD = 1)    
BEGIN    
IF(@IsInactive = 0)    
BEGIN    
SELECT strCustName as CustomerName, strCustDesc as Description    
FROM tblCustomers AS MASTERTABLE     
WHERE (ISNULL((SELECT SUM(decTotal) AS TOTAL1 FROM tblInvoiceDoc     
WHERE (dteJournalDate BETWEEN Cast(@SQStart1 as date) AND Cast(@SQEnd1 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0) < ISNULL((SELECT SUM(decTotal) AS TOTAL2    
FROM tblInvoiceDoc     
WHERE (dteJournalDate BETWEEN @SQStart2 AND Cast(@SQEnd2 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0)) AND (bitInactive = 0)    
END    
ELSE    
BEGIN    
SELECT strCustName as CustomerName, strCustDesc as Description    
FROM tblCustomers AS MASTERTABLE     
WHERE (ISNULL((SELECT SUM(decTotal) AS TOTAL1     
FROM tblInvoiceDoc     
WHERE (dteJournalDate BETWEEN Cast(@SQStart1 as date) AND Cast(@SQEnd1 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0) < ISNULL((SELECT SUM(decTotal) AS TOTAL2     
FROM tblInvoiceDoc WHERE (dteJournalDate BETWEEN @SQStart2 AND Cast(@SQEnd2 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName) AND (tblInvoiceDoc.bitHistoryTrans = 0)),0))    
END    
END    
ELSE IF(@IsOptI90 = 1)    
BEGIN    
IF(@IsInactive = 0)    
BEGIN    
SELECT strCustName as CustomerName, strCustDesc as Description    
FROM tblCustomers AS MASTERTABLE    
WHERE (ISNULL((SELECT SUM(decTotal) AS TOTAL1     
FROM tblInvoiceDoc     
WHERE (dteJournalDate BETWEEN Cast(@SQStart1 as date) AND Cast(@SQEnd1 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0) < ISNULL((SELECT SUM(decTotal) AS TOTAL2     
FROM tblInvoiceDoc WHERE (dteJournalDate BETWEEN @SQStart2 AND Cast(@SQEnd2 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0)) AND (bitInactive = 0)    
END    
ELSE       
BEGIN    
SELECT strCustName as CustomerName, strCustDesc as Description    
FROM tblCustomers AS MASTERTABLE    
WHERE (ISNULL((SELECT SUM(decTotal) AS TOTAL1     
FROM tblInvoiceDoc     
WHERE (dteJournalDate BETWEEN Cast(@SQStart1 as date) AND Cast(@SQEnd1 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0) < ISNULL((SELECT SUM(decTotal) AS TOTAL2     
FROM tblInvoiceDoc WHERE (dteJournalDate BETWEEN @SQStart2 AND Cast(@SQEnd2 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0))    
END    
END    
ELSE IF(@IsOptI180 =1)    
BEGIN    
IF(@IsInactive = 0)    
BEGIN    
SELECT strCustName as CustomerName, strCustDesc as Description    
FROM tblCustomers AS MASTERTABLE     
WHERE (ISNULL((SELECT SUM(decTotal) AS TOTAL1     
FROM tblInvoiceDoc WHERE (dteJournalDate BETWEEN Cast(@SQStart1 as date) AND Cast(@SQEnd1 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0) < ISNULL((SELECT SUM(decTotal) AS TOTAL2     
FROM tblInvoiceDoc WHERE (dteJournalDate BETWEEN @SQStart2 AND Cast(@SQEnd2 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0)) AND (bitInactive = 0)    
END    
ELSE    
BEGIN    
SELECT strCustName as CustomerName, strCustDesc as Description     
FROM tblCustomers AS MASTERTABLE     
WHERE (ISNULL((SELECT SUM(decTotal) AS TOTAL1     
FROM tblInvoiceDoc     
WHERE (dteJournalDate BETWEEN Cast(@SQStart1 as date) AND Cast(@SQEnd1 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0) < ISNULL((SELECT SUM(decTotal) AS TOTAL2     
FROM tblInvoiceDoc WHERE (dteJournalDate BETWEEN @SQStart2 AND Cast(@SQEnd2 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName) AND (tblInvoiceDoc.bitHistoryTrans = 0)),0))    
END    
END    
ELSE IF(@IsOptDYTD =1)    
BEGIN    
IF(@IsInactive = 0)    
BEGIN    
SELECT strCustName as CustomerName, strCustDesc as Description    
FROM tblCustomers AS MASTERTABLE     
WHERE (ISNULL((SELECT SUM(decTotal) AS TOTAL1     
FROM tblInvoiceDoc WHERE (dteJournalDate BETWEEN Cast(@SQStart1 as date) AND Cast(@SQEnd1 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0) > ISNULL((SELECT SUM(decTotal) AS TOTAL2     
FROM tblInvoiceDoc WHERE (dteJournalDate BETWEEN @SQStart2 AND Cast(@SQEnd2 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0)) AND (bitInactive = 0)    
END    
ELSE    
BEGIN    
SELECT strCustName as CustomerName, strCustDesc as Description    
FROM tblCustomers AS MASTERTABLE     
WHERE (ISNULL((SELECT SUM(decTotal) AS TOTAL1     
FROM tblInvoiceDoc WHERE (dteJournalDate BETWEEN Cast(@SQStart1 as date) AND Cast(@SQEnd1 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0) > ISNULL((SELECT SUM(decTotal) AS TOTAL2     
FROM tblInvoiceDoc WHERE (dteJournalDate BETWEEN @SQStart2 AND Cast(@SQEnd2 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName) AND (tblInvoiceDoc.bitHistoryTrans = 0)),0))    
END    
ENd    
ELSE IF(@IsOptD90 =1)    
BEGIN    
IF(@IsInactive = 0)    
BEGIN    
SELECT strCustName as CustomerName, strCustDesc as Description    
FROM tblCustomers AS MASTERTABLE     
WHERE (ISNULL((SELECT SUM(decTotal) AS TOTAL1     
FROM tblInvoiceDoc WHERE (dteJournalDate BETWEEN Cast(@SQStart1 as date) AND Cast(@SQEnd1 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0) > ISNULL((SELECT SUM(decTotal) AS TOTAL2     
FROM tblInvoiceDoc     
WHERE (dteJournalDate BETWEEN @SQStart2 AND Cast(@SQEnd2 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0)) AND (bitInactive = 0)    
END    
ELSE    
BEGIN    
SELECT strCustName as CustomerName, strCustDesc as Description    
FROM tblCustomers AS MASTERTABLE     
WHERE (ISNULL((SELECT SUM(decTotal) AS TOTAL1     
FROM tblInvoiceDoc     
WHERE (dteJournalDate BETWEEN Cast(@SQStart1 as date) AND Cast(@SQEnd1 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0) > ISNULL((SELECT SUM(decTotal) AS TOTAL2     
FROM tblInvoiceDoc     
WHERE (dteJournalDate BETWEEN @SQStart2 AND Cast(@SQEnd2 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName) AND (tblInvoiceDoc.bitHistoryTrans = 0)),0))    
END    
END    
ELSE IF(@IsOptD180 =1)    
BEGIN    
IF(@IsInactive = 0)    
BEGIN    
SELECT strCustName as CustomerName, strCustDesc as Description    
FROM tblCustomers AS MASTERTABLE     
WHERE (ISNULL((SELECT SUM(decTotal) AS TOTAL1     
FROM tblInvoiceDoc     
WHERE (dteJournalDate BETWEEN Cast(@SQStart1 as date) AND Cast(@SQEnd1 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0) > ISNULL((SELECT SUM(decTotal) AS TOTAL2     
FROM tblInvoiceDoc     
WHERE (dteJournalDate BETWEEN @SQStart2 AND Cast(@SQEnd2 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0)) AND (bitInactive = 0)    
END    
ELSE    
BEGIN    
SELECT strCustName as CustomerName, strCustDesc as Description    
FROM tblCustomers AS MASTERTABLE     
WHERE (ISNULL((SELECT SUM(decTotal) AS TOTAL1     
FROM tblInvoiceDoc WHERE (dteJournalDate BETWEEN Cast(@SQStart1 as date) AND Cast(@SQEnd1 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName)     
AND (tblInvoiceDoc.bitHistoryTrans = 0)),0) > ISNULL((SELECT SUM(decTotal) AS TOTAL2     
FROM tblInvoiceDoc WHERE (dteJournalDate BETWEEN @SQStart2 AND Cast(@SQEnd2 as date))     
AND (tblInvoiceDoc.strCustName = MASTERTABLE.strCustName) AND (tblInvoiceDoc.bitHistoryTrans = 0)),0))    
END    
END    
END        
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetSalesTrndsByCustomeroptFormatCReportData]          
(          
@SQStart Datetime,    
@SQEnd Datetime    
)          
AS       
BEGIN    
SELECT ISNULL(SUM(decTotal),0) AS TotalSales   
FROM tblInvoiceDoc   
WHERE (dteJournalDate BETWEEN cast(@SQStart as date) AND cast(@SQEnd as date)) AND (bitHistoryTrans = 0)  
END        
Go

----------------------------------------------------
create PROCEDURE [dbo].[rptARGetCustomerTotalValueReportData]            
(            
@SQStart Datetime,      
@SQEnd Datetime,    
@ItemList nvarchar(max)      
)            
AS         
BEGIN      
SELECT ISNULL(SUM(decTotal),0) AS TotalSales   
FROM tblInvoiceDoc   
WHERE (strCustName in (select * from fnSplitStringAsTable(@ItemList,',')))   
AND (dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (bitHistoryTrans = 0)  
END 
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetCustomerCurrencyList]              
(              
@SQCustName varchar(50)     
)              
AS           
BEGIN        
SELECT strCurrency FROM tblCustomers WHERE strCustName = @SQCustName  
END 
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetSalesTrndsByCustomeroptFormatReportData]                
(                
@SQStart Datetime,          
@SQEnd Datetime,        
@ItemList nvarchar(max)          
)                
AS             
BEGIN          
SELECT DATEPART(yyyy, dteJournalDate) as Year,tblCustomers.strCustName as CustomerName,tblCustomers.strCustDesc as Description, DATEPART(m,dteJournalDate) AS Month, ISNULL(SUM(decTotal),0) AS TotalSales       
FROM tblInvoiceDoc       
Inner join tblCustomers on tblInvoiceDoc.strCustName=tblCustomers.strCustName  
WHERE (dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (bitHistoryTrans = 0) AND (tblInvoiceDoc.strCustName in (select * from fnSplitStringAsTable(@ItemList,',')))      
GROUP BY DATEPART(yyyy, dteJournalDate), DATEPART(m,dteJournalDate),tblCustomers.strCustName, tblCustomers.strCustDesc      
ORDER BY DATEPART(yyyy, dteJournalDate), DATEPART(m,dteJournalDate)      
END   
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetCustomerListReportData]            
(            
@ItemList nvarchar(max)     
)            
AS         
BEGIN      
SELECT * FROM tblCustomers WHERE strCustName IN (select * from fnSplitStringAsTable(@ItemList,','))  
END 
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetCompanyImages]              
(              
@SQbitDisplayLogo bit     
)              
AS           
BEGIN        
SELECT imgLogo, @SQbitDisplayLogo AS bitDisplayLogo FROM tblCompany  
END 
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptARGetSalesTrndsByCustomeroptFormatRReportData]          
(          
@SQStart Datetime,    
@SQEnd Datetime,  
@ItemList nvarchar(max)    
)          
AS       
BEGIN    
SELECT tblCustomers.strCustName, tblCustomers.strCustDesc, tblCustomers.strPhone,   
tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail,  
MAX(tblInvoiceDoc.dteJournalDate) as dteJournalDate , SUM(tblInvoiceDoc.decTotal) as decTotal   
FROM tblCustomers   
INNER JOIN tblInvoiceDoc ON tblCustomers.strCustName = tblInvoiceDoc.strCustName  
WHERE (tblCustomers.strCustName in (select * from fnSplitStringAsTable(@ItemList,',')))   
AND (tblInvoiceDoc.dteJournalDate BETWEEN @SQStart AND @SQEnd)   
AND (tblInvoiceDoc.bitHistoryTrans = 0)   
GROUP BY tblCustomers.strCustName, tblCustomers.strCustDesc, tblCustomers.strPhone, tblCustomers.strCellPhone, tblCustomers.strFax, tblCustomers.strEmail  
END        
Go

----------------------------------------------------
create PROCEDURE [dbo].[rptARGetSalesTrndsByCustomeroptFormatRReportData1]          
(          
@ItemList nvarchar(max)    
)          
AS       
BEGIN    
SELECT strCustName, strCustDesc, strPhone, strCellPhone, strFax, strEmail   
FROM tblCustomers  
WHERE (strCustName in  (select * from fnSplitStringAsTable(@ItemList,',')))  
END        
Go

----------------------------------------------------
CREATE PROCEDURE rptAPGetRecurringInvoiceSummaryandDetailReportData            
(    
@StartDate DateTime,    
@FinishDate Datetime,            
@IsCheckedSummary  bit = 0,     
@IsCheckedDetail bit = 0  
)            
AS            
BEGIN      
IF(@IsCheckedSummary = 1)      
BEGIN  
SELECT   
(SELECT TOP 1 dtpNextInvoiceDate FROM tblContractBillDT D WHERE D.strContDocID = M.strContDocID)  AS NextInvoiceDate,  
M.strContBillType AS ContractType,   
M.strContDocID AS ContractNumber,   
M.strCustName AS CustomerNumber,  
C.strCustDesc AS CustomerName,   
M.strReference AS Reference,   
ISNULL(M.decSubTotal,0) AS PriceExcl,  
ISNULL(M.decVAT, 0) AS TAX, ISNULL(M.decTotal, 0) AS PriceIncl   
FROM tblContractBill M   
INNER JOIN tblCustomers C ON M.strCustName = C.strCustName   
WHERE (M.dteJournalDate >= @StartDate) AND (M.dteJournalDate <= @FinishDate)  
END        
ELSE IF(@IsCheckedDetail =1)  
BEGIN  
SELECT D.dtpNextInvoiceDate AS NextInvoiceDate,   
M.strContBillType AS ContractType, M.strContDocID AS ContractNumber,  
M.strCustName AS CustomerNumber, C.strCustDesc AS CustomerName,  
M.strReference AS Reference,   
ISNULL(D.decLineTotExc,0) AS PriceExcl,   
ISNULL(D.decLineTaxAmt,0) AS TAX,  
(ISNULL(D.decLineTotExc ,0) + ISNULL(D.decLineTaxAmt, 0)) AS PriceIncl,  
D.strPartNumber AS ItemCode,  
D.strPartDesc AS ItemDesc,   
ISNULL(D.decQty,0) AS Quantity,   
D.strLocation AS Location   
FROM tblContractBillDT D   
INNER JOIN tblContractBill M ON M.strContDocID = D.strContDocID   
INNER JOIN tblCustomers C ON M.strCustName = C.strCustName   
WHERE (M.dteJournalDate >= @StartDate) AND (M.dteJournalDate <= @FinishDate)   
ORDER BY M.strCustName,C.strCustDesc, M.strContDocID,D.strPartNumber,D.strPartDesc  
END  
END   
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GeRptItemWhereUsedReportData]    
(    
@ItemList nvarchar(max),    
@Filter int,    
@IsActive bit,    
@IsInActive bit    
)    
AS    
BEGIN    
IF(@Filter = 0) --Assets    
BEGIN    
SELECT INV2.strPartNumber, INV2.strDesc, INV.strPartNumber as strUsedInNumber, INV.strDesc as strUsedInDesc, BOM.strLocName, INV.intBOMQty, BOM.intQtyToUse,   
(CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc) as Grouping  
FROM tblInvBOM BOM   
INNER JOIN dbo.fnTblInvForLocJoin() INV ON BOM.strPartNumber = INV.strPartNumber AND BOM.strLocName = INV.strLocName   
INNER JOIN tblInv INV2 on BOM.strPartItemNumber = INV2.strPartNumber  INNER JOIN tblAccountSets ON INV.strAcctSet = tblAccountSets.strAcctSet   
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber   
WHERE (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (INV2.bitInactive = CASE WHEN @IsActive = 1 THEN 0 ELSE INV2.bitInactive END)    
AND (INV2.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE INV2.bitInactive END)    
ORDER BY INV2.strPartNumber, INV.strPartNumber  
END    
ELSE IF(@Filter = 1) --Category    
BEGIN    
SELECT INV2.strPartNumber, INV2.strDesc, INV.strPartNumber as strUsedInNumber, INV.strDesc as strUsedInDesc, BOM.strLocName, INV.intBOMQty, BOM.intQtyToUse, INV2.strCategory as Grouping  
FROM tblInvBOM BOM   
INNER JOIN tblInv INV ON BOM.strPartNumber = INV.strPartNumber   
INNER JOIN tblInv INV2 on BOM.strPartItemNumber = INV2.strPartNumber   
WHERE (INV2.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (INV2.bitInactive = CASE WHEN @IsActive = 1 THEN 0 ELSE INV2.bitInactive END)    
AND (INV2.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE INV2.bitInactive END)    
ORDER BY INV2.strPartNumber, INV.strPartNumber  
END    
ELSE IF(@Filter = 2) --AccountSets    
BEGIN    
SELECT INV2.strPartNumber, INV2.strDesc, INV.strPartNumber as strUsedInNumber, INV.strDesc as strUsedInDesc, BOM.strLocName, INV.intBOMQty, BOM.intQtyToUse, INV.strAcctSet as Grouping  
FROM tblInvBOM BOM   
INNER JOIN dbo.fnTblInvForLocJoin() INV ON BOM.strPartNumber = INV.strPartNumber AND BOM.strLocName = INV.strLocName   
INNER JOIN tblInv INV2 on BOM.strPartItemNumber = INV2.strPartNumber   
WHERE (INV.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (INV2.bitInactive = CASE WHEN @IsActive = 1 THEN 0 ELSE INV2.bitInactive END)    
AND (INV2.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE INV2.bitInactive END)    
ORDER BY INV2.strPartNumber, INV.strPartNumber  
END    
ELSE IF(@Filter = 3) --Items    
BEGIN    
SELECT INV2.strPartNumber, INV2.strDesc, INV.strPartNumber as strUsedInNumber, INV.strDesc as strUsedInDesc, BOM.strLocName, INV.intBOMQty, BOM.intQtyToUse, '' as Grouping  
FROM tblInvBOM BOM   
INNER JOIN tblInv INV ON BOM.strPartNumber = INV.strPartNumber   
INNER JOIN tblInv INV2 on BOM.strPartItemNumber = INV2.strPartNumber   
WHERE (BOM.strPartItemNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (INV2.bitInactive = CASE WHEN @IsActive = 1 THEN 0 ELSE INV2.bitInactive END)    
AND (INV2.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE INV2.bitInactive END)    
ORDER BY INV2.strPartNumber, INV.strPartNumber  
END    
ELSE IF(@Filter = 4) --Service    
BEGIN    
SELECT INV2.strPartNumber, INV2.strDesc, INV.strPartNumber  as strUsedInNumber, INV.strDesc as strUsedInDesc, BOM.strLocName, INV.intBOMQty, BOM.intQtyToUse, '' as Grouping   
FROM tblInvBOM BOM   
INNER JOIN tblInv INV ON BOM.strPartNumber = INV.strPartNumber   
INNER JOIN tblInv INV2 on BOM.strPartItemNumber = INV2.strPartNumber   
WHERE (BOM.strPartItemNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (INV2.bitInactive = CASE WHEN @IsActive = 1 THEN 0 ELSE INV2.bitInactive END)    
AND (INV2.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE INV2.bitInactive END)    
ORDER BY INV2.strPartNumber, INV.strPartNumber  
END    
ELSE IF(@Filter = 6) --All    
BEGIN    
SELECT INV2.strPartNumber, INV2.strDesc, INV.strPartNumber  as strUsedInNumber, INV.strDesc as strUsedInDesc, BOM.strLocName, INV.intBOMQty, BOM.intQtyToUse, '' as Grouping   
FROM tblInvBOM BOM   
INNER JOIN tblInv INV ON BOM.strPartNumber = INV.strPartNumber   
INNER JOIN tblInv INV2 on BOM.strPartItemNumber = INV2.strPartNumber   
WHERE (BOM.strPartItemNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (INV2.bitInactive = CASE WHEN @IsActive = 1 THEN 0 ELSE INV2.bitInactive END)    
AND (INV2.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE INV2.bitInactive END)    
ORDER BY INV2.strPartNumber, INV.strPartNumber  
END    
END 
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptINVGetRptInvRepackingReportData]    
(    
@SQDocNumber nvarchar(max)  
)    
AS    
BEGIN  
SELECT tblInvRepackDocDT.strRepackDocID, tblInvRepackDocDT.intLineNo,   
CASE WHEN tblInvRepackDocDT.bitOriginalItem = 1 THEN 'Original Item' ELSE 'Repackaged Item' END AS bitOriginalItem,   
tblInvRepackDocDT.strPartNumber, tblInvRepackDocDT.decQty, tblInvRepackDocDT.decWeight, tblInvRepackDocDT.decTotalWeight,   
tblInvRepackDocDT.strLocName, tblInvRepackDoc.strComment,  tblInv.strDesc, ISNULL(tblInvRepackDocDTSerial.strSerialNumber,'') as strSerialNumber,   
cast(tblInvRepackDoc.dteJournalDate as date) as dteJournalDate   
FROM tblInvRepackDoc   
INNER JOIN tblInvRepackDocDT ON tblInvRepackDoc.strRepackDocID = tblInvRepackDocDT.strRepackDocID   
INNER JOIN tblInv ON tblInvRepackDocDT.strPartNumber = tblInv.strPartNumber   
LEFT OUTER JOIN tblInvRepackDocDTSerial ON tblInvRepackDocDT.strRepackDocID = tblInvRepackDocDTSerial.strRepackDocID   
AND tblInvRepackDocDT.intLineNo = tblInvRepackDocDTSerial.intLineNo   
WHERE tblInvRepackDoc.strRepackDocID IN (SELECT * FROM fnSplitStringAsTable(@SQDocNumber, ','))  
END  
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptINVGetstrSQRepackDocID]    
(    
@IsItem bit,    
@IsCatagories bit,  
@ItemList nvarchar(max)  
)    
AS    
BEGIN  
IF(@IsItem = 1)  
BEGIN  
SELECT DISTINCT [strRepackDocID] FROM [tblInvRepackDocDT] WHERE strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ','))  
END  
ELSE IF(@IsCatagories = 1)  
BEGIN  
SELECT DISTINCT tblInvRepackDocDT.strRepackDocID, tblInv.strCategory   
FROM tblInvRepackDocDT INNER JOIN tblInv ON tblInvRepackDocDT.strPartNumber = tblInv.strPartNumber   
WHERE (tblInv.strCategory IN (SELECT * FROM dbo.fnSplitStringAsTable(@ItemList, ',')))  
END   
END
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptInvGetRptInvLotNumMovementSetupList] (@SearchText NVARCHAR(max))
AS
BEGIN
	SELECT DISTINCT strLotNumber AS Code
	FROM tblInvLotExt
	WHERE (
			(
				LEN(@SearchText) > 2
				AND (
					strLotNumber LIKE '%' + @SearchText + '%'
					OR strLotNumber LIKE '%' + @SearchText + '%'
					)
				)
			OR (
				LEN(@SearchText) <= 2
				AND (
					strLotNumber LIKE '%'
					OR strLotNumber LIKE '%'
					)
				)
			)
	ORDER BY strLotNumber
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[rptInvGetRptInvLotNumMovementReportDataList] (
	@SQStart DATETIME
	,@SQFinish DATETIME
	,@SQStatusIn INT
	,@SQStatusOut INT
	,@SQPartNumber NVARCHAR(max)
	,@SQType0 INT
	,@SQType1 INT
	,@SQType2 INT
	,@SQType3 INT
	,@SQType4 INT
	,@SQType5 INT
	,@SQType6 INT
	,@SQType7 INT
	,@SQType8 INT
	,@SQType9 INT
	,@SQType10 INT
	,@SQType11 INT
	,@SQType12 INT
	)
AS
BEGIN
	SELECT Z.lngID
		,Z.dteUpdatedDate
		,Z.strPartNumber
		,Z.strDesc
		,Z.decUnitWeight
		,Z.strLocation
		,Z.decQty
		,Z.decWeight
		,Z.strDocID
		,Z.intType
		,Z.intStatus
		,Z.intGroupBy
		,Z.dteExpiryDate
		,Z.bitExpiryDate
	FROM (
		SELECT SNT.lngID
			,SNT.dteUpdatedDate
			,SNT.strPartNumber
			,INV.strDesc
			,INV.decMass AS decUnitWeight
			,SNT.strLocation
			,CASE 
				WHEN SNT.intStatus = @SQStatusOut
					THEN SNT.decQty * - 1
				ELSE SNT.decQty
				END AS decQty
			,ROUND(INV.decMass * (
					CASE 
						WHEN SNT.intStatus = @SQStatusOut
							THEN SNT.decQty * - 1
						ELSE SNT.decQty
						END
					), 2) AS decWeight
			,CASE 
				WHEN SNT.intType = 7
					THEN (
							CASE 
								WHEN (
										SELECT COUNT(strAdjDocID)
										FROM tblInvAdjDoc
										WHERE SNT.strDocID = tblInvAdjDoc.strAdjDocID
										) = 1
									THEN SNT.strDocID
								ELSE 'STOCK COUNT'
								END
							)
				ELSE SNT.strDocID
				END AS strDocID
			,SNT.intType
			,SNT.intStatus
			,CASE 
				WHEN (
						SNT.intType = @SQType5
						OR SNT.intType = @SQType6
						)
					AND strDocID LIKE '%IRP-%'
					THEN 2
				ELSE CASE SNT.intType
						WHEN @SQType0
							THEN 1
						WHEN @SQType1
							THEN 1
						WHEN @SQType2
							THEN 5
						WHEN @SQType3
							THEN 1
						WHEN @SQType4
							THEN 4
						WHEN @SQType5
							THEN 3
						WHEN @SQType6
							THEN 3
						WHEN @SQType7
							THEN 4
						WHEN @SQType8
							THEN 4
						WHEN @SQType9
							THEN 4
						WHEN @SQType10
							THEN 5
						WHEN @SQType11
							THEN 3
						WHEN @SQType12
							THEN 3
						ELSE 4
						END
				END AS intGroupBy
			,isnull(SNT.dteExpiryDate, '') AS dteExpiryDate
			,SNT.bitExpiryDate
		FROM tblSerialNumberTracking SNT
		INNER JOIN tblInv INV ON SNT.strPartNumber = INV.strPartNumber
		WHERE (
				SNT.strSerialNumber IN (
					SELECT *
					FROM Fnsplitstringastable(@SQPartNumber, ',')
					)
				)
			AND (
				SNT.dteUpdatedDate BETWEEN @SQStart
					AND @SQFinish
				)
		
		UNION ALL
		
		SELECT - 1 AS lngID
			,GETDATE() AS dteUpdatedDate
			,ILE.strPartNumber
			,INV.strDesc
			,INV.decMass AS decUnitWeight
			,ILE.strLocName AS strLocation
			,ILE.decQty
			,ROUND(INV.decMass * ILE.decQty, 2) AS decWeight
			,'ON HAND' AS strDocID
			,99 AS intType
			,@SQStatusIn AS intStatus
			,6 AS intGroupBy
			,isnull(ILE.dteExpiryDate, '') AS dteExpiryDate
			,ILE.bitExpiryDate
		FROM tblInvLotExt ILE
		INNER JOIN tblInv INV ON ILE.strPartNumber = INV.strPartNumber
		WHERE (ILE.decQty <> 0)
			AND (
				ILE.strLotNumber IN (
					SELECT *
					FROM Fnsplitstringastable(@SQPartNumber, ',')
					)
				)
		) Z
	ORDER BY Z.intGroupBy
		,Z.lngID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptInvGetRptInvPricelistTrackingReportDataList]      
(      
@SQStart Datetime,    
@SQFinish datetime,    
@SQPartNumber nvarchar(max)  
)    
AS      
BEGIN     
SELECT tblInv.strPartNumber ,tblInv.strDesc ,tblInvPriceTracking.dteUpdatedDate ,tblInvPriceTracking.strUserName ,tblInvPriceTracking.strSource ,tblPriceData.strPricelist ,  
tblPriceData.strDesc as strPricelistDesc,tblInvPriceTracking.decPriceFrom ,tblInvPriceTracking.decPriceTo ,tblPriceListsByDate.dteStartDate ,tblPriceListsByDate.dteFinishDate   
FROM tblInv   
INNER JOIN tblInvPriceTracking ON tblInv.strPartNumber = tblInvPriceTracking.strPartNumber   
INNER JOIN tblPriceData ON tblInvPriceTracking.strPricelist = tblPriceData.strPricelist   
INNER JOIN tblPriceListsByDate ON tblInvPriceTracking.strPricelist = tblPriceListsByDate.strPricelist   
AND tblInvPriceTracking.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID WHERE (tblInvPriceTracking.dteUpdatedDate >= @SQStart)   
AND (tblInvPriceTracking.dteUpdatedDate <= @SQFinish)   
AND (tblInvPriceTracking.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQPartNumber, ','))) ORDER BY tblInvPriceTracking.lngInvPriceTrackID  
END 
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GeRptInvLedgerSetupReportData] (
	@ItemList NVARCHAR(MAX)
	,@Filter INT
	,@IsActive BIT
	,@IsInActive BIT
	,@Start DATETIME
	,@Finish DATETIME
	,@SortDescription BIT
	)
AS
BEGIN
	CREATE TABLE #TempGL ([intGLNumber] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL)

	CREATE TABLE #TempCAT ([strCategory] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL)

	CREATE TABLE #TempACCS ([strAcctSet] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL)

	CREATE TABLE #TempITEM ([strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL)

	CREATE TABLE #TempPN (
		[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[decQty] [money] NOT NULL
		,[decValue] [money] NOT NULL
		)

	CREATE TABLE #TempPNInOut (
		[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[decQtyIn] [money] NOT NULL
		,[decQtyOut] [money] NOT NULL
		,[decValueIn] [money] NOT NULL
		,[decValueOut] [money] NOT NULL
		)

	CREATE TABLE #TempPNLOC (
		[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[strLocName] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[decQty] [money] NOT NULL
		,[decValue] [money] NOT NULL
		)

	CREATE TABLE #TempPNInOutLOC (
		[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[strLocName] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[decQtyIn] [money] NOT NULL
		,[decQtyOut] [money] NOT NULL
		,[decValueIn] [money] NOT NULL
		,[decValueOut] [money] NOT NULL
		)

	CREATE TABLE #TempACCSET (
		[strAcctSet] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
		,[intGLNumber] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[strDesc] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[OrderbyCol] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		)

	CREATE TABLE #TempRESULT (
		[lngID] [bigint] IDENTITY(1, 1) NOT NULL
		,[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[strDesc] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[OpenQty] [money] NOT NULL
		,[OpenQtyIn] [money] NOT NULL
		,[OpenQtyOut] [money] NOT NULL
		,[OpenValue] [money] NOT NULL
		,[OpenValueIn] [money] NOT NULL
		,[OpenValueOut] [money] NOT NULL
		,[OrderbyCol] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		)

	IF (@Filter = 1)
		OR (@Filter = 3) --Category / Items   
	BEGIN
		IF (@Filter = 1) --Category
		BEGIN
			INSERT INTO #TempCAT
			SELECT *
			FROM fnSplitStringAsTable(@ItemList, ',')
		END

		IF (@Filter = 3) --Items
		BEGIN
			INSERT INTO #TempITEM
			SELECT *
			FROM fnSplitStringAsTable(@ItemList, ',')
		END

		INSERT INTO #TempPN
		SELECT tblInvTrackingDT.strPartNumber
			,SUM(ISNULL(tblInvTrackingDT.decQty, 0)) AS decQty
			,SUM(ISNULL(tblInvTrackingDT.decValue, 0)) AS decValue
		FROM tblInvTrackingDT
		INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@Start) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
		INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
		WHERE (tblInv.intType = 1)
			AND (tblInv.bitOtherCmp = 0)
		GROUP BY tblInvTrackingDT.strPartNumber
		ORDER BY tblInvTrackingDT.strPartNumber

		INSERT INTO #TempPNInOut
		SELECT tblInvTrackingDT.strPartNumber
			,SUM(ISNULL(tblInvTrackingDT.decQtyIn, 0)) AS decQtyIn
			,SUM(ISNULL(tblInvTrackingDT.decQtyOut, 0)) AS decQtyOut
			,SUM(ISNULL(tblInvTrackingDT.decValueIn, 0)) AS decValueIn
			,SUM(ISNULL(tblInvTrackingDT.decValueOut, 0)) AS decValueOut
		FROM tblInvTrackingDT
		INNER JOIN dbo.fnGetInvTrackingAsTable(@Start, @Finish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
		INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
		WHERE (tblInv.intType = 1)
			AND (tblInv.bitOtherCmp = 0)
		GROUP BY tblInvTrackingDT.strPartNumber
		ORDER BY tblInvTrackingDT.strPartNumber
	END
	ELSE
	BEGIN
		IF (@Filter = 0) --Assets
		BEGIN
			INSERT INTO #TempGL
			SELECT *
			FROM fnSplitStringAsTable(@ItemList, ',')

			INSERT INTO #TempACCSET
			SELECT tblAccountSets.strAcctSet
				,tblAccounts.intGLNumber
				,tblAccounts.strDesc
				,(CAST(tblAccounts.intGLNumber AS VARCHAR(30)) + ' ' + tblAccounts.strDesc) AS OrderbyCol
			FROM tblAccountSets
			INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
			WHERE tblAccountSets.blnService = 0
				AND tblAccountSets.blnBuyout = 0
			ORDER BY OrderbyCol
		END

		IF (@Filter = 2) --AccountSets
		BEGIN
			INSERT INTO #TempACCS
			SELECT *
			FROM fnSplitStringAsTable(@ItemList, ',')
		END

		INSERT INTO #TempPNLOC
		SELECT tblInvTrackingDT.strPartNumber
			,tblInvTrackingDT.strLocName
			,SUM(ISNULL(tblInvTrackingDT.decQty, 0)) AS decQty
			,SUM(ISNULL(tblInvTrackingDT.decValue, 0)) AS decValue
		FROM tblInvTrackingDT
		INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@Start) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
		INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
		WHERE (tblInv.intType = 1)
			AND (tblInv.bitOtherCmp = 0)
		GROUP BY tblInvTrackingDT.strPartNumber
			,tblInvTrackingDT.strLocName
		ORDER BY tblInvTrackingDT.strPartNumber
			,tblInvTrackingDT.strLocName

		INSERT INTO #TempPNInOutLOC
		SELECT tblInvTrackingDT.strPartNumber
			,tblInvTrackingDT.strLocName
			,SUM(ISNULL(tblInvTrackingDT.decQtyIn, 0)) AS decQtyIn
			,SUM(ISNULL(tblInvTrackingDT.decQtyOut, 0)) AS decQtyOut
			,SUM(ISNULL(tblInvTrackingDT.decValueIn, 0)) AS decValueIn
			,SUM(ISNULL(tblInvTrackingDT.decValueOut, 0)) AS decValueOut
		FROM tblInvTrackingDT
		INNER JOIN dbo.fnGetInvTrackingAsTable(@Start, @Finish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
		INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
		WHERE (tblInv.intType = 1)
			AND (tblInv.bitOtherCmp = 0)
		GROUP BY tblInvTrackingDT.strPartNumber
			,tblInvTrackingDT.strLocName
		ORDER BY tblInvTrackingDT.strPartNumber
			,tblInvTrackingDT.strLocName
	END

	IF (@Filter = 0) --Assets      
	BEGIN
		INSERT INTO #TempRESULT (
			strPartNumber
			,strDesc
			,OpenQty
			,OpenQtyIn
			,OpenQtyOut
			,OpenValue
			,OpenValueIn
			,OpenValueOut
			,OrderbyCol
			)
		SELECT Z.strPartNumber
			,Z.strDesc
			,SUM(Z.OpenQty) AS OpenQty
			,SUM(Z.OpenQtyIn) AS OpenQtyIn
			,SUM(Z.OpenQtyOut) AS OpenQtyOut
			,SUM(Z.OpenValue) AS OpenValue
			,SUM(Z.OpenValueIn) AS OpenValueIn
			,SUM(Z.OpenValueOut) AS OpenValueOut
			,Z.OrderbyCol
		FROM (
			SELECT MasterTable.strPartNumber
				,MasterTable.strDesc
				,tblInvExt.decOpenQty + ISNULL(PN.decQty, 0) AS OpenQty
				,ISNULL(PNIO.decQtyIn, 0) AS OpenQtyIn
				,ISNULL(PNIO.decQtyOut, 0) AS OpenQtyOut
				,tblInvExt.decOpenValue + ISNULL(PN.decValue, 0) AS OpenValue
				,ISNULL(PNIO.decValueIn, 0) AS OpenValueIn
				,ISNULL(PNIO.decValueOut, 0) AS OpenValueOut
				,ACC.OrderbyCol
			FROM tblInv AS MasterTable
			INNER JOIN tblInvExt ON MasterTable.strPartNumber = tblInvExt.strPartNumber
			INNER JOIN #TempACCSET ACC ON tblInvExt.strAcctSet = ACC.strAcctSet
			INNER JOIN #TempGL GL ON ACC.intGLNumber = GL.intGLNumber
			LEFT JOIN #TempPNLOC PN ON tblInvExt.strPartNumber = PN.strPartNumber
				AND tblInvExt.strLocName = PN.strLocName
			LEFT JOIN #TempPNInOutLOC PNIO ON tblInvExt.strPartNumber = PNIO.strPartNumber
				AND tblInvExt.strLocName = PNIO.strLocName
			WHERE (MasterTable.intType = 1)
				AND (MasterTable.bitOtherCmp = 0)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @IsActive = 1
							THEN 0
						ELSE MasterTable.bitInactive
						END
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @IsInActive = 1
							THEN 1
						ELSE MasterTable.bitInactive
						END
					)
			) Z
		GROUP BY Z.strPartNumber
			,Z.strDesc
			,Z.OrderbyCol
		ORDER BY Z.OrderbyCol
			,Z.strPartNumber
	END
	ELSE IF (@Filter = 1) --Category      
	BEGIN
		INSERT INTO #TempRESULT (
			strPartNumber
			,strDesc
			,OpenQty
			,OpenQtyIn
			,OpenQtyOut
			,OpenValue
			,OpenValueIn
			,OpenValueOut
			,OrderbyCol
			)
		SELECT MasterTable.strPartNumber
			,MasterTable.strDesc
			,MasterTable.decSumOpenQty + ISNULL(PN.decQty, 0) AS OpenQty
			,ISNULL(PNIO.decQtyIn, 0) AS OpenQtyIn
			,ISNULL(PNIO.decQtyOut, 0) AS OpenQtyOut
			,MasterTable.decSumOpenValue + ISNULL(PN.decValue, 0) AS OpenValue
			,ISNULL(PNIO.decValueIn, 0) AS OpenValueIn
			,ISNULL(PNIO.decValueOut, 0) AS OpenValueOut
			,MasterTable.strCategory AS OrderbyCol
		FROM tblInv AS MasterTable
		INNER JOIN #TempCAT CAT ON MasterTable.strCategory = CAT.strCategory
		LEFT JOIN #TempPN PN ON MasterTable.strPartNumber = PN.strPartNumber
		LEFT JOIN #TempPNInOut PNIO ON MasterTable.strPartNumber = PNIO.strPartNumber
		WHERE (MasterTable.intType = 1)
			AND (MasterTable.bitOtherCmp = 0)
			AND (
				MasterTable.bitInactive = CASE 
					WHEN @IsActive = 1
						THEN 0
					ELSE MasterTable.bitInactive
					END
				)
			AND (
				MasterTable.bitInactive = CASE 
					WHEN @IsInActive = 1
						THEN 1
					ELSE MasterTable.bitInactive
					END
				)
		ORDER BY OrderbyCol
			,MasterTable.strPartNumber
	END
	ELSE IF (@Filter = 2) --AccountSets      
	BEGIN
		INSERT INTO #TempRESULT (
			strPartNumber
			,strDesc
			,OpenQty
			,OpenQtyIn
			,OpenQtyOut
			,OpenValue
			,OpenValueIn
			,OpenValueOut
			,OrderbyCol
			)
		SELECT Z.strPartNumber
			,Z.strDesc
			,SUM(Z.OpenQty) AS OpenQty
			,SUM(Z.OpenQtyIn) AS OpenQtyIn
			,SUM(Z.OpenQtyOut) AS OpenQtyOut
			,SUM(Z.OpenValue) AS OpenValue
			,SUM(Z.OpenValueIn) AS OpenValueIn
			,SUM(Z.OpenValueOut) AS OpenValueOut
			,Z.OrderbyCol
		FROM (
			SELECT MasterTable.strPartNumber
				,MasterTable.strDesc
				,tblInvExt.decOpenQty + ISNULL(PN.decQty, 0) AS OpenQty
				,ISNULL(PNIO.decQtyIn, 0) AS OpenQtyIn
				,ISNULL(PNIO.decQtyOut, 0) AS OpenQtyOut
				,tblInvExt.decOpenValue + ISNULL(PN.decValue, 0) AS OpenValue
				,ISNULL(PNIO.decValueIn, 0) AS OpenValueIn
				,ISNULL(PNIO.decValueOut, 0) AS OpenValueOut
				,tblInvExt.strAcctSet AS OrderbyCol
			FROM tblInv AS MasterTable
			INNER JOIN tblInvExt ON MasterTable.strPartNumber = tblInvExt.strPartNumber
			INNER JOIN #TempACCS ACCS ON tblInvExt.strAcctSet = ACCS.strAcctSet
			LEFT JOIN #TempPNLOC PN ON tblInvExt.strPartNumber = PN.strPartNumber
				AND tblInvExt.strLocName = PN.strLocName
			LEFT JOIN #TempPNInOutLOC PNIO ON tblInvExt.strPartNumber = PNIO.strPartNumber
				AND tblInvExt.strLocName = PNIO.strLocName
			WHERE (MasterTable.intType = 1)
				AND (MasterTable.bitOtherCmp = 0)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @IsActive = 1
							THEN 0
						ELSE MasterTable.bitInactive
						END
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @IsInActive = 1
							THEN 1
						ELSE MasterTable.bitInactive
						END
					)
			) Z
		GROUP BY Z.strPartNumber
			,Z.strDesc
			,Z.OrderbyCol
		ORDER BY Z.OrderbyCol
			,Z.strPartNumber
	END
	ELSE IF (@Filter = 3) --Items      
	BEGIN
		INSERT INTO #TempRESULT (
			strPartNumber
			,strDesc
			,OpenQty
			,OpenQtyIn
			,OpenQtyOut
			,OpenValue
			,OpenValueIn
			,OpenValueOut
			,OrderbyCol
			)
		SELECT MasterTable.strPartNumber
			,MasterTable.strDesc
			,MasterTable.decSumOpenQty + ISNULL(PN.decQty, 0) AS OpenQty
			,ISNULL(PNIO.decQtyIn, 0) AS OpenQtyIn
			,ISNULL(PNIO.decQtyOut, 0) AS OpenQtyOut
			,MasterTable.decSumOpenValue + ISNULL(PN.decValue, 0) AS OpenValue
			,ISNULL(PNIO.decValueIn, 0) AS OpenValueIn
			,ISNULL(PNIO.decValueOut, 0) AS OpenValueOut
			,'' AS OrderbyCol
		FROM tblInv AS MasterTable
		INNER JOIN #TempITEM ITEM ON MasterTable.strPartNumber = ITEM.strPartNumber
		LEFT JOIN #TempPN PN ON MasterTable.strPartNumber = PN.strPartNumber
		LEFT JOIN #TempPNInOut PNIO ON MasterTable.strPartNumber = PNIO.strPartNumber
		WHERE (MasterTable.intType = 1)
			AND (MasterTable.bitOtherCmp = 0)
			AND (
				MasterTable.bitInactive = CASE 
					WHEN @IsActive = 1
						THEN 0
					ELSE MasterTable.bitInactive
					END
				)
			AND (
				MasterTable.bitInactive = CASE 
					WHEN @IsInActive = 1
						THEN 1
					ELSE MasterTable.bitInactive
					END
				)
		ORDER BY OrderbyCol
			,MasterTable.strPartNumber
	END

	SELECT strPartNumber
		,strDesc
		,OpenQty
		,OpenQtyIn
		,OpenQtyOut
		,(OpenQty + OpenQtyIn) - OpenQtyOut AS OnHand
		,OpenValue
		,OpenValueIn
		,OpenValueOut
		,(OpenValue + OpenValueIn) - OpenValueOut AS Balance
		,OrderbyCol
	FROM #TempRESULT
	WHERE (OpenQty + OpenQtyIn + OpenQtyOut + OpenValue + OpenValueIn + OpenValueOut) <> 0
	ORDER BY lngID

	DROP TABLE #TempGL

	DROP TABLE #TempCAT

	DROP TABLE #TempACCS

	DROP TABLE #TempITEM

	DROP TABLE #TempPN

	DROP TABLE #TempPNInOut

	DROP TABLE #TempPNLOC

	DROP TABLE #TempPNInOutLOC

	DROP TABLE #TempACCSET

	DROP TABLE #TempRESULT
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GeRptInvLedgerSetupDetailsReportData] (
	@ItemList NVARCHAR(MAX)
	,@Filter INT
	,@IsActive BIT
	,@IsInActive BIT
	,@Start DATETIME
	,@Finish DATETIME
	,@SortDescription BIT
	,@Omit BIT
	,@SortChrono BIT
	)
AS
BEGIN
	CREATE TABLE #TempGL ([intGLNumber] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL)

	CREATE TABLE #TempCAT ([strCategory] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL)

	CREATE TABLE #TempACCS ([strAcctSet] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL)

	CREATE TABLE #TempITEM ([strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL)

	CREATE TABLE #TempPN (
		[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[decQty] [money] NOT NULL
		,[decValue] [money] NOT NULL
		)

	CREATE TABLE #TempPNLOC (
		[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[strLocName] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[decQty] [money] NOT NULL
		,[decValue] [money] NOT NULL
		)

	CREATE TABLE #TempACCSET (
		[strAcctSet] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
		,[intGLNumber] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[strDesc] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[OrderbyCol] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		)

	CREATE TABLE #TempOB (
		[lngID] [bigint] IDENTITY(1, 1) NOT NULL
		,[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[strDesc] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[decOpenQty] [money] NOT NULL
		,[decOpenValue] [money] NOT NULL
		,[OrderbyCol] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		)

	CREATE TABLE #TempTRACK (
		[lngID] [bigint] IDENTITY(1, 1) NOT NULL
		,[dteJournalDate] [smalldatetime] NOT NULL
		,[strSource] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
		,[lngInvTrackID] [bigint] NOT NULL
		,[lngJourID] [bigint] NOT NULL
		,[intModule] [tinyint] NOT NULL
		,[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[decQty] [money] NOT NULL
		,[decValue] [money] NOT NULL
		,[decRevenue] [money] NOT NULL
		,[strCustVend] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
		,[OrderbyCol] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		)

	CREATE TABLE #TempRESULT (
		[lngID] [bigint] IDENTITY(1, 1) NOT NULL
		,[intType] [tinyint] NOT NULL
		,[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[strDescription] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[dteJournalDate] [smalldatetime] NOT NULL
		,[strSource] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
		,[lngJourID] [bigint] NOT NULL
		,[decQty] [money] NOT NULL
		,[decOnHand] [money] NOT NULL
		,[decValue] [money] NOT NULL
		,[decBalance] [money] NOT NULL
		,[strGrouping] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[decSellingPrice] [money] NOT NULL
		,[decUnitCost] [money] NOT NULL
		,[strCustVendNum] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		)

	IF (@Filter = 1)
		OR (@Filter = 3) --Category & Items
	BEGIN
		IF (@Filter = 1) --Category
		BEGIN
			INSERT INTO #TempCAT
			SELECT *
			FROM fnSplitStringAsTable(@ItemList, ',')
		END

		IF (@Filter = 3) --Items
		BEGIN
			INSERT INTO #TempITEM
			SELECT *
			FROM fnSplitStringAsTable(@ItemList, ',')
		END

		INSERT INTO #TempPN
		SELECT tblInvTrackingDT.strPartNumber
			,SUM(ISNULL(tblInvTrackingDT.decQty, 0)) AS decQty
			,SUM(ISNULL(tblInvTrackingDT.decValue, 0)) AS decValue
		FROM tblInvTrackingDT
		INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@Start) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
		INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
		WHERE (tblInv.intType = 1)
			AND (tblInv.bitOtherCmp = 0)
		GROUP BY tblInvTrackingDT.strPartNumber
		ORDER BY tblInvTrackingDT.strPartNumber
	END
	ELSE
	BEGIN
		IF (@Filter = 0) --Assets
		BEGIN
			INSERT INTO #TempGL
			SELECT *
			FROM fnSplitStringAsTable(@ItemList, ',')

			INSERT INTO #TempACCSET
			SELECT tblAccountSets.strAcctSet
				,tblAccounts.intGLNumber
				,tblAccounts.strDesc
				,(CAST(tblAccounts.intGLNumber AS VARCHAR(30)) + ' ' + tblAccounts.strDesc) AS OrderbyCol
			FROM tblAccountSets
			INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
			WHERE tblAccountSets.blnService = 0
				AND tblAccountSets.blnBuyout = 0
			ORDER BY OrderbyCol
		END

		IF (@Filter = 2) --AccountSets
		BEGIN
			INSERT INTO #TempACCS
			SELECT *
			FROM fnSplitStringAsTable(@ItemList, ',')
		END

		INSERT INTO #TempPNLOC
		SELECT tblInvTrackingDT.strPartNumber
			,tblInvTrackingDT.strLocName
			,SUM(ISNULL(tblInvTrackingDT.decQty, 0)) AS decQty
			,SUM(ISNULL(tblInvTrackingDT.decValue, 0)) AS decValue
		FROM tblInvTrackingDT
		INNER JOIN dbo.fnGetInvTrackingPreValueAsTable(@Start) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
		INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
		WHERE (tblInv.intType = 1)
			AND (tblInv.bitOtherCmp = 0)
		GROUP BY tblInvTrackingDT.strPartNumber
			,tblInvTrackingDT.strLocName
		ORDER BY tblInvTrackingDT.strPartNumber
			,tblInvTrackingDT.strLocName
	END

	IF (@Filter = 0) --Assets      
	BEGIN
		INSERT INTO #TempOB (
			strPartNumber
			,strDesc
			,decOpenQty
			,decOpenValue
			,OrderbyCol
			)
		SELECT Z.strPartNumber
			,Z.strDesc
			,SUM(Z.OpenQty) AS OpenQty
			,SUM(Z.OpenValue) AS OpenValue
			,Z.OrderbyCol
		FROM (
			SELECT MasterTable.strPartNumber
				,MasterTable.strDesc
				,tblInvExt.decOpenQty + ISNULL(PN.decQty, 0) AS OpenQty
				,tblInvExt.decOpenValue + ISNULL(PN.decValue, 0) AS OpenValue
				,ACC.OrderbyCol
			FROM tblInv AS MasterTable
			INNER JOIN tblInvExt ON MasterTable.strPartNumber = tblInvExt.strPartNumber
			INNER JOIN #TempACCSET ACC ON tblInvExt.strAcctSet = ACC.strAcctSet
			INNER JOIN #TempGL GL ON ACC.intGLNumber = GL.intGLNumber
			LEFT JOIN #TempPNLOC PN ON tblInvExt.strPartNumber = PN.strPartNumber
				AND tblInvExt.strLocName = PN.strLocName
			WHERE (MasterTable.intType = 1)
				AND (MasterTable.bitOtherCmp = 0)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @IsActive = 1
							THEN 0
						ELSE MasterTable.bitInactive
						END
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @IsInActive = 1
							THEN 1
						ELSE MasterTable.bitInactive
						END
					)
			) Z
		GROUP BY Z.strPartNumber
			,Z.strDesc
			,Z.OrderbyCol
		ORDER BY Z.OrderbyCol
			,Z.strPartNumber

		IF @SortChrono = 1
		BEGIN
			INSERT INTO #TempTRACK (
				dteJournalDate
				,strSource
				,lngInvTrackID
				,lngJourID
				,intModule
				,strPartNumber
				,decQty
				,decValue
				,decRevenue
				,OrderbyCol
				)
			SELECT INV.dteJournalDate
				,INV.strSource
				,INV.lngInvTrackID
				,INV.lngJourID
				,INV.intModule
				,tblInvTrackingDT.strPartNumber
				,SUM(tblInvTrackingDT.decQty)
				,SUM(tblInvTrackingDT.decValue)
				,SUM(dbo.tblInvTrackingDT.decRevenue)
				,ACC.OrderbyCol
			FROM tblInvTracking INV
			INNER JOIN tblInvTrackingDT ON INV.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			INNER JOIN dbo.fnGetInvTrackingAsTable(@Start, @Finish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
			INNER JOIN tblInvExt ON tblInvTrackingDT.strPartNumber = tblInvExt.strPartNumber
				AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
			INNER JOIN #TempACCSET ACC ON tblInvExt.strAcctSet = ACC.strAcctSet
			INNER JOIN #TempGL GL ON ACC.intGLNumber = GL.intGLNumber
			GROUP BY INV.dteJournalDate
				,INV.strSource
				,INV.lngInvTrackID
				,INV.lngJourID
				,INV.intModule
				,tblInvTrackingDT.strPartNumber
				,ACC.OrderbyCol
			ORDER BY INV.lngInvTrackID
				,INV.dteJournalDate
				,INV.lngJourID
		END
		ELSE
		BEGIN
			INSERT INTO #TempTRACK (
				dteJournalDate
				,strSource
				,lngInvTrackID
				,lngJourID
				,intModule
				,strPartNumber
				,decQty
				,decValue
				,decRevenue
				,OrderbyCol
				)
			SELECT INV.dteJournalDate
				,INV.strSource
				,INV.lngInvTrackID
				,INV.lngJourID
				,INV.intModule
				,tblInvTrackingDT.strPartNumber
				,SUM(tblInvTrackingDT.decQty)
				,SUM(tblInvTrackingDT.decValue)
				,SUM(dbo.tblInvTrackingDT.decRevenue)
				,ACC.OrderbyCol
			FROM tblInvTracking INV
			INNER JOIN tblInvTrackingDT ON INV.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			INNER JOIN dbo.fnGetInvTrackingAsTable(@Start, @Finish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
			INNER JOIN tblInvExt ON tblInvTrackingDT.strPartNumber = tblInvExt.strPartNumber
				AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
			INNER JOIN #TempACCSET ACC ON tblInvExt.strAcctSet = ACC.strAcctSet
			INNER JOIN #TempGL GL ON ACC.intGLNumber = GL.intGLNumber
			GROUP BY INV.dteJournalDate
				,INV.strSource
				,INV.lngInvTrackID
				,INV.lngJourID
				,INV.intModule
				,tblInvTrackingDT.strPartNumber
				,ACC.OrderbyCol
			ORDER BY INV.dteJournalDate
				,INV.lngJourID
				,INV.lngInvTrackID
		END
	END
	ELSE IF (@Filter = 1) --Category      
	BEGIN
		INSERT INTO #TempOB (
			strPartNumber
			,strDesc
			,decOpenQty
			,decOpenValue
			,OrderbyCol
			)
		SELECT MasterTable.strPartNumber
			,MasterTable.strDesc
			,MasterTable.decSumOpenQty + ISNULL(PN.decQty, 0) AS OpenQty
			,MasterTable.decSumOpenValue + ISNULL(PN.decValue, 0) AS OpenValue
			,MasterTable.strCategory AS OrderbyCol
		FROM tblInv AS MasterTable
		INNER JOIN #TempCAT CAT ON MasterTable.strCategory = CAT.strCategory
		LEFT JOIN #TempPN PN ON MasterTable.strPartNumber = PN.strPartNumber
		WHERE (MasterTable.intType = 1)
			AND (MasterTable.bitOtherCmp = 0)
			AND (
				MasterTable.bitInactive = CASE 
					WHEN @IsActive = 1
						THEN 0
					ELSE MasterTable.bitInactive
					END
				)
			AND (
				MasterTable.bitInactive = CASE 
					WHEN @IsInActive = 1
						THEN 1
					ELSE MasterTable.bitInactive
					END
				)
		ORDER BY OrderbyCol
			,MasterTable.strPartNumber

		IF @SortChrono = 1
		BEGIN
			INSERT INTO #TempTRACK (
				dteJournalDate
				,strSource
				,lngInvTrackID
				,lngJourID
				,intModule
				,strPartNumber
				,decQty
				,decValue
				,decRevenue
				,OrderbyCol
				)
			SELECT INV.dteJournalDate
				,INV.strSource
				,INV.lngInvTrackID
				,INV.lngJourID
				,INV.intModule
				,tblInvTrackingDT.strPartNumber
				,SUM(tblInvTrackingDT.decQty)
				,SUM(tblInvTrackingDT.decValue)
				,SUM(dbo.tblInvTrackingDT.decRevenue)
				,CAT.strCategory
			FROM tblInvTracking INV
			INNER JOIN tblInvTrackingDT ON INV.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			INNER JOIN dbo.fnGetInvTrackingAsTable(@Start, @Finish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
			INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
			INNER JOIN #TempCAT CAT ON tblInv.strCategory = CAT.strCategory
			GROUP BY INV.dteJournalDate
				,INV.strSource
				,INV.lngInvTrackID
				,INV.lngJourID
				,INV.intModule
				,tblInvTrackingDT.strPartNumber
				,CAT.strCategory
			ORDER BY INV.lngInvTrackID
				,INV.dteJournalDate
				,INV.lngJourID
		END
		ELSE
		BEGIN
			INSERT INTO #TempTRACK (
				dteJournalDate
				,strSource
				,lngInvTrackID
				,lngJourID
				,intModule
				,strPartNumber
				,decQty
				,decValue
				,decRevenue
				,OrderbyCol
				)
			SELECT INV.dteJournalDate
				,INV.strSource
				,INV.lngInvTrackID
				,INV.lngJourID
				,INV.intModule
				,tblInvTrackingDT.strPartNumber
				,SUM(tblInvTrackingDT.decQty)
				,SUM(tblInvTrackingDT.decValue)
				,SUM(dbo.tblInvTrackingDT.decRevenue)
				,CAT.strCategory
			FROM tblInvTracking INV
			INNER JOIN tblInvTrackingDT ON INV.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			INNER JOIN dbo.fnGetInvTrackingAsTable(@Start, @Finish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
			INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
			INNER JOIN #TempCAT CAT ON tblInv.strCategory = CAT.strCategory
			GROUP BY INV.dteJournalDate
				,INV.strSource
				,INV.lngInvTrackID
				,INV.lngJourID
				,INV.intModule
				,tblInvTrackingDT.strPartNumber
				,CAT.strCategory
			ORDER BY INV.dteJournalDate
				,INV.lngJourID
				,INV.lngInvTrackID
		END
	END
	ELSE IF (@Filter = 2) --AccountSets      
	BEGIN
		INSERT INTO #TempOB (
			strPartNumber
			,strDesc
			,decOpenQty
			,decOpenValue
			,OrderbyCol
			)
		SELECT Z.strPartNumber
			,Z.strDesc
			,SUM(Z.OpenQty) AS OpenQty
			,SUM(Z.OpenValue) AS OpenValue
			,Z.OrderbyCol
		FROM (
			SELECT MasterTable.strPartNumber
				,MasterTable.strDesc
				,tblInvExt.decOpenQty + ISNULL(PN.decQty, 0) AS OpenQty
				,tblInvExt.decOpenValue + ISNULL(PN.decValue, 0) AS OpenValue
				,tblInvExt.strAcctSet AS OrderbyCol
			FROM tblInv AS MasterTable
			INNER JOIN tblInvExt ON MasterTable.strPartNumber = tblInvExt.strPartNumber
			INNER JOIN #TempACCS ACCS ON tblInvExt.strAcctSet = ACCS.strAcctSet
			LEFT JOIN #TempPNLOC PN ON tblInvExt.strPartNumber = PN.strPartNumber
				AND tblInvExt.strLocName = PN.strLocName
			WHERE (MasterTable.intType = 1)
				AND (MasterTable.bitOtherCmp = 0)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @IsActive = 1
							THEN 0
						ELSE MasterTable.bitInactive
						END
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @IsInActive = 1
							THEN 1
						ELSE MasterTable.bitInactive
						END
					)
			) Z
		GROUP BY Z.strPartNumber
			,Z.strDesc
			,Z.OrderbyCol
		ORDER BY Z.OrderbyCol
			,Z.strPartNumber

		IF @SortChrono = 1
		BEGIN
			INSERT INTO #TempTRACK (
				dteJournalDate
				,strSource
				,lngInvTrackID
				,lngJourID
				,intModule
				,strPartNumber
				,decQty
				,decValue
				,decRevenue
				,OrderbyCol
				)
			SELECT INV.dteJournalDate
				,INV.strSource
				,INV.lngInvTrackID
				,INV.lngJourID
				,INV.intModule
				,tblInvTrackingDT.strPartNumber
				,SUM(tblInvTrackingDT.decQty)
				,SUM(tblInvTrackingDT.decValue)
				,SUM(dbo.tblInvTrackingDT.decRevenue)
				,tblInvExt.strAcctSet
			FROM tblInvTracking INV
			INNER JOIN tblInvTrackingDT ON INV.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			INNER JOIN dbo.fnGetInvTrackingAsTable(@Start, @Finish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
			INNER JOIN tblInvExt ON tblInvTrackingDT.strPartNumber = tblInvExt.strPartNumber
				AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
			INNER JOIN #TempACCS ACCS ON tblInvExt.strAcctSet = ACCS.strAcctSet
			GROUP BY INV.dteJournalDate
				,INV.strSource
				,INV.lngInvTrackID
				,INV.lngJourID
				,INV.intModule
				,tblInvTrackingDT.strPartNumber
				,tblInvExt.strAcctSet
			ORDER BY INV.lngInvTrackID
				,INV.dteJournalDate
				,INV.lngJourID
		END
		ELSE
		BEGIN
			INSERT INTO #TempTRACK (
				dteJournalDate
				,strSource
				,lngInvTrackID
				,lngJourID
				,intModule
				,strPartNumber
				,decQty
				,decValue
				,decRevenue
				,OrderbyCol
				)
			SELECT INV.dteJournalDate
				,INV.strSource
				,INV.lngInvTrackID
				,INV.lngJourID
				,INV.intModule
				,tblInvTrackingDT.strPartNumber
				,SUM(tblInvTrackingDT.decQty)
				,SUM(tblInvTrackingDT.decValue)
				,SUM(dbo.tblInvTrackingDT.decRevenue)
				,tblInvExt.strAcctSet
			FROM tblInvTracking INV
			INNER JOIN tblInvTrackingDT ON INV.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			INNER JOIN dbo.fnGetInvTrackingAsTable(@Start, @Finish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
			INNER JOIN tblInvExt ON tblInvTrackingDT.strPartNumber = tblInvExt.strPartNumber
				AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
			INNER JOIN #TempACCS ACCS ON tblInvExt.strAcctSet = ACCS.strAcctSet
			GROUP BY INV.dteJournalDate
				,INV.strSource
				,INV.lngInvTrackID
				,INV.lngJourID
				,INV.intModule
				,tblInvTrackingDT.strPartNumber
				,tblInvExt.strAcctSet
			ORDER BY INV.dteJournalDate
				,INV.lngJourID
				,INV.lngInvTrackID
		END
	END
	ELSE IF (@Filter = 3) --Items      
	BEGIN
		INSERT INTO #TempOB (
			strPartNumber
			,strDesc
			,decOpenQty
			,decOpenValue
			,OrderbyCol
			)
		SELECT MasterTable.strPartNumber
			,MasterTable.strDesc
			,MasterTable.decSumOpenQty + ISNULL(PN.decQty, 0) AS OpenQty
			,MasterTable.decSumOpenValue + ISNULL(PN.decValue, 0) AS OpenValue
			,'' AS OrderbyCol
		FROM tblInv AS MasterTable
		INNER JOIN #TempITEM ITEM ON MasterTable.strPartNumber = ITEM.strPartNumber
		LEFT JOIN #TempPN PN ON MasterTable.strPartNumber = PN.strPartNumber
		WHERE (MasterTable.intType = 1)
			AND (MasterTable.bitOtherCmp = 0)
			AND (
				MasterTable.bitInactive = CASE 
					WHEN @IsActive = 1
						THEN 0
					ELSE MasterTable.bitInactive
					END
				)
			AND (
				MasterTable.bitInactive = CASE 
					WHEN @IsInActive = 1
						THEN 1
					ELSE MasterTable.bitInactive
					END
				)
		ORDER BY OrderbyCol
			,MasterTable.strPartNumber

		IF @SortChrono = 1
		BEGIN
			INSERT INTO #TempTRACK (
				dteJournalDate
				,strSource
				,lngInvTrackID
				,lngJourID
				,intModule
				,strPartNumber
				,decQty
				,decValue
				,decRevenue
				,OrderbyCol
				)
			SELECT INV.dteJournalDate
				,INV.strSource
				,INV.lngInvTrackID
				,INV.lngJourID
				,INV.intModule
				,tblInvTrackingDT.strPartNumber
				,SUM(tblInvTrackingDT.decQty)
				,SUM(tblInvTrackingDT.decValue)
				,SUM(dbo.tblInvTrackingDT.decRevenue)
				,''
			FROM tblInvTracking INV
			INNER JOIN tblInvTrackingDT ON INV.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			INNER JOIN dbo.fnGetInvTrackingAsTable(@Start, @Finish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
			INNER JOIN #TempITEM ITEM ON tblInvTrackingDT.strPartNumber = ITEM.strPartNumber
			GROUP BY INV.dteJournalDate
				,INV.strSource
				,INV.lngInvTrackID
				,INV.lngJourID
				,INV.intModule
				,tblInvTrackingDT.strPartNumber
			ORDER BY INV.lngInvTrackID
				,INV.dteJournalDate
				,INV.lngJourID
		END
		ELSE
		BEGIN
			INSERT INTO #TempTRACK (
				dteJournalDate
				,strSource
				,lngInvTrackID
				,lngJourID
				,intModule
				,strPartNumber
				,decQty
				,decValue
				,decRevenue
				,OrderbyCol
				)
			SELECT INV.dteJournalDate
				,INV.strSource
				,INV.lngInvTrackID
				,INV.lngJourID
				,INV.intModule
				,tblInvTrackingDT.strPartNumber
				,SUM(tblInvTrackingDT.decQty)
				,SUM(tblInvTrackingDT.decValue)
				,SUM(dbo.tblInvTrackingDT.decRevenue)
				,''
			FROM tblInvTracking INV
			INNER JOIN tblInvTrackingDT ON INV.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			INNER JOIN dbo.fnGetInvTrackingAsTable(@Start, @Finish) AS Result1 ON tblInvTrackingDT.lngInvTrackID = Result1.lngInvTrackID
			INNER JOIN #TempITEM ITEM ON tblInvTrackingDT.strPartNumber = ITEM.strPartNumber
			GROUP BY INV.dteJournalDate
				,INV.strSource
				,INV.lngInvTrackID
				,INV.lngJourID
				,INV.intModule
				,tblInvTrackingDT.strPartNumber
			ORDER BY INV.dteJournalDate
				,INV.lngJourID
				,INV.lngInvTrackID
		END
	END

	UPDATE #TempTRACK
	SET strSource = ISNULL(CONCAT (
				'SC/'
				,Z.strAdjDocID
				), #TempTRACK.strSource)
	FROM (
		SELECT lngJourID
			,lngInvTrackID
			,strAdjDocID
		FROM tblInvAdjDoc
		WHERE dteJournalDate BETWEEN @Start
				AND @Finish
		) Z
	WHERE #TempTRACK.strSource = 'Stock Count'
		AND #TempTRACK.lngJourID = Z.lngJourID
		AND #TempTRACK.lngInvTrackID = Z.lngInvTrackID

	UPDATE #TempTRACK
	SET strCustVend = ISNULL((
				SELECT TOP 1 tblInvoiceDoc.strCustName
				FROM tblInvoiceDoc
				WHERE tblInvoiceDoc.strInvDocID = #TempTRACK.strSource
					AND tblInvoiceDoc.dteJournalDate BETWEEN @Start
						AND @Finish
				), '')
	WHERE #TempTRACK.intModule IN (
			2
			,8
			)

	UPDATE #TempTRACK
	SET strCustVend = ISNULL((
				SELECT TOP 1 tblInvoiceDocP.strVendName
				FROM tblInvoiceDocP
				WHERE tblInvoiceDocP.strInvPDocID = #TempTRACK.strSource
					AND tblInvoiceDocP.dteJournalDate BETWEEN @Start
						AND @Finish
				), '')
	WHERE #TempTRACK.intModule IN (
			1
			,7
			)

	INSERT INTO #TempRESULT (
		intType
		,strPartNumber
		,strDescription
		,dteJournalDate
		,strSource
		,lngJourID
		,decQty
		,decOnHand
		,decValue
		,decBalance
		,strGrouping
		,decSellingPrice
		,decUnitCost
		,strCustVendNum
		)
	SELECT 0
		,strPartNumber
		,strDesc
		,@Start
		,'Opening Balances'
		,0
		,decOpenQty
		,decOpenQty
		,decOpenValue
		,decOpenValue
		,OrderbyCol
		,0
		,0
		,''
	FROM #TempOB
	ORDER BY lngID

	INSERT INTO #TempRESULT (
		intType
		,strPartNumber
		,strDescription
		,dteJournalDate
		,strSource
		,lngJourID
		,decQty
		,decOnHand
		,decValue
		,decBalance
		,strGrouping
		,decSellingPrice
		,decUnitCost
		,strCustVendNum
		)
	SELECT 1
		,TRACK.strPartNumber
		,OB.strDesc
		,TRACK.dteJournalDate
		,TRACK.strSource
		,TRACK.lngJourID
		,TRACK.decQty
		,0 AS decOnHand
		,TRACK.decValue
		,0 AS decBalance
		,OB.OrderbyCol
		,TRACK.decRevenue
		,CASE 
			WHEN TRACK.decQty = 0
				OR TRACK.decValue = 0
				THEN 0
			ELSE CASE 
					WHEN TRACK.decQty < 0
						THEN (TRACK.decValue / TRACK.decQty) * - 1
					ELSE TRACK.decValue / TRACK.decQty
					END
			END
		,CASE 
			WHEN TRACK.strCustVend IS NULL
				THEN ''
			ELSE TRACK.strCustVend
			END
	FROM #TempTRACK TRACK
	INNER JOIN #TempOB OB ON TRACK.strPartNumber = OB.strPartNumber
		AND TRACK.OrderbyCol = OB.OrderbyCol
	ORDER BY TRACK.lngID

	IF @Omit = 1
	BEGIN
		DELETE TMP
		FROM #TempRESULT TMP
		INNER JOIN (
			SELECT strPartNumber
				,strGrouping
			FROM #TempRESULT
			GROUP BY strPartNumber
				,strGrouping
			HAVING SUM(decQty) = 0
				AND SUM(decValue) = 0
			) Z ON TMP.strPartNumber = Z.strPartNumber
			AND TMP.strGrouping = Z.strGrouping
	END

	SELECT strPartNumber
		,strDescription
		,dteJournalDate
		,strSource
		,lngJourID
		,decQty
		,decOnHand
		,decValue
		,decBalance
		,strGrouping
		,decSellingPrice
		,decUnitCost
		,strCustVendNum
		,intType
	FROM #TempRESULT
	ORDER BY strGrouping
		,strPartNumber
		,intType
		,lngID

	DROP TABLE #TempGL

	DROP TABLE #TempCAT

	DROP TABLE #TempACCS

	DROP TABLE #TempITEM

	DROP TABLE #TempPN

	DROP TABLE #TempPNLOC

	DROP TABLE #TempACCSET

	DROP TABLE #TempOB

	DROP TABLE #TempTRACK

	DROP TABLE #TempRESULT
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GeRptInvLedgerSetupDetailsSortReportData] (
	@Filter BIT
	,@IsOptSortChrono BIT
	,@IsOptSortJDate BIT
	,@ItemList NVARCHAR(max)
	,@SQStart DATETIME
	,@SQFinish DATETIME
	,@SQOrderbyCol NVARCHAR(max)
	)
AS
BEGIN
	IF (@Filter = 2)
	BEGIN
		IF (@IsOptSortChrono = 1)
		BEGIN
			SELECT INV.dteJournalDate
				,(
					CASE 
						WHEN INV.strSource = 'Stock Count'
							THEN (
									CASE 
										WHEN (
												SELECT COUNT(strAdjDocID)
												FROM tblInvAdjDoc
												WHERE INV.lngJourID = tblInvAdjDoc.lngJourID
													AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
												) = 0
											THEN INV.strSource
										ELSE (
												SELECT ISNULL(CONCAT (
															'SC/'
															,strAdjDocID
															), INV.strSource)
												FROM tblInvAdjDoc
												WHERE INV.lngJourID = tblInvAdjDoc.lngJourID
													AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
												)
										END
									)
						ELSE INV.strSource
						END
					) AS strSource
				,INV.lngJourID
				,SUM(tblInvTrackingDT.decQty) AS Expr1
				,SUM(tblInvTrackingDT.decValue) AS decValue
				,SUM(dbo.tblInvTrackingDT.decRevenue) SellingPrice
				,CASE 
					WHEN INV.intModule = 2
						OR INV.intModule = 8
						THEN ISNULL((
									SELECT TOP 1 tblInvoiceDoc.strCustName
									FROM dbo.tblInvoiceDoc
									WHERE dbo.tblInvoiceDoc.strInvDocID = INV.strSource
									), '')
					WHEN INV.intModule = 1
						OR INV.intModule = 7
						THEN ISNULL((
									SELECT TOP 1 tblInvoiceDocP.strVendName
									FROM dbo.tblInvoiceDocP
									WHERE dbo.tblInvoiceDocP.strInvPDocID = INV.strSource
									), '')
					END strCustVend
			FROM tblInvTracking INV
			INNER JOIN tblInvTrackingDT ON INV.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			INNER JOIN tblInvExt ON tblInvTrackingDT.strPartNumber = tblInvExt.strPartNumber
				AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
			WHERE (tblInvTrackingDT.strPartNumber = @ItemList)
				AND (
					INV.dteJournalDate BETWEEN @SQStart
						AND @SQFinish
					)
				AND INV.lngInvTrackID IN (
					SELECT Max(INV2.lngInvTrackID) AS lngInvTrackID
					FROM tblInvTracking AS INV2
					WHERE (
							INV2.dteJournalDate BETWEEN @SQStart
								AND @SQFinish
							)
					GROUP BY (
							CASE 
								WHEN INV2.strComment LIKE 'GRV Conversion %'
									OR INV2.strComment LIKE 'Delivery Advice Conversion %'
									OR INV2.strComment LIKE 'Internal Issue Conversion %'
									THEN strComment
								ELSE CASE 
										WHEN INV2.strSource LIKE 'Stock Count%' OR INV2.intModule = 6
											THEN INV2.strSource + CAST(INV2.lngInvTrackID AS NVARCHAR)
										ELSE INV2.strSource
										END
								END
							)
					)

				AND (tblInvExt.strAcctSet = @SQOrderbyCol)
			GROUP BY INV.dteJournalDate
				,INV.strSource
				,INV.lngJourID
				,INV.lngInvTrackID
				,INV.intModule
			ORDER BY INV.lngInvTrackID
				,INV.dteJournalDate
				,INV.lngJourID
		END
		ELSE IF (@IsOptSortJDate = 1)
		BEGIN
			SELECT INV.dteJournalDate
				,(
					CASE 
						WHEN INV.strSource = 'Stock Count'
							THEN (
									CASE 
										WHEN (
												SELECT COUNT(strAdjDocID)
												FROM tblInvAdjDoc
												WHERE INV.lngJourID = tblInvAdjDoc.lngJourID
													AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
												) = 0
											THEN INV.strSource
										ELSE (
												SELECT ISNULL(CONCAT (
															'SC/'
															,strAdjDocID
															), INV.strSource)
												FROM tblInvAdjDoc
												WHERE INV.lngJourID = tblInvAdjDoc.lngJourID
													AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
												)
										END
									)
						ELSE INV.strSource
						END
					) AS strSource
				,INV.lngJourID
				,SUM(tblInvTrackingDT.decQty) AS Expr1
				,SUM(tblInvTrackingDT.decValue) AS decValue
				,SUM(dbo.tblInvTrackingDT.decRevenue) SellingPrice
				,CASE 
					WHEN INV.intModule = 2
						OR INV.intModule = 8
						THEN ISNULL((
									SELECT TOP 1 tblInvoiceDoc.strCustName
									FROM dbo.tblInvoiceDoc
									WHERE dbo.tblInvoiceDoc.strInvDocID = INV.strSource
									), '')
					WHEN INV.intModule = 1
						OR INV.intModule = 7
						THEN ISNULL((
									SELECT TOP 1 tblInvoiceDocP.strVendName
									FROM dbo.tblInvoiceDocP
									WHERE dbo.tblInvoiceDocP.strInvPDocID = INV.strSource
									), '')
					END strCustVend
			FROM tblInvTracking INV
			INNER JOIN tblInvTrackingDT ON INV.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			INNER JOIN tblInvExt ON tblInvTrackingDT.strPartNumber = tblInvExt.strPartNumber
				AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
			WHERE (tblInvTrackingDT.strPartNumber = @ItemList)
				AND (
					INV.dteJournalDate BETWEEN @SQStart
						AND @SQFinish
					)
				AND INV.lngInvTrackID IN (
					SELECT Max(INV2.lngInvTrackID) AS lngInvTrackID
					FROM tblInvTracking AS INV2
					WHERE (
							INV2.dteJournalDate BETWEEN @SQStart
								AND @SQFinish
							)
					GROUP BY (
							CASE 
								WHEN INV2.strComment LIKE 'GRV Conversion %'
									OR INV2.strComment LIKE 'Delivery Advice Conversion %'
									OR INV2.strComment LIKE 'Internal Issue Conversion %'
									THEN strComment
								ELSE CASE 
										WHEN INV2.strSource LIKE 'Stock Count%' OR INV2.intModule = 6
											THEN INV2.strSource + CAST(INV2.lngInvTrackID AS NVARCHAR)
										ELSE INV2.strSource
										END
								END
							)
					)
				AND (tblInvExt.strAcctSet = @SQOrderbyCol)
			GROUP BY INV.dteJournalDate
				,INV.strSource
				,INV.lngJourID
				,INV.lngInvTrackID
				,INV.intModule
			ORDER BY INV.dteJournalDate
				,INV.lngJourID
				,INV.lngInvTrackID
		END
	END
	ELSE IF (@Filter = 0)
	BEGIN
		IF (@IsOptSortChrono = 1)
		BEGIN
			SELECT INV.dteJournalDate
				,(
					CASE 
						WHEN INV.strSource = 'Stock Count'
							THEN (
									CASE 
										WHEN (
												SELECT COUNT(strAdjDocID)
												FROM tblInvAdjDoc
												WHERE INV.lngJourID = tblInvAdjDoc.lngJourID
													AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
												) = 0
											THEN INV.strSource
										ELSE (
												SELECT ISNULL(CONCAT (
															'SC/'
															,strAdjDocID
															), INV.strSource)
												FROM tblInvAdjDoc
												WHERE INV.lngJourID = tblInvAdjDoc.lngJourID
													AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
												)
										END
									)
						ELSE INV.strSource
						END
					) AS strSource
				,INV.lngJourID
				,SUM(tblInvTrackingDT.decQty) AS Expr1
				,SUM(tblInvTrackingDT.decValue) AS decValue
				,SUM(dbo.tblInvTrackingDT.decRevenue) SellingPrice
				,CASE 
					WHEN INV.intModule = 2
						OR INV.intModule = 8
						THEN ISNULL((
									SELECT TOP 1 tblInvoiceDoc.strCustName
									FROM dbo.tblInvoiceDoc
									WHERE dbo.tblInvoiceDoc.strInvDocID = INV.strSource
									), '')
					WHEN INV.intModule = 1
						OR INV.intModule = 7
						THEN ISNULL((
									SELECT TOP 1 tblInvoiceDocP.strVendName
									FROM dbo.tblInvoiceDocP
									WHERE dbo.tblInvoiceDocP.strInvPDocID = INV.strSource
									), '')
					END strCustVend
			FROM tblInvTracking INV
			INNER JOIN tblInvTrackingDT ON INV.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			INNER JOIN tblInvExt ON tblInvTrackingDT.strPartNumber = tblInvExt.strPartNumber
				AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
			INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
			INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
			WHERE (tblInvTrackingDT.strPartNumber = @ItemList)
				AND (
					INV.dteJournalDate BETWEEN @SQStart
						AND @SQFinish
					)
				AND INV.lngInvTrackID IN (
					SELECT Max(INV2.lngInvTrackID) AS lngInvTrackID
					FROM tblInvTracking AS INV2
					WHERE (
							INV2.dteJournalDate BETWEEN @SQStart
								AND @SQFinish
							)
					GROUP BY (
							CASE 
								WHEN INV2.strComment LIKE 'GRV Conversion %'
									OR INV2.strComment LIKE 'Delivery Advice Conversion %'
									OR INV2.strComment LIKE 'Internal Issue Conversion %'
									THEN strComment
								ELSE CASE 
										WHEN INV2.strSource LIKE 'Stock Count%' OR INV2.intModule = 6
											THEN INV2.strSource + CAST(INV2.lngInvTrackID AS NVARCHAR)
										ELSE INV2.strSource
										END
								END
							)
					)
				AND (CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc) = @SQOrderbyCol
			GROUP BY INV.dteJournalDate
				,INV.strSource
				,INV.lngJourID
				,INV.lngInvTrackID
				,INV.intModule
			ORDER BY INV.lngInvTrackID
				,INV.dteJournalDate
				,INV.lngJourID
		END
		ELSE IF (@IsOptSortJDate = 1)
		BEGIN
			SELECT INV.dteJournalDate
				,(
					CASE 
						WHEN INV.strSource = 'Stock Count'
							THEN (
									CASE 
										WHEN (
												SELECT COUNT(strAdjDocID)
												FROM tblInvAdjDoc
												WHERE INV.lngJourID = tblInvAdjDoc.lngJourID
													AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
												) = 0
											THEN INV.strSource
										ELSE (
												SELECT ISNULL(CONCAT (
															'SC/'
															,strAdjDocID
															), INV.strSource)
												FROM tblInvAdjDoc
												WHERE INV.lngJourID = tblInvAdjDoc.lngJourID
													AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
												)
										END
									)
						ELSE INV.strSource
						END
					) AS strSource
				,INV.lngJourID
				,SUM(tblInvTrackingDT.decQty) AS Expr1
				,SUM(tblInvTrackingDT.decValue) AS decValue
				,SUM(dbo.tblInvTrackingDT.decRevenue) SellingPrice
				,CASE 
					WHEN INV.intModule = 2
						OR INV.intModule = 8
						THEN ISNULL((
									SELECT TOP 1 tblInvoiceDoc.strCustName
									FROM dbo.tblInvoiceDoc
									WHERE dbo.tblInvoiceDoc.strInvDocID = INV.strSource
									), '')
					WHEN INV.intModule = 1
						OR INV.intModule = 7
						THEN ISNULL((
									SELECT TOP 1 tblInvoiceDocP.strVendName
									FROM dbo.tblInvoiceDocP
									WHERE dbo.tblInvoiceDocP.strInvPDocID = INV.strSource
									), '')
					END strCustVend
			FROM tblInvTracking INV
			INNER JOIN tblInvTrackingDT ON INV.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			INNER JOIN tblInvExt ON tblInvTrackingDT.strPartNumber = tblInvExt.strPartNumber
				AND tblInvTrackingDT.strLocName = tblInvExt.strLocName
			INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
			INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
			WHERE (tblInvTrackingDT.strPartNumber = @ItemList)
				AND (
					INV.dteJournalDate BETWEEN @SQStart
						AND @SQFinish
					)
				AND INV.lngInvTrackID IN (
					SELECT Max(INV2.lngInvTrackID) AS lngInvTrackID
					FROM tblInvTracking AS INV2
					WHERE (
							INV2.dteJournalDate BETWEEN @SQStart
								AND @SQFinish
							)
					GROUP BY (
							CASE 
								WHEN INV2.strComment LIKE 'GRV Conversion %'
									OR INV2.strComment LIKE 'Delivery Advice Conversion %'
									OR INV2.strComment LIKE 'Internal Issue Conversion %'
									THEN strComment
								ELSE CASE 
										WHEN INV2.strSource LIKE 'Stock Count%' OR INV2.intModule = 6
											THEN INV2.strSource + CAST(INV2.lngInvTrackID AS NVARCHAR)
										ELSE INV2.strSource
										END
								END
							)
					)
				AND (CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc) = @SQOrderbyCol
			GROUP BY INV.dteJournalDate
				,INV.strSource
				,INV.lngJourID
				,INV.lngInvTrackID
				,INV.intModule
			ORDER BY INV.dteJournalDate
				,INV.lngJourID
				,INV.lngInvTrackID
		END
	END
	ELSE
	BEGIN
		IF (@IsOptSortChrono = 1)
		BEGIN
			SELECT INV.dteJournalDate
				,(
					CASE 
						WHEN INV.strSource = 'Stock Count'
							THEN (
									CASE 
										WHEN (
												SELECT COUNT(strAdjDocID)
												FROM tblInvAdjDoc
												WHERE INV.lngJourID = tblInvAdjDoc.lngJourID
													AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
												) = 0
											THEN INV.strSource
										ELSE (
												SELECT ISNULL(CONCAT (
															'SC/'
															,strAdjDocID
															), INV.strSource)
												FROM tblInvAdjDoc
												WHERE INV.lngJourID = tblInvAdjDoc.lngJourID
													AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
												)
										END
									)
						ELSE INV.strSource
						END
					) AS strSource
				,INV.lngJourID
				,SUM(tblInvTrackingDT.decQty) AS Expr1
				,SUM(tblInvTrackingDT.decValue) AS decValue
				,SUM(dbo.tblInvTrackingDT.decRevenue) SellingPrice
				,CASE 
					WHEN INV.intModule = 2
						OR INV.intModule = 8
						THEN ISNULL((
									SELECT TOP 1 tblInvoiceDoc.strCustName
									FROM dbo.tblInvoiceDoc
									WHERE dbo.tblInvoiceDoc.strInvDocID = INV.strSource
									), '')
					WHEN INV.intModule = 1
						OR INV.intModule = 7
						THEN ISNULL((
									SELECT TOP 1 tblInvoiceDocP.strVendName
									FROM dbo.tblInvoiceDocP
									WHERE dbo.tblInvoiceDocP.strInvPDocID = INV.strSource
									), '')
					END strCustVend
			FROM tblInvTracking INV
			INNER JOIN tblInvTrackingDT ON INV.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			WHERE (tblInvTrackingDT.strPartNumber = @ItemList)
				AND (
					INV.dteJournalDate BETWEEN @SQStart
						AND @SQFinish
					)
				--AND INV.lngInvTrackID IN (
				--	SELECT Max(INV2.lngInvTrackID) AS lngInvTrackID
				--	FROM tblInvTracking AS INV2
				--	WHERE (
				--			INV2.dteJournalDate BETWEEN @SQStart
				--				AND @SQFinish
				--			)
				--	GROUP BY (
				--			CASE 
				--				WHEN INV2.strComment LIKE 'GRV Conversion %'
				--					OR INV2.strComment LIKE 'Delivery Advice Conversion %'
				--					THEN strComment
				--				ELSE CASE 
				--						WHEN INV2.strSource LIKE 'Stock Count%' OR INV2.intModule = 6
				--							THEN INV2.strSource + CAST(INV2.lngInvTrackID AS NVARCHAR)
				--						ELSE INV2.strSource
				--						END
				--				END
				--			)
				--	)
			GROUP BY INV.dteJournalDate
				,INV.strSource
				,INV.lngJourID
				,INV.lngInvTrackID
				,INV.intModule
			ORDER BY INV.lngInvTrackID
				,INV.dteJournalDate
				,INV.lngJourID
		END
		ELSE IF (@IsOptSortJDate = 1)
		BEGIN
			SELECT INV.dteJournalDate
				,(
					CASE 
						WHEN INV.strSource = 'Stock Count'
							THEN (
									CASE 
										WHEN (
												SELECT COUNT(strAdjDocID)
												FROM tblInvAdjDoc
												WHERE INV.lngJourID = tblInvAdjDoc.lngJourID
													AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
												) = 0
											THEN INV.strSource
										ELSE (
												SELECT ISNULL(CONCAT (
															'SC/'
															,strAdjDocID
															), INV.strSource)
												FROM tblInvAdjDoc
												WHERE INV.lngJourID = tblInvAdjDoc.lngJourID
													AND INV.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
												)
										END
									)
						ELSE INV.strSource
						END
					) AS strSource
				,INV.lngJourID
				,SUM(tblInvTrackingDT.decQty) AS Expr1
				,SUM(tblInvTrackingDT.decValue) AS decValue
				,SUM(dbo.tblInvTrackingDT.decRevenue) SellingPrice
				,CASE 
					WHEN INV.intModule = 2
						OR INV.intModule = 8
						THEN ISNULL((
									SELECT TOP 1 tblInvoiceDoc.strCustName
									FROM dbo.tblInvoiceDoc
									WHERE dbo.tblInvoiceDoc.strInvDocID = INV.strSource
									), '')
					WHEN INV.intModule = 1
						OR INV.intModule = 7
						THEN ISNULL((
									SELECT TOP 1 tblInvoiceDocP.strVendName
									FROM dbo.tblInvoiceDocP
									WHERE dbo.tblInvoiceDocP.strInvPDocID = INV.strSource
									), '')
					END strCustVend
			FROM tblInvTracking INV
			INNER JOIN tblInvTrackingDT ON INV.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
			WHERE (tblInvTrackingDT.strPartNumber = @ItemList)
				AND (
					INV.dteJournalDate BETWEEN @SQStart
						AND @SQFinish
					)
				--AND INV.lngInvTrackID IN (
				--	SELECT Max(INV2.lngInvTrackID) AS lngInvTrackID
				--	FROM tblInvTracking AS INV2
				--	WHERE (
				--			INV2.dteJournalDate BETWEEN @SQStart
				--				AND @SQFinish
				--			)
				--	GROUP BY (
				--			CASE 
				--				WHEN INV2.strComment LIKE 'GRV Conversion %'
				--					OR INV2.strComment LIKE 'Delivery Advice Conversion %'
				--					THEN strComment
				--				ELSE CASE 
				--						WHEN INV2.strSource LIKE 'Stock Count%' OR INV2.intModule = 6
				--							THEN INV2.strSource + CAST(INV2.lngInvTrackID AS NVARCHAR)
				--						ELSE INV2.strSource
				--						END
				--				END
				--			)
				--	)
			GROUP BY INV.dteJournalDate
				,INV.strSource
				,INV.lngJourID
				,INV.lngInvTrackID
				,INV.intModule
			ORDER BY INV.dteJournalDate
				,INV.lngJourID
				,INV.lngInvTrackID
		END
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvGetQtyLocSetup] (
	@SearchText NVARCHAR(max)
	,@IsInactive BIT
	,@Filter INT
	,@IsBPToolMode BIT
	,@UserName NVARCHAR(100)
	,@IsSortDescription BIT
	)
AS
BEGIN
	IF (@Filter = 0) --Assets        
	BEGIN
		SELECT intGLNumber AS 'Code'
			,strDesc AS 'Description'
		FROM tblAccounts
		WHERE (
				intAccType = 1
				AND bitInventory = 1
				)
			AND (
				bitInactive = CASE 
					WHEN @IsInactive = 0
						THEN 0
					ELSE bitInactive
					END
				)
			AND (
				intGLNumber NOT IN (
					SELECT DISTINCT intGLAsset
					FROM tblAccountSets
					WHERE blnBuyout = 1
					)
				)
			AND (
				(
					LEN(@SearchText) > 3
					AND (
						intGLNumber LIKE '%'+@SearchText + '%'
						OR strDesc LIKE '%'+@SearchText + '%'
						)
					)
				OR (
					LEN(@SearchText) <= 3
					AND (
						intGLNumber LIKE '%'
						OR strDesc LIKE '%'
						)
					)
				)
		ORDER BY intGLNumber
	END
	ELSE IF (@Filter = 1) --Category        
	BEGIN
		IF (@IsBPToolMode = 0)
		BEGIN
			SELECT strCategory AS 'Code'
				,strDesc AS 'Description'
			FROM tblInvCat
			WHERE (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 3
						AND (
							strCategory LIKE '%'+@SearchText + '%'
							OR strDesc LIKE '%'+@SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 3
						AND (
							strCategory LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					strCategory IN (
						SELECT tblInvCat.strCategory
						FROM tblInvCat
						LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
						WHERE ISNULL((
									SELECT COUNT(tblInvCatSec.strCategory)
									FROM tblInvCatSec
									WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblInvCatSec.strCategory)
										FROM tblInvCatSec
										WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
										), 0) > 0
								AND tblInvCatSec.strUserName = @UserName
								)
						)
					)
			ORDER BY strCategory
		END
		ELSE
		BEGIN
			SELECT strCategory AS 'Code'
				,strDesc AS 'Description'
			FROM tblInvCat
			WHERE (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 3
						AND (
							strCategory LIKE '%'+@SearchText + '%'
							OR strDesc LIKE '%'+@SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 3
						AND (
							strCategory LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY strCategory
		END
	END
	ELSE IF (@Filter = 2) --AccountSets        
	BEGIN
		SELECT strAcctSet AS 'Code'
			,strDesc AS 'Description'
		FROM tblAccountSets
		WHERE (
				blnService = 0
				AND blnInactive = CASE 
					WHEN @IsInactive = 0
						THEN 0
					ELSE blnInactive
					END
				)
			AND (
				(
					LEN(@SearchText) > 3
					AND (
						strAcctSet LIKE '%'+@SearchText + '%'
						OR strDesc LIKE '%'+@SearchText + '%'
						)
					)
				OR (
					LEN(@SearchText) <= 3
					AND (
						strAcctSet LIKE '%'
						OR strDesc LIKE '%'
						)
					)
				)
		ORDER BY strAcctSet
	END
	ELSE IF (@Filter = 3) --Items        
	BEGIN
		IF (@IsBPToolMode = 0)
		BEGIN
			SELECT strPartNumber AS 'Code'
				,strDesc AS 'Description'
				,intType AS 'Type'
			FROM tblInv
			WHERE (intType = 1)
				AND (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 3
						AND (
							strPartNumber LIKE '%'+ @SearchText + '%'
							OR strDesc LIKE '%'+@SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 3
						AND (
							strPartNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					strCategory IN (
						SELECT tblInvCat.strCategory
						FROM tblInvCat
						LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
						WHERE ISNULL((
									SELECT COUNT(tblInvCatSec.strCategory)
									FROM tblInvCatSec
									WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblInvCatSec.strCategory)
										FROM tblInvCatSec
										WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
										), 0) > 0
								AND tblInvCatSec.strUserName = @UserName
								)
						)
					)
			ORDER BY CASE 
					WHEN @IsSortDescription = 0
						THEN strPartNumber
					END
				,CASE 
					WHEN @IsSortDescription = 1
						THEN strDesc
					END
		END
		ELSE
		BEGIN
			SELECT strPartNumber AS 'Code'
				,strDesc AS 'Description'
				,intType AS 'Type'
			FROM tblInv
			WHERE (intType = 1)
				AND (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 3
						AND (
							strPartNumber LIKE '%'+ @SearchText + '%'
							OR strDesc LIKE '%'+@SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 3
						AND (
							strPartNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY CASE 
					WHEN @IsSortDescription = 0
						THEN strPartNumber
					END
				,CASE 
					WHEN @IsSortDescription = 1
						THEN strDesc
					END
		END
	END
	ELSE IF (@Filter = 4) --Service        
	BEGIN
		IF (@IsBPToolMode = 0)
		BEGIN
			SELECT strPartNumber AS 'Code'
				,strDesc AS 'Description'
				,intType AS 'Type'
			FROM tblInv
			WHERE (intType = 4)
				AND (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 3
						AND (
							strPartNumber LIKE '%'+@SearchText + '%'
							OR strDesc LIKE '%'+@SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 3
						AND (
							strPartNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					strCategory IN (
						SELECT tblInvCat.strCategory
						FROM tblInvCat
						LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
						WHERE ISNULL((
									SELECT COUNT(tblInvCatSec.strCategory)
									FROM tblInvCatSec
									WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblInvCatSec.strCategory)
										FROM tblInvCatSec
										WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
										), 0) > 0
								AND tblInvCatSec.strUserName = @UserName
								)
						)
					)
			ORDER BY CASE 
					WHEN @IsSortDescription = 0
						THEN strPartNumber
					END
				,CASE 
					WHEN @IsSortDescription = 1
						THEN strDesc
					END
		END
		ELSE
		BEGIN
			SELECT strPartNumber AS 'Code'
				,strDesc AS 'Description'
				,intType AS 'Type'
			FROM tblInv
			WHERE (intType = 4)
				AND (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 3
						AND (
							strPartNumber LIKE '%'+@SearchText + '%'
							OR strDesc LIKE '%'+@SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 3
						AND (
							strPartNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY CASE 
					WHEN @IsSortDescription = 0
						THEN strPartNumber
					END
				,CASE 
					WHEN @IsSortDescription = 1
						THEN strDesc
					END
		END
	END
	ELSE IF (@Filter = 5) --Buyout        
	BEGIN
		IF (@IsBPToolMode = 0)
		BEGIN
			SELECT strPartNumber AS 'Code'
				,strDesc AS 'Description'
				,intType AS 'Type'
			FROM tblInv
			WHERE (intType = 11)
				AND (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 3
						AND (
							strPartNumber LIKE '%'+@SearchText + '%'
							OR strDesc LIKE '%'+@SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 3
						AND (
							strPartNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					strCategory IN (
						SELECT tblInvCat.strCategory
						FROM tblInvCat
						LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
						WHERE ISNULL((
									SELECT COUNT(tblInvCatSec.strCategory)
									FROM tblInvCatSec
									WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblInvCatSec.strCategory)
										FROM tblInvCatSec
										WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
										), 0) > 0
								AND tblInvCatSec.strUserName = @UserName
								)
						)
					)
			ORDER BY CASE 
					WHEN @IsSortDescription = 0
						THEN strPartNumber
					END
				,CASE 
					WHEN @IsSortDescription = 1
						THEN strDesc
					END
		END
		ELSE
		BEGIN
			SELECT strPartNumber AS 'Code'
				,strDesc AS 'Description'
				,intType AS 'Type'
			FROM tblInv
			WHERE (intType = 11)
				AND (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 3
						AND (
							strPartNumber LIKE '%'+@SearchText + '%'
							OR strDesc LIKE '%'+@SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 3
						AND (
							strPartNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY CASE 
					WHEN @IsSortDescription = 0
						THEN strPartNumber
					END
				,CASE 
					WHEN @IsSortDescription = 1
						THEN strDesc
					END
		END
	END
	ELSE IF (@Filter = 6) --All        
	BEGIN
		IF (@IsBPToolMode = 0)
		BEGIN
			SELECT strPartNumber AS 'Code'
				,strDesc AS 'Description'
				,intType AS 'Type'
			FROM tblInv
			WHERE (intType <> 5)
				AND (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 3
						AND (
							strPartNumber LIKE '%'+@SearchText + '%'
							OR strDesc LIKE '%'+@SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 3
						AND (
							strPartNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					strCategory IN (
						SELECT tblInvCat.strCategory
						FROM tblInvCat
						LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
						WHERE ISNULL((
									SELECT COUNT(tblInvCatSec.strCategory)
									FROM tblInvCatSec
									WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblInvCatSec.strCategory)
										FROM tblInvCatSec
										WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
										), 0) > 0
								AND tblInvCatSec.strUserName = @UserName
								)
						)
					)
			ORDER BY CASE 
					WHEN @IsSortDescription = 0
						THEN strPartNumber
					END
				,CASE 
					WHEN @IsSortDescription = 1
						THEN strDesc
					END
		END
		ELSE
		BEGIN
			SELECT strPartNumber AS 'Code'
				,strDesc AS 'Description'
				,intType AS 'Type'
			FROM tblInv
			WHERE (intType <> 5)
				AND (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND (
					(
						LEN(@SearchText) > 3
						AND (
							strPartNumber LIKE '%'+@SearchText + '%'
							OR strDesc LIKE '%'+@SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 3
						AND (
							strPartNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY CASE 
					WHEN @IsSortDescription = 0
						THEN strPartNumber
					END
				,CASE 
					WHEN @IsSortDescription = 1
						THEN strDesc
					END
		END
	END
	ELSE IF (@Filter = 7) -- MAnufacturedItems    
	BEGIN
		IF (@IsBPToolMode = 0)
		BEGIN
			SELECT strPartNumber AS 'Code'
				,strDesc AS 'Description'
				,intType AS 'Type'
			FROM tblInv
			WHERE tblInv.intType = 1
				AND tblInv.bitUseBOM = 1
				AND (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND tblInv.bitOtherCmp = 0
				AND (
					(
						LEN(@SearchText) > 3
						AND (
							strPartNumber LIKE '%'+@SearchText + '%'
							OR strDesc LIKE '%'+@SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 3
						AND (
							strPartNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
				AND (
					strCategory IN (
						SELECT tblInvCat.strCategory
						FROM tblInvCat
						LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
						WHERE ISNULL((
									SELECT COUNT(tblInvCatSec.strCategory)
									FROM tblInvCatSec
									WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblInvCatSec.strCategory)
										FROM tblInvCatSec
										WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
										), 0) > 0
								AND tblInvCatSec.strUserName = @UserName
								)
						)
					)
			ORDER BY CASE 
					WHEN @IsSortDescription = 0
						THEN strPartNumber
					END
				,CASE 
					WHEN @IsSortDescription = 1
						THEN strDesc
					END
		END
		ELSE
		BEGIN
			SELECT strPartNumber AS 'Code'
				,strDesc AS 'Description'
				,intType AS 'Type'
			FROM tblInv
			WHERE tblInv.intType = 1
				AND tblInv.bitUseBOM = 1
				AND (
					bitInactive = CASE 
						WHEN @IsInactive = 0
							THEN 0
						ELSE bitInactive
						END
					)
				AND tblInv.bitOtherCmp = 0
				AND (
					(
						LEN(@SearchText) > 3
						AND (
							strPartNumber LIKE '%'+@SearchText + '%'
							OR strDesc LIKE '%'+@SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 3
						AND (
							strPartNumber LIKE '%'
							OR strDesc LIKE '%'
							)
						)
					)
			ORDER BY CASE 
					WHEN @IsSortDescription = 0
						THEN strPartNumber
					END
				,CASE 
					WHEN @IsSortDescription = 1
						THEN strDesc
					END
		END
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GeRptInvQtyLocReportData]        
(        
@ItemList nvarchar(max),        
@Filter int,        
@IsActive bit,   
@chkToOrder bit,       
@IsInActive bit,    
@SQLoc nvarchar(max),  
@SortDescription bit        
)        
AS        
BEGIN        
IF(@Filter = 0) --Assets        
BEGIN        
IF(@chkToOrder = 1)  
BEGIN  
SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decOnHand, tblInvExt.intReorderPoint, tblInvExt.decOnOrder, tblInvExt.decAlloc, tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder) AS ToOrder, CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol, tblInvExt.decManuf AS decManufacture,tblInvExt.decMinimumLevel,Inv.decEconomicOrderQty,Inv.decMinimumOrderQuantity,tblInvExt.decMaxLevel,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder
	,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit FROM fnTblInvForLocJoin() tblInv inner join tblInv Inv on tblInv.strPartNumber=Inv.strPartNumber INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocname = tblInvExt.strLocName WHERE (tblInv.intType = 1) AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel) and  ( tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ','))) AND (tblInvExt.strLocName = @SQLoc)      and (tblInv.bitInactive = CASE WHEN @Isactive = 1 THEN 0 ELSE tblInv.bitInactive END)     and (tblInv.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE tblInv.bitInactive END)      
ORDER BY OrderbyCol,tblInv.strPartNumber,tblInv.strDesc  
END  
ELSE  
BEGIN  
SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decOnHand, tblInvExt.intReorderPoint, tblInvExt.decOnOrder, tblInvExt.decAlloc, tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder) AS ToOrder, CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol, tblInvExt.decManuf AS decManufacture,tblInvExt.decMinimumLevel,Inv.decEconomicOrderQty,Inv.decMinimumOrderQuantity,tblInvExt.decMaxLevel,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder
	,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit FROM fnTblInvForLocJoin() tblInv inner join tblInv Inv on tblInv.strPartNumber=Inv.strPartNumber INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocname = tblInvExt.strLocName WHERE (tblInv.intType = 1) and ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0) AND   ( tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ','))) AND (tblInvExt.strLocName = @SQLoc)      and (tblInv.bitInactive = CASE WHEN @Isactive = 1 THEN 0 ELSE tblInv.bitInactive END)     and (tblInv.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE tblInv.bitInactive END)      
ORDER BY OrderbyCol,tblInv.strPartNumber,tblInv.strDesc  
END  
END        
ELSE IF(@Filter = 1) --Category        
BEGIN        
IF(@chkToOrder = 1)  
BEGIN  
SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decOnHand, tblInvExt.intReorderPoint, tblInvExt.decOnOrder, tblInvExt.decAlloc, tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder) AS ToOrder, tblInv.strCategory AS OrderbyCol, tblInvExt.decManuf AS decManufacture,tblInvExt.decMinimumLevel,tblInv.decEconomicOrderQty,tblInv.decMinimumOrderQuantity,tblInvExt.decMaxLevel ,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder
	,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel) AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ','))) AND (tblInvExt.strLocName = @SQLoc)      and (tblInv.bitInactive = CASE WHEN @Isactive = 1 THEN 0 ELSE tblInv.bitInactive END)     and (tblInv.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE tblInv.bitInactive END)      
ORDER BY OrderbyCol,tblInv.strPartNumber,tblInv.strDesc  
END  
ELSE  
BEGIN  
SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decOnHand, tblInvExt.intReorderPoint, tblInvExt.decOnOrder, tblInvExt.decAlloc, tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder) AS ToOrder, tblInv.strCategory AS OrderbyCol, tblInvExt.decManuf AS decManufacture,tblInvExt.decMinimumLevel,tblInv.decEconomicOrderQty,tblInv.decMinimumOrderQuantity,tblInvExt.decMaxLevel,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder
	,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0) AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ','))) AND (tblInvExt.strLocName = @SQLoc)     and (tblInv.bitInactive = CASE WHEN @Isactive = 1 THEN 0 ELSE tblInv.bitInactive END)     and (tblInv.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE tblInv.bitInactive END)      
ORDER BY OrderbyCol,tblInv.strPartNumber,tblInv.strDesc    
END  
END        
ELSE IF(@Filter = 2) --AccountSets        
BEGIN        
IF(@chkToOrder = 1)  
BEGIN  
SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decOnHand, tblInvExt.intReorderPoint, tblInvExt.decOnOrder, tblInvExt.decAlloc, tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder) AS ToOrder, tblInv.strAcctSet AS OrderbyCol, tblInvExt.decManuf AS decManufacture,tblInvExt.decMinimumLevel,Inv.decEconomicOrderQty,Inv.decMinimumOrderQuantity,tblInvExt.decMaxLevel,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder
	,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit FROM fnTblInvForLocJoin() tblInv inner join tblInv Inv on tblInv.strPartNumber=Inv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocName WHERE (tblInv.intType = 1) AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel) AND  ( tblInv.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ','))) AND (tblInvExt.strLocName = @SQLoc)      and (tblInv.bitInactive = CASE WHEN @Isactive = 1 THEN 0 ELSE tblInv.bitInactive END)     and (tblInv.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE tblInv.bitInactive END)     
ORDER BY OrderbyCol,tblInv.strPartNumber,tblInv.strDesc  
END  
ELSE  
BEGIN  
SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decOnHand, tblInvExt.intReorderPoint, tblInvExt.decOnOrder, tblInvExt.decAlloc, tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder) AS ToOrder, tblInv.strAcctSet AS OrderbyCol, tblInvExt.decManuf AS decManufacture,tblInvExt.decMinimumLevel,Inv.decEconomicOrderQty,Inv.decMinimumOrderQuantity,tblInvExt.decMaxLevel,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder
	,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit FROM fnTblInvForLocJoin() tblInv inner join tblInv Inv on tblInv.strPartNumber=Inv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocName WHERE (tblInv.intType = 1)  and ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0)  AND  ( tblInv.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ','))) AND (tblInvExt.strLocName = @SQLoc)      and (tblInv.bitInactive = CASE WHEN @Isactive = 1 THEN 0 ELSE tblInv.bitInactive END)     and (tblInv.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE tblInv.bitInactive END)      
ORDER BY OrderbyCol,tblInv.strPartNumber,tblInv.strDesc  
END  
END        
ELSE IF(@Filter = 3) --Items        
BEGIN        
IF(@chkToOrder = 1)  
BEGIN  
SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decOnHand, tblInvExt.intReorderPoint, tblInvExt.decOnOrder, tblInvExt.decAlloc, tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder) AS ToOrder, '' AS OrderbyCol, tblInvExt.decManuf AS decManufacture,tblInvExt.decMinimumLevel,tblInv.decEconomicOrderQty,tblInv.decMinimumOrderQuantity,tblInvExt.decMaxLevel,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder
	,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel) AND  ( tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ','))) AND (tblInvExt.strLocName = @SQLoc)      and (tblInv.bitInactive = CASE WHEN @Isactive = 1 THEN 0 ELSE tblInv.bitInactive END)     and (tblInv.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE tblInv.bitInactive END)   
ORDER BY OrderbyCol,tblInv.strPartNumber,tblInv.strDesc  
END  
ELSE  
BEGIN  
SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decOnHand, tblInvExt.intReorderPoint, tblInvExt.decOnOrder, tblInvExt.decAlloc, tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder) AS ToOrder, '' AS OrderbyCol, tblInvExt.decManuf AS decManufacture,tblInvExt.decMinimumLevel,tblInv.decEconomicOrderQty,tblInv.decMinimumOrderQuantity,tblInvExt.decMaxLevel,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder
	,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit FROM tblInv INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0) AND  ( tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ','))) AND (tblInvExt.strLocName = @SQLoc)     and (tblInv.bitInactive = CASE WHEN @Isactive = 1 THEN 0 ELSE tblInv.bitInactive END)     and (tblInv.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE tblInv.bitInactive END)      
ORDER BY OrderbyCol,tblInv.strPartNumber,tblInv.strDesc  
END  
END        
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptInvSynBinGetLocationData] 
(
@SQUserName NVARCHAR(MAX)
)
AS   
BEGIN   
SELECT tblInvLoc.strLocName,   ISNULL((SELECT COUNT(tblInvLocSec.strLocName) 
FROM tblInvLocSec WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName),0), ISNULL(tblInvLocSec.strUserName,'')  
FROM tblInvLoc 
LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName AND tblInvLocSec.strUserName = ''+@SQUserName+'' 
WHERE tblInvLoc.intType = 0 ORDER BY tblInvLoc.strLocName END 
GO

----------------------------------------------------
Create PROCEDURE [dbo].[GetRptInvQtyMRPSumtblManufacturedItemsReportData]          
AS         
BEGIN  
SELECT tblInvBOM.strPartNumber, tblInvBOM.strPartItemNumber, tblInv.decSumAlloc,  
((tblInv.decSumOnHand + tblInv.decSumOnOrder) - (tblInv.intReorderQty + tblInv.decSumAlloc + tblInv.decSumManuf)) * -1 As ToOrder,  
tblInvBOM.intQtyToUse, tblInv.intBOMQty   
FROM tblInvBOM  
INNER JOIN tblInv ON tblInv.strPartNumber = tblInvBOM.strPartNumber   
END
Go

----------------------------------------------------
create PROCEDURE [dbo].[GetSaleslistpartnumber] (
	@SQdate DATETIME
	,@PartNumber NVARCHAR(50)
	)
AS
BEGIN
	SELECT tblOrderDocDT.strPartNumber
		,SUM(tblOrderDocDT.decStockQtyRemain) AS StockQtyRemain
	FROM tblOrderDoc
	INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
	WHERE intDocType = 1
		AND bitCleared = 0
		AND tblOrderDocDT.strPartNumber= @PartNumber
			
		AND tblOrderDoc.dteRequired > @SQdate
	GROUP BY tblOrderDocDT.strPartNumber
END
GO

----------------------------------------------------
Create PROCEDURE [dbo].[GetPurchaselistpartnumber] (
	@SQdate DATETIME
	,@PartNumber NVARCHAR(50)
	)
AS
BEGIN
	SELECT tblOrderDocPDT.strPartNumber
		,SUM(tblOrderDocPDT.decStockQtyRemain) AS StockQtyRemain
	FROM tblOrderDocP
	INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
	WHERE intDocType = 1
		AND bitCleared = 0
		AND tblOrderDocPDT.strPartNumber = @PartNumber	
		AND tblOrderDocP.dteRequired > @SQdate
	GROUP BY tblOrderDocPDT.strPartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptInvQtyReportData] (  
 @ItemList NVARCHAR(max)  
 ,@Filter INT  
 ,@IsActive BIT  
 ,@IsInActive BIT  
 ,@chkToOrder BIT  
 ,@chkPreferredVendor BIT  
 ,@chkOpenSO BIT  
 ,@SortDescription BIT  
 )  
AS  
BEGIN  
 DECLARE @Query NVARCHAR(max);  
  
 IF (@Filter = 0) --Assets              
 BEGIN  
  IF (@chkPreferredVendor = 1)  
  BEGIN  
   IF (@SortDescription = 0)  
   BEGIN  
    SELECT tblInv.strPartNumber  
     ,tblInv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) ToOrder  
     ,ISNULL(tblInvVend.strVendName, '') AS strVendName  
     ,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc  
     ,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol  
     ,tblInvExt.decManuf  
     ,Sum(tblInvExt.decMaxLevel) AS MaxLevel  
     ,tblInv.decMinimumOrderQuantity AS MinQty  
     ,tblInv.decEconomicOrderQty AS EconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity  
     ,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel  
     ,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder  
	 ,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit  
    FROM tblInvExt  
    LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber  
    INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet  
    INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber  
    LEFT OUTER JOIN tblInvVend ON tblInvVend.strPartNumber = tblInv.strPartNumber  
     AND tblInvVend.bitPreferred = 1  
    LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = tblInvVend.strVendName  
    WHERE (tblInv.intType = 1)  
     AND (  
      (  
       (@chkToOrder = 1)  
       AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel)  
       AND (  
        tblAccounts.intGLNumber IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      OR (  
       (@chkToOrder = 0)  
       AND ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0)  
       AND (  
        tblAccounts.intGLNumber IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      )  
     AND tblInv.bitInactive = CASE   
      WHEN @IsInactive = 1  
       THEN 1  
      WHEN @IsActive = 1  
       THEN 0  
      END  
     AND (  
      @chkOpenSO <> 1  
      OR (  
       @chkOpenSO = 1  
       AND tblInv.decSumAlloc > 0  
       )  
      )  
    GROUP BY tblInv.strPartNumber  
     ,tblinv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.strAcctSet  
     ,tblInv.decEconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity  
     ,tblAccounts.intGLNumber  
     ,tblAccounts.strDesc  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,tblInvExt.decManuf  
     ,tblInvVend.strVendName  
     ,tblVendors.strVendDesc  
     ,tblInvExt.strPartNumber  
	 ,tblInv.strCategory
    ORDER BY OrderbyCol  
     ,strVendName  
     ,tblInv.strPartNumber  
     ,tblInvExt.strLocName  
   END  
   ELSE  
   BEGIN  
    SELECT tblInv.strPartNumber  
     ,tblInv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) ToOrder  
     ,ISNULL(tblInvVend.strVendName, '') AS strVendName  
     ,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc  
     ,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol  
     ,tblInvExt.decManuf  
     ,Sum(tblInvExt.decMaxLevel) AS MaxLevel  
     ,tblInv.decMinimumOrderQuantity AS MinQty  
     ,tblInv.decEconomicOrderQty AS EconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity  
     ,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel  
     ,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder  
	 ,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit  
    FROM tblInvExt  
    LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber  
    INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet  
    INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber  
    LEFT OUTER JOIN tblInvVend ON tblInvVend.strPartNumber = tblInv.strPartNumber  
     AND tblInvVend.bitPreferred = 1  
    LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = tblInvVend.strVendName  
    WHERE (tblInv.intType = 1)  
     AND (  
      (  
       (@chkToOrder = 1)  
       AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel)  
       AND (  
        tblAccounts.intGLNumber IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      OR (  
       (@chkToOrder = 0)  
       AND ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0)  
       AND (  
        tblAccounts.intGLNumber IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      )  
     AND tblInv.bitInactive = CASE   
      WHEN @IsInactive = 1  
       THEN 1  
      WHEN @IsActive = 1  
       THEN 0  
      END  
     AND (  
      @chkOpenSO <> 1  
      OR (  
       @chkOpenSO = 1  
       AND tblInv.decSumAlloc > 0  
       )  
      )  
    GROUP BY tblInv.strPartNumber  
     ,tblinv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.strAcctSet  
     ,tblInv.decEconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity  
     ,tblAccounts.intGLNumber  
     ,tblAccounts.strDesc  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,tblInvExt.decManuf  
     ,tblInvVend.strVendName  
     ,tblVendors.strVendDesc  
     ,tblInvExt.strPartNumber
	 ,tblInv.strCategory
    ORDER BY OrderbyCol  
     ,strVendName  
     ,tblInv.strDesc  
     ,tblInv.strPartNumber  
     ,tblInvExt.strLocName  
   END  
  END  
  ELSE  
  BEGIN  
   IF (@SortDescription = 0)  
   BEGIN  
    SELECT tblInv.strPartNumber  
     ,tblInv.strDesc  
     ,tblInvExt.strLocName  
     ,SUM(tblInvExt.decOnHand) AS decSumOnHand  
     ,SUM(tblInvExt.intReorderPoint) AS intReorderQty  
     ,SUM(tblInvExt.decOnOrder) AS decSumOnOrder  
     ,SUM(tblInvExt.decAlloc) AS decSumAlloc  
     ,SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) ToOrder  
     ,'' AS strVendName  
     ,''  
     ,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol  
     ,SUM(tblInvExt.decManuf) AS decSumManuf  
     ,Sum(tblInvExt.decMaxLevel) AS MaxLevel  
     ,tblInv.decMinimumOrderQuantity AS MinQty  
     ,tblInv.decEconomicOrderQty AS EconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity  
     ,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel  
     ,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder  
     ,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit  
    FROM tblInvExt  
    LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber  
    INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet  
    INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber  
    WHERE (tblInv.intType = 1)  
     AND (  
      (  
       (@chkToOrder = 1)  
       AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel)  
       AND (  
        tblAccounts.intGLNumber IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      OR (  
       (@chkToOrder = 0)  
       AND ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0)  
       AND (  
        tblAccounts.intGLNumber IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      )  
     AND tblInv.bitInactive = CASE   
      WHEN @IsInactive = 1  
       THEN 1  
      WHEN @IsActive = 1  
       THEN 0  
      END  
     AND (  
      @chkOpenSO <> 1  
      OR (  
       @chkOpenSO = 1  
       AND tblInv.decSumAlloc > 0  
       )  
      )  
    GROUP BY tblInv.strPartNumber  
     ,tblinv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.strAcctSet  
     ,tblInv.decEconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity  
     ,tblAccounts.intGLNumber  
     ,tblAccounts.strDesc  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,tblInvExt.decManuf  
     ,tblInvExt.strPartNumber  
	 ,tblInv.strCategory
    ORDER BY OrderbyCol  
     ,strVendName  
     ,tblInv.strPartNumber  
     ,tblInvExt.strLocName  
   END  
   ELSE  
   BEGIN  
    SELECT tblInv.strPartNumber  
     ,tblInv.strDesc  
     ,tblInvExt.strLocName  
     ,SUM(tblInvExt.decOnHand) AS decSumOnHand  
     ,SUM(tblInvExt.intReorderPoint) AS intReorderQty  
     ,SUM(tblInvExt.decOnOrder) AS decSumOnOrder  
     ,SUM(tblInvExt.decAlloc) AS decSumAlloc  
     ,SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) ToOrder  
     ,'' AS strVendName  
     ,''  
     ,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol  
     ,SUM(tblInvExt.decManuf) AS decSumManuf  
     ,Sum(tblInvExt.decMaxLevel) AS MaxLevel  
     ,tblInv.decMinimumOrderQuantity AS MinQty  
     ,tblInv.decEconomicOrderQty AS EconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity  
     ,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel  
     ,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder
	 ,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit  
    FROM tblInvExt  
    LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber  
    INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet  
    INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber  
    WHERE (tblInv.intType = 1)  
     AND (  
      (  
       (@chkToOrder = 1)  
       AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel)  
       AND (  
        tblAccounts.intGLNumber IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      OR (  
       (@chkToOrder = 0)  
       AND ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0)  
       AND (  
        tblAccounts.intGLNumber IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      )  
     AND tblInv.bitInactive = CASE   
      WHEN @IsInactive = 1  
       THEN 1  
      WHEN @IsActive = 1  
       THEN 0  
      END  
     AND (  
      @chkOpenSO <> 1  
      OR (  
       @chkOpenSO = 1  
       AND tblInv.decSumAlloc > 0  
       )  
      )  
    GROUP BY tblInv.strPartNumber  
     ,tblinv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.strAcctSet  
     ,tblInv.decEconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity  
     ,tblAccounts.intGLNumber  
     ,tblAccounts.strDesc  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,tblInvExt.decManuf  
     ,tblInvExt.strPartNumber
	 ,tblInv.strCategory
    ORDER BY OrderbyCol  
     ,strVendName  
     ,tblInv.strDesc  
     ,tblInv.strPartNumber  
     ,tblInvExt.strLocName  
   END  
  END  
 END  
 ELSE IF (@Filter = 1) --Category              
 BEGIN  
  IF (@chkPreferredVendor = 1)  
  BEGIN  
   IF (@SortDescription = 0)  
   BEGIN  
    SELECT tblInv.strPartNumber  
     ,tblInv.strDesc  
     ,tblInvExt.strLocName  
     ,SUM(tblInvExt.decOnHand) AS decSumOnHand  
     ,SUM(tblInvExt.intReorderPoint) intReorderQty  
     ,SUM(tblInvExt.decOnOrder) decSumOnOrder  
     ,SUM(tblInvExt.decAlloc) decSumAlloc  
     ,SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) ToOrder  
     ,ISNULL(tblInvVend.strVendName, '') AS strVendName  
     ,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc  
     ,tblInv.strCategory AS OrderbyCol  
     ,SUM(tblInvExt.decManuf) decSumManuf  
     ,Sum(tblInvExt.decMaxLevel) AS MaxLevel  
     ,tblInv.decMinimumOrderQuantity AS MinQty  
     ,tblInv.decEconomicOrderQty AS EconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity  
     ,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel  
     ,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder 
	 ,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit
    FROM tblInvExt  
    LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber  
    LEFT OUTER JOIN tblInvVend ON tblInvVend.strPartNumber = tblInv.strPartNumber  
     AND tblInvVend.bitPreferred = 1  
    LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = tblInvVend.strVendName  
    WHERE (tblInv.intType = 1)  
     AND (  
      (  
       (@chkToOrder = 1)  
       AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel)  
       AND (  
        tblInv.strCategory IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      OR (  
       (@chkToOrder = 0)  
       AND ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0)  
       AND (  
        tblInv.strCategory IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      )  
     AND tblInv.bitInactive = CASE   
      WHEN @IsInactive = 1  
       THEN 1  
      WHEN @IsActive = 1  
       THEN 0  
      END  
     AND (  
      @chkOpenSO <> 1  
      OR (  
       @chkOpenSO = 1  
       AND tblInv.decSumAlloc > 0  
       )  
      )  
    GROUP BY tblInv.strPartNumber  
     ,tblinv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.strAcctSet  
     ,tblInv.decEconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,tblInvExt.decManuf  
     ,tblInv.strCategory  
     ,tblInvVend.strVendName  
     ,tblVendors.strVendDesc  
     ,tblInvExt.strPartNumber
	 ,tblInv.strCategory
    ORDER BY OrderbyCol  
     ,strVendName  
     ,tblInv.strPartNumber  
     ,tblInvExt.strLocName  
   END  
   ELSE  
   BEGIN  
    SELECT tblInv.strPartNumber  
     ,tblInv.strDesc  
     ,tblInvExt.strLocName  
     ,SUM(tblInvExt.decOnHand) AS decSumOnHand  
     ,SUM(tblInvExt.intReorderPoint) intReorderQty  
     ,SUM(tblInvExt.decOnOrder) decSumOnOrder  
     ,SUM(tblInvExt.decAlloc) decSumAlloc  
     ,SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) ToOrder  
     ,ISNULL(tblInvVend.strVendName, '') AS strVendName  
     ,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc  
     ,tblInv.strCategory AS OrderbyCol  
     ,SUM(tblInvExt.decManuf) decSumManuf  
     ,Sum(tblInvExt.decMaxLevel) AS MaxLevel  
     ,tblInv.decMinimumOrderQuantity AS MinQty  
     ,tblInv.decEconomicOrderQty AS EconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity  
     ,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel  
     ,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder  
	 ,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit
    FROM tblInvExt  
    LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber  
    LEFT OUTER JOIN tblInvVend ON tblInvVend.strPartNumber = tblInv.strPartNumber  
     AND tblInvVend.bitPreferred = 1  
    LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = tblInvVend.strVendName  
    WHERE (tblInv.intType = 1)  
     AND (  
      (  
       (@chkToOrder = 1)  
       AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel)  
       AND (  
        tblInv.strCategory IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      OR (  
       (@chkToOrder = 0)  
       AND ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0)  
       AND (  
        tblInv.strCategory IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      )  
     AND tblInv.bitInactive = CASE   
      WHEN @IsInactive = 1  
       THEN 1  
      WHEN @IsActive = 1  
       THEN 0  
      END  
     AND (  
      @chkOpenSO <> 1  
      OR (  
       @chkOpenSO = 1  
       AND tblInv.decSumAlloc > 0  
       )  
      )  
    GROUP BY tblInv.strPartNumber  
     ,tblinv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.strAcctSet  
     ,tblInv.decEconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,tblInvExt.decManuf  
     ,tblInv.strCategory  
     ,tblInvVend.strVendName  
     ,tblVendors.strVendDesc  
     ,tblInvExt.strPartNumber  
	 ,tblInv.strCategory
    ORDER BY OrderbyCol  
     ,strVendName  
     ,tblInv.strDesc  
     ,tblInv.strPartNumber  
     ,tblInvExt.strLocName  
   END  
  END  
  ELSE  
  BEGIN  
   IF (@SortDescription = 0)  
   BEGIN  
    SELECT tblInv.strPartNumber  
     ,tblInv.strDesc  
     ,tblInvExt.strLocName  
     ,SUM(tblInvExt.decOnHand) AS decSumOnHand  
     ,SUM(tblInvExt.intReorderPoint) intReorderQty  
     ,SUM(tblInvExt.decOnOrder) decSumOnOrder  
     ,SUM(tblInvExt.decAlloc) decSumAlloc  
     ,SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) ToOrder  
     ,'' AS strVendName  
     ,''  
     ,'' AS OrderbyCol  
     ,SUM(tblInvExt.decManuf) decSumManuf  
     ,Sum(tblInvExt.decMaxLevel) AS MaxLevel  
     ,tblInv.decMinimumOrderQuantity AS MinQty  
     ,tblInv.decEconomicOrderQty AS EconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity  
     ,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel  
     ,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder  
	 ,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit
    FROM tblInvExt  
    LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber  
    WHERE (tblInv.intType = 1)  
     AND (  
      (  
       (@chkToOrder = 1)  
       AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel)  
       AND (  
        tblInv.strCategory IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      OR (  
       (@chkToOrder = 0)  
       AND ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0)  
       AND (  
        tblInv.strCategory IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      )  
     AND tblInv.bitInactive = CASE   
      WHEN @IsInactive = 1  
       THEN 1  
      WHEN @IsActive = 1  
       THEN 0  
      END  
     AND (  
      @chkOpenSO <> 1  
      OR (  
       @chkOpenSO = 1  
       AND tblInv.decSumAlloc > 0  
       )  
      )  
    GROUP BY tblInv.strPartNumber  
     ,tblinv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.strAcctSet  
     ,tblInv.decEconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,tblInvExt.decManuf  
     ,tblInvExt.strPartNumber  
     ,tblInv.strCategory  
    ORDER BY OrderbyCol  
     ,strVendName  
     ,tblInv.strPartNumber  
     ,tblInvExt.strLocName  
   END  
   ELSE  
   BEGIN  
    SELECT tblInv.strPartNumber  
     ,tblInv.strDesc  
     ,tblInvExt.strLocName  
     ,SUM(tblInvExt.decOnHand) AS decSumOnHand  
     ,SUM(tblInvExt.intReorderPoint) intReorderQty  
     ,SUM(tblInvExt.decOnOrder) decSumOnOrder  
     ,SUM(tblInvExt.decAlloc) decSumAlloc  
     ,SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) ToOrder  
     ,'' AS strVendName  
     ,''  
     ,'' AS OrderbyCol  
     ,SUM(tblInvExt.decManuf) decSumManuf  
     ,Sum(tblInvExt.decMaxLevel) AS MaxLevel  
     ,tblInv.decMinimumOrderQuantity AS MinQty  
     ,tblInv.decEconomicOrderQty AS EconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity  
     ,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel  
     ,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder  
	 ,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit
    FROM tblInvExt  
    LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber  
    WHERE (tblInv.intType = 1)  
     AND (  
      (  
       (@chkToOrder = 1)  
       AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel)  
       AND (  
        tblInv.strCategory IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      OR (  
       (@chkToOrder = 0)  
       AND ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0)  
       AND (  
        tblInv.strCategory IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      )  
     AND tblInv.bitInactive = CASE   
      WHEN @IsInactive = 1  
       THEN 1  
      WHEN @IsActive = 1  
       THEN 0  
      END  
    GROUP BY tblInv.strPartNumber  
     ,tblinv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.strAcctSet  
     ,tblInv.decEconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,tblInvExt.decManuf  
     ,tblInvExt.strPartNumber  
     ,tblInv.strCategory  
    ORDER BY OrderbyCol  
     ,strVendName  
     ,tblInv.strDesc  
     ,tblInv.strPartNumber  
     ,tblInvExt.strLocName  
   END  
  END  
 END  
 ELSE IF (@Filter = 2) --AccountSets              
 BEGIN  
  IF (@chkPreferredVendor = 1)  
  BEGIN  
   IF (@SortDescription = 0)  
   BEGIN  
    SELECT tblInv.strPartNumber  
     ,tblInv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) AS ToOrder  
     ,ISNULL(tblInvVend.strVendName, '') AS strVendName  
     ,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc  
     ,tblInvExt.strAcctSet AS OrderbyCol  
     ,tblInvExt.decManuf  
     ,Sum(tblInvExt.decMaxLevel) AS MaxLevel  
     ,tblInv.decMinimumOrderQuantity AS MinQty  
     ,tblInv.decEconomicOrderQty AS EconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity  
     ,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel  
     ,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder
     ,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit  	 
    FROM tblInvExt  
    LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber  
    LEFT OUTER JOIN tblInvVend ON tblInvVend.strPartNumber = tblInv.strPartNumber  
     AND tblInvVend.bitPreferred = 1  
    LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = tblInvVend.strVendName  
    WHERE (tblInv.intType = 1)  
     AND (  
      (  
       (@chkToOrder = 1)  
       AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel)  
       AND (  
        tblInvExt.strAcctSet IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      OR (  
       (@chkToOrder = 0)  
       AND ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0)  
       AND (  
        tblInvExt.strAcctSet IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      )  
     AND tblInv.bitInactive = CASE   
      WHEN @IsInactive = 1  
       THEN 1  
      WHEN @IsActive = 1  
       THEN 0  
      END  
     AND (  
      @chkOpenSO <> 1  
      OR (  
       @chkOpenSO = 1  
       AND tblInv.decSumAlloc > 0  
       )  
      )  
    GROUP BY tblInv.strPartNumber  
     ,tblinv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.strAcctSet  
     ,tblInv.decEconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,tblInvExt.decManuf  
     ,tblInvVend.strVendName  
     ,tblVendors.strVendDesc  
     ,tblInvExt.strPartNumber 
	 ,tblInv.strCategory
    ORDER BY OrderbyCol  
     ,strVendName  
     ,tblInv.strPartNumber  
     ,tblInvExt.strLocName  
   END  
   ELSE  
   BEGIN  
    SELECT tblInv.strPartNumber  
     ,tblInv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) AS ToOrder  
     ,ISNULL(tblInvVend.strVendName, '') AS strVendName  
     ,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc  
     ,tblInvExt.strAcctSet AS OrderbyCol  
     ,tblInvExt.decManuf  
     ,Sum(tblInvExt.decMaxLevel) AS MaxLevel  
     ,tblInv.decMinimumOrderQuantity AS MinQty  
     ,tblInv.decEconomicOrderQty AS EconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity  
     ,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel  
     ,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder  
	 ,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit
    FROM tblInvExt  
    LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber  
    LEFT OUTER JOIN tblInvVend ON tblInvVend.strPartNumber = tblInv.strPartNumber  
     AND tblInvVend.bitPreferred = 1  
    LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = tblInvVend.strVendName  
    WHERE (tblInv.intType = 1)  
     AND (  
      (  
       (@chkToOrder = 1)  
       AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel)  
       AND (  
        tblInvExt.strAcctSet IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      OR (  
       (@chkToOrder = 0)  
       AND ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0)  
       AND (  
        tblInvExt.strAcctSet IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      )  
     AND tblInv.bitInactive = CASE   
      WHEN @IsInactive = 1  
       THEN 1  
      WHEN @IsActive = 1  
       THEN 0  
      END  
     AND (  
      @chkOpenSO <> 1  
      OR (  
       @chkOpenSO = 1  
       AND tblInv.decSumAlloc > 0  
       )  
      )  
    GROUP BY tblInv.strPartNumber  
     ,tblinv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.strAcctSet  
     ,tblInv.decEconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,tblInvExt.decManuf  
     ,tblInvVend.strVendName  
     ,tblVendors.strVendDesc  
     ,tblInvExt.strPartNumber 
	 ,tblInv.strCategory
    ORDER BY OrderbyCol  
     ,strVendName  
     ,tblInv.strDesc  
     ,tblInv.strPartNumber  
     ,tblInvExt.strLocName  
   END  
  END  
  ELSE  
  BEGIN  
   IF (@SortDescription = 0)  
   BEGIN  
    SELECT tblInv.strPartNumber  
     ,tblInv.strDesc  
     ,tblInvExt.strLocName  
     ,SUM(tblInvExt.decOnHand) decSumOnHand  
     ,SUM(tblInvExt.intReorderPoint) intReorderQty  
     ,SUM(tblInvExt.decOnOrder) decSumOnOrder  
     ,SUM(tblInvExt.decAlloc) AS decSumAlloc  
     ,SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) ToOrder  
     ,'' AS strVendName  
     ,''  
     ,tblInvExt.strAcctSet AS OrderbyCol  
     ,SUM(tblInvExt.decManuf) AS decSumManuf  
     ,Sum(tblInvExt.decMaxLevel) AS MaxLevel  
     ,tblInv.decMinimumOrderQuantity AS MinQty  
     ,tblInv.decEconomicOrderQty AS EconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity  
     ,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel  
     ,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder
	 ,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit
    FROM tblInvExt  
    LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber  
    WHERE (tblInv.intType = 1)  
     AND (  
      (  
       (@chkToOrder = 1)  
       AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel)  
       AND (  
        tblInvExt.strAcctSet IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      OR (  
       (@chkToOrder = 0)  
       AND ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0)  
       AND (  
        tblInvExt.strAcctSet IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      )  
     AND tblInv.bitInactive = CASE   
      WHEN @IsInactive = 1  
       THEN 1  
      WHEN @IsActive = 1  
       THEN 0  
      END  
     AND (  
      @chkOpenSO <> 1  
      OR (  
       @chkOpenSO = 1  
       AND tblInv.decSumAlloc > 0  
       )  
      )  
    GROUP BY tblInv.strPartNumber  
     ,tblinv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.strAcctSet  
     ,tblInv.decEconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,tblInvExt.decManuf  
     ,tblInvExt.strPartNumber
	 ,tblInv.strCategory
    ORDER BY OrderbyCol  
     ,strVendName  
     ,tblInv.strPartNumber  
     ,tblInvExt.strLocName  
   END  
   ELSE  
   BEGIN  
    SELECT tblInv.strPartNumber  
     ,tblInv.strDesc  
     ,tblInvExt.strLocName  
     ,SUM(tblInvExt.decOnHand) decSumOnHand  
     ,SUM(tblInvExt.intReorderPoint) intReorderQty  
     ,SUM(tblInvExt.decOnOrder) decSumOnOrder  
     ,SUM(tblInvExt.decAlloc) AS decSumAlloc  
     ,SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) ToOrder  
     ,'' AS strVendName  
     ,''  
     ,tblInvExt.strAcctSet AS OrderbyCol  
     ,SUM(tblInvExt.decManuf) AS decSumManuf  
     ,Sum(tblInvExt.decMaxLevel) AS MaxLevel  
     ,tblInv.decMinimumOrderQuantity AS MinQty  
     ,tblInv.decEconomicOrderQty AS EconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity  
     ,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel  
     ,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder 
	 ,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit
    FROM tblInvExt  
    LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber  
    WHERE (tblInv.intType = 1)  
     AND (  
      (  
       (@chkToOrder = 1)  
       AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel)  
       AND (  
        tblInvExt.strAcctSet IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      OR (  
       (@chkToOrder = 0)  
       AND ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0)  
       AND (  
        tblInvExt.strAcctSet IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      )  
     AND tblInv.bitInactive = CASE   
      WHEN @IsInactive = 1  
       THEN 1  
      WHEN @IsActive = 1  
       THEN 0  
      END  
     AND (  
      @chkOpenSO <> 1  
      OR (  
       @chkOpenSO = 1  
       AND tblInv.decSumAlloc > 0  
       )  
      )  
    GROUP BY tblInv.strPartNumber  
     ,tblinv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.strAcctSet  
     ,tblInv.decEconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,tblInvExt.decManuf  
     ,tblInvExt.strPartNumber  
	 ,tblInv.strCategory
    ORDER BY OrderbyCol  
     ,strVendName  
     ,tblInv.strDesc  
     ,tblInv.strPartNumber  
     ,tblInvExt.strLocName  
   END  
  END  
 END   
 ELSE IF (@Filter = 3) --Items              
 BEGIN  
  IF (@chkPreferredVendor = 1)  
  BEGIN  
   IF (@SortDescription = 0)  
   BEGIN  
    SELECT tblInv.strPartNumber  
     ,tblInv.strDesc  
     ,tblInvExt.strLocName  
     ,SUM(tblInvExt.decOnHand) AS decSumOnHand  
     ,SUM(tblInvExt.intReorderPoint) intReorderQty  
     ,SUM(tblInvExt.decOnOrder) decSumOnOrder  
     ,SUM(tblInvExt.decAlloc) decSumAlloc  
     ,SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) ToOrder  
     ,ISNULL(tblInvVend.strVendName, '') AS strVendName  
     ,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc  
     ,'' AS OrderbyCol  
     ,SUM(tblInvExt.decManuf) decSumManuf  
     ,Sum(tblInvExt.decMaxLevel) AS MaxLevel  
     ,tblInv.decMinimumOrderQuantity AS MinQty  
     ,tblInv.decEconomicOrderQty AS EconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity  
     ,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel  
     ,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder
	 ,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit
    FROM tblInvExt  
    LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber  
    LEFT OUTER JOIN tblInvVend ON tblInvVend.strPartNumber = tblInv.strPartNumber  
     AND tblInvVend.bitPreferred = 1  
    LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = tblInvVend.strVendName  
    WHERE (tblInv.intType = 1)  
     AND (  
      (  
       (@chkToOrder = 1)  
       AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel)  
       AND (  
        tblInv.strPartNumber IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      OR (  
       (@chkToOrder = 0)  
       AND ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0)  
       AND (  
        tblInv.strPartNumber IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      )  
     AND tblInv.bitInactive = CASE   
      WHEN @IsInactive = 1  
       THEN 1  
      WHEN @IsActive = 1  
       THEN 0  
      END  
     AND (  
      @chkOpenSO <> 1  
      OR (  
       @chkOpenSO = 1  
       AND tblInv.decSumAlloc > 0  
       )  
      )  
    GROUP BY tblInv.strPartNumber  
     ,tblinv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.strAcctSet  
     ,tblInv.decEconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,tblInvExt.decManuf  
     ,tblInvVend.strVendName  
     ,tblVendors.strVendDesc  
     ,tblInvExt.strPartNumber  
	 ,tblInv.strCategory
    ORDER BY OrderbyCol  
     ,strVendName  
     ,tblInv.strPartNumber  
     ,tblInvExt.strLocName  
   END  
   ELSE  
   BEGIN  
    SELECT tblInv.strPartNumber  
     ,tblInv.strDesc  
     ,tblInvExt.strLocName  
     ,SUM(tblInvExt.decOnHand) AS decSumOnHand  
     ,SUM(tblInvExt.intReorderPoint) intReorderQty  
     ,SUM(tblInvExt.decOnOrder) decSumOnOrder  
     ,SUM(tblInvExt.decAlloc) decSumAlloc  
     ,SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) ToOrder  
     ,ISNULL(tblInvVend.strVendName, '') AS strVendName  
     ,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc  
     ,'' AS OrderbyCol  
     ,SUM(tblInvExt.decManuf) decSumManuf  
     ,Sum(tblInvExt.decMaxLevel) AS MaxLevel  
     ,tblInv.decMinimumOrderQuantity AS MinQty  
     ,tblInv.decEconomicOrderQty AS EconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity  
     ,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel  
     ,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder 
	 ,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit
    FROM tblInvExt  
    LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber  
    LEFT OUTER JOIN tblInvVend ON tblInvVend.strPartNumber = tblInv.strPartNumber  
     AND tblInvVend.bitPreferred = 1  
    LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = tblInvVend.strVendName  
    WHERE (tblInv.intType = 1)  
     AND (  
      (  
       (@chkToOrder = 1)  
       AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel)  
       AND (  
        tblInv.strPartNumber IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      OR (  
       (@chkToOrder = 0)  
       AND ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0)  
       AND (  
        tblInv.strPartNumber IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      )  
     AND tblInv.bitInactive = CASE   
      WHEN @IsInactive = 1  
       THEN 1  
      WHEN @IsActive = 1  
       THEN 0  
      END  
     AND (  
      @chkOpenSO <> 1  
      OR (  
       @chkOpenSO = 1  
       AND tblInv.decSumAlloc > 0  
       )  
      )  
    GROUP BY tblInv.strPartNumber  
     ,tblinv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.strAcctSet  
     ,tblInv.decEconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,tblInvExt.decManuf  
     ,tblInvVend.strVendName  
     ,tblVendors.strVendDesc  
     ,tblInvExt.strPartNumber 
	 ,tblInv.strCategory
    ORDER BY OrderbyCol  
     ,strVendName  
     ,tblInv.strDesc  
     ,tblInv.strPartNumber  
     ,tblInvExt.strLocName  
   END  
  END  
  ELSE  
  BEGIN  
   IF (@SortDescription = 0)  
   BEGIN  
    SELECT tblInv.strPartNumber  
     ,tblInv.strDesc  
     ,tblInvExt.strLocName  
     ,SUM(tblInvExt.decOnHand) AS decSumOnHand  
     ,SUM(tblInvExt.intReorderPoint) intReorderQty  
     ,SUM(tblInvExt.decOnOrder) decSumOnOrder  
     ,SUM(tblInvExt.decAlloc) decSumAlloc  
     ,SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) ToOrder  
     ,'' AS strVendName  
     ,''  
     ,'' AS OrderbyCol  
     ,SUM(tblInvExt.decManuf) decSumManuf  
     ,Sum(tblInvExt.decMaxLevel) AS MaxLevel  
     ,tblInv.decMinimumOrderQuantity AS MinQty  
     ,tblInv.decEconomicOrderQty AS EconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity  
     ,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel  
     ,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder  
	 ,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit
    FROM tblInvExt  
    LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber  
    WHERE (tblInv.intType = 1)  
     AND (  
      (  
       (@chkToOrder = 1)  
       AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel)  
       AND (  
        tblInv.strPartNumber IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      OR (  
       (@chkToOrder = 0)  
       AND ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0)  
       AND (  
        tblInv.strPartNumber IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      )  
     AND tblInv.bitInactive = CASE   
      WHEN @IsInactive = 1  
       THEN 1  
      WHEN @IsActive = 1  
       THEN 0  
      END  
     AND (  
      @chkOpenSO <> 1  
      OR (  
       @chkOpenSO = 1  
       AND tblInv.decSumAlloc > 0  
       )  
      )  
    GROUP BY tblInv.strPartNumber  
     ,tblinv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.strAcctSet  
     ,tblInv.decEconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,tblInvExt.decManuf  
     ,tblInvExt.strPartNumber  
	 ,tblInv.strCategory
    ORDER BY OrderbyCol  
     ,strVendName  
     ,tblInv.strPartNumber  
     ,tblInvExt.strLocName  
   END  
   ELSE  
   BEGIN  
    SELECT tblInv.strPartNumber  
     ,tblInv.strDesc  
     ,tblInvExt.strLocName  
     ,SUM(tblInvExt.decOnHand) AS decSumOnHand  
     ,SUM(tblInvExt.intReorderPoint) intReorderQty  
     ,SUM(tblInvExt.decOnOrder) decSumOnOrder  
     ,SUM(tblInvExt.decAlloc) decSumAlloc  
     ,SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) ToOrder  
     ,'' AS strVendName  
     ,''  
     ,'' AS OrderbyCol  
     ,SUM(tblInvExt.decManuf) decSumManuf  
     ,Sum(tblInvExt.decMaxLevel) AS MaxLevel  
     ,tblInv.decMinimumOrderQuantity AS MinQty  
     ,tblInv.decEconomicOrderQty AS EconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity  
     ,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel  
     ,dbo.GetTransferOrders(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS TransferOrder  
	 ,dbo.GetGoodsInTransit(tblInv.strPartNumber, tblInvExt.strLocName, 0) AS GoodsInTransit
    FROM tblInvExt  
    LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber  
    WHERE (tblInv.intType = 1)  
     AND (  
      (  
       (@chkToOrder = 1)  
       AND (((tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf) + tblInvExt.decOnOrder) < tblInvExt.decMinimumLevel)  
       AND (  
        tblInv.strPartNumber IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      OR (  
       (@chkToOrder = 0)  
       AND ((tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0)  
       AND (  
        tblInv.strPartNumber IN (  
         SELECT *  
         FROM fnSplitStringAsTable(@ItemList, ',')  
         )  
        )  
       )  
      )  
     AND tblInv.bitInactive = CASE   
      WHEN @IsInactive = 1  
       THEN 1  
      WHEN @IsActive = 1  
       THEN 0  
      END  
     AND (  
      @chkOpenSO <> 1  
      OR (  
       @chkOpenSO = 1  
       AND tblInv.decSumAlloc > 0  
       )  
      )  
    GROUP BY tblInv.strPartNumber  
     ,tblinv.strDesc  
     ,tblInvExt.strLocName  
     ,tblInvExt.strAcctSet  
     ,tblInv.decEconomicOrderQty  
     ,tblInv.decMinimumOrderQuantity  
     ,tblInvExt.decOnHand  
     ,tblInvExt.intReorderPoint  
     ,tblInvExt.decOnOrder  
     ,tblInvExt.decAlloc  
     ,tblInvExt.decManuf  
     ,tblInvExt.strPartNumber  
	 ,tblInv.strCategory
    ORDER BY OrderbyCol  
     ,strVendName  
     ,tblInv.strDesc  
     ,tblInv.strPartNumber  
     ,tblInvExt.strLocName  
   END  
  END  
 END  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptInvQtyMRPSumReportData] (
	@ItemList NVARCHAR(max)
	,@Filter INT
	,@IsActive BIT
	,@IsInActive BIT
	,@chkPreferredVendor BIT
	,@chkOpenSO BIT
	,@SortDescription BIT
	)
AS
BEGIN
	DECLARE @Query NVARCHAR(max);

	IF (@Filter = 0)
	BEGIN
		IF (@chkPreferredVendor = 1)
		BEGIN
			IF (@SortDescription = 0)
			BEGIN
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,(SUM(tblInvExt.decOnHand) + SUM(tblInvExt.decOnOrder) - SUM(tblInvExt.intReorderPoint) + SUM(tblInvExt.decAlloc) + SUM(tblInvExt.decManuf)) * - 1 AS decToOrder
					,ISNULL(tblInvVend.strVendName, '') AS strVendName
					,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc
					,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol
					,Sum(tblInvExt.decMaxLevel) AS MaxLevel
					,tblInv.decEconomicOrderQty AS EconomicOrderQty
					,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity
					,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel
					,SUM(tblInvExt.decManuf) AS decSumManuf
					,dbo.GetTransferOrders(tblInv.strPartNumber, NULL, 1) as TransferOrder
					,dbo.GetGoodsInTransit(tblInv.strPartNumber, NULL, 1) as GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber
				INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
				INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
				LEFT OUTER JOIN tblInvVend ON tblInvVend.strPartNumber = tblInv.strPartNumber
					AND tblInvVend.bitPreferred = 1
				LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = tblInvVend.strVendName
				WHERE (intType = 1)
					AND tblInv.strPartNumber NOT IN (
						SELECT strPartNumber
						FROM tblInvBOM
						)
					AND (
						tblAccounts.intGLNumber IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND tblInv.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND tblInv.decSumAlloc > 0
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc
					,ISNULL(tblInvVend.strVendName, '')
					,ISNULL(tblVendors.strVendDesc, '')
					,tblInv.decEconomicOrderQty
					,tblInv.decMinimumOrderQuantity
				ORDER BY OrderbyCol
					,strVendName
					,tblInv.strPartNumber
			END
			ELSE
			BEGIN
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,(SUM(tblInvExt.decOnHand) + SUM(tblInvExt.decOnOrder) - SUM(tblInvExt.intReorderPoint) + SUM(tblInvExt.decAlloc) + SUM(tblInvExt.decManuf)) * - 1 AS decToOrder
					,ISNULL(tblInvVend.strVendName, '') AS strVendName
					,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc
					,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol
					,Sum(tblInvExt.decMaxLevel) AS MaxLevel
					,tblInv.decEconomicOrderQty AS EconomicOrderQty
					,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity
					,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel
					,SUM(tblInvExt.decManuf) AS decSumManuf
					,dbo.GetTransferOrders(tblInv.strPartNumber, NULL, 1) as TransferOrder
					,dbo.GetGoodsInTransit(tblInv.strPartNumber, NULL, 1) as GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber
				INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
				INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
				LEFT OUTER JOIN tblInvVend ON tblInvVend.strPartNumber = tblInv.strPartNumber
					AND tblInvVend.bitPreferred = 1
				LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = tblInvVend.strVendName
				WHERE (intType = 1)
					AND tblInv.strPartNumber NOT IN (
						SELECT strPartNumber
						FROM tblInvBOM
						)
					AND (
						tblAccounts.intGLNumber IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND tblInv.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND tblInv.decSumAlloc > 0
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc
					,ISNULL(tblInvVend.strVendName, '')
					,ISNULL(tblVendors.strVendDesc, '')
					,tblInv.decEconomicOrderQty
					,tblInv.decMinimumOrderQuantity
				ORDER BY OrderbyCol
					,strVendName
					,tblInv.strDesc
			END
		END
		ELSE
		BEGIN
			IF (@SortDescription = 0)
			BEGIN
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,(SUM(tblInvExt.decOnHand) + SUM(tblInvExt.decOnOrder) - SUM(tblInvExt.intReorderPoint) + SUM(tblInvExt.decAlloc) + SUM(tblInvExt.decManuf)) * - 1 AS decToOrder
					,'' AS strVendName
					,'' AS strVendDesc
					,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol
					,Sum(tblInvExt.decMaxLevel) AS MaxLevel
					,tblInv.decEconomicOrderQty AS EconomicOrderQty
					,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity
					,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel
					,SUM(tblInvExt.decManuf) AS decSumManuf
					,dbo.GetTransferOrders(tblInv.strPartNumber, NULL, 1) as TransferOrder
					,dbo.GetGoodsInTransit(tblInv.strPartNumber, NULL, 1) as GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber
				INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
				INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
				WHERE (intType = 1)
					AND tblInv.strPartNumber NOT IN (
						SELECT strPartNumber
						FROM tblInvBOM
						)
					AND (
						tblAccounts.intGLNumber IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND tblInv.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND tblInv.decSumAlloc > 0
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc
					,tblInv.decEconomicOrderQty
					,tblInv.decMinimumOrderQuantity
				ORDER BY OrderbyCol
					,strVendName
					,tblInv.strPartNumber
			END
			ELSE
			BEGIN
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,(SUM(tblInvExt.decOnHand) + SUM(tblInvExt.decOnOrder) - SUM(tblInvExt.intReorderPoint) + SUM(tblInvExt.decAlloc) + SUM(tblInvExt.decManuf)) * - 1 AS decToOrder
					,'' AS strVendName
					,'' AS strVendDesc
					,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc AS OrderbyCol
					,Sum(tblInvExt.decMaxLevel) AS MaxLevel
					,tblInv.decEconomicOrderQty AS EconomicOrderQty
					,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity
					,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel
					,SUM(tblInvExt.decManuf) AS decSumManuf
					,dbo.GetTransferOrders(tblInv.strPartNumber, NULL, 1) as TransferOrder
					,dbo.GetGoodsInTransit(tblInv.strPartNumber, NULL, 1) as GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber
				INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
				INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
				WHERE (intType = 1)
					AND tblInv.strPartNumber NOT IN (
						SELECT strPartNumber
						FROM tblInvBOM
						)
					AND (
						tblAccounts.intGLNumber IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND tblInv.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND tblInv.decSumAlloc > 0
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc
					,tblInv.decEconomicOrderQty
					,tblInv.decMinimumOrderQuantity
				ORDER BY OrderbyCol
					,strVendName
					,tblInv.strDesc
			END
		END
	END
	ELSE IF (@Filter = 1)
	BEGIN
		IF (@chkPreferredVendor = 1)
		BEGIN
			IF (@SortDescription = 0)
			BEGIN
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.decSumOnHand
					,tblInv.intReorderQty
					,tblInv.decSumOnOrder
					,tblInv.decSumAlloc
					,((tblInv.decSumOnHand + tblInv.decSumOnOrder) - (tblInv.intReorderQty + tblInv.decSumAlloc + tblInv.decSumManuf)) * - 1 AS decToOrder
					,ISNULL(tblInvVend.strVendName, '') AS strVendName
					,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc
					,tblInv.strCategory AS OrderbyCol
					,Sum(tblInvExt.decMaxLevel) AS MaxLevel
					,tblInv.decEconomicOrderQty AS EconomicOrderQty
					,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity
					,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel
					,tblInv.decSumManuf
					,dbo.GetTransferOrders(tblInv.strPartNumber, NULL, 1) as TransferOrder
					,dbo.GetGoodsInTransit(tblInv.strPartNumber, NULL, 1) as GoodsInTransit
				FROM tblInv
				INNER JOIN tblInvExt ON tblInvExt.strPartNumber = tblInv.strPartNumber
				LEFT OUTER JOIN tblInvVend ON tblInvVend.strPartNumber = tblInv.strPartNumber
					AND tblInvVend.bitPreferred = 1
				LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = tblInvVend.strVendName
				WHERE (intType = 1)
					AND tblInv.strPartNumber NOT IN (
						SELECT strPartNumber
						FROM tblInvBOM
						)
					AND (
						tblInv.strCategory IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND tblInv.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND tblInv.decSumAlloc > 0
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.decSumOnHand
					,tblInv.intReorderQty
					,tblInv.decSumOnOrder
					,tblInv.decSumAlloc
					,tblInv.decEconomicOrderQty
					,tblInv.decMinimumOrderQuantity
					,tblInv.strCategory
					,tblInv.decSumManuf
					,ISNULL(tblInvVend.strVendName, '')
					,ISNULL(tblVendors.strVendDesc, '')
				ORDER BY OrderbyCol
					,strVendName
					,tblInv.strPartNumber
			END
			ELSE
			BEGIN
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.decSumOnHand
					,tblInv.intReorderQty
					,tblInv.decSumOnOrder
					,tblInv.decSumAlloc
					,((tblInv.decSumOnHand + tblInv.decSumOnOrder) - (tblInv.intReorderQty + tblInv.decSumAlloc + tblInv.decSumManuf)) * - 1 asdecToOrder
					,ISNULL(tblInvVend.strVendName, '') AS strVendName
					,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc
					,tblInv.strCategory AS OrderbyCol
					,Sum(tblInvExt.decMaxLevel) AS MaxLevel
					,tblInv.decEconomicOrderQty AS EconomicOrderQty
					,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity
					,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel
					,tblInv.decSumManuf
					,dbo.GetTransferOrders(tblInv.strPartNumber, NULL, 1) as TransferOrder
					,dbo.GetGoodsInTransit(tblInv.strPartNumber, NULL, 1) as GoodsInTransit
				FROM tblInv
				INNER JOIN tblInvExt ON tblInvExt.strPartNumber = tblInv.strPartNumber
				LEFT OUTER JOIN tblInvVend ON tblInvVend.strPartNumber = tblInv.strPartNumber
					AND tblInvVend.bitPreferred = 1
				LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = tblInvVend.strVendName
				WHERE (intType = 1)
					AND tblInv.strPartNumber NOT IN (
						SELECT strPartNumber
						FROM tblInvBOM
						)
					AND (
						tblInv.strCategory IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND tblInv.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND tblInv.decSumAlloc > 0
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.decSumOnHand
					,tblInv.intReorderQty
					,tblInv.decSumOnOrder
					,tblInv.decSumAlloc
					,tblInv.decEconomicOrderQty
					,tblInv.decMinimumOrderQuantity
					,tblInv.strCategory
					,tblInv.decSumManuf
					,ISNULL(tblInvVend.strVendName, '')
					,ISNULL(tblVendors.strVendDesc, '')
				ORDER BY OrderbyCol
					,strVendName
					,tblInv.strDesc
			END
		END
		ELSE
		BEGIN
			IF (@SortDescription = 0)
			BEGIN
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.decSumOnHand
					,tblInv.intReorderQty
					,tblInv.decSumOnOrder
					,tblInv.decSumAlloc
					,((tblInv.decSumOnHand + tblInv.decSumOnOrder) - (tblInv.intReorderQty + tblInv.decSumAlloc + tblInv.decSumManuf)) * - 1 AS decToOrder
					,'' AS strVendName
					,'' AS strVendDesc
					,tblInv.strCategory AS OrderbyCol
					,Sum(tblInvExt.decMaxLevel) AS MaxLevel
					,tblInv.decEconomicOrderQty AS EconomicOrderQty
					,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity
					,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel
					,tblInv.decSumManuf
					,dbo.GetTransferOrders(tblInv.strPartNumber, NULL, 1) as TransferOrder
					,dbo.GetGoodsInTransit(tblInv.strPartNumber, NULL, 1) as GoodsInTransit
				FROM tblInv
				INNER JOIN tblInvExt ON tblInvExt.strPartNumber = tblInv.strPartNumber
				WHERE (intType = 1)
					AND tblInv.strPartNumber NOT IN (
						SELECT strPartNumber
						FROM tblInvBOM
						)
					AND (
						tblInv.strCategory IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND tblInv.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND tblInv.decSumAlloc > 0
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.decSumOnHand
					,tblInv.intReorderQty
					,tblInv.decSumOnOrder
					,tblInv.decSumAlloc
					,tblInv.decEconomicOrderQty
					,tblInv.decMinimumOrderQuantity
					,tblInv.strCategory
					,tblInv.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,tblInv.strPartNumber
			END
			ELSE
			BEGIN
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.decSumOnHand
					,tblInv.intReorderQty
					,tblInv.decSumOnOrder
					,tblInv.decSumAlloc
					,((tblInv.decSumOnHand + tblInv.decSumOnOrder) - (tblInv.intReorderQty + tblInv.decSumAlloc + tblInv.decSumManuf)) * - 1 AS decToOrder
					,'' AS strVendName
					,'' AS strVendDesc
					,tblInv.strCategory AS OrderbyCol
					,Sum(tblInvExt.decMaxLevel) AS MaxLevel
					,tblInv.decEconomicOrderQty AS EconomicOrderQty
					,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity
					,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel
					,tblInv.decSumManuf
					,dbo.GetTransferOrders(tblInv.strPartNumber, NULL, 1) as TransferOrder
					,dbo.GetGoodsInTransit(tblInv.strPartNumber, NULL, 1) as GoodsInTransit
				FROM tblInv
				INNER JOIN tblInvExt ON tblInvExt.strPartNumber = tblInv.strPartNumber
				WHERE (intType = 1)
					AND tblInv.strPartNumber NOT IN (
						SELECT strPartNumber
						FROM tblInvBOM
						)
					AND (
						tblInv.strCategory IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND tblInv.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND tblInv.decSumAlloc > 0
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.decSumOnHand
					,tblInv.intReorderQty
					,tblInv.decSumOnOrder
					,tblInv.decSumAlloc
					,tblInv.decEconomicOrderQty
					,tblInv.decMinimumOrderQuantity
					,tblInv.strCategory
					,tblInv.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,tblInv.strDesc
			END
		END
	END
	ELSE IF (@Filter = 2) --AccountSets            
	BEGIN
		IF (@chkPreferredVendor = 1)
		BEGIN
			IF (@SortDescription = 0)
			BEGIN
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,(SUM(tblInvExt.decOnHand) + SUM(tblInvExt.decOnOrder) - SUM(tblInvExt.intReorderPoint) + SUM(tblInvExt.decAlloc) + SUM(tblInvExt.decManuf)) * - 1 AS decToOrder
					,ISNULL(tblInvVend.strVendName, '') AS strVendName
					,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc
					,tblInvEXt.strAcctSet AS OrderbyCol
					,Sum(tblInvExt.decMaxLevel) AS MaxLevel
					,tblInv.decEconomicOrderQty AS EconomicOrderQty
					,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity
					,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel
					,SUM(tblInvExt.decManuf) AS decSumManuf
					,dbo.GetTransferOrders(tblInv.strPartNumber, NULL, 1) as TransferOrder
					,dbo.GetGoodsInTransit(tblInv.strPartNumber, NULL, 1) as GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber
				LEFT OUTER JOIN tblInvVend ON tblInvVend.strPartNumber = tblInv.strPartNumber
					AND tblInvVend.bitPreferred = 1
				LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = tblInvVend.strVendName
				WHERE (intType = 1)
					AND tblInv.strPartNumber NOT IN (
						SELECT strPartNumber
						FROM tblInvBOM
						)
					AND (
						tblInvExt.strAcctSet IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND tblInv.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND tblInv.decSumAlloc > 0
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInvExt.strAcctSet
					,ISNULL(tblInvVend.strVendName, '')
					,ISNULL(tblVendors.strVendDesc, '')
					,tblInv.decEconomicOrderQty
					,tblInv.decMinimumOrderQuantity
				ORDER BY OrderbyCol
					,strVendName
					,tblInv.strPartNumber
			END
			ELSE
			BEGIN
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,(SUM(tblInvExt.decOnHand) + SUM(tblInvExt.decOnOrder) - SUM(tblInvExt.intReorderPoint) + SUM(tblInvExt.decAlloc) + SUM(tblInvExt.decManuf)) * - 1 AS decToOrder
					,ISNULL(tblInvVend.strVendName, '') AS strVendName
					,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc
					,tblInvEXt.strAcctSet AS OrderbyCol
					,Sum(tblInvExt.decMaxLevel) AS MaxLevel
					,tblInv.decEconomicOrderQty AS EconomicOrderQty
					,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity
					,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel
					,SUM(tblInvExt.decManuf) AS decSumManuf
					,dbo.GetTransferOrders(tblInv.strPartNumber, NULL, 1) as TransferOrder
					,dbo.GetGoodsInTransit(tblInv.strPartNumber, NULL, 1) as GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber
				LEFT OUTER JOIN tblInvVend ON tblInvVend.strPartNumber = tblInv.strPartNumber
					AND tblInvVend.bitPreferred = 1
				LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = tblInvVend.strVendName
				WHERE (intType = 1)
					AND tblInv.strPartNumber NOT IN (
						SELECT strPartNumber
						FROM tblInvBOM
						)
					AND (
						tblInvExt.strAcctSet IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND tblInv.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND tblInv.decSumAlloc > 0
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInvExt.strAcctSet
					,ISNULL(tblInvVend.strVendName, '')
					,ISNULL(tblVendors.strVendDesc, '')
					,tblInv.decEconomicOrderQty
					,tblInv.decMinimumOrderQuantity
				ORDER BY OrderbyCol
					,strVendName
					,tblInv.strDesc
			END
		END
		ELSE
		BEGIN
			IF (@SortDescription = 0)
			BEGIN
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,(SUM(tblInvExt.decOnHand) + SUM(tblInvExt.decOnOrder) - SUM(tblInvExt.intReorderPoint) + SUM(tblInvExt.decAlloc) + SUM(tblInvExt.decManuf)) * - 1 AS decToOrder
					,'' AS strVendName
					,'' AS strVendDesc
					,tblInvExt.strAcctSet AS OrderbyCol
					,Sum(tblInvExt.decMaxLevel) AS MaxLevel
					,tblInv.decEconomicOrderQty AS EconomicOrderQty
					,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity
					,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel
					,SUM(tblInvExt.decManuf) AS decSumManuf
					,dbo.GetTransferOrders(tblInv.strPartNumber, NULL, 1) as TransferOrder
					,dbo.GetGoodsInTransit(tblInv.strPartNumber, NULL, 1) as GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber
				WHERE (intType = 1)
					AND tblInv.strPartNumber NOT IN (
						SELECT strPartNumber
						FROM tblInvBOM
						)
					AND (
						tblInvExt.strAcctSet IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND tblInv.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND tblInv.decSumAlloc > 0
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInvExt.strAcctSet
					,tblInv.decEconomicOrderQty
					,tblInv.decMinimumOrderQuantity
				ORDER BY OrderbyCol
					,strVendName
					,tblInv.strPartNumber
			END
			ELSE
			BEGIN
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,(SUM(tblInvExt.decOnHand) + SUM(tblInvExt.decOnOrder) - SUM(tblInvExt.intReorderPoint) + SUM(tblInvExt.decAlloc) + SUM(tblInvExt.decManuf)) * - 1 AS decToOrder
					,'' AS strVendName
					,'' AS strVendDesc
					,tblInvExt.strAcctSet AS OrderbyCol
					,Sum(tblInvExt.decMaxLevel) AS MaxLevel
					,tblInv.decEconomicOrderQty AS EconomicOrderQty
					,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity
					,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel
					,SUM(tblInvExt.decManuf) AS decSumManuf
					,dbo.GetTransferOrders(tblInv.strPartNumber, NULL, 1) as TransferOrder
					,dbo.GetGoodsInTransit(tblInv.strPartNumber, NULL, 1) as GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber
				WHERE (intType = 1)
					AND tblInv.strPartNumber NOT IN (
						SELECT strPartNumber
						FROM tblInvBOM
						)
					AND (
						tblInvExt.strAcctSet IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND tblInv.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND tblInv.decSumAlloc > 0
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInvExt.strAcctSet
					,tblInv.decEconomicOrderQty
					,tblInv.decMinimumOrderQuantity
				ORDER BY OrderbyCol
					,strVendName
					,tblInv.strDesc
			END
		END
	END
	ELSE IF (
			@Filter = 3
			OR @Filter = 7
			) --Items            
BEGIN
		IF (@chkPreferredVendor = 1)
		BEGIN
			IF (@SortDescription = 0)
			BEGIN
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.decSumOnHand
					,tblInv.intReorderQty
					,tblInv.decSumOnOrder
					,tblInv.decSumAlloc
					,((tblInv.decSumOnHand + tblInv.decSumOnOrder) - (tblInv.intReorderQty + tblInv.decSumAlloc + tblInv.decSumManuf)) * - 1 AS decToOrder
					,ISNULL(tblInvVend.strVendName, '') AS strVendName
					,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc
					,'' AS OrderbyCol
					,Sum(tblInvExt.decMaxLevel) AS MaxLevel
					,tblInv.decEconomicOrderQty AS EconomicOrderQty
					,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity
					,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel
					,tblInv.decSumManuf
					,dbo.GetTransferOrders(tblInv.strPartNumber, NULL, 1) as TransferOrder
					,dbo.GetGoodsInTransit(tblInv.strPartNumber, NULL, 1) as GoodsInTransit
				FROM tblInv
				INNER JOIN tblInvExt ON tblInvExt.strPartNumber = tblInv.strPartNumber
				LEFT OUTER JOIN tblInvVend ON tblInvVend.strPartNumber = tblInv.strPartNumber
					AND tblInvVend.bitPreferred = 1
				LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = tblInvVend.strVendName
				WHERE (intType = 1)
					AND tblInv.strPartNumber NOT IN (
						SELECT strPartNumber
						FROM tblInvBOM
						)
					AND (
						tblInv.strPartNumber IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND tblInv.bitInactive = CASE 
						WHEN  @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND tblInv.decSumAlloc > 0
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.decSumOnHand
					,tblInv.intReorderQty
					,tblInv.decSumOnOrder
					,tblInv.decSumAlloc
					,tblInv.decEconomicOrderQty
					,tblInv.decMinimumOrderQuantity
					,CASE WHEN @Filter = 3 THEN tblInv.strCategory END
					,tblInv.decSumManuf
					,ISNULL(tblInvVend.strVendName, '')
					,ISNULL(tblVendors.strVendDesc, '')
				ORDER BY OrderbyCol
					,strVendName
					,tblInv.strPartNumber
			END
			ELSE
			BEGIN
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.decSumOnHand
					,tblInv.intReorderQty
					,tblInv.decSumOnOrder
					,tblInv.decSumAlloc
					,((tblInv.decSumOnHand + tblInv.decSumOnOrder) - (tblInv.intReorderQty + tblInv.decSumAlloc + tblInv.decSumManuf)) * - 1 AS decToOrder
					,ISNULL(tblInvVend.strVendName, '') AS strVendName
					,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc
					,'' AS OrderbyCol
					,Sum(tblInvExt.decMaxLevel) AS MaxLevel
					,tblInv.decEconomicOrderQty AS EconomicOrderQty
					,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity
					,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel
					,tblInv.decSumManuf
					,dbo.GetTransferOrders(tblInv.strPartNumber, NULL, 1) as TransferOrder
					,dbo.GetGoodsInTransit(tblInv.strPartNumber, NULL, 1) as GoodsInTransit
				FROM tblInv
				INNER JOIN tblInvExt ON tblInvExt.strPartNumber = tblInv.strPartNumber
				LEFT OUTER JOIN tblInvVend ON tblInvVend.strPartNumber = tblInv.strPartNumber
					AND tblInvVend.bitPreferred = 1
				LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = tblInvVend.strVendName
				WHERE (intType = 1)
					AND tblInv.strPartNumber NOT IN (
						SELECT strPartNumber
						FROM tblInvBOM
						)
					AND (
						tblInv.strPartNumber IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND tblInv.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND tblInv.decSumAlloc > 0
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.decSumOnHand
					,tblInv.intReorderQty
					,tblInv.decSumOnOrder
					,tblInv.decSumAlloc
					,tblInv.decEconomicOrderQty
					,tblInv.decMinimumOrderQuantity
					,CASE WHEN @Filter = 3 THEN tblInv.strCategory END
					,tblInv.decSumManuf
					,ISNULL(tblInvVend.strVendName, '')
					,ISNULL(tblVendors.strVendDesc, '')
				ORDER BY OrderbyCol
					,strVendName
					,tblInv.strDesc
			END
		END
		ELSE
		BEGIN
			IF (@SortDescription = 0)
			BEGIN
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.decSumOnHand
					,tblInv.intReorderQty
					,tblInv.decSumOnOrder
					,tblInv.decSumAlloc
					,((tblInv.decSumOnHand + tblInv.decSumOnOrder) - (tblInv.intReorderQty + tblInv.decSumAlloc + tblInv.decSumManuf)) * - 1 AS decToOrder
					,'' AS strVendName
					,'' AS strVendDesc
					,'' AS OrderbyCol
					,Sum(tblInvExt.decMaxLevel) AS MaxLevel
					,tblInv.decEconomicOrderQty AS EconomicOrderQty
					,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity
					,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel
					,tblInv.decSumManuf
					,dbo.GetTransferOrders(tblInv.strPartNumber, NULL, 1) as TransferOrder
					,dbo.GetGoodsInTransit(tblInv.strPartNumber, NULL, 1) as GoodsInTransit
				FROM tblInv
				INNER JOIN tblInvExt ON tblInvExt.strPartNumber = tblInv.strPartNumber
				WHERE (intType = 1)
					AND tblInv.strPartNumber NOT IN (
						SELECT strPartNumber
						FROM tblInvBOM
						)
					AND (
						tblInv.strPartNumber IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND tblInv.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND tblInv.decSumAlloc > 0
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.decSumOnHand
					,tblInv.intReorderQty
					,tblInv.decSumOnOrder
					,tblInv.decSumAlloc
					,tblInv.decEconomicOrderQty
					,tblInv.decMinimumOrderQuantity
					,CASE WHEN @Filter = 3 THEN tblInv.strCategory END
					,tblInv.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,tblInv.strPartNumber
			END
			ELSE
			BEGIN
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.decSumOnHand
					,tblInv.intReorderQty
					,tblInv.decSumOnOrder
					,tblInv.decSumAlloc
					,((tblInv.decSumOnHand + tblInv.decSumOnOrder) - (tblInv.intReorderQty + tblInv.decSumAlloc + tblInv.decSumManuf)) * - 1 AS decToOrder
					,'' AS strVendName
					,'' AS strVendDesc
					,'' AS OrderbyCol
					,Sum(tblInvExt.decMaxLevel) AS MaxLevel
					,tblInv.decEconomicOrderQty AS EconomicOrderQty
					,tblInv.decMinimumOrderQuantity AS MinimumOrderQuantity
					,Sum(tblInvExt.decMinimumLevel) AS MinimumLevel
					,tblInv.decSumManuf
					,dbo.GetTransferOrders(tblInv.strPartNumber, NULL, 1) as TransferOrder
					,dbo.GetGoodsInTransit(tblInv.strPartNumber, NULL, 1) as GoodsInTransit
				FROM tblInv
				INNER JOIN tblInvExt ON tblInvExt.strPartNumber = tblInv.strPartNumber
				WHERE (intType = 1)
					AND tblInv.strPartNumber NOT IN (
						SELECT strPartNumber
						FROM tblInvBOM
						)
					AND (
						tblInv.strPartNumber IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND tblInv.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND tblInv.decSumAlloc > 0
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.decSumOnHand
					,tblInv.intReorderQty
					,tblInv.decSumOnOrder
					,tblInv.decSumAlloc
					,tblInv.decEconomicOrderQty
					,tblInv.decMinimumOrderQuantity
					,CASE WHEN @Filter = 3 THEN tblInv.strCategory END
					,tblInv.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,tblInv.strDesc
			END
		END
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptInvQtySumReportData] (
	@ItemList NVARCHAR(max)
	,@Filter INT
	,@IsActive BIT
	,@IsInActive BIT
	,@chkToOrder BIT
	,@chkPreferredVendor BIT
	,@chkOpenSO BIT
	,@SortDescription BIT
	)
AS
BEGIN
	DECLARE @Query NVARCHAR(max);

	IF (@Filter = 0) --Assets            
	BEGIN
		IF (@chkPreferredVendor = 1)
		BEGIN
			IF (@SortDescription = 0)
			BEGIN
				SELECT INV.strPartNumber AS strPartNumber
					,INV.strDesc AS strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,INV.decMaxLevel - (INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf + INV.decSumOnOrder) AS ToOrder
					,ISNULL(VEND.strVendName, '') AS strVendName
					,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc
					,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + '' + tblAccounts.strDesc AS OrderbyCol
					,SUM(tblInvExt.decManuf) AS decSumManuf
					,INV.decMaxLevel AS MaxLevel
					,Sum(INV.decMinimumOrderQuantity) AS MinQty
					,Sum(INV.decEconomicOrderQty) AS EconomicOrderQty
					,Sum(INV.decMinimumOrderQuantity) AS MinimumOrderQuantity
					,INV.decMinimumLevel AS MinimumLevel
					,dbo.GetTransferOrders(INV.strPartNumber, NULL, 1) AS TransferOrder
					,dbo.GetGoodsInTransit(INV.strPartNumber, NULL, 1) AS GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv INV ON tblInvExt.strPartNumber = INV.strPartNumber
				INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
				INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
				LEFT OUTER JOIN tblInvVend VEND ON VEND.strPartNumber = INV.strPartNumber
					AND VEND.bitPreferred = 1
				LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = VEND.strVendName
				WHERE (intType = 1)
					AND (
						(
							(@chkToOrder = 1)
							AND (((INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf) + INV.decSumOnOrder) < INV.decMinimumLevel)
							AND (
								tblAccounts.intGLNumber IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						OR (
							(@chkToOrder = 0)
							AND ((INV.decSumOnHand + INV.decSumOnOrder + INV.decSumAlloc + INV.decSumManuf) <> 0)
							AND (
								tblAccounts.intGLNumber IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						)
					AND INV.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND INV.decSumAlloc > 0
							)
						)
				GROUP BY INV.strPartNumber
					,INV.strDesc
					,ISNULL(VEND.strVendName, '')
					,ISNULL(tblVendors.strVendDesc, '')
					,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + '' + tblAccounts.strDesc
					,Inv.decMinimumLevel
					,Inv.decMaxLevel
					,INV.decSumOnHand
					,INV.decSumAlloc
					,INV.decSumOnOrder
					,INV.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,INV.strPartNumber
			END
			ELSE
			BEGIN
				SELECT INV.strPartNumber AS strPartNumber
					,INV.strDesc AS strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,INV.decMaxLevel - (INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf + INV.decSumOnOrder) AS ToOrder
					,ISNULL(VEND.strVendName, '') AS strVendName
					,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc
					,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + '' + tblAccounts.strDesc AS OrderbyCol
					,SUM(tblInvExt.decManuf) AS decSumManuf
					,INV.decMaxLevel AS MaxLevel
					,Sum(INV.decMinimumOrderQuantity) AS MinQty
					,Sum(INV.decEconomicOrderQty) AS EconomicOrderQty
					,Sum(INV.decMinimumOrderQuantity) AS MinimumOrderQuantity
					,INV.decMinimumLevel AS MinimumLevel
					,dbo.GetTransferOrders(INV.strPartNumber, NULL, 1) AS TransferOrder
					,dbo.GetGoodsInTransit(INV.strPartNumber, NULL, 1) AS GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv INV ON tblInvExt.strPartNumber = INV.strPartNumber
				INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
				INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
				LEFT OUTER JOIN tblInvVend VEND ON VEND.strPartNumber = INV.strPartNumber
					AND VEND.bitPreferred = 1
				LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = VEND.strVendName
				WHERE (intType = 1)
					AND (
						(
							(@chkToOrder = 1)
							AND (((INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf) + INV.decSumOnOrder) < INV.decMinimumLevel)
							AND (
								tblAccounts.intGLNumber IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						OR (
							(@chkToOrder = 0)
							AND ((INV.decSumOnHand + INV.decSumOnOrder + INV.decSumAlloc + INV.decSumManuf) <> 0)
							AND (
								tblAccounts.intGLNumber IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						)
					AND INV.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND INV.decSumAlloc > 0
							)
						)
				GROUP BY INV.strPartNumber
					,INV.strDesc
					,ISNULL(VEND.strVendName, '')
					,ISNULL(tblVendors.strVendDesc, '')
					,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + '' + tblAccounts.strDesc
					,Inv.decMinimumLevel
					,Inv.decMaxLevel
					,INV.decSumOnHand
					,INV.decSumAlloc
					,INV.decSumOnOrder
					,INV.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,INV.strDesc
			END
		END
		ELSE
		BEGIN
			IF (@SortDescription = 0)
			BEGIN
				SELECT INV.strPartNumber AS strPartNumber
					,INV.strDesc AS strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,INV.decMaxLevel - (INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf + INV.decSumOnOrder) AS ToOrder
					,'' AS strVendName
					,'' AS strVendDesc
					,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + '' + tblAccounts.strDesc AS OrderbyCol
					,SUM(tblInvExt.decManuf) AS decSumManuf
					,INV.decMaxLevel AS MaxLevel
					,Sum(INV.decMinimumOrderQuantity) AS MinQty
					,Sum(INV.decEconomicOrderQty) AS EconomicOrderQty
					,Sum(INV.decMinimumOrderQuantity) AS MinimumOrderQuantity
					,INV.decMinimumLevel AS MinimumLevel
					,dbo.GetTransferOrders(INV.strPartNumber, NULL, 1) AS TransferOrder
					,dbo.GetGoodsInTransit(INV.strPartNumber, NULL, 1) AS GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv INV ON tblInvExt.strPartNumber = INV.strPartNumber
				INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
				INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
				WHERE (intType = 1)
					AND (
						(
							(@chkToOrder = 1)
							AND (((INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf) + INV.decSumOnOrder) < INV.decMinimumLevel)
							AND (
								tblAccounts.intGLNumber IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						OR (
							(@chkToOrder = 0)
							AND ((INV.decSumOnHand + INV.decSumOnOrder + INV.decSumAlloc + INV.decSumManuf) <> 0)
							AND (
								tblAccounts.intGLNumber IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						)
					AND INV.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND INV.decSumAlloc > 0
							)
						)
				GROUP BY INV.strPartNumber
					,INV.strDesc
					,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + '' + tblAccounts.strDesc
					,Inv.decMinimumLevel
					,Inv.decMaxLevel
					,INV.decSumOnHand
					,INV.decSumAlloc
					,INV.decSumOnOrder
					,INV.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,INV.strDesc
			END
			ELSE
			BEGIN
				SELECT INV.strPartNumber AS strPartNumber
					,INV.strDesc AS strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,INV.decMaxLevel - (INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf + INV.decSumOnOrder) AS ToOrder
					,'' AS strVendName
					,'' AS strVendDesc
					,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + '' + tblAccounts.strDesc AS OrderbyCol
					,SUM(tblInvExt.decManuf) AS decSumManuf
					,INV.decMaxLevel AS MaxLevel
					,Sum(INV.decMinimumOrderQuantity) AS MinQty
					,Sum(INV.decEconomicOrderQty) AS EconomicOrderQty
					,Sum(INV.decMinimumOrderQuantity) AS MinimumOrderQuantity
					,INV.decMinimumLevel AS MinimumLevel
					,dbo.GetTransferOrders(INV.strPartNumber, NULL, 1) AS TransferOrder
					,dbo.GetGoodsInTransit(INV.strPartNumber, NULL, 1) AS GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv INV ON tblInvExt.strPartNumber = INV.strPartNumber
				INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
				INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
				WHERE (intType = 1)
					AND (
						(
							(@chkToOrder = 1)
							AND (((INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf) + INV.decSumOnOrder) < INV.decMinimumLevel)
							AND (
								tblAccounts.intGLNumber IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						OR (
							(@chkToOrder = 0)
							AND ((INV.decSumOnHand + INV.decSumOnOrder + INV.decSumAlloc + INV.decSumManuf) <> 0)
							AND (
								tblAccounts.intGLNumber IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						)
					AND INV.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND INV.decSumAlloc > 0
							)
						)
				GROUP BY INV.strPartNumber
					,INV.strDesc
					,CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + '' + tblAccounts.strDesc
					,Inv.decMinimumLevel
					,Inv.decMaxLevel
					,INV.decSumOnHand
					,INV.decSumAlloc
					,INV.decSumOnOrder
					,INV.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,INV.strDesc
			END
		END
	END
	ELSE IF (@Filter = 1) --Category            
	BEGIN
		IF (@chkPreferredVendor = 1)
		BEGIN
			IF (@SortDescription = 0)
			BEGIN
				SELECT INV.strPartNumber AS strPartNumber
					,INV.strDesc AS strDesc
					,INV.decSumOnHand AS decSumOnHand
					,INV.intReorderQty AS intReorderQty
					,INV.decSumOnOrder AS decSumOnOrder
					,INV.decSumAlloc AS decSumAlloc
					,INV.decMaxLevel - (INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf + INV.decSumOnOrder) AS ToOrder
					,ISNULL(VEND.strVendName, '') AS strVendName
					,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc
					,INV.strCategory AS OrderbyCol
					,INV.decSumManuf AS decSumManuf
					,INV.decMaxLevel AS MaxLevel
					,Sum(INV.decMinimumOrderQuantity) AS MinQty
					,Sum(INV.decEconomicOrderQty) AS EconomicOrderQty
					,Sum(INV.decMinimumOrderQuantity) AS MinimumOrderQuantity
					,INV.decMinimumLevel AS MinimumLevel
					,dbo.GetTransferOrders(INV.strPartNumber, NULL, 1) AS TransferOrder
					,dbo.GetGoodsInTransit(INV.strPartNumber, NULL, 1) AS GoodsInTransit
				FROM tblInv INV
				INNER JOIN tblInvExt ON tblInvExt.strPartNumber = INV.strPartNumber
				LEFT JOIN tblInvVend VEND ON VEND.strPartNumber = INV.strPartNumber
					AND VEND.bitPreferred = 1
				LEFT JOIN tblVendors ON tblVendors.strVendName = VEND.strVendName
				WHERE (intType = 1)
					AND Inv.bitOtherCmp = 0
					AND (
						(
							(@chkToOrder = 1)
							AND (((INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf) + INV.decSumOnOrder) < INV.decMinimumLevel)
							AND (
								INV.strCategory IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						OR (
							(@chkToOrder = 0)
							AND ((INV.decSumOnHand + INV.decSumOnOrder + INV.decSumAlloc + INV.decSumManuf) <> 0)
							AND (
								INV.strCategory IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						)
					AND INV.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND INV.decSumAlloc > 0
							)
						)
				GROUP BY INV.strPartNumber
					,INV.strDesc
					,INV.decSumOnHand
					,INV.intReorderQty
					,INV.decSumOnOrder
					,INV.decSumAlloc
					,INV.decMaxLevel
					,INV.strCategory
					,ISNULL(VEND.strVendName, '')
					,ISNULL(tblVendors.strVendDesc, '')
					,Inv.decMinimumLevel
					,Inv.decMaxLevel
					,INV.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,INV.strPartNumber
			END
			ELSE
			BEGIN
				SELECT INV.strPartNumber AS strPartNumber
					,INV.strDesc AS strDesc
					,INV.decSumOnHand AS decSumOnHand
					,INV.intReorderQty AS intReorderQty
					,INV.decSumOnOrder AS decSumOnOrder
					,INV.decSumAlloc AS decSumAlloc
					,INV.decMaxLevel - (INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf + INV.decSumOnOrder) AS ToOrder
					,ISNULL(VEND.strVendName, '') AS strVendName
					,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc
					,INV.strCategory AS OrderbyCol
					,INV.decSumManuf AS decSumManuf
					,INV.decMaxLevel AS MaxLevel
					,Sum(INV.decMinimumOrderQuantity) AS MinQty
					,Sum(INV.decEconomicOrderQty) AS EconomicOrderQty
					,Sum(INV.decMinimumOrderQuantity) AS MinimumOrderQuantity
					,INV.decMinimumLevel AS MinimumLevel
					,dbo.GetTransferOrders(INV.strPartNumber, NULL, 1) AS TransferOrder
					,dbo.GetGoodsInTransit(INV.strPartNumber, NULL, 1) AS GoodsInTransit
				FROM tblInv INV
				LEFT JOIN tblInvVend VEND ON VEND.strPartNumber = INV.strPartNumber
					AND VEND.bitPreferred = 1
				LEFT JOIN tblVendors ON tblVendors.strVendName = VEND.strVendName
				WHERE (intType = 1)
					AND Inv.bitOtherCmp = 0
					AND (
						(
							(@chkToOrder = 1)
							AND (((INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf) + INV.decSumOnOrder) < INV.decMinimumLevel)
							AND (
								INV.strCategory IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						OR (
							(@chkToOrder = 0)
							AND ((INV.decSumOnHand + INV.decSumOnOrder + INV.decSumAlloc + INV.decSumManuf) <> 0)
							AND (
								INV.strCategory IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						)
					AND INV.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND INV.decSumAlloc > 0
							)
						)
				GROUP BY INV.strPartNumber
					,INV.strDesc
					,INV.decSumOnHand
					,INV.intReorderQty
					,INV.decSumOnOrder
					,INV.decSumAlloc
					,INV.decMaxLevel
					,INV.strCategory
					,ISNULL(VEND.strVendName, '')
					,ISNULL(tblVendors.strVendDesc, '')
					,Inv.decMinimumLevel
					,Inv.decMaxLevel
					,INV.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,INV.strDesc
			END
		END
		ELSE
		BEGIN
			IF (@SortDescription = 0)
			BEGIN
				SELECT INV.strPartNumber AS strPartNumber
					,INV.strDesc AS strDesc
					,INV.decSumOnHand AS decSumOnHand
					,INV.intReorderQty AS intReorderQty
					,INV.decSumOnOrder AS decSumOnOrder
					,INV.decSumAlloc AS decSumAlloc
					,INV.decMaxLevel - (INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf + INV.decSumOnOrder) AS ToOrder
					,'' AS strVendName
					,'' AS strVendDesc
					,INV.strCategory AS OrderbyCol
					,INV.decSumManuf AS decSumManuf
					,INV.decMaxLevel AS MaxLevel
					,Sum(INV.decMinimumOrderQuantity) AS MinQty
					,Sum(INV.decEconomicOrderQty) AS EconomicOrderQty
					,Sum(INV.decMinimumOrderQuantity) AS MinimumOrderQuantity
					,INV.decMinimumLevel AS MinimumLevel
					,dbo.GetTransferOrders(INV.strPartNumber, NULL, 1) AS TransferOrder
					,dbo.GetGoodsInTransit(INV.strPartNumber, NULL, 1) AS GoodsInTransit
				FROM tblInv INV
				INNER JOIN tblInvExt ON tblInvExt.strPartNumber = INV.strPartNumber
				WHERE (intType = 1)
					AND Inv.bitOtherCmp = 0
					AND (
						(
							(@chkToOrder = 1)
							AND (((INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf) + INV.decSumOnOrder) < INV.decMinimumLevel)
							AND (
								INV.strCategory IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						OR (
							(@chkToOrder = 0)
							AND ((INV.decSumOnHand + INV.decSumOnOrder + INV.decSumAlloc + INV.decSumManuf) <> 0)
							AND (
								INV.strCategory IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						)
					AND INV.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND INV.decSumAlloc > 0
							)
						)
				GROUP BY INV.strPartNumber
					,INV.strDesc
					,INV.decSumOnHand
					,INV.intReorderQty
					,INV.decSumOnOrder
					,INV.decSumAlloc
					,INV.decMaxLevel
					,INV.strCategory
					,Inv.decMinimumLevel
					,Inv.decMaxLevel
					,INV.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,INV.strPartNumber
			END
			ELSE
			BEGIN
				SELECT INV.strPartNumber AS strPartNumber
					,INV.strDesc AS strDesc
					,INV.decSumOnHand AS decSumOnHand
					,INV.intReorderQty AS intReorderQty
					,INV.decSumOnOrder AS decSumOnOrder
					,INV.decSumAlloc AS decSumAlloc
					,INV.decMaxLevel - (INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf + INV.decSumOnOrder) AS ToOrder
					,'' AS strVendName
					,'' AS strVendDesc
					,INV.strCategory AS OrderbyCol
					,INV.decSumManuf AS decSumManuf
					,INV.decMaxLevel AS MaxLevel
					,Sum(INV.decMinimumOrderQuantity) AS MinQty
					,Sum(INV.decEconomicOrderQty) AS EconomicOrderQty
					,Sum(INV.decMinimumOrderQuantity) AS MinimumOrderQuantity
					,INV.decMinimumLevel AS MinimumLevel
					,dbo.GetTransferOrders(INV.strPartNumber, NULL, 1) AS TransferOrder
					,dbo.GetGoodsInTransit(INV.strPartNumber, NULL, 1) AS GoodsInTransit
				FROM tblInv INV
				INNER JOIN tblInvExt ON tblInvExt.strPartNumber = INV.strPartNumber
				WHERE (intType = 1)
					AND Inv.bitOtherCmp = 0
					AND (
						(
							(@chkToOrder = 1)
							AND (((INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf) + INV.decSumOnOrder) < INV.decMinimumLevel)
							AND (
								INV.strCategory IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						OR (
							(@chkToOrder = 0)
							AND ((INV.decSumOnHand + INV.decSumOnOrder + INV.decSumAlloc + INV.decSumManuf) <> 0)
							AND (
								INV.strCategory IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						)
					AND INV.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND INV.decSumAlloc > 0
							)
						)
				GROUP BY INV.strPartNumber
					,INV.strDesc
					,INV.decSumOnHand
					,INV.intReorderQty
					,INV.decSumOnOrder
					,INV.decSumAlloc
					,INV.decMaxLevel
					,INV.strCategory
					,Inv.decMinimumLevel
					,Inv.decMaxLevel
					,INV.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,INV.strDesc
			END
		END
	END
	ELSE IF (@Filter = 2) --AccountSets            
	BEGIN
		IF (@chkPreferredVendor = 1)
		BEGIN
			IF (@SortDescription = 0)
			BEGIN
				SELECT INV.strPartNumber AS strPartNumber
					,INV.strDesc AS strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,INV.decMaxLevel - (INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf + INV.decSumOnOrder) AS ToOrder
					,ISNULL(VEND.strVendName, '') AS strVendName
					,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc
					,tblInvExt.strAcctSet AS OrderbyCol
					,SUM(tblInvExt.decManuf) AS decSumManuf
					,INV.decMaxLevel AS MaxLevel
					,Sum(INV.decMinimumOrderQuantity) AS MinQty
					,Sum(INV.decEconomicOrderQty) AS EconomicOrderQty
					,Sum(INV.decMinimumOrderQuantity) AS MinimumOrderQuantity
					,INV.decMinimumLevel AS MinimumLevel
					,dbo.GetTransferOrders(INV.strPartNumber, NULL, 1) AS TransferOrder
					,dbo.GetGoodsInTransit(INV.strPartNumber, NULL, 1) AS GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv INV ON tblInvExt.strPartNumber = INV.strPartNumber
				LEFT OUTER JOIN tblInvVend VEND ON VEND.strPartNumber = INV.strPartNumber
					AND VEND.bitPreferred = 1
				LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = VEND.strVendName
				WHERE (intType = 1)
					AND (
						(
							(@chkToOrder = 1)
							AND (((INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf) + INV.decSumOnOrder) < INV.decMinimumLevel)
							AND (
								tblInvExt.strAcctSet IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						OR (
							(@chkToOrder = 0)
							AND ((INV.decSumOnHand + INV.decSumOnOrder + INV.decSumAlloc + INV.decSumManuf) <> 0)
							AND (
								tblInvExt.strAcctSet IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						)
					AND INV.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND INV.decSumAlloc > 0
							)
						)
				GROUP BY INV.strPartNumber
					,INV.strDesc
					,ISNULL(VEND.strVendName, '')
					,ISNULL(tblVendors.strVendDesc, '')
					,tblInvExt.strAcctSet
					,Inv.decMinimumLevel
					,Inv.decMaxLevel
					,INV.decSumOnHand
					,INV.decSumAlloc
					,INV.decSumOnOrder
					,INV.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,INV.strPartNumber
			END
			ELSE
			BEGIN
				SELECT INV.strPartNumber AS strPartNumber
					,INV.strDesc AS strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,INV.decMaxLevel - (INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf + INV.decSumOnOrder) AS ToOrder
					,ISNULL(VEND.strVendName, '') AS strVendName
					,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc
					,tblInvExt.strAcctSet AS OrderbyCol
					,SUM(tblInvExt.decManuf) AS decSumManuf
					,INV.decMaxLevel AS MaxLevel
					,Sum(INV.decMinimumOrderQuantity) AS MinQty
					,Sum(INV.decEconomicOrderQty) AS EconomicOrderQty
					,Sum(INV.decMinimumOrderQuantity) AS MinimumOrderQuantity
					,INV.decMinimumLevel AS MinimumLevel
					,dbo.GetTransferOrders(INV.strPartNumber, NULL, 1) AS TransferOrder
					,dbo.GetGoodsInTransit(INV.strPartNumber, NULL, 1) AS GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv INV ON tblInvExt.strPartNumber = INV.strPartNumber
				LEFT OUTER JOIN tblInvVend VEND ON VEND.strPartNumber = INV.strPartNumber
					AND VEND.bitPreferred = 1
				LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = VEND.strVendName
				WHERE (intType = 1)
					AND (
						(
							(@chkToOrder = 1)
							AND (((INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf) + INV.decSumOnOrder) < INV.decMinimumLevel)
							AND (
								tblInvExt.strAcctSet IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						OR (
							(@chkToOrder = 0)
							AND ((INV.decSumOnHand + INV.decSumOnOrder + INV.decSumAlloc + INV.decSumManuf) <> 0)
							AND (
								tblInvExt.strAcctSet IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						)
					AND INV.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND INV.decSumAlloc > 0
							)
						)
				GROUP BY INV.strPartNumber
					,INV.strDesc
					,ISNULL(VEND.strVendName, '')
					,ISNULL(tblVendors.strVendDesc, '')
					,tblInvExt.strAcctSet
					,Inv.decMinimumLevel
					,Inv.decMaxLevel
					,INV.decSumOnHand
					,INV.decSumAlloc
					,INV.decSumOnOrder
					,INV.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,INV.strDesc
			END
		END
		ELSE
		BEGIN
			IF (@SortDescription = 0)
			BEGIN
				SELECT INV.strPartNumber AS strPartNumber
					,INV.strDesc AS strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,INV.decMaxLevel - (INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf + INV.decSumOnOrder) AS ToOrder
					,'' AS strVendName
					,'' AS strVendDesc
					,tblInvExt.strAcctSet AS OrderbyCol
					,SUM(tblInvExt.decManuf) AS decSumManuf
					,INV.decMaxLevel AS MaxLevel
					,Sum(INV.decMinimumOrderQuantity) AS MinQty
					,Sum(INV.decEconomicOrderQty) AS EconomicOrderQty
					,Sum(INV.decMinimumOrderQuantity) AS MinimumOrderQuantity
					,INV.decMinimumLevel AS MinimumLevel
					,dbo.GetTransferOrders(INV.strPartNumber, NULL, 1) AS TransferOrder
					,dbo.GetGoodsInTransit(INV.strPartNumber, NULL, 1) AS GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv INV ON tblInvExt.strPartNumber = INV.strPartNumber
				WHERE (intType = 1)
					AND (
						(
							(@chkToOrder = 1)
							AND (((INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf) + INV.decSumOnOrder) < INV.decMinimumLevel)
							AND (
								tblInvExt.strAcctSet IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						OR (
							(@chkToOrder = 0)
							AND ((INV.decSumOnHand + INV.decSumOnOrder + INV.decSumAlloc + INV.decSumManuf) <> 0)
							AND (
								tblInvExt.strAcctSet IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						)
					AND INV.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND INV.decSumAlloc > 0
							)
						)
				GROUP BY INV.strPartNumber
					,INV.strDesc
					,tblInvExt.strAcctSet
					,Inv.decMinimumLevel
					,Inv.decMaxLevel
					,INV.decSumOnHand
					,INV.decSumAlloc
					,INV.decSumOnOrder
					,INV.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,INV.strPartNumber
			END
			ELSE
			BEGIN
				SELECT INV.strPartNumber AS strPartNumber
					,INV.strDesc AS strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,INV.decMaxLevel - (INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf + INV.decSumOnOrder) AS ToOrder
					,'' AS strVendName
					,'' AS strVendDesc
					,tblInvExt.strAcctSet AS OrderbyCol
					,SUM(tblInvExt.decManuf) AS decSumManuf
					,INV.decMaxLevel AS MaxLevel
					,Sum(INV.decMinimumOrderQuantity) AS MinQty
					,Sum(INV.decEconomicOrderQty) AS EconomicOrderQty
					,Sum(INV.decMinimumOrderQuantity) AS MinimumOrderQuantity
					,INV.decMinimumLevel AS MinimumLevel
					,dbo.GetTransferOrders(INV.strPartNumber, NULL, 1) AS TransferOrder
					,dbo.GetGoodsInTransit(INV.strPartNumber, NULL, 1) AS GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv INV ON tblInvExt.strPartNumber = INV.strPartNumber
				WHERE (intType = 1)
					AND (
						(
							(@chkToOrder = 1)
							AND (((INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf) + INV.decSumOnOrder) < INV.decMinimumLevel)
							AND (
								tblInvExt.strAcctSet IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						OR (
							(@chkToOrder = 0)
							AND ((INV.decSumOnHand + INV.decSumOnOrder + INV.decSumAlloc + INV.decSumManuf) <> 0)
							AND (
								tblInvExt.strAcctSet IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						)
					AND INV.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND INV.decSumAlloc > 0
							)
						)
				GROUP BY INV.strPartNumber
					,INV.strDesc
					,tblInvExt.strAcctSet
					,Inv.decMinimumLevel
					,Inv.decMaxLevel
					,INV.decSumOnHand
					,INV.decSumAlloc
					,INV.decSumOnOrder
					,INV.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,INV.strDesc
			END
		END
	END
	ELSE IF (
			@Filter = 3
			OR @Filter = 7
			) --Items            
	BEGIN
		IF (@chkPreferredVendor = 1)
		BEGIN
			IF (@SortDescription = 0)
			BEGIN
				SELECT INV.strPartNumber AS strPartNumber
					,INV.strDesc AS strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,INV.decMaxLevel - (INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf + INV.decSumOnOrder) AS ToOrder
					,ISNULL(tblInvVend.strVendName, '') AS strVendName
					,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc
					,'' AS OrderbyCol
					,INV.decSumManuf AS decSumManuf
					,INV.decMaxLevel AS MaxLevel
					,Sum(INV.decMinimumOrderQuantity) AS MinQty
					,Sum(INV.decEconomicOrderQty) AS EconomicOrderQty
					,Sum(INV.decMinimumOrderQuantity) AS MinimumOrderQuantity
					,INV.decMinimumLevel AS MinimumLevel
					,dbo.GetTransferOrders(INV.strPartNumber, NULL, 1) AS TransferOrder
					,dbo.GetGoodsInTransit(INV.strPartNumber, NULL, 1) AS GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv INV ON tblInvExt.strPartNumber = INV.strPartNumber
				LEFT OUTER JOIN tblInvVend ON tblInvVend.strPartNumber = INV.strPartNumber
					AND tblInvVend.bitPreferred = 1
				LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = tblInvVend.strVendName
				WHERE (INV.intType = 1)
					AND (
						(
							(@chkToOrder = 1)
							AND (((INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf) + INV.decSumOnOrder) < INV.decMinimumLevel)
							AND (
								INV.strPartNumber IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						OR (
							(@chkToOrder = 0)
							AND ((INV.decSumOnHand + INV.decSumOnOrder + INV.decSumAlloc + INV.decSumManuf) <> 0)
							AND (
								INV.strPartNumber IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						)
					AND INV.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND INV.decSumAlloc > 0
							)
						)
				GROUP BY INV.strPartNumber
					,INV.strDesc
					,INV.decSumOnHand
					,INV.intReorderQty
					,INV.decSumOnOrder
					,INV.decSumAlloc
					,INV.decMaxLevel
					,INV.strCategory
					,ISNULL(tblInvVend.strVendName, '')
					,ISNULL(tblVendors.strVendName, '')
					,ISNULL(tblVendors.strVendDesc, '')
					,Inv.decMinimumLevel
					,Inv.decMaxLevel
					,INV.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,INV.strPartNumber
			END
			ELSE
			BEGIN
				SELECT INV.strPartNumber AS strPartNumber
					,INV.strDesc AS strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,INV.decMaxLevel - (INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf + INV.decSumOnOrder) AS ToOrder
					,ISNULL(tblInvVend.strVendName, '') AS strVendName
					,ISNULL(tblVendors.strVendDesc, '') AS strVendDesc
					,'' AS OrderbyCol
					,INV.decSumManuf AS decSumManuf
					,INV.decMaxLevel AS MaxLevel
					,Sum(INV.decMinimumOrderQuantity) AS MinQty
					,Sum(INV.decEconomicOrderQty) AS EconomicOrderQty
					,Sum(INV.decMinimumOrderQuantity) AS MinimumOrderQuantity
					,INV.decMinimumLevel AS MinimumLevel
					,dbo.GetTransferOrders(INV.strPartNumber, NULL, 1) AS TransferOrder
					,dbo.GetGoodsInTransit(INV.strPartNumber, NULL, 1) AS GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv INV ON tblInvExt.strPartNumber = INV.strPartNumber
				LEFT OUTER JOIN tblInvVend ON tblInvVend.strPartNumber = INV.strPartNumber
					AND tblInvVend.bitPreferred = 1
				LEFT OUTER JOIN tblVendors ON tblVendors.strVendName = tblInvVend.strVendName
				WHERE (INV.intType = 1)
					AND (
						(
							(@chkToOrder = 1)
							AND (((INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf) + INV.decSumOnOrder) < INV.decMinimumLevel)
							AND (
								INV.strPartNumber IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						OR (
							(@chkToOrder = 0)
							AND ((INV.decSumOnHand + INV.decSumOnOrder + INV.decSumAlloc + INV.decSumManuf) <> 0)
							AND (
								INV.strPartNumber IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						)
					AND INV.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND INV.decSumAlloc > 0
							)
						)
				GROUP BY INV.strPartNumber
					,INV.strDesc
					,INV.decSumOnHand
					,INV.intReorderQty
					,INV.decSumOnOrder
					,INV.decSumAlloc
					,INV.decMaxLevel
					,INV.strCategory
					,ISNULL(tblInvVend.strVendName, '')
					,ISNULL(tblVendors.strVendName, '')
					,ISNULL(tblVendors.strVendDesc, '')
					,Inv.decMinimumLevel
					,Inv.decMaxLevel
					,INV.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,INV.strDesc
			END
		END
		ELSE
		BEGIN
			IF (@SortDescription = 0)
			BEGIN
				SELECT INV.strPartNumber AS strPartNumber
					,INV.strDesc AS strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,INV.decMaxLevel - (INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf + INV.decSumOnOrder) AS ToOrder
					,'' AS strVendName
					,'' AS strVendDesc
					,'' AS OrderbyCol
					,INV.decSumManuf AS decSumManuf
					,INV.decMaxLevel AS MaxLevel
					,Sum(INV.decMinimumOrderQuantity) AS MinQty
					,Sum(INV.decEconomicOrderQty) AS EconomicOrderQty
					,Sum(INV.decMinimumOrderQuantity) AS MinimumOrderQuantity
					,INV.decMinimumLevel AS MinimumLevel
					,dbo.GetTransferOrders(INV.strPartNumber, NULL, 1) AS TransferOrder
					,dbo.GetGoodsInTransit(INV.strPartNumber, NULL, 1) AS GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv INV ON tblInvExt.strPartNumber = INV.strPartNumber
				WHERE (INV.intType = 1)
					AND (
						(
							(@chkToOrder = 1)
							AND (((INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf) + INV.decSumOnOrder) < INV.decMinimumLevel)
							AND (
								INV.strPartNumber IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						OR (
							(@chkToOrder = 0)
							AND ((INV.decSumOnHand + INV.decSumOnOrder + INV.decSumAlloc + INV.decSumManuf) <> 0)
							AND (
								INV.strPartNumber IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						)
					AND INV.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND INV.decSumAlloc > 0
							)
						)
				GROUP BY INV.strPartNumber
					,INV.strDesc
					,INV.decSumOnHand
					,INV.intReorderQty
					,INV.decSumOnOrder
					,INV.decSumAlloc
					,INV.decMaxLevel
					,INV.strCategory
					,Inv.decMinimumLevel
					,Inv.decMaxLevel
					,INV.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,INV.strPartNumber
			END
			ELSE
			BEGIN
				SELECT INV.strPartNumber AS strPartNumber
					,INV.strDesc AS strDesc
					,SUM(tblInvExt.decOnHand) AS decSumOnHand
					,SUM(tblInvExt.intReorderPoint) AS intReorderQty
					,SUM(tblInvExt.decOnOrder) AS decSumOnOrder
					,SUM(tblInvExt.decAlloc) AS decSumAlloc
					,INV.decMaxLevel - (INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf + INV.decSumOnOrder) AS ToOrder
					,'' AS strVendName
					,'' AS strVendDesc
					,'' AS OrderbyCol
					,INV.decSumManuf AS decSumManuf
					,INV.decMaxLevel AS MaxLevel
					,Sum(INV.decMinimumOrderQuantity) AS MinQty
					,Sum(INV.decEconomicOrderQty) AS EconomicOrderQty
					,Sum(INV.decMinimumOrderQuantity) AS MinimumOrderQuantity
					,INV.decMinimumLevel AS MinimumLevel
					,dbo.GetTransferOrders(INV.strPartNumber, NULL, 1) AS TransferOrder
					,dbo.GetGoodsInTransit(INV.strPartNumber, NULL, 1) AS GoodsInTransit
				FROM tblInvExt
				LEFT JOIN tblInv INV ON tblInvExt.strPartNumber = INV.strPartNumber
				WHERE (INV.intType = 1)
					AND (
						(
							(@chkToOrder = 1)
							AND (((INV.decSumOnHand - INV.decSumAlloc - INV.decSumManuf) + INV.decSumOnOrder) < INV.decMinimumLevel)
							AND (
								INV.strPartNumber IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						OR (
							(@chkToOrder = 0)
							AND ((INV.decSumOnHand + INV.decSumOnOrder + INV.decSumAlloc + INV.decSumManuf) <> 0)
							AND (
								INV.strPartNumber IN (
									SELECT *
									FROM fnSplitStringAsTable(@ItemList, ',')
									)
								)
							)
						)
					AND INV.bitInactive = CASE 
						WHEN @IsInactive = 1
							THEN 1
						WHEN @IsActive = 1
							THEN 0
						END
					AND (
						@chkOpenSO <> 1
						OR (
							@chkOpenSO = 1
							AND INV.decSumAlloc > 0
							)
						)
				GROUP BY INV.strPartNumber
					,INV.strDesc
					,INV.decSumOnHand
					,INV.intReorderQty
					,INV.decSumOnOrder
					,INV.decSumAlloc
					,INV.decMaxLevel
					,INV.strCategory
					,Inv.decMinimumLevel
					,Inv.decMaxLevel
					,INV.decSumManuf
				ORDER BY OrderbyCol
					,strVendName
					,INV.strDesc
			END
		END
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GeRptInvQtyLocListReportData]          
(          
@ItemList nvarchar(max),          
@Filter int,          
@IsActive bit,             
@IsInActive bit,   
@OptAll bit,     
@SQstrLocName nvarchar(max),    
@SortDescription bit          
)          
AS          
BEGIN          
IF(@Filter = 0) --Assets          
BEGIN  
IF(@OptAll = 0)  
BEGIN  
SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, tblInvExt.strLocName, CAST(tblAccounts.intGLNumber AS varchar(50)) + ' ' + tblAccounts.strDesc AS OrderbyCol, ser.intType, tblInvExt.decManuf FROM tblInvExt INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber LEFT JOIN tblInvSerialTypes AS ser ON ser.strInvSerialType = tblInv.strInvSerialType  WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0 OR (tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0) AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,','))) AND (tblInvExt.strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQstrLocName,','))) AND (tblInv.bitInactive = CASE WHEN @Isactive = 1 THEN 0 ELSE tblInv.bitInactive END)        AND (tblInv.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE tblInv.bitInactive END)     
ORDER BY OrderbyCol, tblInvExt.strLocName, tblInv.strPartNumber,tblInv.strDesc   
END  
ELSE  
BEGIN  
SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, tblInvExt.strLocName, CAST(tblAccounts.intGLNumber AS varchar(50)) + ' ' + tblAccounts.strDesc AS OrderbyCol, ser.intType, tblInvExt.decManuf FROM tblInvExt INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber LEFT JOIN tblInvSerialTypes AS ser ON ser.strInvSerialType = tblInv.strInvSerialType  WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0  OR (tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0) AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))   AND (tblInv.bitInactive = CASE WHEN @Isactive = 1 THEN 0 ELSE tblInv.bitInactive END) AND (tblInv.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE tblInv.bitInactive END)         
ORDER BY OrderbyCol, tblInvExt.strLocName, tblInv.strPartNumber,tblInv.strDesc  
END       
END          
ELSE IF(@Filter = 1) --Category          
BEGIN  
IF(@OptAll = 0)  
BEGIN  
SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, tblInvExt.strLocName, tblInv.strCategory AS OrderbyCol, ser.intType, tblInvExt.decManuf FROM tblInvExt INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber LEFT JOIN tblInvSerialTypes AS ser ON ser.strInvSerialType = tblInv.strInvSerialType  WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0 OR (tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0) AND (strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))  AND (tblInvExt.strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQstrLocName,',')))      AND (tblInv.bitInactive = CASE WHEN @Isactive = 1 THEN 0 ELSE tblInv.bitInactive END)        AND (tblInv.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE tblInv.bitInactive END)         
ORDER BY OrderbyCol, tblInvExt.strLocName, tblInv.strPartNumber,tblInv.strDesc  
END  
ELSE  
BEGIN  
SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, tblInvExt.strLocName, tblInv.strCategory AS OrderbyCol, ser.intType, tblInvExt.decManuf FROM tblInvExt INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber LEFT JOIN tblInvSerialTypes AS ser ON ser.strInvSerialType = tblInv.strInvSerialType  WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0  OR (tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0) AND (strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))      AND (tblInv.bitInactive = CASE WHEN @Isactive = 1 THEN 0 ELSE tblInv.bitInactive END)        AND (tblInv.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE tblInv.bitInactive END)         
ORDER BY OrderbyCol, tblInvExt.strLocName, tblInv.strPartNumber,tblInv.strDesc  
END            
END          
ELSE IF(@Filter = 2) --AccountSets          
BEGIN  
IF(@OptAll = 0)  
BEGIN  
SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, tblInvExt.strLocName, tblInvExt.strAcctSet AS OrderbyCol, ser.intType, tblInvExt.decManuf FROM tblInvExt INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber LEFT JOIN tblInvSerialTypes AS ser ON ser.strInvSerialType = tblInv.strInvSerialType  WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0   OR (tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0 ) AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList,','))) AND (tblInvExt.strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQstrLocName,',')))      AND (tblInv.bitInactive = CASE WHEN @Isactive = 1 THEN 0 ELSE tblInv.bitInactive END)        AND (tblInv.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE tblInv.bitInactive END)         
ORDER BY OrderbyCol, tblInvExt.strLocName, tblInv.strPartNumber,tblInv.strDesc  
END  
ELSE  
BEGIN  
SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, tblInvExt.strLocName, tblInvExt.strAcctSet AS OrderbyCol, ser.intType, tblInvExt.decManuf FROM tblInvExt INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber LEFT JOIN tblInvSerialTypes AS ser ON ser.strInvSerialType = tblInv.strInvSerialType  WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0   OR (tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0) AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))   AND (tblInv.bitInactive = CASE WHEN @Isactive = 1 THEN 0 ELSE tblInv.bitInactive END)        AND (tblInv.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE tblInv.bitInactive END)         
ORDER BY OrderbyCol, tblInvExt.strLocName, tblInv.strPartNumber,tblInv.strDesc  
END              
END          
ELSE IF(@Filter = 3) --Items          
BEGIN  
IF(@OptAll = 0)  
BEGIN  
SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, tblInvExt.strLocName, '' AS OrderbyCol, ser.intType, tblInvExt.decManuf FROM tblInvExt INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber LEFT JOIN tblInvSerialTypes AS ser ON ser.strInvSerialType = tblInv.strInvSerialType  WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0   OR (tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0) AND (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,','))) AND (tblInvExt.strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQstrLocName,',')))      AND (tblInv.bitInactive = CASE WHEN @Isactive = 1 THEN 0 ELSE tblInv.bitInactive END)        AND (tblInv.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE tblInv.bitInactive END)         
ORDER BY OrderbyCol, tblInvExt.strLocName, tblInv.strPartNumber,tblInv.strDesc  
END  
ELSE  
BEGIN  
SELECT tblInv.strPartNumber, tblInv.strDesc, tblInvExt.decAvail, tblInvExt.decAlloc, tblInvExt.decOnHand, tblInvExt.decValue, tblInvExt.strLocName, '' AS OrderbyCol, ser.intType, tblInvExt.decManuf FROM tblInvExt INNER JOIN tblInv ON tblInvExt.strPartNumber = tblInv.strPartNumber LEFT JOIN tblInvSerialTypes AS ser ON ser.strInvSerialType = tblInv.strInvSerialType  WHERE (tblInv.intType = 1) AND ((tblInvExt.decOnHand + tblInvExt.decValue) <> 0  OR (tblInvExt.decOnHand + tblInvExt.decOnOrder + tblInvExt.decAlloc + tblInvExt.decManuf) <> 0) AND (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))    AND (tblInv.bitInactive = CASE WHEN @Isactive = 1 THEN 0 ELSE tblInv.bitInactive END)        AND (tblInv.bitInactive = CASE WHEN @IsInActive = 1 THEN 1 ELSE tblInv.bitInactive END)         
ORDER BY OrderbyCol, tblInvExt.strLocName, tblInv.strPartNumber,tblInv.strDesc  
END      
END    
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GeRptInvQtyLoctblInvSynSerialNumbersListReportData]          
(          
@ItemList nvarchar(max),          
@Filter int,          
@chkSerialLotNumbers bit,  
@OptAll bit,     
@SQLocName nvarchar(max),    
@SQTypeLot bit,  
@SQTypeSN bit          
)          
AS          
BEGIN  
IF(@Filter = 0) --Assets
BEGIN
SELECT  ISE.strPartNumber AS PartNumber, ISE.strSerialNumber AS SerialNumber,ISE.strLocName AS LocName,ISE.decQty, GETDATE() AS ExpiryDate, CAST(ISE.bitDimensionExist AS BIT) AS DimensionExist, ISE.strDimension AS Dimension, ROUND( CASE WHEN IE2.decValue = 0 OR IE2.decOnHand = 0 THEN 0 ELSE (IE2.decValue / IE2.decOnHand) * ISE.decQty END,2) AS [Value], @SQTypeSN AS [Type], Z.bitTrackExpiryDate AS TrackExpiryDate FROM tblInvSerialExt ISE
INNER JOIN ( SELECT INV.strPartNumber,IST.bitTrackExpiryDate, IE.strLocName FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType INNER JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber INNER JOIN tblAccountSets ACS ON IE.strAcctSet = ACS.strAcctSet
WHERE INV.bitInvSerialType = 1 AND IST.intType = @SQTypeSN AND (@optAll = 1 OR IE.strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQLocName,','))) AND ACS.intGLAsset IN (SELECT * FROM fnSplitStringAsTable(@ItemList,','))) Z ON ISE.strPartNumber = Z.strPartNumber AND ISE.strLocName = Z.strLocName INNER JOIN tblInvExt IE2 
ON ISE.strPartNumber = IE2.strPartNumber AND ISE.strLocName = IE2.strLocName WHERE ISE.decQty > 0
UNION ALL
SELECT ILE.strPartNumber AS PartNumber,ILE.strLotNumber AS SerialNumber,ILE.strLocName AS LocName,ILE.decQty,ILE.dteExpiryDate AS ExpiryDate, CAST(0 AS BIT) AS DimensionExist,'' AS Dimension,ROUND(CASE WHEN IE2.decValue = 0 OR IE2.decOnHand = 0 THEN 0 ELSE (IE2.decValue / IE2.decOnHand) * ILE.decQty END,2) AS [Value],@SQTypeLot AS [Type], Z.bitTrackExpiryDate AS TrackExpiryDate FROM tblInvLotExt ILE
INNER JOIN (SELECT INV.strPartNumber, IST.bitTrackExpiryDate, IE.strLocName FROM tblInv INV INNER JOIN tblInvSerialTypes IST  ON INV.strInvSerialType = IST.strInvSerialType INNER JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber INNER JOIN tblAccountSets ACS  ON IE.strAcctSet = ACS.strAcctSet WHERE INV.bitInvSerialType = 1 AND IST.intType = @SQTypeLot AND (@optAll = 1  OR IE.strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQLocName,','))) AND ACS.intGLAsset IN (SELECT * FROM fnSplitStringAsTable(@ItemList,','))) Z  ON ILE.strPartNumber = Z.strPartNumber AND ILE.strLocName = Z.strLocName INNER JOIN tblInvExt IE2 
ON ILE.strPartNumber = IE2.strPartNumber AND ILE.strLocName = IE2.strLocName WHERE ILE.decQty > 0
END     
ELSE IF(@Filter = 1) --Category          
BEGIN  
IF(@OptAll = 0)  
BEGIN  
SELECT ISE.strPartNumber AS PartNumber, ISE.strSerialNumber AS SerialNumber, ISE.strLocName AS LocName, ISE.decQty, GETDATE() AS ExpiryDate, ISE.bitDimensionExist AS DimensionExist, ISE.strDimension AS Dimension FROM tblInvSerialExt ISE INNER JOIN (SELECT INV.strPartNumber      FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType     WHERE (INV.bitInvSerialType = 1) AND (IST.intType = @SQTypeSN) AND (INV.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))      ) Z ON ISE.strPartNumber = Z.strPartNumber     WHERE (ISE.decQty > 0) AND (ISE.strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQLocName,',')))  
UNION ALL 
SELECT ILE.strPartNumber AS PartNumber, ILE.strLotNumber AS SerialNumber, ILE.strLocName AS LocName, ILE.decQty, ILE.dteExpiryDate AS ExpiryDate, CAST(0 AS BIT) AS DimensionExist, '' AS Dimension FROM tblInvLotExt ILE INNER JOIN (SELECT INV.strPartNumber 
FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType  
WHERE (INV.bitInvSerialType = 1) AND (IST.intType = @SQTypeLot) AND (INV.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))  
) Z ON ILE.strPartNumber = Z.strPartNumber  
WHERE (ILE.decQty > 0) AND (ILE.strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQLocName,',')))  
END  
ELSE  
BEGIN  
SELECT ISE.strPartNumber AS PartNumber, ISE.strSerialNumber AS SerialNumber, ISE.strLocName AS LocName, ISE.decQty, GETDATE() AS ExpiryDate, ISE.bitDimensionExist AS DimensionExist, ISE.strDimension AS Dimension FROM tblInvSerialExt ISE INNER JOIN (SELECT INV.strPartNumber   
FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType  
WHERE (INV.bitInvSerialType = 1) AND (IST.intType = @SQTypeSN) AND (INV.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))   
) Z ON ISE.strPartNumber = Z.strPartNumber  
WHERE (ISE.decQty > 0)   
UNION ALL SELECT ILE.strPartNumber AS PartNumber, ILE.strLotNumber AS SerialNumber, ILE.strLocName AS LocName, ILE.decQty, ILE.dteExpiryDate AS ExpiryDate, CAST(0 AS BIT) AS DimensionExist, '' AS Dimension FROM tblInvLotExt ILE INNER JOIN (SELECT INV.strPartNumber 
FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType  
WHERE (INV.bitInvSerialType = 1) AND (IST.intType = @SQTypeLot) AND (INV.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))  
) Z ON ILE.strPartNumber = Z.strPartNumber  
WHERE (ILE.decQty > 0)   
END            
END          
ELSE IF(@Filter = 2) --AccountSets          
BEGIN  
IF(@OptAll = 0)  
BEGIN  
SELECT ISE.strPartNumber AS PartNumber, ISE.strSerialNumber AS SerialNumber, ISE.strLocName AS LocName, ISE.decQty, GETDATE() AS ExpiryDate, ISE.bitDimensionExist AS DimensionExist, ISE.strDimension AS Dimension FROM tblInvSerialExt ISE INNER JOIN (SELECT INV.strPartNumber,IE.strLocName   
FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType INNER JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber  
WHERE (INV.bitInvSerialType = 1) AND (IST.intType = @SQTypeSN) AND (IE.strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQLocName,','))) AND (IE.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))    
) Z ON ISE.strPartNumber = Z.strPartNumber AND ISE.strLocName = Z.strLocName  
WHERE (ISE.decQty > 0)  
UNION ALL 
SELECT ILE.strPartNumber AS PartNumber, ILE.strLotNumber AS SerialNumber, ILE.strLocName AS LocName, ILE.decQty, ILE.dteExpiryDate AS ExpiryDate, CAST(0 AS BIT) AS DimensionExist, '' AS Dimension FROM tblInvLotExt ILE INNER JOIN (SELECT INV.strPartNumber , IE.strLocName  
FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType INNER JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber  
WHERE (INV.bitInvSerialType = 1) AND (IST.intType = @SQTypeLot) AND (IE.strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQLocName,','))) AND (IE.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))  
) Z ON ILE.strPartNumber = Z.strPartNumber  AND ILE.strLocName = Z.strLocName  
WHERE (ILE.decQty > 0)   
END  
ELSE  
BEGIN  
SELECT ISE.strPartNumber AS PartNumber, ISE.strSerialNumber AS SerialNumber, ISE.strLocName AS LocName, ISE.decQty, GETDATE() AS ExpiryDate, ISE.bitDimensionExist AS DimensionExist, ISE.strDimension AS Dimension FROM tblInvSerialExt ISE INNER JOIN (SELECT INV.strPartNumber,IE.strLocName   
FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType INNER JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber  
WHERE (INV.bitInvSerialType = 1) AND (IST.intType = @SQTypeSN) AND (IE.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))    
) Z ON ISE.strPartNumber = Z.strPartNumber AND ISE.strLocName = Z.strLocName  
WHERE (ISE.decQty > 0)  
UNION ALL 
SELECT ILE.strPartNumber AS PartNumber, ILE.strLotNumber AS SerialNumber, ILE.strLocName AS LocName, ILE.decQty, ILE.dteExpiryDate AS ExpiryDate, CAST(0 AS BIT) AS DimensionExist, '' AS Dimension FROM tblInvLotExt ILE INNER JOIN (SELECT INV.strPartNumber , IE.strLocName  
FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType INNER JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber  
WHERE (INV.bitInvSerialType = 1) AND (IST.intType = @SQTypeLot) AND (IE.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList,',')))  
) Z ON ILE.strPartNumber = Z.strPartNumber  AND ILE.strLocName = Z.strLocName  
WHERE (ILE.decQty > 0)   
END           
END          
ELSE IF(@Filter = 3) --Items 
BEGIN  
IF(@OptAll = 0)  
BEGIN  
SELECT ISE.strPartNumber AS PartNumber, ISE.strSerialNumber AS SerialNumber, ISE.strLocName AS LocName, ISE.decQty, GETDATE() AS ExpiryDate, ISE.bitDimensionExist AS DimensionExist, ISE.strDimension AS Dimension FROM tblInvSerialExt ISE INNER JOIN (SELECT INV.strPartNumber   
FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType  
WHERE (INV.bitInvSerialType = 1) AND (IST.intType = @SQTypeSN) AND (INV.strPartNumber IN ((SELECT * FROM fnSplitStringAsTable(@ItemList, ','))))  
) Z ON ISE.strPartNumber = Z.strPartNumber  
WHERE (ISE.decQty > 0) AND (ISE.strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQLocName,',')))  
UNION ALL SELECT ILE.strPartNumber AS PartNumber, ILE.strLotNumber AS SerialNumber, ILE.strLocName AS LocName, ILE.decQty, ILE.dteExpiryDate AS ExpiryDate, CAST(0 AS BIT) AS DimensionExist, '' AS Dimension FROM tblInvLotExt ILE INNER JOIN (SELECT INV.strPartNumber 
FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType  
WHERE (INV.bitInvSerialType = 1) AND (IST.intType = @SQTypeLot) AND (INV.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
) Z ON ILE.strPartNumber = Z.strPartNumber  
WHERE (ILE.decQty > 0)  AND (ILE.strLocName IN (SELECT * FROM fnSplitStringAsTable(@SQLocName,',')))  
END  
ELSE  
BEGIN  
SELECT ISE.strPartNumber AS PartNumber, ISE.strSerialNumber AS SerialNumber, ISE.strLocName AS LocName, ISE.decQty, GETDATE() AS ExpiryDate, ISE.bitDimensionExist AS DimensionExist, ISE.strDimension AS Dimension FROM tblInvSerialExt ISE INNER JOIN (SELECT INV.strPartNumber   
FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType  
WHERE (INV.bitInvSerialType = 1) AND (IST.intType = @SQTypeSN) AND (INV.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
) Z ON ISE.strPartNumber = Z.strPartNumber  
WHERE (ISE.decQty > 0) 
UNION ALL SELECT ILE.strPartNumber AS PartNumber, ILE.strLotNumber AS SerialNumber, ILE.strLocName AS LocName, ILE.decQty, ILE.dteExpiryDate AS ExpiryDate, CAST(0 AS BIT) AS DimensionExist, '' AS Dimension FROM tblInvLotExt ILE INNER JOIN (SELECT INV.strPartNumber 
FROM tblInv INV INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType  
WHERE (INV.bitInvSerialType = 1) AND (IST.intType = @SQTypeLot) AND (INV.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
) Z ON ILE.strPartNumber = Z.strPartNumber  
WHERE (ILE.decQty > 0)  
END      
END    
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GeRptInvQtyLocSYSListReportData] (
	@ItemList NVARCHAR(max)
	,@Filter INT
	,@IsActive BIT
	,@IsInActive BIT
	,@OptAll BIT
	,@SQstrLocName NVARCHAR(max)
	,@SortDescription BIT
	,@SQAsAtDate DATETIME
	,@chkSerialLotNumbers BIT
	)
AS
BEGIN
	IF (@Filter = 0) --Assets          
	BEGIN
		IF (@OptAll = 0)
		BEGIN
			SELECT MasterTable.strPartNumber
				,MasterTable.strDesc
				,SlaveTable.decOpenQty + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decOpenQty]
				,SlaveTable.decOpenValue + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decOpenValue]
				,SlaveTable.decOpenValue + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decValue]
				,SlaveTable.strLocName
				,CAST(tblAccounts.intGLNumber AS VARCHAR(50)) + ' ' + tblAccounts.strDesc AS OrderbyCol
			FROM tblInv AS MasterTable
			INNER JOIN tblInvExt AS SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber
			INNER JOIN tblAccountSets ON SlaveTable.strAcctSet = tblAccountSets.strAcctSet
			INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
			WHERE (MasterTable.intType = 1)
				AND (
					SlaveTable.decOpenQty + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (
								(
									@chkSerialLotNumbers = 1
									AND tblInvTracking.dteSystemDate <= @SQAsAtDate
									)
								OR (
									@chkSerialLotNumbers = 0
									AND tblInvTracking.dteJournalDate <= @SQAsAtDate
									)
								)
							AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
							AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
						) + SlaveTable.decOpenValue + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (
								(
									@chkSerialLotNumbers = 1
									AND tblInvTracking.dteSystemDate <= @SQAsAtDate
									)
								OR (
									@chkSerialLotNumbers = 0
									AND tblInvTracking.dteJournalDate <= @SQAsAtDate
									)
								)
							AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
							AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
						) <> 0
					)
				AND (
					tblAccounts.intGLNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND (
					SlaveTable.strLocName IN (
						SELECT *
						FROM fnSplitStringAsTable(@SQstrLocName, ',')
						)
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @Isactive = 1
							THEN 0
						ELSE MasterTable.bitInactive
						END
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @IsInActive = 1
							THEN 1
						ELSE MasterTable.bitInactive
						END
					)
			ORDER BY OrderbyCol
				,SlaveTable.strLocName
				,MasterTable.strPartNumber
				,MasterTable.strDesc
		END
		ELSE
		BEGIN
			SELECT MasterTable.strPartNumber
				,MasterTable.strDesc
				,SlaveTable.decOpenQty + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decOpenQty]
				,SlaveTable.decOpenValue + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decOpenValue]
				,SlaveTable.decOpenValue + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decValue]
				,SlaveTable.strLocName
				,CAST(tblAccounts.intGLNumber AS VARCHAR(50)) + ' ' + tblAccounts.strDesc AS OrderbyCol
			FROM tblInv AS MasterTable
			INNER JOIN tblInvExt AS SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber
			INNER JOIN tblAccountSets ON SlaveTable.strAcctSet = tblAccountSets.strAcctSet
			INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
			WHERE (MasterTable.intType = 1)
				AND (
					SlaveTable.decOpenQty + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (
								(
									@chkSerialLotNumbers = 1
									AND tblInvTracking.dteSystemDate <= @SQAsAtDate
									)
								OR (
									@chkSerialLotNumbers = 0
									AND tblInvTracking.dteJournalDate <= @SQAsAtDate
									)
								)
							AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
							AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
						) + SlaveTable.decOpenValue + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (
								(
									@chkSerialLotNumbers = 1
									AND tblInvTracking.dteSystemDate <= @SQAsAtDate
									)
								OR (
									@chkSerialLotNumbers = 0
									AND tblInvTracking.dteJournalDate <= @SQAsAtDate
									)
								)
							AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
							AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
						) <> 0
					)
				AND (
					tblAccounts.intGLNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @Isactive = 1
							THEN 0
						ELSE MasterTable.bitInactive
						END
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @IsInActive = 1
							THEN 1
						ELSE MasterTable.bitInactive
						END
					)
			ORDER BY OrderbyCol
				,SlaveTable.strLocName
				,MasterTable.strPartNumber
				,MasterTable.strDesc
		END
	END
	ELSE IF (@Filter = 1) --Category          
	BEGIN
		IF (@OptAll = 0)
		BEGIN
			SELECT MasterTable.strPartNumber
				,MasterTable.strDesc
				,SlaveTable.decOpenQty + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decOpenQty]
				,SlaveTable.decOpenValue + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decOpenValue]
				,SlaveTable.decOpenValue + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decValue]
				,SlaveTable.strLocName
				,MasterTable.strCategory AS OrderbyCol
			FROM tblInv AS MasterTable
			INNER JOIN tblInvExt AS SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber
			WHERE (MasterTable.intType = 1)
				AND (
					SlaveTable.decOpenQty + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (
								(
									@chkSerialLotNumbers = 1
									AND tblInvTracking.dteSystemDate <= @SQAsAtDate
									)
								OR (
									@chkSerialLotNumbers = 0
									AND tblInvTracking.dteJournalDate <= @SQAsAtDate
									)
								)
							AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
							AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
						) + SlaveTable.decOpenValue + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (
								(
									@chkSerialLotNumbers = 1
									AND tblInvTracking.dteSystemDate <= @SQAsAtDate
									)
								OR (
									@chkSerialLotNumbers = 0
									AND tblInvTracking.dteJournalDate <= @SQAsAtDate
									)
								)
							AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
							AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
						) <> 0
					)
				AND (
					MasterTable.strCategory IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND (
					SlaveTable.strLocName IN (
						SELECT *
						FROM fnSplitStringAsTable(@SQstrLocName, ',')
						)
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @Isactive = 1
							THEN 0
						ELSE MasterTable.bitInactive
						END
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @IsInActive = 1
							THEN 1
						ELSE MasterTable.bitInactive
						END
					)
			ORDER BY OrderbyCol
				,SlaveTable.strLocName
				,MasterTable.strPartNumber
				,MasterTable.strDesc
		END
		ELSE
		BEGIN
			SELECT MasterTable.strPartNumber
				,MasterTable.strDesc
				,SlaveTable.decOpenQty + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decOpenQty]
				,SlaveTable.decOpenValue + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decOpenValue]
				,SlaveTable.decOpenValue + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decValue]
				,SlaveTable.strLocName
				,MasterTable.strCategory AS OrderbyCol
			FROM tblInv AS MasterTable
			INNER JOIN tblInvExt AS SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber
			WHERE (MasterTable.intType = 1)
				AND (
					SlaveTable.decOpenQty + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (
								(
									@chkSerialLotNumbers = 1
									AND tblInvTracking.dteSystemDate <= @SQAsAtDate
									)
								OR (
									@chkSerialLotNumbers = 0
									AND tblInvTracking.dteJournalDate <= @SQAsAtDate
									)
								)
							AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
							AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
						) + SlaveTable.decOpenValue + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (
								(
									@chkSerialLotNumbers = 1
									AND tblInvTracking.dteSystemDate <= @SQAsAtDate
									)
								OR (
									@chkSerialLotNumbers = 0
									AND tblInvTracking.dteJournalDate <= @SQAsAtDate
									)
								)
							AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
							AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
						) <> 0
					)
				AND (
					MasterTable.strCategory IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @Isactive = 1
							THEN 0
						ELSE MasterTable.bitInactive
						END
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @IsInActive = 1
							THEN 1
						ELSE MasterTable.bitInactive
						END
					)
			ORDER BY OrderbyCol
				,SlaveTable.strLocName
				,MasterTable.strPartNumber
				,MasterTable.strDesc
		END
	END
	ELSE IF (@Filter = 2) --AccountSets          
	BEGIN
		IF (@OptAll = 0)
		BEGIN
			SELECT MasterTable.strPartNumber
				,MasterTable.strDesc
				,SlaveTable.decOpenQty + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decOpenQty]
				,SlaveTable.decOpenValue + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decOpenValue]
				,SlaveTable.decOpenValue + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decValue]
				,SlaveTable.strLocName
				,SlaveTable.strAcctSet AS OrderbyCol
			FROM tblInv AS MasterTable
			INNER JOIN tblInvExt AS SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber
			WHERE (MasterTable.intType = 1)
				AND (
					SlaveTable.decOpenQty + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (
								(
									@chkSerialLotNumbers = 1
									AND tblInvTracking.dteSystemDate <= @SQAsAtDate
									)
								OR (
									@chkSerialLotNumbers = 0
									AND tblInvTracking.dteJournalDate <= @SQAsAtDate
									)
								)
							AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
							AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
						) + SlaveTable.decOpenValue + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (
								(
									@chkSerialLotNumbers = 1
									AND tblInvTracking.dteSystemDate <= @SQAsAtDate
									)
								OR (
									@chkSerialLotNumbers = 0
									AND tblInvTracking.dteJournalDate <= @SQAsAtDate
									)
								)
							AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
							AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
						) <> 0
					)
				AND (
					SlaveTable.strAcctSet IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND (
					SlaveTable.strLocName IN (
						SELECT *
						FROM fnSplitStringAsTable(@SQstrLocName, ',')
						)
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @Isactive = 1
							THEN 0
						ELSE MasterTable.bitInactive
						END
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @IsInActive = 1
							THEN 1
						ELSE MasterTable.bitInactive
						END
					)
			ORDER BY OrderbyCol
				,SlaveTable.strLocName
				,MasterTable.strPartNumber
				,MasterTable.strDesc
		END
		ELSE
		BEGIN
			SELECT MasterTable.strPartNumber
				,MasterTable.strDesc
				,SlaveTable.decOpenQty + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decOpenQty]
				,SlaveTable.decOpenValue + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decOpenValue]
				,SlaveTable.decOpenValue + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decValue]
				,SlaveTable.strLocName
				,SlaveTable.strAcctSet AS OrderbyCol
			FROM tblInv AS MasterTable
			INNER JOIN tblInvExt AS SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber
			WHERE (MasterTable.intType = 1)
				AND (
					SlaveTable.decOpenQty + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (
								(
									@chkSerialLotNumbers = 1
									AND tblInvTracking.dteSystemDate <= @SQAsAtDate
									)
								OR (
									@chkSerialLotNumbers = 0
									AND tblInvTracking.dteJournalDate <= @SQAsAtDate
									)
								)
							AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
							AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
						) + SlaveTable.decOpenValue + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (
								(
									@chkSerialLotNumbers = 1
									AND tblInvTracking.dteSystemDate <= @SQAsAtDate
									)
								OR (
									@chkSerialLotNumbers = 0
									AND tblInvTracking.dteJournalDate <= @SQAsAtDate
									)
								)
							AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
							AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
						) <> 0
					)
				AND (
					SlaveTable.strAcctSet IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @Isactive = 1
							THEN 0
						ELSE MasterTable.bitInactive
						END
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @IsInActive = 1
							THEN 1
						ELSE MasterTable.bitInactive
						END
					)
			ORDER BY OrderbyCol
				,SlaveTable.strLocName
				,MasterTable.strPartNumber
				,MasterTable.strDesc
		END
	END
	ELSE IF (@Filter = 3) --Items          
	BEGIN
		IF (@OptAll = 0)
		BEGIN
			SELECT MasterTable.strPartNumber
				,MasterTable.strDesc
				,SlaveTable.decOpenQty + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decOpenQty]
				,SlaveTable.decOpenValue + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decOpenValue]
				,SlaveTable.decOpenValue + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decValue]
				,SlaveTable.strLocName
				,'' AS OrderbyCol
			FROM tblInv AS MasterTable
			INNER JOIN tblInvExt AS SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber
			WHERE (MasterTable.intType = 1)
				AND (
					SlaveTable.decOpenQty + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (
								(
									@chkSerialLotNumbers = 1
									AND tblInvTracking.dteSystemDate <= @SQAsAtDate
									)
								OR (
									@chkSerialLotNumbers = 0
									AND tblInvTracking.dteJournalDate <= @SQAsAtDate
									)
								)
							AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
							AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
						) + SlaveTable.decOpenValue + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (
								(
									@chkSerialLotNumbers = 1
									AND tblInvTracking.dteSystemDate <= @SQAsAtDate
									)
								OR (
									@chkSerialLotNumbers = 0
									AND tblInvTracking.dteJournalDate <= @SQAsAtDate
									)
								)
							AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
							AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
						) <> 0
					)
				AND (
					MasterTable.strPartNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND (
					SlaveTable.strLocName IN (
						SELECT *
						FROM fnSplitStringAsTable(@SQstrLocName, ',')
						)
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @Isactive = 1
							THEN 0
						ELSE MasterTable.bitInactive
						END
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @IsInActive = 1
							THEN 1
						ELSE MasterTable.bitInactive
						END
					)
			ORDER BY OrderbyCol
				,SlaveTable.strLocName
				,MasterTable.strPartNumber
				,MasterTable.strDesc
		END
		ELSE
		BEGIN
			SELECT MasterTable.strPartNumber
				,MasterTable.strDesc
				,SlaveTable.decOpenQty + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decOpenQty]
				,SlaveTable.decOpenValue + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decOpenValue]
				,SlaveTable.decOpenValue + (
					SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
					FROM tblInvTrackingDT
					INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
					WHERE (
							(
								@chkSerialLotNumbers = 1
								AND tblInvTracking.dteSystemDate <= @SQAsAtDate
								)
							OR (
								@chkSerialLotNumbers = 0
								AND tblInvTracking.dteJournalDate <= @SQAsAtDate
								)
							)
						AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
						AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
					) AS [decValue]
				,SlaveTable.strLocName
				,'' AS OrderbyCol
			FROM tblInv AS MasterTable
			INNER JOIN tblInvExt AS SlaveTable ON MasterTable.strPartNumber = SlaveTable.strPartNumber
			WHERE (MasterTable.intType = 1)
				AND (
					SlaveTable.decOpenQty + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decQty), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (
								(
									@chkSerialLotNumbers = 1
									AND tblInvTracking.dteSystemDate <= @SQAsAtDate
									)
								OR (
									@chkSerialLotNumbers = 0
									AND tblInvTracking.dteJournalDate <= @SQAsAtDate
									)
								)
							AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
							AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
						) + SlaveTable.decOpenValue + (
						SELECT ISNULL(SUM(tblInvTrackingDT.decValue), 0)
						FROM tblInvTrackingDT
						INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
						WHERE (
								(
									@chkSerialLotNumbers = 1
									AND tblInvTracking.dteSystemDate <= @SQAsAtDate
									)
								OR (
									@chkSerialLotNumbers = 0
									AND tblInvTracking.dteJournalDate <= @SQAsAtDate
									)
								)
							AND (tblInvTrackingDT.strPartNumber = MasterTable.strPartNumber)
							AND (tblInvTrackingDT.strLocName = SlaveTable.strLocName)
						) <> 0
					)
				AND (
					MasterTable.strPartNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@ItemList, ',')
						)
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @Isactive = 1
							THEN 0
						ELSE MasterTable.bitInactive
						END
					)
				AND (
					MasterTable.bitInactive = CASE 
						WHEN @IsInActive = 1
							THEN 1
						ELSE MasterTable.bitInactive
						END
					)
			ORDER BY OrderbyCol
				,SlaveTable.strLocName
				,MasterTable.strPartNumber
				,MasterTable.strDesc
		END
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rpInvGetLocation]    
(    
@IsCheckedSearch bit,        
@SearchText nvarchar(max),        
@UserName varchar(100)    
)    
AS    
BEGIN    
IF(@IsCheckedSearch = 1)    
BEGIN  
SELECT tblInvLoc.strLocName as Code, tblInvLoc.strDesc as Description , ISNULL((SELECT COUNT(tblInvLocSec.strLocName)   
FROM tblInvLocSec WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName),0), ISNULL(tblInvLocSec.strUserName,'')   
FROM tblInvLoc   
LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName AND tblInvLocSec.strUserName = @UserName  
WHERE  ( (LEN(@SearchText) > 3 AND (tblInvLoc.strLocName  LIKE @SearchText + '%' OR strDesc LIKE @SearchText + '%')) OR     
(LEN(@SearchText) <= 3 AND (tblInvLoc.strLocName  LIKE '%' OR strDesc LIKE '%')))     
ORDER BY tblInvLoc.strLocName  
END  
ELSE  
BEGIN  
SELECT tblInvLoc.strLocName as Code, tblInvLoc.strDesc as Description, ISNULL((SELECT COUNT(tblInvLocSec.strLocName)  
FROM tblInvLocSec   
WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName),0), ISNULL(tblInvLocSec.strUserName,'')   
FROM tblInvLoc   
LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName AND tblInvLocSec.strUserName = @UserName  
ORDER BY tblInvLoc.strLocName  
END  
END 
Go

----------------------------------------------------
create PROCEDURE [dbo].[rptManGetJobStatusReportDataList]      
(      
@SQStart Datetime,    
@SQEnd datetime,    
@optEntDate bit,  
@SQType  nvarchar(max),    
@SQTypeRV int,    
@SQTypeCL int,    
@SQTypePC int   
)    
AS      
BEGIN    
if(@optEntDate = 1)   
BEGIN  
SELECT MJ.strJBDocID,CASE WHEN MJ.intType = @SQTypeCL OR MJ.intType = @SQTypePC THEN MJC.dteSystemDate ELSE MJ.dteSystemDate END AS dteDate,    CASE WHEN MJ.intType = @SQTypeCL OR MJ.intType = @SQTypePC THEN MJC.strUserName ELSE MJ.strUserName END AS strUserName, CASE WHEN MJ.intType = @SQTypeRV THEN MJR.lngJourID ELSE CASE WHEN MJ.intType = @SQTypeCL OR MJ.intType = @SQTypePC THEN MJC.lngJourID ELSE 0 END END AS lngJourID, MJ.intType, CASE WHEN MJ.intType = @SQTypeRV THEN 'REV-' + MJR.strJBDocID ELSE MJ.strReference END AS strReference, ISNULL(MJ.strCustName,'') AS strCustName, ISNULL(CT.strCustDesc,'') AS strCustDesc, MJ.strWCCode, WC.strDesc AS strWCDesc, CASE WHEN MJ.intType = @SQTypeRV THEN MJBPREV.decManQty ELSE MJBP.decManQty END AS decJobQty, CASE WHEN MJ.intType = @SQTypeRV THEN MJBP.decManQty ELSE CASE WHEN MJ.intType = @SQTypeCL OR MJ.intType = @SQTypePC THEN MJC.decManQtyClosed ELSE 0 END END AS decManQty, MJBP.strPartNumber, CASE WHEN MJ.intType = @SQTypeRV THEN ISNULL(MJCREV.decManUnitCost,0) ELSE ISNULL(MJC.decManUnitCost,0) END AS decManUnitCost  
FROM tblManJob MJ INNER JOIN tblManWorkCentre WC ON MJ.strWCCode = WC.strWCCode INNER JOIN tblManJobByProd MJBP ON MJ.strJBDocID = MJBP.strJBDocID LEFT JOIN tblManJobClose MJC ON MJ.strJBDocID = MJC.strJBDocID AND MJBP.strPartNumber = MJC.strPartNumber 
LEFT JOIN tblManJobReversed MJR ON MJ.strJBDocID = MJR.strJBDocIDRev LEFT JOIN tblManJobByProd MJBPREV ON MJR.strJBDocID = MJBPREV.strJBDocID AND MJBP.strPartNumber = MJBPREV.strPartNumber LEFT JOIN tblManJobClose MJCREV ON MJR.strJBDocID = MJCREV.strJBDocID AND MJBPREV.strPartNumber = MJCREV.strPartNumber LEFT JOIN tblCustomers CT ON MJ.strCustName = CT.strCustName  
WHERE (MJ.intType IN (SELECT * FROM fnSplitStringAsTable(@SQType, ',')))  
AND (CASE WHEN MJ.intType = @SQTypeCL OR MJ.intType = @SQTypePC THEN MJC.dteSystemDate ELSE MJ.dteSystemDate END BETWEEN @SQStart AND @SQEnd)  
ORDER BY MJ.intType, MJ.strJBDocID, CASE WHEN MJ.intType = @SQTypeCL OR MJ.intType = @SQTypePC THEN MJC.dteSystemDate ELSE MJ.dteSystemDate END   
END  
ELSE  
BEGIN   
SELECT MJ.strJBDocID, CASE WHEN MJ.intType = @SQTypeCL OR MJ.intType = @SQTypePC THEN MJC.dteJournalDate ELSE MJ.dteJournalDate END AS dteDate,    CASE WHEN MJ.intType = @SQTypeCL OR MJ.intType = @SQTypePC THEN MJC.strUserName ELSE MJ.strUserName END AS strUserName, CASE WHEN MJ.intType = @SQTypeRV THEN MJR.lngJourID ELSE CASE WHEN MJ.intType = @SQTypeCL OR MJ.intType = @SQTypePC THEN MJC.lngJourID ELSE 0 END END AS lngJourID, MJ.intType, CASE WHEN MJ.intType = @SQTypeRV THEN 'REV-' + MJR.strJBDocID ELSE MJ.strReference END AS strReference, ISNULL(MJ.strCustName,'') AS strCustName, ISNULL(CT.strCustDesc,'') AS strCustDesc, MJ.strWCCode, WC.strDesc AS strWCDesc, CASE WHEN MJ.intType = @SQTypeRV THEN MJBPREV.decManQty ELSE MJBP.decManQty END AS decJobQty, CASE WHEN MJ.intType = @SQTypeRV THEN MJBP.decManQty ELSE CASE WHEN MJ.intType = @SQTypeCL OR MJ.intType = @SQTypePC THEN MJC.decManQtyClosed ELSE 0 END END AS decManQty, MJBP.strPartNumber, CASE WHEN MJ.intType = @SQTypeRV THEN ISNULL(MJCREV.decManUnitCost,0) ELSE ISNULL(MJC.decManUnitCost,0) END AS decManUnitCost  
FROM tblManJob MJ INNER JOIN tblManWorkCentre WC ON MJ.strWCCode = WC.strWCCode INNER JOIN tblManJobByProd MJBP ON MJ.strJBDocID = MJBP.strJBDocID LEFT JOIN tblManJobClose MJC ON MJ.strJBDocID = MJC.strJBDocID AND MJBP.strPartNumber = MJC.strPartNumber 
LEFT JOIN tblManJobReversed MJR ON MJ.strJBDocID = MJR.strJBDocIDRev LEFT JOIN tblManJobByProd MJBPREV ON MJR.strJBDocID = MJBPREV.strJBDocID AND MJBP.strPartNumber = MJBPREV.strPartNumber LEFT JOIN tblManJobClose MJCREV ON MJR.strJBDocID = MJCREV.strJBDocID AND MJBPREV.strPartNumber = MJCREV.strPartNumber LEFT JOIN tblCustomers CT ON MJ.strCustName = CT.strCustName  
WHERE (MJ.intType IN (SELECT * FROM fnSplitStringAsTable(@SQType, ',')))  
AND (CASE WHEN MJ.intType = @SQTypeCL OR MJ.intType = @SQTypePC THEN MJC.dteJournalDate ELSE MJ.dteJournalDate END BETWEEN @SQStart AND @SQEnd)  
ORDER BY MJ.intType, MJ.strJBDocID, CASE WHEN MJ.intType = @SQTypeCL OR MJ.intType = @SQTypePC THEN MJC.dteJournalDate ELSE MJ.dteJournalDate END  
END  
END 
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptManGetJobStatustblManJobSerialNumbersReportDataList]      
(      
@SQStart Datetime,    
@SQEnd datetime,    
@optEntDate bit,  
@SQType  nvarchar(max),    
@SQTypeSN int,    
@SQTypeCL int,    
@SQTypePC int   
)    
AS      
BEGIN    
if(@optEntDate = 1)   
BEGIN  
SELECT MJ.strJBDocID, MJBP.strPartNumber, SRL.strSerialNumber, MJBP.strLocation AS strLocName, SRL.decQty, ISNULL(SRL.dteExpiryDate, GETDATE()) AS dteExpiryDate, CASE WHEN SRL.intSerialLotType = @SQTypeSN THEN CAST(ISNULL(ISE.bitDimensionExist,0) AS BIT) ELSE CAST(0 AS BIT) END AS bitDimensionExist, CASE WHEN SRL.intSerialLotType = @SQTypeSN AND ISNULL(ISE.bitDimensionExist,0) = 1 THEN ISE.strDimension ELSE '' END AS strDimension  
FROM tblManJob MJ INNER JOIN tblManJobByProd MJBP ON MJ.strJBDocID = MJBP.strJBDocID INNER JOIN tblManJobByProdSerial SRL ON MJBP.strJBDocID = SRL.strJBDocID AND MJBP.strPartNumber = SRL.strPartNumber LEFT JOIN tblInvSerialExt ISE ON SRL.strPartNumber = ISE.strPartNumber AND SRL.strSerialNumber = ISE.strSerialNumber LEFT JOIN tblManJobClose MJC ON MJ.strJBDocID = MJC.strJBDocID AND MJBP.strPartNumber = MJC.strPartNumber  
WHERE (MJ.intType IN (SELECT * FROM fnSplitStringAsTable(@SQType, ',')))  
AND (CASE WHEN MJ.intType = @SQTypeCL OR MJ.intType = @SQTypePC THEN MJC.dteSystemDate ELSE MJ.dteSystemDate END BETWEEN @SQStart AND @SQEnd)  
ORDER BY strSerialNumber  
END  
ELSE  
BEGIN   
SELECT MJ.strJBDocID, MJBP.strPartNumber, SRL.strSerialNumber, MJBP.strLocation AS strLocName, SRL.decQty, ISNULL(SRL.dteExpiryDate, GETDATE()) AS dteExpiryDate, CASE WHEN SRL.intSerialLotType = @SQTypeSN THEN CAST(ISNULL(ISE.bitDimensionExist,0) AS BIT) ELSE  CAST(0 AS BIT)  END AS bitDimensionExist, CASE WHEN SRL.intSerialLotType = @SQTypeSN AND ISNULL(ISE.bitDimensionExist,0) = 1 THEN ISE.strDimension ELSE '' END AS strDimension  
FROM tblManJob MJ INNER JOIN tblManJobByProd MJBP ON MJ.strJBDocID = MJBP.strJBDocID INNER JOIN tblManJobByProdSerial SRL ON MJBP.strJBDocID = SRL.strJBDocID AND MJBP.strPartNumber = SRL.strPartNumber LEFT JOIN tblInvSerialExt ISE ON SRL.strPartNumber = ISE.strPartNumber AND SRL.strSerialNumber = ISE.strSerialNumber LEFT JOIN tblManJobClose MJC ON MJ.strJBDocID = MJC.strJBDocID AND MJBP.strPartNumber = MJC.strPartNumber  
WHERE (MJ.intType IN (SELECT * FROM fnSplitStringAsTable(@SQType, ',')))  
AND (CASE WHEN MJ.intType = @SQTypeCL OR MJ.intType = @SQTypePC THEN MJC.dteJournalDate ELSE MJ.dteJournalDate END BETWEEN @SQStart AND @SQEnd)  
ORDER BY strSerialNumber  
END  
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GeRptManItemWhereUsedReportData] (
	@ItemList NVARCHAR(max)
	,@Filter INT
	,@IsActive BIT
	,@IsInActive BIT
	)
AS
BEGIN
	IF (@Filter = 0) --Assets      
	BEGIN
		SELECT tblManBOMCompInv.strPartNumber AS strPartNumber
			,tblManBOMCompInv.strDesc AS strDesc
			,tblManBOM.strPartNumber AS strUsedInNumber
			,tblManBOM.strDesc AS strUsedInDesc
			,tblManBOMCompInv.strWCCode AS strWCCode
			,tblManBOMCompInv.strLocation AS strLocation
			,tblManBOM.decQty AS decQtyToBuild
			,tblManBOMCompInv.decQty AS decQtyToUse
			,(CAST(tblAccounts.intGLNumber AS VARCHAR(20)) + ' ' + tblAccounts.strDesc) AS strCategory
		FROM tblManBOM
		INNER JOIN tblManBOMCompInv ON tblManBOM.lngManBOMID = tblManBOMCompInv.lngManBOMID
		INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblManBOMCompInv.strPartNumber = tblInv.strPartNumber
			AND tblManBOMCompInv.strLocation = tblInv.strLocName
		INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet
		INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
		WHERE (tblManBOM.bitInactive = 0)
			AND (
				tblAccounts.intGLNumber IN (
					SELECT *
					FROM fnSplitStringAsTable(@ItemList, ',')
					)
				)
			AND (
				tblInv.bitInactive = CASE 
					WHEN @IsActive = 1
						THEN 0
					ELSE tblInv.bitInactive
					END
				)
			AND (
				tblInv.bitInactive = CASE 
					WHEN @IsInActive = 1
						THEN 1
					ELSE tblInv.bitInactive
					END
				)
		ORDER BY tblManBOMCompInv.strPartNumber
			,tblManBOM.strPartNumber
	END
	ELSE IF (@Filter = 1) --Category      
	BEGIN
		SELECT tblManBOMCompInv.strPartNumber AS strPartNumber
			,tblManBOMCompInv.strDesc AS strDesc
			,tblManBOM.strPartNumber AS strUsedInNumber
			,tblManBOM.strDesc AS strUsedInDesc
			,tblManBOMCompInv.strWCCode AS strWCCode
			,tblManBOMCompInv.strLocation AS strLocation
			,tblManBOM.decQty AS decQtyToBuild
			,tblManBOMCompInv.decQty AS decQtyToUse
			,tblInv.strCategory AS strCategory
		FROM tblManBOM
		INNER JOIN tblManBOMCompInv ON tblManBOM.lngManBOMID = tblManBOMCompInv.lngManBOMID
		INNER JOIN tblInv ON tblManBOMCompInv.strPartNumber = tblInv.strPartNumber
		WHERE (tblManBOM.bitInactive = 0)
			AND (
				tblInv.strCategory IN (
					SELECT *
					FROM fnSplitStringAsTable(@ItemList, ',')
					)
				)
			AND (
				tblInv.bitInactive = CASE 
					WHEN @IsActive = 1
						THEN 0
					ELSE tblInv.bitInactive
					END
				)
			AND (
				tblInv.bitInactive = CASE 
					WHEN @IsInActive = 1
						THEN 1
					ELSE tblInv.bitInactive
					END
				)
		ORDER BY tblManBOMCompInv.strPartNumber
			,tblManBOM.strPartNumber
	END
	ELSE IF (@Filter = 2) --AccountSets      
	BEGIN
		SELECT tblManBOMCompInv.strPartNumber AS strPartNumber
			,tblManBOMCompInv.strDesc AS strDesc
			,tblManBOM.strPartNumber AS strUsedInNumber
			,tblManBOM.strDesc AS strUsedInDesc
			,tblManBOMCompInv.strWCCode AS strWCCode
			,tblManBOMCompInv.strLocation AS strLocation
			,tblManBOM.decQty AS decQtyToBuild
			,tblManBOMCompInv.decQty AS decQtyToUse
			,tblInv.strAcctSet AS strCategory
		FROM tblManBOM
		INNER JOIN tblManBOMCompInv ON tblManBOM.lngManBOMID = tblManBOMCompInv.lngManBOMID
		INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblManBOMCompInv.strPartNumber = tblInv.strPartNumber
			AND tblManBOMCompInv.strLocation = tblInv.strLocName
		WHERE (tblManBOM.bitInactive = 0)
			AND (
				tblInv.strAcctSet IN (
					SELECT *
					FROM fnSplitStringAsTable(@ItemList, ',')
					)
				)
			AND (
				tblInv.bitInactive = CASE 
					WHEN @IsActive = 1
						THEN 0
					ELSE tblInv.bitInactive
					END
				)
			AND (
				tblInv.bitInactive = CASE 
					WHEN @IsInActive = 1
						THEN 1
					ELSE tblInv.bitInactive
					END
				)
		ORDER BY tblManBOMCompInv.strPartNumber
			,tblManBOM.strPartNumber
	END
	ELSE IF (@Filter = 3) --Items      
	BEGIN
		SELECT tblManBOMCompInv.strPartNumber AS strPartNumber
			,tblManBOMCompInv.strDesc AS strDesc
			,tblManBOM.strPartNumber AS strUsedInNumber
			,tblManBOM.strDesc AS strUsedInDesc
			,tblManBOMCompInv.strWCCode AS strWCCode
			,tblManBOMCompInv.strLocation AS strLocation
			,tblManBOM.decQty AS decQtyToBuild
			,tblManBOMCompInv.decQty AS decQtyToUse
			,'' AS strCategory
		FROM tblManBOM
		INNER JOIN tblManBOMCompInv ON tblManBOM.lngManBOMID = tblManBOMCompInv.lngManBOMID
		INNER JOIN tblInv ON tblManBOMCompInv.strPartNumber = tblInv.strPartNumber
		WHERE (tblManBOM.bitInactive = 0)
			AND (
				tblManBOMCompInv.strPartNumber IN (
					SELECT *
					FROM fnSplitStringAsTable(@ItemList, ',')
					)
				)
			AND (
				tblInv.bitInactive = CASE 
					WHEN @IsActive = 1
						THEN 0
					ELSE tblInv.bitInactive
					END
				)
			AND (
				tblInv.bitInactive = CASE 
					WHEN @IsInActive = 1
						THEN 1
					ELSE tblInv.bitInactive
					END
				)
		ORDER BY tblManBOMCompInv.strPartNumber
			,tblManBOM.strPartNumber
	END
	ELSE IF (@Filter = 4) --Service      
	BEGIN
		SELECT tblManBOMCompInv.strPartNumber AS strPartNumber
			,tblManBOMCompInv.strDesc AS strDesc
			,tblManBOM.strPartNumber AS strUsedInNumber
			,tblManBOM.strDesc AS strUsedInDesc
			,tblManBOMCompInv.strWCCode AS strWCCode
			,tblManBOMCompInv.strLocation AS strLocation
			,tblManBOM.decQty AS decQtyToBuild
			,tblManBOMCompInv.decQty AS decQtyToUse
			,''
		FROM tblManBOM
		INNER JOIN tblManBOMCompInv ON tblManBOM.lngManBOMID = tblManBOMCompInv.lngManBOMID
		INNER JOIN tblInv ON tblManBOMCompInv.strPartNumber = tblInv.strPartNumber
		WHERE (tblManBOM.bitInactive = 0)
			AND (
				tblManBOMCompInv.strPartNumber IN (
					SELECT *
					FROM fnSplitStringAsTable(@ItemList, ',')
					)
				)
			AND (
				tblInv.bitInactive = CASE 
					WHEN @IsActive = 1
						THEN 0
					ELSE tblInv.bitInactive
					END
				)
			AND (
				tblInv.bitInactive = CASE 
					WHEN @IsInActive = 1
						THEN 1
					ELSE tblInv.bitInactive
					END
				)
		ORDER BY tblManBOMCompInv.strPartNumber
			,tblManBOM.strPartNumber
	END
	ELSE IF (@Filter = 6) --All      
	BEGIN
		SELECT tblManBOMCompInv.strPartNumber AS strPartNumber
			,tblManBOMCompInv.strDesc AS strDesc
			,tblManBOM.strPartNumber AS strUsedInNumber
			,tblManBOM.strDesc AS strUsedInDesc
			,tblManBOMCompInv.strWCCode AS strWCCode
			,tblManBOMCompInv.strLocation AS strLocation
			,tblManBOM.decQty AS decQtyToBuild
			,tblManBOMCompInv.decQty AS decQtyToUse
			,'' AS strCategory
		FROM tblManBOM
		INNER JOIN tblManBOMCompInv ON tblManBOM.lngManBOMID = tblManBOMCompInv.lngManBOMID
		INNER JOIN tblInv ON tblManBOMCompInv.strPartNumber = tblInv.strPartNumber
		WHERE (tblManBOM.bitInactive = 0)
			AND (
				tblManBOMCompInv.strPartNumber IN (
					SELECT *
					FROM fnSplitStringAsTable(@ItemList, ',')
					)
				)
			AND (
				tblInv.bitInactive = CASE 
					WHEN @IsActive = 1
						THEN 0
					ELSE tblInv.bitInactive
					END
				)
			AND (
				tblInv.bitInactive = CASE 
					WHEN @IsInActive = 1
						THEN 1
					ELSE tblInv.bitInactive
					END
				)
		ORDER BY tblManBOMCompInv.strPartNumber
			,tblManBOM.strPartNumber
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[LoadWorkCenters]    
(    
@IsCheckedSearch bit,    
@SearchText nvarchar(max),    
@IsInactive bit    
)    
AS    
BEGIN    
IF(@IsCheckedSearch = 1)    
BEGIN    
IF(@SearchText <> '')    
BEGIN    
IF(@IsInactive = 1)    
BEGIN    
SELECT strWCCode as Code, strDesc as Descriptions FROM tblManWorkCentre WHERE (strWCCode LIKE @SearchText OR strDesc LIKE @SearchText) ORDER BY strWCCode  
END    
ELSE    
BEGIN    
SELECT strWCCode as Code, strDesc as Descriptions FROM tblManWorkCentre WHERE bitInactive = 0 AND (strWCCode LIKE @SearchText OR strDesc LIKE @SearchText) ORDER BY strWCCode  
END    
END    
END    
ELSE    
BEGIN    
IF(@IsInactive = 1)    
BEGIN    
SELECT strWCCode as Code, strDesc as Descriptions FROM tblManWorkCentre    
Order By  strWCCode    
END    
ELSE    
BEGIN    
SELECT strWCCode as Code, strDesc as Descriptions FROM tblManWorkCentre WHERE bitInactive = 0  
Order By strWCCode        
END    
END    
END 
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptManWorkInProgresstblManJobReportData]        
(        
@ItemList nvarchar(max),        
@Filter int,  
@JobList  nvarchar(max),  
@CustomerList  nvarchar(max),  
@WorkCenterList  nvarchar(max),  
@PLCustomer varchar(50)  
)        
AS        
BEGIN        
IF(@Filter = 0) --Assets        
BEGIN       
SELECT tblManJob.strJBDocID, tblManJob.dteSystemDate, tblManJob.dteJournalDate, tblManJob.dteRequired, tblManJob.strUserName, tblManJob.strReference, tblManJob.strCustName, tblManJob.intType, tblManJob.strWCCode, tblManWorkCentre.strDesc AS strWCDesc   
FROM tblManJob   
INNER JOIN tblManWorkCentre ON tblManJob.strWCCode = tblManWorkCentre.strWCCode   
WHERE tblManJob.strJBDocID IN   
(  
SELECT DISTINCT tblManWIP.strJBDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
WHERE (tblInv.intType = 1)  
AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY tblManJob.strJBDocID  
END        
ELSE IF(@Filter = 1) --Category        
BEGIN  
SELECT tblManJob.strJBDocID, tblManJob.dteSystemDate, tblManJob.dteJournalDate, tblManJob.dteRequired, tblManJob.strUserName, tblManJob.strReference, tblManJob.strCustName, tblManJob.intType, tblManJob.strWCCode, tblManWorkCentre.strDesc AS strWCDesc   
FROM tblManJob   
INNER JOIN tblManWorkCentre ON tblManJob.strWCCode = tblManWorkCentre.strWCCode   
WHERE tblManJob.strJBDocID IN   
(  
SELECT DISTINCT tblManWIP.strJBDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
WHERE (tblInv.intType = 1)  
AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY tblManJob.strJBDocID  
END  
ELSE IF(@Filter = 2) --AccountSets        
BEGIN  
SELECT tblManJob.strJBDocID, tblManJob.dteSystemDate, tblManJob.dteJournalDate, tblManJob.dteRequired, tblManJob.strUserName, tblManJob.strReference, tblManJob.strCustName, tblManJob.intType, tblManJob.strWCCode, tblManWorkCentre.strDesc AS strWCDesc   
FROM tblManJob   
INNER JOIN tblManWorkCentre ON tblManJob.strWCCode = tblManWorkCentre.strWCCode   
WHERE tblManJob.strJBDocID IN   
(  
SELECT DISTINCT tblManWIP.strJBDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
WHERE (tblInv.intType = 1)  
AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY tblManJob.strJBDocID  
END  
ELSE IF(@Filter = 3) --Items        
BEGIN  
SELECT tblManJob.strJBDocID, tblManJob.dteSystemDate, tblManJob.dteJournalDate, tblManJob.dteRequired, tblManJob.strUserName, tblManJob.strReference, tblManJob.strCustName, tblManJob.intType, tblManJob.strWCCode, tblManWorkCentre.strDesc AS strWCDesc   
FROM tblManJob   
INNER JOIN tblManWorkCentre ON tblManJob.strWCCode = tblManWorkCentre.strWCCode   
WHERE tblManJob.strJBDocID IN   
(  
SELECT DISTINCT tblManWIP.strJBDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
WHERE (tblInv.intType = 1)  
AND (tblManJobByProd.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY tblManJob.strJBDocID  
END          
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptManWorkInProgressDetailstblManJobReportData]          
(          
@ItemList nvarchar(max),          
@Filter int,    
@JobList  nvarchar(max),    
@CustomerList  nvarchar(max),    
@WorkCenterList  nvarchar(max),    
@PLCustomer varchar(50)    
)          
AS          
BEGIN          
IF(@Filter = 0) --Assets          
BEGIN    
SELECT tblManJob.strJBDocID, tblManJob.dteSystemDate, tblManJob.dteJournalDate, tblManJob.dteRequired, tblManJob.strUserName,   
tblManJob.strReference, tblManJobByProd.decQty, tblManJob.strCustName, tblManJobByProd.strPartNumber, tblManJobByProd.strDesc,   
tblManJobByProd.strLocation, tblManJobByProd.dteRevDate, tblManJobByProd.decManQty AS decBOMQty, tblManJob.intType,   
tblInv.strStockUnit AS strUnit   
FROM tblManJob   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
WHERE tblManJob.strJBDocID   
IN  
(  
SELECT DISTINCT tblManWIP.strJBDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation   
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet   
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)   
ORDER BY tblManJob.strJBDocID  
END          
ELSE IF(@Filter = 1) --Category          
BEGIN    
SELECT tblManJob.strJBDocID, tblManJob.dteSystemDate, tblManJob.dteJournalDate, tblManJob.dteRequired, tblManJob.strUserName,   
tblManJob.strReference, tblManJobByProd.decQty, tblManJob.strCustName, tblManJobByProd.strPartNumber, tblManJobByProd.strDesc,   
tblManJobByProd.strLocation, tblManJobByProd.dteRevDate, tblManJobByProd.decManQty AS decBOMQty, tblManJob.intType,   
tblInv.strStockUnit AS strUnit   
FROM tblManJob   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
WHERE tblManJob.strJBDocID   
IN  
(  
SELECT DISTINCT tblManWIP.strJBDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation   
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet   
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)   
ORDER BY tblManJob.strJBDocID  
END    
ELSE IF(@Filter = 2) --AccountSets      
BEGIN  
SELECT tblManJob.strJBDocID, tblManJob.dteSystemDate, tblManJob.dteJournalDate, tblManJob.dteRequired, tblManJob.strUserName,   
tblManJob.strReference, tblManJobByProd.decQty, tblManJob.strCustName, tblManJobByProd.strPartNumber, tblManJobByProd.strDesc,   
tblManJobByProd.strLocation, tblManJobByProd.dteRevDate, tblManJobByProd.decManQty AS decBOMQty, tblManJob.intType,   
tblInv.strStockUnit AS strUnit   
FROM tblManJob   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
WHERE tblManJob.strJBDocID   
IN  
(  
SELECT DISTINCT tblManWIP.strJBDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation   
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet   
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)   
ORDER BY tblManJob.strJBDocID  
END  
ELSE IF(@Filter = 3) --Items          
BEGIN    
SELECT tblManJob.strJBDocID, tblManJob.dteSystemDate, tblManJob.dteJournalDate, tblManJob.dteRequired, tblManJob.strUserName,   
tblManJob.strReference, tblManJobByProd.decQty, tblManJob.strCustName, tblManJobByProd.strPartNumber, tblManJobByProd.strDesc,   
tblManJobByProd.strLocation, tblManJobByProd.dteRevDate, tblManJobByProd.decManQty AS decBOMQty, tblManJob.intType,   
tblInv.strStockUnit AS strUnit   
FROM tblManJob   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
WHERE tblManJob.strJBDocID   
IN  
(  
SELECT DISTINCT tblManWIP.strJBDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation   
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet   
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblManJobByProd.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)   
ORDER BY tblManJob.strJBDocID  
END            
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptManWorkInProgresstblCustomersReportData]        
(        
@ItemList nvarchar(max),        
@Filter int,  
@JobList  nvarchar(max),  
@CustomerList  nvarchar(max),  
@WorkCenterList  nvarchar(max),  
@PLCustomer varchar(50)  
)        
AS        
BEGIN        
IF(@Filter = 0) --Assets        
BEGIN       
SELECT * FROM tblCustomers WHERE strCustName   
IN  
(  
SELECT DISTINCT ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>')  
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
WHERE (tblInv.intType = 1)  
AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY strCustName  
END        
ELSE IF(@Filter = 1) --Category        
BEGIN  
SELECT * FROM tblCustomers WHERE strCustName   
IN  
(  
SELECT DISTINCT ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>')  
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
WHERE (tblInv.intType = 1)  
AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY strCustName  
END  
ELSE IF(@Filter = 2) --AccountSets        
BEGIN  
SELECT * FROM tblCustomers WHERE strCustName   
IN  
(  
SELECT DISTINCT ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>')  
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
WHERE (tblInv.intType = 1)  
AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY strCustName  
END  
ELSE IF(@Filter = 3) --Items        
BEGIN  
SELECT * FROM tblCustomers WHERE strCustName   
IN  
(  
SELECT DISTINCT ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>')  
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
WHERE (tblInv.intType = 1)  
AND (tblManJobByProd.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY strCustName  
END          
END 
GO

----------------------------------------------------
create PROCEDURE [dbo].[GetRptManWorkInProgresstblInvReportData]        
(        
@ItemList nvarchar(max),        
@Filter int,  
@JobList  nvarchar(max),  
@CustomerList  nvarchar(max),  
@WorkCenterList  nvarchar(max),  
@PLCustomer varchar(50)  
)        
AS        
BEGIN        
IF(@Filter = 0) --Assets        
BEGIN       
SELECT * FROM dbo.fntblInvLocationsAll() tblInv   
WHERE strPartNumber   
IN   
(  
SELECT DISTINCT tblManJobByProd.strPartNumber  
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1) AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)   
ORDER BY strPartNumber  
END        
ELSE IF(@Filter = 1) --Category        
BEGIN  
SELECT * FROM dbo.fntblInvLocationsAll() tblInv   
WHERE strPartNumber   
IN   
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
WHERE (tblInv.intType = 1)  
AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)   
ORDER BY strPartNumber  
END  
ELSE IF(@Filter = 2) --AccountSets        
BEGIN  
SELECT * FROM dbo.fntblInvLocationsAll() tblInv   
WHERE strPartNumber   
IN   
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)   
ORDER BY strPartNumber  
END  
ELSE IF(@Filter = 3) --Items        
BEGIN  
SELECT * FROM dbo.fntblInvLocationsAll() tblInv   
WHERE strPartNumber   
IN   
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblManJobByProd.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))    
)   
ORDER BY strPartNumber  
END          
END 
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptManWorkInProgresstblManWIPReportData]
(        
@ItemList nvarchar(max),        
@Filter int,  
@JobList  nvarchar(max),  
@CustomerList  nvarchar(max),  
@WorkCenterList  nvarchar(max),  
@PLCustomer varchar(50)  
)        
AS        
BEGIN        
IF(@Filter = 0) --Assets        
BEGIN       
SELECT tblManWIP.strJBDocID, tblManWIPCompInv.strPartNumber, tblManWIPCompInv.strDesc, tblManWIPCompInv.strLocation, tblManWIPCompInv.decBOMQty,
SUM(tblManWIPCompInv.decPostQty) AS decPostQty, tblManWIPCompInv.decAmount, SUM(tblManWIPCompInv.decPostAmount) AS decPostAmount, 
tblInv.strStockUnit AS strUnit,
tblManWIP.strWCCode FROM tblManWIP
INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID
INNER JOIN tblInv ON tblManWIPCompInv.strPartNumber = tblInv.strPartNumber 
WHERE tblManWIPCompInv.strWIPDocID IN   
(SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ',')))  
))  
GROUP BY tblManWIP.strJBDocID, tblManWIPCompInv.strPartNumber, tblManWIPCompInv.strDesc, tblManWIPCompInv.strLocation, tblManWIPCompInv.decBOMQty, tblManWIPCompInv.decAmount, tblInv.strStockUnit, tblManWIP.strWCCode ORDER BY tblManWIP.strJBDocID, tblManWIPCompInv.strPartNumber, tblManWIPCompInv.strLocation
END    
ELSE IF(@Filter = 1) --Category        
BEGIN  
SELECT tblManWIP.strJBDocID, tblManWIPCompInv.strPartNumber, tblManWIPCompInv.strDesc, tblManWIPCompInv.strLocation, tblManWIPCompInv.decBOMQty,   
SUM(tblManWIPCompInv.decPostQty) AS decPostQty, tblManWIPCompInv.decAmount, SUM(tblManWIPCompInv.decPostAmount) AS decPostAmount,   
tblInv.strStockUnit AS strUnit   
FROM tblManWIP   
INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID   
INNER JOIN tblInv ON tblManWIPCompInv.strPartNumber = tblInv.strPartNumber   
WHERE tblManWIPCompInv.strWIPDocID IN   
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
GROUP BY tblManWIP.strJBDocID, tblManWIPCompInv.strPartNumber, tblManWIPCompInv.strDesc, tblManWIPCompInv.strLocation, tblManWIPCompInv.decBOMQty, tblManWIPCompInv.decAmount, tblInv.strStockUnit   
ORDER BY tblManWIP.strJBDocID, tblManWIPCompInv.strPartNumber, tblManWIPCompInv.strLocation   
END  
ELSE IF(@Filter = 2) --AccountSets        
BEGIN  
SELECT tblManWIP.strJBDocID, tblManWIPCompInv.strPartNumber, tblManWIPCompInv.strDesc, tblManWIPCompInv.strLocation, tblManWIPCompInv.decBOMQty,   
SUM(tblManWIPCompInv.decPostQty) AS decPostQty, tblManWIPCompInv.decAmount, SUM(tblManWIPCompInv.decPostAmount) AS decPostAmount,   
tblInv.strStockUnit AS strUnit   
FROM tblManWIP   
INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID   
INNER JOIN tblInv ON tblManWIPCompInv.strPartNumber = tblInv.strPartNumber   
WHERE tblManWIPCompInv.strWIPDocID IN   
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
GROUP BY tblManWIP.strJBDocID, tblManWIPCompInv.strPartNumber, tblManWIPCompInv.strDesc, tblManWIPCompInv.strLocation, tblManWIPCompInv.decBOMQty, tblManWIPCompInv.decAmount, tblInv.strStockUnit   
ORDER BY tblManWIP.strJBDocID, tblManWIPCompInv.strPartNumber, tblManWIPCompInv.strLocation   
END  
ELSE IF(@Filter = 3) --Items        
BEGIN  
SELECT tblManWIP.strJBDocID, tblManWIPCompInv.strPartNumber, tblManWIPCompInv.strDesc, tblManWIPCompInv.strLocation, tblManWIPCompInv.decBOMQty,   
SUM(tblManWIPCompInv.decPostQty) AS decPostQty, tblManWIPCompInv.decAmount, SUM(tblManWIPCompInv.decPostAmount) AS decPostAmount,tblManWIP.strWCCode,
tblInv.strStockUnit AS strUnit   
FROM tblManWIP   
INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID   
INNER JOIN tblInv ON tblManWIPCompInv.strPartNumber = tblInv.strPartNumber   
WHERE tblManWIPCompInv.strWIPDocID IN   
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblManJobByProd.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
GROUP BY tblManWIP.strJBDocID, tblManWIPCompInv.strPartNumber, tblManWIPCompInv.strDesc, tblManWIPCompInv.strLocation, tblManWIPCompInv.decBOMQty, tblManWIPCompInv.decAmount, tblInv.strStockUnit,tblManWIP.strWCCode   
ORDER BY tblManWIP.strJBDocID, tblManWIPCompInv.strPartNumber, tblManWIPCompInv.strLocation   
END          
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptManWorkInProgressDetailstblManWIPReportData]            
(            
@ItemList nvarchar(max),            
@Filter int,      
@JobList  nvarchar(max),      
@CustomerList  nvarchar(max),      
@WorkCenterList  nvarchar(max),      
@PLCustomer varchar(50)      
)            
AS            
BEGIN            
IF(@Filter = 0) --Assets            
BEGIN           
SELECT tblManWIP.strWIPDocID, tblManWIP.strJBDocID, tblManWIP.strWCCode, tblManWorkCentre.strDesc, tblManWIP.dteSystemDate, tblManWIP.dteJournalDate,  
tblManWIP.strUserName, tblManWIP.intType   
FROM tblManWIP   
INNER JOIN tblManWorkCentre ON tblManWIP.strWCCode = tblManWorkCentre.strWCCode   
WHERE tblManWIP.strWIPDocID   
IN     
(    
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID     
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID     
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber     
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation     
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet     
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)    
AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))    
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))    
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))    
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))    
)    
ORDER BY tblManWIP.strWIPDocID  
END            
ELSE IF(@Filter = 1) --Category            
BEGIN      
SELECT tblManWIP.strWIPDocID, tblManWIP.strJBDocID, tblManWIP.strWCCode, tblManWorkCentre.strDesc, tblManWIP.dteSystemDate, tblManWIP.dteJournalDate,  
tblManWIP.strUserName, tblManWIP.intType   
FROM tblManWIP   
INNER JOIN tblManWorkCentre ON tblManWIP.strWCCode = tblManWorkCentre.strWCCode   
WHERE tblManWIP.strWIPDocID   
IN     
(    
SELECT DISTINCT tblManWIP.strWIPDocID     
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID     
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID     
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber     
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation     
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet     
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)    
AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))    
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))    
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))    
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))    
)    
ORDER BY tblManWIP.strWIPDocID  
END      
ELSE IF(@Filter = 2) --AccountSets            
BEGIN      
SELECT tblManWIP.strWIPDocID, tblManWIP.strJBDocID, tblManWIP.strWCCode, tblManWorkCentre.strDesc, tblManWIP.dteSystemDate, tblManWIP.dteJournalDate,  
tblManWIP.strUserName, tblManWIP.intType   
FROM tblManWIP   
INNER JOIN tblManWorkCentre ON tblManWIP.strWCCode = tblManWorkCentre.strWCCode   
WHERE tblManWIP.strWIPDocID   
IN     
(    
SELECT DISTINCT tblManWIP.strWIPDocID     
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID     
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID     
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber     
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation     
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet     
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)    
AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))    
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))    
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))    
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))    
)    
ORDER BY tblManWIP.strWIPDocID  
END      
ELSE IF(@Filter = 3) --Items            
BEGIN      
SELECT tblManWIP.strWIPDocID, tblManWIP.strJBDocID, tblManWIP.strWCCode, tblManWorkCentre.strDesc, tblManWIP.dteSystemDate, tblManWIP.dteJournalDate,  
tblManWIP.strUserName, tblManWIP.intType   
FROM tblManWIP   
INNER JOIN tblManWorkCentre ON tblManWIP.strWCCode = tblManWorkCentre.strWCCode   
WHERE tblManWIP.strWIPDocID   
IN     
(    
SELECT DISTINCT tblManWIP.strWIPDocID     
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID     
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID     
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber     
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation     
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet     
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)    
AND (tblManJobByProd.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))    
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))    
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))    
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))    
)    
ORDER BY tblManWIP.strWIPDocID  
END              
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptManWorkInProgressDetailstblManWIPCompInvSerialReportData]            
(            
@ItemList nvarchar(max),            
@Filter int,      
@JobList  nvarchar(max),      
@CustomerList  nvarchar(max),      
@WorkCenterList  nvarchar(max),      
@PLCustomer varchar(50)      
)            
AS            
BEGIN            
IF(@Filter = 0) --Assets            
BEGIN           
SELECT tblManWIPCompInvSerial.*   
FROM tblManWIPCompInvSerial   
INNER JOIN tblManWIPCompInv ON tblManWIPCompInvSerial.strWIPDocID = tblManWIPCompInv.strWIPDocID   
AND tblManWIPCompInv.lngID = tblManWIPCompInvSerial.lngWIPID AND tblManWIPCompInvSerial.intLineNo = tblManWIPCompInv.intLineNo   
INNER JOIN tblInv ON tblManWIPCompInv.strPartNumber = tblInv.strPartNumber   
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType   
WHERE tblManWIPCompInvSerial.strWIPDocID   
IN     
(    
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID     
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID     
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber     
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation     
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet     
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)    
AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))    
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))    
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))    
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))    
)    
AND tblInvSerialTypes.bitPrintInv = 1   
ORDER BY tblManWIPCompInvSerial.strWIPDocID, tblManWIPCompInvSerial.lngWIPID, tblManWIPCompInvSerial.intLineNo  
END            
ELSE IF(@Filter = 1) --Category            
BEGIN      
SELECT tblManWIPCompInvSerial.*   
FROM tblManWIPCompInvSerial   
INNER JOIN tblManWIPCompInv ON tblManWIPCompInvSerial.strWIPDocID = tblManWIPCompInv.strWIPDocID   
AND tblManWIPCompInv.lngID = tblManWIPCompInvSerial.lngWIPID AND tblManWIPCompInvSerial.intLineNo = tblManWIPCompInv.intLineNo   
INNER JOIN tblInv ON tblManWIPCompInv.strPartNumber = tblInv.strPartNumber   
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType   
WHERE tblManWIPCompInvSerial.strWIPDocID  
IN     
(    
SELECT DISTINCT tblManWIP.strWIPDocID     
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID     
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID     
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber     
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation     
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet     
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)    
AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))    
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))    
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))    
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))    
)    
AND tblInvSerialTypes.bitPrintInv = 1   
ORDER BY tblManWIPCompInvSerial.strWIPDocID, tblManWIPCompInvSerial.lngWIPID, tblManWIPCompInvSerial.intLineNo  
END      
ELSE IF(@Filter = 2) --AccountSets            
BEGIN      
SELECT tblManWIPCompInvSerial.*   
FROM tblManWIPCompInvSerial   
INNER JOIN tblManWIPCompInv ON tblManWIPCompInvSerial.strWIPDocID = tblManWIPCompInv.strWIPDocID   
AND tblManWIPCompInv.lngID = tblManWIPCompInvSerial.lngWIPID AND tblManWIPCompInvSerial.intLineNo = tblManWIPCompInv.intLineNo   
INNER JOIN tblInv ON tblManWIPCompInv.strPartNumber = tblInv.strPartNumber   
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType   
WHERE tblManWIPCompInvSerial.strWIPDocID   
IN     
(    
SELECT DISTINCT tblManWIP.strWIPDocID     
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID     
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID     
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber     
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation     
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet     
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)    
AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))    
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))    
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))    
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))    
)    
AND tblInvSerialTypes.bitPrintInv = 1   
ORDER BY tblManWIPCompInvSerial.strWIPDocID, tblManWIPCompInvSerial.lngWIPID, tblManWIPCompInvSerial.intLineNo  
END      
ELSE IF(@Filter = 3) --Items            
BEGIN      
SELECT tblManWIPCompInvSerial.*   
FROM tblManWIPCompInvSerial   
INNER JOIN tblManWIPCompInv ON tblManWIPCompInvSerial.strWIPDocID = tblManWIPCompInv.strWIPDocID   
AND tblManWIPCompInv.lngID = tblManWIPCompInvSerial.lngWIPID AND tblManWIPCompInvSerial.intLineNo = tblManWIPCompInv.intLineNo   
INNER JOIN tblInv ON tblManWIPCompInv.strPartNumber = tblInv.strPartNumber   
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType   
WHERE tblManWIPCompInvSerial.strWIPDocID  
IN     
(    
SELECT DISTINCT tblManWIP.strWIPDocID     
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID     
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID     
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber     
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation     
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet     
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)    
AND (tblManJobByProd.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))    
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))    
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))    
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))    
)    
AND tblInvSerialTypes.bitPrintInv = 1   
ORDER BY tblManWIPCompInvSerial.strWIPDocID, tblManWIPCompInvSerial.lngWIPID, tblManWIPCompInvSerial.intLineNo  
END              
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptManWorkInProgressDetailstblManWIPInvReportData] (
	@ItemList NVARCHAR(max)
	,@Filter INT
	,@JobList NVARCHAR(max)
	,@CustomerList NVARCHAR(max)
	,@WorkCenterList NVARCHAR(max)
	,@PLCustomer VARCHAR(50)
	)
AS
BEGIN
	IF (@Filter = 0) --Assets            
	BEGIN
		SELECT tblManWIPCompInv.strWIPDocID
			,tblManWIPCompInv.intLineNo
			,tblManWIPCompInv.strPartNumber
			,tblManWIPCompInv.strDesc
			,tblManWIPCompInv.strLocation
			,tblManWIPCompInv.decBOMQty
			,tblManWIPCompInv.decPostedQty
			,tblManWIPCompInv.decPostQty
			,tblManWIPCompInv.decAmount
			,tblManWIPCompInv.decPostedAmount
			,tblManWIPCompInv.decPostAmount
			,tblManWIPCompInv.lngID
			,tblInv.strStockUnit AS strUnit
			,tblManWIPCompInv.strBOMNumber
			,tblManWIP.strWCCode
		FROM tblManWIP
		INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID
		INNER JOIN tblInv ON tblManWIPCompInv.strPartNumber = tblInv.strPartNumber
		WHERE tblManWIPCompInv.strWIPDocID IN (
				SELECT DISTINCT tblManWIP.strWIPDocID
				FROM tblManWIP
				INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID
				INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID
				INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber
				INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
					AND tblInvExt.strLocName = tblManJobByProd.strLocation
				INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
				INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
				WHERE (tblInv.intType = 1)
					AND (
						tblAccounts.intGLNumber IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND (
						tblManJob.strJBDocID IN (
							SELECT *
							FROM fnSplitStringAsTable(@JobList, ',')
							)
						)
					AND (
						ISNULL(tblManJob.strCustName, '<<No ' + @PLCustomer + '>>') IN (
							SELECT *
							FROM fnSplitStringAsTable(@CustomerList, ',')
							)
						)
					AND (
						tblManWIP.strWCCode IN (
							(
								SELECT *
								FROM fnSplitStringAsTable(@WorkCenterList, ',')
								)
							)
						)
				)
		ORDER BY tblManWIPCompInv.strWIPDocID
			,tblManWIPCompInv.intLineNo
	END
	ELSE IF (@Filter = 1) --Category            
	BEGIN
		SELECT tblManWIPCompInv.strWIPDocID
			,tblManWIPCompInv.intLineNo
			,tblManWIPCompInv.strPartNumber
			,tblManWIPCompInv.strDesc
			,tblManWIPCompInv.strLocation
			,tblManWIPCompInv.decBOMQty
			,tblManWIPCompInv.decPostedQty
			,tblManWIPCompInv.decPostQty
			,tblManWIPCompInv.decAmount
			,tblManWIPCompInv.decPostedAmount
			,tblManWIPCompInv.decPostAmount
			,tblManWIPCompInv.lngID
			,tblInv.strStockUnit AS strUnit
			,tblManWIPCompInv.strBOMNumber
			,tblManWIP.strWCCode
		FROM tblManWIP
		INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID
		INNER JOIN tblInv ON tblManWIPCompInv.strPartNumber = tblInv.strPartNumber
		WHERE tblManWIPCompInv.strWIPDocID IN (
				SELECT DISTINCT tblManWIP.strWIPDocID
				FROM tblManWIP
				INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID
				INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID
				INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber
				INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
					AND tblInvExt.strLocName = tblManJobByProd.strLocation
				INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
				INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
				WHERE (tblInv.intType = 1)
					AND (
						tblInv.strCategory IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND (
						tblManJob.strJBDocID IN (
							SELECT *
							FROM fnSplitStringAsTable(@JobList, ',')
							)
						)
					AND (
						ISNULL(tblManJob.strCustName, '<<No ' + @PLCustomer + '>>') IN (
							SELECT *
							FROM fnSplitStringAsTable(@CustomerList, ',')
							)
						)
					AND (
						tblManWIP.strWCCode IN (
							(
								SELECT *
								FROM fnSplitStringAsTable(@WorkCenterList, ',')
								)
							)
						)
				)
		ORDER BY tblManWIPCompInv.strWIPDocID
			,tblManWIPCompInv.intLineNo
	END
	ELSE IF (@Filter = 2) --AccountSets            
	BEGIN
		SELECT tblManWIPCompInv.strWIPDocID
			,tblManWIPCompInv.intLineNo
			,tblManWIPCompInv.strPartNumber
			,tblManWIPCompInv.strDesc
			,tblManWIPCompInv.strLocation
			,tblManWIPCompInv.decBOMQty
			,tblManWIPCompInv.decPostedQty
			,tblManWIPCompInv.decPostQty
			,tblManWIPCompInv.decAmount
			,tblManWIPCompInv.decPostedAmount
			,tblManWIPCompInv.decPostAmount
			,tblManWIPCompInv.lngID
			,tblInv.strStockUnit AS strUnit
			,tblManWIPCompInv.strBOMNumber
			,tblManWIP.strWCCode
		FROM tblManWIP
		INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID
		INNER JOIN tblInv ON tblManWIPCompInv.strPartNumber = tblInv.strPartNumber
		WHERE tblManWIPCompInv.strWIPDocID IN (
				SELECT DISTINCT tblManWIP.strWIPDocID
				FROM tblManWIP
				INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID
				INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID
				INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber
				INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
					AND tblInvExt.strLocName = tblManJobByProd.strLocation
				INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
				INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
				WHERE (tblInv.intType = 1)
					AND (
						tblInvExt.strAcctSet IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND (
						tblManJob.strJBDocID IN (
							SELECT *
							FROM fnSplitStringAsTable(@JobList, ',')
							)
						)
					AND (
						ISNULL(tblManJob.strCustName, '<<No ' + @PLCustomer + '>>') IN (
							SELECT *
							FROM fnSplitStringAsTable(@CustomerList, ',')
							)
						)
					AND (
						tblManWIP.strWCCode IN (
							(
								SELECT *
								FROM fnSplitStringAsTable(@WorkCenterList, ',')
								)
							)
						)
				)
		ORDER BY tblManWIPCompInv.strWIPDocID
			,tblManWIPCompInv.intLineNo
	END
	ELSE IF (@Filter = 3) --Items            
	BEGIN
		SELECT tblManWIPCompInv.strWIPDocID
			,tblManWIPCompInv.intLineNo
			,tblManWIPCompInv.strPartNumber
			,tblManWIPCompInv.strDesc
			,tblManWIPCompInv.strLocation
			,tblManWIPCompInv.decBOMQty
			,tblManWIPCompInv.decPostedQty
			,tblManWIPCompInv.decPostQty
			,tblManWIPCompInv.decAmount
			,tblManWIPCompInv.decPostedAmount
			,tblManWIPCompInv.decPostAmount
			,tblManWIPCompInv.lngID
			,tblInv.strStockUnit AS strUnit
			,tblManWIPCompInv.strBOMNumber
			,tblManWIP.strWCCode
		FROM tblManWIP
		INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID
		INNER JOIN tblInv ON tblManWIPCompInv.strPartNumber = tblInv.strPartNumber
		WHERE tblManWIPCompInv.strWIPDocID IN (
				SELECT DISTINCT tblManWIP.strWIPDocID
				FROM tblManWIP
				INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID
				INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID
				INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber
				INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
					AND tblInvExt.strLocName = tblManJobByProd.strLocation
				INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
				INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
				WHERE (tblInv.intType = 1)
					AND (
						tblManJobByProd.strPartNumber IN (
							SELECT *
							FROM fnSplitStringAsTable(@ItemList, ',')
							)
						)
					AND (
						tblManJob.strJBDocID IN (
							SELECT *
							FROM fnSplitStringAsTable(@JobList, ',')
							)
						)
					AND (
						ISNULL(tblManJob.strCustName, '<<No ' + @PLCustomer + '>>') IN (
							SELECT *
							FROM fnSplitStringAsTable(@CustomerList, ',')
							)
						)
					AND (
						tblManWIP.strWCCode IN (
							(
								SELECT *
								FROM fnSplitStringAsTable(@WorkCenterList, ',')
								)
							)
						)
				)
		ORDER BY tblManWIPCompInv.strWIPDocID
			,tblManWIPCompInv.intLineNo
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptManWorkInProgressDetailstblManWIPCompOverheadReportData]          
(          
@ItemList nvarchar(max),          
@Filter int,    
@JobList  nvarchar(max),    
@CustomerList  nvarchar(max),    
@WorkCenterList  nvarchar(max),    
@PLCustomer varchar(50)    
)          
AS          
BEGIN          
IF(@Filter = 0) --Assets          
BEGIN    
SELECT tblManWIPCompOverhead.strWIPDocID, tblManWIPCompOverhead.intLineNo, tblManWIPCompOverhead.intGLNumber, tblAccounts.strDesc AS strAccDesc, ISNULL(tblManWIPCompOverhead.intDept,0) AS intDept, ISNULL(tblDepartments.strDesc,'') AS strDeptDesc, tblManWIPCompOverhead.uidCenterID, CASE WHEN ISNULL(tblCenters.strLvl1,'') <> '' THEN tblCenters.strLvl1 + CASE WHEN ISNULL(tblCenters.strLvl2,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl2,'') + CASE WHEN ISNULL(tblCenters.strLvl3,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl3,'') + CASE WHEN ISNULL(tblCenters.strLvl4,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') + CASE WHEN ISNULL(tblCenters.strLvl5,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') END END END END ELSE '' END strCenter, tblManWIPCompOverhead.decAmount, tblManWIPCompOverhead.decPostedAmount, tblManWIPCompOverhead.decPostAmount, tblManWIPCompOverhead.lngID, tblManWIPCompOverhead.strBOMNumber, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompOverhead ON tblManWIP.strWIPDocID = tblManWIPCompOverhead.strWIPDocID INNER JOIN tblAccounts ON tblManWIPCompOverhead.intGLNumber = tblAccounts.intGLNumber LEFT JOIN tblDepartments ON tblManWIPCompOverhead.intDept = tblDepartments.intDept LEFT JOIN tblCenters ON tblManWIPCompOverhead.uidCenterID = tblCenters.uidCenterID WHERE tblManWIPCompOverhead.strWIPDocID IN 
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation   
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet   
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY tblManWIPCompOverhead.strWIPDocID, tblManWIPCompOverhead.intLineNo
END   
ELSE IF(@Filter = 1) --Category          
BEGIN    
SELECT tblManWIPCompOverhead.strWIPDocID, tblManWIPCompOverhead.intLineNo, tblManWIPCompOverhead.intGLNumber, tblAccounts.strDesc AS strAccDesc, ISNULL(tblManWIPCompOverhead.intDept,0) AS intDept, ISNULL(tblDepartments.strDesc,'') AS strDeptDesc, tblManWIPCompOverhead.uidCenterID, CASE WHEN ISNULL(tblCenters.strLvl1,'') <> '' THEN tblCenters.strLvl1 + CASE WHEN ISNULL(tblCenters.strLvl2,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl2,'') + CASE WHEN ISNULL(tblCenters.strLvl3,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl3,'') + CASE WHEN ISNULL(tblCenters.strLvl4,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') + CASE WHEN ISNULL(tblCenters.strLvl5,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') END END END END ELSE '' END strCenter, tblManWIPCompOverhead.decAmount, tblManWIPCompOverhead.decPostedAmount, tblManWIPCompOverhead.decPostAmount, tblManWIPCompOverhead.lngID, tblManWIPCompOverhead.strBOMNumber, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompOverhead ON tblManWIP.strWIPDocID = tblManWIPCompOverhead.strWIPDocID INNER JOIN tblAccounts ON tblManWIPCompOverhead.intGLNumber = tblAccounts.intGLNumber LEFT JOIN tblDepartments ON tblManWIPCompOverhead.intDept = tblDepartments.intDept LEFT JOIN tblCenters ON tblManWIPCompOverhead.uidCenterID = tblCenters.uidCenterID WHERE tblManWIPCompOverhead.strWIPDocID IN 
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation   
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet   
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY tblManWIPCompOverhead.strWIPDocID, tblManWIPCompOverhead.intLineNo

END    
ELSE IF(@Filter = 2) --AccountSets          
BEGIN  
SELECT tblManWIPCompOverhead.strWIPDocID, tblManWIPCompOverhead.intLineNo, tblManWIPCompOverhead.intGLNumber, tblAccounts.strDesc AS strAccDesc, ISNULL(tblManWIPCompOverhead.intDept,0) AS intDept, ISNULL(tblDepartments.strDesc,'') AS strDeptDesc, tblManWIPCompOverhead.uidCenterID, CASE WHEN ISNULL(tblCenters.strLvl1,'') <> '' THEN tblCenters.strLvl1 + CASE WHEN ISNULL(tblCenters.strLvl2,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl2,'') + CASE WHEN ISNULL(tblCenters.strLvl3,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl3,'') + CASE WHEN ISNULL(tblCenters.strLvl4,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') + CASE WHEN ISNULL(tblCenters.strLvl5,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') END END END END ELSE '' END strCenter, tblManWIPCompOverhead.decAmount, tblManWIPCompOverhead.decPostedAmount, tblManWIPCompOverhead.decPostAmount, tblManWIPCompOverhead.lngID, tblManWIPCompOverhead.strBOMNumber, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompOverhead ON tblManWIP.strWIPDocID = tblManWIPCompOverhead.strWIPDocID INNER JOIN tblAccounts ON tblManWIPCompOverhead.intGLNumber = tblAccounts.intGLNumber LEFT JOIN tblDepartments ON tblManWIPCompOverhead.intDept = tblDepartments.intDept LEFT JOIN tblCenters ON tblManWIPCompOverhead.uidCenterID = tblCenters.uidCenterID WHERE tblManWIPCompOverhead.strWIPDocID IN 
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation   
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet   
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY tblManWIPCompOverhead.strWIPDocID, tblManWIPCompOverhead.intLineNo
  
END  
ELSE IF(@Filter = 3) --Items          
BEGIN    
SELECT tblManWIPCompOverhead.strWIPDocID, tblManWIPCompOverhead.intLineNo, tblManWIPCompOverhead.intGLNumber, tblAccounts.strDesc AS strAccDesc, ISNULL(tblManWIPCompOverhead.intDept,0) AS intDept, ISNULL(tblDepartments.strDesc,'') AS strDeptDesc, tblManWIPCompOverhead.uidCenterID, CASE WHEN ISNULL(tblCenters.strLvl1,'') <> '' THEN tblCenters.strLvl1 + CASE WHEN ISNULL(tblCenters.strLvl2,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl2,'') + CASE WHEN ISNULL(tblCenters.strLvl3,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl3,'') + CASE WHEN ISNULL(tblCenters.strLvl4,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') + CASE WHEN ISNULL(tblCenters.strLvl5,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') END END END END ELSE '' END strCenter, tblManWIPCompOverhead.decAmount, tblManWIPCompOverhead.decPostedAmount, tblManWIPCompOverhead.decPostAmount, tblManWIPCompOverhead.lngID, tblManWIPCompOverhead.strBOMNumber, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompOverhead ON tblManWIP.strWIPDocID = tblManWIPCompOverhead.strWIPDocID INNER JOIN tblAccounts ON tblManWIPCompOverhead.intGLNumber = tblAccounts.intGLNumber LEFT JOIN tblDepartments ON tblManWIPCompOverhead.intDept = tblDepartments.intDept LEFT JOIN tblCenters ON tblManWIPCompOverhead.uidCenterID = tblCenters.uidCenterID WHERE tblManWIPCompOverhead.strWIPDocID IN 
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation   
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet   
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblManJobByProd.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY tblManWIPCompOverhead.strWIPDocID, tblManWIPCompOverhead.intLineNo
  
END            
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptManWorkInProgresstblManWIPCompOverheadReportData]        
(        
@ItemList nvarchar(max),        
@Filter int,  
@JobList  nvarchar(max),  
@CustomerList  nvarchar(max),  
@WorkCenterList  nvarchar(max),  
@PLCustomer varchar(50)  
)        
AS        
BEGIN        
IF(@Filter = 0) --Assets        
BEGIN       
SELECT tblManWIP.strJBDocID, tblManWIPCompOverhead.intGLNumber, tblAccounts.strDesc AS strAccDesc, ISNULL(tblManWIPCompOverhead.intDept,0) AS intDept, ISNULL(tblDepartments.strDesc,'') AS strDeptDesc, tblManWIPCompOverhead.uidCenterID, CASE WHEN ISNULL(tblCenters.strLvl1,'') <> '' THEN tblCenters.strLvl1 + CASE WHEN ISNULL(tblCenters.strLvl2,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl2,'') + CASE WHEN ISNULL(tblCenters.strLvl3,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl3,'') + CASE WHEN ISNULL(tblCenters.strLvl4,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') + CASE WHEN ISNULL(tblCenters.strLvl5,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') END END END END ELSE '' END strCenter, tblManWIPCompOverhead.decAmount, SUM(tblManWIPCompOverhead.decPostAmount) AS decPostAmount, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompOverhead ON tblManWIP.strWIPDocID = tblManWIPCompOverhead.strWIPDocID INNER JOIN tblAccounts ON tblManWIPCompOverhead.intGLNumber = tblAccounts.intGLNumber LEFT JOIN tblDepartments ON tblManWIPCompOverhead.intDept = tblDepartments.intDept LEFT JOIN tblCenters ON tblManWIPCompOverhead.uidCenterID = tblCenters.uidCenterID WHERE tblManWIPCompOverhead.strWIPDocID IN
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)   
GROUP BY tblManWIP.strJBDocID, tblManWIPCompOverhead.intGLNumber, tblAccounts.strDesc, ISNULL(tblManWIPCompOverhead.intDept,0), ISNULL(tblDepartments.strDesc,''), tblManWIPCompOverhead.uidCenterID, CASE WHEN ISNULL(tblCenters.strLvl1,'') <> '' THEN tblCenters.strLvl1 + CASE WHEN ISNULL(tblCenters.strLvl2,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl2,'') + CASE WHEN ISNULL(tblCenters.strLvl3,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl3,'') + CASE WHEN ISNULL(tblCenters.strLvl4,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') + CASE WHEN ISNULL(tblCenters.strLvl5,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') END END END END ELSE '' END, tblManWIPCompOverhead.decAmount, tblManWIP.strWCCode ORDER BY tblManWIP.strJBDocID, tblManWIPCompOverhead.intGLNumber  
END  

ELSE IF(@Filter = 1) --Category        
BEGIN  
SELECT tblManWIP.strJBDocID, tblManWIPCompOverhead.intGLNumber, tblAccounts.strDesc AS strAccDesc, ISNULL(tblManWIPCompOverhead.intDept,0) AS intDept, ISNULL(tblDepartments.strDesc,'') AS strDeptDesc, tblManWIPCompOverhead.uidCenterID, CASE WHEN ISNULL(tblCenters.strLvl1,'') <> '' THEN tblCenters.strLvl1 + CASE WHEN ISNULL(tblCenters.strLvl2,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl2,'') + CASE WHEN ISNULL(tblCenters.strLvl3,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl3,'') + CASE WHEN ISNULL(tblCenters.strLvl4,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') + CASE WHEN ISNULL(tblCenters.strLvl5,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') END END END END ELSE '' END strCenter, tblManWIPCompOverhead.decAmount, SUM(tblManWIPCompOverhead.decPostAmount) AS decPostAmount, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompOverhead ON tblManWIP.strWIPDocID = tblManWIPCompOverhead.strWIPDocID INNER JOIN tblAccounts ON tblManWIPCompOverhead.intGLNumber = tblAccounts.intGLNumber LEFT JOIN tblDepartments ON tblManWIPCompOverhead.intDept = tblDepartments.intDept LEFT JOIN tblCenters ON tblManWIPCompOverhead.uidCenterID = tblCenters.uidCenterID WHERE tblManWIPCompOverhead.strWIPDocID IN
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)   
GROUP BY tblManWIP.strJBDocID, tblManWIPCompOverhead.intGLNumber, tblAccounts.strDesc, ISNULL(tblManWIPCompOverhead.intDept,0), ISNULL(tblDepartments.strDesc,''), tblManWIPCompOverhead.uidCenterID, CASE WHEN ISNULL(tblCenters.strLvl1,'') <> '' THEN tblCenters.strLvl1 + CASE WHEN ISNULL(tblCenters.strLvl2,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl2,'') + CASE WHEN ISNULL(tblCenters.strLvl3,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl3,'') + CASE WHEN ISNULL(tblCenters.strLvl4,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') + CASE WHEN ISNULL(tblCenters.strLvl5,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') END END END END ELSE '' END, tblManWIPCompOverhead.decAmount, tblManWIP.strWCCode ORDER BY tblManWIP.strJBDocID, tblManWIPCompOverhead.intGLNumber 
END  
ELSE IF(@Filter = 2) --AccountSets        
BEGIN  
SELECT tblManWIP.strJBDocID, tblManWIPCompOverhead.intGLNumber, tblAccounts.strDesc AS strAccDesc, ISNULL(tblManWIPCompOverhead.intDept,0) AS intDept, ISNULL(tblDepartments.strDesc,'') AS strDeptDesc, tblManWIPCompOverhead.uidCenterID, CASE WHEN ISNULL(tblCenters.strLvl1,'') <> '' THEN tblCenters.strLvl1 + CASE WHEN ISNULL(tblCenters.strLvl2,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl2,'') + CASE WHEN ISNULL(tblCenters.strLvl3,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl3,'') + CASE WHEN ISNULL(tblCenters.strLvl4,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') + CASE WHEN ISNULL(tblCenters.strLvl5,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') END END END END ELSE '' END strCenter, tblManWIPCompOverhead.decAmount, SUM(tblManWIPCompOverhead.decPostAmount) AS decPostAmount, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompOverhead ON tblManWIP.strWIPDocID = tblManWIPCompOverhead.strWIPDocID INNER JOIN tblAccounts ON tblManWIPCompOverhead.intGLNumber = tblAccounts.intGLNumber LEFT JOIN tblDepartments ON tblManWIPCompOverhead.intDept = tblDepartments.intDept LEFT JOIN tblCenters ON tblManWIPCompOverhead.uidCenterID = tblCenters.uidCenterID WHERE tblManWIPCompOverhead.strWIPDocID IN
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)   
GROUP BY tblManWIP.strJBDocID, tblManWIPCompOverhead.intGLNumber, tblAccounts.strDesc, ISNULL(tblManWIPCompOverhead.intDept,0), ISNULL(tblDepartments.strDesc,''), tblManWIPCompOverhead.uidCenterID, CASE WHEN ISNULL(tblCenters.strLvl1,'') <> '' THEN tblCenters.strLvl1 + CASE WHEN ISNULL(tblCenters.strLvl2,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl2,'') + CASE WHEN ISNULL(tblCenters.strLvl3,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl3,'') + CASE WHEN ISNULL(tblCenters.strLvl4,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') + CASE WHEN ISNULL(tblCenters.strLvl5,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') END END END END ELSE '' END, tblManWIPCompOverhead.decAmount, tblManWIP.strWCCode ORDER BY tblManWIP.strJBDocID, tblManWIPCompOverhead.intGLNumber 
END  
ELSE IF(@Filter = 3) --Items        
BEGIN  
SELECT tblManWIP.strJBDocID, tblManWIPCompOverhead.intGLNumber, tblAccounts.strDesc AS strAccDesc, ISNULL(tblManWIPCompOverhead.intDept,0) AS intDept, ISNULL(tblDepartments.strDesc,'') AS strDeptDesc, tblManWIPCompOverhead.uidCenterID, CASE WHEN ISNULL(tblCenters.strLvl1,'') <> '' THEN tblCenters.strLvl1 + CASE WHEN ISNULL(tblCenters.strLvl2,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl2,'') + CASE WHEN ISNULL(tblCenters.strLvl3,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl3,'') + CASE WHEN ISNULL(tblCenters.strLvl4,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') + CASE WHEN ISNULL(tblCenters.strLvl5,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') END END END END ELSE '' END strCenter, tblManWIPCompOverhead.decAmount, SUM(tblManWIPCompOverhead.decPostAmount) AS decPostAmount, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompOverhead ON tblManWIP.strWIPDocID = tblManWIPCompOverhead.strWIPDocID INNER JOIN tblAccounts ON tblManWIPCompOverhead.intGLNumber = tblAccounts.intGLNumber LEFT JOIN tblDepartments ON tblManWIPCompOverhead.intDept = tblDepartments.intDept LEFT JOIN tblCenters ON tblManWIPCompOverhead.uidCenterID = tblCenters.uidCenterID WHERE tblManWIPCompOverhead.strWIPDocID IN 
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblManJobByProd.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)   
GROUP BY tblManWIP.strJBDocID, tblManWIPCompOverhead.intGLNumber, tblAccounts.strDesc, ISNULL(tblManWIPCompOverhead.intDept,0), ISNULL(tblDepartments.strDesc,''), tblManWIPCompOverhead.uidCenterID, CASE WHEN ISNULL(tblCenters.strLvl1,'') <> '' THEN tblCenters.strLvl1 + CASE WHEN ISNULL(tblCenters.strLvl2,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl2,'') + CASE WHEN ISNULL(tblCenters.strLvl3,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl3,'') + CASE WHEN ISNULL(tblCenters.strLvl4,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') + CASE WHEN ISNULL(tblCenters.strLvl5,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') END END END END ELSE '' END, tblManWIPCompOverhead.decAmount, tblManWIP.strWCCode ORDER BY tblManWIP.strJBDocID, tblManWIPCompOverhead.intGLNumber
END          
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptManWorkInProgressDetailstblManWIPCompMachReportData]          
(          
@ItemList nvarchar(max),          
@Filter int,    
@JobList  nvarchar(max),    
@CustomerList  nvarchar(max),    
@WorkCenterList  nvarchar(max),    
@PLCustomer varchar(50)    
)          
AS          
BEGIN          
IF(@Filter = 0) --Assets          
BEGIN         
SELECT tblManWIPCompMach.strWIPDocID, tblManWIPCompMach.intLineNo, tblManWIPCompMach.strMachCode, tblManMachinery.strDesc, tblManWIPCompMach.decVariableHours, tblManWIPCompMach.decVariableRate, tblManWIPCompMach.decSetupHours, tblManWIPCompMach.decSetupRate, tblManWIPCompMach.decBreakdownHours, tblManWIPCompMach.decBreakdownRate, tblManWIPCompMach.decAmount, tblManWIPCompMach.decPostedVariableHours, tblManWIPCompMach.decPostedSetupHours, tblManWIPCompMach.decPostedBreakdownHours, tblManWIPCompMach.decPostedAmount, tblManWIPCompMach.decPostVariableHours, tblManWIPCompMach.decPostSetupHours, tblManWIPCompMach.decPostBreakdownHours, tblManWIPCompMach.decPostAmount, tblManWIPCompMach.lngID, tblManWIPCompMach.strBOMNumber, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompMach ON tblManWIP.strWIPDocID = tblManWIPCompMach.strWIPDocID INNER JOIN tblManMachinery ON tblManWIPCompMach.strMachCode = tblManMachinery.strMachCode WHERE tblManWIPCompMach.strWIPDocID IN
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation   
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet   
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY tblManWIPCompMach.strMachCode, tblManWIPCompMach.intLineNo
END   

ELSE IF(@Filter = 1) --Category          
BEGIN    
SELECT tblManWIPCompMach.strWIPDocID, tblManWIPCompMach.intLineNo, tblManWIPCompMach.strMachCode, tblManMachinery.strDesc, tblManWIPCompMach.decVariableHours, tblManWIPCompMach.decVariableRate, tblManWIPCompMach.decSetupHours, tblManWIPCompMach.decSetupRate, tblManWIPCompMach.decBreakdownHours, tblManWIPCompMach.decBreakdownRate, tblManWIPCompMach.decAmount, tblManWIPCompMach.decPostedVariableHours, tblManWIPCompMach.decPostedSetupHours, tblManWIPCompMach.decPostedBreakdownHours, tblManWIPCompMach.decPostedAmount, tblManWIPCompMach.decPostVariableHours, tblManWIPCompMach.decPostSetupHours, tblManWIPCompMach.decPostBreakdownHours, tblManWIPCompMach.decPostAmount, tblManWIPCompMach.lngID, tblManWIPCompMach.strBOMNumber, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompMach ON tblManWIP.strWIPDocID = tblManWIPCompMach.strWIPDocID INNER JOIN tblManMachinery ON tblManWIPCompMach.strMachCode = tblManMachinery.strMachCode WHERE tblManWIPCompMach.strWIPDocID IN
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation   
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet   
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY tblManWIPCompMach.strMachCode, tblManWIPCompMach.intLineNo
END    
ELSE IF(@Filter = 2) --AccountSets          
BEGIN    
SELECT tblManWIPCompMach.strWIPDocID, tblManWIPCompMach.intLineNo, tblManWIPCompMach.strMachCode, tblManMachinery.strDesc, tblManWIPCompMach.decVariableHours, tblManWIPCompMach.decVariableRate, tblManWIPCompMach.decSetupHours, tblManWIPCompMach.decSetupRate, tblManWIPCompMach.decBreakdownHours, tblManWIPCompMach.decBreakdownRate, tblManWIPCompMach.decAmount, tblManWIPCompMach.decPostedVariableHours, tblManWIPCompMach.decPostedSetupHours, tblManWIPCompMach.decPostedBreakdownHours, tblManWIPCompMach.decPostedAmount, tblManWIPCompMach.decPostVariableHours, tblManWIPCompMach.decPostSetupHours, tblManWIPCompMach.decPostBreakdownHours, tblManWIPCompMach.decPostAmount, tblManWIPCompMach.lngID, tblManWIPCompMach.strBOMNumber, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompMach ON tblManWIP.strWIPDocID = tblManWIPCompMach.strWIPDocID INNER JOIN tblManMachinery ON tblManWIPCompMach.strMachCode = tblManMachinery.strMachCode WHERE tblManWIPCompMach.strWIPDocID IN
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation   
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet   
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY tblManWIPCompMach.strMachCode, tblManWIPCompMach.intLineNo 
END    
ELSE IF(@Filter = 3) --Items          
BEGIN    
SELECT tblManWIPCompMach.strWIPDocID, tblManWIPCompMach.intLineNo, tblManWIPCompMach.strMachCode, tblManMachinery.strDesc, tblManWIPCompMach.decVariableHours, tblManWIPCompMach.decVariableRate, tblManWIPCompMach.decSetupHours, tblManWIPCompMach.decSetupRate, tblManWIPCompMach.decBreakdownHours, tblManWIPCompMach.decBreakdownRate, tblManWIPCompMach.decAmount, tblManWIPCompMach.decPostedVariableHours, tblManWIPCompMach.decPostedSetupHours, tblManWIPCompMach.decPostedBreakdownHours, tblManWIPCompMach.decPostedAmount, tblManWIPCompMach.decPostVariableHours, tblManWIPCompMach.decPostSetupHours, tblManWIPCompMach.decPostBreakdownHours, tblManWIPCompMach.decPostAmount, tblManWIPCompMach.lngID, tblManWIPCompMach.strBOMNumber, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompMach ON tblManWIP.strWIPDocID = tblManWIPCompMach.strWIPDocID INNER JOIN tblManMachinery ON tblManWIPCompMach.strMachCode = tblManMachinery.strMachCode WHERE tblManWIPCompMach.strWIPDocID IN
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation   
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet   
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblManJobByProd.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY tblManWIPCompMach.strMachCode, tblManWIPCompMach.intLineNo
END            
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptManWorkInProgresstblManWIPCompMachReportData]        
(        
@ItemList nvarchar(max),        
@Filter int,  
@JobList  nvarchar(max),  
@CustomerList  nvarchar(max),  
@WorkCenterList  nvarchar(max),  
@PLCustomer varchar(50)  
)        
AS        
BEGIN        
IF(@Filter = 0) --Assets        
BEGIN       
SELECT tblManWIP.strJBDocID, tblManWIPCompMach.strMachCode, tblManMachinery.strDesc, tblManWIPCompMach.decVariableHours, tblManWIPCompMach.decVariableRate, tblManWIPCompMach.decSetupHours, tblManWIPCompMach.decSetupRate, tblManWIPCompMach.decBreakdownHours, tblManWIPCompMach.decBreakdownRate, tblManWIPCompMach.decAmount, SUM(tblManWIPCompMach.decPostVariableHours) AS decPostVariableHours, SUM(tblManWIPCompMach.decPostSetupHours) AS decPostSetupHours, SUM(tblManWIPCompMach.decPostBreakdownHours) AS decPostBreakdownHours, SUM(tblManWIPCompMach.decPostAmount) AS decPostAmount, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompMach ON tblManWIP.strWIPDocID = tblManWIPCompMach.strWIPDocID INNER JOIN tblManMachinery ON tblManWIPCompMach.strMachCode = tblManMachinery.strMachCode WHERE tblManWIPCompMach.strWIPDocID IN 
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
GROUP BY tblManWIP.strJBDocID, tblManWIPCompMach.strMachCode, tblManMachinery.strDesc, tblManWIPCompMach.decVariableHours, tblManWIPCompMach.decVariableRate, tblManWIPCompMach.decSetupHours, tblManWIPCompMach.decSetupRate, tblManWIPCompMach.decBreakdownHours, tblManWIPCompMach.decBreakdownRate, tblManWIPCompMach.decAmount, tblManWIP.strWCCode ORDER BY tblManWIP.strJBDocID, tblManWIPCompMach.strMachCode  
END    

ELSE IF(@Filter = 1) --Category        
BEGIN  
SELECT tblManWIP.strJBDocID, tblManWIPCompMach.strMachCode, tblManMachinery.strDesc, tblManWIPCompMach.decVariableHours, tblManWIPCompMach.decVariableRate, tblManWIPCompMach.decSetupHours, tblManWIPCompMach.decSetupRate, tblManWIPCompMach.decBreakdownHours, tblManWIPCompMach.decBreakdownRate, tblManWIPCompMach.decAmount, SUM(tblManWIPCompMach.decPostVariableHours) AS decPostVariableHours, SUM(tblManWIPCompMach.decPostSetupHours) AS decPostSetupHours, SUM(tblManWIPCompMach.decPostBreakdownHours) AS decPostBreakdownHours, SUM(tblManWIPCompMach.decPostAmount) AS decPostAmount, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompMach ON tblManWIP.strWIPDocID = tblManWIPCompMach.strWIPDocID INNER JOIN tblManMachinery ON tblManWIPCompMach.strMachCode = tblManMachinery.strMachCode WHERE tblManWIPCompMach.strWIPDocID IN 
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
GROUP BY tblManWIP.strJBDocID, tblManWIPCompMach.strMachCode, tblManMachinery.strDesc, tblManWIPCompMach.decVariableHours, tblManWIPCompMach.decVariableRate, tblManWIPCompMach.decSetupHours, tblManWIPCompMach.decSetupRate, tblManWIPCompMach.decBreakdownHours, tblManWIPCompMach.decBreakdownRate, tblManWIPCompMach.decAmount, tblManWIP.strWCCode ORDER BY tblManWIP.strJBDocID, tblManWIPCompMach.strMachCode
END  
ELSE IF(@Filter = 2) --AccountSets        
BEGIN  
SELECT tblManWIP.strJBDocID, tblManWIPCompMach.strMachCode, tblManMachinery.strDesc, tblManWIPCompMach.decVariableHours, tblManWIPCompMach.decVariableRate, tblManWIPCompMach.decSetupHours, tblManWIPCompMach.decSetupRate, tblManWIPCompMach.decBreakdownHours, tblManWIPCompMach.decBreakdownRate, tblManWIPCompMach.decAmount, SUM(tblManWIPCompMach.decPostVariableHours) AS decPostVariableHours, SUM(tblManWIPCompMach.decPostSetupHours) AS decPostSetupHours, SUM(tblManWIPCompMach.decPostBreakdownHours) AS decPostBreakdownHours, SUM(tblManWIPCompMach.decPostAmount) AS decPostAmount, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompMach ON tblManWIP.strWIPDocID = tblManWIPCompMach.strWIPDocID INNER JOIN tblManMachinery ON tblManWIPCompMach.strMachCode = tblManMachinery.strMachCode WHERE tblManWIPCompMach.strWIPDocID IN 
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
GROUP BY tblManWIP.strJBDocID, tblManWIPCompMach.strMachCode, tblManMachinery.strDesc, tblManWIPCompMach.decVariableHours, tblManWIPCompMach.decVariableRate, tblManWIPCompMach.decSetupHours, tblManWIPCompMach.decSetupRate, tblManWIPCompMach.decBreakdownHours, tblManWIPCompMach.decBreakdownRate, tblManWIPCompMach.decAmount, tblManWIP.strWCCode ORDER BY tblManWIP.strJBDocID, tblManWIPCompMach.strMachCode
END  
ELSE IF(@Filter = 3) --Items        
BEGIN  
SELECT tblManWIP.strJBDocID, tblManWIPCompMach.strMachCode, tblManMachinery.strDesc, tblManWIPCompMach.decVariableHours, tblManWIPCompMach.decVariableRate, tblManWIPCompMach.decSetupHours, tblManWIPCompMach.decSetupRate, tblManWIPCompMach.decBreakdownHours, tblManWIPCompMach.decBreakdownRate, tblManWIPCompMach.decAmount, SUM(tblManWIPCompMach.decPostVariableHours) AS decPostVariableHours, SUM(tblManWIPCompMach.decPostSetupHours) AS decPostSetupHours, SUM(tblManWIPCompMach.decPostBreakdownHours) AS decPostBreakdownHours, SUM(tblManWIPCompMach.decPostAmount) AS decPostAmount, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompMach ON tblManWIP.strWIPDocID = tblManWIPCompMach.strWIPDocID INNER JOIN tblManMachinery ON tblManWIPCompMach.strMachCode = tblManMachinery.strMachCode WHERE tblManWIPCompMach.strWIPDocID IN 
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblManJobByProd.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))   
)  
GROUP BY tblManWIP.strJBDocID, tblManWIPCompMach.strMachCode, tblManMachinery.strDesc, tblManWIPCompMach.decVariableHours, tblManWIPCompMach.decVariableRate, tblManWIPCompMach.decSetupHours, tblManWIPCompMach.decSetupRate, tblManWIPCompMach.decBreakdownHours, tblManWIPCompMach.decBreakdownRate, tblManWIPCompMach.decAmount, tblManWIP.strWCCode ORDER BY tblManWIP.strJBDocID, tblManWIPCompMach.strMachCode
END          
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptManWorkInProgressDetailstblManWIPCompLabReportData]          
(          
@ItemList nvarchar(max),          
@Filter int,    
@JobList  nvarchar(max),    
@CustomerList  nvarchar(max),    
@WorkCenterList  nvarchar(max),    
@PLCustomer varchar(50)    
)          
AS          
BEGIN          
IF(@Filter = 0) --Assets          
BEGIN    
SELECT tblManWIPCompLab.strWIPDocID, tblManWIPCompLab.intLineNo, tblManWIPCompLab.strLabCode, tblManLabour.strDesc, tblManWIPCompLab.decVariableHours, tblManWIPCompLab.decVariableRate, tblManWIPCompLab.decSetupHours, tblManWIPCompLab.decSetupRate, tblManWIPCompLab.decBreakdownHours, tblManWIPCompLab.decBreakdownRate, tblManWIPCompLab.decAmount, tblManWIPCompLab.decPostedVariableHours, tblManWIPCompLab.decPostedSetupHours, tblManWIPCompLab.decPostedBreakdownHours, tblManWIPCompLab.decPostedAmount, tblManWIPCompLab.decPostVariableHours, tblManWIPCompLab.decPostSetupHours, tblManWIPCompLab.decPostBreakdownHours, tblManWIPCompLab.decPostAmount, tblManWIPCompLab.lngID, tblManWIPCompLab.strBOMNumber, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompLab ON tblManWIP.strWIPDocID = tblManWIPCompLab.strWIPDocID INNER JOIN tblManLabour ON tblManWIPCompLab.strLabCode = tblManLabour.strLabCode WHERE tblManWIPCompLab.strWIPDocID IN
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation   
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet   
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY tblManWIPCompLab.strWIPDocID, tblManWIPCompLab.intLineNo     
END  
ELSE IF(@Filter = 1) --Category          
BEGIN    
SELECT tblManWIPCompLab.strWIPDocID, tblManWIPCompLab.intLineNo, tblManWIPCompLab.strLabCode, tblManLabour.strDesc, tblManWIPCompLab.decVariableHours, tblManWIPCompLab.decVariableRate, tblManWIPCompLab.decSetupHours, tblManWIPCompLab.decSetupRate, tblManWIPCompLab.decBreakdownHours, tblManWIPCompLab.decBreakdownRate, tblManWIPCompLab.decAmount, tblManWIPCompLab.decPostedVariableHours, tblManWIPCompLab.decPostedSetupHours, tblManWIPCompLab.decPostedBreakdownHours, tblManWIPCompLab.decPostedAmount, tblManWIPCompLab.decPostVariableHours, tblManWIPCompLab.decPostSetupHours, tblManWIPCompLab.decPostBreakdownHours, tblManWIPCompLab.decPostAmount, tblManWIPCompLab.lngID, tblManWIPCompLab.strBOMNumber, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompLab ON tblManWIP.strWIPDocID = tblManWIPCompLab.strWIPDocID INNER JOIN tblManLabour ON tblManWIPCompLab.strLabCode = tblManLabour.strLabCode WHERE tblManWIPCompLab.strWIPDocID IN
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation   
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet   
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY tblManWIPCompLab.strWIPDocID, tblManWIPCompLab.intLineNo
END    
ELSE IF(@Filter = 2) --AccountSets          
BEGIN    
SELECT tblManWIPCompLab.strWIPDocID, tblManWIPCompLab.intLineNo, tblManWIPCompLab.strLabCode, tblManLabour.strDesc, tblManWIPCompLab.decVariableHours, tblManWIPCompLab.decVariableRate, tblManWIPCompLab.decSetupHours, tblManWIPCompLab.decSetupRate, tblManWIPCompLab.decBreakdownHours, tblManWIPCompLab.decBreakdownRate, tblManWIPCompLab.decAmount, tblManWIPCompLab.decPostedVariableHours, tblManWIPCompLab.decPostedSetupHours, tblManWIPCompLab.decPostedBreakdownHours, tblManWIPCompLab.decPostedAmount, tblManWIPCompLab.decPostVariableHours, tblManWIPCompLab.decPostSetupHours, tblManWIPCompLab.decPostBreakdownHours, tblManWIPCompLab.decPostAmount, tblManWIPCompLab.lngID, tblManWIPCompLab.strBOMNumber, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompLab ON tblManWIP.strWIPDocID = tblManWIPCompLab.strWIPDocID INNER JOIN tblManLabour ON tblManWIPCompLab.strLabCode = tblManLabour.strLabCode WHERE tblManWIPCompLab.strWIPDocID IN
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation   
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet   
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY tblManWIPCompLab.strWIPDocID, tblManWIPCompLab.intLineNo   
END    
ELSE IF(@Filter = 3) --Items          
BEGIN    
SELECT tblManWIPCompLab.strWIPDocID, tblManWIPCompLab.intLineNo, tblManWIPCompLab.strLabCode, tblManLabour.strDesc, tblManWIPCompLab.decVariableHours, tblManWIPCompLab.decVariableRate, tblManWIPCompLab.decSetupHours, tblManWIPCompLab.decSetupRate, tblManWIPCompLab.decBreakdownHours, tblManWIPCompLab.decBreakdownRate, tblManWIPCompLab.decAmount, tblManWIPCompLab.decPostedVariableHours, tblManWIPCompLab.decPostedSetupHours, tblManWIPCompLab.decPostedBreakdownHours, tblManWIPCompLab.decPostedAmount, tblManWIPCompLab.decPostVariableHours, tblManWIPCompLab.decPostSetupHours, tblManWIPCompLab.decPostBreakdownHours, tblManWIPCompLab.decPostAmount, tblManWIPCompLab.lngID, tblManWIPCompLab.strBOMNumber, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompLab ON tblManWIP.strWIPDocID = tblManWIPCompLab.strWIPDocID INNER JOIN tblManLabour ON tblManWIPCompLab.strLabCode = tblManLabour.strLabCode WHERE tblManWIPCompLab.strWIPDocID IN 
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID   
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID   
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber   
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation   
INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet   
INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblManJobByProd.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
ORDER BY tblManWIPCompLab.strWIPDocID, tblManWIPCompLab.intLineNo 
END            
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptManWorkInProgresstblManWIPCompLabReportData]        
(        
@ItemList nvarchar(max),        
@Filter int,  
@JobList  nvarchar(max),  
@CustomerList  nvarchar(max),  
@WorkCenterList  nvarchar(max),  
@PLCustomer varchar(50)  
)        
AS        
BEGIN        
IF(@Filter = 0) --Assets        
BEGIN       
SELECT tblManWIP.strJBDocID, tblManWIPCompLab.strLabCode, tblManLabour.strDesc, tblManWIPCompLab.decVariableHours, tblManWIPCompLab.decVariableRate, tblManWIPCompLab.decSetupHours, tblManWIPCompLab.decSetupRate, tblManWIPCompLab.decBreakdownHours, tblManWIPCompLab.decBreakdownRate, tblManWIPCompLab.decAmount, SUM(tblManWIPCompLab.decPostVariableHours) AS decPostVariableHours, SUM(tblManWIPCompLab.decPostSetupHours) AS decPostSetupHours, SUM(tblManWIPCompLab.decPostBreakdownHours) AS decPostBreakdownHours, SUM(tblManWIPCompLab.decPostAmount) AS decPostAmount, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompLab ON tblManWIP.strWIPDocID = tblManWIPCompLab.strWIPDocID INNER JOIN tblManLabour ON tblManWIPCompLab.strLabCode = tblManLabour.strLabCode WHERE tblManWIPCompLab.strWIPDocID IN  
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
GROUP BY tblManWIP.strJBDocID, tblManWIPCompLab.strLabCode, tblManLabour.strDesc, tblManWIPCompLab.decVariableHours, tblManWIPCompLab.decVariableRate, tblManWIPCompLab.decSetupHours, tblManWIPCompLab.decSetupRate, tblManWIPCompLab.decBreakdownHours, tblManWIPCompLab.decBreakdownRate, tblManWIPCompLab.decAmount, tblManWIP.strWCCode ORDER BY tblManWIP.strJBDocID, tblManWIPCompLab.strLabCode
END 

ELSE IF(@Filter = 1) --Category        
BEGIN  
SELECT tblManWIP.strJBDocID, tblManWIPCompLab.strLabCode, tblManLabour.strDesc, tblManWIPCompLab.decVariableHours, tblManWIPCompLab.decVariableRate, tblManWIPCompLab.decSetupHours, tblManWIPCompLab.decSetupRate, tblManWIPCompLab.decBreakdownHours, tblManWIPCompLab.decBreakdownRate, tblManWIPCompLab.decAmount, SUM(tblManWIPCompLab.decPostVariableHours) AS decPostVariableHours, SUM(tblManWIPCompLab.decPostSetupHours) AS decPostSetupHours, SUM(tblManWIPCompLab.decPostBreakdownHours) AS decPostBreakdownHours, SUM(tblManWIPCompLab.decPostAmount) AS decPostAmount, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompLab ON tblManWIP.strWIPDocID = tblManWIPCompLab.strWIPDocID INNER JOIN tblManLabour ON tblManWIPCompLab.strLabCode = tblManLabour.strLabCode WHERE tblManWIPCompLab.strWIPDocID IN
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
GROUP BY tblManWIP.strJBDocID, tblManWIPCompLab.strLabCode, tblManLabour.strDesc, tblManWIPCompLab.decVariableHours, tblManWIPCompLab.decVariableRate, tblManWIPCompLab.decSetupHours, tblManWIPCompLab.decSetupRate, tblManWIPCompLab.decBreakdownHours, tblManWIPCompLab.decBreakdownRate, tblManWIPCompLab.decAmount, tblManWIP.strWCCode ORDER BY tblManWIP.strJBDocID, tblManWIPCompLab.strLabCode 
END  
ELSE IF(@Filter = 2) --AccountSets        
BEGIN  
SELECT tblManWIP.strJBDocID, tblManWIPCompLab.strLabCode, tblManLabour.strDesc, tblManWIPCompLab.decVariableHours, tblManWIPCompLab.decVariableRate, tblManWIPCompLab.decSetupHours, tblManWIPCompLab.decSetupRate, tblManWIPCompLab.decBreakdownHours, tblManWIPCompLab.decBreakdownRate, tblManWIPCompLab.decAmount, SUM(tblManWIPCompLab.decPostVariableHours) AS decPostVariableHours, SUM(tblManWIPCompLab.decPostSetupHours) AS decPostSetupHours, SUM(tblManWIPCompLab.decPostBreakdownHours) AS decPostBreakdownHours, SUM(tblManWIPCompLab.decPostAmount) AS decPostAmount, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompLab ON tblManWIP.strWIPDocID = tblManWIPCompLab.strWIPDocID INNER JOIN tblManLabour ON tblManWIPCompLab.strLabCode = tblManLabour.strLabCode WHERE tblManWIPCompLab.strWIPDocID IN  
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))  
)  
GROUP BY tblManWIP.strJBDocID, tblManWIPCompLab.strLabCode, tblManLabour.strDesc, tblManWIPCompLab.decVariableHours, tblManWIPCompLab.decVariableRate, tblManWIPCompLab.decSetupHours, tblManWIPCompLab.decSetupRate, tblManWIPCompLab.decBreakdownHours, tblManWIPCompLab.decBreakdownRate, tblManWIPCompLab.decAmount, tblManWIP.strWCCode ORDER BY tblManWIP.strJBDocID, tblManWIPCompLab.strLabCode 
END  
ELSE IF(@Filter = 3) --Items        
BEGIN  
SELECT tblManWIP.strJBDocID, tblManWIPCompLab.strLabCode, tblManLabour.strDesc, tblManWIPCompLab.decVariableHours, tblManWIPCompLab.decVariableRate, tblManWIPCompLab.decSetupHours, tblManWIPCompLab.decSetupRate, tblManWIPCompLab.decBreakdownHours, tblManWIPCompLab.decBreakdownRate, tblManWIPCompLab.decAmount, SUM(tblManWIPCompLab.decPostVariableHours) AS decPostVariableHours, SUM(tblManWIPCompLab.decPostSetupHours) AS decPostSetupHours, SUM(tblManWIPCompLab.decPostBreakdownHours) AS decPostBreakdownHours, SUM(tblManWIPCompLab.decPostAmount) AS decPostAmount, tblManWIP.strWCCode FROM tblManWIP INNER JOIN tblManWIPCompLab ON tblManWIP.strWIPDocID = tblManWIPCompLab.strWIPDocID INNER JOIN tblManLabour ON tblManWIPCompLab.strLabCode = tblManLabour.strLabCode WHERE tblManWIPCompLab.strWIPDocID IN
(  
SELECT DISTINCT tblManWIP.strWIPDocID   
FROM tblManWIP INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = tblManJobByProd.strLocation INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber WHERE (tblInv.intType = 1)  
AND (tblManJobByProd.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))  
AND (tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ',')))  
AND (ISNULL(tblManJob.strCustName, '<<No '+ @PLCustomer +'>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ',')))  
AND (tblManWIP.strWCCode IN ((SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))))   
)  
GROUP BY tblManWIP.strJBDocID, tblManWIPCompLab.strLabCode, tblManLabour.strDesc, tblManWIPCompLab.decVariableHours, tblManWIPCompLab.decVariableRate, tblManWIPCompLab.decSetupHours, tblManWIPCompLab.decSetupRate, tblManWIPCompLab.decBreakdownHours, tblManWIPCompLab.decBreakdownRate, tblManWIPCompLab.decAmount, tblManWIP.strWCCode ORDER BY tblManWIP.strJBDocID, tblManWIPCompLab.strLabCode  
END          
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[rptGetAssetDisposals]    
(    
@SearchText nvarchar(max),    
@IsInactive bit,    
@IsSearch bit,    
@AssetCode bit,    
@AssetDesc bit    
)    
AS    
BEGIN    
If(@IsSearch = 1)  
BEGIN  
SELECT strAssetCode as Code, strAssetDesc as Description  
FROM tblAssets  
WHERE  bitInactive = CASE WHEN @IsInactive = 0 THEN 0 ELSE bitInactive END    
AND ((LEN(@SearchText) > 2 AND (strAssetCode LIKE @SearchText + '%' OR strAssetCode LIKE @SearchText + '%'))      
OR (LEN(@SearchText) <= 2 AND (strAssetCode LIKE '%' OR strAssetCode LIKE '%')))      
ORDER BY CASE WHEN @AssetCode = 1 THEN strAssetCode ELSE strAssetDesc END   
END  
ELSE  
BEGIN  
SELECT strAssetCode as Code, strAssetDesc as Description  
FROM tblAssets  
WHERE bitInactive = CASE WHEN @IsInactive = 0 THEN 0 ELSE bitInactive END  
ORDER BY CASE WHEN @AssetCode = 1 THEN strAssetCode ELSE strAssetDesc END   
END  
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptAssetDisposalsListReportData]    
(    
@SQStart Datetime,    
@SQEnd Datetime,  
@ItemList nvarchar(max),      
@IsInactive bit,    
@AssetCode bit,    
@AssetDesc bit    
)    
AS    
BEGIN    
SELECT RTRIM(tblAssets.strAssetTypeCode) + ' - ' + tblAssetTypes.strDescription AS strAssetType, tblAssets.strAssetCode, tblAssets.strAssetDesc,   
tblAssets.decQuantity, tblAssets.dteDepreciateFrom, tblAssets.decPurchasePrice, tblAssets.decInsuredValue, tblAssets.decSalvageValue,   
tblAssets.decReplacementValue, tblAssets.strDisposalCode,   
ISNULL((SELECT strDescription FROM tblDisposalMethods WHERE strCode = tblAssets.strDisposalCode), '') AS strDisposalDesc,   
tblAssets.decDisposalAmount, tblAssets.decProfitOrLossOnSale AS decProfit   
FROM tblAssets   
INNER JOIN tblAssetTypes ON tblAssets.strAssetTypeCode = tblAssetTypes.strCode   
WHERE tblAssets.dteDisposalDate BETWEEN @SQStart AND @SQEnd  
AND (tblAssets.strAssetCode in  (SELECT * FROM fnSplitStringAsTable(@ItemList, ',')))    
and tblAssets.bitInactive = CASE WHEN @IsInactive = 0 THEN 0 ELSE tblAssets.bitInactive END    
ORDER BY CASE WHEN @AssetCode = 1 THEN tblAssets.strAssetCode ELSE tblAssets.strAssetDesc END   
END    
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[LoadProjects] (
	@SearchText NVARCHAR(max) = NULL
	,@IsInactive BIT
	,@isCheckedSearch BIT
	)
AS
BEGIN
	IF (@isCheckedSearch = 1)
	BEGIN
		IF (@IsInactive = 1)
		BEGIN
			SELECT strProjNumber AS Code
				,strProjName AS [Description]
			FROM tblProjects
			WHERE (
					(@SearchText = '')
					OR (
						strProjNumber LIKE '%' + @SearchText + '%'
						OR strProjName LIKE '%' + @SearchText + '%'
						)
					)
			ORDER BY strProjNumber
		END
		ELSE
		BEGIN
			SELECT strProjNumber AS Code
				,strProjName AS [Description]
			FROM tblProjects
			WHERE (
					(@SearchText = '')
					OR (
						strProjNumber LIKE '%' + @SearchText + '%'
						OR strProjName LIKE '%' + @SearchText + '%'
						)
					)
				AND (intStatus < 20)
			ORDER BY strProjNumber
		END
	END
	ELSE
	BEGIN
		IF (@IsInactive = 1)
		BEGIN
			SELECT strProjNumber AS Code
				,strProjName AS [Description]
			FROM tblProjects
			ORDER BY strProjNumber
		END
		ELSE
		BEGIN
			SELECT strProjNumber AS Code
				,strProjName AS [Description]
			FROM tblProjects
			WHERE intStatus < 20
			ORDER BY strProjNumber
		END
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[LoadBuyers]    
(    
@SearchText nvarchar(max),    
@isCheckedSearch bit  
)    
AS    
BEGIN    
IF(@isCheckedSearch = 1)   
BEGIN   
SELECT DISTINCT z.strBuyerName   
FROM (SELECT DISTINCT UPPER(strBuyerName)  as strBuyerName   
FROM tblInvoiceDocP   
UNION ALL   
SELECT DISTINCT UPPER(strBuyerName) as strBuyerName FROM tblOrderDocP)z   
WHERE  
((LEN(@SearchText) > 2 AND (z.strBuyerName LIKE @SearchText + '%' OR z.strBuyerName LIKE @SearchText + '%')) OR     
(LEN(@SearchText) <= 2 AND (z.strBuyerName LIKE '%' OR z.strBuyerName LIKE '%')))     
ORDER BY z.strBuyerName  
END    
ELSE  
BEGIN  
SELECT DISTINCT z.strBuyerName   
FROM (SELECT DISTINCT UPPER(strBuyerName)  as strBuyerName   
FROM tblInvoiceDocP   
UNION ALL SELECT DISTINCT UPPER(strBuyerName) as strBuyerName   
FROM tblOrderDocP)z WHERE z.strBuyerName IS NOT NULL    
ORDER BY z.strBuyerName  
END  
END    
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[LoadStages]      
(      
@SearchText nvarchar(max),      
@isCheckedSearch bit    
)      
AS      
BEGIN      
IF(@isCheckedSearch = 1)     
BEGIN     
SELECT DISTINCT UPPER(strStage) as Code FROM tblProjectsStages WHERE     
((LEN(@SearchText) > 2 AND (strStage LIKE @SearchText + '%' OR strStage LIKE @SearchText + '%')) OR       
(LEN(@SearchText) <= 2 AND (strStage LIKE '%' OR strStage LIKE '%')))         
END      
ELSE    
BEGIN    
SELECT DISTINCT UPPER(strStage) as Code FROM tblProjectsStages ORDER BY UPPER(strStage)    
END    
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptPrjAllocReportData]      
(      
@SQStart Datetime,      
@SQFinish Datetime,      
@ProjectList nvarchar(max),    
@optAll Bit,    
@StageList nvarchar(max),    
@StageoptAll Bit,    
@BuyerList nvarchar(max),    
@BuyeroptAll Bit,    
@chkExcludeCOG bit,    
@SQPayType int,    
@SQRecType int,    
@SQintModule int,
@TypeBOM  INT = NULL,
@TypeINV  INT = NULL,
@TypeLAB  INT = NULL,
@TypeMACH INT = NULL,
@TypeRC   INT = NULL
)      
AS      
BEGIN     
if(@optAll = 0)    
BEGIN    
SELECT strProjNumber,	ProjName,	DOCTYPE	,strOrdDocID	,dteJournalDate	,cast(bitCleared as bit) as bitCleared	,strPartNumber	,strPartDesc	,decQty	,decPriceEaExc	,decLineTotExc,	strStage,	Buyer   
FROM (SELECT tblOrderDocDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = tblOrderDocDTPrj.strProjNumber) AS ProjName,    
CASE tblOrderDoc.intDocType WHEN 1 THEN '02 - Sales Orders' WHEN 2 THEN '01 - Quotations (Tenders / Change Orders)' ELSE 'Unknown' END AS DOCTYPE,     
tblOrderDoc.strOrdDocID, tblOrderDoc.dteJournalDate, tblOrderDoc.bitCleared, tblOrderDocDT.strPartNumber,tblOrderDocDT.strPartDesc,     
tblOrderDocDT.decQty, tblOrderDocDT.decPriceEaExc, tblOrderDocDT.decLineTotExc, tblOrderDocDTPrj.strStage, '--None--' AS Buyer     
FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID     
INNER JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID     
AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo     
WHERE (tblOrderDoc.dteJournalDate BETWEEN @SQStart AND @SQFinish)    
AND (tblOrderDocDTPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))    
UNION ALL     
SELECT tblInvoiceDocDTPrj.strProjNumber,     
(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblInvoiceDocDTPrj.strProjNumber) AS ProjName, '03 - Sales Invoices (Claims)' AS DOCTYPE,    
tblInvoiceDoc.strInvDocID, tblInvoiceDoc.dteJournalDate, 0, tblInvoiceDocDT.strPartNumber, tblInvoiceDocDT.strPartDesc,     
tblInvoiceDocDT.decQty, tblInvoiceDocDT.decPriceEaExc, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDTPrj.strStage, '--None--' AS Buyer     
FROM tblInvoiceDoc     
INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID     
INNER JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID     
AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo    
WHERE (tblInvoiceDoc.dteJournalDate BETWEEN @SQStart AND @SQFinish)    
AND (tblInvoiceDocDTPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))    
UNION ALL     
SELECT tblOrderDocPDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = tblOrderDocPDTPrj.strProjNumber) AS ProjName,     
CASE tblOrderDocP.intDocType WHEN 1 THEN '05 - Purchase Orders' WHEN 2 THEN '04 - Requisitions (Tender Budgeted Costs)' ELSE 'Unknown' END     
AS DOCTYPE, tblOrderDocP.strOrdPDocID, tblOrderDocP.dteJournalDate, tblOrderDocP.bitCleared, tblOrderDocPDT.strPartNumber,     
tblOrderDocPDT.strPartDesc, tblOrderDocPDT.decStockQty, tblOrderDocPDT.decPriceEaExc, tblOrderDocPDT.decLineTotExc, tblOrderDocPDTPrj.strStage,    
strBuyerName AS Buyer     
FROM tblOrderDocP     
INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID     
INNER JOIN tblOrderDocPDTPrj ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTPrj.strOrdPDocID     
AND tblOrderDocPDT.intLineNo = tblOrderDocPDTPrj.intLineNo     
WHERE (tblOrderDocP.dteJournalDate BETWEEN @SQStart AND @SQFinish)    
AND (tblOrderDocPDTPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))    
UNION ALL     
SELECT tblWSOrderDocDTPrj.strProjNumber,     
(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblWSOrderDocDTPrj.strProjNumber ) AS ProjName,     
CASE tblWSProcessDoc.DocType WHEN 1 THEN ' 01 - Quotations(Tenders / Change Orders) ' WHEN 2 THEN ' 02 - Sales Orders ' ELSE ' UNKNOWN ' END     
AS DOCTYPE, tblWSProcessDoc.ProcessDocID, tblWSProcessDoc.DocumentDate, tblWSProcessDoc.Cleared, tblWSProcessDocDT.PartNumber,     
tblWSProcessDocDT.PartDesc, CASE tblWSProcessDoc.DocType WHEN 1 THEN tblWSProcessDocDT.QuotedQty WHEN 2 THEN tblWSProcessDocDT.JobQty END     
AS decQty, tblWSProcessDocDT.PriceEaExc, tblWSProcessDocDT.LineTotExc, tblWSOrderDocDTPrj.strStage, ' --None-- ' AS Buyer     
FROM tblWSProcessDoc     
INNER JOIN tblWSProcessDocDT ON tblWSProcessDoc.ProcessDocID = tblWSProcessDocDT.ProcessDocID     
INNER JOIN tblWSOrderDocDTPrj ON tblWSProcessDocDT.ProcessDocID = tblWSOrderDocDTPrj.strOrdDocID     
AND tblWSProcessDocDT.[LineNo] = tblWSOrderDocDTPrj.intLineNo     
WHERE ( tblWSProcessDoc.DocumentDate BETWEEN @SQStart AND @SQFinish )    
AND (tblWSOrderDocDTPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))    
UNION ALL   
SELECT tblOrderDocPGDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = tblOrderDocPGDTPrj.strProjNumber) AS ProjName, '06 - Goods Received Vouchers (GRV)' AS DOCTYPE, tblOrderDocPG.strOrdPGDocID, tblOrderDocPG.dteJournalDate, 
tblOrderDocPG.bitCleared, tblOrderDocPGDT.strPartNumber, tblOrderDocPGDT.strPartDesc, tblOrderDocPGDT.decStockQty, tblOrderDocPGDT.decPriceEaExc, tblOrderDocPGDT.decLineTotExc, tblOrderDocPGDTPrj.strStage, '--None--' AS Buyer FROM tblOrderDocPG INNER JOIN
 tblOrderDocPGDT ON tblOrderDocPG.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID INNER JOIN tblOrderDocPGDTPrj ON tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPGDTPrj.strOrdPGDocID AND tblOrderDocPGDT.intLineNo = tblOrderDocPGDTPrj.intLineNo WHERE (tblOrderDocPG.dteJournalDate BETWEEN @SQStart AND @SQFinish)     
AND (tblOrderDocPGDTPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))    
UNION ALL   
SELECT tblOrderDocPGDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = tblOrderDocPGDTPrj.strProjNumber) AS ProjName, '06 - Goods Received Vouchers (GRV)' AS DOCTYPE, tblOrderDocPG.strOrdPGDocID, tblOrderDocPG.dteJournalDate, 
tblOrderDocPG.bitCleared, tblOrderDocPGDT.strPartNumber, tblOrderDocPGDT.strPartDesc, tblOrderDocPGDT.decStockQty, tblOrderDocPGDT.decPriceEaExc, tblOrderDocPGDT.decLineTotExc, tblOrderDocPGDTPrj.strStage, '--None--' AS Buyer FROM tblOrderDocPG INNER JOIN
 tblOrderDocPGDT ON tblOrderDocPG.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID INNER JOIN tblOrderDocPGDTPrj ON tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPGDTPrj.strOrdPGDocID AND tblOrderDocPGDT.intLineNo = tblOrderDocPGDTPrj.intLineNo WHERE (tblOrderDocPG.dteJournalDate BETWEEN @SQStart AND @SQFinish)     
AND (tblOrderDocPGDTPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))    
UNION ALL   
SELECT tblInvoiceDocPDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = tblInvoiceDocPDTPrj.strProjNumber) AS ProjName, '07 - Purchase Invoices (Expenses)' AS DOCTYPE, tblInvoiceDocP.strInvPDocID, tblInvoiceDocP.dteJournalDate
, 0, tblInvoiceDocPDT.strPartNumber, tblInvoiceDocPDT.strPartDesc, tblInvoiceDocPDT.decStockQty, tblInvoiceDocPDT.decPriceEaExc, tblInvoiceDocPDT.decLineTotExc, tblInvoiceDocPDTPrj.strStage, strBuyerName AS Buyer FROM tblInvoiceDocP INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID INNER JOIN tblInvoiceDocPDTPrj ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocPDTPrj.strInvPDocID AND tblInvoiceDocPDT.intLineNo = tblInvoiceDocPDTPrj.intLineNo WHERE (tblInvoiceDocP.dteJournalDate BETWEEN @SQStart AND @SQFinish)     
AND (tblInvoiceDocPDTPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))    
UNION ALL   
SELECT tblOrderDocQDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = tblOrderDocQDTPrj.strProjNumber) AS ProjName, '08 - Freehand Quotes (Tenders / Change Orders)' AS DOCTYPE, tblOrderDocQ.strOrdDocID, tblOrderDocQ.dteJournalDate, tblOrderDocQ.bitCleared, tblOrderDocQDT.strPartNumber,tblOrderDocQDT.strPartDesc, tblOrderDocQDT.decQty, tblOrderDocQDT.decPriceEaExc, tblOrderDocQDT.decLineTotExc, tblOrderDocQDTPrj.strStage , '--None--' AS Buyer FROM tblOrderDocQ INNER JOIN tblOrderDocQDT ON tblOrderDocQ.strOrdDocID = tblOrderDocQDT.strOrdDocID INNER JOIN tblOrderDocQDTPrj ON tblOrderDocQDT.strOrdDocID = tblOrderDocQDTPrj.strOrdDocID AND tblOrderDocQDT.intLineNo = tblOrderDocQDTPrj.intLineNo WHERE (tblOrderDocQ.dteJournalDate BETWEEN @SQStart AND @SQFinish)     
AND (tblOrderDocQDTPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))    
UNION ALL   
SELECT dbo.tblJournalEntryDocCBDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = dbo.tblJournalEntryDocCBDTPrj.strProjNumber) AS ProjName, '09 - Payment Journal' AS DOCTYPE, tblJournalEntryDocCB.strJEDocID AS strOrdDocID, tblJournalEntryDocCB.dteJournalDate,cast(0 as bit) AS bitCleared, tblJournalEntryDocCBDT.intGLNumber AS strPartNumber,tblJournalEntryDocCBDT.strDesc AS strPartDesc, 1 AS decQty, tblJournalEntryDocCBDT.decLineTotExc AS decPriceEaExc, tblJournalEntryDocCBDT.decLineTotExc,
 tblJournalEntryDocCBDTPrj.strStage, '--None--' AS Buyer FROM tblJournalEntryDocCB INNER JOIN tblJournalEntryDocCBDT ON tblJournalEntryDocCB.strJEDocID = tblJournalEntryDocCBDT.strJEDocID INNER JOIN tblJournalEntryDocCBDTPrj ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCBDTPrj.strJEDocID AND tblJournalEntryDocCBDT.intType = tblJournalEntryDocCBDTPrj.intType AND tblJournalEntryDocCBDT.intGLNumber = tblJournalEntryDocCBDTPrj.intGLNumber   
AND tblJournalEntryDocCBDT.intLineNo = tblJournalEntryDocCBDTPrj.intLineNo WHERE (tblJournalEntryDocCB.dteJournalDate BETWEEN @SQStart AND @SQFinish) AND (tblJournalEntryDocCBDT.intType = @SQPayType)    
AND (tblJournalEntryDocCBDTPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))    
UNION ALL   
SELECT dbo.tblJournalEntryDocCBDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = dbo.tblJournalEntryDocCBDTPrj.strProjNumber) AS ProjName, '10 - Receipt Journal' AS DOCTYPE, tblJournalEntryDocCB.strJEDocID AS strOrdDocID, tblJournalEntryDocCB.dteJournalDate, cast(0 as bit) AS bitCleared, tblJournalEntryDocCBDT.intGLNumber AS strPartNumber,tblJournalEntryDocCBDT.strDesc AS strPartDesc, -1 AS decQty, tblJournalEntryDocCBDT.decLineTotExc AS decPriceEaExc, (tblJournalEntryDocCBDT.decLineTotExc * -1) AS decLineTotExc,
 tblJournalEntryDocCBDTPrj.strStage, '--None--' AS Buyer FROM tblJournalEntryDocCB INNER JOIN tblJournalEntryDocCBDT ON tblJournalEntryDocCB.strJEDocID = tblJournalEntryDocCBDT.strJEDocID 
 INNER JOIN tblJournalEntryDocCBDTPrj ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCBDTPrj.strJEDocID AND tblJournalEntryDocCBDT.intType = tblJournalEntryDocCBDTPrj.intType AND tblJournalEntryDocCBDT.intGLNumber = tblJournalEntryDocCBDTPrj.intGLNumber AND tblJournalEntryDocCBDT.intLineNo = tblJournalEntryDocCBDTPrj.intLineNo WHERE (tblJournalEntryDocCB.dteJournalDate BETWEEN @SQStart AND @SQFinish) AND (tblJournalEntryDocCBDT.intType = @SQRecType)     
AND (tblJournalEntryDocCBDTPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))    
UNION ALL   
SELECT dbo.tblJournalEntryDocDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = dbo.tblJournalEntryDocDTPrj.strProjNumber) AS ProjName, '13 - Journal Entry' AS DOCTYPE, tblJournalEntryDoc.strJEDocID AS strOrdDocID,  
tblJournalEntryDoc.dteJournalDate, cast(0 as bit) AS bitCleared, CASE WHEN tblJournalEntryDocDT.intModule <> @SQintModule THEN ISNULL(tblJournalEntryDocDT.intGLNumber,'') ELSE tblJournalEntryDocDT.strCuVeGeID END AS strPartNumber, 
CASE WHEN tblJournalEntryDocDT.intModule <> @SQintModule THEN ISNULL(tblJournalEntryDocDT.strDesc,'') ELSE tblJournalEntryDocDT.strCuVeGeDesc END, CASE WHEN tblJournalEntryDocDT.decDebits > 0 THEN 1 ELSE -1 END AS decQty, CASE WHEN tblJournalEntryDocDT.decDebits > 0 THEN tblJournalEntryDocDT.decDebits ELSE (tblJournalEntryDocDT.decCredits * -1) END AS decPriceEaExc, CASE WHEN tblJournalEntryDocDT.decDebits > 0 THEN tblJournalEntryDocDT.decDebits ELSE (tblJournalEntryDocDT.decCredits * -1) END AS decLineTotExc, 
tblJournalEntryDocDTPrj.strStage , '--None--' AS Buyer FROM tblJournalEntryDoc INNER JOIN tblJournalEntryDocDT ON tblJournalEntryDoc.strJEDocID = tblJournalEntryDocDT.strJEDocID INNER JOIN tblJournalEntryDocDTPrj ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDocDTPrj.strJEDocID  
 
AND CASE WHEN tblJournalEntryDocDT.intModule <> @SQintModule THEN tblJournalEntryDocDT.intGLNumber ELSE tblJournalEntryDocDT.strCuVeGeID END = tblJournalEntryDocDTPrj.intGLNumber AND tblJournalEntryDocDT.intLineNo = tblJournalEntryDocDTPrj.intLineNo WHERE
  
(tblJournalEntryDoc.dteJournalDate BETWEEN @SQStart AND @SQFinish)     
AND (tblJournalEntryDocDTPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))    
UNION ALL   
SELECT tblOrderDocDADTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = tblOrderDocDADTPrj.strProjNumber) AS ProjName, '14 - Delivery Advice' AS DOCTYPE, tblOrderDocDA.strOrdDADocID, tblOrderDocDA.dteJournalDate, tblOrderDocDA.bitCleared, tblOrderDocDADT.strPartNumber,tblOrderDocDADT.strPartDesc, tblOrderDocDADT.decQty, tblOrderDocDADT.decPriceEaExc, tblOrderDocDADT.decLineTotExc, tblOrderDocDADTPrj.strStage, '--None--' AS Buyer FROM tblOrderDocDA INNER JOIN tblOrderDocDADT ON 
tblOrderDocDA.strOrdDADocID = tblOrderDocDADT.strOrdDADocID INNER JOIN tblOrderDocDADTPrj ON tblOrderDocDADT.strOrdDADocID = tblOrderDocDADTPrj.strOrdDADocID AND tblOrderDocDADT.intLineNo = tblOrderDocDADTPrj.intLineNo WHERE (tblOrderDocDA.dteJournalDate 
BETWEEN @SQStart AND @SQFinish)     AND (tblOrderDocDADTPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))    
UNION ALL   
SELECT tblInvAdjDocDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = tblInvAdjDocDTPrj.strProjNumber) AS ProjName, '15 - Stock Adjustment' AS DOCTYPE, tblInvAdjDoc.strAdjDocID, tblInvAdjDoc.dteJournalDate, 0, tblInvAdjDocDT.strPartNumber, strDesc As strPartDesc, tblInvAdjDocDT.decQty, tblInvAdjDocDT.decUnitCost, tblInvAdjDocDT.decQty * tblInvAdjDocDT.decUnitCost, tblInvAdjDocDTPrj.strStage, '--None--' AS Buyer FROM tblInvAdjDoc 
INNER JOIN tblInvAdjDocDT ON tblInvAdjDoc.strAdjDocID = tblInvAdjDocDT.strAdjDocID INNER JOIN tblInvAdjDocDTPrj ON tblInvAdjDocDT.strAdjDocID = tblInvAdjDocDTPrj.strAdjDocID AND tblInvAdjDocDT.intLineNo = tblInvAdjDocDTPrj.intLineNo 
LEFT JOIN tblInv ON tblInvAdjDocDT.strPartNumber = tblInv.strPartNumber WHERE (tblInvAdjDoc.dteJournalDate BETWEEN @SQStart AND @SQFinish)       
AND (tblInvAdjDocDTPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))    
UNION ALL   
SELECT tblInvIssReqDocDTPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblInvIssReqDocDTPrj.strProjNumber) AS ProjName, '16 - Stock Issue' AS DOCTYPE, tblInvIssReqDoc.strInvIssReqDocID, tblInvIssReqDoc.dteJournalDate, 0, tblInvIssReqDocDT.strPartNumber,strDesc As strPartDesc, tblInvIssReqDocDT.decQty, tblInvIssReqDocDT.decUnitCost, (tblInvIssReqDocDT.decQty * tblInvIssReqDocDT.decUnitCost), tblInvIssReqDocDTPrj.strStage, '--None--' AS Buyer FROM tblInvIssReqDoc 
INNER JOIN tblInvIssReqDocDT ON tblInvIssReqDoc.strInvIssReqDocID = tblInvIssReqDocDT.strInvIssReqDocID INNER JOIN tblInvIssReqDocDTPrj ON tblInvIssReqDocDT.strInvIssReqDocID  = tblInvIssReqDocDTPrj.strInvIssReqDocID AND tblInvIssReqDocDT.intLineNo = tblInvIssReqDocDTPrj.intLineNo 
LEFT JOIN tblInv ON tblInvIssReqDocDT.strPartNumber = tblInv.strPartNumber WHERE (tblInvIssReqDoc.dteJournalDate BETWEEN @SQStart AND @SQFinish)     
AND (tblInvIssReqDocDTPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))    
UNION ALL   
SELECT tblInvRepackDocDTPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblInvRepackDocDTPrj.strProjNumber) AS ProjName, '17 - Stock Repack' AS DOCTYPE, tblInvRepackDoc.strRepackDocID, tblInvRepackDoc.dteJournalDate, 0, tblInvRepackDocDT.strPartNumber,strDesc As strPartDesc, tblInvRepackDocDT.decQty, tblInvRepackDocDT.decUnitCost, (tblInvRepackDocDT.decQty * tblInvRepackDocDT.decUnitCost), tblInvRepackDocDTPrj.strStage, '--None--' AS Buyer FROM tblInvRepackDoc 
INNER JOIN tblInvRepackDocDT ON tblInvRepackDoc.strRepackDocID = tblInvRepackDocDT.strRepackDocID INNER JOIN tblInvRepackDocDTPrj ON tblInvRepackDocDT.strRepackDocID  = tblInvRepackDocDTPrj.strRepackDocID AND tblInvRepackDocDT.intLineNo = tblInvRepackDocDTPrj.intLineNo 
LEFT JOIN tblInv ON tblInvRepackDocDT.strPartNumber = tblInv.strPartNumber WHERE (tblInvRepackDoc.dteJournalDate BETWEEN @SQStart AND @SQFinish)     
AND (tblInvRepackDocDTPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))    
UNION ALL   
SELECT tblInvIntReqDocDTPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblInvIntReqDocDTPrj.strProjNumber) AS ProjName, '18 - Stock Requisition' AS DOCTYPE, tblInvIntReqDoc.strInvIntReqDocID, tblInvIntReqDoc.dteJournalDate, 0
, tblInvIntReqDocDT.strPartNumber,strDesc As strPartDesc, tblInvIntReqDocDT.decQty, tblInvIntReqDocDT.decUnitCost, (tblInvIntReqDocDT.decQty * tblInvIntReqDocDT.decUnitCost), tblInvIntReqDocDTPrj.strStage, '--None--' AS Buyer FROM tblInvIntReqDoc
 INNER JOIN tblInvIntReqDocDT ON tblInvIntReqDoc.strInvIntReqDocID = tblInvIntReqDocDT.strInvIntReqDocID INNER JOIN tblInvIntReqDocDTPrj ON tblInvIntReqDocDT.strInvIntReqDocID  = tblInvIntReqDocDTPrj.strInvIntReqDocID AND tblInvIntReqDocDT.intLineNo = tblInvIntReqDocDTPrj.intLineNo
  LEFT JOIN tblInv ON tblInvIntReqDocDT.strPartNumber = tblInv.strPartNumber WHERE (tblInvIntReqDoc.dteJournalDate BETWEEN @SQStart AND @SQFinish)     
AND (tblInvIntReqDocDTPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))    
--NEW CHANGES AFTER ADDING PROJECT ALLOCATIONS IN MANUFACTURING JOBS

--process jobs
UNION ALL
SELECT tblManJobPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManJobPrj.strProjNumber) AS ProjName,'19 - Process Job' AS DOCTYPE,tblManJobByProd.strJBDocID,tblManJob.dteJournalDate,0,tblManJobByProd.strPartNumber,tblManJobByProd.strDesc AS strPartDesc,tblManJobByProd.decManQty AS decQty,ROUND((MA.decManAmount / tblManJobByProd.decManQty) / MC.intProdCount,4),ROUND(MA.decManAmount / MC.intProdCount,2),tblManJobPrj.strStage,'--None--' AS Buyer
FROM tblManJob
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID
INNER JOIN tblManJobPrj ON tblManJobByProd.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobByProd.strPartNumber = tblManJobPrj.strPartNumber AND tblManJobPrj.intType = @TypeBOM
INNER JOIN (SELECT T1.strJBDocID,SUM(T1.decManAmount) AS decManAmount FROM (
	SELECT tblManJob.strJBDocID,tblManJobCompInv.decManAmount FROM tblManJob INNER JOIN tblManJobCompInv ON tblManJob.strJBDocID = tblManJobCompInv.strJBDocID WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish
	UNION ALL SELECT tblManJob.strJBDocID,tblManJobCompLab.decManAmount FROM tblManJob INNER JOIN tblManJobCompLab ON tblManJob.strJBDocID = tblManJobCompLab.strJBDocID WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish
	UNION ALL SELECT tblManJob.strJBDocID,tblManJobCompMach.decManAmount FROM tblManJob INNER JOIN tblManJobCompMach ON tblManJob.strJBDocID = tblManJobCompMach.strJBDocID WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish
	UNION ALL SELECT tblManJob.strJBDocID,tblManJobCompOverhead.decManAmount FROM tblManJob INNER JOIN tblManJobCompOverhead ON tblManJob.strJBDocID = tblManJobCompOverhead.strJBDocID WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish
	) T1 GROUP BY T1.strJBDocID) MA ON tblManJob.strJBDocID = MA.strJBDocID
INNER JOIN (SELECT tblManJob.strJBDocID,COUNT(tblManJobByProd.strPartNumber) AS intProdCount FROM tblManJob INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish GROUP BY tblManJob.strJBDocID) MC ON tblManJob.strJBDocID = MC.strJBDocID
WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish
AND (tblManJobPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))

UNION ALL
SELECT tblManJobPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManJobPrj.strProjNumber) AS ProjName,'19 - Process Job' AS DOCTYPE,tblManJobCompInv.strJBDocID,tblManJob.dteJournalDate,0,tblManJobCompInv.strPartNumber,tblManJobCompInv.strDesc AS strPartDesc,tblManJobCompInv.decManQty AS decQty,tblManJobCompInv.decPPUnit,tblManJobCompInv.decManAmount,tblManJobPrj.strStage,'--None--' AS Buyer
FROM tblManJob
INNER JOIN tblManJobCompInv ON tblManJob.strJBDocID = tblManJobCompInv.strJBDocID
INNER JOIN tblManJobPrj ON tblManJobCompInv.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobCompInv.strWCCode = tblManJobPrj.strWCCode AND tblManJobCompInv.intLineNo = tblManJobPrj.intLineNo AND tblManJobPrj.intType = @TypeINV
WHERE (tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish)
AND (tblManJobPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))

UNION ALL
SELECT tblManJobPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManJobPrj.strProjNumber) AS ProjName,'19 - Process Job' AS DOCTYPE,tblManJobCompLab.strJBDocID,tblManJob.dteJournalDate,0,tblManJobPrj.strPartNumber,tblManLabour.strDesc AS strPartDesc,(tblManJobCompLab.decManVariableHours + tblManJobCompLab.decSetupHours + tblManJobCompLab.decBreakdownHours) AS decQty,0 AS decPPUnit,tblManJobCompLab.decManAmount,tblManJobPrj.strStage,'--None--' AS Buyer
FROM tblManJob
INNER JOIN tblManJobCompLab ON tblManJob.strJBDocID = tblManJobCompLab.strJBDocID
INNER JOIN tblManLabour ON tblManJobCompLab.strLabCode = tblManLabour.strLabCode
INNER JOIN tblManJobPrj ON tblManJobCompLab.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobCompLab.strWCCode = tblManJobPrj.strWCCode AND tblManJobCompLab.intLineNo = tblManJobPrj.intLineNo AND tblManJobPrj.intType = @TypeLAB
WHERE (tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish)
AND (tblManJobPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))

UNION ALL
SELECT tblManJobPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManJobPrj.strProjNumber) AS ProjName,'19 - Process Job' AS DOCTYPE,tblManJobCompMach.strJBDocID,tblManJob.dteJournalDate,0,tblManJobPrj.strPartNumber,tblManMachinery.strDesc AS strPartDesc,(tblManJobCompMach.decManVariableHours + tblManJobCompMach.decSetupHours + tblManJobCompMach.decBreakdownHours) AS decQty,0 AS decPPUnit,tblManJobCompMach.decManAmount,tblManJobPrj.strStage,'--None--' AS Buyer
FROM tblManJob
INNER JOIN tblManJobCompMach ON tblManJob.strJBDocID = tblManJobCompMach.strJBDocID
INNER JOIN tblManMachinery ON tblManJobCompMach.strMachCode = tblManMachinery.strMachCode
INNER JOIN tblManJobPrj ON tblManJobCompMach.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobCompMach.strWCCode = tblManJobPrj.strWCCode AND tblManJobCompMach.intLineNo = tblManJobPrj.intLineNo AND tblManJobPrj.intType = @TypeMACH
WHERE (tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish)
AND (tblManJobPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))

UNION ALL
SELECT tblManJobPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManJobPrj.strProjNumber) AS ProjName,'19 - Process Job' AS DOCTYPE,tblManJobCompOverhead.strJBDocID,tblManJob.dteJournalDate,0,tblManJobPrj.strPartNumber,tblAccounts.strDesc AS strPartDesc,1 AS decQty,0 AS decPPUnit,tblManJobCompOverhead.decManAmount,tblManJobPrj.strStage,'--None--' AS Buyer
FROM tblManJob
INNER JOIN tblManJobCompOverhead ON tblManJob.strJBDocID = tblManJobCompOverhead.strJBDocID
INNER JOIN tblAccounts ON tblManJobCompOverhead.intGLNumber = tblAccounts.intGLNumber
INNER JOIN tblManJobPrj ON tblManJobCompOverhead.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobCompOverhead.strWCCode = tblManJobPrj.strWCCode AND tblManJobCompOverhead.intLineNo = tblManJobPrj.intLineNo AND tblManJobPrj.intType = @TypeRC
WHERE (tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish)
AND (tblManJobPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))

---Issue Work In Progress
UNION ALL
SELECT tblManWIPPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManWIPPrj.strProjNumber) AS ProjName,'20 - Issue Work In Progress' AS DOCTYPE,tblManWIPCompInv.strWIPDocID,tblManWIP.dteJournalDate,0,tblManWIPCompInv.strPartNumber,tblManWIPCompInv.strDesc AS strPartDesc,CASE WHEN tblManWIPCompInv.decPostAmount < 0 THEN tblManWIPCompInv.decReturnQty * -1 ELSE tblManWIPCompInv.decPostQty END AS decQty,tblManWIPCompInv.decPostAmount / CASE WHEN tblManWIPCompInv.decPostAmount < 0 THEN tblManWIPCompInv.decReturnQty * -1 ELSE tblManWIPCompInv.decPostQty END,tblManWIPCompInv.decPostAmount,tblManWIPPrj.strStage,'--None--' AS Buyer
FROM tblManWIP
INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID
INNER JOIN tblManWIPPrj ON tblManWIPCompInv.strWIPDocID = tblManWIPPrj.strWIPDocID AND tblManWIPPrj.intType = @TypeINV
WHERE (tblManWIP.dteJournalDate BETWEEN @SQStart AND @SQFinish)
AND (tblManWIPPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))

UNION ALL
SELECT tblManWIPPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManWIPPrj.strProjNumber) AS ProjName,'20 - Issue Work In Progress' AS DOCTYPE,tblManWIPCompLab.strWIPDocID,tblManWIP.dteJournalDate,0,tblManWIPPrj.strPartNumber,tblManLabour.strDesc AS strPartDesc,CASE WHEN tblManWIPCompLab.decPostAmount < 0 THEN (tblManWIPCompLab.decReturnVariableHours + tblManWIPCompLab.decReturnSetupHours + tblManWIPCompLab.decReturnBreakdownHours) * -1 ELSE (tblManWIPCompLab.decPostVariableHours + tblManWIPCompLab.decPostSetupHours + tblManWIPCompLab.decPostBreakdownHours) END AS decQty,0 AS decPPUnit,tblManWIPCompLab.decPostAmount,tblManWIPPrj.strStage,'--None--' AS Buyer
FROM tblManWIP
INNER JOIN tblManWIPCompLab ON tblManWIP.strWIPDocID = tblManWIPCompLab.strWIPDocID
INNER JOIN tblManLabour ON tblManWIPCompLab.strLabCode = tblManLabour.strLabCode
INNER JOIN tblManWIPPrj ON tblManWIPCompLab.strWIPDocID = tblManWIPPrj.strWIPDocID AND tblManWIPPrj.intType = @TypeLAB
WHERE (tblManWIP.dteJournalDate BETWEEN @SQStart AND @SQFinish)
AND (tblManWIPPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))

UNION ALL
SELECT tblManWIPPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManWIPPrj.strProjNumber) AS ProjName,'20 - Issue Work In Progress' AS DOCTYPE,tblManWIPCompMach.strWIPDocID,tblManWIP.dteJournalDate,0,tblManWIPPrj.strPartNumber,tblManMachinery.strDesc AS strPartDesc,CASE WHEN tblManWIPCompMach.decPostAmount < 0 THEN (tblManWIPCompMach.decReturnVariableHours + tblManWIPCompMach.decReturnSetupHours + tblManWIPCompMach.decReturnBreakdownHours) * -1 ELSE (tblManWIPCompMach.decPostVariableHours + tblManWIPCompMach.decPostSetupHours + tblManWIPCompMach.decPostBreakdownHours) END AS decQty,0 AS decPPUnit,tblManWIPCompMach.decPostAmount,tblManWIPPrj.strStage,'--None--' AS Buyer
FROM tblManWIP
INNER JOIN tblManWIPCompMach ON tblManWIP.strWIPDocID = tblManWIPCompMach.strWIPDocID
INNER JOIN tblManMachinery ON tblManWIPCompMach.strMachCode = tblManMachinery.strMachCode
INNER JOIN tblManWIPPrj ON tblManWIPCompMach.strWIPDocID = tblManWIPPrj.strWIPDocID AND tblManWIPPrj.intType = @TypeMACH
WHERE (tblManWIP.dteJournalDate BETWEEN @SQStart AND @SQFinish)
AND (tblManWIPPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))

UNION ALL
SELECT tblManWIPPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManWIPPrj.strProjNumber) AS ProjName,'20 - Issue Work In Progress' AS DOCTYPE,tblManWIPCompOverhead.strWIPDocID,tblManWIP.dteJournalDate,0,tblManWIPPrj.strPartNumber,tblAccounts.strDesc AS strPartDesc,1 AS decQty,0 AS decPPUnit,tblManWIPCompOverhead.decPostAmount,tblManWIPPrj.strStage,'--None--' AS Buyer
FROM tblManWIP
INNER JOIN tblManWIPCompOverhead ON tblManWIP.strWIPDocID = tblManWIPCompOverhead.strWIPDocID
INNER JOIN tblAccounts ON tblManWIPCompOverhead.intGLNumber = tblAccounts.intGLNumber
INNER JOIN tblManWIPPrj ON tblManWIPCompOverhead.strWIPDocID = tblManWIPPrj.strWIPDocID AND tblManWIPPrj.intType = @TypeRC
WHERE (tblManWIP.dteJournalDate BETWEEN @SQStart AND @SQFinish)
AND (tblManWIPPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))

--Close Jobs
UNION ALL
SELECT tblManJobClosePrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManJobClosePrj.strProjNumber) AS ProjName,'21 - Close Job' AS DOCTYPE,tblManJobClose.strJBDocID,tblManJobClose.dteJournalDate,0,tblManJobClose.strPartNumber,tblInv.strDesc AS strPartDesc,tblManJobClose.decManQtyClosed AS decQty,tblManJobClose.decManUnitCost,tblManJobClose.decManAmount,tblManJobClosePrj.strStage,'--None--' AS Buyer
FROM tblManJob
INNER JOIN tblManJobClose ON tblManJob.strJBDocID = tblManJobClose.strJBDocID
INNER JOIN tblManJobClosePrj ON tblManJobClose.strJBDocID = tblManJobClosePrj.strJBDocID AND tblManJobClose.lngID = tblManJobClosePrj.lngJBID
LEFT JOIN tblInv ON tblManJobClose.strPartNumber = tblInv.strPartNumber
WHERE (tblManJobClose.dteJournalDate BETWEEN @SQStart AND @SQFinish)
AND (tblManJobClosePrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))

)Z WHERE 1 = 1     
ORDER BY strProjNumber,DOCTYPE,strOrdDocID,strPartNumber    
END    
ELSE if(@chkExcludeCOG = 0)    
BEGIN    
SELECT strProjNumber,	ProjName,	DOCTYPE	,strOrdDocID	,dteJournalDate	,cast(bitCleared as bit) as bitCleared	,strPartNumber	,strPartDesc	,decQty	,decPriceEaExc	,decLineTotExc,	strStage,	Buyer      
FROM (SELECT tblOrderDocDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = tblOrderDocDTPrj.strProjNumber) AS ProjName,    
CASE tblOrderDoc.intDocType WHEN 1 THEN '02 - Sales Orders' WHEN 2 THEN '01 - Quotations (Tenders / Change Orders)' ELSE 'Unknown' END AS DOCTYPE,     
tblOrderDoc.strOrdDocID, tblOrderDoc.dteJournalDate, tblOrderDoc.bitCleared, tblOrderDocDT.strPartNumber,tblOrderDocDT.strPartDesc,     
tblOrderDocDT.decQty, tblOrderDocDT.decPriceEaExc, tblOrderDocDT.decLineTotExc, tblOrderDocDTPrj.strStage, '--None--' AS Buyer     
FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID     
INNER JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID     
AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo     
WHERE (tblOrderDoc.dteJournalDate BETWEEN @SQStart AND @SQFinish)    
UNION ALL     
SELECT tblInvoiceDocDTPrj.strProjNumber,     
(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblInvoiceDocDTPrj.strProjNumber) AS ProjName, '03 - Sales Invoices (Claims)' AS DOCTYPE,    
tblInvoiceDoc.strInvDocID, tblInvoiceDoc.dteJournalDate, 0, tblInvoiceDocDT.strPartNumber, tblInvoiceDocDT.strPartDesc,     
tblInvoiceDocDT.decQty, tblInvoiceDocDT.decPriceEaExc, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDTPrj.strStage, '--None--' AS Buyer     
FROM tblInvoiceDoc     
INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID     
INNER JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID     
AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo    
WHERE (tblInvoiceDoc.dteJournalDate BETWEEN @SQStart AND @SQFinish)    
UNION ALL     
SELECT tblInvoiceDocDTPrj.strProjNumber,    
(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblInvoiceDocDTPrj.strProjNumber) AS ProjName,'04 - Cost of Goods Sold' AS DOCTYPE,    
tblInvoiceDoc.strInvDocID,tblInvoiceDoc.dteJournalDate,0,tblInvoiceDocDT.strPartNumber,tblInvoiceDocDT.strPartDesc,tblInvoiceDocDT.decQty,    
tblInvoiceDocDT.decCOGS/tblInvoiceDocDT.decQty,tblInvoiceDocDT.decCOGS, tblInvoiceDocDTPrj.strStage, '--None--' AS Buyer     
FROM tblInvoiceDoc     
INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID     
INNER JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID     
AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo     
WHERE (tblInvoiceDoc.dteJournalDate BETWEEN @SQStart AND @SQFinish)    
AND (tblInvoiceDocDTPrj.strProjNumber IN ((SELECT * FROM fnSplitStringAsTable(@ProjectList, ','))))   


--NEW CHANGES AFTER ADDING PROJECT ALLOCATIONS IN MANUFACTURING JOBS

--process jobs
UNION ALL
SELECT tblManJobPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManJobPrj.strProjNumber) AS ProjName,'19 - Process Job' AS DOCTYPE,tblManJobByProd.strJBDocID,tblManJob.dteJournalDate,0,tblManJobByProd.strPartNumber,tblManJobByProd.strDesc AS strPartDesc,tblManJobByProd.decManQty AS decQty,ROUND((MA.decManAmount / tblManJobByProd.decManQty) / MC.intProdCount,4),ROUND(MA.decManAmount / MC.intProdCount,2),tblManJobPrj.strStage,'--None--' AS Buyer
FROM tblManJob
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID
INNER JOIN tblManJobPrj ON tblManJobByProd.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobByProd.strPartNumber = tblManJobPrj.strPartNumber AND tblManJobPrj.intType = @TypeBOM
INNER JOIN (SELECT T1.strJBDocID,SUM(T1.decManAmount) AS decManAmount FROM (
	SELECT tblManJob.strJBDocID,tblManJobCompInv.decManAmount FROM tblManJob INNER JOIN tblManJobCompInv ON tblManJob.strJBDocID = tblManJobCompInv.strJBDocID WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish
	UNION ALL SELECT tblManJob.strJBDocID,tblManJobCompLab.decManAmount FROM tblManJob INNER JOIN tblManJobCompLab ON tblManJob.strJBDocID = tblManJobCompLab.strJBDocID WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish
	UNION ALL SELECT tblManJob.strJBDocID,tblManJobCompMach.decManAmount FROM tblManJob INNER JOIN tblManJobCompMach ON tblManJob.strJBDocID = tblManJobCompMach.strJBDocID WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish
	UNION ALL SELECT tblManJob.strJBDocID,tblManJobCompOverhead.decManAmount FROM tblManJob INNER JOIN tblManJobCompOverhead ON tblManJob.strJBDocID = tblManJobCompOverhead.strJBDocID WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish
	) T1 GROUP BY T1.strJBDocID) MA ON tblManJob.strJBDocID = MA.strJBDocID
INNER JOIN (SELECT tblManJob.strJBDocID,COUNT(tblManJobByProd.strPartNumber) AS intProdCount FROM tblManJob INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish GROUP BY tblManJob.strJBDocID) MC ON tblManJob.strJBDocID = MC.strJBDocID
WHERE (tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish)

UNION ALL
SELECT tblManJobPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManJobPrj.strProjNumber) AS ProjName,'19 - Process Job' AS DOCTYPE,tblManJobCompInv.strJBDocID,tblManJob.dteJournalDate,0,tblManJobCompInv.strPartNumber,tblManJobCompInv.strDesc AS strPartDesc,tblManJobCompInv.decManQty AS decQty,tblManJobCompInv.decPPUnit,tblManJobCompInv.decManAmount,tblManJobPrj.strStage,'--None--' AS Buyer
FROM tblManJob
INNER JOIN tblManJobCompInv ON tblManJob.strJBDocID = tblManJobCompInv.strJBDocID
INNER JOIN tblManJobPrj ON tblManJobCompInv.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobCompInv.strWCCode = tblManJobPrj.strWCCode AND tblManJobCompInv.intLineNo = tblManJobPrj.intLineNo AND tblManJobPrj.intType = @TypeINV
WHERE (tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish)

UNION ALL
SELECT tblManJobPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManJobPrj.strProjNumber) AS ProjName,'19 - Process Job' AS DOCTYPE,tblManJobCompLab.strJBDocID,tblManJob.dteJournalDate,0,tblManJobPrj.strPartNumber,tblManLabour.strDesc AS strPartDesc,(tblManJobCompLab.decManVariableHours + tblManJobCompLab.decSetupHours + tblManJobCompLab.decBreakdownHours) AS decQty,0 AS decPPUnit,tblManJobCompLab.decManAmount,tblManJobPrj.strStage,'--None--' AS Buyer
FROM tblManJob
INNER JOIN tblManJobCompLab ON tblManJob.strJBDocID = tblManJobCompLab.strJBDocID
INNER JOIN tblManLabour ON tblManJobCompLab.strLabCode = tblManLabour.strLabCode
INNER JOIN tblManJobPrj ON tblManJobCompLab.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobCompLab.strWCCode = tblManJobPrj.strWCCode AND tblManJobCompLab.intLineNo = tblManJobPrj.intLineNo AND tblManJobPrj.intType = @TypeLAB
WHERE (tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish)

UNION ALL
SELECT tblManJobPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManJobPrj.strProjNumber) AS ProjName,'19 - Process Job' AS DOCTYPE,tblManJobCompMach.strJBDocID,tblManJob.dteJournalDate,0,tblManJobPrj.strPartNumber,tblManMachinery.strDesc AS strPartDesc,(tblManJobCompMach.decManVariableHours + tblManJobCompMach.decSetupHours + tblManJobCompMach.decBreakdownHours) AS decQty,0 AS decPPUnit,tblManJobCompMach.decManAmount,tblManJobPrj.strStage,'--None--' AS Buyer
FROM tblManJob
INNER JOIN tblManJobCompMach ON tblManJob.strJBDocID = tblManJobCompMach.strJBDocID
INNER JOIN tblManMachinery ON tblManJobCompMach.strMachCode = tblManMachinery.strMachCode
INNER JOIN tblManJobPrj ON tblManJobCompMach.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobCompMach.strWCCode = tblManJobPrj.strWCCode AND tblManJobCompMach.intLineNo = tblManJobPrj.intLineNo AND tblManJobPrj.intType = @TypeMACH
WHERE (tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish)

UNION ALL
SELECT tblManJobPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManJobPrj.strProjNumber) AS ProjName,'19 - Process Job' AS DOCTYPE,tblManJobCompOverhead.strJBDocID,tblManJob.dteJournalDate,0,tblManJobPrj.strPartNumber,tblAccounts.strDesc AS strPartDesc,1 AS decQty,0 AS decPPUnit,tblManJobCompOverhead.decManAmount,tblManJobPrj.strStage,'--None--' AS Buyer
FROM tblManJob
INNER JOIN tblManJobCompOverhead ON tblManJob.strJBDocID = tblManJobCompOverhead.strJBDocID
INNER JOIN tblAccounts ON tblManJobCompOverhead.intGLNumber = tblAccounts.intGLNumber
INNER JOIN tblManJobPrj ON tblManJobCompOverhead.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobCompOverhead.strWCCode = tblManJobPrj.strWCCode AND tblManJobCompOverhead.intLineNo = tblManJobPrj.intLineNo AND tblManJobPrj.intType = @TypeRC
WHERE (tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish)

--Issue Work in progress
UNION ALL
SELECT tblManWIPPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManWIPPrj.strProjNumber) AS ProjName,'20 - Issue Work In Progress' AS DOCTYPE,tblManWIPCompInv.strWIPDocID,tblManWIP.dteJournalDate,0,tblManWIPCompInv.strPartNumber,tblManWIPCompInv.strDesc AS strPartDesc,CASE WHEN tblManWIPCompInv.decPostAmount < 0 THEN tblManWIPCompInv.decReturnQty * -1 ELSE tblManWIPCompInv.decPostQty END AS decQty,tblManWIPCompInv.decPostAmount / CASE WHEN tblManWIPCompInv.decPostAmount < 0 THEN tblManWIPCompInv.decReturnQty * -1 ELSE tblManWIPCompInv.decPostQty END,tblManWIPCompInv.decPostAmount,tblManWIPPrj.strStage,'--None--' AS Buyer
FROM tblManWIP
INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID
INNER JOIN tblManWIPPrj ON tblManWIPCompInv.strWIPDocID = tblManWIPPrj.strWIPDocID AND tblManWIPPrj.intType = @TypeINV
WHERE (tblManWIP.dteJournalDate BETWEEN @SQStart AND @SQFinish)

UNION ALL
SELECT tblManWIPPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManWIPPrj.strProjNumber) AS ProjName,'20 - Issue Work In Progress' AS DOCTYPE,tblManWIPCompLab.strWIPDocID,tblManWIP.dteJournalDate,0,tblManWIPPrj.strPartNumber,tblManLabour.strDesc AS strPartDesc,CASE WHEN tblManWIPCompLab.decPostAmount < 0 THEN (tblManWIPCompLab.decReturnVariableHours + tblManWIPCompLab.decReturnSetupHours + tblManWIPCompLab.decReturnBreakdownHours) * -1 ELSE (tblManWIPCompLab.decPostVariableHours + tblManWIPCompLab.decPostSetupHours + tblManWIPCompLab.decPostBreakdownHours) END AS decQty,0 AS decPPUnit,tblManWIPCompLab.decPostAmount,tblManWIPPrj.strStage,'--None--' AS Buyer
FROM tblManWIP
INNER JOIN tblManWIPCompLab ON tblManWIP.strWIPDocID = tblManWIPCompLab.strWIPDocID
INNER JOIN tblManLabour ON tblManWIPCompLab.strLabCode = tblManLabour.strLabCode
INNER JOIN tblManWIPPrj ON tblManWIPCompLab.strWIPDocID = tblManWIPPrj.strWIPDocID AND tblManWIPPrj.intType = @TypeLAB
WHERE (tblManWIP.dteJournalDate BETWEEN @SQStart AND @SQFinish)

UNION ALL
SELECT tblManWIPPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManWIPPrj.strProjNumber) AS ProjName,'20 - Issue Work In Progress' AS DOCTYPE,tblManWIPCompMach.strWIPDocID,tblManWIP.dteJournalDate,0,tblManWIPPrj.strPartNumber,tblManMachinery.strDesc AS strPartDesc,CASE WHEN tblManWIPCompMach.decPostAmount < 0 THEN (tblManWIPCompMach.decReturnVariableHours + tblManWIPCompMach.decReturnSetupHours + tblManWIPCompMach.decReturnBreakdownHours) * -1 ELSE (tblManWIPCompMach.decPostVariableHours + tblManWIPCompMach.decPostSetupHours + tblManWIPCompMach.decPostBreakdownHours) END AS decQty,0 AS decPPUnit,tblManWIPCompMach.decPostAmount,tblManWIPPrj.strStage,'--None--' AS Buyer
FROM tblManWIP
INNER JOIN tblManWIPCompMach ON tblManWIP.strWIPDocID = tblManWIPCompMach.strWIPDocID
INNER JOIN tblManMachinery ON tblManWIPCompMach.strMachCode = tblManMachinery.strMachCode
INNER JOIN tblManWIPPrj ON tblManWIPCompMach.strWIPDocID = tblManWIPPrj.strWIPDocID AND tblManWIPPrj.intType = @TypeMACH
WHERE (tblManWIP.dteJournalDate BETWEEN @SQStart AND @SQFinish)

UNION ALL
SELECT tblManWIPPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManWIPPrj.strProjNumber) AS ProjName,'20 - Issue Work In Progress' AS DOCTYPE,tblManWIPCompOverhead.strWIPDocID,tblManWIP.dteJournalDate,0,tblManWIPPrj.strPartNumber,tblAccounts.strDesc AS strPartDesc,1 AS decQty,0 AS decPPUnit,tblManWIPCompOverhead.decPostAmount,tblManWIPPrj.strStage,'--None--' AS Buyer
FROM tblManWIP
INNER JOIN tblManWIPCompOverhead ON tblManWIP.strWIPDocID = tblManWIPCompOverhead.strWIPDocID
INNER JOIN tblAccounts ON tblManWIPCompOverhead.intGLNumber = tblAccounts.intGLNumber
INNER JOIN tblManWIPPrj ON tblManWIPCompOverhead.strWIPDocID = tblManWIPPrj.strWIPDocID AND tblManWIPPrj.intType = @TypeRC
WHERE (tblManWIP.dteJournalDate BETWEEN @SQStart AND @SQFinish)

--Close Jobs
UNION ALL
SELECT tblManJobClosePrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManJobClosePrj.strProjNumber) AS ProjName,'21 - Close Job' AS DOCTYPE,tblManJobClose.strJBDocID,tblManJobClose.dteJournalDate,0,tblManJobClose.strPartNumber,tblInv.strDesc AS strPartDesc,tblManJobClose.decManQtyClosed AS decQty,tblManJobClose.decManUnitCost,tblManJobClose.decManAmount,tblManJobClosePrj.strStage,'--None--' AS Buyer
FROM tblManJob
INNER JOIN tblManJobClose ON tblManJob.strJBDocID = tblManJobClose.strJBDocID
INNER JOIN tblManJobClosePrj ON tblManJobClose.strJBDocID = tblManJobClosePrj.strJBDocID AND tblManJobClose.lngID = tblManJobClosePrj.lngJBID
LEFT JOIN tblInv ON tblManJobClose.strPartNumber = tblInv.strPartNumber
WHERE (tblManJobClose.dteJournalDate BETWEEN @SQStart AND @SQFinish)


)Z WHERE 1 = 1  

ORDER BY strProjNumber,DOCTYPE,strOrdDocID,strPartNumber

END    
ELSE     
BEGIN    
SELECT strProjNumber,	ProjName,	DOCTYPE	,strOrdDocID	,dteJournalDate	,cast(bitCleared as bit) as bitCleared	,strPartNumber	,strPartDesc	,decQty	,decPriceEaExc	,decLineTotExc,	strStage,	Buyer   
FROM (SELECT tblOrderDocDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = tblOrderDocDTPrj.strProjNumber) AS ProjName,    
CASE tblOrderDoc.intDocType WHEN 1 THEN '02 - Sales Orders' WHEN 2 THEN '01 - Quotations (Tenders / Change Orders)' ELSE 'Unknown' END AS DOCTYPE,     
tblOrderDoc.strOrdDocID, tblOrderDoc.dteJournalDate, tblOrderDoc.bitCleared, tblOrderDocDT.strPartNumber,tblOrderDocDT.strPartDesc,     
tblOrderDocDT.decQty, tblOrderDocDT.decPriceEaExc, tblOrderDocDT.decLineTotExc, tblOrderDocDTPrj.strStage, '--None--' AS Buyer     
FROM tblOrderDoc INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID     
INNER JOIN tblOrderDocDTPrj ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID     
AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo     
WHERE (tblOrderDoc.dteJournalDate BETWEEN @SQStart AND @SQFinish)    
UNION ALL     
SELECT tblInvoiceDocDTPrj.strProjNumber,     
(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblInvoiceDocDTPrj.strProjNumber) AS ProjName, '03 - Sales Invoices (Claims)' AS DOCTYPE,    
tblInvoiceDoc.strInvDocID, tblInvoiceDoc.dteJournalDate, 0, tblInvoiceDocDT.strPartNumber, tblInvoiceDocDT.strPartDesc,     
tblInvoiceDocDT.decQty, tblInvoiceDocDT.decPriceEaExc, tblInvoiceDocDT.decLineTotExc, tblInvoiceDocDTPrj.strStage, '--None--' AS Buyer     
FROM tblInvoiceDoc     
INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID     
INNER JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID     
AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo    
WHERE (tblInvoiceDoc.dteJournalDate BETWEEN @SQStart AND @SQFinish)    
UNION ALL     
SELECT tblOrderDocPDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = tblOrderDocPDTPrj.strProjNumber) AS ProjName,     
CASE tblOrderDocP.intDocType WHEN 1 THEN '05 - Purchase Orders' WHEN 2 THEN '04 - Requisitions (Tender Budgeted Costs)' ELSE 'Unknown' END     
AS DOCTYPE, tblOrderDocP.strOrdPDocID, tblOrderDocP.dteJournalDate, tblOrderDocP.bitCleared, tblOrderDocPDT.strPartNumber,     
tblOrderDocPDT.strPartDesc, tblOrderDocPDT.decStockQty, tblOrderDocPDT.decPriceEaExc, tblOrderDocPDT.decLineTotExc, tblOrderDocPDTPrj.strStage,    
strBuyerName AS Buyer     
FROM tblOrderDocP     
INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID     
INNER JOIN tblOrderDocPDTPrj ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTPrj.strOrdPDocID     
AND tblOrderDocPDT.intLineNo = tblOrderDocPDTPrj.intLineNo     
WHERE (tblOrderDocP.dteJournalDate BETWEEN @SQStart AND @SQFinish)    
UNION ALL     
SELECT tblWSOrderDocDTPrj.strProjNumber,     
(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblWSOrderDocDTPrj.strProjNumber ) AS ProjName,     
CASE tblWSProcessDoc.DocType WHEN 1 THEN ' 01 - Quotations(Tenders / Change Orders) ' WHEN 2 THEN ' 02 - Sales Orders ' ELSE ' UNKNOWN ' END     
AS DOCTYPE, tblWSProcessDoc.ProcessDocID, tblWSProcessDoc.DocumentDate, tblWSProcessDoc.Cleared, tblWSProcessDocDT.PartNumber,     
tblWSProcessDocDT.PartDesc, CASE tblWSProcessDoc.DocType WHEN 1 THEN tblWSProcessDocDT.QuotedQty WHEN 2 THEN tblWSProcessDocDT.JobQty END     
AS decQty, tblWSProcessDocDT.PriceEaExc, tblWSProcessDocDT.LineTotExc, tblWSOrderDocDTPrj.strStage, ' --None-- ' AS Buyer     
FROM tblWSProcessDoc     
INNER JOIN tblWSProcessDocDT ON tblWSProcessDoc.ProcessDocID = tblWSProcessDocDT.ProcessDocID     
INNER JOIN tblWSOrderDocDTPrj ON tblWSProcessDocDT.ProcessDocID = tblWSOrderDocDTPrj.strOrdDocID     
AND tblWSProcessDocDT.[LineNo] = tblWSOrderDocDTPrj.intLineNo     
WHERE ( tblWSProcessDoc.DocumentDate BETWEEN @SQStart AND @SQFinish )    
UNION ALL   
SELECT tblOrderDocPGDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = tblOrderDocPGDTPrj.strProjNumber) AS ProjName, '06 - Goods Received Vouchers (GRV)' AS DOCTYPE, tblOrderDocPG.strOrdPGDocID, tblOrderDocPG.dteJournalDate,
 tblOrderDocPG.bitCleared, tblOrderDocPGDT.strPartNumber, tblOrderDocPGDT.strPartDesc, tblOrderDocPGDT.decStockQty, tblOrderDocPGDT.decPriceEaExc, tblOrderDocPGDT.decLineTotExc, tblOrderDocPGDTPrj.strStage, '--None--' AS Buyer FROM tblOrderDocPG 
 INNER JOIN tblOrderDocPGDT ON tblOrderDocPG.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID INNER JOIN tblOrderDocPGDTPrj ON tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPGDTPrj.strOrdPGDocID AND tblOrderDocPGDT.intLineNo = tblOrderDocPGDTPrj.intLineNo 
 WHERE (tblOrderDocPG.dteJournalDate BETWEEN @SQStart AND @SQFinish)    
UNION ALL   
SELECT tblOrderDocPGDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = tblOrderDocPGDTPrj.strProjNumber) AS ProjName, '06 - Goods Received Vouchers (GRV)' AS DOCTYPE, tblOrderDocPG.strOrdPGDocID, tblOrderDocPG.dteJournalDate, 
tblOrderDocPG.bitCleared, tblOrderDocPGDT.strPartNumber, tblOrderDocPGDT.strPartDesc, tblOrderDocPGDT.decStockQty, tblOrderDocPGDT.decPriceEaExc, tblOrderDocPGDT.decLineTotExc, tblOrderDocPGDTPrj.strStage, '--None--' AS Buyer FROM tblOrderDocPG INNER JOIN
 tblOrderDocPGDT ON tblOrderDocPG.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID INNER JOIN tblOrderDocPGDTPrj ON tblOrderDocPGDT.strOrdPGDocID = tblOrderDocPGDTPrj.strOrdPGDocID AND tblOrderDocPGDT.intLineNo = tblOrderDocPGDTPrj.intLineNo 
 WHERE (tblOrderDocPG.dteJournalDate BETWEEN @SQStart AND @SQFinish)    
UNION ALL   
SELECT tblInvoiceDocPDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = tblInvoiceDocPDTPrj.strProjNumber) AS ProjName, '07 - Purchase Invoices (Expenses)' AS DOCTYPE, tblInvoiceDocP.strInvPDocID, tblInvoiceDocP.dteJournalDate
, 0, tblInvoiceDocPDT.strPartNumber, tblInvoiceDocPDT.strPartDesc, tblInvoiceDocPDT.decStockQty, tblInvoiceDocPDT.decPriceEaExc, tblInvoiceDocPDT.decLineTotExc, tblInvoiceDocPDTPrj.strStage, strBuyerName AS Buyer FROM tblInvoiceDocP 
INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID INNER JOIN tblInvoiceDocPDTPrj ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocPDTPrj.strInvPDocID AND tblInvoiceDocPDT.intLineNo = tblInvoiceDocPDTPrj.intLineNo 
WHERE (tblInvoiceDocP.dteJournalDate BETWEEN @SQStart AND @SQFinish)      
UNION   
ALL SELECT tblOrderDocQDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = tblOrderDocQDTPrj.strProjNumber) AS ProjName, '08 - Freehand Quotes (Tenders / Change Orders)' AS DOCTYPE, tblOrderDocQ.strOrdDocID, tblOrderDocQ.dteJournalDate, tblOrderDocQ.bitCleared, tblOrderDocQDT.strPartNumber,tblOrderDocQDT.strPartDesc, tblOrderDocQDT.decQty, tblOrderDocQDT.decPriceEaExc, tblOrderDocQDT.decLineTotExc, tblOrderDocQDTPrj.strStage , '--None--' AS Buyer FROM tblOrderDocQ 
INNER JOIN tblOrderDocQDT ON tblOrderDocQ.strOrdDocID = tblOrderDocQDT.strOrdDocID INNER JOIN tblOrderDocQDTPrj ON tblOrderDocQDT.strOrdDocID = tblOrderDocQDTPrj.strOrdDocID AND tblOrderDocQDT.intLineNo = tblOrderDocQDTPrj.intLineNo WHERE (tblOrderDocQ.dteJournalDate 
BETWEEN @SQStart AND @SQFinish)      
UNION ALL   
SELECT dbo.tblJournalEntryDocCBDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = dbo.tblJournalEntryDocCBDTPrj.strProjNumber) AS ProjName, '09 - Payment Journal' AS DOCTYPE, tblJournalEntryDocCB.strJEDocID AS strOrdDocID, tblJournalEntryDocCB.dteJournalDate, cast(0 as bit) AS bitCleared, tblJournalEntryDocCBDT.intGLNumber AS strPartNumber,tblJournalEntryDocCBDT.strDesc AS strPartDesc, 1 AS decQty, tblJournalEntryDocCBDT.decLineTotExc AS decPriceEaExc, tblJournalEntryDocCBDT.decLineTotExc,
 tblJournalEntryDocCBDTPrj.strStage, '--None--' AS Buyer FROM tblJournalEntryDocCB INNER JOIN tblJournalEntryDocCBDT ON tblJournalEntryDocCB.strJEDocID = tblJournalEntryDocCBDT.strJEDocID INNER JOIN tblJournalEntryDocCBDTPrj ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCBDTPrj.strJEDocID AND tblJournalEntryDocCBDT.intType = tblJournalEntryDocCBDTPrj.intType AND tblJournalEntryDocCBDT.intGLNumber = tblJournalEntryDocCBDTPrj.intGLNumber AND tblJournalEntryDocCBDT.intLineNo = tblJournalEntryDocCBDTPrj.intLineNo 
 WHERE (tblJournalEntryDocCB.dteJournalDate BETWEEN @SQStart AND @SQFinish) AND (tblJournalEntryDocCBDT.intType = @SQPayType)      
UNION ALL   
SELECT dbo.tblJournalEntryDocCBDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = dbo.tblJournalEntryDocCBDTPrj.strProjNumber) AS ProjName, '10 - Receipt Journal' AS DOCTYPE, tblJournalEntryDocCB.strJEDocID AS strOrdDocID, tblJournalEntryDocCB.dteJournalDate,cast(0 as bit) AS bitCleared, tblJournalEntryDocCBDT.intGLNumber AS strPartNumber,tblJournalEntryDocCBDT.strDesc AS strPartDesc, -1 AS decQty, tblJournalEntryDocCBDT.decLineTotExc AS decPriceEaExc, (tblJournalEntryDocCBDT.decLineTotExc * -1) AS decLineTotExc,
 tblJournalEntryDocCBDTPrj.strStage, '--None--' AS Buyer FROM tblJournalEntryDocCB INNER JOIN tblJournalEntryDocCBDT ON tblJournalEntryDocCB.strJEDocID = tblJournalEntryDocCBDT.strJEDocID 
 INNER JOIN tblJournalEntryDocCBDTPrj ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCBDTPrj.strJEDocID AND tblJournalEntryDocCBDT.intType = tblJournalEntryDocCBDTPrj.intType AND tblJournalEntryDocCBDT.intGLNumber = tblJournalEntryDocCBDTPrj.intGLNumber AND tblJournalEntryDocCBDT.intLineNo = tblJournalEntryDocCBDTPrj.intLineNo 
 WHERE (tblJournalEntryDocCB.dteJournalDate BETWEEN @SQStart AND @SQFinish) AND (tblJournalEntryDocCBDT.intType = @SQRecType)      
UNION ALL   
SELECT dbo.tblJournalEntryDocDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = dbo.tblJournalEntryDocDTPrj.strProjNumber) AS ProjName, '13 - Journal Entry' AS DOCTYPE, tblJournalEntryDoc.strJEDocID AS strOrdDocID, 
tblJournalEntryDoc.dteJournalDate,cast(0 as bit) AS bitCleared, CASE WHEN tblJournalEntryDocDT.intModule <> @SQintModule THEN ISNULL(tblJournalEntryDocDT.intGLNumber,'') ELSE tblJournalEntryDocDT.strCuVeGeID END AS strPartNumber,
 CASE WHEN tblJournalEntryDocDT.intModule <> @SQintModule THEN ISNULL(tblJournalEntryDocDT.strDesc,'') ELSE tblJournalEntryDocDT.strCuVeGeDesc END, CASE WHEN tblJournalEntryDocDT.decDebits > 0 THEN 1 ELSE -1 END AS decQty, CASE WHEN tblJournalEntryDocDT.decDebits > 0 THEN tblJournalEntryDocDT.decDebits 
ELSE (tblJournalEntryDocDT.decCredits * -1) END AS decPriceEaExc, CASE WHEN tblJournalEntryDocDT.decDebits > 0 THEN tblJournalEntryDocDT.decDebits ELSE (tblJournalEntryDocDT.decCredits * -1) END AS decLineTotExc, tblJournalEntryDocDTPrj.strStage , '--None--' AS Buyer 
FROM tblJournalEntryDoc INNER JOIN tblJournalEntryDocDT ON tblJournalEntryDoc.strJEDocID = tblJournalEntryDocDT.strJEDocID INNER JOIN tblJournalEntryDocDTPrj ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDocDTPrj.strJEDocID   
AND CASE WHEN tblJournalEntryDocDT.intModule <> @SQintModule THEN tblJournalEntryDocDT.intGLNumber ELSE tblJournalEntryDocDT.strCuVeGeID END = tblJournalEntryDocDTPrj.intGLNumber AND tblJournalEntryDocDT.intLineNo = tblJournalEntryDocDTPrj.intLineNo WHERE
  
(tblJournalEntryDoc.dteJournalDate BETWEEN @SQStart AND @SQFinish)    
UNION ALL   
SELECT tblOrderDocDADTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = tblOrderDocDADTPrj.strProjNumber) AS ProjName, '14 - Delivery Advice' AS DOCTYPE, tblOrderDocDA.strOrdDADocID, tblOrderDocDA.dteJournalDate, tblOrderDocDA.bitCleared, tblOrderDocDADT.strPartNumber,tblOrderDocDADT.strPartDesc, tblOrderDocDADT.decQty, tblOrderDocDADT.decPriceEaExc, tblOrderDocDADT.decLineTotExc, tblOrderDocDADTPrj.strStage, '--None--' AS Buyer FROM tblOrderDocDA INNER JOIN tblOrderDocDADT ON 
tblOrderDocDA.strOrdDADocID = tblOrderDocDADT.strOrdDADocID INNER JOIN tblOrderDocDADTPrj ON tblOrderDocDADT.strOrdDADocID = tblOrderDocDADTPrj.strOrdDADocID AND tblOrderDocDADT.intLineNo = tblOrderDocDADTPrj.intLineNo WHERE (tblOrderDocDA.dteJournalDate 
BETWEEN @SQStart AND @SQFinish)      
UNION ALL   
SELECT tblInvAdjDocDTPrj.strProjNumber, (SELECT strProjName FROM tblProjects WHERE strProjNumber = tblInvAdjDocDTPrj.strProjNumber) AS ProjName, '15 - Stock Adjustment' AS DOCTYPE, tblInvAdjDoc.strAdjDocID, tblInvAdjDoc.dteJournalDate, 0, 
tblInvAdjDocDT.strPartNumber, strDesc As strPartDesc, tblInvAdjDocDT.decQty, tblInvAdjDocDT.decUnitCost, tblInvAdjDocDT.decQty * tblInvAdjDocDT.decUnitCost, tblInvAdjDocDTPrj.strStage, '--None--' AS Buyer FROM tblInvAdjDoc INNER JOIN tblInvAdjDocDT ON tblInvAdjDoc.strAdjDocID = tblInvAdjDocDT.strAdjDocID 
INNER JOIN tblInvAdjDocDTPrj ON tblInvAdjDocDT.strAdjDocID = tblInvAdjDocDTPrj.strAdjDocID AND tblInvAdjDocDT.intLineNo = tblInvAdjDocDTPrj.intLineNo LEFT JOIN tblInv ON tblInvAdjDocDT.strPartNumber = tblInv.strPartNumber 
WHERE (tblInvAdjDoc.dteJournalDate BETWEEN @SQStart AND @SQFinish)      
UNION ALL   
SELECT tblInvIssReqDocDTPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblInvIssReqDocDTPrj.strProjNumber) AS ProjName, '16 - Stock Issue' AS DOCTYPE, tblInvIssReqDoc.strInvIssReqDocID, tblInvIssReqDoc.dteJournalDate, 0,
 tblInvIssReqDocDT.strPartNumber,strDesc As strPartDesc, tblInvIssReqDocDT.decQty, tblInvIssReqDocDT.decUnitCost, (tblInvIssReqDocDT.decQty * tblInvIssReqDocDT.decUnitCost), tblInvIssReqDocDTPrj.strStage, '--None--' AS Buyer FROM tblInvIssReqDoc 
 INNER JOIN tblInvIssReqDocDT ON tblInvIssReqDoc.strInvIssReqDocID = tblInvIssReqDocDT.strInvIssReqDocID INNER JOIN tblInvIssReqDocDTPrj ON tblInvIssReqDocDT.strInvIssReqDocID  = tblInvIssReqDocDTPrj.strInvIssReqDocID AND tblInvIssReqDocDT.intLineNo = tblInvIssReqDocDTPrj.intLineNo 
 LEFT JOIN tblInv ON tblInvIssReqDocDT.strPartNumber = tblInv.strPartNumber WHERE (tblInvIssReqDoc.dteJournalDate BETWEEN @SQStart AND @SQFinish)      
UNION ALL   
SELECT tblInvRepackDocDTPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblInvRepackDocDTPrj.strProjNumber) AS ProjName, '17 - Stock Repack' AS DOCTYPE, tblInvRepackDoc.strRepackDocID, tblInvRepackDoc.dteJournalDate, 0, tblInvRepackDocDT.strPartNumber,strDesc As strPartDesc, tblInvRepackDocDT.decQty, tblInvRepackDocDT.decUnitCost, (tblInvRepackDocDT.decQty * tblInvRepackDocDT.decUnitCost), tblInvRepackDocDTPrj.strStage, '--None--' AS Buyer FROM tblInvRepackDoc 
INNER JOIN tblInvRepackDocDT ON tblInvRepackDoc.strRepackDocID = tblInvRepackDocDT.strRepackDocID INNER JOIN tblInvRepackDocDTPrj ON tblInvRepackDocDT.strRepackDocID  = tblInvRepackDocDTPrj.strRepackDocID AND tblInvRepackDocDT.intLineNo = tblInvRepackDocDTPrj.intLineNo
 LEFT JOIN tblInv ON tblInvRepackDocDT.strPartNumber = tblInv.strPartNumber WHERE (tblInvRepackDoc.dteJournalDate BETWEEN @SQStart AND @SQFinish)      
UNION ALL   
SELECT tblInvIntReqDocDTPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblInvIntReqDocDTPrj.strProjNumber) AS ProjName, '18 - Stock Requisition' AS DOCTYPE, tblInvIntReqDoc.strInvIntReqDocID, tblInvIntReqDoc.dteJournalDate, 0
, tblInvIntReqDocDT.strPartNumber,strDesc As strPartDesc, tblInvIntReqDocDT.decQty, tblInvIntReqDocDT.decUnitCost, (tblInvIntReqDocDT.decQty * tblInvIntReqDocDT.decUnitCost), tblInvIntReqDocDTPrj.strStage, '--None--' AS Buyer FROM tblInvIntReqDoc 
INNER JOIN tblInvIntReqDocDT ON tblInvIntReqDoc.strInvIntReqDocID = tblInvIntReqDocDT.strInvIntReqDocID INNER JOIN tblInvIntReqDocDTPrj ON tblInvIntReqDocDT.strInvIntReqDocID  = tblInvIntReqDocDTPrj.strInvIntReqDocID AND tblInvIntReqDocDT.intLineNo = tblInvIntReqDocDTPrj.intLineNo
 LEFT JOIN tblInv ON tblInvIntReqDocDT.strPartNumber = tblInv.strPartNumber WHERE (tblInvIntReqDoc.dteJournalDate BETWEEN @SQStart AND @SQFinish)  

--NEW CHANGES AFTER ADDING PROJECT ALLOCATIONS IN MANUFACTURING JOBS

--process jobs
UNION ALL
SELECT tblManJobPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManJobPrj.strProjNumber) AS ProjName,'19 - Process Job' AS DOCTYPE,tblManJobByProd.strJBDocID,tblManJob.dteJournalDate,0,tblManJobByProd.strPartNumber,tblManJobByProd.strDesc AS strPartDesc,tblManJobByProd.decManQty AS decQty,ROUND((MA.decManAmount / tblManJobByProd.decManQty) / MC.intProdCount,4),ROUND(MA.decManAmount / MC.intProdCount,2),tblManJobPrj.strStage,'--None--' AS Buyer
FROM tblManJob
INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID
INNER JOIN tblManJobPrj ON tblManJobByProd.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobByProd.strPartNumber = tblManJobPrj.strPartNumber AND tblManJobPrj.intType = @TypeBOM
INNER JOIN (SELECT T1.strJBDocID,SUM(T1.decManAmount) AS decManAmount FROM (
	SELECT tblManJob.strJBDocID,tblManJobCompInv.decManAmount FROM tblManJob INNER JOIN tblManJobCompInv ON tblManJob.strJBDocID = tblManJobCompInv.strJBDocID WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish
	UNION ALL SELECT tblManJob.strJBDocID,tblManJobCompLab.decManAmount FROM tblManJob INNER JOIN tblManJobCompLab ON tblManJob.strJBDocID = tblManJobCompLab.strJBDocID WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish
	UNION ALL SELECT tblManJob.strJBDocID,tblManJobCompMach.decManAmount FROM tblManJob INNER JOIN tblManJobCompMach ON tblManJob.strJBDocID = tblManJobCompMach.strJBDocID WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish
	UNION ALL SELECT tblManJob.strJBDocID,tblManJobCompOverhead.decManAmount FROM tblManJob INNER JOIN tblManJobCompOverhead ON tblManJob.strJBDocID = tblManJobCompOverhead.strJBDocID WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish
	) T1 GROUP BY T1.strJBDocID) MA ON tblManJob.strJBDocID = MA.strJBDocID
INNER JOIN (SELECT tblManJob.strJBDocID,COUNT(tblManJobByProd.strPartNumber) AS intProdCount FROM tblManJob INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish GROUP BY tblManJob.strJBDocID) MC ON tblManJob.strJBDocID = MC.strJBDocID
WHERE (tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish)

UNION ALL
SELECT tblManJobPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManJobPrj.strProjNumber) AS ProjName,'19 - Process Job' AS DOCTYPE,tblManJobCompInv.strJBDocID,tblManJob.dteJournalDate,0,tblManJobCompInv.strPartNumber,tblManJobCompInv.strDesc AS strPartDesc,tblManJobCompInv.decManQty AS decQty,tblManJobCompInv.decPPUnit,tblManJobCompInv.decManAmount,tblManJobPrj.strStage,'--None--' AS Buyer
FROM tblManJob
INNER JOIN tblManJobCompInv ON tblManJob.strJBDocID = tblManJobCompInv.strJBDocID
INNER JOIN tblManJobPrj ON tblManJobCompInv.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobCompInv.strWCCode = tblManJobPrj.strWCCode AND tblManJobCompInv.intLineNo = tblManJobPrj.intLineNo AND tblManJobPrj.intType = @TypeINV
WHERE (tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish)

UNION ALL
SELECT tblManJobPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManJobPrj.strProjNumber) AS ProjName,'19 - Process Job' AS DOCTYPE,tblManJobCompLab.strJBDocID,tblManJob.dteJournalDate,0,tblManJobPrj.strPartNumber,tblManLabour.strDesc AS strPartDesc,(tblManJobCompLab.decManVariableHours + tblManJobCompLab.decSetupHours + tblManJobCompLab.decBreakdownHours) AS decQty,0 AS decPPUnit,tblManJobCompLab.decManAmount,tblManJobPrj.strStage,'--None--' AS Buyer
FROM tblManJob
INNER JOIN tblManJobCompLab ON tblManJob.strJBDocID = tblManJobCompLab.strJBDocID
INNER JOIN tblManLabour ON tblManJobCompLab.strLabCode = tblManLabour.strLabCode
INNER JOIN tblManJobPrj ON tblManJobCompLab.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobCompLab.strWCCode = tblManJobPrj.strWCCode AND tblManJobCompLab.intLineNo = tblManJobPrj.intLineNo AND tblManJobPrj.intType = @TypeLAB
WHERE (tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish)

UNION ALL
SELECT tblManJobPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManJobPrj.strProjNumber) AS ProjName,'19 - Process Job' AS DOCTYPE,tblManJobCompMach.strJBDocID,tblManJob.dteJournalDate,0,tblManJobPrj.strPartNumber,tblManMachinery.strDesc AS strPartDesc,(tblManJobCompMach.decManVariableHours + tblManJobCompMach.decSetupHours + tblManJobCompMach.decBreakdownHours) AS decQty,0 AS decPPUnit,tblManJobCompMach.decManAmount,tblManJobPrj.strStage,'--None--' AS Buyer
FROM tblManJob
INNER JOIN tblManJobCompMach ON tblManJob.strJBDocID = tblManJobCompMach.strJBDocID
INNER JOIN tblManMachinery ON tblManJobCompMach.strMachCode = tblManMachinery.strMachCode
INNER JOIN tblManJobPrj ON tblManJobCompMach.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobCompMach.strWCCode = tblManJobPrj.strWCCode AND tblManJobCompMach.intLineNo = tblManJobPrj.intLineNo AND tblManJobPrj.intType = @TypeMACH
WHERE (tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish)

UNION ALL
SELECT tblManJobPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManJobPrj.strProjNumber) AS ProjName,'19 - Process Job' AS DOCTYPE,tblManJobCompOverhead.strJBDocID,tblManJob.dteJournalDate,0,tblManJobPrj.strPartNumber,tblAccounts.strDesc AS strPartDesc,1 AS decQty,0 AS decPPUnit,tblManJobCompOverhead.decManAmount,tblManJobPrj.strStage,'--None--' AS Buyer
FROM tblManJob
INNER JOIN tblManJobCompOverhead ON tblManJob.strJBDocID = tblManJobCompOverhead.strJBDocID
INNER JOIN tblAccounts ON tblManJobCompOverhead.intGLNumber = tblAccounts.intGLNumber
INNER JOIN tblManJobPrj ON tblManJobCompOverhead.strJBDocID = tblManJobPrj.strJBDocID AND tblManJobCompOverhead.strWCCode = tblManJobPrj.strWCCode AND tblManJobCompOverhead.intLineNo = tblManJobPrj.intLineNo AND tblManJobPrj.intType = @TypeRC
WHERE (tblManJob.dteJournalDate BETWEEN @SQStart AND @SQFinish)

--Issue Work in progress
UNION ALL
SELECT tblManWIPPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManWIPPrj.strProjNumber) AS ProjName,'20 - Issue Work In Progress' AS DOCTYPE,tblManWIPCompInv.strWIPDocID,tblManWIP.dteJournalDate,0,tblManWIPCompInv.strPartNumber,tblManWIPCompInv.strDesc AS strPartDesc,CASE WHEN tblManWIPCompInv.decPostAmount < 0 THEN tblManWIPCompInv.decReturnQty * -1 ELSE tblManWIPCompInv.decPostQty END AS decQty,tblManWIPCompInv.decPostAmount / CASE WHEN tblManWIPCompInv.decPostAmount < 0 THEN tblManWIPCompInv.decReturnQty * -1 ELSE tblManWIPCompInv.decPostQty END,tblManWIPCompInv.decPostAmount,tblManWIPPrj.strStage,'--None--' AS Buyer
FROM tblManWIP
INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID
INNER JOIN tblManWIPPrj ON tblManWIPCompInv.strWIPDocID = tblManWIPPrj.strWIPDocID AND tblManWIPPrj.intType = @TypeINV
WHERE (tblManWIP.dteJournalDate BETWEEN @SQStart AND @SQFinish)

UNION ALL
SELECT tblManWIPPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManWIPPrj.strProjNumber) AS ProjName,'20 - Issue Work In Progress' AS DOCTYPE,tblManWIPCompLab.strWIPDocID,tblManWIP.dteJournalDate,0,tblManWIPPrj.strPartNumber,tblManLabour.strDesc AS strPartDesc,CASE WHEN tblManWIPCompLab.decPostAmount < 0 THEN (tblManWIPCompLab.decReturnVariableHours + tblManWIPCompLab.decReturnSetupHours + tblManWIPCompLab.decReturnBreakdownHours) * -1 ELSE (tblManWIPCompLab.decPostVariableHours + tblManWIPCompLab.decPostSetupHours + tblManWIPCompLab.decPostBreakdownHours) END AS decQty,0 AS decPPUnit,tblManWIPCompLab.decPostAmount,tblManWIPPrj.strStage,'--None--' AS Buyer
FROM tblManWIP
INNER JOIN tblManWIPCompLab ON tblManWIP.strWIPDocID = tblManWIPCompLab.strWIPDocID
INNER JOIN tblManLabour ON tblManWIPCompLab.strLabCode = tblManLabour.strLabCode
INNER JOIN tblManWIPPrj ON tblManWIPCompLab.strWIPDocID = tblManWIPPrj.strWIPDocID AND tblManWIPPrj.intType = @TypeLAB
WHERE (tblManWIP.dteJournalDate BETWEEN @SQStart AND @SQFinish)

UNION ALL
SELECT tblManWIPPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManWIPPrj.strProjNumber) AS ProjName,'20 - Issue Work In Progress' AS DOCTYPE,tblManWIPCompMach.strWIPDocID,tblManWIP.dteJournalDate,0,tblManWIPPrj.strPartNumber,tblManMachinery.strDesc AS strPartDesc,CASE WHEN tblManWIPCompMach.decPostAmount < 0 THEN (tblManWIPCompMach.decReturnVariableHours + tblManWIPCompMach.decReturnSetupHours + tblManWIPCompMach.decReturnBreakdownHours) * -1 ELSE (tblManWIPCompMach.decPostVariableHours + tblManWIPCompMach.decPostSetupHours + tblManWIPCompMach.decPostBreakdownHours) END AS decQty,0 AS decPPUnit,tblManWIPCompMach.decPostAmount,tblManWIPPrj.strStage,'--None--' AS Buyer
FROM tblManWIP
INNER JOIN tblManWIPCompMach ON tblManWIP.strWIPDocID = tblManWIPCompMach.strWIPDocID
INNER JOIN tblManMachinery ON tblManWIPCompMach.strMachCode = tblManMachinery.strMachCode
INNER JOIN tblManWIPPrj ON tblManWIPCompMach.strWIPDocID = tblManWIPPrj.strWIPDocID AND tblManWIPPrj.intType = @TypeMACH
WHERE (tblManWIP.dteJournalDate BETWEEN @SQStart AND @SQFinish)

UNION ALL
SELECT tblManWIPPrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManWIPPrj.strProjNumber) AS ProjName,'20 - Issue Work In Progress' AS DOCTYPE,tblManWIPCompOverhead.strWIPDocID,tblManWIP.dteJournalDate,0,tblManWIPPrj.strPartNumber,tblAccounts.strDesc AS strPartDesc,1 AS decQty,0 AS decPPUnit,tblManWIPCompOverhead.decPostAmount,tblManWIPPrj.strStage,'--None--' AS Buyer
FROM tblManWIP
INNER JOIN tblManWIPCompOverhead ON tblManWIP.strWIPDocID = tblManWIPCompOverhead.strWIPDocID
INNER JOIN tblAccounts ON tblManWIPCompOverhead.intGLNumber = tblAccounts.intGLNumber
INNER JOIN tblManWIPPrj ON tblManWIPCompOverhead.strWIPDocID = tblManWIPPrj.strWIPDocID AND tblManWIPPrj.intType = @TypeRC
WHERE (tblManWIP.dteJournalDate BETWEEN @SQStart AND @SQFinish)

--Close Jobs
UNION ALL
SELECT tblManJobClosePrj.strProjNumber,(SELECT strProjName FROM tblProjects WHERE strProjNumber = tblManJobClosePrj.strProjNumber) AS ProjName,'21 - Close Job' AS DOCTYPE,tblManJobClose.strJBDocID,tblManJobClose.dteJournalDate,0,tblManJobClose.strPartNumber,tblInv.strDesc AS strPartDesc,tblManJobClose.decManQtyClosed AS decQty,tblManJobClose.decManUnitCost,tblManJobClose.decManAmount,tblManJobClosePrj.strStage,'--None--' AS Buyer
FROM tblManJob
INNER JOIN tblManJobClose ON tblManJob.strJBDocID = tblManJobClose.strJBDocID
INNER JOIN tblManJobClosePrj ON tblManJobClose.strJBDocID = tblManJobClosePrj.strJBDocID AND tblManJobClose.lngID = tblManJobClosePrj.lngJBID
LEFT JOIN tblInv ON tblManJobClose.strPartNumber = tblInv.strPartNumber
WHERE (tblManJobClose.dteJournalDate BETWEEN @SQStart AND @SQFinish)

)Z WHERE 1 = 1     

ORDER BY strProjNumber,DOCTYPE,strOrdDocID,strPartNumber
END    
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].GetRptPrjResourcesReportData                
(                
@SQProjNum nvarchar(max)        
)                
AS                
BEGIN                
SELECT tblProjectsResources.lngID, tblProjectsResources.strProjNumber, tblProjects.strProjName, tblProjectsResources.strAssetCode,   
tblAssets.strAssetDesc, tblProjectsResources.strReference, tblProjectsResources.dteAssignedDate, tblProjectsResources.dteLeftDate   
FROM tblProjectsResources   
INNER JOIN tblAssets ON tblProjectsResources.strAssetCode = tblAssets.strAssetCode   
INNER JOIN tblProjects ON tblProjectsResources.strProjNumber = tblProjects.strProjNumber WHERE 1 = 1  
AND (tblProjects.strProjNumber  IN ((SELECT * FROM fnSplitStringAsTable(@SQProjNum, ','))))   
ORDER BY strProjNumber, lngID   
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptPendingPQData]    
(    
@IsBPToolMode bit,  
@SQUserName nvarchar(max)  
)    
AS    
BEGIN   
if(@IsBPToolMode = 0)  
BEGIN  
SELECT DISTINCT tblOrderDocP.strVendName as VendorName, strVendDesc  as Description   
FROM tblOrderDocP INNER JOIN tblVendors ON tblVendors.strVendName = tblOrderDocP.strVendName   
WHERE (intDocType = 2) AND (bitCleared = 0)  
AND strVendCategory IN (SELECT tblVendorCat.strVendCategory   
FROM tblVendorCat LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory   
WHERE ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory) FROM tblVendorCatSec   
WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblVendorCatSec.strVendCategory)   
FROM tblVendorCatSec WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory), 0) > 0 AND tblVendorCatSec.strUserName = @SQUserName))  
ORDER BY tblOrderDocP.strVendName  
END  
ELSE  
BEGIN  
SELECT DISTINCT tblOrderDocP.strVendName as VendorName, strVendDesc  as Description  
FROM tblOrderDocP INNER JOIN tblVendors ON tblVendors.strVendName = tblOrderDocP.strVendName   
WHERE (intDocType = 2) AND (bitCleared = 0)  
ORDER BY tblOrderDocP.strVendName  
END   
END 
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[LoadVendors] (
	@SearchText NVARCHAR(max)
	,@IsInactive BIT
	,@IsBPToolMode BIT
	,@SQUserName NVARCHAR(100)
	,@IsCheckedSearch BIT
	)
AS
BEGIN
	IF (@IsCheckedSearch = 1)
	BEGIN
		IF (@IsBPToolMode = 0)
		BEGIN
			SELECT strVendName AS VendorName
				,strVendDesc AS Description
			FROM tblVendors
			WHERE bitInactive = CASE 
					WHEN @IsInactive = 0
						THEN 0
					ELSE bitInactive
					END
				AND (
					(
						LEN(@SearchText) > 2
						AND (
							strVendName LIKE @SearchText + '%'
							OR strVendDesc LIKE @SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							strVendName LIKE '%'
							OR strVendDesc LIKE '%'
							)
						)
					)
				AND strVendCategory IN (
					SELECT tblVendorCat.strVendCategory
					FROM tblVendorCat
					LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
					WHERE ISNULL((
								SELECT COUNT(tblVendorCatSec.strVendCategory)
								FROM tblVendorCatSec
								WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblVendorCatSec.strVendCategory)
									FROM tblVendorCatSec
									WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
									), 0) > 0
							AND tblVendorCatSec.strUserName = @SQUserName
							)
					)
			ORDER BY strVendName
		END
		ELSE
		BEGIN
			SELECT strVendName AS VendorName
				,strVendDesc AS Description
			FROM tblVendors
			WHERE bitInactive = CASE 
					WHEN @IsInactive = 0
						THEN 0
					ELSE bitInactive
					END
				AND (
					(
						LEN(@SearchText) > 2
						AND (
							strVendName LIKE @SearchText + '%'
							OR strVendDesc LIKE @SearchText + '%'
							)
						)
					OR (
						LEN(@SearchText) <= 2
						AND (
							strVendName LIKE '%'
							OR strVendDesc LIKE '%'
							)
						)
					)
			ORDER BY strVendName
		END
	END
	ELSE
	BEGIN
		SELECT strVendName AS VendorName
			,strVendDesc AS Description
		FROM tblVendors
		WHERE bitInactive = CASE 
				WHEN @IsInactive = 0
					THEN 0
				ELSE bitInactive
				END
		ORDER BY strVendName
	END
END
GO
----------------------------------------------------

CREATE PROCEDURE rpARGetSalesPersonsSetup     
(      
 @IsCheckedSearch bit,      
 @SearchText nvarchar(max),      
 @IsInactive bit      
)       
AS      
BEGIN      
 IF(@IsCheckedSearch = 1)      
 BEGIN    
  IF(@SearchText <> '')      
  BEGIN    
   SELECT strSalesName AS Description     
   FROM tblSalesPersons     
   WHERE (strSalesName LIKE @SearchText)  and (bitInactive = 0) AND bitIsWorkshopTechnician = 0     
   ORDER BY strSalesName      
  END    
  ELSE IF(@IsInactive = 1)      
   BEGIN    
   SELECT strSalesName AS Description     
   FROM tblSalesPersons     
   WHERE bitIsWorkshopTechnician = 0     
   ORDER BY strSalesName    
   END    
  ELSE    
  BEGIN    
   SELECT strSalesName AS Description     
   FROM tblSalesPersons     
   WHERE (bitInactive = 0) AND bitIsWorkshopTechnician = 0     
   --WHERE (strSalesName LIKE @SearchText)  and (bitInactive = 0) AND bitIsWorkshopTechnician = 0     
   ORDER BY strSalesName      
  END    
 END    
 ELSE    
 BEGIN    
   IF(@IsInactive = 1)      
   BEGIN    
   SELECT strSalesName AS Description     
   FROM tblSalesPersons     
   WHERE bitIsWorkshopTechnician = 0     
   ORDER BY strSalesName    
   END    
   ELSE    
  BEGIN    
   SELECT strSalesName AS Description    
      FROM tblSalesPersons     
   WHERE (bitInactive = 0) AND bitIsWorkshopTechnician = 0     
   ORDER BY strSalesName      
  END    
 END    
END    
GO

CREATE PROCEDURE [dbo].[GetInvWorkCentreOrderByDescription]
AS
BEGIN
	SELECT strInvWCCode AS InvWCCode
		,strDesc AS [Desc]
	FROM tblInvWorkCentre
	WHERE bitInactive = 0
	ORDER BY strDesc
END
GO

CREATE PROCEDURE [dbo].[GetInvAdjustmentLocations]
(
	@UserName AS NVARCHAR(20)
)
AS
BEGIN
	SELECT tblInvLoc.strLocName AS 'LocName',
		ISNULL((
				SELECT COUNT(tblInvLocSec.strLocName)
				FROM tblInvLocSec
				WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName
				), 0) AS 'LocationCount',
		ISNULL(tblInvLocSec.strUserName, '') AS 'UserName',
		tblInvLoc.strDesc AS 'Desc'
	FROM tblInvLoc
	LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName
		AND tblInvLocSec.strUserName = @UserName
	WHERE tblInvLoc.intType = 0
	ORDER BY tblInvLoc.strLocName
END
GO

CREATE PROCEDURE [dbo].[GetInvFiles] (
	@PartNumber AS NVARCHAR(50)
	,@AttachOn AS INT
	)
AS
BEGIN
	IF @AttachOn > 0
		SELECT strFileName AS FileName
			,dteModified AS Modified
			,strType AS Type
			,intSize AS Size
			,strUserName AS UserName
			,bitEnc AS IsEnc
			,intAttachOn AS AttachOn
		FROM tblInvF
		WHERE (strPartNumber = @PartNumber)
			AND intAttachOn = @AttachOn
	ELSE
		SELECT strFileName AS FileName
			,dteModified AS Modified
			,strType AS Type
			,intSize AS Size
			,strUserName AS UserName
			,bitEnc AS IsEnc
			,intAttachOn AS AttachOn
		FROM tblInvF
		WHERE (strPartNumber = @PartNumber)
END
GO

CREATE PROCEDURE [dbo].[GetInvCustomersData] (@PartNumber VARCHAR(50))
AS
BEGIN
	SELECT tblCustomers.strCustName AS CustName
		,tblCustomers.strCustDesc AS CustDesc
		,strItemCode AS ItemCode
		,strItemDesc AS ItemDesc
		,lngID
	FROM tblInvCustomer
	INNER JOIN tblCustomers ON tblInvCustomer.strCustName = tblCustomers.strCustName
	WHERE strPartNumber = @PartNumber
	ORDER BY tblInvCustomer.strCustName
END
GO

CREATE PROCEDURE [dbo].[GetInvVendorData] (@PartNumber VARCHAR(50))
AS
BEGIN
	SELECT tblVendors.strVendName AS VendName
		,tblVendors.strVendDesc AS VendDesc
		,strItemCode AS ItemCode
		,strItemDesc AS ItemDesc
		,intWarrantyDays AS WarrantyDays
		,decPrice AS Price
		,decLocalPrice AS LocalPrice
		,decDiscPerc AS DiscPerc
		,decLandedCostFactor AS LandedCostFactor
		,bitPreferred AS Preferred
		,lngID AS ID
		,dteStartDate AS StartDate
		,dteFinishDate AS FinishDate
		,strUnit AS Unit
	FROM tblInvVend
	INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName
	INNER JOIN tblInvVendPriceListsByDate ON tblInvVendPriceListsByDate.strVendName = tblInvVend.strVendName
		AND tblInvVend.uidPriceBasedID = tblInvVendPriceListsByDate.uidPriceBasedID
	WHERE strPartNumber = @PartNumber
	ORDER BY tblInvVend.strVendName
END
GO

CREATE PROCEDURE [dbo].[GetBranchTransferOrdersInfo] (@PartNumber AS NVARCHAR(50))
AS
BEGIN
	SELECT T1.strInvTrfOrdDocID AS [Document]
		,T1.dteJournalDate AS [OrderDate]
		,T1.dteReceivingDate AS [RequiredDate]
		,T1.strComment AS Comment
		,CASE 
			WHEN (T1.bitCleared = 1)
				THEN 'Cleared'
			ELSE 'Open'
			END AS [Status]
		,T1.strUserName AS [UserName]
		,T1.strDelMethodCode AS [DeliveryMethod]
		,T1.intDept AS Department
		,T1.strLocName AS [FromLocation]
		,T1.strToLocName AS [ToLocation]
		,T2.decQty AS [Quantity]
		,T2.decUnitCost AS [UnitCost]
		,T2.decAmount AS Amount
	FROM tblInvTrfOrdDoc T1
	INNER JOIN tblInvTrfOrdDocDT T2 ON T1.strInvTrfOrdDocID = T2.strInvTrfOrdDocID
	WHERE T2.strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[InvBinForLocationEntity] (@PartNumber VARCHAR(50))
AS
BEGIN
	SELECT tblInvExtBin.strLocName AS LocName
		,tblInvLocBin.strBinCode AS BinCode
		,tblInvExtBin.decOnHand AS OnHand
		,tblInvExtBin.decMaximumQty AS MaximumQty
	FROM tblInvExtBin
	INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[GetLocationDataForBrowserInv] (
	@PartNo AS NVARCHAR(50)
	,@Username AS NVARCHAR(50)
	)
AS
BEGIN
	SELECT tblInvExt.strLocName AS LocationName
		,tblInvLoc.intType AS LocationType
		,tblInvExt.strAcctSet AS AccountSets
		,tblInvExt.strBinLoc AS BinLocation
		,tblInvExt.decAvail AS Available
		,tblInvExt.decAlloc AS SalesOrder
		,tblInvExt.decOnHand AS OnHand
		,tblInvExt.decOnOrder AS PurchaseOrder
		,(
		SELECT SUM(QTY)
		FROM (
			SELECT (ISNULL(SUM(DT.decQtyRemaining), 0) * - 1) AS QTY
			FROM tblInvTrfOrdDoc DOC
			INNER JOIN tblInvTrfOrdDocDT DT ON DOC.strInvTrfOrdDocID = DT.strInvTrfOrdDocID
			WHERE DOC.bitCleared = 0
				AND DOC.strLocName = tblInvLoc.strLocName
				AND DT.strPartNumber = @PartNo
			UNION ALL
			SELECT ISNULL(SUM(DT.decQtyRemaining), 0) AS QTY
			FROM tblInvTrfOrdDoc DOC
			INNER JOIN tblInvTrfOrdDocDT DT ON DOC.strInvTrfOrdDocID = DT.strInvTrfOrdDocID
			WHERE DOC.bitCleared = 0
				AND DOC.strToLocName = tblInvLoc.strLocName
				AND DT.strPartNumber = @PartNo
			) AS Result1
		) AS [TransferOrders]
	,(
		SELECT SUM(QTY)
		FROM (
			SELECT (ISNULL(SUM(DT.decQty), 0) * - 1) AS QTY
			FROM tblInvTrfDoc DOC
			INNER JOIN tblInvTrfDocDT DT ON DOC.strTrfDocID = DT.strTrfDocID
			WHERE bitWarehouseTrf = 1
				AND bitCleared = 0
				AND strFromLoc = tblInvLoc.strLocName
				AND DT.strPartNumber = @PartNo
			UNION ALL
			SELECT ISNULL(SUM(DT.decQty), 0) AS QTY
			FROM tblInvTrfDoc DOC
			INNER JOIN tblInvTrfDocDT DT ON DOC.strTrfDocID = DT.strTrfDocID
			WHERE bitWarehouseTrf = 1
				AND bitCleared = 0
				AND strToLoc = tblInvLoc.strLocName
				AND DT.strPartNumber = @PartNo
			) AS Result2
		) AS [GIT]
		,tblInvExt.decValue AS [Value]
		,tblInvLoc.strDesc AS LocationDescription
		,ISNULL((
				SELECT COUNT(tblInvLocSec.strLocName)
				FROM tblInvLocSec
				WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName
				), 0) AS Access
		,ISNULL(tblInvLocSec.strUserName, '') AS UserName
		,ISNULL((
				SELECT SUM(tblManJobByProd.decManQty)
				FROM tblManJobByProd
				LEFT JOIN tblManJob ON tblManJobByProd.strJBDocID = tblManJob.strJBDocID
				WHERE tblManJobByProd.strPartNumber = tblInvExt.strPartNumber
					AND tblManJobByProd.strLocation = tblInvExt.strLocName
					AND (
						tblManJob.intType = 0
						OR tblManJob.intType = 3
						)
				), 0) AS WIP
		,tblInvExt.bitInactive AS Inactive
		,tblInvExt.bitDefault AS [Default]
		,tblInvExt.decManuf AS Manufacture
	FROM tblInvExt
	INNER JOIN tblInvLoc ON tblInvExt.strLocName = tblInvLoc.strLocName
	LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName
		AND tblInvLocSec.strUserName = @Username
	WHERE tblInvExt.strPartNumber = @PartNo
END
GO

CREATE PROCEDURE [dbo].[InvUOMs_Search] @PartNumber NVARCHAR(50) = NULL
AS
BEGIN
	SET NOCOUNT ON;

	SELECT strPartNumber AS PartNumber
		,strFromUnit AS FromUnit
		,strConversionType AS ConversionType
		,decConversionFactor AS ConversionFactor
		,strToUnit AS ToUnit
		,decPricePercentage AS PricePercentage
		,lngUOMId AS UOMId
		,strUseFor AS UseFor
		,strBarCode AS BarCode
		,strBarCode2 AS BarCode2
		,bitInactive AS Inactive
		,bitDefaultUOM AS DefaultUOM
	FROM tblInvUOMs
	WHERE (
			(strPartNumber = @PartNumber)
			OR (@PartNumber IS NULL)
			)
END
GO

CREATE PROCEDURE [dbo].[GetBOMInfoForBrowserInv] (@PartNo AS NVARCHAR(50))
AS
BEGIN
	SELECT T1.strPartItemNumber AS ItemCode
		,T2.strDesc AS ItemDescription
		,T1.strLocName AS [Location]
		,T1.intQtyToUse AS Quantity
	FROM tblInvBOM T1
	INNER JOIN tblInv T2 ON T1.strPartItemNumber = T2.strPartNumber
	WHERE T1.strPartNumber = @PartNo
END
GO

CREATE PROCEDURE [dbo].[GetTargetsInfoForBrowserInv] (@PartNo AS NVARCHAR(50))
AS
BEGIN
	SELECT T1.decPeriod1 AS Period1
		,T1.decPeriod2 AS Period2
		,T1.decPeriod3 AS Period3
		,T1.decPeriod4 AS Period4
		,T1.decPeriod5 AS Period5
		,T1.decPeriod6 AS Period6
		,T1.decPeriod7 AS Period7
		,T1.decPeriod8 AS Period8
		,T1.decPeriod9 AS Period9
		,T1.decPeriod10 AS Period10
		,T1.decPeriod11 AS Period11
		,T1.decPeriod12 AS Period12
	FROM tblInvT T1
	WHERE T1.strPartNumber = @PartNo
END
GO

CREATE PROCEDURE [dbo].[GetProfitInfoForBrowserInv] (@PartNo AS NVARCHAR(50))
AS
BEGIN
	SELECT CAST(SUM(ISNULL(tblInvoiceDocDT.decLineTotExc, 0)) AS NUMERIC(16, 2)) AS Revenue
		,CAST(SUM(ISNULL(tblInvoiceDocDT.decCOGS, 0)) AS NUMERIC(16, 2)) AS Cost
		,CAST(SUM(ISNULL(tblInvoiceDocDT.decLineTotExc, 0)) AS NUMERIC(16, 2)) - CAST(SUM(ISNULL(tblInvoiceDocDT.decCOGS, 0)) AS NUMERIC(16, 2)) AS GrossProfit
		,DATENAME(YEAR, tblInvoiceDoc.dteJournalDate) AS [Year]
		,DATENAME(MONTH, tblInvoiceDoc.dteJournalDate) AS [Month]
		,CASE 
			WHEN (SUM(ISNULL(tblInvoiceDocDT.decLineTotExc, 0)) <> 0)
				THEN CAST((SUM(ISNULL(tblInvoiceDocDT.decLineTotExc, 0)) - SUM(ISNULL(tblInvoiceDocDT.decCOGS, 0))) / SUM(ISNULL(tblInvoiceDocDT.decLineTotExc, 0)) AS NUMERIC(16, 2)) * 100
			ELSE 0
			END AS GrossProfitPercentage
		,CAST(DATENAME(YEAR, tblInvoiceDoc.dteJournalDate) + '/' + DATENAME(MONTH, tblInvoiceDoc.dteJournalDate) + '/01' AS SMALLDATETIME) AS [DATE]
		,tblInvoiceDocDT.strLocation AS [Location]
	FROM tblInvoiceDocDT
	INNER JOIN tblInvoiceDoc ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
	LEFT JOIN tblInvTrackingDT ON tblInvTrackingDT.strPartNumber = tblInvoiceDocDT.strPartNumber
		AND tblInvTrackingDT.strSource = tblInvoiceDocDT.strInvDocID
		AND tblInvTrackingDT.intLineNo = tblInvoiceDocDT.intLineNo
	WHERE tblInvoiceDocDT.strPartNumber = @PartNo
	GROUP BY tblInvoiceDocDT.strLocation
		,DATENAME(YEAR, tblInvoiceDoc.dteJournalDate)
		,DATENAME(MONTH, tblInvoiceDoc.dteJournalDate)
		,CAST(DATENAME(YEAR, tblInvoiceDoc.dteJournalDate) + '/' + DATENAME(MONTH, tblInvoiceDoc.dteJournalDate) + '/01' AS SMALLDATETIME)
	ORDER BY DATE
END
GO

CREATE PROCEDURE [dbo].[GetTransactionInfoForBrowserInv] (@PartNo AS NVARCHAR(50))
AS
BEGIN
	SELECT tblInvTrackingDT.strPartNumber
		,tblInv.strDesc
		,tblInvTracking.dteJournalDate AS [Date]
		,tblInvTracking.intModule AS Module
		,tblInvTracking.lngJourID AS Journal
		,(
			CASE 
				WHEN tblInvTracking.strSource = 'Stock Count'
					AND (
						SELECT ISNULL(CONCAT (
									'SC/'
									,strAdjDocID
									), tblInvTracking.strSource)
						FROM tblInvAdjDoc
						WHERE tblInvTracking.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
						) IS NOT NULL
					THEN (
							SELECT ISNULL(CONCAT (
										'SC/'
										,strAdjDocID
										), tblInvTracking.strSource)
							FROM tblInvAdjDoc
							WHERE tblInvTracking.lngInvTrackID = tblInvAdjDoc.lngInvTrackID
							)
				ELSE tblInvTracking.strSource
				END
			) AS Document
		,tblInvTrackingDT.decQtyIn AS QuantityIn
		,tblInvTrackingDT.decQtyOut AS QuantityOut
		,tblInvTrackingDT.decValueIn AS ValueIn
		,tblInvTrackingDT.decValueOut AS ValueOut
		,CASE 
			WHEN tblInvTracking.strSource LIKE 'IAJ%'
				THEN ISNULL((
							SELECT ADJ.bitRevaluation
							FROM tblInvAdjDoc ADJ
							WHERE ADJ.strAdjDocID = tblInvTracking.strSource
								AND ISNULL(bitStockCount, CAST(0 AS BIT)) = 0
							), CAST(0 AS BIT))
			ELSE CAST(0 AS BIT)
			END AS IsRevaluation
	FROM tblInvTrackingDT
	INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID
	INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
	WHERE (tblInvTrackingDT.strPartNumber = @PartNo)
	ORDER BY tblInvTracking.lngJourID
		,[Date]
		,Document
END
GO

CREATE PROCEDURE [dbo].[GetPurchaseOrdersInfoForBrowserInv] (
	@PartNo AS NVARCHAR(50)
	,@VendNumber AS NVARCHAR(50)
	)
AS
BEGIN
	SELECT T3.strPartNumber
		,T2.strBuyUnit AS Unit
		,T3.strDesc
		,T1.strOrdPDocID AS Document
		,T2.decBuyQty AS OrderQty
		,T2.decBuyQtyRemain AS RemainingQty
		,T3.decSumOnOrder AS [ON_ORDER_SUPPLIER]
		,T2.decPriceEaExc AS UnitPrice
		,T4.strTaxCode AS TaxCode
		,(T2.decBuyQtyRemain * T2.decPriceEaExc) AS ValueRemaining
		,T1.decSubTotal AS TotalOrderValue
		,T2.strLocation AS [Location]
		,T1.dteJournalDate AS [Date]
		,T1.strStatusTypeCode AS [Status]
		,T1.strVendName AS VendNumber
		,T1.strReference AS Reference
		,T5.strVendDesc AS VendName
		,T1.dteRequired AS RequiredDate
		,T1.bitCleared AS Cleared
	FROM tblOrderDocP T1
	INNER JOIN tblOrderDocPDT T2 ON T1.strOrdPDocID = T2.strOrdPDocID
	INNER JOIN tblInv T3 ON T2.strPartNumber = T3.strPartNumber
	INNER JOIN tblTaxCodeExt T4 ON T2.strTaxCode = T4.strTaxCode
	INNER JOIN tblVendors T5 ON T1.strVendName = T5.strVendName
	--WHERE T3.strPartNumber = @PartNo
		--AND T1.intDocType = 1
		--AND (ISNULL(@VendNumber,'')='' OR T5.strVendName = @VendNumber)
		--AND T5.strVendName = CASE WHEN len(@VendNumber) > 0 THEN @VendNumber ELSE T5.strVendName END
	ORDER BY T1.dteSystemDate,Document
END
GO

CREATE PROCEDURE [dbo].[GetPurchaseInfoForBrowserInv] (
	@PartNo AS NVARCHAR(50)
	,@VendNumber AS NVARCHAR(50)
	)
AS
BEGIN
	SELECT tblInvoiceDocP.strInvPDocID AS Document
		,tblInvoiceDocP.dteJournalDate AS [Date]
		,tblInvoiceDocP.strVendName AS VendNumber
		,tblVendors.strVendDesc AS VendName
		,tblInvoiceDocP.strVendInvNo AS VendInvNo
		,tblInvoiceDocP.strReference AS Reference
		,CASE 
			WHEN (tblInv.intType = 1)
				THEN 'Stock Item'
			ELSE 'Service Item'
			END AS [Type]
		,tblInv.strCategory AS Category
		,tblInv.strAcctSet AS AccountSet
		,tblInvoiceDocPDT.strLocation AS [Location]
		,tblInvoiceDocPDT.decBuyQty AS Quantity
		,tblInvoiceDocPDT.decEaIncTax AS UnitPrice
		,tblInvoiceDocPDT.decLineDiscAmt AS LineDiscAmount
		,tblInvoiceDocPDT.decPriceEaExc AS UnitPriceDiscount
		,tblInvoiceDocPDT.decLineTaxAmt AS TaxAmount
		,tblInvoiceDocPDT.decLineTotExc AS LineTotalExc
		,tblInvoiceDocPDT.decTotIncTax AS LineTotalInc
	FROM tblInvoiceDocPDT
	INNER JOIN tblInvoiceDocP ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocP.strInvPDocID
	INNER JOIN tblVendors ON tblInvoiceDocP.strVendName = tblVendors.strVendName
	INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocPDT.strPartNumber = tblInv.strPartNumber
		AND tblInvoiceDocPDT.strLocation = tblInv.strLocName
	WHERE tblInvoiceDocPDT.strPartNumber = @PartNo
		--AND tblInvoiceDocP.dteJournalDate BETWEEN '" & dtpFrom.Value.ToString("yyyy-MM-dd 00:00:00") & "' AND '" & dtpTo.Value.ToString("yyyy-MM-dd 23:58:59") & "'   
		AND tblVendors.strVendName = CASE 
			WHEN LEN(@VendNumber) > 0
				THEN @VendNumber
			ELSE tblVendors.strVendName
			END
	ORDER BY [Date]
		,Document
END
GO


CREATE PROCEDURE [dbo].[GetPricelistDataForPricelistTab] (@PartNo AS NVARCHAR(50))
AS
BEGIN
	SELECT tblInvPrice.strPricelist AS Pricelist
		,tblInvPrice.decSelling AS Selling
		,tblInvPrice.strUnit AS Unit
		,tblPriceListsByDate.dteStartDate AS StartDate
		,tblPriceListsByDate.dteFinishDate AS FinishDate
	FROM tblInvPrice
	INNER JOIN tblPriceListsByDate ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
	WHERE strPartNumber = @PartNo
END
GO

CREATE PROCEDURE [dbo].[GetStockAgeInfoForBrowserInv] (
	@PartNo AS NVARCHAR(50)
	,@UserName AS NVARCHAR(50)
	,@ToDate AS DATE
	)
AS
BEGIN
	SELECT Z.dteJournalDate AS JournalDate
		,SUM(Z.SumValue) AS SumValue
		,SUM(Z.SumQty) AS SumQty
	FROM (
		SELECT ISNULL((
					SELECT MIN(tblInvTracking.dteJournalDate)
					FROM tblInvTracking
					INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
					WHERE tblInvTrackingDT.bitService = 0
						AND tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
					), @ToDate) AS dteJournalDate
			,decSumOpenValue AS SumValue
			,decSumOpenQty AS SumQty
		FROM tblInv
		WHERE (strPartNumber = @PartNo)
			AND (
				tblInv.strCategory IN (
					SELECT strCategory
					FROM tblInvCat
					WHERE strCategory IN (
							SELECT tblInvCat.strCategory
							FROM tblInvCat
							LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(tblInvCatSec.strCategory)
										FROM tblInvCatSec
										WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblInvCatSec.strCategory)
											FROM tblInvCatSec
											WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
											), 0) > 0
									AND tblInvCatSec.strUserName = @UserName
									)
							)
					)
				)
		
		UNION ALL
		
		SELECT tblInvTracking.dteJournalDate
			,SUM(tblInvTrackingDT.decValue) AS SumValue
			,SUM(tblInvTrackingDT.decQty) AS SumQty
		FROM tblInvTracking
		INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
		INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber
		WHERE (tblInvTrackingDT.bitService = 0)
			AND (tblInvTrackingDT.strPartNumber = @PartNo)
			AND (
				tblInv.strCategory IN (
					SELECT strCategory
					FROM tblInvCat
					WHERE strCategory IN (
							SELECT tblInvCat.strCategory
							FROM tblInvCat
							LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(tblInvCatSec.strCategory)
										FROM tblInvCatSec
										WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblInvCatSec.strCategory)
											FROM tblInvCatSec
											WHERE tblInvCatSec.strCategory = tblInvCat.strCategory
											), 0) > 0
									AND tblInvCatSec.strUserName = @UserName
									)
							)
					)
				)
		GROUP BY tblInvTracking.dteJournalDate
		) Z
	WHERE Z.dteJournalDate <= @ToDate
	GROUP BY Z.dteJournalDate
	ORDER BY Z.dteJournalDate
END
GO

CREATE PROCEDURE [dbo].[GetSalesOrderInfoForBrowserInv] (
	@PartNo AS NVARCHAR(50)
	,@CustNumber AS NVARCHAR(50)
	)
AS
BEGIN
	SELECT T1.strOrdDocID AS Document
		,T2.strPartNumber
		,T2.strPartDesc
		,T2.decQty AS [OrderQty]
		,T2.decQtyRemaining AS [RemainingQty]
		,T2.decQty - T2.decQtyRemaining AS [ShippedQty]
		,T1.strReference AS Reference
		,T1.strSalesName AS [SalesRep]
		,T1.dteJournalDate AS [OrderDate]
		,T1.dteRequired AS [RequiredDate]
		,T1.strCustName AS CustNumber
		,T1.strUserName AS Username
		,'Quote Order' AS Method
		,T3.strCategory AS Category
		,T2.decPriceEaExc AS UnitPriceExc
		,T2.decLineTotExc AS LineTotalExc
		,T2.decLineTaxAmt AS LineTax
		,T2.decLineTaxAmt + T2.decLineTotExc AS [TotalInclVat]
		,CASE 
			WHEN (T1.bitCleared = 1)
				THEN 'Cleared'
			ELSE 'Open'
			END AS STATUS
		,T3.strAcctSet
		,T2.strLocation AS [Location]
		,T3.strField1 AS ItemAdd1
		,T3.strField2 AS ItemAdd2
		,T3.strField3 AS ItemAdd3
		,T3.strField4 AS ItemAdd4
		,T3.strField5 AS ItemAdd5
		,T3.strField6 AS ItemAdd6
		,T1.strField1 AS Header1
		,T1.strField2 AS Header2
		,T1.strField3 AS Header3
		,T1.strField4 AS Header4
		,T1.strField5 AS Header5
		,T1.strField6 AS Header6
		,T1.strField7 AS Header7
		,T1.strField8 AS Header8
		,T1.strField9 AS Header9
		,T1.strField10 AS Header10
		,T1.strField11 AS Header11
		,T1.strField12 AS Header12
		,T2.strLineField1 AS Line1
		,T2.strLineField2 AS Line2
		,T2.strLineField3 AS Line3
		,T2.strLineField4 AS Line4
		,T2.strLineField5 AS Line5
		,T2.strLineField6 AS Line6
		,T2.strLineField7 AS Line7
		,T2.strLineField8 AS Line8
		,T2.strLineField9 AS Line9
		,T2.strLineField10 AS Line10
		,T2.strLineField11 AS Line11
		,T2.strLineField12 AS Line12
		,T2.decLineDiscPerc
		,T2.decLineDiscAmt AS LineDiscAmount
		,T2.decLineDiscAmtF
		,T2.strCurrency
		,T2.decPriceEaExcF
		,T2.decLineTotExcF
		,T2.decLineTaxAmtF
		,CASE 
			WHEN (T2.decQtyRemaining = 0)
				THEN 'Fully Shipped'
			ELSE 'Outstanding'
			END AS [OrderStatus]
		,T4.strCustDesc AS CustName
		,t1.bitCleared AS Cleared
	FROM dbo.tblOrderDoc T1
	INNER JOIN dbo.tblOrderDocDT T2 ON T1.strOrdDocID = T2.strOrdDocID
	INNER JOIN dbo.fnTblInvForLocJoin() T3 ON T2.strPartNumber = T3.strPartNumber
		AND T2.strLocation = T3.strLocName
	INNER JOIN dbo.tblCustomers T4 ON T4.strCustName = T1.strCustName
	WHERE (
			T3.intType IN (
				1
				,4
				,11
				)
			)
		AND (T1.intDocType = 1)
		AND T2.strPartNumber = @PartNo
		AND T4.strCustName = CASE 
			WHEN LEN(@CustNumber) > 0
				THEN @CustNumber
			ELSE T4.strCustName
			END
END
GO

CREATE PROCEDURE [dbo].[GetSalesQuoteInfoForBrowserInv] (
	@PartNo AS NVARCHAR(50)
	,@CustNumber AS NVARCHAR(50)
	)
AS
BEGIN
	SELECT T1.strOrdDocID AS Document
		,T2.strPartNumber
		,T2.strPartDesc
		,T2.decQty AS Quantity
		,T1.strReference AS Reference
		,T1.strSalesName AS SalesPerson
		,T1.dteJournalDate AS [Date]
		,T1.dteRequired AS RequiredDate
		,T1.strCustName AS CustNumber
		,T1.strUserName AS Username
		,'Quote Order' AS Method
		,T3.strCategory AS Category
		,T2.decPriceEaExc AS UnitPriceExc
		,T2.decLineTotExc AS LineTotalExc
		,T2.decLineTaxAmt AS LineTax
		,T2.decLineTaxAmt + T2.decLineTotExc AS [Total Incl Vat]
		,CASE 
			WHEN (T1.bitCleared = 1)
				THEN 'Cleared'
			ELSE 'Open'
			END AS STATUS
		,T3.strAcctSet
		,T2.strLocation AS Location
		,T3.strField1 AS ItemAdd1
		,T3.strField2 AS ItemAdd2
		,T3.strField3 AS ItemAdd3
		,T3.strField4 AS ItemAdd4
		,T3.strField5 AS ItemAdd5
		,T3.strField6 AS ItemAdd6
		,T1.strField1 AS Header1
		,T1.strField2 AS Header2
		,T1.strField3 AS Header3
		,T1.strField4 AS Header4
		,T1.strField5 AS Header5
		,T1.strField6 AS Header6
		,T1.strField7 AS Header7
		,T1.strField8 AS Header8
		,T1.strField9 AS Header9
		,T1.strField10 AS Header10
		,T1.strField11 AS Header11
		,T1.strField12 AS Header12
		,T2.strLineField1 AS Line1
		,T2.strLineField2 AS Line2
		,T2.strLineField3 AS Line3
		,T2.strLineField4 AS Line4
		,T2.strLineField5 AS Line5
		,T2.strLineField6 AS Line6
		,T2.strLineField7 AS Line7
		,T2.strLineField8 AS Line8
		,T2.strLineField9 AS Line9
		,T2.strLineField10 AS Line10
		,T2.strLineField11 AS Line11
		,T2.strLineField12 AS Line12
		,T2.strLocation
		,T4.strCustDesc AS CustName
	FROM dbo.tblOrderDoc T1
	INNER JOIN dbo.tblOrderDocDT T2 ON T1.strOrdDocID = T2.strOrdDocID
	INNER JOIN dbo.fnTblInvForLocJoin() T3 ON T2.strPartNumber = T3.strPartNumber
		AND T2.strLocation = T3.strLocName
	INNER JOIN tblCustomers T4 ON T1.strCustName = T4.strCustName
	WHERE (
			T3.intType IN (
				1
				,4
				,11
				)
			)
		AND (T1.intDocType = 2)
		AND T3.strPartNumber = @PartNo
		--AND T1.dteJournalDate BETWEEN '" & dtpFrom.Value.ToString("yyyy-MM-dd 00:00:00") & "'  
		-- AND '" & dtpTo.Value.ToString("yyyy-MM-dd 00:00:00") & "'  
		AND T4.strCustName = CASE 
			WHEN LEN(@CustNumber) > 0
				THEN @CustNumber
			ELSE T4.strCustName
			END
	
	UNION ALL
	
	SELECT T1.strOrdDocID AS [Doc Number]
		,T2.strPartNumber AS [Item Code]
		,T3.strDesc AS [Item Description]
		,T2.decQty AS Qty
		,T1.strReference
		,T1.strSalesName AS [Rep Name]
		,T1.dteJournalDate AS [Quote Date]
		,T1.dteRequired AS [Required Date]
		,T1.strSoldTo AS Customer
		,T1.strUserName AS Agent
		,'Quote System' AS Method
		,T3.strCategory AS [Item Category]
		,T2.decPriceEaExc AS [Price Excl Vat]
		,T2.decLineTotExc AS [Total Excl Vat]
		,T2.decLineTaxAmt AS Vat
		,T2.decLineTaxAmt + T2.decLineTotExc AS [Total Incl Vat]
		,CASE 
			WHEN (T1.bitCleared = 1)
				THEN 'Cleared'
			ELSE 'Open'
			END AS STATUS
		,T3.strAcctSet
		,T2.strLocation
		,T3.strField1 AS ItemAdd1
		,T3.strField2 AS ItemAdd2
		,T3.strField3 AS ItemAdd3
		,T3.strField4 AS ItemAdd4
		,T3.strField5 AS ItemAdd5
		,T3.strField6 AS ItemAdd6
		,T1.strField1 AS Header1
		,T1.strField2 AS Header2
		,T1.strField3 AS Header3
		,T1.strField4 AS Header4
		,T1.strField5 AS Header5
		,T1.strField6 AS Header6
		,T1.strField7 AS Header7
		,T1.strField8 AS Header8
		,T1.strField9 AS Header9
		,T1.strField10 AS Header10
		,T1.strField11 AS Header11
		,T1.strField12 AS Header12
		,T2.strLineField1 AS Line1
		,T2.strLineField2 AS Line2
		,T2.strLineField3 AS Line3
		,T2.strLineField4 AS Line4
		,T2.strLineField5 AS Line5
		,T2.strLineField6 AS Line6
		,T2.strLineField7 AS Line7
		,T2.strLineField8 AS Line8
		,T2.strLineField9 AS Line9
		,T2.strLineField10 AS Line10
		,T2.strLineField11 AS Line11
		,T2.strLineField12 AS Line12
		,T2.strLocation
		,T4.strCustDesc
	FROM tblOrderDocQ T1
	INNER JOIN tblOrderDocQDT T2 ON T1.strOrdDocID = T2.strOrdDocID
	INNER JOIN dbo.fnTblInvForLocJoin() T3 ON T2.strPartNumber = T3.strPartNumber
		AND T2.strLocation = T3.strLocName
	INNER JOIN tblCustomers T4 ON T1.strCustName = T4.strCustName
	WHERE (
			T3.intType IN (
				1
				,4
				,11
				)
			)
		AND T3.strPartNumber = @PartNo
		--AND T1.dteJournalDate BETWEEN '" & dtpFrom.Value.ToString("yyyy-MM-dd 00:00:00") & "'  
		-- AND '" & dtpTo.Value.ToString("yyyy-MM-dd 00:00:00") & "'  
		AND T4.strCustName = CASE 
			WHEN LEN(@CustNumber) > 0
				THEN @CustNumber
			ELSE T4.strCustName
			END
END
GO

CREATE PROCEDURE [dbo].[GetInfoDataForBrowserInv] (@PartNo AS NVARCHAR(50))
AS
BEGIN
	SELECT strPartNumber AS PartNumber
		,strDesc AS [Desc]
		,intType AS [Type]
		,decCostOnPO AS CostOnPO
		,bitUseLPPOnPO AS UseLPPOnPO
		,strCategory AS Category
		,strAcctSet AS AcctSet
		,dteDateLastSale AS DateLastSale
		,dteLastPurchase AS LastPurchase
		,dteLastUpdated AS LastUpdated
		,decSumOnHand AS SumOnHand
		,decSumValue AS SumValue
		,decSumOnOrder AS SumOnOrder
		,decSumAlloc AS SumAlloc
		,(decSumAlloc * decLastPPUnit) AS SumAllocValue
		,CASE 
			WHEN (inttype = 1)
				THEN 'Stock Item'
			ELSE CASE 
					WHEN (inttype = 11)
						THEN 'Buyout Item'
					ELSE 'Service Item'
					END
			END AS StockType
		,decStandardCost AS StandardCost
		,intReorderQty AS ReorderQty
		,decLastPPUnit AS LastPPUnit
		,strField1 AS Field1
		,strField2 AS Field2
		,strField3 AS Field3
		,strField4 AS Field4
		,strField5 AS Field5
		,strField6 AS Field6
		,strBarCode AS BarCode
		,strBarCode2 AS BarCode2
		,intBOMQty AS BOMQty
		,strAddInfo AS AddInfo
		,CASE 
			WHEN (bitInactive = 1)
				THEN 'Inactive'
			ELSE 'Active'
			END AS [Status]
		,decDefSaleQty AS DefSaleQty
		,strExtendedDesc AS ExtendedDesc
		,strStockUnit AS StockUnit
		,strBuyUnit AS BuyUnit
		,decBuyToStock AS BuyToStock
		,strSellUnit AS SellUnit
		,decSellFromStock AS SellFromStock
		,decRepairCharge AS RepairCharge
		,decLastManCost AS ManufacturedCost
		,ISNULL((
				SELECT ST.strDesc
				FROM tblInvSerialTypes ST
				WHERE ST.strInvSerialType = tblInv.strInvSerialType
				), '') AS SerialLotDesc
		,ISNULL((
				SELECT VC.strDescription
				FROM tblVoucherCodes VC
				WHERE VC.strVoucherCode = tblInv.strVoucherCode
				), '') AS VoucherDesc
		,ISNULL((
				SELECT DP.strDescription
				FROM tblDimensionProfiles DP
				WHERE DP.strDimProCode = tblInv.strDimProCode
				), '') AS DimensionProfileDesc
		,decMass AS Mass
		,decVolumetricWeight AS VolumetricWeight
		,ISNULL(strUnitOfMeasure, '') AS UnitOfMeasure
		,ISNULL(strSubCategory, '') AS SubCategory
	FROM dbo.fnTblInvLocationsAll() tblInv
	WHERE intType IN (
			1
			,4
			,11
			)
		AND strPartNumber = @PartNo
END
GO

CREATE PROCEDURE [dbo].[GetPriceListInfo] (@partNumber AS NVARCHAR(50))
AS
BEGIN
	SELECT tblInvPrice.strPartNumber AS PartNumber
		,tblInvPrice.strPricelist AS Pricelist
		,tblInvPrice.decSelling AS Selling
		,CONVERT(DATE, tblPriceListsByDate.dteStartDate) AS StartDate
		,CONVERT(DATE, tblPriceListsByDate.dteFinishDate) AS EndDate
		,tblPriceListsByDate.uidPriceBasedID AS GuidData
	FROM tblInvPrice
	INNER JOIN tblPriceListsByDate ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
	WHERE strPartNumber = @partNumber
	ORDER BY tblInvPrice.strPricelist
END
GO

CREATE PROCEDURE [dbo].[GetInventoryUpsells] (@PartNumber VARCHAR(MAX))
AS
BEGIN
	SELECT tblInvUpsell.strPartItemNumber AS PartNumber
		,ISNULL(tblInv.strDesc, '') AS Description
		,tblInvUpsell.intQtyToUse AS QtyToUse
		,tblInvUpsell.bitUseProportionateQty AS IsUseProportionateQty
		,tblInvUpsell.bitSalesInvoice AS IsSalesInvoice
		,tblInvUpsell.bitSalesOrder AS IsSalesOrder
		,tblInvUpsell.bitSalesQuote AS IsSalesQuote
		,tblInvUpsell.bitFreehandQuote AS IsFreehandQuote
		,tblInvUpsell.bitSalesLayby AS IsSalesLayby
	FROM tblInvUpsell
	LEFT JOIN tblInv ON tblInvUpsell.strPartItemNumber = tblInv.strPartNumber
	WHERE (tblInvUpsell.strPartNumber = @PartNumber)
	ORDER BY tblInvUpsell.strPartItemNumber
END
GO

CREATE PROCEDURE [dbo].[GetBrowserInvTrends] (
	@PartNumber NVARCHAR(50)
	,@FromDate DATETIME
	,@ToDate DATETIME
	)
AS
BEGIN
	SELECT DATEPART(yyyy, tblInvoiceDoc.dteJournalDate) AS Year
		,DATEPART(m, tblInvoiceDoc.dteJournalDate) AS Month
		,ISNULL(SUM(tblInvoiceDocDT.decLineTotExc), 0) AS TotalSales
	FROM tblInvoiceDoc
	INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
	WHERE (tblInvoiceDocDT.strPartNumber = @PartNumber)
		AND (
			tblInvoiceDoc.dteJournalDate BETWEEN @FromDate
				AND @ToDate
			)
		AND (tblInvoiceDoc.bitHistoryTrans = 0)
	GROUP BY DATEPART(yyyy, tblInvoiceDoc.dteJournalDate)
		,DATEPART(m, tblInvoiceDoc.dteJournalDate)
	ORDER BY DATEPART(yyyy, tblInvoiceDoc.dteJournalDate)
		,DATEPART(m, tblInvoiceDoc.dteJournalDate)
END
GO

CREATE PROCEDURE GetInvExtOpenQtyAndOpenValue
@PartNumber AS NVARCHAR(50)
AS
BEGIN
SELECT ISNULL(SUM(decOpenQty), 0) AS OpenQty
, ISNULL(SUM(decOpenValue), 0) AS OpenValue
FROM tblInvExt
WHERE strPartNumber = @PartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvActivity] (
@PartNumber NVARCHAR(50)
,@StartDate DATETIME
,@EndDate DATETIME
)
AS
BEGIN
SELECT Z.Month
,SUM(Z.PurchaseQty) AS PurchaseQty
,SUM(Z.PurchaseValue) AS PurchaseValue
,SUM(Z.AdjustmentQty) AS AdjustmentQty
,SUM(Z.SalesQty) AS SalesQty
,SUM(Z.OnHand) AS OnHand
,SUM(Z.OnHandValue) AS OnHandValue
,ROUND(CASE 
WHEN SUM(Z.OnHandValue) = 0
OR SUM(Z.OnHand) = 0
THEN 0
ELSE CASE 
WHEN SUM(Z.OnHandValue) > 0
THEN SUM(Z.OnHandValue) / SUM(Z.OnHand)
ELSE 0
END
END, 2) AS AverageCost
,SUM(Z.SalesValue) AS SalesValue
FROM (
SELECT DATEPART(YEAR, tblInvTracking.dteJournalDate) AS [Year]
,DATEPART(MONTH, tblInvTracking.dteJournalDate) AS [MonthNo]
,CONVERT(NVARCHAR, DATEPART(YEAR, tblInvTracking.dteJournalDate)) + ' ' + DATENAME(MONTH, tblInvTracking.dteJournalDate) AS [Month]
,SUM(tblInvTrackingDT.decQty) AS [PurchaseQty]
,SUM(tblInvTrackingDT.decValue) AS [PurchaseValue]
,0 AS [AdjustmentQty]
,0 AS [SalesQty]
,SUM(tblInvTrackingDT.decQty) AS [OnHand]
,SUM(tblInvTrackingDT.decValue) AS [OnHandValue]
,0 AS [SalesValue]
FROM tblInvTrackingDT
INNER JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
WHERE tblInvTrackingDT.strPartNumber = @PartNumber
AND intModule IN (
1
,3
,6
)
AND tblInvTracking.dteJournalDate BETWEEN @StartDate
AND @EndDate
GROUP BY DATENAME(MONTH, tblInvTracking.dteJournalDate)
,YEAR(tblInvTracking.dteJournalDate)
,MONTH(tblInvTracking.dteJournalDate)
UNION ALL
SELECT DATEPART(YEAR, tblInvTracking.dteJournalDate) AS [Year]
,DATEPART(MONTH, tblInvTracking.dteJournalDate) AS [MonthNo]
,CONVERT(NVARCHAR, DATEPART(YEAR, tblInvTracking.dteJournalDate)) + ' ' + DATENAME(MONTH, tblInvTracking.dteJournalDate) AS [Month]
,0 AS [PurchaseQty]
,0 AS [PurchaseValue]
,0 AS [AdjustmentQty]
,SUM(tblInvTrackingDT.decQty) AS [SalesQty]
,SUM(tblInvTrackingDT.decQty) AS [OnHand]
,SUM(tblInvTrackingDT.decValue) AS [OnHandValue]
,SUM(tblInvTrackingDT.decValue) AS [SalesValue]
FROM tblInvTrackingDT
INNER JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
WHERE tblInvTrackingDT.strPartNumber = @PartNumber
AND intModule = 2
AND tblInvTracking.dteJournalDate BETWEEN @StartDate
AND @EndDate
GROUP BY DATENAME(MONTH, tblInvTracking.dteJournalDate)
,YEAR(tblInvTracking.dteJournalDate)
,MONTH(tblInvTracking.dteJournalDate)
UNION ALL
SELECT DATEPART(YEAR, tblInvTracking.dteJournalDate) AS [Year]
,DATEPART(MONTH, tblInvTracking.dteJournalDate) AS [MonthNo]
,CONVERT(NVARCHAR, DATEPART(YEAR, tblInvTracking.dteJournalDate)) + ' ' + DATENAME(MONTH, tblInvTracking.dteJournalDate) AS [Month]
,0 AS [Purchase Qty]
,0 AS [PurchaseValue]
,SUM(tblInvTrackingDT.decQty) AS [AdjustmentQty]
,0 AS [SalesQty]
,SUM(tblInvTrackingDT.decQty) AS [OnHand]
,SUM(tblInvTrackingDT.decValue) AS [OnHandValue]
,0 AS [SalesValue]
FROM tblInvTrackingDT
INNER JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
WHERE tblInvTrackingDT.strPartNumber = @PartNumber
AND intModule = 4
AND tblInvTracking.dteJournalDate BETWEEN @StartDate
AND @EndDate
GROUP BY DATENAME(MONTH, tblInvTracking.dteJournalDate)
,YEAR(tblInvTracking.dteJournalDate)
,MONTH(tblInvTracking.dteJournalDate)
) Z
GROUP BY Z.Year
,Z.MonthNo
,Z.Month
ORDER BY Z.Year
,Z.MonthNo
END
GO

CREATE PROCEDURE [dbo].[IsDimensionExists] (@PartNumber NVARCHAR(50))
AS
BEGIN
	SELECT CASE 
			WHEN COUNT(DP.strDimProCode) > 0
				THEN CAST(1 AS BIT)
			ELSE CAST(0 AS BIT)
			END
	FROM tblInv INV
	INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType
	INNER JOIN tblDimensionProfiles DP ON IST.strDimProCode = DP.strDimProCode
	WHERE INV.strPartNumber = @PartNumber
END
GO



CREATE PROCEDURE [dbo].[GetManOverheadInfo] (@ManBOMID BIGINT)
AS
BEGIN
	SELECT tblManBOMCompOverhead.strWCCode AS WCCode
		,tblManWorkCentre.strDesc AS WCDesc
		,tblManBOMCompOverhead.intGLNumber AS GLNumber
		,tblAccounts.strDesc AS AccDesc
		,tblManBOMCompOverhead.intDept AS Dept
		,tblManBOMCompOverhead.uidCenterID AS CenterID
		,tblManBOMCompOverhead.decAmount AS Amount
		,tblCenters.strLvl1 AS Lvl1
		,tblCenters.strLvl2 AS Lvl2
		,tblCenters.strLvl3 AS Lvl3
		,tblCenters.strLvl4 AS Lvl4
		,tblCenters.strLvl5 AS Lvl5
	FROM tblManBOMCompOverhead
	INNER JOIN tblManWorkCentre ON tblManBOMCompOverhead.strWCCode = tblManWorkCentre.strWCCode
	INNER JOIN tblAccounts ON tblManBOMCompOverhead.intGLNumber = tblAccounts.intGLNumber
	LEFT JOIN tblCenters ON tblManBOMCompOverhead.uidCenterID = tblCenters.uidCenterID
	WHERE tblManBOMCompOverhead.lngManBOMID = @ManBOMID
	ORDER BY tblManBOMCompOverhead.strWCCode
		,tblManBOMCompOverhead.intLineNo
END
GO

CREATE PROCEDURE [dbo].[GetManMachineryInfo] (@ManBOMID BIGINT)
AS
BEGIN
	SELECT tblManBOMCompMach.strWCCode AS WCCode
		,tblManWorkCentre.strDesc AS WCDesc
		,tblManBOMCompMach.strMachCode AS MachCode
		,tblManMachinery.strDesc AS MachDesc
		,tblManBOMCompMach.decVariableHours AS VariableHours
		,tblManBOMCompMach.decVariableRate AS VariableRate
		,tblManBOMCompMach.decSetupHours AS SetupHours
		,tblManBOMCompMach.decSetupRate AS SetupRate
		,tblManBOMCompMach.decBreakdownHours AS BreakdownHours
		,tblManBOMCompMach.decBreakdownRate AS BreakdownRate
	FROM tblManBOMCompMach
	INNER JOIN tblManWorkCentre ON tblManBOMCompMach.strWCCode = tblManWorkCentre.strWCCode
	INNER JOIN tblManMachinery ON tblManBOMCompMach.strMachCode = tblManMachinery.strMachCode
	WHERE tblManBOMCompMach.lngManBOMID = @ManBOMID
	ORDER BY tblManBOMCompMach.strWCCode
		,tblManBOMCompMach.intLineNo
END
GO

CREATE PROCEDURE [dbo].[GetManLabourInfo] (@ManBOMID BIGINT)
AS
BEGIN
	SELECT tblManBOMCompLab.strWCCode AS WCCode
		,tblManWorkCentre.strDesc AS WCDesc
		,tblManBOMCompLab.strLabCode AS LabCode
		,tblManLabour.strDesc AS LabDesc
		,tblManBOMCompLab.decVariableHours AS VariableHours
		,tblManBOMCompLab.decVariableRate AS VariableRate
		,tblManBOMCompLab.decSetupHours AS SetupHours
		,tblManBOMCompLab.decSetupRate AS SetupRate
		,tblManBOMCompLab.decBreakdownHours AS BreakdownHours
		,tblManBOMCompLab.decBreakdownRate AS BreakdownRate
	FROM tblManBOMCompLab
	INNER JOIN tblManWorkCentre ON tblManBOMCompLab.strWCCode = tblManWorkCentre.strWCCode
	INNER JOIN tblManLabour ON tblManBOMCompLab.strLabCode = tblManLabour.strLabCode
	WHERE tblManBOMCompLab.lngManBOMID = @ManBOMID
	ORDER BY tblManBOMCompLab.strWCCode
		,tblManBOMCompLab.intLineNo
END
GO

CREATE PROCEDURE [dbo].[GetManufacturingInfo] (@PartNumber NVARCHAR(50))
AS
BEGIN
	SELECT TOP 1 lngManBOMID AS ManBOMID
		,strDesc AS Desciption
		,strLocation AS Location
		,dteRevDate AS RevDate
		,decQty AS Qty
	FROM tblManBOM
	WHERE strPartNumber = @PartNumber
		AND bitInactive = 0
		AND bitRevision = 0
	ORDER BY dteRevDate DESC
		,lngManBOMID
END
GO

CREATE PROCEDURE [dbo].[GetManInventory] (@ManBOMID NVARCHAR(50))
AS
BEGIN
	SELECT tblManBOMCompInv.strWCCode AS WCCode
		,tblManWorkCentre.strDesc AS WCDesc
		,tblManBOMCompInv.strPartNumber AS PartNumber
		,tblInv.strDesc AS PartDesc
		,tblManBOMCompInv.strLocation AS Location
		,tblManBOMCompInv.decQty AS Qty
		,tblInv.strStockUnit AS Unit
	FROM tblManBOMCompInv
	INNER JOIN tblManWorkCentre ON tblManBOMCompInv.strWCCode = tblManWorkCentre.strWCCode
	INNER JOIN tblInv ON tblManBOMCompInv.strPartNumber = tblInv.strPartNumber
	WHERE tblManBOMCompInv.lngManBOMID = @ManBOMID
	ORDER BY tblManBOMCompInv.strWCCode
		,tblManBOMCompInv.intLineNo
END
GO

CREATE PROCEDURE [dbo].[GetSalesInfoForBrowserInv] (
	@PartNo AS NVARCHAR(50)
	,@CustNumber AS NVARCHAR(50)
	)
AS
BEGIN
	--WARNING! ERRORS ENCOUNTERED DURING SQL PARSING!    
	SELECT tblInvoiceDocDT.strPartNumber AS [ItemCode]
		,tblCustomers.strCustName AS CustNumber
		,tblInvoiceDoc.dteJournalDate AS JournalDate
		,tblInvoiceDoc.strInvDocID AS [Document]
		,tblInvoiceDocDT.decQty AS Quantity
		,CAST(ISNULL(tblInvoiceDocDT.decLineTotExc, 0) AS NUMERIC(16, 2)) AS Revenue
		,CAST(ISNULL(tblInvoiceDocDT.decCOGS, 0) AS NUMERIC(16, 2)) AS Cost
		,CAST(ISNULL(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS, 0) AS NUMERIC(16, 2)) AS Profit
		,CASE 
			WHEN (tblInvoiceDocDT.intType = 1)
				THEN 'Stock Item'
			WHEN (tblInvoiceDocDT.intType = 4)
				THEN 'Service Item'
			ELSE 'Journal Code'
			END AS [ItemType]
		,ISNULL(tblInv.strCategory, '') AS [Category]
		,ISNULL(tblInv.strAcctSet, '') AS [AccountSet]
		,tblInvoiceDoc.strUserName AS [User_Name]
		,tblInvoiceDoc.strSalesName AS [SalesPerson]
		,tblInvoiceDocDT.strLocation AS [Location]
		,tblInvoiceDoc.strReference AS Reference
		,tblInvoiceDocDT.strUnit AS Unit
		,CASE 
			WHEN (tblInvoiceDocDT.decLineTotExc <> 0)
				THEN (CAST(((tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc * 100) AS NUMERIC(16, 2)))
			ELSE 0
			END AS MarginPer
		,tblCustomers.strCustDesc AS CustName
	FROM tblInvoiceDocDT
	INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
	INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
		AND tblInvoiceDocDT.strLocation = tblInv.strLocName
	INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName
	WHERE tblInv.strPartNumber = @PartNo
		--AND tblInvoiceDoc.dteJournalDate BETWEEN '" & dtpFrom.Value.ToString("yyyy-MM-dd 00:00:00") & "'    
		-- AND '" & dtpTo.Value.ToString("yyyy-MM-dd 23:58:59") & "' "    
		AND dbo.tblCustomers.strCustName = CASE 
			WHEN LEN(@CustNumber) > 0
				THEN @CustNumber
			ELSE dbo.tblCustomers.strCustName
			END
	ORDER BY [ItemCode]
		,JournalDate
		,[Document]
END
GO


CREATE PROCEDURE [dbo].[NavigateDocumentByNumberInvTransfer]  
(   
 @DocumentID AS VARCHAR(50),  
 @IsPrevious AS BIT,
 @Type int
)  
AS  
BEGIN  
	IF(@IsPrevious = 1)
	BEGIN
		IF(@Type = 2 OR @Type = 3)
		BEGIN
			IF(@Type = 3)
			BEGIN
				IF(CHARINDEX('ITR', @DocumentID) > 0)
					SELECT MAX(strTrfDocID) FROM tblInvTrfDoc WHERE strTrfDocID < @DocumentID AND bitCleared = 0 AND strTrfDocID LIKE 'ITR%'
				ELSE
					SELECT MAX(strTrfDocID) FROM tblInvTrfDoc WHERE strTrfDocID < @DocumentID AND bitCleared = 0 AND strTrfDocID LIKE 'IBT%'
			END
			ELSE
				SELECT MAX(strTrfDocID) FROM tblInvTrfDoc WHERE strTrfDocID < @DocumentID AND bitCleared = 0 AND strTrfDocID LIKE 'BTR%'
		END
		ELSE
			SELECT TOP 1 strTrfDocID FROM tblInvTrfDoc WHERE strTrfDocID LIKE 'BRC%' AND ISNULL(CAST(RIGHT(strTrfDocID, LEN(strTrfDocID) - 4) AS BIGINT), 0) < CAST(RIGHT(@DocumentID, LEN(@DocumentID) - 4) AS BIGINT) ORDER BY ISNULL(CAST(RIGHT(strTrfDocID, LEN(strTrfDocID) - 4) AS BIGINT), 0) DESC
	END
	ELSE
	BEGIN
		IF(@Type = 2 OR @Type = 3)
		BEGIN
			IF(@Type = 3)
			BEGIN
				IF(CHARINDEX('ITR', @DocumentID) > 0)
					SELECT MIN(strTrfDocID) FROM tblInvTrfDoc WHERE strTrfDocID > @DocumentID AND bitCleared = 0 AND strTrfDocID LIKE 'ITR%'
				ELSE
					SELECT MIN(strTrfDocID) FROM tblInvTrfDoc WHERE strTrfDocID > @DocumentID AND bitCleared = 0 AND strTrfDocID LIKE 'IBT%'
			END
			ELSE
				SELECT MIN(strTrfDocID) FROM tblInvTrfDoc WHERE strTrfDocID > @DocumentID AND bitCleared = 0 AND strTrfDocID LIKE 'BTR%'
		END
		ELSE
			SELECT TOP 1 strTrfDocID FROM tblInvTrfDoc WHERE strTrfDocID LIKE 'BRC%' AND ISNULL(CAST(RIGHT(strTrfDocID, LEN(strTrfDocID) - 4) AS BIGINT), 0) > CAST(RIGHT(@DocumentID, LEN(@DocumentID) - 4) AS BIGINT) ORDER BY ISNULL(CAST(RIGHT(strTrfDocID, LEN(strTrfDocID) - 4) AS BIGINT), 0) ASC
	END
END
GO


CREATE PROCEDURE [dbo].[GetInventoryDataInvTransfer]
(
	@Part AS NVARCHAR(50),
	@BarCode AS NVARCHAR(300),
	@LocNameFrom AS NVARCHAR(20),
	@LocNameto AS NVARCHAR(10),
	@Unit as Nvarchar(MAX)=Null
)
AS
BEGIN	
	SELECT tblInv.strPartNumber AS PartNumber
	,tblInv.strDesc AS [Desc]
	--,tblInv.strStockUnit AS StockUnit
	,tblInv.decLastPPUnit AS LastPPUnit
	,tblInv.decBuyToStock AS BuyToStock
	,tblInv.bitInvSerialType AS IsSerialType
	,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
	,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimension
	,ISNULL((
			SELECT IE.bitInactive
			FROM tblInvExt IE
			WHERE IE.strPartNumber = tblInv.strPartNumber
				AND IE.strLocName = @LocNameto
			), 1) AS IsInactive,
			ISNULL(tblInvUOMs.strFromUnit, tblInv.strStockUnit) AS StockUnit ,
ISNULL(CASE tblInvUOMs.strConversionType 	WHEN 'Multiply' THEN tblInvUOMs.decConversionFactor
ELSE 1 / tblInvUOMs.decConversionFactor END, tblInv.decBuyToStock) AS ConversionFactor ,
ISNULL(tblInvUOMs.strConversionType, 'Multiply') AS ConversionType ,
ISNULL(tblInvUOMs.decConversionFactor, tblInv.decBuyToStock) AS ConversionFactorActual ,
tblInv.intType ,tblInv.strStockUnit AS StockUnitDefault
FROM tblInv
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber	AND tblInvUOMs.bitInactive = 0 
AND tblInvUOMs.strFromUnit =Case When (@Unit Is Not Null) Then @Unit Else (Select top 1 Invsub.strStockUnit from tblInv Invsub where Invsub.strPartNumber=@Part) End
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE (
		tblInv.strPartNumber = @Part
		OR tblInv.strBarCode = @BarCode
		OR tblInv.strBarCode2 = @BarCode
		)
	AND (tblInv.intType = 1)
	AND (tblInv.bitInactive = 0)
	AND (tblInvExt.bitInactive = 0)
	AND (tblInvExt.strLocName = @LocNameFrom)
END

GO


CREATE PROCEDURE GetInventoryExtData
(	@Part AS NVARCHAR(50),
	@LocNameFrom AS NVARCHAR(20)
)
AS
BEGIN
SELECT decValue AS [Value]
	  ,decOnHand AS OnHand
FROM tblInvExt
WHERE strPartNumber = @Part
	AND strLocName = @LocNameFrom
END
GO


CREATE PROCEDURE GetInvTransferSerialType
(
    @PartNumber AS NVARCHAR(100)
)
AS
    BEGIN

        SELECT  tblInv.bitInvSerialType AS IsInvSerialType ,
                ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod ,
                ISNULL(tblInvSerialTypes.intMin, 0) AS [Min] ,
                ISNULL(tblInvSerialTypes.intMax, 0) AS [Max] ,
                ISNULL(tblInvSerialTypes.intFormat, 0) AS [Format] ,
                ISNULL(tblInvSerialTypes.intType, 0) AS [Type] ,				
                ISNULL(tblInvSerialTypes.bitTrackExpiryDate, 0) AS IsTrackExpiryDate ,
                tblInv.strBuyUnit AS BuyUnit,
				ISNULL(tblInvSerialTypes.intExpiryDateAuthTR, 0) AS ExpiryDateAuthTR,
				ISNULL(tblInvSerialTypes.strDimProCode, '') AS DimProCode
        FROM    tblInv
                LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
        WHERE   tblInv.strPartNumber = @PartNumber

END
GO

/*********** Start [GetNextDocNumberInvRepacking] ***********/
CREATE PROCEDURE [dbo].[GetNextDocNumberInvRepacking]
AS
BEGIN
	SELECT ISNULL(MAX(intRepackDocID), 0) + 1 FROM tblInvRepackDoc
END
GO

/*********** Start [NavigateDocumentRepacking] ***********/
CREATE PROCEDURE [dbo].[NavigateDocumentRepacking]
(
	@DocNumber NVARCHAR(100),
	@IsPrevious BIT
)
AS
BEGIN
	IF (@IsPrevious = 1)
		SELECT MAX(strRepackDocID) FROM tblInvRepackDoc WHERE strRepackDocID < @DocNumber ;
	ELSE
		SELECT MIN(strRepackDocID) FROM tblInvRepackDoc WHERE strRepackDocID > @DocNumber ;
END
GO

/*********** Start [GetInvRepackDoc] ***********/
CREATE PROCEDURE [dbo].[GetInvRepackDoc]
(
	@DocNumber NVARCHAR(100)
)
AS
BEGIN
	SELECT 
	  strRepackDocID AS 'RepackDocIDText', 
	  lngJourID AS 'JourID', 
	  dteJournalDate AS 'JournalDate', 
	  strComment AS 'Comment', 
	  decTotalWeightOriginal AS 'TotalWeightOriginal', 
	  decTotalWeightRepackaged AS 'TotalWeightRepackaged', 
	  intDept AS 'Dept', 
	  strRepackagingReasonCode AS 'RepackagingReasonCode', 
	  decTotalCostOriginal AS 'TotalCostOriginal', 
	  decTotalCostRepackaged AS 'TotalCostRepackaged' 
	FROM 
	  tblInvRepackDoc 
	WHERE 
	  strRepackDocID = @DocNumber
END
GO

/*********** Start [GetInvRepackDocEntities] ***********/
CREATE PROCEDURE [dbo].[GetInvRepackDocEntities] (@DocNumber NVARCHAR(100))
AS
BEGIN
	SELECT tblInvRepackDocDT.bitOriginalItem AS 'IsOriginalItem'
		,tblInvRepackDocDT.strPartNumber AS 'Number'
		,tblInv.strdesc AS 'Description'
		,tblInvRepackDocDT.decQty AS 'Quantity'
		,tblInvRepackDocDT.decWeight AS 'UnitWeight'
		,tblInvRepackDocDT.decTotalWeight AS 'TotalWeight'
		,tblInv.bitInvSerialType AS 'IsInventorySerialNumberType'
		,tblInvRepackDocDT.strLocName AS 'Location'
		,tblInvRepackDocDT.decUnitCost AS 'UnitCost'
		,tblInvRepackDocDT.decAmount AS 'Amount'
		,ISNULL(STUFF((
					SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX))
					FROM tblInvLocBin
					WHERE tblInvLocBin.lngId IN (
							SELECT lngBinId
							FROM tblInvRepackDocDTBin
							WHERE tblInvRepackDocDTBin.strRepackDocID = tblInvRepackDocDT.strRepackDocID
								AND tblInvRepackDocDTBin.intLineNo = tblInvRepackDocDT.intLineNo
							)
					FOR XML PATH('')
					), 1, 1, ''), '') AS BinCode
		,cast(ISNULL(STUFF((
						SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(MAX))
						FROM tblInvLocBin
						WHERE tblInvLocBin.lngId IN (
								SELECT lngBinId
								FROM tblInvRepackDocDTBin
								WHERE tblInvRepackDocDTBin.strRepackDocID = tblInvRepackDocDT.strRepackDocID
									AND tblInvRepackDocDTBin.intLineNo = tblInvRepackDocDT.intLineNo
								)
						FOR XML PATH('')
						), 1, 1, ''), 0) AS BIGINT) AS BinId
	FROM tblInvRepackDocDT
	INNER JOIN tblInv ON tblInvRepackDocDT.strPartNumber = tblInv.strPartNumber
	WHERE tblInvRepackDocDT.strRepackDocID = @DocNumber
	ORDER BY tblInvRepackDocDT.intLineNo
END
GO

/*********** Start [GetInvRepackDocDTSerial] ***********/
CREATE PROCEDURE [dbo].[GetInvRepackDocDTSerial]
(
	@DocNumber NVARCHAR(100),
	@LineNo INT,
	@IsOriginal BIT
)
AS
BEGIN
	SELECT 
		tblInvRepackDocDTSerial.lngID 'ID',
		tblInvRepackDocDTSerial.strRepackDocID AS 'RepackDocID',
		tblInvRepackDocDTSerial.intLineNo AS 'LineNo',
		tblInvRepackDocDTSerial.bitOriginalItem AS 'IsOriginalItem',
		tblInvRepackDocDTSerial.strSerialNumber AS 'SerialNumber',
		tblInvRepackDocDTSerial.decQty AS 'Quantity',
		tblInvRepackDocDTSerial.strUnit AS 'Unit',
		tblInvRepackDocDTSerial.bitExpiryDate AS 'IsExpiryDateExists',
		tblInvRepackDocDTSerial.dteExpiryDate AS 'ExpiryDate',
		tblInvRepackDocDTSerial.intSerialLotType AS 'SerialLotType',
	  ISNULL(
		(
		  SELECT 
			TYP.intType AS 'InvSerialType'
		  FROM 
			tblInvRepackDocDT DTL 
			INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber 
			INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType 
		  WHERE 
			DTL.strRepackDocID = tblInvRepackDocDTSerial.strRepackDocID 
			AND DTL.intLineNo = tblInvRepackDocDTSerial.intLineNo
		), 
		0
	  ) 
	FROM 
	  tblInvRepackDocDTSerial 
	WHERE 
	  strRepackDocID = @DocNumber 
	  AND intLineNo = @LineNo 
	  AND bitOriginalItem = @IsOriginal 
	ORDER BY 
	  lngID
END
GO

/*********** Start [NavigateDocumentRepacking] ***********/
CREATE PROCEDURE [dbo].[FetchInvLocationInventoryRepack]
(
 @Part NVARCHAR(100) = ''
,@Loc NVARCHAR(200)  = ''
)
AS
BEGIN
	SELECT 
	  ISNULL(
		CASE WHEN ISNULL(IE.bitInactive, 0) = 1 THEN ISNULL(
		  (
			SELECT 
			  EXT.strLocName 
			FROM 
			  tblInvExt EXT 
			WHERE 
			  EXT.strPartNumber = INV.strPartNumber 
			  AND EXT.bitDefault = 1
		  ), 
		  ''
		) ELSE IE.strLocName END, 
		''
	  ) 
	FROM 
	  tblInv INV 
	  LEFT JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber 
	  AND IE.strLocName = @Loc 
	WHERE 
	  (
		INV.strPartNumber = @Part 
		OR INV.strBarCode = @Part 
		OR INV.strBarCode2 = @Part
	  ) 
	  AND (INV.intType = 1) 
	  AND (INV.bitInactive = 0)
END
GO

/*********** Start [GetInvRepackSerialTypeData] ***********/
CREATE PROCEDURE [dbo].[GetInvRepackSerialTypeData]
(
@PartNumber AS NVARCHAR(100)
)
AS
BEGIN
	SELECT 
	  tblInv.bitInvSerialType AS 'IsInvSerialType', 
	  ISNULL(tblInvSerialTypes.bitMethod, 0) AS 'IsMethod', 
	  ISNULL(tblInvSerialTypes.intMin, 0) AS 'Min', 
	  ISNULL(tblInvSerialTypes.intMax, 0) AS 'Max', 
	  ISNULL(tblInvSerialTypes.intFormat, 0) AS 'Format', 
	  ISNULL(tblInvSerialTypes.intType, 0) AS 'Type', 
	  ISNULL(tblInvSerialTypes.bitTrackExpiryDate,0) AS 'IsTrackExpiryDate', 
	  tblInv.strBuyUnit AS 'BuyUnit', 
	  ISNULL(tblInvSerialTypes.intExpiryDateAuthAS,0) AS 'ExpiryDateAuth', 
	  ISNULL(tblInvSerialTypes.strDimProCode,'') AS 'DimProCode',
	  ISNULL(tblInvSerialTypes.bitAutoCreateLotNumber,0) AS IsAutoCreateLotNumber, 
	  ISNULL(tblInvSerialTypes.intLotNumberStartsFrom, 0) AS LotNumberStartsFrom, 
	  ISNULL(tblInvSerialTypes.intNextLotNumber, 1) AS NextLotNumber
 
	FROM 
	  tblInv 
	  LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
	WHERE 
	  tblInv.strPartNumber = @PartNumber
END
GO

/*********** Start [InsertInvRepackDoc] ***********/
CREATE  PROCEDURE [dbo].[InsertInvRepackDoc]
(
	@RepackDocIDText AS NVARCHAR(100),
	@RepackDocID AS INT,
	@InvTrackID AS BIGINT,
	@JourID AS BIGINT,
	@SystemDate AS DATETIME,
	@JournalDate AS DATETIME,
	@UserName AS NVARCHAR(40),
	@Comment AS NVARCHAR(100),
	@TotalWeightOriginal AS MONEY,
	@TotalWeightRepackaged AS MONEY,
	@TotalCostOriginal AS MONEY,
	@TotalCostRepackaged AS MONEY,
	@Dept AS INT,
	@RepackagingReasonCode AS NVARCHAR(40)
)
AS
BEGIN
	INSERT INTO tblInvRepackDoc (
		strRepackDocID,
		intRepackDocID,
		lngInvTrackID,
		lngJourID,
		dteSystemDate,
		dteJournalDate,
		strUserName,
		strComment,
		decTotalWeightOriginal,
		decTotalWeightRepackaged,
		intDept,
		strRepackagingReasonCode,
		decTotalCostOriginal,
		decTotalCostRepackaged
	)
	VALUES 
	  (
		@RepackDocIDText, 
		@RepackDocID, 
		@InvTrackID, 
		@JourID, 
		@SystemDate, 
		@JournalDate, 
		@UserName, 
		@Comment, 
		@TotalWeightOriginal, 
		@TotalWeightRepackaged, 
		@Dept, 
		@RepackagingReasonCode, 
		@TotalCostOriginal, 
		@TotalCostRepackaged
	  )
END
GO

/*********** Start [InvRepackInsertUpdateInvSerialExt] ***********/
CREATE PROCEDURE [dbo].[InvRepackInsertUpdateInvSerialExt] 
 (
		@Qty MONEY,
		@UpdatedDate SMALLDATETIME,
		@PartNumber NVARCHAR(100),
		@SerialNumber NVARCHAR(200),
		@LocName NVARCHAR(20),
		@Status INT,
		@DocID NVARCHAR(100),
		@IsDimensionExist BIT,
		@Dimension NVARCHAR(MAX),
		@IsUpdate BIT
)
AS
BEGIN
	IF(@IsUpdate = 1 )
		BEGIN
			UPDATE 
			  tblInvSerialExt 
			SET 
			  strLocName = @LocName, 
			  decQty = @Qty, 
			  intStatus = @Status, 
			  strDocID = @DocID, 
			  dteUpdatedDate = @UpdatedDate 
			WHERE 
			  strPartNumber = @PartNumber 
			  AND strSerialNumber = @SerialNumber
		END
	ELSE
		BEGIN
			INSERT INTO tblInvSerialExt 
			VALUES 
			  (
				@PartNumber, @SerialNumber, @LocName, 
				@Qty, @Status, @DocID, @UpdatedDate, 
				@IsDimensionExist, @Dimension,1,GETDATE()
			  )
		END
	
END 
GO

/*********** Start [InvRepackInsertUpdateInvlotExt] ***********/
CREATE PROCEDURE [dbo].[InvRepackInsertUpdateInvlotExt] 
 (
		@Qty MONEY,
		@UpdatedDate SMALLDATETIME,
		@PartNumber NVARCHAR(100),
		@LotNumber NVARCHAR(200),
		@LocName NVARCHAR(20),
		@IsExpiryDate BIT,
		@ExpiryDate SMALLDATETIME,
		@IsUpdate BIT
)
AS
BEGIN
	IF(@IsUpdate = 1 )
		BEGIN
			UPDATE 
			  tblInvLotExt 
			SET 
			  decQty = decQty + @Qty, 
			  dteUpdatedDate = @UpdatedDate 
			WHERE 
			  strPartNumber = @PartNumber 
			  AND strLotNumber = @LotNumber 
			  AND strLocName = @LocName
		END
	ELSE
		BEGIN
			INSERT INTO tblInvLotExt 
			VALUES 
			  (
				@PartNumber, @LotNumber, @LocName, 
				@Qty, @IsExpiryDate, @ExpiryDate, 
				@UpdatedDate,1,GETDATE()
			  )
		END
	
END 
GO

CREATE PROCEDURE [dbo].[GetBulkLabelPrintingItemsSerial] 
	 @SQDate SMALLDATETIME = NULL
	,@SQApply BIT = 0
	,@SQCategory NVARCHAR(Max) = ''
	,@SQSubCategory NVARCHAR(Max) = ''
	,@SQLocation NVARCHAR(Max) = ''
	,@SQSearch NVARCHAR(100) = ''
	,@SQWithPrice BIT = 0
	,@SQPricelist NVARCHAR(100) = 'REGULAR'
	,@SQuidPriceBasedID NVARCHAR(100) = 0
	,@SQPriceSince DATETIME
	,@SQShowPrices BIT = 0
	,@SQShowOnHandQtyOnly BIT = 0
	,@SQBinCode NVARCHAR(Max) = ''
	,@SQPartNumber NVARCHAR(Max) = ''
	,@PageSize INT = 25
	,@PageNum  INT =1
WITH RECOMPILE
AS
BEGIN

  DECLARE @Offset INT
  SET @Offset = @PageSize * (@PageNum-1)

DECLARE @SplitWord TABLE(wordRank INT, word VARCHAR(200))
SET @SQSearch = LTRIM(RTRIM(@SQSearch)) -- Remove white space
DECLARE @WordSeperator VARCHAR(1) =' '

  DECLARE @TotalWord Int=0
  DECLARE @WordCount Int=1
  DECLARE @Keyword1 VARCHAR(100)=''
  DECLARE @Keyword2 VARCHAR(100)=''
  DECLARE @Keyword3 VARCHAR(100)=''
  DECLARE @Keyword4 VARCHAR(100)=''
  DECLARE @Keyword5 VARCHAR(100)=''
  DECLARE @Keyword6 VARCHAR(100)=''
  DECLARE @Keyword7 VARCHAR(100)=''
  DECLARE @Keyword8 VARCHAR(100)=''
  DECLARE @Keyword9 VARCHAR(100)=''
  DECLARE @Keyword10 VARCHAR(100)=''

 IF(CHARINDEX(',',@SQSearch)) > 0 
	BEGIN
		 SET @WordSeperator=','
	END  

INSERT INTO @SplitWord select Id, [Data] from dbo.split(@SQSearch, @WordSeperator)

SET @TotalWord=(SELECT COUNT(*) FROM @SplitWord)

While(@WordCount<=@TotalWord)
Begin
		IF @WordCount=1 
			BEGIN
				SET @Keyword1=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=2 
			BEGIN
				SET @Keyword2=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=3 
			BEGIN
				SET @Keyword3=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=4 
			BEGIN
				SET @Keyword4=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=5 
			BEGIN
				SET @Keyword5=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=6 
			BEGIN
				SET @Keyword6=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=7 
			BEGIN
				SET @Keyword7=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=8 
			BEGIN
				SET @Keyword8=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=9
			BEGIN
				SET @Keyword9=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=10 
			BEGIN
				SET @Keyword10=(Select Word from @SplitWord Where wordRank=@WordCount)
			END

	SET @WordCount=@WordCount+1
End
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	IF (@SQShowOnHandQtyOnly = 0)
	BEGIN
		IF (@SQShowPrices = 0)
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
				Select * from (
				SELECT 0 AS bitSelect
					,tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,tblInvPrice.decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.

tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(
						CASE 
							WHEN @SQApply = 0
								THEN 0
							ELSE CAST(isnull((
											SELECT Sum(tblInvExtBin.decOnHand)
											FROM tblInvExt
											INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
												AND tblInvExtBin.strLocName = tblInvExt.strLocName
											INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
												AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
											WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
												AND (
													[tblInvLocBin].strBinCode = CASE 
														WHEN (
																@SQBinCode = ''
																OR @SQBinCode = '<<All Bin Locations>>'
																)
															THEN IsNull([tblInvLocBin].strBinCode, '')
														ELSE @SQBinCode
														END
													)
												AND (
													IsNull(tblInvLocBin.strLocName, '') = CASE 
														WHEN (
																@SQLocation = '<<All Locations>>'
																OR @SQLocation = ''
																)
															THEN IsNull(tblInvLocBin.strLocName, '')
														ELSE @SQLocation
														END
													)
												AND tblInvExt.bitInactive = 0
											), 0) AS INT)
							END
						) AS intAmount
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
					,tblInvPrice.strUnit
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM tblInv
				INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				LEFT JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						GROUP BY a.strPartNumber
						)
				INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
				--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
				--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
				--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = 'REGULAR')
					AND (
						@SQDate BETWEEN tblPriceListsByDate.dteStartDate
							AND tblPriceListsByDate.dteFinishDate
						)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5=''
OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					AND (
						tblInv.strPartNumber IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@SQPartNumber, ',')
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.decSelling
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,tblInvPrice.strUnit
				,tblInvUOMs.decConversionFactor
				,tblInvUOMs.strConversionType
				,dbo.tblInvUOMs.strPartNumber
					) as result WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
			ELSE
			BEGIN
			Select * from (
				SELECT 0 AS bitSelect
					,tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,tblInvPrice.decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.

tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(
						CASE 
							WHEN @SQApply = 0
								THEN 0
							ELSE CAST(isnull((
											SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / 

dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
											FROM tblInvExt
											INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
												AND tblInvExtBin.strLocName = tblInvExt.strLocName
											INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
												AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
											WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
												AND (
													[tblInvLocBin].strBinCode = CASE 
														WHEN (
																@SQBinCode = ''
																OR @SQBinCode = '<<All Bin Locations>>'
																)
															THEN IsNull([tblInvLocBin].strBinCode, '')
														ELSE @SQBinCode
														END
													)
												AND (
													IsNull(tblInvLocBin.strLocName, '') = CASE 
														WHEN (
																@SQLocation = '<<All Locations>>'
																OR @SQLocation = ''
																)
															THEN IsNull(tblInvLocBin.strLocName, '')
														ELSE @SQLocation
														END
													)
												AND tblInvExt.bitInactive = 0
											), 0) AS INT)
							END
						) AS intAmount
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
					,tblInvPrice.strUnit
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM tblInv
				INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				LEFT JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE (a.uidPriceBasedID = @SQuidPriceBasedID)
						GROUP BY a.strPartNumber
						)
				INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
				--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
				--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
				--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = @SQPricelist)
					AND (tblPriceListsByDate.uidPriceBasedID = @SQuidPriceBasedID)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5=''
OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					AND (
						tblInv.strPartNumber IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@SQPartNumber, ',')
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.decSelling
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,tblInvPrice.strUnit
				,tblInvUOMs.decConversionFactor
				,tblInvUOMs.strConversionType
				,dbo.tblInvUOMs.strPartNumber
					) as result WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
				
			END
		END
		ELSE
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
				Select * from (
				SELECT 0 AS bitSelect
					,tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,tblInvPrice.decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.

tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(
						CASE 
							WHEN @SQApply = 0
								THEN 0
							ELSE CAST(isnull((
											SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / 

dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
											FROM tblInvExt
											INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
												AND tblInvExtBin.strLocName = tblInvExt.strLocName
											INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
												AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
											WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
												AND (
													[tblInvLocBin].strBinCode = CASE 
														WHEN (
																@SQBinCode = ''
																OR @SQBinCode = '<<All Bin Locations>>'
																)
															THEN IsNull([tblInvLocBin].strBinCode, '')
														ELSE @SQBinCode
														END
													)
												AND (
													IsNull(tblInvLocBin.strLocName, '') = CASE 
														WHEN (
																@SQLocation = '<<All Locations>>'
																OR @SQLocation = ''
																)
															THEN IsNull(tblInvLocBin.strLocName, '')
														ELSE @SQLocation
														END
													)
												AND tblInvExt.bitInactive = 0
											), 0) AS INT)
							END
						) AS intAmount
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
					,tblInvPrice.strUnit
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM tblInv
				INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				INNER JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
				--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
				--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
				--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = 'REGULAR')
					AND (
						@SQDate BETWEEN tblPriceListsByDate.dteStartDate
							AND tblPriceListsByDate.dteFinishDate
						)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5=''
 OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						INNER JOIN tblPriceListsByDate b ON a.uidPriceBasedID = b.uidPriceBasedID
						WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
							AND (
								@SQDate BETWEEN b.dteStartDate
									AND b.dteFinishDate
								)
							AND (a.strPricelist = 'REGULAR')
						GROUP BY a.strPartNumber
						)
					AND (
						tblInv.strPartNumber IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@SQPartNumber, ',')
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.decSelling
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,tblInvPrice.strUnit
				,tblInvUOMs.decConversionFactor
				,tblInvUOMs.strConversionType
				,dbo.tblInvUOMs.strPartNumber
				) as result WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
			ELSE
			BEGIN
			Select * from (
				SELECT 0 AS bitSelect
					,tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,tblInvPrice.decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.
tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(
						CASE 
							WHEN @SQApply = 0
								THEN 0
							ELSE CAST(isnull((
											SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / 
dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
											FROM tblInvExt
											INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
												AND tblInvExtBin.strLocName = tblInvExt.strLocName
											INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
												AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
											WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
												AND (
													[tblInvLocBin].strBinCode = CASE 
														WHEN (
																@SQBinCode = ''
																OR @SQBinCode = '<<All Bin Locations>>'
																)
															THEN IsNull([tblInvLocBin].strBinCode, '')
														ELSE @SQBinCode
														END
													)
												AND (
													IsNull(tblInvLocBin.strLocName, '') = CASE 
														WHEN (
																@SQLocation = '<<All Locations>>'
																OR @SQLocation = ''
																)
															THEN IsNull(tblInvLocBin.strLocName, '')
														ELSE @SQLocation
														END
													)
												AND tblInvExt.bitInactive = 0
											), 0) AS INT)
							END
						) AS intAmount
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
					,tblInvPrice.strUnit
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM tblInv
				INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				INNER JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
				--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
				--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
				--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = @SQPricelist)
					AND (tblPriceListsByDate.uidPriceBasedID = @SQuidPriceBasedID)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
							AND a.uidPriceBasedID = @SQuidPriceBasedID
						GROUP BY a.strPartNumber
						)
					AND (
						tblInv.strPartNumber IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@SQPartNumber, ',')
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.decSelling
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,tblInvPrice.strUnit
				,tblInvUOMs.decConversionFactor
				,tblInvUOMs.strConversionType
				,dbo.tblInvUOMs.strPartNumber
				) as result WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
		END
	END
	ELSE
	BEGIN
		IF (@SQShowPrices = 0)
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
			Select * from (
				SELECT 0 AS bitSelect
					,tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,tblInvPrice.decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.

tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(
						CASE 
							WHEN @SQApply = 0
								THEN 0
							ELSE CAST(isnull((
											SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / 
dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
											FROM tblInvExt
											INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
												AND tblInvExtBin.strLocName = tblInvExt.strLocName
											INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
												AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
											WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
												AND (
													[tblInvLocBin].strBinCode = CASE 
														WHEN (
																@SQBinCode = ''
																OR @SQBinCode = '<<All Bin Locations>>'
																)
															THEN IsNull([tblInvLocBin].strBinCode, '')
														ELSE @SQBinCode
														END
													)
												AND (
													IsNull(tblInvLocBin.strLocName, '') = CASE 
														WHEN (
																@SQLocation = '<<All Locations>>'
																OR @SQLocation = ''
																)
															THEN IsNull(tblInvLocBin.strLocName, '')
														ELSE @SQLocation
														END
													)
												AND tblInvExt.bitInactive = 0
											), 0) AS INT)
							END
						) AS intAmount
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
					,tblInvPrice.strUnit
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM tblInv
				INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				LEFT JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						GROUP BY a.strPartNumber
						)
				INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
				--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
				--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
				--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = 'REGULAR')
					AND (
						@SQDate BETWEEN tblPriceListsByDate.dteStartDate
							AND tblPriceListsByDate.dteFinishDate
						)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5=''
OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					--AND (tblInvExtBin.decOnHand <> 0)
					AND (
						tblInv.strPartNumber IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@SQPartNumber, ',')
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.decSelling
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,tblInvPrice.strUnit
				,tblInvUOMs.decConversionFactor
				,tblInvUOMs.strConversionType
				,dbo.tblInvUOMs.strPartNumber
				--ORDER BY tblInv.strPartNumber
			) as tblTemp1 where tblTemp1.decSumOnHand<>0 AND  RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber 
			END
			ELSE
			BEGIN
			Select * from (
				SELECT 0 AS bitSelect
					,tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,tblInvPrice.decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.
tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(
						CASE 
							WHEN @SQApply = 0
								THEN 0
							ELSE CAST(isnull((
											SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / 
dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
											FROM tblInvExt
											INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
												AND tblInvExtBin.strLocName = tblInvExt.strLocName
											INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
												AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
											WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
												AND (
													[tblInvLocBin].strBinCode = CASE 
														WHEN (
																@SQBinCode = ''
																OR @SQBinCode = '<<All Bin Locations>>'
																)
															THEN IsNull([tblInvLocBin].strBinCode, '')
														ELSE @SQBinCode
														END
													)
												AND (
													IsNull(tblInvLocBin.strLocName, '') = CASE 
														WHEN (
																@SQLocation = '<<All Locations>>'
																OR @SQLocation = ''
																)
															THEN IsNull(tblInvLocBin.strLocName, '')
														ELSE @SQLocation
														END
													)
												AND tblInvExt.bitInactive = 0
											), 0) AS INT)
							END
						) AS intAmount
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
					,tblInvPrice.strUnit
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM tblInv
				INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				LEFT JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE (a.uidPriceBasedID = @SQuidPriceBasedID)
						GROUP BY a.strPartNumber
						)
				INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
				--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
				--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
				--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = @SQPricelist)
					AND (tblPriceListsByDate.uidPriceBasedID = @SQuidPriceBasedID)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5=''OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
				--	AND (tblInvExtBin.decOnHand <> 0)
					AND (
						tblInv.strPartNumber IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@SQPartNumber, ',')
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.decSelling
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,tblInvPrice.strUnit
				,tblInvUOMs.decConversionFactor
				,tblInvUOMs.strConversionType
				,dbo.tblInvUOMs.strPartNumber
			--	ORDER BY tblInv.strPartNumber
			) as tblTemp2 where tblTemp2.decSumOnHand<>0 AND  RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber 
			END
		END
		ELSE
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
			Select * from (
				SELECT 0 AS bitSelect
					,tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,tblInvPrice.decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.
tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(
						CASE 
							WHEN @SQApply = 0
								THEN 0
							ELSE CAST(isnull((
											SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / 
dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
											FROM tblInvExt
											INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
												AND tblInvExtBin.strLocName = tblInvExt.strLocName
											INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
												AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
											WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
												AND (
													[tblInvLocBin].strBinCode = CASE 
														WHEN (
																@SQBinCode = ''
																OR @SQBinCode = '<<All Bin Locations>>'
																)
															THEN IsNull([tblInvLocBin].strBinCode, '')
														ELSE @SQBinCode
														END
													)
												AND (
													IsNull(tblInvLocBin.strLocName, '') = CASE 
														WHEN (
																@SQLocation = '<<All Locations>>'
																OR @SQLocation = ''
																)
															THEN IsNull(tblInvLocBin.strLocName, '')
														ELSE @SQLocation
														END
													)
												AND tblInvExt.bitInactive = 0
											), 0) AS INT)
							END
						) AS intAmount
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
					,tblInvPrice.strUnit
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM tblInv
				INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				INNER JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
				--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
				--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
				--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = 'REGULAR')
					AND (
						@SQDate BETWEEN tblPriceListsByDate.dteStartDate
							AND tblPriceListsByDate.dteFinishDate
						)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5=''
OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						INNER JOIN tblPriceListsByDate b ON a.uidPriceBasedID = b.uidPriceBasedID
						WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
							AND (
								@SQDate BETWEEN b.dteStartDate
									AND b.dteFinishDate
								)
							AND (a.strPricelist = 'REGULAR')
						GROUP BY a.strPartNumber
						)
					--AND (tblInvExtBin.decOnHand <> 0)
					AND (
						tblInv.strPartNumber IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@SQPartNumber, ',')
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.decSelling
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,tblInvPrice.strUnit
				,tblInvUOMs.decConversionFactor
				,tblInvUOMs.strConversionType
				,dbo.tblInvUOMs.strPartNumber
				--ORDER BY tblInv.strPartNumber
			) as tblTemp3 where tblTemp3.decSumOnHand<>0 AND  RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber 
			END
			ELSE
			BEGIN
			Select * from (
				SELECT 0 AS bitSelect
					,tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,tblInvPrice.decSelling
					,isnull((
							SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / dbo.
tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
							FROM tblInvExt
							INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
								AND tblInvExtBin.strLocName = tblInvExt.strLocName
							INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
								AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
							WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvExt.bitInactive = 0
							), 0) AS decSumOnHand
					,(
						CASE 
							WHEN @SQApply = 0
								THEN 0
							ELSE CAST(isnull((
											SELECT CASE WHEN Sum(tblInvExtBin.decOnHand) = 0 THEN 0 ELSE (CASE WHEN ISNULL(dbo.tblInvUOMs.strPartNumber,'') = '' THEN Sum(tblInvExtBin.decOnHand) ELSE CASE dbo.tblInvUOMs.strConversionType WHEN 'Multiply' THEN Sum(tblInvExtBin.decOnHand) / 
dbo.tblInvUOMs.decConversionFactor ELSE Sum(tblInvExtBin.decOnHand) * dbo.tblInvUOMs.decConversionFactor END END) END AS decSumOnHand
											FROM tblInvExt
											INNER JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = tblInvExt.strPartNumber
												AND tblInvExtBin.strLocName = tblInvExt.strLocName
											INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
												AND tblInvExtBin.strLocName = tblInvLocBin.strLocName
											WHERE [tblInvExtBin].strPartNumber = [tblInv].strPartNumber
												AND (
													[tblInvLocBin].strBinCode = CASE 
														WHEN (
																@SQBinCode = ''
																OR @SQBinCode = '<<All Bin Locations>>'
																)
															THEN IsNull([tblInvLocBin].strBinCode, '')
														ELSE @SQBinCode
														END
													)
												AND (
													IsNull(tblInvLocBin.strLocName, '') = CASE 
														WHEN (
																@SQLocation = '<<All Locations>>'
																OR @SQLocation = ''
																)
															THEN IsNull(tblInvLocBin.strLocName, '')
														ELSE @SQLocation
														END
													)
												AND tblInvExt.bitInactive = 0
											), 0) AS INT)
							END
						) AS intAmount
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
					,tblInvPrice.strUnit
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM tblInv
				INNER JOIN dbo.tblInvPrice ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN dbo.tblPriceListsByDate ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				INNER JOIN dbo.tblInvPriceTracking ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN [tblInvExt] ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
				--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
				--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
				--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = @SQPricelist)
					AND (tblPriceListsByDate.uidPriceBasedID = @SQuidPriceBasedID)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5=''
OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
							AND a.uidPriceBasedID = @SQuidPriceBasedID
						GROUP BY a.strPartNumber
						)
					--AND (tblInvExtBin.decOnHand <> 0)
					AND (
						tblInv.strPartNumber IN (
							SELECT [VALUE]
							FROM dbo.fnSplitStringAsTable(@SQPartNumber, ',')
							)
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,tblInvPrice.decSelling
					,tblInvPriceTracking.dteUpdatedDate
					,tblInvPriceTracking.decPriceFrom
					,tblInvPriceTracking.decPriceTo
					,tblInvPrice.strUnit
				,tblInvUOMs.decConversionFactor
				,tblInvUOMs.strConversionType
				,dbo.tblInvUOMs.strPartNumber
				--ORDER BY tblInv.strPartNumber
				) as tblTemp4 where tblTemp4.decSumOnHand<>0 AND  RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber 
			END
		END
	END
END
GO

CREATE PROCEDURE DeleteCustItems @lngID BIGINT
AS
BEGIN
	DELETE
	FROM tblInvCustomer
	WHERE lngID = @lngID
END
GO


CREATE PROCEDURE DeleteVendorItems
@PartNumber as nvarchar(50),
@VendName as nvarchar(50),
@Unit as nvarchar(50)
AS
BEGIN
DELETE FROM tblInvVend WHERE strPartNumber=@PartNumber AND strVendName=@VendName AND strUnit=@Unit
END
GO

create procedure GetInvLocations
@UserName as nvarchar(20)
as
begin
SELECT tblInvLoc.strLocName as LocName
	,ISNULL((
			SELECT COUNT(tblInvLocSec.strLocName)
			FROM tblInvLocSec
			WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName
			), 0) as LocationCount
	,ISNULL(tblInvLocSec.strUserName, '') as UserName
	,tblInvLoc.strDesc as [Desc]
FROM tblInvLoc
LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName
	AND tblInvLocSec.strUserName = @UserName
ORDER BY tblInvLoc.strLocName

end
GO


/***** Object: StoredProcedure [dbo].[prGetBulkLabelPrintingSerial] Script Date: 2021-02-19 *****/
CREATE PROCEDURE [dbo].[prGetBulkLabelPrintingSerial] 
	@SQDate SMALLDATETIME = NULL
	,@SQApply BIT = 0
	,@SQCategory NVARCHAR(Max) = ''
	,@SQSubCategory NVARCHAR(Max) = ''
	,@SQLocation NVARCHAR(Max) = ''
	,@SQSearch NVARCHAR(100) = ''
	,@SQWithPrice BIT = 0
	,@SQPricelist NVARCHAR(100) = 'REGULAR'
	,@SQuidPriceBasedID NVARCHAR(100) = 0
	,@SQPriceSince DATETIME
	,@SQShowPrices BIT = 0
	,@SQShowOnHandQtyOnly BIT = 0
	,@SQBinCode NVARCHAR(Max) = ''
	,@PageSize INT = 25
	,@PageNum  INT =1
AS
BEGIN
  DECLARE @Offset INT
  SET @Offset = @PageSize * (@PageNum-1)

DECLARE @SplitWord TABLE(wordRank INT, word VARCHAR(200))
SET @SQSearch = LTRIM(RTRIM(@SQSearch)) -- Remove white space
DECLARE @WordSeperator VARCHAR(1) =' '

  DECLARE @TotalWord Int=0
  DECLARE @WordCount Int=1
  DECLARE @Keyword1 VARCHAR(100)=''
  DECLARE @Keyword2 VARCHAR(100)=''
  DECLARE @Keyword3 VARCHAR(100)=''
  DECLARE @Keyword4 VARCHAR(100)=''
  DECLARE @Keyword5 VARCHAR(100)=''
  DECLARE @Keyword6 VARCHAR(100)=''
  DECLARE @Keyword7 VARCHAR(100)=''
  DECLARE @Keyword8 VARCHAR(100)=''
  DECLARE @Keyword9 VARCHAR(100)=''
  DECLARE @Keyword10 VARCHAR(100)=''

  IF(CHARINDEX(',',@SQSearch)) > 0 
	BEGIN
		 SET @WordSeperator=','
	END  


INSERT INTO @SplitWord select Id, [Data] from dbo.split(@SQSearch, @WordSeperator)

SET @TotalWord=(SELECT COUNT(*) FROM @SplitWord)

While(@WordCount<=@TotalWord)
Begin
		IF @WordCount=1 
			BEGIN
				SET @Keyword1=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=2 
			BEGIN
				SET @Keyword2=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=3 
			BEGIN
				SET @Keyword3=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=4 
			BEGIN
				SET @Keyword4=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=5 
			BEGIN
				SET @Keyword5=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=6 
			BEGIN
				SET @Keyword6=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=7 
			BEGIN
				SET @Keyword7=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=8 
			BEGIN
				SET @Keyword8=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=9
			BEGIN
				SET @Keyword9=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=10 
			BEGIN
				SET @Keyword10=(Select Word from @SplitWord Where wordRank=@WordCount)
			END

	SET @WordCount=@WordCount+1
End

CREATE TABLE #TempINVSerialLot (
[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strSerialNumber] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strLocName] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decQty] [money] NOT NULL,
[bitExpiryDate] [bit] NULL,
[dteExpiryDate] [datetime] NULL,
[lngBinID] [int] NOT NULL,
[intLotSerial] [int] NOT NULL,
)

Insert into #TempINVSerialLot 
Select * from (
Select strPartNumber,strSerialNumber,strLocName,decQty,0 AS bitExpiryDate,NULL AS dteExpiryDate,lngBinID,1 as intLotSerial from tblInvSerialExt
Union all
Select strPartNumber,strLotNumber,strLocName,decQty,bitExpiryDate,dteExpiryDate,lngBinID,2 as intLotSerial from tblInvLotExt
) as tmpSerialLot

DECLARE @uidPriceBasedID AS UNIQUEIDENTIFIER
SET @uidPriceBasedID = NULL
IF ISNULL(@SQPricelist, '') <> ''	AND ISNULL(@SQDate, '') <> '' And isnull(@SQuidPriceBasedID,'')=''
BEGIN
SELECT TOP 1 @uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
FROM tblPriceListsByDate
INNER JOIN dbo.tblInvPrice ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
WHERE @SQDate BETWEEN dbo.tblPriceListsByDate.dteStartDate AND dbo.tblPriceListsByDate.dteFinishDate AND tblPriceListsByDate.strPricelist = @SQPricelist
END
ELSE
BEGIN
SELECT TOP 1 @uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
FROM tblPriceListsByDate
INNER JOIN dbo.tblInvPrice ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
WHERE @SQDate BETWEEN dbo.tblPriceListsByDate.dteStartDate AND dbo.tblPriceListsByDate.dteFinishDate AND tblPriceListsByDate.strPricelist = 'REGULAR'
END

	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	IF (@SQShowOnHandQtyOnly = 0)
	BEGIN
		IF (@SQShowPrices = 0)
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
				Select  0 AS bitSelect,*,CASE 
							WHEN @SQApply = 0
								THEN 0 ELSE Cast(decSumOnHand as int) end as intAmount 
								from (
					SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory					
					,(Select top 1 t.decSelling from tblInvPrice t where t.strPartNumber=tblInv.strPartNumber and t.strPricelist='Regular' and t.uidPriceBasedID=@uidPriceBasedID) as decSelling
					,isnull((
							SELECT Sum(temp1.decQty)
										FROM [tblInvLocBin] 
										INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
											AND [tblInvLocBin].strLocName =  temp1.strLocName AND temp1.strSerialNumber=#TempINVSerialLot.strSerialNumber
											AND [tblInvLocBin].lngID =  temp1.lngBinID
								WHERE temp1.strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)	
								AND tblInvLocBin.bitInactive= 0						
							), 0) AS decSumOnHand
					,(Select dteUpdatedDate from dbo.tblInvPriceTracking  where
						dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						GROUP BY a.strPartNumber
						))  as dteUpdatedDate
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strCategory) AS RowNumber
					,#TempINVSerialLot.strSerialNumber AS SerialNumber
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM [tblInvExt] (NOLOCK)
				INNER JOIN [tblInv] (NOLOCK) ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				Inner join #TempINVSerialLot on [tblInv].strPartNumber = #TempINVSerialLot.strPartNumber and  [tblInvExt].strLocName = #TempINVSerialLot.strLocName
				INNER JOIN dbo.tblInvPrice (NOLOCK) ON (dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID or @uidPriceBasedID is null)
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = 'REGULAR')
					--AND (
					--	@SQDate BETWEEN tblPriceListsByDate.dteStartDate
					--		AND tblPriceListsByDate.dteFinishDate
					--	)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,#TempINVSerialLot.strSerialNumber 
					) As result  WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
				ORDER BY RowNumber
			END
			ELSE
			BEGIN
				Select  0 AS bitSelect,*,
								CASE WHEN @SQApply = 0
								THEN 0 ELSE Cast(decSumOnHand as int) end as intAmount 
								from (
					SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,(Select top 1 t.decSelling from tblInvPrice t where t.strPartNumber=tblInv.strPartNumber and t.strPricelist=@SQPricelist and t.uidPriceBasedID=@SQuidPriceBasedID) as decSelling
					,isnull((
							SELECT Sum(temp1.decQty)
										FROM [tblInvLocBin] 
										INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
											AND [tblInvLocBin].strLocName =  temp1.strLocName AND temp1.strSerialNumber=#TempINVSerialLot.strSerialNumber
											AND [tblInvLocBin].lngID =  temp1.lngBinID
								WHERE temp1.strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
							AND tblInvLocBin.bitInactive= 0
							), 0) AS decSumOnHand
					,(Select dteUpdatedDate from dbo.tblInvPriceTracking  where
			    dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE (a.uidPriceBasedID = @SQuidPriceBasedID)
						GROUP BY a.strPartNumber
						))  as dteUpdatedDate
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strCategory) AS RowNumber
					,#TempINVSerialLot.strSerialNumber AS SerialNumber
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM [tblInvExt] (NOLOCK)
				INNER JOIN [tblInv] (NOLOCK) ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				Inner join #TempINVSerialLot on [tblInv].strPartNumber = #TempINVSerialLot.strPartNumber and  [tblInvExt].strLocName = #TempINVSerialLot.strLocName
				INNER JOIN dbo.tblInvPrice (NOLOCK) ON (dbo.tblInvPrice.uidPriceBasedID = @SQuidPriceBasedID or @SQuidPriceBasedID is null)	
				--and tblinv.strPartNumber=tblInvPrice.strPartNumber
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = @SQPricelist)
					
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,#TempINVSerialLot.strSerialNumber 
					) As result  
					WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
				
			END
		END
		ELSE
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
				Select  0 AS bitSelect,*,
								CASE WHEN @SQApply = 0
								THEN 0 ELSE Cast(decSumOnHand as int) end as intAmount 
								from (
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,(Select top 1 t.decSelling from tblInvPrice t where t.strPartNumber=tblInv.strPartNumber and t.strPricelist='Regular' and t.uidPriceBasedID=@uidPriceBasedID) as decSelling
					,isnull((
							SELECT Sum(temp1.decQty)
										FROM [tblInvLocBin] 
										INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
											AND [tblInvLocBin].strLocName =  temp1.strLocName AND temp1.strSerialNumber=#TempINVSerialLot.strSerialNumber
											AND [tblInvLocBin].lngID =  temp1.lngBinID
								WHERE temp1.strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
									AND tblInvLocBin.bitInactive= 0
							), 0) AS decSumOnHand
					,(Select dteUpdatedDate from dbo.tblInvPriceTracking  where
						dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE) And a.uidPriceBasedID=@uidPriceBasedID
						GROUP BY a.strPartNumber
						))  as dteUpdatedDate
					--,tblInvPriceTracking.decPriceFrom
					--,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strCategory) AS RowNumber
					,#TempINVSerialLot.strSerialNumber AS SerialNumber
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM [tblInvExt] (NOLOCK)
				INNER JOIN [tblInv] (NOLOCK) ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				Inner join #TempINVSerialLot on [tblInv].strPartNumber = #TempINVSerialLot.strPartNumber and  [tblInvExt].strLocName = #TempINVSerialLot.strLocName
				INNER JOIN dbo.tblInvPrice (NOLOCK) ON (dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID or @uidPriceBasedID is null)
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = 'REGULAR')
				
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					--AND tblInvPriceTracking.lngInvPriceTrackID IN (
					--	SELECT Max(a.lngInvPriceTrackID)
					--	FROM tblInvPriceTracking a
					--	INNER JOIN tblPriceListsByDate b ON a.uidPriceBasedID = b.uidPriceBasedID
					--	WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
					--		AND (
					--			@SQDate BETWEEN b.dteStartDate
					--				AND b.dteFinishDate
					--			)
					--		AND (a.strPricelist = 'REGULAR')
					--	GROUP BY a.strPartNumber
					--	)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,#TempINVSerialLot.strSerialNumber 
					) As result  
					WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber				
			END
			ELSE
			BEGIN
				Select  0 AS bitSelect,*,
								CASE WHEN @SQApply = 0
								THEN 0 ELSE Cast(decSumOnHand as int) end as intAmount 
								from (
				SELECT 
					tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,(Select top 1 t.decSelling from tblInvPrice t where t.strPartNumber=tblInv.strPartNumber and t.strPricelist=@SQPricelist and t.uidPriceBasedID=@SQuidPriceBasedID) as decSelling
					,isnull((
							SELECT Sum(temp1.decQty)
										FROM [tblInvLocBin] 
										INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
											AND [tblInvLocBin].strLocName =  temp1.strLocName AND temp1.strSerialNumber=#TempINVSerialLot.strSerialNumber
											AND [tblInvLocBin].lngID =  temp1.lngBinID
								WHERE temp1.strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvLocBin.bitInactive= 0
							), 0) AS decSumOnHand
					 ,tblInvPriceTracking.dteUpdatedDate
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strCategory) AS RowNumber
					,#TempINVSerialLot.strSerialNumber AS SerialNumber
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM [tblInvExt] (NOLOCK)
				INNER JOIN [tblInv] (NOLOCK) ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				Inner join #TempINVSerialLot on [tblInv].strPartNumber = #TempINVSerialLot.strPartNumber and  [tblInvExt].strLocName = #TempINVSerialLot.strLocName
				INNER JOIN dbo.tblInvPrice  (NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN dbo.tblPriceListsByDate  (NOLOCK) ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				INNER JOIN dbo.tblInvPriceTracking  (NOLOCK) ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = @SQPricelist)
					AND (tblPriceListsByDate.uidPriceBasedID = @SQuidPriceBasedID)
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
							AND a.uidPriceBasedID = @SQuidPriceBasedID
						GROUP BY a.strPartNumber
						)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory	
					,tblInvPriceTracking.dteUpdatedDate	
					,#TempINVSerialLot.strSerialNumber			
					) As result  
					WHERE dteUpdatedDate is not null and RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
		END
	END
	ELSE
	BEGIN
		IF (@SQShowPrices = 0)
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
			 Select * from (
			 	Select  0 AS bitSelect,*,
								CASE WHEN @SQApply = 0
								THEN 0 ELSE Cast(decSumOnHand as int) end as intAmount,ROW_NUMBER () over (order by strCategory) AS RowNumber	,COUNT(*) over () AS intRowCount 
								from (
					SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,(Select top 1 t.decSelling from tblInvPrice t where t.strPartNumber=tblInv.strPartNumber and t.strPricelist='REGULAR' and t.uidPriceBasedID=@uidPriceBasedID) as decSelling
					,isnull((
							SELECT Sum(temp1.decQty)
										FROM [tblInvLocBin] 
										INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
											AND [tblInvLocBin].strLocName =  temp1.strLocName AND temp1.strSerialNumber=#TempINVSerialLot.strSerialNumber
											AND [tblInvLocBin].lngID =  temp1.lngBinID
								WHERE temp1.strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvLocBin.bitInactive = 0
							), 0) AS decSumOnHand
					
					,(Select dteUpdatedDate from dbo.tblInvPriceTracking  where
						dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						GROUP BY a.strPartNumber
						))  as dteUpdatedDate
						,#TempINVSerialLot.strSerialNumber AS SerialNumber
					--,tblInvPriceTracking.decPriceFrom
					--,tblInvPriceTracking.decPriceTo
					--,COUNT(*) over () AS intRowCount 
						,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM [tblInvExt] (NOLOCK)
				INNER JOIN [tblInv] (NOLOCK) ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				Inner join #TempINVSerialLot on [tblInv].strPartNumber = #TempINVSerialLot.strPartNumber and  [tblInvExt].strLocName = #TempINVSerialLot.strLocName
				INNER JOIN dbo.tblInvPrice (NOLOCK) ON (dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID or @uidPriceBasedID is null)
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = 'REGULAR')
					--AND (
					--	@SQDate BETWEEN tblPriceListsByDate.dteStartDate
					--		AND tblPriceListsByDate.dteFinishDate
					--	)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,decSumOnHand
					,#TempINVSerialLot.strSerialNumber
					) AS tblTemp1
				WHERE tblTemp1.decSumOnHand <> 0 
			) As Result
					
					WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
			ELSE
			BEGIN
			Select * from (
				Select  0 AS bitSelect,*,
								CASE WHEN @SQApply = 0
								THEN 0 ELSE Cast(decSumOnHand as int) end as intAmount ,ROW_NUMBER () over (order by strCategory) AS RowNumber,COUNT(*) over () AS intRowCount 
								from (
						SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,(Select top 1 t.decSelling from tblInvPrice t where t.strPartNumber=tblInv.strPartNumber and t.strPricelist=@SQPricelist and t.uidPriceBasedID=@SQuidPriceBasedID) as decSelling
					,isnull((
							SELECT Sum(temp1.decQty)
										FROM [tblInvLocBin] 
										INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
											AND [tblInvLocBin].strLocName =  temp1.strLocName AND temp1.strSerialNumber=#TempINVSerialLot.strSerialNumber
											AND [tblInvLocBin].lngID =  temp1.lngBinID
								WHERE temp1.strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvLocBin.bitInactive = 0
							), 0) AS decSumOnHand
					
					,(Select dteUpdatedDate from dbo.tblInvPriceTracking  where
			    dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE (a.uidPriceBasedID = @SQuidPriceBasedID)
						GROUP BY a.strPartNumber
						))  as dteUpdatedDate
					,#TempINVSerialLot.strSerialNumber AS SerialNumber
					--,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM [tblInvExt] (NOLOCK)
				INNER JOIN [tblInv] (NOLOCK) ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				Inner join #TempINVSerialLot on [tblInv].strPartNumber = #TempINVSerialLot.strPartNumber and  [tblInvExt].strLocName = #TempINVSerialLot.strLocName
				INNER JOIN dbo.tblInvPrice (NOLOCK) ON (dbo.tblInvPrice.uidPriceBasedID = @SQuidPriceBasedID or @SQuidPriceBasedID is null)	
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = @SQPricelist)
					
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,#TempINVSerialLot.strSerialNumber
					) AS tblTemp2
				WHERE tblTemp2.decSumOnHand <> 0 ) as results  WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
		END
		ELSE
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
				SELECT *
				FROM (
					SELECT 0 AS bitSelect
						,tblInv.strPartNumber
						,tblInv.strDesc
						,tblInv.strCategory
						,tblInv.strSubCategory
						--,tblInvExt.strLocName
						,tblInvPrice.decSelling
						,isnull((
								SELECT Sum(temp1.decQty)
										FROM [tblInvLocBin] 
										INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
											AND [tblInvLocBin].strLocName =  temp1.strLocName AND temp1.strSerialNumber=#TempINVSerialLot.strSerialNumber
											AND [tblInvLocBin].lngID =  temp1.lngBinID
								WHERE temp1.strPartNumber = [tblInv].strPartNumber
									AND (
										[tblInvLocBin].strBinCode = CASE 
											WHEN (
													@SQBinCode = ''
													OR @SQBinCode = '<<All Bin Locations>>'
													)
												THEN IsNull([tblInvLocBin].strBinCode, '')
											ELSE @SQBinCode
											END
										)
									AND (
										IsNull(tblInvLocBin.strLocName, '') = CASE 
											WHEN (
													@SQLocation = '<<All Locations>>'
													OR @SQLocation = ''
													)
												THEN IsNull(tblInvLocBin.strLocName, '')
											ELSE @SQLocation
											END
										)
									AND tblInvLocBin.bitInactive = 0
								), 0) AS decSumOnHand
						,(
							CASE 
								WHEN @SQApply = 0
									THEN 0
								ELSE CAST(isnull((
												SELECT Sum(#TempINVSerialLot.decQty)
												FROM [tblInvLocBin] 
												INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
													AND [tblInvLocBin].strLocName = temp1.strLocName AND temp1.strSerialNumber  = #TempINVSerialLot.strSerialNumber
													AND [tblInvLocBin].lngID =  temp1.lngBinID
												WHERE temp1.strPartNumber  = [tblInv].strPartNumber
													AND (
														[tblInvLocBin].strBinCode = CASE 
															WHEN (
																	@SQBinCode = ''
																	OR @SQBinCode = '<<All Bin Locations>>'
																	)
																THEN IsNull([tblInvLocBin].strBinCode, '')
															ELSE @SQBinCode
															END
														)
													AND (
														IsNull(tblInvLocBin.strLocName, '') = CASE 
															WHEN (
																	@SQLocation = '<<All Locations>>'
																	OR @SQLocation = ''
																	)
																THEN IsNull(tblInvLocBin.strLocName, '')
															ELSE @SQLocation
															END
														)
													AND tblInvExt.bitInactive = 0
												), 0) AS INT)
								END
							) AS intAmount
						,tblInvPriceTracking.dteUpdatedDate
						--,tblInvPriceTracking.decPriceFrom
						--,tblInvPriceTracking.decPriceTo
						,COUNT(*) over () AS intRowCount 
						,ROW_NUMBER () over (order by tblInv.strCategory) AS RowNumber
						,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
					FROM [tblInvExt] (NOLOCK)
					INNER JOIN [tblInv] (NOLOCK) ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
					Inner join #TempINVSerialLot on [tblInv].strPartNumber = #TempINVSerialLot.strPartNumber and  [tblInvExt].strLocName = #TempINVSerialLot.strLocName
					INNER JOIN dbo.tblInvPrice (NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					INNER JOIN dbo.tblPriceListsByDate (NOLOCK) ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
					INNER JOIN dbo.tblInvPriceTracking (NOLOCK) ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
					
					--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
					--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
					--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
					--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
					WHERE (
							tblInv.intType IN (
								1
								,11
								)
							)
						AND (tblInvPrice.strPricelist = 'REGULAR')
						AND (
							@SQDate BETWEEN tblPriceListsByDate.dteStartDate
								AND tblPriceListsByDate.dteFinishDate
							)
						AND (
							IsNull(tblInv.strCategory, '') = CASE 
								WHEN (
										@SQCategory = ''
										OR @SQCategory = '<<ALL Categories>>'
										)
									THEN IsNull(tblInv.strCategory, '')
								ELSE @SQCategory
								END
							)
						AND (
							IsNull(tblInv.strSubCategory, '') = CASE 
								WHEN (
										@SQSubCategory = '<<ALL Sub Categories>>'
										OR @SQSubCategory = ''
										)
									THEN IsNull(tblInv.strSubCategory, '')
								ELSE @SQSubCategory
								END
							)
						AND (
							IsNull(tblInvExt.strLocName, '') = CASE 
								WHEN (
										@SQLocation = '<<All Locations>>'
										OR @SQLocation = ''
										)
									THEN IsNull(tblInvExt.strLocName, '')
								ELSE @SQLocation
								END
							)
						AND (tblInvExt.bitInactive = 0)
						AND (tblInv.bitInactive = 0)
						AND (
							tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
							OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
							OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
							)
						AND tblInvPriceTracking.lngInvPriceTrackID IN (
							SELECT Max(a.lngInvPriceTrackID)
							FROM tblInvPriceTracking a
							INNER JOIN tblPriceListsByDate b ON a.uidPriceBasedID = b.uidPriceBasedID
							WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
								AND (
									@SQDate BETWEEN b.dteStartDate
										AND b.dteFinishDate
									)
								AND (a.strPricelist = 'REGULAR')
							GROUP BY a.strPartNumber
							)
					--AND (tblInvExtBin.decOnHand <> 0)
					GROUP BY tblInv.strPartNumber
						,tblInv.strDesc
						,tblInv.strCategory
						,tblInv.strSubCategory
						,tblInvPrice.decSelling
						,tblInvPriceTracking.dteUpdatedDate
						,#TempINVSerialLot.strSerialNumber 
					) AS tblTemp3
				WHERE tblTemp3.decSumOnHand <> 0 
					AND RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
			ELSE
			BEGIN
				SELECT *
				FROM (
					SELECT 0 AS bitSelect
						,tblInv.strPartNumber
						,tblInv.strDesc
						,tblInv.strCategory
						,tblInv.strSubCategory
						--,tblInvExt.strLocName
						,tblInvPrice.decSelling
						,isnull((
								SELECT Sum(temp1.decQty)
										FROM [tblInvLocBin] 
										INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
											AND [tblInvLocBin].strLocName =  temp1.strLocName AND temp1.strSerialNumber=#TempINVSerialLot.strSerialNumber
											AND [tblInvLocBin].lngID =  temp1.lngBinID
								WHERE temp1.strPartNumber = [tblInv].strPartNumber
									AND (
										[tblInvLocBin].strBinCode = CASE 
											WHEN (
													@SQBinCode = ''
													OR @SQBinCode = '<<All Bin Locations>>'
													)
												THEN IsNull([tblInvLocBin].strBinCode, '')
											ELSE @SQBinCode
											END
										)
									AND (
										IsNull(tblInvLocBin.strLocName, '') = CASE 
											WHEN (
													@SQLocation = '<<All Locations>>'
													OR @SQLocation = ''
													)
												THEN IsNull(tblInvLocBin.strLocName, '')
											ELSE @SQLocation
											END
										)
									AND tblInvLocBin.bitInactive = 0
								), 0) AS decSumOnHand
						,(
							CASE 
								WHEN @SQApply = 0
									THEN 0
								ELSE CAST(isnull((
									SELECT Sum(temp1.decQty)
										FROM [tblInvLocBin] 
										INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
											AND [tblInvLocBin].strLocName =  temp1.strLocName AND temp1.strSerialNumber=#TempINVSerialLot.strSerialNumber
											AND [tblInvLocBin].lngID =  temp1.lngBinID
									WHERE temp1.strPartNumber = [tblInv].strPartNumber
													AND (
														[tblInvLocBin].strBinCode = CASE 
															WHEN (
																	@SQBinCode = ''
																	OR @SQBinCode = '<<All Bin Locations>>'
																	)
																THEN IsNull([tblInvLocBin].strBinCode, '')
															ELSE @SQBinCode
															END
														)
													AND (
														IsNull(tblInvLocBin.strLocName, '') = CASE 
															WHEN (
																	@SQLocation = '<<All Locations>>'
																	OR @SQLocation = ''
																	)
																THEN IsNull(tblInvLocBin.strLocName, '')
															ELSE @SQLocation
															END
														)
													AND tblInvLocBin.bitInactive = 0
												), 0) AS INT)
								END
							) AS intAmount
						,tblInvPriceTracking.dteUpdatedDate
						,COUNT(*) over () AS intRowCount 
						,ROW_NUMBER () over (order by tblInv.strCategory) AS RowNumber
						,#TempINVSerialLot.strSerialNumber AS SerialNumber
						,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
					FROM [tblInvExt] (NOLOCK)
					INNER JOIN [tblInv] (NOLOCK) ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
					Inner join #TempINVSerialLot on [tblInv].strPartNumber = #TempINVSerialLot.strPartNumber and  [tblInvExt].strLocName = #TempINVSerialLot.strLocName
					INNER JOIN dbo.tblInvPrice (NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					INNER JOIN dbo.tblPriceListsByDate (NOLOCK) ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
					INNER JOIN dbo.tblInvPriceTracking (NOLOCK) ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
					
					WHERE (
							tblInv.intType IN (
								1
								,11
								)
							)
						AND (tblInvPrice.strPricelist = @SQPricelist)
						AND (tblPriceListsByDate.uidPriceBasedID = @SQuidPriceBasedID)
						AND (
							IsNull(tblInv.strCategory, '') = CASE 
								WHEN (
										@SQCategory = ''
										OR @SQCategory = '<<ALL Categories>>'
										)
									THEN IsNull(tblInv.strCategory, '')
								ELSE @SQCategory
								END
							)
						AND (
							IsNull(tblInv.strSubCategory, '') = CASE 
								WHEN (
										@SQSubCategory = '<<ALL Sub Categories>>'
										OR @SQSubCategory = ''
										)
									THEN IsNull(tblInv.strSubCategory, '')
								ELSE @SQSubCategory
								END
							)
						AND (
							IsNull(tblInvExt.strLocName, '') = CASE 
								WHEN (
										@SQLocation = '<<All Locations>>'
										OR @SQLocation = ''
										)
									THEN IsNull(tblInvExt.strLocName, '')
								ELSE @SQLocation
								END
							)
						AND (tblInvExt.bitInactive = 0)
						AND (tblInv.bitInactive = 0)
						AND (
							tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
							OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
							OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
							)
						AND tblInvPriceTracking.lngInvPriceTrackID IN (
							SELECT Max(a.lngInvPriceTrackID)
							FROM tblInvPriceTracking a
							WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
								AND a.uidPriceBasedID = @SQuidPriceBasedID
							GROUP BY a.strPartNumber
							)
					--AND (tblInvExtBin.decOnHand <> 0)
					GROUP BY tblInv.strPartNumber
						,tblInv.strDesc
						,tblInv.strCategory
						,tblInv.strSubCategory
						,tblInvPrice.decSelling
						,tblInvPriceTracking.dteUpdatedDate
						,#TempINVSerialLot.strSerialNumber 
					) AS tblTemp4
				WHERE tblTemp4.decSumOnHand <> 0 
					AND RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
		END
	END
DROP TABLE #TempINVSerialLot
END
GO

/****** Object:  StoredProcedure [dbo].[GettblInvByCriteriaByUserByPriceListCount]    Script Date: 2021-02-26 ******/
CREATE PROCEDURE [dbo].[GettblInvByCriteriaByUserByPriceListCount] (    
 @intType VARCHAR(50) = NULL    
 ,@UserName NVARCHAR(50) = NULL    
 ,@PriceList NVARCHAR(20) = NULL    
 ,@strLocName VARCHAR(500)= NULL    
 ,@Date VARCHAR(20) = NULL    
 ,@FilterType INTEGER = 0
 ,@PageSize INT = 25
 ,@PageNum  INT =1  
 ,@Search VARCHAR(500)=''
 ,@Category varchar(250)=''
 ,@SubCategory varchar(250)=''
 ,@SubCategoryGroup varchar(250)=''
 ,@VendorName varchar(500)=''
 ,@EmployeeName varchar(500)=''
 ,@BomItem bit=0
 ,@SNLotTrack bit=0
 ,@ColumnName varchar(500)=''
 )    
AS 
BEGIN
  IF LTRIM(RTRIM(@strLocName))<>'<<All Locations>>' 
  BEGIN
   SET @strLocName=(select Top 1 strLocName from tblInvLoc (NOLOCK) Where strDesc=@strLocName)
  END

 IF ( (LTRIM(RTRIM(@VendorName))='<<ALL Vendors>>')  OR (LTRIM(RTRIM(@VendorName))='<<ALL Customers>>'))
 BEGIN
		SET @VendorName=''
 END

 IF ( (LTRIM(RTRIM(@EmployeeName))='<<ALL Employees>>'))        
 BEGIN        
		SET @EmployeeName=''
 END 

  ----- Word Count Logic
    
  DECLARE @Count INT=0;   
  SET @Search = LTRIM(RTRIM(@Search)) -- Remove white space
		    
--- Use Pagination

 DECLARE @Offset INT
 SET @Offset = @PageSize * (@PageNum-1)
 
CREATE TABLE #TempCustVendEmp (
[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,    
[strCustVendEmp] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,    
[BudgetQty] [money] NULL,
[BudgetFrequency] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL)  
 

 IF (@FilterType = 1)     --  Vendor
 BEGIN
	INSERT INTO  #TempCustVendEmp
	SELECT strPartNumber,strVendName,BudgetQty = 0.00 ,BudgetFrequency = 'No Budget' FROM  dbo.tblInvVend (NOLOCK) Where strVendName=@VendorName
 END  
 ELSE IF(@FilterType = 2)			 --  Customer
 BEGIN
	INSERT INTO #TempCustVendEmp
	SELECT strPartNumber,strCustName,BudgetQty = 0.00 ,BudgetFrequency = 'No Budget' FROM  dbo.tblInvCustomer (NOLOCK)  Where strCustName=@VendorName
 END
 ELSE IF(@FilterType = 3)			 --  EMPLOYEE
 BEGIN
	INSERT INTO  #TempCustVendEmp
	SELECT strPartNumber,strEmpNumber,BudgetQty = CAST((CASE WHEN @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END) as decimal)
	,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
	WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)   from  dbo.tblEmpItemBudgetDT (NOLOCK) WHERE strEmpNumber=@EmployeeName
END 

if @Search <> ''
BEGIN
	IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
	BEGIN 
	
		SELECT Count(tblInv.strPartNumber) as [intRowCount]
		FROM dbo.tblInv(NOLOCK)  
		INNER JOIN [fnInvSearch](@Search, 0) AS CT on CT.strPartNumber=tblInv.strPartNumber
		LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
		LEFT JOIN #TempCustVendEmp  (NOLOCK) on #TempCustVendEmp.strPartNumber=tblInv.strPartNumber
		WHERE (dbo.tblInv.bitInactive = 0)
			AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
			AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)
			AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '''') = ''''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
			AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
			AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
			AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
			AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
			AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
			AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)
			AND( ISNULL(#tempCustVendEmp.strCustVendEmp,'') = (CASE 
					WHEN @FilterType IN (1,2) THEN 
						 CASE WHEN @VendorName<> '' THEN @VendorName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END	
					WHEN @FilterType = 3 THEN 
						 CASE WHEN @EmployeeName<> '' THEN @EmployeeName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END
					ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END))
			
	END	
	ELSE
	BEGIN
		SELECT Count(tblInv.strPartNumber)   as [intRowCount]
			  FROM dbo.tblInv (NOLOCK)        			 
			  LEFT JOIN tblInvExt  (NOLOCK) ON tblInv.strPartNumber = tblInvExt.strPartNumber
			  INNER JOIN [fnInvSearch](@Search, 0) AS CT on CT.strPartNumber=tblInv.strPartNumber
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  LEFT JOIN #TempCustVendEmp (NOLOCK) on #TempCustVendEmp.strPartNumber=tblInv.strPartNumber
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			  AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)
			  AND( ISNULL(#tempCustVendEmp.strCustVendEmp,'') = (CASE 
						WHEN @FilterType IN (1,2) THEN 
							 CASE WHEN @VendorName<> '' THEN @VendorName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END	
						WHEN @FilterType = 3 THEN 
							 CASE WHEN @EmployeeName<> '' THEN @EmployeeName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END
						ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END))
			AND   (
						((Case when tblInv.intType <> 5 then dbo.tblInvExt.strLocName else LTRIM(RTRIM(@strLocName)) end) = LTRIM(RTRIM(@strLocName))) AND
						 ((Case when tblInv.intType <> 5 then dbo.tblInvExt.bitInActive else 0 end)= 0)
						)	 	
END
END
ELSE
BEGIN
	If (@FilterType <> 0)
	BEGIN
		IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
		BEGIN 
			SELECT Count(dbo.tblInv.strPartNumber) as [intRowCount]
			FROM dbo.tblInv(NOLOCK)
			LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			LEFT JOIN #TempCustVendEmp (NOLOCK) on #TempCustVendEmp.strPartNumber=tblInv.strPartNumber
			WHERE (dbo.tblInv.bitInactive = 0)
				AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
				AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)
				AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '''') = ''''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							)
				AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
				AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
				AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
				AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
				AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
				AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)	
				AND ( ISNULL(#tempCustVendEmp.strCustVendEmp,'') = (CASE 
						WHEN @FilterType IN (1,2) THEN 
							 CASE WHEN @VendorName<> '' THEN @VendorName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END	
						WHEN @FilterType = 3 THEN 
							 CASE WHEN @EmployeeName<> '' THEN @EmployeeName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END
					ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END))		
		END
		ELSE
		BEGIN
			SELECT Count( dbo.tblInv.strPartNumber) as [intRowCount]
			  FROM dbo.tblInv (NOLOCK)        			 
			  LEFT JOIN tblInvExt (NOLOCK) ON dbo.tblInv.strPartNumber = tblInvExt.strPartNumber
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  LEFT JOIN #TempCustVendEmp (NOLOCK) on #TempCustVendEmp.strPartNumber=tblInv.strPartNumber
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')		) OR @intType = NULL)
			  AND ( ISNULL(#tempCustVendEmp.strCustVendEmp,'') = (CASE 
						WHEN @FilterType IN (1,2) THEN 
							 CASE WHEN @VendorName<> '' THEN @VendorName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END	
						WHEN @FilterType = 3 THEN 
							 CASE WHEN @EmployeeName<> '' THEN @EmployeeName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END
					ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END))
			 AND   (
						((Case when tblInv.intType <> 5 then dbo.tblInvExt.strLocName else LTRIM(RTRIM(@strLocName)) end) = LTRIM(RTRIM(@strLocName))) AND
						 ((Case when tblInv.intType <> 5 then dbo.tblInvExt.bitInActive else 0 end)= 0)
						)			  			  
		END
	END
	ELSE
	BEGIN
		IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
		BEGIN 
			SELECT Count(dbo.tblInv.strPartNumber) as [intRowCount]
			FROM dbo.tblInv(NOLOCK)
			LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			WHERE (dbo.tblInv.bitInactive = 0)
				AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
				AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)
				AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '''') = ''''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							)
				AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
				AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
				AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
				AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
				AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
				AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)			
		END
		ELSE
		BEGIN
			  SELECT Count( dbo.tblInv.strPartNumber) as [intRowCount]
			  FROM dbo.tblInv (NOLOCK)        			 
			  LEFT JOIN tblInvExt (NOLOCK) ON dbo.tblInv.strPartNumber = tblInvExt.strPartNumber
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')		) OR @intType = NULL)
				AND   (
						((Case when tblInv.intType <> 5 then dbo.tblInvExt.strLocName else LTRIM(RTRIM(@strLocName)) end) = LTRIM(RTRIM(@strLocName))) AND
						 ((Case when tblInv.intType <> 5 then dbo.tblInvExt.bitInActive else 0 end)= 0)
						)			  			  
		END
	END
END

Drop table #TempCustVendEmp
END
GO

/****** Object:  StoredProcedure [dbo].[GettblInvByCriteriaCount]    Script Date: 2021-02-26 ******/
CREATE PROCEDURE [dbo].[GettblInvByCriteriaCount] (    
@intType VARCHAR(50) = NULL        
 ,@strPricelist NVARCHAR(20) = NULL    
 ,@strLocName VARCHAR(500)= NULL    
 ,@Date VARCHAR(20) = NULL    
 ,@FilterType INTEGER = 0
 ,@PageSize INT = 25
 ,@PageNum  INT =1  
 ,@Search VARCHAR(500)=''
 ,@Category varchar(250)=''
 ,@SubCategory varchar(250)=''
 ,@SubCategoryGroup varchar(250)=''
 ,@VendorName varchar(500)=''
 ,@EmployeeName varchar(500)=''
 ,@BomItem bit=0
 ,@SNLotTrack bit=0
 ,@ColumnName varchar(500)=''
 )   
AS 
BEGIN
  IF LTRIM(RTRIM(@strLocName))<>'<<All Locations>>' 
  BEGIN
   SET @strLocName=(select Top 1 strLocName from tblInvLoc (NOLOCK) Where strDesc=@strLocName)
  END

 IF ( (LTRIM(RTRIM(@VendorName))='<<ALL Vendors>>')  OR (LTRIM(RTRIM(@VendorName))='<<ALL Customers>>'))
 BEGIN
		SET @VendorName=''
 END

 IF ( (LTRIM(RTRIM(@EmployeeName))='<<ALL Employees>>'))        
 BEGIN        
		SET @EmployeeName=''
 END 

 ----- Word Count Logic
    
  DECLARE @Count INT=0;   
  SET @Search = LTRIM(RTRIM(@Search)) -- Remove white space
 
   
--- Use Pagination

 DECLARE @Offset INT
 SET @Offset = @PageSize * (@PageNum-1)
 
CREATE TABLE #TempCustVendEmp (
[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,    
[strCustVendEmp] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,    
[BudgetQty] [money] NULL,
[BudgetFrequency] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL)  
 

 IF (@FilterType = 1)     --  Vendor
 BEGIN
	INSERT INTO  #TempCustVendEmp
	SELECT strPartNumber,strVendName,BudgetQty = 0.00 ,BudgetFrequency = 'No Budget' FROM  dbo.tblInvVend (NOLOCK) Where strVendName=@VendorName
 END  
 ELSE IF(@FilterType = 2)			 --  Customer
 BEGIN
	INSERT INTO #TempCustVendEmp
	SELECT strPartNumber,strCustName,BudgetQty = 0.00 ,BudgetFrequency = 'No Budget' FROM  dbo.tblInvCustomer (NOLOCK)  Where strCustName=@VendorName
 END
 ELSE IF(@FilterType = 3)			 --  EMPLOYEE
 BEGIN
	INSERT INTO  #TempCustVendEmp
	SELECT strPartNumber,strEmpNumber,BudgetQty = CAST((CASE WHEN @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END) as decimal)
	,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
	WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)   from  dbo.tblEmpItemBudgetDT (NOLOCK) WHERE strEmpNumber=@EmployeeName
END 

if @Search <> ''
BEGIN
	IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
	BEGIN 
	
		SELECT Count(tblInv.strPartNumber) as [intRowCount]
		FROM dbo.tblInv(NOLOCK)  
		 INNER JOIN [fnInvSearch](@Search, 0) AS CT on CT.strPartNumber=tblInv.strPartNumber
		LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
		LEFT JOIN #TempCustVendEmp (NOLOCK) on #TempCustVendEmp.strPartNumber=tblInv.strPartNumber
		WHERE (dbo.tblInv.bitInactive = 0)
			AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
			AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)
			AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
			AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
			AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
			AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
			AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
			AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)
			AND( ISNULL(#tempCustVendEmp.strCustVendEmp,'') = (CASE 
					WHEN @FilterType IN (1,2) THEN 
						 CASE WHEN @VendorName<> '' THEN @VendorName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END	
					WHEN @FilterType = 3 THEN 
						 CASE WHEN @EmployeeName<> '' THEN @EmployeeName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END
					ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END))
			
	END	
	ELSE
	BEGIN
		SELECT Count(tblInv.strPartNumber)   as [intRowCount]
			  FROM dbo.tblInv (NOLOCK)        			 
			  LEFT JOIN tblInvExt (NOLOCK) ON tblInv.strPartNumber = tblInvExt.strPartNumber
			   INNER JOIN [fnInvSearch](@Search, 0) AS CT on CT.strPartNumber=tblInv.strPartNumber
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  LEFT JOIN #TempCustVendEmp (NOLOCK) on #TempCustVendEmp.strPartNumber=tblInv.strPartNumber
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)				
			  AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)
			  AND( ISNULL(#tempCustVendEmp.strCustVendEmp,'') = (CASE 
						WHEN @FilterType IN (1,2) THEN 
							 CASE WHEN @VendorName<> '' THEN @VendorName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END	
						WHEN @FilterType = 3 THEN 
							 CASE WHEN @EmployeeName<> '' THEN @EmployeeName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END
						ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END))
			AND   (
						((Case when tblInv.intType <> 5 then dbo.tblInvExt.strLocName else LTRIM(RTRIM(@strLocName)) end) = LTRIM(RTRIM(@strLocName))) AND
						 ((Case when tblInv.intType <> 5 then dbo.tblInvExt.bitInActive else 0 end)= 0)
						)		 	
END
END
ELSE
BEGIN
	If (@FilterType <> 0)
	BEGIN
		IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
		BEGIN 
			SELECT Count(dbo.tblInv.strPartNumber) as [intRowCount]
			FROM dbo.tblInv(NOLOCK)
			LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			LEFT JOIN #TempCustVendEmp (NOLOCK) on #TempCustVendEmp.strPartNumber=tblInv.strPartNumber
			WHERE (dbo.tblInv.bitInactive = 0)
				AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
				AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)				
				AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
				AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
				AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
				AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
				AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
				AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)	
				AND ( ISNULL(#tempCustVendEmp.strCustVendEmp,'') = (CASE 
						WHEN @FilterType IN (1,2) THEN 
							 CASE WHEN @VendorName<> '' THEN @VendorName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END	
						WHEN @FilterType = 3 THEN 
							 CASE WHEN @EmployeeName<> '' THEN @EmployeeName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END
					ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END))		
		END
		ELSE
		BEGIN
			SELECT Count( dbo.tblInv.strPartNumber) as [intRowCount]
			  FROM dbo.tblInv (NOLOCK)        			 
			  LEFT JOIN tblInvExt (NOLOCK) ON dbo.tblInv.strPartNumber = tblInvExt.strPartNumber
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  LEFT JOIN #TempCustVendEmp (NOLOCK) on #TempCustVendEmp.strPartNumber=tblInv.strPartNumber
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)				
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')		) OR @intType = NULL)
			  AND ( ISNULL(#tempCustVendEmp.strCustVendEmp,'') = (CASE 
						WHEN @FilterType IN (1,2) THEN 
							 CASE WHEN @VendorName<> '' THEN @VendorName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END	
						WHEN @FilterType = 3 THEN 
							 CASE WHEN @EmployeeName<> '' THEN @EmployeeName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END
					ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END))
			  AND   (
						((Case when tblInv.intType <> 5 then dbo.tblInvExt.strLocName else LTRIM(RTRIM(@strLocName)) end) = LTRIM(RTRIM(@strLocName))) AND
						 ((Case when tblInv.intType <> 5 then dbo.tblInvExt.bitInActive else 0 end)= 0)
						)				  			  
		END
	END
	ELSE
	BEGIN
		IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
		BEGIN 
			SELECT Count(dbo.tblInv.strPartNumber) as [intRowCount]
			FROM dbo.tblInv(NOLOCK)
			LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			WHERE (dbo.tblInv.bitInactive = 0)
				AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
				AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)				
				AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
				AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
				AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
				AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
				AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
				AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)			
		END
		ELSE
		BEGIN
			  SELECT Count( dbo.tblInv.strPartNumber) as [intRowCount]
			  FROM dbo.tblInv (NOLOCK)        			 
			  LEFT JOIN tblInvExt (NOLOCK) ON dbo.tblInv.strPartNumber = tblInvExt.strPartNumber
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)				
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')		) OR @intType = NULL)
			  AND   (
						((Case when tblInv.intType <> 5 then dbo.tblInvExt.strLocName else LTRIM(RTRIM(@strLocName)) end) = LTRIM(RTRIM(@strLocName))) AND
						 ((Case when tblInv.intType <> 5 then dbo.tblInvExt.bitInActive else 0 end)= 0)
						)				  			  
		END
	END
END

Drop table #TempCustVendEmp
END
GO

/****** Object:  StoredProcedure [dbo].[GettblInvByCriteriaByUserCount]    Script Date: 2021-02-26 ******/
CREATE PROCEDURE [dbo].[GettblInvByCriteriaByUserCount] (    
 @intType VARCHAR(50) = NULL    
 ,@UserName NVARCHAR(50) = NULL      
 ,@strLocName VARCHAR(500)= NULL  
 ,@FilterType INTEGER = 0    
 ,@PageSize INT = 25
 ,@PageNum  INT =1  
 ,@Search VARCHAR(500)=''
 ,@Category varchar(250)=''
 ,@SubCategory varchar(250)=''
 ,@SubCategoryGroup varchar(250)=''
 ,@VendorName varchar(500)=''
 ,@EmployeeName varchar(500)=''
 ,@BomItem bit=0
 ,@SNLotTrack bit=0
 ,@ColumnName varchar(500)=''
 )    
AS 
BEGIN
  IF LTRIM(RTRIM(@strLocName))<>'<<All Locations>>' 
  BEGIN
   SET @strLocName=(select Top 1 strLocName from tblInvLoc (NOLOCK) Where strDesc=@strLocName)
  END

 IF ( (LTRIM(RTRIM(@VendorName))='<<ALL Vendors>>')  OR (LTRIM(RTRIM(@VendorName))='<<ALL Customers>>'))
 BEGIN
		SET @VendorName=''
 END

 IF ( (LTRIM(RTRIM(@EmployeeName))='<<ALL Employees>>'))        
 BEGIN        
		SET @EmployeeName=''
 END 

 ----- Word Count Logic
    
  DECLARE @Count INT=0;   
  SET @Search = LTRIM(RTRIM(@Search)) -- Remove white space
 		    
--- Use Pagination

 DECLARE @Offset INT
 SET @Offset = @PageSize * (@PageNum-1)
 
CREATE TABLE #TempCustVendEmp (
[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,    
[strCustVendEmp] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,    
[BudgetQty] [money] NULL,
[BudgetFrequency] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL)  
 

 IF (@FilterType = 1)     --  Vendor
 BEGIN
	INSERT INTO  #TempCustVendEmp
	SELECT strPartNumber,strVendName,BudgetQty = 0.00 ,BudgetFrequency = 'No Budget' FROM  dbo.tblInvVend (NOLOCK) Where strVendName=@VendorName
 END  
 ELSE IF(@FilterType = 2)			 --  Customer
 BEGIN
	INSERT INTO #TempCustVendEmp
	SELECT strPartNumber,strCustName,BudgetQty = 0.00 ,BudgetFrequency = 'No Budget' FROM  dbo.tblInvCustomer (NOLOCK)  Where strCustName=@VendorName
 END
 ELSE IF(@FilterType = 3)			 --  EMPLOYEE
 BEGIN
	INSERT INTO  #TempCustVendEmp
	SELECT strPartNumber,strEmpNumber,BudgetQty = CAST((CASE WHEN @EmployeeName <> '' THEN  decBudgetQty  ELSE 0.00 END) as decimal)
	,[BudgetFrequency] =  (Case when @EmployeeName <> '' THEN (CASE intBudgetFrequency WHEN 0 THEN 'Yearly' WHEN 1 THEN 'Half Yearly' WHEN 2 THEN 'Quarterly' WHEN 3 THEN 'Monthly'      
	WHEN 4 THEN 'Weekly' WHEN 5 THEN 'No Budget' END)  ELSE 'No Budget' END)   from  dbo.tblEmpItemBudgetDT (NOLOCK) WHERE strEmpNumber=@EmployeeName
END 

if @Search <> ''
BEGIN
	IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
	BEGIN 
	
		SELECT Count(tblInv.strPartNumber) as [intRowCount]
		FROM dbo.tblInv(NOLOCK)  
		INNER JOIN [fnInvSearch](@Search, 0) AS CT on CT.strPartNumber=tblInv.strPartNumber
		LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
		LEFT JOIN #TempCustVendEmp (NOLOCK) on #TempCustVendEmp.strPartNumber=tblInv.strPartNumber
		WHERE (dbo.tblInv.bitInactive = 0)
			AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
			AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)
			AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '''') = ''''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
			AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
			AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
			AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
			AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
			AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
			AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)
			AND( ISNULL(#tempCustVendEmp.strCustVendEmp,'') = (CASE 
					WHEN @FilterType IN (1,2) THEN 
						 CASE WHEN @VendorName<> '' THEN @VendorName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END	
					WHEN @FilterType = 3 THEN 
						 CASE WHEN @EmployeeName<> '' THEN @EmployeeName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END
					ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END))
			
	END	
	ELSE
	BEGIN
		SELECT Count(tblInv.strPartNumber)   as [intRowCount]
			  FROM dbo.tblInv (NOLOCK)        			 
			  LEFT JOIN tblInvExt (NOLOCK) ON tblInv.strPartNumber = tblInvExt.strPartNumber
			  INNER JOIN [fnInvSearch](@Search, 0) AS CT on CT.strPartNumber=tblInv.strPartNumber
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  LEFT JOIN #TempCustVendEmp (NOLOCK) on #TempCustVendEmp.strPartNumber=tblInv.strPartNumber
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			  AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)
			  AND( ISNULL(#tempCustVendEmp.strCustVendEmp,'') = (CASE 
						WHEN @FilterType IN (1,2) THEN 
							 CASE WHEN @VendorName<> '' THEN @VendorName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END	
						WHEN @FilterType = 3 THEN 
							 CASE WHEN @EmployeeName<> '' THEN @EmployeeName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END
						ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END))
			AND   (
						((Case when tblInv.intType <> 5 then dbo.tblInvExt.strLocName else LTRIM(RTRIM(@strLocName)) end) = LTRIM(RTRIM(@strLocName))) AND
						 ((Case when tblInv.intType <> 5 then dbo.tblInvExt.bitInActive else 0 end)= 0)
						)		 	
END
END
ELSE
BEGIN
	If (@FilterType <> 0)
	BEGIN
		IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
		BEGIN 
			SELECT Count(dbo.tblInv.strPartNumber) as [intRowCount]
			FROM dbo.tblInv(NOLOCK)
			LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			LEFT JOIN #TempCustVendEmp (NOLOCK) on #TempCustVendEmp.strPartNumber=tblInv.strPartNumber
			WHERE (dbo.tblInv.bitInactive = 0)
				AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
				AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)
				AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '''') = ''''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							)
				AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
				AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
				AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
				AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
				AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
				AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)	
				AND ( ISNULL(#tempCustVendEmp.strCustVendEmp,'') = (CASE 
						WHEN @FilterType IN (1,2) THEN 
							 CASE WHEN @VendorName<> '' THEN @VendorName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END	
						WHEN @FilterType = 3 THEN 
							 CASE WHEN @EmployeeName<> '' THEN @EmployeeName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END
					ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END))		
		END
		ELSE
		BEGIN
			SELECT Count( dbo.tblInv.strPartNumber) as [intRowCount]
			  FROM dbo.tblInv (NOLOCK)        			 
			  LEFT JOIN tblInvExt (NOLOCK) ON dbo.tblInv.strPartNumber = tblInvExt.strPartNumber
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  LEFT JOIN #TempCustVendEmp (NOLOCK) on #TempCustVendEmp.strPartNumber=tblInv.strPartNumber
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')		) OR @intType = NULL)
			  AND ( ISNULL(#tempCustVendEmp.strCustVendEmp,'') = (CASE 
						WHEN @FilterType IN (1,2) THEN 
							 CASE WHEN @VendorName<> '' THEN @VendorName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END	
						WHEN @FilterType = 3 THEN 
							 CASE WHEN @EmployeeName<> '' THEN @EmployeeName ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END
					ELSE ISNULL(#tempCustVendEmp.strCustVendEmp,'') END))
			  	AND   (
						((Case when tblInv.intType <> 5 then dbo.tblInvExt.strLocName else LTRIM(RTRIM(@strLocName)) end) = LTRIM(RTRIM(@strLocName))) AND
						 ((Case when tblInv.intType <> 5 then dbo.tblInvExt.bitInActive else 0 end)= 0)
						)				  			  
		END
	END
	ELSE
	BEGIN
		IF LTRIM(RTRIM(@strLocName)) = '<<All Locations>>'    
		BEGIN 
			SELECT Count(dbo.tblInv.strPartNumber) as [intRowCount]
			FROM dbo.tblInv(NOLOCK)
			LEFT JOIN dbo.tblInvSerialTypes(NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			WHERE (dbo.tblInv.bitInactive = 0)
				AND ISNULL(dbo.tblInv.bitUseBOM, 0) IN (@BomItem,1)
				AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)
				AND (
							(
								dbo.tblInv.strCategory IN (
									SELECT dbo.tblInvCat.strCategory
									FROM dbo.tblInvCat(NOLOCK)
									LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
									WHERE ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) = 0
										OR (
											ISNULL((
													SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec(NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
													), 0) > 0
											AND (
												ISNULL(@UserName, '''') = ''''
												OR dbo.tblInvCatSec.strUserName = @UserName
												)
											)
									)
								)
							OR dbo.tblInv.strCategory IS NULL
							)
				AND (@Category = '' OR dbo.tblInv.strCategory = @Category)
				AND (@SubCategory = '' OR dbo.tblInv.strSubCategory = @SubCategory)
				AND (@SubCategoryGroup = '' OR dbo.tblInv.strSubCategoryGroup = @SubCategoryGroup)
				AND (ISNULL(dbo.tblInv.bitInvSerialType, 0) IN (@SNLotTrack,1))
				AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate, 0) IN (@SNLotTrack,1))
				AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')) OR @intType = NULL)			
		END
		ELSE
		BEGIN
			  SELECT Count( dbo.tblInv.strPartNumber) as [intRowCount]
			  FROM dbo.tblInv (NOLOCK)        			 
			  LEFT JOIN tblInvExt (NOLOCK) ON dbo.tblInv.strPartNumber = tblInvExt.strPartNumber
			  LEFT JOIN dbo.tblInvSerialTypes (NOLOCK) ON dbo.tblInv.strInvSerialType = dbo.tblInvSerialTypes.strInvSerialType
			  WHERE 
			  (dbo.tblInv.bitInactive = 0)     AND  ISNULL(dbo.tblInv.bitUseBOM,0) IN (@BomItem,1)
				AND (
					(
						dbo.tblInv.strCategory IN (
							SELECT dbo.tblInvCat.strCategory
							FROM dbo.tblInvCat(NOLOCK)
							LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
							WHERE ISNULL((
										SELECT COUNT(dbo.tblInvCatSec.strCategory)
										FROM dbo.tblInvCatSec(NOLOCK)
										WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) > 0
									AND (
										ISNULL(@UserName, '''') = ''''
										OR dbo.tblInvCatSec.strUserName = @UserName
										)
									)
							)
						)
					OR dbo.tblInv.strCategory IS NULL
					)
			 AND (@Category='' or dbo.tblInv.strCategory =@Category)
			  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
			  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
			  AND (ISNULL(dbo.tblInv.bitInvSerialType,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(dbo.tblInvSerialTypes.bitTrackExpiryDate,0) IN (@SNLotTrack, 1))
			  AND (ISNULL(@intType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@intType, ',')		) OR @intType = NULL)
			AND   (
						((Case when tblInv.intType <> 5 then dbo.tblInvExt.strLocName else LTRIM(RTRIM(@strLocName)) end) = LTRIM(RTRIM(@strLocName))) AND
						 ((Case when tblInv.intType <> 5 then dbo.tblInvExt.bitInActive else 0 end)= 0)
						)				  			  
		END
	END
END

Drop table #TempCustVendEmp
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvByUserByPriceListCriteriaForPOSCount]    Script Date: 2021-03-01 ******/

CREATE PROCEDURE [dbo].[GetInvByUserByPriceListCriteriaForPOSCount] (    
 @InvType VARCHAR(50) = NULL
,@UserName VARCHAR(50) = NULL
,@Pricelist VARCHAR(20) = NULL
,@LocationName VARCHAR(500) = NULL
,@Date DATETIME = NULL
,@FilterType INT = 0
,@PageSize INT = 1
,@PageIndex INT = 1
,@SearchText VARCHAR(200) = NULL
,@isSearchTextPartNumber BIT = 0
,@Category VARCHAR(250) = ''
,@SubCategory VARCHAR(250) = ''
,@SubCategoryGroup VARCHAR(250) = ''
,@GetPartNumberOnly BIT = 0
 )    
AS 
BEGIN
  --IF LTRIM(RTRIM(@LocationName))<>'<<All Locations>>' 
  --BEGIN
  -- SET @LocationName=(select Top 1 strLocName from tblInvLoc (NOLOCK) Where strDesc=@LocationName)
  --END
 ----- Word Count Logic
    
  DECLARE @Count INT=0;   
  SET @SearchText = LTRIM(RTRIM(@SearchText)) -- Remove white space
 
    
--- Use Pagination
 DECLARE @Offset INT
 SET @Offset = @PageSize * (@PageIndex-1)
 
 DECLARE @uidPriceBasedID AS UNIQUEIDENTIFIER
 SET @uidPriceBasedID = NULL
 
 IF ISNULL(@PriceList, '') <> ''	AND ISNULL(@Date, '') <> ''
 BEGIN
 	SELECT TOP 1 @uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
 	FROM tblPriceListsByDate (NOLOCK)
 	INNER JOIN dbo.tblInvPrice (NOLOCK) ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
 	WHERE @Date BETWEEN dbo.tblPriceListsByDate.dteStartDate AND dbo.tblPriceListsByDate.dteFinishDate AND tblPriceListsByDate.strPricelist = @PriceList

	IF (@uidPriceBasedID IS NULL)
	BEGIN
		SET @uidPriceBasedID = NEWID()
	END

 END

if @SearchText <> ''  -- used for searching
BEGIN
	SELECT  Count(dbo.tblInv.strPartNumber) AS [TotalRows] 
				  FROM dbo.tblInv (NOLOCK)     
				  INNER JOIN tblInvExt (NOLOCK) ON  dbo.tblInv.strPartNumber = tblInvExt.strPartNumber
				  INNER JOIN [fnInvSearch](@SearchText, 0) AS CT on CT.strPartNumber= dbo.tblInv.strPartNumber   			 
				   WHERE 
				  (dbo.tblInv.bitInactive = 0)   
				  AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '''') = ''''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
				  AND (@Category='' or dbo.tblInv.strCategory =@Category)
				  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
				  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
				  AND (ISNULL(@InvType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@InvType, ',') WHERE data <> 5 ) OR @InvType = NULL)
				  AND (
					CAST(@isSearchTextPartNumber AS VARCHAR) = 0
					OR dbo.tblInv.strPartNumber = @SearchText
					)
					AND
					 (
						dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
						AND dbo.tblInvExt.bitInActive = 0
						)
				  
				  
END
ELSE
BEGIN
		SELECT  COUNT(tblInv.strPartNumber) AS [TotalRows] 
			FROM dbo.tblInv (NOLOCK)    
			INNER JOIN tblInvExt (NOLOCK) ON tblInv.strPartNumber = tblInvExt.strPartNumber    			 
			WHERE (dbo.tblInv.bitInactive = 0)    
					AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '''') = ''''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
				 AND (@Category='' or dbo.tblInv.strCategory =@Category)
				  AND (@SubCategory='' or dbo.tblInv.strSubCategory =@SubCategory)
				  AND (@SubCategoryGroup='' or dbo.tblInv.strSubCategoryGroup =@SubCategoryGroup)
				  AND (ISNULL(@InvType, '') = ''	OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@InvType, ',') WHERE data <> 5	) OR @InvType = NULL)
				  AND (
					CAST(@isSearchTextPartNumber AS VARCHAR) = 0
					OR dbo.tblInv.strPartNumber = @SearchText
					)
					AND (
						dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
						AND dbo.tblInvExt.bitInActive = 0
						)
END
END
GO

/****** Object:  StoredProcedure [dbo].[GetMobileCustomerDropdownList]    Script Date: 2021-03-01 ******/
CREATE PROCEDURE [dbo].[GetMobileCustomerDropdownList] @SQCustomerName AS VARCHAR(250) = NULL
AS
BEGIN
	--Currencies
	SELECT strCurrency AS CurrencyCode
		,strCurrName AS CurrencyName
		,strCurrSymbol AS CurrencySymbol
		,bitTrailingSymb AS IsTrailing
		,strThousSymb AS ThousandSymbol
		,strDecSymb AS DecimalSymbol
		,intDecimals AS DecimalPlaces
		,strCentsName AS CentsName
		,bitHome AS IsHomeCurrency
		,bitUpdateMon AS IsUpdateMon
		,bitUpdateTue AS IsUpdateTue
		,bitUpdateWed AS IsUpdateWed
		,bitUpdateThu AS IsUpdateThu
		,bitUpdateFri AS IsUpdateFri
		,bitUpdateSat AS IsUpdateSat
		,bitUpdateSun AS IsUpdateSun
		,dteUpdateTime AS UpdateTime
	FROM tblCurrency
	ORDER BY CurrencyCode

	--SalesPersons
	SELECT strSalesName
	FROM tblSalesPersons
	WHERE bitInactive = 0
	ORDER BY strSalesName

	--DeliveryMethods
	SELECT strDelMethodCode
	FROM tblDeliveryMethods
	WHERE bitInactive = 0
	ORDER BY strDelMethodCode

	--TradeDiscountMatrix
	SELECT strMatrixType AS MatrixType
		,bitInactive AS Inactive
	FROM tblTradeDiscMatrix
	ORDER BY strMatrixType

	--Departments
	SELECT CAST(intDept AS VARCHAR(200)) + ' ' + strDesc AS DepartmentName
	FROM tblDepartments

	--Terms
	SELECT strTerm AS Term
		,intAllowedIn AS AllowedIn
		,intNetDue AS NetDue
		,intNetCalcBy AS NetCalcBy
		,decSettleDisc AS SettleDisc
		,intSettleDays AS SettleDays
		,intSettleCalcBy AS SettleCalcBy
		,intStatCalculated AS StatCalculated
		,bitCOD AS COD
		,bitDefCustomers AS DefCustomers
		,bitDefVendors AS DefVendors
		,intTermType AS TermType
		,intCalCalcBy AS CalCalcBy
		,intISMonths AS ISMonths
		,bitIsHP AS IsHP
	FROM tblTerms
	ORDER BY Term

	--TenderTypes
	SELECT tt.strName AS Name
		,tt.strDescription AS Description
		,tt.intGLNumber AS GLNumber
		,tt.intDisplayOrder AS DisplayOrder
		,tt.bitAccount AS IsAccount
		,tt.bitInActive AS InActive
		,tt.bitCashbookIntegration AS IsCashbookIntegration
		,tt.strIPAddress AS IPAddress
		,tt.intPortNum AS PortNumber
		,ta.strDesc AS AccountDesc
	FROM tblTenderTypes tt
	LEFT JOIN tblAccounts ta ON tt.intGLNumber = ta.intGLNumber
	ORDER BY DisplayOrder

	--Pricelists
	SELECT strPricelist AS Pricelist
		,strDesc AS Description
		,bitInactive AS Inactive
	FROM tblPriceData
	ORDER BY Pricelist

	--Categories
	SELECT strCustCategory AS CustCategory
		,strDesc AS Description
		,bitInactive AS Inactive
		,bitIsHP AS IsHP
		,decISDefDep AS ISDefDep
		,decISDefIns AS ISDefDep
		,decISDefFinChrge AS ISDefFinChrge
		,strInstallSaleFC AS InstallSaleFC
		,strInstallSaleTaxCode AS InstallSaleTaxCode
		,decArrPenalty AS ArrPenalty
	FROM tblCustomerCat
	WHERE bitInactive = 0
	ORDER BY strCustCategory

	--ValueBasedEntities
	SELECT strValueBased AS ValueBased
		,bitInactive AS Inactive
	FROM tblValueBased
	ORDER BY strValueBased

	--FormDocsEntities
	SELECT bitDocDefault AS DocDefault
		,strForm AS Form
		,bitGlobal AS GlobalDoc
		,strName AS Name
		,strPrinter AS Printer
		,intType AS Type
	FROM tblFormsDocs

	--DeliveryRoutes
	SELECT strDelRouteCode AS DelRouteCode
		,strDelRouteDesc AS DelRouteDesc
		,strAddInfo AS AddInfo
		,strField1 AS Field1
		,strField2 AS Field2
		,strField3 AS Field3
		,strField4 AS Field4
		,strField5 AS Field5
		,strField6 AS Field6
		,bitInactive AS IsInactive
	FROM tblDeliveryRoutes
	WHERE bitInactive = 0
	ORDER BY strDelRouteCode

	--Provinces
	SELECT strProvince AS Province
		,lngID AS ProvinceId
		,strProvince AS ProvinceOld
	FROM tblProvince
	ORDER BY strProvince

	--Countries
	SELECT strCountryCode AS CountryCode
		,strCountryName AS CountryName
		,strTelCode AS TelCode
		,strDisplayName AS DisplayName
	FROM tblCountries
	ORDER BY CountryName

	--JobTitles
	SELECT lngID AS ID
		,strJobTitle AS JobTitle
	FROM tblJobTitles
	ORDER BY JobTitle

	--TaxCodes
	SELECT strTaxCode AS TaxCode
		,strDescription AS Description
	FROM tblTaxCodes
	WHERE intAllowedJournals IN (
			0
			,1
			)
	ORDER BY TaxCode

	--TaxAuthorities
	SELECT strTaxName AS TaxName
	FROM tblTaxDef
	ORDER BY TaxName

	--TaxExemptions
	SELECT strTaxName
	FROM tblCustomerEx
	WHERE strCustName = @SQCustomerName

	--TaxWTExemptions
	SELECT strTaxName
	FROM tblCustomerExWT
	WHERE strCustName = @SQCustomerName
END
GO

/****** Object:  StoredProcedure [dbo].[GetLoginHistoryList]    Script Date: 2021-03-01 ******/
CREATE PROCEDURE [dbo].[GetLoginHistoryList]
(
	@SQUserName varchar(250),
	@LoginDate datetime = null
)
AS
BEGIN
	IF @LoginDate IS NULL
		SET @LoginDate = GETDATE()

	SELECT [lngID]
      ,[intLoginID] AS LoginID
      ,[strUserName] AS UserName
      ,[dteLoginDate] AS LoginDate
      ,[dteTimeIn] AS TimeIn
      ,[dteTimeOut] AS TimeOut
	  ,[dteStartBreak] AS StartBreak
      ,[dteEndBreak] AS EndBreak
      ,[dteCreatedDate] AS CreatedDate
      ,[dteUpdatedDate] AS UpdatedDate
  FROM [dbo].[tblLoginHisotry] WHERE strUserName = @SQUserName and CAST(dteLoginDate as date) = cast (@LoginDate as DATE)
END
GO

/****** Object:  StoredProcedure [dbo].[AddUserLoginHistory]    Script Date: 2021-03-01 ******/
CREATE PROCEDURE [dbo].[AddUserLoginHistory]
(	
@UserName varchar(50),
@LoginID int = null,
@LoginDate datetime = null,
@TimeIn datetime = null,
@TimeOut datetime = null,
@IsEdit bit = 0
)
AS 
  BEGIN 
      IF( @IsEdit = 1 ) 
        BEGIN 
            UPDATE [dbo].[tblloginhisotry] 
            SET    [dtetimeout] = @TimeOut,
                   [dteupdateddate] = Getdate() 
            WHERE  strusername = @UserName AND intLoginID = @LoginID AND CAST(dteLoginDate as date) = cast (GETDATE() as DATE)
        END 
      ELSE 
        BEGIN 
			--DECLARE @LoginID int = 0
			--SELECT @LoginID = intLoginID from tblLoginHisotry where strUserName = @UserName and CAST(dteLoginDate as date) = cast (GETDATE() as DATE)
			
			DECLARE @MaxLoginID int = 0
			SELECT @MaxLoginID = MAX(intLoginID) from tblLoginHisotry
			SET @MaxLoginID = ISNULL(@MaxLoginID, 0) + 1	

			IF (@LoginID = 0)
				SET @LoginID = @MaxLoginID

            INSERT INTO [dbo].[tblloginhisotry] 
                        ([intLoginID],
						 [strusername], 
                         [dtelogindate], 
                         [dtetimein], 
                         [dtetimeout], 
                         [dtecreateddate], 
                         [dteupdateddate]) 
            VALUES      (@LoginID,
						 @UserName, 
                         @LoginDate, 
                         @TimeIn, 
                         Getdate(), 
                         Getdate(), 
                         Getdate()) 
        END 
  END
GO

/****** Object:  StoredProcedure [dbo].[UpdateUserLoginHistory]    Script Date: 2021-03-01 ******/
CREATE PROCEDURE [dbo].[UpdateUserLoginHistory]
(	
@UserName varchar(50),
@LoginID int = null,
@IsClockIn BIT = 0,
@IsClockOut BIT = 0,
@IsStartBreak BIT = 0,
@IsEndBreak BIT = 0,
@LoginDate datetime = null,
@TimeIn datetime = null,
@TimeOut datetime = null,
@BreakStart datetime = null,
@BreakEnd datetime = null,
@CreatedDate datetime = null,
@UpdatedDate datetime = null
)
AS 
  BEGIN 
	DECLARE @MaxLoginID int = 0
	DECLARE @LngID int = 0

	IF( @IsClockIn = 1 ) 
		BEGIN			
			SELECT @MaxLoginID = MAX(intLoginID) from tblLoginHisotry WHERE strUserName = @UserName AND CAST(dteLoginDate as date) = cast (@LoginDate as DATE)
			SET @MaxLoginID = ISNULL(@MaxLoginID, 0) + 1	

			IF (@LoginID = 0)
				SET @LoginID = @MaxLoginID

            INSERT INTO [dbo].[tblloginhisotry] 
                        ([intLoginID],
						 [strUserName], 
                         [dteLoginDate], 
                         [dteTimeIn], 
                         [dteTimeOut],
						 [dteStartBreak],
						 [dteEndBreak],
                         [dtecreateddate], 
                         [dteupdateddate]) 
            VALUES      (@LoginID,
						 @UserName, 
                         @LoginDate, --Login Date
                         @TimeIn, --Login Time
                         NULL, --Logout Time
						 NULL, --Start Break Time
						 NULL, --End Break Time
                         @CreatedDate, --Create Date
                         @UpdatedDate) --Update Date
		END
	ELSE IF( @IsClockOut = 1 ) 
		BEGIN
			SELECT @LngID = lngID FROM tblLoginHisotry WHERE strUserName = @UserName and dteLoginDate = (SELECT  MAX(dteLoginDate) FROM tblLoginHisotry WHERE strUserName = @UserName and CAST(dteLoginDate as date) = cast (@LoginDate as DATE))
			
			UPDATE [dbo].[tblloginhisotry] 
            SET    [dteTimeOut] = @TimeOut, -- Logout Time
                   [dteUpdatedDate] = @UpdatedDate  -- Update Date
            WHERE  strUserName = @UserName AND lngID = @LngID AND CAST(dteLoginDate as date) = cast (@LoginDate as DATE)
		END
	ELSE IF( @IsStartBreak = 1 ) 
		BEGIN
			SELECT @LngID = lngID FROM tblLoginHisotry WHERE strUserName = @UserName and dteLoginDate = (SELECT  MAX(dteLoginDate) FROM tblLoginHisotry WHERE strUserName = @UserName and CAST(dteLoginDate as date) = cast (@LoginDate as DATE))

			UPDATE [dbo].[tblloginhisotry] 
            SET    [dteStartBreak] = @BreakStart, -- Break Start Time
                   [dteUpdatedDate] = @UpdatedDate  --Update Date
            WHERE  strUserName = @UserName AND lngID = @LngID AND CAST(dteLoginDate as date) = cast (@LoginDate as DATE)
		END
	ELSE IF( @IsEndBreak = 1 ) 
		BEGIN
			SELECT @LngID = lngID FROM tblLoginHisotry WHERE strUserName = @UserName and dteLoginDate = (SELECT  MAX(dteLoginDate) FROM tblLoginHisotry WHERE strUserName = @UserName and CAST(dteLoginDate as date) = cast (@LoginDate as DATE))

			UPDATE [dbo].[tblloginhisotry] 
            SET    [dteEndBreak] = @BreakEnd, --Break end Time
                   [dteUpdatedDate] = @UpdatedDate  --Update Date
            WHERE  strUserName = @UserName AND lngID = @LngID AND CAST(dteLoginDate as date) = cast (@LoginDate as DATE)

			--Insert new row after break end			
			SELECT @MaxLoginID = MAX(intLoginID) from tblLoginHisotry WHERE strUserName = @UserName AND CAST(dteLoginDate as date) = cast (@LoginDate as DATE)
			SET @MaxLoginID = ISNULL(@MaxLoginID, 0) + 1	

			IF (@LoginID = 0)
				SET @LoginID = @MaxLoginID

            INSERT INTO [dbo].[tblloginhisotry] 
                        ([intLoginID],
						 [strUserName], 
                         [dteLoginDate], 
                         [dteTimeIn], 
                         [dteTimeOut],
						 [dteStartBreak],
						 [dteEndBreak],
                         [dtecreateddate], 
                         [dteupdateddate]) 
            VALUES      (@LoginID,
						 @UserName, 
                         @LoginDate, --Login Date
                         @TimeIn, --Login Time
                         NULL, --Logout Time
						 NULL, --Start Break Time
						 NULL, --End Break Time
                         @CreatedDate, --Create Date
                         @UpdatedDate) --Update Date
		END
  END
GO

/****** Object:  StoredProcedure [dbo].[GetUserLoginHistory]    Script Date: 2021-03-01 ******/
CREATE PROCEDURE [dbo].[GetUserLoginHistory]
	@UserName VARCHAR(50) = '',
	@Entry INT = 1
AS
BEGIN
	SET NOCOUNT ON;

	IF (@Entry = 1)
	BEGIN
		SELECT row_number() OVER (
			ORDER BY strUserName
				,dteLoginDate
			) Id
			,ISNULL(CONVERT(VARCHAR(25), dteLoginDate, 120), '-') AS Login
			,ISNULL(CONVERT(VARCHAR(25), dteTimeIn, 120), '-') AS TimeIn
			,ISNULL(CONVERT(VARCHAR(25), dteStartBreak, 120), '-') AS BreakStart
			,ISNULL(CONVERT(VARCHAR(25), dteEndBreak, 120), '-') AS BreakEnd
			,ISNULL(CONVERT(VARCHAR(25), dteTimeOut, 120), '-') AS TimeOut
		FROM tblLoginHisotry
		WHERE strUserName = @UserName
	END
	ELSE
	BEGIN
		SELECT row_number() OVER (
			ORDER BY strUserName
				,dteLoginDate
			) Id
			,ISNULL(CONVERT(VARCHAR(25), dteLoginDate, 114), '-') AS Login
			,ISNULL(CONVERT(VARCHAR(25), dteTimeIn, 114), '-') AS TimeIn
			,ISNULL(CONVERT(VARCHAR(25), dteStartBreak, 114), '-') AS BreakStart
			,ISNULL(CONVERT(VARCHAR(25), dteEndBreak, 114), '-') AS BreakEnd
			,ISNULL(CONVERT(VARCHAR(25), dteTimeOut, 114), '-') AS TimeOut
		FROM tblLoginHisotry
		WHERE strUserName = @UserName
		AND CAST(dteLoginDate as date) = CAST(GETDATE() as date)
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetUsersAvailability]    Script Date: 2021-03-01 ******/
CREATE PROCEDURE [dbo].[GetUsersAvailability]  
 @currentDateTime VARCHAR(50) = '',   
 @users NVARCHAR(MAX)=''   
AS  
BEGIN  
 SET NOCOUNT ON;  
  
 CREATE TABLE #temp (  
  row_id INT  
  ,name VARCHAR(50)  
 );  
  
 WITH test (  
  row_id  
  ,name  
  )  
 AS (  
  SELECT ROW_NUMBER() OVER (  
    PARTITION BY CAST(dteLoginDate as date), strUserName   
    ORDER BY strUserName COLLATE DATABASE_DEFAULT  
    ) RWID  
   ,strUserName  
  FROM tblLoginHisotry  
  WHERE strUserName COLLATE DATABASE_DEFAULT IN (  
    (  
     SELECT *  
     FROM fnSplitStringAsTable(@users, ',')  
     )  
    )  
   AND dbo.GetCustomDate(dteLoginDate) = dbo.GetCustomDate(@currentDateTime)  
  )  
 INSERT INTO #temp  
 SELECT max(row_id)  
  ,name  
 FROM test  
 GROUP BY name  
  
 SELECT h.strUserName AS UserName  
  ,CAST('1' as bit) AS IsAvailable  
 FROM (  
  SELECT ROW_NUMBER() OVER (  
    PARTITION BY CAST(dteLoginDate AS DATE), strUserName   
    ORDER BY strUserName COLLATE DATABASE_DEFAULT  , dteTimeIn
    ) RWID  
   ,strUserName  
   ,dteLoginDate  
   ,dteTimeIn  
   ,dteTimeOut  
   ,dteStartBreak  
   ,dteEndBreak  
  FROM tblLoginHisotry  
  ) h  
 INNER JOIN #temp t ON h.RWID = t.row_id  
  AND h.strUserName COLLATE DATABASE_DEFAULT = t.name  
 WHERE (  
   h.dteTimeIn IS NOT NULL  
   AND h.dteTimeOut IS NOT NULL  
   AND h.dteStartBreak IS NOT NULL  
   AND h.dteEndBreak IS NOT NULL  
   AND dbo.GetCustomDate(h.dteLoginDate) = dbo.GetCustomDate(@currentDateTime)  
   AND dbo.GetCustomDateTime(@currentDateTime) BETWEEN dbo.GetCustomDateTime(h.dteTimeIn)  
    AND dbo.GetCustomDateTime(h.dteTimeOut)  
   AND dbo.GetCustomDateTime(@currentDateTime) NOT BETWEEN dbo.GetCustomDateTime(h.dteStartBreak)  
    AND dbo.GetCustomDateTime(h.dteEndBreak)  
   )  
  OR (  
   h.dteTimeIn IS NOT NULL  
   AND h.dteTimeOut IS NULL  
   AND dbo.GetCustomDate(h.dteLoginDate) = dbo.GetCustomDate(@currentDateTime)  
   AND dbo.GetCustomDateTime(@currentDateTime) >= dbo.GetCustomDateTime(h.dteTimeIn)  
   AND h.dteStartBreak IS NULL  
   AND h.dteEndBreak IS NULL  
   )  
 DROP TABLE #temp  
  
END
GO

/****** Object:  StoredProcedure [dbo].[GetDeactivatedWebStoreItems]    Script Date: 2021-03-01 ******/
CREATE PROCEDURE [dbo].[GetDeactivatedWebStoreItems] (   
	  @UserName VARCHAR(50) = NULL
	 ,@LastUpdated DATETIME = NULL
	 ,@PageSize INT = 1
	 ,@PageIndex INT = 1
	 ,@SearchText VARCHAR(200) = ''	 	
	 )
	AS
BEGIN 
	 DECLARE @str1 AS NVARCHAR(40)
	 DECLARE @str2 AS NVARCHAR(40)
	 DECLARE @str3 AS NVARCHAR(40)
	 DECLARE @str4 AS NVARCHAR(40)
	 DECLARE @str5 AS NVARCHAR(40)
	 DECLARE @str6 AS NVARCHAR(40)
	 
	 DECLARE @TotalRows INT
	 DECLARE @TotalPages INT
	 DECLARE @StartRowIndex INT, @EndRowIndex INT;
	 DECLARE @Sql nVARCHAR(MAX)
	 DECLARE @TotalRecords NVARCHAR(MAX) = ''

	 IF ISNULL(@SearchText,'') = ''
	 BEGIN
	  SET @SearchText = ''
	 END
	 
	 DECLARE @strToCompareCat AS NVARCHAR(40)='Store Main'
	 DECLARE @strToCompareSubCat AS NVARCHAR(40)='Store Sub'
	 SELECT TOP 1 @str1=strInv1 ,@str2=strInv2 ,@str3=strInv3 ,@str4=strInv4 ,@str5=strInv5 ,@str6=strInv6 FROM dbo.tblOptFields

	 declare @IsUseFieldAsCategory as bit=0

	 if @str1 =@strToCompareCat 
	 begin
	  set @IsUseFieldAsCategory =1
	 end

	 DECLARE @SQLString NVARCHAR(500);  
	 DECLARE @ParmDefinition NVARCHAR(500);  
	 DECLARE @max_title bit = 1;  
   	 
	 SET @SQLString = N'SELECT Top 1 @max_titleOUT = bitSyncInventoryImages FROM [dbo].[tblCoOpts]';  
	 SET @ParmDefinition = N'@max_titleOUT bit OUTPUT';  
	 
	 IF COL_LENGTH('[dbo].[tblCoOpts]', 'bitSyncInventoryImages') IS NOT NULL
	 BEGIN
	 	EXECUTE sp_executesql @SQLString, @ParmDefinition, @max_titleOUT=@max_title OUTPUT;
	 END
	 
	 SELECT distinct dbo.tblInv.strPartNumber AS PartNumber
	   ,dbo.tblInv.strDesc AS [Description]
	   ,dbo.tblInv.intType AS [Type]
	   ,replace(dbo.tblInv.strCategory,'/','-') as Category
	   ,replace(dbo.tblInv.strSubCategory,'/','-') as SubCategory
	   ,case @IsUseFieldAsCategory when 1 then '' else replace(dbo.tblInv.strSubCategoryGroup,'/','-')  end as SubCategoryGroup
	   ,dbo.tblInv.bitUseBOM AS IsUseBOM
	   ,dbo.tblInv.bitInactive AS IsInactive
	   ,dbo.tblInv.decSumAvail AS SumAvail
	   ,dbo.tblInv.decSumAlloc AS SumAlloc
	   ,dbo.tblInv.decSumOnHand AS SumOnHand
	   ,dbo.tblInv.decSumValue AS SumValue
	   ,dbo.tblInv.decSumOnOrder AS SumOnOrder
	   ,dbo.tblInv.strField1 AS Field1
	   ,dbo.tblInv.strField2 AS Field2
	   ,dbo.tblInv.strField3 AS Field3
	   ,dbo.tblInv.strField4 AS Field4
	   ,dbo.tblInv.strField5 AS Field5
	   ,dbo.tblInv.strField6 AS Field6
	   ,dbo.tblInv.strBarCode AS BarCode
	   ,dbo.tblInv.bitInvSerialType AS IsInvSerialType
	   ,dbo.tblInv.strBarCode2 AS BarCode2
	   ,null AS Pricelist
	   ,0.0 AS Selling
	   ,CAST(ISNULL(CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE 0 END, 0) AS BIT) AS IsTrackExpiryDate
	   ,dbo.tblInv.decLastPPUnit AS LastPPUnit   
	   ,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
	   ,'' as CustVendID
	   ,null as ImgData
	   ,dbo.tblInv.strStockUnit as StockUnit
	   ,dbo.tblInv.decBuyToStock AS BuyToStock
	   ,tblInv.strExtendedDesc AS ExtendedDesc
	   ,tblInv.bitWebstoreItem AS IsWebstoreItem
	   ,(CASE WHEN @str1!=@strToCompareCat THEN 
			CASE WHEN @str2!=@strToCompareCat THEN 
				CASE WHEN @str3!=@strToCompareCat THEN 
					CASE WHEN @str4!=@strToCompareCat THEN
						CASE WHEN @str5!=@strToCompareCat THEN
							CASE WHEN @str6!=@strToCompareCat THEN
								dbo.tblInvCat.strDesc
							ELSE (CASE WHEN ISNULL(dbo.tblInv.strField6,'')='' THEN dbo.tblInvCat.strDesc ELSE dbo.tblInv.strField6 END) END
						ELSE (CASE WHEN ISNULL(dbo.tblInv.strField5,'')='' THEN dbo.tblInvCat.strDesc ELSE dbo.tblInv.strField5 END) END
					ELSE (CASE WHEN ISNULL(dbo.tblInv.strField4,'')='' THEN dbo.tblInvCat.strDesc ELSE dbo.tblInv.strField4 END) END
				ELSE (CASE WHEN ISNULL(dbo.tblInv.strField3,'')='' THEN dbo.tblInvCat.strDesc ELSE dbo.tblInv.strField3 END) END
			ELSE (CASE WHEN ISNULL(dbo.tblInv.strField2,'')='' THEN dbo.tblInvCat.strDesc ELSE dbo.tblInv.strField2 END) END
		ELSE (CASE WHEN ISNULL(dbo.tblInv.strField1,'')='' THEN dbo.tblInvCat.strDesc ELSE dbo.tblInv.strField1 END) END) AS CategoryDesc
	   ,tblInv.strUnitOfMeasure AS UnitOfMeasure
	   ,tblInv.strSellUnit AS SellUnit
	   ,tblInv.strSellStockUnit AS SellStockUnit
	   ,tblInv.decSellFromStock AS SellFromStock
	   ,tblInv.decDefSaleQty AS DefSaleQty
	   ,TotalRows = 0
	   ,TotalPages = 0
	   ,@IsUseFieldAsCategory as IsUseFieldAsCategory
	   ,tblInv.decMass as Mass
	   ,tblInv.decH as Height
	   ,tblInv.decD as Depth
	   ,tblInv.decW as Width
	   ,tblInv.strPOSDesc as POSDesc
	   ,tblInv.strAddInfo as AddInfo
	   ,@max_title as SyncInventoryImages
	   ,ISNULL(tblInvItemTax.bitOverrideTax, 0) as IsOverrideTax
	   ,ISNULL(tblInvItemTax.strOverridingTaxCode, '') as OverridingTaxCode
	   ,ISNULL(tblInvSubCat.strDesc, '') as SubCategoryDesc
	   ,ISNULL(tblInvGroupSubCat.strDesc, '') as SubCategoryGroupDesc
	  INTO #TempDeactivateWebstoreCTE
	  FROM dbo.tblInv (NOLOCK)	 
	  INNER JOIN dbo.tblInvCat (NOLOCK) ON tblInvCat.strCategory = tblinv.strCategory
	  INNER JOIN dbo.tblInvItemTax (NOLOCK) ON tblInvItemTax.strPartNumber = tblInv.strPartNumber
	  LEFT JOIN dbo.tblInvSubCat (NOLOCK) ON tblInvSubCat.strCategory = tblInv.strSubCategory
	  LEFT JOIN dbo.tblInvGroupSubCat (NOLOCK) ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
	  WHERE dbo.tblInv.intType in (1 ,4)  AND ((dbo.tblInv.bitInactive = 1   AND dbo.tblInv.bitWebstoreItem =1)	 OR (dbo.tblInv.bitInactive = 1   AND dbo.tblInv.bitWebstoreItem =0) OR (dbo.tblInv.bitInactive = 0   AND dbo.tblInv.bitWebstoreItem =0))
	  AND (@IsUseFieldAsCategory=0 or (@IsUseFieldAsCategory=1 and isnull(dbo.tblInv.strField1,'')<>'')  )
	  AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
			  FROM dbo.tblInvCat (NOLOCK)
			  LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
			  WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
				 FROM dbo.tblInvCatSec (NOLOCK)
				 WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
			  OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
				 FROM dbo.tblInvCatSec (NOLOCK)
				 WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
			   AND (ISNULL(@UserName,'')='' OR dbo.tblInvCatSec.strUserName = @UserName)))) 
	   OR dbo.tblInv.strCategory IS NULL)
	  AND (ISNULL(@LastUpdated,'')='' OR dbo.tblInv.dteLastUpdated >= @LastUpdated)
	  AND (ISNULL(@SearchText,'')='' OR dbo.tblInv.strPartNumber = @SearchText)   
	  ORDER BY PartNumber
	  
	  SELECT @TotalRows = count(*), @TotalPages = case (Count(*) % @PageSize) when 0 then  (Count(*) /@PageSize)  else  (Count(*) /@PageSize) + 1 end FROM #TempDeactivateWebstoreCTE 
	  UPDATE #TempDeactivateWebstoreCTE SET TotalRows = @TotalRows, TotalPages = @TotalPages;
	  
	  SELECT * FROM #TempDeactivateWebstoreCTE ORDER BY PartNumber
	  OFFSET @PageSize * (@PageIndex - 1) ROWS
          FETCH NEXT @PageSize ROWS ONLY OPTION (RECOMPILE);
	  
	  DROP TABLE #TempDeactivateWebstoreCTE;	  
END
GO

/****** Object:  StoredProcedure [dbo].[MobilePerformanceDashboardSummary]    Script Date: 2021-03-01 ******/
CREATE PROCEDURE [dbo].[MobilePerformanceDashboardSummary]
(  
@strDateFilter VARCHAR(100)=NULL,  
@dateFromDate DateTime=NULL,  
@dateToDate DateTime=NULL,
@FinancialYearStartDate DateTime=NULL,
@dateCustomFromDate DateTime=NULL,  
@dateCustomToDate DateTime=NULL
)  
AS  
BEGIN  

BEGIN --Get all calculated Margin Percentage
IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempMarginPercentage%')  
 DROP table  #tempMarginPercentage  
CREATE TABLE #tempMarginPercentage(  
 Id int null,   
 T_MarginPercentage money null,
 W_MarginPercentage money null,
 M_MarginPercentage money null,
 Y_MarginPercentage money null,
 C_MarginPercentage money null
)
DECLARE @Query NVARCHAR(MAX)=''
BEGIN TRY
Insert INTO #tempMarginPercentage exec sp_executesql N'MobilePerformanceDashboardMarginPercentage @strDateFilter = @strDateFilter,@dateFromDate = @dateFromDate,@dateToDate = @dateToDate,@FinancialYearStartDate = @FinancialYearStartDate,@dateCustomFromDate=@dateCustomFromDate,@dateCustomToDate=@dateCustomToDate',N'@strDateFilter nvarchar(16),@dateFromDate datetime,@dateToDate datetime,@FinancialYearStartDate datetime,@dateCustomFromDate datetime,@dateCustomToDate datetime',@strDateFilter=@strDateFilter,@dateFromDate=@dateFromDate,@dateToDate=@dateToDate,@FinancialYearStartDate=@FinancialYearStartDate,@dateCustomFromDate=@dateCustomFromDate,@dateCustomToDate=@dateCustomToDate
--SELECT * FROM #tempMarginPercentage
END TRY
BEGIN CATCH        
    SELECT ERROR_MESSAGE() AS ErrorMessage;
 END CATCH    
END

IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempToday%')  
 DROP table  #tempToday  
CREATE TABLE #tempToday(  
 Id int null,   
 T_Cost money null,
 T_LineTotalExcl money null,
 T_Revenue money null,
 T_Profit money null,
 T_MarginPercentage money null,
 T_Qty money null    
)

IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempWeek%')  
 DROP table  #tempWeek 
CREATE TABLE #tempWeek(  
 Id int null,   
 W_Cost money null,
 W_LineTotalExcl money null,
 W_Revenue money null,
 W_Profit money null,
 W_MarginPercentage money null,
 W_Qty money null  
)

IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempMonth%')  
 DROP table  #tempMonth 
CREATE TABLE #tempMonth(  
 Id int null,   
 M_Cost money null,
 M_LineTotalExcl money null,
 M_Revenue money null,
 M_Profit money null,
 M_MarginPercentage money null,
 M_Qty money null    
)

IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempYear%')  
 DROP table  #tempYear
CREATE TABLE #tempYear(  
 Id int null, 
 Y_Cost money null,
 Y_LineTotalExcl money null,
 Y_Revenue money null,
 Y_Profit money null,
 Y_MarginPercentage money null,
 Y_Qty money null  
)

IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempCustom%')  
 DROP table  #tempCustom
CREATE TABLE #tempCustom(  
 Id int null, 
 C_Cost money null,
 C_LineTotalExcl money null,
 C_Revenue money null,
 C_Profit money null,
 C_MarginPercentage money null,
 C_Qty money null  
)

DECLARE @SQL as nvarchar(max)

BEGIN --#tempToday :- Today Data

set @SQL = 'SELECT '
set @SQL = @SQL + '1 as Id
,sum(tblInvoiceDocDT.decCOGS) AS T_Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS T_LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS T_Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS T_Profit  
,sum(CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal)) AS T_MarginPercentage 
,SUM(tblInvoiceDocDT.decQty) AS T_Qty
FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@dateFromDate as date) and cast( @dateToDate as date))'

--PRINT '--Today Query'
--PRINT @SQL

INSERT INTO #tempToday
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime', 
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate

END 

BEGIN --#tempWeek :- Weekly Data
DECLARE @WeekStartDate datetime = NULL
SET @WeekStartDate = DATEADD(dd, -(DATEPART(dw, @dateFromDate)-1), GETDATE())

set @SQL = 'SELECT '
set @SQL = @SQL + '1 as Id
,sum(tblInvoiceDocDT.decCOGS) AS W_Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS W_LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS W_Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS W_Profit  
,sum(CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal)) AS W_MarginPercentage 
,SUM(tblInvoiceDocDT.decQty) AS W_Qty
FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@WeekStartDate as date) and cast( @dateToDate as date))'

--PRINT '--Week Query'
--PRINT @SQL

INSERT INTO #tempWeek
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime,@WeekStartDate datetime', 
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate, @WeekStartDate

END 

BEGIN --#tempMonth :- Monthly Data
DECLARE @MonthStartDate datetime = NULL
SELECT @MonthStartDate = DATEADD(month, DATEDIFF(month, 0, @dateFromDate), 0)

set @SQL = 'SELECT '
set @SQL = @SQL + '1 as Id
,sum(tblInvoiceDocDT.decCOGS) AS M_Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS M_LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS M_Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS M_Profit  
,sum(CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal)) AS M_MarginPercentage 
,SUM(tblInvoiceDocDT.decQty) AS M_Qty
FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@MonthStartDate as date) and cast( @dateToDate as date))'

--PRINT '--Month Query'
--PRINT @SQL

INSERT INTO #tempMonth
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime, @MonthStartDate datetime', 
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate, @MonthStartDate

END 

BEGIN --#tempYear :- Yearly Data
set @SQL = 'SELECT '
set @SQL = @SQL + '1 as Id 
,sum(tblInvoiceDocDT.decCOGS) AS Y_Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS Y_LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS Y_Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS Y_Profit  
,sum(CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal)) AS Y_MarginPercentage 
,SUM(tblInvoiceDocDT.decQty) AS Y_Qty
FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@FinancialYearStartDate as date) and cast( @dateToDate as date))'

--PRINT '--Year Query'
--PRINT @SQL

BEGIN TRY
INSERT INTO #tempYear
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime', 
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate
END TRY
BEGIN CATCH        
    SELECT ERROR_MESSAGE() AS ErrorMessage;
 END CATCH    
END

BEGIN --#tempCustom :- Custom Data
set @SQL = 'SELECT '
set @SQL = @SQL + '1 as Id 
,sum(tblInvoiceDocDT.decCOGS) AS C_Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS C_LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS C_Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS C_Profit  
,sum(CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal)) AS C_MarginPercentage 
,SUM(tblInvoiceDocDT.decQty) AS C_Qty
FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@dateCustomFromDate as date) and cast( @dateCustomToDate as date))'

--PRINT '--Year Query'
--PRINT @SQL

BEGIN TRY
INSERT INTO #tempCustom
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime,@dateCustomFromDate datetime,@dateCustomToDate datetime', 
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate,@dateCustomFromDate=@dateCustomFromDate,@dateCustomToDate=@dateCustomToDate
END TRY
BEGIN CATCH        
    SELECT ERROR_MESSAGE() AS ErrorMessage;
 END CATCH    
END

--PRINT 'DONE'

SELECT 
ISNULL(T.T_Cost,0) AS T_Cost,ISNULL(T.T_LineTotalExcl,0) AS T_LineTotalExcl,ISNULL(T.T_Revenue,0) AS T_Revenue,ISNULL(T.T_Profit,0) AS T_Profit,ISNULL(A.T_MarginPercentage,0) AS T_MarginPercentage,ISNULL(T.T_Qty,0) AS T_Qty, 
ISNULL(W.W_Cost,0) AS W_Cost,ISNULL(W.W_LineTotalExcl,0) AS W_LineTotalExcl,ISNULL(W.W_Revenue,0) AS W_Revenue,ISNULL(W.W_Profit,0) AS W_Profit,ISNULL(A.W_MarginPercentage,0) AS W_MarginPercentage,ISNULL(W.W_Qty,0) AS W_Qty, 
ISNULL(M.M_Cost,0) AS M_Cost,ISNULL(M.M_LineTotalExcl,0) AS M_LineTotalExcl,ISNULL(M.M_Revenue,0) AS M_Revenue,ISNULL(M.M_Profit,0) AS M_Profit,ISNULL(A.M_MarginPercentage,0) AS M_MarginPercentage,ISNULL(M.M_Qty,0) AS M_Qty, 
ISNULL(Y.Y_Cost,0) AS Y_Cost,ISNULL(Y.Y_LineTotalExcl,0) AS Y_LineTotalExcl,ISNULL(Y.Y_Revenue,0) AS Y_Revenue,ISNULL(Y.Y_Profit,0) AS Y_Profit,ISNULL(A.Y_MarginPercentage,0) AS Y_MarginPercentage,ISNULL(Y.Y_Qty,0) AS Y_Qty, 
ISNULL(C.C_Cost,0) AS C_Cost,ISNULL(C.C_LineTotalExcl,0) AS C_LineTotalExcl,ISNULL(C.C_Revenue,0) AS C_Revenue,ISNULL(C.C_Profit,0) AS C_Profit,ISNULL(A.C_MarginPercentage,0) AS C_MarginPercentage,ISNULL(C.C_Qty,0) AS C_Qty 
from #tempToday as T 
INNER JOIN #tempWeek as W on T.Id = W.Id
INNER JOIN #tempMonth as M on W.id = M.Id
INNER JOIN #tempYear as Y on M.id = Y.Id
INNER JOIN #tempCustom AS C on Y.Id = C.Id
INNER JOIN #tempMarginPercentage AS A on Y.Id = A.Id


DROP table  #tempToday
DROP table  #tempWeek
DROP table  #tempMonth
DROP table  #tempYear
DROP table  #tempCustom
DROP table #tempMarginPercentage
	      
END
GO

/****** Object:  StoredProcedure [dbo].[MobilePerformanceDashboardMarginPercentage]    Script Date: 2021-03-01 ******/
CREATE PROCEDURE [dbo].[MobilePerformanceDashboardMarginPercentage]
(  
@strDateFilter VARCHAR(100)=NULL,  
@dateFromDate DateTime=NULL,  
@dateToDate DateTime=NULL,
@FinancialYearStartDate DateTime=NULL,
@dateCustomFromDate DateTime=NULL,  
@dateCustomToDate DateTime=NULL
)  
AS    
BEGIN     
    DECLARE @SQL as nvarchar(max)

	DECLARE @T_Revenue DECIMAL (19, 2) = 0.00
	DECLARE @T_Profit DECIMAL (19, 2) = 0.00
	DECLARE @T_MarginPercentage  DECIMAL (19, 2) = 0.00
	DECLARE @W_Revenue  DECIMAL (19, 2) = 0.00
	DECLARE @W_Profit  DECIMAL (19, 2) = 0.00
	DECLARE @W_MarginPercentage  DECIMAL (19, 2) = 0.00
	DECLARE @M_Revenue  DECIMAL (19, 2) = 0.00
	DECLARE @M_Profit DECIMAL (19, 2) = 0.00
	DECLARE @M_MarginPercentage DECIMAL (19, 2) = 0.00
	DECLARE @Y_Revenue DECIMAL (19, 2) = 0.00
	DECLARE @Y_Profit DECIMAL (19, 2) = 0.00
	DECLARE @Y_MarginPercentage DECIMAL (19, 2) = 0.00
	DECLARE @C_Revenue DECIMAL (19, 2) = 0.00
	DECLARE @C_Profit DECIMAL (19, 2) = 0.00
	DECLARE @C_MarginPercentage DECIMAL (19, 2) = 0.00

BEGIN --#tempToday :- Today Data

SELECT @T_Revenue = sum(tblInvoiceDocDT.decLineTotExc)
,@T_Profit = sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS)
FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter='Transaction Date' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter='Required Date' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@dateFromDate as date) and cast( @dateToDate as date))

END 

BEGIN --#tempWeek :- Weekly Data
DECLARE @WeekStartDate datetime = NULL
SET @WeekStartDate = DATEADD(dd, -(DATEPART(dw, @dateFromDate)-1), GETDATE())

SELECT @W_Revenue = sum(tblInvoiceDocDT.decLineTotExc)
,@W_Profit = sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS)
FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter='Transaction Date' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter='Required Date' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@WeekStartDate as date) and cast( @dateToDate as date))
END 

BEGIN --#tempMonth :- Monthly Data
DECLARE @MonthStartDate datetime = NULL
SELECT @MonthStartDate = DATEADD(month, DATEDIFF(month, 0, @dateFromDate), 0)

SELECT @M_Revenue = sum(tblInvoiceDocDT.decLineTotExc)
,@M_Profit = sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS)
FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter='Transaction Date' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter='Required Date' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@MonthStartDate as date) and cast( @dateToDate as date))
END 

BEGIN --#tempYear :- Yearly Data
SELECT @Y_Revenue = sum(tblInvoiceDocDT.decLineTotExc)
,@Y_Profit = sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS)
FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter='Transaction Date' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter='Required Date' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@FinancialYearStartDate as date) and cast( @dateToDate as date))

END

BEGIN --#tempCustom :- Custom Data
SELECT @C_Revenue = sum(tblInvoiceDocDT.decLineTotExc)
,@C_Profit = sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS)
FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter='Transaction Date' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter='Required Date' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@dateCustomFromDate as date) and cast( @dateCustomToDate as date))

END

SET @T_MarginPercentage = round((@T_Profit / @T_Revenue) * 100, 2)
SET @W_MarginPercentage = round((@W_Profit / @W_Revenue) * 100, 2)
SET @M_MarginPercentage = round((@M_Profit / @M_Revenue) * 100, 2)
SET @Y_MarginPercentage = round((@Y_Profit / @Y_Revenue) * 100, 2)
SET @C_MarginPercentage = round((@C_Profit / @C_Revenue) * 100, 2)

SELECT 1 as Id,
ISNULL(@T_MarginPercentage, 0.0) AS T_MarginPercentage, 
ISNULL(@W_MarginPercentage, 0.0) AS W_MarginPercentage, 
ISNULL(@M_MarginPercentage, 0.0) AS M_MarginPercentage, 
ISNULL(@Y_MarginPercentage, 0.0) AS Y_MarginPercentage,
ISNULL(@C_MarginPercentage, 0.0) AS C_MarginPercentage

END 
GO

/****** Object:  StoredProcedure [dbo].[MobilePerformanceDashboardByFilter]    Script Date: 2021-03-01 ******/
CREATE PROCEDURE [dbo].[MobilePerformanceDashboardByFilter]
(  
@strDateFilter VARCHAR(100)=NULL,  
@dateFromDate DateTime=NULL,  
@dateToDate DateTime=NULL,
@FinancialYearStartDate DateTime=NULL,
@CategoryFilter bit=0,
@SubCategoryFilter bit=0,
@SubCategoryGroupFilter bit=0,
@SubCategoryGroupItemFilter bit=0,
@strCategory VARCHAR(100)=NULL,
@strSubCategory VARCHAR(100)=NULL,
@strSubCategoryGroup VARCHAR(100)=NULL,
@dateCustomFromDate DateTime=NULL,  
@dateCustomToDate DateTime=NULL
)  
AS  
BEGIN  

Begin --#tempToday
IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempToday%')  
 DROP table  #tempToday
 
CREATE TABLE #tempToday(  
 Id int null,
 Cost money null,
 LineTotalExcl money null,
 Revenue money null,
 Profit money null,
 MarginPercentage money null,
 Qty money null
)
IF @CategoryFilter = 1
	Begin
	ALTER TABLE #tempToday ADD ItemCategory varchar(100) null	
	ALTER TABLE #tempToday ADD CategoryDescription varchar(100) null	
	End
IF @CategoryFilter = 1 and @SubCategoryFilter = 1
	Begin
	ALTER TABLE #tempToday ADD ItemSubCategory varchar(100) null	
	ALTER TABLE #tempToday ADD SubCategoryDescription varchar(100) null	
	End
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
	Begin
	ALTER TABLE #tempToday ADD ItemSubCategoryGroup varchar(100) null	
	ALTER TABLE #tempToday ADD ItemSubCategoryGroupDescription varchar(100) null	
	End
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
	Begin
	ALTER TABLE #tempToday ADD ItemName varchar(100) null	
	ALTER TABLE #tempToday ADD ItemNameDescription varchar(100) null	
	End
End

Begin --#tempWeek
IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempWeek%')  
 DROP table  #tempWeek 
CREATE TABLE #tempWeek(  
 Id int null,
 Cost money null,
 LineTotalExcl money null,
 Revenue money null,
 Profit money null,
 MarginPercentage money null,
 Qty money null 
)
IF @CategoryFilter = 1
	Begin
	ALTER TABLE #tempWeek ADD ItemCategory varchar(100) null	
	ALTER TABLE #tempWeek ADD CategoryDescription varchar(100) null	
	End
IF @CategoryFilter = 1 and @SubCategoryFilter = 1
	Begin
	ALTER TABLE #tempWeek ADD ItemSubCategory varchar(100) null	
	ALTER TABLE #tempWeek ADD SubCategoryDescription varchar(100) null	
	End
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
	Begin
	ALTER TABLE #tempWeek ADD ItemSubCategoryGroup varchar(100) null	
	ALTER TABLE #tempWeek ADD ItemSubCategoryGroupDescription varchar(100) null	
	End
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
	Begin
	ALTER TABLE #tempWeek ADD ItemName varchar(100) null	
	ALTER TABLE #tempWeek ADD ItemNameDescription varchar(100) null	
	End
End

Begin --#tempMonth
IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempMonth%')  
 DROP table  #tempMonth 
CREATE TABLE #tempMonth(  
 Id int null,
 Cost money null,
 LineTotalExcl money null,
 Revenue money null,
 Profit money null,
 MarginPercentage money null,
 Qty money null  
)
IF @CategoryFilter = 1
	Begin
	ALTER TABLE #tempMonth ADD ItemCategory varchar(100) null	
	ALTER TABLE #tempMonth ADD CategoryDescription varchar(100) null	
	End
IF @CategoryFilter = 1 and @SubCategoryFilter = 1
	Begin
	ALTER TABLE #tempMonth ADD ItemSubCategory varchar(100) null	
	ALTER TABLE #tempMonth ADD SubCategoryDescription varchar(100) null	
	End
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
	Begin
	ALTER TABLE #tempMonth ADD ItemSubCategoryGroup varchar(100) null	
	ALTER TABLE #tempMonth ADD ItemSubCategoryGroupDescription varchar(100) null	
	End
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
	Begin
	ALTER TABLE #tempMonth ADD ItemName varchar(100) null	
	ALTER TABLE #tempMonth ADD ItemNameDescription varchar(100) null	
	End
End

Begin --#tempYear
IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempYear%')  
 DROP table  #tempYear
CREATE TABLE #tempYear(  
 Id int null,
 Cost money null,
 LineTotalExcl money null,
 Revenue money null,
 Profit money null,
 MarginPercentage money null,
 Qty money null  
)
IF @CategoryFilter = 1
	Begin
	ALTER TABLE #tempYear ADD ItemCategory varchar(100) null	
	ALTER TABLE #tempYear ADD CategoryDescription varchar(100) null	
	End
IF @CategoryFilter = 1 and @SubCategoryFilter = 1
	Begin
	ALTER TABLE #tempYear ADD ItemSubCategory varchar(100) null	
	ALTER TABLE #tempYear ADD SubCategoryDescription varchar(100) null	
	End
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
	Begin
	ALTER TABLE #tempYear ADD ItemSubCategoryGroup varchar(100) null	
	ALTER TABLE #tempYear ADD ItemSubCategoryGroupDescription varchar(100) null	
	End
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
	Begin
	ALTER TABLE #tempYear ADD ItemName varchar(100) null	
	ALTER TABLE #tempYear ADD ItemNameDescription varchar(100) null	
	End
End

Begin --#tempCustom
IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempCustom%')  
 DROP table  #tempCustom
CREATE TABLE #tempCustom(  
 Id int null,
 Cost money null,
 LineTotalExcl money null,
 Revenue money null,
 Profit money null,
 MarginPercentage money null,
 Qty money null  
)
IF @CategoryFilter = 1
	Begin
	ALTER TABLE #tempCustom ADD ItemCategory varchar(100) null	
	ALTER TABLE #tempCustom ADD CategoryDescription varchar(100) null	
	End
IF @CategoryFilter = 1 and @SubCategoryFilter = 1
	Begin
	ALTER TABLE #tempCustom ADD ItemSubCategory varchar(100) null	
	ALTER TABLE #tempCustom ADD SubCategoryDescription varchar(100) null	
	End
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
	Begin
	ALTER TABLE #tempCustom ADD ItemSubCategoryGroup varchar(100) null	
	ALTER TABLE #tempCustom ADD ItemSubCategoryGroupDescription varchar(100) null	
	End
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
	Begin
	ALTER TABLE #tempCustom ADD ItemName varchar(100) null	
	ALTER TABLE #tempCustom ADD ItemNameDescription varchar(100) null	
	End
End

DECLARE @SQL as nvarchar(max)

BEGIN --#tempToday :- Today Data

set @SQL = 'SELECT '

set @SQL = @SQL + '1 as Id
,sum(tblInvoiceDocDT.decCOGS) AS Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS Profit    
,AVG(CAST(ROUND(((CASE WHEN (dbo.tblInv.intType = 1) THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))) AS MarginPercentage 
,sum(tblInvoiceDocDT.decQty) AS Qty '
IF @CategoryFilter = 1
	set @SQL = @SQL + ', tblInv.strCategory AS ItemCategory, tblInvCat.strDesc AS CategoryDescription '
IF @CategoryFilter = 1 and @SubCategoryFilter = 1
	set @SQL = @SQL + ', tblInv.strSubCategory AS ItemSubCategory, tblInvSubCat.strDesc AS SubCategoryDescription '
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
	set @SQL = @SQL + ', tblInv.strSubCategoryGroup  AS ItemSubCategoryGroup, tblInvGroupSubCat.strDesc AS ItemSubCategoryGroupDescription '
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
	set @SQL = @SQL + ', tblInv.strPartNumber AS ItemName, tblInv.strDesc AS ItemNameDescription '
set @SQL = @SQL + 'FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@dateFromDate as date) and cast( @dateToDate as date)) and tblInv.intType in (1,2,3,4)'

IF @SubCategoryFilter = 1
 set @SQL = @SQL + ' and tblInv.strCategory = @strCategory and tblInv.strSubCategory is not null'
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategory = @strSubCategory and tblInv.strSubCategoryGroup is not null'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategoryGroup = @strSubCategoryGroup'
IF @CategoryFilter = 1
	set @SQL = @SQL + ' group by tblInv.strCategory, tblInvCat.strDesc'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1
	set @SQL = @SQL + ' ,tblInv.strSubCategory, tblInvSubCat.strDesc'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
	set @SQL = @SQL + ' ,tblInv.strSubCategoryGroup, tblInvGroupSubCat.strDesc'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
	set @SQL = @SQL + ' ,tblInv.strPartNumber, tblInv.strDesc'

--PRINT '--Today Query'
--PRINT @SQL

INSERT INTO #tempToday
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime, @CategoryFilter bit, @SubCategoryFilter bit, @SubCategoryGroupFilter bit, 
@SubCategoryGroupItemFilter bit, @strCategory varchar(100), @strSubCategory varchar(100), @strSubCategoryGroup varchar(100)', 
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate, @CategoryFilter, 
@SubCategoryFilter, @SubCategoryGroupFilter, @SubCategoryGroupItemFilter, @strCategory, @strSubCategory, @strSubCategoryGroup

END 

BEGIN --#tempWeek :- Weekly Data
DECLARE @WeekStartDate datetime = NULL
SET @WeekStartDate = DATEADD(dd, -(DATEPART(dw, @dateFromDate)-1), GETDATE())

set @SQL = 'SELECT '
set @SQL = @SQL + '1 as Id
,sum(tblInvoiceDocDT.decCOGS) AS Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS Profit  
,AVG(CAST(ROUND(((CASE WHEN (dbo.tblInv.intType = 1) THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))) AS MarginPercentage
,sum(tblInvoiceDocDT.decQty) AS Qty '
IF @CategoryFilter = 1
	set @SQL = @SQL + ', tblInv.strCategory AS ItemCategory, tblInvCat.strDesc AS CategoryDescription '
IF @CategoryFilter = 1 and @SubCategoryFilter = 1
	set @SQL = @SQL + ', tblInv.strSubCategory AS ItemSubCategory, tblInvSubCat.strDesc AS SubCategoryDescription '
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
	set @SQL = @SQL + ', tblInv.strSubCategoryGroup  AS ItemSubCategoryGroup, tblInvGroupSubCat.strDesc AS ItemSubCategoryGroupDescription '
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
	set @SQL = @SQL + ', tblInv.strPartNumber AS ItemName, tblInv.strDesc AS ItemNameDescription '
set @SQL = @SQL + 'FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@WeekStartDate as date) and cast( @dateToDate as date)) and tblInv.intType in (1,2,3,4)'

IF @SubCategoryFilter = 1
 set @SQL = @SQL + ' and tblInv.strCategory = @strCategory and tblInv.strSubCategory is not null'
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategory = @strSubCategory and tblInv.strSubCategoryGroup is not null'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategoryGroup = @strSubCategoryGroup'
IF @CategoryFilter = 1
	set @SQL = @SQL + ' group by tblInv.strCategory, tblInvCat.strDesc'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1
	set @SQL = @SQL + ' ,tblInv.strSubCategory, tblInvSubCat.strDesc'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
	set @SQL = @SQL + ' ,tblInv.strSubCategoryGroup, tblInvGroupSubCat.strDesc'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
	set @SQL = @SQL + ' ,tblInv.strPartNumber, tblInv.strDesc'

--PRINT '--Week Query'
--PRINT @SQL

INSERT INTO #tempWeek
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime, @CategoryFilter bit, @SubCategoryFilter bit, @SubCategoryGroupFilter bit, 
@SubCategoryGroupItemFilter bit, @strCategory varchar(100), @strSubCategory varchar(100), @strSubCategoryGroup varchar(100), @WeekStartDate datetime', 
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate, @CategoryFilter, 
@SubCategoryFilter, @SubCategoryGroupFilter, @SubCategoryGroupItemFilter, @strCategory, @strSubCategory, @strSubCategoryGroup, @WeekStartDate

END 

BEGIN --#tempMonth :- Monthly Data
DECLARE @MonthStartDate datetime = NULL
SELECT @MonthStartDate = DATEADD(month, DATEDIFF(month, 0, @dateFromDate), 0)

set @SQL = 'SELECT '
set @SQL = @SQL + '1 as Id
,sum(tblInvoiceDocDT.decCOGS) AS Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS Profit  
,AVG(CAST(ROUND(((CASE WHEN (dbo.tblInv.intType = 1) THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))) AS MarginPercentage
,sum(tblInvoiceDocDT.decQty) AS Qty '
IF @CategoryFilter = 1
	set @SQL = @SQL + ', tblInv.strCategory AS ItemCategory, tblInvCat.strDesc AS CategoryDescription '
IF @CategoryFilter = 1 and @SubCategoryFilter = 1
	set @SQL = @SQL + ', tblInv.strSubCategory AS ItemSubCategory, tblInvSubCat.strDesc AS SubCategoryDescription '
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
	set @SQL = @SQL + ', tblInv.strSubCategoryGroup  AS ItemSubCategoryGroup, tblInvGroupSubCat.strDesc AS ItemSubCategoryGroupDescription '
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
	set @SQL = @SQL + ', tblInv.strPartNumber AS ItemName, tblInv.strDesc AS ItemNameDescription '
set @SQL = @SQL + 'FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@MonthStartDate as date) and cast( @dateToDate as date)) and tblInv.intType in (1,2,3,4)'

IF @SubCategoryFilter = 1
 set @SQL = @SQL + ' and tblInv.strCategory = @strCategory and tblInv.strSubCategory is not null'
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategory = @strSubCategory and tblInv.strSubCategoryGroup is not null'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategoryGroup = @strSubCategoryGroup'
IF @CategoryFilter = 1
	set @SQL = @SQL + ' group by tblInv.strCategory, tblInvCat.strDesc'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1
	set @SQL = @SQL + ' ,tblInv.strSubCategory, tblInvSubCat.strDesc'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
	set @SQL = @SQL + ' ,tblInv.strSubCategoryGroup, tblInvGroupSubCat.strDesc'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
	set @SQL = @SQL + ' ,tblInv.strPartNumber, tblInv.strDesc'

--PRINT '--Month Query'
--PRINT @SQL

INSERT INTO #tempMonth
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime, @CategoryFilter bit, @SubCategoryFilter bit, @SubCategoryGroupFilter bit, 
@SubCategoryGroupItemFilter bit, @strCategory varchar(100), @strSubCategory varchar(100), @strSubCategoryGroup varchar(100), @MonthStartDate datetime', 
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate, @CategoryFilter, 
@SubCategoryFilter, @SubCategoryGroupFilter, @SubCategoryGroupItemFilter, @strCategory, @strSubCategory, @strSubCategoryGroup, @MonthStartDate

END 

BEGIN --#tempYear :- Yearly Data
set @SQL = 'SELECT '
set @SQL = @SQL + '1 as Id 
,sum(tblInvoiceDocDT.decCOGS) AS Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS Profit  
,AVG(CAST(ROUND(((CASE WHEN (dbo.tblInv.intType = 1) THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))) AS MarginPercentage
,sum(tblInvoiceDocDT.decQty) AS Qty '
IF @CategoryFilter = 1
	set @SQL = @SQL + ', tblInv.strCategory AS ItemCategory, tblInvCat.strDesc AS CategoryDescription '
IF @CategoryFilter = 1 and @SubCategoryFilter = 1
	set @SQL = @SQL + ', tblInv.strSubCategory AS ItemSubCategory, tblInvSubCat.strDesc AS SubCategoryDescription '
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
	set @SQL = @SQL + ', tblInv.strSubCategoryGroup  AS ItemSubCategoryGroup, tblInvGroupSubCat.strDesc AS ItemSubCategoryGroupDescription '
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
	set @SQL = @SQL + ', tblInv.strPartNumber AS ItemName, tblInv.strDesc AS ItemNameDescription '
set @SQL = @SQL + 'FROM tblInvoiceDocDT
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@FinancialYearStartDate as date) and cast( @dateToDate as date)) and tblInv.intType in (1,2,3,4)'

IF @SubCategoryFilter = 1
 set @SQL = @SQL + ' and tblInv.strCategory = @strCategory and tblInv.strSubCategory is not null'
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategory = @strSubCategory and tblInv.strSubCategoryGroup is not null'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategoryGroup = @strSubCategoryGroup'
IF @CategoryFilter = 1
	set @SQL = @SQL + ' group by tblInv.strCategory, tblInvCat.strDesc'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1
	set @SQL = @SQL + ' ,tblInv.strSubCategory, tblInvSubCat.strDesc'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
	set @SQL = @SQL + ' ,tblInv.strSubCategoryGroup, tblInvGroupSubCat.strDesc'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
	set @SQL = @SQL + ' ,tblInv.strPartNumber, tblInv.strDesc'

--PRINT '--Year Query'
--PRINT @SQL

BEGIN TRY
INSERT INTO #tempYear
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime, @CategoryFilter bit, @SubCategoryFilter bit, @SubCategoryGroupFilter bit, 
@SubCategoryGroupItemFilter bit, @strCategory varchar(100), @strSubCategory varchar(100), @strSubCategoryGroup varchar(100)', 
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate, @CategoryFilter, 
@SubCategoryFilter, @SubCategoryGroupFilter, @SubCategoryGroupItemFilter, @strCategory, @strSubCategory, @strSubCategoryGroup
END TRY
BEGIN CATCH        
    SELECT ERROR_MESSAGE() AS ErrorMessage;
 END CATCH    
END

BEGIN --#tempCustom :- Custom Data
set @SQL = 'SELECT '
set @SQL = @SQL + '1 as Id 
,sum(tblInvoiceDocDT.decCOGS) AS Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS Profit  
,AVG(CAST(ROUND(((CASE WHEN (dbo.tblInv.intType = 1 OR dbo.tblInv.intType = 2 OR dbo.tblInv.intType = 3 OR dbo.tblInv.intType = 4) THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))) AS MarginPercentage
,sum(tblInvoiceDocDT.decQty) AS Qty '
IF @CategoryFilter = 1
	set @SQL = @SQL + ', tblInv.strCategory AS ItemCategory, tblInvCat.strDesc AS CategoryDescription '
IF @CategoryFilter = 1 and @SubCategoryFilter = 1
	set @SQL = @SQL + ', tblInv.strSubCategory AS ItemSubCategory, tblInvSubCat.strDesc AS SubCategoryDescription '
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
	set @SQL = @SQL + ', tblInv.strSubCategoryGroup  AS ItemSubCategoryGroup, tblInvGroupSubCat.strDesc AS ItemSubCategoryGroupDescription '
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
	set @SQL = @SQL + ', tblInv.strPartNumber AS ItemName, tblInv.strDesc AS ItemNameDescription '
set @SQL = @SQL + 'FROM tblInvoiceDocDT
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@dateCustomFromDate as date) and cast( @dateCustomToDate as date)) and tblInv.intType in (1,2,3,4)'

IF @SubCategoryFilter = 1
 set @SQL = @SQL + ' and tblInv.strCategory = @strCategory and tblInv.strSubCategory is not null'
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategory = @strSubCategory and tblInv.strSubCategoryGroup is not null'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategoryGroup = @strSubCategoryGroup'
IF @CategoryFilter = 1
	set @SQL = @SQL + ' group by tblInv.strCategory, tblInvCat.strDesc'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1
	set @SQL = @SQL + ' ,tblInv.strSubCategory, tblInvSubCat.strDesc'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
	set @SQL = @SQL + ' ,tblInv.strSubCategoryGroup, tblInvGroupSubCat.strDesc'
IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
	set @SQL = @SQL + ' ,tblInv.strPartNumber, tblInv.strDesc'

--PRINT '--Custom Query'
--PRINT @SQL

BEGIN TRY
INSERT INTO #tempCustom
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime, @CategoryFilter bit, @SubCategoryFilter bit, @SubCategoryGroupFilter bit, 
@SubCategoryGroupItemFilter bit, @strCategory varchar(100), @strSubCategory varchar(100), @strSubCategoryGroup varchar(100), @dateCustomFromDate datetime, @dateCustomToDate datetime', 
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate, @CategoryFilter, 
@SubCategoryFilter, @SubCategoryGroupFilter, @SubCategoryGroupItemFilter, @strCategory, @strSubCategory, @strSubCategoryGroup, @dateCustomFromDate, @dateCustomToDate
END TRY
BEGIN CATCH        
    SELECT ERROR_MESSAGE() AS ErrorMessage;
 END CATCH    
END

--PRINT 'DONE'

select * from #tempToday
select * from #tempWeek
select * from #tempMonth
select * from #tempYear
select * from #tempCustom

DROP table  #tempToday
DROP table  #tempWeek
DROP table  #tempMonth
DROP table  #tempYear
DROP table #tempCustom
	      
END
GO

/****** Object:  StoredProcedure [dbo].[MobilePerformanceDashboardUnAssignedItemGroup]    Script Date: 2021-03-01 ******/
CREATE PROCEDURE [dbo].[MobilePerformanceDashboardUnAssignedItemGroup]
(  
@strDateFilter VARCHAR(100)=NULL,  
@dateFromDate DateTime=NULL,  
@dateToDate DateTime=NULL,
@FinancialYearStartDate DateTime=NULL,
@CategoryFilter bit=1,
@SubCategoryFilter bit=0,
@SubCategoryGroupFilter bit=0,
@SubCategoryGroupItemFilter bit=0,
@strCategory VARCHAR(100)=NULL,
@strSubCategory VARCHAR(100)=NULL,
@strSubCategoryGroup VARCHAR(100)=NULL,
@dateCustomFromDate DateTime=NULL,  
@dateCustomToDate DateTime=NULL
)  
AS  
BEGIN  

Begin --#tempToday
IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempToday%')  
 DROP table  #tempToday
 
CREATE TABLE #tempToday(  
 Id int null,
 Cost money null,
 LineTotalExcl money null,
 Revenue money null,
 Profit money null,
 MarginPercentage money null,
 Qty money null
)
End

Begin --#tempWeek
IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempWeek%')  
 DROP table  #tempWeek 
CREATE TABLE #tempWeek(  
 Id int null,
 Cost money null,
 LineTotalExcl money null,
 Revenue money null,
 Profit money null,
 MarginPercentage money null,
 Qty money null
)
End

Begin --#tempMonth
IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempMonth%')  
 DROP table  #tempMonth 
CREATE TABLE #tempMonth(  
 Id int null,
 Cost money null,
 LineTotalExcl money null,
 Revenue money null,
 Profit money null,
 MarginPercentage money null,
 Qty money null
)
End

Begin --#tempYear
IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempYear%')  
 DROP table  #tempYear
CREATE TABLE #tempYear(  
 Id int null,
 Cost money null,
 LineTotalExcl money null,
 Revenue money null,
 Profit money null,
 MarginPercentage money null,
 Qty money null
)
End

Begin --#tempCustom
IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempCustom%')  
 DROP table  #tempCustom
CREATE TABLE #tempCustom(  
 Id int null,
 Cost money null,
 LineTotalExcl money null,
 Revenue money null,
 Profit money null,
 MarginPercentage money null,
 Qty money null
)
End

DECLARE @SQL as nvarchar(max)

BEGIN --#tempToday :- Today Data

set @SQL = 'SELECT '

set @SQL = @SQL + '1 as Id
,sum(tblInvoiceDocDT.decCOGS) AS Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS Profit  
,AVG(CAST(ROUND(((CASE WHEN dbo.tblInv.intType IN (1) THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))) AS MarginPercentage 
,sum(tblInvoiceDocDT.decQty) AS Qty '

set @SQL = @SQL + 'FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@dateFromDate as date) and cast( @dateToDate as date)) 
 and tblInv.intType IN (1,2,3,4) and tblInv.strCategory = @strCategory '
IF @SubCategoryFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategory is null'
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategoryGroup is null'
--set @SQL = @SQL + ' group by tblInv.strPartNumber, tblInv.strDesc'

--PRINT '--Today Query'
--PRINT @SQL

INSERT INTO #tempToday
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime, @CategoryFilter bit, @SubCategoryFilter bit, @SubCategoryGroupFilter bit, 
@SubCategoryGroupItemFilter bit, @strCategory varchar(100), @strSubCategory varchar(100), @strSubCategoryGroup varchar(100)', 
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate, @CategoryFilter, 
@SubCategoryFilter, @SubCategoryGroupFilter, @SubCategoryGroupItemFilter, @strCategory, @strSubCategory, @strSubCategoryGroup

END 

BEGIN --#tempWeek :- Weekly Data
DECLARE @WeekStartDate datetime = NULL
SET @WeekStartDate = DATEADD(dd, -(DATEPART(dw, @dateFromDate)-1), GETDATE())

set @SQL = 'SELECT '
set @SQL = @SQL + '1 as Id
,sum(tblInvoiceDocDT.decCOGS) AS Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS Profit  
,AVG(CAST(ROUND(((CASE WHEN dbo.tblInv.intType IN (1) THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))) AS MarginPercentage 
,sum(tblInvoiceDocDT.decQty) AS Qty '

set @SQL = @SQL + 'FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@WeekStartDate as date) and cast( @dateToDate as date)) 
 and tblInv.intType IN (1,2,3,4) and tblInv.strCategory = @strCategory '

IF @SubCategoryFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategory is null'
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategoryGroup is null'
--set @SQL = @SQL + ' group by tblInv.strPartNumber, tblInv.strDesc'


--PRINT '--Week Query'
--PRINT @SQL

INSERT INTO #tempWeek
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime, @CategoryFilter bit, @SubCategoryFilter bit, @SubCategoryGroupFilter bit, 
@SubCategoryGroupItemFilter bit, @strCategory varchar(100), @strSubCategory varchar(100), @strSubCategoryGroup varchar(100), @WeekStartDate datetime', 
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate, @CategoryFilter, 
@SubCategoryFilter, @SubCategoryGroupFilter, @SubCategoryGroupItemFilter, @strCategory, @strSubCategory, @strSubCategoryGroup, @WeekStartDate

END 

BEGIN --#tempMonth :- Monthly Data
DECLARE @MonthStartDate datetime = NULL
SELECT @MonthStartDate = DATEADD(month, DATEDIFF(month, 0, @dateFromDate), 0)

set @SQL = 'SELECT '
set @SQL = @SQL + '1 as Id
,sum(tblInvoiceDocDT.decCOGS) AS Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS Profit  
,AVG(CAST(ROUND(((CASE WHEN dbo.tblInv.intType IN (1) THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))) AS MarginPercentage 
,sum(tblInvoiceDocDT.decQty) AS Qty '
set @SQL = @SQL + 'FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@MonthStartDate as date) and cast( @dateToDate as date)) 
 and tblInv.intType IN (1,2,3,4) and tblInv.strCategory = @strCategory '

IF @SubCategoryFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategory is null'
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategoryGroup is null'
--set @SQL = @SQL + ' group by tblInv.strPartNumber, tblInv.strDesc'


--PRINT '--Month Query'
--PRINT @SQL

INSERT INTO #tempMonth
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime, @CategoryFilter bit, @SubCategoryFilter bit, @SubCategoryGroupFilter bit, 
@SubCategoryGroupItemFilter bit, @strCategory varchar(100), @strSubCategory varchar(100), @strSubCategoryGroup varchar(100), @MonthStartDate datetime', 
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate, @CategoryFilter, 
@SubCategoryFilter, @SubCategoryGroupFilter, @SubCategoryGroupItemFilter, @strCategory, @strSubCategory, @strSubCategoryGroup, @MonthStartDate

END 

BEGIN --#tempYear :- Yearly Data
set @SQL = 'SELECT '
set @SQL = @SQL + '1 as Id 
,sum(tblInvoiceDocDT.decCOGS) AS Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS Profit  
,AVG(CAST(ROUND(((CASE WHEN dbo.tblInv.intType IN (1) THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))) AS MarginPercentage 
,sum(tblInvoiceDocDT.decQty) AS Qty ' 
set @SQL = @SQL + 'FROM tblInvoiceDocDT
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@FinancialYearStartDate as date) and cast( @dateToDate as date)) 
 and tblInv.intType IN (1,2,3,4) and tblInv.strCategory = @strCategory '
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 0
 set @SQL = @SQL + ' and tblInv.strSubCategory is null'
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategory = @strSubCategory and tblInv.strSubCategoryGroup is null'

--PRINT '--Year Query'
--PRINT @SQL

BEGIN TRY
INSERT INTO #tempYear
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime, @CategoryFilter bit, @SubCategoryFilter bit, @SubCategoryGroupFilter bit, 
@SubCategoryGroupItemFilter bit, @strCategory varchar(100), @strSubCategory varchar(100), @strSubCategoryGroup varchar(100)', 
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate, @CategoryFilter, 
@SubCategoryFilter, @SubCategoryGroupFilter, @SubCategoryGroupItemFilter, @strCategory, @strSubCategory, @strSubCategoryGroup
END TRY
BEGIN CATCH        
    SELECT ERROR_MESSAGE() AS ErrorMessage;
 END CATCH    
END

BEGIN --#tempCustom :- Custom Data
set @SQL = 'SELECT '
set @SQL = @SQL + '1 as Id 
,sum(tblInvoiceDocDT.decCOGS) AS Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS Profit  
,AVG(CAST(ROUND(((CASE WHEN dbo.tblInv.intType IN (1) THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))) AS MarginPercentage 
,sum(tblInvoiceDocDT.decQty) AS Qty '
set @SQL = @SQL + 'FROM tblInvoiceDocDT
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@dateCustomFromDate as date) and cast( @dateCustomToDate as date)) 
 and tblInv.intType IN (1,2,3,4) and tblInv.strCategory = @strCategory '
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 0
 set @SQL = @SQL + ' and tblInv.strSubCategory is null'
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategory = @strSubCategory and tblInv.strSubCategoryGroup is null'
--set @SQL = @SQL + ' group by tblInv.strPartNumber, tblInv.strDesc'

--PRINT '--Custom Query'
--PRINT @SQL

BEGIN TRY
INSERT INTO #tempCustom
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime, @CategoryFilter bit, @SubCategoryFilter bit, @SubCategoryGroupFilter bit, 
@SubCategoryGroupItemFilter bit, @strCategory varchar(100), @strSubCategory varchar(100), @strSubCategoryGroup varchar(100), @dateCustomFromDate datetime, @dateCustomToDate datetime',
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate, @CategoryFilter, 
@SubCategoryFilter, @SubCategoryGroupFilter, @SubCategoryGroupItemFilter, @strCategory, @strSubCategory, @strSubCategoryGroup, @dateCustomFromDate, @dateCustomToDate
END TRY
BEGIN CATCH        
    SELECT ERROR_MESSAGE() AS ErrorMessage;
 END CATCH    
END

--PRINT 'DONE'

--select * from #tempToday
--select * from #tempWeek
--select * from #tempMonth
--select * from #tempYear
--select * from #tempCustom

select * from #tempToday where Cost is not null and Revenue is not null and LineTotalExcl is not null and Profit is not null and MarginPercentage is not null
select * from #tempWeek where Cost is not null and Revenue is not null and LineTotalExcl is not null and Profit is not null and MarginPercentage is not null
select * from #tempMonth where Cost is not null and Revenue is not null and LineTotalExcl is not null and Profit is not null and MarginPercentage is not null
select * from #tempYear where Cost is not null and Revenue is not null and LineTotalExcl is not null and Profit is not null and MarginPercentage is not null
select * from #tempCustom where Cost is not null and Revenue is not null and LineTotalExcl is not null and Profit is not null and MarginPercentage is not null

DROP table  #tempToday
DROP table  #tempWeek
DROP table  #tempMonth
DROP table  #tempYear
DROP table  #tempCustom
	      
END
GO

/****** Object:  StoredProcedure [dbo].[MobilePerformanceDashboardUnAssignedItems]    Script Date: 2021-03-01 ******/
CREATE PROCEDURE [dbo].[MobilePerformanceDashboardUnAssignedItems]
(  
@strDateFilter VARCHAR(100)=NULL,  
@dateFromDate DateTime=NULL,  
@dateToDate DateTime=NULL,
@FinancialYearStartDate DateTime=NULL,
@CategoryFilter bit=1,
@SubCategoryFilter bit=0,
@SubCategoryGroupFilter bit=0,
@SubCategoryGroupItemFilter bit=0,
@strCategory VARCHAR(100)=NULL,
@strSubCategory VARCHAR(100)=NULL,
@strSubCategoryGroup VARCHAR(100)=NULL,
@dateCustomFromDate DateTime=NULL,  
@dateCustomToDate DateTime=NULL
)  
AS  
BEGIN  

Begin --#tempToday
IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempToday%')  
 DROP table  #tempToday
 
CREATE TABLE #tempToday(  
 Id int null,
 Cost money null,
 LineTotalExcl money null,
 Revenue money null,
 Profit money null,
 MarginPercentage money null,
 ItemName varchar(1000) null,
 ItemNameDescription varchar(1000) null,
 Qty money null	
)
End

Begin --#tempWeek
IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempWeek%')  
 DROP table  #tempWeek 
CREATE TABLE #tempWeek(  
 Id int null,
 Cost money null,
 LineTotalExcl money null,
 Revenue money null,
 Profit money null,
 MarginPercentage money null,
 ItemName varchar(1000) null,
 ItemNameDescription varchar(1000) null,
 Qty money null	
)
End

Begin --#tempMonth
IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempMonth%')  
 DROP table  #tempMonth 
CREATE TABLE #tempMonth(  
 Id int null,
 Cost money null,
 LineTotalExcl money null,
 Revenue money null,
 Profit money null,
 MarginPercentage money null,
 ItemName varchar(1000) null,
 ItemNameDescription varchar(1000) null,
 Qty money null	 
)
End

Begin --#tempYear
IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempYear%')  
 DROP table  #tempYear
CREATE TABLE #tempYear(  
 Id int null,
 Cost money null,
 LineTotalExcl money null,
 Revenue money null,
 Profit money null,
 MarginPercentage money null,
 ItemName varchar(1000) null,
 ItemNameDescription varchar(1000) null,
 Qty money null	  
)
End

Begin --#tempCustom
IF EXISTS (select name,* from tempdb.sys.tables where name like'#tempCustom%')  
 DROP table  #tempCustom
CREATE TABLE #tempCustom(  
 Id int null,
 Cost money null,
 LineTotalExcl money null,
 Revenue money null,
 Profit money null,
 MarginPercentage money null,
 ItemName varchar(1000) null,
 ItemNameDescription varchar(1000) null,
 Qty money null	  
)
End

DECLARE @SQL as nvarchar(max)

BEGIN --#tempToday :- Today Data

set @SQL = 'SELECT '

set @SQL = @SQL + '1 as Id
,sum(tblInvoiceDocDT.decCOGS) AS Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS Profit  
,AVG(CAST(ROUND(((CASE WHEN dbo.tblInv.intType IN (1) THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))) AS MarginPercentage
,tblInv.strPartNumber AS ItemName, tblInv.strDesc AS ItemNameDescription 
,sum(tblInvoiceDocDT.decQty) AS Qty '

set @SQL = @SQL + 'FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@dateFromDate as date) and cast( @dateToDate as date)) 
 and tblInv.intType IN (1,2,3,4) and tblInv.strCategory = @strCategory '
IF @SubCategoryFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategory is null'
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategoryGroup is null'
set @SQL = @SQL + ' group by tblInv.strPartNumber, tblInv.strDesc'

--PRINT '--Today Query'
--PRINT @SQL

INSERT INTO #tempToday
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime, @CategoryFilter bit, @SubCategoryFilter bit, @SubCategoryGroupFilter bit, 
@SubCategoryGroupItemFilter bit, @strCategory varchar(100), @strSubCategory varchar(100), @strSubCategoryGroup varchar(100)', 
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate, @CategoryFilter, 
@SubCategoryFilter, @SubCategoryGroupFilter, @SubCategoryGroupItemFilter, @strCategory, @strSubCategory, @strSubCategoryGroup

END 

BEGIN --#tempWeek :- Weekly Data
DECLARE @WeekStartDate datetime = NULL
SET @WeekStartDate = DATEADD(dd, -(DATEPART(dw, @dateFromDate)-1), GETDATE())

set @SQL = 'SELECT '
set @SQL = @SQL + '1 as Id
,sum(tblInvoiceDocDT.decCOGS) AS Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS Profit  
,AVG(CAST(ROUND(((CASE WHEN dbo.tblInv.intType IN (1) THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))) AS MarginPercentage 
,tblInv.strPartNumber AS ItemName, tblInv.strDesc AS ItemNameDescription
,sum(tblInvoiceDocDT.decQty) AS Qty '

set @SQL = @SQL + 'FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@WeekStartDate as date) and cast( @dateToDate as date)) 
 and tblInv.intType IN (1,2,3,4) and tblInv.strCategory = @strCategory '

IF @SubCategoryFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategory is null'
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategoryGroup is null'
set @SQL = @SQL + ' group by tblInv.strPartNumber, tblInv.strDesc'


--PRINT '--Week Query'
--PRINT @SQL

INSERT INTO #tempWeek
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime, @CategoryFilter bit, @SubCategoryFilter bit, @SubCategoryGroupFilter bit, 
@SubCategoryGroupItemFilter bit, @strCategory varchar(100), @strSubCategory varchar(100), @strSubCategoryGroup varchar(100), @WeekStartDate datetime', 
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate, @CategoryFilter, 
@SubCategoryFilter, @SubCategoryGroupFilter, @SubCategoryGroupItemFilter, @strCategory, @strSubCategory, @strSubCategoryGroup, @WeekStartDate

END 

BEGIN --#tempMonth :- Monthly Data
DECLARE @MonthStartDate datetime = NULL
SELECT @MonthStartDate = DATEADD(month, DATEDIFF(month, 0, @dateFromDate), 0)

set @SQL = 'SELECT '
set @SQL = @SQL + '1 as Id
,sum(tblInvoiceDocDT.decCOGS) AS Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS Profit  
,AVG(CAST(ROUND(((CASE WHEN dbo.tblInv.intType IN (1) THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))) AS MarginPercentage
, tblInv.strPartNumber AS ItemName, tblInv.strDesc AS ItemNameDescription
,sum(tblInvoiceDocDT.decQty) AS Qty '

set @SQL = @SQL + 'FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@MonthStartDate as date) and cast( @dateToDate as date)) 
 and tblInv.intType IN (1,2,3,4) and tblInv.strCategory = @strCategory '

IF @SubCategoryFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategory is null'
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategoryGroup is null'
set @SQL = @SQL + ' group by tblInv.strPartNumber, tblInv.strDesc'


--PRINT '--Month Query'
--PRINT @SQL
begin try
INSERT INTO #tempMonth
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime, @CategoryFilter bit, @SubCategoryFilter bit, @SubCategoryGroupFilter bit, 
@SubCategoryGroupItemFilter bit, @strCategory varchar(100), @strSubCategory varchar(100), @strSubCategoryGroup varchar(100), @MonthStartDate datetime', 
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate, @CategoryFilter, 
@SubCategoryFilter, @SubCategoryGroupFilter, @SubCategoryGroupItemFilter, @strCategory, @strSubCategory, @strSubCategoryGroup, @MonthStartDate
END TRY
BEGIN CATCH        
	PRINT 'Month Error'
    SELECT ERROR_MESSAGE() AS ErrorMessage;
 END CATCH    
END 

BEGIN --#tempYear :- Yearly Data
set @SQL = 'SELECT '
set @SQL = @SQL + '1 as Id 
,sum(tblInvoiceDocDT.decCOGS) AS Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS Profit  
,AVG(CAST(ROUND(((CASE WHEN dbo.tblInv.intType IN (1) THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))) AS MarginPercentage
 , tblInv.strPartNumber AS ItemName, tblInv.strDesc AS ItemNameDescription
 ,sum(tblInvoiceDocDT.decQty) AS Qty '
set @SQL = @SQL + 'FROM tblInvoiceDocDT
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@FinancialYearStartDate as date) and cast( @dateToDate as date)) 
 and tblInv.intType IN (1,2,3,4) and tblInv.strCategory = @strCategory '
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 0
 set @SQL = @SQL + ' and tblInv.strSubCategory is null'
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategory = @strSubCategory and tblInv.strSubCategoryGroup is null'
set @SQL = @SQL + ' group by tblInv.strPartNumber, tblInv.strDesc'

--PRINT '--Year Query'
--PRINT @SQL

BEGIN TRY
INSERT INTO #tempYear
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime, @CategoryFilter bit, @SubCategoryFilter bit, @SubCategoryGroupFilter bit, 
@SubCategoryGroupItemFilter bit, @strCategory varchar(100), @strSubCategory varchar(100), @strSubCategoryGroup varchar(100)', 
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate, @CategoryFilter, 
@SubCategoryFilter, @SubCategoryGroupFilter, @SubCategoryGroupItemFilter, @strCategory, @strSubCategory, @strSubCategoryGroup
END TRY
BEGIN CATCH        
	PRINT 'Year Error'
    SELECT ERROR_MESSAGE() AS ErrorMessage;
 END CATCH    
END

BEGIN --#tempCustom :- Custom Data
set @SQL = 'SELECT '
set @SQL = @SQL + '1 as Id 
,sum(tblInvoiceDocDT.decCOGS) AS Cost 
,sum(tblInvoiceDocDT.decLineTotExc) AS LineTotalExcl
,sum(tblInvoiceDocDT.decLineTotExc) AS Revenue  
,sum(tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) AS Profit  
,AVG(CAST(ROUND(((CASE WHEN dbo.tblInv.intType IN (1) THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))) AS MarginPercentage
, tblInv.strPartNumber AS ItemName, tblInv.strDesc AS ItemNameDescription
,sum(tblInvoiceDocDT.decQty) AS Qty '
set @SQL = @SQL + 'FROM tblInvoiceDocDT
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory  
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)  
and   
(  
case when @strDateFilter=''Transaction Date'' then  cast(tblInvoiceDoc.dteJournalDate as date)   
     when @strDateFilter=''Required Date'' then cast(tblInvoiceDoc.dteRequired as date)  end     
	 between cast(@dateCustomFromDate as date) and cast( @dateCustomToDate as date)) 
 and tblInv.intType IN (1,2,3,4) and tblInv.strCategory = @strCategory '
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 0
 set @SQL = @SQL + ' and tblInv.strSubCategory is null'
IF @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1
 set @SQL = @SQL + ' and tblInv.strSubCategory = @strSubCategory and tblInv.strSubCategoryGroup is null'
set @SQL = @SQL + ' group by tblInv.strPartNumber, tblInv.strDesc'

--PRINT '--Custom Query'
--PRINT @SQL

BEGIN TRY
INSERT INTO #tempCustom
EXEC sp_executesql @SQL, N'@strDateFilter VARCHAR(100), @dateFromDate datetime, @dateToDate datetime, 
@FinancialYearStartDate datetime, @CategoryFilter bit, @SubCategoryFilter bit, @SubCategoryGroupFilter bit, 
@SubCategoryGroupItemFilter bit, @strCategory varchar(100), @strSubCategory varchar(100), @strSubCategoryGroup varchar(100), @dateCustomFromDate datetime, @dateCustomToDate datetime',
@strDateFilter, @dateFromDate, @dateToDate, @FinancialYearStartDate, @CategoryFilter, 
@SubCategoryFilter, @SubCategoryGroupFilter, @SubCategoryGroupItemFilter, @strCategory, @strSubCategory, @strSubCategoryGroup, @dateCustomFromDate, @dateCustomToDate
END TRY
BEGIN CATCH        
    SELECT ERROR_MESSAGE() AS ErrorMessage;
 END CATCH    
END

--PRINT 'DONE'

select * from #tempToday
select * from #tempWeek
select * from #tempMonth
select * from #tempYear
select * from #tempCustom

DROP table  #tempToday
DROP table  #tempWeek
DROP table  #tempMonth
DROP table  #tempYear
DROP table  #tempCustom
	      
END
GO


CREATE PROCEDURE [dbo].[GetProfileMenuImgs]
	@ProfileID int
AS
BEGIN
  SELECT * FROM tblProfileMenuImgs where ProfileID =  @ProfileID
END
GO


CREATE PROCEDURE [dbo].[DeleteProfileImgByProfileId]
  @ProfileId int
AS
BEGIN

   BEGIN
	DELETE FROM tblProfileMenuImgs where ProfileID =  @ProfileID
	END
END
GO

CREATE PROCEDURE [dbo].[GetProfileImageByProfileId]
	@ProfileId int
AS
BEGIN
  SELECT TOP 1 imgData FROM tblProfileMenuImgs where ProfileID =  @ProfileID  and DefaultImage = 1
END
GO

CREATE PROCEDURE [dbo].[AddUpdatetblProfileMenuImgs]
      @tblData AS ProfileMenuImgsTableType READONLY

AS
BEGIN
	SET IDENTITY_INSERT tblProfileMenuImgs ON

	BEGIN
	   UPDATE  tblProfileMenuImgs SET
					 [ProfileID] = table2.[ProfileID], 
					 [imgData] = table2.[imgData], 
					 [DefaultImage] = table2.[DefaultImage]
	FROM tblProfileMenuImgs as table1
	INNER JOIN @tblData as table2
	ON (table1.[Image_ID]=table2.[Image_ID])
	END


	BEGIN

	   INSERT INTO  [tblProfileMenuImgs] 
	   (
	   [Image_ID], [ProfileID], [imgData], [DefaultImage]
	   ) 
	   SELECT
		  [Image_ID], [ProfileID], [imgData], [DefaultImage]
	   	  FROM @tblData  as t 
		  WHERE  NOT EXISTS (SELECT 1 FROM tblProfileMenuImgs WHERE [Image_ID]=t.[Image_ID] )

	END
	
	SET IDENTITY_INSERT tblProfileMenuImgs OFF
END

GO

create PROCEDURE [dbo].[InsertProfileMenuImgs]
      @tblData AS ProfileMenuImgsTableType READONLY

AS
BEGIN
	   INSERT INTO  [tblProfileMenuImgs] 
	   (
	   [ProfileID], [imgData], [DefaultImage]
	   ) 
	   SELECT
		  [ProfileID], [imgData], [DefaultImage]
	   	  FROM @tblData  as t 
END
GO

CREATE PROCEDURE [dbo].[GetAllGLBudgets]
AS
BEGIN
	SELECT BudgetName AS 'BudgetName'
		,BudgetDesc AS 'BudgetDesc'
		,IsInactive AS 'IsInactive'
	FROM tblGLBudgets
END
GO


CREATE PROCEDURE [dbo].[GetAllDeptBudgets]
AS
BEGIN
	SELECT DeptBudgetName AS 'BudgetName'
		,DeptBudgetDesc AS 'BudgetDesc'
		,IsInactive AS 'IsInactive'
	FROM tblDeptBudgets
END
GO

CREATE PROCEDURE [dbo].[GetAccountsDataForBudget]
AS
BEGIN
	SELECT tblAccounts.intGLNumber AS 'GLNumber'
		,tblAccounts.strDesc AS 'Desc'
		,tblAccounts.intAccType AS 'AccType'
		,cast(0 AS DECIMAL) AS 'Period1'
		,cast(0 AS DECIMAL) AS 'Period2'
		,cast(0 AS DECIMAL) AS 'Period3'
		,cast(0 AS DECIMAL) AS 'Period4'
		,cast(0 AS DECIMAL) AS 'Period5'
		,cast(0 AS DECIMAL) AS 'Period6'
		,cast(0 AS DECIMAL) AS 'Period7'
		,cast(0 AS DECIMAL) AS 'Period8'
		,cast(0 AS DECIMAL) AS 'Period9'
		,cast(0 AS DECIMAL) AS 'Period10'
		,cast(0 AS DECIMAL) AS 'Period11'
		,cast(0 AS DECIMAL) AS 'Period12'
	FROM tblAccounts
END
GO


CREATE PROCEDURE [dbo].[GetMultiGLBudgets] (@BudgetName NVARCHAR(100))
AS
BEGIN
	SELECT tblGLBudgets.BudgetName AS 'BudgetName'
		,tblGLBudgets.BudgetDesc AS 'BudgetDesc'
		,tblAcctMultiBudgets.intGLNumber AS 'GLNumber'
		,tblAcctMultiBudgets.decPeriod1 AS 'Period1'
		,tblAcctMultiBudgets.decPeriod2 AS 'Period2'
		,tblAcctMultiBudgets.decPeriod3 AS 'Period3'
		,tblAcctMultiBudgets.decPeriod4 AS 'Period4'
		,tblAcctMultiBudgets.decPeriod5 AS 'Period5'
		,tblAcctMultiBudgets.decPeriod6 AS 'Period6'
		,tblAcctMultiBudgets.decPeriod7 AS 'Period7'
		,tblAcctMultiBudgets.decPeriod8 AS 'Period8'
		,tblAcctMultiBudgets.decPeriod9 AS 'Period9'
		,tblAcctMultiBudgets.decPeriod10 AS 'Period10'
		,tblAcctMultiBudgets.decPeriod11 AS 'Period11'
		,tblAcctMultiBudgets.decPeriod12 AS 'Period12'
	FROM tblGLBudgets
	INNER JOIN tblAcctMultiBudgets ON tblGLBudgets.BudgetName = tblAcctMultiBudgets.BudgetName
	where tblGLBudgets.BudgetName = @BudgetName
END
GO


CREATE PROCEDURE [dbo].[GetAccountsDeptDataForBudget]
AS
BEGIN
	SELECT tblAccountsDept.strAcctDept AS 'AcctDept'
		,tblAccounts.strDesc AS 'Desc'
		,tblAccounts.intAccType AS 'AccType'
		,cast(0 AS DECIMAL) AS 'Period1'
		,cast(0 AS DECIMAL) AS 'Period2'
		,cast(0 AS DECIMAL) AS 'Period3'
		,cast(0 AS DECIMAL) AS 'Period4'
		,cast(0 AS DECIMAL) AS 'Period5'
		,cast(0 AS DECIMAL) AS 'Period6'
		,cast(0 AS DECIMAL) AS 'Period7'
		,cast(0 AS DECIMAL) AS 'Period8'
		,cast(0 AS DECIMAL) AS 'Period9'
		,cast(0 AS DECIMAL) AS 'Period10'
		,cast(0 AS DECIMAL) AS 'Period11'
		,cast(0 AS DECIMAL) AS 'Period12'
	FROM tblAccounts   INNER JOIN tblAccountsDept ON tblAccounts.intGLNumber = tblAccountsDept.intGLNumber
END
GO

CREATE PROCEDURE [dbo].[GetMultiDeptBudgets] (@BudgetName NVARCHAR(100))
AS
BEGIN
	SELECT tblDeptBudgets.DeptBudgetName AS 'BudgetName'
		,tblDeptBudgets.DeptBudgetDesc AS 'BudgetDesc'
		,tblAccountsDept.strAcctDept 'AcctDept'
		,tblDeptMultiBudgets.intGLNumber AS 'GLNumber'
		,tblDeptMultiBudgets.decPeriod1 AS 'Period1'
		,tblDeptMultiBudgets.decPeriod2 AS 'Period2'
		,tblDeptMultiBudgets.decPeriod3 AS 'Period3'
		,tblDeptMultiBudgets.decPeriod4 AS 'Period4'
		,tblDeptMultiBudgets.decPeriod5 AS 'Period5'
		,tblDeptMultiBudgets.decPeriod6 AS 'Period6'
		,tblDeptMultiBudgets.decPeriod7 AS 'Period7'
		,tblDeptMultiBudgets.decPeriod8 AS 'Period8'
		,tblDeptMultiBudgets.decPeriod9 AS 'Period9'
		,tblDeptMultiBudgets.decPeriod10 AS 'Period10'
		,tblDeptMultiBudgets.decPeriod11 AS 'Period11'
		,tblDeptMultiBudgets.decPeriod12 AS 'Period12'
	FROM tblDeptBudgets
	INNER JOIN tblDeptMultiBudgets ON tblDeptBudgets.DeptBudgetName = tblDeptMultiBudgets.DeptBudgetName
	INNER JOIN tblAccountsDept ON tblDeptMultiBudgets.intGLNumber = tblAccountsDept.intGLNumber AND	tblAccountsDept.intDept = tblDeptMultiBudgets.intDept
	where  tblDeptBudgets.DeptBudgetName = @BudgetName
END
GO

CREATE PROCEDURE [dbo].[DeleteGLMultiBudget] (@BudgetName NVARCHAR(100))
AS
BEGIN
	SET NOCOUNT ON;

	DELETE
	FROM tblAcctMultiBudgets
	WHERE BudgetName = @BudgetName

	DELETE
	FROM tblGLBudgets
	WHERE BudgetName = @BudgetName
END
GO


CREATE PROCEDURE [dbo].[DeleteDeptMultiBudget] (@BudgetName NVARCHAR(100))
AS
BEGIN
	SET NOCOUNT ON;

	DELETE
	FROM tblDeptMultiBudgets
	WHERE DeptBudgetName = @BudgetName

	DELETE
	FROM tblDeptBudgets
	WHERE DeptBudgetName = @BudgetName
END
GO


CREATE PROCEDURE [dbo].[InsertGLBudget] (
	@BudgetName NVARCHAR(100)
	,@BudgetDesc NVARCHAR(200)
	,@IsInactive BIT
	)
AS
BEGIN
	SET NOCOUNT ON;

	INSERT INTO tblGLBudgets (
		BudgetName
		,BudgetDesc
		,IsInactive
		)
	VALUES (
		@BudgetName
		,@BudgetDesc
		,@IsInactive
		)
END
GO


CREATE PROCEDURE [dbo].[InsertDeptBudget] (
	@DeptBudgetName NVARCHAR(100)
	,@DeptBudgetDesc NVARCHAR(200)
	,@IsInactive BIT
	)
AS
BEGIN
	SET NOCOUNT ON;

	INSERT INTO tblDeptBudgets (
		DeptBudgetName
		,DeptBudgetDesc
		,IsInactive
		)
	VALUES (
		@DeptBudgetName
		,@DeptBudgetDesc
		,@IsInactive
		)
END
GO


CREATE PROCEDURE [dbo].[InsertGLMultiBudget] (
	@BudgetName NVARCHAR(100)
	,@GLNumber NVARCHAR(60)
	,@Period1 MONEY
	,@Period2 MONEY
	,@Period3 MONEY
	,@Period4 MONEY
	,@Period5 MONEY
	,@Period6 MONEY
	,@Period7 MONEY
	,@Period8 MONEY
	,@Period9 MONEY
	,@Period10 MONEY
	,@Period11 MONEY
	,@Period12 MONEY
	)
AS
BEGIN
	SET NOCOUNT ON;

	INSERT INTO tblAcctMultiBudgets (
		BudgetName
		,intGLNumber
		,decPeriod1
		,decPeriod2
		,decPeriod3
		,decPeriod4
		,decPeriod5
		,decPeriod6
		,decPeriod7
		,decPeriod8
		,decPeriod9
		,decPeriod10
		,decPeriod11
		,decPeriod12
		)
	VALUES (
		@BudgetName
		,@GLNumber
		,@Period1
		,@Period2
		,@Period3
		,@Period4
		,@Period5
		,@Period6
		,@Period7
		,@Period8
		,@Period9
		,@Period10
		,@Period11
		,@Period12
		)
END
GO


CREATE PROCEDURE [dbo].[InsertDeptMultiBudget] (
	@DeptBudgetName NVARCHAR(100)
	,@GLNumber NVARCHAR(60)
	,@Dept INT
	,@Period1 MONEY
	,@Period2 MONEY
	,@Period3 MONEY
	,@Period4 MONEY
	,@Period5 MONEY
	,@Period6 MONEY
	,@Period7 MONEY
	,@Period8 MONEY
	,@Period9 MONEY
	,@Period10 MONEY
	,@Period11 MONEY
	,@Period12 MONEY
	)
AS
BEGIN
	SET NOCOUNT ON;

	INSERT INTO tblDeptMultiBudgets (
		DeptBudgetName
		,intGLNumber
		,intDept
		,decPeriod1
		,decPeriod2
		,decPeriod3
		,decPeriod4
		,decPeriod5
		,decPeriod6
		,decPeriod7
		,decPeriod8
		,decPeriod9
		,decPeriod10
		,decPeriod11
		,decPeriod12
		)
	VALUES (
		@DeptBudgetName
		,@GLNumber
		,@Dept
		,@Period1
		,@Period2
		,@Period3
		,@Period4
		,@Period5
		,@Period6
		,@Period7
		,@Period8
		,@Period9
		,@Period10
		,@Period11
		,@Period12
		)
END
GO


CREATE PROCEDURE [dbo].[GetAllDepartmentBudgets]
AS
BEGIN
SELECT tblDeptMultiBudgets.intGLNumber GLNumber,tblDeptMultiBudgets.intDept Dept, tblDeptMultiBudgets.DeptBudgetName as BudgetName, tblDeptBudgets.DeptBudgetDesc BudgetDesc, ISNULL(tblDeptMultiBudgets.decPeriod1,0) Period1, ISNULL(tblDeptMultiBudgets.decPeriod2,0) Period2, 
ISNULL(tblDeptMultiBudgets.decPeriod3,0) Period3, ISNULL(tblDeptMultiBudgets.decPeriod4,0) Period4, ISNULL(tblDeptMultiBudgets.decPeriod5,0) Period5, 
ISNULL(tblDeptMultiBudgets.decPeriod6,0) Period6, ISNULL(tblDeptMultiBudgets.decPeriod7,0) Period7, ISNULL(tblDeptMultiBudgets.decPeriod8,0) Period8, 
ISNULL(tblDeptMultiBudgets.decPeriod9,0) Period9, ISNULL(tblDeptMultiBudgets.decPeriod10,0) Period10, ISNULL(tblDeptMultiBudgets.decPeriod11,0) Period11, 
ISNULL(tblDeptMultiBudgets.decPeriod12,0) Period12 
FROM tblDeptMultiBudgets  JOIN tblDeptBudgets
ON tblDeptMultiBudgets.DeptBudgetName = tblDeptBudgets.DeptBudgetName 
ORDER BY tblDeptMultiBudgets.DeptBudgetName
END
GO


CREATE PROCEDURE [dbo].[ImportDepartmentBudget] (
	@GLNumber AS NVARCHAR(60)
	,@Dept As Int 
	,@BudgetName AS NVARCHAR(200)
	,@BudgetDesc AS NVARCHAR(400)
	,@Period1 AS MONEY
	,@Period2 AS MONEY
	,@Period3 AS MONEY
	,@Period4 AS MONEY
	,@Period5 AS MONEY
	,@Period6 AS MONEY
	,@Period7 AS MONEY
	,@Period8 AS MONEY
	,@Period9 AS MONEY
	,@Period10 AS MONEY
	,@Period11 AS MONEY
	,@Period12 AS MONEY
	)
AS
BEGIN
	BEGIN TRY
		DECLARE @ERR_MSG AS NVARCHAR(4000)
			,@Err_Severity INT
			,@ERR_STA AS SMALLINT

		IF EXISTS (SELECT * FROM tblDeptBudgets with (updlock,serializable) WHERE DeptBudgetName = @BudgetName)
		BEGIN
		  UPDATE tblDeptBudgets
			SET	DeptBudgetDesc = @BudgetDesc  WHERE  DeptBudgetName = @BudgetName
		END
		ELSE
		BEGIN
			INSERT INTO tblDeptBudgets(
		DeptBudgetName
		,DeptBudgetDesc
		)
			VALUES (
				@BudgetName
				,@BudgetDesc
				)
		END

		    DECLARE @IsInsert Int
			IF EXISTS (SELECT * FROM tblDeptMultiBudgets with (updlock,serializable) WHERE intGLNumber = @GLNumber and DeptBudgetName = @BudgetName and intDept = @Dept)
			BEGIN
				UPDATE tblDeptMultiBudgets
				SET 
				decPeriod1 = @Period1,
					decPeriod2 = @Period2,
					decPeriod3 = @Period3,
					decPeriod4 = @Period4,
					decPeriod5 = @Period5,
					decPeriod6 = @Period6,
					decPeriod7 = @Period7,
					decPeriod8 = @Period8,
					decPeriod9 = @Period9,
					decPeriod10 = @Period10,
					decPeriod11 = @Period11,
					decPeriod12 = @Period12
				WHERE intGLNumber = @GLNumber and DeptBudgetName = @BudgetName and intDept = @Dept
			END
			ELSE
			BEGIN
			set @IsInsert =1
				INSERT INTO tblDeptMultiBudgets
					(
					DeptBudgetName
					,intGLNumber
					,intDept
					,decPeriod1
					,decPeriod2
					,decPeriod3
					,decPeriod4
					,decPeriod5
					,decPeriod6
					,decPeriod7
					,decPeriod8
					,decPeriod9
					,decPeriod10
					,decPeriod11
					,decPeriod12)
				VALUES
					(
					@BudgetName
					,@GLNumber
					,@Dept
					,@Period1
					,@Period2
					,@Period3
					,@Period4
					,@Period5
					,@Period6
					,@Period7
					,@Period8
					,@Period9
					,@Period10
					,@Period11
					,@Period12)
			END

		SELECT CONCAT('Success: ' , @IsInsert)
	END TRY

	BEGIN CATCH
		IF ERROR_NUMBER() = 2627
		BEGIN
			SET @ERR_MSG = 'Error 2627: '

			SELECT @ERR_MSG
		END
		ELSE IF ERROR_NUMBER() = 8152
		BEGIN
			SET @ERR_MSG = 'Error 8152: '

			SELECT @ERR_MSG
		END
		ELSE
		BEGIN
			SELECT @ERR_MSG = ERROR_MESSAGE()
				,@Err_Severity = ERROR_SEVERITY()
				,@ERR_STA = ERROR_STATE()

			RAISERROR (
					@ERR_MSG
					,@Err_Severity
					,@ERR_STA
					);
		END
	END CATCH
END
GO


CREATE PROCEDURE [dbo].[ImportAccountBudget] (
	@GLNumber AS NVARCHAR(60)
	,@BudgetName AS NVARCHAR(200)
	,@BudgetDesc AS NVARCHAR(400)
	,@Period1 AS MONEY
	,@Period2 AS MONEY
	,@Period3 AS MONEY
	,@Period4 AS MONEY
	,@Period5 AS MONEY
	,@Period6 AS MONEY
	,@Period7 AS MONEY
	,@Period8 AS MONEY
	,@Period9 AS MONEY
	,@Period10 AS MONEY
	,@Period11 AS MONEY
	,@Period12 AS MONEY
	)
AS
BEGIN
	BEGIN TRY
		DECLARE @ERR_MSG AS NVARCHAR(4000)
			,@Err_Severity INT
			,@ERR_STA AS SMALLINT

		IF EXISTS (SELECT * FROM tblGLBudgets with (updlock,serializable) WHERE BudgetName = @BudgetName)
		BEGIN
			UPDATE tblGLBudgets
			SET	BudgetDesc = @BudgetDesc   WHERE BudgetName = @BudgetName
		END
		ELSE
		BEGIN
			INSERT INTO tblGLBudgets (
		BudgetName
		,BudgetDesc
		)
			VALUES (
				@BudgetName
				,@BudgetDesc
				)
		END

		DECLARE @IsInsert Int
			IF EXISTS (SELECT * FROM tblAcctMultiBudgets with (updlock,serializable) WHERE intGLNumber = @GLNumber and BudgetName = @BudgetName )
			BEGIN
				UPDATE tblAcctMultiBudgets
				SET 
				decPeriod1 = @Period1,
					decPeriod2 = @Period2,
					decPeriod3 = @Period3,
					decPeriod4 = @Period4,
					decPeriod5 = @Period5,
					decPeriod6 = @Period6,
					decPeriod7 = @Period7,
					decPeriod8 = @Period8,
					decPeriod9 = @Period9,
					decPeriod10 = @Period10,
					decPeriod11 = @Period11,
					decPeriod12 = @Period12
				WHERE intGLNumber = @GLNumber and BudgetName = @BudgetName
			END
			ELSE
			BEGIN
			   set @IsInsert =1
				INSERT INTO tblAcctMultiBudgets
					(
					BudgetName
					,intGLNumber
					,decPeriod1
					,decPeriod2
					,decPeriod3
					,decPeriod4
					,decPeriod5
					,decPeriod6
					,decPeriod7
					,decPeriod8
					,decPeriod9
					,decPeriod10
					,decPeriod11
					,decPeriod12)
				VALUES
					(
					@BudgetName
					,@GLNumber
					,@Period1
					,@Period2
					,@Period3
					,@Period4
					,@Period5
					,@Period6
					,@Period7
					,@Period8
					,@Period9
					,@Period10
					,@Period11
					,@Period12)
			END

		SELECT CONCAT('Success: ' , @IsInsert)
	END TRY

	BEGIN CATCH
		IF ERROR_NUMBER() = 2627
		BEGIN
			SET @ERR_MSG = 'Error 2627: '

			SELECT @ERR_MSG
		END
		ELSE IF ERROR_NUMBER() = 8152
		BEGIN
			SET @ERR_MSG = 'Error 8152: '

			SELECT @ERR_MSG
		END
		ELSE
		BEGIN
			SELECT @ERR_MSG = ERROR_MESSAGE()
				,@Err_Severity = ERROR_SEVERITY()
				,@ERR_STA = ERROR_STATE()

			RAISERROR (
					@ERR_MSG
					,@Err_Severity
					,@ERR_STA
					);
		END
	END CATCH
END
GO


CREATE PROCEDURE [dbo].[GetAllAccountBudgets]
AS
BEGIN
SELECT tblAcctMultiBudgets.intGLNumber GLNumber, tblAcctMultiBudgets.BudgetName as BudgetName, tblGLBudgets.BudgetDesc BudgetDesc, ISNULL(tblAcctMultiBudgets.decPeriod1,0) Period1, ISNULL(tblAcctMultiBudgets.decPeriod2,0) Period2, 
ISNULL(tblAcctMultiBudgets.decPeriod3,0) Period3, ISNULL(tblAcctMultiBudgets.decPeriod4,0) Period4, ISNULL(tblAcctMultiBudgets.decPeriod5,0) Period5, 
ISNULL(tblAcctMultiBudgets.decPeriod6,0) Period6, ISNULL(tblAcctMultiBudgets.decPeriod7,0) Period7, ISNULL(tblAcctMultiBudgets.decPeriod8,0) Period8, 
ISNULL(tblAcctMultiBudgets.decPeriod9,0) Period9, ISNULL(tblAcctMultiBudgets.decPeriod10,0) Period10, ISNULL(tblAcctMultiBudgets.decPeriod11,0) Period11, 
ISNULL(tblAcctMultiBudgets.decPeriod12,0) Period12 
FROM tblAcctMultiBudgets  JOIN tblGLBudgets
ON tblAcctMultiBudgets.BudgetName = tblGLBudgets.BudgetName 
ORDER BY tblAcctMultiBudgets.BudgetName
END
GO

CREATE PROCEDURE [dbo].[SPRptFilterSubAccountsBusinessLogic_MultiGL] 
(@SQAcct nvarchar(MAX) = NULL
,@SQBudgetName nvarchar(100)
)
AS
BEGIN
	SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, tblAcctMultiBudgets.decPeriod1, tblAcctMultiBudgets.decPeriod2, tblAcctMultiBudgets.decPeriod3, 
	tblAcctMultiBudgets.decPeriod4, tblAcctMultiBudgets.decPeriod5, tblAcctMultiBudgets.decPeriod6, tblAcctMultiBudgets.decPeriod7, tblAcctMultiBudgets.decPeriod8, tblAcctMultiBudgets.decPeriod9, 
	tblAcctMultiBudgets.decPeriod10, tblAcctMultiBudgets.decPeriod11, tblAcctMultiBudgets.decPeriod12
	FROM tblAccounts INNER JOIN tblAcctMultiBudgets ON tblAccounts.intGLNumber = tblAcctMultiBudgets.intGLNumber WHERE (tblAccounts.intGLNumber in
	( SELECT Value FROM [fnSplitStringAsTable]((@SQAcct),(',')))) ANd tblAcctMultiBudgets.BudgetName = @SQBudgetName
END
GO


CREATE PROCEDURE [dbo].[SPRptBudgets_MultiGL] (
	@SQBudgetName NVARCHAR(100)
	,@bitoptInActive BIT = NULL
	)
AS
BEGIN
	IF @bitoptInActive = 0
	BEGIN
		SELECT tblAcctMultiBudgets.intGLNumber
			,strDesc
		FROM tblAcctMultiBudgets
		INNER JOIN tblAccounts ON tblAcctMultiBudgets.intGLNumber = tblAccounts.intGLNumber
		WHERE BudgetName = @SQBudgetName
			AND bitInactive = 0
		ORDER BY intGLNumber
	END
	ELSE
	BEGIN
		SELECT tblAcctMultiBudgets.intGLNumber
			,strDesc
		FROM tblAcctMultiBudgets
		INNER JOIN tblAccounts ON tblAcctMultiBudgets.intGLNumber = tblAccounts.intGLNumber
		WHERE BudgetName = @SQBudgetName
		ORDER BY intGLNumber
	END
END
GO



CREATE PROCEDURE [dbo].[SPRptListBudgetsDeptLoadQuery_MultiDept] @SQBudgetName NVARCHAR(100)
	,@SQDept AS NVARCHAR(MAX)
AS
BEGIN
	SELECT tblAccounts.intGLNumber
		,tblAccounts.strDesc
		,tblAccounts.intAccType
		,tblDeptMultiBudgets.decPeriod1
		,tblDeptMultiBudgets.decPeriod2
		,tblDeptMultiBudgets.decPeriod3
		,tblDeptMultiBudgets.decPeriod4
		,tblDeptMultiBudgets.decPeriod5
		,tblDeptMultiBudgets.decPeriod6
		,tblDeptMultiBudgets.decPeriod7
		,tblDeptMultiBudgets.decPeriod8
		,tblDeptMultiBudgets.decPeriod9
		,tblDeptMultiBudgets.decPeriod10
		,tblDeptMultiBudgets.decPeriod11
		,tblDeptMultiBudgets.decPeriod12
	FROM tblAccounts
	INNER JOIN tblAccountsDept ON tblAccounts.intGLNumber = tblAccountsDept.intGLNumber
	INNER JOIN tblDeptMultiBudgets ON tblAccountsDept.intGLNumber = tblDeptMultiBudgets.intGLNumber
		AND tblAccountsDept.intDept = tblDeptMultiBudgets.intDept
	WHERE (
			tblAccountsDept.intDept IN (
				SELECT CAST(Value AS INT)
				FROM [fnSplitStringAsTable]((@SQDept), (','))
				)
			)	 ANd tblDeptMultiBudgets.DeptBudgetName = @SQBudgetName
END
GO


CREATE PROCEDURE [dbo].[SPRptListBudgetIncomeDeptLoadQuery_MultiDept]
@SQDept NVARCHAR(MAX),
@SQGLNumber NVARCHAR(MAX),
@SQBudgetName NVARCHAR(100),
@intBudPeriodStart INT,
@intBudPeriodEnds INT
AS
BEGIN
CREATE TABLE #Temp
(
    intDept NVARCHAR(200), 
)
	DECLARE @intAcct AS NVARCHAR(MAX)
	DECLARE @intGroupNumber AS INT = 0
	DECLARE @tbl_IMPORT TABLE
	(
		SQGLNumber VARCHAR(100),
		SQDept VARCHAR(100),
		decBudget DECIMAL(18,2)
	)

	DECLARE @tbl_temp1 TABLE
	(
		[strCOL01] [varchar](MAX) DEFAULT ''
	)
	INSERT INTO #Temp
	 SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(','))

	 DECLARE @ROW AS INTEGER
	 DECLARE @intDeptTemp AS INTEGER
	 DECLARE @SQDeptCur AS INTEGER 
	 DECLARE db_cursor CURSOR FOR  
	 SELECT intDept FROM #Temp  

	 OPEN db_cursor   
	 FETCH NEXT FROM db_cursor INTO @intDeptTemp
	 SET @ROW = 1
	 WHILE @@FETCH_STATUS = 0   
	 BEGIN 
	 IF @ROW <= (select count(*) from #Temp)
		BEGIN
		SET @SQDeptCur = @intDeptTemp
			DECLARE @intDeptCur AS INTEGER
	DECLARE @decBudget AS DECIMAL(18,2)		
	DECLARE @Acct_CUR CURSOR	
	SET @Acct_CUR = CURSOR 
	FOR SELECT [Value] FROM [dbo].[fnSplitStringAsTable](@SQGLNumber, '~')
	OPEN @Acct_CUR               
	FETCH NEXT FROM @Acct_CUR
	INTO @intAcct
	
	WHILE @@FETCH_STATUS = 0
	BEGIN
		SET @intGroupNumber += 1		
		SET @decBudget = 0	 
		DECLARE @ColCount INT			
		DECLARE @Dept INT	
		SET @ColCount = @intBudPeriodStart	 	
		WHILE @ColCount <= (@intBudPeriodEnds)
		BEGIN
			SELECT  @Dept = IsNULL(intDept,@SQDeptCur), @decBudget = @decBudget +  CASE @ColCount WHEN 1 THEN decPeriod1 WHEN 2 THEN decPeriod2 WHEN 3 THEN decPeriod3 WHEN 4 THEN decPeriod4 WHEN 5 THEN decPeriod5 WHEN 6 THEN decPeriod6 WHEN 7 THEN decPeriod7 WHEN 8 THEN decPeriod8 WHEN 9 THEN decPeriod9 WHEN 10 THEN decPeriod10 WHEN 11 THEN decPeriod11 WHEN 12 THEN decPeriod12 ELSE 0 END FROM tblDeptMultiBudgets WHERE intGLNumber = @intAcct AND intDept  = @SQDeptCur AND DeptBudgetName = @SQBudgetName --in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))
			
			SET @ColCount = @ColCount + 1
		END																						
		INSERT INTO @tbl_IMPORT (SQGLNumber,SQDept,decBudget) VALUES(@intAcct,@SQDeptCur,@decBudget)
				
		FETCH NEXT FROM @Acct_CUR
		INTO @intAcct
	END
		SET @ROW = 	@ROW + 1
		END
	CLOSE @Acct_CUR
	DEALLOCATE @Acct_CUR
	
	FETCH NEXT FROM db_cursor INTO @intDeptTemp
	 END   

CLOSE db_cursor   
DEALLOCATE db_cursor

	SELECT * FROM @tbl_IMPORT	
END
GO

/****** Object:  StoredProcedure [dbo].[InsertUpdateShippingLocations]    Script Date: 26/04/2021 13:55:00 ******/
CREATE PROCEDURE [dbo].[InsertUpdateShippingLocations]
@IsEdit bit = 0    
,@strCustName NVARCHAR(400)
,@strLocName NVARCHAR(400)
,@strStreet1 NVARCHAR(400)
,@strStreet2 NVARCHAR(400)
,@strCity NVARCHAR(400)
,@strProvince NVARCHAR(400)
,@strPostal NVARCHAR(400)
,@strCountry NVARCHAR(400)
,@strDelRouteCode NVARCHAR(400) = NULL
,@strCountryCode NVARCHAR(400)
,@strSalesName NVARCHAR(400) = NULL
,@strDelMethodCode NVARCHAR(400) = NULL
,@decDistance money
,@strNumber NVARCHAR(400)
--,@geoCoord
AS
BEGIN 
      IF @IsEdit = 0 
        BEGIN 
            INSERT INTO [dbo].[tblcustomerloc] 
                        ([strCustName], 
                         [strLocName], 
                         [strStreet1], 
                         [strStreet2], 
                         [strCity], 
                         [strProvince], 
                         [strPostal], 
                         [strCountry], 
                         [strDelRouteCode], 
                         [strCountryCode], 
                         [strSalesName], 
                         [strDelMethodCode], 
                         [decDistance], 
                         [strNumber], 
                         [geoCoord]) 
            VALUES      ( @strCustName, 
                          @strLocName, 
                          @strStreet1, 
                          @strStreet2, 
                          @strCity, 
                          @strProvince, 
                          @strPostal, 
                          @strCountry, 
                          @strDelRouteCode, 
                          @strCountryCode, 
                          @strSalesName, 
                          @strDelMethodCode, 
                          @decDistance, 
                          @strNumber, 
                          NULL -- @geoCoord 
            ) 
        END 
      ELSE 
        BEGIN 
            UPDATE dbo.tblCustomerLoc 
            SET    [strcustname] = @strCustName, 
                   [strLocName] = @strLocName,                     
                   [strStreet1] = @strStreet1, 
                   [strStreet2] = @strStreet2, 
                   [strCity] = @strCity, 
                   [strProvince] = @strProvince, 
                   [strPostal] = @strPostal, 
                   [strCountry] = @strCountry, 
                   [strDelRouteCode] = @strDelRouteCode, 
                   [strCountryCode] = @strCountryCode, 
                   [strSalesName] = @strSalesName, 
                   [strDelMethodCode] = @strDelMethodCode, 
                   [decDistance] = @decDistance, 
                   [strNumber] = @strNumber, 
                   [geoCoord] = NULL --@geoCoord 
            WHERE  strCustName = @strCustName AND strLocName = @strLocName
        END 
  END 
GO

/****** Object:  StoredProcedure [dbo].[SPGrvData]    Script Date: 26/04/2021 13:55:00 ******/
CREATE PROCEDURE [dbo].[SPGrvData]  
@SQDocNumber AS VARCHAR(250) = null,
@IsVendStockCodes AS bit = null
AS  
BEGIN  
	
	SELECT        tblOrderDocPGDT.intLineNo, tblOrderDocPGDT.strPartNumber, tblOrderDocPGDT.strPartDesc, tblOrderDocPGDT.decStockQty, tblOrderDocPGDT.strStockUnit, tblOrderDocPGDT.decPriceEaExc, tblOrderDocPGDT.decLineTaxAmt, 
                         tblOrderDocPGDT.decLineDiscAmt, tblOrderDocPGDT.decLineTotExc
FROM            tblOrderDocPG INNER JOIN
                         tblOrderDocPGDT ON tblOrderDocPG.strOrdPGDocID = tblOrderDocPGDT.strOrdPGDocID
						 WHERE tblOrderDocPG.strOrdPGDocID = @SQDocNumber
 END
GO

/****** Object:  StoredProcedure [dbo].[GetInvTrfDocNumber]    Script Date: 26/04/2021 13:55:00 ******/
CREATE PROCEDURE [dbo].[GetInvTrfDocNumber]  
@SQAppModule AS int = 0
AS  
BEGIN 

	IF(@SQAppModule = 4)	
		BEGIN
			SELECT ISNULL(MAX(intTrfDocID), 0) + 1 FROM tblInvTrfDoc WHERE SUBSTRING(strTrfDocID, 1, 3) = 'BTR' AND bitWarehouseTrf = 0
		END
	ELSE IF(@SQAppModule = 3 OR @SQAppModule = 12)
		BEGIN
			SELECT ISNULL(MAX(intTrfDocID), 0) + 1 FROM tblInvTrfDoc WHERE SUBSTRING(strTrfDocID, 1, 3) = 'ITR'
		END	
 END
GO

/****** Object:  StoredProcedure [dbo].[FillMissingTrackingEntries]    Script Date: 26/04/2021 13:55:00 ******/
CREATE PROCEDURE [dbo].[FillMissingTrackingEntries]
AS
BEGIN
	-------------------------------- PART - 1 FINDING AND FIXING ENTRIES WITH BINID = 0-------------------------------------

	CREATE TABLE #BinIdNotProperData
    (
		RowId INT
        ,TrackId BIGINT
        ,DocumentId VARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS
		,PartNumber	VARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS
		,LocName	VARCHAR(30) COLLATE SQL_Latin1_General_CP1_CI_AS
		,[LineNo] INT
		,InvTrackingDTBin_Id BIGINT
		,InvTrackingDTBin_BinId BIGINT
		,DefaultBinId INT
    )

	INSERT INTO #BinIdNotProperData
	SELECT DISTINCT
	row_number() over(order by ITDT.lngInvTrackID) as RowId
	,ITDT.lngInvTrackID 
	,ITDT.strSource
	,ITDT.strPartNumber	
	,ITDT.strLocName	
	,ITDT.intLineNo
	,ITDTB.lngID AS InvTrackingDTBin_Id
	,ITDTB.lngBinID InvTrackingDTBin_BinId
	, CASE 
		WHEN (SELECT TOP 1 lngBinID FROM tblInvExtBin WHERE strLocName = ITDT.strLocName AND strPartNumber = ITDT.strPartNumber AND bitDefault = 1 ) IS NULL THEN (SELECT TOP 1 lngBinID FROM tblInvExtBin WHERE strLocName = ITDT.strLocName AND strPartNumber = ITDT.strPartNumber AND bitAllowed = 1)
		ELSE (SELECT TOP 1 lngBinID FROM tblInvExtBin WHERE strLocName = ITDT.strLocName) END
		AS DefaultBinId
	FROM tblInvTrackingDT AS ITDT
	INNER JOIN tblInv as I ON I.strPartNumber = ITDT.strPartNumber
	INNER JOIN tblInvTracking AS IT ON IT.lngInvTrackID = ITDT.lngInvTrackID
	LEFT OUTER JOIN tblInvTrackingDTBin AS ITDTB ON IT.lngInvTrackID = ITDTB.lngInvTrackID AND ITDT.intLineNo = ITDTB.intLineNo
	WHERE 
	ITDTB.lngBinID = 0
	AND I.intType = 1 
	ORDER BY ITDT.lngInvTrackID, ITDT.intLineNo

	declare @totalRows int = (select count(*) from #BinIdNotProperData)
    declare @currentRow int = 1

	declare @binId int
	declare @defaultBinId int
	declare @location VARCHAR(30)
	declare @partNumber VARCHAR(50)

	IF @totalRows > 0
		BEGIN
			-- LOOP THROUGH ALL WRONG RECORDS FOR PPROCESSING.
			WHILE @currentRow <=  @totalRows  
				BEGIN 
        
					SET @binId = (SELECT InvTrackingDTBin_BinId FROM #BinIdNotProperData WHERE RowId = @currentRow)
					SET @defaultBinId = (SELECT DefaultBinId FROM #BinIdNotProperData WHERE RowId = @currentRow)
					SET @location = (SELECT LocName FROM #BinIdNotProperData WHERE RowId = @currentRow)
					SET @partNumber = (SELECT PartNumber FROM #BinIdNotProperData WHERE RowId = @currentRow)

					IF (SELECT lngID FROM tblInvLocBin WHERE lngID = @defaultBinId) IS NULL
						BEGIN
							SET @defaultBinId = (SELECT TOP 1 ILB.lngID FROM tblInvExtBin IEB
													INNER JOIN tblInvLocBin ILB ON ILB.lngID = IEB.lngBinID
													WHERE IEB.strLocName = @location AND IEB.strPartNumber = @partNumber AND bitDefault = 1 )

							IF @defaultBinId IS NULL
							BEGIN
								SET @defaultBinId = (SELECT TOP 1 ILB.lngID FROM tblInvExtBin IEB
														INNER JOIN tblInvLocBin ILB ON ILB.lngID = IEB.lngBinID
														WHERE IEB.strLocName = @location AND IEB.strPartNumber = @partNumber AND  bitAllowed = 1)
							END
						END
						
					IF(@binId = 0)
		
						BEGIN
							UPDATE tblInvTrackingDTBin SET lngBinID = @defaultBinId WHERE lngID = (SELECT InvTrackingDTBin_Id FROM #BinIdNotProperData WHERE RowId = @currentRow)
						END	
		
				SET @currentRow = @currentRow +1

				END
	END

	-------------------------------- PART - 2 FINDING AND INSERTING MISSING ENTRIES-------------------------------------
		
    CREATE TABLE #MissingData
    (
		 RowId INT
        ,TrackId BIGINT
        ,DocumentId VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,PartNumber	VARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS
		,LocName	VARCHAR(30) COLLATE SQL_Latin1_General_CP1_CI_AS
		,[LineNo] INT
		,BinId BIGINT 
		,BinCode VARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS 
		,Qty	MONEY
		,QtyIn	MONEY
		,QtyOut MONEY
		,OnHand MONEY
		,NewOnHand MONEY
		,NegTrans BIT
		,MainLineNo INT 
		,InvTrackingDTBin_Id BIGINT 
		,InvTrackingDTBin_BinId BIGINT 
		,IsMissingBin BIT
    )	


	 CREATE TABLE #MissingDataBinNotFound
    (
		 RowId INT
        ,TrackId BIGINT
        ,DocumentId VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,PartNumber	VARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS
		,LocName	VARCHAR(30) COLLATE SQL_Latin1_General_CP1_CI_AS
		,[LineNo] INT
		,BinId BIGINT 
		,BinCode VARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS 
		,Qty	MONEY
		,QtyIn	MONEY
		,QtyOut MONEY
		,OnHand MONEY
		,NewOnHand MONEY
		,NegTrans BIT
		,MainLineNo INT 
		,InvTrackingDTBin_Id BIGINT 
		,InvTrackingDTBin_BinId BIGINT 
		,IsMissingBin BIT
    )	

	 CREATE TABLE #MissingDataBinFound
    (
		 RowId INT
        ,TrackId BIGINT
        ,DocumentId VARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,PartNumber	VARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS
		,LocName	VARCHAR(30) COLLATE SQL_Latin1_General_CP1_CI_AS
		,[LineNo] INT
		,BinId BIGINT 
		,BinCode VARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS 
		,Qty	MONEY
		,QtyIn	MONEY
		,QtyOut MONEY
		,OnHand MONEY
		,NewOnHand MONEY
		,NegTrans BIT
		,MainLineNo INT 
		,InvTrackingDTBin_Id BIGINT 
		,InvTrackingDTBin_BinId BIGINT 
		,IsMissingBin BIT
    )	

	-- FINDING AND INSERTING MISSING ENTRIES FROM tblInvTrackingDTBin AND INSERTING INTO A TEMP TABLE FOR PROCESSING
	-- ONLY INVENTORY ITEM
    INSERT INTO #MissingData
	Select 
	row_number() over(order by lngInvTrackID) as RowId
	
	,* 
	,CAST((Case When (lngBinID Is Null) OR (lngBinID = 0) OR (SELECT lngID FROM tblInvLocBin WHERE lngID = lngBinID) IS NULL Then 1 ELSE 0 END) AS Bit) AS IsMissingBin
	from (
	SELECT DISTINCT
	ITDT.lngInvTrackID 
	,ITDT.strSource
	,ITDT.strPartNumber	
	,ITDT.strLocName	
	,ITDT.intLineNo
	, (CASE 
		WHEN (SELECT TOP 1 lngBinID FROM tblInvExtBin WHERE strLocName = ITDT.strLocName AND strPartNumber = ITDT.strPartNumber AND bitDefault = 1 ) IS NULL THEN (SELECT TOP 1 lngBinID FROM tblInvExtBin WHERE strLocName = ITDT.strLocName AND strPartNumber = ITDT.strPartNumber AND bitAllowed = 1)
		ELSE (SELECT TOP 1 lngBinID FROM tblInvExtBin WHERE strLocName = ITDT.strLocName) END
		) AS lngBinID
	, (SELECT strBinCode FROM tblInvLocBin LB Where LB.lngID in (CASE 
		WHEN (SELECT TOP 1 lngBinID FROM tblInvExtBin WHERE strLocName = ITDT.strLocName AND strPartNumber = ITDT.strPartNumber AND bitDefault = 1 ) IS NULL THEN (SELECT TOP 1 lngBinID FROM tblInvExtBin WHERE strLocName = ITDT.strLocName AND strPartNumber = ITDT.strPartNumber AND bitAllowed = 1)
		ELSE (SELECT TOP 1 lngBinID FROM tblInvExtBin WHERE strLocName = ITDT.strLocName) END
		)) AS strBinCode
	,ITDT.decQty	
	,ITDT.decQtyIn	
	,ITDT.decQtyOut
	,ITDT.decOnHand
	,ITDT.decNewOnHand
	,ITDT.bitNegTrans
	,ITDT.intMainLineNo
	,ITDTB.lngID AS InvTrackingDTBin_Id
	,ITDTB.lngBinID InvTrackingDTBin_BinId
	FROM tblInvTrackingDT AS ITDT
	INNER JOIN tblInv as I ON I.strPartNumber = ITDT.strPartNumber
	INNER JOIN tblInvTracking AS IT ON IT.lngInvTrackID = ITDT.lngInvTrackID
	--AND (ITDT.lngInvTrackID = CASE WHEN IT.strSource = 'Stock Count' then IT.lngInvTrackID ELSE (SELECT MAX(TIT.lngInvTrackID) FROM tblInvTracking TIT WHERE TIT.strSource = IT.strSource) END)
	LEFT OUTER JOIN tblInvTrackingDTBin AS ITDTB ON IT.lngInvTrackID = ITDTB.lngInvTrackID AND ITDT.intLineNo = ITDTB.intLineNo
	--INNER JOIN tblInvExtBin AS IEB ON IEB.strLocName = ITDT.strLocName AND IEB.strPartNumber = ITDT.strPartNumber AND (bitDefault = 1 OR bitAllowed = 1)
	--INNER JOIN tblInvLocBin AS ILB ON ILB.lngID = IEB.lngBinID
	WHERE 
	ITDTB.lngBinID IS NULL  
	AND 
	I.intType = 1 AND bitService = 0
	) AS Result1 WHERE Result1.strLocName is not null
	ORDER BY Result1.lngInvTrackID, Result1.intLineNo

	INSERT INTO #MissingDataBinNotFound(RowId 
        ,TrackId 
        ,DocumentId 
		,PartNumber	
		,LocName
		,[LineNo]
		,BinId
		,BinCode 
		,Qty
		,QtyIn	
		,QtyOut 
		,OnHand
		,NewOnHand
		,NegTrans
		,MainLineNo
		,InvTrackingDTBin_Id
		,InvTrackingDTBin_BinId
		,IsMissingBin)
	Select 
		 row_number() over(order by RowId) as RowId 
        ,TrackId 
        ,DocumentId 
		,PartNumber	
		,LocName
		,[LineNo]
		,BinId
		,BinCode 
		,Qty
		,QtyIn	
		,QtyOut 
		,OnHand
		,NewOnHand
		,NegTrans
		,MainLineNo
		,InvTrackingDTBin_Id
		,InvTrackingDTBin_BinId
		,IsMissingBin
	 from #MissingData Where IsMissingBin = 1

	 INSERT INTO #MissingDataBinFound(RowId 
        ,TrackId 
        ,DocumentId 
		,PartNumber	
		,LocName
		,[LineNo]
		,BinId
		,BinCode 
		,Qty
		,QtyIn	
		,QtyOut 
		,OnHand
		,NewOnHand
		,NegTrans
		,MainLineNo
		,InvTrackingDTBin_Id
		,InvTrackingDTBin_BinId
		,IsMissingBin)
	Select 
		 row_number() over(order by RowId) as RowId 
        ,TrackId 
        ,DocumentId 
		,PartNumber	
		,LocName
		,[LineNo]
		,BinId
		,BinCode 
		,Qty
		,QtyIn	
		,QtyOut 
		,OnHand
		,NewOnHand
		,NegTrans
		,MainLineNo
		,InvTrackingDTBin_Id
		,InvTrackingDTBin_BinId
		,IsMissingBin
	 from #MissingData Where IsMissingBin = 0
   
	declare @binCode VARCHAR(30)
	--declare @location VARCHAR(30)
	--declare @partNumber VARCHAR(50)

    SET @totalRows = (select count(*) from #MissingDataBinNotFound)
    SET @currentRow = 1

	IF @totalRows > 0
		BEGIN
			-- LOOP THROUGH ALL MISSING RECORDS FOR PPROCESSING.
			WHILE @currentRow <=  @totalRows  
				BEGIN 
        
					
					SET @binId = (SELECT BinId FROM #MissingDataBinNotFound WHERE RowId = @currentRow)
					SET @location = (SELECT LocName FROM #MissingDataBinNotFound WHERE RowId = @currentRow)
					SET @partNumber = (SELECT PartNumber FROM #MissingDataBinNotFound WHERE RowId = @currentRow)

					-- IF BIN ID IS NULL THEN CHECKING FOR DEFAULT BIN FIRST. IF NOT THERE THEN CREATING A NEW ONE.
					-- INSERTING A MISSING RECORD USING A AVAILABLE DEFAULT BIN OR NEWLY CREATED DEFAULT BIN.
					IF(@binId IS NULL OR  @binId = 0 OR (SELECT lngID FROM tblInvLocBin WHERE lngID = @binId) IS NULL)
					Begin
						BEGIN
							IF( NOT EXISTS (SELECT TOP 1 * FROM tblInvExtBin WHERE strLocName = @location AND strPartNumber = @partNumber order by bitDefault desc )) 
							BEGIN
								
								IF( NOT EXISTS (SELECT TOP 1 lngID FROM tblInvLocBin WHERE strLocName = @location)) 
								BEGIN
									declare @ID table (ID bigint)									

									INSERT INTO tblInvLocBin  (strLocName,strBinCode,strDescription,decCapacity,strCapacityUnit,bitPickingBin,bitInactive,bitReceivingBin,bitProductionBin,bitStockingBin,dteRowUpdated)
									output inserted.lngID into @ID
									SELECT @location,'DEFAULT','DEFAULT',0,0,0,0,0,0,0,GETDATE()

									INSERT INTO tblInvExtBin (strPartNumber,strLocName,lngBinID,decAvail,decAlloc,decOnHand,decMaximumQty,bitAllowed,bitDefault,dteRowUpdated)
									SELECT @partNumber,@location,(SELECT TOP 1 ID FROM @ID),0,0,0,0,1,1,GETDATE()									

								END
								ELSE
								BEGIN

									INSERT INTO tblInvExtBin (strPartNumber,strLocName,lngBinID,decAvail,decAlloc,decOnHand,decMaximumQty,bitAllowed,bitDefault,dteRowUpdated)
									SELECT @partNumber,@location, (SELECT TOP 1 lngID FROM tblInvLocBin WHERE strLocName = @location),0,0,0,0,1,1,GETDATE()		
																			
								END
							END

							SET @defaultBinId = (SELECT TOP 1 lngBinID FROM tblInvExtBin WHERE strLocName = @location AND strPartNumber = @partNumber order by bitDefault desc)
							SET @binCode = (SELECT TOP 1 strBinCode FROM tblInvLocBin WHERE lngID = @defaultBinId)

							INSERT INTO tblInvTrackingDTBin (lngInvTrackID,intLineNo,lngBinID,decQty,decQtyIn,decQtyOut,decOnHand,decNewOnHand,bitNegTrans,intMainLineNo)
							SELECT TrackId,[LineNo],@defaultBinId,Qty,QtyIn,QtyOut,OnHand,NewOnHand,NegTrans,MainLineNo FROM #MissingDataBinNotFound WHERE RowId = @currentRow
						END	
					-- PROCSSING BIN ID IS AVAILABLE SO DIRECTLY INSERTING A MISSING RECORD USING SAME BIN ID
					END							
				SET @currentRow = @currentRow +1
				END
		END	
	
	INSERT INTO tblInvTrackingDTBin (lngInvTrackID,intLineNo,lngBinID,decQty,decQtyIn,decQtyOut,decOnHand,decNewOnHand,bitNegTrans,intMainLineNo)
	SELECT TrackId,[LineNo],BinId,Qty,QtyIn,QtyOut,OnHand,NewOnHand,NegTrans,MainLineNo FROM #MissingDataBinFound

END
GO

/****** Object:  StoredProcedure [dbo].[GetAllTotalMismatchedDocuments]    Script Date: 26/04/2021 13:55:00 ******/
CREATE PROCEDURE [dbo].[GetAllTotalMismatchedDocuments] 
	 @StartDate DATE
	,@EndDate DATE
	,@Search NVARCHAR(Max) = ''
AS
BEGIN
	IF (ISNULL(@Search, '') = '')
	BEGIN
			;

		WITH Result1
		AS (
			SELECT ID.strInvDocID
				,ID.dteSystemDate
				,ID.strCustName AS CustVendCode
				,C.strCustDesc AS CustVendName
				,ID.decSubTotal AS DocumentTotal
				,ID.decVAT AS Header_Tax
				,ID.decTotal AS Header_Total
				,COUNT(IDD.intLineNo) AS No_Of_Lines
				,SUM(CAST(IDD.decLineTaxAmt AS DECIMAL(18, 2))) AS All_Lines_Total_Tax
				,SUM(CAST(IDD.decLineTotExc AS DECIMAL(18, 2))) AS SummedLineTotal
				,CAST((ID.decSubTotal - SUM(CAST(IDD.decLineTotExc AS DECIMAL(18, 2)))) AS DECIMAL(18, 2)) AS Diffrence
			FROM tblInvoiceDoc AS ID
			INNER JOIN tblInvoiceDocDT AS IDD ON IDD.strInvDocID = ID.strInvDocID
			INNER JOIN tblCustomers AS C ON C.strCustName = ID.strCustName
			WHERE IDD.bitDiscountTax = 0
				AND IDD.bitDelCost = 0
				AND (
					id.dteSystemDate BETWEEN @StartDate
						AND @EndDate
					)
			GROUP BY ID.strInvDocID
				,ID.decSubTotal
				,ID.decVAT
				,ID.decTotal
				,ID.dteSystemDate
				,ID.strCustName
				,C.strCustDesc
			HAVING SUM(CAST(IDD.decLineTotInc AS DECIMAL(18, 2))) <> Id.decSubTotal
			
			UNION ALL
			
			SELECT ID.strInvPDocID
				,ID.dteSystemDate
				,ID.strVendName AS CustVendCode
				,V.strVendDesc AS CustVendName
				,ID.decSubTotal AS DocumentTotal
				,ID.decVAT AS Header_Tax
				,ID.decTotal AS Header_Total
				,COUNT(IDD.intLineNo) AS No_Of_Lines
				,SUM(CAST(IDD.decLineTaxAmt AS DECIMAL(18, 2))) AS All_Lines_Total_Tax
				,SUM(CAST(IDD.decLineTotExc AS DECIMAL(18, 2))) AS SummedLineTotal
				,CAST((ID.decSubTotal - SUM(CAST(IDD.decLineTotExc AS DECIMAL(18, 2)))) AS DECIMAL(18, 2)) AS Diffrence
			FROM tblInvoiceDocP AS ID
			INNER JOIN tblInvoiceDocPDT AS IDD ON IDD.strInvPDocID = ID.strInvPDocID
			INNER JOIN tblVendors AS V ON V.strVendName = ID.strVendName
			WHERE IDD.bitDiscountTax = 0
				AND (
					id.dteSystemDate BETWEEN @StartDate
						AND @EndDate
					)
			GROUP BY ID.strInvPDocID
				,ID.decSubTotal
				,ID.decVAT
				,ID.decTotal
				,ID.dteSystemDate
				,ID.strVendName
				,V.strVendDesc
			HAVING SUM(IDD.decLineTotExc) <> Id.decSubTotal
			)
		SELECT *
		FROM Result1 WHERE Diffrence not between -0.05 and 0.05
		ORDER BY dteSystemDate DESC
	END
	ELSE
	BEGIN
			;

		WITH Result1
		AS (
			SELECT ID.strInvDocID
				,ID.dteSystemDate
				,ID.strCustName AS CustVendCode
				,C.strCustDesc AS CustVendName
				,ID.decSubTotal AS DocumentTotal
				,ID.decVAT AS Header_Tax
				,ID.decTotal AS Header_Total
				,COUNT(IDD.intLineNo) AS No_Of_Lines
				,SUM(CAST(IDD.decLineTaxAmt AS DECIMAL(18, 2))) AS All_Lines_Total_Tax
				,SUM(CAST(IDD.decLineTotExc AS DECIMAL(18, 2))) AS SummedLineTotal
				,CAST((ID.decSubTotal - SUM(CAST(IDD.decLineTotExc AS DECIMAL(18, 2)))) AS DECIMAL(18, 2)) AS Diffrence
			FROM tblInvoiceDoc AS ID
			INNER JOIN tblInvoiceDocDT AS IDD ON IDD.strInvDocID = ID.strInvDocID
			INNER JOIN tblCustomers AS C ON C.strCustName = ID.strCustName
			WHERE IDD.bitDiscountTax = 0
				AND IDD.bitDelCost = 0
				AND (
					id.dteSystemDate BETWEEN @StartDate
						AND @EndDate
					)
			GROUP BY ID.strInvDocID
				,ID.decSubTotal
				,ID.decVAT
				,ID.decTotal
				,ID.dteSystemDate
				,ID.strCustName
				,C.strCustDesc
			HAVING SUM(CAST(IDD.decLineTotInc AS DECIMAL(18, 2))) <> Id.decSubTotal
			
			UNION ALL
			
			SELECT ID.strInvPDocID
				,ID.dteSystemDate
				,ID.strVendName AS CustVendCode
				,V.strVendDesc AS CustVendName
				,ID.decSubTotal AS DocumentTotal
				,ID.decVAT AS Header_Tax
				,ID.decTotal AS Header_Total
				,COUNT(IDD.intLineNo) AS No_Of_Lines
				,SUM(CAST(IDD.decLineTaxAmt AS DECIMAL(18, 2))) AS All_Lines_Total_Tax
				,SUM(CAST(IDD.decLineTotExc AS DECIMAL(18, 2))) AS SummedLineTotal
				,CAST((ID.decSubTotal - SUM(CAST(IDD.decLineTotExc AS DECIMAL(18, 2)))) AS DECIMAL(18, 2)) AS Diffrence
			FROM tblInvoiceDocP AS ID
			INNER JOIN tblInvoiceDocPDT AS IDD ON IDD.strInvPDocID = ID.strInvPDocID
			INNER JOIN tblVendors AS V ON V.strVendName = ID.strVendName
			WHERE IDD.bitDiscountTax = 0
				AND (
					id.dteSystemDate BETWEEN @StartDate
						AND @EndDate
					)
			GROUP BY ID.strInvPDocID
				,ID.decSubTotal
				,ID.decVAT
				,ID.decTotal
				,ID.dteSystemDate
				,ID.strVendName
				,V.strVendDesc
			HAVING SUM(IDD.decLineTotExc) <> Id.decSubTotal
			)
		SELECT *
		FROM Result1 
		WHERE (strInvDocID LIKE '%' + @Search + '%'
			OR CustVendCode LIKE '%' + @Search + '%'
			OR CustVendName LIKE '%' + @Search + '%'
			) AND Diffrence not between -0.05 and 0.05
		ORDER BY dteSystemDate DESC
	END
END
GO

/****** Object:  StoredProcedure [dbo].[FillMissingDocumentBinEntries]    Script Date: 26/04/2021 13:55:00 ******/
CREATE PROCEDURE [dbo].[FillMissingDocumentBinEntries]
AS

BEGIN

    CREATE TABLE #MissingSalesData
    (
		RowId INT
        ,DocumentId VARCHAR(50)
		,DocDTLineNo INT
		,TrackingDTLineNo INT
		,Qty	DECIMAL(10,4)
		,BinId BIGINT
    )

	 CREATE TABLE #MissingPurchaseData
    (
		RowId INT
        ,DocumentId VARCHAR(50)
		,DocDTLineNo INT
		,TrackingDTLineNo INT
		,Qty	DECIMAL(10,4)
		,BinId BIGINT
    )

	 CREATE TABLE #MissingASMdata
    (
		RowId INT
        ,DocumentId VARCHAR(50)
		,DocDTLineNo INT
		,TrackingDTLineNo INT
		,Qty	DECIMAL(10,4)
		,BinId BIGINT
    )
	
	CREATE TABLE #MissingISSREQdata 
    (
		RowId INT
        ,DocumentId VARCHAR(50)
		,DocDTLineNo INT
		,TrackingDTLineNo INT
		,Qty	DECIMAL(10,4)
		,BinId BIGINT
    )
	 
	CREATE TABLE #MissingREPACKdata 
    (
		RowId INT
        ,DocumentId VARCHAR(50)
		,DocDTLineNo INT
		,TrackingDTLineNo INT
		,Qty	DECIMAL(10,4)
		,BinId BIGINT
    )
	 
	CREATE TABLE #MissingOrderData
    (
		RowId INT
        ,DocumentId VARCHAR(50)
		,DocDTLineNo INT
		,TrackingDTLineNo INT
		,Qty	DECIMAL(10,4)
		,BinId BIGINT
    )
	 
	CREATE TABLE #MissingOrderPGDTdata 
    (
		RowId INT
        ,DocumentId VARCHAR(50)
		,DocDTLineNo INT
		,TrackingDTLineNo INT
		,Qty	DECIMAL(10,4)
		,BinId BIGINT
    ) 

	CREATE TABLE #MissingPickTicketsdata 
    (
		RowId INT
        ,DocumentId VARCHAR(50)
		,DocDTLineNo INT
		,TrackingDTLineNo INT
		,Qty	DECIMAL(10,4)
		,BinId BIGINT
    ) 

	CREATE TABLE #MissingManJobCloseData 
    (
		RowId INT
        ,DocumentId VARCHAR(50)
		,DocDTLineNo INT
		,TrackingDTLineNo INT
		,Qty	DECIMAL(10,4)
		,BinId BIGINT
    ) 
	CREATE TABLE #MissingWSWIPCompData  
    (
		RowId INT
        ,DocumentId VARCHAR(50)
		,DocDTLineNo INT
		,TrackingDTLineNo INT
		,Qty	DECIMAL(10,4)
		,BinId BIGINT
    )
	---------------------------------------------------------------------------------------------------------------
	 
	-- SALES INVOICE/CREDIT NOTES DOCUMENTS
	-- FINDING AND INSERTING MISSING ENTRIES FROM tblInvoiceDocDTBin AND INSERTING INTO A TEMP TABLE FOR PROCESSING
    INSERT INTO #MissingSalesData
    SELECT row_number() over(order by strInvDocID) as RowId, * FROM
	(
		SELECT DISTINCT
		IDD.strInvDocID
		, IDD.intLineNo AS DocDTLineNo
		--, IDDB.intLineNo AS DocDTBinLineNo
		, ITDT.intLineNo AS TrackingDTLineNo
		, IDD.decQty
		, ITDTB.lngBinID
		FROM tblInvoiceDocDT IDD
		LEFT OUTER JOIN tblInvoiceDocDTBin IDDB ON IDD.strInvDocID = IDDB.strInvDocID  AND   IDD.intLineNo = IDDB.intLineNo 
		INNER JOIN tblInvTracking IT ON IT.strSource = IDD.strInvDocID
		INNER JOIN tblInvTrackingDT ITDT ON ITDT.lngInvTrackID = IT.lngInvTrackID
		--INNER JOIN tblInv as I ON I.strPartNumber = ITDT.strPartNumber
		LEFT OUTER JOIN tblInvTrackingDTBin AS ITDTB ON IT.lngInvTrackID = ITDTB.lngInvTrackID AND ITDT.intLineNo = ITDTB.intLineNo
		WHERE IDDB.intLineNo IS NULL AND ITDT.intLineNo = IDD.intLineNo --AND I.intType = 1 
		AND IDD.intType = 1
		 AND ITDT.bitService = 0 AND ITDT.strLocName is not null
	) AS Result
	ORDER BY Result.strInvDocID, Result.DocDTLineNo

    declare @totalRows int = (select count(*) from #MissingSalesData)
    declare @currentRow int = 0

	-- LOOP THROUGH ALL MISSING RECORDS FOR PPROCESSING.
    IF @totalRows > 0
	BEGIN
		WHILE @currentRow <=  @totalRows  
		BEGIN 
			IF EXISTS (SELECT * FROM #MissingSalesData WHERE RowId = @currentRow AND BinId IS NOT NULL)
			BEGIN
				INSERT INTO tblInvoiceDocDTBin (strInvDocID,intLineNo,lngBinID,decQty)
				SELECT DocumentId,DocDTLineNo,BinId,Qty FROM #MissingSalesData WHERE RowId = @currentRow
			END
			SET @currentRow = @currentRow + 1
		END
	END
	
	---------------------------------------------------------------------------------------------------------------
	 	
	-- SALES PURCHASE NOTES DOCUMENTS
	-- FINDING AND INSERTING MISSING ENTRIES FROM tblInvoiceDocDTBin AND INSERTING INTO A TEMP TABLE FOR PROCESSING
    INSERT INTO #MissingPurchaseData
    SELECT row_number() over(order by strInvPDocID) as RowId, * FROM
	(
		SELECT DISTINCT
		IDD.strInvPDocID
		, IDD.intLineNo AS DocDTLineNo
		--, IDDB.intLineNo AS DocDTBinLineNo
		, ITDT.intLineNo AS TrackingDTLineNo
		, IDD.decBuyQty
		, ITDTB.lngBinID
		FROM tblInvoiceDocPDT IDD
		LEFT OUTER JOIN tblInvoiceDocPDTBin IDDB ON  IDD.strInvPDocID = IDDB.strInvPDocID AND  IDD.intLineNo = IDDB.intLineNo
		INNER JOIN tblInvTracking IT ON IT.strSource = IDD.strInvPDocID
		INNER JOIN tblInvTrackingDT ITDT ON ITDT.lngInvTrackID = IT.lngInvTrackID
		--INNER JOIN tblInv as I ON I.strPartNumber = ITDT.strPartNumber
		LEFT OUTER JOIN tblInvTrackingDTBin AS ITDTB ON IT.lngInvTrackID = ITDTB.lngInvTrackID AND ITDT.intLineNo = ITDTB.intLineNo
		WHERE IDDB.intLineNo IS NULL AND ITDT.intLineNo = IDD.intLineNo -- AND I.intType = 1 
		AND IDD.intType = 1
		AND ITDT.bitService = 0 AND ITDT.strLocName is not null
	) AS Result1
	ORDER BY Result1.strInvPDocID, Result1.DocDTLineNo

    SET @totalRows  = (select count(*) from #MissingPurchaseData)
    SET @currentRow = 0

	-- LOOP THROUGH ALL MISSING RECORDS FOR PPROCESSING.
    IF @totalRows > 0
	BEGIN
		WHILE @currentRow <=  @totalRows  
		BEGIN 
			IF EXISTS (SELECT * FROM #MissingPurchaseData WHERE RowId = @currentRow AND BinId IS NOT NULL)
			BEGIN
				INSERT INTO tblInvoiceDocPDTBin(strInvPDocID,intLineNo,lngBinID,decQty)
				SELECT DocumentId,DocDTLineNo,BinId,Qty FROM #MissingPurchaseData WHERE RowId = @currentRow
			END
			SET @currentRow = @currentRow + 1
		END
	END

	---------------------------------------------------------------------------------------------------------------------------
	 

	insert into #MissingASMdata
	SELECT row_number() over(order by strAsmDocID) as RowId, * FROM
	(
		SELECT DISTINCT
		IDD.strAsmDocID
		, IDD.intLineNo AS DocDTLineNo
		--, IDDB.intLineNo AS DocDTBinLineNo
		, ITDT.intLineNo AS TrackingDTLineNo
		, IDD.decQty
		, ITDTB.lngBinID
		FROM tblInvAsmDocDT IDD
		LEFT OUTER JOIN tblInvAsmDocDTBin IDDB ON IDD.strAsmDocID = IDDB.strAsmDocID  AND  IDD.intLineNo =  IDDB.intLineNo
		INNER JOIN tblInvTracking IT ON IT.strSource = IDD.strAsmDocID
		INNER JOIN tblInvTrackingDT ITDT ON ITDT.lngInvTrackID = IT.lngInvTrackID
		--INNER JOIN tblInv as I ON I.strPartNumber = ITDT.strPartNumber
		LEFT OUTER JOIN tblInvTrackingDTBin AS ITDTB ON IT.lngInvTrackID = ITDTB.lngInvTrackID AND ITDT.intLineNo = ITDTB.intLineNo
		WHERE IDDB.intLineNo IS NULL AND ITDT.intLineNo = IDD.intLineNo --AND I.intType = 1 
		AND ITDT.bitService = 0 AND ITDT.strLocName is not null
	) AS Result1
	ORDER BY Result1.strAsmDocID, Result1.DocDTLineNo

	SET @totalRows  = (select count(*) from #MissingASMdata)
    SET @currentRow = 0

	-- LOOP THROUGH ALL MISSING RECORDS FOR PPROCESSING.
    IF @totalRows > 0
	BEGIN
		WHILE @currentRow <=  @totalRows  
		BEGIN 
			IF EXISTS (SELECT * FROM #MissingASMdata WHERE RowId = @currentRow AND BinId IS NOT NULL)
			BEGIN
				INSERT INTO tblInvAsmDocDTBin(strAsmDocID,intLineNo,lngBinID,decQty)
				SELECT DocumentId,DocDTLineNo,BinId,Qty FROM #MissingASMdata WHERE RowId = @currentRow
			END
			SET @currentRow = @currentRow + 1
		END
	END

	---------------------------------------------------------------------------------------------------------------------------
	 
	insert into #MissingISSREQdata
	SELECT row_number() over(order by strInvIssReqDocID) as RowId, * FROM
	(
		SELECT DISTINCT
		IDD.strInvIssReqDocID
		, IDD.intLineNo AS DocDTLineNo
		--, IDDB.intLineNo AS DocDTBinLineNo
		, ITDT.intLineNo AS TrackingDTLineNo
		, IDD.decQty
		, ITDTB.lngBinID
		FROM tblInvIssReqDocDT IDD
		LEFT OUTER JOIN tblInvIssReqDocDTBin IDDB ON  IDD.strInvIssReqDocID = IDDB.strInvIssReqDocID AND IDD.intLineNo = IDDB.intLineNo
		INNER JOIN tblInvTracking IT ON IT.strSource = IDD.strInvIssReqDocID
		INNER JOIN tblInvTrackingDT ITDT ON ITDT.lngInvTrackID = IT.lngInvTrackID
		--INNER JOIN tblInv as I ON I.strPartNumber = ITDT.strPartNumber
		LEFT OUTER JOIN tblInvTrackingDTBin AS ITDTB ON IT.lngInvTrackID = ITDTB.lngInvTrackID AND ITDT.intLineNo = ITDTB.intLineNo
		WHERE IDDB.intLineNo IS NULL AND ITDT.intLineNo = IDD.intLineNo --AND I.intType = 1 
		AND ITDT.bitService = 0 AND ITDT.strLocName is not null 
	) AS Result1
	ORDER BY Result1.strInvIssReqDocID, Result1.DocDTLineNo
	
	SET @totalRows  = (select count(*) from #MissingISSREQdata)
    SET @currentRow = 0

	-- LOOP THROUGH ALL MISSING RECORDS FOR PPROCESSING.
    IF @totalRows > 0
	BEGIN
		WHILE @currentRow <=  @totalRows  
		BEGIN 
			IF EXISTS (SELECT * FROM #MissingISSREQdata WHERE RowId = @currentRow AND BinId IS NOT NULL)
			BEGIN
				INSERT INTO tblInvIssReqDocDTBin(strInvIssReqDocID,intLineNo,lngBinID,decQty)
				SELECT DocumentId,DocDTLineNo,BinId,Qty FROM #MissingISSREQdata WHERE RowId = @currentRow
			END
			SET @currentRow = @currentRow + 1
		END
	END


	---------------------------------------------------------------------------------------------------------------------------
	 
	insert into #MissingREPACKdata
	SELECT row_number() over(order by strRepackDocID) as RowId, * FROM
	(
		SELECT DISTINCT
		IDD.strRepackDocID
		, IDD.intLineNo AS DocDTLineNo
		--, IDDB.intLineNo AS DocDTBinLineNo
		, ITDT.intLineNo AS TrackingDTLineNo
		, IDD.decQty
		, ITDTB.lngBinID
		FROM tblInvRepackDocDT IDD
		LEFT OUTER JOIN tblInvRepackDocDTBin IDDB ON  IDD.strRepackDocID = IDDB.strRepackDocID  AND IDD.intLineNo = IDDB.intLineNo
		INNER JOIN tblInvTracking IT ON IT.strSource = IDD.strRepackDocID
		INNER JOIN tblInvTrackingDT ITDT ON ITDT.lngInvTrackID = IT.lngInvTrackID
		--INNER JOIN tblInv as I ON I.strPartNumber = ITDT.strPartNumber
		LEFT OUTER JOIN tblInvTrackingDTBin AS ITDTB ON IT.lngInvTrackID = ITDTB.lngInvTrackID AND ITDT.intLineNo = ITDTB.intLineNo
		WHERE IDDB.intLineNo IS NULL AND ITDT.intLineNo = IDD.intLineNo --AND I.intType = 1 
		 AND ITDT.bitService = 0 AND ITDT.strLocName is not null 
	) AS Result1
	ORDER BY Result1.strRepackDocID, Result1.DocDTLineNo

	SET @totalRows  = (select count(*) from #MissingREPACKdata)
    SET @currentRow = 0

	-- LOOP THROUGH ALL MISSING RECORDS FOR PPROCESSING.
    IF @totalRows > 0
	BEGIN
		WHILE @currentRow <=  @totalRows  
		BEGIN 
			IF EXISTS (SELECT * FROM #MissingREPACKdata WHERE RowId = @currentRow AND BinId IS NOT NULL)
			BEGIN
				INSERT INTO tblInvRepackDocDTBin(strRepackDocID,intLineNo,lngBinID,decQty)
				SELECT DocumentId,DocDTLineNo,BinId,Qty FROM #MissingREPACKdata WHERE RowId = @currentRow
			END
			SET @currentRow = @currentRow + 1
		END
	END

	---------------------------------------------------------------------------------------------------------------------------
	 
	insert into #MissingOrderData
	SELECT row_number() over(order by strOrdDADocID) as RowId, * FROM
	(
		SELECT DISTINCT
		IDD.strOrdDADocID
		, IDD.intLineNo AS DocDTLineNo
		--, IDDB.intLineNo AS DocDTBinLineNo
		, ITDT.intLineNo AS TrackingDTLineNo
		, IDD.decQty
		, ITDTB.lngBinID
		FROM tblOrderDocDADT IDD
		LEFT OUTER JOIN tblOrderDocDADTBin IDDB ON  IDD.strOrdDADocID = IDDB.strOrdDADocID AND IDD.intLineNo = IDDB.intLineNo
		INNER JOIN tblInvTracking IT ON IT.strSource = IDD.strOrdDADocID
		INNER JOIN tblInvTrackingDT ITDT ON ITDT.lngInvTrackID = IT.lngInvTrackID
		--INNER JOIN tblInv as I ON I.strPartNumber = ITDT.strPartNumber
		LEFT OUTER JOIN tblInvTrackingDTBin AS ITDTB ON IT.lngInvTrackID = ITDTB.lngInvTrackID AND ITDT.intLineNo = ITDTB.intLineNo
		WHERE IDDB.intLineNo IS NULL AND ITDT.intLineNo = IDD.intLineNo --AND I.intType = 1
		 AND IDD.intType = 1 AND ITDT.bitService = 0 AND ITDT.strLocName is not null 
	) AS Result1
	ORDER BY Result1.strOrdDADocID, Result1.DocDTLineNo

	SET @totalRows  = (select count(*) from #MissingOrderData)
    SET @currentRow = 0

	-- LOOP THROUGH ALL MISSING RECORDS FOR PPROCESSING.
    IF @totalRows > 0
	BEGIN
		WHILE @currentRow <=  @totalRows  
		BEGIN 
			IF EXISTS (SELECT * FROM #MissingOrderData WHERE RowId = @currentRow AND BinId IS NOT NULL)
			BEGIN
				INSERT INTO tblOrderDocDADTBin(strOrdDADocID,intLineNo,lngBinID,decQty)
				SELECT DocumentId,DocDTLineNo,BinId,Qty FROM #MissingOrderData WHERE RowId = @currentRow
			END
			SET @currentRow = @currentRow + 1
		END
	END
	 

	---------------------------------------------------------------------------------------------------------------------------
	 
	insert into #MissingOrderPGDTdata
	SELECT row_number() over(order by strOrdPGDocID) as RowId, * FROM
	(
		SELECT DISTINCT
		IDD.strOrdPGDocID
		, IDD.intLineNo AS DocDTLineNo
		--, IDDB.intLineNo AS DocDTBinLineNo
		, ITDT.intLineNo AS TrackingDTLineNo
		, IDD.decBuyQty
		, ITDTB.lngBinID
		FROM tblOrderDocPGDT IDD
		LEFT OUTER JOIN tblOrderDocPGDTBin IDDB ON IDD.strOrdPGDocID = IDDB.strOrdPGDocID AND  IDD.intLineNo = IDDB.intLineNo 
		INNER JOIN tblInvTracking IT ON IT.strSource = IDD.strOrdPGDocID
		INNER JOIN tblInvTrackingDT ITDT ON ITDT.lngInvTrackID = IT.lngInvTrackID
		--INNER JOIN tblInv as I ON I.strPartNumber = ITDT.strPartNumber
		LEFT OUTER JOIN tblInvTrackingDTBin AS ITDTB ON IT.lngInvTrackID = ITDTB.lngInvTrackID AND ITDT.intLineNo = ITDTB.intLineNo
		WHERE IDDB.intLineNo IS NULL AND ITDT.intLineNo = IDD.intLineNo --AND I.intType = 1 
		AND IDD.intType = 1 AND ITDT.bitService = 0 AND ITDT.strLocName is not null 
	) AS Result1
	ORDER BY Result1.strOrdPGDocID, Result1.DocDTLineNo

	SET @totalRows  = (select count(*) from #MissingOrderPGDTdata)
    SET @currentRow = 0

	-- LOOP THROUGH ALL MISSING RECORDS FOR PPROCESSING.
    IF @totalRows > 0
	BEGIN
		WHILE @currentRow <=  @totalRows  
		BEGIN 
			IF EXISTS (SELECT * FROM #MissingOrderPGDTdata WHERE RowId = @currentRow AND BinId IS NOT NULL)
			BEGIN
				INSERT INTO tblOrderDocPGDTBin(strOrdPGDocID,intLineNo,lngBinID,decQty)
				SELECT DocumentId,DocDTLineNo,BinId,Qty FROM #MissingOrderPGDTdata WHERE RowId = @currentRow
			END
			SET @currentRow = @currentRow + 1
		END
	END 

	---------------------------------------------------------------------------------------------------------------------------
	 
	insert into #MissingPickTicketsdata
	  SELECT row_number() over(order by strPkTkDocID) as RowId, * FROM
	(
		SELECT DISTINCT
		IDD.strPkTkDocID
		, IDD.intLineNo AS DocDTLineNo
		--, IDDB.intLineNo AS DocDTBinLineNo
		, ITDT.intLineNo AS TrackingDTLineNo
		, IDD.decQty
		, ITDTB.lngBinID
		FROM tblPickTicketsDT IDD
		LEFT OUTER JOIN tblPickTicketsDTBin IDDB ON IDD.strPkTkDocID = IDDB.strPkTkDocID  AND IDD.intLineNo  =  IDDB.intLineNo 
		INNER JOIN tblInvTracking IT ON IT.strSource = IDD.strPkTkDocID
		INNER JOIN tblInvTrackingDT ITDT ON ITDT.lngInvTrackID = IT.lngInvTrackID
		--INNER JOIN tblInv as I ON I.strPartNumber = ITDT.strPartNumber
		LEFT OUTER JOIN tblInvTrackingDTBin AS ITDTB ON IT.lngInvTrackID = ITDTB.lngInvTrackID AND ITDT.intLineNo = ITDTB.intLineNo
		WHERE IDDB.intLineNo IS NULL AND ITDT.intLineNo = IDD.intLineNo --AND I.intType = 1 
		AND IDD.intType = 1 AND ITDT.bitService = 0 AND ITDT.strLocName is not null 
	) AS Result
	ORDER BY Result.strPkTkDocID, Result.DocDTLineNo

		SET @totalRows  = (select count(*) from #MissingPickTicketsdata)
    SET @currentRow = 0

	-- LOOP THROUGH ALL MISSING RECORDS FOR PPROCESSING.
    IF @totalRows > 0
	BEGIN
		WHILE @currentRow <=  @totalRows  
		BEGIN 
			IF EXISTS (SELECT * FROM #MissingPickTicketsdata WHERE RowId = @currentRow AND BinId IS NOT NULL)
			BEGIN
				INSERT INTO tblPickTicketsDTBin(strPkTkDocID,intLineNo,lngBinID,decQty)
				SELECT DocumentId,DocDTLineNo,BinId,Qty FROM #MissingPickTicketsdata WHERE RowId = @currentRow
			END
			SET @currentRow = @currentRow + 1
		END
	END 
	 
	---------------------------------------------------------------------------------------------------------------------------
	 
	 insert into #MissingManJobCloseData
	  SELECT row_number() over(order by strJBDocID) as RowId, * FROM
	(
		SELECT DISTINCT
		IDD.strJBDocID
		--, IDD.intLineNo AS DocDTLineNo
		, IDDB.intLineNo AS DocDTBinLineNo
		, ITDT.intLineNo AS TrackingDTLineNo
		, IDD.decManQty
		, ITDTB.lngBinID
		FROM tblManJobClose IDD
		LEFT OUTER JOIN tblManJobCloseBin IDDB ON IDD.strJBDocID  = IDDB.strInvDocID  
		INNER JOIN tblInvTracking IT ON IT.strSource = IDD.strJBDocID
		INNER JOIN tblInvTrackingDT ITDT ON ITDT.lngInvTrackID = IT.lngInvTrackID
		--INNER JOIN tblInv as I ON I.strPartNumber = ITDT.strPartNumber
		LEFT OUTER JOIN tblInvTrackingDTBin AS ITDTB ON IT.lngInvTrackID = ITDTB.lngInvTrackID AND ITDT.intLineNo = ITDTB.intLineNo
		WHERE IDDB.intLineNo IS NULL AND ITDT.strSource = IDD.strJBDocID --AND I.intType = 1 
		AND IDD.intType = 1 AND ITDT.bitService = 0 AND ITDT.strLocName is not null 
	) AS Result
	ORDER BY Result.strJBDocID, Result.DocDTBinLineNo

	SET @totalRows  = (select count(*) from #MissingManJobCloseData)
    SET @currentRow = 0

	-- LOOP THROUGH ALL MISSING RECORDS FOR PPROCESSING.
    IF @totalRows > 0
	BEGIN
		WHILE @currentRow <=  @totalRows  
		BEGIN 
			IF EXISTS (SELECT * FROM #MissingManJobCloseData WHERE RowId = @currentRow AND BinId IS NOT NULL)
			BEGIN
				INSERT INTO tblManJobCloseBin(strInvDocID,intLineNo,lngBinID,decQty)
				SELECT DocumentId,ISNULL(DocDTLineNo,TrackingDTLineNo) AS [LineNo] ,BinId,Qty FROM #MissingManJobCloseData WHERE RowId = @currentRow
			END
			SET @currentRow = @currentRow + 1
		END
	END 
	 
	---------------------------------------------------------------------------------------------------------------------------
 
	insert into #MissingWSWIPCompData
	 SELECT row_number() over(order by WIPDocID) as RowId, * FROM
	(
		SELECT DISTINCT
		IDD.WIPDocID
		, IDD.[LineNo] AS DocDTLineNo
		--, IDDB.intLineNo AS DocDTBinLineNo
		, ITDT.intLineNo AS TrackingDTLineNo
		, IDD.PostQty
		, ITDTB.lngBinID
		FROM tblWSWIPCompDT IDD
		LEFT OUTER JOIN tblWSWIPCompInvBin IDDB ON  IDD.WIPDocID = IDDB.WIPDocID AND  IDD.[LineNo] = IDDB.[LineNo]  
		INNER JOIN tblInvTracking IT ON IT.strSource = IDD.WIPDocID
		INNER JOIN tblInvTrackingDT ITDT ON ITDT.lngInvTrackID = IT.lngInvTrackID
		--INNER JOIN tblInv as I ON I.strPartNumber = ITDT.strPartNumber
		LEFT OUTER JOIN tblInvTrackingDTBin AS ITDTB ON IT.lngInvTrackID = ITDTB.lngInvTrackID AND ITDT.intLineNo = ITDTB.intLineNo
		WHERE IDDB.[LineNo] IS NULL AND ITDT.intLineNo = IDD.[LineNo] --AND I.intType = 1 
		AND IDD.[Type] = 1  AND ITDT.bitService = 0 AND ITDT.strLocName is not null 
	) AS Result
	ORDER BY Result.WIPDocID, Result.DocDTLineNo
	
	SET @totalRows  = (select count(*) from #MissingWSWIPCompData)
    SET @currentRow = 0

	-- LOOP THROUGH ALL MISSING RECORDS FOR PPROCESSING.
    IF @totalRows > 0
	BEGIN
		WHILE @currentRow <=  @totalRows  
		BEGIN 
			IF EXISTS (SELECT * FROM #MissingWSWIPCompData WHERE RowId = @currentRow AND BinId IS NOT NULL)
			BEGIN
				INSERT INTO tblWSWIPCompInvBin(WIPDocID,[LineNo],BinID,Qty)
				SELECT DocumentId,DocDTLineNo,BinId,Qty FROM #MissingWSWIPCompData WHERE RowId = @currentRow
			END
			SET @currentRow = @currentRow + 1
		END
	END 
	 

	---------------------------------------------------------------------------------------------------------------------------
	
DROP TABLE #MissingPurchaseData
DROP TABLE #MissingSalesData
DROP TABLE #MissingASMdata
DROP TABLE #MissingISSREQdata
DROP TABLE #MissingREPACKdata
DROP TABLE #MissingOrderData
DROP TABLE #MissingOrderPGDTdata
DROP TABLE #MissingPickTicketsdata
DROP TABLE #MissingManJobCloseData
DROP TABLE #MissingWSWIPCompData

END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdateESDUserMapping]    Script Date: 11/05/2021 10:06:00 ******/
CREATE PROCEDURE [dbo].[AddUpdateESDUserMapping]  
@userName as nvarchar(20),  
@deviceSerialNumber as nvarchar(50),  
@mappingID as int  
as  
begin  
 declare @SettingID as int = (select intID from tblEFDRegisterConfig where strPosSerialNumber=@deviceSerialNumber)  
 declare @date as datetime = getdate()  
 if @mappingID>0  
 begin   
  update tblESDUserMapping  
  set strUserName = @userName,intSettingID=@SettingID,dteRowUpdated = @date  
  where intMappingId = @mappingID  
 end  
 else  
 begin  
  insert into tblESDUserMapping  
  values (@userName,@SettingID,@date)  
 end  
end
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblESDUserMapping]    Script Date: 11/05/2021 10:06:00 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblESDUserMapping] @tblData    
AS    
ESDUserMappingTableType READONLY AS    
BEGIN    
 BEGIN    
  INSERT INTO tblESDUserMapping     
   ( strUserName,intSettingID )    
  SELECT     
     strUserName,intSettingID    
  FROM @tblData AS t    
  WHERE NOT EXISTS ( SELECT 1 FROM tblESDUserMapping WHERE intMappingId = t.intMappingId )    
 END    
    
 BEGIN    
  UPDATE tblESDUserMapping    
  SET strUserName = table2.strUserName, intSettingID = table2.intSettingID    
  FROM tblESDUserMapping AS table1    
  INNER JOIN @tblData AS table2 ON (table1.intMappingId = table2.intMappingId)    
 END    
END
GO


/****** Object:  StoredProcedure [dbo].[GetUserDetailsGrid]    Script Date: 21/05/2021 14:48:00 ******/
CREATE PROCEDURE [dbo].[GetUserDetailsGrid]  
(
@startDate DateTime,
@endDate DateTime,
@UserName varchar(MAX)
)  
 
AS
BEGIN
SELECT 
ID.strInvDocID as[strDocID]
,ID.strCustName 
,C.strCustDesc
,ID.dteJournalDate
,ID.decTotal,
ID.strUserName
,ID.decTotalF
,ID.strCurrency
,TC.strCurrSymbol
,TC.intDecimals,
TC.strThousSymb
,ID.bitIsForeign
,sum(tblInvoiceDocDT.decLineTotExc )as decSubTotal
,ID.decSubTotalF
FROM tblInvoiceDoc AS ID
INNER JOIN tblCustomers C ON C.strCustName = ID.strCustName
INNER JOIN tblCurrency TC ON TC.strCurrency=ID.strCurrency
    inner join tblInvoiceDocDT on tblInvoiceDocDT.strInvDocID=ID.strInvDocID
	 where  dteJournalDate between @StartDate  and @EndDate and bitDiscountTax=0 and 
	  strUserName in (select * from dbo.fnSplitStringAsTable(@UserName,','))
	 group by ID.strInvDocID,ID.strCustName 
,C.strCustDesc
,ID.dteJournalDate
,ID.decTotal,ID.decSubTotalF,
ID.strUserName
,ID.decTotalF
,ID.strCurrency
,TC.strCurrSymbol
,TC.intDecimals,
TC.strThousSymb
,ID.bitIsForeign
--ORDER
SELECT 
ID.strOrdDocID as[strDocID]
,ID.strCustName 
,C.strCustDesc,
TC.strThousSymb
,ID.dteJournalDate,
ID.strUserName
,ID.decTotal
,ID.decTotalF
,ID.strCurrency
,TC.strCurrSymbol
,TC.intDecimals
,ID.bitIsForeign
,ID.decSubTotal
,ID.decSubTotalF
FROM tblOrderDoc AS ID
INNER JOIN tblCustomers C ON C.strCustName = ID.strCustName
INNER JOIN tblCurrency TC ON TC.strCurrency=ID.strCurrency
where strOrdDocID like 'SO-%' And bitCleared = 0 
AND  ID.dteJournalDate   between @StartDate and @EndDate
and ID.strUserName in (select * from dbo.fnSplitStringAsTable(@UserName,',')) 

--QUOTE
SELECT 
ID.strOrdDocID as[strDocID]
,ID.strCustName 
,C.strCustDesc
,ID.dteJournalDate
,ID.decTotal
,ID.decTotalF
,ID.strCurrency,
ID.strUserName
,TC.strCurrSymbol,
TC.strThousSymb
,TC.intDecimals
,ID.bitIsForeign
,ID.decSubTotal
,ID.decSubTotalF
FROM tblOrderDoc AS ID
INNER JOIN tblCustomers C ON C.strCustName = ID.strCustName
INNER JOIN tblCurrency TC ON TC.strCurrency=ID.strCurrency
where 
strOrdDocID like 'QU-%' and bitCleared = 0
AND ID.dteJournalDate   between @StartDate and @EndDate
and ID.strUserName in (select * from dbo.fnSplitStringAsTable(@UserName,',')) 


SELECT 
ID.strOrdDocID as[strDocID]
,ISNULL( ID.strCustName,'') as strCustName
,ISNULL( C.strCustDesc,'') as strCustDesc
,ID.dteJournalDate
,ID.decTotal
,ID.decTotalF
,ID.strCurrency,
ID.strUserName
,TC.strCurrSymbol,
TC.strThousSymb
,TC.intDecimals
,ID.bitIsForeign
,ID.decSubTotal
,ID.decSubTotalF
FROM tblOrderDocQ AS ID
Left JOIN tblCustomers C ON C.strCustName = ID.strCustName
INNER JOIN tblCurrency TC ON TC.strCurrency=ID.strCurrency
where 
strOrdDocID like 'QS-%' and bitCleared = 0
AND ID.dteJournalDate   between @StartDate and @EndDate
and ID.strUserName in (select * from dbo.fnSplitStringAsTable(@UserName,',')) 
END
GO

/****** Object:  StoredProcedure [dbo].[GetSalesMetroBlockDocumentCount]    Script Date: 21/05/2021 14:48:00 ******/
CREATE PROCEDURE [dbo].[GetSalesMetroBlockDocumentCount] 
	@user_name_list NVARCHAR(MAX)
	,@StartDate DATETIME
	,@EndDate DATETIME
AS
BEGIN
	DECLARE @SalesInvoiceTotalAmount MONEY
	DECLARE @SalesOrderTotalAmount MONEY
	DECLARE @SalesQuoteTotalAmount MONEY
	DECLARE @TotalWorkedHour DECIMAL(19, 2)
	DECLARE @TotalDistancTravelled DECIMAL(19, 2)
	DECLARE @SalesInvoiceTotalCount INT = 0
	DECLARE @SalesOrderTotalCount INT = 0
	DECLARE @SalesQuoteTotalCount INT = 0
	DECLARE @CurrSymbol NVARCHAR(10)
	DECLARE @ThousandSep NVARCHAR(10)
	DECLARE @Decimal INT

	SET @CurrSymbol = (
			SELECT strCurrSymbol
			FROM tblCurrency
			WHERE bitHome = 1
			)
	SET @ThousandSep = (
			SELECT strThousSymb
			FROM tblCurrency
			WHERE bitHome = 1
			)
	SET @Decimal = (
			SELECT intDecimals
			FROM tblCurrency
			WHERE bitHome = 1
			)
	--Sales Invoice
	SET @SalesInvoiceTotalAmount = (
			SELECT ISNULL(Sum(decLineTotExc), 0)
			FROM tblInvoiceDoc
			INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
			WHERE dteJournalDate BETWEEN @StartDate
					AND @EndDate
				AND bitDiscountTax = 0
				AND strUserName IN (
					SELECT *
					FROM dbo.fnSplitStringAsTable(@user_name_list, ',')
					)
			)
	SET @SalesInvoiceTotalCount = (
			SELECT Count(DISTINCT tblInvoiceDoc.strInvDocID)
			FROM tblInvoiceDoc
			INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
			WHERE dteJournalDate BETWEEN @StartDate
					AND @EndDate
				AND bitDiscountTax = 0
				AND strUserName IN (
					SELECT *
					FROM dbo.fnSplitStringAsTable(@user_name_list, ',')
					)
			)
	--Sales Order
	SET @SalesOrderTotalAmount = (
			SELECT ISNULL(Sum(decSubTotal), 0)
			FROM tblOrderDoc
			WHERE strOrdDocID LIKE 'SO-%'
				AND bitCleared = 0
				AND dteJournalDate BETWEEN @StartDate
					AND @EndDate
				AND strUserName IN (
					SELECT *
					FROM dbo.fnSplitStringAsTable(@user_name_list, ',')
					)
			)
	SET @SalesOrderTotalCount = (
			SELECT COUNT(*)
			FROM tblOrderDoc
			WHERE strOrdDocID LIKE 'SO-%'
				AND bitCleared = 0
				AND dteJournalDate BETWEEN @StartDate
					AND @EndDate
				AND strUserName IN (
					SELECT *
					FROM dbo.fnSplitStringAsTable(@user_name_list, ',')
					)
			)
	-- Sales Quote
	SET @SalesQuoteTotalAmount = (
			SELECT ISNULL(Sum(decSubTotal), 0)
			FROM tblOrderDoc
			WHERE strOrdDocID LIKE 'QU-%'
				AND bitCleared = 0
				AND dteJournalDate BETWEEN @StartDate
					AND @EndDate
				AND strUserName IN (
					SELECT *
					FROM dbo.fnSplitStringAsTable(@user_name_list, ',')
					)
			) + (
			SELECT ISNULL(Sum(decSubTotal), 0)
			FROM tblOrderDocQ
			WHERE strOrdDocID LIKE 'QS-%'
				AND bitCleared = 0
				AND dteJournalDate BETWEEN @StartDate
					AND @EndDate
				AND strUserName IN (
					SELECT *
					FROM dbo.fnSplitStringAsTable(@user_name_list, ',')
					)
			)
	SET @SalesQuoteTotalCount = (
			SELECT COUNT(*)
			FROM tblOrderDoc
			WHERE strOrdDocID LIKE 'QU-%'
				AND bitCleared = 0
				AND dteJournalDate BETWEEN @StartDate
					AND @EndDate
				AND strUserName IN (
					SELECT *
					FROM dbo.fnSplitStringAsTable(@user_name_list, ',')
					)
			) + (
			SELECT COUNT(*)
			FROM tblOrderDocQ
			WHERE strOrdDocID LIKE 'QS-%'
				AND bitCleared = 0
				AND dteJournalDate BETWEEN @StartDate
					AND @EndDate
				AND strUserName IN (
					SELECT *
					FROM dbo.fnSplitStringAsTable(@user_name_list, ',')
					)
			)

	--TotalDistanceTravelled
	CREATE TABLE #UserDetails (
		Username VARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS
		,LastLoginDate DATE
		,LoginStatus VARCHAR(MAX)
		,DistanceTravelled DECIMAL(19, 2)
		)

	CREATE TABLE #UserLocationTracking (
		RowId INT
		,LocId INT
		,Username VARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS
		,GeoCord GEOGRAPHY
		,[Day] DATE
		)

	CREATE TABLE #UserWiseDistance (
		Username VARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS
		,Distance DECIMAL(19, 2)
		)

	CREATE TABLE #Total (Distance DECIMAL(19, 2))


	INSERT INTO #UserLocationTracking (
		RowId
		,LocId
		,Username
		,GeoCord
		,[Day]
		)
	SELECT RowId
		,LocationId
		,strUserName
		,geoCoord
		,[Day]
	FROM (
		SELECT ROW_NUMBER() OVER (
				ORDER BY dteCreatedDateTime ASC
				) AS RowId
			,ROW_NUMBER() OVER (
				PARTITION BY strUsername ORDER BY dteCreatedDateTime ASC
				) LocationId
			,strUserName
			,geoCoord
			,CONVERT(DATE, dteCreatedDateTime) AS [Day]
		FROM tblTrackUsersLocation
		WHERE strDocumentId IS NULL
			AND CONVERT(DATE, dteCreatedDateTime) >= CONVERT(DATE, @StartDate)
			AND CONVERT(DATE, dteCreatedDateTime) <= CONVERT(DATE, @EndDate)
		) AS RESULT

	DECLARE @totalRows INT = (
			SELECT count(*)
			FROM #UserLocationTracking
			)
	DECLARE @currentRow INT = 0
	DECLARE @CurrentUser VARCHAR(MAX)
	DECLARE @PrevUser VARCHAR(MAX)
	DECLARE @NextUser VARCHAR(MAX)
	DECLARE @Distance DECIMAL(19, 2) = 0.00

	WHILE @currentRow < @totalRows
	BEGIN
		IF EXISTS (
				SELECT *
				FROM #UserLocationTracking
				WHERE RowId = @currentRow
				)
		BEGIN
			SET @CurrentUser = (
					SELECT Username
					FROM #UserLocationTracking
					WHERE RowId = @currentRow
					)
			SET @NextUser = (
					SELECT Username
					FROM #UserLocationTracking
					WHERE RowId = @currentRow + 1
					)

			IF (@CurrentUser = @NextUser)
			BEGIN
				DECLARE @or GEOGRAPHY
					,@dest GEOGRAPHY

				SET @or = (
						SELECT GeoCord
						FROM #UserLocationTracking
						WHERE RowId = @currentRow
						)
				SET @dest = (
						SELECT GeoCord
						FROM #UserLocationTracking
						WHERE RowId = @currentRow + 1
						)
				--distance in km
				SET @Distance = @Distance + CONVERT(DECIMAL(19, 2), (
							SELECT @or.STDistance(@dest) / 1000
							))

				INSERT INTO #UserWiseDistance
				SELECT @CurrentUser
					,@Distance
			END
		END

		SET @currentRow = @currentRow + 1
	END

	INSERT INTO #Total (Distance)
	SELECT (
			SELECT sum(Distance)
			FROM #UserWiseDistance
			WHERE Username IN (
					SELECT *
					FROM dbo.fnSplitStringAsTable(@user_name_list, ',')
					)
			) AS RESULT

	SET @TotalDistancTravelled = ISNULL((
				SELECT Distance
				FROM #Total
				), 0.00)
		--TotalWorkedHour
		;

	WITH userCTE (
		RowNo
		,strUserName
		,WorkingMinutes
		,BreakMinutes
		,dteTimeIn
		,dteTimeOut
		,dteStartBreak
		,dteEndBreak
		)
	AS (
		SELECT ROW_NUMBER() OVER (
				PARTITION BY strUserName ORDER BY strUserName
				) AS RowNo
			,strUserName
			,(
				CASE 
					WHEN dteTimeOut IS NULL
						AND dteStartBreak IS NOT NULL
						THEN DATEDIFF(minute, dteTimeIn, dteStartBreak)
					WHEN dteTimeOut IS NOT NULL
						AND dteStartBreak IS NULL
						THEN DATEDIFF(minute, dteTimeIn, dteTimeOut)
					ELSE 0
					END
				) AS WorkingMinutes
			,(
				CASE 
					WHEN dteStartBreak IS NOT NULL
						AND dteEndBreak IS NOT NULL
						THEN DATEDIFF(minute, dteStartBreak, dteEndBreak)
					ELSE 0
					END
				) AS BreakMinutes
			,dteTimeIn
			,dteTimeOut
			,dteStartBreak
			,dteEndBreak
		FROM tblLoginHisotry
		WHERE tblLoginHisotry.strUserName IN (
				SELECT *
				FROM dbo.fnSplitStringAsTable(@user_name_list, ',')
				)
			AND CONVERT(DATE, dteLoginDate) >= CONVERT(DATE, @StartDate)
			AND CONVERT(DATE, dteLoginDate) <= CONVERT(DATE, @EndDate)
		)
		,outertest
	AS (
		SELECT strUserName
			,sum(WorkingMinutes) AS TotalWorkingMinutes
			,sum(BreakMinutes) AS TotalBreakMinutes
		FROM userCTE
		GROUP BY strUserName
		)
	SELECT @SalesInvoiceTotalAmount AS SalesInvoiceTotalAmount
		,@SalesInvoiceTotalCount AS SalesInvoiceTotalCount
		,@SalesOrderTotalAmount AS SalesOrderTotalAmount
		,@SalesOrderTotalCount AS SalesOrderTotalCount
		,@SalesQuoteTotalAmount AS SalesQuoteTotalAmount
		,@SalesQuoteTotalCount AS SalesQuoteTotalCount
		,ISNULL((
				SELECT sum(TotalWorkingMinutes)
				FROM outertest
				), 0) AS TotalWorkedHour
		,@CurrSymbol AS CurrencySymbol
		,@ThousandSep AS ThousandSep
		,@TotalDistancTravelled AS TotalDistancTravelled
		,@Decimal AS _Decimal

	DROP TABLE #UserLocationTracking

	DROP TABLE #UserDetails

	DROP TABLE #UserWiseDistance

	DROP TABLE #Total
END
GO

/****** Object:  StoredProcedure [dbo].[GetBarChartData]    Script Date: 21/05/2021 14:48:00 ******/
CREATE PROCEDURE [dbo].[GetBarChartData]  
@DocType int=0,
 @StartDate DATETIME
 ,@EndDate DATETIME,@user_name_list varchar(max)
AS
BEGIN
IF @DocType = 0
BEGIN

(Select ISNULL(Sum(decLineTotExc),0) as[TotalAmount], strUserName from  tblInvoiceDoc
    inner join tblInvoiceDocDT on tblInvoiceDocDT.strInvDocID=tblInvoiceDoc.strInvDocID
	 where  dteJournalDate between @StartDate  and @EndDate and bitDiscountTax=0  and 
	  strUserName in (select * from dbo.fnSplitStringAsTable(@user_name_list,','))group by strUserName)
END
ELSE IF @DocType=1
BEGIN

 (select ISNULL(Sum(decSubTotal),0)as[TotalAmount],strUserName from tblOrderDoc
 where strOrdDocID like 'SO-%' And bitCleared = 0 AND dteJournalDate between @StartDate and @EndDate
 And strUserName in (select * from dbo.fnSplitStringAsTable(@user_name_list,','))group by strUserName)

END
Else
BEGIN


WITH quoteCTE (
	TotalAmount
	,strUserName
	)
AS (
	(
		SELECT ISNULL(Sum(decSubTotal), 0) AS [TotalAmount]
			,strUserName
		FROM tblOrderDoc
		WHERE strOrdDocID LIKE 'QU-%'
			AND bitCleared = 0
			AND dteJournalDate BETWEEN @StartDate
				AND @EndDate
			AND strUserName IN (
				SELECT *
				FROM dbo.fnSplitStringAsTable(@user_name_list, ',')
				)
		GROUP BY strUserName
		)
	
	UNION ALL
	
	(
		SELECT ISNULL(Sum(decSubTotal), 0) AS [TotalAmount]
			,strUserName
		FROM tblOrderDocQ
		WHERE strOrdDocID LIKE 'QS-%'
			AND bitCleared = 0
			AND dteJournalDate BETWEEN @StartDate
				AND @EndDate
			AND strUserName IN (
				SELECT *
				FROM dbo.fnSplitStringAsTable(@user_name_list, ',')
				)
		GROUP BY strUserName
		)
	)
SELECT sum(TotalAmount) AS TotalAmount
	,strUserName
FROM quoteCTE
GROUP BY strUserName
  
END

END
GO

/****** Object:  StoredProcedure [dbo].[GetUserName]    Script Date: 21/05/2021 14:48:00 ******/
CREATE PROCEDURE [dbo].[GetUserName]
AS
BEGIN
	SELECT strUserName,strName from tblUsers where Isnull(blnIsMobileUser,0)=1 group by strUserName,strName
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateAutoLotNumber]    Script Date: 01/06/2021 09:11:00 ******/
CREATE PROCEDURE [dbo].[UpdateAutoLotNumber] (
	@InvSerialType NVARCHAR(MAX)
	,@NextLotNumber int)
AS
BEGIN
	UPDATE tblInvSerialTypes Set intNextLotNumber = @NextLotNumber WHERE strInvSerialType = @InvSerialType
END
GO

/****** Object:  StoredProcedure [dbo].[CheckBinMismatched]    Script Date: 04-06-2021 17:48:00 ******/
CREATE PROCEDURE [dbo].[CheckBinMismatched]
AS
BEGIN
	SELECT TOP 1 strPartNumber AS EXT_PartNumber
	FROM (
		SELECT *
			,(
				SELECT Sum(decOnHand)
				FROM tblInvExtBIn AS EXTBIN
				WHERE EXTBIN.strPartNumber = EXT.strPartNumber
					AND EXTBIN.strLocName = EXT.strLocName
					AND EXTBIN.bitAllowed = 1
				) AS Bin_OnHand
		FROM tblInvExt AS EXT
		WHERE EXT.bitInactive = 0
		) AS Result1
	WHERE decOnHand <> Bin_OnHand
END
GO

/****** Object:  StoredProcedure [dbo].[CorrectInventoryStock]    Script Date: 04-06-2021 17:48:00 ******/
CREATE PROCEDURE [dbo].[CorrectInventoryStock] @UserName AS NVARCHAR(500) = 'Administrator'
AS
BEGIN
	IF (
			NOT EXISTS (
				SELECT *
				FROM sys.tables
				WHERE name = 'tblInvStockUpdateHistory'
				)
			)
	BEGIN
		CREATE TABLE tblInvStockUpdateHistory (
			[RowId] [bigint] IDENTITY(1, 1) NOT NULL
			,[strPartNumber] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
			,[strLocName] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
			,[lngBinId] [bigint] NOT NULL
			,[decExtOnHand] [money] NOT NULL
			,[decTotalBinOnHand] [money] NOT NULL
			,[decQtyDifference] [money] NOT NULL
			,[decOldBinOnHand] [money] NOT NULL
			,[decNewBinOnHand] [money] NOT NULL
			,[bitAllowed] [bit] NULL
			,[bitDefault] [bit] NULL
			,[bitUpdated] [bit] NOT NULL
			,[bitDirectUpdateQty] [bit] NOT NULL
			,[dteRowUpdated] [datetime] NULL
			,[dteRowCreated] [datetime] NOT NULL
			,[strUserName] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
			,[strComment] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
			,[bitError] [bit] NOT NULL
			,[intBatch] [bigint] NOT NULL
			,[decQtyBeforeUpdateQty] [money] NULL
			,[decQtyAfterUpdateQty] [money] NULL
			,
			)
	END

	IF (
			NOT EXISTS (
				SELECT *
				FROM sys.tables
				WHERE name = 'tblInvStockUpdateHistoryNegativeBin'
				)
			)
	BEGIN
		CREATE TABLE tblInvStockUpdateHistoryNegativeBin (
			[RowId] [bigint] IDENTITY(1, 1) NOT NULL
			,[OldBinId] [bigint] NOT NULL
			,[OldBinstrPartNumber] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
			,[OldBinstrLocName] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
			,[OldBindecOnHand] [money] NOT NULL
			,[NewBinId] [bigint] NOT NULL
			,[NewBinstrPartNumber] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
			,[NewBinstrLocName] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
			,[NewBindecOnHand] [money] NOT NULL
			,[BitUpdated] [bit] NOT NULL
			,[OldBindecOnHandUpdate] [money] NOT NULL
			,[NewBindecOnHandUpdate] [money] NOT NULL
			,[intBatch] [bigint] NOT NULL
			,
			)
	END

	CREATE TABLE #Temp_StockUpdateHistory (
		[RowId] [bigint] IDENTITY(1, 1) NOT NULL
		,[strPartNumber] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[strLocName] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[lngBinId] [bigint] NOT NULL
		,[decExtOnHand] [money] NOT NULL
		,[decTotalBinOnHand] [money] NOT NULL
		,[decQtyDifference] [money] NOT NULL
		,[decOldBinOnHand] [money] NOT NULL
		,[decNewBinOnHand] [money] NOT NULL
		,[bitAllowed] [bit] NULL
		,[bitDefault] [bit] NULL
		,[bitUpdated] [bit] NOT NULL
		,[bitDirectUpdateQty] [bit] NOT NULL
		,[dteRowUpdated] [datetime] NULL
		,[dteRowCreated] [datetime] NOT NULL
		,[strUserName] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
		,[strComment] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
		,[bitError] [bit] NOT NULL
		,
		)

	CREATE TABLE #Temp_BinUpdateHistory (
		[RowId] [bigint] IDENTITY(1, 1) NOT NULL
		,[OldBinId] [bigint] NOT NULL
		,[OldBinstrPartNumber] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[OldBinstrLocName] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[OldBindecOnHand] [money] NOT NULL
		,[NewBinId] [bigint] NOT NULL
		,[NewBinstrPartNumber] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[NewBinstrLocName] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
		,[NewBindecOnHand] [money] NOT NULL
		,[BitUpdated] [bit] NOT NULL
		,[OldBindecOnHandUpdate] [money] NOT NULL
		,[NewBindecOnHandUpdate] [money] NOT NULL
		,
		)

	CREATE TABLE #Temp_InvExtData (
		RowId INT
		,EXT_strPartNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,EXT_strLocName NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,EXT_decOnHand MONEY
		,EXT_decValue MONEY
		,BIN_decOnHand MONEY
		,IsUpdated BIT
		)

	CREATE TABLE #Temp_InvExtDataMissingBin (
		RowId INT
		,EXT_strPartNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,EXT_strLocName NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,EXT_decOnHand MONEY
		,EXT_decValue MONEY
		,BIN_decOnHand MONEY
		,IsUpdated BIT
		,BIN_Count BIGINT
		)

	CREATE TABLE #Temp_InvExtBinData (
		RowId INT
		,BIN_strPartNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,BIN_strLocName NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,BIN_lngBinId BIGINT
		,BIN_decOnHand MONEY
		,BIN_bitAllowed BIT
		,BIN_bitDefault BIT
		,IsUpdated BIT
		)

	CREATE TABLE #Temp_InvExtLotBinData (
		RowId INT
		,BIN_strPartNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,BIN_strLocName NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,BIN_lngBinId BIGINT
		,BIN_decQty MONEY
		)

	CREATE TABLE #Temp_InvExtLotBinDataRow (
		RowId INT
		,BIN_strPartNumber NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,BIN_strLocName NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,BIN_lngBinId BIGINT
		,BIN_decQty MONEY
		)

	INSERT INTO #Temp_InvExtDataMissingBin (
		RowId
		,EXT_strPartNumber
		,EXT_strLocName
		,EXT_decOnHand
		,EXT_decValue
		,BIN_decOnHand
		,IsUpdated
		,Bin_Count
		)
	SELECT row_number() OVER (
			ORDER BY strPartNumber
				,strLocName
			) AS RowId
		,strPartNumber AS EXT_PartNumber
		,strLocName AS EXT_strLocName
		,decOnHand AS EXT_decOnHand
		,decValue AS EXT_decValue
		,Bin_OnHand AS BIN_decOnHand
		,Cast(0 AS BIT) AS IsUpdated
		,Bin_Count
	FROM (
		SELECT *
			,ISNULL((
					SELECT Sum(decOnHand)
					FROM tblInvExtBIn AS EXTBIN
					WHERE EXTBIN.strPartNumber = EXT.strPartNumber
						AND EXTBIN.strLocName = EXT.strLocName
					), 0) AS Bin_OnHand
			,(
				SELECT Count(*)
				FROM tblInvExtBIn AS EXTBIN
				WHERE EXTBIN.strPartNumber = EXT.strPartNumber
					AND EXTBIN.strLocName = EXT.strLocName
				) AS Bin_Count
		FROM tblInvExt AS EXT
		) AS Result1
	WHERE decOnHand <> Bin_OnHand
		AND Bin_Count = 0

DELETE FROM tblInvTrackingDTBin
WHERE lngID IN (SELECT BIN.lngID
FROM tblInv INV
INNER JOIN tblInvTrackingDT DTL ON INV.strPartNumber = DTL.strPartNumber 
INNER JOIN tblInvTrackingDTBin BIN ON DTL.lngInvTrackID = BIN.lngInvTrackID AND DTL.intMainLineNo = BIN.intMainLineNo 
WHERE INV.intType <> 1)

	DECLARE @totalRowsMissingBin INT = (
			SELECT count(*)
			FROM #Temp_InvExtDataMissingBin
			)
	DECLARE @currentRowMissingBin INT = 0

	IF @totalRowsMissingBin > 0
	BEGIN
		WHILE @currentRowMissingBin <= @totalRowsMissingBin
		BEGIN
			IF EXISTS (
					SELECT *
					FROM #Temp_InvExtDataMissingBin
					WHERE RowId = @currentRowMissingBin
					)
			BEGIN
				DECLARE @PartNumberMissingBin AS NVARCHAR(200) = (
						SELECT EXT_strPartNumber
						FROM #Temp_InvExtDataMissingBin
						WHERE RowId = @currentRowMissingBin
						)
				DECLARE @LocNameMissingBin AS NVARCHAR(200) = (
						SELECT EXT_strLocName
						FROM #Temp_InvExtDataMissingBin
						WHERE RowId = @currentRowMissingBin
						)
				DECLARE @BinIdMissingBin AS BIGINT = ISNULL((
							SELECT ISNULL((
										SELECT TOP 1 tblInvLocBin.lngId
										FROM tblInvExt
										INNER JOIN tblInvLocBin ON tblInvExt.strLocName = tblInvLocBin.strLocName
											AND tblInvExt.strBinLoc = tblInvLocBin.strBinCode
										WHERE tblInvExt.strPartNumber = @PartNumberMissingBin
											AND tblInvLocBin.strLocName = @LocNameMissingBin
										), (
										SELECT TOP 1 tblInvLocBin.lngId
										FROM tblInvLocBin
										WHERE tblInvLocBin.strLocName = @LocNameMissingBin
										ORDER BY tblInvLocBin.bitInactive
										))
							), - 1)

				IF (@BinIdMissingBin <> - 1)
				BEGIN
					INSERT INTO tblInvExtBin (
						strPartNumber
						,strLocName
						,lngBinID
						,decAvail
						,decAlloc
						,decOnHand
						,decMaximumQty
						,bitAllowed
						,bitDefault
						,dteRowUpdated
						)
					SELECT EXT_strPartNumber
						,EXT_strLocName
						,@BinIdMissingBin
						,0.00
						,0.00
						,0.00
						,0.00
						,1
						,1
						,GETDATE()
					FROM #Temp_InvExtDataMissingBin
					WHERE RowId = @currentRowMissingBin

					DECLARE @BinCodeMisingBin AS NVARCHAR(300) = (
							SELECT TOP 1 strBinCode
							FROM tblInvLocBin
							WHERE lngId = @BinIdMissingBin
								AND strLocName = @LocNameMissingBin
							)

					IF (@BinCodeMisingBin IS NOT NULL)
					BEGIN
						UPDATE tblInvExt
						SET strBinLoc = @BinCodeMisingBin
						WHERE strPartNumber = @PartNumberMissingBin
							AND strLocName = @LocNameMissingBin
							AND (
								strBinLoc = ''
								OR strBinLoc IS NULL
								)
					END
				END
			END

			SET @currentRowMissingBin = (@currentRowMissingBin + 1)
		END
	END

	BEGIN
		IF EXISTS (
				SELECT *
				FROM tblInvExtBin
				WHERE lngBinID = 0
				)
		BEGIN
			DECLARE @BatchIDZeroBinID AS BIGINT = (
					ISNULL((
							SELECT Max(intBatch)
							FROM tblInvStockUpdateHistory
							), 0) + 1
					)

			INSERT INTO tblInvStockUpdateHistory (
				strPartNumber
				,strLocName
				,lngBinId
				,decExtOnHand
				,decTotalBinOnHand
				,decQtyDifference
				,decOldBinOnHand
				,decNewBinOnHand
				,bitAllowed
				,bitDefault
				,bitUpdated
				,bitDirectUpdateQty
				,dteRowUpdated
				,dteRowCreated
				,strUserName
				,strComment
				,bitError
				,intBatch
				,decQtyBeforeUpdateQty
				,decQtyAfterUpdateQty
				)
			SELECT strPartNumber
				,strLocName
				,lngBinID
				,0 AS decExtOnHand
				,0 AS decTotalBinOnHand
				,0 AS decQtyDifference
				,0 AS decOldBinOnHand
				,0 AS decNewBinOnHand
				,bitAllowed
				,bitDefault
				,1 AS bitUpdated
				,0 AS bitDirectUpdateQty
				,dteRowUpdated
				,GETDATE() AS dteRowCreated
				,@UserName AS strUserName
				,'Section 0 Deleted Record from tblInvExtBin where BinID is Zero' AS strComment
				,0 AS bitError
				,@BatchIDZeroBinID AS intBatch
				,decOnHand AS decTotalBinOnHand
				,0 AS decQtyAfterUpdateQty
			FROM tblInvExtBin
			WHERE lngBinID = 0

			DELETE
			FROM tblInvExtBin
			WHERE lngBinID = 0
		END
	END

	BEGIN
		IF NOT EXISTS (
				SELECT TOP 1 *
				FROM tblInvTrackingDTBin
				WHERE tblInvTrackingDTBin.lngBinID NOT IN (
						SELECT tblInvLocBin.lngID
						FROM tblInvLocBin
						)
				)
		BEGIN
			DELETE
			FROM tblInvExtBin
			WHERE tblInvExtBin.lngBinID NOT IN (
					SELECT tblInvLocBin.lngID
					FROM tblInvLocBin
					)
		END
	END

	BEGIN
		INSERT INTO #Temp_InvExtData (
			RowId
			,EXT_strPartNumber
			,EXT_strLocName
			,EXT_decOnHand
			,EXT_decValue
			,BIN_decOnHand
			,IsUpdated
			)
		SELECT row_number() OVER (
				ORDER BY strPartNumber
					,strLocName
				) AS RowId
			,strPartNumber AS EXT_PartNumber
			,strLocName AS EXT_strLocName
			,decOnHand AS EXT_decOnHand
			,decValue AS EXT_decValue
			,Bin_OnHand AS BIN_decOnHand
			,Cast(0 AS BIT) AS IsUpdated
		FROM (
			SELECT *
				,ISNULL((
						SELECT Sum(decOnHand)
						FROM tblInvExtBIn AS EXTBIN
						WHERE EXTBIN.strPartNumber = EXT.strPartNumber
							AND EXTBIN.strLocName = EXT.strLocName
							AND EXTBIN.lngBinID <> 0
						), 0.0000) AS Bin_OnHand
			FROM tblInvExt AS EXT
			) AS Result1
		WHERE decOnHand <> Bin_OnHand
	END

	DECLARE @IsNegativeInv AS BIT = (
			SELECT TOP 1 bitNegInv
			FROM tblCoOpts
			)
	DECLARE @totalRows INT = (
			SELECT count(*)
			FROM #Temp_InvExtData
			)
	DECLARE @currentRow INT = 0

	IF @totalRows > 0
	BEGIN
		WHILE @currentRow <= @totalRows
		BEGIN
			IF EXISTS (
					SELECT *
					FROM #Temp_InvExtData
					WHERE RowId = @currentRow
					)
			BEGIN
				DECLARE @PartNumber AS NVARCHAR(200) = (
						SELECT EXT_strPartNumber
						FROM #Temp_InvExtData
						WHERE RowId = @currentRow
						)
				DECLARE @LocName AS NVARCHAR(200) = (
						SELECT EXT_strLocName
						FROM #Temp_InvExtData
						WHERE RowId = @currentRow
						)
				DECLARE @OnHand AS MONEY = (
						SELECT EXT_decOnHand
						FROM #Temp_InvExtData
						WHERE RowId = @currentRow
						)
				DECLARE @BINOnHand AS MONEY = (
						SELECT BIN_decOnHand
						FROM #Temp_InvExtData
						WHERE RowId = @currentRow
						)
				DECLARE @QtyDifference AS MONEY = (@OnHand - @BINOnHand)

				INSERT INTO #Temp_InvExtBinData (
					RowId
					,BIN_strPartNumber
					,BIN_strLocName
					,BIN_decOnHand
					,BIN_bitAllowed
					,BIN_bitDefault
					,BIN_lngBinId
					,IsUpdated
					)
				SELECT row_number() OVER (
						ORDER BY tblInvExtBin.strPartNumber
							,tblInvExtBin.strLocName
							,tblInvExtBin.lngBinId
						) AS RowId
					,tblInvExtBin.strPartNumber AS BIN_strPartNumber
					,tblInvExtBin.strLocName AS BIN_LocName
					,tblInvExtBin.decOnHand AS BIN_decOnHand
					,tblInvExtBin.bitAllowed AS BIN_bitAllowed
					,tblInvExtBin.bitDefault AS BIN_bitDefault
					,tblInvExtBin.lngBinID AS BIN_lngBinID
					,Cast(0 AS BIT) AS IsUpdated
				FROM tblInvExtBin
				WHERE strPartNumber = @PartNumber
					AND strLocName = @LocName

				IF (
						ISNULL((
								SELECT bitInvSerialType
								FROM tblInv
								WHERE strPartNumber = @PartNumber
								), Cast(0 AS BIT)) = 0
						OR (
							ISNULL((
									SELECT bitInvSerialType
									FROM tblInv
									WHERE strPartNumber = @PartNumber
									), Cast(0 AS BIT)) = 1
							AND (
								NOT EXISTS (
									SELECT lngBinId
									FROM tblinvLotExt
									WHERE strPartNumber = @PartNumber
									
									UNION ALL
									
									SELECT lngBinId
									FROM tblInvSerialExt
									WHERE strPartNumber = @PartNumber
									)
								)
							)
						)
				BEGIN
					DECLARE @BinID AS BIGINT = ISNULL(ISNULL((
									SELECT TOP 1 BIN_lngBinId
									FROM #Temp_InvExtBinData
									WHERE BIN_bitAllowed = 1
										AND BIN_decOnHand >= @QtyDifference
									), ISNULL((
										SELECT TOP 1 BIN_lngBinId
										FROM #Temp_InvExtBinData
										WHERE BIN_bitAllowed = 1
											AND BIN_decOnHand <> 0
										), ISNULL((
											SELECT TOP 1 BIN_lngBinId
											FROM #Temp_InvExtBinData
											WHERE BIN_bitAllowed = 1
											), (
											SELECT TOP 1 BIN_lngBinId
											FROM #Temp_InvExtBinData
											)))), - 1)
					DECLARE @OldBinOnHand AS MONEY = 0
					DECLARE @IsAllowed AS MONEY = 0
					DECLARE @IsDefault AS MONEY = 0
					DECLARE @NewBinOnHand AS MONEY = 0

					IF (@BinID <> - 1)
					BEGIN
						SET @OldBinOnHand = (
								SELECT BIN_decOnHand
								FROM #Temp_InvExtBinData
								WHERE BIN_lngBinId = @BinID
								)
						SET @IsAllowed = (
								SELECT BIN_bitAllowed
								FROM #Temp_InvExtBinData
								WHERE BIN_lngBinId = @BinID
								)
						SET @IsDefault = (
								SELECT BIN_bitDefault
								FROM #Temp_InvExtBinData
								WHERE BIN_lngBinId = @BinID
								)
						SET @NewBinOnHand = (@OldBinOnHand + @QtyDifference)

						IF (@IsNegativeInv = 1)
						BEGIN
							INSERT INTO #Temp_StockUpdateHistory (
								strPartNumber
								,strLocName
								,lngBinId
								,decExtOnHand
								,decTotalBinOnHand
								,decQtyDifference
								,decOldBinOnHand
								,decNewBinOnHand
								,bitAllowed
								,bitDefault
								,bitUpdated
								,bitDirectUpdateQty
								,dteRowCreated
								,strUserName
								,strComment
								,bitError
								)
							VALUES (
								@PartNumber
								,@LocName
								,@BinID
								,@OnHand
								,@BINOnHand
								,@QtyDifference
								,@OldBinOnHand
								,@NewBinOnHand
								,@IsAllowed
								,@IsDefault
								,0
								,0
								,SYSDATETIME()
								,@UserName
								,'Section 1 (Negative Inventory Allowed)'
								,0
								)
						END
						ELSE
						BEGIN
							DECLARE @1stBinQty AS MONEY = 0
							DECLARE @2ndBinQty AS MONEY = 0
							DECLARE @FinalQtyDiff AS MONEY = 0

							SET @QtyDifference = (@BINOnHand - @OnHand)

							DECLARE @1stBinID AS BIGINT = (
									ISNULL(ISNULL((
												SELECT TOP 1 BIN_lngBinId
												FROM #Temp_InvExtBinData
												WHERE BIN_bitDefault = 1
													AND BIN_bitAllowed = 1
													AND BIN_decOnHand <> 0
												), ISNULL((
													SELECT TOP 1 BIN_lngBinId
													FROM #Temp_InvExtBinData
													WHERE BIN_bitAllowed = 1
														AND BIN_decOnHand <> 0
													), ISNULL((
														SELECT TOP 1 BIN_lngBinId
														FROM #Temp_InvExtBinData
														WHERE BIN_bitAllowed = 1
														), (
														SELECT TOP 1 BIN_lngBinId
														FROM #Temp_InvExtBinData
														)))), - 1)
									)

							IF (@1stBinID <> - 1)
							BEGIN
								SET @1stBinQty = (
										SELECT BIN_decOnHand
										FROM #Temp_InvExtBinData
										WHERE BIN_lngBinId = @1stBinID
										)

								IF (@QtyDifference > @1stBinQty)
								BEGIN
									SET @NewBinOnHand = (@1stBinQty - @1stBinQty)

									DECLARE @2ndBinID AS BIGINT = ISNULL((
												SELECT TOP 1 BIN_lngBinId
												FROM #Temp_InvExtBinData
												WHERE BIN_lngBinId <> @1stBinID
													AND BIN_decOnHand >= @NewBinOnHand
													AND BIN_bitAllowed = 1
												ORDER BY BIN_decOnHand DESC
												), ISNULL((
													SELECT TOP 1 BIN_lngBinId
													FROM #Temp_InvExtBinData
													WHERE BIN_lngBinId <> @1stBinID
													ORDER BY BIN_decOnHand DESC
														,BIN_bitAllowed DESC
													), - 1))

									IF (@2ndBinID <> - 1)
									BEGIN
										SET @OldBinOnHand = @1stBinQty
										SET @IsAllowed = (
												SELECT BIN_bitAllowed
												FROM #Temp_InvExtBinData
												WHERE BIN_lngBinId = @1stBinID
												)
										SET @IsDefault = (
												SELECT BIN_bitDefault
												FROM #Temp_InvExtBinData
												WHERE BIN_lngBinId = @1stBinID
												)

										INSERT INTO #Temp_StockUpdateHistory (
											strPartNumber
											,strLocName
											,lngBinId
											,decExtOnHand
											,decTotalBinOnHand
											,decQtyDifference
											,decOldBinOnHand
											,decNewBinOnHand
											,bitAllowed
											,bitDefault
											,bitUpdated
											,bitDirectUpdateQty
											,dteRowCreated
											,strUserName
											,strComment
											,bitError
											)
										VALUES (
											@PartNumber
											,@LocName
											,@1stBinID
											,@OnHand
											,@BINOnHand
											,(@1stBinQty * (- 1))
											,@OldBinOnHand
											,@NewBinOnHand
											,@IsAllowed
											,@IsDefault
											,0
											,0
											,SYSDATETIME()
											,@UserName
											,'Section 2 (Difference is Greater Then Default Bin Qty Update Bin 1)'
											,0
											)

										SET @2ndBinQty = (
												SELECT BIN_decOnHand
												FROM #Temp_InvExtBinData
												WHERE BIN_lngBinId = @2ndBinID
												)
										SET @IsAllowed = (
												SELECT BIN_bitAllowed
												FROM #Temp_InvExtBinData
												WHERE BIN_lngBinId = @2ndBinID
												)
										SET @IsDefault = (
												SELECT BIN_bitDefault
												FROM #Temp_InvExtBinData
												WHERE BIN_lngBinId = @2ndBinID
												)
										SET @FinalQtyDiff = (@QtyDifference - @1stBinQty)
										SET @NewBinOnHand = (@2ndBinQty - @FinalQtyDiff)
										SET @OldBinOnHand = @2ndBinQty

										INSERT INTO #Temp_StockUpdateHistory (
											strPartNumber
											,strLocName
											,lngBinId
											,decExtOnHand
											,decTotalBinOnHand
											,decQtyDifference
											,decOldBinOnHand
											,decNewBinOnHand
											,bitAllowed
											,bitDefault
											,bitUpdated
											,bitDirectUpdateQty
											,dteRowCreated
											,strUserName
											,strComment
											,bitError
											)
										VALUES (
											@PartNumber
											,@LocName
											,@2ndBinID
											,@OnHand
											,@BINOnHand
											,(@FinalQtyDiff * (- 1))
											,@OldBinOnHand
											,@NewBinOnHand
											,@IsAllowed
											,@IsDefault
											,0
											,0
											,SYSDATETIME()
											,@UserName
											,'Section 3 (Difference is Greater Then Default Bin Qty Update Bin 2)'
											,0
											)
									END
									ELSE
									BEGIN
										SET @OldBinOnHand = @1stBinQty
										SET @NewBinOnHand = (@1stBinQty - @QtyDifference)

										INSERT INTO #Temp_StockUpdateHistory (
											strPartNumber
											,strLocName
											,lngBinId
											,decExtOnHand
											,decTotalBinOnHand
											,decQtyDifference
											,decOldBinOnHand
											,decNewBinOnHand
											,bitAllowed
											,bitDefault
											,bitUpdated
											,bitDirectUpdateQty
											,dteRowCreated
											,strUserName
											,strComment
											,bitError
											)
										VALUES (
											@PartNumber
											,@LocName
											,@1stBinID
											,@OnHand
											,@BINOnHand
											,(@QtyDifference * (- 1))
											,@OldBinOnHand
											,@NewBinOnHand
											,NULL
											,NULL
											,0
											,0
											,SYSDATETIME()
											,@UserName
											,'Section 4 (ERROR : BINID NOT FOUND)'
											,1
											)
									END
								END
								ELSE
								BEGIN
									SET @OldBinOnHand = @1stBinQty
									SET @IsAllowed = (
											SELECT BIN_bitAllowed
											FROM #Temp_InvExtBinData
											WHERE BIN_lngBinId = @1stBinID
											)
									SET @IsDefault = (
											SELECT BIN_bitDefault
											FROM #Temp_InvExtBinData
											WHERE BIN_lngBinId = @1stBinID
											)
									SET @NewBinOnHand = (@OldBinOnHand - @QtyDifference)

									INSERT INTO #Temp_StockUpdateHistory (
										strPartNumber
										,strLocName
										,lngBinId
										,decExtOnHand
										,decTotalBinOnHand
										,decQtyDifference
										,decOldBinOnHand
										,decNewBinOnHand
										,bitAllowed
										,bitDefault
										,bitUpdated
										,bitDirectUpdateQty
										,dteRowCreated
										,strUserName
										,strComment
										,bitError
										)
									VALUES (
										@PartNumber
										,@LocName
										,@1stBinID
										,@OnHand
										,@BINOnHand
										,(@QtyDifference * (- 1))
										,@OldBinOnHand
										,@NewBinOnHand
										,@IsAllowed
										,@IsDefault
										,0
										,0
										,SYSDATETIME()
										,@UserName
										,'Section 5 (Difference is Less Then Default Bin Qty Update Bin 1)'
										,0
										)
								END
							END
							ELSE
							BEGIN
								INSERT INTO #Temp_StockUpdateHistory (
									strPartNumber
									,strLocName
									,lngBinId
									,decExtOnHand
									,decTotalBinOnHand
									,decQtyDifference
									,decOldBinOnHand
									,decNewBinOnHand
									,bitAllowed
									,bitDefault
									,bitUpdated
									,bitDirectUpdateQty
									,dteRowCreated
									,strUserName
									,strComment
									,bitError
									)
								VALUES (
									@PartNumber
									,@LocName
									,@BinID
									,@OnHand
									,@BINOnHand
									,@QtyDifference
									,@OldBinOnHand
									,@NewBinOnHand
									,@IsAllowed
									,@IsDefault
									,0
									,0
									,SYSDATETIME()
									,@UserName
									,'Section 6 (ERROR : BINID NOT FOUND)'
									,1
									)
							END
						END
					END
					ELSE
					BEGIN
						INSERT INTO #Temp_StockUpdateHistory (
							strPartNumber
							,strLocName
							,lngBinId
							,decExtOnHand
							,decTotalBinOnHand
							,decQtyDifference
							,decOldBinOnHand
							,decNewBinOnHand
							,bitAllowed
							,bitDefault
							,bitUpdated
							,bitDirectUpdateQty
							,dteRowCreated
							,strUserName
							,strComment
							,bitError
							)
						VALUES (
							@PartNumber
							,@LocName
							,@BinID
							,@OnHand
							,@BINOnHand
							,@QtyDifference
							,@OldBinOnHand
							,@NewBinOnHand
							,@IsAllowed
							,@IsDefault
							,0
							,0
							,SYSDATETIME()
							,@UserName
							,'Section 7 (ERROR : BINID NOT FOUND)'
							,1
							)
					END
				END
				ELSE
				BEGIN
					INSERT INTO #Temp_InvExtLotBinData (
						RowId
						,BIN_lngBinId
						,BIN_strPartNumber
						,BIN_strLocName
						,BIN_decQty
						)
					SELECT row_number() OVER (
							ORDER BY ResultBin1.strPartNumber
								,ResultBin1.strLocName
								,ResultBin1.lngBinId
							) AS RowId
						,*
					FROM (
						SELECT lngBinId
							,strPartNumber
							,strLocName
							,Sum(decQty) AS TotalQty
						FROM tblinvLotExt
						WHERE strPartNumber = @PartNumber
							AND strLocName = @LocName
							AND lngBinID <> 0
						GROUP BY lngBinId
							,strPartNumber
							,strLocName
						
						UNION ALL
						
						SELECT lngBinId
							,strPartNumber
							,strLocName
							,Sum(decQty) AS TotalQty
						FROM tblInvSerialExt
						WHERE strPartNumber = @PartNumber
							AND strLocName = @LocName
							AND lngBinID <> 0
						GROUP BY lngBinId
							,strPartNumber
							,strLocName
						) AS ResultBin1

					DECLARE @BinIDSerialLot AS BIGINT = 0
					DECLARE @OldBinOnHandSerialLot AS MONEY = 0
					DECLARE @IsAllowedSerialLot AS MONEY = 0
					DECLARE @IsDefaultSerialLot AS MONEY = 0
					DECLARE @NewBinOnHandSerialLot AS MONEY = 0

					IF EXISTS (
							SELECT *
							FROM #Temp_InvExtLotBinData
							)
					BEGIN
						INSERT INTO #Temp_InvExtLotBinDataRow (
							RowId
							,BIN_lngBinId
							,BIN_strPartNumber
							,BIN_strLocName
							,BIN_decQty
							)
						SELECT row_number() OVER (
								ORDER BY BIN.BIN_strPartNumber
									,BIN.BIN_strLocName
									,BIN.BIN_lngBinId
								) AS RowId
							,BIN.BIN_lngBinId
							,BIN.BIN_strPartNumber
							,BIN.BIN_strLocName
							,ISNULL(LOTBIN.BIN_decQty, 0) AS BIN_decQty
						FROM #Temp_InvExtBinData AS BIN
						LEFT JOIN #Temp_InvExtLotBinData AS LOTBIN ON BIN.BIN_lngBinId = LOTBIN.BIN_lngBinId
						WHERE BIN.BIN_decOnHand <> ISNULL(LOTBIN.BIN_decQty, 0)

						DECLARE @LotCurrentRow AS INT = 0
						DECLARE @LotTotalRow AS INT = (
								SELECT COUNT(*)
								FROM #Temp_InvExtLotBinDataRow
								)

						WHILE @LotCurrentRow <= @LotTotalRow
						BEGIN
							IF EXISTS (
									SELECT *
									FROM #Temp_InvExtLotBinDataRow
									WHERE RowId = @LotCurrentRow
									)
							BEGIN
								SET @BinIDSerialLot = (
										SELECT BIN_lngBinId
										FROM #Temp_InvExtLotBinDataRow
										WHERE RowId = @LotCurrentRow
										)
								SET @NewBinOnHandSerialLot = (
										SELECT BIN_decQty
										FROM #Temp_InvExtLotBinDataRow
										WHERE RowId = @LotCurrentRow
										)
								SET @OldBinOnHandSerialLot = (
										SELECT BIN_decOnHand
										FROM #Temp_InvExtBinData
										WHERE BIN_lngBinId = @BinIDSerialLot
										)
								SET @IsAllowedSerialLot = (
										SELECT bitAllowed
										FROM tblInvExtBin
										WHERE lngBinID = @BinIDSerialLot
											AND strPartNumber = @PartNumber
											AND strLocName = @LocName
										)
								SET @IsDefaultSerialLot = (
										SELECT bitDefault
										FROM tblInvExtBin
										WHERE lngBinID = @BinIDSerialLot
											AND strPartNumber = @PartNumber
											AND strLocName = @LocName
										)

								INSERT INTO #Temp_StockUpdateHistory (
									strPartNumber
									,strLocName
									,lngBinId
									,decExtOnHand
									,decTotalBinOnHand
									,decQtyDifference
									,decOldBinOnHand
									,decNewBinOnHand
									,bitAllowed
									,bitDefault
									,bitUpdated
									,bitDirectUpdateQty
									,dteRowCreated
									,strUserName
									,strComment
									,bitError
									)
								VALUES (
									@PartNumber
									,@LocName
									,@BinIDSerialLot
									,@OnHand
									,@BINOnHand
									,@QtyDifference
									,@OldBinOnHandSerialLot
									,@NewBinOnHandSerialLot
									,@IsAllowedSerialLot
									,@IsDefaultSerialLot
									,0
									,1
									,SYSDATETIME()
									,@UserName
									,'Section 8 (Lot / Serial Number Direct Qty Update)'
									,0
									)
							END

							SET @LotCurrentRow = (@LotCurrentRow + 1)
						END

						DELETE
						FROM #Temp_InvExtLotBinData

						DELETE
						FROM #Temp_InvExtLotBinDataRow
					END
					ELSE
					BEGIN
						INSERT INTO #Temp_StockUpdateHistory (
							strPartNumber
							,strLocName
							,lngBinId
							,decExtOnHand
							,decTotalBinOnHand
							,decQtyDifference
							,decOldBinOnHand
							,decNewBinOnHand
							,bitAllowed
							,bitDefault
							,bitUpdated
							,bitDirectUpdateQty
							,dteRowCreated
							,strUserName
							,strComment
							,bitError
							)
						VALUES (
							@PartNumber
							,@LocName
							,@BinIDSerialLot
							,@OnHand
							,@BINOnHand
							,@QtyDifference
							,@OldBinOnHandSerialLot
							,@NewBinOnHandSerialLot
							,@IsAllowedSerialLot
							,@IsDefaultSerialLot
							,0
							,0
							,SYSDATETIME()
							,@UserName
							,'Section 9 (ERROR : SERIAL/LOT Record Not Found)'
							,1
							)
					END
				END

				DELETE
				FROM #Temp_InvExtBinData
			END

			SET @currentRow = @currentRow + 1
		END

		DELETE
		FROM #Temp_InvExtData
	END

	DECLARE @index AS INT = 0
	DECLARE @Count AS INT = (
			SELECT Count(*)
			FROM #Temp_StockUpdateHistory
			)
	DECLARE @BatchID AS BIGINT = (
			ISNULL((
					SELECT Max(intBatch)
					FROM tblInvStockUpdateHistory
					), 0) + 1
			)

	WHILE @index <= @Count
	BEGIN
		IF EXISTS (
				SELECT *
				FROM #Temp_StockUpdateHistory
				WHERE RowId = @index
					AND bitError = 0
				)
		BEGIN
			DECLARE @Stock_BinID AS BIGINT = (
					SELECT lngBinId
					FROM #Temp_StockUpdateHistory
					WHERE RowId = @index
					)
			DECLARE @Stock_PartNumber AS NVARCHAR(200) = (
					SELECT strPartNumber
					FROM #Temp_StockUpdateHistory
					WHERE RowId = @index
					)
			DECLARE @Stock_Location AS NVARCHAR(200) = (
					SELECT strLocName
					FROM #Temp_StockUpdateHistory
					WHERE RowId = @index
					)
			DECLARE @Stock_DirectUpdateQty AS BIT = (
					SELECT bitDirectUpdateQty
					FROM #Temp_StockUpdateHistory
					WHERE RowId = @index
					)
			DECLARE @Stock_QtyDifference AS MONEY = (
					SELECT decQtyDifference
					FROM #Temp_StockUpdateHistory
					WHERE RowId = @index
					)
			DECLARE @Stock_NewBinOnHand AS MONEY = (
					SELECT decNewBinOnHand
					FROM #Temp_StockUpdateHistory
					WHERE RowId = @index
					)
			DECLARE @QtyBeforeUpdate AS MONEY = 0
			DECLARE @QtyAfterUpdate AS MONEY = 0

			IF (@Stock_DirectUpdateQty = 1)
			BEGIN
				SET @QtyBeforeUpdate = (
						SELECT decOnHand
						FROM tblInvExtBin
						WHERE strPartNumber = @Stock_PartNumber
							AND strLocName = @Stock_Location
							AND lngBinID = @Stock_BinID
						)

				UPDATE tblInvExtBin
				SET decOnHand = (@Stock_NewBinOnHand)
					,decAvail = (@Stock_NewBinOnHand)
				WHERE strPartNumber = @Stock_PartNumber
					AND strLocName = @Stock_Location
					AND lngBinID = @Stock_BinID

				SET @QtyAfterUpdate = (
						SELECT decOnHand
						FROM tblInvExtBin
						WHERE strPartNumber = @Stock_PartNumber
							AND strLocName = @Stock_Location
							AND lngBinID = @Stock_BinID
						)

				INSERT INTO tblInvStockUpdateHistory (
					strPartNumber
					,strLocName
					,lngBinId
					,decExtOnHand
					,decTotalBinOnHand
					,decQtyDifference
					,decOldBinOnHand
					,decNewBinOnHand
					,bitAllowed
					,bitDefault
					,bitUpdated
					,bitDirectUpdateQty
					,dteRowUpdated
					,dteRowCreated
					,strUserName
					,strComment
					,bitError
					,intBatch
					,decQtyBeforeUpdateQty
					,decQtyAfterUpdateQty
					)
				SELECT strPartNumber
					,strLocName
					,lngBinId
					,decExtOnHand
					,decTotalBinOnHand
					,decQtyDifference
					,decOldBinOnHand
					,decNewBinOnHand
					,bitAllowed
					,bitDefault
					,1
					,bitDirectUpdateQty
					,SYSDATETIME()
					,dteRowCreated
					,strUserName
					,strComment
					,bitError
					,@BatchID
					,@QtyBeforeUpdate
					,@QtyAfterUpdate
				FROM #Temp_StockUpdateHistory
				WHERE RowId = @index
			END
			ELSE
			BEGIN
				SET @QtyBeforeUpdate = (
						SELECT decOnHand
						FROM tblInvExtBin
						WHERE strPartNumber = @Stock_PartNumber
							AND strLocName = @Stock_Location
							AND lngBinID = @Stock_BinID
						)

				UPDATE tblInvExtBin
				SET decOnHand = (decOnHand + @Stock_QtyDifference)
					,decAvail = (decAvail + @Stock_QtyDifference)
				WHERE strPartNumber = @Stock_PartNumber
					AND strLocName = @Stock_Location
					AND lngBinID = @Stock_BinID

				SET @QtyAfterUpdate = (
						SELECT decOnHand
						FROM tblInvExtBin
						WHERE strPartNumber = @Stock_PartNumber
							AND strLocName = @Stock_Location
							AND lngBinID = @Stock_BinID
						)

				INSERT INTO tblInvStockUpdateHistory (
					strPartNumber
					,strLocName
					,lngBinId
					,decExtOnHand
					,decTotalBinOnHand
					,decQtyDifference
					,decOldBinOnHand
					,decNewBinOnHand
					,bitAllowed
					,bitDefault
					,bitUpdated
					,bitDirectUpdateQty
					,dteRowUpdated
					,dteRowCreated
					,strUserName
					,strComment
					,bitError
					,intBatch
					,decQtyBeforeUpdateQty
					,decQtyAfterUpdateQty
					)
				SELECT strPartNumber
					,strLocName
					,lngBinId
					,decExtOnHand
					,decTotalBinOnHand
					,decQtyDifference
					,decOldBinOnHand
					,decNewBinOnHand
					,bitAllowed
					,bitDefault
					,1
					,bitDirectUpdateQty
					,SYSDATETIME()
					,dteRowCreated
					,strUserName
					,strComment
					,bitError
					,@BatchID
					,@QtyBeforeUpdate
					,@QtyAfterUpdate
				FROM #Temp_StockUpdateHistory
				WHERE RowId = @index
			END
		END
		ELSE
		BEGIN
			IF EXISTS (
					SELECT *
					FROM #Temp_StockUpdateHistory
					WHERE RowId = @index
					)
			BEGIN
				SET @QtyBeforeUpdate = (
						SELECT decOnHand
						FROM tblInvExtBin
						WHERE strPartNumber = @Stock_PartNumber
							AND strLocName = @Stock_Location
							AND lngBinID = @Stock_BinID
						)
				SET @QtyAfterUpdate = (
						SELECT decOnHand
						FROM tblInvExtBin
						WHERE strPartNumber = @Stock_PartNumber
							AND strLocName = @Stock_Location
							AND lngBinID = @Stock_BinID
						)

				INSERT INTO tblInvStockUpdateHistory (
					strPartNumber
					,strLocName
					,lngBinId
					,decExtOnHand
					,decTotalBinOnHand
					,decQtyDifference
					,decOldBinOnHand
					,decNewBinOnHand
					,bitAllowed
					,bitDefault
					,bitUpdated
					,bitDirectUpdateQty
					,dteRowUpdated
					,dteRowCreated
					,strUserName
					,strComment
					,bitError
					,intBatch
					,decQtyBeforeUpdateQty
					,decQtyAfterUpdateQty
					)
				SELECT strPartNumber
					,strLocName
					,lngBinId
					,decExtOnHand
					,decTotalBinOnHand
					,decQtyDifference
					,decOldBinOnHand
					,decNewBinOnHand
					,bitAllowed
					,bitDefault
					,0
					,bitDirectUpdateQty
					,SYSDATETIME()
					,dteRowCreated
					,strUserName
					,strComment
					,bitError
					,@BatchID
					,@QtyBeforeUpdate
					,@QtyAfterUpdate
				FROM #Temp_StockUpdateHistory
				WHERE RowId = @index
			END
		END

		SET @index = (@index + 1)
	END

	IF (@IsNegativeInv = 0)
	BEGIN
			;

		WITH Result1
		AS (
			SELECT AB.*
				,(
					SELECT TOP 1 lngBinID
					FROM tblInvExtBin AS XY
					WHERE XY.strPartNumber = AB.strPartNumber
						AND XY.strLocName = AB.strLocName
						AND XY.lngBinID <> AB.lngBinID
						AND XY.decOnHand >= ABS(AB.decOnHand)
					) AS NewBinId
				,(
					SELECT bitInvSerialType
					FROM tblInv INV
					WHERE INV.strPartNumber = AB.strPartNumber
					) AS IsLot
			FROM tblInvExtBin AS AB
			WHERE AB.decOnHand < 0
			)
			,Result2
		AS (
			SELECT Res1.lngBinId AS OldBinId
				,Res1.strPartNumber AS OldBinstrPartNumber
				,Res1.strLocName AS OldBinstrLocName
				,Res1.decOnHand AS OldBindecOnHand
				,Res1.NewBinId
				,BIN.strPartNumber AS NewBinstrPartNumber
				,BIN.strLocName AS NewBinstrLocName
				,BIN.decOnHand AS NewBindecOnHand
				,Cast(0 AS BIT) AS BitUpdated
			FROM Result1 AS Res1
			INNER JOIN tblInvExtBin AS BIN ON Res1.NewBinId = BIN.lngBinId
				AND Res1.strPartNumber = BIN.strPartNumber
				AND Res1.strLocName = BIN.strLocName
			WHERE NewBinId IS NOT NULL
			)
		INSERT INTO #Temp_BinUpdateHistory (
			OldBinId
			,OldBinstrPartNumber
			,OldBinstrLocName
			,OldBindecOnHand
			,NewBinId
			,NewBinstrPartNumber
			,NewBinstrLocName
			,NewBindecOnHand
			,BitUpdated
			,OldBindecOnHandUpdate
			,NewBindecOnHandUpdate
			)
		SELECT OldBinId
			,OldBinstrPartNumber
			,OldBinstrLocName
			,OldBindecOnHand
			,NewBinId
			,NewBinstrPartNumber
			,NewBinstrLocName
			,NewBindecOnHand
			,BitUpdated
			,0
			,0
		FROM Result2

		DECLARE @totalRowsNegBin INT = (
				SELECT count(*)
				FROM #Temp_BinUpdateHistory
				)
		DECLARE @currentRowNegBin INT = 0

		IF @totalRowsNegBin > 0
		BEGIN
			WHILE @currentRowNegBin <= @totalRowsNegBin
			BEGIN
				IF EXISTS (
						SELECT *
						FROM #Temp_BinUpdateHistory
						WHERE RowId = @currentRowNegBin
						)
				BEGIN
					DECLARE @OldBinId AS BIGINT = (
							SELECT OldBinId
							FROM #Temp_BinUpdateHistory
							WHERE RowId = @currentRowNegBin
							)
					DECLARE @OldBinstrPartNumber AS NVARCHAR(200) = (
							SELECT OldBinstrPartNumber
							FROM #Temp_BinUpdateHistory
							WHERE RowId = @currentRowNegBin
							)
					DECLARE @OldBinstrLocName AS NVARCHAR(200) = (
							SELECT OldBinstrLocName
							FROM #Temp_BinUpdateHistory
							WHERE RowId = @currentRowNegBin
							)
					DECLARE @OldBindecOnHand AS MONEY = (
							SELECT OldBindecOnHand
							FROM #Temp_BinUpdateHistory
							WHERE RowId = @currentRowNegBin
							)
					DECLARE @NewBinId AS BIGINT = (
							SELECT NewBinId
							FROM #Temp_BinUpdateHistory
							WHERE RowId = @currentRowNegBin
							)
					DECLARE @NewBinstrPartNumber AS NVARCHAR(200) = (
							SELECT NewBinstrPartNumber
							FROM #Temp_BinUpdateHistory
							WHERE RowId = @currentRowNegBin
							)
					DECLARE @NewBinstrLocName AS NVARCHAR(200) = (
							SELECT NewBinstrLocName
							FROM #Temp_BinUpdateHistory
							WHERE RowId = @currentRowNegBin
							)
					DECLARE @NewBindecOnHand AS MONEY = (
							SELECT NewBindecOnHand
							FROM #Temp_BinUpdateHistory
							WHERE RowId = @currentRowNegBin
							)

					UPDATE tblInvExtBin
					SET decOnHand = 0
						,decAvail = 0
					WHERE lngBinId = @OldBinId
						AND strLocName = @OldBinstrLocName
						AND strPartNumber = @OldBinstrPartNumber
						AND decOnHand < 0

					UPDATE tblInvExtBin
					SET decOnHand = (decOnHand - ABS(@OldBindecOnHand))
						,decAvail = (decAvail - ABS(@OldBindecOnHand))
					WHERE lngBinId = @NewBinId
						AND strLocName = @NewBinstrLocName
						AND strPartNumber = @NewBinstrPartNumber
						AND decOnHand > 0

					DECLARE @OldQtyAfterUpdate AS MONEY = (
							SELECT decOnHand
							FROM tblInvExtBin
							WHERE strPartNumber = @OldBinstrPartNumber
								AND strLocName = @OldBinstrLocName
								AND lngBinID = @OldBinId
							)
					DECLARE @NewQtyAfterUpdate AS MONEY = (
							SELECT decOnHand
							FROM tblInvExtBin
							WHERE strPartNumber = @NewBinstrPartNumber
								AND strLocName = @NewBinstrLocName
								AND lngBinID = @NewBinId
							)

					UPDATE #Temp_BinUpdateHistory
					SET BitUpdated = 1
						,OldBindecOnHandUpdate = @OldQtyAfterUpdate
						,NewBindecOnHandUpdate = @NewQtyAfterUpdate
					WHERE RowId = @currentRowNegBin
				END

				SET @currentRowNegBin = (@currentRowNegBin + 1)
			END
		END

		DECLARE @BatchIDNegBin AS BIGINT = (
				ISNULL((
						SELECT Max(intBatch)
						FROM tblInvStockUpdateHistoryNegativeBin
						), 0) + 1
				)

		INSERT INTO tblInvStockUpdateHistoryNegativeBin (
			OldBinId
			,OldBinstrPartNumber
			,OldBinstrLocName
			,OldBindecOnHand
			,NewBinId
			,NewBinstrPartNumber
			,NewBinstrLocName
			,NewBindecOnHand
			,BitUpdated
			,OldBindecOnHandUpdate
			,NewBindecOnHandUpdate
			,intBatch
			)
		SELECT OldBinId
			,OldBinstrPartNumber
			,OldBinstrLocName
			,OldBindecOnHand
			,NewBinId
			,NewBinstrPartNumber
			,NewBinstrLocName
			,NewBindecOnHand
			,BitUpdated
			,OldBindecOnHandUpdate
			,NewBindecOnHandUpdate
			,@BatchIDNegBin AS intBatch
		FROM #Temp_BinUpdateHistory
	END

	DROP TABLE #Temp_InvExtData

	DROP TABLE #Temp_InvExtBinData

	DROP TABLE #Temp_InvExtLotBinData

	DROP TABLE #Temp_InvExtLotBinDataRow

	DROP TABLE #Temp_StockUpdateHistory

	DROP TABLE #Temp_InvExtDataMissingBin

	DROP TABLE #Temp_BinUpdateHistory
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblPOSDrsCLSP]    Script Date: 10-06-2021 08:12:00 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblPOSDrsCLSP]
	    @tblData AS POSDrsCLSPTableType READONLY
AS
BEGIN
	BEGIN
       Insert into tblPOSDrsCLSP (uidSessionID, strPaymentTypeName, decValue, decActual, decVariance)
	   SELECT uidSessionID, strPaymentTypeName, decValue, decActual, decVariance
	    FROM @tblData  as t
	   WHERE  NOT EXISTS (SELECT 1 FROM tblPOSDrsCLSP WHERE [uidSessionID]=t.[uidSessionID] and [strPaymentTypeName]=t.[strPaymentTypeName]) 
	END

	BEGIN
	   UPDATE [dbo].tblPOSDrsCLSP SET uidSessionID = table2.uidSessionID, strPaymentTypeName=table2.strPaymentTypeName, decValue = table2.decValue, decActual = table2.decActual, decVariance = table2.decVariance
	   FROM tblPOSDrsCLSP as table1
		INNER JOIN @tblData as table2
		ON (table1.[uidSessionID]=table2.[uidSessionID] and table1.[strPaymentTypeName]=table2.[strPaymentTypeName])
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetClockingTimeHistoryReportData]    Script Date: 16-06-2021 14:51:00 ******/
CREATE PROCEDURE [dbo].[GetClockingTimeHistoryReportData]  
 @StartDate DATETIME
 ,@EndDate DATETIME,
  @user_name_list NVARCHAR(MAX)
AS
BEGIN
declare @Companyname varchar(max)
declare @FromDate Date
declare @ToDate Date
set @Companyname=(select strName from tblCompany)
set @FromDate= CAST( @StartDate AS Date ) ;
set @ToDate= CAST( @EndDate AS Date ) ;
select tblLoginHisotry.strUserName,u.strName,dteLoginDate,dteTimeIn,dteStartBreak,dteEndBreak,dteTimeOut ,@Companyname as Companyname,@FromDate as FromDate,@ToDate as ToDate
from tblLoginHisotry
inner join tblUsers AS u ON u.strUserName = tblLoginHisotry.strUserName
where cast( dteLoginDate as date) >=cast ( @StartDate as date) and Cast (dteLoginDate as date)<=cast( @EndDate as date) and
tblLoginHisotry.strUserName in (select * from dbo.fnSplitStringAsTable(@user_name_list,',')) 
END
GO

/****** Object:  StoredProcedure [dbo].[GetUserLoginSummaryReport]    Script Date: 16-06-2021 14:51:00 ******/
CREATE PROCEDURE [dbo].[GetUserLoginSummaryReport]  
	@StartDate DATETIME
	,@EndDate DATETIME
	,@user_name_list NVARCHAR(MAX)
AS
BEGIN
	DECLARE @Companyname VARCHAR(max)

	SELECT strName AS ComapnyName
	FROM tblCompany;

	WITH userCTE (
		RowNo
		,strUserName
		,WorkingMinutes
		,BreakMinutes
		,dteTimeIn
		,dteTimeOut
		,dteStartBreak
		,dteEndBreak
		)
	AS (
		SELECT ROW_NUMBER() OVER (
				PARTITION BY strUserName ORDER BY strUserName
				) AS RowNo
			,strUserName
			,(
				CASE 
					WHEN dteTimeOut IS NULL
						AND dteStartBreak IS NOT NULL
						THEN DATEDIFF(minute, dteTimeIn, dteStartBreak)
					WHEN dteTimeOut IS NOT NULL
						AND dteStartBreak IS NULL
						THEN DATEDIFF(minute, dteTimeIn, dteTimeOut)
					ELSE 0
					END
				) AS WorkingMinutes
			,(
				CASE 
					WHEN dteStartBreak IS NOT NULL
						AND dteEndBreak IS NOT NULL
						THEN DATEDIFF(minute, dteStartBreak, dteEndBreak)
					ELSE 0
					END
				) AS BreakMinutes
			,dteTimeIn
			,dteTimeOut
			,dteStartBreak
			,dteEndBreak
		FROM tblLoginHisotry
		WHERE tblLoginHisotry.strUserName IN (
				SELECT *
				FROM dbo.fnSplitStringAsTable(@user_name_list, ',')
				)
			
				and  cast( dteLoginDate as date) >=cast ( @StartDate  as date)and Cast (dteLoginDate as date)<=cast ( @EndDate as date)
		)
	SELECT userCTE.strUserName AS strUserName
		,u.strName AS strName
		,sum(WorkingMinutes) AS TotalWorkingMinutes
		,sum(BreakMinutes) AS TotalBreakMinutes
	FROM userCTE
	INNER JOIN tblUsers AS u ON u.strUserName = userCTE.strUserName
	GROUP BY userCTE.strUserName
		,u.strName
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdateGAAPStoreSetup]    Script Date: 19-06-2021 15:24:00 ******/
CREATE PROCEDURE [dbo].[AddUpdateGAAPStoreSetup] (  
            @StoreId INT
			,@StoreName nvarchar(200)
           ,@GAAPControlAccount nvarchar(30)
           ,@IsEnableEDI bit
           ,@EndpointURL nvarchar(200)
           ,@APIKey nvarchar(max)
           ,@StoreEDICode nvarchar(200)
		   ,@IsInactive bit
		   ,@SaleVATCode nvarchar(30)
		   ,@PurchaseVATCode nvarchar(30)
		   ,@Comment nvarchar(2000)
 )  
AS  
BEGIN  
DECLARE @NewIdent Int
		  IF (Not Exists(SELECT 1 FROM tblGAAPStoreSetup WHERE StoreId = @StoreId)) 
		   BEGIN
				INSERT INTO [dbo].[tblGAAPStoreSetup]
						   ([StoreName]
						   ,[GAAPControlAccount]
						   ,[IsEnableEDI]
						   ,[EndpointURL]
						   ,[APIKey]
						   ,[StoreEDICode]
						   ,[LastImportDate]
						   ,[IsInactive]
						   ,SaleVATCode
						   ,PurchaseVATCode
						   ,Comment
						   )
					 VALUES
						   ( @StoreName
							,@GAAPControlAccount
						   ,@IsEnableEDI
						   ,@EndpointURL
						   ,@APIKey
						   ,@StoreEDICode
						   ,null
						   ,@IsInactive 
						     ,@SaleVATCode
						   ,@PurchaseVATCode
						   ,@Comment
						   )
				SET @NewIdent = SCOPE_IDENTITY()  
		   END
		   ELSE
		   BEGIN
			   UPDATE [dbo].[tblGAAPStoreSetup]
			   SET [StoreName] = @StoreName
				  ,[GAAPControlAccount] =@GAAPControlAccount
				  ,[IsEnableEDI] = @IsEnableEDI
				  ,[EndpointURL] = @EndpointURL
				  ,[APIKey] =@APIKey
				  ,[StoreEDICode] = @StoreEDICode
				  ,[IsInactive] = @IsInactive
				    ,SaleVATCode = @SaleVATCode
						   ,PurchaseVATCode =@PurchaseVATCode
						   ,Comment = @Comment
			   WHERE StoreId = @StoreId
			   SET @NewIdent = @StoreId  
		   END
		   SELECT @NewIdent 
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateLastImportDate]    Script Date: 19-06-2021 15:24:00 ******/
CREATE PROCEDURE [dbo].[UpdateLastImportDate]
  @StoreId int
AS
BEGIN
		UPDATE tblGAAPStoreSetup SET 
		LastImportDate = GetDate()
		WHERE StoreId = @StoreId 
END
GO

/****** Object:  StoredProcedure [dbo].[InsertGAAPStoreCustomers]    Script Date: 19-06-2021 15:24:00 ******/
CREATE PROCEDURE [dbo].[InsertGAAPStoreCustomers] @tblData
AS
GAAPStoreCustomersTableType READONLY AS

BEGIN
	INSERT INTO [dbo].[tblGAAPStoreCustomers]
           (
		   [StoreId]
           ,[GAAPAccountNumber]
           ,[CustomerNumber]
           ,[CustomerName]
		   )
     SELECT  
           [StoreId]
           ,[GAAPAccountNumber]
           ,[CustomerNumber]
           ,[CustomerName]
		   FROM  @tblData
		   
END
GO

/****** Object:  StoredProcedure [dbo].[InsertGAAPStoreTenderTypes]    Script Date: 19-06-2021 15:24:00 ******/
CREATE PROCEDURE [dbo].[InsertGAAPStoreTenderTypes] @tblData
AS
GAAPStoreTenderTypesTableType READONLY AS

BEGIN
	INSERT INTO [dbo].[tblGAAPStoreTenderType]
           ([StoreId]
           ,[GAAPPayTypeDescription]
           ,[GLAccountNumber]
           ,[GLAccountDesc])
     SELECT  
        [StoreId]
           ,[GAAPPayTypeDescription]
           ,[GLAccountNumber]
           ,[GLAccountDesc]
		   FROM  @tblData
		   
END
GO

/****** Object:  StoredProcedure [dbo].[InsertGAAPStoreSuppliers]    Script Date: 19-06-2021 15:24:00 ******/
CREATE PROCEDURE [dbo].[InsertGAAPStoreSuppliers] @tblData
AS
GAAPStoreSuppliersTableType READONLY AS

BEGIN
	INSERT INTO [dbo].[tblGAAPStoreSuppliers]
           ([StoreId]
           ,[GAAPSupplier]
           ,[SupplierNumber]
           ,[SupplierName])
     SELECT  
          [StoreId]
           ,[GAAPSupplier]
           ,[SupplierNumber]
           ,[SupplierName]
		   FROM  @tblData
		   
END
GO

/****** Object:  StoredProcedure [dbo].[InsertGAAPStoreDepartments]    Script Date: 19-06-2021 15:24:00 ******/
CREATE PROCEDURE [dbo].[InsertGAAPStoreDepartments] @tblData
AS
GAAPStoreDepartmentsTableType READONLY AS

BEGIN
	INSERT INTO [dbo].[tblGAAPStoreDepartments]
           ([StoreId]
           ,[Department]
           ,[RevenueAccountNumber]
           ,[RevenueAccountDesc]
           ,[PurchasesAccountNumber]
           ,[PurchasesAccountDesc])
     SELECT  
          [StoreId]
           ,[Department]
           ,[RevenueAccountNumber]
           ,[RevenueAccountDesc]
           ,[PurchasesAccountNumber]
           ,[PurchasesAccountDesc]
		   FROM  @tblData
		   
END
GO

/****** Object:  StoredProcedure [dbo].[DeleteGAAPSupplierByStoreId]    Script Date: 19-06-2021 15:24:00 ******/
CREATE PROCEDURE [dbo].[DeleteGAAPSupplierByStoreId]
  @StoreId int
AS
BEGIN
	DELETE FROM tblGAAPStoreSuppliers where StoreId =  @StoreId 
END
GO

/****** Object:  StoredProcedure [dbo].[GetGAAPSuppliers]    Script Date: 19-06-2021 15:24:00 ******/
CREATE PROCEDURE [dbo].[GetGAAPSuppliers]
(
	@StoreId AS bigint
)
AS
BEGIN
SELECT
GAAPSupplier As GAAPSupplier,
SupplierNumber As SupplierNumber,
SupplierName As SupplierName
	FROM tblGAAPStoreSuppliers
	WHERE StoreId = @StoreId
END
GO

/****** Object:  StoredProcedure [dbo].[DeleteGAAPStoreByStoreId]    Script Date: 19-06-2021 15:24:00 ******/
CREATE PROCEDURE [dbo].[DeleteGAAPStoreByStoreId]
  @StoreId int
AS
BEGIN
	DELETE FROM tblGAAPStoreSetup where StoreId =  @StoreId 
END
GO

/****** Object:  StoredProcedure [dbo].[DeleteGAAPCustomersByStoreId]    Script Date: 19-06-2021 15:24:00 ******/
CREATE PROCEDURE [dbo].[DeleteGAAPCustomersByStoreId]
  @StoreId int
AS
BEGIN
	DELETE FROM tblGAAPStoreCustomers where StoreId =  @StoreId 
END
GO

/****** Object:  StoredProcedure [dbo].[DeleteGAAPTenderTypesByStoreId]    Script Date: 19-06-2021 15:24:00 ******/
CREATE PROCEDURE [dbo].[DeleteGAAPTenderTypesByStoreId]
  @StoreId int
AS
BEGIN
	DELETE FROM tblGAAPStoreTenderType where StoreId =  @StoreId 
END
GO

/****** Object:  StoredProcedure [dbo].[DeleteGAAPDepartmentsByStoreId]    Script Date: 19-06-2021 15:24:00 ******/
CREATE PROCEDURE [dbo].[DeleteGAAPDepartmentsByStoreId]
  @StoreId int
AS
BEGIN
	DELETE FROM tblGAAPStoreDepartments where StoreId =  @StoreId 
END
GO

/****** Object:  StoredProcedure [dbo].[GetGAAPStoreList]    Script Date: 19-06-2021 15:24:00 ******/
CREATE PROCEDURE [dbo].[GetGAAPStoreList](
	@PageSize INT = 25
	,@PageNumber INT = 1
	,@Search AS NVARCHAR(Max) = ''
)
AS
BEGIN
DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)
	SELECT *
	FROM tblGAAPStoreSetup
	Where
	 (
			ISNULL(StoreName, '') LIKE '%' + ISNULL(@search, StoreName) + '%'
			OR ISNULL(LastImportDate, '') LIKE '%' + ISNULL(@search, LastImportDate) + '%'
			)
	ORDER BY StoreName OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

/****** Object:  StoredProcedure [dbo].[GetGAAPTenderTypes]    Script Date: 19-06-2021 15:24:00 ******/
CREATE PROCEDURE [dbo].[GetGAAPTenderTypes]
(
	@StoreId AS bigint
)
AS
BEGIN
SELECT
GAAPPayTypeDescription AS GAAPPayTypeDescription,
GLAccountNumber AS GLAccountNumber,
GLAccountDesc As GLAccountDesc
	FROM tblGAAPStoreTenderType
	WHERE StoreId = @StoreId
END
GO

/****** Object:  StoredProcedure [dbo].[GetGAAPCustomers]    Script Date: 19-06-2021 15:24:00 ******/
CREATE PROCEDURE [dbo].[GetGAAPCustomers]
(
	@StoreId AS bigint
)
AS
BEGIN
SELECT
GAAPAccountNumber As GAAPAccountName,
CustomerNumber As CustomerNumber,
CustomerName As CustomerName
	FROM tblGAAPStoreCustomers
	WHERE StoreId = @StoreId
END
GO

/****** Object:  StoredProcedure [dbo].[GetGAAPDepartments]    Script Date: 19-06-2021 15:24:00 ******/
CREATE PROCEDURE [dbo].[GetGAAPDepartments]
(
	@StoreId AS bigint
)
AS
BEGIN
SELECT
Department AS GAAPDepartment ,
RevenueAccountNumber AS RevenueAccountNumber,
RevenueAccountDesc AS RevenueAccountDesc,
PurchasesAccountNumber AS PurchasesAccountNumber ,
PurchasesAccountDesc AS PurchaseAccountDesc
	FROM tblGAAPStoreDepartments
	WHERE StoreId = @StoreId
END
GO

/****** Object:  StoredProcedure [dbo].[GetGAAPStoreDetails]    Script Date: 19-06-2021 15:24:00 ******/
CREATE PROCEDURE [dbo].[GetGAAPStoreDetails]
(
	@StoreId AS bigint
)
AS
BEGIN
	SELECT *
	FROM tblGAAPStoreSetup
	WHERE tblGAAPStoreSetup.StoreId = @StoreId
END
GO

/****** Object:  StoredProcedure [dbo].[GetCustomersDataCount]    Script Date: 25-06-2021 15:15:00 ******/
CREATE PROCEDURE [dbo].[GetCustomersDataCount] (
	@IsActive BIT = NULL
	,@IsInvoice BIT = NULL
	,@HomeCurrencyCode VARCHAR(20) = NULL
	,@SQCurrency VARCHAR(20) = NULL
	,@Option INT = 1
	,-- For 1 = ALL, 2 = Orders, 3 = Balances
	@SQUserName VARCHAR(50) = NULL
	,@Consolidated INT = 1
	,@SearchText NVARCHAR(max) = NULL
	,@IsExactMatch BIT = 0
	)
AS
BEGIN
	IF (@IsExactMatch = 0)
	BEGIN
		SELECT COUNT(strCustName)
		FROM tblCustomers
		INNER JOIN [dbo].[tblCurrency] ON tblCurrency.strCurrency = tblCustomers.strCurrency
		LEFT JOIN tblCustomerCatSec ON tblCustomerCatSec.strCustCategory = tblCustomers.strCustCategory
		WHERE (
				@SearchText IS NULL
				OR (
					strCustName LIKE '%' + @SearchText + '%'
					OR strCustDesc LIKE '%' + @SearchText + '%'
					OR strCity LIKE '%' + @SearchText + '%'
					OR strPhone LIKE '%' + @SearchText + '%'
					OR strField1 LIKE '%' + @SearchText + '%'
					OR strField2 LIKE '%' + @SearchText + '%'
					OR strField3 LIKE '%' + @SearchText + '%'
					OR strField4 LIKE '%' + @SearchText + '%'
					OR strField5 LIKE '%' + @SearchText + '%'
					OR strField6 LIKE '%' + @SearchText + '%'
					)
				)
			AND (
				@IsActive IS NULL
				OR @IsActive = 1
				OR (
					@IsActive = 0
					AND bitInactive = 0
					)
				) -- Checked for Active and In Active customers
			AND (
				@IsInvoice IS NULL
				OR @IsInvoice = 0
				OR (
					@IsInvoice = 1
					AND bitInvWorkflowNew = 1
					)
				) -- Checked for invoice
			AND (
				@Option IS NULL
				OR @Option = 1
				OR (
					@Option = 2
					AND decOpenOrders <> 0
					)
				OR (
					@Option = 3
					AND decBalDue <> 0
					)
				) -- For 1 = ALL, 2 = Orders, 3 = Balances
			AND (
				@SQCurrency IS NULL
				OR (tblCustomers.strCurrency = @SQCurrency)
				) -- Checked for selected currency
			AND (
				@Consolidated = 0
				OR (
					tblCustomers.strCustName NOT IN (
						SELECT CUST1.strCustName
						FROM tblCustomers CUST1
						WHERE strParentCust IN (
								SELECT CUST2.strCustName
								FROM tblCustomers CUST2
								WHERE CUST2.intNAPrintMethod = @Consolidated
								)
						)
					)
				) -- Checked for CheckNationalAcc
			AND (
				@SQUserName IS NULL
				OR (
					(
						tblCustomerCatSec.strCustCategory IS NULL
						OR tblcustomerCatSec.strUserName = @SQUserName
						)
					)
				)
	END
	ELSE
	BEGIN
		SELECT COUNT(strCustName)
		FROM tblCustomers
		INNER JOIN [dbo].[tblCurrency] ON tblCurrency.strCurrency = tblCustomers.strCurrency
		LEFT JOIN tblCustomerCatSec ON tblCustomerCatSec.strCustCategory = tblCustomers.strCustCategory
		WHERE (
				@SearchText IS NULL
				OR (strCustName = @SearchText)
				)
			AND (
				@IsActive IS NULL
				OR @IsActive = 1
				OR (
					@IsActive = 0
					AND bitInactive = 0
					)
				) -- Checked for Active and In Active customers
			AND (
				@IsInvoice IS NULL
				OR @IsInvoice = 0
				OR (
					@IsInvoice = 1
					AND bitInvWorkflowNew = 1
					)
				) -- Checked for invoice
			AND (
				@Option IS NULL
				OR @Option = 1
				OR (
					@Option = 2
					AND decOpenOrders <> 0
					)
				OR (
					@Option = 3
					AND decBalDue <> 0
					)
				) -- For 1 = ALL, 2 = Orders, 3 = Balances
			AND (
				@SQCurrency IS NULL
				OR (tblCustomers.strCurrency = @SQCurrency)
				) -- Checked for selected currency
			AND (
				@Consolidated = 0
				OR (
					tblCustomers.strCustName NOT IN (
						SELECT CUST1.strCustName
						FROM tblCustomers CUST1
						WHERE strParentCust IN (
								SELECT CUST2.strCustName
								FROM tblCustomers CUST2
								WHERE CUST2.intNAPrintMethod = @Consolidated
								)
						)
					)
				) -- Checked for CheckNationalAcc
			AND (
				@SQUserName IS NULL
				OR (
					(
						tblCustomerCatSec.strCustCategory IS NULL
						OR tblcustomerCatSec.strUserName = @SQUserName
						)
					)
				)
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvoiceData]    Script Date: 02-07-2021 15:15:00 ******/
CREATE PROCEDURE GetInvoiceData
 @SQDocNumber as nvarchar(Max),
 @SQGPCalcInvLevel as int,
 @SQGPCalcLPP as int,
 @SQLocName as nvarchar(Max)
AS
BEGIN

DECLARE @Temp_Bin TABLE (
	lngId BIGINT NULL
	,strBinCode NVARCHAR(Max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
	,lngBinId BIGINT NULL
	,intLineNo INT NULL
	,strInvDocID NVARCHAR(Max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
	)

INSERT INTO  @Temp_Bin (lngId,strBinCode,lngBinId,intLineNo,strInvDocID)
SELECT tblInvLocBin.lngId,tblInvLocBin.strBinCode,tblInvoiceDocDTBin.lngBinId,tblInvoiceDocDTBin.intLineNo,tblInvoiceDocDTBin.strInvDocID 
FROM tblInvoiceDocDTBin inner join tblInvLocBin
on tblInvLocBin.lngId=tblInvoiceDocDTBin.lngBinId
WHERE tblInvoiceDocDTBin.strInvDocID = @SQDocNumber

SELECT tblInvoiceDocDT.*
	,ISNULL(tblInvoiceDocDTPrj.strProjNumber, '') AS strProjNumber
	,tblInv.bitInvSerialType
	,CASE 
		WHEN tblInv.intType = 4
			THEN tblInv.decStandardCost
		ELSE CASE @SQGPCalcLPP
				WHEN 0
					THEN tblInv.decLastPPUnit
				WHEN 1
					THEN tblInv.decStandardCost
				WHEN 2
					THEN CASE @SQGPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblInvoiceDocDT.strLocation
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = tblInvoiceDocDT.strLocation
															), 0)
													THEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = tblInvoiceDocDT.strLocation
																), 0)
												ELSE CASE 
														WHEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblInvoiceDocDT.strLocation
																	), 0) = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = tblInvoiceDocDT.strLocation
																	), 0)
														END
												END
										END
							WHEN 1
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
												ELSE CASE 
														WHEN CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
														END
												END
										END
							ELSE tblInv.decLastPPUnit
							END
				WHEN 3
					THEN CASE @SQGPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblInvoiceDocDT.strLocation
													), 0) = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = tblInvoiceDocDT.strLocation
													), 0)
										END
							WHEN 1
								THEN CASE 
										WHEN CASE tblInv.decSumOnHand
												WHEN 0
													THEN 0
												ELSE tblInv.decSumValue / tblInv.decSumOnHand
												END = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
										END
							ELSE tblInv.decLastPPUnit
							END
				ELSE tblInv.decLastPPUnit
				END
		END AS decGPCalc
	,tblInv.strDimProCode
	,tblInv.strUnitOfMeasure
	,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS bitDimensionExist
	,tblInv.bitAutoBuild
	,tblInv.bitAutoBuildSameLoc
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT SUM(INV.decLastPPUnit)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS decAutoBuildLRC
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT SUM(INV.decStandardCost)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS decAutoBuildSC
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE EXT.decOnHand
									WHEN 0
										THEN 0
									ELSE EXT.decValue / EXT.decOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
						AND EXT.strLocName = @SQLocName
					), 0)
		END AS bitAutoBuildMALocDef
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE EXT.decOnHand
									WHEN 0
										THEN 0
									ELSE EXT.decValue / EXT.decOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
						AND BOM.strLocName = EXT.strLocName
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS decAutoBuildMALocation
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE INV.decSumOnHand
									WHEN 0
										THEN 0
									ELSE INV.decSumValue / INV.decSumOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS bitAutoBuildMAMain
	,ISNULL(STUFF((
				SELECT ',' + CAST(TMP.strBinCode AS VARCHAR(max))
				FROM @Temp_Bin AS TMP
						WHERE TMP.strInvDocID = tblInvoiceDocDT.strInvDocID
							AND  TMP.intLineNo = tblInvoiceDocDT.intLineNo						
				FOR XML PATH('')
				), 1, 1, ''), '') AS strBinCode
		,ISNULL(STUFF((
				SELECT ',' + CAST(TMP.lngId AS VARCHAR(max))
						FROM @Temp_Bin AS TMP
						WHERE TMP.strInvDocID = tblInvoiceDocDT.strInvDocID
							AND  TMP.intLineNo = tblInvoiceDocDT.intLineNo
						
				FOR XML PATH('')
				), 1, 1, ''), '') AS lngBinId
	,ISNULL(tblInvSerialTypes.bitMethod, 0) AS bitMethod
FROM tblInvoiceDocDT
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
	AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblInvoiceDocDT.strInvDocID = @SQDocNumber
ORDER BY tblInvoiceDocDT.intLineNo

END
GO

/****** Object:  StoredProcedure [dbo].[SPRptBudgetBalanceSheetLoadQuery_2_3]    Script Date: 06-07-2021 15:15:00 ******/
----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptBudgetBalanceSheetLoadQuery_2_3]
(
@SQStartDate date = NULL,
@SQFinishDate date = NULL,
@SQintoAccountLegendExp_GLNumberFrom INT = NULL,
@SQintoAccountLegendRev_GLNumberTo  INT = NULL,
@SQintoAccountLegendRev_GLNumberFrom  INT = NULL,
@SQintoAccountLegendExp_GLNumberTo  INT = NULL,
@SQuidYearID AS UNIQUEIDENTIFIER
)
AS
BEGIN
Declare @SQintLengthRevGL As Integer
Declare @SQintLengthExpGL As Integer
Declare @decRevenue as DECIMAL(18,4)
declare @decExpense as DECIMAL(18,4)
declare @decOpenRevenue as DECIMAL(18,4)
declare @decOpenExpense as DECIMAL(18,4)
declare @intCurrEarnAcct as nvarchar(200)
SELECT @intCurrEarnAcct = intGLNumber FROM tblAccountsHist WHERE bitLinkCEarnings = 1 AND uidYearID = @SQuidYearID   --- cmdEarn
SELECT @SQintLengthRevGL = intSeg1Length from tblGLSegmentFormatSetup  --- cmdRevGLLength
SELECT  @decRevenue = ISNULL(SUM(tblJournalEntHist.decAmount),0) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID 
AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate BETWEEN @SQStartDate AND @SQFinishDate)  AND (tblJournalEntHist.uidYearID = @SQuidYearID) 
AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo  --- cmdRev
SELECT @decExpense = ISNULL(SUM(tblJournalEntHist.decAmount),0) FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID 
AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate BETWEEN @SQStartDate AND @SQFinishDate)  AND (tblJournalEntHist.uidYearID = @SQuidYearID) 
AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  --- cmdExp
SELECT @decOpenRevenue = ISNULL(SUM(decOpenBalance),0) FROM tblAccountsHist WHERE uidYearID = @SQuidYearID AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendRev_GLNumberFrom 
AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendRev_GLNumberTo   --cmdRevOpen
SELECT @decOpenExpense = ISNULL(SUM(decOpenBalance),0) FROM tblAccountsHist WHERE uidYearID = @SQuidYearID AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) >= @SQintoAccountLegendExp_GLNumberFrom 
AND SUBSTRING(intGLNumber, 0, @SQintLengthRevGL + 1) <= @SQintoAccountLegendExp_GLNumberTo  ---cmdExpOpen
select @intCurrEarnAcct, @decRevenue,@decExpense,@decOpenRevenue,@decOpenExpense
END
GO


/****** Object:  StoredProcedure [dbo].[SPRptFilterOptYearBusinessLogic_3]    Script Date: 06-07-2021 15:15:00 ******/
----------------------------------------------------
CREATE PROCEDURE [dbo].[SPRptFilterOptYearBusinessLogic_3] 
(	@SQStartDate date = NULL,
@SQFinishDate date = NULL,
@SQuidYearID AS UNIQUEIDENTIFIER
)
AS
BEGIN
SELECT tblJournalEntHist.intGLNumber, SUM(tblJournalEntHist.decAmount) As decAmount FROM tblJournalEntHist INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate BETWEEN @SQStartDate AND @SQFinishDate) AND (tblJournalEntHist.uidYearID = @SQuidYearID) GROUP BY tblJournalEntHist.intGLNumber
END
GO

/****** Object:  StoredProcedure [dbo].[GetUserLocationTrackingPreferenceByDay]    Script Date: 09-07-2021 08:27:00 ******/
CREATE PROCEDURE [dbo].[GetUserLocationTrackingPreferenceByDay]
	@UserName nvarchar(40),
	@DayName nvarchar(10)
AS
BEGIN
	SELECT bitTrackLoc FROM tblLocationTrackingPreference 
	WHERE strUserName = @UserName and strDay = @DayName
END
GO

/****** Object:  StoredProcedure [dbo].[GetVendorDataList]    Script Date: 26-07-2021 08:27:00 ******/
CREATE PROCEDURE [dbo].[GetVendorDataList] 
	@Search AS NVARCHAR(Max) = ''
	,@SQUserName AS NVARCHAR(Max) = NULL
	,@IsInActive AS BIT = 0
	,@BPToolsMode AS BIT = 0
	,@SortBy AS NVARCHAR(Max) = 'strVendName'
	,@PageSize INT = 25
	,@PageNum INT = 1
AS
BEGIN
	DECLARE @Offset INT

	SET @Offset = @PageSize * (@PageNum - 1)

	IF (@BPToolsMode = 0)
	BEGIN
			;

		WITH Result1
		AS (
			SELECT strVendName
				,strVendDesc
				,decOpenOrders
				,decBalDue
				,decYTDPurch
				,bitInventoryVendor
				,bitInactive
				,strCurrency
				,decOpenOrdersF
				,decBalDueF
				,decYTDPurchF
			FROM tblVendors
			WHERE bitInactive IN (
					0
					,@IsInActive
					)
				 AND  ( 
				ISNULL(strVendName,'') LIKE '%' + @Search + '%'
				OR ISNULL(strVendDesc,'') LIKE '%' + @Search + '%'
				)
				AND strVendCategory IN (
					SELECT tblVendorCat.strVendCategory
					FROM tblVendorCat
					LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
					WHERE ISNULL((
								SELECT COUNT(tblVendorCatSec.strVendCategory)
								FROM tblVendorCatSec
								WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblVendorCatSec.strVendCategory)
									FROM tblVendorCatSec
									WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
									), 0) > 0
							AND tblVendorCatSec.strUserName = @SQUserName
							)
					)
			)
		SELECT *
		FROM (
			SELECT Result1.*
				,ROW_NUMBER() OVER (
					ORDER BY strVendName ASC
					) RowNumber
			FROM Result1
			) AS Result2
		WHERE RowNumber >= (@Offset + 1)
			AND RowNumber <= (@Offset + @PageSize)
		ORDER BY CASE 
				WHEN @SortBy = 'strVendName'
					THEN strVendName
				ELSE strVendDesc
				END ASC
	END
	ELSE
	BEGIN
			;

		WITH Result1
		AS (
			SELECT strVendName
				,strVendDesc
				,decOpenOrders
				,decBalDue
				,decYTDPurch
				,bitInventoryVendor
				,bitInactive
				,strCurrency
				,decOpenOrdersF
				,decBalDueF
				,decYTDPurchF
			FROM tblVendors
			WHERE bitInactive IN (
					0
					,@IsInActive
					)
				 AND  ( 
				ISNULL(strVendName,'') LIKE '%' + @Search + '%'
				OR ISNULL(strVendDesc,'') LIKE '%' + @Search + '%'
				)
			)
		SELECT *
		FROM (
			SELECT Result1.*
				,ROW_NUMBER() OVER (
					ORDER BY strVendName ASC
					) RowNumber
			FROM Result1
			) AS Result2
		WHERE RowNumber >= (@Offset + 1)
			AND RowNumber <= (@Offset + @PageSize)
		ORDER BY CASE 
				WHEN @SortBy = 'strVendName'
					THEN strVendName
				ELSE strVendDesc
				END ASC
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetVendorDataListCount]    Script Date: 26-07-2021 08:27:00 ******/
CREATE PROCEDURE [dbo].[GetVendorDataListCount] @Search AS NVARCHAR(Max) = ''
	,@SQUserName AS NVARCHAR(Max) = NULL
	,@IsInActive AS BIT = 0
	,@BPToolsMode AS BIT = 0
AS
BEGIN
	IF (@BPToolsMode = 0)
	BEGIN
		SELECT Count(strVendName) AS TotalCount
		FROM tblVendors
		WHERE bitInactive IN (
				0
				,@IsInActive
				)
			 AND  ( 
				ISNULL(strVendName,'') LIKE '%' + @Search + '%'
				OR ISNULL(strVendDesc,'') LIKE '%' + @Search + '%'
				)
			AND strVendCategory IN (
				SELECT tblVendorCat.strVendCategory
				FROM tblVendorCat
				LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
				WHERE ISNULL((
							SELECT COUNT(tblVendorCatSec.strVendCategory)
							FROM tblVendorCatSec
							WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
							), 0) = 0
					OR (
						ISNULL((
								SELECT COUNT(tblVendorCatSec.strVendCategory)
								FROM tblVendorCatSec
								WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
								), 0) > 0
						AND tblVendorCatSec.strUserName = @SQUserName
						)
				)
	END
	ELSE
	BEGIN
		SELECT Count(strVendName) AS TotalCount
		FROM tblVendors
		WHERE bitInactive IN (
				0
				,@IsInActive
				)
		 AND  ( 
				ISNULL(strVendName,'') LIKE '%' + @Search + '%'
				OR ISNULL(strVendDesc,'') LIKE '%' + @Search + '%'
				)
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetCustomerDataList]    Script Date: 26-07-2021 08:27:00 ******/
CREATE PROCEDURE [dbo].[GetCustomerDataList]
	@Search AS nvarchar(Max) = '',
	@SQUserName AS nvarchar(Max) = NULL,
	@IsInActive AS BIT = 0,
	@BPToolsMode AS BIT = 0,
	@SortBy AS nvarchar(Max) = 'strCustName',
	@PageSize INT = 25,
	@PageNum  INT =1  
AS
BEGIN
	 DECLARE @Offset INT
	SET @Offset = @PageSize * (@PageNum-1)

	IF (@BPToolsMode=0)
	BEGIN
		;with Result1 AS (SELECT 
			strCustName
			,strCustDesc
			,decOpenOrders
			,decBalDue
			,decYTDPurch
			,bitInactive
			,strCurrency
			,decOpenOrdersF
			,decBalDueF
			,decYTDPurchF
		FROM tblCustomers
		WHERE bitInactive IN (
				0
				,@IsInActive
				)
			 AND  ( 
				ISNULL(strCustName,'') LIKE '%' + @Search + '%'
				OR ISNULL(strCustDesc,'') LIKE '%' + @Search + '%'
				)
			
			AND strCustCategory IN (
				SELECT tblCustomerCat.strCustCategory
				FROM tblCustomerCat
				LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
				WHERE ISNULL((
							SELECT COUNT(tblCustomerCatSec.strCustCategory)
							FROM tblCustomerCatSec
							WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
							), 0) = 0
					OR (
						ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) > 0
						AND tblCustomerCatSec.strUserName = @SQUserName
						)
				)
				) 
			Select * from  (Select
			Result1.*,ROW_NUMBER() Over(Order By strCustName ASC) RowNumber
			from Result1 ) As Result2
			WHERE RowNumber >= (@Offset + 1)
			AND RowNumber <= (@Offset + @PageSize)	
			ORDER BY CASE WHEN @SortBy = 'strCustName' then  strCustName else strCustDesc end  ASC
	END
	ELSE
	BEGIN
			;with Result1 AS (SELECT 
				strCustName
				,strCustDesc
				,decOpenOrders
				,decBalDue
				,decYTDPurch
				,bitInactive
				,strCurrency
				,decOpenOrdersF
				,decBalDueF
				,decYTDPurchF
			FROM tblCustomers
			WHERE  bitInactive in (0,@IsInActive)
		   AND  ( 
				ISNULL(strCustName,'') LIKE '%' + @Search + '%'
				OR ISNULL(strCustDesc,'') LIKE '%' + @Search + '%'
				)
			)
			Select * from  (Select
			Result1.*,ROW_NUMBER() Over(Order By strCustName ASC) RowNumber
			from Result1 ) As Result2
			WHERE RowNumber >= (@Offset + 1)
			AND RowNumber <= (@Offset + @PageSize)	
			ORDER BY CASE WHEN @SortBy = 'strCustName' then  strCustName else strCustDesc end  ASC
		
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetCustomerDataListCount]    Script Date: 26-07-2021 08:27:00 ******/
CREATE PROCEDURE [dbo].[GetCustomerDataListCount]
	@Search AS nvarchar(Max) = '',
	@SQUserName AS nvarchar(Max) = NULL,
	@IsInActive AS BIT = 0,
	@BPToolsMode AS BIT = 0
AS
BEGIN
	IF (@BPToolsMode=0)
	BEGIN
		SELECT 
			Count(strCustName) AS TotalCount
		FROM tblCustomers
		WHERE bitInactive IN (
				0
				,@IsInActive
				)
			 AND  ( 
				ISNULL(strCustName,'') LIKE '%' + @Search + '%'
				OR ISNULL(strCustDesc,'') LIKE '%' + @Search + '%'
				)
			
			AND strCustCategory IN (
				SELECT tblCustomerCat.strCustCategory
				FROM tblCustomerCat
				LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
				WHERE ISNULL((
							SELECT COUNT(tblCustomerCatSec.strCustCategory)
							FROM tblCustomerCatSec
							WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
							), 0) = 0
					OR (
						ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) > 0
						AND tblCustomerCatSec.strUserName = @SQUserName
						)
				)
				 		
	END
	ELSE
	BEGIN
			SELECT 
				Count(strCustName) AS TotalCount
			FROM tblCustomers
			WHERE  bitInactive in (0,@IsInActive)
		   AND  ( 
				ISNULL(strCustName,'') LIKE '%' + @Search + '%'
				OR ISNULL(strCustDesc,'') LIKE '%' + @Search + '%'
				)		
	END
END
GO

/****** Object:  StoredProcedure [dbo].[CheckOptFieldIsInUse]    Script Date: 12/08/2021 11:25:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[CheckOptFieldIsInUse]
 @Field as nvarchar(250)
,@Module as int=4
,@Value as nvarchar(250) = null

AS
BEGIN

IF (@value is null)
BEGIN
	select Count(*) AS [Count] from tblOptLineFieldsDT where Field=@Field and Module=@Module 
END
ELSE	
BEGIN
	select Count(*) AS [Count] from tblOptLineFieldsDT where Field=@Field and Module=@Module and FieldValue = @value
END
END
GO

/****** Object:  StoredProcedure [dbo].[GetWebtoreAttributesOptFields]    Script Date: 12/08/2021 11:25:27 ******/
CREATE PROCEDURE [dbo].[GetWebtoreAttributesOptFields] 
	 @IsEdit AS BIT
	,@PartNumber AS NVARCHAR(100) = NULL
	,@Module AS int = 4
AS
BEGIN
	DECLARE @oldFieldCount AS INT = 0
	DECLARE @NewLineChar AS CHAR(2) = CHAR(13) + CHAR(10)
	IF (@IsEdit = 0)
	BEGIN

		SELECT 
			 intType AS FieldType
			,strField AS FieldName
			,strCaption AS Description
			,bitMandatory AS IsMandatory
			,ISNULL(STUFF((SELECT @NewLineChar + strValue [text()]
         FROM tblOptLineFieldLists 
         WHERE tblOptLineFieldLists.strField = tblOptLineFields.strField and tblOptLineFieldLists.intModule=tblOptLineFields.intModule
         FOR XML PATH(''), TYPE)
        .value('.','NVARCHAR(MAX)'),1,2,''),'') AS ItemList
			,intModule As Module
		FROM tblOptLineFields
		WHERE intModule = @Module
	END
	ELSE
	BEGIN
		SET @oldFieldCount = (
				SELECT Count(*)
				FROM [tblOptLineFieldsDT]
				WHERE Reference = @PartNumber
					AND Module = @Module
				)

		IF (@oldFieldCount >= 1)
		BEGIN
			Select
			OPF.intType AS FieldType
			,OPF.strField AS FieldName
			,OPF.strCaption AS Description
			,OPF.bitMandatory AS IsMandatory
			,FDT.Reference
			,FDT.[Value]
			,ISNULL(STUFF((SELECT @NewLineChar + strValue [text()]
			 FROM tblOptLineFieldLists 
			 WHERE tblOptLineFieldLists.strField = OPF.strField and tblOptLineFieldLists.intModule=OPF.intModule
			 FOR XML PATH(''), TYPE)
			.value('.','NVARCHAR(MAX)'),1,2,''),'') AS ItemList
			from 
			tblOptLineFields OPF Left Join (SELECT ID
				,Reference
				,Module
				,Field
				,FieldValue AS [Value]
			FROM tblOptLineFieldsDT
			WHERE Reference = @PartNumber
				AND Module = @Module) FDT on  OPF.strField=FDT.Field and OPF.intModule=FDT.Module
				Where  OPF.intModule = @Module
		END 
		ELSE
		BEGIN
			SELECT 
			 intType AS FieldType
			,strField AS FieldName
			,strCaption AS Description
			,bitMandatory AS IsMandatory
			,ISNULL(STUFF((SELECT @NewLineChar + strValue [text()]
			 FROM tblOptLineFieldLists 
			 WHERE tblOptLineFieldLists.strField = tblOptLineFields.strField and tblOptLineFieldLists.intModule=tblOptLineFields.intModule
			 FOR XML PATH(''), TYPE)
			.value('.','NVARCHAR(MAX)'),1,2,''),'') AS ItemList
				,intModule As Module
			FROM tblOptLineFields
			WHERE intModule = @Module
		END
	END
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblCurrencyExc]    Script Date: 19/08/2021 12:53:00 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblCurrencyExc]
	    @tblData AS CurrencyExcTableType READONLY

AS
BEGIN
	BEGIN
	 INSERT INTO [dbo].[tblCurrencyExc]
           ([strCurrency]
           ,[dteDate]
           ,[decRate]
           ,[decMinRate]
           ,[decMaxRate])
	   select
			 [strCurrency]
           ,[dteDate]
           ,[decRate]
           ,[decMinRate]
           ,[decMaxRate] 
				  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblCurrencyExc WHERE strCurrency=t.strCurrency and dteDate=t.dteDate)
	END

	BEGIN
	  
UPDATE [dbo].[tblCurrencyExc]
   SET [strCurrency] = table2.strCurrency
      ,[dteDate] = table2.dteDate
      ,[decRate] =  table2.decRate
      ,[decMinRate] = table2.decMinRate
      ,[decMaxRate] = table2.decMaxRate
			FROM tblCurrencyExc as table1
	INNER JOIN @tblData as table2
	ON ( table1.strCurrency=table2.strCurrency and table1.dteDate=table2.dteDate)
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetWebstoreAttributesByPartNumber]    Script Date: 20/08/2021 09:44:00 ******/
CREATE PROCEDURE [dbo].[GetWebstoreAttributesByPartNumber] (    
	 @PartNumber VARCHAR(50) = NULL)
	AS
BEGIN 
	 SELECT     tblOptLineFieldsDT.Field AS AttributeName, tblOptLineFieldsDT.FieldValue AS AttributeValue, 
			tblOptLineFields.intType AS AttributeType, tblOptLineFields.strCaption AS Caption
FROM        tblOptLineFields INNER JOIN
                  tblOptLineFieldsDT ON tblOptLineFields.strField = tblOptLineFieldsDT.Field
				  WHERE tblOptLineFields.intModule = 4 AND tblOptLineFieldsDT.Module = 4 AND tblOptLineFieldsDT.Reference = @PartNumber

				  SELECT     tblOptLineFieldLists.strValue AS CaptionValue, tblOptLineFieldLists.strField AS CaptionField
FROM        tblOptLineFieldLists INNER JOIN
                  tblOptLineFields ON tblOptLineFieldLists.intModule = tblOptLineFields.intModule AND tblOptLineFieldLists.strField = tblOptLineFields.strField INNER JOIN
                  tblOptLineFieldsDT ON tblOptLineFields.strField = tblOptLineFieldsDT.Field AND tblOptLineFields.intModule = tblOptLineFieldsDT.Module
WHERE     (tblOptLineFieldLists.intModule = 4) AND (tblOptLineFields.intType = 2) AND tblOptLineFieldsDT.Reference = @PartNumber
END
GO

/****** Object:  StoredProcedure [dbo].[UserStatusChange]    Script Date: 20/08/2021 09:44:00 ******/
CREATE PROCEDURE [dbo].[UserStatusChange] 
	@username VARCHAR(max)
	,@statusFrom VARCHAR(max)
	,@statusTo VARCHAR(max)
	,@loginId INT
	,@DateTime DATETIME
AS
BEGIN
	IF @statusTo = 'Logged_In'
	BEGIN
		IF @statusFrom = 'Logged_Out'
		BEGIN
			INSERT INTO tblLoginHisotry (
				intLoginID
				,strUserName,
				dteLoginDate
				,dteTimeIn
				,dteCreatedDate
				)
			VALUES (
				1
				,@username
				,@DateTime,
				 @DateTime
				,@DateTime
				)
		END

		IF @statusFrom = 'On_Break'
		BEGIN
			UPDATE tblLoginHisotry
			SET dteEndBreak = @DateTime
				,dteUpdatedDate = @DateTime
			WHERE lngID = @loginId

			INSERT INTO tblLoginHisotry (
				intLoginID
				,strUserName
				,dteLoginDate
				,dteTimeIn
				,dteCreatedDate
				)
			VALUES (
				1
				,@username
				,@DateTime
				,@DateTime
				,@DateTime
				)
		END
	END
	ELSE IF @statusTo = 'On_Break'
	BEGIN
		UPDATE tblLoginHisotry
		SET dteStartBreak = @DateTime
			,dteUpdatedDate = @DateTime
		WHERE strUserName = @username
			AND lngID = @loginId
	END
	ELSE IF @statusTo = 'Logged_Out'
	BEGIN
		IF @statusFrom = 'On_Break'
			BEGIN
			UPDATE tblLoginHisotry
			SET dteEndBreak = @DateTime
			,dteTimeOut = @DateTime
			,dteUpdatedDate = @DateTime
			WHERE strUserName = @username
			AND lngID = @loginId
			END
			ELSE
			BEGIN
			UPDATE tblLoginHisotry
			SET dteTimeOut = @DateTime
			,dteUpdatedDate = @DateTime
			WHERE strUserName = @username
			AND lngID = @loginId
			END
	END

	SELECT strUserName
		,strName
	FROM tblUsers
	GROUP BY strUserName
		,strName
END
GO

/****** Object:  StoredProcedure [dbo].[GetCRMCalendarDetailsUserTracking]    Script Date: 20/08/2021 09:44:00 ******/
CREATE PROCEDURE [dbo].[GetCRMCalendarDetailsUserTracking]         
     @UserName AS NVARCHAR(400)        
  
AS        
BEGIN        
      
  SELECT tblCRMActivities.ActivityID        
   ,tblCRMActivities.ActivityName        
   ,tblCRMActivities.ActivityDescription        
   ,tblCRMActivities.ActivityGroupName        
   ,tblCRMActivities.ActivityStatus        
   ,tblCRMActivities.ActivityCreatedDate        
   ,tblCRMActivities.CustomerNumber        
   ,tblCRMActivities.VendorNumber        
   ,tblCRMActivities.InventoryItemNumber        
   ,tblCRMActivities.ProjectNumber        
   ,tblCRMActivities.CustomerContactNo        
   ,tblCRMActivities.VendorContactNo        
   ,tblCRMActivities.TransactionType        
   ,tblCRMActivities.TransactionNumber        
   ,tblCRMActivities.CreatedUser        
   ,tblCRMActivities.IsSalesGroup        
   ,tblCRMActivities.SalesPipelineText        
   ,tblCRMActivities.SalesPipelinePercentage        
   ,tblCRMActivities.ActivityCreatedUser        
   ,tblCRMActivityActions.ActivityActionID        
   ,tblCRMActivityActions.ActionDescription        
   ,tblCRMActivityActions.DueDate        
   ,tblCRMActivityActions.AssignTo        
   ,tblCRMActivityActions.ActionStatus        
   ,tblCRMActivityActions.CreatedDate AS ActionCeatedDate        
   ,tblCRMActivityActions.CreatedUser AS ActionCreatedUser        
   ,tblCRMActivityActions.ActionType        
   ,tblCRMActivityActions.ActionDescription AS Subject             
   ,tblCRMActivityActions.ActionDescription AS Description        
   ,cast(0 AS BIT) AS AllDay        
   ,tblCRMActivities.ActivityGroupName AS Location        
   ,tblCRMActivityActions.AssignTo AS ResourceId        
   ,CONVERT(DATETIME, CONVERT(CHAR(8), tblCRMActivityActions.DueDate, 112) + ' ' + CONVERT(CHAR(8),ISNULL(tblCRMActivityActions.StartTime,'12:00:00 AM'), 108)) AS StartTime   
   ,CONVERT(DATETIME, CONVERT(CHAR(8), tblCRMActivityActions.DueDate, 112) + ' ' + CONVERT(CHAR(8),ISNULL(tblCRMActivityActions.EndTime,'12:00:00 AM'), 108)) AS EndTime                  
   ,tblCRMActivityActions.EmailId as EmailId        
   ,tblCRMActivityActions.IsActionReopened as IsActionReopened        
   ,tblCRMActivityActions.ActionReopenedUserName as ActionReopenedUserName        
   ,tblCRMActivityActions.IsNotifyOnSalesDocuments as IsNotifyOnSalesDocuments         
   ,c.strEmail as ActionEmailID        
   ,d.strEmail as ActivityEmailID        
   ,tblCRMActivityActionsStatus.StatusGroup        
   ,tblCRMActivityActions.AssignTo as AssignToold        
   ,10 as Label --Lable BGcolor        
  FROM tblCRMActivities        
  INNER JOIN tblCRMActivityActions ON tblCRMActivities.ActivityID = tblCRMActivityActions.ActivityID        
  INNER JOIN tblCRMActivityActionsStatus on tblCRMActivityActions.ActionStatus=tblCRMActivityActionsStatus.StatusType        
  left join tblUsers c on tblCRMActivityActions.CreatedUser=c.strUserName        
  left join tblUsers d on tblCRMActivities.ActivityCreatedUser =d.strUserName        
  WHERE tblCRMActivities.IsInactive = 0        
   AND tblCRMActivityActions.IsInactive = 0        
   AND tblCRMActivityActions.AssignTo in (select * from dbo.fnSplitStringAsTable(@UserName,','))
   AND tblCRMActivityActionsStatus.StatusGroup <> 3     
   AND tblCRMActivityActions.IsCalendar = 1          
       
END
GO

/****** Object:  StoredProcedure [dbo].[ValidateUserTrackingLogin]    Script Date: 20/08/2021 09:59:00 ******/
CREATE PROCEDURE [dbo].[ValidateUserTrackingLogin] (
	@UserName VARCHAR(MAX)
	,@Password VARCHAR(MAX)
	,@SQLUserName VARCHAR(20) = NULL
	)
AS
BEGIN
	SET NOCOUNT ON;

	IF EXISTS (
			SELECT name
				,*
			FROM tempdb.sys.tables
			WHERE name LIKE '#DatabaseT%'
			)
		DROP TABLE #DatabaseT

	CREATE TABLE #DatabaseT (
		RowID INT IDENTITY(1, 1) NOT NULL
		,DatabaseName SYSNAME NOT NULL
		,user_access TINYINT NULL
		)

	IF ISNULL(@SQLUserName, '') = ''
	BEGIN
		INSERT INTO #DatabaseT (
			DatabaseName
			,user_access
			)
		SELECT sys.databases.name AS DatabaseName
			,user_access
		FROM sys.databases
		WHERE is_in_standby = 0
			AND sys.databases.STATE = 0
			AND is_read_only = 0
			AND HAS_DBACCESS(name) = 1
			AND sys.databases.name LIKE 'paldb%'
	END
	ELSE
	BEGIN
		EXECUTE AS LOGIN = @SQLUserName

		INSERT INTO #DatabaseT (
			DatabaseName
			,user_access
			)
		SELECT sys.databases.name AS DatabaseName
			,user_access
		FROM sys.databases
		WHERE is_in_standby = 0
			AND sys.databases.STATE = 0
			AND is_read_only = 0
			AND HAS_DBACCESS(name) = 1
			AND sys.databases.name LIKE 'paldb%'

		REVERT
	END

	DECLARE @NumberRecords INT
		,@RowCount INT
	DECLARE @DatabaseName VARCHAR(200)
	DECLARE @Query NVARCHAR(MAX) = ''
	DECLARE @CompanyExists INT = 0
	DECLARE @CoSerial VARCHAR(200)
	DECLARE @CloudUsername VARCHAR(200)
	DECLARE @CloudPassword VARCHAR(200)
	DECLARE @UserExists INT = 0
	DECLARE @CompanyID VARCHAR(10)

	IF EXISTS (
			SELECT name
				,*
			FROM tempdb.sys.tables
			WHERE name LIKE '#CompanyT%'
			)
		DROP TABLE #CompanyT

	CREATE TABLE #CompanyT (
		CompanyId INT IDENTITY(1, 1) NOT NULL
		,CompanyName VARCHAR(MAx) NULL
		,DatabaseName VARCHAR(MAx) NULL
		,YearStarts DATE NULL
		,YearEnds DATE NULL
		,[CompanyLogo] IMAGE NULL
		)

	IF EXISTS (
			SELECT name
				,*
			FROM tempdb.sys.tables
			WHERE name LIKE '#VersionT%'
			)
		DROP TABLE #VersionT

	CREATE TABLE #VersionT (
		[CompanyId] [int] NOT NULL
		,[Version] [int] NOT NULL
		,[OrigVersion] [int] NOT NULL
		,[Year] [int] NOT NULL
		,[SoftVersion] [nvarchar](50) NOT NULL
		,[DBVersion] [int] NOT NULL
		,[DBGuid] [uniqueidentifier] NOT NULL
		,[RSTVersion] [int] NOT NULL
		,[IsServerRunning] [bit] NOT NULL
		,
		)

	IF EXISTS (
			SELECT name
				,*
			FROM tempdb.sys.tables
			WHERE name LIKE '#UserT%'
			)
		DROP TABLE #UserT

	CREATE TABLE #UserT (
		[CompanyId] [int] NOT NULL
		,[UserName] [nvarchar](20) NOT NULL
		,[Name] [nvarchar](50) NOT NULL
		,[CellNumber] [nvarchar](50) NOT NULL
		,[Email] [nvarchar](100) NOT NULL
		,[Password] [nvarchar](2000) NOT NULL
		,[IsAdmin] [bit] NOT NULL
		,[IsLockedOut] [bit] NOT NULL
		,[LastLogin] [datetime] NOT NULL
		,[IsMobileUser] [bit] NOT NULL
		)

	IF EXISTS (
			SELECT name
				,*
			FROM tempdb.sys.tables
			WHERE name LIKE '#UserTemp%'
			)
		DROP TABLE #UserTemp

	CREATE TABLE #UserTemp (
		--[CompanyId] [int] NOT NULL, --This column should not exists in this table       
		[UserName] [nvarchar](20) NOT NULL
		,[Name] [nvarchar](50) NOT NULL
		,[CellNumber] [nvarchar](50) NOT NULL
		,[Email] [nvarchar](100) NOT NULL
		,[Password] [nvarchar](2000) NOT NULL
		,[IsAdmin] [bit] NOT NULL
		,[IsLockedOut] [bit] NOT NULL
		,[LastLogin] [datetime] NOT NULL
		,[IsMobileUser] [bit] NOT NULL
		)

	--#DatabaseT : Display list of database                                            
	SELECT @NumberRecords = COUNT(*)
	FROM #DatabaseT

	SET @RowCount = 1

	WHILE @RowCount <= @NumberRecords
	BEGIN
		BEGIN TRY
			SELECT @DatabaseName = DatabaseName
			FROM #DatabaseT
			WHERE RowID = @RowCount

			SET @Query = 'SELECT @CompanyExist = COUNT(sysobjects.id) FROM ' + @DatabaseName + '.sys.sysobjects, ' + @DatabaseName + '.sys.syscolumns WHERE sysobjects.id = syscolumns.id AND sysobjects.name = N''tblCompany'' AND syscolumns.name = N''strCoSerial'''

			EXEC sp_executesql @Query
				,N'@CompanyExist nvarchar out'
				,@CompanyExists OUT

			DECLARE @displayThisdb BIT = 1

			IF CHARINDEX('testdb', @DatabaseName) > 0
			BEGIN
				SET @displayThisdb = 0

				IF @UserName = 'zadmin'
					OR @UserName = 'zadam'
				BEGIN
					SET @displayThisdb = 1
				END
			END

			--If Company found then execute below code.                                      
			IF (
					@CompanyExists > 0
					AND @displayThisdb = 1
					)
			BEGIN
				SET @Query = 'SELECT @CS = ISNULL(strCoSerial, ''''),@CU = ISNULL(strCloudUsername, ''''),@CP = ISNULL(strCloudPassword,'''') FROM ' + @DatabaseName + '.dbo.tblCompany'

				EXEC sp_executesql @Query
					,N'@CS nvarchar out, @CU nvarchar out, @CP nvarchar out'
					,@CoSerial OUT
					,@CloudUsername OUT
					,@CloudPassword OUT

				--If above three output parameter empty then execute, parameter return from dbo.tblCompany  	
				IF (
						@CoSerial = ''
						AND @CloudUsername = ''
						AND @CloudPassword = ''
						)
				BEGIN
					SET @Query = 'SELECT @UserCount = Count(*) FROM [' + @DatabaseName + '].[dbo].[tblUsers] where (blnIsMonitorSalespersonsTracking = 1 OR blnIsAdmin = 1 ) AND strEmail = ''' + @UserName + ''' AND strPassWord= ''' + @Password + ''''

					IF EXISTS (
							SELECT *
							FROM INFORMATION_SCHEMA.COLUMNS
							WHERE table_name = 'tblUsers'
								AND column_name = 'blnIsMobileUser'
							)
					BEGIN
						SET @Query = @Query + ' AND blnIsMobileUser = 1 '
					END

					EXEC sp_executesql @Query
						,N'@UserCount nvarchar out'
						,@UserExists OUT

					IF (@UserExists > 0)
					BEGIN
						SET @Query = 'SELECT ''' + REPLACE('' + @DatabaseName + '', 'paldb', '') + ''', strName,dteYearStarts,dteYearEnds,imgLogo from [' + @DatabaseName + '].[dbo].[tblCompany]'

						INSERT INTO #CompanyT (
							DatabaseName
							,CompanyName
							,YearStarts
							,YearEnds
							,[CompanyLogo]
							)
						EXEC sp_executesql @Query --SELECT @CompanyID As CompanyID   

						SET @CompanyID = SCOPE_IDENTITY()
						SET @Query = 'SELECT ' + @CompanyID + ', intVersion,intOrigVersion,intYear,strSoftVersion,intDBVersion,uidDBGuid,intRSTVersion,bitServerRunning from [' + @DatabaseName + '].[dbo].[tblVersion]'

						INSERT INTO #VersionT (
							[CompanyId]
							,[Version]
							,[OrigVersion]
							,[Year]
							,[SoftVersion]
							,[DBVersion]
							,[DBGuid]
							,[RSTVersion]
							,[IsServerRunning]
							)
						EXEC sp_executesql @Query

						SET @Query = 'EXEC  [' + @DatabaseName + '].[dbo].[Mobile_UserDataByUserName] ''' + @UserName + ''''

						INSERT INTO #UserTemp
						EXEC sp_executesql @Query

						SET @Query = 'SELECT ' + @CompanyID + ', * from #UserTemp'

						INSERT INTO #UserT
						EXEC sp_executesql @Query

						DELETE
						FROM #UserTemp
					END
				END
			END
		END TRY

		BEGIN CATCH
			--Print @DatabaseName                                                                                      
			--SELECT ERROR_MESSAGE() AS ErrorMessage;                                                                  
		END CATCH

		SET @RowCount += 1
	END

	SELECT *
	FROM #CompanyT AS CompanyDetails

	SELECT *
	FROM #VersionT

	SELECT *
	FROM #UserT

	DROP TABLE #DatabaseT

	DROP TABLE #CompanyT

	DROP TABLE #VersionT

	DROP TABLE #UserT

	DROP TABLE #UserTemp
END
GO

/****** Object:  StoredProcedure [dbo].[GetJobsbyWorkCentre]    Script Date: 10/09/2021 15:14:00 ******/
CREATE PROCEDURE [dbo].[GetJobsbyWorkCentre] (    
	 @SQWCCode VARCHAR(100) = NULL)
	AS
BEGIN 
	 SELECT strJBDocID AS JBDocID, CAST(dteJournalDate as nvarchar) AS JournalDate, strReference AS Reference, strWCCode AS WCCode, CAST(intType as nvarchar) AS Type 
     FROM tblManJob WHERE strWCCode = @SQWCCode
END
GO

/****** Object:  StoredProcedure [dbo].[GetWorkCentres]    Script Date: 10/09/2021 15:14:00 ******/
CREATE PROCEDURE GetWorkCentres @ShowInactive AS BIT
AS
BEGIN
	SELECT strWCCode AS WorkCentreCode
		,strDesc AS Description
		,bitInactive AS Inactive
	FROM tblManWorkCentre
	WHERE (
			bitInactive = 0
			OR bitInactive = @ShowInactive
			)
END
GO

/****** Object:  StoredProcedure [dbo].[ValidateJobNumbersUpdate]    Script Date: 10/09/2021 15:14:00 ******/
CREATE PROCEDURE [dbo].[ValidateJobNumbersUpdate] (    
	 @SQWCCodeTo VARCHAR(100) = NULL,
	 @SQJBDocIDs VARCHAR(max))	
AS 
  BEGIN 
      DECLARE @JBDocList VARCHAR(max) = '' 
      DECLARE @JBDocID VARCHAR(100) = '' 

      WHILE Len(@SQJBDocIDs) > 0 
        BEGIN 
            --DECLARE @TDay VARCHAR(100) 
            IF Charindex(',', @SQJBDocIDs) > 0 
              BEGIN 
                  SET @JBDocID = Substring(@SQJBDocIDs, 0, Charindex(',', @SQJBDocIDs) ) 
              END 
            ELSE 
              BEGIN 
                  SET @JBDocID = @SQJBDocIDs 
                  SET @SQJBDocIDs = '' 
              END 

            --PRINT @JBDocID 
            SET @SQJBDocIDs = Replace(@SQJBDocIDs, @JBDocID + ',', '') 

            --Validate Doc Number 
            DECLARE @intWCCnt INTEGER = 0 

            SELECT @intWCCnt = Count(lngID) FROM tblManJobOp WHERE  strJBDocID = @JBDocID AND strWCCode = @SQWCCodeTo 

            IF @intWCCnt = 0 
              BEGIN 
                  IF( Len(@JBDocList) > 0 ) 
                    SET @JBDocList = @JBDocList + ',' + @JBDocID 
                  ELSE 
                    SET @JBDocList = @JBDocID 
              END 
        END 

      SELECT @JBDocList 
  END
GO

/****** Object:  StoredProcedure [dbo].[ValidateJobNumbersUpdate]    Script Date: 10/09/2021 15:14:00 ******/
CREATE PROCEDURE [dbo].[UpdateWorkCentre] (    
	 @SQWCCodeFrom VARCHAR(100) = NULL,
	 @SQWCCodeTo VARCHAR(100) = NULL,
	 @SQJBDocIDs VARCHAR(max) = NULL,
	 @SQUserName VARCHAR(100) = NULL
	 )
	AS
BEGIN 
	 DECLARE @JBDocList VARCHAR(max) = '' 
     DECLARE @JBDocID VARCHAR(100) = '' 
	 DECLARE @intUpdateCnt INTEGER = 0

      WHILE Len(@SQJBDocIDs) > 0 
        BEGIN 
            --DECLARE @TDay VARCHAR(100) 
            IF Charindex(',', @SQJBDocIDs) > 0 
              BEGIN 
                  SET @JBDocID = Substring(@SQJBDocIDs, 0, Charindex(',', @SQJBDocIDs) ) 
              END 
            ELSE 
              BEGIN 
                  SET @JBDocID = @SQJBDocIDs 
                  SET @SQJBDocIDs = '' 
              END 

            --PRINT @JBDocID 
            SET @SQJBDocIDs = Replace(@SQJBDocIDs, @JBDocID + ',', '') 

			--Validate Doc Number 
            DECLARE @intWCCnt INTEGER = 0

            SELECT @intWCCnt = Count(lngID) FROM tblManJobOp WHERE  strJBDocID = @JBDocID AND strWCCode = @SQWCCodeTo 
			IF @intWCCnt > 0 
              BEGIN 
				--Get Type
				DECLARE @SQType INTEGER = 0 
				SELECT @SQType = intType FROM tblManJob WHERE strJBDocID = @JBDocID

				--Update Man Job
				UPDATE tblManJob SET strWCCode = @SQWCCodeTo WHERE strJBDocID = @JBDocID

				--Insert Man Job Transfer
				INSERT INTO tblManJobTransfer (strJBDocID, dteSystemDate, strUserName, strWCCodeFrom, strWCCodeTo, intType) 
				VALUES (@JBDocID, getdate(), @SQUserName, @SQWCCodeFrom, @SQWCCodeTo, @SQType)

				SET @intUpdateCnt = @intUpdateCnt + 1
			  END
        END 

      SELECT @intUpdateCnt 
END
GO

/****** Object:  StoredProcedure [dbo].[SPDataExtractorItemDuplicateFix]    Script Date: 2020-11-26 ******/
CREATE PROCEDURE [dbo].[SPDataExtractorItemDuplicateFix]
AS
BEGIN

	CREATE TABLE #Temp (
	[ItemCode] [varchar](400) COLLATE Latin1_General_CI_AS NULL,
	[lngID] [bigint] NULL)

	INSERT INTO #Temp
	SELECT  LTRIM(RTRIM([ItemCode])),
			MIN([lngID])
	FROM [dbo].[tblUtilityPervInventory]
	GROUP BY LTRIM(RTRIM([ItemCode]))
	HAVING COUNT(LTRIM(RTRIM([ItemCode]))) > 1

	WHILE EXISTS (SELECT [ItemCode] FROM #Temp)
	BEGIN

		DECLARE @ItemCode [varchar](400),
				@lngID [bigint],
				@lngID_Adj [bigint],
				@intAdjNum [integer] = 1

		SELECT	TOP 1
				@ItemCode = LTRIM(RTRIM([ItemCode])),
				@lngID = [lngID]
		FROM #Temp

		WHILE EXISTS (SELECT TOP 1 [ItemCode] FROM [dbo].[tblUtilityPervInventory] WHERE LTRIM(RTRIM([ItemCode])) = @ItemCode AND [lngID] <> @lngID)
		BEGIN

			SELECT	TOP 1
					@lngID_Adj = [lngID]
			FROM [dbo].[tblUtilityPervInventory] 
			WHERE LTRIM(RTRIM([ItemCode])) = @ItemCode 
			AND [lngID] <> @lngID

			UPDATE [dbo].[tblUtilityPervInventory]
			SET [ItemCode] = LTRIM(RTRIM([ItemCode])) + '_' + CAST(@intAdjNum AS varchar(100))
			WHERE [lngID] = @lngID_Adj

			SET @intAdjNum = @intAdjNum + 1

		END

		DELETE FROM #Temp WHERE [lngID] = @lngID

	END

	DROP TABLE #Temp

END
GO

/****** Object:  StoredProcedure [dbo].[prConv_CurrencyCodes_Insert]    Script Date: 2021-01-26 ******/
CREATE PROCEDURE [dbo].[prConv_CurrencyCodes_Insert]
AS
DECLARE @intCCRecCount bigint = 0
INSERT INTO tblCurrency (strCurrency, strCurrName, strCurrSymbol, bitTrailingSymb, strThousSymb, strDecSymb, intDecimals, strCentsName, bitHome, bitUpdateMon, 
bitUpdateTue, bitUpdateWed, bitUpdateThu, bitUpdateFri, bitUpdateSat, bitUpdateSun, dteUpdateTime, dteRowUpdated, bitErrorRetry, 
intAttempts, dteInterval)
SELECT	strCurrency,
strCurrName,
strCurrSymbol,
bitTrailingSymb,
strThousSymb,
strDecSymb,
intDecimals,
strCentsName, 
0 AS bitHome, 
0 AS bitUpdateMon, 
0 AS bitUpdateTue,
0 AS bitUpdateWed, 
0 AS bitUpdateThu, 
0 AS bitUpdateFri, 
0 AS bitUpdateSat, 
0 AS bitUpdateSun, 
'00:00:00' AS dteUpdateTime,
GETDATE() AS dteRowUpdated,
0 AS bitErrorRetry,
0 AS intAttempts, 
'00:00:00.0000000' AS dteInterval
FROM tblCurrencyDict 
WHERE strCurrency IN (SELECT CONV.strCurrency 
FROM tblUtilityCurrency CONV 
LEFT JOIN tblCurrency Cur ON CONV.strCurrency = Cur.strCurrency 
WHERE ISNULL(Cur.strCurrency,'') = '')
SELECT @intCCRecCount = @@ROWCOUNT
SELECT @intCCRecCount AS intCCRecCount
GO


/****** Object:  StoredProcedure [dbo].[prConv_GeneralLedgerAccounts_Insert]    Script Date: 2021-01-26 ******/
CREATE PROCEDURE [dbo].[prConv_GeneralLedgerAccounts_Insert]
(
@Bank AS int,
@AssetCash AS int,
@Currency AS nvarchar(3),
@Evo bit,
@ExpType tinyint
)
AS
DECLARE @intACCRecCount bigint = 0,
@intJCTotCount bigint = 0,
@intJCRecCount bigint = 0
INSERT INTO tblAccounts (intGLNumber, strDesc, intAccType, intGroupCode, intAccClass, bitInactive, decOpenBalance, decBalance, decLYOpenBalance, decLYEndBalance, 
bitBank, bitRecon, bitInventory, bitBudget, bitUsed, bitUsedLY, bitLinkREarnings, bitLinkCEarnings, bitLinkAP, bitLinkPurDisc, bitLinkAR, 
bitLinkSalesDisc, bitLinkAssCosts, bitLinkAdjWriteOff, bitIsLinkedAccount, bitDefBank, bitLinkDeposit, bitLinkPrePay, strField1, strField2, 
strField3, strField4, strField5, strField6, bitLinkExc, bitAllowCenters, intCheqNumber, strCurrency, decOpenBalanceF, decBalanceF, 
decLYOpenBalanceF, decLYEndBalanceF, bitLinkGRV, bitLinkAddCost, bitLinkDelAdvice, bitLinkWIP, bitLinkManStandardCost, bitLinkWorkshopWIP, 
bitLinkGoodsInTransit, dteRowUpdated, bitLinkARCustMast, bitLinkDepositCustMast, bitLinkAPVendMast, bitLinkPrepayVendMast)
SELECT	CONV.intGLNumber,
CONV.strPPDesc AS strDesc,
CONV.intAccType,
CASE WHEN CONV.bitSubAccount = 0 THEN 1 ELSE 2 END AS intGroupCode,
CONV.intAccClass,
0 AS bitInactive,
0.00 AS decOpenBalance,
0.00 AS decBalance,
0.00 AS decLYOpenBalance,
0.00 AS decLYEndBalance,
CASE WHEN CONV.intAccClass = @Bank Or CONV.intAccClass = @AssetCash 
THEN 1 
ELSE 0 
END AS bitBank,
0 AS bitRecon,
0 AS bitInventory,
0 AS bitBudget,
0 AS bitUsed,
0 AS bitUsedLY,
0 AS bitLinkREarnings,
0 AS bitLinkCEarnings,
0 AS bitLinkAP,
0 AS bitLinkPurDisc,
0 AS bitLinkAR,
0 AS bitLinkSalesDisc,
0 AS bitLinkAssCosts,
0 AS bitLinkAdjWriteOff,
0 AS bitIsLinkedAccount,
0 AS bitDefBank,
0 AS bitLinkDeposit,
0 AS bitLinkPrePay,
'' AS strField1,
'' AS strField2,
'' AS strField3,
'' AS strField4,
'' AS strField5,
'' AS strField6,
0 AS bitLinkExc,
0 AS bitAllowCenters,
1 AS intCheqNumber,
@Currency AS strCurrency,
0.00 AS decOpenBalanceF,
0.00 AS decBalanceF,
0.00 AS decLYOpenBalanceF,
0.00 AS decLYEndBalanceF,
0 AS bitLinkGRV,
0 AS bitLinkAddCost,
0 AS bitLinkDelAdvice,
0 AS bitLinkWIP,
0 AS bitLinkManStandardCost,
0 AS bitLinkWorkshopWIP,
0 AS bitLinkGoodsInTransit,
GETDATE() AS dteRowUpdated,
0 AS bitLinkARCustMast, 
0 AS bitLinkDepositCustMast, 
0 AS bitLinkAPVendMast, 
0 AS bitLinkPrepayVendMast
FROM tblUtilityAccounts CONV 
LEFT JOIN tblAccounts ACC ON CONV.intGLNumber = ACC.intGLNumber 
WHERE ISNULL(ACC.intGLNumber, '') = ''
SELECT @intACCRecCount = @@ROWCOUNT
SELECT @intJCTotCount = COUNT(Z.ItemCode) 
FROM (SELECT DISTINCT ItemCode 
FROM tblUtilityPervHistoryLines 
WHERE SearchType = 6) Z 
LEFT JOIN tblInv ON Z.ItemCode = tblInv.strPartNumber 
WHERE ISNULL(tblInv.strPartNumber, '') = ''
INSERT INTO tblInv (strPartNumber, strDesc, intType, strCategory, intExpAcct, decCostOnPO, bitUseLPPOnPO, intReorderQty, strBuyUnit, strStockUnit, decBuyToStock, 
					bitAllowPriceChg, dteDateLastSale, dteLastPurchase, decLastPPUnit, dteLastUpdated, bitUseBOM, intBOMQty, strAddInfo, bitInactive, decSumAvail, 
					decSumAlloc, decSumOnHand, decSumValue, decSumOnOrder, decSumOpenQty, decSumOpenValue, decSumValYearStart, decSumQtyYearStart, decSumAmtSoldYTD, 
					decSumAmtSoldLY, decSumQtySoldYTD, decSumQtySoldLY, decSumCOGSYTD, decSumCOGSLY, intSumNumTransYTD, intSumNumTransLY, bitAutoBuild, strField1, 
					strField2, strField3, strField4, strField5, strField6, strBarCode, decStandardCost, bitItemNumConvUsed, strSellUnit, strSellStockUnit, 
					decSellFromStock, strItemSegment1, strItemSegment2, strItemSegment3, strItemSegment4, strInvNumConv, bitInvSerialType, strInvSerialType, 
					decRepairCharge, strBarCode2, bitVoucherEnabled, strVoucherCode, decDefSaleQty, strExtendedDesc, bitInvExtDescOnSI, bitInvExtDescOnSO, 
					bitInvExtDescOnSQ, bitInvExtDescOnSFHQ, bitInvExtDescOnCR, bitInvExtDescOnPI, bitInvExtDescOnPO, bitInvExtDescOnPQ, bitWebstoreItem, strDimProCode, 
					strRSTTerminalSync, intDecimalQuantity, strBOMNotes, bitInvExtDescOnBRQ, decMass, decVolumetricWeight, strUnitOfMeasure, decW, decH, decD, decCube, 
					decFactor, decMaxLevel, decOrderLeadTime, decSafetyFactorPer, decDaysSalesinStock, decMinimumOrderQuantity, decNewDailySales, decOldMinLevel, 
					decMinimumLevel, decOldMaxLevel, decEconomicOrderQty, bitPallet, bitInclInvForecast, bitDimProSales, bitDimProPurchases, strInvWCCode, decLastManCost, 
					bitAutoBuildSameLoc, strFileName, strSubCategory, decSumManuf, strSubCategoryGroup, bitExclCommission, strPOSDesc, bitOtherCmp, bitPrintComp, 
					dteRowUpdated, bitSumComp, dteWebStoreItemUpdated, bitAllowAdjustKitCompOnDoc, strHSCode, strHSDesc)
SELECT	CONV.intPPGLNumber AS strPartNumber,
		CONV.strPPDesc AS strDesc,
		@ExpType AS intType,
		NULL AS strCategory,
		CONV.intGLNumber AS intExpAcct,
		0.00 AS decCostOnPO,
		0 AS bitUseLPPOnPO,
		0 AS intReorderQty,
		'' AS strBuyUnit,
		'' AS strStockUnit,
		1.00 AS decBuyToStock,
		1 AS bitAllowPriceChg,
		'1999-01-01' AS dteDateLastSale,
		'1999-01-01' AS dteLastPurchase,
		0.00 AS decLastPPUnit,
		GETDATE() AS dteLastUpdated,
		0 AS bitUseBOM,
		1 AS intBOMQty,
		'' AS strAddInfo,
		0 AS bitInactive,
		0.00 AS decSumAvail,
		0.00 AS decSumAlloc,
		0.00 AS decSumOnHand,
		0.00 AS decSumValue,
		0.00 AS decSumOnOrder,
		0.00 AS decSumOpenQty,
		0.00 AS decSumOpenValue,
		0.00 AS decSumValYearStart,
		0.00 AS decSumQtyYearStart,
		0.00 AS decSumAmtSoldYTD,
		0.00 AS decSumAmtSoldLY,
		0.00 AS decSumQtySoldYTD,
		0.00 AS decSumQtySoldLY,
		0.00 AS decSumCOGSYTD,
		0.00 AS decSumCOGSLY,
		0 AS intSumNumTransYTD,
		0 AS intSumNumTransLY,
		0 AS bitAutoBuild,
		'' AS strField1,
		'' AS strField2,
		'' AS strField3,
		'' AS strField4,
		'' AS strField5,
		'' AS strField6,
		'' AS strBarCode,
		0.00 AS decStandardCost,
		0 AS bitItemNumConvUsed,
		'' AS strSellUnit,
		'' AS strSellStockUnit,
		1.00 AS decSellFromStock,
		'' AS strItemSegment1,
		'' AS strItemSegment2,
		'' AS strItemSegment3,
		'' AS strItemSegment4,
		NULL AS strInvNumConv,
		0 AS bitInvSerialType,
		NULL AS strInvSerialType,
		0.00 AS decRepairCharge,
		'' AS strBarCode2,
		0 AS bitVoucherEnabled,
		NULL AS strVoucherCode,
		1.00 AS decDefSaleQty,
		'' AS strExtendedDesc,
		COPT.bitInvExtDescOnSI AS bitInvExtDescOnSI,
		COPT.bitInvExtDescOnSO AS bitInvExtDescOnSO,
		COPT.bitInvExtDescOnSQ AS bitInvExtDescOnSQ,
		COPT.bitInvExtDescOnSFHQ AS bitInvExtDescOnSFHQ,
		COPT.bitInvExtDescOnCR AS bitInvExtDescOnCR,
		COPT.bitInvExtDescOnPI AS bitInvExtDescOnPI,
		COPT.bitInvExtDescOnPO AS bitInvExtDescOnPO,
		COPT.bitInvExtDescOnPQ AS bitInvExtDescOnPQ,
		0 AS bitWebstoreItem,
		N'' AS strDimProCode,
		N'' AS strRSTTerminalSync,
		2 AS intDecimalQuantity,
		N'' AS strBOMNotes,
		COPT.bitInvExtDescOnBRQ AS bitInvExtDescOnBRQ,
		0.00 AS decMass,
		0.00 AS decVolumetricWeight,
		N'' AS strUnitOfMeasure,
		0.00 AS decW,
		0.00 AS decH,
		0.00 AS decD,
		0.00 AS decCube,
		0.00 AS decFactor,
		0.00 AS decMaxLevel,
		0.00 AS decOrderLeadTime,
		0.00 AS decSafetyFactorPer,
		0.00 AS decDaysSalesinStock,
		0.00 AS decMinimumOrderQuantity,
		0.00 AS decNewDailySales,
		0.00 AS decOldMinLevel,
		0.00 AS decMinimumLevel,
		0.00 AS decOldMaxLevel,
		1.00 AS decEconomicOrderQty,
		0 AS bitPallet,
		1 AS bitInclInvForecast,
		0 AS bitDimProSales,
		0 AS bitDimProPurchases,
		NULL AS strInvWCCode,
		0.00 AS decLastManCost,
		0 AS bitAutoBuildSameLoc,
		NULL AS strFileName,
		NULL AS strSubCategory,
		0.00 AS decSumManuf,
		NULL AS strSubCategoryGroup,
		0 AS bitExclCommission,
		NULL AS strPOSDesc,
		0 AS bitOtherCmp,
		0 AS bitPrintComp,
		GETDATE() AS dteRowUpdated,
		0 AS bitSumComp,
		NULL AS dteWebStoreItemUpdated, 
		0 AS bitAllowAdjustKitCompOnDoc,
		'' AS strHSCode,
		'' AS strHSDesc
FROM tblUtilityAccounts CONV 
CROSS JOIN tblCoOpts COPT 
WHERE CONV.intPPGLNumber IN (SELECT Z.ItemCode 
FROM (SELECT DISTINCT CASE WHEN @Evo = 1 THEN REPLACE(REPLACE(ItemCode, '>', ''), '/', '') ELSE ItemCode END AS ItemCode 
FROM tblUtilityPervHistoryLines 
WHERE SearchType = 6) Z 
LEFT JOIN tblInv ON Z.ItemCode = tblInv.strPartNumber 
WHERE ISNULL(tblInv.strPartNumber, '') = '')
SELECT @intJCRecCount = @@ROWCOUNT
EXEC prGLSegmentSetupDefaultCodeAndDesc_Add
SELECT @intACCRecCount AS intACCRecCount, @intJCTotCount AS intJCTotCount, @intJCRecCount AS intJCRecCount
GO

/****** Object:  StoredProcedure [dbo].[prConv_SalesPersons_Insert]    Script Date: 2021-01-26 ******/
CREATE PROCEDURE [dbo].[prConv_SalesPersons_Insert]
AS
DECLARE @intSPRecCount bigint = 0
CREATE TABLE #Temp_SP (
[strSalesName] [nvarchar](50) NOT NULL,
[bitInactive] [bit] NOT NULL,
[lngID] [bigint] IDENTITY(1,1) NOT NULL)
INSERT INTO #Temp_SP
SELECT	strSalesName,
bitInactive
FROM tblUtilitySalesPersons
DELETE SP
FROM #Temp_SP SP
INNER JOIN (SELECT	strSalesName,
MIN(lngID) AS lngID
FROM #Temp_SP
GROUP BY strSalesName
HAVING COUNT(strSalesName) > 1) Z
ON SP.strSalesName = Z.strSalesName 
WHERE SP.lngID <> Z.lngID 
INSERT INTO tblSalesPersons (strSalesName, strStreet1, strStreet2, strCity, strProvince, strPostal, strPhone, strCellPhone, strFax, strEmail, decYTDSales, bitInactive, 
dteUpdated, dteSince, strNotes, [uID], strCountry, strCountryCode, strFacebook, strLinkedIn, strSkype, imgPicture)
SELECT	CONV.strSalesName,
'' AS strStreet1,
'' AS strStreet2,
'' AS strCity,
'' AS strProvince,
'' AS strPostal,
'' AS strPhone,
'' AS strCellPhone,
'' AS strFax,
'' AS strEmail,
0.00 AS decYTDSales,
CONV.bitInactive,
GETDATE() AS dteUpdated,
GETDATE() AS dteSince,
'' AS strNotes,
NEWID() AS [uID],
'' AS strCountry,
NULL AS strCountryCode,
'' AS strFacebook,
'' AS strLinkedIn,
'' AS strSkype,
NULL AS imgPicture
FROM #Temp_SP CONV
LEFT JOIN tblSalesPersons SP ON CONV.strSalesName = SP.strSalesName 
WHERE ISNULL(SP.strSalesName, '') = ''
SELECT @intSPRecCount = @@ROWCOUNT
DROP TABLE #Temp_SP
SELECT @intSPRecCount AS intSPRecCount
GO


/****** Object:  StoredProcedure [dbo].[prConv_TaxCodes_Insert]    Script Date: 2021-01-26 ******/
CREATE PROCEDURE [dbo].[prConv_TaxCodes_Insert]
(
@Name AS nvarchar(10),
@Taxable AS int,
@Exempt AS int,
@NonTaxable AS int
)
AS
DECLARE @intTCRecCount bigint = 0
INSERT INTO tblTaxDef (strTaxName, intPurchAcct, intSalesAcct, dteRowUpdated)
SELECT	CONV.strTaxName,
CONV.intPurchAcct,
CONV.intSalesAcct,
GETDATE() AS dteRowUpdated
FROM tblUtilityTaxDef CONV 
LEFT JOIN tblTaxDef TAX 
ON CONV.strTaxName = TAX.strTaxName 
WHERE ISNULL(TAX.strTaxName, '') = ''
INSERT INTO tblTaxCodes (strTaxCode, strDescription, intAllowedJournals, bitDefVendors, bitDefCustomers, bitDefCBPayments, bitDefCBReceipts, dteRowUpdated,
bitRequiresOrderNumber, strReferenceLabel, bitValidateCharacters, bitSetLength, intMaxLength, intMinLength, intValidationCharacterType)
SELECT	CONV.strTaxCode,
CONV.strTaxName AS strDescription,
CASE CONV.strJournals WHEN 'Sales Journals' THEN 1 
WHEN 'Purchase Journals' THEN 2 
ELSE 0 
END AS intAllowedJournals,
0 AS bitDefVendors,
0 AS bitDefCustomers,
0 AS bitDefCBPayments,
0 AS bitDefCBReceipts, 
GETDATE() AS dteRowUpdated,
0 AS bitRequiresOrderNumber, 
'' AS strReferenceLabel, 
0 AS bitValidateCharacters, 
0 AS bitSetLength, 
0 AS intMaxLength, 
0 AS intMinLength, 
0 AS intValidationCharacterType
FROM tblUtilityTaxCodeExt CONV 
LEFT JOIN tblTaxCodes TAX ON CONV.strTaxCode = TAX.strTaxCode 
WHERE ISNULL(TAX.strTaxCode, '') = ''
SELECT @intTCRecCount = @@ROWCOUNT
INSERT INTO tblTaxCodeExt (strTaxCode, strTaxName, intStatus, decRate, bitIncluded, bitRefundable, dteRowUpdated)
SELECT	CONV.strTaxCode,
@Name AS strTaxName,
CASE CONV.strStatus WHEN 'Exempt' THEN @Exempt 
WHEN 'Non-Taxable' THEN @NonTaxable 
ELSE @Taxable 
END AS intStatus,
CONV.decRate,
CONV.bitIncluded,
CONV.bitRefundable,
GETDATE() AS dteRowUpdated
FROM tblUtilityTaxCodeExt CONV 
LEFT JOIN tblTaxCodeExt TAX ON CONV.strTaxCode = TAX.strTaxCode 
WHERE ISNULL(TAX.strTaxCode, '') = ''
SELECT @intTCRecCount AS intTCRecCount
GO


/****** Object:  StoredProcedure [dbo].[prConv_Customers_Insert]    Script Date: 2021-01-26 ******/
CREATE PROCEDURE [dbo].[prConv_Customers_Insert]
(
@NationalAccount AS int
)		
AS
DECLARE @intCUSTCATRecCount bigint = 0,
@intCUSTRecCount bigint = 0,
@intCUSTLOCRecCount bigint = 0
CREATE TABLE #Temp_CUST (
[strCustName] [nvarchar](50) NOT NULL,
[strCustDesc] [nvarchar](50) NOT NULL,
[strTaxCode] [nvarchar](15) NOT NULL,
[strTerm] [nvarchar](50) NOT NULL,
[strCurrency] [nvarchar](3) NOT NULL,
[strCustCategory] [nvarchar](20) NOT NULL,
[strStreet1] [nvarchar](100) NOT NULL,
[strStreet2] [nvarchar](100) NOT NULL,
[strCity] [nvarchar](50) NOT NULL,
[strProvince] [nvarchar](50) NOT NULL,
[strPostal] [nvarchar](20) NOT NULL,
[strPhone] [nvarchar](50) NOT NULL,
[strCellPhone] [nvarchar](50) NOT NULL,
[strFax] [nvarchar](50) NOT NULL,
[strEmail] [nvarchar](50) NOT NULL,
[strVAT] [nvarchar](50) NOT NULL,
[decCreditLimit] [money] NOT NULL,
[bitInactive] [bit] NOT NULL,
[strContact] [nvarchar](100) NOT NULL,
[strField1] [nvarchar](100) NOT NULL,
[strField2] [nvarchar](100) NOT NULL,
[strField3] [nvarchar](100) NOT NULL,
[strField4] [nvarchar](100) NOT NULL,
[strField5] [nvarchar](100) NOT NULL,
[dteUpdated] [smalldatetime] NOT NULL,
[dteSince] [datetime] NOT NULL,
[lngID] [bigint] IDENTITY(1,1) NOT NULL)
CREATE TABLE #Temp_CUSTLOC (
[strCustName] [nvarchar](50) NOT NULL,
[strLocName] [nvarchar](50) NOT NULL,
[strStreet1] [nvarchar](100) NOT NULL,
[strStreet2] [nvarchar](100) NOT NULL,
[strCity] [nvarchar](50) NOT NULL,
[strProvince] [nvarchar](50) NOT NULL,
[strPostal] [nvarchar](20) NOT NULL,
[lngID] [bigint] IDENTITY(1,1) NOT NULL)
INSERT INTO tblCustomerCat (strCustCategory, strDesc, bitInactive, bitIsHP, decISDefDep, decISDefIns, decISDefFinChrge, strInstallSaleFC, strInstallSaleTaxCode, 
decArrPenalty)
SELECT	CONV.strCustCategory,
CONV.strDesc,
0 AS bitInactive,
0 AS bitIsHP,
0.00 AS decISDefDep,
0.00 AS decISDefIns,
0.00 AS decISDefFinChrge,
'' AS strInstallSaleFC,
NULL AS strInstallSaleTaxCode,
0.00 AS decArrPenalty
FROM tblUtilityCustomerCat CONV 
LEFT JOIN tblCustomerCat CAT ON CONV.strCustCategory = CAT.strCustCategory 
WHERE ISNULL(CAT.strCustCategory, '') = ''
SELECT @intCUSTCATRecCount = @@ROWCOUNT
INSERT INTO tblDiscountMatrix (strCustCategory, strInvCategory, decDiscount)
SELECT	CC.strCustCategory, 
IC.strCategory, 
0.00 AS decDiscount
FROM tblInvCat IC 
CROSS JOIN tblCustomerCat CC 
LEFT JOIN tblDiscountMatrix DM ON CC.strCustCategory = DM.strCustCategory 
AND IC.strCategory = DM.strInvCategory 
WHERE (ISNULL(DM.strCustCategory, '') = '')
AND (ISNULL(DM.strInvCategory, '') = '')
INSERT INTO #Temp_CUST
SELECT	strCustName,
strCustDesc,
strTaxCode,
strTerm,
strCurrency,
strCustCategory,
strStreet1,
strStreet2,
strCity,
strProvince,
strPostal,
strPhone,
strCellPhone,
strFax,
strEmail,
strVAT,
CASE WHEN decCreditLimit < 0 
THEN 10000 
ELSE CASE WHEN decCreditLimit = 0 THEN 0.00 ELSE decCreditLimit END 
END AS decCreditLimit,
bitInactive,
strContact,
strField1,
strField2,
strField3,
strField4,
strField5,
dteUpdated,
dteSince
FROM tblUtilityCustomers
DELETE CUST
FROM #Temp_CUST CUST
INNER JOIN (SELECT	strCustName,
MIN(lngID) AS lngID
FROM #Temp_CUST
GROUP BY strCustName
HAVING COUNT(strCustName) > 1) Z
ON CUST.strCustName = Z.strCustName 
WHERE CUST.lngID <> Z.lngID 
INSERT INTO tblCustomers (strCustName, strStreet1, strStreet2, strCity, strProvince, strPostal, strPhone, strCellPhone, strFax, strEmail, strVAT, strCK, decBalDue, 
						  decYTDPurch, decOpenOrders, intDelMethod, bitCreditCtrl, decCreditLimit, bitCreditHold, bitInactive, dteUpdated, strContact, strField1, 
						  strField2, strField3, strField4, strField5, strField6, strTaxCode, dteSince, strNotes, strPricelist, [uID], decIntRate, strCustDesc, 
						  strCountry, strTerm, intDept, strCurrency, decBalDueF, decYTDPurchF, decOpenOrdersF, strField7, strField8, strField9, strField10, strField11, 
						  strField12, strEmailInv, strEmailStat, strCustCategory, strCountryCode, strTenderType, decTradeDiscPerc, decCreditLimitOverride, 
						  dteCreditLimitExpiryDate, intPartialBackorders, bitWithholdTax, strWithholdTaxCode, strINVFormDocName, strORDFormDocName, bitMatrixType, 
						  strMatrixType, strParentCust, strValueBased, bitInvWorkflowNew, bitInvWorkflowDA, bitInvWorkflowSO, strWebsite, strRSTTerminalSync, 
						  strContact2, strSuburb, strEmailOso, intNAPrintMethod, strDelMethodCode, strDocPassword, blnIsSynctwebstore, strWebstoreEmail )
SELECT	CONV.strCustName,
		CONV.strStreet1,
		CONV.strStreet2,
		CONV.strCity,
		CONV.strProvince,
		CONV.strPostal,
		CONV.strPhone,
		CONV.strCellPhone,
		CONV.strFax,
		CONV.strEmail,
		CONV.strVAT,
		'' AS strCK,
		0.00 AS decBalDue,
		0.00 AS decYTDPurch,
		0.00 AS decOpenOrders,
		0 AS intDelMethod,
		CASE WHEN CONV.decCreditLimit > 0 THEN 1 ELSE 0 END AS bitCreditCtrl,
		CASE WHEN CONV.decCreditLimit < 0 
			 THEN 10000 
			 ELSE CASE WHEN CONV.decCreditLimit = 0 THEN 0.00 ELSE CONV.decCreditLimit END 
		END AS decCreditLimit,
		0 AS bitCreditHold,
		CONV.bitInactive,
		CONV.dteUpdated,
		CONV.strContact,
		CONV.strField1,
		CONV.strField2,
		CONV.strField3,
		CONV.strField4,
		CONV.strField5,
		'' AS strField6,
		CONV.strTaxCode,
		CONV.dteSince,
		'' AS strNotes,
		'REGULAR' AS strPricelist,
		NEWID() AS [uID],
		0.25 AS decIntRate,
		CONV.strCustDesc,
		'' AS strCountry,
		CONV.strTerm,
		NULL AS intDept,
		CONV.strCurrency,
		0.00 AS decBalDueF,
		0.00 AS decYTDPurchF,
		0.00 AS decOpenOrdersF,
		'' AS strField7,
		'' AS strField8,
		'' AS strField9,
		'' AS strField10,
		'' AS strField11,
		'' AS strField12,
		CONV.strEmail AS strEmailInv,
		CONV.strEmail AS strEmailStat,
		CONV.strCustCategory,
		NULL AS strCountryCode,
		CASE WHEN TERM.bitCOD = 1 THEN 'Cash' ELSE 'On Account' END AS strTenderType,
		0.00 AS decTradeDiscPerc,
		0.00 AS decCreditLimitOverride,
		GETDATE() AS dteCreditLimitExpiryDate,
		0 AS intPartialBackorders,
		0 AS bitWithholdTax,
		NULL AS strWithholdTaxCode,
		NULL AS strINVFormDocName,
		NULL AS strORDFormDocName,
		0 AS bitMatrixType,
		'DEFAULT' AS strMatrixType,
		'' AS strParentCust,
		NULL AS strValueBased,
		1 AS bitInvWorkflowNew,
		1 AS bitInvWorkflowDA,
		1 AS bitInvWorkflowSO,
		'' AS strWebsite,
		'' AS strRSTTerminalSync,
		NULL AS strContact2,
		NULL AS strSuburb,
		'' AS strEmailOso,
		@NationalAccount AS intNAPrintMethod,
		NULL AS strDelMethodCode,
		NULL AS strDocPassword,
		0 AS blnIsSynctwebstore,
		NULL AS strWebstoreEmail
FROM #Temp_CUST CONV 
INNER JOIN tblTerms TERM ON CONV.strTerm = TERM.strTerm 
LEFT JOIN tblCustomers CUST ON CONV.strCustName = CUST.strCustName 
WHERE ISNULL(CUST.strCustName, '') = ''
SELECT @intCUSTRecCount = @@ROWCOUNT
INSERT INTO #Temp_CUSTLOC
SELECT	strCustName,
strLocName,
strStreet1,
strStreet2,
strCity,
strProvince,
strPostal
FROM tblUtilityCustomerLoc
DELETE LOC
FROM #Temp_CUSTLOC LOC
INNER JOIN (SELECT	strCustName,
strLocName,
MIN(lngID) AS lngID
FROM #Temp_CUSTLOC
GROUP BY strCustName,
strLocName
HAVING COUNT(strLocName) > 1) Z
ON LOC.strCustName = Z.strCustName 
AND LOC.strLocName = Z.strLocName
WHERE LOC.lngID <> Z.lngID 
INSERT INTO tblCustomerLoc (strCustName, strLocName, strStreet1, strStreet2, strCity, strProvince, strPostal, strCountry, strDelRouteCode, strCountryCode, 
strSalesName, strDelMethodCode, decDistance, strNumber)
SELECT	CONV.strCustName,
CONV.strLocName,
CONV.strStreet1,
CONV.strStreet2,
CONV.strCity,
CONV.strProvince,
CONV.strPostal,
'' AS strCountry,
NULL AS strDelRouteCode,
NULL AS strCountryCode,
NULL AS strSalesName,
NULL AS strDelMethodCode,
0 AS decDistance,
NULL AS strNumber 
FROM #Temp_CUSTLOC CONV 
LEFT JOIN tblCustomerLoc LOC ON CONV.strCustName = LOC.strCustName 
AND CONV.strLocName = LOC.strLocName 
WHERE ISNULL(LOC.strCustName, '') = ''
SELECT @intCUSTLOCRecCount = @@ROWCOUNT
DROP TABLE #Temp_CUST
DROP TABLE #Temp_CUSTLOC
SELECT @intCUSTCATRecCount AS intCUSTCATRecCount, @intCUSTRecCount AS intCUSTRecCount, @intCUSTLOCRecCount AS intCUSTLOCRecCount
GO


/****** Object:  StoredProcedure [dbo].[prConv_Projects_Insert]    Script Date: 2021-01-26 ******/
CREATE PROCEDURE [dbo].[prConv_Projects_Insert]
(
@ProjType AS tinyint,
@StatusActive AS tinyint,
@StatusInactive AS tinyint,
@Submitted datetime
)
AS
DECLARE @intPRJRecCount bigint = 0
INSERT INTO tblProjects (strProjNumber, strProjName, strCustName, uidCenterID, intProjType, intStatus, dteSubmitted, dteAccepted, dteBegins, dteEstComplete, 
dteActComplete, decDeposit, dteDepRec, bitRetainAmt, decRetainAmt, bitRetainPct, decRetainPct, dteRetainEstRcpt, dteRetainActRcpt, 
strField1, strField2, strField3, strField4, strField5, strField6, strField7, strField8, strField9, strField10, dteField11, dteField12, 
strNotes, uidProjID, strSalesName)
SELECT	CONV.strProjNumber,
CONV.strProjName,
CONV.strCustName,
CONV.uidCenterID,
@ProjType AS intProjType,
CASE WHEN CONV.bitInactive = 1 THEN @StatusInactive ELSE @StatusActive END AS intStatus,
@Submitted AS dteSubmitted,
NULL AS dteAccepted,
NULL AS dteBegins,
NULL AS dteEstComplete,
NULL AS dteActComplete,
0.00 AS decDeposit,
NULL AS dteDepRec,
0 AS bitRetainAmt,
0.00 AS decRetainAmt,
1 AS bitRetainPct,
0.00 AS decRetainPct,
NULL AS dteRetainEstRcpt,
NULL AS dteRetainActRcpt,
'' AS strField1,
'' AS strField2,
'' AS strField3,
'' AS strField4,
'' AS strField5,
'' AS strField6,
'' AS strField7,
'' AS strField8,
'' AS strField9,
'' AS strField10,
NULL AS dteField11,
NULL AS dteField12,
'' AS strNotes,
NEWID() AS uidProjID,
NULL AS strSalesName 
FROM tblUtilityProjects CONV 
LEFT JOIN tblProjects PROJ ON CONV.strProjNumber = PROJ.strProjNumber 
WHERE (LEN(CONV.strProjNumber) > 0) 
AND (ISNULL(PROJ.strProjNumber, '') = '')
SELECT @intPRJRecCount = @@ROWCOUNT
SELECT @intPRJRecCount AS intPRJRecCount
GO


/****** Object:  StoredProcedure [dbo].[prConv_Vendors_Insert]    Script Date: 2021-01-26 ******/
CREATE PROCEDURE [dbo].[prConv_Vendors_Insert]
AS
DECLARE @intVENDCATRecCount bigint = 0,
@intVENDRecCount bigint = 0
CREATE TABLE #Temp_VEND (
[strVendName] [nvarchar](50) NOT NULL,
[strVendDesc] [nvarchar](50) NOT NULL,
[strTaxCode] [nvarchar](15) NOT NULL,
[strTerm] [nvarchar](50) NOT NULL,
[strCurrency] [nvarchar](3) NOT NULL,
[strVendCategory] [nvarchar](20) NOT NULL,
[strStreet1] [nvarchar](100) NOT NULL,
[strStreet2] [nvarchar](100) NOT NULL,
[strCity] [nvarchar](50) NOT NULL,
[strProvince] [nvarchar](50) NOT NULL,
[strPostal] [nvarchar](20) NOT NULL,
[strPhone] [nvarchar](50) NOT NULL,
[strCellPhone] [nvarchar](50) NOT NULL,
[strFax] [nvarchar](50) NOT NULL,
[strEmail] [nvarchar](50) NOT NULL,
[strVAT] [nvarchar](50) NOT NULL,
[bitInactive] [bit] NOT NULL,
[strContact] [nvarchar](100) NOT NULL,
[strField1] [nvarchar](100) NOT NULL,
[strField2] [nvarchar](100) NOT NULL,
[strField3] [nvarchar](100) NOT NULL,
[strField4] [nvarchar](100) NOT NULL,
[strField5] [nvarchar](100) NOT NULL,
[dteUpdated] [smalldatetime] NOT NULL,
[dteSince] [datetime] NOT NULL,
[lngID] [bigint] IDENTITY(1,1) NOT NULL)
INSERT INTO tblVendorCat (strVendCategory, strDesc, bitInactive)
SELECT	CONV.strVendCategory,
CONV.strDesc,
0 AS bitInactive
FROM tblUtilityVendorCat CONV 
LEFT JOIN tblVendorCat CAT ON CONV.strVendCategory = CAT.strVendCategory 
WHERE ISNULL(CAT.strVendCategory, '') = ''
SELECT @intVENDCATRecCount = @@ROWCOUNT
INSERT INTO #Temp_VEND
SELECT	strVendName,
strVendDesc,
strTaxCode,
strTerm,
strCurrency,
strVendCategory,
strStreet1,
strStreet2,
strCity,
strProvince,
strPostal,
strPhone,
strCellPhone,
strFax,
strEmail,
strVAT,
bitInactive,
strContact,
strField1,
strField2,
strField3,
strField4,
strField5,
dteUpdated,
dteSince
FROM tblUtilityVendors
DELETE VEND
FROM #Temp_VEND VEND
INNER JOIN (SELECT	strVendName,
MIN(lngID) AS lngID
FROM #Temp_VEND
GROUP BY strVendName
HAVING COUNT(strVendName) > 1) Z
ON VEND.strVendName = Z.strVendName 
WHERE VEND.lngID <> Z.lngID 
INSERT INTO tblVendors (strVendName, strStreet1, strStreet2, strCity, strProvince, strPostal, strPhone, strCellPhone, strFax, strEmail, strVAT, strCK, decBalDue, decYTDPurch, 
decOpenOrders, intDelMethod, bitInventoryVendor, bitExpenseVendor, intExpAcct, bitInactive, dteLastUpdated, strContact, strField1, strField2, strField3, 
strField4, strField5, strField6, strTaxCode, dteSince, strNotes, [uID], strVendDesc, strCountry, strTerm, intDept, strCurrency, decBalDueF, decYTDPurchF, 
decOpenOrdersF, strField7, strField8, strField9, strField10, strField11, strField12, strVendCategory, strCountryCode, strTenderType, decTradeDiscPerc, 
bitWithholdTax, strWithholdTaxCode, bitInvWorkflowNew, bitInvWorkflowGRV, bitInvWorkflowPO, strWebsite, strDocPassword)
SELECT	CONV.strVendName,
CONV.strStreet1,
CONV.strStreet2,
CONV.strCity,
CONV.strProvince,
CONV.strPostal,
CONV.strPhone,
CONV.strCellPhone,
CONV.strFax,
CONV.strEmail,
CONV.strVAT,
'' AS strCK,
0.00 AS decBalDue,
0.00 AS decYTDPurch,
0.00 AS decOpenOrders,
0 AS intDelMethod,
1 AS bitInventoryVendor,
0 AS bitExpenseVendor,
NULL AS intExpAcct,
CONV.bitInactive,
CONV.dteUpdated AS dteLastUpdated,
CONV.strContact,
CONV.strField1,
CONV.strField2,
CONV.strField3,
CONV.strField4,
CONV.strField5,
'' AS strField6,
CONV.strTaxCode,
CONV.dteSince,
'' AS strNotes,
NEWID() AS [uID],
CONV.strVendDesc,
'' AS strCountry,
CONV.strTerm,
NULL AS intDept,
CONV.strCurrency,
0.00 AS decBalDueF,
0.00 AS decYTDPurchF,
0.00 AS decOpenOrdersF,
'' AS strField7,
'' AS strField8,
'' AS strField9,
'' AS strField10,
'' AS strField11,
'' AS strField12,
CONV.strVendCategory,
NULL AS strCountryCode,
CASE WHEN TERM.bitCOD = 1 THEN 'Cash' ELSE 'On Account' END AS strTenderType,
0.00 AS decTradeDiscPerc,
0 AS bitWithholdTax,
NULL AS strWithholdTaxCode,
1 AS bitInvWorkflowNew,
1 AS bitInvWorkflowGRV,
1 AS bitInvWorkflowPO,
'' AS strWebsite,
NULL AS strDocPassword
FROM #Temp_VEND CONV 
INNER JOIN tblTerms TERM ON CONV.strTerm = TERM.strTerm 
LEFT JOIN tblVendors VEND ON CONV.strVendName = VEND.strVendName 
WHERE ISNULL(VEND.strVendName, '') = ''
SELECT @intVENDRecCount = @@ROWCOUNT
DROP TABLE #Temp_VEND
SELECT @intVENDCATRecCount AS intVENDCATRecCount, @intVENDRecCount AS intVENDRecCount
GO
/****** Object:  StoredProcedure [dbo].[prConv_AccountSets_Insert]    Script Date: 2021-01-26 ******/
CREATE PROCEDURE [dbo].[prConv_AccountSets_Insert]
AS

DECLARE @intASRecCount bigint = 0

INSERT INTO tblAccountSets (strAcctSet, strDesc, blnService, blnInactive, intGLAsset, intGLRevenue, intGLExpCOGS, intGLVariance, blnBuyout, dteRowUpdated)
SELECT	CONV.strAcctSet,
		CONV.strDesc,
		CONV.blnService,
		0 AS blnInactive,
		ISNULL(CONV.intGLAsset, 0) AS intGLAsset,
		ISNULL(CONV.intGLRevenue, 0) AS intGLRevenue,
		ISNULL(CONV.intGLExpCOGS, 0) AS intGLExpCOGS,
		ISNULL(CONV.intGLVariance, 0) AS intGLVariance,
		0 AS blnBuyout,
		GETDATE() AS dteRowUpdated
FROM tblUtilityAccountSets CONV 
LEFT JOIN tblAccountSets ACC ON CONV.strAcctSet = ACC.strAcctSet 
WHERE ISNULL(ACC.strAcctSet, '') = ''

SELECT @intASRecCount = @@ROWCOUNT

SELECT @intASRecCount AS intASRecCount
GO

/****** Object:  StoredProcedure [dbo].[prConv_Inventory_Insert]    Script Date: 2021-01-26 ******/
CREATE PROCEDURE [dbo].[prConv_Inventory_Insert]
AS
DECLARE @intINVCATRecCount BIGINT = 0
	,@intINVLOCRecCount BIGINT = 0
	,@intINVRecCount BIGINT = 0

INSERT INTO tblInvCat (
	strCategory
	,strDesc
	,bitInactive
	,decMinMarginPerc
	,bitUseMinMarginPerc
	,intAlertOnMinMarginPerc
	,strAcctSetInv
	,strAcctSetSvc
	,strAcctSetBO
	,dteRowUpdated
	,bitDefault
	)
SELECT CONV.strCategory
	,CONV.strDesc
	,0 AS bitInactive
	,0.00 AS decMinMarginPerc
	,0 AS bitUseMinMarginPerc
	,0 AS intAlertOnMinMarginPerc
	,NULL AS strAcctSetInv
	,NULL AS strAcctSetSvc
	,NULL AS strAcctSetBO
	,GETDATE() AS dteRowUpdated
	,0 AS bitDefault
FROM tblUtilityInvCat CONV
LEFT JOIN tblInvCat CAT ON CONV.strCategory = CAT.strCategory
WHERE ISNULL(CAT.strCategory, '') = ''

SELECT @intINVCATRecCount = @@ROWCOUNT

INSERT INTO tblInvLoc (
	strLocName
	,strDesc
	,bitDefault
	,intType
	,bitCustSale
	,bitCustReturn
	,bitVendReceive
	,bitVendReturn
	,dteRowUpdated
	)
SELECT CONV.strLocName
	,CONV.strDesc
	,0 AS bitDefault
	,0 AS intType
	,1 AS bitCustSale
	,1 AS bitCustReturn
	,1 AS bitVendReceive
	,1 AS bitVendReturn
	,GETDATE() AS dteRowUpdated
FROM tblUtilityInvLoc CONV
LEFT JOIN tblInvLoc LOC ON CONV.strLocName = LOC.strLocName
WHERE ISNULL(LOC.strLocName, '') = ''

SELECT @intINVLOCRecCount = @@ROWCOUNT

INSERT INTO tblInv (
	strPartNumber
	,strDesc
	,intType
	,strCategory
	,intExpAcct
	,decCostOnPO
	,bitUseLPPOnPO
	,intReorderQty
	,strBuyUnit
	,strStockUnit
	,decBuyToStock
	,bitAllowPriceChg
	,dteDateLastSale
	,dteLastPurchase
	,decLastPPUnit
	,dteLastUpdated
	,bitUseBOM
	,intBOMQty
	,strAddInfo
	,bitInactive
	,decSumAvail
	,decSumAlloc
	,decSumOnHand
	,decSumValue
	,decSumOnOrder
	,decSumOpenQty
	,decSumOpenValue
	,decSumValYearStart
	,decSumQtyYearStart
	,decSumAmtSoldYTD
	,decSumAmtSoldLY
	,decSumQtySoldYTD
	,decSumQtySoldLY
	,decSumCOGSYTD
	,decSumCOGSLY
	,intSumNumTransYTD
	,intSumNumTransLY
	,bitAutoBuild
	,strField1
	,strField2
	,strField3
	,strField4
	,strField5
	,strField6
	,strBarCode
	,decStandardCost
	,bitItemNumConvUsed
	,strSellUnit
	,strSellStockUnit
	,decSellFromStock
	,strItemSegment1
	,strItemSegment2
	,strItemSegment3
	,strItemSegment4
	,strInvNumConv
	,bitInvSerialType
	,strInvSerialType
	,decRepairCharge
	,strBarCode2
	,bitVoucherEnabled
	,strVoucherCode
	,decDefSaleQty
	,strExtendedDesc
	,bitInvExtDescOnSI
	,bitInvExtDescOnSO
	,bitInvExtDescOnSQ
	,bitInvExtDescOnSFHQ
	,bitInvExtDescOnCR
	,bitInvExtDescOnPI
	,bitInvExtDescOnPO
	,bitInvExtDescOnPQ
	,bitWebstoreItem
	,strDimProCode
	,strRSTTerminalSync
	,intDecimalQuantity
	,strBOMNotes
	,bitInvExtDescOnBRQ
	,decMass
	,decVolumetricWeight
	,strUnitOfMeasure
	,decW
	,decH
	,decD
	,decCube
	,decFactor
	,decMaxLevel
	,decOrderLeadTime
	,decSafetyFactorPer
	,decDaysSalesinStock
	,decMinimumOrderQuantity
	,decNewDailySales
	,decOldMinLevel
	,decMinimumLevel
	,decOldMaxLevel
	,decEconomicOrderQty
	,bitPallet
	,bitInclInvForecast
	,bitDimProSales
	,bitDimProPurchases
	,strInvWCCode
	,decLastManCost
	,bitAutoBuildSameLoc
	,strFileName
	,strSubCategory
	,decSumManuf
	,strSubCategoryGroup
	,bitExclCommission
	,strPOSDesc
	,bitOtherCmp
	,bitPrintComp
	,dteRowUpdated
	,bitSumComp
	,dteWebStoreItemUpdated
	,bitAllowAdjustKitCompOnDoc
	,strHSCode
	,strHSDesc
	)
SELECT CONV.strPartNumber
	,CONV.strDesc
	,CONV.intType
	,CONV.strCategory
	,0 AS intExpAcct
	,0.00 AS decCostOnPO
	,0 AS bitUseLPPOnPO
	,0 AS intReorderQty
	,CONV.strBuyUnit
	,CONV.strStockUnit
	,1.00 AS decBuyToStock
	,1 AS bitAllowPriceChg
	,'1999-01-01' AS dteDateLastSale
	,'1999-01-01' AS dteLastPurchase
	,0.00 AS decLastPPUnit
	,GETDATE() AS dteLastUpdated
	,0 AS bitUseBOM
	,1 AS intBOMQty
	,'' AS strAddInfo
	,CONV.bitInactive
	,0.00 AS decSumAvail
	,0.00 AS decSumAlloc
	,0.00 AS decSumOnHand
	,0.00 AS decSumValue
	,0.00 AS decSumOnOrder
	,0.00 AS decSumOpenQty
	,0.00 AS decSumOpenValue
	,0.00 AS decSumValYearStart
	,0.00 AS decSumQtyYearStart
	,0.00 AS decSumAmtSoldYTD
	,0.00 AS decSumAmtSoldLY
	,0.00 AS decSumQtySoldYTD
	,0.00 AS decSumQtySoldLY
	,0.00 AS decSumCOGSYTD
	,0.00 AS decSumCOGSLY
	,0 AS intSumNumTransYTD
	,0 AS intSumNumTransLY
	,0 AS bitAutoBuild
	,CONV.strField1
	,CONV.strField2
	,CONV.strField3
	,CONV.strField4
	,CONV.strField5
	,CONV.strField6
	,CONV.strBarcode
	,0.00 AS decStandardCost
	,0 AS bitItemNumConvUsed
	,CONV.strBuyUnit AS strSellUnit
	,CONV.strStockUnit AS strSellStockUnit
	,1.00 AS decSellFromStock
	,'' AS strItemSegment1
	,'' AS strItemSegment2
	,'' AS strItemSegment3
	,'' AS strItemSegment4
	,NULL AS strInvNumConv
	,0 AS bitInvSerialType
	,NULL AS strInvSerialType
	,0.00 AS decRepairCharge
	,'' AS strBarCode2
	,0 AS bitVoucherEnabled
	,NULL AS strVoucherCode
	,1.00 AS decDefSaleQty
	,'' AS strExtendedDesc
	,0 AS bitInvExtDescOnSI
	,0 AS bitInvExtDescOnSO
	,0 AS bitInvExtDescOnSQ
	,0 AS bitInvExtDescOnSFHQ
	,0 AS bitInvExtDescOnCR
	,0 AS bitInvExtDescOnPI
	,0 AS bitInvExtDescOnPO
	,0 AS bitInvExtDescOnPQ
	,0 AS bitWebstoreItem
	,N'' AS strDimProCode
	,N'' AS strRSTTerminalSync
	,2 AS intDecimalQuantity
	,N'' AS strBOMNotes
	,0 AS bitInvExtDescOnBRQ
	,0.00 AS decMass
	,0.00 AS decVolumetricWeight
	,'kg' AS strUnitOfMeasure
	,0.00 AS decW
	,0.00 AS decH
	,0.00 AS decD
	,0.00 AS decCube
	,0.00 AS decFactor
	,0.00 AS decMaxLevel
	,0.00 AS decOrderLeadTime
	,0.00 AS decSafetyFactorPer
	,0.00 AS decDaysSalesinStock
	,0.00 AS decMinimumOrderQuantity
	,0.00 AS decNewDailySales
	,0.00 AS decOldMinLevel
	,0.00 AS decMinimumLevel
	,0.00 AS decOldMaxLevel
	,1.00 AS decEconomicOrderQty
	,0 AS bitPallet
	,1 AS bitInclInvForecast
	,0 AS bitDimProSales
	,0 AS bitDimProPurchases
	,NULL AS strInvWCCode
	,0.00 AS decLastManCost
	,0 AS bitAutoBuildSameLoc
	,NULL AS strFileName
	,NULL AS strSubCategory
	,0.00 AS decSumManuf
	,NULL AS strSubCategoryGroup
	,0 AS bitExclCommission
	,NULL AS strPOSDesc
	,0 AS bitOtherCmp
	,0 AS bitPrintComp
	,GETDATE() AS dteRowUpdated
	,0 AS bitSumComp
	,NULL AS dteWebStoreItemUpdated
	,0 AS bitAllowAdjustKitCompOnDoc
	,'' AS strHSCode
	,'' AS strHSDesc
FROM tblUtilityInv CONV
LEFT JOIN tblInv INV ON CONV.strPartNumber = INV.strPartNumber
WHERE ISNULL(INV.strPartNumber, '') = ''

SELECT @intINVRecCount = @@ROWCOUNT

INSERT INTO tblInvPrice (
	uidPriceBasedID
	,strPartNumber
	,strPricelist
	,decSelling
	,decEstLocalCost
	,decEstImportCost
	,bitPromotionalPricing
	,dtePromotionalStartDate
	,dtePromotionalEndDate
	,decPromotionalPrice
	,dteRowUpdated
	,bitCashPricing
	,decCashPrice
	,strUnit
	)
SELECT PLIST.uidPriceBasedID
	,CONV.strPartNumber
	,PLIST.strPricelist
	,0.00 AS decSelling
	,0.00 AS decEstLocalCost
	,0.00 AS decEstImportCost
	,NULL AS bitPromotionalPricing
	,NULL AS dtePromotionalStartDate
	,NULL AS dtePromotionalEndDate
	,NULL AS decPromotionalPrice
	,GETDATE() AS dteRowUpdated
	,NULL AS bitCashPricing
	,NULL AS decCashPrice
	,'EA' AS strUnit
FROM tblUtilityInv CONV
CROSS JOIN tblPricelists PLIST
LEFT JOIN tblInvPrice PRICE ON PLIST.uidPriceBasedID = PRICE.uidPriceBasedID
	AND CONV.strPartNumber = PRICE.strPartNumber
	AND PLIST.strPricelist = PRICE.strPricelist
WHERE (PRICE.uidPriceBasedID IS NULL)
	AND (ISNULL(PRICE.strPartNumber, '') = '')
	AND (ISNULL(PRICE.strPricelist, '') = '')

INSERT INTO tblInvExt (
	strPartNumber
	,strLocName
	,decAvail
	,decAlloc
	,decOnHand
	,decValue
	,decOnOrder
	,decOpenQty
	,decOpenValue
	,intReorderPoint
	,strAcctSet
	,strBinLoc
	,decMaxLevel
	,decMinimumLevel
	,bitInactive
	,bitDefault
	,decManuf
	,dteRowUpdated
	)
SELECT INV.strPartNumber
	,LOC.strLocName
	,0.00 AS decAvail
	,0.00 AS decAlloc
	,0.00 AS decOnHand
	,0.00 AS decValue
	,0.00 AS decOnOrder
	,0.00 AS decOpenQty
	,0.00 AS decOpenValue
	,0 AS intReorderPoint
	,INV.strAcctSet
	,'' AS strBinLoc
	,0.00 AS decMaxLevel
	,0.00 AS decMinimumLevel
	,0 AS bitInactive
	,0 AS bitDefault
	,0.00 AS decManuf
	,GETDATE() AS dteRowUpdated
FROM tblUtilityInv INV
CROSS JOIN tblInvLoc LOC
LEFT JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
	AND LOC.strLocName = EXT.strLocName
WHERE (ISNULL(EXT.strPartNumber, '') = '')
	AND (ISNULL(EXT.strLocName, '') = '')

INSERT INTO tblTradeDiscMatrixTypesDT (
	uidMatrixID
	,intType
	,intLineNo
	,decValueFrom
	,decValueTo
	,decDiscPerc
	,strPartNumber
	,dteRowUpdated
	)
SELECT HDR.uidMatrixID
	,2 AS intType
	,ROW_NUMBER() OVER (
		ORDER BY INV.strPartNumber
		) AS intLineNo
	,0.00 AS decValueFrom
	,0.00 AS decValueTo
	,0.00 AS decDiscPerc
	,INV.strPartNumber
	,GETDATE() AS dteRowUpdated
FROM tblUtilityInv INV
CROSS JOIN tblTradeDiscMatrixTypes HDR
LEFT JOIN tblTradeDiscMatrixTypesDT DTL ON HDR.uidMatrixID = DTL.uidMatrixID
	AND INV.strPartNumber = DTL.strPartNumber
WHERE (DTL.uidMatrixID IS NULL)
	AND (ISNULL(DTL.strPartNumber, '') = '')

UPDATE tblInvExt
SET bitDefault = 1
WHERE (
		strPartNumber NOT IN (
			SELECT strPartNumber
			FROM tblInvExt
			WHERE bitDefault = 1
			)
		)
	AND (strLocName = 'DEFAULT')

INSERT INTO tblInvLocBin (
	strLocName
	,strBinCode
	,strDescription
	,decCapacity
	,strCapacityUnit
	,bitPickingBin
	,bitInactive
	,bitReceivingBin
	,bitProductionBin
	,bitStockingBin
	,dteRowUpdated
	)
SELECT DISTINCT tblInvExt.strLocName
	,'DEFAULT' AS strBinCode
	,'DEFAULT' AS strDescription
	,0.00 AS decCapacity
	,'' AS strCapacityUnit
	,0 AS bitPickingBin
	,0 AS bitInactive
	,NULL AS bitReceivingBin
	,NULL AS bitProductionBin
	,NULL AS bitStockingBin
	,GETDATE() AS dteRowUpdated
FROM tblInvExt
LEFT JOIN tblInvLocBin ON tblInvExt.strLocName = tblInvLocBin.strLocName
WHERE tblInvLocBin.strLocName IS NULL

INSERT INTO tblInvExtBin (
	strPartNumber
	,strLocName
	,lngBinID
	,decAvail
	,decAlloc
	,decOnHand
	,decMaximumQty
	,bitAllowed
	,bitDefault
	,dteRowUpdated
	)
SELECT TEMP.strPartNumber
	,TEMP.strLocName
	,TEMP.lngID AS lngBinID
	,TEMP.decOnHand AS decAvail
	,TEMP.decAlloc
	,TEMP.decOnHand
	,0.00 AS decMaximumQty
	,1 AS bitAllowed
	,1 AS bitDefault
	,GETDATE() AS dteRowUpdated
FROM (
	SELECT ROW_NUMBER() OVER (
			PARTITION BY strPartNumber
			,strLocName ORDER BY strPartNumber
				,strLocName
			) AS RowNum
		,decAvail
		,decAlloc
		,decOnHand
		,ISNULL((
				SELECT TOP (1) BIN.lngID
				FROM tblInvLocBin BIN
				INNER JOIN tblInvExt ON BIN.strLocName = tblInvExt.strLocName
					AND tblInvExt.strBinLoc = BIN.strBinCode
				WHERE BIN.strLocName = a.strLocName
					AND tblInvExt.strPartNumber = a.strPartNumber
				), (
				SELECT TOP (1) BIN.lngID
				FROM tblInvLocBin BIN
				WHERE BIN.strLocName = a.strLocName
				)) AS lngID
		,strPartNumber
		,strLocName
	FROM tblInvExt AS a
	) AS TEMP
INNER JOIN tblInv ON TEMP.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblInvExtBin ON tblInvExtBin.strPartNumber = TEMP.strPartNumber
	AND tblInvExtBin.strLocName = TEMP.strLocName
WHERE (TEMP.RowNum = 1)
	AND (tblInv.intType <> 5)
	AND (tblInvExtBin.strPartNumber IS NULL)

SELECT @intINVCATRecCount AS intINVCATRecCount
	,@intINVLOCRecCount AS intINVLOCRecCount
	,@intINVRecCount AS intINVRecCount

GO


/****** Object:  StoredProcedure [dbo].[prConv_CustomerInvoiceHistory_Insert]    Script Date: 2021-01-26 ******/
----------------------------------------------------
CREATE PROCEDURE [dbo].[prConv_CustomerInvoiceHistory_Insert]
(
	@Evo bit,
	@UserName nvarchar(20)
)		
AS

DECLARE @strCurrency nvarchar(3),
		@strCurrSymbol nvarchar(5),
		@strLocName nvarchar(10),
		@intHDRTotCount bigint = 0,
		@intDTLTotCount bigint = 0,
		@intPROJTotCount bigint = 0,
		@intHDRRecCount bigint = 0,
		@intDTLRecCount bigint = 0,
		@intPROJRecCount bigint = 0,
		@intREVHDRRecCount bigint = 0,
		@intREVDTLRecCount bigint = 0,
		@lngEntID bigint = 0

SELECT @strCurrency = strCurrency, @strCurrSymbol = strCurrSymbol FROM tblCurrency WHERE bitHome = 1

SELECT @strLocName = ISNULL(strLocName, '') FROM tblUsers WHERE strUserName = @UserName

IF ISNULL(@strLocName, '') = ''
BEGIN 

	SELECT @strLocName = ISNULL(strLocName, '') FROM tblInvLoc WHERE bitDefault = 1

END 

CREATE TABLE #Temp_DOC (
[InvDocID] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[InvDocID_New] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[IsCreditNote] [bit] NOT NULL,
[InvoiceID] [int] NULL,
[DocumentType] [smallint] NULL,
[lngID] [bigint] IDENTITY(1,1) NOT NULL)

CREATE TABLE #Temp_HDR (
[lngID] [bigint] IDENTITY(1,1) NOT NULL,
[strInvDocID] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[dteSystemDate] [smalldatetime] NOT NULL,
[dteJournalDate] [smalldatetime] NOT NULL,
[dteRequired] [smalldatetime] NOT NULL,
[strCustName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[strSoldTo] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strShipTo] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strReference] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decSubTotal] [money] NOT NULL,
[decVAT] [money] NOT NULL,
[decTotal] [money] NOT NULL,
[strNotes] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strSalesName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[strCurrency] [nvarchar](3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[bitIsForeign] [bit] NOT NULL,
[decSubTotalF] [money] NOT NULL,
[decVATF] [money] NOT NULL,
[decTotalF] [money] NOT NULL,
[decExchange] [decimal](20, 6) NOT NULL,
[strTerm] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strSubFormated] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strVATFormatted] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strTotFormatted] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[dteField13] [datetime] NOT NULL,
[dteField14] [datetime] NOT NULL,
[decDiscPerc] [money] NOT NULL,
[strDiscFormatted] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strDeliveryCostFormatted] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[lngEntID] [bigint] NULL)

CREATE TABLE #Temp_DTL (
[lngID] [bigint] IDENTITY(1,1) NOT NULL,
[strInvDocID] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[intLineNo] [int] NOT NULL,
[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strLocation] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strPartDesc] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decQty] [money] NOT NULL,
[strUnit] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[intType] [tinyint] NOT NULL,
[decPriceEaExc] [money] NOT NULL,
[decLineTotExc] [money] NOT NULL,
[decLineTaxAmt] [money] NOT NULL,
[decPriceEaInc] [money] NOT NULL,
[decLineTotInc] [money] NOT NULL,
[strTaxCode] [nvarchar](2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strCurrency] [nvarchar](3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[bitIsForeign] [bit] NOT NULL,
[decPriceEaExcF] [money] NOT NULL,
[decLineTotExcF] [money] NOT NULL,
[decLineTaxAmtF] [money] NOT NULL,
[decEaIncTaxF] [money] NOT NULL,
[decTotIncTaxF] [money] NOT NULL,
[decLineDiscPerc] [money] NOT NULL,
[decLineDiscAmt] [money] NOT NULL,
[decLineDiscAmtF] [money] NOT NULL,
[decStockQty] [money] NOT NULL,
[strStockUnit] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strSalesName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[decCOGS] [money] NOT NULL,
[strProjNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL)

IF @Evo = 1
BEGIN

	INSERT INTO #Temp_DOC (InvDocID, InvDocID_New, IsCreditNote, InvoiceID)
	SELECT	DocumentNumber AS InvDocID,
			SUBSTRING(CASE WHEN DocType LIKE '%Crn%' 
						   THEN CASE WHEN SUBSTRING(LTRIM(RTRIM(DocumentNumber)), 1, 2) = 'CN' 
									 THEN LTRIM(RTRIM(DocumentNumber))
									 ELSE 'CN' + LTRIM(RTRIM(DocumentNumber))
								END
						   ELSE CASE WHEN SUBSTRING(LTRIM(RTRIM(DocumentNumber)), 1, 2) = 'IN' 
									 THEN LTRIM(RTRIM(DocumentNumber))
									 ELSE 'IN' + LTRIM(RTRIM(DocumentNumber))
								END
					  END, 1, 50) AS InvDocID_New,
			CASE WHEN DocType LIKE '%Crn%' 
				 THEN 1 
				 ELSE 0 
			END AS IsCreditNote,
			InvoiceID
	FROM tblUtilityPervHistoryHeader
	WHERE DocType IN ('Inv', 'POSInv', 'Crn', 'POSCrn')
	AND LEN(DocumentNumber) > 0
	ORDER BY InvoiceID

	UPDATE #Temp_DOC
	SET InvDocID_New = CASE WHEN Z.lngDuplicate = 1 THEN #Temp_DOC.InvDocID_New ELSE SUBSTRING(#Temp_DOC.InvDocID_New, 1, (50 - LEN('_' + CAST(Z.lngDuplicate AS nvarchar)))) + '_' + CAST(Z.lngDuplicate AS nvarchar) END
	FROM (SELECT lngID,
				 ROW_NUMBER() OVER(PARTITION BY #Temp_DOC.InvDocID_New ORDER BY #Temp_DOC.lngID ASC) AS lngDuplicate
		  FROM #Temp_DOC) Z
	WHERE (#Temp_DOC.lngID = Z.lngID)

	SELECT @intHDRTotCount = COUNT(InvDocID_New)
	FROM #Temp_DOC

	SELECT @intDTLTotCount = COUNT(HL.DocumentNumber)
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryLines HL ON TMP.InvoiceID = HL.iInvoiceID 

	SELECT @intPROJTotCount = COUNT(HL.DocumentNumber)
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryLines HL ON TMP.InvoiceID = HL.iInvoiceID 
	WHERE ISNULL(HL.CostCode, '') <> ''

	DELETE FROM #Temp_DOC
	WHERE InvDocID_New IN (SELECT TMP.InvDocID_New 
						   FROM #Temp_DOC TMP
						   INNER JOIN tblInvoiceDoc DOC ON TMP.InvDocID_New = DOC.strInvDocID)

	INSERT INTO #Temp_HDR (strInvDocID, dteSystemDate, dteJournalDate, dteRequired, strCustName, strSoldTo, strShipTo, strReference, decSubTotal, decVAT, decTotal, 
						   strNotes, strSalesName, strCurrency, bitIsForeign, decSubTotalF, decVATF, decTotalF, decExchange, strTerm, strSubFormated, strVATFormatted, 
						   strTotFormatted, dteField13, dteField14, decDiscPerc, strDiscFormatted, strDeliveryCostFormatted)
	SELECT	TMP.InvDocID_New AS strInvDocID,
			HH.DocumentDate AS dteSystemDate, 
			HH.DocumentDate AS dteJournalDate, 
			HH.DocumentDate AS dteRequired,
			SUBSTRING(HH.CustomerCode, 1, 50) AS strCustName,
			SUBSTRING(CASE WHEN LEN(LTRIM(RTRIM(CUST.strCustDesc))) > 0 THEN LTRIM(RTRIM(CUST.strCustDesc)) + Char(13) + Char(10) ELSE '' END
					+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strStreet1))) > 0 THEN LTRIM(RTRIM(CUST.strStreet1)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strStreet2))) > 0 THEN LTRIM(RTRIM(CUST.strStreet2)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strCity))) > 0 THEN LTRIM(RTRIM(CUST.strCity)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strProvince))) > 0 THEN LTRIM(RTRIM(CUST.strProvince)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strPostal))) > 0 THEN LTRIM(RTRIM(CUST.strPostal)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strCountry))) > 0 THEN Char(13) + Char(10) + LTRIM(RTRIM(CUST.strCountry)) ELSE '' END, 1, 500) AS strSoldTo,
			SUBSTRING(CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress01))) > 0 THEN LTRIM(RTRIM(HH.DelAddress01)) + Char(13) + Char(10) ELSE '' END
					+ CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress02))) > 0 THEN LTRIM(RTRIM(HH.DelAddress02)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress03))) > 0 THEN LTRIM(RTRIM(HH.DelAddress03)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress04))) > 0 THEN LTRIM(RTRIM(HH.DelAddress04)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress05))) > 0 THEN LTRIM(RTRIM(HH.DelAddress05)) + Char(13) + Char(10) ELSE '' END, 1, 500) AS strShipTo,
			SUBSTRING(LTRIM(RTRIM(HH.OrderNumber)), 1, 50) AS strReference,
			CASE WHEN TMP.IsCreditNote = 1 THEN HH.Total * -1 ELSE HH.Total END AS decSubTotal,
			CASE WHEN TMP.IsCreditNote = 1 THEN HH.TotalTax * -1 ELSE HH.TotalTax END AS decVAT,
			CASE WHEN TMP.IsCreditNote = 1 THEN HH.InvTotIncl * -1 ELSE HH.InvTotIncl END AS decTotal,
			SUBSTRING(LTRIM(RTRIM(HH.Message01)) + LTRIM(RTRIM(HH.Message02)) + LTRIM(RTRIM(HH.Message03)), 1, 500) AS strNotes,
			CASE WHEN ISNULL(SP.strSalesName, '') = '' THEN NULL ELSE SP.strSalesName END AS strSalesName,
			CASE WHEN CUR.strCurrency IS NULL THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
			CASE WHEN CUR.strCurrency IS NULL THEN 0 ELSE 1 END AS bitIsForeign,
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE CASE WHEN TMP.IsCreditNote = 1 THEN HH.FCurrTotal * -1 ELSE HH.FCurrTotal END END AS decSubTotalF,
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE CASE WHEN TMP.IsCreditNote = 1 THEN HH.FCurrTotalTax * -1 ELSE HH.FCurrTotalTax END END AS decVATF,
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE CASE WHEN TMP.IsCreditNote = 1 THEN HH.fInvTotInclForeign * -1 ELSE HH.fInvTotInclForeign END END AS decTotalF,
			CASE WHEN CUR.strCurrency IS NULL THEN 1.00 ELSE HH.ExchangeRate END AS decExchange,
			CUST.strTerm AS strTerm,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CUR.strCurrency IS NULL THEN CASE WHEN TMP.IsCreditNote = 1 THEN HH.Total * -1 ELSE HH.Total END ELSE CASE WHEN TMP.IsCreditNote = 1 THEN HH.FCurrTotal * -1 ELSE HH.FCurrTotal END END AS nvarchar(50)) AS strSubFormated,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CUR.strCurrency IS NULL THEN CASE WHEN TMP.IsCreditNote = 1 THEN HH.TotalTax * -1 ELSE HH.TotalTax END ELSE CASE WHEN TMP.IsCreditNote = 1 THEN HH.FCurrTotalTax * -1 ELSE HH.FCurrTotalTax END END AS nvarchar(50)) AS strVATFormatted,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CUR.strCurrency IS NULL THEN CASE WHEN TMP.IsCreditNote = 1 THEN HH.InvTotIncl * -1 ELSE HH.InvTotIncl END ELSE CASE WHEN TMP.IsCreditNote = 1 THEN HH.fInvTotInclForeign * -1 ELSE HH.fInvTotInclForeign END END AS nvarchar(50)) AS strTotFormatted,
			HH.DocumentDate AS dteField13,
			HH.DocumentDate AS dteField14,
			HH.DiscountPercent AS decDiscPerc,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' 0.00' AS strDiscFormatted,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' 0.00' AS strDeliveryCostFormatted
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryHeader HH ON TMP.InvoiceID = HH.InvoiceID 
	INNER JOIN tblCustomers CUST ON HH.CustomerCode = CUST.strCustName 
	LEFT JOIN tblUtilitySalesPersons SP ON HH.SalesManCode = SP.strCode
	LEFT JOIN tblUtilityCurrency CUR ON HH.CurrencyCode = CUR.strPPCurrency 
	ORDER BY TMP.lngID 

	INSERT INTO #Temp_DTL (strInvDocID, intLineNo, strPartNumber, strLocation, strPartDesc, decQty, strUnit, intType, decPriceEaExc, decLineTotExc, decLineTaxAmt, 
						   decPriceEaInc, decLineTotInc, strTaxCode, strCurrency, bitIsForeign, decPriceEaExcF, decLineTotExcF, decLineTaxAmtF, decEaIncTaxF, 
						   decTotIncTaxF, decLineDiscPerc, decLineDiscAmt, decLineDiscAmtF, decStockQty, strStockUnit, strSalesName, decCOGS, strProjNumber)
	SELECT	TMP.InvDocID_New AS strInvDocID,
			ROW_NUMBER() OVER(PARTITION BY TMP.InvDocID_New ORDER BY HL.ItemCode ASC) AS intLineNo,
			CASE WHEN ISNULL(SUBSTRING(CASE WHEN HL.SearchType = 6 THEN LTRIM(RTRIM(REPLACE(REPLACE(ItemCode, '>', ''), '/', ''))) ELSE LTRIM(RTRIM(HL.ItemCode)) END, 1, 50), '') = ''
				 THEN CASE WHEN HL.Physical = 0
						   THEN '<<BLANK-SERV>>'
						   ELSE '<<BLANK-ITEM>>'
					  END
				 ELSE SUBSTRING(CASE WHEN HL.SearchType = 6 THEN LTRIM(RTRIM(REPLACE(REPLACE(ItemCode, '>', ''), '/', ''))) ELSE LTRIM(RTRIM(HL.ItemCode)) END, 1, 50)
			END AS strPartNumber,
			CASE WHEN ISNULL(LTRIM(RTRIM(HL.MultiStore)), '') = '' THEN @strLocName ELSE SUBSTRING(LTRIM(RTRIM(HL.MultiStore)), 1, 10) END AS strLocation,
			SUBSTRING(LTRIM(RTRIM(HL.[Description])), 1, 500) AS strPartDesc,
			CASE WHEN TMP.IsCreditNote = 1 
				 THEN CASE WHEN ISNULL(HL.Qty, 0) > 0 THEN HL.Qty * -1 ELSE ISNULL(HL.Qty, 0) END
				 ELSE CASE WHEN ISNULL(HL.Qty, 0) < 0 THEN HL.Qty * -1 ELSE ISNULL(HL.Qty, 0) END 
			END AS decQty,
			CASE WHEN LTRIM(RTRIM(ISNULL(HL.UnitUsed, ''))) = '' THEN 'EA' ELSE SUBSTRING(LTRIM(RTRIM(HL.UnitUsed)), 1, 15) END AS strUnit,
			CASE WHEN HL.Physical = 0 THEN 4 ELSE 1 END AS intType,
			HL.UnitPrice AS decPriceEaExc,
			CASE WHEN TMP.IsCreditNote = 1
				 THEN CASE WHEN ISNULL(HL.fQuantityLineTotIncl, 0) > 0 THEN HL.fQuantityLineTotIncl * -1 ELSE ISNULL(HL.fQuantityLineTotIncl, 0) END
				 ELSE CASE WHEN ISNULL(HL.fQuantityLineTotIncl, 0) < 0 THEN HL.fQuantityLineTotIncl * -1 ELSE ISNULL(HL.fQuantityLineTotIncl, 0) END
			END AS decLineTotExc,
			CASE WHEN TMP.IsCreditNote = 1
				 THEN CASE WHEN ISNULL(HL.TaxAmt, 0) > 0 THEN HL.TaxAmt * -1 ELSE ISNULL(HL.TaxAmt, 0) END
				 ELSE CASE WHEN ISNULL(HL.TaxAmt, 0) < 0 THEN HL.TaxAmt * -1 ELSE ISNULL(HL.TaxAmt, 0) END
			END AS decLineTaxAmt,
			HL.UnitPrice AS decPriceEaInc, 
			CASE WHEN TMP.IsCreditNote = 1
				 THEN CASE WHEN ISNULL(HL.fQuantityLineTotIncl, 0) > 0 THEN HL.fQuantityLineTotIncl * -1 ELSE ISNULL(HL.fQuantityLineTotIncl, 0) END
				 ELSE CASE WHEN ISNULL(HL.fQuantityLineTotIncl, 0) < 0 THEN HL.fQuantityLineTotIncl * -1 ELSE ISNULL(HL.fQuantityLineTotIncl, 0) END
			END AS decLineTotInc, 
			ISNULL(TAX.strTaxCodeSales, CUST.strTaxCode) AS strTaxCode, 
			CASE WHEN CUR.strCurrency IS NULL THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
			CASE WHEN CUR.strCurrency IS NULL THEN 0 ELSE 1 END AS bitIsForeign,
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE HL.FCurrUnitPrice END AS decPriceEaExcF,
			CASE WHEN CUR.strCurrency IS NULL 
				 THEN 0.00 
				 ELSE CASE WHEN TMP.IsCreditNote = 1
						   THEN CASE WHEN ISNULL(HL.fQuantityLineTotInclForeign, 0) > 0 THEN HL.fQuantityLineTotInclForeign * -1 ELSE ISNULL(HL.fQuantityLineTotInclForeign, 0) END
						   ELSE CASE WHEN ISNULL(HL.fQuantityLineTotInclForeign, 0) < 0 THEN HL.fQuantityLineTotInclForeign * -1 ELSE ISNULL(HL.fQuantityLineTotInclForeign, 0) END
					  END 
			END AS decLineTotExcF,
			CASE WHEN CUR.strCurrency IS NULL 
				 THEN 0.00 
				 ELSE CASE WHEN TMP.IsCreditNote = 1
						   THEN CASE WHEN ISNULL(HL.FCurrTaxAmount, 0) > 0 THEN HL.FCurrTaxAmount * -1 ELSE ISNULL(HL.FCurrTaxAmount, 0) END
						   ELSE CASE WHEN ISNULL(HL.FCurrTaxAmount, 0) < 0 THEN HL.FCurrTaxAmount * -1 ELSE ISNULL(HL.FCurrTaxAmount, 0) END
					  END 
			END AS decLineTaxAmtF, 
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE HL.FCurrUnitPrice END AS decEaIncTaxF, 
			CASE WHEN CUR.strCurrency IS NULL 
				 THEN 0.00 
				 ELSE CASE WHEN TMP.IsCreditNote = 1
						   THEN CASE WHEN ISNULL(HL.fQuantityLineTotInclForeign, 0) > 0 THEN HL.fQuantityLineTotInclForeign * -1 ELSE ISNULL(HL.fQuantityLineTotInclForeign, 0) END
						   ELSE CASE WHEN ISNULL(HL.fQuantityLineTotInclForeign, 0) < 0 THEN HL.fQuantityLineTotInclForeign * -1 ELSE ISNULL(HL.fQuantityLineTotInclForeign, 0) END
					  END 
			END AS decTotIncTaxF, 
			HL.DiscountPercentage AS decLineDiscPerc, 
			CASE WHEN TMP.IsCreditNote = 1
				 THEN CASE WHEN ISNULL(HL.DiscountAmount, 0) < 0 THEN HL.DiscountAmount * -1 ELSE ISNULL(HL.DiscountAmount, 0) END
				 ELSE CASE WHEN ISNULL(HL.DiscountAmount, 0) > 0 THEN HL.DiscountAmount * -1 ELSE ISNULL(HL.DiscountAmount, 0) END
			END AS decLineDiscAmt, 
			CASE WHEN CUR.strCurrency IS NULL 
				 THEN 0.00 
				 ELSE CASE WHEN TMP.IsCreditNote = 1
						   THEN CASE WHEN ISNULL(HL.FCDiscountAmount, 0) < 0 THEN HL.FCDiscountAmount * -1 ELSE ISNULL(HL.FCDiscountAmount, 0) END
						   ELSE CASE WHEN ISNULL(HL.FCDiscountAmount, 0) > 0 THEN HL.FCDiscountAmount * -1 ELSE ISNULL(HL.FCDiscountAmount, 0) END
					  END
			END AS decLineDiscAmtF, 
			CASE WHEN TMP.IsCreditNote = 1 
				 THEN CASE WHEN ISNULL(HL.Qty, 0) > 0 THEN HL.Qty * -1 ELSE ISNULL(HL.Qty, 0) END
				 ELSE CASE WHEN ISNULL(HL.Qty, 0) < 0 THEN HL.Qty * -1 ELSE ISNULL(HL.Qty, 0) END 
			END AS decStockQty, 
			CASE WHEN LTRIM(RTRIM(ISNULL(HL.UnitUsed, ''))) = '' THEN 'EA' ELSE LTRIM(RTRIM(HL.UnitUsed)) END AS strStockUnit, 
			CASE WHEN ISNULL(SP.strSalesName, '') = '' THEN NULL ELSE SP.strSalesName END AS strSalesName,
			CASE WHEN HL.Physical <> 0 
				 THEN CASE WHEN TMP.IsCreditNote = 1 
						   THEN CASE WHEN ISNULL(HL.Qty, 0) > 0 THEN (HL.CostPrice * HL.Qty) * -1 ELSE (HL.CostPrice * ISNULL(HL.Qty, 0)) END
						   ELSE CASE WHEN ISNULL(HL.Qty, 0) < 0 THEN (HL.CostPrice * HL.Qty) * -1 ELSE (HL.CostPrice * ISNULL(HL.Qty, 0)) END 
					  END
				 ELSE 0.00 
			END AS decCOGS,
			ISNULL(HL.CostCode, '') AS strProjNumber
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryLines HL ON TMP.InvoiceID = HL.iinvoiceid  
	INNER JOIN tblUtilityPervHistoryHeader HH ON HL.iinvoiceid = HH.InvoiceID 
	INNER JOIN tblCustomers CUST ON HH.CustomerCode = CUST.strCustName 
	LEFT JOIN tblUtilityTaxCodesMap TAX ON HL.TaxCode = TAX.strTaxCode
	LEFT JOIN tblUtilitySalesPersons SP ON HH.SalesManCode = SP.strCode
	LEFT JOIN tblUtilityCurrency CUR ON HH.CurrencyCode = CUR.strPPCurrency 
	ORDER BY HL.LinkNum

END
ELSE
BEGIN

	INSERT INTO #Temp_DOC (InvDocID, InvDocID_New, IsCreditNote, DocumentType)
	SELECT	DISTINCT
			DocumentNumber AS InvDocID,
			SUBSTRING(CASE WHEN DocumentType = 4
						   THEN CASE WHEN SUBSTRING(LTRIM(RTRIM(DocumentNumber)), 1, 2) = 'CN' 
									 THEN LTRIM(RTRIM(DocumentNumber))
									 ELSE 'CN' + LTRIM(RTRIM(DocumentNumber))
								END
						   ELSE CASE WHEN SUBSTRING(LTRIM(RTRIM(DocumentNumber)), 1, 2) = 'IN' 
									 THEN LTRIM(RTRIM(DocumentNumber))
									 ELSE 'IN' + LTRIM(RTRIM(DocumentNumber))
								END
					  END, 1, 50) AS InvDocID_New,
			CASE WHEN DocumentType = 4 
				 THEN 1 
				 ELSE 0 
			END AS IsCreditNote,
			DocumentType
	FROM tblUtilityPervHistoryHeader
	WHERE DocumentType IN (3, 4)

	SELECT @intHDRTotCount = COUNT(InvDocID_New)
	FROM #Temp_DOC

	SELECT @intDTLTotCount = COUNT(HL.DocumentNumber)
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryLines HL ON TMP.InvDocID = HL.DocumentNumber 

	SELECT @intPROJTotCount = COUNT(HL.DocumentNumber)
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryLines HL ON TMP.InvDocID = HL.DocumentNumber 
	WHERE ISNULL(HL.CostCode, '') <> ''

	DELETE FROM #Temp_DOC
	WHERE InvDocID_New IN (SELECT TMP.InvDocID_New 
						   FROM #Temp_DOC TMP
						   INNER JOIN tblInvoiceDoc DOC ON TMP.InvDocID_New = DOC.strInvDocID)

	INSERT INTO #Temp_HDR (strInvDocID, dteSystemDate, dteJournalDate, dteRequired, strCustName, strSoldTo, strShipTo, strReference, decSubTotal, decVAT, decTotal, 
						   strNotes, strSalesName, strCurrency, bitIsForeign, decSubTotalF, decVATF, decTotalF, decExchange, strTerm, strSubFormated, strVATFormatted, 
						   strTotFormatted, dteField13, dteField14, decDiscPerc, strDiscFormatted, strDeliveryCostFormatted)
	SELECT	DISTINCT
			TMP.InvDocID_New AS strInvDocID,
			HH.DocumentDate AS dteSystemDate, 
			HH.DocumentDate AS dteJournalDate, 
			HH.DocumentDate AS dteRequired,
			SUBSTRING(HH.CustomerCode, 1, 50) AS strCustName,
			SUBSTRING(CASE WHEN LEN(LTRIM(RTRIM(CUST.strCustDesc))) > 0 THEN LTRIM(RTRIM(CUST.strCustDesc)) + Char(13) + Char(10) ELSE '' END
					+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strStreet1))) > 0 THEN LTRIM(RTRIM(CUST.strStreet1)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strStreet2))) > 0 THEN LTRIM(RTRIM(CUST.strStreet2)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strCity))) > 0 THEN LTRIM(RTRIM(CUST.strCity)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strProvince))) > 0 THEN LTRIM(RTRIM(CUST.strProvince)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strPostal))) > 0 THEN LTRIM(RTRIM(CUST.strPostal)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strCountry))) > 0 THEN Char(13) + Char(10) + LTRIM(RTRIM(CUST.strCountry)) ELSE '' END, 1, 500) AS strSoldTo,
			SUBSTRING(CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress01))) > 0 THEN LTRIM(RTRIM(HH.DelAddress01)) + Char(13) + Char(10) ELSE '' END
					+ CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress02))) > 0 THEN LTRIM(RTRIM(HH.DelAddress02)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress03))) > 0 THEN LTRIM(RTRIM(HH.DelAddress03)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress04))) > 0 THEN LTRIM(RTRIM(HH.DelAddress04)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress05))) > 0 THEN LTRIM(RTRIM(HH.DelAddress05)) + Char(13) + Char(10) ELSE '' END, 1, 500) AS strShipTo,
			SUBSTRING(LTRIM(RTRIM(HH.OrderNumber)), 1, 50) AS strReference,
			CASE WHEN TMP.IsCreditNote = 1 THEN HH.Total * -1 ELSE HH.Total END AS decSubTotal,
			CASE WHEN TMP.IsCreditNote = 1 THEN HH.TotalTax * -1 ELSE HH.TotalTax END AS decVAT,
			CASE WHEN TMP.IsCreditNote = 1 THEN (HH.Total + HH.TotalTax) * -1 ELSE HH.Total + HH.TotalTax END AS decTotal,
			SUBSTRING(LTRIM(RTRIM(HH.Message01)) + LTRIM(RTRIM(HH.Message02)) + LTRIM(RTRIM(HH.Message03)), 1, 500) AS strNotes,
			CASE WHEN ISNULL(SP.strSalesName, '') = '' THEN NULL ELSE SP.strSalesName END AS strSalesName,
			CASE WHEN CURH.bitHome = 1 THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
			CASE WHEN CURH.bitHome = 1 THEN 0 ELSE 1 END AS bitIsForeign,
			CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE CASE WHEN TMP.IsCreditNote = 1 THEN HH.FCurrTotal * -1 ELSE HH.FCurrTotal END END AS decSubTotalF,
			CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE CASE WHEN TMP.IsCreditNote = 1 THEN HH.FCurrTotalTax * -1 ELSE HH.FCurrTotalTax END END AS decVATF,
			CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE CASE WHEN TMP.IsCreditNote = 1 THEN (HH.FCurrTotal + HH.FCurrTotalTax) * -1 ELSE HH.FCurrTotal + HH.FCurrTotalTax END END AS decTotalF,
			CASE WHEN CURH.bitHome = 1 THEN 1.00 ELSE HH.ExchangeRate END AS decExchange,
			CASE WHEN TERM.strTerm IS NULL THEN CUST.strTerm ELSE TERM.strTerm END AS strTerm,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CURH.bitHome = 1 THEN CASE WHEN TMP.IsCreditNote = 1 THEN HH.Total * -1 ELSE HH.Total END ELSE CASE WHEN TMP.IsCreditNote = 1 THEN HH.FCurrTotal * -1 ELSE HH.FCurrTotal END END AS nvarchar(50)) AS strSubFormated,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CURH.bitHome = 1 THEN CASE WHEN TMP.IsCreditNote = 1 THEN HH.TotalTax * -1 ELSE HH.TotalTax END ELSE CASE WHEN TMP.IsCreditNote = 1 THEN HH.FCurrTotalTax * -1 ELSE HH.FCurrTotalTax END END AS nvarchar(50)) AS strVATFormatted,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CURH.bitHome = 1 THEN CASE WHEN TMP.IsCreditNote = 1 THEN (HH.Total + HH.TotalTax) * -1 ELSE (HH.Total + HH.TotalTax) END ELSE CASE WHEN TMP.IsCreditNote = 1 THEN (HH.FCurrTotal + HH.FCurrTotalTax) * -1 ELSE (HH.FCurrTotal + HH.FCurrTotalTax) END END AS nvarchar(50)) AS strTotFormatted,
			HH.DocumentDate AS dteField13,
			HH.DocumentDate AS dteField14,
			HH.DiscountPercent AS decDiscPerc,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' 0.00' AS strDiscFormatted,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' 0.00' AS strDeliveryCostFormatted
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryHeader HH ON TMP.InvDocID = HH.DocumentNumber AND TMP.DocumentType = HH.DocumentType 
	INNER JOIN tblCustomers CUST ON HH.CustomerCode = CUST.strCustName 
	LEFT JOIN tblUtilitySalesPersons SP ON HH.SalesManCode = SP.strCode
	LEFT JOIN tblUtilityCurrency CUR ON HH.CurrencyCode = CUR.strPPCurrency 
	LEFT JOIN tblCurrency CURH ON CUST.strCurrency = CURH.strCurrency 
	LEFT JOIN tblUtilityTerms TERM ON HH.Terms = TERM.strPPTerm 
	WHERE HH.DocumentType IN (3, 4) 
	
	INSERT INTO #Temp_DTL (strInvDocID, intLineNo, strPartNumber, strLocation, strPartDesc, decQty, strUnit, intType, decPriceEaExc, decLineTotExc, decLineTaxAmt, 
						   decPriceEaInc, decLineTotInc, strTaxCode, strCurrency, bitIsForeign, decPriceEaExcF, decLineTotExcF, decLineTaxAmtF, decEaIncTaxF, 
						   decTotIncTaxF, decLineDiscPerc, decLineDiscAmt, decLineDiscAmtF, decStockQty, strStockUnit, strSalesName, decCOGS, strProjNumber)
	SELECT	DISTINCT
			TMP.InvDocID_New AS strInvDocID,
			ROW_NUMBER() OVER(PARTITION BY TMP.InvDocID_New ORDER BY HL.ItemCode ASC) AS intLineNo,
			CASE WHEN ISNULL(SUBSTRING(LTRIM(RTRIM(HL.ItemCode)), 1, 50), '') = ''
				 THEN CASE WHEN HL.Physical = 0
						   THEN '<<BLANK-SERV>>'
						   ELSE '<<BLANK-ITEM>>'
					  END
				 ELSE SUBSTRING(LTRIM(RTRIM(HL.ItemCode)), 1, 50)
			END AS strPartNumber,
			CASE WHEN ISNULL(LTRIM(RTRIM(HL.MultiStore)), '') = '' THEN @strLocName ELSE SUBSTRING(LTRIM(RTRIM(HL.MultiStore)), 1, 10) END AS strLocation,
			SUBSTRING(LTRIM(RTRIM(HL.[Description])), 1, 500) AS strPartDesc,
			CASE WHEN TMP.IsCreditNote = 1 
				 THEN CASE WHEN HL.Qty > 0 THEN HL.Qty * -1 ELSE HL.Qty END
				 ELSE CASE WHEN HL.Qty < 0 THEN HL.Qty * -1 ELSE HL.Qty END 
			END AS decQty,
			CASE WHEN LTRIM(RTRIM(ISNULL(HL.UnitUsed, ''))) = '' THEN 'EA' ELSE SUBSTRING(LTRIM(RTRIM(HL.UnitUsed)), 1, 15) END AS strUnit,
			CASE WHEN HL.Physical = 0 THEN 4 ELSE 1 END AS intType,
			CASE WHEN HL.UnitPrice < 0 THEN HL.UnitPrice * -1 ELSE HL.UnitPrice END AS decPriceEaExc,
			CASE WHEN TMP.IsCreditNote = 1
				 THEN CASE WHEN HL.DiscountAmount > 0 THEN HL.DiscountAmount * -1 ELSE HL.DiscountAmount END
				 ELSE CASE WHEN HL.DiscountAmount < 0 THEN HL.DiscountAmount * -1 ELSE HL.DiscountAmount END
			END AS decLineTotExc,
			CASE WHEN TMP.IsCreditNote = 1
				 THEN CASE WHEN HL.TaxAmt > 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END
				 ELSE CASE WHEN HL.TaxAmt < 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END
			END AS decLineTaxAmt,
			CASE WHEN HL.InclusivePrice < 0 THEN HL.InclusivePrice * -1 ELSE HL.InclusivePrice END AS decPriceEaInc,
			CASE WHEN TMP.IsCreditNote = 1
				 THEN CASE WHEN HL.DiscountAmount > 0 THEN HL.DiscountAmount * -1 ELSE HL.DiscountAmount END
				 ELSE CASE WHEN HL.DiscountAmount < 0 THEN HL.DiscountAmount * -1 ELSE HL.DiscountAmount END
			END + CASE WHEN TMP.IsCreditNote = 1 
					   THEN CASE WHEN HL.TaxAmt > 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END
					   ELSE CASE WHEN HL.TaxAmt < 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END
				  END AS decLineTotInc, 
			TAX.strTaxCodeSales AS strTaxCode, 
			CASE WHEN CURH.bitHome = 1 THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
			CASE WHEN CURH.bitHome = 1 THEN 0 ELSE 1 END AS bitIsForeign,
			CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE CASE WHEN HL.FCurrUnitPrice < 0 THEN HL.FCurrUnitPrice * -1 ELSE HL.FCurrUnitPrice END END AS decPriceEaExcF,
			CASE WHEN TMP.IsCreditNote = 1
				 THEN CASE WHEN HL.FCDiscountAmount > 0 THEN HL.FCDiscountAmount * -1 ELSE HL.FCDiscountAmount END
				 ELSE CASE WHEN HL.FCDiscountAmount < 0 THEN HL.FCDiscountAmount * -1 ELSE HL.FCDiscountAmount END
			END AS decLineTotExcF,
			CASE WHEN TMP.IsCreditNote = 1
				 THEN CASE WHEN HL.FCurrTaxAmount > 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END
				 ELSE CASE WHEN HL.FCurrTaxAmount < 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END
			END AS decLineTaxAmtF, 
			CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE CASE WHEN HL.FCurrInclPrice < 0 THEN HL.FCurrInclPrice * -1 ELSE HL.FCurrInclPrice END END AS decEaIncTaxF,
			CASE WHEN TMP.IsCreditNote = 1
				 THEN CASE WHEN HL.FCDiscountAmount > 0 THEN HL.FCDiscountAmount * -1 ELSE HL.FCDiscountAmount END
				 ELSE CASE WHEN HL.FCDiscountAmount < 0 THEN HL.FCDiscountAmount * -1 ELSE HL.FCDiscountAmount END
			END + CASE WHEN TMP.IsCreditNote = 1 
					   THEN CASE WHEN HL.FCurrTaxAmount > 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END
					   ELSE CASE WHEN HL.FCurrTaxAmount < 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END
				  END AS decTotIncTaxF, 
			(HL.DiscountPercentage / 100) AS decLineDiscPerc, 
			0.00 AS decLineDiscAmt,
			0.00 AS decLineDiscAmtF,
			CASE WHEN TMP.IsCreditNote = 1
				 THEN CASE WHEN HL.Qty > 0 THEN HL.Qty * -1 ELSE HL.Qty END
				 ELSE CASE WHEN HL.Qty < 0 THEN HL.Qty * -1 ELSE HL.Qty END 
			END AS decStockQty, 
			CASE WHEN LTRIM(RTRIM(ISNULL(HL.UnitUsed, ''))) = '' THEN 'EA' ELSE SUBSTRING(LTRIM(RTRIM(HL.UnitUsed)), 1, 15) END AS strUnit,
			CASE WHEN ISNULL(SP.strSalesName, '') = '' THEN NULL ELSE SP.strSalesName END AS strSalesName,
			CASE WHEN HL.Physical <> 0 
				 THEN CASE WHEN TMP.IsCreditNote = 1 
						   THEN CASE WHEN HL.Qty > 0 THEN (HL.CostPrice * HL.Qty) * -1 ELSE (HL.CostPrice * HL.Qty) END
						   ELSE CASE WHEN HL.Qty < 0 THEN (HL.CostPrice * HL.Qty) * -1 ELSE (HL.CostPrice * HL.Qty) END 
					  END
				 ELSE 0.00 
			END AS decCOGS,
			ISNULL(HL.CostCode, '') AS strProjNumber
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryLines HL ON TMP.InvDocID = HL.DocumentNumber AND TMP.DocumentType = HL.DocumentType 
	INNER JOIN tblUtilityPervHistoryHeader HH ON HL.DocumentNumber = HH.DocumentNumber AND HL.DocumentType = HH.DocumentType 
	INNER JOIN tblCustomers CUST ON HH.CustomerCode = CUST.strCustName 
	INNER JOIN tblUtilityTaxCodesMap TAX ON CAST(HL.TaxType AS nvarchar(15)) = TAX.strTaxCode
	LEFT JOIN tblUtilitySalesPersons SP ON HH.SalesManCode = SP.strCode
	LEFT JOIN tblUtilityCurrency CUR ON HH.CurrencyCode = CUR.strPPCurrency 
	LEFT JOIN tblCurrency CURH ON CUST.strCurrency = CURH.strCurrency 
	WHERE (HL.SearchType IN (4, 6, 7))
	AND (LTRIM(RTRIM(HL.ItemCode)) <> '''')

END

INSERT INTO tblInvoiceDoc (strInvDocID, lngInvTrackID, lngJourID, dteSystemDate, dteJournalDate, dteRequired, strUserName, strCustName, strSoldTo, strShipTo, 
							strReference, decSubTotal, decVAT, decTotal, bitFromSO, strOrdDocID, bitHistoryTrans, strNotes, bitPrinted, bitEmailed, intPaidBy, 
							intAccount, strSalesName, strAddInfo, bitReserved, strCurrency, bitIsForeign, decSubTotalF, decVATF, decTotalF, decExchange, strTerm, 
							intDept, strField1, strField2, strField3, strField4, strField5, strField6, strField7, strField8, strField9, strField10, strField11, 
							strField12, strSubFormated, strVATFormatted, strTotFormatted, dteField13, dteField14, decDiscPerc, decDiscAmt, decDiscAmtF, 
							strDiscFormatted, strOrdFQDocID, strStatusTypeCode, strCNReasonCode, bitBookmark, dteSystemDateTime, strPaidBy, intSentDoc, strVAT, 
							strDelMethodCode, decTotalWeight, decTotalVolWeight, decDeliveryCost, decDeliveryCostF, strDeliveryCostFormatted, bitShipmentsAuditTrail, 
							intRevisionNumber, strStoreNumber, strEDI, bitNoPODRequired, intSalesAccrualProcess, bitIsFromWorkshop, bitNewsSubscribed, strEmail, 
							intDocumentSourceModules, strLPO)
SELECT	strInvDocID,
		NULL AS lngInvTrackID,
		NULL AS lngJourID,
		dteSystemDate, 
		dteJournalDate, 
		dteRequired,
		@UserName AS strUserName,
		strCustName,
		strSoldTo,
		strShipTo,
		strReference,
		decSubTotal,
		decVAT,
		decTotal,
		0 AS bitFromSO,
		NULL AS strOrdDocID,
		0 AS bitHistoryTrans,
		strNotes,
		1 AS bitPrinted,
		1 AS bitEmailed,
		0 AS intPaidBy,
		NULL AS intAccount,
		strSalesName,
		'' AS strAddInfo,
		0 AS bitReserved,
		strCurrency,
		bitIsForeign,
		decSubTotalF,
		decVATF,
		decTotalF,
		decExchange,
		strTerm,
		NULL AS intDept,
		'' AS strField1,
		'' AS strField2,
		'' AS strField3,
		'' AS strField4,
		'' AS strField5,
		'' AS strField6,
		'' AS strField7,
		'' AS strField8,
		'' AS strField9,
		'' AS strField10,
		'' AS strField11,
		'' AS strField12,
		strSubFormated,
		strVATFormatted,
		strTotFormatted,
		dteField13,
		dteField14,
		decDiscPerc,
		0.00 AS decDiscAmt,
		0.00 AS decDiscAmtF,
		strDiscFormatted,
		NULL AS strOrdFQDocID,
		NULL AS strStatusTypeCode,
		NULL AS strCNReasonCode,
		0 AS bitBookmark,
		GETDATE() AS dteSystemDateTime,
		'On Account' AS strPaidBy,
		0 AS intSentDoc,
		'' AS strVAT,
		NULL AS strDelMethodCode,
		0.00 AS decTotalWeight,
		0.00 AS decTotalVolWeight,
		0.00 AS decDeliveryCost,
		0.00 AS decDeliveryCostF,
		strDeliveryCostFormatted,
		0 AS bitShipmentsAuditTrail,
		1 AS intRevisionNumber,
		NULL AS strStoreNumber,
		NULL AS strEDI,
		0 AS bitNoPODRequired,
		1 AS intSalesAccrualProcess,
		0 AS bitIsFromWorkshop,
		NULL AS bitNewsSubscribed,
		NULL AS strEmail,
		NULL AS intDocumentSourceModules,
		'' AS strLPO
FROM #Temp_HDR
ORDER BY lngID 

SELECT @intHDRRecCount = @@ROWCOUNT

INSERT INTO tblInvoiceDocDT (strInvDocID, intLineNo, strPartNumber, strLocation, strPartDesc, decQty, strUnit, intType, decPriceEaExc, decLineTotExc, 
								decLineTaxAmt, decPriceEaInc, decLineTotInc, strTaxCode, imgTaxObj, strCurrency, bitIsForeign, decPriceEaExcF, decLineTotExcF, 
								decLineTaxAmtF, decEaIncTaxF, decTotIncTaxF, strInvField1, strInvField2, strInvField3, strInvField4, strInvField5, strInvField6, 
								strLineField1, strLineField2, strLineField3, strLineField4, strLineField5, strLineField6, strLineField7, strLineField8, 
								strLineField9, strLineField10, strLineField11, strLineField12, decLineDiscPerc, decLineDiscAmt, decLineDiscAmtF, bitDiscountTax, 
								decStockQty, strStockUnit, decStandardCost, decLastPPUnit, strSalesName, decCOGS, decSOQty, decSOQtyRemain, strPartExtendedDesc, 
								decItemWeight, decVolumetricWeight, bitContainerItem, bitDelCost, intBillingMethod, uidTransactionFieldID, uidContainerItem, 
								decUsedQty, bitFrom, strOrdDADocID, intDALineNo, bitFromGRV, strGRVDocNum, intGRVLineNo, blnIsCashPrice)
SELECT	strInvDocID,
		intLineNo,
		strPartNumber,
		strLocation,
		strPartDesc,
		decQty,
		strUnit,
		intType,
		decPriceEaExc,
		decLineTotExc,
		decLineTaxAmt,
		decPriceEaInc, 
		decLineTotInc, 
		strTaxCode, 
		NULL AS imgTaxObj, 
		strCurrency,
		bitIsForeign,
		decPriceEaExcF,
		decLineTotExcF,
		decLineTaxAmtF, 
		decEaIncTaxF, 
		decTotIncTaxF, 
		'' AS strInvField1, 
		'' AS strInvField2, 
		'' AS strInvField3, 
		'' AS strInvField4, 
		'' AS strInvField5, 
		'' AS strInvField6,
		'' AS strLineField1, 
		'' AS strLineField2, 
		'' AS strLineField3, 
		'' AS strLineField4, 
		'' AS strLineField5, 
		'' AS strLineField6, 
		'' AS strLineField7, 
		'' AS strLineField8,
		'' AS strLineField9, 
		'' AS strLineField10, 
		'' AS strLineField11, 
		'' AS strLineField12, 
		decLineDiscPerc, 
		decLineDiscAmt, 
		decLineDiscAmtF, 
		0 AS bitDiscountTax,
		decStockQty, 
		strStockUnit, 
		0.00 AS decStandardCost, 
		0.00 AS decLastPPUnit, 
		strSalesName,
		decCOGS, 
		0.00 AS decSOQty, 
		0.00 AS decSOQtyRemain, 
		'' AS strPartExtendedDesc,
		0.00 AS decItemWeight, 
		0.00 AS decVolumetricWeight, 
		0 AS bitContainerItem, 
		0 AS bitDelCost, 
		0 AS intBillingMethod, 
		NEWID() AS uidTransactionFieldID, 
		NULL AS uidContainerItem, 
		0.00 AS decUsedQty, 
		0 AS bitFrom, 
		NULL AS strOrdDADocID, 
		NULL AS intDALineNo, 
		0 AS bitFromGRV, 
		NULL AS strGRVDocNum, 
		NULL AS intGRVLineNo, 
		0 AS blnIsCashPrice
FROM #Temp_DTL
ORDER BY lngID

SELECT @intDTLRecCount = @@ROWCOUNT

IF EXISTS (SELECT TOP 1 strInvDocID FROM #Temp_DTL WHERE strProjNumber <> '')
BEGIN

	INSERT INTO tblInvoiceDocDTPrj (strInvDocID, intLineNo, strProjNumber, strStage) 
	SELECT	DTL.strInvDocID,
			DTL.intLineNo,
			DTL.strProjNumber,
			'' AS strStage
	FROM #Temp_DTL DTL
	INNER JOIN tblProjects PROJ ON DTL.strProjNumber = PROJ.strProjNumber 
	WHERE DTL.strProjNumber <> ''
	ORDER BY DTL.lngID

	SELECT @intPROJRecCount = @@ROWCOUNT 

END

IF NOT EXISTS (SELECT TOP 1 lngEntID FROM tblInvoiceDocRev)
BEGIN

	UPDATE #Temp_HDR 
	SET lngEntID = lngID 

END
ELSE
BEGIN

	SELECT @lngEntID = MAX(lngEntID) FROM tblInvoiceDocREV

	UPDATE #Temp_HDR 
	SET lngEntID = lngID + @lngEntID

END

INSERT INTO tblInvoiceDocREV (lngEntID, strInvDocID, lngInvTrackID, lngJourID, dteSystemDate, dteJournalDate, dteRequired, strUsername, strCustName, strSoldTo, 
								strShipTo, strReference, decSubTotal, decVAT, decTotal, bitFromSO, bitHistoryTrans, strNotes, bitPrinted, bitEmailed, intPaidBy, 
								intAccount, strSalesName, strAddInfo, bitReserved, strCurrency, bitIsForeign, decSubTotalF, decVATF, decTotalF, decExchange, strTerm, 
								intDept, strField1, strField2, strField3, strField4, strField5, strField6, strField7, strField8, strField9, strField10, strField11, 
								strField12, strSubFormated, strVATFormatted, strTotFormatted, dteField13, dteField14, decDiscPerc, decDiscAmt, decDiscAmtF, 
								strDiscFormatted, strOrdFQDocID, strStatusTypeCode, strCNReasonCode, bitBookmark, dteSystemDateTime, strPaidBy, intSentDoc, strVAT, 
								strDelMethodCode, decTotalWeight, decTotalVolWeight, decDeliveryCost, decDeliveryCostF, strDeliveryCostFormatted, strOrdDocID, 
								intRevisionNumber, dteRevisionDate, strUserCreated, bitIsRepair, strVendName, strBoughtFrom, bitFQConvert, bitSOCopy, bitSOCopyMulti, 
								strVendInvNo, bitFromPO, decNetItemWeight, decNetVolumetricWeight, strSourceMOP, bitCleared, strOrdRFQDocID, bitRFQConvert, strOrdPDocID, 
								intModule, strSOReasonCode, strDelNoteNo, strContractTo, strContBillType, blnAllowAnnualIncrease, intContractPriceIncrease, 
								dtpIncreaseStartDate, bitInactive, strStoreNumber, strEDI) 
SELECT	HDR.lngEntID,
		HDR.strInvDocID,
		NULL AS lngInvTrackID,
		NULL AS lngJourID,
		HDR.dteSystemDate,
		HDR.dteJournalDate,
		HDR.dteRequired,
		@UserName AS strUserName,
		HDR.strCustName,
		HDR.strSoldTo,
		HDR.strShipTo,
		HDR.strReference,
		HDR.decSubTotal,
		HDR.decVAT,
		HDR.decTotal,
		0 AS bitFromSO,
		0 AS bitHistoryTrans,
		HDR.strNotes,
		1 AS bitPrinted,
		1 AS bitEmailed,
		0 AS intPaidBy,
		NULL AS intAccount,
		HDR.strSalesName,
		'' AS strAddInfo,
		0 AS bitReserved,
		HDR.strCurrency,
		HDR.bitIsForeign,
		HDR.decSubTotalF,
		HDR.decVATF,
		HDR.decTotalF,
		HDR.decExchange,
		HDR.strTerm,
		NULL AS intDept,
		'' AS strField1,
		'' AS strField2,
		'' AS strField3,
		'' AS strField4,
		'' AS strField5,
		'' AS strField6,
		'' AS strField7,
		'' AS strField8,
		'' AS strField9,
		'' AS strField10,
		'' AS strField11,
		'' AS strField12,
		HDR.strSubFormated,
		HDR.strVATFormatted,
		HDR.strTotFormatted,
		HDR.dteField13,
		HDR.dteField14,
		HDR.decDiscPerc,
		0.00 AS decDiscAmt,
		0.00 AS decDiscAmtF,
		HDR.strDiscFormatted,
		NULL AS strOrdFQDocID,
		NULL AS strStatusTypeCode,
		NULL AS strCNReasonCode,
		0 AS bitBookmark,
		GETDATE() AS dteSystemDateTime,
		'On Account' AS strPaidBy,
		0 AS intSentDoc,
		'' AS strVAT,
		NULL AS strDelMethodCode,
		0.00 AS decTotalWeight,
		0.00 AS decTotalVolWeight,
		0.00 AS decDeliveryCost,
		0.00 AS decDeliveryCostF,
		HDR.strDeliveryCostFormatted, 
		NULL AS strOrdDocID,
		1 AS intRevisionNumber,
		HDR.dteSystemDate AS dteRevisionDate,
		@UserName AS strUserCreated,
		NULL AS bitIsRepair,
		NULL AS strVendName,
		NULL AS strBoughtFrom,
		NULL AS bitFQConvert,
		NULL AS bitSOCopy,
		NULL AS bitSOCopyMulti,
		NULL AS strVendInvNo,
		NULL AS bitFromPO,
		NULL AS decNetItemWeight,
		NULL AS decNetVolumetricWeight,
		NULL AS strSourceMOP,
		NULL AS bitCleared,
		NULL AS strOrdRFQDocID,
		NULL AS bitRFQConvert,
		NULL AS strOrdPDocID,
		CASE WHEN DOC.IsCreditNote = 1 THEN 7 ELSE 1 END AS intModule,
		NULL AS strSOReasonCode,
		NULL AS strDelNoteNo,
		NULL AS strContractTo,
		NULL AS strContBillType,
		NULL AS blnAllowAnnualIncrease,
		NULL AS intContractPriceIncrease,
		NULL AS dtpIncreaseStartDate,
		NULL AS bitInactive,
		NULL AS strStoreNumber,
		NULL AS strEDI
FROM #Temp_DOC DOC
INNER JOIN #Temp_HDR HDR ON DOC.InvDocID_New = HDR.strInvDocID
ORDER BY HDR.lngID 

SELECT @intREVHDRRecCount = @@ROWCOUNT 

INSERT INTO tblInvoiceDocREVDT (lngEntID, strInvDocID, intLineNo, strPartNumber, strLocation, strPartDesc, decQty, strUnit, intType, decPriceEaExc, decLineTotExc, 
								decLineTaxAmt, decPriceEaInc, decLineTotInc, strTaxCode, imgTaxObj, strCurrency, bitIsForeign, decPriceEaExcF, decLineTotExcF, 
								decLineTaxAmtF, decEaIncTaxF, decTotIncTaxF, strInvField1, strInvField2, strInvField3, strInvField4, strInvField5, strInvField6, 
								strLineField1, strLineField2, strLineField3, strLineField4, strLineField5, strLineField6, strLineField7, strLineField8, strLineField9, 
								strLineField10, strLineField11, strLineField12, decLineDiscPerc, decLineDiscAmt, decLineDiscAmtF, bitDiscountTax, decStockQty, 
								strStockUnit, decStandardCost, decLastPPUnit, strSalesName, decCOGS, decSOQty, decSOQtyRemain, strPartExtendedDesc, decItemWeight, 
								decVolumetricWeight, bitContainerItem, decBuyQty, decBuyQtyRemain, strBuyUnit, decEaIncTax, decTotIncTax, strOrdSODocID, 
								decStockQtyRemain, decBuyoutCost, decQtyRemaining, intStatus, uidTransactionFieldID, strContBillType, blnAllowAnnualIncrease, 
								intContractPriceIncrease, dtpIncreaseStartDate, dtpSetUpDate, dtpActivationDate, dtpTerminationDate, dtpExpirationDate, 
								dtpBillingSchduleStart, strBillingFrequncy, dtpLastBillDate, dtpNextBillDate, dtpNextInvoiceDate, decUsedQty) 
SELECT	HDR.lngEntID, 
		DTL.strInvDocID, 
		DTL.intLineNo, 
		DTL.strPartNumber, 
		DTL.strLocation, 
		DTL.strPartDesc, 
		DTL.decQty, 
		DTL.strUnit, 
		DTL.intType, 
		DTL.decPriceEaExc, 
		DTL.decLineTotExc, 
		DTL.decLineTaxAmt, 
		DTL.decPriceEaInc, 
		DTL.decLineTotInc, 
		DTL.strTaxCode, 
		NULL AS imgTaxObj, 
		DTL.strCurrency, 
		DTL.bitIsForeign, 
		DTL.decPriceEaExcF, 
		DTL.decLineTotExcF, 
		DTL.decLineTaxAmtF, 
		DTL.decEaIncTaxF, 
		DTL.decTotIncTaxF, 
		'' AS strInvField1, 
		'' AS strInvField2, 
		'' AS strInvField3, 
		'' AS strInvField4, 
		'' AS strInvField5, 
		'' AS strInvField6,
		'' AS strLineField1, 
		'' AS strLineField2, 
		'' AS strLineField3, 
		'' AS strLineField4, 
		'' AS strLineField5, 
		'' AS strLineField6, 
		'' AS strLineField7, 
		'' AS strLineField8,
		'' AS strLineField9, 
		'' AS strLineField10, 
		'' AS strLineField11, 
		'' AS strLineField12, 
		DTL.decLineDiscPerc, 
		DTL.decLineDiscAmt, 
		DTL.decLineDiscAmtF, 
		0 AS bitDiscountTax,
		DTL.decStockQty, 
		DTL.strStockUnit, 
		0.00 AS decStandardCost, 
		0.00 AS decLastPPUnit, 
		DTL.strSalesName, 
		DTL.decCOGS, 
		0.00 AS decSOQty, 
		0.00 AS decSOQtyRemain, 
		'' AS strPartExtendedDesc,
		0.00 AS decItemWeight, 
		0.00 AS decVolumetricWeight, 
		0 AS bitContainerItem, 
		NULL AS decBuyQty, 
		NULL AS decBuyQtyRemain, 
		NULL AS strBuyUnit, 
		NULL AS decEaIncTax, 
		NULL AS decTotIncTax, 
		NULL AS strOrdSODocID, 
		NULL AS decStockQtyRemain, 
		NULL AS decBuyoutCost, 
		NULL AS decQtyRemaining, 
		1 AS intStatus, 
		NEWID() AS uidTransactionFieldID, 
		NULL AS strContBillType, 
		NULL AS blnAllowAnnualIncrease, 
		NULL AS intContractPriceIncrease, 
		NULL AS dtpIncreaseStartDate, 
		NULL AS dtpSetUpDate, 
		NULL AS dtpActivationDate, 
		NULL AS dtpTerminationDate, 
		NULL AS dtpExpirationDate, 
		NULL AS dtpBillingSchduleStart, 
		NULL AS strBillingFrequncy, 
		NULL AS dtpLastBillDate, 
		NULL AS dtpNextBillDate, 
		NULL AS dtpNextInvoiceDate, 
		NULL AS decUsedQty
FROM #Temp_HDR HDR
INNER JOIN #Temp_DTL DTL ON HDR.strInvDocID = DTL.strInvDocID 
ORDER BY DTL.lngID

SELECT @intREVDTLRecCount = @@ROWCOUNT 

DROP TABLE #Temp_DOC
DROP TABLE #Temp_HDR
DROP TABLE #Temp_DTL

SELECT	@intHDRTotCount AS intHDRTotCount, @intHDRRecCount AS intHDRRecCount, @intDTLTotCount AS intDTLTotCount, @intDTLRecCount AS intDTLRecCount, 
		@intPROJTotCount AS intPROJTotCount, @intPROJRecCount AS intPROJRecCount, @intREVHDRRecCount AS intREVHDRRecCount, @intREVDTLRecCount AS intREVDTLRecCount
GO

/****** Object:  StoredProcedure [dbo].[prConv_OpenItemCustomers_Insert]    Script Date: 2021-01-26 ******/
----------------------------------------------------
CREATE PROCEDURE [dbo].[prConv_OpenItemCustomers_Insert]
(
@Evo bit,
@UserName nvarchar(20),
@TransTypeHDR tinyint,
@TransTypeDTL tinyint
)
AS
DECLARE @strCurrency nvarchar(3),	
@intHDRTotCount bigint = 0,
@intHDRRecCount bigint = 0,
@intCUSTRecCount bigint = 0,
@lngCustTrID bigint = 0
SELECT @strCurrency = strCurrency FROM tblCurrency WHERE bitHome = 1
CREATE TABLE #Temp_Doc (
[lngID] [bigint] IDENTITY(1,1) NOT NULL,
[InvDocID] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[OIBalance] [money] NOT NULL,
[OICurrBalance] [money] NOT NULL,
[CSCode] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[MatchRef] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[dDate] [datetime] NOT NULL,
[UseLocalCurrency] [bit] NOT NULL,
[IsForeign] [bit] NOT NULL,
[lngCustTrID] [bigint] NULL)
IF @Evo = 1
BEGIN

	INSERT INTO #Temp_Doc (InvDocID, OIBalance, OICurrBalance, CSCode, MatchRef, dDate, UseLocalCurrency, IsForeign)
	SELECT	Z.InvDocID,
			Z.OIBalance,
			Z.OICurrBalance,
			Z.CSCode,
			Z.MatchRef,
			Z.dDate,
			Z.UseLocalCurrency,
			Z.IsForeign 
	FROM (SELECT	SUBSTRING('OPEN ITEM (' + OI.Account + ' - ' + LTRIM(RTRIM(ISNULL(OI.MatchRef, ''))) + ')', 1, 46) AS InvDocID,
					ISNULL(OI.AccountBalance, 0) AS OIBalance,
					ISNULL(OI.AccountBalanceForeign, 0) AS OICurrBalance,
					OI.Account AS CSCode,
					LTRIM(RTRIM(ISNULL(OI.MatchRef, ''))) AS MatchRef, 
					OI.dDate, 
					0 AS UseLocalCurrency,
					CASE WHEN ISNULL(OI.AccountBalance, 0) <> ISNULL(OI.AccountBalanceForeign, 0) AND CUST.strCurrency <> @strCurrency THEN 1 ELSE 0 END AS IsForeign
			FROM tblUtilityPervOpenItem OI
			LEFT JOIN tblUtilityPervCustomerMaster CM ON OI.Account = CM.CustomerCode 
			LEFT JOIN tblCustomers CUST ON OI.Account = CUST.strCustName 
			WHERE (OI.DC = 'D')
			AND (ISNULL(OI.AccountBalance, 0) <> 0 OR ISNULL(OI.AccountBalanceForeign, 0) <> 0)
			AND (CM.BFOpenType = 0)
			UNION ALL
			SELECT	SUBSTRING('OPEN ITEM (' + OI.Account + ' - Balance Forward)', 1, 46) AS InvDocID,
					SUM(ISNULL(OI.AccountBalance, 0)) AS OIBalance,
					SUM(ISNULL(OI.AccountBalanceForeign, 0)) AS OICurrBalance,
					OI.Account AS CSCode,
					'Balance Forward' AS MatchRef, 
					MAX(OI.dDate) AS dDate, 
					0 AS UseLocalCurrency,
					CASE WHEN SUM(ISNULL(OI.AccountBalance, 0)) <> SUM(ISNULL(OI.AccountBalanceForeign, 0)) AND CUST.strCurrency <> @strCurrency THEN 1 ELSE 0 END AS IsForeign
			FROM tblUtilityPervOpenItem OI
			LEFT JOIN tblUtilityPervCustomerMaster CM ON OI.Account = CM.CustomerCode 
			LEFT JOIN tblCustomers CUST ON OI.Account = CUST.strCustName 
			WHERE (OI.DC = 'D')
			AND (ISNULL(OI.AccountBalance, 0) <> 0 OR ISNULL(OI.AccountBalanceForeign, 0) <> 0)
			AND (CM.BFOpenType = 1)
			GROUP BY OI.Account,
					 CUST.strCurrency) Z
	ORDER BY Z.CSCode, 
			 Z.dDate, 
			 Z.MatchRef

END
ELSE
BEGIN

	INSERT INTO #Temp_Doc (InvDocID, OIBalance, OICurrBalance, CSCode, MatchRef, dDate, UseLocalCurrency, IsForeign)
	SELECT	SUBSTRING('OPEN ITEM (' + LTRIM(RTRIM(Z.CSCode)) + ' - ' + LTRIM(RTRIM(Z.MatchRef)) + ')', 1, 47) AS InvDocID,
			Z.OIBalance, 
			Z.OICurrBalance, 
			LTRIM(RTRIM(Z.CSCode)) AS CSCode, 
			LTRIM(RTRIM(Z.MatchRef)) AS MatchRef, 
			Z.dDate, 
			Z.UseLocalCurrency,
			CASE WHEN OIBalance <> OICurrBalance AND UseLocalCurrency = 0 AND CUST.strCurrency <> @strCurrency THEN 1 ELSE 0 END AS IsForeign
	FROM (SELECT ROUND(SUM(Amount),2) AS OIBalance, 
				 ROUND(SUM(CurrAmt),2) AS OICurrBalance, 
				 CSCode, 
				 CASE WHEN LTRIM(RTRIM(MatchRef)) = '' THEN LTRIM(RTRIM(Ref)) ELSE LTRIM(RTRIM(MatchRef)) END AS MatchRef, 
				 ISNULL((SELECT MAX(OI.dDate) 
						 FROM tblUtilityPervOpenItem OI 
						 WHERE OI.DC = 'D' 
						 AND OI.BatchID = 0 
						 AND OI.PPeriod <> 13 
						 AND OI.CSCode = tblUtilityPervOpenItem.CSCode 
						 AND LTRIM(RTRIM(OI.Ref)) = CASE WHEN LTRIM(RTRIM(tblUtilityPervOpenItem.MatchRef)) = '' 
														 THEN LTRIM(RTRIM(tblUtilityPervOpenItem.Ref)) 
														 ELSE LTRIM(RTRIM(tblUtilityPervOpenItem.MatchRef)) 
													END), '') AS dDate, 
				 0 AS UseLocalCurrency 
		  FROM tblUtilityPervOpenItem 
		  WHERE CSCode IN (SELECT CSCode 
						   FROM tblUtilityPervOpenItem 
						   WHERE DC = 'D' 
						   AND BatchID = 0 
						   AND PPeriod <> 13 
						   GROUP BY CSCode 
						   HAVING ROUND(SUM(CurrAmt), 2) <> 0 
						   OR ROUND(SUM(Amount), 2) <> 0) 
		  AND DC = 'D' 
		  AND BatchID = 0 
		  AND PPeriod <> 13 
		  GROUP BY CSCode, 
				   CASE WHEN LTRIM(RTRIM(MatchRef)) = '' 
						THEN LTRIM(RTRIM(Ref)) 
						ELSE LTRIM(RTRIM(MatchRef)) 
				   END 
		  HAVING ROUND(SUM(Amount), 2) <> 0 
		  OR ROUND(SUM(CurrAmt), 2) <> 0 
		  UNION ALL 
		  SELECT ROUND(SUM(CurrAmt),2) AS OIBalance, 
				 ROUND(SUM(Amount),2) AS OICurrBalance, 
				 AccNumber AS CSCode, 
				 Refrence + '-CA' AS MatchRef, 
				 dDate, 
				 1 AS UseLocalCurrency 
		  FROM tblUtilityPervLedgerTransactions 
		  WHERE GDC = 'D' 
		  AND PPeriod <> 13 
		  AND UPPER([Description]) = 'CURRENCY ADJUSTMENT' 
		  AND CurrCode = 0 
		  GROUP BY AccNumber, 
				   Refrence, 
				   dDate 
		  HAVING ROUND(SUM(CurrAmt), 2) <> 0 
		  OR ROUND(SUM(Amount), 2) <> 0 
		  UNION ALL 
		  SELECT SUM(BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + BalanceThis05 + BalanceThis06 + BalanceThis07 + BalanceThis08 + BalanceThis09 + BalanceThis10 + 
					 BalanceThis11 + BalanceThis12 + BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + BalanceLast07 + BalanceLast08 + 
					 BalanceLast09 + BalanceLast10 + BalanceLast11 + BalanceLast12) AS OIBalance, 
				 SUM(BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + BalanceThis05 + BalanceThis06 + BalanceThis07 + BalanceThis08 + BalanceThis09 + BalanceThis10 + 
					 BalanceThis11 + BalanceThis12 + BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + BalanceLast07 + BalanceLast08 + 
					 BalanceLast09 + BalanceLast10 + BalanceLast11 + BalanceLast12) AS OICurrBalance, 
				 CustomerCode AS CSCode, 
				 'Balance Forward' AS MatchRef, 
				 LastCrDate AS dDate, 
				 0 AS UseLocalCurrency 
		  FROM tblUtilityPervCustomerMaster 
		  WHERE OpenItem = 0 
		  GROUP BY CustomerCode, 
				   LastCrDate 
		  HAVING SUM(BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + BalanceThis05 + BalanceThis06 + BalanceThis07 + BalanceThis08 + BalanceThis09 + BalanceThis10 + 
					 BalanceThis11 + BalanceThis12 + BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + BalanceLast07 + BalanceLast08 + 
					 BalanceLast09 + BalanceLast10 + BalanceLast11 + BalanceLast12) <> 0) Z 
	LEFT JOIN tblCustomers CUST ON Z.CSCode = CUST.strCustName 
	ORDER BY Z.CSCode, 
			 Z.dDate, 
			 Z.MatchRef

END
UPDATE #Temp_DOC
SET InvDocID = SUBSTRING(CASE WHEN Z.lngDuplicate = 1 THEN #Temp_DOC.InvDocID ELSE #Temp_DOC.InvDocID + '_' + CAST(Z.lngDuplicate AS nvarchar) END, 1, 50)
FROM (SELECT lngID,
ROW_NUMBER() OVER(PARTITION BY #Temp_DOC.InvDocID ORDER BY #Temp_DOC.InvDocID ASC) AS lngDuplicate
FROM #Temp_DOC) Z
WHERE (#Temp_DOC.lngID = Z.lngID)
SELECT @intHDRTotCount = COUNT(InvDocID)
FROM #Temp_Doc
DELETE FROM #Temp_Doc
WHERE lngID IN (SELECT TMP.lngID  
FROM #Temp_Doc TMP
INNER JOIN tblInvoiceDoc HDR ON TMP.CSCode = HDR.strCustName 
AND TMP.InvDocID = HDR.strInvDocID 
WHERE HDR.strNotes = 'Conversion Transaction')
INSERT INTO tblInvoiceDoc (strInvDocID, lngInvTrackID, lngJourID, dteSystemDate, dteJournalDate, dteRequired, strUserName, strCustName, strSoldTo, strShipTo, 
strReference, decSubTotal, decVAT, decTotal, bitFromSO, strOrdDocID, bitHistoryTrans, strNotes, bitPrinted, bitEmailed, intPaidBy, 
intAccount, strSalesName, strAddInfo, bitReserved, strCurrency, bitIsForeign, decSubTotalF, decVATF, decTotalF, decExchange, strTerm, 
intDept, strField1, strField2, strField3, strField4, strField5, strField6, strField7, strField8, strField9, strField10, strField11, 
strField12, strSubFormated, strVATFormatted, strTotFormatted, dteField13, dteField14, decDiscPerc, decDiscAmt, decDiscAmtF, 
strDiscFormatted, strOrdFQDocID, strStatusTypeCode, strCNReasonCode, bitBookmark, dteSystemDateTime, strPaidBy, intSentDoc, strVAT, 
strDelMethodCode, decTotalWeight, decTotalVolWeight, decDeliveryCost, decDeliveryCostF, strDeliveryCostFormatted, bitShipmentsAuditTrail, 
intRevisionNumber, strStoreNumber, strEDI, bitNoPODRequired, intSalesAccrualProcess, bitIsFromWorkshop, bitNewsSubscribed, strEmail, 
intDocumentSourceModules, strLPO)
SELECT	DOC.InvDocID AS strInvDocID,
NULL AS lngInvTrackID,
NULL AS lngJourID,
GETDATE() AS dteSystemDate,
DOC.dDate AS dteJournalDate, 
DOC.dDate AS dteRequired, 
@UserName AS strUserName, 
SUBSTRING(LTRIM(RTRIM(DOC.CSCode)), 1, 50) AS strCustName, 
'' AS strSoldTo, 
'' AS strShipTo,
'' AS strReference, 
DOC.OIBalance AS decSubTotal, 
0.00 AS decVAT, 
DOC.OIBalance AS decTotal, 
0 AS bitFromSO, 
NULL AS strOrdDocID, 
1 AS bitHistoryTrans, 
'Conversion Transaction' AS strNotes, 
1 AS bitPrinted, 
1 AS bitEmailed, 
0 AS intPaidBy,
NULL AS intAccount, 
NULL AS strSalesName, 
'' AS strAddInfo, 
0 AS bitReserved, 
CASE WHEN DOC.IsForeign = 0 THEN @strCurrency ELSE CUST.strCurrency END AS strCurrency, 
DOC.IsForeign AS bitIsForeign, 
CASE WHEN DOC.IsForeign = 0 THEN 0.00 ELSE DOC.OICurrBalance END AS decSubTotalF, 
0.00 AS decVATF, 
CASE WHEN DOC.IsForeign = 0 THEN 0.00 ELSE DOC.OICurrBalance END AS decTotalF, 
CASE WHEN DOC.IsForeign = 0 
THEN 1.000000 
ELSE CASE WHEN DOC.OIBalance = 0 OR DOC.OICurrBalance = 0 
THEN 1.000000 
ELSE ROUND(DOC.OIBalance / DOC.OICurrBalance, 4) 
END 
END AS decExchange, 
CUST.strTerm,
NULL AS intDept,
'' AS strField1,
'' AS strField2,
'' AS strField3,
'' AS strField4,
'' AS strField5,
'' AS strField6,
'' AS strField7,
'' AS strField8,
'' AS strField9,
'' AS strField10,
'' AS strField11,
'' AS strField12,
CUR.strCurrSymbol + ' ' + CAST(CASE WHEN DOC.IsForeign = 0 THEN DOC.OICurrBalance ELSE DOC.OICurrBalance END AS nvarchar(50)) AS strSubFormated,
CUR.strCurrSymbol + ' ' + CAST(0.00 AS nvarchar(50)) AS strVATFormatted,
CUR.strCurrSymbol + ' ' + CAST(CASE WHEN DOC.IsForeign = 0 THEN DOC.OICurrBalance ELSE DOC.OICurrBalance END AS nvarchar(50)) AS strTotFormatted,
DOC.dDate AS dteField13, 
DOC.dDate AS dteField14, 
0.00 AS decDiscPerc, 
0.00 AS decDiscAmt, 
0.00 AS decDiscAmtF,
'' AS strDiscFormatted, 
NULL AS strOrdFQDocID,
NULL AS strStatusTypeCode,
NULL AS strCNReasonCode,
0 AS bitBookmark,
GETDATE() AS dteSystemDateTime, 
CASE WHEN ISNULL(TERM.bitCOD, 0) = 1 THEN 'Cash' ELSE 'On Account' END AS strPaidBy, 
0 AS intSentDoc,
'' AS strVAT,
NULL AS strDelMethodCode,
0.00 AS decTotalWeight,
0.00 AS decTotalVolWeight,
0.00 AS decDeliveryCost,
0.00 AS decDeliveryCostF,
CUR.strCurrSymbol + ' ' + CAST(0.00 AS nvarchar(50)) AS strDeliveryCostFormatted,
0 AS bitShipmentsAuditTrail,
1 AS intRevisionNumber,
NULL AS strStoreNumber,
NULL AS strEDI,
0 AS bitNoPODRequired,
1 AS intSalesAccrualProcess,
0 AS bitIsFromWorkshop,
NULL AS bitNewsSubscribed,
NULL AS strEmail,
NULL AS intDocumentSourceModules,
'' AS strLPO
FROM #Temp_Doc DOC
INNER JOIN tblCustomers CUST ON DOC.CSCode = CUST.strCustName
INNER JOIN tblCurrency CUR ON CUST.strCurrency = CUR.strCurrency 
LEFT JOIN tblTerms TERM ON CUST.strTerm = TERM.strTerm 
ORDER BY DOC.lngID 
SELECT @intHDRRecCount = @@ROWCOUNT
SELECT @lngCustTrID = ISNULL(MAX(lngCustTrID), 0) FROM tblCustTrans
UPDATE #Temp_Doc
SET lngCustTrID = Z.lngCustTrID_New 
FROM (SELECT lngID, 
ROW_NUMBER() OVER(ORDER BY lngID ASC) + @lngCustTrID AS lngCustTrID_New
FROM #Temp_Doc) Z
WHERE #Temp_Doc.lngID = Z.lngID
INSERT INTO tblCustTrans (lngCustTrID, strCustName, dteSystemDate, dteJournalDate, strUserName, strInvDocID, strInvDepNumber, strSoNumber, intTransType, decInvAmount, 
decInvAmountF, strCurrency, bitIsForeign, decExchange, bitDocReRated, dteReRated, decReRateCumltveValue, bitSettled, decDiscAvail, decDiscAvailF, 
dteDiscExpires, dteDueDate, strJEDocID, strOrdDocID)
SELECT	DOC.lngCustTrID, 
SUBSTRING(LTRIM(RTRIM(DOC.CSCode)), 1, 50) AS strCustName, 
GETDATE() AS dteSystemDate, 
DOC.dDate AS dteJournalDate, 
@UserName AS strUserName, 
DOC.InvDocID AS strInvDocID, 
'Conversion' AS strInvDepNumber, 
'' AS strSoNumber, 
@TransTypeHDR AS intTransType, 
DOC.OIBalance AS decInvAmount, 
CASE WHEN DOC.IsForeign = 0 THEN 0.00 ELSE DOC.OICurrBalance END AS decInvAmountF, 
CASE WHEN DOC.IsForeign = 0 THEN @strCurrency ELSE CUST.strCurrency END AS strCurrency, 
DOC.IsForeign AS bitIsForeign, 
CASE WHEN DOC.IsForeign = 0 
THEN 1.000000 
ELSE CASE WHEN DOC.OIBalance = 0 OR DOC.OICurrBalance = 0 
THEN 1.000000 
ELSE ROUND(DOC.OIBalance / DOC.OICurrBalance, 4) 
END 
END AS decExchange, 
0 AS bitDocReRated, 
NULL AS dteReRated, 
0.00 AS decReRateCumltveValue, 
0 AS bitSettled, 
0.00 AS decDiscAvail, 
0.00 AS decDiscAvailF, 
DOC.dDate AS dteDiscExpires, 
DOC.dDate AS dteDueDate, 
NULL AS strJEDocID, 
NULL AS strOrdDocID
FROM #Temp_Doc DOC
INNER JOIN tblCustomers CUST ON DOC.CSCode = CUST.strCustName
ORDER BY DOC.lngID
INSERT INTO tblCustTransDT (dteJournalDate, lngCustTrID, lngCustPayID, decAmount, intTransType, decAmtOwingAtTime, bitReversed, dteIntDate, decAmountF, decAmtOwingAtTimeF, 
bitIsForeign) 
SELECT	dDate AS dteJournalDate, 
lngCustTrID, 
NULL AS lngCustPayID, 
OIBalance AS decAmount, 
@TransTypeDTL AS intTransType, 
OIBalance AS decAmtOwingAtTime, 
0 AS bitReversed, 
NULL AS dteIntDate, 
CASE WHEN IsForeign = 0 THEN 0.00 ELSE OICurrBalance END AS decAmountF, 
CASE WHEN IsForeign = 0 THEN 0.00 ELSE OICurrBalance END AS decAmtOwingAtTimeF, 
IsForeign AS bitIsForeign
FROM #Temp_Doc
ORDER BY lngID
IF @Evo = 1
BEGIN
UPDATE tblCustomers 
SET decBalDue = (SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0) 
FROM tblCustTrans 
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
WHERE tblCustTrans.strCustName = tblCustomers.strCustName 
AND tblCustTransDT.bitReversed = 0), 
decYTDPurch = (SELECT ISNULL(SUM(decTotal), 0) 
FROM tblInvoiceDoc
CROSS JOIN tblCompany 
WHERE strCustName = tblCustomers.strCustName 
AND bitHistoryTrans = 0 
AND dteJournalDate >= tblCompany.dteYearStarts), 
decBalDueF = (SELECT ISNULL(SUM(tblCustTransDT.decAmountF), 0) 
FROM tblCustTrans 
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
WHERE tblCustTrans.strCustName = tblCustomers.strCustName 
AND tblCustTransDT.bitReversed = 0), 
decYTDPurchF = (SELECT ISNULL(SUM(decTotalF), 0) 
FROM tblInvoiceDoc 
CROSS JOIN tblCompany 
WHERE strCustName = tblCustomers.strCustName 
AND bitHistoryTrans = 0 
AND dteJournalDate >= tblCompany.dteYearStarts)
WHERE strCustName IN (SELECT DISTINCT
CSCode
FROM #Temp_Doc)
SELECT @intCUSTRecCount = @@ROWCOUNT
END
ELSE
BEGIN
UPDATE tblCustomers 
SET decBalDue = Z.Balance, 
decYTDPurch = Z.Balance, 
decBalDueF = CASE WHEN Z.Balance = Z.CBalance THEN 0.00 ELSE Z.CBalance END, 
decYTDPurchF = CASE WHEN Z.Balance = Z.CBalance THEN 0.00 ELSE Z.CBalance END
FROM (SELECT CustomerCode, 
ROUND((BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + BalanceLast07 + BalanceLast08 + BalanceLast09 + 
BalanceLast10 + BalanceLast11 + BalanceLast12 + BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + BalanceThis05 + BalanceThis06 + 
BalanceThis07 + BalanceThis08 + BalanceThis09 + BalanceThis10 + BalanceThis11 + BalanceThis12), 2) AS Balance, 
ROUND((CurrBalanceLast01 + CurrBalanceLast02 + CurrBalanceLast03 + CurrBalanceLast04 + CurrBalanceLast05 + CurrBalanceLast06 + CurrBalanceLast07 + 
CurrBalanceLast08 + CurrBalanceLast09 + CurrBalanceLast10 + CurrBalanceLast11 + CurrBalanceLast12 + CurrBalanceThis01 + CurrBalanceThis02 + 
CurrBalanceThis03 + CurrBalanceThis04 + CurrBalanceThis05 + CurrBalanceThis06 + CurrBalanceThis07 + CurrBalanceThis08 + CurrBalanceThis09 + 
CurrBalanceThis10 + CurrBalanceThis11 + CurrBalanceThis12), 2) AS CBalance 
FROM tblUtilityPervCustomerMaster 
WHERE (OpenItem <> 0)
AND (ROUND((BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + BalanceLast07 + BalanceLast08 + BalanceLast09 + 
BalanceLast10 + BalanceLast11 + BalanceLast12 + BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + BalanceThis05 + BalanceThis06 + 
BalanceThis07 + BalanceThis08 + BalanceThis09 + BalanceThis10 + BalanceThis11 + BalanceThis12), 2) <> 0 
OR ROUND((CurrBalanceLast01 + CurrBalanceLast02 + CurrBalanceLast03 + CurrBalanceLast04 + CurrBalanceLast05 + CurrBalanceLast06 + CurrBalanceLast07 + 
CurrBalanceLast08 + CurrBalanceLast09 + CurrBalanceLast10 + CurrBalanceLast11 + CurrBalanceLast12 + CurrBalanceThis01 + CurrBalanceThis02 + 
CurrBalanceThis03 + CurrBalanceThis04 + CurrBalanceThis05 + CurrBalanceThis06 + CurrBalanceThis07 + CurrBalanceThis08 + CurrBalanceThis09 + 
CurrBalanceThis10 + CurrBalanceThis11 + CurrBalanceThis12), 2) <> 0)) Z
WHERE tblCustomers.strCustName = Z.CustomerCode 
SELECT @intCUSTRecCount = @@ROWCOUNT
END
DROP TABLE #Temp_Doc
SELECT @intHDRTotCount AS intHDRTotCount, @intHDRRecCount AS intHDRRecCount, @intCUSTRecCount AS intCUSTRecCount
GO

/****** Object:  StoredProcedure [dbo].[prConv_InventoryValues_Insert]    Script Date: 2021-02-01 ******/
----------------------------------------------------
CREATE PROCEDURE [dbo].[prConv_InventoryValues_Insert]
(
@Evo bit
)
AS
DECLARE @intINVTotCount bigint = 0,
@intINVRecCount bigint = 0
CREATE TABLE #Temp_INV (
[LocName] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[PartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[LastPPUnit] [money] NOT NULL,
[LastSale] [smalldatetime] NOT NULL,
[LastPurchase] [smalldatetime] NOT NULL,
[Qty] [money] NOT NULL)
CREATE TABLE #Temp_EXT (
[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strLocName] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decOnHand] [money] NOT NULL,
[decValue] [money] NOT NULL,
[decOpenQty] [money] NOT NULL,
[decOpenValue] [money] NOT NULL,
[decConvQty] [money] NOT NULL,
[decConvValue] [money] NOT NULL,
[decAdjQty] [money] NOT NULL,
[decAdjValue] [money] NOT NULL)
IF @Evo = 1
BEGIN

	INSERT INTO #Temp_INV (LocName, PartNumber, LastPPUnit, LastSale, LastPurchase, Qty)
	SELECT	SUBSTRING(LTRIM(RTRIM(MST.StoreCode)), 1, 10) AS LocName,
			SUBSTRING(LTRIM(RTRIM(ISNULL(MST.ItemCode, ''))), 1, 50) AS PartNumber, 
			ISNULL(MST.CostThis12, 0) AS LastPPUnit, 
			ISNULL(MST.LastInvDate, '1999-01-01') AS LastSale, 
			ISNULL(MST.LastPurchDate, '1999-01-01') AS LastPurchase, 
			SUM((ISNULL(MST.OpeningQty, 0) + ((ISNULL(MST.QtyBuyThis01, 0) + ISNULL(MST.QtyBuyThis02, 0) + ISNULL(MST.QtyBuyThis03, 0) + ISNULL(MST.QtyBuyThis04, 0) + ISNULL(MST.QtyBuyThis05, 0) + ISNULL(MST.QtyBuyThis06, 0) + ISNULL(MST.QtyBuyThis07, 0) + ISNULL(MST.QtyBuyThis08, 0) + ISNULL(MST.QtyBuyThis09, 0) + ISNULL(MST.QtyBuyThis10, 0) + 
											   ISNULL(MST.QtyBuyThis11, 0) + ISNULL(MST.QtyBuyThis12, 0) + ISNULL(MST.QtyBuyThis13, 0) + ISNULL(MST.QtyBuyThis14, 0) + ISNULL(MST.QtyBuyThis15, 0) + ISNULL(MST.QtyBuyThis16, 0) + ISNULL(MST.QtyBuyThis17, 0) + ISNULL(MST.QtyBuyThis18, 0) + ISNULL(MST.QtyBuyThis19, 0) + ISNULL(MST.QtyBuyThis20, 0) + 
											   ISNULL(MST.QtyBuyThis21, 0) + ISNULL(MST.QtyBuyThis22, 0) + ISNULL(MST.QtyBuyThis23, 0) + ISNULL(MST.QtyBuyThis24, 0) + ISNULL(MST.QtyBuyThis25, 0) + ISNULL(MST.QtyBuyThis26, 0) + ISNULL(MST.QtyBuyThis27, 0) + ISNULL(MST.QtyBuyThis28, 0) + ISNULL(MST.QtyBuyThis29, 0) + ISNULL(MST.QtyBuyThis30, 0) + 
											   ISNULL(MST.QtyBuyThis31, 0) + ISNULL(MST.QtyBuyThis32, 0) + ISNULL(MST.QtyBuyThis33, 0) + ISNULL(MST.QtyBuyThis34, 0) + ISNULL(MST.QtyBuyThis35, 0) + ISNULL(MST.QtyBuyThis36, 0) + ISNULL(MST.QtyBuyThis37, 0) + ISNULL(MST.QtyBuyThis38, 0) + ISNULL(MST.QtyBuyThis39, 0) + ISNULL(MST.QtyBuyThis40, 0) + 
											   ISNULL(MST.QtyBuyThis41, 0) + ISNULL(MST.QtyBuyThis42, 0) + ISNULL(MST.QtyBuyThis43, 0) + ISNULL(MST.QtyBuyThis44, 0) + ISNULL(MST.QtyBuyThis45, 0) + ISNULL(MST.QtyBuyThis46, 0) + ISNULL(MST.QtyBuyThis47, 0) + ISNULL(MST.QtyBuyThis48, 0) + ISNULL(MST.QtyBuyThis49, 0) + ISNULL(MST.QtyBuyThis50, 0) + 
											   ISNULL(MST.QtyBuyThis51, 0) + ISNULL(MST.QtyBuyThis52, 0) + ISNULL(MST.QtyBuyThis53, 0) + ISNULL(MST.QtyBuyThis54, 0) + ISNULL(MST.QtyBuyThis55, 0) + ISNULL(MST.QtyBuyThis56, 0) + ISNULL(MST.QtyBuyThis57, 0) + ISNULL(MST.QtyBuyThis58, 0) + ISNULL(MST.QtyBuyThis59, 0) + ISNULL(MST.QtyBuyThis60, 0) + 
											   ISNULL(MST.QtyBuyThis61, 0) + ISNULL(MST.QtyBuyThis62, 0) + ISNULL(MST.QtyBuyThis63, 0) + ISNULL(MST.QtyBuyThis64, 0) + ISNULL(MST.QtyBuyThis65, 0) + ISNULL(MST.QtyBuyThis66, 0) + ISNULL(MST.QtyBuyThis67, 0) + ISNULL(MST.QtyBuyThis68, 0) + ISNULL(MST.QtyBuyThis69, 0) + ISNULL(MST.QtyBuyThis70, 0) + 
											   ISNULL(MST.QtyBuyThis71, 0) + ISNULL(MST.QtyBuyThis72, 0) + ISNULL(MST.QtyBuyThis73, 0) + ISNULL(MST.QtyBuyThis74, 0) + ISNULL(MST.QtyBuyThis75, 0) + ISNULL(MST.QtyBuyThis76, 0) + ISNULL(MST.QtyBuyThis77, 0) + ISNULL(MST.QtyBuyThis78, 0) + ISNULL(MST.QtyBuyThis79, 0) + ISNULL(MST.QtyBuyThis80, 0) + 
											   ISNULL(MST.QtyBuyThis81, 0) + ISNULL(MST.QtyBuyThis82, 0) + ISNULL(MST.QtyBuyThis83, 0) + ISNULL(MST.QtyBuyThis84, 0) + ISNULL(MST.QtyBuyThis85, 0) + ISNULL(MST.QtyBuyThis86, 0) + ISNULL(MST.QtyBuyThis87, 0) + ISNULL(MST.QtyBuyThis88, 0) + ISNULL(MST.QtyBuyThis89, 0) + ISNULL(MST.QtyBuyThis90, 0) + 
											   ISNULL(MST.QtyBuyThis91, 0) + ISNULL(MST.QtyBuyThis92, 0) + ISNULL(MST.QtyBuyThis93, 0) + ISNULL(MST.QtyBuyThis94, 0) + ISNULL(MST.QtyBuyThis95, 0) + ISNULL(MST.QtyBuyThis96, 0) + ISNULL(MST.QtyBuyThis97, 0) + ISNULL(MST.QtyBuyThis98, 0) + ISNULL(MST.QtyBuyThis99, 0) + ISNULL(MST.QtyBuyThis100, 0) +
											   ISNULL(MST.QtyBuyThis101, 0) + ISNULL(MST.QtyBuyThis102, 0) + ISNULL(MST.QtyBuyThis103, 0) + ISNULL(MST.QtyBuyThis104, 0) + ISNULL(MST.QtyBuyThis105, 0) + ISNULL(MST.QtyBuyThis106, 0) + ISNULL(MST.QtyBuyThis107, 0) + ISNULL(MST.QtyBuyThis108, 0) + ISNULL(MST.QtyBuyThis109, 0) + ISNULL(MST.QtyBuyThis110, 0) + 
											   ISNULL(MST.QtyBuyThis111, 0) + ISNULL(MST.QtyBuyThis112, 0) + ISNULL(MST.QtyBuyThis113, 0) + ISNULL(MST.QtyBuyThis114, 0) + ISNULL(MST.QtyBuyThis115, 0) + ISNULL(MST.QtyBuyThis116, 0) + ISNULL(MST.QtyBuyThis117, 0) + ISNULL(MST.QtyBuyThis118, 0) + ISNULL(MST.QtyBuyThis119, 0) + ISNULL(MST.QtyBuyThis120, 0) + 
											   ISNULL(MST.QtyBuyThis121, 0) + ISNULL(MST.QtyBuyThis122, 0) + ISNULL(MST.QtyBuyThis123, 0) + ISNULL(MST.QtyBuyThis124, 0) + ISNULL(MST.QtyBuyThis125, 0) + ISNULL(MST.QtyBuyThis126, 0) + ISNULL(MST.QtyBuyThis127, 0) + ISNULL(MST.QtyBuyThis128, 0) + ISNULL(MST.QtyBuyThis129, 0) + ISNULL(MST.QtyBuyThis130, 0) + 
											   ISNULL(MST.QtyBuyThis131, 0) + ISNULL(MST.QtyBuyThis132, 0) + ISNULL(MST.QtyBuyThis133, 0) + ISNULL(MST.QtyBuyThis134, 0) + ISNULL(MST.QtyBuyThis135, 0) + ISNULL(MST.QtyBuyThis136, 0) + ISNULL(MST.QtyBuyThis137, 0) + ISNULL(MST.QtyBuyThis138, 0) + ISNULL(MST.QtyBuyThis139, 0) + ISNULL(MST.QtyBuyThis140, 0) + 
											   ISNULL(MST.QtyBuyThis141, 0) + ISNULL(MST.QtyBuyThis142, 0) + ISNULL(MST.QtyBuyThis143, 0) + ISNULL(MST.QtyBuyThis144, 0) + ISNULL(MST.QtyBuyThis145, 0) + ISNULL(MST.QtyBuyThis146, 0) + ISNULL(MST.QtyBuyThis147, 0) + ISNULL(MST.QtyBuyThis148, 0) + ISNULL(MST.QtyBuyThis149, 0) + ISNULL(MST.QtyBuyThis150, 0) + 
											   ISNULL(MST.QtyBuyThis151, 0) + ISNULL(MST.QtyBuyThis152, 0) + ISNULL(MST.QtyBuyThis153, 0) + ISNULL(MST.QtyBuyThis154, 0) + ISNULL(MST.QtyBuyThis155, 0) + ISNULL(MST.QtyBuyThis156, 0) + ISNULL(MST.QtyBuyThis157, 0) + ISNULL(MST.QtyBuyThis158, 0) + ISNULL(MST.QtyBuyThis159, 0) + ISNULL(MST.QtyBuyThis160, 0) + 
											   ISNULL(MST.QtyBuyThis161, 0) + ISNULL(MST.QtyBuyThis162, 0) + ISNULL(MST.QtyBuyThis163, 0) + ISNULL(MST.QtyBuyThis164, 0) + ISNULL(MST.QtyBuyThis165, 0) + ISNULL(MST.QtyBuyThis166, 0) + ISNULL(MST.QtyBuyThis167, 0) + ISNULL(MST.QtyBuyThis168, 0) + ISNULL(MST.QtyBuyThis169, 0) + ISNULL(MST.QtyBuyThis170, 0) + 
											   ISNULL(MST.QtyBuyThis171, 0) + ISNULL(MST.QtyBuyThis172, 0) + ISNULL(MST.QtyBuyThis173, 0) + ISNULL(MST.QtyBuyThis174, 0) + ISNULL(MST.QtyBuyThis175, 0) + ISNULL(MST.QtyBuyThis176, 0) + ISNULL(MST.QtyBuyThis177, 0) + ISNULL(MST.QtyBuyThis178, 0) + ISNULL(MST.QtyBuyThis179, 0) + ISNULL(MST.QtyBuyThis180, 0) + 
											   ISNULL(MST.QtyBuyThis181, 0) + ISNULL(MST.QtyBuyThis182, 0) + ISNULL(MST.QtyBuyThis183, 0) + ISNULL(MST.QtyBuyThis184, 0) + ISNULL(MST.QtyBuyThis185, 0) + ISNULL(MST.QtyBuyThis186, 0) + ISNULL(MST.QtyBuyThis187, 0) + ISNULL(MST.QtyBuyThis188, 0) + ISNULL(MST.QtyBuyThis189, 0) + ISNULL(MST.QtyBuyThis190, 0) + 
											   ISNULL(MST.QtyBuyThis191, 0) + ISNULL(MST.QtyBuyThis192, 0) + ISNULL(MST.QtyBuyThis193, 0) + ISNULL(MST.QtyBuyThis194, 0) + ISNULL(MST.QtyBuyThis195, 0) + ISNULL(MST.QtyBuyThis196, 0) + ISNULL(MST.QtyBuyThis197, 0) + ISNULL(MST.QtyBuyThis198, 0) + ISNULL(MST.QtyBuyThis199, 0) + ISNULL(MST.QtyBuyThis200, 0) +
											   ISNULL(MST.QtyBuyThis201, 0) + ISNULL(MST.QtyBuyThis202, 0) + ISNULL(MST.QtyBuyThis203, 0) + ISNULL(MST.QtyBuyThis204, 0) + ISNULL(MST.QtyBuyThis205, 0) + ISNULL(MST.QtyBuyThis206, 0) + ISNULL(MST.QtyBuyThis207, 0) + ISNULL(MST.QtyBuyThis208, 0) + ISNULL(MST.QtyBuyThis209, 0) + ISNULL(MST.QtyBuyThis210, 0) + 
											   ISNULL(MST.QtyBuyThis211, 0) + ISNULL(MST.QtyBuyThis212, 0) + ISNULL(MST.QtyBuyThis213, 0) + ISNULL(MST.QtyBuyThis214, 0) + ISNULL(MST.QtyBuyThis215, 0) + ISNULL(MST.QtyBuyThis216, 0) + ISNULL(MST.QtyBuyThis217, 0) + ISNULL(MST.QtyBuyThis218, 0) + ISNULL(MST.QtyBuyThis219, 0) + ISNULL(MST.QtyBuyThis220, 0) + 
											   ISNULL(MST.QtyBuyThis221, 0) + ISNULL(MST.QtyBuyThis222, 0) + ISNULL(MST.QtyBuyThis223, 0) + ISNULL(MST.QtyBuyThis224, 0) + ISNULL(MST.QtyBuyThis225, 0) + ISNULL(MST.QtyBuyThis226, 0) + ISNULL(MST.QtyBuyThis227, 0) + ISNULL(MST.QtyBuyThis228, 0) + ISNULL(MST.QtyBuyThis229, 0) + ISNULL(MST.QtyBuyThis230, 0) + 
											   ISNULL(MST.QtyBuyThis231, 0) + ISNULL(MST.QtyBuyThis232, 0) + ISNULL(MST.QtyBuyThis233, 0) + ISNULL(MST.QtyBuyThis234, 0) + ISNULL(MST.QtyBuyThis235, 0) + ISNULL(MST.QtyBuyThis236, 0) + ISNULL(MST.QtyBuyThis237, 0) + ISNULL(MST.QtyBuyThis238, 0) + ISNULL(MST.QtyBuyThis239, 0) + ISNULL(MST.QtyBuyThis240, 0)) 

											  + (ISNULL(MST.QtyAdjustThis01, 0) + ISNULL(MST.QtyAdjustThis02, 0) + ISNULL(MST.QtyAdjustThis03, 0) + ISNULL(MST.QtyAdjustThis04, 0) + ISNULL(MST.QtyAdjustThis05, 0) + ISNULL(MST.QtyAdjustThis06, 0) + ISNULL(MST.QtyAdjustThis07, 0) + ISNULL(MST.QtyAdjustThis08, 0) + ISNULL(MST.QtyAdjustThis09, 0) + ISNULL(MST.QtyAdjustThis10, 0) + 
												 ISNULL(MST.QtyAdjustThis11, 0) + ISNULL(MST.QtyAdjustThis12, 0) + ISNULL(MST.QtyAdjustThis13, 0) + ISNULL(MST.QtyAdjustThis14, 0) + ISNULL(MST.QtyAdjustThis15, 0) + ISNULL(MST.QtyAdjustThis16, 0) + ISNULL(MST.QtyAdjustThis17, 0) + ISNULL(MST.QtyAdjustThis18, 0) + ISNULL(MST.QtyAdjustThis19, 0) + ISNULL(MST.QtyAdjustThis20, 0) + 
												 ISNULL(MST.QtyAdjustThis21, 0) + ISNULL(MST.QtyAdjustThis22, 0) + ISNULL(MST.QtyAdjustThis23, 0) + ISNULL(MST.QtyAdjustThis24, 0) + ISNULL(MST.QtyAdjustThis25, 0) + ISNULL(MST.QtyAdjustThis26, 0) + ISNULL(MST.QtyAdjustThis27, 0) + ISNULL(MST.QtyAdjustThis28, 0) + ISNULL(MST.QtyAdjustThis29, 0) + ISNULL(MST.QtyAdjustThis30, 0) + 
												 ISNULL(MST.QtyAdjustThis31, 0) + ISNULL(MST.QtyAdjustThis32, 0) + ISNULL(MST.QtyAdjustThis33, 0) + ISNULL(MST.QtyAdjustThis34, 0) + ISNULL(MST.QtyAdjustThis35, 0) + ISNULL(MST.QtyAdjustThis36, 0) + ISNULL(MST.QtyAdjustThis37, 0) + ISNULL(MST.QtyAdjustThis38, 0) + ISNULL(MST.QtyAdjustThis39, 0) + ISNULL(MST.QtyAdjustThis40, 0) + 
												 ISNULL(MST.QtyAdjustThis41, 0) + ISNULL(MST.QtyAdjustThis42, 0) + ISNULL(MST.QtyAdjustThis43, 0) + ISNULL(MST.QtyAdjustThis44, 0) + ISNULL(MST.QtyAdjustThis45, 0) + ISNULL(MST.QtyAdjustThis46, 0) + ISNULL(MST.QtyAdjustThis47, 0) + ISNULL(MST.QtyAdjustThis48, 0) + ISNULL(MST.QtyAdjustThis49, 0) + ISNULL(MST.QtyAdjustThis50, 0) + 
												 ISNULL(MST.QtyAdjustThis51, 0) + ISNULL(MST.QtyAdjustThis52, 0) + ISNULL(MST.QtyAdjustThis53, 0) + ISNULL(MST.QtyAdjustThis54, 0) + ISNULL(MST.QtyAdjustThis55, 0) + ISNULL(MST.QtyAdjustThis56, 0) + ISNULL(MST.QtyAdjustThis57, 0) + ISNULL(MST.QtyAdjustThis58, 0) + ISNULL(MST.QtyAdjustThis59, 0) + ISNULL(MST.QtyAdjustThis60, 0) + 
												 ISNULL(MST.QtyAdjustThis61, 0) + ISNULL(MST.QtyAdjustThis62, 0) + ISNULL(MST.QtyAdjustThis63, 0) + ISNULL(MST.QtyAdjustThis64, 0) + ISNULL(MST.QtyAdjustThis65, 0) + ISNULL(MST.QtyAdjustThis66, 0) + ISNULL(MST.QtyAdjustThis67, 0) + ISNULL(MST.QtyAdjustThis68, 0) + ISNULL(MST.QtyAdjustThis69, 0) + ISNULL(MST.QtyAdjustThis70, 0) + 
												 ISNULL(MST.QtyAdjustThis71, 0) + ISNULL(MST.QtyAdjustThis72, 0) + ISNULL(MST.QtyAdjustThis73, 0) + ISNULL(MST.QtyAdjustThis74, 0) + ISNULL(MST.QtyAdjustThis75, 0) + ISNULL(MST.QtyAdjustThis76, 0) + ISNULL(MST.QtyAdjustThis77, 0) + ISNULL(MST.QtyAdjustThis78, 0) + ISNULL(MST.QtyAdjustThis79, 0) + ISNULL(MST.QtyAdjustThis80, 0) + 
												 ISNULL(MST.QtyAdjustThis81, 0) + ISNULL(MST.QtyAdjustThis82, 0) + ISNULL(MST.QtyAdjustThis83, 0) + ISNULL(MST.QtyAdjustThis84, 0) + ISNULL(MST.QtyAdjustThis85, 0) + ISNULL(MST.QtyAdjustThis86, 0) + ISNULL(MST.QtyAdjustThis87, 0) + ISNULL(MST.QtyAdjustThis88, 0) + ISNULL(MST.QtyAdjustThis89, 0) + ISNULL(MST.QtyAdjustThis90, 0) + 
												 ISNULL(MST.QtyAdjustThis91, 0) + ISNULL(MST.QtyAdjustThis92, 0) + ISNULL(MST.QtyAdjustThis93, 0) + ISNULL(MST.QtyAdjustThis94, 0) + ISNULL(MST.QtyAdjustThis95, 0) + ISNULL(MST.QtyAdjustThis96, 0) + ISNULL(MST.QtyAdjustThis97, 0) + ISNULL(MST.QtyAdjustThis98, 0) + ISNULL(MST.QtyAdjustThis99, 0) + ISNULL(MST.QtyAdjustThis100, 0) + 
												 ISNULL(MST.QtyAdjustThis101, 0) + ISNULL(MST.QtyAdjustThis102, 0) + ISNULL(MST.QtyAdjustThis103, 0) + ISNULL(MST.QtyAdjustThis104, 0) + ISNULL(MST.QtyAdjustThis105, 0) + ISNULL(MST.QtyAdjustThis106, 0) + ISNULL(MST.QtyAdjustThis107, 0) + ISNULL(MST.QtyAdjustThis108, 0) + ISNULL(MST.QtyAdjustThis109, 0) + ISNULL(MST.QtyAdjustThis110, 0) + 
												 ISNULL(MST.QtyAdjustThis111, 0) + ISNULL(MST.QtyAdjustThis112, 0) + ISNULL(MST.QtyAdjustThis113, 0) + ISNULL(MST.QtyAdjustThis114, 0) + ISNULL(MST.QtyAdjustThis115, 0) + ISNULL(MST.QtyAdjustThis116, 0) + ISNULL(MST.QtyAdjustThis117, 0) + ISNULL(MST.QtyAdjustThis118, 0) + ISNULL(MST.QtyAdjustThis119, 0) + ISNULL(MST.QtyAdjustThis120, 0) + 
												 ISNULL(MST.QtyAdjustThis121, 0) + ISNULL(MST.QtyAdjustThis122, 0) + ISNULL(MST.QtyAdjustThis123, 0) + ISNULL(MST.QtyAdjustThis124, 0) + ISNULL(MST.QtyAdjustThis125, 0) + ISNULL(MST.QtyAdjustThis126, 0) + ISNULL(MST.QtyAdjustThis127, 0) + ISNULL(MST.QtyAdjustThis128, 0) + ISNULL(MST.QtyAdjustThis129, 0) + ISNULL(MST.QtyAdjustThis130, 0) + 
												 ISNULL(MST.QtyAdjustThis131, 0) + ISNULL(MST.QtyAdjustThis132, 0) + ISNULL(MST.QtyAdjustThis133, 0) + ISNULL(MST.QtyAdjustThis134, 0) + ISNULL(MST.QtyAdjustThis135, 0) + ISNULL(MST.QtyAdjustThis136, 0) + ISNULL(MST.QtyAdjustThis137, 0) + ISNULL(MST.QtyAdjustThis138, 0) + ISNULL(MST.QtyAdjustThis139, 0) + ISNULL(MST.QtyAdjustThis140, 0) + 
												 ISNULL(MST.QtyAdjustThis141, 0) + ISNULL(MST.QtyAdjustThis142, 0) + ISNULL(MST.QtyAdjustThis143, 0) + ISNULL(MST.QtyAdjustThis144, 0) + ISNULL(MST.QtyAdjustThis145, 0) + ISNULL(MST.QtyAdjustThis146, 0) + ISNULL(MST.QtyAdjustThis147, 0) + ISNULL(MST.QtyAdjustThis148, 0) + ISNULL(MST.QtyAdjustThis149, 0) + ISNULL(MST.QtyAdjustThis150, 0) + 
												 ISNULL(MST.QtyAdjustThis151, 0) + ISNULL(MST.QtyAdjustThis152, 0) + ISNULL(MST.QtyAdjustThis153, 0) + ISNULL(MST.QtyAdjustThis154, 0) + ISNULL(MST.QtyAdjustThis155, 0) + ISNULL(MST.QtyAdjustThis156, 0) + ISNULL(MST.QtyAdjustThis157, 0) + ISNULL(MST.QtyAdjustThis158, 0) + ISNULL(MST.QtyAdjustThis159, 0) + ISNULL(MST.QtyAdjustThis160, 0) + 
												 ISNULL(MST.QtyAdjustThis161, 0) + ISNULL(MST.QtyAdjustThis162, 0) + ISNULL(MST.QtyAdjustThis163, 0) + ISNULL(MST.QtyAdjustThis164, 0) + ISNULL(MST.QtyAdjustThis165, 0) + ISNULL(MST.QtyAdjustThis166, 0) + ISNULL(MST.QtyAdjustThis167, 0) + ISNULL(MST.QtyAdjustThis168, 0) + ISNULL(MST.QtyAdjustThis169, 0) + ISNULL(MST.QtyAdjustThis170, 0) + 
												 ISNULL(MST.QtyAdjustThis171, 0) + ISNULL(MST.QtyAdjustThis172, 0) + ISNULL(MST.QtyAdjustThis173, 0) + ISNULL(MST.QtyAdjustThis174, 0) + ISNULL(MST.QtyAdjustThis175, 0) + ISNULL(MST.QtyAdjustThis176, 0) + ISNULL(MST.QtyAdjustThis177, 0) + ISNULL(MST.QtyAdjustThis178, 0) + ISNULL(MST.QtyAdjustThis179, 0) + ISNULL(MST.QtyAdjustThis180, 0) + 
												 ISNULL(MST.QtyAdjustThis181, 0) + ISNULL(MST.QtyAdjustThis182, 0) + ISNULL(MST.QtyAdjustThis183, 0) + ISNULL(MST.QtyAdjustThis184, 0) + ISNULL(MST.QtyAdjustThis185, 0) + ISNULL(MST.QtyAdjustThis186, 0) + ISNULL(MST.QtyAdjustThis187, 0) + ISNULL(MST.QtyAdjustThis188, 0) + ISNULL(MST.QtyAdjustThis189, 0) + ISNULL(MST.QtyAdjustThis190, 0) + 
												 ISNULL(MST.QtyAdjustThis191, 0) + ISNULL(MST.QtyAdjustThis192, 0) + ISNULL(MST.QtyAdjustThis193, 0) + ISNULL(MST.QtyAdjustThis194, 0) + ISNULL(MST.QtyAdjustThis195, 0) + ISNULL(MST.QtyAdjustThis196, 0) + ISNULL(MST.QtyAdjustThis197, 0) + ISNULL(MST.QtyAdjustThis198, 0) + ISNULL(MST.QtyAdjustThis199, 0) + ISNULL(MST.QtyAdjustThis200, 0) + 
												 ISNULL(MST.QtyAdjustThis201, 0) + ISNULL(MST.QtyAdjustThis202, 0) + ISNULL(MST.QtyAdjustThis203, 0) + ISNULL(MST.QtyAdjustThis204, 0) + ISNULL(MST.QtyAdjustThis205, 0) + ISNULL(MST.QtyAdjustThis206, 0) + ISNULL(MST.QtyAdjustThis207, 0) + ISNULL(MST.QtyAdjustThis208, 0) + ISNULL(MST.QtyAdjustThis209, 0) + ISNULL(MST.QtyAdjustThis210, 0) + 
												 ISNULL(MST.QtyAdjustThis211, 0) + ISNULL(MST.QtyAdjustThis212, 0) + ISNULL(MST.QtyAdjustThis213, 0) + ISNULL(MST.QtyAdjustThis214, 0) + ISNULL(MST.QtyAdjustThis215, 0) + ISNULL(MST.QtyAdjustThis216, 0) + ISNULL(MST.QtyAdjustThis217, 0) + ISNULL(MST.QtyAdjustThis218, 0) + ISNULL(MST.QtyAdjustThis219, 0) + ISNULL(MST.QtyAdjustThis220, 0) + 
												 ISNULL(MST.QtyAdjustThis221, 0) + ISNULL(MST.QtyAdjustThis222, 0) + ISNULL(MST.QtyAdjustThis223, 0) + ISNULL(MST.QtyAdjustThis224, 0) + ISNULL(MST.QtyAdjustThis225, 0) + ISNULL(MST.QtyAdjustThis226, 0) + ISNULL(MST.QtyAdjustThis227, 0) + ISNULL(MST.QtyAdjustThis228, 0) + ISNULL(MST.QtyAdjustThis229, 0) + ISNULL(MST.QtyAdjustThis230, 0) + 
												 ISNULL(MST.QtyAdjustThis231, 0) + ISNULL(MST.QtyAdjustThis232, 0) + ISNULL(MST.QtyAdjustThis233, 0) + ISNULL(MST.QtyAdjustThis234, 0) + ISNULL(MST.QtyAdjustThis235, 0) + ISNULL(MST.QtyAdjustThis236, 0) + ISNULL(MST.QtyAdjustThis237, 0) + ISNULL(MST.QtyAdjustThis238, 0) + ISNULL(MST.QtyAdjustThis239, 0) + ISNULL(MST.QtyAdjustThis240, 0))) 

										   + (ISNULL(MST.QtySellThis01, 0) + ISNULL(MST.QtySellThis02, 0) + ISNULL(MST.QtySellThis03, 0) + ISNULL(MST.QtySellThis04, 0) + ISNULL(MST.QtySellThis05, 0) + ISNULL(MST.QtySellThis06, 0) + ISNULL(MST.QtySellThis07, 0) + ISNULL(MST.QtySellThis08, 0) + ISNULL(MST.QtySellThis09, 0) + ISNULL(MST.QtySellThis10, 0) + 
											  ISNULL(MST.QtySellThis11, 0) + ISNULL(MST.QtySellThis12, 0) + ISNULL(MST.QtySellThis13, 0) + ISNULL(MST.QtySellThis14, 0) + ISNULL(MST.QtySellThis15, 0) + ISNULL(MST.QtySellThis16, 0) + ISNULL(MST.QtySellThis17, 0) + ISNULL(MST.QtySellThis18, 0) + ISNULL(MST.QtySellThis19, 0) + ISNULL(MST.QtySellThis20, 0) + 
											  ISNULL(MST.QtySellThis21, 0) + ISNULL(MST.QtySellThis22, 0) + ISNULL(MST.QtySellThis23, 0) + ISNULL(MST.QtySellThis24, 0) + ISNULL(MST.QtySellThis25, 0) + ISNULL(MST.QtySellThis26, 0) + ISNULL(MST.QtySellThis27, 0) + ISNULL(MST.QtySellThis28, 0) + ISNULL(MST.QtySellThis29, 0) + ISNULL(MST.QtySellThis30, 0) + 
											  ISNULL(MST.QtySellThis31, 0) + ISNULL(MST.QtySellThis32, 0) + ISNULL(MST.QtySellThis33, 0) + ISNULL(MST.QtySellThis34, 0) + ISNULL(MST.QtySellThis35, 0) + ISNULL(MST.QtySellThis36, 0) + ISNULL(MST.QtySellThis37, 0) + ISNULL(MST.QtySellThis38, 0) + ISNULL(MST.QtySellThis39, 0) + ISNULL(MST.QtySellThis40, 0) + 
											  ISNULL(MST.QtySellThis41, 0) + ISNULL(MST.QtySellThis42, 0) + ISNULL(MST.QtySellThis43, 0) + ISNULL(MST.QtySellThis44, 0) + ISNULL(MST.QtySellThis45, 0) + ISNULL(MST.QtySellThis46, 0) + ISNULL(MST.QtySellThis47, 0) + ISNULL(MST.QtySellThis48, 0) + ISNULL(MST.QtySellThis49, 0) + ISNULL(MST.QtySellThis50, 0) + 
											  ISNULL(MST.QtySellThis51, 0) + ISNULL(MST.QtySellThis52, 0) + ISNULL(MST.QtySellThis53, 0) + ISNULL(MST.QtySellThis54, 0) + ISNULL(MST.QtySellThis55, 0) + ISNULL(MST.QtySellThis56, 0) + ISNULL(MST.QtySellThis57, 0) + ISNULL(MST.QtySellThis58, 0) + ISNULL(MST.QtySellThis59, 0) + ISNULL(MST.QtySellThis60, 0) + 
											  ISNULL(MST.QtySellThis61, 0) + ISNULL(MST.QtySellThis62, 0) + ISNULL(MST.QtySellThis63, 0) + ISNULL(MST.QtySellThis64, 0) + ISNULL(MST.QtySellThis65, 0) + ISNULL(MST.QtySellThis66, 0) + ISNULL(MST.QtySellThis67, 0) + ISNULL(MST.QtySellThis68, 0) + ISNULL(MST.QtySellThis69, 0) + ISNULL(MST.QtySellThis70, 0) + 
											  ISNULL(MST.QtySellThis71, 0) + ISNULL(MST.QtySellThis72, 0) + ISNULL(MST.QtySellThis73, 0) + ISNULL(MST.QtySellThis74, 0) + ISNULL(MST.QtySellThis75, 0) + ISNULL(MST.QtySellThis76, 0) + ISNULL(MST.QtySellThis77, 0) + ISNULL(MST.QtySellThis78, 0) + ISNULL(MST.QtySellThis79, 0) + ISNULL(MST.QtySellThis80, 0) + 
											  ISNULL(MST.QtySellThis81, 0) + ISNULL(MST.QtySellThis82, 0) + ISNULL(MST.QtySellThis83, 0) + ISNULL(MST.QtySellThis84, 0) + ISNULL(MST.QtySellThis85, 0) + ISNULL(MST.QtySellThis86, 0) + ISNULL(MST.QtySellThis87, 0) + ISNULL(MST.QtySellThis88, 0) + ISNULL(MST.QtySellThis89, 0) + ISNULL(MST.QtySellThis90, 0) + 
											  ISNULL(MST.QtySellThis91, 0) + ISNULL(MST.QtySellThis92, 0) + ISNULL(MST.QtySellThis93, 0) + ISNULL(MST.QtySellThis94, 0) + ISNULL(MST.QtySellThis95, 0) + ISNULL(MST.QtySellThis96, 0) + ISNULL(MST.QtySellThis97, 0) + ISNULL(MST.QtySellThis98, 0) + ISNULL(MST.QtySellThis99, 0) + ISNULL(MST.QtySellThis100, 0) + 
											  ISNULL(MST.QtySellThis101, 0) + ISNULL(MST.QtySellThis102, 0) + ISNULL(MST.QtySellThis103, 0) + ISNULL(MST.QtySellThis104, 0) + ISNULL(MST.QtySellThis105, 0) + ISNULL(MST.QtySellThis106, 0) + ISNULL(MST.QtySellThis107, 0) + ISNULL(MST.QtySellThis108, 0) + ISNULL(MST.QtySellThis109, 0) + ISNULL(MST.QtySellThis110, 0) + 
											  ISNULL(MST.QtySellThis111, 0) + ISNULL(MST.QtySellThis112, 0) + ISNULL(MST.QtySellThis113, 0) + ISNULL(MST.QtySellThis114, 0) + ISNULL(MST.QtySellThis115, 0) + ISNULL(MST.QtySellThis116, 0) + ISNULL(MST.QtySellThis117, 0) + ISNULL(MST.QtySellThis118, 0) + ISNULL(MST.QtySellThis119, 0) + ISNULL(MST.QtySellThis120, 0) + 
											  ISNULL(MST.QtySellThis121, 0) + ISNULL(MST.QtySellThis122, 0) + ISNULL(MST.QtySellThis123, 0) + ISNULL(MST.QtySellThis124, 0) + ISNULL(MST.QtySellThis125, 0) + ISNULL(MST.QtySellThis126, 0) + ISNULL(MST.QtySellThis127, 0) + ISNULL(MST.QtySellThis128, 0) + ISNULL(MST.QtySellThis129, 0) + ISNULL(MST.QtySellThis130, 0) + 
											  ISNULL(MST.QtySellThis131, 0) + ISNULL(MST.QtySellThis132, 0) + ISNULL(MST.QtySellThis133, 0) + ISNULL(MST.QtySellThis134, 0) + ISNULL(MST.QtySellThis135, 0) + ISNULL(MST.QtySellThis136, 0) + ISNULL(MST.QtySellThis137, 0) + ISNULL(MST.QtySellThis138, 0) + ISNULL(MST.QtySellThis139, 0) + ISNULL(MST.QtySellThis140, 0) + 
											  ISNULL(MST.QtySellThis141, 0) + ISNULL(MST.QtySellThis142, 0) + ISNULL(MST.QtySellThis143, 0) + ISNULL(MST.QtySellThis144, 0) + ISNULL(MST.QtySellThis145, 0) + ISNULL(MST.QtySellThis146, 0) + ISNULL(MST.QtySellThis147, 0) + ISNULL(MST.QtySellThis148, 0) + ISNULL(MST.QtySellThis149, 0) + ISNULL(MST.QtySellThis150, 0) + 
											  ISNULL(MST.QtySellThis151, 0) + ISNULL(MST.QtySellThis152, 0) + ISNULL(MST.QtySellThis153, 0) + ISNULL(MST.QtySellThis154, 0) + ISNULL(MST.QtySellThis155, 0) + ISNULL(MST.QtySellThis156, 0) + ISNULL(MST.QtySellThis157, 0) + ISNULL(MST.QtySellThis158, 0) + ISNULL(MST.QtySellThis159, 0) + ISNULL(MST.QtySellThis160, 0) + 
											  ISNULL(MST.QtySellThis161, 0) + ISNULL(MST.QtySellThis162, 0) + ISNULL(MST.QtySellThis163, 0) + ISNULL(MST.QtySellThis164, 0) + ISNULL(MST.QtySellThis165, 0) + ISNULL(MST.QtySellThis166, 0) + ISNULL(MST.QtySellThis167, 0) + ISNULL(MST.QtySellThis168, 0) + ISNULL(MST.QtySellThis169, 0) + ISNULL(MST.QtySellThis170, 0) + 
											  ISNULL(MST.QtySellThis171, 0) + ISNULL(MST.QtySellThis172, 0) + ISNULL(MST.QtySellThis173, 0) + ISNULL(MST.QtySellThis174, 0) + ISNULL(MST.QtySellThis175, 0) + ISNULL(MST.QtySellThis176, 0) + ISNULL(MST.QtySellThis177, 0) + ISNULL(MST.QtySellThis178, 0) + ISNULL(MST.QtySellThis179, 0) + ISNULL(MST.QtySellThis180, 0) + 
											  ISNULL(MST.QtySellThis181, 0) + ISNULL(MST.QtySellThis182, 0) + ISNULL(MST.QtySellThis183, 0) + ISNULL(MST.QtySellThis184, 0) + ISNULL(MST.QtySellThis185, 0) + ISNULL(MST.QtySellThis186, 0) + ISNULL(MST.QtySellThis187, 0) + ISNULL(MST.QtySellThis188, 0) + ISNULL(MST.QtySellThis189, 0) + ISNULL(MST.QtySellThis190, 0) + 
											  ISNULL(MST.QtySellThis191, 0) + ISNULL(MST.QtySellThis192, 0) + ISNULL(MST.QtySellThis193, 0) + ISNULL(MST.QtySellThis194, 0) + ISNULL(MST.QtySellThis195, 0) + ISNULL(MST.QtySellThis196, 0) + ISNULL(MST.QtySellThis197, 0) + ISNULL(MST.QtySellThis198, 0) + ISNULL(MST.QtySellThis199, 0) + ISNULL(MST.QtySellThis200, 0) + 
											  ISNULL(MST.QtySellThis201, 0) + ISNULL(MST.QtySellThis202, 0) + ISNULL(MST.QtySellThis203, 0) + ISNULL(MST.QtySellThis204, 0) + ISNULL(MST.QtySellThis205, 0) + ISNULL(MST.QtySellThis206, 0) + ISNULL(MST.QtySellThis207, 0) + ISNULL(MST.QtySellThis208, 0) + ISNULL(MST.QtySellThis209, 0) + ISNULL(MST.QtySellThis210, 0) + 
											  ISNULL(MST.QtySellThis211, 0) + ISNULL(MST.QtySellThis212, 0) + ISNULL(MST.QtySellThis213, 0) + ISNULL(MST.QtySellThis214, 0) + ISNULL(MST.QtySellThis215, 0) + ISNULL(MST.QtySellThis216, 0) + ISNULL(MST.QtySellThis217, 0) + ISNULL(MST.QtySellThis218, 0) + ISNULL(MST.QtySellThis219, 0) + ISNULL(MST.QtySellThis220, 0) + 
											  ISNULL(MST.QtySellThis221, 0) + ISNULL(MST.QtySellThis222, 0) + ISNULL(MST.QtySellThis223, 0) + ISNULL(MST.QtySellThis224, 0) + ISNULL(MST.QtySellThis225, 0) + ISNULL(MST.QtySellThis226, 0) + ISNULL(MST.QtySellThis227, 0) + ISNULL(MST.QtySellThis228, 0) + ISNULL(MST.QtySellThis229, 0) + ISNULL(MST.QtySellThis230, 0) + 
											  ISNULL(MST.QtySellThis231, 0) + ISNULL(MST.QtySellThis232, 0) + ISNULL(MST.QtySellThis233, 0) + ISNULL(MST.QtySellThis234, 0) + ISNULL(MST.QtySellThis235, 0) + ISNULL(MST.QtySellThis236, 0) + ISNULL(MST.QtySellThis237, 0) + ISNULL(MST.QtySellThis238, 0) + ISNULL(MST.QtySellThis239, 0) + ISNULL(MST.QtySellThis240, 0))) 

				+ ((ISNULL(MST.QtyBuyLast, 0) + ISNULL(MST.QtyAdjustLast, 0)) - ISNULL(MST.QtySellLast, 0))) AS Qty 
	FROM tblUtilityPervMultiStoreTrn MST 
	INNER JOIN tblUtilityPervInventory INV ON MST.ItemCode = INV.ItemCode 
	WHERE (INV.Physical = 1)
	AND (SUBSTRING(LTRIM(RTRIM(ISNULL(MST.StoreCode, ''))), 1, 10) <> '')
	GROUP BY MST.StoreCode, 
			 MST.ItemCode, 
			 MST.CostThis12, 
			 MST.LastInvDate, 
			 MST.LastPurchDate 
	HAVING SUM((ISNULL(MST.OpeningQty, 0) + ((ISNULL(MST.QtyBuyThis01, 0) + ISNULL(MST.QtyBuyThis02, 0) + ISNULL(MST.QtyBuyThis03, 0) + ISNULL(MST.QtyBuyThis04, 0) + ISNULL(MST.QtyBuyThis05, 0) + ISNULL(MST.QtyBuyThis06, 0) + ISNULL(MST.QtyBuyThis07, 0) + ISNULL(MST.QtyBuyThis08, 0) + ISNULL(MST.QtyBuyThis09, 0) + ISNULL(MST.QtyBuyThis10, 0) + 
											  ISNULL(MST.QtyBuyThis11, 0) + ISNULL(MST.QtyBuyThis12, 0) + ISNULL(MST.QtyBuyThis13, 0) + ISNULL(MST.QtyBuyThis14, 0) + ISNULL(MST.QtyBuyThis15, 0) + ISNULL(MST.QtyBuyThis16, 0) + ISNULL(MST.QtyBuyThis17, 0) + ISNULL(MST.QtyBuyThis18, 0) + ISNULL(MST.QtyBuyThis19, 0) + ISNULL(MST.QtyBuyThis20, 0) + 
											  ISNULL(MST.QtyBuyThis21, 0) + ISNULL(MST.QtyBuyThis22, 0) + ISNULL(MST.QtyBuyThis23, 0) + ISNULL(MST.QtyBuyThis24, 0) + ISNULL(MST.QtyBuyThis25, 0) + ISNULL(MST.QtyBuyThis26, 0) + ISNULL(MST.QtyBuyThis27, 0) + ISNULL(MST.QtyBuyThis28, 0) + ISNULL(MST.QtyBuyThis29, 0) + ISNULL(MST.QtyBuyThis30, 0) + 
											  ISNULL(MST.QtyBuyThis31, 0) + ISNULL(MST.QtyBuyThis32, 0) + ISNULL(MST.QtyBuyThis33, 0) + ISNULL(MST.QtyBuyThis34, 0) + ISNULL(MST.QtyBuyThis35, 0) + ISNULL(MST.QtyBuyThis36, 0) + ISNULL(MST.QtyBuyThis37, 0) + ISNULL(MST.QtyBuyThis38, 0) + ISNULL(MST.QtyBuyThis39, 0) + ISNULL(MST.QtyBuyThis40, 0) + 
											  ISNULL(MST.QtyBuyThis41, 0) + ISNULL(MST.QtyBuyThis42, 0) + ISNULL(MST.QtyBuyThis43, 0) + ISNULL(MST.QtyBuyThis44, 0) + ISNULL(MST.QtyBuyThis45, 0) + ISNULL(MST.QtyBuyThis46, 0) + ISNULL(MST.QtyBuyThis47, 0) + ISNULL(MST.QtyBuyThis48, 0) + ISNULL(MST.QtyBuyThis49, 0) + ISNULL(MST.QtyBuyThis50, 0) + 
											  ISNULL(MST.QtyBuyThis51, 0) + ISNULL(MST.QtyBuyThis52, 0) + ISNULL(MST.QtyBuyThis53, 0) + ISNULL(MST.QtyBuyThis54, 0) + ISNULL(MST.QtyBuyThis55, 0) + ISNULL(MST.QtyBuyThis56, 0) + ISNULL(MST.QtyBuyThis57, 0) + ISNULL(MST.QtyBuyThis58, 0) + ISNULL(MST.QtyBuyThis59, 0) + ISNULL(MST.QtyBuyThis60, 0) + 
											  ISNULL(MST.QtyBuyThis61, 0) + ISNULL(MST.QtyBuyThis62, 0) + ISNULL(MST.QtyBuyThis63, 0) + ISNULL(MST.QtyBuyThis64, 0) + ISNULL(MST.QtyBuyThis65, 0) + ISNULL(MST.QtyBuyThis66, 0) + ISNULL(MST.QtyBuyThis67, 0) + ISNULL(MST.QtyBuyThis68, 0) + ISNULL(MST.QtyBuyThis69, 0) + ISNULL(MST.QtyBuyThis70, 0) + 
											  ISNULL(MST.QtyBuyThis71, 0) + ISNULL(MST.QtyBuyThis72, 0) + ISNULL(MST.QtyBuyThis73, 0) + ISNULL(MST.QtyBuyThis74, 0) + ISNULL(MST.QtyBuyThis75, 0) + ISNULL(MST.QtyBuyThis76, 0) + ISNULL(MST.QtyBuyThis77, 0) + ISNULL(MST.QtyBuyThis78, 0) + ISNULL(MST.QtyBuyThis79, 0) + ISNULL(MST.QtyBuyThis80, 0) + 
											  ISNULL(MST.QtyBuyThis81, 0) + ISNULL(MST.QtyBuyThis82, 0) + ISNULL(MST.QtyBuyThis83, 0) + ISNULL(MST.QtyBuyThis84, 0) + ISNULL(MST.QtyBuyThis85, 0) + ISNULL(MST.QtyBuyThis86, 0) + ISNULL(MST.QtyBuyThis87, 0) + ISNULL(MST.QtyBuyThis88, 0) + ISNULL(MST.QtyBuyThis89, 0) + ISNULL(MST.QtyBuyThis90, 0) + 
											  ISNULL(MST.QtyBuyThis91, 0) + ISNULL(MST.QtyBuyThis92, 0) + ISNULL(MST.QtyBuyThis93, 0) + ISNULL(MST.QtyBuyThis94, 0) + ISNULL(MST.QtyBuyThis95, 0) + ISNULL(MST.QtyBuyThis96, 0) + ISNULL(MST.QtyBuyThis97, 0) + ISNULL(MST.QtyBuyThis98, 0) + ISNULL(MST.QtyBuyThis99, 0) + ISNULL(MST.QtyBuyThis100, 0) +
											  ISNULL(MST.QtyBuyThis101, 0) + ISNULL(MST.QtyBuyThis102, 0) + ISNULL(MST.QtyBuyThis103, 0) + ISNULL(MST.QtyBuyThis104, 0) + ISNULL(MST.QtyBuyThis105, 0) + ISNULL(MST.QtyBuyThis106, 0) + ISNULL(MST.QtyBuyThis107, 0) + ISNULL(MST.QtyBuyThis108, 0) + ISNULL(MST.QtyBuyThis109, 0) + ISNULL(MST.QtyBuyThis110, 0) + 
											  ISNULL(MST.QtyBuyThis111, 0) + ISNULL(MST.QtyBuyThis112, 0) + ISNULL(MST.QtyBuyThis113, 0) + ISNULL(MST.QtyBuyThis114, 0) + ISNULL(MST.QtyBuyThis115, 0) + ISNULL(MST.QtyBuyThis116, 0) + ISNULL(MST.QtyBuyThis117, 0) + ISNULL(MST.QtyBuyThis118, 0) + ISNULL(MST.QtyBuyThis119, 0) + ISNULL(MST.QtyBuyThis120, 0) + 
											  ISNULL(MST.QtyBuyThis121, 0) + ISNULL(MST.QtyBuyThis122, 0) + ISNULL(MST.QtyBuyThis123, 0) + ISNULL(MST.QtyBuyThis124, 0) + ISNULL(MST.QtyBuyThis125, 0) + ISNULL(MST.QtyBuyThis126, 0) + ISNULL(MST.QtyBuyThis127, 0) + ISNULL(MST.QtyBuyThis128, 0) + ISNULL(MST.QtyBuyThis129, 0) + ISNULL(MST.QtyBuyThis130, 0) + 
											  ISNULL(MST.QtyBuyThis131, 0) + ISNULL(MST.QtyBuyThis132, 0) + ISNULL(MST.QtyBuyThis133, 0) + ISNULL(MST.QtyBuyThis134, 0) + ISNULL(MST.QtyBuyThis135, 0) + ISNULL(MST.QtyBuyThis136, 0) + ISNULL(MST.QtyBuyThis137, 0) + ISNULL(MST.QtyBuyThis138, 0) + ISNULL(MST.QtyBuyThis139, 0) + ISNULL(MST.QtyBuyThis140, 0) + 
											  ISNULL(MST.QtyBuyThis141, 0) + ISNULL(MST.QtyBuyThis142, 0) + ISNULL(MST.QtyBuyThis143, 0) + ISNULL(MST.QtyBuyThis144, 0) + ISNULL(MST.QtyBuyThis145, 0) + ISNULL(MST.QtyBuyThis146, 0) + ISNULL(MST.QtyBuyThis147, 0) + ISNULL(MST.QtyBuyThis148, 0) + ISNULL(MST.QtyBuyThis149, 0) + ISNULL(MST.QtyBuyThis150, 0) + 
											  ISNULL(MST.QtyBuyThis151, 0) + ISNULL(MST.QtyBuyThis152, 0) + ISNULL(MST.QtyBuyThis153, 0) + ISNULL(MST.QtyBuyThis154, 0) + ISNULL(MST.QtyBuyThis155, 0) + ISNULL(MST.QtyBuyThis156, 0) + ISNULL(MST.QtyBuyThis157, 0) + ISNULL(MST.QtyBuyThis158, 0) + ISNULL(MST.QtyBuyThis159, 0) + ISNULL(MST.QtyBuyThis160, 0) + 
											  ISNULL(MST.QtyBuyThis161, 0) + ISNULL(MST.QtyBuyThis162, 0) + ISNULL(MST.QtyBuyThis163, 0) + ISNULL(MST.QtyBuyThis164, 0) + ISNULL(MST.QtyBuyThis165, 0) + ISNULL(MST.QtyBuyThis166, 0) + ISNULL(MST.QtyBuyThis167, 0) + ISNULL(MST.QtyBuyThis168, 0) + ISNULL(MST.QtyBuyThis169, 0) + ISNULL(MST.QtyBuyThis170, 0) + 
											  ISNULL(MST.QtyBuyThis171, 0) + ISNULL(MST.QtyBuyThis172, 0) + ISNULL(MST.QtyBuyThis173, 0) + ISNULL(MST.QtyBuyThis174, 0) + ISNULL(MST.QtyBuyThis175, 0) + ISNULL(MST.QtyBuyThis176, 0) + ISNULL(MST.QtyBuyThis177, 0) + ISNULL(MST.QtyBuyThis178, 0) + ISNULL(MST.QtyBuyThis179, 0) + ISNULL(MST.QtyBuyThis180, 0) + 
											  ISNULL(MST.QtyBuyThis181, 0) + ISNULL(MST.QtyBuyThis182, 0) + ISNULL(MST.QtyBuyThis183, 0) + ISNULL(MST.QtyBuyThis184, 0) + ISNULL(MST.QtyBuyThis185, 0) + ISNULL(MST.QtyBuyThis186, 0) + ISNULL(MST.QtyBuyThis187, 0) + ISNULL(MST.QtyBuyThis188, 0) + ISNULL(MST.QtyBuyThis189, 0) + ISNULL(MST.QtyBuyThis190, 0) + 
											  ISNULL(MST.QtyBuyThis191, 0) + ISNULL(MST.QtyBuyThis192, 0) + ISNULL(MST.QtyBuyThis193, 0) + ISNULL(MST.QtyBuyThis194, 0) + ISNULL(MST.QtyBuyThis195, 0) + ISNULL(MST.QtyBuyThis196, 0) + ISNULL(MST.QtyBuyThis197, 0) + ISNULL(MST.QtyBuyThis198, 0) + ISNULL(MST.QtyBuyThis199, 0) + ISNULL(MST.QtyBuyThis200, 0) +
											  ISNULL(MST.QtyBuyThis201, 0) + ISNULL(MST.QtyBuyThis202, 0) + ISNULL(MST.QtyBuyThis203, 0) + ISNULL(MST.QtyBuyThis204, 0) + ISNULL(MST.QtyBuyThis205, 0) + ISNULL(MST.QtyBuyThis206, 0) + ISNULL(MST.QtyBuyThis207, 0) + ISNULL(MST.QtyBuyThis208, 0) + ISNULL(MST.QtyBuyThis209, 0) + ISNULL(MST.QtyBuyThis210, 0) + 
											  ISNULL(MST.QtyBuyThis211, 0) + ISNULL(MST.QtyBuyThis212, 0) + ISNULL(MST.QtyBuyThis213, 0) + ISNULL(MST.QtyBuyThis214, 0) + ISNULL(MST.QtyBuyThis215, 0) + ISNULL(MST.QtyBuyThis216, 0) + ISNULL(MST.QtyBuyThis217, 0) + ISNULL(MST.QtyBuyThis218, 0) + ISNULL(MST.QtyBuyThis219, 0) + ISNULL(MST.QtyBuyThis220, 0) + 
											  ISNULL(MST.QtyBuyThis221, 0) + ISNULL(MST.QtyBuyThis222, 0) + ISNULL(MST.QtyBuyThis223, 0) + ISNULL(MST.QtyBuyThis224, 0) + ISNULL(MST.QtyBuyThis225, 0) + ISNULL(MST.QtyBuyThis226, 0) + ISNULL(MST.QtyBuyThis227, 0) + ISNULL(MST.QtyBuyThis228, 0) + ISNULL(MST.QtyBuyThis229, 0) + ISNULL(MST.QtyBuyThis230, 0) + 
											  ISNULL(MST.QtyBuyThis231, 0) + ISNULL(MST.QtyBuyThis232, 0) + ISNULL(MST.QtyBuyThis233, 0) + ISNULL(MST.QtyBuyThis234, 0) + ISNULL(MST.QtyBuyThis235, 0) + ISNULL(MST.QtyBuyThis236, 0) + ISNULL(MST.QtyBuyThis237, 0) + ISNULL(MST.QtyBuyThis238, 0) + ISNULL(MST.QtyBuyThis239, 0) + ISNULL(MST.QtyBuyThis240, 0)) 

											 + (ISNULL(MST.QtyAdjustThis01, 0) + ISNULL(MST.QtyAdjustThis02, 0) + ISNULL(MST.QtyAdjustThis03, 0) + ISNULL(MST.QtyAdjustThis04, 0) + ISNULL(MST.QtyAdjustThis05, 0) + ISNULL(MST.QtyAdjustThis06, 0) + ISNULL(MST.QtyAdjustThis07, 0) + ISNULL(MST.QtyAdjustThis08, 0) + ISNULL(MST.QtyAdjustThis09, 0) + ISNULL(MST.QtyAdjustThis10, 0) + 
												ISNULL(MST.QtyAdjustThis11, 0) + ISNULL(MST.QtyAdjustThis12, 0) + ISNULL(MST.QtyAdjustThis13, 0) + ISNULL(MST.QtyAdjustThis14, 0) + ISNULL(MST.QtyAdjustThis15, 0) + ISNULL(MST.QtyAdjustThis16, 0) + ISNULL(MST.QtyAdjustThis17, 0) + ISNULL(MST.QtyAdjustThis18, 0) + ISNULL(MST.QtyAdjustThis19, 0) + ISNULL(MST.QtyAdjustThis20, 0) + 
												ISNULL(MST.QtyAdjustThis21, 0) + ISNULL(MST.QtyAdjustThis22, 0) + ISNULL(MST.QtyAdjustThis23, 0) + ISNULL(MST.QtyAdjustThis24, 0) + ISNULL(MST.QtyAdjustThis25, 0) + ISNULL(MST.QtyAdjustThis26, 0) + ISNULL(MST.QtyAdjustThis27, 0) + ISNULL(MST.QtyAdjustThis28, 0) + ISNULL(MST.QtyAdjustThis29, 0) + ISNULL(MST.QtyAdjustThis30, 0) + 
												ISNULL(MST.QtyAdjustThis31, 0) + ISNULL(MST.QtyAdjustThis32, 0) + ISNULL(MST.QtyAdjustThis33, 0) + ISNULL(MST.QtyAdjustThis34, 0) + ISNULL(MST.QtyAdjustThis35, 0) + ISNULL(MST.QtyAdjustThis36, 0) + ISNULL(MST.QtyAdjustThis37, 0) + ISNULL(MST.QtyAdjustThis38, 0) + ISNULL(MST.QtyAdjustThis39, 0) + ISNULL(MST.QtyAdjustThis40, 0) + 
												ISNULL(MST.QtyAdjustThis41, 0) + ISNULL(MST.QtyAdjustThis42, 0) + ISNULL(MST.QtyAdjustThis43, 0) + ISNULL(MST.QtyAdjustThis44, 0) + ISNULL(MST.QtyAdjustThis45, 0) + ISNULL(MST.QtyAdjustThis46, 0) + ISNULL(MST.QtyAdjustThis47, 0) + ISNULL(MST.QtyAdjustThis48, 0) + ISNULL(MST.QtyAdjustThis49, 0) + ISNULL(MST.QtyAdjustThis50, 0) + 
												ISNULL(MST.QtyAdjustThis51, 0) + ISNULL(MST.QtyAdjustThis52, 0) + ISNULL(MST.QtyAdjustThis53, 0) + ISNULL(MST.QtyAdjustThis54, 0) + ISNULL(MST.QtyAdjustThis55, 0) + ISNULL(MST.QtyAdjustThis56, 0) + ISNULL(MST.QtyAdjustThis57, 0) + ISNULL(MST.QtyAdjustThis58, 0) + ISNULL(MST.QtyAdjustThis59, 0) + ISNULL(MST.QtyAdjustThis60, 0) + 
												ISNULL(MST.QtyAdjustThis61, 0) + ISNULL(MST.QtyAdjustThis62, 0) + ISNULL(MST.QtyAdjustThis63, 0) + ISNULL(MST.QtyAdjustThis64, 0) + ISNULL(MST.QtyAdjustThis65, 0) + ISNULL(MST.QtyAdjustThis66, 0) + ISNULL(MST.QtyAdjustThis67, 0) + ISNULL(MST.QtyAdjustThis68, 0) + ISNULL(MST.QtyAdjustThis69, 0) + ISNULL(MST.QtyAdjustThis70, 0) + 
												ISNULL(MST.QtyAdjustThis71, 0) + ISNULL(MST.QtyAdjustThis72, 0) + ISNULL(MST.QtyAdjustThis73, 0) + ISNULL(MST.QtyAdjustThis74, 0) + ISNULL(MST.QtyAdjustThis75, 0) + ISNULL(MST.QtyAdjustThis76, 0) + ISNULL(MST.QtyAdjustThis77, 0) + ISNULL(MST.QtyAdjustThis78, 0) + ISNULL(MST.QtyAdjustThis79, 0) + ISNULL(MST.QtyAdjustThis80, 0) + 
												ISNULL(MST.QtyAdjustThis81, 0) + ISNULL(MST.QtyAdjustThis82, 0) + ISNULL(MST.QtyAdjustThis83, 0) + ISNULL(MST.QtyAdjustThis84, 0) + ISNULL(MST.QtyAdjustThis85, 0) + ISNULL(MST.QtyAdjustThis86, 0) + ISNULL(MST.QtyAdjustThis87, 0) + ISNULL(MST.QtyAdjustThis88, 0) + ISNULL(MST.QtyAdjustThis89, 0) + ISNULL(MST.QtyAdjustThis90, 0) + 
												ISNULL(MST.QtyAdjustThis91, 0) + ISNULL(MST.QtyAdjustThis92, 0) + ISNULL(MST.QtyAdjustThis93, 0) + ISNULL(MST.QtyAdjustThis94, 0) + ISNULL(MST.QtyAdjustThis95, 0) + ISNULL(MST.QtyAdjustThis96, 0) + ISNULL(MST.QtyAdjustThis97, 0) + ISNULL(MST.QtyAdjustThis98, 0) + ISNULL(MST.QtyAdjustThis99, 0) + ISNULL(MST.QtyAdjustThis100, 0) + 
												ISNULL(MST.QtyAdjustThis101, 0) + ISNULL(MST.QtyAdjustThis102, 0) + ISNULL(MST.QtyAdjustThis103, 0) + ISNULL(MST.QtyAdjustThis104, 0) + ISNULL(MST.QtyAdjustThis105, 0) + ISNULL(MST.QtyAdjustThis106, 0) + ISNULL(MST.QtyAdjustThis107, 0) + ISNULL(MST.QtyAdjustThis108, 0) + ISNULL(MST.QtyAdjustThis109, 0) + ISNULL(MST.QtyAdjustThis110, 0) + 
												ISNULL(MST.QtyAdjustThis111, 0) + ISNULL(MST.QtyAdjustThis112, 0) + ISNULL(MST.QtyAdjustThis113, 0) + ISNULL(MST.QtyAdjustThis114, 0) + ISNULL(MST.QtyAdjustThis115, 0) + ISNULL(MST.QtyAdjustThis116, 0) + ISNULL(MST.QtyAdjustThis117, 0) + ISNULL(MST.QtyAdjustThis118, 0) + ISNULL(MST.QtyAdjustThis119, 0) + ISNULL(MST.QtyAdjustThis120, 0) + 
												ISNULL(MST.QtyAdjustThis121, 0) + ISNULL(MST.QtyAdjustThis122, 0) + ISNULL(MST.QtyAdjustThis123, 0) + ISNULL(MST.QtyAdjustThis124, 0) + ISNULL(MST.QtyAdjustThis125, 0) + ISNULL(MST.QtyAdjustThis126, 0) + ISNULL(MST.QtyAdjustThis127, 0) + ISNULL(MST.QtyAdjustThis128, 0) + ISNULL(MST.QtyAdjustThis129, 0) + ISNULL(MST.QtyAdjustThis130, 0) + 
												ISNULL(MST.QtyAdjustThis131, 0) + ISNULL(MST.QtyAdjustThis132, 0) + ISNULL(MST.QtyAdjustThis133, 0) + ISNULL(MST.QtyAdjustThis134, 0) + ISNULL(MST.QtyAdjustThis135, 0) + ISNULL(MST.QtyAdjustThis136, 0) + ISNULL(MST.QtyAdjustThis137, 0) + ISNULL(MST.QtyAdjustThis138, 0) + ISNULL(MST.QtyAdjustThis139, 0) + ISNULL(MST.QtyAdjustThis140, 0) + 
												ISNULL(MST.QtyAdjustThis141, 0) + ISNULL(MST.QtyAdjustThis142, 0) + ISNULL(MST.QtyAdjustThis143, 0) + ISNULL(MST.QtyAdjustThis144, 0) + ISNULL(MST.QtyAdjustThis145, 0) + ISNULL(MST.QtyAdjustThis146, 0) + ISNULL(MST.QtyAdjustThis147, 0) + ISNULL(MST.QtyAdjustThis148, 0) + ISNULL(MST.QtyAdjustThis149, 0) + ISNULL(MST.QtyAdjustThis150, 0) + 
												ISNULL(MST.QtyAdjustThis151, 0) + ISNULL(MST.QtyAdjustThis152, 0) + ISNULL(MST.QtyAdjustThis153, 0) + ISNULL(MST.QtyAdjustThis154, 0) + ISNULL(MST.QtyAdjustThis155, 0) + ISNULL(MST.QtyAdjustThis156, 0) + ISNULL(MST.QtyAdjustThis157, 0) + ISNULL(MST.QtyAdjustThis158, 0) + ISNULL(MST.QtyAdjustThis159, 0) + ISNULL(MST.QtyAdjustThis160, 0) + 
												ISNULL(MST.QtyAdjustThis161, 0) + ISNULL(MST.QtyAdjustThis162, 0) + ISNULL(MST.QtyAdjustThis163, 0) + ISNULL(MST.QtyAdjustThis164, 0) + ISNULL(MST.QtyAdjustThis165, 0) + ISNULL(MST.QtyAdjustThis166, 0) + ISNULL(MST.QtyAdjustThis167, 0) + ISNULL(MST.QtyAdjustThis168, 0) + ISNULL(MST.QtyAdjustThis169, 0) + ISNULL(MST.QtyAdjustThis170, 0) + 
												ISNULL(MST.QtyAdjustThis171, 0) + ISNULL(MST.QtyAdjustThis172, 0) + ISNULL(MST.QtyAdjustThis173, 0) + ISNULL(MST.QtyAdjustThis174, 0) + ISNULL(MST.QtyAdjustThis175, 0) + ISNULL(MST.QtyAdjustThis176, 0) + ISNULL(MST.QtyAdjustThis177, 0) + ISNULL(MST.QtyAdjustThis178, 0) + ISNULL(MST.QtyAdjustThis179, 0) + ISNULL(MST.QtyAdjustThis180, 0) + 
												ISNULL(MST.QtyAdjustThis181, 0) + ISNULL(MST.QtyAdjustThis182, 0) + ISNULL(MST.QtyAdjustThis183, 0) + ISNULL(MST.QtyAdjustThis184, 0) + ISNULL(MST.QtyAdjustThis185, 0) + ISNULL(MST.QtyAdjustThis186, 0) + ISNULL(MST.QtyAdjustThis187, 0) + ISNULL(MST.QtyAdjustThis188, 0) + ISNULL(MST.QtyAdjustThis189, 0) + ISNULL(MST.QtyAdjustThis190, 0) + 
												ISNULL(MST.QtyAdjustThis191, 0) + ISNULL(MST.QtyAdjustThis192, 0) + ISNULL(MST.QtyAdjustThis193, 0) + ISNULL(MST.QtyAdjustThis194, 0) + ISNULL(MST.QtyAdjustThis195, 0) + ISNULL(MST.QtyAdjustThis196, 0) + ISNULL(MST.QtyAdjustThis197, 0) + ISNULL(MST.QtyAdjustThis198, 0) + ISNULL(MST.QtyAdjustThis199, 0) + ISNULL(MST.QtyAdjustThis200, 0) + 
												ISNULL(MST.QtyAdjustThis201, 0) + ISNULL(MST.QtyAdjustThis202, 0) + ISNULL(MST.QtyAdjustThis203, 0) + ISNULL(MST.QtyAdjustThis204, 0) + ISNULL(MST.QtyAdjustThis205, 0) + ISNULL(MST.QtyAdjustThis206, 0) + ISNULL(MST.QtyAdjustThis207, 0) + ISNULL(MST.QtyAdjustThis208, 0) + ISNULL(MST.QtyAdjustThis209, 0) + ISNULL(MST.QtyAdjustThis210, 0) + 
												ISNULL(MST.QtyAdjustThis211, 0) + ISNULL(MST.QtyAdjustThis212, 0) + ISNULL(MST.QtyAdjustThis213, 0) + ISNULL(MST.QtyAdjustThis214, 0) + ISNULL(MST.QtyAdjustThis215, 0) + ISNULL(MST.QtyAdjustThis216, 0) + ISNULL(MST.QtyAdjustThis217, 0) + ISNULL(MST.QtyAdjustThis218, 0) + ISNULL(MST.QtyAdjustThis219, 0) + ISNULL(MST.QtyAdjustThis220, 0) + 
												ISNULL(MST.QtyAdjustThis221, 0) + ISNULL(MST.QtyAdjustThis222, 0) + ISNULL(MST.QtyAdjustThis223, 0) + ISNULL(MST.QtyAdjustThis224, 0) + ISNULL(MST.QtyAdjustThis225, 0) + ISNULL(MST.QtyAdjustThis226, 0) + ISNULL(MST.QtyAdjustThis227, 0) + ISNULL(MST.QtyAdjustThis228, 0) + ISNULL(MST.QtyAdjustThis229, 0) + ISNULL(MST.QtyAdjustThis230, 0) + 
												ISNULL(MST.QtyAdjustThis231, 0) + ISNULL(MST.QtyAdjustThis232, 0) + ISNULL(MST.QtyAdjustThis233, 0) + ISNULL(MST.QtyAdjustThis234, 0) + ISNULL(MST.QtyAdjustThis235, 0) + ISNULL(MST.QtyAdjustThis236, 0) + ISNULL(MST.QtyAdjustThis237, 0) + ISNULL(MST.QtyAdjustThis238, 0) + ISNULL(MST.QtyAdjustThis239, 0) + ISNULL(MST.QtyAdjustThis240, 0))) 

										  + (ISNULL(MST.QtySellThis01, 0) + ISNULL(MST.QtySellThis02, 0) + ISNULL(MST.QtySellThis03, 0) + ISNULL(MST.QtySellThis04, 0) + ISNULL(MST.QtySellThis05, 0) + ISNULL(MST.QtySellThis06, 0) + ISNULL(MST.QtySellThis07, 0) + ISNULL(MST.QtySellThis08, 0) + ISNULL(MST.QtySellThis09, 0) + ISNULL(MST.QtySellThis10, 0) + 
											 ISNULL(MST.QtySellThis11, 0) + ISNULL(MST.QtySellThis12, 0) + ISNULL(MST.QtySellThis13, 0) + ISNULL(MST.QtySellThis14, 0) + ISNULL(MST.QtySellThis15, 0) + ISNULL(MST.QtySellThis16, 0) + ISNULL(MST.QtySellThis17, 0) + ISNULL(MST.QtySellThis18, 0) + ISNULL(MST.QtySellThis19, 0) + ISNULL(MST.QtySellThis20, 0) + 
											 ISNULL(MST.QtySellThis21, 0) + ISNULL(MST.QtySellThis22, 0) + ISNULL(MST.QtySellThis23, 0) + ISNULL(MST.QtySellThis24, 0) + ISNULL(MST.QtySellThis25, 0) + ISNULL(MST.QtySellThis26, 0) + ISNULL(MST.QtySellThis27, 0) + ISNULL(MST.QtySellThis28, 0) + ISNULL(MST.QtySellThis29, 0) + ISNULL(MST.QtySellThis30, 0) + 
											 ISNULL(MST.QtySellThis31, 0) + ISNULL(MST.QtySellThis32, 0) + ISNULL(MST.QtySellThis33, 0) + ISNULL(MST.QtySellThis34, 0) + ISNULL(MST.QtySellThis35, 0) + ISNULL(MST.QtySellThis36, 0) + ISNULL(MST.QtySellThis37, 0) + ISNULL(MST.QtySellThis38, 0) + ISNULL(MST.QtySellThis39, 0) + ISNULL(MST.QtySellThis40, 0) + 
											 ISNULL(MST.QtySellThis41, 0) + ISNULL(MST.QtySellThis42, 0) + ISNULL(MST.QtySellThis43, 0) + ISNULL(MST.QtySellThis44, 0) + ISNULL(MST.QtySellThis45, 0) + ISNULL(MST.QtySellThis46, 0) + ISNULL(MST.QtySellThis47, 0) + ISNULL(MST.QtySellThis48, 0) + ISNULL(MST.QtySellThis49, 0) + ISNULL(MST.QtySellThis50, 0) + 
											 ISNULL(MST.QtySellThis51, 0) + ISNULL(MST.QtySellThis52, 0) + ISNULL(MST.QtySellThis53, 0) + ISNULL(MST.QtySellThis54, 0) + ISNULL(MST.QtySellThis55, 0) + ISNULL(MST.QtySellThis56, 0) + ISNULL(MST.QtySellThis57, 0) + ISNULL(MST.QtySellThis58, 0) + ISNULL(MST.QtySellThis59, 0) + ISNULL(MST.QtySellThis60, 0) + 
											 ISNULL(MST.QtySellThis61, 0) + ISNULL(MST.QtySellThis62, 0) + ISNULL(MST.QtySellThis63, 0) + ISNULL(MST.QtySellThis64, 0) + ISNULL(MST.QtySellThis65, 0) + ISNULL(MST.QtySellThis66, 0) + ISNULL(MST.QtySellThis67, 0) + ISNULL(MST.QtySellThis68, 0) + ISNULL(MST.QtySellThis69, 0) + ISNULL(MST.QtySellThis70, 0) + 
											 ISNULL(MST.QtySellThis71, 0) + ISNULL(MST.QtySellThis72, 0) + ISNULL(MST.QtySellThis73, 0) + ISNULL(MST.QtySellThis74, 0) + ISNULL(MST.QtySellThis75, 0) + ISNULL(MST.QtySellThis76, 0) + ISNULL(MST.QtySellThis77, 0) + ISNULL(MST.QtySellThis78, 0) + ISNULL(MST.QtySellThis79, 0) + ISNULL(MST.QtySellThis80, 0) + 
											 ISNULL(MST.QtySellThis81, 0) + ISNULL(MST.QtySellThis82, 0) + ISNULL(MST.QtySellThis83, 0) + ISNULL(MST.QtySellThis84, 0) + ISNULL(MST.QtySellThis85, 0) + ISNULL(MST.QtySellThis86, 0) + ISNULL(MST.QtySellThis87, 0) + ISNULL(MST.QtySellThis88, 0) + ISNULL(MST.QtySellThis89, 0) + ISNULL(MST.QtySellThis90, 0) + 
											 ISNULL(MST.QtySellThis91, 0) + ISNULL(MST.QtySellThis92, 0) + ISNULL(MST.QtySellThis93, 0) + ISNULL(MST.QtySellThis94, 0) + ISNULL(MST.QtySellThis95, 0) + ISNULL(MST.QtySellThis96, 0) + ISNULL(MST.QtySellThis97, 0) + ISNULL(MST.QtySellThis98, 0) + ISNULL(MST.QtySellThis99, 0) + ISNULL(MST.QtySellThis100, 0) + 
											 ISNULL(MST.QtySellThis101, 0) + ISNULL(MST.QtySellThis102, 0) + ISNULL(MST.QtySellThis103, 0) + ISNULL(MST.QtySellThis104, 0) + ISNULL(MST.QtySellThis105, 0) + ISNULL(MST.QtySellThis106, 0) + ISNULL(MST.QtySellThis107, 0) + ISNULL(MST.QtySellThis108, 0) + ISNULL(MST.QtySellThis109, 0) + ISNULL(MST.QtySellThis110, 0) + 
											 ISNULL(MST.QtySellThis111, 0) + ISNULL(MST.QtySellThis112, 0) + ISNULL(MST.QtySellThis113, 0) + ISNULL(MST.QtySellThis114, 0) + ISNULL(MST.QtySellThis115, 0) + ISNULL(MST.QtySellThis116, 0) + ISNULL(MST.QtySellThis117, 0) + ISNULL(MST.QtySellThis118, 0) + ISNULL(MST.QtySellThis119, 0) + ISNULL(MST.QtySellThis120, 0) + 
											 ISNULL(MST.QtySellThis121, 0) + ISNULL(MST.QtySellThis122, 0) + ISNULL(MST.QtySellThis123, 0) + ISNULL(MST.QtySellThis124, 0) + ISNULL(MST.QtySellThis125, 0) + ISNULL(MST.QtySellThis126, 0) + ISNULL(MST.QtySellThis127, 0) + ISNULL(MST.QtySellThis128, 0) + ISNULL(MST.QtySellThis129, 0) + ISNULL(MST.QtySellThis130, 0) + 
											 ISNULL(MST.QtySellThis131, 0) + ISNULL(MST.QtySellThis132, 0) + ISNULL(MST.QtySellThis133, 0) + ISNULL(MST.QtySellThis134, 0) + ISNULL(MST.QtySellThis135, 0) + ISNULL(MST.QtySellThis136, 0) + ISNULL(MST.QtySellThis137, 0) + ISNULL(MST.QtySellThis138, 0) + ISNULL(MST.QtySellThis139, 0) + ISNULL(MST.QtySellThis140, 0) + 
											 ISNULL(MST.QtySellThis141, 0) + ISNULL(MST.QtySellThis142, 0) + ISNULL(MST.QtySellThis143, 0) + ISNULL(MST.QtySellThis144, 0) + ISNULL(MST.QtySellThis145, 0) + ISNULL(MST.QtySellThis146, 0) + ISNULL(MST.QtySellThis147, 0) + ISNULL(MST.QtySellThis148, 0) + ISNULL(MST.QtySellThis149, 0) + ISNULL(MST.QtySellThis150, 0) + 
											 ISNULL(MST.QtySellThis151, 0) + ISNULL(MST.QtySellThis152, 0) + ISNULL(MST.QtySellThis153, 0) + ISNULL(MST.QtySellThis154, 0) + ISNULL(MST.QtySellThis155, 0) + ISNULL(MST.QtySellThis156, 0) + ISNULL(MST.QtySellThis157, 0) + ISNULL(MST.QtySellThis158, 0) + ISNULL(MST.QtySellThis159, 0) + ISNULL(MST.QtySellThis160, 0) + 
											 ISNULL(MST.QtySellThis161, 0) + ISNULL(MST.QtySellThis162, 0) + ISNULL(MST.QtySellThis163, 0) + ISNULL(MST.QtySellThis164, 0) + ISNULL(MST.QtySellThis165, 0) + ISNULL(MST.QtySellThis166, 0) + ISNULL(MST.QtySellThis167, 0) + ISNULL(MST.QtySellThis168, 0) + ISNULL(MST.QtySellThis169, 0) + ISNULL(MST.QtySellThis170, 0) + 
											 ISNULL(MST.QtySellThis171, 0) + ISNULL(MST.QtySellThis172, 0) + ISNULL(MST.QtySellThis173, 0) + ISNULL(MST.QtySellThis174, 0) + ISNULL(MST.QtySellThis175, 0) + ISNULL(MST.QtySellThis176, 0) + ISNULL(MST.QtySellThis177, 0) + ISNULL(MST.QtySellThis178, 0) + ISNULL(MST.QtySellThis179, 0) + ISNULL(MST.QtySellThis180, 0) + 
											 ISNULL(MST.QtySellThis181, 0) + ISNULL(MST.QtySellThis182, 0) + ISNULL(MST.QtySellThis183, 0) + ISNULL(MST.QtySellThis184, 0) + ISNULL(MST.QtySellThis185, 0) + ISNULL(MST.QtySellThis186, 0) + ISNULL(MST.QtySellThis187, 0) + ISNULL(MST.QtySellThis188, 0) + ISNULL(MST.QtySellThis189, 0) + ISNULL(MST.QtySellThis190, 0) + 
											 ISNULL(MST.QtySellThis191, 0) + ISNULL(MST.QtySellThis192, 0) + ISNULL(MST.QtySellThis193, 0) + ISNULL(MST.QtySellThis194, 0) + ISNULL(MST.QtySellThis195, 0) + ISNULL(MST.QtySellThis196, 0) + ISNULL(MST.QtySellThis197, 0) + ISNULL(MST.QtySellThis198, 0) + ISNULL(MST.QtySellThis199, 0) + ISNULL(MST.QtySellThis200, 0) + 
											 ISNULL(MST.QtySellThis201, 0) + ISNULL(MST.QtySellThis202, 0) + ISNULL(MST.QtySellThis203, 0) + ISNULL(MST.QtySellThis204, 0) + ISNULL(MST.QtySellThis205, 0) + ISNULL(MST.QtySellThis206, 0) + ISNULL(MST.QtySellThis207, 0) + ISNULL(MST.QtySellThis208, 0) + ISNULL(MST.QtySellThis209, 0) + ISNULL(MST.QtySellThis210, 0) + 
											 ISNULL(MST.QtySellThis211, 0) + ISNULL(MST.QtySellThis212, 0) + ISNULL(MST.QtySellThis213, 0) + ISNULL(MST.QtySellThis214, 0) + ISNULL(MST.QtySellThis215, 0) + ISNULL(MST.QtySellThis216, 0) + ISNULL(MST.QtySellThis217, 0) + ISNULL(MST.QtySellThis218, 0) + ISNULL(MST.QtySellThis219, 0) + ISNULL(MST.QtySellThis220, 0) + 
											 ISNULL(MST.QtySellThis221, 0) + ISNULL(MST.QtySellThis222, 0) + ISNULL(MST.QtySellThis223, 0) + ISNULL(MST.QtySellThis224, 0) + ISNULL(MST.QtySellThis225, 0) + ISNULL(MST.QtySellThis226, 0) + ISNULL(MST.QtySellThis227, 0) + ISNULL(MST.QtySellThis228, 0) + ISNULL(MST.QtySellThis229, 0) + ISNULL(MST.QtySellThis230, 0) + 
											 ISNULL(MST.QtySellThis231, 0) + ISNULL(MST.QtySellThis232, 0) + ISNULL(MST.QtySellThis233, 0) + ISNULL(MST.QtySellThis234, 0) + ISNULL(MST.QtySellThis235, 0) + ISNULL(MST.QtySellThis236, 0) + ISNULL(MST.QtySellThis237, 0) + ISNULL(MST.QtySellThis238, 0) + ISNULL(MST.QtySellThis239, 0) + ISNULL(MST.QtySellThis240, 0))) 

			   + ((ISNULL(MST.QtyBuyLast, 0) + ISNULL(MST.QtyAdjustLast, 0)) - ISNULL(MST.QtySellLast, 0))) > 0
	ORDER BY MST.ItemCode,
			 MST.StoreCode

	IF NOT EXISTS (SELECT PartNumber FROM #Temp_INV)
	BEGIN

		INSERT INTO #Temp_INV (LocName, PartNumber, LastPPUnit, LastSale, LastPurchase, Qty)
		SELECT	SUBSTRING(LTRIM(RTRIM(ISNULL(MST.StoreCode, 'DEFAULT'))), 1, 10) AS LocName,
				SUBSTRING(LTRIM(RTRIM(ISNULL(MST.ItemCode, ''))), 1, 50) AS PartNumber, 
				ISNULL(MST.CostThis12, 0) AS LastPPUnit, 
				ISNULL(MST.LastInvDate, '1999-01-01') AS LastSale, 
				ISNULL(MST.LastPurchDate, '1999-01-01') AS LastPurchase, 
				SUM((ISNULL(MST.OpeningQty, 0) + ((ISNULL(MST.QtyBuyThis01, 0) + ISNULL(MST.QtyBuyThis02, 0) + ISNULL(MST.QtyBuyThis03, 0) + ISNULL(MST.QtyBuyThis04, 0) + ISNULL(MST.QtyBuyThis05, 0) + ISNULL(MST.QtyBuyThis06, 0) + ISNULL(MST.QtyBuyThis07, 0) + ISNULL(MST.QtyBuyThis08, 0) + ISNULL(MST.QtyBuyThis09, 0) + ISNULL(MST.QtyBuyThis10, 0) + 
												   ISNULL(MST.QtyBuyThis11, 0) + ISNULL(MST.QtyBuyThis12, 0) + ISNULL(MST.QtyBuyThis13, 0) + ISNULL(MST.QtyBuyThis14, 0) + ISNULL(MST.QtyBuyThis15, 0) + ISNULL(MST.QtyBuyThis16, 0) + ISNULL(MST.QtyBuyThis17, 0) + ISNULL(MST.QtyBuyThis18, 0) + ISNULL(MST.QtyBuyThis19, 0) + ISNULL(MST.QtyBuyThis20, 0) + 
												   ISNULL(MST.QtyBuyThis21, 0) + ISNULL(MST.QtyBuyThis22, 0) + ISNULL(MST.QtyBuyThis23, 0) + ISNULL(MST.QtyBuyThis24, 0) + ISNULL(MST.QtyBuyThis25, 0) + ISNULL(MST.QtyBuyThis26, 0) + ISNULL(MST.QtyBuyThis27, 0) + ISNULL(MST.QtyBuyThis28, 0) + ISNULL(MST.QtyBuyThis29, 0) + ISNULL(MST.QtyBuyThis30, 0) + 
												   ISNULL(MST.QtyBuyThis31, 0) + ISNULL(MST.QtyBuyThis32, 0) + ISNULL(MST.QtyBuyThis33, 0) + ISNULL(MST.QtyBuyThis34, 0) + ISNULL(MST.QtyBuyThis35, 0) + ISNULL(MST.QtyBuyThis36, 0) + ISNULL(MST.QtyBuyThis37, 0) + ISNULL(MST.QtyBuyThis38, 0) + ISNULL(MST.QtyBuyThis39, 0) + ISNULL(MST.QtyBuyThis40, 0) + 
												   ISNULL(MST.QtyBuyThis41, 0) + ISNULL(MST.QtyBuyThis42, 0) + ISNULL(MST.QtyBuyThis43, 0) + ISNULL(MST.QtyBuyThis44, 0) + ISNULL(MST.QtyBuyThis45, 0) + ISNULL(MST.QtyBuyThis46, 0) + ISNULL(MST.QtyBuyThis47, 0) + ISNULL(MST.QtyBuyThis48, 0) + ISNULL(MST.QtyBuyThis49, 0) + ISNULL(MST.QtyBuyThis50, 0) + 
												   ISNULL(MST.QtyBuyThis51, 0) + ISNULL(MST.QtyBuyThis52, 0) + ISNULL(MST.QtyBuyThis53, 0) + ISNULL(MST.QtyBuyThis54, 0) + ISNULL(MST.QtyBuyThis55, 0) + ISNULL(MST.QtyBuyThis56, 0) + ISNULL(MST.QtyBuyThis57, 0) + ISNULL(MST.QtyBuyThis58, 0) + ISNULL(MST.QtyBuyThis59, 0) + ISNULL(MST.QtyBuyThis60, 0) + 
												   ISNULL(MST.QtyBuyThis61, 0) + ISNULL(MST.QtyBuyThis62, 0) + ISNULL(MST.QtyBuyThis63, 0) + ISNULL(MST.QtyBuyThis64, 0) + ISNULL(MST.QtyBuyThis65, 0) + ISNULL(MST.QtyBuyThis66, 0) + ISNULL(MST.QtyBuyThis67, 0) + ISNULL(MST.QtyBuyThis68, 0) + ISNULL(MST.QtyBuyThis69, 0) + ISNULL(MST.QtyBuyThis70, 0) + 
												   ISNULL(MST.QtyBuyThis71, 0) + ISNULL(MST.QtyBuyThis72, 0) + ISNULL(MST.QtyBuyThis73, 0) + ISNULL(MST.QtyBuyThis74, 0) + ISNULL(MST.QtyBuyThis75, 0) + ISNULL(MST.QtyBuyThis76, 0) + ISNULL(MST.QtyBuyThis77, 0) + ISNULL(MST.QtyBuyThis78, 0) + ISNULL(MST.QtyBuyThis79, 0) + ISNULL(MST.QtyBuyThis80, 0) + 
												   ISNULL(MST.QtyBuyThis81, 0) + ISNULL(MST.QtyBuyThis82, 0) + ISNULL(MST.QtyBuyThis83, 0) + ISNULL(MST.QtyBuyThis84, 0) + ISNULL(MST.QtyBuyThis85, 0) + ISNULL(MST.QtyBuyThis86, 0) + ISNULL(MST.QtyBuyThis87, 0) + ISNULL(MST.QtyBuyThis88, 0) + ISNULL(MST.QtyBuyThis89, 0) + ISNULL(MST.QtyBuyThis90, 0) + 
												   ISNULL(MST.QtyBuyThis91, 0) + ISNULL(MST.QtyBuyThis92, 0) + ISNULL(MST.QtyBuyThis93, 0) + ISNULL(MST.QtyBuyThis94, 0) + ISNULL(MST.QtyBuyThis95, 0) + ISNULL(MST.QtyBuyThis96, 0) + ISNULL(MST.QtyBuyThis97, 0) + ISNULL(MST.QtyBuyThis98, 0) + ISNULL(MST.QtyBuyThis99, 0) + ISNULL(MST.QtyBuyThis100, 0) +
												   ISNULL(MST.QtyBuyThis101, 0) + ISNULL(MST.QtyBuyThis102, 0) + ISNULL(MST.QtyBuyThis103, 0) + ISNULL(MST.QtyBuyThis104, 0) + ISNULL(MST.QtyBuyThis105, 0) + ISNULL(MST.QtyBuyThis106, 0) + ISNULL(MST.QtyBuyThis107, 0) + ISNULL(MST.QtyBuyThis108, 0) + ISNULL(MST.QtyBuyThis109, 0) + ISNULL(MST.QtyBuyThis110, 0) + 
												   ISNULL(MST.QtyBuyThis111, 0) + ISNULL(MST.QtyBuyThis112, 0) + ISNULL(MST.QtyBuyThis113, 0) + ISNULL(MST.QtyBuyThis114, 0) + ISNULL(MST.QtyBuyThis115, 0) + ISNULL(MST.QtyBuyThis116, 0) + ISNULL(MST.QtyBuyThis117, 0) + ISNULL(MST.QtyBuyThis118, 0) + ISNULL(MST.QtyBuyThis119, 0) + ISNULL(MST.QtyBuyThis120, 0) + 
												   ISNULL(MST.QtyBuyThis121, 0) + ISNULL(MST.QtyBuyThis122, 0) + ISNULL(MST.QtyBuyThis123, 0) + ISNULL(MST.QtyBuyThis124, 0) + ISNULL(MST.QtyBuyThis125, 0) + ISNULL(MST.QtyBuyThis126, 0) + ISNULL(MST.QtyBuyThis127, 0) + ISNULL(MST.QtyBuyThis128, 0) + ISNULL(MST.QtyBuyThis129, 0) + ISNULL(MST.QtyBuyThis130, 0) + 
												   ISNULL(MST.QtyBuyThis131, 0) + ISNULL(MST.QtyBuyThis132, 0) + ISNULL(MST.QtyBuyThis133, 0) + ISNULL(MST.QtyBuyThis134, 0) + ISNULL(MST.QtyBuyThis135, 0) + ISNULL(MST.QtyBuyThis136, 0) + ISNULL(MST.QtyBuyThis137, 0) + ISNULL(MST.QtyBuyThis138, 0) + ISNULL(MST.QtyBuyThis139, 0) + ISNULL(MST.QtyBuyThis140, 0) + 
												   ISNULL(MST.QtyBuyThis141, 0) + ISNULL(MST.QtyBuyThis142, 0) + ISNULL(MST.QtyBuyThis143, 0) + ISNULL(MST.QtyBuyThis144, 0) + ISNULL(MST.QtyBuyThis145, 0) + ISNULL(MST.QtyBuyThis146, 0) + ISNULL(MST.QtyBuyThis147, 0) + ISNULL(MST.QtyBuyThis148, 0) + ISNULL(MST.QtyBuyThis149, 0) + ISNULL(MST.QtyBuyThis150, 0) + 
												   ISNULL(MST.QtyBuyThis151, 0) + ISNULL(MST.QtyBuyThis152, 0) + ISNULL(MST.QtyBuyThis153, 0) + ISNULL(MST.QtyBuyThis154, 0) + ISNULL(MST.QtyBuyThis155, 0) + ISNULL(MST.QtyBuyThis156, 0) + ISNULL(MST.QtyBuyThis157, 0) + ISNULL(MST.QtyBuyThis158, 0) + ISNULL(MST.QtyBuyThis159, 0) + ISNULL(MST.QtyBuyThis160, 0) + 
												   ISNULL(MST.QtyBuyThis161, 0) + ISNULL(MST.QtyBuyThis162, 0) + ISNULL(MST.QtyBuyThis163, 0) + ISNULL(MST.QtyBuyThis164, 0) + ISNULL(MST.QtyBuyThis165, 0) + ISNULL(MST.QtyBuyThis166, 0) + ISNULL(MST.QtyBuyThis167, 0) + ISNULL(MST.QtyBuyThis168, 0) + ISNULL(MST.QtyBuyThis169, 0) + ISNULL(MST.QtyBuyThis170, 0) + 
												   ISNULL(MST.QtyBuyThis171, 0) + ISNULL(MST.QtyBuyThis172, 0) + ISNULL(MST.QtyBuyThis173, 0) + ISNULL(MST.QtyBuyThis174, 0) + ISNULL(MST.QtyBuyThis175, 0) + ISNULL(MST.QtyBuyThis176, 0) + ISNULL(MST.QtyBuyThis177, 0) + ISNULL(MST.QtyBuyThis178, 0) + ISNULL(MST.QtyBuyThis179, 0) + ISNULL(MST.QtyBuyThis180, 0) + 
												   ISNULL(MST.QtyBuyThis181, 0) + ISNULL(MST.QtyBuyThis182, 0) + ISNULL(MST.QtyBuyThis183, 0) + ISNULL(MST.QtyBuyThis184, 0) + ISNULL(MST.QtyBuyThis185, 0) + ISNULL(MST.QtyBuyThis186, 0) + ISNULL(MST.QtyBuyThis187, 0) + ISNULL(MST.QtyBuyThis188, 0) + ISNULL(MST.QtyBuyThis189, 0) + ISNULL(MST.QtyBuyThis190, 0) + 
												   ISNULL(MST.QtyBuyThis191, 0) + ISNULL(MST.QtyBuyThis192, 0) + ISNULL(MST.QtyBuyThis193, 0) + ISNULL(MST.QtyBuyThis194, 0) + ISNULL(MST.QtyBuyThis195, 0) + ISNULL(MST.QtyBuyThis196, 0) + ISNULL(MST.QtyBuyThis197, 0) + ISNULL(MST.QtyBuyThis198, 0) + ISNULL(MST.QtyBuyThis199, 0) + ISNULL(MST.QtyBuyThis200, 0) +
												   ISNULL(MST.QtyBuyThis201, 0) + ISNULL(MST.QtyBuyThis202, 0) + ISNULL(MST.QtyBuyThis203, 0) + ISNULL(MST.QtyBuyThis204, 0) + ISNULL(MST.QtyBuyThis205, 0) + ISNULL(MST.QtyBuyThis206, 0) + ISNULL(MST.QtyBuyThis207, 0) + ISNULL(MST.QtyBuyThis208, 0) + ISNULL(MST.QtyBuyThis209, 0) + ISNULL(MST.QtyBuyThis210, 0) + 
												   ISNULL(MST.QtyBuyThis211, 0) + ISNULL(MST.QtyBuyThis212, 0) + ISNULL(MST.QtyBuyThis213, 0) + ISNULL(MST.QtyBuyThis214, 0) + ISNULL(MST.QtyBuyThis215, 0) + ISNULL(MST.QtyBuyThis216, 0) + ISNULL(MST.QtyBuyThis217, 0) + ISNULL(MST.QtyBuyThis218, 0) + ISNULL(MST.QtyBuyThis219, 0) + ISNULL(MST.QtyBuyThis220, 0) + 
												   ISNULL(MST.QtyBuyThis221, 0) + ISNULL(MST.QtyBuyThis222, 0) + ISNULL(MST.QtyBuyThis223, 0) + ISNULL(MST.QtyBuyThis224, 0) + ISNULL(MST.QtyBuyThis225, 0) + ISNULL(MST.QtyBuyThis226, 0) + ISNULL(MST.QtyBuyThis227, 0) + ISNULL(MST.QtyBuyThis228, 0) + ISNULL(MST.QtyBuyThis229, 0) + ISNULL(MST.QtyBuyThis230, 0) + 
												   ISNULL(MST.QtyBuyThis231, 0) + ISNULL(MST.QtyBuyThis232, 0) + ISNULL(MST.QtyBuyThis233, 0) + ISNULL(MST.QtyBuyThis234, 0) + ISNULL(MST.QtyBuyThis235, 0) + ISNULL(MST.QtyBuyThis236, 0) + ISNULL(MST.QtyBuyThis237, 0) + ISNULL(MST.QtyBuyThis238, 0) + ISNULL(MST.QtyBuyThis239, 0) + ISNULL(MST.QtyBuyThis240, 0)) 

												  + (ISNULL(MST.QtyAdjustThis01, 0) + ISNULL(MST.QtyAdjustThis02, 0) + ISNULL(MST.QtyAdjustThis03, 0) + ISNULL(MST.QtyAdjustThis04, 0) + ISNULL(MST.QtyAdjustThis05, 0) + ISNULL(MST.QtyAdjustThis06, 0) + ISNULL(MST.QtyAdjustThis07, 0) + ISNULL(MST.QtyAdjustThis08, 0) + ISNULL(MST.QtyAdjustThis09, 0) + ISNULL(MST.QtyAdjustThis10, 0) + 
													 ISNULL(MST.QtyAdjustThis11, 0) + ISNULL(MST.QtyAdjustThis12, 0) + ISNULL(MST.QtyAdjustThis13, 0) + ISNULL(MST.QtyAdjustThis14, 0) + ISNULL(MST.QtyAdjustThis15, 0) + ISNULL(MST.QtyAdjustThis16, 0) + ISNULL(MST.QtyAdjustThis17, 0) + ISNULL(MST.QtyAdjustThis18, 0) + ISNULL(MST.QtyAdjustThis19, 0) + ISNULL(MST.QtyAdjustThis20, 0) + 
													 ISNULL(MST.QtyAdjustThis21, 0) + ISNULL(MST.QtyAdjustThis22, 0) + ISNULL(MST.QtyAdjustThis23, 0) + ISNULL(MST.QtyAdjustThis24, 0) + ISNULL(MST.QtyAdjustThis25, 0) + ISNULL(MST.QtyAdjustThis26, 0) + ISNULL(MST.QtyAdjustThis27, 0) + ISNULL(MST.QtyAdjustThis28, 0) + ISNULL(MST.QtyAdjustThis29, 0) + ISNULL(MST.QtyAdjustThis30, 0) + 
													 ISNULL(MST.QtyAdjustThis31, 0) + ISNULL(MST.QtyAdjustThis32, 0) + ISNULL(MST.QtyAdjustThis33, 0) + ISNULL(MST.QtyAdjustThis34, 0) + ISNULL(MST.QtyAdjustThis35, 0) + ISNULL(MST.QtyAdjustThis36, 0) + ISNULL(MST.QtyAdjustThis37, 0) + ISNULL(MST.QtyAdjustThis38, 0) + ISNULL(MST.QtyAdjustThis39, 0) + ISNULL(MST.QtyAdjustThis40, 0) + 
													 ISNULL(MST.QtyAdjustThis41, 0) + ISNULL(MST.QtyAdjustThis42, 0) + ISNULL(MST.QtyAdjustThis43, 0) + ISNULL(MST.QtyAdjustThis44, 0) + ISNULL(MST.QtyAdjustThis45, 0) + ISNULL(MST.QtyAdjustThis46, 0) + ISNULL(MST.QtyAdjustThis47, 0) + ISNULL(MST.QtyAdjustThis48, 0) + ISNULL(MST.QtyAdjustThis49, 0) + ISNULL(MST.QtyAdjustThis50, 0) + 
													 ISNULL(MST.QtyAdjustThis51, 0) + ISNULL(MST.QtyAdjustThis52, 0) + ISNULL(MST.QtyAdjustThis53, 0) + ISNULL(MST.QtyAdjustThis54, 0) + ISNULL(MST.QtyAdjustThis55, 0) + ISNULL(MST.QtyAdjustThis56, 0) + ISNULL(MST.QtyAdjustThis57, 0) + ISNULL(MST.QtyAdjustThis58, 0) + ISNULL(MST.QtyAdjustThis59, 0) + ISNULL(MST.QtyAdjustThis60, 0) + 
													 ISNULL(MST.QtyAdjustThis61, 0) + ISNULL(MST.QtyAdjustThis62, 0) + ISNULL(MST.QtyAdjustThis63, 0) + ISNULL(MST.QtyAdjustThis64, 0) + ISNULL(MST.QtyAdjustThis65, 0) + ISNULL(MST.QtyAdjustThis66, 0) + ISNULL(MST.QtyAdjustThis67, 0) + ISNULL(MST.QtyAdjustThis68, 0) + ISNULL(MST.QtyAdjustThis69, 0) + ISNULL(MST.QtyAdjustThis70, 0) + 
													 ISNULL(MST.QtyAdjustThis71, 0) + ISNULL(MST.QtyAdjustThis72, 0) + ISNULL(MST.QtyAdjustThis73, 0) + ISNULL(MST.QtyAdjustThis74, 0) + ISNULL(MST.QtyAdjustThis75, 0) + ISNULL(MST.QtyAdjustThis76, 0) + ISNULL(MST.QtyAdjustThis77, 0) + ISNULL(MST.QtyAdjustThis78, 0) + ISNULL(MST.QtyAdjustThis79, 0) + ISNULL(MST.QtyAdjustThis80, 0) + 
													 ISNULL(MST.QtyAdjustThis81, 0) + ISNULL(MST.QtyAdjustThis82, 0) + ISNULL(MST.QtyAdjustThis83, 0) + ISNULL(MST.QtyAdjustThis84, 0) + ISNULL(MST.QtyAdjustThis85, 0) + ISNULL(MST.QtyAdjustThis86, 0) + ISNULL(MST.QtyAdjustThis87, 0) + ISNULL(MST.QtyAdjustThis88, 0) + ISNULL(MST.QtyAdjustThis89, 0) + ISNULL(MST.QtyAdjustThis90, 0) + 
													 ISNULL(MST.QtyAdjustThis91, 0) + ISNULL(MST.QtyAdjustThis92, 0) + ISNULL(MST.QtyAdjustThis93, 0) + ISNULL(MST.QtyAdjustThis94, 0) + ISNULL(MST.QtyAdjustThis95, 0) + ISNULL(MST.QtyAdjustThis96, 0) + ISNULL(MST.QtyAdjustThis97, 0) + ISNULL(MST.QtyAdjustThis98, 0) + ISNULL(MST.QtyAdjustThis99, 0) + ISNULL(MST.QtyAdjustThis100, 0) + 
													 ISNULL(MST.QtyAdjustThis101, 0) + ISNULL(MST.QtyAdjustThis102, 0) + ISNULL(MST.QtyAdjustThis103, 0) + ISNULL(MST.QtyAdjustThis104, 0) + ISNULL(MST.QtyAdjustThis105, 0) + ISNULL(MST.QtyAdjustThis106, 0) + ISNULL(MST.QtyAdjustThis107, 0) + ISNULL(MST.QtyAdjustThis108, 0) + ISNULL(MST.QtyAdjustThis109, 0) + ISNULL(MST.QtyAdjustThis110, 0) + 
													 ISNULL(MST.QtyAdjustThis111, 0) + ISNULL(MST.QtyAdjustThis112, 0) + ISNULL(MST.QtyAdjustThis113, 0) + ISNULL(MST.QtyAdjustThis114, 0) + ISNULL(MST.QtyAdjustThis115, 0) + ISNULL(MST.QtyAdjustThis116, 0) + ISNULL(MST.QtyAdjustThis117, 0) + ISNULL(MST.QtyAdjustThis118, 0) + ISNULL(MST.QtyAdjustThis119, 0) + ISNULL(MST.QtyAdjustThis120, 0) + 
													 ISNULL(MST.QtyAdjustThis121, 0) + ISNULL(MST.QtyAdjustThis122, 0) + ISNULL(MST.QtyAdjustThis123, 0) + ISNULL(MST.QtyAdjustThis124, 0) + ISNULL(MST.QtyAdjustThis125, 0) + ISNULL(MST.QtyAdjustThis126, 0) + ISNULL(MST.QtyAdjustThis127, 0) + ISNULL(MST.QtyAdjustThis128, 0) + ISNULL(MST.QtyAdjustThis129, 0) + ISNULL(MST.QtyAdjustThis130, 0) + 
													 ISNULL(MST.QtyAdjustThis131, 0) + ISNULL(MST.QtyAdjustThis132, 0) + ISNULL(MST.QtyAdjustThis133, 0) + ISNULL(MST.QtyAdjustThis134, 0) + ISNULL(MST.QtyAdjustThis135, 0) + ISNULL(MST.QtyAdjustThis136, 0) + ISNULL(MST.QtyAdjustThis137, 0) + ISNULL(MST.QtyAdjustThis138, 0) + ISNULL(MST.QtyAdjustThis139, 0) + ISNULL(MST.QtyAdjustThis140, 0) + 
													 ISNULL(MST.QtyAdjustThis141, 0) + ISNULL(MST.QtyAdjustThis142, 0) + ISNULL(MST.QtyAdjustThis143, 0) + ISNULL(MST.QtyAdjustThis144, 0) + ISNULL(MST.QtyAdjustThis145, 0) + ISNULL(MST.QtyAdjustThis146, 0) + ISNULL(MST.QtyAdjustThis147, 0) + ISNULL(MST.QtyAdjustThis148, 0) + ISNULL(MST.QtyAdjustThis149, 0) + ISNULL(MST.QtyAdjustThis150, 0) + 
													 ISNULL(MST.QtyAdjustThis151, 0) + ISNULL(MST.QtyAdjustThis152, 0) + ISNULL(MST.QtyAdjustThis153, 0) + ISNULL(MST.QtyAdjustThis154, 0) + ISNULL(MST.QtyAdjustThis155, 0) + ISNULL(MST.QtyAdjustThis156, 0) + ISNULL(MST.QtyAdjustThis157, 0) + ISNULL(MST.QtyAdjustThis158, 0) + ISNULL(MST.QtyAdjustThis159, 0) + ISNULL(MST.QtyAdjustThis160, 0) + 
													 ISNULL(MST.QtyAdjustThis161, 0) + ISNULL(MST.QtyAdjustThis162, 0) + ISNULL(MST.QtyAdjustThis163, 0) + ISNULL(MST.QtyAdjustThis164, 0) + ISNULL(MST.QtyAdjustThis165, 0) + ISNULL(MST.QtyAdjustThis166, 0) + ISNULL(MST.QtyAdjustThis167, 0) + ISNULL(MST.QtyAdjustThis168, 0) + ISNULL(MST.QtyAdjustThis169, 0) + ISNULL(MST.QtyAdjustThis170, 0) + 
													 ISNULL(MST.QtyAdjustThis171, 0) + ISNULL(MST.QtyAdjustThis172, 0) + ISNULL(MST.QtyAdjustThis173, 0) + ISNULL(MST.QtyAdjustThis174, 0) + ISNULL(MST.QtyAdjustThis175, 0) + ISNULL(MST.QtyAdjustThis176, 0) + ISNULL(MST.QtyAdjustThis177, 0) + ISNULL(MST.QtyAdjustThis178, 0) + ISNULL(MST.QtyAdjustThis179, 0) + ISNULL(MST.QtyAdjustThis180, 0) + 
													 ISNULL(MST.QtyAdjustThis181, 0) + ISNULL(MST.QtyAdjustThis182, 0) + ISNULL(MST.QtyAdjustThis183, 0) + ISNULL(MST.QtyAdjustThis184, 0) + ISNULL(MST.QtyAdjustThis185, 0) + ISNULL(MST.QtyAdjustThis186, 0) + ISNULL(MST.QtyAdjustThis187, 0) + ISNULL(MST.QtyAdjustThis188, 0) + ISNULL(MST.QtyAdjustThis189, 0) + ISNULL(MST.QtyAdjustThis190, 0) + 
													 ISNULL(MST.QtyAdjustThis191, 0) + ISNULL(MST.QtyAdjustThis192, 0) + ISNULL(MST.QtyAdjustThis193, 0) + ISNULL(MST.QtyAdjustThis194, 0) + ISNULL(MST.QtyAdjustThis195, 0) + ISNULL(MST.QtyAdjustThis196, 0) + ISNULL(MST.QtyAdjustThis197, 0) + ISNULL(MST.QtyAdjustThis198, 0) + ISNULL(MST.QtyAdjustThis199, 0) + ISNULL(MST.QtyAdjustThis200, 0) + 
													 ISNULL(MST.QtyAdjustThis201, 0) + ISNULL(MST.QtyAdjustThis202, 0) + ISNULL(MST.QtyAdjustThis203, 0) + ISNULL(MST.QtyAdjustThis204, 0) + ISNULL(MST.QtyAdjustThis205, 0) + ISNULL(MST.QtyAdjustThis206, 0) + ISNULL(MST.QtyAdjustThis207, 0) + ISNULL(MST.QtyAdjustThis208, 0) + ISNULL(MST.QtyAdjustThis209, 0) + ISNULL(MST.QtyAdjustThis210, 0) + 
													 ISNULL(MST.QtyAdjustThis211, 0) + ISNULL(MST.QtyAdjustThis212, 0) + ISNULL(MST.QtyAdjustThis213, 0) + ISNULL(MST.QtyAdjustThis214, 0) + ISNULL(MST.QtyAdjustThis215, 0) + ISNULL(MST.QtyAdjustThis216, 0) + ISNULL(MST.QtyAdjustThis217, 0) + ISNULL(MST.QtyAdjustThis218, 0) + ISNULL(MST.QtyAdjustThis219, 0) + ISNULL(MST.QtyAdjustThis220, 0) + 
													 ISNULL(MST.QtyAdjustThis221, 0) + ISNULL(MST.QtyAdjustThis222, 0) + ISNULL(MST.QtyAdjustThis223, 0) + ISNULL(MST.QtyAdjustThis224, 0) + ISNULL(MST.QtyAdjustThis225, 0) + ISNULL(MST.QtyAdjustThis226, 0) + ISNULL(MST.QtyAdjustThis227, 0) + ISNULL(MST.QtyAdjustThis228, 0) + ISNULL(MST.QtyAdjustThis229, 0) + ISNULL(MST.QtyAdjustThis230, 0) + 
													 ISNULL(MST.QtyAdjustThis231, 0) + ISNULL(MST.QtyAdjustThis232, 0) + ISNULL(MST.QtyAdjustThis233, 0) + ISNULL(MST.QtyAdjustThis234, 0) + ISNULL(MST.QtyAdjustThis235, 0) + ISNULL(MST.QtyAdjustThis236, 0) + ISNULL(MST.QtyAdjustThis237, 0) + ISNULL(MST.QtyAdjustThis238, 0) + ISNULL(MST.QtyAdjustThis239, 0) + ISNULL(MST.QtyAdjustThis240, 0))) 

											   + (ISNULL(MST.QtySellThis01, 0) + ISNULL(MST.QtySellThis02, 0) + ISNULL(MST.QtySellThis03, 0) + ISNULL(MST.QtySellThis04, 0) + ISNULL(MST.QtySellThis05, 0) + ISNULL(MST.QtySellThis06, 0) + ISNULL(MST.QtySellThis07, 0) + ISNULL(MST.QtySellThis08, 0) + ISNULL(MST.QtySellThis09, 0) + ISNULL(MST.QtySellThis10, 0) + 
												  ISNULL(MST.QtySellThis11, 0) + ISNULL(MST.QtySellThis12, 0) + ISNULL(MST.QtySellThis13, 0) + ISNULL(MST.QtySellThis14, 0) + ISNULL(MST.QtySellThis15, 0) + ISNULL(MST.QtySellThis16, 0) + ISNULL(MST.QtySellThis17, 0) + ISNULL(MST.QtySellThis18, 0) + ISNULL(MST.QtySellThis19, 0) + ISNULL(MST.QtySellThis20, 0) + 
												  ISNULL(MST.QtySellThis21, 0) + ISNULL(MST.QtySellThis22, 0) + ISNULL(MST.QtySellThis23, 0) + ISNULL(MST.QtySellThis24, 0) + ISNULL(MST.QtySellThis25, 0) + ISNULL(MST.QtySellThis26, 0) + ISNULL(MST.QtySellThis27, 0) + ISNULL(MST.QtySellThis28, 0) + ISNULL(MST.QtySellThis29, 0) + ISNULL(MST.QtySellThis30, 0) + 
												  ISNULL(MST.QtySellThis31, 0) + ISNULL(MST.QtySellThis32, 0) + ISNULL(MST.QtySellThis33, 0) + ISNULL(MST.QtySellThis34, 0) + ISNULL(MST.QtySellThis35, 0) + ISNULL(MST.QtySellThis36, 0) + ISNULL(MST.QtySellThis37, 0) + ISNULL(MST.QtySellThis38, 0) + ISNULL(MST.QtySellThis39, 0) + ISNULL(MST.QtySellThis40, 0) + 
												  ISNULL(MST.QtySellThis41, 0) + ISNULL(MST.QtySellThis42, 0) + ISNULL(MST.QtySellThis43, 0) + ISNULL(MST.QtySellThis44, 0) + ISNULL(MST.QtySellThis45, 0) + ISNULL(MST.QtySellThis46, 0) + ISNULL(MST.QtySellThis47, 0) + ISNULL(MST.QtySellThis48, 0) + ISNULL(MST.QtySellThis49, 0) + ISNULL(MST.QtySellThis50, 0) + 
												  ISNULL(MST.QtySellThis51, 0) + ISNULL(MST.QtySellThis52, 0) + ISNULL(MST.QtySellThis53, 0) + ISNULL(MST.QtySellThis54, 0) + ISNULL(MST.QtySellThis55, 0) + ISNULL(MST.QtySellThis56, 0) + ISNULL(MST.QtySellThis57, 0) + ISNULL(MST.QtySellThis58, 0) + ISNULL(MST.QtySellThis59, 0) + ISNULL(MST.QtySellThis60, 0) + 
												  ISNULL(MST.QtySellThis61, 0) + ISNULL(MST.QtySellThis62, 0) + ISNULL(MST.QtySellThis63, 0) + ISNULL(MST.QtySellThis64, 0) + ISNULL(MST.QtySellThis65, 0) + ISNULL(MST.QtySellThis66, 0) + ISNULL(MST.QtySellThis67, 0) + ISNULL(MST.QtySellThis68, 0) + ISNULL(MST.QtySellThis69, 0) + ISNULL(MST.QtySellThis70, 0) + 
												  ISNULL(MST.QtySellThis71, 0) + ISNULL(MST.QtySellThis72, 0) + ISNULL(MST.QtySellThis73, 0) + ISNULL(MST.QtySellThis74, 0) + ISNULL(MST.QtySellThis75, 0) + ISNULL(MST.QtySellThis76, 0) + ISNULL(MST.QtySellThis77, 0) + ISNULL(MST.QtySellThis78, 0) + ISNULL(MST.QtySellThis79, 0) + ISNULL(MST.QtySellThis80, 0) + 
												  ISNULL(MST.QtySellThis81, 0) + ISNULL(MST.QtySellThis82, 0) + ISNULL(MST.QtySellThis83, 0) + ISNULL(MST.QtySellThis84, 0) + ISNULL(MST.QtySellThis85, 0) + ISNULL(MST.QtySellThis86, 0) + ISNULL(MST.QtySellThis87, 0) + ISNULL(MST.QtySellThis88, 0) + ISNULL(MST.QtySellThis89, 0) + ISNULL(MST.QtySellThis90, 0) + 
												  ISNULL(MST.QtySellThis91, 0) + ISNULL(MST.QtySellThis92, 0) + ISNULL(MST.QtySellThis93, 0) + ISNULL(MST.QtySellThis94, 0) + ISNULL(MST.QtySellThis95, 0) + ISNULL(MST.QtySellThis96, 0) + ISNULL(MST.QtySellThis97, 0) + ISNULL(MST.QtySellThis98, 0) + ISNULL(MST.QtySellThis99, 0) + ISNULL(MST.QtySellThis100, 0) + 
												  ISNULL(MST.QtySellThis101, 0) + ISNULL(MST.QtySellThis102, 0) + ISNULL(MST.QtySellThis103, 0) + ISNULL(MST.QtySellThis104, 0) + ISNULL(MST.QtySellThis105, 0) + ISNULL(MST.QtySellThis106, 0) + ISNULL(MST.QtySellThis107, 0) + ISNULL(MST.QtySellThis108, 0) + ISNULL(MST.QtySellThis109, 0) + ISNULL(MST.QtySellThis110, 0) + 
												  ISNULL(MST.QtySellThis111, 0) + ISNULL(MST.QtySellThis112, 0) + ISNULL(MST.QtySellThis113, 0) + ISNULL(MST.QtySellThis114, 0) + ISNULL(MST.QtySellThis115, 0) + ISNULL(MST.QtySellThis116, 0) + ISNULL(MST.QtySellThis117, 0) + ISNULL(MST.QtySellThis118, 0) + ISNULL(MST.QtySellThis119, 0) + ISNULL(MST.QtySellThis120, 0) + 
												  ISNULL(MST.QtySellThis121, 0) + ISNULL(MST.QtySellThis122, 0) + ISNULL(MST.QtySellThis123, 0) + ISNULL(MST.QtySellThis124, 0) + ISNULL(MST.QtySellThis125, 0) + ISNULL(MST.QtySellThis126, 0) + ISNULL(MST.QtySellThis127, 0) + ISNULL(MST.QtySellThis128, 0) + ISNULL(MST.QtySellThis129, 0) + ISNULL(MST.QtySellThis130, 0) + 
												  ISNULL(MST.QtySellThis131, 0) + ISNULL(MST.QtySellThis132, 0) + ISNULL(MST.QtySellThis133, 0) + ISNULL(MST.QtySellThis134, 0) + ISNULL(MST.QtySellThis135, 0) + ISNULL(MST.QtySellThis136, 0) + ISNULL(MST.QtySellThis137, 0) + ISNULL(MST.QtySellThis138, 0) + ISNULL(MST.QtySellThis139, 0) + ISNULL(MST.QtySellThis140, 0) + 
												  ISNULL(MST.QtySellThis141, 0) + ISNULL(MST.QtySellThis142, 0) + ISNULL(MST.QtySellThis143, 0) + ISNULL(MST.QtySellThis144, 0) + ISNULL(MST.QtySellThis145, 0) + ISNULL(MST.QtySellThis146, 0) + ISNULL(MST.QtySellThis147, 0) + ISNULL(MST.QtySellThis148, 0) + ISNULL(MST.QtySellThis149, 0) + ISNULL(MST.QtySellThis150, 0) + 
												  ISNULL(MST.QtySellThis151, 0) + ISNULL(MST.QtySellThis152, 0) + ISNULL(MST.QtySellThis153, 0) + ISNULL(MST.QtySellThis154, 0) + ISNULL(MST.QtySellThis155, 0) + ISNULL(MST.QtySellThis156, 0) + ISNULL(MST.QtySellThis157, 0) + ISNULL(MST.QtySellThis158, 0) + ISNULL(MST.QtySellThis159, 0) + ISNULL(MST.QtySellThis160, 0) + 
												  ISNULL(MST.QtySellThis161, 0) + ISNULL(MST.QtySellThis162, 0) + ISNULL(MST.QtySellThis163, 0) + ISNULL(MST.QtySellThis164, 0) + ISNULL(MST.QtySellThis165, 0) + ISNULL(MST.QtySellThis166, 0) + ISNULL(MST.QtySellThis167, 0) + ISNULL(MST.QtySellThis168, 0) + ISNULL(MST.QtySellThis169, 0) + ISNULL(MST.QtySellThis170, 0) + 
												  ISNULL(MST.QtySellThis171, 0) + ISNULL(MST.QtySellThis172, 0) + ISNULL(MST.QtySellThis173, 0) + ISNULL(MST.QtySellThis174, 0) + ISNULL(MST.QtySellThis175, 0) + ISNULL(MST.QtySellThis176, 0) + ISNULL(MST.QtySellThis177, 0) + ISNULL(MST.QtySellThis178, 0) + ISNULL(MST.QtySellThis179, 0) + ISNULL(MST.QtySellThis180, 0) + 
												  ISNULL(MST.QtySellThis181, 0) + ISNULL(MST.QtySellThis182, 0) + ISNULL(MST.QtySellThis183, 0) + ISNULL(MST.QtySellThis184, 0) + ISNULL(MST.QtySellThis185, 0) + ISNULL(MST.QtySellThis186, 0) + ISNULL(MST.QtySellThis187, 0) + ISNULL(MST.QtySellThis188, 0) + ISNULL(MST.QtySellThis189, 0) + ISNULL(MST.QtySellThis190, 0) + 
												  ISNULL(MST.QtySellThis191, 0) + ISNULL(MST.QtySellThis192, 0) + ISNULL(MST.QtySellThis193, 0) + ISNULL(MST.QtySellThis194, 0) + ISNULL(MST.QtySellThis195, 0) + ISNULL(MST.QtySellThis196, 0) + ISNULL(MST.QtySellThis197, 0) + ISNULL(MST.QtySellThis198, 0) + ISNULL(MST.QtySellThis199, 0) + ISNULL(MST.QtySellThis200, 0) + 
												  ISNULL(MST.QtySellThis201, 0) + ISNULL(MST.QtySellThis202, 0) + ISNULL(MST.QtySellThis203, 0) + ISNULL(MST.QtySellThis204, 0) + ISNULL(MST.QtySellThis205, 0) + ISNULL(MST.QtySellThis206, 0) + ISNULL(MST.QtySellThis207, 0) + ISNULL(MST.QtySellThis208, 0) + ISNULL(MST.QtySellThis209, 0) + ISNULL(MST.QtySellThis210, 0) + 
												  ISNULL(MST.QtySellThis211, 0) + ISNULL(MST.QtySellThis212, 0) + ISNULL(MST.QtySellThis213, 0) + ISNULL(MST.QtySellThis214, 0) + ISNULL(MST.QtySellThis215, 0) + ISNULL(MST.QtySellThis216, 0) + ISNULL(MST.QtySellThis217, 0) + ISNULL(MST.QtySellThis218, 0) + ISNULL(MST.QtySellThis219, 0) + ISNULL(MST.QtySellThis220, 0) + 
												  ISNULL(MST.QtySellThis221, 0) + ISNULL(MST.QtySellThis222, 0) + ISNULL(MST.QtySellThis223, 0) + ISNULL(MST.QtySellThis224, 0) + ISNULL(MST.QtySellThis225, 0) + ISNULL(MST.QtySellThis226, 0) + ISNULL(MST.QtySellThis227, 0) + ISNULL(MST.QtySellThis228, 0) + ISNULL(MST.QtySellThis229, 0) + ISNULL(MST.QtySellThis230, 0) + 
												  ISNULL(MST.QtySellThis231, 0) + ISNULL(MST.QtySellThis232, 0) + ISNULL(MST.QtySellThis233, 0) + ISNULL(MST.QtySellThis234, 0) + ISNULL(MST.QtySellThis235, 0) + ISNULL(MST.QtySellThis236, 0) + ISNULL(MST.QtySellThis237, 0) + ISNULL(MST.QtySellThis238, 0) + ISNULL(MST.QtySellThis239, 0) + ISNULL(MST.QtySellThis240, 0))) 

					+ ((ISNULL(MST.QtyBuyLast, 0) + ISNULL(MST.QtyAdjustLast, 0)) - ISNULL(MST.QtySellLast, 0))) AS Qty 
		FROM tblUtilityPervMultiStoreTrn MST 
		INNER JOIN tblUtilityPervInventory INV ON MST.ItemCode = INV.ItemCode 
		WHERE (INV.Physical = 1)
		GROUP BY MST.StoreCode, 
				 MST.ItemCode, 
				 MST.CostThis12, 
				 MST.LastInvDate, 
				 MST.LastPurchDate 
		HAVING SUM((ISNULL(MST.OpeningQty, 0) + ((ISNULL(MST.QtyBuyThis01, 0) + ISNULL(MST.QtyBuyThis02, 0) + ISNULL(MST.QtyBuyThis03, 0) + ISNULL(MST.QtyBuyThis04, 0) + ISNULL(MST.QtyBuyThis05, 0) + ISNULL(MST.QtyBuyThis06, 0) + ISNULL(MST.QtyBuyThis07, 0) + ISNULL(MST.QtyBuyThis08, 0) + ISNULL(MST.QtyBuyThis09, 0) + ISNULL(MST.QtyBuyThis10, 0) + 
												  ISNULL(MST.QtyBuyThis11, 0) + ISNULL(MST.QtyBuyThis12, 0) + ISNULL(MST.QtyBuyThis13, 0) + ISNULL(MST.QtyBuyThis14, 0) + ISNULL(MST.QtyBuyThis15, 0) + ISNULL(MST.QtyBuyThis16, 0) + ISNULL(MST.QtyBuyThis17, 0) + ISNULL(MST.QtyBuyThis18, 0) + ISNULL(MST.QtyBuyThis19, 0) + ISNULL(MST.QtyBuyThis20, 0) + 
												  ISNULL(MST.QtyBuyThis21, 0) + ISNULL(MST.QtyBuyThis22, 0) + ISNULL(MST.QtyBuyThis23, 0) + ISNULL(MST.QtyBuyThis24, 0) + ISNULL(MST.QtyBuyThis25, 0) + ISNULL(MST.QtyBuyThis26, 0) + ISNULL(MST.QtyBuyThis27, 0) + ISNULL(MST.QtyBuyThis28, 0) + ISNULL(MST.QtyBuyThis29, 0) + ISNULL(MST.QtyBuyThis30, 0) + 
												  ISNULL(MST.QtyBuyThis31, 0) + ISNULL(MST.QtyBuyThis32, 0) + ISNULL(MST.QtyBuyThis33, 0) + ISNULL(MST.QtyBuyThis34, 0) + ISNULL(MST.QtyBuyThis35, 0) + ISNULL(MST.QtyBuyThis36, 0) + ISNULL(MST.QtyBuyThis37, 0) + ISNULL(MST.QtyBuyThis38, 0) + ISNULL(MST.QtyBuyThis39, 0) + ISNULL(MST.QtyBuyThis40, 0) + 
												  ISNULL(MST.QtyBuyThis41, 0) + ISNULL(MST.QtyBuyThis42, 0) + ISNULL(MST.QtyBuyThis43, 0) + ISNULL(MST.QtyBuyThis44, 0) + ISNULL(MST.QtyBuyThis45, 0) + ISNULL(MST.QtyBuyThis46, 0) + ISNULL(MST.QtyBuyThis47, 0) + ISNULL(MST.QtyBuyThis48, 0) + ISNULL(MST.QtyBuyThis49, 0) + ISNULL(MST.QtyBuyThis50, 0) + 
												  ISNULL(MST.QtyBuyThis51, 0) + ISNULL(MST.QtyBuyThis52, 0) + ISNULL(MST.QtyBuyThis53, 0) + ISNULL(MST.QtyBuyThis54, 0) + ISNULL(MST.QtyBuyThis55, 0) + ISNULL(MST.QtyBuyThis56, 0) + ISNULL(MST.QtyBuyThis57, 0) + ISNULL(MST.QtyBuyThis58, 0) + ISNULL(MST.QtyBuyThis59, 0) + ISNULL(MST.QtyBuyThis60, 0) + 
												  ISNULL(MST.QtyBuyThis61, 0) + ISNULL(MST.QtyBuyThis62, 0) + ISNULL(MST.QtyBuyThis63, 0) + ISNULL(MST.QtyBuyThis64, 0) + ISNULL(MST.QtyBuyThis65, 0) + ISNULL(MST.QtyBuyThis66, 0) + ISNULL(MST.QtyBuyThis67, 0) + ISNULL(MST.QtyBuyThis68, 0) + ISNULL(MST.QtyBuyThis69, 0) + ISNULL(MST.QtyBuyThis70, 0) + 
												  ISNULL(MST.QtyBuyThis71, 0) + ISNULL(MST.QtyBuyThis72, 0) + ISNULL(MST.QtyBuyThis73, 0) + ISNULL(MST.QtyBuyThis74, 0) + ISNULL(MST.QtyBuyThis75, 0) + ISNULL(MST.QtyBuyThis76, 0) + ISNULL(MST.QtyBuyThis77, 0) + ISNULL(MST.QtyBuyThis78, 0) + ISNULL(MST.QtyBuyThis79, 0) + ISNULL(MST.QtyBuyThis80, 0) + 
												  ISNULL(MST.QtyBuyThis81, 0) + ISNULL(MST.QtyBuyThis82, 0) + ISNULL(MST.QtyBuyThis83, 0) + ISNULL(MST.QtyBuyThis84, 0) + ISNULL(MST.QtyBuyThis85, 0) + ISNULL(MST.QtyBuyThis86, 0) + ISNULL(MST.QtyBuyThis87, 0) + ISNULL(MST.QtyBuyThis88, 0) + ISNULL(MST.QtyBuyThis89, 0) + ISNULL(MST.QtyBuyThis90, 0) + 
												  ISNULL(MST.QtyBuyThis91, 0) + ISNULL(MST.QtyBuyThis92, 0) + ISNULL(MST.QtyBuyThis93, 0) + ISNULL(MST.QtyBuyThis94, 0) + ISNULL(MST.QtyBuyThis95, 0) + ISNULL(MST.QtyBuyThis96, 0) + ISNULL(MST.QtyBuyThis97, 0) + ISNULL(MST.QtyBuyThis98, 0) + ISNULL(MST.QtyBuyThis99, 0) + ISNULL(MST.QtyBuyThis100, 0) +
												  ISNULL(MST.QtyBuyThis101, 0) + ISNULL(MST.QtyBuyThis102, 0) + ISNULL(MST.QtyBuyThis103, 0) + ISNULL(MST.QtyBuyThis104, 0) + ISNULL(MST.QtyBuyThis105, 0) + ISNULL(MST.QtyBuyThis106, 0) + ISNULL(MST.QtyBuyThis107, 0) + ISNULL(MST.QtyBuyThis108, 0) + ISNULL(MST.QtyBuyThis109, 0) + ISNULL(MST.QtyBuyThis110, 0) + 
												  ISNULL(MST.QtyBuyThis111, 0) + ISNULL(MST.QtyBuyThis112, 0) + ISNULL(MST.QtyBuyThis113, 0) + ISNULL(MST.QtyBuyThis114, 0) + ISNULL(MST.QtyBuyThis115, 0) + ISNULL(MST.QtyBuyThis116, 0) + ISNULL(MST.QtyBuyThis117, 0) + ISNULL(MST.QtyBuyThis118, 0) + ISNULL(MST.QtyBuyThis119, 0) + ISNULL(MST.QtyBuyThis120, 0) + 
												  ISNULL(MST.QtyBuyThis121, 0) + ISNULL(MST.QtyBuyThis122, 0) + ISNULL(MST.QtyBuyThis123, 0) + ISNULL(MST.QtyBuyThis124, 0) + ISNULL(MST.QtyBuyThis125, 0) + ISNULL(MST.QtyBuyThis126, 0) + ISNULL(MST.QtyBuyThis127, 0) + ISNULL(MST.QtyBuyThis128, 0) + ISNULL(MST.QtyBuyThis129, 0) + ISNULL(MST.QtyBuyThis130, 0) + 
												  ISNULL(MST.QtyBuyThis131, 0) + ISNULL(MST.QtyBuyThis132, 0) + ISNULL(MST.QtyBuyThis133, 0) + ISNULL(MST.QtyBuyThis134, 0) + ISNULL(MST.QtyBuyThis135, 0) + ISNULL(MST.QtyBuyThis136, 0) + ISNULL(MST.QtyBuyThis137, 0) + ISNULL(MST.QtyBuyThis138, 0) + ISNULL(MST.QtyBuyThis139, 0) + ISNULL(MST.QtyBuyThis140, 0) + 
												  ISNULL(MST.QtyBuyThis141, 0) + ISNULL(MST.QtyBuyThis142, 0) + ISNULL(MST.QtyBuyThis143, 0) + ISNULL(MST.QtyBuyThis144, 0) + ISNULL(MST.QtyBuyThis145, 0) + ISNULL(MST.QtyBuyThis146, 0) + ISNULL(MST.QtyBuyThis147, 0) + ISNULL(MST.QtyBuyThis148, 0) + ISNULL(MST.QtyBuyThis149, 0) + ISNULL(MST.QtyBuyThis150, 0) + 
												  ISNULL(MST.QtyBuyThis151, 0) + ISNULL(MST.QtyBuyThis152, 0) + ISNULL(MST.QtyBuyThis153, 0) + ISNULL(MST.QtyBuyThis154, 0) + ISNULL(MST.QtyBuyThis155, 0) + ISNULL(MST.QtyBuyThis156, 0) + ISNULL(MST.QtyBuyThis157, 0) + ISNULL(MST.QtyBuyThis158, 0) + ISNULL(MST.QtyBuyThis159, 0) + ISNULL(MST.QtyBuyThis160, 0) + 
												  ISNULL(MST.QtyBuyThis161, 0) + ISNULL(MST.QtyBuyThis162, 0) + ISNULL(MST.QtyBuyThis163, 0) + ISNULL(MST.QtyBuyThis164, 0) + ISNULL(MST.QtyBuyThis165, 0) + ISNULL(MST.QtyBuyThis166, 0) + ISNULL(MST.QtyBuyThis167, 0) + ISNULL(MST.QtyBuyThis168, 0) + ISNULL(MST.QtyBuyThis169, 0) + ISNULL(MST.QtyBuyThis170, 0) + 
												  ISNULL(MST.QtyBuyThis171, 0) + ISNULL(MST.QtyBuyThis172, 0) + ISNULL(MST.QtyBuyThis173, 0) + ISNULL(MST.QtyBuyThis174, 0) + ISNULL(MST.QtyBuyThis175, 0) + ISNULL(MST.QtyBuyThis176, 0) + ISNULL(MST.QtyBuyThis177, 0) + ISNULL(MST.QtyBuyThis178, 0) + ISNULL(MST.QtyBuyThis179, 0) + ISNULL(MST.QtyBuyThis180, 0) + 
												  ISNULL(MST.QtyBuyThis181, 0) + ISNULL(MST.QtyBuyThis182, 0) + ISNULL(MST.QtyBuyThis183, 0) + ISNULL(MST.QtyBuyThis184, 0) + ISNULL(MST.QtyBuyThis185, 0) + ISNULL(MST.QtyBuyThis186, 0) + ISNULL(MST.QtyBuyThis187, 0) + ISNULL(MST.QtyBuyThis188, 0) + ISNULL(MST.QtyBuyThis189, 0) + ISNULL(MST.QtyBuyThis190, 0) + 
												  ISNULL(MST.QtyBuyThis191, 0) + ISNULL(MST.QtyBuyThis192, 0) + ISNULL(MST.QtyBuyThis193, 0) + ISNULL(MST.QtyBuyThis194, 0) + ISNULL(MST.QtyBuyThis195, 0) + ISNULL(MST.QtyBuyThis196, 0) + ISNULL(MST.QtyBuyThis197, 0) + ISNULL(MST.QtyBuyThis198, 0) + ISNULL(MST.QtyBuyThis199, 0) + ISNULL(MST.QtyBuyThis200, 0) +
												  ISNULL(MST.QtyBuyThis201, 0) + ISNULL(MST.QtyBuyThis202, 0) + ISNULL(MST.QtyBuyThis203, 0) + ISNULL(MST.QtyBuyThis204, 0) + ISNULL(MST.QtyBuyThis205, 0) + ISNULL(MST.QtyBuyThis206, 0) + ISNULL(MST.QtyBuyThis207, 0) + ISNULL(MST.QtyBuyThis208, 0) + ISNULL(MST.QtyBuyThis209, 0) + ISNULL(MST.QtyBuyThis210, 0) + 
												  ISNULL(MST.QtyBuyThis211, 0) + ISNULL(MST.QtyBuyThis212, 0) + ISNULL(MST.QtyBuyThis213, 0) + ISNULL(MST.QtyBuyThis214, 0) + ISNULL(MST.QtyBuyThis215, 0) + ISNULL(MST.QtyBuyThis216, 0) + ISNULL(MST.QtyBuyThis217, 0) + ISNULL(MST.QtyBuyThis218, 0) + ISNULL(MST.QtyBuyThis219, 0) + ISNULL(MST.QtyBuyThis220, 0) + 
												  ISNULL(MST.QtyBuyThis221, 0) + ISNULL(MST.QtyBuyThis222, 0) + ISNULL(MST.QtyBuyThis223, 0) + ISNULL(MST.QtyBuyThis224, 0) + ISNULL(MST.QtyBuyThis225, 0) + ISNULL(MST.QtyBuyThis226, 0) + ISNULL(MST.QtyBuyThis227, 0) + ISNULL(MST.QtyBuyThis228, 0) + ISNULL(MST.QtyBuyThis229, 0) + ISNULL(MST.QtyBuyThis230, 0) + 
												  ISNULL(MST.QtyBuyThis231, 0) + ISNULL(MST.QtyBuyThis232, 0) + ISNULL(MST.QtyBuyThis233, 0) + ISNULL(MST.QtyBuyThis234, 0) + ISNULL(MST.QtyBuyThis235, 0) + ISNULL(MST.QtyBuyThis236, 0) + ISNULL(MST.QtyBuyThis237, 0) + ISNULL(MST.QtyBuyThis238, 0) + ISNULL(MST.QtyBuyThis239, 0) + ISNULL(MST.QtyBuyThis240, 0)) 

												 + (ISNULL(MST.QtyAdjustThis01, 0) + ISNULL(MST.QtyAdjustThis02, 0) + ISNULL(MST.QtyAdjustThis03, 0) + ISNULL(MST.QtyAdjustThis04, 0) + ISNULL(MST.QtyAdjustThis05, 0) + ISNULL(MST.QtyAdjustThis06, 0) + ISNULL(MST.QtyAdjustThis07, 0) + ISNULL(MST.QtyAdjustThis08, 0) + ISNULL(MST.QtyAdjustThis09, 0) + ISNULL(MST.QtyAdjustThis10, 0) + 
													ISNULL(MST.QtyAdjustThis11, 0) + ISNULL(MST.QtyAdjustThis12, 0) + ISNULL(MST.QtyAdjustThis13, 0) + ISNULL(MST.QtyAdjustThis14, 0) + ISNULL(MST.QtyAdjustThis15, 0) + ISNULL(MST.QtyAdjustThis16, 0) + ISNULL(MST.QtyAdjustThis17, 0) + ISNULL(MST.QtyAdjustThis18, 0) + ISNULL(MST.QtyAdjustThis19, 0) + ISNULL(MST.QtyAdjustThis20, 0) + 
													ISNULL(MST.QtyAdjustThis21, 0) + ISNULL(MST.QtyAdjustThis22, 0) + ISNULL(MST.QtyAdjustThis23, 0) + ISNULL(MST.QtyAdjustThis24, 0) + ISNULL(MST.QtyAdjustThis25, 0) + ISNULL(MST.QtyAdjustThis26, 0) + ISNULL(MST.QtyAdjustThis27, 0) + ISNULL(MST.QtyAdjustThis28, 0) + ISNULL(MST.QtyAdjustThis29, 0) + ISNULL(MST.QtyAdjustThis30, 0) + 
													ISNULL(MST.QtyAdjustThis31, 0) + ISNULL(MST.QtyAdjustThis32, 0) + ISNULL(MST.QtyAdjustThis33, 0) + ISNULL(MST.QtyAdjustThis34, 0) + ISNULL(MST.QtyAdjustThis35, 0) + ISNULL(MST.QtyAdjustThis36, 0) + ISNULL(MST.QtyAdjustThis37, 0) + ISNULL(MST.QtyAdjustThis38, 0) + ISNULL(MST.QtyAdjustThis39, 0) + ISNULL(MST.QtyAdjustThis40, 0) + 
													ISNULL(MST.QtyAdjustThis41, 0) + ISNULL(MST.QtyAdjustThis42, 0) + ISNULL(MST.QtyAdjustThis43, 0) + ISNULL(MST.QtyAdjustThis44, 0) + ISNULL(MST.QtyAdjustThis45, 0) + ISNULL(MST.QtyAdjustThis46, 0) + ISNULL(MST.QtyAdjustThis47, 0) + ISNULL(MST.QtyAdjustThis48, 0) + ISNULL(MST.QtyAdjustThis49, 0) + ISNULL(MST.QtyAdjustThis50, 0) + 
													ISNULL(MST.QtyAdjustThis51, 0) + ISNULL(MST.QtyAdjustThis52, 0) + ISNULL(MST.QtyAdjustThis53, 0) + ISNULL(MST.QtyAdjustThis54, 0) + ISNULL(MST.QtyAdjustThis55, 0) + ISNULL(MST.QtyAdjustThis56, 0) + ISNULL(MST.QtyAdjustThis57, 0) + ISNULL(MST.QtyAdjustThis58, 0) + ISNULL(MST.QtyAdjustThis59, 0) + ISNULL(MST.QtyAdjustThis60, 0) + 
													ISNULL(MST.QtyAdjustThis61, 0) + ISNULL(MST.QtyAdjustThis62, 0) + ISNULL(MST.QtyAdjustThis63, 0) + ISNULL(MST.QtyAdjustThis64, 0) + ISNULL(MST.QtyAdjustThis65, 0) + ISNULL(MST.QtyAdjustThis66, 0) + ISNULL(MST.QtyAdjustThis67, 0) + ISNULL(MST.QtyAdjustThis68, 0) + ISNULL(MST.QtyAdjustThis69, 0) + ISNULL(MST.QtyAdjustThis70, 0) + 
													ISNULL(MST.QtyAdjustThis71, 0) + ISNULL(MST.QtyAdjustThis72, 0) + ISNULL(MST.QtyAdjustThis73, 0) + ISNULL(MST.QtyAdjustThis74, 0) + ISNULL(MST.QtyAdjustThis75, 0) + ISNULL(MST.QtyAdjustThis76, 0) + ISNULL(MST.QtyAdjustThis77, 0) + ISNULL(MST.QtyAdjustThis78, 0) + ISNULL(MST.QtyAdjustThis79, 0) + ISNULL(MST.QtyAdjustThis80, 0) + 
													ISNULL(MST.QtyAdjustThis81, 0) + ISNULL(MST.QtyAdjustThis82, 0) + ISNULL(MST.QtyAdjustThis83, 0) + ISNULL(MST.QtyAdjustThis84, 0) + ISNULL(MST.QtyAdjustThis85, 0) + ISNULL(MST.QtyAdjustThis86, 0) + ISNULL(MST.QtyAdjustThis87, 0) + ISNULL(MST.QtyAdjustThis88, 0) + ISNULL(MST.QtyAdjustThis89, 0) + ISNULL(MST.QtyAdjustThis90, 0) + 
													ISNULL(MST.QtyAdjustThis91, 0) + ISNULL(MST.QtyAdjustThis92, 0) + ISNULL(MST.QtyAdjustThis93, 0) + ISNULL(MST.QtyAdjustThis94, 0) + ISNULL(MST.QtyAdjustThis95, 0) + ISNULL(MST.QtyAdjustThis96, 0) + ISNULL(MST.QtyAdjustThis97, 0) + ISNULL(MST.QtyAdjustThis98, 0) + ISNULL(MST.QtyAdjustThis99, 0) + ISNULL(MST.QtyAdjustThis100, 0) + 
													ISNULL(MST.QtyAdjustThis101, 0) + ISNULL(MST.QtyAdjustThis102, 0) + ISNULL(MST.QtyAdjustThis103, 0) + ISNULL(MST.QtyAdjustThis104, 0) + ISNULL(MST.QtyAdjustThis105, 0) + ISNULL(MST.QtyAdjustThis106, 0) + ISNULL(MST.QtyAdjustThis107, 0) + ISNULL(MST.QtyAdjustThis108, 0) + ISNULL(MST.QtyAdjustThis109, 0) + ISNULL(MST.QtyAdjustThis110, 0) + 
													ISNULL(MST.QtyAdjustThis111, 0) + ISNULL(MST.QtyAdjustThis112, 0) + ISNULL(MST.QtyAdjustThis113, 0) + ISNULL(MST.QtyAdjustThis114, 0) + ISNULL(MST.QtyAdjustThis115, 0) + ISNULL(MST.QtyAdjustThis116, 0) + ISNULL(MST.QtyAdjustThis117, 0) + ISNULL(MST.QtyAdjustThis118, 0) + ISNULL(MST.QtyAdjustThis119, 0) + ISNULL(MST.QtyAdjustThis120, 0) + 
													ISNULL(MST.QtyAdjustThis121, 0) + ISNULL(MST.QtyAdjustThis122, 0) + ISNULL(MST.QtyAdjustThis123, 0) + ISNULL(MST.QtyAdjustThis124, 0) + ISNULL(MST.QtyAdjustThis125, 0) + ISNULL(MST.QtyAdjustThis126, 0) + ISNULL(MST.QtyAdjustThis127, 0) + ISNULL(MST.QtyAdjustThis128, 0) + ISNULL(MST.QtyAdjustThis129, 0) + ISNULL(MST.QtyAdjustThis130, 0) + 
													ISNULL(MST.QtyAdjustThis131, 0) + ISNULL(MST.QtyAdjustThis132, 0) + ISNULL(MST.QtyAdjustThis133, 0) + ISNULL(MST.QtyAdjustThis134, 0) + ISNULL(MST.QtyAdjustThis135, 0) + ISNULL(MST.QtyAdjustThis136, 0) + ISNULL(MST.QtyAdjustThis137, 0) + ISNULL(MST.QtyAdjustThis138, 0) + ISNULL(MST.QtyAdjustThis139, 0) + ISNULL(MST.QtyAdjustThis140, 0) + 
													ISNULL(MST.QtyAdjustThis141, 0) + ISNULL(MST.QtyAdjustThis142, 0) + ISNULL(MST.QtyAdjustThis143, 0) + ISNULL(MST.QtyAdjustThis144, 0) + ISNULL(MST.QtyAdjustThis145, 0) + ISNULL(MST.QtyAdjustThis146, 0) + ISNULL(MST.QtyAdjustThis147, 0) + ISNULL(MST.QtyAdjustThis148, 0) + ISNULL(MST.QtyAdjustThis149, 0) + ISNULL(MST.QtyAdjustThis150, 0) + 
													ISNULL(MST.QtyAdjustThis151, 0) + ISNULL(MST.QtyAdjustThis152, 0) + ISNULL(MST.QtyAdjustThis153, 0) + ISNULL(MST.QtyAdjustThis154, 0) + ISNULL(MST.QtyAdjustThis155, 0) + ISNULL(MST.QtyAdjustThis156, 0) + ISNULL(MST.QtyAdjustThis157, 0) + ISNULL(MST.QtyAdjustThis158, 0) + ISNULL(MST.QtyAdjustThis159, 0) + ISNULL(MST.QtyAdjustThis160, 0) + 
													ISNULL(MST.QtyAdjustThis161, 0) + ISNULL(MST.QtyAdjustThis162, 0) + ISNULL(MST.QtyAdjustThis163, 0) + ISNULL(MST.QtyAdjustThis164, 0) + ISNULL(MST.QtyAdjustThis165, 0) + ISNULL(MST.QtyAdjustThis166, 0) + ISNULL(MST.QtyAdjustThis167, 0) + ISNULL(MST.QtyAdjustThis168, 0) + ISNULL(MST.QtyAdjustThis169, 0) + ISNULL(MST.QtyAdjustThis170, 0) + 
													ISNULL(MST.QtyAdjustThis171, 0) + ISNULL(MST.QtyAdjustThis172, 0) + ISNULL(MST.QtyAdjustThis173, 0) + ISNULL(MST.QtyAdjustThis174, 0) + ISNULL(MST.QtyAdjustThis175, 0) + ISNULL(MST.QtyAdjustThis176, 0) + ISNULL(MST.QtyAdjustThis177, 0) + ISNULL(MST.QtyAdjustThis178, 0) + ISNULL(MST.QtyAdjustThis179, 0) + ISNULL(MST.QtyAdjustThis180, 0) + 
													ISNULL(MST.QtyAdjustThis181, 0) + ISNULL(MST.QtyAdjustThis182, 0) + ISNULL(MST.QtyAdjustThis183, 0) + ISNULL(MST.QtyAdjustThis184, 0) + ISNULL(MST.QtyAdjustThis185, 0) + ISNULL(MST.QtyAdjustThis186, 0) + ISNULL(MST.QtyAdjustThis187, 0) + ISNULL(MST.QtyAdjustThis188, 0) + ISNULL(MST.QtyAdjustThis189, 0) + ISNULL(MST.QtyAdjustThis190, 0) + 
													ISNULL(MST.QtyAdjustThis191, 0) + ISNULL(MST.QtyAdjustThis192, 0) + ISNULL(MST.QtyAdjustThis193, 0) + ISNULL(MST.QtyAdjustThis194, 0) + ISNULL(MST.QtyAdjustThis195, 0) + ISNULL(MST.QtyAdjustThis196, 0) + ISNULL(MST.QtyAdjustThis197, 0) + ISNULL(MST.QtyAdjustThis198, 0) + ISNULL(MST.QtyAdjustThis199, 0) + ISNULL(MST.QtyAdjustThis200, 0) + 
													ISNULL(MST.QtyAdjustThis201, 0) + ISNULL(MST.QtyAdjustThis202, 0) + ISNULL(MST.QtyAdjustThis203, 0) + ISNULL(MST.QtyAdjustThis204, 0) + ISNULL(MST.QtyAdjustThis205, 0) + ISNULL(MST.QtyAdjustThis206, 0) + ISNULL(MST.QtyAdjustThis207, 0) + ISNULL(MST.QtyAdjustThis208, 0) + ISNULL(MST.QtyAdjustThis209, 0) + ISNULL(MST.QtyAdjustThis210, 0) + 
													ISNULL(MST.QtyAdjustThis211, 0) + ISNULL(MST.QtyAdjustThis212, 0) + ISNULL(MST.QtyAdjustThis213, 0) + ISNULL(MST.QtyAdjustThis214, 0) + ISNULL(MST.QtyAdjustThis215, 0) + ISNULL(MST.QtyAdjustThis216, 0) + ISNULL(MST.QtyAdjustThis217, 0) + ISNULL(MST.QtyAdjustThis218, 0) + ISNULL(MST.QtyAdjustThis219, 0) + ISNULL(MST.QtyAdjustThis220, 0) + 
													ISNULL(MST.QtyAdjustThis221, 0) + ISNULL(MST.QtyAdjustThis222, 0) + ISNULL(MST.QtyAdjustThis223, 0) + ISNULL(MST.QtyAdjustThis224, 0) + ISNULL(MST.QtyAdjustThis225, 0) + ISNULL(MST.QtyAdjustThis226, 0) + ISNULL(MST.QtyAdjustThis227, 0) + ISNULL(MST.QtyAdjustThis228, 0) + ISNULL(MST.QtyAdjustThis229, 0) + ISNULL(MST.QtyAdjustThis230, 0) + 
													ISNULL(MST.QtyAdjustThis231, 0) + ISNULL(MST.QtyAdjustThis232, 0) + ISNULL(MST.QtyAdjustThis233, 0) + ISNULL(MST.QtyAdjustThis234, 0) + ISNULL(MST.QtyAdjustThis235, 0) + ISNULL(MST.QtyAdjustThis236, 0) + ISNULL(MST.QtyAdjustThis237, 0) + ISNULL(MST.QtyAdjustThis238, 0) + ISNULL(MST.QtyAdjustThis239, 0) + ISNULL(MST.QtyAdjustThis240, 0))) 

											  + (ISNULL(MST.QtySellThis01, 0) + ISNULL(MST.QtySellThis02, 0) + ISNULL(MST.QtySellThis03, 0) + ISNULL(MST.QtySellThis04, 0) + ISNULL(MST.QtySellThis05, 0) + ISNULL(MST.QtySellThis06, 0) + ISNULL(MST.QtySellThis07, 0) + ISNULL(MST.QtySellThis08, 0) + ISNULL(MST.QtySellThis09, 0) + ISNULL(MST.QtySellThis10, 0) + 
												 ISNULL(MST.QtySellThis11, 0) + ISNULL(MST.QtySellThis12, 0) + ISNULL(MST.QtySellThis13, 0) + ISNULL(MST.QtySellThis14, 0) + ISNULL(MST.QtySellThis15, 0) + ISNULL(MST.QtySellThis16, 0) + ISNULL(MST.QtySellThis17, 0) + ISNULL(MST.QtySellThis18, 0) + ISNULL(MST.QtySellThis19, 0) + ISNULL(MST.QtySellThis20, 0) + 
												 ISNULL(MST.QtySellThis21, 0) + ISNULL(MST.QtySellThis22, 0) + ISNULL(MST.QtySellThis23, 0) + ISNULL(MST.QtySellThis24, 0) + ISNULL(MST.QtySellThis25, 0) + ISNULL(MST.QtySellThis26, 0) + ISNULL(MST.QtySellThis27, 0) + ISNULL(MST.QtySellThis28, 0) + ISNULL(MST.QtySellThis29, 0) + ISNULL(MST.QtySellThis30, 0) + 
												 ISNULL(MST.QtySellThis31, 0) + ISNULL(MST.QtySellThis32, 0) + ISNULL(MST.QtySellThis33, 0) + ISNULL(MST.QtySellThis34, 0) + ISNULL(MST.QtySellThis35, 0) + ISNULL(MST.QtySellThis36, 0) + ISNULL(MST.QtySellThis37, 0) + ISNULL(MST.QtySellThis38, 0) + ISNULL(MST.QtySellThis39, 0) + ISNULL(MST.QtySellThis40, 0) + 
												 ISNULL(MST.QtySellThis41, 0) + ISNULL(MST.QtySellThis42, 0) + ISNULL(MST.QtySellThis43, 0) + ISNULL(MST.QtySellThis44, 0) + ISNULL(MST.QtySellThis45, 0) + ISNULL(MST.QtySellThis46, 0) + ISNULL(MST.QtySellThis47, 0) + ISNULL(MST.QtySellThis48, 0) + ISNULL(MST.QtySellThis49, 0) + ISNULL(MST.QtySellThis50, 0) + 
												 ISNULL(MST.QtySellThis51, 0) + ISNULL(MST.QtySellThis52, 0) + ISNULL(MST.QtySellThis53, 0) + ISNULL(MST.QtySellThis54, 0) + ISNULL(MST.QtySellThis55, 0) + ISNULL(MST.QtySellThis56, 0) + ISNULL(MST.QtySellThis57, 0) + ISNULL(MST.QtySellThis58, 0) + ISNULL(MST.QtySellThis59, 0) + ISNULL(MST.QtySellThis60, 0) + 
												 ISNULL(MST.QtySellThis61, 0) + ISNULL(MST.QtySellThis62, 0) + ISNULL(MST.QtySellThis63, 0) + ISNULL(MST.QtySellThis64, 0) + ISNULL(MST.QtySellThis65, 0) + ISNULL(MST.QtySellThis66, 0) + ISNULL(MST.QtySellThis67, 0) + ISNULL(MST.QtySellThis68, 0) + ISNULL(MST.QtySellThis69, 0) + ISNULL(MST.QtySellThis70, 0) + 
												 ISNULL(MST.QtySellThis71, 0) + ISNULL(MST.QtySellThis72, 0) + ISNULL(MST.QtySellThis73, 0) + ISNULL(MST.QtySellThis74, 0) + ISNULL(MST.QtySellThis75, 0) + ISNULL(MST.QtySellThis76, 0) + ISNULL(MST.QtySellThis77, 0) + ISNULL(MST.QtySellThis78, 0) + ISNULL(MST.QtySellThis79, 0) + ISNULL(MST.QtySellThis80, 0) + 
												 ISNULL(MST.QtySellThis81, 0) + ISNULL(MST.QtySellThis82, 0) + ISNULL(MST.QtySellThis83, 0) + ISNULL(MST.QtySellThis84, 0) + ISNULL(MST.QtySellThis85, 0) + ISNULL(MST.QtySellThis86, 0) + ISNULL(MST.QtySellThis87, 0) + ISNULL(MST.QtySellThis88, 0) + ISNULL(MST.QtySellThis89, 0) + ISNULL(MST.QtySellThis90, 0) + 
												 ISNULL(MST.QtySellThis91, 0) + ISNULL(MST.QtySellThis92, 0) + ISNULL(MST.QtySellThis93, 0) + ISNULL(MST.QtySellThis94, 0) + ISNULL(MST.QtySellThis95, 0) + ISNULL(MST.QtySellThis96, 0) + ISNULL(MST.QtySellThis97, 0) + ISNULL(MST.QtySellThis98, 0) + ISNULL(MST.QtySellThis99, 0) + ISNULL(MST.QtySellThis100, 0) + 
												 ISNULL(MST.QtySellThis101, 0) + ISNULL(MST.QtySellThis102, 0) + ISNULL(MST.QtySellThis103, 0) + ISNULL(MST.QtySellThis104, 0) + ISNULL(MST.QtySellThis105, 0) + ISNULL(MST.QtySellThis106, 0) + ISNULL(MST.QtySellThis107, 0) + ISNULL(MST.QtySellThis108, 0) + ISNULL(MST.QtySellThis109, 0) + ISNULL(MST.QtySellThis110, 0) + 
												 ISNULL(MST.QtySellThis111, 0) + ISNULL(MST.QtySellThis112, 0) + ISNULL(MST.QtySellThis113, 0) + ISNULL(MST.QtySellThis114, 0) + ISNULL(MST.QtySellThis115, 0) + ISNULL(MST.QtySellThis116, 0) + ISNULL(MST.QtySellThis117, 0) + ISNULL(MST.QtySellThis118, 0) + ISNULL(MST.QtySellThis119, 0) + ISNULL(MST.QtySellThis120, 0) + 
												 ISNULL(MST.QtySellThis121, 0) + ISNULL(MST.QtySellThis122, 0) + ISNULL(MST.QtySellThis123, 0) + ISNULL(MST.QtySellThis124, 0) + ISNULL(MST.QtySellThis125, 0) + ISNULL(MST.QtySellThis126, 0) + ISNULL(MST.QtySellThis127, 0) + ISNULL(MST.QtySellThis128, 0) + ISNULL(MST.QtySellThis129, 0) + ISNULL(MST.QtySellThis130, 0) + 
												 ISNULL(MST.QtySellThis131, 0) + ISNULL(MST.QtySellThis132, 0) + ISNULL(MST.QtySellThis133, 0) + ISNULL(MST.QtySellThis134, 0) + ISNULL(MST.QtySellThis135, 0) + ISNULL(MST.QtySellThis136, 0) + ISNULL(MST.QtySellThis137, 0) + ISNULL(MST.QtySellThis138, 0) + ISNULL(MST.QtySellThis139, 0) + ISNULL(MST.QtySellThis140, 0) + 
												 ISNULL(MST.QtySellThis141, 0) + ISNULL(MST.QtySellThis142, 0) + ISNULL(MST.QtySellThis143, 0) + ISNULL(MST.QtySellThis144, 0) + ISNULL(MST.QtySellThis145, 0) + ISNULL(MST.QtySellThis146, 0) + ISNULL(MST.QtySellThis147, 0) + ISNULL(MST.QtySellThis148, 0) + ISNULL(MST.QtySellThis149, 0) + ISNULL(MST.QtySellThis150, 0) + 
												 ISNULL(MST.QtySellThis151, 0) + ISNULL(MST.QtySellThis152, 0) + ISNULL(MST.QtySellThis153, 0) + ISNULL(MST.QtySellThis154, 0) + ISNULL(MST.QtySellThis155, 0) + ISNULL(MST.QtySellThis156, 0) + ISNULL(MST.QtySellThis157, 0) + ISNULL(MST.QtySellThis158, 0) + ISNULL(MST.QtySellThis159, 0) + ISNULL(MST.QtySellThis160, 0) + 
												 ISNULL(MST.QtySellThis161, 0) + ISNULL(MST.QtySellThis162, 0) + ISNULL(MST.QtySellThis163, 0) + ISNULL(MST.QtySellThis164, 0) + ISNULL(MST.QtySellThis165, 0) + ISNULL(MST.QtySellThis166, 0) + ISNULL(MST.QtySellThis167, 0) + ISNULL(MST.QtySellThis168, 0) + ISNULL(MST.QtySellThis169, 0) + ISNULL(MST.QtySellThis170, 0) + 
												 ISNULL(MST.QtySellThis171, 0) + ISNULL(MST.QtySellThis172, 0) + ISNULL(MST.QtySellThis173, 0) + ISNULL(MST.QtySellThis174, 0) + ISNULL(MST.QtySellThis175, 0) + ISNULL(MST.QtySellThis176, 0) + ISNULL(MST.QtySellThis177, 0) + ISNULL(MST.QtySellThis178, 0) + ISNULL(MST.QtySellThis179, 0) + ISNULL(MST.QtySellThis180, 0) + 
												 ISNULL(MST.QtySellThis181, 0) + ISNULL(MST.QtySellThis182, 0) + ISNULL(MST.QtySellThis183, 0) + ISNULL(MST.QtySellThis184, 0) + ISNULL(MST.QtySellThis185, 0) + ISNULL(MST.QtySellThis186, 0) + ISNULL(MST.QtySellThis187, 0) + ISNULL(MST.QtySellThis188, 0) + ISNULL(MST.QtySellThis189, 0) + ISNULL(MST.QtySellThis190, 0) + 
												 ISNULL(MST.QtySellThis191, 0) + ISNULL(MST.QtySellThis192, 0) + ISNULL(MST.QtySellThis193, 0) + ISNULL(MST.QtySellThis194, 0) + ISNULL(MST.QtySellThis195, 0) + ISNULL(MST.QtySellThis196, 0) + ISNULL(MST.QtySellThis197, 0) + ISNULL(MST.QtySellThis198, 0) + ISNULL(MST.QtySellThis199, 0) + ISNULL(MST.QtySellThis200, 0) + 
												 ISNULL(MST.QtySellThis201, 0) + ISNULL(MST.QtySellThis202, 0) + ISNULL(MST.QtySellThis203, 0) + ISNULL(MST.QtySellThis204, 0) + ISNULL(MST.QtySellThis205, 0) + ISNULL(MST.QtySellThis206, 0) + ISNULL(MST.QtySellThis207, 0) + ISNULL(MST.QtySellThis208, 0) + ISNULL(MST.QtySellThis209, 0) + ISNULL(MST.QtySellThis210, 0) + 
												 ISNULL(MST.QtySellThis211, 0) + ISNULL(MST.QtySellThis212, 0) + ISNULL(MST.QtySellThis213, 0) + ISNULL(MST.QtySellThis214, 0) + ISNULL(MST.QtySellThis215, 0) + ISNULL(MST.QtySellThis216, 0) + ISNULL(MST.QtySellThis217, 0) + ISNULL(MST.QtySellThis218, 0) + ISNULL(MST.QtySellThis219, 0) + ISNULL(MST.QtySellThis220, 0) + 
												 ISNULL(MST.QtySellThis221, 0) + ISNULL(MST.QtySellThis222, 0) + ISNULL(MST.QtySellThis223, 0) + ISNULL(MST.QtySellThis224, 0) + ISNULL(MST.QtySellThis225, 0) + ISNULL(MST.QtySellThis226, 0) + ISNULL(MST.QtySellThis227, 0) + ISNULL(MST.QtySellThis228, 0) + ISNULL(MST.QtySellThis229, 0) + ISNULL(MST.QtySellThis230, 0) + 
												 ISNULL(MST.QtySellThis231, 0) + ISNULL(MST.QtySellThis232, 0) + ISNULL(MST.QtySellThis233, 0) + ISNULL(MST.QtySellThis234, 0) + ISNULL(MST.QtySellThis235, 0) + ISNULL(MST.QtySellThis236, 0) + ISNULL(MST.QtySellThis237, 0) + ISNULL(MST.QtySellThis238, 0) + ISNULL(MST.QtySellThis239, 0) + ISNULL(MST.QtySellThis240, 0))) 

				   + ((ISNULL(MST.QtyBuyLast, 0) + ISNULL(MST.QtyAdjustLast, 0)) - ISNULL(MST.QtySellLast, 0))) > 0
		ORDER BY MST.ItemCode,
				 MST.StoreCode

	END

END
ELSE
BEGIN
INSERT INTO #Temp_INV (LocName, PartNumber, LastPPUnit, LastSale, LastPurchase, Qty)
SELECT	CASE WHEN SUBSTRING(LTRIM(RTRIM(ISNULL(MST.StoreCode, ''))), 1, 10) = '' THEN 'DEFAULT' ELSE SUBSTRING(LTRIM(RTRIM(MST.StoreCode)), 1, 10) END AS LocName,
SUBSTRING(LTRIM(RTRIM(ISNULL(MST.ItemCode, ''))), 1, 50) AS PartNumber, 
ISNULL(MST.CostThis12, 0) AS LastPPUnit, 
ISNULL(MST.LastInvDate, '1999-01-01') AS LastSale, 
ISNULL(MST.LastPurchDate, '1999-01-01') AS LastPurchase, 
SUM((MST.OpeningQty + ((MST.QtyBuyThis01 + MST.QtyBuyThis02 + MST.QtyBuyThis03 + MST.QtyBuyThis04 + MST.QtyBuyThis05 + MST.QtyBuyThis06 + MST.QtyBuyThis07 + MST.QtyBuyThis08 + 
MST.QtyBuyThis09 + MST.QtyBuyThis10 + MST.QtyBuyThis11 + MST.QtyBuyThis12) 
+ (MST.QtyAdjustThis01 + MST.QtyAdjustThis02 + MST.QtyAdjustThis03 + MST.QtyAdjustThis04 + MST.QtyAdjustThis05 + MST.QtyAdjustThis06 + MST.QtyAdjustThis07 + 
MST.QtyAdjustThis08 + MST.QtyAdjustThis09 + MST.QtyAdjustThis10 + MST.QtyAdjustThis11 + MST.QtyAdjustThis12)) 
- (MST.QtySellThis01 + MST.QtySellThis02 + MST.QtySellThis03 + MST.QtySellThis04 + MST.QtySellThis05 + MST.QtySellThis06 + MST.QtySellThis07 + 
MST.QtySellThis08 + MST.QtySellThis09 + MST.QtySellThis10 + MST.QtySellThis11 + MST.QtySellThis12)) 
+ ((MST.QtyBuyLast + MST.QtyAdjustLast) - MST.QtySellLast)) AS Qty 
FROM tblUtilityPervMultiStoreTrn MST 
INNER JOIN tblUtilityPervInventory INV ON MST.ItemCode = INV.ItemCode 
WHERE INV.Physical = 1 
GROUP BY MST.StoreCode, 
MST.ItemCode, 
MST.CostThis12, 
MST.LastInvDate, 
MST.LastPurchDate 
HAVING SUM((MST.OpeningQty + ((MST.QtyBuyThis01 + MST.QtyBuyThis02 + MST.QtyBuyThis03 + MST.QtyBuyThis04 + MST.QtyBuyThis05 + MST.QtyBuyThis06 + MST.QtyBuyThis07 + 
MST.QtyBuyThis08 + MST.QtyBuyThis09 + MST.QtyBuyThis10 + MST.QtyBuyThis11 + MST.QtyBuyThis12) 
+ (MST.QtyAdjustThis01 + MST.QtyAdjustThis02 + MST.QtyAdjustThis03 + MST.QtyAdjustThis04 + MST.QtyAdjustThis05 + MST.QtyAdjustThis06 + 
MST.QtyAdjustThis07 + MST.QtyAdjustThis08 + MST.QtyAdjustThis09 + MST.QtyAdjustThis10 + MST.QtyAdjustThis11 + MST.QtyAdjustThis12)) 
- (MST.QtySellThis01 + MST.QtySellThis02 + MST.QtySellThis03 + MST.QtySellThis04 + MST.QtySellThis05 + MST.QtySellThis06 + MST.QtySellThis07 + 
MST.QtySellThis08 + MST.QtySellThis09 + MST.QtySellThis10 + MST.QtySellThis11 + MST.QtySellThis12)) 
+ ((MST.QtyBuyLast + MST.QtyAdjustLast) - MST.QtySellLast)) > 0
END
SELECT @intINVTotCount = COUNT(PartNumber)
FROM #Temp_INV
UPDATE tblInv 
SET decLastPPUnit = ROUND(INV.LastPPUnit, 2), 
dteLastPurchase = INV.LastPurchase, 
dteDateLastSale = INV.LastSale 
FROM #Temp_INV INV
WHERE tblInv.strPartNumber = INV.PartNumber
SELECT @intINVRecCount = @@ROWCOUNT 
-- *** OPEN BALANCES - START
INSERT INTO #Temp_EXT (strPartNumber, strLocName, decOnHand, decValue, decOpenQty, decOpenValue, decConvQty, decConvValue, decAdjQty, decAdjValue)
SELECT	tblInvExt.strPartNumber,
tblInvExt.strLocName,
tblInvExt.decOnHand,
tblInvExt.decValue,
tblInvExt.decOpenQty,
tblInvExt.decOpenValue,
TMP.Qty AS decConvQty,
ROUND(TMP.LastPPUnit * TMP.Qty, 2) AS decConvValue,
(TMP.Qty - tblInvExt.decOpenQty) AS decAdjQty,
(ROUND(TMP.LastPPUnit * TMP.Qty, 2) - tblInvExt.decOpenValue) AS decAdjValue
FROM tblInv 
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber 
INNER JOIN #Temp_INV TMP ON tblInvExt.strPartNumber = TMP.PartNumber
AND tblInvExt.strLocName = TMP.LocName 
WHERE tblInv.intType = 1 
UPDATE #Temp_EXT
SET decAdjValue = 0.00
WHERE (decAdjValue + decValue) < 0.00
UPDATE #Temp_EXT
SET decAdjQty = 0.00,
decAdjValue  = 0.00
WHERE ((decAdjQty + decOnHand) <= 0.00)
AND ((decAdjValue + decValue) <> 0.00)
UPDATE tblInv 
SET decSumAvail = decSumAvail + ADJ.decAdjQty, 
decSumOnHand = decSumOnHand + ADJ.decAdjQty, 
decSumValue = decSumValue + ADJ.decAdjValue, 
decSumOpenQty = decSumOpenQty + ADJ.decAdjQty, 
decSumOpenValue = decSumOpenValue + ADJ.decAdjValue, 
dteLastUpdated = GETDATE() 
FROM (SELECT strPartNumber,
SUM(decAdjQty) AS decAdjQty,
SUM(decAdjValue) AS decAdjValue
FROM #Temp_EXT
GROUP BY strPartNumber) ADJ
WHERE tblInv.strPartNumber = ADJ.strPartNumber 
UPDATE tblInvExt 
SET decAvail = tblInvExt.decAvail + EXT.decAdjQty, 
decOnHand = tblInvExt.decOnHand + EXT.decAdjQty, 
decValue = tblInvExt.decValue + EXT.decAdjValue, 
decOpenQty = tblInvExt.decOpenQty + EXT.decAdjQty, 
decOpenValue = tblInvExt.decOpenValue + EXT.decAdjValue 
FROM #Temp_EXT EXT
WHERE tblInvExt.strPartNumber = EXT.strPartNumber 
AND tblInvExt.strLocName = EXT.strLocName 
UPDATE tblInvExtBin 
SET decOnHand = tblInvExtBin.decOnHand + EXT.decAdjQty, 
decAvail = tblInvExtBin.decOnHand + EXT.decAdjQty 
FROM #Temp_EXT EXT
WHERE tblInvExtBin.strPartNumber = EXT.strPartNumber 
AND tblInvExtBin.strLocName = EXT.strLocName 
AND tblInvExtBin.bitDefault = 1
-- *** OPEN BALANCES - FINISH
DROP TABLE #Temp_INV
DROP TABLE #Temp_EXT
SELECT @intINVTotCount AS intINVTotCount, @intINVRecCount AS intINVRecCount
GO

/****** Object:  StoredProcedure [dbo].[prConv_OpenItemVendors_Insert]    Script Date: 2021-02-01 ******/
----------------------------------------------------
CREATE PROCEDURE [dbo].[prConv_OpenItemVendors_Insert]
(
	@Evo bit,
	@UserName nvarchar(20),
	@TransTypeHDR tinyint,
	@TransTypeDTL tinyint
)
AS
DECLARE @strCurrency nvarchar(3),
		@intHDRTotCount bigint = 0,
		@intHDRRecCount bigint = 0,
		@intVENDRecCount bigint = 0,
		@lngVendTrID bigint = 0

SELECT @strCurrency = strCurrency FROM tblCurrency WHERE bitHome = 1
CREATE TABLE #Temp_Doc (
[lngID] [bigint] IDENTITY(1,1) NOT NULL,
[InvPDocID] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[OIBalance] [money] NOT NULL,
[OICurrBalance] [money] NOT NULL,
[CSCode] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[MatchRef] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[dDate] [datetime] NOT NULL,
[UseLocalCurrency] [bit] NOT NULL,
[IsForeign] [bit] NOT NULL,
[lngVendTrID] [bigint] NULL)
IF @Evo = 1
BEGIN

	INSERT INTO #Temp_Doc (InvPDocID, OIBalance, OICurrBalance, CSCode, MatchRef, dDate, UseLocalCurrency, IsForeign)
	SELECT	Z.InvDocID,
			Z.OIBalance,
			Z.OICurrBalance,
			Z.CSCode,
			Z.MatchRef,
			Z.dDate,
			Z.UseLocalCurrency,
			Z.IsForeign 
	FROM (SELECT	SUBSTRING('OPEN ITEM (' + OI.Account + ' - ' + LTRIM(RTRIM(ISNULL(OI.MatchRef,''))) + ')', 1, 46) AS InvDocID,
					ISNULL(OI.AccountBalance, 0) AS OIBalance,
					ISNULL(OI.AccountBalanceForeign, 0) AS OICurrBalance,
					OI.Account AS CSCode,
					LTRIM(RTRIM(ISNULL(OI.MatchRef, ''))) AS MatchRef, 
					OI.dDate, 
					0 AS UseLocalCurrency,
					CASE WHEN ISNULL(OI.AccountBalance, 0) <> ISNULL(OI.AccountBalanceForeign, 0) AND VEND.strCurrency <> @strCurrency THEN 1 ELSE 0 END AS IsForeign
			FROM tblUtilityPervOpenItem OI
			LEFT JOIN tblUtilityPervSupplierMaster SM ON OI.Account = SM.SupplCode 
			LEFT JOIN tblVendors VEND ON OI.Account = VEND.strVendName 
			WHERE (OI.DC = 'C')
			AND (ISNULL(OI.AccountBalance, 0) <> 0 OR ISNULL(OI.AccountBalanceForeign, 0) <> 0)
			AND (SM.BFOpenType = 0)
			UNION ALL
			SELECT	SUBSTRING('OPEN ITEM (' + OI.Account + ' - Balance Forward)', 1, 46) AS InvDocID,
					SUM(ISNULL(OI.AccountBalance, 0)) AS OIBalance,
					SUM(ISNULL(OI.AccountBalanceForeign, 0)) AS OICurrBalance,
					OI.Account AS CSCode,
					'Balance Forward' AS MatchRef, 
					MAX(OI.dDate) AS dDate, 
					0 AS UseLocalCurrency,
					CASE WHEN SUM(ISNULL(OI.AccountBalance, 0)) <> SUM(ISNULL(OI.AccountBalanceForeign, 0)) AND VEND.strCurrency <> @strCurrency THEN 1 ELSE 0 END AS IsForeign
			FROM tblUtilityPervOpenItem OI
			LEFT JOIN tblUtilityPervSupplierMaster SM ON OI.Account = SM.SupplCode 
			LEFT JOIN tblVendors VEND ON OI.Account = VEND.strVendName 
			WHERE (OI.DC = 'C')
			AND (ISNULL(OI.AccountBalance, 0) <> 0 OR ISNULL(OI.AccountBalanceForeign, 0) <> 0)
			AND (SM.BFOpenType = 1)
			GROUP BY OI.Account,
					 VEND.strCurrency) Z
	ORDER BY Z.CSCode, 
			 Z.dDate, 
			 Z.MatchRef
END
ELSE
BEGIN

	INSERT INTO #Temp_Doc (InvPDocID, OIBalance, OICurrBalance, CSCode, MatchRef, dDate, UseLocalCurrency, IsForeign)
	SELECT	SUBSTRING('OPEN ITEM (' + LTRIM(RTRIM(Z.CSCode)) + ' - ' + LTRIM(RTRIM(Z.MatchRef)) + ')', 1, 47) AS InvPDocID,
			Z.OIBalance * -1 AS OIBalance, 
			Z.OICurrBalance * -1 AS OICurrBalance, 
			LTRIM(RTRIM(Z.CSCode)) AS CSCode, 
			LTRIM(RTRIM(Z.MatchRef)) AS MatchRef, 
			Z.dDate, 
			Z.UseLocalCurrency,
			CASE WHEN OIBalance <> OICurrBalance AND UseLocalCurrency = 0 AND VEND.strCurrency <> @strCurrency THEN 1 ELSE 0 END AS IsForeign
	FROM (SELECT ROUND(SUM(Amount), 2) AS OIBalance, 
				 ROUND(SUM(CurrAmt), 2) AS OICurrBalance, 
				 CSCode, 
				 CASE WHEN LTRIM(RTRIM(MatchRef)) = '' THEN LTRIM(RTRIM(Ref)) ELSE LTRIM(RTRIM(MatchRef)) END AS MatchRef, 
				 ISNULL((SELECT MAX(OI.dDate) 
						 FROM tblUtilityPervOpenItem OI 
						 WHERE OI.DC = 'C' 
						 AND OI.BatchID = 0 
						 AND OI.PPeriod <> 13 
						 AND OI.CSCode = tblUtilityPervOpenItem.CSCode 
						 AND LTRIM(RTRIM(OI.Ref)) = CASE WHEN LTRIM(RTRIM(tblUtilityPervOpenItem.MatchRef)) = '' 
														 THEN LTRIM(RTRIM(tblUtilityPervOpenItem.Ref)) 
														 ELSE LTRIM(RTRIM(tblUtilityPervOpenItem.MatchRef)) 
													END), '') AS dDate, 
				 0 AS UseLocalCurrency 
		  FROM tblUtilityPervOpenItem 
		  WHERE CSCode IN (SELECT CSCode 
						   FROM tblUtilityPervOpenItem 
						   WHERE DC = 'C' 
						   AND BatchID = 0 
						   AND PPeriod <> 13 
						   GROUP BY CSCode 
						   HAVING ROUND(SUM(CurrAmt), 2) <> 0 
						   OR ROUND(SUM(Amount), 2) <> 0) 
		  AND DC = 'C' 
		  AND BatchID = 0 
		  AND PPeriod <> 13 
		  GROUP BY CSCode, 
				   CASE WHEN LTRIM(RTRIM(MatchRef)) = '' 
						THEN LTRIM(RTRIM(Ref)) 
						ELSE LTRIM(RTRIM(MatchRef)) 
				   END 
		  HAVING ROUND(SUM(Amount), 2) <> 0 
		  OR ROUND(SUM(CurrAmt), 2) <> 0 
		  UNION ALL 
		  SELECT ROUND(SUM(CurrAmt), 2) AS OIBalance, 
				 ROUND(SUM(Amount), 2) AS OICurrBalance, 
				 AccNumber AS CSCode, 
				 Refrence + '-CA' AS MatchRef, 
				 dDate, 
				 1 AS UseLocalCurrency 
		  FROM tblUtilityPervLedgerTransactions 
		  WHERE GDC = 'C' 
		  AND PPeriod <> 13 
		  AND UPPER([Description]) = 'CURRENCY ADJUSTMENT' 
		  AND CurrCode = 0 
		  GROUP BY AccNumber, 
				   Refrence, 
				   dDate 
		  HAVING ROUND(SUM(CurrAmt), 2) <> 0 
		  OR ROUND(SUM(Amount), 2) <> 0 
		  UNION ALL 
		  SELECT SUM(BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + BalanceThis05 + BalanceThis06 + BalanceThis07 + BalanceThis08 + BalanceThis09 + 
					 BalanceThis10 + BalanceThis11 + BalanceThis12 + BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + 
					 BalanceLast07 + BalanceLast08 + BalanceLast09 + BalanceLast10 + BalanceLast11 + BalanceLast12) AS OIBalance, 
				 SUM(BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + BalanceThis05 + BalanceThis06 + BalanceThis07 + BalanceThis08 + BalanceThis09 + 
					 BalanceThis10 + BalanceThis11 + BalanceThis12 + BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + 
					 BalanceLast07 + BalanceLast08 + BalanceLast09 + BalanceLast10 + BalanceLast11 + BalanceLast12) AS OICurrBalance, 
				 SupplCode AS CSCode, 
				 'Balance Forward' AS MatchRef, 
				 LastCrDate AS dDate, 
				 0 AS UseLocalCurrency 
		  FROM tblUtilityPervSupplierMaster 
		  WHERE OpenItem = 0 
		  GROUP BY SupplCode, 
				   LastCrDate 
		  HAVING SUM(BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + BalanceThis05 + BalanceThis06 + BalanceThis07 + BalanceThis08 + BalanceThis09 + 
					 BalanceThis10 + BalanceThis11 + BalanceThis12 + BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + 
					 BalanceLast07 + BalanceLast08 + BalanceLast09 + BalanceLast10 + BalanceLast11 + BalanceLast12) <> 0) Z 
	LEFT JOIN tblVendors VEND ON Z.CSCode = VEND.strVendName 
	ORDER BY Z.CSCode, 
			 Z.dDate, 
			 Z.MatchRef

END

UPDATE #Temp_DOC
SET InvPDocID = SUBSTRING(CASE WHEN Z.lngDuplicate = 1 THEN #Temp_DOC.InvPDocID ELSE #Temp_DOC.InvPDocID + '_' + CAST(Z.lngDuplicate AS nvarchar) END, 1, 50)
FROM (SELECT lngID,
				ROW_NUMBER() OVER(PARTITION BY #Temp_DOC.InvPDocID ORDER BY #Temp_DOC.InvPDocID ASC) AS lngDuplicate
		FROM #Temp_DOC) Z
WHERE (#Temp_DOC.lngID = Z.lngID)

SELECT @intHDRTotCount = COUNT(InvPDocID)
FROM #Temp_Doc
DELETE FROM #Temp_Doc
WHERE lngID IN (SELECT TMP.lngID  
FROM #Temp_Doc TMP
INNER JOIN tblInvoiceDocP HDR ON TMP.CSCode = HDR.strVendName 
AND TMP.InvPDocID = HDR.strInvPDocID 
WHERE HDR.strNotes = 'Conversion Transaction')
INSERT INTO tblInvoiceDocP (strInvPDocID, lngInvTrackID, lngJourID, dteSystemDate, dteJournalDate, dteRequired, strUserName, strVendName, strShipTo, strVendInvNo, decSubTotal, decVAT, 
decTotal, bitFromPO, strOrdPDocID, strSourceMOP, bitHistoryTrans, strNotes, bitPrinted, bitEmailed, intPaidBy, intAccount, strCurrency, bitIsForeign, 
decSubTotalF, decVATF, decTotalF, decExchange, strTerm, intDept, strField1, strField2, strField3, strField4, strField5, strField6, strField7, strField8, 
strField9, strField10, strField11, strField12, 	strSubFormated, strVATFormatted, strTotFormatted, decDiscPerc, decDiscAmt, decDiscAmtF, strDiscFormatted, 
strOrdFQDocID, bitFQConvert, bitSOCopy, bitSOCopyMulti, strStatusTypeCode, bitBookmark, strAddInfo, strReference, strPaidBy, decNetItemWeight, 
decNetVolumetricWeight, intRevisionNumber, intAccrualProcess, strBuyerName)
SELECT	DOC.InvPDocID AS strInvPDocID, 
NULL AS lngInvTrackID, 
NULL AS lngJourID, 
GETDATE() AS dteSystemDate, 
DOC.dDate AS dteJournalDate, 
DOC.dDate AS dteRequired, 
@UserName AS strUserName, 
SUBSTRING(LTRIM(RTRIM(DOC.CSCode)), 1, 50) AS strVendName, 
'' AS strShipTo, 
SUBSTRING(DOC.InvPDocID, 1, (50 - LEN('_' + CAST(DOC.lngID AS nvarchar)))) + '_' + CAST(DOC.lngID AS nvarchar) AS strVendInvNo, 
DOC.OIBalance AS decSubTotal, 
0.00 AS decVAT, 
DOC.OIBalance AS decTotal, 
0 AS bitFromPO, 
NULL AS strOrdPDocID, 
'' AS strSourceMOP, 
1 AS bitHistoryTrans, 
'Conversion Transaction' AS strNotes, 
1 AS bitPrinted, 
1 AS bitEmailed, 
0 AS intPaidBy, 
NULL AS intAccount, 
CASE WHEN DOC.IsForeign = 0 THEN @strCurrency ELSE VEND.strCurrency END AS strCurrency, 
DOC.IsForeign AS bitIsForeign, 
CASE WHEN DOC.IsForeign = 0 THEN 0.00 ELSE DOC.OICurrBalance END AS decSubTotalF, 
0.00 AS decVATF, 
CASE WHEN DOC.IsForeign = 0 THEN 0.00 ELSE DOC.OICurrBalance END AS decTotalF, 
CASE WHEN DOC.IsForeign = 0 
THEN 1.000000 
ELSE CASE WHEN DOC.OIBalance = 0 OR DOC.OICurrBalance = 0 
THEN 1.000000 
ELSE ROUND(DOC.OIBalance / DOC.OICurrBalance, 4) 
END 
END AS decExchange, 
VEND.strTerm,
NULL AS intDept, 
'' AS strField1, 
'' AS strField2, 
'' AS strField3, 
'' AS strField4, 
'' AS strField5, 
'' AS strField6, 
'' AS strField7, 
'' AS strField8, 
'' AS strField9, 
'' AS strField10, 
'' AS strField11, 
'' AS strField12, 
CUR.strCurrSymbol + ' ' + CAST(CASE WHEN DOC.IsForeign = 0 THEN DOC.OICurrBalance ELSE DOC.OICurrBalance END AS nvarchar(50)) AS strSubFormated,
CUR.strCurrSymbol + ' ' + CAST(0.00 AS nvarchar(50)) AS strVATFormatted,
CUR.strCurrSymbol + ' ' + CAST(CASE WHEN DOC.IsForeign = 0 THEN DOC.OICurrBalance ELSE DOC.OICurrBalance END AS nvarchar(50)) AS strTotFormatted,
0.00 AS decDiscPerc, 
0.00 AS decDiscAmt, 
0.00 AS decDiscAmtF, 
'' AS strDiscFormatted, 
NULL AS strOrdFQDocID, 
0 AS bitFQConvert, 
0 AS bitSOCopy, 
0 AS bitSOCopyMulti, 
NULL AS strStatusTypeCode, 
0 AS bitBookmark, 
'' AS strAddInfo, 
'' AS strReference, 
CASE WHEN ISNULL(TERM.bitCOD, 0) = 1 THEN 'Cash' ELSE 'On Account' END AS strPaidBy, 
0.00 AS decNetItemWeight, 
0.00 AS decNetVolumetricWeight, 
1 AS intRevisionNumber, 
1 AS intAccrualProcess, 
'' AS strBuyerName
FROM #Temp_Doc DOC
INNER JOIN tblVendors VEND ON DOC.CSCode = VEND.strVendName
INNER JOIN tblCurrency CUR ON VEND.strCurrency = CUR.strCurrency 
LEFT JOIN tblTerms TERM ON VEND.strTerm = TERM.strTerm 
ORDER BY DOC.lngID 
SELECT @intHDRRecCount = @@ROWCOUNT
SELECT @lngVendTrID = ISNULL(MAX(lngVendTrID), 0) FROM tblVendTrans
UPDATE #Temp_Doc
SET lngVendTrID = Z.lngVendTrID_New 
FROM (SELECT lngID, 
ROW_NUMBER() OVER(ORDER BY lngID ASC) + @lngVendTrID AS lngVendTrID_New
FROM #Temp_Doc) Z
WHERE #Temp_Doc.lngID = Z.lngID
INSERT INTO tblVendTrans (lngVendTrID, strVendName, dteSystemDate, dteJournalDate, strUserName, strInvPDocID, strInvDepNumber, strPoNumber, intTransType, decInvAmount, 
decInvAmountF, strCurrency, bitIsForeign, decExchange, bitDocReRated, dteReRated, decReRateCumltveValue, bitSettled, decDiscAvail, decDiscAvailF, 
dteDiscExpires, dteDueDate, strJEDocID)
SELECT	DOC.lngVendTrID, 
SUBSTRING(LTRIM(RTRIM(DOC.CSCode)), 1, 50) AS strVendName, 
GETDATE() AS dteSystemDate, 
DOC.dDate AS dteJournalDate, 
@UserName AS strUserName, 
DOC.InvPDocID AS strInvPDocID, 
'Conversion' AS strInvDepNumber, 
'' AS strPoNumber, 
@TransTypeHDR AS intTransType, 
DOC.OIBalance AS decInvAmount, 
CASE WHEN DOC.IsForeign = 0 THEN 0.00 ELSE DOC.OICurrBalance END AS decInvAmountF, 
CASE WHEN DOC.IsForeign = 0 THEN @strCurrency ELSE VEND.strCurrency END AS strCurrency, 
DOC.IsForeign AS bitIsForeign, 
CASE WHEN DOC.IsForeign = 0 
THEN 1.000000 
ELSE CASE WHEN DOC.OIBalance = 0 OR DOC.OICurrBalance = 0 
THEN 1.000000 
ELSE ROUND(DOC.OIBalance / DOC.OICurrBalance, 4) 
END 
END AS decExchange, 
0 AS bitDocReRated, 
NULL AS dteReRated, 
0.00 AS decReRateCumltveValue, 
0 AS bitSettled, 
0.00 AS decDiscAvail, 
0.00 AS decDiscAvailF, 
DOC.dDate AS dteDiscExpires, 
DOC.dDate AS dteDueDate, 
NULL AS strJEDocID
FROM #Temp_Doc DOC
INNER JOIN tblVendors VEND ON DOC.CSCode = VEND.strVendName
ORDER BY DOC.lngID
INSERT INTO tblVendTransDT (dteJournalDate, lngVendTrID, lngVendPayID, decAmount, intTransType, decAmtOwingAtTime, bitReversed, decAmountF, decAmtOwingAtTimeF, bitIsForeign)
SELECT	dDate AS dteJournalDate, 
lngVendTrID, 
NULL AS lngVendPayID, 
OIBalance AS decAmount, 
@TransTypeDTL AS intTransType, 
OIBalance AS decAmtOwingAtTime, 
0 AS bitReversed, 
CASE WHEN IsForeign = 0 THEN 0.00 ELSE OICurrBalance END AS decAmountF, 
CASE WHEN IsForeign = 0 THEN 0.00 ELSE OICurrBalance END AS decAmtOwingAtTimeF, 
IsForeign AS bitIsForeign
FROM #Temp_Doc
ORDER BY lngID
IF @Evo = 1
BEGIN
UPDATE tblVendors 
SET decBalDue = (SELECT ISNULL(SUM(tblVendTransDT.decAmount), 0) 
FROM tblVendTrans 
INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID 
WHERE tblVendTrans.strVendName = tblVendors.strVendName 
AND tblVendTransDT.bitReversed = 0), 
decYTDPurch = (SELECT ISNULL(SUM(decTotal), 0) 
FROM tblInvoiceDocP
CROSS JOIN tblCompany 
WHERE strVendName = tblVendors.strVendName 
AND bitHistoryTrans = 0 
AND dteJournalDate >= tblCompany.dteYearStarts), 
decBalDueF = (SELECT ISNULL(SUM(tblVendTransDT.decAmountF), 0) 
FROM tblVendTrans 
INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID 
WHERE tblVendTrans.strVendName = tblVendors.strVendName 
AND tblVendTransDT.bitReversed = 0), 
decYTDPurchF = (SELECT ISNULL(SUM(decTotalF), 0) 
FROM tblInvoiceDocP
CROSS JOIN tblCompany 
WHERE strVendName = tblVendors.strVendName 
AND bitHistoryTrans = 0 
AND dteJournalDate >= tblCompany.dteYearStarts)
WHERE strVendName IN (SELECT DISTINCT
CSCode
FROM #Temp_Doc)
SELECT @intVENDRecCount = @@ROWCOUNT
END
ELSE
BEGIN
UPDATE tblVendors 
SET decBalDue = Z.Balance, 
decYTDPurch = Z.Balance, 
decBalDueF = CASE WHEN Z.Balance = Z.CBalance THEN 0.00 ELSE Z.CBalance END, 
decYTDPurchF = CASE WHEN Z.Balance = Z.CBalance THEN 0.00 ELSE Z.CBalance END 
FROM (SELECT SupplCode, 
ROUND((BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + BalanceLast07 + BalanceLast08 + BalanceLast09 + 
BalanceLast10 + BalanceLast11 + BalanceLast12 + BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + BalanceThis05 + BalanceThis06 + 
BalanceThis07 + BalanceThis08 + BalanceThis09 + BalanceThis10 + BalanceThis11 + BalanceThis12), 2) AS Balance, 
ROUND((CurrBalanceLast01 + CurrBalanceLast02 + CurrBalanceLast03 + CurrBalanceLast04 + CurrBalanceLast05 + CurrBalanceLast06 + CurrBalanceLast07 + 
CurrBalanceLast08 + CurrBalanceLast09 + CurrBalanceLast10 + CurrBalanceLast11 + CurrBalanceLast12 + CurrBalanceThis01 + CurrBalanceThis02 + 
CurrBalanceThis03 + CurrBalanceThis04 + CurrBalanceThis05 + CurrBalanceThis06 + CurrBalanceThis07 + CurrBalanceThis08 + CurrBalanceThis09 + 
CurrBalanceThis10 + CurrBalanceThis11 + CurrBalanceThis12), 2) AS CBalance 
FROM tblUtilityPervSupplierMaster 
WHERE (OpenItem <> 0) 
AND (ROUND((BalanceLast01 + BalanceLast02 + BalanceLast03 + BalanceLast04 + BalanceLast05 + BalanceLast06 + BalanceLast07 + BalanceLast08 + BalanceLast09 + 
BalanceLast10 + BalanceLast11 + BalanceLast12 + BalanceThis01 + BalanceThis02 + BalanceThis03 + BalanceThis04 + BalanceThis05 + BalanceThis06 + 
BalanceThis07 + BalanceThis08 + BalanceThis09 + BalanceThis10 + BalanceThis11 + BalanceThis12), 2) <> 0 
OR ROUND((CurrBalanceLast01 + CurrBalanceLast02 + CurrBalanceLast03 + CurrBalanceLast04 + CurrBalanceLast05 + CurrBalanceLast06 + CurrBalanceLast07 + 
CurrBalanceLast08 + CurrBalanceLast09 + CurrBalanceLast10 + CurrBalanceLast11 + CurrBalanceLast12 + CurrBalanceThis01 + CurrBalanceThis02 + 
CurrBalanceThis03 + CurrBalanceThis04 + CurrBalanceThis05 + CurrBalanceThis06 + CurrBalanceThis07 + CurrBalanceThis08 + CurrBalanceThis09 + 
CurrBalanceThis10 + CurrBalanceThis11 + CurrBalanceThis12), 2) <> 0)) Z
WHERE tblVendors.strVendName = Z.SupplCode 
SELECT @intVENDRecCount = @@ROWCOUNT
END
DROP TABLE #Temp_Doc
SELECT @intHDRTotCount AS intHDRTotCount, @intHDRRecCount AS intHDRRecCount, @intVENDRecCount AS intVENDRecCount
GO

/****** Object:  StoredProcedure [dbo].[prConv_OpenPurchaseOrders_Insert]    Script Date: 2021-02-01 ******/
----------------------------------------------------
CREATE PROCEDURE [dbo].[prConv_OpenPurchaseOrders_Insert]
(
@Evo bit,
@UserName nvarchar(20),
@DocType tinyint
)		
AS
DECLARE	@StartDate smalldatetime,
@EndDate smalldatetime,
@strCurrency nvarchar(3),
@strCurrSymbol nvarchar(5),
@strLocName nvarchar(10),
@intHDRTotCount bigint = 0,
@intHDRRecCount bigint = 0,
@intDTLTotCount bigint = 0,
@intDTLRecCount bigint = 0,
@intREVHDRRecCount bigint = 0,
@intREVDTLRecCount bigint = 0,
@lngEntID bigint = 0
SELECT @StartDate = dteYearStarts, @EndDate = dteYearEnds FROM tblCompany
SELECT @strCurrency = strCurrency, @strCurrSymbol = strCurrSymbol FROM tblCurrency WHERE bitHome = 1
SELECT @strLocName = ISNULL(strLocName, '') FROM tblUsers WHERE strUserName = @UserName
IF ISNULL(@strLocName, '') = ''
BEGIN 
SELECT @strLocName = ISNULL(strLocName, '') FROM tblInvLoc WHERE bitDefault = 1
END 
CREATE TABLE #Temp_DOC (
[OrdPDocID] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[OrdPDocID_New] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[InvoiceID] [int] NULL,
[lngID] [bigint] IDENTITY(1,1) NOT NULL)
CREATE TABLE #Temp_HDR (
[lngID] [bigint] IDENTITY(1,1) NOT NULL,
[strOrdPDocID] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[dteSystemDate] [smalldatetime] NOT NULL,
[dteJournalDate] [smalldatetime] NOT NULL,
[dteRequired] [smalldatetime] NOT NULL,
[strVendName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strShipTo] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decSubTotal] [money] NOT NULL,
[decVAT] [money] NOT NULL,
[decTotal] [money] NOT NULL,
[strNotes] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strBoughtFrom] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strCurrency] [nvarchar](3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[bitIsForeign] [bit] NOT NULL,
[decSubTotalF] [money] NOT NULL,
[decVATF] [money] NOT NULL,
[decTotalF] [money] NOT NULL,
[decExchange] [decimal](20, 6) NOT NULL,
[strTerm] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strSubFormated] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strVATFormatted] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strTotFormatted] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decDiscPerc] [money] NOT NULL,
[strDiscFormatted] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strReference] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[lngEntID] [bigint] NULL)
CREATE TABLE #Temp_DTL (
[strOrdPDocID] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[intLineNo] [int] NOT NULL,
[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strLocation] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strPartDesc] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decBuyQty] [money] NOT NULL,
[decBuyQtyRemain] [money] NOT NULL,
[strBuyUnit] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decStockQty] [money] NOT NULL,
[decStockQtyRemain] [money] NOT NULL,
[strStockUnit] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[intType] [tinyint] NOT NULL,
[decPriceEaExc] [money] NOT NULL,
[decLineTotExc] [money] NOT NULL,
[decLineTaxAmt] [money] NOT NULL,
[strTaxCode] [nvarchar](2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decEaIncTax] [money] NOT NULL,
[decTotIncTax] [money] NOT NULL,
[strCurrency] [nvarchar](3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[bitIsForeign] [bit] NOT NULL,
[decPriceEaExcF] [money] NOT NULL,
[decLineTotExcF] [money] NOT NULL,
[decLineTaxAmtF] [money] NOT NULL,
[decEaIncTaxF] [money] NOT NULL,
[decTotIncTaxF] [money] NOT NULL,
[decLineDiscPerc] [money] NOT NULL,
[decLineDiscAmt] [money] NOT NULL,
[decLineDiscAmtF] [money] NOT NULL,
[lngID] [bigint] IDENTITY(1,1) NOT NULL)
CREATE TABLE #Temp_EXT (
[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strLocName] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decOnOrder] [money] NOT NULL)
CREATE TABLE #Temp_INV (
[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decOnOrder] [money] NOT NULL)
IF @Evo = 1
BEGIN

	INSERT INTO #Temp_DOC (OrdPDocID, OrdPDocID_New, InvoiceID)
	SELECT	DISTINCT 
			HH.OrderNumber AS OrdDocID,
			SUBSTRING('PO-' + LTRIM(RTRIM(HH.OrderNumber)), 1, 50) AS OrdDocID_New,
			MAX(HH.InvoiceID) AS InvoiceID
	FROM tblUtilityPervHistoryHeader HH
	INNER JOIN tblUtilityPervHistoryLines HL ON HH.InvoiceID = HL.iInvoiceID
	WHERE (HH.DocType IN ('PO'))
	AND (HH.DocStateID IN (1, 3))
	AND (HH.DocFlagID = 1)
	AND ((HL.fQuantity - HL.fQtyProcessed) > 0)
	AND (HH.DocumentDate IS NOT NULL)
	GROUP BY HH.OrderNumber
	ORDER BY MAX(HH.InvoiceID)

	SELECT @intHDRTotCount = COUNT(OrdPDocID_New)
	FROM #Temp_DOC

	SELECT @intDTLTotCount = COUNT(HL.DocumentNumber)
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryLines HL ON TMP.InvoiceID = HL.iInvoiceID 

	DELETE FROM #Temp_DOC
	WHERE OrdPDocID_New IN (SELECT TMP.OrdPDocID_New 
						   FROM #Temp_DOC TMP
						   INNER JOIN tblOrderDocP DOC ON TMP.OrdPDocID_New = DOC.strOrdPDocID)

	INSERT INTO #Temp_HDR (strOrdPDocID, dteSystemDate, dteJournalDate, dteRequired, strVendName, strShipTo, decSubTotal, decVAT, decTotal, strNotes, strBoughtFrom, 
						   strCurrency, bitIsForeign, decSubTotalF, decVATF, decTotalF, decExchange, strTerm, strSubFormated, strVATFormatted, strTotFormatted, 
						   decDiscPerc, strDiscFormatted, strReference)
	SELECT	TMP.OrdPDocID_New AS strOrdPDocID,
			HH.DocumentDate AS dteSystemDate, 
			HH.DocumentDate AS dteJournalDate, 
			HH.DocumentDate AS dteRequired,
			SUBSTRING(HH.CustomerCode, 1, 50) AS strVendName,
			SUBSTRING(CASE WHEN LEN(LTRIM(RTRIM(COMP.strName))) > 0 THEN LTRIM(RTRIM(COMP.strName)) + Char(13) + Char(10) ELSE '' END
					+ CASE WHEN LEN(LTRIM(RTRIM(COMP.strStreet1))) > 0 THEN LTRIM(RTRIM(COMP.strStreet1)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(COMP.strStreet2))) > 0 THEN LTRIM(RTRIM(COMP.strStreet2)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(COMP.strCity))) > 0 THEN LTRIM(RTRIM(COMP.strCity)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(COMP.strProvince))) > 0 THEN LTRIM(RTRIM(COMP.strProvince)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(COMP.strPostal))) > 0 THEN LTRIM(RTRIM(COMP.strPostal)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(COMP.strCountry))) > 0 THEN Char(13) + Char(10) + LTRIM(RTRIM(COMP.strCountry)) ELSE '' END, 1, 500) AS strShipTo,
			HH.Total AS decSubTotal,
			HH.TotalTax AS decVAT,
			HH.Total + HH.TotalTax AS decTotal,
			SUBSTRING(LTRIM(RTRIM(ISNULL(HH.Message01, ''))) + LTRIM(RTRIM(ISNULL(HH.Message02, ''))) + LTRIM(RTRIM(ISNULL(HH.Message03, ''))), 1, 500) AS strNotes,
			SUBSTRING(CASE WHEN LEN(LTRIM(RTRIM(VEND.strVendDesc))) > 0 THEN LTRIM(RTRIM(VEND.strVendDesc)) + Char(13) + Char(10) ELSE '' END
					+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strStreet1))) > 0 THEN LTRIM(RTRIM(VEND.strStreet1)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strStreet2))) > 0 THEN LTRIM(RTRIM(VEND.strStreet2)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strCity))) > 0 THEN LTRIM(RTRIM(VEND.strCity)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strProvince))) > 0 THEN LTRIM(RTRIM(VEND.strProvince)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strPostal))) > 0 THEN LTRIM(RTRIM(VEND.strPostal)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strCountry))) > 0 THEN Char(13) + Char(10) + LTRIM(RTRIM(VEND.strCountry)) ELSE '' END, 1, 500) AS strBoughtFrom,
			CASE WHEN CUR.strCurrency IS NULL THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
			CASE WHEN CUR.strCurrency IS NULL THEN 0 ELSE 1 END AS bitIsForeign,
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE HH.FCurrTotal END AS decSubTotalF,
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE HH.FCurrTotalTax END AS decVATF,
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE HH.fInvTotInclForeign END AS decTotalF,
			CASE WHEN CUR.strCurrency IS NULL THEN 1.00 ELSE HH.ExchangeRate END AS decExchange,
			VEND.strTerm AS strTerm,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CUR.strCurrency IS NULL THEN HH.Total ELSE HH.FCurrTotal END AS nvarchar(50)) AS strSubFormated,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CUR.strCurrency IS NULL THEN HH.TotalTax ELSE HH.FCurrTotalTax END AS nvarchar(50)) AS strVATFormatted,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CUR.strCurrency IS NULL THEN HH.InvTotIncl ELSE HH.fInvTotInclForeign END AS nvarchar(50)) AS strTotFormatted,
			HH.DiscountPercent AS decDiscPerc,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' 0.00' AS strDiscFormatted,
			SUBSTRING(LTRIM(RTRIM(HH.OrderNumber)), 1, 50) AS strReference
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryHeader HH ON TMP.InvoiceID = HH.InvoiceID 
	INNER JOIN tblVendors VEND ON HH.CustomerCode = VEND.strVendName 
	LEFT JOIN tblUtilityCurrency CUR ON HH.CurrencyCode = CUR.strPPCurrency 
	CROSS JOIN tblCompany COMP
	ORDER BY TMP.lngID 

	INSERT INTO #Temp_DTL (strOrdPDocID, intLineNo, strPartNumber, strLocation, strPartDesc, decBuyQty, decBuyQtyRemain, strBuyUnit, decStockQty, decStockQtyRemain, strStockUnit, 
						   intType, decPriceEaExc, decLineTotExc, decLineTaxAmt, strTaxCode, decEaIncTax, decTotIncTax, strCurrency, bitIsForeign, decPriceEaExcF, 
						   decLineTotExcF, decLineTaxAmtF, decEaIncTaxF, decTotIncTaxF, decLineDiscPerc, decLineDiscAmt, decLineDiscAmtF)
	SELECT	TMP.OrdPDocID_New AS strOrdPDocID,
			ROW_NUMBER() OVER(PARTITION BY TMP.OrdPDocID_New ORDER BY HL.ItemCode ASC) AS intLineNo,
			CASE WHEN ISNULL(SUBSTRING(CASE WHEN HL.SearchType = 6 THEN LTRIM(RTRIM(REPLACE(REPLACE(ItemCode, '>', ''), '/', ''))) ELSE LTRIM(RTRIM(HL.ItemCode)) END, 1, 50), '') = ''
				 THEN CASE WHEN HL.Physical = 0
						   THEN '<<BLANK-SERV>>'
						   ELSE '<<BLANK-ITEM>>'
					  END
				 ELSE SUBSTRING(CASE WHEN HL.SearchType = 6 THEN LTRIM(RTRIM(REPLACE(REPLACE(ItemCode, '>', ''), '/', ''))) ELSE LTRIM(RTRIM(HL.ItemCode)) END, 1, 50)
			END AS strPartNumber,
			CASE WHEN ISNULL(LTRIM(RTRIM(HL.MultiStore)), '') = '' THEN @strLocName ELSE SUBSTRING(LTRIM(RTRIM(HL.MultiStore)), 1, 10) END AS strLocation,
			SUBSTRING(LTRIM(RTRIM(HL.[Description])), 1, 500) AS strPartDesc,
			CASE WHEN HL.fQuantity < 0 THEN HL.fQuantity * -1 ELSE HL.fQuantity END AS decBuyQty,
			CASE WHEN HL.fQtyProcessed < 0 THEN HL.fQtyProcessed * -1 ELSE HL.fQtyProcessed END AS decBuyQtyRemain,
			CASE WHEN LTRIM(RTRIM(ISNULL(HL.UnitUsed, ''))) = '' THEN 'EA' ELSE SUBSTRING(LTRIM(RTRIM(HL.UnitUsed)), 1, 15) END AS strBuyUnit,
			CASE WHEN HL.fQuantity < 0 THEN HL.fQuantity * -1 ELSE HL.fQuantity END AS decStockQty,
			CASE WHEN HL.fQtyProcessed < 0 THEN HL.fQtyProcessed * -1 ELSE HL.fQtyProcessed END AS decStockQtyRemain,
			CASE WHEN LTRIM(RTRIM(ISNULL(HL.UnitUsed, ''))) = '' THEN 'EA' ELSE SUBSTRING(LTRIM(RTRIM(HL.UnitUsed)), 1, 15) END AS strStockUnit,
			CASE WHEN HL.Physical = 0 THEN 4 ELSE 1 END AS intType,
			HL.UnitPrice AS decPriceEaExc,
			CASE WHEN HL.fQuantityLineTotIncl < 0 THEN HL.fQuantityLineTotIncl * -1 ELSE HL.fQuantityLineTotIncl END AS decLineTotExc,
			CASE WHEN HL.TaxAmt < 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END AS decLineTaxAmt,
			ISNULL(TAX.strTaxCodePurchases, VEND.strTaxCode) AS strTaxCode, 
			HL.UnitPrice AS decEaIncTax, 
			CASE WHEN HL.fQuantityLineTotIncl < 0 THEN HL.fQuantityLineTotIncl * -1 ELSE HL.fQuantityLineTotIncl END AS decTotIncTax, 
			CASE WHEN CUR.strCurrency IS NULL THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
			CASE WHEN CUR.strCurrency IS NULL THEN 0 ELSE 1 END AS bitIsForeign,
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE HL.FCurrUnitPrice END AS decPriceEaExcF,
			CASE WHEN CUR.strCurrency IS NULL 
				 THEN 0.00 
				 ELSE CASE WHEN HL.fQuantityLineTotInclForeign < 0 THEN HL.fQuantityLineTotInclForeign * -1 ELSE HL.fQuantityLineTotInclForeign END
			END AS decLineTotExcF,
			CASE WHEN CUR.strCurrency IS NULL 
				 THEN 0.00 
				 ELSE CASE WHEN HL.FCurrTaxAmount < 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END
			END AS decLineTaxAmtF, 
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE HL.FCurrUnitPrice END AS decEaIncTaxF, 
			CASE WHEN CUR.strCurrency IS NULL 
				 THEN 0.00 
				 ELSE CASE WHEN HL.fQuantityLineTotInclForeign < 0 THEN HL.fQuantityLineTotInclForeign * -1 ELSE HL.fQuantityLineTotInclForeign END
			END AS decTotIncTaxF, 
			ISNULL(HL.DiscountPercentage, 0) AS decLineDiscPerc, 
			CASE WHEN HL.DiscountAmount > 0 THEN HL.DiscountAmount * -1 ELSE HL.DiscountAmount END AS decLineDiscAmt, 
			CASE WHEN CUR.strCurrency IS NULL 
				 THEN 0.00 
				 ELSE CASE WHEN HL.FCDiscountAmount > 0 THEN HL.FCDiscountAmount * -1 ELSE HL.FCDiscountAmount END
			END AS decLineDiscAmtF
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryLines HL ON TMP.InvoiceID = HL.iinvoiceid  
	INNER JOIN tblUtilityPervHistoryHeader HH ON HL.iinvoiceid = HH.InvoiceID 
	INNER JOIN tblVendors VEND ON HH.CustomerCode = VEND.strVendName 
	LEFT JOIN tblUtilityTaxCodesMap TAX ON HL.TaxCode = TAX.strTaxCode
	LEFT JOIN tblUtilityCurrency CUR ON HH.CurrencyCode = CUR.strPPCurrency 
	ORDER BY HL.LinkNum

END
ELSE
BEGIN
INSERT INTO #Temp_DOC (OrdPDocID, OrdPDocID_New)
SELECT	DocumentNumber AS OrdPDocID,
SUBSTRING('PO-' + LTRIM(RTRIM(DocumentNumber)), 1, 50) AS OrdPDocID_New
FROM tblUtilityPervHistoryHeader
WHERE (DocumentType = 106)
AND (DocumentDate BETWEEN @StartDate AND @EndDate)
AND DocumentNumber IN (SELECT DISTINCT
HL.DocumentNumber 
FROM tblUtilityPervHistoryLines HL 
WHERE (HL.DocumentType = 106)
AND (HL.QtyLeft > 0)) 
ORDER BY LTRIM(RTRIM(DocumentNumber))
SELECT @intHDRTotCount = COUNT(OrdPDocID_New)
FROM #Temp_DOC
SELECT @intDTLTotCount = COUNT(HL.DocumentNumber)
FROM #Temp_DOC TMP
INNER JOIN tblUtilityPervHistoryLines HL ON TMP.OrdPDocID = HL.DocumentNumber 
DELETE FROM #Temp_DOC
WHERE OrdPDocID_New IN (SELECT TMP.OrdPDocID_New 
FROM #Temp_DOC TMP
INNER JOIN tblOrderDocP DOC ON TMP.OrdPDocID_New = DOC.strOrdPDocID)
INSERT INTO #Temp_HDR (strOrdPDocID, dteSystemDate, dteJournalDate, dteRequired, strVendName, strShipTo, decSubTotal, decVAT, decTotal, strNotes, strBoughtFrom, 
strCurrency, bitIsForeign, decSubTotalF, decVATF, decTotalF, decExchange, strTerm, strSubFormated, strVATFormatted, strTotFormatted, 
decDiscPerc, strDiscFormatted, strReference)
SELECT	TMP.OrdPDocID_New AS strOrdPDocID,
HH.DocumentDate AS dteSystemDate, 
HH.DocumentDate AS dteJournalDate, 
HH.DocumentDate AS dteRequired,
SUBSTRING(HH.CustomerCode, 1, 50) AS strVendName,
SUBSTRING(CASE WHEN LEN(LTRIM(RTRIM(COMP.strName))) > 0 THEN LTRIM(RTRIM(COMP.strName)) + Char(13) + Char(10) ELSE '' END
+ CASE WHEN LEN(LTRIM(RTRIM(COMP.strStreet1))) > 0 THEN LTRIM(RTRIM(COMP.strStreet1)) + Char(13) + Char(10) ELSE '' END 
+ CASE WHEN LEN(LTRIM(RTRIM(COMP.strStreet2))) > 0 THEN LTRIM(RTRIM(COMP.strStreet2)) + Char(13) + Char(10) ELSE '' END 
+ CASE WHEN LEN(LTRIM(RTRIM(COMP.strCity))) > 0 THEN LTRIM(RTRIM(COMP.strCity)) ELSE '  ' END 
+ CASE WHEN LEN(LTRIM(RTRIM(COMP.strProvince))) > 0 THEN LTRIM(RTRIM(COMP.strProvince)) ELSE '  ' END 
+ CASE WHEN LEN(LTRIM(RTRIM(COMP.strPostal))) > 0 THEN LTRIM(RTRIM(COMP.strPostal)) ELSE '  ' END 
+ CASE WHEN LEN(LTRIM(RTRIM(COMP.strCountry))) > 0 THEN Char(13) + Char(10) + LTRIM(RTRIM(COMP.strCountry)) ELSE '' END, 1, 500) AS strShipTo,
HH.Total AS decSubTotal,
HH.TotalTax AS decVAT,
HH.Total + HH.TotalTax AS decTotal,
SUBSTRING(LTRIM(RTRIM(ISNULL(HH.Message01, ''))) + LTRIM(RTRIM(ISNULL(HH.Message02, ''))) + LTRIM(RTRIM(ISNULL(HH.Message03, ''))), 1, 500) AS strNotes,
SUBSTRING(CASE WHEN LEN(LTRIM(RTRIM(VEND.strVendDesc))) > 0 THEN LTRIM(RTRIM(VEND.strVendDesc)) + Char(13) + Char(10) ELSE '' END
+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strStreet1))) > 0 THEN LTRIM(RTRIM(VEND.strStreet1)) + Char(13) + Char(10) ELSE '' END 
+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strStreet2))) > 0 THEN LTRIM(RTRIM(VEND.strStreet2)) + Char(13) + Char(10) ELSE '' END 
+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strCity))) > 0 THEN LTRIM(RTRIM(VEND.strCity)) ELSE '  ' END 
+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strProvince))) > 0 THEN LTRIM(RTRIM(VEND.strProvince)) ELSE '  ' END 
+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strPostal))) > 0 THEN LTRIM(RTRIM(VEND.strPostal)) ELSE '  ' END 
+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strCountry))) > 0 THEN Char(13) + Char(10) + LTRIM(RTRIM(VEND.strCountry)) ELSE '' END, 1, 500) AS strBoughtFrom,
CASE WHEN CURH.bitHome = 1 THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
CASE WHEN CURH.bitHome = 1 THEN 0 ELSE 1 END AS bitIsForeign,
CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE HH.FCurrTotal END AS decSubTotalF,
CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE HH.FCurrTotalTax END AS decVATF,
CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE HH.FCurrTotal + HH.FCurrTotalTax END AS decTotalF,
CASE WHEN CURH.bitHome = 1 THEN 1.00 ELSE HH.ExchangeRate END AS decExchange,
CASE WHEN TERM.strTerm IS NULL THEN VEND.strTerm ELSE TERM.strTerm END AS strTerm,
ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CURH.bitHome = 1 THEN HH.Total ELSE HH.FCurrTotal END AS nvarchar(50)) AS strSubFormated,
ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CURH.bitHome = 1 THEN HH.TotalTax ELSE HH.FCurrTotalTax END AS nvarchar(50)) AS strVATFormatted,
ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CURH.bitHome = 1 THEN (HH.Total + HH.TotalTax) ELSE (HH.FCurrTotal + HH.FCurrTotalTax) END AS nvarchar(50)) AS strTotFormatted,
HH.DiscountPercent AS decDiscPerc,
ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' 0.00' AS strDiscFormatted,
SUBSTRING(LTRIM(RTRIM(HH.OrderNumber)), 1, 50) AS strReference
FROM #Temp_DOC TMP
INNER JOIN tblUtilityPervHistoryHeader HH ON TMP.OrdPDocID = HH.DocumentNumber 
INNER JOIN tblVendors VEND ON HH.CustomerCode = VEND.strVendName 
LEFT JOIN tblUtilityCurrency CUR ON HH.CurrencyCode = CUR.strPPCurrency 
LEFT JOIN tblCurrency CURH ON VEND.strCurrency = CURH.strCurrency 
LEFT JOIN tblUtilityTerms TERM ON HH.Terms = TERM.strPPTerm 
CROSS JOIN tblCompany COMP
WHERE (HH.DocumentType = 106)
AND (HH.DocumentDate BETWEEN @StartDate AND @EndDate)
ORDER BY TMP.lngID 
INSERT INTO #Temp_DTL (strOrdPDocID, intLineNo, strPartNumber, strLocation, strPartDesc, decBuyQty, decBuyQtyRemain, strBuyUnit, decStockQty, decStockQtyRemain, strStockUnit, 
intType, decPriceEaExc, decLineTotExc, decLineTaxAmt, strTaxCode, decEaIncTax, decTotIncTax, strCurrency, bitIsForeign, decPriceEaExcF, 
decLineTotExcF, decLineTaxAmtF, decEaIncTaxF, decTotIncTaxF, decLineDiscPerc, decLineDiscAmt, decLineDiscAmtF)
SELECT	TMP.OrdPDocID_New AS strOrdPDocID,
ROW_NUMBER() OVER(PARTITION BY TMP.OrdPDocID_New ORDER BY HL.ItemCode ASC) AS intLineNo,
CASE WHEN ISNULL(SUBSTRING(LTRIM(RTRIM(HL.ItemCode)), 1, 50), '') = ''
THEN CASE WHEN HL.Physical = 0
THEN '<<BLANK-SERV>>'
ELSE '<<BLANK-ITEM>>'
END
ELSE SUBSTRING(LTRIM(RTRIM(HL.ItemCode)), 1, 50)
END AS strPartNumber,
CASE WHEN ISNULL(LTRIM(RTRIM(HL.MultiStore)), '') = '' THEN @strLocName ELSE SUBSTRING(LTRIM(RTRIM(HL.MultiStore)), 1, 10) END AS strLocation,
SUBSTRING(LTRIM(RTRIM(HL.[Description])), 1, 500) AS strPartDesc,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.Qty > 0 THEN HL.Qty * -1 ELSE HL.Qty END 
ELSE CASE WHEN HL.Qty < 0 THEN HL.Qty * -1 ELSE HL.Qty END
END AS decBuyQty,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.Qty > 0 THEN HL.Qty * -1 ELSE HL.Qty END 
ELSE CASE WHEN HL.Qty < 0 THEN HL.Qty * -1 ELSE HL.Qty END
END AS decBuyQtyRemain,
CASE WHEN LTRIM(RTRIM(ISNULL(HL.UnitUsed, ''))) = '' THEN 'EA' ELSE SUBSTRING(LTRIM(RTRIM(HL.UnitUsed)), 1, 15) END AS strBuyUnit,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.Qty > 0 THEN HL.Qty * -1 ELSE HL.Qty END 
ELSE CASE WHEN HL.Qty < 0 THEN HL.Qty * -1 ELSE HL.Qty END
END AS decStockQty,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.Qty > 0 THEN HL.Qty * -1 ELSE HL.Qty END 
ELSE CASE WHEN HL.Qty < 0 THEN HL.Qty * -1 ELSE HL.Qty END
END AS decStockQtyRemain,
CASE WHEN LTRIM(RTRIM(ISNULL(HL.UnitUsed, ''))) = '' THEN 'EA' ELSE SUBSTRING(LTRIM(RTRIM(HL.UnitUsed)), 1, 15) END AS strStockUnit,
CASE WHEN HL.Physical = 0 THEN 4 ELSE 1 END AS intType,
CASE WHEN HL.UnitPrice < 0 THEN HL.UnitPrice * -1 ELSE HL.UnitPrice END AS decPriceEaExc,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.DiscountAmount > 0 THEN HL.DiscountAmount * -1 ELSE HL.DiscountAmount END 
ELSE CASE WHEN HL.DiscountAmount < 0 THEN HL.DiscountAmount * -1 ELSE HL.DiscountAmount END
END AS decLineTotExc,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.TaxAmt > 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END 
ELSE CASE WHEN HL.TaxAmt < 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END
END AS decLineTaxAmt,
TAX.strTaxCodePurchases AS strTaxCode, 
CASE WHEN HL.InclusivePrice < 0 THEN HL.InclusivePrice * -1 ELSE HL.InclusivePrice END AS decEaIncTax,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.DiscountAmount > 0 THEN HL.DiscountAmount * -1 ELSE HL.DiscountAmount END 
ELSE CASE WHEN HL.DiscountAmount < 0 THEN HL.DiscountAmount * -1 ELSE HL.DiscountAmount END
END + CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.TaxAmt > 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END 
ELSE CASE WHEN HL.TaxAmt < 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END
END AS decTotIncTax,
CASE WHEN CURH.bitHome = 1 THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
CASE WHEN CURH.bitHome = 1 THEN 0 ELSE 1 END AS bitIsForeign,
CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE CASE WHEN HL.FCurrUnitPrice < 0 THEN HL.FCurrUnitPrice * -1 ELSE HL.FCurrUnitPrice END END AS decPriceEaExcF,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.FCDiscountAmount > 0 THEN HL.FCDiscountAmount * -1 ELSE HL.FCDiscountAmount END 
ELSE CASE WHEN HL.FCDiscountAmount < 0 THEN HL.FCDiscountAmount * -1 ELSE HL.FCDiscountAmount END
END AS decLineTotExcF,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.FCurrTaxAmount > 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END 
ELSE CASE WHEN HL.FCurrTaxAmount < 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END
END AS decLineTaxAmtF,
CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE CASE WHEN HL.FCurrInclPrice < 0 THEN HL.FCurrInclPrice * -1 ELSE HL.FCurrInclPrice END END AS decEaIncTaxF,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.FCDiscountAmount > 0 THEN HL.FCDiscountAmount * -1 ELSE HL.FCDiscountAmount END 
ELSE CASE WHEN HL.FCDiscountAmount < 0 THEN HL.FCDiscountAmount * -1 ELSE HL.FCDiscountAmount END
END + CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.FCurrTaxAmount > 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END 
ELSE CASE WHEN HL.FCurrTaxAmount < 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END
END AS decTotIncTaxF,
(HL.DiscountPercentage / 100) AS decLineDiscPerc, 
0.00 AS decLineDiscAmt,
0.00 AS decLineDiscAmtF
FROM #Temp_DOC TMP
INNER JOIN tblUtilityPervHistoryLines HL ON TMP.OrdPDocID = HL.DocumentNumber 
INNER JOIN tblUtilityPervHistoryHeader HH ON HL.DocumentNumber = HH.DocumentNumber AND HL.DocumentType = HH.DocumentType 
INNER JOIN tblVendors VEND ON HH.CustomerCode = VEND.strVendName 
INNER JOIN tblUtilityTaxCodesMap TAX ON CAST(HL.TaxType AS nvarchar(15)) = TAX.strTaxCode
LEFT JOIN tblUtilityCurrency CUR ON HH.CurrencyCode = CUR.strPPCurrency 
LEFT JOIN tblCurrency CURH ON VEND.strCurrency = CURH.strCurrency 
WHERE (HH.DocumentType = 106)
AND (LTRIM(RTRIM(HL.ItemCode)) <> '''')
ORDER BY HL.LinkNum
END
INSERT INTO tblOrderDocP (strOrdPDocID, dteSystemDate, dteJournalDate, dteRequired, strUserName, strVendName, strShipTo, decSubTotal, decVAT, decTotal, strNotes, bitPrinted, 
bitEmailed, bitCleared, intDocType, strBoughtFrom, strCurrency, bitIsForeign, decSubTotalF, decVATF, decTotalF, decExchange, strTerm, intDept, 
strField1, strField2, strField3, strField4, strField5, strField6, strField7, strField8, strField9, strField10, strField11, strField12, strSubFormated, 
strVATFormatted, strTotFormatted, decDiscPerc, decDiscAmt, decDiscAmtF, strDiscFormatted, strOrdFQDocID, bitFQConvert, bitSOCopy, bitSOCopyMulti, 
strStatusTypeCode, bitBookmark, strAddInfo, strReference, strOrdRFQDocID, bitRFQConvert, decNetItemWeight, decNetVolumetricWeight, intRevisionNumber, 
strBuyerName, strSalesDocNo)
SELECT	strOrdPDocID,
dteSystemDate, 
dteJournalDate, 
dteRequired,
@UserName AS strUserName,
strVendName,
strShipTo,
decSubTotal,
decVAT,
decTotal,
strNotes,
1 AS bitPrinted,
1 AS bitEmailed,
0 AS bitCleared,
@DocType AS intDocType,
strBoughtFrom,
strCurrency,
bitIsForeign,
decSubTotalF,
decVATF,
decTotalF,
decExchange,
strTerm,
NULL AS intDept,
'' AS strField1,
'' AS strField2,
'' AS strField3,
'' AS strField4,
'' AS strField5,
'' AS strField6,
'' AS strField7,
'' AS strField8,
'' AS strField9,
'' AS strField10,
'' AS strField11,
'' AS strField12,
strSubFormated,
strVATFormatted,
strTotFormatted,
decDiscPerc,
0.00 AS decDiscAmt,
0.00 AS decDiscAmtF,
strDiscFormatted,
NULL AS strOrdFQDocID,
0 AS bitFQConvert,
0 AS bitSOCopy,
0 AS bitSOCopyMulti,
NULL AS strStatusTypeCode,
0 AS bitBookmark,
'' AS strAddInfo,
strReference,
NULL AS strOrdRFQDocID,
0 AS bitRFQConvert,
0.00 AS decNetItemWeight, 
0.00 AS decNetVolumetricWeight,
1 AS intRevisionNumber,
'' AS strBuyerName, 
NULL AS strSalesDocNo
FROM #Temp_HDR
ORDER BY lngID 
SELECT @intHDRRecCount = @@ROWCOUNT
INSERT INTO tblOrderDocPDT (strOrdPDocID, intLineNo, strPartNumber, strLocation, strPartDesc, decBuyQty, decBuyQtyRemain, strBuyUnit, decStockQty, decStockQtyRemain, strStockUnit, 
intType, decPriceEaExc, decLineTotExc, decLineTaxAmt, strTaxCode, decEaIncTax, decTotIncTax, imgTaxObj, strCurrency, bitIsForeign, decPriceEaExcF, 
decLineTotExcF, decLineTaxAmtF, decEaIncTaxF, decTotIncTaxF, strInvField1, strInvField2, strInvField3, strInvField4, strInvField5, strInvField6, 
strLineField1, strLineField2, strLineField3, strLineField4, strLineField5, strLineField6, strLineField7, strLineField8, strLineField9, strLineField10, 
strLineField11, strLineField12, decLineDiscPerc, decLineDiscAmt, decLineDiscAmtF, bitDiscountTax, strOrdSODocID, strPartExtendedDesc, decItemWeight, 
decVolumetricWeight, uidTransactionFieldID, intSODocItemLineNo)
SELECT	strOrdPDocID,
intLineNo,
strPartNumber,
strLocation,
strPartDesc,
decBuyQty,
decBuyQtyRemain,
strBuyUnit,
decStockQty,
decStockQtyRemain,
strStockUnit,
intType,
decPriceEaExc, 
decLineTotExc, 
decLineTaxAmt, 
strTaxCode, 
decEaIncTax, 
decTotIncTax, 
NULL AS imgTaxObj, 
strCurrency, 
bitIsForeign, 
decPriceEaExcF,
decLineTotExcF, 
decLineTaxAmtF, 
decEaIncTaxF, 
decTotIncTaxF, 
'' AS strInvField1, 
'' AS strInvField2, 
'' AS strInvField3, 
'' AS strInvField4, 
'' AS strInvField5, 
'' AS strInvField6,
'' AS strLineField1, 
'' AS strLineField2, 
'' AS strLineField3, 
'' AS strLineField4, 
'' AS strLineField5, 
'' AS strLineField6, 
'' AS strLineField7, 
'' AS strLineField8,
'' AS strLineField9, 
'' AS strLineField10, 
'' AS strLineField11, 
'' AS strLineField12, 
decLineDiscPerc, 
decLineDiscAmt, 
decLineDiscAmtF,
0 AS bitDiscountTax,
NULL AS strOrdSODocID, 
'' AS strPartExtendedDesc,
0.00 AS decItemWeight, 
0.00 AS decVolumetricWeight, 
NEWID() AS uidTransactionFieldID, 
NULL AS intSODocItemLineNo
FROM #Temp_DTL
ORDER BY lngID
SELECT @intDTLRecCount = @@ROWCOUNT
IF NOT EXISTS (SELECT TOP 1 lngEntID FROM tblInvoiceDocRev)
BEGIN
UPDATE #Temp_HDR 
SET lngEntID = lngID 
END
ELSE
BEGIN
SELECT @lngEntID = MAX(lngEntID) FROM tblInvoiceDocREV
UPDATE #Temp_HDR 
SET lngEntID = lngID + @lngEntID
END
INSERT INTO tblInvoiceDocREV (lngEntID, strInvDocID, lngInvTrackID, lngJourID, dteSystemDate, dteJournalDate, dteRequired, strUserName, strCustName, strSoldTo, strShipTo, 
strReference, decSubTotal, decVAT, decTotal, bitFromSO, strOrdDocID, bitHistoryTrans, strNotes, bitPrinted, bitEmailed, intPaidBy, intAccount, 
strSalesName, strAddInfo, bitReserved, strCurrency, bitIsForeign, decSubTotalF, decVATF, decTotalF, decExchange, strTerm, intDept, strField1, 
strField2, strField3, strField4, strField5, strField6, strField7, strField8, strField9, strField10, strField11, strField12, strSubFormated, 
strVATFormatted, strTotFormatted, dteField13, dteField14, decDiscPerc, decDiscAmt, decDiscAmtF, strDiscFormatted, strOrdFQDocID, strStatusTypeCode, 
strCNReasonCode, bitBookmark, dteSystemDateTime, strPaidBy, intSentDoc, strVAT, strDelMethodCode, decTotalWeight, decTotalVolWeight, 
intRevisionNumber, dteRevisionDate, strUserCreated, bitIsRepair, strVendName, strBoughtFrom, bitFQConvert, bitSOCopy, bitSOCopyMulti, strVendInvNo, 
bitFromPO, decNetItemWeight, decNetVolumetricWeight, strSourceMOP, bitCleared, strOrdRFQDocID, bitRFQConvert, strOrdPDocID, intModule, 
strSOReasonCode, strDelNoteNo, strContractTo, strContBillType, blnAllowAnnualIncrease, intContractPriceIncrease, dtpIncreaseStartDate, 
bitInactive, strStoreNumber, strEDI) 
SELECT	HDR.lngEntID,
HDR.strOrdPDocID AS strInvDocID,
NULL AS lngInvTrackID,
NULL AS lngJourID,
HDR.dteSystemDate,
HDR.dteJournalDate,
HDR.dteRequired,
@UserName AS strUserName,
NULL AS strCustName,
NULL AS strSoldTo,
HDR.strShipTo,
HDR.strReference,
HDR.decSubTotal,
HDR.decVAT,
HDR.decTotal,
NULL AS bitFromSO,
NULL AS strOrdDocID,
NULL AS bitHistoryTrans,
HDR.strNotes,
1 AS bitPrinted,
1 AS bitEmailed,
NULL AS intPaidBy,
NULL AS intAccount,
NULL AS strSalesName,
'' AS strAddInfo,
NULL AS bitReserved,
HDR.strCurrency,
HDR.bitIsForeign,
HDR.decSubTotalF,
HDR.decVATF,
HDR.decTotalF,
HDR.decExchange,
HDR.strTerm,
NULL AS intDept,
'' AS strField1,
'' AS strField2,
'' AS strField3,
'' AS strField4,
'' AS strField5,
'' AS strField6,
'' AS strField7,
'' AS strField8,
'' AS strField9,
'' AS strField10,
'' AS strField11,
'' AS strField12,
HDR.strSubFormated,
HDR.strVATFormatted,
HDR.strTotFormatted,
NULL AS dteField13,
NULL AS dteField14,
HDR.decDiscPerc,
0.00 AS decDiscAmt,
0.00 AS decDiscAmtF,
HDR.strDiscFormatted,
NULL AS strOrdFQDocID,
NULL AS strStatusTypeCode,
NULL AS strCNReasonCode,
0 AS bitBookmark,
NULL AS dteSystemDateTime,
NULL AS strPaidBy,
NULL AS intSentDoc,
NULL AS strVAT,
NULL AS strDelMethodCode,
0.00 AS decTotalWeight,
0.00 AS decTotalVolWeight,
1 AS intRevisionNumber,
HDR.dteSystemDate AS dteRevisionDate,
@UserName AS strUserCreated,
0 AS bitIsRepair,
HDR.strVendName,
HDR.strBoughtFrom,
NULL AS bitFQConvert,
NULL AS bitSOCopy,
NULL AS bitSOCopyMulti,
NULL AS strVendInvNo,
NULL AS bitFromPO,
NULL AS decNetItemWeight,
NULL AS decNetVolumetricWeight,
NULL AS strSourceMOP,
0 AS bitCleared,
NULL AS strOrdRFQDocID,
NULL AS bitRFQConvert,
NULL AS strOrdPDocID,
5 AS intModule,
NULL AS strSOReasonCode,
NULL AS strDelNoteNo,
NULL AS strContractTo,
NULL AS strContBillType,
NULL AS blnAllowAnnualIncrease,
NULL AS intContractPriceIncrease,
NULL AS dtpIncreaseStartDate,
NULL AS bitInactive,
NULL AS strStoreNumber,
NULL AS strEDI
FROM #Temp_DOC DOC
INNER JOIN #Temp_HDR HDR ON DOC.OrdPDocID_New = HDR.strOrdPDocID
ORDER BY HDR.lngID 
SELECT @intREVHDRRecCount = @@ROWCOUNT 
INSERT INTO tblInvoiceDocREVDT (lngEntID, strInvDocID, intLineNo, strPartNumber, strLocation, strPartDesc, decQty, strUnit, intType, decPriceEaExc, decLineTotExc, 
decLineTaxAmt, decPriceEaInc, decLineTotInc, strTaxCode, imgTaxObj, strCurrency, bitIsForeign, decPriceEaExcF, decLineTotExcF, 
decLineTaxAmtF, decEaIncTaxF, decTotIncTaxF, strInvField1, strInvField2, strInvField3, strInvField4, strInvField5, strInvField6, 
strLineField1, strLineField2, strLineField3, strLineField4, strLineField5, strLineField6, strLineField7, strLineField8, strLineField9, 
strLineField10, strLineField11, strLineField12, decLineDiscPerc, decLineDiscAmt, decLineDiscAmtF, bitDiscountTax, decStockQty, 
strStockUnit, decStandardCost, decLastPPUnit, strSalesName, decCOGS, decSOQty, decSOQtyRemain, strPartExtendedDesc, decItemWeight, 
decVolumetricWeight, bitContainerItem, decBuyQty, decBuyQtyRemain, strBuyUnit, decEaIncTax, decTotIncTax, strOrdSODocID, 
decStockQtyRemain, decBuyoutCost, decQtyRemaining, intStatus, uidTransactionFieldID, strContBillType, blnAllowAnnualIncrease, 
intContractPriceIncrease, dtpIncreaseStartDate, dtpSetUpDate, dtpActivationDate, dtpTerminationDate, dtpExpirationDate, 
dtpBillingSchduleStart, strBillingFrequncy, dtpLastBillDate, dtpNextBillDate, dtpNextInvoiceDate, decUsedQty) 
SELECT	HDR.lngEntID, 
DTL.strOrdPDocID AS strInvDocID, 
DTL.intLineNo, 
DTL.strPartNumber, 
DTL.strLocation, 
DTL.strPartDesc, 
NULL AS decQty, 
NULL AS strUnit, 
DTL.intType, 
DTL.decPriceEaExc, 
DTL.decLineTotExc, 
DTL.decLineTaxAmt, 
DTL.decEaIncTax AS decPriceEaInc, 
DTL.decTotIncTax AS decLineTotInc, 
DTL.strTaxCode, 
NULL AS imgTaxObj, 
DTL.strCurrency, 
DTL.bitIsForeign, 
DTL.decPriceEaExcF, 
DTL.decLineTotExcF, 
DTL.decLineTaxAmtF, 
DTL.decEaIncTaxF, 
DTL.decTotIncTaxF, 
'' AS strInvField1, 
'' AS strInvField2, 
'' AS strInvField3, 
'' AS strInvField4, 
'' AS strInvField5, 
'' AS strInvField6,
'' AS strLineField1, 
'' AS strLineField2, 
'' AS strLineField3, 
'' AS strLineField4, 
'' AS strLineField5, 
'' AS strLineField6, 
'' AS strLineField7, 
'' AS strLineField8,
'' AS strLineField9, 
'' AS strLineField10, 
'' AS strLineField11, 
'' AS strLineField12, 
DTL.decLineDiscPerc, 
DTL.decLineDiscAmt, 
DTL.decLineDiscAmtF, 
0 AS bitDiscountTax,
DTL.decStockQty, 
DTL.strStockUnit, 
NULL AS decStandardCost, 
NULL AS decLastPPUnit, 
NULL AS strSalesName, 
NULL AS decCOGS, 
NULL AS decSOQty, 
NULL AS decSOQtyRemain, 
'' AS strPartExtendedDesc,
0.00 AS decItemWeight, 
0.00 AS decVolumetricWeight, 
NULL AS bitContainerItem, 
DTL.decBuyQty, 
DTL.decBuyQtyRemain, 
DTL.strBuyUnit, 
DTL.decEaIncTax, 
DTL.decTotIncTax, 
NULL AS strOrdSODocID, 
DTL.decStockQtyRemain, 
NULL AS decBuyoutCost, 
DTL.decBuyQtyRemain, 
1 AS intStatus, 
NEWID() AS uidTransactionFieldID, 
NULL AS strContBillType, 
NULL AS blnAllowAnnualIncrease, 
NULL AS intContractPriceIncrease, 
NULL AS dtpIncreaseStartDate, 
NULL AS dtpSetUpDate, 
NULL AS dtpActivationDate, 
NULL AS dtpTerminationDate, 
NULL AS dtpExpirationDate, 
NULL AS dtpBillingSchduleStart, 
NULL AS strBillingFrequncy, 
NULL AS dtpLastBillDate, 
NULL AS dtpNextBillDate, 
NULL AS dtpNextInvoiceDate, 
NULL AS decUsedQty
FROM #Temp_HDR HDR
INNER JOIN #Temp_DTL DTL ON HDR.strOrdPDocID = DTL.strOrdPDocID 
ORDER BY DTL.lngID
SELECT @intREVDTLRecCount = @@ROWCOUNT 
-- *** SYNC ON ORDER - START
INSERT INTO #Temp_EXT (strPartNumber, strLocName, decOnOrder)
SELECT	Z.strPartNumber, 
Z.strLocation AS strLocName, 
SUM(Z.decQty) AS decOnOrder
FROM (SELECT tblOrderDocPDT.strPartNumber, 
tblOrderDocPDT.strLocation, 
SUM(tblOrderDocPDT.decStockQtyRemain) AS decQty 
FROM tblOrderDocP 
INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
INNER JOIN tblInv ON tblOrderDocPDT.strPartNumber = tblInv.strPartNumber 
WHERE (tblOrderDocP.intDocType = 1) 
AND (tblOrderDocP.bitCleared = 0) 
AND (tblInv.intType = 1)
AND (tblInv.bitOtherCmp = 0)
GROUP BY tblOrderDocPDT.strPartNumber, 
tblOrderDocPDT.strLocation) Z 
GROUP BY Z.strPartNumber, 
Z.strLocation
INSERT INTO #Temp_INV (strPartNumber, decOnOrder)
SELECT strPartNumber, 
SUM(decOnOrder) AS decOnOrder 
FROM #Temp_EXT 
GROUP BY strPartNumber
UPDATE tblInvExt 
SET decOnOrder = 0.00
WHERE strPartNumber IN (SELECT strPartNumber 
FROM #Temp_INV)
UPDATE tblInvExt 
SET decOnOrder = EXT.decOnOrder  
FROM #Temp_EXT EXT
WHERE tblInvExt.strPartNumber = EXT.strPartNumber 
AND tblInvExt.strLocName = EXT.strLocName 
UPDATE tblInv 
SET decSumOnOrder = 0.00, 
dteLastUpdated = GETDATE() 
WHERE strPartNumber IN (SELECT strPartNumber 
FROM #Temp_INV)
UPDATE tblInv 
SET decSumOnOrder = INV.decOnOrder, 
dteLastUpdated = GETDATE() 
FROM #Temp_INV INV
WHERE tblInv.strPartNumber = INV.strPartNumber 
-- *** SYNC ON ORDER - FINISH
UPDATE tblVendors 
SET decOpenOrders = ISNULL((SELECT ISNULL(SUM(DOC.decTotal), 0) 
FROM tblOrderDocP DOC 
WHERE (DOC.strVendName = tblVendors.strVendName) 
AND (DOC.bitCleared = 0) 
AND (DOC.intDocType = 1)), 0), 
decOpenOrdersF = ISNULL((SELECT ISNULL(SUM(DOC.decTotalF), 0) 
FROM tblOrderDocP DOC 
WHERE (DOC.strVendName = tblVendors.strVendName) 
AND (DOC.bitCleared = 0) 
AND (DOC.intDocType = 1)), 0) 
DROP TABLE #Temp_DOC
DROP TABLE #Temp_HDR
DROP TABLE #Temp_DTL
DROP TABLE #Temp_EXT
DROP TABLE #Temp_INV
SELECT	@intHDRTotCount AS intHDRTotCount, @intHDRRecCount AS intHDRRecCount, @intDTLTotCount AS intDTLTotCount, @intDTLRecCount AS intDTLRecCount, 
@intREVHDRRecCount AS intREVHDRRecCount, @intREVDTLRecCount AS intREVDTLRecCount
GO


/****** Object:  StoredProcedure [dbo].[prConv_OpenSalesOrders_Insert]    Script Date: 2021-02-01 ******/
----------------------------------------------------
CREATE PROCEDURE [dbo].[prConv_OpenSalesOrders_Insert]
(
@Evo bit,
@DocType tinyint,
@UserName nvarchar(20)
)		
AS
DECLARE	@StartDate smalldatetime,
@EndDate smalldatetime,
@strCurrency nvarchar(3),
@strCurrSymbol nvarchar(5),
@strLocName nvarchar(10),
@intHDRTotCount bigint = 0,
@intHDRRecCount bigint = 0,
@intDTLTotCount bigint = 0,
@intDTLRecCount bigint = 0,
@intREVHDRRecCount bigint = 0,
@intREVDTLRecCount bigint = 0,
@lngEntID bigint = 0
SELECT @StartDate = dteYearStarts, @EndDate = dteYearEnds FROM tblCompany
SELECT @strCurrency = strCurrency, @strCurrSymbol = strCurrSymbol FROM tblCurrency WHERE bitHome = 1
SELECT @strLocName = ISNULL(strLocName, '') FROM tblUsers WHERE strUserName = @UserName
IF ISNULL(@strLocName, '') = ''
BEGIN 
SELECT @strLocName = ISNULL(strLocName, '') FROM tblInvLoc WHERE bitDefault = 1
END 
CREATE TABLE #Temp_DOC (
[OrdDocID] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[OrdDocID_New] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[InvoiceID] [int] NULL,
[lngID] [bigint] IDENTITY(1,1) NOT NULL)
CREATE TABLE #Temp_HDR (
[lngID] [bigint] IDENTITY(1,1) NOT NULL,
[strOrdDocID] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[dteSystemDate] [smalldatetime] NOT NULL,
[dteJournalDate] [smalldatetime] NOT NULL,
[dteRequired] [smalldatetime] NOT NULL,
[strCustName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[strSoldTo] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strShipTo] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strReference] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decSubTotal] [money] NOT NULL,
[decVAT] [money] NOT NULL,
[decTotal] [money] NOT NULL,
[strNotes] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strSalesName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[strCurrency] [nvarchar](3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[bitIsForeign] [bit] NOT NULL,
[decSubTotalF] [money] NOT NULL,
[decVATF] [money] NOT NULL,
[decTotalF] [money] NOT NULL,
[decExchange] [decimal](20, 6) NOT NULL,
[strTerm] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strSubFormated] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strVATFormatted] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strTotFormatted] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[dteField13] [datetime] NOT NULL,
[dteField14] [datetime] NOT NULL,
[decDiscPerc] [money] NOT NULL,
[strDiscFormatted] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strDeliveryCostFormatted] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[lngEntID] [bigint] NULL)
CREATE TABLE #Temp_DTL (
[lngID] [bigint] IDENTITY(1,1) NOT NULL,
[strOrdDocID] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[intLineNo] [int] NOT NULL,
[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strLocation] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strPartDesc] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decQty] [money] NOT NULL,
[decQtyRemaining] [money] NOT NULL,
[strUnit] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[intType] [tinyint] NOT NULL,
[decPriceEaExc] [money] NOT NULL,
[decLineTotExc] [money] NOT NULL,
[decLineTaxAmt] [money] NOT NULL,
[decPriceEaInc] [money] NOT NULL,
[decLineTotInc] [money] NOT NULL,
[strTaxCode] [nvarchar](2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strCurrency] [nvarchar](3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[bitIsForeign] [bit] NOT NULL,
[decPriceEaExcF] [money] NOT NULL,
[decLineTotExcF] [money] NOT NULL,
[decLineTaxAmtF] [money] NOT NULL,
[decEaIncTaxF] [money] NOT NULL,
[decTotIncTaxF] [money] NOT NULL,
[decLineDiscPerc] [money] NOT NULL,
[decLineDiscAmt] [money] NOT NULL,
[decLineDiscAmtF] [money] NOT NULL,
[decStockQty] [money] NOT NULL,
[strStockUnit] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decStockQtyRemain] [money] NOT NULL,
[strSalesName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL)
CREATE TABLE #Temp_EXT (
[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strLocName] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decAlloc] [money] NOT NULL)
CREATE TABLE #Temp_INV (
[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decAlloc] [money] NOT NULL)
IF @Evo = 1
BEGIN

	INSERT INTO #Temp_DOC (OrdDocID, OrdDocID_New, InvoiceID)
	SELECT	DISTINCT 
			HH.OrderNumber AS OrdDocID,
			SUBSTRING('SO-' + LTRIM(RTRIM(HH.OrderNumber)), 1, 50) AS OrdDocID_New,
			MAX(HH.InvoiceID) AS InvoiceID
	FROM tblUtilityPervHistoryHeader HH
	INNER JOIN tblUtilityPervHistoryLines HL ON HH.InvoiceID = HL.iInvoiceID
	WHERE (HH.DocType IN ('SO'))
	AND (HH.DocStateID IN (1, 3))
	AND ((HL.fQuantity - HL.fQtyProcessed) > 0)
	AND (HH.DocumentDate IS NOT NULL)
	GROUP BY HH.OrderNumber
	ORDER BY MAX(HH.InvoiceID) 

	SELECT @intHDRTotCount = COUNT(OrdDocID_New)
	FROM #Temp_DOC

	SELECT @intDTLTotCount = COUNT(HL.DocumentNumber)
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryLines HL ON TMP.InvoiceID = HL.iInvoiceID 

	DELETE FROM #Temp_DOC
	WHERE OrdDocID_New IN (SELECT TMP.OrdDocID_New 
						   FROM #Temp_DOC TMP
						   INNER JOIN tblOrderDoc DOC ON TMP.OrdDocID_New = DOC.strOrdDocID)

	INSERT INTO #Temp_HDR (strOrdDocID, dteSystemDate, dteJournalDate, dteRequired, strCustName, strSoldTo, strShipTo, strReference, decSubTotal, decVAT, decTotal, 
						   strNotes, strSalesName, strCurrency, bitIsForeign, decSubTotalF, decVATF, decTotalF, decExchange, strTerm,  strSubFormated, strVATFormatted, 
						   strTotFormatted, dteField13, dteField14, decDiscPerc, strDiscFormatted, strDeliveryCostFormatted)
	SELECT	TMP.OrdDocID_New AS strOrdDocID,
			HH.DocumentDate AS dteSystemDate, 
			HH.DocumentDate AS dteJournalDate, 
			HH.DocumentDate AS dteRequired,
			SUBSTRING(HH.CustomerCode, 1, 50) AS strCustName,
			SUBSTRING(CASE WHEN LEN(LTRIM(RTRIM(CUST.strCustDesc))) > 0 THEN LTRIM(RTRIM(CUST.strCustDesc)) + Char(13) + Char(10) ELSE '' END
					+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strStreet1))) > 0 THEN LTRIM(RTRIM(CUST.strStreet1)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strStreet2))) > 0 THEN LTRIM(RTRIM(CUST.strStreet2)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strCity))) > 0 THEN LTRIM(RTRIM(CUST.strCity)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strProvince))) > 0 THEN LTRIM(RTRIM(CUST.strProvince)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strPostal))) > 0 THEN LTRIM(RTRIM(CUST.strPostal)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strCountry))) > 0 THEN Char(13) + Char(10) + LTRIM(RTRIM(CUST.strCountry)) ELSE '' END, 1, 500) AS strSoldTo,
			SUBSTRING(CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress01))) > 0 THEN LTRIM(RTRIM(HH.DelAddress01)) + Char(13) + Char(10) ELSE '' END
					+ CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress02))) > 0 THEN LTRIM(RTRIM(HH.DelAddress02)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress03))) > 0 THEN LTRIM(RTRIM(HH.DelAddress03)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress04))) > 0 THEN LTRIM(RTRIM(HH.DelAddress04)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress05))) > 0 THEN LTRIM(RTRIM(HH.DelAddress05)) + Char(13) + Char(10) ELSE '' END, 1, 500) AS strShipTo,
			SUBSTRING(LTRIM(RTRIM(HH.OrderNumber)), 1, 50) AS strReference,
			HH.Total AS decSubTotal,
			HH.TotalTax AS decVAT,
			HH.Total + HH.TotalTax AS decTotal,
			SUBSTRING(LTRIM(RTRIM(HH.Message01)) + LTRIM(RTRIM(HH.Message02)) + LTRIM(RTRIM(HH.Message03)), 1, 500) AS strNotes,
			CASE WHEN ISNULL(SP.strSalesName, '') = '' THEN NULL ELSE SP.strSalesName END AS strSalesName,
			CASE WHEN CUR.strCurrency IS NULL THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
			CASE WHEN CUR.strCurrency IS NULL THEN 0 ELSE 1 END AS bitIsForeign,
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE HH.FCurrTotal END AS decSubTotalF,
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE HH.FCurrTotalTax END AS decVATF,
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE HH.fInvTotInclForeign END AS decTotalF,
			CASE WHEN CUR.strCurrency IS NULL THEN 1.00 ELSE HH.ExchangeRate END AS decExchange,
			CUST.strTerm AS strTerm,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CUR.strCurrency IS NULL THEN HH.Total ELSE HH.FCurrTotal END AS nvarchar(50)) AS strSubFormated,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CUR.strCurrency IS NULL THEN HH.TotalTax ELSE HH.FCurrTotalTax END AS nvarchar(50)) AS strVATFormatted,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CUR.strCurrency IS NULL THEN HH.InvTotIncl ELSE HH.fInvTotInclForeign END AS nvarchar(50)) AS strTotFormatted,
			HH.DocumentDate AS dteField13,
			HH.DocumentDate AS dteField14,
			HH.DiscountPercent AS decDiscPerc,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' 0.00' AS strDiscFormatted,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' 0.00' AS strDeliveryCostFormatted
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryHeader HH ON TMP.InvoiceID = HH.InvoiceID 
	INNER JOIN tblCustomers CUST ON HH.CustomerCode = CUST.strCustName 
	LEFT JOIN tblUtilitySalesPersons SP ON HH.SalesManCode = SP.strCode
	LEFT JOIN tblUtilityCurrency CUR ON HH.CurrencyCode = CUR.strPPCurrency 
	ORDER BY TMP.lngID 

	INSERT INTO #Temp_DTL (strOrdDocID, intLineNo, strPartNumber, strLocation, strPartDesc, decQty, decQtyRemaining, strUnit, intType, decPriceEaExc, decLineTotExc, 
						   decLineTaxAmt, decPriceEaInc, decLineTotInc, strTaxCode, strCurrency, bitIsForeign, decPriceEaExcF, decLineTotExcF, decLineTaxAmtF, 
						   decEaIncTaxF, decTotIncTaxF, decLineDiscPerc, decLineDiscAmt, decLineDiscAmtF, decStockQty, strStockUnit, decStockQtyRemain, strSalesName)
	SELECT	TMP.OrdDocID_New AS strOrdDocID,
			ROW_NUMBER() OVER(PARTITION BY TMP.OrdDocID_New ORDER BY HL.ItemCode ASC) AS intLineNo,
			CASE WHEN ISNULL(SUBSTRING(CASE WHEN HL.SearchType = 6 THEN LTRIM(RTRIM(REPLACE(REPLACE(ItemCode, '>', ''), '/', ''))) ELSE LTRIM(RTRIM(HL.ItemCode)) END, 1, 50), '') = ''
				 THEN CASE WHEN HL.Physical = 0
						   THEN '<<BLANK-SERV>>'
						   ELSE '<<BLANK-ITEM>>'
					  END
				 ELSE SUBSTRING(CASE WHEN HL.SearchType = 6 THEN LTRIM(RTRIM(REPLACE(REPLACE(ItemCode, '>', ''), '/', ''))) ELSE LTRIM(RTRIM(HL.ItemCode)) END, 1, 50)
			END AS strPartNumber,
			CASE WHEN ISNULL(LTRIM(RTRIM(HL.MultiStore)), '') = '' THEN @strLocName ELSE SUBSTRING(LTRIM(RTRIM(HL.MultiStore)), 1, 10) END AS strLocation,
			SUBSTRING(LTRIM(RTRIM(HL.[Description])), 1, 500) AS strPartDesc,
			CASE WHEN HL.fQuantity < 0 THEN HL.fQuantity * -1 ELSE HL.fQuantity END AS decQty,
			CASE WHEN HL.fQtyProcessed < 0 THEN HL.fQtyProcessed * -1 ELSE HL.fQtyProcessed END AS decQtyRemaining,
			CASE WHEN LTRIM(RTRIM(ISNULL(HL.UnitUsed, ''))) = '' THEN 'EA' ELSE SUBSTRING(LTRIM(RTRIM(HL.UnitUsed)), 1, 15) END AS strUnit,
			CASE WHEN HL.Physical = 0 THEN 4 ELSE 1 END AS intType,
			HL.UnitPrice AS decPriceEaExc,
			CASE WHEN HL.fQuantityLineTotIncl < 0 THEN HL.fQuantityLineTotIncl * -1 ELSE HL.fQuantityLineTotIncl END AS decLineTotExc,
			CASE WHEN HL.TaxAmt < 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END AS decLineTaxAmt,
			HL.UnitPrice AS decPriceEaInc, 
			CASE WHEN HL.fQuantityLineTotIncl < 0 THEN HL.fQuantityLineTotIncl * -1 ELSE HL.fQuantityLineTotIncl END AS decLineTotInc, 
			ISNULL(TAX.strTaxCodeSales, CUST.strTaxCode) AS strTaxCode, 
			CASE WHEN CUR.strCurrency IS NULL THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
			CASE WHEN CUR.strCurrency IS NULL THEN 0 ELSE 1 END AS bitIsForeign,
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE HL.FCurrUnitPrice END AS decPriceEaExcF,
			CASE WHEN CUR.strCurrency IS NULL 
				 THEN 0.00 
				 ELSE CASE WHEN HL.fQuantityLineTotInclForeign < 0 THEN HL.fQuantityLineTotInclForeign * -1 ELSE HL.fQuantityLineTotInclForeign END
			END AS decLineTotExcF,
			CASE WHEN CUR.strCurrency IS NULL 
				 THEN 0.00 
				 ELSE CASE WHEN HL.FCurrTaxAmount < 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END
			END AS decLineTaxAmtF, 
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE HL.FCurrUnitPrice END AS decEaIncTaxF, 
			CASE WHEN CUR.strCurrency IS NULL 
				 THEN 0.00 
				 ELSE CASE WHEN HL.fQuantityLineTotInclForeign < 0 THEN HL.fQuantityLineTotInclForeign * -1 ELSE HL.fQuantityLineTotInclForeign END
			END AS decTotIncTaxF, 
			HL.DiscountPercentage AS decLineDiscPerc, 
			CASE WHEN HL.DiscountAmount > 0 THEN HL.DiscountAmount * -1 ELSE HL.DiscountAmount END AS decLineDiscAmt, 
			CASE WHEN CUR.strCurrency IS NULL 
				 THEN 0.00 
				 ELSE CASE WHEN HL.FCDiscountAmount > 0 THEN HL.FCDiscountAmount * -1 ELSE HL.FCDiscountAmount END
			END AS decLineDiscAmtF, 
			CASE WHEN HL.fQuantity < 0 THEN HL.fQuantity * -1 ELSE HL.fQuantity END AS decStockQty,
			CASE WHEN LTRIM(RTRIM(ISNULL(HL.UnitUsed, ''))) = '' THEN 'EA' ELSE LTRIM(RTRIM(HL.UnitUsed)) END AS strStockUnit, 
			CASE WHEN HL.fQtyProcessed < 0 THEN HL.fQtyProcessed * -1 ELSE HL.fQtyProcessed END AS decStockQtyRemain,
			CASE WHEN ISNULL(SP.strSalesName, '') = '' THEN NULL ELSE SP.strSalesName END AS strSalesName
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryLines HL ON TMP.InvoiceID = HL.iinvoiceid 
	INNER JOIN tblUtilityPervHistoryHeader HH ON HL.iinvoiceid = HH.InvoiceID
	INNER JOIN tblCustomers CUST ON HH.CustomerCode = CUST.strCustName 
	LEFT JOIN tblUtilityTaxCodesMap TAX ON HL.TaxCode = TAX.strTaxCode
	LEFT JOIN tblUtilitySalesPersons SP ON HH.SalesManCode = SP.strCode
	LEFT JOIN tblUtilityCurrency CUR ON HH.CurrencyCode = CUR.strPPCurrency 
	ORDER BY HL.LinkNum

END
ELSE
BEGIN
INSERT INTO #Temp_DOC (OrdDocID, OrdDocID_New)
SELECT	DocumentNumber AS OrdDocID,
SUBSTRING('SO-' + LTRIM(RTRIM(DocumentNumber)), 1, 50) AS OrdDocID_New
FROM tblUtilityPervHistoryHeader
WHERE (DocumentType = 102)
AND (DocumentDate BETWEEN @StartDate AND @EndDate)
AND DocumentNumber IN (SELECT DISTINCT
HL.DocumentNumber 
FROM tblUtilityPervHistoryLines HL 
WHERE (HL.DocumentType = 102)
AND (HL.QtyLeft > 0)) 
ORDER BY LTRIM(RTRIM(DocumentNumber))
SELECT @intHDRTotCount = COUNT(OrdDocID_New)
FROM #Temp_DOC
SELECT @intDTLTotCount = COUNT(HL.DocumentNumber)
FROM #Temp_DOC TMP
INNER JOIN tblUtilityPervHistoryLines HL ON TMP.OrdDocID = HL.DocumentNumber 
DELETE FROM #Temp_DOC
WHERE OrdDocID_New IN (SELECT TMP.OrdDocID_New 
FROM #Temp_DOC TMP
INNER JOIN tblOrderDoc DOC ON TMP.OrdDocID_New = DOC.strOrdDocID)
INSERT INTO #Temp_HDR (strOrdDocID, dteSystemDate, dteJournalDate, dteRequired, strCustName, strSoldTo, strShipTo, strReference, decSubTotal, decVAT, decTotal, 
strNotes, strSalesName, strCurrency, bitIsForeign, decSubTotalF, decVATF, decTotalF, decExchange, strTerm,  strSubFormated, strVATFormatted, 
strTotFormatted, dteField13, dteField14, decDiscPerc, strDiscFormatted, strDeliveryCostFormatted)
SELECT	TMP.OrdDocID_New AS strOrdDocID,
HH.DocumentDate AS dteSystemDate, 
HH.DocumentDate AS dteJournalDate, 
HH.DocumentDate AS dteRequired,
SUBSTRING(HH.CustomerCode, 1, 50) AS strCustName,
SUBSTRING(CASE WHEN LEN(LTRIM(RTRIM(CUST.strCustDesc))) > 0 THEN LTRIM(RTRIM(CUST.strCustDesc)) + Char(13) + Char(10) ELSE '' END
+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strStreet1))) > 0 THEN LTRIM(RTRIM(CUST.strStreet1)) + Char(13) + Char(10) ELSE '' END 
+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strStreet2))) > 0 THEN LTRIM(RTRIM(CUST.strStreet2)) + Char(13) + Char(10) ELSE '' END 
+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strCity))) > 0 THEN LTRIM(RTRIM(CUST.strCity)) ELSE '  ' END 
+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strProvince))) > 0 THEN LTRIM(RTRIM(CUST.strProvince)) ELSE '  ' END 
+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strPostal))) > 0 THEN LTRIM(RTRIM(CUST.strPostal)) ELSE '  ' END 
+ CASE WHEN LEN(LTRIM(RTRIM(CUST.strCountry))) > 0 THEN Char(13) + Char(10) + LTRIM(RTRIM(CUST.strCountry)) ELSE '' END, 1, 500) AS strSoldTo,
SUBSTRING(CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress01))) > 0 THEN LTRIM(RTRIM(HH.DelAddress01)) + Char(13) + Char(10) ELSE '' END
+ CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress02))) > 0 THEN LTRIM(RTRIM(HH.DelAddress02)) + Char(13) + Char(10) ELSE '' END 
+ CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress03))) > 0 THEN LTRIM(RTRIM(HH.DelAddress03)) + Char(13) + Char(10) ELSE '' END 
+ CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress04))) > 0 THEN LTRIM(RTRIM(HH.DelAddress04)) + Char(13) + Char(10) ELSE '' END 
+ CASE WHEN LEN(LTRIM(RTRIM(HH.DelAddress05))) > 0 THEN LTRIM(RTRIM(HH.DelAddress05)) + Char(13) + Char(10) ELSE '' END, 1, 500) AS strShipTo,
SUBSTRING(LTRIM(RTRIM(HH.OrderNumber)), 1, 50) AS strReference,
HH.Total AS decSubTotal,
HH.TotalTax AS decVAT,
HH.Total + HH.TotalTax AS decTotal,
SUBSTRING(LTRIM(RTRIM(HH.Message01)) + LTRIM(RTRIM(HH.Message02)) + LTRIM(RTRIM(HH.Message03)), 1, 500) AS strNotes,
CASE WHEN ISNULL(SP.strSalesName, '') = '' THEN NULL ELSE SP.strSalesName END AS strSalesName,
CASE WHEN CURH.bitHome = 1 THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
CASE WHEN CURH.bitHome = 1 THEN 0 ELSE 1 END AS bitIsForeign,
CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE HH.FCurrTotal END AS decSubTotalF,
CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE HH.FCurrTotalTax END AS decVATF,
CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE HH.FCurrTotal + HH.FCurrTotalTax END AS decTotalF,
CASE WHEN CURH.bitHome = 1 THEN 1.00 ELSE HH.ExchangeRate END AS decExchange,
CASE WHEN TERM.strTerm IS NULL THEN CUST.strTerm ELSE TERM.strTerm END AS strTerm,
ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CURH.bitHome = 1 THEN HH.Total ELSE HH.FCurrTotal END AS nvarchar(50)) AS strSubFormated,
ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CURH.bitHome = 1 THEN HH.TotalTax ELSE HH.FCurrTotalTax END AS nvarchar(50)) AS strVATFormatted,
ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CURH.bitHome = 1 THEN (HH.Total + HH.TotalTax) ELSE (HH.FCurrTotal + HH.FCurrTotalTax) END AS nvarchar(50)) AS strTotFormatted,
HH.DocumentDate AS dteField13,
HH.DocumentDate AS dteField14,
HH.DiscountPercent AS decDiscPerc,
ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' 0.00' AS strDiscFormatted,
ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' 0.00' AS strDeliveryCostFormatted
FROM #Temp_DOC TMP
INNER JOIN tblUtilityPervHistoryHeader HH ON TMP.OrdDocID = HH.DocumentNumber 
INNER JOIN tblCustomers CUST ON HH.CustomerCode = CUST.strCustName 
LEFT JOIN tblUtilitySalesPersons SP ON HH.SalesManCode = SP.strCode
LEFT JOIN tblUtilityCurrency CUR ON HH.CurrencyCode = CUR.strPPCurrency 
LEFT JOIN tblCurrency CURH ON CUST.strCurrency = CURH.strCurrency 
LEFT JOIN tblUtilityTerms TERM ON HH.Terms = TERM.strPPTerm 
WHERE (HH.DocumentType = 102)
AND (HH.DocumentDate BETWEEN @StartDate AND @EndDate)
ORDER BY TMP.lngID 
INSERT INTO #Temp_DTL (strOrdDocID, intLineNo, strPartNumber, strLocation, strPartDesc, decQty, decQtyRemaining, strUnit, intType, decPriceEaExc, decLineTotExc, 
decLineTaxAmt, decPriceEaInc, decLineTotInc, strTaxCode, strCurrency, bitIsForeign, decPriceEaExcF, decLineTotExcF, decLineTaxAmtF, 
decEaIncTaxF, decTotIncTaxF, decLineDiscPerc, decLineDiscAmt, decLineDiscAmtF, decStockQty, strStockUnit, decStockQtyRemain, strSalesName)
SELECT	TMP.OrdDocID_New AS strInvDocID,
ROW_NUMBER() OVER(PARTITION BY TMP.OrdDocID_New ORDER BY HL.ItemCode ASC) AS intLineNo,
CASE WHEN ISNULL(SUBSTRING(LTRIM(RTRIM(HL.ItemCode)), 1, 50), '') = ''
THEN CASE WHEN HL.Physical = 0
THEN '<<BLANK-SERV>>'
ELSE '<<BLANK-ITEM>>'
END
ELSE SUBSTRING(LTRIM(RTRIM(HL.ItemCode)), 1, 50)
END AS strPartNumber,
CASE WHEN ISNULL(LTRIM(RTRIM(HL.MultiStore)), '') = '' THEN @strLocName ELSE SUBSTRING(LTRIM(RTRIM(HL.MultiStore)), 1, 10) END AS strLocation,
SUBSTRING(LTRIM(RTRIM(HL.[Description])), 1, 500) AS strPartDesc,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.Qty > 0 THEN HL.Qty * -1 ELSE HL.Qty END 
ELSE CASE WHEN HL.Qty < 0 THEN HL.Qty * -1 ELSE HL.Qty END
END AS decQty,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.Qty > 0 THEN HL.Qty * -1 ELSE HL.Qty END 
ELSE CASE WHEN HL.Qty < 0 THEN HL.Qty * -1 ELSE HL.Qty END
END AS decQtyRemaining,
CASE WHEN LTRIM(RTRIM(ISNULL(HL.UnitUsed, ''))) = '' THEN 'EA' ELSE SUBSTRING(LTRIM(RTRIM(HL.UnitUsed)), 1, 15) END AS strUnit,
CASE WHEN HL.Physical = 0 THEN 4 ELSE 1 END AS intType,
CASE WHEN HL.UnitPrice < 0 THEN HL.UnitPrice * -1 ELSE HL.UnitPrice END AS decPriceEaExc,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.DiscountAmount > 0 THEN HL.DiscountAmount * -1 ELSE HL.DiscountAmount END 
ELSE CASE WHEN HL.DiscountAmount < 0 THEN HL.DiscountAmount * -1 ELSE HL.DiscountAmount END
END AS decLineTotExc,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.TaxAmt > 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END 
ELSE CASE WHEN HL.TaxAmt < 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END
END AS decLineTaxAmt,
CASE WHEN HL.InclusivePrice < 0 THEN HL.InclusivePrice * -1 ELSE HL.InclusivePrice END AS decPriceEaInc,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.DiscountAmount > 0 THEN HL.DiscountAmount * -1 ELSE HL.DiscountAmount END 
ELSE CASE WHEN HL.DiscountAmount < 0 THEN HL.DiscountAmount * -1 ELSE HL.DiscountAmount END
END + CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.TaxAmt > 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END 
ELSE CASE WHEN HL.TaxAmt < 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END
END AS decLineTotInc,
TAX.strTaxCodeSales AS strTaxCode, 
CASE WHEN CURH.bitHome = 1 THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
CASE WHEN CURH.bitHome = 1 THEN 0 ELSE 1 END AS bitIsForeign,
CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE CASE WHEN HL.FCurrUnitPrice < 0 THEN HL.FCurrUnitPrice * -1 ELSE HL.FCurrUnitPrice END END AS decPriceEaExcF,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.FCDiscountAmount > 0 THEN HL.FCDiscountAmount * -1 ELSE HL.FCDiscountAmount END 
ELSE CASE WHEN HL.FCDiscountAmount < 0 THEN HL.FCDiscountAmount * -1 ELSE HL.FCDiscountAmount END
END AS decLineTotExcF,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.FCurrTaxAmount > 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END 
ELSE CASE WHEN HL.FCurrTaxAmount < 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END
END AS decLineTaxAmtF,
CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE CASE WHEN HL.FCurrInclPrice < 0 THEN HL.FCurrInclPrice * -1 ELSE HL.FCurrInclPrice END END AS decEaIncTaxF,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.FCDiscountAmount > 0 THEN HL.FCDiscountAmount * -1 ELSE HL.FCDiscountAmount END 
ELSE CASE WHEN HL.FCDiscountAmount < 0 THEN HL.FCDiscountAmount * -1 ELSE HL.FCDiscountAmount END
END + CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.FCurrTaxAmount > 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END 
ELSE CASE WHEN HL.FCurrTaxAmount < 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END
END AS decTotIncTaxF,
(HL.DiscountPercentage / 100) AS decLineDiscPerc, 
0.00 AS decLineDiscAmt,
0.00 AS decLineDiscAmtF,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.Qty > 0 THEN HL.Qty * -1 ELSE HL.Qty END 
ELSE CASE WHEN HL.Qty < 0 THEN HL.Qty * -1 ELSE HL.Qty END
END AS decStockQty,
CASE WHEN LTRIM(RTRIM(ISNULL(HL.UnitUsed, ''))) = '' THEN 'EA' ELSE SUBSTRING(LTRIM(RTRIM(HL.UnitUsed)), 1, 15) END AS strUnit,
CASE WHEN HL.UnitPrice < 0 
THEN CASE WHEN HL.Qty > 0 THEN HL.Qty * -1 ELSE HL.Qty END 
ELSE CASE WHEN HL.Qty < 0 THEN HL.Qty * -1 ELSE HL.Qty END
END AS decStockQtyRemain,
SP.strSalesName AS strSalesName
FROM #Temp_DOC TMP
INNER JOIN tblUtilityPervHistoryLines HL ON TMP.OrdDocID = HL.DocumentNumber 
INNER JOIN tblUtilityPervHistoryHeader HH ON HL.DocumentNumber = HH.DocumentNumber AND HL.DocumentType = HH.DocumentType 
INNER JOIN tblCustomers CUST ON HH.CustomerCode = CUST.strCustName 
INNER JOIN tblUtilityTaxCodesMap TAX ON CAST(HL.TaxType AS nvarchar(15)) = TAX.strTaxCode
LEFT JOIN tblUtilitySalesPersons SP ON HH.SalesManCode = SP.strCode
LEFT JOIN tblUtilityCurrency CUR ON HH.CurrencyCode = CUR.strPPCurrency 
LEFT JOIN tblCurrency CURH ON CUST.strCurrency = CURH.strCurrency 
WHERE (HH.DocumentType = 102)
AND (LTRIM(RTRIM(HL.ItemCode)) <> '''')
ORDER BY HL.LinkNum
END
INSERT INTO tblOrderDoc (strOrdDocID, intDocType, dteSystemDate, dteJournalDate, dteRequired, strUserName, strCustName, strSoldTo, strShipTo, strReference, decSubTotal, decVAT, 
decTotal, strNotes, bitPrinted, bitEmailed, bitCleared, strSalesName, strAddInfo, strCurrency, bitIsForeign, decSubTotalF, decVATF, decTotalF, decExchange, 
strTerm, intDept, strField1, strField2, strField3, strField4, strField5, strField6, strField7, strField8, strField9, strField10, strField11, strField12, 
strSubFormated, strVATFormatted, strTotFormatted, dteField13, dteField14, decDiscPerc, decDiscAmt, decDiscAmtF, strDiscFormatted, strOrdFQDocID, 
strStatusTypeCode, bitBookmark, strCNReasonCode, bitIsRepair, strDelMethodCode, decTotalWeight, decTotalVolWeight, strSOReasonCode, decDeliveryCost, 
decDeliveryCostF, strDeliveryCostFormatted, bitShipmentsAuditTrail, intRevisionNumber, bitIsLayby, strStoreNumber, strEDI, CustomerSignature, 
bitIsFromWorkshop, bitNewsSubscribed, strEmail, varDocumentSignature, uidSessionID, dteRowUpdated)
SELECT	strOrdDocID,
@DocType AS intDocType,
dteSystemDate, 
dteJournalDate, 
dteRequired,
@UserName AS strUserName,
strCustName,
strSoldTo,
strShipTo,
strReference,
decSubTotal,
decVAT,
decTotal,
strNotes,
1 AS bitPrinted,
1 AS bitEmailed,
0 AS bitCleared,
strSalesName,
'' AS strAddInfo,
strCurrency,
bitIsForeign,
decSubTotalF,
decVATF,
decTotalF,
decExchange,
strTerm,
NULL AS intDept,
'' AS strField1,
'' AS strField2,
'' AS strField3,
'' AS strField4,
'' AS strField5,
'' AS strField6,
'' AS strField7,
'' AS strField8,
'' AS strField9,
'' AS strField10,
'' AS strField11,
'' AS strField12,
strSubFormated,
strVATFormatted,
strTotFormatted,
dteField13,
dteField14,
decDiscPerc,
0.00 AS decDiscAmt,
0.00 AS decDiscAmtF,
strDiscFormatted,
NULL AS strOrdFQDocID,
NULL AS strStatusTypeCode,
0 AS bitBookmark,
NULL AS strCNReasonCode,
0 AS bitIsRepair,
NULL AS strDelMethodCode,
0.00 AS decTotalWeight,
0.00 AS decTotalVolWeight,
NULL AS strSOReasonCode,
0.00 AS decDeliveryCost,
0.00 AS decDeliveryCostF,
strDeliveryCostFormatted,
0 AS bitShipmentsAuditTrail,
1 AS intRevisionNumber,
0 AS bitIsLayby,
NULL AS strStoreNumber,
NULL AS strEDI,
NULL AS CustomerSignature,
0 AS bitIsFromWorkshop,
NULL AS bitNewsSubscribed,
NULL AS strEmail,
NULL AS varDocumentSignature,
NULL AS uidSessionID, 
GETDATE() AS dteRowUpdated
FROM #Temp_HDR
ORDER BY lngID 
SELECT @intHDRRecCount = @@ROWCOUNT
INSERT INTO tblOrderDocDT (strOrdDocID, intLineNo, strPartNumber, strLocation, strPartDesc, decQty, decQtyRemaining, strUnit, intType, decPriceEaExc, decLineTotExc, 
decLineTaxAmt, decPriceEaInc, decLineTotInc, strTaxCode, imgTaxObj, strCurrency, bitIsForeign, decPriceEaExcF, decLineTotExcF, decLineTaxAmtF, 
decEaIncTaxF, decTotIncTaxF, strInvField1, strInvField2, strInvField3, strInvField4, strInvField5, strInvField6, strLineField1, strLineField2, 
strLineField3, strLineField4, strLineField5, strLineField6, strLineField7, strLineField8, strLineField9, strLineField10, strLineField11, 
strLineField12, decLineDiscPerc, decLineDiscAmt, decLineDiscAmtF, bitDiscountTax, decStockQty, strStockUnit, decStockQtyRemain, strSalesName, 
strPartExtendedDesc, decBuyoutCost, decItemWeight, decVolumetricWeight, bitContainerItem, bitDelCost, intBillingMethod, uidTransactionFieldID, 
uidContainerItem)
SELECT	strOrdDocID,
intLineNo,
strPartNumber,
strLocation,
strPartDesc,
decQty,
decQtyRemaining,
strUnit,
intType,
decPriceEaExc,
decLineTotExc,
decLineTaxAmt,
decPriceEaInc, 
decLineTotInc, 
strTaxCode, 
NULL AS imgTaxObj, 
strCurrency,
bitIsForeign,
decPriceEaExcF,
decLineTotExcF,
decLineTaxAmtF, 
decEaIncTaxF, 
decTotIncTaxF, 
'' AS strInvField1, 
'' AS strInvField2, 
'' AS strInvField3, 
'' AS strInvField4, 
'' AS strInvField5, 
'' AS strInvField6,
'' AS strLineField1, 
'' AS strLineField2, 
'' AS strLineField3, 
'' AS strLineField4, 
'' AS strLineField5, 
'' AS strLineField6, 
'' AS strLineField7, 
'' AS strLineField8,
'' AS strLineField9, 
'' AS strLineField10, 
'' AS strLineField11, 
'' AS strLineField12, 
decLineDiscPerc, 
decLineDiscAmt, 
decLineDiscAmtF, 
0 AS bitDiscountTax,
decStockQty, 
strStockUnit, 
decStockQtyRemain, 
strSalesName,
'' AS strPartExtendedDesc,
0 AS decBuyoutCost,
0.00 AS decItemWeight, 
0.00 AS decVolumetricWeight, 
0 AS bitContainerItem, 
0 AS bitDelCost, 
0 AS intBillingMethod, 
NEWID() AS uidTransactionFieldID, 
NULL AS uidContainerItem
FROM #Temp_DTL
ORDER BY lngID
SELECT @intDTLRecCount = @@ROWCOUNT
IF NOT EXISTS (SELECT TOP 1 lngEntID FROM tblInvoiceDocRev)
BEGIN
UPDATE #Temp_HDR 
SET lngEntID = lngID 
END
ELSE
BEGIN
SELECT @lngEntID = MAX(lngEntID) FROM tblInvoiceDocREV
UPDATE #Temp_HDR 
SET lngEntID = lngID + @lngEntID
END
INSERT INTO tblInvoiceDocREV (lngEntID, strInvDocID, lngInvTrackID, lngJourID, dteSystemDate, dteJournalDate, dteRequired, strUsername, strCustName, strSoldTo, 
strShipTo, strReference, decSubTotal, decVAT, decTotal, bitFromSO, bitHistoryTrans, strNotes, bitPrinted, bitEmailed, intPaidBy, 
intAccount, strSalesName, strAddInfo, bitReserved, strCurrency, bitIsForeign, decSubTotalF, decVATF, decTotalF, decExchange, strTerm, 
intDept, strField1, strField2, strField3, strField4, strField5, strField6, strField7, strField8, strField9, strField10, strField11, 
strField12, strSubFormated, strVATFormatted, strTotFormatted, dteField13, dteField14, decDiscPerc, decDiscAmt, decDiscAmtF, 
strDiscFormatted, strOrdFQDocID, strStatusTypeCode, strCNReasonCode, bitBookmark, dteSystemDateTime, strPaidBy, intSentDoc, strVAT, 
strDelMethodCode, decTotalWeight, decTotalVolWeight, decDeliveryCost, decDeliveryCostF, strDeliveryCostFormatted, strOrdDocID, 
intRevisionNumber, dteRevisionDate, strUserCreated, bitIsRepair, strVendName, strBoughtFrom, bitFQConvert, bitSOCopy, bitSOCopyMulti, 
strVendInvNo, bitFromPO, decNetItemWeight, decNetVolumetricWeight, strSourceMOP, bitCleared, strOrdRFQDocID, bitRFQConvert, strOrdPDocID, 
intModule, strSOReasonCode, strDelNoteNo, strContractTo, strContBillType, blnAllowAnnualIncrease, intContractPriceIncrease, 
dtpIncreaseStartDate, bitInactive, strStoreNumber, strEDI) 
SELECT	HDR.lngEntID,
HDR.strOrdDocID AS strInvDocID,
NULL AS lngInvTrackID,
NULL AS lngJourID,
HDR.dteSystemDate,
HDR.dteJournalDate,
HDR.dteRequired,
@UserName AS strUserName,
HDR.strCustName,
HDR.strSoldTo,
HDR.strShipTo,
HDR.strReference,
HDR.decSubTotal,
HDR.decVAT,
HDR.decTotal,
NULL AS bitFromSO,
NULL AS bitHistoryTrans,
HDR.strNotes,
1 AS bitPrinted,
1 AS bitEmailed,
NULL AS intPaidBy,
NULL AS intAccount,
HDR.strSalesName,
'' AS strAddInfo,
NULL AS bitReserved,
HDR.strCurrency,
HDR.bitIsForeign,
HDR.decSubTotalF,
HDR.decVATF,
HDR.decTotalF,
HDR.decExchange,
HDR.strTerm,
NULL AS intDept,
'' AS strField1,
'' AS strField2,
'' AS strField3,
'' AS strField4,
'' AS strField5,
'' AS strField6,
'' AS strField7,
'' AS strField8,
'' AS strField9,
'' AS strField10,
'' AS strField11,
'' AS strField12,
HDR.strSubFormated,
HDR.strVATFormatted,
HDR.strTotFormatted,
HDR.dteField13,
HDR.dteField14,
HDR.decDiscPerc,
0.00 AS decDiscAmt,
0.00 AS decDiscAmtF,
HDR.strDiscFormatted,
NULL AS strOrdFQDocID,
NULL AS strStatusTypeCode,
NULL AS strCNReasonCode,
0 AS bitBookmark,
NULL AS dteSystemDateTime,
NULL AS strPaidBy,
NULL AS intSentDoc,
NULL AS strVAT,
NULL AS strDelMethodCode,
0.00 AS decTotalWeight,
0.00 AS decTotalVolWeight,
0.00 AS decDeliveryCost,
0.00 AS decDeliveryCostF,
HDR.strDeliveryCostFormatted, 
NULL AS strOrdDocID,
1 AS intRevisionNumber,
HDR.dteSystemDate AS dteRevisionDate,
@UserName AS strUserCreated,
0 AS bitIsRepair,
NULL AS strVendName,
NULL AS strBoughtFrom,
NULL AS bitFQConvert,
NULL AS bitSOCopy,
NULL AS bitSOCopyMulti,
NULL AS strVendInvNo,
NULL AS bitFromPO,
NULL AS decNetItemWeight,
NULL AS decNetVolumetricWeight,
NULL AS strSourceMOP,
0 AS bitCleared,
NULL AS strOrdRFQDocID,
NULL AS bitRFQConvert,
NULL AS strOrdPDocID,
2 AS intModule,
NULL AS strSOReasonCode,
NULL AS strDelNoteNo,
NULL AS strContractTo,
NULL AS strContBillType,
NULL AS blnAllowAnnualIncrease,
NULL AS intContractPriceIncrease,
NULL AS dtpIncreaseStartDate,
NULL AS bitInactive,
NULL AS strStoreNumber,
NULL AS strEDI
FROM #Temp_DOC DOC
INNER JOIN #Temp_HDR HDR ON DOC.OrdDocID_New = HDR.strOrdDocID
ORDER BY HDR.lngID 
SELECT @intREVHDRRecCount = @@ROWCOUNT 
INSERT INTO tblInvoiceDocREVDT (lngEntID, strInvDocID, intLineNo, strPartNumber, strLocation, strPartDesc, decQty, strUnit, intType, decPriceEaExc, decLineTotExc, 
decLineTaxAmt, decPriceEaInc, decLineTotInc, strTaxCode, imgTaxObj, strCurrency, bitIsForeign, decPriceEaExcF, decLineTotExcF, 
decLineTaxAmtF, decEaIncTaxF, decTotIncTaxF, strInvField1, strInvField2, strInvField3, strInvField4, strInvField5, strInvField6, 
strLineField1, strLineField2, strLineField3, strLineField4, strLineField5, strLineField6, strLineField7, strLineField8, strLineField9, 
strLineField10, strLineField11, strLineField12, decLineDiscPerc, decLineDiscAmt, decLineDiscAmtF, bitDiscountTax, decStockQty, 
strStockUnit, decStandardCost, decLastPPUnit, strSalesName, decCOGS, decSOQty, decSOQtyRemain, strPartExtendedDesc, decItemWeight, 
decVolumetricWeight, bitContainerItem, decBuyQty, decBuyQtyRemain, strBuyUnit, decEaIncTax, decTotIncTax, strOrdSODocID, 
decStockQtyRemain, decBuyoutCost, decQtyRemaining, intStatus, uidTransactionFieldID, strContBillType, blnAllowAnnualIncrease, 
intContractPriceIncrease, dtpIncreaseStartDate, dtpSetUpDate, dtpActivationDate, dtpTerminationDate, dtpExpirationDate, 
dtpBillingSchduleStart, strBillingFrequncy, dtpLastBillDate, dtpNextBillDate, dtpNextInvoiceDate, decUsedQty) 
SELECT	HDR.lngEntID, 
DTL.strOrdDocID AS strInvDocID, 
DTL.intLineNo, 
DTL.strPartNumber, 
DTL.strLocation, 
DTL.strPartDesc, 
DTL.decQty, 
DTL.strUnit, 
DTL.intType, 
DTL.decPriceEaExc, 
DTL.decLineTotExc, 
DTL.decLineTaxAmt, 
DTL.decPriceEaInc, 
DTL.decLineTotInc, 
DTL.strTaxCode, 
NULL AS imgTaxObj, 
DTL.strCurrency, 
DTL.bitIsForeign, 
DTL.decPriceEaExcF, 
DTL.decLineTotExcF, 
DTL.decLineTaxAmtF, 
DTL.decEaIncTaxF, 
DTL.decTotIncTaxF, 
'' AS strInvField1, 
'' AS strInvField2, 
'' AS strInvField3, 
'' AS strInvField4, 
'' AS strInvField5, 
'' AS strInvField6,
'' AS strLineField1, 
'' AS strLineField2, 
'' AS strLineField3, 
'' AS strLineField4, 
'' AS strLineField5, 
'' AS strLineField6, 
'' AS strLineField7, 
'' AS strLineField8,
'' AS strLineField9, 
'' AS strLineField10, 
'' AS strLineField11, 
'' AS strLineField12, 
DTL.decLineDiscPerc, 
DTL.decLineDiscAmt, 
DTL.decLineDiscAmtF, 
0 AS bitDiscountTax,
DTL.decStockQty, 
DTL.strStockUnit, 
NULL AS decStandardCost, 
NULL AS decLastPPUnit, 
DTL.strSalesName, 
NULL AS decCOGS, 
NULL AS decSOQty, 
NULL AS decSOQtyRemain, 
'' AS strPartExtendedDesc,
0.00 AS decItemWeight, 
0.00 AS decVolumetricWeight, 
0 AS bitContainerItem, 
NULL AS decBuyQty, 
NULL AS decBuyQtyRemain, 
NULL AS strBuyUnit, 
NULL AS decEaIncTax, 
NULL AS decTotIncTax, 
NULL AS strOrdSODocID, 
DTL.decStockQtyRemain, 
NULL AS decBuyoutCost, 
DTL.decQtyRemaining, 
1 AS intStatus, 
NEWID() AS uidTransactionFieldID, 
NULL AS strContBillType, 
NULL AS blnAllowAnnualIncrease, 
NULL AS intContractPriceIncrease, 
NULL AS dtpIncreaseStartDate, 
NULL AS dtpSetUpDate, 
NULL AS dtpActivationDate, 
NULL AS dtpTerminationDate, 
NULL AS dtpExpirationDate, 
NULL AS dtpBillingSchduleStart, 
NULL AS strBillingFrequncy, 
NULL AS dtpLastBillDate, 
NULL AS dtpNextBillDate, 
NULL AS dtpNextInvoiceDate, 
NULL AS decUsedQty
FROM #Temp_HDR HDR
INNER JOIN #Temp_DTL DTL ON HDR.strOrdDocID = DTL.strOrdDocID 
ORDER BY DTL.lngID
SELECT @intREVDTLRecCount = @@ROWCOUNT 
-- *** SYNC ALLOCATED - START
INSERT INTO #Temp_EXT (strPartNumber, strLocName, decAlloc)
SELECT	Z.strPartNumber, 
Z.strLocation AS strLocName, 
SUM(Z.decQty) AS decAlloc
FROM (SELECT tblOrderDocDT.strPartNumber, 
tblOrderDocDT.strLocation, 
SUM(tblOrderDocDT.decStockQtyRemain) AS decQty 
FROM tblOrderDoc 
INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
INNER JOIN tblInv ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber 
WHERE (tblOrderDoc.intDocType in (1, 3)) 
AND (tblOrderDoc.bitCleared = 0) 
AND (tblInv.intType = 1)
AND (tblInv.bitOtherCmp = 0)
GROUP BY tblOrderDocDT.strPartNumber, 
tblOrderDocDT.strLocation) Z 
GROUP BY Z.strPartNumber, 
Z.strLocation
INSERT INTO #Temp_INV (strPartNumber, decAlloc)
SELECT strPartNumber, 
SUM(decAlloc) AS decAlloc 
FROM #Temp_EXT 
GROUP BY strPartNumber
UPDATE tblInvExt 
SET decAlloc = 0.00
WHERE strPartNumber IN (SELECT strPartNumber 
FROM #Temp_INV)
UPDATE tblInvExt 
SET decAlloc = EXT.decAlloc  
FROM #Temp_EXT EXT
WHERE tblInvExt.strPartNumber = EXT.strPartNumber 
AND tblInvExt.strLocName = EXT.strLocName 
UPDATE tblInvExt 
SET decAvail = (decOnHand - decAlloc) - decManuf 
WHERE strPartNumber IN (SELECT strPartNumber 
FROM #Temp_INV)
UPDATE tblInv 
SET decSumAlloc = 0.00, 
dteLastUpdated = GETDATE() 
WHERE strPartNumber IN (SELECT strPartNumber 
FROM #Temp_INV)
UPDATE tblInv 
SET decSumAlloc = INV.decAlloc, 
dteLastUpdated = GETDATE() 
FROM #Temp_INV INV
WHERE tblInv.strPartNumber = INV.strPartNumber 
UPDATE tblInv 
SET decSumAvail = (decSumOnHand - decSumAlloc) - decSumManuf, 
dteLastUpdated = GETDATE() 
WHERE strPartNumber IN (SELECT strPartNumber 
FROM #Temp_INV)
-- *** SYNC ALLOCATED - FINISH
UPDATE tblCustomers 
SET decOpenOrders = ISNULL((SELECT ISNULL(SUM(DOC.decTotal), 0) 
FROM tblOrderDoc DOC
WHERE (DOC.strCustName = tblCustomers.strCustName)
AND (DOC.bitCleared = 0)
AND (DOC.intDocType = 1)), 0), 
decOpenOrdersF = ISNULL((SELECT ISNULL(SUM(DOC.decTotalF), 0) 
FROM tblOrderDoc DOC
WHERE (DOC.strCustName = tblCustomers.strCustName)
AND (DOC.bitCleared = 0)
AND (DOC.intDocType = 1)), 0)
DROP TABLE #Temp_DOC
DROP TABLE #Temp_HDR
DROP TABLE #Temp_DTL
DROP TABLE #Temp_EXT
DROP TABLE #Temp_INV
SELECT	@intHDRTotCount AS intHDRTotCount, @intHDRRecCount AS intHDRRecCount, @intDTLTotCount AS intDTLTotCount, @intDTLRecCount AS intDTLRecCount,
@intREVHDRRecCount AS intREVHDRRecCount, @intREVDTLRecCount AS intREVDTLRecCount
GO



/****** Object:  StoredProcedure [dbo].[prConv_VendorInvoiceHistory_Insert]    Script Date: 2021-02-02 ******/
----------------------------------------------------
CREATE PROCEDURE [dbo].[prConv_VendorInvoiceHistory_Insert]
(
	@Evo bit,
	@UserName nvarchar(20)
)		
AS

DECLARE @strCurrency nvarchar(3),
		@strCurrSymbol nvarchar(5),
		@strLocName nvarchar(10),
		@intHDRTotCount bigint = 0,
		@intHDRRecCount bigint = 0,
		@intDTLTotCount bigint = 0,
		@intDTLRecCount bigint = 0,
		@intPROJTotCount bigint = 0,
		@intPROJRecCount bigint = 0,
		@intREVHDRRecCount bigint = 0,
		@intREVDTLRecCount bigint = 0,
		@lngEntID bigint = 0
		
SELECT @strCurrency = strCurrency, @strCurrSymbol = strCurrSymbol FROM tblCurrency WHERE bitHome = 1

SELECT @strLocName = ISNULL(strLocName, '') FROM tblUsers WHERE strUserName = @UserName

IF ISNULL(@strLocName, '') = ''
BEGIN 

	SELECT @strLocName = ISNULL(strLocName, '') FROM tblInvLoc WHERE bitDefault = 1

END 

CREATE TABLE #Temp_DOC (
[InvPDocID] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[InvPDocID_New] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[IsDebitNote] [bit] NOT NULL,
[InvoiceID] [int] NULL,
[DocumentType] [smallint] NULL,
[lngID] [bigint] IDENTITY(1,1) NOT NULL)

CREATE TABLE #Temp_HDR (
[lngID] [bigint] IDENTITY(1,1) NOT NULL,
[strInvPDocID] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[dteSystemDate] [smalldatetime] NOT NULL,
[dteJournalDate] [smalldatetime] NOT NULL,
[dteRequired] [smalldatetime] NOT NULL,
[strVendName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strShipTo] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strVendInvNo] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decSubTotal] [money] NOT NULL,
[decVAT] [money] NOT NULL,
[decTotal] [money] NOT NULL,
[strNotes] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strCurrency] [nvarchar](3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[bitIsForeign] [bit] NOT NULL,
[decSubTotalF] [money] NOT NULL,
[decVATF] [money] NOT NULL,
[decTotalF] [money] NOT NULL,
[decExchange] [decimal](20, 6) NOT NULL,
[strTerm] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strSubFormated] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strVATFormatted] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strTotFormatted] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decDiscPerc] [money] NOT NULL,
[strDiscFormatted] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[lngEntID] [bigint] NULL)

CREATE TABLE #Temp_DTL (
[lngID] [bigint] IDENTITY(1,1) NOT NULL,
[strInvPDocID] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[intLineNo] [int] NOT NULL,
[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strLocation] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[strPartDesc] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decBuyQty] [money] NOT NULL,
[strBuyUnit] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decStockQty] [money] NOT NULL,
[strStockUnit] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[intType] [tinyint] NOT NULL,
[decPriceEaExc] [money] NOT NULL,
[decLineTotExc] [money] NOT NULL,
[decLineTaxAmt] [money] NOT NULL,
[strTaxCode] [nvarchar](2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decEaIncTax] [money] NOT NULL,
[decTotIncTax] [money] NOT NULL,
[strCurrency] [nvarchar](3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[bitIsForeign] [bit] NOT NULL,
[decPriceEaExcF] [money] NOT NULL,
[decLineTotExcF] [money] NOT NULL,
[decLineTaxAmtF] [money] NOT NULL,
[decEaIncTaxF] [money] NOT NULL,
[decTotIncTaxF] [money] NOT NULL,
[decLineDiscPerc] [money] NOT NULL,
[strProjNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL)

IF @Evo = 1
BEGIN

	INSERT INTO #Temp_DOC (InvPDocID, InvPDocID_New, IsDebitNote, InvoiceID)
	SELECT	SUBSTRING(CASE WHEN ISNULL(LTRIM(RTRIM(DocumentNumber)), '') = '' THEN LTRIM(RTRIM(OrderNumber)) ELSE LTRIM(RTRIM(DocumentNumber)) END, 1, 50) AS InvPDocID,
			SUBSTRING(CASE WHEN SUBSTRING(CASE WHEN ISNULL(LTRIM(RTRIM(DocumentNumber)), '') = '' THEN LTRIM(RTRIM(OrderNumber)) ELSE LTRIM(RTRIM(DocumentNumber)) END, 1, 2) = 'PI' 
						   THEN CASE WHEN ISNULL(LTRIM(RTRIM(DocumentNumber)), '') = '' THEN LTRIM(RTRIM(OrderNumber)) ELSE LTRIM(RTRIM(DocumentNumber)) END
						   ELSE 'PI' + CASE WHEN ISNULL(LTRIM(RTRIM(DocumentNumber)), '') = '' THEN LTRIM(RTRIM(OrderNumber)) ELSE LTRIM(RTRIM(DocumentNumber)) END
					  END, 1, 50) AS InvPDocID_New,
			0 AS IsDebitNote,
			InvoiceID
	FROM tblUtilityPervHistoryHeader
	WHERE (DocType = 'SInv')
	ORDER BY InvoiceID

	UPDATE #Temp_DOC
	SET InvPDocID_New = CASE WHEN Z.lngDuplicate = 1 THEN #Temp_DOC.InvPDocID_New ELSE SUBSTRING(#Temp_DOC.InvPDocID_New, 1, (50 - LEN('_' + CAST(Z.lngDuplicate AS nvarchar)))) + '_' + CAST(Z.lngDuplicate AS nvarchar) END
	FROM (SELECT lngID,
				 ROW_NUMBER() OVER(PARTITION BY #Temp_DOC.InvPDocID_New ORDER BY #Temp_DOC.lngID ASC) AS lngDuplicate
		  FROM #Temp_DOC) Z
	WHERE (#Temp_DOC.lngID = Z.lngID)

	DELETE FROM #Temp_DOC
	WHERE LEN(InvPDocID) = 0
	
	SELECT @intHDRTotCount = COUNT(InvPDocID_New)
	FROM #Temp_DOC

	SELECT @intDTLTotCount = COUNT(HL.DocumentNumber)
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryLines HL ON TMP.InvoiceID = HL.iinvoiceid 

	SELECT @intPROJTotCount = COUNT(HL.DocumentNumber)
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryLines HL ON TMP.InvoiceID = HL.iinvoiceid 
	WHERE ISNULL(HL.CostCode, '') <> ''

	DELETE FROM #Temp_DOC
	WHERE InvPDocID_New IN (SELECT TMP.InvPDocID_New 
							FROM #Temp_DOC TMP
							INNER JOIN tblInvoiceDocP DOC ON TMP.InvPDocID_New = DOC.strInvPDocID)

	INSERT INTO #Temp_HDR (strInvPDocID, dteSystemDate, dteJournalDate, dteRequired, strVendName, strShipTo, strVendInvNo, decSubTotal, decVAT, decTotal, strNotes, 
						  strCurrency, bitIsForeign, decSubTotalF, decVATF, decTotalF, decExchange, strTerm, strSubFormated, strVATFormatted, strTotFormatted, 
						  decDiscPerc, strDiscFormatted)
	SELECT	TMP.InvPDocID_New AS strInvPDocID,
			HH.DocumentDate AS dteSystemDate, 
			HH.DocumentDate AS dteJournalDate, 
			HH.DocumentDate AS dteRequired,
			SUBSTRING(HH.CustomerCode, 1, 50) AS strVendName,
			SUBSTRING(CASE WHEN LEN(LTRIM(RTRIM(VEND.strVendDesc))) > 0 THEN LTRIM(RTRIM(VEND.strVendDesc)) + Char(13) + Char(10) ELSE '' END
					+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strStreet1))) > 0 THEN LTRIM(RTRIM(VEND.strStreet1)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strStreet2))) > 0 THEN LTRIM(RTRIM(VEND.strStreet2)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strCity))) > 0 THEN LTRIM(RTRIM(VEND.strCity)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strProvince))) > 0 THEN LTRIM(RTRIM(VEND.strProvince)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strPostal))) > 0 THEN LTRIM(RTRIM(VEND.strPostal)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strCountry))) > 0 THEN Char(13) + Char(10) + LTRIM(RTRIM(VEND.strCountry)) ELSE '' END, 1, 500) AS strShipTo,
			SUBSTRING(LTRIM(RTRIM(HH.OrderNumber)), 1, 50) AS strVendInvNo,
			CASE WHEN TMP.IsDebitNote = 1 THEN HH.Total * -1 ELSE HH.Total END AS decSubTotal,
			CASE WHEN TMP.IsDebitNote = 1 THEN HH.TotalTax * -1 ELSE HH.TotalTax END AS decVAT,
			CASE WHEN TMP.IsDebitNote = 1 THEN HH.InvTotIncl * -1 ELSE HH.InvTotIncl END AS decTotal,
			SUBSTRING(LTRIM(RTRIM(HH.Message01)) + LTRIM(RTRIM(HH.Message02)) + LTRIM(RTRIM(HH.Message03)), 1, 500) AS strNotes,
			CASE WHEN CUR.strCurrency IS NULL THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
			CASE WHEN CUR.strCurrency IS NULL THEN 0 ELSE 1 END AS bitIsForeign,
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE CASE WHEN TMP.IsDebitNote = 1 THEN HH.FCurrTotal * -1 ELSE HH.FCurrTotal END END AS decSubTotalF,
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE CASE WHEN TMP.IsDebitNote = 1 THEN HH.FCurrTotalTax * -1 ELSE HH.FCurrTotalTax END END AS decVATF,
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE CASE WHEN TMP.IsDebitNote = 1 THEN HH.fInvTotInclForeign * -1 ELSE HH.fInvTotInclForeign END END AS decTotalF,
			CASE WHEN CUR.strCurrency IS NULL THEN 1.00 ELSE HH.ExchangeRate END AS decExchange,
			VEND.strTerm AS strTerm,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CUR.strCurrency IS NULL THEN CASE WHEN TMP.IsDebitNote = 1 THEN HH.Total * -1 ELSE HH.Total END ELSE CASE WHEN TMP.IsDebitNote = 1 THEN HH.FCurrTotal * -1 ELSE HH.FCurrTotal END END AS nvarchar(50)) AS strSubFormated,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CUR.strCurrency IS NULL THEN CASE WHEN TMP.IsDebitNote = 1 THEN HH.TotalTax * -1 ELSE HH.TotalTax END ELSE CASE WHEN TMP.IsDebitNote = 1 THEN HH.FCurrTotalTax * -1 ELSE HH.FCurrTotalTax END END AS nvarchar(50)) AS strVATFormatted,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CUR.strCurrency IS NULL THEN CASE WHEN TMP.IsDebitNote = 1 THEN HH.InvTotIncl * -1 ELSE HH.InvTotIncl END ELSE CASE WHEN TMP.IsDebitNote = 1 THEN HH.fInvTotInclForeign * -1 ELSE HH.fInvTotInclForeign END END AS nvarchar(50)) AS strTotFormatted,
			HH.DiscountPercent AS decDiscPerc,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' 0.00' AS strDiscFormatted
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryHeader HH ON TMP.InvoiceID = HH.InvoiceID 
	INNER JOIN tblVendors VEND ON HH.CustomerCode = VEND.strVendName 
	LEFT JOIN tblUtilityCurrency CUR ON HH.CurrencyCode = CUR.strPPCurrency 
	ORDER BY TMP.lngID 

	INSERT INTO #Temp_DTL (strInvPDocID, intLineNo, strPartNumber, strLocation, strPartDesc, decBuyQty, strBuyUnit, decStockQty, strStockUnit, intType, 
						   decPriceEaExc, decLineTotExc, decLineTaxAmt, strTaxCode, decEaIncTax, decTotIncTax, strCurrency, bitIsForeign, 
						   decPriceEaExcF, decLineTotExcF, decLineTaxAmtF, decEaIncTaxF, decTotIncTaxF, decLineDiscPerc, strProjNumber)
	SELECT	TMP.InvPDocID_New AS strInvPDocID,
			ROW_NUMBER() OVER(PARTITION BY TMP.InvPDocID_New ORDER BY HL.ItemCode ASC) AS intLineNo,
			CASE WHEN ISNULL(SUBSTRING(CASE WHEN HL.SearchType = 6 THEN LTRIM(RTRIM(REPLACE(REPLACE(ItemCode, '>', ''), '/', ''))) ELSE LTRIM(RTRIM(HL.ItemCode)) END, 1, 50), '') = ''
				 THEN CASE WHEN HL.Physical = 0
						   THEN '<<BLANK-SERV>>'
						   ELSE '<<BLANK-ITEM>>'
					  END
				 ELSE SUBSTRING(CASE WHEN HL.SearchType = 6 THEN LTRIM(RTRIM(REPLACE(REPLACE(ItemCode, '>', ''), '/', ''))) ELSE LTRIM(RTRIM(HL.ItemCode)) END, 1, 50)
			END AS strPartNumber,
			CASE WHEN ISNULL(LTRIM(RTRIM(HL.MultiStore)), '') = '' THEN @strLocName ELSE SUBSTRING(LTRIM(RTRIM(HL.MultiStore)), 1, 10) END AS strLocation,
			SUBSTRING(LTRIM(RTRIM(HL.[Description])), 1, 500) AS strPartDesc,
			CASE WHEN TMP.IsDebitNote = 1 
				 THEN CASE WHEN HL.Qty > 0 THEN HL.Qty * -1 ELSE HL.Qty END
				 ELSE CASE WHEN HL.Qty < 0 THEN HL.Qty * -1 ELSE HL.Qty END 
			END AS decBuyQty,
			CASE WHEN LTRIM(RTRIM(ISNULL(HL.UnitUsed, ''))) = '' THEN 'EA' ELSE SUBSTRING(LTRIM(RTRIM(HL.UnitUsed)), 1, 15) END AS strBuyUnit,
			CASE WHEN TMP.IsDebitNote = 1 
				 THEN CASE WHEN HL.Qty > 0 THEN HL.Qty * -1 ELSE HL.Qty END
				 ELSE CASE WHEN HL.Qty < 0 THEN HL.Qty * -1 ELSE HL.Qty END 
			END AS decStockQty,
			CASE WHEN LTRIM(RTRIM(ISNULL(HL.UnitUsed, ''))) = '' THEN 'EA' ELSE SUBSTRING(LTRIM(RTRIM(HL.UnitUsed)), 1, 15) END AS strStockUnit,
			CASE WHEN HL.Physical = 0 THEN 4 ELSE 1 END AS intType,
			HL.UnitPrice AS decPriceEaExc,
			CASE WHEN TMP.IsDebitNote = 1
				 THEN CASE WHEN HL.fQuantityLineTotIncl > 0 THEN HL.fQuantityLineTotIncl * -1 ELSE HL.fQuantityLineTotIncl END
				 ELSE CASE WHEN HL.fQuantityLineTotIncl < 0 THEN HL.fQuantityLineTotIncl * -1 ELSE HL.fQuantityLineTotIncl END
			END AS decLineTotExc,
			CASE WHEN TMP.IsDebitNote = 1
				 THEN CASE WHEN HL.TaxAmt > 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END
				 ELSE CASE WHEN HL.TaxAmt < 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END
			END AS decLineTaxAmt,
			ISNULL(TAX.strTaxCodePurchases, VEND.strTaxCode) AS strTaxCode, 
			HL.UnitPrice AS decEaIncTax, 
			CASE WHEN TMP.IsDebitNote = 1
				 THEN CASE WHEN HL.fQuantityLineTotIncl > 0 THEN HL.fQuantityLineTotIncl * -1 ELSE HL.fQuantityLineTotIncl END
				 ELSE CASE WHEN HL.fQuantityLineTotIncl < 0 THEN HL.fQuantityLineTotIncl * -1 ELSE HL.fQuantityLineTotIncl END
			END AS decTotIncTax, 
			CASE WHEN CUR.strCurrency IS NULL THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
			CASE WHEN CUR.strCurrency IS NULL THEN 0 ELSE 1 END AS bitIsForeign,
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE HL.FCurrUnitPrice END AS decPriceEaExcF,
			CASE WHEN CUR.strCurrency IS NULL 
				 THEN 0.00 
				 ELSE CASE WHEN TMP.IsDebitNote = 1
						   THEN CASE WHEN HL.fQuantityLineTotInclForeign > 0 THEN HL.fQuantityLineTotInclForeign * -1 ELSE HL.fQuantityLineTotInclForeign END
						   ELSE CASE WHEN HL.fQuantityLineTotInclForeign < 0 THEN HL.fQuantityLineTotInclForeign * -1 ELSE HL.fQuantityLineTotInclForeign END
					  END 
			END AS decLineTotExcF,
			CASE WHEN CUR.strCurrency IS NULL 
				 THEN 0.00 
				 ELSE CASE WHEN TMP.IsDebitNote = 1
						   THEN CASE WHEN HL.FCurrTaxAmount > 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END
						   ELSE CASE WHEN HL.FCurrTaxAmount < 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END
					  END 
			END AS decLineTaxAmtF, 
			CASE WHEN CUR.strCurrency IS NULL THEN 0.00 ELSE HL.FCurrUnitPrice END AS decEaIncTaxF, 
			CASE WHEN CUR.strCurrency IS NULL 
				 THEN 0.00 
				 ELSE CASE WHEN TMP.IsDebitNote = 1
						   THEN CASE WHEN HL.fQuantityLineTotInclForeign > 0 THEN HL.fQuantityLineTotInclForeign * -1 ELSE HL.fQuantityLineTotInclForeign END
						   ELSE CASE WHEN HL.fQuantityLineTotInclForeign < 0 THEN HL.fQuantityLineTotInclForeign * -1 ELSE HL.fQuantityLineTotInclForeign END
					  END 
			END AS decTotIncTaxF, 
			HL.DiscountPercentage AS decLineDiscPerc, 
			ISNULL(HL.CostCode, '') AS strProjNumber
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryLines HL ON TMP.InvoiceID = HL.iinvoiceid  
	INNER JOIN tblUtilityPervHistoryHeader HH ON HL.iinvoiceid = HH.InvoiceID 
	INNER JOIN tblVendors VEND ON HH.CustomerCode = VEND.strVendName 
	LEFT JOIN tblUtilityTaxCodesMap TAX ON HL.TaxCode = TAX.strTaxCode
	LEFT JOIN tblUtilityCurrency CUR ON HH.CurrencyCode = CUR.strPPCurrency 
	ORDER BY HL.LinkNum

END
ELSE
BEGIN

	INSERT INTO #Temp_DOC (InvPDocID, InvPDocID_New, IsDebitNote, DocumentType)
	SELECT	DISTINCT
			DocumentNumber AS InvPDocID,
			SUBSTRING(CASE WHEN DocumentType = 9
						   THEN CASE WHEN SUBSTRING(LTRIM(RTRIM(DocumentNumber)), 1, 2) = 'DN' 
									 THEN LTRIM(RTRIM(DocumentNumber))
									 ELSE 'DN' + LTRIM(RTRIM(DocumentNumber))
								END
						   ELSE CASE WHEN SUBSTRING(LTRIM(RTRIM(DocumentNumber)), 1, 2) = 'PI' 
									 THEN LTRIM(RTRIM(DocumentNumber))
									 ELSE 'PI' + LTRIM(RTRIM(DocumentNumber))
								END
					  END, 1, 50) AS InvPDocID_New,
			CASE WHEN DocumentType = 9
				 THEN 1 
				 ELSE 0 
			END AS IsDebitNote,
			DocumentType
	FROM tblUtilityPervHistoryHeader
	WHERE DocumentType IN (8, 9) 

	SELECT @intHDRTotCount = COUNT(InvPDocID_New)
	FROM #Temp_DOC

	SELECT @intDTLTotCount = COUNT(HL.DocumentNumber)
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryLines HL ON TMP.InvPDocID = HL.DocumentNumber 

	SELECT @intPROJTotCount = COUNT(HL.DocumentNumber)
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryLines HL ON TMP.InvPDocID = HL.DocumentNumber 
	WHERE ISNULL(HL.CostCode, '') <> ''

	DELETE FROM #Temp_DOC
	WHERE InvPDocID_New IN (SELECT TMP.InvPDocID_New 
							FROM #Temp_DOC TMP
							INNER JOIN tblInvoiceDocP DOC ON TMP.InvPDocID_New = DOC.strInvPDocID)

	INSERT INTO #Temp_HDR (strInvPDocID, dteSystemDate, dteJournalDate, dteRequired, strVendName, strShipTo, strVendInvNo, decSubTotal, decVAT, decTotal, strNotes, 
						  strCurrency, bitIsForeign, decSubTotalF, decVATF, decTotalF, decExchange, strTerm, strSubFormated, strVATFormatted, strTotFormatted, 
						  decDiscPerc, strDiscFormatted)
	SELECT	DISTINCT
			TMP.InvPDocID_New AS strInvPDocID,
			HH.DocumentDate AS dteSystemDate, 
			HH.DocumentDate AS dteJournalDate, 
			HH.DocumentDate AS dteRequired,
			SUBSTRING(HH.CustomerCode, 1, 50) AS strVendName,
			SUBSTRING(CASE WHEN LEN(LTRIM(RTRIM(VEND.strVendDesc))) > 0 THEN LTRIM(RTRIM(VEND.strVendDesc)) + Char(13) + Char(10) ELSE '' END
					+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strStreet1))) > 0 THEN LTRIM(RTRIM(VEND.strStreet1)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strStreet2))) > 0 THEN LTRIM(RTRIM(VEND.strStreet2)) + Char(13) + Char(10) ELSE '' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strCity))) > 0 THEN LTRIM(RTRIM(VEND.strCity)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strProvince))) > 0 THEN LTRIM(RTRIM(VEND.strProvince)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strPostal))) > 0 THEN LTRIM(RTRIM(VEND.strPostal)) ELSE '  ' END 
					+ CASE WHEN LEN(LTRIM(RTRIM(VEND.strCountry))) > 0 THEN Char(13) + Char(10) + LTRIM(RTRIM(VEND.strCountry)) ELSE '' END, 1, 500) AS strShipTo,
			SUBSTRING(LTRIM(RTRIM(HH.OrderNumber)), 1, 50) AS strVendInvNo,
			CASE WHEN TMP.IsDebitNote = 1 THEN HH.Total * -1 ELSE HH.Total END AS decSubTotal,
			CASE WHEN TMP.IsDebitNote = 1 THEN HH.TotalTax * -1 ELSE HH.TotalTax END AS decVAT,
			CASE WHEN TMP.IsDebitNote = 1 THEN (HH.Total + HH.TotalTax) * -1 ELSE HH.Total + HH.TotalTax END AS decTotal,
			SUBSTRING(LTRIM(RTRIM(HH.Message01)) + LTRIM(RTRIM(HH.Message02)) + LTRIM(RTRIM(HH.Message03)), 1, 500) AS strNotes,
			CASE WHEN CURH.bitHome = 1 THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
			CASE WHEN CURH.bitHome = 1 THEN 0 ELSE 1 END AS bitIsForeign,
			CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE CASE WHEN TMP.IsDebitNote = 1 THEN HH.FCurrTotal * -1 ELSE HH.FCurrTotal END END AS decSubTotalF,
			CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE CASE WHEN TMP.IsDebitNote = 1 THEN HH.FCurrTotalTax * -1 ELSE HH.FCurrTotalTax END END AS decVATF,
			CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE CASE WHEN TMP.IsDebitNote = 1 THEN (HH.FCurrTotal + HH.FCurrTotalTax) * -1 ELSE HH.FCurrTotal + HH.FCurrTotalTax END END AS decTotalF,
			CASE WHEN CURH.bitHome = 1 THEN 1.00 ELSE HH.ExchangeRate END AS decExchange,
			CASE WHEN TERM.strTerm IS NULL THEN VEND.strTerm ELSE TERM.strTerm END AS strTerm,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CURH.bitHome = 1 THEN CASE WHEN TMP.IsDebitNote = 1 THEN HH.Total * -1 ELSE HH.Total END ELSE CASE WHEN TMP.IsDebitNote = 1 THEN HH.FCurrTotal * -1 ELSE HH.FCurrTotal END END AS nvarchar(50)) AS strSubFormated,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CURH.bitHome = 1 THEN CASE WHEN TMP.IsDebitNote = 1 THEN HH.TotalTax * -1 ELSE HH.TotalTax END ELSE CASE WHEN TMP.IsDebitNote = 1 THEN HH.FCurrTotalTax * -1 ELSE HH.FCurrTotalTax END END AS nvarchar(50)) AS strVATFormatted,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' ' + CAST(CASE WHEN CURH.bitHome = 1 THEN CASE WHEN TMP.IsDebitNote = 1 THEN (HH.Total + HH.TotalTax) * -1 ELSE (HH.Total + HH.TotalTax) END ELSE CASE WHEN TMP.IsDebitNote = 1 THEN (HH.FCurrTotal + HH.FCurrTotalTax) * -1 ELSE (HH.FCurrTotal + HH.FCurrTotalTax) END END AS nvarchar(50)) AS strTotFormatted,
			HH.DiscountPercent AS decDiscPerc,
			ISNULL((SELECT C1.strCurrSymbol FROM tblCurrency C1 WHERE C1.strCurrency = CUR.strCurrency), @strCurrSymbol) + ' 0.00' AS strDiscFormatted
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryHeader HH ON TMP.InvPDocID = HH.DocumentNumber AND TMP.DocumentType = HH.DocumentType  
	INNER JOIN tblVendors VEND ON HH.CustomerCode = VEND.strVendName 
	LEFT JOIN tblUtilityCurrency CUR ON HH.CurrencyCode = CUR.strPPCurrency 
	LEFT JOIN tblCurrency CURH ON VEND.strCurrency = CURH.strCurrency 
	LEFT JOIN tblUtilityTerms TERM ON HH.Terms = TERM.strPPTerm 
	WHERE HH.DocumentType IN (8, 9) 

	INSERT INTO #Temp_DTL (strInvPDocID, intLineNo, strPartNumber, strLocation, strPartDesc, decBuyQty, strBuyUnit, decStockQty, strStockUnit, intType, 
						   decPriceEaExc, decLineTotExc, decLineTaxAmt, strTaxCode, decEaIncTax, decTotIncTax, strCurrency, bitIsForeign, 
						   decPriceEaExcF, decLineTotExcF, decLineTaxAmtF, decEaIncTaxF, decTotIncTaxF, decLineDiscPerc, strProjNumber)
	SELECT	DISTINCT
			TMP.InvPDocID_New AS strInvPDocID,
			ROW_NUMBER() OVER(PARTITION BY TMP.InvPDocID_New ORDER BY HL.ItemCode ASC) AS intLineNo,
			CASE WHEN ISNULL(SUBSTRING(LTRIM(RTRIM(HL.ItemCode)), 1, 50), '') = ''
				 THEN CASE WHEN HL.Physical = 0
						   THEN '<<BLANK-SERV>>'
						   ELSE '<<BLANK-ITEM>>'
					  END
				 ELSE SUBSTRING(LTRIM(RTRIM(HL.ItemCode)), 1, 50)
			END AS strPartNumber,
			CASE WHEN ISNULL(LTRIM(RTRIM(HL.MultiStore)), '') = '' THEN @strLocName ELSE SUBSTRING(LTRIM(RTRIM(HL.MultiStore)), 1, 10) END AS strLocation,
			SUBSTRING(LTRIM(RTRIM(HL.[Description])), 1, 500) AS strPartDesc,
			CASE WHEN TMP.IsDebitNote = 1 
				 THEN CASE WHEN HL.Qty > 0 THEN HL.Qty * -1 ELSE HL.Qty END
				 ELSE CASE WHEN HL.Qty < 0 THEN HL.Qty * -1 ELSE HL.Qty END 
			END AS decBuyQty,
			CASE WHEN LTRIM(RTRIM(ISNULL(HL.UnitUsed, ''))) = '' THEN 'EA' ELSE SUBSTRING(LTRIM(RTRIM(HL.UnitUsed)), 1, 15) END AS strBuyUnit,
			CASE WHEN TMP.IsDebitNote = 1 
				 THEN CASE WHEN HL.Qty > 0 THEN HL.Qty * -1 ELSE HL.Qty END
				 ELSE CASE WHEN HL.Qty < 0 THEN HL.Qty * -1 ELSE HL.Qty END 
			END AS decStockQty,
			CASE WHEN LTRIM(RTRIM(ISNULL(HL.UnitUsed, ''))) = '' THEN 'EA' ELSE SUBSTRING(LTRIM(RTRIM(HL.UnitUsed)), 1, 15) END AS strStockUnit,
			CASE WHEN HL.Physical = 0 THEN 4 ELSE 1 END AS intType,
			CASE WHEN HL.UnitPrice < 0 THEN HL.UnitPrice * -1 ELSE HL.UnitPrice END AS decPriceEaExc,
			CASE WHEN TMP.IsDebitNote = 1
				 THEN CASE WHEN HL.DiscountAmount > 0 THEN HL.DiscountAmount * -1 ELSE HL.DiscountAmount END
				 ELSE CASE WHEN HL.DiscountAmount < 0 THEN HL.DiscountAmount * -1 ELSE HL.DiscountAmount END
			END AS decLineTotExc,
			CASE WHEN TMP.IsDebitNote = 1
				 THEN CASE WHEN HL.TaxAmt > 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END
				 ELSE CASE WHEN HL.TaxAmt < 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END
			END AS decLineTaxAmt,
			TAX.strTaxCodePurchases AS strTaxCode, 
			CASE WHEN HL.InclusivePrice < 0 THEN HL.InclusivePrice * -1 ELSE HL.InclusivePrice END AS decEaIncTax,
			CASE WHEN TMP.IsDebitNote = 1
				 THEN CASE WHEN HL.DiscountAmount > 0 THEN HL.DiscountAmount * -1 ELSE HL.DiscountAmount END
				 ELSE CASE WHEN HL.DiscountAmount < 0 THEN HL.DiscountAmount * -1 ELSE HL.DiscountAmount END
			END + CASE WHEN TMP.IsDebitNote = 1 
					   THEN CASE WHEN HL.TaxAmt > 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END
					   ELSE CASE WHEN HL.TaxAmt < 0 THEN HL.TaxAmt * -1 ELSE HL.TaxAmt END
				  END AS decTotIncTax, 
			CASE WHEN CURH.bitHome = 1 THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
			CASE WHEN CURH.bitHome = 1 THEN 0 ELSE 1 END AS bitIsForeign,
			CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE CASE WHEN HL.FCurrUnitPrice < 0 THEN HL.FCurrUnitPrice * -1 ELSE HL.FCurrUnitPrice END END AS decPriceEaExcF,
			CASE WHEN TMP.IsDebitNote = 1
				 THEN CASE WHEN HL.FCDiscountAmount > 0 THEN HL.FCDiscountAmount * -1 ELSE HL.FCDiscountAmount END
				 ELSE CASE WHEN HL.FCDiscountAmount < 0 THEN HL.FCDiscountAmount * -1 ELSE HL.FCDiscountAmount END
			END AS decLineTotExcF,
			CASE WHEN TMP.IsDebitNote = 1
				 THEN CASE WHEN HL.FCurrTaxAmount > 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END
				 ELSE CASE WHEN HL.FCurrTaxAmount < 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END
			END AS decLineTaxAmtF, 
			CASE WHEN CURH.bitHome = 1 THEN 0.00 ELSE CASE WHEN HL.FCurrInclPrice < 0 THEN HL.FCurrInclPrice * -1 ELSE HL.FCurrInclPrice END END AS decEaIncTaxF,
			CASE WHEN TMP.IsDebitNote = 1
				 THEN CASE WHEN HL.FCDiscountAmount > 0 THEN HL.FCDiscountAmount * -1 ELSE HL.FCDiscountAmount END
				 ELSE CASE WHEN HL.FCDiscountAmount < 0 THEN HL.FCDiscountAmount * -1 ELSE HL.FCDiscountAmount END
			END + CASE WHEN TMP.IsDebitNote = 1 
					   THEN CASE WHEN HL.FCurrTaxAmount > 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END
					   ELSE CASE WHEN HL.FCurrTaxAmount < 0 THEN HL.FCurrTaxAmount * -1 ELSE HL.FCurrTaxAmount END
				  END AS decTotIncTaxF, 
			(HL.DiscountPercentage / 100) AS decLineDiscPerc,
			HL.CostCode AS strProjNumber
	FROM #Temp_DOC TMP
	INNER JOIN tblUtilityPervHistoryLines HL ON TMP.InvPDocID = HL.DocumentNumber AND TMP.DocumentType = HL.DocumentType 
	INNER JOIN tblUtilityPervHistoryHeader HH ON HL.DocumentNumber = HH.DocumentNumber AND HL.DocumentType = HH.DocumentType 
	INNER JOIN tblVendors VEND ON HH.CustomerCode = VEND.strVendName 
	INNER JOIN tblUtilityTaxCodesMap TAX ON CAST(HL.TaxType AS nvarchar(15)) = TAX.strTaxCode
	LEFT JOIN tblUtilityCurrency CUR ON HH.CurrencyCode = CUR.strPPCurrency 
	LEFT JOIN tblCurrency CURH ON VEND.strCurrency = CURH.strCurrency 
	WHERE (HL.SearchType IN (4, 6, 7))
	AND (LTRIM(RTRIM(HL.ItemCode)) <> '''')

END

UPDATE #Temp_HDR
SET strVendInvNo = CASE WHEN Z.lngDuplicate = 1 THEN #Temp_HDR.strVendInvNo ELSE SUBSTRING(#Temp_HDR.strVendInvNo, 1, (50 - LEN(' #' + CAST(Z.lngDuplicate AS nvarchar)))) + ' #' + CAST(Z.lngDuplicate AS nvarchar) END
FROM (SELECT lngID,
			 ROW_NUMBER() OVER(PARTITION BY #Temp_HDR.strVendInvNo ORDER BY #Temp_HDR.lngID ASC) AS lngDuplicate
	  FROM #Temp_HDR) Z
WHERE (#Temp_HDR.lngID = Z.lngID)

INSERT INTO tblInvoiceDocP (strInvPDocID, lngInvTrackID, lngJourID, dteSystemDate, dteJournalDate, dteRequired, strUserName, strVendName, strShipTo, strVendInvNo, 
							decSubTotal, decVAT, decTotal, bitFromPO, strOrdPDocID, strSourceMOP, bitHistoryTrans, strNotes, bitPrinted, bitEmailed, intPaidBy, 
							intAccount, strCurrency, bitIsForeign, decSubTotalF, decVATF, decTotalF, decExchange, strTerm, intDept, strField1, strField2, strField3, 
							strField4, strField5, strField6, strField7, strField8, strField9, strField10, strField11, strField12, strSubFormated, strVATFormatted, 
							strTotFormatted, decDiscPerc, decDiscAmt, decDiscAmtF, strDiscFormatted, strOrdFQDocID, bitFQConvert, bitSOCopy, bitSOCopyMulti, 
							strStatusTypeCode, bitBookmark, strAddInfo, strReference, strPaidBy, decNetItemWeight, decNetVolumetricWeight, intRevisionNumber, 
							intAccrualProcess, strBuyerName)
SELECT	strInvPDocID,
		NULL AS lngInvTrackID,
		NULL AS lngJourID,
		dteSystemDate, 
		dteJournalDate, 
		dteRequired,
		@UserName AS strUserName,
		strVendName, 
		strShipTo, 
		strVendInvNo,
		decSubTotal, 
		decVAT, 
		decTotal, 
		0 AS bitFromPO,
		NULL AS strOrdPDocID,
		'' AS strSourceMOP,
		0 AS bitHistoryTrans,
		strNotes,
		1 AS bitPrinted,
		1 AS bitEmailed,
		0 AS intPaidBy,
		NULL AS intAccount,
		strCurrency,
		bitIsForeign,
		decSubTotalF,
		decVATF,
		decTotalF,
		decExchange,
		strTerm,
		NULL AS intDept,
		'' AS strField1,
		'' AS strField2,
		'' AS strField3,
		'' AS strField4,
		'' AS strField5,
		'' AS strField6,
		'' AS strField7,
		'' AS strField8,
		'' AS strField9,
		'' AS strField10,
		'' AS strField11,
		'' AS strField12,
		strSubFormated,
		strVATFormatted,
		strTotFormatted,
		decDiscPerc, 
		0.00 AS decDiscAmt,
		0.00 AS decDiscAmtF,
		strDiscFormatted, 
		NULL AS strOrdFQDocID,
		0 AS bitFQConvert, 
		0 AS bitSOCopy, 
		0 AS bitSOCopyMulti,
		NULL AS strStatusTypeCode,
		0 AS bitBookmark,
		'' AS strAddInfo,
		'' AS strReference, 
		'On Account' AS strPaidBy,
		0.00 AS decNetItemWeight, 
		0.00 AS decNetVolumetricWeight, 
		1 AS intRevisionNumber,
		1 AS intAccrualProcess, 
		'' AS strBuyerName
FROM #Temp_HDR
ORDER BY lngID 

SELECT @intHDRRecCount = @@ROWCOUNT

INSERT INTO tblInvoiceDocPDT (strInvPDocID, intLineNo, strPartNumber, strLocation, strPartDesc, decBuyQty, strBuyUnit, decStockQty, strStockUnit, intType, 
							  decPriceEaExc, decLineTotExc, decLineTaxAmt, strTaxCode, decEaIncTax, decTotIncTax, imgTaxObj, strCurrency, bitIsForeign, 
							  decPriceEaExcF, decLineTotExcF, decLineTaxAmtF, decEaIncTaxF, decTotIncTaxF, strInvField1, strInvField2, strInvField3, 
							  strInvField4, strInvField5, strInvField6, strLineField1, strLineField2, strLineField3, strLineField4, strLineField5, 
							  strLineField6, strLineField7, strLineField8, strLineField9, strLineField10, strLineField11, strLineField12, decLineDiscPerc, 
							  decLineDiscAmt, decLineDiscAmtF, bitDiscountTax, strOrdSODocID, strPartExtendedDesc, decItemWeight, decVolumetricWeight, 
							  uidTransactionFieldID, bitFrom, strOrdPGDocID, intOrdPGDocItemLineNo)
SELECT	strInvPDocID, 
		intLineNo, 
		strPartNumber, 
		strLocation, 
		strPartDesc, 
		decBuyQty, 
		strBuyUnit, 
		decStockQty, 
		strStockUnit, 
		intType, 
		decPriceEaExc, 
		decLineTotExc, 
		decLineTaxAmt, 
		strTaxCode, 
		decEaIncTax, 
		decTotIncTax, 
		NULL AS imgTaxObj, 
		strCurrency, 
		bitIsForeign, 
		decPriceEaExcF, 
		decLineTotExcF, 
		decLineTaxAmtF, 
		decEaIncTaxF, 
		decTotIncTaxF, 
		'' AS strInvField1, 
		'' AS strInvField2, 
		'' AS strInvField3, 
		'' AS strInvField4, 
		'' AS strInvField5, 
		'' AS strInvField6,
		'' AS strLineField1, 
		'' AS strLineField2, 
		'' AS strLineField3, 
		'' AS strLineField4, 
		'' AS strLineField5, 
		'' AS strLineField6, 
		'' AS strLineField7, 
		'' AS strLineField8,
		'' AS strLineField9, 
		'' AS strLineField10, 
		'' AS strLineField11, 
		'' AS strLineField12, 
		decLineDiscPerc, 
		0.00 AS decLineDiscAmt, 
		0.00 AS decLineDiscAmtF, 
		0 AS bitDiscountTax, 
		NULL AS strOrdSODocID, 
		'' AS strPartExtendedDesc, 
		0.00 AS decItemWeight, 
		0.00 AS decVolumetricWeight, 
		NEWID() AS uidTransactionFieldID, 
		0 AS bitFrom, 
		NULL AS strOrdPGDocID,
		NULL AS intOrdPGDocItemLineNo
FROM #Temp_DTL
ORDER BY lngID

SELECT @intDTLRecCount = @@ROWCOUNT

IF EXISTS (SELECT TOP 1 strInvPDocID FROM #Temp_DTL WHERE strProjNumber <> '')
BEGIN

	INSERT INTO tblInvoiceDocPDTPrj (strInvPDocID, intLineNo, strProjNumber, strStage) 
	SELECT	DTL.strInvPDocID,
			DTL.intLineNo,
			DTL.strProjNumber,
			'' AS strStage
	FROM #Temp_DTL DTL
	INNER JOIN tblProjects PROJ ON DTL.strProjNumber = PROJ.strProjNumber 
	WHERE DTL.strProjNumber <> ''
	ORDER BY DTL.lngID

	SELECT @intPROJRecCount = @@ROWCOUNT 

END

IF NOT EXISTS (SELECT TOP 1 lngEntID FROM tblInvoiceDocRev)
BEGIN

	UPDATE #Temp_HDR 
	SET lngEntID = lngID 

END
ELSE
BEGIN

	SELECT @lngEntID = MAX(lngEntID) FROM tblInvoiceDocREV

	UPDATE #Temp_HDR 
	SET lngEntID = lngID + @lngEntID

END

INSERT INTO tblInvoiceDocREV (lngEntID, strInvDocID, lngInvTrackID, lngJourID, dteSystemDate, dteJournalDate, dteRequired, strUserName, strCustName, strSoldTo, 
							  strShipTo, strReference, decSubTotal, decVAT, decTotal, bitFromSO, strOrdDocID, bitHistoryTrans, strNotes, bitPrinted, bitEmailed, 
							  intPaidBy, intAccount, strSalesName, strAddInfo, bitReserved, strCurrency, bitIsForeign, decSubTotalF, decVATF, decTotalF, decExchange, 
							  strTerm, intDept, strField1, strField2, strField3, strField4, strField5, strField6, strField7, strField8, strField9, strField10, strField11, 
							  strField12, strSubFormated, strVATFormatted, strTotFormatted, dteField13, dteField14, decDiscPerc, decDiscAmt, decDiscAmtF, strDiscFormatted, 
							  strOrdFQDocID, strStatusTypeCode, strCNReasonCode, bitBookmark, dteSystemDateTime, strPaidBy, intSentDoc, strVAT, strDelMethodCode, 
							  decTotalWeight, decTotalVolWeight, intRevisionNumber, dteRevisionDate, strUserCreated, bitIsRepair, strVendName, strBoughtFrom, bitFQConvert, 
							  bitSOCopy, bitSOCopyMulti, strVendInvNo, bitFromPO, decNetItemWeight, decNetVolumetricWeight, strSourceMOP, bitCleared, strOrdRFQDocID, 
							  bitRFQConvert, strOrdPDocID, intModule, strSOReasonCode, strDelNoteNo, strContractTo, strContBillType, blnAllowAnnualIncrease, 
							  intContractPriceIncrease, dtpIncreaseStartDate, bitInactive, strStoreNumber, strEDI) 
SELECT	HDR.lngEntID, 
		HDR.strInvPDocID AS strInvDocID, 
		NULL AS lngInvTrackID,
		NULL AS lngJourID,
		HDR.dteSystemDate, 
		HDR.dteJournalDate, 
		HDR.dteRequired, 
		@UserName AS strUserName,
		NULL AS strCustName, 
		NULL AS strSoldTo, 
		HDR.strShipTo, 
		'' AS strReference, 
		HDR.decSubTotal, 
		HDR.decVAT, 
		HDR.decTotal, 
		NULL AS bitFromSO, 
		NULL AS strOrdDocID, 
		0 AS bitHistoryTrans, 
		HDR.strNotes, 
		1 AS bitPrinted,
		1 AS bitEmailed,
		0 AS intPaidBy,
		NULL AS intAccount,
		NULL AS strSalesName, 
		'' AS strAddInfo, 
		NULL AS bitReserved, 
		HDR.strCurrency, 
		HDR.bitIsForeign, 
		HDR.decSubTotalF, 
		HDR.decVATF, 
		HDR.decTotalF, 
		HDR.decExchange, 
		HDR.strTerm, 
		NULL AS intDept,
		'' AS strField1,
		'' AS strField2,
		'' AS strField3,
		'' AS strField4,
		'' AS strField5,
		'' AS strField6,
		'' AS strField7,
		'' AS strField8,
		'' AS strField9,
		'' AS strField10,
		'' AS strField11,
		'' AS strField12,
		HDR.strSubFormated, 
		HDR.strVATFormatted, 
		HDR.strTotFormatted, 
		NULL AS dteField13, 
		NULL AS dteField14, 
		HDR.decDiscPerc, 
		0.00 AS decDiscAmt,
		0.00 AS decDiscAmtF,
		HDR.strDiscFormatted, 
		NULL AS strOrdFQDocID,
		NULL AS strStatusTypeCode,
		NULL AS strCNReasonCode, 
		0 AS bitBookmark,
		HDR.dteSystemDate AS dteSystemDateTime, 
		'On Account' AS strPaidBy,
		NULL AS intSentDoc, 
		NULL AS strVAT, 
		NULL AS strDelMethodCode, 
		NULL AS decTotalWeight, 
		NULL AS decTotalVolWeight, 
		1 AS intRevisionNumber,
		HDR.dteSystemDate AS dteRevisionDate, 
		@UserName AS strUserCreated, 
		NULL AS bitIsRepair, 
		HDR.strVendName, 
		NULL AS strBoughtFrom, 
		0 AS bitFQConvert, 
		0 AS bitSOCopy, 
		0 AS bitSOCopyMulti,
		HDR.strVendInvNo, 
		0 AS bitFromPO,
		0.00 AS decNetItemWeight, 
		0.00 AS decNetVolumetricWeight, 
		'' AS strSourceMOP,
		NULL AS bitCleared, 
		NULL AS strOrdRFQDocID, 
		NULL AS bitRFQConvert, 
		NULL AS strOrdPDocID,
		CASE WHEN DOC.IsDebitNote = 1 THEN 9 ELSE 4 END AS intModule,
		NULL AS strSOReasonCode, 
		NULL AS strDelNoteNo, 
		NULL AS strContractTo, 
		NULL AS strContBillType, 
		NULL AS blnAllowAnnualIncrease, 
		NULL AS intContractPriceIncrease, 
		NULL AS dtpIncreaseStartDate, 
		NULL AS bitInactive, 
		NULL AS strStoreNumber, 
		NULL AS strEDI
FROM #Temp_DOC DOC
INNER JOIN #Temp_HDR HDR ON DOC.InvPDocID_New = HDR.strInvPDocID
ORDER BY HDR.lngID 

SELECT @intREVHDRRecCount = @@ROWCOUNT 

INSERT INTO tblInvoiceDocREVDT (lngEntID, strInvDocID, intLineNo, strPartNumber, strLocation, strPartDesc, decQty, strUnit, intType, decPriceEaExc, decLineTotExc, 
								decLineTaxAmt, decPriceEaInc, decLineTotInc, strTaxCode, imgTaxObj, strCurrency, bitIsForeign, decPriceEaExcF, decLineTotExcF, 
								decLineTaxAmtF, decEaIncTaxF, decTotIncTaxF, strInvField1, strInvField2, strInvField3, strInvField4, strInvField5, strInvField6, 
								strLineField1, strLineField2, strLineField3, strLineField4, strLineField5, strLineField6, strLineField7, strLineField8, strLineField9, 
								strLineField10, strLineField11, strLineField12, decLineDiscPerc, decLineDiscAmt, decLineDiscAmtF, bitDiscountTax, decStockQty, 
								strStockUnit, decStandardCost, decLastPPUnit, strSalesName, decCOGS, decSOQty, decSOQtyRemain, strPartExtendedDesc, decItemWeight, 
								decVolumetricWeight, bitContainerItem, decBuyQty, decBuyQtyRemain, strBuyUnit, decEaIncTax, decTotIncTax, strOrdSODocID, decStockQtyRemain, 
								decBuyoutCost, decQtyRemaining, intStatus, uidTransactionFieldID, strContBillType, blnAllowAnnualIncrease, intContractPriceIncrease, 
								dtpIncreaseStartDate, dtpSetUpDate, dtpActivationDate, dtpTerminationDate, dtpExpirationDate, dtpBillingSchduleStart, strBillingFrequncy, 
								dtpLastBillDate, dtpNextBillDate, dtpNextInvoiceDate, decUsedQty) 
SELECT	HDR.lngEntID, 
		DTL.strInvPDocID AS strInvDocID, 
		DTL.intLineNo, 
		DTL.strPartNumber, 
		DTL.strLocation, 
		DTL.strPartDesc, 
		NULL AS decQty, 
		NULL AS strUnit, 
		DTL.intType, 
		DTL.decPriceEaExc, 
		DTL.decLineTotExc, 
		DTL.decLineTaxAmt, 
		DTL.decEaIncTax, 
		DTL.decTotIncTax, 
		DTL.strTaxCode, 
		NULL AS imgTaxObj, 
		DTL.strCurrency, 
		DTL.bitIsForeign, 
		DTL.decPriceEaExcF, 
		DTL.decLineTotExcF, 
		DTL.decLineTaxAmtF, 
		DTL.decEaIncTaxF, 
		DTL.decTotIncTaxF, 
		'' AS strInvField1, 
		'' AS strInvField2, 
		'' AS strInvField3, 
		'' AS strInvField4, 
		'' AS strInvField5, 
		'' AS strInvField6,
		'' AS strLineField1, 
		'' AS strLineField2, 
		'' AS strLineField3, 
		'' AS strLineField4, 
		'' AS strLineField5, 
		'' AS strLineField6, 
		'' AS strLineField7, 
		'' AS strLineField8,
		'' AS strLineField9, 
		'' AS strLineField10, 
		'' AS strLineField11, 
		'' AS strLineField12, 
		DTL.decLineDiscPerc, 
		0.00 AS decLineDiscAmt, 
		0.00 AS decLineDiscAmtF, 
		0 AS bitDiscountTax, 
		DTL.decStockQty, 
		DTL.strStockUnit, 
		NULL AS decStandardCost, 
		NULL AS decLastPPUnit, 
		NULL AS strSalesName, 
		NULL AS decCOGS, 
		NULL AS decSOQty, 
		NULL AS decSOQtyRemain, 
		'' AS strPartExtendedDesc, 
		0.00 AS decItemWeight, 
		0.00 AS decVolumetricWeight, 
		NULL AS bitContainerItem, 
		DTL.decBuyQty, 
		NULL AS decBuyQtyRemain, 
		DTL.strBuyUnit, 
		DTL.decEaIncTax, 
		DTL.decTotIncTax, 
		NULL AS strOrdSODocID, 
		NULL AS decStockQtyRemain, 
		NULL AS decBuyoutCost, 
		NULL AS decQtyRemaining, 
		1 AS intStatus, 
		NEWID() AS uidTransactionFieldID, 
		NULL AS strContBillType, 
		NULL AS blnAllowAnnualIncrease, 
		NULL AS intContractPriceIncrease, 
		NULL AS dtpIncreaseStartDate, 
		NULL AS dtpSetUpDate, 
		NULL AS dtpActivationDate, 
		NULL AS dtpTerminationDate, 
		NULL AS dtpExpirationDate, 
		NULL AS dtpBillingSchduleStart, 
		NULL AS strBillingFrequncy, 
		NULL AS dtpLastBillDate, 
		NULL AS dtpNextBillDate, 
		NULL AS dtpNextInvoiceDate, 
		NULL AS decUsedQty
FROM #Temp_HDR HDR
INNER JOIN #Temp_DTL DTL ON HDR.strInvPDocID = DTL.strInvPDocID 
ORDER BY DTL.lngID

SELECT @intREVDTLRecCount = @@ROWCOUNT 

DROP TABLE #Temp_DOC
DROP TABLE #Temp_HDR
DROP TABLE #Temp_DTL

SELECT	@intHDRTotCount AS intHDRTotCount, @intHDRRecCount AS intHDRRecCount, @intDTLTotCount AS intDTLTotCount, @intDTLRecCount AS intDTLRecCount,
		@intPROJTotCount AS intPROJTotCount, @intPROJRecCount AS intPROJRecCount, @intREVHDRRecCount AS intREVHDRRecCount, @intREVDTLRecCount AS intREVDTLRecCount
GO


/****** Object:  StoredProcedure [dbo].[prConv_GeneralLedgerTransactionHistory_Insert]    Script Date: 2021-02-23 ******/
----------------------------------------------------
CREATE PROCEDURE [dbo].[prConv_GeneralLedgerTransactionHistory_Insert]
(
@Evo bit,
@UserName nvarchar(20),
@GLType tinyint,
@APControlAcc nvarchar(30),
@ARControlAcc nvarchar(30)
)		
AS
/*
-- @GLType
-- 0 = Current Year
-- 1 = Current Year & Previous Year
-- 2 = All Years (Evolusion ONLY)
*/
DECLARE @strCurrency nvarchar(3),
@intHDRTotCount bigint = 0,
@intHDRRecCount bigint = 0,
@intDTLTotCount bigint = 0,
@intDTLRecCount bigint = 0,
@intOBTotCount bigint = 0,
@intOBRecCount bigint = 0,
@intBALTotCount bigint = 0,
@intBALRecCount bigint = 0,
@intCBTotCount bigint = 0,
@intCBRecCount bigint = 0,
@lngJourID bigint = 0,
@decLastProfitLossAmt money = 0.00,
@intFiscalYr int = 0
SELECT @strCurrency = strCurrency FROM tblCurrency WHERE bitHome = 1
CREATE TABLE #Temp_COUNT (
[lngID] [bigint] IDENTITY(1,1) NOT NULL,
[intGLType] [tinyint] NOT NULL,
[intFiscalYr] [int] NOT NULL,
[intHDRTotCount] [bigint] NULL,
[intHDRRecCount] [bigint] NULL,
[intDTLTotCount] [bigint] NULL,
[intDTLRecCount] [bigint] NULL,
[intOBTotCount] [bigint] NULL,
[intOBRecCount] [bigint] NULL,
[intBALTotCount] [bigint] NULL,
[intBALRecCount] [bigint] NULL,
[intCBTotCount] [bigint] NULL,
[intCBRecCount] [bigint] NULL)
CREATE TABLE #Temp_TRAN (
[TransactionID] [int] NOT NULL,
[DDate] [datetime] NULL,
[AutoNumber] [bigint] NULL,
[lngJourID] [bigint] NULL,
[PPeriod] [int] NULL,
[lngTrID] [bigint] IDENTITY(1,1) NOT NULL)
CREATE TABLE #Temp_HDR (
[lngID] [bigint] IDENTITY(1,1) NOT NULL,
[lngTrID] [bigint] NOT NULL,
[dteJournalDate] [smalldatetime] NOT NULL,
[strSource] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[strComment] [nvarchar](400) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[strCuVeGeInID] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL)
CREATE TABLE #Temp_DTL (
[lngID] [bigint] IDENTITY(1,1) NOT NULL,
[lngTrID] [bigint] NOT NULL,
[intLineNum] [int] NOT NULL,
[intGLNumber] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decAmount] [money] NOT NULL,
[decDebits] [money] NOT NULL,
[decCredits] [money] NOT NULL,
[strComment] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[decAmountF] [money] NOT NULL,
[decDebitsF] [money] NOT NULL,
[decCreditsF] [money] NOT NULL,
[strCurrency] [nvarchar](3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decExchange] [decimal](20,6) NOT NULL)
CREATE TABLE #Temp_OB (
[lngID] [bigint] IDENTITY(1,1) NOT NULL,
[intGLNumber] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decOpenBalance] [money] NULL,
[decBalance] [money] NOT NULL)
CREATE TABLE #Temp_BAL (
[lngID] [bigint] IDENTITY(1,1) NOT NULL,
[intGLNumber] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decBalance] [money] NOT NULL)
CREATE TABLE #Temp_CB (
[lngID] [bigint] IDENTITY(1,1) NOT NULL,
[intGLNumber] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decOpenBalanceF] [money] NULL,
[decBalanceF] [money] NOT NULL)
CREATE TABLE #Temp_HIST (
[lngID] [bigint] IDENTITY(1,1) NOT NULL,
[intFiscalYr] [int] NOT NULL,
[dteYearStart] [datetime] NOT NULL,
[dteYearEnd] [datetime] NOT NULL,
[uidYearID] [uniqueidentifier] NOT NULL)
IF @Evo = 1
BEGIN

	DECLARE @uidYearID_Old uniqueidentifier,
			@bitFirstYear bit = 1,
			@CEarnings nvarchar(30),
			@REarnings nvarchar(30)

	SELECT @CEarnings = intGLNumber FROM tblAccounts WHERE bitLinkCEarnings = 1
	SELECT @REarnings = intGLNumber FROM tblAccounts WHERE bitLinkREarnings = 1

	IF @GLType = 2	-- ALL YEARS
	BEGIN

		INSERT INTO #Temp_HIST (intFiscalYr, dteYearStart, dteYearEnd, uidYearID)
		SELECT YEAR(YearEnd01) AS intFiscalYr, YearStart01 AS dteYearStart, YearEnd01 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart01 IS NOT NULL AND YearEnd01 IS NOT NULL) AND (YearEnd01 <> COMP.dteLYEnded AND YearEnd01 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd02) AS intFiscalYr, YearStart02 AS dteYearStart, YearEnd02 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart02 IS NOT NULL AND YearEnd02 IS NOT NULL) AND (YearEnd02 <> COMP.dteLYEnded AND YearEnd02 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd03) AS intFiscalYr, YearStart03 AS dteYearStart, YearEnd03 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart03 IS NOT NULL AND YearEnd03 IS NOT NULL) AND (YearEnd03 <> COMP.dteLYEnded AND YearEnd03 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd04) AS intFiscalYr, YearStart04 AS dteYearStart, YearEnd04 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart04 IS NOT NULL AND YearEnd04 IS NOT NULL) AND (YearEnd04 <> COMP.dteLYEnded AND YearEnd04 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd05) AS intFiscalYr, YearStart05 AS dteYearStart, YearEnd05 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart05 IS NOT NULL AND YearEnd05 IS NOT NULL) AND (YearEnd05 <> COMP.dteLYEnded AND YearEnd05 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd06) AS intFiscalYr, YearStart06 AS dteYearStart, YearEnd06 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart06 IS NOT NULL AND YearEnd06 IS NOT NULL) AND (YearEnd06 <> COMP.dteLYEnded AND YearEnd06 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd07) AS intFiscalYr, YearStart07 AS dteYearStart, YearEnd07 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart07 IS NOT NULL AND YearEnd07 IS NOT NULL) AND (YearEnd07 <> COMP.dteLYEnded AND YearEnd07 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd08) AS intFiscalYr, YearStart08 AS dteYearStart, YearEnd08 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart08 IS NOT NULL AND YearEnd08 IS NOT NULL) AND (YearEnd08 <> COMP.dteLYEnded AND YearEnd08 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd09) AS intFiscalYr, YearStart09 AS dteYearStart, YearEnd09 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart09 IS NOT NULL AND YearEnd09 IS NOT NULL) AND (YearEnd09 <> COMP.dteLYEnded AND YearEnd09 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd10) AS intFiscalYr, YearStart10 AS dteYearStart, YearEnd10 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart10 IS NOT NULL AND YearEnd10 IS NOT NULL) AND (YearEnd10 <> COMP.dteLYEnded AND YearEnd10 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd11) AS intFiscalYr, YearStart11 AS dteYearStart, YearEnd11 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart11 IS NOT NULL AND YearEnd11 IS NOT NULL) AND (YearEnd11 <> COMP.dteLYEnded AND YearEnd11 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd12) AS intFiscalYr, YearStart12 AS dteYearStart, YearEnd12 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart12 IS NOT NULL AND YearEnd12 IS NOT NULL) AND (YearEnd12 <> COMP.dteLYEnded AND YearEnd12 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd13) AS intFiscalYr, YearStart13 AS dteYearStart, YearEnd13 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart13 IS NOT NULL AND YearEnd13 IS NOT NULL) AND (YearEnd13 <> COMP.dteLYEnded AND YearEnd13 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd14) AS intFiscalYr, YearStart14 AS dteYearStart, YearEnd14 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart14 IS NOT NULL AND YearEnd14 IS NOT NULL) AND (YearEnd14 <> COMP.dteLYEnded AND YearEnd14 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd15) AS intFiscalYr, YearStart15 AS dteYearStart, YearEnd15 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart15 IS NOT NULL AND YearEnd15 IS NOT NULL) AND (YearEnd15 <> COMP.dteLYEnded AND YearEnd15 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd16) AS intFiscalYr, YearStart16 AS dteYearStart, YearEnd16 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart16 IS NOT NULL AND YearEnd16 IS NOT NULL) AND (YearEnd16 <> COMP.dteLYEnded AND YearEnd16 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd17) AS intFiscalYr, YearStart17 AS dteYearStart, YearEnd17 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart17 IS NOT NULL AND YearEnd17 IS NOT NULL) AND (YearEnd17 <> COMP.dteLYEnded AND YearEnd17 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd18) AS intFiscalYr, YearStart18 AS dteYearStart, YearEnd18 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart18 IS NOT NULL AND YearEnd18 IS NOT NULL) AND (YearEnd18 <> COMP.dteLYEnded AND YearEnd18 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd19) AS intFiscalYr, YearStart19 AS dteYearStart, YearEnd19 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart19 IS NOT NULL AND YearEnd19 IS NOT NULL) AND (YearEnd19 <> COMP.dteLYEnded AND YearEnd19 <> COMP.dteYearEnds)
		UNION ALL
		SELECT YEAR(YearEnd20) AS intFiscalYr, YearStart20 AS dteYearStart, YearEnd20 AS dteYearEnd, NEWID() AS uidYearID FROM tblUtilityPervLedgerParameters CROSS JOIN tblCompany COMP WHERE (YearStart20 IS NOT NULL AND YearEnd20 IS NOT NULL) AND (YearEnd20 <> COMP.dteLYEnded AND YearEnd20 <> COMP.dteYearEnds)

		UPDATE #Temp_HIST
		SET uidYearID = Z.uidYearID 
		FROM (SELECT intFiscalYr,
					 uidYearID
			  FROM tblAcctHist) Z
		WHERE (#Temp_HIST.uidYearID = Z.uidYearID)
		AND (#Temp_HIST.intFiscalYr = Z.intFiscalYr)

		WHILE EXISTS (SELECT lngID FROM #Temp_HIST)
		BEGIN

			DELETE FROM #Temp_TRAN
			DELETE FROM #Temp_HDR
			DELETE FROM #Temp_DTL
			DELETE FROM #Temp_OB
			DELETE FROM #Temp_BAL
			DELETE FROM #Temp_CB

			ALTER TABLE #Temp_TRAN
			DROP COLUMN [lngTrID]

			ALTER TABLE #Temp_TRAN
			ADD [lngTrID] [bigint] IDENTITY(1,1) NOT NULL

			DECLARE @lngID bigint,
					@dteYearStart datetime,
					@dteYearEnd datetime,
					@uidYearID uniqueidentifier

			SELECT @lngID = MIN(lngID) FROM #Temp_HIST

			SELECT	@intFiscalYr = intFiscalYr,
					@dteYearStart = dteYearStart,
					@dteYearEnd = dteYearEnd,
					@uidYearID = uidYearID
			FROM #Temp_HIST 
			WHERE lngID = @lngID

			IF NOT EXISTS (SELECT uidYearID FROM tblAcctHist WHERE uidYearID = @uidYearID AND intFiscalYr = @intFiscalYr)
			BEGIN

				INSERT INTO tblAcctHist (uidYearID, intFiscalYr, dteYearStart, dteYearEnd)
				VALUES (@uidYearID, @intFiscalYr, @dteYearStart, @dteYearEnd)

			END

			INSERT INTO tblAccountsHist (uidYearID, intGLNumber, strDesc, intAccType, intGroupCode, intAccClass, bitInactive, decOpenBalance, decBalance, decLYOpenBalance, decLYEndBalance, 
										 bitBank, bitRecon, bitInventory, bitBudget, bitUsed, bitUsedLY, bitLinkREarnings, bitLinkCEarnings, bitLinkAP, bitLinkPurDisc, bitLinkAR, 
										 bitLinkSalesDisc, bitLinkAssCosts, bitLinkAdjWriteOff, bitIsLinkedAccount, bitDefBank, bitLinkDeposit, bitLinkPrePay, strField1, strField2, 
										 strField3, strField4, strField5, strField6, bitLinkExc, bitAllowCenters, intCheqNumber, strCurrency, decOpenBalanceF, decBalanceF, decLYOpenBalanceF, 
										 decLYEndBalanceF, bitLinkGRV, bitLinkAddCost, bitLinkDelAdvice, bitLinkWIP, bitLinkManStandardCost, bitLinkWorkshopWIP, bitLinkGoodsInTransit,
										 bitLinkARCustMast, bitLinkDepositCustMast, bitLinkAPVendMast, bitLinkPrepayVendMast)
			SELECT	@uidYearID AS uidYearID,
					ACC.intGLNumber, 
					ACC.strDesc, 
					ACC.intAccType, 
					ACC.intGroupCode, 
					ACC.intAccClass, 
					ACC.bitInactive, 
					0.00 AS decOpenBalance, 
					0.00 AS decBalance, 
					0.00 AS decLYOpenBalance, 
					0.00 AS decLYEndBalance, 
					ACC.bitBank, 
					ACC.bitRecon, 
					ACC.bitInventory, 
					ACC.bitBudget, 
					0 AS bitUsed, 
					0 AS bitUsedLY, 
					ACC.bitLinkREarnings, 
					ACC.bitLinkCEarnings, 
					ACC.bitLinkAP, 
					ACC.bitLinkPurDisc, 
					ACC.bitLinkAR, 
					ACC.bitLinkSalesDisc, 
					ACC.bitLinkAssCosts, 
					ACC.bitLinkAdjWriteOff, 
					ACC.bitIsLinkedAccount, 
					ACC.bitDefBank, 
					ACC.bitLinkDeposit, 
					ACC.bitLinkPrePay, 
					ACC.strField1, 
					ACC.strField2, 
					ACC.strField3, 
					ACC.strField4, 
					ACC.strField5, 
					ACC.strField6, 
					ACC.bitLinkExc, 
					ACC.bitAllowCenters, 
					ACC.intCheqNumber, 
					ACC.strCurrency, 
					0.00 AS decOpenBalanceF, 
					0.00 AS decBalanceF, 
					0.00 AS decLYOpenBalanceF, 
					0.00 AS decLYEndBalanceF, 
					ACC.bitLinkGRV, 
					ACC.bitLinkAddCost, 
					ACC.bitLinkDelAdvice, 
					ACC.bitLinkWIP, 
					ACC.bitLinkManStandardCost, 
					ACC.bitLinkWorkshopWIP, 
					ACC.bitLinkGoodsInTransit,
					ACC.bitLinkARCustMast, 
					ACC.bitLinkDepositCustMast, 
					ACC.bitLinkAPVendMast, 
					ACC.bitLinkPrepayVendMast
			FROM tblAccountsLY ACC
			WHERE (ACC.intGLNumber NOT IN (SELECT intGLNumber 
										   FROM tblAccountsHist
										   WHERE uidYearID = @uidYearID))

			INSERT INTO #Temp_TRAN (TransactionID, DDate, AutoNumber, PPeriod)
			SELECT	LT.TransactionID, 
					LT.DDate,
					MIN(LT.AutoNumber) AS AutoNumber,
					MAX(LT.PPeriod) AS PPeriod
			FROM tblUtilityPervLedgerTransactions LT
			WHERE (LT.DDate BETWEEN @dteYearStart AND @dteYearEnd)
			AND (LT.GDC = 'G')
			GROUP BY LT.TransactionID, 
					 LT.DDate
			ORDER BY LT.TransactionID, 
					 LT.DDate

			SELECT @intHDRTotCount = COUNT(TransactionID)
			FROM #Temp_TRAN

			SELECT @intDTLTotCount = COUNT(LT.TransactionID)
			FROM #Temp_TRAN TMP
			INNER JOIN tblUtilityPervLedgerTransactions LT ON TMP.TransactionID  = LT.TransactionID
														   AND TMP.DDate = LT.DDate
														   AND TMP.PPeriod = LT.PPeriod

			SELECT @intOBTotCount = COUNT(intGLNumber)
			FROM #Temp_OB

			SELECT @intBALTotCount = COUNT(intGLNumber)
			FROM #Temp_BAL

			SELECT @intCBTotCount = COUNT(intGLNumber)
			FROM #Temp_CB

			SELECT @lngJourID = ISNULL(MAX(lngJourID), 0) FROM tblJournalHist WHERE uidYearID = @uidYearID 

			UPDATE #Temp_TRAN
			SET lngJourID = Z.lngJourID_New 
			FROM (SELECT lngTrID, 
						 ROW_NUMBER() OVER(ORDER BY lngTrID ASC) + @lngJourID AS lngJourID_New
				  FROM #Temp_TRAN) Z
			WHERE #Temp_TRAN.lngTrID = Z.lngTrID

			INSERT INTO #Temp_HDR (lngTrID, dteJournalDate, strSource, strComment, strCuVeGeInID)
			SELECT	TMP.lngTrID,
					LT.DDate AS dteJournalDate, 
					SUBSTRING(LTRIM(RTRIM(ISNULL(LT.Refrence, ''))), 1, 100) AS strSource, 
					SUBSTRING(LTRIM(RTRIM(ISNULL(LT.[Description], ''))), 1, 400) AS strComment,
					CASE LT.GDC WHEN 'G' 
								THEN ACC.intGLNumber
								ELSE SUBSTRING(REPLACE(REPLACE(LTRIM(RTRIM(ISNULL(LT.AccNumber, ''))), '>', ''), '/', ''), 1, 50)
					END AS strCuVeGeInID
			FROM #Temp_TRAN TMP
			INNER JOIN tblUtilityPervLedgerTransactions LT ON TMP.TransactionID  = LT.TransactionID
														   AND TMP.DDate = LT.DDate
														   AND TMP.AutoNumber = LT.AutoNumber
														   AND TMP.PPeriod = LT.PPeriod 
			LEFT JOIN tblUtilityAccounts ACC ON REPLACE(REPLACE(LT.AccNumber, '>', ''), '/', '') = ACC.intPPGLNumber 
			ORDER BY LT.GDC, 
					 LT.AutoNumber

			DELETE FROM #Temp_HDR
			WHERE lngID NOT IN (SELECT MIN(lngID)
								FROM #Temp_HDR
								GROUP BY lngTrID)

			DELETE FROM #Temp_TRAN
			WHERE lngTrID IN (SELECT TMP.lngTrID
							  FROM #Temp_HDR TMP
							  INNER JOIN tblJournalHist JNL ON TMP.dteJournalDate = JNL.dteJournalDate
															AND TMP.strSource = JNL.strSource
															AND TMP.strComment = JNL.strComment 
															AND TMP.strCuVeGeInID = JNL.strCuVeGeInID
							  WHERE JNL.uidYearID = @uidYearID)

			INSERT INTO #Temp_DTL (lngTrID, intLineNum, intGLNumber, decAmount, decDebits, decCredits, strComment, decAmountF, decDebitsF, decCreditsF, strCurrency, decExchange)
			SELECT	TMP.lngTrID,
					ROW_NUMBER() OVER(PARTITION BY HDR.lngTrID ORDER BY HDR.lngID ASC) AS intLineNum,
					ACC.intGLNumber,
					ROUND(CASE WHEN ACC.intAccType BETWEEN 2 AND 4
							   THEN LT.Amount * -1
							   ELSE LT.Amount 
						  END, 2) AS decAmount, 
					ROUND(LT.Debit, 2) AS decDebits, 
					ROUND(LT.Credit, 2) AS decCredits, 
					SUBSTRING(REPLACE(REPLACE(LTRIM(RTRIM(LT.AccNumber)), '>', ''), '/', '') + ' - ' + LTRIM(RTRIM(LT.Refrence)) + ' - ' + LTRIM(RTRIM(LT.[Description])), 1, 200) AS strComment,
					ROUND(CASE WHEN CUR.strCurrency IS NULL 
							   THEN 0.00 
							   ELSE CASE WHEN ACC.intAccType BETWEEN 2 AND 4
										 THEN LT.CurrAmt * -1
										 ELSE LT.CurrAmt 
									END 
						  END, 2) AS decAmountF,
					ROUND(CASE WHEN CUR.strCurrency IS NULL 
							   THEN 0.00
							   ELSE LT.fForeignDebit
						  END, 2) AS decDebitsF, 
					ROUND(CASE WHEN CUR.strCurrency IS NULL 
							   THEN 0.00
							   ELSE LT.fForeignCredit
						  END, 2) AS decCreditsF, 
					CASE WHEN CUR.strCurrency IS NULL THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
					CASE WHEN CUR.strCurrency IS NULL 
						 THEN 1.000000 
						 ELSE CASE WHEN LT.Amount = 0.00 OR LT.CurrAmt  = 0.00 
								   THEN 1.000000 
								   ELSE ROUND(LT.Amount / LT.CurrAmt, 4) 
							  END 
					END AS decExchange
			FROM #Temp_TRAN TMP
			INNER JOIN #Temp_HDR HDR ON TMP.lngTrID = HDR.lngTrID 
			INNER JOIN tblUtilityPervLedgerTransactions LT ON TMP.TransactionID  = LT.TransactionID
														   AND TMP.DDate = LT.DDate
														   AND TMP.PPeriod = LT.PPeriod
			LEFT JOIN tblUtilityAccounts ACC ON REPLACE(REPLACE(LT.AccNumber, '>', ''), '/', '') = ACC.intPPGLNumber 
			LEFT JOIN tblUtilityCurrency CUR ON LT.CurrCode = CUR.strPPCurrency
			WHERE (LT.GDC = 'G') 
			ORDER BY HDR.lngID 

			INSERT INTO tblJournalHist (uidYearID, lngJourID, strUserName, dteSystemDate, dteJournalDate, intModule, intEntryType, strSource, strComment, strCuVeGeInID, intPayType)
			SELECT	@uidYearID AS uidYearID,
					TMP.lngJourID,
					@UserName AS strUserName,
					HDR.dteJournalDate AS dteSystemDate, 
					HDR.dteJournalDate AS dteJournalDate, 
					0 AS intModule,
					0 AS intEntryType,
					HDR.strSource, 
					HDR.strComment,
					HDR.strCuVeGeInID,
					0 AS intPayType
			FROM #Temp_TRAN TMP
			INNER JOIN #Temp_HDR HDR ON TMP.lngTrID = HDR.lngTrID 
			ORDER BY TMP.lngJourID,
					 HDR.lngID 

			SELECT @intHDRRecCount = @@ROWCOUNT

			INSERT INTO tblJournalEntHist (uidYearID, lngJourID, intLineNum, intGLNumber, decAmount, decDebits, decCredits, strComment, intDept, decAmountF, decDebitsF, decCreditsF, 
										   strCurrency, decExchange, bitForeignAcct, decAllocatedAmtToDate, decUnAllocatedAmt, strFormula, bitVerified)
			SELECT	@uidYearID AS uidYearID,
					TMP.lngJourID,
					DTL.intLineNum,
					DTL.intGLNumber,
					DTL.decAmount,
					DTL.decDebits,
					DTL.decCredits, 
					DTL.strComment, 
					NULL AS intDept, 
					DTL.decAmountF, 
					DTL.decDebitsF, 
					DTL.decCreditsF, 
					DTL.strCurrency, 
					DTL.decExchange, 
					0 AS bitForeignAcct, 
					0.00 AS decAllocatedAmtToDate, 
					0.00 AS decUnAllocatedAmt, 
					NULL AS strFormula, 
					0 AS bitVerified
			FROM #Temp_TRAN TMP
			INNER JOIN #Temp_DTL DTL ON TMP.lngTrID = DTL.lngTrID 
			ORDER BY TMP.lngJourID,
					 DTL.lngID 

			SELECT @intDTLRecCount = @@ROWCOUNT

			INSERT INTO #Temp_COUNT (intGLType, intFiscalYr, intHDRTotCount, intHDRRecCount, intDTLTotCount, intDTLRecCount, intOBTotCount, intOBRecCount, intBALTotCount, 
									 intBALRecCount, intCBTotCount, intCBRecCount)
			VALUES (@GLType, @intFiscalYr, @intHDRTotCount, @intHDRRecCount, @intDTLTotCount, @intDTLRecCount, @intOBTotCount, @intOBRecCount, @intBALTotCount, @intBALRecCount, 
					@intCBTotCount, @intCBRecCount)

			DELETE FROM #Temp_HIST 
			WHERE (lngID = @lngID)

			UPDATE tblAccountsHist
			SET decBalance = decOpenBalance + ISNULL((SELECT SUM(JE.decAmount) FROM tblJournalEntHist JE WHERE (JE.uidYearID = @uidYearID) AND (JE.intGLNumber = tblAccountsHist.intGLNumber)), 0)
			WHERE (uidYearID = @uidYearID)
			AND (intGLNumber <> @CEarnings
				 AND intGLNumber <> @CEarnings)

			IF @bitFirstYear = 0
			BEGIN

				UPDATE tblAccountsHist
				SET decOpenBalance = CASE WHEN tblAccountsHist.intAccType >= 4 THEN tblAccountsHist.decOpenBalance ELSE TMP.decBalance END,
					decBalance = CASE WHEN tblAccountsHist.intAccType >= 4 THEN tblAccountsHist.decOpenBalance ELSE TMP.decBalance END + ISNULL((SELECT SUM(JE.decAmount) FROM tblJournalEntHist JE WHERE (JE.uidYearID = @uidYearID) AND (JE.intGLNumber = tblAccountsHist.intGLNumber)), 0),
					decLYEndBalance = TMP.decBalance
				FROM (SELECT intGLNumber, 
							 decBalance
					  FROM tblAccountsHist 
					  WHERE (uidYearID = @uidYearID_Old)) TMP
				WHERE tblAccountsHist.intGLNumber = TMP.intGLNumber
				AND (tblAccountsHist.uidYearID = @uidYearID)
				AND (tblAccountsHist.intGLNumber <> @CEarnings
					 AND tblAccountsHist.intGLNumber <> @REarnings)

			END

			UPDATE tblAccountsHist
			SET decBalance = ISNULL(((SELECT ISNULL(SUM(decBalance), 0) FROM tblAccountsHist WHERE (uidYearID = @uidYearID) AND (intAccType = 4)) - (SELECT ISNULL(SUM(decBalance), 0) FROM tblAccountsHist WHERE (uidYearID = @uidYearID) AND (intAccType = 5))), 0)
			WHERE (uidYearID = @uidYearID)
			AND (intGLNumber = @CEarnings)

			IF @bitFirstYear = 0
			BEGIN

				UPDATE tblAccountsHist
				SET decLYEndBalance = ISNULL((SELECT HIST.decBalance FROM tblAccountsHist HIST WHERE (HIST.uidYearID = @uidYearID_Old) AND (HIST.intGLNumber = tblAccountsHist.intGLNumber)), 0)
				WHERE (uidYearID = @uidYearID)
				AND (intGLNumber = @REarnings)

				UPDATE tblAccountsHist
				SET decLYEndBalance = ISNULL((SELECT HIST.decBalance FROM tblAccountsHist HIST WHERE (HIST.uidYearID = @uidYearID_Old) AND (HIST.intGLNumber = tblAccountsHist.intGLNumber)), 0)
				WHERE (uidYearID = @uidYearID)
				AND (intGLNumber = @CEarnings)

				UPDATE tblAccountsHist
				SET decOpenBalance = ISNULL((SELECT decBalance FROM tblAccountsHist WHERE (uidYearID = @uidYearID_Old) AND (intGLNumber = @CEarnings)), 0) + ISNULL((SELECT decBalance FROM tblAccountsHist WHERE (uidYearID = @uidYearID_Old) AND (intGLNumber = @REarnings)), 0)
				WHERE (uidYearID = @uidYearID)
				AND (intGLNumber = @REarnings)

				UPDATE tblAccountsHist
				SET decBalance = decOpenBalance + ISNULL((SELECT SUM(JE.decAmount) FROM tblJournalEntHist JE WHERE (JE.uidYearID = @uidYearID) AND (JE.intGLNumber = tblAccountsHist.intGLNumber)), 0)
				WHERE (uidYearID = @uidYearID)
				AND (intGLNumber = @REarnings)

			END

			SET @uidYearID_Old = @uidYearID 
			SET @bitFirstYear = 0

		END

	END

	IF @GLType > 0	-- PREVIOUS YEAR
	BEGIN

		DELETE FROM #Temp_TRAN
		DELETE FROM #Temp_HDR
		DELETE FROM #Temp_DTL
		DELETE FROM #Temp_OB
		DELETE FROM #Temp_BAL
		DELETE FROM #Temp_CB

		ALTER TABLE #Temp_TRAN
		DROP COLUMN [lngTrID]

		ALTER TABLE #Temp_TRAN
		ADD [lngTrID] [bigint] IDENTITY(1,1) NOT NULL

		SELECT @intFiscalYr = YEAR(dteLYEnded) FROM tblCompany

		INSERT INTO tblAccountsLY (intGLNumber, strDesc, intAccType, intGroupCode, intAccClass, bitInactive, decOpenBalance, decBalance, decLYOpenBalance, decLYEndBalance, 
								   bitBank, bitRecon, bitInventory, bitBudget, bitUsed, bitUsedLY, bitLinkREarnings, bitLinkCEarnings, bitLinkAP, bitLinkPurDisc, bitLinkAR, 
								   bitLinkSalesDisc, bitLinkAssCosts, bitLinkAdjWriteOff, bitIsLinkedAccount, bitDefBank, bitLinkDeposit, bitLinkPrePay, strField1, strField2, 
								   strField3, strField4, strField5, strField6, bitLinkExc, bitAllowCenters, intCheqNumber, strCurrency, decOpenBalanceF, decBalanceF, 
								   decLYOpenBalanceF, decLYEndBalanceF, bitLinkGRV, bitLinkAddCost, bitLinkDelAdvice, bitLinkWIP, bitLinkManStandardCost, bitLinkWorkshopWIP, 
								   bitLinkGoodsInTransit, bitLinkARCustMast, bitLinkDepositCustMast, bitLinkAPVendMast, bitLinkPrepayVendMast)
		SELECT	intGLNumber, 
				strDesc, 
				intAccType, 
				intGroupCode, 
				intAccClass, 
				bitInactive, 
				0.00 AS decOpenBalance, 
				0.00 AS decBalance, 
				0.00 AS decLYOpenBalance, 
				0.00 AS decLYEndBalance, 
				bitBank, 
				bitRecon, 
				bitInventory, 
				bitBudget, 
				0 AS bitUsed, 
				0 AS bitUsedLY, 
				bitLinkREarnings, 
				bitLinkCEarnings, 
				bitLinkAP, 
				bitLinkPurDisc, 
				bitLinkAR, 
				bitLinkSalesDisc, 
				bitLinkAssCosts, 
				bitLinkAdjWriteOff, 
				bitIsLinkedAccount, 
				bitDefBank, 
				bitLinkDeposit, 
				bitLinkPrePay, 
				strField1, 
				strField2, 
				strField3, 
				strField4, 
				strField5, 
				strField6, 
				bitLinkExc, 
				bitAllowCenters, 
				intCheqNumber, 
				strCurrency, 
				0.00 AS decOpenBalanceF, 
				0.00 AS decBalanceF, 
				0.00 AS decLYOpenBalanceF, 
				0.00 AS decLYEndBalanceF, 
				bitLinkGRV, 
				bitLinkAddCost, 
				bitLinkDelAdvice, 
				bitLinkWIP, 
				bitLinkManStandardCost, 
				bitLinkWorkshopWIP, 
				bitLinkGoodsInTransit,
				bitLinkARCustMast, 
				bitLinkDepositCustMast, 
				bitLinkAPVendMast, 
				bitLinkPrepayVendMast
		FROM tblAccounts 
		WHERE intGLNumber NOT IN (SELECT intGLNumber 
								  FROM tblAccountsLY)

		INSERT INTO #Temp_TRAN (TransactionID, DDate, AutoNumber, PPeriod)
		SELECT	LT.TransactionID, 
				LT.DDate,
				MIN(LT.AutoNumber) AS AutoNumber,
				MAX(LT.PPeriod) AS PPeriod
		FROM tblUtilityPervLedgerTransactions LT
		CROSS JOIN tblCompany COMP
		WHERE (LT.DDate BETWEEN COMP.dteLYStarted AND COMP.dteLYEnded)
		AND (LT.GDC = 'G')
		GROUP BY LT.TransactionID, 
				 LT.DDate
		ORDER BY LT.TransactionID, 
				 LT.DDate

		SELECT @intHDRTotCount = COUNT(TransactionID)
		FROM #Temp_TRAN

		SELECT @intDTLTotCount = COUNT(LT.TransactionID)
		FROM #Temp_TRAN TMP
		INNER JOIN tblUtilityPervLedgerTransactions LT ON TMP.TransactionID  = LT.TransactionID
													   AND TMP.DDate = LT.DDate
													   AND TMP.PPeriod = LT.PPeriod

		SELECT @intOBTotCount = COUNT(intGLNumber)
		FROM #Temp_OB

		SELECT @intBALTotCount = COUNT(intGLNumber)
		FROM #Temp_BAL

		SELECT @intCBTotCount = COUNT(intGLNumber)
		FROM #Temp_CB

		SELECT @lngJourID = ISNULL(MAX(lngJourID), 0) FROM tblJournalLY

		UPDATE #Temp_TRAN
		SET lngJourID = Z.lngJourID_New 
		FROM (SELECT lngTrID, 
					 ROW_NUMBER() OVER(ORDER BY lngTrID ASC) + @lngJourID AS lngJourID_New
			  FROM #Temp_TRAN) Z
		WHERE #Temp_TRAN.lngTrID = Z.lngTrID

		INSERT INTO #Temp_HDR (lngTrID, dteJournalDate, strSource, strComment, strCuVeGeInID)
		SELECT	TMP.lngTrID,
				LT.DDate AS dteJournalDate, 
				SUBSTRING(LTRIM(RTRIM(ISNULL(LT.Refrence, ''))), 1, 100) AS strSource, 
				SUBSTRING(LTRIM(RTRIM(ISNULL(LT.[Description], ''))), 1, 400) AS strComment,
				CASE LT.GDC WHEN 'G' 
							THEN ACC.intGLNumber
							ELSE SUBSTRING(REPLACE(REPLACE(LTRIM(RTRIM(ISNULL(LT.AccNumber, ''))), '>', ''), '/', ''), 1, 50)
				END AS strCuVeGeInID
		FROM #Temp_TRAN TMP
		INNER JOIN tblUtilityPervLedgerTransactions LT ON TMP.TransactionID  = LT.TransactionID
													   AND TMP.DDate = LT.DDate
													   AND TMP.AutoNumber = LT.AutoNumber
													   AND TMP.PPeriod = LT.PPeriod
		LEFT JOIN tblUtilityAccounts ACC ON REPLACE(REPLACE(LT.AccNumber, '>', ''), '/', '') = ACC.intPPGLNumber 
		ORDER BY LT.GDC, 
				 LT.AutoNumber

		DELETE FROM #Temp_HDR
		WHERE lngID NOT IN (SELECT MIN(lngID)
							FROM #Temp_HDR
							GROUP BY lngTrID)

		DELETE FROM #Temp_TRAN
		WHERE lngTrID IN (SELECT TMP.lngTrID
						  FROM #Temp_HDR TMP
						  INNER JOIN tblJournalLY JNL ON TMP.dteJournalDate = JNL.dteJournalDate
													  AND TMP.strSource = JNL.strSource
													  AND TMP.strComment = JNL.strComment 
													  AND TMP.strCuVeGeInID = JNL.strCuVeGeInID)

		INSERT INTO #Temp_DTL (lngTrID, intLineNum, intGLNumber, decAmount, decDebits, decCredits, strComment, decAmountF, decDebitsF, decCreditsF, strCurrency, decExchange)
		SELECT	TMP.lngTrID,
				ROW_NUMBER() OVER(PARTITION BY HDR.lngTrID ORDER BY HDR.lngID ASC) AS intLineNum,
				ACC.intGLNumber,
				ROUND(CASE WHEN ACC.intAccType BETWEEN 2 AND 4
						   THEN LT.Amount * -1
						   ELSE LT.Amount 
					  END, 2) AS decAmount, 
				ROUND(LT.Debit, 2) AS decDebits, 
				ROUND(LT.Credit, 2) AS decCredits, 
				SUBSTRING(REPLACE(REPLACE(LTRIM(RTRIM(LT.AccNumber)), '>', ''), '/', '') + ' - ' + LTRIM(RTRIM(LT.Refrence)) + ' - ' + LTRIM(RTRIM(LT.[Description])), 1, 200) AS strComment,
				ROUND(CASE WHEN CUR.strCurrency IS NULL 
						   THEN 0.00 
						   ELSE CASE WHEN ACC.intAccType BETWEEN 2 AND 4
								     THEN LT.CurrAmt * -1
								     ELSE LT.CurrAmt 
							    END 
					  END, 2) AS decAmountF,
				ROUND(CASE WHEN CUR.strCurrency IS NULL 
						   THEN 0.00
						   ELSE LT.fForeignDebit
					  END, 2) AS decDebitsF, 
				ROUND(CASE WHEN CUR.strCurrency IS NULL 
						   THEN 0.00
						   ELSE LT.fForeignCredit
					  END, 2) AS decCreditsF, 
				CASE WHEN CUR.strCurrency IS NULL THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
				CASE WHEN CUR.strCurrency IS NULL 
					 THEN 1.000000 
					 ELSE CASE WHEN LT.Amount = 0.00 OR LT.CurrAmt  = 0.00 
							   THEN 1.000000 
							   ELSE ROUND(LT.Amount / LT.CurrAmt, 4) 
						  END 
				END AS decExchange
		FROM #Temp_TRAN TMP
		INNER JOIN #Temp_HDR HDR ON TMP.lngTrID = HDR.lngTrID 
		INNER JOIN tblUtilityPervLedgerTransactions LT ON TMP.TransactionID  = LT.TransactionID
													   AND TMP.DDate = LT.DDate
													   AND TMP.PPeriod = LT.PPeriod
		LEFT JOIN tblUtilityAccounts ACC ON REPLACE(REPLACE(LT.AccNumber, '>', ''), '/', '') = ACC.intPPGLNumber 
		LEFT JOIN tblUtilityCurrency CUR ON LT.CurrCode = CUR.strPPCurrency 
		WHERE (LT.GDC = 'G') 
		ORDER BY HDR.lngID 

		INSERT INTO tblJournalLY (lngJourID, strUserName, dteSystemDate, dteJournalDate, intModule, intEntryType, strSource, strComment, strCuVeGeInID, intPayType, 
								  bitIsTobeReversed, dteReverseDate, bitIsReversed)
		SELECT	TMP.lngJourID,
				@UserName AS strUserName,
				HDR.dteJournalDate AS dteSystemDate, 
				HDR.dteJournalDate AS dteJournalDate, 
				0 AS intModule,
				0 AS intEntryType,
				HDR.strSource, 
				HDR.strComment,
				HDR.strCuVeGeInID,
				0 AS intPayType,
				0 AS bitIsTobeReversed,
				NULL AS dteReverseDate,
				0 AS bitIsReversed
		FROM #Temp_TRAN TMP
		INNER JOIN #Temp_HDR HDR ON TMP.lngTrID = HDR.lngTrID 
		ORDER BY TMP.lngJourID,
				 HDR.lngID 

		SELECT @intHDRRecCount = @@ROWCOUNT

		INSERT INTO tblJournalEntLY (lngJourID, intLineNum, intGLNumber, decAmount, decDebits, decCredits, strComment, intDept, decAmountF, decDebitsF, decCreditsF, 
									 strCurrency, decExchange, bitForeignAcct, decAllocatedAmtToDate, decUnAllocatedAmt, strFormula, bitVerified)
		SELECT	TMP.lngJourID,
				DTL.intLineNum,
				DTL.intGLNumber,
				DTL.decAmount,
				DTL.decDebits,
				DTL.decCredits, 
				DTL.strComment, 
				NULL AS intDept, 
				DTL.decAmountF, 
				DTL.decDebitsF, 
				DTL.decCreditsF, 
				DTL.strCurrency, 
				DTL.decExchange, 
				0 AS bitForeignAcct, 
				0.00 AS decAllocatedAmtToDate, 
				0.00 AS decUnAllocatedAmt, 
				NULL AS strFormula, 
				0 AS bitVerified
		FROM #Temp_TRAN TMP
		INNER JOIN #Temp_DTL DTL ON TMP.lngTrID = DTL.lngTrID 
		ORDER BY TMP.lngJourID,
				 DTL.lngID 

		SELECT @intDTLRecCount = @@ROWCOUNT

		INSERT INTO #Temp_COUNT (intGLType, intFiscalYr, intHDRTotCount, intHDRRecCount, intDTLTotCount, intDTLRecCount, intOBTotCount, intOBRecCount, intBALTotCount, 
								 intBALRecCount, intCBTotCount, intCBRecCount)
		VALUES (@GLType, @intFiscalYr, @intHDRTotCount, @intHDRRecCount, @intDTLTotCount, @intDTLRecCount, @intOBTotCount, @intOBRecCount, @intBALTotCount, @intBALRecCount, 
				@intCBTotCount, @intCBRecCount)

		UPDATE tblAccountsLY
		SET decBalance = decOpenBalance + ISNULL((SELECT SUM(JE.decAmount) FROM tblJournalEntLY JE WHERE (JE.intGLNumber = tblAccountsLY.intGLNumber)), 0)
		WHERE (intGLNumber <> @CEarnings
			   AND intGLNumber <> @REarnings)

		IF @bitFirstYear = 0
		BEGIN

			UPDATE tblAccountsLY
			SET decOpenBalance = CASE WHEN tblAccountsLY.intAccType >= 4 THEN tblAccountsLY.decOpenBalance ELSE TMP.decBalance END,
				decBalance = CASE WHEN tblAccountsLY.intAccType >= 4 THEN tblAccountsLY.decOpenBalance ELSE TMP.decBalance END + ISNULL((SELECT SUM(JE.decAmount) FROM tblJournalEntLY JE WHERE (JE.intGLNumber = tblAccountsLY.intGLNumber)), 0),
				decLYEndBalance = TMP.decBalance
			FROM (SELECT intGLNumber, 
							decBalance
					FROM tblAccountsHist 
					WHERE (uidYearID = @uidYearID_Old)) TMP
			WHERE tblAccountsLY.intGLNumber = TMP.intGLNumber
			AND (tblAccountsLY.intGLNumber <> @CEarnings
				 AND tblAccountsLY.intGLNumber <> @REarnings)

		END

		UPDATE tblAccountsLY
		SET decBalance = ISNULL(((SELECT ISNULL(SUM(decBalance), 0) FROM tblAccountsLY WHERE (intAccType = 4)) - (SELECT ISNULL(SUM(decBalance), 0) FROM tblAccountsLY WHERE (intAccType = 5))), 0)
		WHERE (intGLNumber = @CEarnings)

		IF @bitFirstYear = 0
		BEGIN

			UPDATE tblAccountsLY
			SET decLYEndBalance = ISNULL((SELECT HIST.decBalance FROM tblAccountsHist HIST WHERE (HIST.uidYearID = @uidYearID_Old) AND (HIST.intGLNumber = tblAccountsLY.intGLNumber)), 0)
			WHERE (intGLNumber = @REarnings)

			UPDATE tblAccountsLY
			SET decLYEndBalance = ISNULL((SELECT HIST.decBalance FROM tblAccountsHist HIST WHERE (HIST.uidYearID = @uidYearID_Old) AND (HIST.intGLNumber = tblAccountsLY.intGLNumber)), 0)
			WHERE (intGLNumber = @CEarnings)

			UPDATE tblAccountsLY
			SET decOpenBalance = ISNULL((SELECT decBalance FROM tblAccountsHist WHERE (uidYearID = @uidYearID_Old) AND (intGLNumber = @CEarnings)), 0) + ISNULL((SELECT decBalance FROM tblAccountsHist WHERE (uidYearID = @uidYearID_Old) AND (intGLNumber = @REarnings)), 0)
			WHERE (intGLNumber = @REarnings)

			UPDATE tblAccountsLY
			SET decBalance = decOpenBalance + ISNULL((SELECT SUM(JE.decAmount) FROM tblJournalEntLY JE WHERE (JE.intGLNumber = tblAccountsLY.intGLNumber)), 0)
			WHERE (intGLNumber = @REarnings)

		END

		SET @bitFirstYear = 0

	END

	-- CURRENT YEAR
	DELETE FROM #Temp_TRAN
	DELETE FROM #Temp_HDR
	DELETE FROM #Temp_DTL
	DELETE FROM #Temp_OB
	DELETE FROM #Temp_BAL
	DELETE FROM #Temp_CB

	ALTER TABLE #Temp_TRAN
	DROP COLUMN [lngTrID]

	ALTER TABLE #Temp_TRAN
	ADD [lngTrID] [bigint] IDENTITY(1,1) NOT NULL

	SELECT @intFiscalYr = YEAR(dteYearEnds) FROM tblCompany

	INSERT INTO #Temp_TRAN (TransactionID, DDate, AutoNumber, PPeriod)
	SELECT	LT.TransactionID, 
			LT.DDate,
			MIN(LT.AutoNumber) AS AutoNumber,
			MAX(LT.PPeriod) AS PPeriod
	FROM tblUtilityPervLedgerTransactions LT
	CROSS JOIN tblCompany COMP
	WHERE (LT.DDate BETWEEN COMP.dteYearStarts AND COMP.dteYearEnds)
	AND (LT.GDC = 'G')
	GROUP BY LT.TransactionID, 
				LT.DDate
	ORDER BY LT.TransactionID, 
				LT.DDate

	SELECT @intHDRTotCount = COUNT(TransactionID)
	FROM #Temp_TRAN

	SELECT @intDTLTotCount = COUNT(LT.TransactionID)
	FROM #Temp_TRAN TMP
	INNER JOIN tblUtilityPervLedgerTransactions LT ON TMP.TransactionID  = LT.TransactionID
													AND TMP.DDate = LT.DDate
													AND TMP.PPeriod = LT.PPeriod

	SELECT @intOBTotCount = COUNT(intGLNumber)
	FROM #Temp_OB

	SELECT @intBALTotCount = COUNT(intGLNumber)
	FROM #Temp_BAL

	SELECT @intCBTotCount = COUNT(intGLNumber)
	FROM #Temp_CB

	SELECT @lngJourID = ISNULL(MAX(lngJourID), 0) FROM tblJournal

	UPDATE #Temp_TRAN
	SET lngJourID = Z.lngJourID_New 
	FROM (SELECT lngTrID, 
					ROW_NUMBER() OVER(ORDER BY lngTrID ASC) + @lngJourID AS lngJourID_New
			FROM #Temp_TRAN) Z
	WHERE #Temp_TRAN.lngTrID = Z.lngTrID

	INSERT INTO #Temp_HDR (lngTrID, dteJournalDate, strSource, strComment, strCuVeGeInID)
	SELECT	TMP.lngTrID,
			LT.DDate AS dteJournalDate, 
			SUBSTRING(LTRIM(RTRIM(ISNULL(LT.Refrence, ''))), 1, 100) AS strSource, 
			SUBSTRING(LTRIM(RTRIM(ISNULL(LT.[Description], ''))), 1, 400) AS strComment,
			CASE LT.GDC WHEN 'G' 
						THEN ACC.intGLNumber
						ELSE SUBSTRING(REPLACE(REPLACE(LTRIM(RTRIM(ISNULL(LT.AccNumber, ''))), '>', ''), '/', ''), 1, 50)
			END AS strCuVeGeInID
	FROM #Temp_TRAN TMP
	INNER JOIN tblUtilityPervLedgerTransactions LT ON TMP.TransactionID  = LT.TransactionID
													AND TMP.DDate = LT.DDate
													AND TMP.AutoNumber = LT.AutoNumber
													AND TMP.PPeriod = LT.PPeriod
	LEFT JOIN tblUtilityAccounts ACC ON REPLACE(REPLACE(LT.AccNumber, '>', ''), '/', '') = ACC.intPPGLNumber 
	ORDER BY LT.GDC, 
				LT.AutoNumber

	DELETE FROM #Temp_HDR
	WHERE lngID NOT IN (SELECT MIN(lngID)
						FROM #Temp_HDR
						GROUP BY lngTrID)

	DELETE FROM #Temp_TRAN
	WHERE lngTrID IN (SELECT TMP.lngTrID
						FROM #Temp_HDR TMP
						INNER JOIN tblJournal JNL ON TMP.dteJournalDate = JNL.dteJournalDate
												AND TMP.strSource = JNL.strSource
												AND TMP.strComment = JNL.strComment 
												AND TMP.strCuVeGeInID = JNL.strCuVeGeInID)

	INSERT INTO #Temp_DTL (lngTrID, intLineNum, intGLNumber, decAmount, decDebits, decCredits, strComment, decAmountF, decDebitsF, decCreditsF, strCurrency, decExchange)
	SELECT	TMP.lngTrID,
			ROW_NUMBER() OVER(PARTITION BY HDR.lngTrID ORDER BY HDR.lngID ASC) AS intLineNum,
			ACC.intGLNumber,
			ROUND(CASE WHEN ACC.intAccType BETWEEN 2 AND 4
					   THEN LT.Amount * -1
					   ELSE LT.Amount 
				  END, 2) AS decAmount, 
			ROUND(LT.Debit, 2) AS decDebits, 
			ROUND(LT.Credit, 2) AS decCredits, 
			SUBSTRING(REPLACE(REPLACE(LTRIM(RTRIM(LT.AccNumber)), '>', ''), '/', '') + ' - ' + LTRIM(RTRIM(LT.Refrence)) + ' - ' + LTRIM(RTRIM(LT.[Description])), 1, 200) AS strComment,
			ROUND(CASE WHEN CUR.strCurrency IS NULL 
					   THEN 0.00 
					   ELSE CASE WHEN ACC.intAccType BETWEEN 2 AND 4
								 THEN LT.CurrAmt * -1
								 ELSE LT.CurrAmt 
							END 
				  END, 2) AS decAmountF,
			ROUND(CASE WHEN CUR.strCurrency IS NULL 
					   THEN 0.00
					   ELSE LT.fForeignDebit
				  END, 2) AS decDebitsF, 
			ROUND(CASE WHEN CUR.strCurrency IS NULL 
					   THEN 0.00
					   ELSE LT.fForeignCredit
				  END, 2) AS decCreditsF, 
			CASE WHEN CUR.strCurrency IS NULL THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
			CASE WHEN CUR.strCurrency IS NULL 
					THEN 1.000000 
					ELSE CASE WHEN LT.Amount = 0.00 OR LT.CurrAmt  = 0.00 
							THEN 1.000000 
							ELSE ROUND(LT.Amount / LT.CurrAmt, 4) 
						END 
			END AS decExchange
	FROM #Temp_TRAN TMP
	INNER JOIN #Temp_HDR HDR ON TMP.lngTrID = HDR.lngTrID 
	INNER JOIN tblUtilityPervLedgerTransactions LT ON TMP.TransactionID  = LT.TransactionID
													AND TMP.DDate = LT.DDate
													AND TMP.PPeriod = LT.PPeriod
	LEFT JOIN tblUtilityAccounts ACC ON REPLACE(REPLACE(LT.AccNumber, '>', ''), '/', '') = ACC.intPPGLNumber 
	LEFT JOIN tblUtilityCurrency CUR ON LT.CurrCode = CUR.strPPCurrency 
	WHERE (LT.GDC = 'G') 
	ORDER BY HDR.lngID 

	INSERT INTO tblJournal (lngJourID, strUserName, dteSystemDate, dteJournalDate, intModule, intEntryType, strSource, strComment, strCuVeGeInID, intPayType, 
							bitIsTobeReversed, dteReverseDate, bitIsReversed)
	SELECT	TMP.lngJourID,
			@UserName AS strUserName,
			HDR.dteJournalDate AS dteSystemDate, 
			HDR.dteJournalDate AS dteJournalDate, 
			0 AS intModule,
			0 AS intEntryType,
			HDR.strSource, 
			HDR.strComment,
			HDR.strCuVeGeInID,
			0 AS intPayType,
			0 AS bitIsTobeReversed,
			NULL AS dteReverseDate,
			0 AS bitIsReversed
	FROM #Temp_TRAN TMP
	INNER JOIN #Temp_HDR HDR ON TMP.lngTrID = HDR.lngTrID 
	ORDER BY TMP.lngJourID,
				HDR.lngID 

	SELECT @intHDRRecCount = @@ROWCOUNT

	INSERT INTO tblJournalEnt (lngJourID, intLineNum, intGLNumber, decAmount, decDebits, decCredits, strComment, intDept, decAmountF, decDebitsF, decCreditsF, 
								strCurrency, decExchange, bitForeignAcct, decAllocatedAmtToDate, decUnAllocatedAmt, strFormula, bitVerified)
	SELECT	TMP.lngJourID,
			DTL.intLineNum,
			DTL.intGLNumber,
			DTL.decAmount,
			DTL.decDebits,
			DTL.decCredits, 
			DTL.strComment, 
			NULL AS intDept, 
			DTL.decAmountF, 
			DTL.decDebitsF, 
			DTL.decCreditsF, 
			DTL.strCurrency, 
			DTL.decExchange, 
			0 AS bitForeignAcct, 
			0.00 AS decAllocatedAmtToDate, 
			0.00 AS decUnAllocatedAmt, 
			NULL AS strFormula, 
			0 AS bitVerified
	FROM #Temp_TRAN TMP
	INNER JOIN #Temp_DTL DTL ON TMP.lngTrID = DTL.lngTrID 
	ORDER BY TMP.lngJourID,
				DTL.lngID 

	SELECT @intDTLRecCount = @@ROWCOUNT

	INSERT INTO #Temp_COUNT (intGLType, intFiscalYr, intHDRTotCount, intHDRRecCount, intDTLTotCount, intDTLRecCount, intOBTotCount, intOBRecCount, intBALTotCount, 
							 intBALRecCount, intCBTotCount, intCBRecCount)
	VALUES (@GLType, @intFiscalYr, @intHDRTotCount, @intHDRRecCount, @intDTLTotCount, @intDTLRecCount, @intOBTotCount, @intOBRecCount, @intBALTotCount, @intBALRecCount, 
			@intCBTotCount, @intCBRecCount)

	UPDATE tblAccounts
	SET decBalance = decOpenBalance + ISNULL((SELECT SUM(JE.decAmount) FROM tblJournalEnt JE WHERE (JE.intGLNumber = tblAccounts.intGLNumber)), 0)
	WHERE (intGLNumber <> @CEarnings
		   AND intGLNumber <> @REarnings)

	IF @bitFirstYear = 0
	BEGIN

		UPDATE tblAccounts
		SET decOpenBalance = CASE WHEN tblAccounts.intAccType >= 4 THEN tblAccounts.decOpenBalance ELSE TMP.decBalance END,
			decBalance = CASE WHEN tblAccounts.intAccType >= 4 THEN tblAccounts.decOpenBalance ELSE TMP.decBalance END + ISNULL((SELECT SUM(JE.decAmount) FROM tblJournalEnt JE WHERE (JE.intGLNumber = tblAccounts.intGLNumber)), 0),
			decLYEndBalance = TMP.decBalance
		FROM (SELECT intGLNumber, 
						decBalance
				FROM tblAccountsLY) TMP
		WHERE tblAccounts.intGLNumber = TMP.intGLNumber
		AND (tblAccounts.intGLNumber <> @CEarnings
			 AND tblAccounts.intGLNumber <> @REarnings)

	END

	UPDATE tblAccounts
	SET decBalance = ISNULL(((SELECT ISNULL(SUM(decBalance), 0) FROM tblAccounts WHERE (intAccType = 4)) - (SELECT ISNULL(SUM(decBalance), 0) FROM tblAccounts WHERE (intAccType = 5))), 0)
	WHERE (intGLNumber = @CEarnings)

	IF @bitFirstYear = 0
	BEGIN

		UPDATE tblAccounts
		SET decLYEndBalance = ISNULL((SELECT LY.decBalance FROM tblAccountsLY LY WHERE (LY.intGLNumber = tblAccounts.intGLNumber)), 0)
		WHERE (intGLNumber = @REarnings)

		UPDATE tblAccounts
		SET decLYEndBalance = ISNULL((SELECT LY.decBalance FROM tblAccountsLY LY WHERE (LY.intGLNumber = tblAccounts.intGLNumber)), 0)
		WHERE (intGLNumber = @CEarnings)

		UPDATE tblAccounts
		SET decOpenBalance = ISNULL((SELECT decBalance FROM tblAccountsLY WHERE (intGLNumber = @CEarnings)), 0) + ISNULL((SELECT decBalance FROM tblAccountsLY WHERE (intGLNumber = @REarnings)), 0)
		WHERE (intGLNumber = @REarnings)

		UPDATE tblAccounts
		SET decBalance = decOpenBalance + ISNULL((SELECT SUM(JE.decAmount) FROM tblJournalEnt JE WHERE (JE.intGLNumber = tblAccounts.intGLNumber)), 0)
		WHERE (intGLNumber = @REarnings)

	END

END
ELSE
BEGIN
SELECT @intFiscalYr = YEAR(dteYearEnds) FROM tblCompany
-- CURRENT YEAR
INSERT INTO #Temp_TRAN (TransactionID, DDate, AutoNumber)
SELECT	TransactionID, 
MAX(DDate) AS DDate,
MIN(AutoNumber) AS AutoNumber
FROM tblUtilityPervLedgerTransactions
WHERE (PPeriod BETWEEN 101 AND 112) 
GROUP BY TransactionID
ORDER BY TransactionID
INSERT INTO #Temp_OB (intGLNumber, decOpenBalance, decBalance)
SELECT	Z.intGLNumber,
CASE WHEN Z.intAccType BETWEEN 2 AND 4
THEN Z.decOpenBalance * -1
ELSE Z.decOpenBalance
END AS decOpenBalance,
CASE WHEN Z.intAccType BETWEEN 2 AND 4
THEN Z.decBalance * -1
ELSE Z.decBalance
END AS decBalance
FROM (SELECT ISNULL(ACC.intGLNumber, '') AS intGLNumber,
ROUND((LM.BalanceLast01 + LM.BalanceLast02 + LM.BalanceLast03 + LM.BalanceLast04 + LM.BalanceLast05 + LM.BalanceLast06 + LM.BalanceLast07 + LM.BalanceLast08 + 
LM.BalanceLast09 + LM.BalanceLast10 + LM.BalanceLast11 + LM.BalanceLast12), 2) AS decOpenBalance, 
ROUND((LM.BalanceLast01 + LM.BalanceLast02 + LM.BalanceLast03 + LM.BalanceLast04 + LM.BalanceLast05 + LM.BalanceLast06 + LM.BalanceLast07 + LM.BalanceLast08 + 
LM.BalanceLast09 + LM.BalanceLast10 + LM.BalanceLast11 + LM.BalanceLast12 + LM.BalanceThis01 + LM.BalanceThis02 + LM.BalanceThis03 + LM.BalanceThis04 + 
LM.BalanceThis05 + BalanceThis06 + LM.BalanceThis07 + LM.BalanceThis08 + LM.BalanceThis09 + LM.BalanceThis10 + LM.BalanceThis11 + LM.BalanceThis12), 2) AS decBalance,
ACC.intAccType 
FROM tblUtilityPervLedgerMaster LM
LEFT JOIN tblUtilityAccounts ACC ON LM.AccNumber = ACC.intPPGLNumber 
WHERE (LM.FinancialCategory < 90)
AND (LM.NumberSubAccs = 0)
AND (ROUND((LM.BalanceLast01 + LM.BalanceLast02 + LM.BalanceLast03 + LM.BalanceLast04 + LM.BalanceLast05 + LM.BalanceLast06 + LM.BalanceLast07 + LM.BalanceLast08 + 
LM.BalanceLast09 + LM.BalanceLast10 + LM.BalanceLast11 + LM.BalanceLast12), 2) <> 0 
OR ROUND((LM.BalanceThis01 + LM.BalanceThis02 + LM.BalanceThis03 + LM.BalanceThis04 + LM.BalanceThis05 + LM.BalanceThis06 + LM.BalanceThis07 + LM.BalanceThis08 + 
LM.BalanceThis09 + LM.BalanceThis10 + LM.BalanceThis11 + LM.BalanceThis12), 2) <> 0)) Z
INSERT INTO #Temp_BAL (intGLNumber, decBalance)
SELECT	Z.intGLNumber,
CASE WHEN Z.intAccType BETWEEN 2 AND 4
THEN Z.decBalance * -1
ELSE Z.decBalance
END AS decBalance
FROM (SELECT ISNULL(ACC.intGLNumber, '') AS intGLNumber,
ROUND((LM.BalanceThis01 + LM.BalanceThis02 + LM.BalanceThis03 + LM.BalanceThis04 + LM.BalanceThis05 + LM.BalanceThis06 + LM.BalanceThis07 + LM.BalanceThis08 + 
LM.BalanceThis09 + LM.BalanceThis10 + LM.BalanceThis11 + LM.BalanceThis12), 2) AS decBalance,
ACC.intAccType 
FROM tblUtilityPervLedgerMaster LM
LEFT JOIN tblUtilityAccounts ACC ON LM.AccNumber = ACC.intPPGLNumber  
WHERE (LM.FinancialCategory >= 90)
AND (LM.NumberSubAccs = 0)
AND (ROUND((LM.BalanceThis01 + LM.BalanceThis02 + LM.BalanceThis03 + LM.BalanceThis04 + LM.BalanceThis05 + LM.BalanceThis06 + LM.BalanceThis07 + LM.BalanceThis08 + 
LM.BalanceThis09 + LM.BalanceThis10 + LM.BalanceThis11 + LM.BalanceThis12), 2) <> 0)) Z
INSERT INTO #Temp_CB (intGLNumber, decOpenBalanceF, decBalanceF)
SELECT	Z.intGLNumber,
CASE WHEN Z.intAccType BETWEEN 2 AND 4
THEN Z.decOpenBalanceF * -1
ELSE Z.decOpenBalanceF
END AS decOpenBalance,
CASE WHEN Z.intAccType BETWEEN 2 AND 4
THEN Z.decBalanceF * -1
ELSE Z.decBalanceF
END AS decBalance
FROM (SELECT ISNULL(ACC.intGLNumber, '') AS intGLNumber,
ROUND((CB.LastBalance01 + CB.LastBalance02 + CB.LastBalance03 + CB.LastBalance04 + CB.LastBalance05 + CB.LastBalance06 + CB.LastBalance07 + CB.LastBalance08 + 
CB.LastBalance09 + CB.LastBalance10 + CB.LastBalance11 + CB.LastBalance12), 2) AS decOpenBalanceF, 
ROUND((CB.LastBalance01 + CB.LastBalance02 + CB.LastBalance03 + CB.LastBalance04 + CB.LastBalance05 + CB.LastBalance06 + CB.LastBalance07 + CB.LastBalance08 + 
CB.LastBalance09 + CB.LastBalance10 + CB.LastBalance11 + CB.LastBalance12 + CB.Balance01 + CB.Balance02 + CB.Balance03 + CB.Balance04 + CB.Balance05 + 
CB.Balance06 + CB.Balance07 + CB.Balance08 + CB.Balance09 + CB.Balance10 + CB.Balance11 + CB.Balance12), 2) AS decBalanceF,
ACC.intAccType 
FROM tblUtilityPervCashBookCurrency CB
LEFT JOIN tblUtilityAccounts ACC ON CB.AccNumber = ACC.intPPGLNumber 
WHERE (ROUND((CB.LastBalance01 + CB.LastBalance02 + CB.LastBalance03 + CB.LastBalance04 + CB.LastBalance05 + CB.LastBalance06 + CB.LastBalance07 + CB.LastBalance08 + 
CB.LastBalance09 + CB.LastBalance10 + CB.LastBalance11 + CB.LastBalance12), 2) <> 0 
OR ROUND((CB.Balance01 + CB.Balance02 + CB.Balance03 + CB.Balance04 + CB.Balance05 + CB.Balance06 + CB.Balance07 + CB.Balance08 + CB.Balance09 + CB.Balance10 + 
CB.Balance11 + CB.Balance12), 2) <> 0)) Z
SELECT @intHDRTotCount = COUNT(TransactionID)
FROM #Temp_TRAN
SELECT @intDTLTotCount = COUNT(LT.TransactionID)
FROM #Temp_TRAN TMP
INNER JOIN tblUtilityPervLedgerTransactions LT ON TMP.TransactionID  = LT.TransactionID
SELECT @intOBTotCount = COUNT(intGLNumber)
FROM #Temp_OB
SELECT @intBALTotCount = COUNT(intGLNumber)
FROM #Temp_BAL
SELECT @intCBTotCount = COUNT(intGLNumber)
FROM #Temp_CB
SELECT @lngJourID = ISNULL(MAX(lngJourID), 0) FROM tblJournal
UPDATE #Temp_TRAN
SET lngJourID = Z.lngJourID_New 
FROM (SELECT lngTrID, 
ROW_NUMBER() OVER(ORDER BY lngTrID ASC) + @lngJourID AS lngJourID_New
FROM #Temp_TRAN) Z
WHERE #Temp_TRAN.lngTrID = Z.lngTrID
INSERT INTO #Temp_HDR (lngTrID, dteJournalDate, strSource, strComment, strCuVeGeInID)
SELECT	TMP.lngTrID,
CASE WHEN LT.DDate < CMP.dteYearStarts 
THEN CMP.dteYearStarts 
ELSE CASE WHEN LT.DDate > CMP.dteYearEnds 
THEN CMP.dteYearEnds 
ELSE LT.DDate
END
END AS dteJournalDate, 
SUBSTRING(LTRIM(RTRIM(ISNULL(LT.Refrence, ''))), 1, 100) AS strSource, 
SUBSTRING(LTRIM(RTRIM(ISNULL(LT.[Description], ''))), 1, 400) AS strComment,
SUBSTRING(LTRIM(RTRIM(ISNULL(LT.AccNumber, ''))), 1, 50) AS strCuVeGeInID
FROM #Temp_TRAN TMP
INNER JOIN tblUtilityPervLedgerTransactions LT ON TMP.TransactionID  = LT.TransactionID AND TMP.AutoNumber = LT.AutoNumber
CROSS JOIN tblCompany CMP
WHERE (LT.PPeriod BETWEEN 101 AND 112) 
ORDER BY LT.GDC, 
LT.AutoNumber
DELETE FROM #Temp_TRAN
WHERE lngTrID IN (SELECT TMP.lngTrID
FROM #Temp_HDR TMP
INNER JOIN tblJournal JNL ON TMP.dteJournalDate = JNL.dteJournalDate
AND TMP.strSource = JNL.strSource
AND TMP.strComment = JNL.strComment 
AND TMP.strCuVeGeInID = JNL.strCuVeGeInID)
INSERT INTO #Temp_DTL (lngTrID, intLineNum, intGLNumber, decAmount, decDebits, decCredits, strComment, decAmountF, decDebitsF, decCreditsF, strCurrency, decExchange)
SELECT	TMP.lngTrID,
ROW_NUMBER() OVER(PARTITION BY HDR.lngTrID ORDER BY HDR.lngID ASC) AS intLineNum,
CASE LT.GDC WHEN 'C' THEN @APControlAcc 
WHEN 'D' THEN @ARControlAcc 
WHEN 'G' THEN ACC.intGLNumber 
END AS intGLNumber,
ROUND(CASE WHEN ACC.intAccType BETWEEN 2 AND 4
THEN LT.CurrAmt * -1
ELSE LT.CurrAmt 
END, 2) AS decAmount, 
ROUND(CASE WHEN LT.CurrAmt >= 0.00
THEN LT.CurrAmt
ELSE 0.00
END, 2) AS decDebits, 
ROUND(CASE WHEN LT.CurrAmt >= 0.00
THEN 0.00
ELSE LT.CurrAmt * -1
END, 2) AS decCredits, 
SUBSTRING(LTRIM(RTRIM(LT.AccNumber)) + ' - ' + LTRIM(RTRIM(LT.Refrence)) + ' - ' + LTRIM(RTRIM(LT.[Description])), 1, 200) AS strComment,
ROUND(CASE WHEN ISNULL(CURH.bitHome, 1) = 1 
THEN 0.00
ELSE CASE WHEN ACC.intAccType BETWEEN 2 AND 4
THEN LT.Amount * -1 
ELSE LT.Amount
END
END, 2) AS decAmountF, 
ROUND(CASE WHEN ISNULL(CURH.bitHome, 1) = 1 
THEN 0.00
ELSE CASE WHEN LT.Amount >= 0.00
THEN LT.Amount
ELSE 0.00
END
END, 2) AS decDebitsF, 
ROUND(CASE WHEN ISNULL(CURH.bitHome, 1) = 1 
THEN 0.00
ELSE CASE WHEN LT.Amount >= 0.00
THEN 0.00
ELSE LT.Amount * -1
END
END, 2) AS decCreditsF, 
CASE WHEN ISNULL(CURH.bitHome, 1) = 1 THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
CASE WHEN ISNULL(CURH.bitHome, 1) = 1 
THEN 1.000000 
ELSE CASE WHEN LT.Amount = 0.00 OR LT.CurrAmt  = 0.00 
THEN 1.000000 
ELSE ROUND(LT.Amount / LT.CurrAmt, 4) 
END 
END AS decExchange
FROM #Temp_TRAN TMP
INNER JOIN #Temp_HDR HDR ON TMP.lngTrID = HDR.lngTrID 
INNER JOIN tblUtilityPervLedgerTransactions LT ON TMP.TransactionID  = LT.TransactionID
LEFT JOIN tblUtilityAccounts ACC ON CASE LT.GDC WHEN 'C' THEN @APControlAcc WHEN 'D' THEN @ARControlAcc ELSE LT.AccNumber END = CASE LT.GDC WHEN 'G' THEN ACC.intPPGLNumber ELSE ACC.intGLNumber END 
LEFT JOIN tblUtilityCurrency CUR ON LT.CurrCode = CUR.strPPCurrency 
LEFT JOIN tblCurrency CURH ON CUR.strCurrency = CURH.strCurrency 
WHERE (LT.PPeriod BETWEEN 101 AND 112) 
ORDER BY HDR.lngID 
INSERT INTO tblJournal (lngJourID, strUserName, dteSystemDate, dteJournalDate, intModule, intEntryType, strSource, strComment, strCuVeGeInID, intPayType, 
bitIsTobeReversed, dteReverseDate, bitIsReversed)
SELECT	TMP.lngJourID,
@UserName AS strUserName,
HDR.dteJournalDate AS dteSystemDate, 
HDR.dteJournalDate AS dteJournalDate, 
0 AS intModule,
0 AS intEntryType,
HDR.strSource, 
HDR.strComment,
HDR.strCuVeGeInID,
0 AS intPayType,
0 AS bitIsTobeReversed,
NULL AS dteReverseDate,
0 AS bitIsReversed
FROM #Temp_TRAN TMP
INNER JOIN #Temp_HDR HDR ON TMP.lngTrID = HDR.lngTrID
WHERE HDR.lngID IN (SELECT MIN(lngID) FROM #Temp_HDR GROUP BY lngTrID) 
ORDER BY TMP.lngJourID,
HDR.lngID 
SELECT @intHDRRecCount = @@ROWCOUNT
INSERT INTO tblJournalEnt (lngJourID, intLineNum, intGLNumber, decAmount, decDebits, decCredits, strComment, intDept, decAmountF, decDebitsF, decCreditsF, 
strCurrency, decExchange, bitForeignAcct, decAllocatedAmtToDate, decUnAllocatedAmt, strFormula, bitVerified)
SELECT	TMP.lngJourID,
DTL.intLineNum,
DTL.intGLNumber,
DTL.decAmount,
DTL.decDebits,
DTL.decCredits, 
DTL.strComment, 
NULL AS intDept, 
DTL.decAmountF, 
DTL.decDebitsF, 
DTL.decCreditsF, 
DTL.strCurrency, 
DTL.decExchange, 
0 AS bitForeignAcct, 
0.00 AS decAllocatedAmtToDate, 
0.00 AS decUnAllocatedAmt, 
NULL AS strFormula, 
0 AS bitVerified
FROM #Temp_TRAN TMP
INNER JOIN #Temp_DTL DTL ON TMP.lngTrID = DTL.lngTrID 
ORDER BY TMP.lngJourID,
DTL.lngID 
SELECT @intDTLRecCount = @@ROWCOUNT
-- UPDATE ACCOUNT OPENING & RUNNINIG BALANCES
UPDATE tblAccounts 
SET decOpenBalance = TMP.decOpenBalance, 
decBalance = TMP.decBalance, 
decLYEndBalance = TMP.decOpenBalance 
FROM #Temp_OB TMP
WHERE tblAccounts.intGLNumber = TMP.intGLNumber
SELECT @intOBRecCount = @@ROWCOUNT
-- UPDATE INCOME & EXPENSE ACCOUNT RUNNING BALANCES
UPDATE tblAccounts 
SET decBalance = TMP.decBalance 
FROM #Temp_BAL TMP
WHERE tblAccounts.intGLNumber = TMP.intGLNumber
SELECT @intBALRecCount = @@ROWCOUNT
-- UPDATE ACCOUNT OPENING & RUNNING BALANCES (FOREIGN)
UPDATE tblAccounts 
SET decOpenBalanceF = TMP.decOpenBalanceF, 
decBalanceF = TMP.decBalanceF, 
decLYEndBalanceF = TMP.decOpenBalanceF
FROM #Temp_CB TMP
WHERE (tblAccounts.intGLNumber = TMP.intGLNumber)
AND (tblAccounts.decBalance <> TMP.decBalanceF)
SELECT @intCBRecCount = @@ROWCOUNT
-- (RETAINED EARNINGS) = (LAST YEAR BALANCE) - (LAST PROFIT & LOSS)
SELECT	TOP 1 
@decLastProfitLossAmt = LastProfitLossAmt 
FROM tblUtilityPervLedgerParameters
SET @decLastProfitLossAmt = ISNULL(@decLastProfitLossAmt, 0.00) * -1
UPDATE tblAccounts 
SET decOpenBalance = decOpenBalance + @decLastProfitLossAmt, 
decBalance = decBalance + @decLastProfitLossAmt, 
decLYEndBalance = decOpenBalance 
WHERE (bitIsLinkedAccount = 1)
AND (bitLinkREarnings = 1)
-- (CURRENT EARNINGS) = (TOTAL REVENUES) - (TOTAL EXPENSES)
UPDATE tblAccounts 
SET decBalance = ((SELECT SUM(decBalance) 
FROM tblAccounts 
WHERE (intAccType = 4)) - (SELECT SUM(decBalance) 
FROM tblAccounts 
WHERE (intAccType = 5))), 
decLYEndBalance = (SELECT decBalance 
FROM tblAccounts 
WHERE (bitIsLinkedAccount = 1) 
AND (bitLinkREarnings = 1)) 
WHERE (bitIsLinkedAccount = 1)
AND (bitLinkCEarnings = 1)
INSERT INTO #Temp_COUNT (intGLType, intFiscalYr, intHDRTotCount, intHDRRecCount, intDTLTotCount, intDTLRecCount, intOBTotCount, intOBRecCount, intBALTotCount, 
intBALRecCount, intCBTotCount, intCBRecCount)
VALUES (@GLType, @intFiscalYr, @intHDRTotCount, @intHDRRecCount, @intDTLTotCount, @intDTLRecCount, @intOBTotCount, @intOBRecCount, @intBALTotCount, @intBALRecCount, 
@intCBTotCount, @intCBRecCount)
IF @GLType > 0	-- PREVIOUS YEAR
BEGIN
DELETE FROM #Temp_TRAN
DELETE FROM #Temp_HDR
DELETE FROM #Temp_DTL
DELETE FROM #Temp_OB
DELETE FROM #Temp_BAL
DELETE FROM #Temp_CB
ALTER TABLE #Temp_TRAN
DROP COLUMN [lngTrID]
ALTER TABLE #Temp_TRAN
ADD [lngTrID] [bigint] IDENTITY(1,1) NOT NULL
SELECT @intFiscalYr = YEAR(dteLYEnded) FROM tblCompany
INSERT INTO tblAccountsLY (intGLNumber, strDesc, intAccType, intGroupCode, intAccClass, bitInactive, decOpenBalance, decBalance, decLYOpenBalance, decLYEndBalance, 
bitBank, bitRecon, bitInventory, bitBudget, bitUsed, bitUsedLY, bitLinkREarnings, bitLinkCEarnings, bitLinkAP, bitLinkPurDisc, bitLinkAR, 
bitLinkSalesDisc, bitLinkAssCosts, bitLinkAdjWriteOff, bitIsLinkedAccount, bitDefBank, bitLinkDeposit, bitLinkPrePay, strField1, strField2, 
strField3, strField4, strField5, strField6, bitLinkExc, bitAllowCenters, intCheqNumber, strCurrency, decOpenBalanceF, decBalanceF, 
decLYOpenBalanceF, decLYEndBalanceF, bitLinkGRV, bitLinkAddCost, bitLinkDelAdvice, bitLinkWIP, bitLinkManStandardCost, bitLinkWorkshopWIP, 
bitLinkGoodsInTransit, bitLinkARCustMast, bitLinkDepositCustMast, bitLinkAPVendMast, bitLinkPrepayVendMast)
SELECT	intGLNumber, 
strDesc, 
intAccType, 
intGroupCode, 
intAccClass, 
bitInactive, 
0.00 AS decOpenBalance, 
0.00 AS decBalance, 
0.00 AS decLYOpenBalance, 
0.00 AS decLYEndBalance, 
bitBank, 
bitRecon, 
bitInventory, 
bitBudget, 
0 AS bitUsed, 
0 AS bitUsedLY, 
bitLinkREarnings, 
bitLinkCEarnings, 
bitLinkAP, 
bitLinkPurDisc, 
bitLinkAR, 
bitLinkSalesDisc, 
bitLinkAssCosts, 
bitLinkAdjWriteOff, 
bitIsLinkedAccount, 
bitDefBank, 
bitLinkDeposit, 
bitLinkPrePay, 
strField1, 
strField2, 
strField3, 
strField4, 
strField5, 
strField6, 
bitLinkExc, 
bitAllowCenters, 
intCheqNumber, 
strCurrency, 
0.00 AS decOpenBalanceF, 
0.00 AS decBalanceF, 
0.00 AS decLYOpenBalanceF, 
0.00 AS decLYEndBalanceF, 
bitLinkGRV, 
bitLinkAddCost, 
bitLinkDelAdvice, 
bitLinkWIP, 
bitLinkManStandardCost, 
bitLinkWorkshopWIP, 
bitLinkGoodsInTransit,
bitLinkARCustMast, 
bitLinkDepositCustMast, 
bitLinkAPVendMast, 
bitLinkPrepayVendMast
FROM tblAccounts 
WHERE intGLNumber NOT IN (SELECT intGLNumber 
FROM tblAccountsLY)
INSERT INTO #Temp_TRAN (TransactionID, DDate, AutoNumber)
SELECT	TransactionID, 
MAX(DDate) AS DDate,
MIN(AutoNumber) AS AutoNumber
FROM tblUtilityPervLedgerTransactions 
WHERE (PPeriod BETWEEN 1 AND 12) 
GROUP BY TransactionID
ORDER BY TransactionID
INSERT INTO #Temp_OB (intGLNumber, decBalance)
SELECT	Z.intGLNumber,
CASE WHEN Z.intAccType BETWEEN 2 AND 4
THEN Z.decBalance * -1
ELSE Z.decBalance
END AS decBalance
FROM (SELECT ISNULL(ACC.intGLNumber, '') AS intGLNumber,
ROUND((LM.BalanceLast01 + LM.BalanceLast02 + LM.BalanceLast03 + LM.BalanceLast04 + LM.BalanceLast05 + LM.BalanceLast06 + LM.BalanceLast07 + LM.BalanceLast08 + 
LM.BalanceLast09 + LM.BalanceLast10 + LM.BalanceLast11 + LM.BalanceLast12), 2) AS decBalance,
ACC.intAccType 
FROM tblUtilityPervLedgerMaster LM
LEFT JOIN tblUtilityAccounts ACC ON LM.AccNumber = ACC.intPPGLNumber 
WHERE (LM.FinancialCategory < 90)
AND (LM.NumberSubAccs = 0)
AND (ROUND((LM.BalanceLast01 + LM.BalanceLast02 + LM.BalanceLast03 + LM.BalanceLast04 + LM.BalanceLast05 + LM.BalanceLast06 + LM.BalanceLast07 + LM.BalanceLast08 + 
LM.BalanceLast09 + LM.BalanceLast10 + LM.BalanceLast11 + LM.BalanceLast12), 2) <> 0)) Z
INSERT INTO #Temp_BAL (intGLNumber, decBalance)
SELECT	Z.intGLNumber,
CASE WHEN Z.intAccType BETWEEN 2 AND 4
THEN Z.decBalance * -1
ELSE Z.decBalance
END AS decBalance
FROM (SELECT ISNULL(ACC.intGLNumber, '') AS intGLNumber,
ROUND((LM.BalanceLast01 + LM.BalanceLast02 + LM.BalanceLast03 + LM.BalanceLast04 + LM.BalanceLast05 + LM.BalanceLast06 + LM.BalanceLast07 + LM.BalanceLast08 + 
LM.BalanceLast09 + LM.BalanceLast10 + LM.BalanceLast11 + LM.BalanceLast12), 2) AS decBalance,
ACC.intAccType 
FROM tblUtilityPervLedgerMaster LM
LEFT JOIN tblUtilityAccounts ACC ON LM.AccNumber = ACC.intPPGLNumber  
WHERE (LM.FinancialCategory >= 90)
AND (LM.NumberSubAccs = 0)
AND (ROUND((LM.BalanceLast01 + LM.BalanceLast02 + LM.BalanceLast03 + LM.BalanceLast04 + LM.BalanceLast05 + LM.BalanceLast06 + LM.BalanceLast07 + LM.BalanceLast08 + 
LM.BalanceLast09 + LM.BalanceLast10 + LM.BalanceLast11 + LM.BalanceLast12), 2) <> 0)) Z
INSERT INTO #Temp_CB (intGLNumber, decBalanceF)
SELECT	Z.intGLNumber,
CASE WHEN Z.intAccType BETWEEN 2 AND 4
THEN Z.decBalanceF * -1
ELSE Z.decBalanceF
END AS decBalance
FROM (SELECT ISNULL(ACC.intGLNumber, '') AS intGLNumber,
ROUND((CB.LastBalance01 + CB.LastBalance02 + CB.LastBalance03 + CB.LastBalance04 + CB.LastBalance05 + CB.LastBalance06 + CB.LastBalance07 + CB.LastBalance08 + 
CB.LastBalance09 + CB.LastBalance10 + CB.LastBalance11 + CB.LastBalance12), 2) AS decBalanceF,
ACC.intAccType 
FROM tblUtilityPervCashBookCurrency CB
LEFT JOIN tblUtilityAccounts ACC ON CB.AccNumber = ACC.intPPGLNumber 
WHERE (ROUND((CB.LastBalance01 + CB.LastBalance02 + CB.LastBalance03 + CB.LastBalance04 + CB.LastBalance05 + CB.LastBalance06 + CB.LastBalance07 + CB.LastBalance08 + 
CB.LastBalance09 + CB.LastBalance10 + CB.LastBalance11 + CB.LastBalance12), 2) <> 0)) Z
SELECT @intHDRTotCount = COUNT(TransactionID)
FROM #Temp_TRAN
SELECT @intDTLTotCount = COUNT(LT.TransactionID)
FROM #Temp_TRAN TMP
INNER JOIN tblUtilityPervLedgerTransactions LT ON TMP.TransactionID  = LT.TransactionID
SELECT @intOBTotCount = COUNT(intGLNumber)
FROM #Temp_OB
SELECT @intBALTotCount = COUNT(intGLNumber)
FROM #Temp_BAL
SELECT @intCBTotCount = COUNT(intGLNumber)
FROM #Temp_CB
SELECT @lngJourID = ISNULL(MAX(lngJourID), 0) FROM tblJournalLY
UPDATE #Temp_TRAN
SET lngJourID = Z.lngJourID_New 
FROM (SELECT lngTrID, 
ROW_NUMBER() OVER(ORDER BY lngTrID ASC) + @lngJourID AS lngJourID_New
FROM #Temp_TRAN) Z
WHERE #Temp_TRAN.lngTrID = Z.lngTrID
INSERT INTO #Temp_HDR (lngTrID, dteJournalDate, strSource, strComment, strCuVeGeInID)
SELECT	TMP.lngTrID,
CASE WHEN LT.DDate < CMP.dteLYStarted  
THEN CMP.dteLYStarted 
ELSE CASE WHEN LT.DDate > CMP.dteLYEnded  
THEN CMP.dteLYEnded 
ELSE LT.DDate
END
END AS dteJournalDate, 
SUBSTRING(LTRIM(RTRIM(ISNULL(LT.Refrence, ''))), 1, 100) AS strSource, 
SUBSTRING(LTRIM(RTRIM(ISNULL(LT.[Description], ''))), 1, 400) AS strComment,
SUBSTRING(LTRIM(RTRIM(ISNULL(LT.AccNumber, ''))), 1, 50) AS strCuVeGeInID
FROM #Temp_TRAN TMP
INNER JOIN tblUtilityPervLedgerTransactions LT ON TMP.TransactionID  = LT.TransactionID AND TMP.AutoNumber = LT.AutoNumber 
CROSS JOIN tblCompany CMP
WHERE (LT.PPeriod BETWEEN 1 AND 12) 
ORDER BY LT.GDC, 
LT.AutoNumber
DELETE FROM #Temp_TRAN
WHERE lngTrID IN (SELECT TMP.lngTrID
FROM #Temp_HDR TMP
INNER JOIN tblJournalLY JNL ON TMP.dteJournalDate = JNL.dteJournalDate
AND TMP.strSource = JNL.strSource
AND TMP.strComment = JNL.strComment 
AND TMP.strCuVeGeInID = JNL.strCuVeGeInID)
INSERT INTO #Temp_DTL (lngTrID, intLineNum, intGLNumber, decAmount, decDebits, decCredits, strComment, decAmountF, decDebitsF, decCreditsF, strCurrency, decExchange)
SELECT	TMP.lngTrID,
ROW_NUMBER() OVER(PARTITION BY HDR.lngTrID ORDER BY HDR.lngID ASC) AS intLineNum,
CASE LT.GDC WHEN 'C' THEN @APControlAcc 
WHEN 'D' THEN @ARControlAcc 
WHEN 'G' THEN ACC.intGLNumber 
END AS intGLNumber,
ROUND(CASE WHEN ACC.intAccType BETWEEN 2 AND 4
THEN LT.CurrAmt * -1
ELSE LT.CurrAmt 
END, 2) AS decAmount, 
ROUND(CASE WHEN LT.CurrAmt >= 0.00
THEN LT.CurrAmt
ELSE 0.00
END, 2) AS decDebits, 
ROUND(CASE WHEN LT.CurrAmt >= 0.00
THEN 0.00
ELSE LT.CurrAmt * -1
END, 2) AS decCredits, 
SUBSTRING(LTRIM(RTRIM(LT.AccNumber)) + ' - ' + LTRIM(RTRIM(LT.Refrence)) + ' - ' + LTRIM(RTRIM(LT.[Description])), 1, 200) AS strComment,
ROUND(CASE WHEN ISNULL(CURH.bitHome, 1) = 1 
THEN 0.00
ELSE CASE WHEN ACC.intAccType BETWEEN 2 AND 4
THEN LT.Amount * -1 
ELSE LT.Amount
END
END, 2) AS decAmountF, 
ROUND(CASE WHEN ISNULL(CURH.bitHome, 1) = 1 
THEN 0.00
ELSE CASE WHEN LT.Amount >= 0.00
THEN LT.Amount
ELSE 0.00
END
END, 2) AS decDebitsF, 
ROUND(CASE WHEN ISNULL(CURH.bitHome, 1) = 1 
THEN 0.00
ELSE CASE WHEN LT.Amount >= 0.00
THEN 0.00
ELSE LT.Amount * -1
END
END, 2) AS decCreditsF, 
CASE WHEN ISNULL(CURH.bitHome, 1) = 1 THEN @strCurrency ELSE CUR.strCurrency END AS strCurrency,
CASE WHEN ISNULL(CURH.bitHome, 1) = 1
THEN 1.000000 
ELSE CASE WHEN LT.Amount = 0.00 OR LT.CurrAmt  = 0.00 
THEN 1.000000 
ELSE ROUND(LT.Amount / LT.CurrAmt, 4) 
END 
END AS decExchange
FROM #Temp_TRAN TMP
INNER JOIN #Temp_HDR HDR ON TMP.lngTrID = HDR.lngTrID 
INNER JOIN tblUtilityPervLedgerTransactions LT ON TMP.TransactionID  = LT.TransactionID
LEFT JOIN tblUtilityAccounts ACC ON CASE LT.GDC WHEN 'C' THEN @APControlAcc WHEN 'D' THEN @ARControlAcc ELSE LT.AccNumber END = CASE LT.GDC WHEN 'G' THEN ACC.intPPGLNumber ELSE ACC.intGLNumber END 
LEFT JOIN tblUtilityCurrency CUR ON LT.CurrCode = CUR.strPPCurrency 
LEFT JOIN tblCurrency CURH ON CUR.strCurrency = CURH.strCurrency 
WHERE (LT.PPeriod BETWEEN 1 AND 12) 
ORDER BY HDR.lngID 
INSERT INTO tblJournalLY (lngJourID, strUserName, dteSystemDate, dteJournalDate, intModule, intEntryType, strSource, strComment, strCuVeGeInID, intPayType, 
bitIsTobeReversed, dteReverseDate, bitIsReversed)
SELECT	TMP.lngJourID,
@UserName AS strUserName,
HDR.dteJournalDate AS dteSystemDate, 
HDR.dteJournalDate AS dteJournalDate, 
0 AS intModule,
0 AS intEntryType,
HDR.strSource, 
HDR.strComment,
HDR.strCuVeGeInID,
0 AS intPayType,
0 AS bitIsTobeReversed,
NULL AS dteReverseDate,
0 AS bitIsReversed
FROM #Temp_TRAN TMP
INNER JOIN #Temp_HDR HDR ON TMP.lngTrID = HDR.lngTrID 
WHERE HDR.lngID IN (SELECT MIN(lngID) FROM #Temp_HDR GROUP BY lngTrID) 
ORDER BY TMP.lngJourID,
HDR.lngID 
SELECT @intHDRRecCount = @@ROWCOUNT
INSERT INTO tblJournalEntLY (lngJourID, intLineNum, intGLNumber, decAmount, decDebits, decCredits, strComment, intDept, decAmountF, decDebitsF, decCreditsF, 
strCurrency, decExchange, bitForeignAcct, decAllocatedAmtToDate, decUnAllocatedAmt, strFormula, bitVerified)
SELECT	TMP.lngJourID,
DTL.intLineNum,
DTL.intGLNumber,
DTL.decAmount,
DTL.decDebits,
DTL.decCredits, 
DTL.strComment, 
NULL AS intDept, 
DTL.decAmountF, 
DTL.decDebitsF, 
DTL.decCreditsF, 
DTL.strCurrency, 
DTL.decExchange, 
0 AS bitForeignAcct, 
0.00 AS decAllocatedAmtToDate, 
0.00 AS decUnAllocatedAmt, 
NULL AS strFormula, 
0 AS bitVerified
FROM #Temp_TRAN TMP
INNER JOIN #Temp_DTL DTL ON TMP.lngTrID = DTL.lngTrID 
ORDER BY TMP.lngJourID,
DTL.lngID 
SELECT @intDTLRecCount = @@ROWCOUNT
-- UPDATE ACCOUNT RUNNING BALANCES
UPDATE tblAccountsLY 
SET decBalance = TMP.decBalance
FROM #Temp_OB TMP
WHERE tblAccountsLY.intGLNumber = TMP.intGLNumber
SELECT @intOBRecCount = @@ROWCOUNT
-- UPDATE INCOME & EXPENSE ACCOUNT RUNNING BALANCES
UPDATE tblAccountsLY 
SET decBalance = TMP.decBalance 
FROM #Temp_BAL TMP
WHERE tblAccountsLY.intGLNumber = TMP.intGLNumber
SELECT @intBALRecCount = @@ROWCOUNT
-- UPDATE ACCOUNT RUNNING BALANCES (FOREIGN)
UPDATE tblAccountsLY 
SET decBalanceF = TMP.decBalanceF
FROM #Temp_CB TMP
WHERE (tblAccountsLY.intGLNumber = TMP.intGLNumber)
AND (tblAccountsLY.decBalance <> TMP.decBalanceF)
SELECT @intCBRecCount = @@ROWCOUNT
-- CURRENT YEAR: UPDATE LAST YEAR END BALANCES (ASSETS, LIABILITIES & OWNERS EQUITY)
UPDATE tblAccounts 
SET decLYEndBalance = decOpenBalance 
WHERE (intAccType < 4) 
AND (bitLinkREarnings = 0) 
AND (bitLinkCEarnings = 0)
-- CURRENT YEAR: UPDATE LAST YEAR END BALANCES (RETAINED EARNINGS)
UPDATE tblAccounts 
SET decLYEndBalance = ISNULL((SELECT decBalance 
FROM tblAccountsLY 
WHERE (bitIsLinkedAccount = 1)
AND (bitLinkREarnings = 1)), 0) 
WHERE (bitIsLinkedAccount = 1) 
AND (bitLinkREarnings = 1)
-- (CURRENT EARNINGS) = (TOTAL REVENUES) - (TOTAL EXPENSES)
UPDATE tblAccountsLY 
SET decBalance = ISNULL(((SELECT SUM(decBalance) 
FROM tblAccountsLY 
WHERE (intAccType = 4)) - (SELECT SUM(decBalance) 
FROM tblAccountsLY 
WHERE (intAccType = 5))), 0) 
WHERE (bitIsLinkedAccount = 1) 
AND (bitLinkCEarnings = 1)
-- CURRENT YEAR: UPDATE LAST YEAR END BALANCES (CURRENT EARNINGS)
UPDATE tblAccounts 
SET decLYEndBalance = ISNULL((SELECT decBalance 
FROM tblAccountsLY 
WHERE (bitIsLinkedAccount = 1) 
AND (bitLinkCEarnings = 1)), 0) 
WHERE (bitIsLinkedAccount = 1) 
AND (bitLinkCEarnings = 1)
-- UPDATE ACCOUNT OPENING BALANCES
UPDATE tblAccountsLY 
SET decOpenBalance = (ISNULL((SELECT SUM(JE.decAmount) 
FROM tblJournalEntLY JE 
WHERE JE.intGLNumber = tblAccountsLY.intGLNumber), 0) * -1) + tblAccountsLY.decBalance 
WHERE (tblAccountsLY.intAccType < 4)
INSERT INTO #Temp_COUNT (intGLType, intFiscalYr, intHDRTotCount, intHDRRecCount, intDTLTotCount, intDTLRecCount, intOBTotCount, intOBRecCount, intBALTotCount, 
intBALRecCount, intCBTotCount, intCBRecCount)
VALUES (@GLType, @intFiscalYr, @intHDRTotCount, @intHDRRecCount, @intDTLTotCount, @intDTLRecCount, @intOBTotCount, @intOBRecCount, @intBALTotCount, @intBALRecCount, 
@intCBTotCount, @intCBRecCount)
END
END
SELECT	CAST(intGLType AS int) as intGLType, 
intFiscalYr, 
intHDRTotCount, 
intHDRRecCount, 
intDTLTotCount, 
intDTLRecCount, 
intOBTotCount, 
intOBRecCount, 
intBALTotCount, 
intBALRecCount, 
intCBTotCount, 
intCBRecCount 
FROM #Temp_COUNT 
ORDER BY intFiscalYr DESC
DROP TABLE #Temp_COUNT
DROP TABLE #Temp_TRAN 
DROP TABLE #Temp_HDR
DROP TABLE #Temp_DTL
DROP TABLE #Temp_OB
DROP TABLE #Temp_BAL
DROP TABLE #Temp_CB
DROP TABLE #Temp_HIST
GO

/****** Object:  StoredProcedure [dbo].[AuthenticateCurrentPassword]    Script Date: 22-06-2021 17:48:00 ******/
CREATE PROCEDURE AuthenticateCurrentPassword @userName NVARCHAR(20)
	,@password NVARCHAR(2000)
AS
BEGIN
	SELECT count(*)
	FROM tblUsers
	WHERE strUserName = @userName
		AND strPassword = @passWord
END
GO

/****** Object:  StoredProcedure [dbo].[SaveNewPassword]    Script Date: 22-06-2021 17:48:00 ******/
CREATE PROCEDURE SaveNewPassword @userName NVARCHAR(20)
	,@password NVARCHAR(2000)
AS
BEGIN
	DECLARE @dateNow AS DATETIME = getdate()

	UPDATE tblUsers
	SET strPassword = @password
		,blnMustChange = 0
		,dteLastPasswordChanged = @dateNow
	WHERE strUserName = @userName
END
GO

/****** Object:  StoredProcedure [dbo].[GetPasswordPolicyForValidation]    Script Date: 22-06-2021 17:48:00 ******/
CREATE PROCEDURE GetPasswordPolicyForValidation
AS
BEGIN
	SELECT *
	FROM tblPasswordPolicy
	WHERE IsInactive = 0
		AND IsApplied = 1
END
GO

/****** Object:  StoredProcedure [dbo].[AuthenticateMail]    Script Date: 22-06-2021 17:48:00 ******/
CREATE PROCEDURE AuthenticateMail @userName NVARCHAR(20)
	,@email NVARCHAR(250)
AS
BEGIN
	SELECT count(*)
	FROM tblUsers
	WHERE strUserName = @userName
		AND strEmail = @email
END
GO

/****** Object:  StoredProcedure [dbo].[SaveToken]    Script Date: 22-06-2021 17:48:00 ******/
CREATE PROCEDURE SaveToken 
	 @userName NVARCHAR(20)
	,@token NVARCHAR(2000)
AS
BEGIN
	DECLARE @dateNow AS DATETIME = getutcdate()

	UPDATE tblUsers
	SET strToken = @token
		,dteTokenGenerationTime = @dateNow
	WHERE strUserName = @userName
END
GO



/****** Object:  StoredProcedure [dbo].[AddUpdatePasswordPolicy]    Script Date: 30-06-2021 17:48:00 ******/
CREATE PROCEDURE [dbo].[AddUpdatePasswordPolicy] 
	 @id AS INT = NULL
	,@policyName AS VARCHAR(20)
	,@minLength AS INT
	,@maxLength AS INT
	,@noOfUppercaseLetter AS INT
	,@noOfDigits AS INT
	,@noOfSpecialLetters AS INT
	,@passwordAgeInterval AS INT
	,@sessionTimeOutInterval AS INT
	,@isInactive AS BIT
	,@isApplied AS BIT
	,@modifiedBy AS NVARCHAR(50)
	,@isSendEmailOnLogin as bit
AS
BEGIN
	DECLARE @date AS DATETIME = getdate()

	--update
	IF @id > 0
	BEGIN
		UPDATE tblPasswordPolicy
		SET PolicyName = @policyName
			,MinLength = @minLength
			,MaxLength = @maxLength
			,NoOfUppercaseLetters = @noOfUppercaseLetter
			,NoOfDigits = @noOfDigits
			,NoOfSpecialLetters = @noOfSpecialLetters
			,PasswordAgeInterval = @passwordAgeInterval
			,SessionTimeOutInterval = @sessionTimeOutInterval
			,IsInactive = @isInactive
			,IsApplied = @isApplied
			,DateUpdated = @date
			,ModifiedBy = @modifiedBy
			,IsSendEmailOnLogin = @isSendEmailOnLogin
		WHERE Id = @id
	END
	ELSE
	BEGIN
		INSERT INTO tblPasswordPolicy
		VALUES (
			@policyName
			,@minLength
			,@maxLength
			,@noOfUppercaseLetter
			,@noOfDigits
			,@noOfSpecialLetters
			,@passwordAgeInterval
			,@sessionTimeOutInterval
			,@isInactive
			,@isApplied
			,@date
			,@date
			,@modifiedBy
			,@isSendEmailOnLogin
			)
	END
END
GO

/****** Object:  StoredProcedure [dbo].[DeletePasswordPolicy]    Script Date: 30-06-2021 17:48:00 ******/
CREATE PROCEDURE [dbo].[DeletePasswordPolicy]
@id AS INT
AS
BEGIN
	DELETE
	FROM tblPasswordPolicy
	WHERE Id = @id
END
GO

/****** Object:  StoredProcedure [dbo].[ApplyPasswordPolicy]    Script Date: 30-06-2021 17:48:00 ******/
CREATE PROCEDURE [dbo].[ApplyPasswordPolicy]
@id AS INT
AS
BEGIN
	UPDATE tblPasswordPolicy
	SET IsApplied = 0

	UPDATE tblPasswordPolicy
	SET IsApplied = 1
	WHERE Id = @id
END
GO

/****** Object:  StoredProcedure [dbo].[CheckPolicyNameAvailable]    Script Date: 30-06-2021 17:48:00 ******/
CREATE PROCEDURE [dbo].[CheckPolicyNameAvailable]
	 @policyName AS VARCHAR(20)
	,@id AS INT
AS
BEGIN
	SELECT count(*)
	FROM tblPasswordPolicy
	WHERE PolicyName = @policyName
		AND Id <> @id
END
GO


/****** Object:  StoredProcedure [dbo].[RemovePickingBinFlag]    Script Date: 21-10-2021 17:48:00 ******/
CREATE PROCEDURE [dbo].[RemovePickingBinFlag] 
@SQLocName AS NVARCHAR(300) = NULL
AS
BEGIN
	BEGIN
		CREATE TABLE #Temp_InvLocData (
			RowId INT
			,LocName NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
			,BinCount INT
			)

		INSERT INTO #Temp_InvLocData (
			RowId
			,LocName
			,BinCount
			)
		SELECT row_number() OVER (
				ORDER BY strLocName
				) AS RowId
			,strLocName
			,BinCount
		FROM (
			SELECT strLocName
				,(
					SELECT Count(BIN.strLocName)
					FROM tblInvLocBin BIN
					WHERE BIN.strLocName = L.strLocName
					) AS BinCount
			FROM tblInvLoc L
			WHERE L.strLocName IN (
					SELECT LB.strLocName
					FROM tblInvLocBin LB
					WHERE LB.bitPickingBin = 1
						AND LB.strLocName = (
							CASE 
								WHEN ISNULL(@SQLocName, '') = ''
									THEN LB.strLocName
								ELSE @SQLocName
								END
							)
					)
			) AS Result1
		WHERE BinCount = 1

		DECLARE @totalRows INT = (
				SELECT count(*)
				FROM #Temp_InvLocData
				)
		DECLARE @currentRow INT = 0

		WHILE @currentRow <= @totalRows
		BEGIN
			DECLARE @LocName AS NVARCHAR(200) = (
					SELECT TOP 1 LocName
					FROM #Temp_InvLocData
					WHERE RowId = @currentRow
					)
			DECLARE @BinCount AS INT = ISNULL((
						SELECT Count(lngID)
						FROM tblInvLocBin
						WHERE strLocName = @LocName
						), - 1)

			IF (@BinCount = 1)
			BEGIN
				DECLARE @lngBinId AS BIGINT = ISNULL((
							SELECT TOP 1 lngID
							FROM tblInvLocBin
							WHERE strLocName = @LocName
							ORDER BY bitPickingBin DESC
							), - 1)

				IF (@lngBinId <> - 1)
				BEGIN
					UPDATE tblInvLocBin
					SET bitPickingBin = 0
					WHERE strLocName = @LocName
						AND lngID = @lngBinId
				END
			END

			SET @currentRow = (@currentRow + 1)
		END

		DROP TABLE #Temp_InvLocData
	END
END
GO

/****** Object:  StoredProcedure [dbo].[RemovePickingBinFlag]    Script Date: 02-11-2021 09:40:00 ******/
CREATE PROCEDURE [dbo].[GetInventoryJournalItemsData]
    (
	@LocName NVARCHAR(MAX) = NULL ,
      @FieldName NVARCHAR(MAX) = NULL,
      @SearchText NVARCHAR(MAX) = NULL ,
	  @PageIndex int = 1 ,
	 @PageSize int = 0
    )
AS
    BEGIN
        SET NOCOUNT ON;


		WITH Paged AS
(
	Select  tblInv.strPartNumber AS PartNumber,tblInv.strDesc AS Description,intType AS Type,
	strCategory AS Category,strBuyUnit AS BuyUnit,strStockUnit AS StockUnit
	,tblInvImg.imgData AS ImgData	
    ,bitInvSerialType AS IsInvSerialType
	,(CASE WHEN tblInv.intType = 5 THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END) AS IsJournalType 
	, ROW_NUMBER() OVER(ORDER BY intType) AS RowNumber
	from tblInv	
	LEFT OUTER JOIN tblInvImg ON tblInv.strPartNumber = tblInvImg.strPartNumber 
	Where tblInv.intType = 5 
	AND (tblInvImg.bitDefaultImage IS NULL OR tblInvImg.bitDefaultImage = 1)
	AND ((@SearchText IS NULL OR @SearchText = '') OR (tblInv.strPartNumber LIKE '%'+@SearchText+'%')
	OR (tblInv.strDesc LIKE '%'+@SearchText+'%'))
	
 )
 SELECT 
  *
FROM 
    Paged
WHERE 
    RowNumber BETWEEN (@PageIndex - 1) * @PageSize + 1 AND @PageIndex * @PageSize
	
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvByUserByPriceListCriteriaExpenseClaim]    Script Date: 02-11-2021 09:40:00 ******/
CREATE PROCEDURE [dbo].[GetInvByUserByPriceListCriteriaExpenseClaim] (
	@InvType VARCHAR(50) = NULL
	,@UserName VARCHAR(50) = NULL
	,@Pricelist VARCHAR(20) = NULL
	,@LocationName VARCHAR(500) = NULL
	,@Date DATETIME = NULL
	,@FilterType INT = 0
	,@PageSize INT = 25
	,@PageIndex INT = 1
	,@SearchText VARCHAR(200) = ''
	,@isSearchTextPartNumber BIT = 0
	)
AS
BEGIN
	DECLARE @TotalRows INT
	DECLARE @TotalPages INT
	DECLARE @StartRowIndex INT
		,@EndRowIndex INT;
	DECLARE @Sql NVARCHAR(MAX)
	DECLARE @TotalRecords NVARCHAR(MAX) = ''
	DECLARE @Offset INT

	SET @Offset = @PageSize * (@PageIndex - 1)

	IF ISNULL(@SearchText, '') = ''
	BEGIN
		SET @SearchText = ''
	END

	IF ISNULL(@InvType, '') = ''
	BEGIN
		SET @InvType = ''
	END

	DECLARE @IsSortByDesc AS BIT = (
			SELECT TOP 1 bitSortInvDesc
			FROM tblCoOpts (NOLOCK)
			)
	DECLARE @uidPriceBasedID AS UNIQUEIDENTIFIER

	SET @uidPriceBasedID = NULL

	IF ISNULL(@Pricelist, '') <> ''
		AND ISNULL(@Date, '') <> ''
	BEGIN
		SELECT TOP 1 @uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
		FROM tblPriceListsByDate (NOLOCK)
		INNER JOIN dbo.tblInvPrice (NOLOCK) ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
		WHERE @Date BETWEEN dbo.tblPriceListsByDate.dteStartDate
				AND dbo.tblPriceListsByDate.dteFinishDate
			AND tblPriceListsByDate.strPricelist = @Pricelist
	END

	IF (@IsSortByDesc = 1)
	BEGIN
		IF ISNULL(@LocationName, '') = ''
		BEGIN
				;

			WITH Data_Inv
			AS (
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.decSumAvail AS SumAvail
					,dbo.tblInv.decSumAlloc AS SumAlloc
					,dbo.tblInv.decSumManuf AS SumManuf
					,dbo.tblInv.decSumOnHand AS SumOnHand
					,dbo.tblInv.decSumValue AS SumValue
					,dbo.tblInv.decSumOnOrder AS SumOnOrder
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,@Pricelist AS Pricelist
					,CAST(ISNULL(CASE 
								WHEN dbo.tblInv.bitInvSerialType = 1
									THEN (
											SELECT bitTrackExpiryDate
											FROM dbo.tblInvSerialTypes(NOLOCK)
											WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
											)
								ELSE 0
								END, 0) AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInv.strStockUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
					,TotalRows = COUNT(dbo.tblInv.strPartNumber) OVER ()
				FROM dbo.tblInv(NOLOCK)
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data = 5
							)
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '') = ''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
					AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%')
				)
				,Data_Final
			AS (
				SELECT ROW_NUMBER() OVER (
						ORDER BY [Description]
						) AS RowNumber
					,Data_Inv.*
					,[dbo].[fnGetInvSellingPrice](PartNumber, @Pricelist, @Date, @uidPriceBasedID) Selling
					,CASE 
						WHEN @FilterType = 0
							THEN NULL
						WHEN @FilterType = 1
							THEN dbo.tblInvVend.strVendName
						WHEN @FilterType = 2
							THEN dbo.tblInvCustomer.strCustName
						END AS CustVendID
					,tblInvImg.ImgData
					,(
						CASE 
							WHEN @TotalRows > (CEILING(Data_Inv.TotalRows / @PageSize) * @PageSize)
								THEN (CEILING(Data_Inv.TotalRows / @PageSize) + 1)
							ELSE CEILING(Data_Inv.TotalRows / @PageSize)
							END
						) AS TotalPages
				FROM Data_Inv
				LEFT OUTER JOIN dbo.tblInvVend(NOLOCK) ON Data_Inv.PartNumber = tblInvVend.strPartNumber
				LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Inv.PartNumber = tblInvCustomer.strPartNumber
				LEFT OUTER JOIN tblInvImg (NOLOCK) ON Data_Inv.PartNumber = tblInvImg.strPartNumber
				)
			SELECT *
			FROM Data_Final
			WHERE RowNumber >= (@Offset + 1)
				AND RowNumber <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
			BEGIN
				SET @LocationName = (
						SELECT TOP 1 strLocName
						FROM tblInvLoc (NOLOCK)
						WHERE dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@LocationName))
							OR dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName))
						)
			END;

			WITH Data_Inv
			AS (
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,@Pricelist AS Pricelist
					,CAST(ISNULL(CASE 
								WHEN dbo.tblInv.bitInvSerialType = 1
									THEN (
											SELECT bitTrackExpiryDate
											FROM dbo.tblInvSerialTypes(NOLOCK)
											WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
											)
								ELSE 0
								END, 0) AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInv.strStockUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
					,TotalRows = COUNT(dbo.tblInv.strPartNumber) OVER ()
				FROM dbo.tblInv(NOLOCK)
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data = 5
							)
						OR @InvType = NULL
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '') = ''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
					AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%')
				)
				,Data_Final
			AS (
				SELECT ROW_NUMBER() OVER (
						ORDER BY [Description]
						) AS RowNumber
					,Data_Inv.*
					,dbo.tblInvExt.decAvail AS SumAvail
					,dbo.tblInvExt.decAlloc AS SumAlloc
					,dbo.tblInvExt.decManuf AS SumManuf
					,dbo.tblInvExt.decOnHand AS SumOnHand
					,dbo.tblInvExt.decValue AS SumValue
					,dbo.tblInvExt.decOnOrder AS SumOnOrder
				FROM Data_Inv
				INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_Inv.PartNumber = dbo.tblInvExt.strPartNumber
				WHERE (
						dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
						AND dbo.tblInvExt.bitInActive = 0
						)
				)
				,Data_Final1
			AS (
				SELECT Data_Final.*
				FROM Data_Final
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
				)
			SELECT Data_Final1.*
				,[dbo].[fnGetInvSellingPrice](PartNumber, @Pricelist, @Date, @uidPriceBasedID) Selling
				,CASE 
					WHEN @FilterType = 0
						THEN NULL
					WHEN @FilterType = 1
						THEN dbo.tblInvVend.strVendName
					WHEN @FilterType = 2
						THEN dbo.tblInvCustomer.strCustName
					END AS CustVendID
				,tblInvImg.ImgData
				,(
					CASE 
						WHEN @TotalRows > (CEILING(Data_Final1.TotalRows / @PageSize) * @PageSize)
							THEN (CEILING(Data_Final1.TotalRows / @PageSize) + 1)
						ELSE CEILING(Data_Final1.TotalRows / @PageSize)
						END
					) AS TotalPages
			FROM Data_Final1
			LEFT OUTER JOIN dbo.tblInvVend(NOLOCK) ON Data_Final1.PartNumber = tblInvVend.strPartNumber
			LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Final1.PartNumber = tblInvCustomer.strPartNumber
			LEFT OUTER JOIN tblInvImg (NOLOCK) ON Data_Final1.PartNumber = tblInvImg.strPartNumber
			ORDER BY RowNumber
		END
	END
	ELSE
	BEGIN
		IF ISNULL(@LocationName, '') = ''
		BEGIN
				;

			WITH Data_Inv
			AS (
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.decSumAvail AS SumAvail
					,dbo.tblInv.decSumAlloc AS SumAlloc
					,dbo.tblInv.decSumManuf AS SumManuf
					,dbo.tblInv.decSumOnHand AS SumOnHand
					,dbo.tblInv.decSumValue AS SumValue
					,dbo.tblInv.decSumOnOrder AS SumOnOrder
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,@Pricelist AS Pricelist
					,CAST(ISNULL(CASE 
								WHEN dbo.tblInv.bitInvSerialType = 1
									THEN (
											SELECT bitTrackExpiryDate
											FROM dbo.tblInvSerialTypes(NOLOCK)
											WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
											)
								ELSE 0
								END, 0) AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInv.strStockUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
					,TotalRows = COUNT(dbo.tblInv.strPartNumber) OVER ()
				FROM dbo.tblInv(NOLOCK)
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data = 5
							)
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '') = ''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
					AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%')
				)
				,Data_Final
			AS (
				SELECT ROW_NUMBER() OVER (
						ORDER BY PartNumber
						) AS RowNumber
					,Data_Inv.*
					,[dbo].[fnGetInvSellingPrice](PartNumber, @Pricelist, @Date, @uidPriceBasedID) Selling
					,CASE 
						WHEN @FilterType = 0
							THEN NULL
						WHEN @FilterType = 1
							THEN dbo.tblInvVend.strVendName
						WHEN @FilterType = 2
							THEN dbo.tblInvCustomer.strCustName
						END AS CustVendID
					,tblInvImg.ImgData
					,(
						CASE 
							WHEN @TotalRows > (CEILING(Data_Inv.TotalRows / @PageSize) * @PageSize)
								THEN (CEILING(Data_Inv.TotalRows / @PageSize) + 1)
							ELSE CEILING(Data_Inv.TotalRows / @PageSize)
							END
						) AS TotalPages
				FROM Data_Inv
				LEFT OUTER JOIN dbo.tblInvVend(NOLOCK) ON Data_Inv.PartNumber = tblInvVend.strPartNumber
				LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Inv.PartNumber = tblInvCustomer.strPartNumber
				LEFT OUTER JOIN tblInvImg (NOLOCK) ON Data_Inv.PartNumber = tblInvImg.strPartNumber
				)
			SELECT *
			FROM Data_Final
			WHERE RowNumber >= (@Offset + 1)
				AND RowNumber <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
			BEGIN
				SET @LocationName = (
						SELECT TOP 1 strLocName
						FROM tblInvLoc (NOLOCK)
						WHERE dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@LocationName))
							OR dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName))
						)
			END;

			WITH Data_Inv
			AS (
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,@Pricelist AS Pricelist
					,CAST(ISNULL(CASE 
								WHEN dbo.tblInv.bitInvSerialType = 1
									THEN (
											SELECT bitTrackExpiryDate
											FROM dbo.tblInvSerialTypes(NOLOCK)
											WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
											)
								ELSE 0
								END, 0) AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInv.strStockUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
					,TotalRows = COUNT(dbo.tblInv.strPartNumber) OVER ()
				FROM dbo.tblInv(NOLOCK)
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data = 5
							)
						OR @InvType = NULL
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND (
						(
							dbo.tblInv.strCategory IN (
								SELECT dbo.tblInvCat.strCategory
								FROM dbo.tblInvCat(NOLOCK)
								LEFT JOIN dbo.tblInvCatSec(NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
								WHERE ISNULL((
											SELECT COUNT(dbo.tblInvCatSec.strCategory)
											FROM dbo.tblInvCatSec(NOLOCK)
											WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
											), 0) = 0
									OR (
										ISNULL((
												SELECT COUNT(dbo.tblInvCatSec.strCategory)
												FROM dbo.tblInvCatSec(NOLOCK)
												WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory
												), 0) > 0
										AND (
											ISNULL(@UserName, '') = ''
											OR dbo.tblInvCatSec.strUserName = @UserName
											)
										)
								)
							)
						OR dbo.tblInv.strCategory IS NULL
						)
					AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%')
				)
				,Data_Final
			AS (
				SELECT ROW_NUMBER() OVER (
						ORDER BY PartNumber
						) AS RowNumber
					,Data_Inv.*
					,dbo.tblInvExt.decAvail AS SumAvail
					,dbo.tblInvExt.decAlloc AS SumAlloc
					,dbo.tblInvExt.decManuf AS SumManuf
					,dbo.tblInvExt.decOnHand AS SumOnHand
					,dbo.tblInvExt.decValue AS SumValue
					,dbo.tblInvExt.decOnOrder AS SumOnOrder
				FROM Data_Inv
				INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_Inv.PartNumber = dbo.tblInvExt.strPartNumber
				WHERE (
						dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
						AND dbo.tblInvExt.bitInActive = 0
						)
				)
				,Data_Final1
			AS (
				SELECT Data_Final.*
				FROM Data_Final
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
				)
			SELECT Data_Final1.*
				,[dbo].[fnGetInvSellingPrice](PartNumber, @Pricelist, @Date, @uidPriceBasedID) Selling
				,CASE 
					WHEN @FilterType = 0
						THEN NULL
					WHEN @FilterType = 1
						THEN dbo.tblInvVend.strVendName
					WHEN @FilterType = 2
						THEN dbo.tblInvCustomer.strCustName
					END AS CustVendID
				,tblInvImg.ImgData
				,(
					CASE 
						WHEN @TotalRows > (CEILING(Data_Final1.TotalRows / @PageSize) * @PageSize)
							THEN (CEILING(Data_Final1.TotalRows / @PageSize) + 1)
						ELSE CEILING(Data_Final1.TotalRows / @PageSize)
						END
					) AS TotalPages
			FROM Data_Final1
			LEFT OUTER JOIN dbo.tblInvVend(NOLOCK) ON Data_Final1.PartNumber = tblInvVend.strPartNumber
			LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Final1.PartNumber = tblInvCustomer.strPartNumber
			LEFT OUTER JOIN tblInvImg (NOLOCK) ON Data_Final1.PartNumber = tblInvImg.strPartNumber
			ORDER BY RowNumber
		END
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvByCriteriaExpenseClaim]    Script Date: 02-11-2021 09:40:00 ******/

CREATE PROCEDURE [dbo].[GetInvByCriteriaExpenseClaim](@InvType VARCHAR(50) = NULL, @UserName VARCHAR(50) = NULL, @Pricelist VARCHAR(20) = NULL, @LocationName VARCHAR(500) = NULL, @Date DATETIME = NULL, @FilterType INT = 0, @PageSize INT = 25, @PageIndex INT = 1, @SearchText VARCHAR(200) = '', @isSearchTextPartNumber BIT = 0) AS

BEGIN
	DECLARE @TotalRows INT
	DECLARE @TotalPages INT
	DECLARE @StartRowIndex INT
		,@EndRowIndex INT;
	DECLARE @Sql NVARCHAR(MAX)
	DECLARE @TotalRecords NVARCHAR(MAX) = ''
	DECLARE @Offset INT

	SET @Offset = @PageSize * (@PageIndex - 1)

	IF ISNULL(@SearchText, '') = ''
	BEGIN
		SET @SearchText = ''
	END

	IF ISNULL(@InvType, '') = ''
	BEGIN
		SET @InvType = ''
	END

	DECLARE @IsSortByDesc AS BIT = (
			SELECT TOP 1 bitSortInvDesc
			FROM tblCoOpts (NOLOCK)
			)
	DECLARE @uidPriceBasedID AS UNIQUEIDENTIFIER

	SET @uidPriceBasedID = NULL

	IF ISNULL(@Pricelist, '') <> ''
		AND ISNULL(@Date, '') <> ''
	BEGIN
		SELECT TOP 1 @uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
		FROM tblPriceListsByDate (NOLOCK)
		INNER JOIN dbo.tblInvPrice (NOLOCK) ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
		WHERE @Date BETWEEN dbo.tblPriceListsByDate.dteStartDate
				AND dbo.tblPriceListsByDate.dteFinishDate
			AND tblPriceListsByDate.strPricelist = @Pricelist
	END

	IF (@IsSortByDesc = 1)
	BEGIN
		IF ISNULL(@LocationName, '') = ''
		BEGIN
				;

			WITH Data_Inv
			AS (
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.decSumAvail AS SumAvail
					,dbo.tblInv.decSumAlloc AS SumAlloc
					,dbo.tblInv.decSumManuf AS SumManuf
					,dbo.tblInv.decSumOnHand AS SumOnHand
					,dbo.tblInv.decSumValue AS SumValue
					,dbo.tblInv.decSumOnOrder AS SumOnOrder
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,@Pricelist AS Pricelist
					,CAST(ISNULL(CASE 
								WHEN dbo.tblInv.bitInvSerialType = 1
									THEN (
											SELECT bitTrackExpiryDate
											FROM dbo.tblInvSerialTypes(NOLOCK)
											WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
											)
								ELSE 0
								END, 0) AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInv.strStockUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
					,TotalRows = COUNT(dbo.tblInv.strPartNumber) OVER ()
				FROM dbo.tblInv(NOLOCK)
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data = 5
							)
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%')
				)
				,Data_Final
			AS (
				SELECT ROW_NUMBER() OVER (
						ORDER BY [Description]
						) AS RowNumber
					,Data_Inv.*
					,[dbo].[fnGetInvSellingPrice](PartNumber, @Pricelist, @Date, @uidPriceBasedID) Selling
					,CASE 
						WHEN @FilterType = 0
							THEN NULL
						WHEN @FilterType = 1
							THEN dbo.tblInvVend.strVendName
						WHEN @FilterType = 2
							THEN dbo.tblInvCustomer.strCustName
						END AS CustVendID
					,tblInvImg.ImgData
					,(
						CASE 
							WHEN @TotalRows > (CEILING(Data_Inv.TotalRows / @PageSize) * @PageSize)
								THEN (CEILING(Data_Inv.TotalRows / @PageSize) + 1)
							ELSE CEILING(Data_Inv.TotalRows / @PageSize)
							END
						) AS TotalPages
				FROM Data_Inv
				LEFT OUTER JOIN dbo.tblInvVend(NOLOCK) ON Data_Inv.PartNumber = tblInvVend.strPartNumber
				LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Inv.PartNumber = tblInvCustomer.strPartNumber
				LEFT OUTER JOIN tblInvImg (NOLOCK) ON Data_Inv.PartNumber = tblInvImg.strPartNumber
				)
			SELECT *
			FROM Data_Final
			WHERE RowNumber >= (@Offset + 1)
				AND RowNumber <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
			BEGIN
				SET @LocationName = (
						SELECT TOP 1 strLocName
						FROM tblInvLoc (NOLOCK)
						WHERE dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@LocationName))
							OR dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName))
						)
			END;

			WITH Data_Inv
			AS (
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,@Pricelist AS Pricelist
					,CAST(ISNULL(CASE 
								WHEN dbo.tblInv.bitInvSerialType = 1
									THEN (
											SELECT bitTrackExpiryDate
											FROM dbo.tblInvSerialTypes(NOLOCK)
											WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
											)
								ELSE 0
								END, 0) AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInv.strStockUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
					,TotalRows = COUNT(dbo.tblInv.strPartNumber) OVER ()
				FROM dbo.tblInv(NOLOCK)
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data = 5
							)
						OR @InvType = NULL
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%')
				)
				,Data_Final
			AS (
				SELECT ROW_NUMBER() OVER (
						ORDER BY [Description]
						) AS RowNumber
					,Data_Inv.*
					,dbo.tblInvExt.decAvail AS SumAvail
					,dbo.tblInvExt.decAlloc AS SumAlloc
					,dbo.tblInvExt.decManuf AS SumManuf
					,dbo.tblInvExt.decOnHand AS SumOnHand
					,dbo.tblInvExt.decValue AS SumValue
					,dbo.tblInvExt.decOnOrder AS SumOnOrder
				FROM Data_Inv
				INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_Inv.PartNumber = dbo.tblInvExt.strPartNumber
				WHERE (
						dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
						AND dbo.tblInvExt.bitInActive = 0
						)
				)
				,Data_Final1
			AS (
				SELECT Data_Final.*
				FROM Data_Final
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
				)
			SELECT Data_Final1.*
				,[dbo].[fnGetInvSellingPrice](PartNumber, @Pricelist, @Date, @uidPriceBasedID) Selling
				,CASE 
					WHEN @FilterType = 0
						THEN NULL
					WHEN @FilterType = 1
						THEN dbo.tblInvVend.strVendName
					WHEN @FilterType = 2
						THEN dbo.tblInvCustomer.strCustName
					END AS CustVendID
				,tblInvImg.ImgData
				,(
					CASE 
						WHEN @TotalRows > (CEILING(Data_Final1.TotalRows / @PageSize) * @PageSize)
							THEN (CEILING(Data_Final1.TotalRows / @PageSize) + 1)
						ELSE CEILING(Data_Final1.TotalRows / @PageSize)
						END
					) AS TotalPages
			FROM Data_Final1
			LEFT OUTER JOIN dbo.tblInvVend(NOLOCK) ON Data_Final1.PartNumber = tblInvVend.strPartNumber
			LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Final1.PartNumber = tblInvCustomer.strPartNumber
			LEFT OUTER JOIN tblInvImg (NOLOCK) ON Data_Final1.PartNumber = tblInvImg.strPartNumber
			ORDER BY RowNumber
		END
	END
	ELSE
	BEGIN
		IF ISNULL(@LocationName, '') = ''
		BEGIN
				;

			WITH Data_Inv
			AS (
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.decSumAvail AS SumAvail
					,dbo.tblInv.decSumAlloc AS SumAlloc
					,dbo.tblInv.decSumManuf AS SumManuf
					,dbo.tblInv.decSumOnHand AS SumOnHand
					,dbo.tblInv.decSumValue AS SumValue
					,dbo.tblInv.decSumOnOrder AS SumOnOrder
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,@Pricelist AS Pricelist
					,CAST(ISNULL(CASE 
								WHEN dbo.tblInv.bitInvSerialType = 1
									THEN (
											SELECT bitTrackExpiryDate
											FROM dbo.tblInvSerialTypes(NOLOCK)
											WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
											)
								ELSE 0
								END, 0) AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInv.strStockUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
					,TotalRows = COUNT(dbo.tblInv.strPartNumber) OVER ()
				FROM dbo.tblInv(NOLOCK)
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data = 5
							)
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%')
				)
				,Data_Final
			AS (
				SELECT ROW_NUMBER() OVER (
						ORDER BY PartNumber
						) AS RowNumber
					,Data_Inv.*
					,[dbo].[fnGetInvSellingPrice](PartNumber, @Pricelist, @Date, @uidPriceBasedID) Selling
					,CASE 
						WHEN @FilterType = 0
							THEN NULL
						WHEN @FilterType = 1
							THEN dbo.tblInvVend.strVendName
						WHEN @FilterType = 2
							THEN dbo.tblInvCustomer.strCustName
						END AS CustVendID
					,tblInvImg.ImgData
					,(
						CASE 
							WHEN @TotalRows > (CEILING(Data_Inv.TotalRows / @PageSize) * @PageSize)
								THEN (CEILING(Data_Inv.TotalRows / @PageSize) + 1)
							ELSE CEILING(Data_Inv.TotalRows / @PageSize)
							END
						) AS TotalPages
				FROM Data_Inv
				LEFT OUTER JOIN dbo.tblInvVend(NOLOCK) ON Data_Inv.PartNumber = tblInvVend.strPartNumber
				LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Inv.PartNumber = tblInvCustomer.strPartNumber
				LEFT OUTER JOIN tblInvImg (NOLOCK) ON Data_Inv.PartNumber = tblInvImg.strPartNumber
				)
			SELECT *
			FROM Data_Final
			WHERE RowNumber >= (@Offset + 1)
				AND RowNumber <= (@Offset + @PageSize)
		END
		ELSE
		BEGIN
			BEGIN
				SET @LocationName = (
						SELECT TOP 1 strLocName
						FROM tblInvLoc (NOLOCK)
						WHERE dbo.tblInvLoc.strDesc = LTRIM(RTRIM(@LocationName))
							OR dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName))
						)
			END;

			WITH Data_Inv
			AS (
				SELECT dbo.tblInv.strPartNumber AS PartNumber
					,dbo.tblInv.strDesc AS [Description]
					,dbo.tblInv.intType AS [Type]
					,dbo.tblInv.strCategory AS Category
					,dbo.tblInv.strSubCategory AS SubCategory
					,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
					,dbo.tblInv.bitUseBOM AS IsUseBOM
					,dbo.tblInv.bitInactive AS IsInactive
					,dbo.tblInv.strField1 AS Field1
					,dbo.tblInv.strField2 AS Field2
					,dbo.tblInv.strField3 AS Field3
					,dbo.tblInv.strField4 AS Field4
					,dbo.tblInv.strField5 AS Field5
					,dbo.tblInv.strField6 AS Field6
					,dbo.tblInv.strBarCode AS BarCode
					,dbo.tblInv.bitInvSerialType AS IsInvSerialType
					,dbo.tblInv.strBarCode2 AS BarCode2
					,@Pricelist AS Pricelist
					,CAST(ISNULL(CASE 
								WHEN dbo.tblInv.bitInvSerialType = 1
									THEN (
											SELECT bitTrackExpiryDate
											FROM dbo.tblInvSerialTypes(NOLOCK)
											WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType
											)
								ELSE 0
								END, 0) AS BIT) AS IsTrackExpiryDate
					,dbo.tblInv.decLastPPUnit AS LastPPUnit
					,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
					,dbo.tblInv.strStockUnit AS StockUnit
					,dbo.tblInv.decBuyToStock AS BuyToStock
					,tblInv.strExtendedDesc AS ExtendedDesc
					,TotalRows = COUNT(dbo.tblInv.strPartNumber) OVER ()
				FROM dbo.tblInv(NOLOCK)
				WHERE (
						ISNULL(@InvType, '') = ''
						OR dbo.tblInv.intType IN (
							SELECT data
							FROM dbo.split(@InvType, ',')
							WHERE data = 5
							)
						OR @InvType = NULL
						)
					AND (dbo.tblInv.bitInactive = 0)
					AND (dbo.tblInv.strPartNumber LIKE '%' + @SearchText + '%')
				)
				,Data_Final
			AS (
				SELECT ROW_NUMBER() OVER (
						ORDER BY PartNumber
						) AS RowNumber
					,Data_Inv.*
					,dbo.tblInvExt.decAvail AS SumAvail
					,dbo.tblInvExt.decAlloc AS SumAlloc
					,dbo.tblInvExt.decManuf AS SumManuf
					,dbo.tblInvExt.decOnHand AS SumOnHand
					,dbo.tblInvExt.decValue AS SumValue
					,dbo.tblInvExt.decOnOrder AS SumOnOrder
				FROM Data_Inv
				INNER JOIN dbo.tblInvExt(NOLOCK) ON Data_Inv.PartNumber = dbo.tblInvExt.strPartNumber
				WHERE (
						dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
						AND dbo.tblInvExt.bitInActive = 0
						)
				)
				,Data_Final1
			AS (
				SELECT Data_Final.*
				FROM Data_Final
				WHERE RowNumber >= (@Offset + 1)
					AND RowNumber <= (@Offset + @PageSize)
				)
			SELECT Data_Final1.*
				,[dbo].[fnGetInvSellingPrice](PartNumber, @Pricelist, @Date, @uidPriceBasedID) Selling
				,CASE 
					WHEN @FilterType = 0
						THEN NULL
					WHEN @FilterType = 1
						THEN dbo.tblInvVend.strVendName
					WHEN @FilterType = 2
						THEN dbo.tblInvCustomer.strCustName
					END AS CustVendID
				,tblInvImg.ImgData
				,(
					CASE 
						WHEN @TotalRows > (CEILING(Data_Final1.TotalRows / @PageSize) * @PageSize)
							THEN (CEILING(Data_Final1.TotalRows / @PageSize) + 1)
						ELSE CEILING(Data_Final1.TotalRows / @PageSize)
						END
					) AS TotalPages
			FROM Data_Final1
			LEFT OUTER JOIN dbo.tblInvVend(NOLOCK) ON Data_Final1.PartNumber = tblInvVend.strPartNumber
			LEFT OUTER JOIN dbo.tblInvCustomer(NOLOCK) ON Data_Final1.PartNumber = tblInvCustomer.strPartNumber
			LEFT OUTER JOIN tblInvImg (NOLOCK) ON Data_Final1.PartNumber = tblInvImg.strPartNumber
			ORDER BY RowNumber
		END
	END
END
GO



/****** Object:  StoredProcedure [dbo].[GetInvByUserCriteriaExpenseClaim]    Script Date: 02-11-2021 09:40:00 ******/
CREATE PROCEDURE [dbo].[GetInvByUserCriteriaExpenseClaim] (
	@InvType VARCHAR(50) = NULL
	,@UserName NVARCHAR(50) = NULL
	,@LocationName VARCHAR(500)= NULL
	,@FilterType INTEGER = 0
	,@PageSize INT = 1
	,@PageIndex INT = 1
	,@SearchText VARCHAR(200) = ''
	,@isSearchTextPartNumber BIT = 0
)
AS
BEGIN
		
	DECLARE @TotalRows INT
	DECLARE @TotalPages INT
	DECLARE @StartRowIndex INT
		,@EndRowIndex INT;
	DECLARE @Sql NVARCHAR(MAX)
	DECLARE @TotalRecords NVARCHAR(MAX) = ''

	 DECLARE @Offset INT
	SET @Offset = @PageSize * (@PageIndex-1)

	IF ISNULL(@SearchText, '') = ''
	BEGIN
		SET @SearchText = ''
	END

	IF ISNULL(@InvType, '') = ''
	BEGIN
		SET @InvType = ''
	END

	 Declare @IsSortByDesc as bit = (Select top 1 bitSortInvDesc from tblCoOpts (NOLOCK))

	DECLARE @uidPriceBasedID AS UNIQUEIDENTIFIER

	SET @uidPriceBasedID = NULL

	IF(@IsSortByDesc=1)
	BEGIN

		IF ISNULL(@LocationName, '') = ''
	BEGIN
	;with Data_Inv as (

		SELECT dbo.tblInv.strPartNumber AS PartNumber
			,dbo.tblInv.strDesc AS [Description]
			,dbo.tblInv.intType AS [Type]
			,dbo.tblInv.strCategory AS Category
			,dbo.tblInv.strSubCategory AS SubCategory
			,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
			,dbo.tblInv.bitUseBOM AS IsUseBOM
			,dbo.tblInv.bitInactive AS IsInactive
			,dbo.tblInv.decSumAvail AS SumAvail
			,dbo.tblInv.decSumAlloc AS SumAlloc
			,dbo.tblInv.decSumManuf AS SumManuf
			,dbo.tblInv.decSumOnHand AS SumOnHand
			,dbo.tblInv.decSumValue AS SumValue
			,dbo.tblInv.decSumOnOrder AS SumOnOrder
			,dbo.tblInv.strField1 AS Field1
			,dbo.tblInv.strField2 AS Field2
			,dbo.tblInv.strField3 AS Field3
			,dbo.tblInv.strField4 AS Field4
			,dbo.tblInv.strField5 AS Field5
			,dbo.tblInv.strField6 AS Field6
			,dbo.tblInv.strBarCode AS BarCode
			,dbo.tblInv.bitInvSerialType AS IsInvSerialType
			,dbo.tblInv.strBarCode2 AS BarCode2
			,NULL AS Pricelist
			,CONVERT(DECIMAL(18,2),0) AS Selling
			,CAST(ISNULL(CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE 0 END, 0) AS BIT) AS IsTrackExpiryDate
			,dbo.tblInv.decLastPPUnit AS LastPPUnit			
			,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
			,dbo.tblInv.strStockUnit as StockUnit
			,dbo.tblInv.decBuyToStock AS BuyToStock
			,tblInv.strExtendedDesc AS ExtendedDesc	
			, TotalRows = COUNT(dbo.tblInv.strPartNumber) over ()	
		FROM dbo.tblInv (NOLOCK)
		WHERE (ISNULL(@InvType,'')='' OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@InvType, ',') WHERE data = 5))
		AND (dbo.tblInv.bitInactive = 0)
		AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
										FROM dbo.tblInvCat (NOLOCK)
										LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
										WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
										OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
											AND (ISNULL(@UserName,'')='' OR dbo.tblInvCatSec.strUserName = @UserName)))) 
			OR dbo.tblInv.strCategory IS NULL) AND ( dbo.tblInv.strPartNumber  Like  '%'+@SearchText+'%')		
			),
			Data_Final as (Select 
			ROW_NUMBER () over (order by [Description]) as RowNumber
			,Data_Inv.*
			,CASE WHEN @FilterType = 0 THEN NULL WHEN @FilterType = 1 THEN dbo.tblInvVend.strVendName WHEN @FilterType = 2 THEN dbo.tblInvCustomer.strCustName END AS CustVendID
			,tblInvImg.ImgData
			,(Case when  @TotalRows > (CEILING(Data_Inv.TotalRows / @PageSize) * @PageSize) then (CEILING(Data_Inv.TotalRows / @PageSize)+1) else CEILING(Data_Inv.TotalRows / @PageSize) End)  AS TotalPages
			from
			 Data_Inv LEFT OUTER JOIN dbo.tblInvVend (NOLOCK) ON Data_Inv.PartNumber = tblInvVend.strPartNumber
			LEFT OUTER JOIN dbo.tblInvCustomer (NOLOCK) ON Data_Inv.PartNumber = tblInvCustomer.strPartNumber
			LEFT OUTER JOIN tblInvImg (NOLOCK) ON Data_Inv.PartNumber = tblInvImg.strPartNumber)
			Select * from Data_Final
			WHERE RowNumber >=(@Offset+1) and RowNumber <=(@Offset+@PageSize)

	END
	ELSE
	BEGIN
		 BEGIN
		 SET @LocationName=(select Top 1 strLocName from tblInvLoc (NOLOCK) Where dbo.tblInvLoc.strDesc=LTRIM(RTRIM(@LocationName)) or dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName)) )
		 END
		;with Data_Inv as 
		(SELECT dbo.tblInv.strPartNumber AS PartNumber
			,dbo.tblInv.strDesc AS [Description]
			,dbo.tblInv.intType AS [Type]
			,dbo.tblInv.strCategory AS Category
			,dbo.tblInv.strSubCategory AS SubCategory
			,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
			,dbo.tblInv.bitUseBOM AS IsUseBOM
			,dbo.tblInv.bitInactive AS IsInactive

			,dbo.tblInv.strField1 AS Field1
			,dbo.tblInv.strField2 AS Field2
			,dbo.tblInv.strField3 AS Field3
			,dbo.tblInv.strField4 AS Field4
			,dbo.tblInv.strField5 AS Field5
			,dbo.tblInv.strField6 AS Field6
			,dbo.tblInv.strBarCode AS BarCode
			,dbo.tblInv.bitInvSerialType AS IsInvSerialType
			,dbo.tblInv.strBarCode2 AS BarCode2
			,NULL AS Pricelist
			,CONVERT(DECIMAL(18,2),0) AS Selling 
			,CAST(ISNULL(CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE 0 END, 0) AS BIT) AS IsTrackExpiryDate
			,dbo.tblInv.decLastPPUnit AS LastPPUnit			
			,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
			,dbo.tblInv.strStockUnit as StockUnit
			,dbo.tblInv.decBuyToStock AS BuyToStock
			,tblInv.strExtendedDesc AS ExtendedDesc
			, TotalRows = COUNT(dbo.tblInv.strPartNumber) over ()
		FROM dbo.tblInv (NOLOCK)		
		WHERE 
		(ISNULL(@InvType,'')='' OR  dbo.tblInv.intType IN (SELECT data FROM dbo.split(@InvType, ',') WHERE data = 5)
			 OR @InvType = NULL)
		AND (dbo.tblInv.bitInactive = 0)
		AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
										FROM dbo.tblInvCat (NOLOCK)
										LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
										WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
										OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
											AND (ISNULL(@UserName,'')='' OR dbo.tblInvCatSec.strUserName = @UserName)))) 
			OR dbo.tblInv.strCategory IS NULL) 
			AND ( dbo.tblInv.strPartNumber  Like  '%'+@SearchText+'%' )
		 ),
		 Data_Final as (Select ROW_NUMBER () over (order by [Description]) as RowNumber,
		 Data_Inv.*
		 ,dbo.tblInvExt.decAvail AS SumAvail
		 ,dbo.tblInvExt.decAlloc AS SumAlloc
		 ,dbo.tblInvExt.decManuf AS SumManuf
		 ,dbo.tblInvExt.decOnHand AS SumOnHand
		 ,dbo.tblInvExt.decValue AS SumValue
		 ,dbo.tblInvExt.decOnOrder AS SumOnOrder 
		 from Data_Inv
		 INNER JOIN dbo.tblInvExt (NOLOCK) ON Data_Inv.PartNumber = dbo.tblInvExt.strPartNumber
	 	 Where (dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
				AND dbo.tblInvExt.bitInActive = 0
					)	
		 ),
		 Data_Final1 as (Select Data_Final.* from Data_Final
		   WHERE RowNumber >=(@Offset+1) and RowNumber <=(@Offset+@PageSize)	)
		   Select Data_Final1.*
		   	,CASE WHEN @FilterType = 0 THEN NULL WHEN @FilterType = 1 THEN dbo.tblInvVend.strVendName WHEN @FilterType = 2 THEN dbo.tblInvCustomer.strCustName END AS CustVendID
			,tblInvImg.ImgData
			,(Case when  @TotalRows > (CEILING(Data_Final1.TotalRows / @PageSize) * @PageSize) then (CEILING(Data_Final1.TotalRows / @PageSize)+1) else CEILING(Data_Final1.TotalRows / @PageSize) End)  AS TotalPages
		    from Data_Final1
			LEFT OUTER JOIN dbo.tblInvVend (NOLOCK) ON Data_Final1.PartNumber = tblInvVend.strPartNumber
			LEFT OUTER JOIN dbo.tblInvCustomer (NOLOCK) ON Data_Final1.PartNumber = tblInvCustomer.strPartNumber
			LEFT OUTER JOIN tblInvImg (NOLOCK) ON Data_Final1.PartNumber = tblInvImg.strPartNumber
		    order by RowNumber
	END

	END
	ELSE
	BEGIN

	IF ISNULL(@LocationName, '') = ''
	BEGIN
	;with Data_Inv as (

		SELECT dbo.tblInv.strPartNumber AS PartNumber
			,dbo.tblInv.strDesc AS [Description]
			,dbo.tblInv.intType AS [Type]
			,dbo.tblInv.strCategory AS Category
			,dbo.tblInv.strSubCategory AS SubCategory
			,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
			,dbo.tblInv.bitUseBOM AS IsUseBOM
			,dbo.tblInv.bitInactive AS IsInactive
			,dbo.tblInv.decSumAvail AS SumAvail
			,dbo.tblInv.decSumAlloc AS SumAlloc
			,dbo.tblInv.decSumManuf AS SumManuf
			,dbo.tblInv.decSumOnHand AS SumOnHand
			,dbo.tblInv.decSumValue AS SumValue
			,dbo.tblInv.decSumOnOrder AS SumOnOrder
			,dbo.tblInv.strField1 AS Field1
			,dbo.tblInv.strField2 AS Field2
			,dbo.tblInv.strField3 AS Field3
			,dbo.tblInv.strField4 AS Field4
			,dbo.tblInv.strField5 AS Field5
			,dbo.tblInv.strField6 AS Field6
			,dbo.tblInv.strBarCode AS BarCode
			,dbo.tblInv.bitInvSerialType AS IsInvSerialType
			,dbo.tblInv.strBarCode2 AS BarCode2
			,NULL AS Pricelist
			,CONVERT(DECIMAL(18,2),0) AS Selling
			,CAST(ISNULL(CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE 0 END, 0) AS BIT) AS IsTrackExpiryDate
			,dbo.tblInv.decLastPPUnit AS LastPPUnit			
			,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
			,dbo.tblInv.strStockUnit as StockUnit
			,dbo.tblInv.decBuyToStock AS BuyToStock
			,tblInv.strExtendedDesc AS ExtendedDesc	
			, TotalRows = COUNT(dbo.tblInv.strPartNumber) over ()	
		FROM dbo.tblInv (NOLOCK)
		WHERE (ISNULL(@InvType,'')='' OR dbo.tblInv.intType IN (SELECT data FROM dbo.split(@InvType, ',') WHERE data = 5))
		AND (dbo.tblInv.bitInactive = 0)
		AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
										FROM dbo.tblInvCat (NOLOCK)
										LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
										WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
										OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
											AND (ISNULL(@UserName,'')='' OR dbo.tblInvCatSec.strUserName = @UserName)))) 
			OR dbo.tblInv.strCategory IS NULL) AND ( dbo.tblInv.strPartNumber  Like  '%'+@SearchText+'%')		
			),
			Data_Final as (Select 
			ROW_NUMBER () over (order by PartNumber) as RowNumber
			,Data_Inv.*
			,CASE WHEN @FilterType = 0 THEN NULL WHEN @FilterType = 1 THEN dbo.tblInvVend.strVendName WHEN @FilterType = 2 THEN dbo.tblInvCustomer.strCustName END AS CustVendID
			,tblInvImg.ImgData
			,(Case when  @TotalRows > (CEILING(Data_Inv.TotalRows / @PageSize) * @PageSize) then (CEILING(Data_Inv.TotalRows / @PageSize)+1) else CEILING(Data_Inv.TotalRows / @PageSize) End)  AS TotalPages
			from
			 Data_Inv LEFT OUTER JOIN dbo.tblInvVend (NOLOCK) ON Data_Inv.PartNumber = tblInvVend.strPartNumber
			LEFT OUTER JOIN dbo.tblInvCustomer (NOLOCK) ON Data_Inv.PartNumber = tblInvCustomer.strPartNumber
			LEFT OUTER JOIN tblInvImg (NOLOCK) ON Data_Inv.PartNumber = tblInvImg.strPartNumber)
			Select * from Data_Final
			WHERE RowNumber >=(@Offset+1) and RowNumber <=(@Offset+@PageSize)

	END
	ELSE
	BEGIN
		 BEGIN
		 SET @LocationName=(select Top 1 strLocName from tblInvLoc (NOLOCK) Where dbo.tblInvLoc.strDesc=LTRIM(RTRIM(@LocationName)) or dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName)) )
		 END
		;with Data_Inv as 
		(SELECT dbo.tblInv.strPartNumber AS PartNumber
			,dbo.tblInv.strDesc AS [Description]
			,dbo.tblInv.intType AS [Type]
			,dbo.tblInv.strCategory AS Category
			,dbo.tblInv.strSubCategory AS SubCategory
			,dbo.tblInv.strSubCategoryGroup AS SubCategoryGroup
			,dbo.tblInv.bitUseBOM AS IsUseBOM
			,dbo.tblInv.bitInactive AS IsInactive

			,dbo.tblInv.strField1 AS Field1
			,dbo.tblInv.strField2 AS Field2
			,dbo.tblInv.strField3 AS Field3
			,dbo.tblInv.strField4 AS Field4
			,dbo.tblInv.strField5 AS Field5
			,dbo.tblInv.strField6 AS Field6
			,dbo.tblInv.strBarCode AS BarCode
			,dbo.tblInv.bitInvSerialType AS IsInvSerialType
			,dbo.tblInv.strBarCode2 AS BarCode2
			,NULL AS Pricelist
			,CONVERT(DECIMAL(18,2),0) AS Selling 
			,CAST(ISNULL(CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE 0 END, 0) AS BIT) AS IsTrackExpiryDate
			,dbo.tblInv.decLastPPUnit AS LastPPUnit			
			,dbo.tblInv.intDecimalQuantity AS DecimalQuantity
			,dbo.tblInv.strStockUnit as StockUnit
			,dbo.tblInv.decBuyToStock AS BuyToStock
			,tblInv.strExtendedDesc AS ExtendedDesc
			, TotalRows = COUNT(dbo.tblInv.strPartNumber) over ()
		FROM dbo.tblInv (NOLOCK)		
		WHERE 
		(ISNULL(@InvType,'')='' OR  dbo.tblInv.intType IN (SELECT data FROM dbo.split(@InvType, ',') WHERE data = 5)
			 OR @InvType = NULL)
		AND (dbo.tblInv.bitInactive = 0)
		AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
										FROM dbo.tblInvCat (NOLOCK)
										LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
										WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
										OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
													FROM dbo.tblInvCatSec (NOLOCK)
													WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
											AND (ISNULL(@UserName,'')='' OR dbo.tblInvCatSec.strUserName = @UserName)))) 
			OR dbo.tblInv.strCategory IS NULL) 
			AND ( dbo.tblInv.strPartNumber  Like  '%'+@SearchText+'%' )
		 ),
		 Data_Final as (Select ROW_NUMBER () over (order by PartNumber) as RowNumber,
		 Data_Inv.*
		 ,dbo.tblInvExt.decAvail AS SumAvail
		 ,dbo.tblInvExt.decAlloc AS SumAlloc
		 ,dbo.tblInvExt.decManuf AS SumManuf
		 ,dbo.tblInvExt.decOnHand AS SumOnHand
		 ,dbo.tblInvExt.decValue AS SumValue
		 ,dbo.tblInvExt.decOnOrder AS SumOnOrder 
		 from Data_Inv
		 INNER JOIN dbo.tblInvExt (NOLOCK) ON Data_Inv.PartNumber = dbo.tblInvExt.strPartNumber
	 	 Where (dbo.tblInvExt.strLocName = LTRIM(RTRIM(@LocationName))
				AND dbo.tblInvExt.bitInActive = 0
					)	
		 ),
		 Data_Final1 as (Select Data_Final.* from Data_Final
		   WHERE RowNumber >=(@Offset+1) and RowNumber <=(@Offset+@PageSize)	)
		   Select Data_Final1.*
		   	,CASE WHEN @FilterType = 0 THEN NULL WHEN @FilterType = 1 THEN dbo.tblInvVend.strVendName WHEN @FilterType = 2 THEN dbo.tblInvCustomer.strCustName END AS CustVendID
			,tblInvImg.ImgData
			,(Case when  @TotalRows > (CEILING(Data_Final1.TotalRows / @PageSize) * @PageSize) then (CEILING(Data_Final1.TotalRows / @PageSize)+1) else CEILING(Data_Final1.TotalRows / @PageSize) End)  AS TotalPages
		    from Data_Final1
			LEFT OUTER JOIN dbo.tblInvVend (NOLOCK) ON Data_Final1.PartNumber = tblInvVend.strPartNumber
			LEFT OUTER JOIN dbo.tblInvCustomer (NOLOCK) ON Data_Final1.PartNumber = tblInvCustomer.strPartNumber
			LEFT OUTER JOIN tblInvImg (NOLOCK) ON Data_Final1.PartNumber = tblInvImg.strPartNumber
		    order by RowNumber
	END

	END
END
GO

/****** Object:  StoredProcedure [dbo].[MobileUserAccessRights]    Script Date: 02-11-2021 09:40:00 ******/
CREATE PROCEDURE [dbo].[MobileUserAccessRights] (
	@UserName VARCHAR(50)
	,@Version INT = 0
	)
AS
BEGIN
	SELECT tblusers.strusername AS 'UserName'
		,strname AS 'Name'
		,strcellnumber AS 'CellNumber'
		,stremail AS 'Email'
		,strpassword AS 'Password'
		,blnisadmin AS 'IsAdmin'
		,blnislockedout AS 'IsLockedOut'
		,dtelastlogin AS 'LastLogin'
		,blnarorders AS 'AROrders'
		,blnarordersremove AS 'AROrdersRemove'
		,blnarsoadjallowed AS 'ARSOAdjAllowed'
		,blnarcreditblockso AS 'ARCreditBlockSO'
		,blnarchangecustonso AS 'ARChangeCustOnSO'
		,blnarquotes AS 'ARQuotes'
		,blnarchangecustonsq AS 'ARChangeCustOnSQ'
		,blnarquotesremove AS 'ARQuotesRemove'
		,blnarsqadjallowed AS 'ARSQAdjAllowed'
		,blnardeliveryadvice AS 'ARDeliveryAdvice'
		,blnardeliveryadviceremove AS 'ARDeliveryAdviceRemove'
		,blnardaadjustmentapproval AS 'ARDeliveryAdviceAdjustApproval'
		,blnwhstpick AS 'WHStPick'
		,blnwhstpickremove AS 'WHStPickRemove'
		,blnwhrec AS 'WHRec'
		,blnwhrecremove AS 'WHRecRemove'
		,blnapgrvadjustmentapproval AS 'WHRecAdjust'
		,blnarqusys AS 'ARQuSys'
		,blnfhqcanapprove AS 'FHQCanApprove'
		,blnfhqcreatepurchaseorder AS 'FHQCreatePurchaseOrder'
		,blnarqusysremove AS 'ARQuSysRemove'
		,blnarfhqadjallowed AS 'ARFHQAdjAllowed'
		,blninvtrans AS 'InvTrans'
		,blndashar AS 'DashAR'
		,blninvbrowser AS 'InvBrowser'
		,blninvcount AS 'InvCount'
		,blnapreq AS 'APReq'
		,blnappradjallowed AS 'APPRAdjAllowed'
		,blnapreqremove AS 'APReqRemove'
		,strinvnumber AS 'InvNumber'
		,strsonumber AS 'SONumber'
		,strquotenumber AS 'QuoteNumber'
		,strpinumber AS 'PINumber'
		,strponumber AS 'PONumber'
		,strrcnumber AS 'RCNumber'
		,strdpnumber AS 'DPNumber'
		,strjenumber AS 'JENumber'
		,strcnnumber AS 'CNNumber'
		,strdnnumber AS 'DNNumber'
		,strrqnumber AS 'RQNumber'
		,strqusysnumber AS 'QuSysNumber'
		,strgrvnumber AS 'GRVNumber'
		,strtknumber AS 'TKNumber'
		,strshnumber AS 'SHNumber'
		,strmsnumber AS 'MSNumber'
		,strcrnumber AS 'CRNumber'
		,strrfqnumber AS 'RFQNumber'
		,strpsnumber AS 'PSNumber'
		,strdanumber AS 'DANumber'
		,strwonumber AS 'WONumber'
		,strjbnumber AS 'JBNumber'
		,strwpnumber AS 'WPNumber'
		,striwonumber AS 'IWONumber'
		,strpynumber AS 'PYNumber'
		,strcbnumber AS 'CBNumber'
		,strpronumber AS 'PRONumber'
		,strbmnumber AS 'BMNumber'
		,strLocName AS 'LocName'
		,strMobileUserToken AS 'MobileUserToken'
		,strSalesName AS 'SalesName'
		,blnTrackUser AS 'TrackUser'
		,blnMobPerformanceDashboard AS 'MobPerformanceDashboard'
		,blnIsMobileUser AS 'IsMobileUser'
		,blnIsMonitorSalespersonsTracking AS 'IsMonitorSalespersonsTracking'
		,blnIsMobileSalesOrder AS 'IsMobileSalesOrder'
		,blnIsMobileSalesQuote AS 'IsMobileSalesQuote'
		,blnIsMobileFreehandQuote AS 'IsMobileFreehandQuote'
		,blnIsMobileCRMActivities AS 'IsMobileCRMActivities'
		,blnIsMobileCapturePOD AS 'IsMobileCapturePOD'
		,blnIsMobileCustomers AS 'IsMobileCustomers'
		,blnIsMobileExpenseClaims AS 'IsMobileExpenseClaims'
		,blnIsMobileDeliveryAdvice AS 'IsMobileDeliveryAdvice'
		,blnIsMobileEnuiriesByItem AS 'IsMobileEnuiriesByItem'
		,blnIsMobileEnuiriesByLocation AS 'IsMobileEnuiriesByLocation'
		,blnIsMobileWarehouseTransfer AS 'IsMobileWarehouseTransfer'
		,blnIsMobileBinTransfer AS 'IsMobileBinTransfer'
		,blnIsMobileGoodsReceiving AS 'IsMobileGoodsReceiving'
		,blnIsMobileStockCount AS 'IsMobileStockCount'
		,blnIsMobilePutAway AS 'IsMobilePutAway'
		,blnIsMobileStockPick AS 'IsMobileStockPick'
		,blnIsMobileJobWorkCentreTransfer AS 'IsMobileJobWorkCentreTransfer'
		,blnIsMobileInventoryIssue AS 'IsMobileInventoryIssue'
		,blnMobPhPOApproval AS 'MobPhPOApproval'
		,strVendName AS 'VendName'
		,blnARViewMarginPercentage AS 'ARViewMarginPercentage'
		,blnIsMobileWSCreateQuotation AS 'IsMobileWSCreateQuotation'
		,blnIsMobileWSProcessJob AS 'IsMobileWSProcessJob'
		,blnIsMobileWSSchedule AS 'IsMobileWSSchedule'
		,blnIsMobileWSInventoryIssue AS 'IsMobileWSInventoryIssue'
		,blnIsMobileProcuPurchaseRequisitions AS 'IsMobileProcuPurchaseRequisitions'
		,blnIsMobileProcuPurchaseOrder AS 'IsMobileProcuPurchaseOrder'
		,blnIsMobileWSServiceableItem AS 'IsMobileWSServiceableItem'
		,blnARPriceChangeAllowed AS 'ARPriceChangeAllowed'
		,blnIsMobileSalesInvoice AS 'IsMobileSalesInvoice'
		,blnIsMobileCreditNoteApproval AS 'IsMobileCreditNoteApproval'
		,blnIsMobileFinance AS 'IsMobileFinance'
		,blnARBlockDesc AS 'ARBlockDesc'
		,blnAPBlockDesc AS 'APBlockDesc'
		,blnARSoftBOMConfiguration AS 'ARSoftBOMConfiguration'
	FROM tblUsers
	LEFT JOIN tblUsersDocs ON tblUsers.strUserName = tblUsersDocs.strUserName
	WHERE (tblUsers.strEmail = @UserName)
END
GO

/****** Object:  StoredProcedure [dbo].[GetFEFTResponseDetails]    Script Date: 17-11-2021 09:40:00 ******/
CREATE PROCEDURE [dbo].[GetFEFTResponseDetails]
( @DocNumber varchar(20)
)
AS
BEGIN
	Declare @JsonResponse NVARCHAR(MAX);
	SET @JsonResponse = (SELECT TOP 1 strResponseData from tblEFTTransactionDetails WHERE strInvDocID = @DocNumber)
	
		SELECT 
					max(CASE WHEN name = 'amount' THEN CONVERT(VARCHAR(15), StringValue) ELSE '' END) AS Amount, 
					max(CASE WHEN name = 'authCode' THEN CONVERT(VARCHAR(10), StringValue) ELSE '' END) AS AuthCode, 
					max(CASE WHEN name = 'cashBack' THEN CONVERT(VARCHAR(15), StringValue) ELSE '' END) AS Cashback, 
					max(CASE WHEN name = 'invoiceNo' THEN CONVERT(VARCHAR(20), StringValue) ELSE '' END) AS InvoiceNumber, 
					max(CASE WHEN name = 'mid' THEN CONVERT(VARCHAR(20), StringValue) ELSE '' END) AS MID, 
					max(CASE WHEN name = 'pan' THEN CONVERT(VARCHAR(15), StringValue) ELSE '' END) AS PAN, 
					max(CASE WHEN name = 'msg' THEN CONVERT(NVARCHAR(100), StringValue) ELSE '' END) AS [Message], 
					max(CASE WHEN name = 'respCode' THEN CONVERT(VARCHAR(10), StringValue) ELSE '' END) AS ResponseCode, 
					max(CASE WHEN name = 'rrn' THEN CONVERT(VARCHAR(20), StringValue) ELSE '' END) AS RRN, 
					max(CASE WHEN name = 'tid' THEN CONVERT(VARCHAR(50), StringValue) ELSE '' END) AS TID
		FROM parseJSON(
				ISNULL(@JsonResponse, '{}')
			)
		WHERE ValueType = 'string'
			OR ValueType = 'boolean'
			OR ValueType = 'int'
			OR ValueType = 'real'
		GROUP BY parent_ID
END
GO

/****** Object:  StoredProcedure [dbo].[GetRepairCharge]    Script Date:  17-11-2021 09:40:00 ******/
CREATE procedure [dbo].[GetRepairCharge]
@partNumber nvarchar(100)
as
begin
select top(1) decRepairCharge from tblinv where strpartnumber = @partNumber
end
GO

/****** Object:  StoredProcedure [dbo].[GetRelatedItemsByPartNumber]    Script Date:  26-11-2021 11:13:00 ******/
CREATE PROCEDURE [dbo].[GetRelatedItemsByPartNumber] (    
	 @PartNumber VARCHAR(50) = NULL)
	AS
BEGIN 
	 SELECT strPartItemNumber FROM tblInvUpsell WHERE strPartNumber = @PartNumber
END
GO

/****** Object:  StoredProcedure [dbo].[GetFilterVendorsGridData]    Script Date: 22-11-2021 13:40:00 ******/
CREATE PROCEDURE [dbo].[GetFilterVendorsGridData] 
	@SelectedPartNumbers NVARCHAR(MAX) = ''
AS
BEGIN
	SET NOCOUNT ON;

	SELECT DISTINCT tblVendors.strVendName AS VendorName
		,tblVendors.strVendDesc AS Description
		,tblVendors.decOpenOrders AS OpenOrders
		,tblVendors.decBalDue AS BalDue
		,tblVendors.decYTDPurch AS YTDPurch
		,tblInvVend.bitPreferred AS IsPreferred
		,CAST(0 AS BIT) AS IsVendorSelected
	FROM tblInvVend
	INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName
	WHERE tblInvVend.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SelectedPartNumbers,','))
	ORDER BY tblVendors.strVendName
END
GO

/****** Object:  StoredProcedure [dbo].[GetImportLayouts]    Script Date: 03-12-2021 13:40:00 ******/
CREATE PROCEDURE [dbo].[GetImportLayouts]
AS
BEGIN
	SELECT *
	FROM tblImportLayout
END
GO

/****** Object:  StoredProcedure [dbo].[GetImportLayoutMappings]    Script Date: 03-12-2021 13:40:00 ******/
CREATE PROCEDURE [dbo].[GetImportLayoutMappings]
@layoutName NVARCHAR(40)
AS
BEGIN
	DECLARE @layoutNameId AS INT = (
			SELECT Id
			FROM tblImportLayout
			WHERE LayoutName = @layoutName
			)

	SELECT *
	FROM tblImportLayoutMapping
	WHERE ImportLayoutId = @layoutNameId
END
GO

/****** Object:  StoredProcedure [dbo].[InsertImportLayout]    Script Date: 03-12-2021 13:40:00 ******/
CREATE PROCEDURE [dbo].[InsertImportLayout]
@layoutName NVARCHAR(40)
	,@module INT
	,@importFileType INT
AS
BEGIN
	INSERT INTO tblImportLayout
	VALUES (
		@layoutName
		,@module
		,@importFileType
		)
END
GO

/****** Object:  StoredProcedure [dbo].[InsertImportLayoutMapping]    Script Date: 03-12-2021 13:40:00 ******/
CREATE PROCEDURE [dbo].[InsertImportLayoutMapping]
@sourceField NVARCHAR(max)
	,@sourceFieldId INT
	,@destField NVARCHAR(max)
	,@destFieldId INT
	,@layoutName NVARCHAR(40)
AS
BEGIN
	DECLARE @layoutNameId AS INT = (
			SELECT Id
			FROM tblImportLayout
			WHERE LayoutName = @layoutName
			)

	INSERT INTO tblImportLayoutMapping
	VALUES (
		@sourceField
		,@sourceFieldId
		,@destField
		,@destFieldId
		,@layoutNameId
		)
END
GO

/****** Object:  StoredProcedure [dbo].[DeleteImportLayout]    Script Date: 03-12-2021 13:40:00 ******/
CREATE PROCEDURE [dbo].[DeleteImportLayout]
@layoutName NVARCHAR(40)
AS
BEGIN
	DECLARE @layoutNameId AS INT = (
			SELECT Id
			FROM tblImportLayout
			WHERE LayoutName = @layoutName
			)

	DELETE
	FROM tblImportLayoutMapping
	WHERE ImportLayoutId = @layoutNameId

	DELETE
	FROM tblImportLayout
	WHERE LayoutName = @layoutName
END
GO

/****** Object:  StoredProcedure [dbo].[GeneratedCustNumber]    Script Date: 03-02-2022 09:50:00 ******/
CREATE PROCEDURE [dbo].[GeneratedCustNumber] 
(
	 @StartText NVARCHAR(500)
	,@CustNameSeg1Type VARCHAR(500)
	,@Format VARCHAR(100)
)
AS
BEGIN
	DECLARE @CustomerName NVARCHAR(500)
	DECLARE @length INT = 1
	DECLARE @Counter INT = 1

	IF @CustNameSeg1Type = 'A'
		SET @CustomerName = (SELECT @StartText + right(@Format + convert(VARCHAR(20), @length), len(@Format)))
	ELSE
		SET @CustomerName = (SELECT right(@Format + convert(VARCHAR(20), @length), len(@Format)) + @StartText)

	WHILE (@Counter > 0)
	BEGIN
		SET @Counter = (SELECT COUNT(strCustName) FROM tblCustomers WHERE strCustName = @CustomerName)

		IF (@Counter > 0)
			SET @length += 1

		IF @CustNameSeg1Type = 'A'
			SET @CustomerName = (SELECT @StartText + right(@Format + convert(VARCHAR(20), @length), len(@Format)))
		ELSE
			SET @CustomerName = (SELECT right(@Format + convert(VARCHAR(20), @length), len(@Format)) + @StartText)
	END

	SELECT @CustomerName
END
GO

/****** Object:  StoredProcedure [dbo].[GetParentChildItemDetails]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[GetParentChildItemDetails]
( 
	 @SKUName VARCHAR(200) = ''
	 ,@PageIndex INT = 1
	 ,@PageSize INT = 1	 
	 ,@UserName VARCHAR(50) = NULL
	 ,@LastUpdated DATETIME = NULL
	 )
	AS
BEGIN 
	 DECLARE @str1 AS NVARCHAR(40)
	 DECLARE @str2 AS NVARCHAR(40)
	 DECLARE @str3 AS NVARCHAR(40)
	 DECLARE @str4 AS NVARCHAR(40)
	 DECLARE @str5 AS NVARCHAR(40)
	 DECLARE @str6 AS NVARCHAR(40)
	 
	 DECLARE @TotalRows INT
	 DECLARE @TotalPages INT
	 DECLARE @StartRowIndex INT
	  ,@EndRowIndex INT;
	 DECLARE @Sql nVARCHAR(MAX)
	 DECLARE @TotalRecords NVARCHAR(MAX) = ''
	 IF ISNULL(@SKUName,'') = '' OR @SKUName = 'ALL'
	 BEGIN
	  SET @SKUName = ''
	 END
	 
	 DECLARE @strToCompareCat AS NVARCHAR(40)='Store Main'
	 DECLARE @strToCompareSubCat AS NVARCHAR(40)='Store Sub'
	 SELECT TOP 1 @str1=strInv1 ,@str2=strInv2 ,@str3=strInv3 ,@str4=strInv4 ,@str5=strInv5 ,@str6=strInv6 FROM dbo.tblOptFields

	 declare @IsUseFieldAsCategory as bit=0

	 IF @str1 = @strToCompareCat 
	 BEGIN
		SET @IsUseFieldAsCategory =1
	 END

	 DECLARE @SQLString NVARCHAR(500);  
	 DECLARE @ParmDefinition NVARCHAR(500);  
	 DECLARE @max_title bit = 1;  
   	 
	 SET @SQLString = N'SELECT Top 1 @max_titleOUT = bitSyncInventoryImages FROM [dbo].[tblCoOpts]';  
	 SET @ParmDefinition = N'@max_titleOUT bit OUTPUT';  
	 
	 IF COL_LENGTH('[dbo].[tblCoOpts]', 'bitSyncInventoryImages') IS NOT NULL
	 BEGIN
	 	EXECUTE sp_executesql @SQLString, @ParmDefinition, @max_titleOUT=@max_title OUTPUT;
	 END
	 
	 SELECT distinct dbo.tblInv.strPartNumber AS PartNumber
	   ,dbo.tblInv.strDesc AS [Description]
	   ,dbo.tblInv.intType AS [Type]
	   ,replace(dbo.tblInv.strCategory,'/','-') as Category
	   ,replace(dbo.tblInv.strSubCategory,'/','-') as SubCategory
	   ,case @IsUseFieldAsCategory when 1 then '' else replace(dbo.tblInv.strSubCategoryGroup,'/','-')  end as SubCategoryGroup	 
	   ,dbo.tblInv.bitUseBOM AS IsUseBOM
	   ,dbo.tblInv.bitInactive AS IsInactive
	   ,dbo.tblInv.decSumAvail AS SumAvail
	   ,dbo.tblInv.decSumAlloc AS SumAlloc
	   ,dbo.tblInv.decSumOnHand AS SumOnHand
	   ,dbo.tblInv.decSumValue AS SumValue
	   ,dbo.tblInv.decSumOnOrder AS SumOnOrder
	   ,dbo.tblInv.strField1 AS Field1
	   ,dbo.tblInv.strField2 AS Field2
	   ,dbo.tblInv.strField3 AS Field3
	   ,dbo.tblInv.strField4 AS Field4
	   ,dbo.tblInv.strField5 AS Field5
	   ,dbo.tblInv.strField6 AS Field6
	   ,dbo.tblInv.strBarCode AS BarCode
	   ,dbo.tblInv.bitInvSerialType AS IsInvSerialType
	   ,dbo.tblInv.strBarCode2 AS BarCode2
	   ,null AS Pricelist
	   ,0.0 AS Selling
	   ,CAST(ISNULL(CASE WHEN dbo.tblInv.bitInvSerialType = 1 THEN (SELECT bitTrackExpiryDate FROM dbo.tblInvSerialTypes (NOLOCK) WHERE dbo.tblInvSerialTypes.strInvSerialType = dbo.tblInv.strInvSerialType) ELSE 0 END, 0) AS BIT) AS IsTrackExpiryDate
	   ,dbo.tblInv.decLastPPUnit AS LastPPUnit   
	   ,dbo.tblinv.intDecimalQuantity AS DecimalQuantity
	   ,'' as CustVendID
	   ,null as ImgData
	   ,dbo.tblInv.strStockUnit as StockUnit
	   ,dbo.tblInv.decBuyToStock AS BuyToStock
	   ,tblInv.strExtendedDesc AS ExtendedDesc
	   ,tblInv.bitWebstoreItem AS IsWebstoreItem
	   ,(CASE WHEN @str1!=@strToCompareCat THEN 
			CASE WHEN @str2!=@strToCompareCat THEN 
				CASE WHEN @str3!=@strToCompareCat THEN 
					CASE WHEN @str4!=@strToCompareCat THEN
						CASE WHEN @str5!=@strToCompareCat THEN
							CASE WHEN @str6!=@strToCompareCat THEN
								dbo.tblInvCat.strDesc
							ELSE (CASE WHEN ISNULL(dbo.tblInv.strField6,'')='' THEN dbo.tblInvCat.strDesc ELSE dbo.tblInv.strField6 END) END
						ELSE (CASE WHEN ISNULL(dbo.tblInv.strField5,'')='' THEN dbo.tblInvCat.strDesc ELSE dbo.tblInv.strField5 END) END
					ELSE (CASE WHEN ISNULL(dbo.tblInv.strField4,'')='' THEN dbo.tblInvCat.strDesc ELSE dbo.tblInv.strField4 END) END
				ELSE (CASE WHEN ISNULL(dbo.tblInv.strField3,'')='' THEN dbo.tblInvCat.strDesc ELSE dbo.tblInv.strField3 END) END
			ELSE (CASE WHEN ISNULL(dbo.tblInv.strField2,'')='' THEN dbo.tblInvCat.strDesc ELSE dbo.tblInv.strField2 END) END
		ELSE (CASE WHEN ISNULL(dbo.tblInv.strField1,'')='' THEN dbo.tblInvCat.strDesc ELSE dbo.tblInv.strField1 END) END) AS CategoryDesc
	   ,tblInv.strUnitOfMeasure AS UnitOfMeasure
	   ,tblInv.strSellUnit AS SellUnit
	   ,tblInv.strSellStockUnit AS SellStockUnit
	   ,tblInv.decSellFromStock AS SellFromStock
	   ,tblInv.decDefSaleQty AS DefSaleQty
	   ,TotalRows = 0
	   ,TotalPages = 0
	   ,@IsUseFieldAsCategory as IsUseFieldAsCategory
	   ,tblInv.decMass as Mass
	   ,tblInv.decH as Height
	   ,tblInv.decD as Depth
	   ,tblInv.decW as Width
	   ,tblInv.strPOSDesc as POSDesc
	   ,tblInv.strAddInfo as AddInfo
	   ,@max_title as SyncInventoryImages
	   ,ISNULL(tblInvItemTax.bitOverrideTax, 0) as IsOverrideTax
	   ,ISNULL(tblInvItemTax.strOverridingTaxCode, '') as OverridingTaxCode
	   ,ISNULL(tblInvSubCat.strDesc, '') as SubCategoryDesc
	   ,ISNULL(tblInvGroupSubCat.strDesc, '') as SubCategoryGroupDesc
	  INTO #TempCTE
	  FROM dbo.tblInv (NOLOCK)	 
	  INNER JOIN dbo.tblInvCat (NOLOCK) ON tblInvCat.strCategory = tblinv.strCategory
	  INNER JOIN dbo.tblInvItemTax (NOLOCK) ON tblInvItemTax.strPartNumber = tblInv.strPartNumber
	  LEFT JOIN dbo.tblInvSubCat (NOLOCK) ON tblInvSubCat.strCategory = tblInv.strSubCategory and tblInvSubCat.strParentCategory = tblInv.strCategory
	  LEFT JOIN dbo.tblInvGroupSubCat (NOLOCK) ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup and tblInvGroupSubCat.strParentSubCategory = tblInv.strSubCategory and tblInvGroupSubCat.strParentCategory = tblInv.strCategory
	  WHERE dbo.tblInv.intType in (1 ,4)  AND (dbo.tblInv.bitInactive = 0)   AND (dbo.tblInv.bitWebstoreItem =1)	 
	  AND (@IsUseFieldAsCategory=0 or (@IsUseFieldAsCategory=1 and isnull(dbo.tblInv.strField1,'')<>'')  )
	  AND ((dbo.tblInv.strCategory IN (SELECT dbo.tblInvCat.strCategory
			  FROM dbo.tblInvCat (NOLOCK)
			  LEFT JOIN dbo.tblInvCatSec (NOLOCK) ON dbo.tblInvCat.strCategory = dbo.tblInvCatSec.strCategory
			  WHERE ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
				 FROM dbo.tblInvCatSec (NOLOCK)
				 WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) = 0
			  OR (ISNULL((SELECT COUNT(dbo.tblInvCatSec.strCategory)
				 FROM dbo.tblInvCatSec (NOLOCK)
				 WHERE dbo.tblInvCatSec.strCategory = dbo.tblInvCat.strCategory), 0) > 0
			   AND (ISNULL(@UserName,'')='' OR dbo.tblInvCatSec.strUserName = @UserName)))) 
	   OR dbo.tblInv.strCategory IS NULL)	  
	  AND (ISNULL(@SKUName,'')='' OR dbo.tblInv.strPartNumber = @SKUName)
	  AND (ISNULL(@LastUpdated,'')='' OR dbo.tblInv.dteLastUpdated >= @LastUpdated)
	  ORDER BY PartNumber

	  SELECT @TotalRows = count(*), @TotalPages = case (Count(*) % @PageSize) when 0 then  (Count(*) /@PageSize)  else  (Count(*) /@PageSize) + 1 end FROM #TempCTE 
	  UPDATE #TempCTE SET TotalRows = @TotalRows, TotalPages = @TotalPages;
	  
	  SELECT * FROM #TempCTE ORDER BY PartNumber
	  OFFSET @PageSize * (@PageIndex - 1) ROWS
      FETCH NEXT @PageSize ROWS ONLY OPTION (RECOMPILE);
	  
	  DROP TABLE #TempCTE;	  
END
GO

/****** Object:  StoredProcedure [dbo].[GetChildItemList]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[GetChildItemList] 
	AS
BEGIN 
	 SELECT distinct strPartItemNumber FROM tblInvUpsell WHERE bitSalesInvoice <> 1
END
GO

/****** Object:  StoredProcedure [dbo].[GetParentWebstoreAttributesByPartNumber]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[GetParentWebstoreAttributesByPartNumber] (    
	 @PartNumber VARCHAR(1000) = NULL)
	AS
BEGIN 
	SELECT  distinct  tblOptLineFields.strCaption AS Caption, tblOptLineFieldsDT.Field AS AttributeName
FROM        tblOptLineFields INNER JOIN
                  tblOptLineFieldsDT ON tblOptLineFields.strField = tblOptLineFieldsDT.Field
				  WHERE tblOptLineFields.intModule = 4 AND tblOptLineFieldsDT.Module = 4 AND tblOptLineFieldsDT.Reference in ( SELECT  *
                FROM    fnSplitStringAsTable(@PartNumber, ','))

				  SELECT     tblOptLineFieldLists.strValue AS CaptionValue, tblOptLineFieldLists.strField AS CaptionField
FROM        tblOptLineFieldLists INNER JOIN
                  tblOptLineFields ON tblOptLineFieldLists.intModule = tblOptLineFields.intModule AND tblOptLineFieldLists.strField = tblOptLineFields.strField INNER JOIN
                  tblOptLineFieldsDT ON tblOptLineFields.strField = tblOptLineFieldsDT.Field AND tblOptLineFields.intModule = tblOptLineFieldsDT.Module
WHERE     (tblOptLineFieldLists.intModule = 4) AND (tblOptLineFields.intType = 2) AND tblOptLineFieldsDT.Reference in ( SELECT  *
                FROM    fnSplitStringAsTable(@PartNumber, ','))
END
GO

/****** Object:  StoredProcedure [dbo].[GetNextDocumentNumberManufacture]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[GetNextDocumentNumberManufacture]	
AS
BEGIN
	SELECT ISNULL(MAX(lngWPNumber), 0) + 1 AS WPNumber
	FROM tblLastIDs  
END
GO

/****** Object:  StoredProcedure [dbo].[GetJobListWIP]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[GetJobListWIP] (  
	 @FieldName NVARCHAR(MAX) = NULL,
	 @SearchText NVARCHAR(MAX) = NULL,
	 @PageIndex int = 1,
	 @PageSize int = 0,	 
	 @SQStart DATETIME = NULL,
	 @SQEnd DATETIME = NULL)
	AS
BEGIN 
	
	DECLARE @Sql nvarchar(MAX)
	DECLARE @Where nvarchar(MAX)
	DECLARE @Query nvarchar(MAX)
	DECLARE @TotalRows INT
	DECLARE @TotalPages INT
	DECLARE @StartRowIndex INT
	,@EndRowIndex INT;
	
	SET @TotalRows = 0
	SET @TotalPages = 0
	IF ISNULL(@FieldName,'') = ''


	IF ISNULL(@SQStart,'') = ''              
       SET @SQStart = 'January 1, 1753'              
    IF ISNULL(@SQEnd,'') = ''              
       SET @SQEnd = 'December 12, 9999'   
	
	
	SET @Query = ' SELECT ROW_NUMBER() OVER(ORDER BY strCustName) AS RowNumber,
	tblManJob.strJBDocID AS JBDocID, tblManJob.dteJournalDate AS JournalDate, 
	CASE WHEN tblManJob.intType = 5 THEN ''REV-'' + tblManJobReversed.strJBDocID ELSE tblManJob.strReference END AS Reference, 
	tblManJob.strCustName AS CustName, tblManJob.strWCCode AS WCCode, tblManJob.intType AS Type 
	FROM tblManJob LEFT JOIN tblManJobReversed ON tblManJob.strJBDocID = tblManJobReversed.strJBDocIDRev '
SET @Where = ' tblManJob.dteJournalDate BETWEEN @SQStart AND @SQEnd 
	AND (tblManJob.intType <> 1 AND tblManJob.intType <> 4 AND tblManJob.intType <> 5) '
SET @Sql = ';WITH CTE AS('+@Query+' WHERE '+@Where + ')'
print @Sql

IF(@PageSize = 0)
	BEGIN
		SET @Sql = @Sql + ' SELECT * FROM CTE;'
	END
ELSE
	BEGIN
		SELECT @StartRowIndex = ((@PageIndex - 1) * @PageSize) + 1;
		SELECT @EndRowIndex = @StartRowIndex + @PageSize - 1;

		
		DECLARE @TotalRecords NVARCHAR(MAX) = 'SELECT @temp = COUNT(1) FROM tblManJob WHERE ' + @Where + ''
	
		EXEC sp_executesql @TotalRecords, 
							N'@SearchText NVARCHAR(MAX), @FieldName NVARCHAR(MAX),@SQStart DATETIME, @SQEnd DATETIME, @temp int out'
							,@SearchText=@SearchText,@FieldName=@FieldName,@SQStart=@SQStart,@SQEnd=@SQEnd,@temp=@TotalRows OUTPUT
	
		SELECT @TotalPages = CEILING(@TotalRows / @PageSize)

		IF @TotalRows > @TotalPages * @PageSize
			SET @TotalPages = @TotalPages + 1

		SET @Sql = @Sql + ' SELECT *,'+ CAST(@TotalRows AS VARCHAR) + ' AS TotalRows,'+CAST(@TotalPages AS VARCHAR)+' AS TotalPages FROM CTE WHERE RowNumber BETWEEN ' + cast(@StartRowIndex AS VARCHAR) + ' AND ' + cast(@EndRowIndex AS VARCHAR) + ' ;'
	END

	exec sp_executesql @Sql, 
                        N'@SearchText NVARCHAR(MAX), @FieldName NVARCHAR(MAX),@SQStart DATETIME, @SQEnd DATETIME', 
                        @SearchText=@SearchText,@FieldName=@FieldName,@SQStart=@SQStart,@SQEnd=@SQEnd
END
GO

/****** Object:  StoredProcedure [dbo].[GetInventoryWIPByJobNumber]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[GetInventoryWIPByJobNumber] (    
	 @SQJBDocID VARCHAR(50) = NULL,
	 @SQWCCode VARCHAR(50) = NULL)
	AS
BEGIN 
	 SELECT tblManJobCompInv.intLineNo AS LineNumber, tblManJobCompInv.strPartNumber AS PartNumber, tblManJobCompInv.strDesc AS Description, tblManJobCompInv.strLocation AS Location, tblManJobCompInv.decManQty AS ManufactureQty, ISNULL(SUM(tblManWIPCompInv.decPostQty),0) - ISNULL(SUM(tblManWIPCompInv.decReturnQty),0) AS PostQty, tblManJobCompInv.decManAmount AS ManufactureAmount, ISNULL(SUM(tblManWIPCompInv.decPostAmount),0) AS PostAmount, tblInv.bitInvSerialType AS IsInvSerialType, tblInv.strStockUnit AS Unit, tblManJobCompInv.strBOMNumber AS BOMNumber, ISNULL(tblInvSerialTypes.bitMethod,0) AS Method, ISNULL(tblInvSerialTypes.bitDimensionExist,0) as DimensionExist
	 --,ISNULL(STUFF((SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX)) FROM tblInvLocBin WHERE tblInvLocBin.lngId IN (SELECT lngBinId FROM tblManWIPCompInvBin WHERE tblManWIPCompInvBin.strWIPDocID = tblManWIPCompInv.strWIPDocID AND tblManWIPCompInv.intLineNo = tblManWIPCompInvBin.intLineNo) FOR XML PATH('')),1,1,''),'') AS BinCode
	 --,ISNULL(STUFF((SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(MAX)) FROM tblInvLocBin WHERE tblInvLocBin.lngId IN (SELECT lngBinId FROM tblManWIPCompInvBin WHERE tblManWIPCompInvBin.strWIPDocID = tblManWIPCompInv.strWIPDocID AND tblManWIPCompInv.intLineNo = tblManWIPCompInvBin.intLineNo) FOR XML PATH('')),1,1,''),'') AS BinId
	 FROM tblManJobCompInv INNER JOIN tblInv ON tblManJobCompInv.strPartNumber = tblInv.strPartNumber 
	 LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
	 LEFT JOIN tblManWIP ON tblManJobCompInv.strJBDocID = tblManWIP.strJBDocID AND tblManJobCompInv.strWCCode = tblManWIP.strWCCode 
	 LEFT JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID AND tblManJobCompInv.intLineNo = tblManWIPCompInv.intLineNo 
	 WHERE tblManJobCompInv.strJBDocID = @SQJBDocID AND tblManJobCompInv.strWCCode = @SQWCCode 
	 GROUP BY tblManJobCompInv.intLineNo, tblManJobCompInv.strPartNumber, tblManJobCompInv.strDesc, tblManJobCompInv.strLocation, tblManJobCompInv.decManQty, tblManJobCompInv.decManAmount, tblInv.bitInvSerialType, tblInv.strStockUnit, tblManJobCompInv.strBOMNumber, tblInvSerialTypes.bitMethod, tblInvSerialTypes.bitDimensionExist--, tblManWIPCompInv.strWIPDocID, tblManWIPCompInv.intLineNo
	 ORDER BY tblManJobCompInv.intLineNo
END
GO

/****** Object:  StoredProcedure [dbo].[GetLabourWIPByJobNumber]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[GetLabourWIPByJobNumber] (    
	 @SQJBDocID VARCHAR(50) = NULL,
	 @SQWCCode VARCHAR(50) = NULL)
	AS
BEGIN 
	 SELECT tblManJobCompLab.intLineNo AS LineNumber, tblManJobCompLab.strLabCode AS LabourCode, tblManLabour.strDesc AS Description, tblManJobCompLab.decManVariableHours AS VariableHourly, tblManJobCompLab.decVariableRate AS VariableRate, tblManJobCompLab.decSetupHours AS SetupHours, tblManJobCompLab.decSetupRate AS SetupRate, tblManJobCompLab.decBreakdownHours AS BreakdownHours, tblManJobCompLab.decBreakdownRate AS BreakdownRate, 
	 ISNULL(SUM(tblManWIPCompLab.decPostVariableHours),0) - ISNULL(SUM(tblManWIPCompLab.decReturnVariableHours),0)  AS PostVariableHours, 
	 ISNULL(SUM(tblManWIPCompLab.decPostSetupHours),0) - ISNULL(SUM(tblManWIPCompLab.decReturnSetupHours),0) AS PostSetupHours, 
	 ISNULL(SUM(tblManWIPCompLab.decPostBreakdownHours),0) - ISNULL(SUM(tblManWIPCompLab.decReturnBreakdownHours),0) AS PostBreakdownHours, 
	 tblManJobCompLab.decManAmount AS ManufactureAmount, ISNULL(SUM(tblManWIPCompLab.decPostAmount),0) AS PostAmount, tblManJobCompLab.strBOMNumber AS BOMNumber
	 FROM tblManJobCompLab INNER JOIN tblManLabour ON tblManJobCompLab.strLabCode = tblManLabour.strLabCode 
	 LEFT JOIN tblManWIP ON tblManJobCompLab.strJBDocID = tblManWIP.strJBDocID AND tblManJobCompLab.strWCCode = tblManWIP.strWCCode 
	 LEFT JOIN tblManWIPCompLab ON tblManWIP.strWIPDocID = tblManWIPCompLab.strWIPDocID AND tblManJobCompLab.intLineNo = tblManWIPCompLab.intLineNo 
	 WHERE tblManJobCompLab.strJBDocID = @SQJBDocID AND tblManJobCompLab.strWCCode = @SQWCCode 
	 GROUP BY tblManJobCompLab.intLineNo, tblManJobCompLab.strLabCode, tblManLabour.strDesc, tblManJobCompLab.decManVariableHours, tblManJobCompLab.decVariableRate, tblManJobCompLab.decSetupHours, tblManJobCompLab.decSetupRate, tblManJobCompLab.decBreakdownHours, tblManJobCompLab.decBreakdownRate, tblManJobCompLab.decManAmount, tblManJobCompLab.strBOMNumber 
	 ORDER BY tblManJobCompLab.intLineNo
END
GO

/****** Object:  StoredProcedure [dbo].[GetMachineryWIPByJobNumber]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[GetMachineryWIPByJobNumber] (    
	 @SQJBDocID VARCHAR(50) = NULL,
	 @SQWCCode VARCHAR(50) = NULL)
	AS
BEGIN 
	 SELECT tblManJobCompMach.intLineNo AS LineNumber, tblManJobCompMach.strMachCode AS MachCode, tblManMachinery.strDesc AS MachDesc, tblManJobCompMach.decManVariableHours AS VariableHourly, tblManJobCompMach.decVariableRate AS VariableRate, tblManJobCompMach.decSetupHours AS SetupHours, tblManJobCompMach.decSetupRate AS SetupRate, tblManJobCompMach.decBreakdownHours AS BreakdownHours, tblManJobCompMach.decBreakdownRate AS BreakdownRate, 
	 ISNULL(SUM(tblManWIPCompMach.decPostVariableHours),0) - ISNULL(SUM(tblManWIPCompMach.decReturnVariableHours),0) AS PostVariableHours, 
	 ISNULL(SUM(tblManWIPCompMach.decPostSetupHours),0) - ISNULL(SUM(tblManWIPCompMach.decReturnSetupHours),0) AS PostSetupHours, 
	 ISNULL(SUM(tblManWIPCompMach.decPostBreakdownHours),0) - ISNULL(SUM(tblManWIPCompMach.decReturnBreakdownHours),0) AS PostBreakdownHours, 
	 tblManJobCompMach.decManAmount AS ManufactureAmount, ISNULL(SUM(tblManWIPCompMach.decPostAmount),0) AS PostAmount, tblManJobCompMach.strBOMNumber AS BOMNumber
	 FROM tblManJobCompMach INNER JOIN tblManMachinery ON tblManJobCompMach.strMachCode = tblManMachinery.strMachCode 
	 LEFT JOIN tblManWIP ON tblManJobCompMach.strJBDocID = tblManWIP.strJBDocID AND tblManJobCompMach.strWCCode = tblManWIP.strWCCode 
	 LEFT JOIN tblManWIPCompMach ON tblManWIP.strWIPDocID = tblManWIPCompMach.strWIPDocID AND tblManJobCompMach.intLineNo = tblManWIPCompMach.intLineNo 
	 WHERE tblManJobCompMach.strJBDocID = @SQJBDocID AND tblManJobCompMach.strWCCode = @SQWCCode 
	 GROUP BY tblManJobCompMach.intLineNo, tblManJobCompMach.strMachCode, tblManMachinery.strDesc, tblManJobCompMach.decManVariableHours, tblManJobCompMach.decVariableRate, tblManJobCompMach.decSetupHours, tblManJobCompMach.decSetupRate, tblManJobCompMach.decBreakdownHours, tblManJobCompMach.decBreakdownRate, tblManJobCompMach.decManAmount, tblManJobCompMach.strBOMNumber 
	 ORDER BY tblManJobCompMach.intLineNo
END
GO

/****** Object:  StoredProcedure [dbo].[GetRecoveryCostsWIPByJobNumber]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[GetRecoveryCostsWIPByJobNumber] (    
	 @SQJBDocID VARCHAR(50) = NULL,
	 @SQWCCode VARCHAR(50) = NULL)
	AS
BEGIN 
	 SELECT tblManJobCompOverhead.intLineNo AS LineNumber, tblManJobCompOverhead.intGLNumber AS Account, tblAccounts.strDesc AS Description, tblManJobCompOverhead.intDept AS Deparment, tblManJobCompOverhead.uidCenterID AS CenterID, tblManJobCompOverhead.decManAmount AS Amount, tblCenters.strLvl1 AS Lvl1, tblCenters.strLvl2, tblCenters.strLvl3, tblCenters.strLvl4, tblCenters.strLvl5, 
	 ISNULL(SUM(tblManWIPCompOverhead.decIssueAmount),0) - ISNULL(SUM(tblManWIPCompOverhead.decReturnAmount),0) AS PostAmount, 
	 tblManJobCompOverhead.strBOMNumber AS BOMNumber 
	 FROM tblManJobCompOverhead INNER JOIN tblAccounts ON tblManJobCompOverhead.intGLNumber = tblAccounts.intGLNumber 
	 LEFT JOIN tblManWIP ON tblManJobCompOverhead.strJBDocID = tblManWIP.strJBDocID  AND tblManJobCompOverhead.strWCCode = tblManWIP.strWCCode 
	 LEFT JOIN tblCenters ON tblManJobCompOverhead.uidCenterID = tblCenters.uidCenterID 
	 LEFT JOIN tblManWIPCompOverhead ON tblManWIP.strWIPDocID = tblManWIPCompOverhead.strWIPDocID AND tblManJobCompOverhead.intLineNo = tblManWIPCompOverhead.intLineNo 
	 WHERE tblManJobCompOverhead.strJBDocID = @SQJBDocID AND tblManJobCompOverhead.strWCCode = @SQWCCode 
	 GROUP BY tblManJobCompOverhead.intLineNo, tblManJobCompOverhead.intGLNumber, tblAccounts.strDesc, tblManJobCompOverhead.intDept, tblManJobCompOverhead.uidCenterID, tblManJobCompOverhead.decManAmount, tblCenters.strLvl1, tblCenters.strLvl2, tblCenters.strLvl3, tblCenters.strLvl4, tblCenters.strLvl5, tblManJobCompOverhead.strBOMNumber 
	 ORDER BY tblManJobCompOverhead.intLineNo
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateLastIDsForWIP]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[UpdateLastIDsForWIP]
	@SQWPNumber BigInt
AS
BEGIN
	  BEGIN
		 UPDATE tblLastIDs SET lngWPNumber = @SQWPNumber
	  END
END
GO

/****** Object:  StoredProcedure [dbo].[UpdateStatusWIP]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[UpdateStatusWIP]
	@SQJBDocID VARCHAR(50),
	@SQType VARCHAR(50)
AS
BEGIN
	  BEGIN
		 UPDATE tblManJob SET intType = @SQType WHERE strJBDocID = @SQJBDocID
	  END
END
GO

/****** Object:  StoredProcedure [dbo].[ManufacturingInventoryWIPInsert]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[ManufacturingInventoryWIPInsert](    
	 @ManJobCompInvData AS ManJobCompInvTableType READONLY,
	 @ManWIPCompInvData AS ManWIPCompInvTableType READONLY,
	 @ManWIPCompInvBinData AS ManWIPCompInvBinTableType READONLY,
	 @ManWIPCompInvSerialData AS ManWIPCompInvSerialTableType READONLY,
	 @SerialNumberTrackingData AS SerialNumberTrackingTableType READONLY,
	 @InvLotExtUpdateData AS InvLotExtTableType READONLY,
	 @InvLotExtInsertData AS InvLotExtTableType READONLY,
	 @InvSerialExtUpdateData AS InvSerialExtTableType READONLY,
	 @InvSerialExtInsertData AS InvSerialExtTableType READONLY
	 )
	AS
BEGIN
	--tblManJobCompInv
	IF EXISTS (
			SELECT *
			FROM @ManJobCompInvData
			)
	BEGIN
		INSERT INTO tblManJobCompInv
			   ([strJBDocID]
			   ,[strWCCode]
			   ,[intLineNo]
			   ,[strPartNumber]
			   ,[strLocation]
			   ,[decQty]
			   ,[decManQty]
			   ,[decPPUnit]
			   ,[decManAmount]
			   ,[strBOMNumber]
			   ,[strDesc])
		SELECT  strJBDocID
			   ,strWCCode
			   ,intLineNo
			   ,strPartNumber
			   ,strLocation
			   ,decQty
			   ,decManQty
			   ,decPPUnit
			   ,decManAmount
			   ,strBOMNumber
			   ,strDesc           
		 FROM  @ManJobCompInvData
	END;

	--tblManWIPCompInv
	IF EXISTS (
			SELECT *
			FROM @ManWIPCompInvData
			)
	BEGIN
		INSERT INTO [dbo].[tblManWIPCompInv]
			   ([strWIPDocID]
			   ,[intLineNo]
			   ,[strPartNumber]
			   ,[strLocation]
			   ,[decBOMQty]
			   ,[decPostedQty]
			   ,[decPostQty]
			   ,[decAmount]
			   ,[decPostedAmount]
			   ,[decPostAmount]
			   ,[strBOMNumber]
			   ,[intType]
			   ,[decReturnQty]
			   ,[strDesc])
		SELECT 
				[strWIPDocID]
			   ,[intLineNo]
			   ,[strPartNumber]
			   ,[strLocation]
			   ,[decBOMQty]
			   ,[decPostedQty]
			   ,[decPostQty]
			   ,[decAmount]
			   ,[decPostedAmount]
			   ,[decPostAmount]
			   ,[strBOMNumber]
			   ,[intType]
			   ,[decReturnQty]
			   ,[strDesc]
		FROM   @ManWIPCompInvData;
	END;

	--tblManWIPCompInvBin
	IF EXISTS (
			SELECT *
			FROM @ManWIPCompInvBinData
			)
	BEGIN
		INSERT INTO [dbo].[tblManWIPCompInvBin]
			   ([strWIPDocID]
			   ,[intLineNo]
			   ,[lngBinID]
			   ,[decQty])
		SELECT 
				[strWIPDocID]
			   ,[intLineNo]
			   ,[lngBinID]
			   ,[decQty]
		FROM   @ManWIPCompInvBinData;
	END;

	--Get Max lngID
	DECLARE @MaxID AS INT = (SELECT MAX(lngID) FROM tblManWIPCompInv)

	--tblManWIPCompInvSerial
	IF EXISTS (
			SELECT *
			FROM @ManWIPCompInvSerialData
			)
	BEGIN
		INSERT INTO [dbo].[tblManWIPCompInvSerial]
			   ([strWIPDocID]
			   ,[lngWIPID]
			   ,[intLineNo]
			   ,[strSerialNumber]
			   ,[decQty]
			   ,[strUnit]
			   ,[bitExpiryDate]
			   ,[dteExpiryDate]
			   ,[intSerialLotType]
			   ,[lngBinID])
		SELECT	[strWIPDocID]
			   ,@MaxID
			   ,[intLineNo]
			   ,[strSerialNumber]
			   ,[decQty]
			   ,[strUnit]
			   ,[bitExpiryDate]
			   ,[dteExpiryDate]
			   ,[intSerialLotType]
			   ,[lngBinID]
		FROM @ManWIPCompInvSerialData
	END

	--tblSerialNumberTracking
	IF EXISTS (
			SELECT *
			FROM @SerialNumberTrackingData
			)
	BEGIN
		INSERT INTO tblSerialNumberTracking (
			strPartNumber
			,strSerialNumber
			,strUserName
			,dteUpdatedDate
			,intType
			,strDocID
			,intLineNo
			,decQty
			,strLocation
			,intStatus
			,bitExpiryDate
			,dteExpiryDate
			,lngBinId
			)
		SELECT PartNumber
			,SerialNumber
			,UserName
			,UpdatedDate
			,SerialLotType
			,DocID
			,[LineNo]
			,Qty
			,Location
			,[Status]
			,IsExpiryDate
			,ExpiryDate
			,BinId
		FROM @SerialNumberTrackingData
	END

	--tblInvLotExt
	IF EXISTS (
			SELECT *
			FROM @InvLotExtUpdateData
			)
	BEGIN
		UPDATE tblInvLotExt
		SET decQty = decQty + t.Qty
			,dteUpdatedDate = t.UpdatedDate
		FROM @InvLotExtUpdateData t
		WHERE strPartNumber = t.PartNumber
			AND strLotNumber = t.LotNumber
			AND strLocName = t.LocName
	END

	----tblInvLotExt
	IF EXISTS (
			SELECT *
			FROM @InvLotExtInsertData
			)
	BEGIN
		INSERT INTO tblInvLotExt
		SELECT *
			,GETDATE()
		FROM @InvLotExtInsertData
	END

	--tblInvSerialExt
	IF EXISTS (
			SELECT *
			FROM @InvSerialExtUpdateData
			)
	BEGIN
		UPDATE tblInvSerialExt
		SET strLocName = t.LocName
			,decQty = t.Qty
			,intStatus = t.[Status]
			,strDocID = t.DocID
			,dteUpdatedDate = t.UpdatedDate
		FROM @InvSerialExtUpdateData t
		WHERE strPartNumber = t.PartNumber
			AND strSerialNumber = t.SerialNumber
			--AND strLocName = t.LocName  
	END

	--tblInvSerialExt
	IF EXISTS (
			SELECT *
			FROM @InvSerialExtInsertData
			)
	BEGIN
		INSERT INTO tblInvSerialExt
		SELECT *
			,GETDATE()
		FROM @InvSerialExtInsertData
	END
END
GO

/****** Object:  StoredProcedure [dbo].[ManufacturingLabourWIPInsert]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[ManufacturingLabourWIPInsert](    
	 @ManJobCompLabData AS ManJobCompLabTableType READONLY,
	 @ManWIPCompLabData AS ManWIPCompLabTableType READONLY
	 )
	AS
BEGIN
	--tblManJobCompLab
	IF EXISTS (
			SELECT *
			FROM @ManJobCompLabData
			)
	BEGIN
		INSERT INTO [dbo].[tblManJobCompLab]
			   ([strJBDocID]
			   ,[strWCCode]
			   ,[intLineNo]
			   ,[strLabCode]
			   ,[decVariableHours]
			   ,[decVariableRate]
			   ,[decSetupHours]
			   ,[decSetupRate]
			   ,[decBreakdownHours]
			   ,[decBreakdownRate]
			   ,[decManAmount]
			   ,[decManVariableHours]
			   ,[strBOMNumber])
		SELECT  [strJBDocID]
			   ,[strWCCode]
			   ,[intLineNo]
			   ,[strLabCode]
			   ,[decVariableHours]
			   ,[decVariableRate]
			   ,[decSetupHours]
			   ,[decSetupRate]
			   ,[decBreakdownHours]
			   ,[decBreakdownRate]
			   ,[decManAmount]
			   ,[decManVariableHours]
			   ,[strBOMNumber]         
		 FROM  @ManJobCompLabData
	END

	--tblManWIPCompLab
	IF EXISTS (
			SELECT *
			FROM @ManWIPCompLabData
			)
	BEGIN
		INSERT INTO [dbo].[tblManWIPCompLab]
			   ([strWIPDocID]
			   ,[intLineNo]
			   ,[strLabCode]
			   ,[decVariableHours]
			   ,[decVariableRate]
			   ,[decSetupHours]
			   ,[decSetupRate]
			   ,[decBreakdownHours]
			   ,[decBreakdownRate]
			   ,[decAmount]
			   ,[decPostedVariableHours]
			   ,[decPostedSetupHours]
			   ,[decPostedBreakdownHours]
			   ,[decPostedAmount]
			   ,[decPostVariableHours]
			   ,[decPostSetupHours]
			   ,[decPostBreakdownHours]
			   ,[decPostAmount]
			   ,[strBOMNumber]
			   ,[intType]
			   ,[decReturnVariableHours]
			   ,[decReturnSetupHours]
			   ,[decReturnBreakdownHours])
		SELECT 
				[strWIPDocID]
			   ,[intLineNo]
			   ,[strLabCode]
			   ,[decVariableHours]
			   ,[decVariableRate]
			   ,[decSetupHours]
			   ,[decSetupRate]
			   ,[decBreakdownHours]
			   ,[decBreakdownRate]
			   ,[decAmount]
			   ,[decPostedVariableHours]
			   ,[decPostedSetupHours]
			   ,[decPostedBreakdownHours]
			   ,[decPostedAmount]
			   ,[decPostVariableHours]
			   ,[decPostSetupHours]
			   ,[decPostBreakdownHours]
			   ,[decPostAmount]
			   ,[strBOMNumber]
			   ,[intType]
			   ,[decReturnVariableHours]
			   ,[decReturnSetupHours]
			   ,[decReturnBreakdownHours]
		FROM   @ManWIPCompLabData
	END
END
GO

/****** Object:  StoredProcedure [dbo].[ManufacturingMachineryWIPInsert]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[ManufacturingMachineryWIPInsert](    
	 @ManJobCompMachData AS ManJobCompMachTableType READONLY,
	 @ManWIPCompMachData AS ManWIPCompMachTableType READONLY
	 )
	AS
BEGIN
	--tblManJobCompMach
	IF EXISTS (
			SELECT *
			FROM @ManJobCompMachData
			)
	BEGIN
		INSERT INTO [dbo].[tblManJobCompMach]
			   ([strJBDocID]
			   ,[strWCCode]
			   ,[intLineNo]
			   ,[strMachCode]
			   ,[decVariableHours]
			   ,[decVariableRate]
			   ,[decSetupHours]
			   ,[decSetupRate]
			   ,[decBreakdownHours]
			   ,[decBreakdownRate]
			   ,[decManAmount]
			   ,[decManVariableHours]
			   ,[strBOMNumber])
		SELECT  [strJBDocID]
			   ,[strWCCode]
			   ,[intLineNo]
			   ,[strMachCode]
			   ,[decVariableHours]
			   ,[decVariableRate]
			   ,[decSetupHours]
			   ,[decSetupRate]
			   ,[decBreakdownHours]
			   ,[decBreakdownRate]
			   ,[decManAmount]
			   ,[decManVariableHours]
			   ,[strBOMNumber]      
		 FROM  @ManJobCompMachData
	END

	--tblManWIPCompMach
	IF EXISTS (
			SELECT *
			FROM @ManWIPCompMachData
			)
	BEGIN
		INSERT INTO [dbo].[tblManWIPCompMach]
			   ([strWIPDocID]
			   ,[intLineNo]
			   ,[strMachCode]
			   ,[decVariableHours]
			   ,[decVariableRate]
			   ,[decSetupHours]
			   ,[decSetupRate]
			   ,[decBreakdownHours]
			   ,[decBreakdownRate]
			   ,[decAmount]
			   ,[decPostedVariableHours]
			   ,[decPostedSetupHours]
			   ,[decPostedBreakdownHours]
			   ,[decPostedAmount]
			   ,[decPostVariableHours]
			   ,[decPostSetupHours]
			   ,[decPostBreakdownHours]
			   ,[decPostAmount]
			   ,[strBOMNumber]
			   ,[intType]
			   ,[decReturnVariableHours]
			   ,[decReturnSetupHours]
			   ,[decReturnBreakdownHours])
		SELECT 
				[strWIPDocID]
			   ,[intLineNo]
			   ,[strMachCode]
			   ,[decVariableHours]
			   ,[decVariableRate]
			   ,[decSetupHours]
			   ,[decSetupRate]
			   ,[decBreakdownHours]
			   ,[decBreakdownRate]
			   ,[decAmount]
			   ,[decPostedVariableHours]
			   ,[decPostedSetupHours]
			   ,[decPostedBreakdownHours]
			   ,[decPostedAmount]
			   ,[decPostVariableHours]
			   ,[decPostSetupHours]
			   ,[decPostBreakdownHours]
			   ,[decPostAmount]
			   ,[strBOMNumber]
			   ,[intType]
			   ,[decReturnVariableHours]
			   ,[decReturnSetupHours]
			   ,[decReturnBreakdownHours]
		FROM   @ManWIPCompMachData
	END
END
GO

/****** Object:  StoredProcedure [dbo].[ManufacturingRecoveryCostWIPInsert]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[ManufacturingRecoveryCostWIPInsert](    
	 @ManJobCompOverheadData AS ManJobCompOverheadTableType READONLY,
	 @ManWIPCompOverheadData AS ManWIPCompOverheadTableType READONLY
	 )
	AS
BEGIN
	--tblManJobCompOverhead
	IF EXISTS (
			SELECT *
			FROM @ManJobCompOverheadData
			)
	BEGIN
		INSERT INTO [dbo].[tblManJobCompOverhead]
			   ([strJBDocID]
			   ,[strWCCode]
			   ,[intLineNo]
			   ,[intGLNumber]
			   ,[intDept]
			   ,[uidCenterID]
			   ,[decAmount]
			   ,[decManAmount]
			   ,[strBOMNumber])
		SELECT  [strJBDocID]
			   ,[strWCCode]
			   ,[intLineNo]
			   ,[intGLNumber]
			   ,[intDept]
			   ,[uidCenterID]
			   ,[decAmount]
			   ,[decManAmount]
			   ,[strBOMNumber]  
		 FROM  @ManJobCompOverheadData
	END

	--tblManWIPCompOverhead
	IF EXISTS (
			SELECT *
			FROM @ManWIPCompOverheadData
			)
	BEGIN
		INSERT INTO [dbo].[tblManWIPCompOverhead]
			   ([strWIPDocID]
			   ,[intLineNo]
			   ,[intGLNumber]
			   ,[intDept]
			   ,[uidCenterID]
			   ,[decAmount]
			   ,[decPostedAmount]
			   ,[decPostAmount]
			   ,[strBOMNumber]
			   ,[intType]
			   ,[decIssueAmount]
			   ,[decReturnAmount])
		SELECT 
				[strWIPDocID]
			   ,[intLineNo]
			   ,[intGLNumber]
			   ,[intDept]
			   ,[uidCenterID]
			   ,[decAmount]
			   ,[decPostedAmount]
			   ,[decPostAmount]
			   ,[strBOMNumber]
			   ,[intType]
			   ,[decIssueAmount]
			   ,[decReturnAmount]
		FROM   @ManWIPCompOverheadData
	END
END
GO

/****** Object:  StoredProcedure [dbo].[ManWIPCompInvSerialOutSeqParameterWIPInsert]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[ManWIPCompInvSerialOutSeqParameterWIPInsert](    
	 @ManWIPCompInvSerialOutSeqData AS ManWIPCompInvSerialOutSeqTableType READONLY
	 )
	AS
BEGIN
	--tblManWIPCompInvSerialOutSeq
	IF EXISTS (
			SELECT *
			FROM @ManWIPCompInvSerialOutSeqData
			)
	BEGIN
		INSERT INTO [dbo].[tblManWIPCompInvSerialOutSeq]
			   ([strWIPDocID]
			   ,[strJBDocID]
			   ,[strWCCode]
			   ,[dteSystemDate]
			   ,[strUserName]
			   ,[intType]
			   ,[intLineNo]
			   ,[strPartNumber]
			   ,[strLocName]
			   ,[strSerialNumber]
			   ,[decQty]
			   ,[bitExpiryDate]
			   ,[dteExpiryDate])
		SELECT  [strWIPDocID]
			   ,[strJBDocID]
			   ,[strWCCode]
			   ,[dteSystemDate]
			   ,[strUserName]
			   ,[intType]
			   ,[intLineNo]
			   ,[strPartNumber]
			   ,[strLocName]
			   ,[strSerialNumber]
			   ,[decQty]
			   ,[bitExpiryDate]
			   ,[dteExpiryDate] 
		 FROM  @ManWIPCompInvSerialOutSeqData
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetLabourWIPGL]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[GetLabourWIPGL](    
	 @SQLabCode VARCHAR(50) = NULL)
	AS
BEGIN
	SELECT intGLNumber AS GLNumber, ISNULL(intDept, 0) AS Dept FROM tblManLabour WHERE strLabCode = @SQLabCode
END
GO

/****** Object:  StoredProcedure [dbo].[GetMachineryWIPGL]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[GetMachineryWIPGL](    
	 @SQMachCode VARCHAR(50) = NULL)
	AS
BEGIN
	SELECT intGLNumber AS GLNumber, ISNULL(intDept, 0) AS Dept FROM tblManMachinery WHERE strMachCode = @SQMachCode
END
GO

/****** Object:  StoredProcedure [dbo].[ManfacturingWIPInsert]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[ManfacturingWIPInsert](    
	 @SQstrWIPDocID VARCHAR(50),
	 @SQstrJBDocID  VARCHAR(50),
	 @SQstrWCCode VARCHAR(50),
	 @SQdteJournalDate DATETIME,
	 @SQdteSystemDate DATETIME,
	 @SQstrUserName VARCHAR(50),
	 @SQintType INT,
	 @SQlngJourID INT,
	 @SQstrFileName VARCHAR(50) = NULL
	 )
	AS
BEGIN
	INSERT INTO [dbo].[tblManWIP]
           ([strWIPDocID]
           ,[strJBDocID]
           ,[strWCCode]
           ,[dteSystemDate]
           ,[dteJournalDate]
           ,[strUserName]
           ,[intType]
           ,[lngJourID]
           ,[strFileName])
     VALUES (
			@SQstrWIPDocID,
			@SQstrJBDocID,
			@SQstrWCCode,
			GETDATE(),
			@SQdteJournalDate,
			@SQstrUserName,
			@SQintType,
			@SQlngJourID,
			@SQstrFileName
			)
END
GO

/****** Object:  StoredProcedure [dbo].[GetMachineryWIPGL]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[GetNextManWIPCompInvLngID]
	@SQstrWIPDocID VARCHAR(50),
	@SQintLineNo VARCHAR(50)
AS
BEGIN
	  BEGIN
		 SELECT ISNULL(MAX(lngID), 0) AS lngID  FROM tblManWIPCompInv WHERE strWIPDocID = @SQstrWIPDocID AND intLineNo = @SQintLineNo
	  END
END
GO

/****** Object:  StoredProcedure [dbo].[GetWIPInvLotExt]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[GetWIPInvLotExt]
	@SQPartNumber VARCHAR(100),
	@SQLotNumber VARCHAR(200),
	@SQLocName VARCHAR(50),
	@SQlngBinId INT
AS
BEGIN
	  BEGIN
		 SELECT decQty AS Quantity FROM tblInvLotExt WHERE strPartNumber = @SQPartNumber AND strLotNumber = @SQLotNumber AND strLocName = @SQLocName  AND lngBinId = @SQlngBinId
	  END
END
GO

/****** Object:  StoredProcedure [dbo].[GetWIPInvSerialExt]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[GetWIPInvSerialExt]
	@SQstrPartNumber VARCHAR(50),
	@SQstrSerialNumber VARCHAR(50)
AS
BEGIN
	  BEGIN
		 SELECT intStatus AS Status, strLocName as LocationName FROM tblInvSerialExt WHERE strPartNumber = @SQstrPartNumber And strSerialNumber = @SQstrSerialNumber
	  END
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvLotExtCount]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[GetInvLotExtCount]
	@SQPartNumber VARCHAR(100),
	@SQLotNumber VARCHAR(200),
	@SQLocName VARCHAR(50),
	@SQlngBinId INT
AS
BEGIN
	  BEGIN
		 SELECT COUNT(strLotNumber) FROM tblInvLotExt WHERE strPartNumber = @SQPartNumber AND strLotNumber = @SQLotNumber AND strLocName = @SQLocName AND lngBinId = @SQlngBinId
	  END
END
GO

/****** Object:  StoredProcedure [dbo].[GetInvSerialExtCount]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[GetInvSerialExtCount]
	@SQPartNumber VARCHAR(100),
	@SQSerialNumber VARCHAR(200)
AS
BEGIN
	  BEGIN
		 SELECT COUNT(strSerialNumber) FROM tblInvSerialExt WHERE strPartNumber = @SQPartNumber AND strSerialNumber = @SQSerialNumber
	  END
END
GO

/****** Object:  StoredProcedure [dbo].[GetEFDTransactionCount]    Script Date: 08-02-2022 09:38:00 ******/
CREATE PROCEDURE [dbo].[GetEFDTransactionCount]
@SQDocID AS NVARCHAR(Max)
AS
BEGIN
	SELECT Count(tblInvoiceDoc.strInvDocID) AS InvoiceCount
	FROM tblInvoiceDoc
	INNER JOIN tblEFDInvoiceDoc ON tblInvoiceDoc.strInvDocID = tblEFDInvoiceDoc.strInvDocID
	WHERE tblInvoiceDoc.strInvDocID = @SQDocID AND intTransactionType = 0
END
GO

/****** Object:  StoredProcedure [dbo].[GetAllOwners]    Script Date: 12-03-2022 14:55:00 ******/
CREATE PROCEDURE [dbo].[GetAllOwners]
AS
BEGIN
	SELECT *
	FROM tblOwners
END
GO

/****** Object:  StoredProcedure [dbo].[DeleteOwner]    Script Date: 12-03-2022 14:55:00 ******/
CREATE PROCEDURE [dbo].[DeleteOwner] 
@ownerName AS NVARCHAR(50)
AS
BEGIN
	DELETE
	FROM tblOwners
	WHERE OwnerName = @ownerName
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdateOwners]    Script Date: 12-03-2022 14:55:00 ******/
CREATE PROCEDURE [dbo].[AddUpdateOwners] 
	@ownerName AS NVARCHAR(50)
	,@ownerDesc AS NVARCHAR(100)
	,@street1 AS NVARCHAR(200)
	,@street2 AS NVARCHAR(200)
	,@suburb AS NVARCHAR(50)
	,@city AS NVARCHAR(50)
	,@province AS NVARCHAR(50)
	,@postal AS NVARCHAR(20)
	,@country AS NVARCHAR(50)
	,@phone AS NVARCHAR(50)
	,@mobile AS NVARCHAR(50)
	,@fax AS NVARCHAR(50)
	,@email AS NVARCHAR(250)
	,@vatRegNo AS NVARCHAR(50)
	,@inactive AS BIT
	,@isEdit AS BIT
	,@oldOwnername AS NVARCHAR(50)
AS
BEGIN
	IF @isEdit = 1
	BEGIN
		UPDATE tblOwners
		SET OwnerName = @ownerName
			,OwnerDesc = @ownerDesc
			,Street1 = @street1
			,Street2 = @street2
			,Suburb = @suburb
			,City = @city
			,Province = @province
			,Postal = @postal
			,Country = @country
			,Phone = @phone
			,Mobile = @mobile
			,Fax = @fax
			,Email = @email
			,VatRegNo = @vatRegNo
			,Inactive = @inactive
			,DateUpdated = GETDATE()
		WHERE OwnerName = @oldOwnername
	END
	ELSE
	BEGIN
		INSERT INTO tblOwners
		VALUES (
			@ownerName
			,@ownerDesc
			,@street1
			,@street2
			,@suburb
			,@city
			,@province
			,@postal
			,@country
			,@phone
			,@mobile
			,@fax
			,@email
			,@vatRegNo
			,@inactive
			,GETDATE()
			,GETDATE()
			)
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetOwnersList]    Script Date: 12-03-2022 14:55:00 ******/
CREATE PROCEDURE [dbo].[GetOwnersList] (
	@PageSize INT = 25
	,@PageIndex INT = 1
	,@SearchText NVARCHAR(max) = NULL
	)
AS
BEGIN
	SELECT *
	FROM tblOwners
	WHERE (
			@SearchText IS NULL
			OR (
				OwnerName LIKE '%' + @SearchText + '%'
				OR OwnerDesc LIKE '%' + @SearchText + '%'
				OR Street1 LIKE '%' + @SearchText + '%'
				OR Street2 LIKE '%' + @SearchText + '%'
				OR Suburb LIKE '%' + @SearchText + '%'
				OR City LIKE '%' + @SearchText + '%'
				OR Province LIKE '%' + @SearchText + '%'
				OR Postal LIKE '%' + @SearchText + '%'
				OR Country LIKE '%' + @SearchText + '%'
				)
			)
		AND (Inactive = 0)
	ORDER BY OwnerName OFFSET(@PageIndex - 1) * @PageSize ROWS

	FETCH NEXT @PageSize ROWS ONLY;
END
GO

/****** Object:  StoredProcedure [dbo].[GetOwnersListCount]    Script Date: 12-03-2022 14:55:00 ******/
CREATE PROCEDURE [dbo].[GetOwnersListCount] (@SearchText NVARCHAR(max) = NULL)
AS
BEGIN
	SELECT count(*)
	FROM tblOwners
	WHERE (
			@SearchText IS NULL
			OR (
				OwnerName LIKE '%' + @SearchText + '%'
				OR OwnerDesc LIKE '%' + @SearchText + '%'
				OR Street1 LIKE '%' + @SearchText + '%'
				OR Street2 LIKE '%' + @SearchText + '%'
				OR Suburb LIKE '%' + @SearchText + '%'
				OR City LIKE '%' + @SearchText + '%'
				OR Province LIKE '%' + @SearchText + '%'
				OR Postal LIKE '%' + @SearchText + '%'
				OR Country LIKE '%' + @SearchText + '%'
				)
			)
		AND (Inactive = 0)
END
GO

/****** Object:  StoredProcedure [dbo].[GetOwnerAccountInfo]    Script Date: 12-03-2022 14:55:00 ******/
CREATE PROCEDURE [dbo].[GetOwnerAccountInfo] 
@ownerName AS NVARCHAR(50)
AS
BEGIN
	SELECT *
	FROM tblOwners
	WHERE OwnerName = @ownerName
END
GO

/****** Object:  StoredProcedure [dbo].[CreateOwnerFromCustomer]    Script Date: 12-03-2022 14:55:00 ******/
CREATE PROCEDURE [dbo].[CreateOwnerFromCustomer] 
@custName AS NVARCHAR(50)
AS
BEGIN
	DECLARE @ownercount AS INT = (
			SELECT count(*)
			FROM tblOwners
			WHERE OwnerName = @custName
			)

	IF @ownercount = 0
	BEGIN
		INSERT INTO tblOwners
		SELECT strCustName
			,strCustDesc
			,strStreet1
			,strStreet2
			,ISNULL(strSuburb, '')
			,strCity
			,strProvince
			,strPostal
			,strCountry
			,strPhone
			,strCellPhone
			,strFax
			,strEmail
			,strVAT
			,bitInactive
			,GETDATE()
			,GETDATE()
		FROM tblCustomers
		WHERE strCustName = @custName
	END
END
GO

/****** Object:  StoredProcedure [dbo].[LoadOwners]    Script Date: 12-03-2022 14:55:00 ******/
CREATE PROCEDURE [dbo].[LoadOwners] (
	@IsCheckedSearch BIT
	,@SearchText NVARCHAR(max)
	,@IsInactive BIT
	)
AS
BEGIN
	IF (@IsCheckedSearch = 1)
	BEGIN
		IF (@SearchText <> '')
		BEGIN
			IF (@IsInactive = 1)
			BEGIN
				SELECT OwnerName
					,OwnerDesc
				FROM tblOwners
				WHERE (
						OwnerName LIKE @SearchText
						OR OwnerDesc LIKE @SearchText
						)
				ORDER BY OwnerName
			END
			ELSE
			BEGIN
				SELECT OwnerName
					,OwnerDesc
				FROM tblOwners
				WHERE Inactive = 0
					AND (
						OwnerName LIKE @SearchText
						OR OwnerDesc LIKE @SearchText
						)
				ORDER BY OwnerName
			END
		END
	END
	ELSE
	BEGIN
		IF (@IsInactive = 1)
		BEGIN
			SELECT OwnerName
				,OwnerDesc
			FROM tblOwners
			ORDER BY OwnerName
		END
		ELSE
		BEGIN
			SELECT OwnerName
				,OwnerDesc
			FROM tblOwners
			WHERE Inactive = 0
			ORDER BY OwnerName
		END
	END
END
GO

CREATE PROCEDURE [dbo].[DeleteContainersDTData] (@DocumentID AS NVARCHAR(50))
AS
BEGIN
	DELETE
	FROM tblContainersDT
	WHERE strCntDocID = @DocumentID
END
GO

/****** Object:  StoredProcedure [dbo].[GetSalesInvoiceBackOrders]    Script Date: 07-04-2022 14:09:43 ******/

CREATE PROCEDURE [dbo].[GetSalesInvoiceBackOrders]
@DocNumber as Nvarchar(max)
AS
BEGIN
SELECT DOC.strOrdDocId
,DOC.dteJournalDate
,DOC.bitEmailed
,DOC.bitPrinted
,DOC.bitCleared
,DT.bitDelCost
,DOC.bitIsLayby
,DOC.strCustName
,DOC.strCurrency
,DT.strPartNumber
,DT.strPartDesc
,DT.intLineNo
,DT.intType
,DT.strUnit
,DT.decQty
,DT.decStockQty
,DT.decQtyRemaining
,DT.decStockQtyRemain
,DT.decEaIncTaxF
,DT.decBuyoutCost
,DT.decItemWeight
,DT.decLineDiscAmt
,DT.decLineDiscAmtF
,DT.decLineDiscPerc
,DT.decLineTaxAmt
,DT.decLineTaxAmtF
,DT.decLineTotExc
,DT.decLineTotExcF
,DT.decLineTotInc
,DT.decPriceEaExc
,DT.decPriceEaExcF
,DT.decPriceEaInc
,DT.decTotIncTaxF
,DT.decVolumetricWeight
FROM tblOrderDoc DOC
INNER JOIN tblOrderDocDT DT ON DOC.strOrdDocID = DT.strOrdDocID
WHERE DT.decStockQtyRemain =  DT.decStockQty
AND DT.decQtyRemaining = DT.decQty
AND DT.bitDelCost = 0
AND DT.bitDiscountTax = 0
AND DOC.strOrdDocID IN (
SELECT INV.strOrdDocID
FROM tblInvoiceDoc AS INV
WHERE INV.strInvDocID = @DocNumber
)
END
GO

/****** Object:  StoredProcedure [dbo].[GetAccountClass]    Script Date: 08-04-2022 14:59:30 ******/
CREATE PROCEDURE [dbo].[GetAccountClass]
AS
BEGIN
Select TY.intAcctTypeID AS AcctTypeID,TY.strAcctType AS AcctType,CL.intAcctClassID AS AcctClassID,CL.strDefaultLabel AS DefaultLabel,CL.strCustomLabel AS CustomLabel
from tblAccountType TY Inner join tblAccountClass CL
ON TY.intAcctTypeID = CL.intAcctTypeID
END
GO

/****** Object:  StoredProcedure [dbo].[GetProcessDocList]    Script Date: 12-04-2022 15:37:00 ******/
CREATE PROCEDURE [dbo].[GetProcessDocList]
(  
	@DocType AS INT,  
	@IsAllJobs AS BIT,  
	@IsFromOpenProcJob AS BIT,
 	@SearchText As NVARCHAR(max) = '',
	@PageIndex As int = 1,
	@PageSize As int = 25
)  
AS  
BEGIN  
 IF @IsAllJobs = 1 
  WITH Paged AS
	(
  SELECT   
   ProcessDocID ,  
   tblWSProcessDoc.ServiceableItemCode ,  
   tsi.ServiceableItemName,  
   JobTemplateID ,  
   tblWSProcessDoc.OwnerCode ,  
   tblWSProcessDoc.CustomerCode ,  
   dbo.funGetAddressString(tblWSProcessDoc.CustomerCode) as CustomerDetails,  
   SystemDate ,  
   DocumentDate ,
   DocumentDate AS JournalDate,
   RequiredDate ,  
   ReferenceNumber ,  
   tblWSProcessDoc.AddInfo ,  
   Technician ,  
   SalesName ,  
   Dept ,  
   DocType ,  
   InventoryTotal ,  
   LabourTotal ,  
   BuyOutsTotal ,  
   RecoveryTotal ,  
   InventoryTotalF ,  
   LabourTotalF ,  
   BuyOutsTotalF ,  
   RecoveryTotalF ,  
   Term ,  
   SubTotal ,  
   VAT ,  
   Total ,  
   IsForeign ,  
   SubTotalF ,  
   VATF ,  
   TotalF ,  
   IsFromQuote ,  
   QuoteDocID ,  
   Notes ,  
   Printed ,  
   Emailed ,  
   Cleared ,  
   Currency ,  
   DiscPerc ,  
   DiscAmt ,  
   DiscAmtF ,  
   RevisionNumber ,  
   Exchange ,  
   SubFormated ,  
   VATFormatted ,  
   TotFormatted ,  
   DiscFormatted ,  
   tblWSProcessDoc.CreatedDate ,  
   tblWSProcessDoc.UpdatedDate ,  
   tblWSProcessDoc.CreatedBy ,  
   tblWSProcessDoc.UpdatedBy ,
   ROW_NUMBER() OVER(ORDER BY tblWSProcessDoc.ProcessDocID) AS RowNumber
  FROM   
   tblWSProcessDoc  
   LEFT OUTER JOIN tblWSServiceableItem as tsi ON tblWSProcessDoc.ServiceableItemCode = tsi.ServiceableItemCode  
  WHERE   
   (@DocType = 7 And (DocType = 1 or DocType = 2)) or (DocType = @DocType) 
   AND (@SearchText IS NULL OR @SearchText = '' OR ProcessDocID like '%'+@SearchText+'%' OR 
				ServiceableItemDescription like '%'+@SearchText+'%' OR 
				tsi.ServiceableItemName like '%'+@SearchText+'%')
   )
		SELECT * FROM Paged	WHERE RowNumber BETWEEN (@PageIndex - 1) * @PageSize + 1 AND @PageIndex * @PageSize;
 ELSE  
  If @IsFromOpenProcJob = 1  
  WITH Paged AS
	(
   SELECT   
    ProcessDocID ,  
    tblWSProcessDoc.ServiceableItemCode ,  
    tsi.ServiceableItemName,  
    JobTemplateID ,  
    tblWSProcessDoc.OwnerCode ,  
    tblWSProcessDoc.CustomerCode ,  
    dbo.funGetAddressString(tblWSProcessDoc.CustomerCode) as CustomerDetails,  
    SystemDate ,  
    DocumentDate ,  
	DocumentDate AS JournalDate,
    RequiredDate ,  
    ReferenceNumber ,  
    tblWSProcessDoc.AddInfo ,  
    Technician ,  
    SalesName ,  
    Dept ,  
    DocType ,  
    InventoryTotal ,  
    LabourTotal ,  
    BuyOutsTotal ,  
    RecoveryTotal ,  
    InventoryTotalF ,  
    LabourTotalF ,  
    BuyOutsTotalF ,  
    RecoveryTotalF ,  
    Term ,  
    SubTotal ,  
    VAT ,  
    Total ,  
    IsForeign ,  
    SubTotalF ,  
    VATF ,  
    TotalF ,  
    IsFromQuote ,  
    QuoteDocID ,  
    Notes ,  
    Printed ,  
    Emailed ,  
    Cleared ,  
    Currency ,  
    DiscPerc ,  
    DiscAmt ,  
    DiscAmtF ,  
    RevisionNumber ,  
    Exchange ,  
    SubFormated ,  
    VATFormatted ,  
    TotFormatted ,  
    DiscFormatted ,  
    tblWSProcessDoc.CreatedDate ,  
    tblWSProcessDoc.UpdatedDate ,  
    tblWSProcessDoc.CreatedBy ,  
    tblWSProcessDoc.UpdatedBy ,
	ROW_NUMBER() OVER(ORDER BY tblWSProcessDoc.ProcessDocID) AS RowNumber
   FROM   
    tblWSProcessDoc  
    LEFT OUTER JOIN tblWSServiceableItem as tsi ON tblWSProcessDoc.ServiceableItemCode = tsi.ServiceableItemCode  
   WHERE   
   ((@DocType = 7 And (DocType = 1 or DocType = 2)) or (DocType = @DocType)) AND Cleared = 0 AND JobStatusType = 2  
   AND (@SearchText IS NULL OR @SearchText = '' OR ProcessDocID like '%'+@SearchText+'%' OR 
				ServiceableItemDescription like '%'+@SearchText+'%' OR 
				tsi.ServiceableItemName like '%'+@SearchText+'%')
   )
		SELECT * FROM Paged	WHERE RowNumber BETWEEN (@PageIndex - 1) * @PageSize + 1 AND @PageIndex * @PageSize;
  ELSE  
  WITH Paged AS
	(
     SELECT   
    ProcessDocID ,  
    tblWSProcessDoc.ServiceableItemCode ,  
    tsi.ServiceableItemName,  
    JobTemplateID ,  
    tblWSProcessDoc.OwnerCode ,  
    tblWSProcessDoc.CustomerCode ,  
    dbo.funGetAddressString(tblWSProcessDoc.CustomerCode) as CustomerDetails,  
    SystemDate ,  
    DocumentDate ,
	DocumentDate AS JournalDate,
    RequiredDate ,  
    ReferenceNumber ,  
    tblWSProcessDoc.AddInfo ,  
    Technician ,  
    SalesName ,  
    Dept ,  
    DocType ,  
    InventoryTotal ,  
    LabourTotal ,  
    BuyOutsTotal ,  
    RecoveryTotal ,  
    InventoryTotalF ,  
    LabourTotalF ,  
    BuyOutsTotalF ,  
    RecoveryTotalF ,  
    Term ,  
    SubTotal ,  
    VAT ,  
    Total ,  
    IsForeign ,  
    SubTotalF ,  
    VATF ,  
    TotalF ,  
    IsFromQuote ,  
    QuoteDocID ,  
    Notes ,  
    Printed ,  
    Emailed ,  
    Cleared ,  
    Currency ,  
    DiscPerc ,  
    DiscAmt ,  
    DiscAmtF ,  
    RevisionNumber ,  
    Exchange ,  
    SubFormated ,  
    VATFormatted ,  
    TotFormatted ,  
    DiscFormatted ,  
    tblWSProcessDoc.CreatedDate ,  
    tblWSProcessDoc.UpdatedDate ,  
    tblWSProcessDoc.CreatedBy ,  
    tblWSProcessDoc.UpdatedBy ,
	ROW_NUMBER() OVER(ORDER BY tblWSProcessDoc.ProcessDocID) AS RowNumber
   FROM   
    tblWSProcessDoc  
    LEFT OUTER JOIN tblWSServiceableItem as tsi ON tblWSProcessDoc.ServiceableItemCode = tsi.ServiceableItemCode  
   WHERE   
    ((@DocType = 7 And (DocType = 1 or DocType = 2)) or (DocType = @DocType)) AND Cleared = 0
	AND (@SearchText IS NULL OR @SearchText = '' OR ProcessDocID like '%'+@SearchText+'%' OR 
				ServiceableItemDescription like '%'+@SearchText+'%' OR 
				tsi.ServiceableItemName like '%'+@SearchText+'%')
	)
		SELECT * FROM Paged	WHERE RowNumber BETWEEN (@PageIndex - 1) * @PageSize + 1 AND @PageIndex * @PageSize;
END
GO

/****** Object:  StoredProcedure [dbo].[GetServiceableItemList]    Script Date: 12-04-2022 15:37:00 ******/
CREATE PROCEDURE [dbo].[GetServiceableItemList]  
(  
 @IsAllItems AS BIT,  
 @SearchText As NVARCHAR(max) = '',
 @PageIndex As int = 1,
 @PageSize As int = 25
)  
AS  
BEGIN
      IF @IsAllItems = 1
        WITH paged
             AS (SELECT DISTINCT tblWSServiceableItem.ServiceableItemCode,
                                 typeTable.ServiceableItemTypeCode,
                                 typeTable.ServiceableItemTypeDescription,
                                 ServiceableItemName,
                                 tblwsserviceableitem.ServiceableItemTypeId,
                                 ServiceableItemDescription,
                                 OwnerCode,
								 tblOwners.OwnerDesc,
                                 CustomerCode,
								 tblCustomers.strCustDesc AS CustDesc,
                                 tblWSServiceableItem.OwnerDetails,
                                 dbo.funGetAddressString(CustomerCode) AS CustomerDetails,
                                 IsInternalAsset,
                                 AssetNumber,
                                 AssetServiceCostAccount,
                                 LastServiceDate,
                                 NextServiceDate,
                                 tblWSServiceableItem.IsInactive,
                                 tblWSServiceableItem.CreatedDate,
                                 tblWSServiceableItem.UpdatedDate,
                                 tblWSServiceableItem.CreatedBy,
                                 tblWSServiceableItem.UpdatedBy,
                                 tblWSServiceableItem.ShipTo,
                                 tblWSServiceableItem.AddInfo,
                                 Row_number() OVER(ORDER BY tblWSServiceableItem.ServiceableItemCode) AS RowNumber
                 FROM   tblWSServiceableItem
                        INNER JOIN tblWSServiceableItemType AS typeTable ON tblWSServiceableItem.ServiceableItemTypeId = typeTable.ServiceableItemTypeId
						LEFT JOIN tblOwners ON tblWSServiceableItem.OwnerCode = tblOwners.OwnerName
						LEFT JOIN tblCustomers ON tblWSServiceableItem.CustomerCode = tblCustomers.strCustName
                 WHERE  ServiceableItemName LIKE '%' + @SearchText + '%'
                         OR ServiceableItemDescription LIKE '%' + @SearchText + '%'
                         OR OwnerCode LIKE '%' + @SearchText + '%'
                         OR CustomerCode LIKE '%' + @SearchText + '%')
        SELECT * FROM paged WHERE  rownumber BETWEEN ( @PageIndex - 1 ) * @PageSize + 1 AND @PageIndex * @PageSize;
      ELSE
        WITH paged
             AS (SELECT DISTINCT tblWSServiceableItem.ServiceableItemCode,
                                 typeTable.ServiceableItemTypeCode,
                                 typeTable.ServiceableItemTypeDescription,
                                 ServiceableItemName,
                                 tblwsserviceableitem.ServiceableItemTypeId,
                                 ServiceableItemDescription,
                                 OwnerCode,
								 tblOwners.OwnerDesc,
                                 CustomerCode,
								 tblCustomers.strCustDesc AS CustDesc,
                                 tblWSServiceableItem.OwnerDetails,
                                 dbo.funGetAddressString(CustomerCode) AS CustomerDetails,
                                 IsInternalAsset,
                                 AssetNumber,
                                 AssetServiceCostAccount,
                                 LastServiceDate,
                                 NextServiceDate,
                                 tblWSServiceableItem.IsInactive,
                                 tblWSServiceableItem.CreatedDate,
                                 tblWSServiceableItem.UpdatedDate,
                                 tblWSServiceableItem.CreatedBy,
                                 tblWSServiceableItem.UpdatedBy,
                                 tblWSServiceableItem.ShipTo,
                                 tblWSServiceableItem.AddInfo,
                                 Row_number() OVER(ORDER BY tblWSServiceableItem.ServiceableItemCode) AS RowNumber
                 FROM   tblWSServiceableItem
                        INNER JOIN tblWSServiceableItemType AS typeTable ON tblWSServiceableItem.ServiceableItemTypeId = typeTable.ServiceableItemTypeId
						LEFT JOIN tblOwners ON tblWSServiceableItem.OwnerCode = tblOwners.OwnerName
						LEFT JOIN tblCustomers ON tblWSServiceableItem.CustomerCode = tblCustomers.strCustName
                 WHERE  tblWSServiceableItem.IsInactive = 0
                        AND ( ServiceableItemName LIKE '%' + @SearchText + '%'
                               OR ServiceableItemDescription LIKE '%' + @SearchText + '%'
                               OR OwnerCode LIKE '%' + @SearchText + '%'
                               OR CustomerCode LIKE '%' + @SearchText + '%' ))
        SELECT * FROM paged WHERE  rownumber BETWEEN ( @PageIndex - 1 ) * @PageSize + 1 AND @PageIndex * @PageSize;
END
GO

/****** Object:  StoredProcedure [dbo].[GetJobnumbersForRequisitionList]    Script Date: 12-04-2022 15:37:00 ******/
CREATE PROCEDURE [dbo].[GetJobnumbersForRequisitionList]
(
	@SearchText As NVARCHAR(max) = '',
	@PageIndex As int = 1,
	@PageSize As int = 25
)
AS
BEGIN
 WITH Paged AS
	(
	--DoctType = 2 is Process Job
	SELECT 
		--CASE Cleared WHEN 1 THEN 'Closed' ELSE 'Open' END as 'JobStatus'
		ProcessDocID
		,ServiceableItemCode
		,JobTemplateID
		,OwnerCode
		,CustomerCode
		,CustomerDetails
		,SystemDate
		,DocumentDate
		,RequiredDate
		,ReferenceNumber
		,AddInfo
		,Technician
		,SalesName
		,Dept
		,DocType
		,InventoryTotal
		,LabourTotal
		,BuyOutsTotal
		,RecoveryTotal
		,InventoryTotalF
		,LabourTotalF
		,BuyOutsTotalF
		,RecoveryTotalF
		,Term
		,SubTotal
		,VAT
		,Total
		,IsForeign
		,SubTotalF
		,VATF
		,TotalF
		,IsFromQuote
		,QuoteDocID
		,Notes
		,Printed
		,Emailed
		,Cleared
		,Currency
		,DiscPerc
		,DiscAmt
		,DiscAmtF
		,RevisionNumber
		,Exchange
		,SubFormated
		,VATFormatted
		,TotFormatted
		,DiscFormatted
		,CreatedDate
		,UpdatedDate
		,CreatedBy
		,UpdatedBy
		,SOReasonCode
		,DelMethodCode
		,TotalWeight
		,TotalVolWeight
		,DeliveryCost
		,DeliveryCostF
		,DeliveryCostFormatted
		,(CASE WHEN JobStatusType = 2 THEN 'Open' ELSE CASE WHEN JobStatusType = 4 THEN 'Work In Progress' END END) AS JobStatusText
		,ROW_NUMBER() OVER(ORDER BY tblWSProcessDoc.ProcessDocID) AS RowNumber
 FROM tblWSProcessDoc 
 WHERE DocType = 2 AND Cleared = 0
 )
		SELECT * FROM Paged	WHERE RowNumber BETWEEN (@PageIndex - 1) * @PageSize + 1 AND @PageIndex * @PageSize;
 END
 GO

/****** Object:  StoredProcedure [dbo].[GetWorkshopSchedulerData]    Script Date: 12-04-2022 15:37:00 ******/
 CREATE PROCEDURE [dbo].[GetWorkshopSchedulerData] (
	@Technician NVARCHAR(60)
	,@JobStatus INT
	)
AS
BEGIN	
	IF @JobStatus <> 3 -- 3 = Closed Job. It will be fetch from tblWSInvoiceDoc table  
	BEGIN
		SELECT 
			 tpd.ProcessDocID
			,tpd.CustomerCode AS Location     
			,tpd.ProcessDocID AS Subject               
			,tpd.ProcessDocID AS Description    
			,cast(0 AS BIT) AS AllDay
			,tpd.DocumentDate
			,tpd.RequiredDate
		FROM tblWSProcessDoc AS tpd
		LEFT OUTER JOIN tblWSServiceableItem AS ts ON ts.ServiceableItemCode = tpd.ServiceableItemCode
		LEFT OUTER JOIN tblSalesPersons ON tpd.Technician = tblSalesPersons.strSalesName
		WHERE Technician = CASE 
				WHEN @Technician = 'ALL'
					THEN Technician
				ELSE @Technician
				END
			AND JobStatusType = CASE 
				WHEN @JobStatus = 0
					THEN JobStatusType
				ELSE @JobStatus
				END
			AND Cleared = 0 --only active jobs will be fetched  
			AND (
				tblSalesPersons.bitInactive IS NULL
				OR tblSalesPersons.bitInactive = 0
				) --only active technicians will be fetched  and  null also
	END
	ELSE
	BEGIN
		SELECT tpd.strInvDocID AS ProcessDocID
			,tpd.ServiceableItemCode
			,tblInvoiceDoc.dteJournalDate AS DocumentDate
			,ts.ServiceableItemDescription
			,ts.ServiceableItemTypeId
			,tpd.*
		FROM tblWSInvoiceDoc AS tpd
		LEFT OUTER JOIN tblWSServiceableItem AS ts ON ts.ServiceableItemCode = tpd.ServiceableItemCode
		INNER JOIN tblInvoiceDoc ON tpd.strInvDocID = tblInvoiceDoc.strInvDocID
		LEFT OUTER JOIN tblSalesPersons ON tpd.Technician = tblSalesPersons.strSalesName
		WHERE Technician = CASE 
				WHEN @Technician = 'ALL'
					THEN Technician
				ELSE @Technician
				END
			AND JobStatusType = CASE 
				WHEN @JobStatus = 0
					THEN JobStatusType
				ELSE @JobStatus
				END
			--AND Cleared = 0                     --only active jobs will be fetched  
			AND (
				tblSalesPersons.bitInactive IS NULL
				OR tblSalesPersons.bitInactive = 0
				) --only active technicians will be fetched   and  null also
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetWorkshopSchedulerData]    Script Date: 12-04-2022 15:37:00 ******/
CREATE PROCEDURE [dbo].[GetTechnicianJobListData] (
	 @Technician NVARCHAR(60)
	,@JobStatus INT
	,@SearchText As NVARCHAR(max) = ''
	,@PageIndex As int = 1
	,@PageSize As int = 25
	)
AS
BEGIN
	IF @JobStatus <> 3 -- 3 = Closed Job. It will be fetch from tblWSInvoiceDoc table  
	BEGIN
	 WITH Paged AS
	(
		SELECT tpd.ProcessDocID
			,tpd.ServiceableItemCode
			,tpd.DocumentDate
			,ts.ServiceableItemDescription
			,ts.ServiceableItemTypeId
			,tpd.OwnerCode
			,tpd.CustomerCode
			,tpd.CustomerDetails
			,tpd.ReferenceNumber
			,tpd.CustomerCode + '-' + tc.strCustDesc as CustDesc
			,tpd.OwnerCode + '-' + tow.OwnerDesc as OwnerDesc
			,ROW_NUMBER() OVER(ORDER BY tpd.ProcessDocID) AS RowNumber
		FROM tblWSProcessDoc AS tpd
		LEFT OUTER JOIN tblWSServiceableItem AS ts ON ts.ServiceableItemCode = tpd.ServiceableItemCode
		LEFT OUTER JOIN tblSalesPersons ON tpd.Technician = tblSalesPersons.strSalesName
		LEFT OUTER JOIN tblCustomers tc on tpd.CustomerCode = tc.strCustName
		LEFT OUTER JOIN tblOwners tow on tpd.OwnerCode = tow.OwnerName
		WHERE Technician = CASE 
				WHEN @Technician = 'ALL'
					THEN Technician
				ELSE @Technician
				END
			AND JobStatusType = CASE 
				WHEN @JobStatus = 0
					THEN JobStatusType
				ELSE @JobStatus
				END
			AND Cleared = 0 --only active jobs will be fetched  
			AND (
				tblSalesPersons.bitInactive IS NULL
				OR tblSalesPersons.bitInactive = 0
				) --only active technicians will be fetched  and  null also
			AND (@SearchText IS NULL OR @SearchText = '' OR ProcessDocID like '%'+@SearchText+'%' OR 
				ServiceableItemDescription like '%'+@SearchText+'%' )
				)
		SELECT * FROM Paged	WHERE RowNumber BETWEEN (@PageIndex - 1) * @PageSize + 1 AND @PageIndex * @PageSize;
	END
	ELSE
	BEGIN
	 WITH Paged AS
	(
		SELECT tpd.strInvDocID AS ProcessDocID
			,tpd.ServiceableItemCode
			,tblInvoiceDoc.dteJournalDate AS DocumentDate
			,ts.ServiceableItemDescription
			,ts.ServiceableItemTypeId
			,tpd.OwnerCode
			,tpd.CustomerCode
			,tpd.CustomerDetails	
			,tpd.CustomerCode + '-' + tc.strCustDesc as CustDesc
			,tpd.OwnerCode + '-' + tow.OwnerDesc as OwnerDesc
			,ROW_NUMBER() OVER(ORDER BY tpd.ProcessDocID) AS RowNumber
		FROM tblWSInvoiceDoc AS tpd
		LEFT OUTER JOIN tblWSServiceableItem AS ts ON ts.ServiceableItemCode = tpd.ServiceableItemCode
		INNER JOIN tblInvoiceDoc ON tpd.strInvDocID = tblInvoiceDoc.strInvDocID
		LEFT OUTER JOIN tblSalesPersons ON tpd.Technician = tblSalesPersons.strSalesName
		LEFT OUTER JOIN tblCustomers tc on tpd.CustomerCode = tc.strCustName
		LEFT OUTER JOIN tblOwners tow on tpd.OwnerCode = tow.OwnerName
		WHERE Technician = CASE 
				WHEN @Technician = 'ALL'
					THEN Technician
				ELSE @Technician
				END
			AND JobStatusType = CASE 
				WHEN @JobStatus = 0
					THEN JobStatusType
				ELSE @JobStatus
				END
			--AND Cleared = 0                     --only active jobs will be fetched  
			AND (
				tblSalesPersons.bitInactive IS NULL
				OR tblSalesPersons.bitInactive = 0
				) --only active technicians will be fetched   and  null also
			AND (@SearchText IS NULL OR @SearchText = '' OR ProcessDocID like '%'+@SearchText+'%' OR 
				ServiceableItemDescription like '%'+@SearchText+'%' )
				)
		SELECT * FROM Paged	WHERE RowNumber BETWEEN (@PageIndex - 1) * @PageSize + 1 AND @PageIndex * @PageSize;
	END
END
GO

CREATE PROCEDURE [dbo].[CheckContainerShipmentCreatedForThisShipment]
(
	@DocumentNumber AS VARCHAR(50)
)
AS
BEGIN
	SELECT COUNT(strShpDocID) FROM tblContainersDT WHERE strShpDocID = @DocumentNumber
END
GO

CREATE PROCEDURE [dbo].[InsertLocationItems] 
@SQLoc AS NVARCHAR(Max)
AS
BEGIN
	INSERT INTO tblInvExt (
		strPartNumber
		,strLocName
		,decAvail
		,decAlloc
		,decOnHand
		,decValue
		,decOnOrder
		,decOpenQty
		,decOpenValue
		,intReorderPoint
		,strAcctSet
		,strBinLoc
		,decMaxLevel
		,decMinimumLevel
		,bitInactive
		,bitDefault
		,decManuf
		,dteRowUpdated
		)
	SELECT A.strPartNumber
		,@SQLoc AS strLocName
		,0 AS decAvail
		,0 AS decAlloc
		,0 AS decOnHand
		,0 AS decValue
		,0 AS decOnOrder
		,0 AS decOpenQty
		,0 AS decOpenValue
		,0 AS intReorderPoint
		,(
			SELECT TOP 1 t2.strAcctSet
			FROM tblinvLoc t1
			JOIN tblinvext t2 ON t1.strLocName = t2.strLocName
				AND t1.bitDefault = 1
			WHERE t2.strPartNumber = A.strPartNumber
			) AS strAcctSet
		,'' AS strBinLoc
		,0 AS decMaxLevel
		,0 AS decMinimumLevel
		,0 AS bitInactive
		,0 AS bitDefault
		,0 AS decManuf
		,GetDate() AS dteRowUpdated
	FROM tblInv A
	WHERE A.intType <> 5
		AND A.bitOtherCmp = 0
END
GO

CREATE PROCEDURE [dbo].[prSaveInvExtBin_ByItemByLocationNew] 
	@SQstrLocName nvarchar(50)
AS
BEGIN
	
		INSERT INTO tblInvExtBin (strPartNumber, strLocName, lngBinId, decAvail, decAlloc, decOnHand, decMaximumQty, bitAllowed, bitDefault)
		SELECT A.strPartNumber AS strPartNumber,
		@SQstrLocName AS strLocName, 
		ISNULL((select top(1) BIN.lngId From tblInvLocBin BIN where BIN.strLocName = @SQstrLocName),0) AS lngBinId
		, 0 AS decAvail
		, 0 AS decAlloc
		, 0 AS decOnHand
		, 0 AS decMaximumQty
		,1 AS bitAllowed
		,1  AS bitDefault 
		FROM tblInv A
		Where  A.intType = 1 AND A.bitOtherCmp = 0 AND A.bitInactive=0 AND 
		A.strPartNumber Not in
		(Select B.strPartNumber from tblInvExtBin B Where strLocName = @SQstrLocName)

END
GO

CREATE PROCEDURE [dbo].[GetPaymentDocuments]   
 @docuNumber nvarchar(Max) = 0  
AS  
BEGIN  
   
    SELECT   
        P.dteJournalDate as [Date],  
        P.strSource as DocNumber,  
        P.strCustName as Account,  
        (case WHEN blnForeignBank = 0 then  P.decAmount else P.decBankAmountF end) as Amount,  
        P.strComment as Comment,
		P.lngCustPayID AS PayId,
		P.strBankCurrency AS Currency
     FROM tblCustPay  P 
     WHERE P.lngCustPayID in  
	 ( Select DT.lngCustPayID from tblCustTrans T inner join tblCustTransDT DT ON T.lngCustTrID = DT.lngCustTrID
		 Where (T.strInvDocID=@docuNumber  and DT.lngCustPayID IS NOT NULL ) OR (T.strJEDocID =@docuNumber and DT.lngCustPayID IS NOT NULL) OR (T.strOrdDocID =@docuNumber and DT.lngCustPayID IS NOT NULL)
		 )
  
     UNION ALL  
  
     SELECT   
        P.dteJournalDate as [Date],  
        P.strSource as DocNumber,  
        P.strVendName as Account,  
        P.decAmount as Amount,  
        P.strComment as Comment,
		P.lngVendPayID AS PayId,
		P.strBankCurrency AS Currency
     FROM tblVendPay  P
     WHERE P.lngVendPayID  IN 
	 (
	 Select DT.lngVendPayID from tblVendTrans T inner join tblVendTransDT DT ON T.lngVendTrID = DT.lngVendTrID
		 Where (T.strInvPDocID=@docuNumber and DT.lngVendPayID IS NOT NULL) OR (T.strJEDocID=@docuNumber and DT.lngVendPayID IS NOT NULL)
	 )
  
END
GO

/****** Object:  StoredProcedure [dbo].[ProcessWSWIPMobile]    Script Date: 19-05-2022 16:19:00 ******/
CREATE PROCEDURE [dbo].[ProcessWSWIPMobile] (
	@tblInventoryRequisition WSWIPCompDTTableType Readonly
	,@JBDocID NVARCHAR(100)
	,@DocNumber NVARCHAR(100)
	,@WIPReturnEnum INT
	,@WIPPostedEnum INT
	,@StatusInEnum INT
	,@StatusOutEnum INT
	,@tblSerialUserData CommonTableType Readonly
	,@SerialNumberTypeEnum INT
	,@LotControlTypeEnum INT
	,@CurrentUser NVARCHAR(40)
	,@UpdatedDate DATETIME
	,@SystemDate DATETIME
	,@JournalDate DATETIME
	,@JobCloseType INT
	,@JourID BIGINT
	,@JobStatus INT
	,@ListInvBinExtRowid InvBinExtTableType ReadOnly
	,@IsAdjustWithoutChangeInQty BIT
	)
AS
BEGIN
	IF (@IsAdjustWithoutChangeInQty = 0)
	BEGIN
		BEGIN TRY 
		DECLARE @Counter AS INT
		DECLARE @InvReqLineNo AS INT
		DECLARE @Type AS INT
		DECLARE @WIPCompDTID AS INT

		SET @Counter = 1

		INSERT INTO tblWSWIP (
			WIPDocID
			,JBDocID
			,SystemDate
			,JournalDate
			,UserName
			,[Type]
			,JourID
			)
		VALUES (
			@DocNumber
			,@JBDocID
			,@SystemDate
			,@JournalDate
			,@CurrentUser
			,@JobCloseType
			,@JourID
			)
	    
		--Insert WIP Component Inventory Records
		SELECT * INTO #tblInventoryRequisition FROM @tblInventoryRequisition

		SELECT ROW_NUMBER() OVER (ORDER BY CONVERT(INT, ISNULL([LineNo], ''))) AS RowNumber,*
		INTO #tempInvReqEntityTable
		FROM #tblInventoryRequisition --COL02 : Line No

		--Move from bottom 
		SELECT * INTO #tblData FROM @tblSerialUserData

		SELECT ROW_NUMBER() OVER (ORDER BY CONVERT(NVARCHAR(100), ISNULL(COL01, ''))) AS UserDataRow# ,*
		INTO #tempSerialUserData
		FROM #tblData --COL01 = SerialNumber

		SELECT * INTO #SerialDataFORCounter FROM #tempSerialUserData 

		DECLARE @IsNewAddedRecord AS BIT

		WHILE (@Counter <= (SELECT Count(*)FROM #tempInvReqEntityTable))
		BEGIN
			SELECT @IsNewAddedRecord = CONVERT(BIT, ISNULL(IsNewAddedRecord, ''))
			FROM #tempInvReqEntityTable
			WHERE RowNumber = @Counter

			IF (@IsNewAddedRecord = 1) --COL22 = IsNewAddedRecord
			BEGIN
				--Fetch Next Line Number
				SELECT @InvReqLineNo = ISNULL(MAX(intLineNo), 0) + 1
				FROM tblManJobCompInv
				WHERE strJBDocID = @JBDocID

				--Fetch PP Unit
				DECLARE @ppUnit AS MONEY

				SET @ppUnit = 0

				SELECT @ppUnit = CASE tblInvExt.decOnHand
						WHEN 0
							THEN ROUND((tblInv.decLastPPUnit / tblInv.decBuyToStock), 4)
						ELSE ROUND((tblInvExt.decValue / tblInvExt.decOnHand), 4)
						END
				FROM tblInv
				INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
					AND tblInvExt.strLocName = (
						SELECT CONVERT(NVARCHAR(100), ISNULL([Location], ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) --COL04 = Location
				WHERE (
						tblInv.strPartNumber = (
							SELECT CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
							FROM #tempInvReqEntityTable
							WHERE RowNumber = @Counter
							) --COL03 = PartNo
						OR tblInv.strBarCode = (
							SELECT CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
							FROM #tempInvReqEntityTable
							WHERE RowNumber = @Counter
							) --COL03 = PartNo
						OR tblInv.strBarCode2 = (
							SELECT CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
							FROM #tempInvReqEntityTable
							WHERE RowNumber = @Counter
							)
						) --COL03 = PartNo
					AND tblInv.intType = 1

				--Insert New Inventory
				INSERT INTO tblWSProcessDocDT (
					ProcessDocID
					,[LineNo]
					,PartNumber
					,Location
					,PartDesc
					,QuotedQty
					,JobQty
					,Unit
					,ItemType
					,TaxCode
					,Currency
					,IsForeign
					,LineDiscPerc
					,LineDiscAmt
					,LineDiscAmtF
					,IsDiscountTax
					,StockQty
					,StockUnit
					,StockQtyRemain
					,PriceEaExc
					,LineTotExc
					,LineTaxAmt
					,PriceEaInc
					,LineTotInc
					,PriceEaExcF
					,LineTotExcF
					,LineTaxAmtF
					,EaIncTaxF
					,TotIncTaxF
					,CreatedDate
					,UpdatedDate
					,CreatedBy
					,UpdatedBy
					,IsDelCost
					,BillingMethod
					,QtyRemaining
					,TaxObj
					,SalesName
					,PartExtendedDesc
					,BuyoutCost
					,ItemWeight
					,VolumetricWeight
					,TransactionFieldID
					)
				VALUES (
					@JBDocID -- ProcessDocID
					,(
						SELECT CONVERT(INT, ISNULL([LineNo], ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) --,[LineNo]
					,(
						SELECT CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) --,PartNumber
					,(
						SELECT CONVERT(NVARCHAR(100), ISNULL([Location], ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) --,Location
					,(
						SELECT strDesc
						FROM tblInv
						WHERE strPartNumber = (
								SELECT CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
								FROM #tempInvReqEntityTable
								WHERE RowNumber = @Counter
								)
						) --,PartDesc
					,0 --,QuotedQty
					,0 --,JobQty
					,(
						SELECT CONVERT(NVARCHAR(30), ISNULL(Unit, ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) --,Unit
					,(
						SELECT CONVERT(NVARCHAR(10), ISNULL(ItemType, ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) --,ItemType
					,'' --,TaxCode
					,'' --,Currency
					,0 --,IsForeign
					,0 --,LineDiscPerc
					,0 --,LineDiscAmt
					,0 --,LineDiscAmtF
					,0 --,IsDiscountTax
					,0 --,StockQty
					,(
						SELECT CONVERT(NVARCHAR(30), ISNULL(Unit, ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) --,StockUnit
					,0 --,StockQtyRemain
					,0 --,PriceEaExc
					,0 --,LineTotExc
					,0 --,LineTaxAmt
					,0 --,PriceEaInc
					,0 --,LineTotInc
					,0 --,PriceEaExcF
					,0 --,LineTotExcF
					,0 --,LineTaxAmtF
					,0 --,EaIncTaxF
					,0 --,TotIncTaxF
					,GETDATE() --,CreatedDate
					,GETDATE() --,UpdatedDate
					,@CurrentUser --,CreatedBy
					,@CurrentUser --,UpdatedBy
					,0 --,IsDelCost
					,0 --,BillingMethod
					,0 --,QtyRemaining
					,NULL --,TaxObj
					,'' --,SalesName
					,'' --,PartExtendedDesc
					,(
						SELECT CONVERT(MONEY, ISNULL(BuyoutCost, 0))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) --,BuyoutCost
					,0 --,ItemWeight
					,0 --,VolumetricWeight
					,(
						SELECT TOP 1 TransactionFieldID
						FROM tblWSProcessDocDT
						WHERE ProcessDocID = @JBDocID
						) --,TransactionFieldID --If this field will be null than data will not fetch in adjust Invoice Job
					)
			END

			IF ((SELECT CONVERT(MONEY, ISNULL(ReturnQty, '')) FROM #tempInvReqEntityTable WHERE RowNumber = @Counter) > 0) --COL12 : Return Qty
				SET @Type = @WIPReturnEnum
			ELSE
				SET @Type = @WIPPostedEnum
				
			INSERT INTO tblWSWIPCompDT (
				WIPDocID
				,[LineNo]
				,PartNumber
				,Location
				,PostedQty
				,PostQty
				,Amount
				,PostedAmount
				,PostAmount
				,[Type]
				,ReturnQty
				)
			VALUES (
				@DocNumber
				,(
					SELECT CONVERT(INT, ISNULL([LineNo], ''))
					FROM #tempInvReqEntityTable
					WHERE RowNumber = @Counter
					) --COL02 = LineNo
				,(
					SELECT CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
					FROM #tempInvReqEntityTable
					WHERE RowNumber = @Counter
					) --COL03 = PartNumber
				,(
					SELECT CONVERT(NVARCHAR(20), ISNULL([Location], ''))
					FROM #tempInvReqEntityTable
					WHERE RowNumber = @Counter
					) --COl04 = Location
				,(
					SELECT CONVERT(MONEY, ISNULL(PostedQty, ''))
					FROM #tempInvReqEntityTable
					WHERE RowNumber = @Counter
					) --COl05 = PostedQty
				,(
					SELECT CONVERT(MONEY, ISNULL(PostQty, ''))
					FROM #tempInvReqEntityTable
					WHERE RowNumber = @Counter
					) --COl06 = PostQty
				,(
					SELECT CONVERT(MONEY, ISNULL(Amount, ''))
					FROM #tempInvReqEntityTable
					WHERE RowNumber = @Counter
					) --COl07 = Amount
				,(
					SELECT CONVERT(MONEY, ISNULL(PostedAmount, ''))
					FROM #tempInvReqEntityTable
					WHERE RowNumber = @Counter
					) --COl08 = PostedAmount
				,(
					SELECT CONVERT(MONEY, ISNULL(PostAmount, ''))
					FROM #tempInvReqEntityTable
					WHERE RowNumber = @Counter
					) --COl09 = PostAmount
				,@Type
				,(
					SELECT CONVERT(MONEY, ISNULL(ReturnQty, ''))
					FROM #tempInvReqEntityTable
					WHERE RowNumber = @Counter
					) --COl12 = RetuenQty
				)

			IF (
					(
						SELECT CONVERT(MONEY, ISNULL(PostQty, ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) > 0
					OR (
						SELECT CONVERT(MONEY, ISNULL(ReturnQty, ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) > 0
					) -- COL06 = PostQty , COL12 = Return Qty
			BEGIN
				--Start MultipleBin Changes 
				--Insert Bin Details 
				DECLARE @rowId AS INT

				SET @rowId = (
						SELECT CONVERT(INT, ISNULL(RowId, ''))
						FROM #tempInvReqEntityTable
						WHERE RowNumber = @Counter
						) --COL32 = RowId

				IF OBJECT_ID('tempdb..#ListInvBinExtRowidTemp') IS NOT NULL
					DROP TABLE #ListInvBinExtRowidTemp

				SELECT ROW_NUMBER() OVER (
						ORDER BY CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
						) AS BinExtRow#
					,*
				INTO #ListInvBinExtRowidTemp
				FROM @ListInvBinExtRowId
				WHERE RowId = @rowId

				IF (
						(
							SELECT Count(*)
							FROM #ListInvBinExtRowidTemp
							) > 0
						)
				BEGIN
					DECLARE @CounterBinExtRowid AS INT

					SET @CounterBinExtRowid = 0

					WHILE (
							@CounterBinExtRowid <= (
								SELECT Count(*)
								FROM #ListInvBinExtRowidTemp
								)
							)
					BEGIN
						IF (
								(
									SELECT IssueQty
									FROM #ListInvBinExtRowidTemp
									WHERE BinExtRow# = @CounterBinExtRowid
									) > 0
								)
						BEGIN
							INSERT INTO [dbo].[tblWSWIPCompInvBin] --Insted of tblManWIPCompInvBin
								(
								WIPDocID
								,[LineNo]
								,BinID
								,Qty
								)
							VALUES (
								@DocNumber
								,(
									SELECT CONVERT(INT, ISNULL([LineNo], ''))
									FROM #tempInvReqEntityTable
									WHERE RowNumber = @Counter
									)
								,-- COL32 RowId , COL02 = Line Number  -- COL32 = @rowId AND
								(
									SELECT BinID
									FROM #ListInvBinExtRowidTemp
									WHERE BinExtRow# = @CounterBinExtRowid
									)
								,(
									SELECT IssueQty
									FROM #ListInvBinExtRowidTemp
									WHERE BinExtRow# = @CounterBinExtRowid
									)
								)
						END

						SET @CounterBinExtRowid = @CounterBinExtRowid + 1
					END
				END
				
				--End MultipleBin Changes 
				--VBCODE : If CBool(flxInventory.Item(i, FlxInventoryGridCols.InventorySerialNumber)) = True Then
				IF (
						(
							SELECT CONVERT(BIT, ISNULL(IsSerailType, ''))
							FROM #tempInvReqEntityTable
							WHERE RowNumber = @Counter
							) = 1
						) --COL16 = IsSerialType
				BEGIN
					SELECT @WIPCompDTID = MAX(ID)
					FROM tblWSWIPCompDT
					WHERE WIPDocID = @DocNumber
						AND [LineNo] = (
							SELECT CONVERT(INT, ISNULL([LineNo], ''))
							FROM #tempInvReqEntityTable
							WHERE RowNumber = @Counter
							) --COL02 = line no

					
					IF ((SELECT UserData FROM #tempInvReqEntityTable WHERE RowNumber = @Counter) IS NOT NULL) --COL20 = UserData
					BEGIN
						DECLARE @Status AS INT
						SET @Status = 0
						IF ((SELECT CONVERT(MONEY, ISNULL(ReturnQty, '')) FROM #tempInvReqEntityTable WHERE RowNumber = @Counter) > 0)
							SET @Status = @StatusInEnum
						ELSE
							SET @Status = @StatusOutEnum

						DECLARE @UserDataCounter AS INT
						SET @UserDataCounter = 1

						--INSERT INTO #SerialDataFORCounter
						--SELECT *
						--FROM #tempSerialUserData
						SELECT TOP 1 @UserDataCounter = UserDataRow#
						FROM #SerialDataFORCounter
						WHERE COL24 = (
								SELECT CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
								FROM #tempInvReqEntityTable
								WHERE RowNumber = @Counter
								)

						--WHILE(@UserDataCounter <= (SELECT Max(UserDataRow#) FROM #tempSerialUserData WHERE COL24 = (SELECT CONVERT(NVARCHAR(100),ISNULL(COL03,'')) FROM #tempInvReqEntityTable WHERE RowNumber = @Counter)))
						WHILE (
								(
									SELECT Count(*)
									FROM #SerialDataFORCounter
									WHERE COL24 = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
											FROM #tempInvReqEntityTable
											WHERE RowNumber = @Counter
											)
										AND COL10 = @Counter
									) > 0
								)
						BEGIN
							--INSERT INTO tblManWIPCompInvSerial
							INSERT INTO tblWSWIPCompSerial (
								WIPDocID
								,WIPID
								,[LineNo]
								,SerialNumber
								,Qty
								,Unit
								,IsExpiryDate
								,ExpiryDate
								,SerialLotType
								,BinId
								)
							VALUES (
								@DocNumber
								,@WIPCompDTID
								,(
									SELECT CONVERT(INT, ISNULL([LineNo], ''))
									FROM #tempInvReqEntityTable
									WHERE RowNumber = @Counter
									)
								,--COL02 = LineNo
								(
									SELECT CONVERT(NVARCHAR(200), ISNULL(COL01, ''))
									FROM #tempSerialUserData
									WHERE COL24 = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
											FROM #tempInvReqEntityTable
											WHERE RowNumber = @Counter
											)
										AND UserDataRow# = @UserDataCounter
									)
								,--COL01 =SerialNumber
								(
									SELECT CONVERT(MONEY, ISNULL(COL03, ''))
									FROM #tempSerialUserData
									WHERE UserDataRow# = @UserDataCounter
									)
								,--COL03 =Quantity,
								(
									SELECT CONVERT(NVARCHAR(30), ISNULL(COL04, ''))
									FROM #tempSerialUserData
									WHERE UserDataRow# = @UserDataCounter
									)
								,--COL04 =Unit,
								(
									SELECT CONVERT(BIT, ISNULL(COL05, ''))
									FROM #tempSerialUserData
									WHERE UserDataRow# = @UserDataCounter
									)
								,--COL05 =IsExpiryDateExists,
								CASE (
										SELECT CONVERT(BIT, ISNULL(COL05, ''))
										FROM #tempSerialUserData
										WHERE UserDataRow# = @UserDataCounter
										)
									WHEN 1
										THEN (
												SELECT CONVERT(DATETIME, ISNULL(COL06, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												)
									ELSE NULL
									END
								,--COL06 =ExpiryDate,
								(
									SELECT CONVERT(INT, ISNULL(COL09, ''))
									FROM #tempSerialUserData
									WHERE UserDataRow# = @UserDataCounter
									)
								,--COL09 =SerialLotType,
								(
									SELECT CONVERT(BIGINT, ISNULL(COL31, ''))
									FROM #tempSerialUserData
									WHERE UserDataRow# = @UserDataCounter
									) --COL31 =BinId,
								)

							IF (
									(
										SELECT CONVERT(NVARCHAR(100), ISNULL(COL07, ''))
										FROM #tempSerialUserData
										WHERE UserDataRow# = @UserDataCounter
										) = ''
									) --COL07 = Last Doc
							BEGIN
								IF (
										(
											SELECT CONVERT(INT, ISNULL(COL09, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											) = @SerialNumberTypeEnum
										) --COL09 = SerialLotType
								BEGIN
									DECLARE @StatusQuery INT
									DECLARE @LocNameQuery NVARCHAR(100)

									SELECT intStatus
										,strLocName
									FROM tblInvSerialExt
									WHERE strPartNumber = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
											FROM #tempInvReqEntityTable
											WHERE RowNumber = @Counter
											)
										AND strSerialNumber = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(COL01, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											) --COL03 = PartNumber, COL01 = serialNumber
										AND lngBinID = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(COL31, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											) --COL31 = BinId

									IF (
											@Status = @StatusQuery
											OR (
												SELECT CONVERT(NVARCHAR(100), ISNULL([Location], ''))
												FROM #tempInvReqEntityTable
												WHERE RowNumber = @Counter
												) <> @LocNameQuery
											)
									BEGIN
										--						Throw New InvalidUserOperationException('Cant Adjust Serial Items that Contain Subsequent Movement -')
										PRINT 'Exception'
									END
								END

								DECLARE @SerialLotQty AS MONEY

								SET @SerialLotQty = 0

								IF (@Status = @StatusOutEnum)
								BEGIN
									IF (
											(
												SELECT CONVERT(INT, ISNULL(COL09, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												) = @LotControlTypeEnum
											) --COL09 = SerialLotType
										SET @SerialLotQty = (
												SELECT CONVERT(MONEY, ISNULL(COL03, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												) * (- 1) --COL03 = Qty
									ELSE
										SET @SerialLotQty = 0 --(SELECT CONVERT(MONEY,ISNULL(COL03,'')) FROM #tempSerialUserData WHERE UserDataRow# = @UserDataCounter)  --COL03 = Qty
								END
								ELSE
								BEGIN
									SET @SerialLotQty = (
											SELECT CONVERT(MONEY, ISNULL(COL03, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											) --COL03 = Qty
								END

								INSERT INTO tblSerialNumberTracking (
									strPartNumber
									,strSerialNumber
									,strUserName
									,dteUpdatedDate
									,intType
									,strDocID
									,intLineNo
									,decQty
									,strLocation
									,intStatus
									,bitExpiryDate
									,dteExpiryDate
									,lngBinID
									)
								VALUES (
									(
										SELECT CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
										FROM #tempInvReqEntityTable
										WHERE RowNumber = @Counter
										)
									,--COL03 = Part Number
									(
										SELECT CONVERT(NVARCHAR(200), ISNULL(COL01, ''))
										FROM #tempSerialUserData
										WHERE UserDataRow# = @UserDataCounter
										)
									,--COL01 = Serial number
									@CurrentUser
									,@UpdatedDate
									,13
									,--TODO:Create new PL_SerialNumberTypes for Inventory Issue workshop
									@DocNumber
									,(
										SELECT CONVERT(INT, ISNULL([LineNo], ''))
										FROM #tempInvReqEntityTable
										WHERE RowNumber = @Counter
										)
									,--COL02 = line number
									(
										SELECT CONVERT(MONEY, ISNULL(COL03, ''))
										FROM #tempSerialUserData
										WHERE UserDataRow# = @UserDataCounter
										)
									,--COL03 = qty
									(
										SELECT CONVERT(NVARCHAR(20), ISNULL([Location], ''))
										FROM #tempInvReqEntityTable
										WHERE RowNumber = @Counter
										)
									,--COL04 = Location,
									@Status
									,(
										SELECT CONVERT(BIT, ISNULL(COL05, ''))
										FROM #tempSerialUserData
										WHERE UserDataRow# = @UserDataCounter
										)
									,--COL05 = IsExpiryDateExists
									CASE (
											SELECT CONVERT(BIT, ISNULL(COL05, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											)
										WHEN 1
											THEN (
													SELECT CONVERT(DATETIME, ISNULL(COL06, ''))
													FROM #tempSerialUserData
													WHERE UserDataRow# = @UserDataCounter
													)
										ELSE NULL
										END
									,--COL06 =ExpiryDate,
									(
										SELECT CONVERT(BIGINT, ISNULL(COL31, ''))
										FROM #tempSerialUserData
										WHERE UserDataRow# = @UserDataCounter
										) --COL31 = BinId
									)

								IF (
										(
											SELECT CONVERT(INT, ISNULL(COL09, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											) = @LotControlTypeEnum
										) --COL09 = SerialLotType
								BEGIN
									DECLARE @ResultCount AS INT

									SET @ResultCount = 0

									SELECT @ResultCount = COUNT(strLotNumber)
									FROM tblInvLotExt
									WHERE strPartNumber = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
											FROM #tempInvReqEntityTable
											WHERE RowNumber = @Counter
											)
										AND strLotNumber = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(COL01, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											)
										AND strLocName = (
											SELECT CONVERT(NVARCHAR(100), ISNULL([Location], ''))
											FROM #tempInvReqEntityTable
											WHERE RowNumber = @Counter
											) --COL03 = PartNo,COL01=Serial Number, COL04= Location
										AND lngBinID = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(COL31, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											) -- COL31 = BinId

									IF (@ResultCount > 0)
										UPDATE tblInvLotExt
										SET decQty = decQty + @SerialLotQty
											,dteUpdatedDate = @UpdatedDate
										WHERE strPartNumber = (
												SELECT CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
												FROM #tempInvReqEntityTable
												WHERE RowNumber = @Counter
												)
											AND strLotNumber = (
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL01, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												)
											AND strLocName = (
												SELECT CONVERT(NVARCHAR(100), ISNULL([Location], ''))
												FROM #tempInvReqEntityTable
												WHERE RowNumber = @Counter
												) --COL03=PartNumber,COL01=SerialNumber,COL04=Location
											AND lngBinID = (
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL31, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												) --COL31 = BinId 
									ELSE
										INSERT INTO tblInvLotExt (
											strPartNumber
											,strLotNumber
											,strLocName
											,decQty
											,bitExpiryDate
											,dteExpiryDate
											,dteUpdatedDate
											,lngBinID
											)
										VALUES (
											(
												SELECT CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
												FROM #tempInvReqEntityTable
												WHERE RowNumber = @Counter
												)
											,--COL03 = PartNo
											(
												SELECT CONVERT(NVARCHAR(200), ISNULL(COL01, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												)
											,--COL01=Serial Number
											(
												SELECT CONVERT(NVARCHAR(20), ISNULL([Location], ''))
												FROM #tempInvReqEntityTable
												WHERE RowNumber = @Counter
												)
											,--COL04= Location
											@SerialLotQty
											,(
												SELECT CONVERT(BIT, ISNULL(COL05, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												)
											,--COL05=IsExpiryDateExists
											CASE (
													SELECT CONVERT(BIT, ISNULL(COL05, ''))
													FROM #tempSerialUserData
													WHERE UserDataRow# = @UserDataCounter
													)
												WHEN 1
													THEN (
															SELECT CONVERT(DATETIME, ISNULL(COL06, ''))
															FROM #tempSerialUserData
															WHERE UserDataRow# = @UserDataCounter
															)
												ELSE NULL
												END
											,--COL06 =ExpiryDate,,
											@UpdatedDate
											,(
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL31, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												) --COL31 = BinId 
											)
								END
								ELSE
								BEGIN
									SET @ResultCount = 0

									SELECT @ResultCount = COUNT(strSerialNumber)
									FROM tblInvSerialExt
									WHERE strPartNumber = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
											FROM #tempInvReqEntityTable
											WHERE RowNumber = @Counter
											) --COL03 = PartNo
										AND strSerialNumber = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(COL01, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											) --COL01=Serial
										AND lngBinID = (
											SELECT CONVERT(NVARCHAR(100), ISNULL(COL31, ''))
											FROM #tempSerialUserData
											WHERE UserDataRow# = @UserDataCounter
											) --COL31 = BinId 

									IF (@ResultCount > 0)
										UPDATE tblInvSerialExt
										SET strLocName = (
												SELECT CONVERT(NVARCHAR(100), ISNULL([Location], ''))
												FROM #tempInvReqEntityTable
												WHERE RowNumber = @Counter
												)
											,--COL04 = Location
											decQty = @SerialLotQty
											,intStatus = @Status
											,strDocID = @DocNumber
											,dteUpdatedDate = @UpdatedDate
										WHERE strPartNumber = (
												SELECT CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
												FROM #tempInvReqEntityTable
												WHERE RowNumber = @Counter
												) --COL03 = part Number
											AND strSerialNumber = (
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL01, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												) --COL01=Serial Number
											AND lngBinID = (
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL31, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												) --COL31 = BinId 
									ELSE
										INSERT INTO tblInvSerialExt (
											strPartNumber
											,strSerialNumber
											,strLocName
											,decQty
											,intStatus
											,strDocID
											,dteUpdatedDate
											,bitDimensionExist
											,strDimension
											,lngBinID
											)
										VALUES (
											(
												SELECT CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
												FROM #tempInvReqEntityTable
												WHERE RowNumber = @Counter
												)
											,--COL03 = PartNo,
											(
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL01, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												)
											,--COL01=Serial Number,
											(
												SELECT CONVERT(NVARCHAR(20), ISNULL([Location], ''))
												FROM #tempInvReqEntityTable
												WHERE RowNumber = @Counter
												)
											,--COL04= Location,
											@SerialLotQty
											,@Status
											,@DocNumber
											,@UpdatedDate
											,(
												SELECT COL11
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												)
											,CASE CONVERT(BIT, (
														SELECT COL11
														FROM #tempSerialUserData
														WHERE UserDataRow# = @UserDataCounter
														))
												WHEN 1
													THEN (
															SELECT COL12
															FROM #tempSerialUserData
															WHERE UserDataRow# = @UserDataCounter
															)
												ELSE ''
												END
											,(
												SELECT CONVERT(NVARCHAR(100), ISNULL(COL31, ''))
												FROM #tempSerialUserData
												WHERE UserDataRow# = @UserDataCounter
												) --COL31 = BinId 
											)
								END
							END --End of Last Doc condition

							DELETE
							FROM #SerialDataFORCounter
							WHERE UserDataRow# = @UserDataCounter

							SELECT TOP 1 @UserDataCounter = UserDataRow#
							FROM #SerialDataFORCounter
							WHERE COL24 = (
									SELECT CONVERT(NVARCHAR(100), ISNULL(PartNumber, ''))
									FROM #tempInvReqEntityTable
									WHERE RowNumber = @Counter
									)
								--SET @UserDataCounter = @UserDataCounter + 1
						END
					END
				END
			END

			SET @Counter = @Counter + 1
		END

		-- Update buyout cost //Workshop:IR:Buyout on 18042018
		UPDATE tblWSProcessDocDT SET BuyoutCost = '0.00' 
		FROM @tblInventoryRequisition t
		WHERE tblWSProcessDocDT.PartNumber = t.PartNumber
			AND tblWSProcessDocDT.[LineNo] = t.[LineNo]
			AND tblWSProcessDocDT.ProcessDocID = @JBDocID

		UPDATE tblLastIDs SET lngIRNumber += 1
	END TRY 
	BEGIN CATCH  
		SELECT ERROR_MESSAGE() AS ErrorMessage;
	END CATCH 
	END

	--Update Status AND Update our IDs table 
	UPDATE tblWSProcessDoc 	SET JobStatusType = @JobStatus	WHERE ProcessDocID = @JBDocID
END
GO

/****** Object:  StoredProcedure [dbo].[GetJobHistoryReportData]    Script Date: 26-05-2022 16:19:00 ******/
CREATE PROCEDURE [dbo].[GetJobHistoryReportData] (
	@CustomerList NVARCHAR(max)
	,@ServiceableItemList NVARCHAR(max)
	,@StartDate DATETIME
	,@FinishDate DATETIME
	,@IsCheckedSummary BIT
	,@IsFilterbyOwner BIT
	)
AS
BEGIN
	IF @IsCheckedSummary = 1
	BEGIN
			;

		WITH JobHistoryCTE (
			ServiceableItemCode
			,ServiceableItemDescription
			,ServiceableItemName
			,JournalDate
			,JobNumber
			,JobTemplateCode
			,Reference
			,AddInfo
			,CustomerCode
			,CustomerDesc
			,OwnerName
			,OwnerDesc
			,Total
			)
		AS (
			SELECT tblWSServiceableItem.ServiceableItemCode AS ServiceableItemCode
				,ServiceableItemDescription AS ServiceableItemDescription
				,tblWSServiceableItem.ServiceableItemName AS ServiceableItemName
				,dteJournalDate AS JournalDate
				,tblInvoiceDoc.strInvDocID AS JobNumber
				,tblWSJobTemplate.JobTemplateCode AS JobTemplateCode
				,strReference AS Reference
				,strAddInfo AS AddInfo
				,tblCustomers.strCustName AS CustomerCode
				,tblCustomers.strCustDesc AS CustomerDesc
				,OwnerName AS OwnerName
				,OwnerDesc AS OwnerDesc
				,decTotal AS Total
			FROM tblWSInvoiceDoc
			INNER JOIN tblInvoiceDoc ON tblInvoiceDoc.strInvDocID = tblWSInvoiceDoc.strInvDocID
			LEFT JOIN tblWSServiceableItem ON tblWSServiceableItem.ServiceableItemCode = tblWSInvoiceDoc.ServiceableItemCode
			INNER JOIN tblCustomers ON tblWSInvoiceDoc.CustomerCode = tblCustomers.strCustName
			LEFT JOIN tblOwners ON tblOwners.OwnerName = tblWSInvoiceDoc.OwnerCode
			LEFT JOIN tblWSJobTemplate ON tblWSJobTemplate.JobTemplateID = tblWSInvoiceDoc.JobTemplateID
			WHERE (
					CONVERT(DATE, tblInvoiceDoc.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
						AND CONVERT(DATE, @FinishDate)
					)
				AND (
					tblWSServiceableItem.ServiceableItemCode IN (
						(
							SELECT [VALUE]
							FROM fnSplitStringAsTable(@ServiceableItemList, ',')
							)
						)
					OR ISnull(@ServiceableItemList, '') = ''
					)
				AND (
					(
						CASE 
							WHEN (@IsFilterbyOwner = 1)
								THEN (tblOwners.OwnerName)
							ELSE tblCustomers.strCustName
							END
						) IN (
						(
							SELECT [VALUE]
							FROM fnSplitStringAsTable(@CustomerList, ',')
							)
						)
					OR ISnull(@CustomerList, '') = ''
					)
			
			UNION ALL
			
			SELECT tblWSServiceableItem.ServiceableItemCode AS ServiceableItemCode
				,ServiceableItemDescription AS ServiceableItemDescription
				,tblWSServiceableItem.ServiceableItemName AS ServiceableItemName
				,DocumentDate AS JournalDate
				,tblWSProcessDoc.ProcessDocID AS JobNumber
				,tblWSJobTemplate.JobTemplateCode AS JobTemplateCode
				,ReferenceNumber AS Reference
				,tblWSProcessDoc.AddInfo AS AddInfo
				,tblCustomers.strCustName AS CustomerCode
				,tblCustomers.strCustDesc AS CustomerDesc
				,OwnerName AS OwnerName
				,OwnerDesc AS OwnerDesc
				,tblWSProcessDoc.Total AS Total
			FROM tblWSProcessDoc
			LEFT JOIN tblWSServiceableItem ON tblWSServiceableItem.ServiceableItemCode = tblWSProcessDoc.ServiceableItemCode
			INNER JOIN tblCustomers ON tblWSProcessDoc.CustomerCode = tblCustomers.strCustName
			LEFT JOIN tblOwners ON tblOwners.OwnerName = tblWSProcessDoc.OwnerCode
			LEFT JOIN tblWSJobTemplate ON tblWSJobTemplate.JobTemplateID = tblWSProcessDoc.JobTemplateID
			WHERE (
					CONVERT(DATE, tblWSProcessDoc.DocumentDate) BETWEEN CONVERT(DATE, @StartDate)
						AND CONVERT(DATE, @FinishDate)
					)
				AND (
					tblWSServiceableItem.ServiceableItemCode IN (
						(
							SELECT [VALUE]
							FROM fnSplitStringAsTable(@ServiceableItemList, ',')
							)
						)
					OR ISnull(@ServiceableItemList, '') = ''
					)
				AND (
					(
						CASE 
							WHEN (@IsFilterbyOwner = 1)
								THEN (tblOwners.OwnerName)
							ELSE tblCustomers.strCustName
							END
						) IN (
						(
							SELECT [VALUE]
							FROM fnSplitStringAsTable(@CustomerList, ',')
							)
						)
					OR ISnull(@CustomerList, '') = ''
					)
			)
		SELECT ServiceableItemCode
			,ServiceableItemDescription
			,ServiceableItemName
			,JournalDate
			,JobNumber
			,JobTemplateCode
			,Reference
			,AddInfo
			,CustomerCode
			,CustomerDesc
			,OwnerName
			,OwnerDesc
			,Total
		FROM JobHistoryCTE
		GROUP BY ServiceableItemCode
			,ServiceableItemDescription
			,ServiceableItemName
			,JournalDate
			,JobNumber
			,JobTemplateCode
			,Reference
			,AddInfo
			,CustomerCode
			,CustomerDesc
			,OwnerName
			,OwnerDesc
			,Total
	END
	ELSE
	BEGIN
		SELECT tblWSServiceableItem.ServiceableItemCode AS ServiceableItemCode
			,ServiceableItemDescription AS ServiceableItemDescription
			,tblWSServiceableItem.ServiceableItemName AS ServiceableItemName
			,dteJournalDate AS JournalDate
			,tblInvoiceDoc.strInvDocID AS JobNumber
			,tblWSJobTemplate.JobTemplateCode AS JobTemplateCode
			,strReference AS Reference
			,strAddInfo AS AddInfo
			,tblCustomers.strCustName AS CustomerCode
			,tblCustomers.strCustDesc AS CustomerDesc
			,OwnerName AS OwnerName
			,OwnerDesc AS OwnerDesc
			,tblInvoiceDocDT.decQty AS Qty
			,tblInvoiceDocDT.strPartNumber AS PartNumber
			,tblInvoiceDocDT.strPartDesc AS PartDesc
			,tblInvoiceDocDT.decPriceEaExc AS AmountExcl
			,tblInvoiceDocDT.decLineTaxAmt AS Tax
			,tblInvoiceDocDT.decPriceEaInc AS AmountIncl			
		FROM tblWSInvoiceDoc
		INNER JOIN tblInvoiceDoc ON tblInvoiceDoc.strInvDocID = tblWSInvoiceDoc.strInvDocID
		INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID
		LEFT JOIN tblWSServiceableItem ON tblWSServiceableItem.ServiceableItemCode = tblWSInvoiceDoc.ServiceableItemCode
		INNER JOIN tblCustomers ON tblWSInvoiceDoc.CustomerCode = tblCustomers.strCustName
		LEFT JOIN tblOwners ON tblOwners.OwnerName = tblWSInvoiceDoc.OwnerCode
		LEFT JOIN tblWSJobTemplate ON tblWSJobTemplate.JobTemplateID = tblWSInvoiceDoc.JobTemplateID
		WHERE (
				CONVERT(DATE, tblInvoiceDoc.dteJournalDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @FinishDate)
				)
			AND (
				tblWSServiceableItem.ServiceableItemCode IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@ServiceableItemList, ',')
						)
					)
				OR ISnull(@ServiceableItemList, '') = ''
				)
			AND (
				(
					CASE 
						WHEN (@IsFilterbyOwner = 1)
							THEN (tblOwners.OwnerName)
						ELSE tblCustomers.strCustName
						END
					) IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@CustomerList, ',')
						)
					)
				OR ISnull(@CustomerList, '') = ''
				)
		
		UNION ALL
		
		SELECT tblWSServiceableItem.ServiceableItemCode AS ServiceableItemCode
			,ServiceableItemDescription AS ServiceableItemDescription
			,tblWSServiceableItem.ServiceableItemName AS ServiceableItemName
			,DocumentDate AS JournalDate
			,tblWSProcessDoc.ProcessDocID AS JobNumber
			,tblWSJobTemplate.JobTemplateCode AS JobTemplateCode
			,ReferenceNumber AS Reference
			,tblWSProcessDoc.AddInfo AS AddInfo
			,tblCustomers.strCustName AS CustomerCode
			,tblCustomers.strCustDesc AS CustomerDesc
			,OwnerName AS OwnerName
			,OwnerDesc AS OwnerDesc
			,CASE DocType WHEN 1 THEN tblWSProcessDocDT.QuotedQty ELSE tblWSProcessDocDT.JobQty END AS Qty
			,tblWSProcessDocDT.PartNumber AS PartNumber
			,tblWSProcessDocDT.PartDesc AS PartDesc
			,tblWSProcessDocDT.PriceEaExc AS AmountExcl
			,tblWSProcessDocDT.LineTaxAmt AS Tax
			,tblWSProcessDocDT.PriceEaInc AS AmountIncl				
		FROM tblWSProcessDoc
		INNER JOIN tblWSProcessDocDT ON tblWSProcessDocDT.ProcessDocID = tblWSProcessDoc.ProcessDocID
		LEFT JOIN tblWSServiceableItem ON tblWSServiceableItem.ServiceableItemCode = tblWSProcessDoc.ServiceableItemCode
		INNER JOIN tblCustomers ON tblWSProcessDoc.CustomerCode = tblCustomers.strCustName
		LEFT JOIN tblOwners ON tblOwners.OwnerName = tblWSProcessDoc.OwnerCode
		LEFT JOIN tblWSJobTemplate ON tblWSJobTemplate.JobTemplateID = tblWSProcessDoc.JobTemplateID
		WHERE (
				CONVERT(DATE, tblWSProcessDoc.DocumentDate) BETWEEN CONVERT(DATE, @StartDate)
					AND CONVERT(DATE, @FinishDate)
				)
			AND (
				tblWSServiceableItem.ServiceableItemCode IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@ServiceableItemList, ',')
						)
					)
				OR ISnull(@ServiceableItemList, '') = ''
				)
			AND (
				(
					CASE 
						WHEN (@IsFilterbyOwner = 1)
							THEN (tblWSProcessDoc.OwnerCode)
						ELSE tblWSProcessDoc.CustomerCode
						END
					) IN (
					(
						SELECT [VALUE]
						FROM fnSplitStringAsTable(@CustomerList, ',')
						)
					)
				OR ISnull(@CustomerList, '') = ''
				)
		ORDER BY tblInvoiceDoc.strInvDocID
	END
END
GO

/****** Object:  StoredProcedure [dbo].[MobileSpBiSalesAnalysis]    Script Date: 27-05-2022 08:40:00 ******/
CREATE PROCEDURE [dbo].[MobileSpBiSalesAnalysis]   
(  
@strDateFilter VARCHAR(100)=NULL,  
@dateFromDate DateTime=NULL,  
@dateToDate DateTime=NULL,  
@strDateFilterCriteria VARCHAR(100)=NULL  
)  
AS  
BEGIN  

BEGIN
	If (EXISTS(Select * from sys.tables where name='Temp_SalesAnalysis'))
	BEGIN
		DROP table Temp_SalesAnalysis
	END
END

Select * into Temp_SalesAnalysis 
from (
SELECT tblInvoiceDoc.strInvDocID AS [Document #]  
 ,tblInvoiceDoc.strReference AS Reference  
 ,tblInvoiceDoc.strUserName AS Agent  
 ,tblInvoiceDoc.strSalesName AS [Sales Rep]  
 ,tblInvoiceDoc.dteJournalDate AS [Transaction Date]  
 ,tblInvoiceDoc.dteRequired AS [Required Date]  
 ,DATENAME(YEAR, tblInvoiceDoc.dteJournalDate) AS Year  
 ,RIGHT('00' + CAST(MONTH(tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, tblInvoiceDoc.dteJournalDate) AS Month  
 ,REPLICATE('0',2-LEN(DATENAME(DAY, tblInvoiceDoc.dteJournalDate))) + DATENAME(DAY, tblInvoiceDoc.dteJournalDate) AS Day  
 ,DATENAME(WEEK, tblInvoiceDoc.dteJournalDate) AS Week  
 ,DATENAME(QUARTER, tblInvoiceDoc.dteJournalDate) AS Quarter  
 ,tblInvoiceDoc.strCustName AS [Customer Code]  
 ,tblCustomers.strCustDesc AS [Customer Name]  
 ,tblCustomers.strCustCategory AS [Customer Category Code] 
 ,tblCustomers.strCustCategory AS [Customer Category]
 ,tblInvoiceDocDT.strPartNumber AS [Item Code]  
 ,tblInvoiceDocDT.strPartDesc AS [Item Description]  
 ,tblInv.strDesc AS [Item Description (Masterfile)]  
 ,tblInvoiceDocDT.strLocation AS [Item Location] 
 ,tblInv.strCategory AS [Item Category]  
 ,tblInvExt.strAcctSet AS [Item Account Set]  
 ,tblInvoiceDocDT.decQty AS Qty  
 ,tblInvoiceDocDT.decLineTotExc AS Revenue  
 ,tblInvoiceDocDT.decCOGS AS Cost  
 ,tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS AS Profit  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2)) AS [GP Margin (%)]  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2)) AS [GP Margin]
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2)) AS [Margin Percentage]  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))AS [GP Markup (%)]  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))AS [GP Markup]
 ,ISNULL(tblInv.bitItemNumConvUsed, 0) AS [Using Item # Convention]  
 ,ISNULL(tblInv.strItemSegment1, N'') AS [Item Segment 1]  
 ,ISNULL(tblInv.strItemSegment2, N'') AS [Item Segment 2]  
 ,ISNULL(tblInv.strItemSegment3, N'') AS [Item Segment 3]  
 ,ISNULL(tblInv.strItemSegment4, N'') AS [Item Segment 4]  
 ,ISNULL(tblInv.strInvNumConv, N'') AS [Number Convention]  
 ,CASE WHEN tblInvoiceDocDT.decQty = 0 THEN 0 ELSE tblInvoiceDocDT.decCOGS / tblInvoiceDocDT.decQty END AS [Unit Cost]  
 ,ISNULL(tblInvoiceDocDT.decStandardCost, 0) AS [Standard Cost]  
 ,ISNULL(tblInvoiceDocDT.decLastPPUnit, 0) AS [Last Received Cost]  
 ,tblInvoiceDoc.strCurrency AS [Currency Code]  
 ,tblInvoiceDoc.decExchange AS [Exchange Rate]  
 ,CASE WHEN (tblInvoiceDoc.bitIsForeign <> 0) THEN tblInvoiceDocDT.decLineTotExc / tblInvoiceDoc.decExchange ELSE 0 END AS [Revenue FC]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS [Is Foreign Trans]  
 ,REPLACE(REPLACE(ISNULL(tblInvoiceDoc.strShipTo,''), CHAR(13), ' '), CHAR(10), '') AS [Ship To]  
 ,tblInvoiceDoc.strAddInfo AS [Additional Info]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decSubTotalF + tblInvoiceDoc.decDiscAmtF END AS [Document Subtotal]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decDiscAmtF END AS [Document Discount]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decVAT ELSE tblInvoiceDoc.decVATF END AS [Document Tax]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS [Document Total]  
 ,tblInvoiceDoc.intDept AS Department  
 ,tblInv.decMass AS [Dimension Mass]  
    ,tblInv.decVolumetricWeight AS [Dimension Volumetric Weight]  
 ,tblInv.strUnitOfMeasure AS [Dimension UOM]  
 ,tblInv.decW AS [Dimension Width]
 ,tblInv.decH AS [Dimension Height]
    ,tblInv.decD AS [Dimension Depth]  
 ,tblInv.decCube AS [Dimension Cube]  
 ,tblInv.decFactor AS [Dimension Factor]  
 ,tblInvoiceDocDT.decLineTaxAmt AS [Line Tax Amount]  
 ,tblInvoiceDocDT.decLineTotExc + tblInvoiceDocDT.decLineTaxAmt AS [Line Total Incl]  
 ,tblInvoiceDocDT.decPriceEaExc AS [Unit Price Excl]   
 ,tblInvoiceDocDT.decPriceEaInc AS [Unit Price Incl]   
 ,tblInvoiceDocDT.decLineDiscPerc AS [Line Disc Perc]   
 ,tblInvoiceDocDT.decLineDiscAmt AS [Line Disc Amount]  
 ,tblInvoiceDocDT.decLineDiscAmtF AS [Line Disc Amount Foreign]  
 ,tblInvoiceDocDT.decLineTotExc AS [Line Total Excl]  
 ,tblInvoiceDocDT.decPriceEaExcF as [Unit Price Foreign]  
 ,tblInvoiceDocDT.decLineTotExcF [Line Total Foreign]  
 ,tblInvoiceDocDT.decTotIncTaxF as [Line Tax Amount Foreign]  
 ,tblInv.strSubCategory as [Item SubCategory]  
 ,tblInvCat.strDesc as [Inventory Category Description]  
 ,tblInvSubCat.strDesc as [SubCategory Description]
 ,tblInv.strSubCategoryGroup as [Item SubCategory Group] 
 ,tblInvGroupSubCat.strDesc as [Item SubCategory Group Description]   
 ,ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) AS [Cost (Last Received Cost)]
 ,dbo.tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) AS [Profit (Last Received Cost)]
 ,CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2)) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18,2))  AS [GP Margin (Last Received Cost) (%)]
 ,CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) AND (ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2)) / ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18,2)) AS [GP Markup (Last Received Cost) (%)]
 ,ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) AS [Cost (Standard Cost)]
 ,dbo.tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) AS [Profit (Standard Cost)]
 ,CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2)) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18,2))  AS [GP Margin (Standard Cost) (%)]
 ,CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) AND (ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2)) / ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18,2)) AS [GP Markup (Standard Cost) (%)]
 ,tblCustomerCat.strDesc as [Customer Category Description]
 ,tblCustomers.dteSince as [Customer Since Date]
 ,tblInvoiceDoc.strField1
 ,tblInvoiceDoc.strField2
 ,tblInvoiceDoc.strField3
 ,tblInvoiceDoc.strField4
 ,tblInvoiceDoc.strField5
 ,tblInvoiceDoc.strField6
 ,tblInvoiceDoc.strField7
 ,tblInvoiceDoc.strField8
 ,tblInvoiceDoc.strField9
 ,tblInvoiceDoc.strField10
 ,tblInvoiceDoc.strField11
 ,tblInvoiceDoc.strField12
 ,tblInvoiceDoc.dteField13
 ,tblInvoiceDoc.dteField14
 ,tblCustomers.strCountry as [Customer Country]
 ,tblCustomers.strCountryCode as [Customer Country Code]
 ,0.0 as MarginPercentage 
FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory And tblInvSubCat.strParentCategory = tblInv.strCategory
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup And tblInvGroupSubCat.strParentSubCategory=tblInv.strSubCategory And tblInvGroupSubCat.strParentCategory = tblInv.strCategory
LEFT JOIN tblCustomerCat on tblCustomers.strCustCategory=tblCustomerCat.strCustCategory
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)
and   
(  
case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL   
  when @strDateFilter='Transaction Date' and @strDateFilterCriteria !='All' then  cast(tblInvoiceDoc.dteJournalDate as date)   
  when @strDateFilter='Required Date' and @strDateFilterCriteria !='All' then cast(tblInvoiceDoc.dteRequired as date)  
     else CAST(@dateFromDate as date) end     
  between  
   cast(@dateFromDate as date) and   
   cast( @dateToDate as date))) as Test

Declare @field1 as nvarchar(Max)= (select top(1) strRecDoc1 from tblOptFields)
Declare @field2 as nvarchar(Max)= (select top(1) strRecDoc2 from tblOptFields)
Declare @field3 as nvarchar(Max)= (select top(1) strRecDoc3 from tblOptFields)
Declare @field4 as nvarchar(Max)= (select top(1) strRecDoc4 from tblOptFields)
Declare @field5 as nvarchar(Max)= (select top(1) strRecDoc5 from tblOptFields)
Declare @field6 as nvarchar(Max)= (select top(1) strRecDoc6 from tblOptFields)
Declare @field7 as nvarchar(Max)= (select top(1) strRecDoc7 from tblOptFields)
Declare @field8 as nvarchar(Max)= (select top(1) strRecDoc8 from tblOptFields)
Declare @field9 as nvarchar(Max)= (select top(1) strRecDoc9 from tblOptFields)
Declare @field10 as nvarchar(Max)= (select top(1) strRecDoc10 from tblOptFields)
Declare @field11 as nvarchar(Max)= (select top(1) strRecDoc11 from tblOptFields)
Declare @field12 as nvarchar(Max)= (select top(1) strRecDoc12 from tblOptFields)
Declare @field13 as nvarchar(Max)= (select top(1) strRecDoc13 from tblOptFields)
Declare @field14 as nvarchar(Max)= (select top(1) strRecDoc14 from tblOptFields)

if LEN(@field1) > 0
begin
	set @field1 = CONCAT(@field1,' (Optional)')
	EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField1 ' , @field1 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField1' , 'Field 1 (Optional)' , 'COLUMN'
end

if LEN(@field2) >0
begin
set @field2 = CONCAT(@field2,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField2 ' , @field2 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField2' , 'Field 2 (Optional)' , 'COLUMN'
end

if LEN(@field3) >0
begin
set @field3 = CONCAT(@field3,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField3 ' , @field3 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField3' , 'Field 3 (Optional)' , 'COLUMN'
end

if LEN(@field4) >0
begin
set @field4 = CONCAT(@field4,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField4 ' , @field4 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField4' , 'Field 4 (Optional)' , 'COLUMN'
end

if LEN(@field5) >0
begin
set @field5 = CONCAT(@field5,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField5 ' , @field5 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField5' , 'Field 5 (Optional)' , 'COLUMN'
end

if LEN(@field6) >0
begin
set @field6 = CONCAT(@field6,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField6 ' , @field6 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField6' , 'Field 6 (Optional)' , 'COLUMN'
end

if LEN(@field7) >0
begin
set @field7 = CONCAT(@field7,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField7 ' , @field7 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField7' , 'Field 7 (Optional)' , 'COLUMN'
end

if LEN(@field8) >0
begin
set @field8 = CONCAT(@field8,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField8 ' , @field8 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField8' , 'Field 8 (Optional)' , 'COLUMN'
end

if LEN(@field9) >0
begin
set @field9 = CONCAT(@field9,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField9 ' , @field9 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField9' , 'Field 9 (Optional)' , 'COLUMN'
end

if LEN(@field10) >0
begin
set @field10 = CONCAT(@field10,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField10' , @field10, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField10' , 'Field 10 (Optional)' , 'COLUMN'
end

if LEN(@field11) >0
begin
set @field11 = CONCAT(@field11,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField11' , @field11, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField11' , 'Field 11 (Optional)' , 'COLUMN'
end

if LEN(@field12) >0
begin
set @field12 = CONCAT(@field12,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField12' , @field12, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField12' , 'Field 12 (Optional)' , 'COLUMN'
end

if LEN(@field13) >0
begin
set @field13 = CONCAT(@field13,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField13' , @field13, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField13' , 'Field 13 (Optional)' , 'COLUMN'
end

if LEN(@field14) >0
begin
set @field14 = CONCAT(@field14,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField14' , @field14, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField14' , 'Field 14 (Optional)' , 'COLUMN'
end

DECLARE @SumRevenue DECIMAL (19, 2) = 0.00
DECLARE @SumCost DECIMAL (19, 2) = 0.00
DECLARE @SumQty DECIMAL (19, 2) = 0.00
DECLARE @SumProfit DECIMAL (19, 2) = 0.00
DECLARE @MarginPercentage DECIMAL (19, 2) = 0.00

SELECT @SumRevenue = SUM(Revenue),
		@SumCost = SUM(Cost),
		@SumQty = SUM(Qty),
		@SumProfit = SUM(Profit)
FROM Temp_SalesAnalysis

SELECT @MarginPercentage = round((@SumProfit / @SumRevenue) * 100, 2)

SELECT ISNULL(@SumRevenue, 0.0) AS Revenue, ISNULL(@SumCost, 0.0) AS Cost, ISNULL(@SumQty, 0.0) AS Qty, ISNULL(@SumProfit, 0.0) AS Profit, ISNULL(@MarginPercentage, 0.0) AS MarginPercentage

drop table Temp_SalesAnalysis

end
GO

/****** Object:  StoredProcedure [dbo].[MobileSpBiSalesAnalysisFilter]    Script Date: 27-05-2022 08:40:00 ******/
CREATE PROCEDURE [dbo].[MobileSpBiSalesAnalysisFilter]   
(  
@strDateFilter VARCHAR(100)=NULL,  
@dateFromDate DateTime=NULL,  
@dateToDate DateTime=NULL,  
@strDateFilterCriteria VARCHAR(100)=NULL,
@CategoryFilter bit=0,
@SubCategoryFilter bit=0,
@SubCategoryGroupFilter bit=0,
@SubCategoryGroupItemFilter bit=0,
@strCategory VARCHAR(100)=NULL,
@strSubCategory VARCHAR(100)=NULL,
@strSubCategoryGroup VARCHAR(100)=NULL,
@IsInventoryCategoryFilter bit=0,
@IsCustomerCategoryFilter bit=0,
@IsSalesPersonFilter bit=0,
@SelectedCustomerCategory VARCHAR(100)=NULL,
@SelectedSalesPerson VARCHAR(100)=NULL
)  
AS  
BEGIN  

BEGIN
	If (EXISTS(Select * from sys.tables where name='Temp_SalesAnalysis'))
	BEGIN
		DROP table Temp_SalesAnalysis
	END
END

Select * into Temp_SalesAnalysis 
from (
SELECT tblInvoiceDoc.strInvDocID AS [Document #]  
 ,tblInvoiceDoc.strReference AS Reference  
 ,tblInvoiceDoc.strUserName AS Agent  
 ,tblInvoiceDoc.strSalesName AS [Sales Rep]  
 ,tblInvoiceDoc.dteJournalDate AS [Transaction Date]  
 ,tblInvoiceDoc.dteRequired AS [Required Date]  
 ,DATENAME(YEAR, tblInvoiceDoc.dteJournalDate) AS Year  
 ,RIGHT('00' + CAST(MONTH(tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, tblInvoiceDoc.dteJournalDate) AS Month  
 ,REPLICATE('0',2-LEN(DATENAME(DAY, tblInvoiceDoc.dteJournalDate))) + DATENAME(DAY, tblInvoiceDoc.dteJournalDate) AS Day  
 ,DATENAME(WEEK, tblInvoiceDoc.dteJournalDate) AS Week  
 ,DATENAME(QUARTER, tblInvoiceDoc.dteJournalDate) AS Quarter  
 ,tblInvoiceDoc.strCustName AS [Customer Code]  
 ,tblCustomers.strCustDesc AS [Customer Name]  
 ,tblCustomers.strCustCategory AS [Customer Category Code] 
 ,tblCustomers.strCustCategory AS [Customer Category]
 ,tblInvoiceDocDT.strPartNumber AS [Item Code]  
 ,tblInvoiceDocDT.strPartDesc AS [Item Description]  
 ,tblInv.strDesc AS [Item Description (Masterfile)]  
 ,tblInvoiceDocDT.strLocation AS [Item Location] 
 ,tblInv.strCategory AS [Item Category]  
 ,tblInvExt.strAcctSet AS [Item Account Set]  
 ,tblInvoiceDocDT.decQty AS Qty  
 ,tblInvoiceDocDT.decLineTotExc AS Revenue  
 ,tblInvoiceDocDT.decCOGS AS Cost  
 ,tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS AS Profit  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2)) AS [GP Margin (%)]  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2)) AS [GP Margin]
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2)) AS [Margin Percentage]  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))AS [GP Markup (%)]  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))AS [GP Markup]
 ,ISNULL(tblInv.bitItemNumConvUsed, 0) AS [Using Item # Convention]  
 ,ISNULL(tblInv.strItemSegment1, N'') AS [Item Segment 1]  
 ,ISNULL(tblInv.strItemSegment2, N'') AS [Item Segment 2]  
 ,ISNULL(tblInv.strItemSegment3, N'') AS [Item Segment 3]  
 ,ISNULL(tblInv.strItemSegment4, N'') AS [Item Segment 4]  
 ,ISNULL(tblInv.strInvNumConv, N'') AS [Number Convention]  
 ,CASE WHEN tblInvoiceDocDT.decQty = 0 THEN 0 ELSE tblInvoiceDocDT.decCOGS / tblInvoiceDocDT.decQty END AS [Unit Cost]  
 ,ISNULL(tblInvoiceDocDT.decStandardCost, 0) AS [Standard Cost]  
 ,ISNULL(tblInvoiceDocDT.decLastPPUnit, 0) AS [Last Received Cost]  
 ,tblInvoiceDoc.strCurrency AS [Currency Code]  
 ,tblInvoiceDoc.decExchange AS [Exchange Rate]  
 ,CASE WHEN (tblInvoiceDoc.bitIsForeign <> 0) THEN tblInvoiceDocDT.decLineTotExc / tblInvoiceDoc.decExchange ELSE 0 END AS [Revenue FC]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS [Is Foreign Trans]  
 ,REPLACE(REPLACE(ISNULL(tblInvoiceDoc.strShipTo,''), CHAR(13), ' '), CHAR(10), '') AS [Ship To]  
 ,tblInvoiceDoc.strAddInfo AS [Additional Info]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decSubTotalF + tblInvoiceDoc.decDiscAmtF END AS [Document Subtotal]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decDiscAmtF END AS [Document Discount]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decVAT ELSE tblInvoiceDoc.decVATF END AS [Document Tax]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS [Document Total]  
 ,tblInvoiceDoc.intDept AS Department  
 ,tblInv.decMass AS [Dimension Mass]  
    ,tblInv.decVolumetricWeight AS [Dimension Volumetric Weight]  
 ,tblInv.strUnitOfMeasure AS [Dimension UOM]  
 ,tblInv.decW AS [Dimension Width]
 ,tblInv.decH AS [Dimension Height]
    ,tblInv.decD AS [Dimension Depth]  
 ,tblInv.decCube AS [Dimension Cube]  
 ,tblInv.decFactor AS [Dimension Factor]  
 ,tblInvoiceDocDT.decLineTaxAmt AS [Line Tax Amount]  
 ,tblInvoiceDocDT.decLineTotExc + tblInvoiceDocDT.decLineTaxAmt AS [Line Total Incl]  
 ,tblInvoiceDocDT.decPriceEaExc AS [Unit Price Excl]   
 ,tblInvoiceDocDT.decPriceEaInc AS [Unit Price Incl]   
 ,tblInvoiceDocDT.decLineDiscPerc AS [Line Disc Perc]   
 ,tblInvoiceDocDT.decLineDiscAmt AS [Line Disc Amount]  
 ,tblInvoiceDocDT.decLineDiscAmtF AS [Line Disc Amount Foreign]  
 ,tblInvoiceDocDT.decLineTotExc AS [Line Total Excl]  
 ,tblInvoiceDocDT.decPriceEaExcF as [Unit Price Foreign]  
 ,tblInvoiceDocDT.decLineTotExcF [Line Total Foreign]  
 ,tblInvoiceDocDT.decTotIncTaxF as [Line Tax Amount Foreign]  
 ,tblInv.strSubCategory as [Item SubCategory]  
 ,tblInvCat.strDesc as [Inventory Category Description]  
 ,tblInvSubCat.strDesc as [SubCategory Description]
 ,tblInv.strSubCategoryGroup as [Item SubCategory Group] 
 ,tblInvGroupSubCat.strDesc as [Item SubCategory Group Description]   
 ,ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) AS [Cost (Last Received Cost)]
 ,dbo.tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) AS [Profit (Last Received Cost)]
 ,CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2)) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18,2))  AS [GP Margin (Last Received Cost) (%)]
 ,CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) AND (ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2)) / ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18,2)) AS [GP Markup (Last Received Cost) (%)]
 ,ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) AS [Cost (Standard Cost)]
 ,dbo.tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) AS [Profit (Standard Cost)]
 ,CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2)) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18,2))  AS [GP Margin (Standard Cost) (%)]
 ,CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) AND (ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2)) / ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18,2)) AS [GP Markup (Standard Cost) (%)]
 ,tblCustomerCat.strDesc as [Customer Category Description]
 ,tblCustomers.dteSince as [Customer Since Date]
 ,tblInvoiceDoc.strField1
 ,tblInvoiceDoc.strField2
 ,tblInvoiceDoc.strField3
 ,tblInvoiceDoc.strField4
 ,tblInvoiceDoc.strField5
 ,tblInvoiceDoc.strField6
 ,tblInvoiceDoc.strField7
 ,tblInvoiceDoc.strField8
 ,tblInvoiceDoc.strField9
 ,tblInvoiceDoc.strField10
 ,tblInvoiceDoc.strField11
 ,tblInvoiceDoc.strField12
 ,tblInvoiceDoc.dteField13
 ,tblInvoiceDoc.dteField14
 ,tblCustomers.strCountry as [Customer Country]
 ,tblCustomers.strCountryCode as [Customer Country Code]
FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory And tblInvSubCat.strParentCategory = tblInv.strCategory
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup And tblInvGroupSubCat.strParentSubCategory=tblInv.strSubCategory And tblInvGroupSubCat.strParentCategory = tblInv.strCategory
LEFT JOIN tblCustomerCat on tblCustomers.strCustCategory=tblCustomerCat.strCustCategory
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)
and   
(  
case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL   
  when @strDateFilter='Transaction Date' and @strDateFilterCriteria !='All' then  cast(tblInvoiceDoc.dteJournalDate as date)   
  when @strDateFilter='Required Date' and @strDateFilterCriteria !='All' then cast(tblInvoiceDoc.dteRequired as date)  
     else CAST(@dateFromDate as date) end     
  between  
   cast(@dateFromDate as date) and   
   cast( @dateToDate as date))) as Test

Declare @field1 as nvarchar(Max)= (select top(1) strRecDoc1 from tblOptFields)
Declare @field2 as nvarchar(Max)= (select top(1) strRecDoc2 from tblOptFields)
Declare @field3 as nvarchar(Max)= (select top(1) strRecDoc3 from tblOptFields)
Declare @field4 as nvarchar(Max)= (select top(1) strRecDoc4 from tblOptFields)
Declare @field5 as nvarchar(Max)= (select top(1) strRecDoc5 from tblOptFields)
Declare @field6 as nvarchar(Max)= (select top(1) strRecDoc6 from tblOptFields)
Declare @field7 as nvarchar(Max)= (select top(1) strRecDoc7 from tblOptFields)
Declare @field8 as nvarchar(Max)= (select top(1) strRecDoc8 from tblOptFields)
Declare @field9 as nvarchar(Max)= (select top(1) strRecDoc9 from tblOptFields)
Declare @field10 as nvarchar(Max)= (select top(1) strRecDoc10 from tblOptFields)
Declare @field11 as nvarchar(Max)= (select top(1) strRecDoc11 from tblOptFields)
Declare @field12 as nvarchar(Max)= (select top(1) strRecDoc12 from tblOptFields)
Declare @field13 as nvarchar(Max)= (select top(1) strRecDoc13 from tblOptFields)
Declare @field14 as nvarchar(Max)= (select top(1) strRecDoc14 from tblOptFields)

if LEN(@field1) > 0
begin
	set @field1 = CONCAT(@field1,' (Optional)')
	EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField1 ' , @field1 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField1' , 'Field 1 (Optional)' , 'COLUMN'
end

if LEN(@field2) >0
begin
set @field2 = CONCAT(@field2,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField2 ' , @field2 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField2' , 'Field 2 (Optional)' , 'COLUMN'
end

if LEN(@field3) >0
begin
set @field3 = CONCAT(@field3,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField3 ' , @field3 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField3' , 'Field 3 (Optional)' , 'COLUMN'
end

if LEN(@field4) >0
begin
set @field4 = CONCAT(@field4,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField4 ' , @field4 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField4' , 'Field 4 (Optional)' , 'COLUMN'
end

if LEN(@field5) >0
begin
set @field5 = CONCAT(@field5,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField5 ' , @field5 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField5' , 'Field 5 (Optional)' , 'COLUMN'
end

if LEN(@field6) >0
begin
set @field6 = CONCAT(@field6,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField6 ' , @field6 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField6' , 'Field 6 (Optional)' , 'COLUMN'
end

if LEN(@field7) >0
begin
set @field7 = CONCAT(@field7,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField7 ' , @field7 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField7' , 'Field 7 (Optional)' , 'COLUMN'
end

if LEN(@field8) >0
begin
set @field8 = CONCAT(@field8,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField8 ' , @field8 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField8' , 'Field 8 (Optional)' , 'COLUMN'
end

if LEN(@field9) >0
begin
set @field9 = CONCAT(@field9,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField9 ' , @field9 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField9' , 'Field 9 (Optional)' , 'COLUMN'
end

if LEN(@field10) >0
begin
set @field10 = CONCAT(@field10,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField10' , @field10, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField10' , 'Field 10 (Optional)' , 'COLUMN'
end

if LEN(@field11) >0
begin
set @field11 = CONCAT(@field11,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField11' , @field11, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField11' , 'Field 11 (Optional)' , 'COLUMN'
end

if LEN(@field12) >0
begin
set @field12 = CONCAT(@field12,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField12' , @field12, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField12' , 'Field 12 (Optional)' , 'COLUMN'
end

if LEN(@field13) >0
begin
set @field13 = CONCAT(@field13,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField13' , @field13, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField13' , 'Field 13 (Optional)' , 'COLUMN'
end

if LEN(@field14) >0
begin
set @field14 = CONCAT(@field14,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField14' , @field14, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField14' , 'Field 14 (Optional)' , 'COLUMN'
end

Begin /* Filter by Inventory Category */
	IF @IsInventoryCategoryFilter = 1
	BEGIN
		IF @CategoryFilter = 1 and LEN(@strCategory) = 0
			SELECT SUM(Revenue) AS Revenue, SUM(Cost) AS Cost, SUM(Qty) AS Qty, SUM(Profit) AS Profit, 
			[Item Category] AS ItemCategory, (SELECT TOP 1 strDesc FROM tblInvCat WHERE strCategory = [Item Category]) AS CategoryDescription
			FROM Temp_SalesAnalysis
			WHERE [Item Category] IS NOT NULL
			GROUP BY [Item Category]

		IF @SubCategoryFilter = 1 and LEN(@strCategory) > 0 and LEN(@strSubCategory) = 0
			SELECT SUM(Revenue) AS Revenue, SUM(Cost) AS Cost, SUM(Qty) AS Qty, SUM(Profit) AS Profit, 
			[Item SubCategory] AS ItemSubCategory, (SELECT TOP 1 strDesc FROM tblInvSubCat WHERE strCategory = [Item SubCategory] AND strParentCategory = @strCategory) AS SubCategoryDescription,
			CAST(CASE WHEN ISNULL([Item SubCategory], '') = '' THEN 1 ELSE 0 END AS BIT) AS IsItem
			FROM Temp_SalesAnalysis
			WHERE [Item Category] = @strCategory
			GROUP BY [Item SubCategory]

		IF @SubCategoryGroupFilter = 1 and LEN(@strSubCategory) > 0 and LEN(@strSubCategoryGroup) = 0
			SELECT SUM(Revenue) AS Revenue, SUM(Cost) AS Cost, SUM(Qty) AS Qty, SUM(Profit) AS Profit, 
			[Item SubCategory Group]  AS ItemSubCategoryGroup, (SELECT TOP 1 strDesc FROM tblInvGroupSubCat WHERE strCategory = [Item SubCategory Group] and strParentSubCategory = @strSubCategory) AS ItemSubCategoryGroupDescription,
			CAST(CASE WHEN ISNULL([Item SubCategory Group], '') = '' THEN 1 ELSE 0 END AS bit) AS IsItem
			FROM Temp_SalesAnalysis
			WHERE [Item Category] = @strCategory and [Item SubCategory] = @strSubCategory
			GROUP BY [Item SubCategory Group] 

		IF @SubCategoryGroupItemFilter = 1 and LEN(@strSubCategoryGroup) > 0
			SELECT SUM(Revenue) AS Revenue, SUM(Cost) AS Cost, SUM(Qty) AS Qty, SUM(Profit) AS Profit, 
			[Item Code] AS ItemName,
			(SELECT TOP 1 strDesc FROM tblInv WHERE strPartNumber = [Item Code]) AS ItemNameDescription
			FROM Temp_SalesAnalysis
			WHERE [Item Category] = @strCategory and [Item SubCategory] = @strSubCategory and [Item SubCategory Group] = @strSubCategoryGroup
			GROUP BY [Item Code]
	END
end

Begin /* Filter by Customer Category */
	IF @IsCustomerCategoryFilter = 1
	BEGIN
		IF @CategoryFilter = 1 and LEN(@strCategory) = 0
			SELECT SUM(Revenue) AS Revenue, SUM(Cost) AS Cost, SUM(Qty) AS Qty, SUM(Profit) AS Profit, 
			[Item Category] AS ItemCategory, (SELECT TOP 1 strDesc FROM tblInvCat WHERE strCategory = [Item Category]) AS CategoryDescription
			FROM Temp_SalesAnalysis
			WHERE [Customer Category] = @SelectedCustomerCategory and [Item Category] IS NOT NULL
			GROUP BY [Item Category]

		IF @SubCategoryFilter = 1 and LEN(@strCategory) > 0 and LEN(@strSubCategory) = 0
			SELECT SUM(Revenue) AS Revenue, SUM(Cost) AS Cost, SUM(Qty) AS Qty, SUM(Profit) AS Profit, 
			[Item SubCategory] AS ItemSubCategory, (SELECT TOP 1 strDesc FROM tblInvSubCat WHERE strCategory = [Item SubCategory]) AS SubCategoryDescription,
			CAST(CASE WHEN ISNULL([Item SubCategory], '') = '' THEN 1 ELSE 0 END AS BIT) AS IsItem
			FROM Temp_SalesAnalysis
			WHERE [Customer Category] = @SelectedCustomerCategory and [Item Category] = @strCategory
			GROUP BY [Item SubCategory]

		IF @SubCategoryGroupFilter = 1 and LEN(@strSubCategory) > 0 and LEN(@strSubCategoryGroup) = 0
			SELECT SUM(Revenue) AS Revenue, SUM(Cost) AS Cost, SUM(Qty) AS Qty, SUM(Profit) AS Profit, 
			[Item SubCategory Group]  AS ItemSubCategoryGroup, (SELECT TOP 1 strDesc FROM tblInvGroupSubCat WHERE strCategory = [Item SubCategory Group]) AS ItemSubCategoryGroupDescription,
			CAST(CASE WHEN ISNULL([Item SubCategory Group], '') = '' THEN 1 ELSE 0 END AS bit) AS IsItem
			FROM Temp_SalesAnalysis
			WHERE [Customer Category] = @SelectedCustomerCategory and [Item Category] = @strCategory and [Item SubCategory] = @strSubCategory
			GROUP BY [Item SubCategory Group] 

		IF @SubCategoryGroupItemFilter = 1 and LEN(@strSubCategoryGroup) > 0
			SELECT SUM(Revenue) AS Revenue, SUM(Cost) AS Cost, SUM(Qty) AS Qty, SUM(Profit) AS Profit, 
			[Item Code] AS ItemName,
			(SELECT TOP 1 strDesc FROM tblInv WHERE strPartNumber = [Item Code]) AS ItemNameDescription
			FROM Temp_SalesAnalysis
			WHERE [Customer Category] = @SelectedCustomerCategory and [Item Category] = @strCategory and [Item SubCategory] = @strSubCategory and [Item SubCategory Group] = @strSubCategoryGroup
			GROUP BY [Item Code]
	END
end

Begin /* Filter by Sales Person */
	IF @IsSalesPersonFilter = 1
	BEGIN
		IF @CategoryFilter = 1 and LEN(@strCategory) = 0
			SELECT SUM(Revenue) AS Revenue, SUM(Cost) AS Cost, SUM(Qty) AS Qty, SUM(Profit) AS Profit, 
			[Item Category] AS ItemCategory, (SELECT TOP 1 strDesc FROM tblInvCat WHERE strCategory = [Item Category]) AS CategoryDescription
			FROM Temp_SalesAnalysis
			WHERE [Sales Rep] = @SelectedSalesPerson and [Item Category] IS NOT NULL
			GROUP BY [Item Category]

		IF @SubCategoryFilter = 1 and LEN(@strCategory) > 0 and LEN(@strSubCategory) = 0
			SELECT SUM(Revenue) AS Revenue, SUM(Cost) AS Cost, SUM(Qty) AS Qty, SUM(Profit) AS Profit, 
			[Item SubCategory] AS ItemSubCategory, (SELECT TOP 1 strDesc FROM tblInvSubCat WHERE strCategory = [Item SubCategory]) AS SubCategoryDescription,
			CAST(CASE WHEN ISNULL([Item SubCategory], '') = '' THEN 1 ELSE 0 END AS BIT) AS IsItem
			FROM Temp_SalesAnalysis
			WHERE [Sales Rep] = @SelectedSalesPerson and [Item Category] = @strCategory
			GROUP BY [Item SubCategory]

		IF @SubCategoryGroupFilter = 1 and LEN(@strSubCategory) > 0 and LEN(@strSubCategoryGroup) = 0
			SELECT SUM(Revenue) AS Revenue, SUM(Cost) AS Cost, SUM(Qty) AS Qty, SUM(Profit) AS Profit, 
			[Item SubCategory Group]  AS ItemSubCategoryGroup, (SELECT TOP 1 strDesc FROM tblInvGroupSubCat WHERE strCategory = [Item SubCategory Group]) AS ItemSubCategoryGroupDescription,
			CAST(CASE WHEN ISNULL([Item SubCategory Group], '') = '' THEN 1 ELSE 0 END AS bit) AS IsItem
			FROM Temp_SalesAnalysis
			WHERE [Sales Rep] = @SelectedSalesPerson and [Item Category] = @strCategory and [Item SubCategory] = @strSubCategory
			GROUP BY [Item SubCategory Group] 

		IF @SubCategoryGroupItemFilter = 1 and LEN(@strSubCategoryGroup) > 0
			SELECT SUM(Revenue) AS Revenue, SUM(Cost) AS Cost, SUM(Qty) AS Qty, SUM(Profit) AS Profit, 
			[Item Code] AS ItemName,
			(SELECT TOP 1 strDesc FROM tblInv WHERE strPartNumber = [Item Code]) AS ItemNameDescription
			FROM Temp_SalesAnalysis
			WHERE [Sales Rep] = @SelectedSalesPerson and [Item Category] = @strCategory and [Item SubCategory] = @strSubCategory and [Item SubCategory Group] = @strSubCategoryGroup
			GROUP BY [Item Code]
	END
end

drop table Temp_SalesAnalysis

END
GO

/****** Object:  StoredProcedure [dbo].[MobileSPBiSalesAnalysisFilterByCustSales]    Script Date: 27-05-2022 08:40:00 ******/
CREATE PROCEDURE [dbo].[MobileSPBiSalesAnalysisFilterByCustSales]   
(  
@strDateFilter VARCHAR(100)=NULL,  
@dateFromDate DateTime=NULL,  
@dateToDate DateTime=NULL,  
@strDateFilterCriteria VARCHAR(100)=NULL,
@CategoryFilter bit=0,
@SubCategoryFilter bit=0,
@SubCategoryGroupFilter bit=0,
@SubCategoryGroupItemFilter bit=0,
@strCategory VARCHAR(100)=NULL,
@strSubCategory VARCHAR(100)=NULL,
@strSubCategoryGroup VARCHAR(100)=NULL,
@IsInventoryCategoryFilter bit=0,
@IsCustomerCategoryFilter bit=0,
@IsSalesPersonFilter bit=0,
@SelectedCustomerCategory VARCHAR(100)=NULL,
@SelectedSalesPerson VARCHAR(100)=NULL
)  
AS  
BEGIN  

BEGIN
	If (EXISTS(Select * from sys.tables where name='Temp_SalesAnalysis'))
	BEGIN
		DROP table Temp_SalesAnalysis
	END
END

Select * into Temp_SalesAnalysis 
from (
SELECT tblInvoiceDoc.strInvDocID AS [Document #]  
 ,tblInvoiceDoc.strReference AS Reference  
 ,tblInvoiceDoc.strUserName AS Agent  
 ,tblInvoiceDoc.strSalesName AS [Sales Rep]  
 ,tblInvoiceDoc.dteJournalDate AS [Transaction Date]  
 ,tblInvoiceDoc.dteRequired AS [Required Date]  
 ,DATENAME(YEAR, tblInvoiceDoc.dteJournalDate) AS Year  
 ,RIGHT('00' + CAST(MONTH(tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, tblInvoiceDoc.dteJournalDate) AS Month  
 ,REPLICATE('0',2-LEN(DATENAME(DAY, tblInvoiceDoc.dteJournalDate))) + DATENAME(DAY, tblInvoiceDoc.dteJournalDate) AS Day  
 ,DATENAME(WEEK, tblInvoiceDoc.dteJournalDate) AS Week  
 ,DATENAME(QUARTER, tblInvoiceDoc.dteJournalDate) AS Quarter  
 ,tblInvoiceDoc.strCustName AS [Customer Code]  
 ,tblCustomers.strCustDesc AS [Customer Name]  
 ,tblCustomers.strCustCategory AS [Customer Category Code] 
 ,tblCustomers.strCustCategory AS [Customer Category]
 ,tblInvoiceDocDT.strPartNumber AS [Item Code]  
 ,tblInvoiceDocDT.strPartDesc AS [Item Description]  
 ,tblInv.strDesc AS [Item Description (Masterfile)]  
 ,tblInvoiceDocDT.strLocation AS [Item Location] 
 ,tblInv.strCategory AS [Item Category]  
 ,tblInvExt.strAcctSet AS [Item Account Set]  
 ,tblInvoiceDocDT.decQty AS Qty  
 ,tblInvoiceDocDT.decLineTotExc AS Revenue  
 ,tblInvoiceDocDT.decCOGS AS Cost  
 ,tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS AS Profit  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2)) AS [GP Margin (%)]  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2)) AS [GP Margin]
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2)) AS [Margin Percentage]  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))AS [GP Markup (%)]  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))AS [GP Markup]
 ,ISNULL(tblInv.bitItemNumConvUsed, 0) AS [Using Item # Convention]  
 ,ISNULL(tblInv.strItemSegment1, N'') AS [Item Segment 1]  
 ,ISNULL(tblInv.strItemSegment2, N'') AS [Item Segment 2]  
 ,ISNULL(tblInv.strItemSegment3, N'') AS [Item Segment 3]  
 ,ISNULL(tblInv.strItemSegment4, N'') AS [Item Segment 4]  
 ,ISNULL(tblInv.strInvNumConv, N'') AS [Number Convention]  
 ,CASE WHEN tblInvoiceDocDT.decQty = 0 THEN 0 ELSE tblInvoiceDocDT.decCOGS / tblInvoiceDocDT.decQty END AS [Unit Cost]  
 ,ISNULL(tblInvoiceDocDT.decStandardCost, 0) AS [Standard Cost]  
 ,ISNULL(tblInvoiceDocDT.decLastPPUnit, 0) AS [Last Received Cost]  
 ,tblInvoiceDoc.strCurrency AS [Currency Code]  
 ,tblInvoiceDoc.decExchange AS [Exchange Rate]  
 ,CASE WHEN (tblInvoiceDoc.bitIsForeign <> 0) THEN tblInvoiceDocDT.decLineTotExc / tblInvoiceDoc.decExchange ELSE 0 END AS [Revenue FC]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS [Is Foreign Trans]  
 ,REPLACE(REPLACE(ISNULL(tblInvoiceDoc.strShipTo,''), CHAR(13), ' '), CHAR(10), '') AS [Ship To]  
 ,tblInvoiceDoc.strAddInfo AS [Additional Info]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decSubTotalF + tblInvoiceDoc.decDiscAmtF END AS [Document Subtotal]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decDiscAmtF END AS [Document Discount]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decVAT ELSE tblInvoiceDoc.decVATF END AS [Document Tax]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS [Document Total]  
 ,tblInvoiceDoc.intDept AS Department  
 ,tblInv.decMass AS [Dimension Mass]  
    ,tblInv.decVolumetricWeight AS [Dimension Volumetric Weight]  
 ,tblInv.strUnitOfMeasure AS [Dimension UOM]  
 ,tblInv.decW AS [Dimension Width]
 ,tblInv.decH AS [Dimension Height]
    ,tblInv.decD AS [Dimension Depth]  
 ,tblInv.decCube AS [Dimension Cube]  
 ,tblInv.decFactor AS [Dimension Factor]  
 ,tblInvoiceDocDT.decLineTaxAmt AS [Line Tax Amount]  
 ,tblInvoiceDocDT.decLineTotExc + tblInvoiceDocDT.decLineTaxAmt AS [Line Total Incl]  
 ,tblInvoiceDocDT.decPriceEaExc AS [Unit Price Excl]   
 ,tblInvoiceDocDT.decPriceEaInc AS [Unit Price Incl]   
 ,tblInvoiceDocDT.decLineDiscPerc AS [Line Disc Perc]   
 ,tblInvoiceDocDT.decLineDiscAmt AS [Line Disc Amount]  
 ,tblInvoiceDocDT.decLineDiscAmtF AS [Line Disc Amount Foreign]  
 ,tblInvoiceDocDT.decLineTotExc AS [Line Total Excl]  
 ,tblInvoiceDocDT.decPriceEaExcF as [Unit Price Foreign]  
 ,tblInvoiceDocDT.decLineTotExcF [Line Total Foreign]  
 ,tblInvoiceDocDT.decTotIncTaxF as [Line Tax Amount Foreign]  
 ,tblInv.strSubCategory as [Item SubCategory]  
 ,tblInvCat.strDesc as [Inventory Category Description]  
 ,tblInvSubCat.strDesc as [SubCategory Description]
 ,tblInv.strSubCategoryGroup as [Item SubCategory Group] 
 ,tblInvGroupSubCat.strDesc as [Item SubCategory Group Description]   
 ,ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) AS [Cost (Last Received Cost)]
 ,dbo.tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) AS [Profit (Last Received Cost)]
 ,CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2)) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18,2))  AS [GP Margin (Last Received Cost) (%)]
 ,CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) AND (ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2)) / ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18,2)) AS [GP Markup (Last Received Cost) (%)]
 ,ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) AS [Cost (Standard Cost)]
 ,dbo.tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) AS [Profit (Standard Cost)]
 ,CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2)) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18,2))  AS [GP Margin (Standard Cost) (%)]
 ,CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) AND (ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2)) / ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18,2)) AS [GP Markup (Standard Cost) (%)]
 ,tblCustomerCat.strDesc as [Customer Category Description]
 ,tblCustomers.dteSince as [Customer Since Date]
 ,tblInvoiceDoc.strField1
 ,tblInvoiceDoc.strField2
 ,tblInvoiceDoc.strField3
 ,tblInvoiceDoc.strField4
 ,tblInvoiceDoc.strField5
 ,tblInvoiceDoc.strField6
 ,tblInvoiceDoc.strField7
 ,tblInvoiceDoc.strField8
 ,tblInvoiceDoc.strField9
 ,tblInvoiceDoc.strField10
 ,tblInvoiceDoc.strField11
 ,tblInvoiceDoc.strField12
 ,tblInvoiceDoc.dteField13
 ,tblInvoiceDoc.dteField14
 ,tblCustomers.strCountry as [Customer Country]
 ,tblCustomers.strCountryCode as [Customer Country Code]
FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory And tblInvSubCat.strParentCategory = tblInv.strCategory
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup And tblInvGroupSubCat.strParentSubCategory=tblInv.strSubCategory And tblInvGroupSubCat.strParentCategory = tblInv.strCategory
LEFT JOIN tblCustomerCat on tblCustomers.strCustCategory=tblCustomerCat.strCustCategory
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)
and   
(  
case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL   
  when @strDateFilter='Transaction Date' and @strDateFilterCriteria !='All' then  cast(tblInvoiceDoc.dteJournalDate as date)   
  when @strDateFilter='Required Date' and @strDateFilterCriteria !='All' then cast(tblInvoiceDoc.dteRequired as date)  
     else CAST(@dateFromDate as date) end     
  between  
   cast(@dateFromDate as date) and   
   cast( @dateToDate as date))) as Test

Declare @field1 as nvarchar(Max)= (select top(1) strRecDoc1 from tblOptFields)
Declare @field2 as nvarchar(Max)= (select top(1) strRecDoc2 from tblOptFields)
Declare @field3 as nvarchar(Max)= (select top(1) strRecDoc3 from tblOptFields)
Declare @field4 as nvarchar(Max)= (select top(1) strRecDoc4 from tblOptFields)
Declare @field5 as nvarchar(Max)= (select top(1) strRecDoc5 from tblOptFields)
Declare @field6 as nvarchar(Max)= (select top(1) strRecDoc6 from tblOptFields)
Declare @field7 as nvarchar(Max)= (select top(1) strRecDoc7 from tblOptFields)
Declare @field8 as nvarchar(Max)= (select top(1) strRecDoc8 from tblOptFields)
Declare @field9 as nvarchar(Max)= (select top(1) strRecDoc9 from tblOptFields)
Declare @field10 as nvarchar(Max)= (select top(1) strRecDoc10 from tblOptFields)
Declare @field11 as nvarchar(Max)= (select top(1) strRecDoc11 from tblOptFields)
Declare @field12 as nvarchar(Max)= (select top(1) strRecDoc12 from tblOptFields)
Declare @field13 as nvarchar(Max)= (select top(1) strRecDoc13 from tblOptFields)
Declare @field14 as nvarchar(Max)= (select top(1) strRecDoc14 from tblOptFields)

if LEN(@field1) > 0
begin
	set @field1 = CONCAT(@field1,' (Optional)')
	EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField1 ' , @field1 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField1' , 'Field 1 (Optional)' , 'COLUMN'
end

if LEN(@field2) >0
begin
set @field2 = CONCAT(@field2,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField2 ' , @field2 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField2' , 'Field 2 (Optional)' , 'COLUMN'
end

if LEN(@field3) >0
begin
set @field3 = CONCAT(@field3,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField3 ' , @field3 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField3' , 'Field 3 (Optional)' , 'COLUMN'
end

if LEN(@field4) >0
begin
set @field4 = CONCAT(@field4,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField4 ' , @field4 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField4' , 'Field 4 (Optional)' , 'COLUMN'
end

if LEN(@field5) >0
begin
set @field5 = CONCAT(@field5,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField5 ' , @field5 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField5' , 'Field 5 (Optional)' , 'COLUMN'
end

if LEN(@field6) >0
begin
set @field6 = CONCAT(@field6,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField6 ' , @field6 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField6' , 'Field 6 (Optional)' , 'COLUMN'
end

if LEN(@field7) >0
begin
set @field7 = CONCAT(@field7,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField7 ' , @field7 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField7' , 'Field 7 (Optional)' , 'COLUMN'
end

if LEN(@field8) >0
begin
set @field8 = CONCAT(@field8,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField8 ' , @field8 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField8' , 'Field 8 (Optional)' , 'COLUMN'
end

if LEN(@field9) >0
begin
set @field9 = CONCAT(@field9,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField9 ' , @field9 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField9' , 'Field 9 (Optional)' , 'COLUMN'
end

if LEN(@field10) >0
begin
set @field10 = CONCAT(@field10,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField10' , @field10, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField10' , 'Field 10 (Optional)' , 'COLUMN'
end

if LEN(@field11) >0
begin
set @field11 = CONCAT(@field11,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField11' , @field11, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField11' , 'Field 11 (Optional)' , 'COLUMN'
end

if LEN(@field12) >0
begin
set @field12 = CONCAT(@field12,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField12' , @field12, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField12' , 'Field 12 (Optional)' , 'COLUMN'
end

if LEN(@field13) >0
begin
set @field13 = CONCAT(@field13,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField13' , @field13, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField13' , 'Field 13 (Optional)' , 'COLUMN'
end

if LEN(@field14) >0
begin
set @field14 = CONCAT(@field14,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField14' , @field14, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField14' , 'Field 14 (Optional)' , 'COLUMN'
end

IF @IsCustomerCategoryFilter = 1
	BEGIN
		SELECT SUM(Revenue) AS Revenue, SUM(Cost) AS Cost, SUM(Qty) AS Qty, SUM(Profit) AS Profit, 
			[Customer Category] AS CustomerCategory, (SELECT TOP 1 strDesc FROM tblCustomerCat WHERE strCustCategory = [Customer Category]) AS CustomerCategoryDescription
		FROM Temp_SalesAnalysis
		WHERE [Customer Category] IS NOT NULL
		GROUP BY [Customer Category]
	END

IF @IsSalesPersonFilter = 1
	BEGIN
		SELECT SUM(Revenue) AS Revenue, SUM(Cost) AS Cost, SUM(Qty) AS Qty, SUM(Profit) AS Profit, 
			[Sales Rep] AS SalesPerson
		FROM Temp_SalesAnalysis
		WHERE [Sales Rep] IS NOT NULL
		GROUP BY [Sales Rep]
	END
	
drop table Temp_SalesAnalysis

END
GO

/****** Object:  StoredProcedure [dbo].[MobileSpBiSalesAnalysisItems]    Script Date: 27-05-2022 08:40:00 ******/
CREATE PROCEDURE [dbo].[MobileSpBiSalesAnalysisItems]   
(  
@strDateFilter VARCHAR(100)=NULL,  
@dateFromDate DateTime=NULL,  
@dateToDate DateTime=NULL,  
@strDateFilterCriteria VARCHAR(100)=NULL,
@CategoryFilter bit=0,
@SubCategoryFilter bit=0,
@SubCategoryGroupFilter bit=0,
@SubCategoryGroupItemFilter bit=0,
@strCategory VARCHAR(100)=NULL,
@strSubCategory VARCHAR(100)=NULL,
@strSubCategoryGroup VARCHAR(100)=NULL
)  
AS  
BEGIN  

BEGIN
	If (EXISTS(Select * from sys.tables where name='Temp_SalesAnalysis'))
	BEGIN
		DROP table Temp_SalesAnalysis
	END
END

Select * into Temp_SalesAnalysis 
from (
SELECT tblInvoiceDoc.strInvDocID AS [Document #]  
 ,tblInvoiceDoc.strReference AS Reference  
 ,tblInvoiceDoc.strUserName AS Agent  
 ,tblInvoiceDoc.strSalesName AS [Sales Rep]  
 ,tblInvoiceDoc.dteJournalDate AS [Transaction Date]  
 ,tblInvoiceDoc.dteRequired AS [Required Date]  
 ,DATENAME(YEAR, tblInvoiceDoc.dteJournalDate) AS Year  
 ,RIGHT('00' + CAST(MONTH(tblInvoiceDoc.dteJournalDate) AS VARCHAR(2)), 2) + ' - ' + DATENAME(month, tblInvoiceDoc.dteJournalDate) AS Month  
 ,REPLICATE('0',2-LEN(DATENAME(DAY, tblInvoiceDoc.dteJournalDate))) + DATENAME(DAY, tblInvoiceDoc.dteJournalDate) AS Day  
 ,DATENAME(WEEK, tblInvoiceDoc.dteJournalDate) AS Week  
 ,DATENAME(QUARTER, tblInvoiceDoc.dteJournalDate) AS Quarter  
 ,tblInvoiceDoc.strCustName AS [Customer Code]  
 ,tblCustomers.strCustDesc AS [Customer Name]  
 ,tblCustomers.strCustCategory AS [Customer Category Code] 
 ,tblCustomers.strCustCategory AS [Customer Category]
 ,tblInvoiceDocDT.strPartNumber AS [Item Code]  
 ,tblInvoiceDocDT.strPartDesc AS [Item Description]  
 ,tblInv.strDesc AS [Item Description (Masterfile)]  
 ,tblInvoiceDocDT.strLocation AS [Item Location] 
 ,tblInv.strCategory AS [Item Category]  
 ,tblInvExt.strAcctSet AS [Item Account Set]  
 ,tblInvoiceDocDT.decQty AS Qty  
 ,tblInvoiceDocDT.decLineTotExc AS Revenue  
 ,tblInvoiceDocDT.decCOGS AS Cost  
 ,tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS AS Profit  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2)) AS [GP Margin (%)]  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2)) AS [GP Margin]
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2)) AS [Margin Percentage]  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))AS [GP Markup (%)]  
 ,CAST(ROUND(((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decCOGS <> 0) AND (tblInvoiceDocDT.decCOGS <> 0) THEN (tblInvoiceDocDT.decLineTotExc - tblInvoiceDocDT.decCOGS) / tblInvoiceDocDT.decCOGS ELSE 0 END ELSE 1 END) * 100),2) AS decimal(18,2))AS [GP Markup]
 ,ISNULL(tblInv.bitItemNumConvUsed, 0) AS [Using Item # Convention]  
 ,ISNULL(tblInv.strItemSegment1, N'') AS [Item Segment 1]  
 ,ISNULL(tblInv.strItemSegment2, N'') AS [Item Segment 2]  
 ,ISNULL(tblInv.strItemSegment3, N'') AS [Item Segment 3]  
 ,ISNULL(tblInv.strItemSegment4, N'') AS [Item Segment 4]  
 ,ISNULL(tblInv.strInvNumConv, N'') AS [Number Convention]  
 ,CASE WHEN tblInvoiceDocDT.decQty = 0 THEN 0 ELSE tblInvoiceDocDT.decCOGS / tblInvoiceDocDT.decQty END AS [Unit Cost]  
 ,ISNULL(tblInvoiceDocDT.decStandardCost, 0) AS [Standard Cost]  
 ,ISNULL(tblInvoiceDocDT.decLastPPUnit, 0) AS [Last Received Cost]  
 ,tblInvoiceDoc.strCurrency AS [Currency Code]  
 ,tblInvoiceDoc.decExchange AS [Exchange Rate]  
 ,CASE WHEN (tblInvoiceDoc.bitIsForeign <> 0) THEN tblInvoiceDocDT.decLineTotExc / tblInvoiceDoc.decExchange ELSE 0 END AS [Revenue FC]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN 'No' ELSE 'Yes' END AS [Is Foreign Trans]  
 ,REPLACE(REPLACE(ISNULL(tblInvoiceDoc.strShipTo,''), CHAR(13), ' '), CHAR(10), '') AS [Ship To]  
 ,tblInvoiceDoc.strAddInfo AS [Additional Info]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decSubTotal + tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decSubTotalF + tblInvoiceDoc.decDiscAmtF END AS [Document Subtotal]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decDiscAmt ELSE tblInvoiceDoc.decDiscAmtF END AS [Document Discount]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decVAT ELSE tblInvoiceDoc.decVATF END AS [Document Tax]  
 ,CASE tblInvoiceDoc.bitIsForeign WHEN 0 THEN tblInvoiceDoc.decTotal ELSE tblInvoiceDoc.decTotalF END AS [Document Total]  
 ,tblInvoiceDoc.intDept AS Department  
 ,tblInv.decMass AS [Dimension Mass]  
    ,tblInv.decVolumetricWeight AS [Dimension Volumetric Weight]  
 ,tblInv.strUnitOfMeasure AS [Dimension UOM]  
 ,tblInv.decW AS [Dimension Width]
 ,tblInv.decH AS [Dimension Height]
    ,tblInv.decD AS [Dimension Depth]  
 ,tblInv.decCube AS [Dimension Cube]  
 ,tblInv.decFactor AS [Dimension Factor]  
 ,tblInvoiceDocDT.decLineTaxAmt AS [Line Tax Amount]  
 ,tblInvoiceDocDT.decLineTotExc + tblInvoiceDocDT.decLineTaxAmt AS [Line Total Incl]  
 ,tblInvoiceDocDT.decPriceEaExc AS [Unit Price Excl]   
 ,tblInvoiceDocDT.decPriceEaInc AS [Unit Price Incl]   
 ,tblInvoiceDocDT.decLineDiscPerc AS [Line Disc Perc]   
 ,tblInvoiceDocDT.decLineDiscAmt AS [Line Disc Amount]  
 ,tblInvoiceDocDT.decLineDiscAmtF AS [Line Disc Amount Foreign]  
 ,tblInvoiceDocDT.decLineTotExc AS [Line Total Excl]  
 ,tblInvoiceDocDT.decPriceEaExcF as [Unit Price Foreign]  
 ,tblInvoiceDocDT.decLineTotExcF [Line Total Foreign]  
 ,tblInvoiceDocDT.decTotIncTaxF as [Line Tax Amount Foreign]  
 ,tblInv.strSubCategory as [Item SubCategory]  
 ,tblInvCat.strDesc as [Inventory Category Description]  
 ,tblInvSubCat.strDesc as [SubCategory Description]
 ,tblInv.strSubCategoryGroup as [Item SubCategory Group] 
 ,tblInvGroupSubCat.strDesc as [Item SubCategory Group Description]   
 ,ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) AS [Cost (Last Received Cost)]
 ,dbo.tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) AS [Profit (Last Received Cost)]
 ,CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2)) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18,2))  AS [GP Margin (Last Received Cost) (%)]
 ,CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) AND (ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2)) / ROUND((ISNULL(dbo.tblInvoiceDocDT.decLastPPUnit, 0) * dbo.tblInvoiceDocDT.decQty),2) ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18,2)) AS [GP Markup (Last Received Cost) (%)]
 ,ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) AS [Cost (Standard Cost)]
 ,dbo.tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) AS [Profit (Standard Cost)]
 ,CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (tblInvoiceDocDT.decLineTotExc <> 0) AND (ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2)) / tblInvoiceDocDT.decLineTotExc ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18,2))  AS [GP Margin (Standard Cost) (%)]
 ,CAST(ROUND((CASE WHEN dbo.tblInv.intType = 1 THEN CASE WHEN (ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) AND (ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) <> 0) THEN (tblInvoiceDocDT.decLineTotExc - ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2)) / ROUND((ISNULL(dbo.tblInvoiceDocDT.decStandardCost, 0) * dbo.tblInvoiceDocDT.decQty),2) ELSE 0 END ELSE 1 END) * 100, 2) AS decimal(18,2)) AS [GP Markup (Standard Cost) (%)]
 ,tblCustomerCat.strDesc as [Customer Category Description]
 ,tblCustomers.dteSince as [Customer Since Date]
 ,tblInvoiceDoc.strField1
 ,tblInvoiceDoc.strField2
 ,tblInvoiceDoc.strField3
 ,tblInvoiceDoc.strField4
 ,tblInvoiceDoc.strField5
 ,tblInvoiceDoc.strField6
 ,tblInvoiceDoc.strField7
 ,tblInvoiceDoc.strField8
 ,tblInvoiceDoc.strField9
 ,tblInvoiceDoc.strField10
 ,tblInvoiceDoc.strField11
 ,tblInvoiceDoc.strField12
 ,tblInvoiceDoc.dteField13
 ,tblInvoiceDoc.dteField14
 ,tblCustomers.strCountry as [Customer Country]
 ,tblCustomers.strCountryCode as [Customer Country Code]
FROM tblInvoiceDocDT  
INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID  
INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber  
LEFT JOIN tblInvExt On tblInv.strPartNumber = tblInvExt.strPartNumber AND tblinvExt.strLocName = tblInvoiceDocDT.strLocation  
INNER JOIN tblCustomers ON tblInvoiceDoc.strCustName = tblCustomers.strCustName  
LEFT JOIN tblInvCat ON tblInvCat.strCategory = tblInv.strCategory  
LEFT JOIN tblInvSubCat ON tblInvSubCat.strCategory = tblInv.strSubCategory And tblInvSubCat.strParentCategory = tblInv.strCategory
LEFT JOIN tblInvGroupSubCat ON tblInvGroupSubCat.strCategory = tblInv.strSubCategoryGroup And tblInvGroupSubCat.strParentSubCategory=tblInv.strSubCategory And tblInvGroupSubCat.strParentCategory = tblInv.strCategory
LEFT JOIN tblCustomerCat on tblCustomers.strCustCategory=tblCustomerCat.strCustCategory
WHERE (tblInvoiceDocDT.bitDiscountTax = 0)
and   
(  
case when isnull(@strDateFilter,'') ='' and @strDateFilterCriteria='Today' then NULL   
  when @strDateFilter='Transaction Date' and @strDateFilterCriteria !='All' then  cast(tblInvoiceDoc.dteJournalDate as date)   
  when @strDateFilter='Required Date' and @strDateFilterCriteria !='All' then cast(tblInvoiceDoc.dteRequired as date)  
     else CAST(@dateFromDate as date) end     
  between  
   cast(@dateFromDate as date) and   
   cast( @dateToDate as date))) as Test

Declare @field1 as nvarchar(Max)= (select top(1) strRecDoc1 from tblOptFields)
Declare @field2 as nvarchar(Max)= (select top(1) strRecDoc2 from tblOptFields)
Declare @field3 as nvarchar(Max)= (select top(1) strRecDoc3 from tblOptFields)
Declare @field4 as nvarchar(Max)= (select top(1) strRecDoc4 from tblOptFields)
Declare @field5 as nvarchar(Max)= (select top(1) strRecDoc5 from tblOptFields)
Declare @field6 as nvarchar(Max)= (select top(1) strRecDoc6 from tblOptFields)
Declare @field7 as nvarchar(Max)= (select top(1) strRecDoc7 from tblOptFields)
Declare @field8 as nvarchar(Max)= (select top(1) strRecDoc8 from tblOptFields)
Declare @field9 as nvarchar(Max)= (select top(1) strRecDoc9 from tblOptFields)
Declare @field10 as nvarchar(Max)= (select top(1) strRecDoc10 from tblOptFields)
Declare @field11 as nvarchar(Max)= (select top(1) strRecDoc11 from tblOptFields)
Declare @field12 as nvarchar(Max)= (select top(1) strRecDoc12 from tblOptFields)
Declare @field13 as nvarchar(Max)= (select top(1) strRecDoc13 from tblOptFields)
Declare @field14 as nvarchar(Max)= (select top(1) strRecDoc14 from tblOptFields)

if LEN(@field1) > 0
begin
	set @field1 = CONCAT(@field1,' (Optional)')
	EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField1 ' , @field1 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField1' , 'Field 1 (Optional)' , 'COLUMN'
end

if LEN(@field2) >0
begin
set @field2 = CONCAT(@field2,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField2 ' , @field2 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField2' , 'Field 2 (Optional)' , 'COLUMN'
end

if LEN(@field3) >0
begin
set @field3 = CONCAT(@field3,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField3 ' , @field3 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField3' , 'Field 3 (Optional)' , 'COLUMN'
end

if LEN(@field4) >0
begin
set @field4 = CONCAT(@field4,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField4 ' , @field4 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField4' , 'Field 4 (Optional)' , 'COLUMN'
end

if LEN(@field5) >0
begin
set @field5 = CONCAT(@field5,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField5 ' , @field5 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField5' , 'Field 5 (Optional)' , 'COLUMN'
end

if LEN(@field6) >0
begin
set @field6 = CONCAT(@field6,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField6 ' , @field6 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField6' , 'Field 6 (Optional)' , 'COLUMN'
end

if LEN(@field7) >0
begin
set @field7 = CONCAT(@field7,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField7 ' , @field7 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField7' , 'Field 7 (Optional)' , 'COLUMN'
end

if LEN(@field8) >0
begin
set @field8 = CONCAT(@field8,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField8 ' , @field8 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField8' , 'Field 8 (Optional)' , 'COLUMN'
end

if LEN(@field9) >0
begin
set @field9 = CONCAT(@field9,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField9 ' , @field9 , 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField9' , 'Field 9 (Optional)' , 'COLUMN'
end

if LEN(@field10) >0
begin
set @field10 = CONCAT(@field10,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField10' , @field10, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField10' , 'Field 10 (Optional)' , 'COLUMN'
end

if LEN(@field11) >0
begin
set @field11 = CONCAT(@field11,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField11' , @field11, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField11' , 'Field 11 (Optional)' , 'COLUMN'
end

if LEN(@field12) >0
begin
set @field12 = CONCAT(@field12,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField12' , @field12, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.strField12' , 'Field 12 (Optional)' , 'COLUMN'
end

if LEN(@field13) >0
begin
set @field13 = CONCAT(@field13,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField13' , @field13, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField13' , 'Field 13 (Optional)' , 'COLUMN'
end

if LEN(@field14) >0
begin
set @field14 = CONCAT(@field14,' (Optional)')
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField14' , @field14, 'COLUMN'
end
else
begin
EXEC sys.SP_RENAME 'Temp_SalesAnalysis.dteField14' , 'Field 14 (Optional)' , 'COLUMN'
end

IF @CategoryFilter = 1 and @SubCategoryFilter = 0 and @SubCategoryGroupFilter = 0 and @SubCategoryGroupItemFilter = 0
	SELECT SUM(Revenue) AS Revenue, SUM(Cost) AS Cost, SUM(Qty) AS Qty, SUM(Profit) AS Profit, 
		[Item Code] AS ItemName, 
		(SELECT TOP 1 strDesc FROM tblInv WHERE strPartNumber = [Item Code]) AS ItemNameDescription
	FROM Temp_SalesAnalysis
	WHERE [Item Category] IS NULL
	GROUP BY [Item Code]

IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 0 and @SubCategoryGroupItemFilter = 0
	SELECT SUM(Revenue) AS Revenue, SUM(Cost) AS Cost, SUM(Qty) AS Qty, SUM(Profit) AS Profit, 
		[Item Code] AS ItemName, 
		(SELECT TOP 1 strDesc FROM tblInv WHERE strPartNumber = [Item Code]) AS ItemNameDescription
	FROM Temp_SalesAnalysis
	WHERE [Item Category] = @strCategory and [Item SubCategory] is null
	GROUP BY [Item Code]

IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 0
	SELECT SUM(Revenue) AS Revenue, SUM(Cost) AS Cost, SUM(Qty) AS Qty, SUM(Profit) AS Profit, 
		[Item Code] AS ItemName, 
		(SELECT TOP 1 strDesc FROM tblInv WHERE strPartNumber = [Item Code]) AS ItemNameDescription
	FROM Temp_SalesAnalysis
	WHERE [Item Category] = @strCategory and [Item SubCategory] = @strSubCategory and [Item SubCategory Group] is null
	GROUP BY [Item Code]

IF @CategoryFilter = 1 and @SubCategoryFilter = 1 and @SubCategoryGroupFilter = 1 and @SubCategoryGroupItemFilter = 1
	SELECT SUM(Revenue) AS Revenue, SUM(Cost) AS Cost, SUM(Qty) AS Qty, SUM(Profit) AS Profit, 
		[Item Code] AS ItemName, 
		(SELECT TOP 1 strDesc FROM tblInv WHERE strPartNumber = [Item Code]) AS ItemNameDescription
	FROM Temp_SalesAnalysis
	WHERE [Item Category] = @strCategory and [Item SubCategory] = @strSubCategory and [Item SubCategory Group] = @strSubCategoryGroup
	GROUP BY [Item Code]

drop table Temp_SalesAnalysis

END
GO


CREATE PROCEDURE InsertProductionScheduleDT
@ProdNumber as varchar(50),
@PartNumber as varchar(50),
@LocName as varchar(10),
@ReqQty as decimal,
@Exploded as bit
AS
BEGIN
--INSERT INTO tblProductionScheduleDT VALUES (@ProdNumber, @PartNumber, @LocName, @ReqQty, @Exploded)
INSERT INTO tblProductionScheduleDT (strProdNumber, strPartNumber, strLocName, decReqQty, bitExploded) 
VALUES (@ProdNumber, @PartNumber, @LocName, @ReqQty, @Exploded)
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInventoryDataList] 
@SQDocNumber as nvarchar(50),
@SQLocationCriteria as nvarchar(Max)
AS
BEGIN
SELECT *
FROM dbo.fnTblInvLocations(@SQLocationCriteria) tblInv
WHERE strPartNumber IN (
SELECT DISTINCT strPartNumber
FROM tblInvTrfDocDT
WHERE strTrfDocID = @SQDocNumber
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInventoryExtBinData] 
@SQstrLocationName as nvarchar(10),
@SQstrPartNumber as nvarchar(50),
@SQBinCode as nvarchar(50)
AS
BEGIN
SELECT IBE.lngBinID as BinId
,ILB.strBinCode as BinCode
,ILB.strDescription as [Description]
,IBE.strLocName as LocName
,IBE.strPartNumber as PartNumber
,decMaximumQty as MaximumQty
,decAvail as Avail
,decOnHand as OnHand
,0 AS IssueQty
FROM tblInvExtBin IBE
INNER JOIN tblInvLocBin ILB ON ILB.strLocName = IBE.strLocName
AND ILB.lngID = IBE.lngBinID
WHERE IBE.strLocName = @SQstrLocationName
AND IBE.strPartNumber = @SQstrPartNumber
AND ILB.strBinCode = @SQBinCode
ORDER BY IBE.lngBinID
,IBE.strLocName;
END
GO


----------------------------------------------------
Create PROCEDURE [dbo].[GetInventoryExtDataList] 
@SQstrLocName as nvarchar(10),
@SQstrPartNumber as nvarchar(50)
AS
BEGIN
SELECT tblInvExt.strLocName as LocName
,tblInvExt.decAvail as Avail
,tblInvExt.decOnHand as OnHand
,tblInvLoc.intType as LocType
,ISNULL((
SELECT COUNT(tblInvLocSec.strLocName)
FROM tblInvLocSec
WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName
), 0) as LocSecCount
,ISNULL(tblInvLocSec.strUserName, '') as UserName
,tblInvExt.decAlloc as Alloc
,tblInvExt.decOnOrder as OnOrder
,tblInvExt.decManuf as Manuf
,(
SELECT SUM(QTY)
FROM (
SELECT (ISNULL(SUM(DT.decQtyRemaining), 0) * - 1) AS QTY
FROM tblInvTrfOrdDoc DOC
INNER JOIN tblInvTrfOrdDocDT DT ON DOC.strInvTrfOrdDocID = DT.strInvTrfOrdDocID
WHERE DOC.bitCleared = 0
AND DOC.strLocName = @SQstrLocName
AND DT.strPartNumber = @SQstrPartNumber
UNION ALL
SELECT ISNULL(SUM(DT.decQtyRemaining), 0) AS QTY
FROM tblInvTrfOrdDoc DOC
INNER JOIN tblInvTrfOrdDocDT DT ON DOC.strInvTrfOrdDocID = DT.strInvTrfOrdDocID
WHERE DOC.bitCleared = 0
AND DOC.strToLocName = @SQstrLocName
AND DT.strPartNumber = @SQstrPartNumber
) AS Result1
) AS TransferOrder
,(
SELECT SUM(QTY)
FROM (
SELECT (ISNULL(SUM(DT.decQty), 0) * - 1) AS QTY
FROM tblInvTrfDoc DOC
INNER JOIN tblInvTrfDocDT DT ON DOC.strTrfDocID = DT.strTrfDocID
WHERE bitWarehouseTrf = 1
AND bitCleared = 0
AND strFromLoc = @SQstrLocName
AND DT.strPartNumber = @SQstrPartNumber
UNION ALL
SELECT ISNULL(SUM(DT.decQty), 0) AS QTY
FROM tblInvTrfDoc DOC
INNER JOIN tblInvTrfDocDT DT ON DOC.strTrfDocID = DT.strTrfDocID
WHERE bitWarehouseTrf = 1
AND bitCleared = 0
AND strToLoc = @SQstrLocName
AND DT.strPartNumber = @SQstrPartNumber
) AS Result2
) AS GoodsInTransit
FROM tblInvExt
INNER JOIN tblInvLoc ON tblInvExt.strLocName = tblInvLoc.strLocName
LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName
WHERE tblInvExt.strPartNumber = @SQstrPartNumber
AND tblInvExt.strLocName = @SQstrLocName;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInventorySerialExtList] 
@SQstrPartNumber as nvarchar(50),
@SQstrSerialNumber as nvarchar(100)
AS
BEGIN
SELECT intStatus as [Status]
,strLocName as LocationName
FROM tblInvSerialExt
WHERE strPartNumber = @SQstrPartNumber
AND strSerialNumber = @SQstrSerialNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInventoryTrfDocData] @SQDocNumber AS NVARCHAR(50)  
AS  
BEGIN  
 SELECT tblInvTrfDoc.strTrfDocID  
  ,tblInvTrfDoc.strFromLoc  
  ,tblInvTrfDoc.strToLoc  
  ,tblInvTrfDoc.dteJournalDate  
  ,tblInvTrfDoc.strComment  
  ,tblInvTrfDoc.dteRequiredDate  
  ,tblInvTrfDoc.decTotal  
  ,tblInvTrfDocDT.strTrfDocID  
  ,tblInvTrfDocDT.strPartNumber  
  ,tblInv.strDesc  
  ,tblInvTrfDocDT.decQty  
  ,tblInvTrfDocDT.lngFromBinID  
  ,loc1.strBinCode AS strFromBinCode  
  ,tblInvTrfDocDT.lngToBinID  
  ,loc2.strBinCode AS strToBinCode  
  ,tblInvTrfDocDT.decUnitCost  
  ,tblInvTrfDocDT.decAmount  
  ,cast(ISNULL(tblInvTrfOrdDocDT.decQty, 0) AS NVARCHAR) AS decTotalOrderQty  
  ,cast(ISNULL(tblInvTrfOrdDocDT.decQtyRemaining, 0) AS NVARCHAR) AS decOpenOrderQty  
  ,cast(tblInvTrfDocDT.decQty AS NVARCHAR) AS decDeliveredOrderQty  
  ,tblInvTrfDocDT.intLineNo AS [intLineNo]  
 FROM tblInvTrfDoc  
 INNER JOIN tblInvTrfDocDT ON tblInvTrfDoc.strTrfDocID = tblInvTrfDocDT.strTrfDocID  
 INNER JOIN tblInv ON tblInvTrfDocDT.strPartNumber = tblInv.strPartNumber  
 INNER JOIN tblInvLocBin AS loc1 ON tblInvTrfDocDT.lngFromBinID = loc1.lngID  
 INNER JOIN tblInvLocBin AS loc2 ON tblInvTrfDocDT.lngToBinID = loc2.lngID  
 LEFT JOIN tblInvTrfOrdDocDT ON tblInvTrfOrdDocDT.strPartNumber = tblInvTrfDocDT.strPartNumber  
  AND tblInvTrfOrdDocDT.intLineNo = tblInvTrfDocDT.intBTOLineNo  
  AND tblInvTrfOrdDocDT.strInvTrfOrdDocID = tblInvTrfDoc.strInvTrfOrdDocID  
 WHERE tblInvTrfDoc.strTrfDocID = @SQDocNumber;  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvExtBin] 
@SQPart as nvarchar(50),
@SQLocName as nvarchar(10)
AS
BEGIN
SELECT tblInvLocBin.strBinCode
,tblInvExtBin.lngBinID
FROM tblInvExtBin
INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
WHERE tblInvExtBin.strPartNumber = @SQPart
AND tblInvExtBin.strLocName = @SQLocName
AND tblInvExtBin.bitDefault = 1;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvExtBinDataByBinLocName] 
@SQPart as nvarchar(50),
@SQLocName as nvarchar(10),
@SQBinLocName as nvarchar(10)
AS
BEGIN
SELECT tblInvExtBin.bitAllowed
,tblInvLocBin.strBinCode
,tblInvExtBin.lngBinID
FROM tblInvExtBin
INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
WHERE tblInvExtBin.strPartNumber = @SQPart
AND tblInvExtBin.strLocName = @SQLocName
AND tblInvLocBin.strBinCode = @SQBinLocName;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvLocBinSec] 
@SQLocName as nvarchar(10),
@SQBinLocCode as nvarchar(50)
AS
BEGIN
SELECT COUNT(strUserName)
FROM tblInvLocBinSec
WHERE strLocName = @SQLocName
AND strBinCode = @SQBinLocCode;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvLocBinSecByUserName] 
@SQLocName as nvarchar(10),
@SQBinLocCode as nvarchar(50),
@SQUserID as nvarchar(20)
AS
BEGIN
SELECT COUNT(strUserName)
FROM tblInvLocBinSec
WHERE strLocName = @SQLocName
AND strUserName = @SQUserID
AND strBinCode = @SQBinLocCode;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvLotExtQty] 
@SQPartNumber as nvarchar(50)
,@SQLotNumber as nvarchar(100)
,@SQLocName as nvarchar(10)
,@SQlngBinId as bigint
AS
BEGIN
SELECT decQty as Quantity
FROM tblInvLotExt
WHERE strPartNumber = @SQPartNumber
AND strLotNumber = @SQLotNumber
AND strLocName = @SQLocName
AND lngBinId = @SQlngBinId;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvPartNumberCount] 
@SQPart as nvarchar(50),
@SQBarCode as nvarchar(300),
@SQLocName as nvarchar(10)
AS
BEGIN
SELECT COUNT(tblInv.strPartNumber)
FROM tblInv
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
WHERE (
tblInv.strPartNumber = @SQPart
OR tblInv.strBarCode = @SQBarCode
OR tblInv.strBarCode2 = @SQBarCode
)
AND (tblInv.intType = 1)
AND (tblInv.bitInactive = 0)
AND (tblInvExt.bitInactive = 0)
AND (tblInvExt.strLocName = @SQLocName);
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvSerialTypeDataByPartNum] @SQPart AS NVARCHAR(50)
AS
BEGIN
	SELECT tblInv.bitInvSerialType AS IsInvSerialType
		,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
	FROM tblInv
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE (
			tblInv.strPartNumber = @SQPart
			OR tblInv.strBarCode = @SQPart
			)
		AND tblInv.intType = 1
		AND tblInv.bitInactive = 0;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvSerialTypesDataList] 
@SQPart as nvarchar(50)
AS
BEGIN
SELECT ISNULL(tblInvSerialTypes.intType, 0)
,ISNULL(tblInvSerialTypes.bitTrackExpiryDate, 0)
,tblInv.strBuyUnit
,ISNULL(tblInvSerialTypes.strInvSerialType, '')
FROM tblInv
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblInv.strPartNumber = @SQPart;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvTransferLoggedUserData] @SQDocID AS NVARCHAR(50)
AS
BEGIN
	SELECT *
	FROM tblInvTrfDoc
	WHERE strTrfDocID = @SQDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvTrfDocData] 
@SQDocNumber as nvarchar(50)
AS
BEGIN
SELECT tblInvTrfDocDT.strTrfDocID AS strAdjDocID
,tblInvTrfDocDT.intLineNo
,tblInvTrfDocDT.strPartNumber AS PartNumber
,tblInvTrfDocDT.decQty AS Quantity
,tblInv.strDesc AS Description
,tblInvTrfDocDT.decUnitCost AS UnitCost
,tblInvTrfDocDT.decAmount AS Amount
,tblInvTrfDoc.strUserName
,lngFromBinId
,lngToBinId
,strFromBinCode = (
SELECT strBinCode
FROM tblInvLocBin
WHERE lngId = tblInvTrfDocDT.lngFromBinId
)
,strToBinCode = (
SELECT strBinCode
FROM tblInvLocBin
WHERE lngId = tblInvTrfDocDT.lngToBinId
)
FROM tblInvTrfDoc
INNER JOIN tblInvTrfDocDT ON tblInvTrfDoc.strTrfDocID = tblInvTrfDocDT.strTrfDocID
INNER JOIN tblInv ON tblInvTrfDocDT.strPartNumber = tblInv.strPartNumber
WHERE tblInvTrfDocDT.strTrfDocID = @SQDocNumber
ORDER BY tblInvTrfDocDT.intLineNo;
END
GO
----------------------------------------------------
CREATE PROCEDURE [GetInvTrfDocDTBinIdCount] 
@SQstrTrfDocID as nvarchar(50)
AS
BEGIN
SELECT COUNT(lngToBinID)
FROM tblInvTrfDocDT
WHERE strTrfDocID = @SQstrTrfDocID
AND lngToBinID IN (
SELECT BIN.lngID
FROM tblInvLocBin BIN
CROSS JOIN tblCoOpts CO
WHERE BIN.strLocName = CO.strManPromtekLoc
AND BIN.strBinCode = CO.strManPromtekBinLoc
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvTrfDocDTSerialData] 
@SQDocNumber as nvarchar(50)
AS
BEGIN
SELECT tblInvTrfDocDTSerial.strTrfDocID AS strAdjDocID
,tblInvTrfDocDTSerial.intLineNo
,tblInvTrfDocDTSerial.strSerialNumber
,tblInvTrfDocDTSerial.decQty
,tblInvTrfDocDTSerial.strUnit
,tblInvTrfDocDTSerial.lngID
,tblInvTrfDocDTSerial.bitExpiryDate
,tblInvTrfDocDTSerial.dteExpiryDate
,ISNULL(tblInvSerialExt.bitDimensionExist, 0) AS bitDimensionExist
,ISNULL(tblInvSerialExt.strDimension, '') AS strDimension
FROM tblInvTrfDocDTSerial
INNER JOIN tblInvTrfDocDT ON tblInvTrfDocDTSerial.strTrfDocID = tblInvTrfDocDT.strTrfDocID
AND tblInvTrfDocDTSerial.intLineNo = tblInvTrfDocDT.intLineNo
LEFT JOIN tblInvSerialExt ON tblInvTrfDocDT.strPartNumber = tblInvSerialExt.strPartNumber
AND tblInvTrfDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
INNER JOIN tblInv ON tblInvTrfDocDT.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE tblInvTrfDocDTSerial.strTrfDocID = @SQDocNumber
AND tblInvSerialTypes.bitPrintInv = 1
ORDER BY tblInvTrfDocDTSerial.intLineNo;
END
GO

----------------------------------------------------
CREATE PROCEDURE dbo.GetLotNumberCount 
@SQPartNumber as nvarchar(50),
@SQLotNumber as nvarchar(100),
@SQLocName as nvarchar(10),
@SQlngBinId as bigint
AS
BEGIN
SELECT COUNT(strLotNumber) AS count
FROM tblInvLotExt
WHERE strPartNumber = @SQPartNumber
AND strLotNumber = @SQLotNumber
AND strLocName = @SQLocName
AND lngBinId = @SQlngBinId;
END
GO
----------------------------------------------------
CREATE PROCEDURE [GetMaxXMLRXNumber] 
AS
BEGIN
SELECT ISNULL(MAX(lngXMLRXNumber), 0) + 1
FROM tblLastIDs;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetSerialNumberCount] 
@SQPartNumber as nvarchar(50)
,@SQSerialNumber as nvarchar(100)
AS
BEGIN
SELECT COUNT(strSerialNumber) as Count
FROM tblInvSerialExt
WHERE strPartNumber = @SQPartNumber
AND strSerialNumber = @SQSerialNumber;
END
Go

----------------------------------------------------
CREATE PROCEDURE [SaveFTPTracking] 
@SQModule as nvarchar(2)
,@SQStatus as nvarchar(20)
,@SQFileName as nvarchar(250)
,@SQDesc as nvarchar(250)
,@SQUserName as nvarchar(20)
AS
BEGIN
INSERT INTO tblFTPTracking (
dteSystemDateTime
,strModule
,strStatus
,strFileName
,strDesc
,strUserName
)
VALUES (
GetDate()
,@SQModule
,@SQStatus
,@SQFileName
,@SQDesc
,@SQUserName
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveInvLotExt] 
@SQQty as money
,@SQUpdatedDate as smalldatetime
,@SQbitExpiryDate as bit
,@SQdteExpiryDate as smalldatetime
,@SQPartNumber as nvarchar(50)
,@SQLotNumber as nvarchar(100)
,@SQLocName as nvarchar(10)
,@SQlngBinId as bigint
AS
BEGIN
INSERT INTO tblInvLotExt
VALUES (
@SQPartNumber
,@SQLotNumber
,@SQLocName
,@SQQty
,@SQbitExpiryDate
,@SQdteExpiryDate
,@SQUpdatedDate
,@SQlngBinID
,GetDate()
);
END
GO
----------------------------------------------------
CREATE PROCEDURE [SaveInvSerialExtData] 
@SQPartNumber as nvarchar(50)
,@SQSerialNumber as nvarchar(100)
,@SQLocName as nvarchar(10)
,@SQQty as money
,@SQStatus as int
,@SQDocID as nvarchar(50)
,@SQUpdatedDate as smalldatetime
,@SQDimensionExist as bit
,@SQDimension as nvarchar(max)
,@SQlngBinID as bigint
AS
BEGIN
INSERT INTO tblInvSerialExt
VALUES (
@SQPartNumber
,@SQSerialNumber
,@SQLocName
,@SQQty
,@SQStatus
,@SQDocID
,@SQUpdatedDate
,@SQDimensionExist
,@SQDimension
,@SQlngBinID
,GetDate()
);
END
GO
----------------------------------------------------
CREATE PROCEDURE [SaveInvTrfDocData] 
@SQstrTrfDocID as nvarchar(50)
,@SQintTrfDocID as bigint
,@SQlngInvTrackID as bigint
,@SQlngJourID as bigint
,@SQdteSystemDate as smalldatetime
,@SQdteJournalDate as smalldatetime
,@SQstrUserName as nvarchar(20)
,@SQstrFromLoc as nvarchar(10)
,@SQstrToLoc as nvarchar(10) 
,@SQstrComment as nvarchar(50)
,@SQdecTotal as money
,@SQintDept as int
,@SQbitWarehouseTrf as bit
,@SQdteRequiredDate as smalldatetime
,@SQintAccount as nvarchar(30)
,@SQbitCleared as bit
,@SQstrTrfRecDocID as nvarchar(50)
,@SQstrInvTrfOrdDocID as nvarchar(100)
AS
BEGIN
INSERT INTO tblInvTrfDoc
VALUES (
@SQstrTrfDocID
,@SQintTrfDocID
,@SQlngInvTrackID
,@SQlngJourID
,@SQdteSystemDate
,@SQdteJournalDate
,@SQstrUserName
,@SQstrFromLoc
,@SQstrToLoc
,@SQstrComment
,@SQdecTotal
,@SQintDept
,NULL
,@SQbitWarehouseTrf
,@SQdteRequiredDate
,@SQintAccount
,@SQbitCleared
,@SQstrTrfRecDocID
,@SQstrInvTrfOrdDocID
);
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[SaveInvTrfDocDTData] 
@SQstrAdjDocID as nvarchar(50)
,@SQintLineNo as int
,@SQstrPartNumber as nvarchar(50)
,@SQdecQty as money
,@SQdecUnitCost as money
,@SQdecAmount as money
,@SQlngFromBinID as bigint
,@SQlngToBinID as bigint
,@SQstrStockUnit as nvarchar(15)
,@SQintBTOLineNo as int
,@SQstrConversionType Nvarchar(MAX)
,@SQdecConversionFactor as money
,@SQstrStockUnitDefault as Nvarchar(MAX)
AS
BEGIN
INSERT INTO tblInvTrfDocDT
(strTrfDocID, intLineNo, strPartNumber, decQty, decUnitCost, decAmount, lngFromBinID, lngToBinID,strStockUnit, intBTOLineNo,strConversionType,decConversionFactor,strStockUnitDefault)
VALUES (
@SQstrAdjDocID
,@SQintLineNo
,@SQstrPartNumber
,@SQdecQty
,@SQdecUnitCost
,@SQdecAmount
,@SQlngFromBinID
,@SQlngToBinID
,@SQstrStockUnit
,@SQintBTOLineNo
,@SQstrConversionType
,@SQdecConversionFactor
,@SQstrStockUnitDefault
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveInvTrfDocDTSerialData] 
@SQDocID as nvarchar(50)
,@SQintLineNo as int
,@SQstrSerialNumber as nvarchar(100)
,@SQdecQty as money
,@SQstrUnit as nvarchar(15)
,@SQbitExpiryDate as bit
,@SQdteExpiryDate as smalldatetime
,@SQintSerialLotType as int
AS
BEGIN
INSERT INTO tblInvTrfDocDTSerial (
strTrfDocID
,intLineNo
,strSerialNumber
,decQty
,strUnit
,bitExpiryDate
,dteExpiryDate
,intSerialLotType
)
VALUES (
@SQDocID
,@SQintLineNo
,@SQstrSerialNumber
,@SQdecQty
,@SQstrUnit
,@SQbitExpiryDate
,@SQdteExpiryDate
,@SQintSerialLotType
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveSerialNumberTracking] 
@SQstrPartNumber as nvarchar(50)
,@SQstrSerialNumber as nvarchar(100)
,@SQstrUserName as nvarchar(20)
,@SQdteUpdatedDate as smalldatetime
,@SQintType as tinyint
,@SQstrDocID as nvarchar(50)
,@SQintLineNo as int
,@SQdecQty as money
,@SQstrLocation as nvarchar(10)
,@SQintStatus as tinyint
,@SQbitExpiryDate as bit
,@SQdteExpiryDate as smalldatetime
,@SQlngBinID as bigint
AS
BEGIN
INSERT INTO tblSerialNumberTracking (
strPartNumber
,strSerialNumber
,strUserName
,dteUpdatedDate
,intType
,strDocID
,intLineNo
,decQty
,strLocation
,intStatus
,bitExpiryDate
,dteExpiryDate
,lngBinId
)
VALUES (
@SQstrPartNumber
,@SQstrSerialNumber
,@SQstrUserName
,@SQdteUpdatedDate
,@SQintType
,@SQstrDocID
,@SQintLineNo
,@SQdecQty
,@SQstrLocation
,@SQintStatus
,@SQbitExpiryDate
,@SQdteExpiryDate
,@SQlngBinID
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [UpdateInvLotExt]
@SQQty as money
,@SQUpdatedDate as smalldatetime
,@SQbitExpiryDate as bit
,@SQdteExpiryDate as smalldatetime
,@SQPartNumber as nvarchar(50)
,@SQLotNumber as nvarchar(100)
,@SQLocName as nvarchar(10)
,@SQlngBinId as bigint
AS
BEGIN
UPDATE tblInvLotExt
SET decQty = decQty + @SQQty
,dteUpdatedDate = @SQUpdatedDate
,bitExpiryDate = @SQbitExpiryDate
,dteExpiryDate = @SQdteExpiryDate
WHERE strPartNumber = @SQPartNumber
AND strLotNumber = @SQLotNumber
AND strLocName = @SQLocName
AND lngBinId = @SQlngBinId;
END
GO

----------------------------------------------------
CREATE PROCEDURE [UpdateInvLotExtData]
@SQdecQty as money,
@SQstrPartNumber as nvarchar(50),
@SQstrLotNumber as nvarchar(100),
@SQstrLocName as nvarchar(10),
@SQlngBinId as bigint
AS
BEGIN
UPDATE tblInvLotExt
SET decQty = decQty + @SQdecQty
,dteUpdatedDate = GETDATE()
WHERE strPartNumber = @SQstrPartNumber
AND strLotNumber = @SQstrLotNumber
AND strLocName = @SQstrLocName
AND lngBinId = @SQlngBinId;
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateInvSerialExt] 
@SQQty as money
,@SQUpdatedDate as smalldatetime
,@SQPartNumber as nvarchar(50)
,@SQSerialNumber as nvarchar(100)
,@SQLocName as nvarchar(10)
,@SQlngBinId as bigint
,@SQStatus as int
,@SQDocID as nvarchar(50)
AS
BEGIN
UPDATE tblInvSerialExt
SET strLocName = @SQLocName
,decQty = @SQQty
,intStatus = @SQStatus
,strDocID = @SQDocID
,dteUpdatedDate = @SQUpdatedDate
,lngBinId = @SQlngBinId
WHERE strPartNumber = @SQPartNumber
AND strSerialNumber = @SQSerialNumber;
END
GO
----------------------------------------------------
CREATE PROCEDURE [UpdateInvSerialExtData] 
@SQstrLocName as nvarchar(10),
@SQdecQty as money,
@SQintStatus as int,
@SQstrDocID as nvarchar(50),
@SQlngBinId as bigint,
@SQstrPartNumber as nvarchar(50),
@SQstrSerialNumber as nvarchar(100)
AS
BEGIN
UPDATE tblInvSerialExt
SET strLocName = @SQstrLocName
,decQty = @SQdecQty
,intStatus = @SQintStatus
,strDocID = @SQstrDocID
,dteUpdatedDate = GETDATE()
,lngBinId = @SQlngBinId
WHERE strPartNumber = @SQstrPartNumber
AND strSerialNumber = @SQstrSerialNumber;
END
GO
----------------------------------------------------
CREATE PROCEDURE [UpdateInvTrfDoc] 
@SQstrFileName as nvarchar(250),
@SQstrTrfDocID as nvarchar(50)
AS
BEGIN
UPDATE tblInvTrfDoc
SET strFileName = @SQstrFileName
WHERE strTrfDocID = @SQstrTrfDocID;
END
GO
----------------------------------------------------


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManJobDataByDate](  
@SQTypeRV int,  
@SQStart DateTime,  
@SQEnd DateTime,  
@SQType int, 
@IsAll bit
)  
AS  
BEGIN  
if(@IsAll = 1)
begin
SELECT   
tblManJob.strJBDocID as JBDocID,   
tblManJob.dteJournalDate as JournalDate,   
CASE WHEN tblManJob.intType = @SQTypeRV THEN 'REV-' + tblManJobReversed.strJBDocID ELSE tblManJob.strReference END AS Reference,   
tblManJob.strCustName as CustomerNumber,   
tblManJob.strWCCode as WorkCenter,   
tblManJob.intType  as Type,  
tblMAnJob.strParentBOM as ParentBOM
FROM tblManJob LEFT JOIN tblManJobReversed ON tblManJob.strJBDocID = tblManJobReversed.strJBDocIDRev 
ORDER BY tblManJob.strJBDocID
end
else
begin
SELECT   
tblManJob.strJBDocID as JBDocID,   
tblManJob.dteJournalDate as JournalDate,   
CASE WHEN tblManJob.intType = @SQTypeRV THEN 'REV-' + tblManJobReversed.strJBDocID ELSE tblManJob.strReference END AS Reference,   
tblManJob.strCustName as CustomerNumber,   
tblManJob.strWCCode as WorkCenter,   
tblManJob.intType  as Type ,
tblMAnJob.strParentBOM as ParentBOM
FROM tblManJob LEFT JOIN tblManJobReversed ON tblManJob.strJBDocID = tblManJobReversed.strJBDocIDRev   
WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQEnd  
AND (tblManJob.intType = @SQType)  
ORDER BY tblManJob.strJBDocID  
end
END
GO
----------------------------------------------------


----------------------------------------------------
CREATE PROCEDURE [GetLatestNextLotNumberForJobClose] 
@SQPartNumber as nvarchar(50)
AS
BEGIN
SELECT Top 1 tblInv.strInvSerialType FROM tblInv Where strPartNumber=@SQPartNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetManClosedJobDataByDate]   
@SQStart as smalldatetime,  
@SQEnd as smalldatetime  
AS  
BEGIN  
SELECT DISTINCT tblManJobClose.strJBDocID as JBDocID  
,tblManJobClose.dteJournalDate as JournalDate  
,tblManJob.strReference as Reference  
,tblManJob.strCustName as CustomerNumber     
,tblManJobClose.lngJourID as lngJourID  
,tblManJob.intType as [Type]  
FROM tblManJobClose  
INNER JOIN tblManJob ON tblManJobClose.strJBDocID = tblManJob.strJBDocID  
WHERE (  
tblManJobClose.dteJournalDate BETWEEN @SQStart  
AND @SQEnd  
)  
ORDER BY tblManJobClose.strJBDocID  
,tblManJobClose.lngJourID DESC;  
END  
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[LoadListData]
as
Begin
SELECT tblAccountType.strAcctType as AcctType
,strCustomLabel as CustomLabel
,tblAccountType.intAcctTypeID as AcctTypeID
,tblAccountClass.intAcctClassID as AcctClassID
,strDefaultLabel as DefaultLabel
FROM tblAccountClass
INNER JOIN tblAccountType ON tblAccountClass.intAcctTypeID = tblAccountType.intAcctTypeID
end
Go
----------------------------------------------------
create procedure [dbo].[InvPriceListInsertUpdatePriceData]
@IsInsert as bit
,@IsNew as bit
,@Pricelist as nvarchar(20)
,@Description as nvarchar(50)
,@Inactive as bit
,@PriceIncl as bit
,@TaxCode as nvarchar(20) = null
,@InactiveAll as bit
,@OldPricelist as nvarchar(20) = null
as
Begin
if(@IsInsert = 1 and @IsNew =1)
Begin
INSERT INTO tblPriceData VALUES (@Pricelist,@Description,@Inactive,@PriceIncl,@TaxCode,GetDate())
End
else
Begin
UPDATE tblPriceData SET strPricelist = @Pricelist, strDesc = @Description, bitInactive = @InactiveAll, 
bitPriceIncl = @PriceIncl, strTaxCode = @TaxCode Where strPricelist = @OldPricelist ;
End
End
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[InvPriceListInsertUpdatePriceListsByDate]
@IsInsert as bit
,@Pricelist as nvarchar(20)
,@StartDate as DateTime
,@FinishDate as DateTime
,@Inactive as bit
,@uidPriceBasedID as uniqueidentifier
,@OldPricelist as nvarchar(20) = null
as
Begin
if(@IsInsert = 1)
INSERT INTO tblPriceListsByDate VALUES (@uidPriceBasedID, @Pricelist, @StartDate, @FinishDate,@Inactive,GetDate())
else
UPDATE tblPriceListsByDate SET strPricelist = @Pricelist, dteStartDate = @StartDate , dteFinishDate = @FinishDate, bitInactive = @Inactive 
Where strPricelist = @OldPricelist AND uidPriceBasedID = @uidPriceBasedID		      
end
Go

----------------------------------------------------
CREATE PROCEDURE [dbo].[InvPriceListInsertUpdatePricelists]
@IsInsert as bit
,@IsNotLinkToOtherPriceListByCategoryOrItem as bit
,@Pricelist as nvarchar (20) 
,@uidPriceBasedID as uniqueidentifier
,@OldPricelist as nvarchar (20) = null
,@PricelistType as int
,@Percentage as int
,@RoundPrices as int
,@UpdateSellingPrice as bit
,@OnlySellingPriceIncrease as bit
,@ShowZeroSellingPrice as bit
,@uidLinkPricelistId as uniqueidentifier
as 
Begin
if(@IsInsert = 1)
begin
if @IsNotLinkToOtherPriceListByCategoryOrItem = 1
INSERT INTO tblPricelists (uidPriceBasedID,strPricelist,intPriceListType,decPercentage,intRoundPrices,bitUpdateSellingPrice
,bitOnlySellingPriceIncrease,bitShowZeroSellingPrice,dteRowUpdated) VALUES (@uidPriceBasedID,@Pricelist,@PricelistType,@Percentage,
@RoundPrices,@UpdateSellingPrice,@OnlySellingPriceIncrease,
@ShowZeroSellingPrice,GetDate())
else
INSERT INTO tblPricelists (uidPriceBasedID,strPricelist,intPriceListType,decPercentage,intRoundPrices,bitUpdateSellingPrice
,bitOnlySellingPriceIncrease,bitShowZeroSellingPrice,dteRowUpdated,uidLinkPricelistId)VALUES (@uidPriceBasedID,@Pricelist,@PricelistType,@Percentage,@RoundPrices,@UpdateSellingPrice,
@OnlySellingPriceIncrease,@ShowZeroSellingPrice,GetDate(),@uidLinkPricelistId)
end
else
if @IsNotLinkToOtherPriceListByCategoryOrItem = 1
UPDATE tblPricelists SET strPricelist = @Pricelist,
intPricelistType = @PricelistType,decPercentage = @Percentage,intRoundPrices = @RoundPrices,
bitUpdateSellingPrice = @UpdateSellingPrice,bitOnlySellingPriceIncrease = @OnlySellingPriceIncrease,
bitShowZeroSellingPrice = @ShowZeroSellingPrice WHERE strPricelist = @OldPricelist  AND uidPriceBasedID = @uidPriceBasedID
else
UPDATE tblPricelists SET strPricelist = @Pricelist,intPricelistType = @PricelistType,
decPercentage = @Percentage,intRoundPrices = @RoundPrices,bitUpdateSellingPrice = @UpdateSellingPrice,
bitOnlySellingPriceIncrease = @OnlySellingPriceIncrease,bitShowZeroSellingPrice = @ShowZeroSellingPrice,
uidLinkPricelistId = @uidLinkPricelistId WHERE strPricelist = @OldPricelist  AND uidPriceBasedID = @uidPriceBasedID
end
Go
----------------------------------------------------
CREATE PROCEDURE [dbo].[InvPriceListInsertUpdateinvPriceTableType]
@invPriceUpdateTableType as InvPriceUpdatesTableType READONLY
,@IsInsert as bit
,@IsPromotionalDataAvailable as bit
,@IsCashOnTenderDataAvailable as bit
,@OldPricelist as nvarchar(20) = null
as
if(@IsInsert=1)
INSERT INTO tblInvPrice (uidPriceBasedID,strPartNumber,strPricelist,decSelling,decEstLocalCost,decEstImportCost
,bitPromotionalPricing,dtePromotionalStartDate,dtePromotionalEndDate,decPromotionalPrice,bitCashPricing,
decCashPrice,strUnit,bitStockUnit) 
(Select * From @invPriceUpdateTableType T);
else
if(@IsPromotionalDataAvailable = 1 Or @IsCashOnTenderDataAvailable = 1)
Begin
if(@IsPromotionalDataAvailable = 1 and @IsCashOnTenderDataAvailable = 1)
UPDATE tblInvPrice SET decSelling = t.decSelling, decEstLocalCost = t.decEstLocalCost, decEstImportCost = T.decEstImportCost,
strPricelist = t.strPricelist,bitPromotionalPricing=T.bitPromotionalPricing,dtePromotionalStartDate=T.dtePromotionalStartDate,
dtePromotionalEndDate=T.dtePromotionalEndDate,decPromotionalPrice=T.decPromotionalPrice
,bitCashPricing = T.bitCashPricing,decCashPrice = T.decCashPrice
from @invPriceUpdateTableType T
WHERE tblInvPrice.strPartNumber = T.strPartNumber AND tblInvPrice.strPricelist = @OldPricelist AND tblInvPrice.uidPriceBasedID = T.uidPriceBasedID
and tblInvPrice.strUnit=T.strUnit
else
if(@IsPromotionalDataAvailable = 1)
UPDATE tblInvPrice SET decSelling = T.decSelling, decEstLocalCost = t.decEstLocalCost, decEstImportCost = T.decEstImportCost,
strPricelist = T.strPricelist ,bitPromotionalPricing=T.bitPromotionalPricing,dtePromotionalStartDate=T.dtePromotionalStartDate,
dtePromotionalEndDate=T.dtePromotionalEndDate,decPromotionalPrice=T.decPromotionalPrice
from @invPriceUpdateTableType T
WHERE tblInvPrice.strPartNumber = T.strPartNumber AND tblInvPrice.strPricelist = @OldPricelist AND 
tblInvPrice.uidPriceBasedID = T.uidPriceBasedID and tblInvPrice.strUnit=T.strUnit
else
UPDATE tblInvPrice SET decSelling = T.decSelling, decEstLocalCost = T.decEstLocalCost, decEstImportCost = T.decEstImportCost,
strPricelist = T.strPricelist ,bitCashPricing = T.bitCashPricing,decCashPrice = T.decCashPrice
from @invPriceUpdateTableType T
WHERE tblInvPrice.strPartNumber = T.strPartNumber AND tblInvPrice.strPricelist = @OldPricelist AND
tblInvPrice.uidPriceBasedID = T.uidPriceBasedID and tblInvPrice.strUnit=T.strUnit
end
else
UPDATE tblInvPrice SET decSelling = t.decSelling, decEstLocalCost = T.decEstLocalCost, decEstImportCost = T.decEstImportCost,
strPricelist = T.strPricelist,bitCashPricing = T.bitCashPricing,decCashPrice = T.decCashPrice			
from @invPriceUpdateTableType T				
WHERE tblInvPrice.strPartNumber = t.strPartNumber AND tblInvPrice.strPricelist = @OldPricelist AND 
tblInvPrice.uidPriceBasedID = T.uidPriceBasedID and tblInvPrice.strUnit=T.strUnit
GO
----------------------------------------------------
Create Procedure [dbo].[SelectIntPriceListType]
(
@uidPriceBaseId as uniqueidentifier)
as
begin
SELECT intPriceListType as PricelistType FROM tblPricelists WITH (NOLOCK) where uidPriceBasedID=@uidPriceBaseId
end
Go

----------------------------------------------------
Create Procedure [dbo].[GetRecordCount]
(
@PriceList as nvarchar(20),
@uidPriceBaseId as uniqueidentifier )
as
begin
SELECT COUNT(1) AS RecordCount FROM tblPricelistsCat WHERE uidPriceBasedID=@uidPriceBaseId AND strPricelist=@Pricelist
end
Go


----------------------------------------------------
CREATE Procedure [dbo].[InsertUpdateMarkupOnCostByCategory]
(
@Category as nvarchar(20), 
@PriceList as nvarchar(20),
@uidPriceBasedID as uniqueidentifier ,
@Markup as money,
@OldPricelist as nvarchar(20)= Null,
@IsInsert as bit )
as
begin
if(@IsInsert=1) 
INSERT INTO tblPricelistsCat VALUES (@uidPriceBasedID, @PriceList,@Category, @Markup,GetDate())
else
UPDATE tblPricelistsCat SET decMarkup = @Markup , strPricelist = @Pricelist , 
dteRowUpdated = GETDATE() WHERE strPricelist = @PriceList AND strCategory = @Category AND uidPriceBasedID = @uidPriceBasedID
end
GO

----------------------------------------------------
CREATE Procedure [dbo].[InsertUpdatePricelistsCatBuyout]
(@decBuyoutMarkup as decimal,
@PriceList as nvarchar(20),
@uidPriceBasedID as uniqueidentifier,
@Category  as nvarchar(20),
@OldPricelist  as nvarchar(20) = null,
@IsNew as bit )
as
begin
if(@IsNew = 1)
INSERT INTO tblPricelistsCatBuyout VALUES (@uidPriceBasedID, @PriceList,@Category, @decBuyoutMarkup, GetDate())
else
UPDATE tblPricelistsCatBuyout SET decBuyoutMarkup = @decBuyoutMarkup , strPricelist = @Pricelist 
WHERE strPricelist = @OldPricelist AND strCategory = @Category AND uidPriceBasedID = @uidPriceBasedID
end
Go

----------------------------------------------------
Create Procedure [dbo].[InsertUpdateInvAndInvPriceTable]    
(    
@PriceList as nvarchar(20),    
@IsInsert as bit )    
as    
begin    
if(@IsInsert = 1)    
Begin    
INSERT INTO tblInvPrice(uidPriceBasedID,strPartNumber,strPricelist,decSelling,decEstLocalCost,decEstImportCost,bitPromotionalPricing,dtePromotionalStartDate,    
dtePromotionalEndDate,decPromotionalPrice,dteRowUpdated,bitCashPricing,decCashPrice,strUnit,bitStockUnit)    
SELECT Z.uidPriceBasedID, Z.strPartNumber, Z.strPricelist,    
0, 0, 0,NULL,NULL,NULL,NULL,GetDate(),NULL,NULL, isnull(tblInvPrice.strUnit,'') as strUnit,isnull(tblInvPrice.bitStockUnit,'')  as bitStockUnit  
FROM ( SELECT tblInv.strPartNumber ,tblPricelists.strPricelist ,tblPricelists.uidPriceBasedID FROM tblInv     
CROSS JOIN tblPricelists WHERE tblInv.intType <> 5 ) Z LEFT JOIN tblInvPrice ON tblInvPrice.strPartNumber = Z.strPartNumber     
AND tblInvPrice.strPricelist = Z.strPricelist AND tblInvPrice.uidPriceBasedID = Z.uidPriceBasedID WHERE ISNULL(tblInvPrice.strPartNumber, '') = ''    
UPDATE tblInv SET dteLastUpdated = GETDATE() WHERE strPartNumber IN (SELECT strPartNumber FROM tblInvPrice WHERE strPriceList = @PriceList)    
end    
UPDATE tblInv SET dteLastUpdated = GETDATE() WHERE strPartNumber IN (SELECT strPartNumber FROM tblInvPrice WHERE strPriceList = @PriceList)    
end
GO
----------------------------------------------------
create procedure AlterInvoiceDocPDT
as
begin
ALTER TABLE [dbo].[tblInvoiceDocPDT]  WITH CHECK ADD  CONSTRAINT [FK_tblInvoiceDocPDT_tblInv] FOREIGN KEY([strPartNumber]) REFERENCES [dbo].[tblInv] ([strPartNumber]) ON UPDATE CASCADE ALTER TABLE [dbo].[tblInvoiceDocPDT] CHECK CONSTRAINT [FK_tblInvoiceDocPDT_tblInv]
end

GO
----------------------------------------------------
CREATE procedure UpdateInvoiceDocPDTMapItems
@PartNumberNew as nvarchar(50),
@Type as tinyint,
@PartNumber as nvarchar(50)
as
begin
UPDATE tblInvoiceDocPDT SET strPartNumber = @PartNumberNew, intType = @Type WHERE strPartNumber = @PartNumber
end

GO
----------------------------------------------------
create procedure GetMapInvoiceDetails
@PartNumber as nvarchar(50)
as
begin
SELECT tblInvoiceDocP.strInvPDocID as Document
, tblInvoiceDocP.dteJournalDate as JournalDate
, tblInvoiceDocPDT.intLineNo as [LineNo]
, tblInvoiceDocPDT.strPartNumber as PartNumber
, tblInvoiceDocPDT.strPartDesc as [Desc]
FROM tblInvoiceDocP 
INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID 
WHERE strPartNumber = @PartNumber 
ORDER BY tblInvoiceDocP.dteJournalDate DESC, tblInvoiceDocP.strInvPDocID DESC
end
GO
----------------------------------------------------
CREATE procedure GetInvoiceDocPDetailsForPartNumber
@PartNumber as nvarchar(50),
@Type as int,
@FormTypes as nvarchar(30)
as
begin
if(@FormTypes='SALES INVOICES')
begin
SELECT DOC.strPartNumber as PartNumber
, INV.strDesc as [Desc]
FROM tblInvoiceDocP HDR 
INNER JOIN tblInvoiceDocPDT DTL ON HDR.strInvPDocID = DTL.strInvPDocID 
INNER JOIN tblInvoiceDocDT DOC ON DTL.strPartDesc = DOC.strPartDesc AND DTL.intType = DOC.intType 
INNER JOIN tblInv INV ON DOC.strPartNumber = INV.strPartNumber 
WHERE (DTL.strPartNumber = @PartNumber) AND (DTL.intType = @Type) 
GROUP BY DOC.strPartNumber, INV.strDesc
end
else if(@FormTypes = 'SALES ORDERS')
begin
SELECT DOC.strPartNumber as PartNumber
, INV.strDesc as [Desc]
FROM tblInvoiceDocP HDR 
INNER JOIN tblInvoiceDocPDT DTL ON HDR.strInvPDocID = DTL.strInvPDocID 
INNER JOIN tblOrderDocDT DOC ON DTL.strPartDesc = DOC.strPartDesc AND DTL.intType = DOC.intType 
INNER JOIN tblInv INV ON DOC.strPartNumber = INV.strPartNumber 
WHERE (DTL.strPartNumber = @PartNumber) AND (DTL.intType = @Type) 
GROUP BY DOC.strPartNumber, INV.strDesc
end
else if(@FormTypes = 'PURCHASE ORDERS')
begin
SELECT DOC.strPartNumber as PartNumber
, INV.strDesc  as [Desc]
FROM tblInvoiceDocP HDR
INNER JOIN tblInvoiceDocPDT DTL ON HDR.strInvPDocID = DTL.strInvPDocID 
INNER JOIN tblOrderDocPDT DOC ON DTL.strPartDesc = DOC.strPartDesc AND DTL.intType = DOC.intType 
INNER JOIN tblInv INV ON DOC.strPartNumber = INV.strPartNumber 
WHERE (DTL.strPartNumber = @PartNumber) AND (DTL.intType = @Type) 
GROUP BY DOC.strPartNumber, INV.strDesc
end
else if(@FormTypes = 'RECEIVING')
begin
SELECT DOC.strPartNumber as PartNumber
, INV.strDesc as [Desc]
FROM tblInvoiceDocP HDR 
INNER JOIN tblInvoiceDocPDT DTL ON HDR.strInvPDocID = DTL.strInvPDocID 
INNER JOIN tblOrderDocPGDT DOC ON DTL.strPartDesc = DOC.strPartDesc AND DTL.intType = DOC.intType 
INNER JOIN tblInv INV ON DOC.strPartNumber = INV.strPartNumber 
WHERE (DTL.strPartNumber = @PartNumber) AND (DTL.intType = @Type) 
GROUP BY DOC.strPartNumber, INV.strDesc
end
end
GO
----------------------------------------------------
create procedure GetMapItemDetails
as
begin
SELECT	MAP.PartNumber 
, MAP.[Type]
, MAP.TypeDesc 
, MAP.PartNumberNew 
, ISNULL(tblInv.strDesc, '') AS PartDescNew 
FROM (SELECT Z.strPartNumber as PartNumber, Z.[Type] as [Type], CASE Z.[Type] WHEN 1 THEN 'Inventory' WHEN 4 THEN 'Services' WHEN 5 THEN 'Journals' WHEN 11 THEN 'Buyout' ELSE '' END AS TypeDesc, ISNULL((SELECT TOP 1 INV.strPartNumber FROM tblInv INV WHERE INV.strPartNumber LIKE '%' + Z.strPartNumber + '%' AND INV.inttype = Z.[Type]), '') AS PartNumberNew FROM (SELECT DISTINCT DTL.strPartNumber, MAX(DTL.intType) AS [Type] 
FROM tblInvoiceDocPDT DTL 
LEFT JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber WHERE ISNULL(INV.strPartNumber, '') = '' 
GROUP BY DTL.strPartNumber) Z) MAP 
LEFT JOIN tblInv ON MAP.PartNumberNew = tblInv.strPartNumber ORDER BY MAP.PartNumber
end
GO
----------------------------------------------------
create procedure GetProductionJobFillDataSet
@DocumentNumber nvarchar(max)
as
begin
SELECT PS.strProdNumber, PS.strPartNumber, INV.strDesc, PS.decReqQty AS intReqQty, PS.strLocName, PS.dteStartDate, PS.dteDueDate, (CASE WHEN PS.blnDisassemble = 0 THEN 'Assemble' ELSE 'Disassemble' END) AS strAssemble, PS.blnCompleted, PS.decManQty AS intManQty, PS.strAsmDocID, PSDT.strPartNumber AS strCompPartNumber, INV2.strDesc AS strCompDesc, PSDT.strLocName AS strCompLocName, ISNULL((SELECT CASE WHEN SUM(ITDT.decValue) = 0 OR SUM(ITDT.decQty) = 0 THEN 0 ELSE SUM(ITDT.decValue) / SUM(ITDT.decQty) END FROM tblInvTrackingDT ITDT WHERE ITDT.strPartNumber = INV2.strPartNumber),0) AS decCompUnitCost, INV2.strSellUnit AS strCompUnit, PSDT.decReqQty AS decCompReqQty, ISNULL((PSDT.decReqQty * (SELECT CASE WHEN SUM(ITDT.decValue) = 0 OR SUM(ITDT.decQty) = 0 THEN 0 ELSE SUM(ITDT.decValue) / SUM(ITDT.decQty) END FROM tblInvTrackingDT ITDT WHERE ITDT.strPartNumber = INV2.strPartNumber)),0) AS decCompReqCost, ISNULL((CASE WHEN PS.blnCompleted = 0 THEN 0 ELSE ((PSDT.decReqQty / PS.decReqQty) * PS.decManQty) END),0) AS decCompUsedQty, ISNULL((CASE WHEN PS.blnCompleted = 0 THEN 0 ELSE ((((SELECT CASE WHEN SUM(ITDT.decValue) = 0 OR SUM(ITDT.decQty) = 0 THEN 0 ELSE SUM(ITDT.decValue) / SUM(ITDT.decQty) END FROM tblInvTrackingDT ITDT WHERE ITDT.strPartNumber = INV2.strPartNumber) * PSDT.decReqQty) / PS.decReqQty) * PS.decManQty) END),0) AS decCompUsedCost, PS.dteCompletedDate, ISNULL((PSDT.decReqQty - (CASE WHEN PS.blnCompleted = 0 THEN 0 ELSE ((PSDT.decReqQty / PS.decReqQty) * PS.decManQty) END)),0) AS decCompVarQty, ISNULL(((PSDT.decReqQty * (SELECT CASE WHEN SUM(ITDT.decValue) = 0 OR SUM(ITDT.decQty) = 0 THEN 0 ELSE SUM(ITDT.decValue) / SUM(ITDT.decQty) END FROM tblInvTrackingDT ITDT WHERE ITDT.strPartNumber = INV2.strPartNumber)) - (CASE WHEN PS.blnCompleted = 0 THEN 0 ELSE ((((SELECT CASE WHEN SUM(ITDT.decValue) = 0 OR SUM(ITDT.decQty) = 0 THEN 0 ELSE SUM(ITDT.decValue) / SUM(ITDT.decQty) END FROM tblInvTrackingDT ITDT WHERE ITDT.strPartNumber = INV2.strPartNumber) * PSDT.decReqQty) / PS.decReqQty) * PS.decManQty) END)),0) AS decCompVarCost FROM tblProductionSchedule PS INNER JOIN tblInv INV ON INV.strPartNumber = PS.strPartNumber INNER JOIN tblProductionScheduleDT PSDT ON PSDT.strProdNumber = PS.strProdNumber INNER JOIN tblInv INV2 ON INV2.strPartNumber = PSDT.strPartNumber WHERE PS.strProdNumber = @DocumentNumber
end
GO
----------------------------------------------------
create procedure InsertInvDescriptionAutoComplete
@Description as nvarchar(50),
@LabelValue as money
as
begin
Insert into tblInvDescriptionAutoComplete(strDescription,strValue) Values (@Description,@LabelValue)
end
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvDescriptionList] @PartNumber AS NVARCHAR(50)
	,@Description AS NVARCHAR(50)
	,@LabelValue AS NVARCHAR(120)
	,@DescriptionOrder AS INT
AS
BEGIN
	INSERT INTO tblInvDescriptionList (
		strPartNumber
		,strDescription
		,strDescriptionValue
		,intDescriptionOrder
		)
	VALUES (
		@PartNumber
		,@Description
		,@LabelValue
		,@DescriptionOrder
		)
END
GO
----------------------------------------------------
create procedure DeleteInvDescriptionList
@PartNumber as nvarchar(50)
as
begin
DELETE FROM tblInvDescriptionList WHERE  strPartNumber=@PartNumber
end
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvContainers] @PartNumber AS NVARCHAR(50)
	,@Description AS NVARCHAR(50)
	,@Qty AS MONEY
	,@IsRoundUp AS BIT
AS
BEGIN
	INSERT INTO tblInvContainers (
		[strPartNumber]
		,[strPartItemNumber]
		,[decQuantity]
		,[bitRoundUp]
		,[dteRowUpdated]
		)
	VALUES (
		@PartNumber
		,@Description
		,@Qty
		,@IsRoundUp
		,GETDATE()
		)
END
GO
----------------------------------------------------
create procedure [dbo].[InsertInvExtDetails]
@PartNumber as nvarchar(50),
@Location as nvarchar(50),
@Reorder as money,
@MaxLevel as money,
@Minlevel as money,
@BinLoc as nvarchar(50),
@AcctSet as nvarchar(MAX),
@IsDefault as bit,
@IsActive as bit
as
begin
INSERT INTO tblInvExt (strPartNumber,strLocName,decAvail,decAlloc,decOnHand,decValue,decOnOrder,decOpenQty,decOpenValue,intReorderPoint,strAcctSet,strBinLoc,decMaxLevel,decMinimumLevel,bitInactive,bitDefault,decManuf,dteRowUpdated) VALUES (@PartNumber,@Location,0,0,0,0,0,0,0,@Reorder,@AcctSet,@BinLoc,@MaxLevel,@Minlevel,@IsActive,@IsDefault,0,GETDATE())
end
GO
----------------------------------------------------
create procedure DeleteInvCustomerForPartNumber
@PartNumber as nvarchar(50)
as
begin
DELETE FROM tblInvCustomer WHERE strPartNumber = @PartNumber
end
GO
----------------------------------------------------
create procedure GetInvPriceListDetails
@PartNumber as nvarchar(50)
as
begin
SELECT tblInvPrice.strPricelist AS Pricelist 
,tblPricelists.intPricelistType AS PricelistType 
,tblInvPrice.decSelling AS SellingPrice 
,ISNULL(( SELECT decMarkup FROM tblPricelistsCat WHERE strPricelist = tblPricelists.strPricelist AND strCategory = tblInv.strCategory AND uidPriceBasedID = tblPricelists.uidPriceBasedID), 0) AS MarkupPer 
,tblPricelists.intRoundPrices AS RoundPrice 
,tblPricelists.bitUpdateSellingPrice AS IsUpdateSellingPrice 
,tblPricelists.bitOnlySellingPriceIncrease AS IsOnlySellingPriceIncrease 
,tblInv.decSellFromStock AS SellFromStock 
,tblInvPrice.uidPriceBasedID AS PriceBaseId 
,tblPriceData.bitPriceIncl AS IsPriceIncl 
,ISNULL(tblTaxCodeExt.decRate, 0) AS TaxRate
, ISNULL(uidLinkPricelistId, CAST(CAST(0 as binary) AS uniqueidentifier)) AS uidLinkPricelisId 
FROM tblInvPrice 
INNER JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist AND tblInvPrice.uidPriceBasedID = tblPricelists.uidPriceBasedID 
INNER JOIN tblPriceData ON tblPricelists.strPricelist = tblPriceData.strPricelist 
INNER JOIN tblInv ON tblInvPrice.strPartNumber = tblInv.strPartNumber 
LEFT JOIN tblTaxCodeExt ON tblPriceData.strTaxCode = tblTaxCodeExt.strTaxCode 
WHERE tblInvPrice.strPartNumber = @PartNumber
end
GO
----------------------------------------------------
create procedure UpdateInvPriceDetails
@GUID as nvarchar(max),
@PartNumber as nvarchar(50),
@PriceList as nvarchar(50),
@Selling as decimal,
@LocalCost as decimal,
@ImportCost as decimal
as
begin
UPDATE tblInvPrice SET decSelling=@Selling
,decEstLocalCost=@LocalCost
,decEstImportCost=@ImportCost 
WHERE uidPriceBasedID=@GUID and strPricelist=@PriceList and strPartNumber=@PartNumber
end
GO

----------------------------------------------------

----------------------------------------------------
create procedure GetInvItemForContainer
@PartNumber as nvarchar(50)
as
begin
SELECT tblInv.strPartNumber as PartNumber
, tblInv.strDesc as [Description]
, tblInv.decLastPPUnit 
, tblInv.decBuyToStock
, tblInv.bitInvSerialType
, tblInv.decDefSaleQty as DefSaleQty
, ISNULL(tblDimensionProfiles.intRoundingDecimals,ISNULL(intRoundingDecimals,0)) as RoundingDecimals 
FROM tblInv 
LEFT OUTER JOIN tblDimensionProfiles ON tblInv.strDimProCode = tblDimensionProfiles.strDimProCode
WHERE (tblInv.strPartNumber = @PartNumber OR strBarCode = @PartNumber OR tblInv.strBarCode2 = @PartNumber) AND tblInv.bitInactive = 0
end
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInventoryAssemblyDetails] @PartNumber AS NVARCHAR(50)
AS
BEGIN
	SELECT tblInv.bitInvSerialType AS SerialType
		,ISNULL(tblInvSerialTypes.bitMethod, CAST(0 AS BIT)) IsMethod
		,ISNULL(tblInvSerialTypes.intMin, 0) AS MinValue
		,ISNULL(tblInvSerialTypes.intMax, 0) AS MaxValue
		,ISNULL(tblInvSerialTypes.intMin, 0) AS Min
		,ISNULL(tblInvSerialTypes.intMax, 0) AS Max
		,ISNULL(tblInvSerialTypes.intFormat, 0) AS [Format]
		,ISNULL(CAST(tblInvSerialTypes.intType AS TINYINT), CAST(0 AS TINYINT)) AS [Type]
		,ISNULL(tblInvSerialTypes.bitTrackExpiryDate, CAST(0 AS BIT)) AS TrackExpiryDate
		,tblInv.strBuyUnit AS BuyUnit
		,ISNULL(tblInvSerialTypes.intExpiryDateAuthAS, 0) AS ExpiryDateAuthAS
		,ISNULL(tblInvSerialTypes.strDimProCode, '') AS ProdNumber
		,ISNULL(tblInvSerialTypes.strInvSerialType, '') AS InvSerialType
		,ISNULL(tblInvSerialTypes.bitAutoCreateLotNumber, CAST(0 AS BIT)) AS AutoCreateLotNumber
		,ISNULL(tblInvSerialTypes.intLotNumberStartsFrom, 0) AS LotNumberStartsFrom
		,ISNULL(tblInvSerialTypes.intNextLotNumber, 1) AS NextLotNumber
		,ISNULL(tblInvSerialTypes.intDaysExpire, 1) AS DaysExpire
	FROM tblInv
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblInv.strPartNumber = @PartNumber
END
GO

----------------------------------------------------
create procedure GetInvExtAssemblyDetails
@PartNumber as nvarchar(50),
@Location as nvarchar(50)
as
begin
SELECT decValue as Value
, decOnHand as OnHand
, ISNULL((SELECT ROUND((decLastPPUnit / decBuyToStock),2) as Stock
FROM tblInv 
WHERE strPartNumber = @PartNumber),0) 
FROM tblInvExt
WHERE strPartNumber = @PartNumber AND strLocName = @Location
end
GO
----------------------------------------------------
create procedure GetInvItemContainerDetails
@PartNumber as nvarchar(50)
as
begin
SELECT tblInv.strPartNumber as PartNumber, ISNULL(tblDimensionProfiles.intRoundingDecimals,ISNULL(intRoundingDecimals,0)) as RoundingDecimals, tblInv.strDesc, tblInv.decLastPPUnit, tblInv.decBuyToStock, tblInv.bitInvSerialType, tblInv.decDefSaleQty as DefSaleQty
FROM tblInv 
LEFT OUTER JOIN tblDimensionProfiles ON tblInv.strDimProCode = tblDimensionProfiles.strDimProCode 
WHERE (tblInv.strPartNumber = @PartNumber OR tblInv.strBarCode = @PartNumber OR strBarCode2 = @PartNumber) AND tblInv.bitInactive = 0
end
GO
----------------------------------------------------
create procedure UpdateProductionScheduleDetails
@DocNumber as nvarchar(50),
@JobNumber as nvarchar(50),
@Location as nvarchar(50),
@InvWCCode as nvarchar(50)
as
begin
UPDATE tblProductionSchedule SET strInvWODocID = @DocNumber, strLocName = @Location, strInvWCCode = @InvWCCode WHERE strProdNumber = @JobNumber 
end
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvWorkCentres] (
	@InActive BIT = 0
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@Search AS NVARCHAR(Max) = ''
	)
AS
BEGIN
	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT [strInvWCCode] AS InvWCCode
		,[strDesc] AS [Desc]
		,[bitInactive] AS IsInactive
	FROM tblInvWorkCentre
	WHERE bitInactive = @InActive
		AND (
			ISNULL(strInvWCCode, '') LIKE '%' + ISNULL(@search, strInvWCCode) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
			)
	ORDER BY strInvWCCode OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

----------------------------------------------------
create procedure GetDimensionProfileDetails
@SelectedDimensionProfile as nvarchar(50)
As
begin
SELECT intRoundingDecimals as RoundingDecimals FROM tblDimensionProfiles WHERE strDescription LIKE '%' +@SelectedDimensionProfile+ '%'
end
GO
----------------------------------------------------
create procedure GetInvUpSellDetails
@PartNumber as nvarchar(50)
as
begin
SELECT tblInv.strPartNumber as PartNumber
, tblInv.strDesc as Description
FROM tblInv 
WHERE (tblInv.strPartNumber = @PartNumber OR tblInv.strBarCode = @PartNumber) AND tblInv.bitInactive = 0
end
GO
----------------------------------------------------
create procedure GetInvSerialTypesCount
@SerialType as nvarchar(max),
@Type as int
as
begin
SELECT COUNT(intType) FROM tblInvSerialTypes WHERE strInvSerialType = @SerialType AND intType = @Type
end
GO
----------------------------------------------------
create procedure GetInvExtLocation
@PartNumber as nvarchar(50),
@DefaultLocation as nvarchar(20)
as
begin
SELECT ISNULL(CASE WHEN ISNULL((SELECT COUNT(strUserName) FROM tblUsers),0) = 0 THEN ISNULL((SELECT EXT.strLocName FROM tblInvExt EXT WHERE EXT.strPartNumber = INV.strPartNumber AND EXT.bitDefault = 1),'') ELSE CASE WHEN ISNULL(IE.bitInactive,0) = 1 THEN ISNULL((SELECT EXT.strLocName FROM tblInvExt EXT WHERE EXT.strPartNumber = INV.strPartNumber AND EXT.bitDefault = 1),'') ELSE IE.strLocName END END,'') FROM tblInv INV LEFT JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber AND IE.strLocName = @DefaultLocation 
WHERE (INV.strPartNumber = @PartNumber OR INV.strBarCode = @PartNumber OR INV.strBarCode2 = @PartNumber) AND (INV.bitInactive = 0)
end
GO
----------------------------------------------------
create procedure GetInventoryDetailsForPartNumber
@PartNumber as nvarchar(50)
as
begin
SELECT strPartNumber as PartNumber
, strDesc as Description
FROM tblInv 
WHERE (strPartNumber = @PartNumber OR strBarCode = @PartNumber) AND (intType = 1) AND (bitInactive = 0)
end
GO
----------------------------------------------------
create procedure GetDimProCodeCount
@ItemType as nvarchar(max),
@Type as int
as
begin
SELECT COUNT(DP.strDimProCode) FROM tblInvSerialTypes IST INNER JOIN tblDimensionProfiles DP ON IST.strDimProCode = DP.strDimProCode WHERE (IST.strInvSerialType = @ItemType) AND (IST.intType = @Type)
end
GO
----------------------------------------------------
create procedure UpdatePSNumberForLastID
@NextJobNumber as bigint
as
begin
UPDATE tblLastIDs SET lngPSNumber = @NextJobNumber
end
GO
----------------------------------------------------
create procedure UpdateWONumber
@NextJobNumber as bigint
as
begin
UPDATE tblLastIDs SET lngIWONumber = @NextJobNumber
end
GO
----------------------------------------------------
create procedure UpdateProductionSchedulebitClearedDetails
@DocNumber as nvarchar(50)
as
begin
UPDATE tblProductionSchedule SET bitCleared = 1 WHERE strInvWODocID = @DocNumber AND bitCleared = 0
end
GO
----------------------------------------------------
create procedure InsertProductionScheduleDTData
(
@ProdNumber as nvarchar(50),
@PartNumber as nvarchar(50),
@LocName as nvarchar(10),
@ReqQty as decimal,
@IsExploded as bit
)
as
begin
INSERT INTO tblProductionScheduleDT VALUES (@ProdNumber, @PartNumber, @LocName, @ReqQty, @IsExploded)
end
GO
----------------------------------------------------
create procedure InsertProductionScheduleData
(
@ProdNumber as nvarchar(50),
@PartNumber as nvarchar(50),
@ReqQty as decimal,
@LocName as nvarchar(10),
@StartDate as datetime,
@DueDate as datetime,
@CompletedDate as datetime,
@SystemDate as datetime,
@UserName as nvarchar(20),
@InvWODocID as nvarchar(50),
@OrdDocID as nvarchar(50),
@Notes as nvarchar(max),
@InvWCCode as nvarchar(20),
@IsClose as bit
)
as
begin
INSERT INTO tblProductionSchedule VALUES(@ProdNumber, @PartNumber, @ReqQty, @LocName, @StartDate, @DueDate, 0, 0, @CompletedDate, 1, NULL, @SystemDate, @UserName, @IsClose, @InvWODocID, @OrdDocID, @Notes, @InvWCCode)
end
GO
----------------------------------------------------


CREATE PROCEDURE InsertUpdateInvSerialTypes (
	@IsEdit AS BIT
	,@OldName AS NVARCHAR(20)
	,@Serialtypes AS NVARCHAR(20)
	,@Description AS NVARCHAR(100)
	,@IsMethod AS BIT
	,@Min AS INT
	,@Max AS INT
	,@Format AS INT
	,@IsPrintInv AS BIT
	,@IsInactive AS BIT
	,@Type AS INT
	,@IsTrack AS BIT
	,@IsAuthGRV AS INT
	,@IsAuthPI AS INT
	,@IsAuthDN AS INT
	,@IsSI AS INT
	,@IsCN AS INT
	,@IsAuthAD AS INT
	,@IsAuthAS AS INT
	,@IsAuthTR AS INT
	,@IsBCEnabled AS BIT
	,@IsBCFlag AS NVARCHAR(50)
	,@Is1Enable AS BIT
	,@BC1Type AS NVARCHAR(50)
	,@StartPOS1 AS INT
	,@EndPos1 AS INT
	,@Is2Enable AS BIT
	,@BC2Type AS NVARCHAR(50)
	,@StartPOS2 AS INT
	,@EndPos2 AS INT
	,@Is3Enable AS BIT
	,@BC3Type AS NVARCHAR(50)
	,@StartPOS3 AS INT
	,@EndPos3 AS INT
	,@Is4Enable AS BIT
	,@BC4Type AS NVARCHAR(50)
	,@StartPOS4 AS INT
	,@EndPos4 AS INT
	,@Is5Enable AS BIT
	,@BC5Type AS NVARCHAR(50)
	,@StartPOS5 AS INT
	,@EndPos5 AS INT
	,@IsAuthDA AS INT
	,@IsDimensionExits AS BIT
	,@DimProCode AS NVARCHAR(40)
	,@IsDPSingleSNChecked AS BIT
	,@IsBCFormat AS BIT
	,@IsAutoCreateLotNumber AS BIT
	,@LotNumberStartsFrom AS INT
	,@NextLotNumber AS INT
	,@DaysExpire AS INT
	)
AS
BEGIN
	IF (@IsEdit = 1)
	BEGIN
		UPDATE tblInvSerialTypes
		SET strInvSerialType = @Serialtypes
			,strDesc = @Description
			,bitMethod = @IsMethod
			,intMin = @Min
			,intMax = @Max
			,intFormat = @Format
			,bitPrintInv = @IsPrintInv
			,bitInactive = @IsInactive
			,intType = @Type
			,bitTrackExpiryDate = @IsTrack
			,intExpiryDateAuthGRV = @IsAuthGRV
			,intExpiryDateAuthPI = @IsAuthPI
			,intExpiryDateAuthDN = @IsAuthDN
			,intExpiryDateAuthSI = @IsSI
			,intExpiryDateAuthCN = @IsCN
			,intExpiryDateAuthAD = @IsAuthAD
			,intExpiryDateAuthAS = @IsAuthAS
			,intExpiryDateAuthTR = @IsAuthTR
			,intExpiryDateAuthDA = @IsAuthDA
			,bitBCBreakdown = @IsBCEnabled
			,strBCFlag = @IsBCFlag
			,bitBC1Enabled = @Is1Enable
			,strBC1Type = @BC1Type
			,intBC1StartPos = @StartPOS1
			,intBC1EndPos = @EndPos1
			,bitBC2Enabled = @Is2Enable
			,strBC2Type = @BC2Type
			,intBC2StartPos = @StartPOS2
			,intBC2EndPos = @EndPos2
			,bitBC3Enabled = @Is3Enable
			,strBC3Type = @BC3Type
			,intBC3StartPos = @StartPOS3
			,intBC3EndPos = @EndPos3
			,bitBC4Enabled = @Is4Enable
			,strBC4Type = @BC4Type
			,intBC4StartPos = @StartPOS4
			,intBC4EndPos = @EndPos4
			,bitBC5Enabled = @Is5Enable
			,strBC5Type = @BC5Type
			,intBC5StartPos = @StartPOS5
			,intBC5EndPos = @EndPos5
			,bitDimensionExist = @IsDimensionExits
			,strDimProCode = @DimProCode
			,bitDPSingleSN = @IsDPSingleSNChecked
			,bitBCFormat = @IsBCFormat
			,bitAutoCreateLotNumber = @IsAutoCreateLotNumber
			,intLotNumberStartsFrom = @LotNumberStartsFrom
			,intNextLotNumber = @NextLotNumber
			,intDaysExpire = @DaysExpire
		WHERE strInvSerialType = @OldName
	END
	ELSE
	BEGIN
		INSERT INTO tblInvSerialTypes
		VALUES (
			@Serialtypes
			,@Description
			,@IsMethod
			,@Min
			,@Max
			,@Format
			,@IsPrintInv
			,@IsInactive
			,@Type
			,@IsTrack
			,@IsAuthGRV
			,@IsAuthPI
			,@IsAuthDN
			,@IsSI
			,@IsCN
			,@IsAuthAD
			,@IsAuthAS
			,@IsAuthTR
			,@IsBCEnabled
			,@IsBCFlag
			,@Is1Enable
			,@BC1Type
			,@StartPOS1
			,@EndPos1
			,@Is2Enable
			,@BC2Type
			,@StartPOS2
			,@EndPos2
			,@Is3Enable
			,@BC3Type
			,@StartPOS3
			,@EndPos3
			,@Is4Enable
			,@BC4Type
			,@StartPOS4
			,@EndPos4
			,@Is5Enable
			,@BC5Type
			,@StartPOS5
			,@EndPos5
			,@IsAuthDA
			,@IsDimensionExits
			,@DimProCode
			,@IsDPSingleSNChecked
			,@IsBCFormat
			,GetDate()
			,@IsAutoCreateLotNumber
			,@LotNumberStartsFrom
			,@NextLotNumber
			,@DaysExpire
			)
	END
END
GO

----------------------------------------------------
create procedure GetGLSegmentSetupCodeForSegID
@SegID as int
as
begin
select a.strCode from (select strCode from tblGLSegmentSetup where intSegmentId =@SegID) a order by a.strCode
end
GO
----------------------------------------------------
create procedure GetAccountsGLNumber
@AcctNumber as nvarchar(50)
as
begin
select Count(intGLNumber) from tblAccounts where intGLNumber=@AcctNumber
end
GO
----------------------------------------------------
create procedure GetInvExtDetailsForPartNumber
@PartNumber as nvarchar(50)
as
begin
SELECT strLocName as LocName
, bitDefault as IsDefault
FROM tblInvExt WHERE strPartNumber = @PartNumber AND bitInactive = 0 ORDER BY strLocName
end
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetDataForNotification] (@DocNumber AS NVARCHAR(50))
AS
BEGIN
SELECT tblOrderDocP.dteSystemDate AS CreatedDateTime
,tblOrderDocP.strUserName AS CreatedUserName
,tblOrderDocP.decTotal AS DocTotal
,tblUsers.strEmail AS Email
,tblUsers.strCellNumber AS CellNumber
,tblOrderDocP.strVendName AS VendNumber
,tblVendors.strVendDesc AS VendName
--,tblApprovalsDocLimit.PreferredNotification AS PreferredNotification
FROM tblOrderDocP(NOLOCK)
LEFT JOIN tblUsers(NOLOCK) ON tblOrderDocP.strUserName = tblUsers.strUserName
INNER JOIN tblVendors(NOLOCK) ON tblOrderDocP.strVendName = tblvendors.strVendName
--inner join tblApprovalsDocLimit on tblApprovalsDocLimit.strUserName = tblUsers.strUserName
WHERE tblOrderDocP.strOrdPDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOtherUserDetails] (
	@DocId AS NVARCHAR(50)
	,@GroupId AS INT
	,@Priority AS INT
	)
AS
BEGIN
	IF (@DocId LIKE 'CR-%')
	BEGIN
		SELECT dteSystemDate AS CreatedDateTime
			,strUsername AS CreatedUserName
			,decTotal AS DocTotal
			,ISNULL((
					SELECT PreferredNotification
					FROM tblApprovalsDocLimit
					WHERE intApproverGroupId = @GroupID
						AND priorityLevel = @Priority
					), '') AS PreferredNotification
			,(
				SELECT tblUsers.strEmail
				FROM tblApprovalsDocLimit
				JOIN tblUsers ON tblApprovalsDocLimit.strUserName = tblUsers.strUserName
				WHERE intApproverGroupId = @GroupID
					AND priorityLevel = @Priority
				) AS Email
			,(
				SELECT tblUsers.strCellNumber
				FROM tblApprovalsDocLimit
				JOIN tblUsers ON tblApprovalsDocLimit.strUserName = tblUsers.strUserName
				WHERE intApproverGroupId = @GroupID
					AND priorityLevel = @Priority
				) AS CellNumber
			,tblOrderDoc.strCustName AS VendNumber
			,tblCustomers.strCustDesc AS VendName
		FROM tblOrderDoc
		INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
		WHERE strOrdDocID = @DocID
	END
	ELSE IF (@DocId LIKE 'JE-%')
	BEGIN
		SELECT dteDateCreated AS CreatedDateTime
			,strUserName AS CreatedUserName
			,ISNULL((
					SELECT PreferredNotification
					FROM tblApprovalsDocLimit
					WHERE intApproverGroupId = @GroupID
						AND priorityLevel = @Priority
					), '') AS PreferredNotification
			,(
				SELECT tblUsers.strEmail
				FROM tblApprovalsDocLimit
				JOIN tblUsers ON tblApprovalsDocLimit.strUserName = tblUsers.strUserName
				WHERE intApproverGroupId = @GroupID
					AND priorityLevel = @Priority
				) AS Email
			,(
				SELECT tblUsers.strCellNumber
				FROM tblApprovalsDocLimit
				JOIN tblUsers ON tblApprovalsDocLimit.strUserName = tblUsers.strUserName
				WHERE intApproverGroupId = @GroupID
					AND priorityLevel = @Priority
				) AS CellNumber
		FROM tblJournalEntryDocApprovalPending
		WHERE strJENo = @DocID
	END
	ELSE
	BEGIN
		SELECT dteSystemDate AS CreatedDateTime
			,strUserName AS CreatedUserName
			,decTotal AS DocTotal
			,ISNULL((
					SELECT PreferredNotification
					FROM tblApprovalsDocLimit(NOLOCK)
					WHERE intApproverGroupId = @GroupID
						AND priorityLevel = @Priority
					), '') AS PreferredNotification
			,(
				SELECT tblUsers.strEmail
				FROM tblApprovalsDocLimit(NOLOCK)
				INNER JOIN tblUsers(NOLOCK) ON tblApprovalsDocLimit.strUserName = tblUsers.strUserName
				WHERE intApproverGroupId = @GroupID
					AND priorityLevel = @Priority
				) AS Email
			,(
				SELECT tblUsers.strCellNumber
				FROM tblApprovalsDocLimit(NOLOCK)
				INNER JOIN tblUsers(NOLOCK) ON tblApprovalsDocLimit.strUserName = tblUsers.strUserName
				WHERE intApproverGroupId = @GroupID
					AND priorityLevel = @Priority
				) AS CellNumber
			,tblOrderDocP.strVendName AS VendNumber
			,tblVendors.strVendDesc AS VendName
		FROM tblOrderDocP(NOLOCK)
		INNER JOIN tblVendors(NOLOCK) ON tblOrderDocP.strVendName = tblvendors.strVendName
		WHERE strOrdPDocID = @DocID
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetApproverData] (@DocNumber NVARCHAR(100))
AS
BEGIN
SELECT strUserName AS UserName
,tblOrderDocP.strVendName AS SupplierNumber
,tblVendors.strVendDesc AS SupplierName
FROM tblOrderDocP(NOLOCK)
INNER JOIN tblVendors(NOLOCK) ON tblOrderDocP.strVendName = tblVendors.strVendName
WHERE strOrdPDocID = @DocNumber
END
GO



----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvTransCopyData] @SelectedIndex AS INT
,@LocName AS NVARCHAR(50)
,@Start AS DATE
,@End AS DATE
,@Searchtext AS NVARCHAR(100)
AS
BEGIN
DECLARE @search AS NVARCHAR(MAX)
IF (LEN(@Searchtext) > 0)
BEGIN
SET @search = '%' + @Searchtext + '%'
END
IF (@SelectedIndex = 0)
BEGIN
SELECT HDR.strOrdPGDocID [strDocNumber]
,HDR.dteJournalDate [JournalDate]
,DTL.strPartNumber [PartNumber]
,DTL.strPartDesc [PartDesc]
,DTL.decBuyQty [decQty]
,DTL.intLineNo AS [LineNumber]
,'GRV' [Type]
,strBinCode AS FromBin
,lngBinID AS FromBinId
,ToBin = ''
,ToBinId = 0
FROM tblOrderDocPG HDR
INNER JOIN tblOrderDocPGDT DTL ON HDR.strOrdPGDocID = DTL.strOrdPGDocID
INNER JOIN tblOrderDocPGDTBin Bin ON DTL.strOrdPGDocID = Bin.strOrdPGDocID
AND DTL.intLineNo = Bin.intLineNo
INNER JOIN tblInvLocBin Loc ON Bin.lngBinID = Loc.lngID
INNER JOIN tblInvExt IE ON DTL.strPartNumber = IE.strPartNumber
AND DTL.strLocation = IE.strLocName
WHERE (
HDR.dteJournalDate BETWEEN @Start
AND @End
)
AND (IE.strLocName = @LocName)
AND (IE.bitInactive = 0)
AND HDR.strOrdPGDocID LIKE (
CASE 
WHEN LEN(@search) > 0
THEN @search
ELSE HDR.strOrdPGDocID
END
)
UNION
SELECT HDR.strTrfDocID
,HDR.dteJournalDate
,DTL.strPartNumber AS [PartNumber]
,INV.strDesc AS [PartDesc]
,DTL.decQty AS [Qty]
,DTL.intLineNo AS [LineNumber]
,'TNF'
,Bin1.strBinCode
,lngFromBinID
,Bin2.strBinCode
,lngToBinID
FROM tblInvTrfDoc HDR
INNER JOIN tblInvTrfDocDT DTL ON HDR.strTrfDocID = DTL.strTrfDocID
INNER JOIN tblInvLocBin Bin1 ON Bin1.lngID = DTL.lngFromBinID
INNER JOIN tblInvLocBin Bin2 ON Bin2.lngID = DTL.lngToBinID
INNER JOIN tblInv INV ON INV.strPartNumber = DTL.strPartNumber
LEFT JOIN tblInvExt IEF ON DTL.strPartNumber = IEF.strPartNumber
AND HDR.strFromLoc = IEF.strLocName
AND IEF.strLocName = @LocName
LEFT JOIN tblInvExt IET ON DTL.strPartNumber = IET.strPartNumber
AND HDR.strToLoc = IET.strLocName
AND IET.strLocName = @LocName
WHERE (
HDR.dteJournalDate BETWEEN @Start
AND @End
)
AND (
IEF.bitInactive = 0
OR IET.bitInactive = 0
)
AND (
HDR.strTrfDocID LIKE 'ITR-%'
OR HDR.strTrfDocID LIKE 'IBT-%'
)
AND HDR.strTrfDocID LIKE (
CASE 
WHEN len(@search) > 0
THEN @search
ELSE HDR.strTrfDocID
END
)
ORDER BY JournalDate DESC
,strDocNumber DESC
,DTL.intLineNo
END
ELSE IF (@SelectedIndex = 1)
BEGIN
SELECT HDR.strTrfDocID [strDocNumber]
,HDR.dteJournalDate [JournalDate]
,DTL.strPartNumber AS [PartNumber]
,INV.strDesc AS [PartDesc]
,DTL.decQty AS [decQty]
,DTL.intLineNo AS [LineNumber]
,'TNF'
,Bin1.strBinCode
,lngFromBinID
,Bin2.strBinCode
,lngToBinID
FROM tblInvTrfDoc HDR
INNER JOIN tblInvTrfDocDT DTL ON HDR.strTrfDocID = DTL.strTrfDocID
INNER JOIN tblInvLocBin Bin1 ON Bin1.lngID = DTL.lngFromBinID
INNER JOIN tblInvLocBin Bin2 ON Bin2.lngID = DTL.lngToBinID
INNER JOIN tblInv INV ON INV.strPartNumber = DTL.strPartNumber
LEFT JOIN tblInvExt IEF ON DTL.strPartNumber = IEF.strPartNumber
AND HDR.strFromLoc = IEF.strLocName
AND IEF.strLocName = @LocName
LEFT JOIN tblInvExt IET ON DTL.strPartNumber = IET.strPartNumber
AND HDR.strToLoc = IET.strLocName
AND IET.strLocName = @LocName
WHERE (
HDR.dteJournalDate BETWEEN @Start
AND @End
)
AND (
IEF.bitInactive = 0
OR IET.bitInactive = 0
)
AND (
HDR.strTrfDocID LIKE 'ITR-%'
OR HDR.strTrfDocID LIKE 'IBT-%'
)
AND HDR.strTrfDocID LIKE (
CASE 
WHEN len(@search) > 0
THEN @search
ELSE HDR.strTrfDocID
END
)
ORDER BY JournalDate DESC
,strDocNumber DESC
,DTL.intLineNo
END
ELSE IF (@SelectedIndex = 2)
BEGIN
SELECT HDR.strOrdPGDocID [strDocNumber]
,HDR.dteJournalDate [JournalDate]
,DTL.strPartNumber [PartNumber]
,DTL.strPartDesc [PartDesc]
,DTL.decBuyQty AS [decQty]
,DTL.intLineNo AS [LineNumber]
,'GRV' [Type]
,strBinCode AS FromBin
,lngBinID AS FromBinId
,'' AS ToBin
,CAST(0 AS bigint) AS ToBinId
FROM tblOrderDocPG HDR
INNER JOIN tblOrderDocPGDT DTL ON HDR.strOrdPGDocID = DTL.strOrdPGDocID
INNER JOIN tblOrderDocPGDTBin Bin ON DTL.strOrdPGDocID = Bin.strOrdPGDocID
AND DTL.intLineNo = Bin.intLineNo
INNER JOIN tblInvLocBin Loc ON Bin.lngBinID = Loc.lngID
INNER JOIN tblInvExt IE ON DTL.strPartNumber = IE.strPartNumber
AND DTL.strLocation = IE.strLocName
WHERE (
HDR.dteJournalDate BETWEEN @Start
AND @End
)
AND (IE.strLocName = @LocName)
AND (IE.bitInactive = 0)
AND HDR.strOrdPGDocID LIKE (
CASE 
WHEN len(@search) > 0
THEN @search
ELSE HDR.strOrdPGDocID
END
)
ORDER BY JournalDate DESC
,strDocNumber DESC
,DTL.intLineNo
END
END
GO

----------------------------------------------------
CREATE PROCEDURE GetSOClearBTO @DocNumber AS NVARCHAR(50)
AS
BEGIN
SELECT strPartNumber AS PartNumber
,intLineNo AS [LineNo]
,decQty AS QtyOriginal
,decQtyRemaining AS QtyRemaining
,decQty AS SellFromStock
,decQtyRemaining AS SellQtyRemaining
FROM tblInvTrfOrdDocDT
WHERE strInvTrfOrdDocID = @DocNumber
AND decQtyRemaining <> 0
END
GO

----------------------------------------------------
CREATE PROCEDURE UpdateSOlinesToInvTrfOrdDocDT @Doc AS NVARCHAR(100)
,@QtyRemaining AS MONEY
,@LineNo AS INT
AS
BEGIN
UPDATE tblInvTrfOrdDocDT
SET decQtyRemaining = @QtyRemaining
WHERE strInvTrfOrdDocID = @Doc
AND intLineNo = @LineNo
END
GO

----------------------------------------------------
CREATE PROCEDURE SetSOtoInvTrfOrdDoc @DocNumber AS NVARCHAR(100)
,@TrfDocID AS NVARCHAR(100)
,@User AS NVARCHAR(100)
,@Date AS DATE
AS
BEGIN
UPDATE tblInvTrfOrdDoc
SET dteSystemDate = @Date
,strUserName = @User
,bitCleared = 1
,strTrfDocID = @TrfDocID
WHERE strInvTrfOrdDocID = @DocNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE SetInvTrfDoc @TrfDocID AS NVARCHAR(100)
,@TrfRecDocID AS NVARCHAR(100)
,@IsCleared AS BIT
AS
BEGIN
UPDATE tblInvTrfDoc
SET bitCleared = @IsCleared
,strTrfRecDocID = @TrfRecDocID
WHERE strTrfDocID = @TrfDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE GetIsInvTrfDocCleared @TrfDocID AS NVARCHAR(100)
AS
BEGIN
SELECT bitCleared
FROM tblInvTrfDoc
WHERE strTrfDocID = @TrfDocID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[NavigateDocumentAdjustments] (  
@DocNumber NVARCHAR(100)  
,@IsPrevious BIT  
,@AdjustmentType INT  
)  
AS  
BEGIN  
IF (@AdjustmentType = 1)  
BEGIN  
IF (@IsPrevious = 1) --Adjustment  
SELECT MAX(strAdjDocID)  
FROM tblInvAdjDoc  
WHERE strAdjDocID < @DocNumber  
AND ISNULL(bitStockCount, 0) <> 1;  
ELSE  
SELECT MIN(strAdjDocID)  
FROM tblInvAdjDoc  
WHERE strAdjDocID > @DocNumber  
AND ISNULL(bitStockCount, 0) <> 1;  
END  
ELSE IF (@AdjustmentType = 2) --InternalRequisition   
BEGIN  
IF (@IsPrevious = 1)  
SELECT MAX(strInvIntReqDocID)  
FROM tblInvIntReqDoc  
WHERE strInvIntReqDocID < @DocNumber  
AND bitCleared = 0;  
ELSE  
SELECT MIN(strInvIntReqDocID)  
FROM tblInvIntReqDoc  
WHERE strInvIntReqDocID > @DocNumber  
AND bitCleared = 0;  
END  
ELSE IF (@AdjustmentType = 3) --IssueRequisition  
BEGIN  
IF (@IsPrevious = 1)  
SELECT MAX(strInvIssReqDocID)  
FROM tblInvIssReqDoc  
WHERE strInvIssReqDocID < @DocNumber;  
ELSE  
SELECT MIN(strInvIssReqDocID)  
FROM tblInvIssReqDoc  
WHERE strInvIssReqDocID > @DocNumber;  
END
ELSE IF (@AdjustmentType = 4) --Work Order
BEGIN  
IF (@IsPrevious = 1)  
SELECT MAX(strInvTrfOrdDocID)  
FROM tblInvTrfOrdDoc  
WHERE strInvTrfOrdDocID < @DocNumber 
ELSE  
SELECT MIN(strInvTrfOrdDocID)  
FROM tblInvTrfOrdDoc  
WHERE strInvTrfOrdDocID > @DocNumber 
END  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SaveManWIPData] 
@SQstrWIPDocID as nvarchar(50)
,@SQstrJBDocID as nvarchar(50)
,@SQstrWCCode as nvarchar(20)
,@SQdteSystemDate as smalldatetime
,@SQdteJournalDate as smalldatetime
,@SQstrUserName as nvarchar(20)
,@SQintType as int
,@SQlngJourID as bigint
,@SQstrFileName as nvarchar(250)
AS
BEGIN
INSERT INTO tblManWIP
(strWIPDocID, strJBDocID, strWCCode, dteSystemDate, dteJournalDate, strUserName, intType, lngJourID,
strFileName)
VALUES (
@SQstrWIPDocID
,@SQstrJBDocID
,@SQstrWCCode
,@SQdteSystemDate
,@SQdteJournalDate
,@SQstrUserName
,@SQintType
,@SQlngJourID
,@SQstrFileName
);
END
GO


----------------------------------------------------
CREATE PROCEDURE [GetMachNextLineNumber] 
@SQstrJBDocID as nvarchar(50)
AS
BEGIN
SELECT ISNULL(MAX(intLineNo),0) + 1 FROM tblManJobCompMach WHERE strJBDocID = @SQstrJBDocID;
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptSerialLotItemData] (
	@IsOptSearchItem BIT
	,@SearchTextItem NVARCHAR(MAX)
	,@IsCheckedInActiveItem BIT
	,@SerialLotType INT
	,@IsOptFilterOptSN BIT
	,@IsSelectedItem BIT
	,@SerialNumber NVARCHAR(MAX)
	,@IsChkLocationAll BIT
	,@Location NVARCHAR(MAX)
	,@IsBPToolsMode BIT
	,@Username NVARCHAR(MAX)
	,@IsPLInvSortDescription BIT
	)
AS
BEGIN
	DECLARE @Query NVARCHAR(MAX) = ''

	IF (@IsOptSearchItem = 1)
	BEGIN
		IF @SearchTextItem <> ''
			AND Len(@SearchTextItem) > 0
		BEGIN
			IF (@IsCheckedInActiveItem = 1)
				SET @Query += 'SELECT DISTINCT tblInv.strPartNumber, tblInv.strDesc, tblInv.intType FROM tblInv INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType INNER JOIN tblSerialNumberTracking ON tblInv.strPartNumber = tblSerialNumberTracking.strPartNumber WHERE (tblInv.strPartNumber LIKE  ''%' + @SearchTextItem + '%'') AND (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND (tblInvSerialTypes.intType = ' + CONVERT(NVARCHAR(10), @SerialLotType) + ')'
			ELSE
				SET @Query += 'SELECT DISTINCT tblInv.strPartNumber, tblInv.strDesc, tblInv.intType FROM tblInv INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType INNER JOIN tblSerialNumberTracking ON tblInv.strPartNumber = tblSerialNumberTracking.strPartNumber WHERE (tblInv.strPartNumber LIKE ''%' + @SearchTextItem + '%'') AND (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND (tblInv.bitInactive = 0) AND (tblInvSerialTypes.intType = ' + CONVERT(NVARCHAR(10), @SerialLotType) + ')'
		END
		ELSE
		BEGIN
			IF (@IsCheckedInActiveItem = 0)
				SET @Query += 'SELECT DISTINCT tblInv.strPartNumber, tblInv.strDesc, tblInv.intType FROM tblInv INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType INNER JOIN tblSerialNumberTracking ON tblInv.strPartNumber = tblSerialNumberTracking.strPartNumber WHERE (tblInv.intType = 1) AND (tblInv.bitInactive = 0) AND tblInv.bitOtherCmp = 0 AND (tblInvSerialTypes.intType = ' + CONVERT(NVARCHAR(10), @SerialLotType) + ')'
			ELSE
				SET @Query += 'SELECT DISTINCT tblInv.strPartNumber, tblInv.strDesc, tblInv.intType FROM tblInv INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType INNER JOIN tblSerialNumberTracking ON tblInv.strPartNumber = tblSerialNumberTracking.strPartNumber WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND (tblInvSerialTypes.intType = ' + CONVERT(NVARCHAR(10), @SerialLotType) + ')'
		END
	END
	ELSE
	BEGIN
		IF (@IsCheckedInActiveItem = 0)
			SET @Query += 'SELECT DISTINCT tblInv.strPartNumber, tblInv.strDesc, tblInv.intType FROM tblInv INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType INNER JOIN tblSerialNumberTracking ON tblInv.strPartNumber = tblSerialNumberTracking.strPartNumber WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND (tblInv.bitInactive = 0) AND (tblInvSerialTypes.intType = ' + CONVERT(NVARCHAR(10), @SerialLotType) + ')'
		ELSE
			SET @Query += 'SELECT DISTINCT tblInv.strPartNumber, tblInv.strDesc, tblInv.intType FROM tblInv INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType INNER JOIN tblSerialNumberTracking ON tblInv.strPartNumber = tblSerialNumberTracking.strPartNumber WHERE (tblInv.intType = 1) AND tblInv.bitOtherCmp = 0 AND (tblInvSerialTypes.intType = ' + CONVERT(NVARCHAR(10), @SerialLotType) + ')'
	END

	IF (@IsOptFilterOptSN = 1)
	BEGIN
		IF (@IsSelectedItem = 1)
			SET @Query += ' AND (tblSerialNumberTracking.strSerialNumber IN (SELECT * FROM fnSplitStringAsTable(''' + @SerialNumber + ''','', '')))'
	END

	IF (@IsChkLocationAll = 0)
		SET @Query += ' AND (tblSerialNumberTracking.strLocation = ''' + @Location + ''')'

	IF (@IsBPToolsMode = 0)
		SET @Query += 'AND strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = ''' + @Username + '''))'

	IF (@IsPLInvSortDescription = 0)
		SET @Query += '  ORDER BY tblInv.strPartNumber '
	ELSE
		SET @Query += '  ORDER BY tblInv.strDesc '

	EXEC sp_Executesql @Query
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptSerialLotData] (
	@IsOptFilterOptSN BIT
	,@IsOptSearchItem BIT
	,@SearchTextItem NVARCHAR(MAX)
	,@SerialLotType INT
	,@IsSelectedItem BIT
	,@PartNumber NVARCHAR(MAX)
	,@IsChkLocationAll BIT
	,@Location NVARCHAR(MAX)
	)
AS
BEGIN
	DECLARE @Query NVARCHAR(MAX) = ''

	IF (@IsOptFilterOptSN = 1)
	BEGIN
		IF @SearchTextItem <> ''
			AND Len(@SearchTextItem) > 0
			SET @Query += 'SELECT DISTINCT tblSerialNumberTracking.strSerialNumber FROM tblSerialNumberTracking INNER JOIN tblInv ON tblSerialNumberTracking.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType WHERE (tblInvSerialTypes.intType =  ' + CONVERT(NVARCHAR(10), @SerialLotType) + ' ) AND (tblSerialNumberTracking.strSerialNumber LIKE ''' + '%' + @SearchTextItem + '%' + ''') '
		ELSE
			SET @Query += 'SELECT DISTINCT tblSerialNumberTracking.strSerialNumber FROM tblSerialNumberTracking INNER JOIN tblInv ON tblSerialNumberTracking.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType WHERE (tblInvSerialTypes.intType = ' + CONVERT(NVARCHAR(10), @SerialLotType) + ') '
	END
	ELSE
		SET @Query += 'SELECT DISTINCT tblSerialNumberTracking.strSerialNumber FROM tblSerialNumberTracking INNER JOIN tblInv ON tblSerialNumberTracking.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType WHERE (tblInvSerialTypes.intType =  ' + CONVERT(NVARCHAR(10), @SerialLotType) + ' ) '

	IF (@IsSelectedItem = 1)
	BEGIN
		SET @Query += ' AND (tblSerialNumberTracking.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(' + @PartNumber + ', '','')))'
	END

	IF (@IsChkLocationAll = 0)
		SET @Query += ' AND (tblSerialNumberTracking.strLocation = ''' + @Location + ''')'
	SET @Query += '  ORDER BY strSerialNumber '

	EXEC sp_Executesql @Query
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptSerialLotUpdateDate]
AS
BEGIN
SELECT MIN(dteUpdatedDate) As minDate, MAX(dteUpdatedDate) As maxDate FROM tblSerialNumberTracking
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptSerialLotLocationData] @Username NVARCHAR(200)
AS
BEGIN
SELECT tblInvLoc.strLocName, 
ISNULL((SELECT COUNT(tblInvLocSec.strLocName) FROM tblInvLocSec WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName),0) As strLocName2, 
ISNULL(tblInvLocSec.strUserName,'') As strUserName 
FROM tblInvLoc LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName AND 
tblInvLocSec.strUserName = @Username WHERE tblInvLoc.intType = 0 ORDER BY tblInvLoc.strLocName
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptSerialLotPartNumber] @PartNumber NVARCHAR(200)
AS
BEGIN
SELECT @PartNumber + ',' + STUFF((SELECT ',' + strPartNumber FROM tblInvAsmDocDT WHERE strAsmDocID IN(SELECT strAsmDocID FROM tblInvAsmDocDT 
WHERE strPartNumber IN(SELECT * FROM fnSplitStringAsTable(@PartNumber, ',')) AND bitComponents = 1) AND bitComponents = 0 FOR XML PATH('')),1,1,'')
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptSerialLotDOcDTPartNumber](
@IsAllCustomers bit,
@PartNumber NVARCHAR(200),
@SerialNumbers NVARCHAR(MAX)
)
AS
BEGIN
IF(@IsAllCustomers = 1)
SELECT STUFF(( SELECT ',' + strPartNumber FROM tblInvAsmDocDT WHERE strAsmDocID IN( SELECT tblInvAsmDocDT.strAsmDocID FROM tblInvAsmDocDT INNER JOIN tblInvAsmDocDTSerial ON tblInvAsmDocDT.strAsmDocID = tblInvAsmDocDTSerial.strAsmDocID AND tblInvAsmDocDT.intLineNo = tblInvAsmDocDTSerial.intLineNo WHERE tblInvAsmDocDT.strPartNumber IN ( SELECT * FROM fnSplitStringAsTable(@PartNumber, ',')) AND tblInvAsmDocDT.bitComponents = 1 AND tblInvAsmDocDTSerial.strSerialNumber = tblInvAsmDocDTSerial.strSerialNumber ) AND bitComponents = 0 FOR XML PATH('') ), 1, 1, '')
ELSE
SELECT STUFF(( SELECT ',' + strPartNumber FROM tblInvAsmDocDT WHERE strAsmDocID IN( SELECT tblInvAsmDocDT.strAsmDocID FROM tblInvAsmDocDT INNER JOIN tblInvAsmDocDTSerial ON tblInvAsmDocDT.strAsmDocID = tblInvAsmDocDTSerial.strAsmDocID AND tblInvAsmDocDT.intLineNo = tblInvAsmDocDTSerial.intLineNo WHERE tblInvAsmDocDT.strPartNumber IN ( SELECT * FROM fnSplitStringAsTable(@SerialNumbers, ',')) AND tblInvAsmDocDT.bitComponents = 1 AND tblInvAsmDocDTSerial.strSerialNumber IN (SELECT * from fnSplitStringAsTable( @SerialNumbers,',')) ) AND bitComponents = 0 FOR XML PATH('') ), 1, 1, '')
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRptSerialLotComINVPartNumber](
@IsAllCustomers bit,
@PartNumber NVARCHAR(200),
@SerialNumbers NVARCHAR(MAX)
)
AS
BEGIN
IF(@IsAllCustomers = 1)
SELECT STUFF((SELECT ',' + tblManWIPCompInv.strBOMNumber FROM tblManWIPCompInv INNER JOIN tblManWIPCompInvSerial ON tblManWIPCompInv.strWIPDocID = tblManWIPCompInvSerial.strWIPDocID WHERE tblManWIPCompInv.strPartNumber IN(SELECT * FROM fnSplitStringAsTable(@PartNumber, ',')) FOR XML PATH('')),1,1,'')
ELSE
SELECT STUFF((SELECT ',' + tblManWIPCompInv.strBOMNumber FROM tblManWIPCompInv INNER JOIN tblManWIPCompInvSerial ON tblManWIPCompInv.strWIPDocID = tblManWIPCompInvSerial.strWIPDocID WHERE tblManWIPCompInv.strPartNumber IN(SELECT * FROM fnSplitStringAsTable(@SerialNumbers, ',')) AND tblManWIPCompInvSerial.strSerialNumber IN (SELECT * FROM fnSplitStringAsTable(@SerialNumbers,',')) FOR XML PATH('')),1,1,'')
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOpenManJobDataByDate](  
@SQTypeRV int,  
@SQStart DateTime,  
@SQEnd DateTime
)  
AS  
BEGIN  
SELECT 
tblManJob.strJBDocID as JBDocID, 
tblManJob.dteJournalDate as JournalDate, 
CASE WHEN tblManJob.intType = @SQTypeRV THEN 'REV-' + tblManJobReversed.strJBDocID ELSE tblManJob.strReference END AS Reference, 
tblManJob.strCustName as CustomerNumber, 
tblManJob.strWCCode as WorkCenter, 
tblManJob.intType as [Type] 
FROM tblManJob 
LEFT JOIN tblManJobReversed ON tblManJob.strJBDocID = tblManJobReversed.strJBDocIDRev 
WHERE tblManJob.dteJournalDate BETWEEN @SQStart AND @SQEnd 
END 
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManJobInvBinCount](
@BinLocCode NVARCHAR(200),
@LocName NVARCHAR(200)
)
AS
BEGIN
SELECT COUNT(strUserName) FROM tblInvLocBinSec WHERE strLocName = @LocName AND strBinCode = @BinLocCode
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManJobInvBinCountByUserID](
@BinLocCode NVARCHAR(200),
@LocName NVARCHAR(200),
@UserID NVARCHAR(200)
)
AS
BEGIN
SELECT COUNT(strUserName) FROM tblInvLocBinSec WHERE strLocName = @LocName AND strUserName = @UserID AND strBinCode = @BinLocCode
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetReOrderVendorData] @PartNumber NVARCHAR(200)
AS
BEGIN
SELECT 
tblVendors.strVendName as VendorName, 
tblVendors.strVendDesc as VendorDescription, 
tblInvVend.strItemCode as ItemCode, 
tblInvVend.strItemDesc as ItemDescription, 
tblInvVend.intWarrantyDays as WarrantyDays, 
tblInvVend.decPrice as Price, 
tblInvVend.decLocalPrice as LocalPrice, 
tblInvVend.decDiscPerc as DiscountPercentage, 
tblInvVend.decLandedCostFactor as LandedCostFactor,  
tblInvVend.bitPreferred as Preferred, 
tblInvVend.lngID  as ID
FROM tblInvVend 
INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName
WHERE strPartNumber = @PartNumber ORDER BY tblInvVend.strVendName
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvWorkWarehouseDetails] (
@PartNumber NVARCHAR(50),
@Location NVARCHAR(10)
)
AS
BEGIN
SELECT 
tblInvExt.strLocName AS [Location],
tblInvExt.decAvail AS Available,
tblInvExt.decOnHand AS OnHand,
tblInvLoc.intType AS LocationType,
ISNULL(( SELECT COUNT(tblInvLocSec.strLocName) FROM tblInvLocSec WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName), 0) as [LocationCount],
ISNULL(tblInvLocSec.strUserName, '') AS Username,
tblInvExt.decAlloc AS Alloc,
tblInvExt.decOnOrder AS OnOrder,
tblInvExt.decManuf AS Manuf,
(SELECT SUM(QTY) FROM( SELECT (ISNULL(SUM(DT.decQtyRemaining), 0) * -1) AS QTY FROM tblInvTrfOrdDoc DOC INNER JOIN tblInvTrfOrdDocDT DT ON DOC.strInvTrfOrdDocID = DT.strInvTrfOrdDocID WHERE DOC.bitCleared = 0 AND DOC.strLocName = @Location AND DT.strPartNumber = @PartNumber UNION ALL SELECT ISNULL(SUM(DT.decQtyRemaining), 0) AS QTY FROM tblInvTrfOrdDoc DOC INNER JOIN tblInvTrfOrdDocDT DT ON DOC.strInvTrfOrdDocID = DT.strInvTrfOrdDocID WHERE DOC.bitCleared = 0 AND DOC.strToLocName = @Location AND DT.strPartNumber = @PartNumber ) AS Result1 ) AS SalesOrder,
(SELECT SUM(QTY) FROM ( SELECT (ISNULL(SUM(DT.decQty), 0) *-1) AS QTY FROM tblInvTrfDoc DOC INNER JOIN tblInvTrfDocDT DT ON DOC.strTrfDocID = DT.strTrfDocID WHERE bitWarehouseTrf = 1 AND bitCleared = 0 AND strFromLoc = @Location AND DT.strPartNumber = @PartNumber UNION ALL SELECT ISNULL(SUM(DT.decQty), 0) AS QTY 
FROM tblInvTrfDoc DOC INNER JOIN tblInvTrfDocDT DT ON DOC.strTrfDocID = DT.strTrfDocID WHERE bitWarehouseTrf = 1 AND bitCleared = 0 AND strToLoc = @Location AND DT.strPartNumber = @PartNumber ) AS Result2 ) AS Purchase 
FROM tblInvExt 
INNER JOIN tblInvLoc ON tblInvExt.strLocName = tblInvLoc.strLocName 
LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName WHERE tblInvExt.strPartNumber = @PartNumber
AND tblInvExt.strLocName = @Location
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[UdateProductionScheduleDTDetails](
@LocName NVARCHAR(200),
@lngID bigint
)
AS
BEGIN
UPDATE tblProductionScheduleDT SET strLocName = @LocName WHERE lngID = @lngID
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvValueBasedPricingRefreshSubData](
@ValueBased  NVARCHAR(MAX),
@SearchText NVARCHAR(MAX)
)
AS
BEGIN
DECLARE @Query NVARCHAR(MAX)
SET @Query = 'SELECT uidValueBasedID as ValueBasedID, dteStartDate as StartDate , dteFinishDate as FinishDate, bitInactive  as Inactive FROM tblValueBasedPricing WHERE strValueBased = '''+@ValueBased+''' '
IF(Len(@SearchText) > 0)
SET @Query += ' AND (CONVERT(nvarchar(20), dteStartDate, 103) LIKE ''%' +@SearchText+'%'' OR CONVERT(nvarchar(20), dteFinishDate, 103) LIKE ''%' +@SearchText+'%'' OR CASE WHEN bitInactive = 1 THEN ''Inactive'' ELSE ''Active'' END LIKE ''%' +@SearchText+'%'')' 
SET @Query += ' ORDER BY dteStartDate'
PRINT(@Query)
EXEC(@Query)
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvValueBasedPricingValueBasedCount]
AS
BEGIN
SELECT COUNT(strValueBased) FROM tblValueBased WHERE strValueBased LIKE '<<COPY%'
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[InvValueBasedPricingCopyData](
@ValueBasedCopy NVARCHAR(200),
@ValueBased NVARCHAR(200)
)
AS
BEGIN
INSERT INTO tblValueBased SELECT @ValueBasedCopy, '', 0, bitApplyItem, bitApplyTax, GetDate() FROM tblValueBased WHERE strValueBased = @ValueBased
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[InvValueBasedPricingData](
@ValueBasedCopy NVARCHAR(200),
@ValueBased NVARCHAR(200),
@uidValueBasedIDNew uniqueidentifier,
@ValueBasedID uniqueidentifier
)
AS
BEGIN
INSERT INTO tblValueBasedPricing SELECT @uidValueBasedIDNew, @ValueBasedCopy, dteStartDate, dteFinishDate, bitInactive FROM tblValueBasedPricing 
WHERE strValueBased = @ValueBased AND uidValueBasedID = @ValueBasedID
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[InvValueBasedPricingDTData](
@uidValueBasedIDNew uniqueidentifier,
@uidValueBasedID uniqueidentifier
)
AS
BEGIN
INSERT INTO tblValueBasedPricingDT SELECT @uidValueBasedIDNew, intType, intLineNo, strCategory, decValueFrom, decValueTo, decSpecialValue, strPartNumber FROM tblValueBasedPricingDT WHERE uidValueBasedID = @uidValueBasedID
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvValueBasedPricingAddRefreshData] @uidValueBasedID uniqueidentifier
AS
BEGIN
SELECT 
DTL.intType as [Type], 
DTL.strCategory as Category, 
DTL.decValueFrom as ValueFrom, 
DTL.decValueTo as ValueTo, 
DTL.decSpecialValue as DiscPerc, 
ISNULL(DTL.strPartNumber,'') as PartNumber, 
ISNULL(INV.strDesc,'') as [Desc],
ISNULL(INV.intType,0), 
CASE ISNULL(INV.intType,0) WHEN 1 THEN 'INVENTORY' WHEN 4 THEN 'SERVICES' WHEN 5 THEN 'JOURNAL' ELSE 'UNKNOWN' END as InvType ,  
ISNULL(INV.strCategory,'') as InvCategory, 
'',
'', 
ISNULL(INV.bitInactive,0) as Inactive
FROM tblValueBasedPricingDT AS DTL 
LEFT JOIN tblInv AS INV ON DTL.strPartNumber = INV.strPartNumber 
WHERE DTL.uidValueBasedID = @uidValueBasedID ORDER BY DTL.intType, DTL.intLineNo
END
GO


----------------------------------------------------

CREATE PROCEDURE [dbo].[GetInvValueBasedPricingAddRefreshDataByCategory] @Category NVARCHAR(MAX)
AS
BEGIN
	SELECT strPartNumber AS PartNumber
		,strDesc AS [Desc]
		,intType AS [Type]
		,CASE intType
			WHEN 1
				THEN 'INVENTORY'
			WHEN 4
				THEN 'SERVICES'
			WHEN 5
				THEN 'JOURNAL'
			ELSE 'UNKNOWN'
			END AS InvType
		,ISNULL(strCategory, '') AS InvCategory
		,''
		,''
		,bitInactive
		,bitInactive AS Inactive
	FROM tblInv
	WHERE strCategory = @Category
		AND bitOtherCmp = 0
	ORDER BY strPartNumber
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertValueBasedData](
@ValueBased NVARCHAR(MAX), 
@Desc NVARCHAR(MAX), 
@IsInactive bit, 
@IsApplyItem bit, 
@IsApplyTax bit
)
AS
BEGIN
INSERT INTO tblValueBased VALUES (@ValueBased, @Desc, @IsInactive, @IsApplyItem, @IsApplyTax, GetDate())
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateValueBasedData] (
	@IsDesc BIT
	,@Desc NVARCHAR(200)
	,@IsInactiveAvial BIT
	,@IsInactive BIT
	,@IsApplySpecialPriceAvail BIT
	,@IsApplySpecialPrice BIT
	,@IsApplyTaxAvail BIT
	,@IsApplyTax BIT
	,@IsNameAvail BIT
	,@ValueBased NVARCHAR(MAX)
	,@OldValueBased NVARCHAR(MAX)
	)
AS
BEGIN
	UPDATE tblValueBased
	SET strDesc = @Desc
		,bitInactive = @IsInactive
		,bitApplyItem = @IsApplySpecialPrice
		,bitApplyTax = @IsApplyTax
		,strValueBased = @ValueBased
	WHERE strValueBased = @OldValueBased
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InvValueBasedSavePricingData](
@uidValueBasedID uniqueidentifier,
@ValueBased NVARCHAR(200),
@StartDate DateTime,
@FinishDate DateTime,
@IsInactive bit
)
AS
BEGIN
INSERT INTO tblValueBasedPricing VALUES (@uidValueBasedID, @ValueBased, @StartDate, @FinishDate, @IsInactive)
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[InvValueBasedSavePricingDTData] (
	@uidValueBasedID UNIQUEIDENTIFIER
	,@Type INT
	,@LineNo INT
	,@Category NVARCHAR(200)
	,@ValueFrom DECIMAL(18, 4)
	,@ValueTo DECIMAL(18, 4)
	,@SpecialValue DECIMAL(18, 4)
	,@PartNumber NVARCHAR(200)
	)
AS
BEGIN
	INSERT INTO tblValueBasedPricingDT
	VALUES (
		@uidValueBasedID
		,@Type
		,@LineNo
		,@Category
		,@ValueFrom
		,@ValueTo
		,@SpecialValue
		,@PartNumber
		)
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[InvValueBasedSaveTrackingData] (
	@uidValueBasedID UNIQUEIDENTIFIER
	,@Type INT
	,@ValueBased NVARCHAR(200)
	,@CategoryTo NVARCHAR(200)
	,@CategoryFrom NVARCHAR(200)
	,@ValueFrom DECIMAL(18, 4)
	,@ValueTo DECIMAL(18, 4)
	,@SpecialValueTo DECIMAL
	,@SpecialValueFrom DECIMAL
	,@UserName NVARCHAR(200)
	)
AS
BEGIN
	INSERT INTO tblValueBasedTracking (
		strValueBased
		,dteUpdatedDate
		,strUserName
		,intType
		,strCategoryFrom
		,strCategoryTo
		,decSpecialValueFrom
		,decSpecialValueTo
		,decValueFrom
		,decValueTo
		,uidValueBasedID
		)
	VALUES (
		@ValueBased
		,GetDate()
		,@UserName
		,@Type
		,@CategoryFrom
		,@CategoryTo
		,@SpecialValueFrom
		,@SpecialValueTo
		,@ValueFrom
		,@ValueTo
		,@uidValueBasedID
		)
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvCountExtData](
@PartNumber NVARCHAR(200),
@LocName NVARCHAR(200),
@BinCode NVARCHAR(200)
)
AS
BEGIN
SELECT 
CASE WHEN IE.decValue = 0 OR IE.decOnHand = 0 THEN 0 ELSE IE.decValue / IE.decOnHand END AS StandardCost, 
INV.bitInvSerialType as IsSerialType, 
INV.strDesc as [Desc],
LOC.strBinCode as BinCode,
EXT.lngBinID as BinId,
EXT.decOnHand as OnHand
FROM tblInvExt IE 
INNER JOIN tblInv INV ON IE.strPartNumber = INV.strPartNumber 
INNER JOIN tblInvExtBin EXT ON IE.strPartNumber = EXT.strPartNumber AND IE.strLocName = EXT.strLocName 
INNER JOIN tblInvLocBin LOC ON EXT.lngBinID = LOC.lngID 
WHERE IE.strPartNumber = @PartNumber AND IE.strLocName = @LocName AND strBinCode = @BinCode
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvCountSerialData] (
	@IsLotControl BIT
	,@PartNumber NVARCHAR(200)
	,@LocName NVARCHAR(200)
	,@BinId BIGINT
	)
AS
BEGIN
	IF (@IsLotControl = 1)
		SELECT tblInvLotExt.strLotNumber AS SerialNumber
			,tblInvLotExt.decQty AS Quantity
			,tblInv.strBuyUnit AS Unit
			,tblInvLotExt.bitExpiryDate AS IsExpiryDateExists
			,tblInvLotExt.dteExpiryDate AS ExpiryDate
			,ISNULL(tblInvSerialTypes.strInvSerialType, '') AS InvSerialType
		FROM tblInvLotExt
		INNER JOIN tblInv ON tblInvLotExt.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
		WHERE tblInvLotExt.strLocName = @LocName
			AND tblInvLotExt.strPartNumber = @PartNumber
			AND tblInvLotExt.decQty > 0
			AND tblInvLotExt.lngBinId = @BinId
		ORDER BY tblInvLotExt.strLotNumber
	ELSE
		SELECT tblInvSerialExt.strSerialNumber AS SerialNumber
			,tblInvSerialExt.decQty AS Quantity
			,tblInv.strBuyUnit AS Unit
			,CAST(0 as bit) AS IsExpiryDateExists
			,GETDATE() AS ExpiryDate
			,ISNULL(tblInvSerialTypes.strInvSerialType, '') AS InvSerialType
		FROM tblInvSerialExt
		INNER JOIN tblInv ON tblInvSerialExt.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
		WHERE tblInvSerialExt.strLocName = @LocName
			AND tblInvSerialExt.strPartNumber = @PartNumber
			AND tblInvSerialExt.decQty > 0
			AND tblInvSerialExt.lngBinId = @BinId
		ORDER BY tblInvSerialExt.strSerialNumber
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvCountDataByPartNumber](
@PartNumber NVARCHAR(200),
@LocName NVARCHAR(200)
)
AS
BEGIN
SELECT 
CASE WHEN IE.decValue = 0 OR IE.decOnHand = 0 THEN INV.decLastPPUnit ELSE IE.decValue / IE.decOnHand END as UnitCost, 
CASE WHEN ISNULL(tblInvSerialTypes.bitMethod,0) = 0 THEN ISNULL(tblInvSerialTypes.bitMethod,0) ELSE INV.bitInvSerialType END as InvSerialNo, 
INV.strDesc as [Description], 
LOC.strBinCode as BinLocation, 
EXT.lngBinID as BinId, 
cast(ISNULL(tblInvSerialTypes.intType, 0)as int ) AS SerialLotType, 
ISNULL(tblInvSerialTypes.bitDimensionExist,0) as DimentionFlag, 
ISNULL(INV.strStockUnit, '') AS Unit, 
ISNULL(IE.decOnHand, 0) AS CurrOnHand 
FROM tblInvExt IE 
INNER JOIN tblInv INV ON IE.strPartNumber = INV.strPartNumber 
INNER JOIN tblInvExtBin EXT ON IE.strPartNumber = EXT.strPartNumber AND IE.strLocName = EXT.strLocName 
INNER JOIN tblInvLocBin LOC ON EXT.lngBinID = LOC.lngID 
LEFT JOIN tblInvSerialTypes ON INV.strInvSerialType = tblInvSerialTypes.strInvSerialType 
WHERE IE.strPartNumber = @PartNumber AND IE.strLocName = @LocName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvAdjDocData](
@AdjDocID NVARCHAR(200),
@intAdjDocID int,
@InvTrackID bigint,
@JourID bigint,
@SystemDate DateTime, 
@JournalDate DateTime,
@UserName NVARCHAR(200),
@LocName NVARCHAR(200),
@Comment NVARCHAR(200),
@Account NVARCHAR(200),
@Total decimal,
@Dept int,
@FileName NVARCHAR(200),
@IsRevaluation bit,
@IsStockCount bit,
@IsActual bit,
@IsSetQtyZero bit
)
AS
BEGIN
INSERT INTO tblInvAdjDoc VALUES (@AdjDocID,@intAdjDocID,@InvTrackID,@JourID,@SystemDate,@JournalDate,@UserName,@LocName,@Comment,
@Account,@Total,@Dept,@FileName,@IsRevaluation,@IsStockCount,@IsActual,@IsSetQtyZero)
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvAdjDocDTData](
@AdjDocID NVARCHAR(200),
@LineNo int,
@PartNumber NVARCHAR(200),
@Qty decimal,
@UnitCost decimal,
@Amount decimal,
@BinID bigint,
@OnHand decimal,
@Value decimal,
@NewValue decimal
)
AS
BEGIN
INSERT INTO tblInvAdjDocDT VALUES (@AdjDocID,@LineNo,@PartNumber,@Qty,@UnitCost,@Amount,@BinID,@OnHand,@Value,@NewValue,null,null,null,null)
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvSerialNumberTracking](
@IsOptVariance bit,
@PartNumber NVARCHAR(200),
@UserName NVARCHAR(200),
@UpdatedDate DateTime,
@Type int,
@DocID NVARCHAR(200),
@LineNo int,
@Location NVARCHAR(200),
@StatusOut int,
@StatusIn int,
@BinId bigint,
@SerialLotType int
)
AS
BEGIN
IF(@IsOptVariance = 1)
BEGIN
INSERT INTO tblSerialNumberTracking(strPartNumber, strSerialNumber, strUserName, dteUpdatedDate, intType, strDocID, intLineNo, decQty, strLocation, intStatus, bitExpiryDate, dteExpiryDate, lngBinId) 
SELECT @PartNumber, Z.strSerialNumber, @UserName, @UpdatedDate, @Type, @DocID, @LineNo, Z.decQty, @Location, @StatusOut, 
Z.bitExpiryDate, Z.dteExpiryDate,@BinId FROM(SELECT strSerialNumber, 
ISNULL((SELECT SUM(CASE WHEN SNT.intStatus = @StatusOut THEN SNT.decQty* -1 ELSE SNT.decQty END) FROM tblSerialNumberTracking SNT WHERE SNT.strPartNumber = tblSerialNumberTracking.strPartNumber AND SNT.strSerialNumber = tblSerialNumberTracking.strSerialNumber AND SNT.strLocation = tblSerialNumberTracking.strLocation),0) AS decQty, bitExpiryDate, dteExpiryDate 
FROM tblSerialNumberTracking INNER JOIN tblInv ON tblSerialNumberTracking.strPartNumber = tblInv.strPartNumber 
INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
WHERE lngID IN(SELECT MAX(lngID) FROM tblSerialNumberTracking WHERE strPartNumber = @PartNumber AND strLocation = @Location AND lngBinID = @BinId GROUP BY strSerialNumber) AND ISNULL((SELECT SUM(CASE WHEN SNT.intStatus = @StatusOut 
THEN SNT.decQty* -1 ELSE SNT.decQty END) FROM tblSerialNumberTracking SNT WHERE SNT.strPartNumber = tblSerialNumberTracking.strPartNumber AND SNT.strSerialNumber = tblSerialNumberTracking.strSerialNumber AND SNT.strLocation = tblSerialNumberTracking.strLocation),0) <> 0 AND(intStatus >= @StatusIn AND intStatus <= CASE WHEN 
tblInvSerialTypes.intType = @SerialLotType THEN @StatusOut ELSE @StatusIn END)) Z
END
ELSE
BEGIN
INSERT INTO tblSerialNumberTracking (strPartNumber,strSerialNumber,strUserName,dteUpdatedDate,intType,strDocID,intLineNo,decQty,strLocation,intStatus,bitExpiryDate,dteExpiryDate,lngBinId) 
SELECT @PartNumber, Z.strSerialNumber, @UserName, @UpdatedDate, @Type, @DocID, @LineNo, Z.decQty, @Location, @StatusOut, Z.bitExpiryDate, Z.dteExpiryDate,@BinId FROM (SELECT strSerialNumber, ISNULL((SELECT SUM(CASE WHEN SNT.intStatus = @StatusOut 
THEN SNT.decQty * -1 ELSE SNT.decQty END) FROM tblSerialNumberTracking SNT WHERE SNT.strPartNumber = tblSerialNumberTracking.strPartNumber AND SNT.strSerialNumber = tblSerialNumberTracking.strSerialNumber AND SNT.strLocation = tblSerialNumberTracking.strLocation AND SNT.lngBinID = tblSerialNumberTracking.lngBinID),0) AS decQty, bitExpiryDate, dteExpiryDate FROM tblSerialNumberTracking 
WHERE lngID IN (SELECT MAX(lngID) FROM tblSerialNumberTracking WHERE strPartNumber = @PartNumber AND strLocation = @Location AND lngBinID = @BinId GROUP BY strSerialNumber) AND ISNULL((SELECT SUM(CASE WHEN SNT.intStatus = @StatusOut THEN SNT.decQty * -1 ELSE SNT.decQty END) FROM tblSerialNumberTracking SNT WHERE SNT.strPartNumber = tblSerialNumberTracking.strPartNumber AND SNT.strSerialNumber = tblSerialNumberTracking.strSerialNumber AND SNT.strLocation = tblSerialNumberTracking.strLocation AND SNT.lngBinID = tblSerialNumberTracking.lngBinID),0) <> 0 ) Z
END
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvSerialNumberTrackingByUserData](
@PartNumber NVARCHAR(200),
@SerialNumber NVARCHAR(200),
@UserName NVARCHAR(200),
@UpdatedDate DateTime,
@Type int,
@DocID NVARCHAR(200),
@LineNo int,
@Qty decimal,
@Location NVARCHAR(200),
@Status int,
@IsExpiryDate bit,
@ExpiryDate DaTeTime,
@BinId bigint
)
AS
BEGIN
INSERT INTO tblSerialNumberTracking(strPartNumber, strSerialNumber, strUserName, dteUpdatedDate, intType, strDocID, intLineNo, decQty, strLocation, intStatus, bitExpiryDate, dteExpiryDate, lngBinId) 
VALUES(@PartNumber, @SerialNumber, @UserName, @UpdatedDate, @Type, @DocID, @LineNo, @Qty, @Location, @Status, @IsExpiryDate, @ExpiryDate, @BinId)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertUpdateInvLotExt](
@IsAvil bit,
@PartNumber NVARCHAR(200),
@LotNumber NVARCHAR(200),
@LocName NVARCHAR(200),
@Qty decimal,
@IsExpiryDate bit,
@ExpiryDate DateTime,
@BinID bigint
)
AS
BEGIN
IF(@IsAvil = 1)
UPDATE tblInvLotExt SET decQty = decQty + @Qty, dteUpdatedDate = GETDATE(), bitExpiryDate = @IsExpiryDate, dteExpiryDate = @ExpiryDate WHERE strPartNumber = @PartNumber AND strLotNumber = @LotNumber AND strLocName = @LocName AND lngBinId=@BinId
ELSE
INSERT INTO tblInvLotExt VALUES (@PartNumber,@LotNumber,@LocName,@Qty,@IsExpiryDate,@ExpiryDate,GETDATE(),@BinID,GetDate())
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertUpdateInvSerialExt](
@IsAvil bit,
@PartNumber NVARCHAR(200),
@SerialNumber NVARCHAR(200),
@LocName NVARCHAR(200),
@DocID NVARCHAR(200),
@Qty decimal,
@IsDimensionExist bit,
@Dimension NVARCHAR(200),
@BinID bigint,
@Status int
)
AS
BEGIN
IF(@IsAvil = 1)
UPDATE tblInvSerialExt SET strLocName = @LocName, decQty = @Qty, intStatus = @Status, strDocID = @DocID, dteUpdatedDate = GETDATE(), lngBinId = @BinId WHERE strPartNumber = @PartNumber AND strSerialNumber = @SerialNumber
ELSE
INSERT INTO tblInvSerialExt VALUES (@PartNumber,@SerialNumber,@LocName,@Qty,@Status,@DocID,GETDATE(),@IsDimensionExist,@Dimension,@BinID,GetDate())
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateInvCountInvLotExt](
@IsLotControl bit,
@Status int,
@PartNumber NVARCHAR(200),
@LocName NVARCHAR(200),
@BinId bigint
)
AS
BEGIN
IF(@IsLotControl = 1)
UPDATE tblInvLotExt SET decQty = 0, dteUpdatedDate = GETDATE() WHERE strPartNumber = @PartNumber AND strLocName = @LocName AND lngBinId = @BinId
ELSE
UPDATE tblInvSerialExt SET decQty = 0, intStatus = @Status, strDocID = 'SC', dteUpdatedDate = GETDATE() WHERE strPartNumber = @PartNumber AND strLocName = @LocName AND lngBinId = @BinId
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvPartCount](
@PartNumber NVARCHAR(200)
)
AS
BEGIN
SELECT COUNT(tblInv.strPartNumber) 
FROM tblInv 
INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
WHERE tblInv.strPartNumber = @PartNumber AND tblInvSerialTypes.bitPrintInv = 1
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvLocData](
@LocationCriteria NVARCHAR(Max),
@Criteria NVARCHAR(MAX)
)
AS
BEGIN
SELECT * FROM  dbo.fnTblInvLocations(@LocationCriteria) tblInv WHERE strPartNumber IN (SELECT DISTINCT * FROM dbo.fnSplitStringAsTable(@Criteria, ','))
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvCountPrintData](
@LocationCriteria NVARCHAR(Max),
@JourID bigint,
@Module int,
@JournalDate DateTime
)
AS
BEGIN
SELECT tblInvTrackingDT.intLineNo, tblInvTrackingDT.strPartNumber AS PartNumber, tblInv.strDesc AS Description, (tblInvTrackingDT.decOnHand + tblInvTrackingDT.decQty) AS Available, tblInvTrackingDT.decOnHand AS OnHand, tblInvTrackingDT.decQty AS Variance, ISNULL(tblInvTrackingDT.decValue / tblInvTrackingDT.decQty,0) AS ValueEa, tblInvTrackingDT.decValue AS ValueTotal, tblInvTracking.lngInvTrackID, tblInvTracking.strSource, CONVERT(varchar(20), tblInvTracking.dteJournalDate, 103) AS dteJournalDate, tblInvTracking.strComment, tblInvTracking.strUserName FROM tblInvTrackingDT INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber WHERE tblInvTracking.lngJourID = @JourID AND tblInvTracking.intModule = @Module AND tblInvTracking.dteJournalDate = @JournalDate ORDER BY tblInvTrackingDT.intLineNo
SELECT * FROM dbo.fnTblInvLocations(@LocationCriteria) tblInv WHERE strPartNumber IN (SELECT DISTINCT tblInvTrackingDT.strPartNumber FROM tblInvTracking INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID WHERE tblInvTracking.lngJourID = @JourID AND tblInvTracking.intModule = @Module AND tblInvTracking.dteJournalDate = @JournalDate)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCoOptsData]  
AS  
BEGIN  
SELECT bitManPromtekRead as IsManPromtekRead, strPalladiumFTPPath asPalladiumFTPPath, 
strPalladiumFTPUserId as PalladiumFTPUserId, strPalladiumFTPPassword as PalladiumFTPPassword, strManPromtekLoc as ManPromtekLoc, strCompCode as CompCode  FROM tblCoOpts  
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetJobBPByJobID] @SQJBDocID varchar(100)
AS
BEGIN
SELECT Z.strPartNumber as PartNumber
,Z.strInvDesc as [Desc]
,Z.strLocation as Location
,Z.decQty as Qty
,Z.decManQty as ManufactureQty
,Z.strDesc
,Z.dteRevDate as RevDate
,Z.strStockUnit as Unit
,Z.decStandardCost as StandardCost
,cast(Z.lngManBOMID as bigint) as ManBOMID
,Z.bitInvSerialType as InvSerialType
,Z.bitDimensionExist as SerialDimensionFlag
,Z.decManQtyClosed - ISNULL(SUM(tblManJobByProd.decManQty), 0) as ReverseQty--12
,Z.decManAmount - CASE
WHEN ISNULL(JC.decManUnitCost, 0) = 0
THEN 0
ELSE ROUND((JC.decManUnitCost * ISNULL(SUM(tblManJobByProd.decManQty), 0)), 2)
END as ManufacturedValue
,Z.bitMethod as Method
,ISNULL(STUFF((
SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX))
FROM tblInvLocBin
WHERE tblInvLocBin.lngId IN (
SELECT lngBinId
FROM tblManJobCloseBin
WHERE tblManJobCloseBin.strInvDocID = JC.strJBDocID
)
FOR XML PATH('')
), 1, 1, ''), '') AS Bin
,ISNULL(STUFF((
SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(MAX))
FROM tblInvLocBin
WHERE tblInvLocBin.lngId IN (
SELECT lngBinId
FROM tblManJobCloseBin
WHERE tblManJobCloseBin.strInvDocID = JC.strJBDocID
)
FOR XML PATH('')
), 1, 1, ''), '') AS BinId
,Z.strOrdDocID as SONumber
FROM (
SELECT tblManJobByProd.strJBDocID
,tblManJobByProd.strPartNumber
,tblInv.strDesc AS strInvDesc
,tblManJobByProd.strLocation
,tblManJobByProd.decQty
,tblManJobByProd.decManQty
,tblManJobByProd.strDesc
,tblManJobByProd.dteRevDate
,tblInv.strStockUnit
,tblInv.decStandardCost
,ISNULL((
SELECT COUNT(BOM.lngManBOMID)
FROM tblManBOM BOM
WHERE BOM.strPartNumber = tblManJobByProd.strPartNumber
AND BOM.bitInactive = 0
), 0) AS lngManBOMID
,tblInv.bitInvSerialType
,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS bitDimensionExist
,ISNULL(SUM(tblManJobClose.decManQtyClosed), 0) AS decManQtyClosed
,ISNULL(SUM(tblManJobClose.decManAmount), 0) AS decManAmount
,MAX(tblManJobClose.lngID) AS lngID
,ISNULL(tblInvSerialTypes.bitMethod, 0) AS bitMethod
,tblManJobByProd.strOrdDocID
FROM tblManJobByProd
INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
LEFT JOIN tblManJobClose ON tblManJobByProd.strJBDocID = tblManJobClose.strJBDocID
AND tblManJobByProd.strPartNumber = tblManJobClose.strPartNumber
WHERE tblManJobByProd.strJBDocID = @SQJBDocID
GROUP BY tblManJobByProd.strJBDocID
,tblManJobByProd.strPartNumber
,tblInv.strDesc
,tblManJobByProd.strLocation
,tblManJobByProd.decQty
,tblManJobByProd.decManQty
,tblManJobByProd.strDesc
,tblManJobByProd.dteRevDate
,tblInv.strStockUnit
,tblInv.decStandardCost
,tblInv.bitInvSerialType
,tblInvSerialTypes.bitDimensionExist
,tblInvSerialTypes.bitMethod
,tblManJobByProd.strOrdDocID
) Z
LEFT JOIN tblManJobClose JC ON Z.lngID = JC.lngID
LEFT JOIN tblManJobReversed ON Z.strJBDocID = tblManJobReversed.strJBDocID
LEFT JOIN tblManJobByProd ON tblManJobReversed.strJBDocIDRev = tblManJobByProd.strJBDocID
AND Z.strPartNumber = tblManJobByProd.strPartNumber
GROUP BY Z.strPartNumber
,Z.strInvDesc
,Z.strLocation
,Z.decQty
,Z.decManQty
,Z.strDesc
,Z.dteRevDate
,Z.strStockUnit
,Z.decStandardCost
,Z.lngManBOMID
,Z.bitInvSerialType
,Z.bitDimensionExist
,Z.decManQtyClosed
,Z.decManAmount
,JC.decManUnitCost
,Z.bitMethod
,JC.strJBDocID
,Z.strOrdDocID
ORDER BY Z.strPartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManCompInvByJobID] @SQJBDocID VARCHAR(100)
AS
BEGIN
	SELECT WCCode
		,PartNumber
		,Description
		,Location
		,BOMQty
		,ManufactureQty
		,LastPPUnit
		,ManufactureValue
		,StockUnit
		,BOMNumber
		,IsInvSerialType
		,LineNumber
		,IsSerialDimensionExist
		,SUM(ReverseQty) AS ReverseQty
		,IsMethod
		,Bin
		,BinId
	FROM (
		SELECT tblManJobCompInv.strWCCode AS WCCode
			,tblManJobCompInv.strPartNumber AS PartNumber
			,tblManJobCompInv.strDesc AS Description
			,tblManJobCompInv.strLocation AS Location
			,tblManJobCompInv.decQty AS BOMQty
			,tblManJobCompInv.decManQty AS ManufactureQty
			,tblManJobCompInv.decPPUnit AS LastPPUnit
			,tblManJobCompInv.decManAmount AS ManufactureValue
			,tblInv.strStockUnit AS StockUnit
			,tblManJobCompInv.strBOMNumber AS BOMNumber
			,tblInv.bitInvSerialType AS IsInvSerialType
			,tblManJobCompInv.intLineNo AS LineNumber
			,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimensionExist
			,(ISNULL(SUM(Z.decPostQty), 0) - ISNULL(SUM(Z.decReturnQty), 0)) - ISNULL(SUM(REVCI.decManQty), 0) AS ReverseQty
			,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
			,ISNULL(STUFF((
						SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX))
						FROM tblInvLocBin
						WHERE tblInvLocBin.lngId IN (
								SELECT lngBinId
								FROM tblManWIPCompInvBin
								WHERE tblManWIPCompInvBin.strWIPDocID = Z.strWIPDocID
									AND tblManWIPCompInvBin.intLineNo = Z.intLineNo
								)
						FOR XML PATH('')
						), 1, 1, ''), '') AS Bin
			,Cast(ISNULL(STUFF((
							SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(MAX))
							FROM tblInvLocBin
							WHERE tblInvLocBin.lngId IN (
									SELECT lngBinId
									FROM tblManWIPCompInvBin
									WHERE tblManWIPCompInvBin.strWIPDocID = Z.strWIPDocID
										AND tblManWIPCompInvBin.intLineNo = Z.intLineNo
									)
							FOR XML PATH('')
							), 1, 1, ''), '') AS BIGINT) AS BinId
		FROM tblManJobCompInv
		INNER JOIN tblInv ON tblManJobCompInv.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
		LEFT JOIN tblManJobReversed REV ON tblManJobCompInv.strJBDocID = REV.strJBDocID
		LEFT JOIN tblManJobCompInv REVCI ON REV.strJBDocIDRev = REVCI.strJBDocID
			AND tblManJobCompInv.strPartNumber = REVCI.strPartNumber
		LEFT JOIN (
			SELECT REVWIP.strJBDocID
				,REVWIP.strWCCode
				,REVWIPCI.intLineNo
				,REVWIPCI.strPartNumber
				,REVWIPCI.decPostQty
				,REVWIPCI.decReturnQty
				,REVWIPCI.strWIPDocID
			FROM tblManWIP REVWIP
			INNER JOIN tblManWIPCompInv REVWIPCI ON REVWIP.strWIPDocID = REVWIPCI.strWIPDocID
			WHERE REVWIP.strJBDocID = @SQJBDocID
			) Z ON tblManJobCompInv.strJBDocID = Z.strJBDocID
			AND tblManJobCompInv.strWCCode = Z.strWCCode
			AND tblManJobCompInv.intLineNo = Z.intLineNo
			AND tblManJobCompInv.strPartNumber = Z.strPartNumber
		WHERE tblManJobCompInv.strJBDocID = @SQJBDocID
		GROUP BY tblManJobCompInv.strWCCode
			,tblManJobCompInv.strPartNumber
			,tblManJobCompInv.strDesc
			,tblManJobCompInv.strLocation
			,tblManJobCompInv.decQty
			,tblManJobCompInv.decManQty
			,tblManJobCompInv.decPPUnit
			,tblManJobCompInv.decManAmount
			,tblInv.strStockUnit
			,tblManJobCompInv.strBOMNumber
			,tblInv.bitInvSerialType
			,tblManJobCompInv.intLineNo
			,tblInvSerialTypes.bitDimensionExist
			,tblInvSerialTypes.bitMethod
			,Z.strWIPDocID
			,Z.intLineNo
		) JOB
	GROUP BY WCCode
		,PartNumber
		,Description
		,Location
		,BOMQty
		,ManufactureQty
		,LastPPUnit
		,ManufactureValue
		,StockUnit
		,BOMNumber
		,IsInvSerialType
		,LineNumber
		,IsSerialDimensionExist
		,IsMethod
		,Bin
		,BinId
	ORDER BY LineNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManCompLabByJobID] @SQJBDocID varchar(100)    
AS  
BEGIN  
SELECT   
tblManJobCompLab.strWCCode as WCCode,   
tblManJobCompLab.strLabCode as LabourCode,   
tblManLabour.strDesc as Description,   
tblManJobCompLab.decVariableHours as VariableHourly,   
tblManJobCompLab.decManVariableHours as ManVariableHourly,   
tblManJobCompLab.decVariableRate as VariableRate,   
tblManJobCompLab.decSetupHours as SetupHours,   
tblManJobCompLab.decSetupRate as SetupRate,  
tblManJobCompLab.decBreakdownHours as BreakdownHours,   
tblManJobCompLab.decBreakdownRate as BreakdownRate,  
tblManJobCompLab.decManAmount as ManufactureValue,   
tblManJobCompLab.strBOMNumber as PartNumber,  
ISNULL(SUM(REVWIPLAB.decPostVariableHours),0) - ISNULL(SUM(REVLAB.decManVariableHours),0) AS MaxReverseVariableHours,   
ISNULL(SUM(REVWIPLAB.decPostSetupHours),0) - ISNULL(SUM(REVLAB.decSetupHours),0) AS MaxReverseSetupHours,   
ISNULL(SUM(REVWIPLAB.decPostBreakdownHours),0) - ISNULL(SUM(REVLAB.decBreakdownHours),0) AS MaxReverseBreakDownHours   
FROM tblManJobCompLab   
INNER JOIN tblManLabour ON tblManJobCompLab.strLabCode = tblManLabour.strLabCode   
LEFT JOIN tblManJobReversed REV ON tblManJobCompLab.strJBDocID = REV.strJBDocID   
LEFT JOIN tblManJobCompLab REVLAB ON REV.strJBDocIDRev = REVLAB.strJBDocID AND tblManJobCompLab.strLabCode = REVLAB.strLabCode   
LEFT JOIN tblManWIP REVWIP ON tblManJobCompLab.strJBDocID = REVWIP.strJBDocID AND tblManJobCompLab.strWCCode = REVWIP.strWCCode 
LEFT JOIN tblManWIPCompLab REVWIPLAB ON REVWIP.strWIPDocID = REVWIPLAB.strWIPDocID AND tblManJobCompLab.strLabCode = REVWIPLAB.strLabCode AND tblManJobCompLab.intLineNo = REVWIPLAB.intLineNo
WHERE tblManJobCompLab.strJBDocID = @SQJBDocID   
GROUP BY tblManJobCompLab.intLineNo, tblManJobCompLab.strWCCode, tblManJobCompLab.strLabCode, tblManLabour.strDesc, tblManJobCompLab.decVariableHours, tblManJobCompLab.decManVariableHours, tblManJobCompLab.decVariableRate, tblManJobCompLab.decSetupHours, 
tblManJobCompLab.decSetupRate,tblManJobCompLab.decBreakdownHours, tblManJobCompLab.decBreakdownRate, tblManJobCompLab.decManAmount, tblManJobCompLab.strBOMNumber   
ORDER BY tblManJobCompLab.intLineNo  
END 
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManCompMachByJobID] @SQJBDocID varchar(100)   
AS  
BEGIN  
SELECT   
tblManJobCompMach.strWCCode as WCCode,   
tblManJobCompMach.strMachCode as MachCode,   
tblManMachinery.strDesc as MachDesc,   
tblManJobCompMach.decVariableHours as VariableHourly,   
tblManJobCompMach.decManVariableHours as ManVariableHourly,   
tblManJobCompMach.decVariableRate as VariableRate,   
tblManJobCompMach.decSetupHours as SetupHours,   
tblManJobCompMach.decSetupRate as SetupRate,   
tblManJobCompMach.decBreakdownHours as BreakdownHours,   
tblManJobCompMach.decBreakdownRate as BreakdownRate,   
tblManJobCompMach.decManAmount as ManufactureValue,   
tblManJobCompMach.strBOMNumber as PartNumber,   
ISNULL(SUM(REVWIPMACH.decPostVariableHours),0) - ISNULL(SUM(REVMACH.decManVariableHours),0) AS MaxReverseVariableHours,   
ISNULL(SUM(REVWIPMACH.decPostSetupHours),0) - ISNULL(SUM(REVMACH.decSetupHours),0) AS MaxReverseSetupHours,   
ISNULL(SUM(REVWIPMACH.decPostBreakdownHours),0) - ISNULL(SUM(REVMACH.decBreakdownHours),0) AS MaxReverseBreakDownHours   
FROM tblManJobCompMach   
INNER JOIN tblManMachinery ON tblManJobCompMach.strMachCode = tblManMachinery.strMachCode   
LEFT JOIN tblManJobReversed REV ON tblManJobCompMach.strJBDocID = REV.strJBDocID   
LEFT JOIN tblManJobCompMach REVMACH ON REV.strJBDocIDRev = REVMACH.strJBDocID AND tblManJobCompMach.strMachCode = REVMACH.strMachCode   
LEFT JOIN tblManWIP REVWIP ON tblManJobCompMach.strJBDocID = REVWIP.strJBDocID AND tblManJobCompMach.strWCCode = REVWIP.strWCCode 
LEFT JOIN tblManWIPCompMach REVWIPMACH ON REVWIP.strWIPDocID = REVWIPMACH.strWIPDocID AND tblManJobCompMach.strMachCode = REVWIPMACH.strMachCode   AND tblManJobCompMach.intLineNo = REVWIPMACH.intLineNo 
WHERE tblManJobCompMach.strJBDocID = @SQJBDocID   
GROUP BY tblManJobCompMach.intLineNo, tblManJobCompMach.strWCCode, tblManJobCompMach.strMachCode, tblManMachinery.strDesc, tblManJobCompMach.decVariableHours, tblManJobCompMach.decManVariableHours, tblManJobCompMach.decVariableRate, tblManJobCompMach.decSetupHours, tblManJobCompMach.decSetupRate, tblManJobCompMach.decBreakdownHours, tblManJobCompMach.decBreakdownRate, tblManJobCompMach.decManAmount, tblManJobCompMach.strBOMNumber   
ORDER BY tblManJobCompMach.intLineNo  
END  
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManCompRecoveryCostByJobID] @SQJBDocID varchar(100) 
AS  
BEGIN  
SELECT   
tblManJobCompOverhead.strWCCode as WCCode,   
tblManJobCompOverhead.intGLNumber as GLNumber,   
tblAccounts.strDesc as Description,   
ISNULL(tblManJobCompOverhead.intDept,0) as DeparmentID,   
tblManJobCompOverhead.uidCenterID as CenterID,   
tblManJobCompOverhead.decAmount as Balance,   
tblManJobCompOverhead.decManAmount as ManufactureValue,  
tblCenters.strLvl1 as CenterLv1,   
tblCenters.strLvl2 as CenterLv2,   
tblCenters.strLvl3 as CenterLv3,   
tblCenters.strLvl4 as CenterLv4,   
tblCenters.strLvl5 as CenterLv5,   
tblManJobCompOverhead.strBOMNumber as PartNumber,  
ISNULL(SUM(REVWIPOH.decPostAmount),0) - ISNULL(SUM(REVOH.decManAmount),0) AS  MaxReverseManufactureAmount,  
tblManJobCompOverhead.intDept as DeptID
FROM tblManJobCompOverhead   
INNER JOIN tblAccounts ON tblManJobCompOverhead.intGLNumber = tblAccounts.intGLNumber   
LEFT JOIN tblCenters ON tblManJobCompOverhead.uidCenterID = tblCenters.uidCenterID   
LEFT JOIN tblManJobReversed REV ON tblManJobCompOverhead.strJBDocID = REV.strJBDocID   
LEFT JOIN tblManJobCompOverhead REVOH ON REV.strJBDocIDRev = REVOH.strJBDocID AND tblManJobCompOverhead.intGLNumber = REVOH.intGLNumber   
LEFT JOIN tblManWIP REVWIP ON tblManJobCompOverhead.strJBDocID = REVWIP.strJBDocID AND tblManJobCompOverhead.strWCCode = REVWIP.strWCCode 
LEFT JOIN tblManWIPCompOverhead REVWIPOH ON REVWIP.strWIPDocID = REVWIPOH.strWIPDocID AND tblManJobCompOverhead.intGLNumber = REVWIPOH.intGLNumber   AND tblManJobCompOverhead.intLineNo = REVWIPOH.intLineNo
WHERE tblManJobCompOverhead.strJBDocID = @SQJBDocID   
GROUP BY tblManJobCompOverhead.intLineNo, tblManJobCompOverhead.strWCCode, tblManJobCompOverhead.intGLNumber, tblAccounts.strDesc, tblManJobCompOverhead.intDept, tblManJobCompOverhead.uidCenterID, tblManJobCompOverhead.decAmount, tblManJobCompOverhead.decManAmount, tblCenters.strLvl1, tblCenters.strLvl2, tblCenters.strLvl3, tblCenters.strLvl4, tblCenters.strLvl5, tblManJobCompOverhead.strBOMNumber   
ORDER BY tblManJobCompOverhead.intLineNo  
END 
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetManJobFillDataSet](  
@SQJBDocID varchar(200),  
@SQCustName varchar(200),  
@SQLocationCriteria varchar(200),
@JobClosed int,
@JobPartClosed int
)  
AS  
BEGIN  
SELECT strJBDocID, dteSystemDate, dteJournalDate, dteRequired, strUserName, strReference, strCustName, intType, ISNULL((SELECT WC.strDesc FROM tblManWorkCentre WC WHERE WC.strWCCode = tblManJob.strWCCode),'') AS strWCCode, tblManJob.dteRowUpdated FROM tblManJob WHERE strJBDocID = @SQJBDocID  
SELECT tblManJobByProd.strJBDocID, tblManJobByProd.strPartNumber, tblManJobByProd.strDesc, tblManJobByProd.strLocation, tblManJobByProd.decQty, tblManJobByProd.decManQty, tblInv.strStockUnit AS strUnit, tblManJobByProd.dteRevDate, tblManJobByProd.strOrdDocID, CASE WHEN tblManJob.intType = @JobClosed OR tblManJob.intType = @JobPartClosed THEN ISNULL(SUM(tblManJobClose.decManQtyClosed), 0) ELSE 0 END AS decManQtyClosed FROM tblManJob INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID LEFT JOIN tblManJobClose ON tblManJobByProd.strJBDocID = tblManJobClose.strJBDocID AND tblManJobByProd.strPartNumber = tblManJobClose.strPartNumber INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber WHERE tblManJobByProd.strJBDocID = @SQJBDocID GROUP BY tblManJobByProd.strJBDocID, tblManJobByProd.strPartNumber, tblManJobByProd.strDesc, tblManJobByProd.strLocation, tblManJobByProd.decQty, tblManJobByProd.decManQty, tblInv.strStockUnit, tblManJobByProd.dteRevDate, tblManJobByProd.strOrdDocID, tblManJob.intType ORDER BY tblManJobByProd.strPartNumber
SELECT tblManJobOp.strJBDocID, tblManJobOp.strWCCode, tblManWorkCentre.strDesc, tblManJobOp.strNotes, tblManJobOp.lngID FROM tblManJobOp INNER JOIN tblManWorkCentre ON tblManJobOp.strWCCode = tblManWorkCentre.strWCCode WHERE tblManJobOp.strJBDocID = @SQJBDocID ORDER BY tblManJobOp.lngID  
SELECT tblManJobCompInv.strJBDocID, tblManJobCompInv.strWCCode, tblManJobCompInv.intLineNo, tblManJobCompInv.strPartNumber, tblManJobCompInv.strDesc, tblManJobCompInv.strLocation, tblManJobCompInv.decQty, tblManJobCompInv.decManQty, tblManJobCompInv.decPPUnit, tblManJobCompInv.decManAmount, ISNULL(SUM(tblManWIPCompInv.decPostQty),0) AS decPostedQty, ISNULL(SUM(tblManWIPCompInv.decPostAmount),0) AS decPostedAmount, tblInv.strStockUnit AS strUnit, tblManJobCompInv.strBOMNumber FROM tblManJobCompInv INNER JOIN tblInv ON tblManJobCompInv.strPartNumber = tblInv.strPartNumber LEFT JOIN tblManWIP ON tblManJobCompInv.strJBDocID = tblManWIP.strJBDocID LEFT JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID AND tblManJobCompInv.intLineNo = tblManWIPCompInv.intLineNo WHERE tblManJobCompInv.strJBDocID = @SQJBDocID GROUP BY tblManJobCompInv.strJBDocID, tblManJobCompInv.strWCCode, tblManJobCompInv.intLineNo, tblManJobCompInv.strPartNumber, tblManJobCompInv.strDesc, tblManJobCompInv.strLocation, tblManJobCompInv.decQty, tblManJobCompInv.decManQty, tblManJobCompInv.decPPUnit, tblManJobCompInv.decManAmount, tblInv.strStockUnit, tblManJobCompInv.strBOMNumber ORDER BY tblManJobCompInv.strJBDocID, tblManJobCompInv.intLineNo  
SELECT tblManJobCompLab.strJBDocID, tblManJobCompLab.strWCCode, tblManJobCompLab.intLineNo, tblManJobCompLab.strLabCode, tblManLabour.strDesc, tblManJobCompLab.decVariableHours, tblManJobCompLab.decManVariableHours, tblManJobCompLab.decVariableRate, tblManJobCompLab.decSetupHours, tblManJobCompLab.decSetupRate, tblManJobCompLab.decBreakdownHours, tblManJobCompLab.decBreakdownRate, tblManJobCompLab.decManAmount, ISNULL(SUM(tblManWIPCompLab.decPostVariableHours),0) AS decPostedVariableHours, ISNULL(SUM(tblManWIPCompLab.decPostSetupHours),0) AS decPostedSetupHours, ISNULL(SUM(tblManWIPCompLab.decPostBreakdownHours),0) AS decPostedBreakdownHours, ISNULL(SUM(tblManWIPCompLab.decPostAmount),0) AS decPostedAmount, tblManJobCompLab.strBOMNumber FROM tblManJobCompLab INNER JOIN tblManLabour ON tblManJobCompLab.strLabCode = tblManLabour.strLabCode LEFT JOIN tblManWIP ON tblManJobCompLab.strJBDocID = tblManWIP.strJBDocID LEFT JOIN tblManWIPCompLab ON tblManWIP.strWIPDocID = tblManWIPCompLab.strWIPDocID AND tblManJobCompLab.intLineNo = tblManWIPCompLab.intLineNo WHERE tblManJobCompLab.strJBDocID = @SQJBDocID GROUP BY tblManJobCompLab.strJBDocID, tblManJobCompLab.strWCCode, tblManJobCompLab.intLineNo, tblManJobCompLab.strLabCode, tblManLabour.strDesc, tblManJobCompLab.decVariableHours, tblManJobCompLab.decManVariableHours, tblManJobCompLab.decVariableRate, tblManJobCompLab.decSetupHours, tblManJobCompLab.decSetupRate, tblManJobCompLab.decBreakdownHours, tblManJobCompLab.decBreakdownRate, tblManJobCompLab.decManAmount, tblManJobCompLab.strBOMNumber ORDER BY tblManJobCompLab.strJBDocID, tblManJobCompLab.intLineNo  
SELECT tblManJobCompMach.strJBDocID, tblManJobCompMach.strWCCode, tblManJobCompMach.intLineNo, tblManJobCompMach.strMachCode, tblManMachinery.strDesc, tblManJobCompMach.decVariableHours, tblManJobCompMach.decManVariableHours, tblManJobCompMach.decVariableRate, tblManJobCompMach.decSetupHours, tblManJobCompMach.decSetupRate, tblManJobCompMach.decBreakdownHours, tblManJobCompMach.decBreakdownRate, tblManJobCompMach.decManAmount, ISNULL(SUM(tblManWIPCompMach.decPostVariableHours),0) AS decPostedVariableHours, ISNULL(SUM(tblManWIPCompMach.decPostSetupHours),0) AS decPostedSetupHours, ISNULL(SUM(tblManWIPCompMach.decPostBreakdownHours),0) AS decPostedBreakdownHours, ISNULL(SUM(tblManWIPCompMach.decPostAmount),0) AS decPostedAmount, tblManJobCompMach.strBOMNumber FROM tblManJobCompMach INNER JOIN tblManMachinery ON tblManJobCompMach.strMachCode = tblManMachinery.strMachCode LEFT JOIN tblManWIP ON tblManJobCompMach.strJBDocID = tblManWIP.strJBDocID LEFT JOIN tblManWIPCompMach ON tblManWIP.strWIPDocID = tblManWIPCompMach.strWIPDocID AND tblManJobCompMach.intLineNo = tblManWIPCompMach.intLineNo WHERE tblManJobCompMach.strJBDocID = @SQJBDocID GROUP BY tblManJobCompMach.strJBDocID, tblManJobCompMach.strWCCode, tblManJobCompMach.intLineNo, tblManJobCompMach.strMachCode, tblManMachinery.strDesc, tblManJobCompMach.decVariableHours, tblManJobCompMach.decManVariableHours, tblManJobCompMach.decVariableRate, tblManJobCompMach.decSetupHours, tblManJobCompMach.decSetupRate, tblManJobCompMach.decBreakdownHours, tblManJobCompMach.decBreakdownRate, tblManJobCompMach.decManAmount, tblManJobCompMach.strBOMNumber ORDER BY tblManJobCompMach.strJBDocID, tblManJobCompMach.intLineNo  
SELECT tblManJobCompOverhead.strJBDocID, tblManJobCompOverhead.strWCCode, tblManJobCompOverhead.intLineNo, tblManJobCompOverhead.intGLNumber, tblAccounts.strDesc AS strAccDesc, ISNULL(tblManJobCompOverhead.intDept,0) AS intDept, ISNULL(tblDepartments.strDesc,'') AS strDeptDesc, tblManJobCompOverhead.uidCenterID, CASE WHEN ISNULL(tblCenters.strLvl1,'') <> '' THEN tblCenters.strLvl1 + CASE WHEN ISNULL(tblCenters.strLvl2,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl2,'') + CASE WHEN ISNULL(tblCenters.strLvl3,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl3,'') + CASE WHEN ISNULL(tblCenters.strLvl4,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') + CASE WHEN ISNULL(tblCenters.strLvl5,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') END END END END ELSE '' END AS strCenter, tblManJobCompOverhead.decAmount, tblManJobCompOverhead.decManAmount, ISNULL(SUM(tblManWIPCompOverhead.decPostAmount),0) AS decPostedAmount, tblManJobCompOverhead.strBOMNumber FROM tblManJobCompOverhead INNER JOIN tblAccounts ON tblManJobCompOverhead.intGLNumber = tblAccounts.intGLNumber LEFT JOIN tblDepartments ON tblManJobCompOverhead.intDept = tblDepartments.intDept LEFT JOIN tblCenters ON tblManJobCompOverhead.uidCenterID = tblCenters.uidCenterID LEFT JOIN tblManWIP ON tblManJobCompOverhead.strJBDocID = tblManWIP.strJBDocID LEFT JOIN tblManWIPCompOverhead ON tblManWIP.strWIPDocID = tblManWIPCompOverhead.strWIPDocID AND tblManJobCompOverhead.intLineNo = tblManWIPCompOverhead.intLineNo WHERE tblManJobCompOverhead.strJBDocID = @SQJBDocID GROUP BY tblManJobCompOverhead.strJBDocID, tblManJobCompOverhead.strWCCode, tblManJobCompOverhead.intLineNo, tblManJobCompOverhead.intGLNumber, tblAccounts.strDesc, ISNULL(tblManJobCompOverhead.intDept,0), ISNULL(tblDepartments.strDesc,''), tblManJobCompOverhead.uidCenterID, CASE WHEN ISNULL(tblCenters.strLvl1,'') <> '' THEN tblCenters.strLvl1 + CASE WHEN ISNULL(tblCenters.strLvl2,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl2,'') + CASE WHEN ISNULL(tblCenters.strLvl3,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl3,'') + CASE WHEN ISNULL(tblCenters.strLvl4,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') + CASE WHEN ISNULL(tblCenters.strLvl5,'') = '' THEN '' ELSE '\' + ISNULL(tblCenters.strLvl4,'') END END END END ELSE '' END, tblManJobCompOverhead.decAmount, tblManJobCompOverhead.decManAmount, tblManJobCompOverhead.strBOMNumber ORDER BY tblManJobCompOverhead.strJBDocID, tblManJobCompOverhead.intLineNo  
SELECT strCustName
			,strStreet1
			,strStreet2
			,strCity
			,strProvince
			,strPostal
			,strPhone
			,strCellPhone
			,strFax
			,strEmail
			,strVAT
			,strCK
			,decBalDue
			,decYTDPurch
			,decOpenOrders
			,intDelMethod
			,bitCreditCtrl
			,decCreditLimit
			,bitCreditHold
			,bitInactive
			,dteUpdated
			,strContact
			,strField1
			,strField2
			,strField3
			,strField4
			,strField5
			,strField6
			,strTaxCode
			,dteSince
			,strNotes
			,strPricelist
			,[uID]
			,decIntRate
			,strCustDesc
			,strCountry
			,strTerm
			,intDept
			,strCurrency
			,decBalDueF
			,decYTDPurchF
			,decOpenOrdersF
			,strField7
			,strField8
			,strField9
			,strField10
			,strField11
			,strField12
			,strEmailInv
			,strEmailStat
			,strCustCategory
			,strCountryCode
			,strTenderType
			,decTradeDiscPerc
			,strWebsite
			,strEmailOso
			,intNAPrintMethod
			,strSuburb
		FROM tblCustomers WHERE strCustName = @SQCustName  
SELECT * FROM dbo.fnTblInvLocations(@SQLocationCriteria) tblInv WHERE strPartNumber IN (SELECT DISTINCT strPartNumber FROM tblManJobByProd WHERE strJBDocID = @SQJBDocID UNION ALL SELECT DISTINCT strPartNumber FROM tblManJobCompInv WHERE strJBDocID = @SQJBDocID)  
SELECT tblManJobByProdSerial.*, ISNULL(tblInvSerialExt.bitDimensionExist,0) AS bitDimensionExist, ISNULL(tblInvSerialExt.strDimension,'') AS strDimension FROM tblManJobByProdSerial INNER JOIN tblManJobByProd ON tblManJobByProdSerial.strJBDocID = tblManJobByProd.strJBDocID AND tblManJobByProdSerial.strPartNumber = tblManJobByProd.strPartNumber LEFT JOIN tblInvSerialExt ON tblManJobByProd.strPartNumber = tblInvSerialExt.strPartNumber AND tblManJobByProdSerial.strSerialNumber = tblInvSerialExt.strSerialNumber INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType WHERE tblManJobByProdSerial.strJBDocID = @SQJBDocID AND tblInvSerialTypes.bitPrintInv = 1 ORDER BY tblManJobByProdSerial.lngID  
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetFirstJournalEntry](
@Start DATETIME,
@GLNumber NVARCHAR(200)
)
AS
BEGIN
SELECT 
ISNULL(SUM(tblJournalEnt.decAmount),0) as Amount, 
ISNULL(SUM(tblJournalEnt.decAmountF),0) as AmountF 
FROM tblJournalEnt 
INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
WHERE (tblJournal.dteJournalDate < @Start) AND (tblJournalEnt.intGLNumber = @GLNumber)
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCashBookJournalEntryData](
@Start DATETIME,
@GLNumber NVARCHAR(200)
)
AS
BEGIN
SELECT 
tblJournal.dteJournalDate as EntDate, 
tblJournal.strComment as Comment, 
tblJournal.strSource as [Source], 
tblJournal.lngJourID as JourID, 
tblJournalEnt.decDebits as Debits, 
tblJournalEnt.decCredits as Credits,
tblJournalEnt.decAmount as Amount, 
tblJournalEnt.decDebitsF as DebitsF, 
tblJournalEnt.decCreditsF as CreditsF, 
tblJournalEnt.decAmountF as AmountF
FROM tblJournal 
INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID 
WHERE tblJournalEnt.intGLNumber = @GLNumber AND tblJournal.dteJournalDate >= @Start 
ORDER BY tblJournal.dteJournalDate, tblJournal.lngJourID
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCashBookAcctData] @GLNumber NVARCHAR(200)
AS
BEGIN
SELECT 
decOpenBalance as OpenBalance,
decOpenBalanceF as OpenBalanceF,
strCurrency as Currency
FROM tblAccounts 
WHERE intGLNumber = @GLNumber
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetDataForProcessJob] @ProcessDocID NVARCHAR(100)
AS
BEGIN
SELECT
INV.strPartNumber as PartNumber,
INV.strDesc as [Description],
(SELECT tblVendors.strVendName FROM tblInvVend INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName WHERE strPartNumber = INV.strPartNumber AND bitPreferred = 1) as VendName,
Isnull(tblWSProcessDocDT.JobQty, 0) as RequiredQty,
INV.strStockUnit as StockUnit,
decOrderLeadTime as OrderLeadTime,
(CASE WHEN(inv.decMinimumLevel) > 0 THEN inv.decMinimumLevel ELSE (intReorderQty) END) AS MinimumLevel,
INV.decSumOnHand as OnHand,
INV.decSumAlloc as SalesOrder,
INV.decSumOnOrder as PurchaseOrder,
Isnull(Isnull(decEconomicOrderQty, 0) * ceiling(((((decSumOnHand + decSumOnOrder) - (intReorderQty + decSumAlloc + decSumManuf)) * - 1))) / decBuyToStock / ( SELECT CASE WHEN decEconomicOrderQty = 0 THEN NULL ELSE decEconomicOrderQty END ) * decBuyToStock, 0) as ToOrderBuy,
INV.decMinimumOrderQuantity as MinimumOrderQuantity,
ISNULL(( SELECT CASE WHEN (decPrice) > 0 THEN decPrice ELSE tblInv.decLastPPUnit END FROM tblInvVend INNER JOIN tblInv ON tblInv.strPartNumber = tblInvVend.strPartNumber WHERE tblInv.strPartNumber = Inv.strPartNumber AND tblInvVend.bitPreferred = 1 ), 0) as VendPrice,
ISNULL(( SELECT decDiscPerc FROM tblInvVend WHERE strPartNumber = INV.strPartNumber AND bitPreferred = 1 ), 0) AS VendDisc ,( SELECT tblVendors.strTaxCode FROM tblInvVend INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName WHERE strPartNumber = INV.strPartNumber AND bitPreferred = 1 ) as TaxCode,
0.00 as TaxRate,
0.00 as Amount,
NULL as TaxObject,
INV.decBuyToStock as BuyRatio,
INV.intReorderQty as ReorderQty,
Isnull(tblWSProcessDocDT.JobQty, 0) AS PurchaseQty,
tblInvExt.decMaxLevel AS MaxLevel,
(INV.decMinimumOrderQuantity) AS MinQty,
(INV.decEconomicOrderQty) AS EconomicOrderQty,
SUM(tblInvExt.decMaxLevel - (tblInvExt.decOnHand - tblInvExt.decAlloc - tblInvExt.decManuf + tblInvExt.decOnOrder)) as ToOrder ,
INV.decSumManuf AS Manufacture ,
tblWSProcessDocDT.[LineNo]  as [LineNo]
FROM tblInv INV 
INNER JOIN tblInvExt ON INV.strPartNumber = tblInvExt.strPartNumber 
INNER JOIN tblWSProcessDocDT 
ON (INV.strPartNumber = tblWSProcessDocDT.Partnumber AND tblInvExt.strLocName = tblWSProcessDocDT.[Location]) 
WHERE tblWSProcessDocDT.ProcessDocID = @ProcessDocID AND INV.bitInactive = 0 AND Inv.bitOtherCmp = 0 
GROUP BY Inv.strPartNumber ,Inv.strDesc ,Inv.strStockUnit ,inv.decMinimumLevel ,INV.decSumOnHand ,INV.intReorderQty 
,decOrderLeadTime ,INV.decSumOnOrder ,INV.intReorderQty ,INV.decSumAlloc ,INV.decBuyToStock ,Inv.decEconomicOrderQty 
,INV.decMinimumOrderQuantity ,tblInvExt.decMaxLevel ,INV.decSumManuf ,tblWSProcessDocDT.JobQty ,tblWSProcessDocDT.[LineNo] 
ORDER BY INV.strPartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvNumConvType] @PartNumber NVARCHAR(200)
AS
BEGIN
SELECT Cast(ISNULL(tblInvNumConv.intType,0) as int) FROM tblInv 
LEFT JOIN tblInvNumConv ON tblInv.strInvNumConv = tblInvNumConv.strInvNumConv WHERE tblInv.strPartNumber = @PartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvOrderDocCount](
@DocType int,
@PartNumber NVARCHAR(200)
)
AS
BEGIN
SELECT COUNT(tblOrderDoc.bitCleared) FROM tblOrderDoc 
INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID 
WHERE tblOrderDoc.intDocType = @DocType AND tblOrderDocDT.strPartNumber = @PartNumber AND tblOrderDoc.bitCleared = 0
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvItemEditData] @PartNumber NVARCHAR(200)  
AS  
BEGIN  
 SELECT strPartNumber AS PartNumber  
  ,strDesc AS [Description]  
  ,intType AS [Type]  
  ,strCategory AS Category  
  ,StrAcctSet  
  ,intExpAcct AS ExpAcct  
  ,decCostOnPO AS CostOnPO  
  ,bitUseLPPOnPO AS IsUseLPPOnPO  
  ,intReorderQty AS ReorderQty  
  ,strBuyUnit AS BuyUnit  
  ,strStockUnit AS StockUnit  
  ,decBuyToStock AS BuyToStock  
  ,bitAllowPriceChg AS IsAllowPriceChg  
  ,dteDateLastSale AS DateLastSale  
  ,dteLastPurchase AS LastPurchase  
  ,decLastPPUnit AS LastPPUnit  
  ,dteLastUpdated AS LastUpdated  
  ,bitUseBOM AS IsUseBOM  
  ,cast(intBOMQty AS DECIMAL) AS BOMQty  
  ,strAddInfo AS AddInfo  
  ,bitInactive AS IsInactive  
  ,decSumAvail AS SumAvail  
  ,decSumAlloc AS SumAlloc  
  ,decSumOnHand AS SumOnHand  
  ,decSumValue AS SumValue  
  ,decSumOnOrder AS SumOnOrder  
  ,decSumOpenQty AS SumOpenQty  
  ,decSumOpenValue AS SumOpenValue  
  ,decSumValYearStart AS SumValYearStart  
  ,decSumQtyYearStart AS SumQtyYearStart  
  ,decSumAmtSoldYTD AS SumAmtSoldYTD  
  ,decSumAmtSoldLY AS SumAmtSoldLY  
  ,decSumQtySoldYTD AS SumQtySoldYTD  
  ,decSumQtySoldLY AS SumQtySoldLY  
  ,decSumCOGSYTD AS SumCOGSYTD  
  ,decSumCOGSLY AS SumCOGSLY  
  ,intSumNumTransYTD AS SumNumTransYTD  
  ,intSumNumTransLY AS SumNumTransLY  
  ,bitAutoBuild AS IsAutoBuild  
  ,strField1 AS Field1  
  ,strField2 AS Field2  
  ,strField3 AS Field3  
  ,strField4 AS Field4  
  ,strField5 AS Field5  
  ,strField6 AS Field6  
  ,strBarCode AS BarCode  
  ,decStandardCost AS StandardCost  
  ,strBinLoc  
  ,bitItemNumConvUsed AS IsItemNumConvUsed  
  ,strSellUnit AS SellUnit  
  ,strSellStockUnit AS SellStockUnit  
  ,decSellFromStock AS SellFromStock  
  ,strItemSegment1 AS ItemSegment1  
  ,strItemSegment2 AS ItemSegment2  
  ,strItemSegment3 AS ItemSegment3  
  ,strItemSegment4 AS ItemSegment4  
  ,strInvNumConv AS InvNumConv  
  ,bitInvSerialType AS IsInvSerialType  
  ,strInvSerialType AS InvSerialType  
  ,decRepairCharge AS RepairCharge  
  ,strBarCode2 AS BarCode2  
  ,bitVoucherEnabled AS IsVoucherEnabled  
  ,strVoucherCode AS VoucherCode  
  ,decDefSaleQty AS DefSaleQty  
  ,strExtendedDesc AS ExtendedDesc  
  ,bitInvExtDescOnSI AS IsInvExtDescOnSI  
  ,bitInvExtDescOnSO AS IsInvExtDescOnSO  
  ,bitInvExtDescOnSQ AS IsInvExtDescOnSQ  
  ,bitInvExtDescOnSFHQ AS IsInvExtDescOnSFHQ  
  ,bitInvExtDescOnCR AS IsInvExtDescOnCR  
  ,bitInvExtDescOnPI AS IsInvExtDescOnPI  
  ,bitInvExtDescOnPO AS IsInvExtDescOnPO  
  ,bitInvExtDescOnPQ AS IsInvExtDescOnPQ  
  ,bitWebstoreItem AS IsWebstoreItem  
  ,strDimProCode AS DimProCode  
  ,strRSTTerminalSync AS RSTTerminalSync  
  ,intDecimalQuantity AS DecimalQuantity  
  ,strBOMNotes AS BOMNotes  
  ,bitInvExtDescOnBRQ AS IsInvExtDescOnBRQ  
  ,decMass AS Mass  
  ,decVolumetricWeight AS VolumetricWeight  
  ,strUnitOfMeasure AS UnitOfMeasure  
  ,decW AS Width  
  ,decH AS Height  
  ,decD AS Depth  
  ,decCube AS [Cube]  
  ,decFactor AS Factor  
  ,bitPallet AS IsPallet  
  ,bitInclInvForecast AS IsInclInvForecast  
  ,bitDimProSales AS IsDimProSales  
  ,bitDimProPurchases AS IsDimProPurchases  
  ,strInvWCCode AS WCCode  
  ,decLastManCost AS LastManCost  
  ,bitAutoBuildSameLoc AS IsAutoBuildSameLoc  
  ,strSubCategory AS SubCategory  
  ,decSumManuf  
  ,strSubCategoryGroup AS SubCategoryGroup  
  ,bitExclCommission  
  ,strPOSDesc AS POSDesc  
  ,bitPrintComp AS IsPrintComp  
  ,bitSumComp AS IsSumComp  
  ,bitAllowAdjustKitCompOnDoc AS IsAllowAdjustKitCompOnDoc  
  ,decDensity AS Density  
  ,bitIsSuperseded AS IsSuperseded  
  ,strSupersededBy AS SupersededBy  
  ,strSupersededDescription AS SupersededDescription  
  ,dtesupersessiondate AS Supersessiondate  
  ,bitPendingApproval AS IsPendingApproval  
  ,bitDefaultUOM AS IsDefaultUOM  
  ,strHSCode AS HSCode  
  ,strHSDesc AS HSDescription  
  ,strURACode AS URACode  
  ,[strKenyaItemCode] AS KenyaItemCode  
  ,[strKenyaItemCodeCounter] AS KenyaItemCodeCounter  
  ,[strKenyaItemClassificationName] AS KenyaItemClassificationName  
  ,(  
   SELECT Isnull(decEconomicOrderQty, 0)  
   FROM tblInv i  
   WHERE i.strPartNumber = tblInv.strPartNumber  
   ) AS EconomicOrderQty  
  ,strCommodityCode AS CommodityCode  
  ,strZambiaItemCode AS strZmbItemCode  
  ,strZambiaItemClassificationName AS strZmbClsName  
  ,ISNULL(intZambiaItemType,0) AS intZambiaItemType 
  ,ISNULL(strZambiaInvCountryOriginCode , '')  AS strZambiaInvCountryOriginCode
 FROM dbo.fnTblInvLocationsAll() tblInv  
 WHERE strPartNumber = @PartNumber  
END   
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvBudgetData] @PartNumber NVARCHAR(200)
AS
BEGIN
select 
strPartNumber as PartNumber
,decPeriod1		as Period1
,decPeriod2		as Period2
,decPeriod3		as Period3
,decPeriod4		as Period4
,decPeriod5		as Period5
,decPeriod6		as Period6
,decPeriod7		as Period7
,decPeriod8		as Period8
,decPeriod9		as Period9
,decPeriod10	as Period10
,decPeriod11	as Period11
,decPeriod12	as Period12
from tblInvT WHERE strPartNumber = @PartNumber
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvPurchasesBudgetData] @PartNumber NVARCHAR(200)
AS
BEGIN
select 
strPartNumber as PartNumber
,decPeriod1		as Period1
,decPeriod2		as Period2
,decPeriod3		as Period3
,decPeriod4		as Period4
,decPeriod5		as Period5
,decPeriod6		as Period6
,decPeriod7		as Period7
,decPeriod8		as Period8
,decPeriod9		as Period9
,decPeriod10	as Period10
,decPeriod11	as Period11
,decPeriod12	as Period12
from tblInvPurchaseTarget WHERE strPartNumber = @PartNumber
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvItemVendorEditData] @PartNumber AS NVARCHAR(50)
AS
BEGIN
	SELECT tblVendors.strVendName AS VendorName
		,tblVendors.strVendDesc AS VendorDescription
		,strItemCode AS ItemCode
		,strItemDesc AS ItemDescription
		,intWarrantyDays AS WarrantyDays
		,decPrice AS Price
		,decLocalPrice AS LocalPrice
		,decDiscPerc AS DiscountPercentage
		,decLandedCostFactor AS LandedCostFactor
		,bitPreferred AS Preferred
		,lngID AS ID
		,tblVendors.strCurrency AS Currency
		,strUnit AS Unit
		,ISNULL(dteStartDate, '') AS StartDate
		,ISNULL(dteFinishDate, '') AS FinishDate
		,tblInvVend.uidPriceBasedID AS PriceBasedID
	FROM tblInvVend
	INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName
	INNER JOIN tblInvVendPriceListsByDate ON tblInvVendPriceListsByDate.strVendName = tblInvVend.strVendName
		AND tblInvVend.uidPriceBasedID = tblInvVendPriceListsByDate.uidPriceBasedID
	WHERE strPartNumber = @PartNumber
	ORDER BY tblInvVend.strVendName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvItemCustomerEditData] @PartNumber AS NVARCHAR(50)
AS
BEGIN
	SELECT tblCustomers.strCustName AS CustomerName
		,tblCustomers.strCustDesc AS CustItemDesc
		,tblInvCustomer.strPartNumber AS CustomerDesc
		,strItemCode AS ItemCode
		,strItemDesc AS ItemDesc
		,tblInvCustomer.lngID AS ID
		,tblCustomers.strCurrency AS Currency
	FROM tblInvCustomer
	INNER JOIN tblCustomers ON tblInvCustomer.strCustName = tblCustomers.strCustName
	WHERE strPartNumber = @PartNumber
	ORDER BY tblInvCustomer.strCustName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvItemBOMEditData] @PartNumber AS NVARCHAR(50)
AS
BEGIN
	SELECT strPartItemNumber AS PartNumber
		,ISNULL((
				SELECT strDesc
				FROM tblInv
				WHERE tblInv.strPartNumber = tblInvBOM.strPartItemNumber
					AND bitOtherCmp = 0
				), '') AS ItemDescription
		,strLocName AS Location
		,intQtyToUse AS Quantity
	FROM tblInvBOM
	WHERE strPartNumber = @PartNumber
	ORDER BY strPartItemNumber
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvItemReOrderEditData] @PartNumber AS NVARCHAR(50)
AS
BEGIN
SELECT 
tblInvExt.strLocName as Location,
CASE WHEN (decNewDailySales) > 0 then decNewDailySales Else ISNULL((SELECT Sum(decQty) FROM tblInvoiceDoc  INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDT.strInvDocID=tblInvoiceDoc.strInvDocID AND strPartNumber=tblInv.strPartNumber and tblInvoiceDocDT.strlocation=tblInvExt.strLocName   AND tblInvoiceDoc.dteJournalDate BETWEEN Convert(DATE,GETDATE()-8) AND  Convert(DATE,GETDATE()-1)),0 ) End  AverageDailySales,
tblInv.decMinimumLevel AS minLevel,	
tblInv.decSafetyFactorPer as SafetyFactorPer,
tblInvExt.decMaxLevel as MaxLevel, 
tblInv.decOrderLeadTime as OrderLeadTime, 
tblInv.decDaysSalesinStock as DaysSalesinStock, 
tblInv.decEconomicOrderQty as EconomicOrderQty, 
tblInv.decMinimumOrderQuantity as MinimumOrderQuantity,
tblInvExt.decMinimumLevel as MinimumLevelByLocation
FROM tblInvExt INNER JOIN tblInvLoc ON tblInvExt.strLocName = tblInvLoc.strLocName 
inner join tblInv on tblInvExt .strPartNumber =tblInv .strPartNumber
WHERE (tblInvExt.strPartNumber  = @PartNumber) AND (tblInvLoc.intType = 0)
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvItemHistoryEditData] @PartNumber NVARCHAR(50)
AS
BEGIN
	SELECT b.strPartNumber AS PartNumber
		,b.strLocName AS [Location]
		,ISNULL(b.decOpenQty, 0) AS OpenQty
		,ISNULL(b.decOpenValue, 0) AS OpenValue
		,ISNULL(lb.strBinCode, '') AS BinCode
	FROM tblInvExtBin b
	INNER JOIN tblInvLoc l ON b.strLocName = l.strLocName
	LEFT JOIN tblInvLocBin lb ON b.lngBinID = lb.lngID
	WHERE b.strPartNumber = @PartNumber
		AND l.intType = 0
	ORDER BY b.strLocName
		,lb.strBinCode
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvItemItemUSellEditData] @PartNumber AS NVARCHAR(50)  
AS  
BEGIN  
SELECT   
tblInvUpsell.strPartItemNumber as PartNumber,   
ISNULL(tblInv.strDesc,'') as Description,   
tblInvUpsell.intQtyToUse as QtyToUse,   
tblInvUpsell.bitSalesInvoice as IsSalesInvoice,   
tblInvUpsell.bitSalesOrder as IsSalesOrder,   
tblInvUpsell.bitSalesLayby as IsSalesLayby,   
tblInvUpsell.bitSalesQuote as IsSalesQuote,   
tblInvUpsell.bitFreehandQuote as IsFreehandQuote,   
tblInvUpsell.bitUseProportionateQty as IsUseProportionateQty,   
tblInvUpsell.bitPOS as IsPOS  
FROM tblInvUpsell   
LEFT JOIN tblInv ON tblInvUpsell.strPartItemNumber = tblInv.strPartNumber   
WHERE (tblInvUpsell.strPartNumber = @PartNumber)   
ORDER BY tblInvUpsell.strPartItemNumber  
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvItemItemFileEditData] @PartNumber AS NVARCHAR(50)
AS
BEGIN
	SELECT strPartNumber AS VendName
		,strFileName AS [FileName]
		,dteModified AS Modified
		,strType AS [Type]
		,intSize AS [FileSize]
		,strUserName AS UserName
		,bitEnc AS Enc
		,imgFile AS [File]
		,intAttachOn AS AttachOn
	FROM tblInvF
	WHERE strPartNumber = @PartNumber
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvItemContainerEditDetails] @PartNumber AS NVARCHAR(50)
AS
BEGIN
SELECT tblInvContainers.strPartItemNumber as PartNumber, 
tblInv.strDesc as Description, 
tblInvContainers.decQuantity as Quantity, 
tblInvContainers.bitRoundUp as IsRoundUp 
FROM tblInvContainers INNER JOIN tblInv ON tblInvContainers.strPartItemNumber = tblInv.strPartNumber 
WHERE tblInvContainers.strPartNumber = @PartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdatePartNumbers](
@PartNumber AS NVARCHAR(200),
@OldPartNumber AS NVARCHAR(200)
)
AS
BEGIN
UPDATE tblManBOMCompInv SET strPartNumber = @PartNumber WHERE strPartNumber = @OldPartNumber
UPDATE tblManJobByProd SET strPartNumber = @PartNumber WHERE strPartNumber = @OldPartNumber
UPDATE tblManJobCompInv SET strPartNumber = @PartNumber WHERE strPartNumber = @OldPartNumber
UPDATE tblManWIPCompInv SET strPartNumber = @PartNumber WHERE strPartNumber = @OldPartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteInvItemTax] @PartNumber AS NVARCHAR(200)
AS
BEGIN
DELETE FROM tblInvEx WHERE strPartNumber = @PartNumber
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvEditData] @PartNumber AS NVARCHAR(50)
	,@Desc AS NVARCHAR(500)
	,@Category AS NVARCHAR(20)
	,@ExpAcct AS NVARCHAR(30)
	,@CostOnPO AS DECIMAL
	,@UseLPPOnPO AS BIT
	,@ReorderQty AS INT
	,@BuyUnit AS NVARCHAR(30)
	,@StockUnit AS NVARCHAR(15)
	,@BuyToStock AS DECIMAL
	,@AllowPriceChg AS BIT
	,@UseBOM AS BIT
	,@BOMQty AS INT
	,@AddInfo AS NVARCHAR(MAX)
	,@Inactive AS BIT
	,@AutoBuild AS BIT
	,@Field1 AS NVARCHAR(100)
	,@Field2 AS NVARCHAR(100)
	,@Field3 AS NVARCHAR(100)
	,@Field4 AS NVARCHAR(100)
	,@Field5 AS NVARCHAR(100)
	,@Field6 AS NVARCHAR(100)
	,@BarCode AS NVARCHAR(300)
	,@StandardCost AS DECIMAL
	,@SellUnit AS NVARCHAR(300)
	,@SellStockUnit AS NVARCHAR(300)
	,@SellFromStock AS DECIMAL
	,@InvSerialType AS BIT
	,@SerialType AS NVARCHAR(20)
	,@RepairCharge AS DECIMAL
	,@BarCode2 AS NVARCHAR(300)
	,@VoucherEnabled AS BIT
	,@VoucherCode AS NVARCHAR(50)
	,@DefSaleQty AS DECIMAL
	,@ExtendedDesc AS NVARCHAR(MAX)
	,@InvExtDescOnSI AS BIT
	,@InvExtDescOnSO AS BIT
	,@InvExtDescOnSQ AS BIT
	,@InvExtDescOnSFHQ AS BIT
	,@InvExtDescOnCR AS BIT
	,@InvExtDescOnPI AS BIT
	,@InvExtDescOnPO AS BIT
	,@InvExtDescOnPQ AS BIT
	,@DimProCode AS NVARCHAR(40)
	,@RSTTerminalSync AS NVARCHAR(MAX)
	,@DecimalQuantity AS INT
	,@BOMNotes AS NVARCHAR
	,@InvExtDescOnBRQ AS BIT
	,@Mass AS MONEY
	,@VolumetricWeight AS MONEY
	,@UnitOfMeasure AS NVARCHAR(50)
	,@W AS MONEY
	,@H AS MONEY
	,@D AS MONEY
	,@Cube AS MONEY
	,@Factor AS MONEY
	,@MaxLevel AS MONEY
	,@OrderLeadTime AS MONEY
	,@SafetyFactorPer AS DECIMAL
	,@DaysSalesinStock AS DECIMAL
	,@MinimumOrderQuantity AS DECIMAL
	,@MinLevel AS DECIMAL
	,@EconomicOrderQty AS DECIMAL
	,@Pallet AS BIT
	,@InclInvForecast AS BIT
	,@DimProSales AS BIT
	,@DimProPurchases AS BIT
	,@InvWCCode AS NVARCHAR(20)
	,@AutoBuildSameLoc AS BIT
	,@SubCategory AS NVARCHAR(20)
	,@SubCategoryGroup AS NVARCHAR(40)
	,@POSDesc AS NVARCHAR(50)
	,@PrintComp AS BIT
	,@SumComp AS BIT
	,@IsAllowAdjustKitCompOnDoc BIT
	,@OldPartNumber AS NVARCHAR(50)
	,@Density AS MONEY
	,@IsSuperseded AS BIT
	,@SupersededBy AS NVARCHAR(50)
	,@SupersededDescription AS NVARCHAR(500)
	,@supersessiondate AS DATETIME
	,@PendingApproval AS BIT
	,@DefaultUOM AS BIT
	,@HSCode AS NVARCHAR(500)
	,@HSDescription AS NVARCHAR(MAX)
	,@URACode AS NVARCHAR(200)
	,@KenyaItemCode AS NVARCHAR(200)
	,@KenyaItemCodeCounter AS NVARCHAR(MAX)
	,@KenyaItemClassificationName AS NVARCHAR(MAX)
	,@KenyaItemCountryCode AS NVARCHAR(MAX)
	,@CommodityCode AS NVARCHAR(500)
	,@ZmbDefaultCode AS NVARCHAR(500)
	,@ZmbClsName AS NVARCHAR(500)
	,@ZmbCounter AS NVARCHAR(100)
	,@ZmbItemType AS INT
	,@ZmbItemCountryOriginCode AS NVARCHAR(6)
AS
BEGIN
	UPDATE tblInv
	SET strPartNumber = @PartNumber
		,strDesc = @Desc
		,strCategory = @Category
		,intExpAcct = @ExpAcct
		,decCostOnPO = @CostOnPO
		,bitUseLPPOnPO = @UseLPPOnPO
		,intReorderQty = @ReorderQty
		,strBuyUnit = @BuyUnit
		,strStockUnit = @StockUnit
		,decBuyToStock = @BuyToStock
		,bitAllowPriceChg = @AllowPriceChg
		,dteLastUpdated = GETDATE()
		,bitUseBOM = @UseBOM
		,intBOMQty = @BOMQty
		,strAddInfo = @AddInfo
		,bitInactive = @Inactive
		,bitAutoBuild = @AutoBuild
		,strField1 = @Field1
		,strField2 = @Field2
		,strField3 = @Field3
		,strField4 = @Field4
		,strField5 = @Field5
		,strField6 = @Field6
		,strBarCode = @BarCode
		,decStandardCost = @StandardCost
		,strSellUnit = @SellUnit
		,strSellStockUnit = @SellStockUnit
		,decSellFromStock = @SellFromStock
		,bitInvSerialType = @InvSerialType
		,strInvSerialType = NULLIF(@SerialType, '')
		,decRepairCharge = @RepairCharge
		,strBarCode2 = @BarCode2
		,bitVoucherEnabled = @VoucherEnabled
		,strVoucherCode = @VoucherCode
		,decDefSaleQty = @DefSaleQty
		,strExtendedDesc = @ExtendedDesc
		,bitInvExtDescOnSI = @InvExtDescOnSI
		,bitInvExtDescOnSO = @InvExtDescOnSO
		,bitInvExtDescOnSQ = @InvExtDescOnSQ
		,bitInvExtDescOnSFHQ = @InvExtDescOnSFHQ
		,bitInvExtDescOnCR = @InvExtDescOnCR
		,bitInvExtDescOnPI = @InvExtDescOnPI
		,bitInvExtDescOnPO = @InvExtDescOnPO
		,bitInvExtDescOnPQ = @InvExtDescOnPQ
		,strDimProCode = @DimProCode
		,strRSTTerminalSync = @RSTTerminalSync
		,intDecimalQuantity = @DecimalQuantity
		,strBOMNotes = @BOMNotes
		,bitInvExtDescOnBRQ = @InvExtDescOnBRQ
		,decMass = @Mass
		,decVolumetricWeight = @VolumetricWeight
		,strUnitOfMeasure = @UnitOfMeasure
		,decW = @W
		,decH = @H
		,decD = @D
		,decCube = @Cube
		,decFactor = @Factor
		,decMaxLevel = @MaxLevel
		,decMinimumLevel = @MinLevel
		,decOrderLeadTime = @OrderLeadTime
		,decSafetyFactorPer = @SafetyFactorPer
		,decDaysSalesinStock = @DaysSalesinStock
		,decMinimumOrderQuantity = @MinimumOrderQuantity
		,decEconomicOrderQty = @EconomicOrderQty
		,bitPallet = @Pallet
		,bitInclInvForecast = @InclInvForecast
		,bitDimProSales = @DimProSales
		,bitDimProPurchases = @DimProPurchases
		,strInvWCCode = @InvWCCode
		,bitAutoBuildSameLoc = @AutoBuildSameLoc
		,strSubCategory = @SubCategory
		,strSubCategoryGroup = @SubCategoryGroup
		,strPOSDesc = @POSDesc
		,bitPrintComp = @PrintComp
		,bitSumComp = @SumComp
		,bitAllowAdjustKitCompOnDoc = @IsAllowAdjustKitCompOnDoc
		,decDensity = @Density
		,bitIsSuperseded = @IsSuperseded
		,strSupersededBy = @SupersededBy
		,strSupersededDescription = @SupersededDescription
		,dtesupersessiondate = @supersessiondate
		,bitPendingApproval = @PendingApproval
		,bitDefaultUOM = @DefaultUOM
		,strHSCode = @HSCode
		,strHSDesc = @HSDescription
		,strURACode = @URACode
		,[strKenyaItemCode] = @KenyaItemCode
		,[strKenyaItemCodeCounter] = @KenyaItemCodeCounter
		,[strKenyaItemClassificationName] = @KenyaItemClassificationName
		,[strKenyaItemCountryCode] = @KenyaItemCountryCode
		,strCommodityCode = @CommodityCode
		,strZambiaItemClassificationName = @ZmbClsName
		,strZambiaItemCode = @ZmbDefaultCode
		,strZMBItemCodeCounter = @ZmbCounter
		,intZambiaItemType = @ZmbItemType
		,strZambiaInvCountryOriginCode = @ZmbItemCountryOriginCode
	WHERE strPartNumber = @OldPartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateInvItemInvExt](
@PartNumber NVARCHAR(200),
@LocName NVARCHAR(200),
@ReQty int,
@MaximumLevel decimal,
@MinimumLevel decimal
)
AS
BEGIN
UPDATE tblInvExt SET intReorderPoint = @ReQty,decMaxLevel=@MaximumLevel,decMinimumLevel=@MinimumLevel WHERE strPartNumber = @PartNumber AND strLocName = @LocName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateInvTrackingDT](
@PartNumber NVARCHAR(200),
@WASPartNumber NVARCHAR(200)
)
AS
BEGIN
UPDATE tblInvTrackingDT SET  strPartNumber = @PartNumber WHERE strPartNumber = @WASPartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateInsertInvVendorData]
(
    @IsNew BIT,
    @PartNumber NVARCHAR(200),
    @VendName NVARCHAR(200),
    @ItemCode NVARCHAR(200),
    @ItemDesc NVARCHAR(200),
    @WarrantyDays INT,
    @Price DECIMAL(18, 4),
    @LocalPrice DECIMAL(18, 4),
    @DiscPerc DECIMAL(18, 4),
    @IsPreferred BIT,
    @LandedCostFactor DECIMAL(18, 4),
    @lngID BIGINT,
    @Unit NVARCHAR(200),
    @PriceBasedID UNIQUEIDENTIFIER,
    @PromotionalPricing BIT
)
AS
BEGIN
    SET NOCOUNT ON;

    IF (@IsNew = 1)
    BEGIN
        INSERT INTO tblInvVend
        (
            strPartNumber,
            strVendName,
            strItemCode,
            strItemDesc,
            intWarrantyDays,
            decPrice,
            bitPreferred,
            decDiscPerc,
            decLandedCostFactor,
            decLocalPrice,
            decOnHand,
            decAvail,
            bitOtherCmp,
            strUnit,
            uidPriceBasedID,
            bitPromotionalPricing
        )
        VALUES
        (
            @PartNumber,
            @VendName,
            @ItemCode,
            @ItemDesc,
            @WarrantyDays,
            @Price,
            @IsPreferred,
            @DiscPerc,
            @LandedCostFactor,
            @LocalPrice,
            0,  -- decOnHand
            0,  -- decAvail
            0,  -- bitOtherCmp
            @Unit,
            @PriceBasedID,
            @PromotionalPricing
        );
    END
    ELSE
    BEGIN
        UPDATE tblInvVend
        SET 
            strPartNumber = @PartNumber,
            strVendName = @VendName,
            strItemCode = @ItemCode,
            strItemDesc = @ItemDesc,
            intWarrantyDays = @WarrantyDays,
            decPrice = @Price,
            bitPreferred = @IsPreferred,
            decDiscPerc = @DiscPerc,
            decLocalPrice = @LocalPrice,
            decLandedCostFactor = @LandedCostFactor,
            strUnit = @Unit
        WHERE lngID = @lngID;
    END
END;
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvCustomerData](
@PartNumber NVARCHAR(200),
@CustName NVARCHAR(200),
@ItemCode NVARCHAR(200),
@ItemDesc NVARCHAR(200)
)
AS
BEGIN
INSERT INTO tblInvCustomer VALUES (@PartNumber,@CustName,@ItemCode,@ItemDesc)
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvUpSellData](
@PartNumber NVARCHAR(200),
@PartItemNumber NVARCHAR(200),
@QtyToUse int,
@IsSalesInvoice bit,
@IsSalesOrder bit,
@IsSalesQuote bit,
@IsFreehandQuote bit,
@IsUseProportionateQty bit,
@IsPOS bit,
@IsSalesLayby bit
)
AS
BEGIN
INSERT INTO tblInvUpsell VALUES (@PartNumber,@PartItemNumber,@QtyToUse,@IsSalesInvoice,@IsSalesOrder,@IsSalesQuote,@IsFreehandQuote,@IsUseProportionateQty,@IsPOS,@IsSalesLayby,GetDate())
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvFileData] (
	@PartNumber NVARCHAR(200)
	,@FileName NVARCHAR(200)
	,@Modified DATETIME
	,@Type NVARCHAR(200)
	,@Size NVARCHAR(200)
	,@UserName NVARCHAR(200)
	,@Enc BIT
	,@File IMAGE
	,@AttachOn INT
	)
AS
BEGIN
	INSERT INTO tblInvF
	VALUES (
		@PartNumber
		,@FileName
		,@Modified
		,@Type
		,@Size
		,@UserName
		,@Enc
		,@File
		,@AttachOn
		)
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvBOMData](
@PartNumber NVARCHAR(200),
@Item NVARCHAR(200),
@Qty DECIMAL(18, 2),
@LocName NVARCHAR(200)
)
AS
BEGIN
INSERT INTO tblInvBOM VALUES (@PartNumber,@Item,@Qty,@LocName,GetDate())
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateInvBOMByPartNumber](
@PartNumber NVARCHAR(200),
@OldPartNumber NVARCHAR(200)
)
AS
BEGIN
UPDATE tblInvBOM SET strPartItemNumber = @PartNumber WHERE strPartItemNumber = @OldPartNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvValueBasedPricingDT](
@PartNumber NVARCHAR(200),
@Category NVARCHAR(200),
@Type int
)
AS
BEGIN
INSERT INTO tblValueBasedPricingDT SELECT uidValueBasedID, @Type, 
ISNULL((SELECT MAX(DTL.intLineNo) FROM tblValueBasedPricingDT DTL WHERE DTL.intType = @Type AND DTL.uidValueBasedID = tblValueBasedPricing.uidValueBasedID),0) + 1, @Category, 0, 0, 0, @PartNumber FROM tblValueBasedPricing WHERE uidValueBasedID IN (SELECT DISTINCT DTL.uidValueBasedID FROM tblValueBasedPricingDT DTL WHERE DTL.strCategory = @Category)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvTrackingJournalDate](
@PartNumber NVARCHAR(200),
@LocName NVARCHAR(200)
)
AS
BEGIN
SELECT MAX(tblInvTracking.dteJournalDate) 
FROM tblInvTracking 
INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID 
WHERE (tblInvTrackingDT.strPartNumber = @PartNumber) AND (tblInvTrackingDT.strLocName = @LocName)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetUpdateXMLLastId] @InvSerATNumber bigint
AS
BEGIN
UPDATE tblLastIDs SET lngXMLATNumber = @InvSerATNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvFTPTracking](
@Module NVARCHAR(200),
@Status NVARCHAR(200),
@FileName NVARCHAR(200),
@Desc NVARCHAR(200),
@UserName NVARCHAR(200)
)
AS
BEGIN
INSERT INTO tblFTPTracking (dteSystemDateTime, strModule, strStatus, strFileName, strDesc, strUserName) 
VALUES (GetDate(), @Module, @Status, @FileName, @Desc, @UserName)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvItemSubCategory] @Category NVARCHAR(200)
AS
BEGIN
SELECT strCategory as Category,strDesc as [Description],
Isnull(strCategory,'')+' | '+Isnull(strDesc,'')  
FROM tblInvSubCat WHERE strParentCategory = @Category ORDER BY strCategory
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvItemSubGroupCategory](
@ParentCategory NVARCHAR(200),
@ParentSubCategory NVARCHAR(200)
)
AS
BEGIN
SELECT strCategory as Category,strDesc as [Description],
Isnull(strCategory,'')+' | '+Isnull(strDesc,'') as strCatDesc 
FROM tblInvGroupSubCat 
WHERE strParentCategory = @ParentCategory and strParentSubCategory=@ParentSubCategory 
ORDER BY strCategory
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvEditCotainerData] (
	@Part NVARCHAR(200)
	,@Item NVARCHAR(200)
	,@Qty DECIMAL
	,@IsRoundUp BIT
	)
AS
BEGIN
	INSERT INTO tblInvContainers (
		[strPartNumber]
		,[strPartItemNumber]
		,[decQuantity]
		,[bitRoundUp]
		,[dteRowUpdated]
		)
	VALUES (
		@Part
		,@Item
		,@Qty
		,@IsRoundUp
		,GETDATE()
		)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteInvEditUserDescData](
@Part NVARCHAR(200)
)
AS
BEGIN
DELETE FROM tblInvDescriptionList WHERE  strPartNumber=@Part
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvEditUserDescData](
@IsLabelValue bit,
@IsSearch bit,
@PartNumber NVARCHAR(200),
@Description  NVARCHAR(200),
@DescriptionValue  NVARCHAR(200),
@DescriptionOrder int
)
AS
BEGIN
IF(@IsLabelValue = 1)
Insert into tblInvDescriptionList(strPartNumber,strDescription,strDescriptionValue,intDescriptionOrder) 
Values (@PartNumber,@Description,@DescriptionValue,@DescriptionOrder)
IF(@IsSearch = 1)
Insert into tblInvDescriptionAutoComplete(strDescription,strValue) Values (@Description,@DescriptionValue)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvEditItemTax] (
	@PartNumber AS NVARCHAR(200)
	,@IsOverrideTax BIT
	,@IsUseMTV BIT
	,@OverridingTaxCode NVARCHAR(200)
	,@MinTaxAmount DECIMAL(19,2)
	,@AffectedTaxCodes NVARCHAR(200)
	,@KenyaTaxCode NVARCHAR(200)
	,@ZambiaItemTaxCode NVARCHAR(200)
	)
AS
BEGIN
	UPDATE tblInvItemTax
	SET bitOverrideTax = @IsOverrideTax
		,strOverridingTaxCode = @OverridingTaxCode
		,bitUseMTV = @IsUseMTV
		,decMinTaxAmount = @MinTaxAmount
		,strAffectedTaxCodes = @AffectedTaxCodes
		,dteRowUpdated = GETDATE()
		,strKenyaItemTaxCode = @KenyaTaxCode
		,strZambiaItemTaxCode = @ZambiaItemTaxCode
	WHERE strPartNumber = @PartNumber

	IF @@ROWCOUNT = 0
		INSERT INTO tblInvItemTax (
			strPartNumber
			,bitOverrideTax
			,strOverridingTaxCode
			,bitUseMTV
			,decMinTaxAmount
			,strAffectedTaxCodes
			,dteRowInserted
			,dteRowUpdated
			,strKenyaItemTaxCode
			,strZambiaItemTaxCode
			)
		VALUES (
			@PartNumber
			,@IsOverrideTax
			,@OverridingTaxCode
			,@IsUseMTV
			,@MinTaxAmount
			,@AffectedTaxCodes
			,GETDATE()
			,GETDATE()
			,@KenyaTaxCode
			,@ZambiaItemTaxCode
			)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvCopyItemTax] (
@PartNumber NVARCHAR(200),
@TaxName NVARCHAR(200)
)
AS
BEGIN
INSERT INTO tblInvEx VALUES (@PartNumber,@TaxName,GetDate())
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvCopyItemAcctSetTax] (
@PartNumber NVARCHAR(200),
@Loc NVARCHAR(200),
@Reorder NVARCHAR(200),
@AcctSet NVARCHAR(200),
@BinLoc NVARCHAR(200),
@MaxLevel decimal,
@MinimumLevel decimal,
@IsInactive bit,
@IsDefault bit
)
AS
BEGIN
INSERT INTO tblInvExt VALUES (@PartNumber,@Loc,0,0,0,0,0,0,0,@Reorder,@AcctSet,@BinLoc,@MaxLevel,@MinimumLevel,
@IsInactive,@IsDefault,0,GetDate())
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvCopyTradeDiscMatrixTypesDT] (
@PartNumber NVARCHAR(200),
@Type int
)
AS
BEGIN
INSERT INTO tblTradeDiscMatrixTypesDT SELECT uidMatrixID, @Type, 
ISNULL((SELECT MAX(DTL.intLineNo) FROM tblTradeDiscMatrixTypesDT DTL 
WHERE DTL.intType = @Type AND DTL.uidMatrixID = tblTradeDiscMatrixTypes.uidMatrixID),0) + 1, 0, 0, 0, 
@PartNumber, GETDATE() FROM tblTradeDiscMatrixTypes
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteInvItemOptLineFieldsDT] @PartNumber NVARCHAR(200)
AS
BEGIN
DELETE FROM tblOptLineFieldsDT WHERE  Reference=@PartNumber
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertInvItemOptLineFieldsDT](
@Field NVARCHAR(200),
@FieldValue NVARCHAR(200),
@Module int,
@Reference NVARCHAR(200),
@AddedBy NVARCHAR(200)
)
AS
BEGIN
INSERT INTO tblOptLineFieldsDT (Field,FieldValue,Module,Reference,DateAdded,AddedBy)
Values (@Field,@FieldValue,@Module,@Reference,GETDATE(),@AddedBy)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteInvItem] @PartNumber NVARCHAR(200)
AS
BEGIN
delete tblInv where strPartNumber = @PartNumber
END
GO



----------------------------------------------------
create procedure [dbo].[GetAccountsDataList]
@IsAccType as bit
,@AccType as int
,@IsAccClass as bit
,@AccClass as int
,@IsPrevious as bit
as
Begin
if(@IsPrevious=0)
Begin
if(@IsAccType=1)
SELECT intGLNumber as GLNumber
,strDesc as [Desc]
,intGroupCode as GroupCode
,decBalance as Balance
,intAccType as AccType
,intAccClass as AccClass
,strCurrency as Currency
,decBalanceF as BalanceF
,bitInactive as IsInactive
FROM tblAccounts
WHERE intAccType = @AccType
ORDER BY intAccType,intAccClass,intGLNumber
else if(@IsAccClass=1)
SELECT intGLNumber as GLNumber
,strDesc as [Desc]
,intGroupCode as GroupCode
,decBalance as Balance
,intAccType as AccType
,intAccClass as AccClass
,strCurrency as Currency
,decBalanceF as BalanceF
,bitInactive as IsInactive
FROM tblAccounts
WHERE intAccClass = @AccClass
ORDER BY intAccType,intAccClass,intGLNumber
Else
SELECT intGLNumber as GLNumber
,strDesc as [Desc]
,intGroupCode as GroupCode
,decBalance as Balance
,intAccType as AccType
,intAccClass as AccClass
,strCurrency as Currency
,decBalanceF as BalanceF
,tblAccountType.strAcctType as AcctType
,tblAccountClass.strCustomLabel as CustomLabel
,bitInactive as IsInactive
FROM tblAccounts
INNER JOIN tblAccountType ON tblAccountType.intAcctTypeID = tblAccounts.intAccType
INNER JOIN tblAccountClass ON tblAccountClass.intAcctClassID = tblAccounts.intAccClass
ORDER BY intAccType
,intAccClass
,intGLNumber
end
else
if(@IsAccType=1)
SELECT intGLNumber as GLNumber
,strDesc as [Desc]
,intGroupCode as GroupCode
,decBalance as Balance
,intAccType as AccType
,intAccClass as AccClass
,strCurrency as Currency
,decBalanceF as BalanceF
FROM tblAccountsLY
WHERE intAccType = @AccType
ORDER BY intAccType
,intAccClass
,intGLNumber
else if(@IsAccClass=1)
SELECT intGLNumber as GLNumber
,strDesc as [Desc]
,intGroupCode as GroupCode
,decBalance as Balance
,intAccType as AccType
,intAccClass as AccClass
,strCurrency as Currency
,decBalanceF as BalanceF
,bitInactive as IsInactive
FROM tblAccountsLY
WHERE intAccClass = @AccClass
ORDER BY intAccType
,intAccClass
,intGLNumber
Else
SELECT intGLNumber as GLNumber
,strDesc as [Desc]
,intGroupCode as GroupCode
,decBalance as Balance
,intAccType as AccType
,intAccClass as AccClass
,strCurrency as Currency
,decBalanceF as BalanceF
,tblAccountType.strAcctType as AcctType
,tblAccountClass.strCustomLabel as CustomLabel
,bitInactive as IsInactive
FROM tblAccountsLY
INNER JOIN tblAccountType ON tblAccountType.intAcctTypeID = tblAccountsLY.intAccType
INNER JOIN tblAccountClass ON tblAccountClass.intAcctClassID = tblAccountsLY.intAccClass
ORDER BY intAccType
,intAccClass
,intGLNumber
end
GO


----------------------------------------------------



----------------------------------------------------
CREATE PROCEDURE [dbo].[GetDefaultAccounts]
-- Add the parameters for the stored procedure here
AS
BEGIN
SET nocount ON;
SELECT intGLNumber As GLNumber, bitLinkAP As linkAP, bitLinkPrePay As linkPrePay, bitLinkAR As linkAR, bitLinkDeposit As linkDeposit FROM tblAccounts WHERE bitLinkAP = 1 OR bitLinkPrePay = 1 OR bitLinkAR = 1 OR bitLinkDeposit = 1			
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[CopySO_AfterEdit]
@SQstrOrdPDocID VARCHAR(MAX) NULL,
@SQstrPartNumber VARCHAR(MAX) NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT TOP 1 tblOrderDocPDT.strOrdPDocID, tblOrderDocP.strVendName FROM tblOrderDocPDT (NOLOCK) INNER JOIN tblOrderDocP (NOLOCK) ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID WHERE tblOrderDocP.intDocType = 1 AND tblOrderDocP.bitCleared = 0 AND ISNULL(tblOrderDocPDT.strOrdSODocID, '') = @SQstrOrdPDocID AND tblOrderDocPDT.strPartNumber = @SQstrPartNumber ORDER BY tblOrderDocPDT.strOrdPDocID DESC
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvoicesStandardTemplate]
-- Add the parameters for the stored procedure here
@SQStart DateTime, 
@SQEnd DateTime
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT tblInvoiceDoc.strInvDocID AS DocID, tblInvoiceDoc.dteSystemDate AS SystemDate, tblInvoiceDoc.dteJournalDate AS JournalDate, tblInvoiceDoc.dteRequired AS RequiredDate, tblInvoiceDoc.bitReserved AS IsReservedNumber, CASE WHEN tblInvoiceDoc.bitReserved = 1 THEN tblInvoiceDoc.strInvDocID ELSE '' END AS ReservedNumber, tblInvoiceDoc.strUserName AS UserName, tblInvoiceDoc.strCustName AS CustomerNo, (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblInvoiceDoc.strCustName) AS CustomerName, tblInvoiceDoc.strSoldTo AS SoldTo, tblInvoiceDoc.strShipTo AS ShipTo, tblInvoiceDoc.strReference AS Reference, tblInvoiceDoc.decSubTotal AS SubTotal, tblInvoiceDoc.decVAT AS VAT, ISNULL(tblInvoiceDoc.strDelMethodCode, 0) AS DeliveryMethod, tblInvoiceDoc.decDeliveryCost AS DeliveryCost, tblInvoiceDoc.decTotal AS Total, tblInvoiceDoc.bitFromSO AS FromSO, ISNULL(tblInvoiceDoc.strOrdDocID, '') AS SONumber, tblInvoiceDoc.bitPrinted AS IsPrinted, tblInvoiceDoc.bitEmailed AS IsEmailed, ISNULL(tblInvoiceDoc.strSalesName, '') AS SalesName, tblInvoiceDoc.strAddInfo AS AddInfo, tblInvoiceDoc.strCurrency AS Currency, tblInvoiceDoc.bitIsForeign AS IsForeign, tblInvoiceDoc.decSubTotalF AS SubTotalF, tblInvoiceDoc.decVATF AS VATF, tblInvoiceDoc.decDeliveryCostF AS DeliveryCostF, tblInvoiceDoc.decTotalF AS TotalF, tblInvoiceDoc.decExchange AS Exchange, tblInvoiceDoc.strTerm AS Term, ISNULL(tblInvoiceDoc.intDept, '') AS Dept, tblInvoiceDoc.strField1 AS Field1, tblInvoiceDoc.strField2 AS Field2, tblInvoiceDoc.strField3 AS Field3, tblInvoiceDoc.strField4 AS Field4, tblInvoiceDoc.strField5 AS Field5, tblInvoiceDoc.strField6 AS Field6, tblInvoiceDoc.strField7 AS Field7, tblInvoiceDoc.strField8 AS Field8, tblInvoiceDoc.strField9 AS Field9, tblInvoiceDoc.strField10 AS Field10, tblInvoiceDoc.strField11 AS Field11, tblInvoiceDoc.strField12 AS Field12, tblInvoiceDoc.dteField13 AS Field13, tblInvoiceDoc.dteField14 AS Field14, tblInvoiceDoc.decDiscPerc AS DiscPerc, tblInvoiceDoc.decDiscAmt AS DiscAmt, tblInvoiceDoc.decDiscAmtF AS DiscAmtF, ISNULL(tblInvoiceDoc.strOrdFQDocID, '') AS FreehandQuoteDocNumber, ISNULL(tblInvoiceDoc.strStatusTypeCode, '') AS statusCode, tblInvoiceDocDT.strPartExtendedDesc AS PartExtendedDesc, tblInvoiceDocDT.intLineNo AS [LineNo], tblInvoiceDocDT.strPartNumber AS PartNumber, tblInvoiceDocDT.strPartDesc AS PartDesc, tblInvoiceDocDT.strLocation AS [Location], tblInvoiceDocDT.decQty AS Qty, tblInvoiceDocDT.strUnit AS Unit, tblInvoiceDocDT.decPriceEaExc AS PriceEaExc, tblInvoiceDocDT.decLineTotExc AS LineTotExc, tblInvoiceDocDT.decLineTaxAmt AS LineTaxAmt, tblInvoiceDocDT.decPriceEaInc AS PriceEaInc, tblInvoiceDocDT.decLineTotInc AS LineTotInc, tblInvoiceDocDT.strTaxCode AS TaxCode, tblInvoiceDocDT.decPriceEaExcF AS PriceEaExcF, tblInvoiceDocDT.decLineTotExcF AS LineTotExcF, tblInvoiceDocDT.decLineTaxAmtF AS LineTaxAmtF, tblInvoiceDocDT.decEaIncTaxF AS UnitPriceInclF, tblInvoiceDocDT.decTotIncTaxF AS LineTotalInclF, tblInvoiceDocDT.strInvField1 AS InvField1, tblInvoiceDocDT.strInvField2 AS InvField2, tblInvoiceDocDT.strInvField3 AS InvField3, tblInvoiceDocDT.strInvField4 AS InvField4, tblInvoiceDocDT.strInvField5 AS InvField5, tblInvoiceDocDT.strInvField6 AS InvField6, tblInvoiceDocDT.strLineField1 AS LineField1, tblInvoiceDocDT.strLineField2 AS LineField2, tblInvoiceDocDT.strLineField3 AS LineField3, tblInvoiceDocDT.strLineField4 AS LineField4, tblInvoiceDocDT.strLineField5 AS LineField5, tblInvoiceDocDT.strLineField6 AS LineField6, tblInvoiceDocDT.strLineField7 AS LineField7, tblInvoiceDocDT.strLineField8 AS LineField8, tblInvoiceDocDT.strLineField9 AS LineField9, tblInvoiceDocDT.strLineField10 AS LineField10, tblInvoiceDocDT.strLineField11 AS LineField11, tblInvoiceDocDT.strLineField12 AS LineField12, tblInvoiceDocDT.decLineDiscPerc AS LineDiscPerc, tblInvoiceDocDT.decLineDiscAmt AS LineDiscAmt, tblInvoiceDocDT.decLineDiscAmtF AS LineDiscAmtF, tblInvoiceDocDT.bitContainerItem AS IsContainerItem, tblInvoiceDocDT.decItemWeight AS ItemWeight, tblInvoiceDocDT.decVolumetricWeight AS VolumetricWeight, tblInvoiceDoc.bitNoPODRequired AS IsPODRequired FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID WHERE (tblInvoiceDoc.bitHistoryTrans = 0) AND (tblInvoiceDoc.bitReserved = 0) AND (dteJournalDate BETWEEN @SQStart AND @SQEnd) AND (tblInvoiceDocDT.bitDiscountTax = 0) ORDER BY tblInvoiceDoc.strInvDocID, tblInvoiceDocDT.intLineNo
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetSerialLotInvoicesStandardTemplate]
-- Add the parameters for the stored procedure here
@SQStart DateTime, 
@SQEnd DateTime
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT tblInvoiceDoc.strInvDocID AS DocID, tblInvoiceDocDT.intLineNo AS [LineNo], tblInvoiceDocDTSerial.strSerialNumber AS SerialNumber, tblInvoiceDocDTSerial.decQty AS Qty, tblInvoiceDocDTSerial.bitExpiryDate AS IsExpiryDate, tblInvoiceDocDTSerial.dteExpiryDate AS ExpiryDate, tblInvLocBin.strBinCode AS BinCode FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID INNER JOIN tblInvoiceDocDTSerial ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTSerial.strInvDocID AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTSerial.intLineNo INNER JOIN tblInvLocBin ON tblInvoiceDocDTSerial.lngBinID = tblInvLocBin.lngID WHERE (tblInvoiceDoc.bitHistoryTrans = 0) AND (tblInvoiceDoc.bitReserved = 0) AND (dteJournalDate BETWEEN @SQStart AND @SQEnd) ORDER BY tblInvoiceDoc.strInvDocID, tblInvoiceDocDT.intLineNo
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCmbInvoicesStandardTemplate]
@SQStart DateTime, 
@SQEnd DateTime
AS
BEGIN
SET NOCOUNT ON;

SELECT tblInvoiceDoc.strInvDocID AS DocID, tblInvoiceDoc.dteSystemDate AS SystemDate, tblInvoiceDoc.dteJournalDate AS JournalDate, tblInvoiceDoc.dteRequired AS RequiredDate, 
tblInvoiceDoc.bitReserved AS IsReservedNumber, CASE WHEN tblInvoiceDoc.bitReserved = 1 THEN tblInvoiceDoc.strInvDocID ELSE '' END AS ReservedNumber, tblInvoiceDoc.strUserName AS UserName,
tblInvoiceDoc.strCustName AS CustomerNo, (SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblInvoiceDoc.strCustName) AS CustomerName, tblInvoiceDoc.strSoldTo AS SoldTo, 
tblInvoiceDoc.strShipTo AS ShipTo, tblInvoiceDoc.strReference AS Reference, tblInvoiceDoc.decSubTotal AS SubTotal, tblInvoiceDoc.decVAT AS VAT, 
ISNULL(tblInvoiceDoc.strDelMethodCode, '') AS DeliveryMethod, tblInvoiceDoc.decDeliveryCost AS DeliveryCost, tblInvoiceDoc.decTotal AS Total, 
tblInvoiceDoc.bitFromSO AS FromSO, ISNULL(tblInvoiceDoc.strOrdDocID, '') AS SONumber, tblInvoiceDoc.bitPrinted AS IsPrinted, tblInvoiceDoc.bitEmailed AS IsEmailed, 
ISNULL(tblInvoiceDoc.strSalesName, '') AS SalesName, tblInvoiceDoc.strAddInfo AS AddInfo, tblInvoiceDoc.strCurrency AS Currency, tblInvoiceDoc.bitIsForeign AS IsForeign, 
tblInvoiceDoc.decSubTotalF AS SubTotalF, tblInvoiceDoc.decVATF AS VATF, tblInvoiceDoc.decDeliveryCostF AS DeliveryCostF, tblInvoiceDoc.decTotalF AS TotalF, tblInvoiceDoc.decExchange AS Exchange, 
tblInvoiceDoc.strTerm AS Term, ISNULL(tblInvoiceDoc.intDept, '') AS Deprtment, tblInvoiceDoc.strField1 AS Field1, tblInvoiceDoc.strField2 AS Field2, tblInvoiceDoc.strField3 AS Field3, 
tblInvoiceDoc.strField4 AS Field4, tblInvoiceDoc.strField5 AS Field5, tblInvoiceDoc.strField6 AS Field6, tblInvoiceDoc.strField7 AS Field7, tblInvoiceDoc.strField8 AS Field8, 
tblInvoiceDoc.strField9 AS Field9, tblInvoiceDoc.strField10 AS Field10, tblInvoiceDoc.strField11 AS Field11, tblInvoiceDoc.strField12 AS Field12, tblInvoiceDoc.dteField13 AS Field13, 
tblInvoiceDoc.dteField14 AS Field14, tblInvoiceDoc.decDiscPerc AS DiscPerc, tblInvoiceDoc.decDiscAmt AS DiscAmt, tblInvoiceDoc.decDiscAmtF AS DiscAmtF, ISNULL(tblInvoiceDoc.strOrdFQDocID, '') AS FreehandQuoteDocNumber, ISNULL(tblInvoiceDoc.strStatusTypeCode, '') AS statusCode, 
tblInvoiceDocDT.strPartExtendedDesc AS PartExtendedDesc, tblInvoiceDocDT.intLineNo AS [LineNo], tblInvoiceDocDT.strPartNumber AS PartNumber, tblInvoiceDocDT.strPartDesc AS PartDesc, tblInvoiceDocDT.strLocation AS [Location], tblInvoiceDocDT.decQty AS Qty, tblInvoiceDocDT.strUnit AS Unit, tblInvoiceDocDT.decPriceEaExc AS PriceEaExc, tblInvoiceDocDT.decLineTotExc AS LineTotExc, tblInvoiceDocDT.decLineTaxAmt AS LineTaxAmt,
  tblInvoiceDocDT.decPriceEaInc AS PriceEaInc, tblInvoiceDocDT.decLineTotInc AS LineTotInc, tblInvoiceDocDT.strTaxCode AS TaxCode, tblInvoiceDocDT.decPriceEaExcF AS PriceEaExcF,
   tblInvoiceDocDT.decLineTotExcF AS LineTotExcF, tblInvoiceDocDT.decLineTaxAmtF AS LineTaxAmtF, tblInvoiceDocDT.decEaIncTaxF AS UnitPriceInclF, tblInvoiceDocDT.decTotIncTaxF AS LineTotalInclF, 
   tblInvoiceDocDT.strInvField1 AS InvField1, tblInvoiceDocDT.strInvField2 AS InvField2, tblInvoiceDocDT.strInvField3 AS InvField3, tblInvoiceDocDT.strInvField4 AS InvField4, tblInvoiceDocDT.strInvField5 AS InvField5, tblInvoiceDocDT.strInvField6 AS InvField6, tblInvoiceDocDT.strLineField1 AS LineField1, tblInvoiceDocDT.strLineField2 AS LineField2, tblInvoiceDocDT.strLineField3 AS LineField3, tblInvoiceDocDT.strLineField4 AS LineField4, tblInvoiceDocDT.strLineField5 AS LineField5, tblInvoiceDocDT.strLineField6 AS LineField6, tblInvoiceDocDT.strLineField7 AS LineField7, tblInvoiceDocDT.strLineField8 AS LineField8, tblInvoiceDocDT.strLineField9 AS LineField9, tblInvoiceDocDT.strLineField10 AS LineField10, tblInvoiceDocDT.strLineField11 AS LineField11, tblInvoiceDocDT.strLineField12 AS LineField12, tblInvoiceDocDT.decLineDiscPerc AS LineDiscPerc, tblInvoiceDocDT.decLineDiscAmt AS LineDiscAmt, tblInvoiceDocDT.decLineDiscAmtF AS LineDiscAmtF, tblInvoiceDocDT.bitContainerItem AS IsContainerItem, tblInvoiceDocDT.decItemWeight AS ItemWeight, tblInvoiceDocDT.decVolumetricWeight AS VolumetricWeight, tblInvoiceDoc.bitNoPODRequired AS IsPODRequired FROM tblInvoiceDoc 
INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID 
WHERE (tblInvoiceDoc.bitHistoryTrans = 0) AND (tblInvoiceDoc.bitReserved = 0) AND (dteJournalDate BETWEEN @SQStart AND @SQEnd) 
AND (tblInvoiceDocDT.bitDiscountTax = 0) ORDER BY tblInvoiceDoc.strInvDocID, tblInvoiceDocDT.intLineNo
END
GO



----------------------------------------------------
CREATE PROCEDURE [dbo].[DuplicationLoadWizard]
AS
BEGIN
	SET NOCOUNT ON;

	SELECT COUNT(Z.ItemCode) AS ItemCode
	FROM (
		SELECT SUBSTRING(LTRIM(RTRIM(ItemCode)), 1, 50) AS ItemCode
		FROM tblUtilityPervInventory
		GROUP BY SUBSTRING(LTRIM(RTRIM(ItemCode)), 1, 50)
		HAVING COUNT(ItemCode) > 1
		) Z
END
GO



----------------------------------------------------
CREATE PROCEDURE [dbo].[GetUtilityTerms_1]
AS
BEGIN
SET nocount ON;
SELECT DISTINCT LTrim(RTrim(Z.TermsCode)) as 'PPTerm' FROM (SELECT DISTINCT TermsCode FROM tblUtilityPervCustomerMaster UNION ALL SELECT DISTINCT LTrim(RTrim(TermsCode)) FROM tblUtilityPervSupplierMaster) Z 
WHERE ISNULL(Z.TermsCode, '') <> '' ORDER BY LTrim(RTrim(Z.TermsCode))			
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[EvolutionTaxCodes] 
  AS BEGIN
SET
  nocount ON;
SELECT
  TaxDesc01,
  TaxDesc02,
  TaxDesc03,
  TaxDesc04,
  TaxDesc05,
  TaxDesc06,
  TaxDesc07,
  TaxDesc08,
  TaxDesc09,
  TaxDesc10,
  TaxDesc11,
  TaxDesc12,
  TaxDesc13,
  TaxDesc14,
  TaxDesc15,
  TaxDesc16,
  TaxDesc17,
  TaxDesc18,
  TaxDesc19,
  TaxDesc20,
  TaxDesc21,
  TaxDesc22,
  TaxDesc23,
  TaxDesc24,
  TaxDesc25,
  TaxDesc26,
  TaxDesc27,
  TaxDesc28,
  TaxDesc29,
  TaxDesc30,
  TaxDesc31,
  TaxDesc32,
  TaxDesc33,
  TaxDesc34,
  TaxDesc35,
  TaxDesc36,
  TaxDesc37,
  TaxDesc38,
  TaxDesc39,
  TaxDesc40,
  TaxPercent01,
  TaxPercent02,
  TaxPercent03,
  TaxPercent04,
  TaxPercent05,
  TaxPercent06,
  TaxPercent07,
  TaxPercent08,
  TaxPercent09,
  TaxPercent10,
  TaxPercent11,
  TaxPercent12,
  TaxPercent13,
  TaxPercent14,
  TaxPercent15,
  TaxPercent16,
  TaxPercent17,
  TaxPercent18,
  TaxPercent19,
  TaxPercent20,
  TaxPercent21,
  TaxPercent22,
  TaxPercent23,
  TaxPercent24,
  TaxPercent25,
  TaxPercent26,
  TaxPercent27,
  TaxPercent28,
  TaxPercent29,
  TaxPercent30,
  TaxPercent31,
  TaxPercent32,
  TaxPercent33,
  TaxPercent34,
  TaxPercent35,
  TaxPercent36,
  TaxPercent37,
  TaxPercent38,
  TaxPercent39,
  TaxPercent40,
  TaxControlAcc,
  CAST(ISNULL(DefaultExclusive, 0) AS INT) AS DefaultExclusive
FROM
  tblUtilityPervTaxDescription
  CROSS JOIN tblUtilityPervTaxParameters
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptGLTransactions]
@Year AS VARCHAR(50)
,@ProfitCenters AS BIT
,@SQAcct AS VARCHAR(max)
,@SQuidYearID uniqueidentifier
AS
BEGIN
SET NOCOUNT ON;
IF (@Year = 'Current')
BEGIN
IF(@ProfitCenters = 1)
BEGIN
SELECT ISNULL((SELECT ISNULL(SUM(DTL.decAmount),0) FROM tblJournalEnt DTL INNER JOIN tblJournal HDR ON DTL.lngJourID = HDR.lngJourID INNER JOIN tblCenterEnt CTR ON HDR.lngJourID = CTR.lngJourID AND DTL.intLineNum = CTR.intLineNum WHERE (HDR.dteJournalDate < (SELECT TOP 1 dteJournalDate FROM tblJournal ORDER BY dteJournalDate)) AND (DTL.intGLNumber = tblAccounts.intGLNumber)),0) AS GLNumbers, decOpenBalance AS OpenBalance, intAccType AS AccType, intGLNumber AS GLNumber, strDesc AS Descriptions FROM tblAccounts WHERE (intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcct, ',')))
END
ELSE 
BEGIN
SELECT ISNULL((SELECT ISNULL(SUM(DTL.decAmount),0) FROM tblJournalEnt DTL INNER JOIN tblJournal HDR ON DTL.lngJourID = HDR.lngJourID WHERE (HDR.dteJournalDate < (SELECT TOP 1 dteJournalDate FROM tblJournal ORDER BY dteJournalDate)) AND (DTL.intGLNumber = tblAccounts.intGLNumber)),0) AS GLNumbers, decOpenBalance AS OpenBalance, intAccType AS AccType, intGLNumber AS GLNumber, strDesc AS Descriptions FROM tblAccounts WHERE (intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcct, ',')))
END
END
ELSE IF(@Year = 'Previous')
BEGIN
IF(@ProfitCenters = 1)
BEGIN
SELECT ISNULL((SELECT ISNULL(SUM(DTL.decAmount),0) FROM tblJournalEntLY DTL INNER JOIN tblJournalLY HDR ON DTL.lngJourID = HDR.lngJourID INNER JOIN tblCenterEntLY CTR ON HDR.lngJourID = CTR.lngJourID AND DTL.intLineNum = CTR.intLineNum WHERE (HDR.dteJournalDate < (SELECT TOP 1 dteJournalDate FROM tblJournalLY ORDER BY dteJournalDate)) AND (DTL.intGLNumber = tblAccountsLY.intGLNumber)),0) AS GLNumbers, decOpenBalance AS OpenBalance, intAccType AS AccType, intGLNumber AS GLNumber, strDesc AS Descriptions FROM tblAccountsLY WHERE (intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcct, ',')))
END
ELSE
BEGIN
SELECT ISNULL((SELECT ISNULL(SUM(DTL.decAmount),0) FROM tblJournalEntLY DTL INNER JOIN tblJournalLY HDR ON DTL.lngJourID = HDR.lngJourID WHERE (HDR.dteJournalDate < (SELECT TOP 1 dteJournalDate FROM tblJournalLY ORDER BY dteJournalDate)) AND (DTL.intGLNumber = tblAccountsLY.intGLNumber)),0) AS GLNumbers, decOpenBalance AS OpenBalance, intAccType AS AccType, intGLNumber AS GLNumber, strDesc AS Descriptions FROM tblAccountsLY WHERE (intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcct, ',')))
END
END
ELSE IF(@Year = 'History')
BEGIN
SELECT ISNULL((SELECT ISNULL(SUM(DTL.decAmount),0) FROM tblJournalEntHist DTL INNER JOIN tblJournalHist HDR ON DTL.lngJourID = HDR.lngJourID AND DTL.uidYearID = HDR.uidYearID WHERE (HDR.dteJournalDate < (SELECT TOP 1 dteJournalDate FROM tblJournalHist ORDER BY dteJournalDate)) AND (DTL.intGLNumber = tblAccountsHist.intGLNumber) AND (DTL.uidYearID = tblAccountsHist.uidYearID)),0) AS GLNumbers, decOpenBalance AS OpenBalance, intAccType AS AccType, intGLNumber AS GLNumber, strDesc AS Descriptions FROM tblAccountsHist WHERE (intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcct, ','))) AND uidYearID = @SQuidYearID
END
END
GO


----------------------------------------------------
CREATE PROCEDURE [dbo].[GLTransactionsLoad2] @_blnProfitCenters BIT = NULL
	,@_dteJournalDate DATETIME = NULL
	,@_dteJournalDate2 DATETIME = NULL
	,@SQAcct VARCHAR(MAX) = NULL
	,@SQModule INT = NULL
	,@SQStart DATETIME = NULL
	,@SQEnd DATETIME = NULL 
	AS
BEGIN
	SET NOCOUNT ON;

	IF (
			(@_dteJournalDate IS NOT NULL)
			AND (@_dteJournalDate2 IS NULL)
			)
	BEGIN
		IF (@_blnProfitCenters = 1)
		BEGIN
			SELECT tblJournal.dteJournalDate
				,CASE 
					WHEN tblJournal.intModule = @SQModule
						THEN CASE 
								WHEN tblJournalEnt.strComment = ''
									THEN tblJournal.strComment
								ELSE tblJournalEnt.strComment
								END
					ELSE tblJournal.strComment
					END AS strComment
				,CASE 
					WHEN tblJournal.strSource = 'Stock Count'
						THEN (
								CASE 
									WHEN (
											SELECT COUNT(strAdjDocID)
											FROM tblInvAdjDoc
											WHERE tblInvAdjDoc.lngJourID = tblJournal.lngJourID
												AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
											) = 0
										THEN tblJournal.strSource
									ELSE (
											SELECT ISNULL(CONCAT (
														'SC/'
														,strAdjDocID
														), tblJournal.strSource)
											FROM tblInvAdjDoc
											WHERE tblInvAdjDoc.lngJourID = tblJournal.lngJourID
												AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
											)
									END
								)
					ELSE tblJournal.strSource
					END AS strSource
				,tblJournal.lngJourID
				,tblJournalEnt.decDebits
				,tblJournalEnt.decCredits
				,tblJournalEnt.decAmount
				,tblJournalEnt.decAllocatedAmtToDate
				,tblJournalEnt.decUnAllocatedAmt
				,CASE 
					WHEN ISNULL(tblBankRecTrans.strSource, '') = ''
						THEN ISNULL((
									SELECT JDT.strLineReference
									FROM tblJournalEntryDoc JHR
									INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID
									WHERE JHR.lngJourID = tblJournal.lngJourID
										AND JHR.strJEDocID = tblJournal.strSource
										AND JDT.intGLNumber = tblJournalEnt.intGLNumber
										AND JDT.intLineNo = tblJournalEnt.intLineNum
									), '')
					ELSE ISNULL(tblBankRecTrans.strSource, '')
					END AS strSources
				,tblAccounts.intGLNumber AS GLNumber
				,tblAccounts.strDesc
				,tblAccounts.intAccType AS AccType
			FROM tblJournal
			INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
			INNER JOIN tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber
			LEFT OUTER JOIN tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEnt.lngJourID
				AND tblBankRecTrans.intLineNum = tblJournalEnt.intLineNum
				AND tblBankRecTrans.dteJourDate = tblJournal.dteJournalDate
			INNER JOIN tblCenterEnt ON tblJournal.lngJourID = tblCenterEnt.lngJourID
				AND tblJournalEnt.intLineNum = tblCenterEnt.intLineNum
			WHERE (
					tblJournalEnt.intGLNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@SQAcct, ',')
						)
					)
				AND (tblJournal.dteJournalDate <= @SQStart)
			ORDER BY tblAccounts.intGLNumber
				,tblJournal.dteJournalDate
				,tblJournal.lngJourID
		END
		ELSE
		BEGIN
			SELECT tblJournal.dteJournalDate
				,CASE 
					WHEN tblJournal.intModule = @SQModule
						THEN CASE 
								WHEN tblJournalEnt.strComment = ''
									THEN tblJournal.strComment
								ELSE tblJournalEnt.strComment
								END
					ELSE tblJournal.strComment
					END AS strComment
				,CASE 
					WHEN tblJournal.strSource = 'Stock Count'
						THEN (
								CASE 
									WHEN (
											SELECT COUNT(strAdjDocID)
											FROM tblInvAdjDoc
											WHERE tblInvAdjDoc.lngJourID = tblJournal.lngJourID
												AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
											) = 0
										THEN tblJournal.strSource
									ELSE (
											SELECT ISNULL(CONCAT (
														'SC/'
														,strAdjDocID
														), tblJournal.strSource)
											FROM tblInvAdjDoc
											WHERE tblInvAdjDoc.lngJourID = tblJournal.lngJourID
												AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
											)
									END
								)
					ELSE tblJournal.strSource
					END AS strSource
				,tblJournal.lngJourID
				,tblJournalEnt.decDebits
				,tblJournalEnt.decCredits
				,tblJournalEnt.decAmount
				,tblJournalEnt.decAllocatedAmtToDate
				,tblJournalEnt.decUnAllocatedAmt
				,CASE 
					WHEN ISNULL(tblBankRecTrans.strSource, '') = ''
						THEN ISNULL((
									SELECT JDT.strLineReference
									FROM tblJournalEntryDoc JHR
									INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID
									WHERE JHR.lngJourID = tblJournal.lngJourID
										AND JHR.strJEDocID = tblJournal.strSource
										AND JDT.intGLNumber = tblJournalEnt.intGLNumber
										AND JDT.intLineNo = tblJournalEnt.intLineNum
									), '')
					ELSE ISNULL(tblBankRecTrans.strSource, '')
					END AS strSources
				,tblAccounts.intGLNumber AS GLNumber
				,tblAccounts.strDesc
				,tblAccounts.intAccType AS AccType
			FROM tblJournal
			INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
			INNER JOIN tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber
			LEFT OUTER JOIN tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEnt.lngJourID
				AND tblBankRecTrans.intLineNum = tblJournalEnt.intLineNum
				AND tblBankRecTrans.dteJourDate = tblJournal.dteJournalDate
			WHERE (
					tblJournalEnt.intGLNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@SQAcct, ',')
						)
					)
				AND (tblJournal.dteJournalDate <= @SQStart)
			ORDER BY tblAccounts.intGLNumber
				,tblJournal.dteJournalDate
				,tblJournal.lngJourID
		END
	END
	ELSE IF (@_dteJournalDate2 IS NOT NULL)
	BEGIN
		IF (@_blnProfitCenters = 1)
		BEGIN
			SELECT tblJournal.dteJournalDate
				,CASE 
					WHEN tblJournal.intModule = @SQModule
						THEN CASE 
								WHEN tblJournalEnt.strComment = ''
									THEN tblJournal.strComment
								ELSE tblJournalEnt.strComment
								END
					ELSE tblJournal.strComment
					END AS strComment
				,CASE 
					WHEN tblJournal.strSource = 'Stock Count'
						THEN (
								CASE 
									WHEN (
											SELECT COUNT(strAdjDocID)
											FROM tblInvAdjDoc
											WHERE tblInvAdjDoc.lngJourID = tblJournal.lngJourID
												AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
											) = 0
										THEN tblJournal.strSource
									ELSE (
											SELECT ISNULL(CONCAT (
														'SC/'
														,strAdjDocID
														), tblJournal.strSource)
											FROM tblInvAdjDoc
											WHERE tblInvAdjDoc.lngJourID = tblJournal.lngJourID
												AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
											)
									END
								)
					ELSE tblJournal.strSource
					END AS strSource
				,tblJournal.lngJourID
				,tblJournalEnt.decDebits
				,tblJournalEnt.decCredits
				,tblJournalEnt.decAmount
				,tblJournalEnt.decAllocatedAmtToDate
				,tblJournalEnt.decUnAllocatedAmt
				,CASE 
					WHEN ISNULL(tblBankRecTrans.strSource, '') = ''
						THEN ISNULL((
									SELECT JDT.strLineReference
									FROM tblJournalEntryDoc JHR
									INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID
									WHERE JHR.lngJourID = tblJournal.lngJourID
										AND JHR.strJEDocID = tblJournal.strSource
										AND JDT.intGLNumber = tblJournalEnt.intGLNumber
										AND JDT.intLineNo = tblJournalEnt.intLineNum
									), '')
					ELSE ISNULL(tblBankRecTrans.strSource, '')
					END AS strSources
				,tblAccounts.intGLNumber AS GLNumber
				,tblAccounts.strDesc
				,tblAccounts.intAccType AS AccType
			FROM tblJournal
			INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
			INNER JOIN tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber
			LEFT OUTER JOIN tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEnt.lngJourID
				AND tblBankRecTrans.intLineNum = tblJournalEnt.intLineNum
				AND tblBankRecTrans.dteJourDate = tblJournal.dteJournalDate
			INNER JOIN tblCenterEnt ON tblJournal.lngJourID = tblCenterEnt.lngJourID
				AND tblJournalEnt.intLineNum = tblCenterEnt.intLineNum
			WHERE (
					tblJournalEnt.intGLNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@SQAcct, ',')
						)
					)
				AND (
					tblJournal.dteJournalDate BETWEEN @SQStart
						AND @SQEnd
					)
			ORDER BY tblAccounts.intGLNumber
				,tblJournal.dteJournalDate
				,tblJournal.lngJourID
		END
		ELSE
		BEGIN
			SELECT tblJournal.dteJournalDate
				,CASE 
					WHEN tblJournal.intModule = @SQModule
						THEN CASE 
								WHEN tblJournalEnt.strComment = ''
									THEN tblJournal.strComment
								ELSE tblJournalEnt.strComment
								END
					ELSE tblJournal.strComment
					END AS strComment
				,CASE 
					WHEN tblJournal.strSource = 'Stock Count'
						THEN (
								CASE 
									WHEN (
											SELECT COUNT(strAdjDocID)
											FROM tblInvAdjDoc
											WHERE tblInvAdjDoc.lngJourID = tblJournal.lngJourID
												AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
											) = 0
										THEN tblJournal.strSource
									ELSE (
											SELECT ISNULL(CONCAT (
														'SC/'
														,strAdjDocID
														), tblJournal.strSource)
											FROM tblInvAdjDoc
											WHERE tblInvAdjDoc.lngJourID = tblJournal.lngJourID
												AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
											)
									END
								)
					ELSE tblJournal.strSource
					END AS strSource
				,tblJournal.lngJourID
				,tblJournalEnt.decDebits
				,tblJournalEnt.decCredits
				,tblJournalEnt.decAmount
				,tblJournalEnt.decAllocatedAmtToDate
				,tblJournalEnt.decUnAllocatedAmt
				,CASE 
					WHEN ISNULL(tblBankRecTrans.strSource, '') = ''
						THEN ISNULL((
									SELECT JDT.strLineReference
									FROM tblJournalEntryDoc JHR
									INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID
									WHERE JHR.lngJourID = tblJournal.lngJourID
										AND JHR.strJEDocID = tblJournal.strSource
										AND JDT.intGLNumber = tblJournalEnt.intGLNumber
										AND JDT.intLineNo = tblJournalEnt.intLineNum
									), '')
					ELSE ISNULL(tblBankRecTrans.strSource, '')
					END AS strSources
				,tblAccounts.intGLNumber AS GLNumber
				,tblAccounts.strDesc
				,tblAccounts.intAccType AS AccType
			FROM tblJournal
			INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
			INNER JOIN tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber
			LEFT OUTER JOIN tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEnt.lngJourID
				AND tblBankRecTrans.intLineNum = tblJournalEnt.intLineNum
				AND tblBankRecTrans.dteJourDate = tblJournal.dteJournalDate
			WHERE (
					tblJournalEnt.intGLNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@SQAcct, ',')
						)
					)
				AND (
					tblJournal.dteJournalDate BETWEEN @SQStart
						AND @SQEnd
					)
			ORDER BY tblAccounts.intGLNumber
				,tblJournal.dteJournalDate
				,tblJournal.lngJourID
		END
	END
	ELSE IF (
			(@_dteJournalDate IS NOT NULL)
			AND (@_dteJournalDate2 IS NOT NULL)
			)
	BEGIN
		IF (@_blnProfitCenters = 1)
		BEGIN
			SELECT tblJournal.dteJournalDate
				,CASE 
					WHEN tblJournal.intModule = @SQModule
						THEN CASE 
								WHEN tblJournalEnt.strComment = ''
									THEN tblJournal.strComment
								ELSE tblJournalEnt.strComment
								END
					ELSE tblJournal.strComment
					END AS strComment
				,CASE 
					WHEN tblJournal.strSource = 'Stock Count'
						THEN (
								CASE 
									WHEN (
											SELECT COUNT(strAdjDocID)
											FROM tblInvAdjDoc
											WHERE tblInvAdjDoc.lngJourID = tblJournal.lngJourID
												AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
											) = 0
										THEN tblJournal.strSource
									ELSE (
											SELECT ISNULL(CONCAT (
														'SC/'
														,strAdjDocID
														), tblJournal.strSource)
											FROM tblInvAdjDoc
											WHERE tblInvAdjDoc.lngJourID = tblJournal.lngJourID
												AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
											)
									END
								)
					ELSE tblJournal.strSource
					END AS strSource
				,tblJournal.lngJourID
				,tblJournalEnt.decDebits
				,tblJournalEnt.decCredits
				,tblJournalEnt.decAmount
				,tblJournalEnt.decAllocatedAmtToDate
				,tblJournalEnt.decUnAllocatedAmt
				,CASE 
					WHEN ISNULL(tblBankRecTrans.strSource, '') = ''
						THEN ISNULL((
									SELECT JDT.strLineReference
									FROM tblJournalEntryDoc JHR
									INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID
									WHERE JHR.lngJourID = tblJournal.lngJourID
										AND JHR.strJEDocID = tblJournal.strSource
										AND JDT.intGLNumber = tblJournalEnt.intGLNumber
										AND JDT.intLineNo = tblJournalEnt.intLineNum
									), '')
					ELSE ISNULL(tblBankRecTrans.strSource, '')
					END AS strSources
				,tblAccounts.intGLNumber AS GLNumber
				,tblAccounts.strDesc
				,tblAccounts.intAccType AS AccType
			FROM tblJournal
			INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
			INNER JOIN tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber
			LEFT OUTER JOIN tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEnt.lngJourID
				AND tblBankRecTrans.intLineNum = tblJournalEnt.intLineNum
				AND tblBankRecTrans.dteJourDate = tblJournal.dteJournalDate
			INNER JOIN tblCenterEnt ON tblJournal.lngJourID = tblCenterEnt.lngJourID
				AND tblJournalEnt.intLineNum = tblCenterEnt.intLineNum
			WHERE (
					tblJournalEnt.intGLNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@SQAcct, ',')
						)
					)
				AND (tblJournal.dteJournalDate <= @SQStart)
				AND (
					tblJournal.dteJournalDate BETWEEN @SQStart
						AND @SQEnd
					)
			ORDER BY tblAccounts.intGLNumber
				,tblJournal.dteJournalDate
				,tblJournal.lngJourID
		END
		ELSE
		BEGIN
			SELECT tblJournal.dteJournalDate
				,CASE 
					WHEN tblJournal.intModule = @SQModule
						THEN CASE 
								WHEN tblJournalEnt.strComment = ''
									THEN tblJournal.strComment
								ELSE tblJournalEnt.strComment
								END
					ELSE tblJournal.strComment
					END AS strComment
				,CASE 
					WHEN tblJournal.strSource = 'Stock Count'
						THEN (
								CASE 
									WHEN (
											SELECT COUNT(strAdjDocID)
											FROM tblInvAdjDoc
											WHERE tblInvAdjDoc.lngJourID = tblJournal.lngJourID
												AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
											) = 0
										THEN tblJournal.strSource
									ELSE (
											SELECT ISNULL(CONCAT (
														'SC/'
														,strAdjDocID
														), tblJournal.strSource)
											FROM tblInvAdjDoc
											WHERE tblInvAdjDoc.lngJourID = tblJournal.lngJourID
												AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
											)
									END
								)
					ELSE tblJournal.strSource
					END AS strSource
				,tblJournal.lngJourID
				,tblJournalEnt.decDebits
				,tblJournalEnt.decCredits
				,tblJournalEnt.decAmount
				,tblJournalEnt.decAllocatedAmtToDate
				,tblJournalEnt.decUnAllocatedAmt
				,CASE 
					WHEN ISNULL(tblBankRecTrans.strSource, '') = ''
						THEN ISNULL((
									SELECT JDT.strLineReference
									FROM tblJournalEntryDoc JHR
									INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID
									WHERE JHR.lngJourID = tblJournal.lngJourID
										AND JHR.strJEDocID = tblJournal.strSource
										AND JDT.intGLNumber = tblJournalEnt.intGLNumber
										AND JDT.intLineNo = tblJournalEnt.intLineNum
									), '')
					ELSE ISNULL(tblBankRecTrans.strSource, '')
					END AS strSources
				,tblAccounts.intGLNumber AS GLNumber
				,tblAccounts.strDesc
				,tblAccounts.intAccType AS AccType
			FROM tblJournal
			INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
			INNER JOIN tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber
			LEFT OUTER JOIN tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEnt.lngJourID
				AND tblBankRecTrans.intLineNum = tblJournalEnt.intLineNum
				AND tblBankRecTrans.dteJourDate = tblJournal.dteJournalDate
			WHERE (
					tblJournalEnt.intGLNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@SQAcct, ',')
						)
					)
				AND (tblJournal.dteJournalDate <= @SQStart)
				AND (
					tblJournal.dteJournalDate BETWEEN @SQStart
						AND @SQEnd
					)
			ORDER BY tblAccounts.intGLNumber
				,tblJournal.dteJournalDate
				,tblJournal.lngJourID
		END
	END
	ELSE
	BEGIN
		IF (@_blnProfitCenters = 1)
		BEGIN
			SELECT tblJournal.dteJournalDate
				,CASE 
					WHEN tblJournal.intModule = @SQModule
						THEN CASE 
								WHEN tblJournalEnt.strComment = ''
									THEN tblJournal.strComment
								ELSE tblJournalEnt.strComment
								END
					ELSE tblJournal.strComment
					END AS strComment
				,CASE 
					WHEN tblJournal.strSource = 'Stock Count'
						THEN (
								CASE 
									WHEN (
											SELECT COUNT(strAdjDocID)
											FROM tblInvAdjDoc
											WHERE tblInvAdjDoc.lngJourID = tblJournal.lngJourID
												AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
											) = 0
										THEN tblJournal.strSource
									ELSE (
											SELECT ISNULL(CONCAT (
														'SC/'
														,strAdjDocID
														), tblJournal.strSource)
											FROM tblInvAdjDoc
											WHERE tblInvAdjDoc.lngJourID = tblJournal.lngJourID
												AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
											)
									END
								)
					ELSE tblJournal.strSource
					END AS strSource
				,tblJournal.lngJourID
				,tblJournalEnt.decDebits
				,tblJournalEnt.decCredits
				,tblJournalEnt.decAmount
				,tblJournalEnt.decAllocatedAmtToDate
				,tblJournalEnt.decUnAllocatedAmt
				,CASE 
					WHEN ISNULL(tblBankRecTrans.strSource, '') = ''
						THEN ISNULL((
									SELECT JDT.strLineReference
									FROM tblJournalEntryDoc JHR
									INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID
									WHERE JHR.lngJourID = tblJournal.lngJourID
										AND JHR.strJEDocID = tblJournal.strSource
										AND JDT.intGLNumber = tblJournalEnt.intGLNumber
										AND JDT.intLineNo = tblJournalEnt.intLineNum
									), '')
					ELSE ISNULL(tblBankRecTrans.strSource, '')
					END AS strSources
				,tblAccounts.intGLNumber AS GLNumber
				,tblAccounts.strDesc
				,tblAccounts.intAccType AS AccType
			FROM tblJournal
			INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
			INNER JOIN tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber
			LEFT OUTER JOIN tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEnt.lngJourID
				AND tblBankRecTrans.intLineNum = tblJournalEnt.intLineNum
				AND tblBankRecTrans.dteJourDate = tblJournal.dteJournalDate
			INNER JOIN tblCenterEnt ON tblJournal.lngJourID = tblCenterEnt.lngJourID
				AND tblJournalEnt.intLineNum = tblCenterEnt.intLineNum
			WHERE (
					tblJournalEnt.intGLNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@SQAcct, ',')
						)
					)
			ORDER BY tblAccounts.intGLNumber
				,tblJournal.dteJournalDate
				,tblJournal.lngJourID
		END
		ELSE
		BEGIN
			SELECT tblJournal.dteJournalDate
				,CASE 
					WHEN tblJournal.intModule = @SQModule
						THEN CASE 
								WHEN tblJournalEnt.strComment = ''
									THEN tblJournal.strComment
								ELSE tblJournalEnt.strComment
								END
					ELSE tblJournal.strComment
					END AS strComment
				,CASE 
					WHEN tblJournal.strSource = 'Stock Count'
						THEN (
								CASE 
									WHEN (
											SELECT COUNT(strAdjDocID)
											FROM tblInvAdjDoc
											WHERE tblInvAdjDoc.lngJourID = tblJournal.lngJourID
												AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
											) = 0
										THEN tblJournal.strSource
									ELSE (
											SELECT ISNULL(CONCAT (
														'SC/'
														,strAdjDocID
														), tblJournal.strSource)
											FROM tblInvAdjDoc
											WHERE tblInvAdjDoc.lngJourID = tblJournal.lngJourID
												AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
											)
									END
								)
					ELSE tblJournal.strSource
					END AS strSource
				,tblJournal.lngJourID
				,tblJournalEnt.decDebits
				,tblJournalEnt.decCredits
				,tblJournalEnt.decAmount
				,tblJournalEnt.decAllocatedAmtToDate
				,tblJournalEnt.decUnAllocatedAmt
				,CASE 
					WHEN ISNULL(tblBankRecTrans.strSource, '') = ''
						THEN ISNULL((
									SELECT JDT.strLineReference
									FROM tblJournalEntryDoc JHR
									INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID
									WHERE JHR.lngJourID = tblJournal.lngJourID
										AND JHR.strJEDocID = tblJournal.strSource
										AND JDT.intGLNumber = tblJournalEnt.intGLNumber
										AND JDT.intLineNo = tblJournalEnt.intLineNum
									), '')
					ELSE ISNULL(tblBankRecTrans.strSource, '')
					END AS strSources
				,tblAccounts.intGLNumber AS GLNumber
				,tblAccounts.strDesc
				,tblAccounts.intAccType AS AccType
			FROM tblJournal
			INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
			INNER JOIN tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber
			LEFT OUTER JOIN tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEnt.lngJourID
				AND tblBankRecTrans.intLineNum = tblJournalEnt.intLineNum
				AND tblBankRecTrans.dteJourDate = tblJournal.dteJournalDate
			WHERE (
					tblJournalEnt.intGLNumber IN (
						SELECT *
						FROM fnSplitStringAsTable(@SQAcct, ',')
						)
					)
			ORDER BY tblAccounts.intGLNumber
				,tblJournal.dteJournalDate
				,tblJournal.lngJourID
		END
	END
END
GO

----------------------------------------------------

CREATE PROCEDURE [dbo].[GLTransactionsLoad3]  
@_blnProfitCenters BIT = NULL,   
@_dteJournalDate DATETIME = NULL,  
@_dteJournalDate2 DATETIME = NULL,  
@SQAcct VARCHAR(MAX) = NULL,  
@SQModule INT,  
@SQStart DATETIME = NULL,  
@SQEnd DATETIME = NULL  
AS  
BEGIN  
SET NOCOUNT ON;  
IF((@_dteJournalDate IS NOT NULL) AND (@_dteJournalDate2 IS NULL))    
BEGIN  
    IF(@_blnProfitCenters = 1) 
    BEGIN
        SELECT tblJournalLY.dteJournalDate, CASE WHEN tblJournalLY.intModule = @SQModule THEN CASE WHEN tblJournalEntLY.strComment = '' THEN tblJournalLY.strComment ELSE tblJournalEntLY.strComment END ELSE tblJournalLY.strComment END AS strComment,
		 CASE WHEN tblJournalLY.strSource = 'Stock Count' THEN( CASE WHEN ( SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc 
		 WHERE tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate) = 0 THEN tblJournalLY.strSource ELSE ( SELECT ISNULL(CONCAT ( 'SC/' ,strAdjDocID ), tblJournalLY.strSource) FROM tblInvAdjDoc 
		 WHERE tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate) END ) ELSE tblJournalLY.strSource END AS strSource, tblJournalLY.lngJourID, tblJournalEntLY.decDebits, tblJournalEntLY.decCredits, tblJournalEntLY.decAmount, tblJournalEntLY.decAllocatedAmtToDate, tblJournalEntLY.decUnAllocatedAmt, CASE WHEN ISNULL(tblBankRecTrans.strSource, '') = '' THEN ISNULL((SELECT JDT.strLineReference FROM tblJournalEntryDoc JHR 
INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID WHERE JHR.lngJourID = tblJournalLY.lngJourID AND JHR.strJEDocID = tblJournalLY.strSource AND JDT.intGLNumber = tblJournalEntLY.intGLNumber AND JDT.intLineNo = tblJournalEntLY.intLineNum),'') ELSE ISNULL(tblBankRecTrans.strSource, '') END AS strSources, 
tblAccountsLY.intGLNumber,tblAccountsLY.strDesc,tblAccountsLY.intAccType AS AccType FROM tblJournalLY INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID 
INNER JOIN tblAccountsLY ON tblJournalEntLY.intGLNumber= tblAccountsLY.intGLNumber
LEFT OUTER JOIN tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEntLY.lngJourID AND tblBankRecTrans.intLineNum = tblJournalEntLY.intLineNum AND tblBankRecTrans.dteJourDate = tblJournalLY.dteJournalDate
INNER JOIN tblCenterEntLY ON tblJournalLY.lngJourID = tblCenterEntLY.lngJourID AND tblJournalEntLY.intLineNum = tblCenterEntLY.intLineNum
        WHERE (tblJournalEntLY.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcct, ',')))
        AND (tblJournalLY.dteJournalDate <= @SQStart)
        ORDER BY tblAccountsLY.intGLNumber,tblJournalLY.dteJournalDate, tblJournalLY.lngJourID
    END
    ELSE
    BEGIN
        SELECT tblJournalLY.dteJournalDate, CASE WHEN tblJournalLY.intModule = @SQModule THEN CASE WHEN tblJournalEntLY.strComment = '' THEN tblJournalLY.strComment ELSE tblJournalEntLY.strComment END ELSE tblJournalLY.strComment END AS strComment, 
		CASE WHEN tblJournalLY.strSource = 'Stock Count' THEN( CASE WHEN ( SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate) = 0 THEN tblJournalLY.strSource ELSE ( SELECT ISNULL(CONCAT ( 'SC/' ,strAdjDocID ), tblJournalLY.strSource) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate) END ) ELSE tblJournalLY.strSource END AS strSource, tblJournalLY.lngJourID, tblJournalEntLY.decDebits, tblJournalEntLY.decCredits, tblJournalEntLY.decAmount,
		 tblJournalEntLY.decAllocatedAmtToDate
, tblJournalEntLY.decUnAllocatedAmt, CASE WHEN ISNULL(tblBankRecTrans.strSource, '') = '' THEN ISNULL((SELECT JDT.strLineReference 
FROM tblJournalEntryDoc JHR 
INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID WHERE JHR.lngJourID = tblJournalLY.lngJourID AND JHR.strJEDocID = tblJournalLY.strSource AND JDT.intGLNumber = tblJournalEntLY.intGLNumber AND JDT.intLineNo = tblJournalEntLY.intLineNum),'') ELSE ISNULL(tblBankRecTrans.strSource, '') END AS strSources, tblAccountsLY.intGLNumber AS GLNumber,tblAccountsLY.strDesc,tblAccountsLY.intAccType AS AccType FROM tblJournalLY 
INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID 
INNER JOIN tblAccountsLY ON tblJournalEntLY.intGLNumber= tblAccountsLY.intGLNumber 
LEFT OUTER JOIN tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEntLY.lngJourID AND tblBankRecTrans.intLineNum = tblJournalEntLY.intLineNum AND tblBankRecTrans.dteJourDate = tblJournalLY.dteJournalDate
        WHERE (tblJournalEntLY.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcct, ',')))
        AND (tblJournalLY.dteJournalDate <= @SQStart)
        ORDER BY tblAccountsLY.intGLNumber,tblJournalLY.dteJournalDate, tblJournalLY.lngJourID
    END
END  
ELSE IF(@_dteJournalDate2 Is Not NULL)  
BEGIN  
    IF(@_blnProfitCenters = 1) 
    BEGIN
        SELECT tblJournalLY.dteJournalDate, CASE WHEN tblJournalLY.intModule = @SQModule THEN CASE WHEN tblJournalEntLY.strComment = '' THEN tblJournalLY.strComment ELSE tblJournalEntLY.strComment END ELSE tblJournalLY.strComment END AS strComment, CASE WHEN tblJournalLY.strSource = 'Stock Count' THEN( CASE WHEN ( SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate) = 0 THEN tblJournalLY.strSource ELSE ( SELECT ISNULL(CONCAT ( 'SC/' ,strAdjDocID ), tblJournalLY.strSource) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate) END ) ELSE tblJournalLY.strSource END AS strSource, 
		tblJournalLY.lngJourID, tblJournalEntLY.decDebits, tblJournalEntLY.decCredits, tblJournalEntLY.decAmount, 
		tblJournalEntLY.decAllocatedAmtToDate
, tblJournalEntLY.decUnAllocatedAmt, CASE WHEN ISNULL(tblBankRecTrans.strSource, '') = '' THEN ISNULL((SELECT JDT.strLineReference FROM tblJournalEntryDoc JHR INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID WHERE JHR.lngJourID = tblJournalLY.lngJourID AND JHR.strJEDocID = tblJournalLY.strSource AND JDT.intGLNumber = tblJournalEntLY.intGLNumber AND JDT.intLineNo = tblJournalEntLY.intLineNum),'') ELSE ISNULL(tblBankRecTrans.strSource, '') END AS strSources,
 tblAccountsLY.intGLNumber AS GLNumber,tblAccountsLY.strDesc,tblAccountsLY.intAccType AS AccType FROM tblJournalLY INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID INNER JOIN tblAccountsLY ON tblJournalEntLY.intGLNumber= tblAccountsLY.intGLNumber LEFT OUTER JOIN
 tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEntLY.lngJourID AND tblBankRecTrans.intLineNum = tblJournalEntLY.intLineNum AND tblBankRecTrans.dteJourDate = tblJournalLY.dteJournalDate
        INNER JOIN tblCenterEntLY ON tblJournalLY.lngJourID = tblCenterEntLY.lngJourID AND tblJournalEntLY.intLineNum = tblCenterEntLY.intLineNum
        WHERE (tblJournalEntLY.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcct, ',')))
        AND (tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd)
        ORDER BY tblAccountsLY.intGLNumber,tblJournalLY.dteJournalDate, tblJournalLY.lngJourID
    END
    ELSE
    BEGIN
        SELECT tblJournalLY.dteJournalDate, CASE WHEN tblJournalLY.intModule = @SQModule THEN CASE WHEN tblJournalEntLY.strComment = '' THEN tblJournalLY.strComment ELSE tblJournalEntLY.strComment END ELSE tblJournalLY.strComment END AS strComment, CASE WHEN tblJournalLY.strSource = 'Stock Count' THEN( CASE WHEN ( SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate) = 0 THEN tblJournalLY.strSource ELSE ( SELECT ISNULL(CONCAT ( 'SC/' ,strAdjDocID ), tblJournalLY.strSource) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate) END ) ELSE tblJournalLY.strSource END AS strSource, tblJournalLY.lngJourID, tblJournalEntLY.decDebits, tblJournalEntLY.decCredits, tblJournalEntLY.decAmount, tblJournalEntLY.decAllocatedAmtToDate
, tblJournalEntLY.decUnAllocatedAmt, CASE WHEN ISNULL(tblBankRecTrans.strSource, '') = '' THEN ISNULL((SELECT JDT.strLineReference FROM tblJournalEntryDoc JHR INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID WHERE JHR.lngJourID = tblJournalLY.lngJourID AND JHR.strJEDocID = tblJournalLY.strSource AND JDT.intGLNumber = tblJournalEntLY.intGLNumber AND JDT.intLineNo = tblJournalEntLY.intLineNum),'') ELSE ISNULL(tblBankRecTrans.strSource, '') END AS strSources, tblAccountsLY.intGLNumber AS GLNumber,tblAccountsLY.strDesc,tblAccountsLY.intAccType AS AccType FROM tblJournalLY INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID INNER JOIN tblAccountsLY ON tblJournalEntLY.intGLNumber= tblAccountsLY.intGLNumber LEFT OUTER JOIN
 tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEntLY.lngJourID AND tblBankRecTrans.intLineNum = tblJournalEntLY.intLineNum AND tblBankRecTrans.dteJourDate = tblJournalLY.dteJournalDate
        WHERE (tblJournalEntLY.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcct, ',')))
        AND (tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd)
        ORDER BY tblAccountsLY.intGLNumber,tblJournalLY.dteJournalDate, tblJournalLY.lngJourID
    END
END  
ELSE IF((@_dteJournalDate IS NOT NULL) AND (@_dteJournalDate2 IS Not NULL))    
BEGIN
    IF(@_blnProfitCenters = 1) 
    BEGIN
        SELECT tblJournalLY.dteJournalDate, CASE WHEN tblJournalLY.intModule = @SQModule THEN CASE WHEN tblJournalEntLY.strComment = '' THEN tblJournalLY.strComment ELSE tblJournalEntLY.strComment END ELSE tblJournalLY.strComment END AS strComment, CASE WHEN tblJournalLY.strSource = 'Stock Count' THEN( CASE WHEN ( SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate) = 0 THEN tblJournalLY.strSource ELSE ( SELECT ISNULL(CONCAT ( 'SC/' ,strAdjDocID ), tblJournalLY.strSource) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate) END ) ELSE tblJournalLY.strSource END AS strSource, tblJournalLY.lngJourID, tblJournalEntLY.decDebits, tblJournalEntLY.decCredits, tblJournalEntLY.decAmount, 
		tblJournalEntLY.decAllocatedAmtToDate, tblJournalEntLY.decUnAllocatedAmt, CASE WHEN ISNULL(tblBankRecTrans.strSource, '') = '' THEN ISNULL((SELECT JDT.strLineReference FROM tblJournalEntryDoc JHR INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID WHERE JHR.lngJourID = tblJournalLY.lngJourID AND JHR.strJEDocID = tblJournalLY.strSource AND JDT.intGLNumber = tblJournalEntLY.intGLNumber AND JDT.intLineNo = tblJournalEntLY.intLineNum),'') ELSE ISNULL(tblBankRecTrans.strSource, '') END AS strSources,
		 tblAccountsLY.intGLNumber AS GLNumber,tblAccountsLY.strDesc,tblAccountsLY.intAccType AS AccType FROM tblJournalLY INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID INNER JOIN tblAccountsLY ON tblJournalEntLY.intGLNumber= tblAccountsLY.intGLNumber 
        LEFT OUTER JOIN tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEntLY.lngJourID AND tblBankRecTrans.intLineNum = tblJournalEntLY.intLineNum AND tblBankRecTrans.dteJourDate = tblJournalLY.dteJournalDate
        INNER JOIN tblCenterEntLY ON tblJournalLY.lngJourID = tblCenterEntLY.lngJourID AND tblJournalEntLY.intLineNum = tblCenterEntLY.intLineNum
        WHERE (tblJournalEntLY.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcct, ',')))
        AND (tblJournalLY.dteJournalDate <= @SQStart)
        AND (tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd)
        ORDER BY tblAccountsLY.intGLNumber,tblJournalLY.dteJournalDate, tblJournalLY.lngJourID
    END
    ELSE
    BEGIN
        SELECT tblJournalLY.dteJournalDate, CASE WHEN tblJournalLY.intModule = @SQModule THEN CASE WHEN tblJournalEntLY.strComment = '' THEN tblJournalLY.strComment ELSE tblJournalEntLY.strComment END ELSE tblJournalLY.strComment END AS strComment, CASE WHEN tblJournalLY.strSource = 'Stock Count' THEN( CASE WHEN ( SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate) = 0 THEN tblJournalLY.strSource ELSE ( SELECT ISNULL(CONCAT ( 'SC/' ,strAdjDocID ), tblJournalLY.strSource) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate) END ) ELSE tblJournalLY.strSource END AS strSource, tblJournalLY.lngJourID, tblJournalEntLY.decDebits, tblJournalEntLY.decCredits, tblJournalEntLY.decAmount, tblJournalEntLY.decAllocatedAmtToDate
, tblJournalEntLY.decUnAllocatedAmt, CASE WHEN ISNULL(tblBankRecTrans.strSource, '') = '' THEN ISNULL((SELECT JDT.strLineReference FROM tblJournalEntryDoc JHR INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID WHERE JHR.lngJourID = tblJournalLY.lngJourID AND JHR.strJEDocID = tblJournalLY.strSource AND JDT.intGLNumber = tblJournalEntLY.intGLNumber AND JDT.intLineNo = tblJournalEntLY.intLineNum),'') ELSE ISNULL(tblBankRecTrans.strSource, '') END AS strSources, 
tblAccountsLY.intGLNumber AS GLNumber,tblAccountsLY.strDesc,tblAccountsLY.intAccType AS AccType FROM tblJournalLY INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID INNER JOIN tblAccountsLY ON tblJournalEntLY.intGLNumber= tblAccountsLY.intGLNumber LEFT OUTER JOIN
 tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEntLY.lngJourID AND tblBankRecTrans.intLineNum = tblJournalEntLY.intLineNum AND tblBankRecTrans.dteJourDate = tblJournalLY.dteJournalDate
        WHERE (tblJournalEntLY.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@SQAcct, ',')))
        AND (tblJournalLY.dteJournalDate <= @SQStart)
        AND (tblJournalLY.dteJournalDate BETWEEN @SQStart AND @SQEnd)
        ORDER BY tblAccountsLY.intGLNumber,tblJournalLY.dteJournalDate, tblJournalLY.lngJourID
    END
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GLTransactionsLoad4]  
@_blnProfitCenters BIT = NULL,   
@_dteJournalDate DATETIME = NULL,  
@_dteJournalDate2 DATETIME = NULL,  
@SQuidYearID uniqueidentifier = NULL,  
@SQAcct VARCHAR(MAX) = NULL,  
@SQModule INT,  
@SQStart DATETIME = NULL,  
@SQEnd DATETIME = NULL  
AS  
BEGIN  
SET NOCOUNT ON;  
IF((@_dteJournalDate IS NOT NULL) AND (@_dteJournalDate2 IS NULL))    
BEGIN  
    SELECT tblJournalHist.dteJournalDate, CASE WHEN tblJournalHist.intModule = @SQModule THEN CASE WHEN tblJournalEntHist.strComment = '' THEN tblJournalHist.strComment ELSE tblJournalEntHist.strComment END ELSE tblJournalHist.strComment END AS strComment

, CASE WHEN tblJournalHist.strSource = 'Stock Count' THEN( CASE WHEN ( SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate) = 0 THEN tblJournalHist.strSource ELSE ( SELECT ISNULL(CONCAT ( 'SC/' ,strAdjDocID 

), tblJournalHist.strSource) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate) END ) ELSE tblJournalHist.strSource END AS strSource, tblJournalHist.lngJourID, tblJournalEntHist.decDebits, tblJournalEntHist.decCredits, tblJournalEntHist.decAmount, tblJournalEntHist.decAllocatedAmtToDate, 
tblJournalEntHist.decUnAllocatedAmt, CASE WHEN ISNULL(tblBankRecTrans.strSource, '') = '' THEN ISNULL((SELECT JDT.strLineReference FROM tblJournalEntryDoc JHR
 INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID WHERE JHR.lngJourID = tblJournalHist.lngJourID AND JHR.strJEDocID = tblJournalHist.strSource AND JDT.intGLNumber = tblJournalEntHist.intGLNumber AND JDT.intLineNo = tblJournalEntHist.
intLineNum),'') ELSE ISNULL(tblBankRecTrans.strSource, '') END strSources ,tblAccountsHist.intGLNumber AS GLNumber,tblAccountsHist.strDesc,tblAccountsHist.intAccType AS AccType FROM tblJournalHist
  INNER JOIN tblJournalEntHist ON tblJournalHist.lngJourID = tblJournalEntHist.lngJourID AND tblJournalHist.uidYearID = tblJournalEntHist.uidYearID 
INNER JOIN tblAccountsHist ON tblJournalEntHist.intGLNumber= tblAccountsHist.intGLNumber AND tblJournalEntHist.uidYearID = tblAccountsHist.uidYearID 
LEFT OUTER JOIN tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEntHist.lngJourID AND tblBankRecTrans.intLineNum = tblJournalEntHist.intLineNum AND tblBankRecTrans.dteJourDate = tblJournalHist.dteJournalDate 
    WHERE (tblJournalEntHist.intGLNumber = @SQAcct) AND (tblJournalHist.uidYearID = @SQuidYearID)  
    AND (tblJournalHist.dteJournalDate <= @SQStart)
    ORDER BY tblAccountsHist.intGLNumber,tblJournalHist.dteJournalDate, tblJournalHist.lngJourID
END  
ELSE IF (@_dteJournalDate2  IS NOT NULL)  
BEGIN  
    SELECT tblJournalHist.dteJournalDate, CASE WHEN tblJournalHist.intModule = @SQModule THEN CASE WHEN tblJournalEntHist.strComment = '' THEN tblJournalHist.strComment ELSE tblJournalEntHist.strComment END ELSE tblJournalHist.strComment END AS strComment

, CASE WHEN tblJournalHist.strSource = 'Stock Count' THEN( CASE WHEN ( SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate) = 0 THEN tblJournalHist.strSource ELSE ( SELECT ISNULL(CONCAT ( 'SC/' ,strAdjDocID 
), tblJournalHist.strSource) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate) END ) ELSE tblJournalHist.strSource END AS strSource, tblJournalHist.lngJourID, tblJournalEntHist.decDebits, tblJournalEntHist.decCredits, tblJournalEntHist.decAmount, tblJournalEntHist.decAllocatedAmtToDate, tblJournalEntHist.decUnAllocatedAmt, CASE WHEN ISNULL(tblBankRecTrans.strSource, '') = '' THEN ISNULL((SELECT JDT.strLineReference FROM tblJournalEntryDoc JHR 
INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID WHERE JHR.lngJourID = tblJournalHist.lngJourID AND JHR.strJEDocID = tblJournalHist.strSource AND JDT.intGLNumber = tblJournalEntHist.intGLNumber AND JDT.intLineNo = tblJournalEntHist.intLineNum),'') ELSE ISNULL(tblBankRecTrans.strSource, '') END strSources ,tblAccountsHist.intGLNumber AS GLNumber,tblAccountsHist.strDesc,tblAccountsHist.intAccType AS AccType FROM tblJournalHist
 INNER JOIN tblJournalEntHist ON tblJournalHist.lngJourID = tblJournalEntHist.lngJourID AND tblJournalHist.uidYearID = tblJournalEntHist.uidYearID 
INNER JOIN tblAccountsHist ON tblJournalEntHist.intGLNumber= tblAccountsHist.intGLNumber AND tblJournalEntHist.uidYearID = tblAccountsHist.uidYearID 
LEFT OUTER JOIN tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEntHist.lngJourID AND tblBankRecTrans.intLineNum = tblJournalEntHist.intLineNum AND tblBankRecTrans.dteJourDate = tblJournalHist.dteJournalDate 
    WHERE (tblJournalEntHist.intGLNumber = @SQAcct) AND (tblJournalHist.uidYearID = @SQuidYearID)  
    AND (tblJournalHist.dteJournalDate BETWEEN @SQStart AND @SQEnd)
    ORDER BY tblAccountsHist.intGLNumber,tblJournalHist.dteJournalDate, tblJournalHist.lngJourID
END  
ELSE IF((@_dteJournalDate Is NOT NULL) AND (@_dteJournalDate2 Is not NULL))
BEGIN
    SELECT tblJournalHist.dteJournalDate, CASE WHEN tblJournalHist.intModule = @SQModule THEN CASE WHEN tblJournalEntHist.strComment = '' THEN tblJournalHist.strComment ELSE tblJournalEntHist.strComment END ELSE tblJournalHist.strComment END AS strComment

, CASE WHEN tblJournalHist.strSource = 'Stock Count' THEN( CASE WHEN ( SELECT COUNT(strAdjDocID) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate) = 0 THEN tblJournalHist.strSource ELSE ( SELECT ISNULL(CONCAT ( 'SC/' ,strAdjDocID 

), tblJournalHist.strSource) FROM tblInvAdjDoc WHERE tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate) END ) ELSE tblJournalHist.strSource END AS strSource, tblJournalHist.lngJourID, tblJournalEntHist.decDebits, tblJournalEntHist.decCredits, tblJournalEntHist.decAmount, tblJournalEntHist.decAllocatedAmtToDate, tblJournalEntHist.decUnAllocatedAmt, CASE WHEN ISNULL(tblBankRecTrans.strSource, '') = '' THEN ISNULL((SELECT JDT.strLineReference FROM tblJournalEntryDoc JHR 
INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID WHERE JHR.lngJourID = tblJournalHist.lngJourID AND JHR.strJEDocID = tblJournalHist.strSource AND JDT.intGLNumber = tblJournalEntHist.intGLNumber AND JDT.intLineNo = tblJournalEntHist.intLineNum),'') ELSE ISNULL(tblBankRecTrans.strSource, '') END strSources ,tblAccountsHist.intGLNumber AS GLNumber,tblAccountsHist.strDesc,tblAccountsHist.intAccType AS AccType FROM tblJournalHist
 INNER JOIN tblJournalEntHist ON tblJournalHist.lngJourID = tblJournalEntHist.lngJourID AND tblJournalHist.uidYearID = tblJournalEntHist.uidYearID 
INNER JOIN tblAccountsHist ON tblJournalEntHist.intGLNumber= tblAccountsHist.intGLNumber AND tblJournalEntHist.uidYearID = tblAccountsHist.uidYearID
 LEFT OUTER JOIN tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEntHist.lngJourID AND tblBankRecTrans.intLineNum = tblJournalEntHist.intLineNum AND tblBankRecTrans.dteJourDate = tblJournalHist.dteJournalDate 
    WHERE (tblJournalEntHist.intGLNumber = @SQAcct) AND (tblJournalHist.uidYearID = @SQuidYearID)  
    AND (tblJournalHist.dteJournalDate <= @SQStart)
    AND (tblJournalHist.dteJournalDate BETWEEN @SQStart AND @SQEnd)
    ORDER BY tblAccountsHist.intGLNumber,tblJournalHist.dteJournalDate, tblJournalHist.lngJourID
END
END  
GO

----------------------------------------------------

create procedure [dbo].[DeleteDocIdFromCustTrans]
(
@CustTrID nvarchar(50)
)
AS
BEGIN
DELETE FROM tblCustTrans WHERE lngCustTrID = @CustTrID
END

GO


----------------------------------------------------
create procedure [dbo].[GetCountTblPOSDrs]      
AS      
BEGIN      
SELECT COUNT(*) FROM tblPOSDrs WHERE intStatus in (0,1) and intOfflineTerminalId is not null
END

GO
----------------------------------------------------



----------------------------------------------------

create procedure [dbo].[GetDocIdFromCustTrans]
(
@OrderDocId nvarchar(50)
)
AS
BEGIN
SELECT ISNULL(lngCustTrID, 0) FROM tblCustTrans WHERE strOrdDocID = @OrderDocId AND ISNULL(strInvDocID, '') = ''
END

GO


----------------------------------------------------
create procedure [dbo].[GetInvItemTaxByPart]
(
@Part NVARCHAR(999)
)
AS
BEGIN
Select bitOverrideTax AS IsOverrideTax,bitUseMTV AS IsUseMTV
from tblInvItemTax (NOLOCK)
where strPartNumber = @Part
END
GO


----------------------------------------------------
create procedure [dbo].[GetMaxCustomerTransID]
AS
BEGIN
SELECT ISNULL(MAX(lngCustTrID),0) + 1 FROM tblCustTrans
END

GO
----------------------------------------------------
create procedure [dbo].[GetMurchantCopyPrintDetails]
@SQDocID NVARCHAR(900)
As
begin
Select Count(TT.bitFEFTPrintMerchantCopy) As MerchantCopy 
from tblInvoiceDocSplitPmt INVSP inner join tblTenderTypes AS TT ON INVSP.strPaymentTypeName = TT.strName 
where INVSP.strInvDocID = @SQDocID and TT.bitFEFTPrintMerchantCopy=1
end
GO

----------------------------------------------------
create procedure [dbo].[GetSumOfOnHand] 
@LocationName as nvarchar(10),
@BinCode as nvarchar(50)
AS
BEGIN
SELECT ISNULL(SUM(decOnHand),0) as OnHand 
FROM tblInvLocBin LOC 
INNER JOIN tblInvExtBin EXT ON LOC.strLocName = EXT.strLocName 
AND LOC.lngID = EXT.lngBinID 
WHERE LOC.strLocName = @LocationName 
AND LOC.strBinCode = @BinCode
END
GO

----------------------------------------------------
create procedure [dbo].[GetTop1FromTblTenderTypes]
@SQTenderType NVARCHAR(900)
As
begin
Select top 1 bitFEFTPrintMerchantCopy from tblTenderTypes Where strName = @SQTenderType
end
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertIntoCustomerTransTables]
(
@CustTrID nvarchar(max),
@CustID varchar(100),
@SystemDate date,
@JournalDate date,
@UserName varchar(100),
@InvDocID varchar(100),
@InvDepNumber varchar(100),
@SoNumber varchar(100),
@TransType int,
@InvAmount decimal,
@InvAmountF decimal,
@Currency varchar(100),
@IsForeign bit,
@Exchange decimal,
@DocReRated bit,
@ReRated date,
@ReRateCumltveValue decimal,
@Settled bit,
@DiscAvail decimal,
@DiscAvailF decimal,
@DiscExpires date,
@DueDate date,
@JEDocID varchar(100),
@OrdDocID varchar(100)
)
AS
BEGIN
INSERT INTO tblCustTrans 
VALUES (@CustTrID,@CustID,@SystemDate,@JournalDate,@UserName,@InvDocID,@InvDepNumber,@SoNumber,@TransType,@InvAmount,@InvAmountF,@Currency,@IsForeign,@Exchange,@DocReRated,@ReRated,@ReRateCumltveValue,@Settled,@DiscAvail,@DiscAvailF,@DiscExpires,@DueDate,@JEDocID,@OrdDocID)
END

GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertIntoCustTransDTEntry]
(
@JournalDate date,
@CustTrID nvarchar(max),
@CustPayID nvarchar(max),
@Amount decimal,
@TransType int,
@AmtOwingAtTime decimal,
@Reversed bit,
@AmountF decimal,
@AmtOwingAtTimeF decimal,
@IsForeign bit
)
AS
BEGIN
INSERT INTO tblCustTransDT (dteJournalDate,lngCustTrID,lngCustPayID,decAmount,intTransType,decAmtOwingAtTime,bitReversed,dteIntDate,decAmountF,decAmtOwingAtTimeF,bitIsForeign) 
VALUES (@JournalDate,@CustTrID,@CustPayID,@Amount,@TransType,@AmtOwingAtTime,@Reversed,NULL,@AmountF,@AmtOwingAtTimeF,@IsForeign)
END

GO

----------------------------------------------------
create procedure [dbo].[UpdateTblInvLocBinSec] 
@SQLocName as nvarchar(10),
@SQBinCode as nvarchar(50),
@SQNewBinCode as nvarchar(50)
AS
BEGIN
UPDATE tblInvLocBinSec SET strBinCode = @SQNewBinCode  WHERE strLocName = @SQLocName AND strBinCode = @SQBinCode
END
GO

CREATE PROCEDURE [dbo].[GetInventoryItemData](  
@SQDefLocName varchar(20),  
@SQPartNumber varchar(100),  
@SQRevDate DateTime,  
@SQLocation varchar(20)  
)  
AS  
BEGIN  
SELECT   
 tblManBOMCompInv.strPartNumber as PartNumber,   
 tblManBOMCompInv.strDesc as Description,   
 tblInv.strStockUnit as StockUnit,   
 cast(tblManBOMCompInv.decQty as money) AS BOMQty,   
 tblManBOMCompInv.strWCCode as WCCode,   
 ISNULL(tblManBOM.strPartNumber,'') as BOMNumber,   
 tblManBOMCompInv.strLocation as Location,   
 tblInvExt.bitInactive as IsInactive,   
 ISNULL(  
  (SELECT   
   ISNULL(CASE WHEN INV.intType = 5 THEN @SQDefLocName ELSE   
     CASE WHEN ISNULL((SELECT COUNT(strUserName) FROM tblUsers),0) = 0 THEN ISNULL((SELECT EXT.strLocName FROM tblInvExt EXT WHERE EXT.strPartNumber = INV.strPartNumber AND EXT.bitDefault = 1),'') ELSE  
     CASE WHEN ISNULL(IE.bitInactive,0) = 1 THEN ISNULL((SELECT EXT.strLocName FROM tblInvExt EXT WHERE EXT.strPartNumber = INV.strPartNumber AND EXT.bitDefault = 1),'') ELSE   
     IE.strLocName END END END,'') as defLocation  
  FROM tblInv INV   
  LEFT JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber AND IE.strLocName = @SQDefLocName   
  WHERE (INV.strPartNumber = tblManBOMCompInv.strPartNumber) AND (INV.bitInactive = 0)),'')   
FROM tblManBOM   
INNER JOIN tblManBOMCompInv ON tblManBOM.lngManBOMID = tblManBOMCompInv.lngManBOMID   
INNER JOIN tblInv ON tblManBOMCompInv.strPartNumber = tblInv.strPartNumber   
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblManBOMCompInv.strLocation = tblInvExt.strLocName   
WHERE tblManBOM.strPartNumber = @SQPartNumber AND tblManBOM.dteRevDate = @SQRevDate AND tblManBOM.strLocation = @SQLocation AND tblInv.bitOtherCmp = 0   
ORDER BY tblManBOM.strPartNumber, tblManBOMCompInv.intLineNo  
END  
GO

CREATE procedure [dbo].[GetLabourData](
@SQPartNumber varchar(100),
@SQRevDate DateTime,
@SQLocation varchar(20)
)
AS
BEGIN
	SELECT 
	tblManBOMCompLab.strLabCode as LabourCode, 
	tblManLabour.strDesc as Description, 
	tblManBOMCompLab.decVariableHours as VariableHourly, 
	tblManBOMCompLab.decVariableRate as VariableRate, 
	tblManBOMCompLab.decSetupHours as SetupHours, 
	tblManBOMCompLab.decSetupRate as SetupRate, 
	tblManBOMCompLab.decBreakdownHours as BreakdownHours, 
	tblManBOMCompLab.decBreakdownRate as BreakdownRate, 
	tblManBOMCompLab.strWCCode as WCCode, 
	ISNULL(tblManBOM.strPartNumber,'') as PartNumber 
FROM tblManBOM 
INNER JOIN tblManBOMCompLab ON tblManBOM.lngManBOMID = tblManBOMCompLab.lngManBOMID 
INNER JOIN tblManLabour ON tblManBOMCompLab.strLabCode = tblManLabour.strLabCode 
WHERE tblManBOM.strPartNumber = @SQPartNumber AND tblManBOM.dteRevDate = @SQRevDate AND tblManBOM.strLocation = @SQLocation 
ORDER BY tblManBOM.strPartNumber, tblManBOMCompLab.intLineNo
END
GO

CREATE procedure [dbo].[GetMachineryData](
@SQPartNumber varchar(100),
@SQRevDate DateTime,
@SQLocation varchar(20)
)
AS
BEGIN
SELECT 
	tblManBOMCompMach.strMachCode as MachCode, 
	tblManMachinery.strDesc as MachDesc, 
	tblManBOMCompMach.decVariableHours as VariableHourly, 
	tblManBOMCompMach.decVariableRate as VariableRate, 
	tblManBOMCompMach.decSetupHours as SetupHours, 
	tblManBOMCompMach.decSetupRate as SetupRate, 
	tblManBOMCompMach.decBreakdownHours as BreakdownHours, 
	tblManBOMCompMach.decBreakdownRate as BreakdownRate, 
	tblManBOMCompMach.strWCCode as WCCode, 
	ISNULL(tblManBOM.strPartNumber,'')  as PartNumber
FROM tblManBOM 
INNER JOIN tblManBOMCompMach ON tblManBOM.lngManBOMID = tblManBOMCompMach.lngManBOMID 
INNER JOIN tblManMachinery ON tblManBOMCompMach.strMachCode = tblManMachinery.strMachCode 
WHERE tblManBOM.strPartNumber = @SQPartNumber AND tblManBOM.dteRevDate = @SQRevDate AND tblManBOM.strLocation = @SQLocation 
ORDER BY tblManBOM.strPartNumber, tblManBOMCompMach.intLineNo
END
GO

CREATE procedure [dbo].[GetRecoveryCostsData](
@SQPartNumber varchar(100),
@SQRevDate DateTime,
@SQLocation varchar(20)
)
AS
BEGIN
SELECT 
    tblManBOMCompOverhead.intGLNumber as GLNumber, 
    tblAccounts.strDesc as Description, 
    ISNULL(tblManBOMCompOverhead.intDept,0) as DeparmentID,
    isnull(tblManBOMCompOverhead.uidCenterID,NULL) as CenterID, 
    tblCenters.strLvl1 as CenterLv1, 
    tblCenters.strLvl2 as CenterLv2, 
    tblCenters.strLvl3 as CenterLv3, 
    tblCenters.strLvl4 as CenterLv4, 
    tblCenters.strLvl5 as CenterLv5, 
    tblManBOMCompOverhead.decAmount as Balance, 
    tblManBOMCompOverhead.strWCCode as WCCode, 
    ISNULL(tblManBOM.strPartNumber,'')  as PartNumber,
    tblManBOMCompOverhead.intDept AS DeptID
FROM tblManBOM 
INNER JOIN tblManBOMCompOverhead ON tblManBOM.lngManBOMID = tblManBOMCompOverhead.lngManBOMID 
INNER JOIN tblAccounts ON tblManBOMCompOverhead.intGLNumber = tblAccounts.intGLNumber 
LEFT JOIN tblCenters ON tblManBOMCompOverhead.uidCenterID = tblCenters.uidCenterID 
WHERE tblManBOM.strPartNumber = @SQPartNumber AND tblManBOM.dteRevDate = @SQRevDate AND tblManBOM.strLocation = @SQLocation 
ORDER BY tblManBOM.strPartNumber, tblManBOMCompOverhead.intLineNo
END
GO

CREATE PROCEDURE [dbo].[GetInventoryLocations] @IsDefault AS BIT = 0
AS
BEGIN
	SELECT [strLocName] AS LocName
		,[strDesc] AS [Desc]
		,[bitDefault] AS [Default]
		,[intType] AS [Type]
		,[bitCustSale] AS CustSale
		,[bitCustReturn] AS CustReturn
		,[bitVendReceive] AS VendReceive
		,[bitVendReturn] AS VendReturn
	FROM [dbo].[tblInvLoc]
	WHERE (
			@IsDefault = 0
			OR bitDefault = 1
			)
	ORDER BY [strLocName]
END
GO

Create PROCEDURE [dbo].[GetAllowedUsers] (@LocName Nvarchar(20))
AS
BEGIN
	SELECT strUserName  FROM tblInvLocSec WHERE strLocName = @LocName Order by strUserName
END
GO

CREATE PROCEDURE [dbo].[GetInvSerialNumbers] (  
@Type AS TINYINT
,@PageSize INT = 25  
,@PageNumber INT = 1  
,@Search AS NVARCHAR(Max) = '')
AS  
BEGIN  
 DECLARE @skip INT  
 SET @skip = @PageSize * (@PageNumber - 1)  
  
  IF @Type < 2  
  BEGIN
	SELECT  
		strInvSerialType AS InvSerialType ,    
        strDesc AS [Description] ,    
        bitInactive AS Inactive ,    
        intType AS [Type]    
    FROM tblInvSerialTypes    
	WHERE intType = @Type 
		AND (
			ISNULL(strInvSerialType, '') LIKE '%' + ISNULL(@Search, strInvSerialType) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@Search, strDesc) + '%'
			)	 
    ORDER BY intType DESC, strInvSerialType OFFSET(@Skip) ROWS
	FETCH NEXT (@PageSize) ROWS ONLY  
  END
  ELSE
  BEGIN
	SELECT  
		strInvSerialType AS InvSerialType ,    
		strDesc AS [Description] ,    
		bitInactive AS Inactive ,    
		intType AS [Type]    
	FROM tblInvSerialTypes 
	WHERE (
		ISNULL(strInvSerialType, '') LIKE '%' + ISNULL(@Search, strInvSerialType) + '%'
		OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@Search, strDesc) + '%'
		)	 
	ORDER BY intType DESC, strInvSerialType OFFSET(@Skip) ROWS
	FETCH NEXT (@PageSize) ROWS ONLY  
  END
END  
GO

CREATE PROCEDURE [dbo].[GetInventoryLocationEditDetails]      
(       
 @PartNumber NVARCHAR(50),    
 @LocationName VARCHAR(500)= NULL    
)      
AS      
BEGIN      
 SELECT  tblInvLoc.strLocName AS LocationName,      
        tblInvLoc.strDesc AS LocationDescription,      
        tblInvExt.decAvail AS Avail,      
        tblInvExt.decAlloc  AS Alloc,      
        tblInvExt.decOnHand AS OnHand,      
        tblInvExt.decOnOrder AS OnOrder,      
        tblInvExt.decValue AS Value,      
        tblInvLoc.intType AS LocationType,      
        tblInvExt.strAcctSet AS AccountSets,      
        tblInvExt.strBinLoc AS BinLocation,
		Cast(CASE 
            WHEN tblInvExt.decOnHand > 0 THEN 0 
            ELSE 1 
        END AS BIT) AS IsEnableLoc,  
  tblInvExt.bitInactive AS Inactive  
FROM    tblInvExt      
        INNER JOIN tblInvLoc ON tblInvExt.strLocName = tblInvLoc.strLocName      
WHERE   ( tblInvExt.strPartNumber = @PartNumber AND (ISNULL(@LocationName,'''')='''' OR dbo.tblInvLoc.strLocName = LTRIM(RTRIM(@LocationName))) );      
END  
GO

create PROCEDURE [dbo].[GetInvBinLocation]
	@LocationName nvarchar(10) = NULL,
	@BinCode nvarchar(50) = NULL
	
AS
BEGIN
	SET NOCOUNT ON;
	SELECT 
	lngID as lngID,
	strLocName as LocName,
	strBinCode as BinCode,
	strDescription as BinDesc,
	decCapacity as Capacity,
	strCapacityUnit as CapacityUnit,
	bitPickingBin as PickingBin,
	bitInactive as Inactive,
	bitReceivingBin as ReceiVingBin,
	bitProductionBin as ProductionBin,
	bitStockingBin as StockingBin
	 FROM tblInvLocBin WHERE 
	((strLocName = @LocationName) OR (@LocationName IS NULL)) AND
	((strBinCode = @BinCode) OR (@BinCode IS NULL)) 
	
END
GO

create PROCEDURE [dbo].[GetInvPartNumber] 
AS
SELECT strPartNumber as PartNumber from tblInv WHERE bitInactive = 0 AND intType <> 5 AND tblInv.bitOtherCmp = 0

GO

create PROCEDURE [dbo].[GetItemAccountSets]
	AS
BEGIN
	SELECT strAcctSet  FROM tblAccountSets WHERE blnService = 0 AND blnInactive = 0
END
GO

create PROCEDURE [dbo].[GetInvLocationBinItem]
	@LocationName nvarchar(10),
	@BinCode nvarchar(50)
AS
BEGIN
	SELECT 
		tblInv.strPartNumber as PartNumber,
		tblInv.strDesc as Description,
			ISNULL(tblInvExtBin.decMaximumQty,0) AS  MaximumQty,
		ISNULL(tblInvExtBin.bitAllowed,0) AS IsAllowed ,
		ISNULL(tblInvExt.bitInactive,ISNULL((Select invE.bitInactive from tblInvExt as invE where invE.strLocName= @LocationName and tblInv.strPartNumber=invE.strPartNumber),0)) as bitInactive
	FROM 
		tblInv LEFT JOIN tblInvExtBin
		ON tblInv.strPartNumber = tblInvExtBin.strPartNumber 
		AND tblInvExtBin.strLocName = @LocationName
		AND tblInvExtBin.lngBinId IN (SELECT lngId FROM tblInvLocBin WHERE strBinCode = @BinCode)
		LEFT JOIN tblInvExt ON tblInvExt.strPartNumber = tblInv.strPartNumber AND tblInvExt.strLocName = tblInvExtBin.strLocName
	WHERE
		tblInv.bitInactive = 0 
		AND tblInv.intType = 1
		
END
GO

create PROCEDURE [dbo].[GetInvLocNoAccessUser]
	@LocName AS NVARCHAR(10)
AS
BEGIN

	SELECT strUserName AS UserName FROM tblUsers WHERE strUserName NOT IN (SELECT strUserName FROM tblInvLocSec WHERE strLocName = @LocName) order by strUserName
END
GO

-------------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteInvLocation] (
	@LocName AS NVARCHAR(10)
	,@Result AS INT = 0 OUTPUT
	)
AS
BEGIN
	DECLARE @OnHand DECIMAL;
	DECLARE @Value DECIMAL;
	DECLARE @OpenQty DECIMAL;
	DECLARE @OpenValue DECIMAL;

	SELECT @OnHand = ISNULL(SUM(decOnHand), 0)
		,@Value = ISNULL(SUM(decValue), 0)
		,@OpenQty = ISNULL(SUM(decOpenQty), 0)
		,@OpenValue = ISNULL(SUM(decOpenValue), 0)
	FROM tblInvExt
	WHERE strLocName = @LocName

	IF (@OnHand <> 0)
	BEGIN
		SET @Result = 1;
	END
	ELSE IF (
			(
				SELECT COUNT(strTrfDocID)
				FROM tblInvTrfDoc
				WHERE strFromLoc = @LocName
					OR strToLoc = @LocName
				) > 0
			)
	BEGIN
		SET @Result = 2;
	END
	ELSE
	BEGIN
		DELETE
		FROM tblInvLoc
		WHERE strLocName = @LocName

		SET @Result = 3;
	END

	SELECT @Result
END
GO

-------------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteInvLocationBin] (
	@LocName AS NVARCHAR(100)
	,@BinCode AS NVARCHAR(100)
	)
AS
BEGIN
	DELETE
	FROM tblInvLocBin
	WHERE strLocName = @LocName
		AND strBinCode = @BinCode
END
GO

-------------------------------------------------------

CREATE PROCEDURE [dbo].[DeleteInvBinLocItem](
@PartNumber nvarchar(50),
@LocationName	nvarchar(10),
@BinId bigint
)
AS
BEGIN
	SET NOCOUNT ON;

	DELETE FROM tblInvExtBin
	WHERE strPartNumber = @PartNumber AND strLocName = @LocationName AND lngBinId = @BinId
END
GO

CREATE PROCEDURE [dbo].[AddUpdatetblInvLocation]
	     @Loc AS NVARCHAR(20)
		,@Desc AS NVARCHAR(100)
		,@Def AS bit
		,@IntType AS int
		,@CustSale AS bit 
		,@CustReturn AS bit
		,@VendReceive As bit
		,@VendReturn AS bit
		,@IsEdit AS BIT
		,@OldName AS NVARCHAR(10) = null				
		,@chkEnableSecurity AS BIT
		,@allowedUserCount AS bigint
		,@allowedUserCommaSeprated As NVARCHAR(1000)	=null	
		AS
BEGIN	
	IF(@IsEdit = 0)  -- for new entry
	Begin
		INSERT INTO [dbo].[tblInvLoc]
           ([strLocName]
           ,[strDesc]
           ,[bitDefault]
           ,[intType]
           ,[bitCustSale]
           ,[bitCustReturn]
           ,[bitVendReceive]
           ,[bitVendReturn])
     VALUES (
		 @Loc
		,@Desc
		,@Def
		,@IntType
		,@CustSale
		,@CustReturn
		,@VendReceive
		,@VendReturn
		)

		Declare @Count int;
		Declare @Part nvarchar(100);
		Declare @AcctSet nvarchar(40);

		DECLARE @InventoryTempTable TABLE
		(
			RowNumber bigint,
			PartNumber varchar(100),
			AccountSet varchar(40),
			Location varchar(20)
		);

		--select @Count = COUNT(*) from tblInv WHERE intType <> 5
		Insert into @InventoryTempTable
		(
			 RowNumber
			,PartNumber
			,AccountSet
			,Location
		)
		select 
			ROW_NUMBER() OVER(ORDER BY strPartNumber ) AS RowNumber,
			strPartNumber,
			'',
			@Loc
		from
			 tblInv 
		WHERE
			 intType <> 5


		SET @Count = 1
		
		while (@Count <= (SELECT COUNT(*) FROM @InventoryTempTable))
		begin

			SELECT @AcctSet =  t2.strAcctSet FROM tblinvLoc t1 join tblinvext t2 ON t1.strLocName=t2.strLocName AND t1.bitDefault=1 WHERE t2.strPartNumber = (SELECT PartNumber from @InventoryTempTable where RowNumber = @Count)

			Update @InventoryTempTable set AccountSet = @AcctSet where RowNumber = @Count

			set @Count = @Count + 1
		end



		INSERT INTO [dbo].[tblInvExt] (
	[strPartNumber]
	,[strLocName]
	,[decAvail]
	,[decAlloc]
	,[decOnHand]
	,[decValue]
	,[decOnOrder]
	,[decOpenQty]
	,[decOpenValue]
	,[intReorderPoint]
	,[strAcctSet]
	,[strBinLoc]
	,[decMaxLevel]
	,[decMinimumLevel]
	,[bitInactive]
	,[bitDefault]
	)
SELECT PartNumber
	,Location
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,AccountSet
	,''
	,0
	,0
	,0
	,0
FROM @InventoryTempTable
		DECLARE @InventoryTempTable2 TABLE
		(
			UserName varchar(20)
			,Location varchar(10)
		);

		
		if(@chkEnableSecurity = 1 AND @allowedUserCount>0) 
		begin 
			Insert into @InventoryTempTable2
		(
			Location
			,UserName
		)
		SELECT @Loc, * FROM fnSplitStringAsTable(@allowedUserCommaSeprated, ',')

		INSERT INTO tblInvLocSec
		(
			strLocName
			,strUserName
		)
		select Location , UserName from @InventoryTempTable2
		end


		
	End
	ELSE 
	Begin
		UPDATE tblInvLoc
	SET [strLocName] = @Loc
		,[strDesc] = @Desc
		,[intType] = @IntType	
		,[bitCustSale] = @CustSale
        ,[bitCustReturn] = @CustReturn
        ,[bitVendReceive] = @VendReceive
        ,[bitVendReturn] = @VendReturn			
	WHERE [strLocName] = @OldName	

	 DELETE FROM tblInvLocSec WHERE strLocName = @Loc

	 DECLARE @InventoryTempTable3 TABLE
		(
			UserName varchar(20)
			,Location varchar(10)
		);

	 if(@chkEnableSecurity = 1 AND @allowedUserCount>0)
	begin 
			Insert into @InventoryTempTable3
		(
			Location
			,UserName
		)
		SELECT @Loc, * FROM fnSplitStringAsTable(@allowedUserCommaSeprated, ',')

		INSERT INTO tblInvLocSec
		(
			strLocName
			,strUserName
		)
		select Location , UserName from @InventoryTempTable3
	end
	DELETE FROM tblInvLocBinSec WHERE strLocName = @Loc
	
	UPDATE tblInvTrfDoc SET strFromLoc = @Loc WHERE strFromLoc = @OldName

	UPDATE tblInvTrfDoc SET strToLoc = @Loc WHERE strToLoc = @OldName

	UPDATE tblManBOMCompInv SET strLocation = @Loc WHERE strLocation = @OldName

	UPDATE tblManJobByProd SET strLocation = @Loc WHERE strLocation = @OldName

	UPDATE tblManJobCompInv SET strLocation = @Loc WHERE strLocation = @OldName

	UPDATE tblManWIPCompInv SET strLocation = @Loc WHERE strLocation = @OldName

	UPDATE tblInvLocBin SET strLocName = @Loc WHERE strLocName = @OldName;
	UPDATE tblInvExtBin SET strLocName = @Loc WHERE strLocName = @OldName;
		end
END
GO

CREATE PROCEDURE [dbo].[AddUpdateInvBinLocation]   (
@lngId bigint OUTPUT,   
@LocationName nvarchar(10),   
@BinCode nvarchar(50),   
@Description nvarchar(500),   
@Capacity money,   
@CapacityUnit nvarchar(15),
@PickingBin bit,
@Inactive bit,
@ReceivingBin as BIT = null,
@ProductionBin as BIT = null,
@StockingBin BIT,
@IsEdit bit
)
AS  
BEGIN         
	IF @IsEdit = 1    
		BEGIN     
			UPDATE [dbo].[tblInvLocBin]       
				SET 
					[strLocName] = @LocationName,       
					[strBinCode] = @BinCode,      
					[strDescription] = @Description,       
					[decCapacity] = @Capacity,      
					[strCapacityUnit] = @CapacityUnit,     
					[bitPickingBin] = @PickingBin,
					[bitInactive] = @Inactive,
					[bitReceivingBin] = @ReceivingBin,
					[bitProductionBin] = @ProductionBin,
					[bitStockingBin] = @StockingBin,
					dteRowUpdated = GETDATE ()
			WHERE      
				[lngId] = @lngId    
		END   
	ELSE    
		BEGIN     
			INSERT INTO [dbo].[tblInvLocBin]         
							VALUES         
				(@LocationName, @BinCode, @Description, @Capacity, @CapacityUnit, @PickingBin, @Inactive, @ReceivingBin, 
				@ProductionBin, @StockingBin,GETDATE ())    
			SET @lngId = (SELECT IDENT_CURRENT('tblInvLocBin') AS bigint);
		END  
		select * from tblInvLocBin
END
GO

CREATE PROCEDURE [dbo].[CheckAllBins]
as
select bitAllowBin  as IsAllowedBin from tblCoOpts
GO

CREATE PROCEDURE [dbo].[ChangeDefaultInvLocation] @LocName AS NVARCHAR(10)		
AS
BEGIN	
	UPDATE tblInvLoc SET bitDefault = 0
	UPDATE tblInvLoc SET bitDefault = 1 WHERE strLocName = @LocName
END
GO

CREATE PROCEDURE [dbo].[GetAllInvPriceList] @PartNumber AS NVARCHAR(200)
AS
BEGIN
	SELECT tblInvPrice.strPricelist AS Pricelist
		,tblPricelists.intPricelistType AS PricelistType
		,tblInvPrice.decSelling AS SellingPrice
		,ISNULL((
				SELECT decMarkup
				FROM tblPricelistsCat
				WHERE strPricelist = tblPricelists.strPricelist
					AND strCategory = tblInv.strCategory
					AND uidPriceBasedID = tblPricelists.uidPriceBasedID
				), 0) AS MarkupPer
		,tblPricelists.intRoundPrices AS RoundPrices
		,tblPricelists.bitUpdateSellingPrice AS IsUpdateSellingPrice
		,tblPricelists.bitOnlySellingPriceIncrease AS IsOnlySellingPriceIncrease
		,tblInv.decSellFromStock AS SellFromStock
		,tblInvPrice.uidPriceBasedID AS PriceBaseId
		,tblPriceData.bitPriceIncl AS IsPriceIncl
		,ISNULL(tblTaxCodeExt.decRate, 0) AS TaxRate
		,ISNULL(uidLinkPricelistId, CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER)) AS uidLinkPricelisId
	FROM tblInvPrice
	INNER JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist
		AND tblInvPrice.uidPriceBasedID = tblPricelists.uidPriceBasedID
	INNER JOIN tblPriceData ON tblPricelists.strPricelist = tblPriceData.strPricelist
	INNER JOIN tblInv ON tblInvPrice.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblTaxCodeExt ON tblPriceData.strTaxCode = tblTaxCodeExt.strTaxCode
	WHERE tblInvPrice.strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[GetTaxCodes_WPF] 
AS
BEGIN
	SELECT strTaxCode As TaxCode ,CONCAT(strTaxCode,' ',strDescription) As Descriptions  FROM tblTaxCodes WHERE intAllowedJournals = 0 OR intAllowedJournals = 1 ORDER BY strTaxCode
END
GO

CREATE PROCEDURE [dbo].[GetCashDropForTenderType] (
	@CashTenderName NVARCHAR(100)
	,@DrawerName NVARCHAR(100)
	)
AS
BEGIN
	SELECT ISNULL(Sum(decDrop), 0) AS CashDrop
	FROM tblPOSDrsDT
	WHERE uidSessionID = (
			SELECT uidSessionID
			FROM tblPOSDrs
			WHERE (strDrawerName = @DrawerName)
				AND (intStatus = 2)
			)
		AND strPaymentTypeName = @CashTenderName
END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblPOSDrsDT]    Script Date: 10-07-2022 08:40:00 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblPOSDrsDT]
 @tblData AS POSDrsDTTableType READONLY AS

BEGIN
	BEGIN
		INSERT INTO [dbo].[tblPOSDrsDT] (
			[uidSessionID]
			,[dteTimeStamp]
			,[strInvDocID]
			,[strCustName]
			,[decCash]
			,[decCk]
			,[decCC]
			,[decGiftCoup]
			,[decAccount]
			,[decDrop]
			,[strDropUser]
			,[decOvSht]
			,[intVendPayID]
			,[strComment]
			,[strPaymentTypeName]
			)
		SELECT [uidSessionID]
			,[dteTimeStamp]
			,[strInvDocID]
			,[strCustName]
			,[decCash]
			,[decCk]
			,[decCC]
			,[decGiftCoup]
			,[decAccount]
			,[decDrop]
			,[strDropUser]
			,[decOvSht]
			,[intVendPayID]
			,[strComment]
			,[strPaymentTypeName]
		FROM @tblData AS t
		WHERE strInvDocID = '' AND (uidSessionID in (select uidSessionID from tblPOSDrs where intStatus <> 3))
	END
END
GO

/****** Object:  StoredProcedure [dbo].[GetExpenseClaimTaxCodesByJournal]    Script Date: 10-07-2022 08:40:00 ******/
CREATE PROCEDURE [dbo].[GetExpenseClaimTaxCodesByJournal] 
(@SQNumber   NVARCHAR(max))
AS
  BEGIN
      SELECT  tce.strTaxCode AS TaxCode, tce.strTaxName AS TaxName, tce.decRate AS Rate, 
			  tce.bitIncluded AS IsIncluded, tce.bitRefundable AS IsRefundable,
			  td.intPurchAcct as PurchAcct, td.intSalesAcct as SalesAcct
    FROM tblTaxCodeExt tce
	INNER JOIN tblTaxCodes tc ON tce.strTaxCode = tc.strTaxCode
    INNER JOIN tblTaxDef td ON tce.strTaxName = td.strTaxName
    LEFT JOIN tblInvEx ie ON ie.strTaxName = tce.strTaxName
    WHERE tc.intAllowedJournals in (0,2) and tc.bitDefCBPayments = 1
    and tce.strTaxName NOT IN (SELECT ISNULL(strTaxName, '') FROM tblInvEx WHERE strPartNumber = @SQNumber)
  END
GO

/****** Object:  StoredProcedure [dbo].[SPRptCustomerTransactions]    Script Date: 13-07-2022 10:20:00 ******/
CREATE PROCEDURE [dbo].[SPRptCustomerTransactions]
@SQCustomers nvarchar(MAX),
@SQDateFrom smalldatetime,
@SQDateTo smalldatetime,
@SQTransType tinyint,
@SQZeroReceipt bit,
@SQForeignAmounts bit,
@SQReceiptToSO bit,
@SQMultiCurrencyEnabled bit,
@SQAllCustomers bit
AS
BEGIN
		
	CREATE TABLE #TempCUST (
	strCustName nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	strCustDesc nvarchar(200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	strCurrency nvarchar(3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	bitIsForeign bit NOT NULL)

	DECLARE @HomeCurrency nvarchar(3)

	SELECT @HomeCurrency = strCurrency FROM tblCurrency WHERE bitHome = 1

	INSERT INTO #TempCUST
	SELECT	tblCustomers.strCustName,
			tblCustomers.strCustDesc,
			CASE WHEN @SQMultiCurrencyEnabled = 0
				 THEN @HomeCurrency
				 ELSE ISNULL(tblCurrency.strCurrency, '') 
			END AS strCurrency,
			CASE WHEN @SQMultiCurrencyEnabled = 0 
				 THEN 0 
				 ELSE CASE WHEN ISNULL(tblCurrency.strCurrency, '') <> @HomeCurrency AND @SQForeignAmounts = 1 
						   THEN 1 
						   ELSE 0 
					  END 
			END AS bitIsForeign
	FROM tblCustomers
	LEFT JOIN tblCurrency ON tblCustomers.strCurrency = tblCurrency.strCurrency 
	WHERE tblCustomers.strCustName IN (SELECT * FROM fnSplitStringAsTable(@SQCustomers, ','))
	ORDER BY tblCustomers.strCustName 

	CREATE TABLE #TempTRANS (
	strCustName nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	strInvDepNumber nvarchar(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	strDocID nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	dteJournalDate smalldatetime NOT NULL,
	intTransTypeHDR tinyint NOT NULL,
	intTransTypeDTL tinyint NOT NULL,
	decAmount money NOT NULL,
	dteDueDate smalldatetime NOT NULL,
	lngCustPayID bigint NULL,
	lngID bigint IDENTITY(1,1) NOT NULL)

	IF @SQReceiptToSO = 0
	BEGIN

		IF @SQZeroReceipt = 0
		BEGIN 

			INSERT INTO #TempTRANS (strCustName, strInvDepNumber, strDocID, dteJournalDate, intTransTypeHDR, intTransTypeDTL, decAmount, dteDueDate,lngCustPayID)
			SELECT	TMP.strCustName,
					CASE WHEN T1.intTransType = @SQTransType THEN ISNULL((SELECT JE.strComment FROM tblJournalEntryDoc JE WHERE JE.strJEDocID = T1.strJEDocID), '') ELSE T1.strInvDepNumber END AS strInvDepNumber,  
					CASE WHEN T1.intTransType = @SQTransType THEN ISNULL(T1.strJEDocID, '') ELSE ISNULL(T1.strInvDocID, '') END AS invoice, 
					T2.dteJournalDate AS DTTransDate,  
					T1.intTransType AS TransType, 
					T2.intTransType,
					CASE WHEN TMP.bitIsForeign = 0
						 THEN T2.decAmount
						 ELSE T2.decAmountF
					END AS decAmount,
					T1.dteDueDate, 
					T2.lngCustPayID  
			FROM #TempCUST TMP
			INNER JOIN tblCustTrans T1 ON TMP.strCustName = T1.strCustName   
			INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID  
			WHERE (T2.bitReversed = 0 )
			AND (T1.strOrdDocID IS NULL OR (T1.strInvDocID IS NOT NULL AND T1.strOrdDocID IS NOT NULL))  
			AND (ISNULL(T2.lngCustPayID,0) = 0)
			AND (T1.dteJournalDate BETWEEN @SQDateFrom AND @SQDateTo)
			UNION ALL  
			SELECT	TMP.strCustName,
					ISNULL(T3.strComment, '') AS strInvDepNumber, 
					ISNULL(T3.strSource, '') AS invoice, 
					T3.dteJournalDate AS DTTransDate,  
					1 AS TransType, 
					2 AS intTransType,  
					SUM(CASE WHEN TMP.bitIsForeign = 0
							 THEN ISNULL(T4.decAmount, 0)
							 ELSE ISNULL(T4.decAmountF, 0)
						END) AS decAmount,
					T3.dteJournalDate AS dteDueDate, 
					T3.lngCustPayID  
			FROM #TempCUST TMP
			INNER JOIN tblCustTrans T5 ON TMP.strCustName = T5.strCustName   
			INNER JOIN tblCustTransDT T4 ON T5.lngCustTrID = T4.lngCustTrID    
			INNER JOIN tblCustPay T3 ON T4.lngCustPayID = T3.lngCustPayID 
			--INNER JOIN tblCustPay T3 ON TMP.strCustName = T3.strCustName 
			--INNER JOIN tblCustTransDT T4 ON T3.lngCustPayID = T4.lngCustPayID  
			--INNER JOIN tblCustTrans T5 ON T4.lngCustTrID = T5.lngCustTrID  
			WHERE (T3.bitReversed = 0)
			AND (T3.dteJournalDate BETWEEN @SQDateFrom AND @SQDateTo)
			AND (T4.bitReversed = 0) 
			GROUP BY TMP.strCustName, 
					 ISNULL(T3.strSource, ''), 
					 T3.dteJournalDate,
					 T3.lngCustPayID, 
					 ISNULL(T3.strComment, '') 
			HAVING SUM(ISNULL(T4.decAmount, 0)) <> 0 OR SUM(ISNULL(T4.decAmountF, 0)) <> 0 
			ORDER BY TMP.strCustName,
					 DTTransDate, 
					 invoice

		END
		ELSE
		BEGIN

			INSERT INTO #TempTRANS (strCustName, strInvDepNumber, strDocID, dteJournalDate, intTransTypeHDR, intTransTypeDTL, decAmount, dteDueDate,lngCustPayID)
			SELECT	TMP.strCustName,
					CASE WHEN T1.intTransType = @SQTransType THEN ISNULL((SELECT JE.strComment FROM tblJournalEntryDoc JE WHERE JE.strJEDocID = T1.strJEDocID), '') ELSE T1.strInvDepNumber END AS strInvDepNumber,  
					CASE WHEN T1.intTransType = @SQTransType THEN ISNULL(T1.strJEDocID, '') ELSE ISNULL(T1.strInvDocID, '') END AS invoice, 
					T2.dteJournalDate AS DTTransDate,  
					T1.intTransType AS TransType, 
					T2.intTransType, 
					CASE WHEN TMP.bitIsForeign = 0
						 THEN T2.decAmount
						 ELSE T2.decAmountF
					END AS decAmount,
					T1.dteDueDate, 
					T2.lngCustPayID  
			FROM #TempCUST TMP
			INNER JOIN tblCustTrans T1 ON TMP.strCustName = T1.strCustName   
			INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID  
			WHERE (T2.bitReversed = 0)
			AND (T1.strOrdDocID IS NULL OR (T1.strInvDocID IS NOT NULL AND T1.strOrdDocID IS NOT NULL))  
			AND (ISNULL(T2.lngCustPayID,0) = 0)
			AND (T1.dteJournalDate BETWEEN @SQDateFrom AND @SQDateTo)
			UNION ALL  
			SELECT	TMP.strCustName,
					ISNULL(T3.strComment, '') AS strInvDepNumber, 
					ISNULL(T3.strSource, '') AS invoice, 
					T3.dteJournalDate AS DTTransDate,  
					1 AS TransType, 
					2 AS intTransType,  
					SUM(CASE WHEN TMP.bitIsForeign = 0
							 THEN ISNULL(T4.decAmount, 0)
							 ELSE ISNULL(T4.decAmountF, 0)
						END) AS decAmount,
					T3.dteJournalDate AS dteDueDate, 
					T3.lngCustPayID  
			FROM #TempCUST TMP
			INNER JOIN tblCustTrans T5 ON TMP.strCustName = T5.strCustName   
			INNER JOIN tblCustTransDT T4 ON T5.lngCustTrID = T4.lngCustTrID    
			INNER JOIN tblCustPay T3 ON T4.lngCustPayID = T3.lngCustPayID 
			--INNER JOIN tblCustPay T3 ON TMP.strCustName = T3.strCustName 
			--INNER JOIN tblCustTransDT T4 ON T3.lngCustPayID = T4.lngCustPayID  
			--INNER JOIN tblCustTrans T5 ON T4.lngCustTrID = T5.lngCustTrID  
			WHERE (T3.bitReversed = 0)
			AND (T3.dteJournalDate BETWEEN @SQDateFrom AND @SQDateTo)
			AND (T4.bitReversed = 0) 
			GROUP BY TMP.strCustName, 
					 ISNULL(T3.strSource, ''), 
					 T3.dteJournalDate,
					 T3.lngCustPayID, 
					 ISNULL(T3.strComment, '') 
			ORDER BY TMP.strCustName,
					 DTTransDate, 
					 invoice

		END 

	END
	ELSE
	BEGIN

		IF @SQZeroReceipt = 0
		BEGIN 

			INSERT INTO #TempTRANS (strCustName, strInvDepNumber, strDocID, dteJournalDate, intTransTypeHDR, intTransTypeDTL, decAmount, dteDueDate,lngCustPayID)
			SELECT	TMP.strCustName,
					T1.strInvDepNumber AS strInvDepNumber, 
					CASE WHEN T1.intTransType = @SQTransType THEN ISNULL(T1.strJEDocID, '') ELSE ISNULL(T1.strInvDocID, '') END AS invoice, 
					T2.dteJournalDate AS DTTransDate, 
					T1.intTransType AS TransType, 
					T2.intTransType,
					CASE WHEN TMP.bitIsForeign = 0
						 THEN T2.decAmount
						 ELSE T2.decAmountF
					END AS decAmount, 
					T1.dteDueDate, 
					T2.lngCustPayID 
			FROM #TempCUST TMP
			INNER JOIN tblCustTrans T1 ON TMP.strCustName = T1.strCustName
			INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID 
			WHERE (T2.bitReversed = 0)
			AND (T1.strOrdDocID IS NULL OR (T1.strInvDocID IS NOT NULL AND T1.strOrdDocID IS NOT NULL)) 
			AND (ISNULL(T2.lngCustPayID,0) = 0)
			AND (T1.dteJournalDate BETWEEN @SQDateFrom AND @SQDateTo)
			UNION 
			SELECT	TMP.strCustName,
					T1.strInvDepNumber AS strInvDepNumber,
					CASE WHEN T1.intTransType = @SQTransType THEN ISNULL(T1.strJEDocID, '') ELSE ISNULL(T1.strOrdDocID, '') END AS invoice,
					T2.dteJournalDate AS DTTransDate,
					T1.intTransType AS TransType,
					T2.intTransType,
					CASE WHEN TMP.bitIsForeign = 0
						 THEN T2.decAmount
						 ELSE T2.decAmountF
					END AS decAmount, 
					T1.dteDueDate,
					T2.lngCustPayID  
			FROM #TempCUST TMP
			INNER JOIN tblCustTrans T1 ON TMP.strCustName = T1.strCustName
			INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID 
			WHERE (T2.bitReversed = 0)
			AND (T1.strOrdDocID IS NOT NULL) AND (T1.strInvDocID IS NULL)  
			AND (ISNULL(T2.lngCustPayID, 0) = 0)
			AND (T1.dteJournalDate BETWEEN @SQDateFrom AND @SQDateTo)
			UNION 
			SELECT	TMP.strCustName,
					'' AS strInvDepNumber,
					DOC.strOrdDocID AS invoice,
					DOC.dteJournalDate AS DTTransDate,
					1 AS TransType,
					1 AS intTransType,
					CASE WHEN TMP.bitIsForeign = 0
						 THEN DOC.decTotal
						 ELSE DOC.decTotalF
					END AS decAmount, 
					DOC.dteRequired AS dteDueDate,
					0 AS lngCustPayID  
			FROM #TempCUST TMP
			INNER JOIN tblOrderDoc DOC ON TMP.strCustName = DOC.strCustName
			WHERE (DOC.intDocType = 1)
			AND (DOC.bitCleared = 0) 
			AND (DOC.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL))
			AND (DOC.dteJournalDate BETWEEN @SQDateFrom AND @SQDateTo)
			UNION ALL 
			SELECT	TMP.strCustName,
					ISNULL(T3.strComment, '') AS strInvDepNumber, 
					ISNULL(T3.strSource, '') AS invoice, 
					T3.dteJournalDate AS DTTransDate, 
					1 AS TransType, 
					2 AS intTransType, 
					SUM(CASE WHEN TMP.bitIsForeign = 0
								THEN ISNULL(T4.decAmount, 0)
								ELSE ISNULL(T4.decAmountF, 0)
						END) AS decAmount,
					T3.dteJournalDate AS dteDueDate, 
					T3.lngCustPayID 
			FROM #TempCUST TMP
			INNER JOIN tblCustTrans T5 ON TMP.strCustName = T5.strCustName   
			INNER JOIN tblCustTransDT T4 ON T5.lngCustTrID = T4.lngCustTrID    
			INNER JOIN tblCustPay T3 ON T4.lngCustPayID = T3.lngCustPayID 
			--INNER JOIN tblCustPay T3 ON TMP.strCustName = T3.strCustName 
			--INNER JOIN tblCustTransDT T4 ON T3.lngCustPayID = T4.lngCustPayID 
			--INNER JOIN tblCustTrans T5 ON T4.lngCustTrID = T5.lngCustTrID 
			WHERE (T3.bitReversed = 0)
			AND (T3.dteJournalDate BETWEEN @SQDateFrom AND @SQDateTo)
			AND (T4.bitReversed = 0) 
			GROUP BY TMP.strCustName, 
					 ISNULL(T3.strSource, ''), 
					 T3.dteJournalDate, 
					 T3.lngCustPayID, 
					 ISNULL(T3.strComment, '')
			HAVING SUM(ISNULL(T4.decAmount, 0)) <> 0 OR SUM(ISNULL(T4.decAmountF, 0)) <> 0
			ORDER BY TMP.strCustName,
					 DTTransDate, 
					 invoice

		END
		ELSE
		BEGIN

			INSERT INTO #TempTRANS (strCustName, strInvDepNumber, strDocID, dteJournalDate, intTransTypeHDR, intTransTypeDTL, decAmount, dteDueDate,lngCustPayID)
			SELECT	TMP.strCustName,
					T1.strInvDepNumber AS strInvDepNumber, 
					CASE WHEN T1.intTransType = @SQTransType THEN ISNULL(T1.strJEDocID, '') ELSE ISNULL(T1.strInvDocID, '') END AS invoice, 
					T2.dteJournalDate AS DTTransDate, 
					T1.intTransType AS TransType, 
					T2.intTransType,
					CASE WHEN TMP.bitIsForeign = 0
						 THEN T2.decAmount
						 ELSE T2.decAmountF
					END AS decAmount, 
					T1.dteDueDate, 
					T2.lngCustPayID 
			FROM #TempCUST TMP
			INNER JOIN tblCustTrans T1 ON TMP.strCustName = T1.strCustName
			INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID 
			WHERE (T2.bitReversed = 0)
			AND (T1.strOrdDocID IS NULL OR (T1.strInvDocID IS NOT NULL AND T1.strOrdDocID IS NOT NULL)) 
			AND (ISNULL(T2.lngCustPayID,0) = 0)
			AND (T1.dteJournalDate BETWEEN @SQDateFrom AND @SQDateTo)
			UNION 
			SELECT	TMP.strCustName,
					T1.strInvDepNumber AS strInvDepNumber,
					CASE WHEN T1.intTransType = @SQTransType THEN ISNULL(T1.strJEDocID, '') ELSE ISNULL(T1.strOrdDocID, '') END AS invoice,
					T2.dteJournalDate AS DTTransDate,
					T1.intTransType AS TransType,
					T2.intTransType,
					CASE WHEN TMP.bitIsForeign = 0
						 THEN T2.decAmount
						 ELSE T2.decAmountF
					END AS decAmount, 
					T1.dteDueDate,
					T2.lngCustPayID  
			FROM #TempCUST TMP
			INNER JOIN tblCustTrans T1 ON TMP.strCustName = T1.strCustName
			INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID 
			WHERE (T2.bitReversed = 0)
			AND (T1.strOrdDocID IS NOT NULL) AND (T1.strInvDocID IS NULL)  
			AND (ISNULL(T2.lngCustPayID, 0) = 0)
			AND (T1.dteJournalDate BETWEEN @SQDateFrom AND @SQDateTo)
			UNION 
			SELECT	TMP.strCustName,
					'' AS strInvDepNumber,
					DOC.strOrdDocID AS invoice,
					DOC.dteJournalDate AS DTTransDate,
					1 AS TransType,
					1 AS intTransType,
					CASE WHEN TMP.bitIsForeign = 0
						 THEN DOC.decTotal
						 ELSE DOC.decTotalF
					END AS decAmount, 
					DOC.dteRequired AS dteDueDate,
					0 AS lngCustPayID  
			FROM #TempCUST TMP
			INNER JOIN tblOrderDoc DOC ON TMP.strCustName = DOC.strCustName
			WHERE (DOC.intDocType = 1)
			AND (DOC.bitCleared = 0) 
			AND (DOC.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL))
			AND (DOC.dteJournalDate BETWEEN @SQDateFrom AND @SQDateTo)
			UNION ALL 
			SELECT	TMP.strCustName,
					ISNULL(T3.strComment, '') AS strInvDepNumber, 
					ISNULL(T3.strSource, '') AS invoice, 
					T3.dteJournalDate AS DTTransDate, 
					1 AS TransType, 
					2 AS intTransType, 
					SUM(CASE WHEN TMP.bitIsForeign = 0
								THEN ISNULL(T4.decAmount, 0)
								ELSE ISNULL(T4.decAmountF, 0)
						END) AS decAmount,
					T3.dteJournalDate AS dteDueDate, 
					T3.lngCustPayID 
			FROM #TempCUST TMP
			INNER JOIN tblCustTrans T5 ON TMP.strCustName = T5.strCustName   
			INNER JOIN tblCustTransDT T4 ON T5.lngCustTrID = T4.lngCustTrID    
			INNER JOIN tblCustPay T3 ON T4.lngCustPayID = T3.lngCustPayID 
			--INNER JOIN tblCustPay T3 ON TMP.strCustName = T3.strCustName 
			--INNER JOIN tblCustTransDT T4 ON T3.lngCustPayID = T4.lngCustPayID 
			--INNER JOIN tblCustTrans T5 ON T4.lngCustTrID = T5.lngCustTrID 
			WHERE (T3.bitReversed = 0)
			AND (T3.dteJournalDate BETWEEN @SQDateFrom AND @SQDateTo)
			AND (T4.bitReversed = 0) 
			GROUP BY TMP.strCustName, 
					 ISNULL(T3.strSource, ''), 
					 T3.dteJournalDate, 
					 T3.lngCustPayID, 
					 ISNULL(T3.strComment, '')
			ORDER BY TMP.strCustName,
					 DTTransDate, 
					 invoice

		END

	END

	CREATE TABLE #TempOB (
	strCustName nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	strCustomerName nvarchar(500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	dteJournalDate smalldatetime NOT NULL,
	strTransaction nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	decBalance money NOT NULL)

	IF @SQReceiptToSO = 0
	BEGIN

		INSERT INTO #TempOB
		SELECT	CUST.strCustName,
				CUST.strCustName + ' ' + CUST.strCustDesc AS strCustomerName,
				@SQDateFrom AS dteJournalDate,
				'Opening Balance' AS strTransaction,
				SUM(ISNULL(OB.decBalance, 0)) AS decBalance
		FROM #TempCUST CUST
		LEFT JOIN (SELECT TMP.strCustName,
						  TMP.strCustDesc,
						  CASE WHEN TMP.bitIsForeign = 0
							   THEN T2.decAmount
							   ELSE T2.decAmountF
						  END AS decBalance
				   FROM #TempCUST TMP
				   INNER JOIN tblCustTrans T1 ON TMP.strCustName = T1.strCustName 
				   INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID  
				   WHERE (T2.bitReversed = 0)
				   AND (T1.strOrdDocID IS NULL OR (T1.strInvDocID IS NOT NULL AND T1.strOrdDocID IS NOT NULL))  
				   AND (ISNULL(T2.lngCustPayID,0) = 0)
				   AND (T1.dteJournalDate < @SQDateFrom)
				   UNION ALL  
				   SELECT TMP.strCustName,
						  TMP.strCustDesc,
						  CASE WHEN TMP.bitIsForeign = 0
							   THEN SUM(ISNULL(T4.decAmount,0))
							   ELSE SUM(ISNULL(T4.decAmountF,0))
						  END AS decBalance
				   FROM #TempCUST TMP
				   INNER JOIN tblCustTrans T5 ON TMP.strCustName = T5.strCustName   
				   INNER JOIN tblCustTransDT T4 ON T5.lngCustTrID = T4.lngCustTrID    
				   INNER JOIN tblCustPay T3 ON T4.lngCustPayID = T3.lngCustPayID 
				   --INNER JOIN tblCustPay T3 ON TMP.strCustName = T3.strCustName  
				   --INNER JOIN tblCustTransDT T4 ON T3.lngCustPayID = T4.lngCustPayID  
				   --INNER JOIN tblCustTrans T5 ON T4.lngCustTrID = T5.lngCustTrID  
				   WHERE (T3.bitReversed = 0)
				   AND (T3.dteJournalDate < @SQDateFrom)
				   AND (T4.bitReversed = 0) 
				   GROUP BY TMP.strCustName,
							TMP.strCustDesc,
							TMP.bitIsForeign) OB 
			ON CUST.strCustName = OB.strCustName 
		GROUP BY CUST.strCustName,
				 CUST.strCustDesc
		ORDER BY CUST.strCustName

	END
	ELSE
	BEGIN

		INSERT INTO #TempOB
		SELECT	CUST.strCustName,
				CUST.strCustName + ' ' + CUST.strCustDesc AS strCustomerName,
				@SQDateFrom AS dteJournalDate,
				'Opening Balance' AS strTransaction,
				SUM(ISNULL(OB.decBalance, 0)) AS decBalance
		FROM #TempCUST CUST
		LEFT JOIN (SELECT TMP.strCustName,
						  TMP.strCustDesc,
						  CASE WHEN TMP.bitIsForeign = 0
							   THEN T2.decAmount
							   ELSE T2.decAmountF
						  END AS decBalance 
				   FROM #TempCUST TMP
				   INNER JOIN tblCustTrans T1 ON TMP.strCustName = T1.strCustName 
				   INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID 
				   LEFT JOIN tblCustPay T3 ON T2.lngCustPayID = T3.lngCustPayID 
				   WHERE (T2.bitReversed = 0)
				   AND (T1.strOrdDocID IS NULL OR (T1.strInvDocID IS NOT NULL AND T1.strOrdDocID IS NOT NULL)) 
				   AND (T2.dteJournalDate < @SQDateFrom)
				   UNION 
				   SELECT TMP.strCustName,
						  TMP.strCustDesc,
						  CASE WHEN TMP.bitIsForeign = 0
							   THEN T2.decAmount
							   ELSE T2.decAmountF
						  END AS decBalance 
				   FROM #TempCUST TMP
				   INNER JOIN tblCustTrans T1 ON TMP.strCustName = T1.strCustName
				   INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID 
				   LEFT JOIN tblCustPay T3 ON T2.lngCustPayID = T3.lngCustPayID 
				   WHERE (T2.bitReversed = 0)
				   AND (T1.strOrdDocID IS NOT NULL) 
				   AND (T1.strInvDocID IS NULL) 
				   AND (T2.dteJournalDate < @SQDateFrom)
				   UNION 
				   SELECT TMP.strCustName,
						  TMP.strCustDesc,
						  CASE WHEN TMP.bitIsForeign = 0
							   THEN ORD.decTotal
							   ELSE ORD.decTotalF
						  END AS decBalance
				   FROM #TempCUST TMP
				   INNER JOIN tblOrderDoc ORD ON TMP.strCustName = ORD.strCustName
				   WHERE (ORD.intDocType = 1)
				   AND (ORD.bitCleared = 0) 
				   AND (ORD.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL))
				   AND (ORD.dteJournalDate < @SQDateFrom)) OB 
			ON CUST.strCustName = OB.strCustName 
		GROUP BY CUST.strCustName,
				 CUST.strCustDesc
		ORDER BY CUST.strCustName

	END

	CREATE TABLE #TempCUSTTRANS (
	[Date] smalldatetime NOT NULL,
	[Document] nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
	[Reference] nvarchar(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
	[Transaction] nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[Debit] money NULL,
	[Credit] money NULL,
	[Amount] money NOT NULL,
	[Balance] money NOT NULL,
	[Customername] nvarchar(500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[CustName] nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[lngID] bigint IDENTITY(1,1) NOT NULL)

	INSERT INTO #TempCUSTTRANS ([Date], [Transaction], [Amount], [Balance], [Customername], [CustName])
	SELECT	dteJournalDate AS [Date],
			strTransaction AS [Transaction],
			decBalance AS [Amount],
			0.00 AS [Balance],
			strCustomerName AS [CustomerName],
			strCustName AS [CustName]
	FROM #TempOB
	ORDER BY strCustomerName

	INSERT INTO #TempCUSTTRANS ([Date], [Document], [Reference], [Transaction], [Debit], [Credit], [Amount], [Balance], [Customername], [CustName])
	SELECT	TRANS.dteJournalDate AS [Date],
			TRANS.strDocID AS Document,
			TRANS.strInvDepNumber AS Reference,
			CASE WHEN TRANS.intTransTypeHDR = 1 AND TRANS.intTransTypeDTL = 1 AND TRANS.decAmount > 0
				 THEN CASE WHEN TRANS.strDocID LIKE 'SO-%'
						   THEN 'Sales Order'
						   ELSE 'Invoice'
					  END
				 ELSE CASE WHEN TRANS.intTransTypeHDR = 1 AND TRANS.intTransTypeDTL = 1 AND TRANS.decAmount < 0
						   THEN CASE WHEN TRANS.strDocID LIKE 'CR-%'
									 THEN 'Credit Request'
									 ELSE 'Credit Note'
								END
						   ELSE CASE WHEN TRANS.intTransTypeHDR = 1 AND TRANS.intTransTypeDTL = 1 AND TRANS.decAmount = 0
									 THEN CASE WHEN TRANS.strDocID LIKE 'CR-%'
											   THEN 'Credit Request'
											   ELSE CASE WHEN TRANS.strDocID LIKE 'CN-%'
														 THEN 'Credit Note'
														 ELSE CASE WHEN TRANS.strDocID LIKE 'SO-%'
																   THEN 'Sales Order'
																   ELSE 'Invoice'
															  END
													END
										  END
									 ELSE CASE WHEN TRANS.intTransTypeHDR = 1 AND TRANS.intTransTypeDTL = 2
											   THEN 'Receipt'
											   ELSE CASE WHEN TRANS.intTransTypeHDR = 1 AND TRANS.intTransTypeDTL = 2 AND TRANS.decAmount = 0
														 THEN 'Allocation'
														 ELSE CASE WHEN TRANS.intTransTypeHDR = 1 AND TRANS.intTransTypeDTL = 3
																   THEN 'Discount'
																   ELSE CASE WHEN TRANS.intTransTypeHDR = 2 AND TRANS.intTransTypeDTL = 1
																			 THEN 'Deposit'
																			 ELSE CASE WHEN TRANS.intTransTypeHDR = 2 AND TRANS.intTransTypeDTL = 2
																					   THEN 'Applied'
																					   ELSE CASE WHEN TRANS.intTransTypeHDR = 3 AND TRANS.intTransTypeDTL = 5
																								 THEN 'Journal'
																								 ELSE CASE WHEN TRANS.intTransTypeHDR = 3 AND TRANS.intTransTypeDTL = 2
																										   THEN 'Receipt'
																										   ELSE 'UNKNOWN'
																									  END
																							END
																				  END
																		END
															  END
													END
										  END
								END
					  END
			END AS [Transaction],
			CASE WHEN TRANS.decAmount > 0
				 THEN TRANS.decAmount 
				 ELSE 0.00 
			END AS Debit,
			CASE WHEN TRANS.decAmount > 0
				 THEN 0.00 
				 ELSE TRANS.decAmount * -1
			END AS Credit,
			TRANS.decAmount AS Amount,
			0.00 AS Balance,
			CUST.strCustName + ' ' + CUST.strCustDesc AS Customername,
			CUST.strCustName
	FROM #TempCUST CUST
	INNER JOIN #TempTRANS TRANS ON CUST.strCustName = TRANS.strCustName 
	ORDER BY CUST.strCustName,
			 TRANS.lngID 

	INSERT INTO #TempCUSTTRANS ([Date], [Transaction], [Amount], [Balance], [Customername], [CustName])
	SELECT	MAX(ISNULL(TRANS.dteJournalDate, OB.dteJournalDate)) AS [Date],
			'Closing Balance' AS [Transaction],
			0.00 AS [Amount],
			OB.decBalance + SUM(ISNULL(TRANS.decAmount, 0)) AS [Balance],
			OB.strCustomerName AS [CustomerName],
			OB.strCustName AS [CustName]
	FROM #TempOB OB
	LEFT JOIN #TempTRANS TRANS ON OB.strCustName = TRANS.strCustName 
	GROUP BY OB.strCustName,
			 OB.strCustomerName,
			 OB.decBalance
	ORDER BY OB.strCustomerName

	UPDATE #TempCUSTTRANS
	SET Balance = TMP.Balance 
	FROM (SELECT CustName,
				 lngID,	
				 SUM (Amount) OVER (PARTITION BY CustName ORDER BY lngID) AS Balance
		  FROM #TempCUSTTRANS) TMP
	WHERE #TempCUSTTRANS.lngID = TMP.lngID 

	IF @SQAllCustomers = 1
	BEGIN 

		DELETE FROM #TempCUSTTRANS
		WHERE CustName IN (SELECT CustName
						   FROM #TempCUSTTRANS
						   GROUP BY CustName
						   HAVING (COUNT(lngID) = 2)
						   AND (MAX(Balance) = 0.00 AND MIN(Balance) = 0.00))

	END

	SELECT	T1.[Date], 
			T1.[Document], 
			T1.[Reference], 
			T1.[Transaction], 
			T1.[Debit], 
			T1.[Credit], 
			T1.[Balance], 
			T1.[Customername],
			CASE WHEN @SQForeignAmounts = 1 THEN T2.[strCurrency] + ' ' + CUR.[strCurrName] ELSE '' END AS [Currency]
	FROM #TempCUSTTRANS T1
	INNER JOIN #TempCUST T2 ON T1.CustName = T2.strCustName 
	LEFT JOIN tblCurrency CUR ON T2.strCurrency = CUR.strCurrency 
	ORDER BY Currency,
			 T1.Customername, 
			 T1.lngID

	DROP TABLE #TempCUST
	DROP TABLE #TempTRANS
	DROP TABLE #TempOB
	DROP TABLE #TempCUSTTRANS

END
GO

/****** Object:  StoredProcedure [dbo].[SPRptVendorTransactions]    Script Date: 13-07-2022 10:20:00 ******/
CREATE PROCEDURE [dbo].[SPRptVendorTransactions]
@SQVendors nvarchar(MAX),
@SQDateFrom smalldatetime,
@SQDateTo smalldatetime,
@SQTransType tinyint,
@SQForeignAmounts bit,
@SQMultiCurrencyEnabled bit,
@SQAllVendors bit
AS
BEGIN

	CREATE TABLE #TempVEND (
	strVendName nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	strVendDesc nvarchar(200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	strCurrency nvarchar(3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	bitIsForeign bit NOT NULL)

	DECLARE @HomeCurrency nvarchar(3)

	SELECT @HomeCurrency = strCurrency FROM tblCurrency WHERE bitHome = 1

	INSERT INTO #TempVEND
	SELECT	tblVendors.strVendName,
			tblVendors.strVendDesc,
			CASE WHEN @SQMultiCurrencyEnabled = 0
				 THEN @HomeCurrency
				 ELSE ISNULL(tblCurrency.strCurrency, '') 
			END AS strCurrency,
			CASE WHEN @SQMultiCurrencyEnabled = 0 
				 THEN 0 
				 ELSE CASE WHEN ISNULL(tblCurrency.strCurrency, '') <> @HomeCurrency AND @SQForeignAmounts = 1 
						   THEN 1 
						   ELSE 0 
					  END 
			END AS bitIsForeign
	FROM tblVendors
	LEFT JOIN tblCurrency ON tblVendors.strCurrency = tblCurrency.strCurrency 
	WHERE tblVendors.strVendName IN (SELECT * FROM fnSplitStringAsTable(@SQVendors, ','))
	ORDER BY tblVendors.strVendName 

	CREATE TABLE #TempTRANS (
	strVendName nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	strInvDepNumber nvarchar(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	strDocID nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	dteJournalDate smalldatetime NOT NULL,
	intTransTypeHDR tinyint NOT NULL,
	intTransTypeDTL tinyint NOT NULL,
	decAmount money NOT NULL,
	dteDueDate smalldatetime NOT NULL,
	lngVendPayID bigint NULL,
	lngID bigint IDENTITY(1,1) NOT NULL)

	INSERT INTO #TempTRANS (strVendName, strInvDepNumber, strDocID, dteJournalDate, intTransTypeHDR, intTransTypeDTL, decAmount, dteDueDate, lngVendPayID)
	SELECT	TMP.strVendName,
			CASE WHEN T1.intTransType = @SQTransType THEN ISNULL((SELECT JE.strComment FROM tblJournalEntryDoc JE WHERE JE.strJEDocID = T1.strJEDocID), '') ELSE T1.strInvDepNumber END AS strInvDepNumber, 
			CASE WHEN T1.intTransType = @SQTransType THEN ISNULL(T1.strJEDocID, '') ELSE ISNULL(T1.strInvPDocID, '') END AS invoice, 
			T2.dteJournalDate AS DTTransDate, 
			T1.intTransType AS TransType, 
			T2.intTransType, 
			CASE WHEN TMP.bitIsForeign = 0
					THEN T2.decAmount
					ELSE T2.decAmountF
			END AS decAmount,
			T1.dteDueDate, 
			T2.lngVendPayID 
	FROM #TempVEND TMP
	INNER JOIN tblVendTrans T1 ON TMP.strVendName = T1.strVendName
	INNER JOIN tblVendTransDT T2 ON T1.lngVendTrID = T2.lngVendTrID 
	WHERE (T2.bitReversed = 0) 
	AND (ISNULL(T2.lngVendPayID, 0) = 0) 
	AND (T1.dteJournalDate BETWEEN @SQDateFrom AND @SQDateTo)
	UNION ALL 
	SELECT	TMP.strVendName,
			ISNULL(T3.strComment, '') AS strInvDepNumber, 
			ISNULL(T3.strSource, '') AS invoice, 
			T3.dteJournalDate AS DTTransDate, 
			1 AS TransType, 
			2 AS intTransType, 
			SUM(CASE WHEN TMP.bitIsForeign = 0
						THEN ISNULL(T4.decAmount, 0)
						ELSE ISNULL(T4.decAmountF, 0)
				END) AS decAmount,
			T3.dteJournalDate AS dteDueDate, 
			T3.lngVendPayID 
	FROM #TempVEND TMP
	INNER JOIN tblVendPay T3 ON TMP.strVendName = T3.strVendName 
	INNER JOIN tblVendTransDT T4 ON T3.lngVendPayID = T4.lngVendPayID 
	INNER JOIN tblVendTrans T5 ON T4.lngVendTrID = T5.lngVendTrID 
	WHERE (T3.bitReversed = 0) 
	AND (T3.dteJournalDate BETWEEN @SQDateFrom AND @SQDateTo)
	AND (T4.bitReversed = 0) 
	GROUP BY TMP.strVendName,
			 ISNULL(T3.strSource, ''), 
			 T3.dteJournalDate, 
			 T3.lngVendPayID, 
			 ISNULL(T3.strComment, '') 
	HAVING SUM(ISNULL(T4.decAmount, 0)) <> 0 OR SUM(ISNULL(T4.decAmountF, 0)) <> 0 
	ORDER BY TMP.strVendName,
			 DTTransDate, 
			 invoice

	CREATE TABLE #TempOB (
	strVendName nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	strVendorName nvarchar(500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	dteJournalDate smalldatetime NOT NULL,
	strTransaction nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	decBalance money NOT NULL)

	INSERT INTO #TempOB
	SELECT	VEND.strVendName,
			VEND.strVendName + ' ' + VEND.strVendDesc AS strVendorName,
			@SQDateFrom AS dteJournalDate,
			'Opening Balance' AS strTransaction,
			SUM(ISNULL(OB.decBalance, 0)) AS decBalance
	FROM #TempVEND VEND
	LEFT JOIN (SELECT TMP.strVendName,
					  TMP.strVendDesc,
					  CASE WHEN TMP.bitIsForeign = 0
						   THEN T2.decAmount
						   ELSE T2.decAmountF
					  END AS decBalance
			   FROM #TempVEND TMP
			   INNER JOIN tblVendTrans T1 ON TMP.strVendName = T1.strVendName 
			   INNER JOIN tblVendTransDT T2 ON T1.lngVendTrID = T2.lngVendTrID  
			   WHERE (T2.bitReversed = 0)
			   AND (T2.dteJournalDate < @SQDateFrom)) OB 
		ON VEND.strVendName = OB.strVendName 
	GROUP BY VEND.strVendName,
			 VEND.strVendDesc
	ORDER BY VEND.strVendName

	CREATE TABLE #TempVENDTRANS (
	[Date] smalldatetime NOT NULL,
	[Document] nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
	[Reference] nvarchar(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
	[Transaction] nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[Debit] money NULL,
	[Credit] money NULL,
	[Amount] money NOT NULL,
	[Balance] money NOT NULL,
	[Customername] nvarchar(500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[VendName] nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
	[TransType] tinyint NULL,
	[lngID] bigint IDENTITY(1,1) NOT NULL)

	INSERT INTO #TempVENDTRANS ([Date], [Transaction], [Amount], [Balance], [Customername], [VendName])
	SELECT	dteJournalDate AS [Date],
			strTransaction AS [Transaction],
			decBalance AS [Amount],
			0.00 AS [Balance],
			strVendorName AS [CustomerName],
			strVendName AS [VendorName]
	FROM #TempOB
	ORDER BY strVendorName

	INSERT INTO #TempVENDTRANS ([Date], [Document], [Reference], [Transaction], [Debit], [Credit], [Amount], [Balance], [Customername], [VendName], [TransType])
	SELECT	TRANS.dteJournalDate AS [Date],
			TRANS.strDocID AS Document,
			TRANS.strInvDepNumber AS Reference,
			CASE WHEN TRANS.intTransTypeHDR = 1 AND TRANS.intTransTypeDTL = 1 AND TRANS.decAmount >= 0
				 THEN 'Purchase Invoice'
				 ELSE CASE WHEN TRANS.intTransTypeHDR = 1 AND TRANS.intTransTypeDTL = 1 AND TRANS.decAmount < 0
						   THEN 'Debit Note'
						   ELSE CASE WHEN TRANS.intTransTypeHDR = 1 AND TRANS.intTransTypeDTL = 2
									 THEN 'Payment'
									 ELSE CASE WHEN TRANS.intTransTypeHDR = 1 AND TRANS.intTransTypeDTL = 3
											   THEN 'Discount'
											   ELSE CASE WHEN TRANS.intTransTypeHDR = 2 AND TRANS.intTransTypeDTL = 1
														 THEN 'Prepayment'
														 ELSE CASE WHEN TRANS.intTransTypeHDR = 2 AND TRANS.intTransTypeDTL = 2
																   THEN 'Applied'
																   ELSE CASE WHEN TRANS.intTransTypeHDR = 3 AND TRANS.intTransTypeDTL = 5
																			 THEN 'Journal'
																			 ELSE CASE WHEN TRANS.intTransTypeHDR = 3 AND TRANS.intTransTypeDTL = 2
																					   THEN 'Debit Note'
																					   ELSE 'UNKNOWN'
																				  END
																		END
															  END
													END
										  END
								END
					  END
			END AS [Transaction],
			CASE WHEN TRANS.decAmount > 0
				 THEN 0.00 
				 ELSE TRANS.decAmount * -1
			END AS Debit,
			CASE WHEN TRANS.decAmount > 0
				 THEN TRANS.decAmount 
				 ELSE 0.00
			END AS Credit,
			TRANS.decAmount AS Amount,
			0.00 AS Balance,
			VEND.strVendName + ' ' + VEND.strVendDesc AS Customername,
			VEND.strVendName,
			TRANS.intTransTypeDTL AS TransType
	FROM #TempVEND VEND
	INNER JOIN #TempTRANS TRANS ON VEND.strVendName = TRANS.strVendName 
	ORDER BY VEND.strVendName,
			 TRANS.lngID 

	INSERT INTO #TempVENDTRANS ([Date], [Transaction], [Amount], [Balance], [Customername], [VendName])
	SELECT	MAX(ISNULL(TRANS.dteJournalDate, OB.dteJournalDate)) AS [Date],
			'Closing Balance' AS [Transaction],
			0.00 AS [Amount],
			OB.decBalance + SUM(ISNULL(TRANS.decAmount, 0)) AS [Balance],
			OB.strVendorName AS [CustomerName],
			OB.strVendName AS [VendName]
	FROM #TempOB OB
	LEFT JOIN #TempTRANS TRANS ON OB.strVendName = TRANS.strVendName 
	GROUP BY OB.strVendName,
			 OB.strVendorName,
			 OB.decBalance
	ORDER BY OB.strVendorName

	UPDATE #TempVENDTRANS
	SET Balance = TMP.Balance 
	FROM (SELECT VendName,
				 lngID,	
				 SUM (Amount) OVER (PARTITION BY VendName ORDER BY lngID) AS Balance
		  FROM #TempVENDTRANS) TMP
	WHERE #TempVENDTRANS.lngID = TMP.lngID 

	IF @SQAllVendors = 1
	BEGIN 

		DELETE FROM #TempVENDTRANS
		WHERE VendName IN (SELECT VendName
						   FROM #TempVENDTRANS
						   GROUP BY VendName
						   HAVING (COUNT(lngID) = 2)
						   AND (MAX(Balance) = 0.00 AND MIN(Balance) = 0.00))

	END

	SELECT	T1.[Date], 
			T1.[Document], 
			T1.[Reference], 
			T1.[Transaction], 
			T1.[Debit], 
			T1.[Credit], 
			T1.[Balance], 
			T1.[Customername],
			T1.[TransType],
			CASE WHEN @SQForeignAmounts = 1 THEN T2.[strCurrency] + ' ' + CUR.[strCurrName] ELSE '' END AS [Currency]
	FROM #TempVENDTRANS T1
	INNER JOIN #TempVEND T2 ON T1.VendName = T2.strVendName 
	LEFT JOIN tblCurrency CUR ON T2.strCurrency = CUR.strCurrency 
	ORDER BY Currency,
			 T1.Customername, 
			 T1.lngID

	DROP TABLE #TempVEND
	DROP TABLE #TempTRANS
	DROP TABLE #TempOB
	DROP TABLE #TempVENDTRANS

END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdateEFDRegisterConfigKenya]    Script Date: 29-07-2022 10:20:00 ******/
CREATE PROCEDURE [dbo].[AddUpdateEFDRegisterConfigKenya] @IPAddress AS NVARCHAR(Max)  
 ,@Port AS INT  
 ,@Password AS NVARCHAR(100)  
 ,@SerialNumber AS NVARCHAR(100)  
 ,@CUPin AS NVARCHAR(50)  
 ,@ID AS INT = NULL  
 ,@KenyaBasicAuthKey AS NVARCHAR(200)  
 ,@KenyaConfigurationType AS INT = 0  
 ,@KenyaInvoicePIN  AS NVARCHAR(200)  
 ,@KenyaConnectionURL AS NVARCHAR(500)
 ,@KenyaBranchId  AS NVARCHAR(100)
AS  
BEGIN  
 --IF (SELECT count(intEFDRegisterConfigID) FROM tblEFDRegisterConfig) >= 1      
 IF @ID > 0  
 BEGIN  
  UPDATE [dbo].[tblEFDRegisterConfigKenya]  
  SET [strIPAddress] = @IPAddress  
   ,[intPort] = @Port  
   ,[strPassword] = @Password  
   ,[strSerialNumber] = @SerialNumber  
   ,[strCUPin] = @CUPin  
   ,[dteRowUpdated] = GETDATE()  
   ,[strKenyaBasicAuthKey] = @KenyaBasicAuthKey  
   ,[intKenyaConfigurationType] = @KenyaConfigurationType  
   ,[strKenyaInvoicePIN] = @KenyaInvoicePIN  
   ,[strKenyaConnectionURL] = @KenyaConnectionURL 
   ,[strKenyaBranchId] = @KenyaBranchId 
  WHERE intID = @ID  
 END  
 ELSE  
 BEGIN  
  INSERT INTO [dbo].[tblEFDRegisterConfigKenya] (  
   [strIPAddress]  
   ,[intPort]  
   ,[strPassword]  
   ,[strSerialNumber]  
   ,[strCUPin]  
   ,[dteRowUpdated]  
   ,[strKenyaBasicAuthKey]  
   ,[intKenyaConfigurationType]  
   ,[strKenyaInvoicePIN]  
   ,[strKenyaConnectionURL]
   ,[strKenyaBranchId]  
   )  
  VALUES (  
   @IPAddress  
   ,@Port  
   ,@Password  
   ,@SerialNumber  
   ,@CUPin  
   ,GETDATE()  
   ,@KenyaBasicAuthKey  
   ,@KenyaConfigurationType  
   ,@KenyaInvoicePIN  
   ,@KenyaConnectionURL  
   ,@KenyaBranchId
   )  
 END  
END  
GO

/****** Object:  StoredProcedure [dbo].[GetEFDRegisterKenyaSettings]    Script Date: 29-07-2022 10:20:00 ******/
CREATE PROCEDURE [dbo].[GetEFDRegisterKenyaSettings]  
AS  
BEGIN  
 SELECT TOP 1 [intID] AS ID  
 , [strIPAddress] AS IPAddress  
  ,[intPort] AS [Port]  
  ,[strSerialNumber] AS  SerialNumber  
  ,[strCUPin] AS  CUPin  
  ,[strPassword] AS [Password]  
  ,[dteRowUpdated] AS RowUpdated  
  ,[strKenyaBasicAuthKey] AS KenyaBasicAuthKey  
  ,[intKenyaConfigurationType] AS KenyaConfigurationType  
  ,[strKenyaInvoicePIN] AS KenyaInvoicePIN  
  ,[strKenyaConnectionURL] AS KenyaConnectionURL  
  ,[strKenyaBranchId] as KenyaBranchId
 FROM [dbo].[tblEFDRegisterConfigKenya] (nolock)  
END  
GO

/****** Object:  StoredProcedure [dbo].[AddEFDInvoiceDetailsForKenya]    Script Date: 29-07-2022 10:20:00 ******/
CREATE PROCEDURE [dbo].[AddEFDInvoiceDetailsForKenya]
(	@InvoiceDoc VARCHAR(50),
	@TransactionType INT,
	@RequestData NVARCHAR(MAX),
	@ResponseData NVARCHAR(MAX),
	@QRCode NVARCHAR(MAX),
	@InvoiceNum NVARCHAR(200)
)
AS
BEGIN
	INSERT INTO [dbo].[tblEFDInvoiceDocKenya]
           ( [strInvDocID], [intTransactionType], [strRequestData], [strResponseData], [strQRcode], [strInvoiceNum], [dteRowUpdated])
     VALUES
           (@InvoiceDoc, @TransactionType, @RequestData, @ResponseData, @QRCode, @InvoiceNum, GETDATE() )
END
GO

/****** Object:  StoredProcedure [dbo].[GetEFDInvoiceDocKenya]    Script Date: 29-07-2022 10:20:00 ******/
CREATE PROCEDURE [dbo].[GetEFDInvoiceDocKenya]
@InvoiceDoc NVARCHAR(20) = ''
AS
BEGIN
	SELECT TOP 1 strInvDocID AS InvDocID
		,intTransactionType AS TransactionType
		,strRequestData AS RequestData
		,strResponseData AS ResponseData
		,strQRcode AS  QRcode
		,strInvoiceNum AS InvoiceNum
	FROM tblEFDInvoiceDocKenya (nolock)
	WHERE strInvDocID = @InvoiceDoc
END
GO

/****** Object:  StoredProcedure [dbo].[GetEFDKenyaSigninvoiceResponseDetailsForAR]    Script Date: 29-07-2022 10:20:00 ******/
CREATE PROCEDURE [dbo].[GetEFDKenyaSigninvoiceResponseDetailsForAR]     
( 
@SQDocNumber varchar(20)    
)    
AS       
BEGIN    
 DECLARE @JsonResponse NVARCHAR(MAX);    
 SET @JsonResponse = (SELECT TOP 1 strResponseData from [tblEFDInvoiceDocKenya] WHERE strInvDocID = @SQDocNumber)    
 SELECT *    
 INTO #Main    
 FROM (    
  SELECT     
     max(CASE WHEN name = 'InvoiceNum' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE '' END) AS [InvoiceNum],     
     max(CASE WHEN name = 'QRcode' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE '' END) AS [QRCodePlan],     
     max(CASE WHEN name = 'OptionIsReceiptOpened' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE '' END) AS [OptionIsReceiptOpened],     
     max(CASE WHEN name = 'SalesNumber' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE '' END) AS [SalesNumber],     
     max(CASE WHEN name = 'SubtotalAmountVATGA' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE '' END) AS [SubtotalAmountVATGA],     
     max(CASE WHEN name = 'SubtotalAmountVATGB' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE '' END) AS [SubtotalAmountVATGB],     
     max(CASE WHEN name = 'SubtotalAmountVATGC' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE '' END) AS [SubtotalAmountVATGC],     
     max(CASE WHEN name = 'SubtotalAmountVATGD' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE '' END) AS [SubtotalAmountVATGD],     
     max(CASE WHEN name = 'SubtotalAmountVATGE' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE '' END) AS [SubtotalAmountVATGE],     
     max(CASE WHEN name = 'OptionReceiptFormat' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE '' END) AS [OptionReceiptFormat],     
     max(CASE WHEN name = 'OptionClientReceipt' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE '' END) AS [OptionClientReceipt],     
     max(CASE WHEN name = 'OptionPowerDownInReceipt' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE '' END) AS [OptionPowerDownInReceipt],     
     max(CASE WHEN name = 'DeviceTime' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE ''END) AS [DeviceTime],     
     max(CASE WHEN name = 'SystemTime' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE '' END) AS [SystemTime],
     max(CASE WHEN name = 'CUPin' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE '' END) AS [CUPin],    
     max(CASE WHEN name = 'SerialNumber' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE '' END) AS [SerialNumber],    
     max(CASE WHEN name = 'IPAddress' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE '' END) AS [IPAddress],    
     max(CASE WHEN name = 'Port' THEN CONVERT(NVARCHAR(MAX), StringValue) ELSE '' END) AS [Port]    

	  
  FROM parseJSON(    
    ISNULL(@JsonResponse, '{}')    
   )    
  WHERE ValueType = 'string'    
   OR ValueType = 'boolean'    
   OR ValueType = 'int'    
   OR ValueType = 'real'    
  GROUP BY parent_ID    
  ) AS tbl    
    
      
 SELECT * INTO #Parent FROM #Main WHERE DeviceTime <> ''    
      
 SELECT 
  [InvoiceNum]
 ,[QRCodePlan]
 ,CAST([OptionIsReceiptOpened] as int) AS [OptionIsReceiptOpened]
 ,[SalesNumber]
 ,CAST([SubtotalAmountVATGA] AS money) AS [SubtotalAmountVATGA]
 ,CAST([SubtotalAmountVATGB] AS money) AS [SubtotalAmountVATGB] 
 ,CAST([SubtotalAmountVATGC] AS money) AS [SubtotalAmountVATGC]
 ,CAST([SubtotalAmountVATGD] AS money) AS [SubtotalAmountVATGD]
 ,CAST([SubtotalAmountVATGE] AS money) AS [SubtotalAmountVATGE]
 ,CAST([OptionReceiptFormat] AS int) AS [OptionReceiptFormat]
 ,CAST([OptionClientReceipt] AS int) AS [OptionClientReceipt]
 ,CAST([OptionPowerDownInReceipt] AS int) AS [OptionPowerDownInReceipt]
 ,[DeviceTime]
 ,[SystemTime]
 ,[CUPin]
 ,[SerialNumber]
 ,[IPAddress]
 ,CAST([Port] as int) AS [Port]
  FROM #Parent  

  DROP TABLE #Main 
  DROP TABLE #Parent 

END
GO

/****** Object:  StoredProcedure [dbo].[AddUpdatetblEFDRegisterConfigKenya]    Script Date: 29-07-2022 10:20:00 ******/
CREATE PROCEDURE [dbo].[AddUpdatetblEFDRegisterConfigKenya] @tblData  
AS  
EFDRegisterConfigKenyaTableType READONLY AS  
BEGIN  
 SET IDENTITY_INSERT tblEFDRegisterConfigKenya ON  
 BEGIN  
  INSERT INTO tblEFDRegisterConfigKenya   
   ( intID, strIPAddress, intPort, strSerialNumber, strCUPin, strPassword)  
  SELECT   
     intID, strIPAddress, intPort, strSerialNumber, strCUPin, strPassword  
  FROM @tblData AS t  
  WHERE NOT EXISTS ( SELECT 1 FROM tblEFDRegisterConfigKenya WHERE intID = t.intID )  
 END  
  
 BEGIN  
  UPDATE tblEFDRegisterConfigKenya  
  SET strIPAddress = table2.strIPAddress, intPort = table2.intPort, strSerialNumber = table2.strSerialNumber, strCUPin = table2.strCUPin, strPassword = table2.strPassword 
  FROM tblEFDRegisterConfigKenya AS table1  
  INNER JOIN @tblData AS table2 ON (table1.intID = table2.intID)  
 END  
 SET IDENTITY_INSERT tblEFDRegisterConfigKenya OFF  
END
GO

create procedure GetJournalEntryApplyDetails     
 @Type as int,  
 @VendorNameLength as int,  
 @SelectedSort as varchar(10),  
 @SQVendor as varchar(50),  
 @SQstrCustName as varchar(50),  
 @SQCurrency as varchar(50)  
 as  
 begin  
  
 if(@Type =1 and @VendorNameLength>0 and @SelectedSort = 'Number')  
    begin  
   
    SELECT tblVendors.strVendName as CuVeNumber , tblVendors.strVendDesc as CuVeName, tblVendTrans.dteJournalDate as DocDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END  as InvPDocID,  
	tblVendTrans.strInvDepNumber as Reference, SUM(tblVendTransDT.decAmount)  as  Amount, tblVendTrans.bitIsForeign as IsForeign, SUM(tblVendTransDT.decAmountF) as ForeignAmount, tblVendTrans.strCurrency as Currency, tblVendTrans.decExchange FROM tblVendTrans 
	INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID INNER JOIN tblVendors ON tblVendTrans.strVendName = tblVendors.strVendName LEFT JOIN tblInvoiceDocP ON tblVendTrans.strInvPDocID = tblInvoiceDocP.strInvPDocID 
	WHERE (tblVendTrans.strCurrency = @SQCurrency) AND (tblVendTransDT.bitReversed = 0) AND (tblVendTrans.bitSettled = 0) AND (CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END <> '') 
    GROUP BY tblVendors.strVendName, tblVendors.strVendDesc, tblVendTrans.dteJournalDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END, tblVendTrans.strInvDepNumber, tblVendTrans.bitIsForeign  , tblVendTrans.strCurrency, tblVendTrans.decExchange   
    HAVING (tblVendors.strVendName = @SQVendor)  
    ORDER BY tblVendors.strVendName ASC, InvPDocID ASC  
  
    end  
  
 else if(@Type =1 and @VendorNameLength<0 and @SelectedSort = 'Number')  
     begin  
  
    SELECT tblVendors.strVendName as CuVeNumber , tblVendors.strVendDesc as CuVeName, tblVendTrans.dteJournalDate as DocDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END  as InvPDocID,  tblVendTrans.strInvDepNumber as Reference, SUM(tblVendTransDT.decAmount)  as  Amount, tblVendTrans.bitIsForeign as IsForeign, SUM(tblVendTransDT.decAmountF) as ForeignAmount, 
	tblVendTrans.strCurrency as Currency, tblVendTrans.decExchange FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID INNER JOIN tblVendors ON tblVendTrans.strVendName = 
    tblVendors.strVendName LEFT JOIN tblInvoiceDocP ON tblVendTrans.strInvPDocID = tblInvoiceDocP.strInvPDocID WHERE (tblVendTrans.strCurrency = @SQCurrency) AND (tblVendTransDT.bitReversed = 0) AND (tblVendTrans.bitSettled = 0) AND (CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END <> '') 
	GROUP BY tblVendors.strVendName, tblVendors.strVendDesc, tblVendTrans.dteJournalDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END, tblVendTrans.strInvDepNumber, tblVendTrans.bitIsForeign  , tblVendTrans.strCurrency, tblVendTrans.decExchange   
    ORDER BY tblVendors.strVendName ASC, InvPDocID ASC  
  
  end  
  
   else if(@Type =1 and @VendorNameLength>0 and @SelectedSort = 'Name')  
       begin  
    SELECT tblVendors.strVendName as CuVeNumber , tblVendors.strVendDesc as CuVeName, tblVendTrans.dteJournalDate as DocDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END  as InvPDocID,  tblVendTrans.strInvDepNumber as Reference, SUM(tblVendTransDT.decAmount)  as  Amount, tblVendTrans.bitIsForeign as IsForeign, SUM(tblVendTransDT.decAmountF) as ForeignAmount,
    tblVendTrans.strCurrency as Currency, tblVendTrans.decExchange FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID 
	INNER JOIN tblVendors ON tblVendTrans.strVendName = tblVendors.strVendName LEFT JOIN tblInvoiceDocP ON tblVendTrans.strInvPDocID = tblInvoiceDocP.strInvPDocID WHERE (tblVendTrans.strCurrency = @SQCurrency) AND (tblVendTransDT.bitReversed = 0) AND (tblVendTrans.bitSettled = 0) AND (CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END <> '') 
	GROUP BY tblVendors.strVendName, tblVendors.strVendDesc, tblVendTrans.dteJournalDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END, tblVendTrans.strInvDepNumber, tblVendTrans.bitIsForeign  ,
    tblVendTrans.strCurrency, tblVendTrans.decExchange   
    HAVING (tblVendors.strVendName = @SQVendor)  
    ORDER BY tblVendors.strVendDesc ASC  
    end  
  
   else if(@Type =1 and @VendorNameLength<0 and @SelectedSort = 'Name')  
       begin  
  
     SELECT tblVendors.strVendName as CuVeNumber , tblVendors.strVendDesc as CuVeName, tblVendTrans.dteJournalDate as DocDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END  as InvPDocID,  tblVendTrans.strInvDepNumber as Reference, SUM(tblVendTransDT.decAmount)  as  Amount, tblVendTrans.bitIsForeign as IsForeign, 
	 SUM(tblVendTransDT.decAmountF) as ForeignAmount, tblVendTrans.strCurrency as Currency, tblVendTrans.decExchange FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID INNER JOIN tblVendors ON tblVendTrans.strVendName =tblVendors.strVendName 
	 LEFT JOIN tblInvoiceDocP ON tblVendTrans.strInvPDocID = tblInvoiceDocP.strInvPDocID WHERE (tblVendTrans.strCurrency = @SQCurrency) AND (tblVendTransDT.bitReversed = 0) AND (tblVendTrans.bitSettled = 0) AND (CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END <> '') 
	 GROUP BY tblVendors.strVendName, tblVendors.strVendDesc, tblVendTrans.dteJournalDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END, tblVendTrans.strInvDepNumber, tblVendTrans.bitIsForeign  , tblVendTrans.strCurrency, tblVendTrans.decExchange   
     ORDER BY tblVendors.strVendDesc ASC  
  
    end  
  
 else if(@Type =1 and @VendorNameLength>0 and @SelectedSort = 'Date')  
     begin  
   SELECT tblVendors.strVendName as CuVeNumber , tblVendors.strVendDesc as CuVeName, tblVendTrans.dteJournalDate as DocDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END  as InvPDocID,  tblVendTrans.strInvDepNumber as Reference, 
   SUM(tblVendTransDT.decAmount)  as  Amount, tblVendTrans.bitIsForeign as IsForeign, SUM(tblVendTransDT.decAmountF) as ForeignAmount, tblVendTrans.strCurrency as Currency, tblVendTrans.decExchange FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID INNER JOIN tblVendors ON tblVendTrans.strVendName = tblVendors.strVendName 
   LEFT JOIN tblInvoiceDocP ON tblVendTrans.strInvPDocID = tblInvoiceDocP.strInvPDocID WHERE (tblVendTrans.strCurrency = @SQCurrency) AND (tblVendTransDT.bitReversed = 0) AND (tblVendTrans.bitSettled = 0) AND (CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END <> '') 
   GROUP BY tblVendors.strVendName, tblVendors.strVendDesc, tblVendTrans.dteJournalDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END, tblVendTrans.strInvDepNumber, tblVendTrans.bitIsForeign  , tblVendTrans.strCurrency, tblVendTrans.decExchange   
   HAVING (tblVendors.strVendName = @SQVendor)  
   ORDER BY DocDate DESC  
    
  end  
  
 else if(@Type =1 and @VendorNameLength<0 and @SelectedSort = 'Date')  
     begin  
    SELECT tblVendors.strVendName as CuVeNumber , tblVendors.strVendDesc as CuVeName, tblVendTrans.dteJournalDate as DocDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END  as InvPDocID,  tblVendTrans.strInvDepNumber as Reference, SUM(tblVendTransDT.decAmount)  as  Amount, tblVendTrans.bitIsForeign as IsForeign, SUM(tblVendTransDT.decAmountF) as ForeignAmount, 
	tblVendTrans.strCurrency as Currency, tblVendTrans.decExchange FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID INNER JOIN tblVendors ON tblVendTrans.strVendName = 
    tblVendors.strVendName LEFT JOIN tblInvoiceDocP ON tblVendTrans.strInvPDocID = tblInvoiceDocP.strInvPDocID WHERE (tblVendTrans.strCurrency = @SQCurrency) AND (tblVendTransDT.bitReversed = 0) AND (tblVendTrans.bitSettled = 0) AND (CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END <> '') 
	GROUP BY tblVendors.strVendName, tblVendors.strVendDesc, tblVendTrans.dteJournalDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END, tblVendTrans.strInvDepNumber, tblVendTrans.bitIsForeign  , tblVendTrans.strCurrency, tblVendTrans.decExchange   
    ORDER BY DocDate DESC  
    
  end  
  
 else if(@Type =1 and @VendorNameLength>0 and @SelectedSort = 'Document')  
       begin  
  
        SELECT tblVendors.strVendName as CuVeNumber , tblVendors.strVendDesc as CuVeName, tblVendTrans.dteJournalDate as DocDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END  as InvPDocID,  tblVendTrans.strInvDepNumber as Reference, SUM(tblVendTransDT.decAmount)  as  Amount, tblVendTrans.bitIsForeign as IsForeign, 
		SUM(tblVendTransDT.decAmountF) as ForeignAmount, tblVendTrans.strCurrency as Currency, tblVendTrans.decExchange FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID INNER JOIN tblVendors ON tblVendTrans.strVendName = tblVendors.strVendName 
		LEFT JOIN tblInvoiceDocP ON tblVendTrans.strInvPDocID = tblInvoiceDocP.strInvPDocID WHERE (tblVendTrans.strCurrency = @SQCurrency) AND (tblVendTransDT.bitReversed = 0) AND (tblVendTrans.bitSettled = 0) AND (CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END <> '') 
		GROUP BY tblVendors.strVendName, tblVendors.strVendDesc, tblVendTrans.dteJournalDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END, tblVendTrans.strInvDepNumber, tblVendTrans.bitIsForeign  , tblVendTrans.strCurrency, tblVendTrans.decExchange   
        HAVING (tblVendors.strVendName = @SQVendor)  
        ORDER BY InvPDocID DESC  
  
    end  
 else if(@Type =1 and @VendorNameLength<0 and @SelectedSort = 'Document')  
       begin  
  
     SELECT tblVendors.strVendName as CuVeNumber , tblVendors.strVendDesc as CuVeName, tblVendTrans.dteJournalDate as DocDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END  as InvPDocID, 
	 tblVendTrans.strInvDepNumber as Reference, SUM(tblVendTransDT.decAmount)  as  Amount, tblVendTrans.bitIsForeign as IsForeign, SUM(tblVendTransDT.decAmountF) as ForeignAmount, tblVendTrans.strCurrency as Currency, tblVendTrans.decExchange FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID 
	 INNER JOIN tblVendors ON tblVendTrans.strVendName =tblVendors.strVendName LEFT JOIN tblInvoiceDocP ON tblVendTrans.strInvPDocID = tblInvoiceDocP.strInvPDocID WHERE (tblVendTrans.strCurrency = @SQCurrency) AND (tblVendTransDT.bitReversed = 0) AND (tblVendTrans.bitSettled = 0) AND (CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END <> '') 
	 GROUP BY tblVendors.strVendName, tblVendors.strVendDesc, tblVendTrans.dteJournalDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END, tblVendTrans.strInvDepNumber, tblVendTrans.bitIsForeign  , tblVendTrans.strCurrency, tblVendTrans.decExchange   
     ORDER BY InvPDocID DESC  
  
    end  
  
 else if(@Type =1 and @VendorNameLength>0 and @SelectedSort = 'Reference')  
       begin  
  
     SELECT tblVendors.strVendName as CuVeNumber , tblVendors.strVendDesc as CuVeName, tblVendTrans.dteJournalDate as DocDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END  as InvPDocID,  tblVendTrans.strInvDepNumber as Reference, SUM(tblVendTransDT.decAmount)  as  Amount, tblVendTrans.bitIsForeign as IsForeign, SUM(tblVendTransDT.decAmountF) as ForeignAmount, 
	 tblVendTrans.strCurrency as Currency, tblVendTrans.decExchange FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID INNER JOIN tblVendors ON tblVendTrans.strVendName =
     tblVendors.strVendName LEFT JOIN tblInvoiceDocP ON tblVendTrans.strInvPDocID = tblInvoiceDocP.strInvPDocID WHERE (tblVendTrans.strCurrency = @SQCurrency) AND (tblVendTransDT.bitReversed = 0) AND (tblVendTrans.bitSettled = 0) AND (CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END <> '') 
	 GROUP BY tblVendors.strVendName, tblVendors.strVendDesc, tblVendTrans.dteJournalDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END, tblVendTrans.strInvDepNumber, tblVendTrans.bitIsForeign  , tblVendTrans.strCurrency, tblVendTrans.decExchange   
     HAVING (tblVendors.strVendName = @SQVendor)  
     ORDER BY tblVendors.strVendName ASC  
  
    end  
  
 else if(@Type =1 and @VendorNameLength<0 and @SelectedSort = 'Reference')  
       begin  
  
     SELECT tblVendors.strVendName as CuVeNumber , tblVendors.strVendDesc as CuVeName, tblVendTrans.dteJournalDate as DocDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END  as InvPDocID,  tblVendTrans.strInvDepNumber as DepartmentName, SUM(tblVendTransDT.decAmount)  as  Amount, tblVendTrans.bitIsForeign as IsForeign, SUM(tblVendTransDT.decAmountF) as ForeignAmount,
	 tblVendTrans.strCurrency as Currency, tblVendTrans.decExchange FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID INNER JOIN tblVendors ON tblVendTrans.strVendName =
     tblVendors.strVendName LEFT JOIN tblInvoiceDocP ON tblVendTrans.strInvPDocID = tblInvoiceDocP.strInvPDocID WHERE (tblVendTrans.strCurrency = @SQCurrency) AND (tblVendTransDT.bitReversed = 0) AND (tblVendTrans.bitSettled = 0) AND (CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END <> '') 
	 GROUP BY tblVendors.strVendName, tblVendors.strVendDesc, tblVendTrans.dteJournalDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END, tblVendTrans.strInvDepNumber, tblVendTrans.bitIsForeign  , tblVendTrans.strCurrency, tblVendTrans.decExchange   
     ORDER BY tblVendors.strVendName ASC  
  
    end  
  
 else if(@Type =1 and @VendorNameLength>0 and @SelectedSort = 'Amount')  
       begin  
  
     SELECT tblVendors.strVendName as CuVeNumber , tblVendors.strVendDesc as CuVeName, tblVendTrans.dteJournalDate as DocDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END  as InvPDocID,  tblVendTrans.strInvDepNumber as Reference, SUM(tblVendTransDT.decAmount)  as  Amount, tblVendTrans.bitIsForeign as IsForeign, 
	 SUM(tblVendTransDT.decAmountF) as ForeignAmount, tblVendTrans.strCurrency as Currency, tblVendTrans.decExchange FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID INNER JOIN tblVendors ON tblVendTrans.strVendName =
     tblVendors.strVendName LEFT JOIN tblInvoiceDocP ON tblVendTrans.strInvPDocID = tblInvoiceDocP.strInvPDocID WHERE (tblVendTrans.strCurrency = @SQCurrency) AND (tblVendTransDT.bitReversed = 0) AND (tblVendTrans.bitSettled = 0) AND (CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END <> '') 
	 GROUP BY tblVendors.strVendName, tblVendors.strVendDesc, tblVendTrans.dteJournalDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END, tblVendTrans.strInvDepNumber, tblVendTrans.bitIsForeign  , tblVendTrans.strCurrency, tblVendTrans.decExchange   
     HAVING (tblVendors.strVendName = @SQVendor)  
     ORDER BY SUM(tblVendTransDT.decAmount) DESC  
  
    end  
  
 else if(@Type =1 and @VendorNameLength<0 and @SelectedSort = 'Amount')  
       begin  
  
    SELECT tblVendors.strVendName as CuVeNumber , tblVendors.strVendDesc as CuVeName, tblVendTrans.dteJournalDate as DocDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END  as InvPDocID,  tblVendTrans.strInvDepNumber as Reference, SUM(tblVendTransDT.decAmount)  as  Amount, tblVendTrans.bitIsForeign as IsForeign, 
	SUM(tblVendTransDT.decAmountF) as ForeignAmount, tblVendTrans.strCurrency as Currency, tblVendTrans.decExchange FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID INNER JOIN tblVendors ON tblVendTrans.strVendName =
    tblVendors.strVendName LEFT JOIN tblInvoiceDocP ON tblVendTrans.strInvPDocID = tblInvoiceDocP.strInvPDocID WHERE (tblVendTrans.strCurrency = @SQCurrency) AND (tblVendTransDT.bitReversed = 0) AND (tblVendTrans.bitSettled = 0) AND (CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END <> '') 
	GROUP BY tblVendors.strVendName, tblVendors.strVendDesc, tblVendTrans.dteJournalDate, CASE WHEN ISNULL(tblVendTrans.strJEDocID,'') = '' THEN CASE WHEN ISNULL(tblVendTrans.strInvPDocID,'') = '' THEN CAST(tblVendTrans.lngVendTrID AS nvarchar(50)) ELSE tblVendTrans.strInvPDocID END ELSE tblVendTrans.strJEDocID END, 
	tblVendTrans.strInvDepNumber, tblVendTrans.bitIsForeign  , tblVendTrans.strCurrency, tblVendTrans.decExchange   
    ORDER BY SUM(tblVendTransDT.decAmount) DESC  
  
    end  
  
 else if(@Type =2 and @VendorNameLength>0 and @SelectedSort = 'Number')  
    begin  
   
    SELECT Z.strCustName as CuVeNumber, Z.strCustDesc as CuVeName, Z.dteJournalDate as DocDate, ISNULL(Z.strInvDocID,'') AS InvDocID, Z.strInvDepNumber as Reference, Z.decAmount as OriginalAmount, Z.bitIsForeign as IsForeign , Z.decAmountF as ForeignAmount, Z.strCurrency as Currency, Z.decExchange as Exchange 
	FROM (SELECT tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END AS strInvDocID, tblCustTrans.strInvDepNumber,
    SUM(tblCustTransDT.decAmount) AS decAmount, tblCustTrans.bitIsForeign, SUM(tblCustTransDT.decAmountF) AS decAmountF, tblCustTrans.strCurrency, tblCustTrans.decExchange , ISNULL((SELECT COUNT(strInvDocID) FROM tblPaymentPlan WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID),0) AS intPaymentPlan 
	FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName WHERE (tblCustTrans.strCurrency = @SQCurrency) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTrans.bitSettled = 0) GROUP BY tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, tblCustTrans.strInvDocID, tblCustTrans.strSoNumber, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END, tblCustTrans.strInvDepNumber, tblCustTrans.bitIsForeign, tblCustTrans.strCurrency, tblCustTrans.decExchange) Z LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID LEFT JOIN tblOrderDoc ON Z.strInvDocID = tblOrderDoc.strOrdDocID WHERE (Z.intPaymentPlan = 0 OR Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%'))  
    AND Z.strCustName = @SQstrCustName  
    ORDER BY CuVeNumber ASC, InvDocID ASC  
  
    end  
  
 else if(@Type =2 and @VendorNameLength<0 and @SelectedSort = 'Number')  
     begin  
  
   SELECT Z.strCustName as CuVeNumber, Z.strCustDesc as CuVeName, Z.dteJournalDate as DocDate, ISNULL(Z.strInvDocID,'') AS InvDocID, Z.strInvDepNumber as Reference, Z.decAmount as OriginalAmount, Z.bitIsForeign as IsForeign , Z.decAmountF as ForeignAmount, Z.strCurrency as Currency, Z.decExchange as Exchange 
   FROM (SELECT tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END AS strInvDocID, tblCustTrans.strInvDepNumber, SUM(tblCustTransDT.decAmount) AS decAmount, tblCustTrans.bitIsForeign, 
   SUM(tblCustTransDT.decAmountF) AS decAmountF, tblCustTrans.strCurrency, tblCustTrans.decExchange , ISNULL((SELECT COUNT(strInvDocID) FROM tblPaymentPlan WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID),0) AS intPaymentPlan FROM tblCustTrans 
   INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName WHERE 
   (tblCustTrans.strCurrency = @SQCurrency) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTrans.bitSettled = 0) GROUP BY tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, tblCustTrans.strInvDocID, tblCustTrans.strSoNumber, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE 
   tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END, tblCustTrans.strInvDepNumber, tblCustTrans.bitIsForeign, tblCustTrans.strCurrency, tblCustTrans.decExchange) Z 
   LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID LEFT JOIN tblOrderDoc ON Z.strInvDocID = tblOrderDoc.strOrdDocID WHERE (Z.intPaymentPlan = 0 OR Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%'))  
   ORDER BY CuVeNumber ASC, InvDocID ASC  
  
  end  
  
 else if(@Type =2 and @VendorNameLength>0 and @SelectedSort = 'Name')  
    begin  
   
    SELECT Z.strCustName as CuVeNumber, Z.strCustDesc as CuVeName, Z.dteJournalDate as DocDate, ISNULL(Z.strInvDocID,'') AS InvDocID, Z.strInvDepNumber as Reference, Z.decAmount as OriginalAmount, Z.bitIsForeign as IsForeign , Z.decAmountF as ForeignAmount, Z.strCurrency as Currency, Z.decExchange as Exchange FROM (SELECT tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END AS strInvDocID, tblCustTrans.strInvDepNumber, 
	SUM(tblCustTransDT.decAmount) AS decAmount, tblCustTrans.bitIsForeign, SUM(tblCustTransDT.decAmountF) AS decAmountF, tblCustTrans.strCurrency, tblCustTrans.decExchange , ISNULL((SELECT COUNT(strInvDocID) FROM tblPaymentPlan WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID),0) AS intPaymentPlan FROM tblCustTrans
    INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName WHERE 
    (tblCustTrans.strCurrency = @SQCurrency) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTrans.bitSettled = 0) GROUP BY tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, tblCustTrans.strInvDocID, tblCustTrans.strSoNumber, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE 
    tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END, tblCustTrans.strInvDepNumber, tblCustTrans.bitIsForeign, tblCustTrans.strCurrency, tblCustTrans.decExchange) Z LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID 
	LEFT JOIN tblOrderDoc ON Z.strInvDocID = tblOrderDoc.strOrdDocID WHERE (Z.intPaymentPlan = 0 OR Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%'))  
    AND Z.strCustName = @SQstrCustName  
    ORDER BY Z.strCustDesc ASC  
  
    end  
  
 else if(@Type =2 and @VendorNameLength<0 and @SelectedSort = 'Name')  
     begin  
  
      SELECT Z.strCustName as CuVeNumber, Z.strCustDesc as CuVeName, Z.dteJournalDate as DocDate, ISNULL(Z.strInvDocID,'') AS InvDocID, Z.strInvDepNumber as Reference, Z.decAmount as OriginalAmount, Z.bitIsForeign as IsForeign , Z.decAmountF as ForeignAmount, Z.strCurrency as Currency, Z.decExchange as Exchange 
      FROM (SELECT tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END AS strInvDocID, tblCustTrans.strInvDepNumber, SUM(tblCustTransDT.decAmount) AS decAmount, tblCustTrans.bitIsForeign, SUM(tblCustTransDT.decAmountF) AS decAmountF, tblCustTrans.strCurrency, tblCustTrans.decExchange , 
	  ISNULL((SELECT COUNT(strInvDocID) FROM tblPaymentPlan WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID),0) AS intPaymentPlan FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName WHERE 
      (tblCustTrans.strCurrency = @SQCurrency) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTrans.bitSettled = 0) GROUP BY tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, tblCustTrans.strInvDocID, tblCustTrans.strSoNumber, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE 
      tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END, tblCustTrans.strInvDepNumber, tblCustTrans.bitIsForeign, tblCustTrans.strCurrency, tblCustTrans.decExchange) Z LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID 
	  LEFT JOIN tblOrderDoc ON Z.strInvDocID = tblOrderDoc.strOrdDocID WHERE (Z.intPaymentPlan = 0 OR Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%'))  
      ORDER BY Z.strCustDesc ASC  
  
  end  
  
 else if(@Type =2  and @VendorNameLength>0 and @SelectedSort = 'Date')  
     begin  

     SELECT Z.strCustName as CuVeNumber, Z.strCustDesc as CuVeName, Z.dteJournalDate as DocDate, ISNULL(Z.strInvDocID,'') AS InvDocID, Z.strInvDepNumber as Reference, Z.decAmount as OriginalAmount, Z.bitIsForeign as IsForeign , Z.decAmountF as ForeignAmount, Z.strCurrency as Currency, Z.decExchange as Exchange FROM (SELECT tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END AS strInvDocID, tblCustTrans.strInvDepNumber, 
	 SUM(tblCustTransDT.decAmount) AS decAmount, tblCustTrans.bitIsForeign, SUM(tblCustTransDT.decAmountF) AS decAmountF, tblCustTrans.strCurrency, tblCustTrans.decExchange , ISNULL((SELECT COUNT(strInvDocID) FROM tblPaymentPlan WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID),0) AS intPaymentPlan FROM tblCustTrans 
	 INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName WHERE (tblCustTrans.strCurrency = @SQCurrency) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTrans.bitSettled = 0) GROUP BY tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, tblCustTrans.strInvDocID, tblCustTrans.strSoNumber, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END, tblCustTrans.strInvDepNumber, tblCustTrans.bitIsForeign, 
	 tblCustTrans.strCurrency, tblCustTrans.decExchange) Z LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID 
	 LEFT JOIN tblOrderDoc ON Z.strInvDocID = tblOrderDoc.strOrdDocID WHERE (Z.intPaymentPlan = 0 OR Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%'))  AND Z.strCustName = @SQstrCustName  
     ORDER BY DocDate DESC  
    
  end  
  
   
 else if(@Type =2 and @VendorNameLength<0 and @SelectedSort = 'Date')  
     begin  

     SELECT Z.strCustName as CuVeNumber, Z.strCustDesc as CuVeName, Z.dteJournalDate as DocDate, ISNULL(Z.strInvDocID,'') AS InvDocID, Z.strInvDepNumber as Reference, Z.decAmount as OriginalAmount, Z.bitIsForeign as IsForeign , Z.decAmountF as ForeignAmount, Z.strCurrency as Currency, Z.decExchange as Exchange FROM (SELECT tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END AS strInvDocID, tblCustTrans
    .strInvDepNumber, SUM(tblCustTransDT.decAmount) AS decAmount, tblCustTrans.bitIsForeign, SUM(tblCustTransDT.decAmountF) AS decAmountF, tblCustTrans.strCurrency, tblCustTrans.decExchange , ISNULL((SELECT COUNT(strInvDocID) FROM tblPaymentPlan WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID),0) AS intPaymentPlan FROM tblCustTrans 
     INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
     INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName WHERE (tblCustTrans.strCurrency = @SQCurrency) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTrans.bitSettled = 0) 
     GROUP BY tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, tblCustTrans.strInvDocID, tblCustTrans.strSoNumber, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE 
     tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END, tblCustTrans.strInvDepNumber, tblCustTrans.bitIsForeign, tblCustTrans.strCurrency, tblCustTrans.decExchange) Z LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID 
	 LEFT JOIN tblOrderDoc ON Z.strInvDocID = tblOrderDoc.strOrdDocID WHERE (Z.intPaymentPlan = 0 OR Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%'))  
     ORDER BY DocDate DESC  
    
  end  
  
  
 else if(@Type =2 and @VendorNameLength>0 and @SelectedSort = 'Document')  
    begin  
   
   SELECT Z.strCustName as CuVeNumber, Z.strCustDesc as CuVeName, Z.dteJournalDate as DocDate, ISNULL(Z.strInvDocID,'') AS InvDocID, Z.strInvDepNumber as Reference, Z.decAmount as OriginalAmount, Z.bitIsForeign as IsForeign , Z.decAmountF as ForeignAmount, Z.strCurrency as Currency, Z.decExchange as Exchange FROM (SELECT tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END AS strInvDocID, tblCustTrans.strInvDepNumber, SUM(tblCustTransDT.decAmount) AS decAmount, tblCustTrans.bitIsForeign, SUM(tblCustTransDT.decAmountF) AS decAmountF, tblCustTrans.strCurrency, tblCustTrans.decExchange , ISNULL((SELECT COUNT(strInvDocID) FROM tblPaymentPlan WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID),0) AS intPaymentPlan FROM tblCustTrans 
   INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
   INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName WHERE (tblCustTrans.strCurrency = @SQCurrency) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTrans.bitSettled = 0) 
   GROUP BY tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, tblCustTrans.strInvDocID, tblCustTrans.strSoNumber, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE 
   tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END, tblCustTrans.strInvDepNumber, tblCustTrans.bitIsForeign, tblCustTrans.strCurrency, tblCustTrans.decExchange) Z LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID 
   LEFT JOIN tblOrderDoc ON Z.strInvDocID = tblOrderDoc.strOrdDocID WHERE (Z.intPaymentPlan = 0 OR Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%'))  
   AND Z.strCustName = @SQstrCustName  
   ORDER BY InvDocID DESC  
  
    end  
  
 else if(@Type =2 and @VendorNameLength<0 and @SelectedSort = 'Document')  
     begin  
  
   SELECT Z.strCustName as CuVeNumber, Z.strCustDesc as CuVeName, Z.dteJournalDate as DocDate, ISNULL(Z.strInvDocID,'') AS InvDocID, Z.strInvDepNumber as Reference, Z.decAmount as OriginalAmount, Z.bitIsForeign as IsForeign , Z.decAmountF as ForeignAmount, Z.strCurrency as Currency, Z.decExchange as Exchange FROM (SELECT tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END AS strInvDocID, tblCustTrans.strInvDepNumber, SUM(tblCustTransDT.decAmount) AS decAmount, tblCustTrans.bitIsForeign, SUM(tblCustTransDT.decAmountF) AS decAmountF, tblCustTrans.strCurrency, tblCustTrans.decExchange , ISNULL((SELECT COUNT(strInvDocID) FROM tblPaymentPlan WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID),0) AS intPaymentPlan FROM tblCustTrans 
   INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
   INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName WHERE (tblCustTrans.strCurrency = @SQCurrency) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTrans.bitSettled = 0) GROUP BY tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, tblCustTrans.strInvDocID, tblCustTrans.strSoNumber, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE 
   tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END, tblCustTrans.strInvDepNumber, tblCustTrans.bitIsForeign, tblCustTrans.strCurrency, tblCustTrans.decExchange) Z LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID 
   LEFT JOIN tblOrderDoc ON Z.strInvDocID = tblOrderDoc.strOrdDocID WHERE (Z.intPaymentPlan = 0 OR Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%'))  
   ORDER BY InvDocID DESC  
  
  end  
  
 else if(@Type =2 and @VendorNameLength>0 and @SelectedSort = 'Reference')  
    begin  

  SELECT Z.strCustName as CuVeNumber, Z.strCustDesc as CuVeName, Z.dteJournalDate as DocDate, ISNULL(Z.strInvDocID,'') AS InvDocID, Z.strInvDepNumber as Reference, Z.decAmount as OriginalAmount, Z.bitIsForeign as IsForeign , Z.decAmountF as ForeignAmount, Z.strCurrency as Currency, Z.decExchange as Exchange FROM (SELECT tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END AS strInvDocID, tblCustTrans.strInvDepNumber, SUM(tblCustTransDT.decAmount) AS decAmount, tblCustTrans.bitIsForeign, SUM(tblCustTransDT.decAmountF) AS decAmountF, tblCustTrans.strCurrency, tblCustTrans.decExchange , ISNULL((SELECT COUNT(strInvDocID) FROM tblPaymentPlan WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID),0) AS intPaymentPlan FROM tblCustTrans 
  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
  INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName WHERE (tblCustTrans.strCurrency = @SQCurrency) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTrans.bitSettled = 0) GROUP BY tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, tblCustTrans.strInvDocID, tblCustTrans.strSoNumber, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE 
  tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END, tblCustTrans.strInvDepNumber, tblCustTrans.bitIsForeign, tblCustTrans.strCurrency, tblCustTrans.decExchange) Z LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID 
  LEFT JOIN tblOrderDoc ON Z.strInvDocID = tblOrderDoc.strOrdDocID WHERE (Z.intPaymentPlan = 0 OR Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%'))  
  AND Z.strCustName = @SQstrCustName  
  ORDER BY strInvDepNumber ASC  
  
    end  
  
 else if(@Type =2 and @VendorNameLength<0 and @SelectedSort = 'Reference')  
     begin  
  
  SELECT Z.strCustName as CuVeNumber, Z.strCustDesc as CuVeName, Z.dteJournalDate as DocDate, ISNULL(Z.strInvDocID,'') AS InvDocID, Z.strInvDepNumber as Reference, Z.decAmount as OriginalAmount, Z.bitIsForeign as IsForeign , Z.decAmountF as ForeignAmount, Z.strCurrency as Currency, Z.decExchange as Exchange FROM (SELECT tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END AS strInvDocID, tblCustTrans.strInvDepNumber, SUM(tblCustTransDT.decAmount) AS decAmount, tblCustTrans.bitIsForeign, SUM(tblCustTransDT.decAmountF) AS decAmountF, tblCustTrans.strCurrency, tblCustTrans.decExchange , ISNULL((SELECT COUNT(strInvDocID) FROM tblPaymentPlan WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID),0) AS intPaymentPlan FROM tblCustTrans 
  INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
  INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName WHERE 
  (tblCustTrans.strCurrency = @SQCurrency) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTrans.bitSettled = 0) GROUP BY tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, tblCustTrans.strInvDocID, tblCustTrans.strSoNumber, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE 
  tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END, tblCustTrans.strInvDepNumber, tblCustTrans.bitIsForeign, tblCustTrans.strCurrency, tblCustTrans.decExchange) Z 
  LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID 
  LEFT JOIN tblOrderDoc ON Z.strInvDocID = tblOrderDoc.strOrdDocID WHERE (Z.intPaymentPlan = 0 OR Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%'))  
  ORDER BY strInvDepNumber ASC  
  
  end  
  
 else if(@Type =2 and @VendorNameLength>0 and @SelectedSort = 'Amount')  
    begin  
   
    SELECT Z.strCustName as CuVeNumber, Z.strCustDesc as CuVeName, Z.dteJournalDate as DocDate, ISNULL(Z.strInvDocID,'') AS InvDocID, Z.strInvDepNumber as Reference, Z.decAmount as OriginalAmount, Z.bitIsForeign as IsForeign , Z.decAmountF as ForeignAmount, Z.strCurrency as Currency, Z.decExchange as Exchange FROM (SELECT tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END AS strInvDocID, tblCustTrans.strInvDepNumber, SUM(tblCustTransDT.decAmount) AS decAmount, tblCustTrans.bitIsForeign, SUM(tblCustTransDT.decAmountF) AS decAmountF, tblCustTrans.strCurrency, tblCustTrans.decExchange , ISNULL((SELECT COUNT(strInvDocID) FROM tblPaymentPlan WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID),0) AS intPaymentPlan FROM tblCustTrans 
   INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
   INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName WHERE (tblCustTrans.strCurrency = @SQCurrency) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTrans.bitSettled = 0) GROUP BY tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, tblCustTrans.strInvDocID, tblCustTrans.strSoNumber, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END, tblCustTrans.strInvDepNumber, tblCustTrans.bitIsForeign, tblCustTrans.strCurrency, tblCustTrans.decExchange) Z LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID 
   LEFT JOIN tblOrderDoc ON Z.strInvDocID = tblOrderDoc.strOrdDocID WHERE (Z.intPaymentPlan = 0 OR Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%'))  
   AND Z.strCustName = @SQstrCustName  
    ORDER BY decAmount DESC  
  
    end  
  
 else if(@Type =2 and @VendorNameLength<0 and @SelectedSort = 'Amount')  
     begin  
  
     SELECT Z.strCustName as CuVeNumber, Z.strCustDesc as CuVeName, Z.dteJournalDate as DocDate, ISNULL(Z.strInvDocID,'') AS InvDocID, Z.strInvDepNumber as Reference, Z.decAmount as OriginalAmount, Z.bitIsForeign as IsForeign , Z.decAmountF as ForeignAmount, Z.strCurrency as Currency, Z.decExchange as Exchange FROM (SELECT tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END AS strInvDocID, tblCustTrans.strInvDepNumber, SUM(tblCustTransDT.decAmount) AS decAmount, tblCustTrans.bitIsForeign, SUM(tblCustTransDT.decAmountF) AS decAmountF, tblCustTrans.strCurrency, tblCustTrans.decExchange , ISNULL((SELECT COUNT(strInvDocID) 
	 FROM tblPaymentPlan WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID),0) AS intPaymentPlan FROM tblCustTrans 
	 INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
	 INNER JOIN tblCustomers ON tblCustTrans.strCustName = tblCustomers.strCustName WHERE (tblCustTrans.strCurrency = @SQCurrency) AND (tblCustTransDT.bitReversed = 0) AND (tblCustTrans.bitSettled = 0) GROUP BY tblCustTrans.strCustName, tblCustomers.strCustDesc, tblCustTrans.dteJournalDate, tblCustTrans.strInvDocID, tblCustTrans.strSoNumber, CASE WHEN ISNULL(tblCustTrans.strJEDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strInvDocID, '') = '' THEN CASE WHEN ISNULL(tblCustTrans.strSoNumber, '') = '' THEN CAST(tblCustTrans.lngCustTrID AS NVARCHAR(50)) ELSE tblCustTrans.strSoNumber END ELSE tblCustTrans.strInvDocID END ELSE tblCustTrans.strJEDocID END, tblCustTrans.strInvDepNumber, tblCustTrans.bitIsForeign, tblCustTrans.strCurrency, tblCustTrans.decExchange) Z LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID 
	 LEFT JOIN tblOrderDoc ON Z.strInvDocID = tblOrderDoc.strOrdDocID WHERE (Z.intPaymentPlan = 0 OR Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%'))  
     ORDER BY decAmount DESC  
  
  end     
 End

GO

----------------------------------------------------
create procedure DeleteJornalEntryDocREForReName
@REName as nvarchar(100)
as
begin
DELETE FROM tblJournalEntryDocRE WHERE strREName = @REName
end
go

----------------------------------------------------
create procedure [dbo].[GetDataFromAccountsForGLContaAccount]  
(  
@GLNumber as nvarchar(30),
@IsAllowLinkedJE bit
)  
AS  
BEGIN  
IF(@IsAllowLinkedJE = 0)
BEGIN
SELECT intGLNumber as GLNumber, strDesc as [Desc], strCurrency as Currency 
FROM tblAccounts 
WHERE bitInactive = 0 AND bitLinkCEarnings = 0 AND bitLinkAR = 0 AND bitLinkAP = 0 AND bitLinkDeposit = 0 AND bitLinkPrePay = 0 AND intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets) AND bitInactive = 0 AND (intGroupCode = 1 OR intGroupCode = 2)
AND intGLNumber = @GLNumber AND tblAccounts.bitLinkAPVendMast = 0 AND tblAccounts.bitLinkPrepayVendMast = 0 AND tblAccounts.bitLinkARCustMast = 0 AND tblAccounts.bitLinkDepositCustMast = 0
END
ELSE
BEGIN
SELECT intGLNumber as GLNumber, strDesc as [Desc], strCurrency as Currency FROM tblAccounts WHERE bitInactive = 0 AND (intAccClass <> 28) AND (intGroupCode = 1 OR intGroupCode = 2) AND intGLNumber = @GLNumber
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetDataFromAccounts]  
(  
@blnAllowLinkedJE bit,
@SQGLNumber nvarchar(100),
@SQHomeCurrency nvarchar(100),  
@SQForeignCurrency nvarchar(100)
)  
AS  
BEGIN  
IF(@blnAllowLinkedJE = 0)
BEGIN
SELECT intGLNumber as GLNumber
,strDesc as [Desc]
FROM tblAccounts
WHERE bitInactive = 0
AND bitLinkCEarnings = 0
AND bitLinkAR = 0
AND bitLinkAP = 0
AND bitLinkDeposit = 0
AND bitLinkPrePay = 0
AND intGLNumber NOT IN (
SELECT intGLAsset
FROM tblAccountSets
)
AND bitInactive = 0
AND (
intGroupCode = 1
OR intGroupCode = 2
)
AND intGLNumber = @SQGLNumber
AND (
strCurrency = @SQHomeCurrency
OR strCurrency = @SQForeignCurrency
)
AND tblAccounts.bitLinkAPVendMast = 0
AND tblAccounts.bitLinkPrepayVendMast = 0
AND tblAccounts.bitLinkARCustMast = 0
AND tblAccounts.bitLinkDepositCustMast = 0
END
ELSE
BEGIN
SELECT intGLNumber as GLNumber
,strDesc as [Desc]
FROM tblAccounts
WHERE bitInactive = 0
AND (intAccClass <> 28)
AND (
intGroupCode = 1
OR intGroupCode = 2
)
AND intGLNumber = @SQGLNumber
AND (
strCurrency = @SQHomeCurrency
OR strCurrency = @SQForeignCurrency
)
END
END 
GO

----------------------------------------------------
create procedure GetJournalEntryDocREDetailsForJE
@ReName as nvarchar(50)
as
begin
SELECT 
strREName as ReName
, dteLastProcDate as LastProDate
,strComment as Comment
,strCurrency as Currency
,bitPosted as IsPosted 
FROM tblJournalEntryDocRE 
WHERE strREName = @ReName
end
go

----------------------------------------------------
create procedure InsertJournalEntryDocREDT
@Name as nvarchar(50)
,@Module as tinyint
,@GEDept as int
,@CuVeGeID as nvarchar(50)
,@CuVeGeDesc as nvarchar(200)
,@LineReference as nvarchar(200)
,@GLNumber as nvarchar(30)
,@Dept as int
,@Desc as nvarchar(200)
,@TaxType as int
,@LineTotExc as money
,@LineTaxAmt as money
,@LineTotInc as money
,@TaxCode as nvarchar(2)
,@TaxObj as image=null
,@Formula as nvarchar(100)
,@Currency as nvarchar(3)
,@Exchange as decimal
,@DebitsF as money
,@CreditsF as money
,@IsForeignAcct as bit
,@IsVerified as bit
,@LineNo as int
,@Debits as money
,@Credits as money
,@LineComment as nvarchar(200)
as
begin
INSERT INTO tblJournalEntryDocREDT 
VALUES 
(
@Name
,@Module
,@CuVeGeID
,@GEDept
,@CuVeGeDesc
,@LineReference
,@LineComment
,@Debits
,@Credits
,@GLNumber
,@Dept
,@Desc
,@TaxType
,@LineTotExc
,@LineTaxAmt
,@LineTotInc
,@TaxCode
,@TaxObj
,@Formula
,@Currency
,@Exchange
,@IsForeignAcct
,@DebitsF
,@CreditsF
,@IsVerified
,@LineNo
)
end
go

----------------------------------------------------
create procedure InsertJournalEntryDocRE
@Name as nvarchar(50)
,@Comment as nvarchar(200)
,@Currency as nvarchar(3)
,@IsPosted as bit
as
begin
INSERT INTO tblJournalEntryDocRE VALUES (@Name,NULL,@Comment,@Currency,@IsPosted)
end
go

----------------------------------------------------
create procedure DeleteJournalEntryDocRE
@REName as nvarchar(50)
as
begin
DELETE FROM tblJournalEntryDocRE WHERE strREName = @REName
end
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DocumentsDelete]
(
@DocumentID bigint
)
AS
BEGIN
SET NOCOUNT ON
DELETE FROM [tblDocuments] WHERE [lngDocumentID] = @DocumentID
END
GO

----------------------------------------------------
create procedure GetCoOptJournalDetails
as
begin 
SELECT bitPCJournal as IsPCJournal
, bitJELinked as IsJELinked
, bitProjJournal as IsProjJournal
, bitPCAllocPerc as IsPCAllocPerc
FROM tblCoOpts
end
go

----------------------------------------------------
create procedure GetTenderTypeDetails
as
begin
SELECT strName as Name
, bitAccount as IsAccount
FROM tblTenderTypes 
WHERE bitInActive = 0 
ORDER BY intDisplayOrder, strName
end
go

----------------------------------------------------
create procedure GetTaxCodeForDefCBReceipts
as
begin
SELECT strTaxCode  FROM tblTaxCodes WHERE bitDefCBReceipts = 1
end
go

----------------------------------------------------
create procedure GetTopGAAPStoreSetupDetails
as
begin
select TOP 1 * from tblGAAPStoreSetup where IsInactive = 0
end
go

----------------------------------------------------
create procedure GetMinMaxJEDocID
@DocNumber AS VARCHAR(50)
,@IsPrev AS BIT
AS
BEGIN
IF (@IsPrev = 1)
BEGIN
SELECT MAX(strJEDocID) FROM tblJournalEntryDoc WHERE (strJEDocID < @DocNumber) AND (lngJourID <> 0)
END
ELSE
BEGIN
SELECT MIN(strJEDocID) FROM tblJournalEntryDoc WHERE (strJEDocID > @DocNumber) AND (lngJourID <> 0)
END
END
GO

----------------------------------------------------
create procedure GetVendTransDetails
@DocNumber as nvarchar(50),
@JournalID as bigint,
@IsVerify as bit
as
begin
if(@IsVerify=0)
begin
SELECT tblVendPay.lngJourID as JourID
, tblVendPay.strSource as [Source]
FROM tblVendTrans 
INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID 
INNER JOIN tblVendPay ON tblVendTransDT.lngVendPayID = tblVendPay.lngVendPayID 
WHERE (tblVendTrans.strJEDocID = @DocNumber) AND (tblVendPay.bitReversed = 0) AND (tblVendTransDT.bitReversed = 0) AND (tblVendPay.lngJourID <> @JournalID)
end
else
begin
SELECT tblVendPay.lngJourID as JourID FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID 
INNER JOIN tblVendPay ON tblVendTransDT.lngVendPayID = tblVendPay.lngVendPayID
WHERE (tblVendTrans.strJEDocID = @DocNumber) AND (tblVendTransDT.bitReversed = 1) AND (tblVendPay.lngJourID = @JournalID)
end
end
go

----------------------------------------------------
create procedure GetCustTransDetails
@DocNumber as nvarchar(50),
@JournalID as bigint,
@IsVerify as bit
as
begin
if(@IsVerify=0)
begin
SELECT tblCustPay.lngJourID as JourID
, tblCustPay.strSource as [Source]
FROM tblCustTrans 
INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID 
INNER JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID 
WHERE (tblCustTrans.strJEDocID = @DocNumber) AND (tblCustPay.bitReversed = 0) AND (tblCustTransDT.bitReversed = 0) AND (tblCustPay.lngJourID <> @JournalID)
end
else
begin
SELECT tblCustPay.lngJourID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID INNER JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID 
WHERE (tblCustTrans.strJEDocID = @DocNumber) AND (tblCustTransDT.bitReversed = 1) AND (tblCustPay.lngJourID = @JournalID)
end
end
go

----------------------------------------------------
create procedure GetJournalEntryDocREDT
@ReName as nvarchar(50)
as
begin
SELECT strREName as ReName
,intModule as Module
,strCuVeGeID as CuVeGeID
,isnull(intGeDept,0)as GeDept
,strCuVeGeDesc as CuVeGeDesc
,strLineReference AS LineReference
,strLineComment AS LineComment
,decDebits as DebitValue
,decCredits as CreditValue 
,intGLNumber as GLNumber
,isnull(intDept,0) as Dept
,strDesc as [Description]
,intTaxType as TaxType
,decLineTotExc as LineTotExc
,decLineTaxAmt as LineTaxAmt
,decLineTotInc as LineTotInc
,strTaxCode as TaxCode
,imgTaxObj as TaxObj
,strFormula as Formula
,strCurrency as Currency
,decExchange as ExchangeValue
,bitForeignAcct as IsForeignAcct
,decDebitsF as DebitsF
,decCreditsF as CreditsF
,bitVerified as IsVerified
,isnull(intLineNo,0) as [LineNo]
,(Select Count(*) From tblDocuments Where tblJournalEntryDocREDT.strREName = tblDocuments.strDocumentNumber AND bitItemLine = 1 AND tblDocuments.intLineNo = tblJournalEntryDocREDT.intLineNo AND bitPosted=0) as DocCount
FROM tblJournalEntryDocREDT
WHERE strREName = @ReName
end
go

----------------------------------------------------
create procedure UpdateJournal
@JournalID as bigint,
@Comment as nvarchar(800),
@IsReverse as bit,
@ReversingDate as smalldatetime
as
begin
UPDATE tblJournal SET strComment = @Comment, bitIstobeReversed=@IsReverse, dteReverseDate=@ReversingDate Where lngJourId = @JournalID
UPDATE tblJournalEntryDoc SET strComment = @Comment, bitIstobeReversed=@IsReverse, dteReverseDate=@ReversingDate Where lngJourId = @JournalID
end
go

----------------------------------------------------
create procedure GetGLNumberFromAccount
@Type as varchar(5)
as
begin
if(@Type = 'AP')
begin
SELECT intGLNumber FROM tblAccounts WHERE (bitIsLinkedAccount = 1) AND (bitLinkAP = 1)
end
else if(@Type='AR')
begin
SELECT intGLNumber FROM tblAccounts WHERE (bitIsLinkedAccount = 1) AND (bitLinkAR = 1)
end
end
GO
----------------------------------------------------
create procedure GetJournalEntryDocDetailsForDocID
@DocNumber as nvarchar(100)
as
begin
SELECT strJEDocID as JEDocID
,lngJourID as JourID
,dteSystemDate as SystemDate
,dteJournalDate as JournalDate
,strUserName as UserName
,strComment as Comment
,strCurrency as Currency
,decExchange as ExchangeValue
,bitIsTobeReversed as IsTobeReversed
,dteReverseDate as ReverseDate
,bitIsReversed as IsReversed
FROM tblJournalEntryDoc 
WHERE strJEDocID = @DocNumber
end
go

----------------------------------------------------
create procedure JournalEntryDocDTDetailsForDocID
@DocumentNumber as nvarchar(100)
as
begin
SELECT tblJournalEntryDocDT.strJEDocID as JEDocID
,tblJournalEntryDocDT.intLineNo as [LineNo]
,tblJournalEntryDocDT.intModule as Module
,tblJournalEntryDocDT.strCuVeGeID as CuVeGeID
,isnull(tblJournalEntryDocDT.intGeDept,0)  as GeDept 
,tblJournalEntryDocDT.strCuVeGeDesc as CuVeGeDesc
,tblJournalEntryDocDT.strLineReference as LineReference
,tblJournalEntryDocDT.strLineComment as LineComment
,tblJournalEntryDocDT.strSource as [Source]
,tblJournalEntryDocDT.decDebits as DebitValue
,tblJournalEntryDocDT.decCredits as CreditValue
,tblJournalEntryDocDT.intGLNumber as GLNumber
,isnull(tblJournalEntryDocDT.intDept,0) as Dept
,tblJournalEntryDocDT.strDesc as [Description]
,tblJournalEntryDocDT.intTaxType as TaxType
,tblJournalEntryDocDT.decLineTotExc as LineTotExc
,tblJournalEntryDocDT.decLineTaxAmt as LineTaxAmt
,tblJournalEntryDocDT.decLineTotInc as LineTotInc
,tblJournalEntryDocDT.strTaxCode as TaxCode
,tblJournalEntryDocDT.imgTaxObj as TaxObj
,tblJournalEntryDocDT.strCurrency as Currency
,tblJournalEntryDocDT.decExchange as ExchangeValue
,tblJournalEntryDocDT.bitIsForeign as IsForeignAcct
,tblJournalEntryDocDT.decDebitsF as DebitsF
,tblJournalEntryDocDT.decCreditsF as CreditsF
,tblJournalEntryDocDT.decLineTotExcF as LineTotExcF
,tblJournalEntryDocDT.decLineTaxAmtF as LineTaxAmtF
,tblJournalEntryDocDT.decLineTotIncF as LineTotIncF
,tblJournalEntryDocDT.lngID as JourID
,tblJournalEntryDocDT.strFormula as Formula
,tblJournalEntryDocDT.bitVerified as IsVerified
, ISNULL(tblJournalEntryDocDTPrj.strProjNumber,'') as ProjNumber
,(Select Count(*) From tblDocuments Where tblJournalEntryDocDT.strJEDocID = tblDocuments.strDocumentNumber AND bitItemLine = 1 AND tblDocuments.intLineNo = tblJournalEntryDocDT.intLineNo) as DocCount
FROM tblJournalEntryDocDT 
LEFT JOIN tblJournalEntryDocDTPrj ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDocDTPrj.strJEDocID AND tblJournalEntryDocDT.intLineNo = tblJournalEntryDocDTPrj.intLineNo AND tblJournalEntryDocDT.intModule = tblJournalEntryDocDTPrj.intModule
WHERE tblJournalEntryDocDT.strJEDocID = @DocumentNumber 
ORDER BY [LineNo]
end 
go

----------------------------------------------------
Create procedure GetJournalEntryDocDTAppliedDetails
@JEDocID as nvarchar(50),
@LineNo as int
as
begin
SELECT strCuVeID as CuVeNumber
, strCuVeDesc as CuVenDesc
, dteJournalDate as DocDate
, strSource as [Source]
, strReference as Reference
, decDebits as Debit
, decCredits as Credit
, strCurrency as Currency
, decExchange as Exchange
, bitIsForeign as IsForeign
, decDebitsF as DebitsF
, decCreditsF as CreditsF
FROM tblJournalEntryDocDTApplied 
WHERE strJEDocID = @JEDocID AND intLineNo = @LineNo ORDER BY lngID
end 
go

----------------------------------------------------
create procedure GetVendorDataByVendors
@Vendor as nvarchar(50)
as
begin
SELECT strVendName as VendorName
, strVendDesc as VendDesc
, strCurrency as Currency
FROM tblVendors 
WHERE bitInactive = 0 AND strVendName = @Vendor
end
go

----------------------------------------------------
create procedure GetCuVeGeID
@DocumentId as nvarchar(50),
@JournalEntryType as int
as
begin
SELECT intModule as Module
, strCuVeGeID as CuVeGeID
FROM tblJournalEntryDocDT 
WHERE strJEDocID = @DocumentId AND intModule != @JournalEntryType
end 
go

----------------------------------------------------
create procedure GetJournalEntDetails
@DocumentId as nvarchar(50),
@JournalId as bigint
as
begin
select strCurrency as Currency, decExchange as ExchangeValue, bitForeignAcct as IsForeignAcct 
from tblJournalEnt 
where lngJourID =  (select lngJourID from tblJournal where strSource = @DocumentId and lngJourID = @JournalId) and intLineNum = 1
end
GO

----------------------------------------------------
create procedure GetCustVendTrID
@IsVend as bit
as
begin
if(@IsVend =1)
begin
SELECT ISNULL(MAX(lngVendTrID),0) + 1 FROM tblVendTrans
end
else
begin
SELECT ISNULL(MAX(lngCustTrID),0) + 1 FROM tblCustTrans
end
end
go

----------------------------------------------------
create procedure InsertJournalEntryDocDTPrj
@JEDocID as nvarchar(50),
@LineNo as int,
@Module as tinyint,
@GLNumber as nvarchar(50),
@ProjNumber as nvarchar(50)
as
begin
INSERT INTO tblJournalEntryDocDTPrj
(strJEDocID
,intLineNo
,intModule
,intGLNumber
,strProjNumber
,strStage)
VALUES 
(
@JEDocID 
,@LineNo 
,@Module
,@GLNumber
,@ProjNumber
,'')
end
go

----------------------------------------------------
create procedure InsertJournalEntryDocDT
@JEDocID as nvarchar(50)
,@LineNo as int
,@Module as tinyint
,@GeDept as int
,@CuVeGeDesc as nvarchar(200)
,@CuVeGeID as nvarchar(50)
,@LineReference as nvarchar(200)
,@LineComment as nvarchar(200)
,@Source as nvarchar(100)
,@GLNumber as nvarchar(30)
,@Dept as int
,@Desc as nvarchar(200)
,@TaxType as int
,@Currency as nvarchar(3)
,@IsForeign as bit
,@Exchange as money
,@LineTotExc as money
,@LineTaxAmt as money
,@LineTotInc as money
,@TaxCode as nvarchar(2)
,@TaxObj as image
,@DebitsF as money
,@CreditsF as money
,@LineTotExcF as money
,@LineTaxAmtF as money
,@LineTotIncF as money
,@Debits as money
,@Credits as money
,@IsVerified as bit
,@Formula as nvarchar(100)
as
begin
INSERT INTO tblJournalEntryDocDT 
(
strJEDocID
,intLineNo
,intModule
,strCuVeGeID
,intGeDept
,strCuVeGeDesc
,strLineReference
,strLineComment
,strSource
,decDebits
,decCredits
,intGLNumber
,intDept
,strDesc
,intTaxType
,decLineTotExc
,decLineTaxAmt
,decLineTotInc
,strTaxCode
,imgTaxObj
,strCurrency
,decExchange
,bitIsForeign
,decDebitsF
,decCreditsF
,decLineTotExcF
,decLineTaxAmtF
,decLineTotIncF
,strFormula
,bitVerified
) 
VALUES 
(
@JEDocID
,@LineNo
,@Module
,@CuVeGeID
,@GeDept
,@CuVeGeDesc
,@LineReference
,@LineComment
,@Source
,@Debits
,@Credits
,@GLNumber
,@Dept
,@Desc
,@TaxType
,@LineTotExc
,@LineTaxAmt
,@LineTotInc
,@TaxCode
,@TaxObj
,@Currency
,@Exchange
,@IsForeign
,@DebitsF
,@CreditsF
,@LineTotExcF
,@LineTaxAmtF
,@LineTotIncF
,@Formula
,@IsVerified
)
end
go

----------------------------------------------------
CREATE PROCEDURE UpdateBitSettledOnVendTransForJournalEntry
AS
BEGIN
UPDATE tblVendTrans SET bitSettled = 1 WHERE bitSettled = 0 AND lngVendTrID IN (SELECT lngVendTrID FROM tblVendTransDT WHERE bitReversed = 0 GROUP BY lngVendTrID HAVING SUM(decAmount) = 0 AND SUM(decAmountF) = 0)
UPDATE tblVendTrans SET bitSettled = 0 WHERE bitSettled = 1 AND lngVendTrID IN (SELECT lngVendTrID FROM tblVendTransDT WHERE bitReversed = 0 GROUP BY lngVendTrID HAVING SUM(decAmount) <> 0 OR SUM(decAmountF) <> 0)
END
GO

----------------------------------------------------
CREATE PROCEDURE InsertCustTransDT
@JournalDate as datetime
,@CustTrID as bigint
,@CustPayID as bigint
,@AmtOwingAtTime as money
,@AmtOwingAtTimeF as money
,@InvAmount as money
,@InvAmountF as money
,@IsForeign as bit
,@IsReversed bit
,@TransType as tinyint
AS
BEGIN
INSERT INTO tblCustTransDT (dteJournalDate,lngCustTrID,lngCustPayID,decAmount,intTransType,decAmtOwingAtTime,bitReversed,dteIntDate,decAmountF,decAmtOwingAtTimeF,bitIsForeign) 
VALUES (@JournalDate,@CustTrID,@CustPayID,@InvAmount,@TransType,@AmtOwingAtTime,@IsReversed,NULL,@InvAmountF,@AmtOwingAtTimeF,@IsForeign)
END
GO

----------------------------------------------------
CREATE PROCEDURE InsertCustTransAndCustTransDTForJE
@CustTrID as bigint
,@CustID as nvarchar(50)
,@SystemDate as datetime
,@JournalDate as datetime
,@UserName as nvarchar(20)
,@InvDocID as nvarchar(50)
,@InvDepNumber as nvarchar(50)
,@SoNumber as nvarchar(50)
,@TransType as tinyint
,@TransTypeDT as tinyint
,@InvAmount as money
,@InvAmountF as money
,@Currency as nvarchar(3)
,@IsForeign as bit
,@Exchange as decimal
,@IsDocReRated as bit
,@ReRated as datetime
,@ReRateCumltveValue as money
,@IsSettled as bit
,@DiscAvail as money
,@DiscAvailF as money
,@DiscExpires as datetime
,@DueDate as datetime
,@JEDocID as nvarchar(50)
,@OrdDocID as nvarchar(50)
,@CustPayID as bigint
,@AmtOwingAtTime as money
,@AmtOwingAtTimeF as money
,@IsReversed bit
,@IntDate datetime
AS
BEGIN
INSERT INTO tblCustTrans 
VALUES 
(
@CustTrID
,@CustID
,@SystemDate
,@JournalDate
,@UserName
,@InvDocID
,@InvDepNumber
,@SoNumber
,@TransType
,@InvAmount
,@InvAmountF
,@Currency
,@IsForeign
,@Exchange
,@IsDocReRated
,@ReRated
,@ReRateCumltveValue
,@IsSettled
,@DiscAvail
,@DiscAvailF
,@DiscExpires
,@DueDate
,@JEDocID
,@OrdDocID
)
INSERT INTO tblCustTransDT 
(
dteJournalDate
,lngCustTrID
,lngCustPayID
,decAmount
,intTransType
,decAmtOwingAtTime
,bitReversed
,dteIntDate
,decAmountF
,decAmtOwingAtTimeF
,bitIsForeign
)
VALUES 
(
@JournalDate
,@CustTrID
,@CustPayID
,@InvAmount
,@TransTypeDT
,@AmtOwingAtTime
,@IsReversed
,@IntDate
,@InvAmountF
,@AmtOwingAtTimeF
,@IsForeign
)
END
GO

----------------------------------------------------
CREATE PROCEDURE UpdateLastRCID
@RCNumber BIGINT 
AS
BEGIN
UPDATE tblLastIDs SET lngRCNumber = @RCNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE InsertCustPay
@CustPayID as bigint
,@SystemDate as datetime
,@JournalDate as datetime
,@UserName as nvarchar(20)
,@JourID as bigint
,@CustID as nvarchar(50)
,@Source as nvarchar(100)
,@BankAcct as nvarchar(30)
,@Amount as money
,@Reversed as bit
,@Reversal as bit
,@Comment as nvarchar(200)
,@PayBy as int
,@DepositF as money
,@FromInvPaymt as bit
,@BankCurrency as nvarchar(3)
,@PaidBy as nvarchar(20)
,@Dept as int
,@Currency as nvarchar(3)
,@IsForeign as bit
,@Exchange as decimal
,@AmountF as money
AS
BEGIN
INSERT INTO tblCustPay 
VALUES 
(
@CustPayID
, @SystemDate
, @JournalDate
, @UserName
, @JourID
, @CustID
, @Source
, @BankAcct
, @Amount
, @Reversed
, @Reversal
, @Comment
, @PayBy
, 0
, @Dept
,@Currency
,@IsForeign
,@Exchange
,@AmountF
,@DepositF
,@FromInvPaymt
,0
,1
,@BankCurrency
,@Amount
,0.0000
,NULL
,0
,0
,0
,@PaidBy
,0
)
END
GO

----------------------------------------------------
CREATE PROCEDURE UpdateCustomersForJournalEntry
@Customer as nvarchar(50)
,@CurrentYrStarts as datetime
AS
BEGIN
UPDATE tblCustomers SET decBalDue = 
(SELECT ISNULL(SUM(tblCustTransDT.decAmount),0) FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = @Customer AND tblCustTransDT.bitReversed = 0 AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))), decYTDPurch = (SELECT ISNULL(SUM(decTotal),0) FROM tblInvoiceDoc WHERE strCustName = @Customer AND bitHistoryTrans = 0 AND dteJournalDate >= @CurrentYrStarts), decBalDueF = (SELECT ISNULL(SUM(tblCustTransDT.decAmountF),0) FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = @Customer AND tblCustTransDT.bitReversed = 0 AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))), decYTDPurchF = (SELECT ISNULL(SUM(decTotalF),0) FROM tblInvoiceDoc WHERE strCustName = @Customer AND bitHistoryTrans = 0 AND dteJournalDate >= @CurrentYrStarts), dteUpdated = GetDate() 
WHERE strCustName = @Customer
END
GO

----------------------------------------------------
CREATE PROCEDURE UpdateBitSettledOnCustTransForJournalEntry
AS
BEGIN
UPDATE tblCustTrans SET bitSettled = 1 WHERE bitSettled = 0 AND lngCustTrID IN (SELECT lngCustTrID FROM tblCustTransDT WHERE bitReversed = 0 GROUP BY lngCustTrID HAVING SUM(decAmount) = 0 AND SUM(decAmountF) = 0)
UPDATE tblCustTrans SET bitSettled = 0 WHERE bitSettled = 1 AND lngCustTrID IN (SELECT lngCustTrID FROM tblCustTransDT WHERE bitReversed = 0 GROUP BY lngCustTrID HAVING SUM(decAmount) <> 0 OR SUM(decAmountF) <> 0)
END
GO

----------------------------------------------------
CREATE PROCEDURE UpdateJournalEntryDocRE
@ReName as nvarchar(50)
AS
BEGIN
UPDATE tblJournalEntryDocRE SET dteLastProcDate = GetDate() WHERE strREName = @ReName
END
GO

----------------------------------------------------
CREATE PROCEDURE UpdateJENumber
@JENumber as bigint
AS
BEGIN
UPDATE tblLastIDs SET lngJENumber = @JENumber
END
GO

----------------------------------------------------
CREATE PROCEDURE UpdateJournalAndJournalLy
@JournalID as bigint
, @IsCurrentYearBigger as bit
AS
BEGIN
if(@IsCurrentYearBigger=1)
begin
UPDATE tblJournalLY SET bitIsReversed = 1 WHERE lngJourId = @JournalID
end
else
begin
UPDATE tblJournal SET bitIsReversed = 1 WHERE lngJourId = @JournalID
end
END
GO

----------------------------------------------------
CREATE PROCEDURE UpdateJournalEntryDoc
@JournalNoOld as nvarchar(50)
AS
BEGIN
UPDATE tblJournalEntryDoc SET bitIsReversed = 1 WHERE strJEDocID = @JournalNoOld
END
GO

----------------------------------------------------
CREATE PROCEDURE InsertJournalEntryDocDTApplied
@JEDocID as nvarchar(50)
,@LineNo as int
,@Module as tinyint
,@CuVeID as nvarchar(50)
,@CuVeDesc as nvarchar(200)
,@JournalDate as datetime
,@Source as nvarchar(100)
,@Reference as nvarchar(200)
,@Currency as nvarchar(3)
,@Exchange as decimal
,@IsForeign as bit
,@Debits as money
,@Credits as money
,@DebitsF as money
,@CreditsF as money
AS
BEGIN
INSERT INTO tblJournalEntryDocDTApplied 
(
strJEDocID
,intLineNo
,intModule
,strCuVeID
,strCuVeDesc
,dteJournalDate
,strSource
,strReference
,decDebits
,decCredits
,strCurrency
,decExchange
,bitIsForeign
,decDebitsF
,decCreditsF
) 
VALUES 
(
@JEDocID
,@LineNo
,@Module
,@CuVeID
,@CuVeDesc
,@JournalDate
,@Source
,@Reference
,@Debits
,@Credits
,@Currency
,@Exchange
,@IsForeign
,@DebitsF
,@CreditsF
)
END
GO

----------------------------------------------------
CREATE PROCEDURE GetVendTransDoc
@DocID as nvarchar(100)
,@VendName as nvarchar(100)
AS
BEGIN
SELECT ISNULL(lngVendTrID,0) FROM tblVendTrans WHERE (strInvPDocID = @DocID OR strJEDocID = @DocID OR CAST(lngVendTrID AS nvarchar(50)) = @DocID) AND (strVendName = @VendName)
END
GO

----------------------------------------------------
CREATE PROCEDURE GetCustTransDoc
@DocID as nvarchar(100)
,@CustName as nvarchar(100)
AS
BEGIN
SELECT ISNULL(lngCustTrID,0) FROM tblCustTrans WHERE (strInvDocID = @DocID OR strJEDocID = @DocID OR CAST(lngCustTrID AS nvarchar(50)) = @DocID OR strSoNumber = @DocID) AND (strCustName = @CustName)
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetTaxNameByVendor] 
@SQVendName as nvarchar(50)
AS
BEGIN
SELECT strTaxName as TaxName FROM tblVendorEx WHERE strVendName = @SQVendName;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetTaxNameByCustomer] 
@SQCustName as nvarchar(50)
AS
BEGIN
SELECT strTaxName as TaxName FROM tblCustomerEx WHERE strCustName = @SQCustName;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetTaxDefData] 
@SQModuleAP as int,
@SQModuleAR as int,
@SQGLContrAccount as nvarchar(30)
AS
BEGIN
SELECT TOP 1 strTaxName as TaxName
,@SQModuleAP AS Module
FROM tblTaxDef
WHERE intPurchAcct = @SQGLContrAccount
UNION ALL
SELECT TOP 1 strTaxName as TaxName
,@SQModuleAR AS Module
FROM tblTaxDef
WHERE intSalesAcct = @SQGLContrAccount;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetTaxCodeExtDataList] 
@SQTaxDef as nvarchar(10),
@Included as bit
AS
BEGIN
if(@Included = 0)
SELECT tblTaxCodes.strTaxCode as TaxCode
,tblTaxCodes.strDescription as [Description]
FROM tblTaxCodeExt
INNER JOIN tblTaxCodes ON tblTaxCodeExt.strTaxCode = tblTaxCodes.strTaxCode
WHERE (
(tblTaxCodes.intAllowedJournals = 1)
OR (tblTaxCodes.intAllowedJournals = 0)
)
AND (tblTaxCodeExt.strTaxName = @SQTaxDef)
AND (tblTaxCodeExt.intStatus = 0);
else
SELECT tblTaxCodes.strTaxCode as TaxCode
,tblTaxCodes.strDescription as [Description]
FROM tblTaxCodeExt
INNER JOIN tblTaxCodes ON tblTaxCodeExt.strTaxCode = tblTaxCodes.strTaxCode
WHERE (
(tblTaxCodes.intAllowedJournals = 1)
OR (tblTaxCodes.intAllowedJournals = 0)
)
AND (tblTaxCodeExt.strTaxName = @SQTaxDef)
AND (tblTaxCodeExt.intStatus = 0)
AND (tblTaxCodeExt.bitIncluded) = 1;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetTaxCodeExtData]
@SQTaxDef as nvarchar(10),
@Included as bit
AS
BEGIN
if(@Included = 0)
SELECT tblTaxCodes.strTaxCode as TaxCode 
,tblTaxCodes.strDescription as [Description]
FROM tblTaxCodeExt
INNER JOIN tblTaxCodes ON tblTaxCodeExt.strTaxCode = tblTaxCodes.strTaxCode
WHERE (
(tblTaxCodes.intAllowedJournals = 2)
OR (tblTaxCodes.intAllowedJournals = 0)
)
AND (tblTaxCodeExt.strTaxName = @SQTaxDef)
AND (tblTaxCodeExt.intStatus = 0);
else
SELECT tblTaxCodes.strTaxCode as TaxCode 
,tblTaxCodes.strDescription as [Description]
FROM tblTaxCodeExt
INNER JOIN tblTaxCodes ON tblTaxCodeExt.strTaxCode = tblTaxCodes.strTaxCode
WHERE (
(tblTaxCodes.intAllowedJournals = 2)
OR (tblTaxCodes.intAllowedJournals = 0)
)
AND (tblTaxCodeExt.strTaxName = @SQTaxDef)
AND (tblTaxCodeExt.intStatus = 0)
AND (tblTaxCodeExt.bitIncluded) = 1;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetJournalEntryDocDTData] @SQDocID AS NVARCHAR(50)
AS
BEGIN
	SELECT strJEDocID AS JEDocID
		,intLineNo AS [LineNo]
		,intModule AS Module
		,strCuVeGeID AS CuVeGeID
		,ISNULL(intGeDept, 0) AS GeDept
		,strCuVeGeDesc AS CuVeGeDesc
		,strLineReference AS LineReference
		,strLineComment AS LineComment
		,strSource AS [Source]
		,decDebits AS DebitValue
		,decCredits AS CreditValue
		,intGLNumber AS GLNumber
		,ISNULL(intDept, 0) AS intDept
		,strDesc AS [Description]
		,intTaxType AS TaxType
		,decLineTotExc AS LineTotExc
		,decLineTaxAmt AS LineTaxAmt
		,decLineTotInc AS LineTotInc
		,strTaxCode AS TaxCode
		,imgTaxObj AS TaxObj
		,strCurrency AS Currency
		,decExchange AS Exchange
		,bitIsForeign AS IsForeignAcct
		,decDebitsF AS DebitsF
		,decCreditsF AS CreditsF
		,decLineTotExcF AS LineTotExcF
		,decLineTaxAmtF AS LineTaxAmtF
		,decLineTotIncF AS LineTotIncF
		,lngID AS JourID
		,strFormula AS Formula
		,bitVerified AS IsVerified
	FROM tblJournalEntryDocDT
	WHERE strJEDocId = @SQDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetJournalEntryDocData]
@SQDocID as nvarchar(50)
AS
BEGIN
SELECT strJEDocID as JEDocID
,lngJourID as JourID
,dteSystemDate as SystemDate
,dteJournalDate as JournalDate
,strUserName as UserName
,strComment as Comment
,strCurrency as Currency
,decExchange as ExchangeValue
,bitIsTobeReversed as IsTobeReversed
,dteReverseDate as ReverseDate
,bitIsReversed as IsReversed
FROM tblJournalEntryDoc
WHERE strJEDocID = @SQDocID;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetAccountsLYData] 
@SQGLNumber as nvarchar(30)
AS
BEGIN
SELECT intAccClass as AccClass FROM tblAccountsLY WHERE intGLNumber = @SQGLNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetAccountsListForJE]
@SQGLNumber as nvarchar(30)
AS
BEGIN
SELECT intAccClass as AccClass FROM tblAccounts WHERE intGLNumber = @SQGLNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectLoad]
AS
BEGIN
SET nocount ON;
SELECT strProj1 AS Proj1, strProj2 AS Proj2, strProj3 AS Proj3, strProj4 AS Proj4, strProj5 AS Proj5, strProj6 AS Proj6, strProj7 AS Proj7, strProj8 AS Proj8, strProj9 AS Proj9, strProj10 AS Proj10, strProj11 AS Proj11, strProj12 AS Proj12, bitProj1 AS Proj1bit, bitProj2 AS Proj2bit, bitProj3 AS Proj3bit, bitProj4 AS Proj4bit, bitProj5 AS Proj5bit, bitProj6 AS Proj6bit, bitProj7 AS Proj7bit, bitProj8 AS Proj8bit, bitProj9 AS Proj9bit, bitProj10 AS Proj10bit, bitProj11 AS Proj11bit, bitProj12 AS Proj12bit FROM tblOptFields
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsRefreshForm]
(	
@IsInactive BIT = NULL
)
AS
BEGIN
IF (@IsInactive = 0)
SELECT strProjNumber, strProjName,strCustName,case when intStatus < 20 then cast(0 as bit) else cast(1 as bit) end as IsInactive,
(SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblProjects.strCustName) AS strCustNames,dteBegins, dteActComplete, intStatus FROM tblProjects WHERE intStatus < 20 ORDER BY strProjNumber
ELSE
SELECT strProjNumber, strProjName,strCustName,case when intStatus < 20 then cast(0 as bit) else cast(1 as bit) end as IsInactive,
(SELECT strCustDesc FROM tblCustomers WHERE strCustName = tblProjects.strCustName) AS strCustNames,dteBegins, dteActComplete, intStatus FROM tblProjects ORDER BY strProjNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsNewSalesPersonsDropDown]
AS
BEGIN
SELECT strSalesName AS SalesName FROM tblSalesPersons WHERE bitInactive = 0  AND bitIsWorkshopTechnician = 0 ORDER BY strSalesName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsNewOptLineFields]
@intModule As int = null
AS
BEGIN
SELECT NULL  AS ProjNumber , intModule As Module, strField As Field, strCaption AS Caption, '' AS Val, bitMandatory As Mandatory , intType as Typesint  FROM tblOptLineFields WHERE intModule = @intModule ORDER BY  strField,ProjNumber desc
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsNewOptLineFieldList]
@intModule As int = null,
@strField As varchar(max) = null
AS
BEGIN
SELECT * FROM tblOptLineFieldLists WHERE intModule = @intModule AND strField = @strField ORDER BY strValue
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsNewcmd1]
@SQstrProjNumber AS  varchar(Max) = NULL,
@SQstrProjName AS  varchar(Max) = Null,
@SQstrCustName AS  varchar(Max) = Null,
@SQuidCenterID AS UNIQUEIDENTIFIER = NULL,
@SQintProjType int = Null,
@SQintStatus int = Null,
@SQdteSubmitted datetime = null,
@SQdteAccepted datetime = null,
@SQdteBegins datetime = null,
@SQdteEstComplete datetime = null,
@SQdteActComplete datetime = null,
@SQdecDeposit decimal = null,
@SQdteDepRec datetime = null,
@SQbitRetainAmt bit = NULL,
@SQdecRetainAmt decimal = Null,
@SQbitRetainPct bit = Null,
@SQdecRetainPct decimal = null,
@SQdteRetainEstRcpt datetime = null,
@SQdteRetainActRcpt datetime = null,
@SQstrField1 varchar(max) =null,
@SQstrField2 varchar(max) =null,
@SQstrField3 varchar(max) =null,
@SQstrField4 varchar(max) =null,
@SQstrField5 varchar(max) =null,
@SQstrField6 varchar(max) =null,
@SQstrField7 varchar(max) =null,
@SQstrField8 varchar(max) =null,
@SQstrField9 varchar(max) =null,
@SQstrField10 varchar(max) =null,
@SQdteField11 datetime = null,
@SQdteField12 datetime = null,
@SQstrNotes varchar(max) = null,
@SQstrSalesName varchar(max) = null
AS
BEGIN
INSERT INTO tblProjects VALUES 
(@SQstrProjNumber,@SQstrProjName,@SQstrCustName,@SQuidCenterID,@SQintProjType,@SQintStatus,@SQdteSubmitted,@SQdteAccepted,@SQdteBegins,@SQdteEstComplete,@SQdteActComplete,@SQdecDeposit,@SQdteDepRec,@SQbitRetainAmt,@SQdecRetainAmt,@SQbitRetainPct,@SQdecRetainPct,@SQdteRetainEstRcpt,@SQdteRetainActRcpt,@SQstrField1,@SQstrField2,@SQstrField3,@SQstrField4,@SQstrField5,@SQstrField6,@SQstrField7,@SQstrField8,@SQstrField9,@SQstrField10,@SQdteField11,@SQdteField12,@SQstrNotes,NEWID(), @SQstrSalesName)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsNewcmd2]
@SQstrProjNumber varchar(Max) = NULL,
@SQstrDueOn  varchar(Max) = Null,
@SQdecAmount  decimal = Null,
@SQdecPercent  decimal= NULL,
@SQdteEstimated datetime = Null,
@SQdteActual datetime = Null,
@SQtxtCompletion varchar(max) = null
AS
BEGIN
INSERT INTO tblProjectsPay (strProjNumber  ,strDueOn ,decAmount ,decPercent ,dteEstimated  ,dteActual ,txtCompletion ) VALUES ( @SQstrProjNumber,@SQstrDueOn,@SQdecAmount,@SQdecPercent,@SQdteEstimated,@SQdteActual,@SQtxtCompletion)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsNewPStages]
@SQstrProjNumber varchar(Max) = NULL,
@SQstrParentStage  varchar(Max) = Null
AS
BEGIN
INSERT INTO tblProjectsParentStages (strProjNumber, strParentStage ) VALUES (@SQstrProjNumber,@SQstrParentStage)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsNewBudget]
@SQstrProjNumber varchar(Max) = NULL,
@SQstrPartNumber varchar(Max) = Null,
@SQdecQty  decimal = Null,
@SQdecCost decimal = null,
@SQdecRevenue decimal = null,
@SQstrStage varchar(Max) = null
AS
BEGIN
INSERT INTO tblProjectsBudgets (strProjNumber,strPartNumber,decQty,decCost,decRevenue,strStage) VALUES (@SQstrProjNumber,@SQstrPartNumber,@SQdecQty,@SQdecCost,@SQdecRevenue,@SQstrStage)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsNewStages]
@SQstrProjNumber varchar(Max) = NULL,
@SQstrStage varchar(Max) = Null,
@SQstrParentStage  varchar(Max) = Null,
@SQdteDueDate Datetime = null,
@SQdteExpectedCloseDate Datetime = null,
@SQdteActualCloseDate Datetime = null,
@SQintPercentComplete int = null
AS
BEGIN
INSERT INTO tblProjectsStages (strProjNumber,strStage, strParentStage ,dteDueDate,dteExpectedCloseDate,dteActualCloseDate,intPercentComplete) VALUES (@SQstrProjNumber,@SQstrStage, @SQstrParentStage, @SQdteDueDate,@SQdteExpectedCloseDate,@SQdteActualCloseDate,@SQintPercentComplete)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsNewStageBudget]
@SQstrProjNumber varchar(Max) = NULL,
@SQstrStage varchar(Max) = null,
@SQintMonth int = null,
@SQintPercentage int = null
AS
BEGIN
INSERT INTO tblProjectsStageBudgeting (strProjNumber,strStage,intMonth,intPercentage) VALUES (@SQstrProjNumber,@SQstrStage,@SQintMonth,@SQintPercentage)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectEditStageBudget]
@SQstrProjNumber nvarchar(MAX) = NULL,
@SQstrStage nvarchar(MAX) = NULL,
@SQintMonth int = NULL,
@SQintPercentage int = NULL
AS
BEGIN
INSERT INTO tblProjectsStageBudgeting (strProjNumber,strStage,intMonth,intPercentage) VALUES (@SQstrProjNumber,@SQstrStage,@SQintMonth,@SQintPercentage)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsNewcmd3]
@SQstrProjNumber varchar(Max) = NULL,
@SQstrName varchar(Max) = null,
@SQstrContact varchar(Max) = null,
@SQstrStreet1 varchar(Max) = null,
@SQstrStreet2 varchar(Max) = NULL,
@SQstrCity varchar(Max) = null,
@SQstrProvince varchar(Max) = null,
@SQstrPostal varchar(Max) = null,
@SQstrPhone varchar(Max) = null
AS
BEGIN
INSERT INTO tblProjectsContact (strProjNumber,strName,strContact,strStreet1,strStreet2,strCity,strProvince,strPostal,strPhone) VALUES (@SQstrProjNumber,@SQstrName,@SQstrContact,@SQstrStreet1,@SQstrStreet2,@SQstrCity,@SQstrProvince,@SQstrPostal,@SQstrPhone)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectEditcmd3]
@SQstrProjNumber varchar(Max) = NULL,
@SQstrName varchar(Max) = null,
@SQstrContact varchar(Max) = null,
@SQstrStreet1 varchar(Max) = null,
@SQstrStreet2 varchar(Max) = NULL,
@SQstrCity varchar(Max) = null,
@SQstrProvince varchar(Max) = null,
@SQstrPostal varchar(Max) = null,
@SQstrPhone varchar(Max) = null
AS
BEGIN
INSERT INTO tblProjectsContact (strProjNumber,strName,strContact,strStreet1,strStreet2,strCity,strProvince,strPostal,strPhone) VALUES (@SQstrProjNumber,@SQstrName,@SQstrContact,@SQstrStreet1,@SQstrStreet2,@SQstrCity,@SQstrProvince,@SQstrPostal,@SQstrPhone)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsNewcmd4]
@SQstrProjNumber varchar(Max) = NULL,
@SQstrProblem varchar(Max) = null,
@SQstrReportedBy varchar(Max) = null,
@SQdteReportedOn datetime = null,
@SQdteResolved datetime = NULL,
@SQstrProblemDesc varchar(Max) = null,
@SQstrResolution varchar(Max) = null
AS
BEGIN
INSERT INTO tblProjectsProblems (strProjNumber,strProblem,strReportedBy,dteReportedOn,dteResolved,strProblemDesc,strResolution) VALUES (@SQstrProjNumber,@SQstrProblem,@SQstrReportedBy,@SQdteReportedOn,@SQdteResolved,@SQstrProblemDesc,@SQstrResolution)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectEditcmd4]
@SQstrProjNumber varchar(Max) = NULL,
@SQstrProblem varchar(Max) = null,
@SQstrReportedBy varchar(Max) = null,
@SQdteReportedOn datetime = null,
@SQdteResolved datetime = NULL,
@SQstrProblemDesc varchar(Max) = null,
@SQstrResolution varchar(Max) = ''
AS
BEGIN
INSERT INTO tblProjectsProblems (strProjNumber,strProblem,strReportedBy,dteReportedOn,dteResolved,strProblemDesc,strResolution) VALUES (@SQstrProjNumber,@SQstrProblem,@SQstrReportedBy,@SQdteReportedOn,@SQdteResolved,@SQstrProblemDesc,@SQstrResolution)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsNewcmd5]
@SQstrProjNumber varchar(Max) = NULL,
@SQstrEntryTitle varchar(Max) = null,
@SQstrEnteredBy varchar(Max) = null,
@SQdteEntryDate datetime = null,
@SQstrDesc varchar(Max) = null
AS
BEGIN
INSERT INTO tblProjectsLog (strProjNumber,strEntryTitle,strEnteredBy,dteEntryDate,strDesc) VALUES (@SQstrProjNumber,@SQstrEntryTitle,@SQstrEnteredBy,@SQdteEntryDate,@SQstrDesc)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsNewcmd6]
@SQstrProjNumber varchar(Max) = NULL,
@SQstrPartNumber varchar(Max) = null,
@SQstrReference varchar(Max) = null,
@SQdteAssignedDate datetime = null,
@SQdteLeftDate datetime = null
AS
BEGIN
INSERT INTO tblProjectsResources (strProjNumber,strAssetCode,strReference,dteAssignedDate,dteLeftDate) VALUES (@SQstrProjNumber,@SQstrPartNumber,@SQstrReference,@SQdteAssignedDate,@SQdteLeftDate)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsNewcmd7]
@SQstrProjNumber varchar(Max) = NULL,
@SQdecInsuredValue decimal = null,
@SQstrPolicyNumber varchar(Max) = null,
@SQstrDescription varchar(Max) = null,
@SQdteExpiryDate datetime = null,
@SQstrNote varchar(Max) = null
AS
BEGIN
INSERT INTO tblProjectsInsurance (strProjNumber, decInsuredValue, strPolicyNumber, strDescription, dteExpiryDate, strNote) VALUES  (@SQstrProjNumber, @SQdecInsuredValue, @SQstrPolicyNumber, @SQstrDescription, @SQdteExpiryDate, @SQstrNote)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsNewcmd8]
@SQstrProjNumber varchar(Max) = NULL,
@SQstrGuarantorName varchar(Max) = null,
@SQstrContactNumber varchar(Max) = null,
@SQstrEmail varchar(Max) = null,
@SQdecValue decimal = null,
@SQdteExpiryDate datetime = null,
@SQstrNote varchar(Max) = null
AS
BEGIN
INSERT INTO tblProjectsGuarantees (strProjNumber, strGuarantorName, strContactNumber, strEmail, decValue, dteExpiryDate, strNote) VALUES (@SQstrProjNumber, @SQstrGuarantorName, @SQstrContactNumber, @SQstrEmail, @SQdecValue, @SQdteExpiryDate, @SQstrNote)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsNewcmd9]
@SQstrProjNumber varchar(Max) = NULL,
@SQstrType varchar(Max) = null,
@SQlngRow bigint = null,
@SQstrFieldName varchar(Max) = null,
@SQstrFieldType varchar(Max) = null,
@SQstrFieldValue varchar(Max) = null
AS
BEGIN
INSERT INTO tblProjectsOther (strProjNumber, strType, lngRow, strFieldName, strFieldType, strFieldValue) VALUES (@SQstrProjNumber, @SQstrType, @SQlngRow, @SQstrFieldName, @SQstrFieldType, @SQstrFieldValue)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsNewcmd17]
@SQstrProjNumber varchar(Max) = NULL
AS
BEGIN
DELETE FROM tblProjectsCheckList WHERE strProjNumber = @SQstrProjNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsNewcmd18]
@SQstrProjNumber varchar(Max) = NULL,
@SQstrField varchar(Max) = null,
@SQstrValue varchar(Max) = null
AS
BEGIN
INSERT INTO tblProjectsCheckList VALUES (@SQstrProjNumber, @SQstrField, @SQstrValue)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditProjectsTable]
@SQProjID varchar(Max) = NULL
AS
BEGIN
SELECT * FROM tblProjects WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditLoadCenter]
@SQCenterID uniqueidentifier = NULL
AS
BEGIN
SELECT strLvl1,strLvl2,strLvl3,strLvl4,strLvl5 FROM tblCenters WHERE uidCenterID = @SQCenterID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditPAYMENTSCHEDULE]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
SELECT strProjNumber,strDueOn,decAmount,decPercent, cast(dteEstimated as nvarchar(100)) as dteEstimated ,cast(dteActual as nvarchar(100)) as dteActual, txtCompletion,lngID  FROM tblProjectsPay WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditPStages]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
SELECT strParentStage AS ParentStage FROM tblProjectsParentStages WHERE strProjNumber =  @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditStages]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
SELECT strStage, strParentStage, dteDueDate,dteExpectedCloseDate,dteActualCloseDate,intPercentComplete FROM tblProjectsStages WHERE strProjNumber =  @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditBudget]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
SELECT tblProjectsBudgets.strPartNumber, tblInv.strDesc as Description, tblProjectsBudgets.decQty, tblProjectsBudgets.decCost, tblProjectsBudgets.decRevenue, tblProjectsBudgets.strStage FROM tblProjectsBudgets LEFT OUTER JOIN tblInv ON tblProjectsBudgets.strPartNumber = tblInv.strPartNumber WHERE tblProjectsBudgets.strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditStageBudgetM]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
SELECT ISNULL(MAX(intMonth),1) as Months FROM tblProjectsStageBudgeting WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditStageBudget]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
SELECT T1.strStage, T1.intMonth, T1.intPercentage FROM tblProjectsStageBudgeting T1 INNER JOIN tblProjectsBudgets T2 ON T1.strProjNumber = T2.strProjNumber AND T1.strStage = T2.strStage WHERE T1.strProjNumber = @SQProjID ORDER BY T2.lngID, T1.strStage, T1.intMonth
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsCopyRESOURCES]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
SELECT tblProjectsResources.strAssetCode, tblInv.strDesc, tblProjectsResources.strReference, tblProjectsResources.dteAssignedDate, tblProjectsResources.dteLeftDate FROM tblProjectsResources INNER JOIN tblInv ON tblProjectsResources.strAssetCode = tblInv.strPartNumber WHERE tblProjectsResources.strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsCopyStageBudget]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
SELECT strStage,intMonth,intPercentage FROM tblProjectsStageBudgeting WHERE strProjNumber = @SQProjID ORDER BY strStage, intMonth
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditCONTACTS]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
SELECT * FROM tblProjectsContact WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditPROBLEMLOG]  
@SQProjID nvarchar(MAX) = NULL  
AS  
BEGIN  
	SELECT 
		strProjNumber
		,strProblem
		,strReportedBy
		,dteReportedOn
		,Isnull(cast(dteResolved as nvarchar(100)),'') as dteResolved 
		,strProblemDesc
		,strResolution
		,lngID
	FROM tblProjectsProblems WHERE strProjNumber = @SQProjID  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditPROJECTLOG]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
SELECT * FROM tblProjectsLog WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditFiles]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
SELECT * FROM tblProjectF WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditRESOURCES]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
SELECT tblProjectsResources.strAssetCode, tblAssets.strAssetDesc, tblProjectsResources.strReference, tblProjectsResources.dteAssignedDate, tblProjectsResources.dteLeftDate FROM tblProjectsResources INNER JOIN tblAssets ON tblProjectsResources.strAssetCode = tblAssets.strAssetCode WHERE tblProjectsResources.strProjNumber =  @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectEditcmd6d]
@SQProjID varchar(Max) = NULL
AS
BEGIN
DELETE FROM tblProjectsResources WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditPaymentStagesD]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
DELETE FROM tblProjectsPay WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectEditRemoveFiles]
@SQProjID varchar(Max) = NULL
AS
BEGIN
DELETE FROM tblProjectF WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditINSURANCE]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
SELECT lngID, strProjNumber, decInsuredValue, strPolicyNumber, strDescription, dteExpiryDate, strNote FROM tblProjectsInsurance WHERE strProjNumber =  @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditGUARANTEES]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
SELECT lngID, strProjNumber, strGuarantorName, strContactNumber, strEmail, decValue, dteExpiryDate, strNote FROM tblProjectsGuarantees WHERE strProjNumber =  @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditOTHERFINANCIAL]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
SELECT  strType, lngRow, strFieldName, strFieldType, strFieldValue FROM tblProjectsOther WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditCHECKLIST] @strProject NVARCHAR(MAX) = NULL
	,@intModule INT = NULL
AS
BEGIN
		;

	WITH Checklist
	AS (
		-- Select from tblProjectsCheckList with a preference for non-null 'Val'
		SELECT tblProjectsCheckList.strProjNumber AS ProjNumber
			,tblOptLineFields.intModule AS Module
			,tblOptLineFields.strField AS Field
			,tblOptLineFields.strCaption AS Caption
			,ISNULL(tblProjectsCheckList.strValue, '') AS Val
			,tblOptLineFields.bitMandatory AS Mandatory
			,tblOptLineFields.intType AS Typesint
		FROM tblOptLineFields
		LEFT OUTER JOIN tblProjectsCheckList ON tblOptLineFields.strField = tblProjectsCheckList.strField
			AND tblProjectsCheckList.strProjNumber = @strProject
		WHERE tblOptLineFields.intModule = @intModule
		
		UNION ALL
		
		-- Select records from tblOptLineFields where no matching record exists in tblProjectsCheckList
		SELECT NULL AS strProjNumber
			,intModule
			,strField
			,strCaption
			,'' AS strValue
			,bitMandatory
			,intType
		FROM tblOptLineFields
		WHERE intModule = @intModule
		)
	-- Remove duplicates and prefer non-null 'Val'
	SELECT ProjNumber
		,Module
		,Field
		,Caption
		,Val
		,Mandatory
		,Typesint
	FROM (
		SELECT *
			,ROW_NUMBER() OVER (
				PARTITION BY Field
				,Caption ORDER BY CASE 
						WHEN Val != ''
							THEN 1
						ELSE 2
						END
					,ProjNumber DESC
				) AS RowNum
		FROM Checklist
		) AS Ranked
	WHERE RowNum = 1
	ORDER BY Field
		,ProjNumber DESC;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditCHECKLISTLineFieldList]
@strProject nvarchar(MAX) = NULL,
@intModule int = NULL
AS
BEGIN
SELECT * FROM tblOptLineFieldLists WHERE intModule = @intModule AND strField = @strProject ORDER BY strValue
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditcmd1]
@SQstrProjNumber nvarchar(MAX) = NULL,
@SQstrProjName nvarchar(MAX) = NULL,
@SQstrCustName nvarchar(MAX) = NULL,
@SQuidCenterID uniqueidentifier = NULL,
@SQintProjType int = NULL,
@SQintStatus int = NULL,
@SQdteSubmitted datetime = NULL,
@SQdteAccepted datetime = NULL,
@SQdteBegins datetime = NULL,
@SQdteEstComplete datetime = NULL,
@SQdteActComplete datetime = NULL,
@SQdecDeposit decimal = NULL,
@SQdteDepRec datetime = NULL,
@SQbitRetainAmt bit = null,
@SQdecRetainAmt decimal = null,
@SQbitRetainPct bit = null,
@SQdecRetainPct decimal = null,
@SQdteRetainEstRcpt datetime = null,
@SQdteRetainActRcpt datetime = null,
@SQstrField1 nvarchar(MAX) = NULL,
@SQstrField2 nvarchar(MAX) = NULL,
@SQstrField3 nvarchar(MAX) = NULL,
@SQstrField4 nvarchar(MAX) = NULL,
@SQstrField5 nvarchar(MAX) = NULL,
@SQstrField6 nvarchar(MAX) = NULL,
@SQstrField7 nvarchar(MAX) = NULL,
@SQstrField8 nvarchar(MAX) = NULL,
@SQstrField9 nvarchar(MAX) = NULL,
@SQstrField10 nvarchar(MAX) = NULL,
@SQdteField11 datetime = NULL,
@SQdteField12 datetime = NULL,
@SQstrNotes nvarchar(MAX) = NULL,
@SQstrSalesName nvarchar(MAX) = NULL,
@SQOldProjNumber nvarchar(MAX) = NULL
AS
BEGIN
UPDATE tblProjects SET strProjNumber = @SQstrProjNumber,strProjName = @SQstrProjName,strCustName = @SQstrCustName,uidCenterID = @SQuidCenterID,intProjType = @SQintProjType,intStatus = @SQintStatus,dteSubmitted = @SQdteSubmitted,dteAccepted = @SQdteAccepted,dteBegins = @SQdteBegins,dteEstComplete = @SQdteEstComplete,dteActComplete = @SQdteActComplete,decDeposit = @SQdecDeposit,dteDepRec = @SQdteDepRec,bitRetainAmt = @SQbitRetainAmt,decRetainAmt = @SQdecRetainAmt,bitRetainPct = @SQbitRetainPct,decRetainPct = @SQdecRetainPct,dteRetainEstRcpt = @SQdteRetainEstRcpt,dteRetainActRcpt = @SQdteRetainActRcpt,strField1 = @SQstrField1,strField2 = @SQstrField2,strField3 = @SQstrField3,strField4 = @SQstrField4,strField5 = @SQstrField5,strField6 = @SQstrField6,strField7 = @SQstrField7,strField8 = @SQstrField8,strField9 = @SQstrField9,strField10 = @SQstrField10,dteField11 = @SQdteField11,dteField12 = @SQdteField12,strNotes = @SQstrNotes, strSalesName = @SQstrSalesName WHERE strProjNumber = @SQOldProjNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditPStagesD]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
DELETE FROM tblProjectsParentStages WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditPStagesInsert]
@SQstrProjNumber nvarchar(MAX) = NULL,
@SQstrParentStage nvarchar(MAX) = NULL
AS
BEGIN
INSERT INTO tblProjectsParentStages (strProjNumber, strParentStage ) VALUES (@SQstrProjNumber,@SQstrParentStage)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditStagesD]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
DELETE FROM tblProjectsStages WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsEditStagesInsert]
@SQstrProjNumber nvarchar(MAX) = NULL,
@SQstrStage nvarchar(MAX) = NULL,
@SQstrParentStage nvarchar(MAX) = NULL,
@SQdteDueDate datetime = NULL,
@SQdteExpectedCloseDate datetime = NULL,
@SQdteActualCloseDate datetime = NULL,
@SQintPercentComplete int = NULL
AS
BEGIN
INSERT INTO tblProjectsStages (strProjNumber,strStage, strParentStage ,dteDueDate,dteExpectedCloseDate,dteActualCloseDate,intPercentComplete) VALUES (@SQstrProjNumber,@SQstrStage, @SQstrParentStage, @SQdteDueDate,@SQdteExpectedCloseDate,@SQdteActualCloseDate,@SQintPercentComplete)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[BudgetD]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
DELETE FROM tblProjectsBudgets WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectEditStageBudgetD]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
DELETE FROM tblProjectsStageBudgeting WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectEditBudget]
@SQstrProjNumber nvarchar(MAX) = NULL,
@SQstrPartNumber nvarchar(MAX) = NULL,
@SQdecQty decimal = NULL,
@SQdecCost decimal = NULL,
@SQdecRevenue decimal = NULL,
@SQstrStage nvarchar(MAX) = NULL
AS
BEGIN
INSERT INTO tblProjectsBudgets (strProjNumber,strPartNumber,decQty,decCost,decRevenue,strStage) VALUES (@SQstrProjNumber,@SQstrPartNumber,@SQdecQty,@SQdecCost,@SQdecRevenue,@SQstrStage)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectEditcmd3d]
@SQProjID nvarchar(MAX) = NULL
AS
BEGIN
DELETE FROM tblProjectsContact WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectEditcmd4d]
@SQProjID varchar(Max) = NULL
AS
BEGIN
DELETE FROM tblProjectsProblems WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectEditcmd5d]
@SQProjID varchar(Max) = NULL
AS
BEGIN
DELETE FROM tblProjectsLog WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectEditcmd7d]
@SQProjID varchar(Max) = NULL
AS
BEGIN
DELETE FROM tblProjectsInsurance WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectEditcmd8d]
@SQProjID varchar(Max) = NULL
AS
BEGIN
DELETE FROM tblProjectsGuarantees WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectEditcmd9d]
@SQProjID varchar(Max) = NULL
AS
BEGIN
DELETE FROM tblProjectsOther WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectDeleteClick]
@SQProjID varchar(Max) = NULL
AS
BEGIN
DELETE FROM tblProjects WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectEditcmd17]
@SQProjID varchar(Max) = NULL
AS
BEGIN
DELETE FROM tblProjectsCheckList WHERE strProjNumber = @SQProjID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsAfterEditResources]
@SQPart varchar(Max) = NULL,
@SQBarCode varchar(Max) = NULL
AS
BEGIN
SELECT strAssetCode , strAssetDesc , strBarCode  FROM tblAssets WHERE (strAssetCode = @SQPart OR strAssetDesc = @SQPart OR strBarCode = @SQBarCode) AND bitInactive = 0
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[ProjectsAfterEditBudget]
@SQPart varchar(Max) = NULL,
@SQBarCode varchar(Max) = NULL
AS
BEGIN
SELECT tblInv.strPartNumber,tblInv.strDesc FROM tblInv WHERE (tblInv.strPartNumber = @SQPart OR tblInv.strBarCode = @SQBarCode OR tblInv.strBarCode2 = @SQBarCode) AND bitInactive = 0 AND tblInv.bitOtherCmp = 0
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RefreshProvince]
AS
BEGIN
SELECT strProvince As Province FROM tblProvince ORDER BY strProvince
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[AccountHistEditUpdate]
@SQInactive bit = null,
@SQOldNumber VARCHAR(MAX) = NULL
AS
BEGIN
UPDATE tblAccountsHist SET bitInactive = @SQInactive WHERE intGLNumber = @SQOldNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[AccountEditUpdate]
@SQInactive bit = null,
@SQOldNumber VARCHAR(MAX) = NULL
AS
BEGIN
UPDATE tblAccountsLY SET bitInactive = @SQInactive WHERE intGLNumber = @SQOldNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptCustAgedRRefreshForm1]
@optFilterByCustomer BIT = NULL,
@optAll BIT = NULL,
@SQRef   VARCHAR(MAX) = NULL,
@blnBPToolsMode BIT = NULL,
@SQUserName NVARCHAR(MAX) = NULL,
@cboTerms INT = NULL,
@SQstrTerm NVARCHAR(MAX) = NULL,
@SQAsAt nvarchar(19) = NULL,
@SQPaidIn nvarchar(19) = Null,
@optFilterByCategory BIT = NULL,
@optFilterBySalesPersons BIT = NULL,
@optFilterByDept BIT = NULL,
@optBalanceGreater BIT = NULL,
@optBalanceLesser BIT = NULL,
@SQBalanceGreater DECIMAL = NULL,
@SQBalanceLesser DECIMAL = NULL
AS
BEGIN
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
SET @sql = 'SELECT Z.strCustName AS strCustName FROM ( '
IF(@optFilterByCustomer = 1)
BEGIN
SET	@sql += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, SUM(tblCustTransDT.decAmount) AS decAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND'
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= '''+  @SQAsAt+''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+  @SQPaidIn+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= '''+  @SQPaidIn+''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate UNION ALL SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, SUM(tblCustTransDT.decAmount) AS decAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= '''+  @SQAsAt+''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+  @SQPaidIn+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= '''+  @SQPaidIn+''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate '
END
ELSE IF(@optFilterByCategory = 1)
BEGIN
SET @sql += ' SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, SUM(tblCustTransDT.decAmount) AS decAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM	tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR	(ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE	tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND	tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND tblCustTransDT.dteJournalDate <= '''+  @SQAsAt+''' AND tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+  @SQPaidIn+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= '''+  @SQPaidIn+''') GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory '

SET @sql += ' UNION ALL SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, SUM(tblCustTransDT.decAmount) AS decAmount FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'

IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM	tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR	(ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE	tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND	tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END

SET @sql += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND tblCustTransDT.dteJournalDate <= '''+  @SQAsAt+''' AND tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+  @SQPaidIn+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= '''+  @SQPaidIn+''') GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory '

END
ELSE IF(@optFilterBySalesPersons = 1)
BEGIN
SET @sql += ' SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, SUM(tblCustTransDT.decAmount) AS decAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN 
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= '''+  @SQAsAt+''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+  @SQPaidIn+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= '''+  @SQPaidIn+''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName  UNION ALL SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, SUM(tblCustTransDT.decAmount) AS decAmount FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName =  '''+ @SQUserName + ''')) AND'
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= '''+  @SQAsAt+''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+  @SQPaidIn+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= '''+  @SQPaidIn+''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName '
END
ELSE IF(@optFilterByDept = 1)
BEGIN
SET @sql += ' SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, SUM(tblCustTransDT.decAmount) AS decAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= ''' + @SQAsAt +''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+  @SQPaidIn+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= '''+  @SQPaidIn+''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomers.intDept  UNION ALL SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, SUM(tblCustTransDT.decAmount) AS decAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= '''+  @SQAsAt +''') AND (tblCustTransDT.lngID NOT IN (SELECT CT.lngID FROM tblCustTransDT CT WHERE CT.lngCustTrID IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+  @SQPaidIn+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) AND CT.dteJournalDate <= '''+  @SQPaidIn+''')) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomers.intDept '
END
SET @sql += ' ) Z GROUP BY Z.strCustName '
IF(@optBalanceGreater = 1)
BEGIN
SET @sql += ' HAVING SUM(Z.decAmount) > '+ CAST(@SQBalanceGreater AS VARCHAR(100)) +' '
END
ELSE IF (@optBalanceLesser = 1)
BEGIN
SET @sql += ' HAVING SUM(Z.decAmount) < '+ CAST(@SQBalanceLesser AS VARCHAR(100)) +' '
END

EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptCustAgedRRefreshForm2]
@optFilterByCustomer BIT = NULL,
@optAll BIT = NULL,
@SQRef   VARCHAR(MAX) = NULL,
@blnBPToolsMode BIT = NULL,
@SQUserName NVARCHAR(MAX) = NULL,
@cboTerms INT = NULL,
@SQstrTerm NVARCHAR(MAX) = NULL,
@SQAsAt DATETIME = NULL,
@SQPaidIn DateTime = Null,
@optFilterByCategory BIT = NULL,
@optFilterBySalesPersons BIT = NULL,
@optFilterByDept BIT = NULL,
@optBalanceGreater BIT = NULL,
@optBalanceLesser BIT = NULL,
@SQBalanceGreater DECIMAL = NULL,
@SQBalanceLesser DECIMAL = NULL
AS
BEGIN
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
SET @sql = 'SELECT Z.strCustName AS CustName FROM ( '
IF(@optFilterByCustomer = 1)
BEGIN
SET	@sql += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmountF  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND'
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''' ) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate  UNION ALL SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmountF  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName =  '''+ @SQUserName + ''')) AND'
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate'
END
ELSE IF(@optFilterByCategory = 1)
BEGIN
SET @sql += ' SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, SUM(tblCustTransDT.decAmount) AS decAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+'''  AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory  UNION ALL SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmountF  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND '
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <=  '''+CONVERT(VARCHAR(30), @SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory '
END
ELSE IF(@optFilterBySalesPersons = 1)
BEGIN
SET @sql += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmountF  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN 
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName  UNION ALL  SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmountF  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE '
IF(@optAll = 0)
BEGIN
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName =  '''+ @SQUserName + ''')) AND'
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''' AND tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName '
END
ELSE IF(@optFilterByDept = 1)
BEGIN
SET @sql += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmountF  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomers.intDept  UNION ALL SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmountF  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.lngCustPayID IS NOT NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL)) GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomers.intDept'
END
SET @sql += ' ) Z GROUP BY Z.strCustName '
IF(@optBalanceGreater = 1)
BEGIN
SET @sql += ' HAVING SUM(Z.decAmountF) > '+ @SQBalanceGreater +' '
END
ELSE IF (@optBalanceLesser = 1)
BEGIN
SET @sql += ' HAVING SUM(Z.decAmountF) < '+ @SQBalanceLesser +' '
END
PRINT (@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptCustAgedRRefreshForm3]
@optFilterByCustomer BIT = NULL,
@optAll BIT = NULL,
@SQRef   VARCHAR(MAX) = NULL,
@blnBPToolsMode BIT = NULL,
@SQUserName NVARCHAR(MAX) = NULL,
@cboTerms INT = NULL,
@SQstrTerm NVARCHAR(MAX) = NULL,
@SQAsAt DATETIME = NULL,
@SQPaidIn DateTime = Null,
@optFilterByCategory BIT = NULL,
@optFilterBySalesPersons BIT = NULL,
@optFilterByDept BIT = NULL,
@optBalanceGreater BIT = NULL,
@optBalanceLesser BIT = NULL,
@SQBalanceGreater DECIMAL = NULL,
@SQBalanceLesser DECIMAL = NULL
AS
BEGIN
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
SET @sql = 'SELECT Z.strCustName AS CustName FROM ( '
IF(@optFilterByCustomer = 1)
BEGIN
SET	@sql += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, SUM(tblCustTransDT.decAmount) AS decAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND'
END
SET @sql += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''' AND tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate  UNION ALL SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, SUM(tblCustTransDT.decAmount) AS decAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
SET @sql +=  ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''' AND tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate  UNION ALL  SELECT LTRIM(RTRIM(tblCustomers.strCustName)) AS strCustName, tblOrderDoc.decTotal AS decAmount  FROM tblOrderDoc INNER JOIN tblCustomers ON LTRIM(RTRIM(tblOrderDoc.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE  '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql +=  ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
END
IF(@cboTerms > 0) 
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' intDocType = 1 AND bitCleared = 0 AND tblOrderDoc.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (tblOrderDoc.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') '
END
ELSE IF(@optFilterByCategory = 1)
BEGIN
SET @sql += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, SUM(tblCustTransDT.decAmount) AS decAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''' AND tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory  UNION ALL SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, SUM(tblCustTransDT.decAmount) AS decAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND '
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''' AND tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory  UNION ALL  SELECT LTRIM(RTRIM(tblCustomers.strCustName)) AS strCustName, MASTERTABLE.decTotal AS decAmount  FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE  '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') '
END
ELSE IF(@optFilterBySalesPersons = 1)
BEGIN
SET @sql += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, SUM(tblCustTransDT.decAmount) AS decAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN 
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND ' 
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''' AND tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName  UNION ALL SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, SUM(tblCustTransDT.decAmount) AS decAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE '
IF(@optAll = 0)
BEGIN
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND '
END
END 
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += '  tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''' AND tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName  UNION ALL SELECT LTRIM(RTRIM(tblCustomers.strCustName)) AS strCustName, MASTERTABLE.decTotal AS decAmount  FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE '
IF(@optAll = 0)
BEGIN
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') '
END
ELSE IF(@optFilterByDept = 1)
BEGIN
SET @sql += 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, SUM(tblCustTransDT.decAmount) AS decAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''' AND tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomers.intDept  UNION ALL SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, SUM(tblCustTransDT.decAmount) AS decAmount  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' tblCustTransDT.bitReversed = 0 AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''' AND tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, MASTERTABLE.dteJournalDate, tblCustomers.intDept  UNION ALL SELECT LTRIM(RTRIM(tblCustomers.strCustName)) AS strCustName, MASTERTABLE.decTotal AS decAmount  FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') '
END
SET @sql += ' ) Z GROUP BY Z.strCustName '
IF(@optBalanceGreater = 1)
BEGIN
SET @sql += ' HAVING SUM(Z.decAmountF) > '+ @SQBalanceGreater +' '
END
ELSE IF (@optBalanceLesser = 1)
BEGIN
SET @sql += ' HAVING SUM(Z.decAmountF) < '+ @SQBalanceLesser +' '
END
PRINT (@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[RptCustAgedRRefreshForm4]
@optFilterByCustomer BIT = NULL,
@optAll BIT = NULL,
@SQRef   VARCHAR(MAX) = NULL,
@blnBPToolsMode BIT = NULL,
@SQUserName NVARCHAR(MAX) = NULL,
@cboTerms INT = NULL,
@SQstrTerm NVARCHAR(MAX) = NULL,
@SQAsAt DATETIME = NULL,
@SQPaidIn DateTime = Null,
@optFilterByCategory BIT = NULL,
@optFilterBySalesPersons BIT = NULL,
@optFilterByDept BIT = NULL,
@optBalanceGreater BIT = NULL,
@optBalanceLesser BIT = NULL,
@SQBalanceGreater DECIMAL = NULL,
@SQBalanceLesser DECIMAL = NULL
AS
BEGIN
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
SET @sql = 'SELECT Z.strCustName AS CustName FROM ( '
IF(@optFilterByCustomer = 1)
BEGIN
SET	@sql = 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmountF  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND'
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= @SQAsAt) AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= @SQPaidIn GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate UNION ALL SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmountF  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
SET @sql +=  ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate  UNION ALL SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal ELSE MASTERTABLE.decTotalF END AS decAmountF  MASTERTABLE.dteRequired,CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal ELSE MASTERTABLE.decTotalF END ,tblCustomers.strCurrency ,(SELECT strCurrName FROM tblCurrency WHERE strCurrency = tblCustomers.strCurrency),MASTERTABLE.dteJournalDate,'' FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE  '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql +=  ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''')  '
END
ELSE IF(@optFilterByCategory = 1)
BEGIN
SET @sql = 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmountF  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND' 
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory  UNION ALL SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmountF  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND'
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomers.strCustCategory UNION ALL SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal ELSE MASTERTABLE.decTotalF END AS decTotalF  FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''' )) AND '
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += '  intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') '
END
ELSE IF(@optFilterBySalesPersons = 1)
BEGIN
SET @sql = 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmountF  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE  '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN 
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''' )) AND ' 
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += '  (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName  UNION ALL SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmountF  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE '
IF(@optAll = 0)
BEGIN
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''')) AND '
END
END 
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomerSales.strSalesName  UNION ALL  SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal ELSE MASTERTABLE.decTotalF END AS decAmountF  FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) LEFT JOIN tblCustomerSales ON MASTERTABLE.strCustName = tblCustomerSales.strCustName WHERE '
IF(@optAll = 0)
BEGIN
SET @sql += ' ('+@SQRef+' ) AND '
END
ELSE
BEGIN
IF(@blnBPToolsMode = 0)
BEGIN
SET @sql += ' tblCustomers.strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 AND tblCustomerCatSec.strUserName = '''+ @SQUserName + ''' )) AND'
END
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') '
END
ELSE IF(@optFilterByDept = 1)
BEGIN
SET @sql = 'SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS CustName, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmountF  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NULL OR (MASTERTABLE.strInvDocID IS NOT NULL AND MASTERTABLE.strOrdDocID IS NOT NULL)) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomers.intDept  UNION ALL SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, CASE tblCustTransDT.bitIsForeign WHEN 0 THEN SUM(tblCustTransDT.decAmount) ELSE SUM(tblCustTransDT.decAmountF) END AS decAmountF  FROM tblCustTrans AS MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID WHERE'
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' (tblCustTransDT.bitReversed = 0) AND (MASTERTABLE.strOrdDocID IS NOT NULL) AND (MASTERTABLE.strInvDocID IS NULL) AND (tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') AND (tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQPaidIn)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0)) GROUP BY LTRIM(RTRIM(MASTERTABLE.strCustName)), tblCustomers.strCustDesc, tblCustomers.strTerm, MASTERTABLE.dteDueDate, tblCustomers.strCurrency, tblCustTransDT.bitIsForeign, MASTERTABLE.dteJournalDate, tblCustomers.intDept UNION ALL SELECT LTRIM(RTRIM(MASTERTABLE.strCustName)) AS strCustName, CASE MASTERTABLE.bitIsForeign WHEN 0 THEN MASTERTABLE.decTotal	ELSE MASTERTABLE.decTotalF END AS decAmountF  FROM tblOrderDoc MASTERTABLE INNER JOIN tblCustomers ON LTRIM(RTRIM(MASTERTABLE.strCustName)) = LTRIM(RTRIM(tblCustomers.strCustName)) WHERE '
IF(@optAll = 0)
BEGIN	
SET @sql += ' ('+@SQRef+' ) AND '
END
IF(@cboTerms > 0)
BEGIN
SET @sql += ' tblCustomers.strTerm = '''+ @SQstrTerm + ''' AND '
END
SET @sql += ' intDocType = 1 AND bitCleared = 0 AND MASTERTABLE.strOrdDocID NOT IN (SELECT strOrdDocID FROM tblCustTrans WHERE strOrdDocID IS NOT NULL) AND (MASTERTABLE.dteJournalDate <= '''+CONVERT(VARCHAR(30), @SQAsAt)+''') '
END
SET @sql += ' ) Z GROUP BY Z.strCustName '
IF(@optBalanceGreater = 1)
BEGIN
SET @sql += ' HAVING SUM(Z.decAmountF) > '+ @SQBalanceGreater +' '
END
ELSE IF (@optBalanceLesser = 1)
BEGIN
SET @sql += ' HAVING SUM(Z.decAmountF) < '+ @SQBalanceLesser +' '
END
PRINT (@sql)
EXEC(@sql)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetFileRecordDataStockPicker] (
@PartNumber AS NVARCHAR(100)
,@SQstrLocName AS NVARCHAR(100)
)
AS
BEGIN
SELECT SUM(decQtyPicked) AS PickedQty FROM tblPickTickets INNER JOIN tblPickTicketsDT ON tblPickTickets.strPkTkDocID = tblPickTicketsDT.strPkTkDocID WHERE bitCleared = 0 AND strPartNumber = @PartNumber AND strLocation = @SQstrLocName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertJournalEntryDoc](
@JEDocID NVARCHAR(200),
@JournalID bigint,
@SystemDate DateTime,
@JournalDate DateTIme,
@UserName NVARCHAR(200),
@Comment NVARCHAR(200),
@Currency NVARCHAR(100),
@Exchange decimal(20,6),
@IsTobeReversed bit,
@ReverseDate DateTime
)
AS
BEGIN
INSERT INTO tblJournalEntryDoc VALUES (@JEDocID,@JournalID,@SystemDate,@JournalDate,@UserName,@Comment,@Currency,@Exchange,@IsTobeReversed,@ReverseDate,0)
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetDescriptionCount] 
@SQDescription as nvarchar(250)
AS
BEGIN
SELECT Count(strDescription) AS Count
FROM tblInvDescription
WHERE strDescription = @SQDescription;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvDescriptionData] 
AS
BEGIN
SELECT strDescription as NewPartDescription
,intOrder
FROM tblInvDescription
ORDER BY intOrder
,strDescription;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvDescriptionList]
AS
BEGIN
SELECT DISTINCT tblInvDescriptionList.strPartNumber as PartNumber
,tblInv.strDesc as PartDescription
FROM tblInvDescriptionList
INNER JOIN tblInv ON tblInvDescriptionList.strPartNumber = tblInv.strPartNumber
ORDER BY tblInvDescriptionList.strPartNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvDescriptionListByPartNum] 
@SQPartNumber as nvarchar(50)
AS
BEGIN
SELECT strPartNumber as PartNumber
,strDescription as PartDescription
,strDescriptionValue as NewPartDescription
,intDescriptionOrder
FROM tblInvDescriptionList
WHERE strPartNumber = @SQPartNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvPartNumberData] 
@SQPartNumber as nvarchar(50)
AS
BEGIN
SELECT tblInv.strPartNumber as PartNumber
,tblInv.strDesc as PartDescription
FROM tblInv
WHERE tblInv.strPartNumber = @SQPartNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetPartNumberCount] 
@SQPartNumber as nvarchar(50)
AS
BEGIN
SELECT Count(strPartNumber) AS Count
FROM tblInv
WHERE strPartNumber = @SQPartNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveInvDescriptionAutoComplete] 
@SQValue as nvarchar(200),
@SQDescription as nvarchar(250)
AS
BEGIN
INSERT INTO tblInvDescriptionAutoComplete (
strDescription
,strValue
)
VALUES (
@SQDescription
,@SQValue
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveInvDescriptionList] 
@SQPartNumber as nvarchar(50),
@SQDescription as nvarchar(250),
@SQDescriptionValue as nvarchar(max)
AS
BEGIN
INSERT INTO tblInvDescriptionList (
strPartNumber
,strDescription
,strDescriptionValue
,intDescriptionOrder
)
VALUES (
@SQPartNumber
,@SQDescription
,@SQDescriptionValue
,ISNULL((
SELECT tblInvDescription.intOrder
FROM tblInvDescription
WHERE tblInvDescription.strDescription = @SQDescription
), 0)
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [UpdateInvDescriptionAutoCompleteData] 
@SQValue as nvarchar(200),
@SQDescription as nvarchar(250)
AS
BEGIN
UPDATE tblInvDescriptionAutoComplete
SET strValue = @SQValue
WHERE strDescription = @SQDescription
AND strValue = @SQValue;
END
GO

----------------------------------------------------
CREATE PROCEDURE [UpdateInvDescriptionValue] 
@SQNewDescription as nvarchar(500),
@SQPartNumber as nvarchar(50)
AS
BEGIN
UPDATE tblInv
SET strDesc = @SQNewDescription
WHERE strPartNumber = @SQPartNumber;
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvDataList] 
@SQPartNumbers as varchar(max)
AS
BEGIN
SELECT INV.strPartNumber as PartNumber
,ISNULL((
SELECT COUNT(UOM.lngUOMId)
FROM tblInvUOMs UOM
WHERE (UOM.strPartNumber = INV.strPartNumber)
AND (UOM.bitDefaultUOM = 1)
AND (UOM.strUseFor = 'Both')
), 0) as PurcahsesAndSalesCount
,ISNULL((
SELECT COUNT(UOM.lngUOMId)
FROM tblInvUOMs UOM
WHERE (UOM.strPartNumber = INV.strPartNumber)
AND (UOM.bitDefaultUOM = 1)
AND (UOM.strUseFor = 'Purchases')
), 0) as PurcahsesCount
,ISNULL((
SELECT COUNT(UOM.lngUOMId)
FROM tblInvUOMs UOM
WHERE (UOM.strPartNumber = INV.strPartNumber)
AND (UOM.bitDefaultUOM = 1)
AND (UOM.strUseFor = 'Sales')
), 0) as SalesCount
FROM tblInv INV
WHERE (
INV.strPartNumber IN (
SELECT *
FROM fnSplitStringAsTable(@SQPartNumbers, ',')
)
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInventoryDataListForImportExport] 
@SQBarCode as nvarchar(300)
AS
BEGIN
SELECT tblInv.strPartNumber as PartNumber
,ISNULL(tblInvUOMs.strFromUnit, '') as FromUnit
FROM tblInv
LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
WHERE (
tblInv.strBarCode = @SQBarCode
OR tblInv.strBarCode2 = @SQBarCode
OR tblInvUOMs.strBarCode = @SQBarCode
OR tblInvUOMs.strBarCode2 = @SQBarCode
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [GetInvUOMsData] 
AS
BEGIN
SELECT strPartNumber as PartNumber
,strFromUnit as FromUnit
,strConversionType as ConversionType
,decConversionFactor as ConversionFactor
,strUseFor as UseFor
,strBarCode as BarCode
,strBarCode2 as BarCode2
,bitInactive as Inactive
,bitDefaultUOM as DefaultUOM
FROM tblInvUOMs
ORDER BY strPartNumber
,strFromUnit;
END
GO

----------------------------------------------------
CREATE PROCEDURE [SaveInvPriceData]
AS
BEGIN
INSERT INTO tblInvPrice (
[uidPriceBasedID]
,[strPartNumber]
,[strPricelist]
,[decSelling]
,[decEstLocalCost]
,[decEstImportCost]
,[strUnit]
,[bitStockUnit]
)
SELECT PLBD.uidPriceBasedID
,UOM.strPartNumber
,IP1.strPricelist
,0
,0
,0
,UOM.strFromUnit
,0
FROM tblInvUOMs UOM
INNER JOIN tblInvPrice IP1 ON UOM.strPartNumber = IP1.strPartNumber
AND IP1.bitStockUnit = 1
INNER JOIN tblPriceListsByDate PLBD ON IP1.uidPriceBasedID = PLBD.uidPriceBasedID
LEFT JOIN tblInvPrice IP2 ON UOM.strPartNumber = IP2.strPartNumber
AND UOM.strFromUnit = IP2.strUnit
WHERE (
UOM.strUseFor = 'Sales'
OR UOM.strUseFor = 'Both'
)
AND (ISNULL(IP2.strUnit, '') = '')
GROUP BY PLBD.uidPriceBasedID
,UOM.strPartNumber
,IP1.strPricelist
,UOM.strFromUnit;
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[SaveInvUOMsData] 
@SQstrConversionType as nvarchar(50)
,@SQdecConversionFactor as money
,@SQstrUseFor as nvarchar(50)
,@SQstrBarCode as nvarchar(300) = ''
,@SQstrBarCode2 as nvarchar(300) = ''
,@SQbitInactive as bit
,@SQbitDefaultUOM as bit
,@SQstrPartNumber as nvarchar(50)
,@SQstrFromUnit as nvarchar(15)
,@SQstrToUnit as nvarchar(15)
AS
BEGIN
INSERT INTO tblInvUOMs (
strPartNumber
,strFromUnit
,strConversionType
,decConversionFactor
,strToUnit
,strUseFor
,strBarCode
,strBarCode2
,bitInactive
,bitDefaultUOM
)
VALUES (
@SQstrPartNumber
,@SQstrFromUnit
,@SQstrConversionType
,@SQdecConversionFactor
,@SQstrToUnit
,@SQstrUseFor
,@SQstrBarCode
,@SQstrBarCode2
,@SQbitInactive
,@SQbitDefaultUOM
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [UpdateInvDataForImportExport] 
@SQPartNumbers as varchar(max)
AS
BEGIN
UPDATE tblInv
SET bitDefaultUOM = CASE 
WHEN Z.intCntBoth = 0
AND Z.intCntPurch = 0
AND Z.intCntSales = 0
THEN 1
ELSE 0
END
FROM (
SELECT INV.strPartNumber
,ISNULL((
SELECT COUNT(UOM.lngUOMId)
FROM tblInvUOMs UOM
WHERE (UOM.strPartNumber = INV.strPartNumber)
AND (UOM.bitDefaultUOM = 1)
AND (UOM.strUseFor = 'Both')
), 0) AS intCntBoth
,ISNULL((
SELECT COUNT(UOM.lngUOMId)
FROM tblInvUOMs UOM
WHERE (UOM.strPartNumber = INV.strPartNumber)
AND (UOM.bitDefaultUOM = 1)
AND (UOM.strUseFor = 'Purchases')
), 0) AS intCntPurch
,ISNULL((
SELECT COUNT(UOM.lngUOMId)
FROM tblInvUOMs UOM
WHERE (UOM.strPartNumber = INV.strPartNumber)
AND (UOM.bitDefaultUOM = 1)
AND (UOM.strUseFor = 'Sales')
), 0) AS intCntSales
FROM tblInv INV
WHERE (
INV.strPartNumber IN (
SELECT *
FROM fnSplitStringAsTable(@SQPartNumbers, ',')
)
)
) Z
WHERE (tblInv.strPartNumber = Z.strPartNumber);
END
GO

----------------------------------------------------
CREATE PROCEDURE [UpdateInvUOMsData] 
@SQstrConversionType as nvarchar(50)
,@SQdecConversionFactor as money
,@SQstrUseFor as nvarchar(50)
,@SQstrBarCode as nvarchar(300)
,@SQstrBarCode2 as nvarchar(300)
,@SQbitInactive as bit
,@SQbitDefaultUOM as bit
,@SQstrPartNumber as nvarchar(50)
,@SQstrFromUnit as nvarchar(15)
AS
BEGIN
UPDATE tblInvUOMs
SET strConversionType = @SQstrConversionType
,decConversionFactor = @SQdecConversionFactor
,strUseFor = @SQstrUseFor
,strBarCode = @SQstrBarCode
,strBarCode2 = @SQstrBarCode2
,bitInactive = @SQbitInactive
,bitDefaultUOM = @SQbitDefaultUOM
WHERE strPartNumber = @SQstrPartNumber
AND strFromUnit = @SQstrFromUnit;
END
GO

----------------------------------------------------
CREATE PROCEDURE [UpdateLastUpdatedValue] 
@SQPartNumbers as varchar(max)
AS
BEGIN
UPDATE tblInv
SET dteLastUpdated = GetDate()
WHERE strPartNumber IN (
SELECT *
FROM fnSplitStringAsTable(@SQPartNumbers, ',')
);
END
GO

----------------------------------------------------
CREATE PROCEDURE [UpdateToUnitValue] 
@SQPartNumbers as varchar(max)
AS
BEGIN
UPDATE tblInvUOMs
SET strToUnit = tblInv.strStockUnit
FROM tblInv
WHERE (tblInvUOMs.strPartNumber = tblInv.strPartNumber)
AND (
tblInv.strPartNumber IN (
SELECT *
FROM fnSplitStringAsTable(@SQPartNumbers, ',')
)
)
AND (tblInvUOMs.strToUnit <> tblInv.strStockUnit);
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateBankRecTransClearedFlag] @IsCleared BIT
,@Source NVARCHAR(100)
,@JourID BIGINT
AS
BEGIN
UPDATE tblBankRecTrans
SET bitcleared = @IsCleared
WHERE strSource = @Source
AND lngJourID = @JourID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertHeaderDataInJournalEntryDocCB] @GLNumber NVARCHAR(100)
,@JEDocID NVARCHAR(100)
,@JourID BIGINT
,@JournalDate DATETIME
,@Desc NVARCHAR(100)
,@UserName NVARCHAR(100)
,@Comment NVARCHAR(100)
,@Debits MONEY
,@Credits MONEY
,@UpdateBank BIT
,@Currency NVARCHAR(100)
,@Exchange DECIMAL
AS
BEGIN
INSERT INTO tblJournalEntryDocCB
VALUES (
@JEDocID
,@GLNumber
,@JourID
,GetDate()
,@JournalDate
,@Desc
,@UserName
,@Comment
,@Debits
,@Credits
,@UpdateBank
,@Currency
,@Exchange
)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateBankManagerBatchDT] @BMDocID NVARCHAR(100)
,@LineNo INT
,@JEDocID NVARCHAR(100)
,@JEType INT
,@JELineNo INT
AS
BEGIN
UPDATE tblBankManagerBatchDT
SET strJEDocID = @JEDocID
,intJEType = @JEType
,intJELineNo = @JELineNo
WHERE (strBMDocID = @BMDocID)
AND (UPPER(strDocumentType) = 'RECEIPT')
AND (intLineNo = @LineNo)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateJELastIDs] @Num BIGINT
AS
BEGIN
UPDATE tblLastIDs
SET lngJENumber = @Num
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateStatementImported] @Reference NVARCHAR(100)
AS
BEGIN
UPDATE tblStatementImported
SET IsProcessed = 1
WHERE Reference = @Reference
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBankAccountData](
@SelectedIndex int,
@Text NVARCHAR(200)
)
AS
BEGIN
IF(@SelectedIndex = 0)--Cust
SELECT strCustName as intGLNumber, strCustDesc as strDesc FROM tblCustomers WHERE strCustName = @Text OR strCustDesc = @Text
IF(@SelectedIndex = 1)--Vend
SELECT strVendName as intGLNumber, strVendDesc as strDesc FROM tblVendors WHERE strVendName = @Text OR strVendDesc = @Text
IF(@SelectedIndex = 2)--GL
SELECT intGLNumber as intGLNumber , strDesc as strDesc FROM tblAccounts WHERE intGLNumber = @Text OR strDesc = @Text
IF(@SelectedIndex = 3)--BankTr
SELECT tblAccounts.intGLNumber as intGLNumber, tblAccounts.strDesc as strDesc FROM tblAccounts LEFT OUTER JOIN tblInv ON tblInv.intExpAcct = tblAccounts.intGLNumber WHERE tblAccounts.bitLinkAP = 0 AND tblAccounts.bitLinkAR = 0 AND tblAccounts.bitLinkDeposit = 0 AND tblAccounts.bitLinkPrePay = 0 AND tblAccounts.bitInventory = 0 AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2) AND (tblAccounts.intAccClass = 1 OR tblAccounts.intAccClass = 2 OR tblAccounts.intAccClass = 11 OR tblAccounts.intAccClass = 12) AND (tblAccounts.bitInactive = 0)   AND ( tblAccounts.intGLNumber = @Text OR tblAccounts.strDesc = @Text)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBankManagerMappingData]
AS
BEGIN
SELECT 
lngId as ID,
strMappingName as MappingName,
strDocumentType as DocumentType, 
tblBankManagerMappings.strAccountType as AccountType ,
ISNULL(tblBankManagerMappings.strCustName,  ISNULL(tblBankManagerMappings.strVendName, ISNULL(tblBankManagerMappings.intGLNumber, ''))) as AccountName, 
ISNULL(tblCustomers.strCustDesc, ISNULL(tblvendors.strVendDesc,  ISNULL(tblAccounts.strDesc, ''))) AS AccountDesc,
strComment as Comment,
tblBankManagerMappings.strTaxCode as TaxCode,
lngPriority as [Priority],
bitImportComment as IsImportComment 
FROM tblBankManagerMappings 
LEFT OUTER JOIN tblCustomers ON tblBankManagerMappings.strCustName = tblCustomers.strCustName 
LEFT OUTER JOIN tblVendors ON tblBankManagerMappings.strVendName = tblVendors.strVendName 
LEFT OUTER JOIN tblAccounts ON tblBankManagerMappings.intGLNumber = tblAccounts.intGLNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBankManagerMappingAddEditData](
@MappingName NVARCHAR(200),
@DocumentType NVARCHAR(200)
)
AS
BEGIN
SELECT 
lngId as ID,
strMappingName as MappingName,
strDocumentType as DocumentType, 
tblBankManagerMappings.strAccountType as AccountType ,
ISNULL(tblBankManagerMappings.strCustName,  ISNULL(tblBankManagerMappings.strVendName, ISNULL(tblBankManagerMappings.intGLNumber, ''))) as AccountName, 
strComment as Comment,
tblBankManagerMappings.strTaxCode as TaxCode,
lngPriority as [Priority],
bitImportComment as IsImportComment 
FROM tblBankManagerMappings WHERE strMappingName = @MappingName AND strDocumentType = @DocumentType
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertBankManagerMappingAddEditData](
@MappingNameI NVARCHAR(200),
@DocumentTypeI NVARCHAR(200),
@AccountTypeI NVARCHAR(200),
@CustNameI NVARCHAR(200),
@VendNameI NVARCHAR(200),
@intGLNumberI NVARCHAR(200),
@CommentI NVARCHAR(200),
@TaxCodeI NVARCHAR(200),
@PriorityI bigint,
@IsImportComment bit
)
AS
BEGIN
INSERT INTO tblBankManagerMappings VALUES (@MappingNameI, @DocumentTypeI, @AccountTypeI, @CustNameI, @VendNameI, @intGLNumberI ,@CommentI, @TaxCodeI, @PriorityI,@IsImportComment)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBMImportsData](
@IsByUser bit,
@StartDate Datetime,
@EndDate DateTime,
@UserName NVARCHAR(200)
)
AS
BEGIN
IF(@IsByUser  = 0)
BEGIN
SELECT	
DATEADD(dd, DATEDIFF(dd, 0, dteDate), 0) as [Date], 
lngImportedID as ImportedID, 
strUserName as UserName, 
strStatementDescription  as StatementDescription 
FROM  tblBankManagerImports 
WHERE DATEADD(dd, DATEDIFF(dd, 0, dteDate), 0) >= @StartDate  and DATEADD(dd, DATEDIFF(dd, 0, dteDate), 0) <= @EndDate AND lngId = 0  AND strStatementDescription<>'Online Fetch'
END
IF(@IsByUser  = 1)
BEGIN
SELECT 
DATEADD(dd, DATEDIFF(dd, 0, dteDate), 0) as [Date], 
lngImportedID as ImportedID, 
strUserName as UserName, 
strStatementDescription as StatementDescription  
FROM  tblBankManagerImports 
WHERE DATEADD(dd, DATEDIFF(dd, 0, dteDate), 0) >= @StartDate  and DATEADD(dd, DATEDIFF(dd, 0, dteDate), 0) <= @EndDate AND lngId = 0 and strUserName = @UserName AND strStatementDescription<>'Online Fetch'
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteUpdateStatePreviewPayments](
@lngId bigint
)
AS
BEGIN
UPDATE tblBankManagerImports SET strDocumentType = 'Receipt' WHERE (lngImportedId =  @lngId) AND (lngID = 0) AND (strDocumentType = 'Payment')
DELETE FROM [tblBankManagerImports] WHERE [strDocumentType] = 'Payment' AND [lngImportedId] =  @lngId
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteUpdateStatePreviewReceipts](
@lngId bigint
)
AS
BEGIN
UPDATE tblBankManagerImports SET strDocumentType = 'Payment' WHERE (lngImportedId =  @lngId) AND (lngID = 0) AND (strDocumentType = 'Receipt')
DELETE FROM [tblBankManagerImports] WHERE [strDocumentType] = 'Receipt' AND [lngImportedId] =  @lngId
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBMPreviewStatementAccountData](
@IsLastYear bit,
@IsAllowLinkedJE bit,
@Text NVARCHAR(200),
@HomeCurrency NVARCHAR(200),
@ForeignCurrency NVARCHAR(200)
)
AS
BEGIN
IF(@IsLastYear = 1)
BEGIN
IF(@IsAllowLinkedJE = 0)
	SELECT intGLNumber, strDesc FROM tblAccountsLY WHERE bitInactive = 0 AND bitLinkCEarnings = 0 AND bitLinkAR = 0 AND bitLinkAP = 0 AND bitLinkDeposit = 0 AND bitLinkPrePay = 0 AND intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets 
	WHERE blnService = 0 AND blnBuyout = 0) AND bitInactive = 0 AND (intGroupCode = 1 OR intGroupCode = 2) AND intGLNumber = @Text AND (strCurrency = @HomeCurrency OR strCurrency = @ForeignCurrency)

ELSE
SELECT intGLNumber, strDesc FROM tblAccountsLY WHERE bitInactive = 0 AND (intAccClass <> 28) AND (intGroupCode = 1 OR intGroupCode = 2) AND intGLNumber = @Text AND (strCurrency = @HomeCurrency OR strCurrency = @ForeignCurrency)
END
ELSE
BEGIN
IF(@IsAllowLinkedJE = 0)
	SELECT intGLNumber, strDesc FROM tblAccounts WHERE bitInactive = 0 AND bitLinkCEarnings = 0 AND bitLinkAR = 0 AND bitLinkAP = 0 AND bitLinkDeposit = 0 AND bitLinkPrePay = 0 AND intGLNumber NOT IN (SELECT intGLAsset FROM tblAccountSets 
	WHERE blnService = 0 AND blnBuyout = 0) AND bitInactive = 0 AND (intGroupCode = 1 OR intGroupCode = 2) AND intGLNumber = @Text AND (strCurrency = @HomeCurrency OR strCurrency = @ForeignCurrency)
ELSE
SELECT intGLNumber, strDesc FROM tblAccounts WHERE bitInactive = 0 AND (intAccClass <> 28) AND (intGroupCode = 1 OR intGroupCode = 2) AND intGLNumber = @Text AND (strCurrency = @HomeCurrency OR strCurrency = @ForeignCurrency)
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBMPreviewStatementTransferData] @Text NVARCHAR(200)
AS
BEGIN
SELECT tblAccounts.intGLNumber, tblAccounts.strDesc FROM tblAccounts 
LEFT OUTER JOIN tblInv ON tblInv.intExpAcct = tblAccounts.intGLNumber 
WHERE tblAccounts.bitLinkAP = 0 AND tblAccounts.bitLinkAR = 0 AND tblAccounts.bitLinkDeposit = 0 
AND tblAccounts.bitLinkPrePay = 0 AND tblAccounts.bitInventory = 0 
AND (tblAccounts.intGroupCode = 1 OR tblAccounts.intGroupCode = 2) 
AND (tblAccounts.intAccClass = 1 OR tblAccounts.intAccClass = 2 OR tblAccounts.intAccClass = 11 
OR tblAccounts.intAccClass = 12) AND (tblAccounts.bitInactive = 0) AND (tblAccounts.intGLNumber = @Text)  
ORDER BY intGLNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteBMPreviewStatementImport](
@ImportedID bigint,
@ID bigint
)
AS
BEGIN
DELETE FROM tblBankManagerImports WHERE lngImportedID = @ImportedID AND lngId =  @ID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBMPreviewSelect]  @ID bigint  
AS  
BEGIN  
SET NOCOUNT ON;  

SELECT *
FROM (
	SELECT tblBankManagerImports.lngImportedID AS ImportedID
		,tblBankManagerImports.strUserName AS UserName
		,tblBankManagerImports.lngId AS Id
		,tblBankManagerImports.dteDate AS DATE
		,tblBankManagerImports.strStatementDescription AS StatementDescription
		,tblBankManagerImports.strDocumentType AS DocumentType
		,CASE 
			WHEN ISNULL(tblBankManagerImports.strAccountType, '') = ''
				THEN tblBankManagerMappings.strAccountType
			ELSE tblBankManagerImports.strAccountType
			END AS AccountType
		,CASE bitImportComment
			WHEN 1
				THEN tblBankManagerImports.strStatementDescription
			ELSE CASE 
					WHEN ISNULL(tblBankManagerImports.strComment, '') = ''
						THEN tblBankManagerMappings.strComment
					ELSE tblBankManagerImports.strComment
					END
			END AS Comment
		,CASE 
			WHEN ISNULL(tblBankManagerMappings.strCustName, '') = ''
				THEN CASE 
						WHEN ISNULL(tblBankManagerMappings.strVendName, '') = ''
							THEN CASE 
									WHEN ISNULL(tblBankManagerMappings.intGLNumber, '') = ''
										THEN ''
									ELSE tblBankManagerMappings.intGLNumber
									END
						ELSE tblBankManagerMappings.strVendName
						END
			ELSE tblBankManagerMappings.strCustName
			END AS AccountName
		,ISNULL(tblCustomers.strCustDesc, ISNULL(tblvendors.strVendDesc, (
					SELECT ISNULL(tblAccounts1.strDesc, '')
					FROM tblAccounts AS tblAccounts1
					WHERE tblAccounts1.intGLNumber = tblBankManagerMappings.intGLNumber
					))) AS AccountDesc
		,CASE 
			WHEN ISNULL(tblBankManagerImports.strTaxCode, '') = ''
				THEN tblBankManagerMappings.strTaxCode
			ELSE tblBankManagerImports.strTaxCode
			END AS TaxCode
		,tblBankManagerImports.decAmount AS Amount
		,tblBankManagerMappings.strMappingName AS MappingName
		,tblBankManagerImports.lngGroupId AS GroupId
		,Isnull(tblBankManagerImports.YodleeReference, '') AS YodleeReference
	FROM tblBankManagerMappings
	LEFT OUTER JOIN tblCustomers ON ISNULL(tblBankManagerMappings.strCustName, '') = tblCustomers.strCustName
	LEFT OUTER JOIN tblVendors ON ISNULL(tblBankManagerMappings.strVendName, '') = tblVendors.strVendName
	LEFT OUTER JOIN tblAccounts ON SUBSTRING(tblBankManagerMappings.intGLNumber, 0, ISNULL((
					SELECT LEN(tblBankManagerMappings.intGLNumber) + 1
					WHERE CHARINDEX('/', tblBankManagerMappings.intGLNumber, 0) = 0
					), CHARINDEX('/', tblBankManagerMappings.intGLNumber, 0))) = tblAccounts.intGLNumber
	INNER JOIN tblBankManagerImports ON tblBankManagerMappings.strMappingName IN (
			SELECT tblBankManagerMappings_1.strMappingName
			FROM tblBankManagerMappings AS tblBankManagerMappings_1
			WHERE (LTRIM(RTRIM(tblBankManagerImports.strStatementDescription)) LIKE '%' + LTRIM(RTRIM(strMappingName)) + '%')
				AND (tblBankManagerImports.strDocumentType = tblBankManagerMappings_1.strDocumentType)
				AND tblBankManagerImports.strAccountType = ''
				AND tblBankManagerImports.lngImportedID = @ID
			)
		AND LTRIM(RTRIM(tblBankManagerImports.strDocumentType)) = LTRIM(RTRIM(tblBankManagerMappings.strDocumentType))
WHERE (tblBankManagerImports.lngImportedID = @ID)
		AND (
			tblBankManagerMappings.strMappingName = (
				SELECT TOP (1) strMappingName
				FROM tblBankManagerMappings AS tblBankManagerMappings_1
				WHERE (LTRIM(RTRIM(tblBankManagerImports.strStatementDescription)) LIKE '%' + LTRIM(RTRIM(strMappingName)) + '%')
					AND (tblBankManagerImports.strDocumentType = tblBankManagerMappings_1.strDocumentType)
					AND tblBankManagerImports.strAccountType = ''
				ORDER BY lngPriority ASC
				)
			)
	
	UNION ALL
	
	SELECT lngImportedID AS ImportedID
		,strUserName AS UserName
		,tblBankManagerImports.lngId AS Id
		,dteDate AS [Date]
		,strStatementDescription AS StatementDescription
		,tblBankManagerImports.strDocumentType AS DocumentType
		,tblBankManagerImports.strAccountType AS AccountType
		,substring((
				CASE 
					WHEN ISNULL(tblBankManagerImports.strComment, '') = ''
						THEN strStatementDescription
					ELSE tblBankManagerImports.strComment
					END
				), 0, 49) AS Comment
		,CASE 
			WHEN ISNULL(CASE 
						WHEN ISNULL(tblBankManagerMappings.strCustName, '') = ''
							THEN (
									CASE 
										WHEN ISNULL(tblBankManagerMappings.strVendName, '') = ''
											THEN (
													CASE 
														WHEN ISNULL(tblBankManagerMappings.intGLNumber, '') = ''
															THEN ''
														ELSE tblBankManagerMappings.intGLNumber
														END
													)
										ELSE tblBankManagerMappings.strVendName
										END
									)
						ELSE tblBankManagerMappings.strCustName
						END, '') = ''
				THEN CASE 
						WHEN ISNULL(tblBankManagerImports.strCustName, '') = ''
							THEN (
									CASE 
										WHEN ISNULL(tblBankManagerImports.strVendName, '') = ''
											THEN (
													CASE 
														WHEN ISNULL(tblBankManagerImports.intGLNumber, '') = ''
															THEN ''
														ELSE tblBankManagerImports.intGLNumber
														END
													)
										ELSE tblBankManagerImports.strVendName
										END
									)
						ELSE tblBankManagerImports.strCustName
						END
			ELSE CASE 
					WHEN ISNULL(tblBankManagerMappings.strCustName, '') = ''
						THEN (
								CASE 
									WHEN ISNULL(tblBankManagerMappings.strVendName, '') = ''
										THEN (
												CASE 
													WHEN ISNULL(tblBankManagerMappings.intGLNumber, '') = ''
														THEN ''
													ELSE tblBankManagerMappings.intGLNumber
													END
												)
									ELSE tblBankManagerMappings.strVendName
									END
								)
					ELSE tblBankManagerMappings.strCustName
					END
			END AS AccountName
	,CASE 
			WHEN ISNULL(tblCustomers.strCustDesc, '') = ''
				THEN (
						CASE 
							WHEN ISNULL(tblvendors.strVendDesc, '') = ''
								THEN (
										CASE 
											WHEN ISNULL(tblAccounts.strDesc, '') = ''
												THEN ''
											ELSE tblAccounts.strDesc
											END
										)
							ELSE tblvendors.strVendDesc
							END
						)
			ELSE tblCustomers.strCustDesc
			END AS AccountDesc
		,tblBankManagerImports.strTaxCode AS TaxCode
		,decAmount AS Amount
		,tblBankManagerImports.strMappingName AS MappingName
		,lngGroupId AS GroupId
		,ISNULL(YodleeReference, '') AS YodleeReference
	FROM tblBankManagerImports
	LEFT OUTER JOIN tblCustomers ON tblBankManagerImports.strCustName = tblCustomers.strCustName
	LEFT OUTER JOIN tblVendors ON tblBankManagerImports.strVendName = tblVendors.strVendName
	LEFT OUTER JOIN tblAccounts ON SUBSTRING(tblBankManagerImports.intGLNumber, 0, ISNULL((
					SELECT LEN(tblBankManagerImports.intGLNumber) + 1
					WHERE CHARINDEX('/', tblBankManagerImports.intGLNumber, 0) = 0
					), CHARINDEX('/', tblBankManagerImports.intGLNumber, 0))) = tblAccounts.intGLNumber
	LEFT JOIN tblBankManagerMappings ON LTRIM(RTRIM(tblBankManagerImports.strStatementDescription)) = LTRIM(RTRIM(tblBankManagerMappings.strMappingName))
		AND (tblBankManagerImports.strDocumentType = tblBankManagerMappings.strDocumentType)
	WHERE (tblBankManagerImports.lngImportedID = @ID)
		AND tblBankManagerImports.lngID NOT IN (
			SELECT tblBankManagerImports.lngId
			FROM tblBankManagerMappings
			CROSS JOIN tblBankManagerImports
			WHERE (tblBankManagerImports.lngImportedID = @ID)
				AND (
					tblBankManagerMappings.strMappingName = (
						SELECT TOP (1) strMappingName
						FROM tblBankManagerMappings AS tblBankManagerMappings_1
						WHERE (LTRIM(RTRIM(tblBankManagerImports.strStatementDescription)) LIKE '%' + LTRIM(RTRIM(strMappingName)) + '%')
							AND tblBankManagerImports.strDocumentType = tblBankManagerMappings_1.strDocumentType
							AND tblBankManagerImports.strAccountType = ''
						ORDER BY lngPriority ASC
						)
					)
			)
	) z
WHERE z.DocumentType IS NOT NULL
	AND ID > 0
ORDER BY ID

END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateBMPreviewStatementData](
@UserName NVARCHAR(200),
@dteDate DateTime,
@StatementDescription NVARCHAR(200),
@DocumentType NVARCHAR(200),
@AccountType NVARCHAR(200),
@CustName NVARCHAR(200),
@VendName NVARCHAR(200),
@GLNumber NVARCHAR(200),
@Comment NVARCHAR(200),
@TaxCode NVARCHAR(200),
@Amount money,
@MappingName NVARCHAR(200),
@GroupId bigint,
@ImportedID bigint,
@ID bigint
)
AS
BEGIN
UPDATE tblBankManagerImports SET 
strUserName = @UserName
,dteDate = @dteDate
,strStatementDescription = @StatementDescription
,strDocumentType = @DocumentType
,strAccountType = @AccountType
,strCustName = @CustName
,strVendName = @VendName
,intGLNumber = @GLNumber
,strComment = @Comment
,strTaxCode = @TaxCode
,decAmount = @Amount
,strMappingName = @MappingName
,lngGroupId = @GroupId
WHERE lngImportedID = @ImportedID AND lngId = @ID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBankManagerAddEditData](
@FilterIndex int,
@DateStart DateTime,
@DateEnd DateTime
)
AS
BEGIN
IF(@FilterIndex = 1)
SELECT DATEADD(dd, DATEDIFF(dd, 0, dteSystemDate), 0) AS SystemDate ,tblBankManagerBatch.strBMDocID as  BMDocID,intGLNumber as GLNumber ,strComment as Comment,
CASE WHEN(SELECT Top 1 tblBankManagerBatchDT.bitPosted FROM tblBankManagerBatchDT WHERE tblBankManagerBatchDT.strBMDocID = tblBankManagerBatch.strBMDocID) = 0 THEN 'Open' ELSE 'Processed' END AS [Status] FROM tblBankManagerBatch WHERE DATEADD(dd, DATEDIFF(dd, 0, dteSystemDate), 0) >= @DateStart AND DATEADD(dd, DATEDIFF(dd, 0, dteSystemDate), 0) <= @DateEnd
IF(@FilterIndex = 0)
SELECT * FROM(SELECT DATEADD(dd, DATEDIFF(dd, 0, dteSystemDate), 0) AS SystemDate ,tblBankManagerBatch.strBMDocID as BMDocID,intGLNumber as GLNumber ,strComment as Comment,CASE WHEN (SELECT Top 1 tblBankManagerBatchDT.bitPosted FROM tblBankManagerBatchDT WHERE tblBankManagerBatchDT.strBMDocID = tblBankManagerBatch.strBMDocID) = 0 THEN 'Open' ELSE 'Processed' END AS [Status] FROM tblBankManagerBatch WHERE DATEADD(dd, DATEDIFF(dd, 0, dteSystemDate), 0) >= @DateStart AND DATEADD(dd, DATEDIFF(dd, 0, dteSystemDate), 0) <= @DateEnd) AS Result1 WHERE [Status] = 'Open'
END
GO

----------------------------------------------------
Create procedure [dbo].[GetBMvDocJournalData](
@BMDocID NVARCHAR(200),
@LineNo int
)
AS
BEGIN
SELECT 
strJEDocID as OrdDocID, 
CASE WHEN lngJourID = 0 THEN ISNULL((SELECT DTL.lngJourID FROM tblBankManagerBatchDT DTL WHERE DTL.strJEDocID = tblBankManagerBatchDT.strJEDocID AND ISNULL(DTL.lngJourID,0) <> 0),0) ELSE lngJourID END as JourID
FROM tblBankManagerBatchDT 
WHERE (strBMDocID = @BMDocID) AND (intLineNo = @LineNo) AND (ISNULL(strJEDocID,'') <> '')
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBMPaymentPlanData] @InvDocId VARCHAR(200)  
AS  
BEGIN  
SELECT strInvDocID AS InvDocID  
,Total AS Total  
,InsuranceRate AS InsuranceRate  
,Deposit AS Deposit  
,InterestRate AS InterestRate  
,InstallmentPeriod AS InstallmentPeriod  
,InstallmentAmount AS InstallmentAmount  
,FirstInstallmentDate AS FirstInstallmentDate  
,LastInstallment AS LastInstallment  
,decFcPrtn AS FcPrtn  
,decFcLastPrtn AS FcLastPrtn  --10
,bitPmntContractAlive AS IsPmntContractAlive  
,decPenaltyInterestRate AS PenaltyInterestRate  
,strCurrency AS Currency  
,bitIsForeign AS IsForeign  --14
,decExchange AS Exchange  
,TotalF AS TotalF  
,InsuranceRateF AS InsuranceRateF  
,DepositF AS DepositF  
,InstallmentAmountF AS InstallmentAmountF  
,LastInstallmentF AS LastInstallmentF  
,decFcPrtnF AS FcPrtnF  
,decFcLastPrtnF AS FcLastPrtnF  
FROM tblPaymentPlan  
WHERE bitPmntContractAlive = 1  
AND strInvDocId = @InvDocId
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteBankManagerData](
@BMDocID NVARCHAR(200),
@LineNo int
)
AS
BEGIN
DELETE FROM tblBankManagerBatchDT WHERE strBMDocID = @BMDocID AND intLineNo =  @LineNo
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBMAllocationAmount] @CustName NVARCHAR(200)
AS
BEGIN
Select SUM(t2.decAmount) FROM tblcusttrans t1 INNER JOIN tblcusttransdt t2 ON t1.lngCustTrID = t2.lngCustTrID
WHERE t1.bitSettled = 0 AND t1.strInvDepNumber LIKE ('%OVERDUE INTEREST (%') AND t1.strCustName = @CustName
GROUP BY t1.lngCustTrID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertUpdateManageBankManagerBatch]  
(  
@BMDocIDH     nvarchar(50)=NULL  
,@GLNumberH    nvarchar(100)=NULL  
,@DateH        datetime=NULL  
,@SystemDateH  datetime=NULL  
,@UserNameH    nvarchar(100)=NULL  
,@CommentH     nvarchar(100)=NULL  
,@UpdateBankH  int=NULL  
,@CurrencyH    nvarchar(100)=NULL  
,@ExchangeH    decimal(20,6)=NULL  
)  
AS  
BEGIN  
IF NOT EXISTS (  
SELECT 1  
FROM tblBankManagerBatch  
WHERE strBMDocID = @BMDocIDH  
)  
BEGIN  
INSERT INTO tblBankManagerBatch (  
strBMDocID  
,dteDate  
,intGLNumber  
,dteSystemDate  
,strUserName  
,strComment  
,intUpdateBank  
,strCurrency  
,decExchange  
)  
VALUES (  
@BMDocIDH  
,@DateH  
,@GLNumberH  
,@SystemDateH  
,@UserNameH  
,@CommentH  
,@UpdateBankH  
,@CurrencyH  
,@ExchangeH  
)  
END  
ELSE  
BEGIN  
UPDATE tblBankManagerBatch  
SET dteDate = @DateH  
,intGLNumber = @GLNumberH  
,strComment = @CommentH  
,intUpdateBank = @UpdateBankH  
,strCurrency = @CurrencyH  
,decExchange = @ExchangeH  
WHERE strBMDocID = @BMDocIDH  
END  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertUpdateManageBankManagerBatchDT]  
(  
@BMDocID nvarchar(100)  
,@LineNo nvarchar(100)  
,@JourID nvarchar(100)  
,@UserName nvarchar(100)  
,@JournalDate nvarchar(100)  
,@DocumentType nvarchar(100)  
,@AccountType nvarchar(100)  
,@CuVeGeInID nvarchar(100)=NULL  
,@Dept bigInt=NULL   
,@LineComment nvarchar(100) =NULL   
,@LineReference nvarchar(100)=NULL   
,@GroupId  bigInt=NULL   
,@Source nvarchar(100)=NULL   
,@Debits money=NULL   
,@Credits  money=NULL  
,@LineTotExc  money=NULL  
,@LineTaxAmt  money=NULL  
,@LineTotInc  money=NULL  
,@TaxCode nvarchar(100)=NULL  
,@TaxObj image
,@Currency nvarchar(100)=NULL  
,@Exchange decimal(20,6)=NULL  
,@IsForeign bit=NULL  
,@DebitsF money=NULL  
,@CreditsF money=NULL  
,@LineTotExcF money=NULL  
,@LineTaxAmtF money=NULL  
,@LineTotIncF money=NULL  
,@Posted bit=NULL  
,@MRABankCode nvarchar(200)=NULL
)  
AS  
BEGIN  
IF NOT EXISTS (  
SELECT 1  
FROM tblBankManagerBatchDT  
WHERE strBMDocID = @BMDocID  
AND intLineNo = @LineNo  
)  
BEGIN  
INSERT INTO tblBankManagerBatchDT (  
strBMDocID  
,intLineNo  
,lngJourID  
,strUserName  
,dteJournalDate  
,strDocumentType  
,strAccountType  
,strCuVeGeInID  
,intDept  
,strLineComment  
,strLineReference  
,lngGroupId  
,strSource  
,decDebits  
,decCredits  
,decLineTotExc  
,decLineTaxAmt  
,decLineTotInc  
,strTaxCode  
,imgTaxObj  
,strCurrency  
,decExchange  
,bitIsForeign  
,decDebitsF  
,decCreditsF  
,decLineTotExcF  
,decLineTaxAmtF  
,decLineTotIncF  
,bitPosted 
,strMRABankCode
)  
VALUES (  
@BMDocID  
,@LineNo  
,@JourID  
,@UserName  
,@JournalDate  
,@DocumentType  
,@AccountType  
,@CuVeGeInID  
,@Dept  
,@LineComment  
,@LineReference  
,@GroupId  
,@Source  
,@Debits  
,@Credits  
,@LineTotExc  
,@LineTaxAmt  
,@LineTotInc  
,@TaxCode  
,@TaxObj  
,@Currency  
,@Exchange  
,@IsForeign  
,@DebitsF  
,@CreditsF  
,@LineTotExcF  
,@LineTaxAmtF  
,@LineTotIncF  
,@Posted  
,@MRABankCode
)  
END  
ELSE  
BEGIN  
UPDATE tblBankManagerBatchDT  
SET lngJourID = @JourID  
,strUserName = @UserName  
,dteJournalDate = @JournalDate  
,strDocumentType = @DocumentType  
,strAccountType = @AccountType  
,strCuVeGeInID = @CuVeGeInID  
,intDept = @Dept  
,strLineComment = @LineComment  
,strLineReference = @LineReference  
,lngGroupId = @GroupId  
,strSource = @Source  
,decDebits = @Debits  
,decCredits = @Credits  
,decLineTotExc = @LineTotExc  
,decLineTaxAmt = @LineTaxAmt  
,decLineTotInc = @LineTotInc  
,strTaxCode = @TaxCode  
,imgTaxObj = @TaxObj  
,strCurrency = @Currency  
,decExchange = @Exchange  
,bitIsForeign = @IsForeign  
,decDebitsF = @DebitsF  
,decCreditsF = @CreditsF  
,decLineTotExcF = @LineTotExcF  
,decLineTaxAmtF = @LineTaxAmtF  
,decLineTotIncF = @LineTotIncF  
,bitPosted = @Posted 
,strMRABankCode = @MRABankCode
WHERE intLineNo = @LineNo  
AND strBMDocID = @BMDocID  
END  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertUpdateBankManagerAllocationsData](
@BMDocID NVARCHAR(200),
@ParentCuVe NVARCHAR(200),
@AllocationID bigint,
@BatchDTLineNo bigint, 
@ReceiptAmount decimal,
@Date Datetime,
@VarianceHome decimal,
@ActualPrepayAmountHome decimal,
@AcutalAPAmountHome decimal,
@CustTransID int,
@DiscountAvailable decimal,
@DiscountAvailableHome decimal,
@DiscountTaken decimal,
@DiscountTakenHome decimal,
@CustTransType int,
@DueAmountExcl decimal,
@DueAmountIncl decimal,
@DueAmountHomeIncl decimal,
@OriginalAmountIncl decimal,
@OriginalAmountHomeIncl decimal,
@OriginalAmount decimal,
@OriginalAmountExcl decimal,
@Tax decimal,
@OrderNumber NVARCHAR(200),
@DocumentNumber NVARCHAR(200),
@JournalNumber NVARCHAR(200),
@CuVe NVARCHAR(200),
@Reference NVARCHAR(200),
@ReceiptsAmount decimal,
@WithholdingTax decimal,
@PaymentAmtExcl decimal,
@VendCustType NVARCHAR(15)
)
AS
BEGIN
IF NOT EXISTS (SELECT * FROM tblBankManagerAllocations WHERE strBMDocID = @BMDocID and lngAllocationID = @AllocationID and lngBatchDTLineNo = @BatchDTLineNo)
BEGIN
INSERT INTO tblBankManagerAllocations (strBMDocID ,lngAllocationID ,lngBatchDTLineNo ,strParentCuVe , strCuVe ,decReceiptAmount ,dteDate ,decVarianceHome ,decActualPrepayAmountHome ,
decAcutalAPAmountHome ,intCustTransID ,decDiscountAvailable ,decDiscountAvailableHome ,decDiscountTaken ,decDiscountTakenHome ,intCustTransType ,decDueAmountExcl ,decDueAmountIncl ,
decDueAmountHomeIncl ,decOriginalAmountIncl ,decOriginalAmountHomeIncl ,decOriginalAmount ,decOriginalAmountExcl ,decTax ,strOrderNumber ,strDocumentNumber ,strJournalNumber ,
strReference ,decReceiptsAmount ,decWithholdingTax ,decPaymentAmtExcl,strVendCustType) VALUES (@BMDocID ,@AllocationID ,@BatchDTLineNo , @ParentCuVe , @CuVe ,@ReceiptAmount ,@Date ,@VarianceHome ,
@ActualPrepayAmountHome ,@AcutalAPAmountHome ,@CustTransID ,@DiscountAvailable ,@DiscountAvailableHome ,@DiscountTaken ,@DiscountTakenHome ,@CustTransType ,@DueAmountExcl ,@DueAmountIncl ,
@DueAmountHomeIncl ,@OriginalAmountIncl ,@OriginalAmountHomeIncl ,@OriginalAmount ,@OriginalAmountExcl ,@Tax ,@OrderNumber ,@DocumentNumber ,@JournalNumber ,@Reference ,@ReceiptsAmount ,
@WithholdingTax ,@PaymentAmtExcl,@VendCustType)
END 
ELSE 
BEGIN
UPDATE tblBankManagerAllocations SET strBMDocID = @BMDocID ,lngAllocationID = @AllocationID ,strParentCuVe = @ParentCuVe ,strCuVe = @CuVe ,decReceiptAmount = @ReceiptAmount ,
dteDate = @Date ,decVarianceHome = @VarianceHome ,decActualPrepayAmountHome = @ActualPrepayAmountHome ,decAcutalAPAmountHome = @AcutalAPAmountHome ,intCustTransID = @CustTransID ,
decDiscountAvailable = @DiscountAvailable ,decDiscountAvailableHome = @DiscountAvailableHome ,decDiscountTaken = @DiscountTaken ,decDiscountTakenHome = @DiscountTakenHome ,
intCustTransType = @CustTransType ,decDueAmountExcl = @DueAmountExcl ,decDueAmountIncl = @DueAmountIncl ,decDueAmountHomeIncl = @DueAmountHomeIncl ,decOriginalAmountIncl = @OriginalAmountIncl ,
decOriginalAmountHomeIncl = @OriginalAmountHomeIncl ,decOriginalAmount = @OriginalAmount ,decOriginalAmountExcl = @OriginalAmountExcl ,decTax = @Tax ,strOrderNumber = @OrderNumber ,
strDocumentNumber = @DocumentNumber ,strJournalNumber = @JournalNumber ,strReference = @Reference ,decReceiptsAmount = @ReceiptsAmount ,decWithholdingTax = @WithholdingTax ,
decPaymentAmtExcl = @PaymentAmtExcl, strVendCustType = @VendCustType WHERE lngAllocationID = @AllocationID AND strBMDocID = @BMDocID AND lngBatchDTLineNo = @BatchDTLineNo
END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBMCustTransTotal](
@CustName NVARCHAR(200),
@CustTrID bigint,
@PeriodEndDate DateTime
)
AS
BEGIN
SELECT 
Sum(Case WHEN decAmount IS NULL THEN 0 ELSE CASE WHEN decAmount < 0 THEN -decAmount ELSE 0 END END) As [payments]
FROM tblcusttransDT
WHERE lngCustTrID IN (
Select lngCustTrID FROM tblcusttrans 
WHERE strCustName = @CustName AND lngCustTrID = @CustTrID AND dteJournalDate <= @PeriodEndDate)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBMCustTransPenalties](
@CustName NVARCHAR(200),
@PeriodEndDate DateTime
)
AS
BEGIN
Select 
SUM(t2.decAmount)
FROM tblcusttrans t1 INNER JOIN tblcusttransdt t2 ON t1.lngCustTrID = t2.lngCustTrID
WHERE t1.bitSettled = 0 AND t1.strInvDepNumber LIKE ('%OVERDUE INTEREST (%') AND t1.strCustName = @CustName AND t2.dteJournalDate <= @periodEndDate
GROUP BY t1.lngCustTrID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertBankManagerImportsData](
@ImportedID bigint,
@UserName NVARCHAR(200),
@Id bigint,
@Date DateTime,
@StatementDescription NVARCHAR(200),
@DocumentType NVARCHAR(200),
@AccountType NVARCHAR(200),
@CustName NVARCHAR(200),
@VendName NVARCHAR(200),
@GLNumber NVARCHAR(200),
@Comment NVARCHAR(200),
@TaxCode NVARCHAR(200),
@Amount decimal,
@MappingName NVARCHAR(200),
@GroupId bigint
)
AS
BEGIN
INSERT INTO [tblBankManagerImports] 
([lngImportedID]
,[strUserName]
,[lngId]
,[dteDate]
,[strStatementDescription]
,[strDocumentType]
,[strAccountType]
,[strCustName]
,[strVendName]
,[intGLNumber]
,[strComment] 
,[strTaxCode] 
,[decAmount] 
,[strMappingName] 
,[lngGroupId])
VALUES
(@ImportedID
,@UserName 
,@Id 
,@Date 
,@StatementDescription 
,@DocumentType 
,@AccountType 
,@CustName 
,@VendName 
,@GLNumber 
,@Comment 
,@TaxCode 
,@Amount
,@MappingName 
,@GroupId)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertBankManagerImportsGridData](
@ImportedID bigint,
@UserName NVARCHAR(200),
@Id bigint,
@Date DateTime,
@StatementDescription NVARCHAR(200),
@DocumentType NVARCHAR(200),
@AccountType NVARCHAR(200),
@CustName NVARCHAR(200),
@VendName NVARCHAR(200),
@GLNumber NVARCHAR(200),
@Comment NVARCHAR(200),
@TaxCode NVARCHAR(200),
@Amount money,
@MappingName NVARCHAR(200),
@GroupId bigint,
@YodleeReference NVARCHAR(200),
@Reference NVARCHAR(200)
)
AS
BEGIN
INSERT INTO [tblBankManagerImports] 
([lngImportedID]
,[strUserName]
,[lngId]
,[dteDate]
,[strStatementDescription]
,[strDocumentType]
,[strAccountType]
,[strCustName]
,[strVendName]
,[intGLNumber]
,[strComment] 
,[strTaxCode] 
,[decAmount] 
,[strMappingName] 
,[lngGroupId]
,[YodleeReference]
,[strReference])
VALUES
(@ImportedID
,@UserName 
,@Id 
,@Date 
,@StatementDescription 
,@DocumentType 
,@AccountType 
,@CustName 
,@VendName 
,@GLNumber 
,@Comment 
,@TaxCode 
,@Amount
,@MappingName 
,@GroupId
,@YodleeReference
,@Reference)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBankManagerPrintData](
@Credits NVARCHAR(100),
@Debits NVARCHAR(100),
@DocID NVARCHAR(200),
@CustomerName NVARCHAR(200),
@VendorName NVARCHAR(200)
)
AS
BEGIN
SELECT tblBankManagerBatch.strBMDocID, tblBankManagerBatch.intGLNumber, tblBankManagerBatch.dteDate, 
tblBankManagerBatch.strComment, tblBankManagerBatch.strCurrency, tblBankManagerBatch.decExchange,  
tblAccounts.strDesc,Cast(@Credits as Money) As decCredit,Cast(@Debits as Money) As decDebit 
FROM tblBankManagerBatch 
INNER JOIN tblAccounts ON tblBankManagerBatch.intGLNumber = tblAccounts.intGLNumber 
WHERE strBMDocID = @DocID
SELECT strBMDocID,   intLineNo, dteJournalDate, strDocumentType, strAccountType, strCuVeGeInID, strAccountDescription, intDept, 
strLineComment, strLineReference, lngGroupId, strSource, decDebits, decCredits, decLineTotExc, decLineTaxAmt, decLineTotInc, 
strTaxCode, strCurrency, decExchange, bitIsForeign, decDebitsF, decCreditsF, decLineTotExcF, decLineTaxAmtF, decLineTotIncF, 
bitPosted FROM (SELECT  tblBankManagerBatchDT.strBMDocID, tblBankManagerBatchDT.intLineNo, tblBankManagerBatchDT.dteJournalDate,
tblBankManagerBatchDT.strDocumentType, tblBankManagerBatchDT.strAccountType, tblBankManagerBatchDT.strCuVeGeInID, 
tblCustomers.strCustDesc AS strAccountDescription, tblBankManagerBatchDT.intDept, tblBankManagerBatchDT.strLineComment, 
tblBankManagerBatchDT.strLineReference, tblBankManagerBatchDT.lngGroupId, tblBankManagerBatchDT.strSource, 
tblBankManagerBatchDT.decDebits, tblBankManagerBatchDT.decCredits, tblBankManagerBatchDT.decLineTotExc, 
tblBankManagerBatchDT.decLineTaxAmt, tblBankManagerBatchDT.decLineTotInc, tblBankManagerBatchDT.strTaxCode, 
tblBankManagerBatchDT.imgTaxObj, tblBankManagerBatchDT.strCurrency, tblBankManagerBatchDT.decExchange, 
tblBankManagerBatchDT.bitIsForeign, tblBankManagerBatchDT.decDebitsF, tblBankManagerBatchDT.decCreditsF, 
tblBankManagerBatchDT.decLineTotExcF, tblBankManagerBatchDT.decLineTaxAmtF, tblBankManagerBatchDT.decLineTotIncF, 
tblBankManagerBatchDT.bitPosted FROM tblBankManagerBatchDT LEFT OUTER JOIN tblCustomers 
ON tblBankManagerBatchDT.strCuVeGeInID = tblCustomers.strCustName WHERE 
(tblBankManagerBatchDT.strBMDocID = @DocID) AND (tblBankManagerBatchDT.strAccountType = @CustomerName) AND 
(tblBankManagerBatchDT.intLineNo > 0) UNION ALL SELECT tblBankManagerBatchDT_3.strBMDocID, 
tblBankManagerBatchDT_3.intLineNo, tblBankManagerBatchDT_3.dteJournalDate, 
tblBankManagerBatchDT_3.strDocumentType, tblBankManagerBatchDT_3.strAccountType, 
tblBankManagerBatchDT_3.strCuVeGeInID, tblVendors.strVendDesc AS strAccountDescription, 
tblBankManagerBatchDT_3.intDept, tblBankManagerBatchDT_3.strLineComment, 
tblBankManagerBatchDT_3.strLineReference, tblBankManagerBatchDT_3.lngGroupId, tblBankManagerBatchDT_3.strSource,
tblBankManagerBatchDT_3.decDebits, tblBankManagerBatchDT_3.decCredits, tblBankManagerBatchDT_3.decLineTotExc, 
tblBankManagerBatchDT_3.decLineTaxAmt, tblBankManagerBatchDT_3.decLineTotInc, tblBankManagerBatchDT_3.strTaxCode, 
tblBankManagerBatchDT_3.imgTaxObj, tblBankManagerBatchDT_3.strCurrency, tblBankManagerBatchDT_3.decExchange, 
tblBankManagerBatchDT_3.bitIsForeign, tblBankManagerBatchDT_3.decDebitsF, tblBankManagerBatchDT_3.decCreditsF, 
tblBankManagerBatchDT_3.decLineTotExcF, tblBankManagerBatchDT_3.decLineTaxAmtF, tblBankManagerBatchDT_3.decLineTotIncF, 
tblBankManagerBatchDT_3.bitPosted FROM tblBankManagerBatchDT AS tblBankManagerBatchDT_3 LEFT OUTER JOIN tblVendors 
ON tblBankManagerBatchDT_3.strCuVeGeInID = tblVendors.strVendName WHERE (tblBankManagerBatchDT_3.strBMDocID = @DocID)
AND (tblBankManagerBatchDT_3.strAccountType = @VendorName) AND (tblBankManagerBatchDT_3.intLineNo > 0) 
UNION ALL SELECT tblBankManagerBatchDT_2.strBMDocID, tblBankManagerBatchDT_2.intLineNo, 
tblBankManagerBatchDT_2.dteJournalDate, tblBankManagerBatchDT_2.strDocumentType, 
tblBankManagerBatchDT_2.strAccountType, tblBankManagerBatchDT_2.strCuVeGeInID, 
tblAccounts.strDesc AS strAccountDescription, tblBankManagerBatchDT_2.intDept, 
tblBankManagerBatchDT_2.strLineComment, tblBankManagerBatchDT_2.strLineReference, 
tblBankManagerBatchDT_2.lngGroupId, tblBankManagerBatchDT_2.strSource, tblBankManagerBatchDT_2.decDebits, 
tblBankManagerBatchDT_2.decCredits, tblBankManagerBatchDT_2.decLineTotExc, 
tblBankManagerBatchDT_2.decLineTaxAmt, tblBankManagerBatchDT_2.decLineTotInc, 
tblBankManagerBatchDT_2.strTaxCode, tblBankManagerBatchDT_2.imgTaxObj, tblBankManagerBatchDT_2.strCurrency, 
tblBankManagerBatchDT_2.decExchange, tblBankManagerBatchDT_2.bitIsForeign, 
tblBankManagerBatchDT_2.decDebitsF, tblBankManagerBatchDT_2.decCreditsF, 
tblBankManagerBatchDT_2.decLineTotExcF, tblBankManagerBatchDT_2.decLineTaxAmtF, 
tblBankManagerBatchDT_2.decLineTotIncF, tblBankManagerBatchDT_2.bitPosted FROM tblBankManagerBatchDT AS tblBankManagerBatchDT_2 
LEFT OUTER JOIN tblAccounts ON tblBankManagerBatchDT_2.strCuVeGeInID = tblAccounts.intGLNumber WHERE 
(tblBankManagerBatchDT_2.strBMDocID = @DocID) AND (tblBankManagerBatchDT_2.strAccountType IN ('General Ledger', 'Bank Transfer')) 
UNION ALL SELECT tblBankManagerBatchDT_1.strBMDocID, intLineNo, dteJournalDate, strDocumentType, strAccountType, strCuVeGeInID,
'' AS strAccountDescription, intDept, strLineComment, strLineReference, lngGroupId, strSource, decDebits, decCredits, 
decLineTotExc, decLineTaxAmt, decLineTotInc, strTaxCode, imgTaxObj, strCurrency, decExchange, bitIsForeign, decDebitsF,
decCreditsF, decLineTotExcF, decLineTaxAmtF, decLineTotIncF, bitPosted FROM tblBankManagerBatchDT AS tblBankManagerBatchDT_1 
WHERE (strBMDocID = @DocID) AND (strAccountType IS NULL OR strAccountType = '') AND (intLineNo > 0)) AS z ORDER BY intLineNo
SELECT strBMDocID, lngAllocationID, lngBatchDTLineNo, strCuVe, decReceiptAmount, dteDate, decVarianceHome, 
decActualPrepayAmountHome, decAcutalAPAmountHome, intCustTransID, decDiscountAvailable, decDiscountAvailableHome, 
decDiscountTaken, decDiscountTakenHome, intCustTransType, decDueAmountExcl, decDueAmountIncl, decDueAmountHomeIncl, 
decOriginalAmountIncl, decOriginalAmountHomeIncl, decOriginalAmount, decOriginalAmountExcl, decTax, strOrderNumber, 
strDocumentNumber, strJournalNumber, strReference, decReceiptsAmount, decWithholdingTax, decPaymentAmtExcl, strParentCuVe 
FROM tblBankManagerAllocations WHERE (strBMDocID = @DocID) ORDER BY strBMDocID, lngBatchDTLineNo, lngAllocationID
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBMCustCount] @CustName NVARCHAR(200)
AS
BEGIN
SELECT COUNT(strCustName) FROM tblCustTrans WHERE strCustName = @CustName AND bitSettled = 0 AND strInvDocID IN(SELECT strInvDocId FROM tblPaymentPlan)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBankManagerCustomerAllocationData] (
	@IsHP BIT
	,@IsAllowReceiptOnSalesOrder BIT
	,@DocNumber NVARCHAR(200)
	,@CustID NVARCHAR(200)
	,@JournalDate DATETIME
	)
AS
BEGIN
	IF (@IsHP = 0)
	BEGIN
		IF (@IsAllowReceiptOnSalesOrder = 0)
		BEGIN
			SELECT Z.strInvDepNumber AS InvDepNumber
				,Z.strInvDocID AS DocumentNumber
				,Z.dteJournalDate AS JournalDate
				,Z.strSoNumber AS PONumber
				,Z.decInvAmount AS InvAmount
				,--4
				Z.decInvAmountF AS InvAmountF
				,Z.decAmount AS Amount
				,--6
				Z.decAmountF AS AmountF
				,Z.intTransType AS TransactionType
				,Z.decDiscAvail AS DiscAvailable
				,Z.decDiscAvailF AS DiscAvailF
				,Z.dteDiscExpires AS DiscExpires
				,Z.lngCustTrID AS VendTrID
				,ISNULL(tblInvoiceDoc.decVAT, 0) AS VAT
				,--13
				ISNULL(tblInvoiceDoc.decVATF, 0) AS VATF
				,Z.VENDCUSTTYPE
				,Z.strCustName AS VendorName
				,Z.strJEDocID AS JEDocID --16
			FROM (
				SELECT tblCustTrans.strInvDepNumber
					,tblCustTrans.strInvDocID
					,tblCustTrans.dteJournalDate
					,tblCustTrans.strSoNumber
					,tblCustTrans.decInvAmount
					,tblCustTrans.decInvAmountF
					,SUM(tblCustTransDT.decAmount) AS decAmount
					,SUM(tblCustTransDT.decAmountF) AS decAmountF
					,tblCustTrans.intTransType
					,tblCustTrans.decDiscAvail
					,tblCustTrans.decDiscAvailF
					,tblCustTrans.dteDiscExpires
					,tblCustTrans.lngCustTrID
					,tblCustTrans.strCustName
					,ISNULL((
							SELECT COUNT(strInvDocID)
							FROM tblPaymentPlan
							WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID
							), 0) AS intPaymentPlan
					,tblCustTrans.strJEDocID
      ,'CUST' As VENDCUSTTYPE
				FROM tblCustTrans
				INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
				WHERE (tblCustTrans.strCustName = @CustID)
					AND tblCustTransDT.bitReversed = 0
					AND tblCustTrans.bitSettled = 0
					AND (
						tblCustTrans.dteJournalDate <= (
							SELECT DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, @JournalDate) + 1, 0))
							)
						)
					AND (
						tblCustTrans.strOrdDocID IS NULL
						OR (
							tblCustTrans.strInvDocID IS NOT NULL
							AND tblCustTrans.strOrdDocID IS NOT NULL
							)
						)
					AND (
						tblCustTrans.strInvDocID LIKE ('%' + @DocNumber + '%')
						OR tblCustTrans.strInvDepNumber LIKE ('%' + @DocNumber + '%')
						OR tblCustTrans.strSoNumber LIKE ('%' + @DocNumber + '%')
						OR tblCustTrans.decInvAmount LIKE ('%' + @DocNumber + '%')
						OR decAmount LIKE ('%' + @DocNumber + '%')
						)
				GROUP BY tblCustTrans.strCustName
					,tblCustTrans.lngCustTrID
					,tblCustTrans.strInvDepNumber
					,tblCustTrans.dteJournalDate
					,tblCustTrans.strInvDocID
					,tblCustTrans.strSoNumber
					,tblCustTrans.decInvAmount
					,tblCustTrans.decInvAmountF
					,tblCustTrans.intTransType
					,tblCustTrans.decDiscAvail
					,tblCustTrans.decDiscAvailF
					,tblCustTrans.dteDiscExpires
					,tblCustTrans.strJEDocID
				) Z
			LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID
			WHERE Z.intPaymentPlan = 0
				OR Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%')
			ORDER BY Z.strCustName
				,Z.intTransType
				,Z.strInvDocID
		END
		ELSE
		BEGIN
				;

			WITH cteInvoices
			AS (
				SELECT Z.strInvDepNumber AS InvDepNumber
					,Z.strInvDocID AS DocumentNumber
					,Z.dteJournalDate AS JournalDate
					,Z.strSoNumber AS PONumber
					,Z.decInvAmount AS InvAmount
					,Z.decInvAmountF AS InvAmountF
					,Z.decAmount AS Amount
					,Z.decAmountF AS AmountF
					,Z.intTransType AS TransactionType
					,Z.decDiscAvail AS DiscAvailable
					,Z.decDiscAvailF AS DiscAvailF
					,Z.dteDiscExpires AS DiscExpires
					,Z.lngCustTrID AS VendTrID
					,ISNULL(tblInvoiceDoc.decVAT, 0) AS VAT
					,ISNULL(tblInvoiceDoc.decVATF, 0) AS VATF
					,Z.VENDCUSTTYPE
					,Z.strCustName AS VendorName
					,Z.strJEDocID AS JEDocID
				FROM (
					SELECT tblCustTrans.strInvDepNumber
						,tblCustTrans.strInvDocID
						,tblCustTrans.dteJournalDate
						,tblCustTrans.strSoNumber
						,tblCustTrans.decInvAmount
						,tblCustTrans.decInvAmountF
						,SUM(tblCustTransDT.decAmount) AS decAmount
						,SUM(tblCustTransDT.decAmountF) AS decAmountF
						,tblCustTrans.intTransType
						,tblCustTrans.decDiscAvail
						,tblCustTrans.decDiscAvailF
						,tblCustTrans.dteDiscExpires
						,tblCustTrans.lngCustTrID
						,'CUST' AS VENDCUSTTYPE
						,tblCustTrans.strCustName
						,ISNULL((
								SELECT COUNT(strInvDocID)
								FROM tblPaymentPlan
								WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID
								), 0) AS intPaymentPlan
						,tblCustTrans.strJEDocID
					FROM tblCustTrans
					INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
					WHERE (tblCustTrans.strCustName = @CustID)
						AND tblCustTransDT.bitReversed = 0
						AND tblCustTrans.bitSettled = 0
						AND (
							tblCustTrans.dteJournalDate <= (
								SELECT DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, @JournalDate) + 1, 0))
								)
							)
						AND (
							tblCustTrans.strOrdDocID IS NULL
							OR (
								tblCustTrans.strInvDocID IS NOT NULL
								AND tblCustTrans.strOrdDocID IS NOT NULL
								)
							)
					GROUP BY tblCustTrans.strCustName
						,tblCustTrans.lngCustTrID
						,tblCustTrans.strInvDepNumber
						,tblCustTrans.dteJournalDate
						,tblCustTrans.strInvDocID
						,tblCustTrans.strSoNumber
						,tblCustTrans.decInvAmount
						,tblCustTrans.decInvAmountF
						,tblCustTrans.intTransType
						,tblCustTrans.decDiscAvail
						,tblCustTrans.decDiscAvailF
						,tblCustTrans.dteDiscExpires
						,tblCustTrans.strJEDocID
					) Z
				LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID
				WHERE Z.intPaymentPlan = 0
					OR Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%')
				)
				,cteOrders
			AS (
				SELECT Z.strInvDepNumber AS InvDepNumber
					,Z.strOrdDocID AS DocumentNumber
					,Z.dteJournalDate AS JournalDate
					,Z.strSoNumber AS PONumber
					,Z.decInvAmount AS InvAmount
					,Z.decInvAmountF AS InvAmountF
					,Z.decAmount AS Amount
					,Z.decAmountF AS AmountF
					,Z.intTransType AS TransactionType
					,Z.decDiscAvail AS DiscAvailable
					,Z.decDiscAvailF AS DiscAvailF
					,Z.dteDiscExpires AS DiscExpires
					,Z.lngCustTrID AS VendTrID
					,ISNULL(tblOrderDoc.decVAT, 0) AS VAT
					,ISNULL(tblOrderDoc.decVATF, 0) AS VATF
					,Z.VENDCUSTTYPE
					,Z.strCustName AS VendorName
					,Z.strJEDocID AS JEDocID
				FROM (
					SELECT tblCustTrans.strInvDepNumber
						,tblCustTrans.strOrdDocID
						,tblCustTrans.dteJournalDate
						,tblCustTrans.strSoNumber
						,tblCustTrans.decInvAmount
						,tblCustTrans.decInvAmountF
						,SUM(tblCustTransDT.decAmount) AS decAmount
						,SUM(tblCustTransDT.decAmountF) AS decAmountF
						,tblCustTrans.intTransType
						,tblCustTrans.decDiscAvail
						,tblCustTrans.decDiscAvailF
						,tblCustTrans.dteDiscExpires
						,tblCustTrans.lngCustTrID
						,'CUST' AS VENDCUSTTYPE
						,tblCustTrans.strCustName
						,tblCustTrans.strJEDocID
					FROM tblCustTrans
					INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
					WHERE (tblCustTrans.strCustName = @CustID)
						AND tblCustTransDT.bitReversed = 0
						AND tblCustTrans.bitSettled = 0
						AND (
							tblCustTrans.dteJournalDate <= (
								SELECT DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, @JournalDate) + 1, 0))
								)
							)
						AND tblCustTrans.strOrdDocID IS NOT NULL
						AND tblCustTrans.strInvDocID IS NULL
					GROUP BY tblCustTrans.strCustName
						,tblCustTrans.lngCustTrID
						,tblCustTrans.strInvDepNumber
						,tblCustTrans.dteJournalDate
						,tblCustTrans.strOrdDocID
						,tblCustTrans.strSoNumber
						,tblCustTrans.decInvAmount
						,tblCustTrans.decInvAmountF
						,tblCustTrans.intTransType
						,tblCustTrans.decDiscAvail
						,tblCustTrans.decDiscAvailF
						,tblCustTrans.dteDiscExpires
						,tblCustTrans.strJEDocID
					) Z
				LEFT JOIN tblOrderDoc ON Z.strOrdDocID = tblOrderDoc.strOrdDocID
				WHERE Z.strInvDepNumber NOT LIKE ('%OVERDUE INTEREST (%')
				)
				,cteOrdersFromOrderDoc
			AS (
				SELECT tblOrderDoc.strReference AS InvDepNumber
					,tblOrderDoc.strOrdDocID AS DocumentNumber
					,tblOrderDoc.dteJournalDate AS JournalDate
					,tblOrderDoc.strOrdDocID AS PONumber
					,tblOrderDoc.decTotal AS InvAmount
					,tblOrderDoc.decTotalF AS InvAmountF
					,tblOrderDoc.decTotal AS Amount
					,tblOrderDoc.decTotalF AS AmountF
					,1 AS TransactionType
					,0 AS DiscAvailable
					,0 AS DiscAvailF
					,0 AS DiscExpires
					,0 AS VendTrID
					,ISNULL(decVAT, 0) AS VAT
					,ISNULL(decVATF, 0) AS VATF
					,'CUST' AS VENDCUSTTYPE
					,tblOrderDoc.strCustName AS VendorName
					,NULL AS JEDocID
				FROM tblOrderDoc
				WHERE intDocType = 1
					AND bitCleared = 0
					AND tblOrderDoc.strCustName = @CustID
					AND tblOrderDoc.strOrdDocID NOT IN (
						SELECT strOrdDocID
						FROM tblCustTrans
						WHERE strOrdDocID IS NOT NULL
						)
					AND (
						tblOrderDoc.dteJournalDate <= (
							SELECT DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, @JournalDate) + 1, 0))
							)
						)
					AND (
						CASE 
							WHEN tblOrderDoc.bitIsForeign = 1
								THEN tblOrderDoc.decTotalF
							ELSE tblOrderDoc.decTotal
							END <> 0
						)
				)
			SELECT *
			FROM cteInvoices
			
			UNION
			
			SELECT *
			FROM cteOrders
			
			UNION
			
			SELECT *
			FROM cteOrdersFromOrderDoc
			ORDER BY VendorName
				,TransactionType
				,DocumentNumber
		END
	END
	ELSE
	BEGIN
		SELECT Z.strInvDepNumber AS InvDepNumber
			,Z.strInvDocID AS DocumentNumber
			,Z.dteJournalDate AS JournalDate
			,Z.strSoNumber AS PONumber
			,Z.decInvAmount AS InvAmount
			,Z.decInvAmountF AS InvAmountF
			,Z.decAmount AS Amount
			,Z.decAmountF AS AmountF
			,Z.intTransType AS TransactionType
			,Z.decDiscAvail AS DiscAvailable
			,Z.decDiscAvailF AS DiscAvailF
			,Z.dteDiscExpires AS DiscExpires
			,Z.lngCustTrID AS VendTrID
			,ISNULL(tblInvoiceDoc.decVAT, 0) AS VAT
			,ISNULL(tblInvoiceDoc.decVATF, 0) AS VATF
			,Z.VENDCUSTTYPE
			,Z.strCustName AS VendorName
			,Z.strJEDocID AS JEDocID
		FROM (
			SELECT tblCustTrans.strInvDepNumber
				,tblCustTrans.strInvDocID
				,tblCustTrans.dteJournalDate
				,tblCustTrans.strSoNumber
				,tblCustTrans.decInvAmount
				,tblCustTrans.decInvAmountF
				,SUM(tblCustTransDT.decAmount) AS decAmount
				,SUM(tblCustTransDT.decAmountF) AS decAmountF
				,tblCustTrans.intTransType
				,tblCustTrans.decDiscAvail
				,tblCustTrans.decDiscAvailF
				,tblCustTrans.dteDiscExpires
				,tblCustTrans.lngCustTrID
				,'CUST' AS VENDCUSTTYPE
				,tblCustTrans.strCustName
				,ISNULL((
						SELECT COUNT(strInvDocID)
						FROM tblPaymentPlan
						WHERE tblPaymentPlan.strInvDocId = tblCustTrans.strInvDocID
						), 0) AS intPaymentPlan
				,tblCustTrans.strJEDocID
			FROM tblCustTrans
			INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
			WHERE (tblCustTrans.strCustName = @CustID)
				AND tblCustTransDT.bitReversed = 0
				AND tblCustTrans.bitSettled = 0
				AND (
					tblCustTrans.dteJournalDate <= (
						SELECT DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, @JournalDate) + 1, 0))
						)
					)
				AND CASE 
					WHEN tblCustTrans.bitIsForeign = 1
						THEN tblCustTrans.decInvAmountF
					ELSE tblCustTrans.decInvAmount
					END <> 0
				AND (
					tblCustTrans.strInvDocID LIKE ('%' + @DocNumber + '%')
					OR tblCustTrans.strInvDepNumber LIKE ('%' + @DocNumber + '%')
					OR tblCustTrans.strSoNumber LIKE ('%' + @DocNumber + '%')
					OR tblCustTrans.decInvAmount LIKE ('%' + @DocNumber + '%')
					OR decAmount LIKE ('%' + @DocNumber + '%')
					)
			GROUP BY tblCustTrans.strCustName
				,tblCustTrans.lngCustTrID
				,tblCustTrans.strInvDepNumber
				,tblCustTrans.dteJournalDate
				,tblCustTrans.strInvDocID
				,tblCustTrans.strSoNumber
				,tblCustTrans.decInvAmount
				,tblCustTrans.decInvAmountF
				,tblCustTrans.intTransType
				,tblCustTrans.decDiscAvail
				,tblCustTrans.decDiscAvailF
				,tblCustTrans.dteDiscExpires
				,tblCustTrans.strJEDocID
			) Z
		LEFT JOIN tblInvoiceDoc ON Z.strInvDocID = tblInvoiceDoc.strInvDocID
		WHERE Z.intPaymentPlan > 0
			OR Z.strInvDepNumber LIKE ('%OVERDUE INTEREST (%')
		ORDER BY Z.strCustName
			,Z.intTransType
			,Z.strInvDocID
	END
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateBMVendorTrans](
@Vendor NVARCHAR(200),
@CurrentYrStarts DateTime
)
AS
BEGIN
UPDATE tblVendors SET decBalDue = (SELECT ISNULL(SUM(tblVendTransDT.decAmount),0) FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID WHERE tblVendTrans.strVendName = @Vendor AND tblVendTransDT.bitReversed = 0), decYTDPurch = (SELECT ISNULL(SUM(decTotal),0) FROM tblInvoiceDocP WHERE strVendName = @Vendor AND bitHistoryTrans = 0 AND dteJournalDate >= @CurrentYrStarts), decBalDueF = (SELECT ISNULL(SUM(tblVendTransDT.decAmountF),0) FROM tblVendTrans INNER JOIN tblVendTransDT ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID WHERE tblVendTrans.strVendName = @Vendor AND tblVendTransDT.bitReversed = 0), decYTDPurchF = (SELECT ISNULL(SUM(decTotalF),0) FROM tblInvoiceDocP WHERE strVendName = @Vendor AND bitHistoryTrans = 0 AND dteJournalDate >= @CurrentYrStarts), dteLastUpdated = GetDate() WHERE strVendName = @Vendor
UPDATE tblVendTrans SET bitSettled = 1 WHERE bitSettled = 0 AND lngVendTrID IN (SELECT lngVendTrID FROM tblVendTransDT WHERE bitReversed = 0 GROUP BY lngVendTrID HAVING SUM(decAmount) = 0 AND SUM(decAmountF) = 0)
UPDATE tblVendTrans SET bitSettled = 0 WHERE bitSettled = 1 AND lngVendTrID IN (SELECT lngVendTrID FROM tblVendTransDT WHERE bitReversed = 0 GROUP BY lngVendTrID HAVING SUM(decAmount) <> 0 OR SUM(decAmountF) <> 0)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateBMCustomerTrans](
@CustName NVARCHAR(200),
@CurrentYrStarts DateTime
)
AS
BEGIN
UPDATE tblCustomers SET decBalDue = (SELECT ISNULL(SUM(tblCustTransDT.decAmount),0) FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = tblCustomers.strCustName AND tblCustTransDT.bitReversed = 0 AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))), decYTDPurch = (SELECT ISNULL(SUM(decTotal),0) FROM tblInvoiceDoc WHERE strCustName = tblCustomers.strCustName AND bitHistoryTrans = 0 AND dteJournalDate >= @CurrentYrStarts), decBalDueF = (SELECT ISNULL(SUM(tblCustTransDT.decAmountF),0) FROM tblCustTrans INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTrans.strCustName = tblCustomers.strCustName AND tblCustTransDT.bitReversed = 0 AND (tblCustTrans.strOrdDocID IS NULL OR (tblCustTrans.strInvDocID IS NOT NULL AND tblCustTrans.strOrdDocID IS NOT NULL) OR (tblCustTrans.strOrdDocID IS NOT NULL AND tblCustTransDT.lngCustPayID IS NOT NULL))), decYTDPurchF = (SELECT ISNULL(SUM(decTotalF),0) FROM tblInvoiceDoc WHERE strCustName = tblCustomers.strCustName AND bitHistoryTrans = 0 AND dteJournalDate >= @CurrentYrStarts), dteUpdated = GetDate() WHERE strCustName = @CustName
UPDATE tblCustTrans SET bitSettled = 1 WHERE bitSettled = 0 AND lngCustTrID IN (SELECT lngCustTrID FROM tblCustTransDT WHERE bitReversed = 0 GROUP BY lngCustTrID HAVING SUM(decAmount) = 0 AND SUM(decAmountF) = 0)
UPDATE tblCustTrans SET bitSettled = 0 WHERE bitSettled = 1 AND lngCustTrID IN (SELECT lngCustTrID FROM tblCustTransDT WHERE bitReversed = 0 GROUP BY lngCustTrID HAVING SUM(decAmount) <> 0 OR SUM(decAmountF) <> 0)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBMCustPayID] @PayID bigint
AS
BEGIN
SELECT lngJourID FROM tblCustPay WHERE lngCustPayID IN 
(SELECT lngCustPayID FROM tblCustTransDT WHERE lngCustPayID <> @PayID AND lngCustTrID IN 
(SELECT lngCustTrID FROM tblCustTransDT WHERE lngCustPayID = @PayID AND bitReversed = 0 AND intTransType = 1)  AND bitReversed = 0) AND bitReversed = 0 AND bitReversal = 0
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetBMOpenHelperData] @DocIDH NVARCHAR(200)
AS
BEGIN
SELECT 
tblBankManagerBatch.strBMDocID as BMDocID, 
tblBankManagerBatch.intGLNumber as GLNumber, 
tblBankManagerBatch.dteDate as [Date], 
tblBankManagerBatch.strComment as Comment, 
tblBankManagerBatch.strCurrency as Currency, 
tblBankManagerBatch.decExchange as ExchangeRate,  
tblAccounts.strDesc as AccountDesc
FROM tblBankManagerBatch 
INNER JOIN tblAccounts ON tblBankManagerBatch.intGLNumber = tblAccounts.intGLNumber 
WHERE strBMDocID = @DocIDH
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOpenBMMainData](
@DocID NVARCHAR(200),
@VendorName NVARCHAR(200),
@CustomerName NVARCHAR(200)
)
AS
BEGIN
SELECT 
intLineNo as Id ,
dteJournalDate as [Date],
strDocumentType as DocumentType,
strAccountType as AccountType,
strCuVeGeInID as AccountName,								--4
strAccountDescription as AccountDesc,
intDept as intDept,
strLineComment as Comment,							--7
strLineReference as Reference,
lngGroupId as GroupId,
strSource as [Source],
decDebits ,							--11
decCredits ,
decLineTotExc as Amount,
decLineTaxAmt as Tax,
decLineTotInc as Total,			--15
strTaxCode as TaxCode,
imgTaxObj as TaxObj,
strCurrency as Currency,
decExchange as ExchangeRate,
bitIsForeign as isForeign,			--20
decDebitsF ,
decCreditsF ,
decLineTotExcF ,
decLineTaxAmtF ,			--24
decLineTotIncF ,
bitPosted as Posted,
lngJourID as JournalID, --27
strMRABankCode as BankCode
FROM
(SELECT 
tblBankManagerBatchDT.intLineNo ,
tblBankManagerBatchDT.dteJournalDate ,
tblBankManagerBatchDT.strDocumentType ,
tblBankManagerBatchDT.strAccountType ,
tblBankManagerBatchDT.strCuVeGeInID ,
tblCustomers.strCustDesc AS strAccountDescription ,
tblBankManagerBatchDT.intDept ,
tblBankManagerBatchDT.strLineComment ,
tblBankManagerBatchDT.strLineReference ,
tblBankManagerBatchDT.lngGroupId ,
tblBankManagerBatchDT.strSource ,
tblBankManagerBatchDT.decDebits ,
tblBankManagerBatchDT.decCredits ,
tblBankManagerBatchDT.decLineTotExc ,
tblBankManagerBatchDT.decLineTaxAmt ,
tblBankManagerBatchDT.decLineTotInc ,
tblBankManagerBatchDT.strTaxCode ,
tblBankManagerBatchDT.imgTaxObj ,
tblBankManagerBatchDT.strCurrency ,
tblBankManagerBatchDT.decExchange ,
tblBankManagerBatchDT.bitIsForeign ,
tblBankManagerBatchDT.decDebitsF ,
tblBankManagerBatchDT.decCreditsF ,
tblBankManagerBatchDT.decLineTotExcF ,
tblBankManagerBatchDT.decLineTaxAmtF ,
tblBankManagerBatchDT.decLineTotIncF ,
tblBankManagerBatchDT.bitPosted ,
tblBankManagerBatchDT.lngJourID,
tblBankManagerBatchDT.strMRABankCode
FROM tblBankManagerBatchDT 
LEFT OUTER JOIN tblCustomers ON tblBankManagerBatchDT.strCuVeGeInID = tblCustomers.strCustName 
WHERE (tblBankManagerBatchDT.strBMDocID = @DocID) AND (tblBankManagerBatchDT.strAccountType =  @CustomerName) AND intLineNo > 0 
UNION ALL 
SELECT 
tblBankManagerBatchDT.intLineNo ,
tblBankManagerBatchDT.dteJournalDate ,
tblBankManagerBatchDT.strDocumentType ,
tblBankManagerBatchDT.strAccountType ,
tblBankManagerBatchDT.strCuVeGeInID ,
tblVendors.strVendDesc AS strAccountDescription ,
tblBankManagerBatchDT.intDept ,
tblBankManagerBatchDT.strLineComment ,
tblBankManagerBatchDT.strLineReference ,
tblBankManagerBatchDT.lngGroupId ,
tblBankManagerBatchDT.strSource ,
tblBankManagerBatchDT.decDebits ,
tblBankManagerBatchDT.decCredits ,
tblBankManagerBatchDT.decLineTotExc ,
tblBankManagerBatchDT.decLineTaxAmt ,
tblBankManagerBatchDT.decLineTotInc ,
tblBankManagerBatchDT.strTaxCode ,
tblBankManagerBatchDT.imgTaxObj ,
tblBankManagerBatchDT.strCurrency ,
tblBankManagerBatchDT.decExchange ,
tblBankManagerBatchDT.bitIsForeign ,
tblBankManagerBatchDT.decDebitsF ,
tblBankManagerBatchDT.decCreditsF ,
tblBankManagerBatchDT.decLineTotExcF ,
tblBankManagerBatchDT.decLineTaxAmtF ,
tblBankManagerBatchDT.decLineTotIncF ,
tblBankManagerBatchDT.bitPosted ,
tblBankManagerBatchDT.lngJourID ,
tblBankManagerBatchDT.strMRABankCode
FROM tblBankManagerBatchDT 
LEFT OUTER JOIN tblVendors ON tblBankManagerBatchDT.strCuVeGeInID = tblVendors.strVendName 
WHERE (strBMDocID = @DocID) AND strAccountType = @VendorName AND intLineNo > 0 
UNION ALL 
SELECT 
tblBankManagerBatchDT.intLineNo ,
tblBankManagerBatchDT.dteJournalDate ,
tblBankManagerBatchDT.strDocumentType ,
tblBankManagerBatchDT.strAccountType ,
tblBankManagerBatchDT.strCuVeGeInID ,
tblAccounts.strDesc AS strAccountDescription ,
tblBankManagerBatchDT.intDept ,
tblBankManagerBatchDT.strLineComment ,
tblBankManagerBatchDT.strLineReference ,
tblBankManagerBatchDT.lngGroupId ,
tblBankManagerBatchDT.strSource ,
tblBankManagerBatchDT.decDebits ,
tblBankManagerBatchDT.decCredits ,
tblBankManagerBatchDT.decLineTotExc ,
tblBankManagerBatchDT.decLineTaxAmt ,
tblBankManagerBatchDT.decLineTotInc ,
tblBankManagerBatchDT.strTaxCode ,
tblBankManagerBatchDT.imgTaxObj ,
tblBankManagerBatchDT.strCurrency ,
tblBankManagerBatchDT.decExchange ,
tblBankManagerBatchDT.bitIsForeign ,
tblBankManagerBatchDT.decDebitsF ,
tblBankManagerBatchDT.decCreditsF ,
tblBankManagerBatchDT.decLineTotExcF ,
tblBankManagerBatchDT.decLineTaxAmtF ,
tblBankManagerBatchDT.decLineTotIncF ,
tblBankManagerBatchDT.bitPosted ,
tblBankManagerBatchDT.lngJourID ,
tblBankManagerBatchDT.strMRABankCode
FROM tblBankManagerBatchDT 
LEFT OUTER JOIN tblAccounts ON tblBankManagerBatchDT.strCuVeGeInID = tblAccounts.intGLNumber 
WHERE (strBMDocID = @DocID) AND strAccountType IN ( 'General Ledger' ,'Bank Transfer') 
UNION ALL 
SELECT 
intLineNo ,
dteJournalDate ,
strDocumentType ,
strAccountType ,
strCuVeGeInID ,
'' AS strAccountDescription ,
intDept ,
strLineComment ,
strLineReference ,
lngGroupId ,
strSource ,
decDebits ,
decCredits ,
decLineTotExc ,
decLineTaxAmt ,
decLineTotInc ,
strTaxCode ,
imgTaxObj ,
strCurrency ,
decExchange ,
bitIsForeign ,
decDebitsF ,
decCreditsF ,
decLineTotExcF ,
decLineTaxAmtF ,
decLineTotIncF ,
bitPosted ,
tblBankManagerBatchDT.lngJourID ,
tblBankManagerBatchDT.strMRABankCode
FROM tblBankManagerBatchDT 
WHERE (strBMDocID = @DocID) AND ( strAccountType IS NULL OR strAccountType = '' ) AND intLineNo > 0 ) z 
ORDER BY intLineNo
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetOpenBMAllocationData] @DocIDA NVARCHAR(200)  
AS  
BEGIN  
SELECT   
strBMDocID ,  
lngAllocationID as ID,   
lngBatchDTLineNo as DTID,  
strCuVe as AccountName,  
decReceiptAmount as ReceiptAmount,  
dteDate as [Date],  
decVarianceHome as VarianceHome,  
decActualPrepayAmountHome as ActualPrepayAmountHome,  
decAcutalAPAmountHome as AcutalAPAmountHome,  
intCustTransID as CustTransID,  
decDiscountAvailable as DiscountAvailable,  
decDiscountAvailableHome as DiscountAvailableHome,  
decDiscountTaken as DiscountTaken,  
decDiscountTakenHome as DiscountTakenHome,  
intCustTransType as CustTransTransType,  
decDueAmountExcl as DueAmountExcl,  
decDueAmountIncl as DueAmountIncl,  
decDueAmountHomeIncl as DueAmountHomesIncl,  
decOriginalAmountIncl as OriginalAmountIncl,  
decOriginalAmountHomeIncl as OriginalAmountHomeIncl,  
decOriginalAmount as OriginalAmount,  
decOriginalAmountExcl as OriginalAmountExcl,  
decTax as Tax,  
strOrderNumber as OrderNumber,  
strDocumentNumber as DocumentNumber,  
strJournalNumber as JournalNumber,  
strReference as Reference,  
decReceiptsAmount as ReceiptsAmount,  
decWithholdingTax as WithholdingTax,  
decPaymentAmtExcl as PaymentAmtExcl,   
strParentCuVe as ParentAccountName,
strVendCustType AS VendCustType
FROM tblBankManagerAllocations   
WHERE (strBMDocID = @DocIDA)   
ORDER BY strBMDocID, lngBatchDTLineNo, lngAllocationID  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetYodleeBankConfigData] @PalladiumBankAccount NVARCHAR(MAX)
AS
BEGIN
Select TOP 1 
tblYodleeBankConfig.*,
tblAccounts.strDesc 
from tblYodleeBankConfig 
INNER JOIN tblAccounts ON tblAccounts.intGLNumber = tblYodleeBankConfig.PalladiumBankAccount 
WHERE tblYodleeBankConfig.PalladiumBankAccount = @PalladiumBankAccount AND tblYodleeBankConfig.InactiveAccount <> 1 
AND tblYodleeBankConfig.IsInactive <> 1
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateLastBMId] @BMNumber bigint
AS
BEGIN
UPDATE tblLastIDs SET lngBMNumber = @BMNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[UpdateLastBMNumber] @BMNumber bigint
AS
BEGIN
UPDATE tblLastIDs SET lngBMINumber = @BMNumber
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[TaxDTInsertData]
(
@TaxID  bigint,
@LineNo int,
@TaxCode NVARCHAR(200),
@DefinitionName NVARCHAR(200),
@Status int,
@Rate decimal,
@Refundable bit,
@Type int,
@SubTax decimal,
@TaxAmount decimal,
@TotalOthTax decimal,
@Currency NVARCHAR(200),
@IsForeign bit,
@SubTaxF decimal,
@TaxAmountF decimal,
@TotalOthTaxF decimal
)
AS
BEGIN
INSERT INTO [dbo].[tblTaxDT]
([lngTaxID]
,[intLine]
,[strTaxCode]
,[strTaxName]
,[intStatus]
,[decRate]
,[bitRefundable]
,[intType]
,[decAmtSubTax]
,[decTaxAmt]
,[decTotOthTax]
,[strCurrency]
,[bitIsForeign]
,[decAmtSubTaxF]
,[decTaxAmtF]
,[decTotOthTaxF])
VALUES(
@TaxID ,
@LineNo ,
@TaxCode ,
@DefinitionName ,
@Status ,
@Rate ,
@Refundable ,
@Type ,
@SubTax ,
@TaxAmount ,
@TotalOthTax ,
@Currency,
@IsForeign ,
@SubTaxF,
@TaxAmountF ,
@TotalOthTaxF)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[InsertDetailDataInJournalEntryDocCBDT] 
@JEDocID NVARCHAR(100)  
,@GLNumber NVARCHAR(100)  
,@Desc NVARCHAR(100)  
,@LineComment NVARCHAR(100)  
,@LineTotExc Money  
,@LineTaxAmt Money  
,@LineTotInc Money  
,@TaxCode NVARCHAR(100)  
,@ImgTaxObj IMAGE  
,@Type INT  
,@Dept INT  
,@LineNo INT  
,@LineReference NVARCHAR(100)  
AS  
BEGIN  
INSERT INTO tblJournalEntryDocCBDT  
VALUES (  
@JEDocID  
,@GLNumber  
,@Desc  
,@LineComment  
,@LineTotExc  
,@LineTaxAmt  
,@LineTotInc  
,@TaxCode  
,@ImgTaxObj  
,@Type  
,@Dept  
,@LineNo  
,@LineReference  
)  
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[DeleteBMMppingAddEdit](
@MappingName NVARCHAR(200),
@DocumentType NVARCHAR(200)
)
AS
BEGIN
DELETE FROM tblBankManagerMappings WHERE strMappingName = @MappingName AND strDocumentType = @DocumentType
END
GO

----------------------------------------------------
CREATE PROCEDURE GetImportFileType @layoutName AS NVARCHAR(max)
AS
BEGIN
SELECT ImportFileType
FROM tblImportLayout
WHERE LayoutName = @layoutName
END
GO

----------------------------------------------------
CREATE PROCEDURE GetDistinctCustomerName @customers AS NVARCHAR(max)
AS
BEGIN
SELECT Data
FROM dbo.Split(@customers, ',') AS result
WHERE result.[Data] NOT IN (
SELECT DISTINCT strCustName
FROM tblCustomers
)
END
GO

----------------------------------------------------
CREATE PROCEDURE GetDistinctVendors @vendors AS NVARCHAR(max)
AS
BEGIN
SELECT Data
FROM dbo.Split(@vendors, ',') AS result
WHERE result.[Data] NOT IN (
SELECT DISTINCT strVendName
FROM tblVendors
)
END
GO

----------------------------------------------------
CREATE PROCEDURE GetDistinctGLAccounts @glAccounts AS NVARCHAR(max)
AS
BEGIN
SELECT Data
FROM dbo.Split(@glAccounts, ',') AS result
WHERE result.[Data] NOT IN (
SELECT DISTINCT intGLNumber
FROM tblAccounts
)
END
GO

----------------------------------------------------
CREATE PROCEDURE GetDistinctTaxCodes @taxcodes AS NVARCHAR(max)
AS
BEGIN
SELECT Data
FROM dbo.Split(@taxcodes, ',') AS result
WHERE result.[Data] NOT IN (
SELECT DISTINCT strTaxCode
FROM tblTaxCodes
)
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetCategoryGridData] 
AS
BEGIN
Select  tblRebateSetup.strRebateName as RebateName,tblRebateSetupCategory.strCategory as Category,tblRebateSetupCategory.strSubCategory as SubCategory,tblRebateSetupCategory.strSubCategoryGroup as SubCategoryGroup,tblRebateSetupCategory.intLineNo 'LineNo'
from tblRebateSetupCategory inner join tblRebateSetup on tblRebateSetupCategory.intRebateId=tblRebateSetup.intRebateId 
ORDER BY tblRebateSetup.strRebateName, tblRebateSetup.strVendName
END
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetDataForPL_JournalEntryModules_AP]  
(  
@SQTaxDef nvarchar(max)
)  
AS  
BEGIN  
SELECT tblTaxCodes.strTaxCode as TaxCode, tblTaxCodes.strDescription as [Description] 
FROM tblTaxCodeExt INNER JOIN tblTaxCodes ON tblTaxCodeExt.strTaxCode = tblTaxCodes.strTaxCode 
WHERE ((tblTaxCodes.intAllowedJournals = 2) OR (tblTaxCodes.intAllowedJournals = 0)) AND (tblTaxCodeExt.strTaxName = @SQTaxDef) AND (tblTaxCodeExt.intStatus = 0) AND (tblTaxCodeExt.bitIncluded) = 1
END  
GO
----------------------------------------------------
CREATE PROCEDURE [dbo].[GetDataForPL_JournalEntryModules_AR]  
(  
@SQTaxDef nvarchar(max)
)  
AS  
BEGIN  
SELECT tblTaxCodes.strTaxCode as TaxCode, tblTaxCodes.strDescription as [Description] 
FROM tblTaxCodeExt INNER JOIN tblTaxCodes ON tblTaxCodeExt.strTaxCode = tblTaxCodes.strTaxCode 
WHERE ((tblTaxCodes.intAllowedJournals = 1) OR (tblTaxCodes.intAllowedJournals = 0)) AND (tblTaxCodeExt.strTaxName = @SQTaxDef) AND (tblTaxCodeExt.intStatus = 0) AND (tblTaxCodeExt.bitIncluded) = 1
END  
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetDataFromAccountsLYForGLContaAccount] (
	@SQGLNumber NVARCHAR(60)
	,@blnAllowLinkedJE BIT
	)
AS
BEGIN
	IF (@blnAllowLinkedJE = 0)
	BEGIN
		SELECT intGLNumber AS GLNumber
			,strDesc AS [Desc]
			,strCurrency AS Currency
		FROM tblAccountsLY
		WHERE bitInactive = 0
			AND bitLinkCEarnings = 0
			AND bitLinkAR = 0
			AND bitLinkAP = 0
			AND bitLinkDeposit = 0
			AND bitLinkPrePay = 0
			AND intGLNumber NOT IN (
				SELECT intGLAsset
				FROM tblAccountSets
				)
			AND bitInactive = 0
			AND (
				intGroupCode = 1
				OR intGroupCode = 2
				)
			AND intGLNumber = @SQGLNumber
			AND bitLinkAPVendMast = 0
			AND bitLinkPrepayVendMast = 0
			AND bitLinkARCustMast = 0
			AND bitLinkDepositCustMast = 0
	END
	ELSE
	BEGIN
		SELECT intGLNumber AS GLNumber
			,strDesc AS [Desc]
			,strCurrency AS Currency
		FROM tblAccountsLY
		WHERE bitInactive = 0
			AND (intAccClass <> 28)
			AND (
				intGroupCode = 1
				OR intGroupCode = 2
				)
			AND intGLNumber = @SQGLNumber
	END
END
GO

----------------------------------------------------

create procedure [dbo].[GetDataFromAccountsLY]  
(  
@SQHomeCurrency nvarchar(100),  
@SQForeignCurrency nvarchar(100),  
@SQGLNumber nvarchar(100),
@blnAllowLinkedJE bit
)  
AS  
BEGIN  
IF(@blnAllowLinkedJE = 0)
BEGIN
SELECT intGLNumber as GLNumber
,strDesc as [Desc]
FROM tblAccountsLY
WHERE bitInactive = 0
AND bitLinkCEarnings = 0
AND bitLinkAR = 0
AND bitLinkAP = 0
AND bitLinkDeposit = 0
AND bitLinkPrePay = 0
AND intGLNumber NOT IN (
SELECT intGLAsset
FROM tblAccountSets
)
AND bitInactive = 0
AND (
intGroupCode = 1
OR intGroupCode = 2
)
AND intGLNumber = @SQGLNumber
AND (
strCurrency = @SQHomeCurrency
OR strCurrency = @SQForeignCurrency
)
AND bitLinkAPVendMast = 0
AND bitLinkPrepayVendMast = 0
AND bitLinkARCustMast = 0
AND bitLinkDepositCustMast = 0
END
ELSE
BEGIN
SELECT intGLNumber as GLNumber
,strDesc as [Desc]
FROM tblAccountsLY
WHERE bitInactive = 0
AND (intAccClass <> 28)
AND (
intGroupCode = 1
OR intGroupCode = 2
)
AND intGLNumber = @SQGLNumber
AND (
strCurrency = @SQHomeCurrency
OR strCurrency = @SQForeignCurrency
)
END
END  
GO

----------------------------------------------------
create procedure [dbo].[GetDataFromDepartments]  
(  
@SQintDept nvarchar(max),
@SQAccount nvarchar(max)
)  
AS  
BEGIN  
SELECT intDept as Dept, strDesc as [Desc] FROM tblDepartments WHERE (bitInactive = 0) AND intDept = @SQintDept AND (intDept IN (SELECT intDept FROM tblAccountsDept WHERE intGLNumber = @SQAccount))
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetItemsGridData] 
AS
BEGIN
SELECT tblRebateSetup.strRebateName as RebateName,tblRebateSetupItems.strPartNumber as PartNumber, tblRebateSetupItems.intLineNo  as CategoryLineNo 
FROM tblRebateSetupItems
inner join tblRebateSetup on tblRebateSetupItems.intRebateId=tblRebateSetup.intRebateId 
ORDER BY tblRebateSetup.strRebateName, tblRebateSetup.strVendName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetMainGridData] 
AS
BEGIN
Select strRebateName as RebateName,strVendName as VendorName,dtRebateStartDate as StartDate,dtRebateEndDate as EndDate,strPartNumber as PartNumber,decRebateVal as RebateValue,intRebateOrder as RebateOrder,strCustName as CustName 
from tblRebateSetup 
ORDER BY strRebateName, strVendName
END
GO

----------------------------------------------------
CREATE PROCEDURE [dbo].[GetRebateIdCount] 
AS
BEGIN
SELECT COUNT(intRebateId) FROM tblRebateSetup
END
GO

----------------------------------------------------
create procedure [dbo].[GetTopFromTaxDef]  
(  
@SQModuleAP nvarchar(max),
@SQGLContrAccount nvarchar(max),
@SQModuleAR nvarchar (max)
)  
AS  
BEGIN  
SELECT TOP 1 strTaxName as TaxName, @SQModuleAP AS Module FROM tblTaxDef WHERE intPurchAcct = @SQGLContrAccount UNION ALL SELECT TOP 1 strTaxName as TaxName, @SQModuleAR AS Module FROM tblTaxDef WHERE intSalesAcct = @SQGLContrAccount
END  
GO

CREATE PROCEDURE [dbo].[rpAPGetSalesPersonsSetupReportData]        
(        
 @ItemList nvarchar(max)      
)        
AS        

BEGIN        
 --SELECT strStreet1,strStreet2,strCity,strProvince,strPostal,strPhone,strCellPhone,strFax,strEmail,decYTDSales,bitInactive,strNotes       
 SELECT *    
 FROM tblSalesPersons       
 --WHERE strSalesName IN (select * from fnSplitStringAsTable(@ItemList)) AND bitIsWorkshopTechnician = 0      
 WHERE strSalesName IN (select * from fnSplitStringAsTable(@ItemList,',')) AND bitIsWorkshopTechnician = 0      
END 
GO

CREATE PROCEDURE [dbo].[GetVendorsImportItems] (@VendorName AS NVARCHAR(50))
AS
BEGIN
	SELECT tblInvVend.strPartNumber	as PartNumber
		,tblInv.strDesc	as [Description]
		,strItemCode as ItemCode
		,strItemDesc  as ItemDescription
		,intWarrantyDays as WarrantyDays
		,decPrice  as Price
		,decLocalPrice	as LocalPrice
		,decDiscPerc   as DiscountPercentage
		,decLandedCostFactor as LandedCostFactor
		,bitPreferred	as Preferred
		,lngID as ID
	FROM tblInvVend
	INNER JOIN tblInv ON tblInvVend.strPartNumber = tblInv.strPartNumber
	WHERE strVendName = @VendorName
	ORDER BY tblInvVend.strPartNumber
END
GO

CREATE PROCEDURE [dbo].[DeleteVendors] (@VendName AS NVARCHAR(50))
AS
BEGIN
	DELETE FROM tblVendors WHERE strVendName = @VendName	
	
DELETE FROM tblInvVend WHERE strVendName = @VendName
DELETE FROM tblInvVendPriceListsByDate WHERE strVendName = @VendName
END
GO

CREATE PROCEDURE [dbo].[InvoiceDocPBin_Save] (
	@InvDocDTBinTable InvDocDTBinTableType READONLY	
	)
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @NumberofIntType INT
		,@RowCount INT

	-- get the number of items
	SET @NumberofIntType = (
			SELECT count(*)
			FROM @InvDocDTBinTable
			)
	SET @RowCount = 0 -- set the first row to 0

	--Create Table Variable
	DECLARE @InvDocDTTemp TABLE (
		RowNumber INT IDENTITY(0, 1)
		,Id BIGINT
		,DocId NVARCHAR(50)
		,[LineNo] INT
		,BinId BIGINT
		,Qty MONEY
		,PickingBin BIT
		)

	INSERT INTO @InvDocDTTemp
	SELECT *
	FROM @InvDocDTBinTable;

	-- loop through the records 
	-- loop until the rowcount = number of records in your table
	WHILE @RowCount < @NumberofIntType
	BEGIN
		-- do your process here
		DECLARE @Id BIGINT
		DECLARE @DocID NVARCHAR(50)
		DECLARE @LineNo INT
		DECLARE @BinId BIGINT
		DECLARE @Qty MONEY

		SELECT @Id = [Id]
			,@DocID = DocId
			,@LineNo = [LineNo]
			,@BinId = [BinId]
			,@Qty = [Qty]
		FROM @InvDocDTTemp
		WHERE RowNumber = @RowCount

		--VB SP START
		IF NOT EXISTS (
				SELECT lngId
				FROM tblInvoiceDocPDTBin
				WHERE lngId = @Id
				)
		BEGIN
			INSERT INTO tblInvoiceDocPDTBin (
				strInvPDocID
				,intLineNo
				,lngBinId
				,decQty
				)
			VALUES (
				@DocID
				,@LineNo
				,@BinId
				,@Qty
				)
		END
		ELSE
		BEGIN
			UPDATE tblInvoiceDocPDTBin
			SET strInvPDocID = @DocID
				,intLineNo = @LineNo
				,lngBinId = @BinId
				,decQty = @Qty
			WHERE lngId = @Id
		END

		--VB SP END
		SET @RowCount = @RowCount + 1
	END
END
GO

CREATE PROCEDURE [dbo].[GetImportExportEmployeeData]
  -- Add the parameters for the stored procedure here
AS
  BEGIN
      
      SET nocount ON;

   	 SELECT tblEmployees.strEmpNumber as EmployeeNumber
           ,[strEmpName] as EmployeeName
           ,[strTitle] as Title
           ,[strSurname] as Surname
           ,[strTagNo] as TagNo
           ,[strTelNo] as TelNo
           ,[strEmail] as Email
           ,[intDept] as DepartmentID
           ,[strDefaultApprover] as Approver
           ,[bitInactive] as IsInactive
           ,[dteLastUpdated] as LastUpdated
           ,[dteSince]  as Since
           ,[uID] as Id
           ,[dteInactiveDate]  as InactiveDate
           ,[strField1]  as Field1
           ,[strField2]   as Field2
           ,[strField3]  as Field3
           ,[strField4] as Field4
           ,[strField5] as Field5
           ,[strField6]  as Field6
           ,[strField7] as Field7
           ,[strField8] as Field8
           ,[strField9] as Field9
           ,[strField10] as Field10
           ,[strField11] as Field11
           ,[strField12] as Field12
           ,[strCustNumber] as CustNumber
           ,[imgEmpPhoto] as EmpPhoto
           ,[lngProfileId] as ProfileId
           ,[dteBudgetDate] as BudgetDate
           ,[bitNonBudgetRefNo] as IsNonBudgetRefNo
           ,[strPinNo] as PinNo
		   ,tblEmployeeCenter.uidCenterID as CenterID
		   ,tblEmployeeCenter.lngID,
  CASE WHEN lngProfileId IS NOT NULL THEN (
    SELECT 
      strName 
    From 
      tblEmpMaterialIssueProfile 
    WHERE 
      lngId = lngProfileId
  ) ELSE '' END As ProfileName, 
  CASE WHEN uidCenterID IS NOT NULL THEN (
    SELECT 
      (
        strLvl1 + ISNULL('/' + strLvl2, '')+ ISNULL('/' + strLvl3, '')+ ISNULL('/' + strLvl4, '')+ ISNULL('/' + strLvl5, '')
      ) 
    FROM 
      tblCenters 
    WHERE 
      uidCenterID = tblEmployeeCenter.uidCenterID
  ) ELSE '' END AS ProfitCenter 
FROM 
  tblEmployees 
  LEFT JOIN tblEmployeeCenter ON tblEmployees.strEmpNumber = tblEmployeeCenter.strEmpNumber 
ORDER BY 
  tblEmployees.strEmpNumber
	END
GO


CREATE PROCEDURE [dbo].[DeleteInvWorkCentre]
  @strInvWCCode as Nvarchar(max)
AS
  BEGIN
      
      SET nocount ON;

   DELETE FROM tblInvWorkCentre WHERE strInvWCCode = @strInvWCCode	
	END
GO

CREATE PROCEDURE GetCustomerDataByCustomers
@Customer as nvarchar(50)
as
begin

SELECT strCustName as CustomerName
, strCustDesc as [Description]
, strCurrency as Currency
FROM tblCustomers
WHERE bitInactive = 0 AND strCustName = @Customer

end
GO

CREATE PROCEDURE [dbo].[InsertInvPricelistData](    
 @uidPriceBasedID uniqueidentifier,    
 @PartNumber VARCHAR(200),    
 @Pricelist VARCHAR(200),    
 @Selling money,    
 @EstLocalCost money,    
 @EstImportCost money  , 
 @Unit VARCHAR(200),  
 @bitStockUnit bit  
 )    
 AS    
 BEGIN    
INSERT INTO tblInvPrice VALUES (    
 @uidPriceBasedID,    
 @PartNumber,    
 @Pricelist,    
 @Selling,    
 @EstLocalCost,    
 @EstImportCost,    
 NULL,NULL,NULL,NULL,GetDate(),NULL,NULL,@Unit,@bitStockUnit)    
END
GO

CREATE PROCEDURE [dbo].[UpdateInvPricelistData](
	@uidPriceBasedID uniqueidentifier,
	@PartNumber VARCHAR(200),
	@Pricelist VARCHAR(200),
	@Selling money,
	@EstLocalCost money,
	@EstImportCost money,
    @Unit NVARCHAR(50),
	@IsStockUnit BIT
	)
	AS
	BEGIN
	UPDATE tblInvPrice SET 
		decSelling=@Selling,
		decEstLocalCost=@EstLocalCost,
		decEstImportCost=@EstImportCost ,
		bitStockUnit = @IsStockUnit
	WHERE uidPriceBasedID=@uidPriceBasedID and strPricelist=@Pricelist and strPartNumber=@PartNumber AND strUnit = @Unit
END
GO

CREATE PROCEDURE [DeleteOldLabourData] 
	@WCCode as nvarchar(Max)
AS
BEGIN
	DELETE
    FROM tblManWorkCentreLab
    WHERE strWCCode = @WCCode;
END
GO

CREATE PROCEDURE [DeleteOldMachData]
	@WCCode as nvarchar(Max)
AS
BEGIN
	DELETE
    FROM tblManWorkCentreMach
    WHERE strWCCode = @WCCode;
END
GO

CREATE PROCEDURE [GetManPickerLabours] 
AS
BEGIN
	SELECT strLabCode as LabourCode
	    ,strDesc as [Description]
	    ,decVariableHourly as VariableHourly
	    ,decFixedSetup as FixedSetup
	    ,decFixedBreakdown as FixedBreakdown
	    ,tblCenters.strLvl1 as Lvl1
	    ,tblCenters.strLvl2 as Lvl2
	    ,tblCenters.strLvl3 as Lvl3
	    ,tblCenters.strLvl4 as Lvl4
	    ,tblCenters.strLvl5 as Lvl5
    FROM tblManLabour
    LEFT JOIN tblCenters ON tblManLabour.uidCenterID = tblCenters.uidCenterID
    WHERE tblManLabour.bitInactive = 0
    ORDER BY strLabCode;
END
GO

CREATE PROCEDURE [GetManPickerMachData] 
	@SQstrWCSet as nvarchar(Max)
AS
BEGIN
	SELECT WC.strMachCode as MachCode
	    ,MACH.strDesc as MachDesc
	    ,WC.decVariableHourly as VariableHourly
	    ,WC.decFixedSetup as FixedSetup
	    ,WC.decFixedBreakdown as FixedBreakdown
	    ,tblCenters.strLvl1 as Lvl1
	    ,tblCenters.strLvl2 as Lvl2
	    ,tblCenters.strLvl3 as Lvl3
	    ,tblCenters.strLvl4 as Lvl4
	    ,tblCenters.strLvl5 as Lvl5
    FROM tblManWorkCentreMach WC
    INNER JOIN tblManMachinery MACH ON WC.strMachCode = MACH.strMachCode
    LEFT JOIN tblCenters ON MACH.uidCenterID = tblCenters.uidCenterID
    WHERE (MACH.bitInactive = 0)
	    AND (
		    WC.strWCCode IN (
			    SELECT *
			    FROM fnSplitStringAsTable(@SQstrWCSet, ',')
			    )
		    )
    ORDER BY WC.strWCCode;
END
GO

CREATE PROCEDURE [GetManPickerMachinery] 
AS
BEGIN
	SELECT strMachCode as MachCode
	    ,strDesc as MachDesc
	    ,decVariableHourly as VariableHourly
	    ,decFixedSetup as FixedSetup
	    ,decFixedBreakdown as FixedBreakdown
	    ,tblCenters.strLvl1 as Lvl1
	    ,tblCenters.strLvl2 as Lvl2
	    ,tblCenters.strLvl3 as Lvl3
	    ,tblCenters.strLvl4 as Lvl4
	    ,tblCenters.strLvl5 as Lvl5
    FROM tblManMachinery
    LEFT JOIN tblCenters ON tblManMachinery.uidCenterID = tblCenters.uidCenterID
    WHERE tblManMachinery.bitInactive = 0
    ORDER BY strMachCode;
END
GO

CREATE PROCEDURE [GetManPickerWorkCentres] 
	@SQstrWCSet as nvarchar(Max)
AS
BEGIN
	SELECT strWCCode as WorkCentreCode
	    ,strDesc as [Description]
    FROM tblManWorkCentre
    WHERE bitInactive = 0
	    AND (
		    strWCCode NOT IN (
			    SELECT *
			    FROM fnSplitStringAsTable(@SQstrWCSet, ',')
			    )
		    )
    ORDER BY strWCCode
END
GO

CREATE PROCEDURE [GetManPickerLabData] 
	@SQstrWCSet as nvarchar(Max)
AS
BEGIN
	SELECT WC.strLabCode as LabourCode
	    ,LAB.strDesc as [Description]
	    ,WC.decVariableHourly as VariableHourly
	    ,WC.decFixedSetup as FixedSetup
	    ,WC.decFixedBreakdown as FixedBreakdown
	    ,tblCenters.strLvl1 as Lvl1
	    ,tblCenters.strLvl2 as Lvl2
	    ,tblCenters.strLvl3 as Lvl3
	    ,tblCenters.strLvl4 as Lvl4
	    ,tblCenters.strLvl5 as Lvl5
    FROM tblManWorkCentreLab WC
    INNER JOIN tblManLabour LAB ON WC.strLabCode = LAB.strLabCode
    LEFT JOIN tblCenters ON LAB.uidCenterID = tblCenters.uidCenterID
    WHERE (LAB.bitInactive = 0)
	    AND (
		    WC.strWCCode IN (
			    SELECT *
			    FROM fnSplitStringAsTable(@SQstrWCSet, ',')
			    )
		    )
    ORDER BY WC.strWCCode;
END
GO

CREATE PROCEDURE [GetWorkCenterData]
	@SQPartNumber as nvarchar(50),
    @SQRevDate as smalldatetime,
    @SQLocation as nvarchar(50)
AS
BEGIN
	SELECT tblManBOMOp.strWCCode as WorkCentreCode
	    ,tblManWorkCentre.strDesc as [Description]
	    ,ISNULL(tblManBOMOp.strNotes, '') as Notes
    FROM tblManBOM
    INNER JOIN tblManBOMOp ON tblManBOM.lngManBOMID = tblManBOMOp.lngManBOMID
    INNER JOIN tblManWorkCentre ON tblManBOMOp.strWCCode = tblManWorkCentre.strWCCode
    WHERE tblManBOM.strPartNumber = @SQPartNumber
	    AND tblManBOM.dteRevDate = @SQRevDate
	    AND tblManBOM.strLocation = @SQLocation
    ORDER BY tblManBOMOp.lngID;
END
GO

CREATE PROCEDURE [dbo].[GetRptPOSVarDetailReportData] (
	@SQStart DATETIME
	,@SQEnd DATETIME
	)
AS
BEGIN
	SELECT tblPOSDrs.strAssignedUser
		,tblPOSDrs.dteSessionDate
		,tblPOSDrs.strDrawerName
		,tblPOSDrs.strTerminal
		,Cast(0 AS MONEY) AS decCashVar
		,Cast(0 AS MONEY) AS decDropsVar
		,Cast(0 AS MONEY) AS decCKVar
		,Cast(0 AS MONEY) AS decCCVar
		,Cast(0 AS MONEY) AS decGiftCoupVar
		,Cast(0 AS MONEY) AS decAccountVar
		,tblPOSDrsCLSP.decVariance AS decTotalVar
	FROM tblPOSDrs
	INNER JOIN tblPOSDrsCLSP ON tblPOSDrs.uidSessionID = tblPOSDrsCLSP.uidSessionID
	WHERE (tblPOSDrs.intStatus = 3)
		AND (tblPOSDrs.decOvSht <> 0)
		AND (
			tblPOSDrs.dteSessionDate BETWEEN @SQStart
				AND @SQEnd
			)
	ORDER BY tblPOSDrs.strAssignedUser
		,tblPOSDrs.dteSessionDate
		,tblPOSDrs.strDrawerName
END
GO

Create PROCEDURE [dbo].[GetRptPrjPurchMatrixReportData]
(
	@SQProjNum NVARCHAR(max)
	, @SQAsAt DATETIME
	, @SQPayType INT
	, @SQRecType INT
	, @SQintModule INT
	)
AS
BEGIN
	SELECT 1 AS Number
		, tblOrderDocPDT.strPartNumber
		, tblOrderDocPDT.strPartDesc
		, ISNULL(SUM(tblOrderDocPDT.decStockQty), 0) AS decStockQty
		, ISNULL(SUM(tblOrderDocPDT.decLineTotExc), 0) AS decLineTotExc
	FROM tblOrderDocP
	INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
	INNER JOIN tblOrderDocPDTPrj ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTPrj.strOrdPDocID
		AND tblOrderDocPDT.intLineNo = tblOrderDocPDTPrj.intLineNo
	WHERE (tblOrderDocP.dteJournalDate <= @SQAsAt)
		AND (tblOrderDocPDTPrj.strProjNumber = @SQProjNum)
		AND (tblOrderDocP.intDocType = 2)
	GROUP BY tblOrderDocPDT.strPartNumber
		, strPartDesc
	
	UNION ALL
	
	SELECT 2 AS Number
		, tblOrderDocPDT.strPartNumber
		, tblOrderDocPDT.strPartDesc
		, ISNULL(SUM(tblOrderDocPDT.decStockQty), 0) AS decStockQty
		, ISNULL(SUM(tblOrderDocPDT.decLineTotExc), 0) AS decLineTotExc
	FROM tblOrderDocP
	INNER JOIN tblOrderDocPDT ON tblOrderDocP.strOrdPDocID = tblOrderDocPDT.strOrdPDocID
	INNER JOIN tblOrderDocPDTPrj ON tblOrderDocPDT.strOrdPDocID = tblOrderDocPDTPrj.strOrdPDocID
		AND tblOrderDocPDT.intLineNo = tblOrderDocPDTPrj.intLineNo
	WHERE (tblOrderDocP.dteJournalDate <= @SQAsAt)
		AND (tblOrderDocPDTPrj.strProjNumber = @SQProjNum)
		AND (tblOrderDocP.intDocType = 1)
	GROUP BY strPartNumber
		, strPartDesc
	
	UNION ALL
	
	SELECT 3 AS Number
		, tblInvoiceDocPDT.strPartNumber
		, tblInvoiceDocPDT.strPartDesc
		, ISNULL(SUM(tblInvoiceDocPDT.decStockQty), 0) AS decStockQty
		, ISNULL(SUM(tblInvoiceDocPDT.decLineTotExc), 0) AS decLineTotExc
	FROM tblInvoiceDocP
	INNER JOIN tblInvoiceDocPDT ON tblInvoiceDocP.strInvPDocID = tblInvoiceDocPDT.strInvPDocID
	INNER JOIN tblInvoiceDocPDTPrj ON tblInvoiceDocPDT.strInvPDocID = tblInvoiceDocPDTPrj.strInvPDocID
		AND tblInvoiceDocPDT.intLineNo = tblInvoiceDocPDTPrj.intLineNo
	WHERE (tblInvoiceDocP.dteJournalDate <= @SQAsAt)
		AND (tblInvoiceDocPDTPrj.strProjNumber = @SQProjNum)
	GROUP BY strPartNumber
		, strPartDesc
	
	UNION ALL
	
	SELECT 4 AS Number
		, tblJournalEntryDocCBDT.intGLNumber AS strPartNumber
		, tblJournalEntryDocCBDT.strDesc
		, ISNULL(COUNT(tblJournalEntryDocCBDT.intGLNumber), 0) AS decStockQty
		, ISNULL(SUM(tblJournalEntryDocCBDT.decLineTotExc), 0) AS decLineTotExc
	FROM tblJournalEntryDocCB
	INNER JOIN tblJournalEntryDocCBDT ON tblJournalEntryDocCB.strJEDocID = tblJournalEntryDocCBDT.strJEDocID
	INNER JOIN tblJournalEntryDocCBDTPrj ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCBDTPrj.strJEDocID
		AND tblJournalEntryDocCBDT.intType = tblJournalEntryDocCBDTPrj.intType
		AND tblJournalEntryDocCBDT.intGLNumber = tblJournalEntryDocCBDTPrj.intGLNumber
		AND tblJournalEntryDocCBDT.intLineNo = tblJournalEntryDocCBDTPrj.intLineNo
	WHERE (tblJournalEntryDocCB.dteJournalDate <= @SQAsAt)
		AND (tblJournalEntryDocCBDTPrj.strProjNumber = @SQProjNum)
		AND (tblJournalEntryDocCBDT.intType = @SQPayType)
	GROUP BY tblJournalEntryDocCBDT.intGLNumber
		, tblJournalEntryDocCBDT.strDesc
	
	UNION ALL
	
	SELECT 5 AS Number
		, tblJournalEntryDocCBDT.intGLNumber AS strPartNumber
		, tblJournalEntryDocCBDT.strDesc
		, ISNULL(COUNT(tblJournalEntryDocCBDT.intGLNumber), 0) AS decStockQty
		, (ISNULL(SUM(tblJournalEntryDocCBDT.decLineTotExc), 0) * - 1) AS decLineTotExc
	FROM tblJournalEntryDocCB
	INNER JOIN tblJournalEntryDocCBDT ON tblJournalEntryDocCB.strJEDocID = tblJournalEntryDocCBDT.strJEDocID
	INNER JOIN tblJournalEntryDocCBDTPrj ON tblJournalEntryDocCBDT.strJEDocID = tblJournalEntryDocCBDTPrj.strJEDocID
		AND tblJournalEntryDocCBDT.intType = tblJournalEntryDocCBDTPrj.intType
		AND tblJournalEntryDocCBDT.intGLNumber = tblJournalEntryDocCBDTPrj.intGLNumber
		AND tblJournalEntryDocCBDT.intLineNo = tblJournalEntryDocCBDTPrj.intLineNo
	WHERE (tblJournalEntryDocCB.dteJournalDate <= @SQAsAt)
		AND (tblJournalEntryDocCBDTPrj.strProjNumber = @SQProjNum)
		AND (tblJournalEntryDocCBDT.intType = @SQRecType)
	GROUP BY tblJournalEntryDocCBDT.intGLNumber
		, tblJournalEntryDocCBDT.strDesc
	
	UNION ALL
	
	SELECT 6 AS Number
		, CASE WHEN tblJournalEntryDocDT.intModule <> 0 THEN ISNULL(tblJournalEntryDocDT.intGLNumber, '') ELSE tblJournalEntryDocDT.strCuVeGeID END AS strPartNumber
		, CASE WHEN tblJournalEntryDocDT.intModule <> 0 THEN ISNULL(tblJournalEntryDocDT.strDesc, '') ELSE tblJournalEntryDocDT.strCuVeGeDesc END AS strDesc
		, ISNULL(COUNT(tblJournalEntryDocDT.strCuVeGeID), 0) AS decStockQty
		, ISNULL(SUM(tblJournalEntryDocDT.decDebits), 0) AS decLineTotExc
	FROM tblJournalEntryDoc
	INNER JOIN tblJournalEntryDocDT ON tblJournalEntryDoc.strJEDocID = tblJournalEntryDocDT.strJEDocID
	INNER JOIN tblJournalEntryDocDTPrj ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDocDTPrj.strJEDocID
		AND CASE WHEN tblJournalEntryDocDT.intModule <> 0 THEN tblJournalEntryDocDT.intGLNumber ELSE tblJournalEntryDocDT.strCuVeGeID END = tblJournalEntryDocDTPrj.intGLNumber
		AND tblJournalEntryDocDT.intLineNo = tblJournalEntryDocDTPrj.intLineNo
	INNER JOIN tblAccounts ON CASE WHEN tblJournalEntryDocDT.intModule <> 0 THEN ISNULL(tblJournalEntryDocDT.intGLNumber, '') ELSE tblJournalEntryDocDT.strCuVeGeID END = tblAccounts.intGLNumber
	WHERE (tblJournalEntryDoc.dteJournalDate <= @SQAsAt)
		AND (tblJournalEntryDocDTPrj.strProjNumber = @SQProjNum)
		AND (tblJournalEntryDocDT.decDebits > 0)
		AND (tblAccounts.intAccType >= 4)
	GROUP BY tblJournalEntryDocDT.intModule
		, tblJournalEntryDocDT.strCuVeGeID
		, tblJournalEntryDocDT.strCuVeGeDesc
		, tblJournalEntryDocDT.intGLNumber
		, tblJournalEntryDocDT.strDesc
	
	UNION ALL
	
	SELECT 7 AS Number
		, CASE WHEN tblJournalEntryDocDT.intModule <> 0 THEN ISNULL(tblJournalEntryDocDT.intGLNumber, '') ELSE tblJournalEntryDocDT.strCuVeGeID END AS strPartNumber
		, CASE WHEN tblJournalEntryDocDT.intModule <> 0 THEN ISNULL(tblJournalEntryDocDT.strDesc, '') ELSE tblJournalEntryDocDT.strCuVeGeDesc END AS strDesc
		, ISNULL(COUNT(tblJournalEntryDocDT.strCuVeGeID), 0) AS decStockQty
		, (ISNULL(SUM(tblJournalEntryDocDT.decCredits), 0) * - 1) AS decLineTotExc
	FROM tblJournalEntryDoc
	INNER JOIN tblJournalEntryDocDT ON tblJournalEntryDoc.strJEDocID = tblJournalEntryDocDT.strJEDocID
	INNER JOIN tblJournalEntryDocDTPrj ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDocDTPrj.strJEDocID
		AND CASE WHEN tblJournalEntryDocDT.intModule <> 0 THEN tblJournalEntryDocDT.intGLNumber ELSE tblJournalEntryDocDT.strCuVeGeID END = tblJournalEntryDocDTPrj.intGLNumber
		AND tblJournalEntryDocDT.intLineNo = tblJournalEntryDocDTPrj.intLineNo
	INNER JOIN tblAccounts ON CASE WHEN tblJournalEntryDocDT.intModule <> 0 THEN ISNULL(tblJournalEntryDocDT.intGLNumber, '') ELSE tblJournalEntryDocDT.strCuVeGeID END = tblAccounts.intGLNumber
	WHERE (tblJournalEntryDoc.dteJournalDate <= @SQAsAt)
		AND (tblJournalEntryDocDTPrj.strProjNumber = @SQProjNum)
		AND (tblJournalEntryDocDT.decCredits > 0)
		AND (tblAccounts.intAccType >= 4)
	GROUP BY tblJournalEntryDocDT.intModule
		, tblJournalEntryDocDT.strCuVeGeID
		, tblJournalEntryDocDT.strCuVeGeDesc
		, tblJournalEntryDocDT.intGLNumber
		, tblJournalEntryDocDT.strDesc
	
	UNION ALL
	
	SELECT 8 AS Number
		, tblInvIssReqDocDT.strPartNumber
		, tblInv.strDesc AS strDesc
		, SUM(tblInvIssReqDocDT.decQty) AS decStockQty
		, (ISNULL(SUM(tblInvIssReqDocDT.decAmount), 0)) AS decLineTotExc
	FROM tblInvIssReqDoc
	INNER JOIN tblInvIssReqDocDT ON tblInvIssReqDoc.strInvIssReqDocID = tblInvIssReqDocDT.strInvIssReqDocID
	INNER JOIN tblInv ON tblInvIssReqDocDT.strPartNumber = tblInv.strPartNumber
	INNER JOIN tblInvIssReqDocDTPrj ON tblInvIssReqDocDT.strInvIssReqDocID = tblInvIssReqDocDTPrj.strInvIssReqDocID
		AND tblInvIssReqDocDT.strInvIssReqDocID = tblInvIssReqDocDTPrj.strInvIssReqDocID
		AND tblInvIssReqDocDT.intLineNo = tblInvIssReqDocDTPrj.intLineNo
	WHERE (tblInvIssReqDoc.dteJournalDate <= @SQAsAt)
		AND (tblInvIssReqDocDTPrj.strProjNumber = @SQProjNum)
		AND tblInvIssReqDocDT.decQty > 0
	GROUP BY tblInvIssReqDocDT.strPartNumber
	, tblInv.strDesc
	
	UNION ALL
	
	SELECT 9 AS Number
		, tblInvoiceDocDT.strPartNumber
		, tblInvoiceDocDT.strPartDesc AS strDesc
		, SUM(tblInvoiceDocDT.decQty) AS decStockQty
		, (ISNULL(SUM(tblInvoiceDocDT.decCOGS), 0)) AS decLineTotExc
	FROM tblInvoiceDoc
	INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID
	INNER JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
		AND tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
		AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
	WHERE (tblInvoiceDoc.dteJournalDate <= @SQAsAt)
		AND (tblInvoiceDocDTPrj.strProjNumber = @SQProjNum)
		AND tblInvoiceDocDT.decQty > 0
	GROUP BY tblInvoiceDocDT.strPartNumber
	, tblInvoiceDocDT.strPartDesc
	
	UNION ALL
	
	SELECT 10 AS Number
		, tblInvAdjDocDT.strPartNumber
		, tblInv.strDesc AS strDesc
		, SUM(tblInvAdjDocDT.decQty) AS decStockQty
		, (ISNULL(SUM(tblInvAdjDocDT.decAmount), 0)) AS decLineTotExc
	FROM tblInvAdjDoc
	INNER JOIN tblInvAdjDocDT ON tblInvAdjDoc.strAdjDocID = tblInvAdjDocDT.strAdjDocID
	INNER JOIN tblInv ON tblInvAdjDocDT.strPartNumber = tblInv.strPartNumber
	INNER JOIN tblInvAdjDocDTPrj ON tblInvAdjDocDT.strAdjDocID = tblInvAdjDocDTPrj.strAdjDocID
		AND tblInvAdjDocDT.intLineNo = tblInvAdjDocDTPrj.intLineNo
	WHERE (tblInvAdjDoc.dteJournalDate <= @SQAsAt)
		AND (tblInvAdjDocDTPrj.strProjNumber = @SQProjNum)
		AND tblInvAdjDocDT.decQty > 0
	GROUP BY tblInvAdjDocDT.strPartNumber
	, tblInv.strDesc

	UNION ALL
	
	SELECT 11 AS Number
		, tblInvRepackDocDT.strPartNumber
		, tblInv.strDesc AS strDesc
		, SUM(tblInvRepackDocDT.decQty) AS decStockQty
		, (ISNULL(SUM(tblInvRepackDocDT.decAmount), 0)) AS decLineTotExc
	FROM tblInvRepackDoc
	INNER JOIN tblInvRepackDocDT ON tblInvRepackDoc.strRepackDocID = tblInvRepackDocDT.strRepackDocID
	INNER JOIN tblInv ON tblInvRepackDocDT.strPartNumber = tblInv.strPartNumber
	INNER JOIN tblInvRepackDocDTPrj ON tblInvRepackDocDT.strRepackDocID = tblInvRepackDocDTPrj.strRepackDocID
		AND tblInvRepackDocDT.intLineNo = tblInvRepackDocDTPrj.intLineNo
	WHERE (tblInvRepackDoc.dteJournalDate <= @SQAsAt)
		AND (tblInvRepackDocDTPrj.strProjNumber = @SQProjNum)
		AND tblInvRepackDocDT.bitOriginalItem = 0
	GROUP BY tblInvRepackDocDT.strPartNumber
	, tblInv.strDesc

	UNION ALL 
	
	SELECT 12 AS Number
		   ,tblManJobClose.strPartNumber
		   ,tblInv.strDesc as strDesc
		   ,SUM(tblManJobClose.decManQtyClosed)
		   ,(ISNULL(SUM(tblManJobClose.decManAmount),0)) 
    FROM tblManJobClose 
	INNER JOIN tblInv ON tblManJobClose.strPartNumber = tblInv.strPartNumber 
	INNER JOIN tblManJobClosePrj ON tblManJobClose.strJBDocID = tblManJobClosePrj.strJBDocID 
	AND tblManJobClose.lngID = tblManJobClosePrj.lngJBID 
	WHERE (tblManJobClose.dteJournalDate <= @SQAsAt) AND (tblManJobClosePrj.strProjNumber = @SQProjNum) 
	GROUP BY tblManJobClose.strPartNumber, tblInv.strDesc

	ORDER BY strPartNumber
END
GO

CREATE PROCEDURE GetMaxSegmentLength
AS
BEGIN
	SELECT (
			CASE 
				WHEN strSeg1Name IS NULL
					OR (DATALENGTH(strSeg1Name) = 0)
					THEN 0
				ELSE 1
				END
			) + (
			CASE 
				WHEN strSeg2Name IS NULL
					OR (DATALENGTH(strSeg2Name) = 0)
					THEN 0
				ELSE 1
				END
			) + (
			CASE 
				WHEN strSeg3Name IS NULL
					OR (DATALENGTH(strSeg3Name) = 0)
					THEN 0
				ELSE 1
				END
			) + (
			CASE 
				WHEN strSeg4Name IS NULL
					OR (DATALENGTH(strSeg4Name) = 0)
					THEN 0
				ELSE 1
				END
			) + (
			CASE 
				WHEN strSeg5Name IS NULL
					OR (DATALENGTH(strSeg5Name) = 0)
					THEN 0
				ELSE 1
				END
			) + (
			CASE 
				WHEN strSeg6Name IS NULL
					OR (DATALENGTH(strSeg6Name) = 0)
					THEN 0
				ELSE 1
				END
			) + (
			CASE 
				WHEN strSeg7Name IS NULL
					OR (DATALENGTH(strSeg7Name) = 0)
					THEN 0
				ELSE 1
				END
			) + (
			CASE 
				WHEN strSeg8Name IS NULL
					OR (DATALENGTH(strSeg8Name) = 0)
					THEN 0
				ELSE 1
				END
			) + (
			CASE 
				WHEN strSeg9Name IS NULL
					OR (DATALENGTH(strSeg9Name) = 0)
					THEN 0
				ELSE 1
				END
			) + (
			CASE 
				WHEN strSeg10Name IS NULL
					OR (DATALENGTH(strSeg10Name) = 0)
					THEN 0
				ELSE 1
				END
			)
	FROM tblGLSegmentFormatSetup
END
GO

CREATE PROCEDURE getinvdetails @Part AS NVARCHAR(100)
	,@BarCode AS NVARCHAR(100)
AS
BEGIN
	SELECT tblInv.strPartNumber AS PartNumber
		,tblInv.strDesc AS 'Description'
		,tblInv.decLastPPUnit AS 'LastPPUnit'
		,tblInv.decBuyToStock AS 'BuyToStock'
		,tblInv.bitInvSerialType AS 'IsInvSerialType'
		,tblInv.decMass AS 'Mass'
		,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS 'IsSerialDimensionExist'
		,ISNULL(tblInvSerialTypes.bitMethod, 0) AS 'IsMethod'
	FROM tblInv
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE (
			tblInv.strPartNumber = @Part
			OR tblInv.strBarCode = @BarCode
			OR tblInv.strBarCode2 = @BarCode
			)
		AND tblInv.intType = 1
		AND tblInv.bitInactive = 0
		AND tblInv.bitOtherCmp = 0
END
GO

CREATE PROCEDURE [dbo].[UpdateInvLocation]
@SQNewLoc as varchar = Null,
@SQOldLoc as varchar = Null

AS
BEGIN
UPDATE tblInvTrfOrdDoc SET strToLocName = @SQNewLoc WHERE strToLocName = @SQOldLoc
END
GO


CREATE PROCEDURE [dbo].[GetESDKENYA]
  -- Add the parameters for the stored procedure here
AS
  BEGIN
      
      SET nocount ON;

    SELECT ISNULL(bitESDEanbled,0) AS bitESDEanbled,ISNULL(strESDCountry,'') AS strESDCountry  FROM tblCOOpts
	
	END
GO

CREATE PROCEDURE [dbo].[GetESDKENYABARCODE]
 @SQBarCode as Nvarchar(max),
 @SQPartNum as Nvarchar(max)
  -- Add the parameters for the stored procedure here
AS
  BEGIN
      
      SET nocount ON;

    SELECT strPartNumber FROM tblInv WHERE (strBarCode = @SQBarCode OR strBarCode2 = @SQBarCode) AND strPartNumber <> @SQPartNum
	
	END
GO

CREATE procedure [dbo].[CenterAllocationGetCount]
(
@SQAccountNo varchar(MAX)
)
AS
BEGIN
	Select Count(*) from tblAccounts where intAccType in (4,5) AND intGLNumber = @SQAccountNo
END
GO

CREATE procedure [dbo].[ReceiptsLoadRcGetCount]
(
@SQPayIDLoaded bigint
)
AS
BEGIN
	Select Count(*) from tblCustPay Where lngCustPayID = @SQPayIDLoaded
END
GO

CREATE procedure [dbo].[CheckItemIsBOMGetCount]
(
@SQPartNumber varchar(MAX)
)
AS
BEGIN
	SELECT  bitAutoBuild AS AutoBuild, bitAutoBuildSameLoc As AutoBuildSameLoc, bitAllowAdjustKitCompOnDoc AS AllowAdjustKitCompOnDoc FROM tblInv WHERE tblInv.strPartNumber = @SQPartNumber
END
GO

CREATE procedure [dbo].[InvTrackIDCount]
(
@SQDoc nvarchar(MAX)
)
AS
BEGIN
	SELECT lngInvTrackID AS InvTrackID FROM tblOrderDocDA WHERE strOrdDADocID = @SQDoc
END
GO

CREATE procedure [dbo].[COGSCount]
(
@SQInvTrackID bigint,
@SQNumber nvarchar(MAX),
@SQLocation nvarchar(MAX),
@SQLineNo int,
@SQMainLineNo int
)
AS
BEGIN
	Select ABS(decValue)/ABS(decQty) AS COGS from tblInvTrackingDT where lngInvTrackID = @SQInvTrackID and strPartNumber = @SQNumber and strLocName = @SQLocation and intLineNo = @SQLineNo and intMainLineNo = @SQMainLineNo
END
GO

CREATE PROCEDURE [dbo].[LoadPYCount] 
	@SQPayIDLoaded AS bigint 
AS
BEGIN

	Select Count(*) from tblVendPay Where lngVendPayID = @SQPayIDLoaded
END
GO

CREATE PROCEDURE [dbo].[RptCashBookVendPayHyperLinkCount] 
@SQstrDocNumber AS NVARCHAR(Max) = ''
AS
BEGIN

	SELECT Count(lngVendPayID) FROM tblVendPay WHERE strSource = @SQstrDocNumber
END
GO


CREATE PROCEDURE [dbo].[RptCashBookHyperLinkCount] 
@SQstrDocNumber AS NVARCHAR(Max) = ''
AS
BEGIN

	SELECT Count(lngCustPayID) FROM tblCustPay WHERE strSource = @SQstrDocNumber
END
GO


CREATE PROCEDURE [dbo].[RptCustTranHyperLinkCount] 
@SQstrDocNumber AS NVARCHAR(Max) = ''
AS
BEGIN

	SELECT Count(lngCustPayID) FROM tblCustPay WHERE strSource = @SQstrDocNumber
END
GO

CREATE PROCEDURE [dbo].[RptJournalEntCustPayHyperLinkCount] 
@SQlngJourID AS bigint 
AS
BEGIN

	SELECT Count(lngCustPayID) FROM tblCustPay WHERE lngJourID = @SQlngJourID
END
GO

CREATE PROCEDURE [dbo].[RptJournalEntHyperLinkCount] 
@SQlngJourID AS bigint 
AS
BEGIN

	SELECT Count(lngVendPayID) FROM tblVendPay WHERE lngJourID = @SQlngJourID
END
GO

CREATE PROCEDURE [dbo].[RptJournalCustPayHyperLinkCount] 
@SQstrDocNumber AS NVARCHAR(Max) = ''
AS
BEGIN
SELECT Cast(Count(lngCustPayID) as bigint) FROM tblCustPay WHERE strSource = @SQstrDocNumber
END
GO

CREATE PROCEDURE [dbo].[RptJournalHyperLinkCount] 
@SQstrDocNumber AS NVARCHAR(Max) = ''
AS
BEGIN

	SELECT Count(lngVendPayID) FROM tblVendPay WHERE strSource = @SQstrDocNumber
END
GO

CREATE PROCEDURE [dbo].[RptJournalEntJournalHyperLinkCount] 
@SQstrDocNumber AS NVARCHAR(MAX) = ''
AS
BEGIN

SELECT lngJourID FROM tblInvoiceDocP WHERE strInvPDocID = @SQstrDocNumber
END
GO

CREATE PROCEDURE [dbo].[GetAllInvJournalCodesCount] @InActive BIT = 0
	,@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	IF(@InActive = 0)
	BEGIN
		SELECT count(*)
		FROM tblInv
		INNER JOIN tblAccounts ON tblInv.intExpAcct = tblAccounts.intGLNumber  
		WHERE (tblInv.intType = 5)  and tblInv.bitInactive = @InActive
			AND (
				ISNULL(strPartNumber, '') LIKE '%' + ISNULL(@search, strPartNumber) + '%'
				OR ISNULL(tblInv.strDesc, '') LIKE '%' + ISNULL(@search, tblInv.strDesc) + '%'
				OR ISNULL(tblAccounts.intGLNumber, '') LIKE '%' + ISNULL(@search, tblAccounts.intGLNumber) + '%'
				OR ISNULL(tblAccounts.strDesc, '') LIKE '%' + ISNULL(@search, tblAccounts.strDesc) + '%'
				)
	END
	ELSE
	BEGIN
		SELECT count(*)
		FROM tblInv
		INNER JOIN tblAccounts ON tblInv.intExpAcct = tblAccounts.intGLNumber  
		WHERE (tblInv.intType = 5) 
			AND (
				ISNULL(strPartNumber, '') LIKE '%' + ISNULL(@search, strPartNumber) + '%'
				OR ISNULL(tblInv.strDesc, '') LIKE '%' + ISNULL(@search, tblInv.strDesc) + '%'
				OR ISNULL(tblAccounts.intGLNumber, '') LIKE '%' + ISNULL(@search, tblAccounts.intGLNumber) + '%'
				OR ISNULL(tblAccounts.strDesc, '') LIKE '%' + ISNULL(@search, tblAccounts.strDesc) + '%'
				)
	END
END
GO


CREATE PROCEDURE RptListDeptOnLoadedBusinessLogic
AS
BEGIN
	SELECT intDept AS Code
		,strDesc AS [Description]
	FROM tblDepartments
	WHERE bitInactive = 0
	ORDER BY intDept
END
GO

CREATE PROCEDURE GetBusinessLogicHistoryYear @HistoryYear AS NVARCHAR(200)
AS
BEGIN
	SELECT uidYearID AS YearID
		,dteYearStart AS YearStart
		,dteYearEnd AS YearEnd
	FROM tblAcctHist
	WHERE intFiscalYr = @HistoryYear
END
GO

CREATE PROCEDURE GetGeneralRefreshData @optCurrentYear_IsChecked AS BIT
	,@optPreviousYear_IsChecked AS BIT
	,@optHistoryYear_IsChecked AS BIT
	,@oAcctSec_GLAccountAccess AS BIT
	,@chkInactive_IsChecked AS BIT
	,@SQstrUserName AS NVARCHAR(200)
	,@SQSearchBy AS NVARCHAR(MAX)
	,@SQuidYearID AS UNIQUEIDENTIFIER
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1
	BEGIN
		IF @oAcctSec_GLAccountAccess = 1
		BEGIN
			IF @chkInactive_IsChecked = 0
			BEGIN
				SELECT intGLNumber AS Account
					,strDesc AS [Description]
					,0
					,''
				FROM tblAccounts
				WHERE bitLinkCEarnings = 0
					AND intGroupCode < 3
					AND bitInactive = 0
					AND (
						intGLNumber LIKE @SQSearchBy
						OR strDesc LIKE @SQSearchBy
						)
				ORDER BY intGLNumber
			END
			ELSE
			BEGIN
				SELECT intGLNumber AS Account
					,strDesc AS [Description]
					,0
					,''
				FROM tblAccounts
				WHERE bitLinkCEarnings = 0
					AND intGroupCode < 3
					AND (
						intGLNumber LIKE @SQSearchBy
						OR strDesc LIKE @SQSearchBy
						)
				ORDER BY intGLNumber
			END
		END
		ELSE
		BEGIN
			IF @chkInactive_IsChecked = 0
			BEGIN
				SELECT tblAccounts.intGLNumber AS Account
					,tblAccounts.strDesc AS [Description]
					,ISNULL((
							SELECT COUNT(tblAccountsSec.intGLNumber)
							FROM tblAccountsSec
							WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber
							), 0)
					,ISNULL(tblAccountsSec.strUserName, '')
				FROM tblAccounts
				LEFT JOIN tblAccountsSec ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber
					AND tblAccountsSec.strUserName = @SQstrUserName
				WHERE tblAccounts.bitLinkCEarnings = 0
					AND tblAccounts.intGroupCode < 3
					AND tblAccounts.bitInactive = 0
					AND (
						tblAccounts.intGLNumber LIKE @SQSearchBy
						OR tblAccounts.strDesc LIKE @SQSearchBy
						)
				ORDER BY tblAccounts.intGLNumber
			END
			ELSE
			BEGIN
				SELECT tblAccounts.intGLNumber AS Account
					,tblAccounts.strDesc AS [Description]
					,ISNULL((
							SELECT COUNT(tblAccountsSec.intGLNumber)
							FROM tblAccountsSec
							WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber
							), 0)
					,ISNULL(tblAccountsSec.strUserName, '')
				FROM tblAccounts
				LEFT JOIN tblAccountsSec ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber
					AND tblAccountsSec.strUserName = @SQstrUserName
				WHERE tblAccounts.bitLinkCEarnings = 0
					AND tblAccounts.intGroupCode < 3
					AND (
						tblAccounts.intGLNumber LIKE @SQSearchBy
						OR tblAccounts.strDesc LIKE @SQSearchBy
						)
				ORDER BY tblAccounts.intGLNumber
			END
		END
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		IF @oAcctSec_GLAccountAccess = 1
		BEGIN
			IF @chkInactive_IsChecked = 0
			BEGIN
				SELECT intGLNumber AS Account
					,strDesc AS [Description]
					,0
					,''
				FROM tblAccountsLY
				WHERE bitLinkCEarnings = 0
					AND intGroupCode < 3
					AND bitInactive = 0
					AND (
						intGLNumber LIKE @SQSearchBy
						OR strDesc LIKE @SQSearchBy
						)
				ORDER BY intGLNumber
			END
			ELSE
			BEGIN
				SELECT intGLNumber AS Account
					,strDesc AS [Description]
					,0
					,''
				FROM tblAccountsLY
				WHERE bitLinkCEarnings = 0
					AND intGroupCode < 3
					AND (
						intGLNumber LIKE @SQSearchBy
						OR strDesc LIKE @SQSearchBy
						)
				ORDER BY intGLNumber
			END
		END
		ELSE
		BEGIN
			IF @chkInactive_IsChecked = 0
			BEGIN
				SELECT tblAccountsLY.intGLNumber AS Account
					,tblAccountsLY.strDesc AS [Description]
					,ISNULL((
							SELECT COUNT(tblAccountsSec.intGLNumber)
							FROM tblAccountsSec
							WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber
							), 0)
					,ISNULL(tblAccountsSec.strUserName, '')
				FROM tblAccountsLY
				LEFT JOIN tblAccountsSec ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber
					AND tblAccountsSec.strUserName = @SQstrUserName
				WHERE tblAccountsLY.bitLinkCEarnings = 0
					AND tblAccountsLY.intGroupCode < 3
					AND tblAccountsLY.bitInactive = 0
					AND (
						tblAccountsLY.intGLNumber LIKE @SQSearchBy
						OR tblAccountsLY.strDesc LIKE @SQSearchBy
						)
				ORDER BY tblAccountsLY.intGLNumber
			END
			ELSE
			BEGIN
				SELECT tblAccountsLY.intGLNumber AS Account
					,tblAccountsLY.strDesc AS [Description]
					,ISNULL((
							SELECT COUNT(tblAccountsSec.intGLNumber)
							FROM tblAccountsSec
							WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber
							), 0)
					,ISNULL(tblAccountsSec.strUserName, '')
				FROM tblAccountsLY
				LEFT JOIN tblAccountsSec ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber
					AND tblAccountsSec.strUserName = @SQstrUserName
				WHERE tblAccountsLY.bitLinkCEarnings = 0
					AND tblAccountsLY.intGroupCode < 3
					AND (
						tblAccountsLY.intGLNumber LIKE @SQSearchBy
						OR tblAccountsLY.strDesc LIKE @SQSearchBy
						)
				ORDER BY tblAccountsLY.intGLNumber
			END
		END
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		IF @oAcctSec_GLAccountAccess = 1
		BEGIN
			IF @chkInactive_IsChecked = 0
			BEGIN
				SELECT intGLNumber AS Account
					,strDesc AS [Description]
					,0
					,''
				FROM tblAccountsHist
				WHERE bitLinkCEarnings = 0
					AND intGroupCode < 3
					AND uidYearID = @SQuidYearID
					AND bitInactive = 0
					AND (
						intGLNumber LIKE @SQSearchBy
						OR strDesc LIKE @SQSearchBy
						)
				ORDER BY intGLNumber
			END
			ELSE
			BEGIN
				SELECT intGLNumber AS Account
					,strDesc AS [Description]
					,0
					,''
				FROM tblAccountsHist
				WHERE bitLinkCEarnings = 0
					AND intGroupCode < 3
					AND uidYearID = @SQuidYearID
					AND (
						intGLNumber LIKE @SQSearchBy
						OR strDesc LIKE @SQSearchBy
						)
				ORDER BY intGLNumber
			END
		END
		ELSE
		BEGIN
			IF @chkInactive_IsChecked = 0
			BEGIN
				SELECT tblAccountsHist.intGLNumber AS Account
					,tblAccountsHist.strDesc AS [Description]
					,ISNULL((
							SELECT COUNT(tblAccountsSec.intGLNumber)
							FROM tblAccountsSec
							WHERE tblAccountsSec.intGLNumber = tblAccountsHist.intGLNumber
							), 0)
					,ISNULL(tblAccountsSec.strUserName, '')
				FROM tblAccountsHist
				LEFT JOIN tblAccountsSec ON tblAccountsHist.intGLNumber = tblAccountsSec.intGLNumber
					AND tblAccountsSec.strUserName = @SQstrUserName
				WHERE tblAccountsHist.bitLinkCEarnings = 0
					AND tblAccountsHist.intGroupCode < 3
					AND tblAccountsHist.uidYearID = @SQuidYearID
					AND tblAccountsHist.bitInactive = 0
					AND (
						tblAccountsHist.intGLNumber LIKE @SQSearchBy
						OR tblAccountsHist.strDesc LIKE @SQSearchBy
						)
				ORDER BY tblAccountsHist.intGLNumber
			END
			ELSE
			BEGIN
				SELECT tblAccountsHist.intGLNumber AS Account
					,tblAccountsHist.strDesc AS [Description]
					,ISNULL((
							SELECT COUNT(tblAccountsSec.intGLNumber)
							FROM tblAccountsSec
							WHERE tblAccountsSec.intGLNumber = tblAccountsHist.intGLNumber
							), 0)
					,ISNULL(tblAccountsSec.strUserName, '')
				FROM tblAccountsHist
				LEFT JOIN tblAccountsSec ON tblAccountsHist.intGLNumber = tblAccountsSec.intGLNumber
					AND tblAccountsSec.strUserName = @SQstrUserName
				WHERE tblAccountsHist.bitLinkCEarnings = 0
					AND tblAccountsHist.intGroupCode < 3
					AND tblAccountsHist.uidYearID = @SQuidYearID
					AND (
						tblAccountsHist.intGLNumber LIKE @SQSearchBy
						OR tblAccountsHist.strDesc LIKE @SQSearchBy
						)
				ORDER BY tblAccountsHist.intGLNumber
			END
		END
	END
END
GO

CREATE PROCEDURE [dbo].[GeneralLoadQueryFinal] (
	@SQintAcc_inquery AS NVARCHAR(MAX)
	,@SQstrDesc_inquery AS NVARCHAR(MAX)
	,@SQuidYearID AS UNIQUEIDENTIFIER
	,@SQStart AS DATE
	,@SQEnd AS DATE
	,@SQJourStart AS INT
	,@SQJourEnd AS INT
	,@SQModule AS INT
	,@optCurrentYear_IsChecked AS BIT
	,@optPreviousYear_IsChecked AS BIT
	,@optHistoryYear_IsChecked AS BIT
	,@chkShowUnallocOnly_IsChecked AS BIT
	,@optJournalRange_IsChecked AS BIT
	,@optSortDate_IsChecked AS BIT
	,@SQOmitClosingBal AS BIT
	,@SQEntryTypeRec AS INT
	,@SQEntryTypePay AS INT
	)
AS
BEGIN
	DECLARE @SQAcct AS NVARCHAR(200)
	DECLARE @SQAcctDesc AS NVARCHAR(200)
	DECLARE @intAccTemp AS NVARCHAR(200)
	DECLARE @strDescTemp AS NVARCHAR(200)
	DECLARE @decopen AS DECIMAL(18, 4)
	DECLARE @intAcctType AS NVARCHAR(200)
	DECLARE @TOTALCOUNTER AS INT
	DECLARE @COUNTER AS INT = 0
	DECLARE @ROW AS INTEGER = 1
	DECLARE @decBalForward AS DECIMAL(18, 4)
	DECLARE @decEntries AS DECIMAL(18, 4)
	DECLARE @intGroupNumber AS INT = 0
	DECLARE @SQLQuery1_1 AS NVARCHAR(MAX)
	DECLARE @SQLQuery1_2 AS NVARCHAR(MAX)
	DECLARE @SQLQuery1_3 AS NVARCHAR(MAX)
	DECLARE @SQLQuery2_1 AS NVARCHAR(MAX)
	DECLARE @SQLQuery2_2 AS NVARCHAR(MAX)
	DECLARE @SQLQuery2_3 AS NVARCHAR(MAX)
	DECLARE @SQLQuery3_1 AS NVARCHAR(MAX)
	DECLARE @SQLQuery3_2 AS NVARCHAR(MAX)
	DECLARE @SQLQuery3_3 AS NVARCHAR(MAX)
	DECLARE @ParameterDefinition AS NVARCHAR(MAX)
	DECLARE @strCurrency NVARCHAR(3)
	DECLARE @strCurrencyHome NVARCHAR(3)

	CREATE TABLE #Temp (
		intAcc NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,strDesc NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,intAccType INT
		,strCurrency NVARCHAR(3) COLLATE SQL_Latin1_General_CP1_CI_AS
		,decOpenBalance DECIMAL(18, 4)
		,decTransBal DECIMAL(18, 4)
		,decBalForward DECIMAL(18, 4)
		)

	CREATE TABLE #tmpGENERAL (
		ID INT identity(1, 1)
		,Group1 INT
		,AcctType INT
		,Account NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,[Description] NVARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS
		,[Date] DATETIME
		,Comment NVARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS
		,[Source] NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,Journal INT
		,Debits DECIMAL(18, 4)
		,Credits DECIMAL(18, 4)
		,Amount DECIMAL(18, 4)
		,Currency NVARCHAR(3) COLLATE SQL_Latin1_General_CP1_CI_AS
		,Exchange DECIMAL(20, 6)
		,DebitsF DECIMAL(18, 4)
		,CreditsF DECIMAL(18, 4)
		,AmountF DECIMAL(18, 4)
		,
		)

	CREATE TABLE #TEMP2 (strSource NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS)

	CREATE TABLE #Temp3 (
		dteJournalDate DATETIME
		,NEWCOLUMN1 NVARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS
		,strSource NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,lngJourID INT
		,decDebits DECIMAL(18, 4)
		,decCredits DECIMAL(18, 4)
		,decAmount DECIMAL(18, 4)
		,decAllocatedAmtToDate DECIMAL(18, 4)
		,decUnAllocatedAmt DECIMAL(18, 4)
		,NEWCOLUMN2 NVARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS
		,strCurrency NVARCHAR(3) COLLATE SQL_Latin1_General_CP1_CI_AS
		,decExchange DECIMAL(20, 6)
		,decDebitsF DECIMAL(18, 4)
		,decCreditsF DECIMAL(18, 4)
		,decAmountF DECIMAL(18, 4)
		,AccType INT
		,Account NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,[Description] NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,intLineNum INT
		)

	SELECT @strCurrencyHome = strCurrency
	FROM tblCurrency
	WHERE bitHome = 1

	IF @optCurrentYear_IsChecked = 1
	BEGIN
		INSERT INTO #Temp
		SELECT acc.intGLNumber
			,acc.strDesc
			,intAccType
			,strCurrency
			,decOpenBalance
			,ISNULL(decAmount, 0)
			,(decOpenBalance + ISNULL(decAmount, 0))
		FROM tblAccounts AS acc
		INNER JOIN (
			SELECT Value
			FROM [fnSplitStringAsTable]((@SQintAcc_inquery), (','))
			WHERE Value <> '''0'
				AND Value <> '0'''
				AND Value <> '0'
			) AS accNo ON acc.intGLNumber = accNo.Value
		LEFT JOIN (
			SELECT ISNULL(SUM(decAmount), 0) AS decAmount
				,intGLNumber
			FROM tblJournalEnt
			INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
			WHERE (tblJournal.dteJournalDate < @SQStart)
			GROUP BY intGLNumber
			) AS Jour ON Jour.intGLNumber = acc.intGLNumber

		INSERT INTO #TEMP2
		SELECT DISTINCT strSource
		FROM tblJournal
		WHERE (
				tblJournal.dteJournalDate BETWEEN @SQStart
					AND @SQEnd
				)
			AND intEntryType IN (
				5
				,6
				)
	END
	ELSE IF @optPreviousYear_IsChecked = 1
	BEGIN
		INSERT INTO #Temp
		SELECT acc.intGLNumber
			,acc.strDesc
			,intAccType
			,strCurrency
			,decOpenBalance
			,ISNULL(decAmount, 0)
			,(decOpenBalance + ISNULL(decAmount, 0))
		FROM tblAccountsLY AS acc
		INNER JOIN (
			SELECT Value
			FROM [fnSplitStringAsTable]((@SQintAcc_inquery), (','))
			WHERE Value <> '''0'
				AND Value <> '0'''
				AND Value <> '0'
			) AS accNo ON acc.intGLNumber = accNo.Value
		LEFT JOIN (
			SELECT ISNULL(SUM(decAmount), 0) AS decAmount
				,intGLNumber
			FROM tblJournalEntLY
			INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
			WHERE (tblJournalLY.dteJournalDate < @SQStart)
			GROUP BY intGLNumber
			) AS Jour ON Jour.intGLNumber = acc.intGLNumber

		INSERT INTO #TEMP2
		SELECT DISTINCT strSource
		FROM tblJournalLY
		WHERE (
				tblJournalLY.dteJournalDate BETWEEN @SQStart
					AND @SQEnd
				)
			AND intEntryType IN (
				5
				,6
				)
	END
	ELSE IF @optHistoryYear_IsChecked = 1
	BEGIN
		INSERT INTO #Temp
		SELECT acc.intGLNumber
			,acc.strDesc
			,intAccType
			,strCurrency
			,decOpenBalance
			,ISNULL(decAmount, 0)
			,(decOpenBalance + ISNULL(decAmount, 0))
		FROM tblAccountsHist AS acc
		INNER JOIN (
			SELECT Value
			FROM [fnSplitStringAsTable]((@SQintAcc_inquery), (','))
			WHERE Value <> '''0'
				AND Value <> '0'''
				AND Value <> '0'
			) AS accNo ON acc.intGLNumber = accNo.Value
		LEFT JOIN (
			SELECT ISNULL(SUM(decAmount), 0) AS decAmount
				,intGLNumber
			FROM tblJournalEntHist
			INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID
				AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID
			WHERE (tblJournalHist.dteJournalDate < @SQStart)
				AND (tblJournalHist.uidYearID = @SQuidYearID)
			GROUP BY intGLNumber
			) AS Jour ON Jour.intGLNumber = acc.intGLNumber
		WHERE acc.uidYearID = @SQuidYearID

		INSERT INTO #TEMP2
		SELECT DISTINCT strSource
		FROM tblJournalHist
		WHERE (
				tblJournalHist.dteJournalDate BETWEEN @SQStart
					AND @SQEnd
				)
			AND (tblJournalHist.uidYearID = @SQuidYearID)
			AND intEntryType IN (
				5
				,6
				)
	END

	INSERT INTO #tmpGENERAL (
		Group1
		,AcctType
		,Account
		,Description
		,DATE
		,Comment
		,Source
		,Journal
		,Debits
		,Credits
		,Amount
		,Currency
		,Exchange
		,DebitsF
		,CreditsF
		,AmountF
		)
	SELECT RANK() OVER (
			ORDER BY intAcc
			)
		,intAccType
		,intAcc
		,strDesc
		,@SQStart
		,'Balance Forward'
		,' '
		,0
		,0
		,0
		,decBalForward
		,strCurrency
		,1
		,0
		,0
		,0
	FROM #Temp

	SET @ParameterDefinition = ' @SQModule INT,  
 @SQJourStart Decimal(18,4),  
 @SQJourEnd Decimal(18,4),  
 @SQEnd Date,  
 @SQStart Date'

	IF @optHistoryYear_IsChecked = 1
	BEGIN
		SET @ParameterDefinition = @ParameterDefinition + ' ,@SQuidYearID UniqueIdentifier'
	END

	----Get Detail Records for Period Reporting On  
	SET @SQLQuery1_1 = 'SELECT HDR.dteJournalDate, CASE WHEN HDR.intModule = ' + CONVERT(NVARCHAR(50), @SQModule) + ' THEN CASE WHEN DTL.strComment = '''' THEN HDR.strComment ELSE DTL.strComment END ELSE HDR.strComment END, HDR.strSource, HDR.lngJourID, DTL.decDebits, DTL.decCredits, DTL.decAmount, DTL.decAllocatedAmtToDate, DTL.decUnAllocatedAmt, CASE WHEN ISNULL(BRT.strSource, '''') = '''' THEN ISNULL((SELECT TOP 1 JDT.strLineReference FROM tblJournalEntryDoc JHR
INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID WHERE (JHR.lngJourID = HDR.lngJourID) AND (JHR.strJEDocID = HDR.strSource) AND (JDT.strCuVeGeID = DTL.intGLNumber OR JDT.intGLNumber = DTL.intGLNumber) AND (JDT.strLineComment = DTL.strComment)), '''') ELSE ISNULL(BRT.strSource, '''') END, ISNULL(CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypeRec) + ' THEN tblCustPay.strCurrency ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypePay) + 
		' THEN tblVendPay.strCurrency ELSE DTL.strCurrency END END, DTL.strCurrency) AS strCurrency, ISNULL(CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypeRec) + ' THEN tblCustPay.decExchange ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypePay) + ' THEN tblVendPay.decExchange ELSE DTL.decExchange END END, DTL.decExchange) AS decExchange, CASE WHEN ''' + @strCurrencyHome + ''' <> DTL.strCurrency AND DTL.decAmountF = 0 THEN CASE WHEN DTL.decDebits <> 0 THEN CASE WHEN DTL.decDebits = 0 OR DTL.decExchange = 0 THEN 0 ELSE ROUND(DTL.decDebits / DTL.decExchange,2) END ELSE DTL.decDebitsF
		END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypeRec) + ' AND tblCustPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decDebits = 0 OR tblCustPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decDebits / tblCustPay.decExchange,2) END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypePay) + ' AND tblVendPay.strCurrency <> ''' + 
		@strCurrencyHome + ''' THEN CASE WHEN DTL.decDebits = 0 OR tblVendPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decDebits / tblVendPay.decExchange,2) END ELSE DTL.decDebitsF END END END, CASE WHEN ''' + @strCurrencyHome + ''' <> DTL.strCurrency AND DTL.decAmountF = 0 THEN CASE WHEN DTL.decCredits <> 0 THEN CASE WHEN DTL.decCredits = 0 OR DTL.decExchange = 0 THEN 0 ELSE ROUND(DTL.decCredits / DTL.decExchange,2) END ELSE DTL.decCreditsF END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypeRec) + ' AND tblCustPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decCredits = 0 OR tblCustPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decCredits / tblCustPay.decExchange,2) END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypePay) + ' AND tblVendPay.strCurrency <> ''' + @strCurrencyHome + 
		''' THEN CASE WHEN DTL.decCredits = 0 OR tblVendPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decCredits / tblVendPay.decExchange,2) END ELSE DTL.decCreditsF END END END, CASE WHEN ''' + @strCurrencyHome + ''' <> DTL.strCurrency AND DTL.decAmountF = 0 THEN CASE WHEN DTL.decAmount <> 0 THEN CASE WHEN DTL.decAmount = 0 OR DTL.decExchange = 0 THEN 0 ELSE ROUND(DTL.decAmount / DTL.decExchange,2) END ELSE DTL.decAmountF END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypeRec) + ' AND tblCustPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decAmount = 0 OR tblCustPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decAmount / tblCustPay.decExchange,2) END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypePay) + ' AND tblVendPay.strCurrency <> ''' + @strCurrencyHome + 
		''' THEN CASE WHEN DTL.decAmount = 0 OR tblVendPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decAmount / tblVendPay.decExchange,2) END ELSE DTL.decAmountF END END END, ACC.intAccType, ACC.intAcc, ACC.strDesc, DTL.intLineNum '
	SET @SQLQuery1_2 = 
		'FROM tblJournal HDR INNER JOIN tblJournalEnt DTL ON HDR.lngJourID = DTL.lngJourID INNER JOIN #Temp ACC ON ACC.intAcc = DTL.intGLNumber LEFT OUTER JOIN tblBankRecTrans BRT ON BRT.lngJourID = DTL.lngJourID AND BRT.intLineNum = DTL.intLineNum AND BRT.dteJourDate = HDR.dteJournalDate LEFT JOIN (SELECT lngJourID,dteJournalDate,j.strSource,strCurrency,decExchange From tblCustPay CP INNER JOIN #TEMP2 J on CP.strSource=j.strSource) AS tblCustPay ON HDR.strSource = tblCustPay.strSource AND HDR.lngJourID = tblCustPay.lngJourID AND HDR.dteJournalDate = tblCustPay.dteJournalDate LEFT JOIN (SELECT lngJourID,dteJournalDate,j.strSource,strCurrency,decExchange From tblVendPay VP INNER JOIN #TEMP2 J on VP.strSource = j.strSource UNION SELECT lngJourID
,dteJournalDate,j.strSource,strCurrency,decExchange FROM tblVendPay VP INNER JOIN #TEMP2 J ON VP.strReference = j.strSource) AS tblVendPay ON HDR.strSource = tblVendPay.strSource AND HDR.lngJourID = tblVendPay.lngJourID AND HDR.dteJournalDate = tblVendPay.dteJournalDate AND DTL.strCurrency = tblVendPay.strCurrency WHERE (HDR.dteJournalDate >= ''' 
		+ CONVERT(NVARCHAR(50), @SQStart) + ''') AND (HDR.dteJournalDate <= ''' + CONVERT(NVARCHAR(50), @SQEnd) + ''')'
	SET @SQLQuery2_1 = 'SELECT HDR.dteJournalDate, CASE WHEN HDR.intModule = ' + CONVERT(NVARCHAR(50), @SQModule) + ' THEN CASE WHEN DTL.strComment = '''' THEN HDR.strComment ELSE DTL.strComment END ELSE HDR.strComment END, HDR.strSource, HDR.lngJourID, DTL.decDebits, DTL.decCredits, DTL.decAmount, DTL.decAllocatedAmtToDate, DTL.decUnAllocatedAmt, CASE WHEN ISNULL(BRT.strSource, '''') = '''' THEN ISNULL((SELECT TOP 1 JDT.strLineReference FROM tblJournalEntryDoc JHR INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID WHERE (JHR.lngJourID = HDR.lngJourID) AND (JHR.strJEDocID = HDR.strSource) AND (JDT.strCuVeGeID = DTL.intGLNumber OR JDT.intGLNumber = DTL.intGLNumber) AND (JDT.strLineComment = DTL.strComment)), '''') ELSE ISNULL(BRT.strSource, '''') END, ISNULL(CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypeRec) + ' THEN tblCustPay.strCurrency ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypePay) + 
		' THEN tblVendPay.strCurrency ELSE DTL.strCurrency END END, DTL.strCurrency) AS strCurrency,
ISNULL(CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypeRec) + ' THEN tblCustPay.decExchange ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypePay) + ' THEN tblVendPay.decExchange ELSE DTL.decExchange END END, DTL.decExchange) AS decExchange, CASE WHEN ''' + @strCurrencyHome + ''' <> DTL.strCurrency AND DTL.decAmountF = 0 THEN CASE WHEN DTL.decDebits <> 0 THEN CASE WHEN DTL.decDebits = 0 OR DTL.decExchange = 0 THEN 0 ELSE ROUND(DTL.decDebits / DTL.decExchange,2) END ELSE DTL.decDebitsF
 END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypeRec) + ' AND tblCustPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decDebits = 0 OR tblCustPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decDebits / tblCustPay.decExchange,2) END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypePay) + ' AND tblVendPay.strCurrency <> ''' + 
		@strCurrencyHome + ''' THEN CASE WHEN DTL.decDebits = 0 OR tblVendPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decDebits / tblVendPay.decExchange,2) END ELSE DTL.decDebitsF END END END, CASE WHEN ''' + @strCurrencyHome + ''' <> DTL.strCurrency AND DTL.decAmountF = 0 THEN CASE WHEN DTL.decCredits <> 0 THEN CASE WHEN DTL.decCredits = 0 OR DTL.decExchange = 0 THEN 0 ELSE ROUND(DTL.decCredits / DTL.decExchange,2) END ELSE DTL.decCreditsF END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypeRec) + ' AND tblCustPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decCredits = 0 OR tblCustPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decCredits / tblCustPay.decExchange,2) END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypePay) + ' AND tblVendPay.strCurrency <> ''' + @strCurrencyHome + 
		''' THEN CASE WHEN DTL.decCredits = 0 OR tblVendPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decCredits / tblVendPay.decExchange,2) END ELSE DTL.decCreditsF END END END, CASE WHEN ''' + @strCurrencyHome + ''' <> DTL.strCurrency AND DTL.decAmountF = 0 THEN CASE WHEN DTL.decAmount <> 0 THEN CASE WHEN DTL.decAmount = 0 OR DTL.decExchange = 0 THEN 0 ELSE ROUND(DTL.decAmount / DTL.decExchange,2) END ELSE DTL.decAmountF END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypeRec) + ' AND tblCustPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decAmount = 0 OR tblCustPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decAmount / tblCustPay.decExchange,2) END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypePay) + ' AND tblVendPay.strCurrency <> ''' + @strCurrencyHome + 
		''' THEN CASE WHEN DTL.decAmount = 0 OR tblVendPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decAmount / tblVendPay.decExchange,2) END ELSE DTL.decAmountF END END END, ACC.intAccType, ACC.intAcc, ACC.strDesc, DTL.intLineNum '
	SET @SQLQuery2_2 = 
		'FROM tblJournalLY HDR INNER JOIN tblJournalEntLY DTL ON HDR.lngJourID = DTL.lngJourID INNER JOIN #Temp ACC ON ACC.intAcc = DTL.intGLNumber LEFT OUTER JOIN tblBankRecTrans BRT ON BRT.lngJourID = DTL.lngJourID AND BRT.intLineNum = DTL.intLineNum AND BRT.dteJourDate = HDR.dteJournalDate LEFT JOIN (SELECT lngJourID,dteJournalDate,j.strSource,strCurrency,decExchange From tblCustPay CP INNER JOIN #TEMP2 J on CP.strSource=j.strSource) AS tblCustPay ON HDR.strSource = tblCustPay.strSource AND
 HDR.lngJourID = tblCustPay.lngJourID AND HDR.dteJournalDate = tblCustPay.dteJournalDate LEFT JOIN (SELECT lngJourID,dteJournalDate,j.strSource,strCurrency,decExchange From tblVendPay VP INNER JOIN #TEMP2 J on VP.strSource = j.strSource UNION SELECT lngJourID,dteJournalDate,j.strSource,strCurrency,decExchange FROM tblVendPay VP INNER JOIN #TEMP2 J ON VP.strReference = j.strSource) AS tblVendPay ON HDR.strSource = tblVendPay.strSource AND HDR.lngJourID = tblVendPay.lngJourID AND HDR.dteJournalDate = tblVendPay.dteJournalDate AND DTL.strCurrency = tblVendPay.strCurrency WHERE (HDR.dteJournalDate >= ''' 
		+ CONVERT(NVARCHAR(50), @SQStart) + ''') AND (HDR.dteJournalDate <= ''' + CONVERT(NVARCHAR(50), @SQEnd) + ''')'
	SET @SQLQuery3_1 = 'SELECT HDR.dteJournalDate, CASE WHEN HDR.intModule = ' + CONVERT(NVARCHAR(50), @SQModule) + ' THEN CASE WHEN DTL.strComment = '''' THEN HDR.strComment ELSE DTL.strComment END ELSE HDR.strComment END, HDR.strSource, HDR.lngJourID, DTL.decDebits, DTL.decCredits, DTL.decAmount, DTL.decAllocatedAmtToDate, DTL.decUnAllocatedAmt, CASE WHEN ISNULL(BRT.strSource, '''') = '''' THEN ISNULL((SELECT TOP 1 JDT.strLineReference FROM tblJournalEntryDoc JHR INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID WHERE (JHR.lngJourID = HDR.lngJourID) AND (JHR.strJEDocID = HDR.strSource) AND (JDT.strCuVeGeID = DTL.intGLNumber OR JDT.intGLNumber = DTL.intGLNumber) AND (JDT.strLineComment = DTL.strComment)), '''') ELSE ISNULL(BRT.strSource, '''') END, ISNULL(CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypeRec) + ' THEN tblCustPay.strCurrency ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypePay) + 
		' THEN tblVendPay.strCurrency ELSE DTL.strCurrency END END, DTL.strCurrency) AS strCurrency,
ISNULL(CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypeRec) + ' THEN tblCustPay.decExchange ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypePay) + ' THEN tblVendPay.decExchange ELSE DTL.decExchange END END, DTL.decExchange) AS decExchange, CASE WHEN ''' + @strCurrencyHome + ''' <> DTL.strCurrency AND DTL.decAmountF = 0 THEN CASE WHEN DTL.decDebits <> 0 THEN CASE WHEN DTL.decDebits = 0 OR DTL.decExchange = 0 THEN 0 ELSE ROUND(DTL.decDebits / DTL.decExchange,2) END ELSE DTL.decDebitsF 
END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypeRec) + ' AND tblCustPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decDebits = 0 OR tblCustPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decDebits / tblCustPay.decExchange,2) END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypePay) + ' AND tblVendPay.strCurrency <> ''' + 
		@strCurrencyHome + ''' THEN CASE WHEN DTL.decDebits = 0 OR tblVendPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decDebits / tblVendPay.decExchange,2) END ELSE DTL.decDebitsF END END END, CASE WHEN ''' + @strCurrencyHome + ''' <> DTL.strCurrency AND DTL.decAmountF = 0 THEN CASE WHEN DTL.decCredits <> 0 THEN CASE WHEN DTL.decCredits = 0 OR DTL.decExchange = 0 THEN 0 ELSE ROUND(DTL.decCredits / DTL.decExchange,2) END ELSE DTL.decCreditsF END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypeRec) + ' AND tblCustPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decCredits = 0 OR tblCustPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decCredits / tblCustPay.decExchange,2) END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypePay) + ' AND tblVendPay.strCurrency <> ''' + @strCurrencyHome + 
		''' THEN CASE WHEN DTL.decCredits = 0 OR tblVendPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decCredits / tblVendPay.decExchange,2) END ELSE DTL.decCreditsF END END END, CASE WHEN ''' + @strCurrencyHome + ''' <> DTL.strCurrency AND DTL.decAmountF = 0 THEN CASE WHEN DTL.decAmount <> 0 THEN CASE WHEN DTL.decAmount = 0 OR DTL.decExchange = 0 THEN 0 ELSE ROUND(DTL.decAmount / DTL.decExchange,2) END ELSE DTL.decAmountF END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypeRec) + ' AND tblCustPay.strCurrency <> ''' + @strCurrencyHome + ''' THEN CASE WHEN DTL.decAmount = 0 OR tblCustPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decAmount / tblCustPay.decExchange,2) END ELSE CASE WHEN HDR.intEntryType = ' + CONVERT(NVARCHAR(50), @SQEntryTypePay) + ' AND tblVendPay.strCurrency <> ''' + @strCurrencyHome + 
		''' THEN CASE WHEN DTL.decAmount = 0 OR tblVendPay.decExchange = 0 THEN 0 ELSE ROUND(DTL.decAmount / tblVendPay.decExchange,2) END ELSE DTL.decAmountF END END END, ACC.intAccType, ACC.intAcc, ACC.strDesc, DTL.intLineNum '
	SET @SQLQuery3_2 = 
		'FROM tblJournalHist HDR INNER JOIN tblJournalEntHist DTL ON HDR.lngJourID = DTL.lngJourID AND HDR.uidYearID = DTL.uidYearID INNER JOIN #Temp ACC ON ACC.intAcc = DTL.intGLNumber LEFT OUTER JOIN tblBankRecTrans BRT ON BRT.lngJourID = DTL.lngJourID AND BRT.intLineNum = DTL.intLineNum AND BRT.dteJourDate = HDR.dteJournalDate LEFT JOIN (SELECT lngJourID,dteJournalDate,j.strSource,strCurrency,decExchange From tblCustPay CP INNER JOIN #TEMP2 J on CP.strSource=j.strSource) AS tblCustPay ON HDR.strSource = tblCustPay.strSource AND HDR.lngJourID = tblCustPay.lngJourID AND HDR.dteJournalDate = tblCustPay.dteJournalDate 
 LEFT JOIN (SELECT lngJourID,dteJournalDate,j.strSource,strCurrency,decExchange From tblVendPay VP INNER JOIN #TEMP2 J on VP.strSource = j.strSource UNION SELECT lngJourID,dteJournalDate,j.strSource,strCurrency,decExchange FROM tblVendPay VP INNER JOIN #TEMP2 J ON VP.strReference = j.strSource) AS tblVendPay ON HDR.strSource = tblVendPay.strSource AND HDR.lngJourID = tblVendPay.lngJourID AND HDR.dteJournalDate = tblVendPay.dteJournalDate AND DTL.strCurrency = tblVendPay.strCurrency '
	SET @SQLQuery3_2 = @SQLQuery3_2 + ' WHERE (HDR.dteJournalDate >= ''' + CONVERT(NVARCHAR(50), @SQStart) + ''') AND (HDR.dteJournalDate <= ''' + CONVERT(NVARCHAR(50), @SQEnd) + ''') AND (HDR.uidYearID = ''' + CONVERT(NVARCHAR(50), @SQuidYearID) + ''')'

	IF @chkShowUnallocOnly_IsChecked = 1
	BEGIN
		SET @SQLQuery1_2 = @SQLQuery1_2 + ' AND DTL.decUnAllocatedAmt <> 0'
		SET @SQLQuery2_2 = @SQLQuery2_2 + ' AND DTL.decUnAllocatedAmt <> 0'
		SET @SQLQuery3_2 = @SQLQuery3_2 + ' AND DTL.decUnAllocatedAmt <> 0'
	END

	IF @optJournalRange_IsChecked = 1
	BEGIN
		SET @SQLQuery1_2 = @SQLQuery1_2 + ' AND HDR.lngJourID BETWEEN ''' + CONVERT(NVARCHAR(50), @SQJourStart) + ''' AND ''' + CONVERT(NVARCHAR(50), @SQJourEnd) + ''''
		SET @SQLQuery2_2 = @SQLQuery2_2 + ' AND HDR.lngJourID BETWEEN ''' + CONVERT(NVARCHAR(50), @SQJourStart) + ''' AND ''' + CONVERT(NVARCHAR(50), @SQJourEnd) + ''''
		SET @SQLQuery3_2 = @SQLQuery3_2 + ' AND HDR.lngJourID BETWEEN ''' + CONVERT(NVARCHAR(50), @SQJourStart) + ''' AND ''' + CONVERT(NVARCHAR(50), @SQJourEnd) + ''''
	END

	IF @optSortDate_IsChecked = 1
	BEGIN
		SET @SQLQuery1_2 = @SQLQuery1_2 + ' ORDER BY HDR.dteJournalDate, HDR.lngJourID'
		SET @SQLQuery2_2 = @SQLQuery2_2 + ' ORDER BY HDR.dteJournalDate, HDR.lngJourID'
		SET @SQLQuery3_2 = @SQLQuery3_2 + ' ORDER BY HDR.dteJournalDate, HDR.lngJourID'
	END
	ELSE
	BEGIN
		SET @SQLQuery1_2 = @SQLQuery1_2 + ' ORDER BY HDR.lngJourID, HDR.dteJournalDate'
		SET @SQLQuery2_2 = @SQLQuery2_2 + ' ORDER BY HDR.lngJourID, HDR.dteJournalDate'
		SET @SQLQuery3_2 = @SQLQuery3_2 + ' ORDER BY HDR.lngJourID, HDR.dteJournalDate'
	END

	SET @SQLQuery1_3 = @SQLQuery1_1 + @SQLQuery1_2
	SET @SQLQuery2_3 = @SQLQuery2_1 + @SQLQuery2_2
	SET @SQLQuery3_3 = @SQLQuery3_1 + @SQLQuery3_2

	IF @optCurrentYear_IsChecked = 1
	BEGIN
		INSERT INTO #Temp3
		EXECUTE sp_executesql @SQLQuery1_3
			,@ParameterDefinition
			,@SQModule
			,@SQJourStart
			,@SQJourEnd
			,@SQEnd
			,@SQStart
	END

	IF @optPreviousYear_IsChecked = 1
	BEGIN
		INSERT INTO #Temp3
		EXECUTE sp_executesql @SQLQuery2_3
			,@ParameterDefinition
			,@SQModule
			,@SQJourStart
			,@SQJourEnd
			,@SQEnd
			,@SQStart
	END

	IF @optHistoryYear_IsChecked = 1
	BEGIN
		INSERT INTO #Temp3
		EXECUTE sp_executesql @SQLQuery3_3
			,@ParameterDefinition
			,@SQModule
			,@SQJourStart
			,@SQJourEnd
			,@SQEnd
			,@SQStart
			,@SQuidYearID
	END

	INSERT INTO #tmpGENERAL (
		Group1
		,AcctType
		,Account
		,Description
		,DATE
		,Comment
		,Source
		,Journal
		,Debits
		,Credits
		,Amount
		,Currency
		,Exchange
		,DebitsF
		,CreditsF
		,AmountF
		) (
		SELECT @intGroupNumber
		,AccType
		,Account
		,[Description]
		,dteJournalDate
		,NEWCOLUMN1
		,CASE 
			WHEN LEN(NEWCOLUMN2) > 0
				THEN NEWCOLUMN2
			ELSE CASE 
					WHEN strSource = 'Stock Count'
						THEN (
								CASE 
									WHEN @optCurrentYear_IsChecked = 1
										THEN ISNULL((
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournal.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournal ON tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
														AND tblInvAdjDoc.lngJourID = tblJournal.lngJourID
													WHERE (#Temp3.lngJourID = tblJournal.lngJourID)
														AND (#Temp3.dteJournalDate = tblInvAdjDoc.dteJournalDate)
													), strSource)
									ELSE CASE 
											WHEN @optPreviousYear_IsChecked = 1
												THEN ISNULL((
															SELECT ISNULL(CONCAT (
																		'SC/'
																		,strAdjDocID
																		), tblJournalLY.strSource)
															FROM tblInvAdjDoc
															INNER JOIN tblJournalLY ON tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate
																AND tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID
															WHERE (#Temp3.lngJourID = tblJournalLY.lngJourID)
																AND (#Temp3.dteJournalDate = tblInvAdjDoc.dteJournalDate)
															), strSource)
											ELSE ISNULL((
														SELECT ISNULL(CONCAT (
																	'SC/'
																	,strAdjDocID
																	), tblJournalHist.strSource)
														FROM tblInvAdjDoc
														INNER JOIN tblJournalHist ON tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate
															AND tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID
														WHERE (#Temp3.lngJourID = tblJournalHist.lngJourID)
															AND (tblJournalHist.uidYearID = @SQuidYearID)
															AND (#Temp3.dteJournalDate = tblInvAdjDoc.dteJournalDate)
														), strSource)
											END
									END
								)
					ELSE strSource
					END
			END
		,lngJourID
		,CASE 
			WHEN @chkShowUnallocOnly_IsChecked = 1
				THEN CASE 
						WHEN decDebits > 0
							THEN ABS(decUnAllocatedAmt)
						ELSE ABS(decDebits)
						END
			ELSE decDebits
			END
		,CASE 
			WHEN @chkShowUnallocOnly_IsChecked = 1
				THEN CASE 
						WHEN decCredits > 0
							THEN ABS(decUnAllocatedAmt)
						ELSE ABS(decCredits)
						END
			ELSE decCredits
			END
		,CASE 
			WHEN @chkShowUnallocOnly_IsChecked = 1
				THEN decUnAllocatedAmt
			ELSE decAmount
			END
		,strCurrency
		,decExchange
		,decDebitsF
		,decCreditsF
		,decAmountF FROM #Temp3
		)

	IF @optSortDate_IsChecked = 1
	BEGIN
		IF @SQOmitClosingBal = 1
		BEGIN
			SELECT *
			FROM #tmpGENERAL
			WHERE Account IN (
					SELECT DISTINCT TMP.Account
					FROM #tmpGENERAL TMP
					WHERE TMP.Amount <> 0
						OR TMP.AmountF <> 0
					)
			ORDER BY Account
				,DATE
				,ID
		END
		ELSE
		BEGIN
			SELECT *
			FROM #tmpGENERAL
			ORDER BY Account
				,DATE
				,ID
		END
	END
	ELSE
	BEGIN
		IF @SQOmitClosingBal = 1
		BEGIN
			SELECT *
			FROM #tmpGENERAL
			WHERE Account IN (
					SELECT DISTINCT TMP.Account
					FROM #tmpGENERAL TMP
					WHERE TMP.Amount <> 0
						OR TMP.AmountF <> 0
					)
			ORDER BY Account
				,ID
		END
		ELSE
		BEGIN
			SELECT *
			FROM #tmpGENERAL
			ORDER BY Account
				,ID
		END
	END

	DROP TABLE #Temp

	DROP TABLE #Temp2

	DROP TABLE #Temp3

	DROP TABLE #tmpGENERAL
END
GO

CREATE PROCEDURE GetStockCountPDTBinData @PartNumber NVARCHAR(200)
	,@Location NVARCHAR(200)
	,@Barcode NVARCHAR(200)
	,@BinCode NVARCHAR(200)
AS
BEGIN
	IF (@PartNumber = NULL)
	BEGIN
		SELECT INV.strPartNumber AS PartNumber
			,INV.intType AS [Type]
			,IE.bitInactive AS IsInactive
			,ISNULL((
					SELECT TOP 1 strBinCode
					FROM tblInvLocBin LBIN
					INNER JOIN tblInvExtBin EBIN ON LBIN.strLocName = EBIN.strLocName
					WHERE LBIN.strLocName = @Location
						AND bitDefault = 1
						AND EBIN.strPartNumber = INV.strPartNumber
					), '') AS BinCode
		FROM tblInv INV
		INNER JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber
		WHERE (INV.strBarCode = @Barcode)
			AND (IE.strLocName = @Location)
	END
	ELSE
	BEGIN
		SELECT INV.strPartNumber AS PartNumber
			,INV.intType AS [Type]
			,IE.bitInactive AS IsInactive
			,ISNULL((
					SELECT TOP 1 strBinCode
					FROM tblInvLocBin LBIN
					INNER JOIN tblInvExtBin EBIN ON LBIN.strLocName = EBIN.strLocName
					WHERE LBIN.strBinCode = @BinCode
						AND LBIN.strLocName = @Location
						AND bitDefault = 1
						AND EBIN.strPartNumber = INV.strPartNumber
					), '') AS BinCode
		FROM tblInv INV
		INNER JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber
		WHERE (INV.strBarCode = @Barcode)
			AND (IE.strLocName = @Location)
	END
END
GO

CREATE PROCEDURE [dbo].[UsersSearch]   
(    
 @SearchText nvarchar(200) = NULL
)      
AS      
BEGIN
    SET NOCOUNT ON      
      
    SELECT       
        [strUserName] as UserName,      
        [strName] as Name    
    FROM [tblUsers]      
 WHERE (strUserName LIKE '%' + @SearchText + '%' OR strName LIKE '%' + @SearchText + '%') OR (@SearchText IS NULL)  
 END
GO

CREATE PROCEDURE [dbo].[ContractsDelete]  @ContractId bigint  
 AS  
 BEGIN  
  SET NOCOUNT ON  
  DELETE FROM [tblContracts] WHERE [lngId] = @ContractId  
END
GO

CREATE PROCEDURE [dbo].[GetContractsData]          
@SearchText nvarchar(50) = NULL,          
@Inactive bit        
AS          
BEGIN          
 SET NOCOUNT ON;          
 SELECT           
  lngId as ID,   
  lngContractType as ContractType,   
  strDescription as Description,   
  strContractNumber as ContractNumber,   
  strContactPerson as ContactPerson,   
  intGLNumber as GLNumber,   
  strUserName as UserName,   
  bitInactive as InActive,   
  ISNULL((SELECT strContractType FROM tblOptContractType WHERE lngId = tblContracts.lngContractType),'') AS ContractTypes       
 FROM           
  tblContracts WHERE ((strContractNumber Like '%' + @SearchText + '%' Or @SearchText IS NULL) OR           
      (strContactPerson Like '%' + @SearchText + '%' Or @SearchText IS NULL) OR          
      (strDescription Like '%' + @SearchText + '%' Or @SearchText IS NULL) OR          
      (intGLNumber Like '%' + @SearchText + '%' Or @SearchText IS NULL))          
      AND (bitInactive IN (0,@Inactive) OR @Inactive IS NULL)          
END
GO

CREATE PROCEDURE [dbo].[GetContractSelectByID]  @ContractId bigint  
 AS  
 BEGIN  
  SET NOCOUNT ON  
  
  SELECT 
    lngId as ID,     
	lngContractType as ContractType,     
	strDescription as Description,     
	strContractNumber as ContractNumber,     
	strContactPerson as ContactPerson,     
	intGLNumber as GLNumber,     
	strUserName as UserName,     
	bitInactive as InActive,     
	ISNULL((SELECT strContractType FROM tblOptContractType WHERE lngId = tblContracts.lngContractType),'') AS ContractTypes         
  FROM tblContracts WHERE lngId = @ContractId  
 END
GO

CREATE PROCEDURE [dbo].[GetContractSelectDTByID]  @ContractId bigint  
 AS  
 BEGIN  
 SELECT 
 lngId as ID,
 lngContractId,
 dteFromDate as FromDate,
 dteToDate as ToDate,
 decAmount as Amount,
 strUserName as UserName
 FROM tblContractsDT WHERE lngContractId = @ContractId  
END
GO

CREATE PROCEDURE [dbo].[DeleteInvUOMs] @lngID bigint
AS
BEGIN
	DELETE FROM tblInvUOMs WHERE lngUOMId = @lngID
END
GO

CREATE PROCEDURE [dbo].[InsertInvUOMsData](
@Part NVARCHAR(200),
	@strFromUnit NVARCHAR(200),
	@strConversionType NVARCHAR(200),
	@decConversionFactor money,
	@strToUnit NVARCHAR(200),
	@strUseFor NVARCHAR(200),
	@strBarCode NVARCHAR(200),
	@strBarCode2 NVARCHAR(200),
	@bitInactive bit,
	@bitDefaultUOM bit,
	@decPricePercentage money
)
AS
BEGIN
	INSERT INTO tblInvUOMs 
	VALUES (
	@Part,
	@strFromUnit,
	@strConversionType,
	@decConversionFactor,
	@strToUnit,
	@strUseFor,
	@strBarCode,
	@strBarCode2,
	@bitInactive,
	@bitDefaultUOM,
	@decPricePercentage)
END
GO

CREATE PROCEDURE [dbo].[GetInvUOMsBarcodeData] @SQBarCode NVARCHAR(200)
AS
BEGIN
	SELECT tblInv.strPartNumber as PartNumber, 
	CASE WHEN tblInv.strBarCode = @SQBarCode OR tblInv.strBarCode2 = @SQBarCode THEN tblInv.strStockUnit ELSE ISNULL(tblInvUOMs.strFromUnit,'') END AS Unit 
	FROM tblInv 
	LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber 
	WHERE (tblInv.strBarCode = @SQBarCode OR tblInv.strBarCode2 = @SQBarCode OR tblInvUOMs.strBarCode = @SQBarCode OR tblInvUOMs.strBarCode2 = @SQBarCode)
END
GO

CREATE PROCEDURE [dbo].[UpdateInvEditUOMsData](
@Part NVARCHAR(200),
	@strFromUnit NVARCHAR(200),
	@strConversionType NVARCHAR(200),
	@decConversionFactor money,
	@strToUnit NVARCHAR(200),
	@strUseFor NVARCHAR(200),
	@strBarCode NVARCHAR(200),
	@strBarCode2 NVARCHAR(200),
	@bitInactive bit,
	@bitDefaultUOM bit,
	@decPricePercentage money,
	@lngUOMId bigint
)
AS
BEGIN
	UPDATE tblInvUOMs SET 
		strFromUnit = @strFromUnit,
		strConversionType = @strConversionType,
		decConversionFactor = @decConversionFactor,
		strToUnit = @strToUnit, 
		strUseFor = @strUseFor,
		strBarCode = @strBarCode, 
		strBarCode2 = @strBarCode2, 
		bitInactive = @bitInactive, 
		bitDefaultUOM = @bitDefaultUOM, 
		decPricePercentage=@decPricePercentage 
		WHERE lngUOMId = @lngUOMId
END
GO

Create Procedure [dbo].[UpdateInvPricelistsData]
	   (
	   @Pricelist as nvarchar(20),
	   @Desc as nvarchar(20),
	   @Inactive as bit,
	   @PriceIncl as bit,
	   @TaxCode as nvarchar(20)= Null,
	   @OldPricelist as nvarchar(20),
	   @IsOldPriceList as bit)
	  as
	  begin
			UPDATE tblPriceData SET strPricelist = @Pricelist, strDesc = @Desc, 
			bitInactive = @Inactive, bitPriceIncl = @PriceIncl, strTaxCode = @TaxCode 
			WHERE strPricelist = @OldPricelist
			if(@IsOldPriceList = 1)
			begin
			UPDATE tblPriceListsByDate SET strPricelist = @Pricelist WHERE strPricelist = @OldPricelist
			UPDATE tblPricelists SET strPricelist = @Pricelist WHERE strPricelist = @OldPricelist
			UPDATE tblPricelistsCat SET strPricelist = @Pricelist WHERE strPricelist = @OldPricelist
			end
			
end
GO

CREATE PROCEDURE [dbo].[GetEmployeesForPicker] @searchText NVARCHAR(100) = NULL
AS
BEGIN
	IF @searchText IS NULL
	BEGIN
		SELECT strEmpNumber AS 'EmployeeNumber'
			,strEmpName AS 'EmployeeName'
			,strSurname AS 'Surname'
			,strTagNo AS 'TagNo'
			,strTelNo AS 'TelNo'
			,strEmail AS 'Email'
		FROM tblEmployees
	END
	ELSE
	BEGIN
		SELECT strEmpNumber AS 'EmployeeNumber'
			,strEmpName AS 'EmployeeName'
			,strSurname AS 'Surname'
			,strTagNo AS 'TagNo'
			,strTelNo AS 'TelNo'
			,strEmail AS 'Email'
		FROM tblEmployees
		WHERE (strEmpNumber LIKE '%' + @searchText + '%')
			OR (strEmpName LIKE '%' + @searchText + '%')
			OR (strEmail LIKE '%' + @searchText + '%')
			OR (strTagNo LIKE '%' + @searchText + '%')
			OR (strSurname LIKE '%' + @searchText + '%')
			OR (strTelNo LIKE '%' + @searchText + '%')
	END
END
GO

CREATE PROCEDURE [dbo].[UpdateLastIdForManufJob] @SQNum AS BIGINT
AS
BEGIN
	UPDATE tblLastIDs
	SET lngJBNumber = @SQNum
END
GO

CREATE PROCEDURE [dbo].[GetSalesPriceDataForAdjustment] @Part NVARCHAR(900)
	,@TransactionType NVARCHAR(900)
	,@Date DATE
	,@VendName AS NVARCHAR(100)
AS
BEGIN
		;

	WITH tbtempInvVend
	AS (
		SELECT tblInvVend.strPartNumber
			,tblInvVend.strVendName
			,tblInvVend.strUnit
			,tblInvVend.lngID
			,tblInvVend.decPrice
			,tblInvVend.bitPromotionalPricing
			,tblInvVendPromotionalPrice.dtePromotionalStartDate
			,tblInvVendPromotionalPrice.dtePromotionalEndDate
			,tblInvVendPromotionalPrice.decPromotionalPrice
		FROM tblInvVend
		INNER JOIN tblInvVendPriceListsByDate ON tblInvVend.uidPriceBasedID = tblInvVendPriceListsByDate.uidPriceBasedID
			AND CAST(@Date AS DATE) BETWEEN Cast(tblInvVendPriceListsByDate.dteStartDate AS DATE)
				AND CAST(tblInvVendPriceListsByDate.dteFinishDate AS DATE)
			AND tblInvVendPriceListsByDate.bitInactive = 0
			AND tblInvVend.strPartNumber = @Part
			AND tblInvVend.strVendName = @VendName
		LEFT JOIN tblInvVendPromotionalPrice ON tblInvVend.lngID = tblInvVendPromotionalPrice.lngId
			AND Cast(@Date AS DATE) BETWEEN Cast(tblInvVendPromotionalPrice.dtePromotionalStartDate AS DATE)
				AND Cast(tblInvVendPromotionalPrice.dtePromotionalEndDate AS DATE)
		)
	SELECT tblInvPrice.strPricelist AS Pricelist
		,CASE 
			WHEN tbtempInvVend.decPrice IS NULL
				THEN CASE 
						WHEN tblInv.bitUseLPPOnPO = 1
							THEN tblInv.decLastPPUnit
						ELSE 0
						END
			ELSE tbtempInvVend.decPrice
			END AS Selling
		,CONVERT(DATE, ISNULL(tblPriceListsByDate.dteStartDate, @Date)) AS StartDate
		,CONVERT(DATE, ISNULL(tblPriceListsByDate.dteFinishDate, @Date)) AS EndDate
		,tblInvPrice.strUnit AS Unit
		,ISNULL(tblInvUOMs.decConversionFactor, 1) AS ConversionFactor
		,ISNULL(tblInvUOMs.strConversionType, 'Multiply') AS ConversionType
		,ISNULL(CASE strConversionType
				WHEN 'Multiply'
					THEN decConversionFactor
				ELSE 1 / decConversionFactor
				END, tblInv.decSellFromStock) AS BuyToStock
		,CASE 
			WHEN tblInvPrice.bitStockUnit = 1
				THEN 1.0
			ELSE 0.0
			END AS SellFromStock
	FROM tblInv
	INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
	INNER JOIN tblPriceListsByDate ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
	LEFT JOIN tblInvUOMs ON tblInvPrice.strPartNumber = tblInvUOMs.strPartNumber
		AND tblInvPrice.strUnit = tblInvUOMs.strFromUnit
		AND tblInvUOMs.bitInactive = 0
	LEFT JOIN tbtempInvVend ON tbtempInvVend.strPartNumber = tblInv.strPartNumber
		AND tblInvPrice.strUnit = tbtempInvVend.strUnit
	WHERE (tblInvPrice.strPartNumber = @Part)
		AND (tblInvPrice.strPricelist = 'REGULAR')
		AND (
			@Date BETWEEN tblPriceListsByDate.dteStartDate
				AND tblPriceListsByDate.dteFinishDate
			)
	
	UNION ALL
	
	SELECT NULL AS Pricelist
		,CASE 
			WHEN tbtempInvVend.decPrice IS NULL
				THEN CASE 
						WHEN tblInv.bitUseLPPOnPO = 1
							THEN tblInv.decLastPPUnit
						ELSE 0
						END
			ELSE tbtempInvVend.decPrice
			END AS Selling
		,@Date AS StartDate
		,@Date AS EndDate
		,tblInvUOMs.strFromUnit AS Unit
		,ISNULL(tblInvUOMs.decConversionFactor, 1) AS ConversionFactor
		,ISNULL(tblInvUOMs.strConversionType, 'Multiply') AS ConversionType
		,ISNULL(CASE strConversionType
				WHEN 'Multiply'
					THEN decConversionFactor
				ELSE 1 / decConversionFactor
				END, tblInv.decSellFromStock) AS BuyToStock
		,0.0 AS SellFromStock
	FROM tblInv
	INNER JOIN tblInvUOMs(NOLOCK) ON tblInvUOMs.strPartNumber = tblInv.strPartNumber
		AND tblInvUOMS.bitInactive = 0
	LEFT JOIN tbtempInvVend ON tblInvUOMs.strPartNumber = tbtempInvVend.strPartNumber
		AND tblInvUOMs.strFromUnit = tbtempInvVend.strUnit
	WHERE (tblInv.strPartNumber = @Part)
		AND (tblInvUOMs.strUseFor = @TransactionType)
	ORDER BY Pricelist DESC
		,StartDate DESC
		,SellFromStock DESC
		,Unit
END
GO

CREATE PROCEDURE [dbo].[GetAccountItemAlloc] (
	@isCurrent BIT
	,@isPrevious BIT
	,@isHistory BIT
	,@ShowTrans INT
	,@SQStartDate DATETIME
	,@SQEndDate DATETIME
	,@SQintGLNumber VARCHAR(50)
	)
AS
BEGIN
	IF (@isCurrent = 1)
	BEGIN
		BEGIN
			IF (@ShowTrans = 0)
				SELECT tblJournal.strSource AS Source
					,tblJournalEnt.strComment AS Comment
					,tblJournal.dteJournalDate AS DATE
					,tblJournalEnt.decDebits AS Debit
					,tblJournalEnt.decCredits AS Credit
					,tblJournalEnt.decDebitsF AS AllocateToDebit
					,tblJournalEnt.decCreditsF AS AllocateToCredit
					,tblJournalEnt.lngJourID AS JourID
					,tblJournalEnt.intLineNum AS LineNum
					,tblJournalEnt.decAllocatedAmtToDate AS AllocateToDate
				FROM tblJournal
				INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
				WHERE dteJournalDate BETWEEN @SQStartDate
						AND @SQEndDate
					AND intGLNumber = @SQintGLNumber
				ORDER BY tblJournalEnt.lngJourID
					,tblJournalEnt.intLineNum
			ELSE IF (@ShowTrans = 1)
				SELECT tblJournal.strSource AS Source
					,tblJournalEnt.strComment AS Comment
					,tblJournal.dteJournalDate AS DATE
					,tblJournalEnt.decDebits AS Debit
					,tblJournalEnt.decCredits AS Credit
					,tblJournalEnt.decDebitsF AS AllocateToDebit
					,tblJournalEnt.decCreditsF AS AllocateToCredit
					,tblJournalEnt.lngJourID AS JourID
					,tblJournalEnt.intLineNum AS LineNum
					,tblJournalEnt.decAllocatedAmtToDate AS AllocateToDate
				FROM tblJournal
				INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
				WHERE dteJournalDate BETWEEN @SQStartDate
						AND @SQEndDate
					AND intGLNumber = @SQintGLNumber
					AND tblJournalEnt.decUnAllocatedAmt = 0
				ORDER BY tblJournalEnt.lngJourID
					,tblJournalEnt.intLineNum
			ELSE
				SELECT tblJournal.strSource AS Source
					,tblJournalEnt.strComment AS Comment
					,tblJournal.dteJournalDate AS DATE
					,tblJournalEnt.decDebits AS Debit
					,tblJournalEnt.decCredits AS Credit
					,tblJournalEnt.decDebitsF AS AllocateToDebit
					,tblJournalEnt.decCreditsF AS AllocateToCredit
					,tblJournalEnt.lngJourID AS JourID
					,tblJournalEnt.intLineNum AS LineNum
					,tblJournalEnt.decAllocatedAmtToDate AS AllocateToDate
				FROM tblJournal
				INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
				WHERE dteJournalDate BETWEEN @SQStartDate
						AND @SQEndDate
					AND intGLNumber = @SQintGLNumber
					AND tblJournalEnt.decUnAllocatedAmt <> 0
				ORDER BY tblJournalEnt.lngJourID
					,tblJournalEnt.intLineNum
		END
	END

	IF (@isPrevious = 1)
	BEGIN
		BEGIN
			IF (@ShowTrans = 0)
				SELECT tblJournalLY.strSource AS Source
					,tblJournalEntLY.strComment
					,tblJournalLY.dteJournalDate
					,tblJournalEntLY.decDebits
					,tblJournalEntLY.decCredits
					,tblJournalEntLY.decDebitsF
					,tblJournalEntLY.decCreditsF
					,tblJournalEntLY.lngJourID
					,tblJournalEntLY.intLineNum
					,tblJournalEntLY.decAllocatedAmtToDate
				FROM tblJournalLY
				INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID
				WHERE dteJournalDate BETWEEN @SQStartDate
						AND @SQEndDate
					AND intGLNumber = @SQintGLNumber
				ORDER BY tblJournalEntLY.lngJourID
					,tblJournalEntLY.intLineNum
			ELSE IF (@ShowTrans = 1)
				SELECT tblJournalLY.strSource
					,tblJournalEntLY.strComment
					,tblJournalLY.dteJournalDate
					,tblJournalEntLY.decDebits
					,tblJournalEntLY.decCredits
					,tblJournalEntLY.decDebitsF
					,tblJournalEntLY.decCreditsF
					,tblJournalEntLY.lngJourID
					,tblJournalEntLY.intLineNum
					,tblJournalEntLY.decAllocatedAmtToDate
				FROM tblJournalLY
				INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID
				WHERE dteJournalDate BETWEEN @SQStartDate
						AND @SQEndDate
					AND intGLNumber = @SQintGLNumber
					AND tblJournalEntLY.decUnAllocatedAmt = 0
				ORDER BY tblJournalEntLY.lngJourID
					,tblJournalEntLY.intLineNum
			ELSE
				SELECT tblJournalLY.strSource
					,tblJournalEntLY.strComment
					,tblJournalLY.dteJournalDate
					,tblJournalEntLY.decDebits
					,tblJournalEntLY.decCredits
					,tblJournalEntLY.decDebitsF
					,tblJournalEntLY.decCreditsF
					,tblJournalEntLY.lngJourID
					,tblJournalEntLY.intLineNum
					,tblJournalEntLY.decAllocatedAmtToDate
				FROM tblJournalLY
				INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID
				WHERE dteJournalDate BETWEEN @SQStartDate
						AND @SQEndDate
					AND intGLNumber = @SQintGLNumber
					AND tblJournalEntLY.decUnAllocatedAmt <> 0
				ORDER BY tblJournalEntLY.lngJourID
					,tblJournalEntLY.intLineNum
		END
	END

	IF (@isHistory = 1)
	BEGIN
		BEGIN
			IF (@ShowTrans = 0)
				SELECT tblJournalHist.strSource
					,tblJournalEntHist.strComment
					,tblJournalHist.dteJournalDate
					,tblJournalEntHist.decDebits
					,tblJournalEntHist.decCredits
					,tblJournalEntHist.decDebitsF
					,tblJournalEntHist.decCreditsF
					,tblJournalEntHist.lngJourID
					,tblJournalEntHist.intLineNum
					,tblJournalEntHist.decAllocatedAmtToDate
				FROM tblJournalHist
				INNER JOIN tblJournalEntHist ON tblJournalHist.lngJourID = tblJournalEntHist.lngJourID
				WHERE dteJournalDate BETWEEN @SQStartDate
						AND @SQEndDate
					AND intGLNumber = @SQintGLNumber
				ORDER BY tblJournalEntHist.lngJourID
					,tblJournalEntHist.intLineNum
			ELSE IF (@ShowTrans = 1)
				SELECT tblJournalHist.strSource
					,tblJournalEntHist.strComment
					,tblJournalHist.dteJournalDate
					,tblJournalEntHist.decDebits
					,tblJournalEntHist.decCredits
					,tblJournalEntHist.decDebitsF
					,tblJournalEntHist.decCreditsF
					,tblJournalEntHist.lngJourID
					,tblJournalEntHist.intLineNum
					,tblJournalEntHist.decAllocatedAmtToDate
				FROM tblJournalHist
				INNER JOIN tblJournalEntHist ON tblJournalHist.lngJourID = tblJournalEntHist.lngJourID
				WHERE dteJournalDate BETWEEN @SQStartDate
						AND @SQEndDate
					AND intGLNumber = @SQintGLNumber
					AND tblJournalEntHist.decUnAllocatedAmt = 0
				ORDER BY tblJournalEntHist.lngJourID
					,tblJournalEntHist.intLineNum
			ELSE
				SELECT tblJournalHist.strSource
					,tblJournalEntHist.strComment
					,tblJournalHist.dteJournalDate
					,tblJournalEntHist.decDebits
					,tblJournalEntHist.decCredits
					,tblJournalEntHist.decDebitsF
					,tblJournalEntHist.decCreditsF
					,tblJournalEntHist.lngJourID
					,tblJournalEntHist.intLineNum
					,tblJournalEntHist.decAllocatedAmtToDate
				FROM tblJournalHist
				INNER JOIN tblJournalEntHist ON tblJournalHist.lngJourID = tblJournalEntHist.lngJourID
				WHERE dteJournalDate BETWEEN @SQStartDate
						AND @SQEndDate
					AND intGLNumber = @SQintGLNumber
					AND tblJournalEntHist.decUnAllocatedAmt <> 0
				ORDER BY tblJournalEntHist.lngJourID
					,tblJournalEntHist.intLineNum
		END
	END
END
GO

CREATE PROCEDURE [dbo].[SPGetVendorsPickerlist]
(
   @IsActive BIT = NULL
  ,@IsInvoice BIT = NULL
  ,@HomeCurrencyCode VARCHAR(20) = NULL
  ,@SQCurrency VARCHAR(20) = NULL
  ,@Option INT = 1
  ,@SQUserName VARCHAR(50) = NULL
  ,@SQSearchText NVARCHAR(MAX) = NULL
  ,@PageSize int = 12
  ,@PageNum int = 1
)
AS
BEGIN

  --- Use Pagination
 DECLARE @Offset INT
 SET @Offset = @PageSize * (@PageNum-1)

	IF(ISNULL(@SQSearchText,'') = '')
	BEGIN
		;with vendorList AS (
		SELECT ROW_NUMBER() Over (Order by strVendName ASC) AS RowNum
			,strVendName as VendorName 
			,strVendDesc as VendorDescription
			 ,strCity as City 
			 ,strPhone as Phone 
			 ,bitInventoryVendor as InventoryVendor  
			 ,strField1 as Field1 
			 ,strField2 as Field2 
			 ,strField3 as Field3 
			 ,strField4 as Field4 
			 ,strField5 as Field5 
			 ,strField6 as Field6 
			 ,tblVendors.strCurrency as Currency 
			 ,tblCurrency.strCurrSymbol as CurrencySymbol 
			,(
				tblCurrency.strCurrSymbol + ' ' + CAST(CASE 
						WHEN tblCurrency.strCurrency = @HomeCurrencyCode
							THEN decbaldue
						ELSE decbalduef
						END AS VARCHAR(22))
				) AS BalanceDue 
   ,decBalDueF as BalanceDueF 
   ,bitInactive as Inactive 
		FROM tblVendors (NOLOCK)
		INNER JOIN tblCurrency (NOLOCK) ON tblVendors.strCurrency = tblCurrency.strCurrency
		WHERE (
				@IsActive IS NULL
				OR @IsActive = 1
				OR (
					@IsActive = 0
					AND bitInactive = 0
					)
				)
			AND (
				@IsInvoice IS NULL
				OR @IsInvoice = 0
				OR (
					@IsInvoice = 1
					AND bitInvWorkflowNew = 1
					)
				)
			AND (
				@Option IS NULL
				OR @Option = 1
				OR (
					@Option = 2
					AND decOpenOrders <> 0
					)
				OR (
					@Option = 3
					AND decBalDue <> 0
					)
				)
			AND (
				@SQCurrency IS NULL
				OR (tblVendors.strCurrency = @SQCurrency)
				)
			AND (
				@SQUserName IS NULL
				OR (
					strVendCategory IN (
						SELECT tblVendorCat.strVendCategory
						FROM tblVendorCat (NOLOCK)
						LEFT JOIN tblVendorCatSec (NOLOCK) ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
						WHERE ISNULL((
									SELECT COUNT(tblVendorCatSec.strVendCategory)
									FROM tblVendorCatSec (NOLOCK)
									WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblVendorCatSec.strVendCategory)
										FROM tblVendorCatSec (NOLOCK)
										WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
										), 0) > 0
								AND tblVendorCatSec.strUserName = @SQUserName
								)
						)
					)
				)			
		)
		Select 
			 VendorName
			,VendorDescription
			,City
			,Phone
			,InventoryVendor
			,Field1
			,Field2
			,Field3
			,Field4
			,Field5
			,Field6
			,Currency
			,CurrencySymbol
			,BalanceDue
			,BalanceDueF
			,Inactive
			,(Select Count(A.VendorName) from vendorList A) AS Total
		 from vendorList  
		WHERE  RowNum >= (@Offset + 1)
					AND RowNum <= (@Offset + @PageSize)	
		ORDER  BY RowNum

	END
	ELSE
	BEGIN
		;with vendorList AS (
		SELECT ROW_NUMBER() Over (Order by strVendName ASC) AS RowNum, strVendName
			,strVendDesc
			,strCity
			,strPhone
			,bitInventoryVendor
			,strField1
			,strField2
			,strField3
			,strField4
			,strField5
			,strField6
			,tblVendors.strCurrency
			,tblCurrency.strCurrSymbol
			,(
				tblCurrency.strCurrSymbol + ' ' + CAST(CASE 
						WHEN tblCurrency.strCurrency = @HomeCurrencyCode
							THEN decbaldue
						ELSE decbalduef
						END AS VARCHAR(22))
				) AS decBalDue
			,decBalDueF
			,bitInactive
		FROM tblVendors (NOLOCK)
		INNER JOIN tblCurrency (NOLOCK) ON tblVendors.strCurrency = tblCurrency.strCurrency
		WHERE (
				@IsActive IS NULL
				OR @IsActive = 1
				OR (
					@IsActive = 0
					AND bitInactive = 0
					)
				)
			AND (
				@IsInvoice IS NULL
				OR @IsInvoice = 0
				OR (
					@IsInvoice = 1
					AND bitInvWorkflowNew = 1
					)
				)
			AND (
				@Option IS NULL
				OR @Option = 1
				OR (
					@Option = 2
					AND decOpenOrders <> 0
					)
				OR (
					@Option = 3
					AND decBalDue <> 0
					)
				)
			AND (
				@SQCurrency IS NULL
				OR (tblVendors.strCurrency = @SQCurrency)
				)
			AND (
				@SQUserName IS NULL
				OR (
					strVendCategory IN (
						SELECT tblVendorCat.strVendCategory
						FROM tblVendorCat (NOLOCK)
						LEFT JOIN tblVendorCatSec (NOLOCK) ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
						WHERE ISNULL((
									SELECT COUNT(tblVendorCatSec.strVendCategory)
									FROM tblVendorCatSec (NOLOCK)
									WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblVendorCatSec.strVendCategory)
										FROM tblVendorCatSec (NOLOCK)
										WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
										), 0) > 0
								AND tblVendorCatSec.strUserName = @SQUserName
								)
						)
					)
				)
			AND ( strVendName Like  '%'+@SQSearchText+'%'
					OR strVendDesc Like  '%'+@SQSearchText+'%'
					OR strCity Like  '%'+@SQSearchText+'%'
					OR strPhone Like  '%'+@SQSearchText+'%'
					OR tblVendors.strCurrency Like  '%'+@SQSearchText+'%' )			
		)
		Select 
			strVendName as VendorName 
			,strVendDesc as VendorDescription
			 ,strCity as City 
			 ,strPhone as Phone 
			 ,bitInventoryVendor as InventoryVendor  
			 ,strField1 as Field1 
			 ,strField2 as Field2 
			 ,strField3 as Field3 
			 ,strField4 as Field4 
			 ,strField5 as Field5 
			 ,strField6 as Field6 
			 ,strCurrency as Currency 
			 ,strCurrSymbol as CurrencySymbol 
			,decBalDue AS BalanceDue
			,decBalDueF AS BalanceDueF
			,bitInactive AS Inactive			
			,(Select Count(A.strVendName) from vendorList A) AS Total
		 from vendorList  
		WHERE  RowNum >= (@Offset + 1)
					AND RowNum <= (@Offset + @PageSize)	
		ORDER  BY RowNum
	END
END
GO

CREATE PROCEDURE [dbo].[SPGetVendorsPickerForeignCurrencyRevaluationlist]
(
	 @IsActive BIT = NULL
	,@IsInvoice BIT = NULL
	,@HomeCurrencyCode VARCHAR(20) = NULL
	,@SQCurrency VARCHAR(20) = NULL
	,@Option INT = 1
	,@SQUserName VARCHAR(50) = NULL
	,@IsForeignCurrencyRevaluation BIT = NULL
	,@dteRevaluationDate DATETIME = NULL
	,@lstGridAccount NVARCHAR(MAX) = NULL
	,@SQSearchText NVARCHAR(MAX) = NULL
    ,@PageSize int = 12
    ,@PageNum int = 1
)
AS
BEGIN
	
  --- Use Pagination
 DECLARE @Offset INT
 SET @Offset = @PageSize * (@PageNum-1)

		CREATE TABLE #Temp (
		strVendName NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS
		,strVendDesc NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,strCity NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS
		,strPhone NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS
		,bitInventoryVendor BIT
		,strField1 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,strField2 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,strField3 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,strField4 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,strField5 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,strField6 NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS
		,strCurrency NVARCHAR(6) COLLATE SQL_Latin1_General_CP1_CI_AS
		,strCurrSymbol NVARCHAR(10) COLLATE SQL_Latin1_General_CP1_CI_AS
		,decBalDue VARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS
		,decBalDueF VARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS
		,bitInactive BIT
		,decBalDueValid VARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS
		)

		CREATE TABLE #Temp2 (
		strAccountNumber NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS
		,LocalAmount NVARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS
		,ForeignAmount NVARCHAR(22) COLLATE SQL_Latin1_General_CP1_CI_AS
		,
		)

		INSERT INTO #Temp
		SELECT strVendName
			,strVendDesc
			,strCity
			,strPhone
			,bitInventoryVendor
			,strField1
			,strField2
			,strField3
			,strField4
			,strField5
			,strField6
			,tblVendors.strCurrency
			,tblCurrency.strCurrSymbol
			,(tblCurrency.strCurrSymbol + ' 0.00') AS decBalDue
			,decBalDueF = 0.00
			,bitInactive
			,decBalDueValid = 0.00
		FROM tblVendors (NOLOCK)
		INNER JOIN tblCurrency (NOLOCK) ON tblVendors.strCurrency = tblCurrency.strCurrency
		WHERE (
				@IsActive IS NULL
				OR @IsActive = 1
				OR (
					@IsActive = 0
					AND bitInactive = 0
					)
				)
			AND (
				@IsInvoice IS NULL
				OR @IsInvoice = 0
				OR (
					@IsInvoice = 1
					AND bitInvWorkflowNew = 1
					)
				)
			AND (
				@Option IS NULL
				OR @Option = 1
				OR (
					@Option = 2
					AND decOpenOrders <> 0
					)
				OR (
					@Option = 3
					AND decBalDue <> 0
					)
				)
			AND (
				@SQCurrency IS NULL
				OR (tblVendors.strCurrency = @SQCurrency)
				)
			AND (
				@SQUserName IS NULL
				OR (
					strVendCategory IN (
						SELECT tblVendorCat.strVendCategory
						FROM tblVendorCat (NOLOCK)
						LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
						WHERE ISNULL((
									SELECT COUNT(tblVendorCatSec.strVendCategory)
									FROM tblVendorCatSec (NOLOCK)
									WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblVendorCatSec.strVendCategory)
										FROM tblVendorCatSec (NOLOCK)
										WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
										), 0) > 0
								AND tblVendorCatSec.strUserName = @SQUserName
								)
						)
					)
				)
		ORDER BY strVendName

		INSERT INTO #Temp2 (
			strAccountNumber
			,LocalAmount
			,ForeignAmount
			) (
			SELECT LTRIM(RTRIM(MASTERTABLE.strVendName)) AS strAccountNumber
			,SUM(tblVendTransDT.decAmount) AS LocalAmount
			,SUM(tblVendTransDT.decAmountF) AS ForeignAmount FROM tblVendTrans (NOLOCK) AS MASTERTABLE INNER JOIN tblVendors (NOLOCK) ON LTRIM(RTRIM(MASTERTABLE.strVendName)) = LTRIM(RTRIM(tblVendors.strVendName)) INNER JOIN tblVendTransDT (NOLOCK) ON MASTERTABLE.lngVendTrID = tblVendTransDT.lngVendTrID WHERE (tblVendTransDT.bitReversed = 0)
			AND (tblVendTransDT.dteJournalDate <= @dteRevaluationDate)
			AND (
				tblVendTransDT.lngVendTrID NOT IN (
					SELECT tblVendTransDT.lngVendTrID
					FROM tblVendTrans (NOLOCK)
					INNER JOIN tblVendTransDT (NOLOCK) ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
					WHERE LTRIM(RTRIM(tblVendTrans.strVendName)) = LTRIM(RTRIM(MASTERTABLE.strVendName))
						AND tblVendTransDT.bitReversed = 0
						AND tblVendTransDT.dteJournalDate <= @dteRevaluationDate
					GROUP BY tblVendTransDT.lngVendTrID
					HAVING SUM(tblVendTransDT.decAmount) = 0
						AND SUM(tblVendTransDT.decAmountF) = 0
					)
				) GROUP BY LTRIM(RTRIM(MASTERTABLE.strVendName))
			,tblVendors.strVendDesc
			,tblVendors.strTerm
			,tblVendors.strCurrency
			,tblVendTransDT.bitIsForeign
			)

		UPDATE #Temp
		SET decBalDue = #Temp.strCurrSymbol + ' ' + #Temp2.ForeignAmount
			,decBalDueF = #Temp2.ForeignAmount
			,decBalDueValid = #Temp2.LocalAmount
		FROM #Temp2
		WHERE #Temp2.strAccountNumber = #Temp.strVendName

		IF(ISNULL(@SQSearchText,'') = '')
		BEGIN	

			;with vendorList AS (
				SELECT  ROW_NUMBER() Over (Order by strVendName ASC) AS RowNum, *
				FROM #Temp (NOLOCK)
				WHERE strCurrency <> @HomeCurrencyCode
					AND (
						CAST(decBalDueValid AS DECIMAL(18, 4)) <> 0.00
						OR CAST(decBalDueF AS DECIMAL(18, 4)) <> 0.00
						)
					AND strVendName NOT IN (
						SELECT Value
						FROM [fnSplitStringAsTable]((@lstGridAccount), (','))
						)
				)
				Select 
					 strVendName
					,strVendDesc
					,strCity
					,strPhone
					,bitInventoryVendor
					,strField1
					,strField2
					,strField3
					,strField4
					,strField5
					,strField6
					,strCurrency
					,strCurrSymbol
					,decBalDue
					,decBalDueF
					,bitInactive
					,decBalDueValid
					,(Select Count(A.strVendName) from vendorList A) AS Total
				 from vendorList  
				WHERE  RowNum >= (@Offset + 1)
							AND RowNum <= (@Offset + @PageSize)	
				ORDER  BY RowNum
		END
		ELSE
		BEGIN
			;with vendorList AS (
				SELECT  ROW_NUMBER() Over (Order by strVendName ASC) AS RowNum, *
				FROM #Temp (NOLOCK)
				WHERE strCurrency <> @HomeCurrencyCode
					AND (
						CAST(decBalDueValid AS DECIMAL(18, 4)) <> 0.00
						OR CAST(decBalDueF AS DECIMAL(18, 4)) <> 0.00
						)
					AND strVendName NOT IN (
						SELECT Value
						FROM [fnSplitStringAsTable]((@lstGridAccount), (','))
						)
					AND ( strVendName Like  '%'+@SQSearchText+'%'
					OR strVendDesc Like  '%'+@SQSearchText+'%'
					OR strCity Like  '%'+@SQSearchText+'%'
					OR strPhone Like  '%'+@SQSearchText+'%'
					OR strCurrency Like  '%'+@SQSearchText+'%' )		
				)
				Select 
					 strVendName
					,strVendDesc
					,strCity
					,strPhone
					,bitInventoryVendor
					,strField1
					,strField2
					,strField3
					,strField4
					,strField5
					,strField6
					,strCurrency
					,strCurrSymbol
					,decBalDue
					,decBalDueF
					,bitInactive
					,decBalDueValid
					,(Select Count(A.strVendName) from vendorList A) AS Total
				 from vendorList  
				WHERE  RowNum >= (@Offset + 1)
							AND RowNum <= (@Offset + @PageSize)	
				ORDER  BY RowNum

		END

		DROP TABLE #Temp
		DROP TABLE #Temp2

END
GO

CREATE PROCEDURE [dbo].[SPGetVendorsPickerlistByRevaluationDate]
(
	 @IsActive BIT = NULL
	,@IsInvoice BIT = NULL
	,@HomeCurrencyCode VARCHAR(20) = NULL
	,@SQCurrency VARCHAR(20) = NULL
	,@Option INT = 1
	,@SQUserName VARCHAR(50) = NULL
	,@dteRevaluationDate DATETIME = NULL
	,@SQSearchText NVARCHAR(MAX) = NULL
    ,@PageSize int = 12
    ,@PageNum int = 1
)
AS
BEGIN

  --- Use Pagination
 DECLARE @Offset INT
 SET @Offset = @PageSize * (@PageNum-1)


IF(ISNULL(@SQSearchText,'') = '')
	BEGIN
		;with vendorList AS (
		SELECT ROW_NUMBER() Over (Order by strVendName ASC) AS RowNum, strVendName as VendorName 
   ,strVendDesc as VendorDescription  
   ,strCity as City  
   ,strPhone as Phone  
   ,bitInventoryVendor as InventoryVendor 
   ,strField1 as Field1 
   ,strField2 as Field2 
   ,strField3 as Field3 
   ,strField4 as Field4 
   ,strField5 as Field5 
   ,strField6 as Field6 
   ,tblVendors.strCurrency as Currency 
   ,tblCurrency.strCurrSymbol as CurrencySymbol  
   ,(tblCurrency.strCurrSymbol + ' ' + CAST(ISNULL(VendBal.decBaldue, 0) AS VARCHAR(22))) AS BalanceDue  
   ,decBalDueF as BalanceDueF 
   ,bitInactive as Inactive  
		FROM tblVendors (NOLOCK)
		INNER JOIN tblCurrency (NOLOCK) ON tblVendors.strCurrency = tblCurrency.strCurrency
		LEFT JOIN (
			SELECT strVendName AS VendName
				,ISNULL(SUM(CASE 
							WHEN strCurrency = @HomeCurrencyCode
								THEN tblVendTransDT.decAmount
							ELSE tblVendTransDT.decAmountF
							END), 0) AS decBalDue
			FROM tblVendTrans (NOLOCK)
			INNER JOIN tblVendTransDT (NOLOCK) ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
			WHERE tblVendTransDT.bitReversed = 0
				AND tblVendTrans.dteJournalDate <= @dteRevaluationDate
			GROUP BY strVendName
			) AS VendBal ON tblVendors.strVendName = VendBal.VendName
		WHERE  bitInactive in (ISNULL(@IsActive,0),0)  
		AND bitInvWorkflowNew  IN (ISNULL(@IsInvoice,0),1)		 
			AND (
				@Option IS NULL
				OR @Option = 1
				OR (
					@Option = 2
					AND decOpenOrders <> 0
					)
				OR (
					@Option = 3
					AND ISNULL(VendBal.decBaldue, 0) <> 0
					)
				)
			AND (
				@SQCurrency IS NULL
				OR (tblVendors.strCurrency = @SQCurrency)
				)
			AND (
				@SQUserName IS NULL
				OR (
					strVendCategory IN (
						SELECT tblVendorCat.strVendCategory
						FROM tblVendorCat (NOLOCK)
						LEFT JOIN tblVendorCatSec (NOLOCK) ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
						WHERE ISNULL((
									SELECT COUNT(tblVendorCatSec.strVendCategory)
									FROM tblVendorCatSec (NOLOCK)
									WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblVendorCatSec.strVendCategory)
										FROM tblVendorCatSec (NOLOCK)
										WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
										), 0) > 0
								AND tblVendorCatSec.strUserName = @SQUserName
								)
						)
					)
				)
			)
		Select 
			 VendorName
			,VendorDescription
			,City
			,Phone
			,InventoryVendor
			,Field1
			,Field2
			,Field3
			,Field4
			,Field5
			,Field6
			,Currency
			,CurrencySymbol
			,BalanceDue
			,BalanceDueF
			,Inactive
			,(Select Count(A.VendorName) from vendorList A) AS Total
		 from vendorList  
		WHERE  RowNum >= (@Offset + 1)
					AND RowNum <= (@Offset + @PageSize)	
		ORDER  BY RowNum

	END
	ELSE
	BEGIN
		
			;with vendorList AS (
		SELECT ROW_NUMBER() Over (Order by strVendName ASC) AS RowNum, strVendName as VendorName 
   ,strVendDesc as VendorDescription  
   ,strCity as City  
   ,strPhone as Phone  
   ,bitInventoryVendor as InventoryVendor 
   ,strField1 as Field1 
   ,strField2 as Field2 
   ,strField3 as Field3 
   ,strField4 as Field4 
   ,strField5 as Field5 
   ,strField6 as Field6 
   ,tblVendors.strCurrency as Currency 
   ,tblCurrency.strCurrSymbol as CurrencySymbol  
   ,(tblCurrency.strCurrSymbol + ' ' + CAST(ISNULL(VendBal.decBaldue, 0) AS VARCHAR(22))) AS BalanceDue  
   ,decBalDueF as BalanceDueF 
   ,bitInactive as Inactive  
		FROM tblVendors (NOLOCK)
		INNER JOIN tblCurrency (NOLOCK) ON tblVendors.strCurrency = tblCurrency.strCurrency
		LEFT JOIN (
			SELECT strVendName AS VendName
				,ISNULL(SUM(CASE 
							WHEN strCurrency = @HomeCurrencyCode
								THEN tblVendTransDT.decAmount
							ELSE tblVendTransDT.decAmountF
							END), 0) AS decBalDue
			FROM tblVendTrans (NOLOCK)
			INNER JOIN tblVendTransDT (NOLOCK) ON tblVendTrans.lngVendTrID = tblVendTransDT.lngVendTrID
			WHERE tblVendTransDT.bitReversed = 0
				AND tblVendTrans.dteJournalDate <= @dteRevaluationDate
			GROUP BY strVendName
			) AS VendBal ON tblVendors.strVendName = VendBal.VendName
		WHERE  bitInactive in (ISNULL(@IsActive,0),0)  
		AND bitInvWorkflowNew  IN (ISNULL(@IsInvoice,0),1)		 
			AND (
				@Option IS NULL
				OR @Option = 1
				OR (
					@Option = 2
					AND decOpenOrders <> 0
					)
				OR (
					@Option = 3
					AND ISNULL(VendBal.decBaldue, 0) <> 0
					)
				)
			AND (
				@SQCurrency IS NULL
				OR (tblVendors.strCurrency = @SQCurrency)
				)
			AND (
				@SQUserName IS NULL
				OR (
					strVendCategory IN (
						SELECT tblVendorCat.strVendCategory
						FROM tblVendorCat (NOLOCK)
						LEFT JOIN tblVendorCatSec (NOLOCK) ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
						WHERE ISNULL((
									SELECT COUNT(tblVendorCatSec.strVendCategory)
									FROM tblVendorCatSec (NOLOCK)
									WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
									), 0) = 0
							OR (
								ISNULL((
										SELECT COUNT(tblVendorCatSec.strVendCategory)
										FROM tblVendorCatSec (NOLOCK)
										WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
										), 0) > 0
								AND tblVendorCatSec.strUserName = @SQUserName
								)
						)
					)
				)
				AND ( strVendName Like  '%'+@SQSearchText+'%'
					OR strVendDesc Like  '%'+@SQSearchText+'%'
					OR strCity Like  '%'+@SQSearchText+'%'
					OR strPhone Like  '%'+@SQSearchText+'%'
					OR tblVendors.strCurrency Like  '%'+@SQSearchText+'%' )		
			)
		Select 
			 VendorName
			,VendorDescription
			,City
			,Phone
			,InventoryVendor
			,Field1
			,Field2
			,Field3
			,Field4
			,Field5
			,Field6
			,Currency
			,CurrencySymbol
			,BalanceDue
			,BalanceDueF
			,Inactive
			,(Select Count(A.VendorName) from vendorList A) AS Total
		 from vendorList  
		WHERE  RowNum >= (@Offset + 1)
					AND RowNum <= (@Offset + @PageSize)	
		ORDER  BY RowNum

	END
END
GO

CREATE PROCEDURE [dbo].[ImportInvEmployee] (
	@SQEmpNumber NVARCHAR(50)
	,@SQEmpName NVARCHAR(50)
	,@SQTitle NVARCHAR(50)
	,@SQSurname NVARCHAR(50)
	,@SQTagNo NVARCHAR(50)
	,@SQTelNo NVARCHAR(50)
	,@SQEmail NVARCHAR(50)
	,@SQintDeptID INT
	,@SQDefaultApprover NVARCHAR(50)
	,@SQInactive BIT
	,@SQSince NVARCHAR(50)
	,@SQInactiveDate DATETIME
	,@SQField1 NVARCHAR(50)
	,@SQField2 NVARCHAR(50)
	,@SQField3 NVARCHAR(50)
	,@SQField4 NVARCHAR(50)
	,@SQField5 NVARCHAR(50)
	,@SQField6 NVARCHAR(50)
	,@SQField7 NVARCHAR(50)
	,@SQField8 NVARCHAR(50)
	,@SQField9 NVARCHAR(50)
	,@SQField10 NVARCHAR(50)
	,@SQField11 NVARCHAR(50)
	,@SQField12 NVARCHAR(50)
	,@SQCustNumber NVARCHAR(50)
	,@SQEmpPhoto VARCHAR(500) = NULL
	,@SQlngProfileId INT = NULL
	,@SQdteBudgetDate DATETIME
	,@ProfitCenter NVARCHAR(50)
	)
AS
BEGIN
	DECLARE @ERR_MSG AS NVARCHAR(MAX)
		,@IsInsert AS BIT = 0

	UPDATE tblEmployees
	SET strEmpName = @SQEmpName
		,strTitle = @SQTitle
		,strSurname = @SQSurname
		,strTagNo = @SQTagNo
		,strTelNo = @SQTelNo
		,strEmail = @SQEmail
		,bitInactive = @SQInactive
		,dteSince = @SQSince
		,intDept = @SQintDeptID
		,strDefaultApprover = @SQDefaultApprover
		,dteInactiveDate = @SQInactiveDate
		,dteLastUpdated = GetDate()
		,strField1 = @SQField1
		,strField2 = @SQField2
		,strField3 = @SQField3
		,strField4 = @SQField4
		,strField5 = @SQField5
		,strField6 = @SQField6
		,strField7 = @SQField7
		,strField8 = @SQField8
		,strField9 = @SQField9
		,strField10 = @SQField10
		,strField11 = @SQField11
		,strField12 = @SQField12
		,strCustNumber = @SQCustNumber
		,lngProfileId = @SQlngProfileId
		,dteBudgetDate = @SQdteBudgetDate
	WHERE strEmpNumber = @SQEmpNumber

	IF @@ROWCOUNT = 0
	BEGIN
		INSERT INTO tblEmployees
		VALUES (
			@SQEmpNumber
			,@SQEmpName
			,@SQTitle
			,@SQSurname
			,@SQTagNo
			,@SQTelNo
			,@SQEmail
			,@SQintDeptID
			,@SQDefaultApprover
			,@SQInactive
			,GetDate()
			,@SQSince
			,NEWID()
			,@SQInactiveDate
			,@SQField1
			,@SQField2
			,@SQField3
			,@SQField4
			,@SQField5
			,@SQField6
			,@SQField7
			,@SQField8
			,@SQField9
			,@SQField10
			,@SQField11
			,@SQField12
			,@SQCustNumber
			,@SQEmpPhoto
			,@SQlngProfileId
			,@SQdteBudgetDate
			,0
			,NULL
			)

		SET @IsInsert = 1
	END
END

---Profit Center---
DELETE
FROM tblEmployeeCenter
WHERE strEmpNumber = @SQEmpNumber

IF LEN(@ProfitCenter) > 0
BEGIN
	DECLARE @CenterID AS UNIQUEIDENTIFIER
	DECLARE @Level1 AS NVARCHAR(400) = NULL
	DECLARE @Level2 AS NVARCHAR(400) = NULL
	DECLARE @Level3 AS NVARCHAR(400) = NULL
	DECLARE @Level4 AS NVARCHAR(400) = NULL
	DECLARE @Level5 AS NVARCHAR(400) = NULL
	DECLARE @LevelCount AS INT
	DECLARE @QueryCommand AS NVARCHAR(MAX)
	DECLARE @ParameterDefinition AS NVARCHAR(MAX)

	CREATE TABLE #Temp (
		RowId INT Identity(1, 1)
		,CenterLevel NVARCHAR(200)
		,
		)

	INSERT INTO #Temp
	SELECT [Value]
	FROM [dbo].[fnSplitStringAsTable](@ProfitCenter, '\')

	SET @LevelCount = @@ROWCOUNT

	SELECT TOP (1) @Level1 = CenterLevel
	FROM #Temp
	WHERE RowId = 1

	SET @QueryCommand = 'SELECT @CenterIDOut = uidCenterID FROM tblCenters WHERE strLvl1 = @Level1'

	IF @LevelCount > 1
	BEGIN
		SELECT TOP (1) @Level2 = CenterLevel
		FROM #Temp
		WHERE RowId = 2

		SET @QueryCommand += ' AND strLvl2 = @Level2'
	END
	ELSE
	BEGIN
		SET @QueryCommand += ' AND strLvl2 IS NULL AND strLvl3 IS NULL AND strLvl4 IS NULL AND strLvl5 IS NULL'
	END

	IF @LevelCount > 2
	BEGIN
		SELECT TOP (1) @Level3 = CenterLevel
		FROM #Temp
		WHERE RowId = 3

		SET @QueryCommand += ' AND strLvl3 = @Level3'
	END
	ELSE
	BEGIN
		SET @QueryCommand += ' AND strLvl3 IS NULL AND strLvl4 IS NULL AND strLvl5 IS NULL'
	END

	IF @LevelCount > 3
	BEGIN
		SELECT TOP (1) @Level4 = CenterLevel
		FROM #Temp
		WHERE RowId = 4

		SET @QueryCommand += ' AND strLvl4 = @Level4'
	END
	ELSE
	BEGIN
		SET @QueryCommand += ' AND strLvl4 IS NULL AND strLvl5 IS NULL'
	END

	IF @LevelCount > 4
	BEGIN
		SELECT TOP (1) @Level5 = CenterLevel
		FROM #Temp
		WHERE RowId = 5

		SET @QueryCommand += ' AND strLvl5 = @Level5'
	END
	ELSE
	BEGIN
		SET @QueryCommand += ' AND strLvl5 IS NULL'
	END

	DROP TABLE #Temp

	SET @ParameterDefinition = ' @Level1 NVARCHAR(400),
										@Level2 NVARCHAR(400),
										@Level3 NVARCHAR(400),
										@Level4 NVARCHAR(400),
										@Level5 NVARCHAR(400),
										@CenterIDOut UNIQUEIDENTIFIER OUT'

	EXECUTE sp_executesql @QueryCommand
		,@ParameterDefinition
		,@Level1
		,@Level2
		,@Level3
		,@Level4
		,@Level5
		,@CenterIDOut = @CenterID OUTPUT

	IF @@ROWCOUNT = 0
	BEGIN
		SET @ERR_MSG = 'Invalid Profit Center'

		RAISERROR (
				@ERR_MSG
				,16
				,1
				);
	END

	INSERT INTO tblEmployeeCenter
	VALUES (
		@SQEmpNumber
		,@CenterID
		)
END

SELECT CONCAT (
		'Success: '
		,@IsInsert
		)
GO

CREATE PROCEDURE [dbo].[GetJobsDetailbyWorkCentre]
@SQWCCode NvarChar(50)
AS  
BEGIN 
SELECT strJBDocID as JBDocID, dteJournalDate as JournalDate, strReference as Reference, strWCCode as WCCode, intType as Type FROM tblManJob WHERE strWCCode = @SQWCCode
END
GO

CREATE PROCEDURE [dbo].[GetWorkCentreCount]
@SQJBDocID as nvarchar(50)
,@SQWCCodeTo as nvarchar(50)
AS  
BEGIN 
SELECT COUNT(lngID) as lngID FROM tblManJobOp WHERE strJBDocID = @SQJBDocID AND strWCCode = @SQWCCodeTo
END
GO

CREATE PROCEDURE [dbo].[GetDepositePickerData](
@AcctNumber NVARCHAR(MAX),
@Start DateTime,
@End DateTime,
@GLNumber NVARCHAR(200),
@Sort int
)
AS  
BEGIN
DECLARE @sql varchar(MAX) = ''
 SET @sql = 'SELECT tblDeposits.dteJournalDate As JournalDate, tblDeposits.intGLNumber As GLNumber, tblAccounts.strDesc As Descriptions, tblDeposits.strDepDocID As DepDocID, tblDeposits.lngJourID AS JourID, tblDeposits.decAmount As Amount, tblDeposits.intDept As Dept FROM tblDeposits INNER JOIN tblAccounts ON tblDeposits.intGLNumber = tblAccounts.intGLNumber  WHERE (tblDeposits.dteJournalDate BETWEEN '''+CONVERT(VARCHAR(30), @Start)+''' AND '''+CONVERT(VARCHAR(30), @End)+''')'
		IF(LEN(@AcctNumber) > 0)
			BEGIN
				SET @sql += ' AND (tblDeposits.intGLNumber = '+@AcctNumber+')'
			END
		Else IF (LEN(@GLNumber) > 0)
			BEGIN
				SET @sql += ' AND (tblDeposits.intGLNumber = '+@GLNumber+')'
			END


		IF(@Sort =0)
			BEGIN
			SET @sql += ' ORDER BY tblDeposits.dteJournalDate DESC'
			END

		ELSE IF(@Sort =1)
			BEGIN
			SET @sql += ' ORDER BY tblDeposits.intGLNumber ASC'
			END

		ELSE IF(@Sort =2)
			BEGIN
			SET @sql += ' ORDER BY tblDeposits.strDepDocID DESC'
			END

		ELse IF(@Sort =3)
			BEGIN
			SET @sql += ' ORDER BY tblDeposits.lngJourID DESC'
			END
			
		ELSE IF(@Sort =4)
			BEGIN
				SET @sql += ' ORDER BY tblDeposits.decAmount DESC'
			 END

PRINT(@sql)
EXEC(@sql)

END
GO

CREATE PROCEDURE [dbo].[InvItemAddUOMsInPricelist](
@Part NVARCHAR(200),
@TransactionType NVARCHAR(100)
)
AS
BEGIN
INSERT INTO tblInvPrice([uidPriceBasedID],[strPartNumber],[strPricelist],[decSelling],[decEstLocalCost],[decEstImportCost],[strUnit],
[bitStockUnit]) SELECT PLBD.uidPriceBasedID, UOM.strPartNumber, IP1.strPricelist, 0, 0, 0, UOM.strFromUnit, 0 
FROM tblInvUOMs UOM INNER JOIN tblInvPrice IP1 ON UOM.strPartNumber = IP1.strPartNumber AND IP1.bitStockUnit = 1 
INNER JOIN tblPriceListsByDate PLBD ON IP1.uidPriceBasedID = PLBD.uidPriceBasedID LEFT JOIN tblInvPrice IP2 ON UOM.strPartNumber = 
IP2.strPartNumber AND UOM.strFromUnit = IP2.strUnit WHERE (UOM.strPartNumber = @Part) AND 
(UOM.strUseFor = @TransactionType OR UOM.strUseFor = 'Both') AND (ISNULL(IP2.strUnit,'') = '')
END
GO


CREATE PROCEDURE [dbo].[InvItemDeleteUOMsInPricelist]
@Part NVARCHAR(200)
AS
BEGIN
DELETE tblInvPrice 
	FROM tblInvPrice 
	INNER JOIN (SELECT IP.strPartNumber, IP.strUnit FROM tblInvPrice IP LEFT JOIN tblInvUOMs UOM ON IP.strPartNumber = UOM.strPartNumber 
	AND IP.strUnit = UOM.strFromUnit WHERE (IP.strPartNumber = @Part) 
	AND (IP.bitStockUnit = 0) AND (UOM.strFromUnit = Null)) Z 
	ON tblInvPrice.strPartNumber = Z.strPartNumber AND tblInvPrice.strUnit = Z.strUnit
END
GO

CREATE PROCEDURE [dbo].[GetGridJournals]
	@SearchText nvarchar(1000) = null,
	@StartDate  datetime,
	@EndDate    datetime,
	@OrderByField nvarchar(50)
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @ItemData TABLE(
		strSource nvarchar(50), 
		lngJourId bigint,
		dteJournalDate datetime, 
		strComment nvarchar(500),
		strCurrency nvarchar(6),
		decExchange decimal(20,6),
		dteReverseDate datetime
		)

	DECLARE @WhereQuery nvarchar(max)
	DECLARE @OrderQuery varchar(100)

	SET @WhereQuery = ' WHERE bitIsTobeReversed = 1 AND bitIsReversed = 0 '

	IF LEN(@SearchText) > 0
		SET @WhereQuery = @WhereQuery + ' AND (strJEDocID LIKE ''%' + @SearchText + '%'' OR strComment LIKE ''%' + @SearchText + '%'')'
	SET @WhereQuery = @WhereQuery + ' AND dteReverseDate between ''' + Convert(Varchar(10),@StartDate,121) + ''' AND ''' + Convert(Varchar(10),@EndDate,121) + ''''
	
	SET @OrderQuery = ' ORDER BY ' + @OrderByField + ' ASC'
	
	DECLARE @Query  NVARCHAR(MAX)
	SET @Query = '
			SELECT 
				strJEDocID,
				lngJourId,
				dteJournalDate,
				strComment,
				strCurrency,
				decExchange,
				dteReverseDate
				FROM
					tblJournalEntryDoc ' + 
				@WhereQuery +  @OrderQuery

	PRINT @Query
	
	INSERT INTO @ItemData EXEC sp_Executesql @Query,
					N'@OrderQuery varchar(100)',
					@OrderQuery=@OrderQuery
								
	SELECT strSource AS 'Source' , 
		lngJourId AS 'JournalID',
		dteJournalDate AS 'JournalDate', 
		strComment AS 'Comment',
		strCurrency AS 'Currency',
		decExchange AS 'Exchange',
		dteReverseDate  FROM @ItemData		

    SET NOCOUNT OFF;
END
GO

CREATE PROCEDURE [dbo].[GetInvSubCatList] 
AS
BEGIN
select strCategory AS 'Category', strParentCategory AS 'ParentCategory' from tblInvSubCat
END
GO

CREATE PROCEDURE GetBinInvExtDataByLocName @LocationName NVARCHAR(200)
AS
BEGIN
	SELECT TOP(1) 
		lngId as BinId,
		strBinCode as BinCode,
		strDescription as Description 
	FROM tblInvLocBin 
	WHERE strLocName = @LocationName
END
GO

CREATE PROCEDURE [dbo].[ProcessReceiptPOS] (
	@tblCustomerPayTableType AS CustomerPayTableType READONLY
	,@tblCustomerTransactionTableType AS CustomerTransactionTableType READONLY
	,@tblCustomerTransactionDTTableType AS CustomerTransactionDTTableType READONLY
	,@NextRCNumber AS BIGINT
	,@IsHPDeposit AS BIT
	,@DocumentNumber AS NVARCHAR(100)
	,@CustomerYTDFlag AS BIT
	,@CustName AS NVARCHAR(100)
	,@CurrentYrStarts AS DATETIME
	,@IsProcessCreditNotes AS BIT
	,@IsSync AS BIT	= 0
	)
AS
BEGIN
	BEGIN TRY
		DECLARE @ERR_MSG AS NVARCHAR(4000)
			,@Err_Severity INT
			,@ERR_STA AS SMALLINT

		PRINT 'tblCustPay start'

		INSERT INTO tblCustPay (
			lngCustPayID
			,dteSystemDate
			,dteJournalDate
			,strUserName
			,lngJourID
			,strCustName
			,strSource
			,intBankAcct
			,decAmount
			,bitReversed
			,bitReversal
			,strComment
			,intPayBy
			,decDeposit
			,intDept
			,strCurrency
			,bitIsForeign
			,decExchange
			,decAmountF
			,decDepositF
			,bitFromInvPaymt
			,blnForeignBank
			,decBankExchange
			,strBankCurrency
			,decBankAmount
			,decBankAmountF
			,strWHTaxCode
			,decWHPerc
			,decWHAmt
			,decWHAmtF
			,strPaidBy
			)
		SELECT CustPayID
			,SystemDate
			,JournalDate
			,UserName
			,JourID
			,CustName
			,Source
			,BankAcct
			,Amount
			,0
			,0
			,Comment
			,PayBy
			,Deposit
			,CASE Dept
				WHEN 0
					THEN NULL
				ELSE Dept
				END
			,Currency
			,IsForeign
			,Exchange
			,AmountF
			,DepositF
			,1
			,--payment entry comes from invoice screen not payments screen
			IsForeignBank
			,BankExchange
			,BankCurrency
			,BankAmount
			,BankAmountF
			,NULL
			,0
			,0
			,0
			,PaidBy
		FROM @tblCustomerPayTableType

		PRINT 'tblCustPay done'
	END TRY

	BEGIN CATCH
		PRINT 'tblCustPay exception'

		IF ERROR_NUMBER() = 2627
		BEGIN
			PRINT 'error'

			--ROLLBACK TRANSACTION
		END
	END CATCH

	--Get customer trans ID
	IF @IsHPDeposit = 1
	BEGIN
		PRINT 'tblCustTrans start'

		INSERT INTO tblCustTrans (
			lngCustTrID
			,strCustName
			,dteSystemDate
			,dteJournalDate
			,strUserName
			,strInvDocID
			,strInvDepNumber
			,strSoNumber
			,intTransType
			,decInvAmount
			,decInvAmountF
			,strCurrency
			,bitIsForeign
			,decExchange
			,bitDocReRated
			,dteReRated
			,decReRateCumltveValue
			,bitSettled
			,decDiscAvail
			,decDiscAvailF
			,dteDiscExpires
			,dteDueDate
			,strJEDocID
			,strOrdDocID
			)
		SELECT CustTrID
			,CustName
			,SystemDate
			,JournalDate
			,UserName
			,NULL
			,'Deposit'
			,''
			,2
			,InvAmount
			,0
			,Currency
			,0
			,1
			,0
			,NULL
			,0
			,0
			,0
			,0
			,DiscExpires
			,DueDate
			,NULL
			,NULL
		FROM @tblCustomerTransactionTableType

		PRINT 'tblCustTrans done'
	END
	ELSE
	BEGIN
		PRINT 'tblCustTransDT start'

		DECLARE @CustTrID AS BIGINT

		SELECT TOP 1 @CustTrID = ISNULL(lngCustTrID, 0)
		FROM tblCustTrans
		WHERE strInvDocID = @DocumentNumber

		INSERT INTO tblCustTransDT (
			--lngID,
			dteJournalDate
			,lngCustTrID
			,lngCustPayID
			,decAmount
			,intTransType
			,decAmtOwingAtTime
			,bitReversed
			,dteIntDate
			,decAmountF
			,decAmtOwingAtTimeF
			,bitIsForeign
			)
		SELECT JournalDate
			,@CustTrID
			,[CustPayID]
			,Amount
			,--decPaidTotal * -1
			2
			,AmtOwingAtTime
			,0
			,NULL
			,AmountF
			,AmtOwingAtTimeF
			,IsForeign
		FROM @tblCustomerTransactionDTTableType

		PRINT 'tblCustTransDT done'
	END

	--Update Doc Number
	BEGIN TRY
		if @IsSync = 0
		BEGIN
		UPDATE tblLastIDs
		SET lngRCNumber = @NextRCNumber
		END
	END TRY

	BEGIN CATCH
	END CATCH

	IF @IsProcessCreditNotes = 0
	BEGIN
		IF @IsHPDeposit = 1
		BEGIN
			IF @CustomerYTDFlag = 1
			BEGIN
				UPDATE tblCustomers
				SET decYTDPurch = (
						SELECT ISNULL(SUM(decTotal), 0)
						FROM tblInvoiceDoc
						WHERE strCustName = tblCustomers.strCustName
							AND bitHistoryTrans = 0
							AND dteJournalDate >= @CurrentYrStarts
						)
					,decBalDueF = (
						SELECT ISNULL(SUM(tblCustTransDT.decAmountF), 0)
						FROM tblCustTrans
						INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
						WHERE tblCustTrans.strCustName = tblCustomers.strCustName
							AND tblCustTransDT.bitReversed = 0
						)
					,decYTDPurchF = (
						SELECT ISNULL(SUM(decTotalF), 0)
						FROM tblInvoiceDoc
						WHERE strCustName = tblCustomers.strCustName
							AND bitHistoryTrans = 0
							AND dteJournalDate >= @CurrentYrStarts
						)
				WHERE strCustName = @CustName
			END
			ELSE
			BEGIN
				UPDATE tblCustomers
				SET decBalDue = (
						SELECT ISNULL(SUM(tblCustTransDT.decAmount), 0)
						FROM tblCustTrans
						INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
						WHERE tblCustTrans.strCustName = tblCustomers.strCustName
							AND tblCustTransDT.bitReversed = 0
							AND (
								tblCustTrans.strOrdDocID IS NULL
								OR (
									tblCustTrans.strInvDocID IS NOT NULL
									AND tblCustTrans.strOrdDocID IS NOT NULL
									)
								OR (
									tblCustTrans.strOrdDocID IS NOT NULL
									AND tblCustTransDT.lngCustPayID IS NOT NULL
									)
								)
						)
					,decYTDPurch = (
						SELECT ISNULL(SUM(decTotal), 0)
						FROM tblInvoiceDoc
						WHERE strCustName = tblCustomers.strCustName
							AND bitHistoryTrans = 0
							AND dteJournalDate >= @CurrentYrStarts
						)
					,decBalDueF = (
						SELECT ISNULL(SUM(tblCustTransDT.decAmountF), 0)
						FROM tblCustTrans
						INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
						WHERE tblCustTrans.strCustName = tblCustomers.strCustName
							AND tblCustTransDT.bitReversed = 0
							AND (
								tblCustTrans.strOrdDocID IS NULL
								OR (
									tblCustTrans.strInvDocID IS NOT NULL
									AND tblCustTrans.strOrdDocID IS NOT NULL
									)
								OR (
									tblCustTrans.strOrdDocID IS NOT NULL
									AND tblCustTransDT.lngCustPayID IS NOT NULL
									)
								)
						)
					,decYTDPurchF = (
						SELECT ISNULL(SUM(decTotalF), 0)
						FROM tblInvoiceDoc
						WHERE strCustName = tblCustomers.strCustName
							AND bitHistoryTrans = 0
							AND dteJournalDate >= @CurrentYrStarts
						)
					,dteUpdated = GetDate()
				WHERE strCustName = @CustName
			END
		END
	END
	ELSE
	BEGIN
		UPDATE tblCustTrans
		SET bitSettled = 1
		WHERE bitSettled = 0
			AND lngCustTrID IN (
				SELECT lngCustTrID
				FROM tblCustTransDT
				WHERE bitReversed = 0
				GROUP BY lngCustTrID
				HAVING SUM(decAmount) = 0
					AND SUM(decAmountF) = 0
				)

		UPDATE tblCustTrans
		SET bitSettled = 0
		WHERE bitSettled = 1
			AND lngCustTrID IN (
				SELECT lngCustTrID
				FROM tblCustTransDT
				WHERE bitReversed = 0
				GROUP BY lngCustTrID
				HAVING SUM(decAmount) <> 0
					OR SUM(decAmountF) <> 0
				)
	END
END
GO

CREATE PROCEDURE [dbo].[AddPOSDocumentSyncedStatus] (
	@DocID VARCHAR(50)
	,@TerminalId INT
	,@TransactionType INT
	)
AS
BEGIN
	INSERT INTO [dbo].[tblPOSDocumentSyncedStatus] (
		[strDocID]
		,[intTerminalId]
		,[intTransactionType]
		,[bitIsSynced]
		,[dteRowUpdated]
		)
	VALUES (
		@DocID
		,@TerminalId
		,@TransactionType
		,1
		,GETDATE()
		)
END
GO

CREATE PROCEDURE [dbo].[CheckPOSDocumentSynced] @DocNumber AS NVARCHAR(50)
AS
BEGIN
	SELECT CASE 
			WHEN EXISTS (
					SELECT 1
					FROM tblPOSDocumentSyncedStatus
					WHERE strDocID = @DocNumber
					)
				THEN CAST(1 AS BIT)
			ELSE CAST(0 AS BIT)
			END
END
GO

CREATE PROCEDURE [dbo].[GetItemDescriptionBuilderInfoByPartNumber] 
	@PartNumber AS NVARCHAR(100) = NULL
AS
BEGIN
	SELECT tblInv.strPartNumber AS PartNumber, IDL.strDescription AS DescName, IDL.strDescriptionValue AS DescValue, ID.intOrder as DescOrder
FROM     tblInv INNER JOIN
                  tblInvDescriptionList IDL ON tblInv.strPartNumber = IDL.strPartNumber INNER JOIN
                  tblInvDescription ID ON IDL.strDescription = ID.strDescription
WHERE tblInv.strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[CheckIsChildPricelist] @Pricelist AS NVARCHAR(50), @Type AS int
AS
BEGIN
	SELECT CASE 
			WHEN EXISTS (
					SELECT 1
					FROM tblPricelists
					WHERE intPriceListType in (3, 4) and strPricelist = @Pricelist and uidLinkPricelistId is not null
					)
				THEN CAST(1 AS BIT)
			ELSE CAST(0 AS BIT)
			END
END
GO


CREATE PROCEDURE [dbo].[AddUpdatetblCustomerSales]
	    @tblData AS CustomerSalesTableType READONLY

AS
BEGIN
	BEGIN
	 INSERT INTO [dbo].[tblCustomerSales]
           ([strCustName]
           ,[strSalesName]
          )
	   select
			[strCustName]
           ,[strSalesName]
				  FROM @tblData  as t 
	  WHERE  NOT EXISTS (SELECT 1 FROM tblCustomerSales WHERE strCustName = t.strCustName )
	END

	BEGIN
	  
UPDATE [dbo].[tblCustomerSales]
   SET [strCustName] = table2.strCustName
      ,[strSalesName] = table2.strSalesName
			FROM tblCustomerSales as table1
	INNER JOIN @tblData as table2
	ON ( table1.strCustName = table2.strCustName)
	END
END
GO

CREATE PROCEDURE [dbo].[WinSalesBOMLoad]
	(
	 @SQPartNumber NVARCHAR(MAX) = NULL
	,@SQstrLocName NVARCHAR(MAX) = NULL
	)
	AS
	BEGIN
		
		SELECT intType, bitAutoBuild, ISNULL(intGLRevenue,0) As intGLRevenue, bitAutoBuildSameLoc , bitAllowAdjustKitCompOnDoc FROM fnTblInvForLocJoin() tblInv LEFT JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInv.strLocName = tblInvExt.strLocName LEFT JOIN tblAccountSets ON  tblInvExt.strAcctSet = tblAccountSets.strAcctSet WHERE tblInv.strPartNumber = @SQPartNumber AND (tblInv.strLocName = @SQstrLocName OR tblInv.strLocName IS NULL)
END
GO

CREATE PROCEDURE [dbo].[TurnBitClearedONCN] (
	@DocId NVARCHAR(50),
	@BitClearedValue bit
	)
AS
BEGIN
	Update tblOrderDoc set  [bitCleared] = @BitClearedValue where strOrddocID = @DocId
END

GO

CREATE PROCEDURE [dbo].[TurnBitClearedOffGL] (
	@DocId NVARCHAR(50),
	@BitClearedValue bit
	)
AS
BEGIN
	UPDATE tblJournalEntryDocApprovalPending SET [bitPosted] = @BitClearedValue WHERE strJEno = @DocId
END
GO

CREATE PROCEDURE [dbo].[rptShipmentRefreshForm]
-- Add the parameters for the stored procedure here
@SQSearchBy   VARCHAR(MAX) = NULL,
@SQUserName   VARCHAR(MAX) = NULL,
@optCustomer BIT = NULL,
@chkInactive BIT = NULL,
@blnBPToolsMode BIT = NULL

AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''

IF(@optCustomer = 1)
	BEGIN
		IF( Len(@SQSearchBy) > 0 )
			BEGIN
				IF(@chkInactive = 1)
					BEGIN
						SET @sql = 'SELECT strCustName As CustomerName, strCustDesc As CustomerDescription FROM tblCustomers WHERE (strCustName LIKE ''%'+ @SQSearchBy + '%'' OR strCustDesc LIKE  ''%' + @SQSearchBy + '%'') '
					END
				ELSE
					BEGIN
						SET @sql = 'SELECT strCustName As CustomerName, strCustDesc As CustomerDescription FROM tblCustomers WHERE bitInactive = 0 AND (strCustName LIKE ''%'+ @SQSearchBy + '%'' OR strCustDesc LIKE  ''%' + @SQSearchBy + '%'') '
					END
			END
		ELSE
			BEGIN
				IF(@chkInactive = 1)
					BEGIN
						SET @sql = 'SELECT strCustName As CustomerName, strCustDesc As CustomerDescription FROM tblCustomers'
					END
				ELSE
					BEGIN
						SET @sql = 'SELECT strCustName As CustomerName, strCustDesc As CustomerDescription FROM tblCustomers WHERE bitInactive = 0'
					END
			END

		IF(@blnBPToolsMode = 0)
			BEGIN
				IF Charindex('WHERE', @sql) > 0
					BEGIN
						SET @sql = @sql + ' AND '
					END
				ELSE
					BEGIN
						SET @sql = @sql + ' WHERE '
					END
				SET @sql += ' strCustCategory IN (SELECT tblCustomerCat.strCustCategory FROM tblCustomerCat LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory WHERE ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec
				WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblCustomerCatSec.strCustCategory) FROM tblCustomerCatSec WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory), 0) > 0 
				AND tblCustomerCatSec.strUserName = '''+ @SQUserName + '''))'
			END

		SET @sql += ' ORDER BY strCustName'
	END

	ELSE
	--Delivery Route
		BEGIN
			IF( Len(@SQSearchBy) > 0 )
				BEGIN
					IF(@chkInactive = 1)
						BEGIN
							SET @sql = 'SELECT strDelRouteCode As CustomerName, strDelRouteDesc As CustomerDescription FROM tblDeliveryRoutes WHERE (strDelRouteCode LIKE LIKE ''%'+ @SQSearchBy + '%'' OR strDelRouteDesc LIKE  ''%' + @SQSearchBy + '%'') '
						END
					ELSE
						BEGIN
							SET @sql = 'SELECT strDelRouteCode As CustomerName, strDelRouteDesc As CustomerDescription FROM tblDeliveryRoutes WHERE bitInactive = 0 AND (strDelRouteCode LIKE ''%'+ @SQSearchBy + '%'' OR strDelRouteDesc LIKE ''%' + @SQSearchBy + '%'') '
						END
				END
			ELSE
				BEGIN
					IF(@chkInactive = 1)
						BEGIN
							SET @sql = 'SELECT strDelRouteCode As CustomerName, strDelRouteDesc As CustomerDescription FROM tblDeliveryRoutes'
						END
					ELSE
						BEGIN
							SET @sql = 'SELECT strDelRouteCode As CustomerName, strDelRouteDesc As CustomerDescription FROM tblDeliveryRoutes WHERE bitInactive = 0'
						END
				END
			SET @sql += ' ORDER BY strDelRouteCode'
		END
PRINT(@sql)
EXEC(@sql)
END
GO

CREATE PROCEDURE [dbo].[RptShipmentSummaryReportData](
@optCustomer bit,
@SQStart varchar(19),
@SQEnd varchar(19),
@SQCustName varchar(max),
@SQDelRouteCode varchar(max),
@SelectedItems bit
)
AS
BEGIN
Declare @Query as NVARCHAR(max)

SET @Query = 'SELECT SHP.strShpDocID AS ShipDocID, SHP.dteJournalDate AS JournalDate, SHP.dteRequired AS DateRequired, '

	IF(@optCustomer = 1)
		BEGIN
			SET	@query += ' CONCAT(CUST.strCustName, '' - '', CUST.strCustDesc) AS GroupName, '
		END
	ELSE
		BEGIN
			SET @Query += 'CONCAT(DEL.strDelRouteCode, '' - '', DEL.strDelRouteDesc) AS GroupName, '
		END
	SET @Query += 'CONCAT(CUST.strCustName, '' - '', CUST.strCustDesc) AS CustName, SHP.strReference AS Reference, SHP.strType AS Typestring, SHP.strTrackingNo AS TrackingNo, SHP.strWayBillNo AS WayBillNo FROM tblShipments SHP	INNER JOIN tblCustomers CUST On SHP.strCustName = CUST.strCustName '
	IF(@optCustomer = 1)
		BEGIN
			IF(@SelectedItems = 1)
				BEGIN
					SET @Query += 'WHERE (SHP.dteJournalDate BETWEEN '''+ @SQStart +''' AND '''+ @SQEnd +''') 
									AND (CUST.strCustName In (Select * FROM fnSplitStringAsTable('''+@SQCustName+''', '',''))) '
				END
			SET @Query += ' ORDER BY CUST.strCustName, SHP.strShpDocID '
		END
	ELSE
		BEGIN
			SET @Query += ' INNER JOIN tblDeliveryRoutes DEL ON SHP.strDelRouteCode = DEL.strDelRouteCode '
			IF(@SelectedItems = 1)
				BEGIN
					SET @Query += ' WHERE (SHP.dteJournalDate BETWEEN '''+ @SQStart +''' AND '''+ @SQEnd +''') 
									AND (DEL.strDelRouteCode IN (SELECT * FROM fnSplitStringAsTable('''+@SQDelRouteCode+''', '',''))) '
				END
			SET @Query += ' ORDER BY DEL.strDelRouteCode, SHP.strShpDocID'
		END
		print @Query
EXEC sp_Executesql @Query
END
GO

CREATE PROCEDURE [dbo].[RptShipmentDetail2ReportData](
@optCustomer bit,
@SQStart varchar(19),
@SQEnd varchar(19),
@SQCustName varchar(max),
@SQDelRouteCode varchar(max),
@SelectedItems bit
)
AS
BEGIN
Declare @Query as NVARCHAR(max)

SET @Query = 'SELECT DTL.strPartNumber AS PartNumber, DTL.strPartDesc AS PartDescription, SUM(DTL.decShpQty) AS ShipmentQty FROM tblShipments HDR INNER JOIN tblShipmentsDT DTL ON HDR.strShpDocID = DTL.strShpDocID INNER JOIN tblCustomers CUST ON DTL.strCustName = CUST.strCustName '

	
	IF(@optCustomer = 1)
		BEGIN
			IF(@SelectedItems = 1)
				BEGIN
					SET @Query += ' WHERE (HDR.dteJournalDate BETWEEN '''+ @SQStart +''' AND '''+ @SQEnd +''') AND (CUST.strCustName IN (SELECT * FROM fnSplitStringAsTable('''+@SQCustName+''', '',''))) '
				END
		END
	ELSE
		BEGIN
			SET @Query += 'INNER JOIN tblDeliveryRoutes DEL ON DTL.strDelRouteCode = DEL.strDelRouteCode '
			IF(@SelectedItems = 1)
				BEGIN
					SET @Query += ' WHERE (HDR.dteJournalDate BETWEEN '''+ @SQStart +''' AND '''+ @SQEnd +''') AND (DEL.strDelRouteCode IN (SELECT * FROM fnSplitStringAsTable('''+@SQDelRouteCode+''', '',''))) '
				END
		END
	SET @Query += ' GROUP BY DTL.strPartNumber, DTL.strPartDesc ORDER BY DTL.strPartNumber'
EXEC sp_Executesql @Query
END
GO

CREATE PROCEDURE [dbo].[LoadProdJOB]
	(
	 @SQstrDocNumber NVARCHAR(MAX) = NULL
	)
	AS
	BEGIN
		
Select TOP 1 ISNULL(strInvWODocID,'') AS InvWODocID from tblProductionSchedule where strProdNumber = @SQstrDocNumber
END
GO

CREATE PROCEDURE [dbo].[UpdatetblJournalEntryDocApprovalPending] (
	@SQDocID VARCHAR(MAX)
	)
AS
BEGIN
	UPDATE tblJournalEntryDocApprovalPending SET bitPosted = 1 WHERE strJENo = @SQDocID
END
GO

CREATE PROCEDURE [dbo].[InserttblJournalEntryDocApprovalPending] (
	@SQstrReqQuoteDocID VARCHAR(MAX)
	,@SQstrNewPODocID VARCHAR(MAX)
	,@SQdecDocTotalIncl decimal
	,@SQstrDocCreatorUsername VARCHAR(MAX)
	,@SQstrApproverUsername VARCHAR(MAX)
	,@SQdteDocCreationDate DateTime
	,@SQdteDateofApproval DateTime
	,@SQstrDeclineReasonCodeText VARCHAR(MAX)
	,@SQblnShowStatus BIT
	)
AS
BEGIN
	INSERT INTO tblGLApprovalTracking VALUES (@SQstrReqQuoteDocID, @SQstrNewPODocID, @SQdecDocTotalIncl, @SQstrDocCreatorUsername, @SQstrApproverUsername, @SQdteDocCreationDate, @SQdteDateofApproval, @SQstrDeclineReasonCodeText, @SQblnShowStatus)
END
GO

CREATE PROCEDURE [dbo].[DeletetblJournalEntryDocApprovalPending] (
	@SQstrREName VARCHAR(MAX)
	
	)
AS
BEGIN
	DELETE FROM tblJournalEntryDocApprovalPending WHERE strJENo = @SQstrREName
END
GO

CREATE PROCEDURE [dbo].[InserttblJournalEntryDocApprovalPendings] 
(
	@REName as VARCHAR(MAX),
	@Comment as VARCHAR(MAX),
	@Currency as VARCHAR(MAX),
	@Posted as bit,
	@UserName as VARCHAR(MAX),
	@DateCreated as VARCHAR(MAX),
	@JournalDate as datetime
	)
AS
BEGIN
	INSERT INTO tblJournalEntryDocApprovalPending(strJENo,dteLastProcDate,strComment,strCurrency,bitPosted,strUserName,dteDateCreated,dteJournalDate) VALUES (@REName,NULL,@Comment,@Currency,@Posted,@UserName,@DateCreated,@JournalDate)
END
GO

CREATE PROCEDURE [dbo].[UpdatetblLastIDs] 
(
	@SQNum as bigint
	)
AS
BEGIN
	UPDATE tblLastIDs SET lngGLANumber = @SQNum
END
GO

CREATE PROCEDURE [dbo].[SaveRecordApprovaltblApprovalsDocLimit] (@SqlGRoupId AS NVARCHAR(max))
AS
BEGIN
	SELECT tblApprovalsDocLimit.*
	FROM tblPQApprovalsGroup --ID
	INNER JOIN tblApprovalsDocLimit ON tblApprovalsDocLimit.intApproverGroupId = tblPQApprovalsGroup.ID
	WHERE strGroupName = @SqlGRoupId
		AND tblPQApprovalsGroup.intApproverType = '3'
END
GO

CREATE PROCEDURE [dbo].[GetJournalEntryDocREDetailsForJELoadApprovalDoc]
@SQDocID as nvarchar(max)
AS
BEGIN
SELECT 
strJENo as ReName
,dteLastProcDate as LastProDate
,strComment as Comment
,strCurrency as Currency
,bitPosted as IsPosted 
,strUserName as UserName
,dteDateCreated as DateCreated,
dteJournalDate as JournalDate
FROM tblJournalEntryDocApprovalPending 
WHERE strJENo = @SQDocID
END
GO

CREATE procedure [dbo].[GetJournalEntryDocREDTLoadApprovalDoc]
@SQDocID as nvarchar(50)
as
begin
SELECT strJENo as ReName
,intModule as Module
,strCuVeGeID as CuVeGeID
,isnull(intGeDept,0)as GeDept
,strCuVeGeDesc as CuVeGeDesc
,strLineReference AS LineReference
,strLineComment AS LineComment
,decDebits as DebitValue
,decCredits as CreditValue 
,intGLNumber as GLNumber
,isnull(intDept,0) as Dept
,strDesc as [Description]
,intTaxType as TaxType
,decLineTotExc as LineTotExc
,decLineTaxAmt as LineTaxAmt
,decLineTotInc as LineTotInc
,strTaxCode as TaxCode
,imgTaxObj as TaxObj
,strFormula as Formula
,strCurrency as Currency
,decExchange as ExchangeValue
,bitForeignAcct as IsForeignAcct
,decDebitsF as DebitsF
,decCreditsF as CreditsF
,bitVerified as IsVerified
,isnull(intLineNo,0) as [LineNo],
(Select Count(*) From tblDocuments Where tblJournalEntryDocApprovalPendingDT.strJEno = tblDocuments.strDocumentNumber AND bitItemLine = 1 AND tblDocuments.intLineNo = tblJournalEntryDocApprovalPendingDT.intLineNo AND bitPosted=0) as DocCount FROM tblJournalEntryDocApprovalPendingDT WHERE strJENo = @SQDocID
end
GO

CREATE PROCEDURE [dbo].[GetPendingApprovelCount]
	
AS
BEGIN
	select Count(*) from tblJournalEntryDocApprovalPending where bitPosted = 0
END
GO

CREATE PROCEDURE [dbo].[JEUpdateApproverStatus](

@SqlStatus AS Int
,@SqlDocNumber AS NVARCHAR(50)
,@SqlGroupId AS Int
,@SqlUserName AS NVARCHAR(50)
)
	
AS
BEGIN
	update tblGLApprovalsUserTracking Set intApprovalStatus=@SqlStatus, rowUpdated =GETDATE()  where strOrdGLDocID=@SqlDocNumber And intApprovalStatus=0 And intGroupId=@SqlGroupId And strUserName=@SqlUserName
END
GO

CREATE PROCEDURE [dbo].[GetApprovalsDocLimitDataJE] (
@DocNumber NVARCHAR(100)
,@GroupId INT
,@ApproverType INT
)
AS
BEGIN
SET NOCOUNT ON;
BEGIN
SELECT strUserName AS UserName,PreferredNotification AS PreferredNotification,intApproverGroupId AS ApproverGroupId FROM tblApprovalsDocLimit WHERE priorityLevel =( SELECT MIN(tblApprovalsDocLimit.priorityLevel) FROM tblApprovalsDocLimit INNER JOIN tblGLApprovalsUserTracking ON tblApprovalsDocLimit.intApproverGroupId = tblGLApprovalsUserTracking.intGroupId AND tblApprovalsDocLimit.strUserName = tblGLApprovalsUserTracking.strUserName INNER JOIN tblJournalEntryDocApprovalPending ON tblGLApprovalsUserTracking.strOrdGLDocID = tblJournalEntryDocApprovalPending.strJENo WHERE tblGLApprovalsUserTracking.strOrdGLDocID = @DocNumber AND tblApprovalsDocLimit.intApproverGroupId = @GroupId AND tblGLApprovalsUserTracking.intApprovalStatus = 0 AND tblJournalEntryDocApprovalPending.bitPosted = 0) AND intApproverGroupId = @GroupId AND intApproverType = @ApproverType

END
END
GO

CREATE PROCEDURE [dbo].[GetRequsitionUserJE] (
@DocNumber NVARCHAR(100)
)
AS
BEGIN
SET NOCOUNT ON;
BEGIN
SELECT strUserName As UserName FROM tblJournalEntryDocApprovalPending WHERE strJENo = @DocNumber

END
END
GO


CREATE PROCEDURE [dbo].[GetPQApprovalsUserTrackingJE](
@ID int
)
AS
BEGIN
SELECT strUserName FROM tblPQApprovalsUserTracking WHERE ID = @ID
END
GO


CREATE PROCEDURE [dbo].[GetApproverDataJE] (@DocNumber NVARCHAR(100))
AS
BEGIN
SELECT strUserName AS UserName FROM tblJournalEntryDocApprovalPending WHERE strJENo=@DocNumber
END
go

CREATE PROCEDURE [dbo].[GetApprovalsDocLimitByApprovalGroupIDJE](
@GroupId int
)
AS
BEGIN
SELECT 
ID,
strUserName as UserName,
DocLimitIncl as DocLimitIncl,
PreferredNotification as PreferredNotification,
intApproverType as ApproverType,
intApproverGroupId as ApproverGroupId,
PriorityLevel AS PriorityLevel
from tblApprovalsDocLimit 
WHERE intApproverGroupId = @GroupId
END
GO

CREATE PROCEDURE [dbo].[GetApprovalJE]  
(  
@DocumenTotal AS VARCHAR(50)  ,
@ApproverType AS int,
@IsGL AS bit,
@DebitValue AS money
)  
AS  
BEGIN  
 
if(@IsGL = 1)
BEGIN
SELECT 
ID,
strGroupName as GroupName,
docLimitIncFrom,
docLimitIncTo,
intNotificationOrder as NotificationOrder
from tblPQApprovalsGroup 
where bitInactive=0 and docLimitIncFrom <= @DocumenTotal and  docLimitIncTo >=  @DocumenTotal and intApproverType = @ApproverType
END
 
ELSE
BEGIN
SELECT 
ID,
strGroupName as GroupName,
docLimitIncFrom,
docLimitIncTo,
intNotificationOrder as NotificationOrder
from tblPQApprovalsGroup 
where bitInactive=0 and docLimitIncFrom <= @DebitValue and  docLimitIncTo >= @DebitValue and intApproverType = @ApproverType
END
 
END
GO

CREATE PROCEDURE [dbo].[GetApprovalsDocLimitJE]  
(  
@DocNumber nvarchar(100)
)  
AS  
BEGIN
 
SELECT tblApprovalsDocLimit.* 
FROM tblApprovalsDocLimit 
INNER JOIN tblJournalEntryDoc_GLApprovals ON tblApprovalsDocLimit.intApproverGroupId = tblJournalEntryDoc_GLApprovals.intGroupId
WHERE tblJournalEntryDoc_GLApprovals.strJENo = @DocNumber
END
GO

CREATE PROCEDURE [dbo].[GetCurrentUserPriorityJE]  
(  
@DocNumber nvarchar(100)
)  
AS  
BEGIN
select 
MIN(tblApprovalsDocLimit.priorityLevel) as CurrentUserPriority, 
tblGLApprovalsUserTracking.intGroupId as GroupId
from tblGLApprovalsUserTracking 
inner join tblApprovalsDocLimit on tblGLApprovalsUserTracking.intGroupId = tblApprovalsDocLimit.intApproverGroupId 
and tblApprovalsDocLimit.strUserName = tblGLApprovalsUserTracking.strUserName 
where strOrdGLDocID=@DocNumber and intApprovalStatus=0 
group by tblGLApprovalsUserTracking.intGroupId
END
GO

CREATE PROCEDURE [dbo].[GetLastUserPriorityJE](  
@DocNumber nvarchar(100)
)  
AS  
BEGIN
select  
case when count(priorityLevel) = 0 then '0' else MAX(priorityLevel) end as LastUserPriority
from tblApprovalsDocLimit 
INNER JOIN tblJournalEntryDoc_GLApprovals ON tblApprovalsDocLimit.intApproverGroupId = tblJournalEntryDoc_GLApprovals.intGroupId INNER JOIN tblGLApprovalsUserTracking ON tblApprovalsDocLimit.strUserName = tblGLApprovalsUserTracking.strUserName WHERE tblJournalEntryDoc_GLApprovals.strJEno = @DocNumber AND tblGLApprovalsUserTracking.intApprovalStatus = 0 AND tblGLApprovalsUserTracking.strOrdGLDocID = @DocNumber
END
GO

CREATE PROCEDURE [dbo].[InsertOrdersDocPPOApprovalsJE](
@DocNumber NVARCHAR(200),
@GroupId int
)
AS
BEGIN
INSERT INTO tblJournalEntryDoc_GLApprovals (strJEno,numGLNApprovalStatus,intGroupId) VALUES (@DocNumber,0,@GroupId)
END
GO

CREATE PROCEDURE [dbo].[InsertPQApprovalsUserTrackingDataJE](
@DocNumber NVARCHAR(200),
@GroupId int,
@UserName NVARCHAR(200),
@Status int,
@Date DateTime
)
AS
BEGIN
INSERT INTO tblGLApprovalsUserTracking (strOrdGLDocID,intGroupId,strUserName,intApprovalStatus,rowUpdated) VALUES (@DocNumber,@GroupId,@UserName,@Status,@Date)
END
GO

create PROCEDURE [dbo].[GetOrdersDocPPOApprovalsJE](
@DocNumber NVARCHAR(200)
)
AS
BEGIN
SELECT * FROM tblJournalEntryDoc_GLApprovals WHERE strJEno=@DocNumber
END
GO

CREATE PROCEDURE [dbo].[UpdateOrdersDocPPOApprovalsJE](
@DocNumber NVARCHAR(200),
@GroupId int
)
AS
BEGIN
UPDATE tblJournalEntryDoc_GLApprovals set intGroupId=@GroupId where strJEno=@DocNumber
END
GO

create PROCEDURE [dbo].[JournalDocsListRefrshForm1]
AS
BEGIN
select strJENo as JENo,dteDateCreated As DateCreated,strComment As Comment from tblJournalEntryDocApprovalPending where bitPosted = 0 ORDER BY dteDateCreated
END
GO

CREATE PROCEDURE [dbo].[JournalDocsListRefrshForm2]
@IsCreditNote BIT 
AS
BEGIN
Select [strOrdDocID] AS JENo ,[dteSystemDate]  AS DateCreated,strReference AS Comment FROM tblOrderDoc WHERE bitCleared = 0 AND intDocType = 1 AND strOrdDocID like 'CR-%' and @IsCreditNote = 1

END
GO

CREATE PROCEDURE [dbo].[GetJournalEntryReportData2]
(
	@GLNumber AS NVARCHAR(MAX)
)
AS
BEGIN
	Select tblAccounts.strDesc As [Description] from tblAccounts Where intGLNumber=@GLNumber
END
GO

CREATE PROCEDURE [dbo].[GetDeclineResaonCodesWithDescription]
AS
BEGIN
SELECT  strAuthReasonCode , (strAuthReasonCode + ' - ' + strAuthReasonDesc) as strAuthReasonDesc FROM tblAuthorizeReasons(NOLOCK) WHERE bitInactive = 0 ORDER BY strAuthReasonCode
END
GO

CREATE PROCEDURE [dbo].[CheckCreditRequestAlreadyApproved] (@Number AS NVARCHAR(50))
AS
BEGIN
SELECT strDeclineReasonCodeText
FROM tblCNApprovalTracking
WHERE strCreditReqDocID = @Number
END
GO

CREATE PROCEDURE [dbo].[DsGetAllCRGLApprovers] 
AS
BEGIN
Select * from tblUsers(NOLOCK) where blnIsLockedOut=0
END
GO

CREATE PROCEDURE [dbo].[DsGetAllApproversGroups] (@Number AS INT)
AS
BEGIN
Select * from tblPQApprovalsGroup(NOLOCK) WHERE intApproverType = @Number
END
GO

CREATE PROCEDURE [dbo].[DsGetAllApproversGroupsSales] 
	@DocumenTotal AS VARCHAR(50)  
AS
BEGIN
	SELECT * FROM tblPQApprovalsGroup 
	WHERE CAST(@DocumenTotal as money)>= docLimitIncFrom and CAST(@DocumenTotal AS MONEY)<= docLimitIncTo
	and bitInactive=0  and intApproverType = 2
END
GO

CREATE PROCEDURE [dbo].[JournalDocsListRefrshForm2Sales]
@IsCreditNote BIT 
AS
BEGIN
Select Count(*) FROM tblOrderDoc WHERE bitCleared = 0 AND intDocType = 1 and strOrdDocID like 'CR-%' and  Cast(@IsCreditNote As varchar(50)) = 1
END
GO

CREATE PROCEDURE [dbo].[DeclineTrackingDatarecordSales]  
@SQDocID Varchar(20),   
@SQdteDateofApproval datetime,  
@SQdecDocTotalIncl decimal(8), 
@SQstrDocCreatorUsername varchar(50), 
@SQstrApproverUsername varchar(50), 
@SQdteDocCreationDate date, 
@SQstrDeclineReasonCodeText Nvarchar(MAX), 
@SQblnShowStatus bit

AS  
BEGIN  
SET NOCOUNT ON;  
UPDATE tblOrderDoc SET bitCleared = 1 WHERE strOrdDocID = @SQDocID

INSERT INTO tblCNApprovalTracking VALUES (@SQDocID, 
REPLACE(CONVERT(varchar, @SQdteDateofApproval, 101), '/', '') + REPLACE(CONVERT(varchar, @SQdteDateofApproval, 108), ':', ''), 
@SQdecDocTotalIncl, @SQstrDocCreatorUsername, @SQstrApproverUsername, @SQdteDocCreationDate, @SQdteDateofApproval, @SQstrDeclineReasonCodeText, @SQblnShowStatus)
END  
GO

CREATE PROCEDURE [dbo].[GetReferenceNumberSales] (
@DocNumber NVARCHAR(100)
)
AS
BEGIN
SET NOCOUNT ON;
BEGIN
Select TOP 1 strCreditReqDocID from tblCNApprovalTracking where strNewCNDocID = @DocNumber

END
END
GO

CREATE PROCEDURE [dbo].[CheckCreditRequestAlreadyApprovedSales] (@Number AS NVARCHAR(50))
AS
BEGIN
SELECT intGroupId
FROM tblOrdersDoc_CNApprovals
WHERE strOrdDocID = @Number
END
GO

CREATE PROCEDURE [dbo].[GetDataForNotificationSales] (@DocNumber AS NVARCHAR(50))
AS
BEGIN
SELECT tblOrderDoc.dteSystemDate AS CreatedDateTime
,tblOrderDoc.strUserName AS CreatedUserName
,tblOrderDoc.decTotal AS DocTotal
,tblUsers.strEmail AS Email
,tblUsers.strCellNumber AS CellNumber
,tblOrderDoc.strCustName AS VendNumber
,tblVendors.strVendDesc AS VendName
FROM tblOrderDoc
LEFT JOIN tblUsers ON tblOrderDoc.strUserName = tblUsers.strUserName
INNER JOIN tblVendors ON tblOrderDoc.strCustName = tblvendors.strVendName
WHERE tblOrderDoc.strOrdDocID = @DocNumber
END
GO

CREATE PROCEDURE [dbo].[GetApproverDataSales] (@ID int)
AS
BEGIN
SELECT strUserName  FROM tblCNApprovalsUserTracking WHERE ID = @ID
END
GO


CREATE PROCEDURE [dbo].[GetApproverDataSalesData] (@DocNumber NVARCHAR(100))  
AS  
BEGIN  
SELECT strUserName AS UserName,
	tblOrderDoc.strCustName AS SupplierNumber,
	tblCustomers.strCustDesc AS SupplierName 
FROM tblOrderDoc 
Left JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName 
WHERE strOrdDocID = @DocNumber
END 
GO

CREATE PROCEDURE [dbo].[InsertOrdersDocPPOApprovalsSales](
@DocNumber NVARCHAR(200),
@GroupId int
)
AS
BEGIN
INSERT INTO tblOrdersDoc_CNApprovals (strOrdDocID,numCNApprovalStatus,intGroupId) VALUES (@DocNumber,0,@GroupId)
END
GO

CREATE PROCEDURE [dbo].[InsertPQApprovalsUserTrackingDataSales](
@DocNumber NVARCHAR(200),
@GroupId int,
@UserName NVARCHAR(200),
@Status int,
@Date DateTime
)
AS
BEGIN
INSERT INTO tblCNApprovalsUserTracking (strOrdDocID,intGroupId,strUserName,intApprovalStatus,rowUpdated) VALUES (@DocNumber,@GroupId,@UserName,@Status,@Date)
END
GO

CREATE PROCEDURE [dbo].[GetOrdersDocPPOApprovalsSales](
@DocNumber NVARCHAR(200)
)
AS
BEGIN
SELECT * FROM tblOrdersDoc_CNApprovals WHERE strOrdDocID=@DocNumber
END
GO

CREATE PROCEDURE [dbo].[UpdateOrdersDocPPOApprovalsSales](
@DocNumber NVARCHAR(200),
@GroupId int
)
AS
BEGIN
UPDATE tblOrdersDoc_CNApprovals set intGroupId=@GroupId where strOrdDocID=@DocNumber
END
GO

CREATE PROCEDURE [dbo].[DeletePQApprovalsUserTrackingSales](
@DocNumber NVARCHAR(200),
@GroupId int
)
AS
BEGIN
DELETE FROM tblCNApprovalsUserTracking where strOrdDocID=@DocNumber AND intGroupId=@GroupId
END
GO

CREATE PROCEDURE [dbo].[GetUsersData] 
	@SQISInActive bit
	,@SQApproverType int
AS
BEGIN
	SELECT 
	dbo.tblUsers.strName as UserName, 
	dbo.tblApprovalsDocLimit.PreferredNotification as PreferredNotification, 
	dbo.tblApprovalsDocLimit.priorityLevel as PriorityLevel, 
	dbo.tblApprovalsDocLimit.intApproverGroupId as ApproverGroupId, 
	dbo.tblPQApprovalsGroup.strGroupName as GroupName, 
	dbo.tblPQApprovalsGroup.docLimitIncFrom as DocLimitInclFrom, 
	dbo.tblPQApprovalsGroup.docLimitIncTo as DocLimitInclTo, 
	tblPQApprovalsGroup.bitInactive as IsInActive 
	FROM dbo.tblApprovalsDocLimit 
	INNER JOIN dbo.tblPQApprovalsGroup ON dbo.tblPQApprovalsGroup.ID = dbo.tblApprovalsDocLimit.intApproverGroupId 
	INNER JOIN dbo.tblUsers on dbo.tblUsers.strUserName = dbo.tblApprovalsDocLimit.strUserName 
	WHERE tblPQApprovalsGroup.bitInactive in (0,@SQISInActive) AND tblPQApprovalsGroup.intApproverType = @SQApproverType
END
GO

CREATE PROCEDURE [dbo].[GetGroupsData] 
	@SQInactive bit
	,@SQApproverType int
AS
BEGIN
	SELECT 
	dbo.tblPQApprovalsGroup.ID as ID,
	dbo.tblPQApprovalsGroup.strGroupName as GroupName,
	dbo.tblPQApprovalsGroup.docLimitIncFrom as DocLimitInclFrom,
	dbo.tblPQApprovalsGroup.docLimitIncTo as DocLimitInclTo,
	( CASE WHEN dbo.tblPQApprovalsGroup.intNotificationOrder = 1 THEN 'Simultaneously' WHEN dbo.tblPQApprovalsGroup.intNotificationOrder = 2 THEN 'Consecutively' ELSE 'Simultaneously' END) AS NotificationOrder ,
	COUNT(*) AS Count,
	tblPQApprovalsGroup.bitInactive as IsInActive   
	FROM dbo.tblPQApprovalsGroup 
	INNER JOIN dbo.tblApprovalsDocLimit ON dbo.tblApprovalsDocLimit.intApproverGroupId = dbo.tblPQApprovalsGroup.ID 
	WHERE tblPQApprovalsGroup.bitInactive in (0,@SQInactive) AND tblPQApprovalsGroup.intApproverType = @SQApproverType
	GROUP BY dbo.tblPQApprovalsGroup.ID ,dbo.tblPQApprovalsGroup.strGroupName ,dbo.tblPQApprovalsGroup.docLimitIncFrom ,
	dbo.tblPQApprovalsGroup.intNotificationOrder ,dbo.tblPQApprovalsGroup.docLimitIncTo,tblPQApprovalsGroup.bitInactive
END
GO

CREATE PROCEDURE [dbo].[DsGetAllPQApprovers] 
AS
BEGIN
Select * from tblUsers where blnAPSetupPOApprovers = 1 AND (blnApprovePurchaseOrders = 1) AND blnIsLockedOut=0
END
GO


CREATE PROCEDURE [dbo].[PQValidateControlsData] 
	@SQLGroupName Varchar(MAX)
AS
BEGIN
	 SELECT ID As ID
	  ,strGroupName As GroupName
	  ,docLimitIncFrom As LimitIncFrom
	  ,docLimitIncTo As LimitIncTo
	  ,intNotificationOrder As NotificationOrder
	  ,bitInactive As Inactive
	  ,intApproverType As ApproverType
	  
	  FROM dbo.tblPQApprovalsGroup WHERE UPPER(strGroupName) = @SQLGroupName
END
GO

CREATE PROCEDURE [dbo].[PQValidateControlsDataID] 
	@SQLGroupName Varchar(MAX)
	,@EditGroupId Int
AS
BEGIN
	  SELECT ID As ID
	  ,strGroupName As GroupName
	  ,docLimitIncFrom As LimitIncFrom
	  ,docLimitIncTo As LimitIncTo
	  ,intNotificationOrder As NotificationOrder
	  ,bitInactive As Inactive
	  ,intApproverType As ApproverType	  
	  FROM dbo.tblPQApprovalsGroup WHERE UPPER(strGroupName) = @SQLGroupName AND ID <> @EditGroupId 

END
GO

CREATE PROCEDURE [dbo].[LoadControlsGridData]  
 @EditGroupId Int  
AS  
BEGIN  
   SELECT intApproverGroupId As ID  
	,strUserName As GroupName  
	,DocLimitIncl As LimitIncFrom  
	,PreferredNotification As [Notification]  
	,intApproverType as ApproverType 
	,priorityLevel As [Priority] 
	,strUserName as Username
   FROM dbo.tblApprovalsDocLimit 
   WHERE intApproverGroupId = @EditGroupId   
END  
GO

CREATE PROCEDURE [dbo].[InsertPQOkclick](
@SqlGroupName NVARCHAR(200),
@SqlDocLimitFrom MONEY,
@SqlDocLimitTo MONEY,
@SqlNotifiactionOrder int,
@sqlInactive bit,
@sqlApproverType int
)
AS
BEGIN
INSERT INTO dbo.tblPQApprovalsGroup( strGroupName , docLimitIncFrom , docLimitIncTo , intNotificationOrder, bitInactive, intApproverType) OUTPUT INSERTED.ID VALUES ( @SqlGroupName , @SqlDocLimitFrom , @SqlDocLimitTo , @SqlNotifiactionOrder, @sqlInactive,@sqlApproverType)

select ID, * from tblPQApprovalsGroup where strGroupName = @SqlGroupName
END
GO

CREATE PROCEDURE [dbo].[UpdatePQOkclick](
@SqlGroupName NVARCHAR(200),
@SqlDocLimitFrom MONEY,
@SqlDocLimitTo MONEY,
@SqlNotifiactionOrder int,
@sqlInactive bit,
@SqlGroupId  int,
@SqlapproverType int
)
AS
BEGIN
UPDATE dbo.tblPQApprovalsGroup 
SET strGroupName=@SqlGroupName, docLimitIncFrom=@SqlDocLimitFrom, docLimitIncTo=@SqlDocLimitTo, intNotificationOrder=@SqlNotifiactionOrder, bitInactive=@sqlInactive, intApproverType = @SqlapproverType  WHERE ID=@SqlGroupId
END
GO

CREATE PROCEDURE [dbo].[InsertAddNewApproverPQOkclick](
@SqlUserName NVARCHAR(200),
@SqlDocLimitIncl decimal,
@SqlNotification NVARCHAR(200),
@sqlApproverType int,
@SqlGroupId int,
@SqlPriorityLevel int
)
AS
BEGIN
INSERT INTO dbo.tblApprovalsDocLimit( strUserName , DocLimitIncl , PreferredNotification , intApproverType , intApproverGroupId , priorityLevel) VALUES ( @SqlUserName , @SqlDocLimitIncl , @SqlNotification , @sqlApproverType , @SqlGroupId , @SqlPriorityLevel )
END
GO

CREATE PROCEDURE [dbo].[GetApproversListSales] (@DocNumber NVARCHAR(100))
AS
BEGIN
	SET NOCOUNT ON;

	BEGIN
		SELECT tblCNApprovalsUserTracking.ID AS ApprovalStatusId
			,tblPQApprovalsGroup.strGroupName AS GroupName
			,tblUsers.strName AS ApproverName
			,tblCNApprovalsUserTracking.intApprovalStatus AS IntApprovalStatus
			,tblCNApprovalsUserTracking.rowUpdated AS RowUpdated
			,(
				SELECT tblApprovalsDocLimit.PreferredNotification
				FROM tblApprovalsDocLimit
				WHERE intApproverGroupId = tblPQApprovalsGroup.ID
					AND tblApprovalsDocLimit.strUserName = tblCNApprovalsUserTracking.strUserName
				) AS [Notification]
		FROM tblOrdersDoc_CNApprovals
		INNER JOIN tblPQApprovalsGroup ON tblPQApprovalsGroup.ID = tblOrdersDoc_CNApprovals.intGroupId
		INNER JOIN tblCNApprovalsUserTracking ON tblOrdersDoc_CNApprovals.strOrdDocID = tblCNApprovalsUserTracking.strOrdDocID
		INNER JOIN tblUsers ON tblCNApprovalsUserTracking.strUserName = tblUsers.strUserName
		WHERE tblOrdersDoc_CNApprovals.strOrdDocID = @DocNumber
	END
END
GO

CREATE PROCEDURE [dbo].[InsertUpdateVendorContacts] @ID BIGINT
	,@Name NVARCHAR(400)
	,@VendorName NVARCHAR(100)
	,@JobTitle BIGINT
	,@Email NVARCHAR(300)
	,@Telephone NVARCHAR(40)
	,@Fax NVARCHAR(40)
	,@CellPhone NVARCHAR(40)
	,@Street1 NVARCHAR(200)
	,@Street2 NVARCHAR(200)
	,@City NVARCHAR(100)
	,@Province NVARCHAR(100)
	,@Postal NVARCHAR(40)
	,@Notes NVARCHAR(MAX)
	,@Facebook NVARCHAR(100)
	,@LinkedIn NVARCHAR(100)
	,@Skype NVARCHAR(100)
	,@Picture IMAGE = NULL
	,@IsEdit BIT
AS
BEGIN
	IF @IsEdit = 0
	BEGIN
		INSERT INTO dbo.tblVendorContacts (
			strName
			,strVendName
			,intJobTitle
			,strEmail
			,strTel
			,strFax
			,strCell
			,strStreet1
			,strStreet2
			,strCity
			,strProvince
			,strPostal
			,strNotes
			,strFacebook
			,strLinkedIn
			,strSkype
			,imgPicture
			)
		VALUES (
			@Name
			,-- strName - nvarchar(200)  
			@VendorName
			,-- strCustName - nvarchar(50)  
			@JobTitle
			,-- intJobTitle - bigint  
			@Email
			,-- strEmail - nvarchar(150)  
			@Telephone
			,-- strTel - nvarchar(20)  
			@Fax
			,-- strFax - nvarchar(20)  
			@CellPhone
			,-- strCell - nvarchar(20)  
			@Street1
			,-- strStreet1 - nvarchar(100)  
			@Street2
			,-- strStreet2 - nvarchar(100)  
			@City
			,-- strCity - nvarchar(50)  
			@Province
			,-- strProvince - nvarchar(50)  
			@Postal
			,-- strPostal - nvarchar(20)  
			@Notes
			,-- strNotes - varchar(max)  
			@Facebook
			,-- strFacebook - nvarchar(50)  
			@LinkedIn
			,-- strLinkedIn - nvarchar(50)  
			@Skype
			,-- strSkype - nvarchar(50)  
			CASE 
				WHEN convert(VARBINARY(max), @Picture) = 0x
					THEN NULL
				ELSE @Picture
				END -- imgPicture - image  
			--,imgPicture = case when convert(varbinary(max),@SQimgPicture)  =0x then null else @SQimgPicture  
			);
	END
	ELSE
	BEGIN
		UPDATE dbo.tblVendorContacts
		SET strName = @Name
			,strVendName = @VendorName
			,intJobTitle = @JobTitle
			,strEmail = @Email
			,strTel = @Telephone
			,strFax = @Fax
			,strCell = @CellPhone
			,strStreet1 = @Street1
			,strStreet2 = @Street2
			,strCity = @City
			,strProvince = @Province
			,strPostal = @Postal
			,strNotes = @Notes
			,strFacebook = @Facebook
			,strLinkedIn = @LinkedIn
			,strSkype = @Skype
			,
			--imgPicture = @Picture  
			imgPicture = CASE 
				WHEN convert(VARBINARY(max), @Picture) = 0x
					THEN NULL
				ELSE @Picture
				END
		WHERE lngID = @ID
	END
END
GO

CREATE PROCEDURE [dbo].[GetReportRptListBudgetIncomeDeptLoadQuery1] @SQDept NVARCHAR(MAX)
	,@optCurrentYear_IsChecked AS BIT
	,@CostOfGoodsSold AS INT
	,@InterestExpense AS INT
	,@IncomeTaxExpense AS INT
	,@Revenue AS INT
	,@OperatingRevenue AS INT
	,@intOINum AS INT
	,@Expense AS INT
	,@SQStart DATE
	,@SQFinish DATE
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1
	BEGIN
		SELECT tblAccounts.intGLNumber
			,strDesc
			,intAccType
			,intGroupCode
			,
			--ISNULL((SELECT decOpenBalance FROM tblAccountsDept WHERE intGLNumber = tblAccounts.intGLNumber AND intDept = @SQDept),0),
			ISNULL(tblAccountsDept.decOpenBalance, 0) as decOpenBalance
			,intAccClass
			,'GroupSeq' = CASE 
				WHEN intAccClass = @CostOfGoodsSold
					THEN 1
				WHEN intAccClass = @InterestExpense
					THEN 4
				WHEN intAccClass = @IncomeTaxExpense
					THEN 5
				WHEN intAccType = @Revenue
					AND intAccClass = @OperatingRevenue
					THEN 0
				WHEN intAccType = @Revenue
					THEN @intOINum
				WHEN intAccType = @Expense
					THEN 3
				ELSE NULL
				END
			,intDept
		FROM tblAccounts
		LEFT JOIN tblAccountsDept ON tblAccounts.intGLNumber = tblAccountsDept.intGLNumber
		WHERE (intAccType >= 4)
			AND ISNULL(intDept, 0) IN (
				SELECT CAST(Value AS INT)
				FROM [fnSplitStringAsTable]((@SQDept), (','))
				)
		ORDER BY GroupSeq
			,intAccType
			,intAccClass
			,tblAccounts.intGLNumber

		SELECT tblJournalEnt.intGLNumber
			,SUM(tblJournalEnt.decAmount) as decAmount
			,tblJournalEnt.intDept
		FROM tblJournalEnt
		INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
		WHERE (tblJournal.dteJournalDate >= @SQStart)
			AND (tblJournal.dteJournalDate <= @SQFinish)
			AND (
				tblJournalEnt.intDept IN (
					SELECT CAST(Value AS INT)
					FROM [fnSplitStringAsTable]((@SQDept), (','))
					)
				)
		GROUP BY tblJournalEnt.intGLNumber
			,tblJournalEnt.intDept
	END
	ELSE
	BEGIN
		SELECT tblAccountsLY.intGLNumber
			,strDesc
			,intAccType
			,intGroupCode
			,
			--ISNULL((SELECT decOpenBalance FROM tblAccountsDeptLY WHERE intGLNumber = tblAccountsLY.intGLNumber AND intDept = @SQDept),0), 
			ISNULL(tblAccountsDept.decOpenBalance, 0) as decOpenBalance
			,intAccClass
			,'GroupSeq' = CASE 
				WHEN intAccClass = @CostOfGoodsSold
					THEN 1
				WHEN intAccClass = @InterestExpense
					THEN 4
				WHEN intAccClass = @IncomeTaxExpense
					THEN 5
				WHEN intAccType = @Revenue
					AND intAccClass = @OperatingRevenue
					THEN 0
				WHEN intAccType = @Revenue
					THEN @intOINum
				WHEN intAccType = @Expense
					THEN 3
				ELSE NULL
				END
			,intDept
		FROM tblAccountsLY
		LEFT JOIN tblAccountsDept ON tblAccountsLY.intGLNumber = tblAccountsDept.intGLNumber
		WHERE (intAccType >= 4)
			AND ISNULL(intDept, 0) IN (
				SELECT CAST(Value AS INT)
				FROM [fnSplitStringAsTable]((@SQDept), (','))
				)
		ORDER BY GroupSeq
			,intAccType
			,intAccClass
			,tblAccountsLY.intGLNumber

		SELECT tblJournalEntLY.intGLNumber 
			,SUM(tblJournalEntLY.decAmount) AS decAmount
			,tblJournalEntLY.intDept
		FROM tblJournalEntLY
		INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
		WHERE (tblJournalLY.dteJournalDate >= @SQStart)
			AND (tblJournalLY.dteJournalDate <= @SQFinish)
			AND (
				tblJournalEntLY.intDept IN (
					SELECT CAST(Value AS INT)
					FROM [fnSplitStringAsTable]((@SQDept), (','))
					)
				)
		GROUP BY tblJournalEntLY.intGLNumber
			,tblJournalEntLY.intDept
	END
END
GO

CREATE PROCEDURE [dbo].[GetRptListBudgetIncomeDeptLoadQueryMultiDept] @SQDept NVARCHAR(MAX)
	,@SQGLNumber NVARCHAR(MAX)
	,@SQBudgetName NVARCHAR(100)
	,@intBudPeriodStart INT
	,@intBudPeriodEnds INT
AS
BEGIN
	CREATE TABLE #Temp (
		intDept NVARCHAR(200)
		,
		)

	DECLARE @intAcct AS NVARCHAR(MAX)
	DECLARE @intGroupNumber AS INT = 0
	DECLARE @tbl_IMPORT TABLE (
		SQGLNumber VARCHAR(100)
		,SQDept VARCHAR(100)
		,decBudget DECIMAL(18, 2)
		)
	DECLARE @tbl_temp1 TABLE ([strCOL01] [varchar](MAX) DEFAULT '')

	INSERT INTO #Temp
	SELECT CAST(Value AS INT)
	FROM [fnSplitStringAsTable]((@SQDept), (','))

	DECLARE @ROW AS INTEGER
	DECLARE @intDeptTemp AS INTEGER
	DECLARE @SQDeptCur AS INTEGER

	DECLARE db_cursor CURSOR
	FOR
	SELECT intDept
	FROM #Temp

	OPEN db_cursor

	FETCH NEXT
	FROM db_cursor
	INTO @intDeptTemp

	SET @ROW = 1

	WHILE @@FETCH_STATUS = 0
	BEGIN
		IF @ROW <= (
				SELECT count(*)
				FROM #Temp
				)
		BEGIN
			SET @SQDeptCur = @intDeptTemp

			DECLARE @intDeptCur AS INTEGER
			DECLARE @decBudget AS DECIMAL(18, 2)

			DECLARE @Acct_CUR CURSOR SET @Acct_CUR = CURSOR
			FOR
			SELECT [Value]
			FROM [dbo].[fnSplitStringAsTable](@SQGLNumber, '~')

			OPEN @Acct_CUR

			FETCH NEXT
			FROM @Acct_CUR
			INTO @intAcct

			WHILE @@FETCH_STATUS = 0
			BEGIN
				SET @intGroupNumber += 1
				SET @decBudget = 0

				DECLARE @ColCount INT
				DECLARE @Dept INT

				SET @ColCount = @intBudPeriodStart

				WHILE @ColCount <= (@intBudPeriodEnds)
				BEGIN
					SELECT @Dept = IsNULL(intDept, @SQDeptCur)
						,@decBudget = @decBudget + CASE @ColCount
							WHEN 1
								THEN decPeriod1
							WHEN 2
								THEN decPeriod2
							WHEN 3
								THEN decPeriod3
							WHEN 4
								THEN decPeriod4
							WHEN 5
								THEN decPeriod5
							WHEN 6
								THEN decPeriod6
							WHEN 7
								THEN decPeriod7
							WHEN 8
								THEN decPeriod8
							WHEN 9
								THEN decPeriod9
							WHEN 10
								THEN decPeriod10
							WHEN 11
								THEN decPeriod11
							WHEN 12
								THEN decPeriod12
							ELSE 0
							END
					FROM tblDeptMultiBudgets
					WHERE intGLNumber = @intAcct
						AND intDept = @SQDeptCur
						AND DeptBudgetName = @SQBudgetName --in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept), (',')) )

					SET @ColCount = @ColCount + 1
				END

				INSERT INTO @tbl_IMPORT (
					SQGLNumber
					,SQDept
					,decBudget
					)
				VALUES (
					@intAcct
					,@SQDeptCur
					,@decBudget
					)

				FETCH NEXT
				FROM @Acct_CUR
				INTO @intAcct
			END

			SET @ROW = @ROW + 1
		END

		CLOSE @Acct_CUR

		DEALLOCATE @Acct_CUR

		FETCH NEXT
		FROM db_cursor
		INTO @intDeptTemp
	END

	CLOSE db_cursor

	DEALLOCATE db_cursor

	SELECT *
	FROM @tbl_IMPORT
END
GO

CREATE PROCEDURE UpdatetblinvForecastDetails (
	@OrderLeadTime DECIMAL
	,@SafetyFactorPer DECIMAL
	,@DaysSalesinStock DECIMAL
	,@PartNumber VARCHAR(255)
	)
AS
BEGIN
	UPDATE tblInv
	SET decOrderLeadTime = @OrderLeadTime
		,decSafetyFactorPer = @SafetyFactorPer
		,decDaysSalesinStock = @DaysSalesinStock
	WHERE strPartNumber = @PartNumber;
END
GO

CREATE PROCEDURE [dbo].[DsGetAllIRApproversforGridBind]
AS
BEGIN
	SELECT POD.ID
		,U.strName
		,POD.strUserName
		,POD.DocLimitIncl
		,POD.PreferredNotification
	FROM tblApprovalsDocLimit(NOLOCK) POD
	INNER JOIN tblUsers(NOLOCK) U ON U.strUserName = POD.strUserName
	WHERE POD.intApproverType = 1
END
GO


CREATE PROCEDURE [dbo].[InsertUpdateFormNumbers]
@SONumber AS bigint 
,@QuoteNumber AS bigint 
,@InvNumber AS bigint 
,@PONumber AS bigint 
,@PINumber AS bigint 
,@RCNumber AS bigint 
,@DPNumber AS bigint 
,@JENumber AS bigint 
,@CNNumber AS bigint 
,@DNNumber AS bigint 
,@RQNumber AS bigint 
,@QuSysNumber AS bigint 
,@GVNumber AS bigint 
,@TKNumber AS bigint 
,@SHNumber AS bigint 
,@MSNumber AS bigint 
,@CRNumber AS bigint 
,@RFQNumber AS bigint 
,@PSNumber AS bigint 
,@DANumber AS bigint 
,@WONumber AS bigint 
,@JBNumber AS bigint 
,@WPNumber AS bigint 
,@IWONumber AS bigint 
,@PYNumber AS bigint 
,@CBNumber AS bigint 
,@PRONumber AS bigint 
,@BMNumber AS bigint 
,@BMINumber AS bigint 
,@XMLATNumber AS bigint 
,@XMLRXNumber AS bigint 
,@XMLOXNumber AS bigint 
,@SINumber AS bigint 
,@PJBNumber AS bigint 
,@WQNumber AS bigint 
,@IRNumber AS bigint 
,@IJBNumber AS bigint 
,@LBNumber AS bigint 
,@GLANumber AS bigint 
,@IsEditedSONumber  AS bit = 0 
,@IsEditedQuoteNumber AS bit = 0 
,@IsEditedInvNumber AS bit = 0 
,@IsEditedPONumber AS bit = 0 
,@IsEditedPINumber AS bit = 0 
,@IsEditedRCNumber AS bit = 0 
,@IsEditedDPNumber AS bit = 0 
,@IsEditedJENumber AS bit = 0 
,@IsEditedCNNumber AS bit = 0 
,@IsEditedDNNumber AS bit = 0 
,@IsEditedRQNumber AS bit = 0 
,@IsEditedQuSysNumber  AS bit = 0 
,@IsEditedGVNumber AS bit = 0 
,@IsEditedTKNumber AS bit = 0 
,@IsEditedSHNumber AS bit = 0 
,@IsEditedMSNumber AS bit = 0 
,@IsEditedCRNumber AS bit = 0 
,@IsEditedRFQNumber AS bit = 0 
,@IsEditedPSNumber AS bit = 0 
,@IsEditedDANumber AS bit = 0 
,@IsEditedWONumber AS bit = 0 
,@IsEditedJBNumber AS bit = 0 
,@IsEditedWPNumber AS bit = 0 
,@IsEditedIWONumber AS bit = 0 
,@IsEditedPYNumber AS bit = 0 
,@IsEditedCBNumber AS bit = 0 
,@IsEditedPRONumber AS bit = 0 
,@IsEditedBMNumber AS bit = 0 
,@IsEditedBMINumber AS bit = 0 
,@IsEditedXMLATNumber AS bit = 0 
,@IsEditedXMLRXNumber AS bit = 0 
,@IsEditedXMLOXNumber AS bit = 0 
,@IsEditedSINumber AS bit = 0 
,@IsEditedPJBNumber AS bit = 0 
,@IsEditedWQNumber AS bit = 0 
,@IsEditedIRNumber AS bit = 0 
,@IsEditedIJBNumber AS bit = 0 
,@IsEditedLBNumber AS bit = 0 
,@IsEditedGLANumber AS bit = 0 
AS
BEGIN
	
	If(EXISTS (Select * from tblLastIDs))
	BEGIN
		
		UPDATE tblLastIDs SET lngSONumber = CASE WHEN @IsEditedSONumber = 1 THEN @SONumber ELSE lngSONumber END
		UPDATE tblLastIDs SET lngQuoteNumber = CASE WHEN @IsEditedQuoteNumber = 1 THEN @QuoteNumber ELSE lngQuoteNumber END
		UPDATE tblLastIDs SET lngInvNumber = CASE WHEN @IsEditedInvNumber = 1 THEN @InvNumber ELSE lngInvNumber END
		UPDATE tblLastIDs SET lngPONumber = CASE WHEN @IsEditedPONumber = 1 THEN @PONumber ELSE lngPONumber END
		UPDATE tblLastIDs SET lngPINumber = CASE WHEN @IsEditedPINumber = 1 THEN @PINumber ELSE lngPINumber END
		UPDATE tblLastIDs SET lngRCNumber = CASE WHEN @IsEditedRCNumber = 1 THEN @RCNumber ELSE lngRCNumber END
		UPDATE tblLastIDs SET lngDPNumber = CASE WHEN @IsEditedDPNumber = 1 THEN @DPNumber ELSE lngDPNumber END
		UPDATE tblLastIDs SET lngJENumber = CASE WHEN @IsEditedJENumber = 1 THEN @JENumber ELSE lngJENumber END
		UPDATE tblLastIDs SET lngCNNumber = CASE WHEN @IsEditedCNNumber = 1 THEN @CNNumber ELSE lngCNNumber END
		UPDATE tblLastIDs SET lngDNNumber = CASE WHEN @IsEditedDNNumber = 1 THEN @DNNumber ELSE lngDNNumber END
		UPDATE tblLastIDs SET lngRQNumber = CASE WHEN @IsEditedRQNumber = 1 THEN @RQNumber ELSE lngRQNumber END
		UPDATE tblLastIDs SET lngQuSysNumber = CASE WHEN @IsEditedQuSysNumber = 1 THEN @QuSysNumber ELSE lngQuSysNumber END
		UPDATE tblLastIDs SET lngGVNumber = CASE WHEN @IsEditedGVNumber = 1 THEN @GVNumber ELSE lngGVNumber END
		UPDATE tblLastIDs SET lngTKNumber = CASE WHEN @IsEditedTKNumber = 1 THEN @TKNumber ELSE lngTKNumber END
		UPDATE tblLastIDs SET lngSHNumber = CASE WHEN @IsEditedSHNumber = 1 THEN @SHNumber ELSE lngSHNumber END
		UPDATE tblLastIDs SET lngMSNumber = CASE WHEN @IsEditedMSNumber = 1 THEN @MSNumber ELSE lngMSNumber END
		UPDATE tblLastIDs SET lngCRNumber = CASE WHEN @IsEditedCRNumber = 1 THEN @CRNumber ELSE lngCRNumber END
		UPDATE tblLastIDs SET lngRFQNumber = CASE WHEN @IsEditedRFQNumber = 1 THEN @RFQNumber ELSE lngRFQNumber END
		UPDATE tblLastIDs SET lngPSNumber = CASE WHEN @IsEditedPSNumber = 1 THEN @PSNumber ELSE lngPSNumber END
		UPDATE tblLastIDs SET lngDANumber = CASE WHEN @IsEditedDANumber = 1 THEN @DANumber ELSE lngDANumber END
		UPDATE tblLastIDs SET lngWONumber = CASE WHEN @IsEditedWONumber = 1 THEN @WONumber ELSE lngWONumber END
		UPDATE tblLastIDs SET lngJBNumber = CASE WHEN @IsEditedJBNumber = 1 THEN @JBNumber ELSE lngJBNumber END
		UPDATE tblLastIDs SET lngWPNumber = CASE WHEN @IsEditedWPNumber = 1 THEN @WPNumber ELSE lngWPNumber END
		UPDATE tblLastIDs SET lngIWONumber = CASE WHEN @IsEditedIWONumber = 1 THEN @IWONumber ELSE lngIWONumber END
		UPDATE tblLastIDs SET lngPYNumber = CASE WHEN @IsEditedPYNumber = 1 THEN @PYNumber ELSE lngPYNumber END
		UPDATE tblLastIDs SET lngCBNumber = CASE WHEN @IsEditedCBNumber = 1 THEN @CBNumber ELSE lngCBNumber END
		UPDATE tblLastIDs SET lngPRONumber = CASE WHEN @IsEditedPRONumber = 1 THEN @PRONumber ELSE lngPRONumber END
		UPDATE tblLastIDs SET lngBMNumber = CASE WHEN @IsEditedBMNumber = 1 THEN @BMNumber ELSE lngBMNumber END
		UPDATE tblLastIDs SET lngBMINumber = CASE WHEN @IsEditedBMINumber = 1 THEN @BMINumber ELSE lngBMINumber END
		UPDATE tblLastIDs SET lngXMLATNumber = CASE WHEN @IsEditedXMLATNumber = 1 THEN @XMLATNumber ELSE lngXMLATNumber END
		UPDATE tblLastIDs SET lngXMLRXNumber = CASE WHEN @IsEditedXMLRXNumber = 1 THEN @XMLRXNumber ELSE lngXMLRXNumber END
		UPDATE tblLastIDs SET lngXMLOXNumber = CASE WHEN @IsEditedXMLOXNumber = 1 THEN @XMLOXNumber ELSE lngXMLOXNumber END
		UPDATE tblLastIDs SET lngSINumber = CASE WHEN @IsEditedSINumber = 1 THEN @SINumber ELSE lngSINumber END
		UPDATE tblLastIDs SET lngPJBNumber = CASE WHEN @IsEditedPJBNumber = 1 THEN @PJBNumber ELSE lngPJBNumber END
		UPDATE tblLastIDs SET lngWQNumber = CASE WHEN @IsEditedWQNumber = 1 THEN @WQNumber ELSE lngWQNumber END
		UPDATE tblLastIDs SET lngIRNumber = CASE WHEN @IsEditedIRNumber = 1 THEN @IRNumber ELSE lngIRNumber END
		UPDATE tblLastIDs SET lngIJBNumber = CASE WHEN @IsEditedIJBNumber = 1 THEN @IJBNumber ELSE lngIJBNumber END
		UPDATE tblLastIDs SET lngLBNumber = CASE WHEN @IsEditedLBNumber = 1 THEN @LBNumber ELSE lngLBNumber END
		UPDATE tblLastIDs SET lngGLANumber = CASE WHEN @IsEditedGLANumber = 1 THEN @GLANumber ELSE lngGLANumber END

	END
	ELSE
	BEGIN
		INSERT INTO tblLastIDs( lngSONumber,lngQuoteNumber,lngInvNumber,lngPONumber,lngPINumber,lngRCNumber,lngDPNumber,lngJENumber,lngCNNumber,lngDNNumber,lngRQNumber,lngQuSysNumber,lngGVNumber,lngTKNumber,lngSHNumber,lngMSNumber,lngCRNumber,lngRFQNumber,lngPSNumber
		,lngDANumber,lngWONumber,lngJBNumber,lngWPNumber,lngIWONumber,lngPYNumber,lngCBNumber,lngPRONumber,lngBMNumber,lngBMINumber,lngXMLATNumber,lngXMLRXNumber,lngXMLOXNumber,lngSINumber,lngPJBNumber,lngWQNumber,lngIRNumber,lngIJBNumber,lngLBNumber,lngGLANumber)
		VALUES ( @SONumber,@QuoteNumber,@InvNumber,@PONumber,@PINumber,@RCNumber,@DPNumber,@JENumber,@CNNumber,@DNNumber,@RQNumber,@QuSysNumber,@GVNumber,@TKNumber,@SHNumber,@MSNumber,@CRNumber,@RFQNumber,@PSNumber
		,@DANumber,@WONumber,@JBNumber,@WPNumber,@IWONumber,@PYNumber,@CBNumber,@PRONumber,@BMNumber,@BMINumber,@XMLATNumber,@XMLRXNumber,@XMLOXNumber,@SINumber,@PJBNumber,@WQNumber,@IRNumber,@IJBNumber,@LBNumber,@GLANumber)
	END
END
GO

CREATE PROCEDURE [dbo].[UpdateWebStoreItem] @InvWebStoreData InvWebStoreTableType READONLY
AS
BEGIN
	UPDATE Inv
	SET bitWebstoreItem = InvWeb.WebstoreItem
		,dteLastUpdated = Getdate()
		,dteWebStoreItemUpdated = CASE 
			WHEN InvWeb.WebstoreItemCheck = 1
				THEN GETDATE()
			ELSE NULL
			END
	FROM tblInv Inv
	INNER JOIN @InvWebStoreData InvWeb ON Inv.strPartNumber = InvWeb.PartNumber AND InvWeb.WebstoreItem <> InvWeb.WebstoreItemCheck
END
GO

CREATE PROCEDURE [dbo].[GeInvPriceData] (
	@PartNumber NVARCHAR(MAX)
	,@Pricelist NVARCHAR(MAX)
	,@PriceBasedId UNIQUEIDENTIFIER
	,@Selling MONEY
	)
AS
BEGIN
	UPDATE tblInvPrice
	SET decSelling = @Selling
	WHERE (strPartNumber = @PartNumber)
		AND (strPricelist = @Pricelist)
		AND (uidPriceBasedID = @PriceBasedId)

	SELECT strPartNumber AS PartNumber
		,*
	FROM tblInvPrice
	WHERE strPartNumber = @PartNumber
		AND strPricelist = @Pricelist
		AND uidPriceBasedID = @PriceBasedId
END
GO

CREATE PROCEDURE [dbo].[DSGetUserNamesForIR]
AS
BEGIN
	SELECT strName
		,strUserName
	FROM tblUsers(NOLOCK)
	WHERE strUserName NOT IN (
			SELECT strUserName
			FROM tblApprovalsDocLimit
			WHERE intApproverType = 1
			)
		AND blnApproveInventoryRequistion = 1
END
GO

CREATE PROCEDURE [dbo].[GetJobJCByJobID](
@SQJBDocID varchar(100),
@SQType int
)
AS
BEGIN
SELECT 
	dteSystemDate as SystemDate, 
	decManQtyClosed as ManQtyClosed, 
	decManAmount  as ManAmount,
	dteJournalDate as SystemDates,
	lngJourID as lngJourID
FROM tblManJobClose 
WHERE intType = @SQType AND strJBDocID = @SQJBDocID
END
GO

CREATE PROCEDURE [dbo].[GetJobJCLByJobID](
@SQJBDocID varchar(100)
)
AS
BEGIN
SELECT 
	lngJourID as lngJourID, 
	strJBDocID as JBDocID, 
	dteJournalDate  as JournalDate
FROM tblManJobClose 
WHERE lngID = (SELECT MAX(lngID) FROM tblManJobClose WHERE strJBDocID = @SQJBDocID)
END
GO

CREATE PROCEDURE [dbo].[GetJobJRByJobID](
@SQJBDocID varchar(100)
)
AS
BEGIN
SELECT lngJourID, strJBDocID as JBDocID, dteJournalDate as JournalDate FROM tblManJobReversed WHERE strJBDocIDRev = @SQJBDocID
END
GO

CREATE PROCEDURE [dbo].[GetJobWPByJobID](
@SQJBDocID varchar(100)
)
AS
BEGIN
SELECT strWIPDocID as JBDocID, dteJournalDate as JournalDate FROM tblManWIP WHERE lngID = (SELECT MAX(lngID) FROM tblManWIP WHERE strJBDocID = @SQJBDocID)
END
GO

CREATE PROCEDURE [dbo].[GetJobJCDTLByJobID](
@SQJBDocID varchar(100)
)
AS
BEGIN
SELECT 
	JC.strPartNumber as PartNumber, 
	PROD.strDesc as [Desc], 
	JC.dteJournalDate as JournalDate, 
	JC.lngJourID as lngJourID, 
	PROD.strLocation as Location, 
	JC.decManQtyClosed as ManQtyClosed, 
	JC.decManUnitCost as UnitCost, 
	JC.decManAmount as ManAmount, 
	JC.intType  as [Type]
FROM tblManJobClose JC 
INNER JOIN tblManJobByProd PROD ON JC.strJBDocID = PROD.strJBDocID AND JC.strPartNumber = PROD.strPartNumber 
WHERE JC.strJBDocID = @SQJBDocID 
ORDER BY JC.strPartNumber, JC.dteJournalDate, JC.lngID
END
GO

CREATE PROCEDURE [dbo].[GetPQApprovalsSalesGroupData] (@AppType int)
AS
BEGIN
SELECT * FROM tblPQApprovalsGroup where bitInactive=0 and intApproverType = @AppType
END
GO

CREATE PROCEDURE [dbo].[DeclineTrackingDataSales]  
@SQDocID Varchar(100),   
@SQstrCreditReqDocID Nvarchar(MAX),
@SQdecDocTotalIncl decimal(10), 
@SQstrDocCreatorUsername varchar(50), 
@SQstrApproverUsername varchar(50), 
@SQdteDocCreationDate DateTime, 
@SQdteDateofApproval varchar(50),  
@SQstrDeclineReasonCodeText Nvarchar(MAX), 
@SQblnShowStatus bit,
@SQstrNewCNDocID Nvarchar(MAX)
AS  
BEGIN  
UPDATE tblOrderDoc SET bitCleared = 1 WHERE strOrdDocID = @SQDocID
INSERT INTO tblCNApprovalTracking VALUES (@SQstrCreditReqDocID, @SQstrNewCNDocID, @SQdecDocTotalIncl, @SQstrDocCreatorUsername, @SQstrApproverUsername, @SQdteDocCreationDate, @SQdteDateofApproval, @SQstrDeclineReasonCodeText, @SQblnShowStatus)
END
GO

CREATE PROCEDURE [dbo].[GetPPUnit](
@SQPartNumber varchar(100),
@SQBarCode varchar(600),
@SQLocName varchar(20)
)
AS
BEGIN
SELECT 
tblInv.decLastPPUnit as LastPPUnit, 
tblInv.decBuyToStock as BuyToStock, 
tblInvExt.decValue as SumValue, 
tblInvExt.decOnHand  as SumOnHand
FROM tblInv 
INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber AND tblInvExt.strLocName = @SQLocName 
WHERE (tblInv.strPartNumber = @SQPartNumber OR tblInv.strBarCode = @SQBarCode OR tblInv.strBarCode2 = @SQBarCode) AND tblInv.intType = 1
END
GO

CREATE PROCEDURE GetInvDetailsForAssemblyOrComponents @Part AS NVARCHAR(50)
	,@BarCode AS NVARCHAR(max)
AS
BEGIN
	SELECT tblInv.strPartNumber AS PartNumber
		,tblInv.strDesc AS [Description]
		,tblInv.decLastPPUnit
		,tblInv.decBuyToStock
		,tblInv.bitInvSerialType AS SerialType
		,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS DimensionExist
		,ISNULL(tblInvSerialTypes.bitMethod, 0) AS IsMethod
	FROM tblInv
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE (
			tblInv.strPartNumber = @Part
			OR tblInv.strBarCode = @BarCode
			OR tblInv.strBarCode2 = @BarCode
			)
		AND tblInv.intType = 1
		AND tblInv.bitOtherCmp = 0
		AND tblInv.bitInactive = 0
END
GO

CREATE PROCEDURE [dbo].[InsertInvAsmDoc] @AsmDocID AS NVARCHAR(100)
	,@intAsmDocID AS BIGINT
	,@InvTrackID AS BIGINT
	,@JourID AS BIGINT
	,@SystemDate AS DATETIME
	,@JournalDate AS DATETIME
	,@UserName AS NVARCHAR(40)
	,@Comment AS NVARCHAR(50)
	,@Account AS NVARCHAR(60)
	,@AddCost AS MONEY
	,@TotalCostCom AS MONEY
	,@TotalCostFin AS MONEY
	,@Dept AS INT
AS
BEGIN
	INSERT INTO tblInvAsmDoc
	VALUES (
		@AsmDocID
		,@intAsmDocID
		,@InvTrackID
		,@JourID
		,@SystemDate
		,@JournalDate
		,@UserName
		,@Comment
		,@Account
		,@AddCost
		,@TotalCostCom
		,@TotalCostFin
		,@Dept
		)
END
GO

CREATE PROCEDURE CheckEmailCount @WebstoreEmail AS NVARCHAR(250)
	,@CustomerNumber AS NVARCHAR(100) = NULL
AS
BEGIN
	IF (@CustomerNumber = NULL)
	BEGIN
		SELECT COUNT(strWebstoreEmail)
		FROM tblCustomers
		WHERE strWebstoreEmail = @WebstoreEmail
	END
	ELSE
	BEGIN
		SELECT COUNT(strWebstoreEmail)
		FROM tblCustomers
		WHERE strWebstoreEmail = @WebstoreEmail
			AND strCustName != @CustomerNumber
	END
END
GO

CREATE PROCEDURE AddtblInvAsmDocDT @strAsmDocID AS NVARCHAR(50)
	,@intLineNo AS INT
	,@bitComponents AS BIT
	,@strPartNumber AS NVARCHAR(50)
	,@decQty AS MONEY
	,@decUnitCost AS MONEY
	,@decAmount AS MONEY
	,@strLocName AS NVARCHAR(10)
	,@decReqQty AS MONEY
AS
BEGIN
	INSERT INTO tblInvAsmDocDT
	VALUES (
		@strAsmDocID
		,@intLineNo
		,@bitComponents
		,@strPartNumber
		,@decQty
		,@decUnitCost
		,@decAmount
		,@strLocName
		,@decReqQty
		)
END
GO

CREATE PROCEDURE AddtblInvAsmDocDTSerial @strAsmDocID AS NVARCHAR(50)
	,@intLineNo AS INT
	,@bitComponents AS BIT
	,@strSerialNumber AS NVARCHAR(100)
	,@decQty AS MONEY
	,@strUnit AS NVARCHAR(15)
	,@bitExpiryDate AS BIT
	,@dteExpiryDate AS SMALLDATETIME
	,@intSerialLotType AS INT
	,@lngBinID AS BIGINT
AS
BEGIN
	INSERT INTO tblInvAsmDocDTSerial (
		strAsmDocID
		,intLineNo
		,bitComponents
		,strSerialNumber
		,decQty
		,strUnit
		,bitExpiryDate
		,dteExpiryDate
		,intSerialLotType
		,lngBinId
		)
	VALUES (
		@strAsmDocID
		,@intLineNo
		,@bitComponents
		,@strSerialNumber
		,@decQty
		,@strUnit
		,@bitExpiryDate
		,@dteExpiryDate
		,@intSerialLotType
		,@lngBinId
		)
END
GO

CREATE PROCEDURE UpdateLastPPUnitIntblInv @strPartNumber AS NVARCHAR(50)
	,@decLastPPUnit AS MONEY
AS
BEGIN
	UPDATE tblInv
	SET decLastPPUnit = CASE 
			WHEN @decLastPPUnit = 0
				THEN decLastPPUnit
			ELSE @decLastPPUnit
			END
		,decLastManCost = @decLastPPUnit
	WHERE strPartNumber = @strPartNumber
END
GO

CREATE PROCEDURE updateProductionScheduleForAssembly @strProdNumber AS NVARCHAR(50)
	,@strAsmDocID AS NVARCHAR(50)
	,@dteSystemDate AS SMALLDATETIME
	,@strUserName AS NVARCHAR(20)
AS
BEGIN
	UPDATE tblProductionSchedule
	SET strAsmDocID = @strAsmDocID
		,dteSystemDate = @dteSystemDate
		,strUserName = @strUserName
	WHERE strProdNumber = @strProdNumber
END
GO

CREATE PROCEDURE [dbo].[InsertJobCompInventoryItem](
@SQstrJBDocID varchar(100),
@SQstrWCCode varchar(40),
@SQintLineNo int,
@SQstrPartNumber varchar(100),
@SQstrLocation varchar(20),
@SQdecQty money,
@SQdecManQty money,
@SQdecPPUnit money,
@SQdecManAmount money,
@SQstrBOMNumber varchar(100),
@SQstrDesc varchar(1000)
)
AS
BEGIN
INSERT INTO tblManJobCompInv VALUES (@SQstrJBDocID,@SQstrWCCode,@SQintLineNo,@SQstrPartNumber,@SQstrLocation,@SQdecQty,@SQdecManQty,@SQdecPPUnit,@SQdecManAmount,@SQstrBOMNumber,@SQstrDesc)
END
GO

CREATE PROCEDURE [dbo].[InsertCompLabourItem](
@SQstrJBDocID varchar(100),
@SQstrWCCode varchar(40),
@SQintLineNo int,
@SQstrLabCode varchar(40),
@SQdecVariableHours money,
@SQdecVariableRate money,
@SQdecSetupHours  money,
@SQdecSetupRate money,
@SQdecBreakdownHours money,
@SQdecBreakdownRate money,
@SQdecManAmount money,
@SQdecManVariableHours money,
@SQstrBOMNumber varchar(100)
)
AS
BEGIN
INSERT INTO tblManJobCompLab VALUES (@SQstrJBDocID,@SQstrWCCode,@SQintLineNo,@SQstrLabCode,@SQdecVariableHours,@SQdecVariableRate,@SQdecSetupHours,@SQdecSetupRate,@SQdecBreakdownHours,@SQdecBreakdownRate,@SQdecManAmount,@SQdecManVariableHours,@SQstrBOMNumber)
END
GO

CREATE PROCEDURE [dbo].[InsertCompMachineryItem](
@SQstrJBDocID varchar(100),
@SQstrWCCode varchar(40),
@SQintLineNo int,
@SQstrMachCode varchar(40),
@SQdecVariableHours money,
@SQdecVariableRate money,
@SQdecSetupHours  money,
@SQdecSetupRate money,
@SQdecBreakdownHours money,
@SQdecBreakdownRate money,
@SQdecManAmount money,
@SQdecManVariableHours money,
@SQstrBOMNumber varchar(100)
)
AS
BEGIN
INSERT INTO tblManJobCompMach VALUES (@SQstrJBDocID,@SQstrWCCode,@SQintLineNo,@SQstrMachCode,@SQdecVariableHours,@SQdecVariableRate,@SQdecSetupHours,@SQdecSetupRate,@SQdecBreakdownHours,@SQdecBreakdownRate,@SQdecManAmount,@SQdecManVariableHours,@SQstrBOMNumber)
END
GO

CREATE PROCEDURE [dbo].[DeleteJobByProduct](
@SQstrJBDocID varchar(100)
)
AS
BEGIN
DELETE FROM tblManJobByProd WHERE strJBDocID = @SQstrJBDocID
END
GO


CREATE PROCEDURE [dbo].[DeleteJobByOperation](
@SQstrJBDocID varchar(100)
)
AS
BEGIN
DELETE FROM tblManJobOp WHERE strJBDocID = @SQstrJBDocID
END
GO

CREATE PROCEDURE [dbo].[InsertManJobByProdSerial](
@SQDocID varchar(100), 
@SQstrPartNumber varchar(100), 
@SQstrSerialNumber varchar(200), 
@SQdecQty decimal, 
@SQstrUnit varchar(30), 
@SQbitExpiryDate bit, 
@SQdteExpiryDate Datetime, 
@SQintSerialLotType int, 
@SQlngBinID bigint
)
AS
BEGIN
INSERT INTO tblManJobByProdSerial(strJBDocID, strPartNumber, strSerialNumber, decQty, strUnit, bitExpiryDate, dteExpiryDate, intSerialLotType, lngBinID) 
	VALUES(@SQDocID, @SQstrPartNumber, @SQstrSerialNumber, @SQdecQty, @SQstrUnit, @SQbitExpiryDate, @SQdteExpiryDate, @SQintSerialLotType, @SQlngBinID)
END
GO

CREATE PROCEDURE [dbo].[InsertJobReversalData](
@SQJBDocID varchar(100), 
@SQSystemDate DateTime, 
@SQJournalDate DateTime, 
@SQUserName varchar(40), 
@SQJourID int, 
@SQJBDocIDRev varchar(100)
)
AS
BEGIN
INSERT INTO tblManJobReversed(strJBDocID, dteSystemDate, dteJournalDate, strUserName, lngJourID, strJBDocIDRev) 
	VALUES(@SQJBDocID, @SQSystemDate, @SQJournalDate, @SQUserName, @SQJourID, @SQJBDocIDRev)
END
GO

CREATE PROCEDURE [dbo].[InsertManJobByCompSerial](
@SQDocID varchar(100), 
@SQstrWCCode varchar(40),
@SQintLineNo int,
@SQstrSerialNumber varchar(200), 
@SQdecQty decimal, 
@SQstrUnit varchar(30), 
@SQbitExpiryDate bit, 
@SQdteExpiryDate DateTime, 
@SQintSerialLotType int
)
AS
BEGIN
INSERT INTO tblManJobCompInvSerial(strJBDocID, strWCCode, intLineNo, strSerialNumber, decQty, strUnit, bitExpiryDate, dteExpiryDate, intSerialLotType) VALUES(@SQDocID, @SQstrWCCode, @SQintLineNo, @SQstrSerialNumber, @SQdecQty, @SQstrUnit, @SQbitExpiryDate, @SQdteExpiryDate, @SQintSerialLotType)
END
GO

CREATE PROCEDURE [dbo].[UpdateJobRec](
@SQdteSystemDate DateTime,
@SQdteJournalDate DateTime,
@SQdteRequired DateTime,
@SQstrUserName varchar(40),
@SQstrReference varchar(100),
@SQstrCustName varchar(100),
@SQstrWCCode varchar(40),
@SQstrJBDocID varchar(100)
)
AS
BEGIN
	UPDATE tblManJob SET dteSystemDate = @SQdteSystemDate, dteJournalDate = @SQdteJournalDate, dteRequired = @SQdteRequired, 
	strUserName = @SQstrUserName, strReference = @SQstrReference, strCustName = @SQstrCustName, strWCCode = @SQstrWCCode 
	WHERE strJBDocID = @SQstrJBDocID
END
GO

CREATE PROCEDURE [dbo].[InsertCompRecoveryCost](
@SQstrJBDocID varchar(100),
@SQstrWCCode varchar(40),
@SQintLineNo int,
@SQintGLNumber varchar(60),
@SQintDept int,
@SQuidCenterID uniqueidentifier,
@SQdecAmount money,
@SQdecManAmount money,
@SQstrBOMNumber varchar(100)
)
AS
BEGIN
INSERT INTO tblManJobCompOverhead VALUES (@SQstrJBDocID,@SQstrWCCode,@SQintLineNo,@SQintGLNumber,@SQintDept,@SQuidCenterID,@SQdecAmount,@SQdecManAmount,@SQstrBOMNumber)
END
GO

CREATE PROCEDURE [dbo].[updateManJobDataFilename](
@SQstrFileName varchar(500),
@SQstrJBDocID varchar(100)
)
AS
BEGIN
UPDATE tblManJob SET strFileName = @SQstrFileName WHERE strJBDocID = @SQstrJBDocID
END
Go

CREATE PROCEDURE [dbo].[updateManJobData](
@SQDate DateTime,
@SQUser varchar(40),
@SQType int,
@SQJBDocID varchar(100)
)
AS
BEGIN
UPDATE tblManJob SET dteSystemDate = @SQDate, strUserName = @SQUser, intType = @SQType WHERE strJBDocID = @SQJBDocID
END
Go

CREATE PROCEDURE [dbo].[GetBOMItemByJobID](
@SQJBDocID varchar(100)
)
AS
BEGIN
SELECT 
	tblManJob.strJBDocID as JBDocID, 
	tblManJob.dteJournalDate as JournalDate, 
	tblManJob.dteRequired as Required, 
	tblManJob.strReference as Reference, 
	tblManJob.strCustName as CustName, 
	tblManJob.intType as Type, 
	tblManJob.strWCCode as WorkCentreCode, 
	ISNULL(tblCustomers.strCustDesc,'') as CustDesc 
FROM tblManJob 
LEFT JOIN tblCustomers ON tblManJob.strCustName = tblCustomers.strCustName 
WHERE tblManJob.strJBDocID = @SQJBDocID
END
GO

CREATE PROCEDURE [dbo].[GetJobWCByJobID](
@SQJBDocID varchar(100)
)
AS
BEGIN
SELECT 
	tblManJobOp.strWCCode as WorkCentreCode, tblManWorkCentre.strDesc as Description, tblManJobOp.strNotes as Notes, tblManJobOp.lngID AS lngID 
FROM tblManJobOp 
INNER JOIN tblManWorkCentre ON tblManJobOp.strWCCode = tblManWorkCentre.strWCCode 
WHERE (tblManJobOp.strJBDocID = @SQJBDocID) 

UNION ALL 

SELECT DISTINCT 
	tblManWIP.strWCCode as WorkCentreCode, tblManWorkCentre.strDesc as Description, '' AS strNotes, 9999 AS lngID 
FROM tblManWIP 
INNER JOIN tblManWorkCentre ON tblManWIP.strWCCode = tblManWorkCentre.strWCCode 
LEFT JOIN tblManJobOp ON tblManWIP.strJBDocID = tblManJobOp.strJBDocID AND tblManWIP.strWCCode = tblManJobOp.strWCCode 
WHERE (tblManWIP.strJBDocID = @SQJBDocID) AND (ISNULL(tblManJobOp.strWCCode,'') = '') 
ORDER BY lngID, WorkCentreCode
END
GO

/****** Object:  StoredProcedure [dbo].[InsertCNApprovalTracking]    Script Date: 13-01-2023 16:10:00 ******/
CREATE PROCEDURE [dbo].[InsertCNApprovalTracking]
	@CreditReqDocID Varchar(20),
	@NewCNDocID Varchar(20),
	@DocTotalIncl money,
	@DocCreatorUsername Varchar(50),
	@ApproverUsername Varchar(50),
	@DocCreationDate datetime,
	@DateofApproval datetime,
	@DeclineReasonCodeText varchar(max),
	@ShowStatus bit
AS
BEGIN
	SET NOCOUNT ON;
	IF(@DeclineReasonCodeText <> 'Approved')
	BEGIN
		SET @NewCNDocID = REPLACE(CONVERT(varchar, GETDATE(), 101), '/', '') + REPLACE(CONVERT(varchar, GETDATE(), 108), ':', '')
	END
	--INSERT INTO tblCNApprovalTracking VALUES (@CreditReqDocID, @NewCNDocID, @DocTotalIncl, @DocCreatorUsername, @ApproverUsername, @DocCreationDate, @DateofApproval, @DeclineReasonCodeText, @ShowStatus)

	 IF EXISTS (SELECT 1 FROM tblCNApprovalTracking WHERE strNewCNDocID = @NewCNDocID)
    BEGIN
    
        UPDATE tblCNApprovalTracking
        SET strCreditReqDocID = @CreditReqDocID,
            decDocTotalIncl = @DocTotalIncl,
            strDocCreatorUsername = @DocCreatorUsername,
            strApproverUsername = @ApproverUsername,
            dteDocCreationDate = @DocCreationDate,
            dteDateofApproval = @DateofApproval,
            strDeclineReasonCodeText = @DeclineReasonCodeText,
            blnShowStatus = @ShowStatus
        WHERE strNewCNDocID = @NewCNDocID;
    END
    ELSE
    BEGIN
        -- If it does not exist, insert a new record
        INSERT INTO tblCNApprovalTracking
        VALUES (@CreditReqDocID, @NewCNDocID, @DocTotalIncl, @DocCreatorUsername, 
                @ApproverUsername, @DocCreationDate, @DateofApproval, 
                @DeclineReasonCodeText, @ShowStatus);
    END

END
GO

/****** Object:  StoredProcedure [dbo].[GetCNApproverListbyDocNumber]    Script Date: 13-01-2023 16:10:00 ******/
CREATE PROCEDURE [dbo].[GetCNApproverListbyDocNumber] 
@strOrdDocID VARCHAR(20) 
AS 
  BEGIN 
      SET nocount ON; 

      SELECT tblApprovalsDocLimit.strUserName 
      FROM   tblApprovalsDocLimit 
             INNER JOIN tblOrdersDoc_CNApprovals ON tblApprovalsDocLimit.intApproverGroupId = tblOrdersDoc_CNApprovals.intGroupId 
      WHERE  tblOrdersDoc_CNApprovals.strOrdDocID = @strOrdDocID 
  END 
GO

/****** Object:  StoredProcedure [dbo].[]    Script Date: 13-01-2023 16:10:00 ******/
CREATE PROCEDURE [dbo].[GetCNapprovalsDocLimitDetailsbyDocNumber] 
@strOrdDocID VARCHAR(20) 
AS 
  BEGIN 
      SET nocount ON; 
	  --
      DECLARE @CurrentUserPriority INT 
      DECLARE @GroupId INT 
      DECLARE @LastUserPriority INT 
      DECLARE @DocLimitIncl DECIMAL 

      SELECT @CurrentUserPriority = Min(tblApprovalsDocLimit.priorityLevel), 
             @GroupId = tblCNApprovalsUserTracking.intGroupId, 
             @DocLimitIncl = tblApprovalsDocLimit.DocLimitIncl 
      FROM   tblCNApprovalsUserTracking 
             INNER JOIN tblApprovalsDocLimit ON tblCNApprovalsUserTracking.intGroupId = tblApprovalsDocLimit.intApproverGroupId 
                        AND tblApprovalsDocLimit.strUserName = tblCNApprovalsUserTracking.strUserName 
      WHERE  strOrdDocID = @strOrdDocID 
             AND intApprovalStatus = 0 
      GROUP  BY tblCNApprovalsUserTracking.intGroupId, 
                tblApprovalsDocLimit.DocLimitIncl 

      SELECT @LastUserPriority = Max(priorityLevel) 
      FROM   tblApprovalsDocLimit 
             INNER JOIN tblOrdersDoc_CNApprovals ON tblApprovalsDocLimit.intApproverGroupId = tblOrdersDoc_CNApprovals.intGroupId 
             INNER JOIN tblCNApprovalsUserTracking ON tblApprovalsDocLimit.strUserName = tblCNApprovalsUserTracking.strUserName 
      WHERE  tblOrdersDoc_CNApprovals.strOrdDocID = @strOrdDocID 
             AND tblCNApprovalsUserTracking.intApprovalStatus = 0 
             AND tblCNApprovalsUserTracking.strOrdDocID = @strOrdDocID 

      SELECT ISNULL(@CurrentUserPriority, 0) AS 'CurrentUserPriority', 
             ISNULL(@GroupId, 0)             AS 'GroupId', 
             ISNULL(@LastUserPriority, 0)    AS 'LastUserPriority', 
             ISNULL(@DocLimitIncl, 0.0)      AS 'DocLimitIncl' 
  END
GO

/****** Object:  StoredProcedure [dbo].[GetCreditRequestCreateUserName]    Script Date: 13-01-2023 16:10:00 ******/
CREATE PROCEDURE [dbo].[GetCreditRequestCreateUserName] 
	@strOrdDocID VARCHAR(20) 
AS 
  BEGIN 
      SET nocount ON; 

      SELECT strUserName 
      FROM   tblOrderDoc 
      WHERE  strOrdDocID = @strOrdDocID 
  END
GO

/****** Object:  StoredProcedure [dbo].[UpdateApproverStatusCN]    Script Date: 13-01-2023 16:10:00 ******/
CREATE PROCEDURE [dbo].[UpdateApproverStatusCN]
	@SqlDocNumber Varchar(20),	
	@SqlGroupId int,
	@SqlUserName varchar(50),
	@SqlStatus int
AS
BEGIN
	SET NOCOUNT ON;
	
	UPDATE tblCNApprovalsUserTracking set intApprovalStatus=@SqlStatus, rowUpdated=GETDATE() 
	where strOrdDocID=@SqlDocNumber and intApprovalStatus=0 and intGroupId=@SqlGroupId and strUserName=@SqlUserName	
END
GO

/****** Object:  StoredProcedure [dbo].[GetPreferredNotificationModeCN]    Script Date: 13-01-2023 16:10:00 ******/
CREATE PROCEDURE [dbo].[GetPreferredNotificationModeCN] 
	@intGroupID   INT, 
    @strOrdDocID VARCHAR(20) 
AS 
  BEGIN 
      SET nocount ON; 

      SELECT PreferredNotification
      FROM   tblApprovalsDocLimit 
      WHERE  priorityLevel = (SELECT Min(tblApprovalsDocLimit.priorityLevel) 
                              FROM   tblApprovalsDocLimit 
                                     INNER JOIN tblCNApprovalsUserTracking ON 
                                     tblApprovalsDocLimit.intApproverGroupId = tblCNApprovalsUserTracking.intGroupId 
                                     AND tblApprovalsDocLimit.strUserName = tblCNApprovalsUserTracking.strUserName 
                                     INNER JOIN tblOrderDoc ON 
									tblCNApprovalsUserTracking.strOrdDocID = tblOrderDoc.strOrdDocID 
                              WHERE 
									tblCNApprovalsUserTracking.strOrdDocID = @strOrdDocID 
									AND tblApprovalsDocLimit.intApproverGroupId = @intGroupID 
									AND tblCNApprovalsUserTracking.intApprovalStatus = 0 
                                     AND tblOrderDoc.bitCleared = 0 
                                     AND tblOrderDoc.intDocType = 1) 
     AND intApproverGroupId = @intGroupID AND intApproverType = 2
  END
GO

/****** Object:  StoredProcedure [dbo].[ClearCNApproval]    Script Date: 13-01-2023 16:10:00 ******/
CREATE PROCEDURE [dbo].[ClearCNApproval]
	@OrdDocID Varchar(50)
AS
BEGIN
	SET NOCOUNT ON;

    UPDATE tblOrderDoc SET bitCleared = 1 WHERE strOrdDocID = @OrdDocID
END
GO

/****** Object:  StoredProcedure [dbo].[GetCreditNoteReasons]    Script Date: 13-01-2023 16:10:00 ******/
CREATE PROCEDURE [dbo].[GetCreditNoteReasons] (
  @lngID bigint = NULL, 
  @strAuthReasonCode nvarchar(20) = NULL, 
  @strAuthReasonDesc nvarchar(100) = NULL, 
  @bitInactive bit = NULL
) AS
SELECT 
  lngID, 
  strCNReasonCode, 
  strCNReasonDesc, 
  strCNReasonCode AS AuthReasonCode, 
  strCNReasonDesc AS AuthReasonDesc, 
  bitInactive 
FROM 
  [tblCreditNoteReasons] 
WHERE 
  (lngID = @lngID or @lngID is null) 
  and (strCNReasonCode = @strAuthReasonCode or @strAuthReasonCode is null) 
  and (strCNReasonDesc = @strAuthReasonDesc or @strAuthReasonDesc is null) 
  and (bitInactive = @bitInactive or @bitInactive is null)
GO

/****** Object:  StoredProcedure [dbo].[GetPriceListByPaging]    Script Date: 13-01-2023 16:10:00 ******/
CREATE PROCEDURE [dbo].[GetPriceListByPaging]
	@PartNumber AS NVARCHAR(100)
	,@PageSize INT = 25
	,@PageIndex INT = 1
	,@SearchText NVARCHAR(max) = NULL
AS
BEGIN
SELECT tblInvPrice.strPricelist AS Pricelist
	,tblInvPrice.decSelling AS Selling
	,tblPricelists.intPriceListType AS PriceListType
	,tblPriceListsByDate.dteStartDate AS StartDate
	,tblPriceListsByDate.dteFinishDate AS EndDate
	,tblInv.decLastPPUnit AS PurchasePrice
FROM tblInvPrice
	INNER JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist AND tblInvPrice.uidPriceBasedID = tblPricelists.uidPriceBasedID
	INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblPricelists.uidPriceBasedID
	INNER JOIN tblPriceData ON tblPriceData.strPricelist = tblPricelists.strPricelist
	INNER JOIN tblInv ON tblInvPrice.strPartNumber = tblInv.strPartNumber 
WHERE (tblInvPrice.strPartNumber = @PartNumber)	AND tblPriceData.bitInactive = 0 AND
	  getdate() between tblPriceListsByDate.dteStartDate and tblPriceListsByDate.dteFinishDate AND
	  (@SearchText IS NULL OR (tblInvPrice.strPricelist LIKE '%' + @SearchText + '%'))
ORDER BY tblInvPrice.decSelling DESC OFFSET(@PageIndex - 1) * @PageSize ROWS
FETCH NEXT @PageSize ROWS ONLY;
END
GO

/****** Object:  StoredProcedure [dbo].[GetAccountTypeList]    Script Date: 13-01-2023 16:10:00 ******/
CREATE PROCEDURE [dbo].[GetAccountTypeList] 

AS
BEGIN

	SELECT tblAccountType.strAcctType AS AcctType,strCustomLabel AS CustomLabel,tblAccountType.intAcctTypeID AS AcctTypeID, 
			tblAccountClass.intAcctClassID AS AcctClassID, strDefaultLabel AS DefaultLabel, SUM(isnull(decBalance, 0.00)) AS Balance 
	FROM tblAccountClass 
		INNER JOIN tblAccountType on tblAccountClass.intAcctTypeID = tblAccountType.intAcctTypeID 
		INNER JOIN tblAccounts ON tblAccountType.intAcctTypeID = tblAccounts.intAccType  AND tblAccountClass.intAcctClassID = tblAccounts.intAccClass 		
	WHERE tblAccounts.bitInactive = 0 
	GROUP BY tblAccountType.strAcctType,strCustomLabel,tblAccountType.intAcctTypeID,tblAccountClass.intAcctClassID, strDefaultLabel
	ORDER BY tblAccountType.strAcctType,tblAccountClass.intAcctClassID


END
GO

/****** Object:  StoredProcedure [dbo].[GetBankAccountList]    Script Date: 13-01-2023 16:10:00 ******/
CREATE PROCEDURE [dbo].[GetBankAccountList] ( 
	 @AccountTypeId INT
	 ,@AccountClassId INT
	 ) 
AS
BEGIN
	SELECT  intGLNumber AS GLNumber, strDesc AS Description, intGroupCode AS GroupCode, decBalance AS Balance, 
			intAccType AS AccType, intAccClass AS AccClass, strCurrency AS Currency, decBalanceF AS BalanceF, 
			tblAccountType.strAcctType AS AcctType, tblAccountClass.strCustomLabel AS CustomLabel, 
			bitInactive AS Inactive
	FROM tblAccounts 
		INNER JOIN tblAccountType ON tblAccountType.intAcctTypeID = tblAccounts.intAccType 
		INNER JOIN tblAccountClass ON tblAccountClass.intAcctClassID = tblAccounts.intAccClass 
	WHERE bitInactive = 0 and intAccType =@AccountTypeId  and intAccClass = @AccountClassId
	ORDER BY intAccType, intAccClass, intGLNumber
END
GO

CREATE PROCEDURE [dbo].[UpdateOfflineDrawersDTSyncError] @Id INT
	,@SyncError NVARCHAR(max) = NULL
	,@SyncErrorCode INT = NULL
	,@SyncDrawerName NVARCHAR(100) = NULL
	,@SyncErrorType INT = NULL
	,@RequiredAdminAction BIT = NULL
	,@DisplayErrorMessage NVARCHAR(max) = NULL
AS
BEGIN
	UPDATE tblOfflineDrawersDT
	SET SyncAttempt = (ISNULL(SyncAttempt, 0) + 1)
		,IsSync = 0
		,SyncError = @SyncError
		,SyncErrorCode = @SyncErrorCode
		,SyncDrawerName = @SyncDrawerName
		,SyncErrorType = @SyncErrorType
		,RequiredAdminAction = @RequiredAdminAction
		,DisplayErrorMessage = @DisplayErrorMessage
	WHERE Id = @Id
END
GO

CREATE PROCEDURE [dbo].[GetAllDrawerGroups] @UserName AS NVARCHAR(50)
AS
BEGIN
	SELECT tblPOSDrsGroup.strDrawerGroup AS DrawerGroup
		,strDesc AS [Description]
		,bitInactive AS Inactive
	FROM tblPOSDrsGroup
	LEFT JOIN tblPOSDrsGroupSec ON tblPOSDrsGroup.strDrawerGroup = tblPOSDrsGroupSec.strDrawerGroup
	WHERE strUserName IS NULL
		OR strUserName = @UserName
END
GO

-----------------------------------------------------

CREATE PROCEDURE [dbo].[GetAllDrawerGroupsSec]
AS
BEGIN
	SELECT strDrawerGroup AS DrawerGroup
		,strUserName AS UserName
	FROM tblPOSDrsGroupSec
END
GO

-----------------------------------------------------


CREATE PROCEDURE [dbo].[GetrDrawerGroupUserNoAccessList] (@DrawerGroup NVARCHAR(40))
AS
BEGIN
SELECT strUserName As UserName FROM tblUsers WHERE strUserName NOT IN (SELECT strUserName FROM tblPOSDrsGroupSec WHERE strDrawerGroup = @DrawerGroup)
END
GO

-----------------------------------------------------

CREATE PROCEDURE [dbo].[DeleteDrawerGroup] (@DrawerGroup NVARCHAR(40))
AS
BEGIN
	DELETE
	FROM tblPOSDrsGroup
	WHERE strDrawerGroup = @DrawerGroup
END
GO

-----------------------------------------------------


CREATE PROCEDURE [dbo].[DeleteDrawerGroupSec] (@DrawerGroup NVARCHAR(40))
AS
BEGIN
	DELETE
	FROM tblPOSDrsGroupSec
	WHERE strDrawerGroup = @DrawerGroup
END
GO

-----------------------------------------------------


CREATE PROCEDURE [dbo].[InsertDrawerGroup] (
	@DrawerGroup NVARCHAR(40)
	,@Desc NVARCHAR(200)
	,@Inactive BIT
	)
AS
BEGIN
	INSERT INTO tblPOSDrsGroup
	VALUES (
		@DrawerGroup
		,@Desc
		,@Inactive		
		,GETDATE()
		)
END
GO

-----------------------------------------------------

CREATE PROCEDURE [dbo].[UpdateDrawerGroup] (
	@DrawerGroup AS NVARCHAR(20)
	,@OldName AS NVARCHAR(20)
	,@Desc AS VARCHAR(100)
	,@Inactive AS BIT	
	)
AS
BEGIN
	UPDATE tblPOSDrsGroup
	SET strDrawerGroup = @DrawerGroup
		,strDesc = @Desc
		,bitInactive = @Inactive		
	WHERE strDrawerGroup = @OldName

END
GO

-----------------------------------------------------

CREATE PROCEDURE [dbo].[InsertDrawerGroupSecData] (@DrawerGroupSecTableType AS CategoryInsertTableType READONLY)
AS
BEGIN
	INSERT INTO tblPOSDrsGroupSec (
		strDrawerGroup
		,strUserName
		)
	SELECT *
	FROM @DrawerGroupSecTableType
END
GO

--------------------------------------------------------


CREATE PROCEDURE [dbo].[GetAssignedDrawerList] (@DrawerGroup NVARCHAR(40))
AS
BEGIN
	SELECT strDrawerName AS DrawerName
	FROM tblPOSDr
	WHERE strDrawerGroup = @DrawerGroup
END
GO

------------------------------------------------------------

CREATE PROCEDURE [dbo].[AddUpdatetblPOSDrsGroupSec] @tblData
AS
POSDrsGroupSecTableType READONLY AS

BEGIN
	DELETE
	FROM tblPOSDrsGroupSec
	WHERE strDrawerGroup IN (
			SELECT strDrawerGroup
			FROM @tblData
			)

	INSERT INTO tblPOSDrsGroupSec (
		strDrawerGroup
		,strUserName
		)
	SELECT strDrawerGroup
		,strUserName
	FROM @tblData AS t
	WHERE NOT EXISTS (
			SELECT 1
			FROM tblPOSDrsGroupSec
			WHERE strDrawerGroup = t.strDrawerGroup
			)
END
GO

CREATE   PROCEDURE [dbo].[GetAllInvExtCount]
	@InActiveFlag int  = 0,    
	@MinimumUpdatedDate DateTime = null
AS
BEGIN
	SET NOCOUNT ON;	
	
	SELECT COUNT(*)
	FROM tblInvExt LEFT JOIN tblInv ON tblInv.strPartNumber = tblInvExt.strPartNumber     
    WHERE (@MinimumUpdatedDate IS NULL OR dteLastUpdated > @MinimumUpdatedDate) and    
		tblInvExt.bitInactive = CASE @InActiveFlag     
             WHEN 0 THEN 0    
             WHEN 1 THEN 1    
             WHEN 2 THEN tblInvExt.bitInactive    
            END  
END
GO

CREATE PROCEDURE [dbo].[AddUpdatetblAccountsLY]
    @tblData AS AccountsLYTableType READONLY
AS
BEGIN
 delete from tblAccountsLY where intGLNumber  not in (select intGLNumber from  @tblData)
BEGIN
   UPDATE [dbo].[tblAccountsLY]
  SET [intGLNumber] = table2.intGLNumber
      ,[strDesc] = table2.strDesc
      ,[intAccType] = table2.intAccType 
      ,[intGroupCode] = table2.intGroupCode
      ,[intAccClass] = table2.intAccClass 
      ,[bitInactive] = table2.bitInactive
      ,[decOpenBalance] = table2.decOpenBalance
      ,[decBalance] = table2.decBalance 
      ,[decLYOpenBalance] = table2.decLYOpenBalance 
      ,[decLYEndBalance] = table2.decLYEndBalance 
      ,[bitBank] = table2.bitBank 
      ,[bitRecon] = table2.bitRecon 
      ,[bitInventory] = table2.bitInventory 
      ,[bitBudget] = table2.bitBudget 
      ,[bitUsed] = table2.bitUsed 
      ,[bitUsedLY] = table2.bitUsedLY 
      ,[bitLinkREarnings] = table2.bitLinkREarnings 
      ,[bitLinkCEarnings] = table2.bitLinkCEarnings 
      ,[bitLinkAP] = table2.bitLinkAP 
      ,[bitLinkPurDisc] = table2.bitLinkPurDisc 
      ,[bitLinkAR] = table2.bitLinkAR 
      ,[bitLinkSalesDisc] = table2.bitLinkSalesDisc 
      ,[bitLinkAssCosts] = table2.bitLinkAssCosts 
      ,[bitLinkAdjWriteOff] = table2.bitLinkAdjWriteOff 
      ,[bitIsLinkedAccount] = table2.bitIsLinkedAccount 
      ,[bitDefBank] = table2.bitDefBank 
      ,[bitLinkDeposit] = table2.bitLinkDeposit 
      ,[bitLinkPrePay] = table2.bitLinkPrePay 
      ,[strField1] = table2.strField1 
      ,[strField2] = table2.strField2 
      ,[strField3] = table2.strField3 
      ,[strField4] = table2.strField4 
      ,[strField5] = table2.strField5 
      ,[strField6] = table2.strField6
      ,[bitLinkExc] = table2.bitLinkExc
      ,[bitAllowCenters] = table2.bitAllowCenters 
      ,[intCheqNumber] = table2.intCheqNumber
      ,[strCurrency] = table2.strCurrency
      ,[decOpenBalanceF] = table2.decOpenBalanceF 
      ,[decBalanceF] = table2.decBalanceF 
      ,[decLYOpenBalanceF] = table2.decLYOpenBalanceF 
      ,[decLYEndBalanceF] = table2.decLYEndBalanceF 
      ,[bitLinkGRV] = table2.bitLinkGRV 
      ,[bitLinkAddCost] = table2.bitLinkAddCost
      ,[bitLinkDelAdvice] = table2.bitLinkDelAdvice
      ,[bitLinkWIP] = table2.bitLinkWIP 
      ,[bitLinkManStandardCost] = table2.bitLinkManStandardCost 
      ,[bitLinkWorkshopWIP] = table2.bitLinkWorkshopWIP 
      ,[bitLinkGoodsInTransit] = table2.bitLinkGoodsInTransit 
      ,[bitLinkARCustMast] = table2.bitLinkARCustMast 
      ,[bitLinkDepositCustMast] = table2.bitLinkDepositCustMast 
      ,[bitLinkAPVendMast] = table2.bitLinkAPVendMast 
      ,[bitLinkPrepayVendMast] = table2.bitLinkPrepayVendMast 
 FROM tblAccountsLY as table1
 INNER JOIN @tblData as table2
 ON (table1.intGLNumber=table2.intGLNumber)
END

BEGIN
  INSERT INTO [dbo].[tblAccountsLY]
           ([intGLNumber]
           ,[strDesc]
           ,[intAccType]
           ,[intGroupCode]
           ,[intAccClass]
           ,[bitInactive]
           ,[decOpenBalance]
           ,[decBalance]
           ,[decLYOpenBalance]
           ,[decLYEndBalance]
           ,[bitBank]
           ,[bitRecon]
           ,[bitInventory]
           ,[bitBudget]
           ,[bitUsed]
           ,[bitUsedLY]
           ,[bitLinkREarnings]
           ,[bitLinkCEarnings]
           ,[bitLinkAP]
           ,[bitLinkPurDisc]
           ,[bitLinkAR]
           ,[bitLinkSalesDisc]
           ,[bitLinkAssCosts]
           ,[bitLinkAdjWriteOff]
           ,[bitIsLinkedAccount]
           ,[bitDefBank]
           ,[bitLinkDeposit]
           ,[bitLinkPrePay]
           ,[strField1]
           ,[strField2]
           ,[strField3]
           ,[strField4]
           ,[strField5]
           ,[strField6]
           ,[bitLinkExc]
           ,[bitAllowCenters]
           ,[intCheqNumber]
           ,[strCurrency]
           ,[decOpenBalanceF]
           ,[decBalanceF]
           ,[decLYOpenBalanceF]
           ,[decLYEndBalanceF]
           ,[bitLinkGRV]
           ,[bitLinkAddCost]
           ,[bitLinkDelAdvice]
           ,[bitLinkWIP]
           ,[bitLinkManStandardCost]
           ,[bitLinkWorkshopWIP]
           ,[bitLinkGoodsInTransit]
           ,[bitLinkARCustMast]
           ,[bitLinkDepositCustMast]
           ,[bitLinkAPVendMast]
           ,[bitLinkPrepayVendMast])
    SELECT  
			[intGLNumber]
           ,[strDesc]
           ,[intAccType]
           ,[intGroupCode]
           ,[intAccClass]
           ,[bitInactive]
           ,[decOpenBalance]
           ,[decBalance]
           ,[decLYOpenBalance]
           ,[decLYEndBalance]
           ,[bitBank]
           ,[bitRecon]
           ,[bitInventory]
           ,[bitBudget]
           ,[bitUsed]
           ,[bitUsedLY]
           ,[bitLinkREarnings]
           ,[bitLinkCEarnings]
           ,[bitLinkAP]
           ,[bitLinkPurDisc]
           ,[bitLinkAR]
           ,[bitLinkSalesDisc]
           ,[bitLinkAssCosts]
           ,[bitLinkAdjWriteOff]
           ,[bitIsLinkedAccount]
           ,[bitDefBank]
           ,[bitLinkDeposit]
           ,[bitLinkPrePay]
           ,[strField1]
           ,[strField2]
           ,[strField3]
           ,[strField4]
           ,[strField5]
           ,[strField6]
           ,[bitLinkExc]
           ,[bitAllowCenters]
           ,[intCheqNumber]
           ,[strCurrency]
           ,[decOpenBalanceF]
           ,[decBalanceF]
           ,[decLYOpenBalanceF]
           ,[decLYEndBalanceF]
           ,[bitLinkGRV]
           ,[bitLinkAddCost]
           ,[bitLinkDelAdvice]
           ,[bitLinkWIP]
           ,[bitLinkManStandardCost]
           ,[bitLinkWorkshopWIP]
           ,[bitLinkGoodsInTransit]
           ,[bitLinkARCustMast]
           ,[bitLinkDepositCustMast]
           ,[bitLinkAPVendMast]
           ,[bitLinkPrepayVendMast]
   FROM @tblData  as t 
   WHERE  NOT EXISTS (SELECT 1 FROM tblAccountsLY WHERE intGLNumber=t.intGLNumber)
END
End
GO

CREATE PROCEDURE [dbo].[AddUpdatetblPOSDrsGroup] @tblData
AS
POSDrsGroupTableType READONLY AS

BEGIN
	BEGIN
		INSERT INTO [dbo].[tblPOSDrsGroup] (
			[strDrawerGroup]
			,[strDesc]
			,[bitInactive]
			,[dteRowUpdated]
			)
		SELECT [strDrawerGroup]
			,[strDesc]
			,[bitInactive]
			,[dteRowUpdated]
		FROM @tblData AS t
		WHERE NOT EXISTS (
				SELECT 1
				FROM tblPOSDrsGroup
				WHERE strDrawerGroup = t.strDrawerGroup
				)
	END

	BEGIN
		UPDATE [dbo].[tblPOSDrsGroup]
		SET [strDrawerGroup] = table2.strDrawerGroup
			,[strDesc] = table2.strDesc
			,[bitInactive] = table2.bitInactive
			,[dteRowUpdated] = table2.dteRowUpdated
		FROM tblPOSDrsGroup AS table1
		INNER JOIN @tblData AS table2 ON (table1.strDrawerGroup = table2.strDrawerGroup)
	END
END
GO

CREATE PROCEDURE [dbo].[GetInvImagesList] 
AS BEGIN 
	Select 
	  PartNumber, 
	  [Description], 
	  ImageCount, 
	  CAST((CASE WHEN ImageCount = 0 THEN 0 ELSE 1 END) AS bit) AS IsImageLoaded, 
	  CAST(0 AS bit) AS IsEdit 
	from (Select strPartNumber AS PartNumber, strDesc AS [Description], (Select Count(*) from tblInvImg B Where B.strPartnumber = A.strPartnumber) AS ImageCount from tblInv A) AS Result1 
END
GO

CREATE PROCEDURE [dbo].[DeleteInvImageByPartNumber]
@PartNumber As nvarchar(200)
AS
BEGIN

Delete from tblInvImg where strPartNumber = @PartNumber

End
GO

CREATE PROCEDURE [dbo].[DeleteInvImageById]
@ImageId As bigint
AS
BEGIN

Delete from tblInvImg where Image_Id = @ImageId

End
GO

CREATE PROCEDURE [dbo].[GetInvImagesByPartNumber]
@PartNumber As nvarchar(200)
AS
BEGIN

Select 	
imgData AS ImageByte,
Cast(bitDefaultImage As bit) AS IsDefaultImage,
Image_ID AS ImageID,
strPartNumber AS PartNumber
from tblInvImg Where strPartNumber = @PartNumber

END
GO

CREATE PROCEDURE [dbo].[UpdatePOPIDetails] @IsCustomer BIT
AS
BEGIN
	IF (EXISTS (
				SELECT TOP 1 *
				FROM tblUpdateBulkData
				)
			)
	BEGIN
		IF (@IsCustomer = 0)
		BEGIN
			UPDATE A
			SET A.strDocPassword = B.strValue
			FROM tblCustomers A
			INNER JOIN tblUpdateBulkData B ON A.strCustName = B.strName
		END
		ELSE
		BEGIN
			UPDATE A
			SET A.strDocPassword = B.strValue
			FROM tblVendors A
			INNER JOIN tblUpdateBulkData B ON A.strVendName = B.strName
		END
	END
END
GO

CREATE PROCEDURE [dbo].[GetCurrencyListForReport]
AS
BEGIN
	SELECT strCurrency AS CurrencyCode
		,strCurrName AS CurrencyName
		,bitHome AS IsHomeCurrency
	FROM tblCurrency
	ORDER BY strCurrName
END
GO

CREATE PROCEDURE [dbo].[GetCustomerCategoriesData] (
	@InActive BIT = 0
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@Search AS NVARCHAR(Max) = ''
	)
AS
BEGIN

	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT strCustCategory AS CustCategory
		,strDesc AS [Description]
		,bitInactive AS Inactive
	FROM tblCustomerCat
	WHERE (bitInactive = @InActive or bitInactive = 0)
		AND (
			ISNULL(strCustCategory, '') LIKE '%' + ISNULL(@search, strCustCategory) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
			)
	ORDER BY CustCategory OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

CREATE PROCEDURE [dbo].[GetCategoriesDataCount] @InActive BIT = 0
	,@Search AS NVARCHAR(Max) = ''
AS
BEGIN

	SELECT count(*)
	FROM tblCustomerCat
	WHERE (bitInactive = @InActive or bitInactive = 0)
		AND (
			ISNULL(strCustCategory, '') LIKE '%' + ISNULL(@search, strCustCategory) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
			)
END
GO

CREATE PROCEDURE [dbo].[GetInvPriceListsAllData] (
@PageSize INT = 25
,@PageNumber INT = 1
,@Search AS NVARCHAR(Max) = '')
AS
BEGIN
	DECLARE @skip INT
	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT *
	FROM tblPriceData
	WHERE (
			ISNULL(strPricelist, '') LIKE '%' + ISNULL(@search, strPricelist) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
			)
	ORDER BY strPricelist OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

CREATE PROCEDURE GetInvPriceListsAllDataCount
@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT count(*)
	FROM tblPriceData
	WHERE (
			ISNULL(strPricelist, '') LIKE '%' + ISNULL(@search, strPricelist) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
			)
END
GO


CREATE PROCEDURE [dbo].[GetDeliveryDriversData] (
@InActive BIT = 0
,@PageSize INT = 25
,@PageNumber INT = 1
,@Search AS NVARCHAR(Max) = '')
AS
BEGIN
	DECLARE @skip INT
	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT 
		strDelDriverCode as DelDriverCode,
        strDelDriverDesc as DelDriverDesc,
        strField1 as Field1,
        strField2 as Field2,
        strField3 as Field3,
        strField4 as Field4,
        strField5 as Field5,
        strField6 as Field6,
        strAddInfo as AddInfo,
        bitInactive as IsInactive
	FROM tblDeliveryDrivers
	WHERE bitInactive IN (0,ISNULL(@InActive, 1))
		AND (
			ISNULL(strDelDriverCode, '') LIKE '%' + ISNULL(@search, strDelDriverCode) + '%'
			OR ISNULL(strDelDriverDesc, '') LIKE '%' + ISNULL(@search, strDelDriverDesc) + '%'
			)
	ORDER BY DelDriverCode OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

CREATE PROCEDURE [dbo].[GetDeliveryDriversDataCount] @InActive BIT = 0
	,@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	IF (@InActive = 0)
	BEGIN
		SELECT count(*)
		FROM tblDeliveryDrivers
		WHERE bitInactive = 0
			AND (
				ISNULL(strDelDriverCode, '') LIKE '%' + ISNULL(@search, strDelDriverCode) + '%'
				OR ISNULL(strDelDriverDesc, '') LIKE '%' + ISNULL(@search, strDelDriverDesc) + '%'
				)
	END
	ELSE
	BEGIN
		SELECT count(*)
		FROM tblDeliveryDrivers
		WHERE (
				ISNULL(strDelDriverCode, '') LIKE '%' + ISNULL(@search, strDelDriverCode) + '%'
				OR ISNULL(strDelDriverDesc, '') LIKE '%' + ISNULL(@search, strDelDriverDesc) + '%'
				)
	END
END
GO

CREATE PROCEDURE [dbo].[GetServiceTypeListData] (  
@InActive BIT = 0  
,@PageSize INT = 25  
,@PageNumber INT = 1  
,@Search AS NVARCHAR(Max) = '')  
AS  
BEGIN  
 DECLARE @skip INT  
 SET @skip = @PageSize * (@PageNumber - 1)  
  
 SELECT   
  lngID as ID,  
  strServiceTypeCode as ServiceTypeCode ,  
  strServiceTypeDesc as ServiceTypeDesc,  
  bitInactive as IsInactive  
 FROM tblServiceTypes  
 WHERE bitInactive IN (  
   0  
   ,ISNULL(@InActive, 1)  
   )   
  AND (  
   ISNULL(strServiceTypeCode, '') LIKE '%' + ISNULL(@search, strServiceTypeCode) + '%'  
   OR ISNULL(strServiceTypeDesc, '') LIKE '%' + ISNULL(@search, strServiceTypeDesc) + '%'  
   )  
 ORDER BY strServiceTypeCode OFFSET(@Skip) ROWS  
  
 FETCH NEXT (@PageSize) ROWS ONLY  
END  
GO

CREATE PROCEDURE GetServiceTypeListDataCount
@InActive BIT = 0,
@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT count(*)
	FROM tblServiceTypes
	WHERE bitInactive = @InActive
		AND (
			ISNULL(strServiceTypeCode, '') LIKE '%' + ISNULL(@search, strServiceTypeCode) + '%'
			OR ISNULL(strServiceTypeDesc, '') LIKE '%' + ISNULL(@search, strServiceTypeDesc) + '%'
			)
END
GO

CREATE PROCEDURE [dbo].[GetTradeDiscountMatrixesData] (
@InActive BIT = 0
,@PageSize INT = 25
,@PageNumber INT = 1
,@Search AS NVARCHAR(Max) = '')
AS
BEGIN
	DECLARE @skip INT
	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT 
	 strMatrixType as MatrixType,
     strDesc as [Description],
     bitInactive as Inactive,
     bitApplyDisc as ApplyDisc
	FROM tblTradeDiscMatrix
	WHERE (bitInactive = @InActive or bitInactive = 0)
		AND (
			 ISNULL(strMatrixType, '') LIKE '%' + REPLACE(ISNULL(@search, strMatrixType), '_', '[_]') + '%'
            OR ISNULL(strDesc, '') LIKE '%' + REPLACE(ISNULL(@search, strDesc), '_', '[_]') + '%'
			)
	ORDER BY strMatrixType OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

CREATE PROCEDURE [dbo].[GetTradeDiscountMatrixesDataCount]
    @InActive BIT = 0,
    @Search AS NVARCHAR(Max) = ''
AS
BEGIN
    SELECT COUNT(*)
    FROM tblTradeDiscMatrix
    WHERE (bitInactive = @InActive OR bitInactive = 0)
        AND (
            ISNULL(strMatrixType, '') LIKE '%' + REPLACE(ISNULL(@search, strMatrixType), '_', '[_]') + '%'
            OR ISNULL(strDesc, '') LIKE '%' + REPLACE(ISNULL(@search, strDesc), '_', '[_]') + '%'
        )
END
GO

CREATE PROCEDURE [dbo].[GetVendorCategoriesData] (
@InActive BIT = 0
,@PageSize INT = 25
,@PageNumber INT = 1
,@Search AS NVARCHAR(Max) = '')
AS
BEGIN
	DECLARE @skip INT
	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT 
		strVendCategory as VendorCategory,  
		strDesc as VendorCatDescription,  
		bitInactive as Inactive  
	FROM tblVendorCat
	WHERE (bitInactive = 0 or bitInactive = @InActive)
		AND (
			ISNULL(strVendCategory, '') LIKE '%' + ISNULL(@search, strVendCategory) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
			)
	ORDER BY strVendCategory OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

CREATE PROCEDURE GetVendorCategoriesDataCount
@InActive BIT = 0,
@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT count(*)
	FROM tblVendorCat
	WHERE (bitInactive = 0 or bitInactive = @InActive)
		AND (
			ISNULL(strVendCategory, '') LIKE '%' + ISNULL(@search, strVendCategory) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
			)
END
GO

CREATE PROCEDURE [dbo].[GetSalesCyclesData] (
@PageSize INT = 25
,@PageNumber INT = 1
,@Search AS NVARCHAR(Max) = '')
AS
BEGIN
	DECLARE @skip INT
	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT 
		  strCycName as CycName,
		  strReference as Reference,
		  dteLastProcDate as LastProcDate
	FROM tblCycles
	WHERE (
			ISNULL(strCycName, '') LIKE '%' + ISNULL(@search, strCycName) + '%'
			OR ISNULL(strReference, '') LIKE '%' + ISNULL(@search, strReference) + '%'
			)
	ORDER BY strCycName OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

CREATE PROCEDURE GetSalesCyclesDataCount
@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT count(*)
	FROM tblCycles
	WHERE (
			ISNULL(strCycName, '') LIKE '%' + ISNULL(@search, strCycName) + '%'
			OR ISNULL(strReference, '') LIKE '%' + ISNULL(@search, strReference) + '%'
			)
END
GO

CREATE PROCEDURE [dbo].[GetMonthlyContractsData] (
@InActive BIT = 0
,@PageSize INT = 25
,@PageNumber INT = 1
,@Search AS NVARCHAR(Max) = '')
AS
BEGIN
	DECLARE @skip INT
	SET @skip = @PageSize * (@PageNumber - 1)
 
	SELECT 
		c.lngId as ID,
  c.lngContractType as ContractType,  
  c.strDescription  as Description,
  c.strContractNumber as ContractNumber,
  c.strContactPerson as ContactPerson,
  c.intGLNumber as GLNumber,
  c.strUserName as UserName,
  c.bitInactive as InActive,
  ISNULL((SELECT strContractType FROM tblOptContractType WHERE lngId = c.lngContractType),'') AS ContractTypes        
  FROM  tblContracts c
	WHERE (bitInactive = 0 or bitInactive = @InActive)
		AND (
			ISNULL(strContactPerson, '') LIKE '%' + ISNULL(@search, strContactPerson) + '%'
			OR ISNULL(strDescription, '') LIKE '%' + ISNULL(@search, strDescription) + '%'
			OR ISNULL(strContractNumber, '') LIKE '%' + ISNULL(@search, strContractNumber) + '%'
			OR ISNULL(intGLNumber, '') LIKE '%' + ISNULL(@search, intGLNumber) + '%'
			AND (bitInactive IN (0,@InActive) OR @InActive IS NULL) 
			)
	ORDER BY lngContractType OFFSET(@Skip) ROWS
 
	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

CREATE PROCEDURE [dbo].[GetMonthlyContractsDataCount]
@InActive BIT = 0,
@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT count(*)
	FROM tblContracts
	WHERE (bitInactive = 0 or bitInactive = @InActive)
		AND (
			ISNULL(strContactPerson, '') LIKE '%' + ISNULL(@search, strContactPerson) + '%'
			OR ISNULL(strDescription, '') LIKE '%' + ISNULL(@search, strDescription) + '%'
			OR ISNULL(strContractNumber, '') LIKE '%' + ISNULL(@search, strContractNumber) + '%'
			OR ISNULL(intGLNumber, '') LIKE '%' + ISNULL(@search, intGLNumber) + '%'
			AND (bitInactive IN (0,@InActive) OR @InActive IS NULL) 
			)
END
GO

CREATE PROCEDURE [dbo].[GetOwnersListData] (
@PageSize INT = 25
,@PageNumber INT = 1
,@Search AS NVARCHAR(Max) = '')
AS
BEGIN
	DECLARE @skip INT
	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT *  
 FROM tblOwners 
	WHERE (
			ISNULL(OwnerName, '') LIKE '%' + ISNULL(@search, OwnerName) + '%'
			OR ISNULL(OwnerDesc, '') LIKE '%' + ISNULL(@search, OwnerDesc) + '%'
			) AND Inactive= 0
	ORDER BY OwnerName OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

CREATE PROCEDURE GetOwnersListDataCount
@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT count(*)
	FROM tblOwners
	WHERE (
			ISNULL(OwnerName, '') LIKE '%' + ISNULL(@search, OwnerName) + '%'
			OR ISNULL(OwnerDesc, '') LIKE '%' + ISNULL(@search, OwnerDesc) + '%'
			)
END
GO

CREATE PROCEDURE [dbo].[GetAllRemindersData] (
@PageSize INT = 25
,@PageNumber INT = 1)
AS
BEGIN
	DECLARE @skip INT
	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT  
 tblReminders.strCustName AS CustName,  
  tblCustomers.strCustDesc AS CustDesc,   
  tblReminders.intFreq AS Freq,   
  tblReminders.dteNextSend AS NextSend,   
  tblReminders.strMessage AS Message,   
  tblReminders.lngID AS ID   
 FROM tblReminders   
 INNER JOIN tblCustomers ON tblReminders.strCustName = tblCustomers.strCustName
	ORDER BY tblReminders.strCustName, tblReminders.dteNextSend  OFFSET(@Skip) ROWS
	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

CREATE PROCEDURE GetAllRemindersDataCount
AS
BEGIN
	SELECT count(*)
	FROM tblReminders   
	INNER JOIN tblCustomers ON tblReminders.strCustName = tblCustomers.strCustName
END
GO

CREATE PROCEDURE [dbo].[GetAllAbbreviationsData] (
@InActive BIT = 0
,@PageSize INT = 25
,@PageNumber INT = 1
,@Search AS NVARCHAR(Max) = '')
AS
BEGIN
	DECLARE @skip INT
	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT 
		ID as ID,
		Abbreviation as Abbreviation,
		FullForm as FullForm,
		Inactive as Inactive,
		DateAdded as DateAdded,
		DateUpdated as DateUpdated
  FROM  tblAbbreviation
	WHERE (Inactive = 0 or Inactive = @InActive)
		AND (
			ISNULL(Abbreviation, '') LIKE '%' + ISNULL(@search, Abbreviation) + '%'
			OR ISNULL(FullForm, '') LIKE '%' + ISNULL(@search, FullForm) + '%'
			)
	ORDER BY Abbreviation OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

CREATE PROCEDURE GetAllAbbreviationsDataCount
@InActive BIT = 0,
@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT count(*)
	FROM tblAbbreviation
	WHERE (Inactive = 0 or Inactive = @InActive)
		AND (
			ISNULL(Abbreviation, '') LIKE '%' + ISNULL(@search, Abbreviation) + '%'
			OR ISNULL(FullForm, '') LIKE '%' + ISNULL(@search, FullForm) + '%'
			)
END
GO

CREATE PROCEDURE [dbo].[GetUsersListData] (
@PageSize INT = 25  
,@PageNumber INT = 1  
,@Search AS NVARCHAR(Max) = ''  
,@isLockedUser AS bit)  
AS  
BEGIN  
 DECLARE @skip INT  
 SET @skip = @PageSize * (@PageNumber - 1)  
  
 SELECT   
  tblUsers.strUserName AS 'UserName'    
  ,strName AS 'Name'    
  ,strCellNumber AS 'CellNumber'    
  ,strEmail AS 'Email'    
  ,strPassword AS 'Password'    
  ,blnIsAdmin AS 'IsAdmin'    
  ,blnIsLockedOut AS 'IsLockedOut'    
  ,blnMustChange AS 'MustChange'    
  ,blnCompany AS 'Company'    
  ,blnCoFileHandle AS 'CoFileHandle'    
  ,blnGL AS 'GL'    
  ,blnPayables AS 'Payables'    
  ,blnPayPayments AS 'PayPayments'    
  ,blnReceivables AS 'Receivables'    
  ,blnRecReceipts AS 'RecReceipts'    
  ,blnInventory AS 'Inventory'    
  ,blnInvAdjust AS 'InvAdjust'    
  ,blnInvCount AS 'InvCount'    
  ,blnSMS AS 'SMS'    
  ,blnBusMgr AS 'BusMgr'    
  ,blnPOS AS 'POS'    
  ,blnProjects AS 'Projects'    
  ,dteLastLogin AS 'LastLogin'    
  ,blnCashBook AS 'CashBook'    
  ,blnReminders AS 'Reminders'    
  ,blnMarketing AS 'Marketing'    
  ,blnCollection AS 'Collection'    
  ,blnPOSCash AS 'POSCash'    
  ,blnCoAdmin AS 'CoAdmin'    
  ,blnMainSum AS 'MainSum'    
  ,blnAcctSets AS 'AcctSets'    
  ,blnJournal AS 'Journal'    
  ,blnBankTrans AS 'BankTrans'    
  ,blnBankRecon AS 'BankRecon'    
  ,blnAPPurch AS 'APPurch'    
  ,blnAPTax AS 'APTax'    
  ,blnARCredit AS 'ARCredit'    
  ,blnARSales AS 'ARSales'    
  ,blnARBatch AS 'ARBatch'    
  ,blnInvPricelists AS 'InvPricelists'    
  ,blnInvLoc AS 'InvLoc'    
  ,blnInvCats AS 'InvCats'    
  ,blnInvAssbly AS 'InvAssbly'    
  ,blnInvTrans AS 'InvTrans'    
  ,blnSMSCredits AS 'SMSCredits'    
  ,blnPOSDrop AS 'POSDrop'    
  ,blnPOSTerminalSetup AS 'POSTerminalSetup'    
  ,blnPOSTerminalSetupList AS 'POSTerminalSetupList'    
  ,blnPOSProfileMenu AS 'POSProfileMenu'    
  ,blnBulkSMS AS 'BulkSMS'    
  ,blnGLExpense AS 'GLExpense'    
  ,blnDeposits AS 'Deposits'    
  ,blnInvPDT AS 'InvPDT'    
  ,blnARPersons AS 'ARPersons'    
  ,blnAPBatch AS 'APBatch'    
  ,blnAPBrowser AS 'APBrowser'    
  ,blnARBrowser AS 'ARBrowser'    
  ,blnTemplates AS 'Templates'    
  ,blnAREmail AS 'AREmail'    
  ,blnWHRec AS 'WHRec'    
  ,blnWHPick AS 'WHPick'    
  ,blnWHBatch AS 'WHBatch'    
  ,uID AS 'uid'    
  ,blnFiles AS 'Files'    
  ,strLocName AS 'LocName'    
  ,blnCycle AS 'Cycle'    
  ,blnInterest AS 'Interest'    
  ,blnAPOrders AS 'APOrders'    
  ,blnAPReq AS 'APReq'    
  ,blnAROrders AS 'AROrders'    
  ,blnARQuotes AS 'ARQuotes'    
  ,blnARQuSys AS 'ARQuSys'    
  ,blnWHStPick AS 'WHStPick'    
  ,blnInvBrowser AS 'InvBrowser'    
  ,blnWHShp AS 'WHShp'    
  ,blnWHPrPack AS 'WHPrPack'    
  ,blnWHCont AS 'WHCont'    
  ,blnWHMani AS 'WHMani'    
  ,blnWHShBrow AS 'WHShBrow'    
  ,blnJobCost AS 'JobCost'    
  ,blnDept AS 'Dept'    
  ,blnSubLedger AS 'SubLedger'    
  ,blnCLetters AS 'CLetters'    
  ,blnTop20 AS 'Top20'    
  ,blnTransTab AS 'TransTab'    
  ,blnRecPayJournal AS 'RecPayJournal'    
  ,blnARCats AS 'ARCats'    
  ,blnInvDiscMatrix AS 'InvDiscMatrix'    
  ,blnARBlockDesc AS 'ARBlockDesc'    
  ,blnARBlockUnit AS 'ARBlockUnit'    
  ,blnARBlockDiscount AS 'ARBlockDiscount'    
  ,blnAPBlockDesc AS 'APBlockDesc'    
  ,blnAPBlockUnit AS 'APBlockUnit'    
  ,blnAPBlockDiscount AS 'APBlockDiscount'    
  ,blnWHDelDriver AS 'WHDelDriver'    
  ,blnWHDelVehicle AS 'WHDelVehicle'    
  ,blnWHDelRoute AS 'WHDelRoute'    
  ,blnARCreditRequests AS 'ARCreditRequests'    
  ,blnBITab AS 'BITab'    
  ,blnBICubeAdd AS 'BICubeAdd'    
  ,blnBICubeEdit AS 'BICubeEdit'    
  ,blnBICubeDelete AS 'BICubeDelete'    
  ,blnBIViewAdd AS 'BIViewAdd'    
  ,blnBIViewEdit AS 'BIViewEdit'    
  ,blnBIViewDelete AS 'BIViewDelete'    
  ,blnARSendPricelists AS 'ARSendPricelists'    
  ,blnInvNumConv AS 'InvNumConv'    
  ,blnInvSerialTypes AS 'InvSerialTypes'    
  ,blnAPCats AS 'APCats'    
  ,blnARPrintPreview AS 'ARPrintPreview'    
  ,blnARCNChangesAllowed AS 'ARCNChangesAllowed'    
  ,blnARPriceChangeAllowed AS 'ARPriceChangeAllowed'    
  ,blnAPDNChangesAllowed AS 'APDNChangesAllowed'    
  ,blnARInvoiceAdjAllowed AS 'ARInvoiceAdjAllowed'    
  ,blnARAllowCreditNotesAndRequestItems AS 'ARAllowCreditNotesAndRequestItems'    
  ,blnAPPaymentApprovals AS 'APPaymentApprovals'    
  ,blnInvForecasting AS 'InvForecasting'    
  ,blnInvBarcode AS 'InvBarcode'    
  ,blnInvItemCostUpdater AS 'InvItemCostUpdater'    
  ,blnInvItemRenaming AS 'InvItemRenaming'    
  ,blnAPECOMSettings AS 'APECOMSettings'    
  ,blnAPShowStatsOnDocs AS 'APShowStatsOnDocs'    
  ,blnARShowStatsOnDocs AS 'ARShowStatsOnDocs'    
  ,blnGLOpenItemAlloc AS 'GLOpenItemAlloc'    
  ,blnGLLR AS 'GLLR'    
  ,blnGLLRFin AS 'GLLRFin'    
  ,blnGLLRFinBalSheetStd AS 'GLLRFinBalSheetStd'    
  ,blnGLLRFinBalSheetComp AS 'GLLRFinBalSheetComp'    
  ,blnGLLRFinIncomeStd AS 'GLLRFinIncomeStd'    
  ,blnGLLRFinIncomeComp AS 'GLLRFinIncomeComp'    
  ,blnGLLRFinIncomeMulti AS 'GLLRFinIncomeMulti'    
  ,blnGLLRFinIncomeGP AS 'GLLRFinIncomeGP'    
  ,blnGLLRFinIncomeMini AS 'GLLRFinIncomeMini'    
  ,blnGLLRFinTrialBal AS 'GLLRFinTrialBal'    
  ,blnGLLRFinPerMovement AS 'GLLRFinPerMovement'    
  ,blnGLLRFinMultiCompany AS 'GLLRFinMultiCompany'    
  ,blnGLLRTran AS 'GLLRTran'    
  ,blnGLLRTranLedger AS 'GLLRTranLedger'    
  ,blnGLLRTranEntryType AS 'GLLRTranEntryType'    
  ,blnGLLRTranTax AS 'GLLRTranTax'    
  ,blnGLLRTranDocTran AS 'GLLRTranDocTran'    
  ,blnGLLRBudgets AS 'GLLRBudgets'    
  ,blnGLLRBudgetsAmounts AS 'GLLRBudgetsAmounts'    
  ,blnGLLRBudgetsCompIncome AS 'GLLRBudgetsCompIncome'    
  ,blnGLLRBudgetsCompIncomeF AS 'GLLRBudgetsCompIncomeF'    
  ,blnGLLRBudgetsCompBalSheet AS 'GLLRBudgetsCompBalSheet'    
  ,blnGLLRDept AS 'GLLRDept'    
  ,blnGLLRDeptBalSheetStd AS 'GLLRDeptBalSheetStd'    
  ,blnGLLRDeptIncomeStd AS 'GLLRDeptIncomeStd'    
  ,blnGLLRDeptIncomeComp AS 'GLLRDeptIncomeComp'    
  ,blnGLLRDeptTrialBal AS 'GLLRDeptTrialBal'    
  ,blnGLLRDeptLedger AS 'GLLRDeptLedger'    
  ,blnGLLRDeptBudgetAmounts AS 'GLLRDeptBudgetAmounts'    
  ,blnGLLRDeptCompIncome AS 'GLLRDeptCompIncome'    
  ,blnGLLRLists AS 'GLLRLists'    
  ,blnGLLRListsAccounts AS 'GLLRListsAccounts'    
  ,blnGLLRListsAccountSets AS 'GLLRListsAccountSets'    
  ,blnGLLRListsJournalCodes AS 'GLLRListsJournalCodes'    
  ,blnGLCR AS 'GLCR'    
  ,blnGLCRFin AS 'GLCRFin'    
  ,blnGLCRFinIncome AS 'GLCRFinIncome'    
  ,blnGLCRFinIncomeMulti AS 'GLCRFinIncomeMulti'    
  ,blnGLCRTran AS 'GLCRTran'    
  ,blnGLCRTranAlloc AS 'GLCRTranAlloc'    
  ,blnGLCRTranAllocMissing AS 'GLCRTranAllocMissing'    
  ,blnGLCRBudget AS 'GLCRBudget'    
  ,blnGLCRBudgetCompBudget AS 'GLCRBudgetCompBudget'    
  ,blnGLCRLists AS 'GLCRLists'    
  ,blnGLCRListsProfitCenters AS 'GLCRListsProfitCenters'    
  ,blnAPPR AS 'APPR'    
  ,blnAPPRFin AS 'APPRFin'    
  ,blnAPPRFinVendorAged AS 'APPRFinVendorAged'    
  ,blnAPPRTran AS 'APPRTran'    
  ,blnAPPRTranVendorPurchases AS 'APPRTranVendorPurchases'    
  ,blnAPPRTranPendingPurchaseOrders AS 'APPRTranPendingPurchaseOrders'    
  ,blnAPPRTranPendingPurchaseReq AS 'APPRTranPendingPurchaseReq'    
  ,blnAPPRTranVendorTran AS 'APPRTranVendorTran' 
  ,blnAPETIMSPurchasesTrans AS 'APETIMSPurchasesTrans'
  ,blnAPPRLists AS 'APPRLists'    
  ,blnAPPRListsVendors AS 'APPRListsVendors'    
  ,blnAPPRListsContacts AS 'APPRListsContacts'    
  ,blnARRR AS 'ARRR'    
  ,blnARRRFin AS 'ARRRFin'    
  ,blnARRRFinCustAged AS 'ARRRFinCustAged'    
  ,blnARRRFinCallSheet AS 'ARRRFinCallSheet'    
  ,blnARRRFinCustStatements AS 'ARRRFinCustStatements'    
  ,blnARRRFinSalesStatements AS 'ARRRFinSalesStatements'    
  ,blnARRRFinInvoiceGP AS 'ARRRFinInvoiceGP'    
  ,blnARRRFinCustProfiability AS 'ARRRFinCustProfiability'    
  ,blnARRRFinCustSalesTargets AS 'ARRRFinCustSalesTargets'    
  ,blnARRRFinCustSalesTrends AS 'ARRRFinCustSalesTrends'    
  ,blnARRRFinSPPerf AS 'ARRRFinSPPerf'    
  ,blnARRRFinSPTargets AS 'ARRRFinSPTargets'    
  ,blnARRRTran AS 'ARRRTran'    
  ,blnARRRTranCustSales AS 'ARRRTranCustSales'    
  ,blnARRRTranSPSales AS 'ARRRTranSPSales'    
  ,blnARRRTranSPMissing AS 'ARRRTranSPMissing'    
  ,blnARRRTranInvoiceDocs AS 'ARRRTranInvoiceDocs'    
  ,blnARRRTranCashUp AS 'ARRRTranCashUp'    
  ,blnARRRTranPendingSalesOrders AS 'ARRRTranPendingSalesOrders'    
  ,blnARRRTranClosedSalesOrders AS 'ARRRTranClosedSalesOrders'    
  ,blnARRRTranCredits AS 'ARRRTranCredits'    
  ,blnARRRTranCustTran AS 'ARRRTranCustTran'    
  ,blnARRRTranOpenQuotes AS 'ARRRTranOpenQuotes'    
  ,blnARRRLists AS 'ARRRLists'    
  ,blnARRRListsPricelist AS 'ARRRListsPricelist'    
  ,blnARRRListsCustomers AS 'ARRRListsCustomers'    
  ,blnARRRListsSalesPersons AS 'ARRRListsSalesPersons'    
  ,blnARRRListsContactsList AS 'ARRRListsContactsList'    
  ,blnIR AS 'IR'    
  ,blnIRFin AS 'IRFin'    
  ,blnIRFinInvAged AS 'IRFinInvAged'    
  ,blnIRFinInvValuation AS 'IRFinInvValuation'    
  ,blnIRFinLocSum AS 'IRFinLocSum'    
  ,blnIRFinInvLoc AS 'IRFinInvLoc'    
  ,blnIRFinInvBin AS 'IRFinInvBin'    
  ,blnIRFinQuantity AS 'IRFinQuantity'    
  ,blnIRFinQuantityLoc AS 'IRFinQuantityLoc'    
  ,blnIRFinInvSalesTargets AS 'IRFinInvSalesTargets'    
  ,blnIRTran AS 'IRTran'    
  ,blnIRTranInvSales AS 'IRTranInvSales'    
  ,blnIRTranInvTran AS 'IRTranInvTran'    
  ,blnIRTranInvLedger AS 'IRTranInvLedger'    
  ,blnIRTranInvLedgerLoc AS 'IRTranInvLedgerLoc'    
  ,blnIRTranNegInvCorrections AS 'IRTranNegInvCorrections'    
  ,blnIRTranPricelistChangeLog AS 'IRTranPricelistChangeLog'    
  ,blnIRTranSegInvMovement AS 'IRTranSegInvMovement'    
  ,blnIRTranSegInvSales AS 'IRTranSegInvSales'    
  ,blnIRTranSerializedItemTracking AS 'IRTranSerializedItemTracking'    
  ,blnIRLists AS 'IRLists'    
  ,blnIRListsPricing AS 'IRListsPricing'    
  ,blnIRListsInventory AS 'IRListsInventory'    
  ,blnIRListsStockCountSheets AS 'IRListsStockCountSheets'    
  ,blnIRListsAdjustments AS 'IRListsAdjustments'    
  ,blnWR AS 'WR'    
  ,blnWROrders AS 'WROrders'    
  ,blnWROrdersPendingPurchaseOrders AS 'WROrdersPendingPurchaseOrders'    
  ,blnWROrdersPendingSalesOrders AS 'WROrdersPendingSalesOrders'    
  ,blnPOSR AS 'POSR'    
  ,blnPOSRFin AS 'POSRFin'    
  ,blnPOSRFinDrawerClosing AS 'POSRFinDrawerClosing'    
  ,blnPOSRFinCashierVariance AS 'POSRFinCashierVariance'    
  ,blnPOSRLists AS 'POSRLists'    
  ,blnPOSRListsCashDrawers AS 'POSRListsCashDrawers'    
  ,blnBR AS 'BR'    
  ,blnBRProj AS 'BRProj'    
  ,blnBRProjTender AS 'BRProjTender'    
  ,blnBRProjAlloc AS 'BRProjAlloc'    
  ,blnBRProjMissingAllow AS 'BRProjMissingAllow'    
  ,blnBRProjSalesMatrix AS 'BRProjSalesMatrix'    
  ,blnBRProjPurchMatrix AS 'BRProjPurchMatrix'    
  ,blnBRProjCombinedMatrix AS 'BRProjCombinedMatrix'    
  ,blnBRProjActvsBudget AS 'BRProjActvsBudget'    
  ,blnBRAdmin AS 'BRAdmin'    
  ,blnBRAdminHistory AS 'BRAdminHistory'    
  ,blnSMSRLog AS 'SMSRLog'    
  ,blnGLJournalReports AS 'GLJournalReports'    
  ,blnGLTransactionReports AS 'GLTransactionReports'    
  ,blnAPPaymentsReports AS 'APPaymentsReports'    
  ,blnAPTransactionsReports AS 'APTransactionsReports'    
  ,blnARReceiptsReports AS 'ARReceiptsReports'    
  ,blnARTransactionsReports AS 'ARTransactionsReports'    
  ,blnISalesReports AS 'ISalesReports'    
  ,blnITransactionsReports AS 'ITransactionsReports'    
  ,blnSMSR AS 'SMSR'    
  ,blnFHQCanApprove AS 'FHQCanApprove'    
  ,blnFHQCreatePurchaseOrder AS 'FHQCreatePurchaseOrder'    
  ,blnARViewMarginPercentage AS 'ARViewMarginPercentage'    
  ,blnAPPendingPayApprovals AS 'APPendingPayApprovals'    
  ,blnGLLRTranCashBook AS 'GLLRTranCashBook'    
  ,blnAPPRTranVendAccrual AS 'APPRTranVendAccrual'    
  ,blnIRListsItemWhereUsed AS 'IRListsItemWhereUsed'    
  ,blnIRTranBillOfMaterials AS 'IRTranBillOfMaterials'    
  ,blnAPBulkRFQ AS 'APBulkRFQ'    
  ,blnInvProdSchedule AS 'InvProdSchedule'    
  ,blnInvWorkCentres AS 'InvWorkCentres'    
  ,blnIRListsProductionSchedule AS 'IRListsProductionSchedule'    
  ,blnAPPRTranBulkRFQ AS 'APPRTranBulkRFQ'    
  ,blnRecReceiptsReversal AS 'RecReceiptsReversal'    
  ,blnARRRTranSalesSummary AS 'ARRRTranSalesSummary'    
  ,blnDashMain AS 'DashMain'    
  ,blnDashBusiness AS 'DashBusiness'    
  ,blnDashAR AS 'DashAR'    
  ,blnARChangeCustOnSO AS 'ARChangeCustOnSO'    
  ,blnARChangeCustOnSQ AS 'ARChangeCustOnSQ'    
  ,blnAPOrdersRemove AS 'APOrdersRemove'    
  ,blnAPReqRemove AS 'APReqRemove'    
  ,blnAROrdersRemove AS 'AROrdersRemove'    
  ,blnARQuotesRemove AS 'ARQuotesRemove'    
  ,blnARCreditRequestsRemove AS 'ARCreditRequestsRemove'    
  ,blnAPBlockTax AS 'APBlockTax'    
  ,blnARBlockTax AS 'ARBlockTax'    
  ,blnAPBulkRFQRemove AS 'APBulkRFQRemove'    
  ,blnARQuSysRemove AS 'ARQuSysRemove'    
  ,blnWHStPickRemove AS 'WHStPickRemove'    
  ,blnWHRecRemove AS 'WHRecRemove'    
  ,blnWHShpRemove AS 'WHShpRemove'    
  ,blnWHContRemove AS 'WHContRemove'    
  ,blnARMatrixType AS 'ARMatrixType'    
  ,blnARMatrixTypeEdit AS 'ARMatrixTypeEdit'    
  ,blnARMatrixTypeRemove AS 'ARMatrixTypeRemove'    
  ,blnIRTranInvEfficiency AS 'IRTranInvEfficiency'    
  ,blnInvLotNumExpiryDates AS 'InvLotNumExpiryDates'    
  ,blnARRRTranMatrixTypeChangeLog AS 'ARRRTranMatrixTypeChangeLog'    
  ,blnInvBulkLabelPrinting AS 'InvBulkLabelPrinting'    
  ,bitInvVoucher AS 'InvVoucher'    
  ,blnInvShowItemCost AS 'InvShowItemCost'    
  ,bitInvWebstoreSync AS 'InvWebstoreSync'    
  ,strSalesName AS 'SalesName'    
  ,IsNull(intARDept, 0) AS 'ARDept'    
  ,IsNUll(intAPDept, 0) AS 'APDept'    
  ,bitARVoucerReprint AS 'ARVoucerReprint'    
  ,blnARChangeDocInfo AS 'ARChangeDocInfo'    
  ,blnAPChangeDocInfo AS 'APChangeDocInfo'    
  ,blnFADepreciateAsset AS 'FADepreciateAsset'    
  ,blnFAAssets AS 'FAAssets'    
  ,blnFAAssetTypes AS 'FAAssetTypes'    
  ,blnFADepreciationMethods AS 'FADepreciationMethods'    
  ,blnFACostTypes AS 'FACostTypes'    
  ,blnFADisposalMethods AS 'FADisposalMethods'    
  ,blnFAR AS 'FAR'    
  ,blnFARSummary AS 'FARSummary'    
  ,blnFARAssetListing AS 'FARAssetListing'    
  ,blnFARDisposals AS 'FARDisposals'    
  ,blnFARDepreciationListing AS 'FARDepreciationListing'    
  ,blnFARAssetPurchases AS 'FARAssetPurchases'    
  ,blnFARAssetEfficiency AS 'FARAssetEfficiency'    
  ,blnInvDimensions AS 'InvDimensions'    
  ,blnInvValueBasedPrice AS 'InvValueBasedPrice'    
  ,blnInvValueBasedPriceEdit AS 'InvValueBasedPriceEdit'    
  ,blnInvValueBasedPriceRemove AS 'InvValueBasedPriceRemove'    
  ,blnFARTran AS 'FARTran'    
  ,blnFARLists AS 'FARLists'    
  ,blnARSOAdjAllowed AS 'ARSOAdjAllowed'    
  ,blnARSQAdjAllowed AS 'ARSQAdjAllowed'    
  ,blnARFHQAdjAllowed AS 'ARFHQAdjAllowed'    
  ,blnARCNAdjAllowed AS 'ARCNAdjAllowed'    
  ,blnARCRAdjAllowed AS 'ARCRAdjAllowed'    
  ,blnARCreditNotes AS 'ARCreditNotes'    
  ,blnARChangeDept AS 'ARChangeDept'    
  ,blnAPInvoiceAdjAllowed AS 'APInvoiceAdjAllowed'    
  ,blnAPPOAdjAllowed AS 'APPOAdjAllowed'    
  ,blnAPPRAdjAllowed AS 'APPRAdjAllowed'    
  ,blnARChangeCenter AS 'ARChangeCenter'    
  ,bitPOSEnableEditDiscount AS 'POSEnableEditDiscount'    
  ,blnPOSOrders AS 'POSOrders'    
  ,blnPOSQuotes AS 'POSQuotes'    
  ,blnPOSConvertOrders AS 'POSConvertOrders'    
  ,blnPOSConvertQuotes AS 'POSConvertQuotes'    
  ,blnPOSAuthPayByAccount AS 'POSAuthPayByAccount'    
  ,blnPOSAuthoriseRefunds AS 'POSAuthoriseRefunds'    
  ,blnARCreditBlockSI AS 'ARCreditBlockSI'    
  ,blnARCreditBlockSO AS 'ARCreditBlockSO'    
  ,blnARDeliveryAdvice AS 'ARDeliveryAdvice'    
  ,blnARDeliveryAdviceRemove AS 'ARDeliveryAdviceRemove'    
  ,blnInvCanChangeSellingPrice AS 'InvCanChangeSellingPrice'    
  ,blnARSalesPersonChangeApproval AS 'ARSalesPersonChangeApproval'    
  ,blnIRFinInvCostAnalysis AS 'IRFinInvCostAnalysis'    
  ,blnMFWorkOrders AS 'MFWorkOrders'    
  ,blnMFJobs AS 'MFJobs'    
  ,blnMFJobAdjustApproval AS 'MFJobAdjustApproval'    
  ,blnMFProductionSchedule AS 'MFProductionSchedule'    
  ,blnMFPostWIP AS 'MFPostWIP'    
  ,blnMFBillOfMaterial AS 'MFBillOfMaterial'    
  ,blnMFBOMAdjustApproval AS 'MFBOMAdjustApproval'    
  ,blnMFWorkCentres AS 'MFWorkCentres'    
  ,blnMFLabour AS 'MFLabour'    
  ,blnMFMachinery AS 'MFMachinery'    
  ,blnMFTransferJobs AS 'MFTransferJobs'    
  ,blnMFR AS 'MFR'    
  ,blnMFRTran AS 'MFRTran'    
  ,blnMFRWorkInProgress AS 'MFRWorkInProgress'    
  ,blnMFRLists AS 'MFRLists'    
  ,blnMFRBillOfMaterial AS 'MFRBillOfMaterial'    
  ,blnMFRResource AS 'MFRResource'    
  ,blnMFRItemWhereUsed AS 'MFRItemWhereUsed'    
  ,blnMFRSerialLotOutOfSeq AS 'MFRSerialLotOutOfSeq'    
  ,blnMFRMRP AS 'MFRMRP'    
  ,blnInvWorkOrder AS 'InvWorkOrder'    
  ,blnInvIntReq AS 'InvIntReq'    
  ,blnInvIssReq AS 'InvIssReq'    
  ,blnARRRTranCustAccrual AS 'ARRRTranCustAccrual'    
  ,blnARRRFinOrderStatement AS 'ARRRFinOrderStatement'    
  ,blnIRListsInvIntReq AS 'IRListsInvIntReq'    
  ,blnMFCloseJobs AS 'MFCloseJobs'    
  ,blnFAAssetsDisposal AS 'FAAssetsDisposal'    
  ,blnFAAssetsLocations AS 'FAAssetsLocations'    
  ,blnFARAssetRegister AS 'FARAssetRegister'    
  ,blnDashAP AS 'DashAP'    
  ,blnDashInventory AS 'DashInventory'    
  ,blnDashWarehouse AS 'DashWarehouse'    
  ,blnAPSetupPOApprovers AS 'APSetupPQApprovers'    
  ,blnApprovePurchaseOrders AS 'ApprovePurchaseQuotes'    
  ,blnMFRWCTransfer AS 'MFRWCTransfer'    
  ,blnInvCatMarginApproval AS 'InvCatMarginApproval'    
  ,blnMobSa AS 'MobSa'    
  ,blnMobSaOrdProcess AS 'MobSaOrdProcess'    
  ,blnMobSaGeoTrack AS 'MobSaGeoTrack'    
  ,blnMobPhDash AS 'MobPhDash'    
  ,blnMobPhDashBankBal AS 'MobPhDashBankBal'    
  ,blnMobPhDashSalesItemComp AS 'MobPhDashSalesItemComp'    
  ,blnMobPhDashSalesCustCat AS 'MobPhDashSalesCustCat'    
  ,blnMobPhDashOutCustCat AS 'MobPhDashOutCustCat'    
  ,blnMobPhDashCustVendBal AS 'MobPhDashCustVendBal'    
  ,blnMobPhDashInvQty AS 'MobPhDashInvQty'    
  ,blnMobPhDashSalesPerf AS 'MobPhDashSalesPerf'    
  ,blnMobPhPOApproval AS 'MobPhPOApproval'    
  ,blnMobPhDashTimesheet AS 'MobPhDashTimesheet'    
  ,blnBRProjClaimStatement AS 'BRProjClaimStatement'    
  ,blnARRRTranCancelSalesDocs AS 'ARRRTranCancelSalesDocs'    
  ,blnAREditDeliveryMethod AS 'AREditDeliveryMethod'    
  ,blnInvIsRepackaging AS 'InvIsRepackaging'    
  ,blnIRRepackaging AS 'IRRepackaging'    
  ,blnContractBilling AS 'ContractBilling'    
  ,blnContractBillingType AS 'ContractBillingType'    
  ,blnProcessContractBilling AS 'ProcessContractBilling'    
  ,blnARRRecurringInvoice AS 'ARRRecurringInvoice'    
  ,blnARRContractExpiry AS 'ARRContractExpiry'    
  ,blnARRContractReconciliation AS 'ARRContractReconciliation'    
  ,blnAPReOrders AS 'APReOrders'    
  ,blnARShipmentsAuditTrail AS 'ARShipmentsAuditTrail'    
  ,blnARSalesOrderEDI AS 'ARSalesOrderEDI'    
  ,blnAPGRVAdjustmentApproval AS 'WHRecAdjust'    
  ,blnAPReturnSelection AS 'APReturn'    
  ,blnAPReturnAdjustmentApproval AS 'RetAprAdjust'    
  ,blnARDAAdjustmentApproval AS 'ARDeliveryAdviceAdjustApproval'    
  ,blnWHDelMethod AS WHDelMethod    
  ,tblUsersDocs.strUserName    
  ,strInvNumber AS 'InvNumber'    
  ,strSONumber AS 'SONumber'    
  ,strQuoteNumber AS 'QuoteNumber'    
  ,strPINumber AS 'PINumber'    
  ,strPONumber AS 'PONumber'    
  ,strRCNumber AS 'RCNumber'    
  ,strDPNumber AS 'DPNumber'    
  ,strJENumber AS 'JENumber'    
  ,strCNNumber AS 'CNNumber'    
  ,strDNNumber AS 'DNNumber'    
  ,strRQNumber AS 'RQNumber'    
  ,strQuSysNumber AS 'QuSysNumber'    
  ,strGRVNumber AS 'GRVNumber'    
  ,strTKNumber AS 'TKNumber'    
  ,strSHNumber AS 'SHNumber'    
  ,strMSNumber AS 'MSNumber'    
  ,strCRNumber AS 'CRNumber'    
  ,strRFQNumber AS 'RFQNumber'    
  ,strPSNumber AS 'PSNumber'    
  ,strDANumber AS 'DANumber'    
  ,strWONumber AS 'WONumber'    
  ,strJBNumber AS 'JBNumber'    
  ,strWPNumber AS 'WPNumber'    
  ,strIWONumber AS 'IWONumber'    
  ,strPYNumber AS 'PYNumber'    
  ,strCBNumber AS 'CBNumber'    
  ,strPRONumber AS 'PRONumber'    
  ,strBMNumber AS 'BMNumber'    
  ,strWSQuoteNumber AS 'WSQuoteNumber'    
  ,strWSPJBNumber AS 'WSPJBNumber'    
  ,strWSIJBNumber AS 'WSIJBNumber'    
  ,strWSWIPNumber AS 'WSWIPNumber'    
  ,blnIRTranLotNumMovement AS 'IRTranLotNumberMovement'    
  ,blnBankManager AS 'BankManager'    
  ,blnAPPRTranInvoiceDocs AS 'APPRTranInvoiceDocs'    
  ,blnMFRJobStatus AS 'MFRJobStatus'    
  ,blnMFRProdVariance AS 'MFRProdVariance'    
  ,blnMFRManVariance AS 'MFRManVariance'    
  ,blnAPPriceChangeAllowed AS 'APPriceChangeAllowed'    
  ,blnDashManage AS 'DashManage'    
  ,blnGLMergeAccounts AS 'MergeAcct'    
  ,blnWSWorkshop AS 'WSWorkshop'    
  ,blnWSBrowser AS 'WSBrowser'    
  ,blnWSInvoice AS 'WSInvoice'    
  ,blnWSInvoiceAdjAllowed AS 'WSInvoiceAdjAllowed'    
  ,blnWSPrintPreview AS 'WSPrintPreview'    
  ,blnWSProcessJob AS 'WSProcessJob'    
  ,blnWSProcessJobRemove AS 'WSProcessJobRemove'    
  ,blnWSProcessJobAdjAllowed AS 'WSProcessJobAdjAllowed'    
  ,blnWSQuote AS 'WSQuote'    
  ,blnWSQuoteRemove AS 'WSQuoteRemove'    
  ,blnWSQuoteAdjAllowed AS 'WSQuoteAdjAllowed'    
  ,blnWSCreditNote AS 'WSCreditNote'    
  ,blnWSCNChangesAllowed AS 'WSCNChangesAllowed'    
  ,blnWSCNAdjAllowed AS 'WSCNAdjAllowed'    
  ,blnWSCreditRequest AS 'WSCreditRequest'    
  ,blnWSCreditRequestsRemove AS 'WSCreditRequestsRemove'    
  ,blnWSCRAdjAllowed AS 'WSCRAdjAllowed'    
  ,blnWSAllowCreditNotesAndRequestItems AS 'WSAllowCreditNotesAndRequestItems'    
  ,blnWSReceipts AS 'WSReceipts'    
  ,blnWSReceiptsReversal AS 'WSReceiptsReversal'    
  ,blnWSServiceableItem AS 'WSServiceableItem'    
  ,blnWSServiceableItemType AS 'WSServiceableItemType'    
  ,blnWSJobTemplate AS 'WSJobTemplate'    
  ,blnWSSetupTechnician AS 'WSSetupTechnician'    
  ,blnWSSchedule AS 'WSSchedule'    
  ,blnWSInventoryIssue AS 'WSInventoryIssue'    
  ,blnworkshop0 AS 'workshop0'    
  ,blnWSTran AS 'WSTran'    
  ,blnWSWorkInProgress AS 'WSWorkInProgress'    
  ,blnWSJobProfitability AS 'WSJobProfitability'    
  ,blnWSResourceUsage AS 'WSResourceUsage'    
  ,blnWSJobCostVariance AS 'WSJobCostVariance'    
  ,blnWSLists AS 'WSLists'    
  ,blnWSJobTemplateList AS 'WSJobTemplateList'    
  ,blnWSProcDocuments AS 'WSProcDocuments'    
  ,blnWSViewMarginPercentage AS 'WSViewMarginPercentage'    
  ,blnWSCreditBlockIJB AS 'WSCreditBlockIJB'    
  ,blnWSCreditBlockPJB AS 'WSCreditBlockPJB'    
  ,blnARConfirmDeliveryAllowed AS 'ARConfirmDeliveryAllowed'    
  ,blnGLContracts AS 'GLContracts'    
  ,blnGLLRContracts AS 'GLLRContracts'    
  ,blnGLLRContractsMonthly AS 'GLLRContractsMonthly'    
  ,blnGLLRContractsIncomeStatement AS 'GLLRContractsIncomeStatement'    
  ,blnPOSPayouts AS 'POSPayouts'    
  ,blnARLayby AS 'ARLayby'    
  ,blnARChangeCustOnLB AS 'ARChangeCustOnLB'    
  ,blnARLaybyRemove AS 'ARLaybyRemove'    
  ,blnARLBAdjAllowed AS 'ARLBAdjAllowed'    
  ,blnARCreditBlockLB AS 'ARCreditBlockLB'    
  ,blnPOSLayby AS 'POSLayby'    
  ,blnPOSConvertLayby AS 'POSConvertLayby'    
  ,blnAPVenRecon AS 'APVenRecon'    
  ,blnAPVenReconWorksheet AS 'APVenReconWorksheet'    
  ,blnAPBuyers AS 'APBuyers'    
  ,blnAPVenReconTypes AS 'APVenReconTypes'    
  ,blnBRProjResources AS 'BRProjResources'    
  ,blnBRProjFinInfo AS 'BRProjFinInfo'    
  ,blnBRProjChecklist AS 'BRProjChecklist'    
  ,blnBRProjCashFlow AS 'BRProjCashFlow'    
  ,blnARPODManagement AS 'ARPODManagement'    
  ,blnInvEmployee AS 'InvEmployee'    
  ,blnApproveInventoryRequistion AS 'ApproveInventoryRequistion'    
  ,blnAPSetupIRApprovers AS 'APSetupIRApprovers'    
  ,strLBNumber AS 'LBNumber'    
  ,blnPOSAuthoriseReturn AS 'POSAuthoriseReturn'    
  ,blnIBTBranchTransOrder AS 'IBTBranchTransferOrder'    
  ,blnIBTBranchTrans AS 'IBTBranchTransfer'    
  ,blnIBTBranchTransReceipt AS 'IBTBranchTransferReceipt'    
  ,blnIBTGoodInTransitRpt AS 'IBTGoodsInTransitReport'    
  ,blnARSoftBOMConfiguration AS 'ARSoftBOMConfiguration'    
  ,blnPOSFormsSetup AS 'POSFormsSetup'    
  ,blnBinTransfer AS 'BinTransfer'    
  ,blnIRFinInvPurchaseTargets AS 'IRFinInvPurchaseTargets'    
  ,blnAPPRBudOnPRApproval AS 'APPRBudOnPRApproval'    
  ,blnAPBudgetAnalysis AS 'APBudgetAnalysis'    
  ,blnAPZRAPurchasesTrans AS 'APZRAPurchasesTrans'
  ,blnPOSCreateCustomer AS 'POSCreateCustomer'    
  ,blnPOSSync AS 'POSSync'    
  ,blnMFBlockDesc AS 'MFBOMBlockDesc'    
  ,blnTrackUser AS 'TrackUser'    
  ,blnMobPerformanceDashboard AS 'MobPerformanceDashboard'    
  ,blnOverBudgetReq AS 'OverBudgetReq'    
  ,blnNonBudgetReq AS 'NonBudgetReq'    
  ,blnMaterialProfile AS 'MaterialProfile'    
  ,blnPOSReinstallStoredProcedures AS 'POSReinstallStoredProcedures'    
  ,blnPOSRePrintLastInvoice AS 'POSRePrintLastInvoice'    
  ,blnCRMTaskListing AS 'CRMTaskListing'    
  ,blnCRMOverdueTask AS 'CRMOverdueTask'    
  ,blnCRMStatusGroups AS 'CRMStatusGroups'    
  ,blnCRMProductivity AS 'CRMProductivity'    
  ,blnDashCRM AS 'DashCRM'    
  ,blnPOSOpenCashDrawer AS 'POSOpenCashDrawer'    
  ,blnESDSetupRegistration AS 'ESDSetupRegistration'    
  ,blnWSChangeCenter AS 'WSChangeCenter'    
  ,bitMobileUserLoginHistory AS 'MobileUserLoginHistory'    
  ,blnPOSReprintInvoiceFromHistory AS 'POSReprintInvoiceFromHistory'    
  ,blnPOSOpenPreviousReceipts AS 'POSOpenPreviousReceipts'    
  ,blnPOSReversePreviousReceipts AS 'POSReversePreviousReceipts'    
  ,blnUserRegDetails AS 'UserRegDetails'    
  ,blnIsMobileUser AS 'IsMobileUser'    
  ,blnIsMonitorSalespersonsTracking AS 'IsMonitorSalespersonsTracking'    
  ,blnIsMobileSalesOrder AS 'IsMobileSalesOrder'    
  ,blnIsMobileSalesQuote AS 'IsMobileSalesQuote'    
  ,blnIsMobileFreehandQuote AS 'IsMobileFreehandQuote'    
  ,blnIsMobileCRMActivities AS 'IsMobileCRMActivities'    
  ,blnIsMobileCapturePOD AS 'IsMobileCapturePOD'    
  ,blnIsMobileCustomers AS 'IsMobileCustomers'    
  ,blnIsMobileExpenseClaims AS 'IsMobileExpenseClaims'    
  ,blnIsMobileDeliveryAdvice AS 'IsMobileDeliveryAdvice'    
  ,blnIsMobileEnuiriesByItem AS 'IsMobileEnuiriesByItem'    
  ,blnIsMobileEnuiriesByLocation AS 'IsMobileEnuiriesByLocation'    
  ,blnIsMobileWarehouseTransfer AS 'IsMobileWarehouseTransfer'    
  ,blnIsMobileBinTransfer AS 'IsMobileBinTransfer'    
  ,blnIsMobileGoodsReceiving AS 'IsMobileGoodsReceiving'    
  ,blnIsMobileStockCount AS 'IsMobileStockCount'    
  ,blnIsMobilePutAway AS 'IsMobilePutAway'    
  ,blnIsMobileStockPick AS 'IsMobileStockPick'    
  ,blnIsMobileJobWorkCentreTransfer AS 'IsMobileJobWorkCentreTransfer'    
  ,blnIsMobileInventoryIssue AS 'IsMobileInventoryIssue'    
  ,strVendName AS 'VendName'    
  ,blnIsMobileWSCreateQuotation AS 'IsMobileWSCreateQuotation'    
  ,blnIsMobileWSProcessJob AS 'IsMobileWSProcessJob'    
  ,blnIsMobileWSSchedule AS 'IsMobileWSSchedule'    
  ,blnIsMobileWSInventoryIssue AS 'IsMobileWSInventoryIssue'    
  ,blnIsMobileProcuPurchaseRequisitions AS 'IsMobileProcuPurchaseRequisitions'    
  ,blnIsMobileProcuPurchaseOrder AS 'IsMobileProcuPurchaseOrder'    
  ,blnIsMobileWSServiceableItem AS 'IsMobileWSServiceableItem'    
  ,blnWSServiceHistory AS 'WSServiceHistory'    
  ,blnInvInventoryActive AS 'InvInventoryActive'    
  ,blnInvIncompatibleItems AS 'InvIncompatibleItems'    
  ,blnAPRebateSetup AS 'APRebateSetup'    
  ,blnAPProcessRebate AS 'APProcessRebate'    
  ,blnAPRebateReport AS 'APRebateReport'    
  ,blnARRRFinSPCOMM AS 'ARRRFinSPCOMM'  
  ,blnWRShipment AS 'WRShipmentReport'  
  ,blnIsMobileFinance AS 'IsMobileFinance'  
  ,blnIsMobileCreditNoteApproval AS 'IsMobileCreditNoteApproval'  
  ,blnIsMobileSalesInvoice AS 'IsMobileSalesInvoice'  
  ,CASE   
        WHEN ISNULL(strDefaultLanguage, '') = '' THEN 'En'   
        ELSE strDefaultLanguage   
    END AS 'DefaultLanguage'   
  ,blnGLApprovalAdjusment as 'IsGLApprovalAdjusment'  
  ,blnIsDispensingCashOnCashGuard as 'IsDispensingCashOnCashGuard'  
  ,bitIsEditComponentCost as 'IsEditComponentCost'  
  ,blnMFReverseJobs as 'MFReverseJobs'  
  ,blnMFBOMItemCostsOnReport as 'MFBOMItemCostsOnReport'  
  ,blnMFReverseJobEditQty as 'MFReverseJobEditQty'  
  ,blnPOSDrawerGroups AS 'POSDrawerGroups' 
  ,blnCRMMyActivities AS 'CRMMyActivities'
  ,blnCRMMyActions AS 'CRMMyActions'
  ,blnCRMUnassignedActivities AS 'CRMUnassignedActivities'
  ,blnCRMNotifications AS 'CRMNotifications'
  ,blnCRMAllActivities AS 'CRMAllActivities'
  ,blnCRMAllActions AS 'CRMAllActions'
  ,blnCRMReports AS 'CRMReports'
  ,blnCRMDashboard AS 'CRMDashboard'
  ,strDefaultCompanyLocation as 'SelectedDefaultCompanyLocation'  
  ,blnGLZRAVatTrans AS 'GLZRAVatTrans'
  FROM tblUsers    
 LEFT JOIN tblUsersDocs ON tblUsers.strUserName = tblUsersDocs.strUserName    
 WHERE (  
   ISNULL(tblUsers.strUserName, '') LIKE '%' + ISNULL(@search, tblUsers.strUserName) + '%'  
   OR ISNULL(strName, '') LIKE '%' + ISNULL(@search, strName) + '%'  
   ) and blnIsLockedOut = @isLockedUser  
 ORDER BY tblUsers.dteRowUpdated desc OFFSET(@Skip) ROWS  
 FETCH NEXT (@PageSize) ROWS ONLY  
END  
GO

CREATE PROCEDURE [dbo].[GetUsersListDataCount]
@Search AS NVARCHAR(Max) = '',
@isLockedUser AS bit
AS
BEGIN
	SELECT count(*)
	FROM tblUsers  
	LEFT JOIN tblUsersDocs ON tblUsers.strUserName = tblUsersDocs.strUserName  
	WHERE (
			ISNULL(tblUsers.strUserName, '') LIKE '%' + ISNULL(@search, tblUsers.strUserName) + '%'
			OR ISNULL(strName, '') LIKE '%' + ISNULL(@search, strName) + '%'
			) and blnIsLockedOut = @isLockedUser
END
GO
 
CREATE PROCEDURE GetAssetsListDataCount  
@InActive BIT = 0,  
@Search AS NVARCHAR(Max) = ''  
AS  
BEGIN  
 SELECT count(*) 
 From tblAssets
 WHERE bitInactive = @InActive  
  AND (  
   ISNULL(strAssetCode, '') LIKE '%' + ISNULL(@search, strAssetCode) + '%'  
   OR ISNULL(strAssetDesc, '') LIKE '%' + ISNULL(@search, strAssetDesc) + '%'  
   )
 
END  
GO

Create PROCEDURE [dbo].[GetAssetsListData] (  
@InActive BIT = 0  
,@PageSize INT = 25  
,@PageNumber INT = 1  
,@Search AS NVARCHAR(Max) = '')  
AS  
BEGIN  
 DECLARE @skip INT  
 SET @skip = @PageSize * (@PageNumber - 1)  
  
 SET NOCOUNT ON; 
 
 IF(@InActive = 0)
 BEGIN 
        IF OBJECT_ID('tempdb..#Temp') IS NOT NULL  
            BEGIN  
                DROP TABLE #Temp;  
            END; 
        BEGIN 
            SELECT  IDENTITY( INT, 1,1 ) AS PK ,  
                    strAssetCode AS AssetCode ,  
                    strAssetDesc AS AssetDesc ,  
                    strAssetTypeCode AS AssetTypeCode ,  
                    uidCenterID AS CenterID ,  
                    strProjNumber AS ProjNumber ,  
                    decQuantity AS Quantity ,  
                    dteDepreciateFrom AS DepreciateFrom ,  
                    strSerialNumber AS SerialNumber ,  
                    strTagNumber AS TagNumber ,  
                    dteDisposalDate AS DisposalDate ,  
                    strDisposalCode AS DisposalCode ,  
                    decDisposalAmount AS DisposalAmount ,  
                    strVendNumber AS VendNumber ,  
                    dtePurchaseDate AS PurchaseDate ,  
                    strFinanceMethod AS FinanceMethod ,  
                    decIntRate AS IntRate ,  
                    intPeriod AS Period ,  
                    strAccNumber AS AccNumber ,  
                    strCapexOrder AS CapexOrder ,  
                    decPurchasePrice AS PurchasePrice ,  
                    decResidualValue AS ResidualValue ,  
                    decInsuredValue AS InsuredValue ,  
                    decSalvageValue AS SalvageValue ,  
                    decReplacementValue AS ReplacementValue ,  
                    decDepreciableValue AS DepreciableValue ,  
                    dteLastDeprecationDate AS LastDeprecationDate ,  
                    decRemainingValue AS RemainingValue ,  
                    strField1 AS Field1 ,  
                    strField2 AS Field2 ,  
                    strField3 AS Field3 ,  
                    strField4 AS Field4 ,  
                    strField5 AS Field5 ,  
                    strField6 AS Field6 ,  
                    strField7 AS Field7 ,  
                    strField8 AS Field8 ,  
                    strField9 AS Field9 ,  
                    strField10 AS Field10 ,  
                    strField11 AS Field11 ,  
                    strField12 AS Field12 ,  
                    strNotes AS Notes ,  
                    bitInactive AS Inactive ,  
                    bitIsSubAsset AS IsSubAsset ,  
                    lngJourID AS JourID ,  
                    decRevaluationValue AS RevaluationValue ,  
                    bitIsRevaluationValueActive AS IsRevaluationValueActive ,  
                    decProfitOrLossOnSale AS ProfitOrLossOnSale ,  
                    decOpeningAccumulatedDepreciation1 AS OpeningAccumulatedDepreciation1 ,  
                    decOpeningAccumulatedDepreciation2 AS OpeningAccumulatedDepreciation2 ,  
                    decOpeningAccumulatedDepreciation3 AS OpeningAccumulatedDepreciation3 ,  
                    decOpeningAccumulatedDepreciation4 AS OpeningAccumulatedDepreciation4 ,  
                    decOpeningAccumulatedDepreciation5 AS OpeningAccumulatedDepreciation5 ,  
                    strBarCode AS BarCode ,  
                    strVendorInvoiceNumber AS VendorInvoiceNumber ,  
                    strDepreciationCode1 AS DepreciationCode1 ,  
                    strDepreciationCode2 AS DepreciationCode2 ,  
                    strDepreciationCode3 AS DepreciationCode3 ,  
                    strDepreciationCode4 AS DepreciationCode4 ,  
                    strDepreciationCode5 AS DepreciationCode5  
            INTO    #Temp  
            FROM    tblAssets
			WHERE bitInactive = @InActive  
  AND (  
   ISNULL(strAssetCode, '') LIKE '%' + ISNULL(@search, strAssetCode) + '%'  
   OR ISNULL(strAssetDesc, '') LIKE '%' + ISNULL(@search, strAssetDesc) + '%'  
   )
   ORDER BY strAssetCode OFFSET(@Skip) ROWS  
  
 FETCH NEXT (@PageSize) ROWS ONLY;
        END;  
        ALTER TABLE #Temp ADD CenterName VARCHAR(MAX);  
        ALTER TABLE #Temp ADD AssetType VARCHAR(MAX);  
        DECLARE @maxPK INT;  
        SELECT  @maxPK = MAX(PK)  
        FROM    #Temp;  
        DECLARE @pk INT;  
        SET @pk = 1;  
        WHILE @pk <= @maxPK  
            BEGIN  
                DECLARE @centerName VARCHAR(MAX);  
  
                DECLARE @assetType VARCHAR(MAX);  
  
                SELECT  @centerName = strLvl1 ,  
                        @centerName += CASE WHEN strLvl2 IS NOT NULL  
                                            THEN '\' + strLvl2  
                                            ELSE ''  
                                       END ,  
                        @centerName += CASE WHEN strLvl3 IS NOT NULL  
                                            THEN '\' + strLvl3  
                                            ELSE ''  
                                       END ,  
                        @centerName += CASE WHEN strLvl4 IS NOT NULL  
                                            THEN '\' + strLvl4  
                                            ELSE ''  
                                       END ,  
                        @centerName += CASE WHEN strLvl5 IS NOT NULL  
                                            THEN '\' + strLvl5  
                                            ELSE ''  
                                       END  
                FROM    tblCenters  
                WHERE   uidCenterID = ( SELECT  CenterID  
                                        FROM    #Temp  
                                        WHERE   PK = @pk  
                                      );  
                UPDATE  #Temp  
                SET     CenterName = @centerName  
                WHERE   PK = @pk;  
                SET @assetType = ( SELECT   tat.strDescription  
                                   FROM     tblAssetTypes tat  
                                   WHERE    tat.strCode = ( SELECT  
                                                              AssetTypeCode  
                                                            FROM  
                                                              #Temp  
                                                            WHERE  
                                                              PK = @pk  
                                                          )  
                                 );  
                UPDATE  #Temp  
                SET     AssetType = @assetType  
                WHERE   PK = @pk;  
                SELECT  @pk = @pk + 1;  
            END;  
        BEGIN  
            SELECT  *  
            FROM    #Temp;  
  
        END;  
	END
	ELSE
	BEGIN
		IF OBJECT_ID('tempdb..#Temp1') IS NOT NULL  
            BEGIN  
                DROP TABLE #Temp1;  
            END; 
        BEGIN 
            SELECT  IDENTITY( INT, 1,1 ) AS PK ,  
                    strAssetCode AS AssetCode ,  
                    strAssetDesc AS AssetDesc ,  
                    strAssetTypeCode AS AssetTypeCode ,  
                    uidCenterID AS CenterID ,  
                    strProjNumber AS ProjNumber ,  
                    decQuantity AS Quantity ,  
                    dteDepreciateFrom AS DepreciateFrom ,  
                    strSerialNumber AS SerialNumber ,  
                    strTagNumber AS TagNumber ,  
                    dteDisposalDate AS DisposalDate ,  
                    strDisposalCode AS DisposalCode ,  
                    decDisposalAmount AS DisposalAmount ,  
                    strVendNumber AS VendNumber ,  
                    dtePurchaseDate AS PurchaseDate ,  
                    strFinanceMethod AS FinanceMethod ,  
                    decIntRate AS IntRate ,  
                    intPeriod AS Period ,  
                    strAccNumber AS AccNumber ,  
                    strCapexOrder AS CapexOrder ,  
                    decPurchasePrice AS PurchasePrice ,  
                    decResidualValue AS ResidualValue ,  
                    decInsuredValue AS InsuredValue ,  
                    decSalvageValue AS SalvageValue ,  
                    decReplacementValue AS ReplacementValue ,  
                    decDepreciableValue AS DepreciableValue ,  
                    dteLastDeprecationDate AS LastDeprecationDate ,  
                    decRemainingValue AS RemainingValue ,  
                    strField1 AS Field1 ,  
                    strField2 AS Field2 ,  
                    strField3 AS Field3 ,  
                    strField4 AS Field4 ,  
                    strField5 AS Field5 ,  
                    strField6 AS Field6 ,  
                    strField7 AS Field7 ,  
                    strField8 AS Field8 ,  
                    strField9 AS Field9 ,  
                    strField10 AS Field10 ,  
                    strField11 AS Field11 ,  
                    strField12 AS Field12 ,  
                    strNotes AS Notes ,  
                    bitInactive AS Inactive ,  
                    bitIsSubAsset AS IsSubAsset ,  
                    lngJourID AS JourID ,  
                    decRevaluationValue AS RevaluationValue ,  
                    bitIsRevaluationValueActive AS IsRevaluationValueActive ,  
                    decProfitOrLossOnSale AS ProfitOrLossOnSale ,  
                    decOpeningAccumulatedDepreciation1 AS OpeningAccumulatedDepreciation1 ,  
                    decOpeningAccumulatedDepreciation2 AS OpeningAccumulatedDepreciation2 ,  
                    decOpeningAccumulatedDepreciation3 AS OpeningAccumulatedDepreciation3 ,  
                    decOpeningAccumulatedDepreciation4 AS OpeningAccumulatedDepreciation4 ,  
                    decOpeningAccumulatedDepreciation5 AS OpeningAccumulatedDepreciation5 ,  
                    strBarCode AS BarCode ,  
                    strVendorInvoiceNumber AS VendorInvoiceNumber ,  
                    strDepreciationCode1 AS DepreciationCode1 ,  
                    strDepreciationCode2 AS DepreciationCode2 ,  
                    strDepreciationCode3 AS DepreciationCode3 ,  
                    strDepreciationCode4 AS DepreciationCode4 ,  
                    strDepreciationCode5 AS DepreciationCode5  
            INTO    #Temp1 
            FROM    tblAssets
  Where (  
   ISNULL(strAssetCode, '') LIKE '%' + ISNULL(@search, strAssetCode) + '%'  
   OR ISNULL(strAssetDesc, '') LIKE '%' + ISNULL(@search, strAssetDesc) + '%'  
   )
   ORDER BY strAssetCode OFFSET(@Skip) ROWS  
  
 FETCH NEXT (@PageSize) ROWS ONLY;
        END;  
        ALTER TABLE #Temp1 ADD CenterName VARCHAR(MAX);  
        ALTER TABLE #Temp1 ADD AssetType VARCHAR(MAX);  
        DECLARE @maxPK1 INT;  
        SELECT  @maxPK1 = MAX(PK)  
        FROM    #Temp1;  
        DECLARE @pk1 INT;  
        SET @pk1 = 1;  
        WHILE @pk1 <= @maxPK1  
            BEGIN  
                DECLARE @centerName1 VARCHAR(MAX);  
  
                DECLARE @assetType1 VARCHAR(MAX);  
  
                SELECT  @centerName1 = strLvl1 ,  
                        @centerName1 += CASE WHEN strLvl2 IS NOT NULL  
                                            THEN '\' + strLvl2  
                                            ELSE ''  
                                       END ,  
                        @centerName1 += CASE WHEN strLvl3 IS NOT NULL  
                                            THEN '\' + strLvl3  
                                            ELSE ''  
                                       END ,  
                        @centerName1 += CASE WHEN strLvl4 IS NOT NULL  
                                            THEN '\' + strLvl4  
                                            ELSE ''  
                                       END ,  
                        @centerName1 += CASE WHEN strLvl5 IS NOT NULL  
                                            THEN '\' + strLvl5  
                                            ELSE ''  
                                       END  
                FROM    tblCenters  
                WHERE   uidCenterID = ( SELECT  CenterID  
                                        FROM    #Temp1  
                                        WHERE   PK = @pk1  
                                      );  
                UPDATE  #Temp1  
                SET     CenterName = @centerName1  
                WHERE   PK = @pk1;  
                SET @assetType1 = ( SELECT   tat.strDescription  
                                   FROM     tblAssetTypes tat  
                                   WHERE    tat.strCode = ( SELECT  
                                                              AssetTypeCode  
                                                            FROM  
                                                              #Temp1  
                                                            WHERE  
                                                              PK = @pk1  
                                                          )  
                                 );  
                UPDATE  #Temp1  
                SET     AssetType = @assetType1  
                WHERE   PK = @pk1;  
                SELECT  @pk1 = @pk1 + 1;  
            END;  
        BEGIN  
            SELECT  *  
            FROM    #Temp1;  
  
        END;
	END
END  
GO


CREATE PROCEDURE [dbo].[GetVendorReconcilingItemCount] 
	@InActive BIT = 0
	,@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT count(*)
	FROM tblVendorReconReasons
	WHERE bitInactive IN (0,ISNULL(@InActive, 1))
		AND (ISNULL(lngID, '') LIKE '%' + ISNULL(@search, lngID) + '%'
			OR ISNULL(strName, '') LIKE '%' + ISNULL(@search, strName) + '%'
			)
END
GO

---------------------------------------------------------

CREATE PROCEDURE GetInvWorkCentresCount @InActive BIT = 0
	,@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT count(*)
	FROM tblInvWorkCentre
	WHERE (
			bitInactive = @InActive
			OR bitInactive = 0
			)
		AND (
			ISNULL(strInvWCCode, '') LIKE '%' + ISNULL(@search, strInvWCCode) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
			)
END
GO

----------------------------------------------------------
CREATE PROCEDURE GetValueBasedDataCount @InActive BIT = 0  
 ,@Search AS NVARCHAR(Max) = ''  
AS  
BEGIN
	IF (@InActive = 0)  
	BEGIN
 SELECT count(*)  
 FROM tblValueBased  
 WHERE bitInactive = @InActive  
  AND (  
   ISNULL(strValueBased, '') LIKE '%' + ISNULL(@search, strValueBased) + '%'  
   OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'  
   )  
   END
   ELSE
   	BEGIN
 SELECT count(*)  
 FROM tblValueBased  
 WHERE (  
   ISNULL(strValueBased, '') LIKE '%' + ISNULL(@search, strValueBased) + '%'  
   OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'  
   )  
   END
END  
GO

----------------------------------------------------------
CREATE PROCEDURE GetContainersCount
AS
BEGIN
	SELECT count(*)
	FROM tblContainers
END
GO

-----------------------------------------------------------
CREATE PROCEDURE [dbo].[GetLaboursCount] @InActive BIT = 0
    ,@Search AS NVARCHAR(Max) = ''
AS
BEGIN
IF @InActive = 0
    BEGIN
    SELECT count(*)
    FROM tblManLabour
    WHERE bitInactive = @InActive
        AND (
            ISNULL(strLabCode, '') LIKE '%' + ISNULL(@search, strLabCode) + '%'
            OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
            )
        END
ELSE
BEGIN
SELECT count(*)
    FROM tblManLabour
    WHERE (
            ISNULL(strLabCode, '') LIKE '%' + ISNULL(@search, strLabCode) + '%'
            OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
            )
END
END
GO

-----------------------------------------------------------------
CREATE PROCEDURE GetCompanyTermsCount
AS
BEGIN
	SELECT count(*)
	FROM tblTerms
END
GO

------------------------------------------------------------------
CREATE PROCEDURE GetCompanyTermList @PageSize INT = 25
	,@PageNumber INT = 1
AS
BEGIN
	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT strTerm AS Term
		,intAllowedIn AS AllowedIn
		,intNetDue AS NetDue
		,intNetCalcBy AS NetCalcBy
		,decSettleDisc AS SettleDisc
		,intSettleDays AS SettleDays
		,intSettleCalcBy AS SettleCalcBy
		,intStatCalculated AS StatCalculated
		,bitCOD AS COD
		,bitDefCustomers AS DefCustomers
		,bitDefVendors AS DefVendors
		,intTermType AS TermType
		,intCalCalcBy AS CalCalcBy
		,intISMonths AS ISMonths
		,bitIsHP AS IsHP
	FROM tblTerms
	ORDER BY strTerm OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

----------------------------------------------------------
CREATE PROCEDURE [dbo].[GetActivityActionsStatusCount] @InActive BIT = 0
	,@Search AS NVARCHAR(Max) = ''
AS
BEGIN
If(@InActive = 0)
Begin
	SELECT count(*)
	FROM tblCRMActivityActionsStatus
	WHERE IsInactive = @InActive
		AND (
			ISNULL(StatusType, '') LIKE '%' + ISNULL(@search, StatusType) + '%'
			OR ISNULL(StatusDescription, '') LIKE '%' + ISNULL(@search, StatusDescription) + '%'
			)
			end
else
begin
SELECT count(*)
	FROM tblCRMActivityActionsStatus
	WHERE  (
			ISNULL(StatusType, '') LIKE '%' + ISNULL(@search, StatusType) + '%'
			OR ISNULL(StatusDescription, '') LIKE '%' + ISNULL(@search, StatusDescription) + '%'
			)
			end
END
GO

--------------------------------------------------------------
CREATE PROCEDURE [dbo].[ALLGetActivityActionsStatusList] (
	@InActive BIT = 0
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@Search AS NVARCHAR(Max) = ''
	)
AS
BEGIN
	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)
	IF(@InActive = 0)
	BEGIN
	SELECT StatusType AS StatusType
		,StatusDescription AS StatusDescription
		,IsInactive AS IsInactive
		,CreatedUser AS CreatedUser
		,UpdatedUser AS UpdatedUser
		,CreatedDate AS CreatedDate
		,UpdatedDate AS UpdatedDate
		,IsPredefined AS IsPredefined
		,StatusGroup AS StatusGroup
	FROM tblCRMActivityActionsStatus
	WHERE IsInactive = 0
		AND (
			ISNULL(StatusType, '') LIKE '%' + ISNULL(@search, StatusType) + '%'
			OR ISNULL(StatusDescription, '') LIKE '%' + ISNULL(@search, StatusDescription) + '%'
			)
			ORDER BY StatusType OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
	END

	ELSE
	BEGIN
		SELECT StatusType AS StatusType
		,StatusDescription AS StatusDescription
		,IsInactive AS IsInactive
		,CreatedUser AS CreatedUser
		,UpdatedUser AS UpdatedUser
		,CreatedDate AS CreatedDate
		,UpdatedDate AS UpdatedDate
		,IsPredefined AS IsPredefined
		,StatusGroup AS StatusGroup
	FROM tblCRMActivityActionsStatus
	
		Where(
			ISNULL(StatusType, '') LIKE '%' + ISNULL(@search, StatusType) + '%'
			OR ISNULL(StatusDescription, '') LIKE '%' + ISNULL(@search, StatusDescription) + '%'
			)
			ORDER BY StatusType OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
		END

	
END
GO
------------------------------------------------------------------
CREATE PROCEDURE GetAccountSetDataCount @InActive BIT = 0
	,@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT count(*)
	FROM tblAccountSets
	WHERE blnInactive IN (
			0
			,ISNULL(@InActive, 1)
			)
		AND (
			ISNULL(strAcctSet, '') LIKE '%' + ISNULL(@search, strAcctSet) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
			)
END
GO

-------------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetAccountSetList] (  
 @InActive BIT = NULL  
 ,@PageSize INT = 25  
 ,@PageNumber INT = 1  
 ,@Search NVARCHAR(50) = NULL  
 )  
AS  
BEGIN  
 DECLARE @skip INT  
  
 SET @skip = @PageSize * (@PageNumber - 1)  
  
 SELECT strAcctSet AS AcctSetID  
  ,blnBuyout AS IsBuyout  
  ,blnInactive AS IsInactive  
  ,blnService AS IsService  
  ,intGLAsset AS Asset  
  ,intGLExpCOGS AS Expense  
  ,intGLRevenue AS Revenue  
  ,intGLVariance AS Variance  
  ,strDesc AS [Description]  
 FROM tblAccountSets  
 WHERE blnInactive IN (  
   0  
   ,ISNULL(@InActive, 1)  
   )  
  AND (  
   strAcctSet LIKE ('%' + @Search + '%') 
    OR (strDesc LIKE ('%' + @Search + '%')) 
    OR (  
      ((CASE  
        WHEN blnService = 1 THEN 'Service'  
        WHEN blnBuyout = 1 THEN 'Buyout'  
        WHEN blnService = 0 AND blnBuyout = 0 THEN 'Inventory'  
        ELSE ''  
      END)) LIKE ('%' + @Search + '%'))
   OR @Search IS NULL  
   )  
 ORDER BY strAcctSet OFFSET(@Skip) ROWS  
  
 FETCH NEXT (@PageSize) ROWS ONLY  
END  
GO

-----------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetDeliveryRouteDataCount] @InActive BIT = 0
	,@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	IF (@InActive = 0)
	BEGIN
		SELECT count(*)
		FROM tblDeliveryRoutes
		WHERE bitInactive = 0
			AND (
				ISNULL(strDelRouteCode, '') LIKE '%' + ISNULL(@search, strDelRouteCode) + '%'
				OR ISNULL(strDelRouteDesc, '') LIKE '%' + ISNULL(@search, strDelRouteDesc) + '%'
				)
	END
	ELSE
	BEGIN
		SELECT count(*)
		FROM tblDeliveryRoutes
		WHERE (
				ISNULL(strDelRouteCode, '') LIKE '%' + ISNULL(@search, strDelRouteCode) + '%'
				OR ISNULL(strDelRouteDesc, '') LIKE '%' + ISNULL(@search, strDelRouteDesc) + '%'
				)
	END
END
GO

--------------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetDeliveryRoutes] (
	@InActive BIT = NULL
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@Search NVARCHAR(50) = NULL
	)
AS
BEGIN
	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT strDelRouteCode AS DelRouteCode
		,strDelRouteDesc AS DelRouteDesc
		,strField1 AS Field1
		,strField2 AS Field2
		,strField3 AS Field3
		,strField4 AS Field4
		,strField5 AS Field5
		,strField6 AS Field6
		,strAddInfo AS AddInfo
		,bitInactive AS IsInactive
	FROM tblDeliveryRoutes
	WHERE bitInactive IN (
			0
			,ISNULL(@InActive, 1)
			)
		AND (
			(
				strDelRouteCode LIKE ('%' + @Search + '%')
				OR @Search IS NULL
				)
			OR (
				strDelRouteDesc LIKE ('%' + @Search + '%')
				OR @Search IS NULL
				)
			)
	ORDER BY strDelRouteCode OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

------------------------------------------------------------------------
CREATE PROCEDURE GetProfileDataCount @InActive BIT = 0
	,@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT count(*)
	FROM tblProfileMenu
	WHERE ISNULL(ProfileID, '') LIKE '%' + ISNULL(@search, ProfileID) + '%'
		OR ISNULL(ScreenName, '') LIKE '%' + ISNULL(@search, ScreenName) + '%'
END
GO

-----------------------------------------------------------------------

CREATE PROCEDURE GetGetAssetsDataCount @InActive BIT = 0
	,@Status NVARCHAR(10)
	,@AssetDisposalFilterValue int
AS
BEGIN
	IF (@Status = 'All')
	BEGIN
	  if(@AssetDisposalFilterValue =0)
	  begin
	   SELECT count(*)
		FROM tblAssets 
	  end
	  else if(@AssetDisposalFilterValue =1)
	  begin
	   SELECT count(*)
		FROM tblAssets where dteDisposalDate <> null
	  end
	  else if(@AssetDisposalFilterValue =2)
	  begin
	   SELECT count(*)
		FROM tblAssets where dteDisposalDate = null
	  end
		
	END
	ELSE
	BEGIN
		
		if(@AssetDisposalFilterValue =0)
	  begin
	   SELECT count(*)
		FROM tblAssets where bitInactive = @InActive
	  end
	  else if(@AssetDisposalFilterValue =1)
	  begin
	   SELECT count(*)
		FROM tblAssets where dteDisposalDate <> null and bitInactive = @InActive
	  end
	  else if(@AssetDisposalFilterValue =2)
	  begin
	   SELECT count(*)
		FROM tblAssets where dteDisposalDate = null and bitInactive = @InActive
	  end


	END
END
GO

--------------------------------------------------------------------------
CREATE PROCEDURE GetAssetsPaginationList (
	@InActive BIT = 0
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@AssetDisposalStatusValue NVARCHAR(10)
	)
AS
BEGIN
	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)

	DECLARE @maxPK INT;
	DECLARE @pk INT;
	DECLARE @centerName VARCHAR(MAX);
	DECLARE @assetType VARCHAR(MAX);

	SET NOCOUNT ON;

	IF (@AssetDisposalStatusValue = 'All')
	BEGIN
		IF OBJECT_ID('tempdb..#Temp') IS NOT NULL
		BEGIN
			DROP TABLE #Temp;
		END;

		BEGIN
			SELECT IDENTITY(INT, 1, 1) AS PK
				,strAssetCode AS AssetCode
				,strAssetDesc AS AssetDesc
				,strAssetTypeCode AS AssetTypeCode
				,uidCenterID AS CenterID
				,strProjNumber AS ProjNumber
				,decQuantity AS Quantity
				,dteDepreciateFrom AS DepreciateFrom
				,strSerialNumber AS SerialNumber
				,strTagNumber AS TagNumber
				,dteDisposalDate AS DisposalDate
				,strDisposalCode AS DisposalCode
				,decDisposalAmount AS DisposalAmount
				,strVendNumber AS VendNumber
				,dtePurchaseDate AS PurchaseDate
				,strFinanceMethod AS FinanceMethod
				,decIntRate AS IntRate
				,intPeriod AS Period
				,strAccNumber AS AccNumber
				,strCapexOrder AS CapexOrder
				,decPurchasePrice AS PurchasePrice
				,decResidualValue AS ResidualValue
				,decInsuredValue AS InsuredValue
				,decSalvageValue AS SalvageValue
				,decReplacementValue AS ReplacementValue
				,decDepreciableValue AS DepreciableValue
				,dteLastDeprecationDate AS LastDeprecationDate
				,decRemainingValue AS RemainingValue
				,strField1 AS Field1
				,strField2 AS Field2
				,strField3 AS Field3
				,strField4 AS Field4
				,strField5 AS Field5
				,strField6 AS Field6
				,strField7 AS Field7
				,strField8 AS Field8
				,strField9 AS Field9
				,strField10 AS Field10
				,strField11 AS Field11
				,strField12 AS Field12
				,strNotes AS Notes
				,bitInactive AS Inactive
				,bitIsSubAsset AS IsSubAsset
				,lngJourID AS JourID
				,decRevaluationValue AS RevaluationValue
				,bitIsRevaluationValueActive AS IsRevaluationValueActive
				,decProfitOrLossOnSale AS ProfitOrLossOnSale
				,decOpeningAccumulatedDepreciation1 AS OpeningAccumulatedDepreciation1
				,decOpeningAccumulatedDepreciation2 AS OpeningAccumulatedDepreciation2
				,decOpeningAccumulatedDepreciation3 AS OpeningAccumulatedDepreciation3
				,decOpeningAccumulatedDepreciation4 AS OpeningAccumulatedDepreciation4
				,decOpeningAccumulatedDepreciation5 AS OpeningAccumulatedDepreciation5
				,strBarCode AS BarCode
				,strVendorInvoiceNumber AS VendorInvoiceNumber
				,strDepreciationCode1 AS DepreciationCode1
				,strDepreciationCode2 AS DepreciationCode2
				,strDepreciationCode3 AS DepreciationCode3
				,strDepreciationCode4 AS DepreciationCode4
				,strDepreciationCode5 AS DepreciationCode5
			INTO #Temp
			FROM tblAssets
			ORDER BY strAssetCode OFFSET(@Skip) ROWS

			FETCH NEXT (@PageSize) ROWS ONLY;
		END;

		ALTER TABLE #Temp ADD CenterName VARCHAR(MAX);

		ALTER TABLE #Temp ADD AssetType VARCHAR(MAX);

		SELECT @maxPK = MAX(PK)
		FROM #Temp;

		SET @pk = 1;

		WHILE @pk <= @maxPK
		BEGIN
			SELECT @centerName = strLvl1
				,@centerName += CASE 
					WHEN strLvl2 IS NOT NULL
						THEN '\' + strLvl2
					ELSE ''
					END
				,@centerName += CASE 
					WHEN strLvl3 IS NOT NULL
						THEN '\' + strLvl3
					ELSE ''
					END
				,@centerName += CASE 
					WHEN strLvl4 IS NOT NULL
						THEN '\' + strLvl4
					ELSE ''
					END
				,@centerName += CASE 
					WHEN strLvl5 IS NOT NULL
						THEN '\' + strLvl5
					ELSE ''
					END
			FROM tblCenters
			WHERE uidCenterID = (
					SELECT CenterID
					FROM #Temp
					WHERE PK = @pk
					);

			UPDATE #Temp
			SET CenterName = @centerName
			WHERE PK = @pk;

			SET @assetType = (
					SELECT tat.strDescription
					FROM tblAssetTypes tat
					WHERE tat.strCode = (
							SELECT AssetTypeCode
							FROM #Temp
							WHERE PK = @pk
							)
					);

			UPDATE #Temp
			SET AssetType = @assetType
			WHERE PK = @pk;

			SELECT @pk = @pk + 1;
		END;

		BEGIN
			SELECT *
			FROM #Temp;
		END;
	END
	ELSE
	BEGIN
		IF OBJECT_ID('tempdb..#Temp1') IS NOT NULL
		BEGIN
			DROP TABLE #Temp1;
		END;

		BEGIN
			SELECT IDENTITY(INT, 1, 1) AS PK
				,strAssetCode AS AssetCode
				,strAssetDesc AS AssetDesc
				,strAssetTypeCode AS AssetTypeCode
				,uidCenterID AS CenterID
				,strProjNumber AS ProjNumber
				,decQuantity AS Quantity
				,dteDepreciateFrom AS DepreciateFrom
				,strSerialNumber AS SerialNumber
				,strTagNumber AS TagNumber
				,dteDisposalDate AS DisposalDate
				,strDisposalCode AS DisposalCode
				,decDisposalAmount AS DisposalAmount
				,strVendNumber AS VendNumber
				,dtePurchaseDate AS PurchaseDate
				,strFinanceMethod AS FinanceMethod
				,decIntRate AS IntRate
				,intPeriod AS Period
				,strAccNumber AS AccNumber
				,strCapexOrder AS CapexOrder
				,decPurchasePrice AS PurchasePrice
				,decResidualValue AS ResidualValue
				,decInsuredValue AS InsuredValue
				,decSalvageValue AS SalvageValue
				,decReplacementValue AS ReplacementValue
				,decDepreciableValue AS DepreciableValue
				,dteLastDeprecationDate AS LastDeprecationDate
				,decRemainingValue AS RemainingValue
				,strField1 AS Field1
				,strField2 AS Field2
				,strField3 AS Field3
				,strField4 AS Field4
				,strField5 AS Field5
				,strField6 AS Field6
				,strField7 AS Field7
				,strField8 AS Field8
				,strField9 AS Field9
				,strField10 AS Field10
				,strField11 AS Field11
				,strField12 AS Field12
				,strNotes AS Notes
				,bitInactive AS Inactive
				,bitIsSubAsset AS IsSubAsset
				,lngJourID AS JourID
				,decRevaluationValue AS RevaluationValue
				,bitIsRevaluationValueActive AS IsRevaluationValueActive
				,decProfitOrLossOnSale AS ProfitOrLossOnSale
				,decOpeningAccumulatedDepreciation1 AS OpeningAccumulatedDepreciation1
				,decOpeningAccumulatedDepreciation2 AS OpeningAccumulatedDepreciation2
				,decOpeningAccumulatedDepreciation3 AS OpeningAccumulatedDepreciation3
				,decOpeningAccumulatedDepreciation4 AS OpeningAccumulatedDepreciation4
				,decOpeningAccumulatedDepreciation5 AS OpeningAccumulatedDepreciation5
				,strBarCode AS BarCode
				,strVendorInvoiceNumber AS VendorInvoiceNumber
				,strDepreciationCode1 AS DepreciationCode1
				,strDepreciationCode2 AS DepreciationCode2
				,strDepreciationCode3 AS DepreciationCode3
				,strDepreciationCode4 AS DepreciationCode4
				,strDepreciationCode5 AS DepreciationCode5
			INTO #Temp1
			FROM tblAssets
			WHERE bitInactive = @InActive
			ORDER BY strAssetCode OFFSET(@Skip) ROWS

			FETCH NEXT (@PageSize) ROWS ONLY;
		END;

		ALTER TABLE #Temp1 ADD CenterName VARCHAR(MAX);

		ALTER TABLE #Temp1 ADD AssetType VARCHAR(MAX);

		SELECT @maxPK = MAX(PK)
		FROM #Temp1;

		SET @pk = 1;

		WHILE @pk <= @maxPK
		BEGIN
			SELECT @centerName = strLvl1
				,@centerName += CASE 
					WHEN strLvl2 IS NOT NULL
						THEN '\' + strLvl2
					ELSE ''
					END
				,@centerName += CASE 
					WHEN strLvl3 IS NOT NULL
						THEN '\' + strLvl3
					ELSE ''
					END
				,@centerName += CASE 
					WHEN strLvl4 IS NOT NULL
						THEN '\' + strLvl4
					ELSE ''
					END
				,@centerName += CASE 
					WHEN strLvl5 IS NOT NULL
						THEN '\' + strLvl5
					ELSE ''
					END
			FROM tblCenters
			WHERE uidCenterID = (
					SELECT CenterID
					FROM #Temp1
					WHERE PK = @pk
					);

			UPDATE #Temp1
			SET CenterName = @centerName
			WHERE PK = @pk;

			SET @assetType = (
					SELECT tat.strDescription
					FROM tblAssetTypes tat
					WHERE tat.strCode = (
							SELECT AssetTypeCode
							FROM #Temp1
							WHERE PK = @pk
							)
					);

			UPDATE #Temp1
			SET AssetType = @assetType
			WHERE PK = @pk;

			SELECT @pk = @pk + 1;
		END;

		BEGIN
			SELECT *
			FROM #Temp1;
		END;
	END
END
GO

----------------------------------------------------------------------------------
CREATE PROCEDURE GetAssetTypePaginationList (
	@strCode NVARCHAR(20) = NULL
	,@strDescription NVARCHAR(100) = NULL
	,@intDepAccNo NVARCHAR(30) = NULL
	,@intExpAccNo NVARCHAR(30) = NULL
	,@intAssetAccNo NVARCHAR(30) = NULL
	,@intRepairAccNo NVARCHAR(30) = NULL
	,@strProfitLossOnSaleAccNo NVARCHAR(30) = NULL
	,@strDepreciationCode1 NVARCHAR(20) = NULL
	,@blnUpdateGLCode1 BIT = NULL
	,@strDepreciationCode2 NVARCHAR(20) = NULL
	,@blnUpdateGLCode2 BIT = NULL
	,@strDepreciationCode3 NVARCHAR(20) = NULL
	,@blnUpdateGLCode3 BIT = NULL
	,@strDepreciationCode4 NVARCHAR(20) = NULL
	,@blnUpdateGLCode4 BIT = NULL
	,@strDepreciationCode5 NVARCHAR(20) = NULL
	,@blnUpdateGLCode5 BIT = NULL
	,@blnNBVDisplay1 BIT = NULL
	,@blnNBVDisplay2 BIT = NULL
	,@blnNBVDisplay3 BIT = NULL
	,@blnNBVDisplay4 BIT = NULL
	,@blnNBVDisplay5 BIT = NULL
	,@InActive BIT = 0
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@Search AS NVARCHAR(Max) = ''
	)
AS
BEGIN
	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)
	SET NOCOUNT ON

	SELECT [strCode] AS Code
		,[strDescription] AS [Description]
		,[intDepAccNo] AS DepAccNo
		,[intExpAccNo] AS ExpAccNo
		,[intAssetAccNo] AS AssetAccNo
		,[intRepairAccNo] AS RepairAccNo
		,[strProfitLossOnSaleAccNo] AS ProfitLossOnSaleAccNo
		,[strDepreciationCode1] AS DepreciationCode1
		,[blnUpdateGLCode1] AS UpdateGLCode1
		,[strDepreciationCode2] AS DepreciationCode2
		,[blnUpdateGLCode2] AS UpdateGLCode2
		,[strDepreciationCode3] AS DepreciationCode3
		,[blnUpdateGLCode3] AS UpdateGLCode3
		,[strDepreciationCode4] AS DepreciationCode4
		,[blnUpdateGLCode4] AS UpdateGLCode4
		,[strDepreciationCode5] AS DepreciationCode5
		,[blnUpdateGLCode5] AS UpdateGLCode5
		,[bitInactive] AS Inactive
		,[blnNBVDisplay1] AS NBVDisplay1
		,[blnNBVDisplay2] AS NBVDisplay2
		,[blnNBVDisplay3] AS NBVDisplay3
		,[blnNBVDisplay4] AS NBVDisplay4
		,[blnNBVDisplay5] AS NBVDisplay5
		,(
			SELECT TOP 1 ISNULL(tblAccounts.[strDesc], '')
			FROM tblAccounts
			WHERE intGLNumber = [intDepAccNo]
			) AS DepreciationAccount
		,(
			SELECT TOP 1 ISNULL(tblAccounts.[strDesc], '')
			FROM tblAccounts
			WHERE intGLNumber = [intExpAccNo]
			) AS ExpenseAccount
	FROM [tblAssetTypes]
	WHERE (
			([strCode] = @strCode)
			OR (@strCode IS NULL)
			)
		AND (
			([strDescription] = @strDescription)
			OR (@strDescription IS NULL)
			)
		AND (
			([intDepAccNo] = @intDepAccNo)
			OR (@intDepAccNo IS NULL)
			)
		AND (
			([intExpAccNo] = @intExpAccNo)
			OR (@intExpAccNo IS NULL)
			)
		AND (
			([intAssetAccNo] = @intAssetAccNo)
			OR (@intAssetAccNo IS NULL)
			)
		AND (
			([intRepairAccNo] = @intRepairAccNo)
			OR (@intRepairAccNo IS NULL)
			)
		AND (
			([strProfitLossOnSaleAccNo] = @strProfitLossOnSaleAccNo)
			OR (@strProfitLossOnSaleAccNo IS NULL)
			)
		AND (
			([strDepreciationCode1] = @strDepreciationCode1)
			OR (@strDepreciationCode1 IS NULL)
			)
		AND (
			([blnUpdateGLCode1] = @blnUpdateGLCode1)
			OR (@blnUpdateGLCode1 IS NULL)
			)
		AND (
			([strDepreciationCode2] = @strDepreciationCode2)
			OR (@strDepreciationCode2 IS NULL)
			)
		AND (
			([blnUpdateGLCode2] = @blnUpdateGLCode2)
			OR (@blnUpdateGLCode2 IS NULL)
			)
		AND (
			([strDepreciationCode3] = @strDepreciationCode3)
			OR (@strDepreciationCode3 IS NULL)
			)
		AND (
			([blnUpdateGLCode3] = @blnUpdateGLCode3)
			OR (@blnUpdateGLCode3 IS NULL)
			)
		AND (
			([strDepreciationCode4] = @strDepreciationCode4)
			OR (@strDepreciationCode4 IS NULL)
			)
		AND (
			([blnUpdateGLCode4] = @blnUpdateGLCode4)
			OR (@blnUpdateGLCode4 IS NULL)
			)
		AND (
			([strDepreciationCode5] = @strDepreciationCode5)
			OR (@strDepreciationCode5 IS NULL)
			)
		AND (
			([blnUpdateGLCode5] = @blnUpdateGLCode5)
			OR (@blnUpdateGLCode5 IS NULL)
			)
		AND (
			([bitInactive] = @InActive)
			OR (@InActive IS NULL)
			)
		AND (
			([blnNBVDisplay1] = @blnNBVDisplay1)
			OR (@blnNBVDisplay1 IS NULL)
			)
		AND (
			([blnNBVDisplay2] = @blnNBVDisplay2)
			OR (@blnNBVDisplay2 IS NULL)
			)
		AND (
			([blnNBVDisplay3] = @blnNBVDisplay3)
			OR (@blnNBVDisplay3 IS NULL)
			)
		AND (
			([blnNBVDisplay4] = @blnNBVDisplay4)
			OR (@blnNBVDisplay4 IS NULL)
			)
		AND (
			([blnNBVDisplay5] = @blnNBVDisplay5)
			OR (@blnNBVDisplay5 IS NULL)
			)
		AND (
			ISNULL(strCode, '') LIKE '%' + ISNULL(@search, strCode) + '%'
			OR ISNULL(strDescription, '') LIKE '%' + ISNULL(@search, strDescription) + '%'
			)
	ORDER BY strCode OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

----------------------------------------------------------------------------
CREATE PROCEDURE GetAssetTypeDataCount @InActive BIT = 0
	,@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT count(*)
	FROM tblAssetTypes
	WHERE (
			bitInactive = @InActive
			OR (@InActive IS NULL)
			)
		AND (
			ISNULL(strCode, '') LIKE '%' + ISNULL(@search, strCode) + '%'
			OR ISNULL(strDescription, '') LIKE '%' + ISNULL(@search, strDescription) + '%'
			)
END
GO

-----------------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetActivityGroupPaginationList] (
	@InActive BIT = NULL
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@Search NVARCHAR(50) = NULL
	)
AS
BEGIN
	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT ActivityGroupName AS ActivityGroupName
		,ActivityGroupDescription AS ActivityGroupDescription
		,IsInactive AS IsInactive
		,CreatedUser AS CreatedUser
		,UpdatedUser AS UpdatedUser
		,CreatedDate AS CreatedDate
		,UpdatedDate AS UpdatedDate
		,IsSalesGroup AS IsSalesGroup
	FROM tblCRMActivityGroup
	WHERE IsInactive IN (
			0
			,ISNULL(@InActive, 1)
			)
		AND (
			ActivityGroupName LIKE ('%' + @Search + '%')
			OR ActivityGroupDescription LIKE ('%' + @Search + '%')
			OR @Search IS NULL
			)
	ORDER BY ActivityGroupName OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

----------------------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetActivityGroupDataCount] @InActive BIT = 0
	,@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT count(*)
	FROM tblCRMActivityGroup
	WHERE (
			IsInactive IN (
				0
				,ISNULL(@InActive, 1)
				)
			)
		AND (
			ISNULL(ActivityGroupName, '') LIKE '%' + ISNULL(@search, ActivityGroupName) + '%'
			OR ISNULL(ActivityGroupDescription, '') LIKE '%' + ISNULL(@search, ActivityGroupDescription) + '%'
			)
END
GO

------------------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetActivityStatusPaginationList] (
	@InActive BIT = NULL
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@Search NVARCHAR(50) = NULL
	)
AS
BEGIN
	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT StatusType AS StatusType
		,StatusDescription AS StatusDescription
		,IsInactive AS IsInactive
		,CreatedUser AS CreatedUser
		,UpdatedUser AS UpdatedUser
		,CreatedDate AS CreatedDate
		,UpdatedDate AS UpdatedDate
		,IsPredefined AS IsPredefined
		,StatusGroup AS StatusGroup
	FROM tblCRMActivityStatus
	WHERE IsInactive IN (
			0
			,ISNULL(@InActive, 1)
			)
		AND (
			StatusType LIKE ('%' + @Search + '%')
			OR StatusDescription LIKE ('%' + @Search + '%')
			OR @Search IS NULL
			)
	ORDER BY StatusType OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

-----------------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetActivityStatusDataCount] @InActive BIT = 0
	,@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT count(*)
	FROM tblCRMActivityStatus
	WHERE (
			IsInactive IN (
				0
				,ISNULL(@InActive, 1)
				)
			)
		AND (
			ISNULL(StatusType, '') LIKE '%' + ISNULL(@search, StatusType) + '%'
			OR ISNULL(StatusDescription, '') LIKE '%' + ISNULL(@search, StatusDescription) + '%'
			)
END
GO


-----------------------------------------------------------------------

Create PROCEDURE [dbo].[GetBuildingLocationCount] 
AS
BEGIN
	SELECT COUNT(*) from tblAssetLocationBuilding
END
GO

CREATE PROCEDURE [dbo].[GetDepreciationMethodCount] 
	@InActive BIT = 0
	,@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT COUNT(*) from tblDepreciationMethods WHERE (
			bitInactive IN (
				0
				,ISNULL(@InActive, 1)
				)
			)
		AND (
			ISNULL(strCode, '') LIKE '%' + ISNULL(@search, strCode) + '%'
			OR ISNULL(strDescription, '') LIKE '%' + ISNULL(@search, strDescription) + '%'
			);
END
GO


CREATE PROCEDURE GetPasswordPoliciesCount 
AS
BEGIN
	SELECT Count(*)
	FROM tblPasswordPolicy
END
GO

Create PROCEDURE [dbo].[GetPOSDrawerDataCount]
AS
BEGIN
	SELECT count(*)
	FROM tblPOSDr
END
GO

CREATE PROCEDURE [dbo].[GetGAAPIntegrationDataCount] 
	@Search AS NVARCHAR(Max) = ''
AS
BEGIN

	SELECT count(*)
	FROM tblGAAPStoreSetup
	WHERE 
		 (
			ISNULL(StoreName, '') LIKE '%' + ISNULL(@search, StoreName) + '%'
			OR ISNULL(LastImportDate, '') LIKE '%' + ISNULL(@search, LastImportDate) + '%'
			)
END
GO

---------------------------------------------------------------------

CREATE PROCEDURE GetInvLocationsDataCount  
@Search AS NVARCHAR(Max) = ''  
AS  
BEGIN  
 SELECT count(*)
  
 FROM tblInvLoc  
 WHERE (  
   ISNULL(strLocName, '') LIKE '%' + ISNULL(@search, strLocName) + '%'  
   OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'  
   )  
END  
GO
---------------------------------------------------------------

CREATE PROCEDURE [dbo].[GetInvLocationsData] (  
@PageSize INT = 25  
,@PageNumber INT = 1  
,@Search AS NVARCHAR(Max) = '')  
AS  
BEGIN  
 DECLARE @skip INT  
 SET @skip = @PageSize * (@PageNumber - 1)  
  
 SELECT   
    [strLocName] AS LocationName    
      ,[strDesc] AS [Description]    
      ,[bitDefault] AS IsDefault    
      ,[intType] AS [Type]    
      ,[bitCustSale] AS IsCustSale    
      ,[bitCustReturn] AS IsCustReturn    
      ,[bitVendReceive] AS IsVendReceive    
      ,[bitVendReturn] AS IsVendReturn    
  
 FROM tblInvLoc  
 WHERE (  
   ISNULL(strLocName, '') LIKE '%' + ISNULL(@search, strLocName) + '%'  
   OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'  
   )  
 ORDER BY strLocName OFFSET(@Skip) ROWS  
  
 FETCH NEXT (@PageSize) ROWS ONLY  
END 
GO

----------------------------------------------
CREATE PROCEDURE GetCustomerDataCount
@InActive BIT = NULL
	,@BPToolsMode BIT = NULL
	,@UserName VARCHAR(50) = NULL
	,@Search AS NVARCHAR(Max) = ''
	as
BEGIN
	SET NOCOUNT ON;

	
	IF (@InActive = 0)
	BEGIN
		IF (@BPToolsMode = 0)
		BEGIN
			SELECT count(*) 
			FROM tblCustomers
			WHERE bitInactive = 0
				AND strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND (
								tblCustomerCatSec.strUserName = CASE 
									WHEN isnull(@UserName, '') = ''
										THEN tblCustomerCatSec.strUserName
									ELSE @UserName
									END
								)
							)
					)
				AND (
					ISNULL(strCustName, '') LIKE '%' + ISNULL(@search,strCustName) + '%'
					OR ISNULL(strCustDesc, '') LIKE '%' + ISNULL(@search,strCustName) + '%'
					)
		END;
		ELSE
		BEGIN
			SELECT count(*)
			FROM tblCustomers
			WHERE bitInactive = 0
				AND (
					ISNULL(strCustName, '') LIKE '%' + ISNULL(@search,strCustName) + '%'
					OR ISNULL(strCustDesc, '') LIKE '%' + ISNULL(@search,strCustName) + '%'
					)
		END;
	END;
	ELSE
	BEGIN
		IF (@BPToolsMode = 0)
		BEGIN
			SELECT count(*)
			FROM tblCustomers
			WHERE strCustCategory IN (
					SELECT tblCustomerCat.strCustCategory
					FROM tblCustomerCat
					LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
					WHERE ISNULL((
								SELECT COUNT(tblCustomerCatSec.strCustCategory)
								FROM tblCustomerCatSec
								WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblCustomerCatSec.strCustCategory)
									FROM tblCustomerCatSec
									WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
									), 0) > 0
							AND (
								tblCustomerCatSec.strUserName = CASE 
									WHEN isnull(@UserName, '') = ''
										THEN tblCustomerCatSec.strUserName
									ELSE @UserName
									END
								)
							)
					)
				AND (
					ISNULL(strCustName, '') LIKE '%' + ISNULL(@search,strCustName) + '%'
					OR ISNULL(strCustDesc, '') LIKE '%' + ISNULL(@search,strCustName) + '%'
					)

		END;
		ELSE
		BEGIN
			SELECT count(*)
			FROM tblCustomers
				where (
					ISNULL(strCustName, '') LIKE '%' + ISNULL(@search,strCustName) + '%'
					OR ISNULL(strCustDesc, '') LIKE '%' + ISNULL(@search,strCustName) + '%'
					) 
		END;
	END;
END;
GO

-----------------------------------------------------------
CREATE PROCEDURE [dbo].[GetSalesOrderEDI] @IsActive AS BIT = 0
AS
BEGIN
	SELECT count(*)
	FROM tblSalesOrderEDIs
	WHERE bitInactive = 0
		OR bitInactive = @IsActive
END
GO

------------------------------------------------

CREATE PROCEDURE [dbo].[GetContractType]
as
begin

select strContBillType from tblContractBillTypes where bitInactive =0 order by strContBillType
end
GO

-------------------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvWorkCentresList] (
	@InActive BIT = 0
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@Search AS NVARCHAR(Max) = ''
	)
AS
BEGIN
	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT [strInvWCCode] AS InvWCCode
		,[strDesc] AS [Desc]
		,[bitInactive] AS IsInactive
	FROM tblInvWorkCentre
	WHERE (
			bitInactive = @InActive
			OR bitInactive = 0
			)
		AND (
			ISNULL(strInvWCCode, '') LIKE '%' + ISNULL(@search, strInvWCCode) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
			)
	ORDER BY strInvWCCode OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO


-------------------------------------------------------

CREATE PROCEDURE [dbo].[GetCategoriesDataCount1] @InActive BIT = 0
	,@Search AS NVARCHAR(Max) = ''
AS
BEGIN

	SELECT count(*)
	FROM tblRebateSetup 
	
END
GO

-------------------------------------------------------------

CREATE PROCEDURE [dbo].[GetCentreTemplateDataCount]
@Search AS NVARCHAR(Max) = ''
AS
BEGIN

	SELECT count(*)
	FROM tblCentersT
	WHERE (
			ISNULL(strTemplate, '') LIKE '%' + ISNULL(@search, strTemplate) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
			)
END
GO

----------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetSalesEDIData] (
@InActive BIT = 0
,@PageSize INT = 25
,@PageNumber INT = 1
)

AS
BEGIN
	DECLARE @skip INT
	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT 
		  strEDI as EDI,
          strEDIDescription as EDIDescription,
          strGLN as GLN,
          strEDISwitch as EDISwitch,
          strFTPAddress as FTPAddress,
          strFTPUser as FTPUser,
          strFTPPassword as FTPPassword,
          bitInactive as IsInactive
	FROM tblSalesOrderEDIs
	WHERE bitInactive = @InActive OR bitInactive = 0
	ORDER BY dteRowUpdated OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

----------------------------------------------------------
CREATE PROCEDURE [dbo].[GetBuyersDataCount] (
	@InActive BIT = 0,
	@Search AS NVARCHAR(Max) = ''
	)
AS
BEGIN
	SELECT count(*)

	FROM tblBuyers
	WHERE bitInactive = @InActive
		AND (
			ISNULL(strBuyerName, '') LIKE '%' + ISNULL(@search, strBuyerName) + '%'
			OR ISNULL(decYTDPurchases, '') LIKE '%' + ISNULL(@search, decYTDPurchases) + '%'
			)
END
GO

-----------------------------------------------------
CREATE PROCEDURE [dbo].[GetTendorsDataCount] (
	@InActive BIT = 0,
	@Search AS NVARCHAR(Max) = ''
	)
AS
BEGIN
	SELECT count(*)

	FROM tblTenderTypes
	WHERE bitInactive = @InActive
		AND (
			ISNULL(strName, '') LIKE '%' + ISNULL(@search, strName) + '%'
			OR ISNULL(intGLNumber, '') LIKE '%' + ISNULL(@search, intGLNumber) + '%'
			)
END
GO

------------------------------------------------------
CREATE PROCEDURE [dbo].[GetWorkCentersDataCount] (
	@InActive BIT = 0
	,@Search AS NVARCHAR(Max) = ''
	)
AS
BEGIN
	SELECT count(*)
	FROM tblManWorkCentre
	WHERE (bitInactive = @InActive or bitInactive = 0)
		AND (
			ISNULL(strWCCode, '') LIKE '%' + ISNULL(@search, strWCCode) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
			)
END
GO
------------------------------------------------------

CREATE PROCEDURE [dbo].[GetSelesPersonsData] (
	@InActive BIT = 0
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@IsWorkshopTechnician BIT = 0
	,@SearchText AS NVARCHAR(Max) = ''
	)
AS
BEGIN
	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)

	IF (@InActive = 0)
	BEGIN
		SELECT [strSalesName] AS SalesName
			,[decYTDSales] AS YTDSales
			,[bitInactive] AS Inactive
			,[uID] AS ID
			,[bitIsWorkshopTechnician] AS IsWorkshopTechnician
		FROM tblSalesPersons
		WHERE bitInactive = @InActive
			AND bitIsWorkshopTechnician = @IsWorkshopTechnician
			AND (ISNULL(strSalesName, '') LIKE '%' + ISNULL(@SearchText, strSalesName) + '%')
		ORDER BY SalesName OFFSET(@Skip) ROWS

		FETCH NEXT (@PageSize) ROWS ONLY
	END
	ELSE
	BEGIN
		SELECT [strSalesName] AS SalesName
			,[decYTDSales] AS YTDSales
			,[bitInactive] AS Inactive
			,[uID] AS ID
			,[bitIsWorkshopTechnician] AS IsWorkshopTechnician
		FROM tblSalesPersons
		WHERE bitIsWorkshopTechnician = @IsWorkshopTechnician
			AND (ISNULL(strSalesName, '') LIKE '%' + ISNULL(@SearchText, strSalesName) + '%')
		ORDER BY SalesName OFFSET(@Skip) ROWS

		FETCH NEXT (@PageSize) ROWS ONLY
	END
END
GO

------------------------------------------------

CREATE PROCEDURE GetInvSerialNumbersDataCount(
@Type AS TINYINT,
@Search AS NVARCHAR(Max) = ''
)
AS  
BEGIN  
 IF @Type < 2    
 BEGIN    
     SELECT  count(*)
     FROM    tblInvSerialTypes    
     WHERE   intType = @Type 
	 AND (
			ISNULL(strInvSerialType, '') LIKE '%' + ISNULL(@Search, strInvSerialType) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@Search, strDesc) + '%'
			)	 
 END;    
 ELSE    
 BEGIN    
     SELECT  count(*)
     FROM    tblInvSerialTypes
	 WHERE (
			ISNULL(strInvSerialType, '') LIKE '%' + ISNULL(@Search, strInvSerialType) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@Search, strDesc) + '%'
			)	
 END  
END  
GO
----------------------------------------------

CREATE PROCEDURE GetEmpMaterialsIssueProfileCount(  
@SearchText NVARCHAR(50) = NULL,    
@IsInactive BIT = NULL    
)  
AS    
BEGIN    
 SELECT count(*)  
 FROM [dbo].[tblEmpMaterialIssueProfile]    
 WHERE (    
  ISNULL(strName, '') LIKE '%' + ISNULL(@SearchText, strName) + '%'    
  OR @SearchText IS NULL    
 )    
 AND (    
  bitInactive =0 or bitInactive = @IsInactive  
 )    
END
GO

----------------------------------------------

CREATE PROCEDURE [dbo].[UpdateDiscountMatrix] (
	@SQdecDiscount AS MONEY
	,@SQstrCustCategory AS NVARCHAR(MAX)
	,@SQstrInvCategory AS NVARCHAR(MAX)
	)
AS
BEGIN
	UPDATE tblDiscountMatrix
	SET decDiscount = @SQdecDiscount
	WHERE strCustCategory = @SQstrCustCategory
		AND strInvCategory = @SQstrInvCategory
END
GO
----------------------------------------------

CREATE PROCEDURE [dbo].[GetWorkCentresData] (
@InActive BIT = NULL  
,@PageSize INT = 25  
,@PageNumber INT = 1)
AS  
BEGIN  
	SET NOCOUNT ON;  
	DECLARE @skip INT  
	SET @skip = @PageSize * (@PageNumber - 1)
	
	SELECT 
		strWCCode AS WorkCentreCode  
		,strDesc AS Description  
		,bitInactive AS Inactive  
	FROM tblManWorkCentre  
	WHERE (  
		bitInactive = 0 OR bitInactive = @InActive  
	)  
	
	ORDER BY strWCCode OFFSET(@Skip) ROWS
	FETCH NEXT (@PageSize) ROWS ONLY  
END  
Go

CREATE PROCEDURE UpdateLastPurchasePriceForInvAdj @IsRevaluationChecked AS BIT
	,@PartNumber AS NVARCHAR(max)
	,@LastPPUnit AS MONEY
AS
BEGIN
	IF @IsRevaluationChecked = 1
	BEGIN
		UPDATE tblInv
		SET decLastPPUnit = CASE 
				WHEN @LastPPUnit = 0
					THEN decLastPPUnit
				ELSE @LastPPUnit
				END
		WHERE strPartNumber = @PartNumber
	END
	ELSE
	BEGIN
		UPDATE tblInv
		SET decLastPPUnit = CASE 
				WHEN @LastPPUnit = 0
					THEN decLastPPUnit
				ELSE (
						CASE 
							WHEN decLastPPUnit = 0
								THEN @LastPPUnit
							ELSE decLastPPUnit
							END
						)
				END
		WHERE strPartNumber = @PartNumber
	END
END
GO

CREATE PROCEDURE [dbo].[NavigateReceivingByNumber] (
	@DocumentID NVARCHAR(100)
	,@IsPrevious BIT
	,@IsBPToolsMode BIT
	,@UserName NVARCHAR(Max) = NULL
	)
AS
BEGIN
	IF (@IsPrevious = 1)
	BEGIN
		SELECT MAX(strOrdPGDocID)
		FROM tblOrderDocPG
		INNER JOIN tblVendors ON tblOrderDocPG.strVendName = tblVendors.strVendName
		WHERE strOrdPGDocID < @DocumentID
			AND bitCleared = 0
			AND (
				@IsBPToolsMode = 1
				OR tblVendors.strVendCategory IN (
					SELECT tblVendorCat.strVendCategory
					FROM tblVendorCat
					LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
					WHERE ISNULL((
								SELECT COUNT(tblVendorCatSec.strVendCategory)
								FROM tblVendorCatSec
								WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblVendorCatSec.strVendCategory)
									FROM tblVendorCatSec
									WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
									), 0) > 0
							AND tblVendorCatSec.strUserName = @UserName
							)
					)
				)
	END
	ELSE
	BEGIN
		SELECT MIN(strOrdPGDocID)
		FROM tblOrderDocPG
		INNER JOIN tblVendors ON tblOrderDocPG.strVendName = tblVendors.strVendName
		WHERE strOrdPGDocID > @DocumentID
			AND bitCleared = 0
			AND (
				@IsBPToolsMode = 1
				OR tblVendors.strVendCategory IN (
					SELECT tblVendorCat.strVendCategory
					FROM tblVendorCat
					LEFT JOIN tblVendorCatSec ON tblVendorCat.strVendCategory = tblVendorCatSec.strVendCategory
					WHERE ISNULL((
								SELECT COUNT(tblVendorCatSec.strVendCategory)
								FROM tblVendorCatSec
								WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
								), 0) = 0
						OR (
							ISNULL((
									SELECT COUNT(tblVendorCatSec.strVendCategory)
									FROM tblVendorCatSec
									WHERE tblVendorCatSec.strVendCategory = tblVendorCat.strVendCategory
									), 0) > 0
							AND tblVendorCatSec.strUserName = @UserName
							)
					)
				)
	END
END
GO

CREATE PROCEDURE [dbo].[ContractTypesDelete] @ContractTypes NVARCHAR(200)
AS
BEGIN
	DELETE
	FROM tblOptContractType
	WHERE strContractType = @ContractTypes
END
GO

CREATE PROCEDURE [dbo].[tblContractTypeSave](
	@lngId bigint,
	@strContractType nvarchar(50)
)
AS
BEGIN
	IF @lngId = 0
	BEGIN
		INSERT INTO tblOptContractType (strContractType) VALUES (@strContractType)
	END
	ELSE
	BEGIN
		UPDATE tblOptContractType SET strContractType = @strContractType WHERE lngID = @lngId
	END
END
GO

CREATE PROCEDURE [dbo].[MaxContractID]
AS
BEGIN
	Select isnull(max(lngId),0) from [tblContracts]
END
GO

CREATE PROCEDURE GetDepartmentForAccount @AccountNumber AS NVARCHAR(100)
AS
BEGIN
	SELECT tblDepartments.intDept AS Dept
		,tblDepartments.strDesc AS [Desc]
		,tblAccountsDept.decBalance AS Balance
		,tblAccountsDept.decBalanceF AS BalanceF
	FROM tblDepartments
	INNER JOIN tblAccountsDept ON tblDepartments.intDept = tblAccountsDept.intDept
	WHERE (tblAccountsDept.intGLNumber = @AccountNumber)
END
GO

CREATE PROCEDURE DeleteAccounts (@GLNumber AS NVARCHAR(60))
AS
BEGIN
	DELETE
	FROM tblAccounts
	WHERE intGLNumber = @GLNumber
END
GO

CREATE PROCEDURE [dbo].[GetReferenceNumberJE] (@DocNumber NVARCHAR(100))
AS
BEGIN
	SET NOCOUNT ON;

	BEGIN
		SELECT TOP 1 strGLDocID
		FROM tblGLApprovalTracking
		WHERE strNewGLDocID = @DocNumber
	END
END
GO

CREATE PROCEDURE [dbo].[GetApproversListJE] (@DocNumber NVARCHAR(100))
AS
BEGIN
	SET NOCOUNT ON;

	BEGIN
		SELECT tblGLApprovalsUserTracking.ID
			,tblPQApprovalsGroup.strGroupName AS GroupName
			,tblUsers.strName AS UserName
			,tblGLApprovalsUserTracking.intApprovalStatus AS IntApprovalStatus
			,tblGLApprovalsUserTracking.rowUpdated AS RowUpdated
			,(
				SELECT tblApprovalsDocLimit.PreferredNotification
				FROM tblApprovalsDocLimit
				WHERE intApproverGroupId = tblPQApprovalsGroup.ID
					AND tblApprovalsDocLimit.strUserName = tblGLApprovalsUserTracking.strUserName
				) AS PreferredNotification
		FROM tblJournalEntryDoc_GLApprovals
		INNER JOIN tblPQApprovalsGroup ON tblPQApprovalsGroup.ID = tblJournalEntryDoc_GLApprovals.intGroupId
		INNER JOIN tblGLApprovalsUserTracking ON tblJournalEntryDoc_GLApprovals.strJEno = tblGLApprovalsUserTracking.strOrdGLDocID
		INNER JOIN tblUsers ON tblGLApprovalsUserTracking.strUserName = tblUsers.strUserName
		WHERE tblJournalEntryDoc_GLApprovals.strJEno = @DocNumber
	END
END
GO

CREATE PROCEDURE [dbo].[InsertUpdateAccountsDept] (
	@AcctDept AS NVARCHAR(Max)
	,@GLNumber AS NVARCHAR(30)
	,@DeptNumber AS INT
	)
AS
BEGIN
	IF (
			(
				SELECT count(*)
				FROM tblAccountsDept
				WHERE intGLNumber = @GLNumber
					AND intDept = @DeptNumber
				) = 0
			)
	BEGIN
		INSERT INTO tblAccountsDept
		VALUES (
			@GLNumber
			,@DeptNumber
			,@AcctDept
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			,0
			)
	END
	ELSE
	BEGIN
		UPDATE tblAccountsDept
		SET strAcctDept = @AcctDept
		WHERE intGLNumber = @GLNumber
			AND intDept = @DeptNumber
	END
END
GO


CREATE PROCEDURE [dbo].[UpdateGLAccountsHist] (
	@GLNumber AS NVARCHAR(30)
	,@Desc AS NVARCHAR(Max)
	)
AS
BEGIN
	UPDATE tblAccountsHist
	SET strDesc = @Desc
	WHERE intGLNumber = @GLNumber
END
GO

CREATE PROCEDURE UpdateBankRecAcctsData @Acct AS NVARCHAR(30)
	,@IntRev AS NVARCHAR(30)
	,@IntExp AS NVARCHAR(30)
AS
BEGIN
	UPDATE tblBankRecAccts
	SET intInterestRev = @IntRev
		,intInterestExp = @IntExp
	WHERE intGLNumber = @Acct
END
GO

CREATE PROCEDURE [dbo].[UpdateAcctBudgetsData] (
	@Acct AS NVARCHAR(30)
	,@Per1 AS MONEY
	,@Per2 AS MONEY
	,@Per3 AS MONEY
	,@Per4 AS MONEY
	,@Per5 AS MONEY
	,@Per6 AS MONEY
	,@Per7 AS MONEY
	,@Per8 AS MONEY
	,@Per9 AS MONEY
	,@Per10 AS MONEY
	,@Per11 AS MONEY
	,@Per12 AS MONEY
	)
AS
BEGIN
	UPDATE tblAcctBudgets
	SET decPeriod1 = @Per1
		,decPeriod2 = @Per2
		,decPeriod3 = @Per3
		,decPeriod4 = @Per4
		,decPeriod5 = @Per5
		,decPeriod6 = @Per6
		,decPeriod7 = @Per7
		,decPeriod8 = @Per8
		,decPeriod9 = @Per9
		,decPeriod10 = @Per10
		,decPeriod11 = @Per11
		,decPeriod12 = @Per12
	WHERE intGLNumber = @Acct
END
GO

CREATE PROCEDURE UpdateAccountsLY (@GLNumber AS NVARCHAR(30))
AS
BEGIN
	UPDATE tblAccountsLY
	SET strDesc = tblAccounts.strDesc
		,intAccType = tblAccounts.intAccType
		,intGroupCode = tblAccounts.intGroupCode
		,intAccClass = tblAccounts.intAccClass
	FROM tblAccounts
	WHERE tblAccounts.intGLNumber = tblAccountsLY.intGLNumber
		AND tblAccounts.intGLNumber = @GLNumber
END
GO

CREATE PROCEDURE UpdateAccountsHist (@GLNumber AS NVARCHAR(30))
AS
BEGIN
	UPDATE tblAccountsHist
	SET strDesc = tblAccounts.strDesc
		,intAccType = tblAccounts.intAccType
		,intGroupCode = tblAccounts.intGroupCode
		,intAccClass = tblAccounts.intAccClass
	FROM tblAccounts
	WHERE tblAccounts.intGLNumber = tblAccountsHist.intGLNumber
		AND tblAccounts.intGLNumber = @GLNumber
END
GO

CREATE PROCEDURE [dbo].[GLSegmentSetupDefaultCodeAndDescAdd]
AS
SET NOCOUNT ON

BEGIN
	DECLARE @l1 AS INT
		,@l2 AS INT
		,@l3 AS INT
		,@l4 AS INT
		,@l5 AS INT
		,@l6 AS INT
		,@l7 AS INT
		,@l8 AS INT
		,@l9 AS INT
		,@l10 AS INT
		,@Add AS INT = 1

	SELECT @l1 = intSeg1Length
		,@l2 = intSeg2Length
		,@l3 = intSeg3Length
		,@l4 = intSeg4Length
		,@l5 = intSeg5Length
		,@l6 = intSeg6Length
		,@l7 = intSeg7Length
		,@l8 = intSeg8Length
		,@l9 = intSeg9Length
		,@l10 = intSeg10Length
	FROM tblGLSegmentFormatSetup

	DELETE
	FROM tblGLSegmentSetup

	IF @l1 > 0
	BEGIN
		INSERT INTO tblGLSegmentSetup (
			intSegmentId
			,strCode
			,strDescription
			,bitIsPrimary
			,intAccType
			,intAccClass
			,intGroupCode
			)
		SELECT 1 AS intSegmentId
			,A.strCode AS strCode
			,A.strDesc AS strDescription
			,0 AS bitIsPrimary
			,A.intAccType
			,A.intAccClass
			,A.intGroupCode
		FROM (
			SELECT SUBSTRING(intGLNumber, @Add, @l1) AS strCode
				,strDesc
				,ROW_NUMBER() OVER (
					PARTITION BY SUBSTRING(intGLNumber, @Add, @l1) ORDER BY SUBSTRING(intGLNumber, @Add, @l1)
					) AS RowNumber
				,intAccType
				,intAccClass
				,intGroupCode
			FROM tblAccounts
			GROUP BY SUBSTRING(intGLNumber, @Add, @l1)
				,strDesc
				,intAccType
				,intAccClass
				,intGroupCode
			) AS A
		WHERE RowNumber = 1
	END

	IF @l2 > 0
	BEGIN
		SET @Add = (@Add + 1) + @l1

		INSERT INTO tblGLSegmentSetup (
			intSegmentId
			,strCode
			,strDescription
			,bitIsPrimary
			,intAccType
			,intAccClass
			,intGroupCode
			)
		SELECT 2 AS intSegmentId
			,A.strCode AS strCode
			,A.strDesc AS strDescription
			,0 AS bitIsPrimary
			,A.intAccType
			,A.intAccClass
			,A.intGroupCode
		FROM (
			SELECT SUBSTRING(intGLNumber, @Add, @l2) AS strCode
				,strDesc
				,ROW_NUMBER() OVER (
					PARTITION BY SUBSTRING(intGLNumber, @Add, @l2) ORDER BY SUBSTRING(intGLNumber, @Add, @l2)
					) AS RowNumber
				,intAccType
				,intAccClass
				,intGroupCode
			FROM tblAccounts
			GROUP BY SUBSTRING(intGLNumber, @Add, @l2)
				,strDesc
				,intAccType
				,intAccClass
				,intGroupCode
			) AS A
		WHERE RowNumber = 1
	END

	IF @l3 > 0
	BEGIN
		SET @Add = (@Add + 1) + @l2

		INSERT INTO tblGLSegmentSetup (
			intSegmentId
			,strCode
			,strDescription
			,bitIsPrimary
			,intAccType
			,intAccClass
			,intGroupCode
			)
		SELECT 3 AS intSegmentId
			,A.strCode AS strCode
			,A.strDesc AS strDescription
			,0 AS bitIsPrimary
			,A.intAccType
			,A.intAccClass
			,A.intGroupCode
		FROM (
			SELECT SUBSTRING(intGLNumber, @Add, @l3) AS strCode
				,strDesc
				,ROW_NUMBER() OVER (
					PARTITION BY SUBSTRING(intGLNumber, @Add, @l3) ORDER BY SUBSTRING(intGLNumber, @Add, @l3)
					) AS RowNumber
				,intAccType
				,intAccClass
				,intGroupCode
			FROM tblAccounts
			GROUP BY SUBSTRING(intGLNumber, @Add, @l3)
				,strDesc
				,intAccType
				,intAccClass
				,intGroupCode
			) AS A
		WHERE RowNumber = 1
	END

	IF @l4 > 0
	BEGIN
		SET @Add = (@Add + 1) + @l3

		INSERT INTO tblGLSegmentSetup (
			intSegmentId
			,strCode
			,strDescription
			,bitIsPrimary
			,intAccType
			,intAccClass
			,intGroupCode
			)
		SELECT 4 AS intSegmentId
			,A.strCode AS strCode
			,A.strDesc AS strDescription
			,0 AS bitIsPrimary
			,A.intAccType
			,A.intAccClass
			,A.intGroupCode
		FROM (
			SELECT SUBSTRING(intGLNumber, @Add, @l4) AS strCode
				,strDesc
				,ROW_NUMBER() OVER (
					PARTITION BY SUBSTRING(intGLNumber, @Add, @l4) ORDER BY SUBSTRING(intGLNumber, @Add, @l4)
					) AS RowNumber
				,intAccType
				,intAccClass
				,intGroupCode
			FROM tblAccounts
			GROUP BY SUBSTRING(intGLNumber, @Add, @l4)
				,strDesc
				,intAccType
				,intAccClass
				,intGroupCode
			) AS A
		WHERE RowNumber = 1
	END

	IF @l5 > 0
	BEGIN
		SET @Add = (@Add + 1) + @l4

		INSERT INTO tblGLSegmentSetup (
			intSegmentId
			,strCode
			,strDescription
			,bitIsPrimary
			,intAccType
			,intAccClass
			,intGroupCode
			)
		SELECT 5 AS intSegmentId
			,A.strCode AS strCode
			,A.strDesc AS strDescription
			,0 AS bitIsPrimary
			,A.intAccType
			,A.intAccClass
			,A.intGroupCode
		FROM (
			SELECT SUBSTRING(intGLNumber, @Add, @l5) AS strCode
				,strDesc
				,ROW_NUMBER() OVER (
					PARTITION BY SUBSTRING(intGLNumber, @Add, @l5) ORDER BY SUBSTRING(intGLNumber, @Add, @l5)
					) AS RowNumber
				,intAccType
				,intAccClass
				,intGroupCode
			FROM tblAccounts
			GROUP BY SUBSTRING(intGLNumber, @Add, @l5)
				,strDesc
				,intAccType
				,intAccClass
				,intGroupCode
			) AS A
		WHERE RowNumber = 1
	END

	IF @l6 > 0
	BEGIN
		SET @Add = (@Add + 1) + @l5

		INSERT INTO tblGLSegmentSetup (
			intSegmentId
			,strCode
			,strDescription
			,bitIsPrimary
			,intAccType
			,intAccClass
			,intGroupCode
			)
		SELECT 6 AS intSegmentId
			,A.strCode AS strCode
			,A.strDesc AS strDescription
			,0 AS bitIsPrimary
			,A.intAccType
			,A.intAccClass
			,A.intGroupCode
		FROM (
			SELECT SUBSTRING(intGLNumber, @Add, @l6) AS strCode
				,strDesc
				,ROW_NUMBER() OVER (
					PARTITION BY SUBSTRING(intGLNumber, @Add, @l6) ORDER BY SUBSTRING(intGLNumber, @Add, @l6)
					) AS RowNumber
				,intAccType
				,intAccClass
				,intGroupCode
			FROM tblAccounts
			GROUP BY SUBSTRING(intGLNumber, @Add, @l6)
				,strDesc
				,intAccType
				,intAccClass
				,intGroupCode
			) AS A
		WHERE RowNumber = 1
	END

	IF @l7 > 0
	BEGIN
		SET @Add = (@Add + 1) + @l6

		INSERT INTO tblGLSegmentSetup (
			intSegmentId
			,strCode
			,strDescription
			,bitIsPrimary
			,intAccType
			,intAccClass
			,intGroupCode
			)
		SELECT 7 AS intSegmentId
			,A.strCode AS strCode
			,A.strDesc AS strDescription
			,0 AS bitIsPrimary
			,A.intAccType
			,A.intAccClass
			,A.intGroupCode
		FROM (
			SELECT SUBSTRING(intGLNumber, @Add, @l7) AS strCode
				,strDesc
				,ROW_NUMBER() OVER (
					PARTITION BY SUBSTRING(intGLNumber, @Add, @l7) ORDER BY SUBSTRING(intGLNumber, @Add, @l7)
					) AS RowNumber
				,intAccType
				,intAccClass
				,intGroupCode
			FROM tblAccounts
			GROUP BY SUBSTRING(intGLNumber, @Add, @l7)
				,strDesc
				,intAccType
				,intAccClass
				,intGroupCode
			) AS A
		WHERE RowNumber = 1
	END

	IF @l8 > 0
	BEGIN
		SET @Add = (@Add + 1) + @l7

		INSERT INTO tblGLSegmentSetup (
			intSegmentId
			,strCode
			,strDescription
			,bitIsPrimary
			,intAccType
			,intAccClass
			,intGroupCode
			)
		SELECT 8 AS intSegmentId
			,A.strCode AS strCode
			,A.strDesc AS strDescription
			,0 AS bitIsPrimary
			,A.intAccType
			,A.intAccClass
			,A.intGroupCode
		FROM (
			SELECT SUBSTRING(intGLNumber, @Add, @l8) AS strCode
				,strDesc
				,ROW_NUMBER() OVER (
					PARTITION BY SUBSTRING(intGLNumber, @Add, @l8) ORDER BY SUBSTRING(intGLNumber, @Add, @l8)
					) AS RowNumber
				,intAccType
				,intAccClass
				,intGroupCode
			FROM tblAccounts
			GROUP BY SUBSTRING(intGLNumber, @Add, @l8)
				,strDesc
				,intAccType
				,intAccClass
				,intGroupCode
			) AS A
		WHERE RowNumber = 1
	END

	IF @l9 > 0
	BEGIN
		SET @Add = (@Add + 1) + @l8

		INSERT INTO tblGLSegmentSetup (
			intSegmentId
			,strCode
			,strDescription
			,bitIsPrimary
			,intAccType
			,intAccClass
			,intGroupCode
			)
		SELECT 9 AS intSegmentId
			,A.strCode AS strCode
			,A.strDesc AS strDescription
			,0 AS bitIsPrimary
			,A.intAccType
			,A.intAccClass
			,A.intGroupCode
		FROM (
			SELECT SUBSTRING(intGLNumber, @Add, @l9) AS strCode
				,strDesc
				,ROW_NUMBER() OVER (
					PARTITION BY SUBSTRING(intGLNumber, @Add, @l9) ORDER BY SUBSTRING(intGLNumber, @Add, @l9)
					) AS RowNumber
				,intAccType
				,intAccClass
				,intGroupCode
			FROM tblAccounts
			GROUP BY SUBSTRING(intGLNumber, @Add, @l9)
				,strDesc
				,intAccType
				,intAccClass
				,intGroupCode
			) AS A
		WHERE RowNumber = 1
	END

	IF @l10 > 0
	BEGIN
		SET @Add = (@Add + 1) + @l9

		INSERT INTO tblGLSegmentSetup (
			intSegmentId
			,strCode
			,strDescription
			,bitIsPrimary
			,intAccType
			,intAccClass
			,intGroupCode
			)
		SELECT 10 AS intSegmentId
			,A.strCode AS strCode
			,A.strDesc AS strDescription
			,0 AS bitIsPrimary
			,A.intAccType
			,A.intAccClass
			,A.intGroupCode
		FROM (
			SELECT SUBSTRING(intGLNumber, @Add, @l10) AS strCode
				,strDesc
				,ROW_NUMBER() OVER (
					PARTITION BY SUBSTRING(intGLNumber, @Add, @l10) ORDER BY SUBSTRING(intGLNumber, @Add, @l10)
					) AS RowNumber
				,intAccType
				,intAccClass
				,intGroupCode
			FROM tblAccounts
			GROUP BY SUBSTRING(intGLNumber, @Add, @l10)
				,strDesc
				,intAccType
				,intAccClass
				,intGroupCode
			) AS A
		WHERE RowNumber = 1
	END
END

RETURN 1
GO

CREATE PROCEDURE [dbo].[GetInvNoAccessUser] @GLNumber AS NVARCHAR(30)
AS
BEGIN
	SELECT strUserName AS UserName
	FROM tblUsers
	WHERE strUserName NOT IN (
			SELECT strUserName
			FROM tblAccountsSec
			WHERE intGLNumber = @GLNumber
			)
END
GO

CREATE PROCEDURE InsertInvAlternateItems @PartNumber AS NVARCHAR(100)
	,@PartItemNumber AS NVARCHAR(100)
	,@QtyToUse AS DECIMAL
	,@Unit AS NVARCHAR(60)
AS
BEGIN
	INSERT INTO tblInvAlternate
	VALUES (
		@PartNumber
		,@PartItemNumber
		,@QtyToUse
		,@Unit
		)
END
GO

CREATE PROCEDURE [dbo].[DeleteInvAlternateItems] @PartNumber AS NVARCHAR(100)
AS
BEGIN
IF EXISTS (SELECT 1 FROM tblInvAlternate WHERE strPartNumber = @PartNumber)
BEGIN
    DELETE 
    FROM tblInvAlternate
    WHERE strPartNumber = @PartNumber
END
END
GO

CREATE PROCEDURE GetInventoryDetailsForAlternateItems @PartNumber AS NVARCHAR(100)
	,@BarCode AS NVARCHAR(100) NULL
	,@Unit AS NVARCHAR(100) NULL
AS
BEGIN
	IF (
			@Unit IS NULL
			OR len(@Unit) = 0
			)
	BEGIN
		SELECT tblInv.strPartNumber AS PartNumber
			,tblInv.strDesc AS [Desc]
			,tbprice.strUnit AS Unit
		FROM tblInv
		INNER JOIN (
			SELECT DISTINCT strPartNumber
				,strUnit
				,bitStockUnit
			FROM tblInvPrice
			) AS tbprice ON tblInv.strPartNumber = tbprice.strPartNumber
		LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
			AND tblInvUOMs.strFromUnit = tbprice.strUnit
			AND tblInvUOMs.strUseFor IN (
				'Both'
				,'Sales'
				)
		WHERE (
				tblInv.strPartNumber = @PartNumber
				OR tblInv.strBarCode = @BarCode
				)
			AND tblInv.bitInactive = 0
			AND (
				CASE 
					WHEN tblInv.strBarCode = @BarCode
						OR tblInv.strBarCode2 = @BarCode
						THEN tbprice.bitStockUnit
					ELSE CASE 
							WHEN tblInv.strPartNumber = @PartNumber
								THEN CASE 
										WHEN tbprice.bitStockUnit = 1
											THEN tblInv.bitDefaultUOM
										ELSE 0
										END
							ELSE 1
							END
					END = 1
				OR CASE 
					WHEN tblInv.strBarCode = @BarCode
						OR tblInv.strBarCode2 = @BarCode
						THEN tbprice.bitStockUnit
					ELSE ISNULL(tblInvUOMs.bitDefaultUOM, 0)
					END = 1
				)
	END
	ELSE
	BEGIN
		SELECT tblInv.strPartNumber AS PartNumber
			,tblInv.strDesc AS [Desc]
			,tbprice.strUnit AS Unit
		FROM tblInv
		INNER JOIN (
			SELECT DISTINCT strPartNumber
				,strUnit
				,bitStockUnit
			FROM tblInvPrice
			) AS tbprice ON tblInv.strPartNumber = tbprice.strPartNumber
		LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
			AND tblInvUOMs.strFromUnit = tbprice.strUnit
			AND tblInvUOMs.strUseFor IN (
				'Both'
				,'Sales'
				)
		WHERE (
				tblInv.strPartNumber = @PartNumber
				OR tblInv.strBarCode = @BarCode
				)
			AND tblInv.bitInactive = 0
			AND (tbprice.strUnit = @Unit)
	END
END
GO

CREATE PROCEDURE LoadAlternateItems @PartNumber AS NVARCHAR(100)
AS
BEGIN
	SELECT tblInvAlternate.strPartItemNumber AS PartNumber
		,ISNULL(tblInv.strDesc, '') AS [Desc]
		,tblInvAlternate.intQtyToUse AS Qty
		,tblInvAlternate.strUnit AS Unit
	FROM tblInvAlternate
	LEFT JOIN tblInv ON tblInvAlternate.strPartItemNumber = tblInv.strPartNumber
	WHERE (tblInvAlternate.strPartNumber = @PartNumber)
	ORDER BY tblInvAlternate.strPartItemNumber
END
GO

CREATE PROCEDURE [dbo].[UpdateRecordToAccount] @DatePosted AS DATETIME
	,@Start AS DATETIME
	,@EndDate AS DATETIME
	,@OpenBal AS Decimal
	,@ClosingBal AS MONEY
	,@BookBal AS MONEY
	,@Discr AS MONEY
	,@BRSumID AS BIGINT
	,@Posted AS BIT
AS
BEGIN
	UPDATE tblBankRecSum
	SET bitPosted = @Posted
		,dteDatePosted = @DatePosted
		,dteStatStart = @Start
		,dteStatEnd = @EndDate
		,decOpenBal = @OpenBal
		,decClosingBal = @ClosingBal
		,decBookBal = @BookBal
		,decDiscr = @Discr
	WHERE lngBRSumID = @BRSumID
END
GO

CREATE PROCEDURE [dbo].[UpdateBankRecTrans] 
    @TransId AS BIGINT
	,@BRSumID AS BIGINT
	,@IsRecord AS BIT
	,@IsCleared AS BIT
AS
BEGIN
if(@IsRecord = 1)
begin
	UPDATE tblBankRecTrans
	SET bitCleared = 1
		,bitSavedAsCleared = 0
		,lngBRSumIDPostedTo = @BRSumID
		,bitUserSaved
= 0
	WHERE lngID = @TransId
	end
else
begin
if(@IsCleared =1)
  BEGIN
	UPDATE tblBankRecTrans SET bitSavedAsCleared = 1, bitUserSaved = 1 WHERE lngID = @TransId
  END
  ELSE
  BEGIN
    UPDATE tblBankRecTrans SET bitSavedAsCleared = 0, bitUserSaved = 0 WHERE lngID = @TransId
END
  END
END
GO

CREATE PROCEDURE GetCurrencyRateExc @CustCurrencyCode AS NVARCHAR(10)
	,@RevaluationDate AS DATETIME
AS
BEGIN
	SELECT decRate
	FROM tblCurrencyExc
	WHERE strCurrency = @CustCurrencyCode
		AND dteDate = (
			SELECT MAX(dteDate)
			FROM tblCurrencyExc
			WHERE strCurrency = @CustCurrencyCode
				AND dteDate <= @RevaluationDate
			)
END
GO

CREATE PROCEDURE [dbo].[GetInvLocBinDetails] @DocNumber AS NVARCHAR(100)
AS
BEGIN
	SELECT tblInvAsmDocDT.bitComponents AS Components
		,tblInvAsmDocDT.strPartNumber AS PartNumber
		,tblInv.strDesc AS [Description]
		,tblInvAsmDocDT.decQty AS Quantity
		,tblInvAsmDocDT.decUnitCost AS UnitCost
		,tblInvAsmDocDT.decAmount AS Amount
		,tblInv.bitInvSerialType AS InventorySerialNumber
		,tblInv.bitInvSerialType AS SerialType
		,tblInvAsmDocDT.strLocName AS LocName
		,tblInvAsmDocDT.decReqQty AS RequiredQty
		,ISNULL(STUFF((
					SELECT ',' + CAST(tblInvLocBin.strBinCode AS VARCHAR(MAX))
					FROM tblInvLocBin
					WHERE tblInvLocBin.lngId IN (
							SELECT lngBinId
							FROM tblInvAsmDocDTBin
							WHERE tblInvAsmDocDTBin.strAsmDocID = tblInvAsmDocDT.strAsmDocID
								AND tblInvAsmDocDTBin.intLineNo = tblInvAsmDocDT.intLineNo
							)
					FOR XML PATH('')
					), 1, 1, ''), '') AS BinCode
		,ISNULL(STUFF((
					SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(MAX))
					FROM tblInvLocBin
					WHERE tblInvLocBin.lngId IN (
							SELECT lngBinId
							FROM tblInvAsmDocDTBin
							WHERE tblInvAsmDocDTBin.strAsmDocID = tblInvAsmDocDT.strAsmDocID
								AND tblInvAsmDocDTBin.intLineNo = tblInvAsmDocDT.intLineNo
							)
					FOR XML PATH('')
					), 1, 1, ''), '') AS strBinId
		,CAST(ISNULL(STUFF((
					SELECT ',' + CAST(tblInvLocBin.lngId AS VARCHAR(MAX))
					FROM tblInvLocBin
					WHERE tblInvLocBin.lngId IN (
							SELECT lngBinId
							FROM tblInvAsmDocDTBin
							WHERE tblInvAsmDocDTBin.strAsmDocID = tblInvAsmDocDT.strAsmDocID
								AND tblInvAsmDocDTBin.intLineNo = tblInvAsmDocDT.intLineNo
							)
					FOR XML PATH('')
					), 1, 1, ''), '') AS bigint) AS BinId
		,tblInvAsmDocDT.intLineNo AS [LineNo]
	FROM tblInvAsmDocDT
	INNER JOIN tblInv ON tblInvAsmDocDT.strPartNumber = tblInv.strPartNumber
	WHERE tblInvAsmDocDT.strAsmDocID = @DocNumber
	ORDER BY tblInvAsmDocDT.intLineNo
END
GO

CREATE PROCEDURE [dbo].[GetProfilesData] (
	@PageSize INT = 25
	,@PageNumber INT = 1
	,@Search AS NVARCHAR(Max) = ''
	)
AS
BEGIN
	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT *
	FROM tblProfileMenu
	WHERE (
			ISNULL(ScreenName, '') LIKE '%' + ISNULL(@search, ScreenName) + '%'
			OR ISNULL(ScreenDescription, '') LIKE '%' + ISNULL(@search, ScreenDescription) + '%'
			)
	ORDER BY ScreenName OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

CREATE PROCEDURE [dbo].[GetOfflineTerminalAssignedUser] (@OfflineTerminalId INT)
AS
BEGIN
	SELECT TOP 1 strAssignedUser AS UserName
	FROM tblPOSDrs
	WHERE intStatus IN (
			0
			,1
			)
		AND intOfflineTerminalId = @OfflineTerminalId
END
GO

CREATE PROCEDURE [dbo].[LoadManWIPJobs] (
	@IsCheckedSearch BIT
	,@SearchText NVARCHAR(max)
	,@StartDate DATETIME
	,@EndDate DATETIME
	,@Type INT
	)
AS
BEGIN
	IF (@IsCheckedSearch = 1)
	BEGIN
		IF (@SearchText <> '')
		BEGIN
			SELECT strJBDocID AS ProcessDocID
				,strReference AS ReferenceNumber
			FROM tblManJob
			WHERE (
					strJBDocID LIKE @SearchText
					OR strReference LIKE @SearchText
					)
				AND (
					tblManJob.dteJournalDate BETWEEN @StartDate
						AND @EndDate
					)
				AND (tblManJob.intType = @Type)
			ORDER BY strJBDocID
		END
	END
	ELSE
	BEGIN
		SELECT strJBDocID AS ProcessDocID
			,strReference AS ReferenceNumber
		FROM tblManJob
		WHERE (
				tblManJob.dteJournalDate BETWEEN @StartDate
					AND @EndDate
				)
			AND (tblManJob.intType = @Type)
	END
END
GO

CREATE PROCEDURE [dbo].[NavigateReceivingByVendor] (
	@DocumentID NVARCHAR(100)
	,@VendName NVARCHAR(100)
	,@IsPrevious BIT
	)
AS
BEGIN
	IF (@IsPrevious = 1)
	BEGIN
		SELECT MAX(strOrdPGDocID)
		FROM tblOrderDocPG
		WHERE strOrdPGDocID < @DocumentID
		AND bitCleared = 0
		AND strVendName = @VendName 
	END
	ELSE
	BEGIN
		SELECT MIN(strOrdPGDocID)
		FROM tblOrderDocPG
		WHERE strOrdPGDocID > @DocumentID
			AND bitCleared = 0
			AND strVendName = @VendName
	END
END
GO
CREATE PROCEDURE [dbo].[RptShipmentDetailReportData] (
	@optCustomer BIT
	,@SQStart NVARCHAR(19)
	,@SQEnd NVARCHAR(19)
	,@SQCustName NVARCHAR(max)
	,@SQDelRouteCode NVARCHAR(max)
	,@SelectedItems BIT
	)
AS
BEGIN
	DECLARE @Query AS NVARCHAR(max)

	SET @Query = 'SELECT HDR.strShpDocID AS ShipDocID, HDR.dteJournalDate AS JournalDate, HDR.dteRequired AS DateRequired, HDR.strReference AS Reference, DTL.strInvDocID AS DocID, '

	IF (@optCustomer = 1)
	BEGIN
		SET @Query += 'CONCAT(CUST.strCustName, '' - '', CUST.strCustDesc) AS GroupName, '
	END
	ELSE
	BEGIN
		SET @Query += 'CONCAT(DEL.strDelRouteCode, '' - '', DEL.strDelRouteDesc) AS GroupName, '
	END

	SET @Query += 'CONCAT(CUST.strCustName, '' - '', CUST.strCustDesc) AS CustName, DTL.strPartNumber AS PartNumber, DTL.strPartDesc AS PartDescription, DTL.decShpQty AS ShipmentQty, (DTL.decInvRemQty - DTL.decShpQty) AS RemainQty '
	SET @Query += 'FROM tblShipments HDR INNER JOIN tblShipmentsDT DTL ON HDR.strShpDocID = DTL.strShpDocID INNER JOIN tblCustomers CUST ON DTL.strCustName = CUST.strCustName '

	IF (@optCustomer = 1)
	BEGIN
		IF (@SelectedItems = 1)
		BEGIN
			SET @Query += ' WHERE (HDR.dteJournalDate BETWEEN ''' + @SQStart + ''' AND ''' + @SQEnd + ''') AND (CUST.strCustName IN (SELECT * FROM fnSplitStringAsTable(''' + @SQCustName + ''', '',''))) '
		END

		SET @Query += 'ORDER BY CUST.strCustName, HDR.strShpDocID, DTL.strInvDocID'
	END
	ELSE
	BEGIN
		SET @Query += 'INNER JOIN tblDeliveryRoutes DEL ON DTL.strDelRouteCode = DEL.strDelRouteCode '

		IF (@SelectedItems = 1)
		BEGIN
			SET @Query += ' WHERE (HDR.dteJournalDate BETWEEN ''' + @SQStart + ''' AND ''' + @SQEnd + ''') AND (DEL.strDelRouteCode IN (SELECT * FROM fnSplitStringAsTable(''' + @SQDelRouteCode + ''', '',''))) '
		END

		SET @Query += 'ORDER BY DEL.strDelRouteCode, HDR.strShpDocID, DTL.strInvDocID'
	END

	PRINT @Query

	EXEC sp_Executesql @Query
END
GO

CREATE PROCEDURE [dbo].[GetInvAdjustmentsSerialTypeData]
(
@PartNumber AS NVARCHAR(100)
)
AS
BEGIN
	SELECT tblInv.bitInvSerialType AS 'IsInvSerialType',
		ISNULL(tblInvSerialTypes.bitMethod, 0) AS 'IsMethod',
		ISNULL(tblInvSerialTypes.intMin, 0) AS 'Min',
		ISNULL(tblInvSerialTypes.intMax, 0) AS 'Max',
		ISNULL(tblInvSerialTypes.intFormat, 0) AS 'Format',
		ISNULL(tblInvSerialTypes.intType, 0) AS 'Type',
		ISNULL(tblInvSerialTypes.bitTrackExpiryDate, 0) AS 'IsTrackExpiryDate',
		tblInv.strBuyUnit AS 'BuyUnit',
		ISNULL(tblInvSerialTypes.intExpiryDateAuthAD, 0) AS 'ExpiryDateAuth',
		ISNULL(tblInvSerialTypes.strInvSerialType, '') AS 'InvSerialType',
		ISNULL(tblInvSerialTypes.strDimProCode, '') AS 'DimProCode'
		,ISNULL(tblInvSerialTypes.bitAutoCreateLotNumber,0) AS 'IsAutoCreateLotNumber',
		ISNULL(tblInvSerialTypes.intLotNumberStartsFrom, 0) AS 'LotNumberStartsFrom',
		ISNULL(tblInvSerialTypes.intNextLotNumber, 1) AS 'NextLotNumber',
		ISNULL(tblInvSerialTypes.intDaysExpire, 0) AS 'intDaysExpire'
	FROM tblInv
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblInv.strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[FetchVendorDetails]
    (
      @VendNameInDB VARCHAR(100) = NULL
    )
AS
    BEGIN
        SET NOCOUNT ON;
        SELECT  tblVendors.decBalDue AS BalDue ,
                tblVendors.decBalDueF AS BalDueF ,
                tblVendors.strCurrency AS Currency ,
                tblCurrency.strCurrSymbol AS CurrencySymbol
        FROM    tblVendors
                INNER JOIN tblCurrency ON tblVendors.strCurrency = tblCurrency.strCurrency
        WHERE   tblVendors.strVendName = @VendNameInDB;
    END
GO

CREATE PROCEDURE [dbo].[CustomersDelete]
(
 @DocNumber NVARCHAR(50)
)
AS
BEGIN
	DELETE FROM tblCustomers WHERE strCustName = @DocNumber
END
GO

CREATE PROCEDURE [dbo].[prContractBillType_SelectAllData] (
	@InActive BIT = 0
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@SearchText AS NVARCHAR(Max) = ''
	)
AS
BEGIN
	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT [lngID] AS ID
		,[strContBillType] AS ContBillType
		,[strContBillTypeDesc] AS ContBillTypeDesc
		,[bitInactive] AS IsInactive
		,[intChargeonFreq] AS ChargeonFreq
		,[intChargeonFreqType] AS ChargeonFreqType
		,[intChargeonDay] AS ChargeonDay
		,[dteSystemDate] AS SystemDate
		,[dteActivateFrom] AS ActivateFrom
		,[dteTerminateOn] AS TerminateOn
		,[bitChargeImmediate] AS IsChargeImmediate
		,[bitLimitOccourance] AS IsLimitOccurrence
		,[intLimitOccouranceTimes] AS LimitOccurrenceTimes
	FROM [tblContractBillTypes]
	WHERE (
			bitInactive = @InActive
			OR bitInactive = 0
			)
		AND (
			(ISNULL(strContBillType, '') LIKE '%' + ISNULL(@SearchText, strContBillType) + '%')
			OR ISNULL(strContBillTypeDesc, '') LIKE '%' + ISNULL(@SearchText, strContBillTypeDesc) + '%'
			)
	ORDER BY ContBillType OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

CREATE PROCEDURE [GetStockUnitFromINV]
@PartNumber NVARCHAR(200)
AS
BEGIN
	Select strStockUnit from tblInv where strPartNumber=@PartNumber 
	Union All 
	select strFromUnit from tblInvUOMs where strPartNumber=@PartNumber and strUseFor<>'Sales'
END
GO

CREATE PROCEDURE [dbo].[SaveInvVendorItemTest]
(
@lngID bigint
,@strPartNumber NVARCHAR(200)
,@strVendName NVARCHAR(200)
,@strItemCode NVARCHAR(200)
,@strItemDesc NVARCHAR(200)
,@intWarrantyDays int
,@decPrice decimal
,@bitPreferred bit
,@decDiscPerc decimal
,@decLocalPrice decimal
,@decLandedCostFactor decimal
,@strUnit NVARCHAR(200)
)
AS
BEGIN
DECLARE @uidPriceBasedID uniqueidentifier
IF(@lngID = 0)
	SET @uidPriceBasedID = (Select uidPriceBasedID from tblInvVendPriceListsByDate where strVendName=@strVendName);

IF(@lngID = 0)
BEGIN
	INSERT INTO tblInvVend (strPartNumber,strVendName,strItemCode,strItemDesc,intWarrantyDays,decPrice,bitPreferred,decDiscPerc,decLandedCostFactor,decLocalPrice,decOnHand,decAvail,bitOtherCmp,strUnit,uidPriceBasedID) VALUES (@strPartNumber,@strVendName,@strItemCode,@strItemDesc,@intWarrantyDays,@decPrice,@bitPreferred,@decDiscPerc,@decLocalPrice,@decLandedCostFactor,0,0,0,@strUnit,@uidPriceBasedID)
END
ELSE
BEGIN
	UPDATE tblInvVend SET strPartNumber = @strPartNumber, strVendName = @strVendName, strItemCode = @strItemCode, strItemDesc = @strItemDesc, intWarrantyDays = @intWarrantyDays, decPrice = @decPrice, bitPreferred = @bitPreferred, decDiscPerc = @decDiscPerc, decLocalPrice = @decLocalPrice, decLandedCostFactor = @decLandedCostFactor WHERE lngID = @lngID
END
END
GO

CREATE PROCEDURE [DeleteInvVendorItem] @lngID BIGINT
AS
BEGIN
	DELETE
	FROM tblInvVend
	WHERE lngID = @lngID
END
GO

CREATE PROCEDURE [dbo].[RptJournalHyperLinkVendPayId] 
@SQstrDocNumber AS NVARCHAR(Max) = ''
AS
BEGIN

	SELECT lngVendPayID FROM tblVendPay WHERE strSource = @SQstrDocNumber
END
GO

CREATE PROCEDURE [dbo].[BulkRFQ] (  
 @QUERY VARCHAR(MAX) = NULL  
 ,@WHERE_QUERY VARCHAR(MAX) = NULL  
 ,@IS_CATEGORY VARCHAR(1) = 'N'  
 ,@ITM_COUNT INT = 0  
 ,@SLTITEM_COUNT INT = 0  
 ,@IS_INACTIVE VARCHAR(1) = 'N'  
 ,@IS_ITEMS VARCHAR(1) = 'N'  
 ,@IS_SERVICE VARCHAR(1) = 'N'  
 ,@IS_ALL VARCHAR(1) = 'N'  
 ,@IS_OUTSTANDING VARCHAR(1) = 'N'  
 ,@IS_APPROVED VARCHAR(1) = 'N'  
 ,@SQSTART VARCHAR(25) = NULL  
 ,@SQEND VARCHAR(25) = NULL  
 ,@SQAPPROVED VARCHAR(1) = 'N'  
 ,@SQCategory VARCHAR(MAX) = NULL  
 ,@SQPartNumber VARCHAR(MAX) = NULL  
 )  
AS  
BEGIN  
 IF @IS_CATEGORY = 'Y'  
 BEGIN  
  SELECT tblOrderDocRFQ.strOrdRFQDocID  
   ,tblOrderDocRFQ.dteJournalDate  
   ,tblOrderDocRFQ.dteRequired  
   ,tblOrderDocRFQ.strAddInfo  
   ,tblOrderDocRFQ.strReference  
   ,tblOrderDocRFQDT.intLineNo  
   ,tblOrderDocRFQDT.strPartNumber  
   ,tblOrderDocRFQDT.strPartDesc  
   ,tblOrderDocRFQDT.decQty  
   ,ISNULL(tblOrderDocRFQDT.strVendName, '''') AS strVendName  
   ,tblOrderDocRFQDT.bitApproved  
   ,ISNULL(tblOrderDocRFQDT.strCurrency, '''') AS strCurrency  
   ,tblOrderDocRFQDT.decLinePriceEa  
   ,tblOrderDocRFQDT.decLineDiscPerc  
   ,tblOrderDocRFQDT.decLineDiscAmt  
   ,tblOrderDocRFQDT.decLineTotAmt  
  FROM tblOrderDocRFQ  
  INNER JOIN tblOrderDocRFQDT ON tblOrderDocRFQ.strOrdRFQDocID = tblOrderDocRFQDT.strOrdRFQDocID  
  INNER JOIN dbo.fnTblInvLocationsAll() tblInv ON tblOrderDocRFQDT.strPartNumber = tblInv.strPartNumber  
  INNER JOIN tblInvCat ON tblInv.strCategory = tblInvCat.strCategory  
  WHERE (  
    tblOrderDocRFQ.dteJournalDate BETWEEN @SQStart  
     AND @SQEnd  
    )  
   AND (  
    tblInv.strCategory IN (  
     SELECT *  
     FROM fnSplitStringAsTable(@SQCategory, ',')  
     )  
    )  
   AND (  
    tblInv.bitInactive = CASE   
     WHEN @IS_INACTIVE = 'Y'  
      THEN 0  
     ELSE tblInv.bitInactive  
     END  
    )  
	AND (
	(@IS_APPROVED = 'Y' and tblOrderDocRFQDT.bitApproved = @SQApproved)
	or @IS_APPROVED = 'N'
	)
  ORDER BY tblOrderDocRFQDT.bitApproved  
   ,tblOrderDocRFQ.strOrdRFQDocID  
   ,tblOrderDocRFQDT.intLineNo  
 END  
  
 IF @IS_ITEMS = 'Y'  
 BEGIN  
  SELECT tblOrderDocRFQ.strOrdRFQDocID  
   ,tblOrderDocRFQ.dteJournalDate  
   ,tblOrderDocRFQ.dteRequired  
   ,tblOrderDocRFQ.strAddInfo  
   ,tblOrderDocRFQ.strReference  
   ,tblOrderDocRFQDT.intLineNo  
   ,tblOrderDocRFQDT.strPartNumber  
   ,tblOrderDocRFQDT.strPartDesc  
   ,tblOrderDocRFQDT.decQty  
   ,ISNULL(tblOrderDocRFQDT.strVendName, '''') AS strVendName  
   ,tblOrderDocRFQDT.bitApproved  
   ,ISNULL(tblOrderDocRFQDT.strCurrency, '''') AS strCurrency  
   ,tblOrderDocRFQDT.decLinePriceEa  
   ,tblOrderDocRFQDT.decLineDiscPerc  
   ,tblOrderDocRFQDT.decLineDiscAmt  
   ,tblOrderDocRFQDT.decLineTotAmt  
  FROM tblOrderDocRFQ  
  INNER JOIN tblOrderDocRFQDT ON tblOrderDocRFQ.strOrdRFQDocID = tblOrderDocRFQDT.strOrdRFQDocID  
  INNER JOIN dbo.fnTblInvLocationsAll() tblInv ON tblOrderDocRFQDT.strPartNumber = tblInv.strPartNumber  
  INNER JOIN tblInvCat ON tblInv.strCategory = tblInvCat.strCategory  
  WHERE (  
    tblOrderDocRFQ.dteJournalDate BETWEEN @SQStart  
     AND @SQEnd  
    )  
   AND (  
    tblOrderDocRFQDT.strPartNumber IN (  
     SELECT *  
     FROM fnSplitStringAsTable(@SQPartNumber, ',')  
     )  
    )  
   AND (  
    tblInv.bitInactive = CASE   
     WHEN @IS_INACTIVE = 'Y'  
      THEN 0  
     ELSE tblInv.bitInactive  
     END  
    )  
   AND tblInv.intType = 1  
   AND (
	(@IS_APPROVED = 'Y' and tblOrderDocRFQDT.bitApproved = @SQApproved)
	or @IS_APPROVED = 'N'
	)
  ORDER BY tblOrderDocRFQDT.bitApproved  
   ,tblOrderDocRFQ.strOrdRFQDocID  
   ,tblOrderDocRFQDT.intLineNo  
 END  
  
 IF @IS_SERVICE = 'Y'  
 BEGIN  
  SELECT tblOrderDocRFQ.strOrdRFQDocID  
   ,tblOrderDocRFQ.dteJournalDate  
   ,tblOrderDocRFQ.dteRequired  
   ,tblOrderDocRFQ.strAddInfo  
   ,tblOrderDocRFQ.strReference  
   ,tblOrderDocRFQDT.intLineNo  
   ,tblOrderDocRFQDT.strPartNumber  
   ,tblOrderDocRFQDT.strPartDesc  
   ,tblOrderDocRFQDT.decQty  
   ,ISNULL(tblOrderDocRFQDT.strVendName, '''') AS strVendName  
   ,tblOrderDocRFQDT.bitApproved  
   ,ISNULL(tblOrderDocRFQDT.strCurrency, '''') AS strCurrency  
   ,tblOrderDocRFQDT.decLinePriceEa  
   ,tblOrderDocRFQDT.decLineDiscPerc  
   ,tblOrderDocRFQDT.decLineDiscAmt  
   ,tblOrderDocRFQDT.decLineTotAmt  
  FROM tblOrderDocRFQ  
  INNER JOIN tblOrderDocRFQDT ON tblOrderDocRFQ.strOrdRFQDocID = tblOrderDocRFQDT.strOrdRFQDocID  
  INNER JOIN dbo.fnTblInvLocationsAll() tblInv ON tblOrderDocRFQDT.strPartNumber = tblInv.strPartNumber  
  INNER JOIN tblInvCat ON tblInv.strCategory = tblInvCat.strCategory  
  WHERE (  
    tblOrderDocRFQ.dteJournalDate BETWEEN @SQStart  
     AND @SQEnd  
    )  
   AND (  
    tblOrderDocRFQDT.strPartNumber IN (  
     SELECT *  
     FROM fnSplitStringAsTable(@SQPartNumber, ',')  
     )  
    )  
   AND (  
    tblInv.bitInactive = CASE   
     WHEN @IS_INACTIVE = 'Y'  
      THEN 0  
     ELSE tblInv.bitInactive  
     END  
    )  
   AND tblInv.intType = 4
   AND (
	(@IS_APPROVED = 'Y' and tblOrderDocRFQDT.bitApproved = @SQApproved)
	or @IS_APPROVED = 'N'
	)
  ORDER BY tblOrderDocRFQDT.bitApproved  
   ,tblOrderDocRFQ.strOrdRFQDocID  
   ,tblOrderDocRFQDT.intLineNo  
 END  
  
 IF @IS_ALL = 'Y'  
 BEGIN  
  SELECT tblOrderDocRFQ.strOrdRFQDocID  
   ,tblOrderDocRFQ.dteJournalDate  
   ,tblOrderDocRFQ.dteRequired  
   ,tblOrderDocRFQ.strAddInfo  
   ,tblOrderDocRFQ.strReference  
   ,tblOrderDocRFQDT.intLineNo  
   ,tblOrderDocRFQDT.strPartNumber  
   ,tblOrderDocRFQDT.strPartDesc  
   ,tblOrderDocRFQDT.decQty  
   ,ISNULL(tblOrderDocRFQDT.strVendName, '''') AS strVendName  
   ,tblOrderDocRFQDT.bitApproved  
   ,ISNULL(tblOrderDocRFQDT.strCurrency, '''') AS strCurrency  
   ,tblOrderDocRFQDT.decLinePriceEa  
   ,tblOrderDocRFQDT.decLineDiscPerc  
   ,tblOrderDocRFQDT.decLineDiscAmt  
   ,tblOrderDocRFQDT.decLineTotAmt  
  FROM tblOrderDocRFQ  
  INNER JOIN tblOrderDocRFQDT ON tblOrderDocRFQ.strOrdRFQDocID = tblOrderDocRFQDT.strOrdRFQDocID  
  INNER JOIN dbo.fnTblInvLocationsAll() tblInv ON tblOrderDocRFQDT.strPartNumber = tblInv.strPartNumber  
  INNER JOIN tblInvCat ON tblInv.strCategory = tblInvCat.strCategory  
  WHERE (  
    tblOrderDocRFQ.dteJournalDate BETWEEN @SQStart  
     AND @SQEnd  
    )  
   AND (  
    tblOrderDocRFQDT.strPartNumber IN (  
     SELECT *  
     FROM fnSplitStringAsTable(@SQPartNumber, ',')  
     )  
    )  
	AND (
	(@IS_APPROVED = 'Y' and tblOrderDocRFQDT.bitApproved = @SQApproved)
	or @IS_APPROVED = 'N'
	)
  ORDER BY tblOrderDocRFQDT.bitApproved  
   ,tblOrderDocRFQ.strOrdRFQDocID  
   ,tblOrderDocRFQDT.intLineNo  
 END  
  
 IF @IS_OUTSTANDING = 'Y'  
 BEGIN  
  SELECT tblOrderDocRFQ.strOrdRFQDocID  
   ,tblOrderDocRFQ.dteJournalDate  
   ,tblOrderDocRFQ.dteRequired  
   ,tblOrderDocRFQ.strAddInfo  
   ,tblOrderDocRFQ.strReference  
   ,tblOrderDocRFQDT.intLineNo  
   ,tblOrderDocRFQDT.strPartNumber  
   ,tblOrderDocRFQDT.strPartDesc  
   ,tblOrderDocRFQDT.decQty  
   ,ISNULL(tblOrderDocRFQDT.strVendName, '''') AS strVendName  
   ,tblOrderDocRFQDT.bitApproved  
   ,ISNULL(tblOrderDocRFQDT.strCurrency, '''') AS strCurrency  
   ,tblOrderDocRFQDT.decLinePriceEa  
   ,tblOrderDocRFQDT.decLineDiscPerc  
   ,tblOrderDocRFQDT.decLineDiscAmt  
   ,tblOrderDocRFQDT.decLineTotAmt  
  FROM tblOrderDocRFQ  
  INNER JOIN tblOrderDocRFQDT ON tblOrderDocRFQ.strOrdRFQDocID = tblOrderDocRFQDT.strOrdRFQDocID  
  INNER JOIN dbo.fnTblInvLocationsAll() tblInv ON tblOrderDocRFQDT.strPartNumber = tblInv.strPartNumber  
  INNER JOIN tblInvCat ON tblInv.strCategory = tblInvCat.strCategory  
  WHERE (  
    tblOrderDocRFQ.dteJournalDate BETWEEN @SQStart  
     AND @SQEnd  
    )  
   AND (tblOrderDocRFQDT.bitApproved = @SQApproved)  
  ORDER BY tblOrderDocRFQDT.bitApproved  
   ,tblOrderDocRFQ.strOrdRFQDocID  
   ,tblOrderDocRFQDT.intLineNo  
 END  
  
 IF @IS_APPROVED = 'Y'  
 BEGIN  
  SELECT tblOrderDocRFQ.strOrdRFQDocID  
   ,tblOrderDocRFQ.dteJournalDate  
   ,tblOrderDocRFQ.dteRequired  
   ,tblOrderDocRFQ.strAddInfo  
   ,tblOrderDocRFQ.strReference  
   ,tblOrderDocRFQDT.intLineNo  
   ,tblOrderDocRFQDT.strPartNumber  
   ,tblOrderDocRFQDT.strPartDesc  
   ,tblOrderDocRFQDT.decQty  
   ,ISNULL(tblOrderDocRFQDT.strVendName, '''') AS strVendName  
   ,tblOrderDocRFQDT.bitApproved  
   ,ISNULL(tblOrderDocRFQDT.strCurrency, '''') AS strCurrency  
   ,tblOrderDocRFQDT.decLinePriceEa  
   ,tblOrderDocRFQDT.decLineDiscPerc  
   ,tblOrderDocRFQDT.decLineDiscAmt  
   ,tblOrderDocRFQDT.decLineTotAmt  
  FROM tblOrderDocRFQ  
  INNER JOIN tblOrderDocRFQDT ON tblOrderDocRFQ.strOrdRFQDocID = tblOrderDocRFQDT.strOrdRFQDocID  
  INNER JOIN dbo.fnTblInvLocationsAll() tblInv ON tblOrderDocRFQDT.strPartNumber = tblInv.strPartNumber  
  INNER JOIN tblInvCat ON tblInv.strCategory = tblInvCat.strCategory  
  WHERE 
    (tblOrderDocRFQDT.bitApproved = 1)  
  ORDER BY tblOrderDocRFQDT.bitApproved  
   ,tblOrderDocRFQ.strOrdRFQDocID  
   ,tblOrderDocRFQDT.intLineNo  
 END  
END  
GO

CREATE PROCEDURE GetMinManufacturingJobDocID @SQDocNumber AS NVARCHAR(max)
AS
BEGIN
	SELECT MAX(strJBDocID)
	FROM tblManJob
	WHERE strJBDocID < @SQDocNumber
		AND (
			intType <> 1
			AND intType <> 4
			AND intType <> 5
			)
END
GO

CREATE PROCEDURE GetMaxManufacturingJobDocID @SQDocNumber AS NVARCHAR(max)
AS
BEGIN
	SELECT MIN(strJBDocID)
	FROM tblManJob
	WHERE strJBDocID > @SQDocNumber
		AND (
			intType <> 1
			AND intType <> 4
			AND intType <> 5
			)
END
GO

CREATE PROCEDURE [NavigateBOMItemByCustomer]
@ManBOMID bigint,
@IsPrevious bit
AS
BEGIN
	IF(@IsPrevious = 0)
		SELECT MIN(lngManBOMID) FROM tblManBOM WHERE lngManBOMID > @ManBOMID AND bitInactive = 0 AND bitRevision = 0
	ELSE
		SELECT Max(lngManBOMID) FROM tblManBOM WHERE lngManBOMID < @ManBOMID AND bitInactive = 0 AND bitRevision = 0
END
GO

CREATE PROCEDURE [dbo].[uFillBOMData](@SQManBOMID BIGINT) AS
BEGIN
	SELECT tblManBOM.lngManBOMID
		,tblManBOM.strPartNumber
		,tblManBOM.strDesc
		,tblManBOM.strLocation
		,tblManBOM.dteRevDate
		,tblManBOM.decQty
		,tblManBOM.bitInactive
		,tblInv.strStockUnit AS strUnit
		,tblInv.decStandardCost
		,tblManBOM.dteRowUpdated
	FROM tblManBOM
	INNER JOIN tblInv ON tblManBOM.strPartNumber = tblInv.strPartNumber
	WHERE tblManBOM.lngManBOMID = @SQManBOMID

	SELECT tblManBOMOp.lngManBOMID
		,tblManBOMOp.strWCCode
		,tblManWorkCentre.strDesc
		,tblManBOMOp.strNotes
		,tblManBOMOp.lngID
	FROM tblManBOMOp
	INNER JOIN tblManWorkCentre ON tblManBOMOp.strWCCode = tblManWorkCentre.strWCCode
	WHERE tblManBOMOp.lngManBOMID = @SQManBOMID
	ORDER BY tblManBOMOp.lngID

	SELECT tblManBOMCompInv.lngManBOMID
		,tblManBOMCompInv.strWCCode
		,tblManBOMCompInv.intLineNo
		,tblManBOMCompInv.strPartNumber
		,tblManBOMCompInv.strDesc
		,tblManBOMCompInv.strLocation
		,tblManBOMCompInv.decQty
		,tblInv.strStockUnit AS strUnit
		,ISNULL((
				SELECT CASE 
						WHEN tblInvExt.decOnHand = 0
							THEN ROUND((tblInv.decLastPPUnit / tblInv.decBuyToStock), 2)
						ELSE ROUND((tblInvExt.decValue / tblInvExt.decOnHand), 2)
						END
				FROM tblInv
				INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
					AND tblInvExt.strLocName = tblManBOMCompInv.strLocation
				WHERE tblInv.strPartNumber = tblManBOMCompInv.strPartNumber
					AND tblInv.intType = 1
				), 0) AS decPPUnit
	FROM tblManBOMCompInv
	INNER JOIN tblInv ON tblManBOMCompInv.strPartNumber = tblInv.strPartNumber
	WHERE tblManBOMCompInv.lngManBOMID = @SQManBOMID
	ORDER BY tblManBOMCompInv.strWCCode
		,tblManBOMCompInv.intLineNo

	SELECT tblManBOMCompLab.lngManBOMID
		,tblManBOMCompLab.strWCCode
		,tblManBOMCompLab.intLineNo
		,tblManBOMCompLab.strLabCode
		,tblManLabour.strDesc
		,tblManBOMCompLab.decVariableHours
		,tblManBOMCompLab.decVariableRate
		,tblManBOMCompLab.decSetupHours
		,tblManBOMCompLab.decSetupRate
		,tblManBOMCompLab.decBreakdownHours
		,tblManBOMCompLab.decBreakdownRate
	FROM tblManBOMCompLab
	INNER JOIN tblManLabour ON tblManBOMCompLab.strLabCode = tblManLabour.strLabCode
	WHERE tblManBOMCompLab.lngManBOMID = @SQManBOMID
	ORDER BY tblManBOMCompLab.strLabCode

	SELECT tblManBOMCompMach.lngManBOMID
		,tblManBOMCompMach.strWCCode
		,tblManBOMCompMach.intLineNo
		,tblManBOMCompMach.strMachCode
		,tblManMachinery.strDesc
		,tblManBOMCompMach.decVariableHours
		,tblManBOMCompMach.decVariableRate
		,tblManBOMCompMach.decSetupHours
		,tblManBOMCompMach.decSetupRate
		,tblManBOMCompMach.decBreakdownHours
		,tblManBOMCompMach.decBreakdownRate
	FROM tblManBOMCompMach
	INNER JOIN tblManMachinery ON tblManBOMCompMach.strMachCode = tblManMachinery.strMachCode
	WHERE tblManBOMCompMach.lngManBOMID = @SQManBOMID
	ORDER BY tblManBOMCompMach.strMachCode

	SELECT tblManBOMCompOverhead.lngManBOMID
		,tblManBOMCompOverhead.strWCCode
		,tblManBOMCompOverhead.intLineNo
		,tblManBOMCompOverhead.intGLNumber
		,tblAccounts.strDesc AS strAccDesc
		,ISNULL(tblManBOMCompOverhead.intDept, 0) AS intDept
		,ISNULL(tblDepartments.strDesc, '') AS strDeptDesc
		,tblManBOMCompOverhead.uidCenterID
		,CASE 
			WHEN ISNULL(tblCenters.strLvl1, '') <> ''
				THEN tblCenters.strLvl1 + CASE 
						WHEN ISNULL(tblCenters.strLvl2, '') = ''
							THEN ''
						ELSE '\' + ISNULL(tblCenters.strLvl2, '') + CASE 
								WHEN ISNULL(tblCenters.strLvl3, '') = ''
									THEN ''
								ELSE '\' + ISNULL(tblCenters.strLvl3, '') + CASE 
										WHEN ISNULL(tblCenters.strLvl4, '') = ''
											THEN ''
										ELSE '\' + ISNULL(tblCenters.strLvl4, '') + CASE 
												WHEN ISNULL(tblCenters.strLvl5, '') = ''
													THEN ''
												ELSE '\' + ISNULL(tblCenters.strLvl4, '')
												END
										END
								END
						END
			ELSE ''
			END strCenter
		,tblManBOMCompOverhead.decAmount
	FROM tblManBOMCompOverhead
	INNER JOIN tblAccounts ON tblManBOMCompOverhead.intGLNumber = tblAccounts.intGLNumber
	LEFT JOIN tblDepartments ON tblManBOMCompOverhead.intDept = tblDepartments.intDept
	LEFT JOIN tblCenters ON tblManBOMCompOverhead.uidCenterID = tblCenters.uidCenterID
	WHERE tblManBOMCompOverhead.lngManBOMID = @SQManBOMID
	ORDER BY tblManBOMCompOverhead.intGLNumber
END
GO

CREATE PROCEDURE [dbo].[InsertInvVendPriceLists] 
(
	@uidPriceBasedID UNIQUEIDENTIFIER=NULL,
	@strVendName NVARCHAR(50) = '',
	@dteStartDate DATETIME = NULL,
	@dteFinishDate DATETIME = NULL,
	@bitInactive BIT = 0,
	@CreatedBy NVARCHAR(50) = '',
	@UpdatedBy NVARCHAR(50) = ''
)
AS
Begin
	INSERT INTO [dbo].[tblInvVendPriceListsByDate]
			   ([uidPriceBasedID]
			   ,[strVendName]
			   ,[dteStartDate]
			   ,[dteFinishDate]
			   ,[bitInactive]
			   ,[CreatedDate]
			   ,[CreatedBy]
			   ,[UpdatedDate]
			   ,[UpdatedBy]
			   ,[dteRowUpdated])
		 VALUES
			   (@uidPriceBasedID
			   ,@strVendName
			   ,@dteStartDate
			   ,@dteFinishDate
			   ,@bitInactive
			   ,GETDATE()
			   ,@CreatedBy
			   ,GETDATE()
			   ,@UpdatedBy
			   ,GETDATE())
END
GO

CREATE PROCEDURE [dbo].[UpdateInvVendPriceLists] 
(
	@uidPriceBasedID UNIQUEIDENTIFIER=NULL,
	@strVendName NVARCHAR(50) = '',
	@dteStartDate DATETIME = NULL,
	@dteFinishDate DATETIME = NULL,
	@bitInactive BIT = 0,
	@CreatedBy NVARCHAR(50) = '',
	@UpdatedBy NVARCHAR(50) = ''
)
AS
Begin
	UPDATE [dbo].[tblInvVendPriceListsByDate]
   SET [uidPriceBasedID] = @uidPriceBasedID
      ,[strVendName] = @strVendName
      ,[dteStartDate] = @dteStartDate
      ,[dteFinishDate] = @dteFinishDate
      ,[bitInactive] = @bitInactive
      --,[CreatedDate] = GETDATE()
      --,[CreatedBy] = CreatedBy
      ,[UpdatedDate] = GETDATE()
      ,[UpdatedBy] = UpdatedBy
      ,[dteRowUpdated] = GETDATE()
 WHERE strVendName = @strVendName and uidPriceBasedID = @uidPriceBasedID
END
GO

CREATE PROCEDURE [dbo].[InsertInvVendPromotionalPrice] 
	 @lngId AS bigint
	,@dtePromotionalStartDate AS DATETIME
	,@dtePromotionalEndDate AS DATETIME
	,@decPromotionalPrice AS money
AS
BEGIN

	--DELETE FROM tblInvVendPromotionalPrice WHERE lngId IN (@lngId);

	INSERT INTO [dbo].[tblInvVendPromotionalPrice]
           ([lngId]
           ,[dtePromotionalStartDate]
           ,[dtePromotionalEndDate]
           ,[decPromotionalPrice])
     VALUES
           (@lngId
           ,@dtePromotionalStartDate
           ,@dtePromotionalEndDate
           ,@decPromotionalPrice)
END
GO

CREATE PROCEDURE  [dbo].[DeleteInvVendPromotionalPrice] 
(
	@lngID bigint
)
 As
 BEGIN
	Delete from [tblInvVendPromotionalPrice]  Where [lngId] =  @lngID
 END
 GO

CREATE PROCEDURE  [dbo].[InsertUpdatetblInvVend] 
	(@strPartNumber nvarchar(50) = NULL ,
	@strVendName nvarchar(50) = NULL ,
	@lngID bigint = NULL ,
	@strItemCode nvarchar(50) = NULL ,
	@strItemDesc nvarchar(500) = NULL ,
	@intWarrantyDays int = NULL ,
	@decPrice money = NULL ,
	@bitPreferred bit = NULL ,
	@decDiscPerc money = NULL ,
	@decLocalPrice money = NULL ,
	@decLandedCostFactor money = NULL,
	@decOnHand  money = NULL,
	@decAvail money = NULL,
	@bitOtherCmp bit = null,
	@strLocName nvarchar(100) = null,
	@strUnit nvarchar(100) = null,
	@uidPriceBasedID UNIQUEIDENTIFIER = null,
	@bitPromotionalPricing bit = null
	)
As 
Begin

if(@bitPreferred = 1)
	Update tblInvVend set bitPreferred=0 where strPartNumber=@strPartNumber and strUnit=@strUnit

If (SELECT COUNT(strPartNumber) FROM tblInvVend WHERE strPartNumber = @strPartNumber AND strVendName = @strVendName AND uidPriceBasedID = @uidPriceBasedID AND strUnit = @strUnit)>  0
	Begin
		Update [tblInvVend] set 
		[strPartNumber] = @strPartNumber,
		[strVendName] = @strVendName,
		[strItemCode] = @strItemCode,
		[strItemDesc] = @strItemDesc,
		[intWarrantyDays] = @intWarrantyDays,
		[decPrice] = @decPrice,
		[bitPreferred] = @bitPreferred,
		[decDiscPerc] = @decDiscPerc,
		[decLocalPrice] = @decLocalPrice,
		[decLandedCostFactor] = @decLandedCostFactor,
		[decOnHand] = @decOnHand,
        [decAvail] = @decAvail,
        [bitOtherCmp] = @bitOtherCmp,
        [strLocName] = @strLocName,
        [strUnit] = @strUnit,
        [uidPriceBasedID] = @uidPriceBasedID,
        [bitPromotionalPricing] = @bitPromotionalPricing
		 Where [lngID] =  @lngID
		select @lngID
	End
Else
	Begin
	Insert Into [dbo].[tblInvVend]
           ([strPartNumber]
           ,[strVendName]
           ,[strItemCode]
           ,[strItemDesc]
           ,[intWarrantyDays]
           ,[decPrice]
           ,[bitPreferred]
           ,[decDiscPerc]
           ,[decLocalPrice]
           ,[decLandedCostFactor]
           ,[decOnHand]
           ,[decAvail]
           ,[bitOtherCmp]
           ,[strLocName]
           ,[strUnit]
           ,[uidPriceBasedID]
           ,[bitPromotionalPricing])
	OUTPUT INSERTED.lngID
	Values (
			@strPartNumber,
			@strVendName,
			@strItemCode,
			@strItemDesc,
			@intWarrantyDays,
			@decPrice,
			@bitPreferred,
			@decDiscPerc,
			@decLocalPrice,
			@decLandedCostFactor,
			@decOnHand,
			@decAvail,
			@bitOtherCmp,
			@strLocName,
			@strUnit,
			@uidPriceBasedID,
			@bitPromotionalPricing)
	select SCOPE_IDENTITY()
	End
End
GO

CREATE PROCEDURE GetCompanyInfo
AS
BEGIN
	SELECT strName
		,strStreet1
		,strStreet2
		,strCity
		,strProvince
		,strPostal
		,strCountry
		,strPhone1
		,strPhone2
		,strFax
		,strEmail
		,strCK
		,strVAT
		,dteLYStarted
		,dteLYEnded
		,dteYearStarts
		,dteYearEnds
		,dteEarliestTran
		,dtePeriodClose
		,strCountryCode
		,strCoSerial
		,strCloudUsername
		,strCloudPassword
		,strFacebook
		,strLinkedIn
		,dteRowUpdated
		,strYodleeUser
	FROM tblCompany
END
GO

CREATE PROCEDURE [dbo].[DeleteVendorItemPricingDetails] 
(
	@uidPriceBasedID UNIQUEIDENTIFIER = NULL
)
AS
BEGIN
	DELETE FROM tblInvVend WHERE uidPriceBasedID = @uidPriceBasedID
	DELETE FROM tblInvVendPriceListsByDate WHERE uidPriceBasedID = @uidPriceBasedID
END
GO

CREATE PROCEDURE [dbo].[ValidateItemPricingDetails] 
	@SQVendName as varchar(50)
AS
BEGIN
	SELECT tblInvVendPriceListsByDate.uidPriceBasedID AS PriceBasedID
	FROM tblInvVendPriceListsByDate 
	WHERE strVendName = @SQVendName and 
	tblInvVendPriceListsByDate.dteFinishDate=  (Select Max(dteFinishDate) as MaxDate 
												from tblInvVendPriceListsByDate 
												where strVendName=@SQVendName)
END
GO

CREATE PROCEDURE [dbo].[GetInvVendList] (
	@SQVendName AS VARCHAR(50)
	,@uidPriceBasedID UNIQUEIDENTIFIER
	)
AS
BEGIN
	SELECT tblInvVend.strPartNumber AS PartNumber
		,tblInv.strDesc AS [Description]
		,strItemCode AS ItemCode
		,strItemDesc AS ItemDescription
		,tblInvVend.strVendName AS VendorNumber
		,intWarrantyDays AS WarrantyDays
		,decPrice AS Price
		,decLocalPrice AS LocalPrice
		,decDiscPerc AS DiscountPercentage
		,decLandedCostFactor AS LandedCostFactor
		,bitPreferred AS Preferred
		,lngID
		,tblInvVend.strUnit AS Unit
		,bitPromotionalPricing AS IsPromotionalPrice
		,uidPriceBasedID AS PriceBasedID
	FROM tblInvVend
	INNER JOIN tblInv ON tblInvVend.strPartNumber = tblInv.strPartNumber
	WHERE strVendName = @SQVendName
		AND tblInvVend.uidPriceBasedID = @uidPriceBasedID
	ORDER BY tblInvVend.strPartNumber
END
GO


CREATE PROCEDURE [dbo].[GetInvVendPromotionalPriceList] 
(
	@lngId as BIGINT
)
AS
BEGIN
	SELECT tblInvVendPromotionalPrice.lngId AS lngID,
		   tblInvVendPromotionalPrice.dtePromotionalStartDate AS StartDate,
		   tblInvVendPromotionalPrice.dtePromotionalEndDate AS EndDate,
		   tblInvVendPromotionalPrice.decPromotionalPrice AS PromotionalPrice, 
		   tblInvVend.strUnit AS Unit,
		   tblInvVend.decPrice AS CurrentPrice,
		   tblInvVend.decLocalPrice AS LocalPrice,
		   tblInv.strPartNumber AS PartNumber,
		   tblInv.strDesc AS [Description]
	FROM tblInvVendPromotionalPrice inner join tblInvVend on tblInvVendPromotionalPrice.lngId = tblInvVend.lngID 
		 Inner Join tblInv on tblInv.strPartNumber = tblInvVend.strPartNumber
	WHERE tblInvVendPromotionalPrice.lngId=@lngId
END
GO

CREATE PROCEDURE [UpdateJobWorkCentre](
@SQJBDocID NVARCHAR(200)
,@SQUserName NVARCHAR(200)
,@SQWCCodeFrom NVARCHAR(100)
,@SQWCCodeTo NVARCHAR(100)
)
AS
BEGIN
	UPDATE tblManJob SET strWCCode = @SQWCCodeTo WHERE strJBDocID = @SQJBDocID
	INSERT INTO tblManJobTransfer (strJBDocID, dteSystemDate, strUserName, strWCCodeFrom, strWCCodeTo, intType) VALUES (@SQJBDocID, GETDATE(), @SQUserName, @SQWCCodeFrom, @SQWCCodeTo, (SELECT intType FROM tblManJob WHERE strJBDocID = @SQJBDocID))
END
GO

CREATE PROCEDURE [dbo].[GetCustomerStatements] @SQOpenSalesOrder AS BIT = 0
	,@SQUseCalAge AS BIT = 0
	,@SQShowDoc AS BIT = 0
	,@SQPeriod1 AS INT = 30
	,@SQPeriod2 AS INT = 60
	,@SQPeriod3 AS INT = 90
	,@SQAsAtCriteria AS DATE = NULL
	,@SQCustID AS NVARCHAR(max) = NULL
	,@SQAsAt AS DATE = NULL
	,@SQPaidIn AS DATE = NULL
	,@SQConsolidated AS INT = NULL
	,@SQintTransType AS INT = NULL
AS
BEGIN

	IF (@SQOpenSalesOrder = 0)
	BEGIN
		IF (@SQUseCalAge = 0)
		BEGIN
			IF (@SQShowDoc = 0)
			BEGIN
					;

				WITH data1
				AS (
					SELECT CASE 
							WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
								THEN MASTERTABLE.strInvDepNumber
							ELSE ISNULL(tblCustPay.strComment, '')
							END AS strInvDepNumber
						,CASE 
							WHEN MASTERTABLE.intTransType = @SQintTransType
								THEN ISNULL(MASTERTABLE.strJEDocID, '')
							ELSE CASE 
									WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
										THEN ISNULL(MASTERTABLE.strInvDocID, '')
									ELSE ISNULL(tblCustPay.strSource, '')
									END
							END AS strInvDocID
						,MASTERTABLE.dteDueDate
						,tblCustTransDT.dteJournalDate
						,MASTERTABLE.intTransType AS TransType
						,tblCustTransDT.intTransType
						,tblCustTransDT.lngCustTrID
						,CASE tblCustTransDT.bitIsForeign
							WHEN 0
								THEN tblCustTransDT.decAmount
							ELSE tblCustTransDT.decAmountF
							END AS Amount
						,MASTERTABLE.dteJournalDate AS MasterdteJournalDate
						,ISNULL((
								SELECT tblInvoiceDoc.strSalesName
								FROM tblInvoiceDoc
								WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID
								), '') AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < 0
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= 0
									AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod1
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod1
									AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod2
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod2
									AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod3
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod3
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID
						,MASTERTABLE.strCustName
						,tblCustomers.strCustDesc
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName
					LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
					WHERE (
							MASTERTABLE.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
							)
						AND (tblCustTransDT.bitReversed = 0)
						AND (tblCustTransDT.dteJournalDate <= @SQAsAt)
						AND (
							MASTERTABLE.strOrdDocID IS NULL
							OR (
								MASTERTABLE.strInvDocID IS NOT NULL
								AND MASTERTABLE.strOrdDocID IS NOT NULL
								)
							)
						AND (
							tblCustTransDT.lngID NOT IN (
								SELECT CT.lngID
								FROM tblCustTransDT CT
								WHERE CT.lngCustTrID IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE tblCustTrans.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @SQPaidIn
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										)
									AND CT.dteJournalDate <= @SQPaidIn
								)
							)
					
					UNION
					
					SELECT CASE 
							WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
								THEN MASTERTABLE.strInvDepNumber
							ELSE ISNULL(tblCustPay.strComment, '')
							END AS strInvDepNumber
						,CASE 
							WHEN MASTERTABLE.intTransType = @SQintTransType
								THEN ISNULL(MASTERTABLE.strJEDocID, '')
							ELSE CASE 
									WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
										THEN ISNULL(MASTERTABLE.strOrdDocID, '')
									ELSE ISNULL(tblCustPay.strSource, '')
									END
							END AS strInvDocID
						,MASTERTABLE.dteDueDate
						,tblCustTransDT.dteJournalDate
						,MASTERTABLE.intTransType AS TransType
						,tblCustTransDT.intTransType
						,tblCustTransDT.lngCustTrID
						,CASE tblCustTransDT.bitIsForeign
							WHEN 0
								THEN tblCustTransDT.decAmount
							ELSE tblCustTransDT.decAmountF
							END AS Amount
						,MASTERTABLE.dteJournalDate AS MasterdteJournalDate
						,ISNULL((
								SELECT tblOrderDoc.strSalesName
								FROM tblOrderDoc
								WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID
								), '') AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < 0
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= 0
									AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod1
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod1
									AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod2
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod2
									AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod3
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod3
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID
						,MASTERTABLE.strCustName
						,tblCustomers.strCustDesc
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName
					LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
					WHERE (
							MASTERTABLE.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
							)
						AND (tblCustTransDT.bitReversed = 0)
						AND (tblCustTransDT.dteJournalDate <= @SQAsAt)
						AND (MASTERTABLE.strOrdDocID IS NOT NULL)
						AND (MASTERTABLE.strInvDocID IS NULL)
						AND (tblCustTransDT.lngCustPayID IS NOT NULL)
						AND (
							tblCustTransDT.lngID NOT IN (
								SELECT CT.lngID
								FROM tblCustTransDT CT
								WHERE CT.lngCustTrID IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE tblCustTrans.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @SQPaidIn
											AND (
												tblCustTrans.strOrdDocID IS NULL
												OR (
													tblCustTrans.strInvDocID IS NOT NULL
													AND tblCustTrans.strOrdDocID IS NOT NULL
													)
												)
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										)
									AND CT.dteJournalDate <= @SQPaidIn
								)
							)
					)
					,data2
				AS (
					SELECT *
						,IsMatch = 1
					FROM data1
					WHERE lngCustTrID IN (
							SELECT lngCustTrID
							FROM data1
							GROUP BY lngCustTrID
							HAVING Count(lngCustTrID) >= 2
							)
					
					UNION ALL
					
					SELECT *
						,IsMatch = 2
					FROM data1
					WHERE lngCustTrID NOT IN (
							SELECT lngCustTrID
							FROM data1
							GROUP BY lngCustTrID
							HAVING Count(lngCustTrID) >= 2
							)
					)
				SELECT aa.*
					,(
						SELECT Min(bb.dteJournalDate)
						FROM data2 bb
						WHERE bb.lngCustTrID = aa.lngCustTrID
						) AS dateaa
				FROM data2 AS aa
				ORDER BY dateaa
					,CASE 
						WHEN IsMatch = 1
							THEN lngCustTrID
						END
					,strInvDocID
			END
			ELSE
			BEGIN
					;

				WITH data1
				AS (
					SELECT CASE 
							WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
								THEN MASTERTABLE.strInvDepNumber
							ELSE ISNULL(tblCustPay.strComment, '')
							END AS strInvDepNumber
						,CASE 
							WHEN MASTERTABLE.intTransType = @SQintTransType
								THEN ISNULL(MASTERTABLE.strJEDocID, '')
							ELSE CASE 
									WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
										THEN ISNULL(MASTERTABLE.strInvDocID, '')
									ELSE ISNULL(tblCustPay.strSource, '')
									END
							END AS strInvDocID
						,tblCustTransDT.dteJournalDate
						,MASTERTABLE.dteDueDate
						,MASTERTABLE.intTransType AS TransType
						,tblCustTransDT.intTransType
						,tblCustTransDT.lngCustTrID
						,CASE tblCustTransDT.bitIsForeign
							WHEN 0
								THEN tblCustTransDT.decAmount
							ELSE tblCustTransDT.decAmountF
							END AS Amount
						,MASTERTABLE.dteJournalDate AS MasterdteJournalDate
						,ISNULL((
								SELECT tblInvoiceDoc.strSalesName
								FROM tblInvoiceDoc
								WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID
								), '') AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < 0
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= 0
									AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod1
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod1
									AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod2
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod2
									AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod3
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod3
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID
						,tblCustomers.strCustName
						,tblCustomers.strCustDesc
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName
					LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
					WHERE (
							MASTERTABLE.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
							)
						AND (tblCustTransDT.bitReversed = 0)
						AND (tblCustTransDT.dteJournalDate <= @SQAsAt)
						AND (
							MASTERTABLE.strOrdDocID IS NULL
							OR (
								MASTERTABLE.strInvDocID IS NOT NULL
								AND MASTERTABLE.strOrdDocID IS NOT NULL
								)
							)
						AND (
							tblCustTransDT.lngID NOT IN (
								SELECT CT.lngID
								FROM tblCustTransDT CT
								WHERE CT.lngCustTrID IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE tblCustTrans.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @SQPaidIn
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										)
									AND CT.dteJournalDate <= @SQPaidIn
								)
							)
					
					UNION
					
					SELECT CASE 
							WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
								THEN MASTERTABLE.strInvDepNumber
							ELSE ISNULL(tblCustPay.strComment, '')
							END AS strInvDepNumber
						,CASE 
							WHEN MASTERTABLE.intTransType = @SQintTransType
								THEN ISNULL(MASTERTABLE.strJEDocID, '')
							ELSE CASE 
									WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
										THEN ISNULL(MASTERTABLE.strOrdDocID, '')
									ELSE ISNULL(tblCustPay.strSource, '')
									END
							END AS strInvDocID
						,tblCustTransDT.dteJournalDate
						,MASTERTABLE.dteDueDate
						,MASTERTABLE.intTransType AS TransType
						,tblCustTransDT.intTransType
						,tblCustTransDT.lngCustTrID
						,CASE tblCustTransDT.bitIsForeign
							WHEN 0
								THEN tblCustTransDT.decAmount
							ELSE tblCustTransDT.decAmountF
							END AS Amount
						,MASTERTABLE.dteJournalDate AS MasterdteJournalDate
						,ISNULL((
								SELECT tblOrderDoc.strSalesName
								FROM tblOrderDoc
								WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID
								), '') AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < 0
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= 0
									AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod1
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod1
									AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod2
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod2
									AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod3
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod3
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID
						,tblCustomers.strCustName
						,tblCustomers.strCustDesc
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName
					LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
					WHERE (
							MASTERTABLE.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
							)
						AND (tblCustTransDT.bitReversed = 0)
						AND (tblCustTransDT.dteJournalDate <= @SQAsAt)
						AND (MASTERTABLE.strOrdDocID IS NOT NULL)
						AND (MASTERTABLE.strInvDocID IS NULL)
						AND (tblCustTransDT.lngCustPayID IS NOT NULL)
						AND (
							tblCustTransDT.lngID NOT IN (
								SELECT CT.lngID
								FROM tblCustTransDT CT
								WHERE CT.lngCustTrID IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE tblCustTrans.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @SQPaidIn
											AND (
												tblCustTrans.strOrdDocID IS NULL
												OR (
													tblCustTrans.strInvDocID IS NOT NULL
													AND tblCustTrans.strOrdDocID IS NOT NULL
													)
												)
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										)
									AND CT.dteJournalDate <= @SQPaidIn
								)
							)
					)
					,data2
				AS (
					SELECT *
						,IsMatch = 1
					FROM data1
					WHERE lngCustTrID IN (
							SELECT lngCustTrID
							FROM data1
							GROUP BY lngCustTrID
							HAVING Count(lngCustTrID) >= 2
							)
					
					UNION ALL
					
					SELECT *
						,IsMatch = 2
					FROM data1
					WHERE lngCustTrID NOT IN (
							SELECT lngCustTrID
							FROM data1
							GROUP BY lngCustTrID
							HAVING Count(lngCustTrID) >= 2
							)
					)
				SELECT aa.*
					,(
						SELECT Min(bb.dteJournalDate)
						FROM data2 bb
						WHERE bb.lngCustTrID = aa.lngCustTrID
						) AS dateaa
				FROM data2 AS aa
				ORDER BY dateaa
					,CASE 
						WHEN IsMatch = 1
							THEN lngCustTrID
						END
					,strInvDocID
			END
		END
		ELSE
		BEGIN
			IF (@SQShowDoc = 0)
			BEGIN
					;

				WITH data1
				AS (
					SELECT CASE 
							WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
								THEN MASTERTABLE.strInvDepNumber
							ELSE ISNULL(tblCustPay.strComment, '')
							END AS strInvDepNumber
						,CASE 
							WHEN MASTERTABLE.intTransType = @SQintTransType
								THEN ISNULL(MASTERTABLE.strJEDocID, '')
							ELSE CASE 
									WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
										THEN ISNULL(MASTERTABLE.strInvDocID, '')
									ELSE ISNULL(tblCustPay.strSource, '')
									END
							END AS strInvDocID
						,MASTERTABLE.dteDueDate
						,tblCustTransDT.dteJournalDate
						,MASTERTABLE.intTransType AS TransType
						,tblCustTransDT.intTransType
						,tblCustTransDT.lngCustTrID
						,CASE tblCustTransDT.bitIsForeign
							WHEN 0
								THEN tblCustTransDT.decAmount
							ELSE tblCustTransDT.decAmountF
							END AS Amount
						,MASTERTABLE.dteJournalDate AS MasterdteJournalDate
						,ISNULL((
								SELECT tblInvoiceDoc.strSalesName
								FROM tblInvoiceDoc
								WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID
								), '') AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) >= 0
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = - 1
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = - 2
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = - 3
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) <= - 4
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID
						,MASTERTABLE.strCustName
						,tblCustomers.strCustDesc
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName
					LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
					WHERE (
							MASTERTABLE.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
							)
						AND (tblCustTransDT.bitReversed = 0)
						AND (tblCustTransDT.dteJournalDate <= @SQAsAt)
						AND (
							MASTERTABLE.strOrdDocID IS NULL
							OR (
								MASTERTABLE.strInvDocID IS NOT NULL
								AND MASTERTABLE.strOrdDocID IS NOT NULL
								)
							)
						AND (
							tblCustTransDT.lngID NOT IN (
								SELECT CT.lngID
								FROM tblCustTransDT CT
								WHERE CT.lngCustTrID IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE tblCustTrans.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @SQPaidIn
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										)
									AND CT.dteJournalDate <= @SQPaidIn
								)
							)
					
					UNION
					
					SELECT CASE 
							WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
								THEN MASTERTABLE.strInvDepNumber
							ELSE ISNULL(tblCustPay.strComment, '')
							END AS strInvDepNumber
						,CASE 
							WHEN MASTERTABLE.intTransType = @SQintTransType
								THEN ISNULL(MASTERTABLE.strJEDocID, '')
							ELSE CASE 
									WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
										THEN ISNULL(MASTERTABLE.strOrdDocID, '')
									ELSE ISNULL(tblCustPay.strSource, '')
									END
							END AS strInvDocID
						,MASTERTABLE.dteDueDate
						,tblCustTransDT.dteJournalDate
						,MASTERTABLE.intTransType AS TransType
						,tblCustTransDT.intTransType
						,tblCustTransDT.lngCustTrID
						,CASE tblCustTransDT.bitIsForeign
							WHEN 0
								THEN tblCustTransDT.decAmount
							ELSE tblCustTransDT.decAmountF
							END AS Amount
						,MASTERTABLE.dteJournalDate AS MasterdteJournalDate
						,ISNULL((
								SELECT tblOrderDoc.strSalesName
								FROM tblOrderDoc
								WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID
								), '') AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) >= 0
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = - 1
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = - 2
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = - 3
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) <= - 4
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID
						,MASTERTABLE.strCustName
						,tblCustomers.strCustDesc
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName
					LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
					WHERE (
							MASTERTABLE.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
							)
						AND (tblCustTransDT.bitReversed = 0)
						AND (tblCustTransDT.dteJournalDate <= @SQAsAt)
						AND (MASTERTABLE.strOrdDocID IS NOT NULL)
						AND (MASTERTABLE.strInvDocID IS NULL)
						AND (tblCustTransDT.lngCustPayID IS NOT NULL)
						AND (
							tblCustTransDT.lngID NOT IN (
								SELECT CT.lngID
								FROM tblCustTransDT CT
								WHERE CT.lngCustTrID IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE tblCustTrans.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @SQPaidIn
											AND (
												tblCustTrans.strOrdDocID IS NULL
												OR (
													tblCustTrans.strInvDocID IS NOT NULL
													AND tblCustTrans.strOrdDocID IS NOT NULL
													)
												)
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										)
									AND CT.dteJournalDate <= @SQPaidIn
								)
							)
					)
					,data2
				AS (
					SELECT *
						,IsMatch = 1
					FROM data1
					WHERE lngCustTrID IN (
							SELECT lngCustTrID
							FROM data1
							GROUP BY lngCustTrID
							HAVING Count(lngCustTrID) >= 2
							)
					
					UNION ALL
					
					SELECT *
						,IsMatch = 2
					FROM data1
					WHERE lngCustTrID NOT IN (
							SELECT lngCustTrID
							FROM data1
							GROUP BY lngCustTrID
							HAVING Count(lngCustTrID) >= 2
							)
					)
				SELECT aa.*
					,(
						SELECT Min(bb.dteJournalDate)
						FROM data2 bb
						WHERE bb.lngCustTrID = aa.lngCustTrID
						) AS dateaa
				FROM data2 AS aa
				ORDER BY dateaa
					,CASE 
						WHEN IsMatch = 1
							THEN lngCustTrID
						END
					,strInvDocID
			END
			ELSE
			BEGIN
					;

				WITH data1
				AS (
					SELECT CASE 
							WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
								THEN MASTERTABLE.strInvDepNumber
							ELSE ISNULL(tblCustPay.strComment, '')
							END AS strInvDepNumber
						,CASE 
							WHEN MASTERTABLE.intTransType = @SQintTransType
								THEN ISNULL(MASTERTABLE.strJEDocID, '')
							ELSE CASE 
									WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
										THEN ISNULL(MASTERTABLE.strInvDocID, '')
									ELSE ISNULL(tblCustPay.strSource, '')
									END
							END AS strInvDocID
						,tblCustTransDT.dteJournalDate
						,MASTERTABLE.dteDueDate
						,MASTERTABLE.intTransType AS TransType
						,tblCustTransDT.intTransType
						,tblCustTransDT.lngCustTrID
						,CASE tblCustTransDT.bitIsForeign
							WHEN 0
								THEN tblCustTransDT.decAmount
							ELSE tblCustTransDT.decAmountF
							END AS Amount
						,MASTERTABLE.dteJournalDate AS MasterdteJournalDate
						,ISNULL((
								SELECT tblInvoiceDoc.strSalesName
								FROM tblInvoiceDoc
								WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID
								), '') AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) >= 0
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 1
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 2
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 3
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) <= - 4
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID
						,MASTERTABLE.strCustName
						,tblCustomers.strCustDesc
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName
					LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
					WHERE (
							MASTERTABLE.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
							)
						AND (tblCustTransDT.bitReversed = 0)
						AND (tblCustTransDT.dteJournalDate <= @SQAsAt)
						AND (
							MASTERTABLE.strOrdDocID IS NULL
							OR (
								MASTERTABLE.strInvDocID IS NOT NULL
								AND MASTERTABLE.strOrdDocID IS NOT NULL
								)
							)
						AND (
							tblCustTransDT.lngID NOT IN (
								SELECT CT.lngID
								FROM tblCustTransDT CT
								WHERE CT.lngCustTrID IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE tblCustTrans.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @SQPaidIn
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										)
									AND CT.dteJournalDate <= @SQPaidIn
								)
							)
					
					UNION
					
					SELECT CASE 
							WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
								THEN MASTERTABLE.strInvDepNumber
							ELSE ISNULL(tblCustPay.strComment, '')
							END AS strInvDepNumber
						,CASE 
							WHEN MASTERTABLE.intTransType = @SQintTransType
								THEN ISNULL(MASTERTABLE.strJEDocID, '')
							ELSE CASE 
									WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
										THEN ISNULL(MASTERTABLE.strOrdDocID, '')
									ELSE ISNULL(tblCustPay.strSource, '')
									END
							END AS strInvDocID
						,tblCustTransDT.dteJournalDate
						,MASTERTABLE.dteDueDate
						,MASTERTABLE.intTransType AS TransType
						,tblCustTransDT.intTransType
						,tblCustTransDT.lngCustTrID
						,CASE tblCustTransDT.bitIsForeign
							WHEN 0
								THEN tblCustTransDT.decAmount
							ELSE tblCustTransDT.decAmountF
							END AS Amount
						,MASTERTABLE.dteJournalDate AS MasterdteJournalDate
						,ISNULL((
								SELECT tblOrderDoc.strSalesName
								FROM tblOrderDoc
								WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID
								), '') AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) >= 0
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 1
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 2
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 3
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) <= - 4
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID
						,MASTERTABLE.strCustName
						,tblCustomers.strCustDesc
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName
					LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
					WHERE (
							MASTERTABLE.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
							)
						AND (tblCustTransDT.bitReversed = 0)
						AND (tblCustTransDT.dteJournalDate <= @SQAsAt)
						AND (MASTERTABLE.strOrdDocID IS NOT NULL)
						AND (MASTERTABLE.strInvDocID IS NULL)
						AND (tblCustTransDT.lngCustPayID IS NOT NULL)
						AND (
							tblCustTransDT.lngID NOT IN (
								SELECT CT.lngID
								FROM tblCustTransDT CT
								WHERE CT.lngCustTrID IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE tblCustTrans.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @SQPaidIn
											AND (
												tblCustTrans.strOrdDocID IS NULL
												OR (
													tblCustTrans.strInvDocID IS NOT NULL
													AND tblCustTrans.strOrdDocID IS NOT NULL
													)
												)
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										)
									AND CT.dteJournalDate <= @SQPaidIn
								)
							)
					)
					,data2
				AS (
					SELECT *
						,IsMatch = 1
					FROM data1
					WHERE lngCustTrID IN (
							SELECT lngCustTrID
							FROM data1
							GROUP BY lngCustTrID
							HAVING Count(lngCustTrID) >= 2
							)
					
					UNION ALL
					
					SELECT *
						,IsMatch = 2
					FROM data1
					WHERE lngCustTrID NOT IN (
							SELECT lngCustTrID
							FROM data1
							GROUP BY lngCustTrID
							HAVING Count(lngCustTrID) >= 2
							)
					)
				SELECT aa.*
					,(
						SELECT Min(bb.dteJournalDate)
						FROM data2 bb
						WHERE bb.lngCustTrID = aa.lngCustTrID
						) AS dateaa
				FROM data2 AS aa
				ORDER BY dateaa
					,CASE 
						WHEN IsMatch = 1
							THEN lngCustTrID
						END
					,strInvDocID
			END
		END
	END
	ELSE
	BEGIN
		IF (@SQUseCalAge = 0)
		BEGIN
			IF (@SQShowDoc = 0)
			BEGIN
					;

				WITH data1
				AS (
					SELECT CASE 
							WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
								THEN MASTERTABLE.strInvDepNumber
							ELSE ISNULL(tblCustPay.strComment, '')
							END AS strInvDepNumber
						,CASE 
							WHEN MASTERTABLE.intTransType = @SQintTransType
								THEN ISNULL(MASTERTABLE.strJEDocID, '')
							ELSE CASE 
									WHEN ISNULL(MASTERTABLE.strInvDocID, '') = ''
										THEN ISNULL(tblCustPay.strSource, '')
									ELSE ISNULL(MASTERTABLE.strInvDocID, '')
									END
							END AS strInvDocID
						,MASTERTABLE.dteDueDate
						,tblCustTransDT.dteJournalDate
						,MASTERTABLE.intTransType AS TransType
						,tblCustTransDT.intTransType
						,tblCustTransDT.lngCustTrID
						,CASE tblCustTransDT.bitIsForeign
							WHEN 0
								THEN tblCustTransDT.decAmount
							ELSE tblCustTransDT.decAmountF
							END AS Amount
						,MASTERTABLE.dteJournalDate AS MasterdteJournalDate
						,ISNULL((
								SELECT tblInvoiceDoc.strSalesName
								FROM tblInvoiceDoc
								WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID
								), '') AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < 0
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= 0
									AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod1
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod1
									AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod2
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod2
									AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod3
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod3
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID
						,MASTERTABLE.strCustName
						,tblCustomers.strCustDesc
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName
					LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
					WHERE (
							MASTERTABLE.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
							)
						AND (tblCustTransDT.bitReversed = 0)
						AND (tblCustTransDT.dteJournalDate <= @SQAsAt)
						AND (
							MASTERTABLE.strOrdDocID IS NULL
							OR (
								MASTERTABLE.strInvDocID IS NOT NULL
								AND MASTERTABLE.strOrdDocID IS NOT NULL
								)
							)
						AND (
							tblCustTransDT.lngID NOT IN (
								SELECT CT.lngID
								FROM tblCustTransDT CT
								WHERE CT.lngCustTrID IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE tblCustTrans.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @SQPaidIn
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										)
									AND CT.dteJournalDate <= @SQPaidIn
								)
							)
					
					UNION
					
					SELECT CASE 
							WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
								THEN MASTERTABLE.strInvDepNumber
							ELSE ISNULL(tblCustPay.strComment, '')
							END AS strInvDepNumber
						,CASE 
							WHEN MASTERTABLE.intTransType = @SQintTransType
								THEN ISNULL(MASTERTABLE.strJEDocID, '')
							ELSE CASE 
									WHEN ISNULL(MASTERTABLE.strOrdDocID, '') = ''
										THEN ISNULL(tblCustPay.strSource, '')
									ELSE ISNULL(MASTERTABLE.strOrdDocID, '')
									END
							END AS strInvDocID
						,MASTERTABLE.dteDueDate
						,tblCustTransDT.dteJournalDate
						,MASTERTABLE.intTransType AS TransType
						,tblCustTransDT.intTransType
						,tblCustTransDT.lngCustTrID
						,CASE tblCustTransDT.bitIsForeign
							WHEN 0
								THEN tblCustTransDT.decAmount
							ELSE tblCustTransDT.decAmountF
							END AS Amount
						,MASTERTABLE.dteJournalDate AS MasterdteJournalDate
						,ISNULL((
								SELECT tblOrderDoc.strSalesName
								FROM tblOrderDoc
								WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID
								), '') AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < 0
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= 0
									AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod1
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod1
									AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod2
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod2
									AND DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) < @SQPeriod3
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteDueDate, @SQAsAt) >= @SQPeriod3
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID
						,MASTERTABLE.strCustName
						,tblCustomers.strCustDesc
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName
					LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
					WHERE (
							MASTERTABLE.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
							)
						AND (tblCustTransDT.bitReversed = 0)
						AND (tblCustTransDT.dteJournalDate <= @SQAsAt)
						AND (MASTERTABLE.strOrdDocID IS NOT NULL)
						AND (MASTERTABLE.strInvDocID IS NULL)
						AND (
							tblCustTransDT.lngID NOT IN (
								SELECT CT.lngID
								FROM tblCustTransDT CT
								WHERE CT.lngCustTrID IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE tblCustTrans.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @SQPaidIn
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										)
									AND CT.dteJournalDate <= @SQPaidIn
								)
							)
					
					UNION
					
					SELECT strInvDepNumber
						,strInvDocID
						,dteRequired
						,dteJournalDate
						,CONVERT(TINYINT, 1) AS TransType
						,CONVERT(TINYINT, 1) AS intTransType
						,0 AS lngCustTrID
						,CASE bitIsForeign
							WHEN 0
								THEN decTotal
							ELSE decTotalF
							END
						,dteJournalDate AS MasterdteJournalDate
						,strSalesName AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, dteRequired, @SQAsAtCriteria) < 0
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, dteRequired, @SQAsAtCriteria) >= 0
									AND DATEDIFF(DAY, dteRequired, @SQAsAtCriteria) < @SQPeriod1
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, dteRequired, @SQAsAtCriteria) >= @SQPeriod1
									AND DATEDIFF(DAY, dteRequired, @SQAsAtCriteria) < @SQPeriod2
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, dteRequired, @SQAsAtCriteria) >= @SQPeriod2
									AND DATEDIFF(DAY, dteRequired, @SQAsAtCriteria) < @SQPeriod3
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, dteRequired, @SQAsAtCriteria) >= @SQPeriod3
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,0 AS lngJourID
						,strCustName
						,strCustDesc
					FROM (
						SELECT tblOrderDoc.strReference AS strInvDepNumber
							,tblOrderDoc.strOrdDocID AS strInvDocID
							,tblOrderDoc.bitIsForeign
							,tblOrderDoc.dteJournalDate
							,tblOrderDoc.dteRequired
							,SUM(ROUND(((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decTotal
							,SUM(ROUND(((tblOrderDocDT.decLineTotExcF + tblOrderDocDT.decLineTaxAmtF) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decTotalF
							,ISNULL(tblOrderDoc.strSalesName, '') AS strSalesName
							,tblCustomers.strCustName
							,tblCustomers.strCustDesc
						FROM tblOrderDoc
						INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
						INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
						WHERE (
								intDocType = 1
								OR intDocType = 3
								)
							AND bitCleared = 0
							AND (
								tblOrderDoc.strCustName = @SQCustID
								OR tblOrderDoc.strCustName IN (
									SELECT strCustName
									FROM tblCustomers
									WHERE strParentCust = (
											SELECT strCustName
											FROM tblCustomers
											WHERE strCustName = @SQCustID
												AND intNAPrintMethod = 1
											)
									)
								)
							AND (tblOrderDoc.dteJournalDate <= @SQAsAt)
							AND tblOrderDoc.strOrdDocID NOT IN (
								SELECT strOrdDocID
								FROM tblCustTrans
								WHERE strOrdDocID IS NOT NULL
								)
						GROUP BY tblOrderDoc.strReference
							,tblOrderDoc.strOrdDocID
							,tblOrderDoc.bitIsForeign
							,tblOrderDoc.dteJournalDate
							,tblOrderDoc.dteRequired
							,tblOrderDoc.strSalesName
							,tblCustomers.strCustName
							,tblCustomers.strCustDesc
						) Z
					)
					,data2
				AS (
					SELECT *
						,IsMatch = 1
					FROM data1
					WHERE lngCustTrID IN (
							SELECT lngCustTrID
							FROM data1
							GROUP BY lngCustTrID
							HAVING Count(lngCustTrID) >= 2
							)
					
					UNION ALL
					
					SELECT *
						,IsMatch = 2
					FROM data1
					WHERE lngCustTrID NOT IN (
							SELECT lngCustTrID
							FROM data1
							GROUP BY lngCustTrID
							HAVING Count(lngCustTrID) >= 2
							)
					)
				SELECT aa.*
					,(
						SELECT Min(bb.dteJournalDate)
						FROM data2 bb
						WHERE bb.lngCustTrID = aa.lngCustTrID
						) AS dateaa
				FROM data2 AS aa
				ORDER BY dateaa
					,CASE 
						WHEN IsMatch = 1
							THEN lngCustTrID
						END
					,strInvDocID
			END
			ELSE
			BEGIN
					;

				WITH data1
				AS (
					SELECT CASE 
							WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
								THEN MASTERTABLE.strInvDepNumber
							ELSE ISNULL(tblCustPay.strComment, '')
							END AS strInvDepNumber
						,CASE 
							WHEN MASTERTABLE.intTransType = @SQintTransType
								THEN ISNULL(MASTERTABLE.strJEDocID, '')
							ELSE CASE 
									WHEN ISNULL(MASTERTABLE.strInvDocID, '') = ''
										THEN ISNULL(tblCustPay.strSource, '')
									ELSE ISNULL(MASTERTABLE.strInvDocID, '')
									END
							END AS strInvDocID
						,tblCustTransDT.dteJournalDate
						,MASTERTABLE.dteDueDate
						,MASTERTABLE.intTransType AS TransType
						,tblCustTransDT.intTransType
						,tblCustTransDT.lngCustTrID
						,CASE tblCustTransDT.bitIsForeign
							WHEN 0
								THEN tblCustTransDT.decAmount
							ELSE tblCustTransDT.decAmountF
							END AS Amount
						,MASTERTABLE.dteJournalDate AS MasterdteJournalDate
						,ISNULL((
								SELECT tblInvoiceDoc.strSalesName
								FROM tblInvoiceDoc
								WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID
								), '') AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < 0
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= 0
									AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod1
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod1
									AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod2
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod2
									AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod3
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod3
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID
						,tblCustomers.strCustName
						,tblCustomers.strCustDesc
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName
					LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
					WHERE (
							MASTERTABLE.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
							)
						AND (tblCustTransDT.bitReversed = 0)
						AND (tblCustTransDT.dteJournalDate <= @SQAsAt)
						AND (
							MASTERTABLE.strOrdDocID IS NULL
							OR (
								MASTERTABLE.strInvDocID IS NOT NULL
								AND MASTERTABLE.strOrdDocID IS NOT NULL
								)
							)
						AND (
							tblCustTransDT.lngID NOT IN (
								SELECT CT.lngID
								FROM tblCustTransDT CT
								WHERE CT.lngCustTrID IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE tblCustTrans.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @SQPaidIn
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										)
									AND CT.dteJournalDate <= @SQPaidIn
								)
							)
					
					UNION
					
					SELECT CASE 
							WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
								THEN MASTERTABLE.strInvDepNumber
							ELSE ISNULL(tblCustPay.strComment, '')
							END AS strInvDepNumber
						,CASE 
							WHEN MASTERTABLE.intTransType = @SQintTransType
								THEN ISNULL(MASTERTABLE.strJEDocID, '')
							ELSE CASE 
									WHEN ISNULL(MASTERTABLE.strOrdDocID, '') = ''
										THEN ISNULL(tblCustPay.strSource, '')
									ELSE ISNULL(MASTERTABLE.strOrdDocID, '')
									END
							END AS strInvDocID
						,tblCustTransDT.dteJournalDate
						,MASTERTABLE.dteDueDate
						,MASTERTABLE.intTransType AS TransType
						,tblCustTransDT.intTransType
						,tblCustTransDT.lngCustTrID
						,CASE tblCustTransDT.bitIsForeign
							WHEN 0
								THEN tblCustTransDT.decAmount
							ELSE tblCustTransDT.decAmountF
							END AS Amount
						,MASTERTABLE.dteJournalDate AS MasterdteJournalDate
						,ISNULL((
								SELECT tblOrderDoc.strSalesName
								FROM tblOrderDoc
								WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID
								), '') AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < 0
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= 0
									AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod1
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod1
									AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod2
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod2
									AND DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) < @SQPeriod3
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, MASTERTABLE.dteJournalDate, @SQAsAtCriteria) >= @SQPeriod3
									THEN CASE tblCustTransDT.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID
						,tblCustomers.strCustName
						,tblCustomers.strCustDesc
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName
					LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
					WHERE (
							MASTERTABLE.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
							)
						AND (tblCustTransDT.bitReversed = 0)
						AND (tblCustTransDT.dteJournalDate <= @SQAsAt)
						AND (MASTERTABLE.strOrdDocID IS NOT NULL)
						AND (MASTERTABLE.strInvDocID IS NULL)
						AND (
							tblCustTransDT.lngID NOT IN (
								SELECT CT.lngID
								FROM tblCustTransDT CT
								WHERE CT.lngCustTrID IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE tblCustTrans.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @SQPaidIn
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										)
									AND CT.dteJournalDate <= @SQPaidIn
								)
							)
					
					UNION
					
					SELECT strInvDepNumber
						,strInvDocID
						,dteJournalDate
						,dteRequired
						,CONVERT(TINYINT, 1) AS TransType
						,CONVERT(TINYINT, 1) AS intTransType
						,0 AS lngCustTrID
						,CASE bitIsForeign
							WHEN 0
								THEN decTotal
							ELSE decTotalF
							END
						,dteJournalDate
						,strSalesName AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, dteJournalDate, @SQAsAtCriteria) < 0
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, dteJournalDate, @SQAsAtCriteria) >= 0
									AND DATEDIFF(DAY, dteJournalDate, @SQAsAtCriteria) < @SQPeriod1
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, dteJournalDate, @SQAsAtCriteria) >= @SQPeriod1
									AND DATEDIFF(DAY, dteJournalDate, @SQAsAtCriteria) < @SQPeriod2
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, dteJournalDate, @SQAsAtCriteria) >= @SQPeriod2
									AND DATEDIFF(DAY, dteJournalDate, @SQAsAtCriteria) < @SQPeriod3
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, dteJournalDate, @SQAsAtCriteria) >= @SQPeriod3
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,0 AS lngJourID
						,strCustName
						,strCustDesc
					FROM (
						SELECT tblOrderDoc.strReference AS strInvDepNumber
							,tblOrderDoc.strOrdDocID AS strInvDocID
							,tblOrderDoc.bitIsForeign
							,tblOrderDoc.dteJournalDate
							,tblOrderDoc.dteRequired
							,SUM(ROUND(((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decTotal
							,SUM(ROUND(((tblOrderDocDT.decLineTotExcF + tblOrderDocDT.decLineTaxAmtF) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decTotalF
							,ISNULL(tblOrderDoc.strSalesName, '') AS strSalesName
							,tblCustomers.strCustName
							,tblCustomers.strCustDesc
						FROM tblOrderDoc
						INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
						INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
						WHERE (
								intDocType = 1
								OR intDocType = 3
								)
							AND bitCleared = 0
							AND (
								tblOrderDoc.strCustName = @SQCustID
								OR tblOrderDoc.strCustName IN (
									SELECT strCustName
									FROM tblCustomers
									WHERE strParentCust = (
											SELECT strCustName
											FROM tblCustomers
											WHERE strCustName = @SQCustID
												AND intNAPrintMethod = 1
											)
									)
								)
							AND (tblOrderDoc.dteJournalDate <= @SQAsAt)
							AND tblOrderDoc.strOrdDocID NOT IN (
								SELECT strOrdDocID
								FROM tblCustTrans
								WHERE strOrdDocID IS NOT NULL
								)
						GROUP BY tblOrderDoc.strReference
							,tblOrderDoc.strOrdDocID
							,tblOrderDoc.bitIsForeign
							,tblOrderDoc.dteJournalDate
							,tblOrderDoc.dteRequired
							,tblOrderDoc.strSalesName
							,tblCustomers.strCustName
							,tblCustomers.strCustDesc
						) Z
					)
					,data2
				AS (
					SELECT *
						,IsMatch = 1
					FROM data1
					WHERE lngCustTrID IN (
							SELECT lngCustTrID
							FROM data1
							GROUP BY lngCustTrID
							HAVING Count(lngCustTrID) >= 2
							)
					
					UNION ALL
					
					SELECT *
						,IsMatch = 2
					FROM data1
					WHERE lngCustTrID NOT IN (
							SELECT lngCustTrID
							FROM data1
							GROUP BY lngCustTrID
							HAVING Count(lngCustTrID) >= 2
							)
					)
				SELECT aa.*
					,(
						SELECT Min(bb.dteJournalDate)
						FROM data2 bb
						WHERE bb.lngCustTrID = aa.lngCustTrID
						) AS dateaa
				FROM data2 AS aa
				ORDER BY dateaa
					,CASE 
						WHEN IsMatch = 1
							THEN lngCustTrID
						END
					,strInvDocID
			END
		END
		ELSE
		BEGIN
			IF (@SQShowDoc = 0)
			BEGIN
					;

				WITH data1
				AS (
					SELECT CASE 
							WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
								THEN MASTERTABLE.strInvDepNumber
							ELSE ISNULL(tblCustPay.strComment, '')
							END AS strInvDepNumber
						,CASE 
							WHEN MASTERTABLE.intTransType = @SQintTransType
								THEN ISNULL(MASTERTABLE.strJEDocID, '')
							ELSE CASE 
									WHEN ISNULL(MASTERTABLE.strInvDocID, '') = ''
										THEN ISNULL(tblCustPay.strSource, '')
									ELSE ISNULL(MASTERTABLE.strInvDocID, '')
									END
							END AS strInvDocID
						,MASTERTABLE.dteDueDate
						,tblCustTransDT.dteJournalDate
						,MASTERTABLE.intTransType AS TransType
						,tblCustTransDT.intTransType
						,tblCustTransDT.lngCustTrID
						,CASE tblCustTransDT.bitIsForeign
							WHEN 0
								THEN tblCustTransDT.decAmount
							ELSE tblCustTransDT.decAmountF
							END AS Amount
						,MASTERTABLE.dteJournalDate AS MasterdteJournalDate
						,ISNULL((
								SELECT tblInvoiceDoc.strSalesName
								FROM tblInvoiceDoc
								WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID
								), '') AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) >= 0
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = - 1
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = - 2
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = - 3
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) <= - 4
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID
						,MASTERTABLE.strCustName
						,tblCustomers.strCustDesc
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName
					LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
					WHERE (
							MASTERTABLE.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
							)
						AND (tblCustTransDT.bitReversed = 0)
						AND (tblCustTransDT.dteJournalDate <= @SQAsAt)
						AND (
							MASTERTABLE.strOrdDocID IS NULL
							OR (
								MASTERTABLE.strInvDocID IS NOT NULL
								AND MASTERTABLE.strOrdDocID IS NOT NULL
								)
							)
						AND (
							tblCustTransDT.lngID NOT IN (
								SELECT CT.lngID
								FROM tblCustTransDT CT
								WHERE CT.lngCustTrID IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE tblCustTrans.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @SQPaidIn
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										)
									AND CT.dteJournalDate <= @SQPaidIn
								)
							)
					
					UNION
					
					SELECT CASE 
							WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
								THEN MASTERTABLE.strInvDepNumber
							ELSE ISNULL(tblCustPay.strComment, '')
							END AS strInvDepNumber
						,CASE 
							WHEN MASTERTABLE.intTransType = @SQintTransType
								THEN ISNULL(MASTERTABLE.strJEDocID, '')
							ELSE CASE 
									WHEN ISNULL(MASTERTABLE.strOrdDocID, '') = ''
										THEN ISNULL(tblCustPay.strSource, '')
									ELSE ISNULL(MASTERTABLE.strOrdDocID, '')
									END
							END AS strInvDocID
						,MASTERTABLE.dteDueDate
						,tblCustTransDT.dteJournalDate
						,MASTERTABLE.intTransType AS TransType
						,tblCustTransDT.intTransType
						,tblCustTransDT.lngCustTrID
						,CASE tblCustTransDT.bitIsForeign
							WHEN 0
								THEN tblCustTransDT.decAmount
							ELSE tblCustTransDT.decAmountF
							END AS Amount
						,MASTERTABLE.dteJournalDate AS MasterdteJournalDate
						,ISNULL((
								SELECT tblOrderDoc.strSalesName
								FROM tblOrderDoc
								WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID
								), '') AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) >= 0
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = - 1
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = - 2
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) = - 3
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteDueDate) <= - 4
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID
						,MASTERTABLE.strCustName
						,tblCustomers.strCustDesc
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName
					LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
					WHERE (
							MASTERTABLE.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
							)
						AND (tblCustTransDT.bitReversed = 0)
						AND (tblCustTransDT.dteJournalDate <= @SQAsAt)
						AND (MASTERTABLE.strOrdDocID IS NOT NULL)
						AND (MASTERTABLE.strInvDocID IS NULL)
						AND (
							tblCustTransDT.lngID NOT IN (
								SELECT CT.lngID
								FROM tblCustTransDT CT
								WHERE CT.lngCustTrID IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE tblCustTrans.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @SQPaidIn
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										)
									AND CT.dteJournalDate <= @SQPaidIn
								)
							)
					
					UNION
					
					SELECT strInvDepNumber
						,strInvDocID
						,dteJournalDate
						,dteRequired
						,CONVERT(TINYINT, 1) AS TransType
						,CONVERT(TINYINT, 1) AS intTransType
						,0 AS lngCustTrID
						,CASE bitIsForeign
							WHEN 0
								THEN decTotal
							ELSE decTotalF
							END
						,dteJournalDate AS MasterdteJournalDate
						,strSalesName AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, @SQAsAt, dteRequired) >= 0
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, @SQAsAt, dteRequired) = - 1
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, @SQAsAt, dteRequired) = - 2
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, @SQAsAt, dteRequired) = - 3
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, @SQAsAt, dteRequired) <= - 4
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,0 AS lngJourID
						,strCustName
						,strCustDesc
					FROM (
						SELECT tblOrderDoc.strReference AS strInvDepNumber
							,tblOrderDoc.strOrdDocID AS strInvDocID
							,tblOrderDoc.bitIsForeign
							,tblOrderDoc.dteJournalDate
							,tblOrderDoc.dteRequired
							,SUM(ROUND(((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decTotal
							,SUM(ROUND(((tblOrderDocDT.decLineTotExcF + tblOrderDocDT.decLineTaxAmtF) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decTotalF
							,ISNULL(tblOrderDoc.strSalesName, '') AS strSalesName
							,tblCustomers.strCustName
							,tblCustomers.strCustDesc
						FROM tblOrderDoc
						INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
						INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
						WHERE (
								intDocType = 1
								OR intDocType = 3
								)
							AND bitCleared = 0
							AND (
								tblOrderDoc.strCustName = @SQCustID
								OR tblOrderDoc.strCustName IN (
									SELECT strCustName
									FROM tblCustomers
									WHERE strParentCust = (
											SELECT strCustName
											FROM tblCustomers
											WHERE strCustName = @SQCustID
												AND intNAPrintMethod = 1
											)
									)
								)
							AND (tblOrderDoc.dteJournalDate <= @SQAsAt)
							AND tblOrderDoc.strOrdDocID NOT IN (
								SELECT strOrdDocID
								FROM tblCustTrans
								WHERE strOrdDocID IS NOT NULL
								)
						GROUP BY tblOrderDoc.strReference
							,tblOrderDoc.strOrdDocID
							,tblOrderDoc.bitIsForeign
							,tblOrderDoc.dteJournalDate
							,tblOrderDoc.dteRequired
							,tblOrderDoc.strSalesName
							,tblCustomers.strCustName
							,tblCustomers.strCustDesc
						) Z
					)
					,data2
				AS (
					SELECT *
						,IsMatch = 1
					FROM data1
					WHERE lngCustTrID IN (
							SELECT lngCustTrID
							FROM data1
							GROUP BY lngCustTrID
							HAVING Count(lngCustTrID) >= 2
							)
					
					UNION ALL
					
					SELECT *
						,IsMatch = 2
					FROM data1
					WHERE lngCustTrID NOT IN (
							SELECT lngCustTrID
							FROM data1
							GROUP BY lngCustTrID
							HAVING Count(lngCustTrID) >= 2
							)
					)
				SELECT aa.*
					,(
						SELECT Min(bb.dteJournalDate)
						FROM data2 bb
						WHERE bb.lngCustTrID = aa.lngCustTrID
						) AS dateaa
				FROM data2 AS aa
				ORDER BY dateaa
					,CASE 
						WHEN IsMatch = 1
							THEN lngCustTrID
						END
					,strInvDocID
			END
			ELSE
			BEGIN
					;

				WITH data1
				AS (
					SELECT CASE 
							WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
								THEN MASTERTABLE.strInvDepNumber
							ELSE ISNULL(tblCustPay.strComment, '')
							END AS strInvDepNumber
						,CASE 
							WHEN MASTERTABLE.intTransType = @SQintTransType
								THEN ISNULL(MASTERTABLE.strJEDocID, '')
							ELSE CASE 
									WHEN ISNULL(MASTERTABLE.strInvDocID, '') = ''
										THEN ISNULL(tblCustPay.strSource, '')
									ELSE ISNULL(MASTERTABLE.strInvDocID, '')
									END
							END AS strInvDocID
						,tblCustTransDT.dteJournalDate
						,MASTERTABLE.dteDueDate
						,MASTERTABLE.intTransType AS TransType
						,tblCustTransDT.intTransType
						,tblCustTransDT.lngCustTrID
						,CASE tblCustTransDT.bitIsForeign
							WHEN 0
								THEN tblCustTransDT.decAmount
							ELSE tblCustTransDT.decAmountF
							END AS Amount
						,MASTERTABLE.dteJournalDate AS MasterdteJournalDate
						,ISNULL((
								SELECT tblInvoiceDoc.strSalesName
								FROM tblInvoiceDoc
								WHERE tblInvoiceDoc.strInvDocID = MASTERTABLE.strInvDocID
								), '') AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) >= 0
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 1
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 2
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 3
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) <= - 4
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID
						,MASTERTABLE.strCustName
						,tblCustomers.strCustDesc
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName
					LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
					WHERE (
							MASTERTABLE.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
							)
						AND (tblCustTransDT.bitReversed = 0)
						AND (tblCustTransDT.dteJournalDate <= @SQAsAt)
						AND (
							MASTERTABLE.strOrdDocID IS NULL
							OR (
								MASTERTABLE.strInvDocID IS NOT NULL
								AND MASTERTABLE.strOrdDocID IS NOT NULL
								)
							)
						AND (
							tblCustTransDT.lngID NOT IN (
								SELECT CT.lngID
								FROM tblCustTransDT CT
								WHERE CT.lngCustTrID IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE tblCustTrans.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @SQPaidIn
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										)
									AND CT.dteJournalDate <= @SQPaidIn
								)
							)
					
					UNION
					
					SELECT CASE 
							WHEN ISNULL(tblCustTransDT.lngCustPayID, 0) = 0
								THEN MASTERTABLE.strInvDepNumber
							ELSE ISNULL(tblCustPay.strComment, '')
							END AS strInvDepNumber
						,CASE 
							WHEN MASTERTABLE.intTransType = @SQintTransType
								THEN ISNULL(MASTERTABLE.strJEDocID, '')
							ELSE CASE 
									WHEN ISNULL(MASTERTABLE.strOrdDocID, '') = ''
										THEN ISNULL(tblCustPay.strSource, '')
									ELSE ISNULL(MASTERTABLE.strOrdDocID, '')
									END
							END AS strInvDocID
						,tblCustTransDT.dteJournalDate
						,MASTERTABLE.dteDueDate
						,MASTERTABLE.intTransType AS TransType
						,tblCustTransDT.intTransType
						,tblCustTransDT.lngCustTrID
						,CASE tblCustTransDT.bitIsForeign
							WHEN 0
								THEN tblCustTransDT.decAmount
							ELSE tblCustTransDT.decAmountF
							END AS Amount
						,MASTERTABLE.dteJournalDate AS MasterdteJournalDate
						,ISNULL((
								SELECT tblOrderDoc.strSalesName
								FROM tblOrderDoc
								WHERE tblOrderDoc.strOrdDocID = MASTERTABLE.strOrdDocID
								), '') AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) >= 0
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 1
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 2
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) = - 3
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(MONTH, @SQAsAt, MASTERTABLE.dteJournalDate) <= - 4
									THEN CASE MASTERTABLE.bitIsForeign
											WHEN 0
												THEN tblCustTransDT.decAmount
											ELSE tblCustTransDT.decAmountF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,ISNULL(tblCustPay.lngJourID, 0) AS lngJourID
						,MASTERTABLE.strCustName
						,tblCustomers.strCustDesc
					FROM tblCustTrans AS MASTERTABLE
					INNER JOIN tblCustTransDT ON MASTERTABLE.lngCustTrID = tblCustTransDT.lngCustTrID
					INNER JOIN tblCustomers ON MASTERTABLE.strCustName = tblCustomers.strCustName
					LEFT JOIN tblCustPay ON tblCustTransDT.lngCustPayID = tblCustPay.lngCustPayID
					WHERE (
							MASTERTABLE.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
							)
						AND (tblCustTransDT.bitReversed = 0)
						AND (tblCustTransDT.dteJournalDate <= @SQAsAt)
						AND (MASTERTABLE.strOrdDocID IS NOT NULL)
						AND (MASTERTABLE.strInvDocID IS NULL)
						AND (
							tblCustTransDT.lngID NOT IN (
								SELECT CT.lngID
								FROM tblCustTransDT CT
								WHERE CT.lngCustTrID IN (
										SELECT tblCustTransDT.lngCustTrID
										FROM tblCustTrans
										INNER JOIN tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID
										WHERE 	(
											tblCustTrans.strCustName IN (SELECT A.strCustName FROM tblCustomers A
											WHERE A.strParentCust = (
											SELECT B.strCustName
											FROM tblCustomers B
											WHERE B.strCustName = @SQCustID
											AND B.intNAPrintMethod = @SQConsolidated
											)
											union ALL
											Select @SQCustID AS strCustName)
											)
											AND tblCustTransDT.bitReversed = 0
											AND tblCustTransDT.dteJournalDate <= @SQPaidIn
										GROUP BY tblCustTransDT.lngCustTrID
										HAVING SUM(tblCustTransDT.decAmount) = 0
											AND SUM(tblCustTransDT.decAmountF) = 0
										)
									AND CT.dteJournalDate <= @SQPaidIn
								)
							)
					
					UNION
					
					SELECT strInvDepNumber
						,strInvDocID
						,dteJournalDate
						,dteRequired
						,CONVERT(TINYINT, 1) AS TransType
						,CONVERT(TINYINT, 1) AS intTransType
						,0 AS lngCustTrID
						,CASE bitIsForeign
							WHEN 0
								THEN decTotal
							ELSE decTotalF
							END
						,dteJournalDate AS MasterdteJournalDate
						,strSalesName AS Expr2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, @SQAsAt, dteJournalDate) >= 0
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decCurrent
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, @SQAsAt, dteJournalDate) = - 1
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decPeriod2
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, @SQAsAt, dteJournalDate) = - 2
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decPeriod3
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, @SQAsAt, dteJournalDate) = - 3
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decPeriod4
						,ISNULL(CASE 
								WHEN DATEDIFF(DAY, @SQAsAt, dteJournalDate) <= - 4
									THEN CASE bitIsForeign
											WHEN 0
												THEN decTotal
											ELSE decTotalF
											END
								ELSE 0
								END, 0) AS decPeriod5
						,0 AS lngJourID
						,strCustName
						,strCustDesc
					FROM (
						SELECT tblOrderDoc.strReference AS strInvDepNumber
							,tblOrderDoc.strOrdDocID AS strInvDocID
							,tblOrderDoc.bitIsForeign
							,tblOrderDoc.dteJournalDate
							,tblOrderDoc.dteRequired
							,SUM(ROUND(((tblOrderDocDT.decLineTotExc + tblOrderDocDT.decLineTaxAmt) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decTotal
							,SUM(ROUND(((tblOrderDocDT.decLineTotExcF + tblOrderDocDT.decLineTaxAmtF) / tblOrderDocDT.decQty) * tblOrderDocDT.decQtyRemaining, 2)) AS decTotalF
							,ISNULL(tblOrderDoc.strSalesName, '') AS strSalesName
							,tblCustomers.strCustName
							,tblCustomers.strCustDesc
						FROM tblOrderDoc
						INNER JOIN tblOrderDocDT ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
						INNER JOIN tblCustomers ON tblOrderDoc.strCustName = tblCustomers.strCustName
						WHERE (
								intDocType = 1
								OR intDocType = 3
								)
							AND bitCleared = 0
							AND (
								tblOrderDoc.strCustName = @SQCustID
								OR tblOrderDoc.strCustName IN (
									SELECT strCustName
									FROM tblCustomers
									WHERE strParentCust = (
											SELECT strCustName
											FROM tblCustomers
											WHERE strCustName = @SQCustID
												AND intNAPrintMethod = 1
											)
									)
								)
							AND (tblOrderDoc.dteJournalDate <= @SQAsAt)
							AND tblOrderDoc.strOrdDocID NOT IN (
								SELECT strOrdDocID
								FROM tblCustTrans
								WHERE strOrdDocID IS NOT NULL
								)
						GROUP BY tblOrderDoc.strReference
							,tblOrderDoc.strOrdDocID
							,tblOrderDoc.bitIsForeign
							,tblOrderDoc.dteJournalDate
							,tblOrderDoc.dteRequired
							,tblOrderDoc.strSalesName
							,tblCustomers.strCustName
							,tblCustomers.strCustDesc
						) Z
					)
					,data2
				AS (
					SELECT *
						,IsMatch = 1
					FROM data1
					WHERE lngCustTrID IN (
							SELECT lngCustTrID
							FROM data1
							GROUP BY lngCustTrID
							HAVING Count(lngCustTrID) >= 2
							)
					
					UNION ALL
					
					SELECT *
						,IsMatch = 2
					FROM data1
					WHERE lngCustTrID NOT IN (
							SELECT lngCustTrID
							FROM data1
							GROUP BY lngCustTrID
							HAVING Count(lngCustTrID) >= 2
							)
					)
				SELECT aa.*
					,(
						SELECT Min(bb.dteJournalDate)
						FROM data2 bb
						WHERE bb.lngCustTrID = aa.lngCustTrID
						) AS dateaa
				FROM data2 AS aa
				ORDER BY dateaa
					,CASE 
						WHEN IsMatch = 1
							THEN lngCustTrID
						END
					,strInvDocID
			END
		END
	END
END
GO

CREATE PROCEDURE [dbo].[GetPurchaseBulkDocData](
	@Start AS NVARCHAR(50)
	,@End AS NVARCHAR(50)
	,@IsShowQuotes AS BIT
	,@Sort AS int
	)
AS
BEGIN
	IF (@IsShowQuotes = 0)
	BEGIN
		IF(@Sort = 0)
			SELECT dteJournalDate, strOrdRFQDocID, strReference, bitCleared FROM tblOrderDocRFQ WHERE (bitCleared = 0) AND (dteJournalDate BETWEEN @Start AND @End) ORDER BY dteJournalDate DESC
		IF(@Sort = 1)
			SELECT dteJournalDate, strOrdRFQDocID, strReference, bitCleared FROM tblOrderDocRFQ WHERE (bitCleared = 0) AND (dteJournalDate BETWEEN @Start AND @End) ORDER BY strOrdRFQDocID DESC
		IF(@Sort = 2)
			SELECT dteJournalDate, strOrdRFQDocID, strReference, bitCleared FROM tblOrderDocRFQ WHERE (bitCleared = 0) AND (dteJournalDate BETWEEN @Start AND @End) ORDER BY strReference ASC
	END
	ELSE
	BEGIN
		IF(@Sort = 0)
			SELECT dteJournalDate, strOrdRFQDocID, strReference, bitCleared FROM tblOrderDocRFQ WHERE (dteJournalDate BETWEEN @Start AND @End) ORDER BY dteJournalDate DESC
		IF(@Sort = 1)
			SELECT dteJournalDate, strOrdRFQDocID, strReference, bitCleared FROM tblOrderDocRFQ WHERE (dteJournalDate BETWEEN @Start AND @End) ORDER BY strOrdRFQDocID DESC
		IF(@Sort = 2)
			SELECT dteJournalDate, strOrdRFQDocID, strReference, bitCleared FROM tblOrderDocRFQ WHERE (dteJournalDate BETWEEN @Start AND @End) ORDER BY strReference ASC
	END
END
GO

CREATE PROCEDURE [dbo].[GetItemPricingReportDataNew]
(
@uidPriceBasedID nvarchar(max),
@SQPriceList nvarchar(max) = '',
@PL_InvSortDescription nvarchar(max),
@IsActive bit,
@IsInactive bit,
@IsAll bit,
@IsCategory bit,
@IsItemAll bit,
@IsItems bit,
@IsServices bit,
@SQCategory nvarchar(max)
)
AS
BEGIN

If(@IsCategory = 1)
BEGIN

       if(@PL_InvSortDescription =0)
	   BEGIN
	   select
	   tblInv.strPartNumber as PartNumber,
       tblInv.strDesc as [Description],
       (tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As Pricelist,
       tblInvPrice.decSelling as Price,
       tblInv.strSellUnit as Unit,
       (tblInv.decLastPPUnit) as LastPP,
        tblInv.strSellStockUnit as Margin,
       (tblInvPrice.decSelling / tblInv.decSellFromStock) as SellUnit,
        tblInv.strCategory AS PriceStockUnit 
		FROM tblInv 
		INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber 
		INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblInvPrice.uidPriceBasedID AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist 
		WHERE (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@SQCategory, ','))) AND tblPriceListsByDate.strPricelist = @SQPriceList AND tblPriceListsByDate.uidPriceBasedID = @uidPriceBasedID 
		AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
		ORDER BY Pricelist,tblInv.strPartNumber
		END
		ELSE
		BEGIN
		 select
	   tblInv.strPartNumber as PartNumber,
       tblInv.strDesc as [Description],
       (tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As Pricelist,
       tblInvPrice.decSelling as Price,
       tblInv.strSellUnit as Unit,
       (tblInv.decLastPPUnit) as LastPP,
        tblInv.strSellStockUnit as Margin,
       (tblInvPrice.decSelling / tblInv.decSellFromStock) as SellUnit,
        tblInv.strCategory AS PriceStockUnit 
		FROM tblInv 
		   INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber 
		   INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblInvPrice.uidPriceBasedID AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist 
		   WHERE (tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@SQCategory, ','))) AND tblPriceListsByDate.strPricelist = @SQPriceList AND tblPriceListsByDate.uidPriceBasedID = @uidPriceBasedID 
		   AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
		   ORDER BY Pricelist,tblInv.strDesc, tblInv.strPartNumber
		END
END

ELSE IF(@IsItems =1)
BEGIN
   if(@PL_InvSortDescription =0)
	   BEGIN

	   SELECT 
		tblInv.strPartNumber as PartNumber,
		tblInv.strDesc as [Description],
		(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As Pricelist,
		tblInvPrice.decSelling as Price,
		tblInv.strSellUnit as Unit,
		(tblInv.decLastPPUnit) as LastPP,
		tblInv.strSellStockUnit as Margin,
		(tblInvPrice.decSelling / tblInv.decSellFromStock) as SellUnit,
		'' AS PriceStockUnit
	   FROM tblInv INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber 
	   INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblInvPrice.uidPriceBasedID AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist 
	   WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQCategory, ','))) AND tblPriceListsByDate.strPricelist = @SQPriceList AND tblPriceListsByDate.uidPriceBasedID = @uidPriceBasedID 
		AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
		ORDER BY Pricelist,tblInv.strPartNumber
		END
		ELSE
		BEGIN
		
	   SELECT 
		tblInv.strPartNumber as PartNumber,
		tblInv.strDesc as [Description],
		(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As Pricelist,
		tblInvPrice.decSelling as Price,
		tblInv.strSellUnit as Unit,
		(tblInv.decLastPPUnit) as LastPP,
		tblInv.strSellStockUnit as Margin,
		(tblInvPrice.decSelling / tblInv.decSellFromStock) as SellUnit,
		'' AS PriceStockUnit
	   FROM tblInv INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber 
	   INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblInvPrice.uidPriceBasedID AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist 
	   WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQCategory, ','))) AND tblPriceListsByDate.strPricelist = @SQPriceList AND tblPriceListsByDate.uidPriceBasedID = @uidPriceBasedID 
		   AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
		   ORDER BY Pricelist,tblInv.strDesc, tblInv.strPartNumber
		END
END

ELSE IF(@IsServices =1)
BEGIN
    if(@PL_InvSortDescription =0)
	   BEGIN

	   SELECT 
		tblInv.strPartNumber as PartNumber,
		tblInv.strDesc as [Description],
		(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As Pricelist,
		tblInvPrice.decSelling as Price,
		tblInv.strSellUnit as Unit,
		(tblInv.decLastPPUnit) as LastPP,
		tblInv.strSellStockUnit as Margin,
		(tblInvPrice.decSelling / tblInv.decSellFromStock) as SellUnit,
		'' AS PriceStockUnit
		FROM tblInv INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblInvPrice.uidPriceBasedID AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist 
		WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQCategory, ','))) AND tblPriceListsByDate.strPricelist = @SQPriceList AND tblPriceListsByDate.uidPriceBasedID = @uidPriceBasedID

		AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
		ORDER BY Pricelist,tblInv.strPartNumber
		END
		ELSE
		BEGIN
		    SELECT 
		tblInv.strPartNumber as PartNumber,
		tblInv.strDesc as [Description],
		(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As Pricelist,
		tblInvPrice.decSelling as Price,
		tblInv.strSellUnit as Unit,
		(tblInv.decLastPPUnit) as LastPP,
		tblInv.strSellStockUnit as Margin,
		(tblInvPrice.decSelling / tblInv.decSellFromStock) as SellUnit,
		'' AS PriceStockUnit
		   FROM tblInv INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
		    INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblInvPrice.uidPriceBasedID AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist 
		   WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQCategory, ','))) AND tblPriceListsByDate.strPricelist = @SQPriceList AND tblPriceListsByDate.uidPriceBasedID = @uidPriceBasedID
		   AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
		   ORDER BY Pricelist,tblInv.strDesc, tblInv.strPartNumber
		END
END


ELSE IF(@IsItemAll =1)
BEGIN
    if(@PL_InvSortDescription =0)
	   BEGIN
       SELECT 
		tblInv.strPartNumber as PartNumber,
		tblInv.strDesc as [Description],
		(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As Pricelist,
		tblInvPrice.decSelling as Price,
		tblInv.strSellUnit as Unit,
		(tblInv.decLastPPUnit ) as LastPP,
		tblInv.strSellStockUnit as Margin,
		(tblInvPrice.decSelling / tblInv.decSellFromStock) as SellUnit,
		'' AS PriceStockUnit
		FROM tblInv
		 INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblInvPrice.uidPriceBasedID AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist 
		WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQCategory, ','))) AND tblPriceListsByDate.strPricelist = @SQPriceList AND tblPriceListsByDate.uidPriceBasedID = @uidPriceBasedID 
		AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
		ORDER BY Pricelist,tblInv.strPartNumber
		END
		ELSE
		BEGIN
		   SELECT 
		tblInv.strPartNumber as PartNumber,
		tblInv.strDesc as [Description],
		(tblInvPrice.strPricelist + ' (' + convert(nvarchar,tblPriceListsByDate.dteStartDate, 110) + ' - ' + convert(nvarchar,tblPriceListsByDate.dteFinishDate, 110) + ')') As Pricelist,
		tblInvPrice.decSelling as Price,
		tblInv.strSellUnit as Unit,
		(tblInv.decLastPPUnit ) as LastPP,
		tblInv.strSellStockUnit as Margin,
		(tblInvPrice.decSelling / tblInv.decSellFromStock) as SellUnit,
		'' AS PriceStockUnit
		FROM tblInv
		 INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblInvPrice.uidPriceBasedID AND tblPriceListsByDate.strPricelist = tblInvPrice.strPricelist 
		WHERE (tblInv.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@SQCategory, ','))) AND tblPriceListsByDate.strPricelist = @SQPriceList AND tblPriceListsByDate.uidPriceBasedID = @uidPriceBasedID 
		   AND tblInv.bitInactive = CASE WHEN @IsInactive = 1 THEN 1 WHEN @IsActive = 1 THEN 0 END
		   ORDER BY Pricelist,tblInv.strDesc, tblInv.strPartNumber
		END
END

END
GO

CREATE PROCEDURE [dbo].[GetInvNegativeInvCorReportSummary]
@ItemList nvarchar(max), 
@optAcctSets  bit = Null,
@optAssets bit = NULL,
@optCategory bit = NULL,
@SQStart Date = NULL,
@SQEnd Date = NULL,
@optActiveItems bit = NULL,
@optInactiveItems bit = NULL,
@PL_InvSortDescription bit = NULL

AS
BEGIN

SET NOCOUNT ON;
IF(@optAcctSets = 1)
BEGIN 
        IF(@PL_InvSortDescription = 0)
        BEGIN
		SELECT tblInvTrackingDT.strPartNumber,(SELECT strDesc FROM tblInv WHERE strPartNumber = tblInvTrackingDT.strPartNumber) AS INVDESC, ISNULL(SUM(tblInvTrackingDT.decQtyIn),0) AS decQtyIn,ISNULL(SUM(tblInvTrackingDT.decValueIn),0) AS decValueIn, 
		ISNULL(SUM(tblInvTrackingDT.decCOGS),0) AS decCOGS, tblInv.strAcctSet AS OrderbyCol
		FROM tblInvTracking 
		INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
		INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName
		WHERE (tblInvTracking.intModule <> 2) AND (tblInvTracking.intModule <> 7) AND (tblInvTracking.intModule <> 8) AND (tblInvTrackingDT.decCOGS <> 0) AND (tblInvTrackingDT.bitService = 0) AND 
		(tblInvTracking.dteJournalDate BETWEEN  @SQStart AND CONVERT(VARCHAR(30), @SQEnd)) AND  (tblInv.strAcctSet IN (Select * from fnSplitStringAsTable(@ItemList,',')))
		AND tblInv.bitInactive = CASE WHEN @optInactiveItems = 1 THEN 1 WHEN @optActiveItems = 1 THEN 0 END
		GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strAcctSet
		ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber
		END
		ELSE
		BEGIN
        SELECT tblInvTrackingDT.strPartNumber,(SELECT strDesc FROM tblInv WHERE strPartNumber = tblInvTrackingDT.strPartNumber) AS INVDESC, ISNULL(SUM(tblInvTrackingDT.decQtyIn),0) AS decQtyIn,ISNULL(SUM(tblInvTrackingDT.decValueIn),0) AS decValueIn, 
		ISNULL(SUM(tblInvTrackingDT.decCOGS),0) AS decCOGS, tblInv.strAcctSet AS OrderbyCol
		FROM tblInvTracking 
		INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
		INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName
		WHERE (tblInvTracking.intModule <> 2) AND (tblInvTracking.intModule <> 7) AND (tblInvTracking.intModule <> 8) AND (tblInvTrackingDT.decCOGS <> 0) AND (tblInvTrackingDT.bitService = 0) AND 
		(tblInvTracking.dteJournalDate BETWEEN  @SQStart AND CONVERT(VARCHAR(30), @SQEnd)) AND  (tblInv.strAcctSet IN (Select * from fnSplitStringAsTable(@ItemList,',')))
		AND tblInv.bitInactive = CASE WHEN @optInactiveItems = 1 THEN 1 WHEN @optActiveItems = 1 THEN 0 END
		GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strAcctSet
		ORDER BY OrderbyCol,INVDESC, tblInvTrackingDT.strPartNumber
		END
END


ELSE IF(@optAssets = 1)
BEGIN
        IF(@PL_InvSortDescription = 0)
        BEGIN
		SELECT tblInvTrackingDT.strPartNumber,(SELECT strDesc FROM tblInv WHERE strPartNumber = tblInvTrackingDT.strPartNumber) AS INVDESC, ISNULL(SUM(tblInvTrackingDT.decQtyIn),0) AS decQtyIn,ISNULL(SUM(tblInvTrackingDT.decValueIn),0) AS decValueIn, 
		ISNULL(SUM(tblInvTrackingDT.decCOGS),0) AS decCOGS, (CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc) AS OrderbyCol
		FROM tblInvTracking 
		INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
		INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName
		INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet
		INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
		WHERE (tblInvTracking.intModule <> 2) AND (tblInvTracking.intModule <> 7) AND (tblInvTracking.intModule <> 8) AND (tblInvTrackingDT.decCOGS <> 0) AND (tblInvTrackingDT.bitService = 0) AND (tblInvTracking.dteJournalDate BETWEEN CONVERT(VARCHAR(30), @SQStart) AND CONVERT(VARCHAR(30), @SQEnd)) AND  (tblAccounts.intGLNumber IN (Select * from fnSplitStringAsTable(@ItemList,','))) 
		AND tblInv.bitInactive = CASE WHEN @optInactiveItems = 1 THEN 1 WHEN @optActiveItems = 1 THEN 0 END
		GROUP BY tblInvTrackingDT.strPartNumber, (CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc)
		ORDER BY OrderbyCol, tblInvTrackingDT.strPartNumber
		END
		ELSE
		BEGIN
		SELECT tblInvTrackingDT.strPartNumber,(SELECT strDesc FROM tblInv WHERE strPartNumber = tblInvTrackingDT.strPartNumber) AS INVDESC, ISNULL(SUM(tblInvTrackingDT.decQtyIn),0) AS decQtyIn,ISNULL(SUM(tblInvTrackingDT.decValueIn),0) AS decValueIn, 
		ISNULL(SUM(tblInvTrackingDT.decCOGS),0) AS decCOGS, (CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc) AS OrderbyCol
		FROM tblInvTracking 
		INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
		INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber AND tblInvTrackingDT.strLocName = tblInv.strLocName
		INNER JOIN tblAccountSets ON tblInv.strAcctSet = tblAccountSets.strAcctSet
		INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber 
		WHERE (tblInvTracking.intModule <> 2) AND (tblInvTracking.intModule <> 7) AND (tblInvTracking.intModule <> 8) AND (tblInvTrackingDT.decCOGS <> 0) AND (tblInvTrackingDT.bitService = 0) AND (tblInvTracking.dteJournalDate BETWEEN CONVERT(VARCHAR(30), @SQStart) AND CONVERT(VARCHAR(30), @SQEnd)) AND  (tblAccounts.intGLNumber IN (Select * from fnSplitStringAsTable(@ItemList,','))) 
		AND tblInv.bitInactive = CASE WHEN @optInactiveItems = 1 THEN 1 WHEN @optActiveItems = 1 THEN 0 END
		GROUP BY tblInvTrackingDT.strPartNumber, (CAST(tblAccounts.intGLNumber AS varchar(20)) + ' ' + tblAccounts.strDesc)
		ORDER BY OrderbyCol,  INVDESC, tblInvTrackingDT.strPartNumber
		END

END

ELSE IF(@optCategory = 1)
BEGIN
        IF(@PL_InvSortDescription = 0)
        BEGIN
		SELECT tblInvTrackingDT.strPartNumber,(SELECT strDesc FROM tblInv WHERE strPartNumber = tblInvTrackingDT.strPartNumber) AS INVDESC, ISNULL(SUM(tblInvTrackingDT.decQtyIn),0) AS decQtyIn ,ISNULL(SUM(tblInvTrackingDT.decValueIn),0) AS decValueIn,
		ISNULL(SUM(tblInvTrackingDT.decCOGS),0)  AS decCOGS, tblInv.strCategory AS OrderbyCol 
		FROM tblInvTracking 
		INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID 
		INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber 
		WHERE (tblInvTracking.intModule <> 2) AND (tblInvTracking.intModule <> 7) AND (tblInvTracking.intModule <> 8) AND (tblInvTrackingDT.decCOGS <> 0) AND (tblInvTrackingDT.bitService = 0) AND (tblInvTracking.dteJournalDate 
		BETWEEN CONVERT(VARCHAR(30), @SQStart) AND CONVERT(VARCHAR(30), @SQEnd)) AND  (tblInv.strCategory IN (Select * from fnSplitStringAsTable(@ItemList,',')))
		AND tblInv.bitInactive = CASE WHEN @optInactiveItems = 1 THEN 1 WHEN @optActiveItems = 1 THEN 0 END
		GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strCategory
		ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber
		END
		ELSE
		BEGIN
		SELECT tblInvTrackingDT.strPartNumber,(SELECT strDesc FROM tblInv WHERE strPartNumber = tblInvTrackingDT.strPartNumber) AS INVDESC, ISNULL(SUM(tblInvTrackingDT.decQtyIn),0) AS decQtyIn ,ISNULL(SUM(tblInvTrackingDT.decValueIn),0) AS decValueIn,
		ISNULL(SUM(tblInvTrackingDT.decCOGS),0)  AS decCOGS, tblInv.strCategory AS OrderbyCol 
		FROM tblInvTracking 
		INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID 
		INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber 
		WHERE (tblInvTracking.intModule <> 2) AND (tblInvTracking.intModule <> 7) AND (tblInvTracking.intModule <> 8) AND (tblInvTrackingDT.decCOGS <> 0) AND (tblInvTrackingDT.bitService = 0) AND (tblInvTracking.dteJournalDate 
		BETWEEN CONVERT(VARCHAR(30), @SQStart) AND CONVERT(VARCHAR(30), @SQEnd)) AND  (tblInv.strCategory IN (Select * from fnSplitStringAsTable(@ItemList,',')))
		AND tblInv.bitInactive = CASE WHEN @optInactiveItems = 1 THEN 1 WHEN @optActiveItems = 1 THEN 0 END
		GROUP BY tblInvTrackingDT.strPartNumber, tblInv.strCategory
		ORDER BY OrderbyCol,INVDESC, tblInvTrackingDT.strPartNumber
		END
END

ELSE
BEGIN
        IF(@PL_InvSortDescription = 0)
        BEGIN
		SELECT tblInvTrackingDT.strPartNumber,(SELECT strDesc FROM tblInv WHERE strPartNumber = tblInvTrackingDT.strPartNumber) AS INVDESC, ISNULL(SUM(tblInvTrackingDT.decQtyIn),0) AS decQtyIn,ISNULL(SUM(tblInvTrackingDT.decValueIn),0) AS decValueIn, 
		ISNULL(SUM(tblInvTrackingDT.decCOGS),0)  AS decCOGS, '' AS OrderbyCol FROM tblInvTracking INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID 
		WHERE (tblInvTracking.intModule <> 2) AND (tblInvTracking.intModule <>7) AND (tblInvTracking.intModule <> 8) AND (tblInvTrackingDT.decCOGS <> 0) AND (tblInvTrackingDT.bitService = 0) AND (tblInvTracking.dteJournalDate 
		BETWEEN CONVERT(VARCHAR(30), @SQStart) AND CONVERT(VARCHAR(30), @SQEnd)) AND (tblInvTrackingDT.strPartNumber IN (Select * from fnSplitStringAsTable(@ItemList,',')))  
		GROUP BY tblInvTrackingDT.strPartNumber
		ORDER BY OrderbyCol,tblInvTrackingDT.strPartNumber
		END
		ELSE
		BEGIN
		SELECT tblInvTrackingDT.strPartNumber,(SELECT strDesc FROM tblInv WHERE strPartNumber = tblInvTrackingDT.strPartNumber) AS INVDESC, ISNULL(SUM(tblInvTrackingDT.decQtyIn),0) AS decQtyIn,ISNULL(SUM(tblInvTrackingDT.decValueIn),0) AS decValueIn, 
		ISNULL(SUM(tblInvTrackingDT.decCOGS),0)  AS decCOGS, '' AS OrderbyCol FROM tblInvTracking INNER JOIN tblInvTrackingDT ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID 
		WHERE (tblInvTracking.intModule <> 2) AND (tblInvTracking.intModule <>7) AND (tblInvTracking.intModule <> 8) AND (tblInvTrackingDT.decCOGS <> 0) AND (tblInvTrackingDT.bitService = 0) AND (tblInvTracking.dteJournalDate 
		BETWEEN CONVERT(VARCHAR(30), @SQStart) AND CONVERT(VARCHAR(30), @SQEnd)) AND (tblInvTrackingDT.strPartNumber IN (Select * from fnSplitStringAsTable(@ItemList,',')))  
		GROUP BY tblInvTrackingDT.strPartNumber
		ORDER BY OrderbyCol,INVDESC, tblInvTrackingDT.strPartNumber
		END

END
END
GO

CREATE PROCEDURE [dbo].[LoadCustCustomersFOrCancelledSales] @UserName VARCHAR(100) = ''
	,@SearchText NVARCHAR(max) = ''
	,@IsInActiveCustomers BIT
	,@BPToolsMode BIT
AS
BEGIN
			SELECT DISTINCT strCustName AS CustomerName
			,strCustDesc AS [Description]
			,bitInactive
		FROM (
			SELECT DISTINCT tblOrderDoc.strCustName
				,strCustDesc
				,strCustCategory
				,tblCustomers.bitInactive
			FROM tblOrderDoc
			INNER JOIN tblCustomers ON tblCustomers.strCustName = tblOrderDoc.strCustName
			WHERE (
					intDocType = 1
					OR intDocType = 2
					)
				AND (bitCleared = 1)
			
			UNION ALL
			
			SELECT DISTINCT tblOrderDocQ.strCustName
				,strCustDesc
				,strCustCategory
				,tblCustomers.bitInactive
			FROM tblOrderDocQ
			INNER JOIN tblCustomers ON tblCustomers.strCustName = tblOrderDocQ.strCustName
			WHERE (bitCleared = 1)
				AND (
					(@BPToolsMode = 0)
					AND (
						strCustCategory IN (
							SELECT tblCustomerCat.strCustCategory
							FROM tblCustomerCat
							LEFT JOIN tblCustomerCatSec ON tblCustomerCat.strCustCategory = tblCustomerCatSec.strCustCategory
							WHERE ISNULL((
										SELECT COUNT(tblCustomerCatSec.strCustCategory)
										FROM tblCustomerCatSec
										WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
										), 0) = 0
								OR (
									ISNULL((
											SELECT COUNT(tblCustomerCatSec.strCustCategory)
											FROM tblCustomerCatSec
											WHERE tblCustomerCatSec.strCustCategory = tblCustomerCat.strCustCategory
											), 0) > 0
									AND tblCustomerCatSec.strUserName = @UserName 
									)
							)
						)
					)
			) z
		WHERE (
				strCustName LIKE @SearchText
				OR strCustDesc LIKE @SearchText
				)
				AND (
				bitinactive = CASE 
					WHEN @IsInActiveCustomers = 0
						THEN 0
					ELSE bitinactive
					END
				)
		ORDER BY strCustName

END
GO

CREATE PROCEDURE UpdateUDFinCat
@IsUDFinCat as bit
AS
BEGIN
UPDATE tblCoOpts SET bitUDFinCat = @IsUDFinCat
END
GO

CREATE PROCEDURE [dbo].[InsertApprovalsDocLimit](
@SqlUserName NVARCHAR(200),
@SqlDocLimitIncl decimal,
@SqlNotification NVARCHAR(200),
@sqlApproverType int,
@SqlGroupId int,
@SqlPriorityLevel int
)
AS
BEGIN
INSERT INTO dbo.tblApprovalsDocLimit( strUserName , DocLimitIncl , PreferredNotification , intApproverType , intApproverGroupId , priorityLevel) VALUES ( @SqlUserName , @SqlDocLimitIncl , @SqlNotification , @sqlApproverType , @SqlGroupId , @SqlPriorityLevel )

END
GO

CREATE PROCEDURE [dbo].[uFillInvAdjustStockCountData](
@AdjustmentType int,
@DocumentNumber NVARCHAR(200),
@Comment NVARCHAR(200)
)
AS
BEGIN
	IF(@AdjustmentType = 2)
		SELECT tblInvIntReqDocDT.intLineNo, tblInvIntReqDocDT.strPartNumber AS PartNumber, tblInv.strDesc AS [Description], tblInvExt.decAvail AS Available, tblInvExt.decOnhand AS OnHand, tblInvIntReqDocDT.decQty AS Variance, ISNULL(tblInvIntReqDocDT.decAmount / tblInvIntReqDocDT.decQty,0) AS ValueEa, tblInvIntReqDocDT.decAmount AS ValueTotal, cast(0 as bigint) As lngInvTrackID, tblInvIntReqDoc.strInvIntReqDocID, CONVERT(varchar(20), tblInvIntReqDoc.dteJournalDate, 103) AS dteJournalDate, @Comment As strComment, tblInvIntReqDoc.strInvIntReqDocID AS strSource, tblInvIntReqDoc.strLocName AS Location, tblInvIntReqDoc.intAccount, tblInvIntReqDoc.strUserName, tblInvExt.strBinLoc AS BinLocation,strRefNo = '' FROM tblInvIntReqDoc INNER JOIN tblInvIntReqDocDT on tblInvIntReqDoc.strInvIntReqDocID = tblInvIntReqDocDT.strInvIntReqDocID LEFT JOIN tblInv ON tblInvIntReqDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblInvExt ON tblInvIntReqDocDT.strPartNumber = tblInvExt.strPartNumber AND tblInvIntReqDoc.strLocName = tblInvExt.strLocName WHERE tblInvIntReqDoc.strInvIntReqDocID = @DocumentNumber ORDER BY tblInvIntReqDocDT.intLineNo
	ELSE IF(@AdjustmentType = 3)
	BEGIN
		SELECT tblInvIssReqDocDT.intLineNo ,tblInvIssReqDocDT.strPartNumber AS PartNumber ,tblInv.strDesc AS [Description] ,(tblInvIssReqDocDT.decQty) AS Available ,tblInvIssReqDocDT.decReqQty AS OnHand ,(tblInvIssReqDocDT.decReqQty - tblInvIssReqDocDT.decQty) AS Variance ,ISNULL(tblInvIssReqDocDT.decAmount / tblInvIssReqDocDT.decQty, 0) AS ValueEa ,tblInvIssReqDocDT.decAmount AS ValueTotal ,tblInvTrackingDT.lngInvTrackID ,tblInvIssReqDoc.strInvIssReqDocID ,CONVERT(VARCHAR(20), tblInvIssReqDoc.dteJournalDate, 103) AS dteJournalDate ,tblInvTracking.strComment ,tblInvIssReqDoc.strInvIssReqDocID AS strSource ,tblInvIssReqDoc.strLocName AS Location ,tblInvIssReqDoc.intAccount ,tblInvIssReqDoc.strUserName ,tblInvExt.strBinLoc AS BinLocation ,tblInvIssReqDocDT.strNonBudgetRefNo AS strRefNo ,tblInvIssReqDoc.strEmpNumber AS strEmployee ,strEmployeeName = ISNULL(( SELECT strEmpName FROM tblEmployees WHERE strEmpNumber = tblInvIssReqDoc.strEmpNumber), '') ,tblInvIssReqDocDT.strEmpNumber AS StrEmployeeNumberLineLevel ,strEmployeeNameLineLevel = ISNULL(( SELECT strEmpName FROM tblEmployees WHERE strEmpNumber = tblInvIssReqDocDT.strEmpNumber ), '') ,tblInvIssReqDocDT.strFromUnit FROM tblInvIssReqDoc INNER JOIN tblInvIssReqDocDT ON tblInvIssReqDoc.strInvIssReqDocID = tblInvIssReqDocDT.strInvIssReqDocID INNER JOIN tblInvTrackingDT ON tblInvIssReqDoc.lngInvTrackID = tblInvTrackingDT.lngInvTrackID AND tblInvIssReqDocDT.intLineNo = tblInvTrackingDT.intLineNo INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblInvExt ON tblInvTrackingDT.strPartNumber = tblInvExt.strPartNumber AND tblInvIssReqDoc.strLocName = tblInvExt.strLocName WHERE tblInvIssReqDoc.strInvIssReqDocID = @DocumentNumber ORDER BY tblInvIssReqDocDT.intLineNo
	END
	ELSE
		SELECT tblInvAdjDocDT.intLineNo, tblInvAdjDocDT.strPartNumber AS PartNumber, tblInv.strDesc AS [Description], (tblInvTrackingDT.decOnHand + tblInvTrackingDT.decQty) AS Available, tblInvTrackingDT.decOnHand AS OnHand, tblInvTrackingDT.decQty AS Variance, ISNULL(CASE WHEN tblInvAdjDocDT.decAmount = 0 OR tblInvAdjDocDT.decQty = 0 THEN 0 ELSE tblInvAdjDocDT.decAmount / tblInvAdjDocDT.decQty END,0) AS ValueEa, tblInvAdjDocDT.decAmount AS ValueTotal, tblInvTrackingDT.lngInvTrackID, tblInvAdjDoc.strAdjDocID, CONVERT(varchar(20), tblInvAdjDoc.dteJournalDate, 103) AS dteJournalDate, tblInvTracking.strComment, tblInvAdjDoc.strAdjDocID AS strSource, tblInvAdjDoc.strLocName AS Location, tblInvAdjDoc.intAccount, tblInvAdjDoc.strUserName, (SELECT strBinCode FROM tblInvLocBin WHERE lngId=tblInvAdjDocDT.lngBinId) AS BinLocation,strRefNo = '' FROM tblInvAdjDoc INNER JOIN tblInvAdjDocDT on tblInvAdjDoc.strAdjDocID = tblInvAdjDocDT.strAdjDocID INNER JOIN tblInvTrackingDT ON tblInvAdjDoc.lngInvTrackID = tblInvTrackingDT.lngInvTrackID AND tblInvAdjDocDT.intLineNo = tblInvTrackingDT.intLineNo INNER JOIN tblInvTracking ON tblInvTrackingDT.lngInvTrackID = tblInvTracking.lngInvTrackID INNER JOIN tblInv ON tblInvTrackingDT.strPartNumber = tblInv.strPartNumber INNER JOIN tblInvExt ON tblInvAdjDocDT.strPartNumber = tblInvExt.strPartNumber AND tblInvAdjDoc.strLocName = tblInvExt.strLocName WHERE tblInvAdjDoc.strAdjDocID = @DocumentNumber ORDER BY tblInvAdjDocDT.intLineNo
END
GO

CREATE PROCEDURE [dbo].[uFillInvAdjustInvData](
@AdjustmentType int,
@Source NVARCHAR(200)
)
AS
BEGIN
	IF(@AdjustmentType = 2)
		SELECT DISTINCT tblInv.* FROM tblInvIntReqDoc INNER JOIN tblInvIntReqDocDT ON tblInvIntReqDoc.strInvIntReqDocID = tblInvIntReqDocDT.strInvIntReqDocID INNER JOIN dbo.fnTblInvForLocJoin() tblInv ON tblInvIntReqDocDT.strPartNumber = tblInv.strPartNumber AND tblInvIntReqDoc.strLocName = tblInv.strLocName WHERE tblInvIntReqDoc.strInvIntReqDocID = @Source
	ELSE
		SELECT * FROM tblInv WHERE strPartNumber IN (SELECT DISTINCT strPartNumber FROM tblInvTrackingDT WHERE strSource = @Source)
END
GO

CREATE PROCEDURE [dbo].[uFillInvAdjustInvIssReqDocDTBinData](
@AdjustmentType int,
@DocumentNumber NVARCHAR(200)
)
AS
BEGIN
	IF(@AdjustmentType = 3)
		SELECT strInvIssReqDocID,intLineNo,lngBinId,strBinCode=(SELECT strBinCode FROM tblInvLocBin WHERE lngId=tblInvIssReqDocDTBin.lngBinId),decQty FROM tblInvIssReqDocDTBin WHERE strInvIssReqDocID = @DocumentNumber
END
GO

CREATE PROCEDURE [dbo].[uFillInvAdjustmentPartNumberCount](
@PartNumber NVARCHAR(200)
)
AS
BEGIN
	SELECT ISNULL(COUNT(tblInv.strPartNumber),0) FROM tblInv INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType WHERE tblInv.strPartNumber = @PartNumber AND tblInvSerialTypes.bitPrintInv = 1
END
GO

CREATE PROCEDURE [dbo].[uFillInvAdjustBranchTransferOrderData] (
	@DocNumber NVARCHAR(200)
	,@Location NVARCHAR(200)
	)
AS
BEGIN
	SELECT tblInvTrfOrdDocDT.strPartNumber
		,tblInv.strDesc
		,tblInvTrfOrdDocDT.decQty
		,tblInvTrfOrdDocDT.decUnitCost
		,tblInvTrfOrdDocDT.decAmount
		,ext2.decOnHand
		,ext2.decAvail
		,ext1.decMaxLevel
		,ext2.decOnOrder
		,tblInvTrfOrdDoc.decTotal
		,tblInvTrfOrdDocDT.decQtyRemaining
		,ext1.decOnHand AS decOnHandFromLoc
		,ext1.decAvail AS decAvailFromLoc
		,ext1.decOnOrder AS decOnOrderFromLoc
	FROM tblInvTrfOrdDocDT
	INNER JOIN tblInv ON tblInvTrfOrdDocDT.strPartNumber = tblInv.strPartNumber
	INNER JOIN tblInvExt ext1 ON tblInv.strPartNumber = ext1.strPartNumber
	INNER JOIN tblInvExt ext2 ON tblInv.strPartNumber = ext2.strPartNumber 
	INNER JOIN tblInvTrfOrdDoc ON tblInvTrfOrdDoc.strInvTrfOrdDocID = tblInvTrfOrdDocDT.strInvTrfOrdDocID
	WHERE tblInvTrfOrdDocDT.strInvTrfOrdDocID = @DocNumber
		AND ext1.strLocName = @Location
		AND ext2.strLocName = @Location
	ORDER BY tblInvTrfOrdDocDT.intLineNo
END
GO


CREATE PROCEDURE [dbo].[DeletePriceListItemsAndItemsMasterData](
@MasterId as integer
)
AS
BEGIN
	DELETE FROM tblPricelistsItems WHERE intPricelistMasterId=@MasterId
	DELETE FROM tblPricelistsItemsMaster where intPricelistMasterId=@MasterId
END
GO


CREATE PROCEDURE GetInvNumConvListDataCount
@InActive BIT = 0,
@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT count(*)
	FROM tblInvNumConv
	WHERE (bitInactive = 0 or bitInactive = @InActive)
		AND (
			ISNULL(strInvNumConv, '') LIKE '%' + ISNULL(@search, strInvNumConv) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
			)
END
GO


CREATE PROCEDURE [dbo].[GetInvNumConvListData] (
@InActive BIT = 0
,@PageSize INT = 25
,@PageNumber INT = 1
,@Search AS NVARCHAR(Max) = '')
AS
BEGIN
	DECLARE @skip INT
	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT intType AS intType
,strInvNumConv AS InvNumConv
,strDesc AS strDesc
,bitInactive AS Inactive
,bitDefault AS IsDefault
FROM tblInvNumConv
	WHERE (bitInactive = 0 or bitInactive = @InActive)
		AND (
			ISNULL(strInvNumConv, '') LIKE '%' + ISNULL(@search, strInvNumConv) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@search, strDesc) + '%'
			)
	ORDER BY strInvNumConv OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
	END
GO

CREATE PROCEDURE dbo.uFillInvRepackingData @DocNumber NVARCHAR(200)
AS
BEGIN
	SELECT [strRepackDocID],CAST([intLineNo] as bigint) as intLineNo,[bitOriginalItem],[strPartNumber],CAST([decQty] as decimal) as decQty,[decWeight],[decTotalWeight],[strLocName] FROM [tblInvRepackDocDT] WHERE strRepackDocID = @DocNumber
            
	SELECT  [strRepackDocID],CAST([intRepackDocID] as bigint) as intRepackDocID,[lngInvTrackID],[lngJourID],[dteSystemDate],[dteJournalDate],[strUserName],[strComment],[decTotalWeightOriginal],[decTotalWeightRepackaged],CAST([intDept] as bigint) as intDept FROM [tblInvRepackDoc] WHERE strRepackDocID = @DocNumber
            
	SELECT tblInvRepackDocDTSerial.[lngID], tblInvRepackDocDTSerial.[strRepackDocID], CAST(tblInvRepackDocDTSerial.[intLineNo] as bigint) as intLineNo, tblInvRepackDocDTSerial.[bitOriginalItem], tblInvRepackDocDTSerial.[strSerialNumber], CAST(tblInvRepackDocDTSerial.[decQty] as decimal) as decQty, tblInvRepackDocDTSerial.[strUnit], tblInvRepackDocDTSerial.[bitExpiryDate], tblInvRepackDocDTSerial.[dteExpiryDate], tblInvRepackDocDTSerial.[intSerialLotType], ISNULL(tblInvSerialExt.bitDimensionExist,0) AS bitDimensionExist, ISNULL(tblInvSerialExt.strDimension,'') AS strDimension FROM [tblInvRepackDocDTSerial] INNER JOIN tblInvRepackDocDT ON tblInvRepackDocDTSerial.strRepackDocID = tblInvRepackDocDT.strRepackDocID AND tblInvRepackDocDTSerial.intLineNo = tblInvRepackDocDT.intLineNo LEFT JOIN tblInvSerialExt ON tblInvRepackDocDT.strPartNumber = tblInvSerialExt.strPartNumber AND tblInvRepackDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber WHERE tblInvRepackDocDTSerial.strRepackDocID = @DocNumber
            
	SELECT * FROM tblInv WHERE strPartNumber IN (SELECT DISTINCT strPartNumber FROM tblInvTrackingDT WHERE strSource = @DocNumber)

	SELECT tblInvRepackDocDT.strRepackDocID, cast(tblInvRepackDocDT.intLineNo as bigint), tblInvRepackDocDT.strPartNumber as PartNumber, tblInv.strDesc AS [Description],CASE WHEN tblInvRepackDocDT.bitOriginalItem = 0 THEN 'Original Item' ELSE 'Repackaged Item' END AS ItemType,ISNULL(tblInvBOM.intQtyToUse, 0) AS EcoQuantity, tblInvRepackDocDT.decWeight AS EcoUnitWeight,ISNULL((tblInvBOM.intQtyToUse * tblInvRepackDocDT.decWeight), 0) AS EcoWeight, ISNULL(tblInvBOM.intQtyToUse, 0) / (SELECT intBOMQty FROM tblInv WHERE strPartNumber = (SELECT strPartNumber FROM tblInvRepackDocDT WHERE bitOriginalItem = 1 AND strRepackDocID = @DocNumber)) AS BaseQuantity, tblInvRepackDocDT.decWeight AS BaseUnitWeight, ISNULL((tblInvBOM.intQtyToUse * tblInvRepackDocDT.decWeight), 0) / (SELECT intBOMQty FROM tblInv WHERE strPartNumber = (SELECT strPartNumber FROM tblInvRepackDocDT WHERE bitOriginalItem = 1 AND strRepackDocID = @DocNumber)) AS BaseWeight, (SELECT intBOMQty FROM tblInv WHERE strPartNumber = (SELECT strPartNumber FROM tblInvRepackDocDT WHERE bitOriginalItem = 1 AND strRepackDocID = @DocNumber)) AS BOMQty FROM tblInvRepackDocDT INNER JOIN tblInv ON tblInvRepackDocDT.strPartNumber = tblInv.strPartNumber LEFT OUTER JOIN tblInvBOM ON tblInvRepackDocDT.strPartNumber = tblInvBOM.strPartItemNumber AND tblInvBOM.strPartNumber = (SELECT strPartNumber FROM tblInvRepackDocDT WHERE bitOriginalItem = 1 AND strRepackDocID = @DocNumber) WHERE tblInvRepackDocDT.strRepackDocID = @DocNumber ORDER BY tblInvRepackDocDT.intLineNo

	SELECT strRepackDocID,CAST(intLineNo as bigint) as intLineNo,cast(lngBinId as nvarchar) as lngBinId,strBinCode=(SELECT strBinCode FROM tblInvLocBin WHERE lngId=tblInvRepackDocDTBin.lngBinId),CAST(decQty as decimal) as decQty FROM tblInvRepackDocDTBin WHERE strRepackDocID = @DocNumber
END
GO


CREATE PROCEDURE [dbo].[GetInvRepackDocDTCount] @DocNumber NVARCHAR(200)
AS
BEGIN
	SELECT ISNULL(COUNT(*), 0) FROM tblInvRepackDocDT WHERE bitOriginalItem = 1 AND strRepackDocID = @DocNumber
END
GO

CREATE PROCEDURE [dbo].[UpdateProductionScheduleDTDetails](
@lngID bigint,
@Location NVARCHAR(200)
)
AS
BEGIN
	UPDATE tblProductionScheduleDT SET strLocName = @Location WHERE lngID = @lngID
END
GO

CREATE PROCEDURE [dbo].[InsertUpdateInvWorkOrder](
@Adjust bit
,@DocumentNumber NVARCHAR(200)
,@CurrentDate DATETIME
,@DocumentDate DATETIME
,@StartDate DATETIME
,@DueDate DATETIME
,@UserName NVARCHAR(200)
,@References NVARCHAR(200)
,@Notes NVARCHAR(Max)
,@IsClose bit
)
AS
BEGIN
	IF(@Adjust = 0)
		INSERT INTO tblInvWorkOrder VALUES(@DocumentNumber, @CurrentDate, @DocumentDate, @StartDate, @DueDate, @UserName, @References, @Notes, @IsClose)
	ELSE
		UPDATE tblInvWorkOrder SET dteSystemDate = @CurrentDate, dteJournalDate = @DocumentDate, dteStartDate = @StartDate, dteDueDate = @DueDate, strUserName = @UserName, strReference = @References, strNotes = @Notes, bitCleared = @IsClose WHERE strInvWODocID = @DocumentNumber
END
GO

CREATE PROCEDURE [dbo].[GetInvBomDetailsBaseOnPartNumber]   
@PartNumber VARCHAR(50)  
AS  
BEGIN  
SELECT BOM.strPartItemNumber  AS PartNumber  , 
	INV2.strDesc as [Desc]  , 
	BOM.intQtyToUse as QtyToUse, 
	BOM.strLocName as LocName, 
	Cast(INV.intBOMQty as decimal) as BOMQty, 
	ISNULL((SELECT decAvail FROM tblInvExt WHERE strPartNumber = BOM.strPartItemNumber AND strLocName = BOM.strLocName),0) AS StockAvail, 
	INV2.bitUseBOM 
FROM tblInvBOM BOM 
INNER JOIN tblInv INV ON BOM.strPartNumber = INV.strPartNumber 
INNER JOIN tblInv INV2 ON BOM.strPartItemNumber = INV2.strPartNumber 
WHERE BOM.strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[GetMinMaxProdNumber] (
	@DocNumber NVARCHAR(200)
	,@IsPrev BIT
	)
AS
BEGIN
	IF (@IsPrev = 0)
		SELECT MIN(strProdNumber)
		FROM tblProductionSchedule
		WHERE strProdnumber > @DocNumber
			AND bitCleared = 0
	ELSE
		SELECT MAX(strProdNumber)
		FROM tblProductionSchedule
		WHERE strProdnumber < @DocNumber
			AND bitCleared = 0
END
GO


CREATE PROCEDURE [dbo].[InsertProductionSchedule] (
	@ProdNumber AS NVARCHAR(50)
	,@PartNumber AS NVARCHAR(50)
	,@ReqQty AS DECIMAL
	,@LocationName AS NVARCHAR(10)
	,@StartDate AS DATETIME
	,@DuoDate AS DATETIME
	,@IsDisassembleChecked BIT
	,@IsManufactureCompleteChecked BIT
	,@CompletionDate AS DATETIME
	,@ManufacturedQty AS MONEY
	,@AssemblyNumber AS NVARCHAR(20)
	,@SystemDate AS DATETIME
	,@UserName AS NVARCHAR(20)
	,@Cleared BIT
	,@WoDOCID AS NVARCHAR(50)
	,@OrdDOCID AS NVARCHAR(50)
	,@Notes AS NVARCHAR(50)
	,@WcCodes AS NVARCHAR(50)
	)
AS
BEGIN
	INSERT INTO tblProductionSchedule
	VALUES (
		@ProdNumber
		,@PartNumber
		,@ReqQty
		,@LocationName
		,@StartDate
		,@DuoDate
		,@IsDisassembleChecked
		,@IsManufactureCompleteChecked
		,@CompletionDate
		,@ManufacturedQty
		,@AssemblyNumber
		,@SystemDate
		,@UserName
		,@Cleared
		,@WoDOCID
		,@OrdDOCID
		,@Notes
		,@WcCodes
		)
END
GO

CREATE PROCEDURE [dbo].[DsGetAllPQApproversPQ]
AS
BEGIN
	SELECT strName AS UserName
	FROM tblUsers(NOLOCK)
	WHERE blnAPSetupPOApprovers = 1
		AND (blnApprovePurchaseOrders = 1)
		AND [blnIsLockedOut] = 0
END
GO

CREATE PROCEDURE [dbo].[LoadControlsData] @EditGroupId INT
AS
BEGIN
	SELECT ID AS [ID]
		,strGroupName AS GroupName
		,docLimitIncFrom AS LimitIncFrom
		,docLimitIncTo AS LimitIncTo
		,intNotificationOrder AS NotificationOrder
		,bitInactive AS Inactive
		,intApproverType AS ApproverType
	FROM tblPQApprovalsGroup
	WHERE [ID] = @EditGroupId
END
GO

CREATE PROCEDURE [dbo].[GetProductionDocument] @ProdNumber NVARCHAR(200)
AS
BEGIN
	SELECT PS.strProdNumber AS ProdNumber
		,PS.strPartNumber AS PartNumber
		,INV.strDesc AS [Desc]
		,PS.decReqQty AS ReqQty
		,PS.strLocName AS LocName
		,PS.dteStartDate AS StartDate
		,PS.dteDueDate AS DueDate
		,PS.blnDisassemble AS Disassemble
		,PS.blnCompleted AS Completed
		,PS.dteCompletedDate AS CompletedDate
		,PS.decManQty AS ManQty
		,PS.strAsmDocID AS AsmDocID
		,PS.strInvWCCode AS InvWCCode
	FROM tblProductionSchedule PS
	INNER JOIN tblInv INV ON INV.strPartNumber = PS.strPartNumber
	WHERE PS.strProdNumber = @ProdNumber
END
GO

CREATE PROCEDURE GetCashGuardSettingsList
AS
BEGIN

SELECT
 [ID],
 [ConfigType],
 [COMPort],
 [IPAddress],
 [PortNumber] ,
 [APIType],
 [UserName],
 [CreatedBy],
 [CreatedDate],
 [UpdatedBy],
 [UpdatedDate]
FROM [dbo].[tblCashGuardConfig] NOLOCK

END
GO

CREATE PROCEDURE DeleteCashGuardSetting
@ID bigint
AS
BEGIN

DELETE 
FROM [dbo].[tblCashGuardConfig] 
WHERE ID = @ID

END
GO

CREATE PROCEDURE InsertCashGuardSetting
 @ConfigType int,
 @COMPort nvarchar(50),
 @IPAddress nvarchar(50),
 @PortNumber int ,
 @APIType int,
 @UserName nvarchar(20),
 @CreatedBy nvarchar(20)
AS
BEGIN

INSERT INTO tblCashGuardConfig ([ConfigType], [COMPort], [IPAddress], [PortNumber], [APIType] , [UserName], [CreatedBy], [CreatedDate], [UpdatedBy], [UpdatedDate])
Values(@ConfigType,@COMPort,@IPAddress,@PortNumber,@APIType,@UserName,@CreatedBy,GETDATE(),@CreatedBy,GETDATE())

END
GO

CREATE PROCEDURE UpdateCashGuardSetting
 @ID bigint,
 @ConfigType int,
 @COMPort nvarchar(50),
 @IPAddress nvarchar(50),
 @PortNumber int ,
 @APIType int,
 @UserName nvarchar(20),
 @UpdatedBy nvarchar(20)
AS
BEGIN

UPDATE tblCashGuardConfig 
SET [ConfigType] = @ConfigType, 
	[COMPort] = @COMPort, 
	[IPAddress] = @IPAddress, 
	[PortNumber] = @PortNumber , 
	[APIType] = @APIType,
	[UserName] = @UserName, 
	[UpdatedBy] = @UpdatedBy, 
	[UpdatedDate] = GETDATE()
WHERE ID = @Id
END
GO

CREATE PROCEDURE GetUserListForCashGuard
@Id bigint = 0
AS
BEGIN
	
	SELECT tblUsers.strUserName AS UserName,tblUsers.strName AS Name
	FROM tblUsers Where tblUsers.blnIsLockedOut = 0 
	AND strUserName not in (Select tblCashGuardConfig.UserName from tblCashGuardConfig Where tblCashGuardConfig.Id Not in (@Id))

END
GO

CREATE PROCEDURE [dbo].[GetCashGuardSettingsListByUserName]
@UserName nvarchar(100)
AS
BEGIN

SELECT
 [ID],
 [ConfigType],
 [COMPort],
 [IPAddress],
 [PortNumber] ,
 [APIType], 
 [UserName],
 [CreatedBy],
 [CreatedDate],
 [UpdatedBy],
 [UpdatedDate]
FROM [dbo].[tblCashGuardConfig] NOLOCK
WHERE UserName = @UserName

END
GO


CREATE PROCEDURE [dbo].[GetUserTotalWorkedHour] 
	@user_name_list NVARCHAR(MAX)
	,@StartDate DATETIME
	,@EndDate DATETIME
AS
BEGIN
	
	DECLARE @TotalDistancTravelled DECIMAL(19, 2)	
	DECLARE @CurrSymbol NVARCHAR(10)
	DECLARE @ThousandSep NVARCHAR(10)
	DECLARE @Decimal INT

	SET @CurrSymbol = (
			SELECT strCurrSymbol
			FROM tblCurrency
			WHERE bitHome = 1
			)
	SET @ThousandSep = (
			SELECT strThousSymb
			FROM tblCurrency
			WHERE bitHome = 1
			)
	SET @Decimal = (
			SELECT intDecimals
			FROM tblCurrency
			WHERE bitHome = 1
			)
	
	--TotalDistanceTravelled
	CREATE TABLE #UserDetails (
		Username VARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS
		,LastLoginDate DATE
		,LoginStatus VARCHAR(MAX)
		,DistanceTravelled DECIMAL(19, 2)
		)

	CREATE TABLE #UserLocationTracking (
		RowId INT
		,LocId INT
		,Username VARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS
		,GeoCord GEOGRAPHY
		,[Day] DATE
		)

	CREATE TABLE #UserWiseDistance (
		Username VARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS
		,Distance DECIMAL(19, 2)
		)

	CREATE TABLE #Total (Distance DECIMAL(19, 2))


	INSERT INTO #UserLocationTracking (
		RowId
		,LocId
		,Username
		,GeoCord
		,[Day]
		)
	SELECT RowId
		,LocationId
		,strUserName
		,geoCoord
		,[Day]
	FROM (
		SELECT ROW_NUMBER() OVER (
				ORDER BY dteCreatedDateTime ASC
				) AS RowId
			,ROW_NUMBER() OVER (
				PARTITION BY strUsername ORDER BY dteCreatedDateTime ASC
				) LocationId
			,strUserName
			,geoCoord
			,CONVERT(DATE, dteCreatedDateTime) AS [Day]
		FROM tblTrackUsersLocation
		WHERE strDocumentId IS NULL
			AND CONVERT(DATE, dteCreatedDateTime) >= CONVERT(DATE, @StartDate)
			AND CONVERT(DATE, dteCreatedDateTime) <= CONVERT(DATE, @EndDate)
		) AS RESULT

	DECLARE @totalRows INT = (
			SELECT count(*)
			FROM #UserLocationTracking
			)
	DECLARE @currentRow INT = 0
	DECLARE @CurrentUser VARCHAR(MAX)
	DECLARE @PrevUser VARCHAR(MAX)
	DECLARE @NextUser VARCHAR(MAX)
	DECLARE @Distance DECIMAL(19, 2) = 0.00

	WHILE @currentRow < @totalRows
	BEGIN
		IF EXISTS (
				SELECT *
				FROM #UserLocationTracking
				WHERE RowId = @currentRow
				)
		BEGIN
			SET @CurrentUser = (
					SELECT Username
					FROM #UserLocationTracking
					WHERE RowId = @currentRow
					)
			SET @NextUser = (
					SELECT Username
					FROM #UserLocationTracking
					WHERE RowId = @currentRow + 1
					)

			IF (@CurrentUser = @NextUser)
			BEGIN
				DECLARE @or GEOGRAPHY
					,@dest GEOGRAPHY

				SET @or = (
						SELECT GeoCord
						FROM #UserLocationTracking
						WHERE RowId = @currentRow
						)
				SET @dest = (
						SELECT GeoCord
						FROM #UserLocationTracking
						WHERE RowId = @currentRow + 1
						)
				--distance in km
				SET @Distance = @Distance + CONVERT(DECIMAL(19, 2), (
							SELECT @or.STDistance(@dest) / 1000
							))

				INSERT INTO #UserWiseDistance
				SELECT @CurrentUser
					,@Distance
			END
		END

		SET @currentRow = @currentRow + 1
	END

	INSERT INTO #Total (Distance)
	SELECT (
			SELECT sum(Distance)
			FROM #UserWiseDistance
			WHERE Username IN (
					SELECT *
					FROM dbo.fnSplitStringAsTable(@user_name_list, ',')
					)
			) AS RESULT

	SET @TotalDistancTravelled = ISNULL((
				SELECT Distance
				FROM #Total
				), 0.00)
		--TotalWorkedHour
		;

	WITH userCTE (
		RowNo
		,strUserName
		,WorkingMinutes
		,BreakMinutes
		,dteTimeIn
		,dteTimeOut
		,dteStartBreak
		,dteEndBreak
		)
	AS (
		SELECT ROW_NUMBER() OVER (
				PARTITION BY strUserName ORDER BY strUserName
				) AS RowNo
			,strUserName
			,(
				CASE 
					WHEN dteTimeOut IS NULL
						AND dteStartBreak IS NOT NULL
						THEN DATEDIFF(minute, dteTimeIn, dteStartBreak)
					WHEN dteTimeOut IS NOT NULL
						AND dteStartBreak IS NULL
						THEN DATEDIFF(minute, dteTimeIn, dteTimeOut)
					ELSE 0
					END
				) AS WorkingMinutes
			,(
				CASE 
					WHEN dteStartBreak IS NOT NULL
						AND dteEndBreak IS NOT NULL
						THEN DATEDIFF(minute, dteStartBreak, dteEndBreak)
					ELSE 0
					END
				) AS BreakMinutes
			,dteTimeIn
			,dteTimeOut
			,dteStartBreak
			,dteEndBreak
		FROM tblLoginHisotry
		WHERE tblLoginHisotry.strUserName IN (
				SELECT *
				FROM dbo.fnSplitStringAsTable(@user_name_list, ',')
				)
			AND CONVERT(DATE, dteLoginDate) >= CONVERT(DATE, @StartDate)
			AND CONVERT(DATE, dteLoginDate) <= CONVERT(DATE, @EndDate)
		)
		,outertest
	AS (
		SELECT strUserName
			,sum(WorkingMinutes) AS TotalWorkingMinutes
			,sum(BreakMinutes) AS TotalBreakMinutes
		FROM userCTE
		GROUP BY strUserName
		)
	SELECT ISNULL((SELECT sum(TotalWorkingMinutes) FROM outertest), 0) AS TotalWorkedHour
		,@CurrSymbol AS CurrencySymbol
		,@ThousandSep AS ThousandSep
		,@TotalDistancTravelled AS TotalDistancTravelled
		,@Decimal AS _Decimal

	DROP TABLE #UserLocationTracking

	DROP TABLE #UserDetails

	DROP TABLE #UserWiseDistance

	DROP TABLE #Total
END
GO

CREATE PROCEDURE [dbo].[ValidateWebstoreUser]											    
(                                                                                  
	@UserName VARCHAR(MAX),                                                            
	@Password VARCHAR(MAX),   
	@DatabaseName VARCHAR(100),   
	@SQLUserName VARCHAR(20)                                                    
)                                                                                  
AS                                                                                 
BEGIN                                                                              
 SET NOCOUNT ON;         
 
 DECLARE @Query NVARCHAR(MAX)=''
 DECLARE @UserExists INT = 0    
   
 BEGIN TRY
	 SET @Query ='SELECT @UserCount = Count(*) FROM [' + @DatabaseName + '].[dbo].[tblUsers] where strEmail = '''+ @UserName + ''' AND strPassWord= ''' + @Password + ''''   
	 exec sp_executesql @Query, N'@UserCount nvarchar out', @UserExists out 
	 
	 PRINT @Query

	 if (@UserExists > 0)                                                                          
		BEGIN
			SET @Query = 'SELECT '''+ REPLACE(''+ @DatabaseName + '', 'paldb', '') + ''' AS DatabaseName, 
				strName AS CompanyName,
				dteLYStarted AS LYStarted,
				dteLYEnded AS LYEnded,
				dteYearStarts AS YearStarts,
				dteYearEnds AS YearEnds,
				imgLogo AS [CompanyLogo]
				from [' + @DatabaseName + '].[dbo].[tblCompany]'   			
			EXEC sp_executesql @Query	
			
			SET @Query = 'SELECT intVersion AS Version,intOrigVersion AS OrigVersion,intYear AS Year,strSoftVersion AS SoftVersion,intDBVersion as DBVersion,uidDBGuid as DBGuid,intRSTVersion as RSTVersion,bitServerRunning as ServerRunning
				from [' + @DatabaseName + '].[dbo].[tblVersion]'   
			EXEC sp_executesql @Query   

			SET @Query = 'EXEC  [' + @DatabaseName + '].[dbo].[Mobile_UserDataByUserName] ''' + @UserName + ''''                                                                                                                    
			EXEC sp_executesql @Query    
		END 
 END TRY
 BEGIN CATCH                                                                                                       
    SELECT ERROR_MESSAGE() AS ErrorMessage;                                                                  
 END CATCH    

END
GO

CREATE PROCEDURE [dbo].[GetTradeDiscountMatrixDataByMatrixType] 
	@MatrixType AS VARCHAR(20), 
	@ExpiryDate AS SMALLDATETIME
AS 
BEGIN 
	SELECT 
	  tblTradeDiscMatrix.strMatrixType AS MatrixType, 
	  tblTradeDiscMatrix.strDesc AS [Description], 
	  tblTradeDiscMatrix.bitInactive AS Inactive, 
	  tblTradeDiscMatrix.bitApplyDisc AS ApplyDisc, 
	  tblTradeDiscMatrixTypes.uidMatrixID AS MatrixID, 
	  tblTradeDiscMatrixTypes.dteStartDate AS StartDate, 
	  tblTradeDiscMatrixTypes.dteFinishDate AS FinishDate, 
	  tblTradeDiscMatrixTypesDT.decValueFrom AS ValueFrom, 
	  tblTradeDiscMatrixTypesDT.decValueTo AS ValueTo, 
	  tblTradeDiscMatrixTypesDT.decDiscPerc AS DiscPerc, 
	  tblTradeDiscMatrixTypesDT.strPartNumber AS PartNumber, 
	  tblCustomers.bitMatrixType 
	FROM tblTradeDiscMatrix 
	  INNER JOIN tblTradeDiscMatrixTypes ON tblTradeDiscMatrix.strMatrixType = tblTradeDiscMatrixTypes.strMatrixType 
	  INNER JOIN tblTradeDiscMatrixTypesDT ON tblTradeDiscMatrixTypes.uidMatrixID = tblTradeDiscMatrixTypesDT.uidMatrixID 
	  INNER JOIN tblCustomers ON tblTradeDiscMatrix.strMatrixType = tblCustomers.strMatrixType 
	WHERE 
	  tblTradeDiscMatrix.strMatrixType = @MatrixType 
	  AND tblTradeDiscMatrixTypes.bitInactive = 0 
	  AND tblTradeDiscMatrixTypesDT.intType <> 2  --Matrix = 0, Inclusions = 1, Exclusions = 2
	  AND (@ExpiryDate BETWEEN tblTradeDiscMatrixTypes.dteStartDate AND tblTradeDiscMatrixTypes.dteFinishDate)	  
 END
 GO

Create PROCEDURE [dbo].[UpdateInvoiceEmail]
@DocNumber AS NVARCHAR(50)
AS
BEGIN
	UPDATE tblInvoiceDoc SET bitEmailed = 1 WHERE strInvDocID = @DocNumber
END
GO


CREATE PROCEDURE [dbo].[UpdateOrderEmail]
@DocNumber AS NVARCHAR(50)
AS
BEGIN
	UPDATE tblOrderDoc SET bitEmailed = 1 WHERE strOrdDocID = @DocNumber
END
GO

CREATE PROCEDURE [dbo].[GetAllCompanyOptionDetails]
AS
BEGIN
SELECT bitReadReceipt AS ReadReceipt
      ,bitHighPriority AS HighPriority
      ,bitSendDirect AS SendDirect
      ,intRecPeriod1 AS RecPeriod1
      ,intRecPeriod2 AS RecPeriod2
      ,intRecPeriod3 AS RecPeriod3
      ,intPayPeriod1 AS PayPeriod1
      ,intPayPeriod2 AS PayPeriod2
      ,intPayPeriod3 AS PayPeriod3
      ,strAutoINV AS AutoINV
      ,strAutoSO AS AutoSO
      ,strAutoQU AS AutoQU
      ,strAutoPI AS AutoPI
      ,strAutoPO AS AutoPO
      ,intReqPay AS ReqPay
      ,intReqRec AS ReqRec
      ,bitTransFuture AS TransFuture
      ,bitSessionFuture AS SessionFuture
      ,bitSMSAuto AS SMSAuto
      ,butAutoSMSQu AS IsAutoSMSQu
      ,strAutoSMSQu AS AutoSMSQu
      ,bitAutoSMSSO AS IsAutoSMSSO
      ,strAutoSMSSO AS AutoSMSSO
      ,bitAutoSMSInv AS IsAutoSMSInv
      ,strAutoSMSInv AS AutoSMSInv
      ,bitInvRec AS InvRec
      ,bitInvPay AS InvPay
      ,CAST(intCashStatus AS int) AS CashStatus
      ,bitNegInv AS NegInv
      ,intRefChk AS RefChk
      ,intRefReq AS RefReq
      ,bitSortInvDesc AS SortInvDesc
      ,strAutoRQ AS AutoRQ 
      ,bitUseCredit AS UseCredit 
      ,decCreditAmt AS CreditAmt 
      ,bitSendOutlook AS SendOutlook 
      ,strEmailFrom AS EmailFrom 
      ,strSMTP AS SMTP 
      ,bitSMTPAuth AS SMTPAuth 
      ,strSMTPUser AS SMTPUser 
      ,strSMTPPwd AS SMTPPwd 
      ,bitPCJournal AS PCJournal 
      ,bitPCInvAdj AS PCInvAdj 
      ,bitPCSales AS PCSales 
      ,bitPCPurch AS PCPurch 
      ,bitJELinked AS JELinked 
      ,bitInvSessOnly AS InvSessOnly 
      ,decRecIntRate AS RecIntRate 
      ,bitBlockDesc AS BlockDesc 
      ,bitBlockUnit AS BlockUnit 
      ,bitQSUseMarkup AS QSUseMarkup 
      ,decQSPct AS QSPct 
      ,bitBlockDescP AS BlockDescP 
      ,bitBlockUnitP AS BlockUnitP 
      ,intGLMode AS GLMode 
      ,intSpellMode AS SpellMode 
      ,intProcessDocs AS ProcessDocs 
      ,bitCreditRequestActive AS CreditRequestActive 
      ,intProcessDocsP AS ProcessDocsP 
      ,bitAutoApplyCreditNotes AS AutoApplyCreditNotes 
      ,bitUDFinCat AS UDFinCat 
      ,intCNReasonReq AS CNReasonReq 
      ,bitVendStockCodes AS VendStockCodes 
      ,intSalesPersonReq AS SalesPersonReq 
      ,bitItemNumConvActive AS ItemNumConvActive 
      ,intPDepartmentReq AS PDepartmentReq 
      ,intRDepartmentReq AS RDepartmentReq 
      ,bitARSplitPmtOnCOD AS ARSplitPmtOnCOD 
      ,intAPPartDeliveries AS APPartDeliveries 
      ,intAPOverReceiving AS APOverReceiving 
      ,bitBlockOrigInvReprint AS BlockOrigInvReprint 
      ,bitGRVBlindReceive AS GRVBlindReceive 
      ,intAPRefChk AS APRefChk  
      ,intAPRefReq AS APRefReq 
      ,bitARAutoPrintInv AS ARAutoPrintInv 
      ,intAPAuthReq AS APAuthReq 
      ,intARAuthReq AS ARAuthReq 
      ,intPOSAuthReq AS POSAuthReq 
      ,bitDSValidateDailySales AS DSValidateDailySales 
      ,bitARClearDocs AS ARClearDocs 
      ,bitAPClearDocs AS APClearDocs 
      ,bitAPAutoPrintInv AS APAutoPrintInv 
      ,bitWHAutoPrintInv AS WHAutoPrintInv 
      ,bitDSAutoPrintInv AS DSAutoPrintInv 
      ,bitStockTakeMethod AS StockTakeMethod 
      ,intARCreateReturn AS ARCreateReturn 
      ,intAPCreateReturn AS APCreateReturn 
      ,bitARAllowProcessTotal AS ARAllowProcessTotal 
      ,bitAPAllowProcessTotal AS APAllowProcessTotal 
      ,bitPCRecPayJnl AS PCRecPayJnl 
      ,bitProjSales AS ProjSales 
      ,bitProjFHQuotes AS ProjFHQuotes 
      ,bitProjPurch AS ProjPurch 
      ,bitProjGRV AS ProjGRV 
      ,bitProjAllowPostInactive AS ProjAllowPostInactive 
      ,intDefUpdateBank AS DefUpdateBank 
      ,bitProjRecPayJnl AS ProjRecPayJnl 
      ,bitAPPmtRequiresApprovals AS APPmtRequiresApprovals 
      ,bitCurrencyHasDecimal AS CurrencyHasDecimal 
      ,intBlockOnOverdueINV AS BlockOnOverdueINV 
      ,bitFHQRequireApproval AS FHQRequireApproval 
      ,intRecCodeConvention AS RecCodeConvention 
      ,intRecCodeConSeg1CharCount AS RecCodeConSeg1CharCount 
      ,strRecCodeConSeg1CharType AS RecCodeConSeg1CharType 
      ,intRecCodeConSeg2CharCount AS RecCodeConSeg2CharCount 
      ,strRecCodeConSeg2CharType AS RecCodeConSeg2CharType 
      ,intPayCodeConvention AS PayCodeConvention 
      ,intPayCodeConSeg1CharCount AS PayCodeConSeg1CharCount 
      ,strPayCodeConSeg1CharType AS PayCodeConSeg1CharType 
      ,intPayCodeConSeg2CharCount AS PayCodeConSeg2CharCount 
      ,strPayCodeConSeg2CharType AS PayCodeConSeg2CharType 
      ,strFHQPricelist AS FHQPricelist 
      ,bitWithholdingTaxAR AS WithholdingTaxAR 
      ,bitWithholdingTaxAP AS WithholdingTaxAP 
      ,bitInvImgOnSI AS InvImgOnSI 
      ,bitInvImgOnSO AS InvImgOnSO 
      ,bitInvImgOnSQ AS InvImgOnSQ 
      ,bitInvImgOnSFHQ AS InvImgOnSFHQ 
      ,bitInvAdjustWHTransferCost AS InvAdjustWHTransferCost 
      ,bitProjJournal AS ProjJournal 
      ,bitInvImgOnCR AS InvImgOnCR 
      ,intReportTimeout AS ReportTimeout 
      ,intReportTimeoutVPN AS ReportTimeoutVPN 
      ,bitAutoInvokeGRV AS AutoInvokeGRV 
      ,bitPCAllocPerc AS PCAllocPerc 
      ,bitARIncludeOpenOrdersInCreditLimit AS ARIncludeOpenOrdersInCreditLimit 
      ,bitARSalesPersonLevel AS ARSalesPersonLevel 
      ,bitInvImgOnPI AS InvImgOnPI 
      ,bitInvImgOnPO AS InvImgOnPO 
      ,bitInvImgOnPQ AS InvImgOnPQ 
      ,bitDisableAirtime AS DisableAirtime 
      ,intAirProvider AS AirProvider 
      ,strAirURL AS AirURL 
      ,strAirAccNo AS AirAccNo 
      ,strAirUsername AS AirUsername 
      ,strAirPassword AS AirPassword 
      ,strAirKey AS AirKey 
      ,bitInvLotsOverUnder AS InvLotsOverUnder 
      ,bitSMTPRequireSSL AS SMTPRequireSSL 
      ,intSMTPPort AS SMTPPort 
      ,bitInvExtDescOnSI AS InvExtDescOnSI 
      ,bitInvExtDescOnSO AS InvExtDescOnSO 
      ,bitInvExtDescOnSQ AS InvExtDescOnSQ 
      ,bitInvExtDescOnSFHQ AS InvExtDescOnSFHQ 
      ,bitInvExtDescOnCR AS InvExtDescOnCR 
      ,bitInvExtDescOnPI AS InvExtDescOnPI 
      ,bitInvExtDescOnPO AS InvExtDescOnPO 
      ,bitInvExtDescOnPQ AS InvExtDescOnPQ 
      ,bitARDefSP AS ARDefSP 
      ,bitARDefDept AS ARDefDept 
      ,bitAPDefDept AS APDefDept 
      ,bitAirAllowDocumentCrediting AS AirAllowDocumentCrediting 
      ,bitCentersPOS AS CentersPOS 
      ,bitPOSEnableCenters AS POSEnableCenters 
      ,bitPOSEnableUDF AS POSEnableUDF 
      ,bitPOSEnableUpsell AS POSEnableUpsell 
      ,bitARCompoundedInt AS ARCompoundedInt 
      ,intGPCalcInvLevel AS GPCalcInvLevel 
      ,intGPCalcLPP AS GPCalcLPP 
      ,intOverCreditLimit AS OverCreditLimit 
      ,intBlockOnOverdueORD AS BlockOnOverdueORD 
      ,bitBlockOnOverdueORDConvert AS BlockOnOverdueORDConvert 
      ,bitOverCreditLimitConvert AS OverCreditLimitConvert 
      ,decCreditBlockSILimit AS CreditBlockSILimit 
      ,decCreditBlockSOLimit AS CreditBlockSOLimit 
      ,bitWHAutoAssignPT AS WHAutoAssignPT 
      ,bitProjDelAdvice AS ProjDelAdvice 
      ,bitARDelAdvSO AS ARDelAdvSO 
      ,bitAutoInvokeDA AS AutoInvokeDA 
      ,bitARShowPricesDAProcess AS ARShowPricesDAProcess 
      ,bitARShowPricesDAPrint AS ARShowPricesDAPrint 
      ,blnARRequestVAT AS ARRequestVAT 
      ,decARMinValueForVAT AS ARMinValueForVAT 
      ,bitNegInvMovingAvg AS NegInvMovingAvg 
      ,bitAddSignature AS AddSignature 
      ,bitNonIntegrated AS NonIntegrated 
      ,bitNonIntegratedChanged AS NonIntegratedChanged 
      ,intDecimalQuantity AS DecimalQuantity 
      ,bitManScaleRead AS ManScaleRead 
      ,strManScaleFolder AS ManScaleFolder 
      ,bitManOverUnder AS ManOverUnder 
      ,intManAuthReq AS ManAuthReq 
      ,bitAPToMDaP AS APToMDaP 
      ,bitWHAutoPrintPT AS WHAutoPrintPT 
      ,bitWHAutoIssuePT AS WHAutoIssuePT 
      ,intGLRPJDepartmentReq AS GLRPJDepartmentReq 
      ,bitPCInvIssReq AS PCInvIssReq 
      ,bitProjInvAdj AS ProjInvAdj 
      ,bitProjInvIssReq AS ProjInvIssReq 
      ,bitProjInvIntReq AS ProjInvIntReq 
      ,blnPOApprovalsEnable AS POApprovalsEnable 
      ,blnPOApprovalsDocLimitEnable AS POApprovalsDocLimitEnable 
      ,blnPOApprovalsVenLimitEnable AS POApprovalsVenLimitEnable 
      ,decPODefaultDocLimit AS PODefaultDocLimit 
      ,decPODefaultVenLimit AS PODefaultVenLimit 
      ,bitInvExtDescOnBRQ AS InvExtDescOnBRQ 
      ,bitInvImgOnBRQ AS InvImgOnBRQ 
      ,bitWHRecSerialLotNum AS WHRecSerialLotNum 
      ,bitManStandardCost AS ManStandardCost 
      ,bitPurchCostVar AS PurchCostVar 
      ,bitWarnPurchOver AS WarnPurchOver 
      ,decWarnPurchOverPerc AS WarnPurchOverPerc 
      ,intSOUnavailable AS SOUnavailable 
      ,decDimensionFactor AS DimensionFactor 
      ,bitActivateProcessingDocument AS ActivateProcessingDocument 
      ,intDepreciationCalculationMethod AS DepreciationCalculationMethod 
      ,strDimUnitOfMeasure AS DimUnitOfMeasure 
      ,strGLAccountSegment AS GLAccountSegment 
      ,intBlockOverCreditLimitINV AS BlockOverCreditLimitINV 
      ,decBlockOverCreditLimitINV AS BlockOverCreditLimitINV 
      ,decBlockOverCreditLimitSO AS BlockOverCreditLimitSO 
      ,bitProjInvRepack AS ProjInvRepack 
      ,blnPROApprovalsPO AS PROApprovalsPO 
      ,blnPROApprovalsPR AS PROApprovalsPR 
      ,bitCustStockCodes AS CustStockCodes 
      ,decSSPPercentage AS SSPPercentage 
      ,intSSPMargMark AS SSPMargMark 
      ,intSSPUpdate AS SSPUpdate 
      ,intSSPRound AS SSPRound 
      ,bitARReceiptsOnSalesOrder AS ARReceiptsOnSalesOrder 
      ,bitARDropShipments AS ARDropShipments 
      ,intAccrualProcess AS AccrualProcess 
      ,bitCenterBM AS CenterBM 
      ,bitProjBM AS ProjBM 
      ,bitManPromtekRead AS ManPromtekRead 
      ,strManPromtekLoc AS ManPromtekLoc 
      ,bitAllowBin AS AllowBin 
      ,strCompCode AS CompCode 
      ,strPalladiumFTPPath AS PalladiumFTPPath 
      ,strPalladiumFTPUserID AS PalladiumFTPUserID 
      ,strPalladiumFTPPassword AS PalladiumFTPPassword 
      ,strPromtekFTPPath AS PromtekFTPPath 
      ,strPromtekFTPUserID AS PromtekFTPUserID 
      ,strPromtekFTPPassword AS PromtekFTPPassword 
      ,intCBDefaultItem AS CBDefaultItem 
      ,intARConfirmDelDtOnSaleDoc AS ARConfirmDelDtOnSaleDoc 
      ,bitARDeliveryAdvice AS ARDeliveryAdvice 
      ,strManPromtekBinLoc AS ManPromtekBinLoc 
      ,bitPODRequired AS PODRequired 
      ,blnIRApprovalsEnable AS IRApprovalsEnable 
      ,blnIRApprovalsDocLimitEnable AS IRApprovalsDocLimitEnable 
      ,blnIRApprovalsEmpLimitEnable AS IRApprovalsEmpLimitEnable 
      ,decIRDefaultDocLimit AS IRDefaultDocLimit 
      ,decIRDefaultEmpLimit AS IRDefaultEmpLimit 
      ,bitInvEmpLevel AS InvEmpLevel 
      ,bitEasyRosterDatabaseUpdate AS EasyRosterDatabaseUpdate 
      ,strEasyRosterServerName AS EasyRosterServerName 
      ,strEasyRosterUsername AS EasyRosterUsername 
      ,strEasyRosterPassword AS EasyRosterPassword 
      ,strEasyRosterDatabase AS EasyRosterDatabase 
      ,intPOSOfflinePeriod AS POSOfflinePeriod 
      ,bitAllowPOSOfflinePeriod AS AllowPOSOfflinePeriod 
      ,bitARLaybySO AS ARLaybySO 
      ,strARLaybyPricelist AS ARLaybyPricelist 
      ,bitLaybyPriceList AS LaybyPriceList 
      ,strAutoLB AS AutoLB 
      ,bitPCManWIP AS PCManWIP 
      ,bitPOSAllowDeposits AS POSAllowDeposits 
      ,intSalesAccrualProcess AS SalesAccrualProcess 
      ,dteRowUpdated AS RowUpdated 
      ,bitTrackBudgetsonPurchaseRequisitions AS TrackBudgetsonPurchaseRequisitions 
      ,bitBranchTransferDefaultMethod AS BranchTransferDefaultMethod 
      ,bitEnablePOSSyncInterval AS EnablePOSSyncInterval 
      ,intPOSSyncInterval AS POSSyncInterval 
      ,bitIREmpMandatory AS IREmpMandatory 
      ,bitIREnforceSecurity AS IREnforceSecurity 
      ,bitIROverBudgetApproval AS IROverBudgetApproval 
      ,bitIRNonBudgetApproval AS IRNonBudgetApproval 
      ,bitIRIssueToInvoice AS IRIssueToInvoice 
      ,bitRequireApprovalCustomerCreation AS RequireApprovalCustomerCreation 
      ,bitAllowControlAccAP AS AllowControlAccAP 
      ,bitAllowControlAccAR AS AllowControlAccAR 
      ,bitCentersStockCount AS CentersStockCount 
      ,intUserTrackingActivate AS UserTrackingActivate 
      ,strMobisalesKey AS MobisalesKey 
      ,strMobisalesPassword AS MobisalesPassword 
      ,bitESDEanbled AS ESDEanbled 
	  ,bitESDEanbled AS IsESDEnabled 
      ,strESDCountry AS ESDCountry 
      ,bitPCWorkshop AS PCWorkshop 
      ,bitProjWorkshop AS ProjWorkshop 
      ,bitSyncExtendedDesc AS SyncExtendedDesc 
      ,strCapexBudget AS CapexBudget 
      ,intWHShipmentsFromSO AS WHShipmentsFromSO 
      ,strCapexDeptBudget AS CapexDeptBudget 
      ,intCapexBudgetForDept AS CapexBudgetForDept 
      ,bitIsVendAttchEmailPassword AS IsVendAttchEmailPassword 
      ,bitIsCustAttchEmailPassword AS IsCustAttchEmailPassword 
      ,bitIsMobileUserDashandTrackingActive AS IsMobileUserDashandTrackingActive 
      ,strMobileUserDashandTrackingURL AS MobileUserDashandTrackingURL 
      ,bitSyncInventoryImages AS SyncInventoryImages 
      ,bitIsCreditNoteApprovalsActivated AS IsCreditNoteApprovalsActivated 
      ,bitIsGeneralLedgerJournalApprovalsActivated AS IsGeneralLedgerJournalApprovalsActivated 
	  ,intWHOverPicking AS WHOverPicking
	  ,bitInvImgExcludeAPI AS InvImgExcludeAPI
  FROM tblCoOpts 
END
GO

CREATE PROCEDURE [dbo].[GetWebstoreContractPriceList] 
	@SQContractPricingName as nvarchar(100) = null
AS
BEGIN
	SELECT strValueBased AS ValueBased, 
		   strDesc AS [Desc], 
		   bitInactive AS Inactive, 
		   bitApplyItem AS ApplyItem,
		   bitApplyTax AS ApplyTax, 
		   dteRowUpdated AS RowUpdated
	FROM tblValueBased 
	WHERE bitInactive = 0 AND
	ISNULL(@SQContractPricingName,'')='' OR strValueBased = @SQContractPricingName
	
	SELECT uidValueBasedID AS ValueBasedID, 
	strValueBased AS ValueBased, 
	dteStartDate AS StartDate, 
	dteFinishDate AS FinishDate, 
	bitInactive AS Inactive
	FROM tblValueBasedPricing 
	WHERE bitInactive = 0 AND
	ISNULL(@SQContractPricingName,'')='' OR strValueBased = @SQContractPricingName
	
	SELECT tblValueBasedPricing.strValueBased AS ValueBased,
	tblValueBasedPricingDT.uidValueBasedID AS ValueBasedID,
	tblValueBasedPricingDT.intType AS [Type],
	tblValueBasedPricingDT.intLineNo AS [LineNo],
	tblValueBasedPricingDT.strCategory AS Category,
	tblValueBasedPricingDT.decValueFrom AS ValueFrom,
	tblValueBasedPricingDT.decValueTo AS ValueTo,
	tblValueBasedPricingDT.decSpecialValue AS SpecialValue,
	tblValueBasedPricingDT.strPartNumber AS PartNumber	
	FROM tblValueBasedPricingDT INNER JOIN tblValueBasedPricing ON tblValueBasedPricingDT.uidValueBasedID = tblValueBasedPricing.uidValueBasedID
	WHERE tblValueBasedPricing.bitInactive = 0 AND
	ISNULL(@SQContractPricingName,'')='' OR tblValueBasedPricing.strValueBased = @SQContractPricingName
END
GO

CREATE PROCEDURE [dbo].[GetDepartmentForGLNumber] (
	@JourID BIGINT
	,@GLNumber NVARCHAR(max)
	,@IsCurrentYearAdj BIT
	)
AS
BEGIN
	IF (@IsCurrentYearAdj = 1)
	BEGIN
		SELECT intDept
		FROM tblJournalEnt
		WHERE (lngJourID = @JourID)
			AND (intGLNumber = @GLNumber)
	END
	ELSE
	BEGIN
		SELECT intDept
		FROM tblJournalEntLY
		WHERE (lngJourID = @JourID)
			AND (intGLNumber = @GLNumber)
	END
END
GO

CREATE PROCEDURE [dbo].[GetApproverNotificationMethod]  
(  
@Username nvarchar(100),
@ApproverType int
)  
AS  
BEGIN
SELECT PreferredNotification FROM tblApprovalsDocLimit(NOLOCK) WHERE strUsername = @Username and intApproverType = @ApproverType
END
GO

CREATE PROCEDURE [dbo].[PurchaseBulkRFQFlagUpdate]
	@SQDocNumber VARCHAR(MAX) = NULL,
	@IsPrinted bit = 0,
	@IsEmailed bit = 0
AS
BEGIN
	
	if(@IsPrinted = 1)
		UPDATE tblOrderDocRFQ SET bitPrinted = 1 WHERE strOrdRFQDocID = @SQDocNumber

	if(@IsPrinted = 1)
		UPDATE tblOrderDocRFQ SET bitEmailed = 1 WHERE strOrdRFQDocID = @SQDocNumber
END
GO

CREATE PROCEDURE [dbo].[PurchasePrintEmailFlagUpdate]
	@SQDocNumber VARCHAR(MAX) = NULL,
	@IsPrinted bit = 0,
	@IsEmailed bit = 0,
	@TransactionType int = 0
AS
BEGIN
	
	IF(@TransactionType = 0 OR @TransactionType = 3)
		Begin
			if(@IsPrinted = 1)
				UPDATE tblInvoiceDocP SET bitPrinted = 1 WHERE strInvPDocID = @SQDocNumber

			if(@IsPrinted = 1)
				UPDATE tblInvoiceDocP SET bitEmailed = 1 WHERE strInvPDocID = @SQDocNumber
		End

	IF(@TransactionType = 1 OR @TransactionType = 2)
		Begin
			if(@IsPrinted = 1)
				UPDATE tblOrderDocP SET bitPrinted = 1 WHERE strOrdPDocID = @SQDocNumber

			if(@IsPrinted = 1)
				UPDATE tblOrderDocP SET bitEmailed = 1 WHERE strOrdPDocID = @SQDocNumber
		End
END
GO

CREATE PROCEDURE [dbo].[GetInventoryTrfDocDataSerial] 
	@SQDocNumber as nvarchar(50)
AS
BEGIN
	SELECT 
		  tblInvTrfDocDTSerial.strTrfDocID, 
		  tblInvTrfDocDTSerial.intLineNo, 
		  tblInvTrfDocDTSerial.strSerialNumber, 
		  tblInvTrfDocDTSerial.decQty, 
		  tblInvTrfDocDTSerial.strUnit, 
		  tblInvTrfDocDTSerial.lngID, 
		  tblInvTrfDocDTSerial.bitExpiryDate, 
		  tblInvTrfDocDTSerial.dteExpiryDate, 
		  ISNULL(tblInvSerialExt.bitDimensionExist, 0) AS bitDimensionExist, 
		  ISNULL(tblInvSerialExt.strDimension, '') AS strDimension 
	FROM 
		  tblInvTrfDocDTSerial 
		  INNER JOIN tblInvTrfDocDT ON tblInvTrfDocDTSerial.strTrfDocID = tblInvTrfDocDT.strTrfDocID 
		  AND tblInvTrfDocDTSerial.intLineNo = tblInvTrfDocDT.intLineNo 
		  LEFT JOIN tblInvSerialExt ON tblInvTrfDocDT.strPartNumber = tblInvSerialExt.strPartNumber 
		  AND tblInvTrfDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber 
		  INNER JOIN tblInv ON tblInvTrfDocDT.strPartNumber = tblInv.strPartNumber 
		  LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
	WHERE 
		  tblInvTrfDocDTSerial.strTrfDocID = @SQDocNumber AND tblInvSerialTypes.bitPrintInv = 1 
	ORDER BY 
		  tblInvTrfDocDTSerial.intLineNo
END
GO

CREATE PROCEDURE [dbo].[GetBomQtybyPartNumber] 
(    
	@SQPart varchar(50)  
)  
AS  
BEGIN 
	SELECT intBOMQty FROM tblInv WHERE strPartNumber = @SQPart 
END
GO

CREATE PROCEDURE [dbo].[GetItemTypeDetailsbyPartNumber] 
(
	  @SQPart varchar(50)
) 
AS 
BEGIN 
	SELECT tblInv.bitInvSerialType AS IsInvSerialType, 
		   ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimensionExist, 
		   tblInv.decMass AS Mass, 
		   tblInv.decLastPPUnit AS LastPPUnit, 
		   tblInv.decBuyToStock AS BuyToStock
	FROM 
		tblInv LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
	WHERE 
		tblInv.strPartNumber = @SQPart 
END
GO

CREATE PROCEDURE [dbo].[GetBomItemTypeDetailsbyPartNumber] 
(
	  @SQPart varchar(50)
) 
AS 
BEGIN 
	SELECT 
		  tblInvBOM.strPartItemNumber AS PartNumber, 
		  tblInv.strDesc AS [Desc], 
		  tblInvBOM.intQtyToUse AS BOMQty, 
		  tblInv.bitInvSerialType AS IsInvSerialType, 
		  tblInvBOM.strLocName AS [Location], 
		  ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimensionExist, 
		  tblInv.decMass AS Mass, 
		  tblInv.decLastPPUnit AS LastPPUnit, 
		  tblInv.decBuyToStock AS BuyToStock 
	FROM 
		  tblInvBOM 
		  INNER JOIN tblInv ON tblInvBOM.strPartItemNumber = tblInv.strPartNumber 
		  LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType 
	WHERE 
		  tblInvBOM.strPartNumber = @SQPart
END
GO

CREATE PROCEDURE [dbo].[GetInvExtByPartNumberByLoc] 
(
	  @SQPart varchar(50)
	  ,@SQLoc varchar(50)
) 
AS 
BEGIN 
	SELECT decValue AS [Value], decOnHand AS OnHand
	FROM tblInvExt 
	WHERE strPartNumber = @SQPart AND strLocName = @SQLoc
END
GO

CREATE PROCEDURE GetStoreCodes
AS
BEGIN

SELECT TOP 20 LEFT(StoreCode, 10) AS StoreCode FROM tblUtilityPervMultiStore GROUP BY LEFT(StoreCode, 10) HAVING COUNT(LEFT(StoreCode, 10)) > 1 ORDER BY LEFT(StoreCode, 10)

END
GO

CREATE PROCEDURE LoadVendorsNew
(      
@SearchText nvarchar(max),      
@IsInactive bit,           
@IsCheckedSearch bit      
)    
AS
BEGIN

IF(@IsCheckedSearch = 1)                 
BEGIN 

SELECT strVendName as VendorName, strVendDesc as Description FROM tblVendors 
WHERE bitInactive = CASE WHEN @IsInactive = 0 THEN 0 ELSE bitInactive END 
AND (strVendName LIKE @SearchText + '%' OR strVendDesc LIKE @SearchText + '%')
ORDER BY  strVendName        
END   
  
ELSE    
BEGIN    
SELECT strVendName as VendorName, strVendDesc as Description   
FROM tblVendors   
WHERE bitInactive = CASE WHEN @IsInactive = 0 THEN 0 ELSE bitInactive END    
ORDER BY  strVendName    
END 

END
GO

CREATE PROCEDURE GetFillBOMStockDataList
@BOMID as int
AS
BEGIN

SELECT Cast(lngManBOMID AS varchar) As strAsmDocID, dteRevDate AS dteJournalDate, strPartNumber AS strComment, Cast(1 AS bit) AS blnProforma FROM tblManBOM WHERE lngManBOMID = @BOMID

SELECT Cast(tblManBOMCompInv.lngManBOMID  AS varchar) AS strAsmDocID, tblManBOMCompInv.intLineNo, tblManBOMCompInv.strPartNumber, tblManBOMCompInv.strDesc, tblManBOMCompInv.decQty, tblInv.strStockUnit AS strSellUnit, tblManBOMCompInv.strLocation AS strLocName, tblManBOMCompInv.strWCCode, tblManWorkCentre.strDesc AS strWCDesc 
FROM tblManBOMCompInv 
INNER JOIN tblInv ON tblManBOMCompInv.strPartNumber = tblInv.strPartNumber INNER JOIN tblManWorkCentre ON tblManBOMCompInv.strWCCode = tblManWorkCentre.strWCCode WHERE tblManBOMCompInv.lngManBOMID = @BOMID 
ORDER BY tblManBOMCompInv.strWCCode, tblManBOMCompInv.intLineNo

END
GO

CREATE PROCEDURE [dbo].[AccountsSearch] @isdefBank bit
AS
BEGIN
    SELECT
			[intGLNumber] AS GLNumber ,
            [strDesc] AS Description ,
            [intAccType] AS AccType ,
            [intGroupCode] AS GroupCode ,
            [intAccClass] AS AccClass ,
            [bitInactive] AS AccClass ,
            [decOpenBalance] AS OpenBalance ,
            [decBalance] AS Balance ,
            [decLYOpenBalance] AS LYOpenBalance ,
            [decLYEndBalance] AS LYEndBalance ,
            [bitBank] AS Bank ,
            [bitRecon] AS Recon ,
            [bitInventory] AS Inventory ,
            [bitBudget] AS Budget ,
            [bitUsed] AS Used ,
            [bitUsedLY] AS UsedLY ,
            [bitLinkREarnings] AS LinkREarnings ,
            [bitLinkCEarnings] AS LinkCEarnings ,
            [bitLinkAP] AS LinkAP ,
            [bitLinkPurDisc] AS LinkPurDisc ,
            [bitLinkAR] AS LinkAR ,
            [bitLinkSalesDisc] AS LinkSalesDisc ,
            [bitLinkAssCosts] AS LinkAssCosts ,
            [bitLinkAdjWriteOff] AS LinkAdjWriteOff ,
            [bitIsLinkedAccount] AS IsLinkedAccount ,
            [bitDefBank] AS DefBank ,
            [bitLinkDeposit] AS LinkDeposit ,
            [bitLinkPrePay] AS LinkPrePay ,
            [strField1] AS Field1 ,
            [strField2] AS Field2 ,
            [strField3] AS Field3 ,
            [strField4] AS Field4 ,
            [strField5] AS Field5 ,
            [strField6] AS Field6 ,
            [bitLinkExc] AS LinkExc ,
            [bitAllowCenters] AS AllowCenters ,
            [intCheqNumber] AS CheqNumber ,
            [strCurrency] AS Currency ,
            [decOpenBalanceF] AS OpenBalanceF ,
            [decBalanceF] AS BalanceF ,
            [decLYOpenBalanceF] AS LYOpenBalanceF ,
            [decLYEndBalanceF] AS LYEndBalanceF ,
            [bitLinkGRV] AS LinkGRV ,
            [bitLinkAddCost] AS LinkAddCost ,
            [bitLinkDelAdvice] AS LinkDelAdvice ,
            [bitLinkWIP] AS LinkWIP ,
            [bitLinkManStandardCost] AS LinkManStandardCost
    FROM 
        [tblAccounts]
	 WHERE
        bitDefBank = @isdefBank
END
GO

CREATE PROCEDURE GetStockPickDefaultNotes
AS
BEGIN

SELECT bitWHAutoAssignPT as WHAutoAssignPT, bitAPToMDaP as APToMDaP, bitNegInv as NegInv,intGPCalcLPP as GPCalcLPP,intGPCalcInvLevel as GPCalcInvLevel,ISNULL(intWHOverPicking,0) AS WHOverPicking  FROM tblCoOpts

END
GO

CREATE PROCEDURE processGLReverseDelete @JEDocID AS NVARCHAR(max)
	,@Date AS DATE
	,@JourID AS BIGINT
AS
BEGIN
	DELETE
	FROM tblJournalEntryDocCB
	WHERE strJEDocID = @JEDocID

	DELETE
	FROM tblJournalEntryDocCBDT
	WHERE strJEDocID = @JEDocID

	DELETE
	FROM tblTax
	WHERE dteJournalDate = @Date
		AND lngJournalID = @JourID
		AND strInvOrPayID = @JEDocID
END
GO

CREATE PROCEDURE GetJEDocIDForProcessGLReverse @JournalDate AS DATE
	,@JourID AS BIGINT
AS
BEGIN
	SELECT strJEDocID
	FROM tblJournalEntryDocCB
	WHERE dteJournalDate = @JournalDate
		AND lngJourID = @JourID
END
GO

CREATE PROCEDURE [dbo].[UpdateOrderDocDAEmail] @DocNumber AS NVARCHAR(50)
AS
BEGIN
	UPDATE tblOrderDocDA
	SET bitEmailed = 1
	WHERE strOrdDADocID = @DocNumber
END
GO

CREATE PROCEDURE [dbo].[UpdateOrderDocQEmailedFlag] (@OrderDocQ AS NVARCHAR(50))
AS
BEGIN
	UPDATE tblOrderDocQ
	SET bitEmailed = 1
	WHERE strOrdDocID = @OrderDocQ
END
GO

CREATE PROCEDURE DeleteInvTarget
@PartNumber as nvarchar(200)
AS
BEGIN

DELETE FROM tblInvT WHERE strPartNumber = @PartNumber

END
GO

CREATE PROCEDURE DeleteInvPurchaseTarget
@PartNumber as nvarchar(200)
AS
BEGIN

DELETE FROM tblInvPurchaseTarget WHERE strPartNumber = @PartNumber

END
GO

CREATE PROCEDURE [dbo].[InsertInvTaxes] 
	@PartNumber AS NVARCHAR(200)
	,@IsOverridingTaxChecked AS BIT
	,@OverridingTaxCode AS NVARCHAR(200)
	,@IsUseMinTaxValueChecked AS BIT
	,@MinTaxAmountValue AS DECIMAL(19,2)
	,@AffectedTaxCodes AS NVARCHAR(200)
	,@KenyaItemTaxCode as nvarchar(200)
	,@ZambiaTaxCode AS NVARCHAR(200) 	

AS
BEGIN
	INSERT INTO [dbo].[tblInvItemTax]
           ([strPartNumber]
           ,[bitOverrideTax]
           ,[strOverridingTaxCode]
           ,[bitUseMTV]
           ,[decMinTaxAmount]
           ,[strAffectedTaxCodes]
           ,[dteRowInserted]
           ,[dteRowUpdated]
           ,[strKenyaItemTaxCode]
		   ,[strZambiaItemTaxCode])		
	VALUES(
		@PartNumber
		,@IsOverridingTaxChecked
		,@OverridingTaxCode
		,@IsUseMinTaxValueChecked
		,@MinTaxAmountValue
		,@AffectedTaxCodes
		,GETDATE()
		,GETDATE()
		,@KenyaItemTaxCode
		,@ZambiaTaxCode)
END
GO

CREATE PROCEDURE InsertInvItemEx
@PartNumber as nvarchar(200),
@TaxName as nvarchar(200)
AS
BEGIN

INSERT INTO tblInvEx VALUES (@PartNumber,@TaxName,GetDate())

END
GO


CREATE PROCEDURE UpdateInvTrfOrdDoc
(
@SystemDate AS DATETIME,
 @UserName AS NVARCHAR(20),
 @SOReasonCode AS NVARCHAR(20),
 @DocNumber AS NVARCHAR(50)
 )
 AS
 BEGIN
UPDATE tblInvTrfOrdDoc SET dteSystemDate = @SystemDate, strUserName = @UserName, bitCleared = 1,strBTOReasonCode = @SOReasonCode WHERE strInvTrfOrdDocID = @DocNumber

END
GO

CREATE PROCEDURE [dbo].[GetUserEnteredDetailsForVendorPayApproval]
@SQDocID as bigint
AS
BEGIN
Select dteSystemDate as SystemDate,strUserName as UserName from tblVendPayApproval  where lngVendPayApprovalID = @SQDocID;
END
GO


CREATE PROCEDURE [dbo].[GetInventoryDataForProjectBudget]  
@Part as nvarchar(Max),  
@BarCode as nvarchar(Max)  
AS  
  
BEGIN  

	SELECT 
	tblInv.strPartNumber as PartNumber
	,tblInv.strDesc as [Desc]
	FROM tblInv WHERE (tblInv.strPartNumber = @Part OR tblInv.strBarCode = @BarCode OR tblInv.strBarCode2 = @BarCode)
	AND bitInactive = 0 AND tblInv.bitOtherCmp = 0
	
END  
GO

CREATE PROCEDURE GetAuthorizationReason
AS
BEGIN
	SELECT strAuthReasonCode
	FROM tblAuthorizeReasons(NOLOCK)
	WHERE bitInactive = 0
	ORDER BY strAuthReasonCode
END
GO

CREATE PROCEDURE GetAuthorizationRequired @authorizationType AS INT
AS
BEGIN
	SELECT (
			CASE 
				WHEN @authorizationType = 0 --Purchases  
					THEN intAPAuthReq
				WHEN @authorizationType = 1 --Sales  
					THEN intARAuthReq
				WHEN @authorizationType = 2 --POS  
					THEN intPOSAuthReq
				WHEN @authorizationType = 3 --Manufacture  
					THEN intManAuthReq
				ELSE 0
				END
			) AS authReq
	FROM tblCoOpts(NOLOCK)
END
GO

Create Procedure [dbo].[CompanyDataLoginHistory]
@SQdteLocal datetime,
@SQdteSession datetime,
@SQstrUserName  nvarchar(max),
@SQstrMachineName  nvarchar(max),
@SQstrProdID nvarchar(max)
AS
Begin
	INSERT INTO tblDBHist VALUES (@SQdteLocal,GETDATE(),@SQdteSession,@SQstrUserName,@SQstrMachineName,@SQstrProdID)
END
GO

CREATE PROCEDURE GetAccountDetailsForGLNumber @GLNumber AS NVARCHAR(200)
AS
BEGIN
	SELECT intGroupCode AS GroupCode
		,intAccType AS AccType
		,intAccClass AS AccClass
		,bitInactive AS Inactive
		,decOpenBalance AS OpenBalance
		,bitRecon AS Recon
		,bitBudget AS Budget
		,bitLinkREarnings AS LinkREarnings
		,bitLinkCEarnings AS LinkCEarnings
		,bitIsLinkedAccount AS IsLinkedAccount
		,bitInventory AS Inventory
		,bitAllowCenters AS AllowCenters
		,intCheqNumber AS CheqNumber
		,strCurrency AS Currency
		,decOpenBalanceF AS OpenBalanceF
		,bitUsed
		,bitUsedLY AS UsedLY
		,strDesc AS [Description]
	FROM tblAccounts
	WHERE intGLNumber = @GLNumber
END
GO

CREATE PROCEDURE [dbo].[LngMaxID]  
AS 
BEGIN  
SELECT ISNULL(MAX(Cast(lngManBOMID as int)),0) + 1 FROM tblManBOM
END  
GO

CREATE PROCEDURE [dbo].[GetLngManBOMID] (
	@SQlngManBOMID BIGINT
	,@SQstrPartNumber VARCHAR(100)
	,@SQstrLocation NVARCHAR(20)
	,@SQdteRevDate SMALLDATETIME = NULL
	)
AS
BEGIN
	SELECT Cast(lngManBOMID AS NVARCHAR) AS lngManBOMID
	FROM tblManBOM
	WHERE strPartNumber = @SQstrPartNumber
		AND strLocation = @SQstrLocation
		AND dteRevDate = @SQdteRevDate
		AND lngManBOMID <> @SQlngManBOMID
	ORDER BY lngManBOMID DESC
END
GO

CREATE PROCEDURE [dbo].[GetDeliveryVehiclesDataCount] @InActive BIT = 0
	,@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	IF (@InActive = 0)
	BEGIN
		SELECT count(*)
		FROM tblDeliveryVehicles
		WHERE bitInactive = 0
			AND (
				ISNULL(strDelVehicleCode, '') LIKE '%' + ISNULL(@search, strDelVehicleCode) + '%'
				OR ISNULL(strDelVehicleDesc, '') LIKE '%' + ISNULL(@search, strDelVehicleDesc) + '%'
				)
	END
	ELSE
	BEGIN
		SELECT count(*)
		FROM tblDeliveryVehicles
		WHERE (
				ISNULL(strDelVehicleCode, '') LIKE '%' + ISNULL(@search, strDelVehicleCode) + '%'
				OR ISNULL(strDelVehicleDesc, '') LIKE '%' + ISNULL(@search, strDelVehicleDesc) + '%'
				)
	END
END
GO

CREATE PROCEDURE [dbo].[GetDeliveryVehicles] (
	@InActive BIT = NULL
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@Search NVARCHAR(50) = NULL
	)
AS
BEGIN
	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT strDelVehicleCode AS DelVehicleCode
		,strDelVehicleDesc AS DelVehicleDesc
		,strField1 AS Field1
		,strField2 AS Field2
		,strField3 AS Field3
		,strField4 AS Field4
		,strField5 AS Field5
		,strField6 AS Field6
		,strAddInfo AS AddInfo
		,bitInactive AS IsInactive
	FROM tblDeliveryVehicles
	WHERE bitInactive IN (
			0
			,ISNULL(@InActive, 1)
			)
		AND (
			(
				strDelVehicleCode LIKE ('%' + @Search + '%')
				OR @Search IS NULL
				)
			OR (
				strDelVehicleDesc LIKE ('%' + @Search + '%')
				OR @Search IS NULL
				)
			)
	ORDER BY strDelVehicleCode OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

CREATE PROCEDURE RemoveContainer @documentNumber AS NVARCHAR(max)
AS
BEGIN
	DELETE
	FROM tblContainers
	WHERE strCntDocID = @documentNumber
END
GO

CREATE PROCEDURE [dbo].[GetInvExtStockData] @PartNumber AS NVARCHAR(50)
	,@LocName AS NVARCHAR(50)
AS
BEGIN
	SELECT strPartNumber AS PartNumber
		,strLocName AS LocName
		,decAvail AS Avail
		,decAlloc AS Alloc
		,decOnHand AS OnHand
	FROM [dbo].[tblInvExt]
	WHERE (
			strPartNumber = @PartNumber
			OR @PartNumber IS NULL
			)
		AND (
			strLocName = @LocName
			OR @LocName IS NULL
			)
END
GO

CREATE PROCEDURE prCostTypes_Update
(
    @lngID bigint = Null,
    @strCode nvarchar(20) = Null,
    @strDescription nvarchar(100) = Null,
    @strUOM nvarchar(10) = Null,
    @bitInactive bit = Null
)
AS
BEGIN

 UPDATE [tblCostTypes] SET 
            [strDescription] = ISNULL(@strDescription, [strDescription]),
            [strUOM] = ISNULL(@strUOM, [strUOM]),
            [bitInactive] = ISNULL(@bitInactive, [bitInactive])
        WHERE
            [strCode] = @strCode

        SELECT @strCode

END
GO

CREATE PROCEDURE GetAssestTypeCodeCount
(
@AssetType as nvarchar(200)
)
AS
BEGIN

SELECT COUNT(strAssetTypeCode)
FROM tblAssets
WHERE strAssetTypeCode = @AssetType
END
GO

Create Procedure [dbo].[GetHSCodeByPartNumber]
@SQPartNumber as nvarchar(Max)
AS
BEGIN
	SELECT ISNULL(strHSCode,'') AS HSCode,ISNULL(strHSDesc,'') AS HSDesc
	,ISNULL(strDesc,'') AS [Desc]  FROM tblInv (nolock) 
	WHERE strPartNumber=@SQPartNumber
END
GO

CREATE PROCEDURE [dbo].[GetWebstoreItemsByLocation] @PageNumber INT = 1, 
@PageSize INT = 1, 
@PartNumber VARCHAR(125) = NULL, 
@LocName VARCHAR(10) = NULL 
AS 
BEGIN 
	SET NOCOUNT ON;	
	WITH Paged AS (
	  SELECT 
		dbo.tblInvExt.strPartNumber AS PartNumber, 
		strLocName AS LocName, 
		decAvail AS Avail, 
		decAlloc AS Alloc, 
		decOnHand AS OnHand, 
		decValue AS Value, 
		decOnOrder AS OnOrder, 
		decOpenQty AS OpenQty, 
		decOpenValue AS OpenValue, 
		intReorderPoint AS ReorderPoint, 
		strAcctSet AS AcctSet, 
		strBinLoc AS BinLoc, 
		dbo.tblInvExt.decMaxLevel AS MaxLevel, 
		dbo.tblInvExt.decMinimumLevel AS MinimumLevel, 
		dbo.tblInvExt.bitInactive AS Inactive, 
		bitDefault AS bitDefault, 
		decManuf AS Manuf, 
		dbo.tblInvExt.dteRowUpdated AS RowUpdated, 
		ROW_NUMBER() OVER(ORDER BY tblInvExt.strPartNumber) AS RowNumber 
	  FROM dbo.tblInvExt (NOLOCK)	 
	  INNER JOIN dbo.tblInv (NOLOCK) ON tblInvExt.strPartNumber = tblInv.strPartNumber
	  WHERE dbo.tblInvExt.bitInactive = 0 AND
		dbo.tblInv.intType in (1 ,4)  AND (dbo.tblInv.bitInactive = 0)   AND (dbo.tblInv.bitWebstoreItem =1)
		AND (ISNULL(@PartNumber, '') = '' OR dbo.tblInvExt.strPartNumber = @PartNumber)
		AND (ISNULL(@LocName, '') = '' OR strLocName = @LocName)
	) 
	SELECT * FROM Paged 
	WHERE RowNumber BETWEEN (@PageNumber -1) * @PageSize + 1 AND @PageNumber * @PageSize 
END
GO

CREATE PROCEDURE [dbo].[GetInvItemTaxFileEditData] 
	@PartNumber AS NVARCHAR(50)
AS
BEGIN
	SELECT  
			bitOverrideTax as IsOverrideTax, 
			strOverridingTaxCode as OverridingTaxCode, 
			bitUseMTV as IsUseMTV, 
			decMinTaxAmount as MinTaxAmount, 
			strAffectedTaxCodes  as AffectedTaxCodes,
			strKenyaItemTaxCode as KenyaItemTaxCode,
			strZambiaItemTaxCode as ZambiaTaxCode
	FROM tblInvItemTax 
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[GetTradeDiscountsMobile] @MatrixType AS VARCHAR(20)
	,@TransactionDate AS SMALLDATETIME
	,@Exclusions AS INT
	,@PartNumber AS VARCHAR(50)
AS
BEGIN
	SELECT CAST(intType AS INT) AS [Type]
		,decValueFrom AS ValueFrom
		,decValueTo AS ValueTo
		,decDiscPerc AS DiscPerc
		,ISNULL(strPartNumber, '') AS PartNumber
		,bitApplyDisc AS ApplyDisc
	FROM tblTradeDiscMatrix
	INNER JOIN tblTradeDiscMatrixTypes ON tblTradeDiscMatrix.strMatrixType = tblTradeDiscMatrixTypes.strMatrixType
	INNER JOIN tblTradeDiscMatrixTypesDT ON tblTradeDiscMatrixTypes.uidMatrixID = tblTradeDiscMatrixTypesDT.uidMatrixID
	WHERE tblTradeDiscMatrix.strMatrixType = @MatrixType
		AND tblTradeDiscMatrixTypes.bitInactive = 0
		AND tblTradeDiscMatrixTypesDT.intType = @Exclusions		
		AND (@TransactionDate BETWEEN tblTradeDiscMatrixTypes.dteStartDate AND tblTradeDiscMatrixTypes.dteFinishDate)
		AND (ISNULL(@PartNumber,'')='' OR tblTradeDiscMatrixTypesDT.strPartNumber = @PartNumber)
END
GO

CREATE PROCEDURE [dbo].[GetFreehandInventoryDataMobile]
(
	@PartNumber AS NVARCHAR(50),
	@BarCode AS NVARCHAR(300),
	@PriceList AS VARCHAR(20),
	@DocDate AS DATETIME
)
AS
BEGIN
	SELECT tblInv.strDesc AS [Desc]
	,tblInv.strStockUnit AS StockUnit
	,ISNull(tblInvPrice.decSelling, 0) AS Selling 
	,tblInv.strPartNumber AS PartNumber
	,CASE bitUseLPPOnPO
		WHEN 0
			THEN decCostOnPO / decBuyToStock
		ELSE decLastPPUnit / decBuyToStock
		END AS Price
	,tblInv.strField1 AS Field1
	,tblInv.strField2 AS Field2
	,tblInv.strField3 AS Field3
	,tblInv.strField4 AS Field4
	,tblInv.strField5 AS Field5
	,tblInv.strField6 AS Field6
	,ISNULL((
			SELECT strVendName
			FROM tblInvVend
			WHERE strPartNumber = @PartNumber
				AND bitPreferred = 1
			), '') AS VendorName
	,ISNULL((
			SELECT decPrice
			FROM tblInvVend
			WHERE strPartNumber = @PartNumber
				AND bitPreferred = 1
			), 0) AS VendorPrice
	,tblInv.bitInactive AS IsInactive
	,tblInv.decDefSaleQty AS DefaultSaleQty
	,ISNULL(tblInv.strExtendedDesc, '') AS ExtendedDesc
	,tblInv.strUnitOfMeasure AS UnitOfMeasure
	,tblInv.decMass AS Mass
	,tblInv.decVolumetricWeight AS VolumetricWeight
	--,ISNULL((
	--		SELECT COUNT(tblInvUpsell.strPartItemNumber)
	--		FROM tblInvUpsell
	--		WHERE tblInvUpsell.strPartNumber = tblInv.strPartNumber
	--		), 0) AS IsUpsellItem
			,CAST((
			SELECT COUNT(tblInvUpsell.strPartItemNumber)
			FROM tblInvUpsell
			WHERE tblInvUpsell.strPartNumber = tblInv.strPartNumber
			) AS BIT) AS IsUpsellItem

			, ISNULL((SELECT strCurrency FROM tblInvVend INNER JOIN tblVendors ON tblInvVend.strVendName = tblVendors.strVendName
			 WHERE strPartNumber = @PartNumber AND bitPreferred = 1),0) AS VendCurrency
		   ,tblInv.intType As [Type] -- Added branch 20190307 changes
FROM tblInv
INNER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
INNER JOIN tblPriceListsByDate ON tblInvPrice.uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
WHERE (
		tblInv.strPartNumber = @PartNumber
		OR tblInv.strBarCode = @BarCode
		OR tblInv.strBarCode2 = @BarCode
		)
	AND (tblInv.intType <> 5)
	AND (tblInvPrice.strPricelist = @PriceList)
	AND (
		CONVERT(DATE,@DocDate) BETWEEN CONVERT(DATE,tblPriceListsByDate.dteStartDate)
			AND CONVERT(DATE,tblPriceListsByDate.dteFinishDate)
		)
END
GO

CREATE PROCEDURE [dbo].[GetSalesPersonsDataCount] (
	@InActive BIT = 0
	,@IsWorkshopTechnician BIT = 0
	,@SearchText AS NVARCHAR(Max) = ''
	)
AS
BEGIN
	IF (@InActive = 0)
	BEGIN
		SELECT Count(*)
		FROM tblSalesPersons
		WHERE bitInactive = @InActive
			AND bitIsWorkshopTechnician = @IsWorkshopTechnician
			AND (ISNULL(strSalesName, '') LIKE '%' + ISNULL(@SearchText, strSalesName) + '%')
	END
	ELSE
	BEGIN
		SELECT Count(*)
		FROM tblSalesPersons
		WHERE bitIsWorkshopTechnician = @IsWorkshopTechnician
			AND (ISNULL(strSalesName, '') LIKE '%' + ISNULL(@SearchText, strSalesName) + '%')
	END
END
GO

CREATE PROCEDURE [dbo].[GetInventoryForSalesPerson]
AS
BEGIN
	SELECT strPartNumber AS PartNumber
		,strDesc AS [Desc]
		,bitExclCommission AS IsExclCommission
		,intType AS [Type]
		,strCategory AS Category
		,bitInactive AS IsInactive
	FROM tblInv
END
GO

CREATE PROCEDURE [dbo].[GetCustomerForSalesPerson]
AS
BEGIN
	SELECT strCustName AS CustomerName
		,strCustDesc AS CustomerDesc
		,strCustCategory AS Category
		,bitExclCommission AS IsExclCommission
		,bitInactive AS IsInactive
	FROM tblCustomers
END
GO

CREATE PROCEDURE [dbo].[GetTradeDiscountInv](
@MatrixId AS uniqueIdentifier
,@Type as Tinyint)
AS
BEGIN
	SELECT DTL.intType AS [Type]
		,DTL.decValueFrom AS ValueFrom
		,DTL.decValueTo AS ValueTo
		,DTL.decDiscPerc AS DiscPerc
		,ISNULL(DTL.strPartNumber, '') AS PartNumber
		,ISNULL(INV.strDesc, '') AS [Desc]
		,ISNULL(INV.intType, 0) AS TypeInv
		,CASE ISNULL(INV.intType, 0)
			WHEN 1
				THEN 'INVENTORY'
			WHEN 4
				THEN 'SERVICES'
			WHEN 5
				THEN 'JOURNAL'
			ELSE 'UNKNOWN'
			END AS TypeValue
		,CASE ISNULL(intLineNo, 0)
			WHEN 0
				THEN Cast(1 AS BIT)
			ELSE Cast(0 AS BIT)
			END AS [Select]
		,ISNULL(INV.strCategory, '') AS Category
		,ISNULL(INV.bitInactive, 0) AS Inactive
		,intLineNo AS [LineNo]
		,uidMatrixID AS MatrixID
		,ISNULL(inv.strPartNumber, '') AS PartNumberInv
	FROM tblTradeDiscMatrixTypesDT AS DTL
	LEFT JOIN tblInv AS INV ON DTL.strPartNumber = INV.strPartNumber 
	where uidMatrixID = @MatrixId  and DTL.intType = @Type
	order by DTL.intType, DTL.intLineNo

END
GO

CREATE PROCEDURE [dbo].[GetTradeDiscountInventroy]
AS
BEGIN
	SELECT strPartNumber AS PartNumber
		,strDesc AS [Desc]
		,intType AS [Type]
		,CASE ISNULL(intType, 0)
			WHEN 1
				THEN 'INVENTORY'
			WHEN 4
				THEN 'SERVICES'
			WHEN 5
				THEN 'JOURNAL'
			ELSE 'UNKNOWN'
			END AS TypeValue
		
		,strCategory AS Category
		,bitInactive AS Inactive
	
	FROM tblInv order by PartNumber
END
GO

CREATE PROCEDURE GetInventoryImageCount
AS
BEGIN
	SELECT strPartNumber
	FROM tblinvimg
END
GO

CREATE PROCEDURE [dbo].[DeleteTradeDiscMatrix] (@MatrixType NVARCHAR(40))
AS
BEGIN

DELETE
	FROM tblTradeDiscTracking
	WHERE strMatrixType = @MatrixType

	DELETE
	FROM tblTradeDiscMatrixTypes
	WHERE strMatrixType = @MatrixType

	DELETE
	FROM tblTradeDiscMatrix
	WHERE strMatrixType = @MatrixType
END
GO

CREATE PROCEDURE [dbo].[AddUpdateInvWorkCentre] @strInvWCCode AS NVARCHAR(100)
	,@strDesc AS NVARCHAR(100)
	,@bitInactive AS BIT
	,@IsEdit AS BIT
	,@strOldInvWCCode AS NVARCHAR(100)
AS
BEGIN
	IF (@IsEdit = 0)
	BEGIN
		INSERT INTO [tblInvWorkCentre] (
			strInvWCCode
			,strDesc
			,bitInactive
			)
		VALUES (
			@strInvWCCode
			,@strDesc
			,@bitInactive
			)
	END
	ELSE IF (@IsEdit = 1)
	BEGIN
		UPDATE [tblInvWorkCentre]
		SET strDesc = @strDesc
			,bitInactive = @bitInactive
			,strInvWCCode = @strInvWCCode
		FROM tblInvWorkCentre
		WHERE tblInvWorkCentre.strInvWCCode = @strOldInvWCCode
	END
END
GO

CREATE PROCEDURE [dbo].[GetInvAllList]
AS
BEGIN
	SELECT strPartNumber AS [PartNumber]
		,decSumValue AS SumValue
		,intType AS [Type]
	FROM tblInv
END
GO


CREATE PROCEDURE [dbo].[GetAccountsAllList]
AS
BEGIN
	SELECT intGLNumber AS GLNumber
		,intAccType AS AccType
		,decBalance AS [Balance]
		,bitLinkCEarnings AS LinkCEarnings
		,bitLinkAR AS LinkAR
		,bitLinkDeposit AS LinkDeposit
		,bitLinkAP AS LinkAP
		,bitLinkPrePay AS LinkPrePay
		,decLYOpenBalance AS LYOpenBalance
		,strDesc AS [Description]
		,bitLinkREarnings AS LinkREarnings
		,bitLinkPurDisc AS LinkPurDisc
		,bitLinkSalesDisc AS LinkSalesDisc
		,bitLinkAssCosts AS LinkAssCosts
		,bitLinkAdjWriteOff AS LinkAdjWriteOff
		,bitDefBank AS DefBank
		,bitLinkExc AS LinkExc
		,bitLinkGRV AS LinkGRV
		,bitLinkAddCost AS LinkAddCost
		,bitLinkDelAdvice AS LinkDelAdvice
		,bitLinkWIP AS LinkWIP
		,bitLinkManStandardCost AS LinkManStandardCost
		,bitLinkWorkshopWIP AS IsLinkWorkshopWIP
		,bitLinkGoodsInTransit AS IsGoodsInTransit
	FROM tblAccounts
END
GO

CREATE PROCEDURE [dbo].[GetTaxesLoadQuery_3] @IsCheckedShowAnllocated AS BIT  
 ,@SQStart AS DATE  
 ,@SQFinish AS DATE  
 ,@SQDisplayNames AS BIT  
AS  
BEGIN  
 CREATE TABLE #TempTAX (  
  [lngID] [int] IDENTITY(1, 1)  
  ,[intType] [int] NOT NULL  
  ,[dteJournalDate] [smalldatetime] NOT NULL  
  ,[strDocNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL  
  ,[strVendCustName] [nvarchar](MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL  
  ,[decAmount] [money] NOT NULL  
  ,[decVAT] [money] NOT NULL  
  ,[decTotal] [money] NOT NULL  
  ,[intModule] [tinyint] NOT NULL  
  ,[strVendCustVatNo] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL  
  ,[strVendCustDesc] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL  
  )  
  
 IF @IsCheckedShowAnllocated = 0  
 BEGIN  
  INSERT INTO #TempTAX (  
   [intType]  
   ,[dteJournalDate]  
   ,[strDocNumber]  
   ,[strVendCustName]  
   ,[decAmount]  
   ,[decVAT]  
   ,[decTotal]  
   ,[intModule]  
   ,[strVendCustVatNo]  
   )  
  SELECT CAST(tblTax.intType AS INT) AS intType  
   ,tblTax.dteJournalDate  
   ,tblTax.strDocNumber  
   ,REPLACE(tblTax.strVendCustName, ',', ';') AS strDocNumbers  
   ,decAmount AS decAmtSubTax  
   ,decVAT AS decTaxAmt  
   ,decTotal AS decTotOthTax  
   ,tblTax.intModule  
   ,ISNULL(CASE tblTax.intModule  
     WHEN 1  
      THEN (  
        SELECT strVAT  
        FROM dbo.tblVendors  
        WHERE strVendName = tbltax.strVendCustName  
        )  
     ELSE (  
       SELECT strVAT  
       FROM dbo.tblCustomers  
       WHERE strCustName = tbltax.strVendCustName  
       )  
     END, '') AS strVendCustVatNo  
  FROM tblTax  
  LEFT JOIN tblTaxAllocations ON tblTax.lngTaxID = tblTaxAllocations.lngTaxID  
  WHERE (  
    dteJournalDate >= @SQStart  
    AND dteJournalDate <= @SQFinish  
    )  
   AND (  
    tblTax.decAmount != 0  
    OR tblTax.decTotal != 0  
    )  
  ORDER BY tblTax.intType  
   ,tblTax.dteJournalDate  
 END  
 ELSE  
 BEGIN  
  INSERT INTO #TempTAX (  
   [intType]  
   ,[dteJournalDate]  
   ,[strDocNumber]  
   ,[strVendCustName]  
   ,[decAmount]  
   ,[decVAT]  
   ,[decTotal]  
   ,[intModule]  
   ,[strVendCustVatNo]  
   )  
  SELECT CAST(tblTax.intType AS INT) AS intType  
   ,tblTax.dteJournalDate  
   ,tblTax.strDocNumber  
   ,REPLACE(tblTax.strVendCustName, ',', ';') AS strDocNumbers  
   ,decAmount AS decAmtSubTax  
   ,decVAT AS decTaxAmt  
   ,decTotal AS decTotOthTax  
   ,tblTax.intModule  
   ,ISNULL(CASE tblTax.intModule  
     WHEN 1  
      THEN (  
        SELECT strVAT  
        FROM dbo.tblVendors  
        WHERE strVendName = tbltax.strVendCustName  
        )  
     ELSE (  
       SELECT strVAT  
       FROM dbo.tblCustomers  
       WHERE strCustName = tbltax.strVendCustName  
       )  
     END, '') AS strVendCustVatNo  
  FROM tblTax  
  LEFT JOIN tblTaxAllocations ON tblTax.lngTaxID = tblTaxAllocations.lngTaxID  
  WHERE (  
    dteJournalDate >= @SQStart  
    AND dteJournalDate <= @SQFinish  
    )  
   AND (  
    tblTax.decAmount != 0  
    OR tblTax.decTotal != 0  
    )  
   AND (  
    tblTax.decVAT <> 0  
    AND ISNULL(tblTaxAllocations.decUnAllocatedAmt, - 1) <> 0  
    )  
  ORDER BY tblTax.intType  
   ,tblTax.dteJournalDate  
 END  
  
 IF @SQDisplayNames = 1  
 BEGIN  
  UPDATE #TempTAX  
  SET strVendCustDesc = VEND.strVendDesc  
  FROM (  
   SELECT strVendName  
    ,strVendDesc  
   FROM tblVendors  
   ) VEND  
  WHERE #TempTAX.strVendCustName = VEND.strVendName  
   AND intModule IN (  
    1  
    ,3  
    ,4  
    )  
  
  UPDATE #TempTAX  
  SET strVendCustDesc = CUST.strCustDesc  
  FROM (  
   SELECT strCustName  
    ,strCustDesc  
   FROM tblCustomers  
   ) CUST  
  WHERE #TempTAX.strVendCustName = CUST.strCustName  
   AND intModule IN (  
    2  
    ,5  
    )  
 END  
  
 SELECT intType  
  ,dteJournalDate  
  ,strDocNumber  
  ,strVendCustName + CASE   
   WHEN strVendCustDesc IS NULL  
    THEN ''  
   ELSE ' - ' + strVendCustDesc  
   END AS strDocNumbers  
  ,decAmount AS decAmtSubTax  
  ,decVAT AS decTaxAmt  
  ,decTotal AS decTotOthTax  
  ,intModule  
  ,strVendCustVatNo  
 FROM #TempTAX  
 ORDER BY lngID  
  
 DROP TABLE #TempTAX  
END  
GO

CREATE PROCEDURE [GAdjHist] 
@SQGRVDate DateTime
AS
BEGIN
  SELECT uidYearID FROM tblAcctHist WHERE @SQGRVDate BETWEEN dteYearStart AND dteYearEnd
END
GO

-----------------------------------------------
CREATE PROCEDURE [dbo].[GetRptJournalData] (
	@Year AS NVARCHAR(40)
	,@JournalDate AS DATETIME = NULL
	,@JournalDate2 AS DATETIME = NULL
	,@IsEntryDate AS BIT
	,@GuidYear AS UNIQUEIDENTIFIER
	,@JournalID AS INT
	)
AS
BEGIN
	IF (@Year = 'Current')
	BEGIN
		IF (
				@JournalDate2 IS NOT NULL
				AND @JournalDate IS NOT NULL
				)
		BEGIN
			IF (@IsEntryDate = 1)
			BEGIN
				SELECT tblJournal.dteJournalDate
					,tblJournal.lngJourID
					,(
						CASE 
							WHEN tblJournal.strSource = 'Stock Count'
								THEN (
										CASE 
											WHEN (
													SELECT COUNT(strAdjDocID)
													FROM tblInvAdjDoc
													INNER JOIN tblJournal ON tblInvAdjDoc.lngJourID = tblJournal.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
													WHERE tblJournal.lngJourID = @JournalID
													) = 0
												THEN tblJournal.strSource
											ELSE (
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournal.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournal ON tblInvAdjDoc.lngJourID = tblJournal.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
													WHERE tblJournal.lngJourID = @JournalID
													)
											END
										)
							ELSE strSource
							END
						) AS strSource
					,tblJournalEnt.strComment
					,tblJournalEnt.intGLNumber
					,tblAccounts.strDesc
					,tblJournalEnt.decDebits
					,tblJournalEnt.decCredits
					,tblJournal.intModule
					,tblJournal.intEntryType
					,tblJournalEnt.strFormula
				FROM tblAccounts
				INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber
				INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
				WHERE tblJournal.lngJourID = @JournalID
					AND (
						tblJournal.dteSystemDate BETWEEN @JournalDate
							AND @JournalDate2
						)
				ORDER BY tblJournal.lngJourID
					,tblJournalEnt.intGLNumber
			END
			ELSE
			BEGIN
				SELECT tblJournal.dteJournalDate
					,tblJournal.lngJourID
					,(
						CASE 
							WHEN tblJournal.strSource = 'Stock Count'
								THEN (
										CASE 
											WHEN (
													SELECT COUNT(strAdjDocID)
													FROM tblInvAdjDoc
													INNER JOIN tblJournal ON tblInvAdjDoc.lngJourID = tblJournal.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
													WHERE tblJournal.lngJourID = @JournalID
														AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
													) = 0
												THEN tblJournal.strSource
											ELSE (
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournal.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournal ON tblInvAdjDoc.lngJourID = tblJournal.lngJourID
													WHERE tblJournal.lngJourID = @JournalID
													)
											END
										)
							ELSE strSource
							END
						) AS strSource
					,tblJournalEnt.strComment
					,tblJournalEnt.intGLNumber
					,tblAccounts.strDesc
					,tblJournalEnt.decDebits
					,tblJournalEnt.decCredits
					,tblJournal.intModule
					,tblJournal.intEntryType
					,tblJournalEnt.strFormula
				FROM tblAccounts
				INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber
				INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
				WHERE tblJournal.lngJourID = @JournalID
					AND (
						tblJournal.dteJournalDate BETWEEN @JournalDate
							AND @JournalDate2
						)
				ORDER BY tblJournal.lngJourID
					,tblJournalEnt.intGLNumber
			END
		END
		ELSE IF (
				@JournalDate2 IS NULL
				AND @JournalDate IS NOT NULL
				)
		BEGIN
			IF (@IsEntryDate = 1)
			BEGIN
				SELECT tblJournal.dteJournalDate
					,tblJournal.lngJourID
					,(
						CASE 
							WHEN tblJournal.strSource = 'Stock Count'
								THEN (
										CASE 
											WHEN (
													SELECT COUNT(strAdjDocID)
													FROM tblInvAdjDoc
													INNER JOIN tblJournal ON tblInvAdjDoc.lngJourID = tblJournal.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
													WHERE tblJournal.lngJourID = @JournalID
														AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
													) = 0
												THEN tblJournal.strSource
											ELSE (
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournal.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournal ON tblInvAdjDoc.lngJourID = tblJournal.lngJourID
													WHERE tblJournal.lngJourID = @JournalID
													)
											END
										)
							ELSE strSource
							END
						) AS strSource
					,tblJournalEnt.strComment
					,tblJournalEnt.intGLNumber
					,tblAccounts.strDesc
					,tblJournalEnt.decDebits
					,tblJournalEnt.decCredits
					,tblJournal.intModule
					,tblJournal.intEntryType
					,tblJournalEnt.strFormula
				FROM tblAccounts
				INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber
				INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
				WHERE tblJournal.lngJourID = @JournalID
					AND (tblJournal.dteSystemDate <= @JournalDate)
				ORDER BY tblJournal.lngJourID
					,tblJournalEnt.intGLNumber
			END
			ELSE
			BEGIN
				SELECT tblJournal.dteJournalDate
					,tblJournal.lngJourID
					,(
						CASE 
							WHEN tblJournal.strSource = 'Stock Count'
								THEN (
										CASE 
											WHEN (
													SELECT COUNT(strAdjDocID)
													FROM tblInvAdjDoc
													INNER JOIN tblJournal ON tblInvAdjDoc.lngJourID = tblJournal.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
													WHERE tblJournal.lngJourID = @JournalID
														AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
													) = 0
												THEN tblJournal.strSource
											ELSE (
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournal.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournal ON tblInvAdjDoc.lngJourID = tblJournal.lngJourID
													WHERE tblJournal.lngJourID = @JournalID
													)
											END
										)
							ELSE strSource
							END
						) AS strSource
					,tblJournalEnt.strComment
					,tblJournalEnt.intGLNumber
					,tblAccounts.strDesc
					,tblJournalEnt.decDebits
					,tblJournalEnt.decCredits
					,tblJournal.intModule
					,tblJournal.intEntryType
					,tblJournalEnt.strFormula
				FROM tblAccounts
				INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber
				INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
				WHERE tblJournal.lngJourID = @JournalID
					AND (tblJournal.dteJournalDate <= @JournalDate)
				ORDER BY tblJournal.lngJourID
					,tblJournalEnt.intGLNumber
			END
		END
		ELSE IF (
				@JournalDate2 IS NULL
				AND @JournalDate IS NULL
				)
		BEGIN
			IF (@IsEntryDate = 1)
			BEGIN
				SELECT tblJournal.dteJournalDate
					,tblJournal.lngJourID
					,(
						CASE 
							WHEN tblJournal.strSource = 'Stock Count'
								THEN (
										CASE 
											WHEN (
													SELECT COUNT(strAdjDocID)
													FROM tblInvAdjDoc
													INNER JOIN tblJournal ON tblInvAdjDoc.lngJourID = tblJournal.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
													WHERE tblJournal.lngJourID = @JournalID
														AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
													) = 0
												THEN tblJournal.strSource
											ELSE (
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournal.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournal ON tblInvAdjDoc.lngJourID = tblJournal.lngJourID
													WHERE tblJournal.lngJourID = @JournalID
													)
											END
										)
							ELSE strSource
							END
						) AS strSource
					,tblJournalEnt.strComment
					,tblJournalEnt.intGLNumber
					,tblAccounts.strDesc
					,tblJournalEnt.decDebits
					,tblJournalEnt.decCredits
					,tblJournal.intModule
					,tblJournal.intEntryType
					,tblJournalEnt.strFormula
				FROM tblAccounts
				INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber
				INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
				WHERE tblJournal.lngJourID = @JournalID
				ORDER BY tblJournal.lngJourID
					,tblJournalEnt.intGLNumber
			END
			ELSE
			BEGIN
				SELECT tblJournal.dteJournalDate
					,tblJournal.lngJourID
					,(
						CASE 
							WHEN tblJournal.strSource = 'Stock Count'
								THEN (
										CASE 
											WHEN (
													SELECT COUNT(strAdjDocID)
													FROM tblInvAdjDoc
													INNER JOIN tblJournal ON tblInvAdjDoc.lngJourID = tblJournal.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
													WHERE tblJournal.lngJourID = @JournalID
														AND tblInvAdjDoc.dteJournalDate = tblJournal.dteJournalDate
													) = 0
												THEN tblJournal.strSource
											ELSE (
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournal.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournal ON tblInvAdjDoc.lngJourID = tblJournal.lngJourID
													WHERE tblJournal.lngJourID = @JournalID
													)
											END
										)
							ELSE strSource
							END
						) AS strSource
					,tblJournalEnt.strComment
					,tblJournalEnt.intGLNumber
					,tblAccounts.strDesc
					,tblJournalEnt.decDebits
					,tblJournalEnt.decCredits
					,tblJournal.intModule
					,tblJournal.intEntryType
					,tblJournalEnt.strFormula
				FROM tblAccounts
				INNER JOIN tblJournalEnt ON tblAccounts.intGLNumber = tblJournalEnt.intGLNumber
				INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
				WHERE tblJournal.lngJourID = @JournalID
				ORDER BY tblJournal.lngJourID
					,tblJournalEnt.intGLNumber
			END
		END
	END
	ELSE IF (@Year = 'Previous')
	BEGIN
		IF (
				@JournalDate2 IS NOT NULL
				AND @JournalDate IS NOT NULL
				)
		BEGIN
			IF (@IsEntryDate = 1)
			BEGIN
				SELECT tblJournalLY.dteJournalDate
					,tblJournalLY.lngJourID
					,(
						CASE 
							WHEN tblJournalLY.strSource = 'Stock Count'
								THEN (
										CASE 
											WHEN (
													SELECT COUNT(strAdjDocID)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalLY ON tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate
													WHERE tblJournalLY.lngJourID = @JournalID
													) = 0
												THEN tblJournalLY.strSource
											ELSE (
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournalLY.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalLY ON tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate
													WHERE tblJournalLY.lngJourID = @JournalID
													)
											END
										)
							ELSE strSource
							END
						) AS strSource
					,tblJournalEntLY.strComment
					,tblJournalEntLY.intGLNumber
					,tblAccountsLY.strDesc
					,tblJournalEntLY.decDebits
					,tblJournalEntLY.decCredits
					,tblJournalLY.intModule
					,tblJournalLY.intEntryType
					,tblJournalEntLY.strFormula
				FROM tblAccountsLY
				INNER JOIN tblJournalEntLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber
				INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
				WHERE tblJournalLY.lngJourID = @JournalID
					AND (
						tblJournalLY.dteSystemDate BETWEEN @JournalDate
							AND @JournalDate2
						)
				ORDER BY tblJournalLY.lngJourID
					,tblJournalEntLY.intGLNumber
			END
			ELSE
			BEGIN
				SELECT tblJournalLY.dteJournalDate
					,tblJournalLY.lngJourID
					,(
						CASE 
							WHEN tblJournalLY.strSource = 'Stock Count'
								THEN (
										CASE 
											WHEN (
													SELECT COUNT(strAdjDocID)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalLY ON tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate
													WHERE tblJournalLY.lngJourID = @JournalID
													) = 0
												THEN tblJournalLY.strSource
											ELSE (
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournalLY.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalLY ON tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate
													WHERE tblJournalLY.lngJourID = @JournalID
													)
											END
										)
							ELSE strSource
							END
						) AS strSource
					,tblJournalEntLY.strComment
					,tblJournalEntLY.intGLNumber
					,tblAccountsLY.strDesc
					,tblJournalEntLY.decDebits
					,tblJournalEntLY.decCredits
					,tblJournalLY.intModule
					,tblJournalLY.intEntryType
					,tblJournalEntLY.strFormula
				FROM tblAccountsLY
				INNER JOIN tblJournalEntLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber
				INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
				WHERE tblJournalLY.lngJourID = @JournalID
					AND (
						tblJournalLY.dteJournalDate BETWEEN @JournalDate
							AND @JournalDate2
						)
				ORDER BY tblJournalLY.lngJourID
					,tblJournalEntLY.intGLNumber
			END
		END
		ELSE IF (
				@JournalDate2 IS NULL
				AND @JournalDate IS NOT NULL
				)
		BEGIN
			IF (@IsEntryDate = 1)
			BEGIN
				SELECT tblJournalLY.dteJournalDate
					,tblJournalLY.lngJourID
					,(
						CASE 
							WHEN tblJournalLY.strSource = 'Stock Count'
								THEN (
										CASE 
											WHEN (
													SELECT COUNT(strAdjDocID)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalLY ON tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate
													WHERE tblJournalLY.lngJourID = @JournalID
													) = 0
												THEN tblJournalLY.strSource
											ELSE (
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournalLY.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalLY ON tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate
													WHERE tblJournalLY.lngJourID = @JournalID
													)
											END
										)
							ELSE strSource
							END
						) AS strSource
					,tblJournalEntLY.strComment
					,tblJournalEntLY.intGLNumber
					,tblAccountsLY.strDesc
					,tblJournalEntLY.decDebits
					,tblJournalEntLY.decCredits
					,tblJournalLY.intModule
					,tblJournalLY.intEntryType
					,tblJournalEntLY.strFormula
				FROM tblAccountsLY
				INNER JOIN tblJournalEntLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber
				INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
				WHERE tblJournalLY.lngJourID = @JournalID
					AND (tblJournalLY.dteSystemDate <= @JournalDate)
				ORDER BY tblJournalLY.lngJourID
					,tblJournalEntLY.intGLNumber
			END
			ELSE
			BEGIN
				SELECT tblJournalLY.dteJournalDate
					,tblJournalLY.lngJourID
					,(
						CASE 
							WHEN tblJournalLY.strSource = 'Stock Count'
								THEN (
										CASE 
											WHEN (
													SELECT COUNT(strAdjDocID)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalLY ON tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate
													WHERE tblJournalLY.lngJourID = @JournalID
													) = 0
												THEN tblJournalLY.strSource
											ELSE (
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournalLY.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalLY ON tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate
													WHERE tblJournalLY.lngJourID = @JournalID
													)
											END
										)
							ELSE strSource
							END
						) AS strSource
					,tblJournalEntLY.strComment
					,tblJournalEntLY.intGLNumber
					,tblAccountsLY.strDesc
					,tblJournalEntLY.decDebits
					,tblJournalEntLY.decCredits
					,tblJournalLY.intModule
					,tblJournalLY.intEntryType
					,tblJournalEntLY.strFormula
				FROM tblAccountsLY
				INNER JOIN tblJournalEntLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber
				INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
				WHERE tblJournalLY.lngJourID = @JournalID
					AND (tblJournalLY.dteJournalDate <= @JournalDate)
				ORDER BY tblJournalLY.lngJourID
					,tblJournalEntLY.intGLNumber
			END
		END
		ELSE IF (
				@JournalDate2 IS NULL
				AND @JournalDate IS NULL
				)
		BEGIN
			IF (@IsEntryDate = 1)
			BEGIN
				SELECT tblJournalLY.dteJournalDate
					,tblJournalLY.lngJourID
					,(
						CASE 
							WHEN tblJournalLY.strSource = 'Stock Count'
								THEN (
										CASE 
											WHEN (
													SELECT COUNT(strAdjDocID)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalLY ON tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate
													WHERE tblJournalLY.lngJourID = @JournalID
													) = 0
												THEN tblJournalLY.strSource
											ELSE (
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournalLY.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalLY ON tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate
													WHERE tblJournalLY.lngJourID = @JournalID
													)
											END
										)
							ELSE strSource
							END
						) AS strSource
					,tblJournalEntLY.strComment
					,tblJournalEntLY.intGLNumber
					,tblAccountsLY.strDesc
					,tblJournalEntLY.decDebits
					,tblJournalEntLY.decCredits
					,tblJournalLY.intModule
					,tblJournalLY.intEntryType
					,tblJournalEntLY.strFormula
				FROM tblAccountsLY
				INNER JOIN tblJournalEntLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber
				INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
				WHERE tblJournalLY.lngJourID = @JournalID
				ORDER BY tblJournalLY.lngJourID
					,tblJournalEntLY.intGLNumber
			END
			ELSE
			BEGIN
				SELECT tblJournalLY.dteJournalDate
					,tblJournalLY.lngJourID
					,(
						CASE 
							WHEN tblJournalLY.strSource = 'Stock Count'
								THEN (
										CASE 
											WHEN (
													SELECT COUNT(strAdjDocID)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalLY ON tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate
													WHERE tblJournalLY.lngJourID = @JournalID
													) = 0
												THEN tblJournalLY.strSource
											ELSE (
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournalLY.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalLY ON tblInvAdjDoc.lngJourID = tblJournalLY.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalLY.dteJournalDate
													WHERE tblJournalLY.lngJourID = @JournalID
													)
											END
										)
							ELSE strSource
							END
						) AS strSource
					,tblJournalEntLY.strComment
					,tblJournalEntLY.intGLNumber
					,tblAccountsLY.strDesc
					,tblJournalEntLY.decDebits
					,tblJournalEntLY.decCredits
					,tblJournalLY.intModule
					,tblJournalLY.intEntryType
					,tblJournalEntLY.strFormula
				FROM tblAccountsLY
				INNER JOIN tblJournalEntLY ON tblAccountsLY.intGLNumber = tblJournalEntLY.intGLNumber
				INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
				WHERE tblJournalLY.lngJourID = @JournalID
				ORDER BY tblJournalLY.lngJourID
					,tblJournalEntLY.intGLNumber
			END
		END
	END
	ELSE IF (@Year = 'History')
	BEGIN
		IF (
				@JournalDate2 IS NOT NULL
				AND @JournalDate IS NOT NULL
				)
		BEGIN
			IF (@IsEntryDate = 1)
			BEGIN
				SELECT tblJournalHist.dteJournalDate
					,tblJournalHist.lngJourID
					,(
						CASE 
							WHEN tblJournalHist.strSource = 'Stock Count'
								THEN (
										CASE 
											WHEN (
													SELECT COUNT(strAdjDocID)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalHist ON tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate
													WHERE tblJournalHist.lngJourID = @JournalID
													) = 0
												THEN tblJournalHist.strSource
											ELSE (
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournalHist.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalHist ON tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate
													WHERE tblJournalHist.lngJourID = @JournalID
													)
											END
										)
							ELSE strSource
							END
						) AS strSource
					,tblJournalEntHist.strComment
					,tblJournalEntHist.intGLNumber
					,tblAccountsHist.strDesc
					,tblJournalEntHist.decDebits
					,tblJournalEntHist.decCredits
					,tblJournalHist.intModule
					,tblJournalHist.intEntryType
					,tblJournalEntHist.strFormula
				FROM tblAccountsHist
				INNER JOIN tblJournalEntHist ON tblAccountsHist.intGLNumber = tblJournalEntHist.intGLNumber
					AND tblAccountsHist.uidYearID = tblJournalEntHist.uidYearID
				INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID
					AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID
				WHERE tblJournalHist.lngJourID = @JournalID
					AND tblAccountsHist.uidYearID = @GuidYear
					AND (
						tblJournalHist.dteSystemDate BETWEEN @JournalDate
							AND @JournalDate2
						)
				ORDER BY tblJournalHist.lngJourID
					,tblJournalEntHist.intGLNumber
			END
			ELSE
			BEGIN
				SELECT tblJournalHist.dteJournalDate
					,tblJournalHist.lngJourID
					,(
						CASE 
							WHEN tblJournalHist.strSource = 'Stock Count'
								THEN (
										CASE 
											WHEN (
													SELECT COUNT(strAdjDocID)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalHist ON tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate
													WHERE tblJournalHist.lngJourID = @JournalID
													) = 0
												THEN tblJournalHist.strSource
											ELSE (
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournalHist.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalHist ON tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate
													WHERE tblJournalHist.lngJourID = @JournalID
													)
											END
										)
							ELSE strSource
							END
						) AS strSource
					,tblJournalEntHist.strComment
					,tblJournalEntHist.intGLNumber
					,tblAccountsHist.strDesc
					,tblJournalEntHist.decDebits
					,tblJournalEntHist.decCredits
					,tblJournalHist.intModule
					,tblJournalHist.intEntryType
					,tblJournalEntHist.strFormula
				FROM tblAccountsHist
				INNER JOIN tblJournalEntHist ON tblAccountsHist.intGLNumber = tblJournalEntHist.intGLNumber
					AND tblAccountsHist.uidYearID = tblJournalEntHist.uidYearID
				INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID
					AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID
				WHERE tblJournalHist.lngJourID = @JournalID
					AND tblAccountsHist.uidYearID = @GuidYear
					AND (
						tblJournalHist.dteJournalDate BETWEEN @JournalDate
							AND @JournalDate2
						)
				ORDER BY tblJournalHist.lngJourID
					,tblJournalEntHist.intGLNumber
			END
		END
		ELSE IF (
				@JournalDate2 IS NULL
				AND @JournalDate IS NOT NULL
				)
		BEGIN
			IF (@IsEntryDate = 1)
			BEGIN
				SELECT tblJournalHist.dteJournalDate
					,tblJournalHist.lngJourID
					,(
						CASE 
							WHEN tblJournalHist.strSource = 'Stock Count'
								THEN (
										CASE 
											WHEN (
													SELECT COUNT(strAdjDocID)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalHist ON tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate
													WHERE tblJournalHist.lngJourID = @JournalID
													) = 0
												THEN tblJournalHist.strSource
											ELSE (
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournalHist.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalHist ON tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate
													WHERE tblJournalHist.lngJourID = @JournalID
													)
											END
										)
							ELSE strSource
							END
						) AS strSource
					,tblJournalEntHist.strComment
					,tblJournalEntHist.intGLNumber
					,tblAccountsHist.strDesc
					,tblJournalEntHist.decDebits
					,tblJournalEntHist.decCredits
					,tblJournalHist.intModule
					,tblJournalHist.intEntryType
					,tblJournalEntHist.strFormula
				FROM tblAccountsHist
				INNER JOIN tblJournalEntHist ON tblAccountsHist.intGLNumber = tblJournalEntHist.intGLNumber
					AND tblAccountsHist.uidYearID = tblJournalEntHist.uidYearID
				INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID
					AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID
				WHERE tblJournalHist.lngJourID = @JournalID
					AND tblAccountsHist.uidYearID = @GuidYear
					AND (tblJournalHist.dteSystemDate <= @JournalDate)
				ORDER BY tblJournalHist.lngJourID
					,tblJournalEntHist.intGLNumber
			END
			ELSE
			BEGIN
				SELECT tblJournalHist.dteJournalDate
					,tblJournalHist.lngJourID
					,(
						CASE 
							WHEN tblJournalHist.strSource = 'Stock Count'
								THEN (
										CASE 
											WHEN (
													SELECT COUNT(strAdjDocID)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalHist ON tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate
													WHERE tblJournalHist.lngJourID = @JournalID
													) = 0
												THEN tblJournalHist.strSource
											ELSE (
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournalHist.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalHist ON tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate
													WHERE tblJournalHist.lngJourID = @JournalID
													)
											END
										)
							ELSE strSource
							END
						) AS strSource
					,tblJournalEntHist.strComment
					,tblJournalEntHist.intGLNumber
					,tblAccountsHist.strDesc
					,tblJournalEntHist.decDebits
					,tblJournalEntHist.decCredits
					,tblJournalHist.intModule
					,tblJournalHist.intEntryType
					,tblJournalEntHist.strFormula
				FROM tblAccountsHist
				INNER JOIN tblJournalEntHist ON tblAccountsHist.intGLNumber = tblJournalEntHist.intGLNumber
					AND tblAccountsHist.uidYearID = tblJournalEntHist.uidYearID
				INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID
					AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID
				WHERE tblJournalHist.lngJourID = @JournalID
					AND tblAccountsHist.uidYearID = @GuidYear
					AND (tblJournalHist.dteJournalDate <= @JournalDate)
				ORDER BY tblJournalHist.lngJourID
					,tblJournalEntHist.intGLNumber
			END
		END
		ELSE IF (
				@JournalDate2 IS NULL
				AND @JournalDate IS NULL
				)
		BEGIN
			IF (@IsEntryDate = 1)
			BEGIN
				SELECT tblJournalHist.dteJournalDate
					,tblJournalHist.lngJourID
					,(
						CASE 
							WHEN tblJournalHist.strSource = 'Stock Count'
								THEN (
										CASE 
											WHEN (
													SELECT COUNT(strAdjDocID)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalHist ON tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate
													WHERE tblJournalHist.lngJourID = @JournalID
													) = 0
												THEN tblJournalHist.strSource
											ELSE (
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournalHist.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalHist ON tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate
													WHERE tblJournalHist.lngJourID = @JournalID
													)
											END
										)
							ELSE strSource
							END
						) AS strSource
					,tblJournalEntHist.strComment
					,tblJournalEntHist.intGLNumber
					,tblAccountsHist.strDesc
					,tblJournalEntHist.decDebits
					,tblJournalEntHist.decCredits
					,tblJournalHist.intModule
					,tblJournalHist.intEntryType
					,tblJournalEntHist.strFormula
				FROM tblAccountsHist
				INNER JOIN tblJournalEntHist ON tblAccountsHist.intGLNumber = tblJournalEntHist.intGLNumber
					AND tblAccountsHist.uidYearID = tblJournalEntHist.uidYearID
				INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID
					AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID
				WHERE tblJournalHist.lngJourID = @JournalID
					AND tblAccountsHist.uidYearID = @GuidYear
				ORDER BY tblJournalHist.lngJourID
					,tblJournalEntHist.intGLNumber
			END
			ELSE
			BEGIN
				SELECT tblJournalHist.dteJournalDate
					,tblJournalHist.lngJourID
					,(
						CASE 
							WHEN tblJournalHist.strSource = 'Stock Count'
								THEN (
										CASE 
											WHEN (
													SELECT COUNT(strAdjDocID)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalHist ON tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate
													WHERE tblJournalHist.lngJourID = @JournalID
													) = 0
												THEN tblJournalHist.strSource
											ELSE (
													SELECT ISNULL(CONCAT (
																'SC/'
																,strAdjDocID
																), tblJournalHist.strSource)
													FROM tblInvAdjDoc
													INNER JOIN tblJournalHist ON tblInvAdjDoc.lngJourID = tblJournalHist.lngJourID
														AND tblInvAdjDoc.dteJournalDate = tblJournalHist.dteJournalDate
													WHERE tblJournalHist.lngJourID = @JournalID
													)
											END
										)
							ELSE strSource
							END
						) AS strSource
					,tblJournalEntHist.strComment
					,tblJournalEntHist.intGLNumber
					,tblAccountsHist.strDesc
					,tblJournalEntHist.decDebits
					,tblJournalEntHist.decCredits
					,tblJournalHist.intModule
					,tblJournalHist.intEntryType
					,tblJournalEntHist.strFormula
				FROM tblAccountsHist
				INNER JOIN tblJournalEntHist ON tblAccountsHist.intGLNumber = tblJournalEntHist.intGLNumber
					AND tblAccountsHist.uidYearID = tblJournalEntHist.uidYearID
				INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID
					AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID
				WHERE tblJournalHist.lngJourID = @JournalID
					AND tblAccountsHist.uidYearID = @GuidYear
				ORDER BY tblJournalHist.lngJourID
					,tblJournalEntHist.intGLNumber
			END
		END
	END
END
GO

------------------------------------------------
CREATE PROCEDURE DeleteJornalEntryDoc
@DocNumber as nvarchar(100)
AS
BEGIN

DELETE FROM tblJournalEntryDoc WHERE strJEDocID = @DocNumber

END
GO

--------------------------------------------
CREATE PROCEDURE DeleteTaxForJournalID
@JournalDate as Datetime,
@JournalID as bigint
AS
BEGIN

DELETE FROM tblTax WHERE (dteJournalDate = @JournalDate) AND (lngJournalID = @JournalID)

END
GO

-------------------------------------------
CREATE PROCEDURE DeleteCustomerVendorPay
@JournalDate as Datetime,
@JournalID as bigint
AS
BEGIN

DELETE FROM tblCustPay WHERE (dteJournalDate = @JournalDate) AND (lngJourID = @JournalID)
DELETE FROM tblVendPay WHERE (dteJournalDate = @JournalDate) AND (lngJourID = @JournalID)

END
GO

---------------------------------------------
CREATE PROCEDURE DeleteCenterEntForJournalID
@JournalID as bigint
AS
BEGIN

DELETE FROM tblCenterEnt WHERE lngJourID = @JournalID

END
GO

-----------------------------------------
CREATE PROCEDURE DeleteCenterEntLYForJournalID
@JournalID as bigint
AS
BEGIN

DELETE FROM tblCenterEntLY WHERE lngJourID = @JournalID

END
GO

--------------------------------------------------
CREATE PROCEDURE GetTaxesLoaded
AS
BEGIN
SELECT MIN(dteJournalDate) as minDate, MAX(dteJournalDate) as maxDate FROM tblTax
END
GO

-------------------------------------------
CREATE PROCEDURE [dbo].[RptListIncomeDeptLoadQuery_1]
@optCurrentYear_IsChecked BIT,
@optPreviousYear_IsChecked BIT,
@optHistoryYear_IsChecked BIT,
@SQuidYearID UNIQUEIDENTIFIER,
@SQDept AS NVARCHAR(MAX),
@CostOfGoodsSold INT,
@InterestExpense INT,
@IncomeTaxExpense INT,
@Revenue INT,
@OperatingRevenue INT,
@Expense INT,
@intOINum INT
AS
BEGIN
	IF @optCurrentYear_IsChecked = 1 
	BEGIN
		SELECT * FROM(SELECT tblAccounts.intGLNumber, strDesc, intAccType, intGroupCode, 
		decOpenBalance,
		intAccClass,
		'GroupSeq' = CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 WHEN intAccClass = @InterestExpense THEN 4
		WHEN intAccClass = @IncomeTaxExpense THEN 5 WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0
		WHEN intAccType = @Revenue THEN @intOINum WHEN intAccType = @Expense THEN 3 ELSE NULL END ,0 AS intDept
		FROM tblAccounts WHERE (intAccType >= 4) 
		UNION ALL
		SELECT tblAccounts.intGLNumber, strDesc, intAccType, intGroupCode, 
		ISNULL(tblAccountsDept.decOpenBalance,0),
		intAccClass,
		'GroupSeq' = CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 WHEN intAccClass = @InterestExpense THEN 4
		WHEN intAccClass = @IncomeTaxExpense THEN 5 WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0
		WHEN intAccType = @Revenue THEN @intOINum WHEN intAccType = @Expense THEN 3 ELSE NULL END, intDept
		FROM tblAccounts 
		INNER JOIN tblAccountsDept ON tblAccounts.intGLNumber = tblAccountsDept.intGLNumber
		WHERE (intAccType >= 4) ) AS T
		WHERE ISNULL(intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))
		ORDER BY GroupSeq, intAccType, intAccClass, intGLNumber 
	END	
	ELSE IF @optPreviousYear_IsChecked = 1	
	BEGIN	
		SELECT * FROM(SELECT tblAccountsLY.intGLNumber, strDesc, intAccType, intGroupCode, 
		decOpenBalance,intAccClass,
		'GroupSeq' = CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 WHEN intAccClass = @InterestExpense THEN 4
		WHEN intAccClass = @IncomeTaxExpense THEN 5 WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0
		WHEN intAccType = @Revenue THEN @intOINum WHEN intAccType = @Expense THEN 3 ELSE NULL END ,0 AS intDept
		FROM tblAccountsLY WHERE (intAccType >= 4) 
		UNION ALL
		SELECT tblAccountsLY.intGLNumber, strDesc, intAccType, intGroupCode, 
		ISNULL(tblAccountsDept.decOpenBalance,0),intAccClass, 
                    'GroupSeq' = CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 
                    WHEN intAccClass = @InterestExpense THEN 4 
                    WHEN intAccClass = @IncomeTaxExpense THEN 5 
                    WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0 
                    WHEN intAccType = @Revenue THEN @intOINum
                    WHEN intAccType = @Expense THEN 3 
        ELSE NULL END , intDept
		FROM tblAccountsLY
		INNER JOIN tblAccountsDept ON tblAccountsLY.intGLNumber = tblAccountsDept.intGLNumber
		WHERE (intAccType >= 4)) AS T
		WHERE ISNULL(intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))
		ORDER BY GroupSeq, intAccType, intAccClass, intGLNumber
	END	
	ELSE IF @optHistoryYear_IsChecked = 1	
	BEGIN	
		SELECT * FROM(SELECT tblAccountsHist.intGLNumber, strDesc, intAccType, intGroupCode, 
		decOpenBalance,intAccClass,
		'GroupSeq' = CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 WHEN intAccClass = @InterestExpense THEN 4
		WHEN intAccClass = @IncomeTaxExpense THEN 5 WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0
		WHEN intAccType = @Revenue THEN @intOINum WHEN intAccType = @Expense THEN 3 ELSE NULL END ,0 AS intDept
		FROM tblAccountsHist WHERE (intAccType >= 4) 
		UNION ALL
		SELECT tblAccountsHist.intGLNumber, strDesc, intAccType, intGroupCode, 
		ISNULL(tblAccountsHist.decOpenBalance,0),intAccClass, 
                    'GroupSeq' = CASE WHEN intAccClass = @CostOfGoodsSold THEN 1 
                    WHEN intAccClass = @InterestExpense THEN 4 
            WHEN intAccClass = @IncomeTaxExpense THEN 5 
                    WHEN intAccType = @Revenue AND intAccClass = @OperatingRevenue THEN 0 
                    WHEN intAccType = @Revenue THEN @intOINum
                    WHEN intAccType = @Expense THEN 3 
        ELSE NULL END ,intDept
		FROM tblAccountsHist
		INNER JOIN tblAccountsDept ON tblAccountsHist.intGLNumber = tblAccountsDept.intGLNumber and uidYearID = tblAccountsHist.uidYearID
		WHERE (intAccType >= 4) AND (uidYearID = @SQuidYearID) ) AS T
		WHERE ISNULL(intDept,0) in (SELECT CAST(Value AS INT) FROM [fnSplitStringAsTable]((@SQDept),(',')))
		ORDER BY GroupSeq, intAccType, intAccClass, intGLNumber
	END
END
GO

------------------------------------------------
CREATE PROCEDURE GetMinGLNumberFrom
AS
BEGIN
select min(intGLNumberFrom) from tblAccountsLegend
END
GO

------------------------------------------------------
CREATE PROCEDURE GetMaxGLNumberFrom
AS
BEGIN
select max(intGLNumberTo) from tblAccountsLegend
END
GO

----------------------------------------------------------------
CREATE PROCEDURE GetAccountsHistUIDCount
(@YearID as uniqueidentifier,
@GLNumber as nvarchar(30)
)
AS
BEGIN

SELECT COUNT(intGLNumber) FROM tblAccountsHist WHERE uidYearID = @YearID And intGLNumber = @GLNumber

END
GO


CREATE PROCEDURE GetVendorReconRE @strVendorNo NVARCHAR(50)
AS
BEGIN
	SELECT strREName AS REName
		,strVendorNo AS VendorNo
		,strVendDesc AS VendorName
		,decLedgerBalance AS LedgerBalance
		,decStatementBalance AS StatementBalance
		,dteReconDate AS ReconDate
		,strComment AS Comment
		,strCurrency AS Currency
	FROM [tblVendorReconRE]
	INNER JOIN [tblVendors] ON tblVendors.strVendName = tblVendorReconRE.strVendorNo
	WHERE [strREName] = @strVendorNo

	SELECT strREName AS REName
		,intLineNo
		,lngReconReason AS ReconReason
		,strSource AS [Source]
		,dteDate AS [Date]
		,strComment AS Comment
		,decDebit AS Debit
		,decCredit AS Credit
	FROM [tblVendorReconREDT]
	WHERE [strREName] = @strVendorNo
END
GO

CREATE PROCEDURE [dbo].[GetTaxNameWT] (@SQVendName NVARCHAR(40))
AS
BEGIN
SELECT strTaxName FROM tblVendorExWT WHERE strVendName = @SQVendName
END
GO

CREATE PROCEDURE [dbo].[DeletePQOkclick]
(
@SqlGroupId int,
@sqlApproverType int
)
AS
BEGIN
	DELETE FROM dbo.tblApprovalsDocLimit 
	WHERE intApproverGroupId = @SqlGroupId AND intApproverType = @sqlApproverType
END
GO

CREATE PROCEDURE [dbo].[DeleteBOMItems] (    
@SQlngManBOMID bigint
)    
AS    
BEGIN    
DELETE FROM tblManBOM WHERE lngManBOMID = @SQlngManBOMID
END
GO

CREATE PROCEDURE [dbo].[GetUserNameforBOM] (    
@lngManBOMID bigint
)    
AS    
BEGIN 
SELECT dteSystemDate As SystemDate, strUserName As UserName FROM tblManBOM WHERE lngManBOMID = @lngManBOMID
END
GO

CREATE PROCEDURE [dbo].[FetchInvLocationBOM] (
	@PartNumber AS NVARCHAR(50)
	,@SQUserName AS NVARCHAR(50)
	)
AS
BEGIN
	SELECT tblInvExt.strLocName as LocationName
	,tblInvExt.bitDefault as IsDefault
	FROM tblInvExt
	INNER JOIN tblInvLoc ON tblInvExt.strLocName = tblInvLoc.strLocName
	LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName
		AND tblInvLocSec.strUserName = @SQUserName
	WHERE (tblInvLoc.intType = 0)
		AND (tblInvExt.bitInactive = 0)
		AND (tblInvExt.strPartNumber = @PartNumber)
	ORDER BY tblInvExt.strLocName
END
GO

CREATE PROCEDURE [GetInvAssblyStockPick]
(
    @SQDocNumber NVARCHAR(200),
    @SQScaleActivated bit,
    @SQLocationCriteria NVARCHAR(200)
)
AS
    BEGIN
    SELECT strJBDocID AS strAsmDocID, dteJournalDate, CASE WHEN @SQScaleActivated = 1 THEN CAST(REPLACE(strJBDocID, 'JB-','') AS nVarchar(9)) ELSE NULL END AS strJobBarCode FROM tblManJob WHERE strJBDocID = @SQDocNumber
    SELECT tblManJobCompInv.strJBDocID AS strAsmDocID, tblManJobCompInv.intLineNo, tblManJobCompInv.strPartNumber, tblManJobCompInv.strDesc, tblManJobCompInv.decManQty AS decQty, tblInv.strSellUnit, tblManJobCompInv.strLocation AS strLocName, tblManJobCompInv.strWCCode, tblManWorkCentre.strDesc AS strWCDesc, CASE WHEN @SQScaleActivated = 1 THEN CAST(REPLACE(tblManJobCompInv.strJBDocID, 'JB-','') AS nVarchar(9)) + CAST(tblManJobCompInv.strWCCode AS nVarchar(50)) ELSE NULL END AS strJobBarCode FROM tblManJobCompInv INNER JOIN tblManWorkCentre ON tblManJobCompInv.strWCCode = tblManWorkCentre.strWCCode INNER JOIN tblInv ON tblManJobCompInv.strPartNumber = tblInv.strPartNumber WHERE tblManJobCompInv.strJBDocID = @SQDocNumber ORDER BY tblManJobCompInv.intLineNo
    SELECT * FROM dbo.fnTblInvLocations(@SQLocationCriteria) tblInv WHERE strPartNumber IN (SELECT DISTINCT strPartNumber FROM tblManJobCompInv WHERE strJBDocID = @SQDocNumber)
END
GO

CREATE PROCEDURE [dbo].[LineNumber]
@SQlngManBOMID bigint
AS
BEGIN
	select Cast(max(intLineNo) As varchar(Max)) from tblManBOMCompInv where lngManBOMID = @SQlngManBOMID
END
GO


------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE GetInvCategoriesCount (
	@SearchText NVARCHAR(50) = NULL
	,@IsInactive BIT = NULL
	)
AS
BEGIN
	SELECT count(*)
	FROM tblInvCat
	WHERE (
			ISNULL(strCategory, '') LIKE '%' + ISNULL(@SearchText, strCategory) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@SearchText, strDesc) + '%'
			OR @SearchText IS NULL
			)
		AND (
			bitInactive = 0
			OR bitInactive = @IsInactive
			)
END
GO

------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE GetInvCategories (
	@SearchText NVARCHAR(50) = NULL
	,@IsInactive BIT = NULL
	,@PageSize INT = 25
	,@PageNumber INT = 1
	)
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT strCategory AS Category
		,strDesc AS [Description]
		,bitInactive AS InActive
		,decMinMarginPerc AS MinMarginPerc
		,bitUseMinMarginPerc AS IsUseMinMarginPerc
		,intAlertOnMinMarginPerc AS InvAlertOnMinMarginPerc
		,strAcctSetInv AS AccSetInv
		,strAcctSetSvc AS AccSetSvc
		,strAcctSetBO AS AccSetBo
	FROM tblInvCat
	WHERE (
			ISNULL(strCategory, '') LIKE '%' + ISNULL(@SearchText, strCategory) + '%'
			OR ISNULL(strDesc, '') LIKE '%' + ISNULL(@SearchText, strDesc) + '%'
			OR @SearchText IS NULL
			)
		AND (
			bitInactive = 0
			OR bitInactive = @IsInactive
			)
	ORDER BY Category OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE [GetContacts] (
	@ContactOption INT
	,@IsSortByName BIT
	)
AS
BEGIN
	IF (@IsSortByName = 1)
	BEGIN
		IF (@ContactOption = 0) --Customers
		BEGIN
			SELECT tblCustomerContacts.strName AS [Name]
				,tblJobTitles.strJobTitle AS JobTitle
				,tblCustomerContacts.strEmail AS Email
				,tblCustomerContacts.strTel AS Telephone
				,tblCustomerContacts.strCell AS CellPhone
				,tblCustomers.strCustDesc + ' (' + tblCustomers.strCustName + ')' AS [Description]
			FROM tblCustomerContacts
			INNER JOIN tblCustomers ON tblCustomers.strCustName = tblCustomerContacts.strCustName
			INNER JOIN tblJobTitles ON tblCustomerContacts.intJobTitle = tblJobTitles.lngID
			ORDER BY tblCustomerContacts.strName
		END
		ELSE IF (@ContactOption = 1) --Vendors
		BEGIN
			SELECT tblVendorContacts.strName AS [Name]
				,tblJobTitles.strJobTitle AS JobTitle
				,tblVendorContacts.strEmail AS Email
				,tblVendorContacts.strTel AS Telephone
				,tblVendorContacts.strCell AS CellPhone
				,tblVendors.strVendDesc + ' (' + tblVendors.strVendName + ')' AS [Description]
			FROM tblVendorContacts
			INNER JOIN tblVendors ON tblVendors.strVendName = tblVendorContacts.strVendName
			INNER JOIN tblJobTitles ON tblVendorContacts.intJobTitle = tblJobTitles.lngID
			ORDER BY tblVendorContacts.strName
		END
	END
	ELSE
	BEGIN
		IF (@ContactOption = 0) --Customers
		BEGIN
			SELECT tblCustomerContacts.strName AS [Name]
				,tblJobTitles.strJobTitle AS JobTitle
				,tblCustomerContacts.strEmail AS Email
				,tblCustomerContacts.strTel AS Telephone
				,tblCustomerContacts.strCell AS CellPhone
				,tblCustomers.strCustDesc + ' (' + tblCustomers.strCustName + ')' AS [Description]
			FROM tblCustomerContacts
			INNER JOIN tblCustomers ON tblCustomers.strCustName = tblCustomerContacts.strCustName
			INNER JOIN tblJobTitles ON tblCustomerContacts.intJobTitle = tblJobTitles.lngID
			ORDER BY tblJobTitles.strJobTitle
		END
		ELSE IF (@ContactOption = 1) --Vendors
		BEGIN
			SELECT tblVendorContacts.strName AS [Name]
				,tblJobTitles.strJobTitle AS JobTitle
				,tblVendorContacts.strEmail AS Email
				,tblVendorContacts.strTel AS Telephone
				,tblVendorContacts.strCell AS CellPhone
				,tblVendors.strVendDesc + ' (' + tblVendors.strVendName + ')' AS [Description]
			FROM tblVendorContacts
			INNER JOIN tblVendors ON tblVendors.strVendName = tblVendorContacts.strVendName
			INNER JOIN tblJobTitles ON tblVendorContacts.intJobTitle = tblJobTitles.lngID
			ORDER BY tblJobTitles.strJobTitle
		END
	END
END
GO

------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE [dbo].[SaveMarkupOnCostByItem] (
	@intMasterId INT
	,@SqlPriceBasedID UNIQUEIDENTIFIER
	,@SqlPricelist NVARCHAR(200)
	,@SqlType INT
	,@SqlPriceLevelType NVARCHAR(200)
	,@SqlPriceLevel NVARCHAR(200)
	,@SqlMarkupPrice MONEY
	)
AS
BEGIN
	IF (@intMasterId = 0)
	BEGIN
		INSERT INTO tblPricelistsItemsMaster(uidPriceBasedID, strPricelist, intType, strPriceLevelType, strPriceLevel, decMarkupPrice, dteRowUpdated)
		OUTPUT Inserted.intPricelistMasterId
		VALUES (
			@SqlPriceBasedID
			,@SqlPricelist
			,@SqlType
			,@SqlPriceLevelType
			,@SqlPriceLevel
			,@SqlMarkupPrice
			,GETDATE()
		)
	END
	ELSE
	BEGIN
		UPDATE tblPricelistsItemsMaster
		SET intType = @SqlType
			,strPriceLevelType = @SqlPriceLevelType
			,strPriceLevel = @SqlPriceLevel
			,decMarkupPrice = @SqlMarkupPrice
			,dteRowUpdated = GETDATE()
		WHERE intPricelistMasterId = @intMasterId

		SELECT @intMasterId AS intPricelistMasterId
	END
END
GO

------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE GetCountClearedData @partNumber NVARCHAR(max)
	,@docType AS INT
AS
BEGIN
	SELECT COUNT(*)
	FROM [dbo].[tblOrderDocP] AS [Extent1]
	INNER JOIN [dbo].[tblOrderDocPDT] AS [Extent2] ON [Extent1].[strOrdPDocID] = [Extent2].[strOrdPDocID]
	WHERE (CAST([Extent1].[intDocType] AS INT) = @docType)
		AND ([Extent2].[strPartNumber] = @partNumber)
		AND (0 = [Extent1].[bitCleared])
END
GO

------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE GetInvItemOptionFields
AS
BEGIN
	SELECT strInv1 AS [Inv1]
		,strInv2 AS [Inv2]
		,strInv3 AS [Inv3]
		,strInv4 AS [Inv4]
		,strInv5 AS [Inv5]
		,strInv6 AS [Inv6]
		,bitInv1 AS [IsInv1]
		,bitInv2 AS [IsInv2]
		,bitInv3 AS [IsInv3]
		,bitInv4 AS [IsInv4]
		,bitInv5 AS [IsInv5]
		,bitInv6 AS [IsInv6]
	FROM [dbo].[tblOptFields]
END
GO

------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE GetAccountSetsList
AS
BEGIN
	SELECT 1 AS [C1]
		,[Extent1].[strAcctSet] AS [AcctSet]
		,[Extent1].[blnService] AS [Service]
		,[Extent1].[blnBuyout] AS [Buyout]
	FROM [dbo].[tblAccountSets] AS [Extent1]
END
GO

------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE GetInvSerialTypeList
AS
BEGIN
	SELECT [Extent1].[strInvSerialType] AS [strInvSerialType]
	FROM [dbo].[tblInvSerialTypes] AS [Extent1]
	WHERE [Extent1].[bitInactive] = 0
	ORDER BY [Extent1].[strInvSerialType] ASC
END
GO

------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE GetInvItemNumberConvByType @type AS INT
	,@typeBoth AS INT
AS
BEGIN
	SELECT [Extent1].[strInvNumConv] AS [InvNumConv]
		,[Extent1].[strDesc] AS [Desc]
		,[Extent1].[bitDefault] AS [IsDefault]
	FROM [dbo].[tblInvNumConv] AS [Extent1]
	WHERE (0 = [Extent1].[bitInactive])
		AND (
			@type = CAST([Extent1].[intType] AS INT)
			OR @typeBoth = CAST([Extent1].[intType] AS INT)
			)
	ORDER BY [Extent1].[strInvNumConv] ASC
END
GO

------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE GetCustNameByOrderDoc @OrdDocID AS NVARCHAR(max)
AS
BEGIN
	SELECT strCustName
	FROM tblOrderDoc
	WHERE strOrdDocID = @OrdDocID
END
GO

------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE GetBOMNotesByPartNumber @PartNumber AS NVARCHAR(max)
AS
BEGIN
	SELECT ISNULL(strBOMNotes, '')
		,ISNULL(strInvWCCode, '')
	FROM tblInv
	WHERE strPartNumber = @PartNumber
END
GO

------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE GetUserEnteredBTO @DocID AS NVARCHAR(100)
AS
BEGIN
	SELECT dteSystemDate AS SystemDate
		,strUserName AS UserName
	FROM tblInvTrfOrdDoc
	WHERE strInvTrfOrdDocID = @DocID
END
GO

------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE CheckInventoryItemExistCount @PartNumber AS NVARCHAR(max)
AS
BEGIN
	SELECT count(*)
	FROM tblInv
	WHERE strPartNumber = @PartNumber
END
GO

------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE GetInvItemAttachmentListByPartNumber @PartNumber AS NVARCHAR(200)
	,@FileNames AS NVARCHAR(max)
AS
BEGIN
	SELECT strFileName AS [FileName]
		,imgFile AS ImgFile
	FROM tblInvF
	WHERE bitEnc = 0
		AND strPartNumber = @PartNumber
		AND bitEnc = 0
		AND (
			strFileName IN (
				SELECT Value
				FROM fnSplitStringAsTable(@FileNames, ',')
				)
			)
END
GO

------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE RptInvSegMovementGetSegmentData
AS
BEGIN
	SELECT strSeg1Name AS Seg1Name
		,strSeg2Name AS Seg2Name
		,strSeg3Name AS Seg3Name
		,strSeg4Name AS Seg4Name
	FROM tblInvNumConv
END
GO

------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE [dbo].[GetInvTrfDocByDocNumberForConvert] (@SQDocNumber NVARCHAR(100))
AS
BEGIN
	SET NOCOUNT ON;

	BEGIN
		SELECT strInvTrfOrdDocID AS TransferDocID
			,cast(0 AS BIGINT) AS JournalID
			,dteJournalDate AS JournalDate
			,strLocName AS FromLocation
			,strComment AS Comment
			,intAccount AS Account
			,ISNULL((
					SELECT strDesc
					FROM tblAccounts
					WHERE intGLNumber = tblInvTrfOrdDoc.intAccount
					), '') AS AccountDesc
			,decTotal AS Total
			,intDept AS Department
			,bitCleared AS IsCleared
			,ISNULL((strDelMethodCode), '') AS DelMethodCode
			,ISNULL((strToLocName), '') AS ToLocation
			,dteReceivingDate AS RequiredDate
		FROM tblInvTrfOrdDoc
		WHERE strInvTrfOrdDocID = @SQDocNumber
	END
END
GO

CREATE PROCEDURE GetBinIdbyBinAndLocation (
	@location nvarchar(100),
	@bincode nvarchar(100)
	)
AS
BEGIN
 
	SELECT lngID FROM tblInvLocBin where strLocName = @location and strBinCode = @bincode
 
END
GO

CREATE PROCEDURE [dbo].[GetSalesPriceDataMobile]
@PartNumber AS NVARCHAR(100)
AS
BEGIN
SELECT tblInvPrice.strPricelist AS Pricelist
	,tblInvPrice.decSelling AS Selling
	,tblPricelists.intPriceListType AS PriceListType
	,tblPriceListsByDate.dteStartDate AS StartDate
	,tblPriceListsByDate.dteFinishDate AS EndDate
	,tblInv.decLastPPUnit AS PurchasePrice
FROM tblInvPrice
INNER JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist
	AND tblInvPrice.uidPriceBasedID = tblPricelists.uidPriceBasedID
INNER JOIN tblPriceListsByDate ON tblPriceListsByDate.uidPriceBasedID = tblPricelists.uidPriceBasedID
INNER JOIN tblPriceData ON tblPriceData.strPricelist = tblPricelists.strPricelist
INNER JOIN tblInv ON tblInvPrice.strPartNumber = tblInv.strPartNumber 
WHERE (tblInvPrice.strPartNumber = @PartNumber)
	AND tblPriceData.bitInactive = 0
ORDER BY tblInvPrice.decSelling DESC
END
GO

CREATE PROCEDURE [dbo].[GetInvLocationPickerDataMobile]
(	@IsServiceExpense AS BIT,
	@PartNumber AS VARCHAR(50),
	@IsWarehousesOnly AS BIT,
	@UserName AS VARCHAR(50),
	@AllowInactive AS BIT = NULL
)
AS
BEGIN
	IF(@IsServiceExpense = 1)
		SELECT tblInvLoc.strLocName AS Location
			,tblInvLoc.intType AS LocationType
			,tblInvLoc.bitDefault AS IsDefaultLocation
		FROM tblInvLoc
		LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName
			AND tblInvLocSec.strUserName = @UserName
			WHERE (@IsWarehousesOnly = 0 OR tblInvLoc.intType = 0)
			AND (ISNULL((SELECT COUNT(tblInvLocSec.strLocName) FROM tblInvLocSec WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvLocSec.strLocName) FROM tblInvLocSec WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName)
,
	 0) > 0 AND ISNULL(tblInvLocSec.strUserName, '') <> ''))
	
			ORDER BY tblInvLoc.strLocName
	ELSE
		SELECT tblInvExt.strLocName AS Location
			,tblInvExt.decAvail AS Available
			,tblInvExt.decOnHand AS OnHand
			,tblInvLoc.intType AS LocationType
			,tblInvExt.decAlloc AS SalesOrder
			,tblInvExt.decOnOrder AS Purchase
			,tblInvLoc.bitDefault AS IsDefaultLocation
			,(
		SELECT SUM(QTY)
		FROM (
			SELECT (ISNULL(SUM(DT.decQtyRemaining), 0) * -1) AS QTY
			FROM tblInvTrfOrdDoc DOC
			INNER JOIN tblInvTrfOrdDocDT DT ON DOC.strInvTrfOrdDocID = DT.strInvTrfOrdDocID
			WHERE DOC.bitCleared = 0
				AND DOC.strLocName = tblInvLoc.strLocName
				AND DT.strPartNumber = @PartNumber
			
			UNION ALL
			
			SELECT ISNULL(SUM(DT.decQtyRemaining), 0) AS QTY
			FROM tblInvTrfOrdDoc DOC
			INNER JOIN tblInvTrfOrdDocDT DT ON DOC.strInvTrfOrdDocID = DT.strInvTrfOrdDocID
			WHERE DOC.bitCleared = 0
				AND DOC.strToLocName = tblInvLoc.strLocName
				AND DT.strPartNumber = @PartNumber
			) AS Result1
		) AS [TransferOrder]
	,(
		SELECT SUM(QTY)
		FROM (
			SELECT (ISNULL(SUM(DT.decQty), 0) *-1) AS QTY
			FROM tblInvTrfDoc DOC
			INNER JOIN tblInvTrfDocDT DT ON DOC.strTrfDocID = DT.strTrfDocID
			WHERE bitWarehouseTrf = 1
				AND bitCleared = 0
				AND strFromLoc = tblInvLoc.strLocName
				AND DT.strPartNumber = @PartNumber
			
			UNION ALL
			
			SELECT ISNULL(SUM(DT.decQty), 0) AS QTY
			FROM tblInvTrfDoc DOC
			INNER JOIN tblInvTrfDocDT DT ON DOC.strTrfDocID = DT.strTrfDocID
			WHERE bitWarehouseTrf = 1
				AND bitCleared = 0
				AND strToLoc = tblInvLoc.strLocName
				AND DT.strPartNumber = @PartNumber
			) AS Result2
		) AS [GoodsInTransit]
		FROM tblInvExt
		INNER JOIN tblInvLoc ON tblInvExt.strLocName = tblInvLoc.strLocName
		LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName
		AND tblInvLocSec.strUserName = @UserName
		WHERE tblInvExt.strPartNumber = @PartNumber
		AND (@IsWarehousesOnly = 0 OR tblInvLoc.intType = 0)
		
		AND (ISNULL((SELECT COUNT(tblInvLocSec.strLocName) FROM tblInvLocSec 
		WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName), 0) = 0 OR 
		(ISNULL((SELECT COUNT(tblInvLocSec.strLocName) FROM tblInvLocSec 
		WHERE tblInvLocSec.strLocName = tblInvLoc.strLocName), 
			0) > 0 AND ISNULL(tblInvLocSec.strUserName, '') <> ''))
	
	AND (@AllowInactive = 1 OR tblInvExt.bitInactive = 0)
		ORDER BY tblInvExt.strLocName
END
GO

CREATE PROCEDURE [dbo].[GetInventoryDataMobile]
(	@Part AS NVARCHAR(50),
	@BarCode AS NVARCHAR(300),
	@PriceList AS VARCHAR(20),
	@GPCalcInvLevel AS INT,
	@GPCalcLPP AS INT,
	@LocName AS NVARCHAR(50),
	@UserName AS NVARCHAR(20),
	@IsBPToolsMode AS BIT
)
AS
BEGIN
	--SELECT tblInv.strDesc AS [Desc], tblInv.strStockUnit AS StockUnit, tblInv.intType AS [Type], tblInv.bitAllowPriceChg AS AllowPriceChg, ISNULL(tblInvPrice.decSelling,0) AS Selling, tblInv.strPartNumber AS PartNumber,tblInv.strField1 AS Field1,tblInv.strField2 AS Field2,tblInv.strField3 AS Field3,tblInv.strField4 AS Field4,tblInv.strField5 AS Field5,tblInv.strField6 AS Field6,tblInv.decSumAvail AS SumAvail,ISNULL(tblPricelists.bitShowZeroSellingPrice, 0) AS ShowZeroSellingPrice, tblInv.strSellUnit AS SellUnit, tblInv.strSellStockUnit AS SellStockUnit, tblInv.decSellFromStock AS SellFromStock, tblInv.bitInvSerialType AS IsSerialType, 

	--CASE WHEN tblInv.intType = 4 THEN tblInv.decStandardCost ELSE CASE @GPCalcLPP WHEN 0 THEN tblInv.decLastPPUnit WHEN 1 THEN tblInv.decStandardCost WHEN 2 THEN CASE @GPCalcInvLevel WHEN 0 THEN CASE WHEN tblInv.decLastPPUnit > ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @LocName),0) THEN tblInv.decLastPPUnit ELSE CASE WHEN tblInv.decLastPPUnit < ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @LocName),0) THEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @LocName),0) ELSE CASE WHEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @LocName),0) = 0 THEN tblInv.decLastPPUnit ELSE ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @LocName),0) END END END WHEN 1 THEN CASE WHEN tblInv.decLastPPUnit > ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END),0) THEN tblInv.decLastPPUnit ELSE CASE WHEN tblInv.decLastPPUnit < ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END),0) THEN ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END),0) ELSE CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0 THEN tblInv.decLastPPUnit ELSE ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END),0) END END END ELSE tblInv.decLastPPUnit END WHEN 3 THEN CASE @GPCalcInvLevel WHEN 0 THEN CASE WHEN ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @LocName),0) = 0 THEN tblInv.decLastPPUnit ELSE ISNULL((SELECT CASE EXT.decOnHand WHEN 0 THEN 0 ELSE EXT.decValue / EXT.decOnHand END FROM tblInvExt EXT WHERE EXT.strPartNumber = tblInv.strPartNumber AND EXT.strLocName = @LocName),0) END WHEN 1 THEN CASE WHEN CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END = 0 THEN tblInv.decLastPPUnit ELSE ISNULL((CASE tblInv.decSumOnHand WHEN 0 THEN 0 ELSE tblInv.decSumValue / tblInv.decSumOnHand END),0) END ELSE tblInv.decLastPPUnit END ELSE tblInv.decLastPPUnit END END AS GPCalc, tblInv.decDefSaleQty AS DefaultSaleQty, tblInv.bitVoucherEnabled AS IsVoucherEnabled, ISNULL(tblInv.strVoucherCode, '') AS VoucherCode, tblInv.strDimProCode AS DimProCode, tblInv.strExtendedDesc AS ExtendedDesc, tblInv.strUnitOfMeasure AS UnitOfMeasure, tblInv.decMass AS Mass, tblInv.decVolumetricWeight AS VolumetricWeight, 
	
	--CAST((SELECT COUNT(tblInvUpsell.strPartItemNumber) FROM tblInvUpsell WHERE tblInvUpsell.strPartNumber = tblInv.strPartNumber) AS BIT) AS IsUpsellItem,
 --ISNULL(tblInvSerialTypes.bitDimensionExist,0) AS IsSerialDimension  FROM tblInv LEFT OUTER JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber LEFT OUTER JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType WHERE (tblInv.strPartNumber = @Part OR tblInv.strBarCode = @BarCode OR tblInv.strBarCode2 = @BarCode) AND (tblInvPrice.strPricelist = @PriceList OR tblInvPrice.strPricelist IS NULL) AND tblInv.bitInactive = 0


SELECT tblInv.strDesc  AS [Desc]
	,tblInv.strStockUnit AS StockUnit
	,tblInv.intType AS [Type]
	,tblInv.bitAllowPriceChg AS AllowPriceChg
	,ISNULL(tblInvPrice.decSelling, 0) AS Selling
	,tblInv.strPartNumber AS PartNumber
	,tblInv.strField1 AS Field1
	,tblInv.strField2 AS Field2
	,tblInv.strField3 AS Field3
	,tblInv.strField4 AS Field4
	,tblInv.strField5 AS Field5
	,tblInv.strField6 AS Field6
	,tblInv.decSumAvail AS SumAvail
	,ISNULL(tblPricelists.bitShowZeroSellingPrice, 0) AS ShowZeroSellingPrice
	,tblInv.strSellUnit AS SellUnit
	,tblInv.strSellStockUnit AS SellStockUnit
	,tblInv.decSellFromStock AS SellFromStock
	,tblInv.bitInvSerialType AS IsSerialType	
	,CASE 
		WHEN tblInv.intType = 4
			THEN tblInv.decStandardCost
		ELSE CASE @GPCalcLPP
				WHEN 0
					THEN tblInv.decLastPPUnit
				WHEN 1
					THEN tblInv.decStandardCost
				WHEN 2
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															SELECT CASE EXT.decOnHand
																	WHEN 0
																		THEN 0
																	ELSE EXT.decValue / EXT.decOnHand
																	END
															FROM tblInvExt EXT
															WHERE EXT.strPartNumber = tblInv.strPartNumber
																AND EXT.strLocName = @LocName
															), 0)
													THEN ISNULL((
																SELECT CASE EXT.decOnHand
																		WHEN 0
																			THEN 0
																		ELSE EXT.decValue / EXT.decOnHand
																		END
																FROM tblInvExt EXT
																WHERE EXT.strPartNumber = tblInv.strPartNumber
																	AND EXT.strLocName = @LocName
																), 0)
												ELSE CASE 
														WHEN ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0) = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	SELECT CASE EXT.decOnHand
																			WHEN 0
																				THEN 0
																			ELSE EXT.decValue / EXT.decOnHand
																			END
																	FROM tblInvExt EXT
																	WHERE EXT.strPartNumber = tblInv.strPartNumber
																		AND EXT.strLocName = @LocName
																	), 0)
														END
												END
										END
							WHEN 1
								THEN CASE 
										WHEN tblInv.decLastPPUnit > ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
											THEN tblInv.decLastPPUnit
										ELSE CASE 
												WHEN tblInv.decLastPPUnit < ISNULL((
															CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END
															), 0)
													THEN ISNULL((
																CASE tblInv.decSumOnHand
																	WHEN 0
																		THEN 0
																	ELSE tblInv.decSumValue / tblInv.decSumOnHand
																	END
																), 0)
												ELSE CASE 
														WHEN CASE tblInv.decSumOnHand
																WHEN 0
																	THEN 0
																ELSE tblInv.decSumValue / tblInv.decSumOnHand
																END = 0
															THEN tblInv.decLastPPUnit
														ELSE ISNULL((
																	CASE tblInv.decSumOnHand
																		WHEN 0
																			THEN 0
																		ELSE tblInv.decSumValue / tblInv.decSumOnHand
																		END
																	), 0)
														END
												END
										END
							ELSE tblInv.decLastPPUnit
							END
				WHEN 3
					THEN CASE @GPCalcInvLevel
							WHEN 0
								THEN CASE 
										WHEN ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0) = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													SELECT CASE EXT.decOnHand
															WHEN 0
																THEN 0
															ELSE EXT.decValue / EXT.decOnHand
															END
													FROM tblInvExt EXT
													WHERE EXT.strPartNumber = tblInv.strPartNumber
														AND EXT.strLocName = @LocName
													), 0)
										END
							WHEN 1
								THEN CASE 
										WHEN CASE tblInv.decSumOnHand
												WHEN 0
													THEN 0
												ELSE tblInv.decSumValue / tblInv.decSumOnHand
												END = 0
											THEN tblInv.decLastPPUnit
										ELSE ISNULL((
													CASE tblInv.decSumOnHand
														WHEN 0
															THEN 0
														ELSE tblInv.decSumValue / tblInv.decSumOnHand
														END
													), 0)
										END
							ELSE tblInv.decLastPPUnit
							END
				ELSE tblInv.decLastPPUnit
				END
		END AS GPCalc
	,tblInv.decDefSaleQty AS DefaultSaleQty
	,tblInv.bitVoucherEnabled AS IsVoucherEnabled
	,ISNULL(tblInv.strVoucherCode, '') AS VoucherCode
	,tblInv.strDimProCode AS DimProCode
	,tblInv.strExtendedDesc AS ExtendedDesc
	,tblInv.strUnitOfMeasure AS UnitOfMeasure
	,tblInv.decMass AS Mass
	,tblInv.decVolumetricWeight AS VolumetricWeight
	,CAST((
			SELECT COUNT(tblInvUpsell.strPartItemNumber)
			FROM tblInvUpsell
			WHERE tblInvUpsell.strPartNumber = tblInv.strPartNumber
			) AS BIT) AS IsUpsellItem
	,ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsSerialDimension	
	,tblInv.bitAutoBuild AS AutoBuild
	,tblInv.bitAutoBuildSameLoc AS IsAutoBuildSameLoc
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT SUM(INV.decLastPPUnit)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildLRC
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT SUM(INV.decStandardCost)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildSC
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE EXT.decOnHand
									WHEN 0
										THEN 0
									ELSE EXT.decValue / EXT.decOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
						AND EXT.strLocName = @LocName
					), 0)
		END AS AutoBuildMALocDef
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE EXT.decOnHand
									WHEN 0
										THEN 0
									ELSE EXT.decValue / EXT.decOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					INNER JOIN tblInvExt EXT ON INV.strPartNumber = EXT.strPartNumber
						AND BOM.strLocName = EXT.strLocName
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildMALocation
	,CASE 
		WHEN tblInv.bitAutoBuild = 0
			THEN 0
		ELSE ISNULL((
					SELECT ISNULL(SUM(CASE INV.decSumOnHand
									WHEN 0
										THEN 0
									ELSE INV.decSumValue / INV.decSumOnHand
									END), 0)
					FROM tblInvBOM BOM
					INNER JOIN tblInv INV ON BOM.strPartItemNumber = INV.strPartNumber
					WHERE BOM.strPartNumber = tblInv.strPartNumber
					), 0)
		END AS AutoBuildMAMain
		,strHSCode AS HSCode
		,strHSDesc AS HSDesc
FROM tblInv
LEFT JOIN tblInvPrice ON tblInv.strPartNumber = tblInvPrice.strPartNumber
LEFT JOIN tblPricelists ON tblInvPrice.strPricelist = tblPricelists.strPricelist
LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
WHERE (
		tblInv.strPartNumber = @Part
		OR tblInv.strBarCode = @BarCode
		OR tblInv.strBarCode2 = @BarCode
		)
	AND (
		tblInvPrice.strPricelist = @PriceList
		OR tblInvPrice.strPricelist IS NULL
		)
	AND (tblInv.bitInactive = 0)

	AND (@IsBPToolsMode = 1 OR tblInv.strCategory IN (SELECT tblInvCat.strCategory FROM tblInvCat LEFT JOIN tblInvCatSec ON tblInvCat.strCategory = tblInvCatSec.strCategory WHERE ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) = 0 OR (ISNULL((SELECT COUNT(tblInvCatSec.strCategory) FROM tblInvCatSec WHERE tblInvCatSec.strCategory = tblInvCat.strCategory), 0) > 0 AND tblInvCatSec.strUserName = @UserName)) OR tblInv.intType = 5)
END
GO

CREATE PROCEDURE [dbo].[GetWorkCentresWIP] @ShowInactive AS BIT
AS
BEGIN
	SELECT strWCCode AS WorkCentreCode
		--,strDesc AS Descriptions
		--,bitInactive AS Inactive
	FROM tblManWorkCentre
	WHERE (
			bitInactive = 0
			OR bitInactive = @ShowInactive
			)
END
GO


CREATE PROCEDURE [dbo].[GetOrderDocLoadSOMobile] 
(         
 @DocNum NVARCHAR(MAX),
 @IsDeliveryAdvice BIT
 )        
AS        
    BEGIN        
        IF @IsDeliveryAdvice = 1
		BEGIN
        SELECT  tblOrderDocDA.strOrdDADocID AS DocumentNumber ,        
                tblOrderDocDA.strOrdFQDocID AS OrdFQDocID ,        
                tblOrderDocDA.dteSystemDate AS SystemDate ,        
                tblOrderDocDA.dteJournalDate AS JournalDate ,        
                tblOrderDocDA.dteRequired AS [Required] ,        
                tblOrderDocDA.strUserName AS UserName ,        
                tblOrderDocDA.strSoldTo AS SoldTo ,        
                tblOrderDocDA.strShipTo AS ShipTo ,        
                tblOrderDocDA.strReference AS Reference ,        
                tblOrderDocDA.decSubTotal AS SubTotal ,        
                tblOrderDocDA.decVAT AS VAT ,        
                tblOrderDocDA.decTotal AS Total ,        
                tblOrderDocDA.decSubTotalF AS SubTotalF ,        
                tblOrderDocDA.decVATF AS VATF ,        
                tblOrderDocDA.decTotalF AS TotalF ,        
                tblOrderDocDA.strNotes AS Notes ,        
                tblOrderDocDA.bitPrinted AS Printed ,        
                tblOrderDocDA.bitEmailed AS Emailed ,        
                tblOrderDocDA.bitCleared AS IsCleared ,        
                tblOrderDocDA.strSalesName AS SalesName ,        
                tblOrderDocDA.strAddInfo AS AdditionalInfo ,        
                tblOrderDocDA.strCurrency AS CurrencyCode ,        
                tblOrderDocDA.bitIsForeign AS IsForeign ,        
                tblOrderDocDA.decSubTotalF AS SubTotalForeign ,        
                tblOrderDocDA.decVATF AS VATForeign ,        
                tblOrderDocDA.decTotalF AS TotalForeign ,        
                tblOrderDocDA.decExchange AS ExchangeRate ,        
                tblOrderDocDA.strTerm AS Term ,        
                tblOrderDocDA.intDept AS Dept ,        
                tblOrderDocDA.strField1 AS Field1 ,        
                tblOrderDocDA.strField2 AS Field2 ,        
                tblOrderDocDA.strField3 AS Field3 ,        
                tblOrderDocDA.strField4 AS Field4 ,        
                tblOrderDocDA.strField5 AS Field5 ,        
                tblOrderDocDA.strField6 AS Field6 ,        
                tblOrderDocDA.strField7 AS Field7 ,        
                tblOrderDocDA.strField8 AS Field8 ,        
                tblOrderDocDA.strField9 AS Field9 ,        
                tblOrderDocDA.strField10 AS Field10 ,        
                tblOrderDocDA.strField11 AS Field11 ,        
                tblOrderDocDA.strField12 AS Field12 ,        
				tblOrderDocDA.dteField13 AS Field13 ,        
				tblOrderDocDA.dteField14 AS Field14 ,        
                tblOrderDocDA.strSubFormated AS SubFormatted ,        
                tblOrderDocDA.strVATFormatted AS VATFormatted ,        
                tblOrderDocDA.strTotFormatted AS TotalFormatted ,        
                tblOrderDocDA.decDiscPerc AS DiscountPercentage ,        
                tblOrderDocDA.decDiscAmt AS DiscountAmount ,        
                tblOrderDocDA.decDiscAmtF AS DiscountAmountForeign ,        
                tblOrderDocDA.strDiscFormatted AS DiscountFormatted ,        
                tblOrderDocDA.strStatusTypeCode AS StatusTypeCode ,        
                tblOrderDocDA.decTotalWeight AS TotalWeight ,        
                tblOrderDocDA.decTotalVolWeight AS TotalVolWeight ,        
                tblOrderDocDA.strSOReasonCode AS SOReasonCode ,        
                tblOrderDocDA.decDeliveryCost AS DeliveryCost ,        
                tblOrderDocDA.decDeliveryCostF AS DeliveryCostForeign ,        
                tblOrderDocDA.strDeliveryCostFormatted AS DeliveryCostFormatted ,        
                tblOrderDocDA.strDelMethodCode AS DelMethodCode ,        
                tblOrderDocDA.strStoreNumber AS StoreNumber ,        
                tblOrderDocDA.strEDI AS EDI ,        
				tblOrderDocDA.strCustName AS CustomerName,        
				C.strCustDesc AS CustomerDescription      
               -- ISNULL(tblCustomers.strCustName, '') AS CustomerName        
        FROM    tblOrderDocDA (NOLOCK)              
                LEFT JOIN tblCustomers  (NOLOCK) ON tblOrderDocDA.strCustName = tblCustomers.strCustName        
				LEFT JOIN tblCustomers  (NOLOCK) AS C on tblOrderDocDA.strCustName = C.strCustName      
        WHERE   tblOrderDocDA.strOrdDADocID = @DocNum        
		END
        ELSE
		BEGIN
		SELECT  tblOrderDoc.strOrdDocID AS DocumentNumber ,        
                tblOrderDoc.strOrdFQDocID AS OrdFQDocID ,        
                tblOrderDoc.dteSystemDate AS SystemDate ,        
                tblOrderDoc.dteJournalDate AS JournalDate ,        
                tblOrderDoc.dteRequired AS [Required] ,        
                tblOrderDoc.strUserName AS UserName ,        
                tblOrderDoc.strSoldTo AS SoldTo ,        
                tblOrderDoc.strShipTo AS ShipTo ,        
                tblOrderDoc.strReference AS Reference ,        
                tblOrderDoc.decSubTotal AS SubTotal ,        
                tblOrderDoc.decVAT AS VAT ,        
                tblOrderDoc.decTotal AS Total ,        
                tblOrderDoc.decSubTotalF AS SubTotalF ,        
                tblOrderDoc.decVATF AS VATF ,        
                tblOrderDoc.decTotalF AS TotalF ,        
                tblOrderDoc.strNotes AS Notes ,        
                tblOrderDoc.bitPrinted AS Printed ,        
                tblOrderDoc.bitEmailed AS Emailed ,        
                tblOrderDoc.bitCleared AS IsCleared ,        
                tblOrderDoc.strSalesName AS SalesName ,        
                tblOrderDoc.strAddInfo AS AdditionalInfo ,        
                tblOrderDoc.strCurrency AS CurrencyCode ,        
                tblOrderDoc.bitIsForeign AS IsForeign ,        
                tblOrderDoc.decSubTotalF AS SubTotalForeign ,        
                tblOrderDoc.decVATF AS VATForeign ,        
                tblOrderDoc.decTotalF AS TotalForeign ,        
                tblOrderDoc.decExchange AS ExchangeRate ,        
                tblOrderDoc.strTerm AS Term ,        
                tblOrderDoc.intDept AS Dept ,        
                tblOrderDoc.strField1 AS Field1 ,        
                tblOrderDoc.strField2 AS Field2 ,        
                tblOrderDoc.strField3 AS Field3 ,        
                tblOrderDoc.strField4 AS Field4 ,        
                tblOrderDoc.strField5 AS Field5 ,        
                tblOrderDoc.strField6 AS Field6 ,        
                tblOrderDoc.strField7 AS Field7 ,        
                tblOrderDoc.strField8 AS Field8 ,        
                tblOrderDoc.strField9 AS Field9 ,        
                tblOrderDoc.strField10 AS Field10 ,        
                tblOrderDoc.strField11 AS Field11 ,        
                tblOrderDoc.strField12 AS Field12 ,        
				tblOrderDoc.dteField13 AS Field13 ,        
				tblOrderDoc.dteField14 AS Field14 ,        
                tblOrderDoc.strSubFormated AS SubFormatted ,        
                tblOrderDoc.strVATFormatted AS VATFormatted ,        
                tblOrderDoc.strTotFormatted AS TotalFormatted ,        
                tblOrderDoc.decDiscPerc AS DiscountPercentage ,        
                tblOrderDoc.decDiscAmt AS DiscountAmount ,        
                tblOrderDoc.decDiscAmtF AS DiscountAmountForeign ,        
                tblOrderDoc.strDiscFormatted AS DiscountFormatted ,        
                tblOrderDoc.strStatusTypeCode AS StatusTypeCode ,        
                tblOrderDoc.decTotalWeight AS TotalWeight ,        
                tblOrderDoc.decTotalVolWeight AS TotalVolWeight ,        
                tblOrderDoc.strSOReasonCode AS SOReasonCode ,        
                tblOrderDoc.decDeliveryCost AS DeliveryCost ,        
                tblOrderDoc.decDeliveryCostF AS DeliveryCostForeign ,        
                tblOrderDoc.strDeliveryCostFormatted AS DeliveryCostFormatted ,        
                tblOrderDoc.strDelMethodCode AS DelMethodCode ,        
                tblOrderDoc.strStoreNumber AS StoreNumber ,        
                tblOrderDoc.strEDI AS EDI ,        
				tblOrderDoc.strCustName AS CustomerName  ,      
				C.strCustDesc AS CustomerDescription      
               -- ISNULL(tblCustomers.strCustName, '') AS CustomerName        
        FROM    tblOrderDoc (NOLOCK)        
                LEFT JOIN tblOrderDocQ  (NOLOCK) ON tblOrderDoc.strOrdFQDocID = tblOrderDocQ.strOrdDocID        
                LEFT JOIN tblCustomers  (NOLOCK) ON tblOrderDocQ.strCustName = tblCustomers.strCustName        
				LEFT JOIN tblCustomers  (NOLOCK) AS C on tblOrderDoc.strCustName = C.strCustName      
        WHERE   tblOrderDoc.strOrdDocID = @DocNum        
		END
END 
GO

CREATE PROCEDURE [dbo].[GetOrderDocDADTForLoadSOMobile] 
	( 
	@DocNumber NVARCHAR(MAX),
	@IsDeliveryAdvice BIT = 0
	--DocNum
	)
AS
    BEGIN
		IF @IsDeliveryAdvice = 1
		BEGIN
		SELECT  tblOrderDocDADT.strOrdDADocID AS OrdDocID ,
                tblOrderDocDADT.intLineNo AS [LineNo] ,
                tblOrderDocDADT.strPartNumber AS PartNumber ,
                tblOrderDocDADT.strLocation AS Location ,
                tblOrderDocDADT.strPartDesc AS PartDesc ,
                tblOrderDocDADT.decQty AS Qty ,
                tblOrderDocDADT.decQtyRemain AS QtyRemaining ,
                tblOrderDocDADT.strUnit AS Unit ,
                tblOrderDocDADT.intType AS Type ,
                tblOrderDocDADT.decPriceEaExc AS PriceEaExc ,
                tblOrderDocDADT.decLineTotExc AS LineTotExc ,
                tblOrderDocDADT.decLineTaxAmt AS LineTaxAmt ,
                tblOrderDocDADT.decPriceEaInc AS PriceEaInc ,
                tblOrderDocDADT.decLineTotInc AS LineTotInc ,
                tblOrderDocDADT.strTaxCode AS TaxCode ,
                tblOrderDocDADT.imgTaxObj AS TaxObj ,
                tblOrderDocDADT.strCurrency AS Currency ,
                tblOrderDocDADT.bitIsForeign AS IsForeign ,
                tblOrderDocDADT.decPriceEaExcF AS PriceEaExcF ,
                tblOrderDocDADT.decLineTotExcF AS LineTotExcF ,
                tblOrderDocDADT.decLineTaxAmtF AS LineTaxAmtF ,
                tblOrderDocDADT.decEaIncTaxF AS EaIncTaxF ,
                tblOrderDocDADT.decTotIncTaxF AS TotIncTaxF ,
                tblOrderDocDADT.strInvField1 AS InvField1 ,
                tblOrderDocDADT.strInvField2 AS InvField2 ,
                tblOrderDocDADT.strInvField3 AS InvField3 ,
                tblOrderDocDADT.strInvField4 AS InvField4 ,
                tblOrderDocDADT.strInvField5 AS InvField5 ,
                tblOrderDocDADT.strInvField6 AS InvField6 ,
                tblOrderDocDADT.strLineField1 AS LineField1 ,
                tblOrderDocDADT.strLineField2 AS LineField2 ,
                tblOrderDocDADT.strLineField3 AS LineField3 ,
                tblOrderDocDADT.strLineField4 AS LineField4 ,
                tblOrderDocDADT.strLineField5 AS LineField5 ,
                tblOrderDocDADT.strLineField6 AS LineField6 ,
                tblOrderDocDADT.strLineField7 AS LineField7 ,
                tblOrderDocDADT.strLineField8 AS LineField8 ,
                tblOrderDocDADT.strLineField9 AS LineField9 ,
                tblOrderDocDADT.strLineField10 AS LineField10 ,
                tblOrderDocDADT.strLineField11 AS LineField11 ,
                tblOrderDocDADT.strLineField12 AS LineField12 ,
                tblOrderDocDADT.decLineDiscPerc AS LineDiscPerc ,
                tblOrderDocDADT.decLineDiscAmt AS LineDiscAmt ,
                tblOrderDocDADT.decLineDiscAmtF AS LineDiscAmtF ,
                tblOrderDocDADT.bitDiscountTax AS DiscountTax ,
                tblOrderDocDADT.decStockQty AS StockQty ,
                tblOrderDocDADT.strStockUnit AS StockUnit ,
                tblOrderDocDADT.decStockQtyRemain AS StockQtyRemain ,
                tblOrderDocDADT.strSalesName AS SalesName ,
                tblOrderDocDADT.strPartExtendedDesc AS PartExtendedDesc ,
                tblOrderDocDADT.decBuyoutCost AS BuyoutCost ,
                tblOrderDocDADT.decItemWeight AS ItemWeight ,
                tblOrderDocDADT.decVolumetricWeight AS VolumetricWeight ,
                tblOrderDocDADT.bitContainerItem AS ContainerItem ,
                tblOrderDocDADT.bitDelCost AS IsDelCost ,
                tblOrderDocDADT.intBillingMethod AS BillingMethod ,
				tblOrderDocDADT.uidContainerItem AS ContainerItemID ,
                ISNULL(tblOrderDocDADTPrj.strProjNumber, '') AS ProjNumber ,
                tblInv.bitInvSerialType AS IsInvSerialType,
                tblInv.strUnitOfMeasure AS UnitOfMeasure,
                tblInv.strDimProCode AS DimProCode,
                ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist,
				tblInv.strBarCode AS BarCode,
				tblInv.strBarCode2 AS BarCode2,
				tblInv.decSellFromStock AS SellFromStock
        FROM    tblOrderDocDA (NOLOCK)
                INNER JOIN tblOrderDocDADT  (NOLOCK) ON tblOrderDocDA.strOrdDADocID = tblOrderDocDADT.strOrdDADocID
                INNER JOIN tblInv  (NOLOCK) ON tblOrderDocDADT.strPartNumber = tblInv.strPartNumber
                LEFT JOIN tblOrderDocDADTPrj (NOLOCK) ON tblOrderDocDADT.strOrdDADocID = tblOrderDocDADTPrj.strOrdDADocID
                                              AND tblOrderDocDADT.intLineNo = tblOrderDocDADTPrj.intLineNo
                LEFT JOIN tblInvSerialTypes (NOLOCK) ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
        WHERE   tblOrderDocDADT.strOrdDADocID = @DocNumber
                AND tblOrderDocDADT.decStockQtyRemain <> 0
                AND tblOrderDocDADT.bitDiscountTax = 0
        ORDER BY tblOrderDocDADT.intLineNo
		END
		ELSE
		BEGIN
        SELECT  tblOrderDocDT.strOrdDocID AS OrdDocID ,
                tblOrderDocDT.intLineNo AS [LineNo] ,
                tblOrderDocDT.strPartNumber AS PartNumber ,
                tblOrderDocDT.strLocation AS Location ,
                tblOrderDocDT.strPartDesc AS PartDesc ,
                tblOrderDocDT.decQty AS Qty ,
                tblOrderDocDT.decQtyRemaining AS QtyRemaining ,
                tblOrderDocDT.strUnit AS Unit ,
                tblOrderDocDT.intType AS Type ,
                tblOrderDocDT.decPriceEaExc AS PriceEaExc ,
                tblOrderDocDT.decLineTotExc AS LineTotExc ,
                tblOrderDocDT.decLineTaxAmt AS LineTaxAmt ,
                tblOrderDocDT.decPriceEaInc AS PriceEaInc ,
                tblOrderDocDT.decLineTotInc AS LineTotInc ,
                tblOrderDocDT.strTaxCode AS TaxCode ,
                tblOrderDocDT.imgTaxObj AS TaxObj ,
                tblOrderDocDT.strCurrency AS Currency ,
                tblOrderDocDT.bitIsForeign AS IsForeign ,
                tblOrderDocDT.decPriceEaExcF AS PriceEaExcF ,
                tblOrderDocDT.decLineTotExcF AS LineTotExcF ,
                tblOrderDocDT.decLineTaxAmtF AS LineTaxAmtF ,
                tblOrderDocDT.decEaIncTaxF AS EaIncTaxF ,
                tblOrderDocDT.decTotIncTaxF AS TotIncTaxF ,
                tblOrderDocDT.strInvField1 AS InvField1 ,
                tblOrderDocDT.strInvField2 AS InvField2 ,
                tblOrderDocDT.strInvField3 AS InvField3 ,
                tblOrderDocDT.strInvField4 AS InvField4 ,
                tblOrderDocDT.strInvField5 AS InvField5 ,
                tblOrderDocDT.strInvField6 AS InvField6 ,
                tblOrderDocDT.strLineField1 AS LineField1 ,
                tblOrderDocDT.strLineField2 AS LineField2 ,
                tblOrderDocDT.strLineField3 AS LineField3 ,
                tblOrderDocDT.strLineField4 AS LineField4 ,
                tblOrderDocDT.strLineField5 AS LineField5 ,
                tblOrderDocDT.strLineField6 AS LineField6 ,
                tblOrderDocDT.strLineField7 AS LineField7 ,
                tblOrderDocDT.strLineField8 AS LineField8 ,
                tblOrderDocDT.strLineField9 AS LineField9 ,
                tblOrderDocDT.strLineField10 AS LineField10 ,
                tblOrderDocDT.strLineField11 AS LineField11 ,
                tblOrderDocDT.strLineField12 AS LineField12 ,
                tblOrderDocDT.decLineDiscPerc AS LineDiscPerc ,
                tblOrderDocDT.decLineDiscAmt AS LineDiscAmt ,
                tblOrderDocDT.decLineDiscAmtF AS LineDiscAmtF ,
                tblOrderDocDT.bitDiscountTax AS DiscountTax ,
                tblOrderDocDT.decStockQty AS StockQty ,
                tblOrderDocDT.strStockUnit AS StockUnit ,
                tblOrderDocDT.decStockQtyRemain AS StockQtyRemain ,
                tblOrderDocDT.strSalesName AS SalesName ,
                tblOrderDocDT.strPartExtendedDesc AS PartExtendedDesc ,
                tblOrderDocDT.decBuyoutCost AS BuyoutCost ,
                tblOrderDocDT.decItemWeight AS ItemWeight ,
                tblOrderDocDT.decVolumetricWeight AS VolumetricWeight ,
                tblOrderDocDT.bitContainerItem AS ContainerItem ,
                tblOrderDocDT.bitDelCost AS IsDelCost ,
                tblOrderDocDT.intBillingMethod AS BillingMethod ,
				tblOrderDocDT.uidContainerItem AS ContainerItemID ,
                ISNULL(tblOrderDocDTPrj.strProjNumber, '') AS ProjNumber ,
                tblInv.bitInvSerialType AS IsInvSerialType,
                tblInv.strUnitOfMeasure AS UnitOfMeasure,
                tblInv.strDimProCode AS DimProCode,
                ISNULL(tblInvSerialTypes.bitDimensionExist, 0) AS IsDimensionExist,
				tblInv.strBarCode AS BarCode,
				tblInv.strBarCode2 AS BarCode2,
				tblInv.decSellFromStock AS SellFromStock
        FROM    tblOrderDoc (NOLOCK)
                INNER JOIN tblOrderDocDT  (NOLOCK) ON tblOrderDoc.strOrdDocID = tblOrderDocDT.strOrdDocID
                INNER JOIN tblInv  (NOLOCK) ON tblOrderDocDT.strPartNumber = tblInv.strPartNumber
                LEFT JOIN tblOrderDocDTPrj (NOLOCK) ON tblOrderDocDT.strOrdDocID = tblOrderDocDTPrj.strOrdDocID
                                              AND tblOrderDocDT.intLineNo = tblOrderDocDTPrj.intLineNo
                LEFT JOIN tblInvSerialTypes (NOLOCK) ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
        WHERE   tblOrderDoc.strOrdDocID = @DocNumber
                AND tblOrderDocDT.decStockQtyRemain <> 0
                AND tblOrderDocDT.bitDiscountTax = 0
        ORDER BY tblOrderDocDT.intLineNo
		END
END
GO

CREATE PROCEDURE DoSMSReminders
AS
BEGIN
	INSERT INTO tblSMSMessages (
		strCellNumber
		,strMessage
		,strSentBy
		,dteEntered
		,dteSent
		,strServerID
		,bitProcessed
		,bitReply
		) (
		SELECT tblCustomers.strCellPhone
		,tblReminders.strMessage
		,'Reminders'
		,GETDATE()
		,NULL
		,''
		,0
		,0 FROM tblCustomers INNER JOIN tblReminders ON tblCustomers.strCustName = tblReminders.strCustName WHERE (tblCustomers.strCellPhone <> '')
		AND (tblReminders.dteNextSend <= GETDATE())
		)

	UPDATE tblReminders
	SET dteNextSend = DATEADD(MONTH, tblReminders.intFreq, tblReminders.dteNextSend)
	WHERE lngID IN (
			SELECT tblReminders.lngID
			FROM tblCustomers
			INNER JOIN tblReminders ON tblCustomers.strCustName = tblReminders.strCustName
			WHERE tblCustomers.strCellPhone <> ''
				AND tblReminders.dteNextSend <= GETDATE()
			)
END
GO

CREATE PROCEDURE [dbo].[GetInvQty] @PartNumber NVARCHAR(200)
AS
BEGIN
	SELECT CAST(intBOMQty as decimal) as BOMQty  FROM tblInv
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE GetInventoryForEmpIssueMaterialsProfile @SearchText AS NVARCHAR(max)
AS
BEGIN
	SELECT tblInv.strDesc AS [Description]
		,tblInv.strPartNumber AS PartNumber
		,strUnitOfMeasure AS Unit
		,strCategory AS Category
	FROM tblInv
	WHERE (
			tblInv.strPartNumber = @SearchText
			OR tblInv.strBarCode = @SearchText
			OR tblInv.strBarCode2 = @SearchText
			)
		AND (tblInv.intType = 1)
END
GO

CREATE PROCEDURE GetLinkToOtherPricelistForItemsRecordCount @MasterId AS INT
AS
BEGIN
	SELECT COUNT(1) AS RecordCount
	FROM tblPricelistsItems
	WHERE intPricelistMasterId = @MasterId
END
GO


CREATE PROCEDURE [dbo].[GetDefaultBinCodeRepack]  
 @PartNumber nvarchar(50),  
 @Location nvarchar(10)  
AS  
BEGIN  
 SELECT strBinCode as BinCode, Extbin.lngBinID AS BinId
 FROM tblInvLocBin AS Locbin  
 INNER JOIN tblInvExtBin AS Extbin ON Extbin.lngBinID = Locbin.lngID  
 WHERE Extbin.strPartNumber = @PartNumber AND Extbin.strLocName = @Location AND Extbin.bitDefault = 1  
END 
GO

CREATE PROCEDURE GetInvBOMItemsForRepackage @PartNumber AS NVARCHAR(max)
AS
BEGIN
	SELECT strPartNumber AS PartNumber
		,strPartItemNumber AS PartItemNumber
		,intQtyToUse AS QtyToUse
		,strLocName AS LocName
	FROM tblInvBOM
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE GetDaysSalesInStockByNumber @PartNumber AS NVARCHAR(max)
AS
BEGIN
	SELECT ISNULL(decDaysSalesinStock, 0)
	FROM tblInv
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[InsertInvIntReqDocDTOnly] (  
@InvIntReqDocDTTableType InvIntReqDocDTTableType READONLY  
)  
AS  
BEGIN  
INSERT INTO [dbo].[tblInvIntReqDocDT] (  
[strInvIntReqDocID]  
,[intLineNo]  
,[strPartNumber]  
,[decQty]  
,[decUnitCost]  
,[decAmount]  
,[strEmpNumber]  
,[strFromUnit]  
,[strConversionType]  
,[decConversionFactor]  
,[strStockUnit]  
)  
SELECT [InvIntReqDocID]  
,[LineNo]  
,[PartNumber]  
,[Qty]  
,[UnitCost]  
,[Amount]  
,[EmpNumber]  
,[FromUnit]  
,[ConversionType]  
,[ConversionFactor]  
,[StockUnit]  
FROM @InvIntReqDocDTTableType;  

end
GO

CREATE PROCEDURE [dbo].[GetBinInvoicesStandardTemplate] 
	-- Add the parameters for the stored procedure here
	@SQStart as DateTime,
	@SQEnd as DateTime
	
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT tblInvoiceDoc.strInvDocID AS DocID, tblInvoiceDocDT.intLineNo AS [LineNo], 
	CASE WHEN tblInvLocBin.strBinCode IS NULL THEN BIN2.strBinCode ELSE tblInvLocBin.strBinCode END AS BinCode, 
	CASE WHEN tblInvoiceDocDTBin.decQty IS NULL THEN tblInvoiceDocDT.decQty ELSE tblInvoiceDocDTBin.decQty END AS Qty 
	FROM tblInvoiceDoc INNER JOIN tblInvoiceDocDT ON tblInvoiceDoc.strInvDocID = tblInvoiceDocDT.strInvDocID 
	LEFT JOIN tblInvoiceDocDTBin ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTBin.strInvDocID
	AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTBin.intLineNo 
	LEFT JOIN tblInvLocBin ON tblInvoiceDocDTBin.lngBinID = tblInvLocBin.lngID 
	LEFT JOIN tblInvExtBin ON tblInvoiceDocDT.strPartNumber = tblInvExtBin.strPartNumber 
	AND tblInvoiceDocDT.strLocation = tblInvExtBin.strLocName AND tblInvExtBin.bitDefault = 1 
	LEFT JOIN tblInvLocBin BIN2 ON tblInvExtBin.lngBinID = BIN2.lngID WHERE (tblInvoiceDoc.bitHistoryTrans = 0)
	AND (tblInvoiceDoc.bitReserved = 0) AND (tblInvoiceDocDT.intType <> 5) 
	AND (dteJournalDate BETWEEN @SQStart AND @SQEnd) ORDER BY tblInvoiceDoc.strInvDocID, tblInvoiceDocDT.intLineNo
END
GO

CREATE PROCEDURE [dbo].[GetItemNumberType] 
 @ItemRename as nvarchar(100)

 AS 
 Begin

   SELECT cast(intNumberType as INT) FROM tblInvNumConv where strInvNumConv=@ItemRename

END
GO


CREATE PROCEDURE [dbo].[InsertInvImage]
    @tblData InvImgsTableType READONLY
AS
BEGIN
    SET NOCOUNT ON;

    INSERT INTO tblInvImg(strPartNumber, imgData, bitDefaultImage)
    SELECT strPartNumber, imgData, bitDefaultImage
    FROM @tblData;
END
GO

CREATE PROCEDURE [dbo].[UpdateLastIdForPS] (
	@Num BIGINT
	)
AS
BEGIN
	UPDATE tblLastIDs SET lngPSNumber = @Num
END
GO

CREATE PROCEDURE [dbo].[SaveAbbreviation]
(
@Abbreviation varchar(10) = NULL,
@FulForm varchar(500) = NULL,
@Inactive bit = NULL,
@Id INT = NULL
)
AS 
BEGIN

 SET NOCOUNT ON;
    IF ( @Id = 0)
        BEGIN
            INSERT  INTO tblAbbreviation(Abbreviation,FullForm,Inactive,DateAdded)
			VALUES(@Abbreviation,@FulForm,@Inactive,GETDATE())
	    END
	ELSE

	UPDATE tblAbbreviation
	SET Abbreviation = @Abbreviation, FullForm = @FulForm, Inactive = @Inactive, DateUpdated = GETDATE()
	WHERE ID = @id

END
GO

CREATE PROCEDURE [dbo].[GetOwnersListDataFromServiceableItem] (
@PageSize INT = 25
,@PageNumber INT = 1
,@Search AS NVARCHAR(Max) = '')
AS
BEGIN
	DECLARE @skip INT
	SET @skip = @PageSize * (@PageNumber - 1)
 
	SELECT *  
FROM tblOwners 
	WHERE (
			ISNULL(OwnerName, '') LIKE '%' + ISNULL(@search, OwnerName) + '%'
			OR ISNULL(OwnerDesc, '') LIKE '%' + ISNULL(@search, OwnerDesc) + '%'
			)
			AND Inactive = 0
	ORDER BY OwnerName OFFSET(@Skip) ROWS
 
	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

CREATE PROCEDURE [dbo].[GetOwnersListDataCountFromServiceableItem]
@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT count(*)
	FROM tblOwners
	WHERE (
			ISNULL(OwnerName, '') LIKE '%' + ISNULL(@search, OwnerName) + '%'
			OR ISNULL(OwnerDesc, '') LIKE '%' + ISNULL(@search, OwnerDesc) + '%'
			)
			AND Inactive = 0
END
GO

CREATE PROCEDURE RptJournalHyperLinkCustPayId
@SQstrDocNumber AS NVARCHAR(Max) = ''
AS
BEGIN
SELECT lngCustPayID FROM tblCustPay WHERE strSource = @SQstrDocNumber
END
GO

CREATE PROCEDURE RptJournalVendPayHyperLinkCount
@SQstrDocNumber AS NVARCHAR(Max) = ''
AS
BEGIN
SELECT Cast(Count(lngVendPayID) as bigint) FROM tblVendPay WHERE strSource = @SQstrDocNumber
END
GO

CREATE PROCEDURE SaveAutoCompleteFields 
		  @intField INT, 
		  @strValue NVARCHAR(200),
		  @intModule INT

		  AS 
		  BEGIN

		  IF NOT EXISTS (SELECT 1 FROM tblAutoComplete WHERE intField = @intField AND strValue = @strValue AND intModule = @intModule)
		    INSERT INTO tblAutoComplete(intField,strValue,intModule) 
			Values(@intField, @strValue,@intModule)
	     END
GO


CREATE PROCEDURE [dbo].[InsertInvAdjDocDTSerial] (
	@SerialTable AS NVARCHAR(MAX)
	,@TransactionID AS NVARCHAR(MAX)
	,@SQDocID AS NVARCHAR(50)
	,@SQintLineNo AS INT
	,@SQstrSerialNumber AS NVARCHAR(50)
	,@SQdecQty AS DECIMAL
	,@SQstrUnit AS NVARCHAR(50)
	,@SQbitExpiryDate AS BIT
	,@SQdteExpiryDate AS DATETIME = NULL
	,@SQintSerialLotType AS INT
	,@SQlngBinID AS BIGINT = NULL
	)
AS
BEGIN
	INSERT INTO tblInvAdjDocDTSerial (
		strAdjDocID
		,intLineNo
		,strSerialNumber
		,decQty
		,strUnit
		,bitExpiryDate
		,dteExpiryDate
		,intSerialLotType
		,lngBinID
		)
	VALUES (
		@SQDocID
		,@SQintLineNo
		,@SQstrSerialNumber
		,@SQdecQty
		,@SQstrUnit
		,@SQbitExpiryDate
		,@SQdteExpiryDate
		,@SQintSerialLotType
		,@SQlngBinID
		)
END
GO

CREATE PROCEDURE [dbo].[GetBulkLabelPrintingSerial] 
	@SQDate SMALLDATETIME = NULL
	,@SQApply BIT = 0
	,@SQCategory NVARCHAR(Max) = ''
	,@SQSubCategory NVARCHAR(Max) = ''
	,@SQLocation NVARCHAR(Max) = ''
	,@SQSearch NVARCHAR(100) = ''
	,@SQWithPrice BIT = 0
	,@SQPricelist NVARCHAR(100) = 'REGULAR'
	,@SQuidPriceBasedID NVARCHAR(100) = 0
	,@SQPriceSince DATETIME
	,@SQShowPrices BIT = 0
	,@SQShowOnHandQtyOnly BIT = 0
	,@SQBinCode NVARCHAR(Max) = ''
	,@PageSize INT = 25
	,@PageNum  INT =1
AS
BEGIN
  DECLARE @Offset INT
  SET @Offset = @PageSize * (@PageNum-1)

DECLARE @SplitWord TABLE(wordRank INT, word VARCHAR(200))
SET @SQSearch = LTRIM(RTRIM(@SQSearch)) -- Remove white space
DECLARE @WordSeperator VARCHAR(1) =' '

  DECLARE @TotalWord Int=0
  DECLARE @WordCount Int=1
  DECLARE @Keyword1 VARCHAR(100)=''
  DECLARE @Keyword2 VARCHAR(100)=''
  DECLARE @Keyword3 VARCHAR(100)=''
  DECLARE @Keyword4 VARCHAR(100)=''
  DECLARE @Keyword5 VARCHAR(100)=''
  DECLARE @Keyword6 VARCHAR(100)=''
  DECLARE @Keyword7 VARCHAR(100)=''
  DECLARE @Keyword8 VARCHAR(100)=''
  DECLARE @Keyword9 VARCHAR(100)=''
  DECLARE @Keyword10 VARCHAR(100)=''

  IF(CHARINDEX(',',@SQSearch)) > 0 
	BEGIN
		 SET @WordSeperator=','
	END  


INSERT INTO @SplitWord select Id, [Data] from dbo.split(@SQSearch, @WordSeperator)

SET @TotalWord=(SELECT COUNT(*) FROM @SplitWord)

While(@WordCount<=@TotalWord)
Begin
		IF @WordCount=1 
			BEGIN
				SET @Keyword1=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=2 
			BEGIN
				SET @Keyword2=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=3 
			BEGIN
				SET @Keyword3=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=4 
			BEGIN
				SET @Keyword4=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=5 
			BEGIN
				SET @Keyword5=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=6 
			BEGIN
				SET @Keyword6=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=7 
			BEGIN
				SET @Keyword7=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=8 
			BEGIN
				SET @Keyword8=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=9
			BEGIN
				SET @Keyword9=(Select Word from @SplitWord Where wordRank=@WordCount)
			END
		IF @WordCount=10 
			BEGIN
				SET @Keyword10=(Select Word from @SplitWord Where wordRank=@WordCount)
			END

	SET @WordCount=@WordCount+1
End

CREATE TABLE #TempINVSerialLot (
[strPartNumber] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strSerialNumber] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[strLocName] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[decQty] [money] NOT NULL,
[bitExpiryDate] [bit] NULL,
[dteExpiryDate] [datetime] NULL,
[lngBinID] [int] NOT NULL,
[intLotSerial] [int] NOT NULL,
)

Insert into #TempINVSerialLot 
Select * from (
Select strPartNumber,strSerialNumber,strLocName,decQty,0 AS bitExpiryDate,NULL AS dteExpiryDate,lngBinID,1 as intLotSerial from tblInvSerialExt
Union all
Select strPartNumber,strLotNumber,strLocName,decQty,bitExpiryDate,dteExpiryDate,lngBinID,2 as intLotSerial from tblInvLotExt
) as tmpSerialLot

DECLARE @uidPriceBasedID AS UNIQUEIDENTIFIER
SET @uidPriceBasedID = NULL
IF ISNULL(@SQPricelist, '') <> ''	AND ISNULL(@SQDate, '') <> '' And isnull(@SQuidPriceBasedID,'')=''
BEGIN
SELECT TOP 1 @uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
FROM tblPriceListsByDate
INNER JOIN dbo.tblInvPrice ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
WHERE @SQDate BETWEEN dbo.tblPriceListsByDate.dteStartDate AND dbo.tblPriceListsByDate.dteFinishDate AND tblPriceListsByDate.strPricelist = @SQPricelist
END
ELSE
BEGIN
SELECT TOP 1 @uidPriceBasedID = tblPriceListsByDate.uidPriceBasedID
FROM tblPriceListsByDate
INNER JOIN dbo.tblInvPrice ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
WHERE @SQDate BETWEEN dbo.tblPriceListsByDate.dteStartDate AND dbo.tblPriceListsByDate.dteFinishDate AND tblPriceListsByDate.strPricelist = 'REGULAR'
END

	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	IF (@SQShowOnHandQtyOnly = 0)
	BEGIN
		IF (@SQShowPrices = 0)
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
				Select  0 AS bitSelect,*,CASE 
							WHEN @SQApply = 0
								THEN 0 ELSE Cast(decSumOnHand as int) end as intAmount 
								from (
					SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory					
					,(Select top 1 t.decSelling from tblInvPrice t where t.strPartNumber=tblInv.strPartNumber and t.strPricelist='Regular' and t.uidPriceBasedID=@uidPriceBasedID) as decSelling
					,isnull((
							SELECT Sum(temp1.decQty)
										FROM [tblInvLocBin] 
										INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
											AND [tblInvLocBin].strLocName =  temp1.strLocName AND temp1.strSerialNumber=#TempINVSerialLot.strSerialNumber
											AND [tblInvLocBin].lngID =  temp1.lngBinID
								WHERE temp1.strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)	
								AND tblInvLocBin.bitInactive= 0						
							), 0) AS decSumOnHand
					,(Select dteUpdatedDate from dbo.tblInvPriceTracking  where
						dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						GROUP BY a.strPartNumber
						))  as dteUpdatedDate
						,tblInvPrice.strUnit
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strCategory) AS RowNumber
					,#TempINVSerialLot.strSerialNumber AS SerialNumber
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM [tblInvExt] (NOLOCK)
				INNER JOIN [tblInv] (NOLOCK) ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				Inner join #TempINVSerialLot on [tblInv].strPartNumber = #TempINVSerialLot.strPartNumber and  [tblInvExt].strLocName = #TempINVSerialLot.strLocName
				INNER JOIN dbo.tblInvPrice (NOLOCK) ON (dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID or @uidPriceBasedID is null)
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = 'REGULAR')
					--AND (
					--	@SQDate BETWEEN tblPriceListsByDate.dteStartDate
					--		AND tblPriceListsByDate.dteFinishDate
					--	)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,#TempINVSerialLot.strSerialNumber 
					,tblInvPrice.strUnit
					,tblInvUOMs.decConversionFactor
						,tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.strPartNumber
					) As result  WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
				ORDER BY RowNumber
			END
			ELSE
			BEGIN
				Select  0 AS bitSelect,*,
								CASE WHEN @SQApply = 0
								THEN 0 ELSE Cast(decSumOnHand as int) end as intAmount 
								from (
					SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,(Select top 1 t.decSelling from tblInvPrice t where t.strPartNumber=tblInv.strPartNumber and t.strPricelist=@SQPricelist and t.uidPriceBasedID=@SQuidPriceBasedID) as decSelling
					,isnull((
							SELECT Sum(temp1.decQty)
										FROM [tblInvLocBin] 
										INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
											AND [tblInvLocBin].strLocName =  temp1.strLocName AND temp1.strSerialNumber=#TempINVSerialLot.strSerialNumber
											AND [tblInvLocBin].lngID =  temp1.lngBinID
								WHERE temp1.strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
							AND tblInvLocBin.bitInactive= 0
							), 0) AS decSumOnHand
					,(Select dteUpdatedDate from dbo.tblInvPriceTracking  where
			    dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE (a.uidPriceBasedID = @SQuidPriceBasedID)
						GROUP BY a.strPartNumber
						))  as dteUpdatedDate
					,tblInvPrice.strUnit
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strCategory) AS RowNumber
					,#TempINVSerialLot.strSerialNumber AS SerialNumber
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM [tblInvExt] (NOLOCK)
				INNER JOIN [tblInv] (NOLOCK) ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				Inner join #TempINVSerialLot on [tblInv].strPartNumber = #TempINVSerialLot.strPartNumber and  [tblInvExt].strLocName = #TempINVSerialLot.strLocName
				INNER JOIN dbo.tblInvPrice (NOLOCK) ON (dbo.tblInvPrice.uidPriceBasedID = @SQuidPriceBasedID or @SQuidPriceBasedID is null)	
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				--and tblinv.strPartNumber=tblInvPrice.strPartNumber
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = @SQPricelist)
					
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,#TempINVSerialLot.strSerialNumber 
					,tblInvPrice.strUnit
					,tblInvUOMs.decConversionFactor
						,tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.strPartNumber
					) As result  
					WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
				
			END
		END
		ELSE
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
				Select  0 AS bitSelect,*,
								CASE WHEN @SQApply = 0
								THEN 0 ELSE Cast(decSumOnHand as int) end as intAmount 
								from (
				SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,(Select top 1 t.decSelling from tblInvPrice t where t.strPartNumber=tblInv.strPartNumber and t.strPricelist='Regular' and t.uidPriceBasedID=@uidPriceBasedID) as decSelling
					,isnull((
							SELECT Sum(temp1.decQty)
										FROM [tblInvLocBin] 
										INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
											AND [tblInvLocBin].strLocName =  temp1.strLocName AND temp1.strSerialNumber=#TempINVSerialLot.strSerialNumber
											AND [tblInvLocBin].lngID =  temp1.lngBinID
								WHERE temp1.strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
									AND tblInvLocBin.bitInactive= 0
							), 0) AS decSumOnHand
					,(Select dteUpdatedDate from dbo.tblInvPriceTracking  where
						dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE) And a.uidPriceBasedID=@uidPriceBasedID
						GROUP BY a.strPartNumber
						))  as dteUpdatedDate
						,tblInvPrice.strUnit
					--,tblInvPriceTracking.decPriceFrom
					--,tblInvPriceTracking.decPriceTo
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strCategory) AS RowNumber
					,#TempINVSerialLot.strSerialNumber AS SerialNumber
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM [tblInvExt] (NOLOCK)
				INNER JOIN [tblInv] (NOLOCK) ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				Inner join #TempINVSerialLot on [tblInv].strPartNumber = #TempINVSerialLot.strPartNumber and  [tblInvExt].strLocName = #TempINVSerialLot.strLocName
				INNER JOIN dbo.tblInvPrice (NOLOCK) ON (dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID or @uidPriceBasedID is null)
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = 'REGULAR')
				
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					--AND tblInvPriceTracking.lngInvPriceTrackID IN (
					--	SELECT Max(a.lngInvPriceTrackID)
					--	FROM tblInvPriceTracking a
					--	INNER JOIN tblPriceListsByDate b ON a.uidPriceBasedID = b.uidPriceBasedID
					--	WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
					--		AND (
					--			@SQDate BETWEEN b.dteStartDate
					--				AND b.dteFinishDate
					--			)
					--		AND (a.strPricelist = 'REGULAR')
					--	GROUP BY a.strPartNumber
					--	)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,#TempINVSerialLot.strSerialNumber 
					,tblInvPrice.strUnit
					,tblInvUOMs.decConversionFactor
						,tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.strPartNumber
					) As result  
					WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber				
			END
			ELSE
			BEGIN
				Select  0 AS bitSelect,*,
								CASE WHEN @SQApply = 0
								THEN 0 ELSE Cast(decSumOnHand as int) end as intAmount 
								from (
				SELECT 
					tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,(Select top 1 t.decSelling from tblInvPrice t where t.strPartNumber=tblInv.strPartNumber and t.strPricelist=@SQPricelist and t.uidPriceBasedID=@SQuidPriceBasedID) as decSelling
					,isnull((
							SELECT Sum(temp1.decQty)
										FROM [tblInvLocBin] 
										INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
											AND [tblInvLocBin].strLocName =  temp1.strLocName AND temp1.strSerialNumber=#TempINVSerialLot.strSerialNumber
											AND [tblInvLocBin].lngID =  temp1.lngBinID
								WHERE temp1.strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvLocBin.bitInactive= 0
							), 0) AS decSumOnHand
					 ,tblInvPriceTracking.dteUpdatedDate
					,COUNT(*) over () AS intRowCount 
					,ROW_NUMBER () over (order by tblInv.strCategory) AS RowNumber
					,#TempINVSerialLot.strSerialNumber AS SerialNumber
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM [tblInvExt] (NOLOCK)
				INNER JOIN [tblInv] (NOLOCK) ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				Inner join #TempINVSerialLot on [tblInv].strPartNumber = #TempINVSerialLot.strPartNumber and  [tblInvExt].strLocName = #TempINVSerialLot.strLocName
				INNER JOIN dbo.tblInvPrice  (NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
				INNER JOIN dbo.tblPriceListsByDate  (NOLOCK) ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
				INNER JOIN dbo.tblInvPriceTracking  (NOLOCK) ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = @SQPricelist)
					AND (tblPriceListsByDate.uidPriceBasedID = @SQuidPriceBasedID)
					AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
							AND a.uidPriceBasedID = @SQuidPriceBasedID
						GROUP BY a.strPartNumber
						)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
					
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory	
					,tblInvPriceTracking.dteUpdatedDate	
					,#TempINVSerialLot.strSerialNumber
					,tblInvPrice.strUnit
					,tblInvUOMs.decConversionFactor
						,tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.strPartNumber
					) As result  
					WHERE dteUpdatedDate is not null and RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
		END
	END
	ELSE
	BEGIN
		IF (@SQShowPrices = 0)
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
			 Select * from (
			 	Select  0 AS bitSelect,*,
								CASE WHEN @SQApply = 0
								THEN 0 ELSE Cast(decSumOnHand as int) end as intAmount,ROW_NUMBER () over (order by strCategory) AS RowNumber	,COUNT(*) over () AS intRowCount 
								from (
					SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,(Select top 1 t.decSelling from tblInvPrice t where t.strPartNumber=tblInv.strPartNumber and t.strPricelist='REGULAR' and t.uidPriceBasedID=@uidPriceBasedID) as decSelling
					,isnull((
							SELECT Sum(temp1.decQty)
										FROM [tblInvLocBin] 
										INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
											AND [tblInvLocBin].strLocName =  temp1.strLocName AND temp1.strSerialNumber=#TempINVSerialLot.strSerialNumber
											AND [tblInvLocBin].lngID =  temp1.lngBinID
								WHERE temp1.strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvLocBin.bitInactive = 0
							), 0) AS decSumOnHand
					
					,(Select dteUpdatedDate from dbo.tblInvPriceTracking  where
						dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						GROUP BY a.strPartNumber
						))  as dteUpdatedDate						
						,tblInvPrice.strUnit
						,#TempINVSerialLot.strSerialNumber AS SerialNumber
					--,tblInvPriceTracking.decPriceFrom
					--,tblInvPriceTracking.decPriceTo
					--,COUNT(*) over () AS intRowCount 
						,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM [tblInvExt] (NOLOCK)
				INNER JOIN [tblInv] (NOLOCK) ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				Inner join #TempINVSerialLot on [tblInv].strPartNumber = #TempINVSerialLot.strPartNumber and  [tblInvExt].strLocName = #TempINVSerialLot.strLocName
				INNER JOIN dbo.tblInvPrice (NOLOCK) ON (dbo.tblInvPrice.uidPriceBasedID = @uidPriceBasedID or @uidPriceBasedID is null)
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = 'REGULAR')
					--AND (
					--	@SQDate BETWEEN tblPriceListsByDate.dteStartDate
					--		AND tblPriceListsByDate.dteFinishDate
					--	)
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,decSumOnHand
					,#TempINVSerialLot.strSerialNumber
					,tblInvPrice.strUnit
					,tblInvUOMs.decConversionFactor
						,tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.strPartNumber
					) AS tblTemp1
				WHERE tblTemp1.decSumOnHand <> 0 
			) As Result
					
					WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
			ELSE
			BEGIN
			Select * from (
				Select  0 AS bitSelect,*,
								CASE WHEN @SQApply = 0
								THEN 0 ELSE Cast(decSumOnHand as int) end as intAmount ,ROW_NUMBER () over (order by strCategory) AS RowNumber,COUNT(*) over () AS intRowCount 
								from (
						SELECT tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					--,tblInvExt.strLocName
					,(Select top 1 t.decSelling from tblInvPrice t where t.strPartNumber=tblInv.strPartNumber and t.strPricelist=@SQPricelist and t.uidPriceBasedID=@SQuidPriceBasedID) as decSelling
					,isnull((
							SELECT Sum(temp1.decQty)
										FROM [tblInvLocBin] 
										INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
											AND [tblInvLocBin].strLocName =  temp1.strLocName AND temp1.strSerialNumber=#TempINVSerialLot.strSerialNumber
											AND [tblInvLocBin].lngID =  temp1.lngBinID
								WHERE temp1.strPartNumber = [tblInv].strPartNumber
								AND (
									[tblInvLocBin].strBinCode = CASE 
										WHEN (
												@SQBinCode = ''
												OR @SQBinCode = '<<All Bin Locations>>'
												)
											THEN IsNull([tblInvLocBin].strBinCode, '')
										ELSE @SQBinCode
										END
									)
								AND (
									IsNull(tblInvLocBin.strLocName, '') = CASE 
										WHEN (
												@SQLocation = '<<All Locations>>'
												OR @SQLocation = ''
												)
											THEN IsNull(tblInvLocBin.strLocName, '')
										ELSE @SQLocation
										END
									)
								AND tblInvLocBin.bitInactive = 0
							), 0) AS decSumOnHand
					
					,(Select dteUpdatedDate from dbo.tblInvPriceTracking  where
			    dbo.tblInvPriceTracking.strPartNumber = dbo.tblInv.strPartNumber AND tblInvPriceTracking.lngInvPriceTrackID IN (
						SELECT Max(a.lngInvPriceTrackID)
						FROM tblInvPriceTracking a
						WHERE (a.uidPriceBasedID = @SQuidPriceBasedID)
						GROUP BY a.strPartNumber
						))  as dteUpdatedDate
						,tblInvPrice.strUnit
						,#TempINVSerialLot.strSerialNumber AS SerialNumber
					--,ROW_NUMBER () over (order by tblInv.strPartNumber) AS RowNumber
					,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
				FROM [tblInvExt] (NOLOCK)
				INNER JOIN [tblInv] (NOLOCK) ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
				Inner join #TempINVSerialLot on [tblInv].strPartNumber = #TempINVSerialLot.strPartNumber and  [tblInvExt].strLocName = #TempINVSerialLot.strLocName
				INNER JOIN dbo.tblInvPrice (NOLOCK) ON (dbo.tblInvPrice.uidPriceBasedID = @SQuidPriceBasedID or @SQuidPriceBasedID is null)	
				LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
				WHERE (
						tblInv.intType IN (
							1
							,11
							)
						)
					AND (tblInvPrice.strPricelist = @SQPricelist)
					
					AND (
						IsNull(tblInv.strCategory, '') = CASE 
							WHEN (
									@SQCategory = ''
									OR @SQCategory = '<<ALL Categories>>'
									)
								THEN IsNull(tblInv.strCategory, '')
							ELSE @SQCategory
							END
						)
					AND (
						IsNull(tblInv.strSubCategory, '') = CASE 
							WHEN (
									@SQSubCategory = '<<ALL Sub Categories>>'
									OR @SQSubCategory = ''
									)
								THEN IsNull(tblInv.strSubCategory, '')
							ELSE @SQSubCategory
							END
						)
					AND (
						IsNull(tblInvExt.strLocName, '') = CASE 
							WHEN (
									@SQLocation = '<<All Locations>>'
									OR @SQLocation = ''
									)
								THEN IsNull(tblInvExt.strLocName, '')
							ELSE @SQLocation
							END
						)
					AND (tblInvExt.bitInactive = 0)
					AND (tblInv.bitInactive = 0)
					AND (
						tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
						OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
						OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
						)
				GROUP BY tblInv.strPartNumber
					,tblInv.strDesc
					,tblInv.strCategory
					,tblInv.strSubCategory
					,#TempINVSerialLot.strSerialNumber
					,tblInvPrice.strUnit
					,tblInvUOMs.decConversionFactor
						,tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.strPartNumber
					) AS tblTemp2
				WHERE tblTemp2.decSumOnHand <> 0 ) as results  WHERE RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
		END
		ELSE
		BEGIN
			IF @SQWithPrice = 0
			BEGIN
				SELECT *
				FROM (
					SELECT 0 AS bitSelect
						,tblInv.strPartNumber
						,tblInv.strDesc
						,tblInv.strCategory
						,tblInv.strSubCategory
						--,tblInvExt.strLocName
						,tblInvPrice.decSelling
						,isnull((
								SELECT Sum(temp1.decQty)
										FROM [tblInvLocBin] 
										INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
											AND [tblInvLocBin].strLocName =  temp1.strLocName AND temp1.strSerialNumber=#TempINVSerialLot.strSerialNumber
											AND [tblInvLocBin].lngID =  temp1.lngBinID
								WHERE temp1.strPartNumber = [tblInv].strPartNumber
									AND (
										[tblInvLocBin].strBinCode = CASE 
											WHEN (
													@SQBinCode = ''
													OR @SQBinCode = '<<All Bin Locations>>'
													)
												THEN IsNull([tblInvLocBin].strBinCode, '')
											ELSE @SQBinCode
											END
										)
									AND (
										IsNull(tblInvLocBin.strLocName, '') = CASE 
											WHEN (
													@SQLocation = '<<All Locations>>'
													OR @SQLocation = ''
													)
												THEN IsNull(tblInvLocBin.strLocName, '')
											ELSE @SQLocation
											END
										)
									AND tblInvLocBin.bitInactive = 0
								), 0) AS decSumOnHand
						,(
							CASE 
								WHEN @SQApply = 0
									THEN 0
								ELSE CAST(isnull((
												SELECT Sum(#TempINVSerialLot.decQty)
												FROM [tblInvLocBin] 
												INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
													AND [tblInvLocBin].strLocName = temp1.strLocName AND temp1.strSerialNumber  = #TempINVSerialLot.strSerialNumber
													AND [tblInvLocBin].lngID =  temp1.lngBinID
												WHERE temp1.strPartNumber  = [tblInv].strPartNumber
													AND (
														[tblInvLocBin].strBinCode = CASE 
															WHEN (
																	@SQBinCode = ''
																	OR @SQBinCode = '<<All Bin Locations>>'
																	)
																THEN IsNull([tblInvLocBin].strBinCode, '')
															ELSE @SQBinCode
															END
														)
													AND (
														IsNull(tblInvLocBin.strLocName, '') = CASE 
															WHEN (
																	@SQLocation = '<<All Locations>>'
																	OR @SQLocation = ''
																	)
																THEN IsNull(tblInvLocBin.strLocName, '')
															ELSE @SQLocation
															END
														)
													AND tblInvExt.bitInactive = 0
												), 0) AS INT)
								END
							) AS intAmount
						,tblInvPriceTracking.dteUpdatedDate
						--,tblInvPriceTracking.decPriceFrom
						--,tblInvPriceTracking.decPriceTo
						,COUNT(*) over () AS intRowCount 
						,ROW_NUMBER () over (order by tblInv.strCategory) AS RowNumber
						,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
					FROM [tblInvExt] (NOLOCK)
					INNER JOIN [tblInv] (NOLOCK) ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
					Inner join #TempINVSerialLot on [tblInv].strPartNumber = #TempINVSerialLot.strPartNumber and  [tblInvExt].strLocName = #TempINVSerialLot.strLocName
					INNER JOIN dbo.tblInvPrice (NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					INNER JOIN dbo.tblPriceListsByDate (NOLOCK) ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
					INNER JOIN dbo.tblInvPriceTracking (NOLOCK) ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
					
					--INNER JOIN [tblInvExtBin] ON [tblInvExtBin].strLocName = [tblInvExt].strLocName
					--	AND [tblInvExtBin].strPartNumber = [tblInvExt].strPartNumber
					--INNER JOIN [tblInvLocBin] ON [tblInvLocBin].lngID = [tblInvExtBin].lngBinID
					--	AND [tblInvLocBin].strLocName = [tblInvExtBin].strLocName
					WHERE (
							tblInv.intType IN (
								1
								,11
								)
							)
						AND (tblInvPrice.strPricelist = 'REGULAR')
						AND (
							@SQDate BETWEEN tblPriceListsByDate.dteStartDate
								AND tblPriceListsByDate.dteFinishDate
							)
						AND (
							IsNull(tblInv.strCategory, '') = CASE 
								WHEN (
										@SQCategory = ''
										OR @SQCategory = '<<ALL Categories>>'
										)
									THEN IsNull(tblInv.strCategory, '')
								ELSE @SQCategory
								END
							)
						AND (
							IsNull(tblInv.strSubCategory, '') = CASE 
								WHEN (
										@SQSubCategory = '<<ALL Sub Categories>>'
										OR @SQSubCategory = ''
										)
									THEN IsNull(tblInv.strSubCategory, '')
								ELSE @SQSubCategory
								END
							)
						AND (
							IsNull(tblInvExt.strLocName, '') = CASE 
								WHEN (
										@SQLocation = '<<All Locations>>'
										OR @SQLocation = ''
										)
									THEN IsNull(tblInvExt.strLocName, '')
								ELSE @SQLocation
								END
							)
						AND (tblInvExt.bitInactive = 0)
						AND (tblInv.bitInactive = 0)
						AND (
							tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
							OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
							OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
							)
						AND tblInvPriceTracking.lngInvPriceTrackID IN (
							SELECT Max(a.lngInvPriceTrackID)
							FROM tblInvPriceTracking a
							INNER JOIN tblPriceListsByDate b ON a.uidPriceBasedID = b.uidPriceBasedID
							WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
								AND (
									@SQDate BETWEEN b.dteStartDate
										AND b.dteFinishDate
									)
								AND (a.strPricelist = 'REGULAR')
							GROUP BY a.strPartNumber
							)
					--AND (tblInvExtBin.decOnHand <> 0)
					GROUP BY tblInv.strPartNumber
						,tblInv.strDesc
						,tblInv.strCategory
						,tblInv.strSubCategory
						,tblInvPrice.decSelling
						,tblInvPriceTracking.dteUpdatedDate
						,#TempINVSerialLot.strSerialNumber 
						,tblInvPrice.strUnit
					,tblInvUOMs.decConversionFactor
						,tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.strPartNumber
					) AS tblTemp3
				WHERE tblTemp3.decSumOnHand <> 0 
					AND RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
			ELSE
			BEGIN
				SELECT *
				FROM (
					SELECT 0 AS bitSelect
						,tblInv.strPartNumber
						,tblInv.strDesc
						,tblInv.strCategory
						,tblInv.strSubCategory
						--,tblInvExt.strLocName
						,tblInvPrice.decSelling
						,isnull((
								SELECT Sum(temp1.decQty)
										FROM [tblInvLocBin] 
										INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
											AND [tblInvLocBin].strLocName =  temp1.strLocName AND temp1.strSerialNumber=#TempINVSerialLot.strSerialNumber
											AND [tblInvLocBin].lngID =  temp1.lngBinID
								WHERE temp1.strPartNumber = [tblInv].strPartNumber
									AND (
										[tblInvLocBin].strBinCode = CASE 
											WHEN (
													@SQBinCode = ''
													OR @SQBinCode = '<<All Bin Locations>>'
													)
												THEN IsNull([tblInvLocBin].strBinCode, '')
											ELSE @SQBinCode
											END
										)
									AND (
										IsNull(tblInvLocBin.strLocName, '') = CASE 
											WHEN (
													@SQLocation = '<<All Locations>>'
													OR @SQLocation = ''
													)
												THEN IsNull(tblInvLocBin.strLocName, '')
											ELSE @SQLocation
											END
										)
									AND tblInvLocBin.bitInactive = 0
								), 0) AS decSumOnHand
						,(
							CASE 
								WHEN @SQApply = 0
									THEN 0
								ELSE CAST(isnull((
									SELECT Sum(temp1.decQty)
										FROM [tblInvLocBin] 
										INNER JOIN #TempINVSerialLot AS temp1 on temp1.strPartNumber = [tblInv].strPartNumber
											AND [tblInvLocBin].strLocName =  temp1.strLocName AND temp1.strSerialNumber=#TempINVSerialLot.strSerialNumber
											AND [tblInvLocBin].lngID =  temp1.lngBinID
									WHERE temp1.strPartNumber = [tblInv].strPartNumber
													AND (
														[tblInvLocBin].strBinCode = CASE 
															WHEN (
																	@SQBinCode = ''
																	OR @SQBinCode = '<<All Bin Locations>>'
																	)
																THEN IsNull([tblInvLocBin].strBinCode, '')
															ELSE @SQBinCode
															END
														)
													AND (
														IsNull(tblInvLocBin.strLocName, '') = CASE 
															WHEN (
																	@SQLocation = '<<All Locations>>'
																	OR @SQLocation = ''
																	)
																THEN IsNull(tblInvLocBin.strLocName, '')
															ELSE @SQLocation
															END
														)
													AND tblInvLocBin.bitInactive = 0
												), 0) AS INT)
								END
							) AS intAmount
						,tblInvPriceTracking.dteUpdatedDate
						,tblInvPrice.strUnit
						,COUNT(*) over () AS intRowCount 
						,ROW_NUMBER () over (order by tblInv.strCategory) AS RowNumber
						,#TempINVSerialLot.strSerialNumber AS SerialNumber
						,Isnull((Select TI.strInvSerialType from tblInv as TI where tblInv.strPartNumber=TI.strPartNumber),'') As strInvSerialType
					FROM [tblInvExt] (NOLOCK)
					INNER JOIN [tblInv] (NOLOCK) ON [tblInv].strPartNumber = [tblInvExt].strPartNumber
					Inner join #TempINVSerialLot on [tblInv].strPartNumber = #TempINVSerialLot.strPartNumber and  [tblInvExt].strLocName = #TempINVSerialLot.strLocName
					INNER JOIN dbo.tblInvPrice (NOLOCK) ON dbo.tblInv.strPartNumber = dbo.tblInvPrice.strPartNumber
					INNER JOIN dbo.tblPriceListsByDate (NOLOCK) ON dbo.tblPriceListsByDate.uidPriceBasedID = dbo.tblInvPrice.uidPriceBasedID
					INNER JOIN dbo.tblInvPriceTracking (NOLOCK) ON dbo.tblInvPriceTracking.strPartNumber = dbo.tblInvPrice.strPartNumber
					LEFT JOIN dbo.tblInvUOMs (NOLOCK) ON dbo.tblInvUOMs.strPartNumber = dbo.tblInvPrice.strPartNumber 
				AND  dbo.tblInvUOMs.strFromUnit = dbo.tblInvPrice.strUnit
				AND dbo.tblInvUOMS.bitInactive = 0
					
					WHERE (
							tblInv.intType IN (
								1
								,11
								)
							)
						AND (tblInvPrice.strPricelist = @SQPricelist)
						AND (tblPriceListsByDate.uidPriceBasedID = @SQuidPriceBasedID)
						AND (
							IsNull(tblInv.strCategory, '') = CASE 
								WHEN (
										@SQCategory = ''
										OR @SQCategory = '<<ALL Categories>>'
										)
									THEN IsNull(tblInv.strCategory, '')
								ELSE @SQCategory
								END
							)
						AND (
							IsNull(tblInv.strSubCategory, '') = CASE 
								WHEN (
										@SQSubCategory = '<<ALL Sub Categories>>'
										OR @SQSubCategory = ''
										)
									THEN IsNull(tblInv.strSubCategory, '')
								ELSE @SQSubCategory
								END
							)
						AND (
							IsNull(tblInvExt.strLocName, '') = CASE 
								WHEN (
										@SQLocation = '<<All Locations>>'
										OR @SQLocation = ''
										)
									THEN IsNull(tblInvExt.strLocName, '')
								ELSE @SQLocation
								END
							)
						AND (tblInvExt.bitInactive = 0)
						AND (tblInv.bitInactive = 0)
						AND (
							tblInvExt.strLocName LIKE '%' + @SQSearch + '%'
						--OR tblInv.strPartNumber LIKE '%' + @SQSearch + '%'
						--OR tblInv.strDesc LIKE '%' + @SQSearch + '%'
						OR (
			(@Keyword1='' OR tblInv.strPartNumber LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strPartNumber LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strPartNumber LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strPartNumber LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strPartNumber LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strPartNumber like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strPartNumber LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strPartNumber LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strPartNumber LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strPartNumber LIKE '%'+@Keyword10+'%') 
						)
						OR (
			(@Keyword1='' OR tblInv.strDesc LIKE '%'+@Keyword1+'%') AND (@Keyword2='' OR tblInv.strDesc LIKE '%'+@Keyword2+'%') AND (@Keyword3='' OR tblInv.strDesc LIKE '%'+@Keyword3+'%') AND (@Keyword4='' OR tblInv.strDesc LIKE '%'+@Keyword4+'%')AND (@Keyword5='' OR tblInv.strDesc LIKE '%'+@Keyword5+'%')  
		AND (@Keyword6='' OR tblInv.strDesc like '%'+@Keyword6+'%') AND (@Keyword7='' OR tblInv.strDesc LIKE '%'+@Keyword7+'%') AND (@Keyword8='' OR tblInv.strDesc LIKE '%'+@Keyword8+'%') AND (@Keyword9='' OR tblInv.strDesc LIKE '%'+@Keyword9+'%') AND (@Keyword10='' OR  tblInv.strDesc LIKE '%'+@Keyword10+'%') 
						)
							OR tblInv.strCategory LIKE '%' + @SQSearch + '%'
							OR tblInv.strSubCategory LIKE '%' + @SQSearch + '%'
							)
						AND tblInvPriceTracking.lngInvPriceTrackID IN (
							SELECT Max(a.lngInvPriceTrackID)
							FROM tblInvPriceTracking a
							WHERE CAST(a.dteUpdatedDate AS DATE) >= Cast(@SQPriceSince AS DATE)
								AND a.uidPriceBasedID = @SQuidPriceBasedID
							GROUP BY a.strPartNumber
							)
					--AND (tblInvExtBin.decOnHand <> 0)
					GROUP BY tblInv.strPartNumber
						,tblInv.strDesc
						,tblInv.strCategory
						,tblInv.strSubCategory
						,tblInvPrice.decSelling
						,tblInvPriceTracking.dteUpdatedDate
						,#TempINVSerialLot.strSerialNumber 
						,tblInvPrice.strUnit
					,tblInvUOMs.decConversionFactor
						,tblInvUOMs.strConversionType
						,dbo.tblInvUOMs.strPartNumber
					) AS tblTemp4
				WHERE tblTemp4.decSumOnHand <> 0 
					AND RowNumber >=( @Offset+1) and RowNumber <=(@Offset+@PageSize)
					ORDER BY RowNumber
			END
		END
	END
DROP TABLE #TempINVSerialLot
END
GO

CREATE PROCEDURE [dbo].[GetOrderDocDTSerialDataInvAdjustments] 
(
	@DocNumber AS NVARCHAR(100),
	@DocLineNumber AS INT,
	@AdjustmentType AS INT
)
AS
BEGIN
	IF(@AdjustmentType = 3)
		BEGIN
			SELECT
				tblInvIssReqDocDTSerial.intLineNo AS 'LineNo',
				tblInvIssReqDocDTSerial.strSerialNumber AS 'SerialNumber',
				tblInvIssReqDocDTSerial.decQty AS 'Qty',
				tblInvIssReqDocDTSerial.strUnit AS 'Unit',
				tblInvIssReqDocDTSerial.lngID AS 'ID',
				tblInvIssReqDocDTSerial.bitExpiryDate AS 'IsExpiryDate',
				tblInvIssReqDocDTSerial.dteExpiryDate AS 'ExpiryDate',
				tblInvIssReqDocDTSerial.intSerialLotType AS 'SerialLotType',
				ISNULL((
						SELECT DISTINCT TYP.strInvSerialType
						FROM tblInvIssReqDocDTSerial SRL
						INNER JOIN tblInvIssReqDocDT DTL ON SRL.strInvIssReqDocID = DTL.strInvIssReqDocID
							AND SRL.intLineNo = DTL.intLineNo
						INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber
						INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType
						WHERE SRL.strInvIssReqDocID = tblInvIssReqDocDTSerial.strInvIssReqDocID
							AND SRL.intLineNo = tblInvIssReqDocDTSerial.intLineNo
						), '') AS 'Type1',
				CASE 
					WHEN tblInvIssReqDocDTSerial.intSerialLotType = 0
						THEN Convert(BIT, ISNULL(tblInvSerialExt.bitDimensionExist, 0))
					ELSE Convert(BIT, 0)
					END AS 'IsDimensionExist',
				CASE 
					WHEN tblInvIssReqDocDTSerial.intSerialLotType = 0
						THEN ISNULL(tblInvSerialExt.strDimension, '')
					ELSE ''
					END AS 'Dimension'
					,ISNULL(tblInvLocBin.strBinCode,'') AS 'BinCode'
			        ,tblInvIssReqDocDTSerial.lngBinID AS 'BinID'
			FROM tblInvIssReqDocDT
			INNER JOIN tblInvIssReqDocDTSerial ON tblInvIssReqDocDT.strInvIssReqDocID = tblInvIssReqDocDTSerial.strInvIssReqDocID
				AND tblInvIssReqDocDT.intLineNo = tblInvIssReqDocDTSerial.intLineNo
			LEFT JOIN tblInvSerialExt ON tblInvIssReqDocDT.strPartNumber = tblInvSerialExt.strPartNumber
			LEFT OUTER JOIN tblInvLocBin ON tblInvLocBin.lngId = tblInvIssReqDocDTSerial.lngBinId
				AND tblInvIssReqDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
			WHERE tblInvIssReqDocDTSerial.strInvIssReqDocID = @DocNumber
				AND tblInvIssReqDocDTSerial.intLineNo = @DocLineNumber
			ORDER BY tblInvIssReqDocDTSerial.lngID
		END
	ELSE
		BEGIN
			SELECT
				tblInvAdjDocDTSerial.intLineNo AS 'LineNo',
				tblInvAdjDocDTSerial.strSerialNumber AS 'SerialNumber',
				tblInvAdjDocDTSerial.decQty AS 'Qty',
				tblInvAdjDocDTSerial.strUnit AS 'Unit',
				tblInvAdjDocDTSerial.lngID AS 'ID',
				tblInvAdjDocDTSerial.bitExpiryDate AS 'IsExpiryDate',
				tblInvAdjDocDTSerial.dteExpiryDate AS 'ExpiryDate',
				tblInvAdjDocDTSerial.intSerialLotType AS 'SerialLotType',
				ISNULL((
						SELECT DISTINCT TYP.strInvSerialType
						FROM tblInvAdjDocDTSerial SRL
						INNER JOIN tblInvAdjDocDT DTL ON SRL.strAdjDocID = DTL.strAdjDocID
							AND SRL.intLineNo = DTL.intLineNo
						INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber
						INNER JOIN tblInvSerialTypes TYP ON INV.strInvSerialType = TYP.strInvSerialType
						WHERE SRL.strAdjDocID = tblInvAdjDocDTSerial.strAdjDocID
							AND SRL.intLineNo = tblInvAdjDocDTSerial.intLineNo
						), '') AS 'Type1',
				CASE 
					WHEN tblInvAdjDocDTSerial.intSerialLotType = 0
						THEN Convert(BIT, ISNULL(tblInvSerialExt.bitDimensionExist, 0))
					ELSE Convert(BIT, 0)
					END AS 'IsDimensionExist',
				CASE 
					WHEN tblInvAdjDocDTSerial.intSerialLotType = 0
						THEN ISNULL(tblInvSerialExt.strDimension, '')
					ELSE ''
					END AS 'Dimension'
				,ISNULL(tblInvLocBin.strBinCode,'') AS 'BinCode'
			    ,tblInvAdjDocDTSerial.lngBinID AS 'BinID'
			FROM tblInvAdjDocDT
			INNER JOIN tblInvAdjDocDTSerial ON tblInvAdjDocDT.strAdjDocID = tblInvAdjDocDTSerial.strAdjDocID
				AND tblInvAdjDocDT.intLineNo = tblInvAdjDocDTSerial.intLineNo
			LEFT JOIN tblInvSerialExt ON tblInvAdjDocDT.strPartNumber = tblInvSerialExt.strPartNumber
				AND tblInvAdjDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
				LEFT OUTER JOIN tblInvLocBin ON tblInvLocBin.lngId = tblInvAdjDocDTSerial.lngBinId
			WHERE tblInvAdjDocDTSerial.strAdjDocID = @DocNumber
				AND tblInvAdjDocDTSerial.intLineNo = @DocLineNumber
			ORDER BY tblInvAdjDocDTSerial.lngID
		END
END
GO

CREATE PROCEDURE [dbo].[GetInvTrfDocDTByDocNumberForConvert] @SQDocNumber AS NVARCHAR(50)
	,@SQstrFromLocNumber AS NVARCHAR(50)
	,@SQstrToLocNumber AS NVARCHAR(50)
AS
BEGIN
	SELECT DT.strPartNumber AS PartNumber
		,I.strDesc AS Description
		,DT.decQty AS Qty
		,DT.decUnitCost AS UnitCost
		,DT.decAmount AS Amount
		,I.bitInvSerialType AS IsSerialType
		,
		-- Fallback-safe From Bin
		ISNULL(FromBinPreferred.lngBinID, FromBinFallback.lngBinID) AS FromBinId
		,ISNULL(FromBinPreferred.strBinCode, FromBinFallback.strBinCode) AS FromBinCode
		,
		-- Fallback-safe To Bin
		ISNULL(ToBinPreferred.lngBinID, ToBinFallback.lngBinID) AS ToBinId
		,ISNULL(ToBinPreferred.strBinCode, ToBinFallback.strBinCode) AS ToBinCode
		,I.strStockUnit AS StockUnit
		,DT.intLineNo AS LineNumber
		,DT.strInvTrfOrdDocID
		,DT.decQtyRemaining
	FROM tblInvTrfOrdDocDT DT
	INNER JOIN tblInv I ON DT.strPartNumber = I.strPartNumber
	-- Preferred From Bin (bitDefault or Picking)
	OUTER APPLY (
		SELECT TOP 1 EB1.lngBinID
			,LB1.strBinCode
		FROM tblInvExtBin EB1
		INNER JOIN tblInvLocBin LB1 ON EB1.lngBinID = LB1.lngID
		WHERE EB1.strPartNumber = I.strPartNumber
			AND EB1.strLocName = @SQstrFromLocNumber
			AND (
				EB1.bitDefault = 1
				OR LB1.bitPickingBin = 1
				)
		ORDER BY CASE 
				WHEN EB1.bitDefault = 1
					THEN 0
				ELSE 1
				END
			,LB1.bitPickingBin DESC
		) AS FromBinPreferred
	-- Fallback From Bin (any top 1)
	OUTER APPLY (
		SELECT TOP 1 EB1.lngBinID
			,LB1.strBinCode
		FROM tblInvExtBin EB1
		INNER JOIN tblInvLocBin LB1 ON EB1.lngBinID = LB1.lngID
		WHERE EB1.strPartNumber = I.strPartNumber
			AND EB1.strLocName = @SQstrFromLocNumber
		) AS FromBinFallback
	-- Preferred To Bin (bitDefault or Picking)
	OUTER APPLY (
		SELECT TOP 1 EB2.lngBinID
			,LB2.strBinCode
		FROM tblInvExtBin EB2
		INNER JOIN tblInvLocBin LB2 ON EB2.lngBinID = LB2.lngID
		WHERE EB2.strPartNumber = I.strPartNumber
			AND EB2.strLocName = @SQstrToLocNumber
			AND (
				EB2.bitDefault = 1
				OR LB2.bitPickingBin = 1
				)
		ORDER BY CASE 
				WHEN EB2.bitDefault = 1
					THEN 0
				ELSE 1
				END
			,LB2.bitPickingBin DESC
		) AS ToBinPreferred
	-- Fallback To Bin (any top 1)
	OUTER APPLY (
		SELECT TOP 1 EB2.lngBinID
			,LB2.strBinCode
		FROM tblInvExtBin EB2
		INNER JOIN tblInvLocBin LB2 ON EB2.lngBinID = LB2.lngID
		WHERE EB2.strPartNumber = I.strPartNumber
			AND EB2.strLocName = @SQstrToLocNumber
		) AS ToBinFallback
	WHERE DT.strInvTrfOrdDocID = @SQDocNumber
		AND DT.decQtyRemaining <> 0
	ORDER BY DT.intLineNo
END
GO

CREATE PROCEDURE [dbo].[GetManJobDataByDates] (
	@SQTypeRV INT
	,@SQStart DATETIME
	,@SQEnd DATETIME
	,@SQType INT
	,@IsAll BIT
	)
AS
BEGIN
	IF (@IsAll = 1)
	BEGIN
		SELECT tblManJob.strJBDocID AS JBDocID
			,tblManJob.dteJournalDate AS JournalDate
			,CASE 
				WHEN tblManJob.intType = @SQTypeRV
					THEN 'REV-' + tblManJobReversed.strJBDocID
				ELSE tblManJob.strReference
				END AS Reference
			,tblManJob.strCustName AS CustomerNumber
			,tblManJob.strWCCode AS WorkCenter
			,tblManJob.intType AS Type  
			,tblMAnJob.strParentBOM as ParentBOM
		FROM tblManJob
		LEFT JOIN tblManJobReversed ON tblManJob.strJBDocID = tblManJobReversed.strJBDocIDRev
		ORDER BY tblManJob.strJBDocID
	END
	ELSE
	BEGIN
		SELECT tblManJob.strJBDocID AS JBDocID
			,tblManJob.dteJournalDate AS JournalDate
			,CASE 
				WHEN tblManJob.intType = @SQTypeRV
					THEN 'REV-' + tblManJobReversed.strJBDocID
				ELSE tblManJob.strReference
				END AS Reference
			,tblManJob.strCustName AS CustomerNumber
			,tblManJob.strWCCode AS WorkCenter
			,tblManJob.intType AS Type
			,tblMAnJob.strParentBOM AS ParentBOM
		FROM tblManJob
		LEFT JOIN tblManJobReversed ON tblManJob.strJBDocID = tblManJobReversed.strJBDocIDRev
		WHERE tblManJob.dteJournalDate BETWEEN @SQStart
				AND @SQEnd
			AND (
				intType = 0
				OR intType = 3
				OR intType = 2
				)
		ORDER BY tblManJob.strJBDocID
	END
END
GO


CREATE PROCEDURE [dbo].[GetJECreateUserName] 
	@strJEDocID VARCHAR(20) 
AS 
  BEGIN 
      SET nocount ON; 

      SELECT strUserName 
      FROM   tblJournalEntryDocApprovalPending 
      WHERE  strJENo = @strJEDocID 
  END
GO

CREATE PROCEDURE [dbo].[ClearJEApproval]
	@DocID Varchar(50)
AS
BEGIN
	SET NOCOUNT ON;
 
    UPDATE tblJournalEntryDocApprovalPending SET bitPosted = 1 WHERE strJENo = @DocID
END
GO

CREATE PROCEDURE [dbo].[UpdateApproverStatusJE]
	@SqlDocNumber Varchar(20),	
	@SqlGroupId int,
	@SqlUserName varchar(50),
	@SqlStatus int
AS
BEGIN
	SET NOCOUNT ON;
	UPDATE tblGLApprovalsUserTracking set intApprovalStatus=@SqlStatus, rowUpdated=GETDATE() 
	where strOrdGLDocID=@SqlDocNumber and intApprovalStatus=0 and intGroupId=@SqlGroupId and strUserName=@SqlUserName	
END
GO

CREATE PROCEDURE [dbo].[GetPreferredNotificationModeJE] 
	@intGroupID   INT, 
    @strJEDocID VARCHAR(20) 
AS 
  BEGIN 
      SET nocount ON; 

      SELECT PreferredNotification
      FROM   tblApprovalsDocLimit 
      WHERE  priorityLevel = (SELECT Min(tblApprovalsDocLimit.priorityLevel) 
                              FROM   tblApprovalsDocLimit 
                                     INNER JOIN tblGLApprovalsUserTracking ON 
                                     tblApprovalsDocLimit.intApproverGroupId = tblGLApprovalsUserTracking.intGroupId 
                                     AND tblApprovalsDocLimit.strUserName = tblGLApprovalsUserTracking.strUserName 
                                     INNER JOIN tblOrderDoc ON 
									tblGLApprovalsUserTracking.strOrdGLDocID = tblOrderDoc.strOrdDocID 
                              WHERE 
									tblGLApprovalsUserTracking.strOrdGLDocID = @strJEDocID 
									AND tblApprovalsDocLimit.intApproverGroupId = @intGroupID 
									AND tblGLApprovalsUserTracking.intApprovalStatus = 0 
                                     AND tblOrderDoc.bitCleared = 0 
                                     AND tblOrderDoc.intDocType = 1) 
     AND intApproverGroupId = @intGroupID AND intApproverType = 2
  END
GO

CREATE PROCEDURE [dbo].[GetJEApprovalsDocLimitDetailsbyDocNumber] 
@strJEDocID VARCHAR(20) 
AS 
  BEGIN 
      SET nocount ON; 
	  --
      DECLARE @CurrentUserPriority INT 
      DECLARE @GroupId INT 
      DECLARE @LastUserPriority INT 
      DECLARE @DocLimitIncl DECIMAL
 
      SELECT @CurrentUserPriority = Min(tblApprovalsDocLimit.priorityLevel), 
             @GroupId = tblGLApprovalsUserTracking.intGroupId, 
             @DocLimitIncl = tblApprovalsDocLimit.DocLimitIncl 
      FROM   tblGLApprovalsUserTracking 
             INNER JOIN tblApprovalsDocLimit ON tblGLApprovalsUserTracking.intGroupId = tblApprovalsDocLimit.intApproverGroupId 
                        AND tblApprovalsDocLimit.strUserName = tblGLApprovalsUserTracking.strUserName 
      WHERE  strOrdGLDocID = @strJEDocID 
             AND intApprovalStatus = 0 
      GROUP  BY tblGLApprovalsUserTracking.intGroupId, 
                tblApprovalsDocLimit.DocLimitIncl
 
	  SELECT @LastUserPriority = Max(priorityLevel) 
      FROM   tblApprovalsDocLimit 
             INNER JOIN tblJournalEntryDoc_GLApprovals ON tblApprovalsDocLimit.intApproverGroupId = tblJournalEntryDoc_GLApprovals.intGroupId
             INNER JOIN tblGLApprovalsUserTracking ON tblApprovalsDocLimit.strUserName = tblGLApprovalsUserTracking.strUserName 
      WHERE  tblJournalEntryDoc_GLApprovals.strJEno = @strJEDocID
             AND tblGLApprovalsUserTracking.intApprovalStatus = 0 
             AND tblGLApprovalsUserTracking.strOrdGLDocID = @strJEDocID
 
      SELECT ISNULL(@CurrentUserPriority, 0) AS 'CurrentUserPriority', 
             ISNULL(@GroupId, 0)             AS 'GroupId', 
             ISNULL(@LastUserPriority, 0)    AS 'LastUserPriority', 
             ISNULL(@DocLimitIncl, 0.0)      AS 'DocLimitIncl' 
  END
GO

CREATE PROCEDURE [dbo].[InsertJEApprovalTracking]
	@JEReqDocID Varchar(20),
	@NewJEDocID Varchar(20),
	@DocTotalIncl money,
	@DocCreatorUsername Varchar(50),
	@ApproverUsername Varchar(50),
	@DocCreationDate datetime,
	@DateofApproval datetime,
	@DeclineReasonCodeText varchar(max),
	@ShowStatus bit
AS
BEGIN
	SET NOCOUNT ON;
	IF(@DeclineReasonCodeText <> 'Approved')
	BEGIN
		SET @NewJEDocID = REPLACE(CONVERT(varchar, GETDATE(), 101), '/', '') + REPLACE(CONVERT(varchar, GETDATE(), 108), ':', '')
	END
	INSERT INTO tblGLApprovalTracking VALUES (@JEReqDocID, @NewJEDocID, @DocTotalIncl, @DocCreatorUsername, @ApproverUsername, @DocCreationDate, @DateofApproval, @DeclineReasonCodeText, @ShowStatus)
END
GO

CREATE PROCEDURE [dbo].[GetJEApproverListbyDocNumber] 
@strJEDocID VARCHAR(20) 
AS 
  BEGIN 
      SET nocount ON; 

      SELECT tblApprovalsDocLimit.strUserName 
      FROM   tblApprovalsDocLimit 
             INNER JOIN tblJournalEntryDoc_GLApprovals ON tblApprovalsDocLimit.intApproverGroupId = tblJournalEntryDoc_GLApprovals.intGroupId 
      WHERE  tblJournalEntryDoc_GLApprovals.strJEno = @strJEDocID 
  END
GO

CREATE PROCEDURE [dbo].[CheckJEAlreadyCleared]
	@docId Varchar(20)
AS
BEGIN
	SET NOCOUNT ON;
	Select bitPosted From tblJournalEntryDocApprovalPending Where strJENo = @docId
END
GO

CREATE procedure [dbo].[GetJournalEntryDocDT]
(
		@DocId VARCHAR(50)
)
as
begin
	SELECT 
	strJENo AS JEDocId,  
	intLineNo AS LineNumber, 
	intModule AS Module,
	strCuVeGeID AS CuVeGeID,
	intGeDept AS GeDept,
	strCuVeGeDesc AS CuVeGeDesc,
	strLineReference AS LineReference,
	strLineComment AS LineComment,
	decDebits AS Debits,
	decCredits AS Credits,
	intGLNumber AS GLNumber,
	intDept AS Dept,
	strDesc AS Description,
	intTaxType AS TaxType,
	decLineTotExc AS LineTotExc,
	decLineTaxAmt AS LineTaxAmt,
	decLineTotInc AS LineTotInc,
	strTaxCode AS TaxCode,
	imgTaxObj AS TaxObj,
	strCurrency AS Currency,
	decExchange AS Exchange,
	decDebitsF AS DebitsF,
	decCreditsF AS CreditsF
	FROM tblJournalEntryDocApprovalPendingDT 
	WHERE strJENo = @DocId
end
GO

CREATE PROCEDURE [dbo].[GetJournalEntryDocApprovalPendingData] (
		@DocumentId VARCHAR(50)
	) 
AS 
  BEGIN 
	SELECT strJENo AS JENo, 
		dteLastProcDate AS LastProcDate,
		strComment AS Comment,
		strCurrency AS Currency,
		bitPosted AS Posted,
		strUserName AS UserName,
		dteDateCreated AS DateCreated
		FROM tblJournalEntryDocApprovalPending WHERE strJENo = @DocumentId
END
GO

CREATE PROCEDURE [dbo].[InsertLinkToOtherPricelistItems]
	   (
	   @MasterId as integer,
	   @PartNumber as nvarchar(50),
	   @PriceLevel as nvarchar(20),
	   @MarkupPrice as money,
	   @Unit as nvarchar(50))
	  as
	  begin
INSERT INTO tblPricelistsItems (intPricelistMasterId,strPartNumber,strPriceLevel,decMarkupPrice,dteRowUpdated,strUnit) 
VALUES (@MasterId,@PartNumber,@PriceLevel,@MarkupPrice,GETDATE(),@Unit)
End
GO

CREATE PROCEDURE [dbo].[GetAmountLinkedToVendor] @VendorName AS NVARCHAR(50) = NULL
AS
BEGIN
	SELECT ISNULL(SUM(tblVendTransDT.decAmount), 0) AS BalDue
	FROM tblVendTransDT
	INNER JOIN tblVendTrans ON tblVendTransDT.lngVendTrID = tblVendTrans.lngVendTrID
	INNER JOIN tblVendors ON tblVendTrans.strVendName = tblVendors.strVendName
	WHERE (tblVendTransDT.bitReversed = 0)
		AND (tblVendTrans.intTransType <> 2)
		AND (tblVendors.strVendName = @VendorName)
 
END
GO

CREATE PROCEDURE [dbo].[GetDepositAmountLinkedToVendor] @VendorName AS NVARCHAR(50) = NULL
AS
BEGIN
	SELECT ISNULL(SUM(tblVendTransDT.decAmount), 0) AS decBalDue
	FROM tblVendTransDT
	INNER JOIN tblVendTrans ON tblVendTransDT.lngVendTrID = tblVendTrans.lngVendTrID
	INNER JOIN tblVendors ON tblVendTrans.strVendName = tblVendors.strVendName
	WHERE (tblVendTransDT.bitReversed = 0)
		AND (tblVendTrans.intTransType = 2)
		AND (tblVendors.strVendName = @VendorName)
END
GO

CREATE PROCEDURE DeleteVendorForPricingNotSave
@VendorNumber as nvarchar(50)
AS
BEGIN

DELETE FROM tblVendors WHERE strVendName = @VendorNumber
DELETE FROM tblInvVend WHERE strVendName = @VendorNumber
DELETE FROM tblInvVendPriceListsByDate WHERE strVendName = @VendorNumber
END
GO

CREATE PROCEDURE [dbo].[GetWOLocationData]
(
@PartNumber as nvarchar(50)
)
as
begin
SELECT BOM.strPartItemNumber AS PartNumber,CAST(BOM.intQtyToUse  AS INT) AS QtyToUse, BOM.strLocName LocName, INV.intBOMQty AS BOMQty FROM tblInvBOM BOM INNER JOIN tblInv INV ON BOM.strPartNumber = INV.strPartNumber WHERE BOM.strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE GetOrdersDocPPOApprovalsGroupUsedCount
(
@GroupID  INT)
AS
BEGIN
SELECT COUNT(1) as GroupUsed from dbo.tblOrdersDocP_POApprovals WHERE intGroupId = @GroupID
END
GO

CREATE PROCEDURE [dbo].[GetHistoryOnData]
AS
BEGIN
	SELECT blnHistoryOn AS HistoryOn FROM tblHistoryOn
END
GO

CREATE PROCEDURE [dbo].[GetCurrencyCount]
AS
BEGIN
	select COUNT(strCurrency)  AS CurrencyCount from tblCurrency where bitHome = 0
END
GO

CREATE PROCEDURE [dbo].[GetAllCurrencyList]
AS
BEGIN
	SELECT
			strCurrency AS CurrencyCode,
			strCurrName AS CurrencyName,
			strCurrSymbol AS CurrencySymbol,
			bitTrailingSymb AS IsTrailing,
			strThousSymb AS ThousandSymbol,
			strDecSymb AS DecimalSymbol,
			intDecimals AS DecimalPlaces,
			strCentsName AS CentsName,
			bitHome AS IsHomeCurrency,
			bitUpdateMon AS IsUpdateMon,
			bitUpdateTue AS IsUpdateTue,
			bitUpdateWed AS IsUpdateWed,
			bitUpdateThu AS IsUpdateThu,
			bitUpdateFri AS IsUpdateFri,
			bitUpdateSat AS IsUpdateSat,
			bitUpdateSun AS IsUpdateSun,
			dteUpdateTime AS UpdateTime 
	FROM tblCurrency
END
GO

CREATE PROCEDURE [dbo].[GetAllPOSOptions]
AS
BEGIN
	SELECT 
	   bitDisablePOS AS DisablePOS
      ,bitAllowDisc AS AllowDisc
      ,bitAllowAcctSales AS AllowAcctSales
      ,bitAllowReturns AS AllowReturns
      ,bitAllowVoids AS AllowVoids
      ,intPOSPrcOpts AS POSPrcOpts
      ,bitCashMode AS CashMode
      ,strCustName AS CustName
      ,bitDropWarn AS IsDropWarn
      ,decDropWarn AS DropWarn
      ,bitDropReq AS IsDropReq
      ,decDropReq AS DropReq
      ,bitAllowCheque AS AllowCheque
      ,bitAllowCC AS AllowCC
      ,bitAllowGC AS AllowGC
      ,bitAutoPrint AS AutoPrint
      ,bitEmbeddedEnabled AS EmbeddedEnabled
      ,strEmbFlag AS EmbFlag
      ,CAST(intEmbBarSt AS INT) AS EmbBarSt
      ,CAST(INTEmbBarEnd AS INT) AS EmbBarEnd
      ,CAST(INTEmbType AS INT) AS EmbType
      ,CAST(INTEmbQtySt AS INT) AS EmbQtySt
      ,CAST(INTEmbQtyEnd AS INT) AS EmbQtyEnd
      ,CAST(INTEmbQtyDec AS INT) AS EmbQtyDec
      ,CAST(INTEmbPriceSt AS INT) AS EmbPriceSt
      ,CAST(INTEmbPriceEnd AS INT) AS EmbPriceEnd
      ,CAST(INTEmbPriceDec AS INT) AS EmbPriceDec
      ,bitDCRounding AS IsDCRounding
      ,decDCRounding AS DCRounding
      ,intRefReq AS RefReq
      ,intProcessingMode AS ProcessingMode
      ,intCNReasonReq AS CNReasonReq
      ,bitReturnsRequireInvoice AS ReturnsRequireInvoice
      ,bitTouchscreenPOS AS TouchscreenPOS
      ,bitPOSAIBC AS POSAIBC
      ,strPosPricelist AS PosPricelist
      ,bitUsePosPricelist AS UsePosPricelist
      ,bitActivateERPIntegration AS ActivateERPIntegration
      ,bitERPAR AS ERPAR
      ,bitERPPOS AS ERPPOS
      ,strERPSystem AS ERPSystem
      ,strERPURL AS ERPURL
      ,strERPUser AS ERPUser
      ,strERPPassword AS ERPPassword
      ,dteLastUpdatedSynchTime AS LastUpdatedSynchTime
      ,intNumberOfHoursFromLastSynch AS NumberOfHoursFromLastSynch
      ,bitAllowPayouts AS AllowPayouts
      ,dteRowUpdated AS RowUpdated
  FROM tblPOSOpts
END
GO

CREATE PROCEDURE [dbo].[GLAllSegmentFormatSetup]
AS
SET NOCOUNT ON
SELECT 
	strGLAccountSegment AS GLAccountSegment,
	strSeg1Name AS Seg1Name,
	intSeg1Format AS Seg1Format,
	intSeg1Length AS Seg1Length,
	strSeg2Name AS Seg2Name,
	intSeg2Format AS Seg2Format,
	intSeg2Length AS Seg2Length,
	strSeg3Name AS Seg3Name,
	intSeg3Format AS Seg3Format,
	intSeg3Length AS Seg3Length,
	strSeg4Name AS Seg4Name,
	intSeg4Format AS Seg4Format,
	intSeg4Length AS Seg4Length,
	strSeg5Name AS Seg5Name,
	intSeg5Format AS Seg5Format,
	intSeg5Length AS Seg5Length,
	strSeg6Name AS Seg6Name,
	intSeg6Format AS Seg6Format,
	intSeg6Length AS Seg6Length,
	strSeg7Name AS Seg7Name,
	intSeg7Format AS Seg7Format,
	intSeg7Length AS Seg7Length,
	strSeg8Name AS Seg8Name,
	intSeg8Format AS Seg8Format,
	intSeg8Length AS Seg8Length,
	strSeg9Name AS Seg9Name,
	intSeg9Format AS Seg9Format,
	intSeg9Length AS Seg9Length,
	strSeg10Name AS Seg10Name,
	intSeg10Format AS Seg10Format,
	intSeg10Length AS Seg10Length,
	bitIsUsed AS IsUsed
FROM tblGLSegmentFormatSetup
GO

CREATE PROCEDURE [dbo].[GetInvoicDocStatus]
	@DocId nvarchar(100)
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @ID INT

    SELECT @ID = COUNT(*)
    FROM tblInvoiceDoc
    WHERE strInvDocID = @DocId

    IF @ID > 0
        SELECT CAST(1 AS bit) AS Result
    ELSE
        SELECT CAST(0 AS bit) AS Result
END
GO

CREATE PROCEDURE [dbo].[InsertLinkToOtherPricelistCategory]
	   (
	   @IntPricelistMasterId as integer,
	   @StrCategory as nvarchar(50),
	   @PriceLevel as nvarchar(20),
	   @MarkupPrice as decimal)
	  AS
	  BEGIN
INSERT INTO tblPricelistsLinkCategory (intPricelistMasterId,strCategory,strPriceLevel,decMarkupPrice,dteRowUpdated) 
VALUES (@IntPricelistMasterId,@StrCategory,@PriceLevel,@MarkupPrice,GETDATE())
END
GO

CREATE PROCEDURE [dbo].[GetLinkToOtherPricelistForCategoryRecordCount]
	   (
	   @PricelistMasterId as integer)
	  AS
	  BEGIN
SELECT COUNT(1) AS RecordCount FROM tblPricelistsLinkCategory where intPricelistMasterId = @PricelistMasterId
END
GO

CREATE PROCEDURE [dbo].[GetInvAssemblyDocDTSerialData]
	@DocNumber AS NVARCHAR(50),
	@LineNumber AS INT,
	@Component AS Bit
AS
BEGIN
	SELECT 
		   tblInvAsmDocDTSerial.[strAsmDocID] AS AsmDocID
		  ,tblInvAsmDocDTSerial.[intLineNo] AS [LineNo] 
		  ,tblInvAsmDocDTSerial.[bitComponents] AS Components
		  ,tblInvAsmDocDTSerial.[strSerialNumber] AS SerialNumber 
		  ,tblInvAsmDocDTSerial.[decQty] AS Qty 
		  ,tblInvAsmDocDTSerial.[strUnit] AS Unit 
		  ,tblInvAsmDocDTSerial.[lngID] AS ID
		  ,tblInvAsmDocDTSerial.[bitExpiryDate] AS IsExpiryDate 
		  ,tblInvAsmDocDTSerial.[dteExpiryDate] AS ExpiryDate
		  ,tblInvAsmDocDTSerial.[intSerialLotType] AS SerialLotType 
		  ,tblInvAsmDocDTSerial.[lngBinID] AS BinID 		  		
	FROM tblInvAsmDocDT INNER JOIN tblInvAsmDocDTSerial ON tblInvAsmDocDT.strAsmDocID = tblInvAsmDocDTSerial.strAsmDocID
		AND tblInvAsmDocDT.intLineNo = tblInvAsmDocDTSerial.intLineNo
	LEFT JOIN tblInvSerialExt ON tblInvAsmDocDT.strPartNumber = tblInvSerialExt.strPartNumber
		AND tblInvAsmDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
	WHERE tblInvAsmDocDT.strAsmDocID = @DocNumber
		AND tblInvAsmDocDT.intLineNo = @LineNumber
		AND tblInvAsmDocDT.bitComponents = @Component
	ORDER BY lngID
END
GO

CREATE PROCEDURE [dbo].[DeleteLinkToOtherPriceListCategory] @PricelistMasterId int
 AS
 BEGIN
	DELETE FROM tblPricelistsLinkCategory WHERE intPricelistMasterId=@PricelistMasterId
END
GO

CREATE PROCEDURE [dbo].[DeleteUserSession] @SessionID NVARCHAR(200)
AS
BEGIN
	DELETE FROM tblUserSession where uidSessionID = @SessionID
END
GO
GO
   
CREATE PROCEDURE [dbo].[GetUserSessionList] @InstallKey NVARCHAR(200)
AS
BEGIN
	SELECT strUserName AS UserName
		,uidSessionID AS SessionID
	FROM tblUserSession
	WHERE strInstallKey = @InstallKey
END
GO

CREATE PROCEDURE [dbo].[GetUserSessionCount] (
	@IsOfflinePOSOnly BIT
	,@InstallKey NVARCHAR(Max)
	)
AS
BEGIN
	SELECT COUNT(*)
	FROM tblUserSession
	WHERE bitOfflineKey = @IsOfflinePOSOnly
		AND strInstallKey = @InstallKey
END
GO

CREATE PROCEDURE [dbo].[GetUserSessionListByUserName] (
	@UserName NVARCHAR(50)
	,@InstallKey NVARCHAR(Max)
	)
AS
BEGIN
	SELECT strUserName AS UserName
		,uidSessionID AS SessionID
	FROM tblUserSession
	WHERE strUserName = @UserName
		AND uidSessionID IS NOT NULL
		AND strInstallKey = @InstallKey
END
GO

CREATE PROCEDURE [dbo].[DeleteExistingUserSession] (@UserName NVARCHAR(50))
AS
BEGIN
	DELETE
	FROM tblUserSession
	WHERE strUserName = @UserName
END
GO

CREATE PROCEDURE [dbo].[InsertNewUserSession] @UserName NVARCHAR(50)
	,@SessionID UNIQUEIDENTIFIER
	,@IsOfflinePOSOnly BIT
	,@InstallKey NVARCHAR(MAX)
AS
BEGIN
	INSERT INTO tblUserSession (
		strUserName
		,uidSessionID
		,bitOfflineKey
		,strInstallKey
		)
	VALUES (
		@UserName
		,@SessionID
		,@IsOfflinePOSOnly
		,@InstallKey
		)
END
GO


CREATE PROCEDURE [dbo].[AddUpdateESDTaxCodeMapping] @MauritiusTaxCode AS NVARCHAR(20)
	,@MappedTaxCode AS NVARCHAR(50)
	,@mappingID AS INT
AS
BEGIN
	IF @mappingID > 0
	BEGIN
		UPDATE tblESDTaxCodeMapping
		SET strMauritiusTaxCode = @MauritiusTaxCode
			,strMappedTaxCode = @MappedTaxCode
			,dteRowUpdated = GETDATE()
		WHERE intMappingId = @mappingID
	END
	ELSE
	BEGIN
		INSERT INTO tblESDTaxCodeMapping
		VALUES (
			@MauritiusTaxCode
			,@MappedTaxCode
			,GETDATE()
			)
	END
END
GO

CREATE PROCEDURE [dbo].[GetAllESDTaxcodeMappingList]
AS
BEGIN
	SELECT intMappingId AS MappingID
		,strMauritiusTaxCode AS MauritiusTaxCode
		,strMappedTaxCode AS MappedTaxCode
	FROM tblESDTaxCodeMapping
END
GO

CREATE PROCEDURE [dbo].[DeleteESDTaxCodeMapping] (@MappingID AS INT)
AS
BEGIN
	DELETE
	FROM tblESDTaxCodeMapping
	WHERE intMappingId = @MappingID
END
GO

CREATE PROCEDURE [dbo].[GetPreviousNotHashForMauritius]  
AS  
BEGIN  
  select [strPreviousNoteHash] as [PreviousNoteHash] from [tblEFDInvoiceDocMauritius] where lngEFDInvDocID = 
  (select Max(lngEFDInvDocID) from [tblEFDInvoiceDocMauritius])
END  
GO

CREATE PROCEDURE GetEFDRegisterMauritiusSettings  
AS  
BEGIN  
    SET NOCOUNT ON;  
  
    SELECT   
        [intID] AS [ID],  
        [strIPAddress] AS [IPAddress],  
  [strConnectionURL] AS [MauritiusConnectionURL],  
        [strPort] AS [Port],  
        [strUserName] AS UserName,  
        [strPassword] AS [Password],  
        [strEBSMRAID] AS [EBSMRAID],  
        [strAreaCode] AS [AreaCode],  
		[strSellerTAN] AS [SellerTAN],
		[strSellerBRN] AS [SellerBRN],  
		[strBussinessAddress] AS [BussinessAddress],  
		[strToken] AS [Token],  
        [strResponseId] AS [ResponseId],  
        [dteTokenExpiryDate] AS [TokenExpiryDate],  
        [strResponseKey] AS [ResponseKey],  
		[strAESRandomEncryptKey] AS [AESRandomEncryptKey], 
		[bitTRNChecked] AS [IsTRNChecked],
		[bitDRNChecked] AS [IsDRNChecked],
		[bitPRFChecked] AS [IsPRFChecked],
        [dteRowUpdated] AS [RowUpdated]  
    FROM   
        [dbo].[tblEFDRegisterConfigMauritius];  
END  
GO

CREATE PROCEDURE [dbo].[AddUpdateEFDRegisterConfigMauritius]  
    @IPAddress NVARCHAR(MAX),  
    @Port NVARCHAR(100),  
	@ConnectionURL NVARCHAR(MAX),  
    @UserName NVARCHAR(100),  
    @Password NVARCHAR(100),  
    @EBSMRAID NVARCHAR(100),  
    @AreaCode NVARCHAR(100),  
	@SellerTAN NVARCHAR(100),  
	@SellerBRN NVARCHAR(100),  
	@BussinessAddress NVARCHAR(500),  
    @Token NVARCHAR(MAX),  
    @ResponseId NVARCHAR(500),  
    @TokenExpiryDate NVARCHAR(100),  
    @ResponseKey NVARCHAR(MAX),  
    @ID INT = NULL,  
	@AESRandomEncryptKey NVARCHAR(MAX), 
	@IsTRNChecked bit,
	@IsDRNChecked bit,
	@IsPRFChecked bit
AS  
BEGIN  
    IF @ID > 0  
    BEGIN  
        UPDATE [dbo].[tblEFDRegisterConfigMauritius]  
        SET [strIPAddress] = @IPAddress,  
            [strPort] = @Port,  
			[strConnectionURL] = @ConnectionURL,  
            [strUserName] = @UserName,  
            [strPassword] = @Password,  
            [strEBSMRAID] = @EBSMRAID,  
            [strAreaCode] = @AreaCode,  
			[strSellerTAN] = @SellerTAN, 
			[strSellerBRN] = @SellerBRN,  
			[strBussinessAddress] = @BussinessAddress,  
            [strToken] = @Token,  
            [strResponseId] = @ResponseId,  
            [dteTokenExpiryDate] = @TokenExpiryDate,  
            [strResponseKey] = @ResponseKey,  
			[strAESRandomEncryptKey] = @AESRandomEncryptKey,
			[bitTRNChecked] = @IsTRNChecked,
			[bitDRNChecked] = @IsDRNChecked , 
			[bitPRFChecked] = @IsPRFChecked,
            [dteRowUpdated] = GETDATE()  
        WHERE [intID] = @ID  
    END  
    ELSE  
    BEGIN  
        INSERT INTO [dbo].[tblEFDRegisterConfigMauritius] (  
            [strIPAddress],  
            [strPort],  
			[strConnectionURL],  
            [strUserName],  
            [strPassword],  
            [strEBSMRAID],  
            [strAreaCode],  
			[strSellerTAN], 
			[strSellerBRN],  
			[strBussinessAddress],  
            [strToken],  
            [strResponseId],  
            [dteTokenExpiryDate],  
            [strResponseKey],  
			[strAESRandomEncryptKey],
			[bitTRNChecked],
			[bitDRNChecked],  
			[bitPRFChecked],
            [dteRowUpdated]  
        )  
        VALUES (  
            @IPAddress,  
            @Port,  
			@ConnectionURL,  
            @UserName,  
            @Password,  
            @EBSMRAID,  
            @AreaCode,  
			@SellerTAN, 
			@SellerBRN,  
			@BussinessAddress,  
            @Token,  
            @ResponseId,  
            @TokenExpiryDate,  
            @ResponseKey,  
			@AESRandomEncryptKey, 
			@IsTRNChecked,
			@IsDRNChecked , 
			@IsPRFChecked,
            GETDATE()  
        )  
    END  
END  
GO

CREATE PROCEDURE [dbo].[AddEFDInvoiceDetailsForMauritius]  
( @InvoiceDoc VARCHAR(50),  
 @TransactionType INT,  
 @RequestData NVARCHAR(MAX),  
 @ResponseData NVARCHAR(MAX),  
 @QRCode NVARCHAR(MAX),  
 @PreviousNoteHash NVARCHAR(MAX),
 @ResponseDateTime NVARCHAR(MAX),
 @ResponseId NVARCHAR(MAX),
 @RequestId NVARCHAR(MAX),
 @InvoiceNum NVARCHAR(200)  
)  
AS  
BEGIN  
 INSERT INTO [dbo].[tblEFDInvoiceDocMauritius]  
           ( [strInvDocID], [intTransactionType], [strRequestData], [strResponseData], [strQRcode], [strInvoiceNum], [strPreviousNoteHash], [strResponseDateTime],[strResponseId],[strRequestId], [dteRowUpdated])  
     VALUES  
           (@InvoiceDoc, @TransactionType, @RequestData, @ResponseData, @QRCode, @InvoiceNum, @PreviousNoteHash, @ResponseDateTime, @ResponseId,@RequestId, GETDATE())  
END  
GO


CREATE PROCEDURE [dbo].[AddUpdatetblEFDRegisterConfigMauritius] @tblData
AS
EFDRegisterConfigMauritiusTableType READONLY AS

BEGIN
	SET IDENTITY_INSERT tblEFDRegisterConfigMauritius ON

	BEGIN
		INSERT INTO tblEFDRegisterConfigMauritius (
			[intID]
			,[strIPAddress]
			,[strConnectionURL]
			,[strPort]
			,[strUserName]
			,[strPassword]
			,[strEBSMRAID]
			,[strAreaCode]
			,[strSellerTAN]
			,[strSellerBRN]
			,[strBussinessAddress]
			,[strToken]
			,[strResponseId]
			,[dteTokenExpiryDate]
			,[strResponseKey]
			,[strAESRandomEncryptKey]
			)
		SELECT [intID]
			,[strIPAddress]
			,[strConnectionURL]
			,[strPort]
			,[strUserName]
			,[strPassword]
			,[strEBSMRAID]
			,[strAreaCode]
			,[strSellerTAN]
			,[strSellerBRN]
			,[strBussinessAddress]
			,[strToken]
			,[strResponseId]
			,[dteTokenExpiryDate]
			,[strResponseKey]
			,[strAESRandomEncryptKey]
		FROM @tblData AS t
		WHERE NOT EXISTS (
				SELECT 1
				FROM tblEFDRegisterConfigMauritius
				WHERE intID = t.intID
				)
	END

	BEGIN
		UPDATE table1
		SET table1.strIPAddress = table2.strIPAddress
			,table1.strConnectionURL = table2.strConnectionURL
			,table1.strPort = table2.strPort
			,table1.strUserName = table2.strUserName
			,table1.strPassword = table2.strPassword
			,table1.strEBSMRAID = table2.strEBSMRAID
			,table1.strAreaCode = table2.strAreaCode
			,table1.strSellerTAN = table2.strSellerTAN
			,table1.strSellerBRN = table2.strSellerBRN
			,table1.strBussinessAddress = table2.strBussinessAddress
			,table1.strToken = table2.strToken
			,table1.strResponseId = table2.strResponseId
			,table1.dteTokenExpiryDate = table2.dteTokenExpiryDate
			,table1.strResponseKey = table2.strResponseKey
			,table1.strAESRandomEncryptKey = table2.strAESRandomEncryptKey
		FROM tblEFDRegisterConfigMauritius AS table1
		INNER JOIN @tblData AS table2 ON table1.intID = table2.intID
	END

	SET IDENTITY_INSERT tblEFDRegisterConfigMauritius OFF
END
GO

CREATE PROCEDURE [dbo].[AddUpdatetblESDTaxCodeMapping] @tblData ESDTaxCodeMappingTableType READONLY
AS
BEGIN
	SET NOCOUNT ON;
	SET IDENTITY_INSERT tblESDTaxCodeMapping ON;

	-- Insert new records if they don't exist
	BEGIN
		INSERT INTO tblESDTaxCodeMapping (
			[intMappingId]
			,[strMauritiusTaxCode]
			,[strMappedTaxCode]
			)
		SELECT [intMappingId]
			,[strMauritiusTaxCode]
			,[strMappedTaxCode]
		FROM @tblData AS t
		WHERE NOT EXISTS (
				SELECT 1
				FROM tblESDTaxCodeMapping
				WHERE intMappingId = t.intMappingId
				);
	END;

	-- Update existing records
	BEGIN
		UPDATE table1
		SET table1.strMauritiusTaxCode = table2.strMauritiusTaxCode
			,table1.strMappedTaxCode = table2.strMappedTaxCode
		FROM tblESDTaxCodeMapping AS table1
		INNER JOIN @tblData AS table2 ON table1.intMappingId = table2.intMappingId;
	END;

	SET IDENTITY_INSERT tblESDTaxCodeMapping OFF;
END
GO

CREATE PROCEDURE [dbo].[AddUpdatetblEFDInvoiceDocMauritius] @tblData EFDInvoiceDocMauritiusTableType READONLY
AS
BEGIN
	SET NOCOUNT ON;
	SET IDENTITY_INSERT tblEFDInvoiceDocMauritius ON;

	-- Insert new records if they don't exist
	BEGIN
		INSERT INTO tblEFDInvoiceDocMauritius (
			[lngEFDInvDocID]
			,[strInvDocID]
			,[intTransactionType]
			,[strRequestData]
			,[strResponseData]
			,[strQRcode]
			,[strInvoiceNum]
			,[strPreviousNoteHash]
			,[strResponseDateTime]
			,[strResponseId]
			,[strRequestId]
			)
		SELECT [lngEFDInvDocID]
			,[strInvDocID]
			,[intTransactionType]
			,[strRequestData]
			,[strResponseData]
			,[strQRcode]
			,[strInvoiceNum]
			,[strPreviousNoteHash]
			,[strResponseDateTime]
			,[strResponseId]
			,[strRequestId]
		FROM @tblData AS t
		WHERE NOT EXISTS (
				SELECT 1
				FROM tblEFDInvoiceDocMauritius
				WHERE lngEFDInvDocID = t.lngEFDInvDocID
				);
	END;

	-- Update existing records
	BEGIN
		UPDATE table1
		SET table1.strInvDocID = table2.strInvDocID
			,table1.intTransactionType = table2.intTransactionType
			,table1.strRequestData = table2.strRequestData
			,table1.strResponseData = table2.strResponseData
			,table1.strQRcode = table2.strQRcode
			,table1.strInvoiceNum = table2.strInvoiceNum
			,table1.strPreviousNoteHash = table2.strPreviousNoteHash
			,table1.strResponseDateTime = table2.strResponseDateTime
			,table1.strResponseId = table2.strResponseId
			,table1.strRequestId = table2.strRequestId
		FROM tblEFDInvoiceDocMauritius AS table1
		INNER JOIN @tblData AS table2 ON table1.lngEFDInvDocID = table2.lngEFDInvDocID;
	END;

	SET IDENTITY_INSERT tblEFDInvoiceDocMauritius OFF;
END
GO

CREATE PROCEDURE [GetMRAResponseData] @DocNumber NVARCHAR(100)
AS
BEGIN
	select Top 1
	strInvDocID as strInvDocID,
	strQRcode as strQRcode
 from tblEFDInvoiceDocMauritius  where strInvDocID = @DocNumber
END
GO

CREATE PROCEDURE [dbo].[VendorsSaveHistory] (@tblInvoiceDoc InvoiceDocType READONLY)
AS
BEGIN
DECLARE @PIcount BIGINT = 0
	IF (
			SELECT COUNT(*)
			FROM @tblInvoiceDoc
			) > 0
	BEGIN
		INSERT INTO [dbo].[tblInvoiceDocP] (
			[strInvPDocID]
			,[lngInvTrackID]
			,[lngJourID]
			,[dteSystemDate]
			,[dteJournalDate]
			,[dteRequired]
			,[strUserName]
			,[strVendName]
			,[strShipTo]
			,[strVendInvNo]
			,[decSubTotal]
			,[decVAT]
			,[decTotal]
			,[bitFromPO]
			,[strOrdPDocID]
			,[strSourceMOP]
			,[bitHistoryTrans]
			,[strNotes]
			,[bitPrinted]
			,[bitEmailed]
			,[intPaidBy]
			,[intAccount]
			,[strCurrency]
			,[bitIsForeign]
			,[decSubTotalF]
			,[decVATF]
			,[decTotalF]
			,[decExchange]
			,[strTerm]
			,[intDept]
			,[strField1]
			,[strField2]
			,[strField3]
			,[strField4]
			,[strField5]
			,[strField6]
			,[strField7]
			,[strField8]
			,[strField9]
			,[strField10]
			,[strField11]
			,[strField12]
			,[strSubFormated]
			,[strVATFormatted]
			,[strTotFormatted]
			,[decDiscPerc]
			,[decDiscAmt]
			,[decDiscAmtF]
			,[strDiscFormatted]
			,[strOrdFQDocID]
			,[bitFQConvert]
			,[bitSOCopy]
			,[bitSOCopyMulti]
			,[strStatusTypeCode]
			,[bitBookmark]
			,[strAddInfo]
			,[strReference]
			,[strPaidBy]
			,[decNetItemWeight]
			,[decNetVolumetricWeight]
			,[intRevisionNumber]
			,[intAccrualProcess]
			,[strBuyerName]
			)
		SELECT CONVERT(NVARCHAR(100), ISNULL(strInvDocID, ''))
			,lngInvTrackID
			,lngJourID
			,CONVERT(SMALLDATETIME, ISNULL(dteSystemDate, GETDATE()))
			,CONVERT(SMALLDATETIME, ISNULL(dteJournalDate, GETDATE()))
			,CONVERT(SMALLDATETIME, ISNULL(dteRequired, GETDATE()))
			,CONVERT(NVARCHAR(40), ISNULL(strUserName, ''))
			,strCustName
			,CONVERT(NVARCHAR(1000), ISNULL(strShipTo, ''))
			,CONVERT(NVARCHAR(100), ISNULL(strReference, ''))  --VENDOR inv number
			,CONVERT(MONEY, ISNULL(decSubTotal, 0))
			,CONVERT(MONEY, ISNULL(decVAT, 0))
			,CONVERT(MONEY, ISNULL(decTotal, 0))
			,CONVERT(BIT, ISNULL(bitFromSO, 0))
			,strOrdDocID
			,CONVERT(NVARCHAR(1000), ISNULL(strSoldTo,''))  --MOP
			,CONVERT(BIT, ISNULL(bitHistoryTrans, 0))
			,CONVERT(NVARCHAR(MAX), ISNULL(strNotes, ''))
			,CONVERT(BIT, ISNULL(bitPrinted, 0))
			,CONVERT(BIT, ISNULL(bitEmailed, 0))
			,CONVERT(INT, ISNULL(intPaidBy, 0))
			,intAccount
			,CONVERT(NVARCHAR(6), ISNULL(strCurrency, ''))
			,CONVERT(BIT, ISNULL(bitIsForeign, 0))
			,CONVERT(MONEY, ISNULL(decSubTotalF, 0))
			,CONVERT(MONEY, ISNULL(decVATF, 0))
			,CONVERT(MONEY, ISNULL(decTotalF, 0))
			,CONVERT(MONEY, ISNULL(decExchange, 0))
			,CONVERT(NVARCHAR(100), ISNULL(strTerm, ''))
			,intDept
			,CONVERT(NVARCHAR(200), ISNULL(strField1, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField2, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField3, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField4, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField5, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField6, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField7, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField8, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField9, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField10, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField11, ''))
			,CONVERT(NVARCHAR(200), ISNULL(strField12, ''))
			,CONVERT(NVARCHAR(100), ISNULL(strSubFormated, ''))
			,CONVERT(NVARCHAR(100), ISNULL(strVATFormatted, ''))
			,CONVERT(NVARCHAR(100), ISNULL(strTotFormatted, ''))
			,0
			,0
			,0
			,''
			,NULL
			,0
			,0
			,0
			,NULL
			,0
			,''
			,''
			,CONVERT(NVARCHAR(40), ISNULL(strPaidBy, ''))
			,0
			,0
			,1
			,1
			,''
		FROM @tblInvoiceDoc;
	END

	    SELECT @PIcount = 
        CASE
            WHEN LEFT(strInvDocID, 3) = 'PI-' THEN CAST(SUBSTRING(strInvDocID, 4, LEN(strInvDocID)) AS BIGINT)
            ELSE NULL 
        END
    FROM @tblInvoiceDoc
    WHERE LEFT(strInvDocID, 3) = 'PI-'
    ORDER BY strInvDocID
    OFFSET 0 ROWS
    FETCH NEXT 1 ROWS ONLY;

	if(@PIcount <> 0)
	Exec [UpdateLastIDForDNandPI] @PIcount,0
END
GO

CREATE PROCEDURE [dbo].[FetchInvLocationBOMS] (
	@PartNumber AS NVARCHAR(50)
	,@SQUserName AS NVARCHAR(50)
	)
AS
BEGIN
	SELECT tblInvExt.strLocName
	FROM tblInvExt
	INNER JOIN tblInvLoc ON tblInvExt.strLocName = tblInvLoc.strLocName
	LEFT JOIN tblInvLocSec ON tblInvLoc.strLocName = tblInvLocSec.strLocName
		AND tblInvLocSec.strUserName = @SQUserName
	WHERE (tblInvLoc.intType = 0)
		AND (tblInvExt.bitInactive = 0)
		AND (tblInvExt.strPartNumber = @PartNumber)
	ORDER BY tblInvExt.strLocName
END
GO

CREATE PROCEDURE [dbo].[GetAllCompanyOptionsN]
AS
BEGIN
Select 
strStateProv as StateProv,
strCityProv as CityProv,
strPostal as Postal,
strBusinessNo as BusinessNo,
strCheque as Cheque,
strCustomers as Customers,
strVendors as Vendors,
strRecord as Record,
strOpen as [Open],
strVendInv as VendInv,
strVoucher as Voucher,
strDepreciationMethod1 as DepreciationMethod1,
strDepreciationMethod2 as DepreciationMethod2,
strDepreciationMethod3 as DepreciationMethod3,
strDepreciationMethod4 as DepreciationMethod4,
strDepreciationMethod5 as DepreciationMethod5,
bitStateProvMandatory as StateProvMandatory,
bitCityProvMandatory as CityProvMandatory,
bitPostalMandatory as PostalMandatory,
bitBusinessNoMandatory as BusinessNoMandatory,
strContact as Contact,
strContact2 as Contact2,
strBuyoutCostEdit as BuyoutCostEdit,
strUnitCost as UnitCost,
strAssetLocationLabel1 as AssetLocationLabel1,
strAssetLocationLabel2 as AssetLocationLabel2,
strAssetLocationLabel3 as AssetLocationLabel3,
strRptProfitAfterTaxLabel as ProfitLossAfterTaxLabel,
strRptProfitBeforeTaxLabel as ProfitLossBeforeTaxLabel,
strRptGrossProfitLabel as GrossProfitLabel,
strRptOperatingProfitLabel as OperatingProfitLabel,
strBuyer as Buyer
From tblCoOptsN                  
END
GO

CREATE PROCEDURE [dbo].[CRMLoadActivityPriority]  
AS  
BEGIN  
 SELECT ProrityType AS [PriorityType]  
  ,ProrityDescription AS [PriorityDescription]  
  ,ProrityGroup as [PriorityGroup]  
 FROM tblCRMActivityPrority  
 ORDER BY  ProrityType 
END  
GO
  
CREATE Procedure [dbo].[DeleteActivityPriority]  
@PriorityType   nvarchar(400),  
@CreatedUser nvarchar(400)  
As  
Begin  
Delete from [tblCRMActivityPrority] Where [ProrityType]=@PriorityType  
End  
GO

CREATE Procedure [dbo].[UpdateActivityPriority]  
@PriorityType nvarchar(400),  
@PriorityDescription nvarchar(Max),  
@IsInactive bit,  
@UpdatedUser nvarchar(400),  
@UpdatedDate datetime,  
@PriorityGroup int,  
@OldPriorityType nvarchar(400)  
As  
begin  
 Update [tblCRMActivityPrority] set 
 [ProrityDescription]=@PriorityDescription,  
 [ProrityType]=@PriorityType,  
 IsInactive=@IsInactive,  
 UpdatedUser=@UpdatedUser,  
 UpdatedDate=@UpdatedDate,   
 [ProrityGroup]=@PriorityGroup 
 where [ProrityType]=@OldPriorityType  
end  
GO

CREATE Procedure [dbo].[GetActivityProrityList]  
As  
Begin  
 Select   
ProrityType AS PriorityType  
,ProrityDescription AS PriorityDescription  
,IsInactive AS IsInactive  
,CreatedUser AS CreatedUser  
,UpdatedUser AS UpdatedUser  
,CreatedDate AS CreatedDate  
,UpdatedDate AS UpdatedDate  
,ProrityGroup AS PriorityGroup    
from tblCRMActivityPrority  
End  
GO

Create Procedure [dbo].[InsertActivityPriority]  
@ProrityType nvarchar(400),  
@ProrityDescription nvarchar(Max),  
@IsInactive bit,  
@CreatedUser nvarchar(400),  
@CreatedDate datetime,  
@IsPredefined bit,  
@ProrityGroup int  
As  
begin  
 Insert into tblCRMActivityPrority(ProrityType,ProrityDescription,IsInactive,CreatedUser,CreatedDate,ProrityGroup)  
 Values(@ProrityType,@ProrityDescription,@IsInactive,@CreatedUser,@CreatedDate,@ProrityGroup)  
end  
GO

CREATE PROCEDURE [dbo].[UpdateActivityNotificationDetails]      
@ActivityID bigint,      
@UserName nvarchar(40),   
@LoginUserName nvarchar(150),  
@ReadDate datetime,      
@IsRead bit,
@NotificationsType NVARCHAR(200)  
AS      
BEGIN      
 --IF NOT EXISTS (SELECT 1 FROM tblCRMActivityNotifications where ActivityID = @ActivityID AND UserName = @LoginUserName)    
 --BEGIN    
 -- INSERT INTO tblCRMActivityNotifications (ActivityID, UserName, ReadDate, IsRead) VALUES (@ActivityID, @UserName, @ReadDate, @IsRead)    
 --END    
 --ELSE    
 --BEGIN    
  UPDATE tblCRMActivityNotifications SET ReadDate = @ReadDate,IsRead = @IsRead WHERE ActivityID = @ActivityID   
   and UserName=  @LoginUserName   and NotificationsType = @NotificationsType
 --END    
END    
GO

CREATE PROCEDURE [dbo].[GetActivityGroupAllowedUserList] @ActivityGroupName NVARCHAR(200)
AS
BEGIN
	SELECT tblCRMAcitvityGroupUsers.UserName
	FROM tblCRMAcitvityGroupUsers 
	WHERE tblCRMAcitvityGroupUsers.ActivityGroupName = @ActivityGroupName
END
GO

CREATE PROCEDURE [dbo].[InsertCRMActivityNotificationData]  
(  
 @ActivityID bigint,  
 @UserName NVARCHAR(200),  
 @ReadDate DateTime,  
 @IsRead bit,  
 @IsUpdate bit,
 @NotificationsType  NVARCHAR(200)
)  
AS  
BEGIN  
	IF EXISTS (SELECT 1 FROM tblCRMActivityNotifications where ActivityID = @ActivityID AND UserName = @UserName AND NotificationsType =  @NotificationsType)    
	BEGIN  
		UPDATE [tblCRMActivityNotifications] SET UserName = @UserName, ReadDate=@ReadDate, IsRead = @IsRead, NotificationsType =  @NotificationsType WHERE ActivityID = @ActivityID  
	END  
	ELSE  
	BEGIN  
		INSERT INTO [dbo].[tblCRMActivityNotifications]  
		(  
		 ActivityID  
		 ,UserName  
		 ,ReadDate  
		 ,IsRead 
		 ,NotificationsType 
		) VALUES  
		(  
		 @ActivityID  
		 ,@UserName  
		 ,@ReadDate  
		 ,@IsRead  
		 ,@NotificationsType
		)  
	END  
END  
GO

CREATE PROCEDURE [dbo].[GetCRMActivitiesNotificationData] (          
 @CustomerNumber NVARCHAR(Max)          
 ,@VendorNumber NVARCHAR(Max)          
 ,@InventoryItemNumber NVARCHAR(Max)          
 ,@ProjectNumber NVARCHAR(Max)          
 ,@ActivityGroupName NVARCHAR(Max)          
 ,@ActivityStatus NVARCHAR(Max)          
 ,@ActivityPriority NVARCHAR(Max)    
 ,@LoginUserName NVARCHAR(Max)    
 ,@UserName NVARCHAR(Max) = '<<ALL>>'          
 ,@TaskStatus NVARCHAR(Max) = '<<ALL>>'          
 ,@TransactionNumber NVARCHAR(Max) = '<<ALL>>'          
 )          
AS          
BEGIN          
 IF (@TaskStatus = 'ALL')          
 BEGIN          
  SELECT distinct tblCRMActivities.ActivityID AS ActivityID          
   ,tblCRMActivities.ActivityName AS ActivityName          
   ,tblCRMActivities.ActivityDescription AS ActivityDescription          
   ,tblCRMActivities.ActivityGroupName AS ActivityGroupName          
   ,tblCRMActivities.ActivityStatus AS ActivityStatus         
   ,tblCRMActivities.ActivityPriority AS ActivityPriority        
   ,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate        
   ,tblCRMActivities.CustomerNumber AS CustomerNumber        
   ,tblCRMActivities.ActivityDueDate AS ActivityDueDate        
   ,tblCRMActivities.IsNotifyOwnerofActions AS IsNotifyOwnerofActions  
   ,tblCRMActivities.IsNotifyGroupofActivity  AS IsNotifyGroupofActivity      
   ,tblCustomers.strCustDesc AS CustomerDescription          
   ,tblCRMActivities.VendorNumber AS VendorNumber          
   ,tblVendors.strVendDesc AS VendorDescription          
   ,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber          
   ,tblInv.strDesc AS InventoryItemDescription          
   ,tblCRMActivities.ProjectNumber AS ProjectNumber          
   ,tblProjects.strProjName AS ProjectDescription          
   ,tblCRMActivities.CustomerContactNo AS CustomerContactNo          
   ,tblCRMActivities.VendorContactNo AS VendorContactNo          
   ,tblCRMActivities.TransactionType AS TransactionType          
   ,tblCRMActivities.TransactionNumber AS TransactionNumber          
   ,tblCRMActivities.CreatedUser AS CreatedUser          
   ,tblCRMActivities.UpdatedUser AS UpdatedUser          
   ,tblCRMActivities.CreatedDate AS CreatedDate          
   ,tblCRMActivities.UpdatedDate AS UpdatedDate          
   ,tblCRMActivities.IsInactive AS IsInactive          
   ,tblCRMActivities.IsSalesGroup AS IsSalesGroup          
   ,tblCRMActivities.SalesPipelineText AS SalesPipelineText          
   ,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage          
   ,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser          
   ,tblCRMActivities.ValueText AS ValueText          
   ,tblCRMActivities.CustomerProspect AS CustomerProspect          
   ,tblCRMActivities.ProsCompanyName AS ProsCompanyName          
   ,tblCRMActivities.ProsContactNo AS ProsContactNo          
   ,tblCRMActivities.ProsEmailId AS ProsEmailId          
   ,tblCRMActivities.ProsAddress AS ProsAddress          
   ,tblCRMActivities.CustPhoneNo AS CustPhoneNo          
   ,tblCRMActivities.CustMobileNo AS CustMobileNo          
   ,tblCRMActivities.CustEmailId AS CustEmailId          
   ,tblCRMActivities.CustAddress AS CustAddress          
   ,tblCRMActivities.ProsName AS ProsName          
   ,CASE WHEN tblCRMActivities.CustomerProspect = '1' THEN 'Prospect' ELSE tblCRMActivities.CustomerNumber END AS CustomerProspectCheck         
   ,(select Count(*) from tblCRMAcitvityGroupUsers where tblCRMAcitvityGroupUsers.ActivityGroupName = tblCRMActivities.ActivityGroupName) as AssignedUserCount      
   ,(select count(*) from tblCRMActivityActions where tblCRMActivityActions.ActivityID = tblCRMActivities.ActivityID and AssignTo is null) as UnAssignedUserCount         
   ,ISNULL(tblCRMActivityNotifications.IsRead,0) as IsNotificationRead     
   ,tblCRMActivityNotifications.NotificationsType  as NotificationsType        
  FROM tblCRMActivities          
  LEFT JOIN tblCustomers ON tblCRMActivities.CustomerNumber = tblCustomers.strCustName          
  LEFT JOIN tblVendors ON tblCRMActivities.VendorNumber = tblVendors.strVendName          
  LEFT JOIN tblInv ON tblCRMActivities.InventoryItemNumber = tblInv.strPartNumber          
  LEFT JOIN tblProjects ON tblCRMActivities.ProjectNumber = tblProjects.strProjNumber          
  LEFT JOIN tblCRMActivityNotifications on tblCRMActivityNotifications.ActivityID = tblCRMActivities.ActivityID     AND tblCRMActivityNotifications.UserName = @LoginUserName    
  WHERE tblCRMActivities.IsNotifyOwnerofActions = 1 AND    
  (          
    tblCRMActivities.CustomerNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@CustomerNumber, ',')          
     )          
    OR ISNULL(@CustomerNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.VendorNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@VendorNumber, ',')          
     )          
    OR ISNULL(@VendorNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.InventoryItemNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@InventoryItemNumber, ',')          
     )          
    OR ISNULL(@InventoryItemNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.ProjectNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ProjectNumber, ',')          
     )          
    OR ISNULL(@ProjectNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.ActivityGroupName IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ActivityGroupName, ',')          
     )          
    OR ISNULL(@ActivityGroupName, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.ActivityStatus IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ActivityStatus, ',')          
     )          
    OR ISNULL(@ActivityStatus, '<<ALL>>') = '<<ALL>>'          
    )          
  AND (          
    tblCRMActivities.ActivityPriority IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ActivityPriority, ',')          
     )          
    OR ISNULL(@ActivityPriority, '<<ALL>>') = '<<ALL>>'          
    )         
   AND (          
    tblCRMActivities.CreatedUser IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@UserName, ',')          
     )          
    OR ISNULL(@UserName, '<<ALL>>') = '<<ALL>>'          
    )      
  --AND (          
  --  tblCRMActivities.ActivityID IN (          
  --      SELECT DISTINCT t1.ActivityID          
  --   FROM tblCRMActivityActions t1 where t1.AssignTo = @LoginUserName    
  --)          
  --  )             
   --Or (tblCRMActivities.TransactionNumber = @TransactionNumber )          
 END          
 ELSE IF (@TaskStatus = 'Overdue')          
 BEGIN          
  SELECT distinct tblCRMActivities.ActivityID AS ActivityID          
   ,tblCRMActivities.ActivityName AS ActivityName          
   ,tblCRMActivities.ActivityDescription AS ActivityDescription          
   ,tblCRMActivities.ActivityGroupName AS ActivityGroupName          
   ,tblCRMActivities.ActivityStatus AS ActivityStatus          
   ,tblCRMActivities.ActivityPriority AS ActivityPriority        
   ,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate         
   ,tblCRMActivities.ActivityDueDate AS ActivityDueDate         
   ,tblCRMActivities.IsNotifyOwnerofActions AS IsNotifyOwnerofActions  
   ,tblCRMActivities.IsNotifyGroupofActivity  AS IsNotifyGroupofActivity      
   ,tblCRMActivities.CustomerNumber AS CustomerNumber          
   ,tblCustomers.strCustDesc AS CustomerDescription          
   ,tblCRMActivities.VendorNumber AS VendorNumber          
   ,tblVendors.strVendDesc AS VendorDescription          
   ,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber          
   ,tblInv.strDesc AS InventoryItemDescription          
   ,tblCRMActivities.ProjectNumber AS ProjectNumber          
   ,tblProjects.strProjName AS ProjectDescription    
   ,tblCRMActivities.CustomerContactNo AS CustomerContactNo          
   ,tblCRMActivities.VendorContactNo AS VendorContactNo          
   ,tblCRMActivities.TransactionType AS TransactionType          
   ,tblCRMActivities.TransactionNumber AS TransactionNumber          
   ,tblCRMActivities.CreatedUser AS CreatedUser          
   ,tblCRMActivities.UpdatedUser AS UpdatedUser          
   ,tblCRMActivities.CreatedDate AS CreatedDate          
   ,tblCRMActivities.UpdatedDate AS UpdatedDate          
   ,tblCRMActivities.IsInactive AS IsInactive          
   ,tblCRMActivities.IsSalesGroup AS IsSalesGroup          
   ,tblCRMActivities.SalesPipelineText AS SalesPipelineText          
   ,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage          
   ,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser          
   ,tblCRMActivities.ValueText AS ValueText          
   ,tblCRMActivities.CustomerProspect AS CustomerProspect          
   ,tblCRMActivities.ProsCompanyName AS ProsCompanyName          
   ,tblCRMActivities.ProsContactNo AS ProsContactNo          
   ,tblCRMActivities.ProsEmailId AS ProsEmailId          
   ,tblCRMActivities.ProsAddress AS ProsAddress          
   ,tblCRMActivities.CustPhoneNo AS CustPhoneNo          
   ,tblCRMActivities.CustMobileNo AS CustMobileNo          
   ,tblCRMActivities.CustEmailId AS CustEmailId          
   ,tblCRMActivities.CustAddress AS CustAddress          
   ,tblCRMActivities.ProsName AS ProsName         
   ,(select Count(*) from tblCRMAcitvityGroupUsers where tblCRMAcitvityGroupUsers.ActivityGroupName = tblCRMActivities.ActivityGroupName) as AssignedUserCount      
   ,(select count(*) from tblCRMActivityActions where tblCRMActivityActions.ActivityID = tblCRMActivities.ActivityID and AssignTo is null) as UnAssignedUserCount        
  ,ISNULL(tblCRMActivityNotifications.IsRead,0) as IsNotificationRead     
  ,tblCRMActivityNotifications.NotificationsType  as NotificationsType         
  FROM tblCRMActivities          
  LEFT JOIN tblCustomers ON tblCRMActivities.CustomerNumber = tblCustomers.strCustName          
  LEFT JOIN tblVendors ON tblCRMActivities.VendorNumber = tblVendors.strVendName          
  LEFT JOIN tblInv ON tblCRMActivities.InventoryItemNumber = tblInv.strPartNumber          
  LEFT JOIN tblProjects ON tblCRMActivities.ProjectNumber = tblProjects.strProjNumber        
  LEFT JOIN tblCRMActivityNotifications on tblCRMActivityNotifications.ActivityID = tblCRMActivities.ActivityID  AND tblCRMActivityNotifications.UserName = @LoginUserName        
  WHERE tblCRMActivities.IsNotifyOwnerofActions = 1 AND (          
    tblCRMActivities.CustomerNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@CustomerNumber, ',')          
     )          
    OR ISNULL(@CustomerNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.VendorNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@VendorNumber, ',')          
     )          
    OR ISNULL(@VendorNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.InventoryItemNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@InventoryItemNumber, ',')          
     )          
    OR ISNULL(@InventoryItemNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.ProjectNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ProjectNumber, ',')          
     )          
    OR ISNULL(@ProjectNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.ActivityGroupName IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ActivityGroupName, ',')          
     )          
    OR ISNULL(@ActivityGroupName, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.ActivityStatus IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ActivityStatus, ',')          
     )          
    OR ISNULL(@ActivityStatus, '<<ALL>>') = '<<ALL>>'          
    )        
  AND (          
    tblCRMActivities.ActivityPriority IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ActivityPriority, ',')          
     )          
    OR ISNULL(@ActivityPriority, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.CreatedUser IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@UserName, ',')          
     )          
    OR ISNULL(@UserName, '<<ALL>>') = '<<ALL>>'          
    )     
 AND     cast(tblCRMActivities.ActivityDueDate AS DATE) < cast(GETDATE() AS DATE)    
  --AND (          
  --  tblCRMActivities.ActivityID IN (          
  --      SELECT DISTINCT t1.ActivityID          
  --   FROM tblCRMActivityActions t1 where t1.AssignTo = @LoginUserName    
  --)          
  --  )               
   --AND (          
   -- tblCRMActivities.ActivityID IN (          
   --  SELECT DISTINCT t1.ActivityID          
   --  FROM tblCRMActivityActions t1 Inner join tblCRMActivityActionsStatus           
   --  on t1.ActionStatus= tblCRMActivityActionsStatus.StatusType          
   --  WHERE  (tblCRMActivityActionsStatus.StatusGroup <> 3)          
   --   AND cast(t1.DueDate AS DATE) < cast(GETDATE() AS DATE)          
   --  )          
   -- )          
   --Or (tblCRMActivities.TransactionNumber = @TransactionNumber )          
 END          
 ELSE IF (@TaskStatus = 'DueToday')          
 BEGIN          
  SELECT distinct tblCRMActivities.ActivityID AS ActivityID          
   ,tblCRMActivities.ActivityName AS ActivityName          
   ,tblCRMActivities.ActivityDescription AS ActivityDescription          
   ,tblCRMActivities.ActivityGroupName AS ActivityGroupName          
   ,tblCRMActivities.ActivityStatus AS ActivityStatus          
   ,tblCRMActivities.ActivityPriority AS ActivityPriority        
   ,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate        
   ,tblCRMActivities.ActivityDueDate AS ActivityDueDate          
   ,tblCRMActivities.IsNotifyOwnerofActions AS IsNotifyOwnerofActions 
   ,tblCRMActivities.IsNotifyGroupofActivity  AS IsNotifyGroupofActivity       
   ,tblCRMActivities.CustomerNumber AS CustomerNumber          
   ,tblCustomers.strCustDesc AS CustomerDescription          
   ,tblCRMActivities.VendorNumber AS VendorNumber          
   ,tblVendors.strVendDesc AS VendorDescription          
   ,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber          
   ,tblInv.strDesc AS InventoryItemDescription          
   ,tblCRMActivities.ProjectNumber AS ProjectNumber          
   ,tblProjects.strProjName AS ProjectDescription          
   ,tblCRMActivities.CustomerContactNo AS CustomerContactNo          
   ,tblCRMActivities.VendorContactNo AS VendorContactNo          
   ,tblCRMActivities.TransactionType AS TransactionType          
   ,tblCRMActivities.TransactionNumber AS TransactionNumber          
   ,tblCRMActivities.CreatedUser AS CreatedUser          
   ,tblCRMActivities.UpdatedUser AS UpdatedUser          
   ,tblCRMActivities.CreatedDate AS CreatedDate          
   ,tblCRMActivities.UpdatedDate AS UpdatedDate          
   ,tblCRMActivities.IsInactive AS IsInactive          
   ,tblCRMActivities.IsSalesGroup AS IsSalesGroup          
   ,tblCRMActivities.SalesPipelineText AS SalesPipelineText          
   ,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage          
   ,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser          
   ,tblCRMActivities.ValueText AS ValueText          
   ,tblCRMActivities.CustomerProspect AS CustomerProspect          
   ,tblCRMActivities.ProsCompanyName AS ProsCompanyName          
   ,tblCRMActivities.ProsContactNo AS ProsContactNo          
   ,tblCRMActivities.ProsEmailId AS ProsEmailId          
   ,tblCRMActivities.ProsAddress AS ProsAddress          
   ,tblCRMActivities.CustPhoneNo AS CustPhoneNo          
   ,tblCRMActivities.CustMobileNo AS CustMobileNo          
   ,tblCRMActivities.CustEmailId AS CustEmailId          
   ,tblCRMActivities.CustAddress AS CustAddress          
   ,tblCRMActivities.ProsName AS ProsName          
   ,(select Count(*) from tblCRMAcitvityGroupUsers where tblCRMAcitvityGroupUsers.ActivityGroupName = tblCRMActivities.ActivityGroupName) as AssignedUserCount        
   ,(select count(*) from tblCRMActivityActions where tblCRMActivityActions.ActivityID = tblCRMActivities.ActivityID and AssignTo is null) as UnAssignedUserCount      
   ,ISNULL(tblCRMActivityNotifications.IsRead,0) as IsNotificationRead       
   ,tblCRMActivityNotifications.NotificationsType  as NotificationsType     
  FROM tblCRMActivities          
  LEFT JOIN tblCustomers ON tblCRMActivities.CustomerNumber = tblCustomers.strCustName          
  LEFT JOIN tblVendors ON tblCRMActivities.VendorNumber = tblVendors.strVendName          
  LEFT JOIN tblInv ON tblCRMActivities.InventoryItemNumber = tblInv.strPartNumber          
  LEFT JOIN tblProjects ON tblCRMActivities.ProjectNumber = tblProjects.strProjNumber          
  LEFT JOIN tblCRMActivityNotifications on tblCRMActivityNotifications.ActivityID = tblCRMActivities.ActivityID    AND tblCRMActivityNotifications.UserName = @LoginUserName    
  WHERE tblCRMActivities.IsNotifyOwnerofActions = 1 AND (          
    tblCRMActivities.CustomerNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@CustomerNumber, ',')          
     )          
    OR ISNULL(@CustomerNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.VendorNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@VendorNumber, ',')          
     )          
    OR ISNULL(@VendorNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.InventoryItemNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@InventoryItemNumber, ',')          
     )          
    OR ISNULL(@InventoryItemNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.ProjectNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ProjectNumber, ',')          
     )          
    OR ISNULL(@ProjectNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.ActivityGroupName IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ActivityGroupName, ',')          
     )          
    OR ISNULL(@ActivityGroupName, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.ActivityStatus IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ActivityStatus, ',')          
     )          
    OR ISNULL(@ActivityStatus, '<<ALL>>') = '<<ALL>>'          
    )        
  AND (          
    tblCRMActivities.ActivityPriority IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ActivityPriority, ',')          
     )          
    OR ISNULL(@ActivityPriority, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.CreatedUser IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@UserName, ',')          
     )          
    OR ISNULL(@UserName, '<<ALL>>') = '<<ALL>>'          
    )      
  AND cast(tblCRMActivities.ActivityDueDate AS DATE) = cast(GETDATE() AS DATE)        
  -- AND (          
  --  tblCRMActivities.ActivityID IN (          
  --      SELECT DISTINCT t1.ActivityID          
  --   FROM tblCRMActivityActions t1 where t1.AssignTo = @LoginUserName    
  --)          
  --  )            
   --AND (          
   -- tblCRMActivities.ActivityID IN (          
   --  SELECT DISTINCT t1.ActivityID          
   --  FROM tblCRMActivityActions t1 Inner join tblCRMActivityActionsStatus           
   --  on t1.ActionStatus= tblCRMActivityActionsStatus.StatusType          
   --  WHERE  (tblCRMActivityActionsStatus.StatusGroup <> 3)          
   --   AND cast(t1.DueDate AS DATE) = cast(GETDATE() AS DATE)          
   --  )          
   -- )          
  --Or (tblCRMActivities.TransactionNumber = @TransactionNumber )          
 END          
 ELSE IF (@TaskStatus = 'Open')          
 BEGIN          
  SELECT distinct tblCRMActivities.ActivityID AS ActivityID          
   ,tblCRMActivities.ActivityName AS ActivityName          
   ,tblCRMActivities.ActivityDescription AS ActivityDescription          
   ,tblCRMActivities.ActivityGroupName AS ActivityGroupName          
   ,tblCRMActivities.ActivityStatus AS ActivityStatus          
   ,tblCRMActivities.ActivityPriority AS ActivityPriority        
   ,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate          
   ,tblCRMActivities.ActivityDueDate AS ActivityDueDate        
   ,tblCRMActivities.IsNotifyOwnerofActions AS IsNotifyOwnerofActions   
   ,tblCRMActivities.IsNotifyGroupofActivity  AS IsNotifyGroupofActivity     
   ,tblCRMActivities.CustomerNumber AS CustomerNumber          
   ,tblCustomers.strCustDesc AS CustomerDescription          
   ,tblCRMActivities.VendorNumber AS VendorNumber          
   ,tblVendors.strVendDesc AS VendorDescription          
   ,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber          
   ,tblInv.strDesc AS InventoryItemDescription          
   ,tblCRMActivities.ProjectNumber AS ProjectNumber          
   ,tblProjects.strProjName AS ProjectDescription          
   ,tblCRMActivities.CustomerContactNo AS CustomerContactNo          
   ,tblCRMActivities.VendorContactNo AS VendorContactNo          
   ,tblCRMActivities.TransactionType AS TransactionType          
   ,tblCRMActivities.TransactionNumber AS TransactionNumber          
   ,tblCRMActivities.CreatedUser AS CreatedUser          
   ,tblCRMActivities.UpdatedUser AS UpdatedUser          
   ,tblCRMActivities.CreatedDate AS CreatedDate          
   ,tblCRMActivities.UpdatedDate AS UpdatedDate          
   ,tblCRMActivities.IsInactive AS IsInactive          
   ,tblCRMActivities.IsSalesGroup AS IsSalesGroup          
   ,tblCRMActivities.SalesPipelineText AS SalesPipelineText          
   ,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage          
   ,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser          
   ,tblCRMActivities.ValueText AS ValueText          
   ,tblCRMActivities.CustomerProspect AS CustomerProspect          
   ,tblCRMActivities.ProsCompanyName AS ProsCompanyName          
   ,tblCRMActivities.ProsContactNo AS ProsContactNo          
   ,tblCRMActivities.ProsEmailId AS ProsEmailId          
   ,tblCRMActivities.ProsAddress AS ProsAddress          
   ,tblCRMActivities.CustPhoneNo AS CustPhoneNo          
   ,tblCRMActivities.CustMobileNo AS CustMobileNo          
   ,tblCRMActivities.CustEmailId AS CustEmailId          
   ,tblCRMActivities.CustAddress AS CustAddress          
   ,tblCRMActivities.ProsName AS ProsName          
   ,(select Count(*) from tblCRMAcitvityGroupUsers where tblCRMAcitvityGroupUsers.ActivityGroupName = tblCRMActivities.ActivityGroupName) as AssignedUserCount      
   ,(select count(*) from tblCRMActivityActions where tblCRMActivityActions.ActivityID = tblCRMActivities.ActivityID and AssignTo is null) as UnAssignedUserCount        
   ,ISNULL(tblCRMActivityNotifications.IsRead,0) as IsNotificationRead     
   ,tblCRMActivityNotifications.NotificationsType  as NotificationsType       
  FROM tblCRMActivities          
  LEFT JOIN tblCustomers ON tblCRMActivities.CustomerNumber = tblCustomers.strCustName          
  LEFT JOIN tblVendors ON tblCRMActivities.VendorNumber = tblVendors.strVendName          
  LEFT JOIN tblInv ON tblCRMActivities.InventoryItemNumber = tblInv.strPartNumber          
  LEFT JOIN tblProjects ON tblCRMActivities.ProjectNumber = tblProjects.strProjNumber          
  LEFT JOIN tblCRMActivityNotifications on tblCRMActivityNotifications.ActivityID = tblCRMActivities.ActivityID   AND tblCRMActivityNotifications.UserName = @LoginUserName     
  WHERE tblCRMActivities.IsNotifyOwnerofActions = 1 AND (          
    tblCRMActivities.CustomerNumber IN (          
     SELECT [VALUE]     
     FROM dbo.fnSplitStringAsTable(@CustomerNumber, ',')          
     )          
    OR ISNULL(@CustomerNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.VendorNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@VendorNumber, ',')          
     )          
    OR ISNULL(@VendorNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.InventoryItemNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@InventoryItemNumber, ',')          
     )          
    OR ISNULL(@InventoryItemNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.ProjectNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ProjectNumber, ',')          
     )          
    OR ISNULL(@ProjectNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.ActivityGroupName IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ActivityGroupName, ',')          
     )          
    OR ISNULL(@ActivityGroupName, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.ActivityStatus IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ActivityStatus, ',')          
     )          
    OR ISNULL(@ActivityStatus, '<<ALL>>') = '<<ALL>>'          
    )        
  AND (          
    tblCRMActivities.ActivityPriority IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ActivityPriority, ',')          
     )          
    OR ISNULL(@ActivityPriority, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.CreatedUser IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@UserName, ',')          
     )          
    OR ISNULL(@UserName, '<<ALL>>') = '<<ALL>>'          
    )         
 AND cast(tblCRMActivities.ActivityDueDate AS DATE) >= cast(GETDATE() AS DATE)      
 AND tblCRMActivities.ActivityStatus in ('NEW','IN PROGRESS')      
  --AND (          
  --  tblCRMActivities.ActivityID IN (          
  --      SELECT DISTINCT t1.ActivityID          
  --   FROM tblCRMActivityActions t1 where t1.AssignTo = @LoginUserName    
  --)          
  --  )         
   --AND (          
   -- tblCRMActivities.ActivityID IN (          
   -- SELECT DISTINCT t1.ActivityID          
   --  FROM tblCRMActivityActions t1 Inner join tblCRMActivityActionsStatus           
   --  on t1.ActionStatus= tblCRMActivityActionsStatus.StatusType          
   --  WHERE  (tblCRMActivityActionsStatus.StatusGroup in (1,2))          
   --   AND cast(t1.DueDate AS DATE) >= cast(GETDATE() AS DATE)          
   --  )          
   -- )          
   --Or (tblCRMActivities.TransactionNumber = @TransactionNumber )          
   END          
 ELSE IF (@TaskStatus = 'InProgress')          
 BEGIN          
  SELECT distinct tblCRMActivities.ActivityID AS ActivityID          
   ,tblCRMActivities.ActivityName AS ActivityName          
   ,tblCRMActivities.ActivityDescription AS ActivityDescription          
   ,tblCRMActivities.ActivityGroupName AS ActivityGroupName          
   ,tblCRMActivities.ActivityStatus AS ActivityStatus          
   ,tblCRMActivities.ActivityPriority AS ActivityPriority        
   ,tblCRMActivities.ActivityCreatedDate AS ActivityCreatedDate          
   ,tblCRMActivities.ActivityDueDate AS ActivityDueDate        
   ,tblCRMActivities.IsNotifyOwnerofActions AS IsNotifyOwnerofActions 
   ,tblCRMActivities.IsNotifyGroupofActivity  AS IsNotifyGroupofActivity       
   ,tblCRMActivities.CustomerNumber AS CustomerNumber          
   ,tblCustomers.strCustDesc AS CustomerDescription          
   ,tblCRMActivities.VendorNumber AS VendorNumber          
   ,tblVendors.strVendDesc AS VendorDescription          
   ,tblCRMActivities.InventoryItemNumber AS InventoryItemNumber          
   ,tblInv.strDesc AS InventoryItemDescription          
   ,tblCRMActivities.ProjectNumber AS ProjectNumber          
   ,tblProjects.strProjName AS ProjectDescription          
   ,tblCRMActivities.CustomerContactNo AS CustomerContactNo          
   ,tblCRMActivities.VendorContactNo AS VendorContactNo          
   ,tblCRMActivities.TransactionType AS TransactionType          
   ,tblCRMActivities.TransactionNumber AS TransactionNumber          
   ,tblCRMActivities.CreatedUser AS CreatedUser          
   ,tblCRMActivities.UpdatedUser AS UpdatedUser          
   ,tblCRMActivities.CreatedDate AS CreatedDate          
   ,tblCRMActivities.UpdatedDate AS UpdatedDate          
   ,tblCRMActivities.IsInactive AS IsInactive          
   ,tblCRMActivities.IsSalesGroup AS IsSalesGroup          
   ,tblCRMActivities.SalesPipelineText AS SalesPipelineText          
   ,tblCRMActivities.SalesPipelinePercentage AS SalesPipelinePercentage          
   ,tblCRMActivities.ActivityCreatedUser AS ActivityCreatedUser          
   ,tblCRMActivities.ValueText AS ValueText          
   ,tblCRMActivities.CustomerProspect AS CustomerProspect          
   ,tblCRMActivities.ProsCompanyName AS ProsCompanyName          
   ,tblCRMActivities.ProsContactNo AS ProsContactNo          
   ,tblCRMActivities.ProsEmailId AS ProsEmailId          
   ,tblCRMActivities.ProsAddress AS ProsAddress          
   ,tblCRMActivities.CustPhoneNo AS CustPhoneNo          
   ,tblCRMActivities.CustMobileNo AS CustMobileNo          
   ,tblCRMActivities.CustEmailId AS CustEmailId          
   ,tblCRMActivities.CustAddress AS CustAddress          
   ,tblCRMActivities.ProsName AS ProsName          
   ,(select Count(*) from tblCRMAcitvityGroupUsers where tblCRMAcitvityGroupUsers.ActivityGroupName = tblCRMActivities.ActivityGroupName) as AssignedUserCount        
   ,(select count(*) from tblCRMActivityActions where tblCRMActivityActions.ActivityID = tblCRMActivities.ActivityID and AssignTo is null) as UnAssignedUserCount      
   ,ISNULL(tblCRMActivityNotifications.IsRead,0) as IsNotificationRead   
   ,tblCRMActivityNotifications.NotificationsType  as NotificationsType       
  FROM tblCRMActivities          
  LEFT JOIN tblCustomers ON tblCRMActivities.CustomerNumber = tblCustomers.strCustName          
  LEFT JOIN tblVendors ON tblCRMActivities.VendorNumber = tblVendors.strVendName          
  LEFT JOIN tblInv ON tblCRMActivities.InventoryItemNumber = tblInv.strPartNumber          
  LEFT JOIN tblProjects ON tblCRMActivities.ProjectNumber = tblProjects.strProjNumber        
  LEFT JOIN tblCRMActivityNotifications on tblCRMActivityNotifications.ActivityID = tblCRMActivities.ActivityID  AND tblCRMActivityNotifications.UserName = @LoginUserName        
  WHERE tblCRMActivities.IsNotifyOwnerofActions = 1 AND (          
    tblCRMActivities.CustomerNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@CustomerNumber, ',')          
     )          
    OR ISNULL(@CustomerNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.VendorNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@VendorNumber, ',')          
     )          
    OR ISNULL(@VendorNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.InventoryItemNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@InventoryItemNumber, ',')          
     )          
    OR ISNULL(@InventoryItemNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.ProjectNumber IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ProjectNumber, ',')          
     )          
    OR ISNULL(@ProjectNumber, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.ActivityGroupName IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ActivityGroupName, ',')          
     )          
    OR ISNULL(@ActivityGroupName, '<<ALL>>') = '<<ALL>>'          
    )          
   AND (          
    tblCRMActivities.ActivityStatus IN (      
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ActivityStatus, ',')          
     )          
    OR ISNULL(@ActivityStatus, '<<ALL>>') = '<<ALL>>'          
    )          
 AND (          
    tblCRMActivities.ActivityPriority IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@ActivityPriority, ',')          
     )          
    OR ISNULL(@ActivityPriority, '<<ALL>>') = '<<ALL>>'          
    )        
   AND (          
    tblCRMActivities.CreatedUser IN (          
     SELECT [VALUE]          
     FROM dbo.fnSplitStringAsTable(@UserName, ',')          
     )          
    OR ISNULL(@UserName, '<<ALL>>') = '<<ALL>>'          
    )       
 AND  (tblCRMActivities.ActivityStatus = 'IN PROGRESS')          
      AND cast(tblCRMActivities.ActivityDueDate AS DATE) >= cast(GETDATE() AS DATE)           
  -- AND (          
  --  tblCRMActivities.ActivityID IN (          
  --      SELECT DISTINCT t1.ActivityID          
  --   FROM tblCRMActivityActions t1 where t1.AssignTo = @LoginUserName    
  --)          
  --  )          
   --Or (tblCRMActivities.TransactionNumber = @TransactionNumber )          
 END          
END         
GO

CREATE PROCEDURE [dbo].GetActivityPriorityCount @InActive BIT = 0
	,@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	IF (@InActive = 0)
	BEGIN
		SELECT count(*)
		FROM tblCRMActivityPrority
		WHERE IsInactive = @InActive
			AND (
				ISNULL(ProrityType, '') LIKE '%' + ISNULL(@search, ProrityType) + '%'
				OR ISNULL(ProrityDescription, '') LIKE '%' + ISNULL(@search, ProrityDescription) + '%'
				)
	END
	ELSE
	BEGIN
		SELECT count(*)
		FROM tblCRMActivityPrority
		WHERE (
				ISNULL(ProrityType, '') LIKE '%' + ISNULL(@search, ProrityType) + '%'
				OR ISNULL(ProrityDescription, '') LIKE '%' + ISNULL(@search, ProrityDescription) + '%'
				)
	END
END
GO

CREATE PROCEDURE [dbo].ALLGetActivityPriorityList (
	@InActive BIT = 0
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@Search AS NVARCHAR(Max) = ''
	)
AS
BEGIN
	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)

	IF (@InActive = 0)
	BEGIN
		SELECT ProrityType AS PriorityType
			,ProrityDescription AS PriorityDescription
			,IsInactive AS IsInactive
			,CreatedUser AS CreatedUser
			,UpdatedUser AS UpdatedUser
			,CreatedDate AS CreatedDate
			,UpdatedDate AS UpdatedDate
			,ProrityGroup AS PriorityGroup
		FROM tblCRMActivityPrority
		WHERE IsInactive = 0
			AND (
				ISNULL(ProrityType, '') LIKE '%' + ISNULL(@search, ProrityType) + '%'
				OR ISNULL(ProrityDescription, '') LIKE '%' + ISNULL(@search, ProrityDescription) + '%'
				)
		ORDER BY ProrityType OFFSET(@Skip) ROWS

		FETCH NEXT (@PageSize) ROWS ONLY
	END
	ELSE
	BEGIN
		SELECT ProrityType AS PriorityType
			,ProrityDescription AS PriorityDescription
			,IsInactive AS IsInactive
			,CreatedUser AS CreatedUser
			,UpdatedUser AS UpdatedUser
			,CreatedDate AS CreatedDate
			,UpdatedDate AS UpdatedDate
			,ProrityGroup AS PriorityGroup
		FROM tblCRMActivityPrority
		WHERE (
				ISNULL(ProrityType, '') LIKE '%' + ISNULL(@search, ProrityType) + '%'
				OR ISNULL(ProrityDescription, '') LIKE '%' + ISNULL(@search, ProrityDescription) + '%'
				)
		ORDER BY ProrityType OFFSET(@Skip) ROWS

		FETCH NEXT (@PageSize) ROWS ONLY
	END
END
GO

CREATE PROCEDURE [dbo].[GetUOMListByPaging] @PartNumber NVARCHAR(Max)
	,@FromUnit NVARCHAR(Max)
	,@PageSize INT = 25
	,@PageIndex INT = 1
	,@SearchText NVARCHAR(max) = NULL
AS
BEGIN
	SELECT strFromUnit AS FromUnit
		,strConversionType AS ConversionType
		,decConversionFactor AS ConversionFactor
		,strToUnit AS ToUnit
		,strUseFor AS UseFor
		,bitDefaultUOM AS DefaultUOM
	FROM tblInvUOMs
	WHERE strPartNumber = @PartNumber
		AND (
			@SearchText IS NULL
			OR (strFromUnit LIKE '%' + @SearchText + '%')
			) --and strFromUnit = @FromUnit
	ORDER BY strConversionType OFFSET(@PageIndex - 1) * @PageSize ROWS

	FETCH NEXT @PageSize ROWS ONLY;
END
GO

CREATE PROCEDURE [dbo].[DeleteAllUserSession] 
AS
BEGIN
	DELETE FROM tblUserSession
END
GO


CREATE PROCEDURE [dbo].[UpdateReceiptsIsPrintedFlag]
	@PayID as decimal
AS
BEGIN
	UPDATE tblCustPay SET bitPrinted = 1 WHERE lngCustPayID = @PayID
END
GO

CREATE PROCEDURE [dbo].[GetPrintDetailforReceipt]
@SQPayIDLoaded AS bigint
AS
BEGIN
	
	SELECT bitPrinted FROM tblCustPay WHERE lngCustPayID = @SQPayIDLoaded
END
GO

CREATE PROCEDURE [dbo].[Add2ShipShipmentTransactions] (
	@DocumentNumber NVARCHAR(MAX)
	,@OrderNumber NVARCHAR(MAX)
	,@RequestData NVARCHAR(MAX)
	,@ResponseData NVARCHAR(MAX)
	,@ResponseDateTime DATETIME
	,@IPAddress NVARCHAR(MAX)
	)
AS
BEGIN
	INSERT INTO [dbo].[tbl2ShipShipmentTransactions] (
		[strOrderNumber]
		,[strRequestData]
		,[strResponseData]
		,[strResponseDateTime]
		,[strTwoShipURL]
		,[dteRowUpdated]
		,[strDocumentNumber]
		)
	VALUES (
		@OrderNumber
		,@RequestData
		,@ResponseData
		,@ResponseDateTime
		,@IPAddress
		,GETDATE()
		,@DocumentNumber
		)
END
GO

CREATE PROCEDURE [dbo].[GetShipmentDocumentNumberByOrderNumber] @DocumentNumber NVARCHAR(200)
AS
BEGIN
	SELECT strOrderNumber
	FROM [tbl2ShipShipmentTransactions]
	WHERE strDocumentNumber = @DocumentNumber
END
GO

CREATE PROCEDURE [dbo].[GetShipmentURLByDocNumber] @DocNumber NVARCHAR(200)
AS
BEGIN
	SELECT strTwoShipURL
	FROM tbl2ShipShipmentTransactions
	WHERE strDocumentNumber = @DocNumber
END
GO

CREATE PROCEDURE [dbo].[DeleteShipmentDocument] @DocumentNumber NVARCHAR(50)
AS
BEGIN
	DELETE
	FROM tbl2ShipShipmentTransactions
	WHERE strDocumentNumber = @DocumentNumber
END
GO

CREATE PROCEDURE GetApproveNonBudgetItemsUsedQty (
	@StartDate DATETIME
	,@EndDate DATETIME
	,@EmpNumber NVARCHAR(100)
	,@Part NVARCHAR(100)
	)
AS
BEGIN
	SELECT ISNULL(CASE ISNULL(tblEmpItemBudgetDT.intBudgetFrequency, 5)
				WHEN 5
					THEN 0
				ELSE SUM(decQty)
				END, 0) AS decUsedQty
	FROM tblInvIssReqDocDT
	INNER JOIN tblInvIssReqDoc ON tblInvIssReqDoc.strInvIssReqDocID = tblInvIssReqDocDT.strInvIssReqDocID
	INNER JOIN tblEmpItemBudgetDT ON tblEmpItemBudgetDT.strEmpNumber = tblInvIssReqDoc.strEmpNumber
		AND tblEmpItemBudgetDT.strPartNumber = tblInvIssReqDocDT.strPartNumber
	WHERE tblInvIssReqDoc.strEmpNumber = @EmpNumber
		AND tblInvIssReqDocDT.strPartNumber = @Part
		AND dteJournalDate BETWEEN @StartDate
			AND @EndDate
	GROUP BY tblInvIssReqDocDT.strPartNumber
		,tblEmpItemBudgetDT.intBudgetFrequency
END
GO

CREATE PROCEDURE GetDimensionProfileFromItems @PartNumber AS NVARCHAR(max)
AS
BEGIN
	SELECT strDimProCode
	FROM tblInv
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[GetDrawerGroup] @DrawerGroup AS NVARCHAR(50)
AS
BEGIN
	SELECT tblPOSDrsGroup.strDrawerGroup AS DrawerGroup
		,strDesc AS [Description]
		,bitInactive AS Inactive
	FROM tblPOSDrsGroup
	WHERE strDrawerGroup = @DrawerGroup
END
GO

CREATE PROCEDURE [dbo].[GetEFRISRegisterUgandaSettings]
AS
BEGIN
	SELECT TOP 1 
	intID as id
	,strIPAddress as IPAddress 
	,strTIN as TIN 
	,strLegalName as LegalName 
	,strEmail as EmailAddress 
	,strMobileNo as MobilePhone
	,strLinePhone as LinePhone 
	,strBranchID as BranchID 
	,strBusinessName as BusinessName 
	,strAddress as [Address] 
	,strDeviceNo as DeviceNo 
	,strPlaceOfBusiness as PlaceOfBusiness 
	,intInvoiceKind as InvoiceKind
	,strInterfaceCode as InterfaceCode
	,lngInvoiceRowAllowed as InvoiceRowAllowed 
    ,dteRowUpdated AS RowUpdated
	FROM [dbo].[tblEFRISRegisterConfigUganda] (nolock)
END
GO

CREATE PROCEDURE [dbo].[AddUpdateEFRISRegisterConfigUganda] 
(
	@IPAddress nvarchar(200),
	@TIN nvarchar(50),
	@LegalName nvarchar(200),
	@Email nvarchar(70),
	@MobileNo nvarchar(20),
	@LinePhone nvarchar(20),
	@BranchID nvarchar(30),
	@BusinessName nvarchar(100),
	@Address nvarchar(200),
	@DeviceNo nvarchar(70),
	@PlaceOfBusiness nvarchar(100),
	@InvoiceKind as int,
	@InterfaceCode as nvarchar(70),
	@InvoiceRowAllowed bigint,
	@ID int
)
AS
BEGIN
	IF @ID > 0
	BEGIN
		UPDATE [dbo].[tblEFRISRegisterConfigUganda]
		SET 
			 [strIPAddress] = @IPAddress
			,[strTIN] = @TIN
			,[strLegalName] = @LegalName
			,[strEmail] = @Email
			,[strMobileNo] = @MobileNo
			,[strLinePhone] = @LinePhone
			,[strBranchID] = @BranchID
			,[strBusinessName] = @BusinessName
			,[strAddress] = @Address
			,[strDeviceNo] = @DeviceNo
			,[strPlaceOfBusiness] = @PlaceOfBusiness
			,[intInvoiceKind] = @InvoiceKind
			,[strInterfaceCode] = @InterfaceCode
			,[lngInvoiceRowAllowed] = @InvoiceRowAllowed 
			,[dteRowUpdated] = GETDATE()
		WHERE intID = @ID
	END
	ELSE
	BEGIN
		INSERT INTO [dbo].[tblEFRISRegisterConfigUganda] (
			[strIPAddress]
			,[strTIN]
			,[strLegalName]
			,[strEmail]
			,[strMobileNo]
			,[strLinePhone]
			,[strBranchID]
			,[strBusinessName]
			,[strAddress]
			,[strDeviceNo]
			,[strPlaceOfBusiness]
			,[intInvoiceKind]
			,[strInterfaceCode]
			,[lngInvoiceRowAllowed]
			,[dteRowUpdated]
			)
		VALUES (
			@IPAddress
			,@TIN
			,@LegalName
			,@Email
			,@MobileNo
			,@LinePhone
			,@BranchID
			,@BusinessName
			,@Address
			,@DeviceNo
			,@PlaceOfBusiness
			,@InvoiceKind
			,@InterfaceCode
			,@InvoiceRowAllowed 
			,GETDATE()
			)
	END
END
GO

CREATE PROCEDURE [dbo].[InsertEFDInvoiceDocUgandaData] 
(  
 @InvDocID NVARCHAR(100),  
 @TransactionType INT,  
 @RequestData NVARCHAR(max),  
 @ResponseData NVARCHAR(max),  
 @QRCode NVARCHAR(max),  
 @InvoiceNo NVARCHAR(400),  
 @AntifakeCode NVARCHAR(max),  
 @InvoiceId NVARCHAR(100),  
 @RowUpdated DATETIME,  
 @PalladiumTransactionType INT,  
 @CRNumber NVARCHAR(100),  
 @CNNumber NVARCHAR(100),  
 @CRReferenceNo NVARCHAR(max),  
 @CRInvoiceNo NVARCHAR(max),  
 @IsCRApproved BIT,
 @Request NVARCHAR(max)
)  
AS  
BEGIN  
 INSERT INTO [dbo].[tblEFDInvoiceDocUganda] (  
  [strInvDocID]  
  ,[intTransactionType]  
  ,[strRequestData]  
  ,[strResponseData]  
  ,[strQRcode]  
  ,[strInvoiceNum]  
  ,[strAntifakeCode]  
  ,[strInvoiceId]  
  ,[dteRowUpdated]  
  ,[intPalladiumTransactionType]   
  ,[strCRNumber]  
  ,[strCNNumber]   
  ,[strCRReferenceNo]  
  ,[strCRInvoiceNo]  
  ,[bitIsCRApproved]  
  ,[strRequest]
  )                 
 VALUES (  
   @InvDocID  
  ,@TransactionType  
  ,@RequestData  
  ,@ResponseData  
  ,@QRCode  
  ,@InvoiceNo  
  ,@AntifakeCode  
  ,@InvoiceId  
  ,@RowUpdated  
  ,@PalladiumTransactionType  
  ,@CRNumber  
  ,@CNNumber  
  ,@CRReferenceNo  
  ,@CRInvoiceNo  
  ,@IsCRApproved  
  ,@Request
  )  
END  
GO

CREATE PROCEDURE [dbo].[GetRecallInvoiceDetails] 
@InvDocID NVARCHAR(200)
AS
BEGIN
	SELECT strInvoiceNum AS [InvoiceNo]
		,strInvoiceId AS [InvoiceId]
	FROM tblEFDInvoiceDocUganda
	WHERE strInvoiceNum = @InvDocID
END
GO

CREATE PROCEDURE [dbo].[GetSalesInvoiceDocDTData] @DocumentNumber NVARCHAR(200)    
AS    
BEGIN    
    SELECT     
        tblInvoiceDocDT.strPartNumber as PartNumber,    
        tblInvoiceDocDT.strPartDesc as PartDesc,    
        tblInvoiceDocDT.decQty as Qty,    
        tblInvoiceDocDT.strUnit as Unit,    
        tblInvoiceDocDT.decPriceEaInc as PriceEaInc,    
        tblInvoiceDocDT.decLineTotInc as LineTotInc,    
        tblInvoiceDocDT.decPriceEaExc as PriceEaExc,    
        tblInvoiceDocDT.decLineTotExc as LineTotExc,    
        tblInvoiceDocDT.decLineTaxAmt as LineTaxAmt,    
        tblInvoiceDocDT.strInvField3 as InvField3,    
        tblInvoiceDocDT.strInvField6 as InvField6,    
        tblInvoiceDocDT.strTaxCode as TaxCode,    
  (select sum(decRate) / 100 from tblTaxCodeExt where tblTaxCodeExt.strTaxCode = tblInvoiceDocDT.strTaxCode) as TaxRate,    
        tblInvoiceDocDT.decLineDiscAmt as LineDiscAmt,    
        tblInvoiceDocDT.intLineNo as [LineNo],    
  tblInv.strURACode as URACategoryCode,  
  tblInvoiceDocDT.decLineDiscPerc as LineDiscPerc  
        FROM tblInvoiceDocDT WITH (NOLOCK)    
  Inner join tblInv WITH (NOLOCK)    
  On tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber    
  WHERE tblInvoiceDocDT.strInvDocID = @DocumentNumber   
  and tblInvoiceDocDT.strPartDesc <> 'Sales Discounts'
  ORDER BY [tblInvoiceDocDT].intLineNo    
END    
GO

CREATE PROCEDURE [dbo].[GetCreditRequestDocData] @DocumentNumber NVARCHAR(200)    
AS    
BEGIN    
    SELECT     
        tblOrderDocDT.strPartNumber as PartNumber,    
        tblOrderDocDT.strPartDesc as PartDesc,    
        tblOrderDocDT.decQty as Qty,    
        tblOrderDocDT.strUnit as Unit,    
        tblOrderDocDT.decPriceEaInc as PriceEaInc,    
        tblOrderDocDT.decLineTotInc as LineTotInc,    
        tblOrderDocDT.decPriceEaExc as PriceEaExc,    
        tblOrderDocDT.decLineTotExc as LineTotExc,    
        tblOrderDocDT.decLineTaxAmt as LineTaxAmt,    
        tblOrderDocDT.strInvField3 as InvField3,    
        tblOrderDocDT.strInvField6 as InvField6,    
        tblOrderDocDT.strTaxCode as TaxCode,    
  tblOrderDocDT.decLineDiscPerc as LineDiscPerc,  
  (select sum(decRate) / 100 from tblTaxCodeExt where tblTaxCodeExt.strTaxCode = tblOrderDocDT.strTaxCode) as TaxRate,    
        tblOrderDocDT.decLineDiscAmt as LineDiscAmt,    
        tblOrderDocDT.intLineNo as [LineNo],    
  tblInv.strURACode as URACategoryCode    
        FROM tblOrderDocDT WITH (NOLOCK)     
  Inner join tblInv WITH (NOLOCK)    
  On tblOrderDocDT.strPartNumber = tblInv.strPartNumber    
    WHERE tblOrderDocDT.strOrdDocID = @DocumentNumber  and tblOrderDocDT.strPartDesc <> 'Sales Discounts' 
    ORDER BY tblOrderDocDT.intLineNo    
END  
GO

CREATE PROCEDURE [dbo].[GetEFDInvoiceDocUganda] @InvDocID NVARCHAR(200)
AS
BEGIN
	select   
	[strInvDocID] as InvDocID  
	,[strRequest] as Request
  FROM [tblEFDInvoiceDocUganda]
  WHERE strInvDocID = @InvDocID 
  AND  intTransactionType = 0
END
GO

CREATE PROCEDURE [dbo].[GetCustomerInvoiceDetails] 
@InvDocID NVARCHAR(200)
,@IsCreditInquiry bit = 0
AS
BEGIN
	If(@IsCreditInquiry=0)
	BEGIN
		SELECT 
				[tblInvoiceDoc].strUserName as UserName,
				[tblCustomers].strCustName as CustomerNumber, 
				[tblCustomers].strVAT AS CustomerVATNo, 
				[tblCustomers].strCustDesc AS CustomerName ,
				[tblCustomers].strCK AS RefrenceOrNIN,
				[tblInvoiceDoc].[dtesystemdatetime] as SystemDatetime,
				(select TOP 1 a.strInvoiceNum from tblEFDInvoiceDocUganda a WITH (NOLOCK)  where a.strInvDocID = @InvDocID) AS CreditRequestRecallId,
				'' AS CRReferenceNo,
				'' AS CRInvoiceNo,
				'' AS CRDocNo,				
				Cast(0 as bit) AS IsCRApproved,
				[tblInvoiceDoc].strInvDocID AS INDocNo
		FROM [dbo].[tblInvoiceDoc] WITH (NOLOCK) 
		INNER JOIN [tblCustomers] WITH (NOLOCK) ON [tblInvoiceDoc].strCustName = [tblCustomers].strCustName
		WHERE strInvDocID = @InvDocID
	END
	ELSE
	BEGIN
		SELECT 
				[tblOrderDoc].strUserName as UserName,
				[tblCustomers].strCustName as CustomerNumber, 
				[tblCustomers].strVAT AS CustomerVATNo, 
				[tblCustomers].strCustDesc AS CustomerName ,
				[tblCustomers].strCK AS RefrenceOrNIN,
				[tblOrderDoc].[dteSystemDate] AS SystemDatetime,
				ISNULL((select TOP 1 a.strInvoiceNum from tblEFDInvoiceDocUganda a WITH (NOLOCK)  where a.strCRNumber = @InvDocID and a.intTransactionType = 2),'') AS CreditRequestRecallId,
				ISNULL((select TOP 1 a.strCRReferenceNo from tblEFDInvoiceDocUganda a WITH (NOLOCK)  where a.strCRNumber = @InvDocID and a.intTransactionType = 2),'') AS CRReferenceNo,
				ISNULL((select TOP 1 a.strCRInvoiceNo from tblEFDInvoiceDocUganda a WITH (NOLOCK)  where a.strCRNumber = @InvDocID and a.intTransactionType = 3 and a.bitIsCRApproved = 1),'') AS CRInvoiceNo,
				ISNULL((select TOP 1 a.strCRNumber from tblEFDInvoiceDocUganda a WITH (NOLOCK)  where a.strCRNumber = @InvDocID and a.intTransactionType = 3 and a.bitIsCRApproved = 1),'') AS CRDocNo,
				ISNULL((select TOP 1 a.bitIsCRApproved from tblEFDInvoiceDocUganda a WITH (NOLOCK)  where a.strCRNumber = @InvDocID and a.intTransactionType = 3 and a.bitIsCRApproved = 1),0) AS IsCRApproved,
				ISNULL((select TOP 1 a.strInvDocID from tblEFDInvoiceDocUganda a WITH (NOLOCK)  where a.strCRNumber = @InvDocID and a.intTransactionType = 2),'') AS INDocNo
		FROM [dbo].tblOrderDoc WITH (NOLOCK) 
		INNER JOIN [tblCustomers] WITH (NOLOCK) ON [tblOrderDoc].strCustName = [tblCustomers].strCustName
		WHERE strOrdDocID = @InvDocID
	END
END
GO

CREATE PROCEDURE GetEFDUgandaSigninvoiceResponseDetailsForAR
(
 @DocNumber AS NVARCHAR(Max)
)
AS
BEGIN

Declare @TransactionType int = Case WHEN @DocNumber Like 'CN-%' Then 4 ELSE 0 END

	IF (@TransactionType = 0)
	BEGIN
		SELECT intID
			,strInvDocID
			,intTransactionType
			,strQRcode AS strQRcodePlan
			,strInvoiceNum
			,strAntifakeCode
			,strInvoiceId
			,dteRowUpdated
			,intPalladiumTransactionType
			,strCRNumber
			,strInvDocID AS strCNPalladiumInvoiceNo
			,strCRReferenceNo
			,strCRInvoiceNo
			,bitIsCRApproved
		FROM tblEFDInvoiceDocUganda
		WHERE strInvDocID = @DocNumber
			--AND intPalladiumTransactionType = 0
	END
	ELSE
	BEGIN
		SELECT intID
			,strCNNumber AS strInvDocID
			,intTransactionType
			,strQRcode AS strQRcodePlan
			,strInvoiceNum
			,strAntifakeCode
			,strInvoiceId
			,dteRowUpdated
			,intPalladiumTransactionType
			,strCRNumber
			,strInvDocID AS strCNPalladiumInvoiceNo
			,strCRReferenceNo
			,strCRInvoiceNo
			,bitIsCRApproved
		FROM tblEFDInvoiceDocUganda
		WHERE strCNNumber = @DocNumber
		AND intPalladiumTransactionType = 4
	END
END
GO

CREATE PROCEDURE [dbo].[GetTaxCodeIncludedFlag]
AS
BEGIN
SELECT strTaxCode as TaxCode, bitIncluded as IsIncluded FROM tblTaxCodeExt
END
GO

/****** Object:  StoredProcedure [dbo].[GetReconPriorCYLY]    Script Date: 2024-08-01 10:58:00 ******/
CREATE PROCEDURE [dbo].[GetReconPriorCYLY]
(
	@GLNumber nvarchar(30) = ''
)
AS
BEGIN

	CREATE TABLE #Temp_FY (
	[uidYearID] [uniqueidentifier] NOT NULL,
	[intFiscalYr] [int] NOT NULL,
	[dteYearStart] [datetime] NOT NULL,
	[dteYearEnd] [datetime] NOT NULL,
	[lngID] [bigint] IDENTITY(1,1) NOT NULL)

	INSERT INTO #Temp_FY ([uidYearID], [intFiscalYr], [dteYearStart], [dteYearEnd])
	SELECT	uidYearID,
			intFiscalYr,
			dteYearStart,
			dteYearEnd
	FROM tblAcctHist 
	ORDER BY intFiscalYr

	CREATE TABLE #Temp_JNL (
	[strSource] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
	[dteJournalDate] [smalldatetime] NOT NULL,
	[strComment] [nvarchar](400) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
	[decDebits] [money] NOT NULL,
	[decCredits] [money] NOT NULL,
	[intModule] [tinyint] NOT NULL,
	[lngJourID] [bigint] NOT NULL,
	[decAmount] [money] NOT NULL,
	[decAmountF] [money] NOT NULL,
	[decDebitsF] [money] NOT NULL,
	[decCreditsF] [money] NOT NULL,
	[intLineNum] [int] NOT NULL,
	[lngID] [bigint] IDENTITY(1,1) NOT NULL)

	WHILE EXISTS (SELECT lngID FROM #Temp_FY)
	BEGIN

		DECLARE @ID bigint,
				@YearID uniqueidentifier,
				@FiscalYr int,
				@YearStart datetime,
				@YearEnd datetime

		SELECT	TOP 1
				@ID = lngID,
				@YearID = uidYearID,
				@FiscalYr = intFiscalYr,
				@YearStart = dteYearStart,
				@YearEnd = dteYearEnd 
		FROM #Temp_FY
		ORDER BY lngID

		INSERT INTO #Temp_JNL ([strSource], [dteJournalDate], [strComment], [decDebits], [decCredits], [intModule], [lngJourID], [decAmount],[decAmountF], 
							   [decDebitsF], [decCreditsF], [intLineNum])
		SELECT	tblJournalHist.strSource, tblJournalHist.dteJournalDate, tblJournalHist.strComment, tblJournalEntHist.decDebits, tblJournalEntHist.decCredits, 
				tblJournalHist.intModule, tblJournalHist.lngJourID, tblJournalEntHist.decAmount, tblJournalEntHist.decAmountF, tblJournalEntHist.decDebitsF, 
				tblJournalEntHist.decCreditsF, tblJournalEntHist.intLineNum 
		FROM tblJournalHist 
		INNER JOIN tblJournalEntHist ON tblJournalHist.uidYearID = tblJournalEntHist.uidYearID AND tblJournalHist.lngJourID = tblJournalEntHist.lngJourID 
		WHERE (tblJournalHist.uidYearID = @YearID)
		AND (tblJournalEntHist.intGLNumber = @GLNumber) 
		AND (tblJournalHist.lngJourID NOT IN (SELECT lngJourID 
											  FROM tblBankRecTrans 
											  WHERE (intGLNumber = @GLNumber) 
											  AND (dteJourDate BETWEEN @YearStart AND @YearEnd))) 

		DELETE FROM #Temp_FY WHERE lngID = @ID
	END

	INSERT INTO #Temp_JNL ([strSource], [dteJournalDate], [strComment], [decDebits], [decCredits], [intModule], [lngJourID], [decAmount],[decAmountF], 
						   [decDebitsF], [decCreditsF], [intLineNum])
	SELECT	tblJournalLY.strSource, tblJournalLY.dteJournalDate, tblJournalLY.strComment, tblJournalEntLY.decDebits, tblJournalEntLY.decCredits, 
			tblJournalLY.intModule, tblJournalLY.lngJourID, tblJournalEntLY.decAmount, tblJournalEntLY.decAmountF, tblJournalEntLY.decDebitsF, 
			tblJournalEntLY.decCreditsF, tblJournalEntLY.intLineNum 
	FROM tblJournalLY 
	INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID 
	WHERE (tblJournalEntLY.intGLNumber = @GLNumber) 
	AND (tblJournalLY.lngJourID NOT IN (SELECT lngJourID 
										FROM tblBankRecTrans 
										CROSS JOIN tblCompany 
										WHERE (intGLNumber = @GLNumber) 
										AND (dteJourDate BETWEEN dteLYStarted AND dteLYEnded))) 
	ORDER BY tblJournalLY.lngJourID,
			 tblJournalEntLY.intLineNum

	INSERT INTO #Temp_JNL ([strSource], [dteJournalDate], [strComment], [decDebits], [decCredits], [intModule], [lngJourID], [decAmount],[decAmountF], 
						   [decDebitsF], [decCreditsF], [intLineNum])
	SELECT	tblJournal.strSource, tblJournal.dteJournalDate, tblJournal.strComment, tblJournalEnt.decDebits, tblJournalEnt.decCredits, tblJournal.intModule, 
			tblJournal.lngJourID, tblJournalEnt.decAmount, tblJournalEnt.decAmountF, tblJournalEnt.decDebitsF, tblJournalEnt.decCreditsF, 
			tblJournalEnt.intLineNum 
	FROM tblJournal 
	INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID 
	WHERE (tblJournalEnt.intGLNumber = @GLNumber) 
	AND (tblJournal.lngJourID NOT IN (SELECT lngJourID 
									  FROM tblBankRecTrans 
									  CROSS JOIN tblCompany 
									  WHERE (intGLNumber = @GLNumber) 
									  AND (dteJourDate BETWEEN dteYearStarts AND dteYearEnds))) 
	ORDER BY tblJournal.lngJourID,
			 tblJournalEnt.intLineNum

	SELECT * FROM #Temp_JNL ORDER BY lngID 

	DROP TABLE #Temp_FY
	DROP TABLE #Temp_JNL

END
GO

CREATE PROCEDURE [dbo].[AddKenyaeTIMSItemCollectionDetails] (
	@strItemClsCd AS NVARCHAR(max)
	,@strItemClsNm AS NVARCHAR(max)
	,@intItemClsLvl AS INT
	)
AS
BEGIN
	INSERT INTO tblKenyaeTIMSItemClassifications (
		[strItemClsCd]
		,[strItemClsNm]
		,[intItemClsLvl]
		)
	VALUES (
		@strItemClsCd
		,@strItemClsNm
		,@intItemClsLvl
		)
END
GO

CREATE PROCEDURE [dbo].[GetItemCdBasedOnPartNumber] (@partNumber AS NVARCHAR(200))
AS
BEGIN
	SELECT strKenyaItemCode
	FROM tblInv
	WHERE strPartNumber = @partNumber
END
GO

CREATE PROCEDURE [dbo].[GetMaxItemCd]
AS
BEGIN
	SELECT MAX(strKenyaItemCodeCounter) AS strKenyaItemCodeCounter
	FROM tblInv
END
GO

CREATE PROCEDURE [dbo].[DeleteKenyaeTIMSItemCollectionDetails]
AS
BEGIN
	DELETE tblKenyaeTIMSItemClassifications
END
GO

CREATE PROCEDURE [dbo].[GetItemCLSCdCodeKenya] (@partNumber AS NVARCHAR(200))
AS
BEGIN  
 SELECT strItemClsCd 
 FROM tblKenyaeTIMSItemClassifications  
 WHERE strItemClsCd + '(' + strItemClsNm  + ')'   = (  
   SELECT strKenyaItemClassificationName  
   FROM tblInv  
   WHERE strPartNumber = @partNumber  
   )  
END  
GO

CREATE PROCEDURE [dbo].[GetTaxCodeByPartNumber] (@SQstrPartNumber AS NVARCHAR(200))
AS
BEGIN
	SELECT strkenyaitemtaxcode
	FROM tblInvItemTax
	WHERE strPartNumber = @SQstrPartNumber
END
GO

CREATE PROCEDURE [dbo].[GetItemTypeBasedOnPartNumber] (@partNumber AS NVARCHAR(200))
AS
BEGIN
	SELECT intType
	FROM tblInv
	WHERE strPartNumber = @partNumber
END
GO

CREATE PROCEDURE [dbo].[UpdateInventoryTableKenyaCode] (
	@itemCodeCounter AS NVARCHAR(200)
	,@itemKenyaCode AS NVARCHAR(200)
	,@partNumber AS NVARCHAR(200)
	)
AS
BEGIN
	UPDATE tblInv
	SET strKenyaItemCode = @itemKenyaCode
		,strKenyaItemCodeCounter = @itemCodeCounter
	WHERE strPartNumber = @partNumber
END
GO

/****** Object:  StoredProcedure [dbo].[GetAREnquiriesAgeAnalysis]    Script Date: 2024-08-07 15:08:00 ******/
CREATE PROCEDURE [dbo].[GetAREnquiriesAgeAnalysis]
	@SQCustName nvarchar(50) = NULL,
	@SQTransType tinyint = NULL,
	@SQYearEnds smalldatetime = NULL,
	@SQIncludePaidIn smalldatetime = NULL
AS

BEGIN

	CREATE TABLE #Temp_CustTrID_1 (
	[lngCustTrID] [bigint] NOT NULL)

	CREATE TABLE #Temp_CustTrID_2 (
	[lngCustTrID] [bigint] NOT NULL)

	INSERT INTO #Temp_CustTrID_1
	SELECT T2.lngCustTrID 
	FROM tblCustTrans T1 
	INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID 
	WHERE (T2.bitReversed = 0) 
	AND (T2.dteJournalDate <= @SQIncludePaidIn) 
	GROUP BY T2.lngCustTrID 
	HAVING SUM(T2.decAmount) = 0 
	AND SUM(T2.decAmountF) = 0

	INSERT INTO #Temp_CustTrID_2
	SELECT T2.lngCustTrID 
	FROM tblCustTrans T1 
	INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID 
	WHERE (T2.bitReversed = 0) 
	AND (T2.dteJournalDate <= @SQIncludePaidIn) 
	AND (T1.strOrdDocID IS NOT NULL) 
	AND (T1.strInvDocID IS NULL) 
	AND (T2.lngCustPayID IS NOT NULL) 
	GROUP BY T2.lngCustTrID 
	HAVING SUM(T2.decAmount) = 0 
	AND SUM(T2.decAmountF) = 0

	SELECT	ISNULL(T1.strInvDepNumber, '') AS strInvDepNumber, 
			CASE ISNULL(T3.strSource,'') WHEN '' THEN CASE WHEN T1.intTransType = @SQTransType THEN ISNULL(T1.strJEDocID, '') ELSE ISNULL(T1.strInvDocID, '') END ELSE T3.strSource END AS invoice, 
			T2.dteJournalDate AS DTTransDate, 
			T1.intTransType AS TransType, 
			T2.intTransType, 
			T2.decAmount, 
			T2.decAmountF, 
			T1.dteDueDate, 
			ISNULL(INV.strSalesName, '') AS strSalesName, 
			ISNULL(CAST(INV.intDept AS nvarchar), '') AS intDept 
	FROM tblCustTrans T1 
	INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID 
	LEFT JOIN tblCustPay T3 ON T2.lngCustPayID = T3.lngCustPayID 
	LEFT JOIN tblInvoiceDoc INV ON T1.strInvDocID = INV.strInvDocID 
	WHERE (T1.strCustName = @SQCustName) 
	AND (T2.bitReversed = 0) 
	AND (T1.strOrdDocID IS NULL OR (T1.strInvDocID IS NOT NULL AND T1.strOrdDocID IS NOT NULL)) 
	AND (T2.dteJournalDate <= @SQYearEnds) 
	AND (T2.lngCustTrID NOT IN (SELECT lngCustTrID FROM #Temp_CustTrID_1))
	UNION ALL
	SELECT	ISNULL(T1.strInvDepNumber, '') AS strInvDepNumber, 
			CASE ISNULL(T3.strSource,'') WHEN '' THEN CASE WHEN T1.intTransType = @SQTransType THEN ISNULL(T1.strJEDocID, '') ELSE ISNULL(T1.strOrdDocID, '') END ELSE T3.strSource END AS invoice, 
			T2.dteJournalDate AS DTTransDate, 
			T1.intTransType AS TransType, 
			T2.intTransType, 
			T2.decAmount, 
			T2.decAmountF, 
			T1.dteDueDate, 
			ISNULL(ORD.strSalesName, '') AS strSalesName, 
			ISNULL(CAST(ORD.intDept AS nvarchar), '') AS intDept 
	FROM tblCustTrans T1 
	INNER JOIN tblCustTransDT T2 ON T1.lngCustTrID = T2.lngCustTrID 
	LEFT JOIN tblCustPay T3 ON T2.lngCustPayID = T3.lngCustPayID 
	LEFT JOIN tblOrderDoc ORD ON T1.strOrdDocID = ORD.strOrdDocID 
	WHERE (T1.strCustName = @SQCustName) 
	AND (T2.bitReversed = 0) 
	AND (T1.strOrdDocID IS NOT NULL) 
	AND (T1.strInvDocID IS NULL) 
	AND (T2.lngCustPayID IS NOT NULL) 
	AND (T2.dteJournalDate <= @SQYearEnds) 
	AND (T2.lngCustTrID NOT IN (SELECT lngCustTrID FROM #Temp_CustTrID_2))
	ORDER BY T2.dteJournalDate, invoice

	DROP TABLE #Temp_CustTrID_1
	DROP TABLE #Temp_CustTrID_2

END
GO

CREATE PROCEDURE [dbo].[GetExplodeBOMData] (@SQPartNumber VARCHAR(100))
AS
BEGIN
	SELECT strPartNumber AS PartNumber
		,strDesc AS [Desc]
		,strLocation AS Location
		,dteRevDate AS RevDate
		,decQty AS Qty
	FROM tblManBOM
	WHERE strPartNumber = @SQPartNumber
END
GO

CREATE PROCEDURE [dbo].[GetParentJobID] @SQstrParentBOM AS VARCHAR(200)
AS
BEGIN
	SELECT strJBDocID AS JBDocID
		,strParentBOM AS ParentBOM
		,bitIsExploded AS IsExploded
		,intType AS [Type]
	FROM tblManJob
	WHERE strParentBOM = @SQstrParentBOM
END
GO

CREATE PROCEDURE [dbo].[GetManJobCloseID]
AS
BEGIN
	SELECT strJBDocID AS JBDocID
	FROM tblManJobClose
	WHERE intType = 1
END
GO

CREATE PROCEDURE [dbo].[GetExplodeBtnVisible] (@SQPartNumber VARCHAR(100))
AS
BEGIN
	SELECT tblManBOMCompInv.lngManBOMID AS ManBOMID
		,tblManBOMCompInv.strPartNumber AS PartNumber
	FROM tblManBOMCompInv
	INNER JOIN tblManBOM ON tblManBOMCompInv.lngManBOMID = tblmanbom.lngManBOMID
	WHERE tblManBOM.strPartNumber = @SQPartNumber
END
GO

CREATE PROCEDURE [dbo].[GetExcludeVisibleExplode] @SQstrParentBOM AS VARCHAR(200)
AS
BEGIN
	SELECT strJBDocID AS JBDocID
		,strParentBOM AS ParentBOM
		,bitIsExploded AS IsExploded
	FROM tblManJob
	WHERE strJBDocID = @SQstrParentBOM
END
GO

CREATE PROCEDURE [dbo].[GetExplodeBOMDataChild] (
@SQPartNumber varchar(100)
)
AS
BEGIN

SELECT strPartNumber AS PartNumber, 
strDesc	 AS [Desc], 
strLocation	 AS Location, 
dteRevDate AS RevDate, 
decQty 	 AS Qty
FROM tblManBOM 
WHERE strPartNumber = @SQPartNumber
END
GO

CREATE PROCEDURE [dbo].[GetSubAssemblyList] (  
@SQstrParentBOM nvarchar(50)
)
AS
BEGIN
SELECT   
tblManJob.strJBDocID as JBDocID,   
tblManJob.dteJournalDate as JournalDate,   
tblManJob.strCustName as CustomerNumber,   
tblManJob.strWCCode as WorkCenter,   
tblManJob.intType  as Type, 
tblManJob.strReference as Reference,
tblMAnJob.strParentBOM as ParentBOM
FROM tblManJob where strParentBOM = @SQstrParentBOM
ORDER BY tblManJob.strJBDocID
END
GO

CREATE PROCEDURE [dbo].[GetAvailQtyFromInvExt] 
@PartNumber AS NVARCHAR(50)
,@DefaultLocation AS NVARCHAR(50)
AS
BEGIN
SELECT decAvail
FROM tblInvExt
WHERE strPartNumber = @PartNumber
AND strLocName = @DefaultLocation
END
GO

CREATE PROCEDURE [dbo].[UpdateApproverStatusFromWPFSales]  
@DocNumber Varchar(20),   
@GroupId int,  
@UserName varchar(50),  
@Status int  
AS  
BEGIN  
SET NOCOUNT ON;  
update tblCNApprovalsUserTracking Set intApprovalStatus=@Status, rowUpdated =GETDATE() 
where strOrdDocID=@DocNumber And intApprovalStatus=0 And intGroupId=@GroupId And strUserName=@UserName
END  
Go

CREATE PROCEDURE [dbo].[GetCurrentUserPriorityForSales] 
(  
@DocNumber nvarchar(100)
)
AS
  BEGIN
     SELECT MIN(tblApprovalsDocLimit.priorityLevel) AS CurrentUserPriority ,tblCNApprovalsUserTracking.intGroupId AS GroupId
	  FROM tblCNApprovalsUserTracking 
	  INNER JOIN tblApprovalsDocLimit ON tblCNApprovalsUserTracking.intGroupId = tblApprovalsDocLimit.intApproverGroupId
	   AND tblApprovalsDocLimit.strUserName = tblCNApprovalsUserTracking.strUserName 
	  WHERE strOrdDocID = @DocNumber AND intApprovalStatus = 0 GROUP BY tblCNApprovalsUserTracking.intGroupId
END 
GO

CREATE PROCEDURE [dbo].[GetLastUserPriorityForSales](
@DocNumber NVARCHAR(100)
)
AS
  BEGIN
      SELECT MAX(priorityLevel) AS LastUserPriority FROM tblApprovalsDocLimit 
	  INNER JOIN tblOrdersDoc_CNApprovals ON tblApprovalsDocLimit.intApproverGroupId = tblOrdersDoc_CNApprovals.intGroupId 
	  INNER JOIN tblCNApprovalsUserTracking ON tblApprovalsDocLimit.strUserName = tblCNApprovalsUserTracking.strUserName 
	  WHERE tblOrdersDoc_CNApprovals.strOrdDocID = @DocNumber AND tblCNApprovalsUserTracking.intApprovalStatus = 0 AND tblCNApprovalsUserTracking.strOrdDocID = @DocNumber
END
Go

CREATE PROCEDURE [dbo].[GetApproverDocLimit]  
(  
@Username nvarchar(Max)
,@ApproverType nvarchar(Max)
)  
AS  
BEGIN
SELECT DocLimitIncl FROM tblApprovalsDocLimit(NOLOCK) 
WHERE strUserName = @Username and intApproverType = @ApproverType
END
Go

CREATE PROCEDURE DeclineTrackingDatarecordInventory
@DocID Varchar(100),   
@NewIRDocID varchar(10),
@dteDateofApproval varchar(50),  
@decDocTotalIncl decimal(10), 
@strDocCreatorUsername varchar(50), 
@strApproverUsername varchar(50), 
@dteDocCreationDate DateTime, 
@strDeclineReasonCodeText Nvarchar(MAX), 
@blnShowStatus bit
AS
BEGIN

UPDATE tblInvIntReqDoc SET bitCleared = 1 WHERE strInvIntReqDocID = @DocID

INSERT INTO tblIRApprovalTracking 
VALUES (@DocID, @NewIRDocID, @decDocTotalIncl, @strDocCreatorUsername, @strApproverUsername, @dteDocCreationDate, @dteDateofApproval, @strDeclineReasonCodeText, @blnShowStatus)
END
GO

CREATE PROCEDURE UpdateInvIntReqDoc
@DocId as nvarchar(100)
AS
BEGIN
UPDATE tblInvIntReqDoc SET bitCleared = 1 WHERE strInvIntReqDocID = @DocId
END
GO

CREATE PROCEDURE InsertIRApprovalTrackingDT
@ReqInvDocID as varchar(20),
@NewIRDocID as varchar(20),
@DocTotalIncl as decimal,
@DocCreatorUsername as varchar(50),
@ApproverUsername as varchar(50),
@DocCreationDate as date,
@DateofApproval as datetime,
@DeclineReasonCodeText as varchar(10),
@ShowStatus as bit

AS
BEGIN

INSERT INTO tblIRApprovalTracking VALUES
 (@ReqInvDocID, @NewIRDocID, @DocTotalIncl, @DocCreatorUsername, @ApproverUsername, @DocCreationDate, @DateofApproval, @DeclineReasonCodeText, @ShowStatus)

END
GO

CREATE PROCEDURE [dbo].[GetSumInvLotExt]
	(
	@IsLotControl BIT
	,@PartNumber NVARCHAR(200)
	,@LocName NVARCHAR(200)
	,@BinId BIGINT
	)
AS
BEGIN
if(@IsLotControl =1)
BEGIN
Select ISNULL(SUM(decQty),0) from tblInvLotExt Where strPartNumber=@PartNumber and strLocName = @LocName and lngBinID = @BinId
END
Else
BEGIN
Select ISNULL(SUM(decQty),0) from tblInvSerialExt Where strPartNumber=@PartNumber and strLocName = @LocName and lngBinID = @BinId
END
END
GO

CREATE PROCEDURE GetVendorECommDetails @vendName VARCHAR(50) 
AS
BEGIN
SELECT
	strVendName as VendName,
	intERPSystem as ERPSystem,
	strURL as URL,
	strERPAccountNo AS ERPAccountNo,
	strERPPassword AS ERPPassword,
	strCustName AS CustName,
	strCustPassword AS CustPassword,
	bitSyncInventory AS IsSyncInv,
	bitSyncInvBOM as IsSyncInvBOM ,
	bitSyncInvPrice as IsSyncInvPrice,
	bitSyncCustomers AS IsSyncCust,
	bitSyncPO as IsSyncPO ,
	bitSyncAR as IsSyncAR ,
	bitEnablePOeSubmit AS EnablePOeSubmit,
	bitEnableDSeSubmit AS EnableDSeSubmit,
	bitEnableGRVeSubmit AS EnableGRVeSubmit,
	bitEnablePReSubmit AS EnablePReSubmit,
	strCompanyName AS CompanyName
FROM tblVendECom
WHERE strVendName = @vendName
END
GO

CREATE PROCEDURE [dbo].[GetInvSerialTypeForVendor]
as
BEGIN 
SELECT TOP 1 strInvSerialType FROM tblInvSerialTypes WHERE bitMethod = 1
END
GO

CREATE PROCEDURE [dbo].[GetVendCount]
as
BEGIN 
SELECT COUNT(strVendName) FROM tblVendors
END
GO

CREATE PROCEDURE [dbo].[GetDate]
AS
BEGIN
	SET NOCOUNT ON;
	 SELECT GETDATE()
END
GO

CREATE PROCEDURE [dbo].[GetDatabaseName]
AS
BEGIN
	SET NOCOUNT ON;
	 SELECT sys.databases.name As DataBaseName from sys.databases
END
GO

CREATE PROCEDURE [dbo].[GetVersion]

@DBName AS Nvarchar(Max)

AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @sql VARCHAR(max) = ''
	SET @sql = '
SELECT intVersion as Versions
,intOrigVersion As OrigVersion
,intYear As Years
,strSoftVersion As SoftVersion
,intDBVersion As DBVersion
,uidDBGuid As uidDBGuid
,intRSTVersion As RSTVersion
,bitServerRunning As ServerRunning
, * FROM ' + @DBName + '.dbo.tblVersion '
EXEC(@sql)
END
GO

CREATE PROCEDURE [dbo].[RptMultiCompBalSheetCompanyResultSet]
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@DBName AS Nvarchar(Max),
@SQAsAt DATETime = NULL
AS
BEGIN
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @sql = 'SELECT intGLNumber, strDesc, intAccType, decOpenBalance + (SELECT ISNULL(SUM(tblJournalEnt.decAmount),0) FROM  ' + @DBName +'.dbo.tblJournalEnt INNER JOIN  ' + @DBName + '.dbo.tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblJournalEnt.intGLNumber = MASTERTABLE.intGLNumber)) As decAmount, intAccClass FROM  '+ @DBName +'.dbo.tblAccounts AS MASTERTABLE WHERE (intAccType < 4) AND (intGroupCode < 3) AND (bitLinkCEarnings = 0) '   	

END
ELSE IF @optPreviousYear_IsChecked = 1 
BEGIN
SET @sql = 'SELECT intGLNumber, strDesc, intAccType, decOpenBalance + (SELECT ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM ' + @DBName +'.dbo.tblJournalEntLY INNER JOIN ' +@DBName+ '.dbo.tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblJournalEntLY.intGLNumber = MASTERTABLE.intGLNumber)) As decAmount, intAccClass FROM '+ @DBName +'.dbo.tblAccountsLY AS MASTERTABLE WHERE (intAccType < 4) AND (intGroupCode < 3) AND (bitLinkCEarnings = 0) '   
END
EXEC(@sql)
END
GO

CREATE PROCEDURE [dbo].[RptMultiCompTrialBalSheetCompanyResultSet]
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@DBName AS Nvarchar(Max),
@SQAsAt DATETime = NULL
AS
BEGIN
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @sql = 'SELECT intGLNumber, strDesc, decOpenBalance + (SELECT ISNULL(SUM(tblJournalEnt.decAmount),0) FROM ' + @DBName +'.dbo.tblJournalEnt INNER JOIN ' + @DBName + '.dbo.tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblJournalEnt.intGLNumber = MASTERTABLE.intGLNumber)) As decAmount, intAccType FROM '+ @DBName +'.dbo.tblAccounts AS MASTERTABLE WHERE (intGroupCode < 3) AND bitLinkCEarnings = 0 '  
END
ELSE IF @optPreviousYear_IsChecked = 1 
BEGIN
SET @sql = 'SELECT intGLNumber, strDesc, decOpenBalance + (SELECT ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM ' + @DBName +'.dbo.tblJournalEntLY INNER JOIN ' +@DBName+ '.dbo.tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblJournalEntLY.intGLNumber = MASTERTABLE.intGLNumber)) As decAmount, intAccType FROM '+ @DBName +'.dbo.tblAccountsLY AS MASTERTABLE WHERE (intGroupCode < 3) AND bitLinkCEarnings = 0 '   
END
EXEC(@sql)
END
GO

CREATE PROCEDURE [dbo].[RptMultiCompIncomeStatementCompanyResultSet]
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@DBName AS Nvarchar(Max),
@SQStartDate DATETime = NULL,
@SQFinishDate DATETime = NULL
AS
BEGIN
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF @optCurrentYear_IsChecked = 1
BEGIN
SET @sql = 'SELECT intGLNumber, strDesc, intAccType, decOpenBalance, (SELECT ISNULL(SUM(tblJournalEnt.decAmount),0) FROM ' + @DBName +'.dbo.tblJournalEnt INNER JOIN ' + @DBName + '.dbo.tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID WHERE (tblJournal.dteJournalDate >= '''+CONVERT(VARCHAR(50),@SQStartDate)+''') AND (tblJournal.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQFinishDate)+''') AND (tblJournalEnt.intGLNumber = MASTERTABLE.intGLNumber)) As decAmount, intAccClass FROM '+ @DBName +'.dbo.tblAccounts AS MASTERTABLE WHERE (intAccType >= 4) AND (intGroupCode < 3) '  
END
ELSE IF @optPreviousYear_IsChecked = 1 
BEGIN
SET @sql = 'SELECT intGLNumber, strDesc, intAccType, decOpenBalance, (SELECT ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM ' + @DBName +'.dbo.tblJournalEntLY INNER JOIN ' +@DBName+ '.dbo.tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID WHERE (tblJournalLY.dteJournalDate >= '''+CONVERT(VARCHAR(50),@SQStartDate)+''') AND (tblJournalLY.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQFinishDate)+''') AND (tblJournalEntLY.intGLNumber = MASTERTABLE.intGLNumber)) As decAmount, intAccClass FROM '+ @DBName +'.dbo.tblAccountsLY AS MASTERTABLE WHERE (intAccType >= 4) AND (intGroupCode < 3) '   
END
EXEC(@sql)
END
GO

CREATE PROCEDURE [dbo].[rptAgedAnalysisLoad]
-- Add the parameters for the stored procedure here
@SQAsAt DateTime , 
@SQAsAt2 DateTime,
@DBName AS Nvarchar(Max)

AS
BEGIN


-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql VARCHAR(max) = ''
SET @sql = 'SELECT tblCustTrans.strCustName As CustName, tblCustTrans.dteJournalDate As JournalDate, tblCustTransDT.decAmount As decAmount FROM ' + @DBName + '.dbo.tblCustTrans INNER JOIN ' + @DBName + '.dbo.tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE  tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''' AND tblCustTransDT.lngCustTrID NOT IN (SELECT tblCustTransDT.lngCustTrID FROM ' + @DBName + '.dbo.tblCustTrans INNER JOIN ' + @DBName + '.dbo.tblCustTransDT ON tblCustTrans.lngCustTrID = tblCustTransDT.lngCustTrID WHERE tblCustTransDT.bitReversed = 0 AND tblCustTransDT.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt2)+''' GROUP BY tblCustTransDT.lngCustTrID HAVING SUM(tblCustTransDT.decAmount) = 0 AND SUM(tblCustTransDT.decAmountF) = 0) ORDER BY tblCustTrans.strCustName'

EXEC(@sql)
END
GO

CREATE PROCEDURE [dbo].[GetDataFromUtilitySetupConnection]
AS
BEGIN
	SELECT strName AS [Name]
		,strType AS [Type]
		,strUser AS [User]
		,strPassword AS Password
		,strCompany AS Company
		,strServerName AS ServerName
		,bitEvo AS Evo
		,intPort AS [Port]
	FROM tblUtilitySetupConnection
END
GO

CREATE PROCEDURE [dbo].[GetHistLineCntDataImportCompleted]
(  @intTotalTbl as int 
) as 

Declare @sql as nvarchar(Max) = ''''
BEGIN
if(@intTotalTbl = 0)
Set @sql ='SELECT COUNT(ISNULL(FinancialCategory,0)) FROM tblUtilityPervLedgerMaster'
else if(@intTotalTbl = 1)
Set @sql ='SELECT COUNT(ISNULL(FinCode,0)) AS UtilityPervCnt FROM tblUtilityPervFinancialCategories'
else if(@intTotalTbl = 2)
Set @sql ='SELECT COUNT(ISNULL(ID,'''')) AS UtilityPervCnt FROM tblUtilityPervTaxParameters'
else if(@intTotalTbl = 3)
Set @sql ='SELECT COUNT(ISNULL(TaxDesc01,'''')) AS UtilityPervCnt FROM tblUtilityPervTaxDescription'
else if(@intTotalTbl = 4)
Set @sql ='SELECT COUNT(ISNULL(Category,0)) AS UtilityPervCnt FROM tblUtilityPervCustomerMaster'
else if(@intTotalTbl = 5)
Set @sql ='SELECT COUNT(ISNULL(CCCode,0)) AS UtilityPervCnt FROM tblUtilityPervCustomerCategories'
else if(@intTotalTbl = 6)
Set @sql ='SELECT COUNT(ISNULL(CustomerCode,'''')) AS UtilityPervCnt FROM tblUtilityPervDeliveryAddresses'
else if(@intTotalTbl = 7)
Set @sql ='SELECT COUNT(ISNULL(Code,'''')) AS UtilityPervCnt FROM tblUtilityPervSalesmanMaster'
else if(@intTotalTbl = 8)
Set @sql ='SELECT COUNT(ISNULL(Category,0)) AS UtilityPervCnt FROM tblUtilityPervSupplierMaster'
else if(@intTotalTbl = 9)
Set @sql ='SELECT COUNT(ISNULL(SCCode,0)) AS UtilityPervCnt FROM tblUtilityPervSupplierCategories'
else if(@intTotalTbl = 10)
Set @sql ='SELECT COUNT(ISNULL(Category,'''')) AS UtilityPervCnt FROM tblUtilityPervInventory'
else if(@intTotalTbl = 11)
Set @sql ='SELECT COUNT(ISNULL(ICCode,'''')) AS UtilityPervCnt FROM tblUtilityPervInventoryCategory'
else if(@intTotalTbl = 12)
Set @sql ='SELECT COUNT(ISNULL(InvGroup,'''')) AS UtilityPervCnt FROM tblUtilityPervInventoryGroups'
else if(@intTotalTbl = 13)
Set @sql ='SELECT COUNT(ISNULL(StoreCode,'''')) AS UtilityPervCnt FROM tblUtilityPervMultiStore'
else if(@intTotalTbl = 14)
Set @sql ='SELECT COUNT(ISNULL(CurrCode,0)) AS UtilityPervCnt FROM tblUtilityPervCurrencyFile'
else if(@intTotalTbl = 15)
Set @sql ='SELECT COUNT(ISNULL(LastProfitLossAmt,0)) AS UtilityPervCnt FROM tblUtilityPervLedgerParameters'
else if(@intTotalTbl = 16)
Set @sql ='SELECT COUNT(ISNULL(StoreCode,'''')) AS UtilityPervCnt FROM tblUtilityPervMultiStoreTrn'
else if(@intTotalTbl = 17)
Set @sql ='SELECT COUNT(ISNULL(AccNumber,'''')) AS UtilityPervCnt FROM tblUtilityPervCashBookCurrency'
else if(@intTotalTbl = 18)
Set @sql ='SELECT COUNT(ISNULL(JobCode,'''')) AS UtilityPervCnt FROM tblUtilityPervCostCodes'
else if(@intTotalTbl = 19)
Set @sql ='SELECT COUNT(ISNULL(DocumentType,0)) AS UtilityPervCnt FROM tblUtilityPervHistoryHeader'
else if(@intTotalTbl = 20)
Set @sql ='SELECT COUNT(ISNULL(UserId,0)) AS UtilityPervCnt FROM tblUtilityPervHistoryLines'
else if(@intTotalTbl = 21)
Set @sql ='SELECT COUNT(ISNULL(GDC,'''')) AS UtilityPervCnt FROM tblUtilityPervLedgerTransactions'
else if(@intTotalTbl = 22)
Set @sql ='SELECT COUNT(ISNULL(DC,'''')) AS UtilityPervCnt FROM tblUtilityPervOpenItem'

    EXEC sp_executesql @sql;
End
GO

CREATE PROCEDURE [dbo].[GetCountUtilityPervOpenItemAndHistoryLineAndHistoryHeader]
(@Date as DateTime
,@IsOpenItem as bit = 0
,@IsHistoryHeader as bit = 0
,@IsHistoryLine as bit = 0
)
as
BEGIN
if(@IsHistoryHeader = 1)
   SELECT COUNT(DocumentType) FROM tblUtilityPervHistoryHeader WHERE DocumentDate < @Date
else if(@IsHistoryLine = 1)
   SELECT COUNT(UserId) FROM tblUtilityPervHistoryLines WHERE DDate < @Date
else if(@IsOpenItem=1)
   SELECT COUNT(DC) FROM tblUtilityPervOpenItem WHERE dDate < @Date
End
GO

CREATE PROCEDURE [dbo].[SaveWizardSetupConnection] (
	@Name NVARCHAR(MAX) = NULL
	,@Type NVARCHAR(MAX) = NULL
	,@Company NVARCHAR(MAX) = NULL
	,@ServerName NVARCHAR(MAX) = NULL
	,@Evo BIT
	,@User NVARCHAR(MAX) = ''
	,@Password NVARCHAR(MAX)= ''
	,@PortNumber INT
	)
AS
BEGIN
	BEGIN TRY
		BEGIN TRANSACTION;

		DELETE
		FROM tblUtilitySetupConnection;

		INSERT INTO tblUtilitySetupConnection (
			strName
			,strType
			,strUser
			,strPassword
			,strCompany
			,strServerName
			,bitEvo
			,intPort
			)
		VALUES (
			@Name
			,@Type
			,@User
			,@Password
			,@Company
			,@ServerName
			,@Evo
			,@PortNumber
			);

		COMMIT TRANSACTION;
	END TRY

	BEGIN CATCH
		IF @@TRANCOUNT > 0
			ROLLBACK TRANSACTION;

		THROW;
	END CATCH
END
GO

Create Procedure [dbo].[DeleteAllPastelDataOfDataImporterUtility]
as
Begin

DELETE FROM tblUtilityAccounts
DELETE FROM tblUtilityAccountSets
DELETE FROM tblUtilityAccountSetsUnassigned
DELETE FROM tblUtilityCurrency
DELETE FROM tblUtilityCustomerCat
DELETE FROM tblUtilityCustomerLoc
DELETE FROM tblUtilityCustomers
DELETE FROM tblUtilityInv
DELETE FROM tblUtilityInvCat
DELETE FROM tblUtilityInvLoc
DELETE FROM tblUtilityPervCurrencyFile
DELETE FROM tblUtilityPervCustomerCategories
DELETE FROM tblUtilityPervCustomerMaster
DELETE FROM tblUtilityPervDeliveryAddresses
DELETE FROM tblUtilityPervFinancialCategories
DELETE FROM tblUtilityPervHistoryHeader
DELETE FROM tblUtilityPervHistoryLines
DELETE FROM tblUtilityPervInventory
DELETE FROM tblUtilityPervInventoryCategory
DELETE FROM tblUtilityPervInventoryGroups
DELETE FROM tblUtilityPervLedgerMaster
DELETE FROM tblUtilityPervLedgerParameters
DELETE FROM tblUtilityPervLedgerTransactions
DELETE FROM tblUtilityPervMultiStore
DELETE FROM tblUtilityPervMultiStoreTrn
DELETE FROM tblUtilityPervOpenItem
DELETE FROM tblUtilityPervSalesmanMaster
DELETE FROM tblUtilityPervSupplierCategories
DELETE FROM tblUtilityPervSupplierMaster
DELETE FROM tblUtilityPervTaxDescription
DELETE FROM tblUtilityPervTaxParameters
DELETE FROM tblUtilitySalesPersons
DELETE FROM tblUtilitySetupConnection
DELETE FROM tblUtilityTaxCodeExt
DELETE FROM tblUtilityTaxCodesMap
DELETE FROM tblUtilityTaxDef
DELETE FROM tblUtilityTerms
DELETE FROM tblUtilityVendorCat
DELETE FROM tblUtilityVendors
DELETE FROM tblUtilityProjects
DELETE FROM tblUtilityPervCostCodes
end
GO

CREATE PROCEDURE [dbo].[GetCountUtilityAccounts]
As
BEGIN
SELECT COUNT(intGLNumber) FROM tblUtilityAccounts
END
Go

CREATE PROCEDURE [dbo].[DeleteAllDataUtilityTbl]
as
DELETE
FROM tblUtilityAccounts;

DELETE
FROM tblUtilityAccountSets;

DELETE
FROM tblUtilityAccountSetsUnassigned;

DELETE
FROM tblUtilityCurrency;

DELETE
FROM tblUtilityCustomerCat;

DELETE
FROM tblUtilityCustomerLoc;

DELETE
FROM tblUtilityCustomers;

DELETE
FROM tblUtilityInv;

DELETE
FROM tblUtilityInvCat;

DELETE
FROM tblUtilityInvLoc;

DELETE
FROM tblUtilitySalesPersons;

DELETE
FROM tblUtilityTaxCodeExt;

DELETE
FROM tblUtilityTaxCodesMap;

DELETE
FROM tblUtilityTaxDef;

DELETE
FROM tblUtilityTerms;

DELETE
FROM tblUtilityVendorCat;

DELETE
FROM tblUtilityVendors;

DELETE
FROM tblUtilityProjects
GO

CREATE PROCEDURE [dbo].[DeleteDataOfUtilityTable]
(@intChkNo as int = 0 )
as
BEGIN
if(@intChkNo =0) --IsLedgerMaster
   DELETE FROM tblUtilityPervLedgerMaster
else if(@intChkNo =1) --FinancialCategories
   DELETE FROM tblUtilityPervFinancialCategories
else if(@intChkNo =2)--TaxParameters
   DELETE FROM tblUtilityPervTaxParameters
else if(@intChkNo =3)--TaxDescription
   DELETE FROM tblUtilityPervTaxDescription
else if(@intChkNo =4)--CustomerMaster
   DELETE FROM tblUtilityPervCustomerMaster
else if(@intChkNo =5)--CustomerCategories
   DELETE FROM tblUtilityPervCustomerCategories
else if(@intChkNo =6)--DeliveryAddresses
   DELETE FROM tblUtilityPervDeliveryAddresses
else if(@intChkNo =7)--SalesmanMaster
   DELETE FROM tblUtilityPervSalesmanMaster
else if(@intChkNo =8)--SupplierMaster
   DELETE FROM tblUtilityPervSupplierMaster
else if(@intChkNo =9)--SupplierCategories
   DELETE FROM tblUtilityPervSupplierCategories
else if(@intChkNo =10)--Inventory
   DELETE FROM tblUtilityPervInventory
else if(@intChkNo =11)--InventoryCategory
   DELETE FROM tblUtilityPervInventoryCategory
else if(@intChkNo =12)--InventoryGroups
   DELETE FROM tblUtilityPervInventoryGroups
else if(@intChkNo =13)--MultiStore
   DELETE FROM tblUtilityPervMultiStore
else if(@intChkNo =14)--CurrencyFile
   DELETE FROM tblUtilityPervCurrencyFile
else if(@intChkNo =15)--LedgerParameters
   DELETE FROM tblUtilityPervLedgerParameters
else if(@intChkNo =16)--MultiStoreTrn
   DELETE FROM tblUtilityPervMultiStoreTrn
else if(@intChkNo =17)--CashBookCurrency
   DELETE FROM tblUtilityPervCashBookCurrency
else if(@intChkNo =18)--CostCodes
   DELETE FROM tblUtilityPervCostCodes
else if(@intChkNo =19)--HistoryHeader
   DELETE FROM tblUtilityPervHistoryHeader
else if(@intChkNo =20)--HistoryLines
   DELETE FROM tblUtilityPervHistoryLines
else if(@intChkNo =21)--LedgerTransactions
   DELETE FROM tblUtilityPervLedgerTransactions
else if(@intChkNo =22)--OpenItem
   DELETE FROM tblUtilityPervOpenItem
END
GO


CREATE PROCEDURE [dbo].[InsertDataOfUtilityTable]
(@intChkNo as int = 0
 ,@FinancialCategory as int = null
 ,@AccNumber as nvarchar(Max)= null
 ,@AccDesc as nvarchar(Max)= null
 ,@ReportWriterCategory as smallint = 0
 ,@LinkCode as nvarchar(Max) = ''
 ,@GAAPFinCat as nvarchar(Max) = ''
 ,@NumberSubAccs as smallint              = null
 ,@BalanceThis01 as money				  = null
 ,@BalanceThis02 as money				  = null
	,@BalanceThis03 as money			  = null
	,@BalanceThis04 as money			  = null
	,@BalanceThis05 as money			  = null
	,@BalanceThis06 as money			  = null
	,@BalanceThis07 as money			  = null
	,@BalanceThis08 as money			  = null
	,@BalanceThis09 as money			  = null
	,@BalanceThis10 as money			  = null
	,@BalanceThis11 as money			  = null
	,@BalanceThis12 as money			  = null
	,@BalanceLast01 as money			  = null
	,@BalanceLast02  as money			  = null
	,@BalanceLast03	 as money			  = null
	,@BalanceLast04	 as money			  = null
	,@BalanceLast05	 as money			  = null
	,@BalanceLast06	 as money			  = null
	,@BalanceLast07	 as money			  = null
	,@BalanceLast08	 as money			  = null
	,@BalanceLast09	 as money			  = null
	,@BalanceLast10	 as money			  = null
	,@BalanceLast11	 as money			  = null
	,@BalanceLast12	 as money			  = null
	,@FinCode as int					  = null
	,@FinDesc as nvarchar(Max)				  = null
	,@ID as nvarchar(Max)					  = null
	,@TaxControlAcc as nvarchar(Max)			  = null
	,@TaxProvisionAcc as nvarchar(Max)		  = null
	,@DefaultExclusive as bit			  = null
	,@TaxPercent01   as int				  = null
	,@TaxPercent02 	 as int				  = null
	,@TaxPercent03	 as int				  = null
	,@TaxPercent04	 as int				  = null
	,@TaxPercent05	 as int				  = null
	,@TaxPercent06	 as int				  = null
	,@TaxPercent07	 as int				  = null
	,@TaxPercent08	 as int				  = null
	,@TaxPercent09	 as int				  = null
	,@TaxPercent10	 as int				  = null
	,@TaxDesc01 as nvarchar(Max)				  = null
	,@TaxDesc02	as nvarchar(Max)				  = null
	,@TaxDesc03	as nvarchar(Max)				  = null
	,@TaxDesc04	as nvarchar(Max)				  = null
	,@TaxDesc05	as nvarchar(Max)				  = null
	,@TaxDesc06	as nvarchar(Max)				  = null
	,@TaxDesc07	as nvarchar(Max)				  = null
	,@TaxDesc08	as nvarchar(Max)				  = null
	,@TaxDesc09	as nvarchar(Max)				  = null
	,@TaxDesc10	as nvarchar(Max)				  = null
	,@Category as int					  = null
	,@CustomerCode as nvarchar(Max)			  = null
	,@CustomerDesc as nvarchar(Max)			  = null
	,@PostAddress01 as nvarchar(Max)			  = null
	,@PostAddress02 as nvarchar(Max)			  = null
	,@PostAddress03 as nvarchar(Max)			  = null
	,@PostAddress04 as nvarchar(Max)			  = null
	,@PostAddress05 as nvarchar(Max)			  = null
	,@TaxCode as smallint				  = null
	,@ExemptRef as nvarchar(Max)				  = null
	,@PaymentTerms as int				  = null
	,@LastCrDate as DateTime			  = null
	,@Blocked as int					  = null
	,@OpenItem as bit					  = null
	,@CurrencyCode as nvarchar(Max)			  = null
	,@CreditLimit as int				  = null
	,@CurrBalanceThis01  as money		  = null
	,@CurrBalanceThis02	  as money		  = null
	,@CurrBalanceThis03	  as money		  = null
	,@CurrBalanceThis04	  as money		  = null
	,@CurrBalanceThis05	  as money		  = null
	,@CurrBalanceThis06	  as money		  = null
	,@CurrBalanceThis07	  as money		  = null
	,@CurrBalanceThis08	  as money		  = null
	,@CurrBalanceThis09	  as money		  = null
	,@CurrBalanceThis10	  as money		  = null
	,@CurrBalanceThis11	  as money		  = null
	,@CurrBalanceThis12	  as money		  = null
	,@CurrBalanceLast01	  as money		  = null
	,@CurrBalanceLast02	  as money		  = null
	,@CurrBalanceLast03	  as money		  = null
	,@CurrBalanceLast04	  as money		  = null
	,@CurrBalanceLast05	  as money		  = null
	,@CurrBalanceLast06	  as money		  = null
	,@CurrBalanceLast07	  as money		  = null
	,@CurrBalanceLast08	  as money		  = null
	,@CurrBalanceLast09	  as money		  = null
	,@CurrBalanceLast10	  as money		  = null
	,@CurrBalanceLast11	  as money		  = null
	,@CurrBalanceLast12	  as money		  = null
	,@UserDefined01 as nvarchar(Max)			  = null
	,@UserDefined02 as nvarchar(Max)			  = null
	,@UserDefined03 as nvarchar(Max)			  = null
	,@UserDefined04 as nvarchar(Max)			  = null
	,@UserDefined05 as nvarchar(Max)			  = null
	,@UpdatedOn as nvarchar(Max)				  = null
	,@CreateDate as DateTime			  = null
	,@CCCode as int						  = null
	,@CCDesc as nvarchar(Max)				  = null
	,@SCCode   as int					  = null
	,@SCDesc   as nvarchar(Max)				  = null
	,@ICCode as nvarchar(Max)				  = null
	,@ICDesc as nvarchar(Max)				  = null
	,@JobCode as nvarchar(Max)				  = null
	,@JCDesc as nvarchar(Max)				  = null
	,@CustDelivCode as nvarchar(Max)			  = null
	,@SalesmanCode as nvarchar(Max)			  = null
	,@Contact as nvarchar(Max)				  = null
	,@Telephone as nvarchar(Max)				  = null
	,@Cell as nvarchar(Max)					  = null
	,@Fax as nvarchar(Max)					  = null
	,@DelAddress01 as nvarchar(Max)			  = null
	,@DelAddress02 as nvarchar(Max)			  = null
	,@DelAddress03 as nvarchar(Max)			  = null
	,@DelAddress04 as nvarchar(Max)			  = null
	,@DelAddress05 as nvarchar(Max)			  = null
	,@Email as nvarchar(Max)					  = null
	,@Code as nvarchar(Max)					  = null
	,@Description as nvarchar(Max)			  = null
	,@SupplCode as nvarchar(Max)				  = null
	,@SupplDesc as nvarchar(Max)				  = null
	,@Cellphone as nvarchar(Max)				  = null
	,@ItemCategory as nvarchar(Max)				  = null
	,@ItemCode as nvarchar(Max)				  = null
	,@Barcode as nvarchar(Max)				  = null
	,@Physical as tinyint				  = null
	,@UnitSize as nvarchar(Max)				  = null
	,@UserDefText01 as nvarchar(Max)			  = null
	,@UserDefText02 as nvarchar(Max)			  = null
	,@UserDefText03 as nvarchar(Max)			  = null
	,@UserDefNum01 as money				  = null
	,@UserDefNum02 as money				  = null
	,@UserDefNum03 as money				  = null
	,@InvGroup as nvarchar(Max)				  = null
	,@InvGroupDesc as nvarchar(Max)				  = null
	,@SalesAcc as nvarchar(Max)				  = null
	,@PurchAcc as nvarchar(Max)				  = null
	,@COSAcc as nvarchar(Max)				  = null
	,@Variance as nvarchar(Max)				  = null
	,@StoreCode as nvarchar(Max)				  = null
	,@CurrCode as int					  = null
	,@CurrDesc as nvarchar(Max)				  = null
	,@LastProfitLossAmt as money		  = null
	,@PerStartThis01 as Datetime		  = null
	,@PerStartLast01 as Datetime		  = null
	,@PerEndThis12 as Datetime			  = null
	,@PerEndLast12 as Datetime			  = null
	,@LastInvDate as Datetime			  = null
	,@LastPurchDate as DateTime			  = null
	,@OpeningQty as money				  = null
	,@CostThis12 as money				  = null
	,@QtyBuyThis01 as money				  = null
	,@QtyBuyThis02 as money				  = null
	,@QtyBuyThis03 as money				  = null
	,@QtyBuyThis04 as money				  = null
	,@QtyBuyThis05 as money				  = null
	,@QtyBuyThis06 as money				  = null
	,@QtyBuyThis07 as money				  = null
	,@QtyBuyThis08 as money				  = null
	,@QtyBuyThis09 as money				  = null
	,@QtyBuyThis10 as money				  = null
	,@QtyBuyThis11 as money				  = null
	,@QtyBuyThis12 as money				  = null
	,@QtyAdjustThis01 as money			  = null
	,@QtyAdjustThis02 as money			  = null
	,@QtyAdjustThis03 as money			  = null
	,@QtyAdjustThis04 as money			  = null
	,@QtyAdjustThis05 as money			  = null
	,@QtyAdjustThis06 as money			  = null
	,@QtyAdjustThis07 as money			  = null
	,@QtyAdjustThis08 as money			  = null
	,@QtyAdjustThis09 as money			  = null
	,@QtyAdjustThis10 as money			  = null
	,@QtyAdjustThis11 as money			  = null
	,@QtyAdjustThis12 as money			  = null
	,@QtySellThis01 as money			  = null
	,@QtySellThis02	as money			  = null
	,@QtySellThis03	as money			  = null
	,@QtySellThis04	as money			  = null
	,@QtySellThis05	as money			  = null
	,@QtySellThis06	as money			  = null
	,@QtySellThis07	as money			  = null
	,@QtySellThis08	as money			  = null
	,@QtySellThis09	as money			  = null
	,@QtySellThis10	as money			  = null
	,@QtySellThis11	as money			  = null
	,@QtySellThis12	as money			  = null
	,@QtyBuyLast as money				  = null
	,@QtyAdjustLast as money			  = null
	,@QtySellLast as money				  = null
	,@Balance01 as money				  = null
	,@Balance02 as money				  = null
	,@Balance03 as money				  = null
	,@Balance04 as money				  = null
	,@Balance05 as money				  = null
	,@Balance06 as money				  = null
	,@Balance07 as money				  = null
	,@Balance08 as money				  = null
	,@Balance09 as money				  = null
	,@Balance10 as money				  = null
	,@Balance11 as money				  = null
	,@Balance12 as money				  = null
	,@LastBalance01	as money			  = null
	,@LastBalance02	as money			  = null
	,@LastBalance03	as money			  = null
	,@LastBalance04	as money			  = null
	,@LastBalance05	as money			  = null
	,@LastBalance06	as money			  = null
	,@LastBalance07	as money			  = null
	,@LastBalance08	as money			  = null
	,@LastBalance09	as money			  = null
	,@LastBalance10	as money			  = null
	,@LastBalance11	as money			  = null
	,@LastBalance12	as money			  = null
 )
as
BEGIN
if(@intChkNo =0) --IsLedgerMaster
   INSERT INTO tblUtilityPervLedgerMaster (
	FinancialCategory
	,AccNumber
	,AccDesc
	,ReportWriterCategory
	,LinkCode
	,GAAPFinCat
	,NumberSubAccs
	,BalanceThis01
	,BalanceThis02
	,BalanceThis03
	,BalanceThis04
	,BalanceThis05
	,BalanceThis06
	,BalanceThis07
	,BalanceThis08
	,BalanceThis09
	,BalanceThis10
	,BalanceThis11
	,BalanceThis12
	,BalanceThis13
	,BalanceLast01
	,BalanceLast02
	,BalanceLast03
	,BalanceLast04
	,BalanceLast05
	,BalanceLast06
	,BalanceLast07
	,BalanceLast08
	,BalanceLast09
	,BalanceLast10
	,BalanceLast11
	,BalanceLast12
	,BalanceLast13
	,BudgetThis01
	,BudgetThis02
	,BudgetThis03
	,BudgetThis04
	,BudgetThis05
	,BudgetThis06
	,BudgetThis07
	,BudgetThis08
	,BudgetThis09
	,BudgetThis10
	,BudgetThis11
	,BudgetThis12
	,BudgetThis13
	,BudgetNext01
	,BudgetNext02
	,BudgetNext03
	,BudgetNext04
	,BudgetNext05
	,BudgetNext06
	,BudgetNext07
	,BudgetNext08
	,BudgetNext09
	,BudgetNext10
	,BudgetNext11
	,BudgetNext12
	,BudgetNext13
	,BudgetLast01
	,BudgetLast02
	,BudgetLast03
	,BudgetLast04
	,BudgetLast05
	,BudgetLast06
	,BudgetLast07
	,BudgetLast08
	,BudgetLast09
	,BudgetLast10
	,BudgetLast11
	,BudgetLast12
	,BudgetLast13
	,Blocked
	,TaxType
	,DefaultTax
	)
VALUES (
	@FinancialCategory
	,@AccNumber
	,@AccDesc
	,0
	,''
	,''
	,@NumberSubAccs
	,@BalanceThis01
	,@BalanceThis02
	,@BalanceThis03
	,@BalanceThis04
	,@BalanceThis05
	,@BalanceThis06
	,@BalanceThis07
	,@BalanceThis08
	,@BalanceThis09
	,@BalanceThis10
	,@BalanceThis11
	,@BalanceThis12
	,0
	,@BalanceLast01
	,@BalanceLast02
	,@BalanceLast03
	,@BalanceLast04
	,@BalanceLast05
	,@BalanceLast06
	,@BalanceLast07
	,@BalanceLast08
	,@BalanceLast09
	,@BalanceLast10
	,@BalanceLast11
	,@BalanceLast12
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,''
	,0
	,''
	)
else if(@intChkNo =1) --FinancialCategories
   INSERT INTO tblUtilityPervFinancialCategories (FinCode,FinDesc) VALUES (@FinCode,@FinDesc)
else if(@intChkNo =2)--TaxParameters
   INSERT INTO tblUtilityPervTaxParameters (
	ID
	,TaxControlAcc
	,TaxProvisionAcc
	,DefaultExclusive
	,TaxPercent01
	,TaxPercent02
	,TaxPercent03
	,TaxPercent04
	,TaxPercent05
	,TaxPercent06
	,TaxPercent07
	,TaxPercent08
	,TaxPercent09
	,TaxPercent10
	)
VALUES (
	 @ID
	,@TaxControlAcc
	,@TaxProvisionAcc
	,@DefaultExclusive
	,@TaxPercent01
	,@TaxPercent02
	,@TaxPercent03
	,@TaxPercent04
	,@TaxPercent05
	,@TaxPercent06
	,@TaxPercent07
	,@TaxPercent08
	,@TaxPercent09
	,@TaxPercent10
	)
else if(@intChkNo =3)--TaxDescription
   INSERT INTO tblUtilityPervTaxDescription (
	TaxDesc01
	,TaxDesc02
	,TaxDesc03
	,TaxDesc04
	,TaxDesc05
	,TaxDesc06
	,TaxDesc07
	,TaxDesc08
	,TaxDesc09
	,TaxDesc10
	)
VALUES (
	 @TaxDesc01
	,@TaxDesc02
	,@TaxDesc03
	,@TaxDesc04
	,@TaxDesc05
	,@TaxDesc06
	,@TaxDesc07
	,@TaxDesc08
	,@TaxDesc09
	,@TaxDesc10
	)
else if(@intChkNo =4)--CustomerMaster
   INSERT INTO tblUtilityPervCustomerMaster (
	Category
	,CustomerCode
	,CustomerDesc
	,BalanceThis01
	,BalanceThis02
	,BalanceThis03
	,BalanceThis04
	,BalanceThis05
	,BalanceThis06
	,BalanceThis07
	,BalanceThis08
	,BalanceThis09
	,BalanceThis10
	,BalanceThis11
	,BalanceThis12
	,BalanceThis13
	,BalanceLast01
	,BalanceLast02
	,BalanceLast03
	,BalanceLast04
	,BalanceLast05
	,BalanceLast06
	,BalanceLast07
	,BalanceLast08
	,BalanceLast09
	,BalanceLast10
	,BalanceLast11
	,BalanceLast12
	,BalanceLast13
	,SalesThis01
	,SalesThis02
	,SalesThis03
	,SalesThis04
	,SalesThis05
	,SalesThis06
	,SalesThis07
	,SalesThis08
	,SalesThis09
	,SalesThis10
	,SalesThis11
	,SalesThis12
	,SalesThis13
	,SalesLast01
	,SalesLast02
	,SalesLast03
	,SalesLast04
	,SalesLast05
	,SalesLast06
	,SalesLast07
	,SalesLast08
	,SalesLast09
	,SalesLast10
	,SalesLast11
	,SalesLast12
	,SalesLast13
	,PostAddress01
	,PostAddress02
	,PostAddress03
	,PostAddress04
	,PostAddress05
	,TaxCode
	,ExemptRef
	,SettlementTerms
	,PaymentTerms
	,Discount
	,LastCrDate
	,LastCrAmount
	,Blocked
	,OpenItem
	,OverRideTax
	,MonthOrDay
	,IncExc
	,CountryCode
	,CurrencyCode
	,CreditLimit
	,InterestAfter
	,PriceRegime
	,UseAgedMessages
	,CurrBalanceThis01
	,CurrBalanceThis02
	,CurrBalanceThis03
	,CurrBalanceThis04
	,CurrBalanceThis05
	,CurrBalanceThis06
	,CurrBalanceThis07
	,CurrBalanceThis08
	,CurrBalanceThis09
	,CurrBalanceThis10
	,CurrBalanceThis11
	,CurrBalanceThis12
	,CurrBalanceThis13
	,CurrBalanceLast01
	,CurrBalanceLast02
	,CurrBalanceLast03
	,CurrBalanceLast04
	,CurrBalanceLast05
	,CurrBalanceLast06
	,CurrBalanceLast07
	,CurrBalanceLast08
	,CurrBalanceLast09
	,CurrBalanceLast10
	,CurrBalanceLast11
	,CurrBalanceLast12
	,CurrBalanceLast13
	,UserDefined01
	,UserDefined02
	,UserDefined03
	,UserDefined04
	,UserDefined05
	,Ageing01
	,Ageing02
	,Ageing03
	,Ageing04
	,Ageing05
	,StatPrintorEmail
	,DocPrintorEmail
	,InterestPer
	,Freight01
	,Ship
	,LinkWeb
	,LoyaltyProg
	,LCardNumber
	,UpdatedOn
	,CashAccount
	,AcceptMail
	,CreateDate
	)
VALUES (
	 @Category
	,@CustomerCode
	,@CustomerDesc
	,@BalanceThis01
	,@BalanceThis02
	,@BalanceThis03
	,@BalanceThis04
	,@BalanceThis05
	,@BalanceThis06
	,@BalanceThis07
	,@BalanceThis08
	,@BalanceThis09
	,@BalanceThis10
	,@BalanceThis11
	,@BalanceThis12
	,0
	,@BalanceLast01
	,@BalanceLast02
	,@BalanceLast03
	,@BalanceLast04
	,@BalanceLast05
	,@BalanceLast06
	,@BalanceLast07
	,@BalanceLast08
	,@BalanceLast09
	,@BalanceLast10
	,@BalanceLast11
	,@BalanceLast12
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,@PostAddress01
	,@PostAddress02
	,@PostAddress03
	,@PostAddress04
	,@PostAddress05
	,@TaxCode
	,@ExemptRef
	,0
	,@PaymentTerms
	,0
	,@LastCrDate
	,0
	,@Blocked
	,@OpenItem
	,0
	,0
	,''
	,''
	,@CurrencyCode
	,@CreditLimit
	,0
	,0
	,0
	,@CurrBalanceThis01
	,@CurrBalanceThis02
	,@CurrBalanceThis03
	,@CurrBalanceThis04
	,@CurrBalanceThis05
	,@CurrBalanceThis06
	,@CurrBalanceThis07
	,@CurrBalanceThis08
	,@CurrBalanceThis09
	,@CurrBalanceThis10
	,@CurrBalanceThis11
	,@CurrBalanceThis12
	,0
	,@CurrBalanceLast01
	,@CurrBalanceLast02
	,@CurrBalanceLast03
	,@CurrBalanceLast04
	,@CurrBalanceLast05
	,@CurrBalanceLast06
	,@CurrBalanceLast07
	,@CurrBalanceLast08
	,@CurrBalanceLast09
	,@CurrBalanceLast10
	,@CurrBalanceLast11
	,@CurrBalanceLast12
	,0
	,@UserDefined01
	,@UserDefined02
	,@UserDefined03
	,@UserDefined04
	,@UserDefined05
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,''
	,''
	,''
	,''
	,''
	,''
	,@UpdatedOn
	,0
	,0
	,@CreateDate
	)
else if(@intChkNo =5)--CustomerCategories
   INSERT INTO tblUtilityPervCustomerCategories (CCCode,CCDesc) VALUES (@CCCode,@CCDesc)
else if(@intChkNo =6)--DeliveryAddresses
   INSERT INTO tblUtilityPervDeliveryAddresses (
	CustomerCode
	,CustDelivCode
	,SalesmanCode
	,Contact
	,Telephone
	,Cell
	,Fax
	,DelAddress01
	,DelAddress02
	,DelAddress03
	,DelAddress04
	,DelAddress05
	,Email
	,Spare
	)
VALUES (
	 @CustomerCode
	,@CustDelivCode
	,@SalesmanCode
	,@Contact
	,@Telephone
	,@Cell
	,@Fax
	,@DelAddress01
	,@DelAddress02
	,@DelAddress03
	,@DelAddress04
	,@DelAddress05
	,@Email
	,''
	)
else if(@intChkNo =7)--SalesmanMaster
   INSERT INTO tblUtilityPervSalesmanMaster (
	Code
	,Description
	,ComMethod
	,Spare
	,Balance01
	,Balance02
	,Balance03
	,Balance04
	,Balance05
	,Balance06
	,Balance07
	,Balance08
	,Balance09
	,Balance10
	,Balance11
	,Balance12
	,Balance13
	,LastBalance01
	,LastBalance02
	,LastBalance03
	,LastBalance04
	,LastBalance05
	,LastBalance06
	,LastBalance07
	,LastBalance08
	,LastBalance09
	,LastBalance10
	,LastBalance11
	,LastBalance12
	,LastBalance13
	,GPBalance01
	,GPBalance02
	,GPBalance03
	,GPBalance04
	,GPBalance05
	,GPBalance06
	,GPBalance07
	,GPBalance08
	,GPBalance09
	,GPBalance10
	,GPBalance11
	,GPBalance12
	,GPBalance13
	,GPLastBalance01
	,GPLastBalance02
	,GPLastBalance03
	,GPLastBalance04
	,GPLastBalance05
	,GPLastBalance06
	,GPLastBalance07
	,GPLastBalance08
	,GPLastBalance09
	,GPLastBalance10
	,GPLastBalance11
	,GPLastBalance12
	,GPLastBalance13
	,TargetAmount01
	,TargetAmount02
	,TargetAmount03
	,TargetAmount04
	,TargetAmount05
	,TargetPercentage01
	,TargetPercentage02
	,TargetPercentage03
	,TargetPercentage04
	,TargetPercentage05
	,Blocked
	,Picture
	)
VALUES (
	@Code
	,@Description
	,0
	,''
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,@Blocked
	,''
	)
else if(@intChkNo =8)--SupplierMaster
   INSERT INTO tblUtilityPervSupplierMaster (
	Category
	,SupplCode
	,SupplDesc
	,BalanceThis01
	,BalanceThis02
	,BalanceThis03
	,BalanceThis04
	,BalanceThis05
	,BalanceThis06
	,BalanceThis07
	,BalanceThis08
	,BalanceThis09
	,BalanceThis10
	,BalanceThis11
	,BalanceThis12
	,BalanceThis13
	,BalanceLast01
	,BalanceLast02
	,BalanceLast03
	,BalanceLast04
	,BalanceLast05
	,BalanceLast06
	,BalanceLast07
	,BalanceLast08
	,BalanceLast09
	,BalanceLast10
	,BalanceLast11
	,BalanceLast12
	,BalanceLast13
	,SalesThis01
	,SalesThis02
	,SalesThis03
	,SalesThis04
	,SalesThis05
	,SalesThis06
	,SalesThis07
	,SalesThis08
	,SalesThis09
	,SalesThis10
	,SalesThis11
	,SalesThis12
	,SalesThis13
	,SalesLast01
	,SalesLast02
	,SalesLast03
	,SalesLast04
	,SalesLast05
	,SalesLast06
	,SalesLast07
	,SalesLast08
	,SalesLast09
	,SalesLast10
	,SalesLast11
	,SalesLast12
	,SalesLast13
	,PostAddress01
	,PostAddress02
	,PostAddress03
	,PostAddress04
	,PostAddress05
	,TaxCode
	,ExemptRef
	,SettlementTerms
	,PaymentTerms
	,LastCrDate
	,LastCrAmount
	,Blocked
	,OpenItem
	,OverRideTax
	,MonthOrDay
	,IncExc
	,CountryCode
	,CurrencyCode
	,CreditLimit
	,Contact
	,Telephone
	,Cellphone
	,Fax
	,DelAddress01
	,DelAddress02
	,DelAddress03
	,DelAddress04
	,DelAddress05
	,CurrBalanceThis01
	,CurrBalanceThis02
	,CurrBalanceThis03
	,CurrBalanceThis04
	,CurrBalanceThis05
	,CurrBalanceThis06
	,CurrBalanceThis07
	,CurrBalanceThis08
	,CurrBalanceThis09
	,CurrBalanceThis10
	,CurrBalanceThis11
	,CurrBalanceThis12
	,CurrBalanceThis13
	,CurrBalanceLast01
	,CurrBalanceLast02
	,CurrBalanceLast03
	,CurrBalanceLast04
	,CurrBalanceLast05
	,CurrBalanceLast06
	,CurrBalanceLast07
	,CurrBalanceLast08
	,CurrBalanceLast09
	,CurrBalanceLast10
	,CurrBalanceLast11
	,CurrBalanceLast12
	,CurrBalanceLast13
	,UserDefined01
	,UserDefined02
	,UserDefined03
	,UserDefined04
	,UserDefined05
	,Ageing01
	,Ageing02
	,Ageing03
	,Ageing04
	,Ageing05
	,Email
	,StatPrintorEmail
	,DocPrintorEmail
	,Freight01
	,Ship
	,Link1099
	,DefaultContraAccount
	,UpdatedOn
	,Spare
	,CreateDate
	)
VALUES (
	@Category
	,@SupplCode
	,@SupplDesc
	,@BalanceThis01
	,@BalanceThis02
	,@BalanceThis03
	,@BalanceThis04
	,@BalanceThis05
	,@BalanceThis06
	,@BalanceThis07
	,@BalanceThis08
	,@BalanceThis09
	,@BalanceThis10
	,@BalanceThis11
	,@BalanceThis12
	,0
	,@BalanceLast01
	,@BalanceLast02
	,@BalanceLast03
	,@BalanceLast04
	,@BalanceLast05
	,@BalanceLast06
	,@BalanceLast07
	,@BalanceLast08
	,@BalanceLast09
	,@BalanceLast10
	,@BalanceLast11
	,@BalanceLast12
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,@PostAddress01
	,@PostAddress02
	,@PostAddress03
	,@PostAddress04
	,@PostAddress05
	,@TaxCode
	,@ExemptRef
	,0
	,@PaymentTerms
	,@LastCrDate
	,0
	,@Blocked
	,@OpenItem
	,0
	,0
	,''
	,''
	,@CurrencyCode
	,0
	,@Contact
	,@Telephone
	,@Cellphone
	,@Fax
	,''
	,''
	,''
	,''
	,''
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,@UserDefined01
	,@UserDefined02
	,@UserDefined03
	,@UserDefined04
	,@UserDefined05
	,0
	,0
	,0
	,0
	,0
	,@Email
	,0
	,0
	,''
	,''
	,''
	,''
	,@UpdatedOn
	,''
	,@CreateDate
	)
else if(@intChkNo =9)--SupplierCategories
   INSERT INTO tblUtilityPervSupplierCategories (SCCode,SCDesc) VALUES (@SCCode,@SCDesc)
else if(@intChkNo =10)--Inventory
   INSERT INTO tblUtilityPervInventory (
	Category
	,ItemCode
	,Description
	,Barcode
	,DiscountType
	,Blocked
	,Fixed
	,ShowQty
	,Physical
	,UnitSize
	,SalesTaxType
	,PurchTaxType
	,GLCode
	,AllowTax
	,LinkWeb
	,SalesCommision
	,SerialItem
	,Picture
	,UserDefText01
	,UserDefText02
	,UserDefText03
	,UserDefNum01
	,UserDefNum02
	,UserDefNum03
	,CommodityCode
	,NettMass
	,UpdatedOn
	)
VALUES (
	@ItemCategory
	,@ItemCode
	,@Description
	,@Barcode
	,0
	,@Blocked
	,0
	,0
	,@Physical
	,@UnitSize
	,0
	,0
	,''
	,0
	,''
	,0
	,0
	,''
	,@UserDefText01
	,@UserDefText02
	,@UserDefText03
	,@UserDefNum01
	,@UserDefNum02
	,@UserDefNum03
	,''
	,0
	,''
	)
else if(@intChkNo =11)--InventoryCategory
   INSERT INTO tblUtilityPervInventoryCategory (ICCode,ICDesc) VALUES (@ICCode,@ICDesc)
else if(@intChkNo =12)--InventoryGroups
   INSERT INTO tblUtilityPervInventoryGroups (
	InvGroup
	,Description
	,SalesAcc
	,PurchAcc
	,COSAcc
	,Adjustment
	,StockCtl
	,Variance
	,PurchVariance
	,SalesTaxType
	,PurchTaxType
	)
VALUES (
	@InvGroup
	,@InvGroupDesc
	,@SalesAcc
	,@PurchAcc
	,@COSAcc
	,''
	,''
	,@Variance
	,''
	,0
	,0
	)
else if(@intChkNo =13)--MultiStore
   INSERT INTO tblUtilityPervMultiStore (
	StoreCode
	,Description
	,Blocked
	,DefaultStore
	,PostalAddress01
	,PostalAddress02
	,PostalAddress03
	,PostalAddress04
	,PostalAddress05
	,PhysicalAddress01
	,PhysicalAddress02
	,PhysicalAddress03
	,PhysicalAddress04
	,PhysicalAddress05
	,Contact
	,Telephone
	,Fax
	,Cellphone
	,Email
	)
VALUES (
	@StoreCode
	,@Description
	,0
	,''
	,''
	,''
	,''
	,''
	,''
	,''
	,''
	,''
	,''
	,''
	,''
	,''
	,''
	,''
	,''
	)
else if(@intChkNo =14)--CurrencyFile
   INSERT INTO tblUtilityPervCurrencyFile (
	CurrCode
	,CurrDesc
	,RateThis01
	,RateThis02
	,RateThis03
	,RateThis04
	,RateThis05
	,RateThis06
	,RateThis07
	,RateThis08
	,RateThis09
	,RateThis10
	,RateThis11
	,RateThis12
	,RateThis13
	,RateLast01
	,RateLast02
	,RateLast03
	,RateLast04
	,RateLast05
	,RateLast06
	,RateLast07
	,RateLast08
	,RateLast09
	,RateLast10
	,RateLast11
	,RateLast12
	,RateLast13
	,VarianceAccount
	,VariancePercentage
	,FieldFormat
	,EUcode
	,EntryMethod
	)
VALUES (
	@CurrCode
	,@CurrDesc
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,''
	,0
	,''
	,''
	,''
	)
else if(@intChkNo =15)--LedgerParameters
   INSERT INTO tblUtilityPervLedgerParameters (
	LastProfitLossAmt
	,SalesAcc
	,PurchAcc
	,PerStartThis01
	,PerStartLast01
	,PerEndThis12
	,PerEndLast12
	)
VALUES (
	@LastProfitLossAmt
	,@SalesAcc
	,@PurchAcc
	,@PerStartThis01
	,@PerStartLast01
	,@PerEndThis12
	,@PerEndLast12
	)
else if(@intChkNo =16)--MultiStoreTrn
   INSERT INTO tblUtilityPervMultiStoreTrn (
	StoreCode
	,InvGroup
	,ItemCode
	,Bin
	,LastInvDate
	,LastPurchDate
	,LastPurchAmt
	,ReorderLevel
	,MaximumLevel
	,OpeningQty
	,ActualQty
	,SellExcl01
	,SellExcl02
	,SellExcl03
	,SellExcl04
	,SellExcl05
	,SellExcl06
	,SellExcl07
	,SellExcl08
	,SellExcl09
	,SellExcl10
	,SellIncl01
	,SellIncl02
	,SellIncl03
	,SellIncl04
	,SellIncl05
	,SellIncl06
	,SellIncl07
	,SellIncl08
	,SellIncl09
	,SellIncl10
	,SpecialPriceExcl
	,SpecialPriceIncl
	,SpecialStartDate
	,SpecailEndDate
	,NewExcl01
	,NewExcl02
	,NewExcl03
	,NewExcl04
	,NewExcl05
	,NewExcl06
	,NewExcl07
	,NewExcl08
	,NewExcl09
	,NewExcl10
	,NewIncl01
	,NewIncl02
	,NewIncl03
	,NewIncl04
	,NewIncl05
	,NewIncl06
	,NewIncl07
	,NewIncl08
	,NewIncl09
	,NewIncl10
	,CostThis01
	,CostThis02
	,CostThis03
	,CostThis04
	,CostThis05
	,CostThis06
	,CostThis07
	,CostThis08
	,CostThis09
	,CostThis10
	,CostThis11
	,CostThis12
	,CostThis13
	,QtyBuyThis01
	,QtyBuyThis02
	,QtyBuyThis03
	,QtyBuyThis04
	,QtyBuyThis05
	,QtyBuyThis06
	,QtyBuyThis07
	,QtyBuyThis08
	,QtyBuyThis09
	,QtyBuyThis10
	,QtyBuyThis11
	,QtyBuyThis12
	,QtyBuyThis13
	,QtyAdjustThis01
	,QtyAdjustThis02
	,QtyAdjustThis03
	,QtyAdjustThis04
	,QtyAdjustThis05
	,QtyAdjustThis06
	,QtyAdjustThis07
	,QtyAdjustThis08
	,QtyAdjustThis09
	,QtyAdjustThis10
	,QtyAdjustThis11
	,QtyAdjustThis12
	,QtyAdjustThis13
	,QtySellThis01
	,QtySellThis02
	,QtySellThis03
	,QtySellThis04
	,QtySellThis05
	,QtySellThis06
	,QtySellThis07
	,QtySellThis08
	,QtySellThis09
	,QtySellThis10
	,QtySellThis11
	,QtySellThis12
	,QtySellThis13
	,AmtSellThis01
	,AmtSellThis02
	,AmtSellThis03
	,AmtSellThis04
	,AmtSellThis05
	,AmtSellThis06
	,AmtSellThis07
	,AmtSellThis08
	,AmtSellThis09
	,AmtSellThis10
	,AmtSellThis11
	,AmtSellThis12
	,AmtSellThis13
	,CostLast
	,QtyBuyLast
	,QtyAdjustLast
	,QtySellLast
	,AmtSellLast
	)
VALUES (
	@StoreCode
	,''
	,@ItemCode
	,''
	,@LastInvDate
	,@LastPurchDate
	,0
	,0
	,0
	,@OpeningQty
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,NULL
	,NULL
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,@CostThis12
	,0
	,@QtyBuyThis01
	,@QtyBuyThis02
	,@QtyBuyThis03
	,@QtyBuyThis04
	,@QtyBuyThis05
	,@QtyBuyThis06
	,@QtyBuyThis07
	,@QtyBuyThis08
	,@QtyBuyThis09
	,@QtyBuyThis10
	,@QtyBuyThis11
	,@QtyBuyThis12
	,0
	,@QtyAdjustThis01
	,@QtyAdjustThis02
	,@QtyAdjustThis03
	,@QtyAdjustThis04
	,@QtyAdjustThis05
	,@QtyAdjustThis06
	,@QtyAdjustThis07
	,@QtyAdjustThis08
	,@QtyAdjustThis09
	,@QtyAdjustThis10
	,@QtyAdjustThis11
	,@QtyAdjustThis12
	,0
	,@QtySellThis01
	,@QtySellThis02
	,@QtySellThis03
	,@QtySellThis04
	,@QtySellThis05
	,@QtySellThis06
	,@QtySellThis07
	,@QtySellThis08
	,@QtySellThis09
	,@QtySellThis10
	,@QtySellThis11
	,@QtySellThis12
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,0
	,@QtyBuyLast
	,@QtyAdjustLast
	,@QtySellLast
	,0
	)
else if(@intChkNo =17)--CashBookCurrency
   INSERT INTO tblUtilityPervCashBookCurrency (
	AccNumber
	,Balance01
	,Balance02
	,Balance03
	,Balance04
	,Balance05
	,Balance06
	,Balance07
	,Balance08
	,Balance09
	,Balance10
	,Balance11
	,Balance12
	,Balance13
	,LastBalance01
	,LastBalance02
	,LastBalance03
	,LastBalance04
	,LastBalance05
	,LastBalance06
	,LastBalance07
	,LastBalance08
	,LastBalance09
	,LastBalance10
	,LastBalance11
	,LastBalance12
	,LastBalance13
	)
VALUES (
	@AccNumber
	,@Balance01
	,@Balance02
	,@Balance03
	,@Balance04
	,@Balance05
	,@Balance06
	,@Balance07
	,@Balance08
	,@Balance09
	,@Balance10
	,@Balance11
	,@Balance12
	,0
	,@LastBalance01
	,@LastBalance02
	,@LastBalance03
	,@LastBalance04
	,@LastBalance05
	,@LastBalance06
	,@LastBalance07
	,@LastBalance08
	,@LastBalance09
	,@LastBalance10
	,@LastBalance11
	,@LastBalance12
	,0
	)
else if(@intChkNo =18)--CostCodes
   INSERT INTO tblUtilityPervCostCodes (JobCode,JobDesc,Blocked) VALUES (@JobCode,@JCDesc,@Blocked)
END
GO

CREATE PROCEDURE [dbo].[FetchPastelData]
(
@Date DateTime = null,
@IsOverride bit = 0,
@lngAutoNo nvarchar(MAx) = '',
@TranStartDate DateTime= null,
@TranEndDate DateTime= null,
@intFetchSQL as int =1
)
AS
Begin

Declare @Sql as nvarchar(Max) = '';
if(@intFetchSQL = 1)
Set @sql ='Select TOP 1 CustomerCode FROM CustomerMaster'
else if(@intFetchSQL = 2)
Set @sql ='Select TOP 1 Version FROM SystemParameters'
else if(@intFetchSQL = 100)
Set @sql ='Select FinancialCategory, AccNumber, AccDesc, NumberSubAccs, BalanceThis01, BalanceThis02, BalanceThis03, BalanceThis04, BalanceThis05, BalanceThis06, BalanceThis07, BalanceThis08, BalanceThis09, BalanceThis10, BalanceThis11, BalanceThis12, BalanceLast01, BalanceLast02, BalanceLast03, BalanceLast04, BalanceLast05, BalanceLast06, BalanceLast07, BalanceLast08, BalanceLast09, BalanceLast10, BalanceLast11, BalanceLast12 FROM LedgerMaster'
else if(@intFetchSQL = 101)
Set @sql ='Select FinCode, FinDesc FROM FinancialCategories'
else if(@intFetchSQL = 102)
Set @sql ='Select ID, TaxControlAcc, TaxProvisionAcc, DefaultExclusive, TaxPercent01, TaxPercent02, TaxPercent03, TaxPercent04, TaxPercent05, TaxPercent06, TaxPercent07, TaxPercent08, TaxPercent09, TaxPercent10 FROM TaxParameters'
else if(@intFetchSQL = 103)
Set @sql ='Select TaxDesc01, TaxDesc02, TaxDesc03, TaxDesc04, TaxDesc05, TaxDesc06, TaxDesc07, TaxDesc08, TaxDesc09, TaxDesc10 FROM TaxDescription'
else if(@intFetchSQL = 104)
Set @sql ='Select Category, CustomerCode, CustomerDesc, BalanceThis01, BalanceThis02, BalanceThis03, BalanceThis04, BalanceThis05, BalanceThis06, BalanceThis07, BalanceThis08, BalanceThis09, BalanceThis10, BalanceThis11, BalanceThis12, BalanceLast01, BalanceLast02, BalanceLast03, BalanceLast04, BalanceLast05, BalanceLast06, BalanceLast07, BalanceLast08, BalanceLast09, BalanceLast10, BalanceLast11, BalanceLast12, PostAddress01, PostAddress02, PostAddress03, PostAddress04, PostAddress05, TaxCode, ExemptRef, PaymentTerms, Convert(LastCrDate, SQL_CHAR, 20) As LastCrDate, Blocked, OpenItem, CurrencyCode, CreditLimit, CurrBalanceThis01, CurrBalanceThis02, CurrBalanceThis03, CurrBalanceThis04, CurrBalanceThis05, CurrBalanceThis06, CurrBalanceThis07, CurrBalanceThis08, CurrBalanceThis09, CurrBalanceThis10, CurrBalanceThis11, CurrBalanceThis12, CurrBalanceLast01, CurrBalanceLast02, CurrBalanceLast03, CurrBalanceLast04, CurrBalanceLast05, CurrBalanceLast06, CurrBalanceLast07, CurrBalanceLast08, CurrBalanceLast09, CurrBalanceLast10, CurrBalanceLast11, CurrBalanceLast12, UserDefined01, UserDefined02, UserDefined03, UserDefined04, UserDefined05, UpdatedOn, Convert(CreateDate, SQL_CHAR, 20) As CreateDate FROM CustomerMaster'
else if(@intFetchSQL = 105)
Set @sql ='Select * FROM CustomerCategories'
else if(@intFetchSQL = 106)
Set @sql ='Select CustomerCode, CustDelivCode, SalesmanCode, Contact, Telephone, Cell, Fax, DelAddress01, DelAddress02, DelAddress03, DelAddress04, DelAddress05, Email FROM DeliveryAddresses'
else if(@intFetchSQL = 107)
Set @sql ='Select Code, Description, Blocked FROM SalesmanMaster'
else if(@intFetchSQL = 108)
Set @sql ='Select Category, SupplCode, SupplDesc, BalanceThis01, BalanceThis02, BalanceThis03, BalanceThis04, BalanceThis05, BalanceThis06, BalanceThis07, BalanceThis08, BalanceThis09, BalanceThis10, BalanceThis11, BalanceThis12, BalanceLast01, BalanceLast02, BalanceLast03, BalanceLast04, BalanceLast05, BalanceLast06, BalanceLast07, BalanceLast08, BalanceLast09, BalanceLast10, BalanceLast11, BalanceLast12, PostAddress01, PostAddress02, PostAddress03, PostAddress04, PostAddress05, TaxCode, ExemptRef, PaymentTerms, Convert(LastCrDate, SQL_CHAR, 20) As LastCrDate, Blocked, OpenItem, CurrencyCode, Contact, Telephone, Cellphone, Fax, UserDefined01, UserDefined02, UserDefined03, UserDefined04, UserDefined05, Email, UpdatedOn, Convert(CreateDate, SQL_CHAR, 20) As CreateDate FROM SupplierMaster'
else if(@intFetchSQL = 109)
Set @sql ='Select SCCode, SCDesc FROM SupplierCategories'
else if(@intFetchSQL = 110)
Set @sql ='Select Category, ItemCode, Description, Barcode, Blocked, Physical, UnitSize, UserDefText01, UserDefText02, UserDefText03, UserDefNum01, UserDefNum02, UserDefNum03 FROM Inventory'
else if(@intFetchSQL = 111)
Set @sql ='Select ICCode, ICDesc FROM InventoryCategory'
else if(@intFetchSQL = 112)
Set @sql ='Select InvGroup, Description, SalesAcc, PurchAcc, COSAcc, Variance FROM InventoryGroups'
else if(@intFetchSQL = 113)
Set @sql ='Select StoreCode, Description FROM MultiStore'
else if(@intFetchSQL = 114)
Set @sql ='Select CurrCode, CurrDesc FROM CurrencyFile'
else if(@intFetchSQL = 115)
Set @sql ='Select LastProfitLossAmt, SalesAcc, PurchAcc, Convert(PerStartThis01, SQL_CHAR, 20) As PerStartThis01, Convert(PerStartLast01, SQL_CHAR, 20) As PerStartLast01, Convert(PerEndThis12, SQL_CHAR, 20) As PerEndThis12, Convert(PerEndLast12, SQL_CHAR, 20) As PerEndLast12 FROM LedgerParameters'
else if(@intFetchSQL = 116)
Set @sql ='Select StoreCode, ItemCode, Convert(LastInvDate, SQL_CHAR, 20) As LastInvDate, Convert(LastPurchDate, SQL_CHAR, 20) As LastPurchDate, OpeningQty, CostThis12, QtyBuyThis01, QtyBuyThis02, QtyBuyThis03, QtyBuyThis04, QtyBuyThis05, QtyBuyThis06, QtyBuyThis07, QtyBuyThis08, QtyBuyThis09, QtyBuyThis10, QtyBuyThis11, QtyBuyThis12, QtyAdjustThis01, QtyAdjustThis02, QtyAdjustThis03, QtyAdjustThis04, QtyAdjustThis05, QtyAdjustThis06, QtyAdjustThis07, QtyAdjustThis08, QtyAdjustThis09, QtyAdjustThis10, QtyAdjustThis11, QtyAdjustThis12, QtySellThis01, QtySellThis02, QtySellThis03, QtySellThis04, QtySellThis05, QtySellThis06, QtySellThis07, QtySellThis08, QtySellThis09, QtySellThis10, QtySellThis11, QtySellThis12, QtyBuyLast, QtyAdjustLast, QtySellLast FROM MultiStoreTrn'
else if(@intFetchSQL = 117)
Set @sql ='Select AccNumber, Balance01, Balance02, Balance03, Balance04, Balance05, Balance06, Balance07, Balance08, Balance09, Balance10, Balance11, Balance12, LastBalance01, LastBalance02, LastBalance03, LastBalance04, LastBalance05, LastBalance06, LastBalance07, LastBalance08, LastBalance09, LastBalance10, LastBalance11, LastBalance12 FROM CashBookCurrency'
else if(@intFetchSQL = 118)
Set @sql ='Select JobCode, JCDesc, Blocked FROM CostCodes'
else if(@intFetchSQL = 119)
Set @sql ='Select DocumentType, DocumentNumber, CustomerCode, Convert(DocumentDate, SQL_CHAR, 20) As DocumentDate, OrderNumber, SalesmanCode, Message01, Message02, Message03, Terms, CurrencyCode, ExchangeRate, DiscountPercent, Total, FCurrTotal, TotalTax, FCurrTotalTax FROM HistoryHeader WHERE DocumentDate >= '''+ @TranStartDate+''' AND DocumentDate < '''+ @TranEndDate+''''
else if(@intFetchSQL = 120)
Set @sql ='SELECT UserID, DocumentType, DocumentNumber, ItemCode, SearchType, CONVERT(DDate, SQL_CHAR, 20) AS DDate, UnitUsed, TaxType, DiscountPercentage, Description, CostPrice, Qty, UnitPrice, InclusivePrice, FCurrUnitPrice, FCurrInclPrice, TaxAmt, FCurrTaxAmount, DiscountAmount, FCDiscountAmount, CostCode, Physical, LinkNum, MultiStore, LinkDocumentType, QtyLeft FROM HistoryLines WHERE SearchType IN (4,6,7) AND (DDate >= '''+@TranStartDate+''' AND DDate < '''+ @TranEndDate +''')'
else if(@intFetchSQL = 121)
Set @sql ='SELECT TOP 5000 GDC, AccNumber, CurrCode, PPeriod, CONVERT(DDate, SQL_CHAR, 20) AS DDate, Refrence, Amount, CurrAmt, Description, TransactionID, AutoNumber FROM LedgerTransactions WHERE AutoNumber > ''' +@lngAutoNo+''''
else if(@intFetchSQL = 122)
Set @sql ='SELECT DC, CSCode, MatchRef, BatchID, PPeriod, CONVERT(dDate, SQL_CHAR, 20) AS dDate, Ref, Amount, CurrAmt FROM OpenItem WHERE dDate >= ''' + @TranStartDate + ''' AND dDate < ''' + @TranEndDate +''''
else if(@intFetchSQL = 123)
 Begin
	 if(@IsOverride = 1)
        Set @sql ='SELECT '''+@Date +''' AS MinDate, MAX(DocumentDate) AS MaxDate FROM HistoryHeader'
	else
        Set @sql ='SELECT MIN(DocumentDate) AS MinDate, MAX(DocumentDate) AS MaxDate FROM HistoryHeader'
End
else if(@intFetchSQL = 124)
 Begin
	 if(@IsOverride = 1)
        Set @sql ='SELECT '''+@Date +''' AS MinDate, MAX(DDate) AS MaxDate FROM HistoryLines '
	  else
        Set @sql ='SELECT MIN(DDate) AS MinDate, MAX(DDate) AS MaxDate FROM HistoryLines'
End
else if(@intFetchSQL = 125)
 Begin
	 if(@IsOverride = 1)
        Set @sql ='SELECT ''' +@Date +''' AS MinDate, MAX(dDate) AS MaxDate FROM OpenItem'
	  else
        Set @sql ='SELECT MIN(dDate) AS MinDate, MAX(dDate) AS MaxDate FROM OpenItem'
End
End
exec @sql;
Go

CREATE PROCEDURE [dbo].GetTranMonthStart
@Date nvarchar(20)
AS
BEGIN
SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, @Date), 0)
END
GO

CREATE PROCEDURE [dbo].[RemoveUtilityAllHistoryType] (
	@UtilityTypes INT
	)
AS
BEGIN
	IF (@UtilityTypes = 0)
	BEGIN
		DELETE FROM tblUtilityPervHistoryHeader
	END

	IF (@UtilityTypes = 1)
	BEGIN
		DELETE FROM tblUtilityPervHistoryLines
	END

	IF (@UtilityTypes = 2)
	BEGIN
		DELETE FROM tblUtilityPervLedgerTransactions
	END

	IF (@UtilityTypes = 3)
	BEGIN
		DELETE FROM tblUtilityPervOpenItem
	END
END
GO

CREATE PROCEDURE [dbo].[SaveUtilityAllHistoryType] (
	@DocumentType SMALLINT = NULL
	,@DocumentNumber VARCHAR(50) = NULL
	,@CustomerCode VARCHAR(20) = NULL
	,@DocumentDate DATETIME = NULL
	,@OrderNumber VARCHAR(500) = NULL
	,@SalesmanCode VARCHAR(500) = NULL
	,@Message01 VARCHAR(500) = NULL
	,@Message02 VARCHAR(500) = NULL
	,@Message03 VARCHAR(500) = NULL
	,@Terms SMALLINT =  NULL
	,@CurrencyCode SMALLINT  = NULL
	,@ExchangeRate int = null
	,@DiscountPercent INT = NULL
	,@Total INT = NULL
	,@FCurrTotal INT = NULL
	,@TotalTax INT = NULL
	,@FCurrTotalTax INT = NULL
	,@UserId SMALLINT = NULL
	,@ItemCode NVARCHAR(MAX) = NULL
	,@SearchType INT = NULL
	,@UnitUsed NVARCHAR(max) = NULL
	,@DDate DATETIME = NULL
	,@LinkNum INT = NULL
	,@Physical SMALLINT = NULL
	,@CostCode NVARCHAR(250) = NULL
	,@FCDiscountAmount INT = NULL
	,@DiscountAmount INT = NULL
	,@TaxAmt INT = NULL
	,@FCurrTaxAmount INT = NULL
	,@FCurrInclPrice INT = NULL
	,@InclusivePrice INT = NULL
	,@UnitPrice INT = NULL
	,@CostPrice INT = NULL
	,@TaxType INT = NULL
	,@DiscountPercentage SMALLINT = null
	,@QtyLeft INT = NULL
	,@LinkDocumentType SMALLINT = NULL
	,@MultiStore NVARCHAR(max) = NULL
	,@FCurrUnitPrice INT = NULL
	,@Qty INT = NULL
	,@Description NVARCHAR(250) = NULL
	,@Amount INT = NULL
	,@Refrence NVARCHAR(max) = NULL
	,@PPeriod SMALLINT =NULL
	,@CurrCode SMALLINT =NULL
	,@AccNumber NVARCHAR(250) = NULL
	,@CurrAmt INT = NULL
	,@GDC  NVARCHAR(max) = NULL
	,@AutoNumber INT = NULL
	,@TransactionID INT = NULL
	,@Ref NVARCHAR(max) = NULL
	,@BatchID INT = NULL
	,@MatchRef NVARCHAR(250) = NULL
	,@CSCode NVARCHAR(250) = NULL
	,@DC NVARCHAR(250) = NULL
	,@UtilityTypes INT
	)
AS
BEGIN
	IF (@UtilityTypes = 1)
	BEGIN
		INSERT INTO tblUtilityPervHistoryHeader (
			DocumentType
			,DocumentNumber
			,CustomerCode
			,DocumentDate
			,OrderNumber
			,SalesmanCode
			,UserID
			,ExclIncl
			,Message01
			,Message02
			,Message03
			,DelAddress01
			,DelAddress02
			,DelAddress03
			,DelAddress04
			,DelAddress05
			,Terms
			,ExtraCosts
			,CostCode
			,PPeriod
			,ClosingDate
			,Telephone
			,Fax
			,Contact
			,CurrencyCode
			,ExchangeRate
			,DiscountPercent
			,Total
			,FCurrTotal
			,TotalTax
			,FCurrTotalTax
			,TotalCost
			,InvDeleted
			,InvPrintStatus
			,Onhold
			,GRNMisc
			,Paid
			,Freight01
			,Ship
			,IsTMBDoc
			,Spare
			,Exported
			,ExportRef
			,ExportNum
			,Emailed
			)
		VALUES (
			 @DocumentType
			,@DocumentNumber
			,@CustomerCode
			,@DocumentDate
			,@OrderNumber
			,@SalesmanCode
			,0
			,0
			,@Message01
			,@Message02
			,@Message03
			,''
			,''
			,''
			,''
			,''
			,@Terms
			,0
			,''
			,0
			,NULL
			,''
			,''
			,''
			,@CurrencyCode
			,@ExchangeRate
			,@DiscountPercent
			,@Total
			,@FCurrTotal
			,@TotalTax
			,@FCurrTotalTax
			,0
			,''
			,''
			,0
			,''
			,0
			,''
			,''
			,0
			,''
			,''
			,''
			,0
			,''
			)
	END

	IF (@UtilityTypes = 2)
	BEGIN
		INSERT INTO tblUtilityPervHistoryLines (
			UserId
			,DocumentType
			,DocumentNumber
			,ItemCode
			,CustomerCode
			,SalesmanCode
			,SearchType
			,PPeriod
			,DDate
			,UnitUsed
			,TaxType
			,DiscountType
			,DiscountPercentage
			,Description
			,CostPrice
			,Qty
			,UnitPrice
			,InclusivePrice
			,FCurrUnitPrice
			,FCurrInclPrice
			,TaxAmt
			,FCurrTaxAmount
			,DiscountAmount
			,FCDiscountAmount
			,CostCode
			,DATETIME
			,WhichUserDef
			,Physical
			,Fixed
			,ShowQty
			,LinkNum
			,LinkedNum
			,GRNQty
			,LinkID
			,MultiStore
			,IsTMBLine
			,LinkDocumentType
			,LinkDocumentNumber
			,Exported
			,ExportRef
			,ExportNum
			,QtyLeft
			,CaseLotCode
			,CaseLotQty
			,CaseLotRatio
			,CostSyncDone
			)
		VALUES (
			@UserId
			,@DocumentType
			,@DocumentNumber
			,@ItemCode
			,''
			,''
			,@SearchType
			,0
			,@DDate
			,@UnitUsed
			,@TaxType
			,0
			,@DiscountPercentage
			,@Description
			,@CostPrice
			,@Qty
			,@UnitPrice
			,@InclusivePrice
			,@FCurrUnitPrice
			,@FCurrInclPrice
			,@TaxAmt
			,@FCurrTaxAmount
			,@DiscountAmount
			,@FCDiscountAmount
			,@CostCode
			,NULL
			,''
			,@Physical
			,0
			,0
			,@LinkNum
			,0
			,0
			,0
			,@MultiStore
			,0
			,@LinkDocumentType
			,''
			,''
			,''
			,0
			,@QtyLeft
			,''
			,0
			,0
			,0
			)
	END

	IF (@UtilityTypes = 3)
	BEGIN
		INSERT INTO tblUtilityPervLedgerTransactions (
			GDC
			,AccNumber
			,DiscFlag
			,CurrCode
			,Spare
			,PPeriod
			,DDate
			,EType
			,Refrence
			,JobCode
			,Amount
			,TaxAmt
			,ThisCurrTaxAmount
			,BankTaxAmount
			,CurrAmt
			,BankCurrAmount
			,ReconFlag
			,Description
			,TaxType
			,Country
			,Generated
			,PayBased
			,UserID
			,WhichUserRef
			,LinkAcc
			,UpdateReconFlag
			,ChequeFlag
			,LinkID
			,InInv
			,TaxReportDate
			,BatchID
			,TransactionID
			,AutoNumber
			,Exported
			,ExportRef
			,ExportNum
			,CostSyncDone
			)
		VALUES (
			@GDC
			,@AccNumber
			,''
			,@CurrCode
			,''
			,@PPeriod
			,@DDate
			,0
			,@Refrence
			,''
			,@Amount
			,0
			,0
			,0
			,@CurrAmt
			,0
			,0
			,@Description
			,0
			,''
			,''
			,''
			,0
			,''
			,''
			,0
			,''
			,0
			,0
			,NULL
			,0
			,@TransactionID
			,@AutoNumber
			,''
			,''
			,0
			,0
			)
	END

	IF (@UtilityTypes = 4)
	BEGIN
		INSERT INTO tblUtilityPervOpenItem (
			DC
			,Original
			,CSCode
			,MatchRef
			,LineFlag
			,BatchID
			,PPeriod
			,dDate
			,EntryType
			,Ref
			,Amount
			,TaxAmt
			,CurrAmt
			,CurrTaxAmt
			,TaxType
			,Discount
			,TaxMethodUsed
			,Description
			,UserDef
			,Spare
			,Exported
			,ExportRef
			,ExportNum
			)
		VALUES (
			@DC
			,''
			,@CSCode
			,@MatchRef
			,0
			,@BatchID
			,@PPeriod
			,@dDate
			,0
			,@Ref
			,@Amount
			,0
			,@CurrAmt
			,0
			,0
			,''
			,''
			,''
			,''
			,''
			,''
			,''
			,0
			)
	END
END
GO

CREATE PROCEDURE [dbo].[rptIncomeDetailLoadCmd2]
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@DBName AS Nvarchar(Max),
@SQAsAt DATETime = NULL
AS
BEGIN
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF @optCurrentYear_IsChecked = 1
BEGIN

SET @sql = 'SELECT MIN(tblAccounts.intGLNumber) As intGLNumber, tblAccounts.intAccType, DATEPART(yyyy, tblJournal.dteJournalDate) AS Year, DATEPART(m,tblJournal.dteJournalDate) AS Month, SUM(tblJournalEnt.decAmount) As decAmount FROM ' + @DBName + '.dbo.tblJournal INNER JOIN ' + @DBName + '.dbo.tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID INNER JOIN ' + @DBName + '.dbo.tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber WHERE (tblJournal.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblAccounts.intAccType >= 4) AND (tblAccounts.intGroupCode < 3) GROUP BY tblAccounts.intAccType, DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate) HAVING SUM(tblJournalEnt.decAmount) <> 0 ORDER BY DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate), tblAccounts.intAccType'
END
ELSE IF @optPreviousYear_IsChecked = 1 
BEGIN

SET @sql = 'SELECT MIN(tblAccountsLY.intGLNumber) As intGLNumber, tblAccountsLY.intAccType, DATEPART(yyyy, tblJournalLY.dteJournalDate) AS Year, DATEPART(m,tblJournalLY.dteJournalDate) AS Month, SUM(tblJournalEntLY.decAmount) As decAmount FROM ' + @DBName + '.dbo.tblJournalLY INNER JOIN ' + @DBName + '.dbo.tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID INNER JOIN ' + @DBName + '.dbo.tblAccountsLY ON tblJournalEntLY.intGLNumber = tblAccountsLY.intGLNumber WHERE (tblJournalLY.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblAccountsLY.intAccType >= 4) AND (tblAccountsLY.intGroupCode < 3) GROUP BY tblAccountsLY.intAccType, DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate) HAVING SUM(tblJournalEntLY.decAmount) <> 0 ORDER BY DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate), tblAccountsLY.intAccType'
END
EXEC(@sql)
END
GO

CREATE PROCEDURE [dbo].[rptIncomeDetailLoadCmd1]
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@DBName AS Nvarchar(Max),
@SQAsAt DATETime = NULL
AS
BEGIN
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF @optCurrentYear_IsChecked = 1
BEGIN

SET @sql = 'SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, DATEPART(yyyy, tblJournal.dteJournalDate) AS Year, DATEPART(m,tblJournal.dteJournalDate) AS Month, SUM(tblJournalEnt.decAmount) As decAmount, tblAccounts.intAccClass FROM ' + @DBName + '.dbo.tblJournal INNER JOIN ' + @DBName + '.dbo.tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID INNER JOIN ' + @DBName + '.dbo.tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber WHERE (tblJournal.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblAccounts.intAccType >= 4) AND (tblAccounts.intGroupCode < 3) GROUP BY tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate), tblAccounts.intAccClass HAVING SUM(tblJournalEnt.decAmount) <> 0 ORDER BY tblAccounts.intGLNumber, DATEPART(yyyy, tblJournal.dteJournalDate), DATEPART(m,tblJournal.dteJournalDate)'
END
ELSE IF @optPreviousYear_IsChecked = 1 
BEGIN

SET @sql = 'SELECT tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, tblAccountsLY.intAccType, DATEPART(yyyy, tblJournalLY.dteJournalDate) AS Year, DATEPART(m,tblJournalLY.dteJournalDate) AS Month, SUM(tblJournalEntLY.decAmount) As decAmount, tblAccountsLY.intAccClass FROM ' + @DBName + '.dbo.tblJournalLY INNER JOIN ' + @DBName + '.dbo.tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID INNER JOIN ' + @DBName + '.dbo.tblAccountsLY ON tblJournalEntLY.intGLNumber = tblAccountsLY.intGLNumber WHERE (tblJournalLY.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblAccountsLY.intAccType >= 4) AND (tblAccountsLY.intGroupCode < 3) GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, tblAccountsLY.intAccType, DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate), tblAccountsLY.intAccClass HAVING SUM(tblJournalEntLY.decAmount) <> 0 ORDER BY tblAccountsLY.intGLNumber, DATEPART(yyyy, tblJournalLY.dteJournalDate), DATEPART(m,tblJournalLY.dteJournalDate)'

END
EXEC(@sql)
END
GO

CREATE PROCEDURE [dbo].[rptIncomeSummaryLoad]
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@DBName AS Nvarchar(Max),
@SQAsAt DATETime = NULL
AS
BEGIN
SET nocount ON;
DECLARE @sql VARCHAR(max) = ''
IF @optCurrentYear_IsChecked = 1
BEGIN

SET @sql = 'SELECT tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, SUM(tblJournalEnt.decAmount) As decAmount, tblAccounts.intGroupCode, tblAccounts.intAccClass FROM ' + @DBName + '.dbo.tblJournal INNER JOIN ' + @DBName + '.dbo.tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID INNER JOIN ' + @DBName + '.dbo.tblAccounts ON tblJournalEnt.intGLNumber = tblAccounts.intGLNumber WHERE (tblJournal.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblAccounts.intAccType >= 4) AND (tblAccounts.intGroupCode < 3) GROUP BY tblAccounts.intGLNumber, tblAccounts.strDesc, tblAccounts.intAccType, tblAccounts.intGroupCode, tblAccounts.intAccClass HAVING SUM(tblJournalEnt.decAmount) <> 0 UNION ALL SELECT intGLNumber,strDesc,intAccType,0,intGroupCode,intAccClass FROM tblAccounts WHERE intGroupCode = 3 AND intAccType >= 4 ORDER BY intGLNumber'
END
ELSE IF @optPreviousYear_IsChecked = 1 
BEGIN

SET @sql = 'SELECT tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, tblAccountsLY.intAccType, SUM(tblJournalEntLY.decAmount) As decAmount, tblAccountsLY.intGroupCode, tblAccountsLY.intAccClass FROM ' + @DBName + '.dbo.tblJournalLY INNER JOIN ' + @DBName + '.dbo.tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID INNER JOIN ' + @DBName + '.dbo.tblAccountsLY ON tblJournalEntLY.intGLNumber = tblAccountsLY.intGLNumber WHERE (tblJournalLY.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblAccountsLY.intAccType >= 4) AND (tblAccountsLY.intGroupCode < 3) GROUP BY tblAccountsLY.intGLNumber, tblAccountsLY.strDesc, tblAccountsLY.intAccType, tblAccountsLY.intGroupCode, tblAccountsLY.intAccClass HAVING SUM(tblJournalEntLY.decAmount) <> 0 UNION ALL SELECT intGLNumber,strDesc,intAccType,0,intGroupCode,intAccClass FROM tblAccountsLY WHERE intGroupCode = 3 AND intAccType >= 4 ORDER BY intGLNumber'
END
EXEC(@sql)
END
GO

CREATE PROCEDURE [dbo].[RptGetCompanyName]
-- Add the parameters for the stored procedure here

@DBName AS Nvarchar(Max)

AS
BEGIN


-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql VARCHAR(max) = ''
SET @sql = 'SELECT strName As Name FROM ' + @DBName + '.dbo.tblCompany '

EXEC(@sql)
END
GO

CREATE PROCEDURE [dbo].[RptGetMultiCompanyOptions]
-- Add the parameters for the stored procedure here

@DBName AS Nvarchar(Max)

AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql VARCHAR(max) = ''
SET @sql = 'SELECT intRecPeriod1 As RecPeriod1, intRecPeriod2 As RecPeriod2, intRecPeriod3 As RecPeriod3 FROM ' + @DBName + '.dbo.tblCoOpts '

EXEC(@sql)
END
GO

CREATE PROCEDURE [dbo].[SPRptBalSheetLoadQueryMultiCompany_1_2] 
@SQAsAt as date,
@SQintoAccountLegendExp_GLNumberFrom as integer,
@SQintoAccountLegendRev_GLNumberTo  as integer,
@SQintoAccountLegendRev_GLNumberFrom  as integer,
@SQintoAccountLegendExp_GLNumberTo  as integer,
@DBName AS Nvarchar(Max),
@optCurrentYear_IsChecked AS BIT,
@optPreviousYear_IsChecked AS BIT,
@optHistoryYear_IsChecked AS BIT,
@SQuidYearID AS UNIQUEIDENTIFIER
AS
BEGIN
Declare @SQintLengthRevGL As Integer
Declare @SQintLengthExpGL As Integer
Declare @decRevenue as DECIMAL(18,4) = 0
declare @decExpense as DECIMAL(18,4) = 0
declare @decOpenRevenue as DECIMAL(18,4) = 0
declare @decOpenExpense as DECIMAL(18,4) = 0
declare @intCurrEarnAcct as nvarchar(200)
declare @intCurrEarnAccClass as Integer
DECLARE @sql as NVARCHAR(max) = ''
IF @optCurrentYear_IsChecked = 1 
BEGIN
SET @sql = 'SELECT @intCurrEarnAcct = intGLNumber FROM ' + @DBName + '.dbo.tblAccounts WHERE bitLinkCEarnings = 1 '
exec sp_executesql @sql, N'@intCurrEarnAcct NVARCHAR(200) OUTPUT', @intCurrEarnAcct out
--- cmdEarn
SET @sql = ' SELECT @intCurrEarnAccClass = intAccClass FROM ' + @DBName + '.dbo.tblAccounts WHERE bitLinkCEarnings = 1 ' 
exec sp_executesql @sql, N'@intCurrEarnAccClass Integer OUTPUT', @intCurrEarnAccClass out
--- cmdAccClass
SET @sql = ' SELECT @SQintLengthRevGL = intSeg1Length from ' + @DBName + '.dbo.tblGLSegmentFormatSetup '  
exec sp_executesql @sql, N'@SQintLengthRevGL Integer OUTPUT', @SQintLengthRevGL out
--- cmdRevGLLength

SET @sql = ' SELECT  @decRevenue = ISNULL(SUM(tblJournalEnt.decAmount),0) FROM ' + @DBName + '.dbo.tblJournalEnt INNER JOIN  ' + @DBName + '.dbo.tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
WHERE (tblJournal.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND SUBSTRING(tblJournalEnt.intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) >= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendRev_GLNumberFrom)+''' 
AND SUBSTRING(tblJournalEnt.intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) <= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendRev_GLNumberTo)+''' ' 
exec sp_executesql @sql, N'@decRevenue Integer OUTPUT', @decRevenue out
--- cmdRev

SET @sql = ' SELECT  @decExpense = ISNULL(SUM(tblJournalEnt.decAmount),0) FROM  ' + @DBName + '.dbo.tblJournalEnt INNER JOIN  ' + @DBName + '.dbo.tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID 
WHERE (tblJournal.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND SUBSTRING(tblJournalEnt.intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) >= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendExp_GLNumberFrom)+''' 
AND SUBSTRING(tblJournalEnt.intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) <= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendExp_GLNumberTo)+''' ' 
exec sp_executesql @sql, N'@decExpense DECIMAL(18,4) OUTPUT', @decExpense out
--- cmdExp

SET @sql = ' SELECT  @decOpenRevenue = ISNULL(SUM(decOpenBalance),0) FROM  ' + @DBName + '.dbo.tblAccounts WHERE SUBSTRING(intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) >= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendRev_GLNumberFrom)+''' 
AND SUBSTRING(intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) <= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendRev_GLNumberTo)+''' ' 
exec sp_executesql @sql, N'@decOpenRevenue  DECIMAL(18,4) OUTPUT', @decOpenRevenue  out
--cmdRevOpen

SET @sql = ' SELECT @decOpenExpense = ISNULL(SUM(decOpenBalance),0) FROM  ' + @DBName + '.dbo.tblAccounts WHERE SUBSTRING(intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) >= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendExp_GLNumberFrom)+''' 
AND SUBSTRING(intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) <= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendExp_GLNumberTo)+''' '  
print '1'
exec sp_executesql @sql, N'@decOpenExpense  DECIMAL(18,4) OUTPUT', @decOpenExpense  out
print '2'
---cmdExpOpen

select @intCurrEarnAcct as intCurrEarnAcct, @decRevenue as decRevenue,@decExpense as decExpense,ISNULL(@decOpenRevenue,0) as decOpenRevenue,ISNULL(@decOpenExpense,0) as decOpenExpense
END

ELSE IF @optPreviousYear_IsChecked = 1 
BEGIN
SET @sql = ' SELECT @intCurrEarnAcct = intGLNumber FROM  ' + @DBName + '.dbo.tblAccountsLY WHERE bitLinkCEarnings = 1 ' --- cmdEarn
exec sp_executesql @sql, N'@intCurrEarnAcct NVARCHAR(200) OUTPUT', @intCurrEarnAcct out
--- cmdEarn

SET @sql = ' SELECT @intCurrEarnAccClass = intAccClass FROM  ' + @DBName + '.dbo.tblAccounts WHERE bitLinkCEarnings = 1  '
exec sp_executesql @sql, N'@intCurrEarnAccClass Integer OUTPUT', @intCurrEarnAccClass out
--- cmdAccClass


SET @sql = ' SELECT @SQintLengthRevGL = intSeg1Length from  ' + @DBName + '.dbo.tblGLSegmentFormatSetup  '
exec sp_executesql @sql, N'@SQintLengthRevGL Integer OUTPUT', @SQintLengthRevGL out
--- cmdRevGLLength


SET @sql = ' SELECT  @decRevenue = ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM  ' + @DBName + '.dbo.tblJournalEntLY INNER JOIN  ' + @DBName + '.dbo.tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
WHERE (tblJournalLY.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) >= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendRev_GLNumberFrom)+''' 
AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) <= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendRev_GLNumberTo)+''' '
exec sp_executesql @sql, N'@decRevenue Integer OUTPUT', @decRevenue out
--- cmdRev


SET @sql = ' SELECT @decExpense = ISNULL(SUM(tblJournalEntLY.decAmount),0) FROM  ' + @DBName + '.dbo.tblJournalEntLY INNER JOIN  ' + @DBName + '.dbo.tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID 
WHERE (tblJournalLY.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) >= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendExp_GLNumberFrom)+''' 
AND SUBSTRING(tblJournalEntLY.intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) <= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendExp_GLNumberTo)+''' '  
exec sp_executesql @sql, N'@decExpense DECIMAL(18,4) OUTPUT', @decExpense out
--- cmdExp


SET @sql = ' SELECT @decOpenRevenue = ISNULL(SUM(decOpenBalance),0) FROM  ' + @DBName + '.dbo.tblAccountsLY 
WHERE SUBSTRING(intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) >= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendRev_GLNumberFrom)+''' 
AND SUBSTRING(intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) <= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendRev_GLNumberTo)+'''  ' 
exec sp_executesql @sql, N'@decOpenRevenue  DECIMAL(18,4) OUTPUT', @decOpenRevenue  out
--cmdRevOpen


SET @sql = ' SELECT @decOpenExpense = ISNULL(SUM(decOpenBalance),0) FROM  ' + @DBName + '.dbo.tblAccountsLY 
WHERE SUBSTRING(intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) >= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendExp_GLNumberFrom)+''' 
AND SUBSTRING(intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) <= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendExp_GLNumberTo)+'''  '
exec sp_executesql @sql, N'@decOpenExpense  DECIMAL(18,4) OUTPUT', @decOpenExpense  out
print'3'
---cmdExpOpen



select @intCurrEarnAcct as intCurrEarnAcct, @decRevenue as decRevenue,@decExpense as decExpense,ISNULL(@decOpenRevenue,0) as decOpenRevenue,ISNULL(@decOpenExpense,0) as decOpenExpense
END


ELSE IF @optHistoryYear_IsChecked = 1
BEGIN
SET @sql = ' SELECT @intCurrEarnAcct = intGLNumber FROM  ' + @DBName + '.dbo.tblAccountsHist WHERE bitLinkCEarnings = 1 AND uidYearID = '''+CONVERT(VARCHAR(200),@SQuidYearID)+'''  '
exec sp_executesql @sql, N'@intCurrEarnAcct NVARCHAR(200) OUTPUT', @intCurrEarnAcct out
--- cmdEarn
SET @sql = ' SELECT @intCurrEarnAccClass = intAccClass FROM  ' + @DBName + '.dbo.tblAccounts WHERE bitLinkCEarnings = 1  '
exec sp_executesql @sql, N'@intCurrEarnAccClass Integer OUTPUT', @intCurrEarnAccClass out
--- cmdAccClass
SET @sql = ' SELECT @SQintLengthRevGL = intSeg1Length from  ' + @DBName + '.dbo.tblGLSegmentFormatSetup'
exec sp_executesql @sql, N'@SQintLengthRevGL Integer OUTPUT', @SQintLengthRevGL out
--- cmdRevGLLength

SET @sql =' SELECT  @decRevenue = ISNULL(SUM(tblJournalEntHist.decAmount),0) FROM  ' + @DBName + '.dbo.tblJournalEntHist INNER JOIN  ' + @DBName + '.dbo.tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID 
AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblJournalEntHist.uidYearID = '''+CONVERT(VARCHAR(200),@SQuidYearID)+''') 
AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) >= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendRev_GLNumberFrom)+''' AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) <= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendRev_GLNumberTo)+''' ' 
exec sp_executesql @sql, N'@decRevenue Integer OUTPUT', @decRevenue out
--- cmdRev



SET @sql =' SELECT @decExpense = ISNULL(SUM(tblJournalEntHist.decAmount),0) FROM  ' + @DBName + '.dbo.tblJournalEntHist INNER JOIN  ' + @DBName + '.dbo.tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID 
AND tblJournalEntHist.uidYearID = tblJournalHist.uidYearID WHERE (tblJournalHist.dteJournalDate <= '''+CONVERT(VARCHAR(50),@SQAsAt)+''') AND (tblJournalEntHist.uidYearID = '''+CONVERT(VARCHAR(200),@SQuidYearID)+''') 
AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) >= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendExp_GLNumberFrom)+''' AND SUBSTRING(tblJournalEntHist.intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) <= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendExp_GLNumberTo)+''' ' 
exec sp_executesql @sql, N'@decExpense DECIMAL(18,4) OUTPUT', @decExpense out
--- cmdExp

SET @sql =' SELECT @decOpenRevenue = ISNULL(SUM(decOpenBalance),0) FROM  ' + @DBName + '.dbo.tblAccountsHist WHERE uidYearID = '''+CONVERT(VARCHAR(200),@SQuidYearID)+''' AND SUBSTRING(intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) >= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendRev_GLNumberFrom)+''' 
AND SUBSTRING(intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) <= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendRev_GLNumberTo)+''' '  
exec sp_executesql @sql, N'@decOpenRevenue  DECIMAL(18,4) OUTPUT', @decOpenRevenue  out
--cmdRevOpen

SET @sql =' SELECT @decOpenExpense = ISNULL(SUM(decOpenBalance),0) FROM  ' + @DBName + '.dbo.tblAccountsHist WHERE uidYearID = '''+CONVERT(VARCHAR(200),@SQuidYearID)+''' AND SUBSTRING(intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) >= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendExp_GLNumberFrom)+''' 
AND SUBSTRING(intGLNumber, 0, '''+CONVERT(VARCHAR(200),@SQintLengthRevGL)+''' + 1) <= '''+CONVERT(VARCHAR(200),@SQintoAccountLegendExp_GLNumberTo)+''' ' 
exec sp_executesql @sql, N'@decOpenExpense  DECIMAL(18,4) OUTPUT', @decOpenExpense  out
print'4'
---cmdExpOpen

select @intCurrEarnAcct as intCurrEarnAcct, @intCurrEarnAccClass as intCurrEarnAccClass, @decRevenue as decRevenue,@decExpense as decExpense,ISNULL(@decOpenRevenue,0) as decOpenRevenue,ISNULL(@decOpenExpense,0) as decOpenExpense
END

END
GO

CREATE PROCEDURE [dbo].[InsertDataOfUtilityTableForEvolution]
(@intChkNo as int = 0,
 @tblUtilityPervLedgerMasterDT as UtilityPervLedgerMasterTableType ReadOnly,
 @tblUtilityPervFinancialCatDT as UtilityPervFinancialCatTableType ReadOnly,
 @tblUtilityPervTaxParametersDT as UtilityPervTaxParaTableType ReadOnly,
 @tblUtilityPervTaxDescDT as UtilityPervTaxDescTableType ReadOnly,
 @tblUtilityPervCustMasterDT as UtilityPervCustMasterTableType ReadOnly,
 @tblUtilityPervCustCatDT as UtilityPervCustCatTableType ReadOnly,
 @tblUtilityPervDeliveryAddressesDT as UtilityPervDeliveryAddressesTableType ReadOnly,
 @tblUtilityPervSalesmanMasterDT as UtilityPervSalesmanMasterTableType ReadOnly,
 @tblUtilityPervSupplierMasterDT as UtilityPervSupplierMasterTableType ReadOnly,
 @tblUtilityPervSupplierCatDT as UtilityPervSupplierCategoriesTableType ReadOnly,
 @tblUtilityPervInventoryDT as tblUtilityPervInvTableType ReadOnly,
 @tblUtilityPervInventoryCategoryDT as UtilityPervInvCatTableType ReadOnly,
 @tblUtilityPervInventoryGroupsDT as UtilityPervInvGrpsTableType ReadOnly,
 @tblUtilityPervMultiStoreDT as UtilityPervMultiStoreTableType ReadOnly,
 @tblUtilityPervCurrencyFileDT as UtilityPervCurrencyFileTableType ReadOnly,
 @tblUtilityPervLedgerParaDT as UtilityPervLedgerParaTableType ReadOnly,
 @tblUtilityPervMultiStoreTrnDT as UtilityPervMultiStoreTrnTableType ReadOnly,
 @tblUtilityCashBookCurrencyDT as UtilityPervCashBookCurrencyTableType ReadOnly,
 @tblUtilityPervCostCodesDT as UtilityPervCostCodesTableType ReadOnly,
 @tblUtilityPervHistoryHeaderLinesDT as UtilityPervHistoryHeaderTableType ReadOnly,
 @tblUtilityPervHistoryLinesDT as UtilityPervHistoryLinesTableType ReadOnly,
 @tblUtilityPervLedgerTransDT as UtilityPervLedgerTransTableType ReadOnly,
 @tblUtilityPervOpenItemDT as UtilityPervOpenItemTableType ReadOnly
 )
as
BEGIN
if(@intChkNo =0) --IsLedgerMaster
   INSERT INTO tblUtilityPervLedgerMaster (
	FinancialCategory
	,AccNumber
	,AccDesc
	,ReportWriterCategory
	,LinkCode
	,GAAPFinCat
	,NumberSubAccs
	,BalanceThis01
	,BalanceThis02
	,BalanceThis03
	,BalanceThis04
	,BalanceThis05
	,BalanceThis06
	,BalanceThis07
	,BalanceThis08
	,BalanceThis09
	,BalanceThis10
	,BalanceThis11
	,BalanceThis12
	,BalanceThis13
	,BalanceLast01
	,BalanceLast02
	,BalanceLast03
	,BalanceLast04
	,BalanceLast05
	,BalanceLast06
	,BalanceLast07
	,BalanceLast08
	,BalanceLast09
	,BalanceLast10
	,BalanceLast11
	,BalanceLast12
	,BalanceLast13
	,BudgetThis01
	,BudgetThis02
	,BudgetThis03
	,BudgetThis04
	,BudgetThis05
	,BudgetThis06
	,BudgetThis07
	,BudgetThis08
	,BudgetThis09
	,BudgetThis10
	,BudgetThis11
	,BudgetThis12
	,BudgetThis13
	,BudgetNext01
	,BudgetNext02
	,BudgetNext03
	,BudgetNext04
	,BudgetNext05
	,BudgetNext06
	,BudgetNext07
	,BudgetNext08
	,BudgetNext09
	,BudgetNext10
	,BudgetNext11
	,BudgetNext12
	,BudgetNext13
	,BudgetLast01
	,BudgetLast02
	,BudgetLast03
	,BudgetLast04
	,BudgetLast05
	,BudgetLast06
	,BudgetLast07
	,BudgetLast08
	,BudgetLast09
	,BudgetLast10
	,BudgetLast11
	,BudgetLast12
	,BudgetLast13
	,Blocked
	,TaxType
	,DefaultTax
	 ,[ActiveAccount]
           ,[bIsBalanceSheet]
           ,[bIsDebit]
           ,[bitEvo]
           ,[Balance01]
           ,[Balance02]
           ,[Balance03]
           ,[Balance04]
           ,[Balance05]
           ,[Balance06]
           ,[Balance07]
           ,[Balance08]
           ,[Balance09]
           ,[Balance10]
           ,[Balance11]
           ,[Balance12]
           ,[Balance13]
           ,[Balance14]
           ,[Balance15]
           ,[Balance16]
           ,[Balance17]
           ,[Balance18]
           ,[Balance19]
           ,[Balance20]
           ,[Balance21]
           ,[Balance22]
           ,[Balance23]
           ,[Balance24]
           ,[Balance25]
           ,[Balance26]
           ,[Balance27]
           ,[Balance28]
           ,[Balance29]
           ,[Balance30]
           ,[Balance31]
           ,[Balance32]
           ,[Balance33]
           ,[Balance34]
           ,[Balance35]
           ,[Balance36]
           ,[Balance37]
           ,[Balance38]
           ,[Balance39]
           ,[Balance40]
           ,[Balance41]
           ,[Balance42]
           ,[Balance43]
           ,[Balance44]
           ,[Balance45]
           ,[Balance46]
           ,[Balance47]
           ,[Balance48]
           ,[Balance49]
           ,[Balance50]
           ,[Balance51]
           ,[Balance52]
           ,[Balance53]
           ,[Balance54]
           ,[Balance55]
           ,[Balance56]
           ,[Balance57]
           ,[Balance58]
           ,[Balance59]
           ,[Balance60]
           ,[Balance61]
           ,[Balance62]
           ,[Balance63]
           ,[Balance64]
           ,[Balance65]
           ,[Balance66]
           ,[Balance67]
           ,[Balance68]
           ,[Balance69]
           ,[Balance70]
           ,[Balance71]
           ,[Balance72]
           ,[Balance73]
           ,[Balance74]
           ,[Balance75]
           ,[Balance76]
           ,[Balance77]
           ,[Balance78]
           ,[Balance79]
           ,[Balance80]
           ,[Balance81]
           ,[Balance82]
           ,[Balance83]
           ,[Balance84]
           ,[Balance85]
           ,[Balance86]
           ,[Balance87]
           ,[Balance88]
           ,[Balance89]
           ,[Balance90]
           ,[Balance91]
           ,[Balance92]
           ,[Balance93]
           ,[Balance94]
           ,[Balance95]
           ,[Balance96]
           ,[Balance97]
           ,[Balance98]
           ,[Balance99]
           ,[ForBalance01]
           ,[ForBalance02]
           ,[ForBalance03]
           ,[ForBalance04]
           ,[ForBalance05]
           ,[ForBalance06]
           ,[ForBalance07]
           ,[ForBalance08]
           ,[ForBalance09]
           ,[ForBalance10]
           ,[ForBalance11]
           ,[ForBalance12]
           ,[ForBalance13]
           ,[ForBalance14]
           ,[ForBalance15]
           ,[ForBalance16]
           ,[ForBalance17]
           ,[ForBalance18]
           ,[ForBalance19]
           ,[ForBalance20]
           ,[ForBalance21]
           ,[ForBalance22]
           ,[ForBalance23]
           ,[ForBalance24]
           ,[ForBalance25]
           ,[ForBalance26]
           ,[ForBalance27]
           ,[ForBalance28]
           ,[ForBalance29]
           ,[ForBalance30]
           ,[ForBalance31]
           ,[ForBalance32]
           ,[ForBalance33]
           ,[ForBalance34]
           ,[ForBalance35]
           ,[ForBalance36]
           ,[ForBalance37]
           ,[ForBalance38]
           ,[ForBalance39]
           ,[ForBalance40]
           ,[ForBalance41]
           ,[ForBalance42]
           ,[ForBalance43]
           ,[ForBalance44]
           ,[ForBalance45]
           ,[ForBalance46]
           ,[ForBalance47]
           ,[ForBalance48]
           ,[ForBalance49]
           ,[ForBalance50]
           ,[ForBalance51]
           ,[ForBalance52]
           ,[ForBalance53]
           ,[ForBalance54]
           ,[ForBalance55]
           ,[ForBalance56]
           ,[ForBalance57]
           ,[ForBalance58]
           ,[ForBalance59]
           ,[ForBalance60]
           ,[ForBalance61]
           ,[ForBalance62]
           ,[ForBalance63]
           ,[ForBalance64]
           ,[ForBalance65]
           ,[ForBalance66]
           ,[ForBalance67]
           ,[ForBalance68]
           ,[ForBalance69]
           ,[ForBalance70]
           ,[ForBalance71]
           ,[ForBalance72]
           ,[ForBalance73]
           ,[ForBalance74]
           ,[ForBalance75]
           ,[ForBalance76]
           ,[ForBalance77]
           ,[ForBalance78]
           ,[ForBalance79]
           ,[ForBalance80]
           ,[ForBalance81]
           ,[ForBalance82]
           ,[ForBalance83]
           ,[ForBalance84]
           ,[ForBalance85]
           ,[ForBalance86]
           ,[ForBalance87]
           ,[ForBalance88]
           ,[ForBalance89]
           ,[ForBalance90]
           ,[ForBalance91]
           ,[ForBalance92]
           ,[ForBalance93]
           ,[ForBalance94]
           ,[ForBalance95]
           ,[ForBalance96]
           ,[ForBalance97]
           ,[ForBalance98]
           ,[ForBalance99]
	)
Select * from @tblUtilityPervLedgerMasterDT
else if(@intChkNo =1) --FinancialCategories
   INSERT INTO tblUtilityPervFinancialCategories ([FinCode]
           ,[FinDesc]
           ,[bIsBalanceSheet]
           ,[bIsDebit]
           ,[bitEvo]) Select * from @tblUtilityPervFinancialCatDT 
else if(@intChkNo =2)--TaxParameters
   INSERT INTO tblUtilityPervTaxParameters (
	[ID]
           ,[TaxControlAcc]
           ,[TaxProvisionAcc]
           ,[DefaultExclusive]
           ,[TaxPercent01]
           ,[TaxPercent02]
           ,[TaxPercent03]
           ,[TaxPercent04]
           ,[TaxPercent05]
           ,[TaxPercent06]
           ,[TaxPercent07]
           ,[TaxPercent08]
           ,[TaxPercent09]
           ,[TaxPercent10]
           ,[TaxPercent11]
           ,[TaxPercent12]
           ,[TaxPercent13]
           ,[TaxPercent14]
           ,[TaxPercent15]
           ,[TaxPercent16]
           ,[TaxPercent17]
           ,[TaxPercent18]
           ,[TaxPercent19]
           ,[TaxPercent20]
           ,[bitEvo]
           ,[TaxPercent21]
           ,[TaxPercent22]
           ,[TaxPercent23]
           ,[TaxPercent24]
           ,[TaxPercent25]
           ,[TaxPercent26]
           ,[TaxPercent27]
           ,[TaxPercent28]
           ,[TaxPercent29]
           ,[TaxPercent30]
           ,[TaxPercent31]
           ,[TaxPercent32]
           ,[TaxPercent33]
           ,[TaxPercent34]
           ,[TaxPercent35]
           ,[TaxPercent36]
           ,[TaxPercent37]
           ,[TaxPercent38]
           ,[TaxPercent39]
           ,[TaxPercent40]
	)
Select * from @tblUtilityPervTaxParametersDT 
else if(@intChkNo =3)--TaxDescription
   INSERT INTO tblUtilityPervTaxDescription (
	[TaxDesc01]
           ,[TaxDesc02]
           ,[TaxDesc03]
           ,[TaxDesc04]
           ,[TaxDesc05]
           ,[TaxDesc06]
           ,[TaxDesc07]
           ,[TaxDesc08]
           ,[TaxDesc09]
           ,[TaxDesc10]
           ,[TaxDesc11]
           ,[TaxDesc12]
           ,[TaxDesc13]
           ,[TaxDesc14]
           ,[TaxDesc15]
           ,[TaxDesc16]
           ,[TaxDesc17]
           ,[TaxDesc18]
           ,[TaxDesc19]
           ,[TaxDesc20]
           ,[bitEvo]
           ,[TaxDesc21]
           ,[TaxDesc22]
           ,[TaxDesc23]
           ,[TaxDesc24]
           ,[TaxDesc25]
           ,[TaxDesc26]
           ,[TaxDesc27]
           ,[TaxDesc28]
           ,[TaxDesc29]
           ,[TaxDesc30]
           ,[TaxDesc31]
           ,[TaxDesc32]
           ,[TaxDesc33]
           ,[TaxDesc34]
           ,[TaxDesc35]
           ,[TaxDesc36]
           ,[TaxDesc37]
           ,[TaxDesc38]
           ,[TaxDesc39]
           ,[TaxDesc40]
	)
Select * from @tblUtilityPervTaxDescDT 
else if(@intChkNo =4)--CustomerMaster
   INSERT INTO tblUtilityPervCustomerMaster (
	[Category]
           ,[CustomerCode]
           ,[CustomerDesc]
           ,[BalanceThis01]
           ,[BalanceThis02]
           ,[BalanceThis03]
           ,[BalanceThis04]
           ,[BalanceThis05]
           ,[BalanceThis06]
           ,[BalanceThis07]
           ,[BalanceThis08]
           ,[BalanceThis09]
           ,[BalanceThis10]
           ,[BalanceThis11]
           ,[BalanceThis12]
           ,[BalanceThis13]
           ,[BalanceLast01]
           ,[BalanceLast02]
           ,[BalanceLast03]
           ,[BalanceLast04]
           ,[BalanceLast05]
           ,[BalanceLast06]
           ,[BalanceLast07]
           ,[BalanceLast08]
           ,[BalanceLast09]
           ,[BalanceLast10]
           ,[BalanceLast11]
           ,[BalanceLast12]
           ,[BalanceLast13]
           ,[SalesThis01]
           ,[SalesThis02]
           ,[SalesThis03]
           ,[SalesThis04]
           ,[SalesThis05]
           ,[SalesThis06]
           ,[SalesThis07]
           ,[SalesThis08]
           ,[SalesThis09]
           ,[SalesThis10]
           ,[SalesThis11]
           ,[SalesThis12]
           ,[SalesThis13]
           ,[SalesLast01]
           ,[SalesLast02]
           ,[SalesLast03]
           ,[SalesLast04]
           ,[SalesLast05]
           ,[SalesLast06]
           ,[SalesLast07]
           ,[SalesLast08]
           ,[SalesLast09]
           ,[SalesLast10]
           ,[SalesLast11]
           ,[SalesLast12]
           ,[SalesLast13]
           ,[PostAddress01]
           ,[PostAddress02]
           ,[PostAddress03]
           ,[PostAddress04]
           ,[PostAddress05]
           ,[TaxCode]
           ,[ExemptRef]
           ,[SettlementTerms]
           ,[PaymentTerms]
           ,[Discount]
           ,[LastCrDate]
           ,[LastCrAmount]
           ,[Blocked]
           ,[OpenItem]
           ,[OverRideTax]
           ,[MonthOrDay]
           ,[IncExc]
           ,[CountryCode]
           ,[CurrencyCode]
           ,[CreditLimit]
           ,[InterestAfter]
           ,[PriceRegime]
           ,[UseAgedMessages]
           ,[CurrBalanceThis01]
           ,[CurrBalanceThis02]
           ,[CurrBalanceThis03]
           ,[CurrBalanceThis04]
           ,[CurrBalanceThis05]
           ,[CurrBalanceThis06]
           ,[CurrBalanceThis07]
           ,[CurrBalanceThis08]
           ,[CurrBalanceThis09]
           ,[CurrBalanceThis10]
           ,[CurrBalanceThis11]
           ,[CurrBalanceThis12]
           ,[CurrBalanceThis13]
           ,[CurrBalanceLast01]
           ,[CurrBalanceLast02]
           ,[CurrBalanceLast03]
           ,[CurrBalanceLast04]
           ,[CurrBalanceLast05]
           ,[CurrBalanceLast06]
           ,[CurrBalanceLast07]
           ,[CurrBalanceLast08]
           ,[CurrBalanceLast09]
           ,[CurrBalanceLast10]
           ,[CurrBalanceLast11]
           ,[CurrBalanceLast12]
           ,[CurrBalanceLast13]
           ,[UserDefined01]
           ,[UserDefined02]
           ,[UserDefined03]
           ,[UserDefined04]
           ,[UserDefined05]
           ,[Ageing01]
           ,[Ageing02]
           ,[Ageing03]
           ,[Ageing04]
           ,[Ageing05]
           ,[StatPrintorEmail]
           ,[DocPrintorEmail]
           ,[InterestPer]
           ,[Freight01]
           ,[Ship]
           ,[LinkWeb]
           ,[LoyaltyProg]
           ,[LCardNumber]
           ,[UpdatedOn]
           ,[CashAccount]
           ,[AcceptMail]
           ,[CreateDate]
           ,[On_Hold]
           ,[BFOpenType]
           ,[Credit_Limit]
           ,[PostPC]
           ,[Contact_Person]
           ,[Physical1]
           ,[Physical2]
           ,[Physical3]
           ,[Physical4]
           ,[Physical5]
           ,[PhysicalPC]
           ,[Addressee]
           ,[Telephone]
           ,[Telephone2]
           ,[Fax1]
           ,[Fax2]
           ,[TermsCode]
           ,[bitEvo]
           ,[Balance01]
           ,[Balance02]
           ,[Balance03]
           ,[Balance04]
           ,[Balance05]
           ,[Balance06]
           ,[Balance07]
           ,[Balance08]
           ,[Balance09]
           ,[Balance10]
           ,[Balance11]
           ,[Balance12]
           ,[Balance13]
           ,[Balance14]
           ,[Balance15]
           ,[Balance16]
           ,[Balance17]
           ,[Balance18]
           ,[Balance19]
           ,[Balance20]
           ,[Balance21]
           ,[Balance22]
           ,[Balance23]
           ,[Balance24]
           ,[Balance25]
           ,[Balance26]
           ,[Balance27]
           ,[Balance28]
           ,[Balance29]
           ,[Balance30]
           ,[Balance31]
           ,[Balance32]
           ,[Balance33]
           ,[Balance34]
           ,[Balance35]
           ,[Balance36]
           ,[Balance37]
           ,[Balance38]
           ,[Balance39]
           ,[Balance40]
           ,[Balance41]
           ,[Balance42]
           ,[Balance43]
           ,[Balance44]
           ,[Balance45]
           ,[Balance46]
           ,[Balance47]
           ,[Balance48]
           ,[Balance49]
           ,[Balance50]
           ,[Balance51]
           ,[Balance52]
           ,[Balance53]
           ,[Balance54]
           ,[Balance55]
           ,[Balance56]
           ,[Balance57]
           ,[Balance58]
           ,[Balance59]
           ,[Balance60]
           ,[Balance61]
           ,[Balance62]
           ,[Balance63]
           ,[Balance64]
           ,[Balance65]
           ,[Balance66]
           ,[Balance67]
           ,[Balance68]
           ,[Balance69]
           ,[Balance70]
           ,[Balance71]
           ,[Balance72]
           ,[Balance73]
           ,[Balance74]
           ,[Balance75]
           ,[Balance76]
           ,[Balance77]
           ,[Balance78]
           ,[Balance79]
           ,[Balance80]
           ,[Balance81]
           ,[Balance82]
           ,[Balance83]
           ,[Balance84]
           ,[Balance85]
           ,[Balance86]
           ,[Balance87]
           ,[Balance88]
           ,[Balance89]
           ,[Balance90]
           ,[Balance91]
           ,[Balance92]
           ,[Balance93]
           ,[Balance94]
           ,[Balance95]
           ,[Balance96]
           ,[Balance97]
           ,[Balance98]
           ,[Balance99]
	)
Select * from @tblUtilityPervCustMasterDT 
else if(@intChkNo =5)--CustomerCategories
   INSERT INTO tblUtilityPervCustomerCategories ([CCCode]
           ,[CCDesc]
           ,[bitEvo]) Select * from @tblUtilityPervCustCatDT 
else if(@intChkNo =6)--DeliveryAddresses
   INSERT INTO tblUtilityPervDeliveryAddresses (
	[CustomerCode]
           ,[CustDelivCode]
           ,[SalesmanCode]
           ,[Contact]
           ,[Telephone]
           ,[Cell]
           ,[Fax]
           ,[DelAddress01]
           ,[DelAddress02]
           ,[DelAddress03]
           ,[DelAddress04]
           ,[DelAddress05]
           ,[Email]
           ,[Spare]
           ,[bitEvo]
	)
Select * from @tblUtilityPervDeliveryAddressesDT 
else if(@intChkNo =7)--SalesmanMaster
   INSERT INTO tblUtilityPervSalesmanMaster (
	[Code]
           ,[Description]
           ,[ComMethod]
           ,[Spare]
           ,[Balance01]
           ,[Balance02]
           ,[Balance03]
           ,[Balance04]
           ,[Balance05]
           ,[Balance06]
           ,[Balance07]
           ,[Balance08]
           ,[Balance09]
           ,[Balance10]
           ,[Balance11]
           ,[Balance12]
           ,[Balance13]
           ,[LastBalance01]
           ,[LastBalance02]
           ,[LastBalance03]
           ,[LastBalance04]
           ,[LastBalance05]
           ,[LastBalance06]
           ,[LastBalance07]
           ,[LastBalance08]
           ,[LastBalance09]
           ,[LastBalance10]
           ,[LastBalance11]
           ,[LastBalance12]
           ,[LastBalance13]
           ,[GPBalance01]
           ,[GPBalance02]
           ,[GPBalance03]
           ,[GPBalance04]
           ,[GPBalance05]
           ,[GPBalance06]
           ,[GPBalance07]
           ,[GPBalance08]
           ,[GPBalance09]
           ,[GPBalance10]
           ,[GPBalance11]
           ,[GPBalance12]
           ,[GPBalance13]
           ,[GPLastBalance01]
           ,[GPLastBalance02]
           ,[GPLastBalance03]
           ,[GPLastBalance04]
           ,[GPLastBalance05]
           ,[GPLastBalance06]
           ,[GPLastBalance07]
           ,[GPLastBalance08]
           ,[GPLastBalance09]
           ,[GPLastBalance10]
           ,[GPLastBalance11]
           ,[GPLastBalance12]
           ,[GPLastBalance13]
           ,[TargetAmount01]
           ,[TargetAmount02]
           ,[TargetAmount03]
           ,[TargetAmount04]
           ,[TargetAmount05]
           ,[TargetPercentage01]
           ,[TargetPercentage02]
           ,[TargetPercentage03]
           ,[TargetPercentage04]
           ,[TargetPercentage05]
           ,[Blocked]
           ,[Picture]
           ,[Rep_On_Hold]
           ,[Address1]
           ,[Address2]
           ,[Address3]
           ,[Comment1]
           ,[Comment2]
           ,[bitEvo]
	)
Select * from @tblUtilityPervSalesmanMasterDT 
else if(@intChkNo =8)--SupplierMaster
   INSERT INTO tblUtilityPervSupplierMaster (
	[Category]
           ,[SupplCode]
           ,[SupplDesc]
           ,[BalanceThis01]
           ,[BalanceThis02]
           ,[BalanceThis03]
           ,[BalanceThis04]
           ,[BalanceThis05]
           ,[BalanceThis06]
           ,[BalanceThis07]
           ,[BalanceThis08]
           ,[BalanceThis09]
           ,[BalanceThis10]
           ,[BalanceThis11]
           ,[BalanceThis12]
           ,[BalanceThis13]
           ,[BalanceLast01]
           ,[BalanceLast02]
           ,[BalanceLast03]
           ,[BalanceLast04]
           ,[BalanceLast05]
           ,[BalanceLast06]
           ,[BalanceLast07]
           ,[BalanceLast08]
           ,[BalanceLast09]
           ,[BalanceLast10]
           ,[BalanceLast11]
           ,[BalanceLast12]
           ,[BalanceLast13]
           ,[SalesThis01]
           ,[SalesThis02]
           ,[SalesThis03]
           ,[SalesThis04]
           ,[SalesThis05]
           ,[SalesThis06]
           ,[SalesThis07]
           ,[SalesThis08]
           ,[SalesThis09]
           ,[SalesThis10]
           ,[SalesThis11]
           ,[SalesThis12]
           ,[SalesThis13]
           ,[SalesLast01]
           ,[SalesLast02]
           ,[SalesLast03]
           ,[SalesLast04]
           ,[SalesLast05]
           ,[SalesLast06]
           ,[SalesLast07]
           ,[SalesLast08]
           ,[SalesLast09]
           ,[SalesLast10]
           ,[SalesLast11]
           ,[SalesLast12]
           ,[SalesLast13]
           ,[PostAddress01]
           ,[PostAddress02]
           ,[PostAddress03]
           ,[PostAddress04]
           ,[PostAddress05]
           ,[TaxCode]
           ,[ExemptRef]
           ,[SettlementTerms]
           ,[PaymentTerms]
           ,[LastCrDate]
           ,[LastCrAmount]
           ,[Blocked]
           ,[OpenItem]
           ,[OverRideTax]
           ,[MonthOrDay]
           ,[IncExc]
           ,[CountryCode]
           ,[CurrencyCode]
           ,[CreditLimit]
           ,[Contact]
           ,[Telephone]
           ,[Cellphone]
           ,[Fax]
           ,[DelAddress01]
           ,[DelAddress02]
           ,[DelAddress03]
           ,[DelAddress04]
           ,[DelAddress05]
           ,[CurrBalanceThis01]
           ,[CurrBalanceThis02]
           ,[CurrBalanceThis03]
           ,[CurrBalanceThis04]
           ,[CurrBalanceThis05]
           ,[CurrBalanceThis06]
           ,[CurrBalanceThis07]
           ,[CurrBalanceThis08]
           ,[CurrBalanceThis09]
           ,[CurrBalanceThis10]
           ,[CurrBalanceThis11]
           ,[CurrBalanceThis12]
           ,[CurrBalanceThis13]
           ,[CurrBalanceLast01]
           ,[CurrBalanceLast02]
           ,[CurrBalanceLast03]
           ,[CurrBalanceLast04]
           ,[CurrBalanceLast05]
           ,[CurrBalanceLast06]
           ,[CurrBalanceLast07]
           ,[CurrBalanceLast08]
           ,[CurrBalanceLast09]
           ,[CurrBalanceLast10]
           ,[CurrBalanceLast11]
           ,[CurrBalanceLast12]
           ,[CurrBalanceLast13]
           ,[UserDefined01]
           ,[UserDefined02]
           ,[UserDefined03]
           ,[UserDefined04]
           ,[UserDefined05]
           ,[Ageing01]
           ,[Ageing02]
           ,[Ageing03]
           ,[Ageing04]
           ,[Ageing05]
           ,[Email]
           ,[StatPrintorEmail]
           ,[DocPrintorEmail]
           ,[Freight01]
           ,[Ship]
           ,[Link1099]
           ,[DefaultContraAccount]
           ,[UpdatedOn]
           ,[Spare]
           ,[CreateDate]
           ,[On_Hold]
           ,[BFOpenType]
           ,[Contact_Person]
           ,[PostPC]
           ,[Physical1]
           ,[Physical2]
           ,[Physical3]
           ,[Physical4]
           ,[Physical5]
           ,[PhysicalPC]
           ,[Addressee]
           ,[Fax2]
           ,[Tax_Number]
           ,[Registration]
           ,[TermsCode]
           ,[bitEvo]
           ,[Balance01]
           ,[Balance02]
           ,[Balance03]
           ,[Balance04]
           ,[Balance05]
           ,[Balance06]
           ,[Balance07]
           ,[Balance08]
           ,[Balance09]
           ,[Balance10]
           ,[Balance11]
           ,[Balance12]
           ,[Balance13]
           ,[Balance14]
           ,[Balance15]
           ,[Balance16]
           ,[Balance17]
           ,[Balance18]
           ,[Balance19]
           ,[Balance20]
           ,[Balance21]
           ,[Balance22]
           ,[Balance23]
           ,[Balance24]
           ,[Balance25]
           ,[Balance26]
           ,[Balance27]
           ,[Balance28]
           ,[Balance29]
           ,[Balance30]
           ,[Balance31]
           ,[Balance32]
           ,[Balance33]
           ,[Balance34]
           ,[Balance35]
           ,[Balance36]
           ,[Balance37]
           ,[Balance38]
           ,[Balance39]
           ,[Balance40]
           ,[Balance41]
           ,[Balance42]
           ,[Balance43]
           ,[Balance44]
           ,[Balance45]
           ,[Balance46]
           ,[Balance47]
           ,[Balance48]
           ,[Balance49]
           ,[Balance50]
           ,[Balance51]
           ,[Balance52]
           ,[Balance53]
           ,[Balance54]
           ,[Balance55]
           ,[Balance56]
           ,[Balance57]
           ,[Balance58]
           ,[Balance59]
           ,[Balance60]
           ,[Balance61]
           ,[Balance62]
           ,[Balance63]
           ,[Balance64]
           ,[Balance65]
           ,[Balance66]
           ,[Balance67]
           ,[Balance68]
           ,[Balance69]
           ,[Balance70]
           ,[Balance71]
           ,[Balance72]
           ,[Balance73]
           ,[Balance74]
           ,[Balance75]
           ,[Balance76]
           ,[Balance77]
           ,[Balance78]
           ,[Balance79]
           ,[Balance80]
           ,[Balance81]
           ,[Balance82]
           ,[Balance83]
           ,[Balance84]
           ,[Balance85]
           ,[Balance86]
           ,[Balance87]
           ,[Balance88]
           ,[Balance89]
           ,[Balance90]
           ,[Balance91]
           ,[Balance92]
           ,[Balance93]
           ,[Balance94]
           ,[Balance95]
           ,[Balance96]
           ,[Balance97]
           ,[Balance98]
           ,[Balance99]
	)
Select * from @tblUtilityPervSupplierMasterDT 
else if(@intChkNo =9)--SupplierCategories
   INSERT INTO tblUtilityPervSupplierCategories ([SCCode]
           ,[SCDesc]
           ,[bitEvo]) Select * from @tblUtilityPervSupplierCatDT 
else if(@intChkNo =10)--Inventory
   INSERT INTO tblUtilityPervInventory (
	[Category]
           ,[ItemCode]
           ,[Description]
           ,[Barcode]
           ,[DiscountType]
           ,[Blocked]
           ,[Fixed]
           ,[ShowQty]
           ,[Physical]
           ,[UnitSize]
           ,[SalesTaxType]
           ,[PurchTaxType]
           ,[GLCode]
           ,[AllowTax]
           ,[LinkWeb]
           ,[SalesCommision]
           ,[SerialItem]
           ,[Picture]
           ,[UserDefText01]
           ,[UserDefText02]
           ,[UserDefText03]
           ,[UserDefNum01]
           ,[UserDefNum02]
           ,[UserDefNum03]
           ,[CommodityCode]
           ,[NettMass]
           ,[UpdatedOn]
           ,[cSimpleCode]
           ,[WhseItem]
           ,[Seg1Val]
           ,[Seg1Desc]
           ,[Seg2Val]
           ,[Seg2Desc]
           ,[Seg3Val]
           ,[Seg3Desc]
           ,[Seg4Val]
           ,[Seg4Desc]
           ,[Seg5Val]
           ,[Seg5Desc]
           ,[Seg6Val]
           ,[Seg6Desc]
           ,[Seg7Val]
           ,[Seg7Desc]
           ,[cEachDescription]
           ,[cMeasurement]
           ,[fBuyLength]
           ,[fBuyWidth]
           ,[fBuyHeight]
           ,[fBuyArea]
           ,[fBuyVolume]
           ,[cBuyWeight]
           ,[cBuyUnit]
           ,[fSellLength]
           ,[fSellWidth]
           ,[fSellHeight]
           ,[fSellArea]
           ,[fSellVolume]
           ,[cSellWeight]
           ,[cSellUnit]
           ,[bitEvo]
		   
	)
Select * from @tblUtilityPervInventoryDT 
else if(@intChkNo =11)--InventoryCategory
   INSERT INTO tblUtilityPervInventoryCategory ([ICCode]
           ,[ICDesc]
           ,[bitEvo]) Select * from @tblUtilityPervInventoryCategoryDT 
else if(@intChkNo =12)--InventoryGroups
   INSERT INTO tblUtilityPervInventoryGroups (
	[InvGroup]
           ,[Description]
           ,[SalesAcc]
           ,[PurchAcc]
           ,[COSAcc]
           ,[Adjustment]
           ,[StockCtl]
           ,[Variance]
           ,[PurchVariance]
           ,[SalesTaxType]
           ,[PurchTaxType]
           ,[StockCostVarianceAcc]
           ,[bitEvo]
	)
Select * from @tblUtilityPervInventoryGroupsDT 
else if(@intChkNo =13)--MultiStore
   INSERT INTO tblUtilityPervMultiStore (
	[StoreCode]
           ,[Description]
           ,[Blocked]
           ,[DefaultStore]
           ,[PostalAddress01]
           ,[PostalAddress02]
           ,[PostalAddress03]
           ,[PostalAddress04]
           ,[PostalAddress05]
           ,[PhysicalAddress01]
           ,[PhysicalAddress02]
           ,[PhysicalAddress03]
           ,[PhysicalAddress04]
           ,[PhysicalAddress05]
           ,[Contact]
           ,[Telephone]
           ,[Fax]
           ,[Cellphone]
           ,[Email]
           ,[bitEvo]
	)
Select * from @tblUtilityPervMultiStoreDT 
else if(@intChkNo =14)--CurrencyFile
   INSERT INTO tblUtilityPervCurrencyFile (
	[CurrCode]
           ,[CurrDesc]
           ,[RateThis01]
           ,[RateThis02]
           ,[RateThis03]
           ,[RateThis04]
           ,[RateThis05]
           ,[RateThis06]
           ,[RateThis07]
           ,[RateThis08]
           ,[RateThis09]
           ,[RateThis10]
           ,[RateThis11]
           ,[RateThis12]
           ,[RateThis13]
           ,[RateLast01]
           ,[RateLast02]
           ,[RateLast03]
           ,[RateLast04]
           ,[RateLast05]
           ,[RateLast06]
           ,[RateLast07]
           ,[RateLast08]
           ,[RateLast09]
           ,[RateLast10]
           ,[RateLast11]
           ,[RateLast12]
           ,[RateLast13]
           ,[VarianceAccount]
           ,[VariancePercentage]
           ,[FieldFormat]
           ,[EUcode]
           ,[EntryMethod]
           ,[bitEvo]
	)
Select * from @tblUtilityPervCurrencyFileDT 
else if(@intChkNo =15)--LedgerParameters
   INSERT INTO tblUtilityPervLedgerParameters (
	[LastProfitLossAmt]
           ,[SalesAcc]
           ,[PurchAcc]
           ,[PerStartThis01]
           ,[PerStartLast01]
           ,[PerEndThis12]
           ,[PerEndLast12]
           ,[YearStart01]
           ,[YearEnd01]
           ,[YearStart02]
           ,[YearEnd02]
           ,[YearStart03]
           ,[YearEnd03]
           ,[YearStart04]
           ,[YearEnd04]
           ,[YearStart05]
           ,[YearEnd05]
           ,[YearStart06]
           ,[YearEnd06]
           ,[YearStart07]
           ,[YearEnd07]
           ,[YearStart08]
           ,[YearEnd08]
           ,[YearStart09]
           ,[YearEnd09]
           ,[YearStart10]
           ,[YearEnd10]
           ,[YearStart11]
           ,[YearEnd11]
           ,[YearStart12]
           ,[YearEnd12]
           ,[YearStart13]
           ,[YearEnd13]
           ,[YearStart14]
           ,[YearEnd14]
           ,[YearStart15]
           ,[YearEnd15]
           ,[YearStart16]
           ,[YearEnd16]
           ,[YearStart17]
           ,[YearEnd17]
           ,[YearStart18]
           ,[YearEnd18]
           ,[YearStart19]
           ,[YearEnd19]
           ,[YearStart20]
           ,[YearEnd20]
           ,[bitEvo]
	)
Select * from @tblUtilityPervLedgerParaDT 
else if(@intChkNo =16)--MultiStoreTrn
   INSERT INTO tblUtilityPervMultiStoreTrn (
	[StoreCode]
           ,[InvGroup]
           ,[ItemCode]
           ,[Bin]
           ,[LastInvDate]
           ,[LastPurchDate]
           ,[LastPurchAmt]
           ,[ReorderLevel]
           ,[MaximumLevel]
           ,[OpeningQty]
           ,[ActualQty]
           ,[SellExcl01]
           ,[SellExcl02]
           ,[SellExcl03]
           ,[SellExcl04]
           ,[SellExcl05]
           ,[SellExcl06]
           ,[SellExcl07]
           ,[SellExcl08]
           ,[SellExcl09]
           ,[SellExcl10]
           ,[SellIncl01]
           ,[SellIncl02]
           ,[SellIncl03]
           ,[SellIncl04]
           ,[SellIncl05]
           ,[SellIncl06]
           ,[SellIncl07]
           ,[SellIncl08]
           ,[SellIncl09]
           ,[SellIncl10]
           ,[SpecialPriceExcl]
           ,[SpecialPriceIncl]
           ,[SpecialStartDate]
           ,[SpecailEndDate]
           ,[NewExcl01]
           ,[NewExcl02]
           ,[NewExcl03]
           ,[NewExcl04]
           ,[NewExcl05]
           ,[NewExcl06]
           ,[NewExcl07]
           ,[NewExcl08]
           ,[NewExcl09]
           ,[NewExcl10]
           ,[NewIncl01]
           ,[NewIncl02]
           ,[NewIncl03]
           ,[NewIncl04]
           ,[NewIncl05]
           ,[NewIncl06]
           ,[NewIncl07]
           ,[NewIncl08]
           ,[NewIncl09]
           ,[NewIncl10]
           ,[CostThis01]
           ,[CostThis02]
           ,[CostThis03]
           ,[CostThis04]
           ,[CostThis05]
           ,[CostThis06]
           ,[CostThis07]
           ,[CostThis08]
           ,[CostThis09]
           ,[CostThis10]
           ,[CostThis11]
           ,[CostThis12]
           ,[CostThis13]
           ,[QtyBuyThis01]
           ,[QtyBuyThis02]
           ,[QtyBuyThis03]
           ,[QtyBuyThis04]
           ,[QtyBuyThis05]
           ,[QtyBuyThis06]
           ,[QtyBuyThis07]
           ,[QtyBuyThis08]
           ,[QtyBuyThis09]
           ,[QtyBuyThis10]
           ,[QtyBuyThis11]
           ,[QtyBuyThis12]
           ,[QtyBuyThis13]
           ,[QtyAdjustThis01]
           ,[QtyAdjustThis02]
           ,[QtyAdjustThis03]
           ,[QtyAdjustThis04]
           ,[QtyAdjustThis05]
           ,[QtyAdjustThis06]
           ,[QtyAdjustThis07]
           ,[QtyAdjustThis08]
           ,[QtyAdjustThis09]
           ,[QtyAdjustThis10]
           ,[QtyAdjustThis11]
           ,[QtyAdjustThis12]
           ,[QtyAdjustThis13]
           ,[QtySellThis01]
           ,[QtySellThis02]
           ,[QtySellThis03]
           ,[QtySellThis04]
           ,[QtySellThis05]
           ,[QtySellThis06]
           ,[QtySellThis07]
           ,[QtySellThis08]
           ,[QtySellThis09]
           ,[QtySellThis10]
           ,[QtySellThis11]
           ,[QtySellThis12]
           ,[QtySellThis13]
           ,[AmtSellThis01]
           ,[AmtSellThis02]
           ,[AmtSellThis03]
           ,[AmtSellThis04]
           ,[AmtSellThis05]
           ,[AmtSellThis06]
           ,[AmtSellThis07]
           ,[AmtSellThis08]
           ,[AmtSellThis09]
           ,[AmtSellThis10]
           ,[AmtSellThis11]
           ,[AmtSellThis12]
           ,[AmtSellThis13]
           ,[CostLast]
           ,[QtyBuyLast]
           ,[QtyAdjustLast]
           ,[QtySellLast]
           ,[AmtSellLast]
           ,[QtyBuyThis14]
           ,[QtyBuyThis15]
           ,[QtyBuyThis16]
           ,[QtyBuyThis17]
           ,[QtyBuyThis18]
           ,[QtyBuyThis19]
           ,[QtyBuyThis20]
           ,[QtyBuyThis21]
           ,[QtyBuyThis22]
           ,[QtyBuyThis23]
           ,[QtyBuyThis24]
           ,[QtyBuyThis25]
           ,[QtyBuyThis26]
           ,[QtyBuyThis27]
           ,[QtyBuyThis28]
           ,[QtyBuyThis29]
           ,[QtyBuyThis30]
           ,[QtyBuyThis31]
           ,[QtyBuyThis32]
           ,[QtyBuyThis33]
           ,[QtyBuyThis34]
           ,[QtyBuyThis35]
           ,[QtyBuyThis36]
           ,[QtyBuyThis37]
           ,[QtyBuyThis38]
           ,[QtyBuyThis39]
           ,[QtyBuyThis40]
           ,[QtyBuyThis41]
           ,[QtyBuyThis42]
           ,[QtyBuyThis43]
           ,[QtyBuyThis44]
           ,[QtyBuyThis45]
           ,[QtyBuyThis46]
           ,[QtyBuyThis47]
           ,[QtyBuyThis48]
           ,[QtyBuyThis49]
           ,[QtyBuyThis50]
           ,[QtyBuyThis51]
           ,[QtyBuyThis52]
           ,[QtyBuyThis53]
           ,[QtyBuyThis54]
           ,[QtyBuyThis55]
           ,[QtyBuyThis56]
           ,[QtyBuyThis57]
           ,[QtyBuyThis58]
           ,[QtyBuyThis59]
           ,[QtyBuyThis60]
           ,[QtyBuyThis61]
           ,[QtyBuyThis62]
           ,[QtyBuyThis63]
           ,[QtyBuyThis64]
           ,[QtyBuyThis65]
           ,[QtyBuyThis66]
           ,[QtyBuyThis67]
           ,[QtyBuyThis68]
           ,[QtyBuyThis69]
           ,[QtyBuyThis70]
           ,[QtyBuyThis71]
           ,[QtyBuyThis72]
           ,[QtyBuyThis73]
           ,[QtyBuyThis74]
           ,[QtyBuyThis75]
           ,[QtyBuyThis76]
           ,[QtyBuyThis77]
           ,[QtyBuyThis78]
           ,[QtyBuyThis79]
           ,[QtyBuyThis80]
           ,[QtyBuyThis81]
           ,[QtyBuyThis82]
           ,[QtyBuyThis83]
           ,[QtyBuyThis84]
           ,[QtyBuyThis85]
           ,[QtyBuyThis86]
           ,[QtyBuyThis87]
           ,[QtyBuyThis88]
           ,[QtyBuyThis89]
           ,[QtyBuyThis90]
           ,[QtyBuyThis91]
           ,[QtyBuyThis92]
           ,[QtyBuyThis93]
           ,[QtyBuyThis94]
           ,[QtyBuyThis95]
           ,[QtyBuyThis96]
           ,[QtyBuyThis97]
           ,[QtyBuyThis98]
           ,[QtyBuyThis99]
           ,[QtyAdjustThis14]
           ,[QtyAdjustThis15]
           ,[QtyAdjustThis16]
           ,[QtyAdjustThis17]
           ,[QtyAdjustThis18]
           ,[QtyAdjustThis19]
           ,[QtyAdjustThis20]
           ,[QtyAdjustThis21]
           ,[QtyAdjustThis22]
           ,[QtyAdjustThis23]
           ,[QtyAdjustThis24]
           ,[QtyAdjustThis25]
           ,[QtyAdjustThis26]
           ,[QtyAdjustThis27]
           ,[QtyAdjustThis28]
           ,[QtyAdjustThis29]
           ,[QtyAdjustThis30]
           ,[QtyAdjustThis31]
           ,[QtyAdjustThis32]
           ,[QtyAdjustThis33]
           ,[QtyAdjustThis34]
           ,[QtyAdjustThis35]
           ,[QtyAdjustThis36]
           ,[QtyAdjustThis37]
           ,[QtyAdjustThis38]
           ,[QtyAdjustThis39]
           ,[QtyAdjustThis40]
           ,[QtyAdjustThis41]
           ,[QtyAdjustThis42]
           ,[QtyAdjustThis43]
           ,[QtyAdjustThis44]
           ,[QtyAdjustThis45]
           ,[QtyAdjustThis46]
           ,[QtyAdjustThis47]
           ,[QtyAdjustThis48]
           ,[QtyAdjustThis49]
           ,[QtyAdjustThis50]
           ,[QtyAdjustThis51]
           ,[QtyAdjustThis52]
           ,[QtyAdjustThis53]
           ,[QtyAdjustThis54]
           ,[QtyAdjustThis55]
           ,[QtyAdjustThis56]
           ,[QtyAdjustThis57]
           ,[QtyAdjustThis58]
           ,[QtyAdjustThis59]
           ,[QtyAdjustThis60]
           ,[QtyAdjustThis61]
           ,[QtyAdjustThis62]
           ,[QtyAdjustThis63]
           ,[QtyAdjustThis64]
           ,[QtyAdjustThis65]
           ,[QtyAdjustThis66]
           ,[QtyAdjustThis67]
           ,[QtyAdjustThis68]
           ,[QtyAdjustThis69]
           ,[QtyAdjustThis70]
           ,[QtyAdjustThis71]
           ,[QtyAdjustThis72]
           ,[QtyAdjustThis73]
           ,[QtyAdjustThis74]
           ,[QtyAdjustThis75]
           ,[QtyAdjustThis76]
           ,[QtyAdjustThis77]
           ,[QtyAdjustThis78]
           ,[QtyAdjustThis79]
           ,[QtyAdjustThis80]
           ,[QtyAdjustThis81]
           ,[QtyAdjustThis82]
           ,[QtyAdjustThis83]
           ,[QtyAdjustThis84]
           ,[QtyAdjustThis85]
           ,[QtyAdjustThis86]
           ,[QtyAdjustThis87]
           ,[QtyAdjustThis88]
           ,[QtyAdjustThis89]
           ,[QtyAdjustThis90]
           ,[QtyAdjustThis91]
           ,[QtyAdjustThis92]
           ,[QtyAdjustThis93]
           ,[QtyAdjustThis94]
           ,[QtyAdjustThis95]
           ,[QtyAdjustThis96]
           ,[QtyAdjustThis97]
           ,[QtyAdjustThis98]
           ,[QtyAdjustThis99]
           ,[QtySellThis14]
           ,[QtySellThis15]
           ,[QtySellThis16]
           ,[QtySellThis17]
           ,[QtySellThis18]
           ,[QtySellThis19]
           ,[QtySellThis20]
           ,[QtySellThis21]
           ,[QtySellThis22]
           ,[QtySellThis23]
           ,[QtySellThis24]
           ,[QtySellThis25]
           ,[QtySellThis26]
           ,[QtySellThis27]
           ,[QtySellThis28]
           ,[QtySellThis29]
           ,[QtySellThis30]
           ,[QtySellThis31]
           ,[QtySellThis32]
           ,[QtySellThis33]
           ,[QtySellThis34]
           ,[QtySellThis35]
           ,[QtySellThis36]
           ,[QtySellThis37]
           ,[QtySellThis38]
           ,[QtySellThis39]
           ,[QtySellThis40]
           ,[QtySellThis41]
           ,[QtySellThis42]
           ,[QtySellThis43]
           ,[QtySellThis44]
           ,[QtySellThis45]
           ,[QtySellThis46]
           ,[QtySellThis47]
           ,[QtySellThis48]
           ,[QtySellThis49]
           ,[QtySellThis50]
           ,[QtySellThis51]
           ,[QtySellThis52]
           ,[QtySellThis53]
           ,[QtySellThis54]
           ,[QtySellThis55]
           ,[QtySellThis56]
           ,[QtySellThis57]
           ,[QtySellThis58]
           ,[QtySellThis59]
           ,[QtySellThis60]
           ,[QtySellThis61]
           ,[QtySellThis62]
           ,[QtySellThis63]
           ,[QtySellThis64]
           ,[QtySellThis65]
           ,[QtySellThis66]
           ,[QtySellThis67]
           ,[QtySellThis68]
           ,[QtySellThis69]
           ,[QtySellThis70]
           ,[QtySellThis71]
           ,[QtySellThis72]
           ,[QtySellThis73]
           ,[QtySellThis74]
           ,[QtySellThis75]
           ,[QtySellThis76]
           ,[QtySellThis77]
           ,[QtySellThis78]
           ,[QtySellThis79]
           ,[QtySellThis80]
           ,[QtySellThis81]
           ,[QtySellThis82]
           ,[QtySellThis83]
           ,[QtySellThis84]
           ,[QtySellThis85]
           ,[QtySellThis86]
           ,[QtySellThis87]
           ,[QtySellThis88]
           ,[QtySellThis89]
           ,[QtySellThis90]
           ,[QtySellThis91]
           ,[QtySellThis92]
           ,[QtySellThis93]
           ,[QtySellThis94]
           ,[QtySellThis95]
           ,[QtySellThis96]
           ,[QtySellThis97]
           ,[QtySellThis98]
           ,[QtySellThis99]
           ,[bitEvo]
           ,[QtyBuyThis100]
           ,[QtyBuyThis101]
           ,[QtyBuyThis102]
           ,[QtyBuyThis103]
           ,[QtyBuyThis104]
           ,[QtyBuyThis105]
           ,[QtyBuyThis106]
           ,[QtyBuyThis107]
           ,[QtyBuyThis108]
           ,[QtyBuyThis109]
           ,[QtyBuyThis110]
           ,[QtyBuyThis111]
           ,[QtyBuyThis112]
           ,[QtyBuyThis113]
           ,[QtyBuyThis114]
           ,[QtyBuyThis115]
           ,[QtyBuyThis116]
           ,[QtyBuyThis117]
           ,[QtyBuyThis118]
           ,[QtyBuyThis119]
           ,[QtyBuyThis120]
           ,[QtyBuyThis121]
           ,[QtyBuyThis122]
           ,[QtyBuyThis123]
           ,[QtyBuyThis124]
           ,[QtyBuyThis125]
           ,[QtyBuyThis126]
           ,[QtyBuyThis127]
           ,[QtyBuyThis128]
           ,[QtyBuyThis129]
           ,[QtyBuyThis130]
           ,[QtyBuyThis131]
           ,[QtyBuyThis132]
           ,[QtyBuyThis133]
           ,[QtyBuyThis134]
           ,[QtyBuyThis135]
           ,[QtyBuyThis136]
           ,[QtyBuyThis137]
           ,[QtyBuyThis138]
           ,[QtyBuyThis139]
           ,[QtyBuyThis140]
           ,[QtyBuyThis141]
           ,[QtyBuyThis142]
           ,[QtyBuyThis143]
           ,[QtyBuyThis144]
           ,[QtyBuyThis145]
           ,[QtyBuyThis146]
           ,[QtyBuyThis147]
           ,[QtyBuyThis148]
           ,[QtyBuyThis149]
           ,[QtyBuyThis150]
           ,[QtyBuyThis151]
           ,[QtyBuyThis152]
           ,[QtyBuyThis153]
           ,[QtyBuyThis154]
           ,[QtyBuyThis155]
           ,[QtyBuyThis156]
           ,[QtyBuyThis157]
           ,[QtyBuyThis158]
           ,[QtyBuyThis159]
           ,[QtyBuyThis160]
           ,[QtyBuyThis161]
           ,[QtyBuyThis162]
           ,[QtyBuyThis163]
           ,[QtyBuyThis164]
           ,[QtyBuyThis165]
           ,[QtyBuyThis166]
           ,[QtyBuyThis167]
           ,[QtyBuyThis168]
           ,[QtyBuyThis169]
           ,[QtyBuyThis170]
           ,[QtyBuyThis171]
           ,[QtyBuyThis172]
           ,[QtyBuyThis173]
           ,[QtyBuyThis174]
           ,[QtyBuyThis175]
           ,[QtyBuyThis176]
           ,[QtyBuyThis177]
           ,[QtyBuyThis178]
           ,[QtyBuyThis179]
           ,[QtyBuyThis180]
           ,[QtyBuyThis181]
           ,[QtyBuyThis182]
           ,[QtyBuyThis183]
           ,[QtyBuyThis184]
           ,[QtyBuyThis185]
           ,[QtyBuyThis186]
           ,[QtyBuyThis187]
           ,[QtyBuyThis188]
           ,[QtyBuyThis189]
           ,[QtyBuyThis190]
           ,[QtyBuyThis191]
           ,[QtyBuyThis192]
           ,[QtyBuyThis193]
           ,[QtyBuyThis194]
           ,[QtyBuyThis195]
           ,[QtyBuyThis196]
           ,[QtyBuyThis197]
           ,[QtyBuyThis198]
           ,[QtyBuyThis199]
           ,[QtyBuyThis200]
           ,[QtyAdjustThis100]
           ,[QtyAdjustThis101]
           ,[QtyAdjustThis102]
           ,[QtyAdjustThis103]
           ,[QtyAdjustThis104]
           ,[QtyAdjustThis105]
           ,[QtyAdjustThis106]
           ,[QtyAdjustThis107]
           ,[QtyAdjustThis108]
           ,[QtyAdjustThis109]
           ,[QtyAdjustThis110]
           ,[QtyAdjustThis111]
           ,[QtyAdjustThis112]
           ,[QtyAdjustThis113]
           ,[QtyAdjustThis114]
           ,[QtyAdjustThis115]
           ,[QtyAdjustThis116]
           ,[QtyAdjustThis117]
           ,[QtyAdjustThis118]
           ,[QtyAdjustThis119]
           ,[QtyAdjustThis120]
           ,[QtyAdjustThis121]
           ,[QtyAdjustThis122]
           ,[QtyAdjustThis123]
           ,[QtyAdjustThis124]
           ,[QtyAdjustThis125]
           ,[QtyAdjustThis126]
           ,[QtyAdjustThis127]
           ,[QtyAdjustThis128]
           ,[QtyAdjustThis129]
           ,[QtyAdjustThis130]
           ,[QtyAdjustThis131]
           ,[QtyAdjustThis132]
           ,[QtyAdjustThis133]
           ,[QtyAdjustThis134]
           ,[QtyAdjustThis135]
           ,[QtyAdjustThis136]
           ,[QtyAdjustThis137]
           ,[QtyAdjustThis138]
           ,[QtyAdjustThis139]
           ,[QtyAdjustThis140]
           ,[QtyAdjustThis141]
           ,[QtyAdjustThis142]
           ,[QtyAdjustThis143]
           ,[QtyAdjustThis144]
           ,[QtyAdjustThis145]
           ,[QtyAdjustThis146]
           ,[QtyAdjustThis147]
           ,[QtyAdjustThis148]
           ,[QtyAdjustThis149]
           ,[QtyAdjustThis150]
           ,[QtyAdjustThis151]
           ,[QtyAdjustThis152]
           ,[QtyAdjustThis153]
           ,[QtyAdjustThis154]
           ,[QtyAdjustThis155]
           ,[QtyAdjustThis156]
           ,[QtyAdjustThis157]
           ,[QtyAdjustThis158]
           ,[QtyAdjustThis159]
           ,[QtyAdjustThis160]
           ,[QtyAdjustThis161]
           ,[QtyAdjustThis162]
           ,[QtyAdjustThis163]
           ,[QtyAdjustThis164]
           ,[QtyAdjustThis165]
           ,[QtyAdjustThis166]
           ,[QtyAdjustThis167]
           ,[QtyAdjustThis168]
           ,[QtyAdjustThis169]
           ,[QtyAdjustThis170]
           ,[QtyAdjustThis171]
           ,[QtyAdjustThis172]
           ,[QtyAdjustThis173]
           ,[QtyAdjustThis174]
           ,[QtyAdjustThis175]
           ,[QtyAdjustThis176]
           ,[QtyAdjustThis177]
           ,[QtyAdjustThis178]
           ,[QtyAdjustThis179]
           ,[QtyAdjustThis180]
           ,[QtyAdjustThis181]
           ,[QtyAdjustThis182]
           ,[QtyAdjustThis183]
           ,[QtyAdjustThis184]
           ,[QtyAdjustThis185]
           ,[QtyAdjustThis186]
           ,[QtyAdjustThis187]
           ,[QtyAdjustThis188]
           ,[QtyAdjustThis189]
           ,[QtyAdjustThis190]
           ,[QtyAdjustThis191]
           ,[QtyAdjustThis192]
           ,[QtyAdjustThis193]
           ,[QtyAdjustThis194]
           ,[QtyAdjustThis195]
           ,[QtyAdjustThis196]
           ,[QtyAdjustThis197]
           ,[QtyAdjustThis198]
           ,[QtyAdjustThis199]
           ,[QtyAdjustThis200]
           ,[QtySellThis100]
           ,[QtySellThis101]
           ,[QtySellThis102]
           ,[QtySellThis103]
           ,[QtySellThis104]
           ,[QtySellThis105]
           ,[QtySellThis106]
           ,[QtySellThis107]
           ,[QtySellThis108]
           ,[QtySellThis109]
           ,[QtySellThis110]
           ,[QtySellThis111]
           ,[QtySellThis112]
           ,[QtySellThis113]
           ,[QtySellThis114]
           ,[QtySellThis115]
           ,[QtySellThis116]
           ,[QtySellThis117]
           ,[QtySellThis118]
           ,[QtySellThis119]
           ,[QtySellThis120]
           ,[QtySellThis121]
           ,[QtySellThis122]
           ,[QtySellThis123]
           ,[QtySellThis124]
           ,[QtySellThis125]
           ,[QtySellThis126]
           ,[QtySellThis127]
           ,[QtySellThis128]
           ,[QtySellThis129]
           ,[QtySellThis130]
           ,[QtySellThis131]
           ,[QtySellThis132]
           ,[QtySellThis133]
           ,[QtySellThis134]
           ,[QtySellThis135]
           ,[QtySellThis136]
           ,[QtySellThis137]
           ,[QtySellThis138]
           ,[QtySellThis139]
           ,[QtySellThis140]
           ,[QtySellThis141]
           ,[QtySellThis142]
           ,[QtySellThis143]
           ,[QtySellThis144]
           ,[QtySellThis145]
           ,[QtySellThis146]
           ,[QtySellThis147]
           ,[QtySellThis148]
           ,[QtySellThis149]
           ,[QtySellThis150]
           ,[QtySellThis151]
           ,[QtySellThis152]
           ,[QtySellThis153]
           ,[QtySellThis154]
           ,[QtySellThis155]
           ,[QtySellThis156]
           ,[QtySellThis157]
           ,[QtySellThis158]
           ,[QtySellThis159]
           ,[QtySellThis160]
           ,[QtySellThis161]
           ,[QtySellThis162]
           ,[QtySellThis163]
           ,[QtySellThis164]
           ,[QtySellThis165]
           ,[QtySellThis166]
           ,[QtySellThis167]
           ,[QtySellThis168]
           ,[QtySellThis169]
           ,[QtySellThis170]
           ,[QtySellThis171]
           ,[QtySellThis172]
           ,[QtySellThis173]
           ,[QtySellThis174]
           ,[QtySellThis175]
           ,[QtySellThis176]
           ,[QtySellThis177]
           ,[QtySellThis178]
           ,[QtySellThis179]
           ,[QtySellThis180]
           ,[QtySellThis181]
           ,[QtySellThis182]
           ,[QtySellThis183]
           ,[QtySellThis184]
           ,[QtySellThis185]
           ,[QtySellThis186]
           ,[QtySellThis187]
           ,[QtySellThis188]
           ,[QtySellThis189]
           ,[QtySellThis190]
           ,[QtySellThis191]
           ,[QtySellThis192]
           ,[QtySellThis193]
           ,[QtySellThis194]
           ,[QtySellThis195]
           ,[QtySellThis196]
           ,[QtySellThis197]
           ,[QtySellThis198]
           ,[QtySellThis199]
           ,[QtySellThis200]
           ,[QtyBuyThis201]
           ,[QtyBuyThis202]
           ,[QtyBuyThis203]
           ,[QtyBuyThis204]
           ,[QtyBuyThis205]
           ,[QtyBuyThis206]
           ,[QtyBuyThis207]
           ,[QtyBuyThis208]
           ,[QtyBuyThis209]
           ,[QtyBuyThis210]
           ,[QtyBuyThis211]
           ,[QtyBuyThis212]
           ,[QtyBuyThis213]
           ,[QtyBuyThis214]
           ,[QtyBuyThis215]
           ,[QtyBuyThis216]
           ,[QtyBuyThis217]
           ,[QtyBuyThis218]
           ,[QtyBuyThis219]
           ,[QtyBuyThis220]
           ,[QtyBuyThis221]
           ,[QtyBuyThis222]
           ,[QtyBuyThis223]
           ,[QtyBuyThis224]
           ,[QtyBuyThis225]
           ,[QtyBuyThis226]
           ,[QtyBuyThis227]
           ,[QtyBuyThis228]
           ,[QtyBuyThis229]
           ,[QtyBuyThis230]
           ,[QtyBuyThis231]
           ,[QtyBuyThis232]
           ,[QtyBuyThis233]
           ,[QtyBuyThis234]
           ,[QtyBuyThis235]
           ,[QtyBuyThis236]
           ,[QtyBuyThis237]
           ,[QtyBuyThis238]
           ,[QtyBuyThis239]
           ,[QtyBuyThis240]
           ,[QtyAdjustThis201]
           ,[QtyAdjustThis202]
           ,[QtyAdjustThis203]
           ,[QtyAdjustThis204]
           ,[QtyAdjustThis205]
           ,[QtyAdjustThis206]
           ,[QtyAdjustThis207]
           ,[QtyAdjustThis208]
           ,[QtyAdjustThis209]
           ,[QtyAdjustThis210]
           ,[QtyAdjustThis211]
           ,[QtyAdjustThis212]
           ,[QtyAdjustThis213]
           ,[QtyAdjustThis214]
           ,[QtyAdjustThis215]
           ,[QtyAdjustThis216]
           ,[QtyAdjustThis217]
           ,[QtyAdjustThis218]
           ,[QtyAdjustThis219]
           ,[QtyAdjustThis220]
           ,[QtyAdjustThis221]
           ,[QtyAdjustThis222]
           ,[QtyAdjustThis223]
           ,[QtyAdjustThis224]
           ,[QtyAdjustThis225]
           ,[QtyAdjustThis226]
           ,[QtyAdjustThis227]
           ,[QtyAdjustThis228]
           ,[QtyAdjustThis229]
           ,[QtyAdjustThis230]
           ,[QtyAdjustThis231]
           ,[QtyAdjustThis232]
           ,[QtyAdjustThis233]
           ,[QtyAdjustThis234]
           ,[QtyAdjustThis235]
           ,[QtyAdjustThis236]
           ,[QtyAdjustThis237]
           ,[QtyAdjustThis238]
           ,[QtyAdjustThis239]
           ,[QtyAdjustThis240]
           ,[QtySellThis201]
           ,[QtySellThis202]
           ,[QtySellThis203]
           ,[QtySellThis204]
           ,[QtySellThis205]
           ,[QtySellThis206]
           ,[QtySellThis207]
           ,[QtySellThis208]
           ,[QtySellThis209]
           ,[QtySellThis210]
           ,[QtySellThis211]
           ,[QtySellThis212]
           ,[QtySellThis213]
           ,[QtySellThis214]
           ,[QtySellThis215]
           ,[QtySellThis216]
           ,[QtySellThis217]
           ,[QtySellThis218]
           ,[QtySellThis219]
           ,[QtySellThis220]
           ,[QtySellThis221]
           ,[QtySellThis222]
           ,[QtySellThis223]
           ,[QtySellThis224]
           ,[QtySellThis225]
           ,[QtySellThis226]
           ,[QtySellThis227]
           ,[QtySellThis228]
           ,[QtySellThis229]
           ,[QtySellThis230]
           ,[QtySellThis231]
           ,[QtySellThis232]
           ,[QtySellThis233]
           ,[QtySellThis234]
           ,[QtySellThis235]
           ,[QtySellThis236]
           ,[QtySellThis237]
           ,[QtySellThis238]
           ,[QtySellThis239]
           ,[QtySellThis240]
	)
Select * from @tblUtilityPervMultiStoreTrnDT 
else if(@intChkNo =17)--CashBookCurrency
   INSERT INTO tblUtilityPervCashBookCurrency (
	[AccNumber]
           ,[Balance01]
           ,[Balance02]
           ,[Balance03]
           ,[Balance04]
           ,[Balance05]
           ,[Balance06]
           ,[Balance07]
           ,[Balance08]
           ,[Balance09]
           ,[Balance10]
           ,[Balance11]
           ,[Balance12]
           ,[Balance13]
           ,[LastBalance01]
           ,[LastBalance02]
           ,[LastBalance03]
           ,[LastBalance04]
           ,[LastBalance05]
           ,[LastBalance06]
           ,[LastBalance07]
           ,[LastBalance08]
           ,[LastBalance09]
           ,[LastBalance10]
           ,[LastBalance11]
           ,[LastBalance12]
           ,[LastBalance13]
           ,[bIsBalanceSheet]
           ,[bIsDebit]
           ,[bitEvo]
           ,[Balance14]
           ,[Balance15]
           ,[Balance16]
           ,[Balance17]
           ,[Balance18]
           ,[Balance19]
           ,[Balance20]
           ,[Balance21]
           ,[Balance22]
           ,[Balance23]
           ,[Balance24]
           ,[Balance25]
           ,[Balance26]
           ,[Balance27]
           ,[Balance28]
           ,[Balance29]
           ,[Balance30]
           ,[Balance31]
           ,[Balance32]
           ,[Balance33]
           ,[Balance34]
           ,[Balance35]
           ,[Balance36]
           ,[Balance37]
           ,[Balance38]
           ,[Balance39]
           ,[Balance40]
           ,[Balance41]
           ,[Balance42]
           ,[Balance43]
           ,[Balance44]
           ,[Balance45]
           ,[Balance46]
           ,[Balance47]
           ,[Balance48]
           ,[Balance49]
           ,[Balance50]
           ,[Balance51]
           ,[Balance52]
           ,[Balance53]
           ,[Balance54]
           ,[Balance55]
           ,[Balance56]
           ,[Balance57]
           ,[Balance58]
           ,[Balance59]
           ,[Balance60]
           ,[Balance61]
           ,[Balance62]
           ,[Balance63]
           ,[Balance64]
           ,[Balance65]
           ,[Balance66]
           ,[Balance67]
           ,[Balance68]
           ,[Balance69]
           ,[Balance70]
           ,[Balance71]
           ,[Balance72]
           ,[Balance73]
           ,[Balance74]
           ,[Balance75]
           ,[Balance76]
           ,[Balance77]
           ,[Balance78]
           ,[Balance79]
           ,[Balance80]
           ,[Balance81]
           ,[Balance82]
           ,[Balance83]
           ,[Balance84]
           ,[Balance85]
           ,[Balance86]
           ,[Balance87]
           ,[Balance88]
           ,[Balance89]
           ,[Balance90]
           ,[Balance91]
           ,[Balance92]
           ,[Balance93]
           ,[Balance94]
           ,[Balance95]
           ,[Balance96]
           ,[Balance97]
           ,[Balance98]
           ,[Balance99]
           ,[ForBalance01]
           ,[ForBalance02]
           ,[ForBalance03]
           ,[ForBalance04]
           ,[ForBalance05]
           ,[ForBalance06]
           ,[ForBalance07]
           ,[ForBalance08]
           ,[ForBalance09]
           ,[ForBalance10]
           ,[ForBalance11]
           ,[ForBalance12]
           ,[ForBalance13]
           ,[ForBalance14]
           ,[ForBalance15]
           ,[ForBalance16]
           ,[ForBalance17]
           ,[ForBalance18]
           ,[ForBalance19]
           ,[ForBalance20]
           ,[ForBalance21]
           ,[ForBalance22]
           ,[ForBalance23]
           ,[ForBalance24]
           ,[ForBalance25]
           ,[ForBalance26]
           ,[ForBalance27]
           ,[ForBalance28]
           ,[ForBalance29]
           ,[ForBalance30]
           ,[ForBalance31]
           ,[ForBalance32]
           ,[ForBalance33]
           ,[ForBalance34]
           ,[ForBalance35]
           ,[ForBalance36]
           ,[ForBalance37]
           ,[ForBalance38]
           ,[ForBalance39]
           ,[ForBalance40]
           ,[ForBalance41]
           ,[ForBalance42]
           ,[ForBalance43]
           ,[ForBalance44]
           ,[ForBalance45]
           ,[ForBalance46]
           ,[ForBalance47]
           ,[ForBalance48]
           ,[ForBalance49]
           ,[ForBalance50]
           ,[ForBalance51]
           ,[ForBalance52]
           ,[ForBalance53]
           ,[ForBalance54]
           ,[ForBalance55]
           ,[ForBalance56]
           ,[ForBalance57]
           ,[ForBalance58]
           ,[ForBalance59]
           ,[ForBalance60]
           ,[ForBalance61]
           ,[ForBalance62]
           ,[ForBalance63]
           ,[ForBalance64]
           ,[ForBalance65]
           ,[ForBalance66]
           ,[ForBalance67]
           ,[ForBalance68]
           ,[ForBalance69]
           ,[ForBalance70]
           ,[ForBalance71]
           ,[ForBalance72]
           ,[ForBalance73]
           ,[ForBalance74]
           ,[ForBalance75]
           ,[ForBalance76]
           ,[ForBalance77]
           ,[ForBalance78]
           ,[ForBalance79]
           ,[ForBalance80]
           ,[ForBalance81]
           ,[ForBalance82]
           ,[ForBalance83]
           ,[ForBalance84]
           ,[ForBalance85]
           ,[ForBalance86]
           ,[ForBalance87]
           ,[ForBalance88]
           ,[ForBalance89]
           ,[ForBalance90]
           ,[ForBalance91]
           ,[ForBalance92]
           ,[ForBalance93]
           ,[ForBalance94]
           ,[ForBalance95]
           ,[ForBalance96]
           ,[ForBalance97]
           ,[ForBalance98]
           ,[ForBalance99]
	)
Select * from @tblUtilityCashBookCurrencyDT 
else if(@intChkNo =18)--CostCodes
   INSERT INTO tblUtilityPervCostCodes ([JobCode]
           ,[JobDesc]
           ,[Blocked]
           ,[MasterSubProject]
           ,[ProjectLevel]
           ,[bitEvo]) Select * from @tblUtilityPervCostCodesDT
else if(@intChkNo = 19) --HistoryHeaderLines
   INSERT INTO tblUtilityPervHistoryHeader 
   ([DocumentType]
           ,[DocumentNumber]
           ,[CustomerCode]
           ,[DocumentDate]
           ,[OrderNumber]
           ,[SalesmanCode]
           ,[UserID]
           ,[ExclIncl]
           ,[Message01]
           ,[Message02]
           ,[Message03]
           ,[DelAddress01]
           ,[DelAddress02]
           ,[DelAddress03]
           ,[DelAddress04]
           ,[DelAddress05]
           ,[Terms]
           ,[ExtraCosts]
           ,[CostCode]
           ,[PPeriod]
           ,[ClosingDate]
           ,[Telephone]
           ,[Fax]
           ,[Contact]
           ,[CurrencyCode]
           ,[ExchangeRate]
           ,[DiscountPercent]
           ,[Total]
           ,[FCurrTotal]
           ,[TotalTax]
           ,[FCurrTotalTax]
           ,[TotalCost]
           ,[InvDeleted]
           ,[InvPrintStatus]
           ,[Onhold]
           ,[GRNMisc]
           ,[Paid]
           ,[Freight01]
           ,[Ship]
           ,[IsTMBDoc]
           ,[Spare]
           ,[Exported]
           ,[ExportRef]
           ,[ExportNum]
           ,[Emailed]
           ,[bitEvo]
           ,[DocType]
           ,[DelAddress06]
           ,[Docstate]
           ,[InvoiceID]
           ,[Description]
           ,[OrderDate]
           ,[DueDate]
           ,[DeliveryDate]
           ,[PAddress1]
           ,[PAddress2]
           ,[PAddress3]
           ,[PAddress4]
           ,[PAddress5]
           ,[PAddress6]
           ,[InvTotIncl]
           ,[InvTotInclDEx]
           ,[OrdDiscAmnt]
           ,[OrdDiscAmntEx]
           ,[OrdTotExclDEx]
           ,[OrdTotTaxDEx]
           ,[OrdTotInclDEx]
           ,[OrdTotExcl]
           ,[OrdTotTax]
           ,[OrdTotIncl]
           ,[fInvTotInclForeign]
           ,[fOrdDiscAmntForeign]
           ,[fOrdDiscAmntExForeign]
           ,[fOrdTotExclDExForeign]
           ,[fOrdTotTaxDExForeign]
           ,[fOrdTotInclDExForeign]
           ,[fOrdTotExclForeign]
           ,[fOrdTotTaxForeign]
           ,[fOrdTotInclForeign]
           ,[fInvDiscAmntForeign]
           ,[fInvDiscAmntExForeign]
           ,[fInvTotExclDExForeign]
           ,[fInvTotTaxDExForeign]
           ,[fInvTotInclDExForeign]
           ,[DocTypeID]
           ,[DocStateID]
           ,[DocFlagID])
   Select * from @tblUtilityPervHistoryHeaderLinesDT
else if (@intChkNo = 20) --HistoryLines
  INSERT INTO tblUtilityPervHistoryLines 
   ([UserId]
           ,[DocumentType]
           ,[DocumentNumber]
           ,[ItemCode]
           ,[CustomerCode]
           ,[SalesmanCode]
           ,[SearchType]
           ,[PPeriod]
           ,[DDate]
           ,[UnitUsed]
           ,[TaxType]
           ,[DiscountType]
           ,[DiscountPercentage]
           ,[Description]
           ,[CostPrice]
           ,[Qty]
           ,[UnitPrice]
           ,[InclusivePrice]
           ,[FCurrUnitPrice]
           ,[FCurrInclPrice]
           ,[TaxAmt]
           ,[FCurrTaxAmount]
           ,[DiscountAmount]
           ,[FCDiscountAmount]
           ,[CostCode]
           ,[DateTime]
           ,[WhichUserDef]
           ,[Physical]
           ,[Fixed]
           ,[ShowQty]
           ,[LinkNum]
           ,[LinkedNum]
           ,[GRNQty]
           ,[LinkID]
           ,[MultiStore]
           ,[IsTMBLine]
           ,[LinkDocumentType]
           ,[LinkDocumentNumber]
           ,[Exported]
           ,[ExportRef]
           ,[ExportNum]
           ,[QtyLeft]
           ,[CaseLotCode]
           ,[CaseLotQty]
           ,[CaseLotRatio]
           ,[CostSyncDone]
           ,[bitEvo]
           ,[DocType]
           ,[fQtyLinkedUsedUR]
           ,[TaxCode]
           ,[iinvoiceid]
           ,[Docstate]
           ,[fQuantity]
           ,[fQtyChange]
           ,[fQtyToProcess]
           ,[fQtyLastProcess]
           ,[fQtyProcessed]
           ,[fQuantityLineTotIncl]
           ,[fQuantityLineTotExcl]
           ,[fQuantityLineTotInclNoDisc]
           ,[fQuantityLineTotExclNoDisc]
           ,[fQuantityLineTaxAmount]
           ,[fQuantityLineTaxAmountNoDisc]
           ,[fQtyChangeLineTotIncl]
           ,[fQtyChangeLineTotExcl]
           ,[fQtyChangeLineTotInclNoDisc]
           ,[fQtyChangeLineTotExclNoDisc]
           ,[fQtyChangeLineTaxAmount]
           ,[fQtyChangeLineTaxAmountNoDisc]
           ,[fQtyToProcessLineTotIncl]
           ,[fQtyToProcessLineTotExcl]
           ,[fQtyToProcessLineTotInclNoDisc]
           ,[fQtyToProcessLineTotExclNoDisc]
           ,[fQtyToProcessLineTaxAmount]
           ,[fQtyToProcessLineTaxAmountNoDisc]
           ,[fQtyLastProcessLineTotIncl]
           ,[fQtyLastProcessLineTotExcl]
           ,[fQtyLastProcessLineTotInclNoDisc]
           ,[fQtyLastProcessLineTotExclNoDisc]
           ,[fQtyLastProcessLineTaxAmount]
           ,[fQtyLastProcessLineTaxAmountNoDisc]
           ,[fQtyProcessedLineTotIncl]
           ,[fQtyProcessedLineTotExcl]
           ,[fQtyProcessedLineTotInclNoDisc]
           ,[fQtyProcessedLineTotExclNoDisc]
           ,[fQtyProcessedLineTaxAmount]
           ,[fQtyProcessedLineTaxAmountNoDisc]
           ,[fUnitPriceExclForeign]
           ,[fUnitPriceInclForeign]
           ,[fUnitCostForeign]
           ,[fAddCostForeign]
           ,[fQuantityLineTotInclForeign]
           ,[fQuantityLineTotExclForeign]
           ,[fQuantityLineTotInclNoDiscForeign]
           ,[fQuantityLineTotExclNoDiscForeign]
           ,[fQuantityLineTaxAmountForeign]
           ,[fQuantityLineTaxAmountNoDiscForeign]
           ,[fQtyChangeLineTotInclForeign]
           ,[fQtyChangeLineTotExclForeign]
           ,[fQtyChangeLineTotInclNoDiscForeign]
           ,[fQtyChangeLineTotExclNoDiscForeign]
           ,[fQtyChangeLineTaxAmountForeign]
           ,[fQtyChangeLineTaxAmountNoDiscForeign]
           ,[fQtyToProcessLineTotInclForeign]
           ,[fQtyToProcessLineTotExclForeign]
           ,[fQtyToProcessLineTotInclNoDiscForeign]
           ,[fQtyToProcessLineTotExclNoDiscForeign]
           ,[fQtyToProcessLineTaxAmountForeign]
           ,[fQtyToProcessLineTaxAmountNoDiscForeign]
           ,[fQtyLastProcessLineTotInclForeign]
           ,[fQtyLastProcessLineTotExclForeign]
           ,[fQtyLastProcessLineTotInclNoDiscForeign]
           ,[fQtyLastProcessLineTotExclNoDiscForeign]
           ,[fQtyLastProcessLineTaxAmountForeign]
           ,[fQtyLastProcessLineTaxAmountNoDiscForeign]
           ,[fQtyProcessedLineTotInclForeign]
           ,[fQtyProcessedLineTotExclForeign]
           ,[fQtyProcessedLineTotInclNoDiscForeign]
           ,[fQtyProcessedLineTotExclNoDiscForeign]
           ,[fQtyProcessedLineTaxAmountForeign]
           ,[fQtyProcessedLineTaxAmountNoDiscForeign])
  Select * from @tblUtilityPervHistoryLinesDT
else if(@intChkNo=21) --LedgerTrans
  INSERT INTO tblUtilityPervLedgerTransactions 
  ([GDC]
           ,[AccNumber]
           ,[DiscFlag]
           ,[CurrCode]
           ,[Spare]
           ,[PPeriod]
           ,[DDate]
           ,[EType]
           ,[Refrence]
           ,[JobCode]
           ,[Amount]
           ,[TaxAmt]
           ,[ThisCurrTaxAmount]
           ,[BankTaxAmount]
           ,[CurrAmt]
           ,[BankCurrAmount]
           ,[ReconFlag]
           ,[Description]
           ,[TaxType]
           ,[Country]
           ,[Generated]
           ,[PayBased]
           ,[UserID]
           ,[WhichUserRef]
           ,[LinkAcc]
           ,[UpdateReconFlag]
           ,[ChequeFlag]
           ,[LinkID]
           ,[InInv]
           ,[TaxReportDate]
           ,[BatchID]
           ,[TransactionID]
           ,[AutoNumber]
           ,[Exported]
           ,[ExportRef]
           ,[ExportNum]
           ,[CostSyncDone]
           ,[bitEvo]
           ,[CurrencyCode]
           ,[ID]
           ,[Debit]
           ,[Credit]
           ,[fExchangeRate]
           ,[fForeignDebit]
           ,[fForeignCredit]
           ,[TaxCode]
           ,[OrderNo]
           ,[ExtOrderNum]
           ,[cAuditNumber]
           ,[TaxAmount]
           ,[Project]
           ,[DTStamp])
  Select * from @tblUtilityPervLedgerTransDT
ELSE IF (@intChkNo =22)
  INSERT INTO tblUtilityPervOpenItem 
  ([DC]
           ,[Original]
           ,[CSCode]
           ,[MatchRef]
           ,[LineFlag]
           ,[BatchID]
           ,[PPeriod]
           ,[dDate]
           ,[EntryType]
           ,[Ref]
           ,[Amount]
           ,[TaxAmt]
           ,[CurrAmt]
           ,[CurrTaxAmt]
           ,[TaxType]
           ,[Discount]
           ,[TaxMethodUsed]
           ,[Description]
           ,[UserDef]
           ,[Spare]
           ,[Exported]
           ,[ExportRef]
           ,[ExportNum]
           ,[bitEvo]
           ,[Account]
           ,[Age1]
           ,[Age2]
           ,[Age3]
           ,[Age4]
           ,[Age5]
           ,[Age6]
           ,[Age7]
           ,[AccountBalance]
           ,[UADebits]
           ,[UACredits]
           ,[FCAge1]
           ,[FCAge2]
           ,[FCAge3]
           ,[FCAge4]
           ,[FCAge5]
           ,[FCAge6]
           ,[FCAge7]
           ,[AccountBalanceForeign]
           ,[UADebitsForeign]
           ,[UACreditsForeign])
  Select * from @tblUtilityPervOpenItemDT
END
GO

CREATE PROCEDURE FillDataCustomerStatements @DocNumber AS NVARCHAR(50)
	,@CustName AS NVARCHAR(20)
	,@DisplayLogo AS BIT
	,@Consolidated AS INT
	,@Location AS NVARCHAR(max) 
	AS
BEGIN
	SELECT *
	FROM tblInvoiceDoc
	WHERE strInvDocID = @DocNumber

	SELECT tblInvoiceDocDT.*
		,tblInvoiceDocDTPrj.strProjNumber
		,tblProjects.strProjName
		,tblInv.strBarCode
		,tblInv.strBarCode2
		,(
			SELECT bitInvImgOnSI
			FROM tblCoOpts
			) AS bitShowImage
		,tblInvImg.imgData AS imgImage
		,tblInvoiceDocDT.strPartExtendedDesc AS strExtendedDesc
		,tblInv.bitInvExtDescOnSI AS bitShowExtendedDesc
	FROM tblInvoiceDocDT
	INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID
		AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo
	LEFT JOIN tblProjects ON tblInvoiceDocDTPrj.strProjNumber = tblProjects.strProjNumber
	LEFT JOIN tblInvImg ON tblInvoiceDocDT.strPartNumber = tblInvImg.strPartNumber
		AND tblInvImg.bitDefaultImage = 1
	WHERE tblInvoiceDocDT.strInvDocID = @DocNumber
		AND tblInvoiceDocDT.bitDiscountTax = 0
	ORDER BY tblInvoiceDocDT.intLineNo

	SELECT tblInvoiceDocDTSerial.*
	FROM tblInvoiceDocDTSerial
	INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTSerial.strInvDocID = tblInvoiceDocDT.strInvDocID
		AND tblInvoiceDocDTSerial.intLineNo = tblInvoiceDocDT.intLineNo
	INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblInvoiceDocDTSerial.strInvDocID = @DocNumber
		AND tblInvSerialTypes.bitPrintInv = 1
	ORDER BY tblInvoiceDocDTSerial.intLineNo

	SELECT *
	FROM tblCustomers
	WHERE (
			strCustName = @CustName
			OR strCustName IN (
				SELECT CUST1.strCustName
				FROM tblCustomers CUST1
				WHERE CUST1.strParentCust = (
						SELECT CUST2.strCustName
						FROM tblCustomers CUST2
						WHERE CUST2.strCustName = @CustName
							AND CUST2.intNAPrintMethod = @Consolidated
						)
				)
			)

	SELECT *
	FROM tblInvoiceDocSplitPmt
	WHERE strInvDocID = @DocNumber

	SELECT tblInvBOM.strPartNumber
		,tblInvoiceDocDT.intLineNo
		,tblInvBOM.strPartItemNumber
		,tblInvBOM.intQtyToUse
		,tblInvBOM.strLocName
	FROM tblInvBOM
	INNER JOIN tblInvoiceDocDT ON tblInvBOM.strPartNumber = tblInvoiceDocDT.strPartNumber
	INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
	WHERE tblInvoiceDocDT.strInvDocID = @DocNumber
		AND tblInv.bitAutoBuild = 1

	SELECT [imgLogo]
		,@DisplayLogo AS [bitDisplayLogo]
	FROM tblCompany

	SELECT tblInvoiceDocDTVouchers.*
	FROM tblInvoiceDocDTVouchers
	INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTVouchers.strInvDocID = tblInvoiceDocDT.strInvDocID
		AND tblInvoiceDocDTVouchers.intLineNo = tblInvoiceDocDT.intLineNo
	WHERE tblInvoiceDocDTVouchers.strInvDocID = @DocNumber
	ORDER BY tblInvoiceDocDTVouchers.intLineNo

	SELECT *
	FROM tblInv
	WHERE strPartNumber IN (
			SELECT DISTINCT strPartNumber
			FROM tblInvoiceDocDT
			WHERE strInvDocID = @DocNumber
				AND bitDiscountTax = 0
			)

	SELECT *
	FROM dbo.fnTblInvLocations(@Location) tblInv
	WHERE strPartNumber IN (
			SELECT DISTINCT strPartNumber
			FROM tblInvoiceDocDT
			WHERE strInvDocID = @DocNumber
				AND bitDiscountTax = 0
			)

	SELECT lngDocumentID
		,strDocumentNumber
		,varFile
		,intSize
		,bitIsSignature
		,strSignatureName
	FROM tblDocuments
	WHERE strDocumentNumber = @DocNumber
		AND bitIsSignature = 1
END
GO

CREATE PROCEDURE GetFormsDocsListForCustomerStatment @DocName AS NVARCHAR(50)
	,@MachineName AS NVARCHAR(max)
	AS
BEGIN
	SELECT strForm
	FROM tblFormsDocs
	WHERE strName = @DocName
		AND intType = 5
		AND (
			strMachine = @MachineName
			OR ISNULL(strMachine, '') = ''
			)
	ORDER BY bitGlobal
END
GO

CREATE PROCEDURE [dbo].[GetTransactionFieldIDByDocNumber] @DocNumber NVARCHAR(200)
	,@PartNumber NVARCHAR(200)
	AS
BEGIN
	SELECT uidTransactionFieldID AS TransactionFieldGUID
	FROM tblInvoiceDocREVDT
	WHERE strinvdocid = @DocNumber
		AND strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].GetGLExpAcctByPartNumber (@PartNumber AS NVARCHAR(200))
AS
BEGIN
	SELECT intExpAcct
	FROM tblInv
	WHERE intType = 5
		AND strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[GetAssetRepiarDataByDocNumber] (@PIDocID AS NVARCHAR(200))
AS
BEGIN
	SELECT DISTINCT ISNULL(intLineNo, 0) AS intLineNo
		,lngID
	FROM tblAssetRepairs
	WHERE strInvPDocID = @PIDocID
	ORDER BY lngID ASC
END
GO

CREATE PROCEDURE [dbo].[DeleteLinkToOtherPricelistItems] (@MasterId AS INT)
AS
BEGIN
	DELETE
	FROM tblPricelistsItems
	WHERE intPricelistMasterId = @MasterId
END
GO

CREATE PROCEDURE [GetInvTransferDocSerialDataByDocNumber] (
	@DocNumber NVARCHAR(200)
	,@LineNo INT
	)
AS
BEGIN
	SELECT tblInvTrfDocDTSerial.strTrfDocID
		,tblInvTrfDocDTSerial.strTrfDocID
		,tblInvTrfDocDTSerial.intLineNo AS LineNumber
		,tblInvTrfDocDTSerial.strserialNumber AS SerialNumber
		,tblInvTrfDocDTSerial.decQty AS Quantity
		,tblInvTrfDocDTSerial.strUnit AS Unit
		,tblInvTrfDocDTSerial.bitExpiryDate AS IsExpiryDateExists
		,tblInvTrfDocDTSerial.dteExpiryDate AS ExpiryDate
		,tblInvTrfDocDTSerial.intSerialLotType AS SerialLotType
		,CASE 
			WHEN tblInvTrfDocDTSerial.intSerialLotType = 0
				THEN ISNULL(tblInvSerialExt.bitDimensionExist, 0)
			ELSE 0
			END
		,CASE 
			WHEN tblInvTrfDocDTSerial.intSerialLotType = 0
				THEN ISNULL(tblInvSerialExt.strDimension, '')
			ELSE ''
			END
	FROM tblInvTrfDocDT
	INNER JOIN tblInvTrfDocDTSerial ON tblInvTrfDocDT.strTrfDocID = tblInvTrfDocDTSerial.strTrfDocID
		AND tblInvTrfDocDT.intLineNo = tblInvTrfDocDTSerial.intLineNo
	LEFT JOIN tblInvSerialExt ON tblInvTrfDocDT.strPartNumber = tblInvSerialExt.strPartNumber
		AND tblInvTrfDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
	WHERE tblInvTrfDocDTSerial.strTrfDocID = @DocNumber
		AND tblInvTrfDocDTSerial.intLineNo = @LineNo
	ORDER BY tblInvTrfDocDTSerial.lngID
END
GO

CREATE PROCEDURE [dbo].[GetKenyaClasificationList]
AS
BEGIN
	SELECT strItemClsCd + '('+strItemClsNm+')' AS strItemClsNm
	FROM tblKenyaeTIMSItemClassifications
END
GO

CREATE PROCEDURE [dbo].[GetKenyaClasificationData] (@PartNumber AS NVARCHAR(MAX))
AS
BEGIN
	SELECT strKenyaItemClassificationName AS KenyaItemClassification
	FROM tblInv
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[GetMaxKenyaItemCounter]
AS
BEGIN
	SELECT Max(strKenyaItemCodeCounter)
	FROM tblInv
END
GO

CREATE PROCEDURE [dbo].[GetHSCodeByVendorNumber] (@VendorNumber NVARCHAR(100))
AS
BEGIN
	SELECT ISNULL(strVendDesc, '') AS CustDesc
		,ISNULL(strStreet1, '') AS Street1
		,ISNULL(strStreet2, '') AS Street2
		,ISNULL(strProvince, '') AS Province
		,ISNULL(strCity, '') AS City
		,ISNULL(strPostal, '') AS Postal
	FROM tblVendors(NOLOCK)
	WHERE strVendName = @VendorNumber
END
GO

CREATE PROCEDURE GetKenyaItemTaxCodeBasedOnPartNumber 
(
    @partNumber AS NVARCHAR(200)
)
AS
BEGIN	 

    SELECT ISNULL(strKenyaItemTaxCode,'') AS KenyaItemTaxCode
    FROM tblInvItemTax 
    WHERE strPartNumber = @partNumber
END
GO

CREATE PROCEDURE [dbo].[UpdateInvDataForKenya] (
	@KenyaItemCode AS NVARCHAR(200)
	,@KenyaItemCodeCounter AS NVARCHAR(200)
	,@PartNumber AS NVARCHAR(200)
	)
AS
BEGIN
	UPDATE tblInv
	SET strKenyaItemCode = @KenyaItemCode
		,strKenyaItemCodeCounter = @KenyaItemCodeCounter
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[GetReconPriorCYLYWPF] (@GLNumber NVARCHAR(30) = '')
AS
BEGIN
	CREATE TABLE #Temp_FY (
		[uidYearID] [uniqueidentifier] NOT NULL
		,[intFiscalYr] [int] NOT NULL
		,[dteYearStart] [datetime] NOT NULL
		,[dteYearEnd] [datetime] NOT NULL
		,[lngID] [bigint] IDENTITY(1, 1) NOT NULL
		)

	INSERT INTO #Temp_FY (
		[uidYearID]
		,[intFiscalYr]
		,[dteYearStart]
		,[dteYearEnd]
		)
	SELECT uidYearID
		,intFiscalYr
		,dteYearStart
		,dteYearEnd
	FROM tblAcctHist
	ORDER BY intFiscalYr

	CREATE TABLE #Temp_JNL (
		[strSource] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
		,[dteJournalDate] [smalldatetime] NOT NULL
		,[strComment] [nvarchar](400) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
		,[decDebits] [money] NOT NULL
		,[decCredits] [money] NOT NULL
		,[intModule] [tinyint] NOT NULL
		,[lngJourID] [bigint] NOT NULL
		,[decAmount] [money] NOT NULL
		,[decAmountF] [money] NOT NULL
		,[decDebitsF] [money] NOT NULL
		,[decCreditsF] [money] NOT NULL
		,[intLineNum] [int] NOT NULL
		,[lngID] [bigint] IDENTITY(1, 1) NOT NULL
		)

	WHILE EXISTS (
			SELECT lngID
			FROM #Temp_FY
			)
	BEGIN
		DECLARE @ID BIGINT
			,@YearID UNIQUEIDENTIFIER
			,@FiscalYr INT
			,@YearStart DATETIME
			,@YearEnd DATETIME

		SELECT TOP 1 @ID = lngID
			,@YearID = uidYearID
			,@FiscalYr = intFiscalYr
			,@YearStart = dteYearStart
			,@YearEnd = dteYearEnd
		FROM #Temp_FY
		ORDER BY lngID

		INSERT INTO #Temp_JNL (
			[strSource]
			,[dteJournalDate]
			,[strComment]
			,[decDebits]
			,[decCredits]
			,[intModule]
			,[lngJourID]
			,[decAmount]
			,[decAmountF]
			,[decDebitsF]
			,[decCreditsF]
			,[intLineNum]
			)
		SELECT tblJournalHist.strSource 
			,tblJournalHist.dteJournalDate 
			,tblJournalHist.strComment 
			,tblJournalEntHist.decDebits 
			,tblJournalEntHist.decCredits 
			,tblJournalHist.intModule 
			,tblJournalHist.lngJourID 
			,tblJournalEntHist.decAmount
			,tblJournalEntHist.decAmountF
			,tblJournalEntHist.decDebitsF 
			,tblJournalEntHist.decCreditsF
			,tblJournalEntHist.intLineNum
		FROM tblJournalHist
		INNER JOIN tblJournalEntHist ON tblJournalHist.uidYearID = tblJournalEntHist.uidYearID
			AND tblJournalHist.lngJourID = tblJournalEntHist.lngJourID
		WHERE (tblJournalHist.uidYearID = @YearID)
			AND (tblJournalEntHist.intGLNumber = @GLNumber)
			AND (
				tblJournalHist.lngJourID NOT IN (
					SELECT lngJourID
					FROM tblBankRecTrans
					WHERE (intGLNumber = @GLNumber)
						AND (
							dteJourDate BETWEEN @YearStart
								AND @YearEnd
							)
					)
				)

		DELETE
		FROM #Temp_FY
		WHERE lngID = @ID
	END

	INSERT INTO #Temp_JNL (
		[strSource]
		,[dteJournalDate]
		,[strComment]
		,[decDebits]
		,[decCredits]
		,[intModule]
		,[lngJourID]
		,[decAmount]
		,[decAmountF]
		,[decDebitsF]
		,[decCreditsF]
		,[intLineNum]
		)
	SELECT tblJournalLY.strSource 
		,tblJournalLY.dteJournalDate 
		,tblJournalLY.strComment 
		,tblJournalEntLY.decDebits 
		,tblJournalEntLY.decCredits
		,tblJournalLY.intModule 
		,tblJournalLY.lngJourID 
		,tblJournalEntLY.decAmount
		,tblJournalEntLY.decAmountF
		,tblJournalEntLY.decDebitsF  
		,tblJournalEntLY.decCreditsF 
		,tblJournalEntLY.intLineNum

	FROM tblJournalLY


	INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID
	WHERE (tblJournalEntLY.intGLNumber = @GLNumber)
		AND (
			tblJournalLY.lngJourID NOT IN (
				SELECT lngJourID
				FROM tblBankRecTrans
				CROSS JOIN tblCompany
				WHERE (intGLNumber = @GLNumber)
					AND (
						dteJourDate BETWEEN dteLYStarted
							AND dteLYEnded
						)
				)
			)
	ORDER BY tblJournalLY.lngJourID
		,tblJournalEntLY.intLineNum

	INSERT INTO #Temp_JNL (
		[strSource]
		,[dteJournalDate]
		,[strComment]
		,[decDebits]
		,[decCredits]
		,[intModule]
		,[lngJourID]
		,[decAmount]
		,[decAmountF]
		,[decDebitsF]
		,[decCreditsF]
		,[intLineNum]
		)
		SELECT tblJournal.strSource
		,tblJournal.dteJournalDate
		,tblJournal.strComment
		,tblJournalEnt.decDebits
		,tblJournalEnt.decCredits
		,tblJournal.intModule
		,tblJournal.lngJourID
		,tblJournalEnt.decAmount
		,tblJournalEnt.decAmountF
		,tblJournalEnt.decDebitsF
		,tblJournalEnt.decCreditsF
		,tblJournalEnt.intLineNum
	FROM tblJournal
	INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
	WHERE (tblJournalEnt.intGLNumber = @GLNumber)
		AND (
			tblJournal.lngJourID NOT IN (
				SELECT lngJourID
				FROM tblBankRecTrans
				CROSS JOIN tblCompany
				WHERE (intGLNumber = @GLNumber)
					AND (
						dteJourDate BETWEEN dteYearStarts
							AND dteYearEnds
						)
				)
			)
	ORDER BY tblJournal.lngJourID
		,tblJournalEnt.intLineNum

	SELECT [strSource] AS [Source]
		,[dteJournalDate] AS EndDate
		,[strComment] AS Comment
		,[decDebits] AS Debits
		,[decCredits] AS Credits
		,[intModule] AS strAccountTypeAL
		,[lngJourID] AS JourID
		,[decAmount]
		,[decAmountF]
		,[decDebitsF] AS DebitsF
		,[decCreditsF] AS CreditsF
		,[intLineNum]
	FROM #Temp_JNL
	ORDER BY lngID

	DROP TABLE #Temp_FY

	DROP TABLE #Temp_JNL
END
GO

CREATE PROCEDURE GetLocationDesc (@SelectedLocation NVARCHAR(100))
AS
BEGIN
	SELECT strDesc
	FROM tblInvLoc
	WHERE strLocName = @SelectedLocation
END
GO

CREATE PROCEDURE [dbo].[GetEmployeesBudgetData]
AS
BEGIN
	SELECT strEmpNumber
		,tblInv.strPartNumber
		,tblInv.strDesc AS strDescription
		,CASE intBudgetFrequency
			WHEN 0
				THEN 'Yearly'
			WHEN 1
				THEN 'Half Yearly'
			WHEN 2
				THEN 'Quarterly'
			WHEN 3
				THEN 'Monthly'
			WHEN 4
				THEN 'Weekly'
			WHEN 5
				THEN 'No Budget'
			END AS strBudgetFrequency
		,decBudgetQty
	FROM tblEmpItemBudgetDT
	INNER JOIN tblInv ON tblEmpItemBudgetDT.strPartNumber = tblInv.strPartNumber
	ORDER BY strEmpNumber
END
GO

CREATE PROCEDURE [dbo].[GetCountInvPartNumber] @PartNumber AS NVARCHAR(50)
AS
BEGIN
	SELECT COUNT(strPartNumber) AS PartNumber
	FROM tblInv
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[GetPOSCount]
AS
BEGIN
	SELECT COUNT(*)
	FROM tblPOSDrs
	WHERE intStatus IN (
			0
			,1
			)
		AND intOfflineTerminalId IS NOT NULL
END
GO

CREATE PROCEDURE [dbo].[GetExplodeBOMData2] (@BOMID BIGINT, @ManuQty as money)
AS
BEGIN
	/*SELECT strPartNumber AS PartNumber
		,strDesc AS [Desc]
		,strLocation AS Location
		,dteRevDate AS RevDate
		,decQty AS Qty
	FROM tblManBOM
	WHERE strPartNumber = @SQPartNumber*/

	WITH RecursiveHierarchy AS (
    -- Anchor member: Start with the parent ID from Table A
    SELECT 
        A.strPartNumber AS ParentstrPartNumber,
		B.strDesc AS [Desc],
		B.strLocation AS Location,
		A.dteRevDate AS RevDate,
		B.decQty AS Qty,
		B.strPartNumber AS ChildstrPartNumber,
        CAST(A.[lngManBOMID] AS VARCHAR(MAX)) AS Path,   -- Store the path to detect circular dependencies
        1 AS Level,
		@ManuQty * b.decQty AS ManuQty
    FROM 
        [tblManBOM] A
    INNER JOIN 
        tblManBOMCompInv B ON A.[lngManBOMID] = B.[lngManBOMID]
	WHERE A.lngManBOMID = @BOMID
    UNION ALL
    -- Recursive member: Get the next level of children
    SELECT 
        A.strPartNumber AS ParentstrPartNumber,
		A.strDesc AS [Desc],
		A.strLocation AS Location,
		A.dteRevDate AS RevDate,
		rh.Qty AS Qty,
		B.strPartNumber AS ChildstrPartNumber,
        CAST(rh.Path + '->' + CAST(A.[lngManBOMID] AS VARCHAR(MAX)) AS VARCHAR(MAX)) AS Path,
        rh.Level + 1 AS Level,
		rh.ManuQty * b.decQty AS ManuQty
    FROM 
        RecursiveHierarchy rh
    INNER JOIN 
        [tblManBOM] A ON rh.ChildstrPartNumber = A.strPartNumber and rh.Location = A.strLocation
    INNER JOIN 
        tblManBOMCompInv B ON A.[lngManBOMID] = B.[lngManBOMID]
)
-- Select the final hierarchy
SELECT  
    ParentstrPartNumber AS ParentstrPartNumber
	,ChildstrPartNumber AS ChildstrPartNumber
		,[Desc]
		,[Location]
		,RevDate
		,Qty
		,ManuQty
FROM 
    RecursiveHierarchy
	WHERE ChildstrPartNumber in (select ParentstrPartNumber from RecursiveHierarchy )
END
GO

CREATE PROCEDURE [dbo].[SaveUtilityProjectsEntityDetails] @tblUtilityProjectsDT
AS
UtilityProjectTableType ReadOnly AS

BEGIN
	INSERT INTO tblUtilityProjects (
		[strProjNumber]
		,[strProjName]
		,[bitInactive]
		,[strCustName]
		,[strCustDesc]
		,[strCenter]
		,[uidCenterID]
		)
	SELECT strProjNumber
		,strProjName
		,bitInactive
		,strCustName
		,strCustDesc
		,strCenter
		,CASE 
			WHEN uidCenterID = '00000000-0000-0000-0000-000000000000'
				THEN NULL
			ELSE uidCenterID
			END
	FROM @tblUtilityProjectsDT
END
GO

CREATE PROCEDURE [dbo].[SaveUtilityCustomersEntityDetails] @tblUtilityCustomersDT
AS
[UtilityCustomersTableType] ReadOnly AS

BEGIN
	INSERT INTO tblUtilityCustomers (
		[strCustName]
		,[strCustDesc]
		,[strTaxCode]
		,[strTerm]
		,[strCurrency]
		,[strCustCategory]
		,[strStreet1]
		,[strStreet2]
		,[strCity]
		,[strProvince]
		,[strPostal]
		,[strPhone]
		,[strCellPhone]
		,[strFax]
		,[strEmail]
		,[strVAT]
		,[decCreditLimit]
		,[bitInactive]
		,[strContact]
		,[strField1]
		,[strField2]
		,[strField3]
		,[strField4]
		,[strField5]
		,[dteUpdated]
		,[dteSince]
		)
	SELECT *
	FROM @tblUtilityCustomersDT
END
GO

CREATE PROCEDURE [dbo].[GetManBOMID] (
	@PartNumber NVARCHAR(MAX)
	,@Location NVARCHAR(MAX)
	)
AS
BEGIN
	SELECT lngManBOMID AS ManBomID
		,*
	FROM tblManBOM
	WHERE strPartNumber = @PartNumber
		AND strLocation = @Location
END
GO
CREATE PROCEDURE [dbo].[GetAllVSDCRegisterConfig]
AS
BEGIN
	SET NOCOUNT ON;

	SELECT intVSDCRegisterConfigID AS ID
		,strVsdcTpin AS TPIN
		,strVsdcSerialNumber AS VSDCSerialNumber
		,strVsdcUrl AS [URL]
		,strVsdcBranchCode AS BranchCode
		,isDefault AS IsDefault
		,strRequest AS RequestData
		,strResponse AS ResponseData
	FROM dbo.tblVSDCRegisterConfig;
END
GO

CREATE PROCEDURE [dbo].[DeleteVSDCRegisterConfig] @IntVSDCRegisterConfigID INT
AS
BEGIN
	SET NOCOUNT ON;

	DELETE
	FROM dbo.tblVSDCRegisterConfig
	WHERE intVSDCRegisterConfigID = @IntVSDCRegisterConfigID;
END
GO

CREATE PROCEDURE [dbo].[AddUpdateVSDCRegisterConfig] @VSDCTpin VARCHAR(100)
	,@VSDCSerialNumber NVARCHAR(100)
	,@VSDCURL NVARCHAR(255)
	,@VSDCBranchCode VARCHAR(3)
	,@RequestData NVARCHAR(max)
	,@ResponseData NVARCHAR(max)
	,@IsDefault BIT
	,@intID INT = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @intID IS NOT NULL
		AND @intID > 0
	BEGIN
		UPDATE [dbo].[tblVSDCRegisterConfig]
		SET strVsdcSerialNumber = @VSDCSerialNumber
			,strVsdcTpin = @VSDCTpin
			,strVsdcUrl = @VSDCURL
			,isDefault = @IsDefault
			,strVsdcBranchCode = @VSDCBranchCode
			,strRequest = CASE 
				WHEN @RequestData IS NOT NULL
					THEN @RequestData
				ELSE strRequest
				END
			,strResponse = CASE 
				WHEN @ResponseData IS NOT NULL
					THEN @ResponseData
				ELSE strResponse
				END
			,dteRowUpdated = GETDATE()
		WHERE intVSDCRegisterConfigID = @intID;
	END
	ELSE
	BEGIN
		INSERT INTO [dbo].[tblVSDCRegisterConfig] (
			strVsdcTpin
			,strVsdcSerialNumber
			,strVsdcUrl
			,isDefault
			,strVsdcBranchCode
			,strRequest
			,strResponse
			,dteRowUpdated
			)
		VALUES (
			@VSDCTpin
			,@VSDCSerialNumber
			,@VSDCURL
			,@IsDefault
			,@VSDCBranchCode
			,@RequestData
			,@ResponseData
			,GETDATE()
			);
	END
END
GO

CREATE PROCEDURE [dbo].[GetAllVSDCLocationMappingList]
AS
BEGIN
	SELECT vlm.intMappingId AS MappingID
		,vlm.strLocName AS Location
		,vlm.strVsdcBranchCode AS VSDCBranchCode
	FROM tblVSDCLocationMapping vlm
END
GO

CREATE PROCEDURE [dbo].[AddUpdateVSDCLocationMapping] @location NVARCHAR(50)
	,@BranchCode VARCHAR(3)
	,@mappingID INT
AS
BEGIN
	DECLARE @currentDateTime DATETIME = GETDATE();

	IF @mappingID > 0
	BEGIN
		UPDATE tblVSDCLocationMapping
		SET strLocName = @location
			,strVsdcBranchCode = @BranchCode
			,dteRowUpdated = @currentDateTime
		WHERE intMappingId = @mappingID;
	END
	ELSE
	BEGIN
		INSERT INTO [dbo].[tblVSDCLocationMapping] (
			strVsdcBranchCode
			,strLocName
			,dteRowUpdated
			)
		VALUES (
			@BranchCode
			,@location
			,@currentDateTime
			);
	END
END
GO

CREATE PROCEDURE [dbo].[DeleteVSDCLocationMapping] @MappingID INT
AS
BEGIN
	SET NOCOUNT ON;

	DELETE
	FROM dbo.tblVSDCLocationMapping
	WHERE intMappingID = @MappingID;
END
GO

CREATE PROCEDURE DeleteZambiaClassificationCodeData
AS
BEGIN
	DELETE
	FROM tblZambiaItemClassifications
END
GO

CREATE PROCEDURE AddZambiaClassificationCodeData(@zambiaClsListDT AS ZambiaItemClassificationsTableType ReadOnly) AS

BEGIN
	INSERT INTO tblZambiaItemClassifications (
		[strItemClsCd]
		,[strItemClsNm]
		,[intItemClsLvl]
		,[strTaxTyCd]
		)
	SELECT strItemClsCd
		,strItemClsNm
		,intItemClsLvl
		,strTaxTyCd
	FROM @zambiaClsListDT
END
GO

CREATE PROCEDURE [dbo].[GetZRASettingsDefaultLocation] @UserName AS NVARCHAR(Max)  
AS  
BEGIN  
 SELECT strDefaultCompanyLocation AS DefaultCompanyLocation     
 FROM tblUsers  
 WHERE strUserName = @UserName  
END  
GO

CREATE PROCEDURE [dbo].[GetDeafultVSDCRegisterConfig]
AS
BEGIN
	SET NOCOUNT ON;

	SELECT intVSDCRegisterConfigID AS ID
		,strVsdcTpin AS TPIN
		,strVsdcSerialNumber AS VSDCSerialNumber
		,strVsdcUrl AS URL
		,strVsdcBranchCode AS BranchCode
		,isDefault AS IsDefault
		,strRequest AS RequestData
		,strResponse AS ResponseData
	FROM dbo.tblVSDCRegisterConfig
	WHERE isDefault = 1;
END
GO

CREATE PROCEDURE [dbo].[GetBranchCode] (@SQLoctionName VARCHAR(100))
AS
BEGIN
	SELECT tblVSDCLocationMapping.strVsdcBranchCode AS BranchCode
	FROM tblVSDCLocationMapping
	INNER JOIN tblUsers ON tblVSDCLocationMapping.strLocName = tblUsers.strDefaultCompanyLocation
	WHERE tblUsers.strDefaultCompanyLocation = @SQLoctionName
END
GO

CREATE PROCEDURE [dbo].[GetZRASettings] (@SQLoctionName VARCHAR(100))
AS
BEGIN
	SELECT intVSDCRegisterConfigID AS ID
		,strVsdcTpin AS TPIN
		,strVsdcSerialNumber AS VSDCSerialNumber
		,strVsdcUrl AS URL
		,tblVSDCRegisterConfig.strVsdcBranchCode AS BranchCode
		,isDefault AS IsDefault
		,strRequest AS RequestData
		,strResponse AS ResponseData
	FROM dbo.tblVSDCRegisterConfig
	INNER JOIN tblVSDCLocationMapping ON tblVSDCRegisterConfig.strVsdcBranchCode = tblVSDCLocationMapping.strVsdcBranchCode
	WHERE tblVSDCRegisterConfig.strVsdcBranchCode = @SQLoctionName
END
GO

CREATE PROCEDURE GetZambiaItemTaxCode (@PartNumber NVARCHAR(200))
AS
BEGIN
	SELECT strZambiaItemTaxCode
	FROM tblInvItemTax
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[GetZambiaItemDetailsBasedOnPartNumber]   
    @partNumber AS NVARCHAR(200)  
AS  
BEGIN  
    IF NOT EXISTS (SELECT 1 FROM tblInv WHERE strPartNumber = @partNumber)  
    BEGIN  
        SELECT 'Part Number Not Found' AS ErrorMsg,   
               'EA' AS StockUnit,  
               '' AS strZmbClsCode,  
               'A' AS TaxCode,  
               '' AS strZmbItemCode,  
               CAST(0.00 AS DECIMAL) AS MinTaxValue,  
               cast(0 as bit) AS IsUsedMTV;  
    END  
    ELSE  
    BEGIN  
        DECLARE @defZmbtemCd NVARCHAR(200),  
                @maxCount NVARCHAR(20),  
                @type NVARCHAR(5),  
                @stockUnit NVARCHAR(10),  
                @newDefaultCode NVARCHAR(200),  
                @ItemClsName NVARCHAR(400);  
  
        -- Retrieve the current Zambia Item Code  
        SELECT @defZmbtemCd = strZambiaItemCode,  
               @ItemClsName = strZambiaItemClassificationName  
        FROM tblInv  
        WHERE strPartNumber = @partNumber;  
  
        -- Retrieve the maximum item code counter, handle NULL values  
        --SELECT @maxCount = ISNULL(MAX(strZMBItemCodeCounter), '000000')  
        --FROM tblInv;  
  
        IF @defZmbtemCd IS NULL  
        BEGIN  
            -- Generate default Zambia Item code  
            SELECT @type = CAST(intType AS NVARCHAR),  
                   @stockUnit = strStockUnit  
            FROM tblInv  
            WHERE strPartNumber = @partNumber;  
  
  
            IF @type = 4  
                SET @type = 3;  
            ELSE  
                SET @type = 2;  
  
            -- Increment Count by one if @maxCount is not NULL  
            --IF @maxCount IS NOT NULL  
            --BEGIN  
                SET @maxCount = FORMAT(SYSDATETIME(), 'yyyyMMddHHmmssfff');;  
                -- Generate new default code  
                SET @newDefaultCode = 'ZM' + @type + 'NT' + @stockUnit + @maxCount;  
  
                -- Set Default Code for that Item  
                UPDATE tblInv  
                SET strZambiaItemCode = @newDefaultCode,  
                    strZMBItemCodeCounter = @maxCount  
                WHERE strPartNumber = @partNumber;  
            --END  
        END  
    
        IF @ItemClsName IS NOT NULL AND @ItemClsName <> ''  
        BEGIN  
            SELECT ISNULL(strStockUnit, '') AS StockUnit,  
                   ISNULL(tblZambiaItemClassifications.strItemClsCd,'') AS strZmbClsCode,  
                   tblInvItemTax.strZambiaItemTaxCode AS TaxCode,  
                   strZambiaItemCode AS strZmbItemCode,  
                   ISNULL(tblInvItemTax.decMinTaxAmount, 0.00) AS MinTaxValue,  
                   cast(ISNULL(bitUseMTV, 0) as bit) AS IsUsedMTV  
            FROM tblInv  
            LEFT JOIN tblInvItemTax ON tblInv.strPartNumber = tblInvItemTax.strPartNumber  
            JOIN tblZambiaItemClassifications ON tblInv.strZambiaItemClassificationName = tblZambiaItemClassifications.strItemClsNm  
            WHERE tblInv.strPartNumber = @partNumber;  
        END  
        ELSE  
        BEGIN  
            SELECT ISNULL(strStockUnit, '') AS StockUnit,  
                   '' AS strZmbClsCode,  
                   tblInvItemTax.strZambiaItemTaxCode AS TaxCode,  
                   strZambiaItemCode AS strZmbItemCode,  
                   ISNULL(tblInvItemTax.decMinTaxAmount, 0.00) AS MinTaxValue,  
                   cast(ISNULL(bitUseMTV, 0) as bit) AS IsUsedMTV  
            FROM tblInv  
            LEFT JOIN tblInvItemTax ON tblInv.strPartNumber = tblInvItemTax.strPartNumber  
            WHERE tblInv.strPartNumber = @partNumber;  
        END  
    END  
END  
GO

CREATE PROCEDURE [dbo].[GetZRATaxRate] @TaxCode AS NVARCHAR(Max)
AS
BEGIN
	SELECT strTaxCode AS TaxCode
		,decRate AS Rate
		,bitRefundable AS IsRefundable
		,bitIncluded AS IsIncluded
		,*
	FROM tblTaxCodeExt
	WHERE strTaxcode = @TaxCode
END
GO

CREATE PROCEDURE [dbo].[GetCreditNoteInvoiceDocDetails] (@InvoiceDocID VARCHAR(50))
AS
BEGIN
	SELECT rcptNumber AS rcptNo
		,strsdcId AS sdcId
		,*
	FROM tblEFDInvoiceDoc
	WHERE strInvDocID = @InvoiceDocID AND intTransactionType = 0         --- 0 refers to SALES transaction
END
GO

CREATE PROCEDURE GetZambiaClassificationList
AS
BEGIN
	SELECT [lngID] AS ID
		,[strItemClsCd] AS ItemClsCd
		,[strItemClsNm] AS ItemClsNm
		,[intItemClsLvl] AS ItemClsLvl
	FROM [tblZambiaItemClassifications]
	order by strItemClsNm 
END
GO

CREATE PROCEDURE GetDefaultItemCounterforZmb
AS
BEGIN
	SELECT MAX(strZMBItemCodeCounter)
	FROM tblInv
END
GO

CREATE PROCEDURE InsertblJournalEntryDocApprovalPendingDT (
	@REName AS NVARCHAR(100)
	,@Module AS INT
	,@GeDept AS INT
	,@CuVeGeID AS NVARCHAR(100)
	,@CuVeGeDesc AS NVARCHAR(400)
	,@LineReference AS NVARCHAR(400)
	,@GLNumber AS NVARCHAR(60)
	,@Dept AS INT
	,@Desc AS NVARCHAR(400)
	,@TaxType AS INT
	,@LineTotExc AS MONEY
	,@LineTaxAmt AS MONEY
	,@LineTotInc AS MONEY
	,@TaxCode AS NVARCHAR(4)
	,@Formula AS NVARCHAR(200)
	,@Currency AS NVARCHAR(6)
	,@IsForeign AS BIT
	,@Exchange AS DECIMAL
	,@DebitsF AS MONEY
	,@CreditsF AS MONEY
	,@Debits AS MONEY
	,@Credits AS MONEY
	,@ForeignAcct AS BIT
	,@Verified AS BIT
	,@LineNo AS INT
	,@TaxObj AS IMAGE
	,@LineComment AS NVARCHAR(400)
	)
AS
BEGIN
	INSERT INTO tblJournalEntryDocApprovalPendingDT
	VALUES (
		@REName
		,@Module
		,@CuVeGeID
		,@GeDept
		,@CuVeGeDesc
		,@LineReference
		,@LineComment
		,@Debits
		,@Credits
		,@GLNumber
		,@Dept
		,@Desc
		,@TaxType
		,@LineTotExc
		,@LineTaxAmt
		,@LineTotInc
		,@TaxCode
		,@TaxObj
		,@Formula
		,@Currency
		,@Exchange
		,@ForeignAcct
		,@DebitsF
		,@CreditsF
		,@Verified
		,@LineNo
		)
END
GO

CREATE PROCEDURE [dbo].[GetBOMSelectedItemData] (@SQManBOMID INT)
AS
BEGIN
	SELECT tblManBOM.strPartNumber AS PartNumber
		,tblManBOM.strDesc AS Description
		,tblManBOM.strLocation AS Location
		,tblInv.strStockUnit AS Unit
	FROM tblManBOM
	INNER JOIN tblInv ON tblManBOM.strPartNumber = tblInv.strPartNumber
	WHERE tblManBOM.lngManBOMID = @SQManBOMID
	ORDER BY tblManBOM.strPartNumber
END
GO

CREATE PROCEDURE [dbo].[GetDataForNotificationForJE] @DocNumber AS NVARCHAR(100)
AS
BEGIN
	SELECT JEDT.dteDateCreated AS CreatedDateTime
		,JEDT.strUserName AS CreatedUserName
		,tblUsers.strEmail AS Email
		,tblUsers.strCellNumber AS CellNumber
	FROM tblJournalEntryDocApprovalPending AS JEDT
	LEFT JOIN tblUsers ON JEDT.strUserName = tblUsers.strUserName
	WHERE JEDT.strJENo = @DocNumber
END
GO

CREATE PROCEDURE DeclineTrackingDatarecordJE @DocID VARCHAR(100)
	,@ReqQuoteDocID VARCHAR(20)
	,@DateofApproval VARCHAR(50)
	,@DocTotalIncl DECIMAL(10)
	,@DocCreatorUsername VARCHAR(50)
	,@ApproverUsername VARCHAR(50)
	,@DocCreationDate DATETIME
	,@DeclineReasonCodeText NVARCHAR(MAX)
	,@ShowStatus BIT
AS
BEGIN
	UPDATE tblJournalEntryDocApprovalPending
	SET bitPosted = 1
	WHERE strJENo = @DocID

	INSERT INTO tblGLApprovalTracking
	VALUES (
		@DocID
		,@ReqQuoteDocID
		,@DocTotalIncl
		,@DocCreatorUsername
		,@ApproverUsername
		,@DocCreationDate
		,@DateofApproval
		,@DeclineReasonCodeText
		,@ShowStatus
		)
END
GO

CREATE PROCEDURE [dbo].[GetDeliveryMethodsDataCount] @InActive BIT = 0
	,@Search AS NVARCHAR(Max) = ''
AS
BEGIN
	IF (@InActive = 0)
	BEGIN
		SELECT count(*)
		FROM tblDeliveryMethods
		WHERE bitInactive = 0
			AND (
				ISNULL(strDelMethodCode, '') LIKE '%' + ISNULL(@search, strDelMethodCode) + '%'
				OR ISNULL(strDelMethodDesc, '') LIKE '%' + ISNULL(@search, strDelMethodDesc) + '%'
				)
	END
	ELSE
	BEGIN
		SELECT count(*)
		FROM tblDeliveryMethods
		WHERE (
				ISNULL(strDelMethodCode, '') LIKE '%' + ISNULL(@search, strDelMethodCode) + '%'
				OR ISNULL(strDelMethodDesc, '') LIKE '%' + ISNULL(@search, strDelMethodDesc) + '%'
				)
	END
END
GO

CREATE PROCEDURE [dbo].[GetInvCountPDTDefaultBinLocation] (
	@PartNumber NVARCHAR(200)
	,@Loc NVARCHAR(200)
	)
AS
BEGIN
	SELECT tblInvLocBin.strBinCode AS BinCode
	FROM tblInvExtBin
	INNER JOIN tblInvLocBin ON tblInvLocBin.lngID = tblInvExtBin.lngBinID
	WHERE strPartNumber = @PartNumber
		AND tblInvExtBin.strLocName = @Loc
END
GO

CREATE PROCEDURE [dbo].[FillDataSalesInvoice](
@DocNumber NVARCHAR(100),
@LocationCriteria NVARCHAR(50),
@CustName NVARCHAR(50),
@IsDisplayLogo bit,
@IsDeliveryNote bit = 0,
@IsCustStockCodes bit
)
AS
BEGIN
	 SELECT tblInvoiceDoc.*, ISNULL(tblDeliveryMethods.bitDisplay,0) AS bitDisplay FROM tblInvoiceDoc LEFT JOIN tblDeliveryMethods ON tblInvoiceDoc.strDelMethodCode = tblDeliveryMethods.strDelMethodCode WHERE strInvDocID = @DocNumber
 
	 IF @IsCustStockCodes = 1
	 BEGIN
	 SELECT tblInvoiceDocDT.*, tblInvoiceDocDTPrj.strProjNumber, tblProjects.strProjName, tblInv.strBarCode, tblInv.strBarCode2, (SELECT bitInvImgOnSI FROM tblCoOpts) AS bitShowImage, tblInvImg.imgData AS imgImage, tblInvoiceDocDT.strPartExtendedDesc AS strExtendedDesc, tblInv.bitInvExtDescOnSI AS bitShowExtendedDesc, ISNULL(tblInvCustomer.strItemCode, '') AS strItemCode, ISNULL(tblInvCustomer.strItemDesc, '') AS strItemDesc FROM tblInvoiceDocDT INNER JOIN tblInvoiceDoc ON tblInvoiceDocDT.strInvDocID = tblInvoiceDoc.strInvDocID INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo LEFT JOIN tblProjects ON tblInvoiceDocDTPrj.strProjNumber = tblProjects.strProjNumber LEFT JOIN tblInvImg ON tblInvoiceDocDT.strPartNumber = tblInvImg.strPartNumber AND tblInvImg.bitDefaultImage = 1 LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber AND tblInvoiceDoc.strCustName = tblInvCustomer.strCustName WHERE tblInvoiceDocDT.strInvDocID = @DocNumber AND tblInvoiceDocDT.bitDiscountTax = 0 ORDER BY tblInvoiceDocDT.intLineNo
	 END
	 ELSE
	 BEGIN
	 SELECT tblInvoiceDocDT.*, tblInvoiceDocDTPrj.strProjNumber, tblProjects.strProjName, tblInv.strBarCode, tblInv.strBarCode2, (SELECT bitInvImgOnSI FROM tblCoOpts) AS bitShowImage, tblInvImg.imgData AS imgImage, tblInvoiceDocDT.strPartExtendedDesc AS strExtendedDesc, tblInv.bitInvExtDescOnSI AS bitShowExtendedDesc, '' AS strItemCode, '' AS strItemDesc FROM tblInvoiceDocDT INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblInvoiceDocDTPrj ON tblInvoiceDocDT.strInvDocID = tblInvoiceDocDTPrj.strInvDocID AND tblInvoiceDocDT.intLineNo = tblInvoiceDocDTPrj.intLineNo LEFT JOIN tblProjects ON tblInvoiceDocDTPrj.strProjNumber = tblProjects.strProjNumber LEFT JOIN tblInvImg ON tblInvoiceDocDT.strPartNumber = tblInvImg.strPartNumber AND tblInvImg.bitDefaultImage = 1 WHERE tblInvoiceDocDT.strInvDocID = @DocNumber AND tblInvoiceDocDT.bitDiscountTax = 0 ORDER BY tblInvoiceDocDT.intLineNo
	 END
 
	 SELECT tblInvoiceDocDTSerial.*, ISNULL(tblInvSerialExt.bitDimensionExist,0) AS bitDimensionExist, ISNULL(tblInvSerialExt.strDimension,'') AS strDimension FROM tblInvoiceDocDTSerial INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTSerial.strInvDocID = tblInvoiceDocDT.strInvDocID AND tblInvoiceDocDTSerial.intLineNo = tblInvoiceDocDT.intLineNo LEFT JOIN tblInvSerialExt ON tblInvoiceDocDT.strPartNumber = tblInvSerialExt.strPartNumber AND tblInvoiceDocDTSerial.strSerialNumber = tblInvSerialExt.strSerialNumber INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType WHERE tblInvoiceDocDTSerial.strInvDocID = @DocNumber AND tblInvSerialTypes.bitPrintInv = 1 ORDER BY tblInvoiceDocDTSerial.intLineNo
	 SELECT strCustName ,strStreet1 ,strStreet2 ,strCity ,strProvince ,strPostal ,strPhone ,strCellPhone ,strFax ,strEmail ,strVAT ,strCK ,decBalDue ,decYTDPurch ,decOpenOrders ,intDelMethod ,bitCreditCtrl ,decCreditLimit ,bitCreditHold ,bitInactive ,dteUpdated ,strContact ,strField1 ,strField2 ,strField3 ,strField4 ,strField5 ,strField6 ,strTaxCode ,dteSince ,strNotes ,strPricelist ,uID ,decIntRate ,strCustDesc ,strCountry ,strTerm ,intDept ,strCurrency ,decBalDueF ,decYTDPurchF ,decOpenOrdersF ,strField7 ,strField8 ,strField9 ,strField10 ,strField11 ,strField12 ,strEmailInv ,strEmailStat ,strCustCategory ,strCountryCode ,strTenderType ,decTradeDiscPerc ,decCreditLimitOverride ,dteCreditLimitExpiryDate ,intPartialBackorders ,bitWithholdTax ,strWithholdTaxCode ,strINVFormDocName ,strORDFormDocName ,bitMatrixType ,strMatrixType ,strParentCust ,strValueBased ,bitInvWorkflowNew ,bitInvWorkflowDA ,bitInvWorkflowSO ,strWebsite ,strRSTTerminalSync ,strContact2 ,strSuburb ,strEmailOso ,intNAPrintMethod ,strDelMethodCode ,strField13 ,strField14 ,strField15 ,strField16 ,strFacebook ,strLinkedIn ,strField17 ,strField18 ,bitExclCommission ,streComPassword ,dteRowUpdated ,intGLNumberAR ,intGLNumberDeposit ,imgPicture ,strDocPassword ,blnIsSynctwebstore ,strWebstoreEmail ,strCustomerType FROM tblCustomers WHERE strCustName = @CustName
	 SELECT * FROM tblInvoiceDocSplitPmt WHERE strInvDocID = @DocNumber
	 SELECT tblInvBOM.strPartNumber, tblInvoiceDocDT.intLineNo, tblInvBOM.strPartItemNumber, tblInvBOM.intQtyToUse, tblInvBOM.strLocName FROM tblInvBOM INNER JOIN tblInvoiceDocDT ON tblInvBOM.strPartNumber = tblInvoiceDocDT.strPartNumber INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber WHERE tblInvoiceDocDT.strInvDocID = @DocNumber AND tblInv.bitAutoBuild = 1
	 SELECT imgLogo, @IsDisplayLogo AS bitDisplayLogo FROM tblCompany
	 SELECT tblInvoiceDocDTVouchers.* FROM tblInvoiceDocDTVouchers INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTVouchers.strInvDocID = tblInvoiceDocDT.strInvDocID AND tblInvoiceDocDTVouchers.intLineNo = tblInvoiceDocDT.intLineNo WHERE tblInvoiceDocDTVouchers.strInvDocID = @DocNumber ORDER BY tblInvoiceDocDTVouchers.intLineNo
	 SELECT Distinct strPartNumber,strDesc,intType,strCategory, intExpAcct,decCostOnPO,bitUseLPPOnPO,intReorderQty,strBuyUnit,strStockUnit,decBuyToStock,bitAllowPriceChg,dteDateLastSale,dteLastPurchase,decLastPPUnit,dteLastUpdated,bitUseBOM,intBOMQty,strAddInfo,bitInactive,decSumAvail,decSumAlloc,decSumOnHand,decSumValue, decSumOnOrder,decSumOpenQty,decSumOpenValue,decSumValYearStart,decSumQtyYearStart,decSumAmtSoldYTD,decSumAmtSoldLY,decSumQtySoldYTD,decSumQtySoldLY,decSumCOGSYTD,decSumCOGSLY,intSumNumTransYTD,intSumNumTransLY,bitAutoBuild,strField1,strField2,strField3,strField4,strField5,strField6,strBarCode,decStandardCost,bitItemNumConvUsed,strSellUnit,strSellStockUnit, decSellFromStock,strItemSegment1,strItemSegment2,strItemSegment3,strItemSegment4,strInvNumConv,bitInvSerialType,strInvSerialType,decRepairCharge,strBarCode2,bitVoucherEnabled,strVoucherCode,decDefSaleQty,strExtendedDesc,bitInvExtDescOnSI,bitInvExtDescOnSO,bitInvExtDescOnSQ,bitInvExtDescOnSFHQ,bitInvExtDescOnCR,bitInvExtDescOnPI,bitInvExtDescOnPO,bitInvExtDescOnPQ,bitWebstoreItem, strDimProCode,strRSTTerminalSync,intDecimalQuantity,strBOMNotes,bitInvExtDescOnBRQ, decMass, decVolumetricWeight, strUnitOfMeasure, decW, decH, decD, decCube, decFactor,bitInactive As bitLocActive   FROM dbo.fnTblInvLocations(@LocationCriteria) tblInv WHERE strPartNumber IN (SELECT DISTINCT strPartNumber FROM tblInvoiceDocDT WHERE strInvDocID = @DocNumber AND bitDiscountTax = 0) And ISNULL(bitLocActive,0) = 0
	 SELECT * FROM tblInvoiceDocDimensions WHERE strInvDocID = @DocNumber
	 SELECT tblDeliveryMethods.* FROM tblDeliveryMethods INNER JOIN tblInvoiceDoc ON tblDeliveryMethods.strDelMethodCode = tblInvoiceDoc.strDelMethodCode WHERE tblInvoiceDoc.strInvDocID = @DocNumber
	 Select BOM.strPartNumber,INV2.strDesc,COMP.strPartNumber As strCompNumber,INV.strDesc As strCompDesc,DTL.intLineNo,ROUND((COMP.decQty * (DTL.decStockQty / BOM.decQty)), 4) As decQty,INV.strStockUnit As strUnit FROM tblInvoiceDocDT DTL INNER JOIN tblManBOM BOM On DTL.strPartNumber = BOM.strPartNumber AND DTL.strLocation = BOM.strLocation INNER JOIN tblManBOMCompInv COMP On BOM.lngManBOMID = COMP.lngManBOMID INNER JOIN tblInv INV On COMP.strPartNumber = INV.strPartNumber INNER JOIN tblInv INV2 On BOM.strPartNumber = INV2.strPartNumber LEFT JOIN tblInvBOM On tblInvBOM.strPartNumber = DTL.strPartNumber WHERE (DTL.strInvDocID = @DocNumber) And (BOM.bitInactive = 0)   And ((@IsDeliveryNote = 1 And  BOM.bitPrintDN = 1) or (@IsDeliveryNote = 0 And  BOM.bitPrintInv = 1))  And tblInvBOM.strPartNumber Is NULL UNION ALL SELECT tblInvoiceDocDT.strPartNumber ,Inv2.strDesc ,tblInvoiceDocDTBOM.strPartItemNumber AS strCompNumber ,tblInv.strDesc AS strCompDesc ,tblInvoiceDocDT.intLineNo ,tblInvoiceDocDTBOM.decQty intQtyToUse ,tblInv.strUnitOfMeasure FROM tblInvoiceDocDTBOM INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTBOM.strInvDocID = tblInvoiceDocDT.strInvDocID AND tblInvoiceDocDTBOM.intMainLineNo = tblInvoiceDocDT.intLineNo INNER JOIN tblInv ON tblInvoiceDocDTBOM.strPartItemNumber = tblInv.strPartNumber INNER JOIN tblInv Inv2 ON tblInvoiceDocDT.strPartNumber = Inv2.strPartNumber WHERE tblInvoiceDocDT.strInvDocID = @DocNumber AND Inv2.bitAutoBuild = 1 AND Inv2.bitPrintComp = 1 ORDER BY BOM.strPartNumber ,COMP.strPartNumber
	 SELECT InsuranceRate AS decInsurance, Deposit AS decDeposit, (Total - Deposit) AS decFinValue, ROUND((decFcPrtn * (InstallmentPeriod - 1)), 2) + decFcLastPrtn AS decFinCharge, InstallmentPeriod AS intInstallPeriod, InstallmentAmount AS decInstallAmount, FirstInstallmentDate AS dteFirstInstallDate, LastInstallment AS decLastInstallAmount, PP.strCurrency, CUR.strCurrSymbol, bitIsForeign, decExchange, InsuranceRateF AS decInsuranceF, DepositF AS decDepositF, (TotalF - DepositF) AS decFinValueF, ROUND((decFcPrtnF * (InstallmentPeriod - 1)), 2) + decFcLastPrtnF AS decFinChargeF, InstallmentAmountF AS decInstallAmountF, LastInstallmentF AS decLastInstallAmountF FROM tblPaymentPlan PP LEFT JOIN tblCurrency CUR ON PP.strCurrency = CUR.strCurrency WHERE strInvDocID = @DocNumber
	 SELECT strInvDocId,intLineNo,lngBinId,strBinCode=(SELECT strBinCode FROM tblInvLocBin WHERE lngId=tblInvoiceDocDTBin.lngBinId),decQty FROM tblInvoiceDocDTBin WHERE strInvDocID = @DocNumber
	 Select lngDocumentID,strDocumentNumber,varFile,intSize,bitIsSignature,strSignatureName from tblDocuments where strDocumentNumber=@DocNumber and bitIsSignature = 1
END
GO

CREATE PROCEDURE GetApproverUserName @DocNumber AS NVARCHAR(20)
AS
BEGIN
	SELECT strApproverUsername
	FROM tblGLApprovalTracking
	WHERE strNewGLDocID = @DocNumber
		AND blnShowStatus = 1
END
GO

CREATE PROCEDURE GetJEDocIDFromBankManagerBatchDT @SourceDoc AS NVARCHAR(100)
AS
BEGIN
	SELECT strJEDocID AS JEDocID
	FROM tblBankManagerBatchDT
	WHERE (strBMDocID = @SourceDoc)
		AND (ISNULL(strJEDocID, '') <> '')
END
GO

CREATE PROCEDURE GetJEIdFromjournalEntryDocCB @JEDocID AS NVARCHAR(100)
AS
BEGIN
	SELECT lngJourID AS JournalID
		,dteJournalDate AS JournalDate
	FROM tblJournalEntryDocCB
	WHERE strJEDocID = @JEDocID
END
GO

CREATE PROCEDURE [dbo].[GetInvTrfOrdDocForUserName] (@DocNumber AS NVARCHAR(MAX))
AS
SELECT strUserName AS UserName
FROM tblInvTrfOrdDoc
WHERE strInvTrfOrdDocID = @DocNumber
GO

CREATE PROCEDURE [dbo].[UpdateBankManagerBatchDTForPayment] @BMDocID NVARCHAR(100)
	,@LineNo INT
	,@JEDocID NVARCHAR(100)
	,@JEType INT
	,@JELineNo INT
AS
BEGIN
	UPDATE tblBankManagerBatchDT
	SET strJEDocID = @JEDocID
		,intJEType = @JEType
		,intJELineNo = @JELineNo
	WHERE (strBMDocID = @BMDocID)
		AND (UPPER(strDocumentType) = 'PAYMENT')
		AND (intLineNo = @LineNo)
END
GO

CREATE PROCEDURE [dbo].[GetCustRptsDataList] (
	@PageNumber INT = 1
	,@Pagesize INT = 25
	)
AS
BEGIN
	DECLARE @Offset INT

	SET @Offset = @PageSize * (@PageNumber - 1);

	WITH Result1
	AS (
		SELECT strNAme AS [Name]
			,strDesc AS [Desc]
			,intModule AS Module
			,strPath AS Path
		FROM tblCustRpt
		)
	SELECT *
	FROM (
		SELECT Result1.*
			,ROW_NUMBER() OVER (
				ORDER BY [Name] ASC
				) RowNumber
		FROM Result1
		) AS Result2
	WHERE RowNumber >= (@Offset + 1)
		AND RowNumber <= (@Offset + @PageSize)
	ORDER BY Name
END
GO

CREATE PROCEDURE [dbo].[AddUpdatetblVSDCRegisterConfig] @tblData
AS
VSDCRegisterConfigTableType READONLY AS

BEGIN
	SET IDENTITY_INSERT tblVSDCRegisterConfig ON

	BEGIN
		INSERT INTO tblVSDCRegisterConfig (
			[intVSDCRegisterConfigID]
			,[strVsdcTpin]
			,[strVsdcSerialNumber]
			,[strVsdcUrl]
			,[strVsdcBranchCode]
			,[isDefault]
			,[strRequest]
			,[strResponse]
			,[dteRowUpdated]
			)
		SELECT [intVSDCRegisterConfigID]
			,[strVsdcTpin]
			,[strVsdcSerialNumber]
			,[strVsdcUrl]
			,[strVsdcBranchCode]
			,[isDefault]
			,[strRequest]
			,[strResponse]
			,[dteRowUpdated]
		FROM @tblData AS t
		WHERE NOT EXISTS (
				SELECT 1
				FROM tblVSDCRegisterConfig
				WHERE intVSDCRegisterConfigID = t.intVSDCRegisterConfigID
				)
	END

	BEGIN
		UPDATE table1
		SET table1.strVsdcTpin = table2.strVsdcTpin
			,table1.strVsdcSerialNumber = table2.strVsdcSerialNumber
			,table1.strVsdcUrl = table2.strVsdcUrl
			,table1.strVsdcBranchCode = table2.strVsdcBranchCode
			,table1.isDefault = table2.isDefault
			,table1.strRequest = table2.strRequest
			,table1.strResponse = table2.strResponse
		FROM tblVSDCRegisterConfig AS table1
		INNER JOIN @tblData AS table2 ON table1.intVSDCRegisterConfigID = table2.intVSDCRegisterConfigID
	END

	SET IDENTITY_INSERT tblVSDCRegisterConfig OFF
END
GO

CREATE PROCEDURE [dbo].[AddUpdatetblVSDCLocationMapping] @tblData
AS
VSDCLocationMappingTableType READONLY AS

BEGIN
	SET IDENTITY_INSERT tblVSDCLocationMapping ON

	BEGIN
		INSERT INTO tblVSDCLocationMapping (
			[intMappingID]
			,[strVsdcBranchCode]
			,[strLocName]
			,[dteRowUpdated]
			)
		SELECT [intMappingID]
			,[strVsdcBranchCode]
			,[strLocName]
			,[dteRowUpdated]
		FROM @tblData AS t
		WHERE NOT EXISTS (
				SELECT 1
				FROM tblVSDCLocationMapping
				WHERE intMappingID = t.intMappingID
				)
	END

	BEGIN
		UPDATE table1
		SET table1.strVsdcBranchCode = table2.strVsdcBranchCode
			,table1.strLocName = table2.strLocName
		FROM tblVSDCLocationMapping AS table1
		INNER JOIN @tblData AS table2 ON table1.intMappingID = table2.intMappingID
	END

	SET IDENTITY_INSERT tblVSDCLocationMapping OFF
END
GO

CREATE PROCEDURE [dbo].[AddUpdatetblZambiaItemClassifications] @tblData
AS
ZambiaItemClassificationsTableType READONLY AS

BEGIN
	SET IDENTITY_INSERT tblZambiaItemClassifications ON

	BEGIN
		INSERT INTO tblZambiaItemClassifications (
			[lngID]
			,[strItemClsCd]
			,[strItemClsNm]
			,[intItemClsLvl]
			,[strTaxTyCd]
			,[dteRowUpdated]
			)
		SELECT [lngID]
			,[strItemClsCd]
			,[strItemClsNm]
			,[intItemClsLvl]
			,[strTaxTyCd]
			,[dteRowUpdated]
		FROM @tblData AS t
		WHERE NOT EXISTS (
				SELECT 1
				FROM tblZambiaItemClassifications
				WHERE lngID = t.lngID
				)
	END

	BEGIN
		UPDATE table1
		SET table1.strItemClsCd = table2.strItemClsCd
			,table1.strItemClsNm = table2.strItemClsNm
			,table1.intItemClsLvl = table2.intItemClsLvl
			,table1.strTaxTyCd = table2.strTaxTyCd
		FROM tblZambiaItemClassifications AS table1
		INNER JOIN @tblData AS table2 ON table1.lngID = table2.lngID
	END

	SET IDENTITY_INSERT tblZambiaItemClassifications OFF
END
GO

CREATE PROCEDURE [dbo].[AddUpdatetblCompanyLoc] @tblData
AS
CompanyLocTableType READONLY AS

BEGIN
	DELETE
	FROM tblCompanyLoc
	WHERE strLocName NOT IN (
			SELECT strLocName
			FROM @tblData
			)

	BEGIN
		UPDATE tblCompanyLoc
		SET strLocName = table2.strLocName
			,strStreet1 = table2.strStreet1
			,strStreet2 = table2.strStreet2
			,strCity = table2.strCity
			,strProvince = table2.strProvince
			,strPostal = table2.strPostal
			,strCountry = table2.strCountry
			,strCountryCode = table2.strCountryCode
		FROM tblCompanyLoc AS table1
		INNER JOIN @tblData AS table2 ON table1.strLocName = table2.strLocName
	END

	BEGIN
		INSERT INTO [tblCompanyLoc] (
			[strLocName]
			,[strStreet1]
			,[strStreet2]
			,[strCity]
			,[strProvince]
			,[strPostal]
			,[strCountry]
			,[strCountryCode]
			)
		SELECT [strLocName]
			,[strStreet1]
			,[strStreet2]
			,[strCity]
			,[strProvince]
			,[strPostal]
			,[strCountry]
			,[strCountryCode]
		FROM @tblData AS t
		WHERE NOT EXISTS (
				SELECT 1
				FROM tblCompanyLoc
				WHERE strLocName = t.strLocName
				)
	END
END
GO

CREATE PROCEDURE [dbo].[GetInvCountPDTExtBinData] (
	@Loc AS NVARCHAR(MAx)
	,@PartNumber AS NVARCHAR(200)
	,@BinLoc AS NVARCHAR(200)
	)
AS
BEGIN
	SELECT decAvail AS Avail
		,decOnHand AS OnHand
	FROM tblInvExtBin
	WHERE strLocName = @Loc
		AND strPartNumber = @PartNumber
		AND tblInvExtBin.lngBinID = (
			SELECT lngID
			FROM tblInvLocBin
			WHERE strLocName = @Loc
				AND strBinCode = @BinLoc
			)
END
GO

CREATE PROCEDURE [dbo].[GetDepreciationMethodData] (
	@InActive BIT = NULL
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@Search NVARCHAR(50) = NULL
	)
AS
BEGIN
	DECLARE @skip INT

	SET @skip = @PageSize * (@PageNumber - 1)

	SELECT strCode AS Code
		,strDescription AS Description
		,intCalculationMethod AS CalculationMethod
		,bitInactive AS Isactive
		,decPercentage AS [Percentage]
		,intYears AS Years
		,decIniPercentage AS InitialPercentage
	FROM tblDepreciationMethods
	WHERE bitInactive IN (
			0
			,ISNULL(@InActive, 1)
			)
		AND (
			strCode LIKE ('%' + @Search + '%')
			OR strDescription LIKE ('%' + @Search + '%')
			OR @Search IS NULL
			)
	ORDER BY strCode OFFSET(@Skip) ROWS

	FETCH NEXT (@PageSize) ROWS ONLY
END
GO

CREATE PROCEDURE [dbo].[DeleteInvImage] @PartNumber AS NVARCHAR(50)
AS
BEGIN
	DELETE
	FROM tblInvImg
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [GetCombinePricelistData] @IsStockUnit BIT
	,@StartDate DATETIME
	,@EndDate DATETIME
	,@SelectedStatus INT
AS
BEGIN
	DECLARE @priceBaseId UNIQUEIDENTIFIER
		,@pricelist NVARCHAR(100)

	SELECT @pricelist = strPricelist
		,@priceBaseId = uidPriceBasedID
	FROM tblPriceListsByDate
	WHERE dteStartDate = @StartDate
		AND dteFinishDate = @EndDate;

	SELECT invtable.strPartNumber AS PartNumber
		,invtable.strDesc AS Description
		,Round(invPrice.decSelling, 4) AS Selling
		,Round(invtable.decSellFromStock, 4) AS SellFromStock
		,invPrice.strUnit AS Unit
		,invPrice.bitStockUnit AS IsStockUnit
		,@priceBaseId AS uidPriceBasedID
		,@pricelist AS PriceList
	FROM tblInv AS invtable
	INNER JOIN tblInvPrice AS invPrice ON invtable.strPartNumber = invPrice.strPartNumber
	WHERE invtable.intType != 5
		AND invtable.bitOtherCmp = 0
		AND (
				@SelectedStatus = 0 -- show all
				OR (@SelectedStatus = 1 AND invtable.bitInactive = 0) -- only active
				OR (@SelectedStatus = 2AND invtable.bitInactive = 1) -- only inactive
			)
		AND invPrice.uidPriceBasedID = @priceBaseId
	GROUP BY invtable.strPartNumber
		,invtable.strDesc
		,invtable.decSellFromStock
		,invPrice.strUnit
		,invPrice.bitStockUnit
		,invPrice.decSelling;
END
GO

CREATE PROCEDURE GetCombinedPriceListDataByPartNumber @PartNumber NVARCHAR(50) = NULL
	,@Unit NVARCHAR(50)
	,@Pricelist NVARCHAR(50)
	,@UidPriceBasedID UNIQUEIDENTIFIER
	,@IsStocking BIT
AS
BEGIN
	IF @PartNumber IS NULL
		OR @PartNumber = ''
	BEGIN
		SELECT invPricetable.strPartNumber AS PartNumber
			,invPricetable.uidPriceBasedID AS PriceBasedID
			,invPricetable.strPricelist AS Pricelist
			,Round(invPricetable.decSelling, 4) AS Selling
			,Round(invtable.decSellFromStock, 4) AS SellFromStock
		FROM tblInvPrice invPricetable
		LEFT JOIN tblInv invtable ON invPricetable.strPartNumber = invtable.strPartNumber
	END
	ELSE
	BEGIN
		SELECT invPricetable.strPartNumber AS PartNumber
			,invPricetable.uidPriceBasedID AS PriceBasedID
			,invPricetable.strPricelist AS Pricelist
			,invPricetable.decSelling AS Selling
			,invtable.decSellFromStock AS SellFromStock
		FROM tblInvPrice invPricetable
		LEFT JOIN tblInv invtable ON invPricetable.strPartNumber = invtable.strPartNumber
		WHERE invPricetable.strPartNumber = @PartNumber;
	END
END
GO

CREATE PROCEDURE [dbo].[UpdateInvNumConventionDetails] (
	@InvNumConv NVARCHAR(50)
	,@Description NVARCHAR(100)
	,@Type INT
	,@IsAllowHyphensChecked BIT
	,@IsSegment1Enable BIT
	,@IsSegment1Checked BIT
	,@Segment1Name NVARCHAR(15)
	,@SelectedSegment1Attribute INT
	,@Seg1PlacesValue INT
	,@IsSegment2Enable BIT
	,@IsSegment2Checked BIT
	,@Segment2Name NVARCHAR(15)
	,@SelectedSegment2Attribute INT
	,@Seg2PlacesValue INT
	,@IsSegment3Enable BIT
	,@IsSegment3Checked BIT
	,@Segment3Name NVARCHAR(15)
	,@SelectedSegment3Attribute INT
	,@Seg3PlacesValue INT
	,@IsSegment4Enable BIT
	,@IsSegment4Checked BIT
	,@Segment4Name NVARCHAR(15)
	,@SelectedSegment4Attribute INT
	,@Seg4PlacesValue INT
	,@IsInactiveCheck BIT
	,@IsAutoInvokeChecked BIT
	,@NumberType INT
	,@Seg4Type INT
	,@Seg4StartAtValue NVARCHAR(50)
	,@Seg1Type INT
	,@Seg1StartAtValue NVARCHAR(50)
	,@Seg2Type INT
	,@Seg2StartAtValue NVARCHAR(50)
	,@Seg3Type INT
	,@Seg3StartAtValue NVARCHAR(50)
	,@OldName NVARCHAR(50)
	)
AS
BEGIN
	UPDATE tblInvNumConv
	SET strInvNumConv = @InvNumConv
		,strDesc = @Description
		,intType = @Type
		,bitAllowHyphens = @IsAllowHyphensChecked
		,bitSeg1Enabled = @IsSegment1Enable
		,bitSeg1Checked = @IsSegment1Checked
		,strSeg1Name = @Segment1Name
		,intSeg1Attribute = @SelectedSegment1Attribute
		,intSeg1Places = @Seg1PlacesValue
		,bitSeg2Enabled = @IsSegment2Enable
		,bitSeg2Checked = @IsSegment2Checked
		,strSeg2Name = @Segment2Name
		,intSeg2Attribute = @SelectedSegment2Attribute
		,intSeg2Places = @Seg2PlacesValue
		,bitSeg3Enabled = @IsSegment3Enable
		,bitSeg3Checked = @IsSegment3Checked
		,strSeg3Name = @Segment3Name
		,intSeg3Attribute = @SelectedSegment3Attribute
		,intSeg3Places = @Seg3PlacesValue
		,bitSeg4Enabled = @IsSegment4Enable
		,bitSeg4Checked = @IsSegment4Checked
		,strSeg4Name = @Segment4Name
		,intSeg4Attribute = @SelectedSegment4Attribute
		,intSeg4Places = @Seg4PlacesValue
		,bitInactive = @IsInactiveCheck
		,bitDefault = @IsAutoInvokeChecked
		,intNumberType = @NumberType
		,intSeg4Type = @Seg4Type
		,strSeg4StartAt = @Seg4StartAtValue
		,intSeg1Type = @Seg1Type
		,strSeg1StartAt = @Seg1StartAtValue
		,intSeg2Type = @Seg2Type
		,strSeg2StartAt = @Seg2StartAtValue
		,intSeg3Type = @Seg3Type
		,strSeg3StartAt = @Seg3StartAtValue
	WHERE strInvNumConv = @OldName
END
GO

CREATE PROCEDURE [dbo].[GetURACodeBasedOnPartNumber] @PartNumber NVARCHAR(200)
AS
BEGIN
	SELECT tblInv.strURACode AS URACategoryCode
	FROM tblInv WITH (NOLOCK)
	WHERE tblInv.strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [GetKenyaeTIMSTaxCodeBasedOnPartNumber] @PartNumber NVARCHAR(200)
AS
BEGIN
	SELECT strKenyaItemTaxCode
	FROM tblInvItemTax
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[GetCurrencyExchangeRate] (
	@strCurrency NVARCHAR(200)
	,@dteDate DATETIME
	)
AS
BEGIN
	SELECT decRate AS Rate
		,decMinRate AS MinRate
		,decMaxRate AS MaxRate
	FROM tblCurrencyExc
	WHERE strCurrency = @strCurrency
		AND dteDate = (
			SELECT MAX(dteDate)
			FROM tblCurrencyExc
			WHERE strCurrency = @strCurrency
				AND dteDate <= @dteDate
			)
END
GO

CREATE PROCEDURE [GetKenyaItemUnit] (
	@partNumber NVARCHAR(200)
	,@IsSales BIT
	)
AS
BEGIN
	IF (@IsSales = 1)
		SELECT strSellUnit
		FROM tblInv
		WHERE strPartNumber = @partNumber
	ELSE
		SELECT strBuyUnit
		FROM tblInv
		WHERE strPartNumber = @partNumber
END
GO

CREATE PROCEDURE [dbo].[RemoveInvIntReqDoc] (
	@DocNumber NVARCHAR(50)
	,@userName NVARCHAR(200)
	)
AS
BEGIN
	UPDATE tblInvIntReqDoc
	SET dteSystemDate = GETDATE()
		,strUserName = @userName
		,bitCleared = 1
	WHERE strInvIntReqDocID = @DocNumber
END
GO

CREATE PROCEDURE InvLocationBinSecUpdate (
	@BinCode NVARCHAR(20) = NULL
	,@UserName NVARCHAR(100) = NULL
	,@LocName NVARCHAR(50) = NULL
	)
AS
BEGIN
	INSERT INTO tblInvLocBinSec
	VALUES (
		@LocName
		,@BinCode
		,@UserName
		)
END
GO

CREATE PROCEDURE RemoveTax_VendorTrans_VendPay (
	@DocumentNumber NVARCHAR(100)
	,@JournalDate DATETIME
	,@JourID BIGINT
	)
AS
BEGIN
	DELETE
	FROM tblTax
	WHERE dteJournalDate = @JournalDate
		AND lngJournalID = @JourID

	DELETE
	FROM tblVendTrans
	WHERE strInvPDocID = @DocumentNumber

	IF (@JourID <> 0)
		DELETE
		FROM tblVendPay
		WHERE dteJournalDate = @JournalDate
			AND lngJourID = @JourID
END
GO


CREATE PROCEDURE DeleteInvoiceDocPEntry @DocNumber AS NVARCHAR(100)
AS
BEGIN
	DELETE
	FROM tblInvoiceDocP
	WHERE strInvPDocID = @DocNumber;
END
GO

CREATE PROCEDURE GettblInvExtDataByPartandLocName @PartNumber NVARCHAR(100)
	,@LocName NVARCHAR(50)
AS
BEGIN
	SELECT *
	FROM tblInvExt
	WHERE strPartNumber = @PartNumber
		AND strLocName = @LocName
END
GO

CREATE PROCEDURE GetAccountSetDetailByAcctSet (@AcctSet NVARCHAR(100))
AS
BEGIN
	SELECT *
	FROM tblAccountSets
	WHERE strAcctSet = @AcctSet
END
GO

CREATE PROCEDURE [dbo].[GettblInvDataByPartNumber] @PartNumber NVARCHAR(100)
AS
BEGIN
	SELECT *
	FROM tblInv
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE GetAccountDetailsList
AS
BEGIN
	SELECT intAccType AS AccType
		,intGLNumber AS GLNumber
		,intGroupCode AS GroupCode
		,bitRecon AS Recon
		,strCurrency AS Currency
		,decBalance AS Balance
		,decLYEndBalance AS LYEndBalance
		,decOpenBalance AS OpenBalance
		,decBalanceF AS BalanceF
		,decLYEndBalanceF AS LYEndBalanceF
		,decOpenBalanceF AS OpenBalanceF
	FROM tblAccounts
END
GO

CREATE PROCEDURE GettblInvExtBinDataByPartandLocName (
	@PartNumber NVARCHAR(100)
	,@LocName NVARCHAR(50)
	,@BinId BIGINT
	)
AS
BEGIN
	SELECT *
	FROM tblInvExtBin
	WHERE strPartNumber = @PartNumber
		AND strLocName = @LocName
		AND lngBinID = @BinId
END
GO

CREATE PROCEDURE [dbo].[BankVendTransInsert] (
	@VendTrID BIGINT
	,@VendID NVARCHAR(50)
	,@SystemDate SMALLDATETIME
	,@JournalDate SMALLDATETIME
	,@UserName NVARCHAR(20)
	,@InvDocPID NVARCHAR(50)
	,@InvDepNumber NVARCHAR(50)
	,@PoNumber NVARCHAR(50)
	,@TransType TINYINT
	,@InvAmount MONEY
	,@InvAmountF MONEY
	,@Currency NVARCHAR(3)
	,@IsForeign BIT
	,@Exchange DECIMAL(18, 6)
	,@DocReRated BIT
	,@ReRated DATETIME
	,@ReRateCumltveValue MONEY
	,@Settled BIT
	,@DiscAvail MONEY
	,@DiscAvailF MONEY
	,@DiscExpires DATETIME
	,@DueDate DATETIME
	,@JEDocID NVARCHAR(50)
	)
AS
BEGIN
	INSERT INTO [dbo].[tblVendTrans] (
		[lngVendTrID]
		,[strVendName]
		,[dteSystemDate]
		,[dteJournalDate]
		,[strUserName]
		,[strInvPDocID]
		,[strInvDepNumber]
		,[strPoNumber]
		,[intTransType]
		,[decInvAmount]
		,[decInvAmountF]
		,[strCurrency]
		,[bitIsForeign]
		,[decExchange]
		,[bitDocReRated]
		,[dteReRated]
		,[decReRateCumltveValue]
		,[bitSettled]
		,[decDiscAvail]
		,[decDiscAvailF]
		,[dteDiscExpires]
		,[dteDueDate]
		,[strJEDocID]
		)
	VALUES (
		@VendTrID
		,@VendID
		,@SystemDate
		,@JournalDate
		,@UserName
		,@InvDocPID
		,@InvDepNumber
		,@PoNumber
		,@TransType
		,@InvAmount
		,@InvAmountF
		,@Currency
		,@IsForeign
		,@Exchange
		,@DocReRated
		,@ReRated
		,@ReRateCumltveValue
		,@Settled
		,@DiscAvail
		,@DiscAvailF
		,@DiscExpires
		,@DueDate
		,@JEDocID
		)
END
GO

CREATE PROCEDURE [dbo].[BankVendTransDTInsert] (
	@JournalDate SMALLDATETIME
	,@VendTrID BIGINT
	,@VendID BIGINT
	,@InvAmount MONEY
	,@TransTypeDT TINYINT
	,@AmtOwingAtTime MONEY
	,@InvAmountF MONEY
	,@AmtOwingAtTimeF MONEY
	,@Reversed BIT
	,@IsForeign BIT
	)
AS
BEGIN
	INSERT INTO [dbo].[tblVendTransDT] (
		[dteJournalDate]
		,[lngVendTrID]
		,[lngVendPayID]
		,[decAmount]
		,[intTransType]
		,[decAmtOwingAtTime]
		,[bitReversed]
		,[decAmountF]
		,[decAmtOwingAtTimeF]
		,[bitIsForeign]
		)
	VALUES (
		@JournalDate
		,@VendTrID
		,@VendID
		,@InvAmount
		,@TransTypeDT
		,@AmtOwingAtTime
		,@Reversed
		,@InvAmountF
		,@AmtOwingAtTimeF
		,@IsForeign
		)
END
GO

CREATE PROCEDURE [dbo].[BankCustTransInsert] (
	@CustTrID BIGINT
	,@CustID NVARCHAR(50)
	,@SystemDate SMALLDATETIME
	,@JournalDate SMALLDATETIME
	,@UserName NVARCHAR(20)
	,@InvDocID NVARCHAR(50)
	,@InvDepNumber NVARCHAR(50)
	,@SoNumber NVARCHAR(50)
	,@TransType TINYINT
	,@InvAmount MONEY
	,@InvAmountF MONEY
	,@Currency NVARCHAR(3)
	,@IsForeign BIT
	,@Exchange DECIMAL(18, 6)
	,@DocReRated BIT
	,@ReRated DATETIME
	,@ReRateCumltveValue MONEY
	,@Settled BIT
	,@DiscAvail MONEY
	,@DiscAvailF MONEY
	,@DiscExpires DATETIME
	,@DueDate DATETIME
	,@JEDocID NVARCHAR(50)
	,@OrdDocID NVARCHAR(50)
	)
AS
BEGIN
	INSERT INTO [dbo].[tblCustTrans] (
		[lngCustTrID]
		,[strCustName]
		,[dteSystemDate]
		,[dteJournalDate]
		,[strUserName]
		,[strInvDocID]
		,[strInvDepNumber]
		,[strSoNumber]
		,[intTransType]
		,[decInvAmount]
		,[decInvAmountF]
		,[strCurrency]
		,[bitIsForeign]
		,[decExchange]
		,[bitDocReRated]
		,[dteReRated]
		,[decReRateCumltveValue]
		,[bitSettled]
		,[decDiscAvail]
		,[decDiscAvailF]
		,[dteDiscExpires]
		,[dteDueDate]
		,[strJEDocID]
		,[strOrdDocID]
		)
	VALUES (
		@CustTrID
		,@CustID
		,@SystemDate
		,@JournalDate
		,@UserName
		,@InvDocID
		,@InvDepNumber
		,@SoNumber
		,@TransType
		,@InvAmount
		,@InvAmountF
		,@Currency
		,@IsForeign
		,@Exchange
		,@DocReRated
		,@ReRated
		,@ReRateCumltveValue
		,@Settled
		,@DiscAvail
		,@DiscAvailF
		,@DiscExpires
		,@DueDate
		,@JEDocID
		,@OrdDocID
		)
END
GO

CREATE PROCEDURE [dbo].[BankCustTransDTInsert] (
	@CustTrID BIGINT
	,@JournalDate SMALLDATETIME
	,@InvAmount MONEY
	,@IsForeign BIT
	,@AmtOwingAtTime MONEY
	,@AmountF MONEY
	,@AmtOwingAtTimeF MONEY
	,@CustPayID BIGINT
	,@TransTypeDT TINYINT
	,@Reversed BIT
	)
AS
BEGIN
	INSERT INTO [dbo].[tblCustTransDT] (
		[dteJournalDate]
		,[lngCustTrID]
		,[lngCustPayID]
		,[decAmount]
		,[intTransType]
		,[decAmtOwingAtTime]
		,[bitReversed]
		,[dteIntDate]
		,[decAmountF]
		,[decAmtOwingAtTimeF]
		,[bitIsForeign]
		)
	VALUES (
		@JournalDate
		,@CustTrID
		,@CustPayID
		,@InvAmount
		,@TransTypeDT
		,@AmtOwingAtTime
		,@Reversed
		,NULL
		,@AmountF
		,@AmtOwingAtTimeF
		,@IsForeign
		)
END
GO

CREATE PROCEDURE [dbo].[InsertInvLotExt] @SQQty AS MONEY
	,@SQUpdatedDate AS SMALLDATETIME
	,@SQPartNumber AS NVARCHAR(50)
	,@SQSerialNumber AS NVARCHAR(100)
	,@SQLocName AS NVARCHAR(10)
	,@SQlngBinId AS BIGINT
	,@SQStatus AS INT
	,@SQDocID AS NVARCHAR(50)
AS
BEGIN
	INSERT INTO tblInvSerialExt
	VALUES (
		@SQPartNumber
		,@SQSerialNumber
		,@SQLocName
		,@SQQty
		,@SQStatus
		,@SQDocID
		,@SQUpdatedDate
		,0
		,''
		,@SQlngBinId
		,GetDate()
		)
END
GO

CREATE PROCEDURE [dbo].[InsertSerialNumberTrackingByProduct] @SQstrPartNumber AS NVARCHAR(50)
	,@SQstrSerialNumber AS NVARCHAR(100)
	,@SQstrUserName AS NVARCHAR(20)
	,@SQdteUpdatedDate AS SMALLDATETIME
	,@SQintType AS TINYINT
	,@SQstrDocID AS NVARCHAR(50)
	,@SQintLineNo AS INT
	,@SQdecQty AS MONEY
	,@SQstrLocation AS NVARCHAR(10)
	,@SQintStatus AS TINYINT
	,@SQbitExpiryDate AS BIT
	,@SQdteExpiryDate AS SMALLDATETIME
	,@SQlngBinID AS BIGINT
AS
BEGIN
	INSERT INTO tblSerialNumberTracking (
		strPartNumber
		,strSerialNumber
		,strUserName
		,dteUpdatedDate
		,intType
		,strDocID
		,intLineNo
		,decQty
		,strLocation
		,intStatus
		,bitExpiryDate
		,dteExpiryDate
		,lngBinID
		)
	VALUES (
		@SQstrPartNumber
		,@SQstrSerialNumber
		,@SQstrUserName
		,@SQdteUpdatedDate
		,@SQintType
		,@SQstrDocID
		,@SQintLineNo
		,@SQdecQty
		,@SQstrLocation
		,@SQintStatus
		,@SQbitExpiryDate
		,@SQdteExpiryDate
		,@SQlngBinID
		);
END
GO

CREATE PROCEDURE [dbo].[DeliveryAdviceUFillData] (
	@SQDocNumber NVARCHAR(200)
	,@blnCustStockCodes BIT
	,@SQPrintAI BIT
	,@SQShowPricesDAPrint BIT
	,@SQbitDisplayLogo BIT
	,@SQCustomer NVARCHAR(200)
	,@SQLocationCriteria NVARCHAR(200)
	)
AS
BEGIN
	--1
	SELECT *
		,@SQPrintAI AS bitPrintAddInfo
		,@SQShowPricesDAPrint AS bitShowPricesDAPrint
	FROM tblOrderDocDA
	WHERE strOrdDADocID = @SQDocNumber

	IF (@blnCustStockCodes = 1) --2
		SELECT tblOrderDocDADT.*
			,tblInv.strBarCode
			,tblInv.strBarCode2
			,ISNULL(tblInvCustomer.strItemCode, '') AS strItemCode
			,ISNULL(tblInvCustomer.strItemDesc, '') AS strItemDesc
		FROM tblOrderDocDADT
		INNER JOIN tblOrderDocDA ON tblOrderDocDADT.strOrdDADocID = tblOrderDocDA.strOrdDADocID
		INNER JOIN tblInv ON tblOrderDocDADT.strPartNumber = tblInv.strPartNumber
		LEFT JOIN tblInvCustomer ON tblInvCustomer.strPartNumber = tblInv.strPartNumber
			AND tblOrderDocDA.strCustName = tblInvCustomer.strCustName
		WHERE tblOrderDocDADT.strOrdDADocID = @SQDocNumber
			AND tblOrderDocDADT.bitDelCost = 0
		ORDER BY tblOrderDocDADT.intLineNo
	ELSE
		SELECT tblOrderDocDADT.*
			,tblInv.strBarCode
			,tblInv.strBarCode2
			,'' AS strItemCode
			,'' AS strItemDesc
		FROM tblOrderDocDADT
		INNER JOIN tblInv ON tblOrderDocDADT.strPartNumber = tblInv.strPartNumber
		WHERE tblOrderDocDADT.strOrdDADocID = @SQDocNumber
			AND tblOrderDocDADT.bitDelCost = 0
		ORDER BY tblOrderDocDADT.intLineNo

	SELECT strCustName,strStreet1,strStreet2,strCity,strProvince,strPostal,strPhone,strCellPhone,strFax,strEmail,strVAT,strCK,decBalDue,decYTDPurch,decOpenOrders,intDelMethod,bitCreditCtrl,decCreditLimit,bitCreditHold,bitInactive,dteUpdated,strContact,strField1,strField2,strField3,strField4,strField5,strField6,strTaxCode,dteSince,strNotes,strPricelist,[uID],decIntRate,strCustDesc,strCountry,strTerm,intDept,strCurrency,decBalDueF,decYTDPurchF,decOpenOrdersF,strField7,strField8,strField9,strField10,strField11,strField12,strEmailInv,strEmailStat,strCustCategory,strCountryCode,strTenderType,decTradeDiscPerc,strWebsite,strEmailOso 
	FROM tblCustomers
	WHERE strCustName = @SQCustomer --4

	--5
	SELECT *
	FROM dbo.fnTblInvLocations(@SQLocationCriteria) tblInv
	WHERE strPartNumber IN (
			SELECT DISTINCT strPartNumber
			FROM tblOrderDocDADT
			WHERE strOrdDADocID = @SQDocNumber
			)

	--6
	SELECT strInvDocID AS strOrdDADocID
		,intDocLineNo
		,intDimLineNo
		,intDimColNo
		,decValue
		,strDimColHeading
		,bitVisible
	FROM tblInvoiceDocDimensions
	WHERE strInvDocID = @SQDocNumber

	--7
	SELECT [imgLogo]
		,@SQbitDisplayLogo AS [bitDisplayLogo]
	FROM tblCompany

	--8
	SELECT strOrdDADocID
		,intLineNo
		,cast(lngBinId AS INT) AS lngBinId
		,strBinCode = (
			SELECT strBinCode
			FROM tblInvLocBin
			WHERE lngId = tblOrderDocDADTBin.lngBinId
			)
		,decQty
	FROM tblOrderDocDADTBin
	WHERE strOrdDADocID = @SQDocNumber

	--9
	SELECT BOM.strPartNumber
		,INV2.strDesc
		,COMP.strPartNumber AS strCompNumber
		,INV.strDesc AS strCompDesc
		,DTL.intLineNo
		,ROUND((COMP.decQty * (DTL.decQty / BOM.decQty)), 4) AS decQty
		,INV.strStockUnit AS strUnit
	FROM tblOrderDocDA HDR
	INNER JOIN tblOrderDocDADT DTL ON HDR.strOrdDADocID = DTL.strOrdDADocID
	INNER JOIN tblManBOM BOM ON DTL.strPartNumber = BOM.strPartNumber
		AND DTL.strLocation = BOM.strLocation
	INNER JOIN tblManBOMCompInv COMP ON BOM.lngManBOMID = COMP.lngManBOMID
	INNER JOIN tblInv INV ON COMP.strPartNumber = INV.strPartNumber
	INNER JOIN tblInv INV2 ON BOM.strPartNumber = INV2.strPartNumber
	LEFT JOIN tblInvBOM ON tblInvBOM.strPartNumber = DTL.strPartNumber
	WHERE (DTL.strOrdDADocID = @SQDocNumber)
		AND (BOM.bitInactive = 0)
		AND (BOM.bitPrintSO = 1)
		AND tblInvBOM.strPartNumber IS NULL
	
	UNION ALL
	
	SELECT tblOrderDocDADT.strPartNumber
		,Inv2.strDesc
		,tblOrderDocDADTBOM.strPartItemNumber AS strCompNumber
		,tblInv.strDesc AS strCompDesc
		,tblOrderDocDADT.intLineNo
		,tblOrderDocDADTBOM.decQty AS intQtyToUse
		,tblInv.strUnitOfMeasure
	FROM tblOrderDocDADTBOM
	INNER JOIN tblOrderDocDADT ON tblOrderDocDADTBOM.strOrdDocDAID = tblOrderDocDADT.strOrdDADocID
		AND tblOrderDocDADTBOM.intMainLineNo = tblOrderDocDADT.intLineNo
	INNER JOIN tblInv ON tblOrderDocDADTBOM.strPartItemNumber = tblInv.strPartNumber
	INNER JOIN tblInv Inv2 ON tblOrderDocDADT.strPartNumber = Inv2.strPartNumber
	WHERE tblOrderDocDADT.strOrdDADocID = @SQDocNumber
		AND Inv2.bitAutoBuild = 1
		AND Inv2.bitPrintComp = 1
	--GROUP BY tblOrderDocDADT.strPartNumber,Inv2.strDesc,tblOrderDocDADTBOM.strPartItemNumber,tblInv.strDesc,tblOrderDocDADT.intLineNo,tblInv.strUnitOfMeasure 
	ORDER BY BOM.strPartNumber
		,COMP.strPartNumber
END
GO

CREATE PROCEDURE GetSerialTypedataForDeliveryAdvice @InvSerialType AS NVARCHAR(40)
AS
BEGIN
	SELECT strBCFlag
		,bitBC1Enabled
		,strBC1Type
		,intBC1StartPos
		,intBC1EndPos
		,bitBC2Enabled
		,strBC2Type
		,intBC2StartPos
		,intBC2EndPos
		,bitBC3Enabled
		,strBC3Type
		,intBC3StartPos
		,intBC3EndPos
		,bitBC4Enabled
		,strBC4Type
		,intBC4StartPos
		,intBC4EndPos
		,bitBC5Enabled
		,strBC5Type
		,intBC5StartPos
		,intBC5EndPos
		,bitBCFormat
	FROM tblInvSerialTypes
	WHERE bitBCBreakdown = 1
		AND strInvSerialType = @InvSerialType
END
GO

CREATE PROCEDURE GetPartNumberBasedOnSerialType @PartNumber AS NVARCHAR(200)
AS
BEGIN
	SELECT COUNT(tblInv.strPartNumber)
	FROM tblInv
	INNER JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblInv.strPartNumber = @PartNumber
		AND tblInvSerialTypes.bitPrintInv = 1
END
GO

CREATE PROCEDURE [dbo].[GetChildJobData] (
	@ParentJobID VARCHAR(20)
	,@JobNumber VARCHAR(20)
	)
AS
BEGIN
	SELECT strJBDocID AS JBDocID
		,intType AS [Type]
		,*
	FROM tblMAnJob
	WHERE strParentBOM = @ParentJobID
		AND strJBDocID > @JobNumber
END
GO

CREATE PROCEDURE UpdateAccountItemAlloc @IsCurrent BIT
	,@IsPrevious BIT
	,@IsHistory BIT
	,@AllocatedAmt MONEY
	,@JourID BIGINT
	,@UnAllocatedAmt MONEY
	,@LineNum INT
AS
BEGIN
	IF (
			@IsCurrent = 0
			AND @IsPrevious = 0
			AND @IsHistory = 0
			)
	BEGIN
		RAISERROR (
				'At least one of @IsCurrent, @IsPrevious, or @IsHistory must be true.'
				,16
				,1
				);

		RETURN;
	END

	-- Update based on the provided flags
	IF @IsCurrent = 1
	BEGIN
		-- Update the current journal entry
		UPDATE tblJournalEnt
		SET decAllocatedAmtToDate = (
				SELECT decAllocatedAmtToDate
				FROM tblJournalEnt
				WHERE lngJourID = @JourID
					AND intLineNum = @LineNum
				) + @AllocatedAmt
			,decUnAllocatedAmt = @UnAllocatedAmt
		WHERE lngJourID = @JourID
			AND intLineNum = @LineNum;
	END
	ELSE IF @IsPrevious = 1
	BEGIN
		-- Update the previous journal entry
		UPDATE tblJournalEntLY
		SET decAllocatedAmtToDate = (
				SELECT decAllocatedAmtToDate
				FROM tblJournalEntLY
				WHERE lngJourID = @JourID
					AND intLineNum = @LineNum
				) + @AllocatedAmt
			,decUnAllocatedAmt = @UnAllocatedAmt
		WHERE lngJourID = @JourID
			AND intLineNum = @LineNum;
	END
	ELSE IF @IsHistory = 1
	BEGIN
		-- Update the historical journal entry
		UPDATE tblJournalEntHist
		SET decAllocatedAmtToDate = (
				SELECT decAllocatedAmtToDate
				FROM tblJournalEntHist
				WHERE lngJourID = @JourID
					AND intLineNum = @LineNum
				) + @AllocatedAmt
			,decUnAllocatedAmt = @UnAllocatedAmt
		WHERE lngJourID = @JourID
			AND intLineNum = @LineNum;
	END
END
GO

CREATE PROCEDURE [GetAvailFromInvExt]
(
@PartNumber NVARCHAR(200),
@LocName NVARCHAR(200)
)
AS
BEGIN
	SELECT decAvail FROM tblInvExt (NOLOCK) WHERE strPartNumber = @PartNumber AND strLocName = @LocName
END
GO

CREATE PROCEDURE [dbo].[GetNextDocNumberForProcessJob]
AS
BEGIN
	SELECT ISNULL(MAX(lngJBNumber), 0) + 1
	FROM tblLastIDs;
END
GO

CREATE PROCEDURE [GetAllPrePayBalance]
AS
BEGIN
	SELECT ISNULL(SUM(decBalance), 0)
	FROM (
		SELECT DISTINCT intGLNumberPrePay
		FROM tblVendors
		WHERE intGLNumberPrePay IS NOT NULL
			AND intGLNumberPrePay <> (
				SELECT intGLNumber
				FROM tblAccounts
				WHERE bitLinkPrePay = 1
				)
		) Y
	INNER JOIN tblAccounts ON Y.intGLNumberPrePay = tblAccounts.intGLNumber
END
GO

CREATE PROCEDURE [GetAllDeposite]
AS
BEGIN
	SELECT ISNULL(SUM(decBalance), 0)
	FROM (
		SELECT DISTINCT intGLNumberDeposit
		FROM tblCustomers
		WHERE intGLNumberDeposit IS NOT NULL
			AND intGLNumberDeposit <> (
				SELECT intGLNumber
				FROM tblAccounts
				WHERE bitLinkDeposit = 1
				)
		) Y
	INNER JOIN tblAccounts ON Y.intGLNumberDeposit = tblAccounts.intGLNumber
END
GO

CREATE PROCEDURE [dbo].[GetRemainingQtyforMasterStockUpdateZRA] (@PartNumber NVARCHAR(200))
AS
BEGIN
	SELECT decSumOnHand
	FROM tblInv
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [GetLasID]
AS
BEGIN
	SELECT ISNULL(MAX(lngWPNumber), 0)
	FROM tblLastIDs
END
GO

CREATE PROCEDURE GetInvTrfDocBasedOnDocNumber (
	@IsBinTransfer AS INT
	,@IsBranchTransfer AS INT
	,@TransType AS INT
	)
AS
BEGIN
	IF (
			@TransType = @IsBranchTransfer
			OR @TransType = @IsBinTransfer
			)
	BEGIN
		IF (@TransType = @IsBranchTransfer)
		BEGIN
			SELECT ISNULL(MAX(intTrfDocID), 0) + 1
			FROM tblInvTrfDoc
			WHERE strTrfDocID LIKE 'IBT%'
		END
		ELSE
		BEGIN
			SELECT ISNULL(MAX(intTrfDocID), 0) + 1
			FROM tblInvTrfDoc
			WHERE strTrfDocID LIKE 'BTR%'
		END
	END
	ELSE
	BEGIN
		SELECT ISNULL(MAX(intTrfDocID), 0) + 1
		FROM tblInvTrfDoc
		WHERE strTrfDocID LIKE 'BRC%'
	END
END
GO

CREATE PROCEDURE [dbo].[GetInvSerialTypeFlag] (
	@Serialtypes AS NVARCHAR(100) = NULL
	,@BCFlag AS nvarchar(50)
	,@IsEdit BIT
	)
AS
BEGIN
	IF (@IsEdit = 1)
		SELECT strInvSerialType
		FROM tblInvSerialTypes
		WHERE strInvSerialType <> @Serialtypes
		AND bitBCBreakdown = 1  
		AND strBCFlag = @BCFlag
	ELSE
		SELECT strInvSerialType
		FROM tblInvSerialTypes		 
		WHERE bitBCBreakdown = 1 
		AND strBCFlag = @BCFlag
END
GO

CREATE PROCEDURE [dbo].[InsertIntoJournalEntryDocApprovalPendingDTApplied] (
	@JENo AS NVARCHAR(50)
	,@JEDocID AS NVARCHAR(50)
	,@LineNo AS INT
	,@Module AS TINYINT
	,@CuVeID AS NVARCHAR(50)
	,@CuVeDesc AS NVARCHAR(200)
	,@JournalDate AS SMALLDATETIME
	,@Source AS NVARCHAR(100)
	,@Reference AS NVARCHAR(200)
	,@Debits AS MONEY
	,@Credits AS MONEY
	,@Currency AS NVARCHAR(3)
	,@Exchange AS DECIMAL(20, 6)
	,@IsForeign AS BIT
	,@DebitsF AS MONEY
	,@CreditsF AS MONEY
	)
AS
BEGIN
	INSERT INTO tblJournalEntryDocApprovalPendingDTApplied (
		strJENo
		,strJEDocID
		,intLineNo
		,intModule
		,strCuVeID
		,strCuVeDesc
		,dteJournalDate
		,strSource
		,strReference
		,decDebits
		,decCredits
		,strCurrency
		,decExchange
		,bitIsForeign
		,decDebitsF
		,decCreditsF
		)
	VALUES (
		@JENo
		,@JEDocID
		,@LineNo
		,@Module
		,@CuVeID
		,@CuVeDesc
		,@JournalDate
		,@Source
		,@Reference
		,@Debits
		,@Credits
		,@Currency
		,@Exchange
		,@IsForeign
		,@DebitsF
		,@CreditsF
		)
END
GO

CREATE PROCEDURE [dbo].[GetDataJournalEntryDocApprovalPendingDTApplied] (  
 @JENo AS NVARCHAR(50)  
 ,@LineNo INT  
 ,@DocNumber AS NVARCHAR(50)  
 )  
AS  
BEGIN  
 SELECT strCuVeID AS CuVeNumber  
  ,strCuVeDesc AS CuVeName  
  ,dteJournalDate AS DocDate  
  ,strSource AS Document  
  ,strReference AS Reference  
  ,decDebits AS Debit  
  ,decCredits AS Credit  
  ,strCurrency AS Currency  
  ,decExchange AS Exchange  
  ,bitIsForeign AS IsForeign  
  ,decDebitsF AS DebitsF  
  ,decCreditsF AS CreditsF  
 FROM tblJournalEntryDocApprovalPendingDTApplied  
 WHERE strJENo = @JENo  
  AND intLineNo = @LineNo  
  AND strJEDocID = @DocNumber  
 ORDER BY lngID  
END
GO

CREATE PROCEDURE [dbo].[GetDefaultNotes]
AS
BEGIN
	SELECT
		Cast(1 AS BIT) AS IsAllowIssueQtyOnFly
		,bitAllowBin AS AllowBin
		,bitARDeliveryAdvice AS IsDeliveryAdvice		
		,bitReadReceipt AS ReadReceipt
		,bitHighPriority AS HighPriority
		,bitSendDirect AS SendDirect
		,intRecPeriod1 AS RecPeriod1
		,intRecPeriod2 AS RecPeriod2
		,intRecPeriod3 AS RecPeriod3
		,intPayPeriod1 AS PayPeriod1
		,intPayPeriod2 AS PayPeriod2
		,intPayPeriod3 AS PayPeriod3
		,strAutoINV AS AutoINV
		,strAutoSO AS AutoSO
		,strAutoLB AS AutoLB
		,strAutoQU AS AutoQU
		,strAutoPI AS AutoPI
		,strAutoPO AS AutoPO
		,intReqPay AS ReqPay
		,intReqRec AS ReqRec
		,bitTransFuture AS TransFuture
		,bitSessionFuture AS SessionFuture
		,bitSMSAuto AS SMSAuto
		,butAutoSMSQu AS IsAutoSMSQu
		,strAutoSMSQu AS AutoSMSQu
		,bitAutoSMSSO AS IsAutoSMSSO
		,strAutoSMSSO AS AutoSMSSO
		,bitAutoSMSInv AS IsAutoSMSInv
		,strAutoSMSInv AS AutoSMSInv
		,bitInvRec AS InvRec
		,bitInvPay AS InvPay
		,intCashStatus AS CashStatus
		,bitNegInv AS NegInv
		,intRefChk AS RefChk
		,intRefReq AS RefReq
		,bitSortInvDesc AS SortInvDesc
		,strAutoRQ AS AutoRQ
		,bitUseCredit AS UseCredit
		,decCreditAmt AS CreditAmt
		,bitSendOutlook AS SendOutlook
		,strEmailFrom AS EmailFrom
		,strSMTP AS SMTP
		,bitSMTPAuth AS SMTPAuth
		,strSMTPUser AS SMTPUser
		,strSMTPPwd AS SMTPPwd
		,bitPCJournal AS PCJournal
		,bitPCInvAdj AS PCInvAdj
		,bitPCSales AS PCSales
		,bitPCPurch AS PCPurch
		,bitJELinked AS JELinked
		,bitInvSessOnly AS InvSessOnly
		,decRecIntRate AS RecIntRate
		,bitBlockDesc AS BlockDesc
		,bitBlockUnit AS BlockUnit
		,bitQSUseMarkup AS QSUseMarkup
		,decQSPct AS QSPct
		,bitBlockDescP AS BlockDescP
		,bitBlockUnitP AS BlockUnitP
		,intGLMode AS GLMode
		,intSpellMode AS SpellMode
		,intProcessDocs AS ProcessDocs
		,bitCreditRequestActive AS CreditRequestActive
		,intProcessDocsP AS ProcessDocsP
		,bitAutoApplyCreditNotes AS AutoApplyCreditNotes
		,bitUDFinCat AS UDFinCat
		,intCNReasonReq AS CNReasonReq
		,bitVendStockCodes AS VendStockCodes
		,intSalesPersonReq AS SalesPersonReq
		,bitItemNumConvActive AS ItemNumConvActive
		,intPDepartmentReq AS PDepartmentReq
		,intRDepartmentReq AS RDepartmentReq
		,bitARSplitPmtOnCOD AS ARSplitPmtOnCOD
		,intAPPartDeliveries AS APPartDeliveries
		,intAPOverReceiving AS APOverReceiving
		,intAccrualProcess AS AccrualProcessing
		,bitBlockOrigInvReprint AS BlockOrigInvReprint
		,bitBlockOrigReceiptReprint AS BlockOrigReceiptReprint
		,bitGRVBlindReceive AS GRVBlindReceive
		,intAPRefChk AS APRefChk
		,intAPRefReq AS APRefReq
		,bitARAutoPrintInv AS ARAutoPrintInv
		,intAPAuthReq AS APAuthReq
		,intARAuthReq AS ARAuthReq
		,intPOSAuthReq AS POSAuthReq
		,bitDSValidateDailySales AS DSValidateDailySales
		,bitARClearDocs AS ARClearDocs
		,bitAPClearDocs AS APClearDocs
		,bitAPAutoPrintInv AS APAutoPrintInv
		,bitWHAutoPrintInv AS WHAutoPrintInv
		,bitDSAutoPrintInv AS DSAutoPrintInv
		,bitStockTakeMethod AS StockTakeMethod
		,bitBranchTransferDefaultMethod AS BranchTransferDefaultMethod
		,intARCreateReturn AS ARCreateReturn
		,intAPCreateReturn AS APCreateReturn
		,bitARAllowProcessTotal AS ARAllowProcessTotal
		,bitAPAllowProcessTotal AS APAllowProcessTotal
		,bitPCRecPayJnl AS PCRecPayJnl
		,bitProjSales AS ProjSales
		,bitProjFHQuotes AS ProjFHQuotes
		,bitProjPurch AS ProjPurch
		,bitProjGRV AS ProjGRV
		,bitProjAllowPostInactive AS ProjAllowPostInactive
		,intDefUpdateBank AS DefUpdateBank
		,bitProjRecPayJnl AS ProjRecPayJnl
		,bitAPPmtRequiresApprovals AS APPmtRequiresApprovals
		,bitCurrencyHasDecimal AS CurrencyHasDecimal
		,intBlockOnOverdueINV AS BlockOnOverdueINV
		,bitFHQRequireApproval AS FHQRequireApproval
		,intRecCodeConvention AS RecCodeConvention
		,intRecCodeConSeg1CharCount AS RecCodeConSeg1CharCount
		,strRecCodeConSeg1CharType AS RecCodeConSeg1CharType
		,intRecCodeConSeg2CharCount AS RecCodeConSeg2CharCount
		,strRecCodeConSeg2CharType AS RecCodeConSeg2CharType
		,intPayCodeConvention AS PayCodeConvention
		,intPayCodeConSeg1CharCount AS PayCodeConSeg1CharCount
		,strPayCodeConSeg1CharType AS PayCodeConSeg1CharType
		,intPayCodeConSeg2CharCount AS PayCodeConSeg2CharCount
		,strPayCodeConSeg2CharType AS PayCodeConSeg2CharType
		,strFHQPricelist AS FHQPricelist
		,bitWithholdingTaxAR AS WithholdingTaxAR
		,bitWithholdingTaxAP AS WithholdingTaxAP
		,bitInvImgOnSI AS InvImgOnSI
		,bitInvImgOnSO AS InvImgOnSO
		,bitInvImgOnSQ AS InvImgOnSQ
		,bitInvImgOnSFHQ AS InvImgOnSFHQ
		,bitInvAdjustWHTransferCost AS InvAdjustWHTransferCost
		,bitProjJournal AS ProjJournal
		,bitInvImgOnCR AS InvImgOnCR
		,intReportTimeout AS ReportTimeout
		,intReportTimeoutVPN AS ReportTimeoutVPN
		,bitAutoInvokeGRV AS AutoInvokeGRV
		,bitPCAllocPerc AS PCAllocPerc
		,bitARIncludeOpenOrdersInCreditLimit AS ARIncludeOpenOrdersInCreditLimit
		,bitARSalesPersonLevel AS ARSalesPersonLevel
		,bitInvImgOnPI AS InvImgOnPI
		,bitInvImgOnPO AS InvImgOnPO
		,bitInvImgOnPQ AS InvImgOnPQ
		,bitDisableAirtime AS DisableAirtime
		,intAirProvider AS AirProvider
		,strAirURL AS AirURL
		,strAirAccNo AS AirAccNo
		,strAirUsername AS AirUsername
		,strAirPassword AS AirPassword
		,strAirKey AS AirKey
		,bitInvLotsOverUnder AS InvLotsOverUnder
		,bitSMTPRequireSSL AS SMTPRequireSSL
		,intSMTPPort AS SMTPPort
		,bitInvExtDescOnSI AS InvExtDescOnSI
		,bitInvExtDescOnSO AS InvExtDescOnSO
		,bitInvExtDescOnSQ AS InvExtDescOnSQ
		,bitInvExtDescOnSFHQ AS InvExtDescOnSFHQ
		,bitInvExtDescOnCR AS InvExtDescOnCR
		,bitInvExtDescOnPI AS InvExtDescOnPI
		,bitInvExtDescOnPO AS InvExtDescOnPO
		,bitInvExtDescOnPQ AS InvExtDescOnPQ
		,bitARDefSP AS ARDefSP
		,bitARDefDept AS ARDefDept
		,bitAPDefDept AS APDefDept
		,bitAirAllowDocumentCrediting AS AirAllowDocumentCrediting
		,bitCentersPOS AS CentersPOS
		,bitPOSEnableCenters AS POSEnableCenters
		,bitPOSEnableUDF AS POSEnableUDF
		,bitPOSEnableUpsell AS POSEnableUpsell
		,bitARCompoundedInt AS ARCompoundedInt
		,intGPCalcInvLevel AS GPCalcInvLevel
		,intGPCalcLPP AS GPCalcLPP
		,intOverCreditLimit AS OverCreditLimit
		,intBlockOnOverdueORD AS BlockOnOverdueORD
		,bitBlockOnOverdueORDConvert AS BlockOnOverdueORDConvert
		,bitOverCreditLimitConvert AS OverCreditLimitConvert
		,decCreditBlockSILimit AS CreditBlockSILimit
		,decCreditBlockSOLimit AS CreditBlockSOLimit
		,bitWHAutoAssignPT AS WHAutoAssignPT
		,bitProjDelAdvice AS ProjDelAdvice
		,bitARDelAdvSO AS ARDelAdvSO
		,bitAutoInvokeDA AS AutoInvokeDA
		,bitARShowPricesDAProcess AS ARShowPricesDAProcess
		,bitARShowPricesDAPrint AS ARShowPricesDAPrint
		,blnARRequestVAT AS ARRequestVAT
		,decARMinValueForVAT AS ARMinValueForVAT
		,bitNegInvMovingAvg AS NegInvMovingAvg
		,bitAddSignature AS AddSignature
		,bitNonIntegrated AS NonIntegrated
		,bitNonIntegratedChanged AS NonIntegratedChanged
		,intDecimalQuantity AS DecimalQuantity
		,bitManScaleRead AS ManScaleRead
		,strManScaleFolder AS ManScaleFolder
		,bitManOverUnder AS ManOverUnder
		,intManAuthReq AS ManAuthReq
		,bitAPToMDaP AS APToMDaP
		,bitWHAutoPrintPT AS WHAutoPrintPT
		,bitWHAutoIssuePT AS WHAutoIssuePT
		,intGLRPJDepartmentReq AS GLRPJDepartmentReq
		,bitPCInvIssReq AS PCInvIssReq
		,bitProjInvAdj AS ProjInvAdj
		,bitProjInvIssReq AS ProjInvIssReq
		,bitProjInvIntReq AS ProjInvIntReq
		,blnPOApprovalsEnable AS POApprovalsEnable
		,blnPOApprovalsDocLimitEnable AS POApprovalsDocLimitEnable
		,blnPOApprovalsVenLimitEnable AS POApprovalsVenLimitEnable
		,decPODefaultDocLimit AS PODefaultDocLimit
		,decPODefaultVenLimit AS PODefaultVenLimit
		,bitInvExtDescOnBRQ AS InvExtDescOnBRQ
		,bitInvImgOnBRQ AS InvImgOnBRQ
		,bitWHRecSerialLotNum AS WHRecSerialLotNum
		,bitManStandardCost AS ManStandardCost
		,bitPurchCostVar AS PurchCostVar
		,bitWarnPurchOver AS WarnPurchOver
		,decWarnPurchOverPerc AS WarnPurchOverPerc
		,intSOUnavailable AS SOUnavailable
		,decDimensionFactor AS DimensionFactor
		,bitActivateProcessingDocument AS ActivateProcessingDocument
		,intDepreciationCalculationMethod AS DepreciationCalculationMethod
		,strDimUnitOfMeasure AS DimUnitOfMeasure
		,strGLAccountSegment AS GLAccountSegment
		,intBlockOverCreditLimitINV AS BlockOverCreditLimitINV
		,decBlockOverCreditLimitINV AS DecBlockOverCreditLimitINV
		,decBlockOverCreditLimitSO AS BlockOverCreditLimitSO
		,bitProjInvRepack AS ProjInvRepack
		,blnPROApprovalsPO AS PROApprovalsPO
		,blnPROApprovalsPR AS PROApprovalsPR
		,bitARReceiptsOnSalesOrder AS IsAllowReceiptOnSalesOrder
		,bitCustStockCodes AS IsCustStockCodes
		,decSSPPercentage AS SSPPercentage
		,intSSPMargMark AS SSPMargMark
		,intSSPUpdate AS SSPUpdate
		,intSSPRound AS SSPRound
		,bitProjGRV AS GRVForItemCost
		,bitAutoInvokeGRV AS VendorInvoice
		,bitARDropShipments AS IsDropShipments
		,bitPODRequired AS IsPODRequired
		,bitCenterBM AS CenterBM
		,bitProjBM AS ProjBM
		,bitManPromtekRead AS IsManPromtekRead
		,strManPromtekLoc AS ManPromtekLoc
		,strManPromtekBinLoc AS ManPromtekBinLoc
		,bitAllowBin AS IsAllowBin
		,strCompCode AS CompCode
		,strPalladiumFTPPath AS PalladiumFTPPath
		,strPalladiumFTPPassword AS PalladiumFTPPassword
		,strPalladiumFTPUserID AS PalladiumFTPUserID
		,strPromtekFTPPath AS PromtekFTPPath
		,strPromtekFTPPassword AS PromtekFTPPassword
		,strPromtekFTPUserID AS PromtekFTPUserID
		,intCBDefaultItem AS CBDefaultItem
		,intARConfirmDelDtOnSaleDoc AS ARConfirmDelDtOnSaleDoc
		,bitARDeliveryAdvice AS ARDeliveryAdvice
		,bitAllowPOSOfflinePeriod AS AllowPOSOfflinePeriod
		,intPOSOfflinePeriod AS POSOfflinePeriod
		,blnIRApprovalsEnable AS IRApprovalsEnable
		,blnIRApprovalsDocLimitEnable AS IRApprovalsDocLimitEnable
		,blnIRApprovalsEmpLimitEnable AS IRApprovalsEmpLimitEnable
		,decIRDefaultDocLimit AS IRDefaultDocLimit
		,decIRDefaultEmpLimit AS IRDefaultEmpLimit
		,CASE 
			WHEN bitInvEmpLevel = 0
				THEN Cast(1 AS BIT)
			ELSE Cast(0 AS BIT)
			END AS InvEmpDocLevel
		,
		--!bitInvEmpLevel AS InvEmpDocLevel,
		bitInvEmpLevel AS InvEmpLineLevel
		,bitIREmpMandatory AS IREmpMandatory
		,bitIRIssueToInvoice AS IRIssueToInvoice
		,bitIREnforceSecurity AS IREnforceSecurity
		,bitIROverBudgetApproval AS IROverBudgetApproval
		,bitIRNonBudgetApproval AS IRNonBudgetApproval
		,bitEasyRosterDatabaseUpdate AS ERDatabaseUpdate
		,strEasyRosterServerName AS ERServerName
		,strEasyRosterUsername AS ERUsername
		,strEasyRosterDatabase AS ERDatabase
		,strEasyRosterPassword AS ERPassword
		,bitARLaybySO AS ARLaybySO
		,bitLaybyPriceList AS IsLaybyPriceList
		,strARLaybyPricelist AS ARLaybyPricelist
		,bitPCManWIP AS PCManWIP
		,bitPOSAllowDeposits AS POSAllowDeposits
		,intSalesAccrualProcess AS DAAccrualProcessing
		,bitTrackBudgetsonPurchaseRequisitions AS TrackBudgetsonPurchaseRequisitions
		,bitEnablePOSSyncInterval AS EnablePOSSyncInterval
		,intPOSSyncInterval AS POSSyncInterval
		,bitRequireApprovalCustomerCreation AS RequireApprovalCustomerCreation
		,bitAllowControlAccAP AS AllowControlAccAP
		,bitAllowControlAccAR AS AllowControlAccAR
		,bitPOSBlockOrigReceiptReprint AS POSBlockOrigReceiptReprint
		,bitCentersStockCount AS CenterStockCount
		,intUserTrackingActivate AS intUserTrackingActivate
		,intShippingTrackingActivate AS intShippingTrackingActivate
		,bitShipemntActivationAllowed AS IsShipemntActivationAllowed
		,strMobisalesKey AS UserTrackingMobisalesKey
		,strShippingTrackingKey AS ShippingTrackingKey
		,strShippingActivationPassword AS ShippingActivationPassword
		,strMobisalesPassword AS MobisalesActivationPassword
		,CASE 
			WHEN intUserTrackingActivate = 0
				THEN Cast(0 AS BIT)
			WHEN strMobisalesKey = ''
				AND strMobisalesPassword = ''
				THEN Cast(0 AS BIT)
			ELSE Cast(1 AS BIT)
			END AS CanActiveValidate
		,bitESDEanbled AS IsESDEnabled
		,strESDCountry AS ESDCountry
		,strWH2ShipKey AS WH2ShipKey
		,bitPCWorkshop AS PCWorkshop
		,bitProjWorkshop AS ProjWorkshop
		,bitSyncExtendedDesc AS IsSyncExtendedDesc
		,strCapexBudget AS CapexBudget
		,intWHShipmentsFromSO AS WHShipmentsFromSO
		,strCapexDeptBudget AS CapexDeptBudget
		,intCapexBudgetForDept AS IsCapexBudgetForDept
		,bitIsCustAttchEmailPassword AS IsCustAttchEmailPassword
		,bitIsVendAttchEmailPassword AS IsVendAttchEmailPassword
		,bitIsMobileUserDashandTrackingActive AS IsMobileUserDashandTrackingActive
		,strMobileUserDashandTrackingURL AS MobileUserDashandTrackingURL
		,bitSyncInventoryImages AS IsSyncInventoryImages
		,bitIsCreditNoteApprovalsActivated AS IsCreditNoteApprovalsActivated
		,bitIsZeroWorkshopItemInvoiced AS IsZeroWorkshopItemInvoiced
		,bitIsGeneralLedgerJournalApprovalsActivated AS IsGeneralLedgerJournalApprovalsActivated
		,intWHOverPicking AS WHOverPicking
		,strMobileAPIActivationKey AS MobileAPIActivationKey
		,bitIsMobileAPIActivated AS IsMobileAPIActivated
		,guidMobileAPIActivationGUID AS MobileAPIActivationGUID
		,bitInvImgExcludeAPI AS InvImgExcludeAPI
		,bitIsVectaRead AS IsVectaRead
		,strVectaFTPPath AS VectaFTPPath
		,strVectaFTPUserID AS VectaFTPUserID
		,strVectaFTPPassword AS VectaFTPPassword
		,bitOAuthEnable AS IsOAuthEnable
		,intAppPassword AS IntAppPassword
		,strAppPassword AS OAuthAppPassword
		,strClientID AS OAuthClientID
		,strClientSecret AS OAuthClientSecret
		,bitProjMan AS IsProjMan
	FROM tblCoOpts;
END
GO

CREATE PROCEDURE GetTenderTypesAP
AS
BEGIN
	SELECT strName AS Name
		,bitAccount AS IsAccount
	FROM tblTenderTypes
	WHERE bitInActive = 0
		AND strName <> 'Split Payment'
		AND bitCashGuardIntegration = 0
	ORDER BY intDisplayOrder
		,strName
END
GO

CREATE PROCEDURE GetAllCompaniesLoc
AS
BEGIN
	SELECT strLocName AS LocName
		,strStreet1 AS Street1
		,strStreet2 AS Street2
		,strCity AS City
		,strProvince AS Province
		,strPostal AS Postal
		,strCountry AS Country
		,strCountryCode AS CountryCode
	FROM tblCompanyLoc
	ORDER BY strLocName;
END
GO

CREATE PROCEDURE [dbo].[GetRequisitionReasons] (
  @lngID bigint = NULL, 
  @AuthReasonCode nvarchar(20) = NULL, 
  @AuthReasonDesc nvarchar(100) = NULL, 
  @Inactive bit = NULL
) AS
SELECT 
  lngID AS ID,  
  strIRReasonCode AS RequisitionReasonCode, 
  strIRReasonDesc AS RequisitionReasonDesc, 
  bitInactive AS Inactive
FROM 
  tblRequisitionReasons 
WHERE 
  (lngID = @lngID or @lngID is null) 
  and (strIRReasonCode = @AuthReasonCode or @AuthReasonCode is null) 
  and (strIRReasonDesc = @AuthReasonDesc or @AuthReasonDesc is null) 
  and (bitInactive = @Inactive or @Inactive is null)
GO

CREATE PROCEDURE [dbo].[GetBOMItem] @SQstrPartNumber NVARCHAR(200)
AS
BEGIN
	SELECT strPartNumber
		,strPartItemNumber AS PartNumber
		,intQtyToUse AS BOMQty
	FROM tblInvBOM
	WHERE strPartNumber = @SQstrPartNumber
END
GO

CREATE PROCEDURE [dbo].[GetBOMItemKenyaItemCode] @SQstrPartNumber NVARCHAR(200)
AS
BEGIN
	SELECT strKenyaItemCode
	FROM tblInv
	WHERE strPartNumber = @SQstrPartNumber
END
GO
CREATE PROCEDURE [dbo].[GetInvTrackingMaxID]
AS
BEGIN
	SELECT MAX(lngInvTrackID) AS lngInvTrackID
	FROM tblInvTracking
END
GO

CREATE PROCEDURE [dbo].[GetAccountsSec] @AccountNo NVARCHAR(200)
AS
BEGIN
	SELECT intGLNumber AS GLNumber
		,strUserName AS UserName
	FROM tblAccountsSec
	WHERE intGLNumber = @AccountNo
END
GO

CREATE PROCEDURE GetCountFromAccountDeptCount (
	@AccountNo NVARCHAR(200)
	,@Department INT
	)
AS
BEGIN
	SELECT Count(*)
	FROM tblAccountsDept
	WHERE intGLNumber = @AccountNo
		AND intDept = @Department
END
GO

CREATE PROCEDURE GetCountFromAccountDeptLYCount (
	@AccountNo NVARCHAR(200)
	,@Department INT
	)
AS
BEGIN
	SELECT Count(*)
	FROM tblAccountsDeptLY
	WHERE intGLNumber = @AccountNo
		AND intDept = @Department
END
GO

CREATE PROCEDURE GetCurrencyExchangeList
AS
BEGIN
	SELECT strCurrency AS Currency
		,dteDate AS ExchangeDate
		,decRate AS Rate
		,decMinRate AS MinRate
		,decMaxRate AS MaxRate
	FROM tblCurrencyExc
	ORDER BY ExchangeDate DESC
END
GO

CREATE PROCEDURE GetMaxJournalID
AS
BEGIN
	SELECT MAX(lngJourID)
	FROM tblJournal
END
GO

CREATE PROCEDURE GetMaxJournalLYID
AS
BEGIN
	SELECT MAX(lngJourID)
	FROM tblJournalLY
END
GO

CREATE PROCEDURE GetJournalEntMaxLine @AdjustmentID BIGINT
AS
BEGIN
	SELECT MAX(intLineNum)
	FROM tblJournalEnt
	WHERE lngJourID = @AdjustmentID
END
GO

CREATE PROCEDURE [dbo].[GetJournalEntLYMaxLine] @AdjustmentID BIGINT
AS
BEGIN
	SELECT MAX(intLineNum)
	FROM tblJournalEntLY
	WHERE lngJourID = @AdjustmentID
END
GO

CREATE PROCEDURE [dbo].[NotifyApproversSimultaneously] (@DocNumber NVARCHAR(100))
AS
BEGIN
	SELECT intApprovalStatus As ApproverStatus
	FROM tblPQApprovalsUserTracking
	WHERE strOrdPDocID = @DocNumber
END
GO

CREATE PROCEDURE GetVendorDescription @VendName NVARCHAR(200)
AS
BEGIN
	SELECT strVendDesc
	FROM tblVendors
	WHERE strVendName = @VendName
END
GO

CREATE PROCEDURE [dbo].[DeleteItemSegmentSetupBySetupId] (
	@SegmentSetupId INT
	,@SegmentId INT
	)
AS
BEGIN
	DELETE
	FROM tblItemSegmentSetup
	WHERE intSegmentSetupId = @SegmentSetupId
		AND intSegmentId = @SegmentId;
END
GO

CREATE PROCEDURE [dbo].[GetAccountsLYCount]
AS
BEGIN
	SELECT Count(intGLNumber)
	FROM tblAccountsLY
END
GO

CREATE PROCEDURE GetCustomerTransactionType @CustomerNumber AS NVARCHAR(50)
AS
BEGIN
	SELECT strTransactionType AS TransactionType
	FROM tblCustomers
	WHERE strCustName = @CustomerNumber
END
GO

CREATE PROCEDURE LockoutUser @UserName NVARCHAR(50)
AS
BEGIN
	SET NOCOUNT ON;

	BEGIN TRY
		IF NOT EXISTS (
				SELECT 1
				FROM tblUsers
				WHERE strUserName = @UserName
				)
		BEGIN
			PRINT 'User not found in the database.';

			RETURN;
		END

		IF EXISTS (
				SELECT 1
				FROM tblUsers
				WHERE strUserName = @UserName
					AND blnIsAdmin = 1
				)
		BEGIN
			DECLARE @AdminCount INT;

			SELECT @AdminCount = COUNT(*)
			FROM tblUsers
			WHERE blnIsAdmin = 1;

			IF @AdminCount < 2
			BEGIN
				PRINT 'Cannot lock out the only admin user.';

				RETURN;
			END
		END

		UPDATE tblUsers
		SET blnIsLockedOut = 1
		WHERE strUserName = @UserName;

		PRINT 'User has been locked out successfully.';
	END TRY

	BEGIN CATCH
		PRINT 'An error occurred while locking out the user: ' + ERROR_MESSAGE();
	END CATCH
END
GO

CREATE PROCEDURE [dbo].[InsertDataOfUtilityTableForPastelPartner] (
	@intChkNo AS INT = 0
	,@tblUtilityPervHistoryHeaderLinesDT AS UtilityPervHistoryHeaderTableType ReadOnly
	,@tblUtilityPervHistoryLinesDT AS UtilityPervHistoryLinesTableType ReadOnly
	,@tblUtilityPervLedgerTransDT AS UtilityPervLedgerTransTableType ReadOnly
	,@tblUtilityPervOpenItemDT AS UtilityPervOpenItemTableType ReadOnly
	)
AS
BEGIN
	IF (@intChkNo = 19) --HistoryHeaderLines
		INSERT INTO tblUtilityPervHistoryHeader (
			[DocumentType]
			,[DocumentNumber]
			,[CustomerCode]
			,[DocumentDate]
			,[OrderNumber]
			,[SalesmanCode]
			,[UserID]
			,[ExclIncl]
			,[Message01]
			,[Message02]
			,[Message03]
			,[DelAddress01]
			,[DelAddress02]
			,[DelAddress03]
			,[DelAddress04]
			,[DelAddress05]
			,[Terms]
			,[ExtraCosts]
			,[CostCode]
			,[PPeriod]
			,[ClosingDate]
			,[Telephone]
			,[Fax]
			,[Contact]
			,[CurrencyCode]
			,[ExchangeRate]
			,[DiscountPercent]
			,[Total]
			,[FCurrTotal]
			,[TotalTax]
			,[FCurrTotalTax]
			,[TotalCost]
			,[InvDeleted]
			,[InvPrintStatus]
			,[Onhold]
			,[GRNMisc]
			,[Paid]
			,[Freight01]
			,[Ship]
			,[IsTMBDoc]
			,[Spare]
			,[Exported]
			,[ExportRef]
			,[ExportNum]
			,[Emailed]
			,[bitEvo]
			,[DocType]
			,[DelAddress06]
			,[Docstate]
			,[InvoiceID]
			,[Description]
			,[OrderDate]
			,[DueDate]
			,[DeliveryDate]
			,[PAddress1]
			,[PAddress2]
			,[PAddress3]
			,[PAddress4]
			,[PAddress5]
			,[PAddress6]
			,[InvTotIncl]
			,[InvTotInclDEx]
			,[OrdDiscAmnt]
			,[OrdDiscAmntEx]
			,[OrdTotExclDEx]
			,[OrdTotTaxDEx]
			,[OrdTotInclDEx]
			,[OrdTotExcl]
			,[OrdTotTax]
			,[OrdTotIncl]
			,[fInvTotInclForeign]
			,[fOrdDiscAmntForeign]
			,[fOrdDiscAmntExForeign]
			,[fOrdTotExclDExForeign]
			,[fOrdTotTaxDExForeign]
			,[fOrdTotInclDExForeign]
			,[fOrdTotExclForeign]
			,[fOrdTotTaxForeign]
			,[fOrdTotInclForeign]
			,[fInvDiscAmntForeign]
			,[fInvDiscAmntExForeign]
			,[fInvTotExclDExForeign]
			,[fInvTotTaxDExForeign]
			,[fInvTotInclDExForeign]
			,[DocTypeID]
			,[DocStateID]
			,[DocFlagID]
			)
		SELECT *
		FROM @tblUtilityPervHistoryHeaderLinesDT
	ELSE IF (@intChkNo = 20) --HistoryLines
		INSERT INTO tblUtilityPervHistoryLines (
			[UserId]
			,[DocumentType]
			,[DocumentNumber]
			,[ItemCode]
			,[CustomerCode]
			,[SalesmanCode]
			,[SearchType]
			,[PPeriod]
			,[DDate]
			,[UnitUsed]
			,[TaxType]
			,[DiscountType]
			,[DiscountPercentage]
			,[Description]
			,[CostPrice]
			,[Qty]
			,[UnitPrice]
			,[InclusivePrice]
			,[FCurrUnitPrice]
			,[FCurrInclPrice]
			,[TaxAmt]
			,[FCurrTaxAmount]
			,[DiscountAmount]
			,[FCDiscountAmount]
			,[CostCode]
			,[DateTime]
			,[WhichUserDef]
			,[Physical]
			,[Fixed]
			,[ShowQty]
			,[LinkNum]
			,[LinkedNum]
			,[GRNQty]
			,[LinkID]
			,[MultiStore]
			,[IsTMBLine]
			,[LinkDocumentType]
			,[LinkDocumentNumber]
			,[Exported]
			,[ExportRef]
			,[ExportNum]
			,[QtyLeft]
			,[CaseLotCode]
			,[CaseLotQty]
			,[CaseLotRatio]
			,[CostSyncDone]
			,[bitEvo]
			,[DocType]
			,[fQtyLinkedUsedUR]
			,[TaxCode]
			,[iinvoiceid]
			,[Docstate]
			,[fQuantity]
			,[fQtyChange]
			,[fQtyToProcess]
			,[fQtyLastProcess]
			,[fQtyProcessed]
			,[fQuantityLineTotIncl]
			,[fQuantityLineTotExcl]
			,[fQuantityLineTotInclNoDisc]
			,[fQuantityLineTotExclNoDisc]
			,[fQuantityLineTaxAmount]
			,[fQuantityLineTaxAmountNoDisc]
			,[fQtyChangeLineTotIncl]
			,[fQtyChangeLineTotExcl]
			,[fQtyChangeLineTotInclNoDisc]
			,[fQtyChangeLineTotExclNoDisc]
			,[fQtyChangeLineTaxAmount]
			,[fQtyChangeLineTaxAmountNoDisc]
			,[fQtyToProcessLineTotIncl]
			,[fQtyToProcessLineTotExcl]
			,[fQtyToProcessLineTotInclNoDisc]
			,[fQtyToProcessLineTotExclNoDisc]
			,[fQtyToProcessLineTaxAmount]
			,[fQtyToProcessLineTaxAmountNoDisc]
			,[fQtyLastProcessLineTotIncl]
			,[fQtyLastProcessLineTotExcl]
			,[fQtyLastProcessLineTotInclNoDisc]
			,[fQtyLastProcessLineTotExclNoDisc]
			,[fQtyLastProcessLineTaxAmount]
			,[fQtyLastProcessLineTaxAmountNoDisc]
			,[fQtyProcessedLineTotIncl]
			,[fQtyProcessedLineTotExcl]
			,[fQtyProcessedLineTotInclNoDisc]
			,[fQtyProcessedLineTotExclNoDisc]
			,[fQtyProcessedLineTaxAmount]
			,[fQtyProcessedLineTaxAmountNoDisc]
			,[fUnitPriceExclForeign]
			,[fUnitPriceInclForeign]
			,[fUnitCostForeign]
			,[fAddCostForeign]
			,[fQuantityLineTotInclForeign]
			,[fQuantityLineTotExclForeign]
			,[fQuantityLineTotInclNoDiscForeign]
			,[fQuantityLineTotExclNoDiscForeign]
			,[fQuantityLineTaxAmountForeign]
			,[fQuantityLineTaxAmountNoDiscForeign]
			,[fQtyChangeLineTotInclForeign]
			,[fQtyChangeLineTotExclForeign]
			,[fQtyChangeLineTotInclNoDiscForeign]
			,[fQtyChangeLineTotExclNoDiscForeign]
			,[fQtyChangeLineTaxAmountForeign]
			,[fQtyChangeLineTaxAmountNoDiscForeign]
			,[fQtyToProcessLineTotInclForeign]
			,[fQtyToProcessLineTotExclForeign]
			,[fQtyToProcessLineTotInclNoDiscForeign]
			,[fQtyToProcessLineTotExclNoDiscForeign]
			,[fQtyToProcessLineTaxAmountForeign]
			,[fQtyToProcessLineTaxAmountNoDiscForeign]
			,[fQtyLastProcessLineTotInclForeign]
			,[fQtyLastProcessLineTotExclForeign]
			,[fQtyLastProcessLineTotInclNoDiscForeign]
			,[fQtyLastProcessLineTotExclNoDiscForeign]
			,[fQtyLastProcessLineTaxAmountForeign]
			,[fQtyLastProcessLineTaxAmountNoDiscForeign]
			,[fQtyProcessedLineTotInclForeign]
			,[fQtyProcessedLineTotExclForeign]
			,[fQtyProcessedLineTotInclNoDiscForeign]
			,[fQtyProcessedLineTotExclNoDiscForeign]
			,[fQtyProcessedLineTaxAmountForeign]
			,[fQtyProcessedLineTaxAmountNoDiscForeign]
			)
		SELECT *
		FROM @tblUtilityPervHistoryLinesDT
	ELSE IF (@intChkNo = 21) --LedgerTrans
		INSERT INTO tblUtilityPervLedgerTransactions (
			[GDC]
			,[AccNumber]
			,[DiscFlag]
			,[CurrCode]
			,[Spare]
			,[PPeriod]
			,[DDate]
			,[EType]
			,[Refrence]
			,[JobCode]
			,[Amount]
			,[TaxAmt]
			,[ThisCurrTaxAmount]
			,[BankTaxAmount]
			,[CurrAmt]
			,[BankCurrAmount]
			,[ReconFlag]
			,[Description]
			,[TaxType]
			,[Country]
			,[Generated]
			,[PayBased]
			,[UserID]
			,[WhichUserRef]
			,[LinkAcc]
			,[UpdateReconFlag]
			,[ChequeFlag]
			,[LinkID]
			,[InInv]
			,[TaxReportDate]
			,[BatchID]
			,[TransactionID]
			,[AutoNumber]
			,[Exported]
			,[ExportRef]
			,[ExportNum]
			,[CostSyncDone]
			,[bitEvo]
			,[CurrencyCode]
			,[ID]
			,[Debit]
			,[Credit]
			,[fExchangeRate]
			,[fForeignDebit]
			,[fForeignCredit]
			,[TaxCode]
			,[OrderNo]
			,[ExtOrderNum]
			,[cAuditNumber]
			,[TaxAmount]
			,[Project]
			,[DTStamp]
			)
		SELECT *
		FROM @tblUtilityPervLedgerTransDT
	ELSE IF (@intChkNo = 22)
		INSERT INTO tblUtilityPervOpenItem (
			[DC]
			,[Original]
			,[CSCode]
			,[MatchRef]
			,[LineFlag]
			,[BatchID]
			,[PPeriod]
			,[dDate]
			,[EntryType]
			,[Ref]
			,[Amount]
			,[TaxAmt]
			,[CurrAmt]
			,[CurrTaxAmt]
			,[TaxType]
			,[Discount]
			,[TaxMethodUsed]
			,[Description]
			,[UserDef]
			,[Spare]
			,[Exported]
			,[ExportRef]
			,[ExportNum]
			,[bitEvo]
			,[Account]
			,[Age1]
			,[Age2]
			,[Age3]
			,[Age4]
			,[Age5]
			,[Age6]
			,[Age7]
			,[AccountBalance]
			,[UADebits]
			,[UACredits]
			,[FCAge1]
			,[FCAge2]
			,[FCAge3]
			,[FCAge4]
			,[FCAge5]
			,[FCAge6]
			,[FCAge7]
			,[AccountBalanceForeign]
			,[UADebitsForeign]
			,[UACreditsForeign]
			)
		SELECT *
		FROM @tblUtilityPervOpenItemDT
END
GO

CREATE PROCEDURE GetEFDPurchaseInvoiceDetails (
	@DocId VARCHAR(50)
	,@Type INT
	)
AS
BEGIN
	SELECT ISNULL(rcptNumber, '') AS orgInvcNo
		,ISNULL(strsdcId, '') AS orgSdcId
		,strRequestData AS RequestData
		,strResponseData AS ResponseData
	FROM tblEFDInvoiceDoc
	WHERE strInvDocID = @DocId
		AND intTransactionType = @Type
END
GO

CREATE PROCEDURE [dbo].[GetGLEntryDocData] (@DocumentId VARCHAR(50))
AS
BEGIN
	SELECT strJENo AS JENo
		,dteLastProcDate AS LastProcDate
		,strComment AS Comment
		,strCurrency AS Currency
		,bitPosted AS Posted
		,strUserName AS UserName
		,dteDateCreated AS DateCreated
		,strJENo AS JEDocID
		,bitPosted AS IsPosted
		,dteJournalDate AS JournalDate
	FROM tblJournalEntryDocApprovalPending
	WHERE strJENo = @DocumentId
END
GO

CREATE PROCEDURE GetOrdersDocApprovalsGroupUsedCount (@GroupID INT)
AS
BEGIN
	SELECT COUNT(1) AS GroupUsed
	FROM dbo.tblOrdersDoc_CNApprovals
	WHERE intGroupId = @GroupID
END
GO

CREATE PROCEDURE GetGLDocApprovalsGroupUsedCount (@GroupID INT)
AS
BEGIN
	SELECT COUNT(1) AS GroupUsed
	FROM dbo.tblJournalEntryDoc_GLApprovals
	WHERE intGroupId = @GroupID
END
GO

CREATE PROCEDURE GetCustomerDataBasedOnCustomername @CustomerName AS NVARCHAR(100)
AS
BEGIN
	SELECT strTerm AS Term
		,intDept AS Department
		,strCurrency AS Currency
		,strCustDesc AS CustomerDesc
	FROM tblCustomers AS Currency
	WHERE strCustName = @CustomerName
END
GO

CREATE PROCEDURE [dbo].[GetCustomerTermBasedonCustomerName] @Term AS NVARCHAR(100)
AS
BEGIN
	SELECT strTerm AS Term
		,intNetDue AS NetDue
		,intNetCalcBy AS NetCalcBy
		,decSettleDisc AS SettleDisc
		,intSettleDays AS SettleDays
		,intSettleCalcBy AS SettleCalcBy
		,intStatCalculated AS StatCalculated
		,intTermType AS TermType
		,intCalCalcBy AS CalCalcBy
		,intISMonths AS ISMonths
	FROM tblTerms
	WHERE strTerm = @Term
END
GO

CREATE PROCEDURE GetVendorDataBasedOnVendorname @VendorName AS NVARCHAR(100)
AS
BEGIN
	SELECT strTerm AS Term
		,intDept AS Department
		,strCurrency AS Currency
	FROM tblVendors
	WHERE strVendName = @VendorName
END
GO

CREATE PROCEDURE DeleteDataofUtilityProjects
AS
BEGIN
	DELETE
	FROM tblUtilityProjects
END
GO

CREATE PROCEDURE [dbo].[GetInvActivityForInv] (
	@PartNumber NVARCHAR(50)
	,@StartDate DATETIME
	,@EndDate DATETIME
	)
AS
BEGIN
	SELECT Z.Month
		,SUM(Z.PurchaseQty) AS PurchaseQty
		,SUM(Z.PurchaseValue) AS PurchaseValue
		,SUM(Z.AdjustmentQty) AS AdjustmentQty
		,SUM(Z.SalesQty) AS SalesQty
		,SUM(Z.OnHand) AS OnHand
		,SUM(Z.OnHandValue) AS OnHandValue
		,ROUND(CASE 
				WHEN SUM(Z.OnHandValue) = 0
					OR SUM(Z.OnHand) = 0
					THEN 0
				ELSE CASE 
						WHEN SUM(Z.OnHandValue) > 0
							THEN SUM(Z.OnHandValue) / SUM(Z.OnHand)
						ELSE 0
						END
				END, 2) AS AverageCost
		,SUM(Z.SalesValue) AS SalesValue
	FROM (
		SELECT DATEPART(YEAR, tblInvTracking.dteJournalDate) AS [Year]
			,DATEPART(MONTH, tblInvTracking.dteJournalDate) AS [MonthNo]
			,CONVERT(NVARCHAR, DATEPART(YEAR, tblInvTracking.dteJournalDate)) + ' ' + DATENAME(MONTH, tblInvTracking.dteJournalDate) AS [Month]
			,SUM(tblInvTrackingDT.decQty) AS [PurchaseQty]
			,SUM(tblInvTrackingDT.decValue) AS [PurchaseValue]
			,0 AS [AdjustmentQty]
			,0 AS [SalesQty]
			,SUM(tblInvTrackingDT.decQty) AS [OnHand]
			,SUM(tblInvTrackingDT.decValue) AS [OnHandValue]
			,0 AS [SalesValue]
		FROM tblInvTrackingDT
		INNER JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
		WHERE tblInvTrackingDT.strPartNumber = @PartNumber
			AND intModule IN (
				1
				,2
				,3
				)
			AND tblInvTracking.dteJournalDate BETWEEN @StartDate
				AND @EndDate
		GROUP BY DATENAME(MONTH, tblInvTracking.dteJournalDate)
			,YEAR(tblInvTracking.dteJournalDate)
			,MONTH(tblInvTracking.dteJournalDate)
		
		UNION ALL
		
		SELECT DATEPART(YEAR, tblInvTracking.dteJournalDate) AS [Year]
			,DATEPART(MONTH, tblInvTracking.dteJournalDate) AS [MonthNo]
			,CONVERT(NVARCHAR, DATEPART(YEAR, tblInvTracking.dteJournalDate)) + ' ' + DATENAME(MONTH, tblInvTracking.dteJournalDate) AS [Month]
			,0 AS [PurchaseQty]
			,0 AS [PurchaseValue]
			,0 AS [AdjustmentQty]
			,SUM(tblInvTrackingDT.decQty) AS [SalesQty]
			,SUM(tblInvTrackingDT.decQty) AS [OnHand]
			,SUM(tblInvTrackingDT.decValue) AS [OnHandValue]
			,SUM(tblInvTrackingDT.decValue) AS [SalesValue]
		FROM tblInvTrackingDT
		INNER JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
		WHERE tblInvTrackingDT.strPartNumber = @PartNumber
			AND intModule = 2
			AND tblInvTracking.dteJournalDate BETWEEN @StartDate
				AND @EndDate
		GROUP BY DATENAME(MONTH, tblInvTracking.dteJournalDate)
			,YEAR(tblInvTracking.dteJournalDate)
			,MONTH(tblInvTracking.dteJournalDate)
		
		UNION ALL
		
		SELECT DATEPART(YEAR, tblInvTracking.dteJournalDate) AS [Year]
			,DATEPART(MONTH, tblInvTracking.dteJournalDate) AS [MonthNo]
			,CONVERT(NVARCHAR, DATEPART(YEAR, tblInvTracking.dteJournalDate)) + ' ' + DATENAME(MONTH, tblInvTracking.dteJournalDate) AS [Month]
			,0 AS [Purchase Qty]
			,0 AS [PurchaseValue]
			,SUM(tblInvTrackingDT.decQty) AS [AdjustmentQty]
			,0 AS [SalesQty]
			,SUM(tblInvTrackingDT.decQty) AS [OnHand]
			,SUM(tblInvTrackingDT.decValue) AS [OnHandValue]
			,0 AS [SalesValue]
		FROM tblInvTrackingDT
		INNER JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
		WHERE tblInvTrackingDT.strPartNumber = @PartNumber
			AND intModule = 4
			AND tblInvTracking.dteJournalDate BETWEEN @StartDate
				AND @EndDate
		GROUP BY DATENAME(MONTH, tblInvTracking.dteJournalDate)
			,YEAR(tblInvTracking.dteJournalDate)
			,MONTH(tblInvTracking.dteJournalDate)
		) Z
	GROUP BY Z.Year
		,Z.MonthNo
		,Z.Month
	ORDER BY Z.Year
		,Z.MonthNo
END
GO

CREATE PROCEDURE [dbo].[GetInvoiceDocREVDTGRV] (
	@DocNumber NVARCHAR(50)
	,@Module INT
	,@RevisionNumber INT
	)
AS
BEGIN
	SELECT tblInvoiceDocREVDT.strPartNumber AS PartNumber
		,strLocation AS [Location]
		,strPartDesc AS [Description]
		,decBuyQty AS BuyQty
		,tblInvoiceDocREVDT.strBuyUnit AS Unit
		,decEaIncTax AS AmountIncTax
		,decLineDiscPerc AS DiscPer
		,strTaxCode AS TaxCode
		,decLineTaxAmt AS Tax
		,decTotIncTax AS AmountIncTax
		,Cast(tblInvoiceDocREVDT.intType AS INT) AS ItemType
		,imgTaxObj AS imgTaxObj
		,ISNULL(tblOrderDocDADTPrj.strProjNumber, '') AS ProjectName
		,ISNULL(tblInvoiceDocREV.strCustName, '') AS SOCustName
		,tblInv.bitInvSerialType AS InventorySerial
		,tblInv.strUnitOfMeasure AS UnitOfMeasureWeight
		,strOrdSODocID AS SODocNum
	FROM tblInvoiceDocREVDT
	INNER JOIN tblInv ON tblInvoiceDocREVDT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblOrderDocDADTPrj ON tblInvoiceDocREVDT.strInvDocID = tblOrderDocDADTPrj.strOrdDADocID
		AND tblInvoiceDocREVDT.intLineNo = tblOrderDocDADTPrj.intLineNo
	LEFT JOIN tblInvoiceDocREV ON tblInvoiceDocREV.lngEntID = tblInvoiceDocREVDT.lngEntID
	WHERE tblInvoiceDocREVDT.strInvDocID = @DocNumber
		AND tblInvoiceDocREV.intRevisionNumber = @RevisionNumber
		AND tblInvoiceDocREV.intModule = @Module
	ORDER BY tblInvoiceDocREVDT.intLineNo
END
GO

CREATE PROCEDURE GetpreferredNotificationWEntitiesFromApproverDocLimit @UserName AS NVARCHAR(100)
AS
BEGIN
	SELECT PreferredNotification AS PreferredNotification
	FROM tblApprovalsDocLimit(NOLOCK)
	WHERE strUserName = @UserName
END
GO

CREATE PROCEDURE [dbo].[GetInvoiceDocDTBOMSerialData]
	@DocNumber  AS NVARCHAR(50),
	@LineNumber AS INT,
	@MainLineNumber AS INT
AS
BEGIN
	SELECT tblInvoiceDocDTBOMSerial.[strInvDocID] AS InvDocID,
	  tblInvoiceDocDTBOMSerial.[intLineNo] AS [LineNo],
	  tblInvoiceDocDTBOMSerial.[intMainLineNo] AS [MainLineNo],
      tblInvoiceDocDTBOMSerial.[strSerialNumber] AS SerialNumber,
      tblInvoiceDocDTBOMSerial.[decQty] AS Qty,
      tblInvoiceDocDTBOMSerial.[strUnit] AS Unit,
      tblInvoiceDocDTBOMSerial.[lngID] AS ID,
      tblInvoiceDocDTBOMSerial.[bitExpiryDate] AS IsExpiryDate ,
      tblInvoiceDocDTBOMSerial.[dteExpiryDate] AS ExpiryDate,
      tblInvoiceDocDTBOMSerial.[intSerialLotType] AS SerialLotType,
	  tblInvoiceDocDTBOMSerial.[lngBinID] AS BinIDLong
	,CONVERT(NVARCHAR(52), CASE 
		WHEN tblInvoiceDocDTBOMSerial.intSerialLotType = 0
			THEN ISNULL(CAST(tblInvSerialExt.intStatus AS CHAR(1)) + tblInvSerialExt.strDocID, '')
		ELSE ''
		END) AS [Status]
	,CONVERT(bit,CASE  
		WHEN tblInvoiceDocDTBOMSerial.intSerialLotType = 0
			THEN ISNULL(tblInvSerialExt.bitDimensionExist, 0)
		ELSE 0
		END) AS IsDimensionExist
	,CONVERT(NVARCHAR(MAX),CASE  
		WHEN tblInvoiceDocDTBOMSerial.intSerialLotType = 0
			THEN ISNULL(tblInvSerialExt.strDimension, '')
		ELSE ''
		END) AS Dimension
	,ISNULL((
			SELECT strBinCode
			FROM tblInvLocBin
			WHERE lngID = tblInvoiceDocDTBOMSerial.lngBinId
			), '') AS BinCode
	FROM tblInvoiceDocDTBOM
	INNER JOIN tblInvoiceDocDTBOMSerial ON tblInvoiceDocDTBOM.strInvDocID = tblInvoiceDocDTBOMSerial.strInvDocID
		AND tblInvoiceDocDTBOM.intLineNo = tblInvoiceDocDTBOMSerial.intLineNo
		AND tblInvoiceDocDTBOM.intMainLineNo = tblInvoiceDocDTBOMSerial.intMainLineNo
	LEFT JOIN tblInvSerialExt ON tblInvoiceDocDTBOM.strPartItemNumber = tblInvSerialExt.strPartNumber
		AND tblInvoiceDocDTBOMSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
	WHERE tblInvoiceDocDTBOM.strInvDocID = @DocNumber
		AND tblInvoiceDocDTBOM.intLineNo = @LineNumber
		AND dbo.tblInvoiceDocDTBOM.intMainLineNo = @MainLineNumber
	ORDER BY lngID
END
GO

CREATE PROCEDURE [dbo].[BOMSerailNumberForSIReport_SubReportData] @DocumentNumber AS VARCHAR(50) = NULL
	,@LineNumber AS INT = NULL
	,@MainLineNumber AS INT = NULL
AS
BEGIN
	SELECT dbo.tblInvoiceDocDTBOMSerial.*
		,ISNULL(tblInvSerialExt.bitDimensionExist, 0) AS bitDimensionExist
		,ISNULL(tblInvSerialExt.strDimension, '') AS strDimension
	FROM dbo.tblInvoiceDocDTBOMSerial
	INNER JOIN tblInvoiceDocDTBOM ON tblInvoiceDocDTBOMSerial.strInvDocID = tblInvoiceDocDTBOM.strInvDocID
		AND tblInvoiceDocDTBOMSerial.intLineNo = tblInvoiceDocDTBOM.intLineNo
		AND tblInvoiceDocDTBOM.intMainLineNo = tblInvoiceDocDTBOMSerial.intMainLineNo
	INNER JOIN tblInvoiceDocDT ON tblInvoiceDocDTBOMSerial.strInvDocID = tblInvoiceDocDT.strInvDocID
		AND tblInvoiceDocDTBOMSerial.intMainLineNo = tblInvoiceDocDT.intLineNo
	LEFT JOIN tblInvSerialExt ON tblInvoiceDocDT.strPartNumber = tblInvSerialExt.strPartNumber
		AND tblInvoiceDocDTBOMSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
	INNER JOIN tblInv ON tblInvoiceDocDT.strPartNumber = tblInv.strPartNumber
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblInvoiceDocDTBOMSerial.strInvDocID = @DocumentNumber
		--AND tblInvSerialTypes.bitPrintInv = 1
		AND tblInvoiceDocDTBOMSerial.intLineNo = @LineNumber
		AND tblInvoiceDocDTBOMSerial.intMainLineNo = @MainLineNumber
	ORDER BY tblInvoiceDocDTBOMSerial.intLineNo, tblInvoiceDocDTBOMSerial.intMainLineNo
END
GO

CREATE PROCEDURE [dbo].[GetOrderDocDADTBOMSerialData]
	@DocNumber  AS NVARCHAR(50),
	@LineNumber AS INT,
	@MainLineNumber AS INT
AS
BEGIN
	SELECT tblOrderDocDADTBOMSerial.[strOrdDocDAID] AS InvDocID,
	  tblOrderDocDADTBOMSerial.[intLineNo] AS [LineNo],
	  tblOrderDocDADTBOMSerial.[intMainLineNo] AS [MainLineNo],
      tblOrderDocDADTBOMSerial.[strSerialNumber] AS SerialNumber,
      tblOrderDocDADTBOMSerial.[decQty] AS Qty,
      tblOrderDocDADTBOMSerial.[strUnit] AS Unit,
      tblOrderDocDADTBOMSerial.[lngID] AS ID,
      tblOrderDocDADTBOMSerial.[bitExpiryDate] AS IsExpiryDate ,
      tblOrderDocDADTBOMSerial.[dteExpiryDate] AS ExpiryDate,
      tblOrderDocDADTBOMSerial.[intSerialLotType] AS SerialLotType,
	  tblOrderDocDADTBOMSerial.[lngBinID] AS BinIDLong
	,CONVERT(NVARCHAR(52), CASE 
		WHEN tblOrderDocDADTBOMSerial.intSerialLotType = 0
			THEN ISNULL(CAST(tblInvSerialExt.intStatus AS CHAR(1)) + tblInvSerialExt.strDocID, '')
		ELSE ''
		END) AS [Status]
	,CONVERT(bit,CASE  
		WHEN tblOrderDocDADTBOMSerial.intSerialLotType = 0
			THEN ISNULL(tblInvSerialExt.bitDimensionExist, 0)
		ELSE 0
		END) AS IsDimensionExist
	,CONVERT(NVARCHAR(MAX),CASE  
		WHEN tblOrderDocDADTBOMSerial.intSerialLotType = 0
			THEN ISNULL(tblInvSerialExt.strDimension, '')
		ELSE ''
		END) AS Dimension
	,ISNULL((
			SELECT strBinCode
			FROM tblInvLocBin
			WHERE lngID = tblOrderDocDADTBOMSerial.lngBinId
			), '') AS BinCode
	FROM tblOrderDocDADTBOM
	INNER JOIN tblOrderDocDADTBOMSerial ON tblOrderDocDADTBOM.strOrdDocDAID = tblOrderDocDADTBOMSerial.strOrdDocDAID
		AND tblOrderDocDADTBOM.intLineNo = tblOrderDocDADTBOMSerial.intLineNo
		AND tblOrderDocDADTBOM.intMainLineNo = tblOrderDocDADTBOMSerial.intMainLineNo
	LEFT JOIN tblInvSerialExt ON tblOrderDocDADTBOM.strPartItemNumber = tblInvSerialExt.strPartNumber
		AND tblOrderDocDADTBOMSerial.strSerialNumber = tblInvSerialExt.strSerialNumber
	WHERE tblOrderDocDADTBOM.strOrdDocDAID = @DocNumber
		AND tblOrderDocDADTBOM.intLineNo = @LineNumber
		AND dbo.tblOrderDocDADTBOM.intMainLineNo = @MainLineNumber
	ORDER BY lngID
END
GO

CREATE PROCEDURE GetCustomerVendorTerm @Term AS NVARCHAR(100)
AS
BEGIN
	SELECT strTerm AS Term
		,intNetDue AS NetDue
		,intNetCalcBy AS NetCalcBy
		,decSettleDisc AS SettleDisc
		,intSettleDays AS SettleDays
		,intSettleCalcBy AS SettleCalcBy
		,intStatCalculated AS StatCalculated
		,intTermType AS TermType
		,intCalCalcBy AS CalCalcBy
	FROM tblTerms
	WHERE strTerm = @Term
END
GO

CREATE PROCEDURE GetSalesPersonsFromInvoiceDoc @PickedDocNumber AS NVARCHAR(100)
AS
BEGIN
	SELECT ISNULL(strSalesName, '')
	FROM tblInvoiceDoc
	WHERE strInvDocID = @PickedDocNumber
END
GO

CREATE PROCEDURE [dbo].[InsertVendorBankDetail] (
	@VendorName VARCHAR(100)
	,@BankName VARCHAR(200)
	,@BankCode VARCHAR(200)
	,@BankDesc VARCHAR(200)
	,@BankNumber VARCHAR(100)
	)
AS
BEGIN
	INSERT INTO tblVendorsMRABankDetail (
		strVendName
		,strBankName
		,strBankCode
		,strBankDesc
		,strBankNumber
		)
	VALUES (
		@VendorName
		,@BankName
		,@BankCode
		,@BankDesc
		,@BankNumber
		)
END
GO

CREATE PROCEDURE [dbo].[DeleteVendorBankDetails] @VendorName VARCHAR(100)
AS
BEGIN
	IF EXISTS (
			SELECT 1
			FROM tblVendorsMRABankDetail
			WHERE strVendName = @VendorName
			)
	BEGIN
		DELETE
		FROM tblVendorsMRABankDetail
		WHERE strVendName = @VendorName;
	END
END
GO

CREATE PROCEDURE [dbo].[GetVendorsBankDeatilsData] (@VendorName AS NVARCHAR(100))
AS
BEGIN
	SELECT strBankName AS BankName
		,strBankCode AS BankCode
		,strBankDesc AS BankDesc
		,strBankNumber AS BankNumber
	FROM tblVendorsMRABankDetail
	WHERE strVendName = @VendorName
END
GO

CREATE PROCEDURE GetProfitCenterCount
AS
BEGIN
	SELECT COUNT(strLvl1) AS centerCnt
	FROM tblCenters
END
GO

CREATE PROCEDURE GetItemLocationName
AS
BEGIN
	SELECT strLocName
	FROM tblInvLoc
	WHERE bitDefault = 1
END
GO

CREATE PROCEDURE GetInvCategoriesList
AS
BEGIN
	SELECT strCategory AS Category
		,strDesc AS [Description]
		,bitInactive AS InActive
		,decMinMarginPerc AS MinMarginPerc
		,bitUseMinMarginPerc AS IsUseMinMarginPerc
		,intAlertOnMinMarginPerc AS InvAlertOnMinMarginPerc
		,strAcctSetInv AS AccSetInv
		,strAcctSetSvc AS AccSetSvc
		,strAcctSetBO AS AccSetBo
		,bitDefault AS IsDefault
	FROM tblInvCat
	ORDER BY strCategory
END
GO

CREATE PROCEDURE [dbo].[GetAllInvLoc]
AS
BEGIN
	SELECT strLocName AS LocName
		,strDesc AS [Desc]
		,bitDefault AS [Default]
		,intType AS [Type]
		,bitCustSale AS [CustSale]
		,bitCustReturn AS CustReturn
		,bitVendReceive AS VendReceive
		,bitVendReturn AS VendReturn
		,strLocName AS DisplayLoc
	FROM tblInvLoc
END  
GO

CREATE PROCEDURE [dbo].[GetDimensionProfiles]
AS
BEGIN
	SELECT strDimProCode
	FROM tblDimensionProfiles
	WHERE bitInactive = 0
	ORDER BY strDimProCode
END
GO

CREATE PROCEDURE [dbo].[GetLocationBinsData] @LocationName NVARCHAR(10)
	,@UserName NVARCHAR(20) = NULL
AS
BEGIN
	SELECT tblInvLocBin.strBinCode AS 'BinCode'
		,strDescription AS 'Description'
		,decCapacity AS 'MaxCapacity'
		,ISNULL((
				SELECT COUNT(tblInvLocBinSec.strBinCode)
				FROM tblInvLocBinSec
				WHERE tblInvLocBinSec.strBinCode = tblInvLocBin.strBinCode
					AND tblInvLocBinSec.strLocName = tblInvLocBin.strLocName
				), 0)
		,ISNULL(tblInvLocBinSec.strUserName, '')
	FROM tblInvLocBin
	LEFT JOIN tblInvLocBinSec ON tblInvLocBin.strBinCode = tblInvLocBinSec.strBinCode
		AND tblInvLocBinSec.strLocName = tblInvLocBin.strLocName
		AND tblInvLocBinSec.strUserName = @UserName
	WHERE tblInvLocBin.strLocName = @LocationName
	ORDER BY tblInvLocBin.strLocName
END
GO

CREATE PROCEDURE [GetAllInvTaxCodes]
AS
BEGIN
	SELECT
		strTaxCode AS TaxCode,
		strDescription AS [Description],
		intAllowedJournals AS AllowedJournalsCode,
		bitDefVendors AS IsDefVendor,
		bitDefCustomers AS IsDefCustomer,
		bitDefCBPayments AS IsDefPayment,
		bitDefCBReceipts AS IsDefReceipt,
		bitRequiresOrderNumber AS IsRequiresOrderNumber,
		strReferenceLabel AS ReferenceLabel,
		bitValidateCharacters AS IsValidateCharacters,
		bitSetLength AS IsSetLength,
		intMinLength AS MinLength,
		intMaxLength AS [MaxLength],
		intValidationCharacterType AS ValidationCharacterType
	FROM tblTaxCodes
	ORDER BY strTaxCode
END
GO

CREATE PROCEDURE [GetInvPriceListByDate]
AS
BEGIN
	SELECT
		uidPriceBasedID AS PriceBasedID,
		dteFinishDate AS FinishDate,
		bitInactive AS Inactive,
		strPricelist AS PriceList,
		dteStartDate AS StartDate
	FROM tblPriceListsByDate
	WHERE bitInactive = 0
END
GO

CREATE PROCEDURE [GetMinGLNumberFromAccountsLegend]
AS
BEGIN
	SELECT MIN(intGLNumberFrom) FROM tblAccountsLegend
END
GO

CREATE PROCEDURE [GetMaxGLNumberFromAccountsLegend]
AS
BEGIN
	SELECT MAX(intGLNumberTo) FROM tblAccountsLegend
END
GO

CREATE PROCEDURE [GetGLNumberFromAccountsTable]
AS
BEGIN
	SELECT 
		intGLNumber AS GLNumber,
		decOpenBalance AS OpenBalance,
		decBalance AS Balance,
		strCurrency AS Currency,
		decBalanceF AS OpenBalanceF,
		decBalanceF AS BalanceF,
		intGroupCode AS GroupCode,
		intAccType AS AccType,
		intAccClass AS AccClass,
		bitInactive AS Inactive,
		bitRecon AS Recon,
		bitBudget AS Budget,
		bitLinkREarnings AS LinkREarnings,
		bitLinkCEarnings AS LinkCEarnings,
		bitIsLinkedAccount AS IsLinkedAccount,
		bitInventory AS Inventory,
		bitAllowCenters AS AllowCenters,
		intCheqNumber AS CheqNumber,
		bitUsed AS Used,
		bitUsedLY AS UsedLY,
		strField1 AS Field1,
		strField2 AS Field2,
		strField3 AS Field3,
		strField4 AS Field4,
		strField5 AS Field5,
		strField6 AS Field6,
		decLYOpenBalanceF AS LYOpenBalanceF,
		decLYEndBalanceF AS LYEndBalanceF,
		decLYOpenBalance AS LYOpenBalance,
		decLYEndBalance AS LYEndBalance,
		bitDefBank AS DefBank
	FROM tblAccounts
END
GO

CREATE PROCEDURE [GetGLAccountsFileData] @GLNumber NVARCHAR(200)
AS
BEGIN
	SELECT intGLNumber AS GLNumber
		,strFileName AS [FileName]
		,dteModified AS Modified
		,strType AS [Type]
		,intSize AS FileSize
		,strUserName AS UserName
		,bitEnc AS Enc
		,imgFile AS [File]
	FROM tblAccountF
	WHERE intGLNumber = @GLNumber
END
GO

CREATE PROCEDURE [GetAccountsDeptCheckData] (
	@GLNumber NVARCHAR(200)
	,@Dept INT
	)
AS
BEGIN
	SELECT decBalance AS Balance
		,bitUsed AS Used
		,bitUsedLY AS UsedLY
		,intGLNumber AS GLNumber
		,intDept AS Dept
	FROM tblAccountsDept
	WHERE intGLNumber = @GLNumber
		AND intDept = @Dept
END
GO

CREATE PROCEDURE PurchasesGRVExpenseInserted (
	@JourID BIGINT
	,@GLNumber NVARCHAR(100)
	,@uidYearID UNIQUEIDENTIFIER
	,@yearAdj INT
	)
AS
BEGIN
	IF @yearAdj = 0
	BEGIN
		SELECT COUNT(intGLNumber)
		FROM tblJournalEnt
		WHERE (lngJourID = @JourID)
			AND (intGLNumber = @GLNumber)
			AND (
				intGLNumber NOT IN (
					SELECT intGLAsset
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLRevenue
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLExpCOGS
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLVariance
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT tblAccounts.intGLNumber
					FROM tblInv
					INNER JOIN tblAccounts ON tblInv.intExpAcct = tblAccounts.intGLNumber
					WHERE tblInv.intType = 5
					)
				)
	END
	ELSE IF @yearAdj = 1
	BEGIN
		SELECT COUNT(intGLNumber)
		FROM tblJournalEntLY
		WHERE (lngJourID = @JourID)
			AND (intGLNumber = @GLNumber)
			AND (
				intGLNumber NOT IN (
					SELECT intGLAsset
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLRevenue
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLExpCOGS
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLVariance
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT tblAccounts.intGLNumber
					FROM tblInv
					INNER JOIN tblAccounts ON tblInv.intExpAcct = tblAccounts.intGLNumber
					WHERE tblInv.intType = 5
					)
				)
	END
	ELSE
	BEGIN
		SELECT COUNT(intGLNumber)
		FROM tblJournalEntHist
		WHERE (uidYearID = @uidYearID)
			AND (lngJourID = @JourID)
			AND (intGLNumber = @GLNumber)
			AND (
				intGLNumber NOT IN (
					SELECT intGLAsset
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLRevenue
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLExpCOGS
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT intGLVariance
					FROM tblAccountSets
					)
				)
			AND (
				intGLNumber NOT IN (
					SELECT tblAccounts.intGLNumber
					FROM tblInv
					INNER JOIN tblAccounts ON tblInv.intExpAcct = tblAccounts.intGLNumber
					WHERE tblInv.intType = 5
					)
				)
	END
END
GO

CREATE PROCEDURE [dbo].[SPPurchaseOrderData](
	@DocNumber NVARCHAR(100),
	@IsVendStockCodes bit = 0
	)
AS
BEGIN
	DECLARE @transactionType NVARCHAR(100) = 'PurchaseOrder'
	IF (@isVendStockCodes = 1)
		BEGIN
		IF (@transactionType = 'Requisition')
			SELECT tblOrderDocPDT.*, 
				ISNULL(tblInvVend.strItemCode,'') AS strItemCode, 
				ISNULL(tblInvVend.strItemDesc,'') AS strItemDesc, 
				tblInv.strBarCode, 
				tblInv.strBarCode2, 
				(SELECT bitInvImgOnPQ FROM tblCoOpts) AS bitShowImage, 
				tblInvImg.imgData AS imgImage, 
				tblOrderDocPDT.strPartExtendedDesc AS strExtendedDesc, 
				tblInv.bitInvExtDescOnPQ AS bitShowExtendedDesc 
			FROM tblOrderDocPDT INNER JOIN tblOrderDocP ON tblOrderDocPDT.strOrdPDocID = tblOrderDocP.strOrdPDocID 
				INNER JOIN tblInv ON tblOrderDocPDT.strPartNumber = tblInv.strPartNumber 
				LEFT JOIN tblInvVend ON tblOrderDocPDT.strPartNumber = tblInvVend.strPartNumber AND tblOrderDocP.strVendName = tblInvVend.strVendName 
				LEFT JOIN tblInvImg ON tblOrderDocPDT.strPartNumber = tblInvImg.strPartNumber AND tblInvImg.bitDefaultImage = 1 
			WHERE tblOrderDocPDT.strOrdPDocID = @DocNumber AND tblOrderDocPDT.bitDiscountTax = 0 
			ORDER BY tblOrderDocPDT.intLineNo
			ELSE IF (@transactionType = 'PurchaseOrder')
				SELECT tblOrderDocPDT.*, 
					ISNULL(tblInvVend.strItemCode,'') AS strItemCode, 
					ISNULL(tblInvVend.strItemDesc,'') AS strItemDesc, 
					tblInv.strBarCode, tblInv.strBarCode2, 
					(SELECT bitInvImgOnPO FROM tblCoOpts) AS bitShowImage, 
					tblInvImg.imgData AS imgImage, 
					tblOrderDocPDT.strPartExtendedDesc AS strExtendedDesc, 
					tblInv.bitInvExtDescOnPO AS bitShowExtendedDesc 
				FROM tblOrderDocPDT INNER JOIN tblOrderDocP ON tblOrderDocPDT.strOrdPDocID = tblOrderDocP.strOrdPDocID 
					INNER JOIN tblInv ON tblOrderDocPDT.strPartNumber = tblInv.strPartNumber 
					LEFT JOIN tblInvVend ON tblOrderDocPDT.strPartNumber = tblInvVend.strPartNumber AND tblOrderDocP.strVendName = tblInvVend.strVendName 
					LEFT JOIN tblInvImg ON tblOrderDocPDT.strPartNumber = tblInvImg.strPartNumber AND tblInvImg.bitDefaultImage = 1 
				WHERE tblOrderDocPDT.strOrdPDocID = @DocNumber AND tblOrderDocPDT.bitDiscountTax = 0 
				ORDER BY tblOrderDocPDT.intLineNo
		END
	ELSE
	BEGIN
		IF (@transactionType = 'Requisition')
			SELECT tblOrderDocPDT.*, 
				'' AS strItemCode, 
				'' AS strItemDesc, 
				tblInv.strBarCode, 
				tblInv.strBarCode2, 
				(SELECT bitInvImgOnPQ FROM tblCoOpts) AS bitShowImage, 
				tblInvImg.imgData AS imgImage, 
				tblOrderDocPDT.strPartExtendedDesc AS strExtendedDesc, 
				tblInv.bitInvExtDescOnPQ AS bitShowExtendedDesc 
			FROM tblOrderDocPDT INNER JOIN tblOrderDocP ON tblOrderDocPDT.strOrdPDocID = tblOrderDocP.strOrdPDocID 
				INNER JOIN tblInv ON tblOrderDocPDT.strPartNumber = tblInv.strPartNumber 
				LEFT JOIN tblInvImg ON tblOrderDocPDT.strPartNumber = tblInvImg.strPartNumber AND tblInvImg.bitDefaultImage = 1 
			WHERE tblOrderDocPDT.strOrdPDocID = @DocNumber AND tblOrderDocPDT.bitDiscountTax = 0 ORDER BY tblOrderDocPDT.intLineNo
			ELSE IF(@transactionType = 'PurchaseOrder')
				SELECT tblOrderDocPDT.*, 
					'' AS strItemCode, 
					'' AS strItemDesc, 
					tblInv.strBarCode, 
					tblInv.strBarCode2, 
					(SELECT bitInvImgOnPO FROM tblCoOpts) AS bitShowImage, 
					tblInvImg.imgData AS imgImage, 
					tblOrderDocPDT.strPartExtendedDesc AS strExtendedDesc, 
					tblInv.bitInvExtDescOnPO AS bitShowExtendedDesc 
				FROM tblOrderDocPDT INNER JOIN tblOrderDocP ON tblOrderDocPDT.strOrdPDocID = tblOrderDocP.strOrdPDocID 
					INNER JOIN tblInv ON tblOrderDocPDT.strPartNumber = tblInv.strPartNumber 
					LEFT JOIN tblInvImg ON tblOrderDocPDT.strPartNumber = tblInvImg.strPartNumber AND tblInvImg.bitDefaultImage = 1 
				WHERE tblOrderDocPDT.strOrdPDocID = @DocNumber AND tblOrderDocPDT.bitDiscountTax = 0 
				ORDER BY tblOrderDocPDT.intLineNo
		END
	END
GO

CREATE PROCEDURE [dbo].[GetInvTrackingBinDataGRV] @DocNumber AS NVARCHAR(50)
AS
BEGIN
	SELECT tblInvTrackingDT.strPartNumber AS PartNumber
		,tblInvTrackingDT.strLocName AS LocName
		,tblInvTrackingDTBin.decQty AS Qty
		,tblInvTrackingDT.intLineNo AS [LineNo]
		,tblInvTrackingDTBin.lngBinId AS BinId
	FROM tblInvTrackingDTBin
	INNER JOIN tblInvTrackingDT ON tblInvTrackingDTBin.lngInvTrackId = tblInvTrackingDT.lngInvTrackID
		AND tblInvTrackingDTBin.intLineNo = tblInvTrackingDT.intLineNo
	INNER JOIN tblInvTracking ON tblInvTracking.lngInvTrackID = tblInvTrackingDT.lngInvTrackID
	INNER JOIN tblOrderDocPG ON tblOrderDocPG.lngInvTrackID = tblInvTracking.lngInvTrackID
	WHERE tblOrderDocPG.strOrdPGDocID = @DocNumber
END
GO

CREATE PROCEDURE DeleteAccountFData @GLNumber AS NVARCHAR(30)
AS
BEGIN
	DELETE
	FROM tblAccountF
	WHERE intGLNumber = @GLNumber
END
GO

CREATE PROCEDURE DeleteAccountSecDataByGLNumber @GLNumber AS NVARCHAR(30)
AS
BEGIN
	DELETE
	FROM tblAccountsSec
	WHERE intGLNumber = @GLNumber
END
GO

CREATE PROCEDURE DeleteAccountBudgetDataByGLNumber @GLNumber AS NVARCHAR(30)
AS
BEGIN
	DELETE
	FROM tblAcctBudgets
	WHERE intGLNumber = @GLNumber
END
GO

CREATE PROCEDURE GetInvContainersByPartNumber @PartNumber AS NVARCHAR(30)
AS
BEGIN
	SELECT strPartNumber AS PartNumber
		,strPartItemNumber AS ItemNumber
		,decQuantity AS Quantity
		,bitRoundUp AS IsRoundUp
	FROM tblInvContainers
	WHERE strPartItemNumber = @PartNumber
END
GO

CREATE PROCEDURE GetVendorTPIN (@VendorName NVARCHAR(50))
AS
BEGIN
	SELECT ISNULL(strVendTPIN, '')
	FROM tblVendors
	WHERE strVendName = @VendorName
END
GO

CREATE PROCEDURE [dbo].[LinkedCustomersSearch] @Search AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT strCustName AS CustName
		,strCustDesc AS CustDesc
	FROM tblCustomers
	WHERE (
			ISNULL(strCustName, '') LIKE '%' + ISNULL(@search, strCustName) + '%'
			OR ISNULL(strCustDesc, '') LIKE '%' + ISNULL(@search, strCustDesc) + '%'
			)
END
GO

CREATE PROCEDURE [dbo].[GetAllAccountLY]
AS
BEGIN
	SELECT ac.intGLNumber AS GLNumber
		,ac.strDesc AS Description
		,ac.bitLinkREarnings AS LinkREarnings
		,ac.bitLinkCEarnings AS LinkCEarnings
		,ac.bitLinkAP AS LinkAP
		,ac.bitLinkPurDisc AS LinkPurDisc
		,ac.bitLinkAR AS LinkAR
		,ac.bitLinkSalesDisc AS LinkSalesDisc
		,ac.bitLinkAssCosts AS LinkAssCosts
		,ac.bitLinkAdjWriteOff AS LinkAdjWriteOff
		,ac.bitDefBank AS DefBank
		,ac.bitLinkPrePay AS LinkPrePay
		,ac.bitLinkDeposit AS LinkDeposit
		,ac.bitLinkExc AS LinkExc
		,ac.bitLinkGRV AS LinkGRV
		,ac.bitLinkAddCost AS LinkAddCost
		,ac.bitLinkDelAdvice AS LinkDelAdvice
		,ac.bitLinkWIP AS LinkWIP
		,ac.bitLinkManStandardCost AS LinkManStandardCost
		,ac.bitLinkWorkshopWIP AS IsLinkWorkshopWIP
		,ac.bitLinkGoodsInTransit AS IsGoodsInTransit
	FROM tblAccountsLY ac
	WHERE ac.bitIsLinkedAccount = 1;
END;
GO

CREATE PROCEDURE [dbo].[GetAllAccounts]
AS
BEGIN
	SELECT ac.intGLNumber AS GLNumber
		,ac.strDesc AS Description
		,ac.bitLinkREarnings AS LinkREarnings
		,ac.bitLinkCEarnings AS LinkCEarnings
		,ac.bitLinkAP AS LinkAP
		,ac.bitLinkPurDisc AS LinkPurDisc
		,ac.bitLinkAR AS LinkAR
		,ac.bitLinkSalesDisc AS LinkSalesDisc
		,ac.bitLinkAssCosts AS LinkAssCosts
		,ac.bitLinkAdjWriteOff AS LinkAdjWriteOff
		,ac.bitDefBank AS DefBank
		,ac.bitLinkPrePay AS LinkPrePay
		,ac.bitLinkDeposit AS LinkDeposit
		,ac.bitLinkExc AS LinkExc
		,ac.bitLinkGRV AS LinkGRV
		,ac.bitLinkAddCost AS LinkAddCost
		,ac.bitLinkDelAdvice AS LinkDelAdvice
		,ac.bitLinkWIP AS LinkWIP
		,ac.bitLinkManStandardCost AS LinkManStandardCost
		,ac.bitLinkWorkshopWIP AS IsLinkWorkshopWIP
		,ac.bitLinkGoodsInTransit AS IsGoodsInTransit
	FROM tblAccounts ac
	WHERE ac.bitIsLinkedAccount = 1;
END;
GO

CREATE PROCEDURE [dbo].[GetInvOptionFieldsForInvPicker]
AS
BEGIN
	SELECT [strInv1]
		,[strInv2]
		,[strInv3]
		,[strInv4]
		,[strInv5]
		,[strInv6]
	FROM [dbo].[tblOptFields]
END
GO

CREATE PROCEDURE [dbo].[GetDefaultSaleQuantity] @strPartNumber NVARCHAR(50)
AS
BEGIN
	SELECT [decDefSaleQty]
	FROM [dbo].[tblInv]
	WHERE strPartNumber = @strPartNumber
END
GO

CREATE PROCEDURE [dbo].[GetInventoryLastUpdate]
AS
BEGIN
	SELECT MAX([dteLastUpdated]) AS dteLastUpdated
	FROM [dbo].[tblInv]
END
GO

CREATE PROCEDURE [dbo].[GetERPInformation]
AS
BEGIN
	SELECT [bitActivateERPIntegration] AS ActivateERPIntegration
		,[bitERPAR] AS ERPAR
		,[strERPSystem] AS ERPSystem
		,[strERPURL] AS ERPURL
		,[strERPUser] AS ERPUser
		,[strERPPassword] AS ERPPassword
		,[dteLastUpdatedSynchTime] AS LastUpdatedSynchTime
		,[intNumberOfHoursFromLastSynch] AS NumberOfHoursFromLastSynch
	FROM [dbo].[tblPOSOpts]
END
GO

CREATE PROCEDURE [dbo].[GetSOLines] @strOrdDocID NVARCHAR(50)
AS
BEGIN
	SELECT [strPartNumber] AS PartNumber
		,[intLineNo] AS [LineNo]
		,[decQty] AS QtyOriginal
		,[decQtyRemaining] AS QtyRemaining
		,[decStockQty] AS SellFromStock
		,[decStockQtyRemain] AS SellQtyRemaining
	FROM [dbo].[tblOrderDocDT]
	WHERE [strOrdDocID] = @strOrdDocID
		AND [decQtyRemaining] != 0
END
GO

CREATE PROCEDURE [dbo].[GetInvoiceDoc] (@DocNumber AS NVARCHAR(50))
AS
BEGIN
	SELECT [strInvDocID] AS InvDocID
		,[lngInvTrackID] AS InvTrackID
		,[lngJourID] AS JourID
		,[dteSystemDate] AS SystemDate
		,[dteJournalDate] AS JournalDate
		,[dteRequired] AS [Required]
		,[strUserName] AS UserName
		,[strCustName] AS CustName
		,[strSoldTo] AS SoldTo
		,[strShipTo] AS ShipTo
		,[strReference] AS Reference
		,[decSubTotal] AS SubTotal
		,[decVAT] AS VAT
		,[decTotal] AS Total
		,[bitFromSO] AS FromSO
		,[strOrdDocID] AS OrdDocID
		,[bitHistoryTrans] AS HistoryTrans
		,[strNotes] AS Notes
		,[bitPrinted] AS Printed
		,[bitEmailed] AS Emailed
		,[intPaidBy] AS PaidBy
		,[intAccount] AS Account
		,[strSalesName] AS SalesName
		,[strAddInfo] AS AddInfo
		,[bitReserved] AS Reserved
		,[strCurrency] AS Currency
		,[bitIsForeign] AS IsForeign
		,[decSubTotalF] AS SubTotalF
		,[decVATF] AS VATF
		,[decTotalF] AS TotalF
		,[decExchange] AS Exchange
		,[strTerm] AS Term
		,[intDept] AS Dept
		,[strField1] AS Field1
		,[strField2] AS Field2
		,[strField3] AS Field3
		,[strField4] AS Field4
		,[strField5] AS Field5
		,[strField6] AS Field6
		,[strField7] AS Field7
		,[strField8] AS Field8
		,[strField9] AS Field9
		,[strField10] AS Field10
		,[strField11] AS Field11
		,[strField12] AS Field12
		,[strSubFormated] AS SubFormated
		,[strVATFormatted] AS VATFormatted
		,[strTotFormatted] AS TotFormatted
		,[dteField13] AS Field13
		,[dteField14] AS Field14
		,[decDiscPerc] AS DiscPerc
		,[decDiscAmt] AS DiscAmt
		,[decDiscAmtF] AS DiscAmtF
		,[strDiscFormatted] AS DiscFormatted
		,[strOrdFQDocID] AS OrdFQDocID
		,[strStatusTypeCode] AS StatusTypeCode
		,[strCNReasonCode] AS CNReasonCode
		,[bitBookmark] AS Bookmark
		,[dteSystemDateTime] AS SystemDateTime
		,[strPaidBy] AS PaidByText
		,[intSentDoc] AS SentDoc
		,[strVAT] AS VATText
		,[strDelMethodCode] AS DelMethodCode
		,[decTotalWeight] AS TotalWeight
		,[decTotalVolWeight] AS TotalVolWeight
		,[decDeliveryCost] AS DeliveryCost
		,[decDeliveryCostF] AS DeliveryCostF
		,[strDeliveryCostFormatted] AS DeliveryCostFormatted
		,[bitShipmentsAuditTrail] AS ShipmentsAuditTrail
		,[intRevisionNumber] AS InvDocID
		,[strStoreNumber] AS StoreNumber
		,[strEDI] AS EDI
		,[bitNoPODRequired] AS IsNoPODRequired
		,[intSalesAccrualProcess] AS SalesAccrualProcess
		,[strLPO] AS LPO
	FROM [dbo].[tblInvoiceDoc]
	WHERE [strInvDocID] = @DocNumber
END
GO

CREATE PROCEDURE GetGLNumberFromAccountBasedOnLinkAP
AS
BEGIN
	SELECT intGLNumber
	FROM tblAccounts
	WHERE bitLinkAP = 1
END
GO

CREATE PROCEDURE GetGLNumberFromAccountBasedOnLinkPrePay
AS
BEGIN
	SELECT intGLNumber
	FROM tblAccounts
	WHERE bitLinkPrePay = 1
END
GO

CREATE PROCEDURE GetGLNumberFromAccountsForLinkREarning
AS
BEGIN
	SELECT ISNULL(intGLNumber, 0)
	FROM tblAccounts
	WHERE bitLinkREarnings = 1
END
GO

CREATE PROCEDURE GetGLNumberFromAccountsForLinkCEarnings
AS
BEGIN
	SELECT ISNULL(intGLNumber, 0)
	FROM tblAccounts
	WHERE bitLinkCEarnings = 1
END
GO

CREATE PROCEDURE GetDataFromAccountsForGLNumber @Accounts AS NVARCHAR(100)
AS
BEGIN
	SELECT decOpenBalance AS OpenBalance
		,decBalance AS Balance
		,strCurrency AS Currency
		,decOpenBalanceF AS OpenBalanceF
		,decBalanceF AS BalanceF
	FROM tblAccounts
	WHERE (intGLNumber = @Accounts)
END
GO

CREATE PROCEDURE GetGLNumberFromAccountBasedOnLinkAR
AS
BEGIN
	SELECT intGLNumber
	FROM tblAccounts
	WHERE bitLinkAR = 1
END
GO

CREATE PROCEDURE GetGLNumberFromAccountBasedOnLinkDeposit
AS
BEGIN
	SELECT intGLNumber
	FROM tblAccounts
	WHERE bitLinkDeposit = 1
END
GO

CREATE PROCEDURE [dbo].[DeleteItemDescriptionGeneral] @strDescription AS NVARCHAR(250)
AS
BEGIN
	DELETE
	FROM tblGeneralDescription
	WHERE tblGeneralDescription.strDescription = @strDescription
END
GO

CREATE PROCEDURE [dbo].[AddItemDescriptionGeneral] (
	@Description NVARCHAR(250)
	,@DescriptionOrder INT
	,@DescriptionOLD NVARCHAR(250) = NULL
	)
AS
BEGIN
	IF (@DescriptionOLD IS NOT NULL)
	BEGIN
		UPDATE tblGeneralDescription
		SET strDescription = @Description
			,intOrder = @DescriptionOrder
		WHERE strDescription = @DescriptionOLD
	END
	ELSE
	BEGIN
		INSERT INTO tblGeneralDescription (
			strDescription
			,intOrder
			)
		VALUES (
			@Description
			,@DescriptionOrder
			)
	END
END
GO

CREATE PROCEDURE [dbo].[DeleteItemDescriptionGeneralAutoCompleteData] @Description AS NVARCHAR(max)
AS
BEGIN
	DELETE
	FROM tblGeneralDescriptionAutoComplete
	WHERE strDescription = @Description
END
GO

CREATE PROCEDURE [dbo].[AddItemDescriptionGeneralData] @Description
AS
GeneralDescriptionTableType ReadOnly AS

BEGIN
	INSERT INTO tblGeneralDescriptionAutoComplete (
		strDescription
		,strValue
		)
	SELECT v.strDescription
		,v.strValue
	FROM @Description v
END
GO

CREATE PROCEDURE [dbo].[GetItemDescriptionGeneralList]
AS
BEGIN
	SELECT tblGeneralDescription.strDescription AS [Description]
		,tblGeneralDescription.strDescription AS [DescriptionOLD]
		,tblGeneralDescription.intOrder AS [DescriptionOrder]
	FROM tblGeneralDescription
	ORDER BY intOrder
		,tblGeneralDescription.strDescription ASC
END
GO

CREATE PROCEDURE [dbo].[GetGeneralItemDescriptionAutoCompleteList]
AS
BEGIN
	SELECT strDescription AS [LabelValue]
		,strValue AS [Description]
		,strDescription AS [DescriptionOLD]
	FROM tblGeneralDescriptionAutoComplete
END
GO

CREATE PROCEDURE [dbo].[GetGeneralItemDescriptionFieldListByFieldName] @strDescription AS NVARCHAR(Max) = ''
AS
BEGIN
	SELECT DISTINCT (strValue)
	FROM tblGeneralDescriptionAutoComplete
	WHERE strDescription = @strDescription
	ORDER BY strValue ASC
END
GO

CREATE PROCEDURE [dbo].[GetGeneralDescriptionFieldList] @IsEdit AS BIT
	,@PartNumber AS NVARCHAR(100) = NULL
AS
BEGIN
	IF (@IsEdit = 0)
	BEGIN
		SELECT strDescription AS [Description]
			,intOrder AS [DescriptionOrder]
			,'' AS [LabelValue]
		FROM tblGeneralDescription
		ORDER BY intOrder
			,strDescription ASC
	END
	ELSE
	BEGIN
			;

		WITH tbltempListData
		AS (
			SELECT tblGeneralDescriptionList.strDescription AS [Description]
				,ISNULL(ISNULL(tblGeneralDescriptionList.intDescriptionOrder, tblGeneralDescription.intOrder), 0) AS [DescriptionOrder]
				,tblGeneralDescriptionList.strDescriptionValue AS [LabelValue]
			FROM tblGeneralDescriptionList
			LEFT JOIN tblGeneralDescription ON tblGeneralDescriptionList.strDescription = tblGeneralDescription.strDescription
			WHERE strGLNumber = @PartNumber
			)
			,tbltempListData2
		AS (
			SELECT tblGeneralDescription.strDescription AS [Description]
				,tblGeneralDescription.intOrder AS [DescriptionOrder]
				,'' AS [LabelValue]
			FROM tblGeneralDescription
			WHERE tblGeneralDescription.strDescription NOT IN (
					SELECT tbltempListData.Description
					FROM tbltempListData
					)
			)
			,tbltempListData3
		AS (
			SELECT Description
				,DescriptionOrder
				,LabelValue
				,Cast(0 AS BIT) AS IsNew
			FROM tbltempListData
			
			UNION ALL
			
			SELECT Description
				,DescriptionOrder
				,LabelValue
				,Cast(1 AS BIT) AS IsNew
			FROM tbltempListData2
			)
		SELECT *
		FROM tbltempListData3
		ORDER BY DescriptionOrder
			,Description ASC
	END
END
GO

CREATE PROCEDURE [dbo].[InsertGLDescriptionList] @GLNumber AS NVARCHAR(50)
	,@Description AS NVARCHAR(50)
	,@LabelValue AS NVARCHAR(120)
	,@DescriptionOrder AS INT
AS
BEGIN
	INSERT INTO tblGeneralDescriptionList (
		strGLNumber
		,strDescription
		,strDescriptionValue
		,intDescriptionOrder
		)
	VALUES (
		@GLNumber
		,@Description
		,@LabelValue
		,@DescriptionOrder
		)
END
GO

CREATE PROCEDURE InsertGLDescriptionAutoComplete @Description AS NVARCHAR(50)
	,@LabelValue AS MONEY
AS
BEGIN
	INSERT INTO tblGeneralDescriptionAutoComplete (
		strDescription
		,strValue
		)
	VALUES (
		@Description
		,@LabelValue
		)
END
GO

CREATE PROCEDURE DeleteGLDescriptionList @GLNumber AS NVARCHAR(250)
AS
BEGIN
	DELETE
	FROM tblGeneralDescriptionList
	WHERE strGLNumber = @GLNumber
END
GO

CREATE PROCEDURE [dbo].[GetAllVendorBankDetailData]
AS
BEGIN
	SELECT strBankName AS BankName
		,strBankDesc AS BankDesc
		,strBankNumber AS BankNumber
		,strBankCode AS BankCode
	FROM tblVendorsMRABankDetail
END
GO

CREATE PROCEDURE [dbo].[GetVendorBankDetailData] @vendorName NVARCHAR(200)
AS
BEGIN
	SELECT strBankName AS BankName
		,strBankDesc AS BankDesc
		,strBankNumber AS BankNumber
		,strBankCode AS BankCode
	FROM tblVendorsMRABankDetail
	WHERE strVendName = @vendorName
END
GO

CREATE PROCEDURE [dbo].[InsertMRATemplateUserArccessData] (
	@BMDocID NVARCHAR(200)
	,@Username NVARCHAR(200)
	,@IsAdmin BIT
	,@IsMRATemplateUploaded BIT
	)
AS
BEGIN
	INSERT INTO [tblMRATemplateUserArccess]
	VALUES (
		@BMDocID
		,@Username
		,@IsAdmin
		,@IsMRATemplateUploaded
		)
END
GO

CREATE PROCEDURE [dbo].[GetMRATemplateUserArccessDataByUsername] (
	@BMDocID NVARCHAR(200)
	,@Username NVARCHAR(200)
	)
AS
BEGIN
	SELECT bitMRATemplateUploaded AS IsMRATemplateUploaded
	FROM [tblMRATemplateUserArccess]
	WHERE strBMDocID = @BMDocID
		AND strUsername = @Username
END
GO

CREATE PROCEDURE [dbo].[AddUpdatetblAccountsSec] @tblData
AS
AccountsSecTableType READONLY AS

BEGIN
	TRUNCATE TABLE tblAccountsSec

	INSERT INTO tblAccountsSec (
		intGLNumber
		,strUserName
		)
	SELECT intGLNumber
		,strUserName
	FROM @tblData AS t
END
GO

CREATE PROCEDURE [dbo].[GetAllLinkedAccountsForAccountPickerCY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 ,@isForeignCurrencyRevaluation BIT  
 ,@isGridAccount BIT  
 ,@GridAccountList VARCHAR(MAX)  
 ,@RevaluationDate DATETIME  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (tblAccounts.bitInactive = 0)  
    AND (tblAccounts.intAccClass <> 28)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    OR (tblAccounts.bitIsLinkedAccount = 1)  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (tblAccounts.bitInactive = 0)  
    AND (tblAccounts.intAccClass <> 28)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    OR (tblAccounts.bitIsLinkedAccount = 1)  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   IF @isForeignCurrencyRevaluation = 1  
   BEGIN  
    IF @isGridAccount = 0  
    BEGIN  
     SELECT DISTINCT tblAccounts.intGLNumber GLNumber  
      ,tblAccounts.intAccType AccountType  
      ,tblAccounts.strDesc 'Description'  
      ,tblAccounts.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccounts.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccounts(NOLOCK)  
     --INNER JOIN tblJournalEntryDocDT ON tblAccounts.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     --INNER JOIN tblJournalEntryDoc ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblAccounts.strCurrency  
     LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
     WHERE (tblAccounts.bitInactive = 0)  
      AND (tblAccounts.intAccClass <> 28)  
      AND (  
       tblAccounts.intGroupCode = 1  
       OR tblAccounts.intGroupCode = 2  
       )  
      AND (tblAccounts.strCurrency <> @strCurrency)  
      AND decBalance <> 0  
      OR (tblAccounts.bitIsLinkedAccount = 1)  
     --AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
     ORDER BY intAccType, tblAccounts.intGLNumber  
    END  
    ELSE  
    BEGIN  
     SELECT DISTINCT tblAccounts.intGLNumber GLNumber  
      ,tblAccounts.intAccType AccountType  
      ,tblAccounts.strDesc 'Description'  
      ,tblAccounts.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccounts.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccounts(NOLOCK)  
     INNER JOIN tblJournalEntryDocDT(NOLOCK) ON tblAccounts.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     INNER JOIN tblJournalEntryDoc(NOLOCK) ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblAccounts.strCurrency  
     LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
     WHERE (tblAccounts.bitInactive = 0)  
      AND (tblAccounts.intAccClass <> 28)  
      AND (  
       tblAccounts.intGroupCode = 1  
       OR tblAccounts.intGroupCode = 2  
       )  
      AND (tblAccounts.strCurrency <> @strCurrency)  
      AND (  
       decBalance <> 0  
       OR decBalanceF <> 0  
       )  
      AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
      AND tblAccounts.intGLNumber NOT IN (  
       SELECT value  
       FROM dbo.fnSplitStringAsTable(@GridAccountList, ',')  
       )  
      OR (tblAccounts.bitIsLinkedAccount = 1)  
     ORDER BY intAccType, tblAccounts.intGLNumber  
    END  
   END  
   ELSE  
   BEGIN  
    SELECT tblAccounts.intGLNumber GLNumber  
     ,tblAccounts.intAccType AccountType  
     ,tblAccounts.strDesc 'Description'  
     ,tblAccounts.intAccClass AccountClass  
     ,ISNULL(tblInv.strPartNumber, '') JournalCode  
     ,0 AccountSecCount  
     ,'' UserName  
    FROM tblAccounts(NOLOCK)  
    LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
    WHERE (tblAccounts.bitInactive = 0)  
     AND (tblAccounts.intAccClass <> 28)  
     AND (  
      tblAccounts.intGroupCode = 1  
      OR tblAccounts.intGroupCode = 2  
      )  
     AND (  
      strCurrency = @strCurrency  
      OR strCurrency = @strHomeCurrency  
      )  
     OR (tblAccounts.bitIsLinkedAccount = 1)  
    ORDER BY intAccType, intGLNumber  
   END  
  END  
  ELSE IF @isForeignCurrencyRevaluation = 1  
  BEGIN  
   SELECT DISTINCT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
    ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccounts.decBalanceF AS VARCHAR(22))  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblAccounts.strCurrency  
   LEFT OUTER JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (tblAccounts.bitInactive = 0)  
    AND (tblAccounts.intAccClass <> 28)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    OR (tblAccounts.bitIsLinkedAccount = 1)  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccounts.intGLNumber GLNumber  
    ,tblAccounts.intAccType AccountType  
    ,tblAccounts.strDesc 'Description'  
    ,tblAccounts.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccounts.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccounts(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccounts.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccounts.intGLNumber  
   WHERE (tblAccounts.bitInactive = 0)  
    AND (tblAccounts.intAccClass <> 28)  
    AND (  
     tblAccounts.intGroupCode = 1  
     OR tblAccounts.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
    OR (tblAccounts.bitIsLinkedAccount = 1)  
   ORDER BY intAccType, tblAccounts.intGLNumber  
  END  
 END  
  
 RETURN  
END  
GO

CREATE PROCEDURE [dbo].[GetAllLinkedAccountsForAccountPickerLY] (  
 @bitGLAccountAccess BIT  
 ,@bitShowAllCurrency BIT  
 ,@strUserName NVARCHAR(40)  
 ,@strCurrency NVARCHAR(6)  
 ,@strHomeCurrency NVARCHAR(6)  
 ,@isForeignCurrencyRevaluation BIT  
 ,@isGridAccount BIT  
 ,@GridAccountList VARCHAR(MAX)  
 ,@RevaluationDate DATETIME  
 )  
AS  
BEGIN  
 IF @bitShowAllCurrency = 1  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,0 AccountSecCount  
    ,'' UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE (tblAccountsLY.bitInactive = 0)  
    AND (tblAccountsLY.intAccClass <> 28)  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    OR (tblAccountsLY.bitIsLinkedAccount = 1)  
   ORDER BY intAccType, intGLNumber  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE (tblAccountsLY.bitInactive = 0)  
    AND (tblAccountsLY.intAccClass <> 28)  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    OR (tblAccountsLY.bitIsLinkedAccount = 1)  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
 ELSE  
 BEGIN  
  IF @bitGLAccountAccess = 1  
  BEGIN  
   IF @isForeignCurrencyRevaluation = 1  
   BEGIN  
    IF @isGridAccount = 0  
    BEGIN  
     SELECT DISTINCT tblAccountsLY.intGLNumber GLNumber  
      ,tblAccountsLY.intAccType AccountType  
      ,tblAccountsLY.strDesc 'Description'  
      ,tblAccountsLY.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccountsLY.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccountsLY(NOLOCK)  
     --INNER JOIN tblJournalEntryDocDT ON tblAccountsLY.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     --INNER JOIN tblJournalEntryDoc ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblAccountsLY.strCurrency  
     LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
     WHERE (tblAccountsLY.bitInactive = 0)  
      AND (tblAccountsLY.intAccClass <> 28)  
      AND (  
       tblAccountsLY.intGroupCode = 1  
       OR tblAccountsLY.intGroupCode = 2  
       )  
      AND (tblAccountsLY.strCurrency <> @strCurrency)  
      AND (  
       decBalance <> 0  
       OR decBalanceF <> 0  
       )  
      OR (tblAccountsLY.bitIsLinkedAccount = 1)  
     --AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
     ORDER BY intAccType, tblAccountsLY.intGLNumber  
    END  
    ELSE  
    BEGIN  
     SELECT DISTINCT tblAccountsLY.intGLNumber GLNumber  
      ,tblAccountsLY.intAccType AccountType  
      ,tblAccountsLY.strDesc 'Description'  
      ,tblAccountsLY.intAccClass AccountClass  
      ,ISNULL(tblInv.strPartNumber, '') JournalCode  
      ,0 AccountSecCount  
      ,'' UserName  
      ,tblCurrency.strCurrSymbol + ' ' + CAST(tblAccountsLY.decBalanceF AS VARCHAR(22)) Balance  
     FROM tblAccountsLY(NOLOCK)  
     INNER JOIN tblJournalEntryDocDT(NOLOCK) ON tblAccountsLY.intGLNumber = tblJournalEntryDocDT.strCuVeGeID  
     INNER JOIN tblJournalEntryDoc(NOLOCK) ON tblJournalEntryDocDT.strJEDocID = tblJournalEntryDoc.strJEDocID  
     INNER JOIN [dbo].[tblCurrency](NOLOCK) ON tblCurrency.strCurrency = tblAccountsLY.strCurrency  
     LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
     WHERE (tblAccountsLY.bitInactive = 0)  
      AND (tblAccountsLY.intAccClass <> 28)  
      AND (  
       tblAccountsLY.intGroupCode = 1  
       OR tblAccountsLY.intGroupCode = 2  
       )  
      AND (tblAccountsLY.strCurrency <> @strCurrency)  
      AND decBalance <> 0  
      AND tblJournalEntryDoc.dteJournalDate <= @RevaluationDate  
      AND tblAccountsLY.intGLNumber NOT IN (  
       SELECT value  
       FROM dbo.fnSplitStringAsTable(@GridAccountList, ',')  
       )  
      OR (tblAccountsLY.bitIsLinkedAccount = 1)  
     ORDER BY intAccType, tblAccountsLY.intGLNumber  
    END  
   END  
   ELSE  
   BEGIN  
    SELECT tblAccountsLY.intGLNumber GLNumber  
     ,tblAccountsLY.intAccType AccountType  
     ,tblAccountsLY.strDesc 'Description'  
     ,tblAccountsLY.intAccClass AccountClass  
     ,ISNULL(tblInv.strPartNumber, '') JournalCode  
     ,0 AccountSecCount  
     ,'' UserName  
    FROM tblAccountsLY(NOLOCK)  
    LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
    WHERE (tblAccountsLY.bitInactive = 0)  
     AND (tblAccountsLY.intAccClass <> 28)  
     AND (  
      tblAccountsLY.intGroupCode = 1  
      OR tblAccountsLY.intGroupCode = 2  
      )  
     AND (  
      strCurrency = @strCurrency  
      OR strCurrency = @strHomeCurrency  
      )  
     OR (tblAccountsLY.bitIsLinkedAccount = 1)  
    ORDER BY intAccType, intGLNumber  
   END  
  END  
  ELSE  
  BEGIN  
   SELECT tblAccountsLY.intGLNumber GLNumber  
    ,tblAccountsLY.intAccType AccountType  
    ,tblAccountsLY.strDesc 'Description'  
    ,tblAccountsLY.intAccClass AccountClass  
    ,ISNULL(tblInv.strPartNumber, '') JournalCode  
    ,ISNULL((  
      SELECT COUNT(tblAccountsSec.intGLNumber)  
      FROM tblAccountsSec(NOLOCK)  
      WHERE tblAccountsSec.intGLNumber = tblAccountsLY.intGLNumber  
      ), 0) AccountSecCount  
    ,ISNULL(tblAccountsSec.strUserName, '') UserName  
   FROM tblAccountsLY(NOLOCK)  
   LEFT JOIN tblAccountsSec(NOLOCK) ON tblAccountsLY.intGLNumber = tblAccountsSec.intGLNumber  
    AND tblAccountsSec.strUserName = @strUserName  
   LEFT JOIN tblInv(NOLOCK) ON tblInv.intExpAcct = tblAccountsLY.intGLNumber  
   WHERE (tblAccountsLY.bitInactive = 0)  
    AND (tblAccountsLY.intAccClass <> 28)  
    AND (  
     tblAccountsLY.intGroupCode = 1  
     OR tblAccountsLY.intGroupCode = 2  
     )  
    AND (  
     strCurrency = @strCurrency  
     OR strCurrency = @strHomeCurrency  
     )  
    OR (tblAccountsLY.bitIsLinkedAccount = 1)  
   ORDER BY intAccType, tblAccountsLY.intGLNumber  
  END  
 END  
  
 RETURN  
END  
GO

CREATE PROCEDURE GetCenterCount @ProfitCenter AS NVARCHAR(MAX)
AS
BEGIN
	SELECT Count(strLvl1)
	FROM tblCenters
	WHERE strLvl1 = @ProfitCenter
END
GO

CREATE PROCEDURE [dbo].[InsertUpdateAccountSet] @updateID NVARCHAR(50)
	,@strAcctSet NVARCHAR(50)
	,@blnBuyout BIT
	,@blnInactive BIT
	,@blnService BIT
	,@intGLAsset NVARCHAR(60)
	,@intGLExpCOGS NVARCHAR(60)
	,@intGLRevenue NVARCHAR(60)
	,@intGLVariance NVARCHAR(60)
	,@strDesc NVARCHAR(255)
	,@dteRowUpdated DATETIME
AS
BEGIN
	IF EXISTS (
			SELECT 1
			FROM tblAccountSets
			WHERE strAcctSet = @updateID
			)
	BEGIN
		UPDATE tblAccountSets
		SET blnBuyout = @blnBuyout
			,blnInactive = @blnInactive
			,blnService = @blnService
			,intGLAsset = @intGLAsset
			,intGLExpCOGS = @intGLExpCOGS
			,intGLRevenue = @intGLRevenue
			,intGLVariance = @intGLVariance
			,strDesc = @strDesc
			,dteRowUpdated = @dteRowUpdated
		WHERE strAcctSet = @updateID;
	END
	ELSE
	BEGIN
		INSERT INTO tblAccountSets (
			strAcctSet
			,blnBuyout
			,blnInactive
			,blnService
			,intGLAsset
			,intGLExpCOGS
			,intGLRevenue
			,intGLVariance
			,strDesc
			,dteRowUpdated
			)
		VALUES (
			@strAcctSet
			,@blnBuyout
			,@blnInactive
			,@blnService
			,@intGLAsset
			,@intGLExpCOGS
			,@intGLRevenue
			,@intGLVariance
			,@strDesc
			,@dteRowUpdated
			)
	END

	--UPDATE GL Accounts SET INVFLAG where asset accounts are used in account sets.
	UPDATE tblAccounts
	SET bitInventory = 0;

	UPDATE tblAccounts
	SET bitInventory = 1
	WHERE intGLNumber IN (
			SELECT intGLAsset
			FROM tblAccountSets
			);
END
GO

CREATE PROCEDURE GetCustomerCountryCode @CustName NVARCHAR(50)
AS
BEGIN
	SELECT strCountrycode
	FROM tblCustomers
	WHERE strCustName = @CustName
END
GO

CREATE PROCEDURE GetWithholdingTaxValueOnTaxCode @WithHoldingTaxCode AS NVARCHAR(20)
AS
BEGIN
	SELECT decRate
	FROM tblTaxCodeExt
	WHERE strTaxCode = @WithHoldingTaxCode
END
GO

CREATE PROCEDURE [dbo].[GetOpeningBalanceInvInfoExtData] (
	@PartNumber NVARCHAR(250)
	,@LocName NVARCHAR(20)
	)
AS
BEGIN
	SELECT inv.strPartNumber AS PartNumber
		,Isnull(invExt.strLocName, '') AS LocName
		,Isnull(invExt.decOnHand, 0) AS OnHand
		,Isnull(invExt.decValue, 0) AS Value
		,Isnull(invExt.decOpenQty, 0) AS OpenQty
		,Isnull(invExt.decOpenValue, 0) AS OpenValue
	FROM tblInv inv
	LEFT JOIN tblInvExt invExt ON inv.strPartNumber = invExt.strPartNumber
	WHERE inv.intType = 1
		AND inv.strPartNumber = @PartNumber
		AND invExt.strLocName = @LocName
END
GO

CREATE PROCEDURE [dbo].[UpdateOpeningBalanceAccount] (
	@Open AS MONEY
	,@Balance AS MONEY
	,@OpenF AS MONEY
	,@BalanceF AS MONEY
	,@AcctNumber AS NVARCHAR(50)
	,@IsReverse AS BIT
	)
AS
BEGIN
	IF (@IsReverse = 0)
		UPDATE tblAccounts
		SET decOpenBalance = decOpenBalance + @Open
			,decBalance = decBalance + @Balance
			,decOpenBalanceF = decOpenBalanceF + @OpenF
			,decBalanceF = decBalanceF + @BalanceF
			,bitUsed = 1
		WHERE intGLNumber = @AcctNumber
	ELSE
		UPDATE tblAccounts
		SET decOpenBalance = decOpenBalance - @Open
			,decBalance = decBalance - @Balance
			,decOpenBalanceF = decOpenBalanceF - @OpenF
			,decBalanceF = decBalanceF - @BalanceF
		WHERE intGLNumber = @AcctNumber
END
GO

CREATE PROCEDURE GetWithHoldingTaxData @BMDocID AS NVARCHAR(100) , @DocType AS NVARCHAR(20)
AS  
BEGIN  

 if(@DocType = 'Payment')  
 Begin  
 SELECT TOP 1 tblvendpay.strWHTaxCode AS WHTaxCode  
  ,tblvendpay.decWHPerc AS WHPerc  
  ,tblvendpay.decWHAmt AS WithholdTaxAmt  
 FROM tblvendpay  
 INNER JOIN tblBankManagerBatchDT ON tblBankManagerBatchDT.lngJourID = tblvendpay.lngJourID  
 WHERE tblBankManagerBatchDT.strBMDocID = @BMDocID  
 END  
  
 ELSE  
 BEGIN  
 SELECT TOP 1 tblCustPay.strWHTaxCode as WHTaxCode,  
 tblCustPay.decWHPerc as WHPerc,  
 tblCustPay.decWHAmt as WithholdTaxAmt,  
 strLineReference   
 FROM tblCustPay   
 INNER JOIN tblBankManagerBatchDT ON tblBankManagerBatchDT.lngJourID = tblCustPay.lngJourID   
 WHERE tblBankManagerBatchDT.strBMDocID = @BMDocID  
 END  
END  
GO

CREATE PROCEDURE [dbo].[GetDeliveryMethodsData] (
	@InActive BIT = 0
	,@PageSize INT = 25
	,@PageNumber INT = 1
	,@Search NVARCHAR(MAX) = ''
	)
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @Skip INT;

	SET @Skip = @PageSize * (@PageNumber - 1);

	SELECT strDelMethodCode AS DelMethodCode
		,strDelMethodDesc AS DelMethodDesc
		,strField1 AS Field1
		,strField2 AS Field2
		,strField3 AS Field3
		,strField4 AS Field4
		,strField5 AS Field5
		,strField6 AS Field6
		,strAddInfo AS AddInfo
		,bitInactive AS IsInactive
		,bitEnableEnviron AS IsEnableEnvironment
		,bitSalesInvoice AS IsSalesInvoice
		,bitMethod AS IsMethod
		,strCourierOpt AS CourierOption
		,strCourierSenderAccNo AS CourierSenderAccNo
		,strCourierSenderContactPerson AS CourierSenderContactPerson
		,strCourierSenderWorkTel AS CourierSenderWorkTel
		,strCourierSenderWebsite AS CourierSenderWebsite
		,strCourierStoreCode AS CourierStoreCode
		,strCourierPrefix AS CourierPrefix
		,bitInvoiceAsWaybill AS IsInvoiceAsWaybill
		,strCourierSenderCompany AS CourierSenderCompany
		,strCourierSenderAdd1 AS CourierSenderAdd1
		,strCourierSenderAdd4 AS CourierSenderAdd4
		,strCourierSenderAdd5 AS CourierSenderAdd5
		,strCourierServiceType AS CourierServiceType
		,bitDisplay AS IsDisplay
		,bitSalesOrder AS IsSalesOrder
	FROM tblDeliveryMethods
	WHERE bitInactive IN (
			0
			,ISNULL(@InActive, 1)
			)
		AND (
			ISNULL(strDelMethodCode, '') LIKE '%' + ISNULL(@Search, strDelMethodCode) + '%'
			OR ISNULL(strDelMethodDesc, '') LIKE '%' + ISNULL(@Search, strDelMethodDesc) + '%'
			)
	ORDER BY strDelMethodCode OFFSET(@Skip) ROWS

	FETCH NEXT @PageSize ROWS ONLY;
END;
GO

CREATE PROCEDURE GetDefaultBinLocForAcctList (@LocationName VARCHAR(500))
AS
BEGIN
	SELECT TOP 1 strBinCode
	FROM tblInvLocBin
	WHERE strLocName = @LocationName
END
GO

CREATE PROCEDURE [dbo].[AddUpdatetblInvContainers] @tblData
AS
[InvContainersTableType] READONLY AS

BEGIN
	BEGIN
		INSERT INTO [tblInvContainers] (
			[strPartNumber]
			,[strPartItemNumber]
			,[decQuantity]
			,[bitRoundUp]
			)
		SELECT [strPartNumber]
			,[strPartItemNumber]
			,[decQuantity]
			,[bitRoundUp]
		FROM @tblData AS t
		WHERE NOT EXISTS (
				SELECT 1
				FROM [tblInvContainers]
				WHERE strPartNumber = t.strPartNumber
					AND strPartItemNumber = t.strPartItemNumber
				)
	END

	BEGIN
		UPDATE [tblInvContainers]
		SET [strPartNumber] = table2.[strPartNumber]
			,[strPartItemNumber] = table2.[strPartItemNumber]
			,[decQuantity] = table2.[decQuantity]
			,[bitRoundUp] = table2.[bitRoundUp]
		FROM [tblInvContainers] AS table1
		INNER JOIN @tblData AS table2 ON (
				table1.strPartNumber = table2.strPartNumber
				AND table1.strPartItemNumber = table2.strPartItemNumber
				)
	END
END
GO

CREATE PROCEDURE DeleteExtractorUtilityTables (@TableName NVARCHAR(Max))
AS
BEGIN
	IF (@TableName = 'DeleteUtilityAccountSets')
		TRUNCATE TABLE tblUtilityAccountSets;
	ELSE IF ((@TableName = 'DeleteUtilityAccountSetsUnassigned'))
		TRUNCATE TABLE tblUtilityAccountSetsUnassigned;
	ELSE IF (@TableName = 'DeleteUtilityAccount')
		TRUNCATE TABLE tblUtilityAccounts;
	ELSE IF ((@TableName = 'DeleteUtilityTaxDef'))
	BEGIN
		TRUNCATE TABLE tblUtilityTaxDef;

		TRUNCATE TABLE tblUtilityTaxCodeExt;

		TRUNCATE TABLE tblUtilityTaxCodesMap;
	END
	ELSE IF (@TableName = 'DeleteUtilityTerms')
		TRUNCATE TABLE tblUtilityTerms;
	ELSE IF ((@TableName = 'DeleteUtilityCurrencyCodes'))
		TRUNCATE TABLE tblUtilityCurrency;
	ELSE IF (@TableName = 'DeleteUtilityCustomersRecord')
	BEGIN
		TRUNCATE TABLE tblUtilityCustomerCat;

		TRUNCATE TABLE tblUtilityCustomerLoc;

		TRUNCATE TABLE tblUtilityCustomers;
	END
	ELSE IF ((@TableName = 'DeleteUtilityVendorsRecord'))
	BEGIN
		TRUNCATE TABLE tblUtilityVendorCat;

		TRUNCATE TABLE tblUtilityVendors;
	END
	ELSE IF (@TableName = 'DeleteUtilityInventoryRecords')
	BEGIN
		TRUNCATE TABLE tblUtilityInvCat;

		TRUNCATE TABLE tblUtilityInvLoc;

		TRUNCATE TABLE tblUtilityInv;
	END
	ELSE IF ((@TableName = 'DeleteUtilitySalesPersons'))
		TRUNCATE TABLE tblUtilitySalesPersons;
END
GO

CREATE PROCEDURE [dbo].[SaveUtilityGLAccountEntityDetails] @tblUtilityGLAccountDT
AS
UtilityGLAccountsTableType ReadOnly AS

BEGIN
	INSERT INTO tblUtilityAccounts (
		[intGLNumber]
		,[intAccType]
		,[intAccClass]
		,[strDesc]
		,[bitSubAccount]
		,[intPPGLNumber]
		,[strPPDesc]
		,[strPPAccClass]
		)
	SELECT *
	FROM @tblUtilityGLAccountDT
END
GO

CREATE PROCEDURE [dbo].[SaveUtilityCustomerCatEntityDetails] @tblUtilityCustomerCatDT
AS
[UtilityCustomerCatTableType] ReadOnly AS

BEGIN
	INSERT INTO tblUtilityCustomerCat (
		[strCustCategory]
		,[strDesc]
		)
	SELECT *
	FROM @tblUtilityCustomerCatDT
END
GO

CREATE PROCEDURE [dbo].[SaveUtilityCustomerLocEntityDetails] @tblUtilityCustomerLocDT
AS
UtilityCustomerLocTableType ReadOnly AS

BEGIN
	INSERT INTO tblUtilityCustomerLoc (
		[strCustName]
		,[strLocName]
		,[strStreet1]
		,[strStreet2]
		,[strCity]
		,[strProvince]
		,[strPostal]
		,[strSalesmanCode]
		)
	SELECT *
	FROM @tblUtilityCustomerLocDT
END
GO

CREATE PROCEDURE [dbo].[SaveUtilityVendorCatEntityDetails] @tblUtilityVendorCatDT
AS
[UtilityVendorCatTableType] ReadOnly AS

BEGIN
	INSERT INTO tblUtilityVendorCat (
		[strVendCategory]
		,[strDesc]
		)
	SELECT *
	FROM @tblUtilityVendorCatDT
END
GO

CREATE PROCEDURE [dbo].[SaveUtilityVendorsEntityDetails] @tblUtilityVendorsDT
AS
[UtilityVendorsTableType] ReadOnly AS

BEGIN
	INSERT INTO tblUtilityVendors (
		[strVendName]
		,[strVendDesc]
		,[strTaxCode]
		,[strTerm]
		,[strCurrency]
		,[strVendCategory]
		,[strStreet1]
		,[strStreet2]
		,[strCity]
		,[strProvince]
		,[strPostal]
		,[strPhone]
		,[strCellPhone]
		,[strFax]
		,[strEmail]
		,[strVAT]
		,[bitInactive]
		,[strContact]
		,[strField1]
		,[strField2]
		,[strField3]
		,[strField4]
		,[strField5]
		,[dteUpdated]
		,[dteSince]
		)
	SELECT *
	FROM @tblUtilityVendorsDT
END
GO

CREATE PROCEDURE [dbo].[GetSingleCustomer] @CustomerName NVARCHAR(255)  
AS  
BEGIN  
 SELECT strCustName AS CustomerName  
  ,strStreet1 AS Street1  
  ,strStreet2 AS Street2  
  ,strCity AS City  
  ,strProvince AS Province  
  ,strPostal AS Postal  
  ,strPhone AS Phone  
  ,strCellPhone AS CellPhone  
  ,ISNULL(strCustTPIN, '') AS CustTPIN  
  ,ISNULL(strKenyaCustPin, '') AS KenyaCustPin  
  ,strFax AS Fax  
  ,strEmail AS Email  
  ,strVAT AS VAT  
  ,strCK AS CK  
  ,intDelMethod AS DelMethod  
  ,bitCreditCtrl AS IsCreditCtrl  
  ,decCreditLimit AS CreditLimit  
  ,bitCreditHold AS IsCreditHold  
  ,dteUpdated AS Updated  
  ,strContact AS Contact  
  ,strField1 AS Field1  
  ,strField2 AS Field2  
  ,strField3 AS Field3  
  ,strField4 AS Field4  
  ,strField5 AS Field5  
  ,strField6 AS Field6  
  ,strTaxCode AS TaxCode  
  ,dteSince AS Since  
  ,strNotes AS Notes  
  ,strPricelist AS Pricelist  
  ,decIntRate AS IntRate  
  ,strCustDesc AS CustomerDesc  
  ,strCountry AS Country  
  ,strTerm AS Term  
  ,intDept AS Department  
  ,strCurrency AS Currency  
  ,strField7 AS Field7  
  ,strField8 AS Field8  
  ,strField9 AS Field9  
  ,strField10 AS Field10  
  ,strField11 AS Field11  
  ,strField12 AS Field12  
  ,strEmailInv AS EmailInv  
  ,strEmailStat AS EmailStat  
  ,strCustCategory AS Category  
  ,strCountryCode AS CountryCode  
  ,strTenderType AS TenderType  
  ,decCreditLimitOverride AS CreditLimitOverride  
  ,dteCreditLimitExpiryDate AS CreditLimitExpiryDate  
  ,intPartialBackorders AS PartialBackorders  
  ,bitWithholdTax AS IsWithholdTax  
  ,strWithholdTaxCode AS WithholdTaxCode  
  ,strINVFormDocName AS INVFormDocName  
  ,strORDFormDocName AS ORDFormDocName  
  ,bitMatrixType AS IsMatrixType  
  ,decTradeDiscPerc AS TradeDiscPerc  
  ,strMatrixType AS MatrixType  
  ,strValueBased AS ValueBased  
  ,bitInvWorkflowNew AS IsInvWorkflowNew  
  ,bitInvWorkflowDA AS IsInvWorkflowDA  
  ,bitInvWorkflowSO AS IsInvWorkflowSO  
  ,strWebsite AS Website  
  ,strRSTTerminalSync AS RSTTerminalSync  
  ,strEmailOso AS EmailOso  
  ,strContact2 AS Contact2  
  ,strSuburb AS Suburb  
  ,strParentCust AS ParentCust  
  ,intNAPrintMethod AS NAPrintMethod  
  ,strDelMethodCode AS DelMethodCode  
  ,strCustomerType AS CustomerType  
  ,bitInactive AS IsInactive  
  ,  
  -- Branch Changes  
  strField13 AS Field13  
  ,strField14 AS Field14  
  ,strField15 AS Field15  
  ,strField16 AS Field16  
  ,strField17 AS Field17  
  ,strField18 AS Field18  
  ,strFaceBook AS FaceBook  
  ,strLinkedIn AS LinkedIn  
  ,geoCoord AS Latitude  
  ,geoCoord AS Longitude  
  ,intGLNumberAR AS GLNumberAR  
  ,intGLNumberDeposit AS GLNumberDeposit  
  ,blnIsSynctwebstore AS IsSynctoWebstore  
  ,strWebstoreEmail AS WebstoreEmail  
  ,strDocPassword AS DocPassword
  ,CASE WHEN intGLNumberAR IS NULL THEN NULL ELSE (SELECT strDesc FROM tblAccounts WHERE intGLNumber = intGLNumberAR) END AS ARAcctDesc
  ,CASE WHEN intGLNumberDeposit IS NULL THEN NULL ELSE (SELECT strDesc FROM tblAccounts WHERE intGLNumber = intGLNumberDeposit) END AS DepositAcctDesc 
 FROM tblCustomers  
 WHERE strCustName = @CustomerName;  
END
GO

CREATE PROCEDURE GetSingleVendor @VendorName NVARCHAR(255)
AS
BEGIN
	SELECT strVendName AS VendorName
		,strStreet1 AS Street1
		,strStreet2 AS Street2
		,strCity AS City
		,strProvince AS Province
		,strPostal AS Postal
		,strPhone AS Phone
		,strCellPhone AS CellPhone
		,strFax AS Fax
		,strEmail AS Email
		,strVAT AS VAT
		,strCK AS CK
		,strDocPassword AS DocPassword
		,intDelMethod AS DelMethod
		,strVendTPIN AS VendTPIN
		,strContact AS Contact
		,tblVendors.strField1 AS Field1
		,tblVendors.strField2 AS Field2
		,tblVendors.strField3 AS Field3
		,tblVendors.strField4 AS Field4
		,tblVendors.strField5 AS Field5
		,tblVendors.strField6 AS Field6
		,strTaxCode AS TaxCode
		,dteSince AS dteSince
		,strNotes AS Notes
		,strVendDesc AS VendDesc
		,strCountry AS Country
		,strTerm AS Term
		,intDept AS Department
		,tblVendors.strCurrency AS Currency
		,strField7 AS Field7
		,strField8 AS Field8
		,strField9 AS Field9
		,strField10 AS Field10
		,strField11 AS Field11
		,strField12 AS Field12
		,strVendCategory AS Category
		,strCountryCode AS CountryCode
		,strTenderType AS TenderType
		,bitWithholdTax AS WithholdTax
		,strWithholdTaxCode AS WithholdTaxCode
		,decTradeDiscPerc AS TradeDiscPerc
		,bitInvWorkflowNew AS IsInvWorkflowNew
		,bitInvWorkflowGRV AS IsInvWorkflowGRV
		,bitInvWorkflowPO AS IsInvWorkflowPO
		,strWebsite AS Website
		,tblVendors.bitInactive AS IsInactive
		,dteLastUpdated AS LastUpdated
		,strBuyerName AS BuyerName
		,CAST(CASE 
				WHEN bitExpenseVendor = 1
					THEN 1
				ELSE 0
				END AS BIT) AS IsMatrixType
		,intExpAcct AS InvAccount
		,strDesc AS InvAccountDesc
		,intGLNumberAP AS APAccount
		,intGLNumberPrePay AS PrepayAccount
		,CASE WHEN intGLNumberAP IS NULL THEN NULL ELSE (SELECT strDesc FROM tblAccounts WHERE intGLNumber = intGLNumberAP) END AS APAcctDesc
		,CASE WHEN intGLNumberPrePay IS NULL THEN NULL ELSE (SELECT strDesc FROM tblAccounts WHERE intGLNumber = intGLNumberPrePay) END AS PrePayAcctDesc 
	FROM tblVendors
	LEFT JOIN tblAccounts ON tblVendors.intExpAcct = tblAccounts.intGLNumber
	WHERE strVendName = @VendorName;
END
GO

CREATE PROCEDURE GetInternalRequisitionInfo @PartNumber AS NVARCHAR(100)
AS
BEGIN
	SELECT tblinvintreqdoc.strInvIntReqDocID AS InvIntReqDocID
		,tblinvintreqdoc.dteJournalDate AS JournalDate
		,tblinvintreqdocDT.strPartNumber AS PartNumber
		,tblinvintreqdoc.strComment AS Comment
		,tblinvintreqdoc.bitCleared AS IsCleared
		,tblinvintreqdoc.strUserName AS UserName
		,tblinvintreqdoc.strLocName AS LocName
		,tblinvintreqdocDT.decQty AS Qty
		,ISNULL(tblInvIssReqDocDT.decQty, 0) AS Issued
		,tblinvintreqdocDT.decUnitCost AS UnitCost
		,tblinvintreqdocDT.decAmount AS Amount
	FROM tblinvintreqdocdt
	LEFT JOIN tblinvintreqdoc ON tblinvintreqdocdt.strInvIntReqDocID = tblinvintreqdoc.strInvIntReqDocID
	LEFT JOIN tblInvIssReqDocDT ON tblInvIntReqDoc.strInvIssReqDocID = tblInvIssReqDocDT.strInvIssReqDocID
		AND tblinvintreqdocdt.intLineNo = tblInvIssReqDocDT.intLineNo
	WHERE tblinvintreqdocDT.strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE GetIngIDInvLocBin (
	@LocationName AS NVARCHAR(100)
	,@BinCode AS NVARCHAR(100)
	)
AS
BEGIN
	SELECT lngID
	FROM tblInvLocBin
	WHERE strLocName = @LocationName
		AND strBinCode = @BinCode
END
GO

CREATE PROCEDURE [dbo].[InvLocationBin_DeleteByLocation] @SQstrLocName NVARCHAR(50)
AS
BEGIN
	DELETE
	FROM tblInvExtBin
	WHERE strLocName = @SQstrLocName

	DELETE
	FROM tblInvLocBin
	WHERE strLocName = @SQstrLocName
END
GO

CREATE PROCEDURE GetAllClassificationList
AS
BEGIN
	SELECT strItemClsCd AS strZmbClsCode
		,strItemClsNm AS strZmbClsName
		,intItemClsLvl AS intZmbClsLvl
	FROM tblZambiaItemClassifications
END
GO

CREATE PROCEDURE [dbo].ImportZambiaClassifications (
	@ClsCode NVARCHAR(10)
	,@ClsName NVARCHAR(200)
	,@ClsLvlType INT
	)
AS
BEGIN
	BEGIN TRY
		DECLARE @ERR_MSG NVARCHAR(4000)
			,@Err_Severity INT
			,@ERR_STA SMALLINT;
		DECLARE @IsInsert BIT = 0;

		UPDATE tblZambiaItemClassifications
		SET strItemClsNm = @ClsName
			,intItemClsLvl = @ClsLvlType
			,dteRowUpdated = GETDATE()
		WHERE strItemClsCd = @ClsCode;

		IF @@ROWCOUNT = 0
		BEGIN
			INSERT INTO tblZambiaItemClassifications (
				strItemClsCd
				,strItemClsNm
				,intItemClsLvl
				,strTaxTyCd
				,dteRowUpdated
				)
			VALUES (
				@ClsCode
				,@ClsName
				,@ClsLvlType
				,NULL
				,GETDATE()
				);

			SET @IsInsert = 1;
		END

		SELECT CONCAT (
				'Success: '
				,@IsInsert
				);
	END TRY

	BEGIN CATCH
		IF ERROR_NUMBER() = 547
		BEGIN
			SET @ERR_MSG = 'Error 547: Foreign key constraint violation.';

			SELECT @ERR_MSG;
		END
		ELSE IF ERROR_NUMBER() = 8152
		BEGIN
			SET @ERR_MSG = 'Error 8152: String or binary data would be truncated.';

			SELECT @ERR_MSG;
		END
		ELSE
		BEGIN
			SET @ERR_MSG = ERROR_MESSAGE();
			SET @Err_Severity = ERROR_SEVERITY();
			SET @ERR_STA = ERROR_STATE();

			RAISERROR (
					@ERR_MSG
					,@Err_Severity
					,@ERR_STA
					);
		END
	END CATCH
END;
GO



CREATE PROCEDURE InsertUpdateInvCategoryType (@tblInvCat CategoryInsertTableType ReadOnly)
AS
BEGIN
	INSERT INTO tblInvCatSec
	SELECT *
		,GetDate()
	FROM @tblInvCat
END
GO

CREATE PROCEDURE [dbo].[GetInventorySerialLotTrackingCount] @PartNumber NVARCHAR(MAX)
AS
BEGIN
	SELECT COUNT(lngInvTrackID)
	FROM tblInvTrackingDT
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[ApproversVendEmpLimitsCount] @VendorEmpName AS NVARCHAR(100)
AS
BEGIN
	SELECT Count(*) AS Count
	FROM tblApproversVendEmpLimits
	WHERE strVendorEmpName = @VendorEmpName
		AND intApproverType = 0
END
GO

CREATE PROCEDURE [dbo].[GetRptZRAVatTransDetails] @SQAllChecked AS BIT  
 ,@SQTaxList AS NVARCHAR(200)  
 ,@SQStart AS DATE  
 ,@SQEnd AS DATE  
AS  
BEGIN  
 IF (@SQAllChecked = 1)  
 BEGIN  
  SELECT 'Sales VAT (Output)' AS TransType  
   ,I.strInvDocID AS DocNumber  
   ,CAST(dteSystemDate AS DATE) AS SystemDate  
   ,CAST(dteJournalDate AS DATE) AS JournalDate  
   ,strUserName AS UserName  
   ,strCustName AS CustVendName  
   ,'(Output)' AS TaxName  
   ,(  
    SELECT strDesc  
    FROM tblInv  
    WHERE strPartNumber = IDT.strPartNumber  
    ) AS PartNumber  
   ,IDT.intLineNo AS [LineNo]  
   ,IDT.decLineDiscAmt AS LineDiscAmt  
   ,IDT.decLineTotExc AS LineTot  
   ,IDT.decLineTaxAmt AS LineVAT  
  FROM tblInvoiceDoc I  
  LEFT JOIN TBLINVOICEDOCDT IDT ON I.strInvDocID = IDT.strInvDocID  
  WHERE bitHistoryTrans = 0  
   AND dteSystemDate >= @SQStart  
   AND dteSystemDate <= @SQEnd  
  ORDER BY dteSystemDate  
  
  SELECT 'Purchases VAT (Input)' AS TransType  
   ,P.strInvPDocID AS DocNumber  
   ,CAST(dteSystemDate AS DATE) AS SystemDate  
   ,CAST(dteJournalDate AS DATE) AS JournalDate  
   ,strUserName AS UserName  
   ,strVendName AS CustVendName  
   ,'(Input)' AS TaxName  
   ,(  
    SELECT strDesc  
    FROM tblInv  
    WHERE strPartNumber = PDT.strPartNumber  
    ) AS PartNumber  
   ,PDT.intLineNo AS [LineNo]  
   ,PDT.decLineDiscAmt AS LineDiscAmt  
   ,PDT.decLineTotExc AS LineTot  
   ,PDT.decLineTaxAmt AS LineVAT  
  FROM tblInvoiceDocP P  
  LEFT JOIN tblInvoiceDocPDT PDT ON P.strInvPDocID = PDT.strInvPDocID  
  WHERE bitHistoryTrans = 0  
   AND dteSystemDate >= @SQStart  
   AND dteSystemDate <= @SQEnd  
  ORDER BY dteSystemDate  
 END  
 ELSE  
 BEGIN  
  SELECT 'Sales VAT (Output)' AS TransType  
   ,I.strInvDocID AS DocNumber  
   ,CAST(dteSystemDate AS DATE) AS SystemDate  
   ,CAST(dteJournalDate AS DATE) AS JournalDate  
   ,strUserName AS UserName  
   ,strCustName AS CustVendName  
   ,'(Output)' AS TaxName  
   ,(  
    SELECT strDesc  
    FROM tblInv  
    WHERE strPartNumber = IDT.strPartNumber  
    ) AS PartNumber  
   ,IDT.intLineNo AS [LineNo]  
   ,IDT.decLineDiscAmt AS LineDiscAmt  
   ,IDT.decLineTotExc AS LineTot  
   ,IDT.decLineTaxAmt AS LineVAT  
  FROM tblInvoiceDoc I  
  LEFT JOIN TBLINVOICEDOCDT IDT ON I.strInvDocID = IDT.strInvDocID  
  WHERE bitHistoryTrans = 0  
   AND dteSystemDate >= @SQStart  
   AND dteSystemDate <= @SQEnd  
   AND IDT.strTaxCode IN (  
    SELECT *  
    FROM fnSplitStringAsTable(@SQTaxList, ',')  
    )  
  ORDER BY dteSystemDate  
  SELECT 'Purchases VAT (Input)' AS TransType  
   ,P.strInvPDocID AS DocNumber  
   ,CAST(dteSystemDate AS DATE) AS SystemDate  
   ,CAST(dteJournalDate AS DATE) AS JournalDate  
   ,strUserName AS UserName  
   ,strVendName AS CustVendName  
   ,'(Input)' AS TaxName  
   ,(  
    SELECT strDesc  
    FROM tblInv  
    WHERE strPartNumber = PDT.strPartNumber  
    ) AS PartNumber  
   ,PDT.intLineNo AS [LineNo]  
   ,PDT.decLineDiscAmt AS LineDiscAmt  
   ,PDT.decLineTotExc AS LineTot  
   ,PDT.decLineTaxAmt AS LineVAT  
  FROM tblInvoiceDocP P  
  LEFT JOIN tblInvoiceDocPDT PDT ON P.strInvPDocID = PDT.strInvPDocID  
  WHERE bitHistoryTrans = 0  
   AND dteSystemDate >= @SQStart  
   AND dteSystemDate <= @SQEnd  
   AND PDT.strTaxCode IN (  
    SELECT *  
    FROM fnSplitStringAsTable(@SQTaxList, ',')  
    )  
  ORDER BY dteSystemDate  
 END  
END  
GO

CREATE PROCEDURE [dbo].[GetInvExtBinCount] (
	@PartNo AS NVARCHAR(100)
	,@LocationName AS NVARCHAR(100)
	,@lngBinID AS INT
	)
AS
BEGIN
	SELECT COUNT(1)
	FROM tblInvExtBin
	WHERE strLocName = @LocationName
		AND lngBinID = @lngBinID
		AND strPartNumber = @PartNo
END
GO

CREATE PROCEDURE [dbo].[GetOpeningBalanceInvInfoData] (
	@PartNo AS NVARCHAR(100)
	,@LocationName AS NVARCHAR(100)
	,@lngBinID AS INT
	)
AS
BEGIN
	SELECT Isnull(tblInvExtBin.decOpenQty, 0) AS OpenQty
		,Isnull(tblInvExtBin.decOpenValue, 0) AS OpenValue
	FROM tblInvExtBin
	WHERE tblInvExtBin.strPartNumber = @PartNo
		AND tblInvExtBin.strLocName = @LocationName
		AND tblInvExtBin.lngBinID = @lngBinID
END
GO

CREATE PROCEDURE [dbo].[GetInvExtBinDataBasedOnBins] (
	@PartNo AS NVARCHAR(100)
	,@LocationName AS NVARCHAR(100)
	)
AS
BEGIN
	SELECT SUM(tblInvExtBin.decOpenQty) AS OpenQty
		,SUM(tblInvExtBin.decOpenValue) AS OpenValue
	FROM tblInvExtBin
	WHERE tblInvExtBin.strPartNumber = @PartNo
		AND tblInvExtBin.strLocName = @LocationName
	GROUP BY strPartNumber
		,strLocName
END
GO

CREATE PROCEDURE [dbo].[UpdateInvExtBinOpeningBalance] (
	@PartNumber AS NVARCHAR(100)
	,@Location AS NVARCHAR(20)
	,@SQOnH AS MONEY
	,@SQOpQty AS MONEY
	,@SQOpVal AS MONEY
	,@lngBinID AS INT
	)
AS
BEGIN
	DECLARE @Result AS NVARCHAR(100)

	UPDATE tblInvExtBin
	SET decOnHand = decOnHand + @SQOnH
		,decAvail = decAvail + @SQOnH
		,decOpenQty = @SQOpQty
		,decOpenValue = @SQOpVal
	WHERE strPartNumber = @PartNumber
		AND strLocName = @Location
		AND lngBinID = @lngBinID

	SET @Result = 'Success'

	SELECT @Result
END
GO

CREATE PROCEDURE [dbo].[UpdateInvExtBinOpeningBalanceBasedOnBin] (
	@Location AS NVARCHAR(20)
	,@SQOnH AS MONEY
	,@SQAvail AS MONEY
	,@SQOpQty AS MONEY
	,@SQOpVal AS MONEY
	,@lngBinID AS INT
	)
AS
BEGIN
	DECLARE @Result AS NVARCHAR(100)

	-- Update tblInv
	UPDATE tblInv
	SET decSumAvail = @SQAvail
		,decSumOnHand = @SQOnH
		,decSumValue = @SQOpVal
		,decSumOpenQty = @SQOpQty
		,decSumOpenValue = @SQOpVal
		,dteLastUpdated = GetDate()
	FROM tblInv
	INNER JOIN tblInvExt ON tblInvExt.strPartNumber = tblInv.strPartNumber
	WHERE tblInvExt.strLocName = @Location

	-- Update tblInvExt
	UPDATE tblInvExt
	SET decAvail = @SQAvail
		,decOnHand = @SQOnH
		,decValue = @SQOpVal
		,decOpenQty = @SQOpQty
		,decOpenValue = @SQOpVal
	WHERE strLocName = @Location

	-- Set result to 'Success'
	SET @Result = 'Success'

	-- Return result
	SELECT @Result
END
GO

CREATE PROCEDURE [dbo].[UpdatetblInvExtBinDefaultBin] (
	@SQstrPartNumber AS NVARCHAR(100)
	,@SQstrLocName AS NVARCHAR(100)
	)
AS
BEGIN
	UPDATE tblInvExtBin
	SET bitDefault = 0
	FROM tblInvExtBin
	LEFT JOIN tblInvLocBin ON tblInvExtBin.strLocName = tblInvLocBin.strLocName
		AND tblInvExtBin.lngBinID = tblInvLocBin.lngID
	WHERE strPartNumber = @SQstrPartNumber
		AND tblInvExtBin.strLocName = @SQstrLocName
		AND tblInvLocBin.strLocName IS NULL
		AND bitDefault = 1
END
GO

CREATE PROCEDURE [dbo].[UpdateLastLoginData] @UserName AS NVARCHAR(20)
AS
BEGIN
	UPDATE tblUsers
	SET dteLastLogin = GetDate()
	WHERE strUserName = @UserName
END
GO

CREATE PROCEDURE GetInventorylistforSalesCycle (@PartNumber NVARCHAR(50))
AS
BEGIN
	SELECT strPartNumber AS 'PartNumber'
		,strDesc AS 'Description'
		,CAST(ISNULL(decSumAmtSoldLY, 0) AS DECIMAL(18, 2)) AS Price
		,strStockUnit AS 'Unit'
	FROM tblInv
	WHERE strPartNumber = @PartNumber
	ORDER BY strPartNumber;
END;
GO

CREATE PROCEDURE [dbo].[GetKenyaClasificationListImportExport]
AS
BEGIN
	SELECT strItemClsNm AS ItemClsNm
		,strItemClsCd AS ItemClsCd
	FROM tblKenyaeTIMSItemClassifications
END
GO

CREATE PROCEDURE [dbo].[GetAllInvLocHistory]
AS
BEGIN
	SELECT tblInvLoc.strLocName AS LocName
		,ISNULL(tblInvLocBin.strBinCode, '') AS BinCode
	FROM tblInvLoc
	LEFT JOIN tblInvLocBin ON tblInvLoc.strLocName = tblInvLocBin.strLocName
	WHERE intType = 0
	ORDER BY LocName
END
GO

CREATE PROCEDURE [dbo].[GetPickTicketsTotalData] (@DocID NVARCHAR(50))
AS
BEGIN
	SELECT strPartNumber AS PartNumber
		,Max(decQty) AS Quantity
	FROM tblPickTicketsDT
	WHERE strPkTkDocID IN (
			SELECT strPkTkDocID
			FROM tblPickTickets
			WHERE strOrdDocID = @DocID
				AND bitPicked = 1
				AND bitDA = 0
			)
	GROUP BY strPartNumber
	ORDER BY strPartNumber
END
GO

CREATE PROCEDURE [dbo].[OpeningBalanceInventoryHistory](@PartNumber AS NVARCHAR(100), @Location AS NVARCHAR(20), @AdjVal AS MONEY, @AdjQty AS MONEY, @IsZRAEnable AS BIT, @SQOpQty AS MONEY, @SQOpVal AS MONEY) AS

BEGIN
	BEGIN TRY
		DECLARE @ERR_MSG AS NVARCHAR(4000)
			,@Err_Severity INT
			,@ERR_STA AS SMALLINT
		DECLARE @Result AS NVARCHAR(100)

		UPDATE tblInv
		SET decSumAvail = @SQOpQty
			,decSumOnHand = @SQOpQty
			,decSumValue = @AdjVal
			,decSumOpenQty = @SQOpQty
			,decSumOpenValue = @AdjVal
			,dteLastUpdated = GetDate()
		WHERE strPartNumber = @PartNumber

		IF (@@ROWCOUNT = 0)
		BEGIN
			SET @Result = CONCAT (
					'Inventory item not found:'
					,@PartNumber
					)

			GOTO lblEnd
		END

		UPDATE tblInvExt
		SET decAvail = @SQOpQty
			,decOnHand = @SQOpQty
			,decValue = @AdjVal
			,decOpenQty = @SQOpQty
			,decOpenValue = @AdjVal
		WHERE strPartNumber = @PartNumber
			AND strLocName = @Location

		IF (@@ROWCOUNT = 0)
		BEGIN
			SET @Result = CONCAT (
					'Inventory Ext item not found:'
					,@PartNumber
					)

			GOTO lblEnd
		END
		
		SET @Result = 'Success'

		lblEnd:

		SELECT @Result
	END TRY

	BEGIN CATCH
		ROLLBACK TRANSACTION

		SELECT @ERR_MSG = ERROR_MESSAGE()
			,@Err_Severity = ERROR_SEVERITY()
			,@ERR_STA = ERROR_STATE()

		RAISERROR (
				@ERR_MSG
				,@Err_Severity
				,@ERR_STA
				);
	END CATCH
END
GO

CREATE PROCEDURE ImportZambiaClassificationsList @ClassificationList ZambiaItemClassificationsTableType READONLY
	,@InsertedCount INT OUTPUT
	,@UpdatedCount INT OUTPUT
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @Inserted INT = 0
		,@Updated INT = 0;

	UPDATE T
	SET T.strItemClsNm = C.strItemClsNm
		,T.intItemClsLvl = C.intItemClsLvl
		,T.strTaxTyCd = C.strTaxTyCd
		,T.dteRowUpdated = GETDATE()
	FROM dbo.tblZambiaItemClassifications T
	INNER JOIN @ClassificationList C ON T.strItemClsCd = C.strItemClsCd;

	SET @Updated = @@ROWCOUNT;

	INSERT INTO dbo.tblZambiaItemClassifications (
		strItemClsCd
		,strItemClsNm
		,intItemClsLvl
		,strTaxTyCd
		,dteRowUpdated
		)
	SELECT C.strItemClsCd
		,C.strItemClsNm
		,C.intItemClsLvl
		,C.strTaxTyCd
		,GETDATE()
	FROM @ClassificationList C
	WHERE NOT EXISTS (
			SELECT 1
			FROM dbo.tblZambiaItemClassifications T
			WHERE T.strItemClsCd = C.strItemClsCd
			);

	SET @Inserted = @@ROWCOUNT;
	SET @InsertedCount = @Inserted;
	SET @UpdatedCount = @Updated;
END;
GO

CREATE PROCEDURE UpdateTblInvExtDataOpening @PartNumber NVARCHAR(50)
	,@Location NVARCHAR(100)
	,@AdjVal DECIMAL(18, 6)
	,@AdjQty DECIMAL(18, 6)
	,@SQOpQty DECIMAL(18, 6)
	,@SQOpVal DECIMAL(18, 6)
AS
BEGIN
	SET NOCOUNT ON;

	UPDATE tblInvExt
	SET decOnHand = decOnHand + @AdjQty
		,decAvail = decAvail + @AdjQty
		,decValue = decValue + @AdjVal
		,decOpenQty = @SQOpQty
		,decOpenValue = @SQOpVal
	WHERE strPartNumber = @PartNumber
		AND strLocName = @Location;
END;
GO

CREATE PROCEDURE [dbo].[UpdateTblInvFromTblInvExt] @PartNumber NVARCHAR(50)
AS
BEGIN
	SET NOCOUNT ON;

	-- Update tblInv by summing values from tblInvExt for a specific PartNumber
	UPDATE tblInv
	SET decSumOnHand = ISNULL(tie.TotalOnHand, 0)
		,decSumAvail = ISNULL(tie.TotalAvail, 0)
		,decSumOpenQty = ISNULL(tie.TotalOpenQty, 0)
		,decSumOpenValue = ISNULL(tie.TotalOpenValue, 0)
		,decSumValue = ISNULL(tie.TotalValue, 0)
	FROM tblInv ti
	INNER JOIN (
		SELECT strPartNumber
			,SUM(decOnHand) AS TotalOnHand
			,SUM(decAvail) AS TotalAvail
			,SUM(decOpenQty) AS TotalOpenQty
			,SUM(decOpenValue) AS TotalOpenValue
			,SUM(decValue) AS TotalValue
		FROM tblInvExt
		WHERE strPartNumber = @PartNumber
		GROUP BY strPartNumber
		) tie ON ti.strPartNumber = tie.strPartNumber
	WHERE ti.strPartNumber = @PartNumber;

	UPDATE tblInv
	SET decLastPPUnit = CASE 
			WHEN decLastPPUnit = 0
				THEN CASE 
						WHEN decSumValue = 0
							OR decSumOnHand = 0
							THEN 0
						ELSE ROUND(decSumValue / decSumOnHand, 4)
						END
			ELSE decLastPPUnit
			END
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[GetExplodeBOMDataDate] (@ChildstrPartNumber NVARCHAR(200))
AS
BEGIN
	SELECT dteRevDate AS RevDate
	FROM tblManBOM
	WHERE strPartNumber = @ChildstrPartNumber
END
GO

CREATE PROCEDURE [dbo].[GetRemainingQtyforMasterStockUpdateKenya] (@PartNumber NVARCHAR(200))
AS
BEGIN
	SELECT decSumOnHand
	FROM tblInv
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[GetOpeningBalanceInvBinExtInfoExtData] (
	@PartNumber NVARCHAR(250)
	,@LocName NVARCHAR(20)
	,@BinID BIGINT
	)
AS
BEGIN
	SELECT strPartNumber AS PartNumber
		,ISNULL(invExtBin.strLocName, '') AS LocName
		,ISNULL(invExtBin.decOnHand, 0) AS OnHand
		,ISNULL(invExtBin.decOpenQty, 0) AS OpenQty
		,ISNULL(invExtBin.decOpenValue, 0) AS OpenValue
	FROM tblInvExtBin invExtBin
	WHERE strPartNumber = @PartNumber
		AND invExtBin.strLocName = @LocName
		AND lngBinID = @BinID
END
GO

CREATE PROCEDURE [dbo].[GetNewOpeningBalanceInvExtBinData] (
	@PartNumber NVARCHAR(250)
	,@LocName NVARCHAR(20)
	)
AS
BEGIN
	SELECT invExtBin.strPartNumber AS PartNumber
		,sum(invExtBin.decOpenValue) AS OpenValue
		,sum(invExtBin.decOpenQty) AS OpenQty
	FROM tblInv inv
	INNER JOIN tblInvExtBin invExtBin ON inv.strPartNumber = invExtBin.strPartNumber
	WHERE inv.intType = 1
		AND invExtBin.strPartNumber = @PartNumber
		AND invExtBin.strLocName = @LocName
	GROUP BY invExtBin.strPartNumber
		,invExtBin.strLocName
END
GO

CREATE PROCEDURE [dbo].[GetDefaultBinCodeFromLocationAndPartNumber] @PartNumber NVARCHAR(50)
	,@Location NVARCHAR(50)
AS
BEGIN
	SELECT strBinCode AS BinCode
	FROM tblInvExtBin AS Locbin
	INNER JOIN tblInvLocBin AS Extbin ON Locbin.lngBinID = Extbin.lngID
	WHERE Locbin.strPartNumber = @PartNumber
		AND Locbin.strLocName = @Location
		AND Locbin.bitDefault = 1
END
GO

CREATE PROCEDURE [dbo].[GetDefaultLocNameFromPartNumber] @PartNumber NVARCHAR(50)
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @DefaultLocFromLoc NVARCHAR(50);

	-- Step 1: Get default loc from tblInvLoc
	SELECT TOP 1 @DefaultLocFromLoc = strLocName
	FROM tblInvLoc
	WHERE bitDefault = 1;

	-- Step 2: Check if that loc exists in tblInvExtBin for this part
	IF EXISTS (
			SELECT 1
			FROM tblInvExtBin
			WHERE strPartNumber = @PartNumber
				AND strLocName = @DefaultLocFromLoc
			)
	BEGIN
		-- Return that default loc from tblInvLoc
		SELECT @DefaultLocFromLoc AS LocName;
	END
	ELSE
	BEGIN
		-- Fallback to default loc from tblInvExtBin
		SELECT TOP 1 strLocName AS LocName
		FROM tblInvExtBin
		WHERE bitDefault = 1
			AND strPartNumber = @PartNumber;
	END
END
GO

CREATE PROCEDURE [dbo].[GetExchangeMinMaxRate] (
	@Currency AS VARCHAR(3)
	,@DocumentDate AS DATETIME
	)
AS
BEGIN
	SELECT decMinRate AS MinRate
		,decMaxRate AS MaxRate
	FROM tblCurrencyExc
	WHERE strCurrency = @Currency
		AND dteDate = (
			SELECT MAX(dteDate)
			FROM tblCurrencyExc
			WHERE strCurrency = @Currency
				AND CONVERT(DATE, dteDate) <= CONVERT(DATE, @DocumentDate)
			)
END
GO

CREATE PROCEDURE [dbo].[GetApproversnameUsername]
AS
BEGIN
	SELECT strUserName AS UserName
		,strName AS Name
	FROM tblUsers(NOLOCK)
	WHERE blnAPSetupPOApprovers = 1
		AND (blnApprovePurchaseOrders = 1)
		AND [blnIsLockedOut] = 0
END
GO

CREATE PROCEDURE [dbo].[GetBinCodeandBinIdByLocNameandPartNumber] @PartNumber NVARCHAR(50)
	,@Location NVARCHAR(50)
AS
BEGIN
	SELECT tblInvLocBin.strBinCode AS Bin
		,Cast(tblInvExtBin.lngBinID AS NVARCHAR) AS BinCode
	FROM tblInvExtBin
	INNER JOIN tblInvLocBin ON tblInvExtBin.lngBinID = tblInvLocBin.lngID
	WHERE tblInvExtBin.strPartNumber = @PartNumber
		AND tblInvExtBin.strLocName = @Location
		AND tblInvExtBin.bitDefault = 1
END
GO

CREATE PROCEDURE GetInvandProjectCountsforAdjustment @PartNumber NVARCHAR(100)
	,@LocName NVARCHAR(100)
	,@ProjNumber NVARCHAR(50)
	,@Unit NVARCHAR(9) = NULL
	,@InventoryCount INT OUTPUT
	,@ProjectCount INT OUTPUT
	,@UOMCount INT OUTPUT
AS
BEGIN
	SET @UOMCount = 0;

	SELECT @InventoryCount = COUNT(tblInv.strPartNumber)
	FROM tblInv
	INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
	WHERE (
			tblInv.strPartNumber = @PartNumber
			OR tblInv.strBarCode = @PartNumber
			OR tblInv.strBarCode2 = @PartNumber
			)
		AND tblInv.intType = 1
		AND tblInv.bitInactive = 0
		AND tblInvExt.bitInactive = 0
		AND tblInvExt.strLocName = @LocName;

	SELECT @ProjectCount = COUNT(strProjNumber)
	FROM tblProjects
	WHERE strProjNumber = ISNULL(@ProjNumber, '');

	IF (
			@Unit <> NULL
			OR @Unit <> ''
			)
	BEGIN
		SELECT @UOMCount = Count(*)
		FROM (
			SELECT strPartNumber
				,strFromUnit AS strStockUnit
			FROM tblInvUOMs
			WHERE strPartNumber = @PartNumber
				AND strFromUnit = @Unit
			
			UNION ALL
			
			SELECT strPartNumber
				,strStockUnit
			FROM tblInv
			WHERE strPartNumber = @PartNumber
				AND strStockUnit = @Unit
			) AS tbTemp
	END
END
GO

CREATE PROCEDURE GetPurchaseInvoiceDocDTData (@DocNumber NVARCHAR(60))
AS
BEGIN
	SELECT DTL.strPartNumber AS PartNumber
		,DTL.strLocation AS [Location]
		,DTL.decStockQty AS StockQty
		,DTL.strPartDesc AS PartDesc
		,DTL.decLineTotExc AS LineTotExc
		,INV.decLastPPUnit AS LastPPUnit
		,DTL.intLineNo AS [LineNo]
	FROM tblInvoiceDocPDT DTL
	INNER JOIN tblInv INV ON DTL.strPartNumber = INV.strPartNumber
	WHERE (DTL.strInvPDocID = @DocNumber)
		AND (DTL.intType = 1)
		AND (DTL.decStockQty > 0)
END
GO

CREATE PROCEDURE [dbo].[GetRptManWorkInProgresstblManWIPCompInvTotalsReportData] (
	@ItemList NVARCHAR(MAX),
	@Filter INT,
	@JobList NVARCHAR(MAX),
	@CustomerList NVARCHAR(MAX),
	@WorkCenterList NVARCHAR(MAX),
	@PLCustomer VARCHAR(50)
)
AS
BEGIN
	IF (@Filter = 0) --Assets
	BEGIN
		SELECT 
			ISNULL(SUM(tblManWIPCompInv.decPostQty), 0) AS decPostQtyTotal,
			ISNULL(SUM(tblManWIPCompInv.decPostAmount), 0) AS decPostAmountTotal
		FROM tblManWIP
		INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID
		INNER JOIN tblInv ON tblManWIPCompInv.strPartNumber = tblInv.strPartNumber
		WHERE tblManWIPCompInv.strWIPDocID IN (
			SELECT DISTINCT tblManWIP.strWIPDocID
			FROM tblManWIP
			INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID
			INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID
			INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber
			INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
				AND tblInvExt.strLocName = tblManJobByProd.strLocation
			INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
			INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
			WHERE (tblInv.intType = 1)
				AND tblAccounts.intGLNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ','))
				AND tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ','))
				AND ISNULL(tblManJob.strCustName, '<<No ' + @PLCustomer + '>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ','))
				AND tblManWIP.strWCCode IN (SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))
		)
	END
	ELSE IF (@Filter = 1) --Category
	BEGIN
		SELECT 
			ISNULL(SUM(tblManWIPCompInv.decPostQty), 0) AS decPostQtyTotal,
			ISNULL(SUM(tblManWIPCompInv.decPostAmount), 0) AS decPostAmountTotal
		FROM tblManWIP
		INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID
		INNER JOIN tblInv ON tblManWIPCompInv.strPartNumber = tblInv.strPartNumber
		WHERE tblManWIPCompInv.strWIPDocID IN (
			SELECT DISTINCT tblManWIP.strWIPDocID
			FROM tblManWIP
			INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID
			INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID
			INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber
			INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
				AND tblInvExt.strLocName = tblManJobByProd.strLocation
			INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
			INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
			WHERE (tblInv.intType = 1)
				AND tblInv.strCategory IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ','))
				AND tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ','))
				AND ISNULL(tblManJob.strCustName, '<<No ' + @PLCustomer + '>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ','))
				AND tblManWIP.strWCCode IN (SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))
		)
	END
	ELSE IF (@Filter = 2) --AccountSets
	BEGIN
		SELECT 
			ISNULL(SUM(tblManWIPCompInv.decPostQty), 0) AS decPostQtyTotal,
			ISNULL(SUM(tblManWIPCompInv.decPostAmount), 0) AS decPostAmountTotal
		FROM tblManWIP
		INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID
		INNER JOIN tblInv ON tblManWIPCompInv.strPartNumber = tblInv.strPartNumber
		WHERE tblManWIPCompInv.strWIPDocID IN (
			SELECT DISTINCT tblManWIP.strWIPDocID
			FROM tblManWIP
			INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID
			INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID
			INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber
			INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
				AND tblInvExt.strLocName = tblManJobByProd.strLocation
			INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
			INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
			WHERE (tblInv.intType = 1)
				AND tblInvExt.strAcctSet IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ','))
				AND tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ','))
				AND ISNULL(tblManJob.strCustName, '<<No ' + @PLCustomer + '>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ','))
				AND tblManWIP.strWCCode IN (SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))
		)
	END
	ELSE IF (@Filter = 3) --Items
	BEGIN
		SELECT 
			ISNULL(SUM(tblManWIPCompInv.decPostQty), 0) AS decPostQtyTotal,
			ISNULL(SUM(tblManWIPCompInv.decPostAmount), 0) AS decPostAmountTotal
		FROM tblManWIP
		INNER JOIN tblManWIPCompInv ON tblManWIP.strWIPDocID = tblManWIPCompInv.strWIPDocID
		INNER JOIN tblInv ON tblManWIPCompInv.strPartNumber = tblInv.strPartNumber
		WHERE tblManWIPCompInv.strWIPDocID IN (
			SELECT DISTINCT tblManWIP.strWIPDocID
			FROM tblManWIP
			INNER JOIN tblManJob ON tblManWIP.strJBDocID = tblManJob.strJBDocID
			INNER JOIN tblManJobByProd ON tblManJob.strJBDocID = tblManJobByProd.strJBDocID
			INNER JOIN tblInv ON tblManJobByProd.strPartNumber = tblInv.strPartNumber
			INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
				AND tblInvExt.strLocName = tblManJobByProd.strLocation
			INNER JOIN tblAccountSets ON tblInvExt.strAcctSet = tblAccountSets.strAcctSet
			INNER JOIN tblAccounts ON tblAccountSets.intGLAsset = tblAccounts.intGLNumber
			WHERE (tblInv.intType = 1)
				AND tblManJobByProd.strPartNumber IN (SELECT * FROM fnSplitStringAsTable(@ItemList, ','))
				AND tblManJob.strJBDocID IN (SELECT * FROM fnSplitStringAsTable(@JobList, ','))
				AND ISNULL(tblManJob.strCustName, '<<No ' + @PLCustomer + '>>') IN (SELECT * FROM fnSplitStringAsTable(@CustomerList, ','))
				AND tblManWIP.strWCCode IN (SELECT * FROM fnSplitStringAsTable(@WorkCenterList, ','))
		)
	END
END
GO

CREATE PROCEDURE GetInvUOMDetailsforImportAdjustment (
	@PartNumber NVARCHAR(100)
	,@Location NVARCHAR(50)
	,@Unit NVARCHAR(10) = NULL
	)
AS
BEGIN
	SELECT tblInv.strPartNumber AS Number
		,ISNULL(CASE tblInvUOMs.strConversionType
				WHEN 'Multiply'
					THEN tblInvUOMs.decConversionFactor
				ELSE 1 / tblInvUOMs.decConversionFactor
				END, tblInv.decBuyToStock) AS decConversionFactor
		,ISNULL(tblInvUOMs.strConversionType, 'Multiply') AS ConversionType
		,ISNULL(tblInvUOMs.decConversionFactor, tblInv.decBuyToStock) AS ConversionFactor
		,tblInv.strStockUnit AS StockUnit
	FROM tblInv
	INNER JOIN tblInvExt ON tblInv.strPartNumber = tblInvExt.strPartNumber
	LEFT JOIN tblInvUOMs ON tblInv.strPartNumber = tblInvUOMs.strPartNumber
		AND tblInvUOMs.bitInactive = 0
		AND (
			(
				@Unit IS NOT NULL
				AND LTRIM(RTRIM(@Unit)) <> ''
				AND tblInvUOMs.strFromUnit = @Unit
				)
			OR (
				@Unit IS NULL
				OR LTRIM(RTRIM(@Unit)) = ''
				)
			AND tblInvUOMs.strFromUnit = (
				SELECT TOP 1 strStockUnit
				FROM tblInv AS Invsub
				WHERE Invsub.strPartNumber = @PartNumber
				)
			)
	LEFT JOIN tblInvSerialTypes ON tblInv.strInvSerialType = tblInvSerialTypes.strInvSerialType
	WHERE tblInv.strPartNumber = @PartNumber
		AND tblInv.intType = 1
		AND tblInv.bitInactive = 0
		AND tblInvExt.bitInactive = 0
		AND tblInvExt.strLocName = @Location
END
GO

CREATE PROCEDURE SoapAPIGetSalesEnquiryByDate @intDocType INT
	,@DateStart DATETIME
	,@DateEnd DATETIME
AS
BEGIN
	SET NOCOUNT ON;

	IF @intDocType = 1
		OR @intDocType = 2 -- Sales Order, Sales Quote
	BEGIN
		SELECT O.strOrdDocID AS 'DocumentNumber'
			,O.intDocType AS 'DocumentType'
			,O.dteSystemDate AS 'SystemDate'
			,O.dteJournalDate AS 'DocumentDate'
			,O.dteRequired AS 'RequiredDate'
			,O.strUserName AS 'UserName'
			,O.strCustName AS 'CustomerNumber'
			,O.strSoldTo AS 'SoldTo'
			,O.strShipTo AS 'ShipTo'
			,O.strReference AS 'Reference'
			,O.decSubTotal AS 'SubTotal'
			,O.decVAT AS 'VAT'
			,O.decTotal AS 'Total'
			,O.strNotes AS 'Notes'
			,O.bitPrinted AS 'IsPrinted'
			,O.bitEmailed AS 'IsEmailed'
			,O.bitCleared AS 'IsCleared'
			,O.strSalesName AS 'SalesName'
			,O.strAddInfo AS 'AdditionalInfo'
			,O.strCurrency AS 'CurrencyCode'
			,O.bitIsForeign AS 'IsForeign'
			,O.decSubTotalF AS 'SubTotalF'
			,O.decVATF AS 'VATF'
			,O.decTotalF AS 'TotalF'
			,O.decExchange AS 'ExchangeRate'
			,O.strTerm AS 'Term'
			,O.intDept AS 'Department'
			,O.strField1 AS 'Field01'
			,O.strField2 AS 'Field02'
			,O.strField3 AS 'Field03'
			,O.strField4 AS 'Field04'
			,O.strField5 AS 'Field05'
			,O.strField6 AS 'Field06'
			,O.strField7 AS 'Field07'
			,O.strField8 AS 'Field08'
			,O.strField9 AS 'Field09'
			,O.strField10 AS 'Field10'
			,O.strField11 AS 'Field11'
			,O.strField12 AS 'Field12'
			,O.strSubFormated AS 'FormattedSubtotal'
			,O.strVATFormatted AS 'FormattedVAT'
			,O.strTotFormatted AS 'FormattedTotal'
			,O.dteField13 AS 'Field13'
			,O.dteField14 AS 'Field14'
			,O.decDiscPerc AS 'DiscountPerc'
			,O.decDiscAmt AS 'DiscountAmt'
			,-- Added
			O.decDiscAmtF AS 'DiscountAmtF'
			,-- Added
			O.strDiscFormatted AS 'FormattedDiscountAmt'
			,O.strOrdFQDocID AS 'ConvertingDocNumber'
			,O.strStatusTypeCode AS 'Status'
			,O.bitBookmark AS 'IsBookmark'
			,O.strCNReasonCode AS 'CreditNoteReason'
			,O.bitIsRepair AS 'IsRepair'
		FROM tblOrderDoc O
		INNER JOIN tblOrderDocDT ODT ON O.strOrdDocID = ODT.strOrdDocID
			AND ODT.intLineNo = 1
		WHERE ODT.decQty >= 0
			AND O.intDocType = @intDocType
			AND O.dteJournalDate BETWEEN @DateStart
				AND @DateEnd;
	END
	ELSE IF @intDocType = 0 -- Sales Invoice
	BEGIN
		SELECT I.strInvDocID AS 'DocumentNumber'
			,
			--I.intDocType as 'DocumentType',
			I.dteSystemDate AS 'SystemDate'
			,I.dteJournalDate AS 'DocumentDate'
			,I.dteRequired AS 'RequiredDate'
			,I.strUserName AS 'UserName'
			,I.strCustName AS 'CustomerNumber'
			,I.strSoldTo AS 'SoldTo'
			,I.strShipTo AS 'ShipTo'
			,I.strReference AS 'Reference'
			,I.decSubTotal AS 'SubTotal'
			,I.decVAT AS 'VAT'
			,I.decTotal AS 'Total'
			,I.strNotes AS 'Notes'
			,I.bitPrinted AS 'IsPrinted'
			,I.bitEmailed AS 'IsEmailed'
			,
			--I.bitCleared as 'IsCleared',
			I.strSalesName AS 'SalesName'
			,I.strAddInfo AS 'AdditionalInfo'
			,I.strCurrency AS 'CurrencyCode'
			,I.bitIsForeign AS 'IsForeign'
			,I.decSubTotalF AS 'SubTotalF'
			,I.decVATF AS 'VATF'
			,I.decTotalF AS 'TotalF'
			,I.decExchange AS 'ExchangeRate'
			,I.strTerm AS 'Term'
			,I.intDept AS 'Department'
			,I.strField1 AS 'Field01'
			,I.strField2 AS 'Field02'
			,I.strField3 AS 'Field03'
			,I.strField4 AS 'Field04'
			,I.strField5 AS 'Field05'
			,I.strField6 AS 'Field06'
			,I.strField7 AS 'Field07'
			,I.strField8 AS 'Field08'
			,I.strField9 AS 'Field09'
			,I.strField10 AS 'Field10'
			,I.strField11 AS 'Field11'
			,I.strField12 AS 'Field12'
			,I.strSubFormated AS 'FormattedSubtotal'
			,I.strVATFormatted AS 'FormattedVAT'
			,I.strTotFormatted AS 'FormattedTotal'
			,I.dteField13 AS 'Field13'
			,I.dteField14 AS 'Field14'
			,I.decDiscPerc AS 'DiscountPerc'
			,I.decDiscAmt AS 'DiscountAmt'
			,-- Added
			I.decDiscAmtF AS 'DiscountAmtF'
			,-- Added
			I.strDiscFormatted AS 'FormattedDiscountAmt'
			,I.strOrdFQDocID AS 'ConvertingDocNumber'
			,I.strStatusTypeCode AS 'Status'
			,I.bitBookmark AS 'IsBookmark'
			,I.strCNReasonCode AS 'CreditNoteReason'
			,I.bitFromSO AS 'IsFromOrder'
			,I.strOrdDocID AS 'ConvertingDocNumber'
			,I.bitHistoryTrans AS 'IsHistoryTrans'
			,I.intAccount AS 'AccountNumber'
			,I.bitReserved AS 'IsReserved'
			,I.dteSystemDateTime AS 'SystemDateTime'
		FROM tblInvoiceDoc I
		INNER JOIN tblInvoiceDocDT IDT ON I.strInvDocID = IDT.strInvDocID
			AND IDT.intLineNo = 1
		WHERE IDT.decQty >= 0
			AND dteJournalDate BETWEEN @DateStart
				AND @DateEnd
	END
END;
GO

CREATE PROCEDURE SoapAPIGetSalesEnquiryByDocument @intDocType INT
	,@strOrdDocID NVARCHAR(50) = NULL
	,-- For SO, SQ
	@strInvDocID NVARCHAR(50) = NULL
	,-- For SI
	@dteJournalDate DATETIME = NULL
	,@dteRequired DATETIME = NULL
	,@strUserName NVARCHAR(100) = NULL
	,@strCustName NVARCHAR(100) = NULL
	,@strReference NVARCHAR(100) = NULL
	,@strNotes NVARCHAR(MAX) = NULL
	,@strSalesName NVARCHAR(100) = NULL
	,@strAddInfo NVARCHAR(255) = NULL
	,@strCurrency NVARCHAR(10) = NULL
	,@strTerm NVARCHAR(50) = NULL
	,@strField1 NVARCHAR(100) = NULL
	,@strField2 NVARCHAR(100) = NULL
	,@strField3 NVARCHAR(100) = NULL
	,@strField4 NVARCHAR(100) = NULL
	,@strField5 NVARCHAR(100) = NULL
	,@strField6 NVARCHAR(100) = NULL
	,@strField7 NVARCHAR(100) = NULL
	,@strField8 NVARCHAR(100) = NULL
	,@strField9 NVARCHAR(100) = NULL
	,@strField10 NVARCHAR(100) = NULL
	,@strField11 NVARCHAR(100) = NULL
	,@strField12 NVARCHAR(100) = NULL
	,@strStatusTypeCode NVARCHAR(50) = NULL
	,@strPartExtendedDesc NVARCHAR(MAX) = NULL
AS
BEGIN
	SET NOCOUNT ON;

	IF @intDocType = 1
		OR @intDocType = 2 -- Sales Order, Sales Quote
	BEGIN
		SELECT O.strOrdDocID AS 'DocumentNumber'
			,O.intDocType AS 'DocumentType'
			,O.dteSystemDate AS 'SystemDate'
			,O.dteJournalDate AS 'DocumentDate'
			,O.dteRequired AS 'RequiredDate'
			,O.strUserName AS 'UserName'
			,O.strCustName AS 'CustomerNumber'
			,O.strSoldTo AS 'SoldTo'
			,O.strShipTo AS 'ShipTo'
			,O.strReference AS 'Reference'
			,O.decSubTotal AS 'SubTotal'
			,O.decVAT AS 'VAT'
			,O.decTotal AS 'Total'
			,O.strNotes AS 'Notes'
			,O.bitPrinted AS 'IsPrinted'
			,O.bitEmailed AS 'IsEmailed'
			,O.bitCleared AS 'IsCleared'
			,O.strSalesName AS 'SalesName'
			,O.strAddInfo AS 'AdditionalInfo'
			,O.strCurrency AS 'CurrencyCode'
			,O.bitIsForeign AS 'IsForeign'
			,O.decSubTotalF AS 'SubTotalF'
			,O.decVATF AS 'VATF'
			,O.decTotalF AS 'TotalF'
			,O.decExchange AS 'ExchangeRate'
			,O.strTerm AS 'Term'
			,O.intDept AS 'Department'
			,O.strField1 AS 'Field01'
			,O.strField2 AS 'Field02'
			,O.strField3 AS 'Field03'
			,O.strField4 AS 'Field04'
			,O.strField5 AS 'Field05'
			,O.strField6 AS 'Field06'
			,O.strField7 AS 'Field07'
			,O.strField8 AS 'Field08'
			,O.strField9 AS 'Field09'
			,O.strField10 AS 'Field10'
			,O.strField11 AS 'Field11'
			,O.strField12 AS 'Field12'
			,O.strSubFormated AS 'FormattedSubtotal'
			,O.strVATFormatted AS 'FormattedVAT'
			,O.strTotFormatted AS 'FormattedTotal'
			,O.dteField13 AS 'Field13'
			,O.dteField14 AS 'Field14'
			,O.decDiscPerc AS 'DiscountPerc'
			,O.decDiscAmt AS 'DiscountAmt'
			,-- Added
			O.decDiscAmtF AS 'DiscountAmtF'
			,-- Added
			O.strDiscFormatted AS 'FormattedDiscountAmt'
			,O.strOrdFQDocID AS 'ConvertingDocNumber'
			,O.strStatusTypeCode AS 'Status'
			,O.bitBookmark AS 'IsBookmark'
			,O.strCNReasonCode AS 'CreditNoteReason'
			,O.bitIsRepair AS 'IsRepair'
		FROM tblOrderDoc O
		INNER JOIN tblOrderDocDT ODT ON O.strOrdDocID = ODT.strOrdDocID
			AND ODT.intLineNo = 1
		WHERE ODT.decQty >= 0
			AND O.intDocType = @intDocType
			AND (
				@strOrdDocID IS NULL
				OR O.strOrdDocID = @strOrdDocID
				)
			AND (
				@dteJournalDate IS NULL
				OR O.dteJournalDate = @dteJournalDate
				)
			AND (
				@dteRequired IS NULL
				OR O.dteRequired = @dteRequired
				)
			AND (
				@strUserName IS NULL
				OR O.strUserName = @strUserName
				)
			AND (
				@strCustName IS NULL
				OR O.strCustName = @strCustName
				)
			AND (
				@strReference IS NULL
				OR O.strReference = @strReference
				)
			AND (
				@strNotes IS NULL
				OR O.strNotes = @strNotes
				)
			AND (
				@strSalesName IS NULL
				OR O.strSalesName = @strSalesName
				)
			AND (
				@strAddInfo IS NULL
				OR O.strAddInfo = @strAddInfo
				)
			AND (
				@strCurrency IS NULL
				OR O.strCurrency = @strCurrency
				)
			AND (
				@strTerm IS NULL
				OR O.strTerm = @strTerm
				)
			AND (
				@strField1 IS NULL
				OR O.strField1 = @strField1
				)
			AND (
				@strField2 IS NULL
				OR O.strField2 = @strField2
				)
			AND (
				@strField3 IS NULL
				OR O.strField3 = @strField3
				)
			AND (
				@strField4 IS NULL
				OR O.strField4 = @strField4
				)
			AND (
				@strField5 IS NULL
				OR O.strField5 = @strField5
				)
			AND (
				@strField6 IS NULL
				OR O.strField6 = @strField6
				)
			AND (
				@strField7 IS NULL
				OR O.strField7 = @strField7
				)
			AND (
				@strField8 IS NULL
				OR O.strField8 = @strField8
				)
			AND (
				@strField9 IS NULL
				OR O.strField9 = @strField9
				)
			AND (
				@strField10 IS NULL
				OR O.strField10 = @strField10
				)
			AND (
				@strField11 IS NULL
				OR O.strField11 = @strField11
				)
			AND (
				@strField12 IS NULL
				OR O.strField12 = @strField12
				)
			AND (
				@strStatusTypeCode IS NULL
				OR O.strStatusTypeCode = @strStatusTypeCode
				)
			--AND (@strPartExtendedDesc IS NULL OR O.strPartExtendedDesc = @strPartExtendedDesc)
	END
	ELSE IF @intDocType = 0 -- Sales Invoice
	BEGIN
		SELECT I.strInvDocID AS 'DocumentNumber'
			,I.dteSystemDate AS 'SystemDate'
			,I.dteJournalDate AS 'DocumentDate'
			,I.dteRequired AS 'RequiredDate'
			,I.strUserName AS 'UserName'
			,I.strCustName AS 'CustomerNumber'
			,I.strSoldTo AS 'SoldTo'
			,I.strShipTo AS 'ShipTo'
			,I.strReference AS 'Reference'
			,I.decSubTotal AS 'SubTotal'
			,I.decVAT AS 'VAT'
			,I.decTotal AS 'Total'
			,I.strNotes AS 'Notes'
			,I.bitPrinted AS 'IsPrinted'
			,I.bitEmailed AS 'IsEmailed'
			,I.strSalesName AS 'SalesName'
			,I.strAddInfo AS 'AdditionalInfo'
			,I.strCurrency AS 'CurrencyCode'
			,I.bitIsForeign AS 'IsForeign'
			,I.decSubTotalF AS 'SubTotalF'
			,I.decVATF AS 'VATF'
			,I.decTotalF AS 'TotalF'
			,I.decExchange AS 'ExchangeRate'
			,I.strTerm AS 'Term'
			,I.intDept AS 'Department'
			,I.strField1 AS 'Field01'
			,I.strField2 AS 'Field02'
			,I.strField3 AS 'Field03'
			,I.strField4 AS 'Field04'
			,I.strField5 AS 'Field05'
			,I.strField6 AS 'Field06'
			,I.strField7 AS 'Field07'
			,I.strField8 AS 'Field08'
			,I.strField9 AS 'Field09'
			,I.strField10 AS 'Field10'
			,I.strField11 AS 'Field11'
			,I.strField12 AS 'Field12'
			,I.strSubFormated AS 'FormattedSubtotal'
			,I.strVATFormatted AS 'FormattedVAT'
			,I.strTotFormatted AS 'FormattedTotal'
			,I.dteField13 AS 'Field13'
			,I.dteField14 AS 'Field14'
			,I.decDiscPerc AS 'DiscountPerc'
			,I.decDiscAmt AS 'DiscountAmt'
			,I.decDiscAmtF AS 'DiscountAmtF'
			,I.strDiscFormatted AS 'FormattedDiscountAmt'
			,I.strOrdFQDocID AS 'ConvertingDocNumber'
			,I.strStatusTypeCode AS 'Status'
			,I.bitBookmark AS 'IsBookmark'
			,I.strCNReasonCode AS 'CreditNoteReason'
			,I.bitFromSO AS 'IsFromOrder'
			,I.strOrdDocID AS 'ConvertingDocNumber'
			,I.bitHistoryTrans AS 'IsHistoryTrans'
			,I.intAccount AS 'AccountNumber'
			,I.bitReserved AS 'IsReserved'
			,I.dteSystemDateTime AS 'SystemDateTime'
		FROM tblInvoiceDoc AS I
		INNER JOIN tblInvoiceDocDT AS IDT ON I.strInvDocID = IDT.strInvDocID
			AND IDT.intLineNo = 1
		WHERE IDT.decQty >= 0
			AND (
				@strInvDocID IS NULL
				OR I.strInvDocID = @strInvDocID
				)
			AND (
				@dteJournalDate IS NULL
				OR I.dteJournalDate = @dteJournalDate
				)
			AND (
				@dteRequired IS NULL
				OR I.dteRequired = @dteRequired
				)
			AND (
				@strUserName IS NULL
				OR I.strUserName = @strUserName
				)
			AND (
				@strCustName IS NULL
				OR I.strCustName = @strCustName
				)
			AND (
				@strReference IS NULL
				OR I.strReference = @strReference
				)
			AND (
				@strNotes IS NULL
				OR I.strNotes = @strNotes
				)
			AND (
				@strSalesName IS NULL
				OR I.strSalesName = @strSalesName
				)
			AND (
				@strAddInfo IS NULL
				OR I.strAddInfo = @strAddInfo
				)
			AND (
				@strCurrency IS NULL
				OR I.strCurrency = @strCurrency
				)
			AND (
				@strTerm IS NULL
				OR I.strTerm = @strTerm
				)
			AND (
				@strField1 IS NULL
				OR I.strField1 = @strField1
				)
			AND (
				@strField2 IS NULL
				OR I.strField2 = @strField2
				)
			AND (
				@strField3 IS NULL
				OR I.strField3 = @strField3
				)
			AND (
				@strField4 IS NULL
				OR I.strField4 = @strField4
				)
			AND (
				@strField5 IS NULL
				OR I.strField5 = @strField5
				)
			AND (
				@strField6 IS NULL
				OR I.strField6 = @strField6
				)
			AND (
				@strField7 IS NULL
				OR I.strField7 = @strField7
				)
			AND (
				@strField8 IS NULL
				OR I.strField8 = @strField8
				)
			AND (
				@strField9 IS NULL
				OR I.strField9 = @strField9
				)
			AND (
				@strField10 IS NULL
				OR I.strField10 = @strField10
				)
			AND (
				@strField11 IS NULL
				OR I.strField11 = @strField11
				)
			AND (
				@strField12 IS NULL
				OR I.strField12 = @strField12
				)
			AND (
				@strStatusTypeCode IS NULL
				OR I.strStatusTypeCode = @strStatusTypeCode
				)
			--(@strPartExtendedDesc IS NULL OR I.strPartExtendedDesc = @strPartExtendedDesc)
	END
END
GO

CREATE PROCEDURE [dbo].[GetCheckIntegrityBankTransactionIncorrectEntries]
AS
BEGIN
	SELECT DTL.lngJourID AS [JournalID]
		,DTL.strCuVeGeInID AS [AccountName]
		,HDR.strBMDocID AS [BMDocID]
		,DTL.intLineNo AS [LineNo]
		,HDR.intGLNumber AS [GLNumber]
		,DTL.dteJournalDate AS [JournalDate]
		,DTL.decLineTotInc AS [Amount]
		,JNL.decAmount AS [BankAmount]
		,'Customer Payment' AS [Source]
	FROM tblBankManagerBatch HDR
	INNER JOIN tblBankManagerBatchDT DTL ON HDR.strBMDocID = DTL.strBMDocID
	INNER JOIN tblJournalEnt JNL ON DTL.lngJourID = JNL.lngJourID
		AND HDR.intGLNumber = JNL.intGLNumber
	CROSS JOIN tblCompany COMP
	WHERE (DTL.strAccountType = 'Customer')
		AND (DTL.bitIsForeign = 1)
		AND (
			HDR.strCurrency IN (
				SELECT strCurrency
				FROM tblCurrency
				WHERE bitHome = 1
				)
			)
		AND (
			DTL.dteJournalDate BETWEEN COMP.dteLYStarted
				AND COMP.dteYearEnds
			)
		AND (DTL.decLineTotInc <> JNL.decAmount)
	
	UNION ALL
	
	SELECT DTL.lngJourID AS [JournalID]
		,DTL.strCuVeGeInID AS [AccountName]
		,HDR.strBMDocID AS [BMDocID]
		,DTL.intLineNo AS [LineNo]
		,HDR.intGLNumber AS [GLNumber]
		,DTL.dteJournalDate AS [JournalDate]
		,DTL.decLineTotInc AS [Amount]
		,JNL.decAmount AS [BankAmount]
		,'Vendor Payment' AS [Source]
	FROM tblBankManagerBatch HDR
	INNER JOIN tblBankManagerBatchDT DTL ON HDR.strBMDocID = DTL.strBMDocID
	INNER JOIN tblJournalEnt JNL ON DTL.lngJourID = JNL.lngJourID
		AND HDR.intGLNumber = JNL.intGLNumber
	CROSS JOIN tblCompany COMP
	WHERE (DTL.strAccountType = 'Vendor')
		AND (DTL.bitIsForeign = 1)
		AND (
			HDR.strCurrency IN (
				SELECT strCurrency
				FROM tblCurrency
				WHERE bitHome = 1
				)
			)
		AND (
			DTL.dteJournalDate BETWEEN COMP.dteLYStarted
				AND COMP.dteYearEnds
			)
		AND (DTL.decLineTotInc <> JNL.decAmount)
	ORDER BY [BMDocID]
		,[LineNo]
END
GO

CREATE PROCEDURE InsertZambiaFailedAPIData @APIType INT
	,@DocID NVARCHAR(50)
	,@RcptNumber INT = 0
	,@RequestData NVARCHAR(MAX)
	,@ResponseData NVARCHAR(MAX)
	,@VSDCUrl NVARCHAR(MAX) = NULL
	,@ErrorMsg NVARCHAR(MAX) = NULL
AS
BEGIN
	SET NOCOUNT ON;

	INSERT INTO tblZambiaFailedAPIData (
		APIType
		,DocID
		,RcptNumber
		,RequestData
		,ResponseData
		,VSDCUrl
		,RetryCount
		,ErrorMsg
		,IsSuccess
		,CreatedOnDate
		)
	VALUES (
		@APIType
		,@DocID
		,@RcptNumber
		,@RequestData
		,@ResponseData
		,@VSDCUrl
		,0
		,@ErrorMsg
		,0
		,GETDATE()
		);
END
GO

CREATE PROCEDURE GetFailedAPIRequestsData @StartDate DATETIME
	,@EndDate DATETIME
	,@SearchText NVARCHAR(200) = ''
AS
BEGIN
	SELECT ID
		,APIType
		,DocID
		,RcptNumber
		,RequestData
		,ResponseData
		,VSDCUrl
		,RetryCount
		,ErrorMsg
		,IsSuccess
		,CreatedOnDate
		,LastTriedOnDate
	FROM tblZambiaFailedAPIData
	WHERE (
			CreatedOnDate BETWEEN @StartDate
				AND @EndDate
			)
		AND (
			@SearchText = ''
			OR DocID LIKE '%' + @SearchText + '%'
			OR RcptNumber LIKE '%' + @SearchText + '%'
			OR ErrorMsg LIKE '%' + @SearchText + '%'
			)
		AND IsSuccess = 0
END
GO

CREATE PROCEDURE UpdateZambiaFailedAPIData_ByDoc @DocID NVARCHAR(50)
	,@APIType INT
	,@ResponseData NVARCHAR(MAX)
	,@ErrorMsg NVARCHAR(MAX) = NULL
	,@IsSuccess BIT = 0
AS
BEGIN
	SET NOCOUNT ON;

	UPDATE tblZambiaFailedAPIData
	SET RetryCount = RetryCount + 1
		,ResponseData = @ResponseData
		,ErrorMsg = @ErrorMsg
		,IsSuccess = @IsSuccess
		,LastTriedOnDate = GETDATE()
	WHERE DocID = @DocID
		AND APIType = @APIType;
END
GO

CREATE PROCEDURE GetCurrentOnHandQtyByZambiaItemCode (@ItemCode NVARCHAR(200))
AS
BEGIN
	SELECT decSumOnHand
	FROM tblInv
	WHERE strZambiaItemCode = @ItemCode
END
GO

CREATE PROCEDURE [dbo].[RecalculateInventoryOnHandQuantitiesAndValues]
AS
BEGIN
	-- INVENTORY MASTERFILE VS INVENTORY TRACKING
	UPDATE tblInv
	SET decSumOnHand = Z.decOnHand_TRACK
		,decSumValue = Z.decValue_TRACK
	FROM (
		SELECT INV.strPartNumber
			,INV.decSumOpenQty
			,INV.decSumOpenValue
			,INV.decSumOnHand AS decOnHand_INV
			,INV.decSumValue AS decValue_INV
			,INV.decSumOpenQty + ISNULL(SUM(DTL.decQty), 0) AS decOnHand_TRACK
			,INV.decSumOpenValue + ISNULL(SUM(DTL.decValue), 0) AS decValue_TRACK
		FROM tblInv INV
		LEFT JOIN tblInvTrackingDT DTL ON INV.strPartNumber = DTL.strPartNumber
		WHERE (INV.intType = 1)
		GROUP BY INV.strPartNumber
			,INV.decSumOpenQty
			,INV.decSumOpenValue
			,INV.decSumOnHand
			,INV.decSumValue
		HAVING (
				INV.decSumOnHand <> (INV.decSumOpenQty + ISNULL(SUM(DTL.decQty), 0))
				OR INV.decSumValue <> (INV.decSumOpenValue + ISNULL(SUM(DTL.decValue), 0))
				)
		) Z
	WHERE tblInv.strPartNumber = Z.strPartNumber

	UPDATE tblInv
	SET decSumAvail = (decSumOnHand - decSumAlloc) - decSumManuf
	WHERE decSumAvail <> ((decSumOnHand - decSumAlloc) - decSumManuf)

	-- INVENTORY TRACKING VS INVENTORY LOCATION MASTERFILE
	UPDATE tblInvExt
	SET decOnHand = Z.decOnHand_TRACK
		,decValue = Z.decValue_TRACK
	FROM (
		SELECT IE.strPartNumber
			,IE.strLocName
			,IE.decOnHand AS decOnHand_IE
			,IE.decValue AS decValue_IE
			,IE.decOpenQty + ISNULL(SUM(DTL.decQty), 0) AS decOnHand_TRACK
			,IE.decOpenValue + ISNULL(SUM(DTL.decValue), 0) AS decValue_TRACK
		FROM tblInv INV
		INNER JOIN tblInvExt IE ON INV.strPartNumber = IE.strPartNumber
		LEFT JOIN tblInvTrackingDT DTL ON IE.strPartNumber = DTL.strPartNumber
			AND IE.strLocName = DTL.strLocName
		WHERE (INV.intType = 1)
		GROUP BY IE.strPartNumber
			,IE.strLocName
			,IE.decOpenQty
			,IE.decOpenValue
			,IE.decOnHand
			,IE.decValue
		HAVING (
				IE.decOnHand <> (IE.decOpenQty + ISNULL(SUM(DTL.decQty), 0))
				OR IE.decValue <> (IE.decOpenValue + ISNULL(SUM(DTL.decValue), 0))
				)
		) Z
	WHERE tblInvExt.strPartNumber = Z.strPartNumber
		AND tblInvExt.strLocName = Z.strLocName

	UPDATE tblInvExt
	SET decAvail = (decOnHand - decAlloc) - decManuf
	WHERE decAvail <> ((decOnHand - decAlloc) - decManuf)
END
GO

CREATE PROCEDURE UpdateTblInvByPartNumber @PartNumber NVARCHAR(100)
	,@dteLastPurchase DATETIME = NULL
	,@dteDateLastSale DATETIME = NULL
	,@decLastPPUnit MONEY = NULL
	,@decSumAvail MONEY
	,@decSumOnHand MONEY
	,@decSumValue MONEY
	,@decSumAmtSoldYTD MONEY = NULL
	,@decSumQtySoldYTD MONEY = NULL
	,@decSumCOGSYTD MONEY
	,@intSumNumTransYTD INT = NULL
	,@dteLastUpdated DATETIME
AS
BEGIN
	UPDATE tblInv
	SET dteLastPurchase = ISNULL(@dteLastPurchase, dteLastPurchase)
		,dteDateLastSale = ISNULL(@dteDateLastSale, dteDateLastSale)
		,decLastPPUnit = ISNULL(@decLastPPUnit, decLastPPUnit)
		,decSumAvail = @decSumAvail
		,decSumOnHand = @decSumOnHand
		,decSumValue = @decSumValue
		,decSumAmtSoldYTD = ISNULL(@decSumAmtSoldYTD, decSumAmtSoldYTD)
		,decSumQtySoldYTD = ISNULL(@decSumQtySoldYTD, decSumQtySoldYTD)
		,decSumCOGSYTD = @decSumCOGSYTD
		,intSumNumTransYTD = ISNULL(@intSumNumTransYTD, intSumNumTransYTD)
		,dteLastUpdated = @dteLastUpdated
	WHERE strPartNumber = @PartNumber;
END
GO

CREATE PROCEDURE UpdateProductionSchedule @IsManufactureCompleteChecked BIT
	,@CompletionDate DATETIME
	,@ManufacturedQty MONEY
	,@AssemblyNumber NVARCHAR(100)
	,@DocNumber NVARCHAR(100)
	,@SystemDate DATE
	,@UserName NVARCHAR(40)
AS
BEGIN
	SET NOCOUNT ON;

	UPDATE tblProductionSchedule
	SET blnCompleted = @IsManufactureCompleteChecked
		,dteCompletedDate = @CompletionDate
		,decManQty = @ManufacturedQty
		,strAsmDocID = @AssemblyNumber
		,dteSystemDate = @SystemDate
		,strUserName = @UserName
	WHERE strProdNumber = @DocNumber;
END
GO

CREATE PROCEDURE UpdateWorkOrder @DocNumber NVARCHAR(100)
AS
BEGIN
	SET NOCOUNT ON;

	UPDATE tblInvWorkOrder
	SET bitCleared = CASE 
			WHEN ISNULL((
						SELECT COUNT(blnCompleted)
						FROM tblProductionSchedule
						WHERE strInvWODocID = tblInvWorkOrder.strInvWODocID
							AND blnCompleted = 0
						), 0) = 0
				THEN 1
			ELSE 0
			END
	WHERE strInvWODocID IN (
			SELECT ISNULL(strInvWODocID, '')
			FROM tblProductionSchedule
			WHERE strProdNumber = @DocNumber
			)
		AND ISNULL(strInvWODocID, '') <> '';
END
GO

CREATE PROCEDURE GetProductionScheduleDTDetails @ProdNumber NVARCHAR(100)
AS
BEGIN
	SET NOCOUNT ON;

	SELECT PSDT.strPartNumber AS PartNumber
		,PSDT.strLocName AS LocName
		,BOM.intQtyToUse AS QtyToUse
	FROM tblProductionSchedule PS
	INNER JOIN tblProductionScheduleDT PSDT ON PS.strProdNumber = PSDT.strProdNumber
	INNER JOIN tblInvBOM BOM ON PS.strPartNumber = BOM.strPartNumber
		AND PSDT.strPartNumber = BOM.strPartItemNumber
	INNER JOIN tblInv INV ON PSDT.strPartNumber = INV.strPartNumber
	WHERE PSDT.strProdNumber = @ProdNumber;
END
GO

CREATE PROCEDURE [dbo].[InsertUpdateSerialLotDetails] (
	@SerialNumberTrackingData AS SerialNumberTrackingTableType READONLY
	,@InvLotExtUpdateData AS InvLotExtTableType READONLY
	,@InvLotExtInsertData AS InvLotExtTableType READONLY
	,@InvSerialExtUpdateData AS InvSerialExtTableType READONLY
	,@InvSerialExtInsertData AS InvSerialExtTableType READONLY
	,@IsFromWorkshop AS BIT = 0
	)
AS
BEGIN
	IF @IsFromWorkshop = 0
	BEGIN
		IF EXISTS (
				SELECT *
				FROM @SerialNumberTrackingData
				)
		BEGIN
			INSERT INTO tblSerialNumberTracking (
				strPartNumber
				,strSerialNumber
				,strUserName
				,dteUpdatedDate
				,intType
				,strDocID
				,intLineNo
				,decQty
				,strLocation
				,intStatus
				,bitExpiryDate
				,dteExpiryDate
				,lngBinID
				)
			SELECT PartNumber
				,SerialNumber
				,UserName
				,UpdatedDate
				,SerialLotType
				,DocID
				,[LineNo]
				,Qty
				,Location
				,[Status]
				,IsExpiryDate
				,ExpiryDate
				,BinID
			FROM @SerialNumberTrackingData
		END

		IF EXISTS (
				SELECT *
				FROM @InvLotExtUpdateData
				)
		BEGIN
			UPDATE tblInvLotExt
			SET decQty = decQty + t.Qty
				,dteUpdatedDate = t.UpdatedDate
				,dteExpiryDate = t.ExpiryDate
				,bitExpiryDate = t.IsExpiryDate
			FROM (
				SELECT PartNumber
					,LotNumber
					,LocName
					,BinID
					,UpdatedDate
					,Sum(isnull(Qty, 0)) AS Qty
					,ExpiryDate
					,IsExpiryDate
				FROM @InvLotExtUpdateData
				GROUP BY PartNumber
					,LotNumber
					,LocName
					,BinID
					,UpdatedDate
					,ExpiryDate
					,IsExpiryDate
				) t
			WHERE strPartNumber = t.PartNumber
				AND strLotNumber = t.LotNumber
				AND strLocName = t.LocName
				AND lngBinID = t.BinID
		END

		IF EXISTS (
				SELECT *
				FROM @InvLotExtInsertData
				)
		BEGIN
			INSERT INTO tblInvLotExt
			SELECT *
				,GETDATE()
			FROM @InvLotExtInsertData
		END

		IF EXISTS (
				SELECT *
				FROM @InvSerialExtUpdateData
				)
		BEGIN
			UPDATE tblInvSerialExt
			SET strLocName = t.LocName
				,decQty = t.Qty
				,intStatus = t.[Status]
				,strDocID = t.DocID
				,dteUpdatedDate = t.UpdatedDate
				,lngBinID = t.BinID
			FROM @InvSerialExtUpdateData t
			WHERE strPartNumber = t.PartNumber
				AND strSerialNumber = t.SerialNumber
				--AND strLocName = t.LocName        
		END

		IF EXISTS (
				SELECT *
				FROM @InvSerialExtInsertData
				)
		BEGIN
			INSERT INTO tblInvSerialExt
			SELECT *
				,GETDATE()
			FROM @InvSerialExtInsertData
		END
	END
END
GO

CREATE PROCEDURE GetOrdPGDTforclearingOBJECT (@DocumentNumber NVARCHAR(50))
AS
BEGIN
	SELECT strPartNumber AS [PartNumber]
		,intLineNo AS [LineNo]
		,decBuyQty AS [BuyQty]
		,decBuyGRVQtyRemain AS [BuyGRVQtyRemain]
		,decStockQty AS [StockQty]
		,decStockGRVQtyRemain AS [StockGRVQtyRemain]
		,strLocation AS [Location]
	FROM tblOrderDocPGDT
	WHERE strOrdPGDocID = @DocumentNumber
		AND decStockQtyRemain <> 0
		AND decBuyQtyRemain <> 0
END
GO

CREATE PROCEDURE GetCountriesData
AS
BEGIN
	SELECT strCountryCode AS CountryCode
		,strCountryName AS CountryName
		,strTelCode AS TelCode
		,strDisplayName AS DisplayName
	FROM tblCountries
	ORDER BY strCountryName
END
GO

CREATE PROCEDURE [dbo].[UpdateKenyaCustPin] (
	@CustomerNumber NVARCHAR(50)
	,@CustomerTPIN NVARCHAR(250)
	)
AS
BEGIN
	UPDATE tblCustomers
	SET strKenyaCustPin = @CustomerTPIN
	WHERE strCustName = @CustomerNumber
END
GO

CREATE PROCEDURE [dbo].[GetKenyaCustPin] (
	@CustomerNumber NVARCHAR(50)
	)
AS
BEGIN
	SELECT strKenyaCustPin FROM tblCustomers
	WHERE strCustName = @CustomerNumber
END
GO

CREATE PROCEDURE [dbo].[UpdateInventoryLastPPUnitForRepackItems] @PartNumber NVARCHAR(50)
	,@LastPPUnit DECIMAL
AS
BEGIN
	UPDATE tblInv
	SET decLastPPUnit = CASE 
			WHEN decLastPPUnit = 0
				THEN @LastPPUnit
			ELSE decLastPPUnit
			END
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE [dbo].[GetInvWebstoreCategoryList]
AS
BEGIN
	SELECT DISTINCT invc.strCategory AS Category
		,invc.strDesc AS [Description]
		,invc.bitInactive AS InActive
		,invc.decMinMarginPerc AS MinMarginPerc
		,invc.bitUseMinMarginPerc AS IsUseMinMarginPerc
		,invc.intAlertOnMinMarginPerc AS InvAlertOnMinMarginPerc
		,invc.strAcctSetInv AS AccSetInv
		,invc.strAcctSetSvc AS AccSetSvc
		,invc.strAcctSetBO AS AccSetBo
		,invc.bitDefault AS IsDefault
	FROM tblInvCat invc
	LEFT JOIN tblInv inv ON invc.strCategory = inv.strCategory
	WHERE bitWebstoreItem = 1
	ORDER BY invc.strCategory
END
GO

CREATE PROCEDURE [dbo].[GetTenderTypes] @IsDefault AS BIT = 0
AS
BEGIN
	SELECT intDisplayOrder AS DisplayOrder
		,strName AS Name
		,strDescription AS Description
		,intGLNumber AS GLNumber
		,bitAccount AS IsAccount
		,bitInActive AS InActive
		,bitCashbookIntegration AS IsCashbookIntegration
		,strIPAddress AS IPAddress
		,intPortNum AS PortNumber
		,bitSalesInvoice AS IsSalesInvoice
		,bitLayBy AS IsLayBy
		,bitPOS AS IsPOS
		,bitCash AS IsCash
		,bitEFTIntegration AS IsEFTIntegration
		,strMerchantId AS MerchantId
		,strTradeRootServer AS TradeRootServer
		,intEFTPort AS EFTPort
		,strPEDId AS PEDIdList
	FROM tblTenderTypes
	WHERE strName <> 'Split Payment'
	ORDER BY intDisplayOrder
END
GO

CREATE PROCEDURE [dbo].[GetInvAdjDoc]
	@DocNumberListString VARCHAR(MAX) = NULL
AS
BEGIN
    SELECT 
        strAdjDocID AS DocNumber,
        intAdjDocID AS DocID,
        lngInvTrackID AS InvTrackID,
        lngJourID AS JourID,
        dteSystemDate AS SystemDate,
        dteJournalDate AS JournalDate,
        strUserName AS UserName,
        strLocName AS LocName,
        strComment AS Comment,
        intAccount AS Account,
        decTotal AS Total,
		ISNULL(intDept, 0) AS Dept,
        strFileName AS FileName,
        bitRevaluation AS IsRevaluation,
        bitStockCount AS IsStockCount,
        ISNULL(bitActual, 0) AS IsActual,
        ISNULL(bitSetQtyZero, 0) AS IsSetQtyZero
    FROM tblInvAdjDoc
	WHERE @DocNumberListString IS NULL
        OR LTRIM(RTRIM(@DocNumberListString)) = ''
        OR strAdjDocID IN (SELECT value FROM [dbo].[fnSplitStringAsTable](@DocNumberListString, ','))
    ORDER BY strAdjDocID
END
GO

CREATE PROCEDURE [dbo].[GetInvAdjDocDT]
	@DocNumberListString VARCHAR(MAX) = NULL
AS
BEGIN
    SELECT 
        strAdjDocID AS AdjDocID,
        intLineNo AS [LineNo],
        strPartNumber AS PartNumber,
        decQty AS Quantity,
        decUnitCost AS UnitCost,
        decAmount AS Amount,
        lngBinID AS BinID,
        decOnHand AS OnHandQty,
        decValue AS OldValue,
        decNewValue AS NewValue,
		strFromUnit AS FromUnit,
		strConversionType AS ConversionType,
		decConversionFactor AS ConversionFactor,
		strStockUnit AS StockUnit
    FROM tblInvAdjDocDT
	WHERE @DocNumberListString IS NULL
        OR LTRIM(RTRIM(@DocNumberListString)) = ''
        OR strAdjDocID IN (SELECT value FROM [dbo].[fnSplitStringAsTable](@DocNumberListString, ','))
    ORDER BY strAdjDocID, intLineNo
END
GO

CREATE PROCEDURE [dbo].[SoapAPIGetPurchasesEnquiryByDate] @intDocType INT
	,@DateStart DATETIME
	,@DateEnd DATETIME
AS
BEGIN
	SET NOCOUNT ON;

	IF @intDocType = 0 -- Purchase Invoice
	BEGIN
		SELECT I.strInvPDocID AS 'DocumentNumber',
			--I.intDocType as 'DocumentType',
			I.dteSystemDate AS 'SystemDate'
			,I.dteJournalDate AS 'DocumentDate'
			,I.dteRequired AS 'RequiredDate'
			,I.strUserName AS 'UserName'
			,I.strVendName AS 'VendorNumber'
			,I.strShipTo AS 'ShipTo'
			,I.strReference AS 'Reference'
			,I.decSubTotal AS 'SubTotal'
			,I.decVAT AS 'VAT'
			,I.decTotal AS 'Total'
			,I.strNotes AS 'Notes'
			,I.bitPrinted AS 'IsPrinted'
			,I.bitEmailed AS 'IsEmailed',
			--I.bitCleared as 'IsCleared',
			I.strBuyerName AS 'BuyerName'
			,I.strAddInfo AS 'AdditionalInfo'
			,I.strCurrency AS 'CurrencyCode'
			,I.bitIsForeign AS 'IsForeign'
			,I.decSubTotalF AS 'SubTotalF'
			,I.decVATF AS 'VATF'
			,I.decTotalF AS 'TotalF'
			,I.decExchange AS 'ExchangeRate'
			,I.strTerm AS 'Term'
			,I.intDept AS 'Department'
			,I.strField1 AS 'Field01'
			,I.strField2 AS 'Field02'
			,I.strField3 AS 'Field03'
			,I.strField4 AS 'Field04'
			,I.strField5 AS 'Field05'
			,I.strField6 AS 'Field06'
			,I.strField7 AS 'Field07'
			,I.strField8 AS 'Field08'
			,I.strField9 AS 'Field09'
			,I.strField10 AS 'Field10'
			,I.strField11 AS 'Field11'
			,I.strField12 AS 'Field12'
			,I.strSubFormated AS 'FormattedSubtotal'
			,I.strVATFormatted AS 'FormattedVAT'
			,I.strTotFormatted AS 'FormattedTotal'
			,I.decDiscPerc AS 'DiscountPerc'
			,I.decDiscAmt AS 'DiscountAmt'
			,-- Added
			I.decDiscAmtF AS 'DiscountAmtF'
			,-- Added
			I.strDiscFormatted AS 'FormattedDiscountAmt'
			,I.strOrdFQDocID AS 'ConvertingDocNumber'
			,I.strStatusTypeCode AS 'Status'
			,I.bitBookmark AS 'IsBookmark'
			--,I.strCNReasonCode AS 'CreditNoteReason'
			,I.bitFromPO AS 'IsFromOrder'
			--,I.strOrdDocID AS 'ConvertingDocNumber'
			,I.bitHistoryTrans AS 'IsHistoryTrans'
			,I.intAccount AS 'AccountNumber'
			--,I.bitReserved AS 'IsReserved'
			--,I.dte AS 'SystemDateTime'
		FROM tblInvoiceDocP I
		INNER JOIN tblInvoiceDocPDT IDT ON I.strInvPDocID = IDT.strInvPDocID
			AND IDT.intLineNo = 1
		WHERE IDT.decBuyQty >= 0
			AND dteJournalDate BETWEEN @DateStart
				AND @DateEnd
	END
END;
GO

CREATE PROCEDURE [dbo].[GetAllInventoryByCategories] @CategoryListString VARCHAR(MAX)
	,@IsWebStoreItem AS BIT = 0
AS
BEGIN
	SELECT strPartNumber AS [Number]
	FROM tblInv
	WHERE strCategory IN (
			SELECT value
			FROM [dbo].[fnSplitStringAsTable](@CategoryListString, ',')
			)
		OR (@CategoryListString IS NULL)
		AND (
			@IsWebStoreItem = 0
			OR bitWebstoreItem = 1
			)
	ORDER BY strCategory
END
GO

CREATE PROCEDURE [dbo].[GetAllInvExtByPartnumber] @PartNumberListString VARCHAR(MAX)
AS
BEGIN
	SELECT strPartNumber AS [Number]
		,strLocName AS [Name]
		,decAvail AS QuantityAvailable
		,decAlloc AS QuantityAllocated
		,decOnHand AS OnHandQuantity
		,decValue AS OnHandValue
		,decOnOrder AS QuantityOnPurchaseOrder
		,decOpenQty AS OpeningQuantity
		,decOpenValue AS OpeningValue
		,intReorderPoint AS ReorderQuantity
		,decMaxLevel AS MaxLevel
		,decMinimumLevel AS MinLevel
	FROM tblInvExt
	WHERE strPartNumber IN (
			SELECT value
			FROM [dbo].[fnSplitStringAsTable](@PartNumberListString, ',')
			)
END
GO

CREATE PROCEDURE [dbo].[GetAllInvPriceListByPartnumber] @PartNumberListString VARCHAR(MAX)
AS
BEGIN
	SELECT strPartNumber AS [Number]
		,strPricelist AS [Name]
		,decSelling AS QuantityAvailable
	FROM tblInvPrice
	WHERE strPartNumber IN (
			SELECT value
			FROM [dbo].[fnSplitStringAsTable](@PartNumberListString, ',')
			)
END
GO

CREATE PROCEDURE [dbo].[GetAllVendorListByPartnumber] @PartNumberListString VARCHAR(MAX)
AS
BEGIN
	SELECT strPartNumber AS PartNumber
		,strVendName AS Vendor
		,strItemCode AS Number
		,strItemDesc AS [Description]
		,intWarrantyDays AS WarrentyDays
		,decPrice AS Price
		,bitPreferred AS IsPreferred
		,decDiscPerc AS DiscountPercentage
		,decLocalPrice AS LocalPrice
		,decLandedCostFactor AS LandedCostFactor
	FROM tblInvVend
	WHERE strPartNumber IN (
			SELECT value
			FROM [dbo].[fnSplitStringAsTable](@PartNumberListString, ',')
			)
END
GO

CREATE PROCEDURE [dbo].[GetAllInvImagesByPartNumber] @PartNumberListString VARCHAR(MAX)
AS
BEGIN
	SELECT strPartNumber AS [Number]
		,Image_ID AS [ID]
		,imgData AS [Data]
		,Cast(bitDefaultImage AS BIT) AS IsDefault
	FROM tblInvImg
	WHERE strPartNumber IN (
			SELECT value
			FROM [dbo].[fnSplitStringAsTable](@PartNumberListString, ',')
			)
END
GO

CREATE PROCEDURE [dbo].[GetAllInventoryEnquiries] @PartNumberListString VARCHAR(MAX) = NULL
	,@IsWebStoreItem BIT = 0
	,@PageIndex INT = 0
	,@PageSize INT = 0
AS
BEGIN
	SET NOCOUNT ON;

	IF (
			@PageIndex > 0
			AND @PageSize > 0
			)
	BEGIN
			;

		WITH InventoryCTE
		AS (
			SELECT tblinv.strPartNumber AS Number
				,strDesc AS [Description]
				,CAST(intType AS INT) AS [Type]
				,intExpAcct AS ExpAccount
				,decCostOnPO AS CostOnPO
				,bitUseLPPOnPO AS UseLastPPOnPO
				,intReorderQty AS ReorderQuantity
				,strBuyUnit AS BuyUnit
				,strStockUnit AS BuyStockUnit
				,decBuyToStock AS BuyToStock
				,bitAllowPriceChg AS AllowPriceChange
				,dteDateLastSale AS LastSaleDate
				,dteLastPurchase AS LastPurchasedDate
				,decLastPPUnit AS LastPPPerUnit
				,dteLastUpdated AS Updated
				,bitUseBOM AS UseBOM
				,intBOMQty AS BOMQuantity
				,strAddInfo AS AdditionalInfo
				,bitInactive AS InActive
				,decSumAvail AS TotalAvailableQuantity
				,decSumAlloc AS TotalAllocatedQuantity
				,decSumOnHand AS TotalOnHandQuantity
				,decSumValue AS TotalOnHandValue
				,decSumOnOrder AS TotalOnPurchaseOrder
				,decSumOpenQty AS TotalOpeningQuantity
				,decSumOpenValue AS TotalOpeningValue
				,decSumValYearStart AS ValueYearStart
				,decSumQtyYearStart AS QuantityYearStart
				,decSumAmtSoldYTD AS AmountSoldYTD
				,decSumAmtSoldLY AS AmountSoldLY
				,decSumQtySoldYTD AS QuantitySoldYTD
				,decSumQtySoldLY AS SumQtySoldLY
				,decSumCOGSYTD AS CostOfGoodsYTD
				,decSumCOGSLY AS CostOfGoodsLY
				,intSumNumTransYTD AS TransactionCountYTD
				,intSumNumTransLY AS TransactionCountLY
				,bitAutoBuild AS AutoBuild
				,strField1 AS Field01
				,strField2 AS Field02
				,strField3 AS Field03
				,strField4 AS Field04
				,strField5 AS Field05
				,strField6 AS Field06
				,strBarCode AS BarCode
				,decStandardCost AS StandardCost
				,bitItemNumConvUsed AS UseItemNumberConvention
				,strSellUnit AS SellUnit
				,strSellStockUnit AS SellStockUnit
				,decSellFromStock AS SellFromStock
				,strItemSegment1 AS ItemSegment1
				,strItemSegment2 AS ItemSegment2
				,strItemSegment3 AS ItemSegment3
				,strItemSegment4 AS ItemSegment4
				,strInvNumConv AS ItemNumberConvention
				,bitInvSerialType AS IsSerialType
				,strInvSerialType AS ItemSerialOrLOTType
				,decRepairCharge AS RepairCharge
				,strBarCode2 AS BarCode2
				,bitVoucherEnabled AS VoucherCodeEnabled
				,strVoucherCode AS VoucherCode
				,decDefSaleQty AS DefaultSalesQuantity
				,strExtendedDesc AS ExtendedDesc
				,bitInvExtDescOnSI AS ExtDescOnSI
				,bitInvExtDescOnSO AS ExtDescOnSO
				,bitInvExtDescOnSQ AS ExtDescOnSQ
				,bitInvExtDescOnSFHQ AS ExtDescOnSFHQ
				,bitInvExtDescOnCR AS ExtDescOnCR
				,bitInvExtDescOnPI AS ExtDescOnPI
				,bitInvExtDescOnPO AS ExtDescOnPO
				,bitInvExtDescOnPQ AS ExtDescOnPQ
				,bitWebstoreItem AS WebstoreItem
				,strDimProCode AS DimensionProfileCode
				,strRSTTerminalSync AS RSTTerminalSync
				,intDecimalQuantity AS DecimalQuantity
				,strBOMNotes AS BOMNotes
				,bitInvExtDescOnBRQ AS InvExtDescOnBRQ
				,decMass AS Mass
				,decVolumetricWeight AS VolumetricWeight
				,strUnitOfMeasure AS UnitOfMeasure
				,decW AS W
				,decH AS H
				,decD AS D
				,decCube AS [Cube]
				,decFactor AS Factor
				,decMaxLevel AS MaxLevel
				,decOrderLeadTime AS OrderLeadTime
				,decSafetyFactorPer AS SafetyFactorPer
				,decDaysSalesinStock AS DaysSalesInStock
				,decMinimumOrderQuantity AS MinOrderQty
				,decNewDailySales AS NewDailySales
				,decOldMinLevel AS OldMinLevel
				,decMinimumLevel AS MinLevel
				,decOldMaxLevel AS OldMaxLevel
				,decEconomicOrderQty AS EconomicOrderQty
				,bitPallet AS IsPallet
				,bitInclInvForecast AS InclInvForecast
				,bitDimProSales AS DimProSales
				,bitDimProPurchases AS DimProPurchases
				,strInvWCCode AS InvWCCode
				,decLastManCost AS LastManCost
				,bitAutoBuildSameLoc AS AutoBuildSameLoc
				,strFileName AS [FileName]
				,strSubCategory AS SubCategory
				,decSumManuf AS SumManuf
				,strSubCategoryGroup AS SubCategoryGroup
				,bitExclCommission AS ExclCommission
				,strPOSDesc AS POSDesc
				,bitOtherCmp AS OtherCmp
				,bitPrintComp AS PrintComp
				,tblinv.dteRowUpdated AS RowUpdated
				,bitSumComp AS SumComp
				,dteWebStoreItemUpdated AS WebStoreItemUpdated
				,bitAllowAdjustKitCompOnDoc AS AllowAdjustKitCompOnDoc
				,strHSCode AS HSCode
				,strHSDesc AS HSDesc
				,strURACode AS URACode
				,strKenyaItemCode AS KenyaItemCode
				,strKenyaItemCodeCounter AS KenyaItemCodeCounter
				,strKenyaItemClassificationName AS KenyaItemClassificationName
				,decDensity AS Density
				,bitIsSuperseded AS IsSuperseded
				,strSupersededBy AS SupersededBy
				,strSupersededDescription AS SupersededDescription
				,dtesupersessiondate AS SupersessionDate
				,bitPendingApproval AS PendingApproval
				,bitDefaultUOM AS DefaultUOM
				,strCommodityCode AS CommodityCode
				,strZambiaItemCode AS ZambiaItemCode
				,strZMBItemCodeCounter AS ZMBItemCodeCounter
				,strZambiaItemClassificationName AS ZambiaItemClassificationName
				,intZambiaItemType AS ZambiaItemType
				,strZambiaInvCountryOriginCode AS ZambiaInvCountryOriginCode
				,ROW_NUMBER() OVER (
					ORDER BY tblinv.strPartNumber
					) AS RowNum
			FROM tblInv
			WHERE (
					@PartNumberListString IS NULL
					OR LTRIM(RTRIM(@PartNumberListString)) = ''
					OR tblInv.strPartNumber IN (
						SELECT value
						FROM [dbo].[fnSplitStringAsTable](@PartNumberListString, ',')
						)
					)
				AND (
					@IsWebStoreItem = 0
					OR tblInv.bitWebstoreItem = 1
					)
			)
		SELECT *
		FROM InventoryCTE
		WHERE RowNum BETWEEN ((@PageIndex - 1) * @PageSize + 1)
				AND (@PageIndex * @PageSize)
		ORDER BY RowNum;
	END
	ELSE
	BEGIN
		SELECT tblinv.strPartNumber AS Number
			,strDesc AS [Description]
			,CAST(intType AS INT) AS [Type]
			,intExpAcct AS ExpAccount
			,decCostOnPO AS CostOnPO
			,bitUseLPPOnPO AS UseLastPPOnPO
			,intReorderQty AS ReorderQuantity
			,strBuyUnit AS BuyUnit
			,strStockUnit AS BuyStockUnit
			,decBuyToStock AS BuyToStock
			,bitAllowPriceChg AS AllowPriceChange
			,dteDateLastSale AS LastSaleDate
			,dteLastPurchase AS LastPurchasedDate
			,decLastPPUnit AS LastPPPerUnit
			,dteLastUpdated AS Updated
			,bitUseBOM AS UseBOM
			,intBOMQty AS BOMQuantity
			,strAddInfo AS AdditionalInfo
			,bitInactive AS InActive
			,decSumAvail AS TotalAvailableQuantity
			,decSumAlloc AS TotalAllocatedQuantity
			,decSumOnHand AS TotalOnHandQuantity
			,decSumValue AS TotalOnHandValue
			,decSumOnOrder AS TotalOnPurchaseOrder
			,decSumOpenQty AS TotalOpeningQuantity
			,decSumOpenValue AS TotalOpeningValue
			,decSumValYearStart AS ValueYearStart
			,decSumQtyYearStart AS QuantityYearStart
			,decSumAmtSoldYTD AS AmountSoldYTD
			,decSumAmtSoldLY AS AmountSoldLY
			,decSumQtySoldYTD AS QuantitySoldYTD
			,decSumQtySoldLY AS SumQtySoldLY
			,decSumCOGSYTD AS CostOfGoodsYTD
			,decSumCOGSLY AS CostOfGoodsLY
			,intSumNumTransYTD AS TransactionCountYTD
			,intSumNumTransLY AS TransactionCountLY
			,bitAutoBuild AS AutoBuild
			,strField1 AS Field01
			,strField2 AS Field02
			,strField3 AS Field03
			,strField4 AS Field04
			,strField5 AS Field05
			,strField6 AS Field06
			,strBarCode AS BarCode
			,decStandardCost AS StandardCost
			,bitItemNumConvUsed AS UseItemNumberConvention
			,strSellUnit AS SellUnit
			,strSellStockUnit AS SellStockUnit
			,decSellFromStock AS SellFromStock
			,strItemSegment1 AS ItemSegment1
			,strItemSegment2 AS ItemSegment2
			,strItemSegment3 AS ItemSegment3
			,strItemSegment4 AS ItemSegment4
			,strInvNumConv AS ItemNumberConvention
			,bitInvSerialType AS IsSerialType
			,strInvSerialType AS ItemSerialOrLOTType
			,decRepairCharge AS RepairCharge
			,strBarCode2 AS BarCode2
			,bitVoucherEnabled AS VoucherCodeEnabled
			,strVoucherCode AS VoucherCode
			,decDefSaleQty AS DefaultSalesQuantity
			,strExtendedDesc AS ExtendedDesc
			,bitInvExtDescOnSI AS ExtDescOnSI
			,bitInvExtDescOnSO AS ExtDescOnSO
			,bitInvExtDescOnSQ AS ExtDescOnSQ
			,bitInvExtDescOnSFHQ AS ExtDescOnSFHQ
			,bitInvExtDescOnCR AS ExtDescOnCR
			,bitInvExtDescOnPI AS ExtDescOnPI
			,bitInvExtDescOnPO AS ExtDescOnPO
			,bitInvExtDescOnPQ AS ExtDescOnPQ
			,bitWebstoreItem AS WebstoreItem
			,strDimProCode AS DimensionProfileCode
			,strRSTTerminalSync AS RSTTerminalSync
			,intDecimalQuantity AS DecimalQuantity
			,strBOMNotes AS BOMNotes
			,bitInvExtDescOnBRQ AS InvExtDescOnBRQ
			,decMass AS Mass
			,decVolumetricWeight AS VolumetricWeight
			,strUnitOfMeasure AS UnitOfMeasure
			,decW AS W
			,decH AS H
			,decD AS D
			,decCube AS [Cube]
			,decFactor AS Factor
			,decMaxLevel AS MaxLevel
			,decOrderLeadTime AS OrderLeadTime
			,decSafetyFactorPer AS SafetyFactorPer
			,decDaysSalesinStock AS DaysSalesInStock
			,decMinimumOrderQuantity AS MinOrderQty
			,decNewDailySales AS NewDailySales
			,decOldMinLevel AS OldMinLevel
			,decMinimumLevel AS MinLevel
			,decOldMaxLevel AS OldMaxLevel
			,decEconomicOrderQty AS EconomicOrderQty
			,bitPallet AS IsPallet
			,bitInclInvForecast AS InclInvForecast
			,bitDimProSales AS DimProSales
			,bitDimProPurchases AS DimProPurchases
			,strInvWCCode AS InvWCCode
			,decLastManCost AS LastManCost
			,bitAutoBuildSameLoc AS AutoBuildSameLoc
			,strFileName AS [FileName]
			,strSubCategory AS SubCategory
			,decSumManuf AS SumManuf
			,strSubCategoryGroup AS SubCategoryGroup
			,bitExclCommission AS ExclCommission
			,strPOSDesc AS POSDesc
			,bitOtherCmp AS OtherCmp
			,bitPrintComp AS PrintComp
			,tblinv.dteRowUpdated AS RowUpdated
			,bitSumComp AS SumComp
			,dteWebStoreItemUpdated AS WebStoreItemUpdated
			,bitAllowAdjustKitCompOnDoc AS AllowAdjustKitCompOnDoc
			,strHSCode AS HSCode
			,strHSDesc AS HSDesc
			,strURACode AS URACode
			,strKenyaItemCode AS KenyaItemCode
			,strKenyaItemCodeCounter AS KenyaItemCodeCounter
			,strKenyaItemClassificationName AS KenyaItemClassificationName
			,decDensity AS Density
			,bitIsSuperseded AS IsSuperseded
			,strSupersededBy AS SupersededBy
			,strSupersededDescription AS SupersededDescription
			,dtesupersessiondate AS SupersessionDate
			,bitPendingApproval AS PendingApproval
			,bitDefaultUOM AS DefaultUOM
			,strCommodityCode AS CommodityCode
			,strZambiaItemCode AS ZambiaItemCode
			,strZMBItemCodeCounter AS ZMBItemCodeCounter
			,strZambiaItemClassificationName AS ZambiaItemClassificationName
			,intZambiaItemType AS ZambiaItemType
			,strZambiaInvCountryOriginCode AS ZambiaInvCountryOriginCode
		FROM tblInv
		WHERE (
				@PartNumberListString IS NULL
				OR LTRIM(RTRIM(@PartNumberListString)) = ''
				OR tblInv.strPartNumber IN (
					SELECT value
					FROM [dbo].[fnSplitStringAsTable](@PartNumberListString, ',')
					)
				)
			AND (
				@IsWebStoreItem = 0
				OR tblInv.bitWebstoreItem = 1
				)
	END
END
GO

CREATE PROCEDURE UPDATEOrderDocDPGDT @BuyRemain AS MONEY
	,@StockQtyRemain AS MONEY
	,@OrdPGDocID AS NVARCHAR
	,@LineNo AS INT
AS
BEGIN
	UPDATE tblOrderDocPGDT
	SET decBuyGRVQtyRemain = @BuyRemain
		,decStockGRVQtyRemain = @StockQtyRemain
	WHERE strOrdPGDocID = @OrdPGDocID
		AND intLineNo = @LineNo
END
GO

CREATE PROCEDURE [dbo].[GetKenyaItemCountryCodeData] (@PartNumber AS NVARCHAR(MAX))
AS
BEGIN
	SELECT strKenyaItemCountryCode AS KenyaItemCountryCode
	FROM tblInv
	WHERE strPartNumber = @PartNumber
END
GO

CREATE PROCEDURE GetAccountBalanceAndType @SQAcct VARCHAR(50)
	,@Options VARCHAR(20) -- 'Current Year', 'Previous Year', 'History Year'
AS
BEGIN
	SET NOCOUNT ON;

	IF @Options = 'Current Year'
	BEGIN
		SELECT decOpenBalance
			,intAccType
		FROM tblAccounts
		WHERE intGLNumber = @SQAcct;
	END
	ELSE IF @Options = 'Previous Year'
	BEGIN
		SELECT decOpenBalance
			,intAccType
		FROM tblAccountsLY
		WHERE intGLNumber = @SQAcct;
	END
	ELSE IF @Options = 'History Year'
	BEGIN
		SELECT decOpenBalance
			,intAccType
		FROM tblAccountsHist
		WHERE intGLNumber = @SQAcct;
	END
END
GO

CREATE PROCEDURE GetJournalSumBeforeDate @SQAcct VARCHAR(50)
	,@SQStart DATE
	,@Options VARCHAR(20) -- 'Current Year', 'Previous Year', 'History Year'
AS
BEGIN
	SET NOCOUNT ON;

	IF @Options = 'Current Year'
		SELECT ISNULL(SUM(tblJournalEnt.decAmount), 0) AS TotalAmount
		FROM tblJournalEnt
		INNER JOIN tblJournal ON tblJournalEnt.lngJourID = tblJournal.lngJourID
		WHERE tblJournal.dteJournalDate < @SQStart
			AND tblJournalEnt.intGLNumber = @SQAcct;
	ELSE IF @Options = 'Previous Year'
		SELECT ISNULL(SUM(tblJournalEntLY.decAmount), 0) AS TotalAmount
		FROM tblJournalEntLY
		INNER JOIN tblJournalLY ON tblJournalEntLY.lngJourID = tblJournalLY.lngJourID
		WHERE tblJournalLY.dteJournalDate < @SQStart
			AND tblJournalEntLY.intGLNumber = @SQAcct;
	ELSE IF @Options = 'History Year'
		SELECT ISNULL(SUM(tblJournalEntHist.decAmount), 0) AS TotalAmount
		FROM tblJournalEntHist
		INNER JOIN tblJournalHist ON tblJournalEntHist.lngJourID = tblJournalHist.lngJourID
		WHERE tblJournalHist.dteJournalDate < @SQStart
			AND tblJournalEntHist.intGLNumber = @SQAcct;
END
GO

CREATE PROCEDURE GetGeneralLedgerTransactions @Options VARCHAR(20)
	,-- 'Current Year', 'Previous Year', 'History Year'
	@SQAcct VARCHAR(50)
	,@SQStart DATE
	,@SQModule INT
	,@UnallocTransactions BIT = NULL
	,-- 0 to filter unallocated
	@OptJournalRange BIT = NULL
	,-- 1 to filter by journal range
	@SQJourStart BIGINT = NULL
	,@SQJourEnd BIGINT = NULL
	,@SortedBy VARCHAR(10) = 'Date' -- 'Date' or 'Journal'
AS
BEGIN
	SET NOCOUNT ON;

	IF @Options = 'Current Year'
	BEGIN
		SELECT tblJournal.dteJournalDate AS JournalDate
			,CASE 
				WHEN tblJournal.intModule = @SQModule
					THEN CASE 
							WHEN tblJournalEnt.strComment = ''
								THEN tblJournal.strComment
							ELSE tblJournalEnt.strComment
							END
				ELSE tblJournal.strComment
				END AS Comment
			,tblJournal.strSource AS [Source]
			,tblJournal.lngJourID AS JourID
			,tblJournalEnt.decDebits AS Debits
			,tblJournalEnt.decCredits AS Credits
			,tblJournalEnt.decAmount AS Amount
			,tblJournalEnt.decAllocatedAmtToDate AS AllocatedAmtToDate
			,tblJournalEnt.decUnAllocatedAmt AS UnAllocatedAmt
			,CASE 
				WHEN ISNULL(tblBankRecTrans.strSource, '') = ''
					THEN ISNULL((
								SELECT JDT.strLineReference
								FROM tblJournalEntryDoc JHR
								INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID
								WHERE JHR.lngJourID = tblJournal.lngJourID
									AND JHR.strJEDocID = tblJournal.strSource
									AND JDT.intGLNumber = tblJournalEnt.intGLNumber
									AND JDT.intLineNo = tblJournalEnt.intLineNum
								), '')
				ELSE ISNULL(tblBankRecTrans.strSource, '')
				END AS LineReference
		FROM tblJournal
		INNER JOIN tblJournalEnt ON tblJournal.lngJourID = tblJournalEnt.lngJourID
		LEFT OUTER JOIN tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEnt.lngJourID
			AND tblBankRecTrans.intLineNum = tblJournalEnt.intLineNum
			AND tblBankRecTrans.dteJourDate = tblJournal.dteJournalDate
		WHERE tblJournal.dteJournalDate = @SQStart
			AND tblJournalEnt.intGLNumber = @SQAcct
			AND (
				@UnallocTransactions <> 0
				OR tblJournalEnt.decUnAllocatedAmt <> 0
				)
			AND (
				@OptJournalRange <> 1
				OR tblJournal.lngJourID BETWEEN @SQJourStart
					AND @SQJourEnd
				)
		ORDER BY CASE 
				WHEN @SortedBy = 'Date'
					THEN CONVERT(VARCHAR, tblJournal.dteJournalDate, 112)
				END
			,CASE 
				WHEN @SortedBy = 'Date'
					THEN tblJournal.lngJourID
				END
			,CASE 
				WHEN @SortedBy <> 'Date'
					THEN tblJournal.lngJourID
				END
			,CASE 
				WHEN @SortedBy <> 'Date'
					THEN tblJournal.dteJournalDate
				END;
	END
	ELSE IF @Options = 'Previous Year'
	BEGIN
		SELECT tblJournalLY.dteJournalDate AS JournalDate
			,CASE 
				WHEN tblJournalLY.intModule = @SQModule
					THEN CASE 
							WHEN tblJournalEntLY.strComment = ''
								THEN tblJournalLY.strComment
							ELSE tblJournalEntLY.strComment
							END
				ELSE tblJournalLY.strComment
				END AS Comment
			,tblJournalLY.strSource AS [Source]
			,tblJournalLY.lngJourID AS JourID
			,tblJournalEntLY.decDebits AS Debits
			,tblJournalEntLY.decCredits AS Credits
			,tblJournalEntLY.decAmount AS Amount
			,tblJournalEntLY.decAllocatedAmtToDate AS AllocatedAmtToDate
			,tblJournalEntLY.decUnAllocatedAmt AS UnAllocatedAmt
			,CASE 
				WHEN ISNULL(tblBankRecTrans.strSource, '') = ''
					THEN ISNULL((
								SELECT JDT.strLineReference
								FROM tblJournalEntryDoc JHR
								INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID
								WHERE JHR.lngJourID = tblJournalLY.lngJourID
									AND JHR.strJEDocID = tblJournalLY.strSource
									AND JDT.intGLNumber = tblJournalEntLY.intGLNumber
									AND JDT.intLineNo = tblJournalEntLY.intLineNum
								), '')
				ELSE ISNULL(tblBankRecTrans.strSource, '')
				END AS LineReference
		FROM tblJournalLY
		INNER JOIN tblJournalEntLY ON tblJournalLY.lngJourID = tblJournalEntLY.lngJourID
		LEFT OUTER JOIN tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEntLY.lngJourID
			AND tblBankRecTrans.intLineNum = tblJournalEntLY.intLineNum
			AND tblBankRecTrans.dteJourDate = tblJournalLY.dteJournalDate
		WHERE tblJournalEntLY.intGLNumber = @SQAcct
			AND (
				@UnallocTransactions <> 0
				OR tblJournalEntLY.decUnAllocatedAmt <> 0
				)
			AND (
				@OptJournalRange <> 1
				OR tblJournalLY.lngJourID BETWEEN @SQJourStart
					AND @SQJourEnd
				)
		ORDER BY CASE 
				WHEN @SortedBy = 'Date'
					THEN CONVERT(VARCHAR, tblJournalLY.dteJournalDate, 112)
				END
			,CASE 
				WHEN @SortedBy = 'Date'
					THEN tblJournalLY.lngJourID
				END
			,CASE 
				WHEN @SortedBy <> 'Date'
					THEN tblJournalLY.lngJourID
				END
			,CASE 
				WHEN @SortedBy <> 'Date'
					THEN tblJournalLY.dteJournalDate
				END;
	END
	ELSE IF @Options = 'History Year'
	BEGIN
		SELECT tblJournalHist.dteJournalDate AS JournalDate
			,CASE 
				WHEN tblJournalHist.intModule = @SQModule
					THEN CASE 
							WHEN tblJournalEntHist.strComment = ''
								THEN tblJournalHist.strComment
							ELSE tblJournalEntHist.strComment
							END
				ELSE tblJournalHist.strComment
				END AS Comment
			,tblJournalHist.strSource AS [Source]
			,tblJournalHist.lngJourID AS JourID
			,tblJournalEntHist.decDebits AS Debits
			,tblJournalEntHist.decCredits AS Credits
			,tblJournalEntHist.decAmount AS Amount
			,tblJournalEntHist.decAllocatedAmtToDate AS AllocatedAmtToDate
			,tblJournalEntHist.decUnAllocatedAmt AS UnAllocatedAmt
			,CASE 
				WHEN ISNULL(tblBankRecTrans.strSource, '') = ''
					THEN ISNULL((
								SELECT JDT.strLineReference
								FROM tblJournalEntryDoc JHR
								INNER JOIN tblJournalEntryDocDT JDT ON JHR.strJEDocID = JDT.strJEDocID
								WHERE JHR.lngJourID = tblJournalHist.lngJourID
									AND JHR.strJEDocID = tblJournalHist.strSource
									AND JDT.intGLNumber = tblJournalEntHist.intGLNumber
									AND JDT.intLineNo = tblJournalEntHist.intLineNum
								), '')
				ELSE ISNULL(tblBankRecTrans.strSource, '')
				END AS LineReference
		FROM tblJournalHist
		INNER JOIN tblJournalEntHist ON tblJournalHist.lngJourID = tblJournalEntHist.lngJourID
			AND tblJournalHist.uidYearID = tblJournalEntHist.uidYearID
		LEFT OUTER JOIN tblBankRecTrans ON tblBankRecTrans.lngJourID = tblJournalEntHist.lngJourID
			AND tblBankRecTrans.intLineNum = tblJournalEntHist.intLineNum
			AND tblBankRecTrans.dteJourDate = tblJournalHist.dteJournalDate
		WHERE tblJournalHist.dteJournalDate = @SQStart
			AND tblJournalEntHist.intGLNumber = @SQAcct
			AND (
				@UnallocTransactions <> 0
				OR tblJournalEntHist.decUnAllocatedAmt <> 0
				)
			AND (
				@OptJournalRange <> 1
				OR tblJournalHist.lngJourID BETWEEN @SQJourStart
					AND @SQJourEnd
				)
		ORDER BY CASE 
				WHEN @SortedBy = 'Date'
					THEN CONVERT(VARCHAR, tblJournalHist.dteJournalDate, 112)
				END
			,CASE 
				WHEN @SortedBy = 'Date'
					THEN tblJournalHist.lngJourID
				END
			,CASE 
				WHEN @SortedBy <> 'Date'
					THEN tblJournalHist.lngJourID
				END
			,CASE 
				WHEN @SortedBy <> 'Date'
					THEN tblJournalHist.dteJournalDate
				END;
	END
END
GO

CREATE PROCEDURE [dbo].[GetGLAccountMasterDetails] @GLNumberListString AS NVARCHAR(max) = NULL
AS
BEGIN
	SELECT intGLNumber AS AccountNo
		,strDesc AS AccountName
		,decOpenBalance AS OpenBalance
		,decBalance AS Balance
	FROM tblAccounts
	WHERE bitBank = 1
		AND bitRecon = 1
		AND (
			@GLNumberListString IS NULL
			OR LTRIM(RTRIM(@GLNumberListString)) = ''
			OR intGLNumber IN (
				SELECT value
				FROM [dbo].[fnSplitStringAsTable](@GLNumberListString, ',')
				)
			)
END
GO

CREATE PROCEDURE [dbo].[GetIncompatibleStorageSubCategoryData] @Pairs IncompatibleStorageSubCatTableType READONLY
AS
BEGIN
	SET NOCOUNT ON;

	SELECT TOP 1 s.strIncompatibleParentCategory AS IncompatibleParentCategory
		,s.strIncompatibleSubCategory AS IncompatibleSubCategory
		,s.strIncompatibilityReason AS IncompatibilityReason
	FROM tblIncompatibleStorageSubCat s
	INNER JOIN @Pairs p ON (
			s.strParentCategory = p.PCategory
			AND s.strSubCategory = p.SubCategory
			AND s.strIncompatibleParentCategory = p.IncompCategory
			AND s.strIncompatibleSubCategory = p.IncompSubCategory
			)
		OR (
			s.strParentCategory = p.IncompCategory
			AND s.strSubCategory = p.IncompSubCategory
			AND s.strIncompatibleParentCategory = p.PCategory
			AND s.strIncompatibleSubCategory = p.SubCategory
			);
END;
GO

CREATE PROCEDURE [dbo].[GetInvExtPartNumberDataList] (
	@Location NVARCHAR(100)
	,@BinCode NVARCHAR(100)
	,@PartNumber NVARCHAR(50)
	)
AS
BEGIN
	SELECT IEB.strPartNumber AS PartNumber
		,inv.strCategory AS Category
		,inv.strSubCategory AS SubCategory
	FROM tblInvExtBin IEB
	INNER JOIN tblInvLocBin LB ON IEB.lngBinID = LB.lngID
	INNER JOIN tblInv inv ON IEB.strPartNumber = inv.strPartNumber
	WHERE IEB.strLocName = @Location
		AND LB.strBinCode = @BinCode
		AND inv.intType = 1
		AND IEB.decOnHand > 0
		AND IEB.strPartNumber <> @PartNumber
END
GO

CREATE PROCEDURE [dbo].[GeRptInvQtyStatusSerialAsAtListReportData] (
	@ItemList NVARCHAR(MAX)
	,@Filter INT
	,@OptAll BIT
	,@SQLocName NVARCHAR(MAX)
	,@SQAsAtDate DATETIME = NULL
	,@SQintStatus INT
	,@SQTypeSN INT
	)
AS
BEGIN
	SELECT SNT.strPartNumber AS PartNumber
		,SUBSTRING(SNT.strSerialNumber, 1, 25) AS SerialNumber
		,SNT.strLocation AS LocName
		,Z.decQty
		,ISNULL(SNT.dteExpiryDate, GETDATE()) AS ExpiryDate
		,CAST(CASE 
				WHEN TRACK.intType = @SQTypeSN
					THEN ISNULL(ISE.bitDimensionExist, 0)
				ELSE 0
				END AS BIT) AS DimensionExist
		,CASE 
			WHEN TRACK.intType = @SQTypeSN
				THEN ISNULL(ISE.strDimension, '')
			ELSE ''
			END AS Dimension
		,ROUND(CASE 
				WHEN IE.decValue = 0
					OR IE.decOnHand = 0
					THEN 0
				ELSE (IE.decValue / IE.decOnHand) * Z.decQty
				END, 2) AS Value
		,TRACK.intType AS [Type]
		,TRACK.bitTrackExpiryDate AS TrackExpiryDate
	FROM (
		SELECT strPartNumber
			,strLocation
			,strSerialNumber
			,SUM(CASE 
					WHEN intStatus = @SQintStatus
						THEN decQty * - 1
					ELSE decQty
					END) AS decQty
			,MAX(lngID) AS lngID
		FROM tblSerialNumberTracking
		WHERE dteUpdatedDate <= @SQAsAtDate
		GROUP BY strPartNumber
			,strSerialNumber
			,strLocation
		) Z
	INNER JOIN tblSerialNumberTracking SNT ON Z.lngID = SNT.lngID
	INNER JOIN tblInvExt IE ON SNT.strPartNumber = IE.strPartNumber
		AND SNT.strLocation = IE.strLocName
	INNER JOIN tblInv INV ON IE.strPartNumber = INV.strPartNumber
	INNER JOIN tblAccountSets ACS ON IE.strAcctSet = ACS.strAcctSet
	INNER JOIN (
		SELECT INV.strPartNumber
			,IST.intType
			,IST.bitTrackExpiryDate
		FROM tblInv INV
		INNER JOIN tblInvSerialTypes IST ON INV.strInvSerialType = IST.strInvSerialType
		WHERE INV.bitInvSerialType = 1
			AND IST.intType = @SQTypeSN
		) TRACK ON SNT.strPartNumber = TRACK.strPartNumber
	LEFT JOIN tblInvSerialExt ISE ON SNT.strPartNumber = ISE.strPartNumber
		AND SNT.strLocation = ISE.strLocName
		AND SNT.strSerialNumber = ISE.strSerialNumber
	WHERE Z.decQty > 0
		-- FILTER SECTION
		AND (
			(
				@Filter = 0
				AND ACS.intGLAsset IN (
					SELECT *
					FROM fnSplitStringAsTable(@ItemList, ',')
					)
				)
			OR (
				@Filter = 1
				AND INV.strCategory IN (
					SELECT *
					FROM fnSplitStringAsTable(@ItemList, ',')
					)
				)
			OR (
				@Filter = 2
				AND IE.strAcctSet IN (
					SELECT *
					FROM fnSplitStringAsTable(@ItemList, ',')
					)
				)
			OR (
				@Filter = 3
				AND INV.strPartNumber IN (
					SELECT *
					FROM fnSplitStringAsTable(@ItemList, ',')
					)
				)
			)
		-- LOCATION FILTER
		AND (
			@OptAll = 1
			OR IE.strLocName IN (
				SELECT *
				FROM fnSplitStringAsTable(@SQLocName, ',')
				)
			)
	ORDER BY SNT.strSerialNumber
END
GO

CREATE PROCEDURE [dbo].[UpdatePOSCashBalData] @CustomerName NVARCHAR(50)
	,@Amount MONEY
	,@SessionID NVARCHAR(50)
	,@DocumentID NVARCHAR(50)
	,@PaymentTypeName NVARCHAR(50)
	,@GLNumber NVARCHAR(30)
	,@IsForeign bit = 0
	,@Exchange DECIMAL(8, 2) = NULL
	,@TotalF MONEY = NULL
	,@Currency NVARCHAR(10) = NULL
AS
BEGIN
	INSERT INTO tblPOSDrsDT (
		uidSessionID
		,dteTimeStamp
		,strInvDocID
		,strCustName
		,decCash
		,decCk
		,decCC
		,decGiftCoup
		,decAccount
		,decDrop
		,strDropUser
		,decOvSht
		,intVendPayID
		,strComment
		,dteRowUpdated
		)
	VALUES (
		@SessionID
		,GETDATE()
		,@DocumentID
		,@CustomerName
		,- ABS(@Amount)
		,0
		,0
		,0
		,0
		,0
		,''
		,0.00
		,NULL
		,'Reversal Entry'
		,GETDATE()
		);

	UPDATE tblPOSDrs
	SET decCashBal = decCashBal - @Amount
		,decCurrentVal = decCurrentVal - @Amount
	WHERE uidSessionID = @SessionID
		AND dteClosed IS NULL
		AND intStatus = 1;

	INSERT INTO [dbo].[tblPOSDrsSplitPmt] (
		[uidSessionID]
		,[strPaymentTypeName]
		,[intGLNumber]
		,[decTotal]
		,bitIsForeign
		,decExchange
		,decTotalF
		,strCurrency
		)
	VALUES (
		@SessionID
		,@PaymentTypeName
		,@GLNumber
		,- ABS(@Amount)
		,@IsForeign
		,@Exchange
		,@TotalF
		,@Currency
		)
END
GO
